{"version":3,"file":"9000-aa992e00aa9649ebb3c2.js","mappings":"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","sources":["webpack://react-app/./components/Shared/tailwind.config.js","webpack://react-app/./components/Shared/src/components/atoms/AnimateInView/AnimateInView.tsx","webpack://react-app/./components/Shared/src/utility/hooks/useDevicePixelRatio.ts","webpack://react-app/./components/Shared/src/components/atoms/Image/Image.tsx","webpack://react-app/./components/Shared/src/components/atoms/LoadingSpinner/LoadingSpinner.tsx","webpack://react-app/./components/Shared/src/components/atoms/Tag/Tag.tsx","webpack://react-app/./components/Shared/src/components/molecules/ArticleCard/ArticleCard.tsx","webpack://react-app/./components/Shared/src/components/molecules/ArticleListingLinkCard/ArticleListingLinkCard.tsx","webpack://react-app/./components/Shared/src/components/molecules/FilterList/FilterList.tsx","webpack://react-app/./components/Shared/src/utility/hooks/useScrolledToEnd.ts","webpack://react-app/./components/Shared/src/components/molecules/InfiniteScroll/InfiniteScroll.tsx","webpack://react-app/./components/Shared/src/components/molecules/ArticleListing/ArticleListing.tsx","webpack://react-app/./components/Shared/src/components/organisms/HeadlineAndTextBlock/HeadlineAndTextBlock.tsx","webpack://react-app/./components/Shared/src/models/enums/BreakpointEnum.ts","webpack://react-app/./components/Shared/src/models/enums/SizeEnum.ts","webpack://react-app/./components/Shared/src/utility/format/parseNumberInString.ts","webpack://react-app/./components/Shared/src/utility/config/breakpoints.ts","webpack://react-app/./components/Shared/src/utility/helpers/throttle.ts","webpack://react-app/./components/Shared/src/utility/hooks/useBreakpoint.ts","webpack://react-app/./components/Shared/src/utility/hooks/useListingComponentData.ts","webpack://react-app/./components/Shared/src/utility/hooks/useMediaQuery.ts"],"sourcesContent":["/* eslint-env node */\n/* eslint-disable @typescript-eslint/no-var-requires */\n\n/** @type {import('tailwindcss').Config} */\n\nconst screens = {\n sm: '375px',\n md: '752px',\n lg: '1024px',\n xl: '1408px',\n xxl: '1600px',\n};\n\nmodule.exports = {\n darkMode: 'selector',\n prefix: 'tw-',\n content: [\n './.storybook/**/*.{js,jsx,mdx,ts,tsx}',\n './src/components/**/*.{js,jsx,mdx,ts,tsx}',\n ],\n theme: {\n screens,\n listStyleType: {\n none: 'none',\n disc: 'disc',\n decimal: 'decimal',\n square: 'square',\n },\n container: {\n screens,\n center: true,\n padding: {\n DEFAULT: '16px',\n sm: '16px',\n md: '32px',\n lg: '48px',\n xl: '48px',\n '2xl': '48px',\n },\n },\n fontFamily: {\n sans: '\"Noto Sans\", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"',\n serif:\n '\"Playfair Display\",ui-serif, Georgia, Cambria, \"Times New Roman\", Times, serif',\n mono: '\"Noto Sans Mono\", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace',\n icon: 'icomoon',\n },\n fontSize: {\n xs: ['0.75rem', '1rem'],\n sm: ['0.875rem', '1.25rem'],\n base: ['1rem', '1.5rem'],\n lg: ['1.125rem', '1.625rem'],\n xl: ['1.3125rem', '1.75rem'],\n '2xl': ['1.5rem', '2rem'],\n '3xl': ['1.75rem', '2.25rem'],\n '4xl': ['2rem', '2.5rem'],\n '5xl': ['2.25rem', '2.75rem'],\n '6xl': ['2.5rem', '3rem'],\n '7xl': ['3rem', '3.5rem'],\n '8xl': ['3.5rem', '4rem'],\n },\n lineHeight: {\n xs: '1rem',\n sm: '1.25rem',\n base: '1.5rem',\n lg: '1.625rem',\n xl: '1.75rem',\n '2xl': '2rem',\n '3xl': '2.25rem',\n '4xl': '2.5rem',\n '5xl': '2.75rem',\n '6xl': '3rem',\n '7xl': '3.5rem',\n '8xl': '4rem',\n },\n fontWeight: {\n light: '300',\n normal: '400',\n semibold: '600',\n },\n colors: {\n blue: {\n DEFAULT: '#031E45',\n },\n yellow: {\n DEFAULT: '#F0AB00',\n hover: '#F1B32D',\n active: '#EDBE46',\n disabled: '#FBE6B3',\n },\n red: {\n DEFAULT: '#D52B1E',\n hover: '#E11E0F',\n active: '#EC0E00',\n disabled: '#F2BFBC',\n },\n green: {\n DEFAULT: '#329E36',\n },\n grey: {\n 100: '#202020',\n 90: '#333333',\n 80: '#4D4D4D',\n 70: '#666666',\n 60: '#808080',\n 50: '#999999',\n 40: '#B3B3B3',\n 30: '#CCCCCC',\n 20: '#E6E6E6',\n 10: '#F7F7F7',\n },\n white: {\n DEFAULT: '#FFFFFF',\n },\n black: {\n DEFAULT: '#202020',\n },\n transparent: 'transparent',\n background: {\n amber: '#AF8A76', // light\n amberDark: '#806A62', // dark\n beige: '#E9D8B8', // light\n beigeDark: '#A98259', // light\n brownGray: '#79736D', // dark\n brownGrey: '#79736D', // dark\n coral: '#DBC4B7', // light\n coralDark: '#985F56', // dark\n darkGrey: '#E6E6E6', // light\n gBSGreen: '#276D00', // dark\n gBSHarpGreen: '#E5EFEA', // light\n gBSLightGreen: '#478326', // dark\n gBSPalmGreen: '#012317', // dark\n gBSSummerGreen: '#C4D0B0', // light\n graphite: '#70666C', //dark\n jotunBlue: '#031E45', // dark\n jotunYellow: '#F0AB00', // light\n lightBlue: '#E6E9F0', // light\n lightGreen: '#E6F0EB', // light\n lightgrey: '#F7F7F7', // light\n lightGrey: '#F7F7F7', // light\n oceanDark: '#19262C', // dark\n olive: '#C9D0C5', // light\n oliveDark: '#646556', // dark\n pearl: '#F3F4ED', // light\n sand: '#E7DFCD', // light\n sandDark: '#CEC1B1', // light\n slate: '#A5BCC3', // light\n slateDark: '#4E616C', // dark\n white: '#FFFFFF', // light\n },\n },\n extend: {\n fill: {\n current: 'currentColor',\n },\n stroke: {\n current: 'currentColor',\n },\n transitionTimingFunction: {\n 'in-out-quart': 'cubic-bezier(0.76, 0, 0.24, 1)',\n },\n borderRadius: {\n DEFAULT: '4px',\n md: '10px',\n },\n borderWidth: {\n 1: '1px',\n },\n spacing: {\n '4xs': '0.125rem', // 2px\n '3xs': '0.25rem', // 4px\n xxs: '0.5rem', // 8px\n xs: '1rem', // 16px\n sm: '1.5rem', // 24px\n md: '2rem', // 32px\n lg: '2.5rem', // 40px\n xl: '3rem', // 48px\n '2xl': '4rem', // 64px\n '3xl': '5rem', // 80px\n '4xl': '6rem', // 96px\n '5xl': '7.5rem', // 120px\n buttonY: '0.875rem', // 14px\n },\n zIndex: {\n max: '999',\n 100: '100',\n 90: '90',\n 80: '80',\n 70: '70',\n 60: '60',\n },\n },\n },\n future: { hoverOnlyWhenSupported: true },\n plugins: [require('@tailwindcss/container-queries')],\n};\n","import useMediaQuery from '@utility/hooks/useMediaQuery';\nimport { motion, useInView } from 'motion/react';\nimport { PropsWithChildren, useRef } from 'react';\n\ninterface Props extends PropsWithChildren {\n readonly className?: string;\n readonly mobileOffset?: number;\n readonly desktopOffset?: number;\n readonly element?: 'section' | 'div';\n}\n\nconst AnimateInView = ({\n children,\n className,\n element = 'section',\n mobileOffset = 0.2,\n desktopOffset = 0.5,\n}: Props) => {\n const ref = useRef(null);\n const isMobile = useMediaQuery(752);\n const inView = useInView(ref, {\n amount: isMobile ? mobileOffset : desktopOffset,\n once: true,\n });\n\n const containerVariants = {\n hidden: { opacity: 0 },\n visible: {\n opacity: 1,\n transition: {\n staggerChildren: 0.1,\n duration: isMobile ? 0.3 : 0.5,\n type: 'spring',\n stiffness: 50,\n damping: 14,\n },\n },\n };\n\n const MotionElement = motion[element];\n\n return (\n \n {children}\n \n );\n};\n\nexport default AnimateInView;\n","import { useEffect, useState } from 'react';\n\nconst useDevicePixelRatio = (): number | undefined => {\n const [devicePixelRatio, setDevicePixelRatio] = useState();\n\n const updateDevicePixelRatio = (): void => {\n setDevicePixelRatio(window.devicePixelRatio);\n };\n\n useEffect(() => {\n updateDevicePixelRatio();\n\n window.addEventListener('resize', updateDevicePixelRatio);\n\n return () => {\n window.removeEventListener('resize', updateDevicePixelRatio);\n };\n }, []);\n\n return devicePixelRatio;\n};\n\nexport default useDevicePixelRatio;\n","import { IImage } from '@models/IImage';\nimport BreakpointEnum from '@models/enums/BreakpointEnum';\nimport breakpoints from '@utility/config/breakpoints';\nimport useBreakpoint from '@utility/hooks/useBreakpoint';\nimport useDevicePixelRatio from '@utility/hooks/useDevicePixelRatio';\nimport classNames from 'classnames';\nimport {\n PropsWithChildren,\n RefObject,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n} from 'react';\n\ninterface Props {\n readonly aspectRatio?: number;\n readonly classes?: string;\n readonly containerRef?: RefObject;\n readonly image: IImage;\n readonly imageClasses?: string;\n readonly lazyLoad?: boolean;\n readonly quality?: number;\n readonly sizes?: string;\n readonly height?: number;\n readonly width?: number;\n readonly onLoad?: () => void;\n}\n\nconst Image = ({\n aspectRatio, // width / height e.g. 0.5, 2 etc.\n children,\n classes,\n containerRef,\n image,\n imageClasses,\n lazyLoad = true,\n quality = 70,\n sizes = '',\n height,\n width,\n onLoad,\n}: PropsWithChildren) => {\n const devicePixelRatio = useDevicePixelRatio() ?? 1;\n const breakpoint = useBreakpoint() ?? BreakpointEnum.XLarge;\n const imgRef = useRef(null);\n\n const { url, altText, originalHeight, originalWidth, imageFocalPoint } =\n image ?? {};\n const fileExtension = url?.substring(url?.lastIndexOf('.') + 1);\n const hasParams = url?.includes('&'); // For images not coming from Opti\n const containerWidth = containerRef?.current?.clientWidth;\n\n const breakpointWidths = [\n 375 * devicePixelRatio,\n 752 * devicePixelRatio,\n 1024 * devicePixelRatio,\n 1408 * devicePixelRatio,\n 1600 * devicePixelRatio,\n ];\n\n const calculatedAspectRatio = useMemo(() => {\n if (aspectRatio) return aspectRatio;\n\n if (originalWidth && originalHeight) return originalWidth / originalHeight;\n }, [aspectRatio, originalWidth, originalHeight]);\n\n const generateUrlWithExtensions = useCallback(\n (width?: number) => {\n const qParam = quality ? `&quality=${quality}` : '';\n const fpParam = imageFocalPoint\n ? `&rxy=${imageFocalPoint.replace('|', ',')}`\n : '';\n\n if (!width) {\n return `${url}?format=webp$${fpParam}${qParam}`;\n }\n\n const wParam = `&width=${width}`;\n const h = aspectRatio ? width / aspectRatio : height;\n const hParam = h ? `&height=${h}` : '';\n\n return `${url}?format=webp${wParam}${hParam}${fpParam}${qParam}`;\n },\n [url, quality, calculatedAspectRatio, imageFocalPoint]\n );\n\n const srcSet = useMemo(() => {\n return breakpointWidths\n .map(\n (bpWidth, i) =>\n `${generateUrlWithExtensions(\n i < breakpointWidths.length - 1 ? bpWidth : 1920\n )} ${bpWidth}w`\n )\n .join(', ');\n }, [breakpointWidths]);\n\n if (!url || devicePixelRatio == null) return null;\n\n if (fileExtension === 'svg' || isValidBase64ImageSource(url)) {\n return (\n \n );\n }\n\n useEffect(() => {\n // Fallback - sometimes onLoad does not trigger if the image is cached\n if (imgRef?.current?.complete && onLoad) onLoad();\n }, [imgRef]);\n\n return (\n <>\n \n {!width && !containerWidth && !hasParams && (\n \n )}\n \n {children}\n \n \n );\n};\n\nconst isValidBase64ImageSource = (imageSrc: string) => {\n const regex = /^data:image\\/(png|jpg|jpeg|gif);base64,[A-Za-z0-9+/]+={0,2}$/;\n return regex.test(imageSrc);\n};\n\nexport default Image;\n","import SizeEnum from '@models/enums/SizeEnum';\nimport ThemeEnum from '@models/enums/ThemeEnum';\nimport { ILoadingSpinner } from '@models/ILoadingSpinner';\nimport classNames from 'classnames';\n\nconst LoadingSpinner = ({\n size = SizeEnum.Small,\n loadingLabel = '...loading',\n theme = ThemeEnum.Light,\n}: ILoadingSpinner) => {\n const sizeClasses = classNames({\n 'tw-w-xs tw-h-xs': size === SizeEnum.Small,\n 'tw-w-sm tw-h-sm': size === SizeEnum.Medium,\n 'tw-h-16 tw-w-16': size === SizeEnum.Large,\n });\n\n const borderClasses = classNames({\n 'tw-border-2': size === SizeEnum.Small,\n 'tw-border-[3px]': size === SizeEnum.Medium,\n 'tw-border-4': size === SizeEnum.Large,\n });\n\n const segmentClasses = classNames({\n 'tw-border-b-2 tw-border-l-2': size === SizeEnum.Small,\n 'tw-border-b-[3px] tw-border-l-[3px]': size === SizeEnum.Medium,\n 'tw-border-b-4 tw-border-l-4': size === SizeEnum.Large,\n });\n\n return (\n \n \n \n \n \n {loadingLabel}\n \n );\n};\n\nexport default LoadingSpinner;\n","import Icon from '@atoms/Icon/Icon';\nimport { ComponentProps, ElementType } from 'react';\nimport { twMerge } from 'tailwind-merge';\n\nconst defaultElement = 'button';\n\nexport const enum TagVariant {\n Grey = 'grey',\n Yellow = 'yellow',\n}\n\ntype ExplicitProps = {\n label: string;\n isActive?: boolean;\n largeText?: boolean;\n icon?: boolean;\n variant?: TagVariant;\n};\n\ntype PropsWithAs =\n ExplicitProps & {\n as?: TElementType;\n };\n\ntype ITag = PropsWithAs &\n Omit, keyof PropsWithAs>;\n\nfunction Tag({\n as,\n label,\n isActive,\n largeText,\n icon = false,\n variant = TagVariant.Grey,\n ...otherProps\n}: ITag) {\n const Wrapper = as ?? 'button';\n const isClickable = Wrapper === 'button' || Wrapper === 'a';\n const hoverStyles =\n variant === TagVariant.Yellow\n ? \"hover:tw-bg-yellow-hover data-[active='true']:tw-border-yellow data-[active='true']:tw-bg-yellow hover:tw-border-yellow-hover\"\n : \"hover:tw-bg-grey-30 data-[active='true']:tw-border-grey-40 data-[active='true']:tw-bg-grey-40\";\n\n return (\n \n {label}\n {icon && }\n \n );\n}\n\nexport default Tag;\n","import Icon from '@atoms/Icon/Icon';\nimport Image from '@atoms/Image/Image';\nimport Text from '@atoms/Text/Text';\nimport { IArticleCard } from '@models/IArticleCard';\nimport classNames from 'classnames';\n\nconst ArticleCard = ({\n image,\n tags,\n target,\n text,\n title,\n titleVariant = 'heading-24-light',\n url,\n trumpetText,\n truncateTitle = true,\n}: IArticleCard) => (\n
\n \n \n
\n {trumpetText && (\n \n {trumpetText}\n \n )}\n
\n \n {title}\n \n \n
\n \n {text}\n \n {tags && tags.length > 0 && (\n
    \n {tags.map((tag: string) => (\n \n {tag}\n \n ))}\n
\n )}\n
\n \n
\n);\n\nexport default ArticleCard;\n","import Button from '@atoms/Button/Button';\nimport Text from '@atoms/Text/Text';\nimport { IArticleListingLinkCard } from '@models/IArticleListingLinkCard';\n\nconst ArticleListingLinkCard = ({\n text,\n title,\n trumpetText,\n cta,\n}: IArticleListingLinkCard) => (\n
\n \n {trumpetText}\n \n \n {title}\n \n \n {title}\n \n \n {text}\n \n
\n \n
\n
\n);\n\nexport default ArticleListingLinkCard;\n","import Tag, { TagVariant } from '@atoms/Tag/Tag';\nimport { IFilterList } from '@models/IFilterList';\nimport SiteEnum from '@models/enums/SiteEnum';\n\nconst FilterList = ({\n filters,\n onSelect,\n selectedItemID,\n site,\n}: IFilterList) => (\n
\n {filters.map((filter) => (\n onSelect(filter.id)}\n label={filter.label}\n isActive={selectedItemID === filter.id}\n largeText\n variant={site === SiteEnum.B2B ? TagVariant.Yellow : TagVariant.Grey}\n />\n ))}\n
\n);\n\nexport default FilterList;\n","import throttle from '@utility/helpers/throttle';\nimport { RefObject, useEffect, useState } from 'react';\n\nconst useScrolledToEnd = (\n ref: RefObject,\n paused?: boolean\n) => {\n const [scrolledToEnd, setScrolledToEnd] = useState(false);\n\n const checkHasScrolledToEnd = (paused?: boolean) => {\n const element = ref?.current;\n if (!element || paused) {\n setScrolledToEnd(false);\n return;\n }\n\n const elementRect = element.getBoundingClientRect();\n\n setScrolledToEnd(Math.floor(elementRect.bottom) <= window.innerHeight);\n };\n\n const throttledCheckHasScrolledToEnd = throttle(() => {\n checkHasScrolledToEnd(paused);\n }, 300);\n\n useEffect(() => {\n window.addEventListener('scroll', throttledCheckHasScrolledToEnd);\n\n return () =>\n window.removeEventListener('scroll', throttledCheckHasScrolledToEnd);\n }, [checkHasScrolledToEnd]);\n\n return scrolledToEnd;\n};\n\nexport default useScrolledToEnd;\n","import LoadingSpinner from '@atoms/LoadingSpinner/LoadingSpinner';\nimport Text from '@atoms/Text/Text';\nimport SizeEnum from '@models/enums/SizeEnum';\nimport { IInfiniteScroll } from '@models/IInfiniteScroll';\nimport useScrolledToEnd from '@utility/hooks/useScrolledToEnd';\nimport { useEffect, useRef, useState } from 'react';\n\nconst InfiniteScroll = ({\n loadingLabel,\n containerProps,\n children,\n onLoadMore,\n isLoading,\n isLastPage,\n}: React.PropsWithChildren) => {\n const ref = useRef(null);\n const hasScrolledToEnd = useScrolledToEnd(ref, isLoading);\n const [pageNum, setPageNum] = useState(1);\n\n useEffect(() => {\n if (!hasScrolledToEnd || isLoading || isLastPage) return;\n\n setPageNum(pageNum + 1);\n }, [hasScrolledToEnd, isLastPage]);\n\n useEffect(() => {\n onLoadMore(pageNum);\n }, [pageNum]);\n\n return (\n
\n {!(pageNum === 1 && isLoading) && children}\n {isLoading && (\n
\n \n \n {loadingLabel}\n \n
\n )}\n
\n );\n};\nexport default InfiniteScroll;\n","import AnimateInView from '@atoms/AnimateInView/AnimateInView';\nimport SiteEnum from '@models/enums/SiteEnum';\nimport { IArticleCard } from '@models/IArticleCard';\nimport { IArticleFilterItem, IArticleListing } from '@models/IArticleListing';\nimport { PageTitleSize } from '@models/IPageTitle';\nimport ArticleCard from '@molecules/ArticleCard/ArticleCard';\nimport ArticleListingLinkCard from '@molecules/ArticleListingLinkCard/ArticleListingLinkCard';\nimport FilterList from '@molecules/FilterList/FilterList';\nimport InfiniteScroll from '@molecules/InfiniteScroll/InfiniteScroll';\nimport PageTitle from '@molecules/PageTitle/PageTitle';\nimport HeadlineAndTextBlock from '@organisms/HeadlineAndTextBlock/HeadlineAndTextBlock';\nimport { fadeInUp, fadeTransition } from '@utility/config/animations';\nimport useListingComponentData from '@utility/hooks/useListingComponentData';\nimport useMediaQuery from '@utility/hooks/useMediaQuery';\nimport classNames from 'classnames';\nimport { AnimatePresence, motion } from 'motion/react';\nimport queryString from 'query-string';\nimport { useEffect, useState } from 'react';\n\ntype FetchPayload = {\n filterIds: string;\n epslanguage?: string;\n take: number;\n skip: number;\n pageLinkId?: string;\n};\n\ntype QueryParams = {\n filterIds?: string;\n};\n\nconst cardProps = {\n initial: { opacity: 0 },\n animate: { opacity: 1 },\n transition: fadeTransition,\n className: 'tw-col-span-4 md:tw-col-span-3 lg:tw-col-span-6 xl:tw-col-span-4',\n};\n\nconst ArticleListing = ({\n filters,\n infiniteLoadLabel,\n initialItems,\n language,\n listingCard,\n loadingLabel,\n pageLinkId,\n pageSize,\n searchEndpoint,\n showListingCardWhenFiltered,\n site,\n smallTitle = false,\n text,\n title,\n totalResults,\n}: IArticleListing) => {\n const [listItems, setListItems] = useState(initialItems ?? []);\n const [loadingMessage, setLoadingMessage] = useState(loadingLabel);\n const isMobile = useMediaQuery(767);\n const listingCardPosition = isMobile ? 4 : 6;\n\n //'Take' value varies depending on the presence of the Listing Card and page number\n const getTakeValue = (noActiveFilter: boolean, skip: number) => {\n const hasListingCard =\n (noActiveFilter || showListingCardWhenFiltered) && listingCard;\n const isPageOne = skip === 0;\n\n return hasListingCard && isPageOne ? pageSize - 1 : pageSize;\n };\n\n const [queryState, setQueryState] = useState<\n | {\n activeFilter: IArticleFilterItem | null;\n skip: number;\n take: number;\n isDefaultData: boolean;\n pageLinkId: string;\n }\n | undefined\n >();\n\n // Populate queryState using url query params on client side\n useEffect(() => {\n const params: QueryParams =\n typeof window !== 'undefined'\n ? queryString.parse(\n queryString.pick(window?.location.search, ['filterIds'])\n )\n : { filterIds: undefined };\n\n const activeFilter = params.filterIds\n ? getFilterByID(params.filterIds, filters)\n : null;\n\n setQueryState({\n skip: 0,\n take: getTakeValue(!activeFilter, 0),\n activeFilter,\n isDefaultData: !activeFilter && !!initialItems,\n pageLinkId: pageLinkId,\n });\n }, [queryString]);\n\n const { fetchData, state } = useListingComponentData<\n FetchPayload,\n { items: IArticleCard[]; totalResults: number }\n >(\n searchEndpoint,\n { items: initialItems ?? [], totalResults: totalResults ?? 0 },\n false\n );\n\n useEffect(() => {\n // Flag to ensure fetch doesn't run on page load\n // default data is provided by items prop\n if (!queryState || queryState.isDefaultData) return;\n\n let payload: FetchPayload = {\n filterIds: queryState.activeFilter?.id ?? '',\n take: queryState.take,\n skip: queryState.skip,\n pageLinkId: queryState.pageLinkId,\n };\n\n if (language && pageLinkId) {\n payload = {\n ...payload,\n epslanguage: language,\n pageLinkId,\n };\n }\n\n if (queryState.skip === 0) setListItems([]);\n fetchData(payload);\n }, [queryState]);\n\n useEffect(() => {\n // If skip is greater than 0 then the next page of data should be appended\n if (queryState && queryState.skip > 0) {\n setListItems([...listItems, ...state.data.items]);\n return;\n }\n\n setListItems(state.data.items);\n }, [state.data]);\n\n return (\n
\n \n \n {filters ? (\n \n \n {\n setLoadingMessage(loadingLabel);\n const activeFilter =\n id === queryState?.activeFilter?.id\n ? null\n : getFilterByID(id, filters);\n\n setQueryState({\n skip: 0,\n take: getTakeValue(!activeFilter, 0),\n isDefaultData: false,\n activeFilter,\n pageLinkId,\n });\n }}\n selectedItemID={queryState?.activeFilter?.id ?? null}\n site={site}\n />\n \n \n ) : null}\n \n {queryState?.activeFilter?.header ? (\n
\n \n
\n ) : null}\n = state.data.totalResults}\n onLoadMore={() => {\n setLoadingMessage(infiniteLoadLabel);\n\n const skip = listItems.length;\n if (skip < state.data.totalResults && queryState) {\n const take = getTakeValue(!queryState.activeFilter, skip);\n setQueryState({ ...queryState, skip, take, isDefaultData: false });\n }\n }}\n >\n \n {queryState &&\n (!state.loading || queryState.skip > 0) &&\n listItems.length > 0 && (\n <>\n {listItems?.map((card: IArticleCard) => (\n \n \n \n ))}\n {\n // Show listing card only when no filters are active unless the showListingCardWhenFiltered prop is active\n (!queryState.activeFilter || showListingCardWhenFiltered) &&\n listingCard ? (\n = listingCardPosition &&\n 'tw-row-start-4 md:tw-col-start-4 md:tw-row-start-3 lg:tw-col-start-7 xl:tw-col-start-9 xl:tw-row-start-2'\n )}\n key={listingCard.title}\n >\n \n \n ) : null\n }\n \n )}\n \n \n
\n );\n};\n\nconst getFilterByID = (\n id: string,\n filters: IArticleFilterItem[]\n): IArticleFilterItem | null => {\n return filters.find((filter) => filter.id === id) ?? null;\n};\n\nexport default ArticleListing;\n","import Button from '@atoms/Button/Button';\nimport Cta from '@atoms/Cta/Cta';\nimport Text from '@atoms/Text/Text';\nimport { ILink } from '@models/ILink';\nimport SiteEnum from '@models/enums/SiteEnum';\nimport VariantTypeEnum from '@models/enums/VariantTypeEnum';\nimport classNames from 'classnames';\n\nexport interface IHeadlineAndTextBlock {\n readonly heading?: string;\n readonly subText?: string;\n readonly ctaStyle?: Exclude;\n readonly link?: ILink;\n readonly site: SiteEnum;\n}\n\nconst HeadlineAndTextBlock = ({\n heading,\n subText = '',\n ctaStyle = VariantTypeEnum.Primary,\n link,\n site,\n}: IHeadlineAndTextBlock) => {\n const LinkElement = () => {\n if (link) {\n return ctaStyle === VariantTypeEnum.Primary ? (\n \n ) : (\n \n );\n }\n };\n\n return (\n
\n {heading && (\n \n {heading}\n \n )}\n {subText && (\n \n \n {link && }\n \n )}\n {link && (\n
\n {link && !subText && }\n
\n )}\n
\n );\n};\n\nexport default HeadlineAndTextBlock;\n","enum BreakpointEnum {\n Small = 'sm',\n Medium = 'md',\n Large = 'lg',\n XLarge = 'xl',\n Max = 'xxl',\n}\n\nexport default BreakpointEnum;\n","const enum SizeEnum {\n Small = 'small',\n Medium = 'medium',\n Large = 'large',\n XLarge = 'x-large',\n}\n\nexport default SizeEnum;\n","// Will parse a pixel string to a number e.g. '762px' => 762\n\nconst parseNumberInString = (pixelValue: string) => {\n const match = pixelValue.match(/\\d+/);\n\n if (match) {\n return parseInt(match[0], 10);\n }\n\n return 0;\n};\n\nexport default parseNumberInString;\n","import BreakpointEnum from '@models/enums/BreakpointEnum';\nimport Breakpoint from '@models/helpers/Breakpoint';\nimport parseNumberInString from '@utility/format/parseNumberInString';\nimport resolveConfig from 'tailwindcss/resolveConfig';\nimport tailwindConfig from '../../../tailwind.config';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst fullConfig = resolveConfig(tailwindConfig as any);\n\nconst { sm, md, lg, xl, xxl } = fullConfig.theme.screens;\n\nconst breakpoints = {\n sm: parseNumberInString(sm),\n md: parseNumberInString(md),\n lg: parseNumberInString(lg),\n xl: parseNumberInString(xl),\n xxl: parseNumberInString(xxl),\n};\n\nexport default breakpoints;\n\nconst breakpointArray: Breakpoint[] = Object.values(BreakpointEnum);\n\nexport const breakpointsBelow = (breakpoint: Breakpoint) => {\n const upperIndex = breakpointArray.indexOf(breakpoint);\n return breakpointArray.slice(0, upperIndex);\n};\n\nexport const breakpointsAbove = (breakpoint: Breakpoint) => {\n const lowerIndex = breakpointArray.indexOf(breakpoint) + 1;\n return breakpointArray.slice(lowerIndex);\n};\n","function throttle any>(\n func: T,\n limit: number\n): (...args: Parameters) => void {\n let lastFunc: NodeJS.Timeout | undefined;\n let lastRan: number | undefined;\n\n return function (this: ThisParameterType, ...args: Parameters) {\n const context = this;\n\n if (!lastRan) {\n func.apply(context, args);\n lastRan = Date.now();\n } else {\n if (lastFunc) clearTimeout(lastFunc);\n\n lastFunc = setTimeout(function () {\n if (Date.now() - (lastRan ?? 0) >= limit) {\n func.apply(context, args);\n lastRan = Date.now();\n }\n }, limit - (Date.now() - (lastRan ?? 0)));\n }\n };\n}\n\nexport default throttle;\n","import BreakpointEnum from '@models/enums/BreakpointEnum';\nimport Breakpoint from '@models/helpers/Breakpoint';\nimport breakpoints from '@utility/config/breakpoints';\nimport { useCallback, useEffect, useState } from 'react';\n\nconst getCurrentBreakpoint = (): Breakpoint => {\n const width = window.innerWidth;\n let device;\n\n if (width < breakpoints.md) {\n device = BreakpointEnum.Small;\n } else if (width < breakpoints.lg) {\n device = BreakpointEnum.Medium;\n } else if (width < breakpoints.xl) {\n device = BreakpointEnum.Large;\n } else if (width < breakpoints.xxl) {\n device = BreakpointEnum.XLarge;\n } else device = BreakpointEnum.Max;\n\n return device;\n};\n\nconst useBreakpoint = (): Breakpoint | undefined => {\n const [screen, setScreen] = useState();\n\n const resizeHandler = useCallback(() => {\n setScreen(getCurrentBreakpoint());\n }, []);\n\n useEffect(() => {\n window.addEventListener('resize', resizeHandler);\n setScreen(getCurrentBreakpoint());\n\n return () => {\n window.removeEventListener('resize', resizeHandler);\n };\n }, [resizeHandler]);\n\n return screen;\n};\n\nexport default useBreakpoint;\n","import queryString from 'query-string';\nimport { useState } from 'react';\n\ninterface IListingComponentState {\n readonly data: TData;\n readonly loading: boolean;\n readonly error: string;\n readonly isInitialData: boolean;\n readonly pushToUrl?: boolean;\n}\n\n// Extend the hook definition with TData for the data structure\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst useListingComponentData = , TData>(\n apiEndpoint: string,\n initialData: TData,\n skipEmptyString = true,\n pushToUrl = true\n) => {\n const [state, setState] = useState>({\n data: initialData,\n loading: false,\n error: '',\n isInitialData: true,\n });\n\n const fetchData = async (formData: TFormData) => {\n try {\n setState({ ...state, loading: true, error: '' });\n const requestQueryString = `?${queryString.stringify(formData, {\n skipEmptyString: skipEmptyString,\n arrayFormat: 'comma',\n })}`;\n\n const response = await fetch(`${apiEndpoint}${requestQueryString}`);\n\n if (!response.ok) {\n throw new Error(`Request failed with status ${response.status}`);\n }\n\n const data = await response.json();\n\n if (pushToUrl) {\n const currentUrl = new URL(window.location.href);\n const searchParams = currentUrl.searchParams;\n\n (Object.keys(formData) as Array).forEach((key) => {\n const value = formData[key];\n searchParams.set(key?.toString(), value?.toString());\n });\n\n window.history.pushState({}, '', currentUrl.href);\n }\n\n setState({ ...state, data, loading: false, isInitialData: false });\n } catch (error) {\n setState({ ...state, loading: false, error: 'Error fetching data' });\n }\n };\n\n return { fetchData, state };\n};\n\nexport default useListingComponentData;\n","import { useCallback, useEffect, useState } from 'react';\n\nconst useMediaQuery = (minWidth: number) => {\n // Setting a default state, leaving it undefined is essentially falsey anyway\n const [isSmallerThan, setIsSmallerThan] = useState(false);\n\n const handler = useCallback(() => {\n const isDesiredWidth = window.innerWidth < minWidth;\n setIsSmallerThan(isDesiredWidth);\n }, [minWidth]);\n\n useEffect(() => {\n window.addEventListener('resize', handler);\n handler();\n\n return () => {\n window.removeEventListener('resize', handler);\n };\n }, [handler]);\n\n return isSmallerThan;\n};\n\nexport default useMediaQuery;\n"],"names":["screens","sm","md","lg","xl","xxl","module","exports","darkMode","prefix","content","theme","listStyleType","none","disc","decimal","square","container","center","padding","DEFAULT","fontFamily","sans","serif","mono","icon","fontSize","xs","base","lineHeight","fontWeight","light","normal","semibold","colors","blue","yellow","hover","active","disabled","red","green","grey","white","black","transparent","background","amber","amberDark","beige","beigeDark","brownGray","brownGrey","coral","coralDark","darkGrey","gBSGreen","gBSHarpGreen","gBSLightGreen","gBSPalmGreen","gBSSummerGreen","graphite","jotunBlue","jotunYellow","lightBlue","lightGreen","lightgrey","lightGrey","oceanDark","olive","oliveDark","pearl","sand","sandDark","slate","slateDark","extend","fill","current","stroke","transitionTimingFunction","borderRadius","borderWidth","spacing","xxs","buttonY","zIndex","max","future","hoverOnlyWhenSupported","plugins","_ref","children","className","element","mobileOffset","desktopOffset","ref","useRef","isMobile","useMediaQuery","inView","useInView","amount","once","containerVariants","hidden","opacity","visible","transition","staggerChildren","duration","type","stiffness","damping","MotionElement","motion","React","createElement","initial","animate","variants","useDevicePixelRatio","devicePixelRatio","setDevicePixelRatio","useState","updateDevicePixelRatio","window","useEffect","addEventListener","removeEventListener","isValidBase64ImageSource","imageSrc","test","aspectRatio","classes","containerRef","image","imageClasses","lazyLoad","quality","sizes","height","width","onLoad","breakpoint","useBreakpoint","BreakpointEnum","XLarge","imgRef","url","altText","originalHeight","originalWidth","imageFocalPoint","fileExtension","substring","lastIndexOf","hasParams","includes","containerWidth","clientWidth","breakpointWidths","calculatedAspectRatio","useMemo","generateUrlWithExtensions","useCallback","qParam","fpParam","replace","h","srcSet","map","bpWidth","i","length","join","src","alt","draggable","complete","Fragment","classNames","style","loading","breakpoints","size","SizeEnum","Small","loadingLabel","ThemeEnum","Light","sizeClasses","Medium","Large","borderClasses","segmentClasses","role","TagVariant","as","label","isActive","largeText","variant","Grey","otherProps","Wrapper","isClickable","hoverStyles","Yellow","_extends","twMerge","Icon","name","tags","target","text","title","titleVariant","trumpetText","truncateTitle","href","Image","Text","tag","key","cta","Button","buttonClasses","modifier","filters","onSelect","selectedItemID","site","filter","Tag","id","onClick","SiteEnum","B2B","useScrolledToEnd","paused","scrolledToEnd","setScrolledToEnd","checkHasScrolledToEnd","elementRect","getBoundingClientRect","Math","floor","bottom","innerHeight","throttledCheckHasScrolledToEnd","throttle","containerProps","onLoadMore","isLoading","isLastPage","hasScrolledToEnd","pageNum","setPageNum","LoadingSpinner","cardProps","fadeTransition","getFilterByID","find","infiniteLoadLabel","initialItems","language","listingCard","pageLinkId","pageSize","searchEndpoint","showListingCardWhenFiltered","smallTitle","totalResults","listItems","setListItems","loadingMessage","setLoadingMessage","listingCardPosition","getTakeValue","noActiveFilter","skip","queryState","setQueryState","params","queryString","parse","pick","location","search","filterIds","undefined","activeFilter","take","isDefaultData","fetchData","state","useListingComponentData","items","payload","epslanguage","data","PageTitle","isMainHeading","PageTitleSize","hasPadding","AnimateInView","div","fadeInUp","FilterList","header","HeadlineAndTextBlock","InfiniteScroll","AnimatePresence","card","ArticleCard","ArticleListingLinkCard","heading","subText","ctaStyle","VariantTypeEnum","Primary","link","LinkElement","Cta","linkIcon","dangerouslySetInnerHTML","__html","pixelValue","match","parseInt","fullConfig","resolveConfig","tailwindConfig","parseNumberInString","breakpointArray","Object","values","breakpointsBelow","upperIndex","indexOf","slice","breakpointsAbove","lowerIndex","func","limit","lastFunc","lastRan","_len","arguments","args","Array","_key","context","this","clearTimeout","setTimeout","Date","now","apply","getCurrentBreakpoint","innerWidth","device","Max","screen","setScreen","resizeHandler","apiEndpoint","initialData","skipEmptyString","pushToUrl","setState","error","isInitialData","async","requestQueryString","stringify","formData","arrayFormat","response","fetch","ok","Error","status","json","currentUrl","URL","searchParams","keys","forEach","value","set","toString","history","pushState","minWidth","isSmallerThan","setIsSmallerThan","handler","isDesiredWidth"],"sourceRoot":""}