{"version":3,"file":"ImageWithProductFeature-Chunk-ddfc1e585ced97d04b2f.js","mappings":"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","sources":["webpack://nikon-client/./components/atoms/CloseButton/CloseButton.tsx","webpack://nikon-client/./components/atoms/ComponentHeader/ComponentHeader.tsx","webpack://nikon-client/./components/atoms/Modal/Modal.tsx","webpack://nikon-client/./components/atoms/Portal/Portal.tsx","webpack://nikon-client/./components/organisms/ImageWithProductFeature/ImageWithProductFeature.tsx","webpack://nikon-client/./models/enums/BreakpointEnum.ts","webpack://nikon-client/./models/enums/IconSizeEnum.ts","webpack://nikon-client/./state-management/AriaLabelsStore.ts","webpack://nikon-client/./utility/helpers/bodyScrollLock.ts","webpack://nikon-client/./utility/helpers/gtm.ts","webpack://nikon-client/./utility/hooks/useAriaLabels.ts","webpack://nikon-client/./utility/hooks/useBreakpoint.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 Button from '@atoms/Button/Button';\nimport Icon from '@atoms/Icon/Icon';\nimport NavButton from '@atoms/NavButton/NavButton';\nimport HorizontalDirectionEnum from '@models/enums/HorizontalDirectionEnum';\nimport { ILink } from '@models/ILink';\nimport updateDataLayer from '@utils/helpers/gtm';\nimport useMediaQuery from '@utils/hooks/useMediaQuery';\nimport classNames from 'classnames';\n\ninterface Props {\n title?: string;\n subtitle?: string;\n cta?: ILink;\n showYellowTick?: boolean;\n subtitleClass?: string;\n hasTextMaxWidth?: boolean;\n dataTestId?: string;\n navButtonId?: string;\n}\n\nconst ComponentHeader = ({\n title,\n subtitle,\n cta,\n showYellowTick = false,\n subtitleClass = 'body-one',\n hasTextMaxWidth = false,\n dataTestId,\n navButtonId,\n}: Props) => {\n const isMobile = useMediaQuery(1024);\n\n return (\n \n {(title || subtitle) && (\n \n
\n {title &&

{title}

}\n {showYellowTick && (\n \n )}\n
\n {subtitle &&

{subtitle}

}\n {cta?.url && navButtonId && (\n {\n updateDataLayer({\n event: 'selectContent',\n content_type: cta.name,\n });\n }}\n className=\"w-fit mt-1.5\"\n />\n )}\n \n )}\n {(cta?.url || navButtonId) && (\n \n {navButtonId && (\n
\n \n \n
\n )}\n {cta?.url && !navButtonId && (\n {\n updateDataLayer({\n event: 'selectContent',\n content_type: cta.name,\n });\n }}\n />\n )}\n \n )}\n \n );\n};\n\nexport default ComponentHeader;\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 ComponentHeader from '@atoms/ComponentHeader/ComponentHeader';\nimport { IImageWithProductFeature } from '@models/IImageWithProductFeature';\nimport ImageLightBox from '@molecules/ImageLightBox/ImageLightBox';\nimport ProductCard from '@molecules/ProductCard/ProductCard';\nimport useMediaQuery from '@utils/hooks/useMediaQuery';\nimport useResizeObserver from '@utils/hooks/useResizeObserver';\nimport classNames from 'classnames';\n\nconst ImageWithProductFeature = ({\n image,\n product,\n title,\n body,\n cta,\n}: IImageWithProductFeature) => {\n const isMobile = useMediaQuery(1024);\n const isPortrait = image?.image?.desktop\n ? image.image.desktop.height > image.image.desktop.width\n : false;\n const isComponentHeaderDisplayed = !isPortrait && (title || body || cta?.url);\n const [imageDescriptionRef, { height: imageDescriptionHeight }] =\n useResizeObserver();\n\n return (\n
\n {isComponentHeaderDisplayed && (\n \n )}\n\n \n \n {image && (\n
\n \n {image.description && (\n \n )}\n
\n )}\n \n\n \n \n {product && (\n \n )}\n \n \n \n
\n );\n};\n\nexport default ImageWithProductFeature;\n","const enum BreakpointEnum {\n Small = 'sm',\n Medium = 'md',\n Large = 'lg',\n XLarge = 'xl',\n}\n\nexport default BreakpointEnum;\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","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","title","subtitle","cta","showYellowTick","subtitleClass","hasTextMaxWidth","navButtonId","isMobile","useMediaQuery","url","Icon","name","colorClassName","Button","link","linkCallback","updateDataLayer","event","content_type","NavButton","id","direction","HorizontalDirectionEnum","Left","Right","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","image","product","body","isPortrait","desktop","isComponentHeaderDisplayed","imageDescriptionRef","imageDescriptionHeight","useResizeObserver","ComponentHeader","ImageLightBox","_extends","contentIds","meta","contentLink","imageClasses","description","dangerouslySetInnerHTML","__html","paddingBottom","ProductCard","classes","BreakpointEnum","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","isScrollLocked","documentElementScroll","documentElement","getPropertyValue","cacheLocator","scrollY","setProperty","position","top","scrollTo","Math","abs","parseInt","eventPayload","dataLayer","push","useState","ariaLabelsFromStore","useAriaLabelsStore","state","getCurrentBreakpoint","breakpoints","innerWidth","Small","Medium","Large","XLarge","useBreakpoint","screen","setScreen","resizeHandler"],"sourceRoot":""}