{"version":3,"file":"js/1838.chunk.js","mappings":"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","sources":["webpack:///./assets/common/src/components/common/ContentAsset.tsx","webpack:///./assets/common/src/components/common/ReactComment.tsx","webpack:///./assets/common/src/components/common/DwMarker.tsx","webpack:///./assets/moncler/src/components/routerTransitions/AnimatedLink.tsx","webpack:///./assets/common/src/components/common/ProductLink.tsx","webpack:///./assets/common/src/components/storelocator/StoreInfoBox.tsx","webpack:///./assets/common/src/components/utils/ThronVideo.tsx","webpack:///./assets/common/src/ui/selector/Selector.tsx","webpack:///./assets/common/src/ui/selector/SelectorRadio.tsx","webpack:///./assets/common/src/ui/selector/SelectorSize.tsx","webpack:///./assets/common/src/utils/dateUtils.ts","webpack:///./assets/common/src/utils/imageutils.ts","webpack:///./assets/common/src/utils/landingAnimations.ts","webpack:///./assets/common/src/utils/product.ts","webpack:///./assets/common/src/utils/useInnerWidth.ts","webpack:///./assets/common/src/utils/carouselUtils.ts","webpack:///./assets/moncler/src/components/autoplayCarousel/AutoplayCarousel.tsx","webpack:///./assets/moncler/src/components/clientService/ContactDetailsEnhanced.tsx","webpack:///./assets/moncler/src/components/product/ProductSelectionColorRadioLinks.tsx","webpack:///./assets/moncler/src/components/product/ProductSelectionColorLink.tsx","webpack:///./assets/common/src/utils/useMousePosition.ts","webpack:///./assets/moncler/src/components/listing/LookProduct.tsx","webpack:///./assets/moncler/src/components/listing/ProductTile.tsx","webpack:///./assets/moncler/src/components/notify/NotifyForm.tsx","webpack:///./assets/moncler/src/components/product/ColorSwatch.tsx","webpack:///./assets/moncler/src/components/product/GiftCardPurchaseModal.tsx","webpack:///./assets/moncler/src/components/product/ProductActionAddToBag.tsx","webpack:///./assets/moncler/src/components/product/ProductActionNotifyMe.tsx","webpack:///./assets/moncler/src/components/product/ProductGalleryImage.tsx","webpack:///./assets/moncler/src/components/product/ProductGallery.tsx","webpack:///./assets/moncler/src/components/routerTransitions/useAnimatedImage.tsx","webpack:///./assets/moncler/src/components/product/ProductImage.tsx","webpack:///./assets/moncler/src/components/product/ProductImageButton.tsx","webpack:///./assets/common/src/components/common/MembersOnlyBadge.tsx","webpack:///./assets/moncler/src/components/product/ProductLabels.tsx","webpack:///./assets/common/src/utils/useInnerHeight.ts","webpack:///./assets/moncler/src/components/product/ProductNotifyMeModal.tsx","webpack:///./assets/moncler/src/components/product/ProductPrice.tsx","webpack:///./assets/common/src/ui/selector/SelectorColor.tsx","webpack:///./assets/moncler/src/components/product/ProductSelectionColorExpanded.tsx","webpack:///./assets/moncler/src/components/product/ProductSelectionFormats.tsx","webpack:///./assets/common/src/ui/selector/SelectorPopup.tsx","webpack:///./assets/moncler/src/components/product/ProductSelectionSizes.tsx","webpack:///./assets/moncler/src/components/product/SizeSelectorModalItem.tsx","webpack:///./assets/moncler/src/components/product/OutOfStockBlock.tsx","webpack:///./assets/moncler/src/components/product/SizeSelectorButton.tsx","webpack:///./assets/moncler/src/components/product/ProductSelectionSizesExpanded.tsx","webpack:///./assets/moncler/src/components/product/ProductTileCarouselSwiper.tsx","webpack:///./assets/moncler/src/components/product/ProductTileCarouselCSS.tsx","webpack:///./assets/moncler/src/components/product/ProductTileCarousel.tsx","webpack:///./assets/moncler/src/components/product/ProductVideo.tsx","webpack:///./assets/moncler/src/components/product/ProductWishlistToggle.tsx","webpack:///./assets/moncler/src/components/product/SimilarProductCarousel.tsx","webpack:///./assets/moncler/src/components/product/ProductVerticalGallery.tsx","webpack:///./assets/moncler/src/components/product/ProductHero.tsx","webpack:///./assets/moncler/src/components/product/ProductLook.tsx","webpack:///./assets/moncler/src/components/product/ProductRecommendation.tsx","webpack:///./assets/moncler/src/components/mbm/MbmIcons.tsx","webpack:///./assets/moncler/src/components/mbm/MbmOOSBox.tsx","webpack:///./assets/moncler/src/components/mbm/MbmShippingDelivery.tsx","webpack:///./assets/moncler/src/components/reserve/ProductActionReserveInBoutique.tsx","webpack:///./assets/moncler/src/components/product/NFTInfoBox.tsx","webpack:///./assets/moncler/src/components/product/ShowSimilarProductInline.tsx","webpack:///./assets/moncler/src/components/product/ShowSimilarProductFloating.tsx","webpack:///./assets/moncler/src/components/product/SimilarProductsDrawer.tsx","webpack:///./assets/moncler/src/components/product/ProductActionFindInBoutique.tsx","webpack:///./assets/moncler/src/components/product/ProductPushRefillModal.tsx","webpack:///./assets/moncler/src/components/product/ProductActionPushRefill.tsx","webpack:///./assets/moncler/src/components/product/ProductButton.tsx","webpack:///./assets/moncler/src/components/product/ProductStickyTray.tsx","webpack:///./assets/common/src/utils/useMutationObservable.tsx","webpack:///./assets/common/src/ui/selector/SelectorColorLink.tsx","webpack:///./assets/moncler/src/components/product/ProductSelectionColorExpandedLinks.tsx","webpack:///./assets/moncler/src/components/product/ProductSelection.tsx","webpack:///./assets/common/src/components/reserve/ProductBoutiqueStore.tsx","webpack:///./assets/common/src/components/reserve/ProductBoutiqueStoresLine.tsx","webpack:///./assets/common/src/components/reserve/ProductBoutiqueTabCountry.tsx","webpack:///./assets/common/src/components/reserve/ProductBoutiqueTabEurope.tsx","webpack:///./assets/moncler/src/components/reserve/ProductBoutiqueModal.tsx"],"sourcesContent":["import React from 'react';\nimport ReactHtmlParser from 'react-html-parser';\nimport DwMarker from './DwMarker';\nconst ContentAsset = (props) => {\n return (React.createElement(React.Fragment, null,\n React.createElement(DwMarker, { type: \"content\", uuid: props.assetid }),\n ReactHtmlParser(props.content)));\n};\nexport default ContentAsset;\n","import React, { useEffect, useRef } from 'react';\nconst ReactComment = (props) => {\n const el = useRef();\n useEffect(() => {\n var _a;\n // @ts-ignore\n (_a = el.current) === null || _a === void 0 ? void 0 : _a.outerHTML = ``;\n }, []);\n return React.createElement(\"div\", { ref: el });\n};\nexport default ReactComment;\n","import React from 'react';\nimport ReactComment from './ReactComment';\nconst ContentAsset = (props) => {\n return React.createElement(ReactComment, { text: `dwMarker=\"${props.type}\" dwContentID=\"${props.uuid}\"` });\n};\nexport default ContentAsset;\n","import { __rest } from \"tslib\";\nimport { ProductActionTypes } from '@state/features/common.types';\nimport React, { useRef } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { Link, useHistory, useLocation } from 'react-router-dom';\nconst AnimatedLink = (props) => {\n const { to, from, productId, children, className, ariaLabel, ariaHidden, tabIndex, product, trackingAction, originalUuid } = props, rest = __rest(props, [\"to\", \"from\", \"productId\", \"children\", \"className\", \"ariaLabel\", \"ariaHidden\", \"tabIndex\", \"product\", \"trackingAction\", \"originalUuid\"]);\n const dispatch = useDispatch();\n const el = useRef(null);\n const history = useHistory();\n const location = useLocation();\n const pathname = typeof to == 'string' ? to : to === null || to === void 0 ? void 0 : to.pathname;\n const state = typeof to == 'object' && to.state ? to.state : {};\n const linkProps = Object.assign({ to() {\n const mergedState = Object.assign(Object.assign({}, state), { transition: {\n productId,\n direction: 'in',\n productUuid: originalUuid,\n }, viewport: {\n scrollY: 0,\n } });\n return {\n pathname,\n state: mergedState,\n };\n },\n onClick(event) {\n event.stopPropagation();\n dispatch({\n type: ProductActionTypes.SET_PRODUCT,\n payload: product,\n });\n if (trackingAction) {\n trackingAction(event);\n }\n // const rect = el.current.getBoundingClientRect();\n // const filterHeight = document.querySelector('.refine')?.clientHeight;\n // let header = document.querySelector('header');\n // const headerHeight = header && header.clientHeight;\n // const headerGap = (filterHeight || 0) + headerHeight;\n const newLocation = location.pathname + window.location.search;\n const mergedState = Object.assign(Object.assign({}, from), { transition: {\n productId,\n direction: 'out',\n }, viewport: {\n scrollY: window.scrollY,\n // scrollY: window.scrollY + rect.top - headerGap,\n } });\n history.replace(newLocation, mergedState);\n } }, rest);\n return (React.createElement(Link, Object.assign({ ref: el }, linkProps, { className: className, \"aria-label\": ariaLabel, \"aria-hidden\": ariaHidden, tabIndex: tabIndex }), children));\n};\nexport default AnimatedLink;\n","import AnimatedLink from '@moncler/components/routerTransitions/AnimatedLink';\nimport analytics from '@utils/analytics';\nimport React, { useContext } from 'react';\nimport { __RouterContext } from 'react-router';\nconst ProductLink = (props) => {\n const router = useContext(__RouterContext) && (navigator.userAgent || '').indexOf('bot') === -1;\n const linkProps = {\n productId: props.product.id,\n to: props.product.route,\n className: props.className,\n from: {\n state: {\n thumbStartIndex: props.index,\n },\n },\n };\n const onClickAction = (event) => {\n var _a, _b;\n if (props.noClickTracking) {\n return;\n }\n if (props.pageType == 'curator-plp') {\n sessionStorage.setItem('from-curator-plp', window.history.length.toString());\n // [OE-21429]\n analytics.shopTheLookPdp(props === null || props === void 0 ? void 0 : props.product, props === null || props === void 0 ? void 0 : props.index, props === null || props === void 0 ? void 0 : props.actionList);\n }\n switch (props.linktype) {\n case 'LOOKPRODUCT':\n analytics.shopTheLookPdp(props.product, props.index, props.actionList);\n window.scrollTo(0, 0);\n break;\n case 'RECS':\n if (event.currentTarget.closest('[data-slot=\"recommendations-recentlyviewed\"]')) {\n analytics.recommendedTile(props.product, `recommended_${props.pageType || 'pdp'}_recently`, props.index);\n }\n else if (event.currentTarget.closest('[data-slot=\"recommendations-profile\"]')) {\n analytics.recommendedTile(props.product, `recommended_${props.pageType || 'pdp'}_profile`, props.index);\n }\n else if (props.actionList) {\n analytics.shopTheLookPdp(props.product, props.index, props.actionList);\n }\n else {\n analytics.recommendedTile(props.product, `recommended_${props.pageType || 'pdp'}${props.pageType == 'search' ? '_no_results' : (props === null || props === void 0 ? void 0 : props.recommender) ? '_' + props.recommender : ''}`, props.index);\n }\n break;\n case 'PLP':\n if (props.isTechnicalPage) {\n analytics.productClickTP(props.product, props.index, `${props === null || props === void 0 ? void 0 : props.region.toLowerCase()}_grenoble_tp_${props.analyticsSuffix ? props.analyticsSuffix : props.product.analyticsAttributes.dimension38.toLowerCase()}`);\n }\n else {\n analytics.productClick(props.product, props.index, props.isShelf);\n }\n break;\n case 'SEARCH':\n const query = (_a = new URLSearchParams(location.search)) === null || _a === void 0 ? void 0 : _a.get('query');\n analytics.productSearchClickGeneric(props.product.id, query);\n analytics.productSearchClick(props.product, props.index);\n ((_b = props.product) === null || _b === void 0 ? void 0 : _b.VTOcode) && analytics.vtoSearchGeneric(props.product.id);\n default:\n break;\n }\n };\n return router ? (React.createElement(AnimatedLink, Object.assign({ product: props.product }, linkProps, { trackingAction: onClickAction, ariaLabel: props.ariaLabel, ariaHidden: props.ariaHidden, tabIndex: props.tabIndex, originalUuid: props.originalUuid, id: props.product.id + '_link' }), props.children)) : (React.createElement(\"a\", { href: props.product.productUrl, onClick: onClickAction, className: props.className, \"aria-label\": props.ariaLabel, \"aria-hidden\": props.ariaHidden, tabIndex: props.tabIndex }, props.children));\n};\nexport default ProductLink;\n","import classNames from 'classnames';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport StoreAddress from './StoreAddress';\nimport { getId } from '@common/utils/brandDiffsUtils';\nconst StoreInfoBox = (props) => {\n const { t } = useTranslation();\n const { store, className } = props;\n if (!store) {\n return React.createElement(React.Fragment, null);\n }\n return (React.createElement(\"dl\", { className: classNames('store-info', className) },\n React.createElement(\"dt\", null, t('label.address')),\n React.createElement(\"dd\", null,\n React.createElement(StoreAddress, { store: store, hidename: true })),\n store.phone && (React.createElement(React.Fragment, null,\n React.createElement(\"dt\", null, t('label.phone')),\n React.createElement(\"dd\", null,\n React.createElement(\"a\", { href: `tel:${store.phone}` }, store.phone)),\n store.hasDOSService && (React.createElement(React.Fragment, null,\n React.createElement(\"dt\", null),\n React.createElement(\"dd\", { className: \"hasDOSService-disclaimer\" }, t('storelocator.hasDOSService')))))),\n store.email && (React.createElement(React.Fragment, null,\n React.createElement(\"dt\", null, t('label.email')),\n React.createElement(\"dd\", null,\n React.createElement(\"a\", { target: \"_blank\", rel: \"noreferrer\", href: `mailto:${store.email}` }, store.email)))),\n store.storeHours && (React.createElement(React.Fragment, null,\n React.createElement(\"dt\", null, t('label.openinghours')),\n React.createElement(\"dd\", null, store.storeHours.map((sh) => (React.createElement(\"p\", { key: sh.day },\n sh.day,\n React.createElement(\"br\", null),\n sh.text)))))),\n store.hasInStoreServices && getId() === 'MO' && (React.createElement(React.Fragment, null,\n React.createElement(\"dt\", null, t('label.availableservices')),\n React.createElement(\"dd\", { className: \"store-services\" },\n store.storeServices.clickAndReserve && React.createElement(\"p\", null, t('storelocator.clickAndReserve')),\n store.storeServices.clickFromStore && React.createElement(\"p\", null, t('storelocator.clickFromStore')),\n store.storeServices.pickUpInStore && React.createElement(\"p\", null, t('storelocator.pickUpInStore')),\n store.storeServices.returnInStore && React.createElement(\"p\", null, t('storelocator.returnInStore')),\n store.storeServices.exchangeInStore && React.createElement(\"p\", null, t('storelocator.exchangeInStore')),\n store.storeServices.distantSale && React.createElement(\"p\", null, t('storelocator.distantSale')),\n store.storeServices.bookAnAppointment && React.createElement(\"p\", null, t('storelocator.bookAnAppointment')),\n store.storeServices.GarmentKit && React.createElement(\"p\", null, t('storelocator.GarmentKit')),\n store.storeServices.personalizationRoom && React.createElement(\"p\", null, t('storelocator.personalizationRoom')),\n store.storeServices.liveBoutique && React.createElement(\"p\", null, t('storelocator.liveBoutique')))))));\n};\nexport default StoreInfoBox;\n","import classNames from 'classnames';\nimport React, { useEffect, useRef, useState } from 'react';\nimport ThronIntegrationComponent from './../../scripts/components/thronIntegrationComponent';\nconst ThronVideo = (props) => {\n const videoRef = useRef();\n const [thronComponent, setThronComponent] = useState(null);\n useEffect(() => {\n if (videoRef.current) {\n if (thronComponent) {\n thronComponent.changeContent(props.thronID);\n }\n else {\n const options = {};\n props.onPauseCallback && (options.onPauseCallback = props.onPauseCallback);\n props.onPlayCallback && (options.onPlayCallback = props.onPlayCallback);\n props.onCompleteCallback && (options.onCompleteCallback = props.onCompleteCallback);\n props.onInitCallback && (options.onInitCallback = props.onInitCallback);\n props.onTimeUpdate && (options.onTimeUpdate = props.onTimeUpdate);\n typeof props.loopTimes === 'number' && (options.loopTimes = props.loopTimes);\n const newThronComponent = new ThronIntegrationComponent(videoRef.current, options);\n setThronComponent(newThronComponent);\n }\n }\n }, [props.thronID]);\n return (React.createElement(\"div\", { ref: videoRef, \"aria-hidden\": \"true\", className: classNames('video-wrapper', props.className), \"data-option-id\": props.thronID, \"data-option-mobile-id\": props === null || props === void 0 ? void 0 : props.thronMobileID, \"data-option-muted\": props.muted, \"data-option-autoplay\": props.autoplay, \"data-option-loop\": props.loop, \"data-option-lock-bitrate\": props.lockBitrate, \"data-option-no-skin\": props.noskin, \"data-option-sess-id\": props.sessionId }));\n};\nexport default ThronVideo;\n","import classNames from 'classnames';\nimport { AnimatePresence, motion } from 'framer-motion';\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport whatInput from 'what-input';\nimport ColorSwatch from '@moncler/components/product/ColorSwatch';\nimport useBreakpoint from '@utils/useBreakpoint';\nconst Selector = (props) => {\n var _a, _b;\n const { t } = useTranslation();\n const selectorRef = useRef(null);\n const buttonRef = useRef(null);\n const menuRef = useRef(null);\n const [open, setOpen] = useState(false);\n const [hovering, setHovering] = useState(false);\n const [focusList, setFocusList] = useState(false);\n const currentBreakpoint = useBreakpoint();\n const currentValue = useRef(props.currentItem);\n useEffect(() => {\n if (props.forceCloseOnChange && currentValue.current !== props.currentItem && whatInput.ask() === 'mouse') {\n setOpen(false);\n setHovering(false);\n }\n currentValue.current = props.currentItem;\n }, [props.currentItem]);\n useEffect(() => {\n const selectorButton = buttonRef.current;\n const setButtonWidth = () => {\n if (selectorButton && props.enableOnlyOneLeftLabel) {\n if (currentBreakpoint < window.mqObj.sm) {\n selectorButton.classList.add('selector__button__mobile');\n const viewportWidth = window.innerWidth;\n const dynamicWidth = `${viewportWidth * 0.35 + 15}px`; // Calcola la larghezza dinamica in base alla viewport\n selectorButton.style.width = dynamicWidth;\n }\n else {\n selectorButton.classList.remove('selector__button__mobile');\n // Resetta la larghezza\n selectorButton.style.width = '';\n }\n }\n };\n // Esegue la funzione quando la finestra viene ridimensionata\n window.addEventListener('resize', setButtonWidth);\n setButtonWidth();\n // Rimuove il listener quando il componente viene smontato\n return () => {\n window.removeEventListener('resize', setButtonWidth);\n };\n }, [currentBreakpoint]);\n useEffect(() => {\n var _a, _b, _c;\n if (open) {\n props.trackOpen ? props.trackOpen() : null;\n const menuHeight = (_a = menuRef.current) === null || _a === void 0 ? void 0 : _a.offsetHeight;\n if (selectorRef.current && menuHeight > selectorRef.current.offsetHeight) {\n selectorRef.current.style.height = `${menuHeight}px`;\n }\n if (whatInput.ask() === 'keyboard') {\n (_b = menuRef.current) === null || _b === void 0 ? void 0 : _b.focus();\n }\n }\n else {\n (_c = selectorRef.current) === null || _c === void 0 ? void 0 : _c.removeAttribute('style');\n }\n }, [open]);\n useEffect(() => {\n /* if (open && !props.open) setTimeout(() => buttonRef.current.focus(), 0);\n */\n !hovering && setOpen(props.open);\n }, [props.open, props.currentItem]);\n const enableOutofstockClass = useMemo(() => {\n var _a;\n let enabled = false;\n if (props.enableOutofstockLabel && !props.swatchable && !((_a = props.currentItem) === null || _a === void 0 ? void 0 : _a.selectable)) {\n enabled = true;\n }\n if (props.stockStatus) {\n if (props.stockStatus === 'PRODUCT__OOS' || props.stockStatus === 'SIZE__OOS') {\n enabled = true;\n }\n }\n return enabled;\n }, [props.enableOutofstockLabel, props.swatchable, props.currentItem, props.stockStatus]);\n const onMouseEnterHandler = () => {\n if (whatInput.ask() === 'mouse' && !props.disableHover && props.children.length !== 1) {\n setOpen(true);\n setHovering(true);\n }\n };\n const onMouseLeaveHandler = () => {\n if (whatInput.ask() === 'mouse' && !props.disableHover && !props.open && props.children.length !== 1) {\n setOpen(false);\n setHovering(false);\n }\n };\n return (React.createElement(\"div\", { className: classNames(props.className), ref: selectorRef },\n React.createElement(\"button\", { type: \"button\", ref: buttonRef, \"aria-controls\": props.selectorId, onMouseEnter: onMouseEnterHandler, onMouseLeave: onMouseLeaveHandler, onClick: () => {\n setOpen(!open);\n props.onClickExtraAction && props.onClickExtraAction(true);\n }, className: classNames('selector__button', { expanded: props.open || open }), disabled: props.children.length === 1 }, props.currentItem ? (React.createElement(React.Fragment, null,\n React.createElement(\"span\", { className: \"selector__button__label\" }, props.selectedLabel + ' '),\n !props.hideValue && (React.createElement(\"span\", { className: classNames('selector__button__value', enableOutofstockClass && 'selector__button__value--outofstock') }, props.itemType === 'string' ? props.currentItem : (_a = props.currentItem) === null || _a === void 0 ? void 0 : _a.displayValue)),\n props.itemType === 'object' && props.swatchable && React.createElement(ColorSwatch, { variation: props.currentItem, ariaHidden: true }),\n React.createElement(\"span\", { className: \"visually-hidden\" }, t('exchanges.changecolor')),\n props.enableOutofstockLabel && !props.swatchable && !props.currentItem.selectable && React.createElement(\"span\", { className: \"selector__button__info\" }, t('label.outofstock')),\n props.enableOnlyOneLeftLabel && React.createElement(\"span\", { className: \"selector__button__info\" }, t('bag.onlyoneleft')))) : (React.createElement(React.Fragment, null,\n React.createElement(\"span\", null, (props === null || props === void 0 ? void 0 : props.hideUnselectedLabel) ? props.selectedLabel : props === null || props === void 0 ? void 0 : props.unselectedLabel),\n (props === null || props === void 0 ? void 0 : props.hideUnselectedLabel) && props.stockStatus === 'PRODUCT__OOS' && !props.swatchable && (React.createElement(\"span\", { className: \"selector__button__info outofstock--all\" }, t('label.outofstock'))),\n React.createElement(AnimatePresence, null, props.error && (React.createElement(motion.span, { className: \"errormessage\", transition: { ease: [0.25, 1, 0.5, 1], duration: 0.166 }, initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 }, role: \"alert\" }, props.error)))))),\n React.createElement(\"div\", { ref: menuRef, className: classNames('selector__menu'), id: props.selectorId, \"aria-labelledby\": props.selectorId + '-title', tabIndex: -1, onMouseEnter: onMouseEnterHandler, onMouseLeave: onMouseLeaveHandler, onBlur: (e) => {\n // wishlist - focus on selector button after selecting a size [OE-22970]\n if (!open) {\n const selectorButton = e.currentTarget.parentNode.childNodes[0];\n if (selectorButton && selectorButton.classList.contains('selector__button')) {\n selectorButton.focus();\n }\n }\n } },\n React.createElement(\"span\", { className: \"label\", id: props.selectorId + '-title', \"aria-hidden\": \"true\" }, (_b = props.selectLabel) !== null && _b !== void 0 ? _b : props.selectedLabel,\n \":\"),\n React.createElement(\"div\", { className: classNames(focusList ? 'focused' : '', 'selector-wrapper'), onFocus: () => {\n // handles color labels show/hide on keyboard focus\n setFocusList(true);\n }, onBlur: () => {\n // handles color labels show/hide on keyboard focus\n setFocusList(false);\n } },\n React.createElement(\"fieldset\", { className: \"selector__menu--size--radio-btn\" }, props.children)))));\n};\nSelector.defaultProps = {\n swatchable: false,\n enableOutofstockLabel: false,\n hideValue: false,\n itemType: 'object',\n};\nexport default Selector;\n","import classNames from 'classnames';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport whatInput from 'what-input';\nconst SelectorItem = (props) => {\n const { t } = useTranslation();\n const CLASSNAME = 'selector__item__radio';\n const isDisabled = props.disabled && !props.isBoutiqueExclusive;\n return (React.createElement(\"div\", { className: classNames(CLASSNAME, 'selector__menu__item', isDisabled && 'is-disabled', props.selected && 'selected', props.isInverted && 'inverted') },\n React.createElement(\"input\", { className: \"selector-size-item__input\", type: \"radio\", id: `${props.selectorId}_${props.value}`, value: props.value, name: `size-selector-${props.selectorId}`, \"aria-label\": isDisabled ? t('selector.option.notavailable', { 0: props.label }) : props.label, onChange: () => {\n props.onSelect && props.onSelect(props.item, whatInput.ask() !== 'keyboard');\n }, onBlur: (e) => {\n var _a;\n if (whatInput.ask() === 'keyboard' && !((_a = e.relatedTarget) === null || _a === void 0 ? void 0 : _a.parentElement.classList.contains(CLASSNAME))) {\n props.onSelect && props.onSelect(props.item, true);\n }\n }, disabled: !props.isNotAvailableSelectable && isDisabled, checked: props.selected ? true : false }),\n React.createElement(\"label\", { htmlFor: `${props.selectorId}_${props.value}`, className: classNames('selector__menu__item__label'), \"aria-hidden\": true },\n props.label,\n props.enableOutofstockLabel && props.isOutOfStock ? ` - ${t('label.outofstock')}` : ''),\n props.children));\n};\nSelectorItem.defaultProps = {\n enableOutofstockLabel: true,\n isNotAvailableSelectable: true,\n isInverted: false,\n};\nexport default SelectorItem;\n","import classNames from 'classnames';\nimport React, { useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nconst SelectorSize = (props) => {\n const { t } = useTranslation();\n const id = useMemo(() => `item_${props.value}${props.isQuickBuy ? '_quickbuy' : props.isSizeInStickyTray ? '_stickytry' : ''}`, [props.value]);\n return (React.createElement(\"div\", { className: classNames('selector-size-item', props.disabled && 'disabled', props.selected && 'selected') },\n React.createElement(\"input\", { className: \"selector-size-item__input\", id: id, type: \"radio\", onChange: props.onSelect, name: `size-selector-${props.variationGroupId}`, value: props.value, \"aria-label\": props.label + ' ' + (props.disabled ? t('label.outofstocksize') + '-' + t('label.notifyme') : '') }),\n React.createElement(\"label\", { htmlFor: id, className: \"selector-size-item__label\", \"aria-hidden\": true }, props.label)));\n};\nexport default SelectorSize;\n","/**\n * Calculate the time zone offset\n */\nexport const getTimezoneOffset = (loc) => {\n let destinationOffset = new Intl.DateTimeFormat('en-US', { timeZone: loc, timeZoneName: 'longOffset' })\n .formatToParts(new Date())\n .filter((e) => e.type === 'timeZoneName')[0]\n .value.replace('GMT', '');\n let isNegativeDestination = destinationOffset.includes('-');\n let destinationTimeParts = destinationOffset.replace('-', '').split(':');\n let destinationNumericOffset = Number(destinationTimeParts[0]) * 60 + Number(destinationTimeParts[1] || 0);\n destinationNumericOffset = isNegativeDestination ? -destinationNumericOffset : destinationNumericOffset;\n let userOffset = new Intl.DateTimeFormat('en-US', { timeZoneName: 'longOffset' })\n .formatToParts()\n .filter((e) => e.type === 'timeZoneName')[0]\n .value.replace('GMT', '');\n let isNegativeUser = userOffset.includes('-');\n let userTimeParts = userOffset.replace('-', '').split(':');\n let userNumericOffset = Number(userTimeParts[0]) * 60 + Number(userTimeParts[1] || 0);\n userNumericOffset = isNegativeUser ? -userNumericOffset : userNumericOffset;\n let totalOffset = destinationNumericOffset - userNumericOffset;\n return totalOffset;\n};\nexport const printToUserTimezone = (ISOdate, format = 'full', style = 'full', forceISO = false) => {\n var _a;\n // Time zone calculation\n const timezones = (_a = window.timezones) === null || _a === void 0 ? void 0 : _a.split('|');\n const userTz = Intl.DateTimeFormat().resolvedOptions().timeZone;\n let actualTimezone = timezones[0];\n if (timezones.includes(userTz)) {\n actualTimezone = userTz;\n }\n const tzDate = new Date(ISOdate);\n tzDate.setMinutes(tzDate.getMinutes() + getTimezoneOffset(actualTimezone));\n const formatter = {};\n if (format == 'date' || format == 'full') {\n formatter.dateStyle = style;\n }\n if (format == 'time' || format == 'full') {\n formatter.timeStyle = style;\n }\n const finalDate = new Intl.DateTimeFormat(forceISO ? 'sv-SE' : window.language.toLowerCase() + '-' + window.country.toUpperCase(), formatter).format(tzDate);\n return finalDate;\n};\nexport const editISODate = (ISODate, edits) => {\n let date = new Date(ISODate);\n if (edits.hours) {\n date.setHours(date.getHours() + edits.hours);\n }\n if (edits.minutes) {\n date.setMinutes(date.getMinutes() + edits.minutes);\n }\n if (edits.seconds) {\n date.setSeconds(date.getSeconds() + edits.seconds);\n }\n if (edits.milliseconds) {\n date.setMilliseconds(date.getMilliseconds() + edits.milliseconds);\n }\n return date.toISOString();\n};\n","import slugify from 'slugify';\nimport { getId } from './brandDiffsUtils';\nconst imageutils = {\n // res: {\n // HIRES: { width: 1571, height: 2000 },\n // LG: { width: 1024, height: 1304 },\n // MD: { width: 768, height: 977 },\n // SM: { width: 360, height: 458 },\n // XS: { width: 73, height: 93 },\n // XXS: { width: 15, height: 19 },\n // },\n transform: function (url, size, alt, quality, format) {\n if (!url) {\n return url;\n }\n if (url.indexOf('thron') > -1) {\n let name = alt ? slugify(alt, { remove: /[*+~.()'\"!:@/]/g, lower: true }) : 'image';\n let fullurl = url.replace(/\\/0x0\\/.*/, `/${size.width}x${size.height}/${name}.jpg`);\n let params = [];\n params.push(['scalemode', 'centered']);\n params.push(['adjustcrop', 'reduce']);\n const imgQuality = quality || window.imagequality;\n if (imgQuality > 0) {\n params.push(['quality', imgQuality]);\n }\n if (format === 'avif' && window.avifsupported) {\n params.push(['format', 'avif']);\n }\n else if (window.webpsupported) {\n params.push(['format', 'WEBP']);\n }\n if (params.length > 0) {\n fullurl = fullurl + '?' + params.map((i) => i[0] + '=' + i[1]).join('&');\n }\n return fullurl;\n }\n if (url.includes('fluidconfigure')) {\n return `${url}?width=${size.width}&height=${size.height}`;\n }\n return `${url}?sw=${size.width}&sh=${size.height}`;\n },\n hires: function (url, alt) {\n return this.transform(url, HIRES, alt);\n },\n large: function (url, alt) {\n return this.transform(url, LG, alt);\n },\n medium: function (url, alt) {\n return this.transform(url, MD, alt);\n },\n small: function (url, alt) {\n return this.transform(url, SM, alt);\n },\n extraSmall: function (url, alt) {\n return this.transform(url, XS, alt);\n },\n};\nexport default imageutils;\n// let aspectratio = 2000 / 1571; // oldimages\nlet aspectratio = {\n MO: 2880 / 1920,\n ST: 2880 / 2160,\n};\nconst size = (width) => {\n return {\n width: width,\n height: Math.round(width * aspectratio[getId()]),\n };\n};\nexport const HIRES = size(1571);\nexport const LG = size(1024);\nexport const MD = size(768);\nexport const SM = size(360);\nexport const XS = size(73);\nexport const XXS = size(30); // servirà per il lazyloading\n","const easeQuartInOut = [0.76, 0, 0.24, 1];\nexport const tranitionDomReady = { ease: easeQuartInOut, duration: 0.4, delay: 0.15 };\nexport const getDefferedTransition = (order, thumbnail = false) => {\n const deferredTransition = Object.assign({}, tranitionDomReady);\n if (thumbnail) {\n deferredTransition.duration = 0.5;\n deferredTransition.delay = 0.1 * order;\n }\n else {\n deferredTransition.delay = 0.25 + 0.1 * order;\n }\n return deferredTransition;\n};\n","import einsteinutils from './einsteinutils';\nimport api from './api';\nimport axios from 'axios';\nexport const COLOUR_ATTRIBUTE = 'color';\nexport const SIZE_ATTRIBUTE = 'size';\nexport const getVariationValues = (product, attributeId) => {\n var _a, _b;\n return (((_b = (_a = product === null || product === void 0 ? void 0 : product.variationAttributes) === null || _a === void 0 ? void 0 : _a.find((variation) => {\n return variation.attributeId === attributeId;\n })) === null || _b === void 0 ? void 0 : _b.values) || []);\n};\nexport const getColorVariations = (product) => {\n return getVariationValues(product, COLOUR_ATTRIBUTE);\n};\nexport const getSizeVariations = (product) => {\n return getVariationValues(product, SIZE_ATTRIBUTE);\n};\nexport const getColorVariationActive = (product) => {\n return getColorVariations(product).find(({ selected }) => selected).value;\n};\nexport const getProductMasterId = (product) => {\n if (product.masterId == product.id) {\n const colorActiveId = getColorVariationActive(product);\n return product.masterId.replace(colorActiveId, '');\n }\n else {\n return product.masterId;\n }\n};\nexport const getProductAvailability = (product) => {\n let productAvailability;\n if (product === null || product === void 0 ? void 0 : product.availability) {\n if (product.availability.inStockDate) {\n productAvailability = 'https://schema.org/InStock';\n }\n else if (product.availability.lowStock) {\n productAvailability = 'https://schema.org/LimitedAvailability';\n }\n else if (product.availability.preorder) {\n productAvailability = 'https://schema.org/PreOrder';\n }\n else {\n //also if current.availability.isOutOfStock\n productAvailability = 'https://schema.org/OutOfStock';\n }\n }\n return productAvailability;\n};\nexport const getSizeAvailability = (product, isPreorder) => {\n let productAvailability;\n if (isPreorder) {\n productAvailability = 'https://schema.org/PreOrder';\n }\n else if ((product === null || product === void 0 ? void 0 : product.ATS) <= 0) {\n productAvailability = 'https://schema.org/OutOfStock';\n }\n else if ((product === null || product === void 0 ? void 0 : product.ATS) === 1) {\n productAvailability = 'https://schema.org/LimitedAvailability';\n }\n else {\n productAvailability = 'https://schema.org/InStock';\n }\n return productAvailability;\n};\nexport const getSimilarProducts = (product) => {\n return new Promise((resolve, reject) => {\n // const testProduct = {} as any;\n // testProduct.hasLimitedAvailability = true;\n // testProduct.uuid = 'testproduct';\n // testProduct.limitedAvailabilityConfig = {\n // showLimitedAvailabilityLabel: true,\n // showSimilarProducts: true,\n // similarProductConfig: {\n // useRecommender: false,\n // recommenderId: 'PDP_Recently-Viewed',\n // // productIdList: ['G20918C00033829H8999', 'G20911A0016868950455'],\n // productIdList: ['G20918C00033829H8999', 'G20911A0016868950455', '569100002A01PR001000100F', 'G10911A109005327977600', '569100001A05PR001000', 'H209Z1A00002M2904999'],\n // },\n // };\n // const thisProduct = testProduct;\n var _a, _b;\n const thisProduct = product;\n // Check if similar products for given product are already in session\n const similarProductsSession = sessionStorage.getItem('similar' + thisProduct.uuid + window.locale);\n if (similarProductsSession) {\n const similarProductsSessionJSON = JSON.parse(similarProductsSession);\n resolve(similarProductsSessionJSON);\n return;\n }\n // Fetch from einstein or fetch tiles from static list;\n if ((_a = thisProduct.limitedAvailabilityConfig) === null || _a === void 0 ? void 0 : _a.showSimilarProducts) {\n const similarProductConfig = thisProduct.limitedAvailabilityConfig.similarProductConfig;\n if ((_b = similarProductConfig === null || similarProductConfig === void 0 ? void 0 : similarProductConfig.productIdList) === null || _b === void 0 ? void 0 : _b.length) {\n api.getProductTiles(similarProductConfig.productIdList).then((data) => {\n if (data) {\n const availableProducts = data.filter((p) => { var _a; return ((_a = p.availability) === null || _a === void 0 ? void 0 : _a.isOutOfStock) !== true && !p.isBoutiqueExclusive; });\n sessionStorage.setItem('similar' + thisProduct.uuid, JSON.stringify(availableProducts));\n resolve(availableProducts);\n }\n else {\n reject();\n }\n });\n }\n else if (similarProductConfig === null || similarProductConfig === void 0 ? void 0 : similarProductConfig.useRecommender) {\n const cancelTokenSource = axios.CancelToken.source();\n const anchors = [{ masterId: thisProduct.masterId, id: thisProduct.id }];\n einsteinutils.productRecommendations(similarProductConfig.recommenderId, (rec) => {\n if (rec && rec.products && rec.products.length > 0) {\n sessionStorage.setItem('similar' + thisProduct.uuid, JSON.stringify(rec.products));\n resolve(rec.products);\n }\n else {\n reject();\n }\n }, cancelTokenSource, anchors);\n }\n else {\n reject();\n }\n }\n });\n};\n","import { useEffect, useState } from 'react';\nconst getInitialInnerWidth = () => {\n var _a;\n const documentWidth = window.innerWidth || ((_a = window.visualViewport) === null || _a === void 0 ? void 0 : _a.width);\n if (documentWidth == 0) {\n return;\n }\n return documentWidth;\n};\nconst useInnerWidth = () => {\n const [currentInnerWidth, setCurrentInnerWidth] = useState(getInitialInnerWidth());\n const getCurrentInnerWidth = () => {\n var _a;\n const documentWidth = window.innerWidth || ((_a = window.visualViewport) === null || _a === void 0 ? void 0 : _a.width);\n if (documentWidth == 0) {\n return;\n }\n return documentWidth;\n };\n const handleResize = () => {\n const currentIw = getCurrentInnerWidth();\n if (currentIw && currentIw !== currentInnerWidth) {\n setCurrentInnerWidth(currentIw);\n }\n };\n useEffect(() => {\n window.addEventListener('resize', handleResize);\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n });\n return currentInnerWidth;\n};\nexport default useInnerWidth;\n","export class AutoplayHelper {\n constructor(swiperRef, setIsAutoplayActive, isAutoplayActive, setIsLocked) {\n this.swiperRef = swiperRef;\n this.swiperRef.on('scroll', (swiper) => (swiper.wrapperEl.style.transitionDuration = this.swipeTiming));\n this.setIsAutoplayActive = setIsAutoplayActive;\n this.setIsLocked = setIsLocked;\n this.isAutoplayActive = isAutoplayActive;\n }\n setAutoplay(autoplay) {\n this.isAutoplayActive = autoplay;\n this.setIsAutoplayActive(autoplay);\n }\n realignPausedCarousel(originalTransform) {\n this.swiperRef.previousIndex--;\n this.swiperRef.realIndex--;\n this.swiperRef.activeIndex--;\n const originalTransformValues = originalTransform[1].split(/,\\s?/g).map(parseInt);\n const originalDestTranslate = Math.floor(originalTransformValues[0]);\n const normalizedTranslate = Math.floor(Math.abs(originalDestTranslate));\n const normalizedSnapGrid = this.swiperRef.snapGrid.map((val) => Math.floor(Math.abs(val)));\n const originalDestIndex = normalizedSnapGrid.indexOf(normalizedTranslate);\n this.swiperRef.translate = -normalizedSnapGrid[originalDestIndex - 1];\n }\n pauseCarousel() {\n if (!this.swiperRef || !this.swiperRef.wrapperEl || !this.swiperRef.autoplay.running) {\n return;\n }\n this.swiperRef.autoplay.stop();\n this.swiperRef.animating = false;\n this.swiperRef.wrapperEl.style.transitionDuration = '0ms';\n const originalTransform = this.swiperRef.wrapperEl.style.transform.split(/\\w+\\(|\\);?/);\n this.swiperRef.wrapperEl.style.transform = getComputedStyle(this.swiperRef.wrapperEl).transform;\n this.setAutoplay(false);\n setTimeout(() => {\n this.swiperRef.wrapperEl.style.transitionDuration = this.swipeTiming;\n this.swiperRef.wrapperEl.style.transform = `translate3d(${this.swiperRef.getTranslate()}px, 0, 0)`;\n const leftmostSlide = this.swiperRef.slides[this.swiperRef.previousIndex];\n const leftmostSlideBounds = leftmostSlide === null || leftmostSlide === void 0 ? void 0 : leftmostSlide.getBoundingClientRect();\n const leftmostHalfSlideVisible = (leftmostSlideBounds === null || leftmostSlideBounds === void 0 ? void 0 : leftmostSlideBounds.x) >= 0 || Math.abs(leftmostSlideBounds === null || leftmostSlideBounds === void 0 ? void 0 : leftmostSlideBounds.left) <= (leftmostSlideBounds === null || leftmostSlideBounds === void 0 ? void 0 : leftmostSlideBounds.width) / 2;\n if (leftmostHalfSlideVisible) {\n this.realignPausedCarousel(originalTransform);\n }\n }, 10);\n }\n playCarousel() {\n if (!this.swiperRef.autoplay.running) {\n this.swiperRef.autoplay.start();\n this.setAutoplay(true);\n }\n }\n handlePauseButton() {\n if (this.isAutoplayActive) {\n this.setIsLocked(true);\n this.pauseCarousel();\n }\n else {\n this.setIsLocked(false);\n this.playCarousel();\n }\n }\n}\n","import React, { useRef, useState, Suspense, useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport SwiperCore, { Autoplay, Keyboard, Mousewheel } from 'swiper';\nimport { Swiper as SwiperInstance } from 'swiper/react';\nimport { AutoplayHelper } from '@common/utils/carouselUtils';\nimport useBreakpoint from '@utils/useBreakpoint';\nSwiperCore.use([Keyboard, Autoplay, Mousewheel]);\nconst swipeTiming = '500ms';\nconst timingSnap = 200;\nconst AutoplayCarousel = (props) => {\n const { children, afterContainer, beforeContainer, swiperConf, withArrows, darkMode } = props;\n const { t } = useTranslation();\n const [autoplayHelper, setAutoplayHelper] = useState();\n const [isAutoplayActive, setIsAutoplayActive] = useState(true);\n const [isLocked, setIsLocked] = useState(false);\n const swiperRef = useRef();\n const container = useRef();\n const currentBreakpoint = useBreakpoint();\n const renderAfterContainer = (pauseButton) => {\n return typeof afterContainer === 'function' ? afterContainer(pauseButton) : afterContainer === 'pauseBtn' ? pauseButton : afterContainer;\n };\n const renderBeforeContainer = (pauseButton) => {\n return typeof beforeContainer === 'function' ? beforeContainer(pauseButton) : beforeContainer === 'pauseBtn' ? pauseButton : beforeContainer;\n };\n // useeffect that reInit slider on change of children\n useEffect(() => {\n if (swiperRef.current) {\n swiperRef.current.update();\n }\n }, [swiperConf]);\n const realignPausedCarousel = (originalTransform) => {\n swiperRef.current.previousIndex--;\n swiperRef.current.realIndex--;\n swiperRef.current.activeIndex--;\n const originalTransformValues = originalTransform[1].split(/,\\s?/g).map(parseInt);\n const originalDestTranslate = Math.floor(originalTransformValues[0]);\n const normalizedTranslate = Math.floor(Math.abs(originalDestTranslate));\n const normalizedSnapGrid = swiperRef.current.snapGrid.map((val) => Math.floor(Math.abs(val)));\n const originalDestIndex = normalizedSnapGrid.indexOf(normalizedTranslate);\n swiperRef.current.translate = -normalizedSnapGrid[originalDestIndex - 1];\n };\n const pauseCarousel = () => {\n if (!swiperRef.current || !swiperRef.current.autoplay.running) {\n return;\n }\n swiperRef.current.autoplay.stop();\n swiperRef.current.animating = false;\n swiperRef.current.wrapperEl.style.transitionDuration = '0ms';\n const originalTransform = swiperRef.current.wrapperEl.style.transform.split(/\\w+\\(|\\);?/);\n swiperRef.current.wrapperEl.style.transform = getComputedStyle(swiperRef.current.wrapperEl).transform;\n setIsAutoplayActive(false);\n setTimeout(() => {\n swiperRef.current.wrapperEl.style.transitionDuration = swipeTiming;\n swiperRef.current.wrapperEl.style.transform = `translate3d(${swiperRef.current.getTranslate()}px, 0, 0)`;\n const leftmostSlide = swiperRef.current.slides[swiperRef.current.previousIndex];\n const leftmostSlideBounds = leftmostSlide === null || leftmostSlide === void 0 ? void 0 : leftmostSlide.getBoundingClientRect();\n const leftmostHalfSlideVisible = leftmostSlideBounds.x >= 0 || Math.abs(leftmostSlideBounds.left) <= leftmostSlideBounds.width / 2;\n if (leftmostHalfSlideVisible) {\n realignPausedCarousel(originalTransform);\n }\n }, 10);\n };\n const playCarousel = () => {\n if (!swiperRef.current.autoplay.running) {\n swiperRef.current.autoplay.start();\n setIsAutoplayActive(true);\n }\n };\n const handlePauseButton = () => {\n if (isAutoplayActive) {\n setIsLocked(true);\n pauseCarousel();\n }\n else {\n setIsLocked(false);\n playCarousel();\n }\n };\n const nextSlide = () => {\n swiperRef.current.slidePrev(500);\n };\n const prevSlide = () => {\n swiperRef.current.slideNext(500);\n };\n const handleArrowShow = ({ pageX }) => {\n if (!withArrows)\n return;\n const percentage = (pageX / container.current.offsetWidth) * 100;\n if (percentage < 25) {\n container.current.classList.add('show-left-arrow');\n container.current.classList.remove('show-right-arrow');\n }\n else if (percentage > 75) {\n container.current.classList.add('show-right-arrow');\n container.current.classList.remove('show-left-arrow');\n }\n else {\n container.current.classList.remove('show-right-arrow');\n container.current.classList.remove('show-left-arrow');\n }\n };\n const handleArrowHide = () => {\n if (!withArrows)\n return;\n container.current.classList.remove('show-right-arrow');\n container.current.classList.remove('show-left-arrow');\n };\n const playClass = darkMode ? 'btn--pause-white' : 'btn--pause';\n const pauseClass = darkMode ? 'btn--play-white' : 'btn--pause';\n const pauseButton = () => {\n return (React.createElement(\"button\", { onClick: handlePauseButton, className: `autoplay-carousel__play ${isAutoplayActive ? pauseClass : playClass}`, \"aria-label\": t('button.pause'), \"aria-pressed\": !isAutoplayActive }));\n };\n const arrowClassName = (direction) => {\n return `icon--chevron-${direction}-big`;\n };\n return (React.createElement(\"div\", { className: \"container\" },\n renderBeforeContainer(pauseButton()),\n withArrows && (React.createElement(\"div\", { className: \"arrows-container\", onMouseEnter: () => autoplayHelper === null || autoplayHelper === void 0 ? void 0 : autoplayHelper.pauseCarousel(), onMouseLeave: () => {\n handleArrowHide();\n if (!isAutoplayActive && !isLocked) {\n autoplayHelper === null || autoplayHelper === void 0 ? void 0 : autoplayHelper.playCarousel();\n }\n } },\n React.createElement(\"button\", { type: \"button\", className: `arrow--prev`, \"aria-label\": t('carousel.prevslidemessage'), onClick: () => nextSlide() },\n React.createElement(\"i\", { className: arrowClassName('left'), \"aria-hidden\": true })),\n React.createElement(\"button\", { type: \"button\", className: `arrow--next`, \"aria-label\": t('carousel.nextslidemessage'), onClick: () => prevSlide() },\n React.createElement(\"i\", { className: arrowClassName('right'), \"aria-hidden\": true })))),\n React.createElement(\"div\", { ref: container, className: \"product-recommended__content\", onMouseEnter: () => autoplayHelper === null || autoplayHelper === void 0 ? void 0 : autoplayHelper.pauseCarousel(), onMouseMove: (e) => {\n // Prevent mousewheel scrolling both parent and nested carousel\n const eTargetClassList = e.target.classList;\n if (eTargetClassList.contains('product-tile__image') || eTargetClassList.contains('product-tile-carousel__button')) {\n swiperRef.current.mousewheel.disable();\n }\n else {\n swiperRef.current.mousewheel.enable();\n }\n handleArrowShow(e);\n }, onMouseLeave: () => {\n handleArrowHide();\n if (!isAutoplayActive && !isLocked) {\n autoplayHelper === null || autoplayHelper === void 0 ? void 0 : autoplayHelper.playCarousel();\n }\n } },\n React.createElement(Suspense, { fallback: React.createElement(\"div\", null, \"Loading...\") },\n React.createElement(SwiperInstance, Object.assign({ onSwiper: (swiper) => {\n swiperRef.current = swiper;\n setAutoplayHelper(new AutoplayHelper(swiperRef.current, setIsAutoplayActive, isAutoplayActive, setIsLocked));\n }, onScroll: (swiper, e) => {\n swiper.wrapperEl.style.transitionDuration = swipeTiming;\n }, onTouchStart: (swiper) => {\n swiper.wrapperEl.classList.add('no-transition');\n }, onTouchEnd: (swiper) => {\n swiperRef.current.slideReset(timingSnap);\n setTimeout(() => {\n swiperRef.current.wrapperEl.classList.remove('no-transition');\n }, 10);\n }, \n // onTouchEnd={() => {\n // }}\n onResize: () => {\n if (!swiperRef.current.autoplay.running && !isLocked) {\n playCarousel();\n }\n } }, swiperConf), children))),\n renderAfterContainer(pauseButton())));\n};\nexport default AutoplayCarousel;\n","import classNames from 'classnames';\nimport React from 'react';\nimport ContactDetailsCore from '../clientService/ContactDetailsCore';\nconst ContactDetailsEnhanced = (props) => {\n return (React.createElement(React.Fragment, null,\n React.createElement(\"div\", { className: \"contact-details\" },\n React.createElement(\"div\", { className: !props.fullWidth ? 'container' : '' },\n React.createElement(\"div\", { className: \"row justify-center\" },\n React.createElement(\"div\", { className: classNames({ 'col-lg-6 col-md-8 col-sm-10': !props.fullWidth, 'wrapper-contact-us': props.fullWidth }, { 'container-clothing': window.isClothing }) },\n props.title && React.createElement(\"h2\", { className: \"contact-details__title primary-l-u\" }, props.title),\n props.description && React.createElement(\"p\", { className: \"contact-details__description\" }, props.description),\n React.createElement(ContactDetailsCore, Object.assign({ type: window.isClothing ? 'CONTACTSCENTER' : 'BLOCKS', hideCountrySelector: window.isClothing || props.hideCountrySelector, showEmailCta: props.showEmailCta }, (props.handlerAnalyticsOnClickCta ? { handlerAnalyticsOnClickCta: props.handlerAnalyticsOnClickCta } : {})))))))));\n};\nexport default ContactDetailsEnhanced;\n","import React, { useRef } from 'react';\nimport classNames from 'classnames';\nimport analytics from '@common/utils/analytics';\nimport ColorSwatch from './ColorSwatch';\nimport { useTranslation } from 'react-i18next';\nconst ProductSelectionColorRadioLinks = (props) => {\n const hiddenColours = props.variationValues.length - props.swatchLenght;\n const { t } = useTranslation();\n const linkRefs = useRef([]);\n const radioGroupId = `select-color-tile-${props.product.uuid}`;\n const colorName = (variation) => {\n return (React.createElement(\"span\", { \"aria-hidden\": \"true\", className: classNames('selector__menu__item__label', { 'has-hidden-colors': hiddenColours >= 1 }) }, variation.displayValue));\n };\n const handleLinkSelect = (index) => {\n props.onChangeVariation(props.variationValues[index]);\n linkRefs.current[index].focus();\n };\n // Manage keyboard navigation, leaving tab key out of this, in order to mockup a radio group behavior\n const handleKeyDown = (e, index) => {\n if (e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n const nextIndex = (index + 1) % linkRefs.current.length;\n handleLinkSelect(nextIndex);\n }\n else if (e.key === 'ArrowLeft' || e.key === 'ArrowUp') {\n const prevIndex = (index - 1 + linkRefs.current.length) % linkRefs.current.length;\n handleLinkSelect(prevIndex);\n }\n else if (e.key === 'Enter') {\n handleLinkSelect(index);\n }\n };\n const isVariationOutOfStock = (variation) => {\n return !variation.selectable && !props.isComingSoon && !variation.isBoutiqueExclusive;\n };\n return (React.createElement(\"fieldset\", { className: \"selector__menu inverted\", role: \"radiogroup\", \"aria-labelledby\": radioGroupId },\n React.createElement(\"div\", { id: radioGroupId, className: \"visually-hidden\" }, t('exchanges.changecolor')),\n props.variationValues.map((variation, index) => (React.createElement(\"div\", { key: variation.id },\n React.createElement(\"legend\", { className: \"visually-hidden\" }, t('exchanges.changecolora11y')),\n index < props.swatchLenght ? (React.createElement(\"a\", { role: \"radio\", href: variation.productUrl, \"aria-checked\": variation.value == props.currentId, \"aria-label\": variation.displayValue, className: classNames('selector__menu__item selector__menu__item--link', variation.value == props.currentId && 'selected', isVariationOutOfStock(variation) && 'is-disabled'), onClick: (e) => {\n var _a;\n e.preventDefault();\n props.onChangeVariation(variation);\n analytics.colorSelection(variation === null || variation === void 0 ? void 0 : variation.id, (_a = variation === null || variation === void 0 ? void 0 : variation.productId) === null || _a === void 0 ? void 0 : _a.replace(variation.id, ''), props.tileType);\n }, tabIndex: variation.value == props.currentId ? 0 : -1, onKeyDown: (e) => handleKeyDown(e, index), ref: (el) => (linkRefs.current[index] = el) },\n props.showColorName && colorName(variation),\n React.createElement(ColorSwatch, { variation: variation, stroke: isVariationOutOfStock(variation), ariaHidden: true }))) : (React.createElement(React.Fragment, null, index + 1 == props.variationValues.length && React.createElement(\"div\", { \"aria-label\": t('label.colorsa11y') },\n \"+\",\n hiddenColours))))))));\n};\nexport default ProductSelectionColorRadioLinks;\n","import ProductLink from '@components/common/ProductLink';\nimport useBreakpoint from '@utils/useBreakpoint';\nimport classNames from 'classnames';\nimport React, { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport ColorSwatch from './ColorSwatch';\nimport ProductSelectionColorRadioLinks from './ProductSelectionColorRadioLinks';\nconst ProductColours = (props) => {\n const { t } = useTranslation();\n const [swatchLenght, setSwatchLength] = useState(0);\n const noPDPLink = window.tileColorSwatch;\n const currentBreakpoint = useBreakpoint();\n const hiddenColours = props.variationValues.length - swatchLenght;\n useEffect(() => {\n //@ts-ignore disable-next-line\n if (currentBreakpoint >= window.mqObj.lg) {\n setSwatchLength(6);\n }\n else {\n setSwatchLength(4);\n }\n }, [currentBreakpoint]);\n const colorName = (variation) => {\n return (React.createElement(\"span\", { \"aria-hidden\": \"true\", className: classNames('selector__menu__item__label', { 'has-hidden-colors': hiddenColours >= 1 }) }, variation.displayValue));\n };\n return (React.createElement(\"div\", { className: classNames('selector-color-link', props.className) }, props.compressColorSwatch && props.variationValues.length >= 5 ? (React.createElement(\"div\", { className: \"selector__menu inverted\" },\n props.variationValues.map((variation, i) => {\n if (i <= 4) {\n return (React.createElement(\"div\", { key: variation.id },\n React.createElement(ProductLink, { product: Object.assign(Object.assign({}, props.product), { id: variation.productId, route: variation.route, productUrl: variation.productUrl }), ariaLabel: props.product.productName + ' ' + variation.displayValue, className: classNames('selector__menu__item', variation.value == props.currentId && 'selected'), originalUuid: props.originalUuid },\n React.createElement(ColorSwatch, { variation: variation }))));\n }\n }),\n React.createElement(ProductLink, { product: props.product, ariaLabel: props.product.productName, originalUuid: props.originalUuid },\n React.createElement(\"span\", { className: \"selector__more-colors\" },\n \"+ \",\n props.variationValues.length - 5,\n \" \",\n t('label.colors'))))) : noPDPLink ? (React.createElement(ProductSelectionColorRadioLinks, Object.assign({}, props, { swatchLenght: swatchLenght }))) : (React.createElement(\"div\", { className: \"selector__menu inverted\" }, props.variationValues.map((variation, index) => (React.createElement(\"div\", { key: variation.id }, index < swatchLenght ? (React.createElement(ProductLink, { product: Object.assign(Object.assign({}, props.product), { id: variation.productId, route: variation.route, productUrl: variation.productUrl }), ariaLabel: props.product.productName + ' ' + variation.displayValue, className: classNames('selector__menu__item', variation.value == props.currentId && 'selected', (props.product.availability.isOutOfStock || variation.notShoppable) && 'is-disabled'), originalUuid: props.originalUuid },\n props.showColorName && colorName(variation),\n React.createElement(ColorSwatch, { variation: variation }))) : (React.createElement(React.Fragment, null, index + 1 == props.variationValues.length && React.createElement(\"div\", { \"aria-label\": t('label.colorsa11y') },\n \"+\",\n hiddenColours))))))))));\n};\nProductColours.defaultProps = {\n variationValues: [],\n};\nexport default ProductColours;\n","import { useEffect, useState } from 'react';\nconst useMousePosition = (target) => {\n const [mousePosition, setMousePosition] = useState({ x: null, y: null });\n const [mouseStatus, setMouseStatus] = useState('OUTSIDE');\n // let focusTimeout: number;\n const updateMousePosition = (e) => {\n setMousePosition({ x: e.offsetX, y: e.offsetY });\n };\n const updateMouseOver = (e) => {\n // console.log('mouse over');\n // console.log(e.type);\n // clearTimeout(focusTimeout);\n setMouseStatus('OVER');\n };\n const updateMouseOut = (e) => {\n // console.log('mouse out');\n // console.log(e.type);\n // focusTimeout = setTimeout(() => {\n setMouseStatus('OUTSIDE');\n // }, 50);\n };\n useEffect(() => {\n target === null || target === void 0 ? void 0 : target.current.addEventListener('mousemove', updateMousePosition);\n target === null || target === void 0 ? void 0 : target.current.addEventListener('focusin', updateMouseOver);\n target === null || target === void 0 ? void 0 : target.current.addEventListener('focusout', updateMouseOut);\n target === null || target === void 0 ? void 0 : target.current.addEventListener('mouseenter', updateMouseOver);\n target === null || target === void 0 ? void 0 : target.current.addEventListener('mouseleave', updateMouseOut);\n return () => {\n target === null || target === void 0 ? void 0 : target.current.removeEventListener('mousemove', updateMousePosition);\n target === null || target === void 0 ? void 0 : target.current.removeEventListener('focusin', updateMouseOver);\n target === null || target === void 0 ? void 0 : target.current.removeEventListener('focusout', updateMouseOut);\n target === null || target === void 0 ? void 0 : target.current.removeEventListener('mouseenter', updateMouseOver);\n target === null || target === void 0 ? void 0 : target.current.removeEventListener('mouseleave', updateMouseOut);\n };\n }, []);\n return { position: mousePosition, status: mouseStatus };\n};\nexport const handleTileNavigation = (target) => {\n const [status, setStatus] = useState('OUT');\n const [navigation, setNavigation] = useState();\n const updateNavigation = (type) => {\n setNavigation(type == 'focusin' || type == 'focusout' ? 'keyboard' : 'mouse');\n };\n const handleEnter = (e) => {\n updateNavigation(e.type);\n if (status != 'IN' && e.relatedTarget) {\n setStatus('IN');\n }\n };\n const handleExit = (e) => {\n var _a;\n updateNavigation(e.type);\n if (e.type == 'focusout') {\n if (e.relatedTarget && !((_a = target.current) === null || _a === void 0 ? void 0 : _a.contains(e.relatedTarget))) {\n setStatus('OUT');\n }\n }\n else {\n setStatus('OUT');\n }\n };\n useEffect(() => {\n target === null || target === void 0 ? void 0 : target.current.addEventListener('focusin', handleEnter);\n target === null || target === void 0 ? void 0 : target.current.addEventListener('focusout', handleExit);\n target === null || target === void 0 ? void 0 : target.current.addEventListener('mouseenter', handleEnter);\n target === null || target === void 0 ? void 0 : target.current.addEventListener('mouseleave', handleExit);\n return () => {\n var _a, _b, _c, _d;\n (_a = target === null || target === void 0 ? void 0 : target.current) === null || _a === void 0 ? void 0 : _a.removeEventListener('focusin', handleEnter);\n (_b = target === null || target === void 0 ? void 0 : target.current) === null || _b === void 0 ? void 0 : _b.removeEventListener('focusout', handleExit);\n (_c = target === null || target === void 0 ? void 0 : target.current) === null || _c === void 0 ? void 0 : _c.removeEventListener('mouseenter', handleEnter);\n (_d = target === null || target === void 0 ? void 0 : target.current) === null || _d === void 0 ? void 0 : _d.removeEventListener('mouseleave', handleExit);\n };\n }, []);\n return { navigation, status };\n};\nexport default useMousePosition;\n","import { ProductSelection } from '@moncler/components/product';\nimport ProductImage from '@moncler/components/product/ProductImage';\nimport { ProductActionTypes } from '@state/features/common.types';\nimport { MD, SM, XXS } from '@utils/imageutils';\nimport classNames from 'classnames';\nimport React, { useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { Swiper, SwiperSlide } from 'swiper/react';\nconst LookProduct = (props) => {\n let dispatch;\n if (!props.noRedux) {\n dispatch = useDispatch();\n }\n const [selectedLook, setSelectedLook] = useState(props.products[0]);\n useEffect(() => {\n if (!props.noRedux && selectedLook && props.showLook) {\n dispatch({\n type: ProductActionTypes.FETCH_PRODUCT,\n payload: {\n pid: selectedLook.id,\n },\n });\n }\n }, [selectedLook, props.showLook, props.noRedux]);\n const productSlide = (el, i) => {\n return (React.createElement(\"button\", { key: i, className: classNames('products-selector__slide', { selected: el === selectedLook }), onClick: () => setSelectedLook(el) },\n React.createElement(ProductImage, { productId: el.id, img: el.imgs, sizes: [XXS, SM, MD], type: \"F\" })));\n };\n if (props.noRedux) {\n return (React.createElement(\"div\", { className: \"product-reserve\" },\n React.createElement(\"div\", { className: \"product-reserve__main\" },\n React.createElement(\"p\", { className: \"product-reserve__main__name\" }, props === null || props === void 0 ? void 0 : props.title),\n React.createElement(ProductImage, { productId: selectedLook.id, img: selectedLook.imgs, sizes: [XXS, SM, MD], type: \"F\" }),\n props.products.length > 5 ? (React.createElement(Swiper, { onAfterInit: (swipr) => setTimeout(() => swipr.el.classList.add('right-overlay'), 100), className: \"products-selector--carousel\", spaceBetween: 4, slidesPerView: 5, grabCursor: true, freeMode: true, onSlideChange: (swipr) => {\n if (swipr.activeIndex > 0) {\n swipr.el.classList.add('left-overlay');\n }\n else {\n swipr.el.classList.remove('left-overlay');\n }\n if (swipr.activeIndex + 5 < props.products.length) {\n swipr.el.classList.add('right-overlay');\n }\n else {\n swipr.el.classList.remove('right-overlay');\n }\n } }, props.products.map((el, i) => (React.createElement(SwiperSlide, { key: i }, productSlide(el, i)))))) : (React.createElement(\"div\", { className: \"products-selector\" }, props.products.map((el, i) => productSlide(el, i))))),\n React.createElement(\"div\", { className: \"product-reserve__detail\" },\n React.createElement(ProductSelection, { currentLook: selectedLook, contactformurl: props === null || props === void 0 ? void 0 : props.contactformurl }))));\n }\n return (React.createElement(\"div\", { className: \"row justify-center\" },\n React.createElement(\"div\", { className: \"col-md-10 col-lg-8\" },\n React.createElement(\"div\", { className: \"row\" },\n React.createElement(\"div\", { className: \"col-sm-6 preview-image\" },\n React.createElement(ProductImage, { productId: selectedLook.id, img: selectedLook.imgs, sizes: [XXS, SM, MD], type: \"F\" })),\n React.createElement(\"div\", { className: \"col-sm-6 look-products\" },\n React.createElement(ProductSelection, { currentLook: selectedLook, shopTheLook: true, inverted: true }),\n props.products.length > 5 ? (React.createElement(Swiper, { onAfterInit: (swipr) => setTimeout(() => swipr.el.classList.add('right-overlay'), 100), className: \"products-selector--carousel\", spaceBetween: 4, slidesPerView: 5, grabCursor: true, freeMode: true, onSlideChange: (swipr) => {\n if (swipr.activeIndex > 0) {\n swipr.el.classList.add('left-overlay');\n }\n else {\n swipr.el.classList.remove('left-overlay');\n }\n if (swipr.activeIndex + 5 < props.products.length) {\n swipr.el.classList.add('right-overlay');\n }\n else {\n swipr.el.classList.remove('right-overlay');\n }\n } }, props.products.map((el, i) => (React.createElement(SwiperSlide, { key: i }, productSlide(el, i)))))) : (React.createElement(\"div\", { className: \"products-selector\" }, props.products.map((el, i) => productSlide(el, i)))))))));\n};\nexport default LookProduct;\n","import ProductLink from '@components/common/ProductLink';\nimport ProductNotifyMeModal from '@moncler/components/product/ProductNotifyMeModal';\nimport ProductSelectionColorLink from '@moncler/components/product/ProductSelectionColorLink';\nimport ProductSelectionSizes from '@moncler/components/product/ProductSelectionSizes';\nimport ProductWishlistToggle from '@moncler/components/product/ProductWishlistToggle';\nimport ModalDialog from '@ui/modal/ModalDialog';\nimport analytics from '@utils/analytics';\nimport einsteinutils from '@utils/einsteinutils';\nimport { getDefferedTransition } from '@utils/landingAnimations';\nimport { getColorVariations, getProductMasterId, getSizeVariations } from '@utils/product';\nimport classNames from 'classnames';\nimport { motion } from 'framer-motion';\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport api from '@common/utils/api';\nimport DwMarker from '@common/components/common/DwMarker';\nimport { handleTileNavigation } from '@utils/useMousePosition';\nimport ProductImage from '@moncler/components/product/ProductImage';\nimport ProductLabels from '@moncler/components/product/ProductLabels';\nimport ProductPrice from '@moncler/components/product/ProductPrice';\nimport ProductTileCarousel from '@moncler/components/product/ProductTileCarousel';\nimport LookProduct from './LookProduct';\nimport LoginModal from '@components/login/LoginModal';\nimport useBreakpoint from '@utils/useBreakpoint';\nconst isMobile = window.isMobile();\nconst ProductTile = (props) => {\n var _a, _b, _c, _d, _e, _f, _g;\n const { t } = useTranslation();\n const tileRef = useRef(null);\n const tileInfo = useRef(null);\n const sbl = useRef(null);\n const containerRef = useRef(null);\n const productObject = typeof props.product === 'string' ? JSON.parse(props.product) : props.product;\n //only for editorial component\n const hoverDifferent = props.hoverDifferent;\n const introCards = props.introCards;\n const noClickTracking = props.noClickTracking;\n const isCarouselVersion = props.withCarousel;\n const swatchChange = window.tileColorSwatch;\n const [isMouseOver, setIsMouseOver] = useState(false);\n const [isOver, setIsOver] = useState(false);\n const [product, setProduct] = useState();\n const { status, navigation } = handleTileNavigation(tileRef);\n const [originalUuid, setOriginalUuid] = useState(null);\n const [firstColorId, setFirstColorId] = useState(null);\n const [currentSize, setCurrentSize] = useState();\n const [currentColor, setCurrentColor] = useState();\n const [showColorSwatch, setShowColorSwatch] = useState(true);\n const [forceOpenSizeSelector, setForceOpenSizeSelector] = useState(false);\n const [isDesktop, setIsDesktop] = useState(false);\n const [showAddToBagMessage, setShowAddToBagMessage] = useState(false);\n const [shopByLookHeight, setShopByLookHeight] = useState(0);\n const [lookProductInfoHeight, setLookProductInfoHeight] = useState(0);\n const [variantPrice, setVariantPrice] = useState();\n const [openShopByLook, setOpenShopByLook] = useState(false);\n const [shopByLookNotify, setShopByLookNotify] = useState(false);\n const [loginOpen, setLoginOpen] = useState(false);\n const currentBreakpoint = useBreakpoint();\n useEffect(() => {\n //@ts-ignore disable-next-line\n if (currentBreakpoint >= window.mqObj.lg) {\n setIsDesktop(true);\n }\n else {\n setIsDesktop(false);\n }\n }, [currentBreakpoint]);\n useEffect(() => {\n setIsOver(status === 'IN');\n setIsMouseOver(status === 'IN' && navigation === 'mouse');\n }, [status]);\n useEffect(() => {\n var _a, _b, _c, _d, _e;\n if (product && !originalUuid) {\n setOriginalUuid(product.uuid);\n }\n if (product && !firstColorId) {\n let VariationColors = (_b = (_a = product === null || product === void 0 ? void 0 : product.variationAttributes) === null || _a === void 0 ? void 0 : _a.find((v) => v.attributeId == 'color')) === null || _b === void 0 ? void 0 : _b.values;\n let selectedColor = (_c = VariationColors === null || VariationColors === void 0 ? void 0 : VariationColors.find((v) => v.selected)) === null || _c === void 0 ? void 0 : _c.id;\n setFirstColorId(selectedColor);\n }\n if (product) {\n let colorSwatchLenght = (_e = (_d = product === null || product === void 0 ? void 0 : product.variationAttributes) === null || _d === void 0 ? void 0 : _d.find((v) => v.attributeId == 'color')) === null || _e === void 0 ? void 0 : _e.values.length;\n setShowColorSwatch((colorSwatchLenght > 1 && swatchChange) || !swatchChange);\n }\n }, [product]);\n // gestisco l'assegnazione di product al caricamento\n useEffect(() => {\n setProduct(productObject);\n const colorVariations = getColorVariations(productObject);\n const selectedColor = colorVariations.find((v) => v.selected);\n setCurrentColor(selectedColor ? selectedColor : colorVariations[0]);\n // sono in una tile in un carosello, rimuovo lo skeleton loading\n if (props.componentUuid) {\n setTimeout(() => {\n document.querySelector(`[data-option-uuid=\"${props.componentUuid}\"]`).classList.remove('skeleton-loading');\n }, 500);\n }\n }, [props.product]);\n useEffect(() => {\n if (!(product === null || product === void 0 ? void 0 : product.id)) {\n return;\n }\n if (props.type == 'LOOKPRODUCT' || props.type == 'PLPLOOK') {\n einsteinutils.trackProductSet(product.id);\n return;\n }\n if (props.type == 'RECS' || props.type == 'LOOKTILE' || props.type == 'CURATORS') {\n // tracked directly in einsteinutils\n return;\n }\n if (product.isobject) {\n tileRef.current.insertAdjacentHTML('afterbegin', product.isobject);\n }\n einsteinutils.trackProductInCategory(product.id, props.category, props.sortingrule);\n }, [product]);\n // gestisco tile info in absolute per LOOKPRODUCT\n useEffect(() => {\n let timeoutId;\n if (product && (isDesktop || props.isLookCarousel) && props.type == 'LOOKPRODUCT') {\n timeoutId = setTimeout(() => {\n if (tileInfo.current) {\n setLookProductInfoHeight(tileInfo.current.offsetHeight);\n }\n }, 100);\n }\n else {\n setLookProductInfoHeight(0);\n }\n return () => {\n clearTimeout(timeoutId);\n };\n }, [isDesktop, product, props.type]);\n useEffect(() => {\n if (props.showLook != undefined && !props.showLook && shopByLookHeight != 0) {\n setShopByLookHeight(0);\n }\n }, [props.showLook]);\n const changeSize = (variation) => {\n var _a;\n setCurrentSize(variation);\n analytics.productImpressionsChange(product, props.index, undefined, variation.id, props.actionList);\n analytics.sizeSelectionPlp(product, variation === null || variation === void 0 ? void 0 : variation.id);\n // qui non va cambiato il prodotto, va solo salvata la taglia selezionata che serve per l'add to cart\n if (((_a = product === null || product === void 0 ? void 0 : product.price) === null || _a === void 0 ? void 0 : _a.type) === 'range') {\n // prezzo diverso per taglia\n api.variantPrice(`${product.masterId}${currentColor.id}${variation.id}`).then((data) => setVariantPrice(data));\n }\n };\n const sizeVariations = useMemo(() => {\n let sizeVariations = getSizeVariations(product);\n // se è taglia unica la imposto\n if (sizeVariations.length == 1) {\n setCurrentSize(sizeVariations[0]);\n }\n else if (currentSize) {\n // check se esiste la taglia selezionata e riseleziono per aggiornare lo stock\n if (sizeVariations.find((el) => el.value == currentSize.value)) {\n const sizeUpdated = sizeVariations.find((el) => el.value == currentSize.value);\n setCurrentSize(sizeUpdated);\n }\n else {\n setCurrentSize(undefined);\n }\n }\n return sizeVariations;\n }, [product]);\n const colourVariations = useMemo(() => {\n return getColorVariations(product).map((value) => {\n return Object.assign(Object.assign({}, value), { groupPid: product.masterId + value.id });\n });\n }, [product]);\n const showWishlistBtn = useMemo(() => {\n return ['PLP', 'RECS', 'CURATORS', 'LOOKPRODUCT', 'SEARCH'].indexOf(props.type) != -1 && currentColor && !(product === null || product === void 0 ? void 0 : product.isMbm) && !props.hideWishlistBtn;\n }, [product, currentColor, props.hideWishlistBtn, props.type]);\n const isNotNativeInput = (element) => {\n const tags = ['button', 'a', 'input', 'label'];\n return tags.indexOf(element.tagName.toLowerCase()) < 0;\n };\n const triggerClick = (e) => {\n var _a;\n if (e.type === 'keydown' && e.key !== 'Enter') {\n return false;\n }\n const target = e.target;\n // We want to keep original behavior for native clickable elements\n if (isNotNativeInput(target) &&\n isNotNativeInput(target.parentElement) &&\n !target.closest('.btn-label') &&\n !target.closest('.wishlist-icon') &&\n !target.closest('.swiper-pagination-clickable') &&\n !target.closest('.selector__menu')) {\n (_a = target.closest('.product-tile').querySelector('.product-tile__link')) === null || _a === void 0 ? void 0 : _a.click();\n }\n };\n const changeColor = (colorVariation) => {\n if (!colorVariation || product.id.endsWith(colorVariation.id)) {\n return;\n }\n setCurrentColor(colorVariation);\n analytics.productImpressionsChange(product, props.index, colorVariation.id, undefined);\n let baseId = getProductMasterId(product);\n api.getProductTile(baseId + colorVariation.id, firstColorId).then((data) => setProduct(data));\n };\n const isComingSoon = (product === null || product === void 0 ? void 0 : product.isComingSoon) === 2;\n const justAddedMessage = useMemo(() => {\n return (showAddToBagMessage && (React.createElement(\"span\", { className: \"visually-hidden\", role: \"alert\" }, t('bag.justadded'))));\n }, [showAddToBagMessage]);\n const colorSelection = () => {\n return (React.createElement(ProductSelectionColorLink, { tileType: \"PLP\", product: product, variationValues: colourVariations, currentId: currentColor === null || currentColor === void 0 ? void 0 : currentColor.id, compressColorSwatch: props.compressColorSwatch, onChangeVariation: (colorVariation) => {\n changeColor(colorVariation);\n }, originalUuid: originalUuid, isComingSoon: isComingSoon, isBoutiqueExclusive: product === null || product === void 0 ? void 0 : product.isBoutiqueExclusive }));\n };\n const productInfo = () => {\n var _a, _b;\n return (React.createElement(motion.div, { ref: tileInfo, transition: getDefferedTransition(isDesktop ? (props.index < 4 ? 1 : 2) : props.index < 2 ? 1 : props.index < 4 ? 2 : 3), initial: { opacity: props.index < 8 ? 0 : 1 }, animate: { opacity: props.hasAnimation && !props.startAnimation ? 0 : 1 }, className: classNames('product-tile__info', 'single-slide__labels', { lookinfo: props.type === 'LOOKPRODUCT' }), style: { position: lookProductInfoHeight != 0 ? 'absolute' : undefined } },\n React.createElement(\"div\", null,\n (!props.hidelabels || props.showonlyname) && (product === null || product === void 0 ? void 0 : product.productName) && productName(),\n !props.hideprice && (React.createElement(\"span\", { \"aria-hidden\": props.type === 'LOOKPRODUCT', className: \"product-tile__price\" }, product.isGiftCard ? React.createElement(ProductPrice, { basePrice: ((_b = (_a = product === null || product === void 0 ? void 0 : product.gcLimits) === null || _a === void 0 ? void 0 : _a.minValue) === null || _b === void 0 ? void 0 : _b.formattedValue) || '' }) : React.createElement(ProductPrice, { price: variantPrice || (product === null || product === void 0 ? void 0 : product.price) }))),\n !props.noSwatch && !product.isGiftCard && colorSelection(),\n !props.hidelabels && React.createElement(ProductLabels, { product: product, type: \"tile-simplified\", isMouseOver: showColorSwatch && isMouseOver }),\n props.showSizeSelection && (React.createElement(React.Fragment, null,\n React.createElement(ProductSelectionSizes, { variationValues: sizeVariations, currentId: currentSize === null || currentSize === void 0 ? void 0 : currentSize.id, productId: product.uuid, onChangeVariation: (sizeVariation) => {\n changeSize(sizeVariation);\n setForceOpenSizeSelector(false);\n }, isBoutiqueExclusive: product.isBoutiqueExclusive, open: forceOpenSizeSelector }),\n justAddedMessage)))));\n };\n const getImageType = () => {\n if (props.forceStillLifeImage || props.type == 'SEARCH') {\n return 'F';\n }\n // PLP with rollover\n return props.noRollover || !isDesktop || !isOver ? 'X' : 'R';\n };\n const productName = () => {\n const Heading = (props.headingLevel ? props.headingLevel : 'h3');\n return (React.createElement(ProductLink, { isShelf: props.isShelf, noClickTracking: noClickTracking, index: props.index, product: product, tabIndex: props.disableFocus ? -1 : 0, linktype: props.type, pageType: props.pageType, className: \"product-tile__link\", recommender: props === null || props === void 0 ? void 0 : props.recommender, actionList: props.actionList, originalUuid: originalUuid },\n React.createElement(Heading, { \"aria-hidden\": props.type === 'LOOKPRODUCT', className: classNames('product-tile__name', {\n 'badge-card': (props.type == 'PLP' || props.type == 'RECS' || props.type == 'CURATORS') && (product === null || product === void 0 ? void 0 : product.unlock),\n }) }, product.productName)));\n };\n const isWhiteBg = useMemo(() => {\n return props.forceWhiteBg || (props.type === 'PLP' && (product === null || product === void 0 ? void 0 : product.imageBackground) === 'white') || (props.type !== 'PLP' && window.enableColorBackgroundStillLife);\n }, [props.type, product]);\n const tileCollection = () => {\n return (product.collections &&\n Object.keys(product.collections)\n .filter((item, i) => i == 0)\n .map((k) => {\n // eslint-disable-next-line jsx-a11y/anchor-has-content\n // with link: return ;\n return (React.createElement(\"div\", { key: k, className: \"collection-in-tile\" },\n React.createElement(\"span\", { className: `icon--${k}${!isWhiteBg ? '-white' : ''}` }),\n React.createElement(\"span\", { className: `visually-hidden ` }, t('product.incollection', { collectionName: k }))));\n }));\n };\n const tileMbm = () => {\n return (React.createElement(\"div\", { className: \"collection-in-tile\" },\n React.createElement(\"span\", { className: classNames({ 'icon-mbm': !isWhiteBg }, { 'icon-mbm-black': isWhiteBg }) }),\n React.createElement(\"span\", { className: `visually-hidden ` }, t('product.incollection'))));\n };\n return (React.createElement(\"div\", { \"data-id\": `${currentColor ? currentColor.productId : ''}${currentSize ? currentSize.id : ''}`, \"data-product\": product === null || product === void 0 ? void 0 : product.id, \"data-productuuid\": originalUuid, className: classNames('product-tile product-tile--simplified', 'single-slide__img', { 'white-bg': isWhiteBg }, { 'product-tile--carousel': props.type === 'RECS' || props.type === 'CURATORS' }, { 'in-search': props.type === 'SEARCH' }, { 'in-plp': props.type === 'PLP' }, { 'in-look': props.type === 'LOOKPRODUCT' }, { 'is-look': props.type === 'PLPLOOK' || props.type === 'LOOKTILE' }, { 'product-tile__with-carousel': isCarouselVersion }, { 'product-tile__swatch-change': props.type == 'PLP' && swatchChange && !props.forceStillLifeImage }), ref: tileRef, style: { paddingBottom: shopByLookHeight || lookProductInfoHeight }, onClick: triggerClick, onKeyDown: triggerClick },\n product ? (React.createElement(React.Fragment, null,\n React.createElement(DwMarker, { type: \"product\", uuid: product.uuid }),\n React.createElement(motion.div, { transition: getDefferedTransition(isDesktop ? (props.index < 4 ? 0 : 1) : props.index < 2 ? 0 : props.index < 4 ? 1 : 2, true), initial: { opacity: props.index < 8 ? 0 : 1 }, animate: { opacity: props.hasAnimation && !props.startAnimation ? 0 : 1 }, className: \"product-tile__card\" },\n props.type == 'LOOKTILE' ? (React.createElement(\"button\", { className: classNames('look-toggle', { 'no-looks': ((_a = product.lookProducts) === null || _a === void 0 ? void 0 : _a.length) === 0 }, { 'no-cursor': (product === null || product === void 0 ? void 0 : product.isComingSoon) !== 1 }), onClick: (e) => {\n var _a;\n if (((_a = product.lookProducts) === null || _a === void 0 ? void 0 : _a.length) > 0 && (product === null || product === void 0 ? void 0 : product.isComingSoon) === 1) {\n setOpenShopByLook(!openShopByLook);\n }\n else {\n setShopByLookNotify(!shopByLookNotify);\n }\n } },\n React.createElement(\"div\", { className: \"product-tile__image-wrapper\" },\n React.createElement(ProductImage, { productId: product.id, img: product.imgs, index: 0, className: \"product-tile__image\" })),\n React.createElement(\"div\", { className: \"single-slide__labels\" },\n React.createElement(\"div\", { className: \"single-slide__title\" }, t('product.looknbr', { n: Number(props.index) + 1 })),\n isComingSoon ? (React.createElement(\"div\", { className: \"single-slide__coming-soon\" }, t('product.nolook'))) : ((_b = product.lookProducts) === null || _b === void 0 ? void 0 : _b.length) > 0 && (product === null || product === void 0 ? void 0 : product.isComingSoon) === 1 ? (React.createElement(\"div\", { className: \"button button--tertiary-inverted button--arrow-right\" },\n React.createElement(\"div\", { className: \"single-slide__look\" }, t('label.shopthelook')))) : null))) : props.type == 'PLPLOOK' ? (React.createElement(React.Fragment, null,\n React.createElement(motion.div, { transition: getDefferedTransition(isDesktop ? (props.index < 4 ? 1 : 2) : props.index < 2 ? 1 : props.index < 4 ? 2 : 3), initial: { opacity: props.index < 8 ? 0 : 1 }, animate: { opacity: props.hasAnimation && !props.startAnimation ? 0 : 1 }, className: \"look-number__wrapper\" },\n React.createElement(\"p\", { className: \"look-number\" }, t('product.looknbr', { n: props.index + 1 })),\n ((_c = product.lookProducts) === null || _c === void 0 ? void 0 : _c.length) === 0 ? (React.createElement(\"p\", { className: \"look-number\" }, t('product.notavailable'))) : (isComingSoon && React.createElement(\"p\", { className: \"look-number\" }, t('product.nolook')))),\n React.createElement(\"button\", { className: classNames('look-toggle', { 'no-looks': ((_d = product.lookProducts) === null || _d === void 0 ? void 0 : _d.length) === 0 }, { 'no-cursor': (product === null || product === void 0 ? void 0 : product.isComingSoon) !== 1 }), onClick: (e) => {\n var _a, _b, _c;\n if (shopByLookHeight == 0 && ((_a = product.lookProducts) === null || _a === void 0 ? void 0 : _a.length) > 0) {\n document.documentElement.style.scrollBehavior = 'smooth';\n document.documentElement.scrollTop +=\n e.currentTarget.getBoundingClientRect().bottom -\n ((_b = document.querySelector('header')) === null || _b === void 0 ? void 0 : _b.offsetHeight) -\n ((_c = document.querySelector('.refine')) === null || _c === void 0 ? void 0 : _c.offsetHeight);\n setTimeout(() => (document.documentElement.style.scrollBehavior = undefined), 500);\n setShopByLookHeight(sbl.current.offsetHeight);\n (props === null || props === void 0 ? void 0 : props.handleShopByLook) && props.handleShopByLook(true);\n }\n else {\n setShopByLookHeight(0);\n (props === null || props === void 0 ? void 0 : props.handleShopByLook) && props.handleShopByLook(false);\n }\n } },\n React.createElement(\"div\", { className: \"product-tile__image-wrapper\" },\n React.createElement(ProductImage, { productId: product.id, img: product.imgs, index: 0, className: \"product-tile__image\" }))))) : (React.createElement(\"div\", { className: \"product-tile__image-wrapper\", ref: containerRef }, props.customImage ? (React.createElement(\"img\", { alt: product.productName, src: props.customImage, className: \"custom_image\" })) : isCarouselVersion ? (React.createElement(ProductTileCarousel, { img: product.imgs, productId: product.id, genderImageSorted: (_e = props.category) === null || _e === void 0 ? void 0 : _e.genderImageSorted, productUuid: originalUuid, isOver: isOver, imgQuality: props.type === 'PLP' && isMobile && 60, isSimplified: true, hideCarouselPagination: props.hideCarouselPagination })) : (React.createElement(\"div\", null,\n React.createElement(ProductImage\n // style={{ transform: `scale(${imageTransformPercentage})` }}\n , { \n // style={{ transform: `scale(${imageTransformPercentage})` }}\n productId: product.id, img: product.imgs, tiletype: props.type, type: getImageType(), className: \"product-tile__image\", productUuid: originalUuid, animatedImage: props.type == 'PLP' }))))),\n tileCollection(),\n product.isMbm && tileMbm(),\n hoverDifferent && React.createElement(\"div\", { className: \"product-carousel__headline-hover\" }, product.productName),\n introCards && (React.createElement(\"div\", { className: \"product-carousel__headline-hover\" },\n props.lookCarouselLabel && React.createElement(\"span\", null, props.lookCarouselLabel),\n React.createElement(\"h3\", null, product.productName)))),\n props.type == 'LOOKTILE' ? (((_f = product.lookProducts) === null || _f === void 0 ? void 0 : _f.length) > 0 ? (React.createElement(ModalDialog, { hideHeader: true, noPadding: true, closeInvertedSm: true, className: \"look-modal\", isOpen: openShopByLook, onRequestClose: () => {\n setOpenShopByLook(false);\n } },\n React.createElement(LookProduct, { noRedux: true, products: product.lookProducts, showLook: props.showLook, contactformurl: props === null || props === void 0 ? void 0 : props.contactformurl, title: t('product.looknbr', { n: Number(props.index) + 1 }) }))) : (React.createElement(ProductNotifyMeModal, { isOpen: shopByLookNotify, title: t('label.notifyme'), product: product, color: currentColor, size: currentSize, onRequestClose: () => setShopByLookNotify(false), from: 'look', inWishlist: false }))) : props.type == 'PLPLOOK' ? (((_g = product.lookProducts) === null || _g === void 0 ? void 0 : _g.length) > 0 && (React.createElement(\"div\", { className: \"shop-by-look-module\", style: { height: shopByLookHeight, visibility: shopByLookHeight === 0 ? 'hidden' : 'visible' } },\n React.createElement(\"div\", { ref: sbl, className: \"container\" },\n React.createElement(\"button\", { className: \"icon--close close-shopbylook\", onClick: () => {\n setShopByLookHeight(0);\n props === null || props === void 0 ? void 0 : props.handleShopByLook(false);\n }, \"aria-label\": t('button.close') }),\n React.createElement(LookProduct, { products: product.lookProducts, showLook: props.showLook }))))) : isDesktop || props.type == 'LOOKPRODUCT' ? (productInfo()) : (React.createElement(React.Fragment, null, productInfo())))) : (React.createElement(React.Fragment, null,\n React.createElement(\"div\", { className: \"product-tile__card\" },\n React.createElement(\"div\", { className: \"product-tile__link\" },\n React.createElement(\"div\", { className: \"product-tile__image-wrapper\" },\n React.createElement(\"div\", { className: \"product-image\" })))),\n !props.hidelabels && (React.createElement(\"div\", { className: \"product-tile__info single-slide__labels\" },\n React.createElement(\"p\", { className: \"product-tile__name\" }, t('label.loading')),\n !props.hideprice && React.createElement(\"span\", { className: \"product-tile__price\" }, t('label.loading')))))),\n showWishlistBtn && (React.createElement(ProductWishlistToggle, { color: isWhiteBg ? 'black' : 'white', productSize: currentSize, productColor: currentColor, product: productObject, section: props.type })),\n React.createElement(LoginModal, { reloadPage: true, incontext: \"membersonly\", modalStatus: loginOpen, updateStatus: (status) => setLoginOpen(status) })));\n};\nexport default ProductTile;\n","import ColorSwatch from '@moncler/components/product/ColorSwatch';\nimport Button from '@ui/button/Button';\nimport DwFormField from '@ui/formfield/DwFormField';\nimport createDecorator from 'final-form-focus';\nimport React, { useCallback, useMemo, useState } from 'react';\nimport { Form } from 'react-final-form';\nimport { useTranslation } from 'react-i18next';\nimport { getSizeVariations } from '@utils/product';\nimport SelectorSize from '@ui/selector/SelectorSize';\nconst focusOnError = createDecorator(); // must be outside the component\nconst NotifyForm = ({ formdef, onSubmit, initialValues, validate, buttonText, product, color, currentSize, showSizeSelector, setCurrentSize }) => {\n const { t } = useTranslation();\n const [error, setError] = useState(false);\n const sizeVariations = useMemo(() => {\n const sizeVariations = getSizeVariations(product);\n if (sizeVariations.length == 1 && !(product === null || product === void 0 ? void 0 : product.isParfum)) {\n setCurrentSize(sizeVariations[0]);\n }\n return sizeVariations;\n }, [product]);\n const productName = useMemo(() => {\n var _a, _b;\n return (product === null || product === void 0 ? void 0 : product.isParfum) ? (_b = (_a = product === null || product === void 0 ? void 0 : product.parfumAttributes) === null || _a === void 0 ? void 0 : _a.productFamily.find((el) => el.format === currentSize.displayValue)) === null || _b === void 0 ? void 0 : _b.name : product === null || product === void 0 ? void 0 : product.productName;\n }, [product]);\n const termsAndConditions = useMemo(() => {\n var _a;\n if (product) {\n return t('notifyme.termsandconditions');\n }\n else {\n const isApp = window.appmode;\n const cookieUrl = (_a = document.getElementById('hidden-cookieurl')) === null || _a === void 0 ? void 0 : _a.href;\n const href = cookieUrl + (isApp ? '?showtopbar=true' : '');\n return t('notifyme.termsandconditionsnoproduct', { 0: href });\n }\n }, [product]);\n const sizeSelection = useCallback(() => {\n return (React.createElement(React.Fragment, null,\n React.createElement(\"div\", { className: \"selector__menu--size\" },\n React.createElement(\"p\", null, t('selector.size')),\n React.createElement(\"fieldset\", { className: \"selector-size-expanded\" }, sizeVariations === null || sizeVariations === void 0 ? void 0 : sizeVariations.map((variation) => (React.createElement(SelectorSize, { key: variation.id, value: variation.id, label: variation.displayValue, selected: variation.value == (currentSize === null || currentSize === void 0 ? void 0 : currentSize.value), disabled: sizeVariations.length < 2 ? false : product.isComingSoon === 2 || (!variation.selectable && !window.unshoppable), variationGroupId: product.id, onSelect: () => {\n if (error) {\n setError(false);\n }\n setCurrentSize(variation);\n } }))))),\n error && (React.createElement(\"div\", { className: \"selector__error\" },\n React.createElement(\"span\", { className: \"errormessage\", role: \"alert\" }, t('label.pleaseselectasize'))))));\n }, [product, currentSize, error]);\n return (React.createElement(React.Fragment, null,\n product && (React.createElement(\"div\", { className: \"modal__product-details mt-24\" },\n React.createElement(\"p\", { className: \"product-details__product-name bold\" }, productName),\n color && (React.createElement(React.Fragment, null,\n React.createElement(\"p\", { className: \"product-details__product-color\" },\n t('label.color'),\n \": \", color === null || color === void 0 ? void 0 :\n color.displayValue,\n React.createElement(\"span\", { className: \"product-details__color-swatch\" },\n React.createElement(ColorSwatch, { variation: color }))))),\n showSizeSelector ? (sizeSelection()) : (React.createElement(\"p\", { className: \"product-details__product-size\" },\n t('label.size'),\n \": \", currentSize === null || currentSize === void 0 ? void 0 :\n currentSize.displayValue)))),\n formdef && (React.createElement(Form, { onSubmit: onSubmit, initialValues: initialValues, decorators: [focusOnError], validate: (values) => validate(values, formdef), render: ({ handleSubmit, form, submitting, pristine, values }) => (React.createElement(\"form\", { onSubmit: (e) => {\n if (product && !currentSize) {\n setError(true);\n e.preventDefault();\n return;\n }\n handleSubmit(e);\n } },\n React.createElement(\"fieldset\", null,\n React.createElement(\"div\", { className: \"row\" },\n React.createElement(\"div\", { className: \"col-12\" },\n React.createElement(DwFormField, { def: formdef, name: \"email\", type: \"email\", autocomplete: \"email\", idSuffix: \"address-field\" }))),\n !product && (React.createElement(React.Fragment, null,\n React.createElement(\"div\", { className: \"row\" },\n React.createElement(\"div\", { className: \"col-12 newsletter-modal__gender-wrapper mt-12\" },\n React.createElement(DwFormField, { def: formdef, className: 'gender-selection', name: \"gender\", type: \"radio\" }))),\n React.createElement(\"div\", { className: \"row\" },\n React.createElement(\"div\", { className: \"col-12 mb-12 privacy-flag-container\" },\n React.createElement(DwFormField, { def: formdef, type: \"checkbox\", name: \"privacyFlag\" }))))),\n product && (React.createElement(\"div\", { className: \"row\" },\n React.createElement(\"div\", { className: \"col-12\" },\n React.createElement(DwFormField, { def: formdef, type: \"checkbox\", name: \"emailMarketingConsentFlag\" }))))),\n React.createElement(\"p\", { className: \"note-required\" },\n React.createElement(\"small\", { className: \"note\" }, t('label.required'))),\n React.createElement(Button, { type: \"submit\", disabled: submitting, cls: ['button--primary'] }, buttonText))) })),\n React.createElement(\"p\", null,\n React.createElement(\"small\", { className: \"note\", dangerouslySetInnerHTML: { __html: termsAndConditions } }))));\n};\nexport default NotifyForm;\n","import React from 'react';\nconst ColorSwatch = ({ variation, stroke, ariaHidden }) => {\n if (!variation) {\n return React.createElement(React.Fragment, null);\n }\n return (React.createElement(\"i\", { className: `swatch swatch--${variation.refinementColor}`, title: variation.displayValue, style: { backgroundColor: variation.swatchColor, backgroundImage: (variation.swatchImg && `url(${variation.swatchImg})`) || undefined }, \"aria-hidden\": ariaHidden }, stroke && React.createElement(\"span\", { className: \"stroke\" })));\n};\nexport default ColorSwatch;\n","import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport Button from '@common/ui/button/Button';\nimport DwFormField from '@common/ui/formfield/DwFormField';\nimport ModalDialog from '@common/ui/modal/ModalDialog';\nimport api from '@common/utils/api';\nimport formutils from '@common/utils/formutils';\nimport ErrorBox from '@components/common/ErrorBox';\nimport classNames from 'classnames';\nimport createDecorator from 'final-form-focus';\nimport { Form } from 'react-final-form';\nimport { useTranslation } from 'react-i18next';\nimport Tooltip from '@common/ui/tooltip/Tooltip';\nimport analytics from '@utils/analytics';\nimport { getTimezoneOffset, printToUserTimezone } from '@common/utils/dateUtils';\nconst focusOnError = createDecorator(); // must be outside the component\nconst GiftCardPurchaseModal = ({ isOpen = false, onRequestClose, type, product, onSubmit, onMoveToBag }) => {\n var _a, _b;\n // States\n const [errors, setErrors] = useState([]); // Form errors\n const [amountErrors, setAmountErrors] = useState([]); // Form amount errors\n const [formdef, setFormdef] = useState(); // Form definition\n const [initialValues, setInitialValues] = useState(); // Form initial values\n const [selectedAmount, setSelectedAmount] = useState(''); // Used to highlight the selected amount button\n const [customVisible, setCustomVisible] = useState(false); // Determine if `amount` form field must be visible (to allow a custom amount)\n const [messageVisible, setMessageVisible] = useState(false); // Determine if `receiverName` and `yourMessage` form fields must be visible\n const [messageLength, setMessageLength] = useState(200); // Remaining characters for the `yourMessage` field\n const [dateVisible, setDateVisible] = useState(false); // Determine if `delayedDate` and `delayedTime` form fields must be visible\n const [maxDelayedDate, setMaxDelayedDate] = useState(new Date().toISOString()); // Max date for `delayedDate` form field\n const [selectedDate, setSelectedDate] = useState();\n // Hooks\n const { t, i18n } = useTranslation();\n // Ref\n const amountRef = useRef();\n // Utils\n const intlNumberFormater = new Intl.NumberFormat(((_a = window.locale) === null || _a === void 0 ? void 0 : _a.replace('_', '-')) || `${window.language}-${window.country}` || i18n.language);\n const regexRemoveMask = /[^0-9]/g;\n // Time zone calculation\n const timezones = (_b = window.timezones) === null || _b === void 0 ? void 0 : _b.split('|');\n const userTz = Intl.DateTimeFormat().resolvedOptions().timeZone;\n let actualTimezone = timezones[0];\n if (timezones.includes(userTz)) {\n actualTimezone = userTz;\n }\n const tzDate = new Date();\n tzDate.setMinutes(tzDate.getMinutes() + getTimezoneOffset(actualTimezone));\n const deliveryTimeRangeOptions = useMemo(() => {\n // Delivery time range options for the delayed time field\n const deliveryTimeRange = 30;\n const options = Array.from({ length: 24 * 60 / deliveryTimeRange }, (_, i) => {\n var _a, _b;\n let baseTime = new Date('2021-01-01T00:00:00');\n baseTime.setMinutes(baseTime.getMinutes() + i * deliveryTimeRange);\n const value = baseTime.toLocaleTimeString('en-GB', { hour: '2-digit', minute: '2-digit' });\n const startTime = (_a = baseTime.toLocaleTimeString(window.country === 'US' || window.country === 'CA' ? 'en-US' : window.country, { hour: '2-digit', minute: '2-digit' })) === null || _a === void 0 ? void 0 : _a.toLocaleLowerCase();\n baseTime.setMinutes(baseTime.getMinutes() + deliveryTimeRange);\n const endTime = (_b = baseTime.toLocaleTimeString(window.country === 'US' || window.country === 'CA' ? 'en-US' : window.country, { hour: '2-digit', minute: '2-digit' })) === null || _b === void 0 ? void 0 : _b.toLocaleLowerCase();\n if (selectedDate) {\n const now = tzDate;\n const selectedDateFormatted = new Date(selectedDate + 'T00:00:00.000');\n let timeOffset = getTimezoneOffset(actualTimezone);\n if (timeOffset < 0) {\n timeOffset = -timeOffset;\n }\n selectedDateFormatted.setMinutes(selectedDateFormatted.getMinutes() + timeOffset);\n // disable past time options if today is selected\n if (selectedDateFormatted.toDateString() === now.toDateString() && baseTime.getMinutes() + (i * deliveryTimeRange) - 30 <= now.getHours() * 60 + now.getMinutes()) {\n return { value, label: `${startTime} - ${endTime}`, disabled: true };\n }\n }\n return { value, label: `${startTime} - ${endTime}` };\n });\n options.unshift({ value: '', label: t('gc.choosetime'), disabled: true });\n return options;\n }, [selectedDate]);\n // Boot\n useEffect(() => {\n if (isOpen) {\n let val = {};\n api.getForm('giftCardConfiguration', val, true).then(data => {\n if (type == 'create') {\n setInitialValues(val);\n setFormdef(data);\n }\n else if (type == 'edit') {\n // Custom amount options\n let value = product.singleItemValue ? product.singleItemValue.toString() : product.price ? product.price.sales.value.toString() : '';\n const amount = product.gcConfigurations.find(am => am.number == value);\n if (!!amount) {\n setSelectedAmount(amount.number);\n }\n else {\n // Custom amount visibility\n value = intlNumberFormater.format(value);\n setCustomVisible(true);\n setSelectedAmount('custom');\n }\n // Custom message options\n if (product.giftCardAttributes && !!product.giftCardAttributes.message) {\n setMessageVisible(true);\n setMessageLength(200 - product.giftCardAttributes.message.length);\n }\n // Delayed date options\n const isDelayed = product.giftCardAttributes && !!product.giftCardAttributes.sendDate;\n data.deliveryDate.selectedOption = isDelayed ? 'later' : 'today';\n data.deliveryDate.htmlValue = isDelayed ? 'later' : 'today';\n data.deliveryDate.options = data.deliveryDate.options.map(option => {\n if (option.value == 'today') {\n if (isDelayed) {\n delete option.checked;\n delete option.selected;\n }\n else {\n option.checked = true;\n option.selected = true;\n }\n }\n else if (option.value == 'later') {\n if (!isDelayed) {\n delete option.checked;\n delete option.selected;\n }\n else {\n option.checked = true;\n option.selected = true;\n }\n }\n return option;\n });\n setFormdef(data);\n changeDelayDate(isDelayed ? 'later' : 'today');\n if (product.giftCardAttributes) {\n const currentDate = (product.giftCardAttributes.sendDate && printToUserTimezone(product.giftCardAttributes.sendDate, 'date', 'short', true)) || new Date(tzDate.getTime() + 60 * 24 * 60 * 60 * 1000).toISOString().split('T')[0];\n const currentTime = (product.giftCardAttributes.sendDate && printToUserTimezone(product.giftCardAttributes.sendDate, 'time', 'short', true));\n setInitialValues({\n amount: value,\n delayedDate: currentDate,\n delayedTime: currentTime,\n deliveryDate: isDelayed ? 'later' : 'today',\n includeMessage: !!product.giftCardAttributes.message,\n receiverEmail: product.giftCardAttributes.recipientEmail,\n receiverEmailVerification: product.giftCardAttributes.recipientEmail,\n receiverName: product.giftCardAttributes.recipientName,\n yourMessage: product.giftCardAttributes.message\n });\n setSelectedDate(currentDate);\n }\n else {\n //giftcard in wishlist not configured\n setInitialValues(val);\n }\n }\n });\n }\n }, [isOpen]);\n /**\n * Validate the form\n */\n const validate = async (values) => {\n var _a;\n values.amount = (_a = values.amount) === null || _a === void 0 ? void 0 : _a.replace(regexRemoveMask, ''); // Remove amount mask before validation\n let errors = await formutils.validateForm(values, formdef, 'giftCardConfiguration');\n // Range error\n if (parseFloat(values.amount) > product.gcLimits.maxValue.value || parseFloat(values.amount) < product.gcLimits.minValue.value) {\n errors.amount = t('gc.invalid.amount', `Please enter an amount between ${product.gcLimits.minValue.formattedValue} and ${product.gcLimits.maxValue.formattedValue}`, { 0: product.gcLimits.minValue.formattedValue, 1: product.gcLimits.maxValue.formattedValue });\n }\n // Decimal error\n if (!Number.isInteger(parseFloat(values.amount))) {\n errors.amount = t('gc.decimal.amount');\n }\n // Empty amount\n if (!!!values.amount) {\n errors.amount = t('label.requiredfield');\n }\n // Message errors\n if (values.includeMessage) {\n if (!values.receiverName || values.receiverName == '') {\n errors.receiverName = t('label.requiredfield');\n }\n if (!values.yourMessage || values.yourMessage == '') {\n errors.yourMessage = t('label.requiredfield');\n }\n }\n // Delayed date errors\n let delayedErrors;\n if (values.deliveryDate == 'later') {\n if (!values.delayedDate) {\n errors.delayedDate = t('label.requiredfield');\n delayedErrors = [t('gc.delayed.error')];\n }\n if (!values.delayedTime) {\n errors.delayedTime = t('label.requiredfield');\n delayedErrors = [t('gc.delayed.error')];\n }\n const now = tzDate;\n const selectedDateFormatted = new Date(`${values.delayedDate}T${values.delayedTime}`);\n if (selectedDateFormatted <= now) {\n errors.delayedTime = t('gc.delayed.error');\n delayedErrors = [t('gc.delayed.error')];\n }\n }\n return errors;\n };\n /**\n * Add the product to cart\n */\n const addToBag = async (values) => {\n //addToBagFromWishlist\n const isAddToBag = values.action == 'addToBag';\n setErrors([]);\n let errors = await validate(values);\n if (errors && Object.keys(errors).length > 0) {\n return errors;\n }\n let actualDate = tzDate.toISOString();\n if (values.deliveryDate == 'today') {\n actualDate = null;\n }\n else if (values.deliveryDate == 'later') {\n actualDate = values.delayedDate + 'T' + values.delayedTime + ':00.000';\n let actualDateConversion = new Date(actualDate);\n actualDateConversion.setMinutes(actualDateConversion.getMinutes() - getTimezoneOffset(actualTimezone));\n actualDate = actualDateConversion.toISOString();\n }\n let giftCard = {\n gcAmount: values.amount,\n gcEmail: values.receiverEmail,\n gcName: values.includeMessage ? values.receiverName : null,\n gcMessage: values.includeMessage ? values.yourMessage : null,\n gcDate: actualDate\n };\n if (type == 'create') {\n onSubmit(giftCard);\n }\n else if (type == 'edit') {\n if (isAddToBag) {\n onMoveToBag(Object.assign({ gcUUID: product.UUID, gcPID: product.id }, giftCard), formdef);\n }\n else {\n onSubmit(Object.assign({ gcUUID: product.UUID, gcPID: product.id }, giftCard), formdef);\n }\n }\n closeModal();\n };\n /**\n * Change option values for the delayed date inputs\n */\n const changeDelayDate = (option) => {\n if (option == 'later') {\n let delay = tzDate;\n delay.setDate(delay.getDate() + product.gcMaxDelayDate);\n setMaxDelayedDate(() => delay.toISOString());\n setDateVisible(() => true);\n }\n else if (option == 'today') {\n setDateVisible(() => false);\n }\n };\n /**\n * Close the modal, then reset all fields\n */\n const closeModal = () => {\n onRequestClose();\n setFormdef(null);\n setInitialValues(null);\n setSelectedAmount('');\n setCustomVisible(false);\n setMessageVisible(false);\n setMessageLength(200);\n setDateVisible(false);\n };\n if (!formdef) {\n return React.createElement(React.Fragment, null);\n }\n return (React.createElement(ModalDialog, { className: 'modal--fixed gc-config-modal', overlayClassName: \"overlay-visible\", isOpen: isOpen, onRequestClose: () => closeModal(), noPadding: true, hideHeader: true },\n React.createElement(\"div\", { className: \"product-notify\" },\n React.createElement(\"div\", { className: \"product-notify__main\", style: { backgroundImage: \"url('\" + product.imgs.urls[0] + \"')\" } }),\n React.createElement(\"div\", { className: \"product-notify__detail giftcard-form\" },\n React.createElement(\"h2\", null, t('gc.digitalgiftcard')),\n React.createElement(Form, { onSubmit: addToBag, initialValues: initialValues, validate: validate, decorators: [focusOnError], render: ({ handleSubmit, form, submitting, pristine, values }) => {\n var _a;\n return (React.createElement(\"form\", { onSubmit: handleSubmit },\n React.createElement(React.Fragment, null,\n React.createElement(\"p\", { className: 'gc-amount' }, t('gc.selectamount').toUpperCase()),\n React.createElement(\"div\", { className: \"d-flex gc-amount-btn-container\", ref: amountRef },\n product.gcConfigurations.map(card => (React.createElement(Button, { key: card.number, onClick: () => {\n setCustomVisible(false);\n setSelectedAmount(card.number);\n setAmountErrors([]);\n form.batch(() => form.change('amount', card.number));\n }, type: 'button', cls: ['button--tertiary'], className: selectedAmount == card.number ? 'gc-amount-btn-alt' : 'gc-amount-btn' }, card.formatted))),\n React.createElement(Button, { onClick: () => {\n setCustomVisible(true);\n setSelectedAmount('custom');\n setAmountErrors([]);\n form.batch(() => form.change('amount', ''));\n }, type: 'button', cls: ['button--tertiary'], className: selectedAmount == 'custom' ? 'gc-amount-btn-alt' : 'gc-amount-btn' }, t('gc.custom'))),\n React.createElement(\"div\", { className: \"pw-error col-6\" },\n React.createElement(ErrorBox, { errors: amountErrors, className: 'gc-error-box' })),\n React.createElement(\"div\", { className: classNames([\"row\", { 'd-none': !customVisible }, 'mt-12']) },\n React.createElement(\"div\", { className: \"col-6\" },\n React.createElement(DwFormField, { def: formdef, name: 'amount', type: 'text', autocomplete: 'off', altLabel: t('gc.insertamount'), requiredLabel: true, maxLength: ((_a = intlNumberFormater.format(product.gcLimits.maxValue.value)) === null || _a === void 0 ? void 0 : _a.length) || 7, textPrefix: product.gcCurrency, onChange: (e) => {\n var _a;\n // remove mask used on amount\n const value = (_a = e.target.value) === null || _a === void 0 ? void 0 : _a.replace(regexRemoveMask, '');\n // avoid non-numeric values\n const isValidNumber = !Number.isNaN(Number(value));\n form.batch(() => {\n form.change('amount', value && isValidNumber ? intlNumberFormater.format(isValidNumber ? value : value.slice(0, -1)) : '');\n });\n } })),\n React.createElement(\"div\", { className: \"col-2\" },\n React.createElement(Tooltip, { ariaLabel: t('gc.amount.tooltip', `Insert an amount between ${product.gcLimits.minValue.formattedValue} and ${product.gcLimits.maxValue.formattedValue}`, { 0: product.gcLimits.minValue.formattedValue, 1: product.gcLimits.maxValue.formattedValue }), id: 'gc-email-tooltip', icon: \"info\", text: t('gc.amount.tooltip', `Insert an amount between ${product.gcLimits.minValue.formattedValue} and ${product.gcLimits.maxValue.formattedValue}`, { 0: product.gcLimits.minValue.formattedValue, 1: product.gcLimits.maxValue.formattedValue }), className: \"ml-12\" }))),\n React.createElement(\"div\", { className: \"modal__separator\" }),\n React.createElement(\"div\", { className: \"row\" },\n React.createElement(\"div\", { className: \"col-10\" },\n React.createElement(DwFormField, { def: formdef, name: 'receiverEmail', type: 'text', autocomplete: 'off', altLabel: t('gc.receiver.email'), requiredLabel: true, preventPaste: true })),\n React.createElement(\"div\", { className: \"col-2\" },\n React.createElement(Tooltip, { ariaLabel: t('gc.email.tooltip'), id: 'gc-email-tooltip', icon: \"info\", text: t('gc.email.tooltip'), className: \"ml-12\" }))),\n React.createElement(\"div\", { className: \"row\" },\n React.createElement(\"div\", { className: \"col-12 col-md-10\" },\n React.createElement(DwFormField, { def: formdef, name: 'receiverEmailVerification', type: 'text', autocomplete: 'off', altLabel: t('gc.receiver.emailverify'), requiredLabel: true, preventPaste: true }))),\n React.createElement(\"div\", { className: \"row gc-custom-check\" },\n React.createElement(\"div\", { className: \"col-10\" },\n React.createElement(DwFormField, { def: formdef, name: 'includeMessage', type: 'checkbox', autocomplete: 'off', altLabel: t('gc.customMessage'), onChange: e => setMessageVisible(e.target.checked) }))),\n messageVisible\n &&\n React.createElement(React.Fragment, null,\n React.createElement(\"div\", { className: \"row mt-16\" },\n React.createElement(\"div\", { className: \"col-12\" },\n React.createElement(DwFormField, { def: formdef, name: 'receiverName', type: 'text', autocomplete: 'off', altLabel: t('gc.receiver.name'), requiredLabel: true }))),\n React.createElement(\"div\", { className: \"row\" },\n React.createElement(\"div\", { className: \"col-12\" },\n React.createElement(DwFormField, { def: formdef, name: 'yourMessage', type: 'textarea', autocomplete: 'off', altLabel: t('gc.yourmessage'), maxLength: 200, onChange: e => setMessageLength(200 - e.target.value.length), groupClassName: 'mb-0', requiredLabel: true }),\n React.createElement(\"span\", { className: \"field-sublabel\" }, messageLength + ' ' + t('gc.charactersleft'))))),\n React.createElement(\"div\", { className: \"modal__separator\" }),\n React.createElement(\"div\", { className: \"row\" },\n React.createElement(\"div\", { className: \"col-12\" },\n React.createElement(\"span\", { className: \"field-label d-block\" },\n t('gc.prefdeliverydate'),\n \"*\"),\n React.createElement(DwFormField, { def: formdef, name: 'deliveryDate', type: 'optionbox', autocomplete: 'off', hiddenLabel: true, fieldType: 'radio', onChange: e => {\n const option = e.target.value;\n changeDelayDate(option);\n } }))),\n dateVisible\n &&\n React.createElement(\"div\", { className: \"row mt-8\" },\n React.createElement(\"div\", { className: \"col-6\" },\n React.createElement(DwFormField, { def: formdef, name: 'delayedDate', type: 'date', autocomplete: 'off', altLabel: t('gc.choosedate'), requiredLabel: true, onChange: e => { var _a; return setSelectedDate((_a = e.target) === null || _a === void 0 ? void 0 : _a.value); }, minDate: tzDate.getFullYear() + '-' + (\"0\" + (tzDate.getMonth() + 1)).slice(-2) + '-' + (\"0\" + tzDate.getDate()).slice(-2), maxDate: maxDelayedDate.split('T')[0] })),\n React.createElement(\"div\", { className: \"col-6\" },\n React.createElement(DwFormField, { def: formdef, name: 'delayedTime', type: \"select\", altLabel: t('gc.choosetime'), requiredLabel: true, options: deliveryTimeRangeOptions }))),\n React.createElement(\"div\", { className: \"pw-error col-6\" },\n React.createElement(ErrorBox, { errors: errors, className: 'gc-error-box' })),\n onMoveToBag &&\n React.createElement(\"div\", { className: \"row button-row\" },\n React.createElement(\"div\", { className: \"col-12\" },\n React.createElement(Button, { type: \"submit\", disabled: submitting, className: 'button--primary', onClick: () => form.change('action', 'addToBag') }, t('button.gcaddtobag')))),\n React.createElement(\"div\", { className: classNames(\"row button-row\", onMoveToBag ? \"giftcard-update-button-row\" : \"\") },\n React.createElement(\"div\", { className: \"col-12\" },\n React.createElement(Button, { onClick: () => {\n var _a;\n if (type !== 'create' && !submitting) {\n analytics.editTheGiftcard();\n }\n if (!customVisible && (!values.amount || values.amount == '')) {\n setAmountErrors([t('gc.amount.error')]);\n (_a = amountRef.current) === null || _a === void 0 ? void 0 : _a.scrollIntoView({ block: 'center' });\n }\n }, type: \"submit\", disabled: submitting, cls: [type == 'create' ? 'button--primary' : 'button--secondary'] }, t(type == 'create' ? 'button.gcaddtobag' : 'button.update')))),\n React.createElement(\"div\", { className: \"row cancel-button\" },\n React.createElement(\"div\", { className: \"col-12\" },\n React.createElement(Button, { type: 'button', disabled: submitting, cls: ['button--arrow-left'], onClick: () => closeModal() }, t('button.gccancel').toUpperCase()))))));\n } })))));\n};\nexport default GiftCardPurchaseModal;\n","import Button from '@ui/button/Button';\nimport analytics from '@utils/analytics';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport customEventBus from '@common/scripts/libs/eventBus';\nimport api from '@common/utils/api';\nimport GiftCardPurchaseModal from './GiftCardPurchaseModal';\nconst LoginModal = React.lazy(() => import('@components/login/LoginModal'));\nconst ProductActionAddToBag = (props) => {\n var _a, _b, _c, _d;\n let { t } = useTranslation();\n const [showAddToBagMessage, setShowAddToBagMessage] = useState(false);\n const [loginOpen, setLoginOpen] = useState(false);\n const [giftCardPurchase, setGiftCardPurchase] = useState(false);\n useEffect(() => {\n let quickShopTimeout;\n if (showAddToBagMessage) {\n quickShopTimeout = setTimeout(() => {\n setShowAddToBagMessage(false);\n }, 5000);\n }\n return () => {\n clearTimeout(quickShopTimeout);\n };\n }, [showAddToBagMessage]);\n const addToBag = (card = null) => {\n setShowAddToBagMessage(true);\n props.onAddStart && props.onAddStart();\n if (!props.size) {\n console.log('no size, triggering size selector:', props.triggerOpenSize);\n props.triggerOpenSize && props.triggerOpenSize();\n // let selectSize = props.stickyPDP ? (document.querySelector('.sticky-modal') as HTMLDivElement) : (document.querySelector('.selector-size-expanded') as HTMLDivElement);\n setTimeout(() => {\n // selectSize?.focus();\n }, 100);\n return;\n }\n const productId = `${props.product.id}${props.size.id}`;\n api.addToBag(productId, 1, null, card).then((data) => {\n if (data.error) {\n props.updateErrorMessage && props.updateErrorMessage(data.message);\n props.updateErrorTitle && props.updateErrorTitle(data.label);\n }\n else {\n if (data.quantityTotal) {\n const header = document.querySelector('header');\n const firstRefine = document.querySelector('.listing-container .refine');\n header === null || header === void 0 ? void 0 : header.style.removeProperty('transform');\n if (firstRefine) {\n firstRefine.style.removeProperty('transform');\n }\n // console.info('update minicart');\n customEventBus.emit('bag:update', { fromMinicart: true });\n let wrapper = document.querySelector('.minibag');\n wrapper === null || wrapper === void 0 ? void 0 : wrapper.focus();\n if (props.isSearchTile) {\n document.querySelector('#infinite-scroll-wrapper').classList.remove('stick-top');\n document.querySelector('#infinite-scroll-wrapper').classList.add('minicart-overlay');\n }\n if (props.isLookCarousel) {\n customEventBus.emit('minicart:update', { pid: productId });\n }\n else {\n customEventBus.emit('minicart:update', { fromAddToBag: true, pid: productId });\n }\n }\n if (props.product.isGiftCard) {\n analytics.addToBag(props.product, null, null, card.gcAmount);\n analytics.addGiftcardToBag({ gcAmount: card.gcAmount, gcMessage: card.gcMessage });\n }\n else {\n if (props.pushAnalytics) {\n props.pushAnalytics();\n }\n }\n // sposto qui la callback, in modo che viene eseguita come ultima operazione se la chiamata va a buon fine\n if (props.callback) {\n props.callback();\n }\n }\n });\n };\n const btnModifiers = useMemo(() => {\n if (props.noModifiers) {\n return [];\n }\n let btnClass = props.secondary ? 'button--secondary' : 'button--primary';\n if (props.inverted) {\n btnClass += '-inverted';\n }\n return [btnClass];\n }, [props.secondary, props.inverted, props.noModifiers]);\n if (!props.product) {\n return null;\n }\n return !window.loggedin && window.loginUrl && ((_a = props.product) === null || _a === void 0 ? void 0 : _a.unlock) ? (React.createElement(React.Fragment, null,\n React.createElement(Button, { type: \"button\", cls: btnModifiers, className: props.className, onClick: () => {\n var _a, _b;\n props.inPDP && analytics.loginToPurchase((_a = props.product) === null || _a === void 0 ? void 0 : _a.id, 'pdp', 'pdp');\n props.inShopTheLook && analytics.loginToPurchase((_b = props.product) === null || _b === void 0 ? void 0 : _b.id, 'flp', 'shop by look');\n setLoginOpen(true);\n } }, t('button.signintopurchase')),\n React.createElement(LoginModal, { reloadPage: true, incontext: \"membersonly\", modalStatus: loginOpen, updateStatus: (status) => setLoginOpen(status) }))) : showAddToBagMessage && props.isLookCarousel ? (React.createElement(Button, { type: \"button\", cls: btnModifiers, className: \"button--added-item\", onClick: () => addToBag() }, t('bag.justadded'))) : (React.createElement(React.Fragment, null,\n React.createElement(Button, { type: \"button\", cls: btnModifiers, ariaHaspopup: \"dialog\", onClick: () => {\n if (props.product.isGiftCard) {\n analytics.addToCartGiftCard(props.product.id);\n setGiftCardPurchase(true);\n }\n else {\n addToBag();\n }\n } }, props.product.isGiftCard\n ? props.product.type == 'tile' || props.product.type == 'size'\n ? t('gc.chooseam')\n : t('gc.shopnow')\n : ((_d = (_c = (_b = props.product.variationAttributes) === null || _b === void 0 ? void 0 : _b.find((va) => va.id == 'color')) === null || _c === void 0 ? void 0 : _c.values.find((va) => va.selected)) === null || _d === void 0 ? void 0 : _d.preorderable)\n ? t('button.preordernow')\n : t('button.addtobag')),\n React.createElement(GiftCardPurchaseModal, { isOpen: giftCardPurchase, onRequestClose: () => setGiftCardPurchase(false), type: \"create\", product: props.product, onSubmit: (card) => addToBag(card) })));\n};\nexport default ProductActionAddToBag;\n","import Button from '@ui/button/Button';\nimport analytics from '@utils/analytics';\nimport React, { useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport ProductNotifyMeModal from './ProductNotifyMeModal';\nconst ProductActionNotifyMe = (props) => {\n var _a;\n const { t } = useTranslation();\n const [showOverlay, setShowOverlay] = React.useState(false);\n const btnModifiers = useMemo(() => {\n if (props.noModifiers) {\n return [];\n }\n let btnClass = props.secondary ? 'button--secondary' : 'button--primary';\n if (props.inverted) {\n btnClass += '-inverted';\n }\n return [btnClass];\n }, [props.secondary, props.inverted, props.noModifiers]);\n const onOpenModal = () => {\n setShowOverlay(true);\n props.onOpenModal && props.onOpenModal();\n analytics.notifyMe(props.product.masterId, props.from);\n };\n const onCloseModal = (triggerCloseOnly) => {\n setShowOverlay(false);\n typeof triggerCloseOnly != 'boolean' && props.onCloseModal && props.onCloseModal();\n };\n return (React.createElement(React.Fragment, null,\n React.createElement(Button, { type: \"button\", cls: (_a = props.customClasses) !== null && _a !== void 0 ? _a : btnModifiers, onClick: () => {\n onOpenModal();\n }, ariaHaspopup: \"dialog\", tabIndex: props.tabIndex },\n React.createElement(\"span\", { className: \"btn-label\" },\n props.icon && React.createElement(\"i\", { className: `icon--${props.icon}` }),\n t('label.notifyme'))),\n !props.inQuickShop && (React.createElement(ProductNotifyMeModal, { isOpen: showOverlay, title: t('label.notifyme'), product: props.product, color: props.color, size: props.size, onRequestClose: onCloseModal, from: props.from, fromReserve: props.fromReserve }))));\n};\nexport default ProductActionNotifyMe;\n","import classNames from 'classnames';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport PinchZoom, { make3dTransformValue } from 'react-quick-pinch-zoom';\nimport ProductVideo from './ProductVideo';\nlet zoomTimerId;\nconst ProductGalleryImage = (props) => {\n const { t } = useTranslation();\n const zoomRef = useRef();\n const imgRef = useRef();\n const [isDragging, setIsDragging] = useState(false);\n const [zoomPos, setZoomPos] = useState({\n x: 0,\n y: 0,\n scale: 1,\n });\n const onUpdate = useCallback(({ x, y, scale }) => {\n const { current: img } = imgRef;\n if (img) {\n clearTimeout(zoomTimerId);\n zoomTimerId = setTimeout(() => {\n setZoomPos({ x, y, scale });\n }, 100);\n const value = make3dTransformValue({ x, y, scale });\n img.style.setProperty('transform', value);\n }\n }, []);\n const zoomOut = () => {\n zoomRef === null || zoomRef === void 0 ? void 0 : zoomRef.current.scaleTo({\n x: window.innerWidth / 2,\n y: window.innerHeight / 2,\n scale: zoomPos.scale - 0.5,\n });\n };\n const zoomIn = () => {\n zoomRef === null || zoomRef === void 0 ? void 0 : zoomRef.current.scaleTo({\n x: window.innerWidth / 2,\n y: window.innerHeight / 2,\n scale: zoomPos.scale + 0.5,\n });\n };\n useEffect(() => {\n if (props.activateIndex) {\n zoomPos.scale = 1;\n document.querySelectorAll('.zoom-img-wrapper').forEach((e) => {\n let img = e;\n img.style.removeProperty('transform');\n });\n }\n }, [props.activateIndex]);\n const hasVideo = () => {\n return ['_V1', '_V2', '_V3', '_V4', '_V5', '_V6', '_V7', '_V8', '_V9', '_V10'].some((e) => props.media[props.index].includes(e));\n };\n return (React.createElement(\"div\", { className: classNames('gallery-wrapper', { scaling: zoomPos.scale > 1 }) }, hasVideo() ? (React.createElement(\"div\", { className: \"gallery-wrapper__video\" },\n React.createElement(ProductVideo, { url: props.media[props.index], inZoomModal: true }),\n React.createElement(\"button\", { className: \"product-video-pause\", \"aria-label\": t('button.pause'), \"data-pause\": true, \"aria-pressed\": \"false\" }))) : (React.createElement(React.Fragment, null,\n React.createElement(\"div\", { className: \"modal__zoom-controls\" },\n React.createElement(\"button\", { \"aria-label\": t('button.zoomout'), disabled: zoomPos.scale <= 1, className: \"modal__zoom-out\", onClick: zoomOut }),\n React.createElement(\"span\", { className: \"modal__zoom-scale\" },\n Math.round(zoomPos.scale * 100),\n \"%\"),\n React.createElement(\"button\", { \"aria-label\": t('button.zoomin'), disabled: zoomPos.scale >= 2, className: \"modal__zoom-in\", onClick: zoomIn })),\n React.createElement(PinchZoom, { ref: zoomRef, onUpdate: onUpdate, maxZoom: 2, minZoom: 1, onDragStart: () => setIsDragging(true), onDragEnd: () => setIsDragging(false) },\n React.createElement(\"div\", { className: \"zoom-img-wrapper\", ref: imgRef },\n React.createElement(\"img\", { className: classNames('zoom-image-wrapper', { dragging: isDragging }), src: props.src || props.media[props.index], alt: \"\", loading: \"lazy\" })))))));\n};\nexport default ProductGalleryImage;\n","import ModalDialog from '@ui/modal/ModalDialog';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport SwiperCore, { EffectFade, Keyboard, Navigation, Thumbs, FreeMode, Pagination } from 'swiper';\nimport { Swiper as SwiperInstance, SwiperSlide } from 'swiper/react';\nimport imageutils, { XS, SM, LG, MD } from '@utils/imageutils';\nimport { appPostStructuredMessage } from '@common/utils/appUtils';\nimport ProductGalleryImage from './ProductGalleryImage';\nimport useBreakpoint from '@common/utils/useBreakpoint';\nimport ProductVideo from './ProductVideo';\nimport classNames from 'classnames';\nSwiperCore.use([Keyboard, Navigation, EffectFade, Thumbs, FreeMode, Pagination]);\nconst ProductGallery = (props) => {\n const { t } = useTranslation();\n const [swiperInstance, setSwiperInstance] = useState();\n const [thumbsSwiper, setThumbsSwiper] = useState(null);\n const [activeIndex, setActiveIndex] = useState(0);\n const [productUrl, setProductUrl] = useState();\n const [isBeginning, setIsBeginning] = useState(true);\n const [isEnd, setIsEnd] = useState(false);\n const currentBreakpoint = useBreakpoint();\n const handleClose = () => {\n setThumbsSwiper(null);\n props.onRequestClose();\n };\n const gapMap = {\n 0: 4.7,\n 375: 4.7,\n 600: 4,\n 1024: 8,\n 1200: 16,\n 1440: 16,\n };\n const sizeThumbsMap = {\n 0: XS,\n 375: XS,\n 600: SM,\n 1024: XS,\n 1200: XS,\n 1440: XS,\n };\n const sizeMainMap = {\n 0: MD,\n 375: MD,\n 600: MD,\n 1024: LG,\n 1200: LG,\n 1440: LG,\n };\n //dev level to debug with video on sandbox\n // const media: string[] = [\n // 'https://moncler-cdn.thron.com/delivery/public/video/moncler/H209Z1A00001M2904999_V2/dpx6uv/WEBFULLHD/H209Z1A00001M2904999_V2.mp4',\n // 'https://moncler-cdn.thron.com/delivery/public/video/moncler/H209Z1A00001M2904999_V1/dpx6uv/WEBFULLHD/H209Z1A00001M2904999_V1.mp4',\n // 'https://moncler-cdn.thron.com/delivery/public/image/moncler/H209Z1A00001M2904999_X/dpx6uv/std/0x0/H209Z1A00001M2904999_X.jpg',\n // 'https://staging2.cdn.moncler.ows.farm/on/demandware.static/-/Library-Sites-library-global/default/dw400a89ed/mbm/3-vion-special70-v2.jpg',\n // 'https://staging2.cdn.moncler.ows.farm/on/demandware.static/-/Library-Sites-library-global/default/dw7335a406/mbm/3-vion-iconic-v2.jpg',\n // 'https://staging2.cdn.moncler.ows.farm/on/demandware.static/-/Library-Sites-library-global/default/dw7335a406/mbm/3-vion-iconic-v2.jpg',\n // 'https://staging2.cdn.moncler.ows.farm/on/demandware.static/-/Library-Sites-library-global/default/dw7335a406/mbm/3-vion-iconic-v2.jpg',\n // 'https://staging2.cdn.moncler.ows.farm/on/demandware.static/-/Library-Sites-library-global/default/dw7335a406/mbm/3-vion-iconic-v2.jpg',\n // ];\n const media = props.media;\n // @ts-ignore\n const direction = useMemo(() => (currentBreakpoint >= window.mqObj.md ? 'vertical' : 'horizontal'), [currentBreakpoint]);\n const slides = useMemo(() => {\n //@ts-ignore -- ignoring breakpoint mismatch\n return currentBreakpoint >= window.mqObj.md ? 5 : 5.5;\n }, [currentBreakpoint]);\n const paginationMessage = t('carousel.paginationbulletmessage');\n useEffect(() => {\n var _a, _b;\n // set productUrl in product gallery Minibag / Bag\n let variationColor = (_b = (_a = props.product) === null || _a === void 0 ? void 0 : _a.variationAttributes) === null || _b === void 0 ? void 0 : _b.find((va) => va.id === 'color');\n let selectedValue = variationColor === null || variationColor === void 0 ? void 0 : variationColor.values.find((v) => v.value === variationColor.value);\n let prodUrl = selectedValue === null || selectedValue === void 0 ? void 0 : selectedValue.productUrl;\n setProductUrl(prodUrl);\n }, [props.product]);\n const updateProgressThumb = (swiper) => {\n setIsBeginning(swiper.isBeginning);\n setIsEnd(swiper.isEnd);\n };\n const appPdPLink = () => {\n appPostStructuredMessage('pdpLink', { pid: props.product.id });\n };\n return (React.createElement(ModalDialog, { noPadding: true, hideHeader: true, className: \"product-zoom-modal focus-inverted\", isOpen: typeof props.isOpen === 'number', onRequestClose: handleClose, contentLabel: \"gallery\", overlayClassName: \"mobile-visible\", onAfterClose: () => {\n if (props.scrollHeight) {\n window.scrollTo(0, props.scrollHeight);\n }\n } },\n props.showPDPLink &&\n (window.appmode ? (React.createElement(\"button\", { type: \"button\", className: \"product-gallery__link\", onClick: appPdPLink },\n React.createElement(\"p\", null, t('carousel.gotoproductpage')))) : (React.createElement(\"a\", { href: props.product.productUrl || productUrl, className: \"product-gallery__link\" },\n React.createElement(\"p\", null, t('carousel.gotoproductpage'))))),\n React.createElement(SwiperInstance, { onSwiper: (swipr) => {\n setSwiperInstance(swipr);\n }, onSlideChange: (swiper) => {\n setActiveIndex(swiper.activeIndex);\n }, keyboard: true, direction: direction, navigation: {\n nextEl: '.carousel-gallery__arrow--arrow-right',\n prevEl: '.carousel-gallery__arrow--arrow-left',\n }, mousewheel: {\n forceToAxis: true,\n thresholdDelta: 20,\n }, allowTouchMove: false, className: \"product-zoom swiper-container swiper-container--gallery\", effect: \"fade\", initialSlide: typeof props.isOpen === 'number' ? props.isOpen : 0, speed: 1000, thumbs: { swiper: thumbsSwiper }, loop: true, loopPreventsSlide: false, slidesPerView: 1 }, media === null || media === void 0 ? void 0 : media.map((url, index) => {\n var _a, _b, _c;\n return (React.createElement(SwiperSlide, { key: `${(_a = props.product) === null || _a === void 0 ? void 0 : _a.id}${index}` },\n React.createElement(ProductGalleryImage, { index: index, media: media, activateIndex: activeIndex, src: imageutils.transform(url, sizeMainMap[currentBreakpoint], (_c = (_b = props.product) === null || _b === void 0 ? void 0 : _b.imgs) === null || _c === void 0 ? void 0 : _c.alt, null, 'avif'), isZoom: true }),\n React.createElement(\"div\", { className: \"swiper-lazy-preloader\" })));\n })),\n React.createElement(\"div\", { className: \"product-zoom-thumbs--wrapper\" },\n currentBreakpoint >= window.mqObj.md && (React.createElement(\"button\", { className: \"product-zoom-thumbs__navbutton product-zoom-thumbs__navbutton-prev\", onClick: () => thumbsSwiper === null || thumbsSwiper === void 0 ? void 0 : thumbsSwiper.slidePrev(), disabled: isBeginning, \"aria-label\": t('carousel.prevslidemessage') })),\n React.createElement(SwiperInstance, { onSwiper: (swiper) => {\n setThumbsSwiper(swiper);\n updateProgressThumb(swiper);\n }, onTransitionStart: updateProgressThumb, onTransitionEnd: updateProgressThumb, watchOverflow: true, spaceBetween: gapMap[currentBreakpoint] || 4, direction: direction, slidesPerView: slides, watchSlidesProgress: true, modules: [Thumbs, FreeMode, Navigation], className: classNames('product-zoom-thumbs swiper-container', { start: isBeginning }, { end: isEnd }), freeMode: { enabled: true, sticky: true }, slideToClickedSlide: true, centerInsufficientSlides: true, grabCursor: true, \n // loop\n // loopPreventsSlide={false}\n threshold: 20 }, media === null || media === void 0 ? void 0 : media.map((url, index) => {\n var _a;\n return (React.createElement(SwiperSlide, { key: `${(_a = props.product) === null || _a === void 0 ? void 0 : _a.id}${index}` },\n React.createElement(\"button\", { onClick: () => swiperInstance.slideTo(index + 1), className: \"product-zoom-thumbs__thumb-button\", \"data-index\": activeIndex, \"aria-label\": paginationMessage.replace('INDEX_NUMBER', `${index + 1}`) },\n url.includes('_V1') ||\n url.includes('_V2') ||\n url.includes('_V3') ||\n url.includes('_V4') ||\n url.includes('_V5') ||\n url.includes('_V6') ||\n url.includes('_V7') ||\n url.includes('_V8') ||\n url.includes('_V9') ||\n url.includes('_V10') ? (React.createElement(ProductVideo, { url: url, isThumb: true })) : (React.createElement(\"img\", { key: url, src: imageutils.transform(url, sizeThumbsMap[currentBreakpoint], ''), alt: \"\", loading: \"lazy\" })),\n React.createElement(\"div\", { className: \"swiper-lazy-preloader\" }))));\n })),\n currentBreakpoint >= window.mqObj.md && (React.createElement(\"button\", { className: \"product-zoom-thumbs__navbutton product-zoom-thumbs__navbutton-next\", onClick: () => thumbsSwiper === null || thumbsSwiper === void 0 ? void 0 : thumbsSwiper.slideNext(), disabled: isEnd, \"aria-label\": t('carousel.nextslidemessage') })))));\n};\nexport default ProductGallery;\n","import { useEffect } from 'react';\nimport { useAnimatedRouteContext } from './AnimatedRoute';\nconst useAnimatedImage = (productId, el, productUuid) => {\n const { registerAnimatedImage, unregisterAnimatedImage } = useAnimatedRouteContext();\n useEffect(() => {\n if ((productId || productUuid) && el.current) {\n registerAnimatedImage({\n el,\n productId,\n productUuid,\n });\n }\n return () => {\n if (productId || productUuid) {\n unregisterAnimatedImage(productId, productUuid);\n }\n };\n }, [productId, productUuid]);\n};\nexport default useAnimatedImage;\n","import useAnimatedImage from '@moncler/components/routerTransitions/useAnimatedImage';\nimport imageutils, { LG, MD, SM, XS, XXS } from '@utils/imageutils';\nimport classNames from 'classnames';\nimport React, { useMemo, useRef } from 'react';\nimport useBreakpoint from '@utils/useBreakpoint';\nconst defaultSizes = [XXS, XS, SM, MD];\nconst ProductImage = (props) => {\n var _a;\n const el = useRef();\n const image = useMemo(() => {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n if (props.index != undefined) {\n let url = (_b = (_a = props.img) === null || _a === void 0 ? void 0 : _a.urls) === null || _b === void 0 ? void 0 : _b[props.index];\n if (props.genderImageSorted) {\n url = (_d = (_c = props.img) === null || _c === void 0 ? void 0 : _c[props.genderImageSorted]) === null || _d === void 0 ? void 0 : _d[props.index];\n }\n return url;\n }\n if (props.type) {\n let imageoldsuffix = '_' + props.type + '.';\n let imagenewsuffix = '_' + props.type + '1.';\n let img = (_f = (_e = props.img) === null || _e === void 0 ? void 0 : _e.urls) === null || _f === void 0 ? void 0 : _f.find((u) => u && (u.includes(imageoldsuffix) || u.includes(imagenewsuffix)));\n if (!img && props.type === 'X') {\n // fallback su F per vecchie immagini\n img = (_h = (_g = props.img) === null || _g === void 0 ? void 0 : _g.urls) === null || _h === void 0 ? void 0 : _h.find((u) => u && (u.includes('_F.') || u.includes('_F1.')));\n }\n if (img) {\n return img;\n }\n }\n return (_j = props.img) === null || _j === void 0 ? void 0 : _j.urls[0];\n }, [props.img, props.index, props.type]);\n // custom hook per animated image - funziona solo se tutti è tre i parametri sono valorizzati e mi trovo dentro AnimatedRoute\n if (((props === null || props === void 0 ? void 0 : props.index) == 0 || !(props === null || props === void 0 ? void 0 : props.index)) && el && props.animatedImage) {\n // useAnimatedImage(props.productId, el);\n useAnimatedImage(props.productId, el, props.productUuid);\n }\n const lowResImg = useMemo(() => { var _a; return imageutils.transform(image, XXS, (_a = props.img) === null || _a === void 0 ? void 0 : _a.alt); }, [image]);\n const currentBreakpoint = useBreakpoint();\n const hiResImage = useMemo(() => {\n var _a, _b;\n if (currentBreakpoint >= window.mqObj.md) {\n return imageutils.transform(image, LG, (_a = props.img) === null || _a === void 0 ? void 0 : _a.alt, null, 'avif');\n }\n else {\n return imageutils.transform(image, MD, (_b = props.img) === null || _b === void 0 ? void 0 : _b.alt, null, 'avif');\n }\n }, [currentBreakpoint, image]);\n const multipleSrc = useMemo(() => {\n let srcs = [];\n (props.sizes || defaultSizes).forEach((sz, i) => {\n var _a;\n srcs.push(`${imageutils.transform(image, sz, (_a = props.img) === null || _a === void 0 ? void 0 : _a.alt, props.imgQuality)} ${sz.width}w`);\n });\n return srcs.join(', ');\n }, [image]);\n const multipleSrcAvif = useMemo(() => {\n let srcs = [];\n (props.sizes || defaultSizes).forEach((sz, i) => {\n var _a;\n srcs.push(`${imageutils.transform(image, sz, (_a = props.img) === null || _a === void 0 ? void 0 : _a.alt, props.imgQuality, 'avif')} ${sz.width}w`);\n });\n return srcs.join(', ');\n }, [image]);\n const lazyPosterImg = useMemo(() => {\n return props.lazyLowRes ? lowResImg : 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==';\n }, [image]);\n const altText = useMemo(() => {\n var _a, _b;\n const index = (_a = props.seoIndex) !== null && _a !== void 0 ? _a : props.index;\n return `${props.alt || ((_b = props.img) === null || _b === void 0 ? void 0 : _b.alt)}${index >= 0 ? ` ${index + 1}` : ''}`;\n }, [image]);\n const imageElement = (React.createElement(\"picture\", { className: classNames({ lazyload: !props.lazyDisabled }, props.className) },\n React.createElement(\"source\", Object.assign({}, (!props.lazyDisabled && { ['data-srcset']: multipleSrcAvif }), { srcSet: props.lazyDisabled ? multipleSrcAvif : lazyPosterImg, type: 'image/avif' })),\n React.createElement(\"source\", Object.assign({}, (!props.lazyDisabled && { ['data-srcset']: multipleSrc }), { srcSet: props.lazyDisabled ? multipleSrc : lazyPosterImg, type: 'image/webp' })),\n React.createElement(\"img\", { ref: props.ref || el, alt: altText, src: props.lazyDisabled ? hiResImage : lowResImg, \"data-sizes\": \"auto\", \"data-idx\": props.index || 0, className: classNames({ lazyload: !props.lazyDisabled }, props.className), \"data-quality-img\": hiResImage, \n //width={\"100%\"}\n height: XXS.height, style: props.style, \"aria-hidden\": (props === null || props === void 0 ? void 0 : props.ariaHidden) != undefined ? props === null || props === void 0 ? void 0 : props.ariaHidden : !!props.alt || !!((_a = props.img) === null || _a === void 0 ? void 0 : _a.alt) })));\n if (props.onlyImage) {\n return imageElement;\n }\n if (!props.img) {\n return (React.createElement(\"div\", { className: \"product-image\", \"data-tiletype\": props.tiletype, \"data-type\": props.type },\n React.createElement(\"img\", { alt: \"\", src: \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkZmD+DwABGwEHEIRMfwAAAABJRU5ErkJggg==\", \"data-idx\": props.index || 0, className: props.className, width: XXS.width, height: XXS.height, style: props.style })));\n }\n return (React.createElement(\"div\", { className: \"product-image\", \"data-tiletype\": props.tiletype, \"data-type\": props.type }, imageElement));\n};\nexport default ProductImage;\n","import React from 'react';\nconst ProductImageButton = (props) => {\n return (React.createElement(\"button\", { className: \"product-image-button\", \"aria-haspopup\": \"dialog\", onClick: (e) => {\n //Prevent opening the zoom image when play/pause video\n if (!e.target.classList.contains('product-video-pause')) {\n //Prevent opening the zoom image when tapping on hotspots\n if (!e.target.closest('.spott-marker-box'))\n props.onImageClick();\n }\n }, \"aria-label\": props.ariaLabel }, props.children));\n};\nexport default ProductImageButton;\n","import classNames from 'classnames';\nimport React from 'react';\nconst MembersOnlyBadge = (props) => {\n return (React.createElement(\"div\", { className: classNames('members-only-badge', props === null || props === void 0 ? void 0 : props.className) },\n !props.hideIcon && React.createElement(\"i\", { className: props.lightIcon ? 'icon--lock-white' : 'icon--lock', \"aria-label\": \"members only\" }),\n React.createElement(\"span\", { className: \"label\" }, props.title)));\n};\nexport default MembersOnlyBadge;\n","import MembersOnlyBadge from '@components/common/MembersOnlyBadge';\nimport React, { useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport classNames from 'classnames';\nconst ProductLabels = (props) => {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n const { product, type } = props;\n let { t } = useTranslation();\n const showBoutiqueExclusive = product === null || product === void 0 ? void 0 : product.isBoutiqueExclusive;\n const showOnlineExclusive = product === null || product === void 0 ? void 0 : product.isOnlineExclusive;\n const showComingSoon = !(product === null || product === void 0 ? void 0 : product.isBoutiqueExclusive) && (product === null || product === void 0 ? void 0 : product.isComingSoon) === 2 && !(product === null || product === void 0 ? void 0 : product.forceSoldOut);\n const showPreorder = ((_a = product === null || product === void 0 ? void 0 : product.availability) === null || _a === void 0 ? void 0 : _a.preorder) || ((_b = product === null || product === void 0 ? void 0 : product.availability) === null || _b === void 0 ? void 0 : _b.selectedVariantPreorderable);\n const renderLabel = (label) => {\n if (label) {\n return React.createElement(\"span\", { className: \"product-label\" }, label);\n }\n else {\n return false;\n }\n };\n const availabilityLabel = useMemo(() => {\n var _a, _b;\n const isOutOfStock = (_a = product === null || product === void 0 ? void 0 : product.availability) === null || _a === void 0 ? void 0 : _a.isOutOfStock;\n const isLimited = (_b = product === null || product === void 0 ? void 0 : product.limitedAvailabilityConfig) === null || _b === void 0 ? void 0 : _b.showLimitedAvailabilityLabel;\n const label = isOutOfStock ? t('label.outofstock') : isLimited ? t('label.limitedavailability') : false;\n return renderLabel(label);\n }, [product]);\n const comingSoonLabel = useMemo(() => {\n const label = showComingSoon && t('label.comingsoon');\n return !showBoutiqueExclusive ? renderLabel(label) : null;\n }, [product]);\n const boutiqueExclusiveLabel = useMemo(() => {\n const label = showBoutiqueExclusive && t('label.botiqueexclusive');\n return renderLabel(label);\n }, [product]);\n const manualLabel = useMemo(() => {\n return renderLabel(product === null || product === void 0 ? void 0 : product.overlayLabel);\n }, [product]);\n const onlineExclusiveLabel = useMemo(() => {\n const label = showOnlineExclusive && t('label.onlineexclusive');\n return renderLabel(label);\n }, [product]);\n const availabilityLabelAggregator = useMemo(() => {\n return !showBoutiqueExclusive ? availabilityLabel : null;\n }, [product]);\n const businessLabelAggregator = useMemo(() => {\n return manualLabel || onlineExclusiveLabel || boutiqueExclusiveLabel;\n }, [product]);\n const simplifiedPLPLabel = useMemo(() => {\n if (product === null || product === void 0 ? void 0 : product.unlock) {\n const label = t('tile.membersonly');\n return renderLabel(label);\n }\n else {\n return comingSoonLabel || availabilityLabelAggregator || businessLabelAggregator;\n }\n }, [product]);\n return (React.createElement(\"div\", { className: classNames('product-labels', { hovering: props.isMouseOver }) }, type === 'tile' ? (React.createElement(React.Fragment, null, (product === null || product === void 0 ? void 0 : product.overlayLabel) ? (manualLabel) : (React.createElement(React.Fragment, null,\n (product === null || product === void 0 ? void 0 : product.isOnlineExclusive) && React.createElement(\"span\", { className: \"product-label\" }, t('label.onlineexclusive')),\n (product === null || product === void 0 ? void 0 : product.isLimitedEdition) && React.createElement(\"span\", { className: \"product-label\" }, t('label.limitededition')),\n boutiqueExclusiveLabel,\n (product === null || product === void 0 ? void 0 : product.VTOcode) && type == 'tile' && React.createElement(\"span\", { className: \"product-label--inverted vto-icon\" }, t('label.vto')))))) : type === 'tile-simplified' ? (simplifiedPLPLabel) : (React.createElement(React.Fragment, null,\n ((_c = product.collections) === null || _c === void 0 ? void 0 : _c.grenoble) && (React.createElement(\"a\", { href: (_d = product.collections) === null || _d === void 0 ? void 0 : _d.grenoble, className: \"product-label grenoble\" }, t('pdp.grenoble.title'))),\n ((_e = product.collections) === null || _e === void 0 ? void 0 : _e.genius) && (React.createElement(\"a\", { href: (_f = product.collections) === null || _f === void 0 ? void 0 : _f.genius, className: \"product-label genius\" }, t('pdp.genius.title'))),\n (product === null || product === void 0 ? void 0 : product.scarcityProduct) && renderLabel(t('label.scarcityproduct')),\n ((_g = product === null || product === void 0 ? void 0 : product.earlyaccess) === null || _g === void 0 ? void 0 : _g.private) && renderLabel(t('label.earlyaccess')),\n (product === null || product === void 0 ? void 0 : product.unlock) && React.createElement(MembersOnlyBadge, { title: t('tile.membersonly'), className: \"product-label\", lightIcon: props.inLook }),\n (product === null || product === void 0 ? void 0 : product.isMonclerCurators) && React.createElement(\"span\", { className: \"product-label label-moncler-curator\" }, t('label.monclercurators')),\n (product === null || product === void 0 ? void 0 : product.scarcityProduct) && renderLabel(t('label.scarcityproduct')),\n (product === null || product === void 0 ? void 0 : product.isLimitedEdition) && renderLabel(t('label.limitededition')),\n (product === null || product === void 0 ? void 0 : product.VTOcode) && type == 'tile' && React.createElement(\"span\", { className: \"product-label--inverted vto-icon\" }, t('label.vto')),\n !(product === null || product === void 0 ? void 0 : product.scarcityProduct) &&\n ((_h = product === null || product === void 0 ? void 0 : product.comunicationTag) === null || _h === void 0 ? void 0 : _h.split('|').map((label, i) => (React.createElement(\"span\", { key: i, className: \"product-label\" }, label.trim())))), (_j = product === null || product === void 0 ? void 0 : product.productTag) === null || _j === void 0 ? void 0 :\n _j.split('|').map((label, i) => (React.createElement(\"span\", { key: i, className: \"product-label\" }, label.trim()))),\n comingSoonLabel,\n !showComingSoon && !showPreorder && !showBoutiqueExclusive && availabilityLabel,\n onlineExclusiveLabel,\n boutiqueExclusiveLabel))));\n};\nexport default ProductLabels;\n","import { useEffect, useState } from 'react';\nconst getInitialInnerHeight = () => {\n var _a;\n const documentHeight = ((_a = window.visualViewport) === null || _a === void 0 ? void 0 : _a.height) || window.innerHeight;\n if (documentHeight == 0) {\n return;\n }\n return documentHeight;\n};\nconst useInnerHeight = () => {\n const [currentInnerHeight, setCurrentInnerHeight] = useState(getInitialInnerHeight());\n const getCurrentInnerHeight = () => {\n var _a;\n const documentHeight = ((_a = window.visualViewport) === null || _a === void 0 ? void 0 : _a.height) || window.innerHeight;\n if (documentHeight == 0) {\n return;\n }\n return documentHeight;\n };\n const handleResize = () => {\n const currentIw = getCurrentInnerHeight();\n if (currentIw && currentIw !== currentInnerHeight) {\n setCurrentInnerHeight(currentIw);\n }\n };\n useEffect(() => {\n window.addEventListener('resize', handleResize);\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n });\n return currentInnerHeight;\n};\nexport default useInnerHeight;\n","import ErrorBox from '@components/common/ErrorBox';\nimport NotifyForm from '@moncler/components/notify/NotifyForm';\nimport ModalDialog from '@ui/modal/ModalDialog';\nimport analytics from '@utils/analytics';\nimport api from '@utils/api';\nimport formutils from '@utils/formutils';\nimport React, { useCallback, useEffect, useRef, useState, useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport useBreakpoint from '@utils/useBreakpoint';\nimport ProductImage from './ProductImage';\nimport useInnerHeight from '@common/utils/useInnerHeight';\nimport SimilarProductCarousel from './SimilarProductCarousel';\nimport ContactDetailsCore from '../clientService/ContactDetailsCore';\nimport classNames from 'classnames';\nconst ProductNotifyMeModal = (props) => {\n var _a, _b, _c;\n const currentBreakpoint = useBreakpoint();\n const currentHeight = useInnerHeight();\n const { t } = useTranslation();\n const [formdef, setFormdef] = useState();\n const [initialValues, setInitialValues] = useState();\n const [requestSent, setRequestSent] = useState();\n const [fullproductid, setFullproductid] = useState();\n const [classHeight, setClassHeight] = useState();\n const [currentSize, setCurrentSize] = useState();\n const [errors, setErrors] = useState([]);\n const { product, color, size } = props;\n const isFullyOutOfStock = useMemo(() => {\n var _a, _b;\n const sizeAttributes = (_b = (_a = props.product) === null || _a === void 0 ? void 0 : _a.variationAttributes) === null || _b === void 0 ? void 0 : _b.find((attr) => attr.attributeId === 'size');\n return sizeAttributes === null || sizeAttributes === void 0 ? void 0 : sizeAttributes.values.every((value) => value.ATS <= 0);\n }, [props.product]);\n useEffect(() => {\n setCurrentSize(size);\n }, [size]);\n useEffect(() => {\n var _a, _b;\n if (color && currentSize) {\n setFullproductid(`${(_a = props.product) === null || _a === void 0 ? void 0 : _a.masterId}${(_b = props.color) === null || _b === void 0 ? void 0 : _b.id}${currentSize === null || currentSize === void 0 ? void 0 : currentSize.id}`);\n }\n }, [product, color, currentSize]);\n // non renderizzare la modale all'apertura della pagina, non fare chiamate se non aperta\n const firstRender = useRef(true);\n useEffect(() => {\n if (props.isOpen && firstRender.current) {\n firstRender.current = false;\n let val = {};\n api.getForm('notifyme-product', val, true).then((data) => {\n prefillValues(val);\n setInitialValues(val);\n setFormdef(data);\n });\n }\n if (!props.isOpen && requestSent && !firstRender.current) {\n setRequestSent(null);\n }\n }, [props.isOpen]);\n useEffect(() => {\n if (currentHeight < 730 && currentBreakpoint >= window.mqObj.md) {\n setClassHeight(true);\n }\n else {\n setClassHeight(false);\n }\n }, [currentHeight, currentBreakpoint]);\n const prefillValues = (values) => {\n values.productid = fullproductid;\n values.from = window.location.href; // debug invalid forms\n };\n const validate = async (values) => {\n prefillValues(values);\n return await formutils.validateForm(values, formdef, 'notifyme-product');\n };\n const onSubmit = async (values) => {\n prefillValues(values);\n setErrors([]);\n let err = await validate(values);\n if (err && Object.keys(err).length > 0) {\n return err;\n }\n return api.notifymeSubmit(values, formdef).then((data) => {\n var _a, _b;\n let errors = {};\n if (!formutils.checkValidationAfterSubmit(data, errors)) {\n return errors;\n }\n if (((_a = window.location.pathname) === null || _a === void 0 ? void 0 : _a.includes('wishlist')) || ((_b = window.location.search) === null || _b === void 0 ? void 0 : _b.includes('wishlist')) || props.inWishlist) {\n analytics.wishlistInteractionNotifySubmit(props.product.masterId);\n }\n else {\n analytics.notifyMeSubmit(currentSize.id, props.product.id, props.from);\n }\n setRequestSent(values);\n });\n };\n const thankYou = useCallback(() => {\n return (React.createElement(\"div\", { className: \"product-notify__confirm\", role: \"alert\" },\n React.createElement(\"p\", null, t('notifyme.thankyou')),\n React.createElement(\"p\", null, t('notifyme.confirmation')),\n React.createElement(SimilarProductCarousel, { onRequestClose: props.onRequestClose, product: product, labelVisible: true, swiperConf: {\n slidesPerView: 'auto',\n breakpoints: {\n 1024: {\n slidesPerView: 'auto',\n },\n },\n } })));\n }, [requestSent]);\n const notifyForm = () => (React.createElement(React.Fragment, null,\n React.createElement(NotifyForm, { product: props.product, color: props.color, formdef: formdef, onSubmit: onSubmit, initialValues: initialValues, currentSize: currentSize, showSizeSelector: !props.product.isParfum && (!props.size || isFullyOutOfStock), setCurrentSize: setCurrentSize, validate: validate, buttonText: t('button.submit') }),\n React.createElement(\"div\", { className: \"notifyme-modal-contactus\" },\n React.createElement(\"p\", null, t('clientservice.contactsdetails.intro')),\n React.createElement(ContactDetailsCore, { hidePrefix: true, hideCountrySelector: true, type: \"LIST\" }))));\n const content = useCallback(() => {\n if (requestSent) {\n return thankYou();\n }\n else {\n return notifyForm();\n }\n }, [requestSent, formdef, currentSize, props.color, fullproductid]);\n return (React.createElement(ModalDialog, { hideHeader: true, noPadding: true, isOpen: props.isOpen, onRequestClose: props.onRequestClose, contentLabel: props.title, className: classHeight && 'notifyme-modal-class', id: \"notifyme\", style: { content: { height: props.fromReserve ? document.querySelector('#reserveinboutique').offsetHeight : undefined } } },\n React.createElement(\"div\", { className: \"product-notify\" },\n React.createElement(\"div\", { className: classNames('product-notify__main', { 'white-bg': window.enableColorBackgroundStillLife }) },\n React.createElement(ProductImage, { img: (_a = props.product) === null || _a === void 0 ? void 0 : _a.imgs, type: \"F\" })),\n React.createElement(\"div\", { className: requestSent ? 'product-notify__thankyou' : 'product-notify__detail' },\n React.createElement(\"div\", { className: \"modal__header-sticky\" },\n React.createElement(\"h2\", { className: \"dialog__title\" },\n props.fromReserve && React.createElement(\"button\", { className: \"icon--arrow-left-black\", \"aria-label\": t('button.back'), onClick: () => props.onRequestClose(true) }),\n props.title),\n !requestSent && (React.createElement(React.Fragment, null,\n React.createElement(\"p\", { className: \"modal__intro\" }, (props.product.isComingSoon == 2 && !props.product.forceSoldOut)\n ? t('notifyme.comingsoon')\n : props.from === 'look'\n ? t('notifyme.look')\n : t('notifyme.outofstockmessage', { productName: props.product.productName, color: (_b = props.color) === null || _b === void 0 ? void 0 : _b.displayValue, size: (_c = props.size) === null || _c === void 0 ? void 0 : _c.displayValue })),\n React.createElement(\"div\", { className: \"modal__separator\" })))),\n content()),\n React.createElement(ErrorBox, { errors: errors }))));\n};\nexport default ProductNotifyMeModal;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nconst ProductPrice = (props) => {\n var _a, _b, _c, _d, _e;\n const { t } = useTranslation();\n if (!props.price && !props.basePrice) {\n return React.createElement(React.Fragment, null);\n }\n if (props.basePrice) {\n return window.language == 'ja' ? (React.createElement(React.Fragment, null,\n props.basePrice,\n \" \",\n t('label.from'))) : (React.createElement(React.Fragment, null,\n t('label.from'),\n \" \",\n props.basePrice));\n }\n if (props.price.type === 'range') {\n if (window.language == 'ja') {\n // https://jira.industries-group.com/browse/ONE-35223\n return (React.createElement(React.Fragment, null, (_b = (_a = props.price.min) === null || _a === void 0 ? void 0 : _a.sales) === null || _b === void 0 ? void 0 :\n _b.formatted,\n \" \",\n t('label.from')));\n }\n return (React.createElement(React.Fragment, null,\n t('label.from'),\n \" \", (_d = (_c = props.price.min) === null || _c === void 0 ? void 0 : _c.sales) === null || _d === void 0 ? void 0 :\n _d.formatted));\n }\n return (React.createElement(React.Fragment, null, (_e = props.price.sales) === null || _e === void 0 ? void 0 : _e.formatted));\n};\nexport default ProductPrice;\n","import classNames from 'classnames';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nconst SelectorColor = (props) => {\n const { t } = useTranslation();\n return (React.createElement(\"label\", { className: classNames('selector__menu__item', !props.isNotAvailableSelectable && !(props === null || props === void 0 ? void 0 : props.isBoutiqueExclusive) && props.disabled && 'is-disabled', props.selected && 'selected', props.isInverted && 'inverted') },\n React.createElement(\"input\", { type: \"radio\", onChange: () => {\n props.onSelect(props.item);\n }, \"aria-label\": props.label, name: `color-selector-` + props.productUuid, value: props.value, defaultChecked: props.selected }),\n React.createElement(\"span\", { \"aria-hidden\": \"true\", className: classNames('selector__menu__item__label') },\n props.label,\n props.enableOutofstockLabel && props.isOutOfStock ? ` - ${t('label.outofstock')}` : ''),\n props.children));\n};\nexport default SelectorColor;\n","import SelectorColor from '@common/ui/selector/SelectorColor';\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport ColorSwatch from './ColorSwatch';\nconst ProductSelectionColorExpanded = (props) => {\n var _a;\n const { t } = useTranslation();\n return (React.createElement(\"div\", { className: classNames('selector-color-expanded', { inverted: props.inverted }, props.className), \"aria-label\": t('product.selectcolor') },\n React.createElement(\"span\", { className: \"selector__label\" },\n React.createElement(\"span\", { className: \"selector__label__name\" },\n t('label.color'),\n \":\"),\n React.createElement(\"span\", { className: \"selector__label__value\" }, (_a = props.variationValues.find((variationValue) => variationValue.id === props.currentId)) === null || _a === void 0 ? void 0 : _a.displayValue)),\n React.createElement(\"div\", { className: \"selector__menu\" }, props.variationValues.map((variation) => {\n if (props.hideOnlineExclusive && variation.isOnlineExclusive) {\n return;\n }\n return (React.createElement(SelectorColor, { key: variation.id, value: variation.id, label: variation.displayValue, disabled: props.alwaysAvailable || (variation === null || variation === void 0 ? void 0 : variation.isBoutiqueExclusive) ? false : !variation.selectable && !window.unshoppable && !props.boutiqueAvailability, selected: variation.value == props.currentId, isOutOfStock: variation.selectable, item: variation, onSelect: (variation) => {\n props.onChangeVariation(variation);\n }, productUuid: props.productUuid, isNotAvailableSelectable: props.isNotAvailableSelectable, isBoutiqueExclusive: props.isBoutiqueExclusive },\n React.createElement(ColorSwatch, { variation: variation, ariaHidden: true }),\n !props.boutiqueAvailability && React.createElement(\"span\", { className: \"stroke\" })));\n }))));\n};\nProductSelectionColorExpanded.defaultProps = {\n variationValues: [],\n};\nexport default ProductSelectionColorExpanded;\n","import Selector from '@ui/selector/Selector';\nimport SelectorRadio from '@ui/selector/SelectorRadio';\nimport classNames from 'classnames';\nimport React, { useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nconst ProductSelectionFormats = (props) => {\n var _a, _b, _c;\n const { t } = useTranslation();\n const currentFormat = useMemo(() => {\n var _a;\n const selectedProduct = (_a = props.productFormats) === null || _a === void 0 ? void 0 : _a.find((parfumFormat) => parfumFormat.id === props.currentId);\n if (selectedProduct) {\n return {\n selectable: selectedProduct.available,\n displayValue: selectedProduct.format,\n ATS: selectedProduct.ATS,\n };\n }\n else {\n return {};\n }\n }, [props.productFormats, props.currentId]);\n if (props === null || props === void 0 ? void 0 : props.inBag) {\n return (React.createElement(Selector, { className: 'selector-size-inline', selectedLabel: t('label.format'), selectorId: `bag-formatSelector-${props.currentId}`, currentItem: currentFormat, enableOutofstockLabel: props.enableOutofstockLabel && !window.unshoppable, enableOnlyOneLeftLabel: (currentFormat === null || currentFormat === void 0 ? void 0 : currentFormat.ATS) === 1, stockStatus: props.stockStatus }, props.productFormats.map((parfumFormat, i) => (React.createElement(SelectorRadio, { key: i, selectorId: `format-selector-${parfumFormat.groupId}`, item: parfumFormat, label: parfumFormat.format, value: parfumFormat.id, selected: props.currentId.includes(parfumFormat.groupId), disabled: !parfumFormat.available || parfumFormat.notShoppable, onSelect: props.onChangeFormat, isNotAvailableSelectable: false })))));\n }\n return (React.createElement(\"div\", { className: classNames('selector-size-expanded format-selector', props.className) },\n React.createElement(\"div\", { className: \"selector__header\" },\n React.createElement(\"span\", { className: \"selector__label\" },\n React.createElement(\"span\", { className: \"selector__label__name\" },\n t('label.format'),\n \":\"),\n props.inPDP && React.createElement(\"span\", { className: \"selector__label__value text-uppercase\" }, (_b = (_a = props.current) === null || _a === void 0 ? void 0 : _a.variationAttributes[1]) === null || _b === void 0 ? void 0 : _b.values[0].displayValue))),\n React.createElement(\"div\", { className: \"selector__menu\" },\n React.createElement(\"ul\", null, (_c = props.productFormats) === null || _c === void 0 ? void 0 : _c.map((parfumFormat, i) => {\n if (props === null || props === void 0 ? void 0 : props.inReserve) {\n return (React.createElement(SelectorRadio, { key: i, label: parfumFormat.format, value: parfumFormat.id, selectorId: `format-selector-${parfumFormat.groupId}`, selected: props.currentId.includes(parfumFormat.groupId), disabled: !props.alwaysAvailable && !parfumFormat.available, item: parfumFormat, onSelect: props === null || props === void 0 ? void 0 : props.onChangeFormat }));\n }\n return (React.createElement(\"li\", { key: i },\n React.createElement(\"a\", { href: parfumFormat.url, className: classNames('selector__menu__item', { 'is-disabled': !props.alwaysAvailable && !parfumFormat.available }, { selected: props.currentId.includes(parfumFormat.groupId) }), \"aria-label\": !props.alwaysAvailable && !parfumFormat.available ? t('selector.option.notavailable', { 0: parfumFormat.format }) : parfumFormat.format },\n React.createElement(\"span\", { className: classNames('selector__menu__item__label') }, parfumFormat.format))));\n })))));\n};\nProductSelectionFormats.defaultProps = {\n enableOutofstockLabel: true,\n};\nexport default ProductSelectionFormats;\n","import classNames from 'classnames';\nimport { AnimatePresence, motion } from 'framer-motion';\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport useBreakpoint from '@utils/useBreakpoint';\nconst SelectorPopup = (props) => {\n var _a, _b;\n const { t } = useTranslation();\n const selectorRef = useRef(null);\n const buttonRef = useRef(null);\n const menuRef = useRef(null);\n const [open, setOpen] = useState(false);\n const currentBreakpoint = useBreakpoint();\n useEffect(() => {\n const selectorButton = buttonRef.current;\n const setButtonWidth = () => {\n if (selectorButton && props.enableOnlyOneLeftLabel) {\n if (currentBreakpoint < window.mqObj.sm) {\n selectorButton.classList.add('selector__button__mobile');\n const viewportWidth = window.innerWidth;\n const dynamicWidth = `${viewportWidth * 0.35 + 15}px`; // Calcola la larghezza dinamica in base alla viewport\n selectorButton.style.width = dynamicWidth;\n }\n else {\n selectorButton.classList.remove('selector__button__mobile');\n // Resetta la larghezza\n selectorButton.style.width = '';\n }\n }\n };\n // Esegue la funzione quando la finestra viene ridimensionata\n window.addEventListener('resize', setButtonWidth);\n setButtonWidth();\n // Rimuove il listener quando il componente viene smontato\n return () => {\n window.removeEventListener('resize', setButtonWidth);\n };\n }, [currentBreakpoint]);\n useEffect(() => {\n var _a, _b;\n if (open) {\n props.trackOpen ? props.trackOpen() : null;\n (_a = menuRef.current) === null || _a === void 0 ? void 0 : _a.focus();\n }\n else {\n (_b = selectorRef.current) === null || _b === void 0 ? void 0 : _b.removeAttribute('style');\n }\n }, [open]);\n useEffect(() => {\n setOpen(props.open);\n }, [props.open, props.currentItem]);\n const enableOutofstockClass = useMemo(() => {\n var _a;\n let enabled = false;\n if (props.enableOutofstockLabel && !props.swatchable && !((_a = props.currentItem) === null || _a === void 0 ? void 0 : _a.selectable)) {\n enabled = true;\n }\n if (props.stockStatus) {\n if (props.stockStatus === 'PRODUCT__OOS' || props.stockStatus === 'SIZE__OOS') {\n enabled = true;\n }\n }\n return enabled;\n }, [props.enableOutofstockLabel, props.swatchable, props.currentItem, props.stockStatus]);\n // if there is the selector button info\n const selectorBtnInfo = (props.enableOnlyOneLeftLabel) || (props.enableOutofstockLabel && !props.swatchable && !((_a = props.currentItem) === null || _a === void 0 ? void 0 : _a.selectable));\n return (React.createElement(\"div\", { className: classNames(props.className), ref: selectorRef },\n React.createElement(\"button\", { type: \"button\", ref: buttonRef, \"aria-controls\": props.selectorId, onClick: () => {\n setOpen(!open);\n props.onClickExtraAction && props.onClickExtraAction(true);\n }, className: classNames('selector__button', { 'with-btn-info': selectorBtnInfo }) }, props.currentItem ? (React.createElement(React.Fragment, null,\n React.createElement(\"span\", { className: \"selector__button__label\" }, props.selectedLabel + ' '),\n !props.hideValue && (React.createElement(\"span\", { className: classNames('selector__button__value', enableOutofstockClass && 'selector__button__value--outofstock') }, props.itemType === 'string' ? props.currentItem : (_b = props.currentItem) === null || _b === void 0 ? void 0 : _b.displayValue)),\n React.createElement(\"span\", { className: \"visually-hidden\" }, t('exchanges.changecolor')),\n props.enableOutofstockLabel && !props.swatchable && !props.currentItem.selectable && React.createElement(\"span\", { className: \"selector__button__info\" }, t('label.outofstock')),\n props.enableOnlyOneLeftLabel && React.createElement(\"span\", { className: \"selector__button__info\" }, t('bag.onlyoneleft')))) : (React.createElement(React.Fragment, null,\n React.createElement(\"span\", null, (props === null || props === void 0 ? void 0 : props.hideUnselectedLabel) ? props.selectedLabel : props === null || props === void 0 ? void 0 : props.unselectedLabel),\n (props === null || props === void 0 ? void 0 : props.hideUnselectedLabel) && props.stockStatus === 'PRODUCT__OOS' && !props.swatchable && (React.createElement(\"span\", { className: \"selector__button__info outofstock--all\" }, t('label.outofstock'))),\n React.createElement(AnimatePresence, null, props.error && (React.createElement(motion.span, { className: \"errormessage\", transition: { ease: [0.25, 1, 0.5, 1], duration: 0.166 }, initial: { opacity: 0 }, animate: { opacity: 1 }, exit: { opacity: 0 }, role: \"alert\" }, props.error))))))));\n};\nSelectorPopup.defaultProps = {\n swatchable: false,\n enableOutofstockLabel: false,\n hideValue: false,\n itemType: 'object',\n};\nexport default SelectorPopup;\n","import Selector from '@ui/selector/Selector';\nimport SelectorPopup from '@ui/selector/SelectorPopup';\nimport SelectorRadio from '@ui/selector/SelectorRadio';\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport useBreakpoint from '@utils/useBreakpoint';\nconst ProductSelectionSizes = (props) => {\n var _a, _b, _c, _d;\n const { t } = useTranslation();\n const currentBreakpoint = useBreakpoint();\n if (!props.variationValues) {\n return React.createElement(React.Fragment, null);\n }\n if (props.mobilePopup && currentBreakpoint < window.mqObj.sm) {\n return (React.createElement(React.Fragment, null,\n React.createElement(SelectorPopup, { className: classNames(props.isInline ? 'selector-size-inline' : 'selector-size', props.className), unselectedLabel: t('label.selectasize'), selectedLabel: t('selector.size'), selectLabel: t('label.size'), selectorId: `pdp-sizeSelector-${props.productId}`, currentItem: (_a = props.variationValues) === null || _a === void 0 ? void 0 : _a.find((variationValue) => variationValue.id === props.currentId), enableOutofstockLabel: props.enableOutofstockLabel && !window.unshoppable && !props.isBoutiqueExclusive, enableOnlyOneLeftLabel: props.enableOnlyOneLeftLabel && ((_b = props.variationValues.find((vv) => vv.value === props.currentId)) === null || _b === void 0 ? void 0 : _b.ATS) === 1, open: props.open, error: props.error, trackOpen: props === null || props === void 0 ? void 0 : props.trackOpenSize, disableHover: props.disableHover || false, onClickExtraAction: props.onClickExtraAction, stockStatus: props.stockStatus, hideUnselectedLabel: props.hideUnselectedLabel })));\n }\n return (React.createElement(Selector, { className: classNames(props.isInline ? 'selector-size-inline' : 'selector-size', props.className), unselectedLabel: t('label.selectasize'), selectedLabel: t('selector.size'), selectLabel: t('label.size'), selectorId: `pdp-sizeSelector-${props.productId}`, currentItem: (_c = props.variationValues) === null || _c === void 0 ? void 0 : _c.find((variationValue) => variationValue.id === props.currentId), enableOutofstockLabel: props.enableOutofstockLabel && !window.unshoppable && !props.isBoutiqueExclusive, enableOnlyOneLeftLabel: ((_d = props.variationValues.find((vv) => vv.value === props.currentId)) === null || _d === void 0 ? void 0 : _d.ATS) === 1, open: props.open, error: props.error, trackOpen: props === null || props === void 0 ? void 0 : props.trackOpenSize, disableHover: props.disableHover || false, onClickExtraAction: props.onClickExtraAction, stockStatus: props.stockStatus, hideUnselectedLabel: props.hideUnselectedLabel, forceCloseOnChange: props.forceCloseOnChange }, props.variationValues.map((variation) => (React.createElement(SelectorRadio, { key: props.productId + variation.id, selectorId: `size-selector-${props.productId}`, enableOutofstockLabel: false, isNotAvailableSelectable: props.isNotAvailableSelectable, value: variation.id, label: variation.displayValue, selected: variation.value == props.currentId, disabled: !variation.selectable, isOutOfStock: variation.selectable, isBoutiqueExclusive: props.isBoutiqueExclusive, item: variation, onSelect: props.onChangeVariation })))));\n};\nProductSelectionSizes.defaultProps = {\n enableOutofstockLabel: true,\n enableOnlyOneLeftLabel: true,\n};\nexport default ProductSelectionSizes;\n","import ProductActionNotifyMe from '@moncler/components/product/ProductActionNotifyMe';\nimport React, { useEffect, useMemo, useRef } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport classNames from 'classnames';\nconst SizeSelectorModalItem = (props) => {\n var _a;\n const { t } = useTranslation();\n const optionRef = useRef();\n const currentColor = useMemo(() => {\n var _a, _b;\n return (_b = (_a = props.product) === null || _a === void 0 ? void 0 : _a.variationAttributes.find((p) => p.attributeId === 'color')) === null || _b === void 0 ? void 0 : _b.values.find((c) => c.selected === true);\n }, [props.product]);\n const onClickHandler = (e) => {\n const HTMLtarget = e.target;\n if (!HTMLtarget.closest('.right-side') && !HTMLtarget.closest('#notifyme')) {\n props.onSelect(props.selectorItem);\n }\n };\n useEffect(() => {\n if (props.focusedOption === props.index) {\n setTimeout(() => {\n optionRef.current.focus();\n }, 50);\n }\n }, [props.focusedOption]);\n return (React.createElement(\"li\", { ref: optionRef, className: classNames('size-selector-line', { disabled: props.disabled }), role: \"option\", \"aria-selected\": props.selected, onClick: onClickHandler, onKeyDown: (e) => {\n if (e.key == 'Enter') {\n e.preventDefault();\n onClickHandler(e);\n }\n else if (e.key == 'Escape') {\n e.preventDefault();\n props.toggleModal();\n setTimeout(() => {\n var _a;\n (_a = document.querySelector('#size-combobox')) === null || _a === void 0 ? void 0 : _a.focus();\n }, 50);\n }\n else if (e.key == 'Tab') {\n props.toggleModal();\n }\n else if (e.key == 'ArrowUp') {\n e.preventDefault();\n props.focusOption('prev');\n }\n else if (e.key == 'ArrowDown') {\n e.preventDefault();\n props.focusOption('next');\n }\n }, tabIndex: 0 },\n React.createElement(\"div\", { className: \"left-side\" },\n React.createElement(\"div\", { className: classNames('selector-size-item', props.disabled && 'disabled', props.selected && 'selected') },\n React.createElement(\"span\", { className: \"selector-size-item__label\" },\n React.createElement(\"span\", { className: classNames('selector-size-item__label-text', props.extraLabel && 'with-extra-label') }, props.selectorItem.displayValue),\n props.extraLabel,\n React.createElement(\"span\", { className: \"visually-hidden\" }, props.disabled ? t('label.outofstocksize') + '-' + t('label.notifyme') : '')))),\n React.createElement(\"div\", { className: \"right-side selector-size-item-notify-me\", \"aria-hidden\": true, tabIndex: -1 }, props.showNotifyMe && !((_a = props.selectorItem) === null || _a === void 0 ? void 0 : _a.selectable) && (React.createElement(ProductActionNotifyMe, { onOpenModal: () => props.onNotifyOpen(true), onCloseModal: () => props.onNotifyOpen(false), product: props.product, color: currentColor, size: props.selectorItem, from: \"pdp\", noModifiers: true, customClasses: ['button--link', 'button--link-button'], icon: \"bell\", tabIndex: -1 })))));\n};\nexport default SizeSelectorModalItem;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nconst OutOfStockBlock = (props) => {\n const { t } = useTranslation();\n const { isComingSoon, showSimilarProductsOOS } = props;\n const label = isComingSoon ? t('label.comingsoonlong') : t('label.outofstock');\n return (React.createElement(\"div\", { className: \"size-selection-button blocked\" },\n React.createElement(\"div\", null,\n React.createElement(\"i\", { className: \"alert icon--alert\" }),\n React.createElement(\"span\", null, label)),\n showSimilarProductsOOS && (React.createElement(\"button\", { type: \"button\", className: \"button button--link-button\", onClick: () => props.openSimilarModal() }, t('similarproduct.title')))));\n};\nexport default OutOfStockBlock;\n","import customEventBus from '@common/scripts/libs/eventBus';\nimport useChartTable from '@common/utils/useChartTable';\nimport SizeSelectorModalItem from '@moncler/components/product/SizeSelectorModalItem';\nimport OutOfStockBlock from '@moncler/components/product/OutOfStockBlock';\nimport ModalDialog from '@ui/modal/ModalDialog';\nimport useBreakpoint from '@utils/useBreakpoint';\nimport classNames from 'classnames';\nimport React, { useCallback, useEffect, useMemo, useState, useRef } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { createPortal } from 'react-dom';\nimport FocusTrap from 'focus-trap-react';\nconst SizeSelectorButton = (props) => {\n var _a;\n const { t } = useTranslation();\n const [openModal, setOpenModal] = useState();\n const currentProduct = props.current;\n const isComingSoon = (currentProduct === null || currentProduct === void 0 ? void 0 : currentProduct.isComingSoon) == 2;\n const showNotifyMe = useMemo(() => {\n var _a, _b, _c, _d;\n return (window.unshoppable ||\n (currentProduct === null || currentProduct === void 0 ? void 0 : currentProduct.isBoutiqueExclusive) ||\n ((_a = currentProduct === null || currentProduct === void 0 ? void 0 : currentProduct.availability) === null || _a === void 0 ? void 0 : _a.isOutOfStock) ||\n isComingSoon ||\n (currentProduct === null || currentProduct === void 0 ? void 0 : currentProduct.notShoppable) ||\n !((_b = currentProduct === null || currentProduct === void 0 ? void 0 : currentProduct.price) === null || _b === void 0 ? void 0 : _b.type) ||\n !((_d = (_c = currentProduct === null || currentProduct === void 0 ? void 0 : currentProduct.price) === null || _c === void 0 ? void 0 : _c.sales) === null || _d === void 0 ? void 0 : _d.value));\n }, [currentProduct]);\n const [countrySizes, setCountrySizes] = useState();\n const [monclerSizes, setMonclerSizes] = useState();\n useChartTable(props.sizeChart, setCountrySizes, setMonclerSizes);\n const currentBreakpoint = useBreakpoint();\n const [bottom, setBottom] = useState(0);\n const [scrollTop, setScrollTop] = useState(0);\n const scrollbarStartingHeight = 53;\n const [scrollBarHeight, setScrollBarHeight] = useState(scrollbarStartingHeight);\n const [longestSizeChars, setLongestSizeChars] = useState(0);\n const [isMobile, setIsMobile] = useState();\n const [focusedOption, setFocusedOption] = useState();\n const [notifyOpen, setNotifyOpen] = useState();\n const scrollableBox = useRef(null);\n useEffect(() => {\n const onSizeOpen = () => {\n setOpenModal(true);\n };\n customEventBus.on('size-selector:open', onSizeOpen);\n return () => {\n customEventBus.off('size-selector:open', onSizeOpen);\n };\n }, []);\n useEffect(() => {\n const isMobile = currentBreakpoint < parseInt(window.mqObj.md.toString());\n setIsMobile(isMobile);\n if (!isMobile) {\n setModalOffset();\n }\n }, [currentBreakpoint]);\n const showSimilarProductsOOS = useMemo(() => {\n var _a, _b, _c, _d, _e;\n const hasLimitedAvailability = (currentProduct === null || currentProduct === void 0 ? void 0 : currentProduct.hasLimitedAvailability) || (currentProduct === null || currentProduct === void 0 ? void 0 : currentProduct.isComingSoon);\n const isManualConfig = ((_c = (_b = (_a = currentProduct === null || currentProduct === void 0 ? void 0 : currentProduct.limitedAvailabilityConfig) === null || _a === void 0 ? void 0 : _a.similarProductConfig) === null || _b === void 0 ? void 0 : _b.productIdList) === null || _c === void 0 ? void 0 : _c.length) > 0;\n //In case of manual config, the ajax call for tiles is postponed when rendering is needed\n const hasProductTiles = ((_d = props.similarProductsTiles) === null || _d === void 0 ? void 0 : _d.length) > 0 || isManualConfig;\n const showSimilarProducts = (_e = currentProduct === null || currentProduct === void 0 ? void 0 : currentProduct.limitedAvailabilityConfig) === null || _e === void 0 ? void 0 : _e.showSimilarProducts;\n return hasLimitedAvailability && showSimilarProducts && hasProductTiles;\n }, [currentProduct, props.similarProductsTiles]);\n const fittingCaption = useCallback(() => {\n var _a, _b;\n return ((((_a = props.current) === null || _a === void 0 ? void 0 : _a.fitting) || ((_b = props.current) === null || _b === void 0 ? void 0 : _b.sizeAndFit1)) && (React.createElement(\"div\", { className: \"fitting-caption\" },\n React.createElement(\"div\", { className: \"fitting\" },\n React.createElement(\"strong\", null,\n t('label.fitting'),\n \": \"),\n React.createElement(\"span\", null, props.current.fitting || props.current.sizeAndFit1)))));\n }, [props.current]);\n const sizeLabel = (size) => {\n var _a;\n const monclerSizeIndex = monclerSizes === null || monclerSizes === void 0 ? void 0 : monclerSizes.rawValues.indexOf(size);\n const countrySize = countrySizes === null || countrySizes === void 0 ? void 0 : countrySizes.values[monclerSizeIndex];\n const convertedSize = countrySize && `${countrySizes.id} ${countrySize}`;\n const isSuggestedSize = ((_a = props.suggestedSize) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === size.toLowerCase();\n if (!convertedSize && !isSuggestedSize) {\n return null;\n }\n return (React.createElement(React.Fragment, null,\n convertedSize && React.createElement(\"span\", { className: \"size-selector-line-label\" }, convertedSize),\n isSuggestedSize && React.createElement(\"span\", { className: \"size-selector-line-label\" },\n \" \",\n t('sizeguide.reccommendedsize'))));\n };\n const isSizeDisabled = (variation) => {\n const variationsLength = props.current.isParfum ? props.current.parfumAttributes.productFamily : props.variationValues;\n return props.alwaysAvailable || variationsLength.length < 2 ? false : isComingSoon || (!variation.selectable && !props.boutiqueAvailability && !window.unshoppable);\n };\n const limitedAvailabilityDepth = useMemo(() => {\n var _a, _b;\n const isLimitedAvailabilityDepth = currentProduct.hasLimitedAvailabilityDepth && ((_a = props.currentSize) === null || _a === void 0 ? void 0 : _a.hasSizeLimitedAvailability);\n if (isLimitedAvailabilityDepth && ((_b = props.currentSize) === null || _b === void 0 ? void 0 : _b.selectable) && !currentProduct.isBoutiqueExclusive) {\n return React.createElement(\"span\", { className: \"size-selector-line-label size-limited-availability\" }, t('product.limitedavailability'));\n }\n }, [currentProduct, props.currentSize]);\n const setModalOffset = () => {\n const selectorContainers = document.querySelector('.selector-size-expanded');\n const buttonContainers = document.querySelector('.button-modal-container');\n if (selectorContainers && buttonContainers) {\n const buttonContainer = buttonContainers;\n const selectorContainer = selectorContainers;\n // Ottiene altezze e margini degli elementi e calcola l'altezza totale\n const marginTop = parseInt(window.getComputedStyle(buttonContainer).marginTop);\n const paddingBottom = parseInt(window.getComputedStyle(selectorContainer).paddingBottom);\n const height = buttonContainer.offsetHeight + marginTop + paddingBottom - 1;\n // Imposta l'altezza calcolata nello state\n setBottom(height);\n }\n };\n const buttonText = useMemo(() => {\n if (props.currentSize) {\n return (React.createElement(\"span\", { className: \"size-selection-button-label\" },\n React.createElement(\"span\", { className: \"bold\" }, props.currentSize.displayValue),\n sizeLabel(props.currentId),\n limitedAvailabilityDepth));\n }\n else {\n return t('label.selectasize');\n }\n }, [currentProduct, props.currentId, props.suggestedSize, props.currentSize]);\n useEffect(() => {\n if (openModal) {\n setFocusedOption(0);\n }\n else {\n setFocusedOption(undefined);\n }\n }, [openModal]);\n const focusOption = (dir) => {\n var _a;\n if (dir == 'next') {\n setFocusedOption(focusedOption + 1 < ((_a = props.variationValues) === null || _a === void 0 ? void 0 : _a.length) ? focusedOption + 1 : focusedOption);\n }\n else {\n setFocusedOption(focusedOption - 1 <= 0 ? 0 : focusedOption - 1);\n }\n };\n const calculateScrollTop = (scrollValue) => {\n if (!scrollableBox.current) {\n return;\n }\n const scrollableElement = scrollableBox.current;\n const scrollableLength = scrollableElement.scrollHeight - scrollableElement.clientHeight;\n const scrollTrackHeight = scrollableElement.scrollHeight - scrollBarHeight;\n const scrollTop = (scrollValue / scrollableLength) * scrollTrackHeight;\n const scrollingDelta = scrollTop < 0 ? scrollTop : scrollTop > scrollTrackHeight ? scrollTop - scrollTrackHeight : 0;\n const bouncingBar = scrollbarStartingHeight - Math.abs(scrollingDelta) / 5;\n setScrollTop(Math.min(Math.max(0, scrollTop), scrollTrackHeight));\n if (bouncingBar !== scrollbarStartingHeight) {\n setScrollBarHeight(bouncingBar);\n }\n };\n const parfumLinkToSelectorItem = (parfumLink) => {\n return Object.assign(Object.assign({}, parfumLink), { isParfum: true, displayValue: parfumLink.format, value: parfumLink.format, selectable: parfumLink.available, selected: false, preorderable: false, refinementColor: null, swatchColor: null, swatchImg: null, imgs: null });\n };\n const itemList = useMemo(() => {\n return (props.current.isParfum ? props.current.parfumAttributes.productFamily.map((pf) => parfumLinkToSelectorItem(pf)) : props.variationValues);\n }, [props.current]);\n const SizesBlock = useMemo(() => {\n return (React.createElement(\"ul\", { id: \"size-selector-container\", className: (itemList === null || itemList === void 0 ? void 0 : itemList.length) <= 8 ? 'hide__scrollbar' : '', role: \"listbox\", \"aria-labelledby\": \"size-combobox\", tabIndex: -1, ref: scrollableBox, onScroll: (e) => {\n calculateScrollTop(e.target.scrollTop);\n } }, itemList === null || itemList === void 0 ? void 0 : itemList.map((item, i) => {\n var _a;\n if (((_a = item.displayValue) === null || _a === void 0 ? void 0 : _a.length) > longestSizeChars) {\n setLongestSizeChars(item.displayValue.length);\n }\n return (React.createElement(SizeSelectorModalItem, { key: item.id, index: i, selectorItem: item, selected: item.value == props.currentId, disabled: isSizeDisabled(item), variationGroupId: props.current.id, isSizeInStickyTray: props.isSizeInStickyTray, isQuickBuy: props.isQuickBuy, onSelect: () => {\n toggleModal(false);\n props.onChangeVariation(item);\n }, toggleModal: () => toggleModal(false), extraLabel: sizeLabel(item.value), showNotifyMe: showNotifyMe, product: currentProduct, focusOption: focusOption, focusedOption: focusedOption, onNotifyOpen: (open) => setNotifyOpen(open) }));\n })));\n }, [props.currentId, props.variationValues, countrySizes, monclerSizes, props.suggestedSize, focusedOption]);\n const closeModalOnClickOutside = (e) => {\n const HTMLtarget = e.target;\n if (!HTMLtarget.closest('.size-selection-combobox') && !HTMLtarget.closest('#notifyme') && !HTMLtarget.closest('.size-selection-button')) {\n setOpenModal(false);\n document.body.removeEventListener('mousedown', closeModalOnClickOutside);\n }\n else if (HTMLtarget.closest('.size-selection-button')) {\n document.body.removeEventListener('mousedown', closeModalOnClickOutside);\n }\n };\n const toggleModal = (open) => {\n setOpenModal(open);\n if (!isMobile) {\n if (open) {\n document.body.addEventListener('mousedown', closeModalOnClickOutside);\n }\n else {\n document.body.removeEventListener('mousedown', closeModalOnClickOutside);\n }\n }\n };\n return ((_a = props.productAvailability) === null || _a === void 0 ? void 0 : _a.isOutOfStock) && !props.current.isBoutiqueExclusive && !props.current.isParfum ? (React.createElement(OutOfStockBlock, { isComingSoon: isComingSoon, showSimilarProductsOOS: showSimilarProductsOOS, openSimilarModal: props.openSimilarModal })) : (React.createElement(\"div\", { className: \"button-modal-container\" },\n React.createElement(\"button\", { className: classNames('button button--secondary size-selection-button', { disabled: props.currentSize && isSizeDisabled(props.currentSize) }), onClick: () => {\n toggleModal(!openModal);\n }, onKeyDown: (e) => {\n if ((openModal && e.key == 'Tab') || e.key == 'ArrowDown') {\n e.preventDefault();\n toggleModal(false);\n }\n }, role: isMobile ? 'button' : 'combobox', \"aria-haspopup\": \"listbox\", \"aria-expanded\": isMobile ? (openModal ? 'true' : 'false') : undefined, id: \"size-combobox\" },\n buttonText,\n openModal ? React.createElement(\"i\", { className: \"chevron icon--chevron-up\" }) : React.createElement(\"i\", { className: \"chevron icon--chevron-down\" })),\n isMobile ? (React.createElement(ModalDialog, { role: \"dialog\", isOpen: openModal, onRequestClose: () => {\n toggleModal(false);\n }, className: \"size-selection\", overlayClassName: \"size-selection\", contentLabel: \"Select a Size\", buttonInHeader: true, subjsx: props.showSizeFit && fittingCaption },\n React.createElement(\"div\", { style: { '--size-label-length': longestSizeChars * 8 + 'px', '--scrollbar-height': `${scrollBarHeight}px`, '--scroll-top': `${scrollTop}px` } }, SizesBlock))) : (openModal && (React.createElement(React.Fragment, null, createPortal(React.createElement(FocusTrap, { focusTrapOptions: { allowOutsideClick: true }, active: !notifyOpen },\n React.createElement(\"div\", { id: \"size-selection-combobox\", className: \"size-selection size-selection-combobox\", style: { bottom: `${bottom}px`, '--size-label-length': longestSizeChars * 8 + 'px' } },\n props.showSizeFit && fittingCaption(),\n SizesBlock)), document.getElementById('size-selector-combobox-container')))))));\n};\nexport default SizeSelectorButton;\n","import SizeGuide from '@moncler/components/sizeguide/SizeGuide';\nimport SizeSelectorButton from '@moncler/components/product/SizeSelectorButton';\nimport SelectorSize from '@ui/selector/SelectorSize';\nimport classNames from 'classnames';\nimport React, { useEffect, useMemo, useState, useRef } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport api from '@common/utils/api';\nconst ProductSelectionSizesExpanded = (props) => {\n var _a, _b, _c, _d, _e;\n const { t } = useTranslation();\n const [suggestedSize, setSuggestedSize] = useState();\n const [sizeChart, setSizeChart] = useState();\n const currentSize = useMemo(() => {\n var _a, _b;\n return (_b = (_a = props.variationValues) === null || _a === void 0 ? void 0 : _a.find((variationValue) => variationValue.id === props.currentId)) === null || _b === void 0 ? void 0 : _b.displayValue;\n }, [props.variationValues, props.currentId]);\n const isOutOfStock = useMemo(() => {\n var _a, _b;\n return (_b = (_a = props.current) === null || _a === void 0 ? void 0 : _a.availability) === null || _b === void 0 ? void 0 : _b.isOutOfStock;\n }, [props.current]);\n const isParfum = useMemo(() => {\n var _a;\n return (_a = props.current) === null || _a === void 0 ? void 0 : _a.isParfum;\n }, [props.current]);\n const firstRender = useRef('');\n useEffect(() => {\n if (firstRender.current != props.current.id) {\n firstRender.current = props.current.id;\n api.getSizeChart(props.current.id).then((data) => setSizeChart(data));\n }\n }, [(_a = props.current) === null || _a === void 0 ? void 0 : _a.id]);\n const showOutofstockLabel = useMemo(() => {\n let enabled = false;\n let currentVariation = props.variationValues.find((v) => v.id == props.currentId);\n if (props.showOutofstockLabel) {\n if ((currentVariation && !(currentVariation === null || currentVariation === void 0 ? void 0 : currentVariation.selectable)) || props.current.availability.isOutOfStock) {\n enabled = true;\n }\n }\n return enabled;\n }, [props.showOutofstockLabel, props.variationValues, props.currentId, props.current]);\n const selectorHeader = useMemo(() => {\n var _a, _b, _c, _d;\n return (React.createElement(\"div\", { className: classNames('selector__header', { 'justify-start': props.selectSizeError }) },\n React.createElement(\"span\", { className: \"selector__label\" },\n React.createElement(\"span\", { className: \"selector__label__name\" },\n isParfum ? t('label.format') : t('label.size'),\n \":\")),\n props.selectSizeError && !currentSize && (React.createElement(\"span\", { className: \"errormessage\", role: \"alert\" }, t('label.pleaseselectasize'))),\n ((_a = props.current) === null || _a === void 0 ? void 0 : _a.showSizeChart) &&\n !(props === null || props === void 0 ? void 0 : props.hideSizeGuide) &&\n React.createElement(SizeGuide, { contactformurl: props === null || props === void 0 ? void 0 : props.contactformurl, pid: (_b = props.current) === null || _b === void 0 ? void 0 : _b.id, master: (_c = props.current) === null || _c === void 0 ? void 0 : _c.masterId, onSizeguideSelection: props === null || props === void 0 ? void 0 : props.onSizeSelection, onSizeSuggestion: (suggestedsize) => setSuggestedSize(suggestedsize), setSizeguideOpen: props === null || props === void 0 ? void 0 : props.setSizeguideOpen, open: props === null || props === void 0 ? void 0 : props.sizeguideOpen, hideBodyMeasurements: (_d = props === null || props === void 0 ? void 0 : props.current) === null || _d === void 0 ? void 0 : _d.hideBodyMeasurements, sizeChart: sizeChart }),\n showOutofstockLabel && React.createElement(\"span\", { className: \"selector__label__info \" }, t('label.outofstock'))));\n }, [props.selectSizeError, currentSize, sizeChart, props.contactformurl, props.hideSizeGuide, props.sizeguideOpen, props.current]);\n return (React.createElement(\"div\", { className: classNames('selector-size-expanded', { 'out-of-stock': isOutOfStock }, { inverted: props.inverted }, props.className), tabIndex: -1, \"aria-label\": isParfum ? t('product.selectFormat') : t('product.selectsize') },\n !isOutOfStock && selectorHeader,\n props.error && !window.unshoppable && !((_b = props.current) === null || _b === void 0 ? void 0 : _b.isBoutiqueExclusive) && (React.createElement(\"div\", { className: \"selector__error\" },\n React.createElement(\"span\", { className: \"errormessage\", role: \"alert\" }, props.error))),\n props.comboBox ? (React.createElement(SizeSelectorButton, Object.assign({}, props, { suggestedSize: suggestedSize, sizeChart: sizeChart, productAvailability: props.current.availability, similarProductsTiles: props.similarProductsTiles }))) : (React.createElement(React.Fragment, null,\n React.createElement(\"fieldset\", { className: \"selector__menu--size\" }, (_c = props.variationValues) === null || _c === void 0 ? void 0 : _c.map((variation) => {\n var _a;\n return (React.createElement(SelectorSize, { key: variation.id, value: variation.id, label: variation.displayValue, selected: variation.value == props.currentId, disabled: props.alwaysAvailable || props.variationValues.length < 2 || ((_a = props.current) === null || _a === void 0 ? void 0 : _a.isBoutiqueExclusive)\n ? false\n : props.current.isComingSoon === 2 || (!variation.selectable && !props.boutiqueAvailability && !window.unshoppable), variationGroupId: props.current.id, isSizeInStickyTray: props.isSizeInStickyTray, isQuickBuy: props.isQuickBuy, onSelect: () => props.onChangeVariation(variation) }));\n })),\n props.showSizeFit && (React.createElement(\"div\", { className: \"fitting-caption\" }, (((_d = props.current) === null || _d === void 0 ? void 0 : _d.fitting) || ((_e = props.current) === null || _e === void 0 ? void 0 : _e.sizeAndFit1)) && (React.createElement(\"div\", { className: \"fitting\" },\n React.createElement(\"strong\", null,\n t('label.fitting'),\n \": \"),\n React.createElement(\"span\", null, props.current.fitting || props.current.sizeAndFit1)))))))));\n};\nexport default ProductSelectionSizesExpanded;\n","import React, { useRef, useState, useEffect } from 'react';\nimport { A11y, Pagination, Mousewheel, Lazy } from 'swiper';\nimport { Swiper as SwiperInstance, SwiperSlide } from 'swiper/react';\nimport classNames from 'classnames';\nimport ProductImage from './ProductImage';\nimport { useTranslation } from 'react-i18next';\nimport { useInView } from 'react-intersection-observer';\nconst swiperModules = [A11y, Mousewheel, Lazy, Pagination];\nconst ProductTileCarousel = (props) => {\n var _a, _b, _c, _d, _e;\n const { t } = useTranslation();\n const swiperRef = useRef();\n // const firstMove = useRef(false);\n const [allowTransform, setAllowTransform] = useState(false);\n const { ref, inView } = useInView({\n triggerOnce: true,\n rootMargin: '200px 0px',\n });\n const paginationWrapper = useRef();\n useEffect(() => {\n var _a;\n if (swiperRef.current) {\n (_a = swiperRef.current.el.querySelectorAll('img.swiper-lazy-loaded')) === null || _a === void 0 ? void 0 : _a.forEach((el) => el.classList.remove('swiper-lazy-loaded'));\n swiperRef.current.lazy.loadInSlide(swiperRef.current.activeIndex);\n }\n }, [props.productId]);\n const lazyLoadSwiperSlides = (swiper) => {\n var _a;\n if (!((_a = swiper === null || swiper === void 0 ? void 0 : swiper.slides) === null || _a === void 0 ? void 0 : _a.length))\n return;\n // Lazy Loading images starting from second slide (index number 1)\n for (let slideNum = 1; slideNum < swiper.slides.length; slideNum++) {\n swiper.lazy.loadInSlide(slideNum);\n }\n };\n let imagesLength = 0;\n const createImageAttrs = (imageIndex) => {\n return {\n className: classNames('product-tile__image carousel-image', { 'swiper-lazy': imageIndex > 0 }),\n productId: props.productId,\n img: props.img,\n lazyDisabled: imageIndex === 0,\n animatedImage: true,\n imgQuality: props.imgQuality,\n ariaHidden: false,\n };\n };\n return (React.createElement(\"div\", { ref: ref, \"aria-label\": \"images slider\", \"aria-roledescription\": \"carousel\" },\n inView ? (React.createElement(React.Fragment, null,\n React.createElement(SwiperInstance, { onSwiper: (swiper) => {\n swiperRef.current = swiper;\n props.isSimplified && paginationWrapper.current.style.setProperty('--bullets-number', imagesLength.toString());\n }, onSliderFirstMove: (swiper) => {\n // This is used to activate Swiper's lazyLoad on tiles touch\n lazyLoadSwiperSlides(swiper);\n }, navigation: {\n nextEl: `.tile-carousel__next--${props.productUuid}`,\n prevEl: `.tile-carousel__prev--${props.productUuid}`,\n }, lazy: { loadOnTransitionStart: true }, a11y: {\n enabled: true,\n slideRole: 'group',\n itemRoleDescriptionMessage: 'slide',\n slideLabelMessage: '',\n prevSlideMessage: t('label.previouspicture'),\n nextSlideMessage: t('label.nextpicture'),\n }, className: classNames('product-tile--carousel', { hovering: props.isOver, 'allow-transform': allowTransform }), spaceBetween: 0, initialSlide: props.initialSlide || 0, speed: 500, threshold: 0, modules: swiperModules, pagination: !props.hideCarouselPagination && {\n enabled: true,\n clickable: true,\n el: paginationWrapper.current,\n }, mousewheel: {\n forceToAxis: true,\n thresholdDelta: 20,\n // sensitivity: 10,\n }, resistance: true, resistanceRatio: 0, \n // loop\n // loopPreventsSlide={false}\n // OE-17878\n slidesPerView: 1, centeredSlides: true, \n // End OE-17878\n onBeforeSlideChangeStart: (swiper) => {\n window.isMobile() && setAllowTransform(true);\n lazyLoadSwiperSlides(swiper);\n setTimeout(() => {\n swiper.pagination.bullets.map((bullet) => {\n bullet.setAttribute('tabIndex', '-1');\n bullet.setAttribute('aria-hidden', 'true');\n });\n }, 150);\n }, onSlideChange: (swiper) => {\n props.isSimplified && paginationWrapper.current.style.setProperty('--bullets-active-offset', swiper.activeIndex * (100 / imagesLength) + '%');\n }, onAfterInit: (swiper) => {\n if (!props.hideCarouselPagination) {\n setTimeout(() => {\n window.isMobile() && swiper.pagination.el.addEventListener('touchstart', () => setAllowTransform(true));\n swiper.pagination.el.setAttribute('aria-hidden', 'true');\n swiper.pagination.bullets.map((bullet) => {\n bullet.setAttribute('tabIndex', '-1');\n bullet.setAttribute('aria-hidden', 'true');\n });\n }, 150);\n }\n }, onMouseEnter: () => {\n let outherCarousel = swiperRef.current.el.closest('.swiper-wrapper');\n console.log('onMouseEnter outherCarousel', outherCarousel);\n } },\n props.genderImageSorted && ((_a = props.img) === null || _a === void 0 ? void 0 : _a[props.genderImageSorted])\n ? (_c = (_b = props.img) === null || _b === void 0 ? void 0 : _b[props.genderImageSorted]) === null || _c === void 0 ? void 0 : _c.map((url, index) => {\n if (index <= 2) {\n const imageIndex = imagesLength;\n imagesLength++;\n return (React.createElement(SwiperSlide, { key: index, \"data-image-index\": imageIndex },\n React.createElement(ProductImage, Object.assign({ index: index, genderImageSorted: props.genderImageSorted }, createImageAttrs(imageIndex), { ariaHidden: true }))));\n }\n })\n : (_e = (_d = props.img) === null || _d === void 0 ? void 0 : _d.urls) === null || _e === void 0 ? void 0 : _e.map((url, index) => {\n if (index <= 3 && url &&\n !url.includes('_' + (props.exlude || 'F'))) {\n const imageIndex = imagesLength;\n imagesLength++;\n return ( // exclude F which is a duplicate of X\n React.createElement(SwiperSlide, { key: index, \"data-image-index\": imageIndex },\n React.createElement(ProductImage, Object.assign({ index: index, productUuid: props.productUuid }, createImageAttrs(imageIndex), { ariaHidden: true }))));\n }\n }),\n imagesLength > 1 && (React.createElement(React.Fragment, null,\n React.createElement(\"button\", { type: \"button\", className: `button button--tertiary-inverted button--arrow-left product-tile-carousel__button tile-carousel__prev--${props.productUuid}` }),\n React.createElement(\"button\", { type: \"button\", className: `button button--tertiary-inverted button--arrow-right product-tile-carousel__button tile-carousel__next--${props.productUuid}` })))))) : (React.createElement(\"div\", { className: \"swiper-slide-preload\" },\n React.createElement(ProductImage, { productId: props.productId, img: props.img, className: classNames('product-tile__image carousel-image'), productUuid: props.productUuid, lazyLowRes: props.lazyLowRes, animatedImage: true }))),\n props.isSimplified && React.createElement(\"div\", { ref: paginationWrapper })));\n};\nexport default ProductTileCarousel;\n","import classNames from 'classnames';\nimport React, { useRef, useState } from 'react';\nimport { InView } from 'react-intersection-observer';\nimport ProductImage from './ProductImage';\nconst ProductTileCarousel = (props) => {\n var _a, _b, _c, _d, _e;\n const scrollableElement = useRef(null);\n const [activeBullet, setActiveBullet] = useState(0);\n const isGenderImageSorted = props.genderImageSorted && ((_a = props.img) === null || _a === void 0 ? void 0 : _a[props.genderImageSorted]);\n let imagesLength = 0;\n return (React.createElement(\"div\", { className: \"product-tile-carousel-css\", ref: scrollableElement },\n isGenderImageSorted ? (_c = (_b = props.img) === null || _b === void 0 ? void 0 : _b[props.genderImageSorted]) === null || _c === void 0 ? void 0 : _c.map((url, index) => {\n if (index <= 2) {\n const carouselId = `carousel-slide-${props.productUuid}-${imagesLength}`;\n const imageIndex = imagesLength;\n imagesLength++;\n return (React.createElement(InView, { as: \"div\", threshold: 0.1, onChange: (inView, entry) => {\n inView && entry.isIntersecting && entry.intersectionRatio > 0 && setActiveBullet(imageIndex);\n }, className: \"product-tile-carousel-css-image\", id: carouselId, key: index, \"data-index\": imageIndex },\n React.createElement(ProductImage, { productId: props.productId, img: props.img, index: index, className: classNames(\"product-tile__image carousel-image\"), genderImageSorted: props.genderImageSorted, animatedImage: true })));\n }\n })\n : (_e = (_d = props.img) === null || _d === void 0 ? void 0 : _d.urls) === null || _e === void 0 ? void 0 : _e.map((url, index) => {\n // exclude F wich is a duplicate of X\n if (index <= 3 && !url.includes('_F')) {\n const carouselId = `carousel-slide-${props.productUuid}-${imagesLength}`;\n const imageIndex = imagesLength;\n imagesLength++;\n return (React.createElement(InView, { as: \"div\", threshold: 0.1, onChange: (inView, entry) => {\n inView && entry.isIntersecting && entry.intersectionRatio > 0 && setActiveBullet(imageIndex);\n }, className: \"product-tile-carousel-css-image\", id: carouselId, key: index, \"data-index\": imageIndex },\n React.createElement(ProductImage, { productId: props.productId, img: props.img, index: index, className: classNames(\"product-tile__image carousel-image\"), productUuid: props.productUuid, animatedImage: true })));\n }\n }),\n React.createElement(\"button\", { type: \"button\", className: `button button--tertiary-inverted button--arrow-left product-tile-carousel__button tile-carousel__prev--${props.productUuid}` }),\n React.createElement(\"button\", { type: \"button\", className: `button button--tertiary-inverted button--arrow-right product-tile-carousel__button tile-carousel__next--${props.productUuid}` }),\n React.createElement(\"div\", { className: \"swiper-pagination swiper-pagination-clickable swiper-pagination-bullets swiper-pagination-horizontal\", \"aria-hidden\": \"true\" }, [...Array(imagesLength)].map((e, i) => (React.createElement(\"button\", { key: i, className: `swiper-pagination-bullet ${activeBullet === i ? 'swiper-pagination-bullet-active' : ''}`, \"tab-index\": -1, \"aria-label\": \"Go to slide \", \"aria-hidden\": \"true\", onClick: (e) => {\n e.preventDefault();\n e.stopPropagation();\n scrollableElement.current.scrollTo(document.getElementById(`carousel-slide-${props.productUuid}-${i}`).offsetLeft, 0);\n } },\n React.createElement(\"span\", { className: \"d-none\" },\n \"Go to slide \",\n i)))))));\n};\nexport default ProductTileCarousel;\n","import React from 'react';\nimport ProductTileCarouselSwiper from './ProductTileCarouselSwiper';\nimport ProductTileCarouselCSS from './ProductTileCarouselCSS';\nconst ProductTileCarousel = (props) => {\n return window.PlpTilesCSS ? React.createElement(ProductTileCarouselCSS, Object.assign({}, props)) : React.createElement(ProductTileCarouselSwiper, Object.assign({}, props));\n};\nexport default ProductTileCarousel;\n","import ThronVideo from '@components/utils/ThronVideo';\nimport classNames from 'classnames';\nimport React, { useEffect, useRef } from 'react';\nimport { useTranslation } from 'react-i18next';\nconst ProductVideo = (props) => {\n const { t } = useTranslation();\n const pdpVideoRef = useRef(null);\n function findElementWithPauseAttribute(videoElement) {\n let currentElement = videoElement.parentNode;\n while (currentElement !== document) {\n const pauseElement = currentElement.querySelector('[data-pause]');\n if (pauseElement) {\n return pauseElement;\n }\n currentElement = currentElement.parentNode;\n }\n return null; // Se non viene trovato nessun elemento con l'attributo data-pause\n }\n useEffect(() => {\n let pauseButton;\n const onPause = (e) => {\n const currentButton = e.target;\n if (currentButton.ariaPressed === 'true') {\n currentButton.setAttribute('aria-pressed', 'false');\n if (props.inZoomModal) {\n pdpVideoRef.current\n .closest('.product-zoom-modal')\n .querySelectorAll('.product-zoom-thumbs--wrapper video')\n .forEach((v) => {\n if (pdpVideoRef.current.src === v.src) {\n v.play();\n }\n });\n pdpVideoRef.current.play();\n }\n else {\n pdpVideoRef.current.play();\n }\n }\n else {\n currentButton.setAttribute('aria-pressed', 'true');\n pdpVideoRef.current.pause();\n if (props.inZoomModal) {\n pdpVideoRef.current\n .closest('.product-zoom-modal')\n .querySelectorAll('.product-zoom-thumbs--wrapper video')\n .forEach((v) => {\n if (pdpVideoRef.current.src === v.src) {\n v.pause();\n }\n });\n pdpVideoRef.current.pause();\n }\n else {\n pdpVideoRef.current.pause();\n }\n }\n };\n if (pdpVideoRef.current) {\n pauseButton = findElementWithPauseAttribute(pdpVideoRef.current);\n if (pauseButton && !props.isThumb) {\n pauseButton.addEventListener('click', onPause);\n }\n }\n return () => pauseButton === null || pauseButton === void 0 ? void 0 : pauseButton.removeEventListener('click', onPause);\n });\n const videoElement = props.url ? (React.createElement(\"video\", { ref: pdpVideoRef, className: classNames('wrapper-product-video', { 'is-parfum': props.isParfum }), playsInline: true, autoPlay: true, muted: true, loop: true, src: props.url })) : (React.createElement(ThronVideo, { thronID: props.tronID, autoplay: true, muted: true, className: classNames('product-video-wrapper'), sessionId: props.sessionId, lockBitrate: window.lockBitrateProductVideos }));\n if (props.inGallery) {\n return (React.createElement(\"div\", { className: \"wrapper-product-video\" },\n videoElement,\n !props.isThumb && React.createElement(\"button\", { className: \"product-video-pause\", \"aria-label\": t('button.pause'), \"data-pause\": true, \"aria-pressed\": \"false\" })));\n }\n return videoElement;\n};\nexport default ProductVideo;\n","import ErrorModal from '@components/error/ErrorModal';\nimport analytics from '@utils/analytics';\nimport api from '@utils/api';\nimport { motion } from 'framer-motion';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport customEventBus from '@common/scripts/libs/eventBus';\nconst ProductWishlistToggle = (props) => {\n const { t } = useTranslation();\n const [errorMessage, setErrorMessage] = useState();\n const currentId = useMemo(() => {\n var _a, _b;\n return (((_a = props.productColor) === null || _a === void 0 ? void 0 : _a.productId) || '') + (((_b = props.productSize) === null || _b === void 0 ? void 0 : _b.id) || '');\n }, [props.productColor, props.productSize]);\n const [status, setStatus] = useState(!!window.wishlistIds.find((pid) => pid.includes(currentId)));\n // add listener from outside via CustomEventBus\n useEffect(() => {\n const updateFunction = (data) => {\n var _a;\n // console.info('wishlist:update from:', currentId);\n setStatus(!!((_a = data === null || data === void 0 ? void 0 : data.wishlistIds) === null || _a === void 0 ? void 0 : _a.find((pid) => pid.includes(currentId))));\n };\n customEventBus.on('wishlist:update', updateFunction);\n return () => {\n customEventBus.off('wishlist:update', updateFunction);\n };\n }, [currentId]);\n useEffect(() => {\n const updatedStatus = !!window.wishlistIds.find((pid) => pid.includes(currentId));\n if (updatedStatus != status) {\n setStatus(updatedStatus);\n }\n }, [currentId]);\n const updateWishlistStatus = (items) => {\n if (items) {\n // setStatus(!!items.find((pid) => pid.includes(currentId)));\n customEventBus.emit('account:update', { wishlistIds: items });\n if (!props.inPublicWishlist) {\n customEventBus.emit('wishlist:update', { wishlistIds: items });\n }\n }\n };\n const toggleWishlist = () => {\n if (status) {\n api\n .removeFromWishlist(currentId)\n .then((data) => {\n if (data.success) {\n updateWishlistStatus(data.items);\n }\n else {\n setErrorMessage(data.errorMsg);\n }\n })\n .catch((res) => setErrorMessage(res));\n }\n else {\n api\n .addToWishlist(currentId)\n .then((data) => {\n var _a, _b;\n if (data.success) {\n updateWishlistStatus(data.items);\n analytics.saveForLaterAddToWishlist(props.product, (_a = props === null || props === void 0 ? void 0 : props.productSize) === null || _a === void 0 ? void 0 : _a.id);\n //analytics.addToWishlist(props.product.id)\n analytics.wishlistInteraction((_b = props.product) === null || _b === void 0 ? void 0 : _b.masterId, props.section);\n }\n else {\n setErrorMessage(data.errorMsg);\n }\n })\n .catch((res) => setErrorMessage(res));\n }\n };\n return (React.createElement(React.Fragment, null,\n React.createElement(\"button\", { \"aria-label\": !status ? t('button.saveforlater') : t('button.removefromwishlist'), className: 'wishlist-icon' + (props.modifierClass || ''), \"aria-pressed\": status, onClick: toggleWishlist, \"data-color\": props.color },\n React.createElement(motion.svg, { width: \"24\", height: \"24\", whileTap: { scale: 0.8 }, \"aria-hidden\": true },\n React.createElement(motion.path, { d: \"m11.648 7.2187.352.349.352-.349.6121-.6069c1.4952-1.4824 3.9211-1.4824 5.4163 0 1.4928 1.4801 1.4928 3.878 0 5.3581L12 18.2959l-6.3804-6.326c-1.4928-1.4801-1.4928-3.878 0-5.358 1.4952-1.4825 3.9211-1.4825 5.4163 0l.6121.6067Z\", stroke: props.color == 'white' ? '#FFF' : '#000', fill: status ? (props.color == 'white' ? '#FFF' : '#000') : 'none' }))),\n React.createElement(ErrorModal, { message: errorMessage, onClose: () => setErrorMessage(undefined) })));\n};\nexport default ProductWishlistToggle;\n","import React, { useEffect, useState, useRef, useMemo } from 'react';\nimport SwiperCore, { Keyboard, Navigation } from 'swiper';\nimport { Swiper, SwiperSlide } from 'swiper/react';\nimport { getSimilarProducts } from '@utils/product';\nimport ProductTile from '@moncler/components/listing/ProductTile';\nimport { useTranslation } from 'react-i18next';\nSwiperCore.use([Keyboard, Navigation]);\nconst SimilarProductCarousel = (props) => {\n const { t } = useTranslation();\n const carouselWrapper = useRef();\n const swiperRef = useRef();\n const [similarProductsTiles, setSimilarProductsTiles] = useState(props.similarProductsTiles);\n const shouldEnabledCarousel = (similarProductsTiles === null || similarProductsTiles === void 0 ? void 0 : similarProductsTiles.length) > 2;\n const [visibleSlidesIndexes, setVisibleSlidesIndexes] = useState([]);\n const [carouselEnabled, setCarouselEnabled] = useState();\n useEffect(() => {\n var _a;\n (_a = carouselWrapper.current) === null || _a === void 0 ? void 0 : _a.focus();\n if (!props.similarProductsTiles) {\n getSimilarProducts(props.product).then((data) => setSimilarProductsTiles(data));\n }\n }, []);\n const carouselArrows = useMemo(() => {\n if (shouldEnabledCarousel) {\n return (React.createElement(\"div\", { className: \"similar-product-carousel--controllers-arrows\" },\n React.createElement(\"button\", { className: \"swiper-button-prev\", \"aria-label\": t('carousel.prevslidemessage') },\n React.createElement(\"span\", { className: \"icon--arrow-left\" })),\n React.createElement(\"button\", { className: \"swiper-button-next\", \"aria-label\": t('carousel.nextslidemessage') },\n React.createElement(\"span\", { className: \"icon--arrow-right\" }))));\n }\n else {\n React.createElement(React.Fragment, null);\n }\n }, [shouldEnabledCarousel]);\n if (!similarProductsTiles || (similarProductsTiles === null || similarProductsTiles === void 0 ? void 0 : similarProductsTiles.length) === 0) {\n return React.createElement(React.Fragment, null);\n }\n return (React.createElement(React.Fragment, null,\n React.createElement(\"div\", { className: \"similar-product-container\", ref: carouselWrapper },\n React.createElement(\"div\", { className: `similar-product-carousel ${shouldEnabledCarousel ? 'carousel-enabled' : ''}`, \"aria-label\": t('similarproduct.modaltitlea11y'), tabIndex: -1 },\n React.createElement(\"div\", { className: `similar-product-carousel--controllers${props.labelVisible ? '-label-visible' : ''}` },\n props.labelVisible && React.createElement(\"span\", { className: \"similar-product-carousel--controllers-label\" }, t('similarproduct.label')),\n React.createElement(\"div\", { className: \"similar-product-carousel--arrow-container\" },\n carouselArrows,\n props.floatingModule && (React.createElement(\"button\", { className: \"button close\", \"aria-label\": t('button.close'), onClick: () => {\n props.setShowFloatingModal(false);\n props.setExpanded(false);\n } },\n React.createElement(\"i\", { className: \"icon--close\" }))))),\n React.createElement(Swiper, Object.assign({ onSwiper: (swiper) => {\n swiperRef.current = swiper;\n // focus on fully visible slides\n setVisibleSlidesIndexes([swiper.realIndex, swiper.realIndex + 1]);\n setCarouselEnabled(swiper.enabled);\n }, className: 'similar-product-carousel--cards-wrapper', keyboard: true, wrapperTag: \"ul\", navigation: {\n nextEl: '.swiper-button-next',\n prevEl: '.swiper-button-prev',\n disabledClass: 'swiper-button-disabled',\n }, slidesPerView: \"auto\", a11y: {\n slideRole: 'listitem',\n }, spaceBetween: 4, onSlideChange: (swiper) => {\n //@ts-ignore disable-next-line\n setVisibleSlidesIndexes([swiper.realIndex, swiper.realIndex + 1]);\n }, watchSlidesProgress: true, enabled: shouldEnabledCarousel, breakpoints: {\n 1024: {\n slidesPerView: 2,\n },\n } }, props.swiperConf), similarProductsTiles === null || similarProductsTiles === void 0 ? void 0 : similarProductsTiles.slice(0, 10).map((sp, i) => (React.createElement(SwiperSlide, { className: \"similar-product-slide\", onClick: (e) => {\n props.onRequestClose(e);\n }, key: sp.uuid, tag: \"li\", \"tab-index\": carouselEnabled && (visibleSlidesIndexes === null || visibleSlidesIndexes === void 0 ? void 0 : visibleSlidesIndexes.includes(i)) ? 0 : -1, \"aria-hidden\": carouselEnabled && !(visibleSlidesIndexes === null || visibleSlidesIndexes === void 0 ? void 0 : visibleSlidesIndexes.includes(i)) },\n React.createElement(ProductTile, { product: sp, actionList: 'pdp', type: \"RECS\", disableQuickShop: true, noRollover: true, noSwatch: true, disableFocus: carouselEnabled && !(visibleSlidesIndexes === null || visibleSlidesIndexes === void 0 ? void 0 : visibleSlidesIndexes.includes(i)) })))))))));\n};\nexport default SimilarProductCarousel;\n","import { HIRES, LG, MD, SM } from '@common/utils/imageutils';\nimport { gsap } from 'gsap';\nimport { ScrollTrigger } from 'gsap/ScrollTrigger';\nimport { ScrollToPlugin } from 'gsap/all';\nimport React, { useEffect, useRef } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport ProductImage from './ProductImage';\nimport ProductImageButton from './ProductImageButton';\nimport ProductVideo from './ProductVideo';\nimport classNames from 'classnames';\nimport useBreakpoint from '@common/utils/useBreakpoint';\ngsap.registerPlugin(ScrollTrigger, ScrollToPlugin);\nconst imageSizes = [SM, MD, LG, HIRES];\nconst ProductVerticalGallery = (props) => {\n const { t } = useTranslation();\n const { product } = props;\n const breakpoint = useBreakpoint();\n const callback = (entries) => {\n let wrapperButtonVideo = document.querySelector('.container-product-button-video');\n entries.forEach((entry) => {\n if (wrapperButtonVideo) {\n if (entry.isIntersecting) {\n wrapperButtonVideo.classList.remove('fixed');\n }\n else {\n if (entry.boundingClientRect.y > 100) {\n wrapperButtonVideo.classList.add('fixed');\n }\n }\n }\n });\n };\n const observer = useRef(new IntersectionObserver(callback, { threshold: 0 })).current;\n // intersection observer on stickyTray\n useEffect(() => {\n let wrapperButtonVideo = document.querySelector('.container-product-button-video');\n if (wrapperButtonVideo && breakpoint >= window.mqObj.md) {\n observer.observe(wrapperButtonVideo);\n return () => observer.disconnect();\n }\n }, []);\n const heroGalleryImage = (mediaUrl, index) => {\n var _a, _b;\n return (React.createElement(React.Fragment, null,\n React.createElement(ProductImageButton, { onImageClick: () => props.onImageClick(index), clicked: props.clicked === index, ariaLabel: t('button.openProductGallery', { productName: (_a = product === null || product === void 0 ? void 0 : product.imgs) === null || _a === void 0 ? void 0 : _a.alt, index: index + 1, total: props.media.length }) }, mediaUrl.includes('_V1') ||\n mediaUrl.includes('_V2') ||\n mediaUrl.includes('_V3') ||\n mediaUrl.includes('_V4') ||\n mediaUrl.includes('_V5') ||\n mediaUrl.includes('_V6') ||\n mediaUrl.includes('_V7') ||\n mediaUrl.includes('_V8') ||\n mediaUrl.includes('_V9') ||\n mediaUrl.includes('_V10') ? (React.createElement(\"div\", { className: \"product-image\" },\n React.createElement(\"div\", { className: \"product-video-wrapper\" },\n React.createElement(ProductVideo, { url: mediaUrl, isParfum: product === null || product === void 0 ? void 0 : product.isParfum })))) : (React.createElement(ProductImage, { img: { alt: (_b = product === null || product === void 0 ? void 0 : product.imgs) === null || _b === void 0 ? void 0 : _b.alt, urls: props.media }, sizes: imageSizes, index: index, productId: index == 0 ? product === null || product === void 0 ? void 0 : product.id : undefined }))),\n (mediaUrl.includes('_V1') ||\n mediaUrl.includes('_V2') ||\n mediaUrl.includes('_V3') ||\n mediaUrl.includes('_V4') ||\n mediaUrl.includes('_V5') ||\n mediaUrl.includes('_V6') ||\n mediaUrl.includes('_V7') ||\n mediaUrl.includes('_V8') ||\n mediaUrl.includes('_V9') ||\n mediaUrl.includes('_V10')) && (React.createElement(\"div\", { className: \"container-product-button-video\" },\n React.createElement(\"button\", { className: \"product-video-pause is-parfum\", \"aria-label\": t('button.pause'), \"data-pause\": true, \"aria-pressed\": \"false\" })))));\n };\n return (React.createElement(React.Fragment, null,\n React.createElement(\"div\", { className: classNames('product-gallery-vertical', { 'mbm-gallery-vertical': props.product.isMbm }), id: `product-gallery-vertical-${props.product.uuid}` },\n React.createElement(\"ul\", { className: classNames('product-gallery-vertical--list', {\n 'last-image-full': props.media.length == 2 || props.media.length == 5 || props.media.length == 8 || props.media.length == 11,\n }) }, props.media.map((url, index) => (React.createElement(\"li\", { className: \"product-gallery-vertical__image\", key: `${props.product.id}-${index}`, id: `product-image-${index}`, style: { position: 'relative' } }, heroGalleryImage(url, index))))))));\n};\nexport default ProductVerticalGallery;\n","import analytics from '@utils/analytics';\nimport { HIRES, LG, MD, SM } from '@utils/imageutils';\nimport useBreakpoint from '@utils/useBreakpoint';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport SwiperCore, { EffectFade, Keyboard, Pagination } from 'swiper';\nimport { Swiper as SwiperInstance, SwiperSlide } from 'swiper/react';\nimport ProductImage from './ProductImage';\nimport ProductImageButton from './ProductImageButton';\nimport ProductVideo from './ProductVideo';\nimport ProductVerticalGallery from './ProductVerticalGallery';\nSwiperCore.use([Pagination, EffectFade, Keyboard]);\nconst imageSizes = [SM, MD, LG, HIRES];\nconst ProductHero = (props) => {\n const { t } = useTranslation();\n const { product } = props;\n const [swiper, setSwiper] = useState(null);\n const breakpoint = useBreakpoint();\n const swiperRef = useRef();\n const [pressed, setPressed] = useState(false);\n let containerBullets = document.querySelector('.swiper-pagination-bullets');\n const isTablet = breakpoint < window.mqObj.lg && breakpoint >= window.mqObj.sm;\n const callback = (entries) => {\n let wrapperBullets = document.querySelector('.container-pagination');\n let wrapperButtonVideo = document.querySelector('.container-product-button-video-temp');\n entries.forEach((entry) => {\n if (wrapperBullets) {\n if (entry.isIntersecting) {\n wrapperBullets.classList.remove('fixed');\n wrapperButtonVideo.classList.remove('fixed');\n }\n else {\n if (entry.boundingClientRect.y > 100) {\n wrapperBullets.classList.add('fixed');\n wrapperButtonVideo.classList.add('fixed');\n }\n }\n }\n });\n };\n const observer = useRef(new IntersectionObserver(callback, { threshold: 1, rootMargin: '-64px' })).current;\n // intersection observer on stickyTray\n useEffect(() => {\n let wrapperBullets = document.querySelector('.container-pagination');\n if (breakpoint >= window.mqObj.sm && breakpoint < window.mqObj.lg) {\n if (containerBullets && wrapperBullets) {\n observer.observe(wrapperBullets);\n }\n }\n return () => {\n observer === null || observer === void 0 ? void 0 : observer.disconnect();\n };\n }, [breakpoint, containerBullets]);\n useEffect(() => {\n if (swiper && breakpoint < window.mqObj.lg) {\n swiper.slideTo(1);\n }\n }, [product]);\n const heroGalleryImage = (mediaUrl, index) => {\n var _a, _b;\n return (React.createElement(React.Fragment, null,\n React.createElement(ProductImageButton, { onImageClick: () => props.onImageClick(index), clicked: props.clicked === index, ariaLabel: t('button.openProductGallery', { productName: (_a = product === null || product === void 0 ? void 0 : product.imgs) === null || _a === void 0 ? void 0 : _a.alt, index: index + 1, total: props.media.length }) }, mediaUrl.includes('_V1') ||\n mediaUrl.includes('_V2') ||\n mediaUrl.includes('_V3') ||\n mediaUrl.includes('_V4') ||\n mediaUrl.includes('_V5') ||\n mediaUrl.includes('_V6') ||\n mediaUrl.includes('_V7') ||\n mediaUrl.includes('_V8') ||\n mediaUrl.includes('_V9') ||\n mediaUrl.includes('_V10') ? (React.createElement(\"div\", { className: \"product-image\" },\n React.createElement(\"div\", { className: \"product-video-wrapper\" },\n React.createElement(ProductVideo, { url: mediaUrl, isParfum: product === null || product === void 0 ? void 0 : product.isParfum })))) : (React.createElement(ProductImage, Object.assign({ img: { alt: (_b = product === null || product === void 0 ? void 0 : product.imgs) === null || _b === void 0 ? void 0 : _b.alt, urls: props.media }, sizes: imageSizes, index: index, productId: index == 0 ? product === null || product === void 0 ? void 0 : product.id : undefined }, (index === 0 && { lazyDisabled: true }), { animatedImage: true })))),\n (mediaUrl.includes('_V1') ||\n mediaUrl.includes('_V2') ||\n mediaUrl.includes('_V3') ||\n mediaUrl.includes('_V4') ||\n mediaUrl.includes('_V5') ||\n mediaUrl.includes('_V6') ||\n mediaUrl.includes('_V7') ||\n mediaUrl.includes('_V8') ||\n mediaUrl.includes('_V9') ||\n mediaUrl.includes('_V10')) && (React.createElement(\"div\", { className: `container-product-button-video fixed ${isTablet ? 'd-none' : ''}` },\n React.createElement(\"button\", { className: \"product-video-pause is-parfum\", \"aria-label\": t('button.pause'), \"data-pause\": true, \"aria-pressed\": \"false\" })))));\n };\n return (React.createElement(React.Fragment, null,\n props.media.length == 0 && (React.createElement(\"div\", { className: \"product-image-button product-hero-skeleton\" },\n React.createElement(\"div\", { className: \"product-image\" }))),\n props.media.length > 0 &&\n //@ts-ignore\n (breakpoint >= window.mqObj['md'] ? (React.createElement(React.Fragment, null,\n React.createElement(ProductVerticalGallery, Object.assign({}, props)),\n (product === null || product === void 0 ? void 0 : product.VTOcode) && (React.createElement(\"button\", { onClick: () => {\n analytics.vtoPdpGeneric(product === null || product === void 0 ? void 0 : product.id);\n props.openVto();\n }, className: \"toggle-vto prova\" },\n React.createElement(\"i\", { className: \"icon--vto\" }),\n React.createElement(\"span\", null, t('label.taptotry')))))) : (React.createElement(React.Fragment, null,\n React.createElement(SwiperInstance, { className: \"product-hero-gallery\", effect: \"fade\", speed: 1000, loop: true, slidesPerView: 1, loopPreventsSlide: false, keyboard: true, threshold: 1, touchRatio: 2, longSwipesRatio: 1, edgeSwipeDetection: true, pagination: {\n clickable: true,\n el: '#pagination-bullets',\n }, navigation: {\n nextEl: `.product-hero-carousel__next`,\n prevEl: `.product-hero-carousel__prev`,\n }, followFinger: false, onSwiper: setSwiper, onActiveIndexChange: (swiper) => {\n if (isTablet) {\n let nextSlide = swiper === null || swiper === void 0 ? void 0 : swiper.slides[swiper.realIndex + 1];\n let productVideo = nextSlide === null || nextSlide === void 0 ? void 0 : nextSlide.querySelector('.product-video-wrapper');\n if (productVideo) {\n document.querySelector('.container-product-button-video-temp').classList.add('d-block');\n let pauseVideo = nextSlide.querySelector('.product-video-pause');\n pauseVideo === null || pauseVideo === void 0 ? void 0 : pauseVideo.click();\n let isPressed = pauseVideo.getAttribute('aria-pressed') === 'true';\n setPressed(isPressed);\n }\n else {\n document.querySelector('.container-product-button-video-temp').classList.remove('d-block');\n }\n }\n } },\n props.media.map((url, index) => {\n var _a;\n return (React.createElement(SwiperSlide, { key: `${(_a = props.product) === null || _a === void 0 ? void 0 : _a.id}${index}` },\n React.createElement(\"div\", { className: \"product-gallery\", key: `${product === null || product === void 0 ? void 0 : product.id}${index}` },\n index == 0 && (product === null || product === void 0 ? void 0 : product.VTOcode) && (React.createElement(\"button\", { onClick: () => {\n analytics.vtoPdpGeneric(product === null || product === void 0 ? void 0 : product.id);\n props.openVto();\n }, className: \"toggle-vto\" },\n React.createElement(\"i\", { className: \"icon--tap-vto\" }),\n React.createElement(\"span\", null, t('label.taptotry')))),\n heroGalleryImage(url, index))));\n }),\n React.createElement(\"div\", { className: \"container-pagination fixed\" },\n React.createElement(\"div\", { id: \"pagination-bullets\", className: \"swiper-pagination\" })),\n isTablet && (React.createElement(\"div\", { className: \"container-product-button-video-temp\" },\n React.createElement(\"button\", { className: \"product-video-pause is-parfum\", \"aria-label\": t('button.pause'), onClick: () => {\n var _a;\n let pauseVideo = (_a = swiper === null || swiper === void 0 ? void 0 : swiper.el) === null || _a === void 0 ? void 0 : _a.querySelector('.swiper-slide-active .product-video-pause');\n console.log('swiper ->', swiper);\n console.log('pauseVideo ->', pauseVideo);\n pauseVideo === null || pauseVideo === void 0 ? void 0 : pauseVideo.click();\n let isPressed = pauseVideo.getAttribute('aria-pressed') === 'true';\n setPressed(isPressed);\n }, \"aria-pressed\": pressed }))),\n React.createElement(\"div\", { className: \"\" },\n React.createElement(\"button\", { type: \"button\", className: `button button--tertiary-inverted button--arrow-left product-hero-carousel__prev` }),\n React.createElement(\"button\", { type: \"button\", className: `button button--tertiary-inverted button--arrow-right product-hero-carousel__next` }))))))));\n};\nexport default ProductHero;\n","import { LG, MD, SM } from '@utils/imageutils';\nimport classNames from 'classnames';\nimport React, { useEffect, useLayoutEffect, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport ProductTile from '@moncler/components/listing/ProductTile';\nimport ProductImage from '../product/ProductImage';\nimport analytics from '@common/utils/analytics';\nconst useWindowSize = () => {\n const [size, setSize] = useState([0, 0]);\n useLayoutEffect(() => {\n function updateSize() {\n setSize([window.innerWidth, window.innerHeight]);\n }\n window.addEventListener('resize', updateSize);\n updateSize();\n return () => window.removeEventListener('resize', updateSize);\n }, []);\n return size;\n};\n// prodotto usato per test vale https://dev12.cdn.moncler.ows.farm/en-us/outerwear/down-jackets-daniel-G10911A1090053279999.html\nconst ProductLook = (props) => {\n const { t } = useTranslation();\n const { look } = props;\n const lookImage = useRef();\n const [lookImageHeight, setLookImageHeight] = useState(0);\n const [width] = useWindowSize();\n useEffect(() => {\n if (lookImage.current) {\n setTimeout(() => {\n setLookImageHeight(lookImage.current.offsetHeight);\n }, 100);\n }\n }, [width]);\n useEffect(() => {\n var _a;\n ((_a = look === null || look === void 0 ? void 0 : look.products) === null || _a === void 0 ? void 0 : _a.length) > 0 && analytics.productImpressionsRecommended(look.products, 'shop_the_look_pdp');\n }, [look]);\n return (React.createElement(React.Fragment, null, look.products.length >= 1 && (React.createElement(\"div\", { className: \"container product-look\" },\n React.createElement(\"div\", { className: \"row justify-center\" },\n React.createElement(\"div\", { className: \"col-sm-8 col-md-12\" },\n React.createElement(\"h2\", { className: \"product-look__title\" }, t('label.shopthelook')),\n React.createElement(\"div\", { className: \"row\" },\n React.createElement(\"div\", { className: \"col-md-3 offset-md-1 offset-xl-2\" },\n React.createElement(\"div\", { ref: lookImage, className: classNames('product-look__image', { 'd-none d-md-block': look.hideLookImage }), style: { '--card-height': lookImageHeight + 'px' } },\n React.createElement(ProductImage, { tiletype: \"ProductLook\", img: props.product.imgs, type: 'X', sizes: [SM, MD, LG] }))),\n React.createElement(\"div\", { className: \"col-md-6 offset-md-1 col-xl-4 product-look__column\" },\n React.createElement(\"ul\", { className: \"row\" }, look.products.map((product, i) => (React.createElement(\"li\", { className: \"col-6 product-look__tile\", key: i },\n React.createElement(ProductTile, { product: product, type: \"LOOKPRODUCT\", forceStillLifeImage: true, index: i, hideWishlistBtn: true, noSwatch: true })))))))))))));\n};\nexport default ProductLook;\n","import analytics from '@utils/analytics';\nimport einsteinutils from '@utils/einsteinutils';\nimport useBreakpoint from '@utils/useBreakpoint';\nimport axios from 'axios';\nimport classNames from 'classnames';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport SwiperCore, { Autoplay, Keyboard, Navigation, Mousewheel } from 'swiper';\nimport { SwiperSlide } from 'swiper/react';\nimport ProductTile from '@moncler/components/listing/ProductTile';\nSwiperCore.use([Keyboard, Navigation, Autoplay, Mousewheel]);\nimport AutoplayCarousel from '../autoplayCarousel/AutoplayCarousel';\nconst timing = 10000;\nconst minSlidesForAutoplay = 5;\nconst autoplayConfig = {\n delay: 0,\n disableOnInteraction: false,\n};\nconst ProductRecommendation = (props) => {\n const currentBreakpoint = useBreakpoint();\n const [recommenderName, setRecommenderName] = useState();\n const [title, setTitle] = useState();\n const [products, setProducts] = useState([]);\n const [loaded, setLoaded] = useState();\n const hasMinSlides = useMemo(() => {\n return products.length >= minSlidesForAutoplay;\n }, [products]);\n const recommenderCallback = (rec) => {\n setRecommenderName(rec || 'not configured');\n };\n useEffect(() => {\n const cancelTokenSource = axios.CancelToken.source();\n // console.info('parte il fetch ai reccommended products per il prodotto');\n einsteinutils.productRecommendationsFromSlot(props.slot, recommenderCallback, (rec) => {\n var _a;\n const recommendedAreChanged = JSON.stringify(products === null || products === void 0 ? void 0 : products.map((el) => el.id).sort()) !== JSON.stringify((_a = rec === null || rec === void 0 ? void 0 : rec.products) === null || _a === void 0 ? void 0 : _a.map((el) => el.id).sort());\n if (recommendedAreChanged) {\n // best way to decode special characters\n let txt = document.createElement('textarea');\n txt.innerHTML = rec.displayMessage;\n setTitle(txt.value || props.title);\n setProducts(rec.products);\n setLoaded(true);\n if (rec.products.length > 0) {\n let pdpClass = (props === null || props === void 0 ? void 0 : props.product) ? '_pdp' : '';\n if (props.slot === 'recommendations-recentlyviewed') {\n analytics.productImpressionsRecommended(rec.products, `recently_my_monclert${pdpClass}`);\n }\n else if (props.slot === 'recommendations-profile') {\n analytics.productImpressionsRecommended(rec.products, `recommended_my_monclert${pdpClass}`);\n }\n else {\n // pdpClass = pdpClass.concat('_', slugify(rec.displayMessage));\n pdpClass = pdpClass + '_' + props.slot;\n analytics.productImpressionsRecommended(rec.products, `recommended${pdpClass}`);\n }\n }\n }\n }, cancelTokenSource, props === null || props === void 0 ? void 0 : props.product, props === null || props === void 0 ? void 0 : props.productList);\n return () => cancelTokenSource.cancel();\n }, [props.slot, props === null || props === void 0 ? void 0 : props.product]);\n const loopedSlidesActive = useMemo(() => {\n if (currentBreakpoint >= 1024) {\n return products.length > 4;\n }\n if (currentBreakpoint >= 600) {\n return products.length > 3;\n }\n return products.length > 2;\n }, [products, currentBreakpoint]);\n const swiperConf = useMemo(() => {\n return {\n enabled: products.length >= 2,\n loop: loopedSlidesActive,\n watchSlidesProgress: true,\n speed: hasMinSlides ? timing : 400,\n slidesPerView: props.customClasses === 'pdp-recommendation' ? 'auto' : 1.7,\n resistance: true,\n resistanceRatio: 0,\n spaceBetween: 4,\n autoplay: hasMinSlides ? autoplayConfig : false,\n mousewheel: {\n forceToAxis: true,\n thresholdDelta: 20,\n },\n breakpoints: {\n 600: {\n slidesPerView: 3,\n enabled: products.length > 3,\n },\n 1024: {\n slidesPerView: 4,\n enabled: products.length > 4,\n },\n },\n };\n }, [products, loopedSlidesActive, hasMinSlides]);\n if (!loaded || products.length === 0) {\n return window.devmode ? (React.createElement(\"div\", { className: \"devmode devmodebox\" },\n \"RECOMMENDATION SLOT \",\n props.slot,\n \" \",\n recommenderName && `recommender: ${recommenderName}`,\n \" \",\n (products === null || products === void 0 ? void 0 : products.length) === 0 && '- NO RECOMMENDATIONS RECEIVED')) : (React.createElement(React.Fragment, null));\n }\n return (React.createElement(\"section\", { className: classNames('product-recommended', { 'has-autoplay': hasMinSlides }, props.customClasses), \"data-recommender\": recommenderName },\n React.createElement(\"div\", { className: \"container\" },\n React.createElement(\"div\", { className: \"product-recommended__title-wrapper\" },\n React.createElement(\"h2\", { className: \"product-recommended__title\" }, title || ''))),\n React.createElement(AutoplayCarousel, { swiperConf: swiperConf, withArrows: hasMinSlides, beforeContainer: hasMinSlides && 'pauseBtn' }, products === null || products === void 0 ? void 0 : products.map((product, i) => (React.createElement(SwiperSlide, { key: product.id },\n React.createElement(ProductTile, { withCarousel: true, noSwatch: true, product: product, type: \"RECS\", index: i, recommender: props.slot, hideWishlistBtn: true, hideCarouselPagination: currentBreakpoint < window.mqObj.lg })))))));\n};\nexport default ProductRecommendation;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nconst MbmIcons = (props) => {\n const { t } = useTranslation();\n return (React.createElement(\"ul\", { className: \"mbm-icons\" }, props.icons.map((icon, i) => (React.createElement(\"li\", { id: icon.id, key: i },\n React.createElement(\"img\", { src: icon.image, alt: \"\" }),\n React.createElement(\"span\", null, t(icon.label)))))));\n};\nexport default MbmIcons;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nconst MbmOOSBox = (props) => {\n const { t } = useTranslation();\n return (React.createElement(\"div\", { className: \"info-box\" },\n React.createElement(\"b\", null, t('mbm.oostitle')),\n React.createElement(\"p\", null,\n t('mbm.oostext1'),\n ' ',\n React.createElement(\"button\", { onClick: props.onClick, className: \"link-button bold\" }, t('mbm.oostext2')),\n ' ',\n t('mbm.oostext3'))));\n};\nexport default MbmOOSBox;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nconst MbmShippingDelivery = (props) => {\n const { faqLink } = props;\n const { t } = useTranslation();\n return (React.createElement(\"div\", { className: \"info-box\" },\n !props.onPDP && React.createElement(\"b\", null, t('product.deliveryreturn')),\n React.createElement(\"p\", null,\n t('mbm.deliveryreturnmessage'),\n ' ',\n React.createElement(\"a\", { href: faqLink },\n React.createElement(\"b\", null, t('button.findoutmore'))))));\n};\nexport default MbmShippingDelivery;\n","import analytics from '@utils/analytics';\nimport React, { useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport ProductBoutiqueModal from './ProductBoutiqueModal';\nconst ProductActionReserveInBoutique = (props) => {\n const { t } = useTranslation();\n const [showOverlay, setShowOverlay] = useState(false);\n const buttonRef = useRef(null);\n const [scrollTop, setScrollTop] = useState(0);\n return (React.createElement(React.Fragment, null,\n React.createElement(\"button\", { type: \"button\", className: \"button button--link button--arrow-right\", \"aria-haspopup\": \"dialog\", ref: buttonRef, onClick: () => {\n var _a, _b;\n setScrollTop(document.documentElement.scrollTop);\n setShowOverlay(true);\n document.documentElement.classList.add('no-overflow-ios');\n analytics.reserveInBoutique(((_a = props.product) === null || _a === void 0 ? void 0 : _a.id) || ((_b = props.product) === null || _b === void 0 ? void 0 : _b.masterId));\n } },\n React.createElement(\"span\", null, t('product.reserveinboutique'))),\n props.product && (React.createElement(ProductBoutiqueModal, { isOpen: showOverlay, title: t('product.reserveinboutique'), mode: \"reserve\", product: props.product, size: props.size, color: props.color, colourVariations: props.colourVariations, sizeVariations: props.sizeVariations, onRequestClose: () => {\n document.documentElement.classList.remove('no-overflow-ios');\n document.documentElement.scrollTop = scrollTop;\n setShowOverlay(false);\n buttonRef.current.focus();\n } }))));\n};\nexport default ProductActionReserveInBoutique;\n","import ContentAsset from '@components/common/ContentAsset';\nimport analytics from '@utils/analytics';\nimport React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nconst NFTInfoBox = (props) => {\n const { t } = useTranslation();\n useEffect(() => {\n const nftLink = document.querySelector('.nft-info-box a');\n nftLink.addEventListener('click', () => {\n analytics.nftBoxLink();\n });\n }, []);\n return (React.createElement(\"div\", { className: \"nft-info-box\" },\n React.createElement(ContentAsset, { assetid: props.nftContentAsset.UUID, content: props.nftContentAsset.body })));\n};\nexport default NFTInfoBox;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nconst ShowSimilarProductInline = (props) => {\n const { t } = useTranslation();\n return (React.createElement(\"div\", { className: \"similar-product-description\" },\n React.createElement(\"span\", null,\n t('product.sizenotavailable'),\n \" \"),\n React.createElement(\"button\", { className: \"similar-product-btn text-uppercase\", disabled: !props.enabled, onClick: () => props.setSimilarModalOpen() }, t('similarproduct.button'))));\n};\nexport default ShowSimilarProductInline;\n","import React, { useEffect, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { useTranslation } from 'react-i18next';\nimport SimilarProductCarousel from './SimilarProductCarousel';\nimport FocusTrap from 'focus-trap-react';\nimport analytics from '@common/utils/analytics';\nimport classNames from 'classnames';\nconst ShowSimilarProductFloating = (props) => {\n var _a;\n const { t } = useTranslation();\n const [expanded, setExpanded] = useState(false);\n const [visible, setVisible] = useState(false);\n const [showFloatingModal, setShowFloatingModal] = useState(true);\n const [floatingModuleMargin, setFloatingModuleMargin] = useState(false);\n const numberProductImgVisible = (_a = props.similarProductsTiles) === null || _a === void 0 ? void 0 : _a.slice(0, 2);\n // OE-24564 floating visible after loading images\n const handleFloatingVisibility = () => {\n let floatingImagesLoaded = 0;\n const images = document.querySelectorAll('.similar-product-floating--img');\n images.forEach((img) => {\n img.addEventListener('load', (event) => {\n floatingImagesLoaded++;\n if (floatingImagesLoaded == 2) {\n setVisible(true);\n }\n });\n });\n };\n useEffect(() => {\n handleFloatingVisibility();\n }, [props.product]);\n useEffect(() => {\n // remove live chat icon when the modal opens\n document.body.classList.toggle('remove-live-chat-icon', expanded);\n document.body.classList.toggle('no-scroll', expanded);\n // add margin bottom to Floating Module when sticky bar appears\n let stickyBarOpen = document.querySelector('.sticky-tray.show');\n setFloatingModuleMargin(stickyBarOpen && !expanded);\n return () => {\n document.body.classList.remove('remove-live-chat-icon');\n document.body.classList.remove('no-scroll');\n };\n });\n return (React.createElement(React.Fragment, null, createPortal(React.createElement(\"div\", { className: classNames('similar-product-floating', { 'expanded': expanded }, { 'visible': visible }), role: \"dialog\", \"aria-hidden\": \"true\" },\n React.createElement(\"div\", { className: `similar-product-floating-inner ${floatingModuleMargin ? 'floating-margin-bottom' : ''}` },\n !expanded && (React.createElement(\"div\", { className: \"similar-product-floating-inner-text\" },\n React.createElement(\"button\", { className: \"similar-product_btn text-uppercase\", tabIndex: -1, onClick: () => {\n setExpanded(true);\n setShowFloatingModal(true);\n analytics.productImpressionsRecommended(props.similarProductsTiles, 'pdp');\n analytics.openFloatingModule();\n } },\n React.createElement(\"span\", null, t('similarproduct.floatingbutton')),\n React.createElement(\"ul\", { className: \"similar-product-floating--icon-images row\" }, numberProductImgVisible === null || numberProductImgVisible === void 0 ? void 0 : numberProductImgVisible.map((t) => (React.createElement(\"li\", { key: t.uuid },\n React.createElement(\"img\", { className: 'similar-product-floating--img', src: t.imgs.urls.find((u) => !u.includes('_F')), alt: \"\" })))))),\n React.createElement(\"button\", { className: \"button close\", \"aria-label\": t('button.close'), tabIndex: -1, onClick: () => props.onFloatingClose() },\n React.createElement(\"i\", { className: \"icon--close\" })))),\n expanded && showFloatingModal && (React.createElement(FocusTrap, { active: props.similarProductsTiles.length > 0 },\n React.createElement(\"div\", null,\n React.createElement(SimilarProductCarousel, { similarProductsTiles: props.similarProductsTiles, swiperConf: { slidesPerView: 3 }, labelVisible: true, floatingModule: true, setShowFloatingModal: setShowFloatingModal, setExpanded: setExpanded })))))), document.body)));\n};\nexport default ShowSimilarProductFloating;\n","import React, { useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport SimilarProductCarousel from '@moncler/components/product/SimilarProductCarousel';\nimport Drawers from '@common/ui/drawes/Drawers';\nconst SimilarProductsDrawer = (props) => {\n const { t } = useTranslation();\n const drawerHead = useMemo(() => {\n var _a;\n const isOutOfStock = ((_a = props.product.availability) === null || _a === void 0 ? void 0 : _a.isOutOfStock) && !props.product.isComingSoon;\n const title = isOutOfStock ? t('label.outofstock') : t('similarproduct.title');\n const subtitle = isOutOfStock ? t('similarproduct.outofstock.description') : t('similarproduct.description');\n return (React.createElement(\"div\", { className: \"similar-product-text-container\" },\n React.createElement(\"h2\", { className: \"similar-product-title\" }, title),\n React.createElement(\"span\", { className: \"similar-product-subtitle\" }, subtitle)));\n }, [props.product]);\n return (React.createElement(Drawers, { className: 'similar-product-modal', contentLabel: t('similarproduct.modaltitlea11y'), isOpen: props.similarModalOpen, role: \"dialog\", hasBackdrop: true, onRequestClose: () => {\n props.setSimilarModalOpen(false);\n }, isSticky: true },\n React.createElement(React.Fragment, null,\n drawerHead,\n React.createElement(SimilarProductCarousel, { similarProductsTiles: props.similarProductsTiles, \n // labelVisible\n swiperConf: {\n breakpoints: {\n 1024: {\n enabled: false,\n slidesPerView: 2,\n spaceBetween: 0,\n },\n },\n } }))));\n};\nexport default SimilarProductsDrawer;\n","import Button from '@ui/button/Button';\nimport analytics from '@utils/analytics';\nimport React, { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport ProductBoutiqueModal from '@moncler/components/reserve/ProductBoutiqueModal';\nimport customEventBus from '@common/scripts/libs/eventBus';\nconst ProductActionFindInBoutique = (props) => {\n const { t } = useTranslation();\n const [showOverlay, setShowOverlay] = useState(false);\n useEffect(() => {\n if (!props.onlyButton) {\n customEventBus.on('product:openFib', () => {\n setShowOverlay(true);\n });\n return () => {\n customEventBus.off('product:openFib', () => {\n setShowOverlay(true);\n });\n };\n }\n }, []);\n return (React.createElement(React.Fragment, null,\n React.createElement(Button, { type: \"button\", cls: [props.inverted ? 'button--primary-inverted' : props.secondary ? 'button--secondary' : 'button--primary'], onClick: () => {\n if (props.onlyButton) {\n customEventBus.emit('product:openFib', {});\n }\n else {\n setShowOverlay(true);\n }\n analytics.findInBoutique(props.product.masterId);\n } }, t('label.findinboutique')),\n props.product && !props.onlyButton && (React.createElement(ProductBoutiqueModal, { isOpen: showOverlay, title: t('label.findinboutique'), mode: \"find\", product: props.product, size: props.size, color: props.color, colourVariations: props.colourVariations, sizeVariations: props.sizeVariations, onRequestClose: () => setShowOverlay(false) }))));\n};\nexport default ProductActionFindInBoutique;\n","import ProductAddToBag from '@moncler/components/product/ProductActionAddToBag';\nimport Button from '@ui/button/Button';\nimport ModalDialog from '@ui/modal/ModalDialog';\nimport analytics from '@utils/analytics';\nimport { getSizeVariations } from '@utils/product';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport ProductImage from './ProductImage';\nconst ProductPushRefillModal = (props) => {\n var _a;\n const { t } = useTranslation();\n let sizeVariations = getSizeVariations(props.product);\n return (React.createElement(ModalDialog, { hideHeader: true, noPadding: true, closeInvertedSm: true, isOpen: props.isOpen, onRequestClose: props.onRequestClose, contentLabel: props.title },\n React.createElement(\"div\", { className: \"product-refill\" },\n React.createElement(\"div\", { className: \"product-refill__main\" },\n React.createElement(ProductImage, { img: (_a = props.product) === null || _a === void 0 ? void 0 : _a.imgs, type: \"F\" })),\n React.createElement(\"div\", { className: \"product-refill__detail\" },\n React.createElement(\"div\", null,\n React.createElement(\"h2\", { className: \"dialog__title\" }, props.title),\n React.createElement(\"h3\", { className: \"dialog__white-title\" }, props.product.productName),\n React.createElement(\"h3\", null, props.product.productName),\n React.createElement(\"p\", null, props.product.longDescription || props.product.shortDescription)),\n React.createElement(\"div\", { className: \"mt-24\" },\n React.createElement(ProductAddToBag, { product: props.product, size: sizeVariations[0], callback: props.onRequestClose, updateErrorMessage: props.updateErrorMessage, pushAnalytics: () => {\n analytics.perfumeWantRefill('add to bag');\n analytics.addToCartRefill(props.product);\n } }),\n React.createElement(Button, { type: \"button\", cls: ['button--secondary'], onClick: () => {\n analytics.perfumeWantRefill('no thanks');\n props.onRequestClose();\n } }, t('button.norefill')))))));\n};\nexport default ProductPushRefillModal;\n","import Button from '@ui/button/Button';\nimport api from '@utils/api';\nimport React, { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport customEventBus from '@common/scripts/libs/eventBus';\nimport ProductPushRefillModal from './ProductPushRefillModal';\nconst ProductActionPushRefill = (props) => {\n const { t } = useTranslation();\n const [showOverlay, setShowOverlay] = useState(false);\n const [suggest, setSuggets] = useState();\n useEffect(() => {\n if (showOverlay && !suggest) {\n api.getProduct(props.refillId).then((data) => !!data && setSuggets(data));\n }\n }, [showOverlay]);\n const onClose = () => {\n setShowOverlay(false);\n api.addToBag(props.productId).then((data) => {\n if (data.error) {\n props.updateErrorMessage && props.updateErrorMessage(data.message);\n }\n else {\n (props === null || props === void 0 ? void 0 : props.pushAnalytics) && props.pushAnalytics();\n if (data.quantityTotal) {\n const header = document.querySelector('header');\n const firstRefine = document.querySelector('.listing-container .refine');\n header === null || header === void 0 ? void 0 : header.style.removeProperty('transform');\n if (firstRefine) {\n firstRefine.style.removeProperty('transform');\n }\n customEventBus.emit('minicart:update', { fromAddToBag: true, fromKeyboard: false, pid: props.productId });\n }\n }\n });\n };\n return (React.createElement(React.Fragment, null,\n React.createElement(Button, { type: \"button\", cls: [props.buttonStyleInverted ? 'button--primary-inverted' : 'button--primary'], onClick: () => setShowOverlay(true) }, t('button.addtobag')),\n suggest && (React.createElement(ProductPushRefillModal, { isOpen: showOverlay, title: t('product.parfume.wantrefill'), product: suggest, onRequestClose: onClose, updateErrorMessage: props.updateErrorMessage }))));\n};\nexport default ProductActionPushRefill;\n","import ErrorModal from '@components/error/ErrorModal';\nimport ProductAddToBag from '@moncler/components/product/ProductActionAddToBag';\nimport ProductFindInBoutique from '@moncler/components/product/ProductActionFindInBoutique';\nimport ProductActionNotifyMe from '@moncler/components/product/ProductActionNotifyMe';\nimport ProductActionPushRefill from '@moncler/components/product/ProductActionPushRefill';\nimport analytics from '@utils/analytics';\nimport React, { useMemo, useState } from 'react';\nimport cookie from 'react-cookies';\nimport { useTranslation } from 'react-i18next';\nconst ProductButton = (props) => {\n var _a, _b, _c, _d, _e;\n const { current, currentSize, currentColor, showReserveInBoutiqueButton, sizeVariations, colourVariations, triggerOpenSize, trackAddToBag, inverted, afterAdd } = props;\n const { t } = useTranslation();\n const [errorMessage, setErrorMessage] = useState();\n const [errorLabel, setErrorLabel] = useState();\n const addToBagAvailable = useMemo(() => {\n var _a, _b, _c, _d;\n return (!window.unshoppable &&\n !(current === null || current === void 0 ? void 0 : current.isBoutiqueExclusive) &&\n (!currentSize || (currentSize === null || currentSize === void 0 ? void 0 : currentSize.selectable)) &&\n !((_a = current === null || current === void 0 ? void 0 : current.availability) === null || _a === void 0 ? void 0 : _a.isOutOfStock) &&\n (current === null || current === void 0 ? void 0 : current.isComingSoon) != 2 &&\n !(current === null || current === void 0 ? void 0 : current.notShoppable) &&\n (((_b = current === null || current === void 0 ? void 0 : current.price) === null || _b === void 0 ? void 0 : _b.type) || ((_d = (_c = current === null || current === void 0 ? void 0 : current.price) === null || _c === void 0 ? void 0 : _c.sales) === null || _d === void 0 ? void 0 : _d.value)));\n }, [current, currentSize]);\n if (current === null || current === void 0 ? void 0 : current.isMbm) {\n return (React.createElement(\"a\", { href: `${(_a = current.mbm) === null || _a === void 0 ? void 0 : _a.toConfigurator}${!!cookie.load('mbm_skipwelcome') ? '&skipWelcome=true' : ''}`, onClick: () => analytics.pdpPersonalize(current.masterId), className: \"button button--primary\" },\n React.createElement(\"span\", null, t('button.tombm'))));\n }\n return (React.createElement(React.Fragment, null,\n React.createElement(ErrorModal, { label: errorLabel, message: errorMessage, onClose: () => setErrorMessage(undefined) }),\n addToBagAvailable ? ((current === null || current === void 0 ? void 0 : current.isParfum) && ((_b = current === null || current === void 0 ? void 0 : current.parfumAttributes) === null || _b === void 0 ? void 0 : _b.suggestedProducts) && current.parfumAttributes.suggestedProducts[0].available ? (React.createElement(ProductActionPushRefill, { productId: `${current.id}${currentSize.id}`, refillId: current.parfumAttributes.suggestedProducts[0].id, buttonStyleInverted: inverted, updateErrorMessage: (msg) => setErrorMessage(msg), pushAnalytics: trackAddToBag })) : (React.createElement(ProductAddToBag, { product: current, size: currentSize, triggerOpenSize: triggerOpenSize, pushAnalytics: trackAddToBag, inverted: inverted, callback: afterAdd, updateErrorMessage: (msg) => setErrorMessage(msg), inPDP: props.inPDP, inShopTheLook: props.inShopTheLook, updateErrorTitle: setErrorLabel, stickyPDP: props.stickyPDP }))) : (React.createElement(React.Fragment, null,\n !window.unshoppable && !(current === null || current === void 0 ? void 0 : current.notShoppable) && (React.createElement(React.Fragment, null, !(current === null || current === void 0 ? void 0 : current.isBoutiqueExclusive) && (((_c = current === null || current === void 0 ? void 0 : current.price) === null || _c === void 0 ? void 0 : _c.type) || ((_e = (_d = current === null || current === void 0 ? void 0 : current.price) === null || _d === void 0 ? void 0 : _d.sales) === null || _e === void 0 ? void 0 : _e.value)) && (React.createElement(ProductActionNotifyMe, { product: current, color: currentColor, size: currentSize, triggerOpenSize: triggerOpenSize, from: \"pdp\", inverted: inverted })))),\n (showReserveInBoutiqueButton || window.unshoppable || (current === null || current === void 0 ? void 0 : current.notShoppable) || (current === null || current === void 0 ? void 0 : current.isBoutiqueExclusive)) &&\n ((current === null || current === void 0 ? void 0 : current.isComingSoon) != 2 || ((current === null || current === void 0 ? void 0 : current.isComingSoon) == 2 && (current === null || current === void 0 ? void 0 : current.isComingSoonAutomatic) && props.inPDP) || (current === null || current === void 0 ? void 0 : current.forceSoldOut)) && (React.createElement(ProductFindInBoutique, { product: current, size: currentSize, color: currentColor, sizeVariations: sizeVariations, colourVariations: colourVariations, inverted: inverted, secondary: !window.unshoppable && !(current === null || current === void 0 ? void 0 : current.notShoppable) && !(current === null || current === void 0 ? void 0 : current.isBoutiqueExclusive), onlyButton: props.stickyPDP }))))));\n};\nexport default ProductButton;\n","import ModalDialog from '@ui/modal/ModalDialog';\nimport analytics from '@utils/analytics';\nimport useBreakpoint from '@utils/useBreakpoint';\nimport classNames from 'classnames';\nimport React, { Suspense, useEffect, useMemo, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport ProductButton from './ProductButton';\nimport ProductPrice from './ProductPrice';\nimport ProductSelectionColorExpanded from './ProductSelectionColorExpanded';\nimport ProductSelectionSizesExpanded from './ProductSelectionSizesExpanded';\nconst ExpressPaymentsModal = React.lazy(() => import('@components/bag/ExpressPaymentsModal'));\nconst ProductStickyTray = (props) => {\n var _a, _b, _c;\n const { t } = useTranslation();\n const { show, current, currentSize, currentColor, variantPrice, showReserveInBoutiqueButton, sizeVariations, colourVariations, trackAddToBag, sizeSelectorError, updateSizeSelectorError, changeColor, changeSize, } = props;\n const currentBreakpoint = useBreakpoint();\n const [openTray, setOpenTray] = useState(false);\n const [loaded, setLoaded] = useState(false);\n const stickyBar = useRef();\n useEffect(() => {\n if (!show) {\n setOpenTray(false);\n }\n }, [show]);\n useEffect(() => {\n console.info('currentBreakpoint for ProductStickyTray: ', currentBreakpoint);\n let timerShow;\n stickyBar === null || stickyBar === void 0 ? void 0 : stickyBar.current.style.removeProperty('opacity');\n timerShow = setTimeout(() => {\n setLoaded(false);\n }, 1000);\n return () => {\n clearTimeout(timerShow);\n };\n }, [currentBreakpoint]);\n const triggerSizeSelectionOpen = () => {\n if (openTray) {\n updateSizeSelectorError(true);\n }\n setOpenTray(true);\n };\n const expressCheckoutAvailable = useMemo(() => {\n var _a, _b, _c, _d;\n return (window.expressCheckoutPDP &&\n !window.noexpresscheckout &&\n !window.unshoppable &&\n !(current === null || current === void 0 ? void 0 : current.isBoutiqueExclusive) &&\n !((_a = current === null || current === void 0 ? void 0 : current.availability) === null || _a === void 0 ? void 0 : _a.isOutOfStock) &&\n (current === null || current === void 0 ? void 0 : current.isComingSoon) != 2 &&\n !(current === null || current === void 0 ? void 0 : current.notShoppable) &&\n !(current === null || current === void 0 ? void 0 : current.isMbm) &&\n (((_b = current === null || current === void 0 ? void 0 : current.price) === null || _b === void 0 ? void 0 : _b.type) || ((_d = (_c = current === null || current === void 0 ? void 0 : current.price) === null || _c === void 0 ? void 0 : _c.sales) === null || _d === void 0 ? void 0 : _d.value)) &&\n (currentSize == undefined || (currentSize === null || currentSize === void 0 ? void 0 : currentSize.selectable)) &&\n !(current === null || current === void 0 ? void 0 : current.isGiftCard));\n }, [current, currentSize]);\n useEffect(() => {\n if (show && stickyBar.current) {\n document.body.style.setProperty('--sticky-tray-h', `${stickyBar.current.clientHeight}px`);\n }\n else {\n document.body.style.setProperty('--sticky-tray-h', `0px`);\n }\n }, [stickyBar, show]);\n return (React.createElement(\"div\", { ref: stickyBar, className: classNames('sticky-tray', { show: show || loaded }), \"aria-hidden\": !(show || loaded) || window.isDesktop() },\n React.createElement(\"div\", { className: currentBreakpoint >= window.mqObj.sm ? 'container' : undefined },\n React.createElement(\"div\", { className: \"row\" },\n React.createElement(\"div\", { className: \"col-xl-6 offset-xl-6\" },\n React.createElement(\"div\", { className: \"row sticky-tray__wrapper\" },\n React.createElement(\"div\", { className: \"col-4 col-sm-6 sticky-tray__name-price\" },\n currentBreakpoint >= window.mqObj.sm && React.createElement(\"span\", { className: \"sticky-tray__name\" }, current === null || current === void 0 ? void 0 : current.productName),\n React.createElement(\"span\", { className: \"sticky-tray__price\" },\n React.createElement(ProductPrice, { price: variantPrice || (current === null || current === void 0 ? void 0 : current.price), basePrice: (current === null || current === void 0 ? void 0 : current.isGiftCard) ? ((_b = (_a = current === null || current === void 0 ? void 0 : current.gcLimits) === null || _a === void 0 ? void 0 : _a.minValue) === null || _b === void 0 ? void 0 : _b.formattedValue) || null : null }))),\n expressCheckoutAvailable && (React.createElement(\"div\", { className: \"col-4 col-sm-3 sticky-tray__button btn-express-checkout\" },\n React.createElement(Suspense, { fallback: React.createElement(React.Fragment, null) },\n React.createElement(ExpressPaymentsModal, { currentId: current.id, size: currentSize, triggerOpenSize: triggerSizeSelectionOpen, checkouturl: props.checkouturl })))),\n React.createElement(\"div\", { className: classNames({ 'col-8 col-sm-6': !expressCheckoutAvailable }, { 'col-4 col-sm-3': expressCheckoutAvailable }, 'sticky-tray__button') },\n React.createElement(ProductButton, { current: current, currentSize: currentSize, currentColor: currentColor, colourVariations: colourVariations, sizeVariations: sizeVariations, triggerOpenSize: triggerSizeSelectionOpen, trackAddToBag: trackAddToBag, showReserveInBoutiqueButton: showReserveInBoutiqueButton, afterAdd: () => setOpenTray(false), stickyPDP: true }))),\n React.createElement(ModalDialog, { hideHeader: true, className: \"sticky-tray__modal\", overlayClassName: \"sticky-tray__overlay mobile-visible\", isOpen: openTray, onRequestClose: () => setOpenTray(false), parentSelector: () => document.querySelector('#maincontent') },\n currentBreakpoint < window.mqObj.sm && React.createElement(\"h2\", { className: \"sticky-tray__name\" }, current === null || current === void 0 ? void 0 : current.productName),\n React.createElement(ProductSelectionColorExpanded, { variationValues: colourVariations, current: current, currentId: currentColor === null || currentColor === void 0 ? void 0 : currentColor.id, onChangeVariation: (colorVariation) => {\n changeColor(colorVariation);\n } }),\n React.createElement(ProductSelectionSizesExpanded, { variationValues: sizeVariations, current: current, currentId: currentSize === null || currentSize === void 0 ? void 0 : currentSize.id, onChangeVariation: (sizeVariation) => {\n changeSize(sizeVariation);\n analytics.selectedSize(sizeVariation.displayValue, current.masterId);\n }, error: sizeSelectorError ? (((_c = current === null || current === void 0 ? void 0 : current.availability) === null || _c === void 0 ? void 0 : _c.isOutOfStock) ? t('label.outofstock') : !currentSize ? t('label.pleaseselectasize') : undefined) : undefined, trackOpenSize: () => analytics.openSize(current === null || current === void 0 ? void 0 : current.masterId), setSizeguideOpen: props === null || props === void 0 ? void 0 : props.setSizeguideOpen, showSizeFit: true, isSizeInStickyTray: true, className: \"sticky-modal\" })))))));\n};\nexport default ProductStickyTray;\n","import { useLayoutEffect, useRef } from 'react';\nimport { throttle } from '@common/utils/functions';\nfunction useResizeObserver(callback, timeOut) {\n const ref = useRef(null);\n useLayoutEffect(() => {\n const element = ref === null || ref === void 0 ? void 0 : ref.current;\n if (!element) {\n return;\n }\n const observer = new ResizeObserver(throttle((entries) => {\n callback(element, entries[0]);\n }, timeOut || 1000));\n observer.observe(element);\n return () => {\n observer.disconnect();\n };\n }, [callback, ref]);\n return ref;\n}\nexport default useResizeObserver;\n","import classNames from 'classnames';\nimport React, { forwardRef, useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nconst SelectorColorLink = forwardRef((props, ref) => {\n const { t } = useTranslation();\n const isDisabled = useMemo(() => !props.isNotAvailableSelectable && !(props === null || props === void 0 ? void 0 : props.isBoutiqueExclusive) && props.disabled, [props.disabled, props.isNotAvailableSelectable, props.isBoutiqueExclusive]);\n return (React.createElement(\"a\", { role: \"radio\", ref: ref, href: props.item.productUrl, \"aria-checked\": props.selected, className: classNames('selector__menu__item selector__menu__item--link', isDisabled && 'is-disabled', props.selected && 'selected', props.isInverted && 'inverted'), onClick: (e) => {\n e.preventDefault();\n props.onSelect(props.item);\n }, tabIndex: props.selected ? 0 : -1, onKeyDown: props.onKeyDown, \"aria-label\": `${props.label} ${isDisabled ? `- ${t('label.outofstock')}` : ''}` },\n React.createElement(\"span\", { \"aria-hidden\": \"true\", className: classNames('selector__menu__item__label') },\n props.label,\n props.enableOutofstockLabel && props.isOutOfStock ? ` - ${t('label.outofstock')}` : ''),\n props.children));\n});\nSelectorColorLink.displayName = 'SelectorColorLink';\nexport default SelectorColorLink;\n","import SelectorColorLink from '@common/ui/selector/SelectorColorLink';\nimport classNames from 'classnames';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport ColorSwatch from './ColorSwatch';\nconst ProductSelectionColorExpandedLinks = (props) => {\n var _a;\n const { t } = useTranslation();\n const linksRef = React.useRef([]);\n const radioGroupId = `select-color-pdp-${props.productUuid || props.currentId}`;\n const handleLinkSelect = (index) => {\n props.onChangeVariation(props.variationValues[index]);\n linksRef.current[index].focus();\n };\n // Manage keyboard navigation, leaving tab key out of this, in order to mockup a radio group behavior\n const handleKeyDown = (e, index) => {\n if (e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n const nextIndex = (index + 1) % linksRef.current.length;\n handleLinkSelect(nextIndex);\n }\n else if (e.key === 'ArrowLeft' || e.key === 'ArrowUp') {\n const prevIndex = (index - 1 + linksRef.current.length) % linksRef.current.length;\n handleLinkSelect(prevIndex);\n }\n else if (e.key === 'Enter') {\n handleLinkSelect(index);\n }\n };\n return (React.createElement(\"div\", { className: classNames('selector-color-expanded', { inverted: props.inverted }, props.className), \"aria-label\": t('product.selectcolor') },\n React.createElement(\"span\", { className: \"selector__label\" },\n React.createElement(\"span\", { className: \"selector__label__name\" },\n t('label.color'),\n \":\"),\n React.createElement(\"span\", { className: \"selector__label__value\" }, (_a = props.variationValues.find((variationValue) => variationValue.id === props.currentId)) === null || _a === void 0 ? void 0 : _a.displayValue)),\n React.createElement(\"div\", { className: \"selector__menu\", role: \"radiogroup\", \"aria-labelledby\": radioGroupId },\n React.createElement(\"p\", { id: radioGroupId, className: \"visually-hidden\" }, t('exchanges.changecolor')),\n props.variationValues.map((variation, index) => {\n if (props.hideOnlineExclusive && variation.isOnlineExclusive) {\n return;\n }\n return (React.createElement(SelectorColorLink, { ref: (el) => (linksRef.current[index] = el), key: variation.id, value: variation.id, label: variation.displayValue, disabled: props.alwaysAvailable || (variation === null || variation === void 0 ? void 0 : variation.isBoutiqueExclusive) ? false : !variation.selectable && !window.unshoppable && !props.boutiqueAvailability, selected: variation.value == props.currentId, isOutOfStock: variation.selectable, item: variation, onSelect: (variation) => {\n props.onChangeVariation(variation);\n }, onKeyDown: (e) => handleKeyDown(e, index), productUuid: props.productUuid, isNotAvailableSelectable: props.isNotAvailableSelectable, isBoutiqueExclusive: props.isBoutiqueExclusive },\n React.createElement(ColorSwatch, { variation: variation, ariaHidden: true }),\n !props.boutiqueAvailability && React.createElement(\"span\", { className: \"stroke\" })));\n }))));\n};\nProductSelectionColorExpandedLinks.defaultProps = {\n variationValues: [],\n};\nexport default ProductSelectionColorExpandedLinks;\n","import BookAnAppointmentMbm from '@moncler/components/appointments/BookAnAppointmentMbm';\nimport ContactDetailsEnhanced from '@moncler/components/clientService/ContactDetailsEnhanced';\nimport MbmIcons from '@moncler/components/mbm/MbmIcons';\nimport MbmNotifyMeModal from '@moncler/components/mbm/MbmNotifyMeModal';\nimport MbmOOSBox from '@moncler/components/mbm/MbmOOSBox';\nimport MbmShippingDelivery from '@moncler/components/mbm/MbmShippingDelivery';\nimport ProductPrice from '@moncler/components/product/ProductPrice';\nimport ProductReserveInBoutique from '@moncler/components/reserve/ProductActionReserveInBoutique';\nimport analytics from '@utils/analytics';\nimport api from '@utils/api';\nimport { getColorVariations, getSizeVariations, getSimilarProducts } from '@utils/product';\nimport useBreakpoint from '@utils/useBreakpoint';\nimport classNames from 'classnames';\nimport React, { Suspense, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useInView } from 'react-intersection-observer';\nimport { useSelector } from 'react-redux';\nimport { useHistory, useParams } from 'react-router-dom';\nimport NFTInfoBox from './NFTInfoBox';\nimport ShowSimilarProductInline from '@moncler/components/product/ShowSimilarProductInline';\nimport ShowSimilarProductFloating from '@moncler/components/product/ShowSimilarProductFloating';\nimport SimilarProductsDrawer from '@moncler/components/product/SimilarProductsDrawer';\nimport ProductButton from './ProductButton';\nimport ProductLabels from './ProductLabels';\nimport ProductSelectionSizesExpanded from './ProductSelectionSizesExpanded';\nimport ProductStickyTray from './ProductStickyTray';\nimport ProductWishlistToggle from './ProductWishlistToggle';\nimport Drawers from '@common/ui/drawes/Drawers';\nimport useResizeObserver from '@common/utils/useMutationObservable';\nimport useInnerWidth from '@utils/useInnerWidth';\nimport LoginModal from '@components/login/LoginModal';\nimport { freeExpressShippingCustomerGroup } from '@utils/constants';\nimport customEventBus from '@common/scripts/libs/eventBus';\nimport cookie from 'react-cookies';\nimport ProductSelectionColorExpandedLinks from './ProductSelectionColorExpandedLinks';\nconst ExpressPaymentsModal = React.lazy(() => import('@components/bag/ExpressPaymentsModal'));\nlet colorChanged = false;\nconst ProductSelection = (props) => {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n let { pid } = useParams();\n let current;\n const inLook = !!props.currentLook;\n if (inLook) {\n current = props.currentLook;\n }\n else {\n current = useSelector((state) => state.product).current;\n }\n const { t } = useTranslation();\n const currentBreakpoint = useBreakpoint();\n const currentWidth = useInnerWidth();\n const variantSizeObj = useMemo(() => (props.size ? JSON.parse(props.size) : undefined), [props.size]);\n const [variantPrice, setVariantPrice] = useState(((_b = (_a = variantSizeObj === null || variantSizeObj === void 0 ? void 0 : variantSizeObj.price) === null || _a === void 0 ? void 0 : _a.sales) === null || _b === void 0 ? void 0 : _b.value) ? variantSizeObj.price : undefined);\n const history = useHistory();\n const productSectionRef = useRef();\n const productButtonRef = useRef();\n const [showSticky, setShowSticky] = useState(false);\n const [mbmNotify, setMbmNotify] = useState(false);\n // const [collectionsModalOpen, setCollectionsModalOpen] = useState(false);\n const [contactusModalOpen, setContactusModalOpen] = useState(false);\n const [similarModalOpen, setSimilarModalOpen] = useState(false);\n const [promotionInfo, setPromotionInfo] = useState();\n const [campaignActive, setCampaingActive] = useState(false);\n const [hasFreeExpressShipping, setHasFreeExpressShipping] = useState(false);\n const [loginOpen, setLoginOpen] = useState(false);\n const [similarFloatingVisible, setSimilarFloatingVisible] = useState(true);\n const [visibilityFloatingModule, setVisibilityFloatingModule] = useState(false);\n const [enableSimilarButton, setEnableSimilarButton] = useState(false);\n const [similarProductsTiles, setSimilarProductsTiles] = useState(null);\n const floatingShowTimer = useRef();\n const isGrenoble = (_c = current === null || current === void 0 ? void 0 : current.collections) === null || _c === void 0 ? void 0 : _c.grenoble;\n const isGenius = ((_d = current === null || current === void 0 ? void 0 : current.collections) === null || _d === void 0 ? void 0 : _d.genius) && !isGrenoble;\n const isPreorder = (_e = current === null || current === void 0 ? void 0 : current.availability) === null || _e === void 0 ? void 0 : _e.preorder;\n const isMobile = currentBreakpoint < parseInt(window.mqObj.md.toString());\n const isPreOrderOrExclusive = ((_h = (_g = (_f = current === null || current === void 0 ? void 0 : current.variationAttributes) === null || _f === void 0 ? void 0 : _f.find((va) => va.id == 'color')) === null || _g === void 0 ? void 0 : _g.values) === null || _h === void 0 ? void 0 : _h.some((va) => va.preorderable)) || (current === null || current === void 0 ? void 0 : current.isBoutiqueExclusive);\n const colourVariations = useMemo(() => {\n let colors;\n colors = getColorVariations(current).map((value) => {\n return Object.assign(Object.assign({}, value), { groupPid: (current === null || current === void 0 ? void 0 : current.masterId) + value.id });\n });\n if (inLook) {\n // non è possibile selezionare altri colori nel look\n colors = colors.filter((value) => value.selected);\n }\n return colors;\n }, [current, inLook]);\n const [currentSize, setCurrentSize] = useState();\n const [currentColor, setCurrentColor] = useState();\n const [sizeSelectorError, setSizeSelectorError] = useState(false);\n const sizeVariations = useMemo(() => {\n let sizeVariations = getSizeVariations(current);\n if (sizeVariations.length == 1) {\n setCurrentSize(sizeVariations[0]);\n }\n else if (sizeVariations.find((el) => el.displayValue == (variantSizeObj === null || variantSizeObj === void 0 ? void 0 : variantSizeObj.size))) {\n setCurrentSize(sizeVariations.find((el) => el.displayValue == variantSizeObj.size));\n }\n else if (!sizeVariations.find((el) => el.id == (currentSize === null || currentSize === void 0 ? void 0 : currentSize.id))) {\n setCurrentSize(undefined);\n }\n // console.info('nascondo il messaggio di errore');\n setSizeSelectorError(false);\n return sizeVariations;\n }, [current]);\n const isOutOfStock = useMemo(() => {\n var _a;\n return (_a = current === null || current === void 0 ? void 0 : current.availability) === null || _a === void 0 ? void 0 : _a.isOutOfStock;\n }, [current]);\n const showReserveInBoutiqueButton = useMemo(() => !window.noboutiqueavailability &&\n !(current === null || current === void 0 ? void 0 : current.isOnlineExclusive) &&\n ((current === null || current === void 0 ? void 0 : current.notShoppable) || isOutOfStock || (current === null || current === void 0 ? void 0 : current.isBoutiqueExclusive)) &&\n (!(current === null || current === void 0 ? void 0 : current.isComingSoonAutomatic) || (current === null || current === void 0 ? void 0 : current.forceSoldOut)), [currentSize, current]);\n const showReserveInBoutiqueLink = useMemo(() => {\n var _a;\n return !window.unshoppable &&\n !window.noboutiqueavailability &&\n !window.isClothing &&\n !showReserveInBoutiqueButton &&\n !inLook &&\n !(current === null || current === void 0 ? void 0 : current.isOnlineExclusive) &&\n !(current === null || current === void 0 ? void 0 : current.isComingSoon) &&\n !(current === null || current === void 0 ? void 0 : current.isMbm) &&\n !((_a = current === null || current === void 0 ? void 0 : current.availability) === null || _a === void 0 ? void 0 : _a.preorder);\n }, [showReserveInBoutiqueButton, current]);\n const expressCheckoutAvailable = useMemo(() => {\n var _a, _b, _c;\n return (window.expressCheckoutPDP &&\n !window.isClothing &&\n !window.unshoppable &&\n !(current === null || current === void 0 ? void 0 : current.isBoutiqueExclusive) &&\n !isOutOfStock &&\n (current === null || current === void 0 ? void 0 : current.isComingSoon) != 2 &&\n !(current === null || current === void 0 ? void 0 : current.notShoppable) &&\n !(current === null || current === void 0 ? void 0 : current.isMbm) &&\n (((_a = current === null || current === void 0 ? void 0 : current.price) === null || _a === void 0 ? void 0 : _a.type) || ((_c = (_b = current === null || current === void 0 ? void 0 : current.price) === null || _b === void 0 ? void 0 : _b.sales) === null || _c === void 0 ? void 0 : _c.value)) &&\n !inLook);\n }, [current, currentSize]);\n useEffect(() => {\n if (currentColor && currentSize) {\n onSizeSelection(currentSize.id);\n }\n }, [currentColor]);\n useEffect(() => {\n const colorSelected = getColorVariations(current).find((v) => v.selected);\n if (colorSelected) {\n setCurrentColor(colorSelected);\n if (colorChanged) {\n colorChanged = false;\n analytics.colorSelection(colorSelected === null || colorSelected === void 0 ? void 0 : colorSelected.value, current === null || current === void 0 ? void 0 : current.masterId, props.tileType);\n }\n }\n setContactusModalOpen(false);\n setSimilarModalOpen(false);\n setVisibilityFloatingModule(false);\n checkSimilarRecommender();\n }, [current]);\n useEffect(() => {\n floatingVisibility();\n }, [props.isScrolled]);\n // Quicker reaction compared to listening to 'current'\n useEffect(() => {\n setVisibilityFloatingModule(false);\n setEnableSimilarButton(false);\n setSimilarProductsTiles(null);\n clearTimeout(floatingShowTimer.current);\n }, [pid]);\n useEffect(() => {\n if (current) {\n let wrapperContainer = document.querySelector('.product-selection');\n let heightTarget = `calc(100vh - ${(wrapperContainer === null || wrapperContainer === void 0 ? void 0 : wrapperContainer.offsetHeight) / 10}rem`;\n let productSelection = document.querySelector('.product-selection');\n productSelection.style.top = heightTarget;\n }\n window.gbotNormalizer();\n }, [current]);\n useEffect(() => {\n api.getPromotionInfo().then((data) => {\n var _a, _b;\n setPromotionInfo(data);\n if ((_a = data.activeCampaigns) === null || _a === void 0 ? void 0 : _a.includes(window.promoFreeExpressShippingNewMembers)) {\n setCampaingActive(true);\n }\n if ((_b = data.customerGroups) === null || _b === void 0 ? void 0 : _b.includes(freeExpressShippingCustomerGroup)) {\n setHasFreeExpressShipping(true);\n }\n });\n }, []);\n const floatingVisibility = () => {\n const floatingCookieOnClose = cookie.load('sfcc_floatingSimilarClosed');\n const showFloatingModuleCondition = currentBreakpoint < 1024 || window.appmode;\n if (showFloatingModuleCondition && !floatingCookieOnClose && window.scrollY > 0) {\n floatingShowTimer.current = setTimeout(() => {\n setVisibilityFloatingModule(true);\n setSimilarTiles();\n }, 5000);\n }\n };\n useEffect(() => {\n var _a, _b;\n if (currentSize && ((_b = (_a = current.variationAttributes[1]) === null || _a === void 0 ? void 0 : _a.values) === null || _b === void 0 ? void 0 : _b.length) > 1) {\n analytics.productDetailChange(current, currentSize);\n }\n }, [currentSize]);\n const changeColor = (colorVariation) => {\n if (!colorVariation) {\n return;\n }\n if (!inLook) {\n colorChanged = true;\n history.push(colorVariation.route);\n if (props.setPlayButtonVideo) {\n props.setPlayButtonVideo();\n }\n }\n };\n const changeFormat = (formatVariation) => {\n changeSize(formatVariation);\n window.location.href = formatVariation.url;\n };\n const triggerSizeSelectionOpen = () => {\n customEventBus.emit('size-selector:open', {});\n };\n const changeSize = (variation) => {\n setCurrentSize(variation);\n // qui non va cambiato il prodotto, va solo salvata la taglia selezionata che serve per l'add to cart\n if ((current === null || current === void 0 ? void 0 : current.price.type) === 'range') {\n // prezzo diverso per taglia\n api.variantPrice(`${current === null || current === void 0 ? void 0 : current.masterId}${currentColor.id}${variation.id}`).then((data) => {\n const priceData = data && Object.keys(data).length ? data : undefined;\n setVariantPrice(priceData);\n });\n }\n };\n const onSizeSelection = (size) => {\n if (size) {\n let sizeVariation = sizeVariations.find((s) => s.id == size);\n if (sizeVariation) {\n changeSize(sizeVariation);\n }\n }\n };\n const shippingDisclaimer = () => {\n return (React.createElement(\"div\", { className: \"product-selection__shipping-disclaimer\" },\n React.createElement(\"p\", { className: \"shipping-disclaimer__title\" }, t('expressshippingfree.title')),\n React.createElement(\"div\", { className: \"shipping-disclaimer_description\" },\n React.createElement(\"span\", null,\n t('expressshippingfree.description'),\n \" \"),\n (promotionInfo === null || promotionInfo === void 0 ? void 0 : promotionInfo.guest) && (React.createElement(LoginModal, { incontext: \"membersonly\", modalStatus: loginOpen, reloadPage: true, updateStatus: (status) => setLoginOpen(status), linkText: t('expressshippingfree.loginbutton'), customClass: \"button--link-button\" })))));\n };\n const lineIcons = () => {\n var _a, _b;\n return (React.createElement(React.Fragment, null,\n isGrenoble && React.createElement(\"span\", { className: \"icon--grenoble\" }),\n isGenius && React.createElement(\"span\", { className: \"icon--genius\" }),\n (current === null || current === void 0 ? void 0 : current.isMbm) && ((_a = current === null || current === void 0 ? void 0 : current.mbm) === null || _a === void 0 ? void 0 : _a.label) && React.createElement(\"img\", { src: (_b = current === null || current === void 0 ? void 0 : current.mbm) === null || _b === void 0 ? void 0 : _b.label, alt: t('mbm.title'), className: \"mbm-label\" })));\n };\n const lineIconsContainer = (className) => {\n var _a, _b, _c, _d;\n const breadcrumbs = (current === null || current === void 0 ? void 0 : current.breadcrumbs) || [];\n return (React.createElement(\"div\", { className: className },\n React.createElement(\"div\", { className: \"product-selection__line-name\" }, (breadcrumbs === null || breadcrumbs === void 0 ? void 0 : breadcrumbs.length) > 1 ? (React.createElement(React.Fragment, null, breadcrumbs.slice(1, breadcrumbs.length).map((e) => (React.createElement(\"a\", { className: !inLook ? 'in-pdp' : '', key: e === null || e === void 0 ? void 0 : e.categoryId, href: e.url }, e.htmlValue))))) : (React.createElement(\"a\", { className: !inLook ? 'in-pdp' : '', key: (_a = breadcrumbs[0]) === null || _a === void 0 ? void 0 : _a.categoryId, href: (_b = breadcrumbs[0]) === null || _b === void 0 ? void 0 : _b.url }, (_c = breadcrumbs[0]) === null || _c === void 0 ? void 0 : _c.htmlValue))),\n !inLook && (React.createElement(\"div\", { className: \"product-selection__line-labels\", id: \"product-info-heading\" },\n React.createElement(ProductLabels, { product: current, inLook: inLook, href: (_d = breadcrumbs[0]) === null || _d === void 0 ? void 0 : _d.url })))));\n };\n const sendAnalytics = () => {\n var _a, _b, _c;\n if ((_c = (_b = (_a = current.variationAttributes) === null || _a === void 0 ? void 0 : _a.find((va) => va.id == 'color')) === null || _b === void 0 ? void 0 : _b.values.find((va) => va.selected)) === null || _c === void 0 ? void 0 : _c.preorderable) {\n analytics.preorder(current === null || current === void 0 ? void 0 : current.masterId);\n analytics.preorderDetail(current, currentSize, variantPrice || (current === null || current === void 0 ? void 0 : current.price));\n }\n else {\n analytics.addToBag(current, currentSize, variantPrice || (current === null || current === void 0 ? void 0 : current.price));\n }\n };\n const sizeError = useMemo(() => {\n if (sizeSelectorError && !currentSize) {\n return t('label.pleaseselectasize');\n }\n }, [sizeSelectorError, currentSize, current === null || current === void 0 ? void 0 : current.availability]);\n // const isOutOfStock = useMemo(() => {\n // if (\n // (currentSize?.ATS < 1 || isOutOfStock) &&\n // !current?.isBoutiqueExclusive &&\n // !currentSize?.isOnlineExclusive &&\n // (current?.isComingSoon !== 2 || current?.forceSoldOut)\n // ) {\n // return (\n //
\n // \n // {t(\n // colourVariations.find((colour) => {\n // if (colour.selectable) {\n // return true;\n // }\n // return false;\n // })\n // ? 'label.itemoutofstocksize'\n // : 'label.outofstocksizeandcolour'\n // )}\n // \n //
\n // );\n // }\n // }, [sizeSelectorError, currentSize, current?.availability]);\n const checkSimilarRecommender = () => {\n var _a, _b;\n if (showSimilarProducts) {\n const similarProductConfig = (_a = current === null || current === void 0 ? void 0 : current.limitedAvailabilityConfig) === null || _a === void 0 ? void 0 : _a.similarProductConfig;\n const usingRecommender = similarProductConfig === null || similarProductConfig === void 0 ? void 0 : similarProductConfig.useRecommender;\n const isManualConfig = (_b = similarProductConfig === null || similarProductConfig === void 0 ? void 0 : similarProductConfig.productIdList) === null || _b === void 0 ? void 0 : _b.length;\n if (usingRecommender && !isManualConfig) {\n setSimilarTiles();\n }\n else {\n setEnableSimilarButton(true);\n }\n }\n };\n const setSimilarTiles = async () => {\n return getSimilarProductsTiles().then((data) => {\n setSimilarProductsTiles(data);\n setEnableSimilarButton((data === null || data === void 0 ? void 0 : data.length) > 0);\n return data;\n });\n };\n const getSimilarProductsTiles = async () => {\n return new Promise((resolve, reject) => {\n if (similarProductsTiles === null || similarProductsTiles === void 0 ? void 0 : similarProductsTiles.length) {\n return resolve(similarProductsTiles);\n }\n else if (!similarProductsTiles) {\n // We only fetch if it's null, we don't ask again if we already got an empty array\n return fetchSimilarProductsTiles().then((data) => {\n resolve(data);\n });\n }\n });\n };\n const fetchSimilarProductsTiles = async () => {\n return getSimilarProducts(current)\n .then((data) => {\n return data;\n })\n .catch(() => {\n return [];\n });\n };\n const openSimilarModal = () => {\n setSimilarTiles().then((data) => {\n setSimilarModalOpen(true);\n analytics.productImpressionsRecommended(data, 'pdp');\n analytics.seeSimilarProducts(current === null || current === void 0 ? void 0 : current.masterId);\n });\n };\n const showSimilarProducts = useMemo(() => {\n var _a;\n const isPreorderOrBoutiqueExclusive = (current === null || current === void 0 ? void 0 : current.isBoutiqueExclusive) || isPreorder;\n if ((!(current === null || current === void 0 ? void 0 : current.hasLimitedAvailability) && !(current === null || current === void 0 ? void 0 : current.isComingSoon)) || isPreorderOrBoutiqueExclusive) {\n return false;\n }\n const limitedAvailabilityConfig = current === null || current === void 0 ? void 0 : current.limitedAvailabilityConfig;\n const similarProductConfig = limitedAvailabilityConfig === null || limitedAvailabilityConfig === void 0 ? void 0 : limitedAvailabilityConfig.similarProductConfig;\n const hasSimilarProducts = (similarProductConfig === null || similarProductConfig === void 0 ? void 0 : similarProductConfig.useRecommender) ? similarProductConfig.recommenderId : (_a = similarProductConfig === null || similarProductConfig === void 0 ? void 0 : similarProductConfig.productIdList) === null || _a === void 0 ? void 0 : _a.length;\n return (limitedAvailabilityConfig === null || limitedAvailabilityConfig === void 0 ? void 0 : limitedAvailabilityConfig.showSimilarProducts) && !!hasSimilarProducts;\n }, [current, isPreorder]);\n const showSimilarProductsFloating = useMemo(() => {\n return showSimilarProducts && similarFloatingVisible;\n }, [showSimilarProducts, similarFloatingVisible]);\n const showSimilarProductsInline = useMemo(() => {\n return showSimilarProducts && !isOutOfStock;\n }, [showSimilarProducts, isOutOfStock]);\n // const showNotifyMobile = useMemo(() => {\n // if (currentBreakpoint >= window.mqObj.md) {\n // return false; // not mobile\n // }\n // if (!current?.price?.type && !current?.price?.sales?.value) {\n // return false; // no price\n // }\n // return (currentSize && !currentSize?.selectable) || isOutOfStock || current?.notShoppable;\n // }, [currentBreakpoint, current, currentSize]);\n const productSelectionBody = () => {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;\n if (!current) {\n return React.createElement(React.Fragment, null);\n }\n return (React.createElement(React.Fragment, null,\n React.createElement(\"div\", { className: \"product-selection__top-half\" },\n React.createElement(\"div\", { className: \"product-selection__heading--placeholder\" },\n React.createElement(\"div\", { className: \"product-selection__heading\" },\n (!inLook || (current === null || current === void 0 ? void 0 : current.unlock)) && lineIconsContainer('product-selection__line'),\n React.createElement(\"div\", { className: \"product-selection__name-price\" },\n React.createElement(\"h1\", { className: \"product-selection__name-price__name\" }, current === null || current === void 0 ? void 0 : current.productName),\n React.createElement(\"span\", { className: classNames(current.isGiftCard ? 'd-md-block d-none' : '', 'product-selection__name-price__price') }, (current === null || current === void 0 ? void 0 : current.isGiftCard) ? React.createElement(ProductPrice, { basePrice: ((_b = (_a = current === null || current === void 0 ? void 0 : current.gcLimits) === null || _a === void 0 ? void 0 : _a.minValue) === null || _b === void 0 ? void 0 : _b.formattedValue) || '' }) : React.createElement(ProductPrice, { price: variantPrice || (current === null || current === void 0 ? void 0 : current.price) })),\n currentBreakpoint < window.mqObj.md && currentColor && !(current === null || current === void 0 ? void 0 : current.isMbm) && !(props === null || props === void 0 ? void 0 : props.currentLook) && (React.createElement(ProductWishlistToggle, { modifierClass: \"--mobile\", color: \"black\", productSize: currentSize, productColor: currentColor, product: current, section: \"pdp\" }))))),\n React.createElement(\"div\", { className: \"product-selection__description\" },\n React.createElement(\"p\", null, (current === null || current === void 0 ? void 0 : current.longDescription) || (current === null || current === void 0 ? void 0 : current.shortDescription)),\n current.additionalShortDescription && React.createElement(\"p\", { dangerouslySetInnerHTML: { __html: current.additionalShortDescription }, className: \"mt-16\" })),\n current.isGiftCard && (React.createElement(\"div\", { className: \"gc-havecard\" },\n t('gc.haveacard'),\n \" \",\n React.createElement(\"button\", { onClick: () => props.openBalance() }, t('gc.checkbalance')))),\n ((_c = current === null || current === void 0 ? void 0 : current.availability) === null || _c === void 0 ? void 0 : _c.preorder) && ((_d = current === null || current === void 0 ? void 0 : current.availability) === null || _d === void 0 ? void 0 : _d.inStockDate) && (React.createElement(\"div\", { className: \"product-selection__preorder mt-12\", dangerouslySetInnerHTML: { __html: t('product.shippingby', { 0: (_e = current === null || current === void 0 ? void 0 : current.availability) === null || _e === void 0 ? void 0 : _e.inStockDate }) } })),\n React.createElement(\"button\", { \"aria-haspopup\": \"dialog\", onClick: () => {\n analytics.detailsAndCare('', currentColor === null || currentColor === void 0 ? void 0 : currentColor.productId);\n props.setDetailsOpen(true);\n }, className: classNames('link-anchor', { 'no-margin-bottom': (current === null || current === void 0 ? void 0 : current.isMbm) && ((_f = current.mbm) === null || _f === void 0 ? void 0 : _f.icons) }) }, current.isGiftCard ? t('gc.howitworks') : t('anchor.description')),\n current.isGiftCard && (React.createElement(\"div\", { className: \"gc-icons\" },\n React.createElement(\"div\", null,\n React.createElement(\"div\", { className: \"gc-icon-amount\" }),\n React.createElement(\"p\", null, t('gc.chooseamount'))),\n React.createElement(\"div\", null,\n React.createElement(\"div\", { className: \"gc-icon-onlinestore\" }),\n React.createElement(\"p\", null, t('gc.onlineandstore'))),\n React.createElement(\"div\", null,\n React.createElement(\"div\", { className: \"gc-icon-deliverydate\" }),\n React.createElement(\"p\", null, t('gc.deliverydate'))),\n React.createElement(\"div\", null,\n React.createElement(\"div\", { className: (current === null || current === void 0 ? void 0 : current.gcConfigValidity) ? `gc-icon-validity--${current === null || current === void 0 ? void 0 : current.gcConfigValidity}` : 'gc-icon-validity--unlimited' }),\n React.createElement(\"p\", null, (current === null || current === void 0 ? void 0 : current.gcConfigValidity) ? t('gc.useforyears', `Use it for ${current === null || current === void 0 ? void 0 : current.gcConfigValidity} years`, { 0: current === null || current === void 0 ? void 0 : current.gcConfigValidity }) : t('gc.useforunlimited'))))),\n (current === null || current === void 0 ? void 0 : current.isMbm) && ((_g = current.mbm) === null || _g === void 0 ? void 0 : _g.icons) && React.createElement(MbmIcons, { icons: (_h = current === null || current === void 0 ? void 0 : current.mbm) === null || _h === void 0 ? void 0 : _h.icons })),\n React.createElement(\"div\", { className: \"product-selection__bottom-half\" },\n !(current === null || current === void 0 ? void 0 : current.isMbm) && !current.isGiftCard && (React.createElement(\"div\", { className: classNames('product-selection__wrapper', { 'on-pdp': !inLook }) },\n React.createElement(React.Fragment, null,\n React.createElement(ProductSelectionColorExpandedLinks, { variationValues: colourVariations, current: current, currentId: currentColor === null || currentColor === void 0 ? void 0 : currentColor.id, onChangeVariation: (colorVariation) => {\n changeColor(colorVariation);\n }, productUuid: current.masterId, inverted: props.inverted, isBoutiqueExclusive: current === null || current === void 0 ? void 0 : current.isBoutiqueExclusive }),\n React.createElement(ProductSelectionSizesExpanded, { contactformurl: props === null || props === void 0 ? void 0 : props.contactformurl, variationValues: sizeVariations, current: current, currentId: currentSize === null || currentSize === void 0 ? void 0 : currentSize.id, currentSize: currentSize, onChangeVariation: (sizeVariation) => {\n if (sizeVariation.isParfum) {\n changeFormat(sizeVariation);\n }\n else {\n changeSize(sizeVariation);\n analytics.selectedSize(sizeVariation === null || sizeVariation === void 0 ? void 0 : sizeVariation.displayValue, current === null || current === void 0 ? void 0 : current.masterId);\n }\n }, error: sizeError, trackOpenSize: () => analytics.openSize(current === null || current === void 0 ? void 0 : current.masterId), onSizeSelection: onSizeSelection, setSizeguideOpen: props === null || props === void 0 ? void 0 : props.setSizeguideOpen, openSimilarModal: openSimilarModal, similarProductsTiles: similarProductsTiles, sizeguideOpen: props === null || props === void 0 ? void 0 : props.sizeguideOpen, inverted: props.inverted, showSizeFit: true, comboBox: true }),\n React.createElement(\"div\", { id: \"size-selector-combobox-container\" }),\n showSimilarProductsInline && ((similarProductsTiles === null || similarProductsTiles === void 0 ? void 0 : similarProductsTiles.length) > 0 || enableSimilarButton) && (React.createElement(ShowSimilarProductInline, { enabled: enableSimilarButton, setSimilarModalOpen: openSimilarModal })),\n visibilityFloatingModule && showSimilarProductsFloating && (similarProductsTiles === null || similarProductsTiles === void 0 ? void 0 : similarProductsTiles.length) > 0 && (React.createElement(ShowSimilarProductFloating, { product: current, onFloatingClose: () => {\n setSimilarFloatingVisible(false);\n cookie.save('sfcc_floatingSimilarClosed', 'true', { path: '/', maxAge: 1800 });\n }, similarProductsTiles: similarProductsTiles })),\n (similarProductsTiles === null || similarProductsTiles === void 0 ? void 0 : similarProductsTiles.length) > 0 && (React.createElement(SimilarProductsDrawer, { similarModalOpen: similarModalOpen, setSimilarModalOpen: setSimilarModalOpen, product: current, similarProductsTiles: similarProductsTiles }))))),\n React.createElement(React.Fragment, null,\n React.createElement(\"div\", { ref: productButtonRef, className: classNames('product-selection__ctas', { 'is-mbm': current === null || current === void 0 ? void 0 : current.isMbm }, { 'last-cta': expressCheckoutAvailable && (((current === null || current === void 0 ? void 0 : current.unlock) && window.loggedin) || !current.unlock) }) },\n React.createElement(ProductButton, { inPDP: props.inPDP, current: current, currentSize: currentSize, currentColor: currentColor, colourVariations: colourVariations, sizeVariations: sizeVariations, triggerOpenSize: triggerSizeSelectionOpen, trackAddToBag: sendAnalytics, showReserveInBoutiqueButton: showReserveInBoutiqueButton, inShopTheLook: props.shopTheLook, inverted: props.inverted }),\n currentColor && !(current === null || current === void 0 ? void 0 : current.isMbm) && !(props === null || props === void 0 ? void 0 : props.currentLook) && (React.createElement(ProductWishlistToggle, { color: \"black\", productSize: currentSize, productColor: currentColor, product: current, section: \"pdp\" }))),\n current.isGiftCard && (React.createElement(\"div\", { className: \"d-flex gc-return-info\" },\n React.createElement(\"p\", null, t('gc.notreturnable')),\n React.createElement(\"a\", { href: current.giftCardTermsURL || 'https://www.moncler.com' }, t('gc.learnmore')))),\n expressCheckoutAvailable && (((current === null || current === void 0 ? void 0 : current.unlock) && window.loggedin) || !current.unlock) && (React.createElement(\"div\", { className: \"product-selection__ctas express-payments\" },\n React.createElement(Suspense, { fallback: React.createElement(React.Fragment, null) },\n React.createElement(ExpressPaymentsModal, { currentId: current.id, size: currentSize, triggerOpenSize: triggerSizeSelectionOpen, checkouturl: props.checkouturl }))))),\n (current === null || current === void 0 ? void 0 : current.isMbm) && !isOutOfStock && React.createElement(MbmShippingDelivery, { onPDP: true, faqLink: (_j = current === null || current === void 0 ? void 0 : current.mbm) === null || _j === void 0 ? void 0 : _j.returnFaq }),\n (current === null || current === void 0 ? void 0 : current.isMbm) && isOutOfStock && (React.createElement(React.Fragment, null,\n React.createElement(MbmOOSBox, { onClick: () => {\n analytics.notifyMe(current === null || current === void 0 ? void 0 : current.id, 'pdp', true);\n setMbmNotify(true);\n } }),\n React.createElement(MbmNotifyMeModal, { isOpen: mbmNotify, onRequestClose: () => setMbmNotify(false), imgs: current === null || current === void 0 ? void 0 : current.imgs, editLink: (_k = current === null || current === void 0 ? void 0 : current.mbm) === null || _k === void 0 ? void 0 : _k.toConfigurator, productId: current.id }))),\n React.createElement(\"div\", { className: classNames('product-selection__actions-shipping', { 'on-pdp': !inLook }, !promotionInfo || !campaignActive || (window.loggedin && !hasFreeExpressShipping) ? '' : 'shipping-disclaimer-active') },\n !current.isGiftCard &&\n (!promotionInfo || !campaignActive || (window.loggedin && !hasFreeExpressShipping) ? (React.createElement(React.Fragment, null, !window.unshoppable &&\n !(current === null || current === void 0 ? void 0 : current.isBoutiqueExclusive) &&\n (!currentSize || (currentSize === null || currentSize === void 0 ? void 0 : currentSize.selectable)) &&\n !isOutOfStock &&\n (current === null || current === void 0 ? void 0 : current.isComingSoon) != 2 &&\n !(current === null || current === void 0 ? void 0 : current.notShoppable) &&\n (((_l = current === null || current === void 0 ? void 0 : current.price) === null || _l === void 0 ? void 0 : _l.type) || ((_o = (_m = current === null || current === void 0 ? void 0 : current.price) === null || _m === void 0 ? void 0 : _m.sales) === null || _o === void 0 ? void 0 : _o.value)) && (React.createElement(\"div\", { className: \"product-selection__shipping\" },\n React.createElement(\"p\", null,\n \" \",\n !(current === null || current === void 0 ? void 0 : current.isMbm) ? t('product.freeshipping') : t('product.mbmshipping')))))) : (React.createElement(React.Fragment, null, !(current === null || current === void 0 ? void 0 : current.isComingSoon) && !isPreOrderOrExclusive && shippingDisclaimer()))),\n !window.unshoppable &&\n ((!(current === null || current === void 0 ? void 0 : current.isBoutiqueExclusive) &&\n (!currentSize || (currentSize === null || currentSize === void 0 ? void 0 : currentSize.selectable)) &&\n !isOutOfStock &&\n (current === null || current === void 0 ? void 0 : current.isComingSoon) != 2 &&\n !(current === null || current === void 0 ? void 0 : current.notShoppable) &&\n (((_p = current === null || current === void 0 ? void 0 : current.price) === null || _p === void 0 ? void 0 : _p.type) || ((_r = (_q = current === null || current === void 0 ? void 0 : current.price) === null || _q === void 0 ? void 0 : _q.sales) === null || _r === void 0 ? void 0 : _r.value))) ||\n (current === null || current === void 0 ? void 0 : current.isMbm)) &&\n props.shippingAndReturns &&\n !(current === null || current === void 0 ? void 0 : current.isGiftCard) && (React.createElement(\"div\", { className: \"wrapper-cta\" },\n React.createElement(\"button\", { type: \"button\", className: \"button--link button--arrow-right product-selection__actions-shipping__contact-us\", onClick: () => {\n props.setShippingOpen(true);\n analytics.shippingAndReturnsLabel('', (current === null || current === void 0 ? void 0 : current.id) || (current === null || current === void 0 ? void 0 : current.masterId));\n }, \"aria-haspopup\": \"dialog\" }, t('label.shippingandreturns')))),\n (current === null || current === void 0 ? void 0 : current.isMbm) && (React.createElement(\"div\", null,\n React.createElement(BookAnAppointmentMbm, { modalimage: props === null || props === void 0 ? void 0 : props.mbmBaa, product: current }))),\n !current.isGiftCard && showReserveInBoutiqueLink && (React.createElement(\"div\", { className: \"wrapper-cta\" },\n React.createElement(ProductReserveInBoutique, { product: current, size: currentSize, color: currentColor, sizeVariations: sizeVariations, colourVariations: colourVariations }))),\n inLook && (React.createElement(\"div\", { className: \"wrapper-cta\" },\n React.createElement(\"a\", { href: props.currentLook.productUrl, className: \"button button--link button--arrow-right\" }, t('product.showMore')))),\n React.createElement(\"div\", { className: \"wrapper-cta\" },\n React.createElement(\"button\", { type: \"button\", className: classNames('button--link button--arrow-right product-selection__actions-shipping__contact-us', { button: inLook }), onClick: () => {\n setContactusModalOpen(true);\n analytics.contactUsLabel((current === null || current === void 0 ? void 0 : current.id) || (current === null || current === void 0 ? void 0 : current.masterId));\n }, \"aria-haspopup\": \"dialog\" }, t('label.contactus')))),\n (current === null || current === void 0 ? void 0 : current.hasNft) && (current === null || current === void 0 ? void 0 : current.nftContentAsset) && React.createElement(NFTInfoBox, { nftContentAsset: current === null || current === void 0 ? void 0 : current.nftContentAsset }))));\n };\n if (!inLook) {\n const callback = (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n // hide\n // console.info('hide');\n setShowSticky(false);\n }\n else {\n // show\n // console.info('show');\n setShowSticky(true);\n }\n });\n };\n const observer = useRef(new IntersectionObserver(callback, { threshold: 0 })).current;\n // intersection observer on stickyTray\n useEffect(() => {\n if (currentBreakpoint < window.mqObj.md) {\n setTimeout(() => {\n if (productButtonRef) {\n observer.observe(productButtonRef.current);\n return () => observer.disconnect();\n }\n }, 1000);\n }\n else {\n observer.observe(productSectionRef.current);\n return () => observer.disconnect();\n }\n }, [currentBreakpoint, window.mqObj, productButtonRef]);\n }\n const [selectionWrapperRef, inView] = useInView({\n triggerOnce: true,\n });\n // ANCHOR - Use Mutation Observable\n const onResize = useCallback((target) => {\n var _a;\n // Handle the resize event\n let productSelectionContent = document.querySelector('.product-selection-content');\n const headerHeight = (_a = document.querySelector('header')) === null || _a === void 0 ? void 0 : _a.offsetHeight;\n let heightContainer = window.innerHeight - headerHeight;\n if (productSelectionContent.offsetHeight <= heightContainer) {\n productSelectionContent.classList.add('center-alignment');\n }\n else {\n productSelectionContent.classList.remove('center-alignment');\n }\n let heightTarget = `calc(100vh - ${(target === null || target === void 0 ? void 0 : target.offsetHeight) / 10}rem`;\n let productSelection = document.querySelector('.product-selection');\n productSelection.style.top = heightTarget;\n }, [props.imageLoaded]);\n const containerRef = useResizeObserver(onResize, 300);\n /**\n * Renders the content of the modal\n */\n const renderDetails = () => {\n return (React.createElement(\"div\", { className: \"contact-us\" },\n !window.isClothing && (React.createElement(\"div\", { className: \"contact-us__desc\" },\n React.createElement(\"div\", { className: \"row justify-center\" },\n React.createElement(\"h2\", { className: \"col-12 primary-m\" }, t('label.contactus')),\n React.createElement(\"p\", { className: \"col-12 mt-16\" }, t('contactus.description'))))),\n React.createElement(\"div\", { className: classNames('contact-details contact-details--enhanced', { 'clothing-contact-details': window.isClothing }) },\n React.createElement(ContactDetailsEnhanced, { fullWidth: true, drawer: true, showEmailCta: true }))));\n };\n return (React.createElement(React.Fragment, null,\n !inLook && props.imageLoaded && (React.createElement(ProductStickyTray, { show: showSticky, current: current, currentColor: currentColor, changeColor: changeColor, currentSize: currentSize, changeSize: changeSize, colourVariations: colourVariations, sizeVariations: sizeVariations, sizeSelectorError: sizeSelectorError, updateSizeSelectorError: (e) => setSizeSelectorError(e), variantPrice: variantPrice, trackAddToBag: sendAnalytics, showReserveInBoutiqueButton: showReserveInBoutiqueButton, setSizeguideOpen: props === null || props === void 0 ? void 0 : props.setSizeguideOpen, checkouturl: props.checkouturl })),\n React.createElement(\"div\", { ref: selectionWrapperRef, className: classNames('product-selection', { container: !inLook, landing: !current || !inView || !props.imageLoaded }) },\n React.createElement(\"div\", { className: \"product-selection-content\", ref: containerRef }, inLook ? (productSelectionBody()) : (React.createElement(\"div\", { ref: productSectionRef, className: \"row justify-center align-middle\" },\n React.createElement(\"div\", { className: \"col-md-12 col-sm-8 col-12 wrapper-body-detail mq-large-case-width mq-large-case-height\" }, productSelectionBody()))))),\n React.createElement(Drawers, { contentLabel: t('label.contactus'), isOpen: contactusModalOpen, role: \"dialog\", onRequestClose: () => {\n if (location.search.includes('openVTO'))\n analytics.vtoPdpClose();\n setContactusModalOpen(false);\n } }, renderDetails())));\n};\nProductSelection.defaultProps = {\n imageLoaded: true,\n};\nexport default ProductSelection;\n","import StoreInfoBox from '@components/storelocator/StoreInfoBox';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nconst ProductBoutiqueStore = (props) => {\n const { t } = useTranslation();\n const handlePress = (e) => {\n e.preventDefault();\n props.onReservePress();\n document.querySelector('.product-reserve__main').classList.add('zoom-product');\n window.loggedin && document.querySelector('.product-reserve__detail').classList.add('zoom-product');\n };\n return (React.createElement(\"div\", { className: \"product-reserve-store\" },\n React.createElement(\"div\", { className: \"product-reserve-store__content\" },\n React.createElement(\"div\", { className: \"product-reserve-store__content__name\" },\n React.createElement(\"span\", null,\n props.index,\n \". \",\n props.store.name),\n props.store.distance && React.createElement(\"span\", { className: \"store-distance\" }, props.store.distance)),\n React.createElement(StoreInfoBox, { store: props.store }),\n window.country === 'RU' && React.createElement(\"p\", { className: \"tax-disclaimer\" }, t('store.clickAndReserve.taxdisclaimer')),\n React.createElement(\"button\", { onClick: handlePress, className: \"button button--secondary button--reserve\" },\n React.createElement(\"span\", null, t('button.reserveitem'))))));\n};\nexport default ProductBoutiqueStore;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nconst GeoOptions = {\n enableHighAccuracy: false,\n timeout: 5000,\n maximumAge: 0,\n};\nconst ProductBoutiqueStoresLine = (props) => {\n const { t } = useTranslation();\n const successLocalization = (pos) => {\n let crd = pos.coords;\n console.log('Your current position is:');\n console.log(`Latitude : ${crd.latitude}`);\n console.log(`Longitude: ${crd.longitude}`);\n console.log(`More or less ${crd.accuracy} meters.`);\n props.setGeo({ lat: pos.coords.latitude, lng: pos.coords.longitude });\n };\n const errorLocalization = (err) => {\n console.warn(`ERROR(${err.code}): ${err.message}`);\n };\n return (React.createElement(\"div\", { className: \"product-reserve__detail__line\" },\n React.createElement(\"span\", null, t('storelocator.nboutiques', { 0: props.storescount })),\n React.createElement(\"button\", { type: \"button\", className: \"use-location\", onClick: () => {\n if (navigator.geolocation) {\n navigator.geolocation.getCurrentPosition(successLocalization, errorLocalization, GeoOptions);\n }\n else {\n console.warn('Geolocation is not supported by this browser.');\n }\n } }, t('storelocator.usemylocation'))));\n};\nexport default ProductBoutiqueStoresLine;\n","import React, { useEffect, useState } from 'react';\nimport api from '@common/utils/api';\nimport ProductBoutiqueStore from './ProductBoutiqueStore';\nimport ProductBoutiqueStoresLine from './ProductBoutiqueStoresLine';\nconst ProductBoutiqueTabCountry = (props) => {\n const [stores, setStores] = useState([]);\n const [loading, setLoading] = useState(true);\n const [geo, setGeo] = useState();\n useEffect(() => {\n if (!props.pid) {\n setStores([]);\n setLoading(false);\n }\n else {\n setLoading(true);\n api.checkBoutiqueAvailability(props.pid, props.country, false, geo).then((data) => {\n if (data) {\n setStores(data.stores);\n setLoading(false);\n }\n else {\n setLoading(false);\n }\n });\n }\n }, [props.pid, props.country, geo]);\n if (loading && (stores === null || stores === void 0 ? void 0 : stores.length) == 0) {\n return React.createElement(React.Fragment, null);\n }\n if (props.pid && (stores === null || stores === void 0 ? void 0 : stores.length) == 0) {\n return props.noResults;\n }\n return (React.createElement(React.Fragment, null,\n React.createElement(ProductBoutiqueStoresLine, { storescount: stores.length, setGeo: (e) => setGeo(e) }),\n stores.map((fs, idx) => (React.createElement(ProductBoutiqueStore, { key: fs.ID, index: idx + 1, store: fs, onReservePress: () => props.onStoreSelect(fs) })))));\n};\nexport default ProductBoutiqueTabCountry;\n","import Accordion from '@ui/accordion/Accordion';\nimport AccordionItem from '@ui/accordion/AccordionItem';\nimport React from 'react';\nimport api from '@common/utils/api';\nimport ProductBoutiqueStore from './ProductBoutiqueStore';\nconst ProductBoutiqueTabEurope = (props) => {\n const [countries, setCountries] = React.useState([]);\n const [loading, setLoading] = React.useState(true);\n React.useEffect(() => {\n if (!props.pid) {\n setCountries([]);\n setLoading(false);\n }\n else {\n setLoading(true);\n api.checkBoutiqueAvailability(props.pid, props.country, true).then((data) => {\n let countrygroups = new Map();\n if (data) {\n data.stores.forEach((s) => {\n if (s.countryCode) {\n let cg = countrygroups.get(s.countryCode.value);\n if (!cg) {\n countrygroups.set(s.countryCode.value, {\n label: s.countryCode.displayValue,\n stores: [s],\n });\n }\n else {\n cg.stores.push(s);\n }\n }\n });\n setCountries(Array.from(countrygroups.values()).sort((a, b) => {\n return a.label.localeCompare(b.label);\n }));\n setLoading(false);\n }\n else {\n setLoading(false);\n }\n });\n }\n }, [props.pid, props.country]);\n if (loading) {\n return React.createElement(React.Fragment, null);\n }\n if (countries.length == 0) {\n return props.noResults;\n }\n return (React.createElement(React.Fragment, null,\n React.createElement(Accordion, null, countries.map((c) => {\n var _a;\n return (React.createElement(AccordionItem, { key: c.label, title: React.createElement(\"span\", null,\n c.label,\n React.createElement(\"sup\", null, (_a = c.stores) === null || _a === void 0 ? void 0 : _a.length)), accordionId: c.label }, c.stores.map((fs, idx) => (React.createElement(ProductBoutiqueStore, { key: fs.ID, index: idx + 1, store: fs, onReservePress: () => props.onStoreSelect(fs) })))));\n }))));\n};\nexport default ProductBoutiqueTabEurope;\n","import BookAnAppointmentDateSelection from '@moncler/components/appointments/BookAnAppointmentDateSelection';\nimport BookAnAppointmentReasonMessage from '@moncler/components/appointments/BookAnAppointmentReasonMessage';\nimport ErrorBox from '@components/common/ErrorBox';\nimport ErrorModal from '@components/error/ErrorModal';\nimport ProductAddToBag from '@moncler/components/product/ProductActionAddToBag';\nimport ProductSelectionFormats from '@moncler/components/product/ProductSelectionFormats';\nimport StoreAddress from '@components/storelocator/StoreAddress';\nimport Button from '@ui/button/Button';\nimport DwFormField from '@ui/formfield/DwFormField';\nimport DwFormFieldPhoneWithPrefix from '@ui/formfield/DwFormFieldPhoneWithPrefix';\nimport ModalDialog from '@ui/modal/ModalDialog';\nimport addressutils from '@utils/addressutils';\nimport analytics from '@utils/analytics';\nimport api from '@utils/api';\nimport { BAA } from '@utils/constants';\nimport formutils from '@utils/formutils';\nimport { getColorVariations, getProductMasterId, getSizeVariations } from '@utils/product';\nimport useBreakpoint from '@utils/useBreakpoint';\nimport createDecorator from 'final-form-focus';\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { Form } from 'react-final-form';\nimport { useTranslation } from 'react-i18next';\nimport { Tab, TabList, TabPanel, Tabs } from 'react-tabs';\nimport ProductImage from '../product/ProductImage';\nimport ProductSelectionColorExpanded from '../product/ProductSelectionColorExpanded';\nimport ProductSelectionSizesExpanded from '../product/ProductSelectionSizesExpanded';\nimport ProductBoutiqueSelected from './ProductBoutiqueSelected';\nimport ProductBoutiqueTabCountry from '@components/reserve/ProductBoutiqueTabCountry';\nimport ProductBoutiqueTabEurope from '@components/reserve/ProductBoutiqueTabEurope';\nimport LoginOrRegisterColumn from '@components/login/LoginOrRegisterColumn';\nimport useInnerWidth from '@utils/useInnerWidth';\nimport classNames from 'classnames';\nimport { debounce } from '@common/utils/functions';\nimport DigitalFlagshipSmallPromoCard from '../experience/DigitalFlagshipSmallPromoCard';\nconst focusOnError = createDecorator();\nconst ProductBoutiqueModal = (props) => {\n var _a, _b, _c, _d;\n const { t } = useTranslation();\n const currentBreakpoint = useBreakpoint();\n const [product, setProduct] = useState(props.product);\n const [currentColor, setCurrentColor] = useState();\n const [currentSize, setCurrentSize] = useState();\n const [loggedIn, setLoggedIn] = useState(window.loggedin);\n const [currentStore, setCurrentStore] = useState();\n const [requestSent, setRequestSent] = useState();\n const [formdef, setFormdef] = useState();\n const [initialValues, setInitialValues] = useState();\n const [countries, setCountries] = useState([]);\n const [errors, setErrors] = useState([]);\n const [days, setDays] = useState({});\n const [localizedProductPrice, setLocalizedProductPrice] = useState('');\n const [collections, setCollections] = useState([]);\n const [errorMessage, setErrorMessage] = useState();\n const [clickAndReserveEnabled, setClickAndReserveEnabled] = useState(false);\n const [loginEmail, setLoginEmail] = useState();\n const [firstName, setFirstName] = useState();\n const [lastName, setLastName] = useState();\n const [phone, setPhone] = useState();\n const [phonePrefix, setPhonePrefix] = useState();\n const [isDesktop, setIsDesktop] = useState(false);\n const currentWidth = useInnerWidth();\n const reserveDetailRef = useRef();\n useEffect(() => {\n if (props.isOpen) {\n api.getBoutiqueCountries().then((data) => {\n setCountries(data);\n });\n }\n }, [props.isOpen]);\n useEffect(() => {\n if (currentBreakpoint >= window.mqObj.md) {\n setIsDesktop(true);\n }\n else {\n setIsDesktop(false);\n }\n }, [currentBreakpoint]);\n useEffect(() => {\n let width = document.querySelector('.store-details');\n if (width || requestSent) {\n let emailInput = document.querySelector('.email');\n if (emailInput) {\n emailInput.style.width = width.offsetWidth + 'px';\n }\n }\n }, [currentWidth, requestSent]);\n useEffect(() => {\n var _a;\n if (isDesktop && reserveDetailRef) {\n // @ts-ignore\n (_a = reserveDetailRef === null || reserveDetailRef === void 0 ? void 0 : reserveDetailRef.current) === null || _a === void 0 ? void 0 : _a.scrollTo({ top: 0, behavior: 'smooth' });\n }\n }, [currentStore, reserveDetailRef]);\n // update internal product to avoid errors\n useEffect(() => {\n var _a;\n setProduct(props.product);\n if ((_a = props.product) === null || _a === void 0 ? void 0 : _a.isParfum) {\n setCurrentColor(getColorVariations(props.product)[0]);\n setCurrentSize(getSizeVariations(props.product)[0]);\n }\n }, [props.product]);\n // non renderizzare la modale all'apertura della pagina, non fare chiamate se non aperta\n const firstRender = useRef(true);\n useEffect(() => {\n if (props.isOpen && firstRender.current) {\n firstRender.current = false;\n api.getClickAndReserveConfig().then((data) => {\n if (data.limitOrdersEnabled) {\n setClickAndReserveEnabled(true);\n }\n });\n }\n if (props.isOpen && loggedIn) {\n getForm();\n }\n }, [props.isOpen, loggedIn]);\n const getForm = () => {\n let val = {};\n api.getForm('reserve', val).then((data) => {\n setFirstName(data.firstname.htmlValue);\n setLastName(data.lastname.htmlValue);\n setPhone(data.phone.htmlValue);\n setPhonePrefix(data.phonePrefix.htmlValue);\n setLoginEmail(data.email.htmlValue);\n val.applicationorigin = window.appmode ? 'app' : 'web';\n setInitialValues(val);\n setFormdef(data);\n if (!loggedIn) {\n setLoggedIn(true);\n }\n });\n };\n const productSelected = useMemo(() => {\n var _a, _b, _c;\n if (product === null || product === void 0 ? void 0 : product.isParfum) {\n return (_c = (_b = (_a = product.parfumAttributes) === null || _a === void 0 ? void 0 : _a.productFamily) === null || _b === void 0 ? void 0 : _b.find((parfumFormat) => parfumFormat.groupId === product.id)) === null || _c === void 0 ? void 0 : _c.id;\n }\n if (currentColor !== undefined && currentSize !== undefined) {\n return `${currentColor.productId}${currentSize.id}`;\n }\n return;\n }, [product, currentColor, currentSize]);\n const resetOnClose = useCallback(() => {\n props.onRequestClose();\n setTimeout(() => {\n setRequestSent(undefined);\n setCurrentStore(undefined);\n }, 1000);\n }, [props.onRequestClose]);\n const noResults = useMemo(() => {\n return (React.createElement(\"div\", { className: \"product-reserve__detail__text\", role: \"alert\", \"aria-live\": \"polite\" }, (currentSize === null || currentSize === void 0 ? void 0 : currentSize.selectable) && !(product === null || product === void 0 ? void 0 : product.isBoutiqueExclusive) && !(product === null || product === void 0 ? void 0 : product.notShoppable) ? (React.createElement(React.Fragment, null,\n React.createElement(\"p\", null, t('findinboutique.notavailableinboutique')),\n React.createElement(ProductAddToBag, { product: product, size: currentSize, pushAnalytics: () => {\n // analytics.quickShopAddToBag(product.masterId, product.type);\n analytics.quickShopAddToBagDetails(product, currentSize.value);\n }, callback: resetOnClose, updateErrorMessage: (msg) => setErrorMessage(msg) }),\n React.createElement(ErrorModal, { message: errorMessage, onClose: () => setErrorMessage(undefined) }))) : (React.createElement(React.Fragment, null,\n React.createElement(\"p\", null, t('findinboutique.notavailable')),\n React.createElement(Button, { type: \"button\", onClick: () => props.onRequestClose() }, t('button.backtoshopping'))))));\n }, [currentSize, product, errorMessage]);\n useEffect(() => {\n // Update the current size when it changes from outside.\n if (props === null || props === void 0 ? void 0 : props.size) {\n if (product) {\n let sizeVariation = getSizeVariations(product).find((s) => s.id == props.size.id);\n setCurrentSize(sizeVariation);\n }\n else {\n setCurrentSize(props.size);\n }\n }\n }, [props === null || props === void 0 ? void 0 : props.size]);\n useEffect(() => {\n // Update the current color when it changes from outside.\n if (props === null || props === void 0 ? void 0 : props.color) {\n setCurrentColor(props.color);\n }\n }, [props === null || props === void 0 ? void 0 : props.color]);\n const prefillValues = (values) => {\n values.productid = `${currentColor.productId}${currentSize.id}`;\n values.storeid = currentStore.ID;\n };\n useEffect(() => {\n var _a, _b, _c;\n if (currentStore) {\n analytics.reserveInBoutiqueOverlay(product.id, currentSize.id);\n }\n if (currentStore && ((_a = currentStore === null || currentStore === void 0 ? void 0 : currentStore.storeServices) === null || _a === void 0 ? void 0 : _a.bookAnAppointment)) {\n api.bookAnAppointmentSlots(currentStore === null || currentStore === void 0 ? void 0 : currentStore.ID, undefined, true).then((data) => {\n setDays(data.days);\n });\n api.bookAnAppointmentCollections(currentStore === null || currentStore === void 0 ? void 0 : currentStore.ID).then((data) => {\n setCollections(data);\n });\n }\n else {\n setDays({});\n }\n if (!currentStore) {\n try {\n (_c = (_b = document === null || document === void 0 ? void 0 : document.querySelector('.product-reserve__detail')) === null || _b === void 0 ? void 0 : _b.classList) === null || _c === void 0 ? void 0 : _c.remove('zoom-product');\n }\n catch (error) {\n console.log(error);\n }\n }\n }, [currentStore]);\n const validate = async (values) => {\n if (window.loggedin) {\n values.privacyFlag = true;\n }\n prefillValues(values);\n return await formutils.validateForm(values, formdef, 'reserve');\n };\n const onSubmit = async (values) => {\n setErrors([]);\n let err = await validate(values);\n if (err && Object.keys(err).length > 0) {\n return err;\n }\n return await api\n .reserveInBoutique(values, formdef)\n .then((data) => {\n var _a, _b, _c;\n let errors = {};\n if (!data || data.error || ((_a = data.error) === null || _a === void 0 ? void 0 : _a.length) > 0) {\n setErrors(((_b = data.error) === null || _b === void 0 ? void 0 : _b.length) > 0 ? data.error : data.serverErrors.slice(0, 1));\n console.error(((_c = data.error) === null || _c === void 0 ? void 0 : _c.length) > 0 ? data.error : data.serverErrors);\n return;\n }\n if (!formutils.checkValidationAfterSubmit(data, errors)) {\n return errors;\n }\n setLocalizedProductPrice(data.localizedPrice);\n props.mode === 'find' ? analytics.findInBoutiqueSubmit(product.id) : analytics.reserveInBoutiqueSubmit(product.id, currentSize.id, product.analyticsAttributes.dimension14);\n setRequestSent(values);\n })\n .catch((e) => console.error(e));\n };\n const setSizeCallback = (val) => {\n setCurrentSize(val);\n props.mode === 'find' ? analytics.findInBoutiqueSelectedSize(val.displayValue, product.masterId) : analytics.reserveInBoutiqueSelectedSize(val.displayValue, product.masterId);\n };\n const setColorCallback = (colorVariation) => {\n if (!colorVariation) {\n return;\n }\n setCurrentColor(colorVariation);\n api.getProductTile(getProductMasterId(product) + colorVariation.id).then((data) => {\n if (!!data) {\n setProduct(data);\n let sizeVariation = getSizeVariations(data).find((s) => s.id == currentSize.id);\n setCurrentSize(sizeVariation);\n }\n });\n };\n const updateParfumProduct = (selectedItem) => {\n if (!selectedItem) {\n return;\n }\n api.getProductTile(selectedItem.groupId).then((data) => {\n if (!!data) {\n setProduct(data);\n setCurrentColor(getColorVariations(data)[0]);\n let selectedSize = getSizeVariations(data)[0];\n setCurrentSize(selectedSize);\n props.mode === 'find'\n ? analytics.findInBoutiqueSelectedSize(selectedSize.displayValue, product.masterId)\n : analytics.reserveInBoutiqueSelectedSize(selectedSize.displayValue, product.masterId);\n }\n });\n };\n const storeChooser = useCallback(() => {\n var _a, _b;\n return countries.length > 0 ? (React.createElement(Tabs, { className: \"tabs tabs--fluid tabs--capitalize\" },\n React.createElement(TabList, { className: \"container react-tabs__tab-list\" },\n countries.find((c) => c.selected) && React.createElement(Tab, null, countries.find((c) => c.selected).label),\n window.site === 'MonclerEU' && React.createElement(Tab, null, t('label.europe'))),\n countries.find((c) => c.selected) && (React.createElement(TabPanel, null, productSelected ? (React.createElement(ProductBoutiqueTabCountry, { pid: productSelected, country: (_a = countries.find((c) => c.selected)) === null || _a === void 0 ? void 0 : _a.value, noResults: noResults, onStoreSelect: setCurrentStore })) : (React.createElement(\"div\", { className: \"product-reserve__detail__text\" },\n React.createElement(\"p\", null, t('findinboutique.selectsize')))))),\n window.site === 'MonclerEU' && (React.createElement(TabPanel, null, productSelected ? (React.createElement(ProductBoutiqueTabEurope, { pid: productSelected, country: (_b = countries.find((c) => c.selected)) === null || _b === void 0 ? void 0 : _b.value, noResults: noResults, onStoreSelect: setCurrentStore })) : (React.createElement(\"div\", { className: \"product-reserve__detail__text\" },\n React.createElement(\"p\", null, t('findinboutique.selectsize')))))))) : (React.createElement(React.Fragment, null));\n }, [productSelected, countries, errorMessage, noResults]);\n const info = (React.createElement(\"div\", { className: \"product-reserve-review\" },\n React.createElement(\"p\", { className: \"bold mb-4 primary-s\" }, product === null || product === void 0 ? void 0 : product.productName),\n (product === null || product === void 0 ? void 0 : product.isParfum) ? (React.createElement(\"p\", { className: \"option-product__size\" },\n t('label.format'),\n \" \", (_c = (_b = (_a = product === null || product === void 0 ? void 0 : product.parfumAttributes) === null || _a === void 0 ? void 0 : _a.productFamily) === null || _b === void 0 ? void 0 : _b.find((el) => el.groupId == product.id)) === null || _c === void 0 ? void 0 :\n _c.format)) : (React.createElement(React.Fragment, null,\n React.createElement(\"p\", { className: \"mb-4 wrapper-color\" },\n t('findinboutique.color', { color: currentColor === null || currentColor === void 0 ? void 0 : currentColor.displayValue }),\n (currentColor === null || currentColor === void 0 ? void 0 : currentColor.swatchColor) && (React.createElement(\"span\", { style: {\n background: currentColor === null || currentColor === void 0 ? void 0 : currentColor.swatchColor,\n height: '7px',\n width: '7px',\n } }))),\n React.createElement(\"p\", null, t('findinboutique.size', { size: currentSize === null || currentSize === void 0 ? void 0 : currentSize.displayValue }))))));\n const review = useCallback(() => {\n var _a, _b, _c, _d;\n return (React.createElement(\"div\", { className: \"product-reserve__detail__reserve-review\" },\n React.createElement(\"h2\", { className: \"primary-m\", role: \"alert\" }, t('notifyme.thankyou', { title: formutils.labelByValue(requestSent.title, formdef.title), name: requestSent.firstname, surname: requestSent === null || requestSent === void 0 ? void 0 : requestSent.lastname })),\n React.createElement(\"p\", { className: \"mt-12\" }, t('findinboutique.confirmation')),\n React.createElement(\"div\", { className: \"product-reserve__detail__review\" },\n !isDesktop && React.createElement(\"div\", { className: \"product-reserve__detail__review-divider\" }),\n React.createElement(\"div\", { className: \"product-reserve__detail__review-grid\" },\n !isDesktop && (React.createElement(React.Fragment, null,\n React.createElement(\"div\", { className: \"product-reserve__detail__review-product\" },\n React.createElement(\"p\", { className: \"primary-xxs-u mb-4\" }, product === null || product === void 0 ? void 0 : product.productName),\n (product === null || product === void 0 ? void 0 : product.isParfum) ? (React.createElement(\"p\", { className: \"option-product__size\" },\n t('label.format'),\n \" \", (_b = (_a = product === null || product === void 0 ? void 0 : product.parfumAttributes) === null || _a === void 0 ? void 0 : _a.productFamily) === null || _b === void 0 ? void 0 :\n _b.find((el) => el.groupId == product.id).format)) : (React.createElement(React.Fragment, null,\n React.createElement(\"p\", { className: \"mb-4 wrapper-color\" },\n t('findinboutique.color', { color: currentColor === null || currentColor === void 0 ? void 0 : currentColor.displayValue }),\n (currentColor === null || currentColor === void 0 ? void 0 : currentColor.swatchColor) && (React.createElement(\"span\", { style: {\n background: currentColor === null || currentColor === void 0 ? void 0 : currentColor.swatchColor,\n height: '7px',\n width: '7px',\n border: '1px solid',\n } }))),\n React.createElement(\"p\", null, t('findinboutique.size', { size: currentSize.displayValue }))))))),\n React.createElement(\"div\", { className: \"product-reserve__detail__review-divider\" }),\n React.createElement(\"div\", { className: \"product-reserve__detail__review-store\" },\n React.createElement(\"p\", { className: \"product-reserve__detail__review-header primary-xs\" }, t('findinboutique.storeinfo')),\n React.createElement(StoreAddress, { store: currentStore, showphone: true, showmail: true })),\n React.createElement(\"div\", { className: \"product-reserve__detail__review-customer\" },\n React.createElement(\"p\", { className: \"product-reserve__detail__review-header primary-xs\" }, t('findinboutique.customerinfo')),\n React.createElement(\"p\", null,\n React.createElement(\"span\", { className: \"product-reserve__detail__review-content\" }, addressutils.salutation(requestSent.firstname, requestSent.lastname, formutils.labelByValue(requestSent === null || requestSent === void 0 ? void 0 : requestSent.title, formdef === null || formdef === void 0 ? void 0 : formdef.title))),\n React.createElement(\"span\", { className: \"product-reserve__detail__review-content\" }, requestSent.email),\n React.createElement(\"span\", { className: \"product-reserve__detail__review-content\" },\n requestSent.phonePrefix,\n \" \",\n requestSent.phone)),\n (requestSent === null || requestSent === void 0 ? void 0 : requestSent.message) && (React.createElement(React.Fragment, null,\n React.createElement(\"p\", { className: \"product-reserve__detail__review-header primary-xs boutique-message\" }, t('findinboutique.message')),\n React.createElement(\"p\", null,\n React.createElement(\"span\", { className: \"product-reserve__detail__review-content\" }, requestSent.message)))))),\n currentStore.interactiveStoreModule && (React.createElement(\"div\", { className: \"digital-flaship-promocard\" },\n React.createElement(DigitalFlagshipSmallPromoCard, { store: currentStore }))),\n requestSent.bookanappointment && (requestSent === null || requestSent === void 0 ? void 0 : requestSent.date) && (React.createElement(React.Fragment, null,\n React.createElement(\"div\", { className: \"product-reserve__detail__review-divider booked-appointment\" }),\n React.createElement(\"div\", { className: \"product-reserve__detail__review-store\" },\n React.createElement(\"p\", { className: \"product-reserve__detail__review-header primary-xs\" }, t('bookanappointment.appointmentdetails')),\n React.createElement(\"span\", { className: \"product-reserve__detail__review-content\" },\n t('label.date'),\n \": \", requestSent === null || requestSent === void 0 ? void 0 :\n requestSent.date),\n React.createElement(\"span\", { className: \"product-reserve__detail__review-content\" },\n t('label.hour'),\n \": \", (_d = (_c = days[requestSent === null || requestSent === void 0 ? void 0 : requestSent.date]) === null || _c === void 0 ? void 0 : _c.find((p) => (p === null || p === void 0 ? void 0 : p.value) == requestSent.hour)) === null || _d === void 0 ? void 0 :\n _d.label))))),\n React.createElement(\"div\", { className: \"product-reserve__detail__review-divider booked-appointment\" }),\n React.createElement(Button, { type: \"button\", onClick: () => props.onRequestClose() }, t('button.backtoshopping'))));\n }, [product, requestSent]);\n const toogleChecked = (e) => {\n const checked = e.currentTarget.checked;\n if (!checked) {\n document.querySelector('.wrapper-bookanappointment').classList.add('d-none');\n }\n else {\n document.querySelector('.wrapper-bookanappointment').classList.remove('d-none');\n }\n };\n const reserveForm = useCallback(() => {\n var _a;\n return (React.createElement(\"div\", null,\n React.createElement(ProductBoutiqueSelected, { store: currentStore, onArrowBack: () => setCurrentStore(null), withBorder: true }),\n React.createElement(\"div\", { className: \"product-reserve__detail__form\" },\n React.createElement(Form, { initialValues: initialValues, onSubmit: onSubmit, validate: validate, decorators: [focusOnError], mutators: {\n global: formutils.globalMutator,\n resetHours: (args, state, utils) => {\n utils.changeValue(state, 'hour', () => null);\n },\n }, render: ({ handleSubmit, form, submitting, pristine, values }) => {\n var _a;\n return (React.createElement(\"form\", { onSubmit: handleSubmit },\n React.createElement(\"fieldset\", { className: \"fieldset--plain\" },\n React.createElement(\"div\", { className: \"ReserveForm\" },\n React.createElement(\"div\", { className: \"wrapper-info mt-16\" },\n React.createElement(\"div\", { className: \"row mb-20\" },\n React.createElement(\"span\", { className: \"primary-xs-u col-12 mb-8\" }, t('profile.namesurname')),\n React.createElement(\"span\", { className: \"bold col-12\" },\n firstName,\n \" \",\n lastName)),\n React.createElement(\"div\", { className: \"row mb-20\" },\n React.createElement(\"span\", { className: \"primary-xs-u col-12 mb-8\" }, t('profile.email')),\n React.createElement(\"span\", { className: \"bold col-12\" }, loginEmail)),\n phone && (React.createElement(\"div\", { className: \"row mb-20\" },\n React.createElement(\"span\", { className: \"primary-xs-u col-12 mb-8\" }, t('profile.phonenumber')),\n React.createElement(\"span\", { className: \"bold col-12\" },\n phonePrefix,\n \" \",\n phone))),\n !phone && (React.createElement(React.Fragment, null,\n React.createElement(\"div\", { className: \"mb-12\" },\n React.createElement(\"span\", null, t('profile.additionalinfo'))),\n React.createElement(DwFormFieldPhoneWithPrefix, { def: formdef, uniqueLabel: t('profile.phonenumber') })))),\n React.createElement(\"div\", { className: \"row\" },\n React.createElement(\"div\", { className: \"col-12\" },\n React.createElement(DwFormField, { def: formdef, name: \"message\", type: \"textarea\" }))),\n React.createElement(\"div\", { className: \"row\" },\n React.createElement(\"div\", { className: \"col-12\" },\n React.createElement(DwFormField, { def: formdef, name: \"applicationorigin\", value: values.applicationorigin, hiddenLabel: true, className: \"visually-hidden\" }))),\n ((_a = currentStore === null || currentStore === void 0 ? void 0 : currentStore.storeServices) === null || _a === void 0 ? void 0 : _a.bookAnAppointment) && Object.keys(days).length > 0 && (React.createElement(React.Fragment, null,\n React.createElement(\"p\", { className: \"bold primary-xxs\" }, t('bookanappointment.text')),\n React.createElement(\"div\", { className: \"checkbox\" },\n React.createElement(\"div\", { className: \"checkbox__field\" },\n React.createElement(\"input\", { type: \"checkbox\", id: \"bookanappointment\", defaultChecked: false, onChange: (e) => {\n toogleChecked(e);\n form.mutators.global({ bookanappointment: e.currentTarget.checked });\n } }),\n React.createElement(\"label\", { htmlFor: \"bookanappointment\" }, t('bookanappointment.checkbox')))),\n React.createElement(\"div\", { className: \"wrapper-bookanappointment mt-20 d-none\" },\n React.createElement(BookAnAppointmentDateSelection, { formdef: formdef, days: days, values: values, form: form }),\n React.createElement(\"div\", { className: \"row\" },\n React.createElement(\"div\", { className: values.reason == BAA.REASONS.DISCOVERCOLLECTION ? 'col-lg-6' : 'col-12' },\n React.createElement(DwFormField, { requiredLabel: true, def: formdef, name: \"reason\", type: \"select\" })),\n values.reason == BAA.REASONS.DISCOVERCOLLECTION && (collections === null || collections === void 0 ? void 0 : collections.length) > 0 && (React.createElement(\"div\", { className: \"col-12 col-lg-6\" },\n React.createElement(DwFormField, { def: formdef, name: \"collectionCode\", type: \"select\", options: [{ value: '', label: t('label.select') }].concat(collections) || [] })))),\n React.createElement(BookAnAppointmentReasonMessage, { formdef: formdef, values: values }),\n React.createElement(\"div\", { className: \"appointments-mandatoryField mb-20\" }, t('label.mandatoryfields')))))),\n React.createElement(\"div\", { className: \"disclaimer\" }, t('findinboutique.disclaimer'))),\n React.createElement(\"div\", { className: \"product-reserve__detail__form__submit\" },\n React.createElement(Button, { type: \"submit\", disabled: submitting, cls: ['button--primary'] }, t('button.reserveitem')))));\n } }),\n React.createElement(ErrorBox, { errors: errors }),\n React.createElement(\"p\", { className: \"product-reserve__detail__form__note\" },\n React.createElement(\"small\", { className: \"note\", dangerouslySetInnerHTML: { __html: t('notifyme.termsandconditions', { 0: (_a = document.getElementById('hidden-cookieurl')) === null || _a === void 0 ? void 0 : _a.href }) } })))));\n }, [currentStore, formdef, days, collections, errors]);\n // TODO rimuovere questa roba inutile\n const onSizeSelection = (size) => {\n console.info('size: ' + size);\n /* if (size) {\n let sizeVariation: models.VariationValue = sizeVariations.find((s) => s.id == size);\n if (sizeVariation) {\n changeSize(sizeVariation);\n }\n } */\n };\n const content = () => {\n if (!currentStore) {\n // step 0\n return storeChooser();\n }\n else if (requestSent && loggedIn) {\n // step 2\n if (currentBreakpoint < window.mqObj['md']) {\n return (React.createElement(ModalDialog, { isOpen: true, className: \"reserve-form-modal\", onRequestClose: resetOnClose, contentLabel: t('product.reserveinboutique') }, review()));\n }\n return review();\n }\n else if (loggedIn) {\n return reserveForm();\n }\n else {\n return (React.createElement(React.Fragment, null,\n React.createElement(\"div\", { className: \"divider\" }),\n React.createElement(LoginOrRegisterColumn, { privacypolicy: props.privacypolicy, updateLoggeedStatus: () => getForm(), updateLoggedin: () => getForm(), forgotpasswordform: props.forgotpasswordform, closeModal: () => props.onRequestClose, reloadComponent: true, reloadPage: true, reloadRegisterComponent: true, pageContext: \"clickandreserve\" })));\n }\n };\n // if (!props.isOpen) {\n // return <>;\n // }\n const sizeVariations = useMemo(() => {\n let sizeVariations = getSizeVariations(product);\n if (sizeVariations.length == 1) {\n setCurrentSize(sizeVariations[0]);\n }\n else if (!sizeVariations.find((el) => el.id == (currentSize === null || currentSize === void 0 ? void 0 : currentSize.id))) {\n setCurrentSize(undefined);\n }\n return sizeVariations;\n }, [product]);\n const handleResize = debounce((entries) => {\n const el = entries[0].target;\n const scrollbarWidth = el.offsetWidth - el.clientWidth;\n const modal = document.getElementById('reserveinboutique');\n if (modal) {\n modal.style.setProperty('--scrollbar-width', `${scrollbarWidth}px`);\n }\n }, 200);\n const observer = new ResizeObserver(handleResize);\n return (React.createElement(ModalDialog, { hideHeader: true, noPadding: true, closeInvertedSm: !window.enableColorBackgroundStillLife, isOpen: props.isOpen, className: classNames('reserveinboutique', { 'white-bg': window.enableColorBackgroundStillLife }), onRequestClose: () => {\n resetOnClose();\n observer.unobserve(reserveDetailRef === null || reserveDetailRef === void 0 ? void 0 : reserveDetailRef.current);\n }, contentLabel: props.title, id: \"reserveinboutique\", onAfterOpen: () => {\n if (reserveDetailRef.current) {\n observer.observe(reserveDetailRef.current);\n }\n } },\n React.createElement(\"div\", { className: \"product-reserve\" },\n React.createElement(\"div\", { className: classNames('product-reserve__main', { 'zoom-product': currentStore }, { 'is-login': !loggedIn }) },\n React.createElement(\"h1\", { className: \"dialog__title d-md-none\" }, props.title),\n !requestSent && React.createElement(\"p\", { className: \"product-reserve__main__name\" }, product === null || product === void 0 ? void 0 : product.productName),\n React.createElement(ProductImage, { img: product === null || product === void 0 ? void 0 : product.imgs, type: \"F\" }),\n !requestSent && (React.createElement(\"div\", { className: \"product-reserve__main__wrapper\" }, (product === null || product === void 0 ? void 0 : product.isParfum) ? (React.createElement(ProductSelectionFormats, { productFormats: (_d = product.parfumAttributes) === null || _d === void 0 ? void 0 : _d.productFamily, currentId: product.id, onChangeFormat: updateParfumProduct, className: props.product.imageBackground !== 'white' ? 'inverted' : '', alwaysAvailable: true, inReserve: true })) : (React.createElement(React.Fragment, null,\n React.createElement(ProductSelectionColorExpanded, { currentId: currentColor === null || currentColor === void 0 ? void 0 : currentColor.id, variationValues: props.colourVariations, onChangeVariation: setColorCallback, className: classNames('bottom-divider', { inverted: !window.enableColorBackgroundStillLife }), hideOnlineExclusive: true, alwaysAvailable: true }),\n React.createElement(ProductSelectionSizesExpanded, { current: product, currentId: currentSize === null || currentSize === void 0 ? void 0 : currentSize.id, variationValues: sizeVariations, onChangeVariation: setSizeCallback, className: window.enableColorBackgroundStillLife ? '' : 'inverted', onSizeSelection: onSizeSelection, trackOpenSize: () => (props.mode === 'find' ? analytics.findInBoutiqueOpenSize(product === null || product === void 0 ? void 0 : product.masterId) : analytics.reserveInBoutiqueOpenSize(product.masterId)), hideSizeGuide: true, alwaysAvailable: true, showSizeFit: true }))))),\n info),\n React.createElement(\"div\", { className: \"product-reserve__detail\", ref: reserveDetailRef },\n React.createElement(\"h1\", { className: \"dialog__title\" }, props.title),\n clickAndReserveEnabled && (!window.loggedin || !currentStore) && React.createElement(\"p\", { className: \"dialog_subtitle\" }, t('findinboutique.introduction')),\n \" \",\n React.createElement(React.Fragment, null, content())))));\n};\nexport default ProductBoutiqueModal;\n"],"names":["props","type","uuid","assetid","content","el","useRef","useEffect","_a","current","outerHTML","text","ref","to","from","productId","children","className","ariaLabel","ariaHidden","tabIndex","product","trackingAction","originalUuid","rest","__rest","dispatch","history","location","pathname","state","linkProps","Object","assign","mergedState","transition","direction","productUuid","viewport","scrollY","onClick","event","stopPropagation","payload","newLocation","window","search","replace","router","useContext","navigator","userAgent","indexOf","id","route","thumbStartIndex","index","onClickAction","_b","noClickTracking","pageType","sessionStorage","setItem","length","toString","analytics","actionList","linktype","scrollTo","currentTarget","closest","recommender","isTechnicalPage","region","toLowerCase","analyticsSuffix","analyticsAttributes","dimension38","isShelf","query","URLSearchParams","get","VTOcode","href","productUrl","t","store","hidename","phone","hasDOSService","email","target","rel","storeHours","map","sh","key","day","hasInStoreServices","storeServices","clickAndReserve","clickFromStore","pickUpInStore","returnInStore","exchangeInStore","distantSale","bookAnAppointment","GarmentKit","personalizationRoom","liveBoutique","videoRef","thronComponent","setThronComponent","useState","changeContent","thronID","options","onPauseCallback","onPlayCallback","onCompleteCallback","onInitCallback","onTimeUpdate","loopTimes","newThronComponent","thronMobileID","muted","autoplay","loop","lockBitrate","noskin","sessionId","Selector","selectorRef","buttonRef","menuRef","open","setOpen","hovering","setHovering","focusList","setFocusList","currentBreakpoint","currentValue","currentItem","forceCloseOnChange","selectorButton","setButtonWidth","enableOnlyOneLeftLabel","mqObj","sm","classList","add","dynamicWidth","innerWidth","style","width","remove","addEventListener","removeEventListener","_c","trackOpen","menuHeight","offsetHeight","height","focus","removeAttribute","enableOutofstockClass","useMemo","enabled","enableOutofstockLabel","swatchable","selectable","stockStatus","onMouseEnterHandler","disableHover","onMouseLeaveHandler","selectorId","onMouseEnter","onMouseLeave","onClickExtraAction","expanded","disabled","selectedLabel","hideValue","itemType","displayValue","variation","hideUnselectedLabel","unselectedLabel","error","ease","duration","initial","opacity","animate","exit","role","onBlur","e","parentNode","childNodes","contains","selectLabel","onFocus","defaultProps","SelectorItem","CLASSNAME","isDisabled","isBoutiqueExclusive","selected","isInverted","value","name","label","onChange","onSelect","item","relatedTarget","parentElement","isNotAvailableSelectable","checked","htmlFor","isOutOfStock","isQuickBuy","isSizeInStickyTray","variationGroupId","getTimezoneOffset","loc","destinationOffset","Intl","DateTimeFormat","timeZone","timeZoneName","formatToParts","Date","filter","isNegativeDestination","includes","destinationTimeParts","split","destinationNumericOffset","Number","userOffset","isNegativeUser","userTimeParts","userNumericOffset","printToUserTimezone","ISOdate","format","forceISO","timezones","userTz","resolvedOptions","actualTimezone","tzDate","setMinutes","getMinutes","formatter","dateStyle","timeStyle","language","country","toUpperCase","editISODate","ISODate","edits","date","hours","setHours","getHours","minutes","seconds","setSeconds","getSeconds","milliseconds","setMilliseconds","getMilliseconds","toISOString","imageutils","transform","url","size","alt","quality","lower","fullurl","params","push","imgQuality","imagequality","avifsupported","webpsupported","i","join","hires","this","HIRES","large","LG","medium","MD","small","SM","extraSmall","XS","aspectratio","MO","ST","Math","round","XXS","tranitionDomReady","delay","getDefferedTransition","order","thumbnail","deferredTransition","getVariationValues","attributeId","variationAttributes","find","values","getColorVariations","getSizeVariations","getProductMasterId","masterId","colorActiveId","getColorVariationActive","getProductAvailability","productAvailability","availability","inStockDate","lowStock","preorder","getSizeAvailability","isPreorder","ATS","getSimilarProducts","Promise","resolve","reject","thisProduct","similarProductsSession","getItem","locale","similarProductsSessionJSON","JSON","parse","limitedAvailabilityConfig","showSimilarProducts","similarProductConfig","productIdList","then","data","availableProducts","p","stringify","useRecommender","cancelTokenSource","anchors","recommenderId","rec","products","currentInnerWidth","setCurrentInnerWidth","documentWidth","visualViewport","getInitialInnerWidth","handleResize","currentIw","getCurrentInnerWidth","AutoplayHelper","constructor","swiperRef","setIsAutoplayActive","isAutoplayActive","setIsLocked","on","swiper","wrapperEl","transitionDuration","swipeTiming","setAutoplay","realignPausedCarousel","originalTransform","previousIndex","realIndex","activeIndex","originalTransformValues","parseInt","originalDestTranslate","floor","normalizedTranslate","abs","normalizedSnapGrid","snapGrid","val","originalDestIndex","translate","pauseCarousel","running","stop","animating","getComputedStyle","setTimeout","getTranslate","leftmostSlide","slides","leftmostSlideBounds","getBoundingClientRect","x","left","playCarousel","start","handlePauseButton","afterContainer","beforeContainer","swiperConf","withArrows","darkMode","useTranslation","autoplayHelper","setAutoplayHelper","isLocked","container","useBreakpoint","update","handleArrowHide","playClass","pauseClass","pauseButton","arrowClassName","renderBeforeContainer","slidePrev","slideNext","onMouseMove","eTargetClassList","mousewheel","disable","enable","pageX","percentage","offsetWidth","handleArrowShow","Suspense","fallback","onSwiper","onScroll","onTouchStart","onTouchEnd","slideReset","onResize","renderAfterContainer","fullWidth","isClothing","title","description","hideCountrySelector","showEmailCta","handlerAnalyticsOnClickCta","hiddenColours","variationValues","swatchLenght","linkRefs","radioGroupId","handleLinkSelect","onChangeVariation","isVariationOutOfStock","isComingSoon","currentId","preventDefault","tileType","onKeyDown","nextIndex","prevIndex","handleKeyDown","showColorName","colorName","ColorSwatch","stroke","ProductColours","setSwatchLength","noPDPLink","tileColorSwatch","lg","compressColorSwatch","ProductLink","productName","notShoppable","noRedux","selectedLook","setSelectedLook","showLook","pid","productSlide","ProductImage","img","imgs","sizes","onAfterInit","swipr","spaceBetween","slidesPerView","grabCursor","freeMode","onSlideChange","currentLook","contactformurl","shopTheLook","inverted","isMobile","_d","_e","_f","_g","tileRef","tileInfo","sbl","containerRef","productObject","hoverDifferent","introCards","isCarouselVersion","withCarousel","swatchChange","isMouseOver","setIsMouseOver","isOver","setIsOver","setProduct","status","navigation","setStatus","setNavigation","updateNavigation","handleEnter","handleExit","handleTileNavigation","setOriginalUuid","firstColorId","setFirstColorId","currentSize","setCurrentSize","currentColor","setCurrentColor","showColorSwatch","setShowColorSwatch","forceOpenSizeSelector","setForceOpenSizeSelector","isDesktop","setIsDesktop","showAddToBagMessage","setShowAddToBagMessage","shopByLookHeight","setShopByLookHeight","lookProductInfoHeight","setLookProductInfoHeight","variantPrice","setVariantPrice","openShopByLook","setOpenShopByLook","shopByLookNotify","setShopByLookNotify","loginOpen","setLoginOpen","VariationColors","v","selectedColor","colorSwatchLenght","colorVariations","componentUuid","document","querySelector","isobject","insertAdjacentHTML","einsteinutils","category","sortingrule","timeoutId","isLookCarousel","clearTimeout","undefined","sizeVariations","sizeUpdated","colourVariations","groupPid","showWishlistBtn","isMbm","hideWishlistBtn","isNotNativeInput","element","tagName","triggerClick","click","justAddedMessage","colorSelection","ProductSelectionColorLink","colorVariation","endsWith","baseId","api","changeColor","productInfo","hasAnimation","startAnimation","lookinfo","position","hidelabels","showonlyname","hideprice","isGiftCard","ProductPrice","basePrice","gcLimits","minValue","formattedValue","price","noSwatch","ProductLabels","showSizeSelection","ProductSelectionSizes","sizeVariation","changeSize","Heading","headingLevel","disableFocus","unlock","isWhiteBg","forceWhiteBg","imageBackground","enableColorBackgroundStillLife","forceStillLifeImage","paddingBottom","DwMarker","lookProducts","n","documentElement","scrollBehavior","scrollTop","bottom","handleShopByLook","customImage","src","ProductTileCarousel","genderImageSorted","isSimplified","hideCarouselPagination","tiletype","noRollover","animatedImage","collections","keys","k","collectionName","lookCarouselLabel","ModalDialog","hideHeader","noPadding","closeInvertedSm","isOpen","onRequestClose","ProductNotifyMeModal","color","inWishlist","visibility","ProductWishlistToggle","productSize","productColor","section","LoginModal","reloadPage","incontext","modalStatus","updateStatus","focusOnError","formdef","onSubmit","initialValues","validate","buttonText","showSizeSelector","setError","isParfum","parfumAttributes","productFamily","termsAndConditions","isApp","appmode","cookieUrl","getElementById","sizeSelection","useCallback","unshoppable","decorators","render","handleSubmit","form","submitting","pristine","def","autocomplete","idSuffix","cls","dangerouslySetInnerHTML","__html","refinementColor","backgroundColor","swatchColor","backgroundImage","swatchImg","onMoveToBag","errors","setErrors","amountErrors","setAmountErrors","setFormdef","setInitialValues","selectedAmount","setSelectedAmount","customVisible","setCustomVisible","messageVisible","setMessageVisible","messageLength","setMessageLength","dateVisible","setDateVisible","maxDelayedDate","setMaxDelayedDate","selectedDate","setSelectedDate","i18n","amountRef","intlNumberFormater","NumberFormat","regexRemoveMask","deliveryTimeRangeOptions","Array","_","baseTime","toLocaleTimeString","hour","minute","startTime","toLocaleLowerCase","endTime","now","selectedDateFormatted","timeOffset","toDateString","unshift","singleItemValue","sales","amount","gcConfigurations","am","number","giftCardAttributes","message","isDelayed","sendDate","deliveryDate","selectedOption","htmlValue","option","changeDelayDate","currentDate","getTime","currentTime","delayedDate","delayedTime","includeMessage","receiverEmail","recipientEmail","receiverEmailVerification","receiverName","recipientName","yourMessage","async","delayedErrors","parseFloat","maxValue","isInteger","setDate","getDate","gcMaxDelayDate","closeModal","overlayClassName","urls","isAddToBag","action","actualDate","actualDateConversion","giftCard","gcAmount","gcEmail","gcName","gcMessage","gcDate","gcUUID","UUID","gcPID","card","batch","change","formatted","altLabel","requiredLabel","maxLength","textPrefix","gcCurrency","isValidNumber","isNaN","slice","icon","preventPaste","groupClassName","hiddenLabel","fieldType","minDate","getFullYear","getMonth","maxDate","scrollIntoView","block","giftCardPurchase","setGiftCardPurchase","quickShopTimeout","addToBag","onAddStart","console","log","triggerOpenSize","updateErrorMessage","updateErrorTitle","quantityTotal","header","firstRefine","removeProperty","fromMinicart","wrapper","isSearchTile","fromAddToBag","pushAnalytics","callback","btnModifiers","noModifiers","btnClass","secondary","loggedin","loginUrl","inPDP","inShopTheLook","ariaHaspopup","va","preorderable","showOverlay","setShowOverlay","customClasses","onOpenModal","inQuickShop","triggerCloseOnly","onCloseModal","fromReserve","zoomTimerId","zoomRef","imgRef","isDragging","setIsDragging","zoomPos","setZoomPos","y","scale","onUpdate","setProperty","activateIndex","querySelectorAll","forEach","scaling","some","media","ProductVideo","inZoomModal","scaleTo","innerHeight","maxZoom","minZoom","onDragStart","onDragEnd","dragging","loading","swiperInstance","setSwiperInstance","thumbsSwiper","setThumbsSwiper","setActiveIndex","setProductUrl","isBeginning","setIsBeginning","isEnd","setIsEnd","sizeThumbsMap","sizeMainMap","md","paginationMessage","variationColor","selectedValue","prodUrl","updateProgressThumb","contentLabel","onAfterClose","scrollHeight","showPDPLink","keyboard","nextEl","prevEl","forceToAxis","thresholdDelta","allowTouchMove","effect","initialSlide","speed","thumbs","loopPreventsSlide","isZoom","onTransitionStart","onTransitionEnd","watchOverflow","watchSlidesProgress","modules","end","sticky","slideToClickedSlide","centerInsufficientSlides","threshold","slideTo","isThumb","registerAnimatedImage","unregisterAnimatedImage","defaultSizes","image","_h","_j","imageoldsuffix","imagenewsuffix","u","lowResImg","hiResImage","multipleSrc","srcs","sz","multipleSrcAvif","lazyPosterImg","lazyLowRes","altText","seoIndex","imageElement","lazyload","lazyDisabled","srcSet","onlyImage","onImageClick","hideIcon","lightIcon","showBoutiqueExclusive","showOnlineExclusive","isOnlineExclusive","showComingSoon","forceSoldOut","showPreorder","selectedVariantPreorderable","renderLabel","availabilityLabel","isLimited","showLimitedAvailabilityLabel","comingSoonLabel","boutiqueExclusiveLabel","manualLabel","overlayLabel","onlineExclusiveLabel","availabilityLabelAggregator","businessLabelAggregator","simplifiedPLPLabel","isLimitedEdition","grenoble","genius","scarcityProduct","earlyaccess","private","inLook","isMonclerCurators","comunicationTag","trim","productTag","currentInnerHeight","setCurrentInnerHeight","documentHeight","getInitialInnerHeight","getCurrentInnerHeight","currentHeight","requestSent","setRequestSent","fullproductid","setFullproductid","classHeight","setClassHeight","isFullyOutOfStock","sizeAttributes","attr","every","firstRender","prefillValues","productid","formutils","err","thankYou","SimilarProductCarousel","labelVisible","breakpoints","NotifyForm","ContactDetailsCore","hidePrefix","ErrorBox","min","defaultChecked","ProductSelectionColorExpanded","variationValue","hideOnlineExclusive","alwaysAvailable","boutiqueAvailability","ProductSelectionFormats","currentFormat","selectedProduct","productFormats","parfumFormat","available","inBag","groupId","onChangeFormat","inReserve","SelectorPopup","selectorBtnInfo","mobilePopup","isInline","vv","trackOpenSize","SelectorRadio","optionRef","c","onClickHandler","HTMLtarget","selectorItem","focusedOption","toggleModal","focusOption","extraLabel","showNotifyMe","ProductActionNotifyMe","onNotifyOpen","showSimilarProductsOOS","openSimilarModal","openModal","setOpenModal","currentProduct","countrySizes","setCountrySizes","monclerSizes","setMonclerSizes","useChartTable","sizeChart","setBottom","setScrollTop","scrollBarHeight","setScrollBarHeight","longestSizeChars","setLongestSizeChars","setIsMobile","setFocusedOption","notifyOpen","setNotifyOpen","scrollableBox","onSizeOpen","setModalOffset","hasLimitedAvailability","isManualConfig","hasProductTiles","similarProductsTiles","fittingCaption","fitting","sizeAndFit1","sizeLabel","monclerSizeIndex","rawValues","countrySize","convertedSize","isSuggestedSize","suggestedSize","isSizeDisabled","variationsLength","limitedAvailabilityDepth","hasLimitedAvailabilityDepth","hasSizeLimitedAvailability","selectorContainers","buttonContainers","buttonContainer","selectorContainer","marginTop","dir","itemList","pf","parfumLinkToSelectorItem","parfumLink","SizesBlock","scrollValue","scrollableElement","scrollableLength","clientHeight","scrollTrackHeight","scrollingDelta","bouncingBar","max","calculateScrollTop","closeModalOnClickOutside","body","buttonInHeader","subjsx","showSizeFit","createPortal","focusTrapOptions","allowOutsideClick","active","setSuggestedSize","setSizeChart","showOutofstockLabel","currentVariation","selectorHeader","selectSizeError","showSizeChart","hideSizeGuide","SizeGuide","master","onSizeguideSelection","onSizeSelection","onSizeSuggestion","suggestedsize","setSizeguideOpen","sizeguideOpen","hideBodyMeasurements","comboBox","SelectorSize","swiperModules","allowTransform","setAllowTransform","inView","triggerOnce","rootMargin","paginationWrapper","lazy","loadInSlide","lazyLoadSwiperSlides","slideNum","imagesLength","createImageAttrs","imageIndex","onSliderFirstMove","loadOnTransitionStart","a11y","slideRole","itemRoleDescriptionMessage","slideLabelMessage","prevSlideMessage","nextSlideMessage","pagination","clickable","resistance","resistanceRatio","centeredSlides","onBeforeSlideChangeStart","bullets","bullet","setAttribute","outherCarousel","exlude","activeBullet","setActiveBullet","isGenderImageSorted","carouselId","as","entry","isIntersecting","intersectionRatio","offsetLeft","PlpTilesCSS","ProductTileCarouselCSS","ProductTileCarouselSwiper","pdpVideoRef","onPause","currentButton","ariaPressed","play","pause","videoElement","currentElement","pauseElement","findElementWithPauseAttribute","playsInline","autoPlay","tronID","lockBitrateProductVideos","inGallery","errorMessage","setErrorMessage","wishlistIds","updateFunction","updatedStatus","updateWishlistStatus","items","inPublicWishlist","modifierClass","success","errorMsg","catch","res","whileTap","d","fill","onClose","carouselWrapper","setSimilarProductsTiles","shouldEnabledCarousel","visibleSlidesIndexes","setVisibleSlidesIndexes","carouselEnabled","setCarouselEnabled","carouselArrows","floatingModule","setShowFloatingModal","setExpanded","wrapperTag","disabledClass","sp","tag","disableQuickShop","gsap","ScrollTrigger","ScrollToPlugin","imageSizes","breakpoint","observer","IntersectionObserver","entries","wrapperButtonVideo","boundingClientRect","observe","disconnect","mediaUrl","ProductImageButton","clicked","total","heroGalleryImage","setSwiper","pressed","setPressed","containerBullets","isTablet","wrapperBullets","openVto","touchRatio","longSwipesRatio","edgeSwipeDetection","followFinger","onActiveIndexChange","nextSlide","pauseVideo","isPressed","getAttribute","look","lookImage","lookImageHeight","setLookImageHeight","setSize","useLayoutEffect","updateSize","useWindowSize","hideLookImage","ProductTile","autoplayConfig","disableOnInteraction","recommenderName","setRecommenderName","setTitle","setProducts","loaded","setLoaded","hasMinSlides","recommenderCallback","slot","sort","txt","createElement","innerHTML","displayMessage","pdpClass","productList","cancel","loopedSlidesActive","AutoplayCarousel","devmode","icons","faqLink","onPDP","ProductBoutiqueModal","mode","ContentAsset","nftContentAsset","setSimilarModalOpen","visible","setVisible","showFloatingModal","floatingModuleMargin","setFloatingModuleMargin","numberProductImgVisible","floatingImagesLoaded","handleFloatingVisibility","toggle","stickyBarOpen","onFloatingClose","drawerHead","subtitle","Drawers","similarModalOpen","hasBackdrop","isSticky","onlyButton","Button","longDescription","shortDescription","suggest","setSuggets","refillId","buttonStyleInverted","fromKeyboard","showReserveInBoutiqueButton","trackAddToBag","afterAdd","errorLabel","setErrorLabel","addToBagAvailable","mbm","toConfigurator","cookie","ErrorModal","suggestedProducts","msg","stickyPDP","isComingSoonAutomatic","ExpressPaymentsModal","show","sizeSelectorError","updateSizeSelectorError","openTray","setOpenTray","stickyBar","timerShow","info","triggerSizeSelectionOpen","expressCheckoutAvailable","expressCheckoutPDP","noexpresscheckout","checkouturl","parentSelector","ProductSelectionSizesExpanded","timeOut","ResizeObserver","SelectorColorLink","forwardRef","displayName","ProductSelectionColorExpandedLinks","linksRef","colorChanged","ProductSelection","variantSizeObj","useInnerWidth","productSectionRef","productButtonRef","showSticky","setShowSticky","mbmNotify","setMbmNotify","contactusModalOpen","setContactusModalOpen","promotionInfo","setPromotionInfo","campaignActive","setCampaingActive","hasFreeExpressShipping","setHasFreeExpressShipping","similarFloatingVisible","setSimilarFloatingVisible","visibilityFloatingModule","setVisibilityFloatingModule","enableSimilarButton","setEnableSimilarButton","floatingShowTimer","isGrenoble","isPreOrderOrExclusive","colors","setSizeSelectorError","noboutiqueavailability","showReserveInBoutiqueLink","colorSelected","checkSimilarRecommender","floatingVisibility","isScrolled","wrapperContainer","heightTarget","top","gbotNormalizer","activeCampaigns","promoFreeExpressShippingNewMembers","customerGroups","floatingCookieOnClose","setSimilarTiles","setPlayButtonVideo","priceData","s","sendAnalytics","sizeError","usingRecommender","getSimilarProductsTiles","fetchSimilarProductsTiles","isPreorderOrBoutiqueExclusive","hasSimilarProducts","showSimilarProductsFloating","showSimilarProductsInline","productSelectionBody","_k","_l","_m","_o","_p","_q","_r","breadcrumbs","categoryId","lineIconsContainer","additionalShortDescription","openBalance","setDetailsOpen","gcConfigValidity","formatVariation","path","maxAge","giftCardTermsURL","returnFaq","MbmNotifyMeModal","editLink","guest","linkText","customClass","shippingAndReturns","setShippingOpen","BookAnAppointmentMbm","modalimage","mbmBaa","button","hasNft","selectionWrapperRef","productSelectionContent","headerHeight","heightContainer","imageLoaded","landing","ContactDetailsEnhanced","drawer","distance","StoreInfoBox","onReservePress","GeoOptions","enableHighAccuracy","timeout","maximumAge","successLocalization","pos","crd","coords","latitude","longitude","accuracy","setGeo","lat","lng","errorLocalization","warn","code","storescount","geolocation","getCurrentPosition","stores","setStores","setLoading","geo","noResults","fs","idx","ID","onStoreSelect","countries","setCountries","countrygroups","Map","countryCode","cg","set","a","b","localeCompare","Accordion","AccordionItem","accordionId","loggedIn","setLoggedIn","currentStore","setCurrentStore","days","setDays","localizedProductPrice","setLocalizedProductPrice","setCollections","clickAndReserveEnabled","setClickAndReserveEnabled","loginEmail","setLoginEmail","firstName","setFirstName","lastName","setLastName","setPhone","phonePrefix","setPhonePrefix","currentWidth","reserveDetailRef","emailInput","behavior","limitOrdersEnabled","getForm","firstname","lastname","applicationorigin","productSelected","resetOnClose","privacyFlag","storeid","serverErrors","localizedPrice","dimension14","storeChooser","site","background","review","surname","border","StoreAddress","showphone","showmail","addressutils","interactiveStoreModule","DigitalFlagshipSmallPromoCard","bookanappointment","reserveForm","ProductBoutiqueSelected","onArrowBack","withBorder","mutators","global","resetHours","args","utils","changeValue","DwFormFieldPhoneWithPrefix","uniqueLabel","DwFormField","toogleChecked","BookAnAppointmentDateSelection","reason","concat","BookAnAppointmentReasonMessage","scrollbarWidth","clientWidth","modal","unobserve","onAfterOpen","selectedItem","selectedSize","LoginOrRegisterColumn","privacypolicy","updateLoggeedStatus","updateLoggedin","forgotpasswordform","reloadComponent","reloadRegisterComponent","pageContext"],"sourceRoot":""}