{"version":3,"file":"js/component-search-app.chunk.js","mappings":"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","sources":["webpack:///./assets/common/src/components/utils/Lazyimg.tsx","webpack:///./assets/common/src/utils/useScrollDirection.ts","webpack:///./assets/moncler/src/components/contacts/InstantMessageBox.tsx","webpack:///./assets/moncler/src/components/listing/NewBreadcrumb.tsx","webpack:///./assets/moncler/src/components/listing/PlpIntroBreadcrumb.tsx","webpack:///./assets/moncler/src/components/listing/PlpIntroTags.tsx","webpack:///./assets/moncler/src/components/listing/SortByOption.tsx","webpack:///./assets/moncler/src/components/listing/SortBy.tsx","webpack:///./assets/moncler/src/components/listing/ProductFilterCheckbox.tsx","webpack:///./assets/moncler/src/components/listing/ProductFilters.tsx","webpack:///./assets/moncler/src/components/product/ProductCarousel.tsx","webpack:///./assets/moncler/src/components/search/SearchCollections.tsx","webpack:///./assets/moncler/src/components/search/SearchNoResults.tsx","webpack:///./assets/moncler/src/components/search/SearchSuggested.tsx","webpack:///./assets/moncler/src/components/search/SearchSuggestionPhrases.tsx","webpack:///./assets/moncler/src/components/search/SearchContainer.tsx","webpack:///./assets/moncler/src/components/search/SearchApp.tsx"],"sourcesContent":["import classNames from 'classnames';\nimport React from 'react';\nconst Lazyimg = (props) => {\n return (React.createElement(\"img\", { src: \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\", \"data-src\": props.src, className: classNames('lazyload', props.className, { 'not-draggable': !props.draggable }), alt: props.alt, width: props === null || props === void 0 ? void 0 : props.width, height: props === null || props === void 0 ? void 0 : props.height, draggable: props.draggable, \"aria-hidden\": (props === null || props === void 0 ? void 0 : props.ariaHidden) ? true : false }));\n};\nexport default Lazyimg;\n","import { useEffect, useState } from 'react';\nconst SCROLL_UP = 'up';\nconst SCROLL_DOWN = 'down';\nconst useScrollDirection = ({ initialDirection, thresholdPixels, off, scrollContext } = {}) => {\n const [scrollDir, setScrollDir] = useState(initialDirection || SCROLL_DOWN);\n useEffect(() => {\n const attachScrollTo = scrollContext !== null && scrollContext !== void 0 ? scrollContext : window;\n const threshold = thresholdPixels || 0;\n let lastScrollY = scrollContext ? scrollContext.scrollTop : window.pageYOffset;\n let ticking = false;\n const updateScrollDir = () => {\n const scrollY = scrollContext ? scrollContext.scrollTop : window.pageYOffset;\n if (Math.abs(scrollY - lastScrollY) < threshold) {\n // We haven't exceeded the threshold\n ticking = false;\n return;\n }\n setScrollDir(scrollY > lastScrollY ? SCROLL_DOWN : SCROLL_UP);\n lastScrollY = scrollY > 0 ? scrollY : 0;\n ticking = false;\n };\n const onScroll = () => {\n if (!ticking) {\n window.requestAnimationFrame(updateScrollDir);\n ticking = true;\n }\n };\n /**\n * Bind the scroll handler if `off` is set to false.\n * If `off` is set to true reset the scroll direction.\n */\n !off ? attachScrollTo.addEventListener('scroll', onScroll) : setScrollDir(initialDirection || SCROLL_DOWN);\n return () => attachScrollTo.removeEventListener('scroll', onScroll);\n }, [initialDirection, thresholdPixels, off, scrollContext]);\n return scrollDir;\n};\nexport default useScrollDirection;\n","import analytics from '@utils/analytics';\nimport classNames from 'classnames';\nimport React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport ModalDialog from '@ui/modal/ModalDialog';\nconst InstantMessageBox = (props) => {\n const { t } = useTranslation();\n const [offlinePopup, setOfflinePopup] = useState(false);\n const [openModal, setOpenModal] = useState(false);\n if (!props.instantMessage || (window.country == 'JP' && window.faf)) {\n return React.createElement(React.Fragment, null);\n }\n const instantMessageLink = (classname, labelkey) => {\n if (props.instantMessage == 'whatsapp') {\n let whatsappnumber = props.instantMessageNumber;\n return (React.createElement(\"a\", { className: classNames(classname, 'whatsapp'), href: `https://wa.me/${whatsappnumber}`, target: \"_blank\", onClick: () => {\n analytics.contactUsOne('instantmessage');\n } },\n React.createElement(\"span\", null,\n labelkey ? t(labelkey, { 0: 'WhatsApp' }) : 'WhatsApp',\n \" \")));\n }\n if (props.instantMessage == 'kakao') {\n return (React.createElement(\"a\", { className: classNames(classname, 'kakao'), href: \"http://pf.kakao.com/_TQLDC/chat\", target: \"_blank\", onClick: () => {\n analytics.contactUsOne('instantmessage');\n } },\n React.createElement(\"span\", null,\n labelkey ? t(labelkey, { 0: 'KAKAO TALK' }) : 'KAKAO TALK',\n \" \")));\n }\n if (props.instantMessage == 'line') {\n return (React.createElement(\"a\", { className: classNames(classname, 'linechat'), href: \"https://line.me/R/ti/p/@545ncrrm\", target: \"_blank\", onClick: () => {\n analytics.contactUsOne('instantmessage');\n } },\n React.createElement(\"span\", null,\n labelkey ? t(labelkey, { 0: 'Line' }) : 'Line',\n \" \")));\n }\n if (props.instantMessage == 'wechat') {\n return (React.createElement(React.Fragment, null,\n React.createElement(\"button\", { className: classNames(classname, 'wechat'), type: \"button\", onClick: (e) => {\n setOpenModal(true);\n analytics.contactUsOne('instantmessage');\n } },\n React.createElement(\"span\", null, labelkey ? t(labelkey, { 0: 'WeChat' }) : 'Line'))));\n }\n if (props.instantMessage == 'sms') {\n let smsNumber = props.instantMessageNumber;\n return (React.createElement(React.Fragment, null,\n React.createElement(\"a\", { className: classNames(classname, 'sms'), href: `sms:${smsNumber}`, target: \"_blank\", onClick: (e) => {\n analytics.contactUsOne('instantmessage');\n } },\n React.createElement(\"span\", null, labelkey ? t(labelkey, { 0: 'iMessage/SMS/MMS' }) : 'iMessage/SMS/MMS'))));\n }\n };\n if (props.type == 'footer') {\n return (React.createElement(React.Fragment, null,\n React.createElement(\"div\", null, instantMessageLink('', 'footer.clientservice.instantmessagecontact')),\n props.instantMessage && props.instantMessage == 'wechat' && (React.createElement(React.Fragment, null,\n React.createElement(ModalDialog, { overlayClassName: \"mobile-visible\", isOpen: openModal, onRequestClose: () => {\n setOpenModal(false);\n }, className: \"client-service__modal--small client-service__modal--offline modal--small\", role: \"dialog\", contentLabel: t(`clientservice.contactsdetails.qr.title.wechat`) },\n React.createElement(\"p\", null, t(`clientservice.contactsdetails.qr.subtitle.wechat`)),\n React.createElement(\"div\", { className: \"contacts-image-container\" },\n React.createElement(\"img\", { src: window.socialQrImageFolder + props.instantMessageRegion + '-' + props.instantMessage + '-qrcode.jpg', alt: \"\", width: \"152\", height: \"152\" }))),\n React.createElement(ModalDialog, { overlayClassName: \"mobile-visible\", contentLabel: t('clientservice.contactsdetails.offlinechannel.title'), className: \"client-service__modal--small client-service__modal--offline modal--small\", isOpen: offlinePopup, role: \"dialog\", onRequestClose: () => {\n setOfflinePopup(false);\n } },\n React.createElement(\"p\", null, t('clientservice.contactsdetails.offlinechannel.description')))))));\n }\n return (React.createElement(React.Fragment, null,\n React.createElement(\"div\", { className: \"row link-box line\" },\n React.createElement(\"div\", { className: \"col-lg-8 col-md-6 col-sm-7 col-xs-12\" },\n React.createElement(\"h3\", { className: \"link-box__title\" }, t('clientservice.instantmessages')),\n React.createElement(\"p\", { className: \"col-sm-10\" },\n t('contacts.instantmessagetime'),\n \" \")),\n React.createElement(\"div\", { className: \"col-lg-4 col-md-6 col-sm-5 col-xs-12 \" }, instantMessageLink('link-box__button button button--secondary', '')))));\n};\nexport default InstantMessageBox;\n","import { ListingActionTypes } from '@state/features/common.types';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useDispatch, useSelector } from 'react-redux';\nconst NewBreadcrumb = (props) => {\n const { t } = useTranslation();\n const dispatch = useDispatch();\n const { breadcrumbs } = useSelector((state) => state.search);\n const baseUrl = location.origin;\n let breadcrumbsList = [...breadcrumbs];\n breadcrumbsList.pop();\n return (React.createElement(React.Fragment, null,\n React.createElement(\"nav\", { \"aria-label\": t('navigation.breadcrumb.aria'), className: \"breadcrumb listing\" },\n React.createElement(\"ol\", null, breadcrumbsList.map((item, i) => (React.createElement(\"li\", { key: i },\n React.createElement(\"a\", { href: `${baseUrl}${item.url}`, onClick: () => {\n dispatch({\n type: ListingActionTypes.FETCH_LISTING,\n payload: {\n cgid: item.categoryId,\n resultsType: 'INIT',\n start: 0,\n },\n });\n }, className: \"breadcrumb__item\", key: item.categoryId }, item.htmlValue))))))));\n};\nexport default NewBreadcrumb;\n","import React from 'react';\nconst PlpIntroBreadcrumb = (props) => {\n return (React.createElement(React.Fragment, null,\n React.createElement(\"div\", { className: \"intro-plp__breadcrumbs\", id: \"pd-breadcrumbs\" },\n React.createElement(\"div\", { className: \"row\" },\n React.createElement(\"div\", { className: \"col-12\" },\n React.createElement(\"nav\", { className: \"breadcrumb listing\", \"aria-label\": \"Breadcrumb\" },\n React.createElement(\"ol\", null, props.breadcrumbs.map((breadcrumb, i) => {\n return (React.createElement(\"li\", { key: i }, breadcrumb.current ? (React.createElement(\"span\", { className: \"breadcrumb__item\" }, breadcrumb.title)) : (React.createElement(\"a\", { href: breadcrumb.link, className: \"breadcrumb__item\" },\n React.createElement(\"span\", null, breadcrumb.title)))));\n }))))))));\n};\nexport default PlpIntroBreadcrumb;\n","import React, { useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport analytics from '@common/utils/analytics';\nconst PlpIntroTags = (props) => {\n const { t } = useTranslation();\n const readMoreText = useRef();\n const [readMoreOpen, setReadMoreOpen] = useState(false);\n return (React.createElement(React.Fragment, null,\n React.createElement(\"div\", { className: \"row intro-plp__text-tags-wrapper\", id: \"pd-text-and-tags\" },\n React.createElement(\"div\", { className: \"col-md-6 col-lg-5 intro-plp__text-container\" },\n props.title && React.createElement(\"h1\", { className: \"intro-plp__title\" }, props.title),\n props.description && React.createElement(\"div\", { className: \"intro-plp__description\", dangerouslySetInnerHTML: { __html: props.description } }),\n props.readMore && (React.createElement(React.Fragment, null,\n React.createElement(\"span\", null, \" \"),\n React.createElement(\"div\", { className: \"intro-plp__read-more-container\" },\n React.createElement(\"div\", { className: \"intro-plp__read-more-text\", ref: readMoreText, dangerouslySetInnerHTML: { __html: props.readMore } }),\n React.createElement(\"button\", { className: \"intro-plp__read-more-btn\", onClick: () => {\n readMoreText.current.classList.toggle('open');\n setReadMoreOpen(!readMoreOpen);\n } }, t(readMoreOpen ? 'button.readless' : 'button.readmore')))))),\n props.tags && (React.createElement(\"div\", { className: \"col-md-6 col-lg-7 intro-plp__tags-container\" },\n React.createElement(\"ul\", { className: \"intro-plp__tags-list\" }, props.tags.map((tag, i) => {\n var _a;\n return (React.createElement(\"li\", { key: i, className: \"intro-plp__tag__item\" },\n React.createElement(\"a\", { className: \"tag__link\", href: tag.categoryLink || ((_a = tag.custom) === null || _a === void 0 ? void 0 : _a.categoryLink), onClick: () => analytics.visualFiltersAnalytics(tag.title_analytics || tag.title || tag.displayName) }, tag.title || tag.displayName)));\n })))))));\n};\nexport default PlpIntroTags;\n","import analytics from '@utils/analytics';\nimport React, { useEffect, useRef } from 'react';\nconst SortByOption = (props) => {\n const { index, option, currentSortOption, toggleSort, sortItems, focusOption, focusedOption, fromSearch } = props;\n const optionRef = useRef();\n const fromKeyboard = document.documentElement.getAttribute('data-whatintent') == 'keyboard';\n useEffect(() => {\n if (focusedOption === index && fromKeyboard) {\n setTimeout(() => {\n optionRef.current.focus();\n }, 50);\n }\n }, [focusedOption]);\n return (React.createElement(\"li\", { ref: optionRef, onClick: () => {\n sortItems(option);\n if (option.id != (currentSortOption === null || currentSortOption === void 0 ? void 0 : currentSortOption.id)) {\n fromSearch ? analytics.searchSortBy(option.displayName) : analytics.sortBy(option.displayName);\n }\n }, onKeyDown: (e) => {\n if (e.key == 'Enter') {\n e.preventDefault();\n sortItems(option);\n if (option.id != (currentSortOption === null || currentSortOption === void 0 ? void 0 : currentSortOption.id)) {\n fromSearch ? analytics.searchSortBy(option.displayName) : analytics.sortBy(option.displayName);\n }\n }\n else if (e.key == 'Escape') {\n e.preventDefault();\n toggleSort();\n setTimeout(() => {\n var _a;\n (_a = document.querySelector('#sortButton')) === null || _a === void 0 ? void 0 : _a.focus();\n }, 50);\n }\n else if (e.key == 'Tab') {\n toggleSort();\n }\n else if (e.key == 'ArrowUp') {\n e.preventDefault();\n // console.log('ArrowUp');\n focusOption('prev');\n }\n else if (e.key == 'ArrowDown') {\n e.preventDefault();\n // console.log('ArrowDown');\n focusOption('next');\n }\n }, role: \"option\", id: option.id, key: option.id, \"aria-selected\": option.id === (currentSortOption === null || currentSortOption === void 0 ? void 0 : currentSortOption.id), className: \"sort__option\", tabIndex: -1 },\n React.createElement(\"span\", null, option.displayName)));\n};\nexport default SortByOption;\n","import useBreakpoint from '@utils/useBreakpoint';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport SortByOption from './SortByOption';\nconst SortBy = (props) => {\n const { productSort, sortingExpanded, currentSortOption, toggleSort, sortItems, fromSearch } = props;\n const { t } = useTranslation();\n const [focusedOption, setFocusedOption] = useState();\n const currentBreakpoint = useBreakpoint();\n const isDesktop = useMemo(() => {\n return currentBreakpoint >= window.mqObj.md;\n }, [currentBreakpoint]);\n useEffect(() => {\n if (sortingExpanded) {\n setFocusedOption(0);\n }\n else {\n setFocusedOption(undefined);\n }\n }, [sortingExpanded]);\n const focusOption = (dir) => {\n if (dir == 'next') {\n setFocusedOption(focusedOption + 1 < productSort.options.length ? focusedOption + 1 : focusedOption);\n }\n else {\n setFocusedOption(focusedOption - 1 <= 0 ? 0 : focusedOption - 1);\n }\n };\n const sortingHandler = (forceHide) => {\n toggleSort(forceHide);\n // HOVER EVENTS REMOVAL ON PLP FILTERS [OE-15483]\n // if (!sortingExpanded) {\n // fromSearch ? analytics.searchSortOpen() : analytics.sortOpen();\n // }\n };\n return (React.createElement(\"div\", { className: \"sort\", onMouseEnter: () => {\n if (isDesktop) {\n sortingHandler(false);\n }\n }, onMouseLeave: () => {\n if (isDesktop) {\n sortingHandler(true);\n }\n } },\n React.createElement(\"button\", { \"aria-haspopup\": \"listbox\", id: \"sortButton\", className: \"filters__menuitem sort__button\", onKeyDown: (e) => {\n if ((sortingExpanded && e.key == 'Tab') || e.key == 'ArrowDown') {\n e.preventDefault();\n toggleSort(false);\n }\n }, \"aria-expanded\": sortingExpanded, onClick: () => {\n sortingHandler(false);\n } },\n t('refine.sortby'),\n \" \",\n React.createElement(\"span\", null, currentSortOption === null || currentSortOption === void 0 ? void 0 : currentSortOption.displayName)),\n React.createElement(\"div\", { className: \"sort__list--wrapper\" },\n React.createElement(\"ul\", { id: \"exp_elem_list\", role: \"listbox\", \"aria-labelledby\": \"sortButton\", className: \"none sort__list\" }, productSort === null || productSort === void 0 ? void 0 : productSort.options.map((option, i) => (React.createElement(SortByOption, { key: i, index: i, option: option, currentSortOption: currentSortOption, sortItems: sortItems, toggleSort: () => toggleSort(false), fromSearch: fromSearch, focusOption: focusOption, focusedOption: focusedOption })))))));\n};\nexport default SortBy;\n","import analytics from '@utils/analytics';\nimport classNames from 'classnames';\nimport React, { useEffect, useState } from 'react';\nconst ProductFilterCheckbox = (props) => {\n const { refinement, refinementValue, index } = props;\n const refinementKey = refinementValue.id + '-' + refinementValue.displayValue;\n const [checked, setChecked] = useState();\n useEffect(() => {\n setChecked(refinementValue.selected);\n }, [refinementValue.selected]);\n const onInteract = () => {\n if (refinementValue.selectable || refinementValue.selected) {\n props.addFilterValue(refinement.attributeID, refinementValue.displayValue);\n if (props.fromSearch) {\n analytics.searchRefineSecondLevel(refinement.attributeID, refinementValue.presentationId || refinementValue.displayValue);\n analytics.searchRefineMacrocategory(window.location.search);\n }\n else {\n analytics.refineSecondLevel(refinement.attributeID, refinementValue.presentationId || refinementValue.displayValue);\n analytics.refineMacrocategory(window.location.search);\n }\n }\n };\n return (React.createElement(\"li\", { key: refinementKey, className: classNames('filters__menu__menuitem', { disabled: !refinementValue.selectable }) },\n React.createElement(\"input\", { type: \"checkbox\", name: refinementValue.id, value: refinementValue.displayValue, id: refinementValue.id + '-' + refinementValue.presentationId + '-' + index, onChange: (e) => {\n setChecked(!checked);\n onInteract();\n }, checked: checked, disabled: !refinementValue.selectable && !refinementValue.selected }),\n React.createElement(\"label\", { htmlFor: refinementValue.id + '-' + refinementValue.presentationId + '-' + index }, refinementValue.link ? (React.createElement(\"a\", { onClick: (e) => {\n e.preventDefault();\n onInteract();\n }, href: refinementValue.link },\n refinementValue.type === 'color' && React.createElement(\"span\", { className: `swatch swatch--${refinementValue.presentationId}` }),\n refinementValue.displayValue)) : (React.createElement(React.Fragment, null,\n refinementValue.type === 'color' && React.createElement(\"span\", { className: `swatch swatch--${refinementValue.presentationId}` }),\n refinementValue.displayValue)))));\n};\nexport default ProductFilterCheckbox;\n","import { ListingActionTypes, SearchActionTypes } from '@state/features/common.types';\nimport analytics from '@utils/analytics';\nimport { getDefferedTransition, tranitionDomReady } from '@utils/landingAnimations';\nimport useBreakpoint from '@utils/useBreakpoint';\nimport classNames from 'classnames';\nimport { debounce } from '@utils/functions';\nimport { motion } from 'framer-motion';\nimport React, { useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useDispatch, useSelector } from 'react-redux';\nimport NewBreadcrumb from './NewBreadcrumb';\nimport PlpIntroBreadcrumb from './PlpIntroBreadcrumb';\nimport PlpIntroTags from './PlpIntroTags';\nimport SortBy from './SortBy';\nimport Lazyimg from '@components/utils/Lazyimg';\nimport ProductFilterCheckbox from './ProductFilterCheckbox';\nconst variants = {\n active: {\n opacity: 1,\n },\n inactive: {\n opacity: 0,\n },\n};\nconst ProductFilters = (props) => {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;\n const { t } = useTranslation();\n const dispatch = useDispatch();\n const { landingAnimation, productSort, refinements, category, selectedFilters, selectedSort, sizeGroups, inSearch, inputSearch, count, filteredCategory } = useSelector((state) => state.search);\n const [refineExpanded, setRefineExpanded] = useState(false);\n const [selectedRefinement, setSelectedRefinement] = useState('');\n const [sortingExpanded, setSortingExpanded] = useState(false);\n const [startAnimation, setStartAnimation] = useState(false);\n const [categoryRefinement, setCategoryRefinement] = useState();\n const [refineContainerPLPHeight, setRefineContainerPLPHeight] = useState();\n const [lastValidRefinements, setLastValidRefinements] = useState();\n const isFromAPP = window.appmode;\n const getRefinementType = () => {\n return inSearch ? SearchActionTypes.UPDATE_SEARCH_REFINEMENT : ListingActionTypes.UPDATE_LISTING_REFINEMENT;\n };\n useEffect(() => {\n if (props.setFilterExpandedStatus) {\n props.setFilterExpandedStatus(refineExpanded);\n }\n }, [refineExpanded]);\n useEffect(() => {\n if (landingAnimation) {\n setTimeout(() => {\n setStartAnimation(true);\n // aspetto 550ms che รจ il tempo dell'animazione al dom loaded\n }, 750);\n }\n }, [landingAnimation]);\n const headerRef = useRef(document.querySelector('header')).current;\n const bodyRef = useRef(document.querySelector('body')).current;\n const refineRef = useRef(null);\n const refineContainerPLP = useRef(null);\n const refinePLPHeading = useRef(null);\n const wrapperRefineButton = useRef(null);\n const currentBreakpoint = useBreakpoint();\n const isDesktop = useMemo(() => {\n return currentBreakpoint >= window.mqObj.md;\n }, [currentBreakpoint]);\n const getTopVal = () => {\n const elPaddingTop = parseInt(window.getComputedStyle(refineContainerPLP.current).paddingTop);\n const elPaddingBot = parseInt(window.getComputedStyle(refineContainerPLP.current).paddingBottom);\n const isDesktop = currentBreakpoint >= window.mqObj.md;\n let topVal = headerRef ? headerRef.offsetHeight : 0;\n if (isDesktop) {\n topVal -= refineContainerPLP.current.offsetHeight;\n }\n else if (props.plpintro) {\n topVal -= refinePLPHeading.current.offsetHeight + elPaddingTop - elPaddingBot;\n }\n else if (isFromAPP) {\n topVal = 0;\n }\n else if (wrapperRefineButton.current) {\n topVal -= refineContainerPLP.current.offsetHeight - wrapperRefineButton.current.offsetHeight - elPaddingBot * 2;\n }\n return topVal;\n };\n // willStick used in listing\n useLayoutEffect(() => {\n if (props.willStick) {\n const refineResizeObserver = new ResizeObserver(debounce(() => {\n setRefineContainerPLPHeight(getTopVal());\n }, 300));\n if (refineResizeObserver) {\n refineResizeObserver.observe(refineContainerPLP.current);\n headerRef && refineResizeObserver.observe(headerRef);\n }\n return () => {\n if (refineResizeObserver) {\n refineResizeObserver.unobserve(refineContainerPLP.current);\n headerRef && refineResizeObserver.unobserve(headerRef);\n }\n };\n }\n }, [props.willStick, refineContainerPLP, headerRef, currentBreakpoint]);\n const isMountRef = useRef(true);\n useEffect(() => {\n if (!isMountRef.current) {\n dispatch({\n type: inSearch ? SearchActionTypes.FETCH_SEARCH : ListingActionTypes.FETCH_LISTING,\n payload: {\n resultsType: inSearch ? 'REFINE' : 'INIT',\n },\n });\n // removed for OE-27869 request\n // document.documentElement.scrollTop = 0;\n setTimeout(() => {\n document.documentElement.style.removeProperty('scroll-behavior');\n }, 1000);\n }\n isMountRef.current = false;\n }, [selectedFilters, filteredCategory, selectedSort]);\n // LISTING ONLY effect che ri-esegue la ricerca al cambio filtri/sort\n // useEffect(() => {\n // if (!inSearch && !firstLoad) {\n // dispatch({\n // type: ListingActionTypes.FETCH_LISTING,\n // payload: {\n // resultsType: 'INIT',\n // },\n // });\n // document.documentElement.scrollTop = 0;\n // setTimeout(() => {\n // document.documentElement.style.removeProperty('scroll-behavior');\n // }, 1000);\n // }\n // }, [selectedFilters, selectedSort]);\n const refineIsVisibile = () => {\n return refineExpanded || isDesktop;\n };\n const refineWrapper = useRef();\n const refineContainer = useRef();\n const currentSortOption = useMemo(() => {\n return productSort === null || productSort === void 0 ? void 0 : productSort.options.find((option) => {\n let sortingRuleId_temp = option.sortingRuleId;\n let selectedSort_temp = selectedSort;\n if (sortingRuleId_temp == selectedSort_temp) {\n return true;\n }\n else {\n return false;\n }\n });\n }, [selectedSort, productSort]);\n const openRefineModal = () => {\n var _a;\n //Refine button is now only present in mobile\n // per evitare di rompere la modale dei filtri\n if (headerRef && !!headerRef.style.getPropertyValue('transform')) {\n bodyRef.style.overflowY = 'hidden';\n headerRef.style.removeProperty('transform');\n (_a = refineRef.current) === null || _a === void 0 ? void 0 : _a.style.removeProperty('transform');\n setTimeout(() => {\n setRefineExpanded(!refineExpanded);\n setSelectedRefinement('');\n setSortingExpanded(false);\n bodyRef.style.overflowY = 'auto';\n }, 500);\n }\n else {\n setRefineExpanded(!refineExpanded);\n setSelectedRefinement('');\n setSortingExpanded(false);\n }\n window.sprChat && window.sprChat('disable');\n };\n const closeRefine = () => {\n if (isDesktop) {\n refineContainer.current.style.removeProperty('height');\n }\n else {\n window.sprChat && window.sprChat('enable');\n }\n setRefineExpanded(false);\n setSelectedRefinement('');\n };\n const toggleSelectedRefinement = (refinementID, forceHide) => {\n if (isDesktop) {\n if (forceHide || refinementID === selectedRefinement) {\n closeRefine();\n }\n else {\n //Open panel\n const currentFilter = document.querySelector(`#${refinementID}`).nextElementSibling;\n refineContainer.current.style.height = `${currentFilter.offsetHeight + refineWrapper.current.offsetHeight}px`;\n setSelectedRefinement(refinementID);\n }\n setSortingExpanded(false);\n }\n else {\n setSelectedRefinement(refinementID === selectedRefinement ? '' : refinementID);\n setSortingExpanded(false);\n // scroll to start accordion\n const currentFilter = document.querySelector(`#${refinementID}`);\n if (currentFilter) {\n setTimeout(() => {\n let currentFilterParent = currentFilter.closest('li');\n if (currentFilterParent) {\n let prevCurrentFilterParent = currentFilter.previousElementSibling;\n if (prevCurrentFilterParent) {\n let topPositionPrevCurrentFilterParent = prevCurrentFilterParent.getBoundingClientRect().top;\n let scrollTopRefineContainer = refineContainer.current.scrollTop;\n refineContainer.current.scrollTo({ top: topPositionPrevCurrentFilterParent + scrollTopRefineContainer });\n }\n else {\n currentFilterParent.scrollIntoView();\n }\n }\n }, 50);\n }\n }\n };\n const openSort = () => {\n if (isDesktop) {\n document.querySelector('.sort__list--wrapper').style.height = document.querySelector('.sort__list').offsetHeight.toString() + 'px';\n }\n else {\n // handle resize\n document.querySelector('.sort__list--wrapper').style.removeProperty('height');\n }\n setSortingExpanded(true);\n };\n const closeSort = () => {\n if (isDesktop) {\n document.querySelector('.sort__list--wrapper').style.height = '0';\n }\n else {\n // handle resize\n document.querySelector('.sort__list--wrapper').style.removeProperty('height');\n }\n const sortButton = document.querySelector('#sortButton');\n sortButton === null || sortButton === void 0 ? void 0 : sortButton.classList.add('animate-arrow');\n setSortingExpanded(false);\n setTimeout(() => {\n sortButton === null || sortButton === void 0 ? void 0 : sortButton.classList.remove('animate-arrow');\n }, 200);\n };\n const toggleSort = (forceHide) => {\n if (isDesktop) {\n if (!sortingExpanded && !forceHide) {\n openSort();\n }\n else {\n closeSort();\n }\n }\n else {\n //MOBILE\n setSortingExpanded(!sortingExpanded);\n }\n setSelectedRefinement('');\n };\n const allFiltersCount = useMemo(() => {\n return selectedFilters === null || selectedFilters === void 0 ? void 0 : selectedFilters.reduce((count, filter) => {\n var _a;\n return count + (((_a = filter === null || filter === void 0 ? void 0 : filter.values) === null || _a === void 0 ? void 0 : _a.length) || 0);\n }, 0);\n }, [selectedFilters]);\n // START - Used to retrieve initial refinement tabs (ie. genders filters ) after choosing a refine and navigate into and out PDP\n useEffect(() => {\n const lastSearch = sessionStorage.getItem('lastSearch');\n const lastSearchObj = lastSearch && JSON.parse(lastSearch);\n if (lastSearchObj && lastSearchObj.inputSearch && lastSearchObj.categoryRefinement) {\n const params = new URLSearchParams(window.location.search);\n const queryParam = params.get('query');\n if (!queryParam) {\n return;\n }\n else if (lastSearchObj.inputSearch === queryParam) {\n setCategoryRefinement(lastSearchObj.categoryRefinement);\n }\n else {\n sessionStorage.setItem('lastSearch', '');\n }\n }\n }, []);\n useEffect(() => {\n var _a;\n if (inputSearch && ((_a = categoryRefinement === null || categoryRefinement === void 0 ? void 0 : categoryRefinement.values) === null || _a === void 0 ? void 0 : _a.length)) {\n sessionStorage.setItem('lastSearch', JSON.stringify({ inputSearch: inputSearch, categoryRefinement: categoryRefinement }));\n }\n }, [categoryRefinement]);\n // END - Used to retrieve initial refinement tabs (ie. genders filters ) after choosing a refine and navigate into and out PDP\n useEffect(() => {\n let categoryRefinement = refinements === null || refinements === void 0 ? void 0 : refinements.find((refinement) => refinement.isCategoryRefinement);\n if (categoryRefinement && !categoryRefinement.values.find((v) => v.selected)) {\n setCategoryRefinement(categoryRefinement); // don't change if a category has been selected\n }\n if (!props.fromSearch && refinements.length > 0) {\n setLastValidRefinements(refinements);\n }\n }, [refinements]);\n useEffect(() => {\n if (!isDesktop) {\n document.documentElement.style.setProperty('overflow', refineExpanded ? 'hidden' : '');\n }\n }, [refineExpanded]);\n // const filteredCategory: string = useMemo(() => {\n // return refinements?.find((refinement) => refinement.isCategoryRefinement)?.values?.find((v) => v.selected)?.id;\n // }, [refinements]);\n const getFilter = (filterId) => {\n return selectedFilters.find((filter) => {\n return filter.id === filterId;\n });\n };\n const filterCount = (refinement) => {\n var _a, _b;\n let count = ((_b = (_a = getFilter(refinement.attributeID)) === null || _a === void 0 ? void 0 : _a.values) === null || _b === void 0 ? void 0 : _b.length) || 0;\n // Fallback per back da PDP\n if (!count) {\n refinement.values.map((v) => {\n if (v.selected) {\n count++;\n }\n });\n }\n return !!count && React.createElement(\"sup\", { \"aria-label\": t('refine.currentlyselectedfilters') + ' ' + count }, count);\n };\n const resetFilters = (filterId) => {\n closeRefine();\n dispatch({\n type: getRefinementType(),\n payload: {\n filterAction: 'RESET',\n filterId,\n },\n });\n };\n const sortItems = (option) => {\n dispatch({\n type: getRefinementType(),\n payload: {\n filterAction: 'SORT',\n selectedSort: option.sortingRuleId,\n },\n });\n //setCurrentSortOption(option);\n if (isDesktop) {\n closeRefine();\n }\n };\n const addFilterValue = (filterId, valueId) => {\n dispatch({\n type: getRefinementType(),\n payload: {\n filterAction: 'ADD',\n filterId,\n valueId,\n },\n });\n };\n const sizeGroupFilter = (refinement, key) => {\n const sizeGroup = sizeGroups[key];\n return sizeGroup.length > 0 ? (React.createElement(\"div\", { className: \"filters__menu__group\", key: key },\n React.createElement(\"fieldset\", { className: \"fieldset--plain\" },\n React.createElement(\"legend\", { className: \"filters__menu__group-name\" }, t(`sizegroup.${key}`)),\n React.createElement(\"ul\", null, sizeGroup.map((item, i) => {\n return (React.createElement(ProductFilterCheckbox, { key: i + item.displayValue, refinement: refinement, refinementValue: item, index: i, addFilterValue: addFilterValue, fromSearch: props.fromSearch }));\n }))))) : (React.createElement(React.Fragment, null));\n };\n const onComplete = () => {\n if (!inSearch) {\n setTimeout(() => {\n // aspetto 100ms per evitare microlag\n dispatch({ type: ListingActionTypes.TOGGLE_LANDING_ANIMATION, payload: false });\n }, 100);\n }\n };\n const sendFiltersAnalytics = (refinement) => {\n if (refinement.attributeID != selectedRefinement)\n props.fromSearch\n ? analytics.searchRefineFirstLevel(refinement.attributeID ? refinement.attributeID : refinement.displayName)\n : analytics.refineFirstLevel(refinement.attributeID ? refinement.attributeID : refinement.displayName);\n };\n // HOVER EVENTS REMOVAL ON PLP FILTERS [OE-15483]\n const onFiltersHoverHandler = (refinement, forceHide) => {\n if (isDesktop) {\n toggleSelectedRefinement(refinement.attributeID, forceHide);\n // HOVER EVENTS REMOVAL ON PLP FILTERS [OE-15483]\n // sendFiltersAnalytics(refinement);\n }\n };\n const onFiltersClickHandler = (refinement) => {\n toggleSelectedRefinement(refinement.attributeID, false);\n sendFiltersAnalytics(refinement);\n };\n const subCategoryTitle = () => {\n return React.createElement(\"h1\", { className: \"plp-heading__subcategory-title\" }, (category === null || category === void 0 ? void 0 : category.plpName) || (category === null || category === void 0 ? void 0 : category.name));\n };\n const refineButton = () => {\n return (React.createElement(motion.div, { transition: getDefferedTransition(3), initial: { opacity: 0 }, animate: { opacity: !startAnimation && landingAnimation ? 0 : 1 }, className: \"wrapper-refine-button\", ref: wrapperRefineButton },\n React.createElement(\"button\", { type: \"button\", onClick: () => {\n openRefineModal();\n if (!refineExpanded) {\n props.fromSearch ? analytics.searchRefineOpen() : analytics.refineOpen();\n }\n }, \"aria-expanded\": refineExpanded, \"aria-controls\": \"refineOptions\", className: \"refine__toggle\" },\n React.createElement(\"span\", null, t('refine.title')),\n allFiltersCount > 0 && React.createElement(\"sup\", { \"aria-label\": t('refine.currentlyselectedfilters') + ' ' + allFiltersCount }, allFiltersCount))));\n };\n const appHeaderBar = () => {\n return (React.createElement(\"div\", { className: \"app-header-bar\" },\n React.createElement(\"button\", { className: \"button\", onClick: () => history.back() },\n React.createElement(\"i\", { className: \"icon--arrow-left-black\" })),\n subCategoryTitle(),\n refineButton()));\n };\n const hasRefinements = () => {\n var _a;\n return ((_a = categoryRefinement === null || categoryRefinement === void 0 ? void 0 : categoryRefinement.values) === null || _a === void 0 ? void 0 : _a.length) > 1;\n };\n const shownRefinements = useMemo(() => {\n if (props.fromSearch || refinements.length > 0) {\n return refinements;\n }\n else {\n // If in PLP refinements are empty, we show the last ones to let the user deselect something\n // To avoid weird selections, we only allow to (de)select the already selected ones\n const noResultsFilters = lastValidRefinements.map((r) => {\n return Object.assign(Object.assign({}, r), { values: r.values.map((v) => {\n return Object.assign(Object.assign({}, v), { selectable: v.selected });\n }) });\n });\n return noResultsFilters;\n }\n }, [refinements]);\n return (React.createElement(\"div\", { ref: refineRef, className: classNames('refine', { expanded: refineExpanded }, { 'from-app': isFromAPP }), style: { top: refineContainerPLPHeight } },\n React.createElement(\"div\", { className: classNames('container results-row', !inSearch && 'in-plp', props.plpintro && 'intro-plp', ((_b = (_a = props.plpintro) === null || _a === void 0 ? void 0 : _a.image) === null || _b === void 0 ? void 0 : _b.path) && 'image-bg', hasRefinements() && 'with-refinements'), ref: refineContainerPLP },\n ((_d = (_c = props.plpintro) === null || _c === void 0 ? void 0 : _c.image) === null || _d === void 0 ? void 0 : _d.path) && (React.createElement(\"picture\", { className: \"intro-plp__image\" },\n ((_f = (_e = props.plpintro) === null || _e === void 0 ? void 0 : _e.image_mobile) === null || _f === void 0 ? void 0 : _f.path) && React.createElement(\"source\", { media: \"(max-width: 768px)\", srcSet: (_g = props.plpintro) === null || _g === void 0 ? void 0 : _g.image_mobile.path }),\n React.createElement(Lazyimg, { src: (_j = (_h = props.plpintro) === null || _h === void 0 ? void 0 : _h.image) === null || _j === void 0 ? void 0 : _j.path, alt: \"\" }))),\n !inSearch ? (React.createElement(motion.div, { transition: tranitionDomReady, initial: { opacity: 0 }, animate: { opacity: 1 }, className: \"plp-heading\", ref: refinePLPHeading },\n ((_l = (_k = props.plpintro) === null || _k === void 0 ? void 0 : _k.image) === null || _l === void 0 ? void 0 : _l.path) && props.plpintro.logo && React.createElement(Lazyimg, { className: \"plp-heading__collection-logo\", src: props.plpintro.logo.path, alt: \"logo\" }),\n ((_m = props.plpintro) === null || _m === void 0 ? void 0 : _m.regions.breadcrumbs_area.components.length) ? (React.createElement(PlpIntroBreadcrumb, { logo: props.plpintro.logo, logo_link: props.plpintro.logo_link, breadcrumbs: props.plpintro.regions.breadcrumbs_area.components })) : (React.createElement(NewBreadcrumb, null)),\n props.plpintro ? (React.createElement(PlpIntroTags, { tags: props.plpintro.regions.tags_area.components, title: props.plpintro.title || (category === null || category === void 0 ? void 0 : category.plpName) || (category === null || category === void 0 ? void 0 : category.name), description: props.plpintro.description || (category === null || category === void 0 ? void 0 : category.description), readMore: props.plpintro.read_more || (category === null || category === void 0 ? void 0 : category.descriptionReadMore) })) : (React.createElement(\"div\", { className: \"plp-heading__title-bar\" }, subCategoryTitle())))) : (React.createElement(React.Fragment, null, hasRefinements() && (React.createElement(\"form\", { className: \"search-maincategories\" },\n React.createElement(\"fieldset\", null,\n React.createElement(\"legend\", { className: \"visually-hidden\" }, t('search.category.a11y')),\n React.createElement(\"label\", { key: 'all', className: classNames({ active: !filteredCategory }) },\n React.createElement(\"input\", { type: \"radio\", value: 'all', name: \"search-categories\", onClick: () => {\n analytics.filterByGender('all');\n dispatch({\n type: getRefinementType(),\n payload: {\n filterAction: 'ADD',\n id: 'all',\n },\n });\n } }),\n React.createElement(\"span\", null,\n \" \",\n t(`search.category.all`))), (_o = categoryRefinement === null || categoryRefinement === void 0 ? void 0 : categoryRefinement.values) === null || _o === void 0 ? void 0 :\n _o.filter((v) => v.id != 'genius').map((gender) => (React.createElement(\"label\", { key: gender.id, className: classNames({ active: gender.id == filteredCategory }) },\n React.createElement(\"input\", { type: \"radio\", value: gender.id, name: \"search-categories\", onClick: () => {\n analytics.filterByGender(gender.id);\n dispatch({\n type: getRefinementType(),\n payload: {\n filterAction: 'ADD',\n id: gender.id,\n },\n });\n } }),\n React.createElement(\"span\", null, gender.displayValue))))))))),\n !isDesktop ? (isFromAPP ? appHeaderBar() : refineButton()) : ''),\n !props.fullyEditorialPlp && (React.createElement(motion.div, { transition: getDefferedTransition(3), initial: { opacity: 0 }, animate: { opacity: !startAnimation && landingAnimation ? 0 : 1 }, onAnimationComplete: onComplete, style: { opacity: 0 } },\n React.createElement(\"div\", { ref: refineWrapper, id: \"refineOptions\", className: classNames('refine__options', refineIsVisibile() && 'is-visible') },\n React.createElement(\"div\", { className: \"refine__header\" },\n React.createElement(\"div\", { className: \"container\" },\n React.createElement(\"p\", { className: \"refine__header__title\" },\n t('refine.title'),\n allFiltersCount > 0 && React.createElement(\"sup\", { \"aria-label\": t('refine.currentlyselectedfilters') + ' ' + allFiltersCount }, allFiltersCount)),\n React.createElement(\"button\", { type: \"button\", \"aria-label\": t('button.close'), className: \"modal__close\", onClick: () => {\n closeRefine();\n } }))),\n React.createElement(\"div\", { ref: refineContainer, className: \"container refine__container\" },\n React.createElement(\"ul\", { id: \"filters1\", className: classNames('filters', selectedRefinement != '' && 'expanded'), \"aria-label\": t('refine.title') }, shownRefinements &&\n (shownRefinements === null || shownRefinements === void 0 ? void 0 : shownRefinements\n // ?.filter((refinement) => refinement.values.length > 1 || refinement.values[0].selected)\n .filter((refinement) => refinement.values.length > 1 && !refinement.isCategoryRefinement).map((refinement, i) => (React.createElement(\"li\", { key: i, onMouseLeave: () => {\n onFiltersHoverHandler(refinement, true);\n }, onMouseEnter: () => {\n onFiltersHoverHandler(refinement, false);\n } },\n React.createElement(\"button\", { id: refinement.attributeID, type: \"button\", onClick: () => {\n onFiltersClickHandler(refinement);\n }, \"aria-expanded\": refinement.attributeID === selectedRefinement, \"aria-controls\": 'filters-' + refinement.attributeID, className: classNames('filters__menuitem', selectedRefinement && refinement.attributeID !== selectedRefinement && 'filters__menuitem--off') },\n refinement.displayName,\n filterCount(refinement)),\n React.createElement(\"div\", { id: 'filters-' + refinement.attributeID, className: classNames('filters__menu', 'container', refinement.attributeID === 'size' && sizeGroups && Object.keys(sizeGroups).length > 1\n ? 'filters__menu--size-grouped'\n : 'filters__menu--' + refinement.attributeID) },\n refinement.attributeID === 'size' && sizeGroups && Object.keys(sizeGroups).length > 1 ? (React.createElement(\"div\", { className: \"filters__menu__wrapper-group\" }, Object.keys(sizeGroups).map((groupKey) => {\n return sizeGroupFilter(refinement, groupKey);\n }))) : (React.createElement(\"ul\", null, refinement === null || refinement === void 0 ? void 0 : refinement.values.map((refinementValue, i) => {\n return (React.createElement(ProductFilterCheckbox, { key: i + refinementValue.displayValue, refinement: refinement, refinementValue: refinementValue, index: i, addFilterValue: addFilterValue, fromSearch: props.fromSearch }));\n }))),\n isDesktop && (React.createElement(\"button\", { type: \"button\", className: \"link\", onClick: () => {\n resetFilters();\n props.fromSearch ? analytics.searchRefineClear() : analytics.refineClear();\n } }, t('button.resetall'))))))))),\n React.createElement(SortBy, { productSort: productSort, sortingExpanded: sortingExpanded, fromSearch: props.fromSearch, currentSortOption: currentSortOption || productSort.options[0], sortItems: sortItems, toggleSort: toggleSort })),\n React.createElement(\"div\", { className: \"refine__footer\" },\n React.createElement(\"div\", { className: \"container\" },\n React.createElement(\"button\", { type: \"button\", onClick: () => {\n resetFilters();\n props.fromSearch ? analytics.searchRefineClearAll() : analytics.refineClearAll();\n }, className: \"link\" }, t('button.resetall')),\n React.createElement(\"button\", { type: \"button\", onClick: () => {\n closeRefine();\n props.fromSearch ? analytics.searchRefineShow() : analytics.refineShow();\n }, className: \"button button--arrow-right button--tertiary\" }, t('refine.showresults')))))))));\n};\nexport default ProductFilters;\n","import api from '@utils/api';\nimport einsteinutils from '@utils/einsteinutils';\nimport axios from 'axios';\nimport React, { useEffect, useRef, useState } from 'react';\nimport SwiperCore, { Keyboard, Navigation } from 'swiper';\nimport { Swiper, SwiperSlide } from 'swiper/react';\nimport useBreakpoint from '@utils/useBreakpoint';\nimport '@moncler/scss/components/products-carousel-simplified/products-carousel-simplified.scss';\nimport ProductTile from '@moncler/components/listing/ProductTile';\nimport { useTranslation } from 'react-i18next';\nimport analytics from '@utils/analytics';\nSwiperCore.use([Keyboard, Navigation]);\nconst ProductCarousel = (props) => {\n const { t } = useTranslation();\n const [products, setProducts] = useState([]);\n const [loading, setLoading] = useState(true);\n const swiperRef = useRef();\n const prevRef = useRef(null);\n const nextRef = useRef(null);\n const currentBreakpoint = useBreakpoint();\n const isMobile = currentBreakpoint < window.mqObj.md;\n // products fetch effect\n // priority rule\n // listIds -> categoryId -> recommenderId\n useEffect(() => {\n const cancelTokenSource = axios.CancelToken.source();\n if (props.listIds) {\n api.getProductTiles(props.listIds.split(',')).then((data) => {\n setProducts(data);\n setLoading(false);\n });\n }\n else if (props.categoryId) {\n api.searchProducts({ id: props.categoryId }).then((data) => {\n setProducts(data.products);\n setLoading(false);\n if (props.pageType == 'search') {\n analytics.productImpressionsRecommended(data.products, 'recommended-search_no_results');\n }\n });\n }\n else if (props.recommenderId) {\n einsteinutils.productRecommendations(props.recommenderId, (rec) => {\n setProducts(rec.products);\n setLoading(false);\n }, cancelTokenSource, null, null, null, (errorData) => {\n console.log(errorData);\n setLoading(false);\n });\n }\n else {\n // no products will be fetched\n setLoading(false);\n }\n return () => cancelTokenSource.cancel();\n }, [props.listIds, props.categoryId, props.recommenderId]);\n useEffect(() => {\n if (!loading) {\n props.onResults(products.length > 0);\n }\n }, [loading]);\n const renderArrows = () => (React.createElement(\"div\", { className: \"products-carousel__arrows\" },\n React.createElement(\"button\", { type: \"button\", ref: prevRef, className: \"swiper-button-prev\", \"aria-label\": t('carousel.prevslidemessage') },\n React.createElement(\"i\", { className: \"icon--chevron-left-big\", \"aria-hidden\": true })),\n React.createElement(\"button\", { type: \"button\", ref: nextRef, className: \"swiper-button-next\", \"aria-label\": t('carousel.nextslidemessage') },\n React.createElement(\"i\", { className: \"icon--chevron-right-big\", \"aria-hidden\": true }))));\n return (React.createElement(\"div\", { className: \"container\" }, products.length === 0 ? (loading ? (React.createElement(\"div\", { className: \"swiper-container skeleton-carousel\" },\n React.createElement(\"ul\", { className: \"swiper-wrapper\" },\n React.createElement(\"li\", { className: \"swiper-slide\" },\n React.createElement(\"div\", { className: \"product-tile single-slide__img product-tile--carousel\" },\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\" }, \"loading\"),\n !props.hideprice && React.createElement(\"span\", { className: \"product-tile__price\" }, \"loading\")))))))) : ('no products fetched')) : (React.createElement(React.Fragment, null,\n !isMobile && renderArrows(),\n React.createElement(Swiper, { onSwiper: (swiper) => (swiperRef.current = swiper), keyboard: true, navigation: {\n prevEl: prevRef.current,\n nextEl: nextRef.current,\n }, className: \"no-overflow-container\", slidesPerView: \"auto\", spaceBetween: 16, threshold: 10, watchSlidesProgress: true, breakpoints: {\n 600: {\n slidesPerView: 3,\n },\n 1024: {\n slidesPerView: 4,\n },\n } }, products.map((product, i) => (React.createElement(SwiperSlide, { key: i },\n React.createElement(ProductTile, { type: \"RECS\", hidelabels: props.hidelabels, hideprice: props.hideprice, pageType: props.pageType, hoverDifferent: props.hoverDifferent, recommender: props === null || props === void 0 ? void 0 : props.recommenderId, product: product, isSimplified: true, noSwatch: true, index: i }))))),\n isMobile && renderArrows()))));\n};\nexport default ProductCarousel;\n","import analytics from '@utils/analytics';\nimport React, { useRef } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport SwiperCore, { Keyboard, Navigation } from 'swiper';\nimport { Swiper, SwiperSlide } from 'swiper/react';\nSwiperCore.use([Keyboard, Navigation]);\nconst SearchCollections = ({ exploreCollections }) => {\n const { t } = useTranslation();\n const swiperRef = useRef();\n const renderArrows = () => (React.createElement(\"div\", { className: \"products-carousel__arrows\" },\n React.createElement(\"button\", { type: \"button\", className: \"swiper-button-prev\", \"aria-label\": t('carousel.prevslidemessage') },\n React.createElement(\"i\", { className: \"icon--chevron-left-big\", \"aria-hidden\": true })),\n React.createElement(\"button\", { type: \"button\", className: \"swiper-button-next\", \"aria-label\": t('carousel.nextslidemessage') },\n React.createElement(\"i\", { className: \"icon--chevron-right-big\", \"aria-hidden\": true }))));\n return (exploreCollections === null || exploreCollections === void 0 ? void 0 : exploreCollections.length) > 0 ? (React.createElement(React.Fragment, null,\n React.createElement(Swiper, { onSwiper: (swiper) => {\n swiperRef.current = swiper;\n }, className: 'collection-submenu', wrapperTag: \"ul\", keyboard: true, spaceBetween: 16, navigation: {\n nextEl: '.swiper-button-next',\n prevEl: '.swiper-button-prev',\n disabledClass: 'swiper-button-disabled',\n }, slidesPerView: \"auto\", breakpoints: {\n 768: {\n enabled: false,\n slidesPerView: 3,\n },\n } }, exploreCollections.map((card, i) => (React.createElement(SwiperSlide, { key: i, tag: \"li\", className: 'collection-submenu__item' },\n React.createElement(\"a\", { href: card.data.btnLink, className: \"collection-card\", onClick: () => { var _a, _b; return analytics.collectionsSearch(((_a = card.data) === null || _a === void 0 ? void 0 : _a.title_analytics) || ((_b = card.data) === null || _b === void 0 ? void 0 : _b.title)); } },\n React.createElement(\"img\", { className: \"collection-card__background\", src: card.custom.bgImage, alt: \"\" }),\n React.createElement(\"div\", { className: \"collection-card__inner-content\" },\n React.createElement(\"img\", { src: card.custom.logo, alt: \"\" }),\n React.createElement(\"h3\", { className: `collection-card__title ${card.data.title_typo}` }, card.data.title),\n React.createElement(\"div\", { className: \"collection-card__description\", dangerouslySetInnerHTML: { __html: card.data.description } }),\n React.createElement(\"span\", { className: \"button button--tertiary-inverted button--arrow-right\" }, card.data.btnText))))))),\n renderArrows())) : (React.createElement(React.Fragment, null));\n};\nexport default SearchCollections;\n","import ProductCarousel from '@moncler/components/product/ProductCarousel';\nimport analytics from '@utils/analytics';\nimport React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Tab, TabList, TabPanel, Tabs } from 'react-tabs';\nimport SearchCollections from './SearchCollections';\nimport InstantMessageBox from '@moncler/components/contacts/InstantMessageBox';\nconst SearchNoResults = ({ component, contactus }) => {\n const { t } = useTranslation();\n const [tabsStatus, setTabsStatus] = useState({});\n const components = component === null || component === void 0 ? void 0 : component.regions[0].components;\n const suggestionCarousels = components === null || components === void 0 ? void 0 : components.filter((el) => el.type_id != 'menu_section_collections');\n const onResults = (i, withResults) => {\n setTabsStatus(Object.assign(Object.assign({}, tabsStatus), { [i]: withResults }));\n };\n const shouldRenderTab = (i) => {\n // Render tab if it's not in the list (ie. didn't trigger an onResult) or, if in the list, has results\n return !Object.hasOwn(tabsStatus, i) || tabsStatus[i];\n };\n const isWaitingForResults = () => {\n return Object.keys(tabsStatus).length < (suggestionCarousels === null || suggestionCarousels === void 0 ? void 0 : suggestionCarousels.length);\n };\n const isCollectionComponent = (typeID) => {\n return typeID === 'menu_section_collections';\n };\n return (React.createElement(\"div\", { className: \"no-results-container\" },\n React.createElement(\"div\", { className: \"no-result-content\" },\n React.createElement(\"div\", { className: \"container text-content-noresults\" },\n React.createElement(\"div\", { className: \"row justify-center\" },\n React.createElement(\"div\", { className: \"col-sm-10 col-md-6\" },\n React.createElement(\"h2\", null, t('search.noresults.title')),\n !!(component === null || component === void 0 ? void 0 : component.data.rich_text) ? React.createElement(\"div\", { dangerouslySetInnerHTML: { __html: component === null || component === void 0 ? void 0 : component.data.rich_text } }) : React.createElement(\"p\", null, t('search.noresults.description'))))),\n React.createElement(Tabs, { className: \"tabs tabs--centered\" },\n React.createElement(TabList, { className: 'react-tabs__tab-list justify-center' }, components === null || components === void 0 ? void 0 : components.map((el, i) => shouldRenderTab(i) && (React.createElement(Tab, { className: isWaitingForResults() ? 'hidden' : '', onClick: () => {\n var _a, _b;\n analytics.exploreSearch(((_a = el.data) === null || _a === void 0 ? void 0 : _a.title_analytics) || ((_b = el.data) === null || _b === void 0 ? void 0 : _b.title));\n }, key: i }, el.data.title)))),\n React.createElement(\"div\", { className: isWaitingForResults() ? 'visually-hidden' : '' }, components === null || components === void 0 ? void 0 : components.map((el, i) => {\n var _a;\n return shouldRenderTab(i) && (React.createElement(TabPanel, { key: i, forceRender: !isCollectionComponent(el.type_id) && isWaitingForResults() }, isCollectionComponent(el.type_id) ? (React.createElement(SearchCollections, { exploreCollections: el.regions[0].components })) : (React.createElement(ProductCarousel, { pageType: 'search', listIds: el.data.listids, categoryId: el.data.category, recommenderId: (_a = el.data.recommender) === null || _a === void 0 ? void 0 : _a.value, onResults: (withResults) => onResults(i, withResults) }))));\n })))),\n React.createElement(\"div\", { className: \"need-assistance container\" },\n React.createElement(\"div\", { className: \"row justify-center\" },\n React.createElement(\"div\", { className: \"col-sm-10 col-md-6\" },\n React.createElement(\"p\", { className: \"assistance\", dangerouslySetInnerHTML: { __html: t('search.noresults.assistance') } }),\n React.createElement(\"div\", { className: \"assistant-links\" },\n window.contactphone && (React.createElement(\"a\", { href: `tel:${window.contactphone}`, className: \"call\", onClick: () => analytics.assistanceSearch('call') }, window.contactphone)),\n window.instantmessage && (React.createElement(InstantMessageBox, { type: \"footer\", instantMessage: window.instantmessage, instantMessageNumber: window.instantMessageNumber, instantMessageRegion: window.instantMessageRegion })),\n window.instantmessage2 && (React.createElement(InstantMessageBox, { type: \"footer\", instantMessage: window.instantmessage2, instantMessageNumber: window.instantMessageNumber2, instantMessageRegion: window.instantMessageRegion })),\n React.createElement(\"a\", { href: contactus, className: \"mail\", onClick: () => analytics.assistanceSearch('contact form') }, t('contactus.contactform'))))))));\n};\nexport default SearchNoResults;\n","import analytics from '@utils/analytics';\nimport { motion } from 'framer-motion';\nimport React, { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport api from '@common/utils/api';\nconst SearchSuggested = (props) => {\n const { t } = useTranslation();\n const [suggested, setSuggested] = useState();\n useEffect(() => {\n let isSubscribed = true;\n api.getSuggestions(true).then((data) => {\n if (!data.error) {\n isSubscribed ? setSuggested(data) : null;\n }\n });\n return () => {\n isSubscribed = false;\n };\n }, []);\n return suggested && (suggested.recent.available || suggested.suggestions.available || suggested.popular.available) ? (React.createElement(motion.div, { className: \"suggested-container\", initial: { y: -32, opacity: 0 }, animate: { y: 0, opacity: 1 }, transition: { ease: [0.25, 1, 0.5, 1], duration: 0.3 } },\n React.createElement(\"div\", { className: \"container\" },\n React.createElement(\"div\", { className: \"row\" },\n suggested.recent.available && (React.createElement(\"div\", { className: \"col-lg-2 col-md-3\" },\n React.createElement(\"h2\", { className: \"suggested-title\" }, t('search.suggestion.recent')),\n React.createElement(\"ul\", { className: \"suggested-list\" }, suggested.recent.phrases.map((phrase, i) => {\n return (React.createElement(\"li\", { key: i },\n React.createElement(\"button\", { onClick: () => {\n analytics.suggestedSearchClick('recent', phrase.value);\n props.updateInputSearch(phrase.value);\n props.startSearch();\n } }, phrase.value)));\n })))),\n suggested.suggestions.available && (React.createElement(\"div\", { className: \"col-lg-2 col-md-3\" + (!suggested.popular.available && !suggested.recent.available ? ' center-text' : '') },\n React.createElement(\"h2\", { className: \"suggested-title\" }, t('search.suggestion.products')),\n React.createElement(\"ul\", { className: \"suggested-list\" }, suggested.suggestions.products.map((product, i) => {\n return (React.createElement(\"li\", { key: i },\n React.createElement(\"a\", { href: product.url, onClick: () => analytics.suggestedSearchClick('suggestions', product.name) }, product.name)));\n })))),\n suggested.popular.available && (React.createElement(\"div\", { className: \"col-lg-2 col-md-3\" },\n React.createElement(\"h2\", { className: \"suggested-title\" }, t('search.suggestion.popular')),\n React.createElement(\"ul\", { className: \"suggested-list\" }, suggested.popular.phrases.map((phrase, i) => {\n return (React.createElement(\"li\", { key: i },\n React.createElement(\"button\", { onClick: () => {\n analytics.suggestedSearchClick('popular', phrase.value);\n props.updateInputSearch(phrase.value);\n props.startSearch();\n } }, phrase.value)));\n })))))))) : (React.createElement(React.Fragment, null));\n};\nexport default SearchSuggested;\n","import { SearchActionTypes } from '@state/features/common.types';\nimport analytics from '@utils/analytics';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nconst addMarkersToSuggested = (searched, suggested) => {\n let regEx = new RegExp(searched, 'ig');\n let replaceMask = `${searched}`;\n return suggested.toLowerCase().replaceAll(regEx, replaceMask);\n};\nconst SearchSuggestionPhrases = (props) => {\n const dispatch = useDispatch();\n const { inputSearch, suggestionPhrases } = useSelector((state) => state.search);\n const [wrapperHeight, setWrapperHeight] = useState(0);\n const wrapperRef = useRef(null);\n useEffect(() => {\n var _a;\n if (props.forceClose || !suggestionPhrases || !suggestionPhrases.length) {\n setWrapperHeight(0);\n }\n else if (inputSearch.length >= props.minChars && (suggestionPhrases === null || suggestionPhrases === void 0 ? void 0 : suggestionPhrases.length) > 0) {\n setWrapperHeight((_a = wrapperRef.current) === null || _a === void 0 ? void 0 : _a.offsetHeight);\n }\n }, [suggestionPhrases, props.forceClose, inputSearch]);\n return (React.createElement(\"div\", { className: \"search-as-you-type\", style: { height: wrapperHeight } },\n React.createElement(\"ul\", { ref: wrapperRef, className: \"search-suggestions\" }, inputSearch.length >= props.minChars &&\n suggestionPhrases\n .filter((el) => inputSearch.toLowerCase() != el.value.toLowerCase())\n .filter((el, i) => i < 4)\n .map((el, i) => (React.createElement(\"li\", { key: i },\n React.createElement(\"button\", { type: \"button\", onClick: () => {\n analytics.suggestionSearch(el.value.toLowerCase());\n dispatch({\n type: SearchActionTypes.INPUT_SEARCH,\n payload: el.value,\n });\n dispatch({\n type: SearchActionTypes.FETCH_SEARCH,\n payload: {\n resultsType: 'REFINE',\n },\n });\n props.setLocalLoading();\n setWrapperHeight(0);\n }, dangerouslySetInnerHTML: { __html: addMarkersToSuggested(inputSearch, el.value) } })))))));\n};\nexport default SearchSuggestionPhrases;\n","import ProductFilters from '@moncler/components/listing/ProductFilters';\nimport ProductTile from '@moncler/components/listing/ProductTile';\nimport { SearchActionTypes } from '@state/features/common.types';\nimport analytics from '@utils/analytics';\nimport api from '@utils/api';\nimport einsteinutils from '@utils/einsteinutils';\nimport { debounce } from '@utils/functions';\nimport useScrollDirection from '@utils/useScrollDirection';\nimport classNames from 'classnames';\nimport FocusTrap from 'focus-trap-react';\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport InfiniteScroll from 'react-infinite-scroll-component';\nimport { useDispatch, useSelector } from 'react-redux';\nimport SearchNoResults from './SearchNoResults';\nimport SearchSuggested from './SearchSuggested';\nimport SearchSuggestionPhrases from './SearchSuggestionPhrases';\nimport useInnerWidth from '@common/utils/useInnerWidth';\nconst SearchContainer = (props) => {\n var _a;\n const { t } = useTranslation();\n const dispatch = useDispatch();\n const { inputSearch, results, progress, count, showSearch, fromQuery, productSort, firstLoad } = useSelector((state) => state.search);\n const [refineExpanded, setRefineExpanded] = useState(false);\n const isLoading = useSelector((state) => state.loading).requests.includes('SEARCH');\n const { apiErrors } = useSelector((state) => state.errors);\n const currentWidth = useInnerWidth();\n const loadingError = useMemo(() => {\n return apiErrors.find((error) => {\n return error.metadata.location === 'handleSearchFetch';\n });\n }, [apiErrors]);\n const inputRef = useRef();\n const [menuPage, setMenuPage] = useState();\n // per gestire il loading async\n const [localLoading, setLocalLoading] = useState(false);\n const [showNoResults, setShowNoResults] = useState(false);\n const [forceSuggestionsClose, setForceSuggestionClose] = useState(false);\n const searchFormRef = useRef(null);\n const scrollWrapperRef = useRef();\n const [scrollWrapper, setScrollWrapper] = useState();\n useEffect(() => {\n let width = document.querySelector('.search-container');\n if (currentWidth >= 1800) {\n if (width) {\n width.classList.add('search-grid-bigger');\n }\n }\n else {\n if (width) {\n width.classList.remove('search-grid-bigger');\n }\n }\n }, [currentWidth, results]);\n useEffect(() => {\n // console.info('update ref as showSearch updates: ', scrollWrapperRef.current);\n if (showSearch && scrollWrapperRef.current) {\n setScrollWrapper(scrollWrapperRef.current);\n }\n }, [showSearch]);\n // used to set the search box sticky top 0\n const scrolldirection = useScrollDirection({ initialDirection: 'up', thresholdPixels: 100, off: false, scrollContext: scrollWrapper });\n // force suggestion close on scroll down\n useEffect(() => {\n // console.info('scrolldirection: ', scrolldirection);\n if (scrolldirection == 'down') {\n setForceSuggestionClose(true);\n }\n else if (scrolldirection == 'up' && document.activeElement === inputRef.current) {\n setForceSuggestionClose(false);\n }\n }, [scrolldirection]);\n // when redux loading finishes set localLoading to false\n useEffect(() => {\n if (!isLoading) {\n setLocalLoading(false);\n }\n }, [isLoading]);\n const showSuggestions = useMemo(() => inputSearch.length < props.minChars || firstLoad, [results, inputSearch, firstLoad]);\n const toggleShow = (show) => {\n if (show === showSearch)\n return;\n dispatch({\n type: SearchActionTypes.TOGGLE_SEARCH,\n payload: show,\n });\n };\n // TODO da spostare nel saga?\n // open search after fetching data (only from query)\n useEffect(() => {\n if (fromQuery) {\n toggleShow(inputSearch != '');\n if (inputSearch.length >= props.minChars) {\n dispatch({\n type: SearchActionTypes.FETCH_SEARCH,\n payload: {\n resultsType: 'REFINE',\n },\n });\n }\n }\n }, [inputSearch, fromQuery]);\n useEffect(() => {\n if (showSearch && inputSearch) {\n analytics.searchResults((results === null || results === void 0 ? void 0 : results.length) != 0 ? 'results' : 'no results', inputSearch);\n }\n }, [results]);\n useEffect(() => {\n const minChars = inputSearch.length >= props.minChars;\n if (localLoading) {\n return;\n }\n else {\n setShowNoResults(menuPage && minChars && !results.length);\n }\n }, [menuPage, inputSearch, props.minChars, localLoading, results]);\n // get collections component from menu - Page designer\n useEffect(() => {\n api.getPageJson('menu', true).then((menu) => {\n setMenuPage(menu === null || menu === void 0 ? void 0 : menu.regions);\n delete menu.getFormattedData;\n dispatch({ type: SearchActionTypes.MENU_DATA, payload: menu });\n });\n }, []);\n // used by infinitescroll and load more button\n const fetchProducts = () => {\n dispatch({\n type: SearchActionTypes.FETCH_SEARCH,\n payload: {\n start: progress,\n resultsType: 'PAGE',\n },\n });\n };\n // TODO for clean code should be moved inside saga\n // debounced search from input\n const startSearch = useCallback(debounce(() => {\n dispatch({\n type: SearchActionTypes.FETCH_SEARCH,\n payload: {\n resultsType: 'REFINE',\n },\n });\n dispatch({\n type: SearchActionTypes.QUERY_SEARCH,\n });\n }, props.searchDebounceTimeout || 500), []);\n const updateInputSearch = (search) => {\n dispatch({\n type: SearchActionTypes.INPUT_SEARCH,\n payload: search,\n });\n };\n const hasMore = useMemo(() => {\n return progress < count;\n }, [progress, count]);\n const loader = () => {\n return (!loadingError && (React.createElement(\"div\", { className: \"container\" },\n React.createElement(\"span\", { className: \"plp-loading\", \"aria-live\": \"polite\" }, t('plp.loading')))));\n };\n const resultLength = () => {\n // Bizarre workaround I found for what appears to be a strange bug of react-infinite-scroll-component\n // Next() function isn't triggered and Loader gets stuck when only 'hasMore' changes but results data stays the same.\n // Specifically this happens in conjunction from what seems to be a cached search result:\n // Sometimes when searching a term, the first page contains products, but the second page has 0 results - that would be a BE / cache issue only\n // But then, if we search another term that would return the same results of the previous, hasMore becomes true but no next() function is triggered when reaching the bottom of the screen ( cfr. OE-22075 )\n // In this way we try to get a not-stale version of the component when this happens.\n return hasMore ? results.length : 0;\n };\n const error = () => {\n if (loadingError && !isLoading) {\n return (React.createElement(\"div\", { className: \"container\" },\n React.createElement(\"span\", { className: \"plp-error\", \"aria-live\": \"polite\" }, t('plp.error'))));\n }\n return React.createElement(React.Fragment, null);\n };\n const showAccessibleLoadMore = () => {\n if (results.length && hasMore) {\n return (React.createElement(\"div\", { className: \"container visible-on-focus\" },\n React.createElement(\"h3\", { className: \"plp-loading\" },\n \" \",\n t('plp.moreproducts')),\n React.createElement(\"button\", { className: \"button button--secondary-inverted\", onClick: fetchProducts }, t('plp.loadmore'))));\n }\n return React.createElement(React.Fragment, null);\n };\n const handleCloseSuggestions = (e) => {\n console.info('blur ev: ', e.relatedTarget);\n // !e.relatedTarget ||\n if (!searchFormRef.current.contains(e.relatedTarget)) {\n setForceSuggestionClose(true);\n }\n else {\n setForceSuggestionClose(false);\n }\n };\n const searchField = () => (React.createElement(\"form\", { ref: searchFormRef, role: \"search\", onFocus: () => setForceSuggestionClose(false), onBlur: handleCloseSuggestions },\n React.createElement(\"input\", { ref: inputRef, type: \"search\", name: \"searchLabel\", id: \"searchLabel\", autoComplete: \"off\", placeholder: t('search.placeholder'), \"aria-label\": t('search.placeholder'), \"aria-controls\": \"searchResults\", value: inputSearch, onChange: (e) => {\n updateInputSearch(e.currentTarget.value);\n if (e.currentTarget.value != '' && e.currentTarget.value.length >= props.minChars) {\n startSearch();\n setLocalLoading(true);\n }\n else {\n dispatch({\n type: SearchActionTypes.UPDATE_SEARCH_REFINEMENT,\n payload: {\n filterAction: 'RESET',\n },\n });\n }\n }, onKeyDown: (e) => {\n if (e.key == 'Enter')\n e.preventDefault();\n }, onKeyUp: (keyboardEvent) => {\n if (keyboardEvent.code === 'Enter' || keyboardEvent.key === 'Enter') {\n keyboardEvent.currentTarget.blur();\n }\n } }),\n React.createElement(SearchSuggestionPhrases, { minChars: props.minChars, setLocalLoading: () => setLocalLoading(true), forceClose: forceSuggestionsClose }),\n React.createElement(\"div\", { className: \"search-icons\" },\n inputSearch != '' && inputSearch.length >= props.minChars && (React.createElement(\"h2\", { className: \"search-query\" }, localLoading ? t('search.results.loadingm') : count > 0 ? t('search.results.messagem', { count }) : '')),\n inputSearch != '' && inputSearch.length >= props.minChars && (React.createElement(\"button\", { className: \"reset-button d-md-none\", type: \"reset\", \"aria-label\": t('button.cancel'), onClick: () => {\n analytics.deleteSearch();\n dispatch({\n type: SearchActionTypes.RESET_SEARCH,\n });\n } },\n React.createElement(\"i\", { className: \"icon--close-grey\" }))),\n React.createElement(\"button\", { className: \"icon--close\", type: \"button\", \"aria-label\": t('button.cancel'), onClick: () => {\n analytics.closeSearch();\n toggleShow(false);\n } }))));\n return (React.createElement(\"div\", { className: \"search-container\" },\n React.createElement(\"button\", { className: \"icon--search\", type: \"button\", \"aria-label\": t('label.search'), \"aria-haspopup\": \"dialog\", onClick: () => {\n analytics.header('search');\n toggleShow(true);\n if (scrollWrapper) {\n scrollWrapper.scrollTo(0, 0);\n }\n } }),\n showSearch && (React.createElement(FocusTrap, { focusTrapOptions: {\n // onDeactivate: () => toggleShow(false),\n allowOutsideClick: true,\n clickOutsideDeactivates: true,\n initialFocus: () => inputRef.current,\n } },\n React.createElement(\"div\", { ref: scrollWrapperRef, id: \"infinite-scroll-wrapper\", className: classNames('search-overlay', { 'show-results': !showSuggestions }, { 'stick-top': scrolldirection == 'down' || (results.length == 0 && !showSuggestions) }, { 'search-refine-expanded': refineExpanded }) },\n React.createElement(\"div\", { className: classNames('search-input-container') },\n React.createElement(\"div\", { className: \"container\" },\n React.createElement(\"div\", { className: \"row\" },\n React.createElement(\"div\", { className: \"col-md-6 col-lg-4 search-box\" },\n React.createElement(\"button\", { className: \"d-md-none icon--chevron-left-large\", type: \"button\", onClick: () => toggleShow(false) }),\n searchField()))),\n !showSuggestions && results.length > 0 && React.createElement(ProductFilters, { setFilterExpandedStatus: (expanded) => setRefineExpanded(expanded), fromSearch: true, loading: localLoading })),\n React.createElement(\"div\", { id: \"searchResults\", \"aria-live\": \"polite\" }, showSuggestions ? (React.createElement(SearchSuggested, { startSearch: () => {\n startSearch();\n setLocalLoading(true);\n }, updateInputSearch: updateInputSearch })) : results.length > 0 ? (React.createElement(React.Fragment, null,\n React.createElement(InfiniteScroll, { dataLength: resultLength(), next: fetchProducts, hasMore: hasMore, loader: loader(), scrollableTarget: \"infinite-scroll-wrapper\" },\n React.createElement(\"ul\", { className: classNames('grid-container', { 'white-bg': window.enableColorBackgroundStillLife }) }, results.map((product, i) => (React.createElement(\"li\", { key: i },\n React.createElement(ProductTile, { product: product, index: i, type: 'SEARCH', isSimplified: true }),\n einsteinutils.trackProductInSearch(product.id, inputSearch, productSort === null || productSort === void 0 ? void 0 : productSort.ruleId) && React.createElement(React.Fragment, null))))),\n showAccessibleLoadMore(),\n error()))) : (showNoResults && (React.createElement(SearchNoResults, { contactus: props.contactus, component: (_a = menuPage.find((el) => el.id == 'search_region').components) === null || _a === void 0 ? void 0 : _a.find((el) => el.type_id == 'component_search_noresults') })))),\n React.createElement(\"div\", { onClick: () => toggleShow(false), \"aria-hidden\": \"true\", className: \"search-overlay-close\" }))))));\n};\nexport default SearchContainer;\n","import { configureSearchStore } from '@state';\nimport { initSearchQuerySync } from '@utils/search';\nimport React from 'react';\nimport { Provider } from 'react-redux';\nimport SearchContainer from './SearchContainer';\nconst store = configureSearchStore();\ninitSearchQuerySync(store);\nconst SearchApp = (props) => {\n return (React.createElement(Provider, { store: store },\n React.createElement(SearchContainer, Object.assign({}, props))));\n};\nexport default SearchApp;\n"],"names":["props","src","className","draggable","alt","width","height","ariaHidden","SCROLL_DOWN","initialDirection","thresholdPixels","off","scrollContext","scrollDir","setScrollDir","useState","useEffect","attachScrollTo","window","threshold","lastScrollY","scrollTop","pageYOffset","ticking","updateScrollDir","scrollY","Math","abs","onScroll","requestAnimationFrame","addEventListener","removeEventListener","t","offlinePopup","setOfflinePopup","openModal","setOpenModal","instantMessage","country","faf","instantMessageLink","classname","labelkey","whatsappnumber","instantMessageNumber","href","target","onClick","type","e","smsNumber","overlayClassName","isOpen","onRequestClose","role","contentLabel","socialQrImageFolder","instantMessageRegion","useTranslation","dispatch","breadcrumbs","state","search","baseUrl","location","origin","breadcrumbsList","pop","map","item","i","key","url","payload","cgid","categoryId","resultsType","start","htmlValue","id","breadcrumb","current","title","link","readMoreText","useRef","readMoreOpen","setReadMoreOpen","description","dangerouslySetInnerHTML","__html","readMore","ref","classList","toggle","tags","tag","_a","categoryLink","custom","analytics","title_analytics","displayName","index","option","currentSortOption","toggleSort","sortItems","focusOption","focusedOption","fromSearch","optionRef","fromKeyboard","document","documentElement","getAttribute","setTimeout","focus","onKeyDown","preventDefault","querySelector","tabIndex","productSort","sortingExpanded","setFocusedOption","currentBreakpoint","useBreakpoint","isDesktop","useMemo","mqObj","md","undefined","dir","options","length","sortingHandler","forceHide","onMouseEnter","onMouseLeave","refinement","refinementValue","refinementKey","displayValue","checked","setChecked","selected","onInteract","selectable","addFilterValue","attributeID","presentationId","disabled","name","value","onChange","htmlFor","_b","_c","_d","_e","_f","_g","_h","_j","_k","_l","_m","_o","landingAnimation","refinements","category","selectedFilters","selectedSort","sizeGroups","inSearch","inputSearch","count","filteredCategory","refineExpanded","setRefineExpanded","selectedRefinement","setSelectedRefinement","setSortingExpanded","startAnimation","setStartAnimation","categoryRefinement","setCategoryRefinement","refineContainerPLPHeight","setRefineContainerPLPHeight","lastValidRefinements","setLastValidRefinements","isFromAPP","appmode","getRefinementType","setFilterExpandedStatus","headerRef","bodyRef","refineRef","refineContainerPLP","refinePLPHeading","wrapperRefineButton","useLayoutEffect","willStick","refineResizeObserver","ResizeObserver","elPaddingTop","parseInt","getComputedStyle","paddingTop","elPaddingBot","paddingBottom","topVal","offsetHeight","plpintro","getTopVal","observe","unobserve","isMountRef","style","removeProperty","refineWrapper","refineContainer","find","sortingRuleId","closeRefine","sprChat","toggleSelectedRefinement","refinementID","currentFilter","nextElementSibling","currentFilterParent","closest","prevCurrentFilterParent","previousElementSibling","topPositionPrevCurrentFilterParent","getBoundingClientRect","top","scrollTopRefineContainer","scrollTo","scrollIntoView","allFiltersCount","reduce","filter","values","lastSearch","sessionStorage","getItem","lastSearchObj","JSON","parse","queryParam","URLSearchParams","get","setItem","stringify","isCategoryRefinement","v","setProperty","filterCount","filterId","resetFilters","filterAction","valueId","onFiltersHoverHandler","onFiltersClickHandler","sendFiltersAnalytics","subCategoryTitle","plpName","refineButton","transition","initial","opacity","animate","getPropertyValue","overflowY","openRefineModal","hasRefinements","shownRefinements","r","Object","assign","expanded","image","path","image_mobile","media","srcSet","Lazyimg","active","gender","logo","regions","breadcrumbs_area","components","logo_link","tags_area","read_more","descriptionReadMore","history","back","fullyEditorialPlp","onAnimationComplete","keys","groupKey","sizeGroup","sizeGroupFilter","sortButton","add","remove","closeSort","toString","products","setProducts","loading","setLoading","swiperRef","prevRef","nextRef","isMobile","cancelTokenSource","listIds","api","split","then","data","pageType","recommenderId","einsteinutils","rec","errorData","console","log","cancel","onResults","renderArrows","hidelabels","hideprice","onSwiper","swiper","keyboard","navigation","prevEl","nextEl","slidesPerView","spaceBetween","watchSlidesProgress","breakpoints","product","ProductTile","hoverDifferent","recommender","isSimplified","noSwatch","exploreCollections","wrapperTag","disabledClass","enabled","card","btnLink","bgImage","title_typo","btnText","component","contactus","tabsStatus","setTabsStatus","suggestionCarousels","el","type_id","shouldRenderTab","hasOwn","isWaitingForResults","isCollectionComponent","typeID","rich_text","forceRender","listids","withResults","contactphone","instantmessage","InstantMessageBox","instantmessage2","instantMessageNumber2","suggested","setSuggested","isSubscribed","error","recent","available","suggestions","popular","y","ease","duration","phrases","phrase","updateInputSearch","startSearch","addMarkersToSuggested","searched","regEx","RegExp","replaceMask","toLowerCase","replaceAll","suggestionPhrases","wrapperHeight","setWrapperHeight","wrapperRef","forceClose","minChars","setLocalLoading","results","progress","showSearch","fromQuery","firstLoad","isLoading","requests","includes","apiErrors","errors","currentWidth","useInnerWidth","loadingError","metadata","inputRef","menuPage","setMenuPage","localLoading","showNoResults","setShowNoResults","forceSuggestionsClose","setForceSuggestionClose","searchFormRef","scrollWrapperRef","scrollWrapper","setScrollWrapper","scrolldirection","useScrollDirection","activeElement","showSuggestions","toggleShow","show","menu","getFormattedData","fetchProducts","useCallback","searchDebounceTimeout","hasMore","handleCloseSuggestions","info","relatedTarget","contains","focusTrapOptions","allowOutsideClick","clickOutsideDeactivates","initialFocus","onFocus","onBlur","autoComplete","placeholder","currentTarget","onKeyUp","keyboardEvent","code","blur","ProductFilters","dataLength","next","loader","scrollableTarget","enableColorBackgroundStillLife","ruleId","store"],"sourceRoot":""}