\n {title && (\n
\n {title}\n
\n )}\n\n
0,\n }\n )}\n dangerouslySetInnerHTML={{ __html: text }}\n />\n\n {isInitialLoading &&
}\n\n {retailers.length > 0 && (\n
\n {retailers.map(({ retailerUrl, logo, retailerName }, index) => (\n
handleClick(retailerName)}\n className=\"h-[162px] md:h-[120px] xl:h-[162px] justify-center px-10 py-7.5\"\n dataTestId={`CT-66-Online-Retailers-Link-Card-${index}`}\n >\n {logo && (\n \n )}\n\n {!logo && retailerName && (\n \n {retailerName}\n
\n )}\n \n ))}\n
\n )}\n\n {loadMoreLabel && showLoadMoreButton && (\n
\n {\n fetchData();\n }}\n />\n
\n )}\n
\n \n );\n};\n\nexport default OnlineRetailers;\n","const enum BreakpointEnum {\n Small = 'sm',\n Medium = 'md',\n Large = 'lg',\n XLarge = 'xl',\n}\n\nexport default BreakpointEnum;\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","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","const updateDataLayer = (eventPayload: Record) => {\n if (typeof window !== 'undefined') {\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push(eventPayload);\n }\n};\n\nexport default updateDataLayer;\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 BreakpointEnum from '@models/enums/BreakpointEnum';\nimport { useCallback, useEffect, useState } from 'react';\n\nconst getCurrentBreakpoint = () => {\n const breakpoints = { tablet: 768, desktop: 1024, lgDesktop: 1440 };\n const width = window.innerWidth;\n\n if (width < breakpoints.tablet) {\n return BreakpointEnum.Small;\n }\n if (width >= breakpoints.tablet && width < breakpoints.desktop) {\n return BreakpointEnum.Medium;\n }\n if (width >= breakpoints.desktop && width < breakpoints.lgDesktop) {\n return BreakpointEnum.Large;\n }\n return BreakpointEnum.XLarge;\n};\n\nconst useBreakpoint = () => {\n const [screen, setScreen] = useState();\n\n const resizeHandler = useCallback(\n () => setScreen(getCurrentBreakpoint()),\n []\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"],"names":["_ref","ariaLabel","className","color","onClick","size","IconSizeEnum","lg","dataTestId","closeModalAriaLabel","useAriaLabels","React","createElement","type","classNames","black","white","red","style","width","height","children","classes","epiEdit","image","imageClasses","imageRef","lazyLoad","progressiveLoad","sizes","mobileSource","mobile","tabletSource","tablet","desktopSource","desktop","largeDesktopSource","largeDesktop","breakpoint","useBreakpoint","isLoaded","setIsLoaded","useState","url","currentSrc","BreakpointEnum","Small","Medium","Large","XLarge","srcSet","_extends","ref","alt","altText","length","draggable","loading","onLoad","src","originalUrl","link","useSmallCard","linkProps","cardClasses","href","target","open","loadMoreLabel","loadLessLabel","_type","isLightMode","props","motion","span","animate","rotate","Icon","name","colorClassName","isLoading","Modal","isOpen","transparent","showCloseButton","modalClasses","shouldLockBody","LoadingSpinner","extraClasses","svgClasses","pulseContainerClasses","pulseItemClasses","trackColor","animationStyle","role","viewBox","fill","xmlns","d","onCloseCallback","contentClasses","crossColor","crossMarginsClassName","crossClasses","setIsOpen","isCloseButtonFixed","closeButtonIconSize","md","shouldCloseOnClickOutsideContent","contentRef","useRef","useEffect","bodyScrollLock","close","useCallback","keyboardClose","ev","key","window","addEventListener","removeEventListener","handleClickOutsideContent","current","contains","Portal","mountId","FocusTrap","focusTrapOptions","preventScroll","escapeDeactivates","div","opacity","exit","initial","transition","duration","ease","Fragment","CloseButton","containerElement","useMemo","document","getElementById","appendChild","removeChild","createPortal","async","endpoint","language","from","pageSize","query","qs","siteLanguageCode","data","axios","onlineRetailersEndpoint","text","title","retailers","setRetailers","showLoadMoreButton","setShowLoadMoreButton","isBreakpointInitialized","setIsBreakpointInitialized","isInitialLoading","setIsInitialLoading","setIsLoading","isMobile","setErrorBannerNotification","useErrorNotificationStore","fetchData","items","hasNextPage","onlineRetailersSearch","prevRetailers","error","ErrorBannerNotificationEnum","OnlineRetailersData","LoadingOverlay","dangerouslySetInnerHTML","__html","map","_ref2","index","retailerUrl","logo","retailerName","LinkCard","updateDataLayer","event","content_type","store_name","handleClick","Image","LoadMoreButton","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","isScrollLocked","documentElementScroll","documentElement","getPropertyValue","cacheLocator","scrollY","setProperty","body","position","top","scrollTo","Math","abs","parseInt","eventPayload","dataLayer","push","ariaLabelsFromStore","useAriaLabelsStore","state","getCurrentBreakpoint","breakpoints","innerWidth","screen","setScreen","resizeHandler"],"sourceRoot":""}