{"version":3,"file":"AccessoriesCarousel-Chunk-cae307258ff75585048c.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/organisms/AccessoriesCarousel/AccessoriesCarouselCard.tsx","webpack://nikon-client/./components/organisms/AccessoriesCarousel/AccessoriesCarousel.tsx","webpack://nikon-client/./config/animations.config.ts","webpack://nikon-client/./utility/helpers/mapToNewTrackingData.ts","webpack://nikon-client/./utility/helpers/slugify.ts","webpack://nikon-client/./node_modules/.pnpm/react-icomoon@2.6.0_react@18.3.1/node_modules/react-icomoon/dist/index.js","webpack://nikon-client/./node_modules/.pnpm/zustand@3.7.2_react@18.3.1/node_modules/zustand/esm/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 Button from '@atoms/Button/Button';\nimport Image from '@atoms/Image/Image';\nimport { easeInOut } from '@config/animations.config';\nimport { IAccessoriesCarouselCard } from '@models/IAccessoriesCarouselCard';\nimport updateDataLayer from '@utils/helpers/gtm';\nimport mapToNewTrackingData from '@utils/helpers/mapToNewTrackingData';\nimport useMediaQuery from '@utils/hooks/useMediaQuery';\nimport { motion } from 'framer-motion';\nimport { useCallback, useState } from 'react';\n\nconst AccessoriesCarouselCard = ({\n  name,\n  thumbnail,\n  buyNowLink,\n  trackingData,\n}: IAccessoriesCarouselCard) => {\n  const [isHovered, setHover] = useState(false);\n  const [ctaBoxHeight, setCtaBoxHeight] = useState(0);\n\n  const ctaBoxRef = useCallback((node: HTMLDivElement | null) => {\n    if (node) {\n      setCtaBoxHeight(node.clientHeight ?? 0);\n    }\n  }, []);\n\n  const handleContainerClick = () => {\n    // Have to attach onClick handler to div to avoid nested anchors.\n    if (buyNowLink?.url && typeof window !== 'undefined')\n      window.location.href = buyNowLink.url;\n  };\n\n  const isBelowLargeDesktop = useMediaQuery(1440);\n\n  const ctaVariants = {\n    hover: { opacity: 1 },\n    initial: { opacity: isBelowLargeDesktop ? 1 : 0 },\n  };\n\n  const nameVariants = {\n    hover: { y: -ctaBoxHeight },\n    initial: { y: 0 },\n  };\n\n  const imgVariants = {\n    hover: { y: -13, scale: 1.1 },\n    initial: { y: 0, scale: 1 },\n  };\n\n  return (\n    <div\n      onClick={handleContainerClick}\n      role=\"link\"\n      tabIndex={0} // required to show ctas when tabbing\n      aria-label={name}\n      onFocus={() => setHover(true)}\n      onBlur={() => setHover(false)}\n      onMouseEnter={() => setHover(true)}\n      onMouseLeave={() => setHover(false)}\n      // eslint-disable-next-line react/no-unknown-property\n      track-product-impression=\"true\"\n      data-product={JSON.stringify(trackingData ?? '')}\n      className=\"pointer-events-auto relative flex h-full w-full flex-col justify-between gap-5 overflow-hidden rounded-[10px] bg-grey-100 px-7 py-8 dark:bg-grey-600 lg:py-10\"\n      onKeyDown={(e) => {\n        if (e.key === 'Enter') handleContainerClick();\n      }}\n    >\n      <motion.div\n        initial=\"initial\"\n        animate={isHovered && !isBelowLargeDesktop ? 'hover' : 'initial'}\n        variants={imgVariants}\n        transition={easeInOut}\n      >\n        {thumbnail && (\n          <Image\n            image={thumbnail}\n            imageClasses=\"w-full h-full object-contain max-h-[200px] pb-5\"\n          />\n        )}\n      </motion.div>\n      <motion.div\n        initial=\"initial\"\n        animate={isHovered && !isBelowLargeDesktop ? 'hover' : 'initial'}\n        variants={nameVariants}\n        transition={easeInOut}\n        className=\"relative flex w-full flex-col items-center justify-center text-center\"\n      >\n        {name && (\n          <p className=\"body-one text-center text-black-100 dark:text-white\">\n            {name}\n          </p>\n        )}\n        <div className=\"top-full flex w-full justify-center pt-5 xl:absolute\">\n          <motion.div\n            initial=\"initial\"\n            animate={isHovered && !isBelowLargeDesktop ? 'hover' : 'initial'}\n            transition={{ duration: 0.2 }}\n            variants={ctaVariants}\n            ref={ctaBoxRef}\n          >\n            {buyNowLink?.url && buyNowLink?.name && (\n              <Button\n                link={buyNowLink}\n                linkCallback={() => {\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            )}\n          </motion.div>\n        </div>\n      </motion.div>\n    </div>\n  );\n};\n\nexport default AccessoriesCarouselCard;\n","import { IAccessoriesCarouselCard } from '@models/IAccessoriesCarouselCard';\nimport NavigationCarousel from '@molecules/NavigationCarousel/NavigationCarousel';\nimport slugify from '@utils/helpers/slugify';\nimport { SwiperSlide } from 'swiper/react';\nimport AccessoriesCarouselCard from './AccessoriesCarouselCard';\n\ninterface Props {\n  readonly title?: string;\n  readonly items?: IAccessoriesCarouselCard[];\n  readonly anchorId?: string;\n}\n\nconst AccessoriesCarousel = ({\n  title = '',\n  items = [],\n  anchorId = '',\n}: Props) =>\n  items.length > 0 ? (\n    <section\n      id={`a-${anchorId}`}\n      className=\"component-padding bg-white text-black-100 dark:bg-black-100 dark:text-white\"\n    >\n      <NavigationCarousel\n        id={`accessories-carousel-${anchorId}`}\n        shadows\n        items={items}\n        slidesToShowDesktop={6}\n        slidesToShowTablet={3}\n        title={title}\n      >\n        {(itemsToDisplay) =>\n          itemsToDisplay\n            .filter((item) => !!item.name)\n            .map((item, index) => (\n              <SwiperSlide\n                key={slugify(`accessory-${item.name}-${index}`)}\n                className=\"stretch-card\"\n              >\n                <AccessoriesCarouselCard {...item} />\n              </SwiperSlide>\n            ))\n        }\n      </NavigationCarousel>\n    </section>\n  ) : null;\n\nexport default AccessoriesCarousel;\n","export const fadeUp = {\n  hidden: {\n    y: 30,\n    opacity: 0,\n    transition: {\n      ease: [0.42, 0.46, 0.45, 0.99],\n      duration: 0.5,\n    },\n  },\n  visible: {\n    y: 0,\n    opacity: 1,\n    transition: {\n      ease: [0.42, 0.46, 0.45, 0.99],\n      duration: 0.5,\n    },\n  },\n};\n\nexport const easeInOut = {\n  transition: { type: 'easeinout', duration: 0.25 },\n};\n","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","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","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.iconList = void 0;\nvar react_1 = require(\"react\");\nvar IcoMoon = function (_a) {\n    var iconSet = _a.iconSet, icon = _a.icon, size = _a.size, title = _a.title, disableFill = _a.disableFill, removeInlineStyle = _a.removeInlineStyle, native = _a.native, SvgComponent = _a.SvgComponent, PathComponent = _a.PathComponent, props = __rest(_a, [\"iconSet\", \"icon\", \"size\", \"title\", \"disableFill\", \"removeInlineStyle\", \"native\", \"SvgComponent\", \"PathComponent\"]);\n    if (!iconSet || !icon)\n        return null;\n    var currentIcon = iconSet.icons.find(function (item) { return item.properties.name === icon; });\n    if (!currentIcon)\n        return null;\n    var initialStyle = {\n        display: \"inline-block\",\n        stroke: \"currentColor\",\n        fill: \"currentColor\",\n    };\n    if (native) {\n        initialStyle.display = \"flex\";\n        initialStyle.flexDirection = \"row\";\n        initialStyle.flexWrap = \"wrap\";\n    }\n    var comptuedStyle = __assign(__assign(__assign({}, (removeInlineStyle ? {} : initialStyle)), (size ? { width: size, height: size } : {})), (props.style || {}));\n    var _b = currentIcon.icon.width, width = _b === void 0 ? \"1024\" : _b;\n    var viewBox = \"0 0 \".concat(width, \" 1024\");\n    var children = currentIcon.icon.paths.map(function (path, index) {\n        var _a;\n        var attrs = (_a = currentIcon.icon.attrs) === null || _a === void 0 ? void 0 : _a[index];\n        var pathProps = __assign({ d: path, key: icon + index }, (!disableFill && attrs ? attrs : {}));\n        return (0, react_1.createElement)(PathComponent || \"path\", pathProps);\n    });\n    if (title && !native) {\n        children.push((0, react_1.createElement)(\"title\", { key: title }, title));\n    }\n    return (0, react_1.createElement)(SvgComponent || \"svg\", __assign(__assign({}, props), { viewBox: viewBox, style: comptuedStyle }), children);\n};\nvar iconList = function (iconSet) {\n    if (!iconSet || !Array.isArray(iconSet.icons))\n        return null;\n    return iconSet.icons.map(function (icon) { return icon.properties.name; });\n};\nexports.iconList = iconList;\nexports.default = IcoMoon;\n//# sourceMappingURL=index.js.map","import { useReducer, useRef, useDebugValue, useEffect, useLayoutEffect } from 'react';\n\nfunction createStore(createState) {\n  let state;\n  const listeners = /* @__PURE__ */ new Set();\n  const setState = (partial, replace) => {\n    const nextState = typeof partial === \"function\" ? partial(state) : partial;\n    if (nextState !== state) {\n      const previousState = state;\n      state = replace ? nextState : Object.assign({}, state, nextState);\n      listeners.forEach((listener) => listener(state, previousState));\n    }\n  };\n  const getState = () => state;\n  const subscribeWithSelector = (listener, selector = getState, equalityFn = Object.is) => {\n    console.warn(\"[DEPRECATED] Please use `subscribeWithSelector` middleware\");\n    let currentSlice = selector(state);\n    function listenerToAdd() {\n      const nextSlice = selector(state);\n      if (!equalityFn(currentSlice, nextSlice)) {\n        const previousSlice = currentSlice;\n        listener(currentSlice = nextSlice, previousSlice);\n      }\n    }\n    listeners.add(listenerToAdd);\n    return () => listeners.delete(listenerToAdd);\n  };\n  const subscribe = (listener, selector, equalityFn) => {\n    if (selector || equalityFn) {\n      return subscribeWithSelector(listener, selector, equalityFn);\n    }\n    listeners.add(listener);\n    return () => listeners.delete(listener);\n  };\n  const destroy = () => listeners.clear();\n  const api = { setState, getState, subscribe, destroy };\n  state = createState(setState, getState, api);\n  return api;\n}\n\nconst isSSR = typeof window === \"undefined\" || !window.navigator || /ServerSideRendering|^Deno\\//.test(window.navigator.userAgent);\nconst useIsomorphicLayoutEffect = isSSR ? useEffect : useLayoutEffect;\nfunction create(createState) {\n  const api = typeof createState === \"function\" ? createStore(createState) : createState;\n  const useStore = (selector = api.getState, equalityFn = Object.is) => {\n    const [, forceUpdate] = useReducer((c) => c + 1, 0);\n    const state = api.getState();\n    const stateRef = useRef(state);\n    const selectorRef = useRef(selector);\n    const equalityFnRef = useRef(equalityFn);\n    const erroredRef = useRef(false);\n    const currentSliceRef = useRef();\n    if (currentSliceRef.current === void 0) {\n      currentSliceRef.current = selector(state);\n    }\n    let newStateSlice;\n    let hasNewStateSlice = false;\n    if (stateRef.current !== state || selectorRef.current !== selector || equalityFnRef.current !== equalityFn || erroredRef.current) {\n      newStateSlice = selector(state);\n      hasNewStateSlice = !equalityFn(currentSliceRef.current, newStateSlice);\n    }\n    useIsomorphicLayoutEffect(() => {\n      if (hasNewStateSlice) {\n        currentSliceRef.current = newStateSlice;\n      }\n      stateRef.current = state;\n      selectorRef.current = selector;\n      equalityFnRef.current = equalityFn;\n      erroredRef.current = false;\n    });\n    const stateBeforeSubscriptionRef = useRef(state);\n    useIsomorphicLayoutEffect(() => {\n      const listener = () => {\n        try {\n          const nextState = api.getState();\n          const nextStateSlice = selectorRef.current(nextState);\n          if (!equalityFnRef.current(currentSliceRef.current, nextStateSlice)) {\n            stateRef.current = nextState;\n            currentSliceRef.current = nextStateSlice;\n            forceUpdate();\n          }\n        } catch (error) {\n          erroredRef.current = true;\n          forceUpdate();\n        }\n      };\n      const unsubscribe = api.subscribe(listener);\n      if (api.getState() !== stateBeforeSubscriptionRef.current) {\n        listener();\n      }\n      return unsubscribe;\n    }, []);\n    const sliceToReturn = hasNewStateSlice ? newStateSlice : currentSliceRef.current;\n    useDebugValue(sliceToReturn);\n    return sliceToReturn;\n  };\n  Object.assign(useStore, api);\n  useStore[Symbol.iterator] = function() {\n    console.warn(\"[useStore, api] = create() is deprecated and will be removed in v4\");\n    const items = [useStore, api];\n    return {\n      next() {\n        const done = items.length <= 0;\n        return { value: items.shift(), done };\n      }\n    };\n  };\n  return useStore;\n}\n\nexport { create as default };\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","thumbnail","buyNowLink","trackingData","isHovered","setHover","ctaBoxHeight","setCtaBoxHeight","ctaBoxRef","useCallback","node","clientHeight","handleContainerClick","window","location","isBelowLargeDesktop","useMediaQuery","ctaVariants","hover","opacity","initial","nameVariants","y","role","tabIndex","onFocus","onBlur","onMouseEnter","onMouseLeave","JSON","stringify","onKeyDown","e","key","motion","div","animate","variants","scale","transition","easeInOut","Image","duration","Button","updateDataLayer","event","ecommerce","currency","items","mapToNewTrackingData","title","anchorId","id","NavigationCarousel","shadows","slidesToShowDesktop","slidesToShowTablet","itemsToDisplay","filter","item","map","index","SwiperSlide","slugify","AccessoriesCarouselCard","fadeUp","hidden","ease","visible","listingName","price","discount","brand","category","variant","position","item_name","item_id","item_brand","item_category","item_variant","item_list_name","value","toLowerCase","trim","replace","__assign","this","Object","assign","t","s","i","n","arguments","p","prototype","hasOwnProperty","call","apply","__rest","indexOf","getOwnPropertySymbols","propertyIsEnumerable","defineProperty","exports","iconList","react_1","iconSet","Array","isArray","icons","icon","properties","_a","size","disableFill","removeInlineStyle","native","SvgComponent","PathComponent","props","currentIcon","find","initialStyle","display","stroke","fill","flexDirection","flexWrap","comptuedStyle","style","_b","viewBox","concat","paths","path","attrs","pathProps","d","push","createStore","createState","state","listeners","Set","setState","partial","nextState","previousState","forEach","listener","getState","api","subscribe","selector","equalityFn","is","console","warn","currentSlice","listenerToAdd","nextSlice","previousSlice","add","delete","subscribeWithSelector","destroy","clear","useIsomorphicLayoutEffect","navigator","test","userAgent","useEffect","useLayoutEffect","create","useStore","forceUpdate","useReducer","c","stateRef","useRef","selectorRef","equalityFnRef","erroredRef","currentSliceRef","newStateSlice","current","hasNewStateSlice","stateBeforeSubscriptionRef","nextStateSlice","error","unsubscribe","sliceToReturn","useDebugValue","Symbol","iterator","next","done","shift"],"sourceRoot":""}