{"version":3,"file":"ImageFeature-Chunk-0412f58e3bbd467f0e4b.js","mappings":"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","sources":["webpack://nikon-client/./components/atoms/CloseButton/CloseButton.tsx","webpack://nikon-client/./components/atoms/Image/Image.tsx","webpack://nikon-client/./components/atoms/Modal/Modal.tsx","webpack://nikon-client/./components/atoms/Portal/Portal.tsx","webpack://nikon-client/./components/atoms/Video/Video.tsx","webpack://nikon-client/./components/molecules/InViewVideo/InViewVideo.tsx","webpack://nikon-client/./components/organisms/ImageFeature/ImageFeature.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","webpack://nikon-client/./node_modules/.pnpm/framer-motion@10.18.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/framer-motion/dist/es/render/dom/viewport/index.mjs","webpack://nikon-client/./node_modules/.pnpm/framer-motion@10.18.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/framer-motion/dist/es/utils/use-in-view.mjs"],"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 BreakpointEnum from '@models/enums/BreakpointEnum';\nimport { IImage } from '@models/IImage';\nimport useBreakpoint from '@utils/hooks/useBreakpoint';\nimport classNames from 'classnames';\nimport { PropsWithChildren, RefObject, useState } from 'react';\n\ninterface Props {\n readonly classes?: string;\n readonly dataTestId?: string;\n readonly epiEdit?: string;\n readonly image?: IImage;\n readonly imageClasses?: string;\n readonly imageRef?:\n | RefObject\n | ((node: HTMLElement | null) => void);\n readonly lazyLoad?: boolean;\n readonly progressiveLoad?: boolean;\n readonly sizes?: string;\n}\n\nconst Image = ({\n children,\n classes,\n dataTestId,\n epiEdit,\n image,\n imageClasses,\n imageRef,\n lazyLoad = true,\n progressiveLoad = true,\n sizes = '',\n}: PropsWithChildren) => {\n const mobileSource = image?.mobile;\n const tabletSource = image?.tablet;\n const desktopSource = image?.desktop;\n const largeDesktopSource = image?.largeDesktop;\n const breakpoint = useBreakpoint() as BreakpointEnum;\n const [isLoaded, setIsLoaded] = useState(false);\n\n if (!desktopSource?.url) return null;\n\n const currentSrc = {\n [BreakpointEnum.Small]: mobileSource,\n [BreakpointEnum.Medium]: tabletSource,\n [BreakpointEnum.Large]: desktopSource,\n [BreakpointEnum.XLarge]: largeDesktopSource,\n };\n\n return (\n \n \n setIsLoaded(true)}\n sizes={sizes}\n src={\n isLoaded && progressiveLoad\n ? currentSrc[breakpoint]?.url\n : mobileSource?.url\n }\n height={currentSrc[breakpoint]?.height}\n width={currentSrc[breakpoint]?.width}\n srcSet={`${mobileSource?.originalUrl} 376w, ${tabletSource?.originalUrl} 768w, ${desktopSource?.originalUrl} 1024w, ${largeDesktopSource?.originalUrl} 1440w`}\n {...(dataTestId && { 'data-testid': dataTestId })}\n />\n {isLoaded && children}\n \n );\n};\n\nexport default Image;\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 loadable from '@loadable/component';\nimport { AspectRatioType } from '@models/IAspectRatio';\nimport { IVideoAttributes } from '@models/IVideoAttributes';\nimport { IVideoSubtitles } from '@models/IVideoSubtitles';\nimport updateDataLayer from '@utils/helpers/gtm';\nimport classNames from 'classnames';\nimport { motion, MotionValue } from 'framer-motion';\nimport {\n ChangeEvent,\n ForwardedRef,\n forwardRef,\n useEffect,\n useState,\n} from 'react';\nimport { Config } from 'react-player';\n\nconst ReactPlayer = loadable(\n () => import(/* webpackChunkName: \"react-player\" */ 'react-player')\n);\n\ninterface Props {\n readonly classes?: string;\n readonly config?: Config;\n readonly controls?: boolean;\n readonly epiEdit?: string;\n readonly isPlaying?: boolean;\n readonly subtitles?: IVideoSubtitles[];\n readonly title?: string;\n readonly url?: string;\n readonly videoAttributes?: IVideoAttributes;\n readonly videoRatio?: AspectRatioType;\n readonly videoSource?: string;\n readonly videoWrapperOpacityProgress?: MotionValue;\n readonly onEndedVideo?: () => void;\n readonly onVideoReady?: () => void;\n readonly onVideoStart?: () => void;\n readonly onVolumeChange?: (videoElement: HTMLVideoElement) => void;\n readonly setIsPlaying?: (playing: boolean) => void;\n}\n\nconst Video = forwardRef(\n (\n {\n classes,\n config,\n controls = true,\n epiEdit,\n isPlaying,\n title,\n subtitles,\n videoAttributes,\n videoRatio = 'aspect-video',\n videoSource,\n videoWrapperOpacityProgress,\n onEndedVideo,\n onVideoReady,\n onVideoStart,\n onVolumeChange,\n setIsPlaying,\n }: Props,\n ref\n ) => {\n const [prevProgress, setPrevProgress] = useState(0);\n const [isBrowser, setIsBrowser] = useState(false);\n\n useEffect(() => {\n setIsBrowser(typeof window !== 'undefined');\n }, []);\n\n useEffect(() => {\n setPrevProgress(0);\n }, [title]);\n\n const handleProgressUpdate = (progress: string) => {\n updateDataLayer({\n event: 'videoInteraction',\n video_interaction: 'video_progress',\n video_progress: progress,\n video_title: title,\n });\n };\n\n const handleVideoAction = (action: string) => {\n updateDataLayer({\n event: 'videoInteraction',\n video_interaction:\n action === 'START' ? 'video_start' : 'video_complete',\n video_progress: action === 'START' ? 'video_start' : 'video_complete',\n video_title: title,\n });\n };\n\n const updateVideoProgressData = (progress: number) => {\n if (prevProgress < 0.25 && progress > 0.25) {\n handleProgressUpdate('25%');\n }\n if (prevProgress < 0.5 && progress > 0.5) {\n handleProgressUpdate('50%');\n }\n if (prevProgress < 0.75 && progress > 0.75) {\n handleProgressUpdate('75%');\n }\n if (prevProgress > 0.9 && progress < 0.1) {\n handleVideoAction('COMPLETE');\n }\n setPrevProgress(progress);\n };\n\n if (!videoSource) return null;\n\n return (\n }\n className={classNames(classes, videoRatio, 'w-full')}\n data-epi-property-name={epiEdit}\n data-testid={isPlaying ? 'video-playing' : 'video-paused'}\n style={{\n opacity: videoWrapperOpacityProgress ?? 1,\n }}\n >\n {isBrowser && (\n updateVideoProgressData(played)}\n onStart={() => {\n onVideoStart?.();\n handleVideoAction('START');\n }}\n onEnded={() => {\n onEndedVideo?.();\n handleVideoAction('COMPLETE');\n }}\n onPause={() => setIsPlaying?.(false)}\n onPlay={() => setIsPlaying?.(true)}\n onReady={onVideoReady}\n config={{\n ...config,\n file: {\n tracks: subtitles || [],\n },\n }}\n onVolumeChange={(event: ChangeEvent) => {\n onVolumeChange?.(event.target);\n }}\n {...videoAttributes}\n />\n )}\n \n );\n }\n);\n\nexport default Video;\n","import Icon from '@atoms/Icon/Icon';\nimport Image from '@atoms/Image/Image';\nimport Video from '@atoms/Video/Video';\nimport { AspectRatioType } from '@models/IAspectRatio';\nimport { IImage } from '@models/IImage';\nimport { IMeta } from '@models/IMeta';\nimport { IVideo } from '@models/IVideo';\nimport { IVideoSubtitles } from '@models/IVideoSubtitles';\nimport useAriaLabels from '@utils/hooks/useAriaLabels';\nimport classNames from 'classnames';\nimport { AnimatePresence, motion, MotionValue, useInView } from 'framer-motion';\nimport { RefObject, useEffect, useRef, useState } from 'react';\n\ninterface Props {\n readonly autoPlay?: boolean;\n readonly controls?: boolean;\n readonly coverImage?: IImage;\n readonly dataTestId?: string;\n readonly hasInVideoPlayButton?: boolean;\n readonly inVideoPlayButtonClassName?: string;\n readonly inVideoPlayButtonPositionClassName?: string;\n readonly inVideoPlayButtonTabIndex?: number;\n readonly inViewThreshold?: number;\n readonly meta?: IMeta;\n readonly playOnCoverClick?: boolean;\n readonly subtitles?: IVideoSubtitles[];\n readonly video: IVideo;\n readonly videoClasses?: string;\n readonly videoRatio?: AspectRatioType;\n readonly videoWrapperOpacityProgress?: MotionValue;\n readonly wrapperClasses?: string;\n readonly onFocusCallback?: (e: React.FocusEvent) => void;\n}\n\nconst InViewVideo = ({\n autoPlay = false,\n controls,\n coverImage,\n dataTestId = 'In-View-Video',\n hasInVideoPlayButton,\n inVideoPlayButtonClassName,\n inVideoPlayButtonPositionClassName = 'bottom-5 left-5',\n inVideoPlayButtonTabIndex = 0,\n inViewThreshold = 0.5,\n meta,\n onFocusCallback,\n playOnCoverClick = true,\n subtitles,\n video,\n videoClasses,\n videoRatio,\n videoWrapperOpacityProgress,\n wrapperClasses,\n}: Props) => {\n const [isPlaying, setIsPlaying] = useState(false);\n const [isVideoManuallyPaused, setIsVideoManuallyPaused] = useState(false);\n const [isMuted, setIsMuted] = useState(false);\n const [videoReady, setVideoReady] = useState(false);\n const videoRef = useRef(null);\n const inView = useInView(videoRef, { amount: inViewThreshold });\n const isAutoPlaying = !hasInVideoPlayButton\n ? autoPlay\n : autoPlay && !isVideoManuallyPaused;\n const { playVideoAriaLabel, pauseVideoAriaLabel } = useAriaLabels();\n\n useEffect(() => {\n setIsPlaying(isAutoPlaying && inView);\n setIsMuted(!controls || !inView || isAutoPlaying);\n }, [isAutoPlaying, inView, controls]);\n\n return (\n \n }\n videoAttributes={{\n playsinline: true,\n muted: isMuted,\n playing: isPlaying,\n loop: true,\n }}\n onVideoReady={() => setVideoReady(true)}\n epiEdit={meta?.editHints?.video as string | undefined}\n controls={controls}\n videoRatio={videoRatio}\n subtitles={subtitles}\n isPlaying={isPlaying}\n setIsPlaying={setIsPlaying}\n videoWrapperOpacityProgress={videoWrapperOpacityProgress}\n onVolumeChange={(videoElement) => {\n setIsMuted(videoElement.volume === 0 || videoElement.muted);\n }}\n />\n\n {hasInVideoPlayButton && videoReady && (\n {\n setIsPlaying(!isPlaying);\n setIsVideoManuallyPaused(isPlaying);\n }}\n onKeyDown={(event) => {\n if (event.key === 'Enter' || event.key === ' ') {\n setIsPlaying(!isPlaying);\n setIsVideoManuallyPaused(isPlaying);\n }\n }}\n onFocus={onFocusCallback}\n data-testid={`${dataTestId}-${isPlaying ? 'Pause' : 'Play'}-Button`}\n data-video-control=\"toggle\"\n tabIndex={inVideoPlayButtonTabIndex}\n >\n \n \n )}\n\n {(coverImage || !isAutoPlaying) && (\n \n {!isPlaying && (\n playOnCoverClick && setIsPlaying(true)}\n className=\"group absolute inset-0 flex items-center justify-center hover:cursor-pointer\"\n >\n {coverImage && (\n \n )}\n\n {!isAutoPlaying && coverImage && (\n setIsPlaying(true)}\n data-testid={`${dataTestId}-Play-Button`}\n >\n
\n \n
\n \n )}\n \n )}\n
\n )}\n \n );\n};\n\nexport default InViewVideo;\n","import { IImageFeature } from '@models/IImageFeature';\nimport { ILightBoxImage } from '@models/ILightBoxImage';\nimport ImageLightBox from '@molecules/ImageLightBox/ImageLightBox';\nimport InViewVideo from '@molecules/InViewVideo/InViewVideo';\nimport classNames from 'classnames';\n\nconst getVideoOverlayClassName = (position: string) =>\n classNames('hidden lg:block absolute z-10 bg-white dark:bg-black-100', {\n 'top-0 h-13 xl:h-24 w-full': position === 'top',\n 'bottom-0 h-13 xl:h-24 w-full': position === 'bottom',\n 'left-0 top-[-50%] h-full w-13 xl:w-24 translate-y-[50%]':\n position === 'left',\n 'right-0 top-[-50%] h-full w-13 xl:w-24 translate-y-[50%]':\n position === 'right',\n });\n\nconst ImageFeature = ({\n alignment,\n mainImage,\n meta,\n secondaryMedia,\n text,\n title,\n}: IImageFeature) => {\n const isVideo = !!(\n secondaryMedia &&\n 'video' in secondaryMedia &&\n secondaryMedia?.video?.url\n );\n\n const isLeftAligned = alignment === 1;\n const isRightAligned = alignment !== 1;\n\n return (\n \n \n
\n {title && (\n \n {title}\n \n )}\n
\n\n \n \n \n\n \n {title && (\n \n {title}\n \n )}\n\n {isVideo ? (\n
\n
\n\n \n\n
\n\n div>video]:object-cover\"\n videoRatio=\"aspect-2/3\"\n inVideoPlayButtonPositionClassName={classNames(\n 'left-2.5 bottom-2.5 lg:bottom-15 xl:left-5 xl:bottom-[120px]',\n isLeftAligned && 'lg:left-15 xl:left-[120px]'\n )}\n dataTestId=\"CT-36-Image-Feature-Video\"\n />\n
\n ) : (\n \n )}\n\n {text && (\n
\n\n
\n {text && (\n \n )}\n
\n
\n \n );\n};\n\nexport default ImageFeature;\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","import { resolveElements } from '../utils/resolve-element.mjs';\n\nconst thresholds = {\n some: 0,\n all: 1,\n};\nfunction inView(elementOrSelector, onStart, { root, margin: rootMargin, amount = \"some\" } = {}) {\n const elements = resolveElements(elementOrSelector);\n const activeIntersections = new WeakMap();\n const onIntersectionChange = (entries) => {\n entries.forEach((entry) => {\n const onEnd = activeIntersections.get(entry.target);\n /**\n * If there's no change to the intersection, we don't need to\n * do anything here.\n */\n if (entry.isIntersecting === Boolean(onEnd))\n return;\n if (entry.isIntersecting) {\n const newOnEnd = onStart(entry);\n if (typeof newOnEnd === \"function\") {\n activeIntersections.set(entry.target, newOnEnd);\n }\n else {\n observer.unobserve(entry.target);\n }\n }\n else if (onEnd) {\n onEnd(entry);\n activeIntersections.delete(entry.target);\n }\n });\n };\n const observer = new IntersectionObserver(onIntersectionChange, {\n root,\n rootMargin,\n threshold: typeof amount === \"number\" ? amount : thresholds[amount],\n });\n elements.forEach((element) => observer.observe(element));\n return () => observer.disconnect();\n}\n\nexport { inView };\n","import { useState, useEffect } from 'react';\nimport { inView } from '../render/dom/viewport/index.mjs';\n\nfunction useInView(ref, { root, margin, amount, once = false } = {}) {\n const [isInView, setInView] = useState(false);\n useEffect(() => {\n if (!ref.current || (once && isInView))\n return;\n const onEnter = () => {\n setInView(true);\n return once ? undefined : () => setInView(false);\n };\n const options = {\n root: (root && root.current) || undefined,\n margin,\n amount,\n };\n return inView(ref.current, onEnter, options);\n }, [root, ref, margin, once, amount]);\n return isInView;\n}\n\nexport { useInView };\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","onCloseCallback","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","Fragment","CloseButton","containerElement","useMemo","document","getElementById","appendChild","removeChild","createPortal","ReactPlayer","loadable","forwardRef","config","controls","isPlaying","title","subtitles","videoAttributes","videoRatio","videoSource","videoWrapperOpacityProgress","onEndedVideo","onVideoReady","onVideoStart","onVolumeChange","setIsPlaying","prevProgress","setPrevProgress","isBrowser","setIsBrowser","handleProgressUpdate","progress","updateDataLayer","event","video_interaction","video_progress","video_title","handleVideoAction","action","playing","onProgress","_ref2","played","onStart","onEnded","onPause","onPlay","onReady","file","tracks","autoPlay","coverImage","hasInVideoPlayButton","inVideoPlayButtonClassName","inVideoPlayButtonPositionClassName","inVideoPlayButtonTabIndex","inViewThreshold","meta","onFocusCallback","playOnCoverClick","video","videoClasses","wrapperClasses","isVideoManuallyPaused","setIsVideoManuallyPaused","isMuted","setIsMuted","videoReady","setVideoReady","videoRef","inView","useInView","amount","isAutoPlaying","playVideoAriaLabel","pauseVideoAriaLabel","Video","playsinline","muted","loop","editHints","videoElement","volume","onKeyDown","onFocus","tabIndex","Icon","name","colorClassName","AnimatePresence","Image","getVideoOverlayClassName","position","alignment","mainImage","secondaryMedia","text","isVideo","isLeftAligned","isRightAligned","ImageLightBox","contentIds","contentLink","secondaryImage","InViewVideo","dangerouslySetInnerHTML","__html","initialAriaLabels","backToFirstLevelNavigationAriaLabel","breadcrumbAriaLabel","breadcrumbFooterAriaLabel","clearFiltersAriaLabel","closeMenuAriaLabel","closeAddressListAriaLabel","closeMobileNavigationAriaLabel","closeSignUpFormAriaLabel","closeSiteNotificationAriaLabel","copyToClipboardAriaLabel","editOrDeleteAriaLabel","mainNavigationAriaLabel","moreInformationAriaLabel","nextAriaLabel","openAddressListAriaLabel","openImageInFullScreenAriaLabel","openMenuAriaLabel","overlayToCloseDesktopNavigationAriaLabel","previousAriaLabel","searchAriaLabel","shareToFacebookAriaLabel","shareToWhatsappAriaLabel","shareToXAriaLabel","siteNotificationsAriaLabel","uspStripAriaLabel","zoomInAriaLabel","zoomOutAriaLabel","create","set","ariaLabels","setAriaLabels","isScrollLocked","documentElementScroll","documentElement","getPropertyValue","cacheLocator","scrollY","setProperty","body","top","scrollTo","Math","abs","parseInt","eventPayload","dataLayer","push","ariaLabelsFromStore","useAriaLabelsStore","state","getCurrentBreakpoint","breakpoints","innerWidth","screen","setScreen","resizeHandler","thresholds","some","all","root","margin","once","isInView","setInView","options","undefined","elementOrSelector","rootMargin","elements","activeIntersections","WeakMap","observer","IntersectionObserver","entries","forEach","entry","onEnd","get","isIntersecting","Boolean","newOnEnd","unobserve","delete","threshold","element","observe","disconnect"],"sourceRoot":""}