{"version":3,"file":"TabbedFeature-Chunk-0006da914b08368c9bc0.js","mappings":"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","sources":["webpack://nikon-client/./components/atoms/Button/Button.tsx","webpack://nikon-client/./components/atoms/Image/Image.tsx","webpack://nikon-client/./components/atoms/Video/Video.tsx","webpack://nikon-client/./components/molecules/Carousel/Carousel.tsx","webpack://nikon-client/./components/molecules/InViewVideo/InViewVideo.tsx","webpack://nikon-client/./components/organisms/TabbedFeature/TabbedFeatureSection.tsx","webpack://nikon-client/./components/organisms/TabbedFeature/TabbedFeatureSlide.tsx","webpack://nikon-client/./components/organisms/TabbedFeature/TabbedFeature.tsx","webpack://nikon-client/./config/animations.config.ts","webpack://nikon-client/./models/enums/BreakpointEnum.ts","webpack://nikon-client/./state-management/AriaLabelsStore.ts","webpack://nikon-client/./utility/helpers/gtm.ts","webpack://nikon-client/./utility/helpers/truncateText.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/./utility/hooks/useResizeObserver.ts"],"sourcesContent":["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 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 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 updateDataLayer from '@utils/helpers/gtm';\nimport { PropsWithChildren } from 'react';\nimport { A11y, Keyboard, Navigation } from 'swiper/modules';\nimport { Swiper, SwiperProps } from 'swiper/react';\nimport 'swiper/scss';\nimport 'swiper/scss/a11y';\nimport 'swiper/scss/autoplay';\nimport 'swiper/scss/effect-fade';\nimport 'swiper/scss/keyboard';\nimport { SwiperModule } from 'swiper/types';\n\ninterface Props extends SwiperProps {\n readonly additionalModules?: SwiperModule[];\n readonly className?: string;\n readonly id?: string;\n readonly navId?: string;\n readonly analyticsEnabled?: boolean;\n}\n\nconst Carousel = ({\n additionalModules = [],\n children,\n className,\n id = 'carousel',\n navId = '',\n analyticsEnabled = false,\n ...props\n}: PropsWithChildren) => {\n if (!children) {\n return null;\n }\n\n return (\n {\n if (analyticsEnabled && swiper.realIndex !== 0) {\n updateDataLayer({\n event: 'carousel',\n content_type: `tab_change`,\n link_text:\n swiper.previousIndex < swiper.activeIndex ? 'Next' : 'Previous',\n });\n }\n }}\n a11y={{ enabled: true }}\n className={className}\n navigation={{\n enabled: !!navId,\n prevEl: `#prevBtn-${navId}`,\n nextEl: `#nextBtn-${navId}`,\n }}\n keyboard={{\n enabled: true,\n onlyInViewport: true,\n }}\n modules={[...[A11y, Keyboard, Navigation], ...additionalModules]}\n {...props}\n >\n {children}\n \n );\n};\n\nexport default Carousel;\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 { ITabbedFeatureContent } from '@models/ITabbedFeatureContent';\nimport truncateText from '@utils/helpers/truncateText';\nimport useMediaQuery from '@utils/hooks/useMediaQuery';\nimport useResizeObserver from '@utils/hooks/useResizeObserver';\nimport classNames from 'classnames';\nimport { AnimatePresence, motion, Variants } from 'framer-motion';\nimport { useState } from 'react';\n\ninterface Props {\n readonly tab: ITabbedFeatureContent;\n readonly isActive: boolean;\n readonly index: number;\n readonly dataTestId: string;\n readonly showMoreLabel: string;\n readonly showLessLabel: string;\n readonly onSetActiveIndex: (activeIndex: number) => void;\n}\n\nconst containerVariants: Variants = {\n enter: {\n height: 'auto',\n transition: {\n when: 'beforeChildren',\n staggerChildren: 0.1,\n duration: 0.3,\n ease: 'easeInOut',\n },\n },\n exit: { height: 0 },\n};\n\nconst childVariants: Variants = {\n enter: {\n y: 0,\n opacity: 1,\n transition: {\n duration: 0.2,\n ease: 'easeInOut',\n },\n },\n exit: {\n y: 10,\n opacity: 0,\n transition: {\n duration: 0.2,\n ease: 'easeInOut',\n },\n },\n};\n\nconst TabbedFeatureSection = ({\n tab,\n isActive,\n index,\n dataTestId,\n showMoreLabel,\n showLessLabel,\n onSetActiveIndex,\n}: Props) => {\n const isBelowXXLScreen = useMediaQuery(1920);\n const textLineHeight = isBelowXXLScreen ? 23 : 24;\n const textCutOff = 5 * textLineHeight;\n const [textRef, { scrollHeight: textContentHeight }] = useResizeObserver();\n const [isTextExpanded, setIsTextExpanded] = useState(false);\n const isTextExpandable = textContentHeight > textCutOff;\n const hasCTALink = tab.cta?.url && tab.cta.name;\n\n return (\n \n
\n {tab.title && (\n {\n onSetActiveIndex(index);\n\n if (!isActive) {\n setIsTextExpanded(false);\n }\n }}\n data-testid={`${dataTestId}-Button`}\n >\n {tab.title}\n \n )}\n
\n\n \n {isActive && (\n \n {tab.text && (\n \n \n {tab.text?.length > 180 && hasCTALink\n ? truncateText(tab.text, 180, '...')\n : tab.text}\n \n\n {isTextExpandable && !hasCTALink && (\n {\n setIsTextExpanded(!isTextExpanded);\n }}\n data-testid=\"Banner-Notification-Show-More/Less\"\n >\n \n {isTextExpanded ? showLessLabel : showMoreLabel}\n \n \n )}\n \n )}\n\n {hasCTALink && (\n \n \n \n )}\n \n);\n\nexport default TabbedFeatureSlide;\n","import Button from '@atoms/Button/Button';\nimport Image from '@atoms/Image/Image';\nimport { fadeUp } from '@config/animations.config';\nimport { IImage } from '@models/IImage';\nimport { ILink } from '@models/ILink';\nimport { IMeta } from '@models/IMeta';\nimport { ITabbedFeatureContent } from '@models/ITabbedFeatureContent';\nimport { IVideo } from '@models/IVideo';\nimport Carousel from '@molecules/Carousel/Carousel';\nimport InViewVideo from '@molecules/InViewVideo/InViewVideo';\nimport useMediaQuery from '@utils/hooks/useMediaQuery';\nimport classNames from 'classnames';\nimport { AnimatePresence, motion } from 'framer-motion';\nimport { useState } from 'react';\nimport { SwiperSlide } from 'swiper/react';\nimport TabbedFeatureSection from './TabbedFeatureSection';\nimport TabbedFeatureSlide from './TabbedFeatureSlide';\n\ninterface Props {\n readonly title?: string;\n readonly primaryCta?: ILink;\n readonly tabs?: ITabbedFeatureContent[];\n readonly wideContent?: boolean;\n readonly anchorId?: string;\n readonly meta?: IMeta;\n readonly showMoreLabel: string;\n readonly showLessLabel: string;\n}\n\nconst TabbedFeature = ({\n title,\n primaryCta,\n tabs = [],\n wideContent = false,\n anchorId = '',\n meta,\n showMoreLabel,\n showLessLabel,\n}: Props) => {\n const isMobile = useMediaQuery(1024);\n const [activeIndex, setActiveIndex] = useState(0);\n const activeTab = tabs.find((_, index) => index === activeIndex);\n\n return (\n \n
\n
\n \n {title}\n \n\n {primaryCta?.name && primaryCta?.url && (\n
\n \n
\n )}\n
\n\n {isMobile ? (\n \n \n {tabs.map((tab, index) => (\n \n \n \n ))}\n \n
\n ) : (\n
\n \n {tabs.map((tab, index) => {\n const isActive = index === activeIndex;\n\n return (\n \n );\n })}\n
\n\n \n \n \n
\n {activeTab?.media &&\n 'url' in activeTab.media &&\n activeTab.media.url ? (\n div>video]:object-cover h-full\"\n wrapperClasses=\"w-full h-full\"\n autoPlay\n hasInVideoPlayButton\n controls={false}\n dataTestId=\"CT-49-Tabbed-Feature-Active-Tab-Video\"\n />\n ) : (\n \n )}\n
\n \n
\n \n \n )}\n \n \n );\n};\n\nexport default TabbedFeature;\n","export const fadeUp = {\n hidden: {\n y: 30,\n opacity: 0,\n transition: {\n ease: [0.42, 0.46, 0.45, 0.99],\n duration: 0.5,\n },\n },\n visible: {\n y: 0,\n opacity: 1,\n transition: {\n ease: [0.42, 0.46, 0.45, 0.99],\n duration: 0.5,\n },\n },\n};\n\nexport const easeInOut = {\n transition: { type: 'easeinout', duration: 0.25 },\n};\n","const enum BreakpointEnum {\n Small = 'sm',\n Medium = 'md',\n Large = 'lg',\n XLarge = 'xl',\n}\n\nexport default BreakpointEnum;\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 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","// Truncates text to the specific limit but keeps the last matched word intact even if it exceeds the limit\nconst truncateText = (text: string, charLimit: number, suffix: string) => {\n const truncatedText = text.replace(\n new RegExp(`^(.{${charLimit}}[^\\\\s]*).*`),\n '$1'\n );\n const isLastCharFullStop =\n truncatedText.substring(truncatedText.length - 1) === '.';\n\n return isLastCharFullStop\n ? `${truncatedText.slice(0, -1)}${suffix}`\n : `${truncatedText}${suffix}`;\n};\n\nexport default truncateText;\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 { useCallback, useRef, useState } from 'react';\n\nconst useResizeObserver = () => {\n const observerRef = useRef();\n const [resizeParameters, setResizeParameters] = useState({\n width: 0,\n height: 0,\n clientWidth: 0,\n clientHeight: 0,\n scrollWidth: 0,\n scrollHeight: 0,\n });\n\n const handleResize = useCallback((entries: ResizeObserverEntry[]) => {\n if (!Array.isArray(entries)) return;\n\n const entry = entries[0];\n\n setResizeParameters({\n width: entry?.contentRect.width ?? 0,\n height: entry?.contentRect.height ?? 0,\n clientWidth: entry?.target.clientWidth ?? 0,\n clientHeight: entry?.target.clientHeight ?? 0,\n scrollWidth: entry?.target.scrollWidth ?? 0,\n scrollHeight: entry?.target.scrollHeight ?? 0,\n });\n }, []);\n\n const ref = useCallback(\n (node: HTMLElement | null) => {\n if (observerRef.current && !node) {\n observerRef.current.disconnect();\n observerRef.current = undefined;\n }\n\n if (!observerRef.current && node) {\n observerRef.current = new ResizeObserver(handleResize);\n observerRef.current.observe(node);\n }\n },\n [handleResize]\n );\n\n return [ref, resizeParameters] as const;\n};\n\nexport default useResizeObserver;\n"],"names":["_ref","children","className","dataTestId","disabled","editHint","link","linkCallback","secondary","secondaryBackgroundClassName","isLightMode","inverted","buttonProps","buttonClasses","classNames","url","name","React","createElement","href","target","onClick","_extends","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","type","srcSet","ref","alt","altText","length","draggable","loading","onLoad","src","height","width","originalUrl","ReactPlayer","loadable","forwardRef","config","controls","isPlaying","title","videoAttributes","videoRatio","videoSource","videoWrapperOpacityProgress","onEndedVideo","onVideoReady","onVideoStart","onVolumeChange","setIsPlaying","prevProgress","setPrevProgress","isBrowser","setIsBrowser","useEffect","window","handleProgressUpdate","progress","updateDataLayer","event","video_interaction","video_progress","video_title","handleVideoAction","action","motion","div","style","opacity","playing","onProgress","_ref2","played","onStart","onEnded","onPause","onPlay","onReady","additionalModules","id","navId","analyticsEnabled","props","Swiper","onSlideChangeTransitionEnd","swiper","realIndex","content_type","link_text","previousIndex","activeIndex","a11y","enabled","navigation","prevEl","nextEl","keyboard","onlyInViewport","modules","A11y","Keyboard","Navigation","autoPlay","coverImage","hasInVideoPlayButton","inVideoPlayButtonClassName","inVideoPlayButtonPositionClassName","inVideoPlayButtonTabIndex","inViewThreshold","meta","onFocusCallback","playOnCoverClick","video","videoClasses","wrapperClasses","isVideoManuallyPaused","setIsVideoManuallyPaused","isMuted","setIsMuted","videoReady","setVideoReady","videoRef","useRef","inView","useInView","amount","isAutoPlaying","playVideoAriaLabel","pauseVideoAriaLabel","useAriaLabels","Video","playsinline","muted","loop","editHints","videoElement","volume","onFocus","tabIndex","Icon","colorClassName","size","AnimatePresence","initial","animate","exit","Image","containerVariants","enter","transition","when","staggerChildren","duration","ease","childVariants","y","tab","isActive","index","showMoreLabel","showLessLabel","onSetActiveIndex","textCutOff","useMediaQuery","textRef","scrollHeight","textContentHeight","useResizeObserver","isTextExpanded","setIsTextExpanded","isTextExpandable","hasCTALink","cta","role","key","mode","variants","text","expanded","collapsed","truncateText","Button","wideContent","Fragment","media","InViewVideo","primaryCta","tabs","anchorId","isMobile","setActiveIndex","activeTab","find","_","undefined","Carousel","slidesOffsetAfter","slidesOffsetBefore","spaceBetween","breakpoints","slidesPerView","map","SwiperSlide","TabbedFeatureSlide","TabbedFeatureSection","fadeUp","hidden","visible","easeInOut","initialAriaLabels","backToFirstLevelNavigationAriaLabel","breadcrumbAriaLabel","breadcrumbFooterAriaLabel","clearFiltersAriaLabel","closeMenuAriaLabel","closeAddressListAriaLabel","closeMobileNavigationAriaLabel","closeModalAriaLabel","closeSignUpFormAriaLabel","closeSiteNotificationAriaLabel","copyToClipboardAriaLabel","editOrDeleteAriaLabel","mainNavigationAriaLabel","moreInformationAriaLabel","nextAriaLabel","openAddressListAriaLabel","openImageInFullScreenAriaLabel","openMenuAriaLabel","overlayToCloseDesktopNavigationAriaLabel","previousAriaLabel","searchAriaLabel","shareToFacebookAriaLabel","shareToWhatsappAriaLabel","shareToXAriaLabel","siteNotificationsAriaLabel","uspStripAriaLabel","zoomInAriaLabel","zoomOutAriaLabel","create","set","ariaLabels","setAriaLabels","eventPayload","dataLayer","push","charLimit","suffix","truncatedText","replace","RegExp","substring","slice","ariaLabelsFromStore","useAriaLabelsStore","state","getCurrentBreakpoint","innerWidth","screen","setScreen","resizeHandler","useCallback","addEventListener","removeEventListener","minWidth","isSmallerThan","setIsSmallerThan","handler","isDesiredWidth","observerRef","resizeParameters","setResizeParameters","clientWidth","clientHeight","scrollWidth","handleResize","entries","Array","isArray","entry","contentRect","node","current","disconnect","ResizeObserver","observe"],"sourceRoot":""}