{"version":3,"file":"search.widgets.bundle.js","mappings":"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","sources":["webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/search/LazyloadTrigger.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/search/ProductListingMgr.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/search/QuickViewNavigation.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/search/Refinement.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/search/RefinementsGridToggle.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/search/RefinementsPanel.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/search/RefinementsPanelToggle.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/search/StickyRefinements.js","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/search/NoSearchResultsForm.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/search/ProductListingMgr.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/search/Refinement.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/search/RefinementsPanelToggle.ts"],"sourcesContent":["/**\n * @typedef {typeof import('widgets/Widget').default} Widget\n * @typedef {InstanceType<typeof import('widgets/toolbox/RefElement').RefElement>} refElement\n */\n\n/**\n * @param {Widget} Widget Base widget for extending\n * @returns {typeof LazyloadTrigger} LazyloadTrigger widget\n */\nexport default function (Widget) {\n    /**\n     * @class LazyloadTrigger\n     * @augments Widget\n     */\n    class LazyloadTrigger extends Widget {\n        prefs() {\n            return {\n                threshold: 100,\n                ...super.prefs()\n            };\n        }\n\n        init() {\n            super.init();\n\n            this.eventEmited = false;\n\n            this.has('self', selfElement => this.initOnScrollListener(selfElement));\n        }\n\n        /**\n         * @description Add scroll listener to detect lazyload event\n         * @param {refElement} selfElement self ref element\n         * @returns {void}\n         */\n        initOnScrollListener(selfElement) {\n            if (!selfElement) {\n                return;\n            }\n\n            this.ev('scroll', () => {\n                if (window.innerHeight + this.prefs().threshold > selfElement?.get()?.getBoundingClientRect()?.top) {\n                    if (!this.eventEmited) {\n                        this.emit('lazyload');\n\n                        this.eventEmited = true;\n                    }\n                }\n            }, window);\n        }\n    }\n\n    return LazyloadTrigger;\n}\n","import { scrollWindowTo, getStickyHeaderHeight } from 'core/toolbox/scroll';\nimport { appendParamToURL, removeParamFromURL } from 'widgets/toolbox/util';\n/**\n * @typedef {ReturnType<typeof import('widgets/search/ProductListingMgr').default>} BaseProductListingMgr\n * @typedef {InstanceType<typeof import('widgets/toolbox/RefElement').RefElement>} refElement\n * @typedef {InstanceType<ReturnType<typeof import('core/search/RefinementsGridToggle').default>>} refinementsGridToggle\n * @typedef {InstanceType<ReturnType<typeof import('widgets/forms/InputSelect').default>>} InputSelect\n * @typedef {InstanceType<typeof import('widgets/Widget').default>} widget\n */\n\nimport { RefElement } from 'widgets/toolbox/RefElement';\n\nconst IDEAS = 'ideas';\nconst PRODUCTS = 'products';\nconst GRID_UPDATING_EVENT = 'products.grid.updated';\nconst GTM_DATALAYER_EVENT = 'gtm.datalayer.event';\nconst GTM_EVENT = 'data-layer-event';\nconst THEMATIC = 'thematic=true';\n\n/**\n * @param {BaseProductListingMgr} BaseProductListingMgr Base widget for extending\n * @returns {typeof ProductListingMgr} ProductListingMgr widget\n */\nexport default function (BaseProductListingMgr) {\n    /**\n     * @category widgets\n     * @subcategory search\n     * @class ProductListingMgr\n     * @augments BaseProductListingMgr\n    */\n    class ProductListingMgr extends BaseProductListingMgr {\n        prefs() {\n            return {\n                refinedByIdeas: false,\n                keywordSearch: false,\n                classesProductGridAlternative: 'm-one_column',\n                classesInited: 'm-inited',\n                copyUrlParamsConfig: '',\n                ...super.prefs()\n            };\n        }\n\n        init() {\n            super.init();\n\n            this.setGridType();\n            this.scrollToSavedTile();\n\n            this.lazyloadAllowed = false;\n\n            this.latestHref = {\n                [IDEAS]: undefined,\n                [PRODUCTS]: undefined\n            };\n\n            this.inlineSlots = document.querySelectorAll('.b-plp_grid_slot');\n\n            if (this.inlineSlots.length) {\n                window.addEventListener('load', this.calculateInlineSlotWidth.bind(this));\n            }\n\n            this.eventBus().on(GRID_UPDATING_EVENT, 'onGridUpdated');\n            this.eventBus().on('quickview.show.previous', 'showPreviousQuickView');\n            this.eventBus().on('quickview.show.next', 'showNextQuickView');\n            this.eventBus().on('productlistingmgr.execute', 'executeCallback');\n            this.eventBus().on('update.product.list.grid.view', 'updateView');\n        }\n\n        scrollToSavedTile() {\n            var anchorTileID = window.sessionStorage.getItem('anchorTileID');\n\n            if (!this.prefs().firstPage && anchorTileID) {\n                this.getById(anchorTileID, tile => {\n                    // prevent default scroll restoration\n                    if ('scrollRestoration' in window.history) {\n                        window.history.scrollRestoration = 'manual';\n                    }\n\n                    scrollWindowTo(tile.ref('self').get(), false, {\n                        behavior: 'auto',\n                        top: -parseInt(window.sessionStorage.getItem('anchorTileOffset') || '0', 10),\n                        left: 0\n                    });\n                });\n            }\n\n            window.sessionStorage.removeItem('anchorTileID');\n            window.sessionStorage.removeItem('anchorTileOffset');\n        }\n\n        /**\n         * @description Basically injects self in scope of callback and executes it\n         * Used in case of access to `ProductListingMgr` from other widgets, not directly related\n         * @param {Function} cb callback to execute\n         * @returns {void}\n         */\n        executeCallback(cb) {\n            if (cb) {\n                cb.apply(null, [this]);\n            }\n        }\n\n        /**\n         * @description Get tile index in grid by provided product ID\n         * @param {string} productId product ID\n         * @returns {number} tile index\n         */\n        getTileIndex(productId) {\n            let currentTileIndex = 0;\n            let tileIndex = 0;\n\n            const ProductTile = this.getConstructor('productTile');\n\n            this.eachChild(child => {\n                if (child instanceof ProductTile) {\n                    if (child.config.productId === productId) {\n                        tileIndex = currentTileIndex;\n                    }\n\n                    currentTileIndex++;\n                }\n            });\n\n            return tileIndex;\n        }\n\n        /**\n         * @description Checks if it's very first tile in search results\n         * @param {string} productId product ID\n         * @returns {boolean} is first tile\n         */\n        isFirstTile(productId) {\n            const tileIndex = this.getTileIndex(productId);\n\n            let hasPrevProducts = false;\n\n            this.has('loadPrevBlock', loadPrevBlock => {\n                hasPrevProducts = !!loadPrevBlock.data('hasPrev');\n            });\n\n            return tileIndex === 0 && !hasPrevProducts;\n        }\n\n        /**\n         * @description Checks if it's very last tile in search results\n         * @param {string} productId product ID\n         * @returns {boolean} is last tile\n         */\n        isLastTile(productId) {\n            const tileIndex = this.getTileIndex(productId);\n\n            let hasMoreProducts = false;\n\n            this.has('loadMoreBlock', loadMoreBlock => {\n                hasMoreProducts = !!loadMoreBlock.data('hasMore');\n            });\n\n            return tileIndex === (this.getProductTilesCount() - 1) && !hasMoreProducts;\n        }\n\n        /**\n         * @description Show Quick View for tile with certain index\n         * In case of last product tile + 1 and \"load more\" is shown - performs \"load more\" action\n         * @param {number} index tile index to show quick view\n         * @returns {void}\n         */\n        showQuickViewByIndex(index) {\n            let targetProductTile = null;\n            let currentTileIndex = 0;\n\n            const ProductTile = this.getConstructor('productTile');\n\n            this.eachChild(child => {\n                if (child instanceof ProductTile) {\n                    if (index === currentTileIndex) {\n                        targetProductTile = child;\n                    }\n\n                    currentTileIndex++;\n                }\n            });\n\n            if (targetProductTile) {\n                // @ts-ignore\n                targetProductTile.triggerQuickView();\n            } else if (index < 0) {\n                // TODO: find proper approach once load previous will be handled\n                this.loadPrev(this.ref('loadPrevButton'));\n            } else if (index >= this.getProductTilesCount()) {\n                this.triggerQuickViewIndex = index;\n                this.loadMore(this.ref('loadMoreButton'));\n            }\n        }\n\n        /**\n         * @description Show Quick View for previous tile in a grid\n         * @param {string} productId product ID\n         * @returns {void}\n         */\n        showPreviousQuickView(productId) {\n            this.showQuickViewByIndex(\n                this.getTileIndex(productId) - 1\n            );\n        }\n\n        /**\n         * @description Show Quick View for next tile in a grid\n         * @param {string} productId product ID\n         * @returns {void}\n         */\n        showNextQuickView(productId) {\n            this.showQuickViewByIndex(\n                this.getTileIndex(productId) + 1\n            );\n        }\n\n        /**\n         * @description Set initial grid type for different grid modes according to cookies\n         * @returns {void}\n         */\n        setGridType() {\n            this.getById(\n                'refinementsGridToggle',\n                (/** @type {refinementsGridToggle} */refinementsGridToggle) => refinementsGridToggle.setGridType()\n            );\n        }\n\n        /**\n         * @description Get total products tiles count, presents in a grid\n         * @returns {number} total products tiles count, presents in a grid\n         */\n        getProductTilesCount() {\n            let productTilesCount = 0;\n            const ProductTile = this.getConstructor('productTile');\n\n            this.eachChild(child => {\n                if (child instanceof ProductTile) {\n                    productTilesCount++;\n                }\n            });\n\n            return productTilesCount;\n        }\n\n        /**\n         * @description On grid updated:\n         * Reflects an actual information of viewed products after loading more products chunks\n         * Trigger quick view if needed\n         * @param {object} [data] Rerender data when click on LoadMore and LoadPrev\n         * @returns {void}\n         */\n        onGridUpdated(data) {\n            this.updateGridInfo();\n\n            if (this.triggerQuickViewIndex !== undefined) {\n                this.showQuickViewByIndex(this.triggerQuickViewIndex);\n                this.triggerQuickViewIndex = undefined;\n            }\n\n            if (data) {\n                // @ts-ignore\n                this.updateMetaLinks({ url: data.url, model: data.model });\n            }\n        }\n\n        /**\n         * @description Update canonical, prev and next link while rerender grid\n         * @param {object} data Rerender data when click on LoadMore and LoadPrev\n         * @returns {Promise} return Promise\n         */\n        updateMetaLinks(data) {\n            // @ts-ignore\n            var url = data.url;\n            // @ts-ignore\n            var model = data.model;\n\n            this.updateCanonical(url);\n            this.updatePaginationPrev(url, model);\n            this.updatePaginationNext(url, model);\n\n            return Promise.resolve();\n        }\n\n        /**\n         * @description Update canonical link while rerender grid\n         * @param {string} url - history.showUrl\n         * @returns {void}\n         */\n        updateCanonical(url) {\n            var canonical = this.ref('html').get()?.querySelectorAll('[rel=\"canonical\"]')[0];\n\n            canonical?.setAttribute('href', url);\n        }\n\n        /**\n         * @description Update prev link while rerender grid\n         * @param {string} url - history.showUrl\n         * @param {object} model updated search model\n         * @returns {void}\n         */\n        updatePaginationPrev(url, model) {\n            if (model) {\n                var linkRelPrev = this.ref('html').get()?.querySelectorAll('[rel=\"prev\"]');\n\n                var productSearch = model;\n                // @ts-ignore\n                var sz = productSearch.pageSize;\n                // @ts-ignore\n                var start = productSearch.pageSize * productSearch.pageNumber;\n                // @ts-ignore\n                var prevStart = productSearch.pageSize * (productSearch.pageNumber - 1);\n                var prevUrl = url;\n\n                var createLinkPrev = '<link rel=\"prev\" href=\"\"/>';\n                var canonical = this.ref('html').get()?.querySelectorAll('[rel=\"canonical\"]')[0];\n\n                if (!linkRelPrev?.length) {\n                    // @ts-ignore\n                    canonical?.insertAdjacentHTML('beforebegin', createLinkPrev);\n                    linkRelPrev = this.ref('html').get()?.querySelectorAll('[rel=\"prev\"]');\n                }\n\n                if (sz !== start && prevStart > 0) {\n                    prevUrl = this.replaceParameterInUrl(prevUrl, 'start', prevStart);\n                    prevUrl = this.replaceParameterInUrl(prevUrl, 'sz', sz);\n                } else {\n                    prevUrl = removeParamFromURL(prevUrl, 'sz');\n                    prevUrl = removeParamFromURL(prevUrl, 'start');\n                }\n\n                if (start === 0 && linkRelPrev?.length) {\n                    linkRelPrev[0].remove();\n                } else {\n                    // @ts-ignore\n                    linkRelPrev[0].setAttribute('href', prevUrl);\n                }\n            }\n        }\n\n        /**\n         * @description Update next link while rerender grid\n         * @param {string} url - history.showUrl\n         * @param {object} model updated search model\n         * @returns {void}\n         */\n        updatePaginationNext(url, model) {\n            if (model) {\n                var linkRelNext = this.ref('html').get()?.querySelectorAll('[rel=\"next\"]');\n                var productSearch = model;\n                // @ts-ignore\n                var nextStart = productSearch.pageSize * (productSearch.pageNumber + 1);\n                // @ts-ignore\n                var isLast = nextStart >= productSearch.count;\n                var nextUrl = url;\n\n                if (isLast && linkRelNext?.length) {\n                    linkRelNext[0].remove();\n                } else {\n                    nextUrl = this.replaceParameterInUrl(nextUrl, 'start', nextStart);\n                    // @ts-ignore\n                    nextUrl = this.replaceParameterInUrl(nextUrl, 'sz', productSearch.pageSize);\n                    // @ts-ignore\n                    linkRelNext[0]?.setAttribute('href', nextUrl);\n                }\n            }\n        }\n\n        /**\n         * @description Replace paramenter in Url\n         * @param {string} url - any url\n         * @param {string} name name of paramenter\n         * @param {string} value value of paramenter\n         * @returns {string} new url\n         */\n        replaceParameterInUrl(url, name, value) {\n            url = removeParamFromURL(url, name);\n\n            return appendParamToURL(url, name, value);\n        }\n\n        /**\n         * @description Update product grid counters (viewing/viewed products)\n         * @returns {void}\n         */\n        updateGridInfo() {\n            let currentStart = 1;\n            const selfRef = this.ref('self').get();\n\n            this.has('loadPrevButton', loadPrevButton => {\n                currentStart = Number(loadPrevButton.data('currentStart')) || 1;\n            });\n\n            const currentlyViewedCount = new RefElement(\n                // @ts-ignore\n                selfRef?.querySelectorAll('[data-ref=\"currentlyViewedCount\"]')\n            );\n            const currentlyViewingCount = new RefElement(\n                // @ts-ignore\n                selfRef?.querySelectorAll('[data-ref=\"currentlyViewingCount\"]')\n            );\n\n            if (currentlyViewedCount && currentlyViewedCount.length) {\n                currentlyViewedCount.setText(\n                    (this.getProductTilesCount() + currentStart - 1).toString()\n                );\n            }\n\n            if (currentlyViewingCount && currentlyViewingCount.length) {\n                currentlyViewingCount.setText(currentStart.toString());\n            }\n        }\n\n        /**\n         * @description Shows full refinements set for target refinements accordion item\n         * @param {RefElement} btn clicked `show more` button\n         * @returns {void}\n         */\n        showMoreRefinements(btn) {\n            const showMoreResultsContainer = btn.get()?.parentElement;\n            const refinementsBlock = showMoreResultsContainer?.parentElement;\n\n            if (refinementsBlock) {\n                // @ts-ignore\n                const refinementsItems = new RefElement(Array.from(refinementsBlock.children));\n\n                refinementsItems.show();\n\n                const showMoreResultsContainerRefElement = new RefElement([showMoreResultsContainer]);\n\n                showMoreResultsContainerRefElement.hide();\n            }\n        }\n\n        /**\n         * @description Toggle ideas search\n         * @param {RefElement} checkbox toggle checkbox\n         * @returns {void}\n         */\n        toggleIdeas(checkbox) {\n            this.eventBus().emit(GTM_DATALAYER_EVENT, {\n                event: GTM_EVENT,\n                eventCategory: 'Filter toggle click',\n                eventAction: !this.prefs().refinedByIdeas ? 'ideas' : 'products',\n                // @ts-ignore\n                eventLabel: this.prefs().category\n            });\n            // @ts-ignore\n            this.updateView(checkbox);\n        }\n\n        /**\n         * @description handles update view\n         * @param {RefElement} button - clicked button\n         * @param {object} data - additional data params\n         * @param {boolean} data.refinementPanelUpdate - refinement update flag\n         */\n        handleUpdateView(button) {\n            button.addClass('-loading');\n            let updateURL = button.data('href');\n            const refinementSelected = button.data('checked');\n            const alertMessage = refinementSelected\n                ? this.prefs().accessibilityAlerts.filterremoved\n                : this.prefs().accessibilityAlerts.filtersapplied;\n\n            if (window.location.href.includes('/th/') || window.location.href.includes(THEMATIC)) {\n                updateURL += '&thematic=true';\n            }\n\n            // @ts-ignore\n            this.updateByUrl(updateURL, undefined, true)\n                .then(() => {\n                    button.removeClass('-loading');\n                    this.accessibilityAlert(alertMessage);\n\n                    if (button.data('reset')) {\n                        this.eventBus().emit('refinement.panel.close');\n                    } else {\n                        this.eventBus().emit('refinement.panel.retainPanelState');\n                    }\n                });\n        }\n\n        /**\n         * @description Update View\n         * Has additional logic as per requirements when switching views between ideas/products\n         * @listens dom#click\n         * @param {RefElement|widget} button Target element\n         * @param {object} data - additional config\n         * @returns {void}\n         */\n        // @ts-ignore\n        updateView(button, data) {\n            if (button.data('gtmEventLabel') && !button.config?.checked) {\n                this.eventBus().emit(GTM_DATALAYER_EVENT, {\n                    event: GTM_EVENT,\n                    eventCategory: this.prefs().refinedByIdeas ? 'Ideas interaction' : 'Filter interaction',\n                    eventAction: 'Apply',\n                    eventLabel: button.data('gtmEventLabel'),\n                    eventSublabel: button.data('gtmEventSublabel')\n                });\n            }\n\n            if (!this.prefs().keywordSearch) {\n                this.handleUpdateView(button, data);\n\n                return;\n            }\n\n            const isToggleIdeasButton = button.data('toggleIdeas');\n            const currentToggleIdeasState = this.prefs().refinedByIdeas\n                ? IDEAS : PRODUCTS;\n            const futureToggleIdeaState = currentToggleIdeasState === IDEAS\n                ? PRODUCTS : IDEAS;\n\n            // @ts-ignore\n            if (isToggleIdeasButton && this.latestHref[futureToggleIdeaState]) {\n                // @ts-ignore\n                this.updateByUrl(this.latestHref[futureToggleIdeaState], undefined, true)\n                    .then(() => this.accessibilityAlert(\n                        this.prefs().accessibilityAlerts.productlistupdated\n                    ));\n\n                return;\n            }\n\n            if (!isToggleIdeasButton) {\n                // @ts-ignore\n                this.latestHref[currentToggleIdeasState] = button.data('href');\n                // @ts-ignore\n                this.latestHref[futureToggleIdeaState] = undefined;\n            }\n\n            this.handleUpdateView(button, data);\n        }\n\n        /**\n         * @description Load more products\n         * @listens dom#click\n         * @param {RefElement} button Target element\n         * @returns {void}\n         */\n        loadMore(button) {\n            this.eventBus().emit(GTM_DATALAYER_EVENT, {\n                event: GTM_EVENT,\n                eventCategory: 'Key interactions',\n                eventAction: 'Load more'\n            });\n\n            const href = button.data('show-url');\n            const history = {\n                showUrl: button.attr('href'),\n                showAjaxUrl: button.data('show-ajax-url')\n            };\n            var url = '';\n\n            // @ts-expect-error ts-migrate(2339) FIXME: Property 'productPositions' does not exist on type... Remove this comment to see the full error message\n            const model = window.searchModel;\n\n            if (typeof href === 'string') {\n                url = href;\n            }\n\n            this.ref('loadMoreBlock').remove();\n            this.loadChunk(url, (/** @type {string} */ response) => {\n                if (typeof response === 'string') {\n                    this.ref('productGrid').append(response);\n                    this.accessibilityAlert(this.prefs().accessibilityAlerts.productlistupdated);\n                    setTimeout(() => this.eventBus().emit(GRID_UPDATING_EVENT, {\n                        url: history.showUrl,\n                        model: model\n                    }), 0);\n                }\n            }, true, history);\n        }\n\n        /**\n         * @description Update product grid by url\n         * @param {string} url Update URL\n         * @param {refElement} ref Reference element\n         * @param {boolean} handleHistory Handle history flag\n         * @returns {Promise<object|null>} Promise object represents server response with products list markup\n         */\n        // @ts-ignore\n        updateByUrl(url, ref, handleHistory) {\n            return super.updateByUrl(url, ref, handleHistory)\n                .then(response => {\n                    this.setGridType();\n\n                    this.eventBus().emit('virtual.page.load');\n\n                    return response;\n                });\n        }\n\n        /**\n         * @description No Result Combination handler\n         * Added empty object as a parameter in order not to rise error\n         * @returns {void}\n         */\n        handleNoResult() {\n            // @ts-ignore\n            this.getById('noResultPopup', popup => popup.showModal({}));\n        }\n\n        /**\n         * @description toggle grid type class\n         * @param {boolean} isAlternativeGrid widget container element\n         * @returns {void}\n         */\n        toggleGridType(isAlternativeGrid) {\n            this.ref('productGrid').toggleClass(this.prefs().classesProductGridAlternative, !!isAlternativeGrid);\n        }\n\n        /**\n         * @description Executes on no refinements combination popup closed\n         * @returns {void}\n         */\n        onNoResultPopupClosed() {\n            let refinedByIdeas = false;\n\n            const RefinementsPanel = this.getConstructor('refinementsPanel');\n\n            this.eachChild(child => {\n                if (child instanceof RefinementsPanel) {\n                    // @ts-ignore\n                    child.getRefinementsModel();\n                    // @ts-ignore\n                    refinedByIdeas = child?.model?.refinedByIdeas;\n                }\n            });\n\n            if (!refinedByIdeas) {\n                this.has('toggleIdeas', toggleIdeas => toggleIdeas.prop('checked', false));\n            }\n        }\n\n        /**\n         * @description Start lazyload of product tiles during window scroll\n         * @returns {void}\n         */\n        startLazyload() {\n            this.lazyloadAllowed = true;\n\n            this.has('loadMoreButton', loadMoreButton => this.loadMore(loadMoreButton));\n        }\n\n        /**\n         * @description On `lazyload` event triggered - send `loadMore` request\n         * @returns {void}\n         */\n        lazyload() {\n            if (!this.lazyloadAllowed) {\n                return;\n            }\n\n            this.has('loadMoreButton', loadMoreButton => this.loadMore(loadMoreButton));\n        }\n\n        /**\n         * @description Update Grid\n         * @listens dom#change\n         * @param {InputSelect} select Target element\n         * @returns {void}\n         */\n        updateGrid(select) {\n            const selectedSorting = select.getSelectedOptions();\n\n            if (selectedSorting) {\n                let url = selectedSorting.data('url');\n\n                if (window.location.href.includes('/th/') || window.location.href.includes(THEMATIC)) {\n                    url += '&thematic=true';\n                }\n\n                // @ts-ignore\n                this.updateByUrl(url, undefined, true)\n                    .then(() => this.afterUpdateGrid());\n            }\n        }\n\n        /**\n         * @description Handle History\n         * @param {boolean} [isReplace] Replace flag\n         * @param {object} [history] history object\n         * @returns {void}\n         */\n        handleHistory(isReplace = false, history) {\n            if (window.location.href.includes('/th/') || window.location.href.includes(THEMATIC)) {\n                return;\n            }\n\n            const state = {\n                ajaxUrl: history ? history.showAjaxUrl : this.prefs().showAjaxUrl\n            };\n            let historyURL = history ? history.showUrl : this.prefs().showUrl;\n            const lcHref = window.location.href.toLowerCase();\n\n            if (lcHref.includes('plppdpproduct') && this.hasPaidParams(lcHref)) {\n                historyURL = this.copyPaidParams(window.location.href, historyURL);\n            }\n\n            if (document.location.hash) {\n                historyURL += document.location.hash;\n            }\n\n            if (isReplace) {\n                window.history.replaceState(state, '', historyURL);\n            } else {\n                window.history.pushState(state, '', historyURL);\n            }\n        }\n\n        /**\n         * @description Check if the given URL contains any paid params (UTM, GCLID, etc.) based on the config.\n         * @param {string} url - URL string to check\n         * @returns {boolean} - True if the URL contains paid params, otherwise false\n         */\n        hasPaidParams(url) {\n            const configParams = this.prefs().copyUrlParamsConfig.toLowerCase().split(',');\n            const urlParams = new URL(url).searchParams;\n\n            for (const [key] of urlParams) {\n                if (this.matchesConfigPattern(key.toLowerCase(), configParams)) {\n                    return true;\n                }\n            }\n            return false;\n        }\n\n        \n        /**\n         * @description Determine if a given key matches any patterns in the config (e.g., \"utm*\" matches \"utm_source\").\n         * @param {string} key - The key to check\n         * @param {Array<string>} patterns - Array of patterns to match against\n         * @returns {boolean} - True if the key matches any pattern, otherwise false\n         */\n        matchesConfigPattern(key, patterns) {\n            return patterns.some(pattern => {\n                if (pattern.endsWith('*')) {\n                    // Wildcard match: Check if the key starts with the pattern (excluding the '*')\n                    return key.startsWith(pattern.slice(0, -1));\n                }\n                // Exact match\n                return key === pattern;\n            });\n        }\n\n        /**\n         * @description Copy Parameters from paid redirect based on configuration\n         * @param {string} [currentURL] URL with params\n         * @param {string} [historyURL] history URL\n         * @returns {string} Updated history URL\n         */\n        copyPaidParams(currentURL, historyURL) {\n            const currentURLObj = new URL(currentURL);\n            const historyURLObj = new URL(historyURL);\n\n            // Convert comma-separated string into an array of patterns\n            const configPatterns = this.prefs().copyUrlParamsConfig.split(',').map(param => param.trim().toLowerCase());\n\n            currentURLObj.searchParams.forEach((value, key) => {\n                const keyLower = key.toLowerCase();\n\n                // Copy parameter if it matches any configuration pattern\n                if (this.matchesConfigPattern(keyLower, configPatterns)) {\n                    historyURLObj.searchParams.set(key, value);\n                }\n            });\n\n            return historyURLObj.toString();\n        }\n\n        /**\n         * @description after update grid events\n         */\n        afterUpdateGrid() {\n            this.accessibilityAlert(this.prefs().accessibilityAlerts.sortingapplied);\n        }\n\n        /**\n         * @description Busy\n         * @returns {void}\n         */\n        busy() {\n            super.busy();\n\n            this.getById(\n                'refinementsPanel',\n                refinementsPanel => refinementsPanel.ref('panel').addClass(this.prefs().classesBusy).attr('aria-busy', 'true')\n            );\n        }\n\n        /**\n         * @description Unbusy\n         * @returns {void}\n         */\n        unbusy() {\n            super.unbusy();\n\n            this.getById(\n                'refinementsPanel',\n                refinementsPanel => refinementsPanel.ref('panel').removeClass(this.prefs().classesBusy).attr('aria-busy', false)\n            );\n        }\n\n        /**\n         * @description Load previous products\n         * @listens dom#click\n         * @param {RefElement} button Target element\n         * @returns {void}\n         */\n        loadPrev(button) {\n            let firstAvailableTile;\n            let firstAvailableTileOffset;\n\n            this.has('productGrid', productGrid => {\n                const productTiles = productGrid.get()?.querySelectorAll('[data-widget=\"productTile\"]');\n\n                if (productTiles && productTiles.length) {\n                    firstAvailableTile = productTiles[0];\n                    firstAvailableTileOffset = firstAvailableTile.getBoundingClientRect().top\n                        - firstAvailableTile.offsetTop;\n                }\n            });\n\n            const href = button.data('show-url');\n            const history = {\n                showUrl: button.attr('href'),\n                showAjaxUrl: button.data('show-ajax-url')\n            };\n            var url = '';\n\n            // @ts-expect-error ts-migrate(2339) FIXME: Property 'productPositions' does not exist on type... Remove this comment to see the full error message\n            const model = window.searchModel;\n\n            if (typeof href === 'string') {\n                url = href;\n            }\n\n            this.ref('loadPrevBlock').remove();\n            this.loadChunk(url, (/** @type {string} */ response) => {\n                if (typeof response === 'string') {\n                    this.ref('productGrid').prepend(response);\n                    this.accessibilityAlert(this.prefs().accessibilityAlerts.productlistupdated);\n                    setTimeout(() => this.eventBus().emit(GRID_UPDATING_EVENT, {\n                        url: history.showUrl,\n                        model: model\n                    }), 0);\n\n                    if (firstAvailableTile) {\n                        scrollWindowTo(firstAvailableTile, true, {\n                            behavior: 'auto',\n                            top: -(firstAvailableTileOffset - getStickyHeaderHeight())\n                        });\n                    }\n                }\n            }, true, history);\n        }\n\n        /**\n         * @description Calculate Inline Slot Title's width\n         * @returns {void}\n         */\n        calculateInlineSlotWidth() {\n            this.inlineSlots?.forEach(item => {\n                const inlineSlotsTitle = item.querySelector('.b-plp_grid_slot-title');\n\n                if (inlineSlotsTitle) {\n                    inlineSlotsTitle.style.width = Math.ceil(inlineSlotsTitle.getBoundingClientRect().width) + 'px';\n                }\n\n                item.classList.add(this.prefs().classesInited);\n            });\n        }\n    }\n\n    return ProductListingMgr;\n}\n","/**\n * @typedef {typeof import('widgets/Widget').default} Widget\n */\n\n/**\n * @description QuickViewNavigation implementation\n * @param {Widget} Widget Base widget for extending\n * @returns {typeof QuickViewNavigation} QuickViewNavigation class\n */\nexport default function (Widget) {\n    /**\n     * @class QuickViewNavigation\n     * @augments Widget\n     */\n    class QuickViewNavigation extends Widget {\n        prefs() {\n            return {\n                productId: '',\n                ...super.prefs()\n            };\n        }\n\n        init() {\n            super.init();\n\n            this.initNavigation();\n        }\n\n        /**\n         * @description Hides next/previous links according to product tile position in search grid\n         * @returns {void}\n         */\n        initNavigation() {\n            this.eventBus().emit('productlistingmgr.execute', productListingMgr => {\n                const productId = this.prefs().productId;\n\n                if (productListingMgr.isFirstTile(productId)) {\n                    this.has('previous', previous => previous.hide());\n                }\n\n                if (productListingMgr.isLastTile(productId)) {\n                    this.has('next', next => next.hide());\n                }\n            });\n        }\n\n        /**\n         * @description Show previous product tile quick view\n         * @returns {void}\n         */\n        previous() {\n            this.eventBus().emit('quickview.show.previous', this.prefs().productId);\n        }\n\n        /**\n         * @description Show next product tile quick view\n         * @returns {void}\n         */\n        next() {\n            this.eventBus().emit('quickview.show.next', this.prefs().productId);\n        }\n    }\n\n    return QuickViewNavigation;\n}\n","/**\n * @typedef {ReturnType<typeof import('widgets/search/Refinement').default>} RefinementBase\n */\n\n/**\n * @description Extend Refinement implementation\n * @param {RefinementBase} RefinementBase Base widget for extending\n * @returns {typeof Refinement} Refinement extending widget\n */\nexport default function (RefinementBase) {\n    /**\n     * @category widgets\n     * @subcategory search\n     * @class Refinement\n     * @augments RefinementBase\n     */\n    class Refinement extends RefinementBase {\n        prefs() {\n            return {\n                attrCount: 0,\n                ...super.prefs()\n            };\n        }\n\n        init() {\n            super.init();\n\n            if (this.prefs().isRanged) {\n                this.value = decodeURIComponent(this.prefs().attrValue);\n            }\n        }\n\n        /**\n         * @description Return count product\n         * @returns {number} count product\n         */\n        getCount() {\n            return this.prefs().attrCount;\n        }\n\n        /**\n         * @description Check\n         */\n        check() {\n            this.ref('self').attr('aria-checked', 'true');\n            this.setPref('pendingFilter', true);\n\n            this.selected = true;\n        }\n\n        /**\n         * @description Uncheck\n         */\n        uncheck() {\n            this.ref('self').attr('aria-checked', 'false');\n            this.setPref('pendingFilter', false);\n\n            this.selected = false;\n        }\n    }\n\n    return Refinement;\n}\n","import { setCookie, getCookie } from 'widgets/toolbox/cookie';\n\n/**\n * @typedef {typeof import('widgets/Widget').default} Widget\n * @typedef {InstanceType <typeof import('widgets/toolbox/RefElement').RefElement>} RefElement\n * @typedef {InstanceType<ReturnType<typeof import('widgets/global/Button').default>>} button\n */\n\nconst GRID_MODE_PRODUCTS = 'products';\n\nconst GRID_TYPE_BASIC = 'basicGrid';\nconst GRID_TYPE_ALTERNATIVE = 'alternativeGrid';\n\n/**\n * @param {Widget} Widget Base widget for extending\n * @returns {typeof RefinementsGridToggle} RefinementsGridToggle class\n */\n\nexport default function (Widget) {\n    /**\n     * @category widgets\n     * @subcategory search\n     * @class RefinementsGridToggle\n     * @augments Widget\n     * @classdesc Represents RefinementsGridToggle component\n    */\n\n    class RefinementsGridToggle extends Widget {\n        prefs() {\n            return {\n                classesGridButtonActive: 'm-active',\n                gridCookieProducts: 'productsGridType',\n                gridCookieIdeas: 'ideasGridType',\n                gridMode: GRID_MODE_PRODUCTS,\n                gridTypeDefault: '',\n                ...super.prefs()\n            };\n        }\n\n        /**\n         * @description Set grid type for SM viewport. Called on page load,\n         * any refinements applied/unapplied, sorting rule updated etc.\n         * @returns {void}\n         */\n        setGridType() {\n            const gridCookieName = this.config.gridMode === GRID_MODE_PRODUCTS\n                ? this.prefs().gridCookieProducts\n                : this.prefs().gridCookieIdeas;\n\n            const gridType = getCookie(gridCookieName) || this.prefs().gridTypeDefault;\n\n            if (gridType) {\n                this.activateGrid(gridType === GRID_TYPE_ALTERNATIVE);\n            }\n        }\n\n        /**\n         * @description handle click on grid toggle icon and emmit parent method\n         * @param {button} clickedButton current clicked button\n         * @returns {void}\n         */\n        handleGridClick(clickedButton) {\n            if (!clickedButton) {\n                return;\n            }\n\n            const isAlternativeGrid = clickedButton.data('id') === GRID_TYPE_ALTERNATIVE;\n\n            this.activateGrid(isAlternativeGrid);\n\n            setCookie(\n                this.config.gridMode === GRID_MODE_PRODUCTS\n                    ? this.prefs().gridCookieProducts : this.prefs().gridCookieIdeas,\n                isAlternativeGrid ? GRID_TYPE_ALTERNATIVE : GRID_TYPE_BASIC\n            );\n        }\n\n        /**\n         * @description Activate concrete grid type\n         * @param {boolean} isAlternativeGrid is alternative grid switched on\n         * @returns {void}\n         */\n        activateGrid(isAlternativeGrid) {\n            this.deactivateGridButtons();\n\n            this.getById(\n                isAlternativeGrid ? GRID_TYPE_ALTERNATIVE : GRID_TYPE_BASIC,\n                (/** @type {button} */gridButton) => gridButton.activate()\n            );\n\n            // Emit toggle alternative grid class on parent widget {ProductListingMgr}\n            this.emitWithoutContext('togglerefinementsgrid', isAlternativeGrid);\n        }\n\n        /**\n         * @description deactivate (remove) grid buttons class names\n         * @returns {void}\n         */\n        deactivateGridButtons() {\n            [GRID_TYPE_BASIC, GRID_TYPE_ALTERNATIVE]\n                .forEach(gridType => {\n                    this.getById(\n                        gridType,\n                        (/** @type {button} */gridButton) => gridButton.removeClass(\n                            this.prefs().classesGridButtonActive\n                        )\n                    );\n                });\n        }\n    }\n\n    return RefinementsGridToggle;\n}\n","import { timeout } from 'widgets/toolbox/util';\nimport { getJSONByUrl } from 'widgets/toolbox/ajax';\nimport {\n    appendParamsToUrl,\n    getUrlParams,\n    removeParamFromURL\n} from 'widgets/toolbox/util';\n\n/**\n * @typedef {ReturnType<typeof import('widgets/search/RefinementsPanel').default>} RefinementsPanelBase\n */\n\n/**\n * @description Extend RefinementsPanel implementation\n * @param {RefinementsPanelBase} RefinementsPanelBase Base widget for extending\n * @returns {typeof RefinementsPanel} RefinementsPanel extending widget\n */\nexport default function (RefinementsPanelBase) {\n    /**\n     * @category widgets\n     * @subcategory search\n     * @class RefinementsPanel\n     * @augments RefinementsPanelBase\n     */\n    class RefinementsPanel extends RefinementsPanelBase {\n        /**\n         * @description Overloaded Get Refinements Model\n         * - `ratings` attribute mustache rendering support with stars\n         * @returns {void}\n         */\n        getRefinementsModel() {\n            super.getRefinementsModel();\n\n            this.model.starsRating = this.getStarsRatingFunction();\n        }\n\n        /**\n         * @description Mustache helper for displaying rating stars for refinement\n         * @returns {Function} mustache helper for stars rating rendering\n         */\n        getStarsRatingFunction() {\n            return function () {\n                return function (text, render) {\n                    const currentValue = render(text);\n\n                    if (Number.isNaN(currentValue)) {\n                        return currentValue;\n                    }\n\n                    const currentRating = parseInt(currentValue, 10);\n                    const stars = [1, 2, 3, 4, 5].reduce((acc, val) => {\n                        return acc + '<use href=\"' + (val <= currentRating ? '#star' : '#star-empty') + '\"'\n                            + ' y=\"0\" x=\"' + (val > 1 ? (Math.round(val - 1) * 18) : 0) + '\" />';\n                    }, '');\n\n                    return '<svg class=\"b-rating-icon\" width=\"90\" height=\"16\" focusable=\"false\">'\n                        + stars\n                        + '</svg>';\n                };\n            };\n        }\n\n        /**\n         * @description Update Panel\n         * @emits RefinementsPanel#noresult\n         * @param {object} data Update data\n         * @returns {void}\n         */\n        updatePanel(data) {\n            this.ref('dialog').attr('aria-busy', 'true');\n            this.ref('panel').removeClass(this.prefs().classesActiveLevel + 2).addClass(this.prefs().classesActiveLevel + 1);\n\n            // apply filters and results count only after panel is change back\n            this.onDestroy(timeout(() => {\n                getJSONByUrl(data.url).then(res => {\n                    const param = getUrlParams(data.url);\n\n                    if (Object.keys(res).length && res.count) {\n                        this.render(\n                            'template',\n                            {\n                                ...res,\n                                starsRating: this.getStarsRatingFunction(),\n                                updateUrl: removeParamFromURL(appendParamsToUrl(this.prefs().showAjaxUrl, param), 'ajax')\n                            },\n                            this.ref('dialog')\n                        ).then(() => {\n                            this.ref('dialog').addClass(this.prefs().classesDialogOpen);\n                            this.ref('dialog').attr('aria-busy', 'false');\n                            this.defineItems();\n                            this.setFocusToFirstItem();\n                        });\n                    } else {\n                        /**\n                         * @description Event to\n                         * @event RefinementsPanel#noresult\n                         */\n                        this.emit('noresult');\n                    }\n                });\n            }, this.prefs().itemSwitchTimeout));\n        }\n\n        /**\n         * @description Open Menu Panel\n         * @param {object} data data\n         * @returns {Promise<void>} Promise object represents panel rendering result\n         */\n        openPanel(data) {\n            if (data || !this.isOpen) {\n                return super.openPanel(data);\n            }\n\n            return Promise.resolve();\n        }\n    }\n\n    return RefinementsPanel;\n}\n","/**\n * @typedef {ReturnType<typeof import('widgets/search/RefinementsPanelToggle').default>} RefinementsPanelToggleBase\n */\n\n/**\n * @description Extends RefinementsPanelToggle implementation\n * @param {RefinementsPanelToggleBase} RefinementsPanelToggleBase Base widget for extending\n * @returns {typeof RefinementsPanelToggle} RefinementsPanelToggle extending widget\n */\nexport default function (RefinementsPanelToggleBase) {\n    class RefinementsPanelToggle extends RefinementsPanelToggleBase {\n        init() {\n            super.init();\n\n            this.initGlobalEvents();\n        }\n\n        /**\n         * @description inits global events\n         */\n        initGlobalEvents() {\n            this.eventBus().on('refinement.panel.show', 'showPanel');\n        }\n    }\n\n    return RefinementsPanelToggle;\n}\n","/**\n * @typedef {typeof import('widgets/Widget').default} Widget\n */\n\nimport { getScrollPosition } from 'widgets/toolbox/scroll';\n\n/**\n * @param {Widget} Widget Base widget for extending\n * @returns {typeof StickyRefinements} StickyRefinements widget\n */\nexport default function (Widget) {\n    /**\n     * @category widgets\n     * @subcategory search\n     * @class StickyRefinements\n     * @augments Widget\n     * @classdesc StickyRefinements helper.\n     */\n    class StickyRefinements extends Widget {\n        init() {\n            super.init();\n\n            const selfEl = this.ref('self').get();\n            const stickyContentEl = this.ref('stickyContent').get();\n\n            let lastScrollPosition = getScrollPosition();\n\n            if (selfEl && stickyContentEl) {\n                this.ev('scroll', () => {\n                    const curentScrollPosition = getScrollPosition();\n                    const positionDelta = curentScrollPosition - lastScrollPosition;\n\n                    if (positionDelta > 0) {\n                        if (stickyContentEl.offsetTop > 0) {\n                            stickyContentEl.scrollTop += positionDelta;\n                        }\n                    } else if (stickyContentEl.offsetTop < stickyContentEl.scrollTop) {\n                        stickyContentEl.scrollTop += positionDelta;\n                    }\n\n                    lastScrollPosition = curentScrollPosition < 0 ? 0 : curentScrollPosition;\n                }, window);\n            }\n        }\n    }\n\n    return StickyRefinements;\n}\n","/**\n * @typedef {InstanceType<typeof import('widgets/toolbox/RefElement').RefElement>} refElement\n */\n\n/**\n * @param BasicForm Base widget for extending\n * @returns NoSearchResultsForm widget\n */\nexport default function (BasicForm: ReturnType<typeof import('widgets/forms/BasicForm').default>) {\n    /**\n     * @category widgets\n     * @subcategory search\n     * @class NoSearchResultsForm\n     * @augments BasicForm\n     * @classdesc NoSearchResultsForm widget component with next features:\n     * 1. This is simplified form with no validation rules applied\n     * 2. Has an ability to clear user input by pressing button\n     * @property {string} data-widget - Widget name \"noSearchResultsForm\"\n     * @property {string} data-classes-clear-enabled - class to toggle on clear input button\n     * @example <caption>Example of NoSearchResultsForm widget usage</caption>\n     * <form\n     *     action=\"${URLUtils.url('Search-Show')}\"\n     *     method=\"GET\"\n     *     data-widget=\"noSearchResultsForm\"\n     *     data-event-submit=\"handleSubmit\"\n     * >\n     *     ... form contents\n     *     <input data-ref=\"input\" role=\"combobox\" name=\"q\" value=\"\" data-event-input=\"handleInput\" />\n     *     <button data-ref=\"clearButton\" data-event-click=\"clearInput\"\n     *         type=\"reset\"\n     *         title=\"${Resource.msg('header.search.clear', 'search', null)}\"\n     *         tabindex=\"-1\"\n     *     >\n     *         <isinclude template=\"/common/svg/clear\" />\n     *     </button>\n     *     ... submit button\n     * </form>\n     */\n    class NoSearchResultsForm extends BasicForm {\n        prefs() {\n            return {\n                classesClearEnabled: 'm-visible',\n                ...super.prefs()\n            };\n        }\n\n        /**\n         * @description Submit form simplified handler\n         * @param {refElement} _el event source element\n         * @param {Event} event event instance\n         * @returns {void}\n         */\n        handleSubmit(_el, event) {\n            if (!this.ref('input').val()) {\n                event.preventDefault();\n            }\n        }\n\n        /**\n         * @description Handle input event into the form field\n         * @listens dom#input\n         * @returns {void}\n         */\n        handleInput() {\n            this.toggleClearButton(!!this.ref('input').val());\n        }\n\n        /**\n         * @description Toggle Clear Button based on input value\n         * @param {boolean} isInputHasValue - indicates if input has a value\n         * @returns {void}\n         */\n        toggleClearButton(isInputHasValue) {\n            this.ref('clearButton').toggleClass(this.prefs().classesClearEnabled, isInputHasValue);\n        }\n\n        /**\n         * @description Clear input field\n         * @returns {void}\n         */\n        clearInput() {\n            const searchInput = this.ref('input');\n\n            searchInput.val('');\n\n            const searchInputField = searchInput.get();\n\n            if (searchInputField) {\n                searchInputField.focus();\n            }\n\n            this.toggleClearButton(false);\n        }\n    }\n\n    return NoSearchResultsForm;\n}\n","import { RefElement } from 'widgets/toolbox/RefElement';\nimport { get } from 'widgets/toolbox/util';\nimport { scrollWindowTo } from 'widgets/toolbox/scroll';\nimport { getContentByUrl } from 'widgets/toolbox/ajax';\nimport {\n    appendParamToURL\n} from 'widgets/toolbox/util';\n\nconst keyCode = Object.freeze({\n    RETURN: 13,\n    ESC: 27\n});\nconst GRID_UPDATING_EVENT = 'products.grid.updated';\n\n/**\n * @typedef {ReturnType<typeof import('widgets/product/ProductTile').default>} ProductTile\n * @typedef {ReturnType<typeof import('widgets/forms/InputSelect').default>} InputSelect\n * @typedef {InstanceType<typeof import('widgets/toolbox/RefElement').RefElement>} RefElement\n * @typedef {InstanceType<typeof import('widgets/Widget').default>} widget\n */\n\n/**\n * @param Tabs Base widget for extending\n * @returns ProductListingMgr widget\n */\nexport default function (Tabs: ReturnType<typeof import('widgets/global/Tabs').default>) {\n    /**\n     * @category widgets\n     * @subcategory search\n     * @class ProductListingMgr\n     * @augments Tabs\n     * @classdesc Represents ProductListingMgr component with next features:\n     * 1. Updating product grid using product refinement, sorting and paging\n     * 2. Load previous/next product tile\n     * 3. Allow handling no search result case\n     * 4. Allow handling \"Enter\" keydown event to be able to skip refinements and set focus to the first element of the grid\n     * @property {string} data-show-url Search show url\n     * @property {string} data-show-ajax-url Search show AJAX url\n     * @property {string} data-load-more-block Block with a button `Load more` for products\n     * @property {string} data-load-more-prev Block with a button `Load previous` for products\n     * @property {string} data-product-progress-indicator - reference element with search progress indicator for products search\n     * @property {string} data-content-progress-indicator - reference element with search progress indicator for content search\n     * @property {string} data-load-more-content-block - Block with a button `Load more` for content\n     * @property {object} data-accessibility-alerts - Accessibility alerts messages for different user actions\n     * @property {boolean} data-first-page - First page flag\n     * Possible values are: `filtersapplied`, `filterremoved`, `sortingapplied`, `productlistupdated`, `addedtowishlist`, `previousstatereverted`\n     * @example <caption>Example of ProductListingMgr widget usage</caption>\n     * <div\n     *     data-widget=\"productListingMgr\"\n     *     data-show-url=\"${pdict.productSearch.historyUrl}\"\n     *     data-show-ajax-url=\"${pdict.productSearch.ajaxUrl}\"\n     *     data-event-keydown=\"handleKeydown\"\n     *     data-auto-activation=\"true\"\n     *     data-accessibility-alerts='{\n     *         \"filtersapplied\": \"${Resource.msg('alert.filtersapplied', 'search', null)}\",\n     *         \"filterremoved\": \"${Resource.msg('alert.filterremoved', 'search', null)}\",\n     *         \"sortingapplied\": \"${Resource.msg('alert.sortingapplied', 'search', null)}\",\n     *         \"productlistupdated\": \"${Resource.msg('alert.productlistupdated', 'search', null)}\",\n     *         \"contentlistupdated\": \"${Resource.msg('alert.contentlistupdated', 'search', null)}\",\n     *         \"addedtowishlist\": \"${Resource.msg('alert.addedtowishlist', 'product', null)}\",\n     *         \"previousstatereverted\": \"${Resource.msg('alert.previousstatereverted', 'search', null)}\"\n     *     }'\n     * >\n     *     .... product list contents\n     * </div>\n     */\n    class ProductListingMgr extends Tabs {\n        isPanelActive = false;\n\n        lastActiveCategory = '';\n\n        prefs() {\n            return {\n                classesActiveSection: 'm-expanded',\n                classesBusy: 'm-busy',\n                loadMoreBlock: 'loadMoreBlock',\n                loadPrevBlock: 'loadPrevBlock',\n                loadMoreContentBlock: 'loadMoreContentBlock',\n                accessibilityAlerts: <TAccessibilityAlerts>{},\n                showAjaxUrl: '',\n                showUrl: '',\n                firstPage: true,\n                ...super.prefs()\n            };\n        }\n\n        /**\n         * @description Initialize widget logic\n         * @returns {void}\n         */\n        init() {\n            super.init();\n            this.initEvents();\n\n            // @ts-expect-error ts-migrate(2554) FIXME: Expected 2 arguments, but got 1.\n            this.handleHistory(true);\n\n            if (!this.prefs().firstPage) {\n                scrollWindowTo(this.ref('grid').get(), true);\n            }\n\n            this.eventBus().on('refinement.panel.open', 'openPanel');\n            this.eventBus().on('refinement.panel.close', 'closePanel');\n            this.eventBus().on('refinement.panel.retainPanelState', 'retainPanelState');\n            this.eventBus().on('accordion.panel.open', 'lastAccordionCategory');\n        }\n\n        /**\n         * @description Keep record of last accordion panel ID\n         * @param {refElement} el - Button\n         */\n        lastAccordionCategory(el: RefElement) {\n            const e = el?.els[0];\n\n            if (e) {\n                this.lastActiveCategory = e.id;\n            }\n        }\n\n        /**\n         * @description Open Menu Panel\n         */\n        openPanel() {\n            this.isPanelActive = true;\n\n            setTimeout(() => {\n                // Set focus to panel, timeout to cater for inability to focus not visible element, since it animates in via CSS\n                this.ref('refinementsPanel').focus();\n            }, 100);\n\n            this.ref('refinementsPanel').addClass('-active');\n            this.ref('html').addClass('m-has_dialog');\n        }\n\n        /**\n         * @description Close Menu Panel\n         */\n        closePanel() {\n            if (this.isPanelActive) {\n                this.isPanelActive = false;\n                this.ref('refinementsPanel').removeClass('-active');\n                this.ref('html').removeClass('m-has_dialog');\n                this.eventBus().emit('refresh.accordion.close');\n            }\n        }\n\n        /**\n         * @description Retain the panel state, either previously open or closed\n         */\n        retainPanelState() {\n            if (this.isPanelActive) {\n                this.openPanel();\n            } else {\n                this.closePanel();\n            }\n        }\n\n        /**\n         * @description Keep the mobile accordion panel open\n         */\n        retainAccordion() {\n            this.eventBus().emit('refresh.accordion.reinit');\n        }\n\n        /**\n         * @description Keep the last active category accordion open\n         */\n        retainLastCategory() {\n            const findCategory = document.getElementById(this.lastActiveCategory);\n\n            if (findCategory && findCategory.getAttribute('aria-expanded') === 'false') {\n                findCategory.click();\n            }\n        }\n\n        /**\n         * @description Close On Backdrop handler\n         * @listens dom#click\n         * @param {RefElement} [ref] Reference element\n         * @param event - event object\n         */\n        closeOnBackdrop(ref: RefElement, event: Event) {\n            if (event.target === this.ref('refinementsPanel').get()) {\n                this.closePanel();\n            }\n        }\n\n        /**\n         * @description Update product grid by url\n         * @param {string} url Update URL\n         * @param {RefElement} [ref] Reference element\n         * @param {boolean} [handleHistory] Handle history flag\n         * @emits \"products.grid.updated\"\n         * @returns {Promise<object|null>} Promise object represents server response with products list markup\n         */\n        updateByUrl(url, ref, handleHistory) {\n            this.busy();\n\n            return getContentByUrl(url)\n                .then(response => {\n                    if (typeof response === 'string') {\n                        return this.render(undefined, undefined, ref || this.ref('self'), response)\n                            .then(() => {\n                                this.eventBus().emit(GRID_UPDATING_EVENT);\n\n                                if (handleHistory) {\n                                    // @ts-expect-error ts-migrate(2554) FIXME: Expected 2 arguments, but got 0.\n                                    this.handleHistory();\n                                    scrollWindowTo(this.ref('grid').get(), true);\n                                }\n\n                                this.handleRetainment();\n                            })\n                            .then(() => response);\n                    } else {\n                        return response;\n                    }\n                }).catch(() => {\n                    this.handleNoResult();\n\n                    return Promise.resolve(null);\n                })\n                .finally(() => {\n                    this.unbusy();\n                });\n        }\n\n        /**\n         * @description Determine panel state after update success\n         */\n        handleRetainment() {\n            if (this.isPanelActive) {\n                this.retainAccordion();\n            }\n\n            if (this.lastActiveCategory) {\n                this.retainLastCategory();\n            }\n        }\n\n        /**\n         * @description Handle History\n         * @param {boolean} [isReplace] Replace flag\n         * @param {object} [history] history object\n         * @returns {void}\n         */\n        handleHistory(isReplace = false, history) {\n            const state = {\n                ajaxUrl: history ? history.showAjaxUrl : this.prefs().showAjaxUrl\n            };\n            let historyURL = history ? history.showUrl : this.prefs().showUrl;\n\n            if (document.location.hash) {\n                historyURL += document.location.hash;\n            }\n\n            if (isReplace) {\n                window.history.replaceState(state, '', historyURL);\n            } else {\n                window.history.pushState(state, '', historyURL);\n            }\n        }\n\n        /**\n         * @description Update View\n         * @listens dom#click\n         * @param {RefElement|widget} button Target element\n         * @returns {void}\n         */\n        updateView(button) {\n            const updateURL = button.data('href');\n            const refinementSelected = button.data('checked');\n            const alertMessage = refinementSelected\n                ? this.prefs().accessibilityAlerts.filterremoved\n                : this.prefs().accessibilityAlerts.filtersapplied;\n\n            this.updateByUrl(updateURL, undefined, true)\n                .then(() => this.accessibilityAlert(alertMessage));\n        }\n\n        /**\n         * @description Update Grid\n         * @listens dom#change\n         * @param {InstanceType<InputSelect>} select Target element\n         * @returns {void}\n         */\n        updateGrid(select) {\n            const selectedSorting = select.getSelectedOptions();\n\n            if (selectedSorting) {\n                const url = selectedSorting.data('url');\n\n                this.updateByUrl(url, undefined, true)\n                    .then(() => this.accessibilityAlert(this.prefs().accessibilityAlerts.sortingapplied));\n            }\n        }\n\n        /**\n         * @description Load more products\n         * @listens dom#click\n         * @param {RefElement} button Target element\n         * @returns {void}\n         */\n        loadMore(button) {\n            const href = button.data('show-url');\n            const history = {\n                showUrl: button.attr('href'),\n                showAjaxUrl: button.data('show-ajax-url')\n            };\n            let url = '';\n\n            if (typeof href === 'string') {\n                url = href;\n            }\n\n            this.ref('loadMoreBlock').remove();\n            this.loadChunk(url, response => {\n                if (typeof response === 'string') {\n                    this.ref('productGrid').append(response);\n                    this.accessibilityAlert(this.prefs().accessibilityAlerts.productlistupdated);\n                    setTimeout(() => this.eventBus().emit(GRID_UPDATING_EVENT), 0);\n                }\n            }, true, history);\n        }\n\n        /**\n         * @description Load previous products\n         * @listens dom#click\n         * @param {RefElement} button Target element\n         * @returns {void}\n         */\n        loadPrev(button) {\n            const href = button.data('show-url');\n            const history = {\n                showUrl: button.attr('href'),\n                showAjaxUrl: button.data('show-ajax-url')\n            };\n            let url = '';\n\n            if (typeof href === 'string') {\n                url = href;\n            }\n\n            this.ref('loadPrevBlock').remove();\n            this.loadChunk(url, response => {\n                if (typeof response === 'string') {\n                    this.ref('productGrid').prepend(response);\n                    this.accessibilityAlert(this.prefs().accessibilityAlerts.productlistupdated);\n                    setTimeout(() => this.eventBus().emit(GRID_UPDATING_EVENT), 0);\n                }\n            }, true, history);\n        }\n\n        /**\n         * @description Load more content\n         * @listens dom#click\n         * @param {RefElement} button Target element\n         * @returns {void}\n         */\n        loadMoreContent(button) {\n            const href = button.attr('href');\n            let url = '';\n\n            if (typeof href === 'string') {\n                url = href;\n            }\n\n            this.ref('loadMoreContentBlock').remove();\n\n            // @ts-expect-error ts-migrate(2554) FIXME: Expected 4 arguments, but got 3.\n            this.loadChunk(url, response => {\n                if (typeof response === 'string') {\n                    this.ref('contentGrid').append(response);\n                    // eslint-disable-next-line spellcheck/spell-checker\n                    this.accessibilityAlert(this.prefs().accessibilityAlerts.contentlistupdated);\n                }\n            }, false);\n        }\n\n        /**\n         * @description Loads chunk of data and executes callback. Data might be either products or content\n         * @param {string} url load chunk url\n         * @param {(arg: Response) => void} successCb success callback to be called after chunk was loaded with response as an argument\n         * @param {boolean} handleHistory do we need to handle history change after chunk loaded\n         * @param {object} [history] history object\n         */\n        loadChunk(url, successCb, handleHistory, history) {\n            if (!url) {\n                // eslint-disable-next-line no-console\n                console.error('Somithing wrong with target URL');\n            } else {\n                this.busy();\n                getContentByUrl(\n                    appendParamToURL(url, 'selectedUrl', url)\n                ).then(response => {\n                    successCb(response);\n\n                    if (handleHistory) {\n                        this.handleHistory(true, history);\n                    }\n                }).finally(() => {\n                    this.unbusy();\n                });\n            }\n        }\n\n        /**\n         * @description Show appropriate Global Alert for page changes\n         * @emits \"alert.show\"\n         * @param {string} message - alert message\n         * @returns {void}\n         */\n        accessibilityAlert(message) {\n            // We need to show alerts with delay to not overlap with other big changes on the page\n            /**\n             * @description Global event to show alert\n             * @event \"alert.show\"\n             */\n            setTimeout(() => this.eventBus().emit('alert.show', { accessibilityAlert: message }), 400);\n        }\n\n        /**\n         * @description Busy\n         * @returns {void}\n         */\n        busy() {\n            this.ref('productGrid').addClass(this.prefs().classesBusy).attr('aria-busy', 'true');\n            this.ref('contentGrid').addClass(this.prefs().classesBusy).attr('aria-busy', 'true');\n            this.ref('refinementsPanel').addClass(this.prefs().classesBusy).attr('aria-busy', 'true');\n        }\n\n        /**\n         * @description Unbusy\n         * @returns {void}\n         */\n        unbusy() {\n            this.ref('productGrid').removeClass(this.prefs().classesBusy).attr('aria-busy', false);\n            this.ref('contentGrid').removeClass(this.prefs().classesBusy).attr('aria-busy', false);\n            this.ref('refinementsPanel').removeClass(this.prefs().classesBusy).attr('aria-busy', false);\n        }\n\n        /**\n         * @description Skip refinements and focus first element in product grid on \"Enter\" keydown event\n         * @listens dom#keydown\n         * @param {HTMLElement} _ Source of keydown event\n         * @param {KeyboardEvent} event  Event object\n         * @returns {void}\n         */\n        skipRefinements(_, event) {\n            let preventEventActions = false;\n            let focused = false;\n\n            switch (event.keyCode) {\n                case keyCode.RETURN:\n                    scrollWindowTo(this.ref('productGrid').get(), true);\n                    this.getById('firstTile', element => {\n                        focused = true;\n                        // @ts-expect-error ts-migrate(2339) FIXME: Property 'focus' does not exist on type 'Widget'.\n                        element.focus();\n                    });\n\n                    if (!focused && this.items) {\n                        for (let i = 0; i < this.items.length; i++) {\n                            const item = this.items[i];\n\n                            // @ts-expect-error check gridItem definition\n                            if (item.prefs().gridItem) {\n                                // @ts-expect-error ts-migrate(2339) FIXME: Property 'focus' does not exist on type 'Widget'.\n                                item.focus();\n                                break;\n                            }\n                        }\n                    }\n\n                    preventEventActions = true;\n                    break;\n\n                default:\n                    break;\n            }\n\n            if (preventEventActions) {\n                event.preventDefault();\n                event.stopPropagation();\n            }\n        }\n\n        /**\n         * @description Init Events\n         * @emits \"alert.show\"\n         * @returns {void}\n         */\n        initEvents() {\n            this.ev('popstate', (_target, event) => {\n                if (event instanceof PopStateEvent && event.state) {\n                    const hashChangedOnly = get(event, 'state.hashChangedOnly', false);\n\n                    if (hashChangedOnly) {\n                        this.handleUrlChange(false);\n\n                        return;\n                    }\n\n                    let updateUrl = get(event, 'state.ajaxUrl', window.location.href);\n\n                    updateUrl = appendParamToURL(updateUrl, 'history', 'true');\n\n                    this.updateByUrl(updateUrl, undefined, false)\n                        .then(() => {\n                            this.handleUrlChange(false);\n                            // eslint-disable-next-line spellcheck/spell-checker\n                            const accessibilityAlert = this.prefs().accessibilityAlerts.previousstatereverted;\n\n                            /**\n                             * @description Global event to show alert\n                             * @event \"alert.show\"\n                             */\n                            this.eventBus().emit('alert.show', {\n                                accessibilityAlert\n                            });\n                        });\n                }\n            }, window);\n        }\n\n        /**\n         * @description No Result Combination handler\n         * @returns {void}\n         */\n        handleNoResult() {\n            // @ts-expect-error ts-migrate(2339) FIXME: Property 'showModal' does not exist on type 'Widget... Remove this comment to see the full error message\n            this.getById('noResultPopup', popup => popup.showModal());\n        }\n\n        /**\n         * @description Keydown Event handler\n         * @listens dom#keydown\n         * @param {HTMLElement} _ Source of keydown event\n         * @param {KeyboardEvent} event  Event object\n         */\n        handleKeydown(_, event) {\n            switch (event.keyCode) {\n                case keyCode.ESC:\n                    if (this.isPanelActive) {\n                        this.eventBus().emit('refinement.panel.close');\n                    }\n\n                    break;\n\n                default:\n                    break;\n            }\n        }\n    }\n\n    return ProductListingMgr;\n}\n","import { TWidget } from 'widgets/Widget';\n\nconst keyCode = Object.freeze({\n    RETURN: 13,\n    SPACE: 32\n});\n\n/**\n * @param Widget Base widget for extending\n * @returns Refinement widget\n */\nexport default function (Widget: TWidget) {\n    /**\n     * @category widgets\n     * @subcategory search\n     * @class Refinement\n     * @augments Widget\n     * @classdesc Represents Refinement component with next features:\n     * 1. Support keyboard navigation for accessibility\n     * 2. Support all typo of refinement\n     * 3. Use \"update\" and \"uncheck\" event to handle changes used parent methods\n     * 4. Using mustache template for dynamic rendering\n     *\n     * @property {string} data-widget - Widget name `refinement`\n     * @property {string} data-widget-event-click - Event listener to call Parent's widget method\n     * @property {string} data-event-click - Event listener method `handleClick` for click event on widget\n     * @property {string} data-attr-id - attribute id\n     * @property {string} data-attr-value - attribute value for on price refinement\n     * @property {string} data-value-from - from value for price refinement\n     * @property {string} data-value-to - to value for price refinement\n     * @property {string} data-event-keydown - keydown handler\n     * @property {string} data-widget-event-update=\"updateRefinementControls\"\n     * @property {string} data-widget-event-uncheck=\"uncheckRefinements\"\n     * @property {string} data-event-click - click handler\n     * @property {string} data-checked - checked flag, used for initialization\n     * @property {string} [data-prevent-action=false] - prevent any action flag\n     * @example <caption>Example of Refinement widget usage</caption>\n     * <div\n     *     class=\"b-refinement_link\"\n     *     role=\"menuitem\"\n     *     aria-checked=\"false\"\n     *     aria-disabled=\"false\"\n     *     data-widget=\"refinement\"\n     *     data-href=\"{{url}}\"\n     *     data-event-keydown.prevent=\"handleKeydown\"\n     *     data-widget-event-update=\"updateView\"\n     *     data-event-click.prevent=\"changeState\"\n     *     data-prevent-action=\"{{${'#'}selected}}true{{/selected}}{{^selected}}false{{/selected}}\"\n     *     title=\"{{${'#'}selected}}${Resource.msg('msg.assistive.selected.text', 'common', null)}{{/selected}} {{title}}\"\n     *     tabindex=\"0\"\n     *     {{${'#'}selected}}\n     *         data-tau=\"refinements_option_selected\"\n     *     {{/selected}}\n     * >\n     *     <span data-tau=\"refinements_option_name\">\n     *         {{displayValue}} {{${'#'}hitCount}}({{hitCount}}){{/hitCount}}\n     *     </span>\n     * </div>\n     */\n    class Refinement extends Widget {\n        selected = false;\n\n        attrId = '';\n\n        value = '';\n\n        min = '';\n\n        max = '';\n\n        prefs() {\n            return {\n                attrRefinement: 'data-refinement',\n                preventAction: false,\n                checked: false,\n                attrId: '',\n                attrValue: '',\n                valueFrom: '',\n                valueTo: '',\n                ...super.prefs()\n            };\n        }\n\n        /**\n         * @description Toggle check status\n         */\n        toggleCheck(): void {\n            if (this.selected) {\n                this.uncheck();\n            } else {\n                this.check();\n            }\n        }\n\n        /**\n         * @description Check\n         */\n        check(): void {\n            this.ref('self').attr('aria-checked', 'true');\n            this.selected = true;\n        }\n\n        /**\n         * @description Uncheck\n         */\n        uncheck(): void {\n            this.ref('self').attr('aria-checked', 'false');\n            this.selected = false;\n        }\n\n        /**\n         * @description Widget logic initialization\n         */\n        init(): void {\n            this.selected = this.prefs().checked;\n            this.attrId = this.prefs().attrId;\n            this.value = this.prefs().attrValue;\n            this.min = this.prefs().valueFrom;\n            this.max = this.prefs().valueTo;\n        }\n\n        /**\n         * @description Focus\n         */\n        focus(): void {\n            return this.ref('self').focus();\n        }\n\n        /**\n         * @description Change state\n         * @listens dom#click\n         * @emits Refinement#uncheck\n         * @emits Refinement#update\n         * @param  [skipCurrentItemDetermination] Skip Current Item Determination\n         */\n        changeState(skipCurrentItemDetermination?: boolean): void {\n            const param = {};\n\n            if (this.prefs().preventAction) {\n                return;\n            }\n\n            if (this.attrId === 'price') {\n                /**\n                 * @description Event to uncheck refinement\n                 * @event Refinement#uncheck\n                 */\n                this.emit('uncheck');\n                this.check();\n            } else {\n                this.toggleCheck();\n            }\n\n            // @ts-expect-error ts-migrate(2339) FIXME: Property 'skipCurrentItemDetermination' does not e... Remove this comment to see the full error message\n            param.skipCurrentItemDetermination = skipCurrentItemDetermination;\n            /**\n             * @description Event to update refinement\n             * @event Refinement#update\n             */\n            this.emit('update', param);\n        }\n\n        /**\n         * @description Is Attribute Refinement\n         * @returns Attribute refinement flag\n         */\n        isAttributeRefinement(): boolean {\n            return this.ref('self').hasAttr(this.prefs().attrRefinement);\n        }\n\n        /**\n         * @description Handle Click\n         * @listens dom#click\n         */\n        handleClick(): void {\n            this.changeState(true);\n        }\n\n        /**\n         * @description Keydown Event handler\n         * @listens dom#keydown\n         * @param _ Source of keydown event\n         * @param event  Event object\n         */\n        handleKeydown(_: HTMLElement, event: KeyboardEvent): void {\n            let preventEventActions = false;\n\n            switch (event.keyCode) {\n                case keyCode.RETURN:\n                case keyCode.SPACE:\n                    this.changeState();\n                    preventEventActions = true;\n                    break;\n                default:\n                    break;\n            }\n\n            if (preventEventActions) {\n                event.preventDefault();\n                event.stopPropagation();\n            }\n        }\n    }\n\n    return Refinement;\n}\n","import { TWidget } from 'widgets/Widget';\nconst keyCode = Object.freeze({\n    RETURN: 13,\n    SPACE: 32,\n    UP: 38,\n    DOWN: 40\n});\n\n/**\n * @param Widget Base widget for extending\n * @returns RefinementsPanelToggle instance\n */\nexport default function (Widget: TWidget) {\n    /**\n     * @category widgets\n     * @subcategory search\n     * @class RefinementsPanelToggle\n     * @augments Widget\n     * @classdesc Widget, which triggers touch/mobile refinements panel to open/close\n     * @property {string} data-widget - Widget name `refinementsPanelToggle`\n     * @property {string} data-event-click - Event handler method for click event\n     * @property {string} data-event-keydown - Event handler method for keydown event\n     * <button\n     *      class=\"b-plp_actions-refinements_toggle b-button\"\n     *      aria-controls=\"refinements-panel\"\n     *      aria-expanded=\"false\"\n     *      title=\"${Resource.msg('refinements.filter', 'search', null)}\"\n     *      type=\"button\"\n     *      data-widget=\"refinementsPanelToggle\"\n     *      data-event-click.prevent.stop=\"handleClick\"\n     *      data-event-keydown=\"handleKeydown\"\n     *      data-tau=\"refinements_open\"\n     * >\n     *          <isif condition=\"${pdict.productSearch.hasSelectedFilters}\">\n     *              ${Resource.msg('refinements.editfilter', 'search', null)}\n     *          <iselse/>\n     *              ${Resource.msg('refinements.filter', 'search', null)}\n     *           </isif>\n     * </button>\n     * <isinclude template=\"search/sortOrderMenu\" />\n     */\n    class RefinementsPanelToggle extends Widget {\n        /**\n         * @description Init widget logic\n         * @listens \"refinement.panel.close\"\n         * @listens \"refinement.panel.open\"\n         * @returns {void}\n         */\n        init() {\n            this.eventBus().on('refinement.panel.close', 'closePanel');\n            this.eventBus().on('refinement.panel.open', 'openPanel');\n        }\n\n        /**\n         * @description Focus\n         * @returns {void}\n         */\n        focus() {\n            this.ref('self').focus();\n        }\n\n        /**\n         * @description Show panel\n         * @emits \"refinement.panel.open\"\n         * @param {boolean} [focusToLastItem] Focus to last item flag\n         * @returns {void}\n         */\n        showPanel(focusToLastItem) {\n            this.openPanel();\n            /**\n             * @description Event to open refinement panel\n             * @event \"refinement.panel.open\"\n             */\n            this.eventBus().emit('refinement.panel.open', { focusToLastItem });\n        }\n\n        /**\n         * @description Handle Click\n         * @listens dom#click\n         * @returns {void}\n         */\n        handleClick() {\n            // @ts-expect-error ts-migrate(2554) FIXME: Expected 1 arguments, but got 0.\n            this.showPanel();\n        }\n\n        /**\n         * @description Open panel\n         * @returns {void}\n         */\n        openPanel() {\n            this.ref('self').attr('aria-expanded', 'true');\n        }\n\n        /**\n         * @description Close panel\n         * @returns {void}\n         */\n        closePanel() {\n            this.focus();\n            this.ref('self').attr('aria-expanded', 'false');\n        }\n\n        /**\n         * @description Keydown Event handler\n         * @listens dom#keydown\n         * @param {HTMLElement} _ Source of keydown event\n         * @param {KeyboardEvent} event  Event object\n         */\n        handleKeydown(_, event) {\n            let preventEventActions = false;\n\n            switch (event.keyCode) {\n                case keyCode.UP:\n                    this.showPanel(true);\n                    preventEventActions = true;\n\n                    break;\n\n                case keyCode.RETURN:\n                case keyCode.SPACE:\n                case keyCode.DOWN:\n\n                    // @ts-expect-error ts-migrate(2554) FIXME: Expected 1 arguments, but got 0.\n                    this.showPanel();\n                    preventEventActions = true;\n\n                    break;\n\n                default:\n                    break;\n            }\n\n            if (preventEventActions) {\n                event.preventDefault();\n                event.stopPropagation();\n            }\n        }\n    }\n\n    return RefinementsPanelToggle;\n}\n"],"names":["Widget","LazyloadTrigger","prefs","threshold","init","eventEmited","has","selfElement","initOnScrollListener","ev","window","innerHeight","get","getBoundingClientRect","top","emit","scrollWindowTo","getStickyHeaderHeight","appendParamToURL","removeParamFromURL","RefElement","IDEAS","PRODUCTS","GRID_UPDATING_EVENT","GTM_DATALAYER_EVENT","GTM_EVENT","THEMATIC","BaseProductListingMgr","ProductListingMgr","refinedByIdeas","keywordSearch","classesProductGridAlternative","classesInited","copyUrlParamsConfig","setGridType","scrollToSavedTile","lazyloadAllowed","latestHref","undefined","inlineSlots","document","querySelectorAll","length","addEventListener","calculateInlineSlotWidth","bind","eventBus","on","anchorTileID","sessionStorage","getItem","firstPage","getById","tile","history","scrollRestoration","ref","behavior","parseInt","left","removeItem","executeCallback","cb","apply","getTileIndex","productId","currentTileIndex","tileIndex","ProductTile","getConstructor","eachChild","child","config","isFirstTile","hasPrevProducts","loadPrevBlock","data","isLastTile","hasMoreProducts","loadMoreBlock","getProductTilesCount","showQuickViewByIndex","index","targetProductTile","triggerQuickView","loadPrev","triggerQuickViewIndex","loadMore","showPreviousQuickView","showNextQuickView","refinementsGridToggle","productTilesCount","onGridUpdated","updateGridInfo","updateMetaLinks","url","model","updateCanonical","updatePaginationPrev","updatePaginationNext","Promise","resolve","canonical","setAttribute","linkRelPrev","productSearch","sz","pageSize","start","pageNumber","prevStart","prevUrl","createLinkPrev","insertAdjacentHTML","replaceParameterInUrl","remove","linkRelNext","nextStart","isLast","count","nextUrl","name","value","currentStart","selfRef","loadPrevButton","Number","currentlyViewedCount","currentlyViewingCount","setText","toString","showMoreRefinements","btn","showMoreResultsContainer","parentElement","refinementsBlock","refinementsItems","Array","from","children","show","showMoreResultsContainerRefElement","hide","toggleIdeas","checkbox","event","eventCategory","eventAction","eventLabel","category","updateView","handleUpdateView","button","addClass","updateURL","refinementSelected","alertMessage","accessibilityAlerts","filterremoved","filtersapplied","location","href","includes","updateByUrl","then","removeClass","accessibilityAlert","checked","eventSublabel","isToggleIdeasButton","currentToggleIdeasState","futureToggleIdeaState","productlistupdated","showUrl","attr","showAjaxUrl","searchModel","loadChunk","response","append","setTimeout","handleHistory","handleNoResult","popup","showModal","toggleGridType","isAlternativeGrid","toggleClass","onNoResultPopupClosed","RefinementsPanel","getRefinementsModel","prop","startLazyload","loadMoreButton","lazyload","updateGrid","select","selectedSorting","getSelectedOptions","afterUpdateGrid","isReplace","state","ajaxUrl","historyURL","lcHref","toLowerCase","hasPaidParams","copyPaidParams","hash","replaceState","pushState","configParams","split","urlParams","URL","searchParams","key","matchesConfigPattern","patterns","some","pattern","endsWith","startsWith","slice","currentURL","currentURLObj","historyURLObj","configPatterns","map","param","trim","forEach","keyLower","set","sortingapplied","busy","refinementsPanel","classesBusy","unbusy","firstAvailableTile","firstAvailableTileOffset","productGrid","productTiles","offsetTop","prepend","item","inlineSlotsTitle","querySelector","style","width","Math","ceil","classList","add","QuickViewNavigation","initNavigation","productListingMgr","previous","next","RefinementBase","Refinement","attrCount","isRanged","decodeURIComponent","attrValue","getCount","check","setPref","selected","uncheck","setCookie","getCookie","GRID_MODE_PRODUCTS","GRID_TYPE_BASIC","GRID_TYPE_ALTERNATIVE","RefinementsGridToggle","classesGridButtonActive","gridCookieProducts","gridCookieIdeas","gridMode","gridTypeDefault","gridCookieName","gridType","activateGrid","handleGridClick","clickedButton","deactivateGridButtons","gridButton","activate","emitWithoutContext","timeout","getJSONByUrl","appendParamsToUrl","getUrlParams","RefinementsPanelBase","starsRating","getStarsRatingFunction","text","render","currentValue","isNaN","currentRating","stars","reduce","acc","val","round","updatePanel","classesActiveLevel","onDestroy","res","Object","keys","updateUrl","classesDialogOpen","defineItems","setFocusToFirstItem","itemSwitchTimeout","openPanel","isOpen","RefinementsPanelToggleBase","RefinementsPanelToggle","initGlobalEvents","getScrollPosition","StickyRefinements","selfEl","stickyContentEl","lastScrollPosition","curentScrollPosition","positionDelta","scrollTop","BasicForm","NoSearchResultsForm","classesClearEnabled","handleSubmit","_el","preventDefault","handleInput","toggleClearButton","isInputHasValue","clearInput","searchInput","searchInputField","focus","getContentByUrl","keyCode","freeze","RETURN","ESC","Tabs","isPanelActive","lastActiveCategory","classesActiveSection","loadMoreContentBlock","initEvents","lastAccordionCategory","el","e","els","id","closePanel","retainPanelState","retainAccordion","retainLastCategory","findCategory","getElementById","getAttribute","click","closeOnBackdrop","target","handleRetainment","catch","finally","loadMoreContent","contentlistupdated","successCb","console","error","message","skipRefinements","_","preventEventActions","focused","element","items","i","gridItem","stopPropagation","_target","PopStateEvent","hashChangedOnly","handleUrlChange","previousstatereverted","handleKeydown","SPACE","attrId","min","max","attrRefinement","preventAction","valueFrom","valueTo","toggleCheck","changeState","skipCurrentItemDetermination","isAttributeRefinement","hasAttr","handleClick","UP","DOWN","showPanel","focusToLastItem"],"sourceRoot":""}