{"version":3,"file":"AuthorTypeListings-Chunk-8c637a3fd65ad45c161c.js","mappings":"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","sources":["webpack://nikon-client/./components/atoms/CloseButton/CloseButton.tsx","webpack://nikon-client/./components/atoms/LoadingSpinner/LoadingSpinner.tsx","webpack://nikon-client/./components/atoms/Modal/Modal.tsx","webpack://nikon-client/./components/atoms/Portal/Portal.tsx","webpack://nikon-client/./utility/hooks/useVerticalGrabScroll.ts","webpack://nikon-client/./utility/hooks/useVerticalScrollShadows.ts","webpack://nikon-client/./components/atoms/ShadowContainerVertical/ShadowContainerVertical.tsx","webpack://nikon-client/./components/organisms/AuthorTypeListings/AuthorTypeListings.tsx","webpack://nikon-client/./models/enums/ErrorBannerNotificationEnum.ts","webpack://nikon-client/./models/enums/IconSizeEnum.ts","webpack://nikon-client/./models/enums/ScrollProgressEnum.ts","webpack://nikon-client/./state-management/AriaLabelsStore.ts","webpack://nikon-client/./state-management/ErrorBannerNotificationDisplayStore.ts","webpack://nikon-client/./utility/helpers/bodyScrollLock.ts","webpack://nikon-client/./utility/hooks/useAriaLabels.ts","webpack://nikon-client/./utility/hooks/useResizeObserver.ts"],"sourcesContent":["import IconSizeEnum from '@models/enums/IconSizeEnum';\nimport useAriaLabels from '@utils/hooks/useAriaLabels';\nimport classNames from 'classnames';\nimport { MouseEventHandler } from 'react';\n\ninterface Props {\n readonly ariaLabel?: string;\n readonly className?: string;\n readonly color?: 'black' | 'white' | 'red';\n readonly onClick: MouseEventHandler;\n readonly size?: IconSizeEnum | string;\n readonly dataTestId?: string;\n}\n\nconst CloseButton = ({\n ariaLabel,\n className,\n color = 'black',\n onClick,\n size = IconSizeEnum.lg,\n dataTestId,\n}: Props) => {\n const { closeModalAriaLabel } = useAriaLabels();\n\n const closeColours = {\n black: 'before:bg-black-100 after:bg-black-100',\n white: 'before:bg-white after:bg-white',\n red: 'before:bg-red-100 after:bg-red-100',\n };\n\n return (\n \n );\n};\n\nexport default CloseButton;\n","import classNames from 'classnames';\n\ninterface Props {\n readonly extraClasses?: string;\n readonly svgClasses?: string;\n readonly trackColor?: string;\n readonly animationStyle?: 'pulse' | 'spin';\n readonly pulseContainerClasses?: string;\n readonly pulseItemClasses?: string;\n}\n\nconst LoadingSpinner = ({\n extraClasses,\n svgClasses = 'text-yellow h-9 w-9',\n pulseContainerClasses,\n pulseItemClasses = 'bg-yellow h-7.5 w-7.5',\n trackColor = '#E5E7EB',\n animationStyle = 'pulse',\n}: Props) => (\n
\n {animationStyle === 'pulse' && (\n
\n \n \n \n
\n )}\n {animationStyle === 'spin' && (\n \n \n \n \n )}\n
\n);\n\nexport default LoadingSpinner;\n","import CloseButton from '@atoms/CloseButton/CloseButton';\nimport Portal from '@atoms/Portal/Portal';\nimport IconSizeEnum from '@models/enums/IconSizeEnum';\nimport bodyScrollLock from '@utils/helpers/bodyScrollLock';\nimport classNames from 'classnames';\nimport FocusTrap from 'focus-trap-react';\nimport { motion } from 'framer-motion';\nimport { PropsWithChildren, useCallback, useEffect, useRef } from 'react';\n\ninterface Props {\n readonly onCloseCallback?: () => void;\n readonly contentClasses?: string;\n readonly crossMarginsClassName?: string;\n readonly crossClasses?: string;\n readonly crossColor?: 'black' | 'white';\n readonly isOpen: boolean;\n readonly modalClasses?: string;\n readonly setIsOpen?: (param: boolean) => void;\n readonly showCloseButton?: boolean;\n readonly transparent?: boolean;\n readonly isCloseButtonFixed?: boolean;\n readonly closeButtonIconSize?: IconSizeEnum | string;\n readonly shouldCloseOnClickOutsideContent?: boolean;\n readonly shouldLockBody?: boolean;\n}\n\nconst Modal = ({\n onCloseCallback,\n children,\n contentClasses,\n crossColor = 'white',\n crossMarginsClassName = 'mr-8 mt-8',\n crossClasses,\n isOpen,\n modalClasses,\n setIsOpen,\n showCloseButton = true,\n transparent = false,\n isCloseButtonFixed = true,\n closeButtonIconSize = IconSizeEnum.md,\n shouldCloseOnClickOutsideContent = false,\n shouldLockBody = true,\n}: PropsWithChildren) => {\n const contentRef = useRef(null);\n\n useEffect(() => {\n if (isOpen && shouldLockBody) {\n bodyScrollLock(true);\n }\n\n return () => {\n if (shouldLockBody) bodyScrollLock(false);\n };\n }, [isOpen, shouldLockBody]);\n\n const close = useCallback(() => {\n setIsOpen?.(false);\n onCloseCallback?.();\n }, [onCloseCallback, setIsOpen]);\n\n useEffect(() => {\n const keyboardClose = (ev: KeyboardEvent) => {\n if (ev.key === 'Escape' && isOpen === true) {\n setIsOpen?.(false);\n }\n };\n window.addEventListener('keydown', keyboardClose);\n\n return () => {\n window.removeEventListener('keydown', keyboardClose);\n };\n }, [isOpen, setIsOpen]);\n\n useEffect(() => {\n const handleClickOutsideContent = (ev: Event) => {\n if (\n isOpen &&\n shouldCloseOnClickOutsideContent &&\n !contentRef.current?.contains(ev.target as HTMLElement)\n ) {\n close();\n }\n };\n\n window.addEventListener('click', handleClickOutsideContent, true);\n\n return () => {\n window.removeEventListener('click', handleClickOutsideContent, true);\n };\n }, [close, isOpen, shouldCloseOnClickOutsideContent]);\n\n if (!isOpen) {\n return null;\n }\n\n return (\n \n \n \n \n
\n \n \n {showCloseButton && (\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\nexport default Modal;\n","import { PropsWithChildren, useEffect, useMemo } from 'react';\nimport { createPortal } from 'react-dom';\n\ninterface Props {\n readonly mountId: string;\n}\n\nconst Portal = ({ mountId, children }: PropsWithChildren) => {\n const containerElement = useMemo(() => document.createElement('div'), []);\n\n useEffect(() => {\n document.getElementById(mountId)?.appendChild(containerElement);\n\n return () => {\n document.getElementById(mountId)?.removeChild(containerElement);\n };\n }, [mountId, containerElement]);\n\n return createPortal(children, containerElement);\n};\n\nexport default Portal;\n","import { RefObject, useEffect, useRef, useState } from 'react';\n\nconst useVerticalGrabScroll = (\n containerRef: RefObject,\n containerHeight: number,\n contentHeight: number,\n disabled = false\n) => {\n const [isMouseDown, setIsMouseDown] = useState(false);\n const mouseScrollPosition = useRef<{ top: number; y: number }>({\n top: 0,\n y: 0,\n });\n\n useEffect(() => {\n const container = containerRef.current;\n if (!container?.clientWidth) return;\n\n if (containerHeight >= contentHeight || disabled) {\n container.style.cursor = 'inherit';\n return;\n }\n\n if (isMouseDown) {\n container.style.cursor = 'grabbing';\n return;\n }\n\n container.style.cursor = 'grab';\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [containerHeight, contentHeight, isMouseDown, disabled]);\n\n useEffect(() => {\n mouseScrollPosition.current = { top: 0, y: 0 };\n const container = containerRef.current;\n\n if (!container) return () => ({});\n if (disabled) {\n container.scrollTop = 0;\n\n return () => ({});\n }\n\n const mouseMoveHandler = (e: MouseEvent) => {\n const dy = e.clientY - mouseScrollPosition.current.y;\n\n container.scrollTop = mouseScrollPosition.current.top - dy;\n };\n\n const mouseUpHandler = () => {\n document.removeEventListener('mousemove', mouseMoveHandler);\n document.removeEventListener('mouseup', mouseUpHandler);\n setIsMouseDown(false);\n };\n\n const mouseDownHandler = (e: MouseEvent) => {\n mouseScrollPosition.current = {\n top: container.scrollTop,\n y: e.clientY,\n };\n setIsMouseDown(true);\n\n document.addEventListener('mousemove', mouseMoveHandler);\n document.addEventListener('mouseup', mouseUpHandler);\n };\n\n container.addEventListener('mousedown', mouseDownHandler);\n\n return () => {\n container.removeEventListener('mousedown', mouseDownHandler);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [disabled]);\n};\n\nexport default useVerticalGrabScroll;\n","import ScrollProgressEnum from '@models/enums/ScrollProgressEnum';\nimport { useMotionValueEvent, useScroll } from 'framer-motion';\nimport { RefObject, useEffect, useState } from 'react';\n\nconst useVerticalScrollShadows = (\n containerRef: RefObject,\n containerHeight: number,\n contentHeight: number,\n disabled = false\n) => {\n const { scrollYProgress } = useScroll({\n container: containerRef,\n });\n const [isStart, setIsStart] = useState(true);\n const [isEnd, setIsEnd] = useState(false);\n const [scrollProgress, setScrollProgress] = useState(\n ScrollProgressEnum.Start\n );\n const threshold = 0.05;\n\n useMotionValueEvent(scrollYProgress, 'change', (value: number) => {\n if (value < threshold) {\n setScrollProgress(ScrollProgressEnum.Start);\n }\n\n if (value >= threshold && value <= 1 - threshold) {\n setScrollProgress(ScrollProgressEnum.Middle);\n }\n\n if (value > 1 - threshold) {\n setScrollProgress(ScrollProgressEnum.End);\n }\n });\n\n useEffect(() => {\n if (!containerHeight || disabled) return;\n\n if (containerHeight >= contentHeight) {\n setIsStart(true);\n setIsEnd(true);\n\n return;\n }\n\n if (scrollProgress === ScrollProgressEnum.Start) {\n setIsStart(true);\n setIsEnd(false);\n }\n\n if (scrollProgress === ScrollProgressEnum.Middle) {\n setIsStart(false);\n setIsEnd(false);\n }\n\n if (scrollProgress === ScrollProgressEnum.End) {\n setIsEnd(true);\n }\n }, [disabled, scrollProgress, containerHeight, contentHeight]);\n\n return { isStart, isEnd };\n};\n\nexport default useVerticalScrollShadows;\n","import useResizeObserver from '@utils/hooks/useResizeObserver';\nimport useVerticalGrabScroll from '@utils/hooks/useVerticalGrabScroll';\nimport useVerticalScrollShadows from '@utils/hooks/useVerticalScrollShadows';\nimport classNames from 'classnames';\nimport { AnimatePresence, motion } from 'framer-motion';\nimport {\n PropsWithChildren,\n forwardRef,\n useImperativeHandle,\n useRef,\n} from 'react';\n\nexport interface IShadowContainerVerticalRef {\n readonly scrollTo: (offset: number, behavior?: ScrollBehavior) => void;\n}\n\ninterface Props {\n readonly className?: string;\n readonly customScrollbarTheme?: 'light' | 'dark';\n readonly hideScrollbar?: boolean;\n readonly shadowColour?: string;\n readonly disableScroll?: boolean;\n readonly shadowHeight?: string;\n}\n\nconst ShadowContainerVertical = forwardRef<\n IShadowContainerVerticalRef,\n PropsWithChildren\n>(\n (\n {\n children,\n className,\n customScrollbarTheme,\n disableScroll = false,\n shadowColour = 'from-white dark:from-black-100',\n hideScrollbar = true,\n shadowHeight = 'h-10',\n },\n ref\n ) => {\n const containerRef = useRef(null);\n const [containerRefCallback, { height: containerHeight }] =\n useResizeObserver();\n const [contentRefCallback, { height: contentHeight }] = useResizeObserver();\n const { isStart, isEnd } = useVerticalScrollShadows(\n containerRef,\n containerHeight,\n contentHeight,\n disableScroll\n );\n useVerticalGrabScroll(\n containerRef,\n containerHeight,\n contentHeight,\n disableScroll\n );\n\n useImperativeHandle(ref, () => ({\n scrollTo: (topOffset: number, behavior: ScrollBehavior = 'smooth') => {\n containerRef.current?.scrollTo({ top: topOffset, behavior });\n },\n }));\n\n return (\n
\n \n {!isStart && !disableScroll && (\n \n )}\n \n\n {\n containerRef.current = node;\n containerRefCallback(node);\n }}\n // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex\n tabIndex={0}\n className={classNames(\n {\n 'scrollbar-hide': hideScrollbar,\n 'overflow-y-hidden': disableScroll,\n 'overflow-y-auto': !disableScroll,\n 'custom-scrollbar': !disableScroll && customScrollbarTheme,\n 'custom-scrollbar--light': customScrollbarTheme === 'light',\n 'custom-scrollbar--dark': customScrollbarTheme === 'dark',\n },\n 'relative h-full select-none'\n )}\n >\n
{children}
\n
\n\n \n {!isEnd && !disableScroll && (\n \n )}\n \n \n );\n }\n);\n\nexport default ShadowContainerVertical;\n","import { IAuthor } from '@models/IAuthor';\nimport { IListingComponent } from '@models/IListingComponent';\nimport AuthorCard from '@molecules/AuthorCard/AuthorCard';\nimport ListingResultsContainer from '@molecules/ListingResultsContainer/ListingResultsContainer';\nimport ListingTopBar from '@molecules/ListingTopBar/ListingTopBar';\nimport LoadMoreListing from '@molecules/LoadMoreListing/LoadMoreListing';\nimport useListingComponentProps from '@utils/hooks/useListingComponentProps';\nimport useRefocus from '@utils/hooks/useRefocus';\n\ninterface Props extends IListingComponent {\n readonly type: string[];\n readonly campaign: string[];\n readonly specialism: string[];\n readonly sectionTitle: string;\n readonly showExpandedFilters?: boolean;\n readonly showProfilePhotos?: boolean;\n}\n\nconst AuthorTypeListings = (props: Props) => {\n const {\n campaign,\n componentName,\n showExpandedFilters,\n specialism,\n sectionTitle,\n showProfilePhotos = false,\n type,\n } = props;\n\n const preFilterParams = {\n AuthorType: type,\n GenreList: specialism,\n CampaignList: campaign,\n };\n\n const { results, ...listingProps } = useListingComponentProps({\n ...props,\n pageSize: 9,\n preFilterParams,\n });\n\n const placeholderRef = useRefocus(results);\n const placeIndex = listingProps.pageSize * listingProps.pageNumber;\n\n return (\n \n
\n {sectionTitle && (\n

\n {sectionTitle}\n

\n )}\n\n \n
\n\n \n
\n {(results as IAuthor[]).map((author, index) => (\n 0 && placeIndex === index ? placeholderRef : null\n }\n >\n \n
\n ))}\n \n \n\n {results?.length > 0 && (\n
\n
\n \n
\n
\n )}\n \n );\n};\n\nexport default AuthorTypeListings;\n","enum ErrorBannerNotificationEnum {\n AccountDeleteAddress = 'accountDeleteAddress',\n AccountDefaultAddressUpdate = 'defaultAddressUpdate',\n AccountDeleteContactSubmit = 'deleteContactSubmit',\n AccountGetOrderDetails = 'accountGetOrderDetails',\n ShippingPickUpLocations = 'shippingPickUpLocations',\n LightboxOuterImages = 'lightboxOuterImages',\n MiniBasketDetails = 'miniBasketDetails',\n OrderSummaryRemoveVoucher = 'orderSummaryRemoveVoucher',\n ProductDetailsNotifyMe = 'productDetailsNotifyMe',\n CartRemoveItem = 'cartRemoveItem',\n NewsletterSignupBanner = 'newsletterSignupBanner',\n NewsletterSignupPopup = 'newsletterSignupPopup',\n OnlineRetailersData = 'onlineRetailersData',\n SearchResults = 'searchResults',\n}\n\nexport default ErrorBannerNotificationEnum;\n","const enum IconSizeEnum {\n xs = '.5rem',\n sm = '.75rem',\n md = '1rem',\n lg = '1.5rem',\n xl = '1.75rem',\n}\n\nexport default IconSizeEnum;\n","enum ScrollProgressEnum {\n Start = 'Start',\n Middle = 'Middle',\n End = 'End',\n}\n\nexport default ScrollProgressEnum;\n","import { IAriaLabels } from '@models/IAriaLabels';\nimport create from 'zustand';\n\ninterface IAriaLabelsState {\n ariaLabels: IAriaLabels;\n setAriaLabels: (ariaLabels: IAriaLabels) => void;\n}\n\nexport const initialAriaLabels: IAriaLabels = {\n backToFirstLevelNavigationAriaLabel: 'Back to first level of navigation',\n breadcrumbAriaLabel: 'Breadcrumb navigation',\n breadcrumbFooterAriaLabel: 'Breadcrumb footer navigation',\n clearFiltersAriaLabel: 'Clear filters',\n closeMenuAriaLabel: 'Close menu',\n closeAddressListAriaLabel: 'Close address list',\n closeMobileNavigationAriaLabel: 'Close navigation',\n closeModalAriaLabel: 'Close Modal',\n closeSignUpFormAriaLabel: 'Close signup form',\n closeSiteNotificationAriaLabel: 'Close site notification',\n copyToClipboardAriaLabel: 'Copy to clipboard',\n editOrDeleteAriaLabel: 'Edit or delete',\n mainNavigationAriaLabel: 'Main navigation',\n moreInformationAriaLabel: 'More information',\n nextAriaLabel: 'Go to next slide',\n openAddressListAriaLabel: 'Open address list',\n openImageInFullScreenAriaLabel: 'Open image in full screen',\n openMenuAriaLabel: 'Open menu',\n overlayToCloseDesktopNavigationAriaLabel: 'Close overlay',\n pauseVideoAriaLabel: 'Pause video',\n playVideoAriaLabel: 'Play video',\n previousAriaLabel: 'Go to previous slide',\n searchAriaLabel: 'Search',\n shareToFacebookAriaLabel: 'Share to Facebook',\n shareToWhatsappAriaLabel: 'Share to Whatsapp',\n shareToXAriaLabel: 'Share to X',\n siteNotificationsAriaLabel: 'Site notifications banner',\n uspStripAriaLabel: 'Unique Selling Point Strip',\n zoomInAriaLabel: 'Zoom in',\n zoomOutAriaLabel: 'Zoom out',\n};\n\nconst useAriaLabelsStore = create((set) => ({\n ariaLabels: initialAriaLabels,\n setAriaLabels: (ariaLabels: IAriaLabels) => set({ ariaLabels }),\n}));\n\nexport default useAriaLabelsStore;\n","import ErrorBannerNotificationEnum from '@models/enums/ErrorBannerNotificationEnum';\nimport create from 'zustand';\n\ninterface IErrorBannerNotificationState {\n readonly errorBannerNotification: ErrorBannerNotificationEnum | null;\n readonly setErrorBannerNotification: (\n errorNotificationDisplay: ErrorBannerNotificationEnum | null\n ) => void;\n}\n\nconst useErrorNotificationStore = create(\n (set) => ({\n errorBannerNotification: null,\n setErrorBannerNotification: (\n errorBannerNotification: ErrorBannerNotificationEnum | null\n ) => set({ errorBannerNotification }),\n })\n);\n\nexport default useErrorNotificationStore;\n","const bodyScrollLock = (isScrollLocked: boolean) => {\n const documentElementScroll =\n document.documentElement.style.getPropertyValue('--scroll-y');\n const cacheLocator = documentElementScroll || `${window.scrollY}px`;\n\n if (!documentElementScroll) {\n window.addEventListener('scroll', () => {\n document.documentElement.style.setProperty(\n '--scroll-y',\n `${window.scrollY}px`\n );\n });\n }\n\n if (isScrollLocked) {\n const scrollY = cacheLocator;\n const { body } = document;\n body.style.position = 'fixed';\n body.style.top = `-${scrollY}`;\n } else {\n const { body } = document;\n body.style.position = '';\n const scrollY = body.style.top || cacheLocator;\n body.style.top = '';\n window.scrollTo(0, Math.abs(parseInt(scrollY || '0', 10)));\n }\n};\n\nexport default bodyScrollLock;\n","import { IAriaLabels } from '@models/IAriaLabels';\nimport useAriaLabelsStore, { initialAriaLabels } from '@state/AriaLabelsStore';\nimport { useEffect, useState } from 'react';\n\nconst useAriaLabels = () => {\n const [ariaLabels, setAriaLabels] = useState(initialAriaLabels);\n const ariaLabelsFromStore = useAriaLabelsStore((state) => state.ariaLabels);\n\n useEffect(() => {\n setAriaLabels(ariaLabelsFromStore);\n }, [ariaLabelsFromStore]);\n\n return ariaLabels;\n};\n\nexport default useAriaLabels;\n","import { useCallback, useRef, useState } from 'react';\n\nconst useResizeObserver = () => {\n const observerRef = useRef();\n const [resizeParameters, setResizeParameters] = useState({\n width: 0,\n height: 0,\n clientWidth: 0,\n clientHeight: 0,\n scrollWidth: 0,\n scrollHeight: 0,\n });\n\n const handleResize = useCallback((entries: ResizeObserverEntry[]) => {\n if (!Array.isArray(entries)) return;\n\n const entry = entries[0];\n\n setResizeParameters({\n width: entry?.contentRect.width ?? 0,\n height: entry?.contentRect.height ?? 0,\n clientWidth: entry?.target.clientWidth ?? 0,\n clientHeight: entry?.target.clientHeight ?? 0,\n scrollWidth: entry?.target.scrollWidth ?? 0,\n scrollHeight: entry?.target.scrollHeight ?? 0,\n });\n }, []);\n\n const ref = useCallback(\n (node: HTMLElement | null) => {\n if (observerRef.current && !node) {\n observerRef.current.disconnect();\n observerRef.current = undefined;\n }\n\n if (!observerRef.current && node) {\n observerRef.current = new ResizeObserver(handleResize);\n observerRef.current.observe(node);\n }\n },\n [handleResize]\n );\n\n return [ref, resizeParameters] as const;\n};\n\nexport default useResizeObserver;\n"],"names":["_ref","ariaLabel","className","color","onClick","size","IconSizeEnum","lg","dataTestId","closeModalAriaLabel","useAriaLabels","React","createElement","type","classNames","black","white","red","style","width","height","extraClasses","svgClasses","pulseContainerClasses","pulseItemClasses","trackColor","animationStyle","role","viewBox","fill","xmlns","d","onCloseCallback","children","contentClasses","crossColor","crossMarginsClassName","crossClasses","isOpen","modalClasses","setIsOpen","showCloseButton","transparent","isCloseButtonFixed","closeButtonIconSize","md","shouldCloseOnClickOutsideContent","shouldLockBody","contentRef","useRef","useEffect","bodyScrollLock","close","useCallback","keyboardClose","ev","key","window","addEventListener","removeEventListener","handleClickOutsideContent","current","contains","target","Portal","mountId","FocusTrap","focusTrapOptions","preventScroll","escapeDeactivates","motion","div","animate","opacity","exit","initial","transition","duration","ease","ref","Fragment","CloseButton","containerElement","useMemo","document","getElementById","appendChild","removeChild","createPortal","containerRef","containerHeight","contentHeight","disabled","arguments","length","undefined","isMouseDown","setIsMouseDown","useState","mouseScrollPosition","top","y","container","clientWidth","cursor","scrollTop","mouseMoveHandler","e","dy","clientY","mouseUpHandler","mouseDownHandler","scrollYProgress","useScroll","isStart","setIsStart","isEnd","setIsEnd","scrollProgress","setScrollProgress","ScrollProgressEnum","Start","threshold","useMotionValueEvent","value","Middle","End","forwardRef","customScrollbarTheme","disableScroll","shadowColour","hideScrollbar","shadowHeight","containerRefCallback","useResizeObserver","contentRefCallback","useVerticalScrollShadows","useVerticalGrabScroll","useImperativeHandle","scrollTo","topOffset","behavior","AnimatePresence","span","node","tabIndex","props","campaign","componentName","showExpandedFilters","specialism","sectionTitle","showProfilePhotos","preFilterParams","AuthorType","GenreList","CampaignList","results","listingProps","useListingComponentProps","pageSize","placeholderRef","useRefocus","placeIndex","pageNumber","ListingTopBar","_extends","pageType","ListingResultsContainer","resultsClassName","noResultsClassName","errorClassName","map","author","index","authorName","link","url","AuthorCard","initials","thumbnail","LoadMoreListing","ErrorBannerNotificationEnum","initialAriaLabels","backToFirstLevelNavigationAriaLabel","breadcrumbAriaLabel","breadcrumbFooterAriaLabel","clearFiltersAriaLabel","closeMenuAriaLabel","closeAddressListAriaLabel","closeMobileNavigationAriaLabel","closeSignUpFormAriaLabel","closeSiteNotificationAriaLabel","copyToClipboardAriaLabel","editOrDeleteAriaLabel","mainNavigationAriaLabel","moreInformationAriaLabel","nextAriaLabel","openAddressListAriaLabel","openImageInFullScreenAriaLabel","openMenuAriaLabel","overlayToCloseDesktopNavigationAriaLabel","pauseVideoAriaLabel","playVideoAriaLabel","previousAriaLabel","searchAriaLabel","shareToFacebookAriaLabel","shareToWhatsappAriaLabel","shareToXAriaLabel","siteNotificationsAriaLabel","uspStripAriaLabel","zoomInAriaLabel","zoomOutAriaLabel","create","set","ariaLabels","setAriaLabels","errorBannerNotification","setErrorBannerNotification","isScrollLocked","documentElementScroll","documentElement","getPropertyValue","cacheLocator","scrollY","setProperty","body","position","Math","abs","parseInt","ariaLabelsFromStore","useAriaLabelsStore","state","observerRef","resizeParameters","setResizeParameters","clientHeight","scrollWidth","scrollHeight","handleResize","entries","Array","isArray","entry","contentRect","disconnect","ResizeObserver","observe"],"sourceRoot":""}