{"version":3,"file":"KitCarousel-Chunk-73e0eb587ef198ab9b35.js","mappings":"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","sources":["webpack://nikon-client/./components/atoms/Button/Button.tsx","webpack://nikon-client/./components/atoms/Image/Image.tsx","webpack://nikon-client/./components/atoms/PriceDisplayText/PriceDisplayText.tsx","webpack://nikon-client/./components/molecules/Carousel/Carousel.tsx","webpack://nikon-client/./components/molecules/PaginationCarousel/PaginationCarousel.tsx","webpack://nikon-client/./components/molecules/KitCarouselCard/KitCarouselCard.tsx","webpack://nikon-client/./components/organisms/KitCarousel/KitCarousel.tsx","webpack://nikon-client/./models/enums/BreakpointEnum.ts","webpack://nikon-client/./utility/helpers/gtm.ts","webpack://nikon-client/./utility/helpers/mapToNewTrackingData.ts","webpack://nikon-client/./utility/hooks/useBreakpoint.ts","webpack://nikon-client/./node_modules/.pnpm/classnames@2.5.1/node_modules/classnames/index.js"],"sourcesContent":["import { ILink } from '@models/ILink';\nimport classNames from 'classnames';\nimport {\n  ButtonHTMLAttributes,\n  DetailedHTMLProps,\n  PropsWithChildren,\n} from 'react';\n\ninterface Props {\n  readonly className?: string;\n  readonly dataTestId?: string;\n  readonly disabled?: boolean;\n  readonly editHint?: string;\n  readonly link?: ILink;\n  readonly linkCallback?: () => void;\n  readonly secondary?: boolean;\n  readonly secondaryBackgroundClassName?: string;\n  readonly isLightMode?: boolean;\n  readonly inverted?: boolean;\n}\n\ntype ButtonProps = Props &\n  DetailedHTMLProps<ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>;\n\nconst Button = ({\n  children,\n  className,\n  dataTestId,\n  disabled = false,\n  editHint,\n  link,\n  linkCallback,\n  secondary = false,\n  secondaryBackgroundClassName = 'bg-transparent',\n  isLightMode,\n  inverted = false,\n  ...buttonProps\n}: PropsWithChildren<ButtonProps>) => {\n  const buttonClasses = classNames(\n    {\n      'bg-yellow py-1 px-4 text-black-100 hover:bg-yellow-100 focus:bg-yellow-500 active:bg-yellow-500':\n        !disabled && !secondary && !inverted,\n      //\n      [`${secondaryBackgroundClassName} border border-yellow py-[3px] px-[15px] text-black-100 hover:border-yellow-100 hover:bg-yellow-100 hover:text-black-100 focus:border-yellow-500 focus:bg-yellow-500 active:border-yellow-500 active:bg-yellow-500 ${\n        isLightMode\n          ? ''\n          : 'dark:text-white dark:hover:text-black-100 dark:focus:text-black-100 dark:active:text-black-100'\n      }`]: !disabled && secondary && !inverted,\n      //\n      'bg-grey text-grey-500 py-1 px-4': disabled,\n      //\n      'bg-black text-white py-1 px-4 active:bg-grey-600 hover:bg-grey-600 focus:bg-grey-600':\n        !disabled && !secondary && inverted,\n    },\n    'cta rounded-full inline-block min-h-min select-none',\n    className\n  );\n\n  return link?.url && (link?.name || children) && !disabled ? (\n    <a\n      className={buttonClasses}\n      href={link.url}\n      target={link.target}\n      data-epi-property-name={editHint}\n      onClick={linkCallback}\n      data-testid={dataTestId}\n    >\n      {children || link.name}\n    </a>\n  ) : (\n    <button\n      {...buttonProps}\n      className={buttonClasses}\n      disabled={disabled}\n      data-epi-property-name={editHint}\n      data-testid={dataTestId}\n    >\n      {children}\n    </button>\n  );\n};\n\nexport default Button;\n","import BreakpointEnum from '@models/enums/BreakpointEnum';\nimport { IImage } from '@models/IImage';\nimport useBreakpoint from '@utils/hooks/useBreakpoint';\nimport classNames from 'classnames';\nimport { PropsWithChildren, RefObject, useState } from 'react';\n\ninterface Props {\n  readonly classes?: string;\n  readonly dataTestId?: string;\n  readonly epiEdit?: string;\n  readonly image?: IImage;\n  readonly imageClasses?: string;\n  readonly imageRef?:\n    | RefObject<HTMLImageElement>\n    | ((node: HTMLElement | null) => void);\n  readonly lazyLoad?: boolean;\n  readonly progressiveLoad?: boolean;\n  readonly sizes?: string;\n}\n\nconst Image = ({\n  children,\n  classes,\n  dataTestId,\n  epiEdit,\n  image,\n  imageClasses,\n  imageRef,\n  lazyLoad = true,\n  progressiveLoad = true,\n  sizes = '',\n}: PropsWithChildren<Props>) => {\n  const mobileSource = image?.mobile;\n  const tabletSource = image?.tablet;\n  const desktopSource = image?.desktop;\n  const largeDesktopSource = image?.largeDesktop;\n  const breakpoint = useBreakpoint() as BreakpointEnum;\n  const [isLoaded, setIsLoaded] = useState<boolean>(false);\n\n  if (!desktopSource?.url) return null;\n\n  const currentSrc = {\n    [BreakpointEnum.Small]: mobileSource,\n    [BreakpointEnum.Medium]: tabletSource,\n    [BreakpointEnum.Large]: desktopSource,\n    [BreakpointEnum.XLarge]: largeDesktopSource,\n  };\n\n  return (\n    <picture className={classNames(classes)}>\n      <source\n        type=\"image/webp\"\n        sizes={sizes}\n        srcSet={`${mobileSource?.url} 376w, ${tabletSource?.url} 768w, ${desktopSource?.url} 1024w, ${largeDesktopSource?.url} 1440w`}\n      />\n      <img\n        ref={imageRef}\n        alt={image?.altText?.length ? image?.altText : 'nikon-image'}\n        className={classNames(\n          imageClasses,\n          'transition duration-500 ease-in-out'\n        )}\n        data-epi-property-name={epiEdit}\n        draggable=\"false\"\n        loading={lazyLoad ? 'lazy' : 'eager'}\n        onLoad={() => setIsLoaded(true)}\n        sizes={sizes}\n        src={\n          isLoaded && progressiveLoad\n            ? currentSrc[breakpoint]?.url\n            : mobileSource?.url\n        }\n        height={currentSrc[breakpoint]?.height}\n        width={currentSrc[breakpoint]?.width}\n        srcSet={`${mobileSource?.originalUrl} 376w, ${tabletSource?.originalUrl} 768w, ${desktopSource?.originalUrl} 1024w, ${largeDesktopSource?.originalUrl} 1440w`}\n        {...(dataTestId && { 'data-testid': dataTestId })}\n      />\n      {isLoaded && children}\n    </picture>\n  );\n};\n\nexport default Image;\n","import { IPricingData } from '@models/IPricingData';\nimport classNames from 'classnames';\n\ninterface Props {\n  readonly centerText?: boolean;\n  readonly fromPriceLabel?: string;\n  readonly pricingData: IPricingData;\n  readonly vatLabel?: string;\n  readonly shippingLabel?: string;\n  readonly rrpLabel?: string;\n  readonly smallText?: boolean;\n  readonly containerClassName?: string;\n  readonly taxesTopMarginClassName?: string;\n  readonly taxesClassName?: string;\n  readonly priceClassName?: string;\n  readonly dataTestId?: string;\n  readonly isLightMode?: boolean;\n}\n\nconst PriceDisplayText = ({\n  fromPriceLabel,\n  pricingData,\n  vatLabel,\n  shippingLabel,\n  rrpLabel,\n  centerText = false,\n  smallText = false,\n  containerClassName,\n  taxesTopMarginClassName = 'mt-2',\n  taxesClassName,\n  priceClassName,\n  dataTestId,\n  isLightMode,\n}: Props) => {\n  const {\n    amountSaved,\n    formattedPrice,\n    formattedCalculatedPrice,\n    shippingCost,\n    price,\n  } = pricingData;\n\n  if (typeof price !== 'number') {\n    return null;\n  }\n\n  return (\n    <div\n      className={classNames(\n        containerClassName,\n        smallText ? 'body-two font-light' : 'body-one',\n        {\n          'flex flex-col items-center': centerText,\n        }\n      )}\n      data-testid={dataTestId}\n    >\n      {(centerText ||\n        (amountSaved > 0 && formattedPrice) ||\n        formattedCalculatedPrice) && (\n        <span className=\"flex flex-wrap gap-x-2\">\n          {fromPriceLabel && <span>{fromPriceLabel}</span>}\n\n          {amountSaved > 0 && formattedPrice && (\n            <>\n              {rrpLabel && <span className=\"mr-2\">{rrpLabel}</span>}\n              <span\n                className=\"font-extralight line-through decoration-1\"\n                data-testid=\"Price-Display-Text-Discount-Price\"\n              >\n                {formattedPrice}\n              </span>\n            </>\n          )}\n\n          {formattedCalculatedPrice && (\n            <span\n              className={classNames(\n                {\n                  'font-normal': !smallText,\n                  'text-grey-450': amountSaved > 0,\n                  'dark:text-yellow': amountSaved > 0 && !isLightMode,\n                },\n                priceClassName\n              )}\n              data-testid=\"Price-Display-Text-Price\"\n            >\n              {formattedCalculatedPrice}\n            </span>\n          )}\n        </span>\n      )}\n\n      {(vatLabel || (!shippingCost && shippingLabel)) && (\n        <p\n          className={classNames(taxesClassName, 'body-four block', {\n            [`${taxesTopMarginClassName}`]: !smallText,\n          })}\n          data-testid=\"Price-Display-Text-VAT/Shipping\"\n        >\n          {vatLabel && vatLabel}\n          {vatLabel && !shippingCost && shippingLabel && ' + '}\n          {!shippingCost && shippingLabel && shippingLabel}\n        </p>\n      )}\n    </div>\n  );\n};\n\nexport default PriceDisplayText;\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","import Carousel from '@molecules/Carousel/Carousel';\nimport classNames from 'classnames';\nimport { ReactNode } from 'react';\nimport { Autoplay, Pagination } from 'swiper/modules';\nimport { Swiper, SwiperOptions } from 'swiper/types';\n\ntype PaginationSwiperOptions = Pick<\n  SwiperOptions,\n  | 'autoplay'\n  | 'loop'\n  | 'slidesPerView'\n  | 'spaceBetween'\n  | 'centeredSlides'\n  | 'initialSlide'\n  | 'breakpoints'\n>;\n\ninterface Props extends PaginationSwiperOptions {\n  readonly children: ReactNode[];\n  readonly dataTestId?: string;\n  readonly id: string;\n  readonly paginationClasses?: string;\n  readonly slideChangeCallback?: (swiper: Swiper) => void;\n  readonly swiperClasses?: string;\n}\n\nconst PaginationCarousel = ({\n  autoplay,\n  breakpoints,\n  centeredSlides = false,\n  children,\n  dataTestId = 'Pagination-Carousel',\n  id = '',\n  initialSlide = 0,\n  loop = false,\n  paginationClasses,\n  slideChangeCallback,\n  swiperClasses,\n  slidesPerView = 1,\n  spaceBetween = 20,\n}: Props) => {\n  if (!children) {\n    return null;\n  }\n\n  return (\n    <div className=\"relative select-none\" data-testid={dataTestId}>\n      <Carousel\n        tabIndex={0}\n        additionalModules={[Pagination, ...(autoplay ? [Autoplay] : [])]}\n        className={swiperClasses}\n        loop={loop}\n        autoplay={autoplay}\n        onSlideChange={(swiper) => {\n          slideChangeCallback?.(swiper);\n        }}\n        pagination={{\n          el: `#${id}-pagination-carousel-swiper`,\n          clickable: true,\n        }}\n        slidesPerView={slidesPerView}\n        spaceBetween={spaceBetween}\n        navId={id}\n        centeredSlides={centeredSlides}\n        initialSlide={initialSlide}\n        breakpoints={breakpoints}\n      >\n        {children}\n      </Carousel>\n\n      <div\n        className={classNames('visible', paginationClasses, {\n          hidden: children.length === 0,\n        })}\n      >\n        <div\n          id={`${id}-pagination-carousel-swiper`}\n          className=\"pointer-events-none flex gap-4\"\n        />\n      </div>\n    </div>\n  );\n};\n\nexport default PaginationCarousel;\n","import Button from '@atoms/Button/Button';\nimport Image from '@atoms/Image/Image';\nimport PriceDisplayText from '@atoms/PriceDisplayText/PriceDisplayText';\nimport IKitCarouselCard from '@models/IKitCarouselCard';\nimport updateDataLayer from '@utils/helpers/gtm';\nimport mapToNewTrackingData from '@utils/helpers/mapToNewTrackingData';\n\nconst KitCarouselCard = ({\n  image,\n  subTitle,\n  productTitle,\n  skuLabel,\n  vatLabel,\n  sku,\n  buyNowLink,\n  disableFindRetailerCta,\n  findRetailerLink,\n  rrpLabel,\n  pricingData,\n  shippingLabel,\n  trackingData,\n}: IKitCarouselCard) => {\n  const trackingDataJson = JSON.stringify(trackingData ?? '');\n\n  const handleSelectItemEvent = () => {\n    if (!trackingData) return;\n\n    updateDataLayer({\n      event: 'selectItem',\n      ecommerce: {\n        currency: trackingData.currency,\n        items: [mapToNewTrackingData(trackingData)],\n      },\n    });\n  };\n\n  return (\n    <div\n      className=\"grid h-full w-full gap-5 bg-black-100 text-white xl:grid-cols-12 xl:gap-0\"\n      // eslint-disable-next-line react/no-unknown-property\n      track-product-impression=\"true\"\n      data-product={trackingDataJson}\n      data-testid=\"kit-carousel-card\"\n    >\n      <div className=\"flex max-h-[400px] justify-center xl:col-span-7 xl:pr-4\">\n        {image && (\n          <a\n            href={buyNowLink?.url || '/'}\n            onClick={() => {\n              if (buyNowLink?.url) handleSelectItemEvent();\n            }}\n            aria-label={productTitle || ''}\n            className=\"flex h-full w-full justify-center\"\n          >\n            <Image\n              image={image}\n              classes=\"z-10 h-full\"\n              imageClasses=\"h-full object-contain\"\n            />\n          </a>\n        )}\n      </div>\n      <div className=\"flex flex-col items-center justify-center xl:col-span-4 xl:col-start-9 xl:items-start\">\n        {subTitle && (\n          <span className=\"body-one text-center xl:text-left\">{subTitle}</span>\n        )}\n        {productTitle && (\n          <p className=\"h4 mt-5 text-center xl:text-left\">{productTitle}</p>\n        )}\n        {skuLabel && sku && (\n          <div className=\"body-four mt-5 xl:mt-3\">\n            <span>{skuLabel}</span>\n            <span>{sku}</span>\n          </div>\n        )}\n\n        {pricingData?.formattedCalculatedPrice && (\n          <div className=\"mb-7.5 mt-5 xl:mb-4\">\n            <PriceDisplayText\n              pricingData={pricingData}\n              vatLabel={vatLabel}\n              shippingLabel={shippingLabel}\n              rrpLabel={rrpLabel}\n              centerText\n              containerClassName=\"xl:block\"\n              taxesClassName=\"text-white\"\n            />\n          </div>\n        )}\n\n        <div className=\"mt-auto flex flex-col flex-wrap items-center gap-5 xl:mt-0 xl:flex-row xl:items-start\">\n          {buyNowLink?.url && buyNowLink?.name && (\n            <a\n              href={buyNowLink.url}\n              onClick={handleSelectItemEvent}\n              // eslint-disable-next-line react/no-unknown-property\n              track-product-click=\"true\"\n              data-product={trackingDataJson}\n              className=\"cta primary\"\n            >\n              {buyNowLink.name}\n            </a>\n          )}\n\n          {!disableFindRetailerCta &&\n            findRetailerLink?.url &&\n            findRetailerLink?.name && (\n              <Button link={findRetailerLink} secondary />\n            )}\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default KitCarouselCard;\n","import IKitCarouselCard from '@models/IKitCarouselCard';\nimport { IMeta } from '@models/IMeta';\nimport KitCarouselCard from '@molecules/KitCarouselCard/KitCarouselCard';\nimport PaginationCarousel from '@molecules/PaginationCarousel/PaginationCarousel';\nimport { SwiperSlide } from 'swiper/react';\n\ninterface Props {\n  readonly items: IKitCarouselCard[];\n  readonly meta: IMeta;\n}\n\nconst KitCarousel = ({ items, meta }: Props) =>\n  items?.length > 0 ? (\n    <section\n      data-epi-block-id={meta?.contentLink}\n      className=\"component-padding bg-black-100 text-white\"\n    >\n      <div\n        data-epi-property-name={meta?.editHints?.items}\n        className=\"container\"\n      >\n        <PaginationCarousel\n          id=\"kit-carousel\"\n          paginationClasses=\"mt-11 xl:mt-20\"\n        >\n          {items.map((item) => (\n            <SwiperSlide\n              key={`Kit-carousel-${item.productTitle}`}\n              className=\"stretch-card\"\n            >\n              <KitCarouselCard {...item} />\n            </SwiperSlide>\n          ))}\n        </PaginationCarousel>\n      </div>\n    </section>\n  ) : null;\n\nexport default KitCarousel;\n","const enum BreakpointEnum {\n  Small = 'sm',\n  Medium = 'md',\n  Large = 'lg',\n  XLarge = 'xl',\n}\n\nexport default BreakpointEnum;\n","const updateDataLayer = (eventPayload: Record<string, unknown>) => {\n  if (typeof window !== 'undefined') {\n    window.dataLayer = window.dataLayer || [];\n    window.dataLayer.push(eventPayload);\n  }\n};\n\nexport default updateDataLayer;\n","import {\n  INewProductTrackingData,\n  IProductTrackingData,\n} from '@models/IProductTrackingData';\n\nconst mapToNewTrackingData = (\n  trackingData: IProductTrackingData,\n  listingName?: string\n): INewProductTrackingData => {\n  const { name, id, price, discount, brand, category, variant, position } =\n    trackingData;\n\n  return {\n    item_name: name,\n    item_id: id,\n    price,\n    discount,\n    item_brand: brand,\n    item_category: category,\n    item_variant: variant,\n    index: position,\n    ...(listingName && { item_list_name: listingName }),\n  };\n};\n\nexport default mapToNewTrackingData;\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","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n"],"names":["_ref","children","className","dataTestId","disabled","editHint","link","linkCallback","secondary","secondaryBackgroundClassName","isLightMode","inverted","buttonProps","buttonClasses","classNames","url","name","React","createElement","href","target","onClick","_extends","classes","epiEdit","image","imageClasses","imageRef","lazyLoad","progressiveLoad","sizes","mobileSource","mobile","tabletSource","tablet","desktopSource","desktop","largeDesktopSource","largeDesktop","breakpoint","useBreakpoint","isLoaded","setIsLoaded","useState","currentSrc","BreakpointEnum","Small","Medium","Large","XLarge","type","srcSet","ref","alt","altText","length","draggable","loading","onLoad","src","height","width","originalUrl","fromPriceLabel","pricingData","vatLabel","shippingLabel","rrpLabel","centerText","smallText","containerClassName","taxesTopMarginClassName","taxesClassName","priceClassName","amountSaved","formattedPrice","formattedCalculatedPrice","shippingCost","price","Fragment","additionalModules","id","navId","analyticsEnabled","props","Swiper","onSlideChangeTransitionEnd","swiper","realIndex","updateDataLayer","event","content_type","link_text","previousIndex","activeIndex","a11y","enabled","navigation","prevEl","nextEl","keyboard","onlyInViewport","modules","A11y","Keyboard","Navigation","autoplay","breakpoints","centeredSlides","initialSlide","loop","paginationClasses","slideChangeCallback","swiperClasses","slidesPerView","spaceBetween","Carousel","tabIndex","Pagination","Autoplay","onSlideChange","pagination","el","clickable","hidden","subTitle","productTitle","skuLabel","sku","buyNowLink","disableFindRetailerCta","findRetailerLink","trackingData","trackingDataJson","JSON","stringify","handleSelectItemEvent","ecommerce","currency","items","mapToNewTrackingData","Image","PriceDisplayText","Button","meta","contentLink","editHints","PaginationCarousel","map","item","SwiperSlide","key","KitCarouselCard","eventPayload","window","dataLayer","push","listingName","discount","brand","category","variant","position","item_name","item_id","item_brand","item_category","item_variant","index","item_list_name","getCurrentBreakpoint","innerWidth","screen","setScreen","resizeHandler","useCallback","useEffect","addEventListener","removeEventListener","hasOwn","hasOwnProperty","i","arguments","arg","appendClass","parseValue","Array","isArray","apply","toString","Object","prototype","includes","call","value","newClass","module","exports","default"],"sourceRoot":""}