{"version":3,"file":"TiledSpringboard-Chunk-2275069418ec7a0c48df.js","mappings":"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","sources":["webpack://nikon-client/./components/atoms/Backdrop/Backdrop.tsx","webpack://nikon-client/./components/atoms/Button/Button.tsx","webpack://nikon-client/./components/atoms/CloseButton/CloseButton.tsx","webpack://nikon-client/./components/atoms/Drawer/Drawer.tsx","webpack://nikon-client/./components/atoms/Image/Image.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/molecules/TiledSpringboardCard/TiledSpringboardCard.tsx","webpack://nikon-client/./components/organisms/TiledSpringboard/TiledSpringboard.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/./utility/hooks/useMediaQuery.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/utils/use-is-mounted.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/components/AnimatePresence/PopChild.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/components/AnimatePresence/PresenceChild.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/components/AnimatePresence/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-force-update.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-unmount-effect.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/render/dom/utils/resolve-element.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/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 { 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 { 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 dataTestId?: string;\n readonly disabled?: boolean;\n readonly editHint?: string;\n readonly link?: ILink;\n readonly linkCallback?: () => void;\n readonly secondary?: boolean;\n readonly secondaryBackgroundClassName?: string;\n readonly isLightMode?: boolean;\n readonly inverted?: boolean;\n}\n\ntype ButtonProps = Props &\n DetailedHTMLProps, HTMLButtonElement>;\n\nconst Button = ({\n children,\n className,\n dataTestId,\n disabled = false,\n editHint,\n link,\n linkCallback,\n secondary = false,\n secondaryBackgroundClassName = 'bg-transparent',\n isLightMode,\n inverted = false,\n ...buttonProps\n}: PropsWithChildren) => {\n const buttonClasses = classNames(\n {\n 'bg-yellow py-1 px-4 text-black-100 hover:bg-yellow-100 focus:bg-yellow-500 active:bg-yellow-500':\n !disabled && !secondary && !inverted,\n //\n [`${secondaryBackgroundClassName} border border-yellow py-[3px] px-[15px] text-black-100 hover:border-yellow-100 hover:bg-yellow-100 hover:text-black-100 focus:border-yellow-500 focus:bg-yellow-500 active:border-yellow-500 active:bg-yellow-500 ${\n isLightMode\n ? ''\n : 'dark:text-white dark:hover:text-black-100 dark:focus:text-black-100 dark:active:text-black-100'\n }`]: !disabled && secondary && !inverted,\n //\n 'bg-grey text-grey-500 py-1 px-4': disabled,\n //\n 'bg-black text-white py-1 px-4 active:bg-grey-600 hover:bg-grey-600 focus:bg-grey-600':\n !disabled && !secondary && inverted,\n },\n 'cta rounded-full inline-block min-h-min select-none',\n className\n );\n\n return link?.url && (link?.name || children) && !disabled ? (\n \n {children || link.name}\n \n ) : (\n \n {children}\n \n );\n};\n\nexport default Button;\n","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 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 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 { 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 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 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 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={config}\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 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 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 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 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 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 Button from '@atoms/Button/Button';\nimport Drawer from '@atoms/Drawer/Drawer';\nimport Icon from '@atoms/Icon/Icon';\nimport Image from '@atoms/Image/Image';\nimport { ITiledSpringboardCard } from '@models/ITiledSpringboardCard';\nimport InViewVideo from '@molecules/InViewVideo/InViewVideo';\nimport updateDataLayer from '@utils/helpers/gtm';\nimport useMediaQuery from '@utils/hooks/useMediaQuery';\nimport classNames from 'classnames';\nimport { KeyboardEvent, MouseEvent, useMemo, useState } from 'react';\n\ntype Props = ITiledSpringboardCard & {\n readonly className?: string;\n};\n\nconst TiledSpringboardCard = ({\n title,\n coverImage,\n tabletCoverImage,\n mobileCoverImage,\n coverVideo,\n content,\n footNote,\n className,\n}: Props) => {\n const [isDrawerOpen, setIsDrawerOpen] = useState(false);\n\n const isTablet = useMediaQuery(1440);\n const isMobile = useMediaQuery(768);\n\n const imageSelect = useMemo(() => {\n if (mobileCoverImage && isMobile) return mobileCoverImage;\n if (tabletCoverImage && isTablet && !isMobile) return tabletCoverImage;\n return coverImage;\n }, [mobileCoverImage, isMobile, tabletCoverImage, isTablet, coverImage]);\n\n const handleInteraction = (\n e: MouseEvent | KeyboardEvent\n ) => {\n if (!(e.target as HTMLElement).hasAttribute('data-video-control')) {\n setIsDrawerOpen(true);\n updateDataLayer({\n event: 'springboard',\n content_type: 'tile_open',\n content_name: title,\n });\n }\n };\n\n return (\n <>\n {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleInteraction(e);\n }\n }}\n role=\"button\"\n tabIndex={0}\n >\n {imageSelect && (\n \n )}\n\n {coverVideo && (\n div>video]:object-cover h-full\"\n wrapperClasses=\"h-full\"\n autoPlay\n hasInVideoPlayButton\n inVideoPlayButtonPositionClassName=\"bottom-2.5 left-2.5 md:bottom-5 md:left-5\"\n controls={false}\n video={coverVideo}\n dataTestId=\"Tiled-Springboard-Card\"\n playOnCoverClick={false}\n />\n )}\n\n

\n {title}\n

\n\n \n \n\n {\n updateDataLayer({\n event: 'springboard',\n content_type: 'tile_close',\n content_name: title,\n });\n }}\n >\n
\n
\n {content.map(({ image, video, header, body, link }) => (\n
\n {image && (\n \n )}\n\n {video && (\n div>video]:object-cover mb-7.5 xl:mb-10\"\n autoPlay\n controls={false}\n video={video}\n hasInVideoPlayButton\n inVideoPlayButtonPositionClassName=\"left-2.5 bottom-10 xl:bottom-15 xl:left-[20px]\"\n dataTestId=\"Tiled-Springboard-Drawer-Card\"\n />\n )}\n\n

{header}

\n\n \n\n {link?.url && link?.name && (\n
\n ))}\n
\n\n {footNote && (\n \n )}\n
\n \n \n );\n};\n\nexport default TiledSpringboardCard;\n","import { ITiledSpringboardCard } from '@models/ITiledSpringboardCard';\nimport TiledSpringboardCard from '@molecules/TiledSpringboardCard/TiledSpringboardCard';\n\ninterface Props {\n readonly cards: [\n ITiledSpringboardCard,\n ITiledSpringboardCard,\n ITiledSpringboardCard,\n ITiledSpringboardCard,\n ITiledSpringboardCard\n ];\n}\n\nconst TiledSpringboard = ({ cards }: Props) => {\n const gridLayoutClassNames = [\n 'xl:col-span-6 xl:row-span-2',\n 'xl:col-span-6',\n 'xl:col-span-6 xl:col-start-7',\n 'xl:col-span-7 xl:col-start-6',\n 'xl:col-span-5 xl:row-start-3',\n ];\n\n return (\n
\n
\n {cards.map((card, index) => (\n \n ))}\n
\n
\n );\n};\n\nexport default TiledSpringboard;\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 { useCallback, useEffect, useState } from 'react';\n\nconst useMediaQuery = (minWidth: number) => {\n // Set the default value to undefined in order to properly distinguish the falsey values\n // where undefined is the value before computing whether the screen size is smaller than the minWidth\n // i.e. a state where we don't really know whether we're below the threshold or not\n // and false is the value where the computation returns false\n const [isSmallerThan, setIsSmallerThan] = useState();\n\n const handler = useCallback(() => {\n const isDesiredWidth = window.innerWidth < minWidth;\n setIsSmallerThan(isDesiredWidth);\n }, [minWidth]);\n\n useEffect(() => {\n window.addEventListener('resize', handler);\n handler();\n\n return () => {\n window.removeEventListener('resize', handler);\n };\n }, [handler]);\n\n return isSmallerThan;\n};\n\nexport default useMediaQuery;\n","import { useRef } from 'react';\nimport { useIsomorphicLayoutEffect } from './use-isomorphic-effect.mjs';\n\nfunction useIsMounted() {\n const isMounted = useRef(false);\n useIsomorphicLayoutEffect(() => {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n }, []);\n return isMounted;\n}\n\nexport { useIsMounted };\n","import * as React from 'react';\nimport { useId, useRef, useInsertionEffect } from 'react';\n\n/**\n * Measurement functionality has to be within a separate component\n * to leverage snapshot lifecycle.\n */\nclass PopChildMeasure extends React.Component {\n getSnapshotBeforeUpdate(prevProps) {\n const element = this.props.childRef.current;\n if (element && prevProps.isPresent && !this.props.isPresent) {\n const size = this.props.sizeRef.current;\n size.height = element.offsetHeight || 0;\n size.width = element.offsetWidth || 0;\n size.top = element.offsetTop;\n size.left = element.offsetLeft;\n }\n return null;\n }\n /**\n * Required with getSnapshotBeforeUpdate to stop React complaining.\n */\n componentDidUpdate() { }\n render() {\n return this.props.children;\n }\n}\nfunction PopChild({ children, isPresent }) {\n const id = useId();\n const ref = useRef(null);\n const size = useRef({\n width: 0,\n height: 0,\n top: 0,\n left: 0,\n });\n /**\n * We create and inject a style block so we can apply this explicit\n * sizing in a non-destructive manner by just deleting the style block.\n *\n * We can't apply size via render as the measurement happens\n * in getSnapshotBeforeUpdate (post-render), likewise if we apply the\n * styles directly on the DOM node, we might be overwriting\n * styles set via the style prop.\n */\n useInsertionEffect(() => {\n const { width, height, top, left } = size.current;\n if (isPresent || !ref.current || !width || !height)\n return;\n ref.current.dataset.motionPopId = id;\n const style = document.createElement(\"style\");\n document.head.appendChild(style);\n if (style.sheet) {\n style.sheet.insertRule(`\n [data-motion-pop-id=\"${id}\"] {\n position: absolute !important;\n width: ${width}px !important;\n height: ${height}px !important;\n top: ${top}px !important;\n left: ${left}px !important;\n }\n `);\n }\n return () => {\n document.head.removeChild(style);\n };\n }, [isPresent]);\n return (React.createElement(PopChildMeasure, { isPresent: isPresent, childRef: ref, sizeRef: size }, React.cloneElement(children, { ref })));\n}\n\nexport { PopChild };\n","import * as React from 'react';\nimport { useId, useMemo } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\nimport { PopChild } from './PopChild.mjs';\n\nconst PresenceChild = ({ children, initial, isPresent, onExitComplete, custom, presenceAffectsLayout, mode, }) => {\n const presenceChildren = useConstant(newChildrenMap);\n const id = useId();\n const context = useMemo(() => ({\n id,\n initial,\n isPresent,\n custom,\n onExitComplete: (childId) => {\n presenceChildren.set(childId, true);\n for (const isComplete of presenceChildren.values()) {\n if (!isComplete)\n return; // can stop searching when any is incomplete\n }\n onExitComplete && onExitComplete();\n },\n register: (childId) => {\n presenceChildren.set(childId, false);\n return () => presenceChildren.delete(childId);\n },\n }), \n /**\n * If the presence of a child affects the layout of the components around it,\n * we want to make a new context value to ensure they get re-rendered\n * so they can detect that layout change.\n */\n presenceAffectsLayout ? undefined : [isPresent]);\n useMemo(() => {\n presenceChildren.forEach((_, key) => presenceChildren.set(key, false));\n }, [isPresent]);\n /**\n * If there's no `motion` components to fire exit animations, we want to remove this\n * component immediately.\n */\n React.useEffect(() => {\n !isPresent &&\n !presenceChildren.size &&\n onExitComplete &&\n onExitComplete();\n }, [isPresent]);\n if (mode === \"popLayout\") {\n children = React.createElement(PopChild, { isPresent: isPresent }, children);\n }\n return (React.createElement(PresenceContext.Provider, { value: context }, children));\n};\nfunction newChildrenMap() {\n return new Map();\n}\n\nexport { PresenceChild };\n","import * as React from 'react';\nimport { useContext, useRef, cloneElement, Children, isValidElement } from 'react';\nimport { useForceUpdate } from '../../utils/use-force-update.mjs';\nimport { useIsMounted } from '../../utils/use-is-mounted.mjs';\nimport { PresenceChild } from './PresenceChild.mjs';\nimport { LayoutGroupContext } from '../../context/LayoutGroupContext.mjs';\nimport { useIsomorphicLayoutEffect } from '../../utils/use-isomorphic-effect.mjs';\nimport { useUnmountEffect } from '../../utils/use-unmount-effect.mjs';\nimport { invariant } from '../../utils/errors.mjs';\n\nconst getChildKey = (child) => child.key || \"\";\nfunction updateChildLookup(children, allChildren) {\n children.forEach((child) => {\n const key = getChildKey(child);\n allChildren.set(key, child);\n });\n}\nfunction onlyElements(children) {\n const filtered = [];\n // We use forEach here instead of map as map mutates the component key by preprending `.$`\n Children.forEach(children, (child) => {\n if (isValidElement(child))\n filtered.push(child);\n });\n return filtered;\n}\n/**\n * `AnimatePresence` enables the animation of components that have been removed from the tree.\n *\n * When adding/removing more than a single child, every child **must** be given a unique `key` prop.\n *\n * Any `motion` components that have an `exit` property defined will animate out when removed from\n * the tree.\n *\n * ```jsx\n * import { motion, AnimatePresence } from 'framer-motion'\n *\n * export const Items = ({ items }) => (\n * \n * {items.map(item => (\n * \n * ))}\n * \n * )\n * ```\n *\n * You can sequence exit animations throughout a tree using variants.\n *\n * If a child contains multiple `motion` components with `exit` props, it will only unmount the child\n * once all `motion` components have finished animating out. Likewise, any components using\n * `usePresence` all need to call `safeToRemove`.\n *\n * @public\n */\nconst AnimatePresence = ({ children, custom, initial = true, onExitComplete, exitBeforeEnter, presenceAffectsLayout = true, mode = \"sync\", }) => {\n invariant(!exitBeforeEnter, \"Replace exitBeforeEnter with mode='wait'\");\n // We want to force a re-render once all exiting animations have finished. We\n // either use a local forceRender function, or one from a parent context if it exists.\n const forceRender = useContext(LayoutGroupContext).forceRender || useForceUpdate()[0];\n const isMounted = useIsMounted();\n // Filter out any children that aren't ReactElements. We can only track ReactElements with a props.key\n const filteredChildren = onlyElements(children);\n let childrenToRender = filteredChildren;\n const exitingChildren = useRef(new Map()).current;\n // Keep a living record of the children we're actually rendering so we\n // can diff to figure out which are entering and exiting\n const presentChildren = useRef(childrenToRender);\n // A lookup table to quickly reference components by key\n const allChildren = useRef(new Map()).current;\n // If this is the initial component render, just deal with logic surrounding whether\n // we play onMount animations or not.\n const isInitialRender = useRef(true);\n useIsomorphicLayoutEffect(() => {\n isInitialRender.current = false;\n updateChildLookup(filteredChildren, allChildren);\n presentChildren.current = childrenToRender;\n });\n useUnmountEffect(() => {\n isInitialRender.current = true;\n allChildren.clear();\n exitingChildren.clear();\n });\n if (isInitialRender.current) {\n return (React.createElement(React.Fragment, null, childrenToRender.map((child) => (React.createElement(PresenceChild, { key: getChildKey(child), isPresent: true, initial: initial ? undefined : false, presenceAffectsLayout: presenceAffectsLayout, mode: mode }, child)))));\n }\n // If this is a subsequent render, deal with entering and exiting children\n childrenToRender = [...childrenToRender];\n // Diff the keys of the currently-present and target children to update our\n // exiting list.\n const presentKeys = presentChildren.current.map(getChildKey);\n const targetKeys = filteredChildren.map(getChildKey);\n // Diff the present children with our target children and mark those that are exiting\n const numPresent = presentKeys.length;\n for (let i = 0; i < numPresent; i++) {\n const key = presentKeys[i];\n if (targetKeys.indexOf(key) === -1 && !exitingChildren.has(key)) {\n exitingChildren.set(key, undefined);\n }\n }\n // If we currently have exiting children, and we're deferring rendering incoming children\n // until after all current children have exiting, empty the childrenToRender array\n if (mode === \"wait\" && exitingChildren.size) {\n childrenToRender = [];\n }\n // Loop through all currently exiting components and clone them to overwrite `animate`\n // with any `exit` prop they might have defined.\n exitingChildren.forEach((component, key) => {\n // If this component is actually entering again, early return\n if (targetKeys.indexOf(key) !== -1)\n return;\n const child = allChildren.get(key);\n if (!child)\n return;\n const insertionIndex = presentKeys.indexOf(key);\n let exitingComponent = component;\n if (!exitingComponent) {\n const onExit = () => {\n // clean up the exiting children map\n exitingChildren.delete(key);\n // compute the keys of children that were rendered once but are no longer present\n // this could happen in case of too many fast consequent renderings\n // @link https://github.com/framer/motion/issues/2023\n const leftOverKeys = Array.from(allChildren.keys()).filter((childKey) => !targetKeys.includes(childKey));\n // clean up the all children map\n leftOverKeys.forEach((leftOverKey) => allChildren.delete(leftOverKey));\n // make sure to render only the children that are actually visible\n presentChildren.current = filteredChildren.filter((presentChild) => {\n const presentChildKey = getChildKey(presentChild);\n return (\n // filter out the node exiting\n presentChildKey === key ||\n // filter out the leftover children\n leftOverKeys.includes(presentChildKey));\n });\n // Defer re-rendering until all exiting children have indeed left\n if (!exitingChildren.size) {\n if (isMounted.current === false)\n return;\n forceRender();\n onExitComplete && onExitComplete();\n }\n };\n exitingComponent = (React.createElement(PresenceChild, { key: getChildKey(child), isPresent: false, onExitComplete: onExit, custom: custom, presenceAffectsLayout: presenceAffectsLayout, mode: mode }, child));\n exitingChildren.set(key, exitingComponent);\n }\n childrenToRender.splice(insertionIndex, 0, exitingComponent);\n });\n // Add `MotionContext` even to children that don't need it to ensure we're rendering\n // the same tree between renders\n childrenToRender = childrenToRender.map((child) => {\n const key = child.key;\n return exitingChildren.has(key) ? (child) : (React.createElement(PresenceChild, { key: getChildKey(child), isPresent: true, presenceAffectsLayout: presenceAffectsLayout, mode: mode }, child));\n });\n if (process.env.NODE_ENV !== \"production\" &&\n mode === \"wait\" &&\n childrenToRender.length > 1) {\n console.warn(`You're attempting to animate multiple children within AnimatePresence, but its mode is set to \"wait\". This will lead to odd visual behaviour.`);\n }\n return (React.createElement(React.Fragment, null, exitingChildren.size\n ? childrenToRender\n : childrenToRender.map((child) => cloneElement(child))));\n};\n\nexport { AnimatePresence };\n","import { useState, useCallback } from 'react';\nimport { useIsMounted } from './use-is-mounted.mjs';\nimport { frame } from '../frameloop/frame.mjs';\n\nfunction useForceUpdate() {\n const isMounted = useIsMounted();\n const [forcedRenderCount, setForcedRenderCount] = useState(0);\n const forceRender = useCallback(() => {\n isMounted.current && setForcedRenderCount(forcedRenderCount + 1);\n }, [forcedRenderCount]);\n /**\n * Defer this to the end of the next animation frame in case there are multiple\n * synchronous calls.\n */\n const deferredForceRender = useCallback(() => frame.postRender(forceRender), [forceRender]);\n return [deferredForceRender, forcedRenderCount];\n}\n\nexport { useForceUpdate };\n","import { useEffect } from 'react';\n\nfunction useUnmountEffect(callback) {\n return useEffect(() => () => callback(), []);\n}\n\nexport { useUnmountEffect };\n","import { invariant } from '../../../utils/errors.mjs';\n\nfunction resolveElements(elements, scope, selectorCache) {\n var _a;\n if (typeof elements === \"string\") {\n let root = document;\n if (scope) {\n invariant(Boolean(scope.current), \"Scope provided, but no element detected.\");\n root = scope.current;\n }\n if (selectorCache) {\n (_a = selectorCache[elements]) !== null && _a !== void 0 ? _a : (selectorCache[elements] = root.querySelectorAll(elements));\n elements = selectorCache[elements];\n }\n else {\n elements = root.querySelectorAll(elements);\n }\n }\n else if (elements instanceof Element) {\n elements = [elements];\n }\n /**\n * Return an empty array\n */\n return Array.from(elements || []);\n}\n\nexport { resolveElements };\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","children","className","onCloseCallback","React","createElement","motion","div","animate","opacity","exit","initial","role","onClick","oldState","dataTestId","disabled","editHint","link","linkCallback","secondary","secondaryBackgroundClassName","isLightMode","inverted","buttonProps","buttonClasses","classNames","url","name","href","target","_extends","ariaLabel","color","size","IconSizeEnum","lg","closeModalAriaLabel","useAriaLabels","type","black","white","red","style","width","height","forwardRef","contentRef","setIsOpen","isOpen","showClose","drawerClasses","maxWidthClassName","contentSpacingClassName","contentClassName","isBottomToTopSliding","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","AnimatePresence","Portal","mountId","FocusTrap","focusTrapOptions","preventScroll","ref","Backdrop","stopPropagation","CloseButton","classes","epiEdit","image","imageClasses","imageRef","lazyLoad","progressiveLoad","sizes","mobileSource","mobile","tabletSource","tablet","desktopSource","desktop","largeDesktopSource","largeDesktop","breakpoint","useBreakpoint","isLoaded","setIsLoaded","useState","currentSrc","BreakpointEnum","Small","Medium","Large","XLarge","srcSet","alt","altText","length","draggable","loading","onLoad","src","originalUrl","containerElement","useMemo","document","getElementById","appendChild","removeChild","createPortal","ReactPlayer","loadable","config","controls","isPlaying","title","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","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","onFocus","tabIndex","Icon","colorClassName","Image","tabletCoverImage","mobileCoverImage","coverVideo","content","footNote","isDrawerOpen","setIsDrawerOpen","isTablet","useMediaQuery","isMobile","imageSelect","handleInteraction","hasAttribute","content_type","content_name","Fragment","onKeyDown","preventDefault","InViewVideo","Drawer","map","header","body","dangerouslySetInnerHTML","__html","Button","cards","gridLayoutClassNames","card","index","TiledSpringboardCard","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","position","Math","abs","parseInt","eventPayload","dataLayer","push","ariaLabelsFromStore","useAriaLabelsStore","state","getCurrentBreakpoint","breakpoints","innerWidth","screen","setScreen","resizeHandler","useCallback","minWidth","isSmallerThan","setIsSmallerThan","handler","isDesiredWidth","useIsMounted","isMounted","PopChildMeasure","getSnapshotBeforeUpdate","prevProps","element","this","props","childRef","isPresent","sizeRef","offsetHeight","offsetWidth","offsetTop","left","offsetLeft","componentDidUpdate","render","PopChild","id","useId","useInsertionEffect","dataset","motionPopId","head","sheet","insertRule","PresenceChild","onExitComplete","custom","presenceAffectsLayout","mode","presenceChildren","newChildrenMap","context","childId","isComplete","values","register","delete","undefined","forEach","_","PresenceContext","Provider","value","Map","getChildKey","child","exitBeforeEnter","forceRender","useContext","LayoutGroupContext","L","forcedRenderCount","setForcedRenderCount","postRender","useForceUpdate","filteredChildren","filtered","Children","isValidElement","onlyElements","childrenToRender","exitingChildren","presentChildren","allChildren","isInitialRender","callback","updateChildLookup","clear","presentKeys","targetKeys","numPresent","i","indexOf","has","component","get","insertionIndex","exitingComponent","onExit","leftOverKeys","Array","from","keys","filter","childKey","includes","leftOverKey","presentChild","presentChildKey","splice","cloneElement","resolveElements","elements","scope","selectorCache","_a","root","Boolean","querySelectorAll","Element","thresholds","some","all","margin","once","isInView","setInView","options","elementOrSelector","rootMargin","activeIntersections","WeakMap","observer","IntersectionObserver","entries","entry","onEnd","isIntersecting","newOnEnd","unobserve","threshold","observe","disconnect"],"sourceRoot":""}