{"version":3,"file":"index-2a2d8178.js","sources":["../../../../src/scripts/react-components/blog-listing/blog-card.tsx","../../../../src/scripts/react-components/blog-listing/index.tsx"],"sourcesContent":["import React from 'react';\n\nexport interface BlogCardProps {\n featuredUrl?: string;\n featuredAlt?: string;\n youtubeUrl?: string;\n category: string;\n categoryUrl: string;\n title: string;\n body: string;\n author: string;\n blogUrl: string;\n publishedDate: string;\n dataLayer?: string;\n}\n\nexport const BlogCard = ({\n featuredUrl,\n featuredAlt,\n youtubeUrl,\n category,\n categoryUrl,\n title,\n body,\n author,\n blogUrl,\n publishedDate,\n dataLayer\n}: BlogCardProps) => {\n return (\n <article\n className={`related-article-card ${\n youtubeUrl ? 'related-article-card--thumbnail' : ''\n }`}\n >\n {featuredUrl ? (\n <a\n href={blogUrl}\n aria-label={`Go to ${title}`}\n className=\"related-article-card__image\"\n data-layer={dataLayer}\n >\n <figure className=\"figure figure__container\">\n <picture className=\"picture\">\n <source\n media=\"(max-width: 1023px)\"\n srcSet={`${featuredUrl}?width=943 943w`}\n sizes=\"943px\"\n />\n <img\n src={`${featuredUrl}?width=379`}\n width=\"379\"\n height=\"253\"\n alt={featuredAlt}\n loading=\"lazy\"\n />\n </picture>\n </figure>\n </a>\n ) : null}\n <div className=\"related-article-card__content\">\n <a\n href={categoryUrl}\n className=\"related-article-card__category link--inline\"\n data-layer={[dataLayer]}\n >\n <span>{category}</span>\n </a>\n <h2\n id=\"unique-related-article-card-id-3\"\n className=\"related-article-card__heading\"\n >\n <a href={blogUrl} className=\"link--inline\" data-layer={[dataLayer]}>\n <span>{title}</span>\n </a>\n </h2>\n <div\n className=\"related-article-card__description rtf--inline\"\n dangerouslySetInnerHTML={{ __html: body }}\n />\n <div className=\"related-article-card__info rtf--inline\">\n <p\n className=\"related-article-card__author\"\n dangerouslySetInnerHTML={{ __html: author }}\n />\n <p className=\"related-article-card__date\">{publishedDate}</p>\n </div>\n </div>\n </article>\n );\n};\n\nexport default BlogCard;\n","import React, { useEffect, useRef, useState } from 'react';\nimport PropTypes, { InferProps } from 'prop-types';\nimport { useFetch } from '../../hooks/useFetch';\nimport Pagination from '../pagination';\nimport Loader from '../listing-states/loader';\nimport Error from '../listing-states/error';\nimport {\n updateEndpointWithQueryString,\n getUrlParamValue,\n setUrlParamValue\n} from '../../helpers/queryString';\nimport BlogCard, { BlogCardProps } from './blog-card';\nimport {\n createDataLayerString,\n oneTimeVisibleLayerPush\n} from '../../helpers/helpers';\n\ninterface BlogListingResponse {\n items: BlogCardProps[];\n totalPages: number;\n}\n\nfunction BlogListing({\n url,\n sectionTitle,\n loadingLabel,\n noResultsMessage,\n noResultsKeywordMessage,\n noResultsAdditionalMessage,\n errorMessage,\n nextPageLabel,\n previousPageLabel,\n pageLabel\n}: InferProps<typeof BlogListing.propTypes>) {\n const pageParam = getUrlParamValue('page');\n\n const listRef = useRef<HTMLUListElement | null>(null);\n const [page, setPage] = useState(Number(pageParam) || 1);\n const [endpoint, setEndpoint] = useState(updateEndpointWithQueryString(url));\n const { data, error } = useFetch<BlogListingResponse>(endpoint);\n\n useEffect(() => {\n if (listRef.current) {\n const dataVisibleLayer = {\n event: 'view_item_list',\n event_category: 'item list viewed',\n event_label: sectionTitle,\n event_attributes: {\n item_list_name: sectionTitle\n }\n };\n\n oneTimeVisibleLayerPush(listRef.current, dataVisibleLayer);\n }\n }, [data]);\n\n if (error) {\n return (\n <Error\n errorMessage={errorMessage}\n noResultsMessage={noResultsMessage}\n noResultsKeywordMessage={noResultsKeywordMessage}\n showError={true}\n />\n );\n }\n\n if (!data) {\n return <Loader loaderText={loadingLabel} />;\n }\n\n const handlePageChange = (page: number) => {\n setPage(page);\n setUrlParamValue('page', page.toString());\n setEndpoint(updateEndpointWithQueryString(url));\n };\n\n return (\n <>\n {data.items.length < 1 ? (\n <Error\n errorMessage={errorMessage}\n noResultsMessage={noResultsMessage}\n noResultsKeywordMessage={noResultsKeywordMessage}\n noResultsAdditionalMessage={noResultsAdditionalMessage as string}\n />\n ) : (\n <>\n <ul className=\"blog-listing__list\" ref={listRef}>\n {data.items.map((item, index) => (\n <li key={index} className=\"blog-listing__item\">\n <BlogCard\n {...item}\n dataLayer={createDataLayerString({\n event: 'view_item_list',\n event_category: 'item list viewed',\n event_label: sectionTitle,\n event_attributes: {\n item_list_name: item.title\n }\n })}\n />\n </li>\n ))}\n </ul>\n {data.totalPages > 1 && (\n <Pagination\n currentPage={page}\n totalPages={data.totalPages}\n onPageChange={handlePageChange}\n nextPageLabel={nextPageLabel}\n previousPageLabel={previousPageLabel}\n pageLabel={pageLabel}\n />\n )}\n </>\n )}\n </>\n );\n}\n\nBlogListing.propTypes = {\n url: PropTypes.string.isRequired,\n sectionTitle: PropTypes.string.isRequired,\n loadingLabel: PropTypes.string.isRequired,\n noResultsMessage: PropTypes.string.isRequired,\n noResultsKeywordMessage: PropTypes.string.isRequired,\n noResultsAdditionalMessage: PropTypes.string,\n errorMessage: PropTypes.string.isRequired,\n nextPageLabel: PropTypes.string.isRequired,\n previousPageLabel: PropTypes.string.isRequired,\n pageLabel: PropTypes.string.isRequired\n};\n\nexport default BlogListing;\n"],"names":["BlogCard","featuredUrl","featuredAlt","youtubeUrl","category","categoryUrl","title","body","author","blogUrl","publishedDate","dataLayer","React","BlogListing","url","sectionTitle","loadingLabel","noResultsMessage","noResultsKeywordMessage","noResultsAdditionalMessage","errorMessage","nextPageLabel","previousPageLabel","pageLabel","pageParam","getUrlParamValue","listRef","useRef","page","setPage","useState","endpoint","setEndpoint","updateEndpointWithQueryString","data","error","useFetch","useEffect","dataVisibleLayer","oneTimeVisibleLayerPush","Error","Loader","handlePageChange","setUrlParamValue","item","index","createDataLayerString","Pagination","PropTypes"],"mappings":"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"}