{"version":3,"file":"VideoWithTextOver-Chunk-1ddf46750c2eac3e7b83.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/InViewVideo/InViewVideo.tsx","webpack://nikon-client/./components/organisms/VideoWithTextOver/VideoWithTextOver.tsx","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/hooks/useAriaLabels.ts","webpack://nikon-client/./utility/hooks/useBreakpoint.ts","webpack://nikon-client/./utility/hooks/usePreviewMode.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<ButtonHTMLAttributes<HTMLButtonElement>, 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<ButtonProps>) => {\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    <a\n      className={buttonClasses}\n      href={link.url}\n      target={link.target}\n      data-epi-property-name={editHint}\n      onClick={linkCallback}\n      data-testid={dataTestId}\n    >\n      {children || link.name}\n    </a>\n  ) : (\n    <button\n      {...buttonProps}\n      className={buttonClasses}\n      disabled={disabled}\n      data-epi-property-name={editHint}\n      data-testid={dataTestId}\n    >\n      {children}\n    </button>\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<HTMLImageElement>\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<Props>) => {\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<boolean>(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    <picture className={classNames(classes)}>\n      <source\n        type=\"image/webp\"\n        sizes={sizes}\n        srcSet={`${mobileSource?.url} 376w, ${tabletSource?.url} 768w, ${desktopSource?.url} 1024w, ${largeDesktopSource?.url} 1440w`}\n      />\n      <img\n        ref={imageRef}\n        alt={image?.altText?.length ? image?.altText : 'nikon-image'}\n        className={classNames(\n          imageClasses,\n          'transition duration-500 ease-in-out'\n        )}\n        data-epi-property-name={epiEdit}\n        draggable=\"false\"\n        loading={lazyLoad ? 'lazy' : 'eager'}\n        onLoad={() => 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    </picture>\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<number>;\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      <motion.div\n        ref={ref as ForwardedRef<HTMLDivElement>}\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          <ReactPlayer\n            url={videoSource}\n            width=\"100%\"\n            height=\"100%\"\n            controls={controls}\n            playing\n            onProgress={({ played }) => 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<HTMLVideoElement>) => {\n              onVolumeChange?.(event.target);\n            }}\n            {...videoAttributes}\n          />\n        )}\n      </motion.div>\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<number>;\n  readonly wrapperClasses?: string;\n  readonly onFocusCallback?: (e: React.FocusEvent<HTMLButtonElement>) => 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<HTMLDivElement>(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    <div\n      className={classNames('relative', wrapperClasses)}\n      data-testid={dataTestId}\n    >\n      <Video\n        classes={videoClasses}\n        title={video?.url}\n        videoSource={video?.url}\n        ref={videoRef as unknown as RefObject<HTMLDivElement>}\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        <button\n          type=\"button\"\n          aria-label={isPlaying ? pauseVideoAriaLabel : playVideoAriaLabel}\n          className={classNames(\n            'absolute z-20 flex h-7.5 w-7.5 items-center justify-center rounded-full bg-black bg-opacity-50',\n            inVideoPlayButtonPositionClassName,\n            inVideoPlayButtonClassName\n          )}\n          onClick={() => {\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          <Icon\n            name={isPlaying ? 'pause' : 'play_icon_filled'}\n            colorClassName=\"text-white\"\n            size=\"1.4rem\"\n            className=\"pointer-events-none\"\n          />\n        </button>\n      )}\n\n      {(coverImage || !isAutoPlaying) && (\n        <AnimatePresence>\n          {!isPlaying && (\n            <motion.div\n              initial={{ opacity: 0 }}\n              animate={{ opacity: 1 }}\n              exit={{ opacity: 0 }}\n              onClick={() => playOnCoverClick && setIsPlaying(true)}\n              className=\"group absolute inset-0 flex items-center justify-center hover:cursor-pointer\"\n            >\n              {coverImage && (\n                <Image\n                  classes=\"relative w-full h-full\"\n                  image={coverImage}\n                  imageClasses=\"w-full h-full object-cover object-center\"\n                  epiEdit={meta?.editHints?.video as string | undefined}\n                  dataTestId={`${dataTestId}-Cover-Image`}\n                />\n              )}\n\n              {!isAutoPlaying && coverImage && (\n                <button\n                  type=\"button\"\n                  aria-label={playVideoAriaLabel}\n                  className=\"absolute bottom-2.5 left-2.5 flex items-center md:bottom-5 md:left-5\"\n                  onClick={() => setIsPlaying(true)}\n                  data-testid={`${dataTestId}-Play-Button`}\n                >\n                  <div className=\"h-[2.1875rem] w-[2.1875rem] md:h-[2.875rem] md:w-[2.875rem]\">\n                    <Icon name=\"play_icon_circle\" size=\"100%\" />\n                  </div>\n                </button>\n              )}\n            </motion.div>\n          )}\n        </AnimatePresence>\n      )}\n    </div>\n  );\n};\n\nexport default InViewVideo;\n","import Button from '@atoms/Button/Button';\nimport { ILink } from '@models/ILink';\nimport { IVideo } from '@models/IVideo';\nimport InViewVideo from '@molecules/InViewVideo/InViewVideo';\nimport updateDataLayer from '@utils/helpers/gtm';\nimport usePreviewMode from '@utils/hooks/usePreviewMode';\nimport classNames from 'classnames';\n\ninterface Props {\n  readonly video: IVideo;\n  readonly title: string;\n  readonly subTitle: string;\n  readonly text?: string;\n  readonly cta: ILink;\n}\n\nconst VideoWithTextOver = ({ video, title, subTitle, text, cta }: Props) => {\n  const isPreview = usePreviewMode();\n\n  return (\n    <section\n      className=\"component-padding bg-black-100\"\n      data-testid=\"CT-152-Video-With-Text-Over\"\n    >\n      <div\n        className={classNames(\n          'relative',\n          isPreview ? 'h-[1080px]' : 'h-screen'\n        )}\n      >\n        <div\n          className=\"absolute inset-0 z-[1] bg-black bg-opacity-40\"\n          data-testid=\"CT-152-Video-With-Text-Over-Tint\"\n        />\n\n        <div\n          className=\"absolute top-0 z-[1] h-1/4 w-full bg-gradient-to-b from-black/100\"\n          data-testid=\"CT-152-Video-With-Text-Over-Top-Gradient\"\n        />\n\n        <div\n          className=\"absolute bottom-0 z-[1] h-1/4 w-full bg-gradient-to-t from-black/100\"\n          data-testid=\"CT-152-Video-With-Text-Over-Bottom-Gradient\"\n        />\n\n        <div className=\"absolute inset-0 z-[1] flex items-center justify-center text-white\">\n          <div className=\"w-full text-center max-md:px-5 md:w-1/2 xl:w-1/3\">\n            <p data-testid=\"CT-152-Video-With-Text-Over-Title\" className=\"h3\">\n              {title}\n            </p>\n\n            <p\n              className=\"mount mb-7.5 lg:mb-10\"\n              data-testid=\"CT-152-Video-With-Text-Over-Subtitle\"\n            >\n              {subTitle}\n            </p>\n\n            {text && (\n              <p\n                className=\"h6 mb-5 lg:mb-10\"\n                data-testid=\"CT-152-Video-With-Text-Over-Text\"\n              >\n                {text}\n              </p>\n            )}\n\n            {cta?.url && cta.name && (\n              <Button\n                link={cta}\n                dataTestId=\"CT-152-Video-With-Text-Over-CTA\"\n                linkCallback={() => {\n                  updateDataLayer({\n                    event: 'selectContent',\n                    content_type: 'video_cta',\n                    link_text: cta.name,\n                  });\n                }}\n              />\n            )}\n          </div>\n        </div>\n\n        <InViewVideo\n          wrapperClasses=\"h-full\"\n          videoClasses=\"[&>div>video]:object-cover h-full\"\n          autoPlay\n          controls={false}\n          video={video}\n          inViewThreshold={0}\n          hasInVideoPlayButton\n          inVideoPlayButtonClassName=\"z-10\"\n          dataTestId=\"CT-152-Video-With-Text-Over-Video-Container\"\n        />\n      </div>\n    </section>\n  );\n};\n\nexport default VideoWithTextOver;\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<IAriaLabelsState>((set) => ({\n  ariaLabels: initialAriaLabels,\n  setAriaLabels: (ariaLabels: IAriaLabels) => set({ ariaLabels }),\n}));\n\nexport default useAriaLabelsStore;\n","const updateDataLayer = (eventPayload: Record<string, unknown>) => {\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<IAriaLabels>(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<BreakpointEnum>();\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 { useEffect, useState } from 'react';\n\nconst usePreviewMode = () => {\n  const [isPreview, setIsPreview] = useState(false);\n\n  useEffect(() => {\n    setIsPreview(window.self !== window.top);\n  }, []);\n\n  return isPreview;\n};\n\nexport default usePreviewMode;\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","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","subTitle","text","cta","isPreview","usePreviewMode","Button","content_type","link_text","InViewVideo","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","ariaLabelsFromStore","useAriaLabelsStore","state","getCurrentBreakpoint","breakpoints","innerWidth","screen","setScreen","resizeHandler","useCallback","addEventListener","removeEventListener","setIsPreview","self","top"],"sourceRoot":""}