{"version":3,"file":"6495-923b9b983714c3e69945.js","mappings":"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","sources":["webpack://nikon-client/./components/atoms/Backdrop/Backdrop.tsx","webpack://nikon-client/./components/atoms/Drawer/Drawer.tsx","webpack://nikon-client/./components/atoms/FormCheckboxGroup/FormCheckboxGroup.tsx","webpack://nikon-client/./components/atoms/FormSelector/FormSelector.tsx","webpack://nikon-client/./components/atoms/FormSelectorGroup/FormSelectorGroup.tsx","webpack://nikon-client/./components/atoms/LoadMoreButton/LoadMoreButton.tsx","webpack://nikon-client/./components/atoms/Tag/Tag.tsx","webpack://nikon-client/./components/molecules/ListingResultsContainer/ListingResultsContainer.tsx","webpack://nikon-client/./components/molecules/LoadMoreListing/LoadMoreListing.tsx","webpack://nikon-client/./components/molecules/ContentFilterTags/ContentFilterTags.tsx","webpack://nikon-client/./components/molecules/FilterGroup/FilterGroup.tsx","webpack://nikon-client/./components/organisms/ContentFilters/ContentFilters.tsx","webpack://nikon-client/./models/enums/TagTypesEnum.ts","webpack://nikon-client/./utility/helpers/convertValuesToArrays.ts","webpack://nikon-client/./utility/helpers/mapToDataLayerFilters.ts","webpack://nikon-client/./utility/helpers/getAllowedListingFacets.ts","webpack://nikon-client/./utility/helpers/removeFalsyValues.ts","webpack://nikon-client/./state-management/ListingStore.ts","webpack://nikon-client/./utility/hooks/useListingComponentProps.ts"],"sourcesContent":["import { motion } from 'framer-motion';\nimport { Dispatch, PropsWithChildren, SetStateAction } from 'react';\n\ninterface Props {\n readonly onCloseCallback?: Dispatch>;\n readonly className?: string;\n}\n\nconst Backdrop = ({\n children,\n className,\n onCloseCallback,\n}: PropsWithChildren) => (\n onCloseCallback?.((oldState: boolean) => !oldState)}\n >\n
\n {children}\n
\n \n);\n\nexport default Backdrop;\n","import Backdrop from '@atoms/Backdrop/Backdrop';\nimport CloseButton from '@atoms/CloseButton/CloseButton';\nimport Portal from '@atoms/Portal/Portal';\nimport bodyScrollLock from '@utils/helpers/bodyScrollLock';\nimport classNames from 'classnames';\nimport FocusTrap from 'focus-trap-react';\nimport { AnimatePresence, motion } from 'framer-motion';\nimport {\n Dispatch,\n forwardRef,\n PropsWithChildren,\n SetStateAction,\n useEffect,\n useImperativeHandle,\n useRef,\n} from 'react';\n\nexport interface IDrawerContentRef {\n readonly scrollToTop: () => void;\n}\n\ninterface Props {\n readonly setIsOpen: Dispatch>;\n readonly isOpen: boolean;\n readonly onCloseCallback?: () => void;\n readonly showClose?: boolean;\n readonly drawerClasses?: string;\n readonly maxWidthClassName?: string;\n readonly contentSpacingClassName?: string;\n readonly contentClassName?: string;\n readonly isBottomToTopSliding?: boolean;\n readonly dataTestId?: string;\n}\n\nconst Drawer = forwardRef>(\n (\n {\n setIsOpen,\n isOpen,\n children,\n onCloseCallback,\n showClose = true,\n drawerClasses,\n maxWidthClassName = 'max-w-[605px]',\n contentSpacingClassName = 'pt-14',\n contentClassName,\n isBottomToTopSliding,\n dataTestId = 'Drawer',\n },\n contentRef\n ) => {\n const drawerRef = useRef(null);\n const drawerContentRef = useRef(null);\n const iframeHeightRef = useRef(null);\n\n const isInEditor =\n typeof window !== 'undefined' && window.top !== window.self;\n\n const variants = {\n hidden: {\n ...(isBottomToTopSliding ? { y: '100vh' } : { x: '100vw' }),\n transition: { duration: 0.5 },\n },\n show: {\n ...(isBottomToTopSliding ? { y: 0 } : { x: 0 }),\n transition: { duration: 0.5 },\n },\n };\n\n const handleClose = () => {\n setIsOpen(false);\n onCloseCallback?.();\n };\n\n useImperativeHandle(contentRef, () => ({\n scrollToTop: () => {\n drawerContentRef.current?.scrollTo({ top: 0, behavior: 'smooth' });\n },\n }));\n\n useEffect(() => {\n if (isOpen) {\n bodyScrollLock(true);\n }\n\n return () => {\n bodyScrollLock(false);\n };\n }, [isOpen]);\n\n useEffect(() => {\n const close = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n setIsOpen(false);\n }\n };\n\n window.addEventListener('keydown', close);\n return () => window.removeEventListener('keydown', close);\n }, [setIsOpen]);\n\n useEffect(() => {\n if (!isInEditor) return;\n\n const editorIFrame = drawerRef.current?.ownerDocument.defaultView\n ?.frameElement as HTMLIFrameElement;\n\n if (!editorIFrame) return;\n\n if (!iframeHeightRef.current) {\n iframeHeightRef.current = editorIFrame.style.height;\n }\n\n editorIFrame.style.height = isOpen ? '100vh' : iframeHeightRef.current;\n }, [isInEditor, isOpen]);\n\n return (\n \n {isOpen && (\n \n \n
\n \n\n e.stopPropagation()}\n className={classNames(\n 'drawer fixed inset-0 left-auto z-max flex w-full flex-col overflow-hidden bg-grey-100',\n maxWidthClassName,\n drawerClasses\n )}\n initial=\"hidden\"\n animate=\"show\"\n exit=\"hidden\"\n variants={variants}\n data-testid=\"drawer\"\n >\n \n {/* A hidden button that steals the inital focus of the modal preventing the close icon from animating on modal open */}\n {/* eslint-disable-next-line jsx-a11y/control-has-associated-label */}\n
\n \n \n \n
\n )}\n
\n );\n }\n);\n\nexport default Drawer;\n","import Button from '@atoms/Button/Button';\nimport FormSelectorGroup from '@atoms/FormSelectorGroup/FormSelectorGroup';\nimport { IFormCheckboxGroup } from '@models/IFormCheckboxGroup';\nimport { useField } from 'formik';\n\nconst FormCheckboxGroup = ({\n name,\n checkboxClassName,\n checkboxLabelType,\n disableAllCtaLabel,\n dataTestId = 'Form-Checkbox-Group',\n ...rest\n}: IFormCheckboxGroup) => {\n const [, , { setValue }] = useField(name);\n\n return (\n
\n \n\n {disableAllCtaLabel && (\n {\n setValue([]);\n }}\n secondary\n type=\"button\"\n dataTestId={`${dataTestId}-Disable-All-Button`}\n >\n {disableAllCtaLabel}\n \n )}\n
\n );\n};\n\nexport default FormCheckboxGroup;\n","// Fully reusable component in `FormRadio` and `FormCheckbox`\n// therefore no need for duplicated tests and stories\n\nimport SizeEnum from '@models/enums/SizeEnum';\nimport { IFormSelector } from '@models/IFormSelector';\nimport classNames from 'classnames';\nimport { ErrorMessage, useField } from 'formik';\nimport { AnimatePresence, motion } from 'framer-motion';\nimport { ChangeEvent, useRef } from 'react';\nimport { isIOS } from 'react-device-detect';\n\nconst FormSelector = ({\n dataTestId = 'Form-Selector',\n id,\n label,\n labelType = SizeEnum.Small,\n name,\n showError = true,\n type,\n value,\n isCentered = true,\n isRichTextLabel,\n checkboxSize = SizeEnum.Small,\n checkboxBorderColor = 'border-grey-500',\n ...rest\n}: IFormSelector) => {\n const [{ checked, onChange, ...restField }, { error, touched }] = useField({\n name,\n type,\n value,\n });\n const fieldId = id || (value ? `${name}-${value}` : name);\n const ref = useRef(null);\n\n const handleOnChange = (ev: ChangeEvent) => {\n if (isIOS) ref.current?.focus();\n\n onChange(ev);\n };\n\n const isError = !!error && touched;\n\n return (\n
\n \n \n\n \n \n {checked && (\n \n )}\n \n
\n\n {label && (\n \n {isRichTextLabel ? (\n \n ) : (\n label\n )}\n \n )}\n \n\n {showError && isError && (\n \n {(msg: string) => (\n \n {msg}\n \n )}\n \n )}\n \n );\n};\n\nexport default FormSelector;\n","// Fully reusable component in `FormRadioGroup` and `FormCheckboxGroup`\n// therefore no need for duplicated tests and stories\n\nimport FormSelector from '@atoms/FormSelector/FormSelector';\nimport { IFormSelectorGroup } from '@models/IFormSelectorGroup';\nimport { ErrorMessage, useField } from 'formik';\n\nconst FormSelectorGroup = ({\n groupClassName,\n name,\n options,\n selectorClassName,\n selectorLabelType,\n type,\n dataTestId = 'Form-Selector-Group',\n}: IFormSelectorGroup) => {\n const [, { error, touched }] = useField(name);\n const isError = !!error && touched;\n\n return (\n
\n
\n {options.map(({ label, value }) => (\n
\n \n
\n ))}\n
\n\n {isError && (\n \n {(msg: string) => (\n \n {msg}\n \n )}\n \n )}\n
\n );\n};\n\nexport default FormSelectorGroup;\n","import Icon from '@atoms/Icon/Icon';\nimport classNames from 'classnames';\nimport { motion } from 'framer-motion';\nimport { ButtonHTMLAttributes, DetailedHTMLProps } from 'react';\n\ninterface Props\n extends DetailedHTMLProps<\n ButtonHTMLAttributes,\n HTMLButtonElement\n > {\n readonly open?: boolean;\n readonly loadMoreLabel: string;\n readonly loadLessLabel?: string;\n readonly _type?: 'BASIC' | 'YELLOW-HIGHLIGHT';\n readonly isLightMode?: boolean;\n readonly dataTestId?: string;\n}\n\nconst LoadMoreButton = ({\n open = false,\n loadMoreLabel,\n loadLessLabel,\n _type = 'BASIC',\n isLightMode,\n dataTestId,\n ...props\n}: Props) => (\n \n {(!open || loadLessLabel) && (\n

{open ? loadLessLabel : loadMoreLabel}

\n )}\n\n \n \n \n \n);\n\nexport default LoadMoreButton;\n","import SizeEnum from '@models/enums/SizeEnum';\nimport TagTypesEnum from '@models/enums/TagTypesEnum';\nimport { ILink } from '@models/ILink';\nimport classNames from 'classnames';\nimport {\n ButtonHTMLAttributes,\n DetailedHTMLProps,\n PropsWithChildren,\n} from 'react';\n\ninterface Props {\n readonly className?: string;\n readonly disabled?: boolean;\n readonly editHint?: string;\n readonly link?: ILink;\n readonly linkCallback?: () => void;\n readonly pointerStates?: boolean;\n readonly size?: Exclude;\n readonly tagType?: TagTypesEnum;\n readonly text?: string;\n readonly span?: boolean;\n readonly isLightMode?: boolean;\n readonly dataTestId?: string;\n}\n\ntype TagProps = Props &\n DetailedHTMLProps, HTMLButtonElement>;\n\nconst Tag = ({\n children,\n className,\n disabled = false,\n editHint,\n link,\n linkCallback,\n pointerStates = true,\n size = SizeEnum.Small,\n span = false,\n tagType,\n text,\n isLightMode,\n dataTestId,\n ...buttonProps\n}: PropsWithChildren) => {\n const tagClasses = classNames(\n {\n [`text-black-100 bg-grey-200 ${\n isLightMode ? '' : 'dark:bg-grey-600 dark:text-white'\n }`]: tagType === TagTypesEnum.Primary,\n //\n [`hover:bg-grey active:text-white active:bg-black-100 ${\n isLightMode\n ? ''\n : 'dark:hover:text-white dark:hover:bg-grey-500 dark:active:text-black-100 dark:active:bg-white'\n }`]: tagType === TagTypesEnum.Primary && pointerStates,\n //\n [`text-white bg-black-100 ${\n isLightMode ? '' : 'dark:bg-white dark:text-black-100'\n }`]:\n tagType === TagTypesEnum.Secondary || tagType === TagTypesEnum.Square,\n //\n [`hover:bg-grey hover:text-black-100 active:text-black-100 active:bg-grey-200 ${\n isLightMode\n ? ''\n : 'dark:hover:text-white dark:hover:bg-grey-500 dark:active:text-white dark:active:bg-grey-600'\n }`]: tagType === TagTypesEnum.Secondary && pointerStates,\n //\n [`text-black-100 bg-white ${\n isLightMode ? '' : 'dark:bg-black-100 dark:text-white'\n }`]: tagType === TagTypesEnum.Three,\n //\n [`hover:bg-grey active:bg-grey-400 ${\n isLightMode\n ? ''\n : 'dark:hover:text-white dark:hover:bg-grey-500 dark:active:text-black-100 dark:active:bg-white'\n }`]: tagType === TagTypesEnum.Three && pointerStates,\n //\n 'text-yellow bg-black-100': tagType === TagTypesEnum.Four,\n //\n 'hover:bg-grey hover:text-black-100 active:text-black-100 active:bg-grey-100':\n tagType === TagTypesEnum.Four && pointerStates,\n //\n 'py-2.5 px-5': size === SizeEnum.Large && tagType !== TagTypesEnum.Square,\n //\n 'px-4 py-1': size === SizeEnum.Small && tagType !== TagTypesEnum.Square,\n //\n 'pointer-events-none': !pointerStates,\n },\n tagType === TagTypesEnum.Square ? 'rounded-[3px]' : 'rounded-full body-two',\n 'select-none',\n className\n );\n\n if (span) {\n return (\n \n {text}\n \n );\n }\n\n return link?.url && (link?.name || children) && !disabled ? (\n \n {children || link.name}\n \n ) : (\n \n {children || text}\n \n );\n};\n\nexport default Tag;\n","import Button from '@atoms/Button/Button';\nimport LoadingSpinner from '@atoms/LoadingSpinner/LoadingSpinner';\nimport { IListingResult } from '@models/IListingResult';\nimport classNames from 'classnames';\nimport { Dispatch, PropsWithChildren, SetStateAction } from 'react';\n\ninterface Props {\n readonly loading: boolean;\n readonly results: IListingResult[];\n readonly error: boolean;\n readonly errorText: string;\n readonly noResultsText: string;\n readonly noResultsCTALabel: string;\n readonly setIsDrawerOpen: Dispatch>;\n readonly resultsClassName?: string;\n readonly loadingBackgroundClassName?: string;\n readonly noResultsClassName?: string;\n readonly errorClassName?: string;\n}\n\nconst ListingResultsContainer = ({\n loading,\n results,\n error,\n errorText,\n noResultsText,\n noResultsCTALabel,\n setIsDrawerOpen,\n resultsClassName,\n loadingBackgroundClassName = 'bg-white/60 dark:bg-black-100/60',\n noResultsClassName,\n errorClassName,\n children,\n}: PropsWithChildren) => {\n const hasResults = !!results?.length;\n\n return (\n <>\n {loading && !hasResults && (\n \n )}\n\n {hasResults && !error && (\n
\n {children}\n\n {loading && (\n \n \n
\n )}\n \n )}\n\n {!hasResults &&\n !loading &&\n !error &&\n (noResultsText || noResultsCTALabel) && (\n \n {noResultsText &&

{noResultsText}

}\n\n {noResultsCTALabel && (\n {\n setIsDrawerOpen(true);\n }}\n >\n {noResultsCTALabel}\n \n )}\n \n )}\n\n {error && errorText && (\n
\n

{errorText}

\n
\n )}\n \n );\n};\n\nexport default ListingResultsContainer;\n","import LoadingSpinner from '@atoms/LoadingSpinner/LoadingSpinner';\nimport LoadMoreButton from '@atoms/LoadMoreButton/LoadMoreButton';\nimport { IListingResult } from '@models/IListingResult';\nimport classNames from 'classnames';\nimport { useEffect, useState } from 'react';\n\ninterface Props {\n readonly alignLeft?: boolean;\n readonly error: boolean;\n readonly loading: boolean;\n readonly loadMoreLabel: string;\n readonly pageNumber: number;\n readonly pageSize: number;\n readonly results: IListingResult[];\n readonly paginationHandler: (params: number) => void;\n readonly total: number;\n readonly hasNextPage: boolean;\n readonly viewedLabel?: string;\n}\n\nconst LoadMoreListing = ({\n alignLeft = false,\n error,\n loading,\n loadMoreLabel,\n pageNumber,\n pageSize = 0,\n results,\n paginationHandler,\n total,\n hasNextPage,\n viewedLabel,\n}: Props) => {\n const [viewLabel, setViewLabel] = useState('');\n\n useEffect(() => {\n if (viewedLabel) {\n const resultCount =\n results?.length < (pageNumber + 1) * pageSize\n ? results.length\n : (pageNumber + 1) * pageSize;\n\n const newLabel = viewedLabel\n ?.replace('{0}', `${resultCount}`)\n .replace('{1}', `${total}`);\n\n setViewLabel(newLabel);\n }\n }, [results, pageNumber, pageSize, total, viewedLabel]);\n\n if (error || !results?.length) {\n return null;\n }\n\n return (\n \n {!loading ? (\n <>\n {viewLabel &&
{viewLabel}
}\n {hasNextPage && (\n paginationHandler(pageNumber + 1)}\n />\n )}\n \n ) : (\n \n )}\n \n );\n};\n\nexport default LoadMoreListing;\n","import Icon from '@atoms/Icon/Icon';\nimport Tag from '@atoms/Tag/Tag';\nimport IconSizeEnum from '@models/enums/IconSizeEnum';\nimport TagTypesEnum from '@models/enums/TagTypesEnum';\nimport { IListingFilter } from '@models/IListingFilter';\nimport { IStoredFilters } from '@models/IStoredFilters';\n\ninterface Props {\n filters: IListingFilter[];\n values: IStoredFilters;\n setFieldValue: (groupKey: string, filters: string[]) => void;\n}\n\ntype FiltersArray = [string, string, string][];\n\n// The reason for the complexity here is really because the values object contained in the Formik state does not have any\n// reference to the labels for each filter, and so we have to \"re-attach\" these labels to the tags\n\nconst ContentFilterTags = ({\n values = {},\n filters = [],\n setFieldValue,\n}: Props) => {\n // Reduce the filter Group keys down to an Array of\n // [[group 1,filter 1, Label],[group 1, filter 2, Label],[group 2, filter 2, Label]] - 1 array element per Tag displayed\n const mappedArray = Object.keys(values).reduce((accumulator, groupKey) => {\n // Find Group in filters which we are currently mapping through\n const currentFilterGroup =\n filters.find((filterGroup) => filterGroup.key === groupKey) || null;\n\n // This is an Array from our stored filters ['98','420','69']\n const filtersArray: FiltersArray = values[groupKey]!.filter(\n (filterKey) => !!filterKey\n ).map((filterKey) => {\n // Find filter which we are currently returning and get its label\n const currentFilter =\n currentFilterGroup?.values.find((filter) => filter.key === filterKey) ||\n null;\n return [groupKey, filterKey, currentFilter?.label || ''];\n });\n return filtersArray ? accumulator.concat(filtersArray) : accumulator;\n }, [] as FiltersArray);\n\n return (\n <>\n {mappedArray\n .filter(([, , label]) => !!label)\n .map(([groupKey, filterKey, label], index) => (\n \n setFieldValue(\n groupKey,\n values[groupKey]!.filter(\n (currentKey) => currentKey !== filterKey\n )\n )\n }\n dataTestId={`Content-Filter-Tag-${index}`}\n >\n {label}\n \n \n ))}\n \n );\n};\n\nexport default ContentFilterTags;\n","import FormCheckboxGroup from '@atoms/FormCheckboxGroup/FormCheckboxGroup';\nimport Icon from '@atoms/Icon/Icon';\nimport SizeEnum from '@models/enums/SizeEnum';\nimport { IListingFilterValue } from '@models/IListingFilter';\nimport classNames from 'classnames';\nimport { AnimatePresence, motion } from 'framer-motion';\nimport { useEffect, useState } from 'react';\n\ninterface Props {\n readonly filtersCloseLabel: string;\n readonly groupKey: string;\n readonly helpText: string;\n readonly label: string;\n readonly openByDefault: boolean;\n readonly values: IListingFilterValue[];\n readonly showExpandButton: boolean;\n}\n\nconst FilterGroup = ({\n filtersCloseLabel,\n groupKey = '',\n helpText,\n label = '',\n openByDefault,\n values,\n showExpandButton,\n}: Props) => {\n const [isFilterGroupOpen, setIsFilterGroupOpen] = useState(openByDefault);\n const [isHelpTextOpen, setIsHelpTextOpen] = useState(false);\n\n const accordionTransition = {\n damping: 20,\n duration: 0.4,\n mass: 1.2,\n stiffness: 80,\n type: 'spring',\n };\n\n const [height, setHeight] = useState(isFilterGroupOpen ? 'auto' : 0);\n const [opacity, setOpacity] = useState(isFilterGroupOpen ? 1 : 0);\n\n useEffect(() => {\n setHeight(isFilterGroupOpen ? 'auto' : 0);\n setOpacity(isFilterGroupOpen ? 1 : 0);\n }, [isFilterGroupOpen]);\n\n return (\n \n
\n setIsFilterGroupOpen(!isFilterGroupOpen)}\n type=\"button\"\n >\n \n {label}\n \n \n\n \n {isFilterGroupOpen && (\n <>\n {helpText && (\n setIsHelpTextOpen(!isHelpTextOpen)}\n type=\"button\"\n >\n ?\n \n )}\n {showExpandButton && (\n setIsFilterGroupOpen(!isFilterGroupOpen)}\n type=\"button\"\n >\n \n \n )}\n \n )}\n \n
\n\n \n {isHelpTextOpen && isFilterGroupOpen && helpText && (\n \n
\n \n\n  \n\n setIsHelpTextOpen(!isHelpTextOpen)}\n type=\"button\"\n >\n {filtersCloseLabel || 'Close'}\n \n
\n\n
\n \n )}\n \n \n {isFilterGroupOpen && (\n \n ({\n label: `${currentValue.label} ${\n currentValue.total >= 0 && `(${currentValue.total})`\n }`,\n value: currentValue.key,\n }))}\n checkboxLabelType={SizeEnum.Large}\n />\n
\n \n )}\n \n
\n );\n};\n\nexport default FilterGroup;\n","import Button from '@atoms/Button/Button';\nimport Drawer from '@atoms/Drawer/Drawer';\nimport Icon from '@atoms/Icon/Icon';\nimport ShadowContainerVertical from '@atoms/ShadowContainerVertical/ShadowContainerVertical';\nimport { IContentFilters } from '@models/IContentFilters';\nimport { IStoredFilters } from '@models/IStoredFilters';\nimport ContentFilterTags from '@molecules/ContentFilterTags/ContentFilterTags';\nimport FilterGroup from '@molecules/FilterGroup/FilterGroup';\nimport useAriaLabels from '@utils/hooks/useAriaLabels';\nimport classNames from 'classnames';\nimport { Form, Formik } from 'formik';\nimport { PropsWithChildren, useEffect } from 'react';\n\ninterface IFormWrapper {\n readonly values: IStoredFilters;\n readonly onChange: (params: IStoredFilters) => void;\n}\n\nconst FormWrapper = ({\n values,\n children,\n onChange,\n}: PropsWithChildren) => {\n useEffect(() => {\n if (values) onChange?.(values);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [values]);\n\n return (\n \n {children}\n \n );\n};\n\nconst ContentFilters = ({\n applyFilters,\n appliedFilters,\n clearFacets,\n filters,\n filtersApplyLabel,\n filtersApplySingleLabel,\n filtersCloseLabel,\n filtersClearLabel,\n filtersTitleLabel,\n isDrawerOpen,\n fetchTotal,\n setIsDrawerOpen,\n showFacets,\n totalFacetsToApply,\n filtersToggleLabel,\n loading = false,\n classes,\n areThereFiltersAvailable = false,\n error = false,\n showExpandedFilters = true,\n}: IContentFilters) => {\n const { clearFiltersAriaLabel } = useAriaLabels();\n const populatedFilters = filters?.filter((filter) => filter.values?.length);\n\n return (\n <>\n setIsDrawerOpen?.((oldState) => !oldState)}\n type=\"button\"\n className={classNames(\n classes,\n loading || error || !areThereFiltersAvailable\n ? 'text-grey-500'\n : 'text-black-100 dark:text-white',\n 'block'\n )}\n data-testid=\"Content-Filters-Toggle\"\n >\n \n {filtersToggleLabel}\n \n

\n \n \n \n {({ values, setFieldValue }) => (\n fetchTotal(values)} values={values}>\n
\n
\n \n {filtersTitleLabel}\n

\n\n
\n
\n \n
\n \n {filtersClearLabel}\n

\n\n
\n
\n \n
\n
\n \n
\n \n {showFacets &&\n populatedFilters.map((filter) => {\n const isGroupOpenByDefault =\n filter.values?.filter((item) => item.isActive).length >\n 0 || showExpandedFilters;\n\n return (\n 1}\n />\n );\n })}\n \n
\n \n {totalFacetsToApply === 1\n ? filtersApplySingleLabel?.replace(\n '{0}',\n `${totalFacetsToApply}`\n )\n : filtersApplyLabel?.replace(\n '{0}',\n `${totalFacetsToApply}`\n )}\n \n
\n \n )}\n \n \n \n );\n};\n\nexport default ContentFilters;\n","enum TagTypesEnum {\n Primary = 'PRIMARY',\n Secondary = 'SECONDARY',\n Three = 'THREE',\n Four = 'FOUR',\n Square = 'SQUARE',\n}\n\nexport default TagTypesEnum;\n","const convertValuesToArrays = (object: Record) =>\n Object.fromEntries(\n Object.entries(object).map(([key, value]) =>\n Array.isArray(value) ? [key, value] : [key, [value]]\n )\n );\n\nexport default convertValuesToArrays;\n","import { IDataLayerFilter } from '@models/IDataLayerFilter';\nimport { IListingFilter } from '@models/IListingFilter';\nimport { IStoredFilters } from '@models/IStoredFilters';\nimport convertValuesToArrays from './convertValuesToArrays';\n\nconst mapToDataLayerFilters = (\n filters: IListingFilter[],\n facets: Record\n) => {\n // If submitting directly after loading the page, the facets do not come in as arrays, so need to turn them into one\n const validFacets = convertValuesToArrays(facets) as IStoredFilters;\n\n return Object.keys(validFacets).reduce(\n (dataLayerFiltersAcc, categoryKey) => {\n const categoryDataLayerFilters =\n validFacets[categoryKey]?.reduce(\n (categoryDataLayerFiltersAcc, categoryFacetKey) => {\n const currentCategory = filters.find(\n (filter) => filter.key === categoryKey\n );\n\n const currentCategoryFacetLabel = currentCategory?.values.find(\n (value) => value.key === categoryFacetKey\n )?.label;\n\n const filter = {\n filter_category: currentCategory?.label,\n filter_name: currentCategoryFacetLabel,\n };\n\n if (filter.filter_category && filter.filter_name) {\n return [...categoryDataLayerFiltersAcc, filter];\n }\n return categoryDataLayerFiltersAcc;\n },\n []\n ) ?? [];\n\n return [...dataLayerFiltersAcc, ...categoryDataLayerFilters];\n },\n []\n );\n};\n\nexport default mapToDataLayerFilters;\n","const getAllowedListingFacets = (\n params: Record,\n allowedParams: string[]\n) => {\n if (!params || !allowedParams || typeof params !== 'object') return {};\n\n return Object.keys(params).reduce>(\n (acc, paramKey) => {\n if (allowedParams.includes(paramKey)) {\n return {\n ...acc,\n [paramKey]: params[paramKey],\n };\n }\n\n return acc;\n },\n {}\n );\n};\n\nexport default getAllowedListingFacets;\n","const removeFalsyValues = (object: Record) =>\n Object.fromEntries(\n Object.entries(object)\n .map<[string, unknown[]]>(([key, value]) => [\n key,\n value.filter((arrayValue) => !!arrayValue),\n ])\n .filter(([, value]) => value.length !== 0)\n );\n\nexport default removeFalsyValues;\n","import ErrorBannerNotificationEnum from '@models/enums/ErrorBannerNotificationEnum';\nimport { IListingFilter } from '@models/IListingFilter';\nimport { IListingResponse } from '@models/IListingResponse';\nimport { IListingResult } from '@models/IListingResult';\nimport { ISortOptions } from '@models/ISortOptions';\nimport { IStoredFilters } from '@models/IStoredFilters';\nimport getAllowedListingFacets from '@utils/helpers/getAllowedListingFacets';\nimport removeFalsyValues from '@utils/helpers/removeFalsyValues';\nimport axios from 'axios';\nimport qs from 'qs';\nimport { useCallback, useMemo, useState } from 'react';\nimport useErrorNotificationStore from './ErrorBannerNotificationDisplayStore';\n\ninterface FetchResultsProps {\n readonly params: Record;\n readonly allowedParams: string[];\n readonly from: number;\n readonly endpoint: string;\n readonly language: string;\n readonly pageSize: number;\n readonly page: number;\n readonly sortByParam: string;\n readonly showOnlyKits: boolean;\n readonly persistingParams: IStoredFilters;\n readonly dontSetResults?: boolean;\n readonly showAllVariants?: boolean;\n readonly listingId?: string;\n}\n\ninterface ListingState {\n readonly results: IListingResult[];\n readonly filters: IListingFilter[];\n readonly loading: boolean;\n readonly error: boolean;\n readonly total: number;\n readonly hasNextPage: boolean;\n readonly sortOptions: Partial;\n}\n\nconst useListingStore = () => {\n const [listingState, setListingState] = useState({\n results: [],\n filters: [],\n error: false,\n loading: true,\n total: 0,\n hasNextPage: false,\n sortOptions: {},\n });\n\n const { setErrorBannerNotification } = useErrorNotificationStore();\n\n const fetchResults = useCallback(\n async ({\n params = {},\n allowedParams = [],\n endpoint = '',\n language = 'en',\n listingId,\n pageSize = 10,\n page = 0,\n sortByParam,\n showOnlyKits,\n persistingParams = {},\n dontSetResults,\n showAllVariants,\n }: FetchResultsProps) => {\n const whiteList = getAllowedListingFacets(params, allowedParams);\n const from = page * pageSize;\n const whiteListOfParams = {\n language,\n listingId,\n pageSize,\n from: from || 0,\n ...params,\n ...removeFalsyValues(persistingParams),\n ...(allowedParams.length > 0\n ? { ...whiteList, facetsToShow: allowedParams }\n : { ...params, facetsToShow: [] as string[] }),\n ...(sortByParam ? { sort: sortByParam } : {}),\n ...(showOnlyKits ? { showOnlyKits: true } : {}),\n ...(showAllVariants ? { showAllVariants: true } : {}),\n };\n\n try {\n setListingState((prev) => ({ ...prev, loading: true }));\n\n const { data } = await axios.get(\n endpoint,\n {\n params: whiteListOfParams,\n paramsSerializer: (parameters) =>\n qs.stringify(parameters, {\n arrayFormat: 'repeat',\n encode: false,\n }),\n }\n );\n\n if (!data) return;\n\n const getResults = (prev: ListingState) => {\n const dataItems = data.items ?? [];\n\n if (page > 0) return { results: [...prev.results, ...dataItems] };\n if (dontSetResults) return {};\n return { results: dataItems };\n };\n\n setListingState((prev) => ({\n ...prev,\n ...getResults(prev),\n filters: data.filters,\n total: data.total,\n hasNextPage: data.hasNextPage,\n sortOptions: data.sortOptions,\n }));\n } catch (error) {\n setErrorBannerNotification(ErrorBannerNotificationEnum.SearchResults);\n\n setListingState((prev) => ({ ...prev, error: true }));\n } finally {\n setListingState((prev) => ({ ...prev, loading: false }));\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [setListingState]\n );\n\n const listingStore = useMemo(() => {\n return {\n ...listingState,\n fetchResults,\n };\n }, [fetchResults, listingState]);\n\n return listingStore;\n};\n\nexport default useListingStore;\n","import { IListingComponent } from '@models/IListingComponent';\nimport { IListingFilter } from '@models/IListingFilter';\nimport { IListingResponse } from '@models/IListingResponse';\nimport { IStoredFilters } from '@models/IStoredFilters';\nimport ArticleLayoutsEnum from '@models/enums/ArticleLayoutsEnum';\nimport ErrorBannerNotificationEnum from '@models/enums/ErrorBannerNotificationEnum';\nimport useErrorNotificationStore from '@state/ErrorBannerNotificationDisplayStore';\nimport useListingStore from '@state/ListingStore';\nimport convertValuesToArrays from '@utils/helpers/convertValuesToArrays';\nimport updateDataLayer from '@utils/helpers/gtm';\nimport mapToDataLayerFilters from '@utils/helpers/mapToDataLayerFilters';\nimport removeFalsyValues from '@utils/helpers/removeFalsyValues';\nimport axios from 'axios';\nimport qs from 'qs';\nimport { useEffect, useState } from 'react';\n\ninterface Props extends IListingComponent {\n readonly endpoint: string;\n readonly layoutType?: ArticleLayoutsEnum;\n readonly persistingParams?: IStoredFilters;\n readonly preFilterParams?: IStoredFilters;\n readonly searchValue?: string;\n readonly showAllVariants?: boolean;\n readonly listingId?: string;\n}\n\nconst useListingComponentProps = ({\n defaultSort = '',\n endpoint = '',\n facetsToShow = [],\n filtersApplyLabel = '',\n filtersApplySingleLabel = '',\n filtersClearLabel = '',\n filtersCloseLabel = '',\n filtersTitleLabel = '',\n filtersToggleLabel = '',\n language = '',\n listingId = '',\n loadMoreLabel = '',\n noResultsCTALabel = '',\n noResultsText = '',\n errorText = '',\n pageSize = 6,\n persistingParams = {},\n preFilterParams = {},\n searchValue = '',\n showAllVariants = false,\n showFacets = false,\n showKitsOnlyLabel = '',\n sortByLabel = '',\n totalNumberKitsLabel = '',\n totalNumberResultsLabel = '',\n singleResultLabel = '',\n singleKitLabel = '',\n viewedLabel = '',\n}: Props) => {\n const [appliedFilters, setAppliedFilters] = useState({});\n const [isDrawerOpen, setIsDrawerOpen] = useState(false);\n const [pageNumber, setPageNumber] = useState(0);\n const [totalFacetsToApply, setTotalFacetsToApply] = useState(0);\n const [showOnlyKits, setShowOnlyKits] = useState(false);\n const [sortByParam, setSortByParam] = useState(defaultSort || '');\n\n const { setErrorBannerNotification } = useErrorNotificationStore();\n\n const {\n results,\n fetchResults,\n filters,\n loading,\n error,\n total,\n hasNextPage,\n sortOptions,\n } = useListingStore();\n\n const areThereFiltersAvailable = filters?.some(\n (filter: IListingFilter) => filter?.values?.length > 0\n );\n\n const parseFilters = (\n filterInput: Record\n ) => removeFalsyValues(convertValuesToArrays(filterInput));\n\n const fetchResultsHandler = (\n params = appliedFilters,\n page = pageNumber,\n sortBy = sortByParam,\n showKits = showOnlyKits\n ) => {\n fetchResults({\n params: parseFilters(params),\n allowedParams: facetsToShow,\n endpoint,\n language,\n listingId,\n pageSize,\n page,\n sortByParam: sortBy,\n showOnlyKits: showKits,\n from: pageSize * page,\n persistingParams: parseFilters(persistingParams) as IStoredFilters,\n showAllVariants,\n });\n\n if (page === 0) {\n setPageNumber(0);\n }\n\n if (params && params !== appliedFilters) {\n setAppliedFilters(parseFilters(params) as IStoredFilters);\n }\n };\n\n const sortHandler = (sortBy: string) => {\n fetchResultsHandler(appliedFilters, 0, sortBy, showOnlyKits);\n setSortByParam(sortBy);\n };\n\n const showKitsHandler = (showKits: boolean) => {\n fetchResultsHandler(appliedFilters, 0, sortByParam, showKits);\n setShowOnlyKits(showKits);\n };\n\n const paginationHandler = (page: number) => {\n fetchResultsHandler(appliedFilters, page, sortByParam, showOnlyKits);\n setPageNumber(page);\n };\n\n const updateHrefWithQueryParams = (clearFacets: boolean) => {\n const queryValue = clearFacets\n ? { ...(searchValue ? { query: searchValue } : {}) }\n : appliedFilters;\n\n if (typeof window !== 'undefined') {\n const newQueryValue = qs.stringify(queryValue, {\n arrayFormat: 'repeat',\n });\n const newHref = `${window.location.pathname}${\n newQueryValue ? `?${newQueryValue}` : ''\n }`;\n\n window.history.pushState({ path: newHref }, '', newHref);\n }\n };\n\n const applyFilters = (filtersToApply: IStoredFilters) => {\n updateDataLayer({\n event: 'filterUsed',\n content_type: pageObject?.pageType,\n filter_action: 'apply_filter',\n filter: mapToDataLayerFilters(filters, filtersToApply),\n });\n updateHrefWithQueryParams(false);\n setIsDrawerOpen(false);\n fetchResultsHandler(filtersToApply, 0);\n };\n\n const clearFacets = () => {\n updateDataLayer({\n event: 'filterUsed',\n content_type: pageObject?.pageType,\n filter_action: 'clear_all_filter',\n filter: null,\n });\n updateHrefWithQueryParams(true);\n setIsDrawerOpen(false);\n fetchResultsHandler(searchValue ? { query: [searchValue] } : {}, 0);\n };\n\n const fetchTotal = async (currentFilters: IStoredFilters) => {\n const params: Record = {\n facetsToShow,\n language,\n pageSize,\n from: '0',\n showAllVariants,\n showOnlyKits,\n ...parseFilters(persistingParams),\n ...parseFilters(currentFilters),\n };\n\n try {\n const { data } = await axios.get(endpoint, {\n params: parseFilters(params),\n paramsSerializer: (parameters) =>\n qs.stringify(parameters, {\n arrayFormat: 'repeat',\n encode: false,\n }),\n });\n\n setTotalFacetsToApply(data?.total || 0);\n } catch (err) {\n setErrorBannerNotification(ErrorBannerNotificationEnum.SearchResults);\n\n setTotalFacetsToApply(0);\n }\n };\n\n useEffect(() => {\n if (typeof window !== 'undefined') {\n const query = window.location.search;\n const formattedQuery =\n qs.parse(query, {\n ignoreQueryPrefix: true,\n }) || {};\n\n fetchResultsHandler(\n convertValuesToArrays({\n ...formattedQuery,\n ...preFilterParams,\n }) as IStoredFilters\n );\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return {\n appliedFilters,\n applyFilters,\n areThereFiltersAvailable,\n clearFacets,\n error,\n facetsDisabled: loading || error || !areThereFiltersAvailable, // should look at removing this or consolidating our approach, it's only used in one place\n fetchResultsHandler,\n fetchTotal,\n filters,\n filtersApplyLabel,\n filtersApplySingleLabel,\n filtersClearLabel,\n filtersCloseLabel,\n filtersTitleLabel,\n filtersToggleLabel,\n isDrawerOpen,\n language,\n loading,\n loadMoreLabel,\n noResultsCTALabel,\n noResultsText,\n errorText,\n pageNumber,\n pageSize,\n paginationHandler,\n results,\n setIsDrawerOpen,\n setPageNumber,\n showFacets,\n showKitsHandler,\n showKitsOnlyLabel,\n showOnlyKits,\n sortByLabel,\n sortByParam,\n sortHandler,\n sortOptions,\n hasNextPage,\n total,\n totalFacetsToApply,\n totalNumberKitsLabel,\n totalNumberResults: total,\n totalNumberResultsLabel,\n singleResultLabel,\n singleKitLabel,\n viewedLabel,\n };\n};\n\nexport default useListingComponentProps;\n"],"names":["_ref","children","className","onCloseCallback","React","createElement","motion","div","animate","opacity","exit","initial","role","onClick","oldState","forwardRef","contentRef","setIsOpen","isOpen","showClose","drawerClasses","maxWidthClassName","contentSpacingClassName","contentClassName","isBottomToTopSliding","dataTestId","drawerRef","useRef","drawerContentRef","iframeHeightRef","isInEditor","window","top","self","variants","hidden","y","x","transition","duration","show","handleClose","useImperativeHandle","scrollToTop","current","scrollTo","behavior","useEffect","bodyScrollLock","close","e","key","addEventListener","removeEventListener","editorIFrame","ownerDocument","defaultView","frameElement","style","height","AnimatePresence","Portal","mountId","FocusTrap","focusTrapOptions","preventScroll","ref","Backdrop","stopPropagation","classNames","CloseButton","name","checkboxClassName","checkboxLabelType","disableAllCtaLabel","rest","setValue","useField","FormSelectorGroup","_extends","selectorClassName","selectorLabelType","type","Button","secondary","id","label","labelType","SizeEnum","Small","showError","value","isCentered","isRichTextLabel","checkboxSize","checkboxBorderColor","checked","onChange","restField","error","touched","fieldId","isError","Large","ev","isIOS","focus","htmlFor","dangerouslySetInnerHTML","__html","ErrorMessage","msg","groupClassName","options","map","_ref2","FormSelector","open","loadMoreLabel","loadLessLabel","_type","isLightMode","props","span","rotate","Icon","size","colorClassName","disabled","editHint","link","linkCallback","pointerStates","tagType","text","buttonProps","tagClasses","TagTypesEnum","Primary","Secondary","Square","Three","Four","url","href","target","loading","results","errorText","noResultsText","noResultsCTALabel","setIsDrawerOpen","resultsClassName","loadingBackgroundClassName","noResultsClassName","errorClassName","hasResults","length","Fragment","LoadingSpinner","extraClasses","alignLeft","pageNumber","pageSize","paginationHandler","total","hasNextPage","viewedLabel","viewLabel","setViewLabel","useState","resultCount","newLabel","replace","LoadMoreButton","values","filters","setFieldValue","mappedArray","Object","keys","reduce","accumulator","groupKey","currentFilterGroup","find","filterGroup","filtersArray","filter","filterKey","currentFilter","concat","_ref3","index","Tag","currentKey","IconSizeEnum","md","filtersCloseLabel","helpText","openByDefault","showExpandButton","isFilterGroupOpen","setIsFilterGroupOpen","isHelpTextOpen","setIsHelpTextOpen","accordionTransition","damping","mass","stiffness","setHeight","setOpacity","button","FormCheckboxGroup","currentValue","FormWrapper","Form","applyFilters","appliedFilters","clearFacets","filtersApplyLabel","filtersApplySingleLabel","filtersClearLabel","filtersTitleLabel","isDrawerOpen","fetchTotal","showFacets","totalFacetsToApply","filtersToggleLabel","classes","areThereFiltersAvailable","showExpandedFilters","clearFiltersAriaLabel","useAriaLabels","populatedFilters","Drawer","Formik","initialValues","onSubmit","ContentFilterTags","ShadowContainerVertical","shadowColour","shadowHeight","isGroupOpenByDefault","item","isActive","FilterGroup","object","fromEntries","entries","Array","isArray","mapToDataLayerFilters","facets","validFacets","convertValuesToArrays","dataLayerFiltersAcc","categoryKey","categoryDataLayerFiltersAcc","categoryFacetKey","currentCategory","currentCategoryFacetLabel","filter_category","filter_name","getAllowedListingFacets","params","allowedParams","acc","paramKey","includes","arrayValue","useListingStore","listingState","setListingState","sortOptions","setErrorBannerNotification","useErrorNotificationStore","fetchResults","useCallback","async","endpoint","language","listingId","page","sortByParam","showOnlyKits","persistingParams","dontSetResults","showAllVariants","whiteList","whiteListOfParams","from","removeFalsyValues","facetsToShow","sort","prev","data","axios","paramsSerializer","parameters","qs","arrayFormat","encode","getResults","dataItems","items","ErrorBannerNotificationEnum","SearchResults","useMemo","defaultSort","preFilterParams","searchValue","showKitsOnlyLabel","sortByLabel","totalNumberKitsLabel","totalNumberResultsLabel","singleResultLabel","singleKitLabel","setAppliedFilters","setPageNumber","setTotalFacetsToApply","setShowOnlyKits","setSortByParam","some","parseFilters","filterInput","fetchResultsHandler","arguments","undefined","sortBy","showKits","updateHrefWithQueryParams","queryValue","query","newQueryValue","newHref","location","pathname","history","pushState","path","search","formattedQuery","ignoreQueryPrefix","filtersToApply","updateDataLayer","event","content_type","pageObject","pageType","filter_action","facetsDisabled","currentFilters","err","showKitsHandler","sortHandler","totalNumberResults"],"sourceRoot":""}