{"version":3,"file":"ErrorBannerNotification-Chunk-b95456629a1777f4933e.js","mappings":"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","sources":["webpack://nikon-client/./components/atoms/BannerNotification/BannerNotification.tsx","webpack://nikon-client/./components/atoms/CloseButton/CloseButton.tsx","webpack://nikon-client/./components/organisms/ErrorBannerNotification/ErrorBannerNotification.tsx","webpack://nikon-client/./models/enums/BannerNotificationStylesEnum.ts","webpack://nikon-client/./models/enums/ErrorBannerNotificationEnum.ts","webpack://nikon-client/./models/enums/IconSizeEnum.ts","webpack://nikon-client/./state-management/AriaLabelsStore.ts","webpack://nikon-client/./state-management/ErrorBannerNotificationDisplayStore.ts","webpack://nikon-client/./utility/hooks/useAriaLabels.ts","webpack://nikon-client/./utility/hooks/useMediaQuery.ts","webpack://nikon-client/./utility/hooks/useResizeObserver.ts","webpack://nikon-client/./node_modules/.pnpm/framer-motion@10.18.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/framer-motion/dist/es/utils/use-is-mounted.mjs","webpack://nikon-client/./node_modules/.pnpm/framer-motion@10.18.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/framer-motion/dist/es/components/AnimatePresence/PopChild.mjs","webpack://nikon-client/./node_modules/.pnpm/framer-motion@10.18.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/framer-motion/dist/es/components/AnimatePresence/PresenceChild.mjs","webpack://nikon-client/./node_modules/.pnpm/framer-motion@10.18.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/framer-motion/dist/es/components/AnimatePresence/index.mjs","webpack://nikon-client/./node_modules/.pnpm/framer-motion@10.18.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/framer-motion/dist/es/utils/use-force-update.mjs","webpack://nikon-client/./node_modules/.pnpm/framer-motion@10.18.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/framer-motion/dist/es/utils/use-unmount-effect.mjs"],"sourcesContent":["import CloseButton from '@atoms/CloseButton/CloseButton';\nimport Icon from '@atoms/Icon/Icon';\nimport { ILink } from '@models/ILink';\nimport BannerNotificationStylesEnum from '@models/enums/BannerNotificationStylesEnum';\nimport IconSizeEnum from '@models/enums/IconSizeEnum';\nimport useMediaQuery from '@utils/hooks/useMediaQuery';\nimport useResizeObserver from '@utils/hooks/useResizeObserver';\nimport classNames from 'classnames';\nimport FocusTrap from 'focus-trap-react';\nimport { motion } from 'framer-motion';\nimport { useState } from 'react';\n\ntype INotificationStyles = {\n  readonly [key in BannerNotificationStylesEnum]: {\n    readonly borderClassName?: string;\n    readonly backgroundClassName?: string;\n    readonly paddingClassName?: string;\n    readonly textColorClassName?: string;\n  };\n};\n\ninterface Props {\n  readonly displayStyle?: BannerNotificationStylesEnum;\n  readonly additionalCustomStyles?: Partial<INotificationStyles>;\n  readonly iconName?: string;\n  readonly caption?: string;\n  readonly closeLabel?: string;\n  readonly title?: string;\n  readonly className?: string;\n  readonly link?: ILink;\n  readonly richText?: string;\n  readonly desktopBreakpoint?: 'lg' | 'xl';\n  readonly isContentExpandable?: boolean;\n  readonly showMoreLabel?: string;\n  readonly showLessLabel?: string;\n  readonly isLarge?: boolean;\n  readonly onDismissNotification?: () => void;\n}\n\nconst getNotificationStyles = (\n  isLarge?: boolean,\n  additionalCustomStyles?: Partial<INotificationStyles>\n): INotificationStyles => {\n  const paddingWithoutBorder = isLarge ? 'px-5 py-5 lg:py-7.5' : 'p-5';\n  const paddingWithBorder = isLarge\n    ? 'px-[1.1875rem] py-[1.1875rem] lg:py-[1.8125rem]'\n    : 'p-[1.1875rem]';\n\n  return {\n    [BannerNotificationStylesEnum.Promo]: {\n      backgroundClassName: 'bg-yellow',\n      paddingClassName: paddingWithoutBorder,\n      ...additionalCustomStyles?.[BannerNotificationStylesEnum.Promo],\n    },\n    [BannerNotificationStylesEnum.Info]: {\n      backgroundClassName: 'bg-grey-100',\n      paddingClassName: paddingWithoutBorder,\n      ...additionalCustomStyles?.[BannerNotificationStylesEnum.Info],\n    },\n    [BannerNotificationStylesEnum.Warning]: {\n      borderClassName: 'border border-yellow',\n      paddingClassName: paddingWithBorder,\n      backgroundClassName: 'bg-yellow-200',\n      ...additionalCustomStyles?.[BannerNotificationStylesEnum.Warning],\n    },\n    [BannerNotificationStylesEnum.Error]: {\n      borderClassName: 'border border-red',\n      paddingClassName: paddingWithBorder,\n      textColorClassName: 'text-red-100',\n      ...additionalCustomStyles?.[BannerNotificationStylesEnum.Error],\n    },\n  };\n};\n\nconst BannerNotification = ({\n  displayStyle,\n  additionalCustomStyles,\n  iconName,\n  caption,\n  closeLabel,\n  title,\n  className,\n  link,\n  richText,\n  desktopBreakpoint = 'lg',\n  isContentExpandable,\n  showMoreLabel,\n  showLessLabel,\n  isLarge,\n  onDismissNotification,\n}: Props) => {\n  const [richTextRef, { scrollHeight: richTextContentHeight }] =\n    useResizeObserver();\n  const [isRichTextExpanded, setIsRichTextExpanded] = useState(false);\n  const isMobile = useMediaQuery(desktopBreakpoint === 'lg' ? 1024 : 1440);\n  const richTextCutOff = isMobile ? 72 : 24;\n  const isRichTextExpandable = richTextContentHeight > richTextCutOff;\n  const {\n    borderClassName,\n    backgroundClassName,\n    textColorClassName = 'text-black-100',\n    paddingClassName,\n  } = getNotificationStyles(isLarge, additionalCustomStyles)[\n    displayStyle || BannerNotificationStylesEnum.Info\n  ];\n\n  return (\n    <div\n      className={classNames(\n        'flex w-full gap-x-5 rounded-[10px]',\n        borderClassName,\n        backgroundClassName,\n        textColorClassName,\n        paddingClassName,\n        className\n      )}\n      data-testid=\"Banner-Notification\"\n      aria-live=\"polite\"\n    >\n      {iconName && (\n        <div className=\"flex\" data-testid=\"Banner-Notification-Icon\">\n          <Icon name={iconName} colorClassName={textColorClassName} />\n        </div>\n      )}\n\n      <div\n        className={classNames(\n          'flex w-full flex-col justify-between',\n          desktopBreakpoint === 'lg'\n            ? 'max-lg:gap-y-2.5 lg:flex-row lg:gap-x-7.5'\n            : 'max-xl:gap-y-2.5 xl:flex-row xl:gap-x-7.5',\n          {\n            'lg:items-center': closeLabel,\n          }\n        )}\n      >\n        {(caption || title) && !richText && (\n          <div>\n            {caption && (\n              <span\n                className=\"font-normal\"\n                data-testid=\"Banner-Notification-Caption\"\n              >\n                {caption}\n              </span>\n            )}{' '}\n            {title}\n          </div>\n        )}\n\n        {richText && !isContentExpandable && (\n          <div\n            className=\"body-three\"\n            data-testid=\"Banner-Notification-Rich-Text\"\n            dangerouslySetInnerHTML={{ __html: richText }}\n          />\n        )}\n\n        {richText && isContentExpandable && (\n          <div\n            className={classNames(\n              'flex items-start',\n              desktopBreakpoint === 'lg' ? 'max-lg:flex-col' : 'max-xl:flex-col'\n            )}\n          >\n            <motion.div\n              ref={richTextRef}\n              className=\"body-three overflow-hidden\"\n              animate={!isRichTextExpanded ? 'initial' : 'animate'}\n              variants={{\n                animate: { height: 'auto' },\n                initial: {\n                  height: isRichTextExpandable ? richTextCutOff : 'auto',\n                },\n              }}\n              dangerouslySetInnerHTML={{ __html: richText }}\n              data-testid=\"Banner-Notification-Rich-Text\"\n            />\n\n            {isRichTextExpandable && (\n              <button\n                className=\"shrink-0 underline\"\n                onClick={() => {\n                  setIsRichTextExpanded(!isRichTextExpanded);\n                }}\n                data-testid=\"Banner-Notification-Show-More/Less\"\n              >\n                <strong>\n                  {isRichTextExpanded ? showLessLabel : showMoreLabel}\n                </strong>\n              </button>\n            )}\n          </div>\n        )}\n\n        {link?.url && link?.name && (\n          <div\n            className={classNames(\n              'mr-2.5 flex shrink-0 flex-row',\n              desktopBreakpoint === 'lg' ? 'lg:flex-col' : 'xl:flex-col'\n            )}\n          >\n            <a\n              href={link.url}\n              target={link.target}\n              className=\"font-normal underline\"\n              data-testid=\"Banner-Notification-Link\"\n            >\n              {link?.name}\n            </a>\n          </div>\n        )}\n        {closeLabel && (\n          <FocusTrap focusTrapOptions={{ initialFocus: false }}>\n            <div>\n              {isMobile ? (\n                <button\n                  className=\"underline text-start body-three body-three--bold\"\n                  onClick={() => {\n                    onDismissNotification?.();\n                  }}\n                >\n                  {closeLabel}\n                </button>\n              ) : (\n                <CloseButton\n                  className=\"relative\"\n                  color=\"red\"\n                  size={IconSizeEnum.md}\n                  onClick={() => {\n                    onDismissNotification?.();\n                  }}\n                />\n              )}\n            </div>\n          </FocusTrap>\n        )}\n      </div>\n    </div>\n  );\n};\n\nexport default BannerNotification;\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 BannerNotification from '@atoms/BannerNotification/BannerNotification';\nimport BannerNotificationStylesEnum from '@models/enums/BannerNotificationStylesEnum';\nimport ErrorBannerNotificationEnum from '@models/enums/ErrorBannerNotificationEnum';\nimport useErrorNotificationStore from '@state/ErrorBannerNotificationDisplayStore';\nimport { AnimatePresence, motion } from 'framer-motion';\n\ninterface Props {\n  readonly apiDownLabel: string;\n  readonly closeLabel: string;\n  readonly accountDeleteAddressLabel: string;\n  readonly accountDefaultAddressUpdateLabel: string;\n  readonly accountDeleteContactSubmitLabel: string;\n  readonly accountGetOrderDetailsLabel: string;\n  readonly shippingPickUpLocationsLabel: string;\n  readonly lightboxOuterImagesLabel: string;\n  readonly miniBasketDetailsLabel: string;\n  readonly orderSummaryRemoveVoucherLabel: string;\n  readonly productDetailsNotifyMeLabel: string;\n  readonly cartRemoveItemLabel: string;\n  readonly newsletterSignupBannerLabel: string;\n  readonly newsletterSignupPopupLabel: string;\n  readonly onlineRetailersDataLabel: string;\n  readonly searchResultsLabel: string;\n}\n\nconst ErrorBannerNotification = ({\n  apiDownLabel,\n  closeLabel,\n  accountDeleteAddressLabel,\n  accountDefaultAddressUpdateLabel,\n  accountDeleteContactSubmitLabel,\n  accountGetOrderDetailsLabel,\n  shippingPickUpLocationsLabel,\n  lightboxOuterImagesLabel,\n  miniBasketDetailsLabel,\n  orderSummaryRemoveVoucherLabel,\n  productDetailsNotifyMeLabel,\n  cartRemoveItemLabel,\n  newsletterSignupBannerLabel,\n  newsletterSignupPopupLabel,\n  onlineRetailersDataLabel,\n  searchResultsLabel,\n}: Props) => {\n  const { errorBannerNotification, setErrorBannerNotification } =\n    useErrorNotificationStore();\n\n  const ErrorBannerNotificationLookup = Object.fromEntries(\n    Object.entries(ErrorBannerNotificationEnum).map(([key, value]) => [\n      value,\n      {\n        AccountDeleteAddress: accountDeleteAddressLabel,\n        AccountDefaultAddressUpdate: accountDefaultAddressUpdateLabel,\n        AccountDeleteContactSubmit: accountDeleteContactSubmitLabel,\n        AccountGetOrderDetails: accountGetOrderDetailsLabel,\n        ShippingPickUpLocations: shippingPickUpLocationsLabel,\n        LightboxOuterImages: lightboxOuterImagesLabel,\n        MiniBasketDetails: miniBasketDetailsLabel,\n        OrderSummaryRemoveVoucher: orderSummaryRemoveVoucherLabel,\n        ProductDetailsNotifyMe: productDetailsNotifyMeLabel,\n        CartRemoveItem: cartRemoveItemLabel,\n        NewsletterSignupBanner: newsletterSignupBannerLabel,\n        NewsletterSignupPopup: newsletterSignupPopupLabel,\n        OnlineRetailersData: onlineRetailersDataLabel,\n        SearchResults: searchResultsLabel,\n      }[key as keyof typeof ErrorBannerNotificationEnum],\n    ])\n  ) as Record<ErrorBannerNotificationEnum, string>;\n\n  const currentError = errorBannerNotification\n    ? ErrorBannerNotificationLookup[errorBannerNotification]\n    : '';\n\n  return (\n    <AnimatePresence>\n      {errorBannerNotification && (\n        <motion.div\n          animate={{ opacity: 1 }}\n          initial={{ opacity: 0 }}\n          exit={{ opacity: 0 }}\n          transition={{ duration: 0.3 }}\n        >\n          <BannerNotification\n            displayStyle={BannerNotificationStylesEnum.Error}\n            iconName=\"warning\"\n            caption={apiDownLabel}\n            title={currentError}\n            closeLabel={closeLabel}\n            className=\"bg-white\"\n            onDismissNotification={() => setErrorBannerNotification(null)}\n          />\n        </motion.div>\n      )}\n    </AnimatePresence>\n  );\n};\n\nexport default ErrorBannerNotification;\n","const enum BannerNotificationStylesEnum {\n  Info = 'info',\n  Warning = 'warning',\n  Error = 'error',\n  Promo = 'promo',\n}\n\nexport default BannerNotificationStylesEnum;\n","enum ErrorBannerNotificationEnum {\n  AccountDeleteAddress = 'accountDeleteAddress',\n  AccountDefaultAddressUpdate = 'defaultAddressUpdate',\n  AccountDeleteContactSubmit = 'deleteContactSubmit',\n  AccountGetOrderDetails = 'accountGetOrderDetails',\n  ShippingPickUpLocations = 'shippingPickUpLocations',\n  LightboxOuterImages = 'lightboxOuterImages',\n  MiniBasketDetails = 'miniBasketDetails',\n  OrderSummaryRemoveVoucher = 'orderSummaryRemoveVoucher',\n  ProductDetailsNotifyMe = 'productDetailsNotifyMe',\n  CartRemoveItem = 'cartRemoveItem',\n  NewsletterSignupBanner = 'newsletterSignupBanner',\n  NewsletterSignupPopup = 'newsletterSignupPopup',\n  OnlineRetailersData = 'onlineRetailersData',\n  SearchResults = 'searchResults',\n}\n\nexport default ErrorBannerNotificationEnum;\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","import ErrorBannerNotificationEnum from '@models/enums/ErrorBannerNotificationEnum';\nimport create from 'zustand';\n\ninterface IErrorBannerNotificationState {\n  readonly errorBannerNotification: ErrorBannerNotificationEnum | null;\n  readonly setErrorBannerNotification: (\n    errorNotificationDisplay: ErrorBannerNotificationEnum | null\n  ) => void;\n}\n\nconst useErrorNotificationStore = create<IErrorBannerNotificationState>(\n  (set) => ({\n    errorBannerNotification: null,\n    setErrorBannerNotification: (\n      errorBannerNotification: ErrorBannerNotificationEnum | null\n    ) => set({ errorBannerNotification }),\n  })\n);\n\nexport default useErrorNotificationStore;\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 { 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","import { useCallback, useRef, useState } from 'react';\n\nconst useResizeObserver = () => {\n  const observerRef = useRef<ResizeObserver>();\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","import { useRef } from 'react';\nimport { useIsomorphicLayoutEffect } from './use-isomorphic-effect.mjs';\n\nfunction useIsMounted() {\n    const isMounted = useRef(false);\n    useIsomorphicLayoutEffect(() => {\n        isMounted.current = true;\n        return () => {\n            isMounted.current = false;\n        };\n    }, []);\n    return isMounted;\n}\n\nexport { useIsMounted };\n","import * as React from 'react';\nimport { useId, useRef, useInsertionEffect } from 'react';\n\n/**\n * Measurement functionality has to be within a separate component\n * to leverage snapshot lifecycle.\n */\nclass PopChildMeasure extends React.Component {\n    getSnapshotBeforeUpdate(prevProps) {\n        const element = this.props.childRef.current;\n        if (element && prevProps.isPresent && !this.props.isPresent) {\n            const size = this.props.sizeRef.current;\n            size.height = element.offsetHeight || 0;\n            size.width = element.offsetWidth || 0;\n            size.top = element.offsetTop;\n            size.left = element.offsetLeft;\n        }\n        return null;\n    }\n    /**\n     * Required with getSnapshotBeforeUpdate to stop React complaining.\n     */\n    componentDidUpdate() { }\n    render() {\n        return this.props.children;\n    }\n}\nfunction PopChild({ children, isPresent }) {\n    const id = useId();\n    const ref = useRef(null);\n    const size = useRef({\n        width: 0,\n        height: 0,\n        top: 0,\n        left: 0,\n    });\n    /**\n     * We create and inject a style block so we can apply this explicit\n     * sizing in a non-destructive manner by just deleting the style block.\n     *\n     * We can't apply size via render as the measurement happens\n     * in getSnapshotBeforeUpdate (post-render), likewise if we apply the\n     * styles directly on the DOM node, we might be overwriting\n     * styles set via the style prop.\n     */\n    useInsertionEffect(() => {\n        const { width, height, top, left } = size.current;\n        if (isPresent || !ref.current || !width || !height)\n            return;\n        ref.current.dataset.motionPopId = id;\n        const style = document.createElement(\"style\");\n        document.head.appendChild(style);\n        if (style.sheet) {\n            style.sheet.insertRule(`\n          [data-motion-pop-id=\"${id}\"] {\n            position: absolute !important;\n            width: ${width}px !important;\n            height: ${height}px !important;\n            top: ${top}px !important;\n            left: ${left}px !important;\n          }\n        `);\n        }\n        return () => {\n            document.head.removeChild(style);\n        };\n    }, [isPresent]);\n    return (React.createElement(PopChildMeasure, { isPresent: isPresent, childRef: ref, sizeRef: size }, React.cloneElement(children, { ref })));\n}\n\nexport { PopChild };\n","import * as React from 'react';\nimport { useId, useMemo } from 'react';\nimport { PresenceContext } from '../../context/PresenceContext.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\nimport { PopChild } from './PopChild.mjs';\n\nconst PresenceChild = ({ children, initial, isPresent, onExitComplete, custom, presenceAffectsLayout, mode, }) => {\n    const presenceChildren = useConstant(newChildrenMap);\n    const id = useId();\n    const context = useMemo(() => ({\n        id,\n        initial,\n        isPresent,\n        custom,\n        onExitComplete: (childId) => {\n            presenceChildren.set(childId, true);\n            for (const isComplete of presenceChildren.values()) {\n                if (!isComplete)\n                    return; // can stop searching when any is incomplete\n            }\n            onExitComplete && onExitComplete();\n        },\n        register: (childId) => {\n            presenceChildren.set(childId, false);\n            return () => presenceChildren.delete(childId);\n        },\n    }), \n    /**\n     * If the presence of a child affects the layout of the components around it,\n     * we want to make a new context value to ensure they get re-rendered\n     * so they can detect that layout change.\n     */\n    presenceAffectsLayout ? undefined : [isPresent]);\n    useMemo(() => {\n        presenceChildren.forEach((_, key) => presenceChildren.set(key, false));\n    }, [isPresent]);\n    /**\n     * If there's no `motion` components to fire exit animations, we want to remove this\n     * component immediately.\n     */\n    React.useEffect(() => {\n        !isPresent &&\n            !presenceChildren.size &&\n            onExitComplete &&\n            onExitComplete();\n    }, [isPresent]);\n    if (mode === \"popLayout\") {\n        children = React.createElement(PopChild, { isPresent: isPresent }, children);\n    }\n    return (React.createElement(PresenceContext.Provider, { value: context }, children));\n};\nfunction newChildrenMap() {\n    return new Map();\n}\n\nexport { PresenceChild };\n","import * as React from 'react';\nimport { useContext, useRef, cloneElement, Children, isValidElement } from 'react';\nimport { useForceUpdate } from '../../utils/use-force-update.mjs';\nimport { useIsMounted } from '../../utils/use-is-mounted.mjs';\nimport { PresenceChild } from './PresenceChild.mjs';\nimport { LayoutGroupContext } from '../../context/LayoutGroupContext.mjs';\nimport { useIsomorphicLayoutEffect } from '../../utils/use-isomorphic-effect.mjs';\nimport { useUnmountEffect } from '../../utils/use-unmount-effect.mjs';\nimport { invariant } from '../../utils/errors.mjs';\n\nconst getChildKey = (child) => child.key || \"\";\nfunction updateChildLookup(children, allChildren) {\n    children.forEach((child) => {\n        const key = getChildKey(child);\n        allChildren.set(key, child);\n    });\n}\nfunction onlyElements(children) {\n    const filtered = [];\n    // We use forEach here instead of map as map mutates the component key by preprending `.$`\n    Children.forEach(children, (child) => {\n        if (isValidElement(child))\n            filtered.push(child);\n    });\n    return filtered;\n}\n/**\n * `AnimatePresence` enables the animation of components that have been removed from the tree.\n *\n * When adding/removing more than a single child, every child **must** be given a unique `key` prop.\n *\n * Any `motion` components that have an `exit` property defined will animate out when removed from\n * the tree.\n *\n * ```jsx\n * import { motion, AnimatePresence } from 'framer-motion'\n *\n * export const Items = ({ items }) => (\n *   <AnimatePresence>\n *     {items.map(item => (\n *       <motion.div\n *         key={item.id}\n *         initial={{ opacity: 0 }}\n *         animate={{ opacity: 1 }}\n *         exit={{ opacity: 0 }}\n *       />\n *     ))}\n *   </AnimatePresence>\n * )\n * ```\n *\n * You can sequence exit animations throughout a tree using variants.\n *\n * If a child contains multiple `motion` components with `exit` props, it will only unmount the child\n * once all `motion` components have finished animating out. Likewise, any components using\n * `usePresence` all need to call `safeToRemove`.\n *\n * @public\n */\nconst AnimatePresence = ({ children, custom, initial = true, onExitComplete, exitBeforeEnter, presenceAffectsLayout = true, mode = \"sync\", }) => {\n    invariant(!exitBeforeEnter, \"Replace exitBeforeEnter with mode='wait'\");\n    // We want to force a re-render once all exiting animations have finished. We\n    // either use a local forceRender function, or one from a parent context if it exists.\n    const forceRender = useContext(LayoutGroupContext).forceRender || useForceUpdate()[0];\n    const isMounted = useIsMounted();\n    // Filter out any children that aren't ReactElements. We can only track ReactElements with a props.key\n    const filteredChildren = onlyElements(children);\n    let childrenToRender = filteredChildren;\n    const exitingChildren = useRef(new Map()).current;\n    // Keep a living record of the children we're actually rendering so we\n    // can diff to figure out which are entering and exiting\n    const presentChildren = useRef(childrenToRender);\n    // A lookup table to quickly reference components by key\n    const allChildren = useRef(new Map()).current;\n    // If this is the initial component render, just deal with logic surrounding whether\n    // we play onMount animations or not.\n    const isInitialRender = useRef(true);\n    useIsomorphicLayoutEffect(() => {\n        isInitialRender.current = false;\n        updateChildLookup(filteredChildren, allChildren);\n        presentChildren.current = childrenToRender;\n    });\n    useUnmountEffect(() => {\n        isInitialRender.current = true;\n        allChildren.clear();\n        exitingChildren.clear();\n    });\n    if (isInitialRender.current) {\n        return (React.createElement(React.Fragment, null, childrenToRender.map((child) => (React.createElement(PresenceChild, { key: getChildKey(child), isPresent: true, initial: initial ? undefined : false, presenceAffectsLayout: presenceAffectsLayout, mode: mode }, child)))));\n    }\n    // If this is a subsequent render, deal with entering and exiting children\n    childrenToRender = [...childrenToRender];\n    // Diff the keys of the currently-present and target children to update our\n    // exiting list.\n    const presentKeys = presentChildren.current.map(getChildKey);\n    const targetKeys = filteredChildren.map(getChildKey);\n    // Diff the present children with our target children and mark those that are exiting\n    const numPresent = presentKeys.length;\n    for (let i = 0; i < numPresent; i++) {\n        const key = presentKeys[i];\n        if (targetKeys.indexOf(key) === -1 && !exitingChildren.has(key)) {\n            exitingChildren.set(key, undefined);\n        }\n    }\n    // If we currently have exiting children, and we're deferring rendering incoming children\n    // until after all current children have exiting, empty the childrenToRender array\n    if (mode === \"wait\" && exitingChildren.size) {\n        childrenToRender = [];\n    }\n    // Loop through all currently exiting components and clone them to overwrite `animate`\n    // with any `exit` prop they might have defined.\n    exitingChildren.forEach((component, key) => {\n        // If this component is actually entering again, early return\n        if (targetKeys.indexOf(key) !== -1)\n            return;\n        const child = allChildren.get(key);\n        if (!child)\n            return;\n        const insertionIndex = presentKeys.indexOf(key);\n        let exitingComponent = component;\n        if (!exitingComponent) {\n            const onExit = () => {\n                // clean up the exiting children map\n                exitingChildren.delete(key);\n                // compute the keys of children that were rendered once but are no longer present\n                // this could happen in case of too many fast consequent renderings\n                // @link https://github.com/framer/motion/issues/2023\n                const leftOverKeys = Array.from(allChildren.keys()).filter((childKey) => !targetKeys.includes(childKey));\n                // clean up the all children map\n                leftOverKeys.forEach((leftOverKey) => allChildren.delete(leftOverKey));\n                // make sure to render only the children that are actually visible\n                presentChildren.current = filteredChildren.filter((presentChild) => {\n                    const presentChildKey = getChildKey(presentChild);\n                    return (\n                    // filter out the node exiting\n                    presentChildKey === key ||\n                        // filter out the leftover children\n                        leftOverKeys.includes(presentChildKey));\n                });\n                // Defer re-rendering until all exiting children have indeed left\n                if (!exitingChildren.size) {\n                    if (isMounted.current === false)\n                        return;\n                    forceRender();\n                    onExitComplete && onExitComplete();\n                }\n            };\n            exitingComponent = (React.createElement(PresenceChild, { key: getChildKey(child), isPresent: false, onExitComplete: onExit, custom: custom, presenceAffectsLayout: presenceAffectsLayout, mode: mode }, child));\n            exitingChildren.set(key, exitingComponent);\n        }\n        childrenToRender.splice(insertionIndex, 0, exitingComponent);\n    });\n    // Add `MotionContext` even to children that don't need it to ensure we're rendering\n    // the same tree between renders\n    childrenToRender = childrenToRender.map((child) => {\n        const key = child.key;\n        return exitingChildren.has(key) ? (child) : (React.createElement(PresenceChild, { key: getChildKey(child), isPresent: true, presenceAffectsLayout: presenceAffectsLayout, mode: mode }, child));\n    });\n    if (process.env.NODE_ENV !== \"production\" &&\n        mode === \"wait\" &&\n        childrenToRender.length > 1) {\n        console.warn(`You're attempting to animate multiple children within AnimatePresence, but its mode is set to \"wait\". This will lead to odd visual behaviour.`);\n    }\n    return (React.createElement(React.Fragment, null, exitingChildren.size\n        ? childrenToRender\n        : childrenToRender.map((child) => cloneElement(child))));\n};\n\nexport { AnimatePresence };\n","import { useState, useCallback } from 'react';\nimport { useIsMounted } from './use-is-mounted.mjs';\nimport { frame } from '../frameloop/frame.mjs';\n\nfunction useForceUpdate() {\n    const isMounted = useIsMounted();\n    const [forcedRenderCount, setForcedRenderCount] = useState(0);\n    const forceRender = useCallback(() => {\n        isMounted.current && setForcedRenderCount(forcedRenderCount + 1);\n    }, [forcedRenderCount]);\n    /**\n     * Defer this to the end of the next animation frame in case there are multiple\n     * synchronous calls.\n     */\n    const deferredForceRender = useCallback(() => frame.postRender(forceRender), [forceRender]);\n    return [deferredForceRender, forcedRenderCount];\n}\n\nexport { useForceUpdate };\n","import { useEffect } from 'react';\n\nfunction useUnmountEffect(callback) {\n    return useEffect(() => () => callback(), []);\n}\n\nexport { useUnmountEffect };\n"],"names":["_ref","displayStyle","additionalCustomStyles","iconName","caption","closeLabel","title","className","link","richText","desktopBreakpoint","isContentExpandable","showMoreLabel","showLessLabel","isLarge","onDismissNotification","richTextRef","scrollHeight","richTextContentHeight","useResizeObserver","isRichTextExpanded","setIsRichTextExpanded","useState","isMobile","useMediaQuery","richTextCutOff","isRichTextExpandable","borderClassName","backgroundClassName","textColorClassName","paddingClassName","getNotificationStyles","paddingWithoutBorder","paddingWithBorder","BannerNotificationStylesEnum","Promo","Info","Warning","Error","React","createElement","classNames","Icon","name","colorClassName","dangerouslySetInnerHTML","__html","motion","div","ref","animate","variants","height","initial","onClick","url","href","target","FocusTrap","focusTrapOptions","initialFocus","CloseButton","color","size","IconSizeEnum","md","ariaLabel","lg","dataTestId","closeModalAriaLabel","useAriaLabels","type","black","white","red","style","width","apiDownLabel","accountDeleteAddressLabel","accountDefaultAddressUpdateLabel","accountDeleteContactSubmitLabel","accountGetOrderDetailsLabel","shippingPickUpLocationsLabel","lightboxOuterImagesLabel","miniBasketDetailsLabel","orderSummaryRemoveVoucherLabel","productDetailsNotifyMeLabel","cartRemoveItemLabel","newsletterSignupBannerLabel","newsletterSignupPopupLabel","onlineRetailersDataLabel","searchResultsLabel","errorBannerNotification","setErrorBannerNotification","useErrorNotificationStore","ErrorBannerNotificationLookup","Object","fromEntries","entries","ErrorBannerNotificationEnum","map","_ref2","key","value","AccountDeleteAddress","AccountDefaultAddressUpdate","AccountDeleteContactSubmit","AccountGetOrderDetails","ShippingPickUpLocations","LightboxOuterImages","MiniBasketDetails","OrderSummaryRemoveVoucher","ProductDetailsNotifyMe","CartRemoveItem","NewsletterSignupBanner","NewsletterSignupPopup","OnlineRetailersData","SearchResults","currentError","AnimatePresence","opacity","exit","transition","duration","BannerNotification","initialAriaLabels","backToFirstLevelNavigationAriaLabel","breadcrumbAriaLabel","breadcrumbFooterAriaLabel","clearFiltersAriaLabel","closeMenuAriaLabel","closeAddressListAriaLabel","closeMobileNavigationAriaLabel","closeSignUpFormAriaLabel","closeSiteNotificationAriaLabel","copyToClipboardAriaLabel","editOrDeleteAriaLabel","mainNavigationAriaLabel","moreInformationAriaLabel","nextAriaLabel","openAddressListAriaLabel","openImageInFullScreenAriaLabel","openMenuAriaLabel","overlayToCloseDesktopNavigationAriaLabel","pauseVideoAriaLabel","playVideoAriaLabel","previousAriaLabel","searchAriaLabel","shareToFacebookAriaLabel","shareToWhatsappAriaLabel","shareToXAriaLabel","siteNotificationsAriaLabel","uspStripAriaLabel","zoomInAriaLabel","zoomOutAriaLabel","create","set","ariaLabels","setAriaLabels","ariaLabelsFromStore","useAriaLabelsStore","state","useEffect","minWidth","isSmallerThan","setIsSmallerThan","handler","useCallback","isDesiredWidth","window","innerWidth","addEventListener","removeEventListener","observerRef","useRef","resizeParameters","setResizeParameters","clientWidth","clientHeight","scrollWidth","handleResize","Array","isArray","entry","contentRect","node","current","disconnect","undefined","ResizeObserver","observe","useIsMounted","isMounted","PopChildMeasure","getSnapshotBeforeUpdate","prevProps","element","this","props","childRef","isPresent","sizeRef","offsetHeight","offsetWidth","top","offsetTop","left","offsetLeft","componentDidUpdate","render","children","PopChild","id","useId","useInsertionEffect","dataset","motionPopId","document","head","appendChild","sheet","insertRule","removeChild","PresenceChild","onExitComplete","custom","presenceAffectsLayout","mode","presenceChildren","newChildrenMap","context","useMemo","childId","isComplete","values","register","delete","forEach","_","PresenceContext","Provider","Map","getChildKey","child","exitBeforeEnter","forceRender","useContext","LayoutGroupContext","L","forcedRenderCount","setForcedRenderCount","postRender","useForceUpdate","filteredChildren","filtered","Children","isValidElement","push","onlyElements","childrenToRender","exitingChildren","presentChildren","allChildren","isInitialRender","callback","updateChildLookup","clear","presentKeys","targetKeys","numPresent","length","i","indexOf","has","component","get","insertionIndex","exitingComponent","onExit","leftOverKeys","from","keys","filter","childKey","includes","leftOverKey","presentChild","presentChildKey","splice","cloneElement"],"sourceRoot":""}