{"version":3,"file":"ImpactHero-Chunk-1cde99b7e6a40016e897.js","mappings":"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","sources":["webpack://nikon-client/./components/atoms/Button/Button.tsx","webpack://nikon-client/./components/atoms/CloseButton/CloseButton.tsx","webpack://nikon-client/./components/atoms/Image/Image.tsx","webpack://nikon-client/./components/atoms/LinkCard/LinkCard.tsx","webpack://nikon-client/./components/atoms/Modal/Modal.tsx","webpack://nikon-client/./components/atoms/NavButton/NavButton.tsx","webpack://nikon-client/./components/atoms/Portal/Portal.tsx","webpack://nikon-client/./components/atoms/Video/Video.tsx","webpack://nikon-client/./components/molecules/Carousel/Carousel.tsx","webpack://nikon-client/./config/video.config.ts","webpack://nikon-client/./models/enums/VideoProviderEnum.ts","webpack://nikon-client/./components/molecules/ExternalVideo/ExternalVideo.tsx","webpack://nikon-client/./components/molecules/StripCarousel/StripCarousel.tsx","webpack://nikon-client/./components/molecules/VideoModal/VideoModal.tsx","webpack://nikon-client/./components/molecules/HighlightCard/HighlightCard.tsx","webpack://nikon-client/./components/organisms/ImpactHero/ImpactHero.tsx","webpack://nikon-client/./models/enums/BreakpointEnum.ts","webpack://nikon-client/./models/enums/HorizontalDirectionEnum.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/duplicateArrayItems.ts","webpack://nikon-client/./utility/helpers/gtm.ts","webpack://nikon-client/./utility/helpers/slugify.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/./assets/hue_hero.svg"],"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 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    <button\n      type=\"button\"\n      className={classNames('close-button', closeColours[color], className)}\n      aria-label={ariaLabel ?? closeModalAriaLabel}\n      style={{ width: size, height: size }}\n      onClick={onClick}\n      data-testid={dataTestId}\n    />\n  );\n};\n\nexport default CloseButton;\n","import BreakpointEnum from '@models/enums/BreakpointEnum';\nimport { IImage } from '@models/IImage';\nimport useBreakpoint from '@utils/hooks/useBreakpoint';\nimport classNames from 'classnames';\nimport { PropsWithChildren, RefObject, useState } from 'react';\n\ninterface Props {\n  readonly classes?: string;\n  readonly dataTestId?: string;\n  readonly epiEdit?: string;\n  readonly image?: IImage;\n  readonly imageClasses?: string;\n  readonly imageRef?:\n    | RefObject<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 { ILink } from '@models/ILink';\nimport classNames from 'classnames';\nimport {\n  AnchorHTMLAttributes,\n  DetailedHTMLProps,\n  PropsWithChildren,\n} from 'react';\n\ninterface Props {\n  readonly link: ILink;\n  readonly type?: 'DEFAULT' | 'OUTLINE';\n  readonly useSmallCard?: boolean;\n  readonly dataTestId?: string;\n}\n\ntype LinkCardProps = Props &\n  DetailedHTMLProps<AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>;\n\nconst LinkCard = ({\n  type = 'DEFAULT',\n  link,\n  children,\n  className,\n  useSmallCard,\n  dataTestId,\n  ...linkProps\n}: PropsWithChildren<LinkCardProps>) => {\n  const cardClasses = classNames(\n    {\n      [`min-h-[110px] ${useSmallCard ? 'md:h-32' : 'md:h-36'} card h-full`]:\n        type === 'DEFAULT',\n    },\n    {\n      'rounded-[10px] border border-grey-400 transition-all hover:border-yellow':\n        type === 'OUTLINE',\n    },\n    className,\n    'mx-px flex items-center'\n  );\n\n  return (\n    <a\n      {...linkProps}\n      href={link?.url}\n      target={link?.target}\n      className={cardClasses}\n      data-testid={dataTestId}\n    >\n      {children}\n    </a>\n  );\n};\n\nexport default LinkCard;\n","import CloseButton from '@atoms/CloseButton/CloseButton';\nimport Portal from '@atoms/Portal/Portal';\nimport IconSizeEnum from '@models/enums/IconSizeEnum';\nimport bodyScrollLock from '@utils/helpers/bodyScrollLock';\nimport classNames from 'classnames';\nimport FocusTrap from 'focus-trap-react';\nimport { motion } from 'framer-motion';\nimport { PropsWithChildren, useCallback, useEffect, useRef } from 'react';\n\ninterface Props {\n  readonly onCloseCallback?: () => void;\n  readonly contentClasses?: string;\n  readonly crossMarginsClassName?: string;\n  readonly crossClasses?: string;\n  readonly crossColor?: 'black' | 'white';\n  readonly isOpen: boolean;\n  readonly modalClasses?: string;\n  readonly setIsOpen?: (param: boolean) => void;\n  readonly showCloseButton?: boolean;\n  readonly transparent?: boolean;\n  readonly isCloseButtonFixed?: boolean;\n  readonly closeButtonIconSize?: IconSizeEnum | string;\n  readonly shouldCloseOnClickOutsideContent?: boolean;\n  readonly shouldLockBody?: boolean;\n}\n\nconst Modal = ({\n  onCloseCallback,\n  children,\n  contentClasses,\n  crossColor = 'white',\n  crossMarginsClassName = 'mr-8 mt-8',\n  crossClasses,\n  isOpen,\n  modalClasses,\n  setIsOpen,\n  showCloseButton = true,\n  transparent = false,\n  isCloseButtonFixed = true,\n  closeButtonIconSize = IconSizeEnum.md,\n  shouldCloseOnClickOutsideContent = false,\n  shouldLockBody = true,\n}: PropsWithChildren<Props>) => {\n  const contentRef = useRef<HTMLDivElement>(null);\n\n  useEffect(() => {\n    if (isOpen && shouldLockBody) {\n      bodyScrollLock(true);\n    }\n\n    return () => {\n      if (shouldLockBody) bodyScrollLock(false);\n    };\n  }, [isOpen, shouldLockBody]);\n\n  const close = useCallback(() => {\n    setIsOpen?.(false);\n    onCloseCallback?.();\n  }, [onCloseCallback, setIsOpen]);\n\n  useEffect(() => {\n    const keyboardClose = (ev: KeyboardEvent) => {\n      if (ev.key === 'Escape' && isOpen === true) {\n        setIsOpen?.(false);\n      }\n    };\n    window.addEventListener('keydown', keyboardClose);\n\n    return () => {\n      window.removeEventListener('keydown', keyboardClose);\n    };\n  }, [isOpen, setIsOpen]);\n\n  useEffect(() => {\n    const handleClickOutsideContent = (ev: Event) => {\n      if (\n        isOpen &&\n        shouldCloseOnClickOutsideContent &&\n        !contentRef.current?.contains(ev.target as HTMLElement)\n      ) {\n        close();\n      }\n    };\n\n    window.addEventListener('click', handleClickOutsideContent, true);\n\n    return () => {\n      window.removeEventListener('click', handleClickOutsideContent, true);\n    };\n  }, [close, isOpen, shouldCloseOnClickOutsideContent]);\n\n  if (!isOpen) {\n    return null;\n  }\n\n  return (\n    <Portal key=\"portal\" mountId=\"drawer-root\">\n      <FocusTrap\n        focusTrapOptions={{\n          preventScroll: true,\n          escapeDeactivates: false,\n        }}\n      >\n        <motion.div\n          animate={{ opacity: 1 }}\n          className=\"relative z-max h-auto\"\n          exit={{ opacity: 0 }}\n          initial={{ opacity: 0 }}\n          transition={{\n            duration: 0.8,\n            ease: [0.04, 0.62, 0.23, 0.98],\n          }}\n        >\n          <section\n            className={classNames(\n              transparent ? 'bg-black-100/50' : 'bg-black-100',\n              'fixed inset-0 z-100 text-white'\n            )}\n          >\n            <div className=\"flex h-full w-full\">\n              <div\n                className={classNames(\n                  modalClasses,\n                  'container h-full w-full overflow-y-auto'\n                )}\n              >\n                <div\n                  className={classNames(contentClasses, 'relative text-left')}\n                  ref={contentRef}\n                >\n                  {showCloseButton && (\n                    <>\n                      {/* A hidden button that steals the inital focus of the modal preventing the close icon from animating on modal open  */}\n                      {/* eslint-disable-next-line jsx-a11y/control-has-associated-label */}\n                      <button className=\"hidden\" />\n\n                      <CloseButton\n                        color={crossColor}\n                        size={closeButtonIconSize}\n                        onClick={close}\n                        className={classNames(\n                          'right-0 top-0 z-100 flex cursor-pointer flex-col items-center',\n                          isCloseButtonFixed ? 'fixed' : 'absolute',\n                          crossMarginsClassName,\n                          crossClasses\n                        )}\n                      />\n                    </>\n                  )}\n                  {children}\n                </div>\n              </div>\n            </div>\n          </section>\n        </motion.div>\n      </FocusTrap>\n    </Portal>\n  );\n};\n\nexport default Modal;\n","import Icon from '@atoms/Icon/Icon';\nimport HorizontalDirectionEnum from '@models/enums/HorizontalDirectionEnum';\nimport updateDataLayer from '@utils/helpers/gtm';\nimport useAriaLabels from '@utils/hooks/useAriaLabels';\nimport classNames from 'classnames';\nimport { forwardRef, KeyboardEvent, useImperativeHandle, useRef } from 'react';\n\ninterface Props {\n  readonly direction:\n    | HorizontalDirectionEnum.Left\n    | HorizontalDirectionEnum.Right;\n  readonly id?: string;\n  readonly disabled?: boolean;\n  readonly hasBackgroundColor?: boolean;\n  readonly sizeClassName?: string;\n  readonly iconSize?: string;\n  readonly enabledArrowColor?: string;\n  readonly onClick?: (e?: KeyboardEvent<HTMLButtonElement>) => void;\n  readonly additionalDataLayerProperties?: Record<string, string>;\n  readonly isLightMode?: boolean;\n}\n\nexport interface NavButtonRef {\n  focus: () => void;\n  disabled: boolean;\n}\n\nconst NavButton = forwardRef<NavButtonRef, Props>(\n  (\n    {\n      additionalDataLayerProperties,\n      direction,\n      id,\n      disabled = false,\n      hasBackgroundColor = true,\n      sizeClassName = 'h-10 w-10',\n      iconSize,\n      enabledArrowColor = 'text-black-100',\n      isLightMode,\n      onClick,\n    },\n    ref\n  ) => {\n    const { nextAriaLabel, previousAriaLabel } = useAriaLabels();\n    const buttonRef = useRef<HTMLButtonElement>(null);\n\n    useImperativeHandle(ref, () => ({\n      focus: () => buttonRef.current?.focus(),\n      disabled: !!buttonRef.current?.disabled,\n    }));\n\n    return (\n      <button\n        ref={buttonRef}\n        id={`${\n          direction === HorizontalDirectionEnum.Left ? 'prevBtn' : 'nextBtn'\n        }-${id}`}\n        className={classNames(\n          'flex select-none items-center justify-center rounded-full',\n          sizeClassName,\n          {\n            'animate-arrow-left':\n              direction === HorizontalDirectionEnum.Left && !disabled,\n            'animate-arrow-right':\n              direction === HorizontalDirectionEnum.Right && !disabled,\n            'cursor-pointer': !disabled,\n            'cursor-default': disabled,\n            'bg-yellow active:bg-yellow-500 xl:hover:bg-yellow-100 xl:active:bg-yellow-500':\n              hasBackgroundColor && !disabled,\n            [`bg-grey ${isLightMode ? '' : 'dark:bg-grey-600'}`]:\n              hasBackgroundColor && disabled,\n          }\n        )}\n        aria-label={\n          direction === HorizontalDirectionEnum.Left\n            ? previousAriaLabel\n            : nextAriaLabel\n        }\n        disabled={disabled}\n        aria-disabled={disabled}\n        tabIndex={disabled ? -1 : 0}\n        data-testid={\n          direction === HorizontalDirectionEnum.Left\n            ? 'previous-slide'\n            : 'next-slide'\n        }\n        onKeyDown={(e) => {\n          if (e.key === 'Enter') onClick?.(e);\n        }}\n        onClick={() => {\n          onClick?.();\n          updateDataLayer({\n            event: 'carousel',\n            content_type: 'tab_change',\n            link_text:\n              direction === HorizontalDirectionEnum.Left ? 'Previous' : 'Next',\n            ...additionalDataLayerProperties,\n          });\n        }}\n      >\n        <Icon\n          name={`arrow_${\n            direction === HorizontalDirectionEnum.Left ? 'left' : 'right'\n          }`}\n          colorClassName={\n            disabled\n              ? `text-grey-400 ${isLightMode ? '' : 'dark:text-grey-700'}`\n              : enabledArrowColor\n          }\n          size={iconSize}\n        />\n      </button>\n    );\n  }\n);\n\nexport default NavButton;\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<Props>) => {\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<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 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<Props>) => {\n  if (!children) {\n    return null;\n  }\n\n  return (\n    <Swiper\n      id={id}\n      onSlideChangeTransitionEnd={(swiper) => {\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    </Swiper>\n  );\n};\n\nexport default Carousel;\n","export const autoPlayYoutubePlayerAttributes = {\n  playsinline: true,\n  muted: true,\n  playing: true,\n};\n\nexport const autoPlayYoutubePlayerConfig = {\n  youtube: {\n    playerVars: {\n      autoplay: 1,\n      mute: 1,\n      enablejsapi: 1,\n      showinfo: 0,\n    },\n  },\n};\n\nexport const standardYoutubePlayerAttributes = {\n  playsinline: true,\n  muted: true,\n  playing: false,\n};\n\nexport const standardYoutubePlayerConfig = {\n  youtube: {\n    playerVars: {\n      autoplay: 0,\n      mute: 0,\n      enablejsapi: 1,\n      showinfo: 0,\n    },\n  },\n};\n\nexport const autoPlayVimeoPlayerAttributes = {\n  playsinline: true,\n  muted: true,\n  playing: true,\n};\n\nexport const autoPlayVimeoPlayerConfig = {\n  vimeo: {\n    playerOptions: {\n      autoplay: true,\n      muted: true,\n    },\n  },\n};\n\nexport const standardVimeoPlayerAttributes = {\n  playsinline: true,\n  muted: false,\n  playing: false,\n  loop: true,\n};\n\nexport const standardViemoPlayerConfig = {\n  vimeo: {\n    playerOptions: {\n      autoplay: false,\n      muted: false,\n    },\n  },\n};\n","enum VideoProviderEnum {\n  Youtube = 'youtube',\n  Vimeo = 'vimeo',\n}\n\nexport default VideoProviderEnum;\n","import Video from '@atoms/Video/Video';\nimport {\n  autoPlayVimeoPlayerAttributes,\n  autoPlayVimeoPlayerConfig,\n  autoPlayYoutubePlayerAttributes,\n  autoPlayYoutubePlayerConfig,\n  standardViemoPlayerConfig,\n  standardVimeoPlayerAttributes,\n  standardYoutubePlayerAttributes,\n  standardYoutubePlayerConfig,\n} from '@config/video.config';\nimport VideoProviderEnum from '@models/enums/VideoProviderEnum';\nimport IExternalVideo from '@models/IExternalVideo';\nimport { IVideoAttributes } from '@models/IVideoAttributes';\nimport classNames from 'classnames';\nimport { forwardRef, PropsWithChildren } from 'react';\n\ninterface Props extends IExternalVideo {\n  readonly autoPlay: boolean;\n  readonly onEndedVideo?: () => void;\n  readonly onVideoReady?: () => void;\n  readonly onVideoStart?: () => void;\n  readonly classes?: string;\n  readonly customVideoAttributes?: IVideoAttributes;\n  readonly isInvisible?: boolean;\n  readonly dataTestId?: string;\n}\n\nconst ExternalVideo = forwardRef(\n  (\n    {\n      videoProvider = VideoProviderEnum.Youtube,\n      videoId,\n      autoPlay,\n      onEndedVideo,\n      onVideoReady,\n      onVideoStart,\n      classes,\n      children,\n      title,\n      customVideoAttributes,\n      isInvisible = false,\n      dataTestId = 'External-Video',\n    }: PropsWithChildren<Props>,\n    ref\n  ) => {\n    const options = {\n      youtube: {\n        autoPlay: {\n          videoAttributes: autoPlayYoutubePlayerAttributes,\n          videoConfig: autoPlayYoutubePlayerConfig,\n        },\n        standard: {\n          videoAttributes: standardYoutubePlayerAttributes,\n          videoConfig: standardYoutubePlayerConfig,\n        },\n      },\n      vimeo: {\n        autoPlay: {\n          videoAttributes: autoPlayVimeoPlayerAttributes,\n          videoConfig: autoPlayVimeoPlayerConfig,\n        },\n        standard: {\n          videoAttributes: standardVimeoPlayerAttributes,\n          videoConfig: standardViemoPlayerConfig,\n        },\n      },\n    };\n\n    return (\n      <div\n        className={classNames('relative h-full w-full', {\n          invisible: isInvisible,\n        })}\n        data-testid={dataTestId}\n      >\n        <Video\n          videoSource={videoId}\n          videoAttributes={{\n            ...options[videoProvider]?.[`${autoPlay ? 'autoPlay' : 'standard'}`]\n              ?.videoAttributes,\n            ...customVideoAttributes,\n          }}\n          config={\n            options[videoProvider]?.[`${autoPlay ? 'autoPlay' : 'standard'}`]\n              ?.videoConfig\n          }\n          onEndedVideo={onEndedVideo}\n          onVideoReady={onVideoReady}\n          onVideoStart={onVideoStart}\n          classes={classes}\n          title={title}\n          ref={ref}\n        />\n        {children}\n      </div>\n    );\n  }\n);\n\nexport default ExternalVideo;\n","import NavButton from '@atoms/NavButton/NavButton';\nimport HorizontalDirectionEnum from '@models/enums/HorizontalDirectionEnum';\nimport Carousel from '@molecules/Carousel/Carousel';\nimport duplicateArrayItems from '@utils/helpers/duplicateArrayItems';\nimport useBreakpoint from '@utils/hooks/useBreakpoint';\nimport { ReactNode, useEffect, useState } from 'react';\nimport SwiperType from 'swiper';\nimport { Autoplay } from 'swiper/modules';\nimport { Swiper } from 'swiper/types';\nimport { AutoplayOptions } from 'swiper/types/modules/autoplay';\n\ninterface Props<T> {\n  readonly id: string;\n  readonly items: T[];\n  readonly autoplay?: AutoplayOptions;\n  readonly children: (itemsToDisplay: T[]) => ReactNode;\n  readonly loop?: boolean;\n}\n\nconst StripCarousel = <T,>({\n  children,\n  id,\n  items,\n  autoplay,\n  loop = false,\n}: Props<T>) => {\n  const [shouldLoop, setShouldLoop] = useState(false);\n  const [swiperInstance, setSwiperInstance] = useState<Swiper>();\n  const breakPoint = useBreakpoint();\n  const [hasMoreItemsToShow, setHasMoreItemsToShow] = useState(false);\n\n  const itemsToDisplay = shouldLoop\n    ? duplicateArrayItems(items, items.length + 1)\n    : items;\n\n  const handleSwiperUpdate = (swiper: SwiperType) => {\n    const swiperSlidesPerView = swiper?.params?.slidesPerView;\n    const currentSlidesPerView =\n      swiperSlidesPerView && typeof swiperSlidesPerView === 'number'\n        ? swiperSlidesPerView\n        : 0;\n\n    setHasMoreItemsToShow(items.length > currentSlidesPerView);\n  };\n\n  useEffect(() => {\n    const shouldLoopCondition =\n      ((!!breakPoint && breakPoint !== 'sm') || loop) && hasMoreItemsToShow;\n\n    setShouldLoop(shouldLoopCondition);\n  }, [breakPoint, hasMoreItemsToShow, loop]);\n\n  useEffect(() => {\n    swiperInstance?.navigation.update();\n\n    if (shouldLoop && autoplay) swiperInstance?.autoplay.start();\n  }, [autoplay, shouldLoop, swiperInstance]);\n\n  return (\n    <div className=\"overflow-hidden\">\n      <div className=\"overflow-swiper container lg:grid lg:grid-cols-12\">\n        <div className=\"3xl:px-32 col-span-full flex flex-row content-center items-center gap-13 px-0 xl:col-span-10 xl:col-start-2 xl:gap-[100px]\">\n          <div className=\"hidden lg:block\">\n            <NavButton\n              direction={HorizontalDirectionEnum.Left}\n              id={id}\n              disabled={!shouldLoop}\n            />\n          </div>\n\n          <Carousel\n            spaceBetween={16}\n            loop={shouldLoop}\n            navId={id}\n            className=\"overflow-large w-full\"\n            onResize={handleSwiperUpdate}\n            onInit={handleSwiperUpdate}\n            onSwiper={setSwiperInstance}\n            additionalModules={autoplay ? [Autoplay] : undefined}\n            autoplay={autoplay}\n            breakpoints={{\n              0: {\n                // Swiper v10 needs a value greater than 1 to properly show the prev/next slides when looping\n                slidesPerView: 1.001,\n                centeredSlides: true,\n              },\n              1024: {\n                slidesPerView: 1,\n                centeredSlides: false,\n              },\n              1440: {\n                slidesPerView: 2,\n                centeredSlides: false,\n              },\n            }}\n          >\n            {children(itemsToDisplay)}\n          </Carousel>\n\n          <div className=\"hidden lg:block\">\n            <NavButton\n              direction={HorizontalDirectionEnum.Right}\n              id={id}\n              disabled={!shouldLoop}\n            />\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default StripCarousel;\n","import Modal from '@atoms/Modal/Modal';\nimport Video from '@atoms/Video/Video';\nimport VideoProviderEnum from '@models/enums/VideoProviderEnum';\nimport ExternalVideo from '@molecules/ExternalVideo/ExternalVideo';\nimport { useState } from 'react';\n\ninterface Props {\n  readonly dataTestId?: string;\n  readonly videoTitle?: string;\n  readonly videoProvider?: VideoProviderEnum;\n  readonly videoId?: string;\n  readonly videoUrl?: string;\n  readonly isOpen: boolean;\n  readonly onOpenChange: (isOpen: boolean) => void;\n  readonly onCloseCallback?: () => void;\n  readonly shouldCloseOnClickOutsideContent?: boolean;\n  readonly transparent?: boolean;\n}\n\nconst VideoModal = ({\n  videoTitle,\n  videoProvider,\n  videoId,\n  isOpen,\n  onOpenChange,\n  onCloseCallback,\n  shouldCloseOnClickOutsideContent = true,\n  transparent = true,\n  videoUrl,\n  dataTestId,\n}: Props) => {\n  const [isPlaying, setIsPlaying] = useState(true);\n\n  return (\n    <Modal\n      setIsOpen={onOpenChange}\n      onCloseCallback={onCloseCallback}\n      isOpen={isOpen}\n      modalClasses=\"flex flex-col justify-center items-center\"\n      contentClasses=\"w-full max-h-[90vh] py-4\"\n      transparent={transparent}\n      shouldCloseOnClickOutsideContent={shouldCloseOnClickOutsideContent}\n      data-testid={dataTestId}\n    >\n      {videoId && videoProvider && (\n        <ExternalVideo\n          title={videoTitle}\n          videoProvider={videoProvider}\n          videoId={videoId}\n          autoPlay\n          classes=\"max-h-full w-auto m-auto\"\n        />\n      )}\n\n      {videoUrl && (\n        <Video\n          classes=\"max-h-full w-auto m-auto\"\n          title={videoTitle}\n          videoSource={videoUrl}\n          videoAttributes={{\n            playsinline: true,\n            muted: false,\n            playing: true,\n            loop: true,\n          }}\n          controls\n          isPlaying={isPlaying}\n          setIsPlaying={setIsPlaying}\n        />\n      )}\n    </Modal>\n  );\n};\n\nexport default VideoModal;\n","import Image from '@atoms/Image/Image';\nimport LinkCard from '@atoms/LinkCard/LinkCard';\nimport { IImageWithLink } from '@models/IImageWithLink';\nimport updateDataLayer from '@utils/helpers/gtm';\nimport useMediaQuery from '@utils/hooks/useMediaQuery';\nimport classNames from 'classnames';\n\ninterface Props extends IImageWithLink {\n  readonly pageObject?: {\n    readonly pageType: string;\n  };\n  readonly index: number;\n}\n\nconst HighlightCard = ({\n  media,\n  pageObject,\n  simpleLink,\n  subTitle,\n  title,\n  index,\n}: Props) => {\n  const isSmalldesktop = useMediaQuery(1440);\n  const isLargeDesktop = useMediaQuery(1900);\n  const isSmallToLargeDesktop = isLargeDesktop && !isSmalldesktop;\n  const textBodyStyles = isSmallToLargeDesktop ? 'body-three' : 'body-one';\n\n  return (\n    <LinkCard\n      className=\"p-2.5 lg:pr-6\"\n      onClick={() => {\n        if (pageObject?.pageType === 'HomepagePageViewModel') {\n          updateDataLayer({\n            event: 'selectContent',\n            content_type: 'highlight_card',\n            link_text: simpleLink?.url,\n          });\n        }\n      }}\n      link={simpleLink}\n      useSmallCard={isSmallToLargeDesktop}\n      dataTestId={`CT-04A1-Highlight-Card-${index}`}\n    >\n      <div className=\"flex h-full w-full flex-row items-center gap-3 md:gap-4\">\n        {media && (\n          <div className=\"h-full w-1/3 shrink-0 lg:w-1/2 xl:w-5/12\">\n            <Image\n              image={media}\n              imageClasses=\"h-full object-contain\"\n              sizes=\"300px\"\n              dataTestId={`CT-04A1-Highlight-Card-Image-${index}`}\n            />\n          </div>\n        )}\n\n        {(title || subTitle) && (\n          <div className=\"flex flex-col\">\n            {title && (\n              <p\n                className={classNames(\n                  'font-light text-grey-450 dark:text-yellow',\n                  textBodyStyles\n                )}\n                data-testid={`CT-04A1-Highlight-Card-Title-${index}`}\n              >\n                {title}\n              </p>\n            )}\n            {subTitle && (\n              <p\n                className={classNames(\n                  'font-light dark:text-white',\n                  textBodyStyles\n                )}\n                data-testid={`CT-04A1-Highlight-Card-Subtitle-${index}`}\n              >\n                {subTitle}\n              </p>\n            )}\n          </div>\n        )}\n      </div>\n    </LinkCard>\n  );\n};\n\nexport default HighlightCard;\n","import Hue from '@assets/hue_hero.svg';\nimport Button from '@atoms/Button/Button';\nimport Image from '@atoms/Image/Image';\nimport { IImage } from '@models/IImage';\nimport { IImageWithLink } from '@models/IImageWithLink';\nimport { ILink } from '@models/ILink';\nimport { IMeta } from '@models/IMeta';\nimport { IVideo } from '@models/IVideo';\nimport HighlightCard from '@molecules/HighlightCard/HighlightCard';\nimport StripCarousel from '@molecules/StripCarousel/StripCarousel';\nimport VideoModal from '@molecules/VideoModal/VideoModal';\nimport updateDataLayer from '@utils/helpers/gtm';\nimport slugify from '@utils/helpers/slugify';\nimport classNames from 'classnames';\nimport { useState } from 'react';\nimport { SwiperSlide } from 'swiper/react';\n\ninterface Props {\n  readonly title: string;\n  readonly subTitle?: string;\n  readonly primaryCta?: ILink;\n  readonly media: IImage;\n  readonly highlights?: IImageWithLink[];\n  readonly meta?: IMeta;\n  readonly video?: {\n    readonly videoCTALabel: string;\n    readonly video: IVideo;\n  };\n}\n\nconst ImpactHero = ({\n  highlights = [],\n  media,\n  meta,\n  primaryCta,\n  subTitle,\n  title,\n  video,\n}: Props) => {\n  const [isVideoModalOpen, setIsVideoModalOpen] = useState(false);\n\n  return (\n    <section className=\"component-padding dark relative overflow-hidden bg-black-100 pt-20 text-white\">\n      <div\n        className={classNames(\n          'container flex min-h-[375px] flex-col items-center md:min-h-[570px] lg:min-h-[300px] lg:flex-row xl:min-h-[450px] 2xl:min-h-[600px]',\n          { 'mb-13 lg:mb-[5.25rem]': !!highlights?.length }\n        )}\n      >\n        <div\n          className=\"relative z-20 mb-10 w-full lg:mb-0 lg:w-7/12\"\n          data-epi-property-name={meta?.editHints?.media}\n        >\n          <Image\n            image={media}\n            imageClasses=\"h-full w-full object-contain\"\n            sizes=\"(min-width: 1024px) 1024px, 100vw\"\n            lazyLoad={false}\n            dataTestId=\"CT-04A-Hero-Image\"\n          />\n        </div>\n\n        <div className=\"mt-auto flex flex-col items-center text-center lg:ml-auto lg:mt-0 lg:w-4/12 lg:items-start lg:text-left\">\n          <h1\n            data-testid=\"CT-04A-Title\"\n            data-epi-property-name={meta?.editHints?.title}\n          >\n            {title}\n          </h1>\n          {subTitle && (\n            <p\n              className=\"h1\"\n              data-epi-property-name={meta?.editHints?.subTitle}\n              data-testid=\"CT-04A-Subtitle\"\n            >\n              {subTitle}\n            </p>\n          )}\n\n          {primaryCta?.url && primaryCta?.name && !video && (\n            <Button\n              link={primaryCta}\n              linkCallback={() => {\n                if (pageObject?.pageType === 'HomepagePageViewModel') {\n                  updateDataLayer({\n                    event: 'selectContent',\n                    content_type: 'impact_hero',\n                    link_text: primaryCta.name,\n                  });\n                }\n              }}\n              className=\"mt-4 lg:mt-10\"\n              dataTestId=\"CT-04A-Primary-CTA\"\n            />\n          )}\n\n          {video?.video?.url && video.videoCTALabel && (\n            <>\n              <Button\n                onClick={() => {\n                  setIsVideoModalOpen(true);\n                }}\n                className=\"mt-4 lg:mt-10\"\n                dataTestId=\"CT-04A-Primary-Video-CTA\"\n              >\n                {video.videoCTALabel}\n              </Button>\n\n              <VideoModal\n                videoUrl={video.video?.url}\n                videoTitle={video.videoCTALabel}\n                isOpen={isVideoModalOpen}\n                onOpenChange={setIsVideoModalOpen}\n                shouldCloseOnClickOutsideContent={false}\n                transparent={false}\n                dataTestId=\"CT-33-Campaign-Intro-Video-Modal\"\n              />\n            </>\n          )}\n        </div>\n      </div>\n\n      {!!highlights?.length && (\n        <div className=\"relative z-20\">\n          <StripCarousel\n            id={`impact-hero-carousel-${meta?.contentLink ?? ''}`}\n            items={highlights}\n            autoplay={{\n              delay: 8000,\n            }}\n            loop\n          >\n            {(itemsToDisplay) =>\n              itemsToDisplay.map((highlight, index) => (\n                <SwiperSlide\n                  className=\"stretch-card\"\n                  key={slugify(\n                    `highlight-card-${highlight.simpleLink?.url}-${highlight.simpleLink?.name}-${index})`\n                  )}\n                >\n                  <HighlightCard {...highlight} index={index} />\n                </SwiperSlide>\n              ))\n            }\n          </StripCarousel>\n        </div>\n      )}\n\n      <div className=\"pointer-events-none absolute -top-[5%] left-0 z-10 flex items-center justify-center md:-top-[15%] lg:left-[5%] lg:top-[0] lg:w-[50%] xl:-top-[10%]\">\n        <img src={`${Hue}`} alt=\"Hue\" className=\"h-full w-full\" />\n      </div>\n    </section>\n  );\n};\n\nexport default ImpactHero;\n","const enum BreakpointEnum {\n  Small = 'sm',\n  Medium = 'md',\n  Large = 'lg',\n  XLarge = 'xl',\n}\n\nexport default BreakpointEnum;\n","enum HorizontalDirectionEnum {\n  Left = 'LEFT',\n  Right = 'RIGHT',\n}\n\nexport default HorizontalDirectionEnum;\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<IAriaLabelsState>((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 duplicateArrayItems = <T>(initialArray: T[], minTargetCount: number) => {\n  if (!initialArray?.length) return [];\n\n  const multiplier = Math.ceil(minTargetCount / initialArray.length);\n  const newArray = Array<T[]>(multiplier).fill(initialArray).flat();\n\n  return newArray;\n};\n\nexport default duplicateArrayItems;\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","const slugify = (value: string) =>\n  value\n    .toLowerCase()\n    .trim()\n    .replace(/[^\\w\\s-]/g, '')\n    .replace(/[\\s_-]+/g, '-')\n    .replace(/^-+|-+$/g, '');\n\nexport default slugify;\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 { 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<boolean>();\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","module.exports = \"data:image/svg+xml,%3csvg width='1151' height='1150' viewBox='0 0 1151 1150' fill='none' xmlns='http://www.w3.org/2000/svg'%3e %3cg opacity='0.35' filter='url(%23filter0_df_4014_178052)'%3e %3cpath d='M801 575C801 699.264 700.04 800 575.5 800C450.96 800 350 699.264 350 575C350 450.736 450.96 350 575.5 350C700.04 350 801 450.736 801 575Z' fill='%23FFDD00'/%3e %3c/g%3e %3cdefs%3e %3cfilter id='filter0_df_4014_178052' x='0' y='0' width='1151' height='1150' filterUnits='userSpaceOnUse' color-interpolation-filters='sRGB'%3e %3cfeFlood flood-opacity='0' result='BackgroundImageFix'/%3e %3cfeColorMatrix in='SourceAlpha' type='matrix' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0' result='hardAlpha'/%3e %3cfeOffset dy='1.66516'/%3e %3cfeGaussianBlur stdDeviation='0.832579'/%3e %3cfeComposite in2='hardAlpha' operator='out'/%3e %3cfeColorMatrix type='matrix' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0'/%3e %3cfeBlend mode='normal' in2='BackgroundImageFix' result='effect1_dropShadow_4014_178052'/%3e %3cfeBlend mode='normal' in='SourceGraphic' in2='effect1_dropShadow_4014_178052' result='shape'/%3e %3cfeGaussianBlur stdDeviation='175' result='effect2_foregroundBlur_4014_178052'/%3e %3c/filter%3e %3c/defs%3e %3c/svg%3e\""],"names":["_ref","children","className","dataTestId","disabled","editHint","link","linkCallback","secondary","secondaryBackgroundClassName","isLightMode","inverted","buttonProps","buttonClasses","classNames","url","name","React","createElement","href","target","onClick","_extends","ariaLabel","color","size","IconSizeEnum","lg","closeModalAriaLabel","useAriaLabels","type","black","white","red","style","width","height","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","ref","alt","altText","length","draggable","loading","onLoad","src","originalUrl","useSmallCard","linkProps","cardClasses","onCloseCallback","contentClasses","crossColor","crossMarginsClassName","crossClasses","isOpen","modalClasses","setIsOpen","showCloseButton","transparent","isCloseButtonFixed","closeButtonIconSize","md","shouldCloseOnClickOutsideContent","shouldLockBody","contentRef","useRef","useEffect","bodyScrollLock","close","useCallback","keyboardClose","ev","key","window","addEventListener","removeEventListener","handleClickOutsideContent","current","contains","Portal","mountId","FocusTrap","focusTrapOptions","preventScroll","escapeDeactivates","motion","div","animate","opacity","exit","initial","transition","duration","ease","Fragment","CloseButton","forwardRef","additionalDataLayerProperties","direction","id","hasBackgroundColor","sizeClassName","iconSize","enabledArrowColor","nextAriaLabel","previousAriaLabel","buttonRef","useImperativeHandle","focus","HorizontalDirectionEnum","Left","Right","tabIndex","onKeyDown","e","updateDataLayer","event","content_type","link_text","Icon","colorClassName","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","video_interaction","video_progress","video_title","handleVideoAction","action","playing","onProgress","_ref2","played","onStart","onEnded","onPause","onPlay","onReady","additionalModules","navId","analyticsEnabled","props","Swiper","onSlideChangeTransitionEnd","swiper","realIndex","previousIndex","activeIndex","a11y","enabled","navigation","prevEl","nextEl","keyboard","onlyInViewport","modules","A11y","Keyboard","Navigation","autoPlayYoutubePlayerAttributes","playsinline","muted","autoPlayYoutubePlayerConfig","youtube","playerVars","autoplay","mute","enablejsapi","showinfo","standardYoutubePlayerAttributes","standardYoutubePlayerConfig","autoPlayVimeoPlayerAttributes","autoPlayVimeoPlayerConfig","vimeo","playerOptions","standardVimeoPlayerAttributes","loop","standardViemoPlayerConfig","VideoProviderEnum","videoProvider","Youtube","videoId","autoPlay","customVideoAttributes","isInvisible","options","videoConfig","standard","invisible","Video","items","shouldLoop","setShouldLoop","swiperInstance","setSwiperInstance","breakPoint","hasMoreItemsToShow","setHasMoreItemsToShow","itemsToDisplay","duplicateArrayItems","handleSwiperUpdate","swiperSlidesPerView","params","slidesPerView","currentSlidesPerView","update","start","NavButton","Carousel","spaceBetween","onResize","onInit","onSwiper","Autoplay","undefined","breakpoints","centeredSlides","videoTitle","onOpenChange","videoUrl","Modal","ExternalVideo","media","pageObject","simpleLink","subTitle","index","isSmalldesktop","useMediaQuery","isSmallToLargeDesktop","textBodyStyles","LinkCard","pageType","Image","highlights","meta","primaryCta","video","isVideoModalOpen","setIsVideoModalOpen","editHints","Button","videoCTALabel","VideoModal","StripCarousel","contentLink","delay","map","highlight","SwiperSlide","slugify","HighlightCard","Hue","initialAriaLabels","backToFirstLevelNavigationAriaLabel","breadcrumbAriaLabel","breadcrumbFooterAriaLabel","clearFiltersAriaLabel","closeMenuAriaLabel","closeAddressListAriaLabel","closeMobileNavigationAriaLabel","closeSignUpFormAriaLabel","closeSiteNotificationAriaLabel","copyToClipboardAriaLabel","editOrDeleteAriaLabel","mainNavigationAriaLabel","moreInformationAriaLabel","openAddressListAriaLabel","openImageInFullScreenAriaLabel","openMenuAriaLabel","overlayToCloseDesktopNavigationAriaLabel","pauseVideoAriaLabel","playVideoAriaLabel","searchAriaLabel","shareToFacebookAriaLabel","shareToWhatsappAriaLabel","shareToXAriaLabel","siteNotificationsAriaLabel","uspStripAriaLabel","zoomInAriaLabel","zoomOutAriaLabel","create","set","ariaLabels","setAriaLabels","isScrollLocked","documentElementScroll","documentElement","getPropertyValue","cacheLocator","scrollY","setProperty","body","position","top","scrollTo","Math","abs","parseInt","initialArray","minTargetCount","multiplier","ceil","Array","fill","flat","eventPayload","dataLayer","push","value","toLowerCase","trim","replace","ariaLabelsFromStore","useAriaLabelsStore","state","getCurrentBreakpoint","innerWidth","screen","setScreen","resizeHandler","minWidth","isSmallerThan","setIsSmallerThan","handler","isDesiredWidth","module","exports"],"sourceRoot":""}