@searchstax-inc/searchstudio-ux-js 0.3.5 → 0.3.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/@searchstax-inc/searchstudio-ux-js.cjs +1 -1
- package/dist/@searchstax-inc/searchstudio-ux-js.d.mts +72 -2
- package/dist/@searchstax-inc/searchstudio-ux-js.d.ts +72 -2
- package/dist/@searchstax-inc/searchstudio-ux-js.iife.js +1 -1
- package/dist/@searchstax-inc/searchstudio-ux-js.mjs +38 -45
- package/package.json +1 -1
|
@@ -220,4 +220,4 @@
|
|
|
220
220
|
</div>
|
|
221
221
|
{{/hasResultsOrExternalPromotions}}
|
|
222
222
|
{{/searchExecuted}}
|
|
223
|
-
`,selectId:"searchstax-search-order-select"}};class d{}n(d,"externalPromotions",me),n(d,"facets",ye),n(d,"pagination",Ce),n(d,"relatedSearches",ve),n(d,"searchFeedback",Se),n(d,"searchInput",be),n(d,"searchResults",Le),n(d,"sorting",Te);class xe{constructor(e){n(this,"dataLayer");n(this,"config");n(this,"containerId");n(this,"externalPromotionsContainerId");n(this,"searchExternalPromotionsMainContainer",null);var t,a;this.dataLayer=e.dataLayer,this.config=e.config,this.containerId=e.containerId,this.externalPromotionsContainerId=((a=(t=this.config.templates)==null?void 0:t.mainTemplate)==null?void 0:a.externalPromotionsContainerId)||d.externalPromotions.mainTemplate.externalPromotionsContainerId,this.searchExternalPromotionsMainContainer=document.getElementById(this.containerId),this.initializeSubscriptions(),this.renderMainTemplate(this.generateTemplateData())}initializeSubscriptions(){this.dataLayer.$searchExternalPromotions.subscribe(e=>{e&&this.renderMainTemplate(this.generateTemplateData())})}generateTemplateData(){return{...this.dataLayer.parsedData.data,externalPromotions:this.dataLayer.parsedData.externalPromotions}}addExternalSearch(e){var a,r,s,i;const t=document.getElementById(this.externalPromotionsContainerId);if(t){const c=((s=(r=(a=this.config)==null?void 0:a.templates)==null?void 0:r.externalPromotion)==null?void 0:s.template)||((i=d.externalPromotions.externalPromotion)==null?void 0:i.template),l=document.createElement("div");l.classList.add("searchstax-external-promotion"),l.addEventListener("click",h=>{this.trackClick(e,h)}),l.innerHTML=m.render(c,e),t.appendChild(l)}}trackClick(e,t){t.stopPropagation(),t.preventDefault(),window.open(e.url,"_blank")}renderMainTemplate(e){var a,r,s,i;const t=((s=(r=(a=this.config)==null?void 0:a.templates)==null?void 0:r.mainTemplate)==null?void 0:s.template)||((i=d.externalPromotions.mainTemplate)==null?void 0:i.template);if(this.dataLayer.renderingEngine===T.mustache){this.searchExternalPromotionsMainContainer.innerHTML=m.render(t,e);const c=document.getElementById(this.externalPromotionsContainerId);c&&(c.innerHTML="");for(const l of e.externalPromotions)this.addExternalSearch(l)}}}class ke{constructor(e,t){n(this,"dataLayer");n(this,"config");n(this,"containerId");n(this,"routerHelper");n(this,"cachedPhrase","");n(this,"isCached",!1);n(this,"overlayOpened",!1);n(this,"facetPaginationStep");n(this,"facetPaginationStepMobile");n(this,"searchFacetsMainContainer",null);n(this,"searchFacetsMobileContainer",null);n(this,"searchFacetsDesktopContainer",null);n(this,"facetLimits",{});n(this,"facetLimitsMobile",{});n(this,"deactivatedFacets",{});n(this,"cachedData",null);n(this,"cacheFacets");n(this,"onFacetSelect",(e,t,a,r)=>{if(e.stopPropagation(),!t.disabled){const s=a.querySelector("input");s.checked=r?s.checked:!s.checked;const i=this.dataLayer.searchObject;let c=[...i.facets];const l=this.extractFacetValue(t);s.checked?c.find(u=>E.deepEqual(u,l)?u:!1)||(this.config.facetingType==="tabs"&&(c=c.filter(u=>u.name!==l.name)),c.push(l)):c=c.filter(h=>!E.deepEqual(h,l)),setTimeout(()=>{this.dataLayer.setSearchObject({...i,facets:c,page:1}),this.config.facetingType==="tabs"&&this.renderMainTemplate(this.generateTemplateData(),!0)},0)}});this.dataLayer=e.dataLayer,this.config=e.config,this.containerId=e.containerId,this.routerHelper=e.routerHelper,this.cacheFacets=t,this.facetPaginationStep=this.config.itemsPerPageDesktop,this.facetPaginationStepMobile=this.config.itemsPerPageMobile,this.searchFacetsMainContainer=document.getElementById(this.containerId),this.needCache&&t(),this.initializeSubscriptions()}get needCache(){return this.config.facetingType==="showUnavailable"||this.config.facetingType==="or"||this.config.facetingType==="tabs"}get needDisabling(){return this.config.facetingType==="showUnavailable"}initializeSubscriptions(){this.needCache&&this.dataLayer.$searchFacetsCached.subscribe(e=>{e&&this.dataLayer.searchFacets&&this.renderMainTemplate(this.generateTemplateData())}),this.dataLayer.$searchResults.subscribe(e=>{e&&(this.needCache&&!this.isCached&&(this.dataLayer.searchFacets&&!this.dataLayer.searchFacetsCached&&this.dataLayer.setSearchFacetsCached(this.dataLayer.searchFacets),this.cacheFacets()),this.renderMainTemplate(this.generateTemplateData()))}),this.dataLayer.$searchObject.subscribe(e=>{this.cachedPhrase!==e.query?(this.cachedPhrase=e.query,this.isCached=!1):this.isCached=!0})}extractFacetValue(e){return{type:this.config.facetingType,name:e.parentName,value:e.value}}applyFacetLimits(e,t){const a=t?this.facetPaginationStepMobile:this.facetPaginationStep,r=t?this.facetLimits:this.facetLimitsMobile;return e.forEach(s=>{r[s.name]||(r[s.name]=a)}),e.map(s=>({...s,values:s.values.slice(0,r[s.name]),showingAllFacets:s.values.length<=r[s.name],hasMoreFacets:s.values.length>a}))}generateTemplateData(e){if(this.dataLayer.searchFacets){let t=this.dataLayer.searchFacets;return this.needCache&&this.dataLayer.searchFacetsCached&&(t=this.dataLayer.searchFacetsCached,this.needDisabling&&(t=t.map(a=>{var s;const r=(s=this.dataLayer.searchFacets)==null?void 0:s.find(i=>i.name===a.name);return r?{...a,values:a.values.map(i=>{const c=r.values.find(l=>i.type==="range"?!1:i.type==="checkbox"?l.value===i.value:!1);return{...i,disabled:!c}})}:{...a,values:a.values.map(i=>({...i,disabled:!0}))}}))),this.config.specificFacets&&(t=t.filter(a=>{var r;return(r=this.config.specificFacets)==null?void 0:r.includes(a.name)})),{facets:this.applyFacetLimits(t,e),...this.dataLayer.parsedData.data}}else return{facets:[],...this.dataLayer.parsedData.data}}createFacetItem(e,t,a){var l,h,u,g,p,y,b,f,C,v,S,R;const r=document.createElement("div");r.classList.add("searchstax-facet-container"),this.deactivatedFacets[e.name]||r.classList.add("active");const s=((u=(h=(l=this.config)==null?void 0:l.templates)==null?void 0:h.facetItemContainerTemplate)==null?void 0:u.template)||((g=d.facets.facetItemContainerTemplate)==null?void 0:g.template);r.innerHTML=m.render(s,e),t.appendChild(r);const i=r.querySelector("."+(((b=(y=(p=this.config)==null?void 0:p.templates)==null?void 0:y.facetItemContainerTemplate)==null?void 0:b.facetListTitleContainerClass)||((f=d.facets.facetItemContainerTemplate)==null?void 0:f.facetListTitleContainerClass)));i==null||i.addEventListener("click",()=>{r.classList.toggle("active")});const c=r.querySelector("."+(((S=(v=(C=this.config)==null?void 0:C.templates)==null?void 0:v.facetItemContainerTemplate)==null?void 0:S.facetListContainerClass)||((R=d.facets.facetItemContainerTemplate)==null?void 0:R.facetListContainerClass)));c&&(e.values.forEach(P=>{this.createFacetListItem(P,c)}),e.hasMoreFacets&&this.createHasMoreComponent(e,c,a))}createFacetListItem(e,t){var l,h,u,g,p,y,b,f,C,v,S,R,P,L;const a=document.createElement("div");a.classList.add("searchstax-facet-value-container"),e.disabled&&a.classList.add("searchstax-facet-value-disabled");const s=!!((l=this.dataLayer.searchObject.facets)!=null&&l.find(M=>E.deepEqual(M,this.extractFacetValue(e)))),i=((g=(u=(h=this.config)==null?void 0:h.templates)==null?void 0:u.facetItemTemplate)==null?void 0:g.template)||((p=d.facets.facetItemTemplate)==null?void 0:p.template);a.innerHTML=m.render(i,{...e,isChecked:s});let c=(y=d.facets.facetItemTemplate)==null?void 0:y.checkTriggerClasses;c=((C=(f=(b=this.config)==null?void 0:b.templates)==null?void 0:f.facetItemTemplate)==null?void 0:C.checkTriggerClasses)||c,c.forEach(M=>{var F;(F=a.querySelector("."+M))==null||F.addEventListener("click",x=>{this.onFacetSelect(x,e,a)})}),(L=a.querySelector("."+(((R=(S=(v=this.config)==null?void 0:v.templates)==null?void 0:S.facetItemTemplate)==null?void 0:R.inputCheckboxClass)||((P=d.facets.facetItemTemplate)==null?void 0:P.inputCheckboxClass))))==null||L.addEventListener("click",M=>{this.onFacetSelect(M,e,a,!0)}),t.appendChild(a)}createHasMoreComponent(e,t,a){var c,l,h,u,g,p,y,b;const r=document.createElement("div");r.classList.add("searchstax-facet-show-more-container");const s=((h=(l=(c=this.config)==null?void 0:c.templates)==null?void 0:l.showMoreButtonContainerTemplate)==null?void 0:h.template)||((u=d.facets.showMoreButtonContainerTemplate)==null?void 0:u.template);r.innerHTML=m.render(s,e);const i=r.querySelector("."+(((y=(p=(g=this.config)==null?void 0:g.templates)==null?void 0:p.showMoreButtonContainerTemplate)==null?void 0:y.showMoreButtonClass)||((b=d.facets.showMoreButtonContainerTemplate)==null?void 0:b.showMoreButtonClass)));i&&(this.attachOnclickToShowMore(e,i,a),t&&t.appendChild(i))}attachOnclickToShowMore(e,t,a){t.addEventListener("click",r=>{this.onShowMoreLessClick(r,e,a)})}onShowMoreLessClick(e,t,a){e.preventDefault();const r=a?this.facetPaginationStepMobile:this.facetPaginationStep,s=a?this.facetLimits:this.facetLimitsMobile;s[t.name]===void 0?s[t.name]=r*2:s[t.name]<=t.values.length?s[t.name]=s[t.name]+r:s[t.name]=r,this.renderMainTemplate(this.generateTemplateData())}renderMainTemplate(e,t){var a,r,s,i,c,l,h,u,g,p,y;if(e&&(!E.deepEqual(this.cachedData??{},e)||t)){this.cachedData=e;const b=((s=(r=(a=this.config)==null?void 0:a.templates)==null?void 0:r.mainTemplateDesktop)==null?void 0:s.template)||((i=d.facets.mainTemplateDesktop)==null?void 0:i.template);if(this.dataLayer.renderingEngine===T.mustache&&this.searchFacetsMainContainer){this.searchFacetsMainContainer.innerHTML=m.render(b,{...e});const f=(u=this.searchFacetsMainContainer)==null?void 0:u.querySelector("."+(((h=(l=(c=this.config)==null?void 0:c.templates)==null?void 0:l.mainTemplateDesktop)==null?void 0:h.facetsContainerClass)||d.facets.mainTemplateDesktop.facetsContainerClass));if(f){f.innerHTML="";for(const C of e.facets)this.createFacetItem(C,f);if(this.searchFacetsMainContainer){const C=this.searchFacetsMainContainer.querySelector("."+(((y=(p=(g=this.config)==null?void 0:g.templates)==null?void 0:p.mainTemplateDesktop)==null?void 0:y.selectedFacetsContainerClass)||d.facets.mainTemplateDesktop.selectedFacetsContainerClass));C&&(this.createSelectedFacetsComponents(C),this.createClearFacetsComponents(C))}}this.renderMobileTemplate(this.generateTemplateData(!0))}}}createSelectedFacetsComponents(e){const t=this.dataLayer.searchObject.facets;for(const a of t){const r=decodeURIComponent(a.name),s=decodeURIComponent(a.value);if(this.dataLayer.searchFacets){const i=this.needCache?this.dataLayer.searchFacetsCached:this.dataLayer.searchFacets,c=i==null?void 0:i.find(l=>l.name===r);if(c){const l=c.values.find(h=>h.type==="range"?!1:h.type==="checkbox"?`"${h.value}"`===s:!1);l&&this.createSelectedFacetsComponent(e,l)}}}}createClearFacetsComponents(e){var i,c,l,h,u,g,p,y;const t=this.dataLayer.searchObject,a=((l=(c=(i=this.config)==null?void 0:i.templates)==null?void 0:c.clearFacetsTemplate)==null?void 0:l.template)||((h=d.facets.clearFacetsTemplate)==null?void 0:h.template),r=document.createElement("div");r.innerHTML=m.render(a,{shouldShow:t.facets.length>0});const s=r.querySelector("."+(((p=(g=(u=this.config)==null?void 0:u.templates)==null?void 0:g.clearFacetsTemplate)==null?void 0:p.containerClass)||((y=d.facets.clearFacetsTemplate)==null?void 0:y.containerClass)));s&&(s.addEventListener("click",()=>{this.removeSelectedFacets()}),e.appendChild(s))}createSelectedFacetsComponent(e,t){var i,c,l,h,u,g,p,y;const a=((l=(c=(i=this.config)==null?void 0:i.templates)==null?void 0:c.selectedFacetsTemplate)==null?void 0:l.template)||((h=d.facets.selectedFacetsTemplate)==null?void 0:h.template),r=document.createElement("div");r.innerHTML=m.render(a,t);const s=r.querySelector("."+(((p=(g=(u=this.config)==null?void 0:u.templates)==null?void 0:g.selectedFacetsTemplate)==null?void 0:p.containerClass)||((y=d.facets.selectedFacetsTemplate)==null?void 0:y.containerClass)));s&&(s.addEventListener("click",()=>{this.unselectFacet(t)}),e.appendChild(s))}unselectFacet(e){const t=this.dataLayer.searchObject;let a=[...t.facets];e.type==="checkbox"&&(a=a.filter(r=>r!==this.extractFacetValue(e))),setTimeout(()=>{this.dataLayer.setSearchObject({...t,facets:a})},0)}removeSelectedFacets(){const e=this.dataLayer.searchObject;this.dataLayer.setSearchObject({...e,facets:[]})}createFilterByComponent(e){var s,i,c,l,h,u,g,p;const t=((c=(i=(s=this.config)==null?void 0:s.templates)==null?void 0:i.filterByTemplate)==null?void 0:c.template)||((l=d.facets.filterByTemplate)==null?void 0:l.template),a=document.createElement("div");a.innerHTML=m.render(t,{});const r=a.querySelector("."+(((g=(u=(h=this.config)==null?void 0:h.templates)==null?void 0:u.filterByTemplate)==null?void 0:g.containerClass)||((p=d.facets.filterByTemplate)==null?void 0:p.containerClass)));r&&(e.prepend(r),r.addEventListener("click",this.openOverlay.bind(this)))}openOverlay(){var e;this.overlayOpened=!0,this.searchFacetsMainContainer&&(document.body.classList.toggle("searchstax-no-scroll"),(e=this.searchFacetsMainContainer.querySelector(".searchstax-facets-mobile-overlay"))==null||e.classList.add("searchstax-show"))}closeOverlay(){var e;this.overlayOpened=!1,this.searchFacetsMainContainer&&(document.body.classList.toggle("searchstax-no-scroll"),(e=this.searchFacetsMainContainer.querySelector(".searchstax-facets-mobile-overlay"))==null||e.classList.remove("searchstax-show"))}renderMobileTemplate(e){var t,a,r,s,i,c,l,h,u,g,p,y,b,f,C,v,S,R,P;if(e){const L=document.createElement("div");L.classList.add("searchstax-facets-container-mobile");const M=((r=(a=(t=this.config)==null?void 0:t.templates)==null?void 0:a.mainTemplateMobile)==null?void 0:r.template)||((s=d.facets.mainTemplateMobile)==null?void 0:s.template);if(this.dataLayer.renderingEngine===T.mustache){if(L.innerHTML=m.render(M,{...e,overlayOpened:this.overlayOpened}),(i=this.searchFacetsMainContainer)==null||i.appendChild(L),(l=(c=this.config)==null?void 0:c.templates)!=null&&l.mainTemplateMobile)for(const O of((g=(u=(h=this.config)==null?void 0:h.templates)==null?void 0:u.mainTemplateMobile)==null?void 0:g.closeOverlayTriggerClasses)||[]){const H=L.querySelector("."+O);H&&H.addEventListener("click",this.closeOverlay.bind(this))}else for(const O of d.facets.mainTemplateMobile.closeOverlayTriggerClasses){const H=L.querySelector("."+O);H&&H.addEventListener("click",this.closeOverlay.bind(this))}const F=L.querySelector("."+(((b=(y=(p=this.config)==null?void 0:p.templates)==null?void 0:y.mainTemplateMobile)==null?void 0:b.filterByContainerClass)||d.facets.mainTemplateMobile.filterByContainerClass));F&&this.createFilterByComponent(F);const x=L.querySelector("."+(((v=(C=(f=this.config)==null?void 0:f.templates)==null?void 0:C.mainTemplateMobile)==null?void 0:v.selectedFacetsContainerClass)||d.facets.mainTemplateMobile.selectedFacetsContainerClass));x&&(this.createSelectedFacetsComponents(x),this.createClearFacetsComponents(x));const $=L.querySelector("."+(((P=(R=(S=this.config)==null?void 0:S.templates)==null?void 0:R.mainTemplateMobile)==null?void 0:P.facetsContainerClass)||d.facets.mainTemplateMobile.facetsContainerClass));if($){$.innerHTML="";for(const O of e.facets)this.createFacetItem(O,$,!0)}}}}}class Re{constructor(e){n(this,"dataLayer");n(this,"config");n(this,"containerId");n(this,"previousButtonClass");n(this,"nextButtonClass");n(this,"routerHelper");n(this,"searchPaginationMainContainer",null);var t,a,r,s,i,c;this.dataLayer=e.dataLayer,this.config=e.config,this.containerId=e.containerId,this.routerHelper=e.routerHelper,this.previousButtonClass=((r=(a=(t=this.config)==null?void 0:t.templates)==null?void 0:a.mainTemplate)==null?void 0:r.previousButtonClass)??d.pagination.mainTemplate.previousButtonClass,this.nextButtonClass=((c=(i=(s=this.config)==null?void 0:s.templates)==null?void 0:i.mainTemplate)==null?void 0:c.nextButtonClass)??d.pagination.mainTemplate.nextButtonClass,this.searchPaginationMainContainer=document.getElementById(this.containerId),this.initializeSubscriptions(),this.renderMainTemplate(this.generateTemplateData())}get isFirstPage(){var e;return((e=this.dataLayer.searchObject)==null?void 0:e.page)===1}get isLastPage(){var e,t;return((e=this.dataLayer.searchObject)==null?void 0:e.page)===Math.ceil((((t=this.dataLayer.searchResultsMetadata)==null?void 0:t.totalResultsValue)??0)/10)}initializeSubscriptions(){this.dataLayer.$searchResults.subscribe(e=>{e&&this.renderMainTemplate(this.generateTemplateData())})}generateTemplateData(){var e,t;return{...this.dataLayer.parsedData.data,previousPageLink:this.routerHelper.searchObjectToUrl({...this.dataLayer.searchObject,page:((e=this.dataLayer.searchObject)==null?void 0:e.page)-1}),nextPageLink:this.routerHelper.searchObjectToUrl({...this.dataLayer.searchObject,page:((t=this.dataLayer.searchObject)==null?void 0:t.page)+1})}}goToPage(e){const t=this.dataLayer.searchObject;t&&(t.page=e,this.dataLayer.setSearchObject(t)),window.scrollTo(0,0)}nextPage(e){var t;e.preventDefault(),e.stopPropagation(),this.isLastPage||this.goToPage(((t=this.dataLayer.searchObject)==null?void 0:t.page)+1)}previousPage(e){var t;e.preventDefault(),e.stopPropagation(),this.isFirstPage||this.goToPage(((t=this.dataLayer.searchObject)==null?void 0:t.page)-1)}overridePaginationEvents(){if(this.searchPaginationMainContainer){const e=this.searchPaginationMainContainer.querySelector("."+this.previousButtonClass),t=this.searchPaginationMainContainer.querySelector("."+this.nextButtonClass);e&&e.addEventListener("click",this.previousPage.bind(this)),t&&t.addEventListener("click",this.nextPage.bind(this))}}renderMainTemplate(e){var a,r,s,i,c,l;this.searchPaginationMainContainer&&((a=this.searchPaginationMainContainer.querySelector("."+this.previousButtonClass))==null||a.removeEventListener("click",this.previousPage),(r=this.searchPaginationMainContainer.querySelector("."+this.nextButtonClass))==null||r.removeEventListener("click",this.nextPage));const t=((c=(i=(s=this.config)==null?void 0:s.templates)==null?void 0:i.mainTemplate)==null?void 0:c.template)||((l=d.pagination.mainTemplate)==null?void 0:l.template);this.dataLayer.renderingEngine===T.mustache&&(this.searchPaginationMainContainer.innerHTML=m.render(t,e),setTimeout(()=>{this.overridePaginationEvents()},0))}}class Ie{constructor(e){n(this,"dataLayer");n(this,"config");n(this,"containerId");n(this,"relatedSearchesContainerClass");n(this,"searchRelatedSearchesMainContainer",null);n(this,"track");var t,a;this.dataLayer=e.dataLayer,this.config=e.config,this.containerId=e.containerId,this.relatedSearchesContainerClass=((a=(t=this.config.templates)==null?void 0:t.main)==null?void 0:a.relatedSearchesContainerClass)||d.relatedSearches.main.relatedSearchesContainerClass,this.searchRelatedSearchesMainContainer=document.getElementById(this.containerId),this.track=e.trackRelatedSearchClick,this.initializeSubscriptions()}initializeSubscriptions(){this.dataLayer.$searchRelatedSearches.subscribe(e=>{e&&this.renderMainTemplate(this.generateTemplateData())})}generateTemplateData(){return{...this.dataLayer.parsedData.data}}addRelatedSearchComponent(e,t){var s,i,c,l,h;const a=document.createElement("div"),r=((c=(i=(s=this.config)==null?void 0:s.templates)==null?void 0:i.relatedSearch)==null?void 0:c.template)||d.relatedSearches.relatedSearch.template;if(this.dataLayer.renderingEngine===T.mustache){a.innerHTML=m.render(r,e);const u=a.querySelector("."+(((h=(l=this.config.templates)==null?void 0:l.relatedSearch)==null?void 0:h.relatedSearchContainerClass)||d.relatedSearches.relatedSearch.relatedSearchContainerClass));u&&(t.appendChild(u),u.addEventListener("click",()=>{this.executeSearch(e)}))}}executeSearch(e){const t=this.dataLayer.searchObject;t.query=e.related_search,this.dataLayer.setSearchObject(t),this.track(e)}renderMainTemplate(e){var a,r,s,i;const t=((s=(r=(a=this.config)==null?void 0:a.templates)==null?void 0:r.main)==null?void 0:s.template)||d.relatedSearches.main.template;if(this.dataLayer.renderingEngine===T.mustache&&this.searchRelatedSearchesMainContainer){this.searchRelatedSearchesMainContainer.innerHTML="",this.searchRelatedSearchesMainContainer.innerHTML=m.render(t,e);const c=(i=this.searchRelatedSearchesMainContainer)==null?void 0:i.querySelector(`.${this.relatedSearchesContainerClass}`);if(c)for(const l of e.relatedSearches)this.addRelatedSearchComponent(l,c)}}}class Pe{constructor(e){n(this,"dataLayer");n(this,"config");n(this,"containerId");n(this,"searchFeedbackMainContainer",null);n(this,"searchTrigger");this.dataLayer=e.dataLayer,this.config=e.config,this.containerId=e.containerId,this.searchTrigger=e.searchTrigger,this.searchFeedbackMainContainer=document.getElementById(this.containerId),this.initializeSubscriptions()}initializeSubscriptions(){this.dataLayer.$searchResults.subscribe(e=>{e&&this.renderMainTemplate(this.generateTemplateData())})}generateTemplateData(){return{...this.dataLayer.parsedData.data}}onOriginalQueryClick(e){var a;e.stopPropagation(),e.preventDefault();const t=(a=e.target)==null?void 0:a.innerHTML;this.searchTrigger(t,!0)}attachClick(){var t,a,r,s,i;const e=(i=this.searchFeedbackMainContainer)==null?void 0:i.querySelector("."+(((r=(a=(t=this.config)==null?void 0:t.templates)==null?void 0:a.main)==null?void 0:r.originalQueryClass)||((s=d.searchFeedback.main)==null?void 0:s.originalQueryClass)));console.log("originalQuery",e),e&&e.addEventListener("click",this.onOriginalQueryClick.bind(this))}renderMainTemplate(e){var a,r,s;const t=((s=(r=(a=this.config)==null?void 0:a.templates)==null?void 0:r.main)==null?void 0:s.template)||d.searchFeedback.main.template;console.log("render"),this.dataLayer.renderingEngine===T.mustache&&(this.searchFeedbackMainContainer.innerHTML=m.render(t,e),setTimeout(()=>{this.attachClick()},0))}}class Me{constructor(e){n(this,"dataLayer");n(this,"config");n(this,"suggestAfterMinChars");n(this,"containerId");n(this,"currentInputValue","");n(this,"autosuggestResults");n(this,"searchInput");n(this,"actionButton");n(this,"autosuggestContainer");n(this,"buttonState","search");n(this,"selectedAutosuggestItem",-1);n(this,"suggestTrigger");n(this,"searchTrigger");this.dataLayer=e.dataLayer,this.config=e.config,this.searchTrigger=e.searchTrigger,this.suggestTrigger=e.suggestTrigger,this.containerId=e.containerId,this.suggestAfterMinChars=e.config.suggestAfterMinChars,this.renderMainTemplate(),this.actionButtonInit(),this.updateActionButtonState("search"),this.searchInput&&(this.createAutosuggestContainer(),this.attachSubscriptions())}renderMainTemplate(){var s,i,c,l;const e=document.getElementById(this.containerId);if(!e)throw new Error("Search input container not found");const t=((i=(s=this.config.templates)==null?void 0:s.mainTemplate)==null?void 0:i.template)||d.searchInput.mainTemplate.template;if(this.dataLayer.renderingEngine===T.mustache){const h=m.render(t,{});e.innerHTML=h}const a=((l=(c=this.config.templates)==null?void 0:c.mainTemplate)==null?void 0:l.searchInputId)||d.searchInput.mainTemplate.searchInputId,r=document.querySelector(`#${a}`);if(r)this.searchInput=r,r.addEventListener("keyup",this.inputKeyupEvent.bind(this)),r.addEventListener("blur",this.hideAutosuggest.bind(this)),r.addEventListener("paste",this.inputPasteEvent.bind(this));else throw new Error("Input not found")}createAutosuggestContainer(){var e;this.autosuggestContainer=document.createElement("div"),this.autosuggestContainer.classList.add("searchstax-autosuggest-container"),this.autosuggestContainer.addEventListener("mouseleave",()=>{this.resetAutosuggestSelection(),this.markActiveAutosuggestItem()}),(e=this.searchInput)==null||e.after(this.autosuggestContainer)}actionButtonInit(){this.actionButton=document.getElementById("searchstax-search-input-action-button"),this.actionButton&&this.actionButton.addEventListener("click",()=>{var e;this.buttonState==="search"?this.executeSearch(((e=this.searchInput)==null?void 0:e.value)??""):this.buttonState==="close"&&this.searchInput&&(this.searchInput.value="",this.executeSearch(""))})}attachSubscriptions(){this.dataLayer.$searchTermChange.subscribe(()=>{this.handleSearchTermChange()}),this.dataLayer.$loadingChange.subscribe(()=>{this.handleLoadingChange()}),this.dataLayer.$searchAutosuggest.subscribe(e=>{e&&this.appendSuggestions(e)}),this.dataLayer.$searchObject.subscribe(e=>{e.query!=="undefined"&&e.query!==void 0&&e.query!=="*"&&this.searchInput&&(this.searchInput.value=this.cleanSuggestionTerm(e.query??""))})}handleLoadingChange(){this.dataLayer.loading?this.updateActionButtonState("loading"):this.handleSearchTermChange()}handleSearchTermChange(){var e;this.dataLayer.searchTerm===((e=this.searchInput)==null?void 0:e.value)&&this.searchInput.value!==""?this.updateActionButtonState("close"):this.updateActionButtonState("search")}updateActionButtonState(e){if(this.buttonState=e,this.actionButton)switch(this.actionButton.classList.remove("searchstax-spinner-icon"),this.actionButton.classList.remove("searchstax-search-close"),this.actionButton.classList.remove("searchstax-search-icon"),e){case"loading":this.actionButton.classList.add("searchstax-spinner-icon");break;case"search":this.actionButton.classList.add("searchstax-search-icon");break;case"close":this.actionButton.classList.add("searchstax-search-close");break}}selectPreviousAutosuggestItem(){this.selectedAutosuggestItem>0?this.selectedAutosuggestItem--:this.selectedAutosuggestItem=this.autosuggestResults.suggestions.length-1,this.markActiveAutosuggestItem()}selectNextAutosuggestItem(){this.selectedAutosuggestItem<this.autosuggestResults.suggestions.length-1?this.selectedAutosuggestItem++:this.selectedAutosuggestItem=0,this.markActiveAutosuggestItem()}resetAutosuggestSelection(){this.selectedAutosuggestItem=-1,this.markActiveAutosuggestItem()}markActiveAutosuggestItem(){const e=document.getElementsByClassName("searchstax-autosuggest-item");for(let t=0;t<e.length;t++){const a=e[t];t===this.selectedAutosuggestItem?a.classList.add("active"):a.classList.remove("active")}}inputKeyupEvent(e){const t=e.key;this.currentInputValue=e.target.value,t==="Enter"?this.suggestionChosen():t==="Escape"?this.hideAutosuggest():t==="ArrowUp"?this.selectPreviousAutosuggestItem():t==="ArrowDown"?this.selectNextAutosuggestItem():this.autosuggestHandling(e),this.handleSearchTermChange()}autosuggestHandling(e){e.target&&e.target.value.length>=this.suggestAfterMinChars?this.executeSuggest(e.target.value):this.hideAutosuggest()}inputPasteEvent(e){setTimeout(()=>{this.autosuggestHandling(e),this.handleSearchTermChange()},0)}executeSuggest(e){this.suggestTrigger(e)}executeSearch(e){this.hideAutosuggest(),this.searchTrigger(e===""?"*":e)}suggestionChosen(){this.selectedAutosuggestItem>-1?this.autosuggestItemClicked(this.autosuggestResults.suggestions[this.selectedAutosuggestItem]):this.executeSearch(this.currentInputValue)}hideAutosuggest(){setTimeout(()=>{this.autosuggestContainer&&(this.autosuggestContainer.innerHTML="",this.autosuggestContainer.classList.add("hidden")),this.resetAutosuggestSelection()},100)}cleanSuggestionTerm(e){return w.removeXSSRiskyTags(e.replace(/(<([^>]+)>)/gi,"")).trim()}autosuggestItemClicked(e){this.searchInput.value=this.cleanSuggestionTerm(e.term??""),this.executeSearch(this.cleanSuggestionTerm(e.term))}createAutosuggestItem(e){var r,s,i;const t=document.createElement("div");t.classList.add("searchstax-autosuggest-item"),t.addEventListener("click",()=>{this.autosuggestItemClicked(e)}),t.addEventListener("mouseenter",()=>{var c;this.selectedAutosuggestItem=((c=this.autosuggestResults)==null?void 0:c.suggestions.indexOf(e))||0,this.markActiveAutosuggestItem()});const a=((s=(r=this.config.templates)==null?void 0:r.autosuggestItemTemplate)==null?void 0:s.template)||((i=d.searchInput.autosuggestItemTemplate)==null?void 0:i.template);return t.innerHTML=m.render(a,e),t}appendSuggestions(e){if(this.autosuggestContainer){this.autosuggestContainer.innerHTML="",this.autosuggestContainer.classList.remove("hidden");for(const t in e.suggest)if(Object.prototype.hasOwnProperty.call(e.suggest,t)){const a=e.suggest[t];for(const r in a)if(Object.prototype.hasOwnProperty.call(a,r)){const s=a[r];this.autosuggestResults=s,s.numFound>0?s.suggestions.forEach(i=>{this.autosuggestContainer.appendChild(this.createAutosuggestItem(i))}):this.autosuggestContainer.classList.add("hidden")}}}}}class Ee{constructor(e){n(this,"dataLayer");n(this,"config");n(this,"linkClickCallback");n(this,"searchCallback");n(this,"containerId");n(this,"searchResultsMainContainer");n(this,"searchResultsContainer");n(this,"searchResultLinks",[]);this.linkClickCallback=e.linkClickCallback,this.searchCallback=e.searchTrigger,this.dataLayer=e.dataLayer,this.config=e.config,this.containerId=e.containerId;const t=document.getElementById(this.containerId);if(t)this.searchResultsMainContainer=t;else throw new Error(`Search Results Main Container with id ${this.containerId} not found`);this.initializeSubscriptions(),this.renderMainTemplate()}initializeSubscriptions(){this.dataLayer.$searchResults.subscribe(e=>{e&&this.searchResultsContainer&&this.renderResults(e)})}changeTemplate(){this.dataLayer.searchResults&&this.renderResults(this.dataLayer.searchResults)}renderNoResultsTemplate(){var a,r,s,i,c;const e=((s=(r=(a=this.config)==null?void 0:a.templates)==null?void 0:r.noSearchResultTemplate)==null?void 0:s.template)||((i=d.searchResults.noSearchResultTemplate)==null?void 0:i.template),t=((c=this.dataLayer.searchResultsMetadata)==null?void 0:c.spellingSuggestion)??"";if(this.dataLayer.renderingEngine===T.mustache&&this.searchResultsContainer&&(this.searchResultsContainer.innerHTML=m.render(e,{spellingSuggestion:t,searchTerm:this.dataLayer.searchTerm})),t&&this.searchResultsContainer){const l=this.searchResultsContainer.querySelector("a");l&&l.addEventListener("click",h=>{h.preventDefault(),h.stopPropagation(),this.searchCallback(t)})}}renderResults(e){var t,a,r,s;if(this.dataLayer.renderingEngine===T.mustache&&this.searchResultsContainer)if(this.removeLinkClickEvents(),e.length===0)this.renderNoResultsTemplate();else{const i=((r=(a=(t=this.config)==null?void 0:t.templates)==null?void 0:a.searchResultTemplate)==null?void 0:r.template)||((s=d.searchResults.searchResultTemplate)==null?void 0:s.template),c=e.map(l=>m.render(i,l));this.searchResultsContainer.innerHTML=c.join(""),this.searchResultLinks=Array.from(this.searchResultsContainer.querySelectorAll(`[${this.uniqueIdAttribute}]`)),this.attachLinkClickEvents()}}removeLinkClickEvents(){this.searchResultLinks.forEach(e=>{e.removeEventListener("click",()=>{})})}get uniqueIdAttribute(){var e,t,a,r;return((a=(t=(e=this.config)==null?void 0:e.templates)==null?void 0:t.searchResultTemplate)==null?void 0:a.searchResultUniqueIdAttribute)||((r=d.searchResults.searchResultTemplate)==null?void 0:r.searchResultUniqueIdAttribute)}attachLinkClickEvents(){this.searchResultLinks.forEach(e=>{e.addEventListener("click",t=>{t.preventDefault(),t.stopPropagation();const a=e.getAttribute(this.uniqueIdAttribute)??"";a&&this.linkClickCallback(a)})})}renderMainTemplate(){var t,a,r,s;const e=((r=(a=(t=this.config)==null?void 0:t.templates)==null?void 0:a.mainTemplate)==null?void 0:r.template)||((s=d.searchResults.mainTemplate)==null?void 0:s.template);this.dataLayer.renderingEngine===T.mustache&&(this.searchResultsMainContainer.innerHTML=m.render(e,{})),setTimeout(()=>{var l,h,u,g,p,y,b;const i=(u=(h=(l=this.config)==null?void 0:l.templates)==null?void 0:h.mainTemplate)!=null&&u.searchResultsContainerId?(y=(p=(g=this.config)==null?void 0:g.templates)==null?void 0:p.mainTemplate)==null?void 0:y.searchResultsContainerId:(b=d.searchResults.mainTemplate)==null?void 0:b.searchResultsContainerId,c=document.getElementById(i);if(c)this.searchResultsContainer=c;else throw new Error(`Search Results Container with id ${i} not found`)},0)}}class we{constructor(e){n(this,"dataLayer");n(this,"config");n(this,"containerId");n(this,"selectId");n(this,"searchSortingMainContainer",null);var t,a;this.dataLayer=e.dataLayer,this.config=e.config,this.containerId=e.containerId,this.selectId=((a=(t=this.config.templates)==null?void 0:t.main)==null?void 0:a.selectId)||d.sorting.main.selectId,this.searchSortingMainContainer=document.getElementById(this.containerId),this.initializeSubscriptions(),this.renderMainTemplate(this.generateTemplateData())}initializeSubscriptions(){this.dataLayer.$searchResults.subscribe(e=>{e&&this.renderMainTemplate(this.generateTemplateData())})}generateTemplateData(){return{...this.dataLayer.parsedData.data}}setOrderQuery(e){const t=this.dataLayer.searchObject;t&&(t.order=e,this.dataLayer.setSearchObject(t))}markOptionSelected(){const e=document.getElementById(this.selectId);if(e){const t=e.querySelector(`option[value="${decodeURIComponent(this.dataLayer.searchObject.order)}"]`);t&&(t.selected=!0)}}renderMainTemplate(e){var a,r,s;const t=((s=(r=(a=this.config)==null?void 0:a.templates)==null?void 0:r.main)==null?void 0:s.template)||d.sorting.main.template;if(this.dataLayer.renderingEngine===T.mustache){this.searchSortingMainContainer.innerHTML=m.render(t,e),this.markOptionSelected();const i=document.getElementById(this.selectId);i&&i.addEventListener("change",c=>{this.setOrderQuery(c.target.value)})}}}class Fe{constructor(e=T.mustache){n(this,"routerEnabled",!1);n(this,"cachedQuery","");n(this,"routerHelper");n(this,"searchHelper");n(this,"searchResultsConfig");n(this,"searchPaginationConfig");n(this,"searchFeedbackConfig");n(this,"searchSortingConfig");n(this,"searchFacetsConfig");n(this,"relatedSearchesConfig");n(this,"externalPromotionsConfig");n(this,"searchInputWidget");n(this,"searchResultsWidget");n(this,"searchFacetsWidget");n(this,"searchPaginationWidget");n(this,"searchFeedbackWidget");n(this,"searchSortingWidget");n(this,"relatedSearchesWidget");n(this,"externalPromotionsWidget");n(this,"dataLayer",new X(Z.getOrSetCookie("searchstax_session_id")));n(this,"firstRequest",!0);e&&this.dataLayer.setRenderingEngine(e),this.handleHooks()}setRenderingEngine(e=T.mustache){this.dataLayer.setRenderingEngine(e)}handleHooks(){var e,t;(t=(e=this.dataLayer.searchstaxConfig)==null?void 0:e.hooks)!=null&&t.afterSearch&&this.dataLayer.$searchResults.subscribe(a=>{this.dataLayer.searchstaxConfig.hooks.afterSearch(a)}),this.dataLayer.$searchObject.subscribe(a=>{a.query!==""&&this.search(a)}),this.dataLayer.$searchResults.subscribe(a=>{a&&this.dataLayer.searchResultsMetadata&&j.trackSearch({...this.dataLayer.parsedData.trackingData,impressions:this.dataLayer.searchResultsMetadata.impressions})})}initialize(e){var t,a;e.autoCorrect===!1&&(this.dataLayer.autoCorrect=!1),this.dataLayer.searchstaxConfig||(this.dataLayer.setSearchstaxConfig(e),this.searchHelper=new Y({...e,sessionId:this.dataLayer.sessionId},this.dataLayer)),((t=e.router)==null?void 0:t.enabled)===void 0||((a=e.router)==null?void 0:a.enabled)===!0?(this.routerEnabled=!0,this.routerHelper=new W(e.router?e.router:{enabled:!0}),this.dataLayer.setSearchObject(this.routerHelper.urlToSearchObject(window.location.href)),addEventListener("popstate",()=>{this.routerHelper&&this.dataLayer.setSearchObject(this.routerHelper.urlToSearchObject(window.location.href))})):this.routerHelper=new W({})}search(e){if(this.searchHelper&&e.query!==""&&e.query!==void 0&&e.query!=="undefined"){const t=this.dataLayer.forceNotCorrect;this.searchHelper.search(e,this.parseSearchResultsResponse.bind(this),this.firstRequest,t),this.firstRequest=!1,this.getRelatedSearches()}}getRelatedSearches(){this.searchHelper&&this.relatedSearchesConfig&&this.searchHelper.getRelatedSearches(this.dataLayer.searchObject,this.relatedSearchesConfig.relatedSearchesURL,this.relatedSearchesConfig.relatedSearchesAPIKey,this.parseRelatedSearchesResponse.bind(this))}parseRelatedSearchesResponse(e){var s;const a=(((s=e.response)==null?void 0:s.docs)??[]).map((i,c)=>({...i,position:c+1})),r=[];for(const i of a)r.push({relatedSearch:i.related_search,position:i.position});this.dataLayer.searchResultsMetadata&&j.trackRelatedSearches({...this.dataLayer.parsedData.trackingData,impressions:r}),this.dataLayer.setSearchRelatedSearches(a)}handleRouter(){this.routerEnabled&&this.routerHelper.updateUrl(this.dataLayer.searchObject)}parseSearchResultsResponse(e){var s,i;this.handleRouter();let t=D.combineResultsWithMetadata(e),a=D.extractFacets(e);this.dataLayer.setSearchFacets(a),(i=(s=this.dataLayer.searchstaxConfig)==null?void 0:s.hooks)!=null&&i.afterSearch&&(t=this.dataLayer.searchstaxConfig.hooks.afterSearch(t)),this.dataLayer.setSearchExternalPromotions(e.externalLinks??[]);const r=D.extractSearchResultsMetadata(e);this.dataLayer.setSearchResultsMetadata(r),this.dataLayer.setSearchResults(t)}cacheFacets(){var e;(e=this.searchHelper)==null||e.cacheFacets()}parseSuggestSuggestResponse(e){var a,r;let t=e;(r=(a=this.dataLayer.searchInputConfig)==null?void 0:a.hooks)!=null&&r.afterAutosuggest&&(t=this.dataLayer.searchInputConfig.hooks.afterAutosuggest(e)),this.dataLayer.setSearchAutosuggest(t)}suggest(e,t){this.searchHelper&&this.searchHelper.suggest(e,this.parseSuggestSuggestResponse.bind(this),t)}changeLanguage(e){this.searchHelper&&this.dataLayer.setLanguage(e)}addSearchInputWidget(e,t){this.dataLayer.searchInputConfig||(this.dataLayer.setSearchInputConfig(t),this.searchInputWidget=new Me({containerId:e,config:t,searchTrigger:this.executeSearch.bind(this),suggestTrigger:this.executeSuggest.bind(this),dataLayer:this.dataLayer}))}addSearchResultsWidget(e,t){this.searchResultsConfig||(this.searchResultsConfig=t,this.searchResultsWidget=new Ee({containerId:e,linkClickCallback:this.executeLinkClick.bind(this),searchTrigger:this.executeSearch.bind(this),config:t,dataLayer:this.dataLayer}))}addPaginationWidget(e,t){this.searchPaginationConfig=t,this.searchPaginationWidget=new Re({containerId:e,config:t,dataLayer:this.dataLayer,routerHelper:this.routerHelper})}addSearchFeedbackWidget(e,t){this.searchFeedbackConfig||(this.searchFeedbackConfig=t,this.searchFeedbackWidget=new Pe({containerId:e,config:t,dataLayer:this.dataLayer,searchTrigger:this.executeSearch.bind(this)}))}addSearchSortingWidget(e,t){this.searchSortingConfig||(this.searchSortingConfig=t,this.searchSortingWidget=new we({containerId:e,config:t,dataLayer:this.dataLayer}))}addRelatedSearchesWidget(e,t){this.relatedSearchesConfig||(this.relatedSearchesConfig=t,this.relatedSearchesWidget=new Ie({containerId:e,config:t,dataLayer:this.dataLayer,trackRelatedSearchClick:this.trackRelatedSearchClick.bind(this)}),setTimeout(()=>{this.getRelatedSearches()},0))}addExternalPromotionsWidget(e,t){this.externalPromotionsConfig||(this.externalPromotionsConfig=t,this.externalPromotionsWidget=new xe({containerId:e,config:t,dataLayer:this.dataLayer}))}addFacetsWidget(e,t){this.searchFacetsConfig=t,this.searchFacetsWidget=new ke({containerId:e,config:t,dataLayer:this.dataLayer,routerHelper:this.routerHelper},this.cacheFacets.bind(this))}executeSearch(e,t){var s,i;const a={...this.dataLayer.searchObject};a.query=w.removeXSSRiskyTags(e),a.page=1,a.facets=[],this.dataLayer.forceNotCorrect=!!t;let r=(s=this.routerHelper)==null?void 0:s.searchObjectToParams(a);r&&(r=(i=this.routerHelper)==null?void 0:i.extractParamsThatDoNotStartWithRouteName(r)),r&&(a.additionalProps=Object.keys(r).map(c=>r?{key:c,value:r[c]}:{key:"",value:""})),this.dataLayer.setSearchObject(a)}executeSuggest(e){var a,r;let t={term:e,queryParams:[]};(r=(a=this.dataLayer.searchInputConfig)==null?void 0:a.hooks)!=null&&r.beforeAutosuggest&&(t=this.dataLayer.searchInputConfig.hooks.beforeAutosuggest(t)),t&&t.term!==void 0&&t.queryParams!==void 0&&this.suggest(t.term,t.queryParams)}trackRelatedSearchClick(e){this.dataLayer.searchResultsMetadata&&this.dataLayer.searchRelatedSearches&&j.trackRelatedSearchClick({...this.dataLayer.parsedData.trackingData,relatedSearch:e})}executeLinkClick(e){var a,r;let t=D.findResultByUniqueId(e,this.dataLayer.searchResults??[]);t&&((r=(a=this.searchResultsConfig)==null?void 0:a.hooks)!=null&&r.afterLinkClick&&(t=this.searchResultsConfig.hooks.afterLinkClick(t)),t&&this.dataLayer.searchResultsMetadata&&(j.trackClick({result:t,...this.dataLayer.parsedData.trackingData}),setTimeout(()=>{window.location.href=(t==null?void 0:t.url)??""},0)))}setPage(e){var t;(t=this.searchPaginationWidget)==null||t.goToPage(e)}changeResultTemplate(e){var t,a,r;this.searchResultsConfig&&(this.searchResultsConfig.templates=(t=this.searchResultsConfig)!=null&&t.templates?{...(a=this.searchResultsConfig)==null?void 0:a.templates,...e}:e,(r=this.searchResultsWidget)==null||r.changeTemplate())}}exports.Searchstax=Fe;
|
|
223
|
+
`,selectId:"searchstax-search-order-select"}};class d{}n(d,"externalPromotions",me),n(d,"facets",ye),n(d,"pagination",Ce),n(d,"relatedSearches",ve),n(d,"searchFeedback",Se),n(d,"searchInput",be),n(d,"searchResults",Le),n(d,"sorting",Te);class xe{constructor(e){n(this,"dataLayer");n(this,"config");n(this,"containerId");n(this,"externalPromotionsContainerId");n(this,"searchExternalPromotionsMainContainer",null);var t,a;this.dataLayer=e.dataLayer,this.config=e.config,this.containerId=e.containerId,this.externalPromotionsContainerId=((a=(t=this.config.templates)==null?void 0:t.mainTemplate)==null?void 0:a.externalPromotionsContainerId)||d.externalPromotions.mainTemplate.externalPromotionsContainerId,this.searchExternalPromotionsMainContainer=document.getElementById(this.containerId),this.initializeSubscriptions(),this.renderMainTemplate(this.generateTemplateData())}initializeSubscriptions(){this.dataLayer.$searchExternalPromotions.subscribe(e=>{e&&this.renderMainTemplate(this.generateTemplateData())})}generateTemplateData(){return{...this.dataLayer.parsedData.data,externalPromotions:this.dataLayer.parsedData.externalPromotions}}addExternalSearch(e){var a,r,s,i;const t=document.getElementById(this.externalPromotionsContainerId);if(t){const c=((s=(r=(a=this.config)==null?void 0:a.templates)==null?void 0:r.externalPromotion)==null?void 0:s.template)||((i=d.externalPromotions.externalPromotion)==null?void 0:i.template),l=document.createElement("div");l.classList.add("searchstax-external-promotion"),l.addEventListener("click",h=>{this.trackClick(e,h)}),l.innerHTML=m.render(c,e),t.appendChild(l)}}trackClick(e,t){t.stopPropagation(),t.preventDefault(),window.open(e.url,"_blank")}renderMainTemplate(e){var a,r,s,i;const t=((s=(r=(a=this.config)==null?void 0:a.templates)==null?void 0:r.mainTemplate)==null?void 0:s.template)||((i=d.externalPromotions.mainTemplate)==null?void 0:i.template);if(this.dataLayer.renderingEngine===T.mustache){this.searchExternalPromotionsMainContainer.innerHTML=m.render(t,e);const c=document.getElementById(this.externalPromotionsContainerId);c&&(c.innerHTML="");for(const l of e.externalPromotions)this.addExternalSearch(l)}}}class ke{constructor(e,t){n(this,"dataLayer");n(this,"config");n(this,"containerId");n(this,"routerHelper");n(this,"cachedPhrase","");n(this,"isCached",!1);n(this,"overlayOpened",!1);n(this,"facetPaginationStep");n(this,"facetPaginationStepMobile");n(this,"searchFacetsMainContainer",null);n(this,"searchFacetsMobileContainer",null);n(this,"searchFacetsDesktopContainer",null);n(this,"facetLimits",{});n(this,"facetLimitsMobile",{});n(this,"deactivatedFacets",{});n(this,"cachedData",null);n(this,"cacheFacets");n(this,"onFacetSelect",(e,t,a,r)=>{if(e.stopPropagation(),!t.disabled){const s=a.querySelector("input");s.checked=r?s.checked:!s.checked;const i=this.dataLayer.searchObject;let c=[...i.facets];const l=this.extractFacetValue(t);s.checked?c.find(u=>E.deepEqual(u,l)?u:!1)||(this.config.facetingType==="tabs"&&(c=c.filter(u=>u.name!==l.name)),c.push(l)):c=c.filter(h=>!E.deepEqual(h,l)),setTimeout(()=>{this.dataLayer.setSearchObject({...i,facets:c,page:1}),this.config.facetingType==="tabs"&&this.renderMainTemplate(this.generateTemplateData(),!0)},0)}});this.dataLayer=e.dataLayer,this.config=e.config,this.containerId=e.containerId,this.routerHelper=e.routerHelper,this.cacheFacets=t,this.facetPaginationStep=this.config.itemsPerPageDesktop,this.facetPaginationStepMobile=this.config.itemsPerPageMobile,this.searchFacetsMainContainer=document.getElementById(this.containerId),this.needCache&&t(),this.initializeSubscriptions()}get needCache(){return this.config.facetingType==="showUnavailable"||this.config.facetingType==="or"||this.config.facetingType==="tabs"}get needDisabling(){return this.config.facetingType==="showUnavailable"}initializeSubscriptions(){this.needCache&&this.dataLayer.$searchFacetsCached.subscribe(e=>{e&&this.dataLayer.searchFacets&&this.renderMainTemplate(this.generateTemplateData())}),this.dataLayer.$searchResults.subscribe(e=>{e&&(this.needCache&&!this.isCached&&(this.dataLayer.searchFacets&&!this.dataLayer.searchFacetsCached&&this.dataLayer.setSearchFacetsCached(this.dataLayer.searchFacets),this.cacheFacets()),this.renderMainTemplate(this.generateTemplateData()))}),this.dataLayer.$searchObject.subscribe(e=>{this.cachedPhrase!==e.query?(this.cachedPhrase=e.query,this.isCached=!1):this.isCached=!0})}extractFacetValue(e){return{type:this.config.facetingType,name:e.parentName,value:e.value}}applyFacetLimits(e,t){const a=t?this.facetPaginationStepMobile:this.facetPaginationStep,r=t?this.facetLimits:this.facetLimitsMobile;return e.forEach(s=>{r[s.name]||(r[s.name]=a)}),e.map(s=>({...s,values:s.values.slice(0,r[s.name]),showingAllFacets:s.values.length<=r[s.name],hasMoreFacets:s.values.length>a}))}generateTemplateData(e){if(this.dataLayer.searchFacets){let t=this.dataLayer.searchFacets;return this.needCache&&this.dataLayer.searchFacetsCached&&(t=this.dataLayer.searchFacetsCached,this.needDisabling&&(t=t.map(a=>{var s;const r=(s=this.dataLayer.searchFacets)==null?void 0:s.find(i=>i.name===a.name);return r?{...a,values:a.values.map(i=>{const c=r.values.find(l=>i.type==="range"?!1:i.type==="checkbox"?l.value===i.value:!1);return{...i,disabled:!c}})}:{...a,values:a.values.map(i=>({...i,disabled:!0}))}}))),this.config.specificFacets&&(t=t.filter(a=>{var r;return(r=this.config.specificFacets)==null?void 0:r.includes(a.name)})),{facets:this.applyFacetLimits(t,e),...this.dataLayer.parsedData.data}}else return{facets:[],...this.dataLayer.parsedData.data}}createFacetItem(e,t,a){var l,h,u,g,p,y,b,f,C,v,S,R;const r=document.createElement("div");r.classList.add("searchstax-facet-container"),this.deactivatedFacets[e.name]||r.classList.add("active");const s=((u=(h=(l=this.config)==null?void 0:l.templates)==null?void 0:h.facetItemContainerTemplate)==null?void 0:u.template)||((g=d.facets.facetItemContainerTemplate)==null?void 0:g.template);r.innerHTML=m.render(s,e),t.appendChild(r);const i=r.querySelector("."+(((b=(y=(p=this.config)==null?void 0:p.templates)==null?void 0:y.facetItemContainerTemplate)==null?void 0:b.facetListTitleContainerClass)||((f=d.facets.facetItemContainerTemplate)==null?void 0:f.facetListTitleContainerClass)));i==null||i.addEventListener("click",()=>{r.classList.toggle("active")});const c=r.querySelector("."+(((S=(v=(C=this.config)==null?void 0:C.templates)==null?void 0:v.facetItemContainerTemplate)==null?void 0:S.facetListContainerClass)||((R=d.facets.facetItemContainerTemplate)==null?void 0:R.facetListContainerClass)));c&&(e.values.forEach(P=>{this.createFacetListItem(P,c)}),e.hasMoreFacets&&this.createHasMoreComponent(e,c,a))}createFacetListItem(e,t){var l,h,u,g,p,y,b,f,C,v,S,R,P,L;const a=document.createElement("div");a.classList.add("searchstax-facet-value-container"),e.disabled&&a.classList.add("searchstax-facet-value-disabled");const s=!!((l=this.dataLayer.searchObject.facets)!=null&&l.find(M=>E.deepEqual(M,this.extractFacetValue(e)))),i=((g=(u=(h=this.config)==null?void 0:h.templates)==null?void 0:u.facetItemTemplate)==null?void 0:g.template)||((p=d.facets.facetItemTemplate)==null?void 0:p.template);a.innerHTML=m.render(i,{...e,isChecked:s});let c=(y=d.facets.facetItemTemplate)==null?void 0:y.checkTriggerClasses;c=((C=(f=(b=this.config)==null?void 0:b.templates)==null?void 0:f.facetItemTemplate)==null?void 0:C.checkTriggerClasses)||c,c.forEach(M=>{var F;(F=a.querySelector("."+M))==null||F.addEventListener("click",x=>{this.onFacetSelect(x,e,a)})}),(L=a.querySelector("."+(((R=(S=(v=this.config)==null?void 0:v.templates)==null?void 0:S.facetItemTemplate)==null?void 0:R.inputCheckboxClass)||((P=d.facets.facetItemTemplate)==null?void 0:P.inputCheckboxClass))))==null||L.addEventListener("click",M=>{this.onFacetSelect(M,e,a,!0)}),t.appendChild(a)}createHasMoreComponent(e,t,a){var c,l,h,u,g,p,y,b;const r=document.createElement("div");r.classList.add("searchstax-facet-show-more-container");const s=((h=(l=(c=this.config)==null?void 0:c.templates)==null?void 0:l.showMoreButtonContainerTemplate)==null?void 0:h.template)||((u=d.facets.showMoreButtonContainerTemplate)==null?void 0:u.template);r.innerHTML=m.render(s,e);const i=r.querySelector("."+(((y=(p=(g=this.config)==null?void 0:g.templates)==null?void 0:p.showMoreButtonContainerTemplate)==null?void 0:y.showMoreButtonClass)||((b=d.facets.showMoreButtonContainerTemplate)==null?void 0:b.showMoreButtonClass)));i&&(this.attachOnclickToShowMore(e,i,a),t&&t.appendChild(i))}attachOnclickToShowMore(e,t,a){t.addEventListener("click",r=>{this.onShowMoreLessClick(r,e,a)})}onShowMoreLessClick(e,t,a){e.preventDefault();const r=a?this.facetPaginationStepMobile:this.facetPaginationStep,s=a?this.facetLimits:this.facetLimitsMobile;s[t.name]===void 0?s[t.name]=r*2:s[t.name]<=t.values.length?s[t.name]=s[t.name]+r:s[t.name]=r,this.renderMainTemplate(this.generateTemplateData())}renderMainTemplate(e,t){var a,r,s,i,c,l,h,u,g,p,y;if(e&&(!E.deepEqual(this.cachedData??{},e)||t)){this.cachedData=e;const b=((s=(r=(a=this.config)==null?void 0:a.templates)==null?void 0:r.mainTemplateDesktop)==null?void 0:s.template)||((i=d.facets.mainTemplateDesktop)==null?void 0:i.template);if(this.dataLayer.renderingEngine===T.mustache&&this.searchFacetsMainContainer){this.searchFacetsMainContainer.innerHTML=m.render(b,{...e});const f=(u=this.searchFacetsMainContainer)==null?void 0:u.querySelector("."+(((h=(l=(c=this.config)==null?void 0:c.templates)==null?void 0:l.mainTemplateDesktop)==null?void 0:h.facetsContainerClass)||d.facets.mainTemplateDesktop.facetsContainerClass));if(f){f.innerHTML="";for(const C of e.facets)this.createFacetItem(C,f);if(this.searchFacetsMainContainer){const C=this.searchFacetsMainContainer.querySelector("."+(((y=(p=(g=this.config)==null?void 0:g.templates)==null?void 0:p.mainTemplateDesktop)==null?void 0:y.selectedFacetsContainerClass)||d.facets.mainTemplateDesktop.selectedFacetsContainerClass));C&&(this.createSelectedFacetsComponents(C),this.createClearFacetsComponents(C))}}this.renderMobileTemplate(this.generateTemplateData(!0))}}}createSelectedFacetsComponents(e){const t=this.dataLayer.searchObject.facets;for(const a of t){const r=decodeURIComponent(a.name),s=decodeURIComponent(a.value);if(this.dataLayer.searchFacets){const i=this.needCache?this.dataLayer.searchFacetsCached:this.dataLayer.searchFacets,c=i==null?void 0:i.find(l=>l.name===r);if(c){const l=c.values.find(h=>h.type==="range"?!1:h.type==="checkbox"?`"${h.value}"`===s:!1);l&&this.createSelectedFacetsComponent(e,l)}}}}createClearFacetsComponents(e){var i,c,l,h,u,g,p,y;const t=this.dataLayer.searchObject,a=((l=(c=(i=this.config)==null?void 0:i.templates)==null?void 0:c.clearFacetsTemplate)==null?void 0:l.template)||((h=d.facets.clearFacetsTemplate)==null?void 0:h.template),r=document.createElement("div");r.innerHTML=m.render(a,{shouldShow:t.facets.length>0});const s=r.querySelector("."+(((p=(g=(u=this.config)==null?void 0:u.templates)==null?void 0:g.clearFacetsTemplate)==null?void 0:p.containerClass)||((y=d.facets.clearFacetsTemplate)==null?void 0:y.containerClass)));s&&(s.addEventListener("click",()=>{this.removeSelectedFacets()}),e.appendChild(s))}createSelectedFacetsComponent(e,t){var i,c,l,h,u,g,p,y;const a=((l=(c=(i=this.config)==null?void 0:i.templates)==null?void 0:c.selectedFacetsTemplate)==null?void 0:l.template)||((h=d.facets.selectedFacetsTemplate)==null?void 0:h.template),r=document.createElement("div");r.innerHTML=m.render(a,t);const s=r.querySelector("."+(((p=(g=(u=this.config)==null?void 0:u.templates)==null?void 0:g.selectedFacetsTemplate)==null?void 0:p.containerClass)||((y=d.facets.selectedFacetsTemplate)==null?void 0:y.containerClass)));s&&(s.addEventListener("click",()=>{this.unselectFacet(t)}),e.appendChild(s))}unselectFacet(e){const t=this.dataLayer.searchObject;let a=[...t.facets];e.type==="checkbox"&&(a=a.filter(r=>r!==this.extractFacetValue(e))),setTimeout(()=>{this.dataLayer.setSearchObject({...t,facets:a})},0)}removeSelectedFacets(){const e=this.dataLayer.searchObject;this.dataLayer.setSearchObject({...e,facets:[]})}createFilterByComponent(e){var s,i,c,l,h,u,g,p;const t=((c=(i=(s=this.config)==null?void 0:s.templates)==null?void 0:i.filterByTemplate)==null?void 0:c.template)||((l=d.facets.filterByTemplate)==null?void 0:l.template),a=document.createElement("div");a.innerHTML=m.render(t,{});const r=a.querySelector("."+(((g=(u=(h=this.config)==null?void 0:h.templates)==null?void 0:u.filterByTemplate)==null?void 0:g.containerClass)||((p=d.facets.filterByTemplate)==null?void 0:p.containerClass)));r&&(e.prepend(r),r.addEventListener("click",this.openOverlay.bind(this)))}openOverlay(){var e;this.overlayOpened=!0,this.searchFacetsMainContainer&&(document.body.classList.toggle("searchstax-no-scroll"),(e=this.searchFacetsMainContainer.querySelector(".searchstax-facets-mobile-overlay"))==null||e.classList.add("searchstax-show"))}closeOverlay(){var e;this.overlayOpened=!1,this.searchFacetsMainContainer&&(document.body.classList.toggle("searchstax-no-scroll"),(e=this.searchFacetsMainContainer.querySelector(".searchstax-facets-mobile-overlay"))==null||e.classList.remove("searchstax-show"))}renderMobileTemplate(e){var t,a,r,s,i,c,l,h,u,g,p,y,b,f,C,v,S,R,P;if(e){const L=document.createElement("div");L.classList.add("searchstax-facets-container-mobile");const M=((r=(a=(t=this.config)==null?void 0:t.templates)==null?void 0:a.mainTemplateMobile)==null?void 0:r.template)||((s=d.facets.mainTemplateMobile)==null?void 0:s.template);if(this.dataLayer.renderingEngine===T.mustache){if(L.innerHTML=m.render(M,{...e,overlayOpened:this.overlayOpened}),(i=this.searchFacetsMainContainer)==null||i.appendChild(L),(l=(c=this.config)==null?void 0:c.templates)!=null&&l.mainTemplateMobile)for(const O of((g=(u=(h=this.config)==null?void 0:h.templates)==null?void 0:u.mainTemplateMobile)==null?void 0:g.closeOverlayTriggerClasses)||[]){const H=L.querySelector("."+O);H&&H.addEventListener("click",this.closeOverlay.bind(this))}else for(const O of d.facets.mainTemplateMobile.closeOverlayTriggerClasses){const H=L.querySelector("."+O);H&&H.addEventListener("click",this.closeOverlay.bind(this))}const F=L.querySelector("."+(((b=(y=(p=this.config)==null?void 0:p.templates)==null?void 0:y.mainTemplateMobile)==null?void 0:b.filterByContainerClass)||d.facets.mainTemplateMobile.filterByContainerClass));F&&this.createFilterByComponent(F);const x=L.querySelector("."+(((v=(C=(f=this.config)==null?void 0:f.templates)==null?void 0:C.mainTemplateMobile)==null?void 0:v.selectedFacetsContainerClass)||d.facets.mainTemplateMobile.selectedFacetsContainerClass));x&&(this.createSelectedFacetsComponents(x),this.createClearFacetsComponents(x));const $=L.querySelector("."+(((P=(R=(S=this.config)==null?void 0:S.templates)==null?void 0:R.mainTemplateMobile)==null?void 0:P.facetsContainerClass)||d.facets.mainTemplateMobile.facetsContainerClass));if($){$.innerHTML="";for(const O of e.facets)this.createFacetItem(O,$,!0)}}}}}class Re{constructor(e){n(this,"dataLayer");n(this,"config");n(this,"containerId");n(this,"previousButtonClass");n(this,"nextButtonClass");n(this,"routerHelper");n(this,"searchPaginationMainContainer",null);var t,a,r,s,i,c;this.dataLayer=e.dataLayer,this.config=e.config,this.containerId=e.containerId,this.routerHelper=e.routerHelper,this.previousButtonClass=((r=(a=(t=this.config)==null?void 0:t.templates)==null?void 0:a.mainTemplate)==null?void 0:r.previousButtonClass)??d.pagination.mainTemplate.previousButtonClass,this.nextButtonClass=((c=(i=(s=this.config)==null?void 0:s.templates)==null?void 0:i.mainTemplate)==null?void 0:c.nextButtonClass)??d.pagination.mainTemplate.nextButtonClass,this.searchPaginationMainContainer=document.getElementById(this.containerId),this.initializeSubscriptions(),this.renderMainTemplate(this.generateTemplateData())}get isFirstPage(){var e;return((e=this.dataLayer.searchObject)==null?void 0:e.page)===1}get isLastPage(){var e,t;return((e=this.dataLayer.searchObject)==null?void 0:e.page)===Math.ceil((((t=this.dataLayer.searchResultsMetadata)==null?void 0:t.totalResultsValue)??0)/10)}initializeSubscriptions(){this.dataLayer.$searchResults.subscribe(e=>{e&&this.renderMainTemplate(this.generateTemplateData())})}generateTemplateData(){var e,t;return{...this.dataLayer.parsedData.data,previousPageLink:this.routerHelper.searchObjectToUrl({...this.dataLayer.searchObject,page:((e=this.dataLayer.searchObject)==null?void 0:e.page)-1}),nextPageLink:this.routerHelper.searchObjectToUrl({...this.dataLayer.searchObject,page:((t=this.dataLayer.searchObject)==null?void 0:t.page)+1})}}goToPage(e){const t=this.dataLayer.searchObject;t&&(t.page=e,this.dataLayer.setSearchObject(t)),window.scrollTo(0,0)}nextPage(e){var t;e.preventDefault(),e.stopPropagation(),this.isLastPage||this.goToPage(((t=this.dataLayer.searchObject)==null?void 0:t.page)+1)}previousPage(e){var t;e.preventDefault(),e.stopPropagation(),this.isFirstPage||this.goToPage(((t=this.dataLayer.searchObject)==null?void 0:t.page)-1)}overridePaginationEvents(){if(this.searchPaginationMainContainer){const e=this.searchPaginationMainContainer.querySelector("."+this.previousButtonClass),t=this.searchPaginationMainContainer.querySelector("."+this.nextButtonClass);e&&e.addEventListener("click",this.previousPage.bind(this)),t&&t.addEventListener("click",this.nextPage.bind(this))}}renderMainTemplate(e){var a,r,s,i,c,l;this.searchPaginationMainContainer&&((a=this.searchPaginationMainContainer.querySelector("."+this.previousButtonClass))==null||a.removeEventListener("click",this.previousPage),(r=this.searchPaginationMainContainer.querySelector("."+this.nextButtonClass))==null||r.removeEventListener("click",this.nextPage));const t=((c=(i=(s=this.config)==null?void 0:s.templates)==null?void 0:i.mainTemplate)==null?void 0:c.template)||((l=d.pagination.mainTemplate)==null?void 0:l.template);this.dataLayer.renderingEngine===T.mustache&&(this.searchPaginationMainContainer.innerHTML=m.render(t,e),setTimeout(()=>{this.overridePaginationEvents()},0))}}class Ie{constructor(e){n(this,"dataLayer");n(this,"config");n(this,"containerId");n(this,"relatedSearchesContainerClass");n(this,"searchRelatedSearchesMainContainer",null);n(this,"track");var t,a;this.dataLayer=e.dataLayer,this.config=e.config,this.containerId=e.containerId,this.relatedSearchesContainerClass=((a=(t=this.config.templates)==null?void 0:t.main)==null?void 0:a.relatedSearchesContainerClass)||d.relatedSearches.main.relatedSearchesContainerClass,this.searchRelatedSearchesMainContainer=document.getElementById(this.containerId),this.track=e.trackRelatedSearchClick,this.initializeSubscriptions()}initializeSubscriptions(){this.dataLayer.$searchRelatedSearches.subscribe(e=>{e&&this.renderMainTemplate(this.generateTemplateData())})}generateTemplateData(){return{...this.dataLayer.parsedData.data}}addRelatedSearchComponent(e,t){var s,i,c,l,h;const a=document.createElement("div"),r=((c=(i=(s=this.config)==null?void 0:s.templates)==null?void 0:i.relatedSearch)==null?void 0:c.template)||d.relatedSearches.relatedSearch.template;if(this.dataLayer.renderingEngine===T.mustache){a.innerHTML=m.render(r,e);const u=a.querySelector("."+(((h=(l=this.config.templates)==null?void 0:l.relatedSearch)==null?void 0:h.relatedSearchContainerClass)||d.relatedSearches.relatedSearch.relatedSearchContainerClass));u&&(t.appendChild(u),u.addEventListener("click",()=>{this.executeSearch(e)}))}}executeSearch(e){const t=this.dataLayer.searchObject;t.query=e.related_search,this.dataLayer.setSearchObject(t),this.track(e)}renderMainTemplate(e){var a,r,s,i;const t=((s=(r=(a=this.config)==null?void 0:a.templates)==null?void 0:r.main)==null?void 0:s.template)||d.relatedSearches.main.template;if(this.dataLayer.renderingEngine===T.mustache&&this.searchRelatedSearchesMainContainer){this.searchRelatedSearchesMainContainer.innerHTML="",this.searchRelatedSearchesMainContainer.innerHTML=m.render(t,e);const c=(i=this.searchRelatedSearchesMainContainer)==null?void 0:i.querySelector(`.${this.relatedSearchesContainerClass}`);if(c)for(const l of e.relatedSearches)this.addRelatedSearchComponent(l,c)}}}class Pe{constructor(e){n(this,"dataLayer");n(this,"config");n(this,"containerId");n(this,"searchFeedbackMainContainer",null);n(this,"searchTrigger");this.dataLayer=e.dataLayer,this.config=e.config,this.containerId=e.containerId,this.searchTrigger=e.searchTrigger,this.searchFeedbackMainContainer=document.getElementById(this.containerId),this.initializeSubscriptions()}initializeSubscriptions(){this.dataLayer.$searchResults.subscribe(e=>{e&&this.renderMainTemplate(this.generateTemplateData())})}generateTemplateData(){return{...this.dataLayer.parsedData.data}}onOriginalQueryClick(e){var a;e.stopPropagation(),e.preventDefault();const t=(a=e.target)==null?void 0:a.innerHTML;this.searchTrigger(t,!0)}attachClick(){var t,a,r,s,i;const e=(i=this.searchFeedbackMainContainer)==null?void 0:i.querySelector("."+(((r=(a=(t=this.config)==null?void 0:t.templates)==null?void 0:a.main)==null?void 0:r.originalQueryClass)||((s=d.searchFeedback.main)==null?void 0:s.originalQueryClass)));console.log("originalQuery",e),e&&e.addEventListener("click",this.onOriginalQueryClick.bind(this))}renderMainTemplate(e){var a,r,s;const t=((s=(r=(a=this.config)==null?void 0:a.templates)==null?void 0:r.main)==null?void 0:s.template)||d.searchFeedback.main.template;console.log("render"),this.dataLayer.renderingEngine===T.mustache&&(this.searchFeedbackMainContainer.innerHTML=m.render(t,e),setTimeout(()=>{this.attachClick()},0))}}class Me{constructor(e){n(this,"dataLayer");n(this,"config");n(this,"suggestAfterMinChars");n(this,"containerId");n(this,"currentInputValue","");n(this,"autosuggestResults");n(this,"searchInput");n(this,"actionButton");n(this,"autosuggestContainer");n(this,"buttonState","search");n(this,"selectedAutosuggestItem",-1);n(this,"suggestTrigger");n(this,"searchTrigger");this.dataLayer=e.dataLayer,this.config=e.config,this.searchTrigger=e.searchTrigger,this.suggestTrigger=e.suggestTrigger,this.containerId=e.containerId,this.suggestAfterMinChars=e.config.suggestAfterMinChars,this.renderMainTemplate(),this.actionButtonInit(),this.updateActionButtonState("search"),this.searchInput&&(this.createAutosuggestContainer(),this.attachSubscriptions())}renderMainTemplate(){var s,i,c,l;const e=document.getElementById(this.containerId);if(!e)throw new Error("Search input container not found");const t=((i=(s=this.config.templates)==null?void 0:s.mainTemplate)==null?void 0:i.template)||d.searchInput.mainTemplate.template;if(this.dataLayer.renderingEngine===T.mustache){const h=m.render(t,{});e.innerHTML=h}const a=((l=(c=this.config.templates)==null?void 0:c.mainTemplate)==null?void 0:l.searchInputId)||d.searchInput.mainTemplate.searchInputId,r=document.querySelector(`#${a}`);if(r)this.searchInput=r,r.addEventListener("keyup",this.inputKeyupEvent.bind(this)),r.addEventListener("blur",this.hideAutosuggest.bind(this)),r.addEventListener("paste",this.inputPasteEvent.bind(this));else throw new Error("Input not found")}createAutosuggestContainer(){var e;this.dataLayer.renderingEngine===T.mustache&&(this.autosuggestContainer=document.createElement("div"),this.autosuggestContainer.classList.add("searchstax-autosuggest-container"),this.autosuggestContainer.addEventListener("mouseleave",()=>{this.resetAutosuggestSelection(),this.markActiveAutosuggestItem()}),(e=this.searchInput)==null||e.after(this.autosuggestContainer))}actionButtonInit(){this.actionButton=document.getElementById("searchstax-search-input-action-button"),this.actionButton&&this.actionButton.addEventListener("click",()=>{var e;this.buttonState==="search"?this.executeSearch(((e=this.searchInput)==null?void 0:e.value)??""):this.buttonState==="close"&&this.searchInput&&(this.searchInput.value="",this.executeSearch(""))})}attachSubscriptions(){this.dataLayer.$searchTermChange.subscribe(()=>{this.handleSearchTermChange()}),this.dataLayer.$loadingChange.subscribe(()=>{this.handleLoadingChange()}),this.dataLayer.$searchAutosuggest.subscribe(e=>{e&&this.appendSuggestions(e)}),this.dataLayer.$searchObject.subscribe(e=>{e.query!=="undefined"&&e.query!==void 0&&e.query!=="*"&&this.searchInput&&(this.searchInput.value=this.cleanSuggestionTerm(e.query??""))})}handleLoadingChange(){this.dataLayer.loading?this.updateActionButtonState("loading"):this.handleSearchTermChange()}handleSearchTermChange(){var e;this.dataLayer.searchTerm===((e=this.searchInput)==null?void 0:e.value)&&this.searchInput.value!==""?this.updateActionButtonState("close"):this.updateActionButtonState("search")}updateActionButtonState(e){if(this.buttonState=e,this.actionButton)switch(this.actionButton.classList.remove("searchstax-spinner-icon"),this.actionButton.classList.remove("searchstax-search-close"),this.actionButton.classList.remove("searchstax-search-icon"),e){case"loading":this.actionButton.classList.add("searchstax-spinner-icon");break;case"search":this.actionButton.classList.add("searchstax-search-icon");break;case"close":this.actionButton.classList.add("searchstax-search-close");break}}selectPreviousAutosuggestItem(){this.selectedAutosuggestItem>0?this.selectedAutosuggestItem--:this.selectedAutosuggestItem=this.autosuggestResults.suggestions.length-1,this.markActiveAutosuggestItem()}selectNextAutosuggestItem(){this.selectedAutosuggestItem<this.autosuggestResults.suggestions.length-1?this.selectedAutosuggestItem++:this.selectedAutosuggestItem=0,this.markActiveAutosuggestItem()}resetAutosuggestSelection(){this.selectedAutosuggestItem=-1,this.markActiveAutosuggestItem()}markActiveAutosuggestItem(){const e=document.getElementsByClassName("searchstax-autosuggest-item");for(let t=0;t<e.length;t++){const a=e[t];t===this.selectedAutosuggestItem?a.classList.add("active"):a.classList.remove("active")}}inputKeyupEvent(e){const t=e.key;this.currentInputValue=e.target.value,t==="Enter"?this.suggestionChosen():t==="Escape"?this.hideAutosuggest():t==="ArrowUp"?this.selectPreviousAutosuggestItem():t==="ArrowDown"?this.selectNextAutosuggestItem():this.autosuggestHandling(e),this.handleSearchTermChange()}autosuggestHandling(e){e.target&&e.target.value.length>=this.suggestAfterMinChars?this.executeSuggest(e.target.value):this.hideAutosuggest()}inputPasteEvent(e){setTimeout(()=>{this.autosuggestHandling(e),this.handleSearchTermChange()},0)}executeSuggest(e){this.suggestTrigger(e)}executeSearch(e){this.hideAutosuggest(),this.searchTrigger(e===""?"*":e)}suggestionChosen(){this.selectedAutosuggestItem>-1?this.autosuggestItemClicked(this.autosuggestResults.suggestions[this.selectedAutosuggestItem]):this.executeSearch(this.currentInputValue)}hideAutosuggest(){setTimeout(()=>{this.autosuggestContainer&&(this.autosuggestContainer.innerHTML="",this.autosuggestContainer.classList.add("hidden")),this.resetAutosuggestSelection()},100)}cleanSuggestionTerm(e){return w.removeXSSRiskyTags(e.replace(/(<([^>]+)>)/gi,"")).trim()}autosuggestItemClicked(e){this.searchInput.value=this.cleanSuggestionTerm(e.term??""),this.executeSearch(this.cleanSuggestionTerm(e.term))}createAutosuggestItem(e){var r,s,i;const t=document.createElement("div");t.classList.add("searchstax-autosuggest-item"),t.addEventListener("click",()=>{this.autosuggestItemClicked(e)}),t.addEventListener("mouseenter",()=>{this.onSuggestionEnter(e)});const a=((s=(r=this.config.templates)==null?void 0:r.autosuggestItemTemplate)==null?void 0:s.template)||((i=d.searchInput.autosuggestItemTemplate)==null?void 0:i.template);return t.innerHTML=m.render(a,e),t}onSuggestionEnter(e){var t;this.selectedAutosuggestItem=((t=this.autosuggestResults)==null?void 0:t.suggestions.indexOf(e))||0,this.markActiveAutosuggestItem()}appendSuggestions(e){if(this.autosuggestContainer){this.autosuggestContainer.innerHTML="",this.autosuggestContainer.classList.remove("hidden");for(const t in e.suggest)if(Object.prototype.hasOwnProperty.call(e.suggest,t)){const a=e.suggest[t];for(const r in a)if(Object.prototype.hasOwnProperty.call(a,r)){const s=a[r];this.autosuggestResults=s,s.numFound>0?s.suggestions.forEach(i=>{this.autosuggestContainer.appendChild(this.createAutosuggestItem(i))}):this.autosuggestContainer.classList.add("hidden")}}}}}class Ee{constructor(e){n(this,"dataLayer");n(this,"config");n(this,"linkClickCallback");n(this,"searchCallback");n(this,"containerId");n(this,"searchResultsMainContainer");n(this,"searchResultsContainer");n(this,"searchResultLinks",[]);this.linkClickCallback=e.linkClickCallback,this.searchCallback=e.searchTrigger,this.dataLayer=e.dataLayer,this.config=e.config,this.containerId=e.containerId;const t=document.getElementById(this.containerId);if(t)this.searchResultsMainContainer=t;else throw new Error(`Search Results Main Container with id ${this.containerId} not found`);this.initializeSubscriptions(),this.renderMainTemplate()}initializeSubscriptions(){this.dataLayer.$searchResults.subscribe(e=>{e&&this.searchResultsContainer&&this.renderResults(e)})}changeTemplate(){this.dataLayer.searchResults&&this.renderResults(this.dataLayer.searchResults)}renderNoResultsTemplate(){var a,r,s,i,c;const e=((s=(r=(a=this.config)==null?void 0:a.templates)==null?void 0:r.noSearchResultTemplate)==null?void 0:s.template)||((i=d.searchResults.noSearchResultTemplate)==null?void 0:i.template),t=((c=this.dataLayer.searchResultsMetadata)==null?void 0:c.spellingSuggestion)??"";if(this.dataLayer.renderingEngine===T.mustache&&this.searchResultsContainer&&(this.searchResultsContainer.innerHTML=m.render(e,{spellingSuggestion:t,searchTerm:this.dataLayer.searchTerm})),t&&this.searchResultsContainer){const l=this.searchResultsContainer.querySelector("a");l&&l.addEventListener("click",h=>{h.preventDefault(),h.stopPropagation(),this.searchCallback(t)})}}renderResults(e){var t,a,r,s;if(this.dataLayer.renderingEngine===T.mustache&&this.searchResultsContainer)if(this.removeLinkClickEvents(),e.length===0)this.renderNoResultsTemplate();else{const i=((r=(a=(t=this.config)==null?void 0:t.templates)==null?void 0:a.searchResultTemplate)==null?void 0:r.template)||((s=d.searchResults.searchResultTemplate)==null?void 0:s.template),c=e.map(l=>m.render(i,l));this.searchResultsContainer.innerHTML=c.join(""),this.searchResultLinks=Array.from(this.searchResultsContainer.querySelectorAll(`[${this.uniqueIdAttribute}]`)),this.attachLinkClickEvents()}}removeLinkClickEvents(){this.searchResultLinks.forEach(e=>{e.removeEventListener("click",()=>{})})}get uniqueIdAttribute(){var e,t,a,r;return((a=(t=(e=this.config)==null?void 0:e.templates)==null?void 0:t.searchResultTemplate)==null?void 0:a.searchResultUniqueIdAttribute)||((r=d.searchResults.searchResultTemplate)==null?void 0:r.searchResultUniqueIdAttribute)}attachLinkClickEvents(){this.searchResultLinks.forEach(e=>{e.addEventListener("click",t=>{t.preventDefault(),t.stopPropagation();const a=e.getAttribute(this.uniqueIdAttribute)??"";a&&this.linkClickCallback(a)})})}renderMainTemplate(){var t,a,r,s;const e=((r=(a=(t=this.config)==null?void 0:t.templates)==null?void 0:a.mainTemplate)==null?void 0:r.template)||((s=d.searchResults.mainTemplate)==null?void 0:s.template);this.dataLayer.renderingEngine===T.mustache&&(this.searchResultsMainContainer.innerHTML=m.render(e,{})),setTimeout(()=>{var l,h,u,g,p,y,b;const i=(u=(h=(l=this.config)==null?void 0:l.templates)==null?void 0:h.mainTemplate)!=null&&u.searchResultsContainerId?(y=(p=(g=this.config)==null?void 0:g.templates)==null?void 0:p.mainTemplate)==null?void 0:y.searchResultsContainerId:(b=d.searchResults.mainTemplate)==null?void 0:b.searchResultsContainerId,c=document.getElementById(i);if(c)this.searchResultsContainer=c;else throw new Error(`Search Results Container with id ${i} not found`)},0)}}class we{constructor(e){n(this,"dataLayer");n(this,"config");n(this,"containerId");n(this,"selectId");n(this,"searchSortingMainContainer",null);var t,a;this.dataLayer=e.dataLayer,this.config=e.config,this.containerId=e.containerId,this.selectId=((a=(t=this.config.templates)==null?void 0:t.main)==null?void 0:a.selectId)||d.sorting.main.selectId,this.searchSortingMainContainer=document.getElementById(this.containerId),this.initializeSubscriptions(),this.renderMainTemplate(this.generateTemplateData())}initializeSubscriptions(){this.dataLayer.$searchResults.subscribe(e=>{e&&this.renderMainTemplate(this.generateTemplateData())})}generateTemplateData(){return{...this.dataLayer.parsedData.data}}setOrderQuery(e){const t=this.dataLayer.searchObject;t&&(t.order=e,this.dataLayer.setSearchObject(t))}markOptionSelected(){const e=document.getElementById(this.selectId);if(e){const t=e.querySelector(`option[value="${decodeURIComponent(this.dataLayer.searchObject.order)}"]`);t&&(t.selected=!0)}}renderMainTemplate(e){var a,r,s;const t=((s=(r=(a=this.config)==null?void 0:a.templates)==null?void 0:r.main)==null?void 0:s.template)||d.sorting.main.template;if(this.dataLayer.renderingEngine===T.mustache){this.searchSortingMainContainer.innerHTML=m.render(t,e),this.markOptionSelected();const i=document.getElementById(this.selectId);i&&i.addEventListener("change",c=>{this.setOrderQuery(c.target.value)})}}}class Fe{constructor(e=T.mustache){n(this,"routerEnabled",!1);n(this,"cachedQuery","");n(this,"routerHelper");n(this,"searchHelper");n(this,"searchResultsConfig");n(this,"searchPaginationConfig");n(this,"searchFeedbackConfig");n(this,"searchSortingConfig");n(this,"searchFacetsConfig");n(this,"relatedSearchesConfig");n(this,"externalPromotionsConfig");n(this,"searchInputWidget");n(this,"searchResultsWidget");n(this,"searchFacetsWidget");n(this,"searchPaginationWidget");n(this,"searchFeedbackWidget");n(this,"searchSortingWidget");n(this,"relatedSearchesWidget");n(this,"externalPromotionsWidget");n(this,"dataLayer",new X(Z.getOrSetCookie("searchstax_session_id")));n(this,"firstRequest",!0);e&&this.dataLayer.setRenderingEngine(e),this.handleHooks()}setRenderingEngine(e=T.mustache){this.dataLayer.setRenderingEngine(e)}handleHooks(){var e,t;(t=(e=this.dataLayer.searchstaxConfig)==null?void 0:e.hooks)!=null&&t.afterSearch&&this.dataLayer.$searchResults.subscribe(a=>{this.dataLayer.searchstaxConfig.hooks.afterSearch(a)}),this.dataLayer.$searchObject.subscribe(a=>{a.query!==""&&this.search(a)}),this.dataLayer.$searchResults.subscribe(a=>{a&&this.dataLayer.searchResultsMetadata&&j.trackSearch({...this.dataLayer.parsedData.trackingData,impressions:this.dataLayer.searchResultsMetadata.impressions})})}initialize(e){var t,a;e.autoCorrect===!1&&(this.dataLayer.autoCorrect=!1),this.dataLayer.searchstaxConfig||(this.dataLayer.setSearchstaxConfig(e),this.searchHelper=new Y({...e,sessionId:this.dataLayer.sessionId},this.dataLayer)),((t=e.router)==null?void 0:t.enabled)===void 0||((a=e.router)==null?void 0:a.enabled)===!0?(this.routerEnabled=!0,this.routerHelper=new W(e.router?e.router:{enabled:!0}),this.dataLayer.setSearchObject(this.routerHelper.urlToSearchObject(window.location.href)),addEventListener("popstate",()=>{this.routerHelper&&this.dataLayer.setSearchObject(this.routerHelper.urlToSearchObject(window.location.href))})):this.routerHelper=new W({})}search(e){if(this.searchHelper&&e.query!==""&&e.query!==void 0&&e.query!=="undefined"){const t=this.dataLayer.forceNotCorrect;this.searchHelper.search(e,this.parseSearchResultsResponse.bind(this),this.firstRequest,t),this.firstRequest=!1,this.getRelatedSearches()}}getRelatedSearches(){this.searchHelper&&this.relatedSearchesConfig&&this.searchHelper.getRelatedSearches(this.dataLayer.searchObject,this.relatedSearchesConfig.relatedSearchesURL,this.relatedSearchesConfig.relatedSearchesAPIKey,this.parseRelatedSearchesResponse.bind(this))}parseRelatedSearchesResponse(e){var s;const a=(((s=e.response)==null?void 0:s.docs)??[]).map((i,c)=>({...i,position:c+1})),r=[];for(const i of a)r.push({relatedSearch:i.related_search,position:i.position});this.dataLayer.searchResultsMetadata&&j.trackRelatedSearches({...this.dataLayer.parsedData.trackingData,impressions:r}),this.dataLayer.setSearchRelatedSearches(a)}handleRouter(){this.routerEnabled&&this.routerHelper.updateUrl(this.dataLayer.searchObject)}parseSearchResultsResponse(e){var s,i;this.handleRouter();let t=D.combineResultsWithMetadata(e),a=D.extractFacets(e);this.dataLayer.setSearchFacets(a),(i=(s=this.dataLayer.searchstaxConfig)==null?void 0:s.hooks)!=null&&i.afterSearch&&(t=this.dataLayer.searchstaxConfig.hooks.afterSearch(t)),this.dataLayer.setSearchExternalPromotions(e.externalLinks??[]);const r=D.extractSearchResultsMetadata(e);this.dataLayer.setSearchResultsMetadata(r),this.dataLayer.setSearchResults(t)}cacheFacets(){var e;(e=this.searchHelper)==null||e.cacheFacets()}parseSuggestSuggestResponse(e){var a,r;let t=e;(r=(a=this.dataLayer.searchInputConfig)==null?void 0:a.hooks)!=null&&r.afterAutosuggest&&(t=this.dataLayer.searchInputConfig.hooks.afterAutosuggest(e)),this.dataLayer.setSearchAutosuggest(t)}suggest(e,t){this.searchHelper&&this.searchHelper.suggest(e,this.parseSuggestSuggestResponse.bind(this),t)}changeLanguage(e){this.searchHelper&&this.dataLayer.setLanguage(e)}addSearchInputWidget(e,t){this.dataLayer.searchInputConfig||(this.dataLayer.setSearchInputConfig(t),this.searchInputWidget=new Me({containerId:e,config:t,searchTrigger:this.executeSearch.bind(this),suggestTrigger:this.executeSuggest.bind(this),dataLayer:this.dataLayer}))}addSearchResultsWidget(e,t){this.searchResultsConfig||(this.searchResultsConfig=t,this.searchResultsWidget=new Ee({containerId:e,linkClickCallback:this.executeLinkClick.bind(this),searchTrigger:this.executeSearch.bind(this),config:t,dataLayer:this.dataLayer}))}addPaginationWidget(e,t){this.searchPaginationConfig=t,this.searchPaginationWidget=new Re({containerId:e,config:t,dataLayer:this.dataLayer,routerHelper:this.routerHelper})}addSearchFeedbackWidget(e,t){this.searchFeedbackConfig||(this.searchFeedbackConfig=t,this.searchFeedbackWidget=new Pe({containerId:e,config:t,dataLayer:this.dataLayer,searchTrigger:this.executeSearch.bind(this)}))}addSearchSortingWidget(e,t){this.searchSortingConfig||(this.searchSortingConfig=t,this.searchSortingWidget=new we({containerId:e,config:t,dataLayer:this.dataLayer}))}addRelatedSearchesWidget(e,t){this.relatedSearchesConfig||(this.relatedSearchesConfig=t,this.relatedSearchesWidget=new Ie({containerId:e,config:t,dataLayer:this.dataLayer,trackRelatedSearchClick:this.trackRelatedSearchClick.bind(this)}),setTimeout(()=>{this.getRelatedSearches()},0))}addExternalPromotionsWidget(e,t){this.externalPromotionsConfig||(this.externalPromotionsConfig=t,this.externalPromotionsWidget=new xe({containerId:e,config:t,dataLayer:this.dataLayer}))}addFacetsWidget(e,t){this.searchFacetsConfig=t,this.searchFacetsWidget=new ke({containerId:e,config:t,dataLayer:this.dataLayer,routerHelper:this.routerHelper},this.cacheFacets.bind(this))}executeSearch(e,t){var s,i;const a={...this.dataLayer.searchObject};a.query=w.removeXSSRiskyTags(e),a.page=1,a.facets=[],this.dataLayer.forceNotCorrect=!!t;let r=(s=this.routerHelper)==null?void 0:s.searchObjectToParams(a);r&&(r=(i=this.routerHelper)==null?void 0:i.extractParamsThatDoNotStartWithRouteName(r)),r&&(a.additionalProps=Object.keys(r).map(c=>r?{key:c,value:r[c]}:{key:"",value:""})),this.dataLayer.setSearchObject(a)}executeSuggest(e){var a,r;let t={term:e,queryParams:[]};(r=(a=this.dataLayer.searchInputConfig)==null?void 0:a.hooks)!=null&&r.beforeAutosuggest&&(t=this.dataLayer.searchInputConfig.hooks.beforeAutosuggest(t)),t&&t.term!==void 0&&t.queryParams!==void 0&&this.suggest(t.term,t.queryParams)}trackRelatedSearchClick(e){this.dataLayer.searchResultsMetadata&&this.dataLayer.searchRelatedSearches&&j.trackRelatedSearchClick({...this.dataLayer.parsedData.trackingData,relatedSearch:e})}executeLinkClick(e){var a,r;let t=D.findResultByUniqueId(e,this.dataLayer.searchResults??[]);t&&((r=(a=this.searchResultsConfig)==null?void 0:a.hooks)!=null&&r.afterLinkClick&&(t=this.searchResultsConfig.hooks.afterLinkClick(t)),t&&this.dataLayer.searchResultsMetadata&&(j.trackClick({result:t,...this.dataLayer.parsedData.trackingData}),setTimeout(()=>{window.location.href=(t==null?void 0:t.url)??""},0)))}setPage(e){var t;(t=this.searchPaginationWidget)==null||t.goToPage(e)}changeResultTemplate(e){var t,a,r;this.searchResultsConfig&&(this.searchResultsConfig.templates=(t=this.searchResultsConfig)!=null&&t.templates?{...(a=this.searchResultsConfig)==null?void 0:a.templates,...e}:e,(r=this.searchResultsWidget)==null||r.changeTemplate())}}exports.Searchstax=Fe;
|
|
@@ -408,6 +408,76 @@ export interface ISearchstaxSearchSortingTemplateData {
|
|
|
408
408
|
template: string;
|
|
409
409
|
selectId: string;
|
|
410
410
|
}
|
|
411
|
+
declare class SearchInputWidget {
|
|
412
|
+
private dataLayer;
|
|
413
|
+
private config;
|
|
414
|
+
private suggestAfterMinChars;
|
|
415
|
+
private containerId;
|
|
416
|
+
private currentInputValue;
|
|
417
|
+
autosuggestResults?: ISearchstaxSEARCHTERM;
|
|
418
|
+
private searchInput?;
|
|
419
|
+
private actionButton?;
|
|
420
|
+
private autosuggestContainer?;
|
|
421
|
+
private buttonState;
|
|
422
|
+
private selectedAutosuggestItem;
|
|
423
|
+
private suggestTrigger;
|
|
424
|
+
private searchTrigger;
|
|
425
|
+
constructor(params: {
|
|
426
|
+
containerId: string;
|
|
427
|
+
config: ISearchstaxSearchInputConfig;
|
|
428
|
+
searchTrigger: (term: string) => void;
|
|
429
|
+
suggestTrigger: (term: string) => void;
|
|
430
|
+
dataLayer: DataLAyer;
|
|
431
|
+
});
|
|
432
|
+
private renderMainTemplate;
|
|
433
|
+
private createAutosuggestContainer;
|
|
434
|
+
private actionButtonInit;
|
|
435
|
+
private attachSubscriptions;
|
|
436
|
+
private handleLoadingChange;
|
|
437
|
+
private handleSearchTermChange;
|
|
438
|
+
private updateActionButtonState;
|
|
439
|
+
selectPreviousAutosuggestItem(): void;
|
|
440
|
+
selectNextAutosuggestItem(): void;
|
|
441
|
+
resetAutosuggestSelection(): void;
|
|
442
|
+
private markActiveAutosuggestItem;
|
|
443
|
+
private inputKeyupEvent;
|
|
444
|
+
private autosuggestHandling;
|
|
445
|
+
private inputPasteEvent;
|
|
446
|
+
private executeSuggest;
|
|
447
|
+
private executeSearch;
|
|
448
|
+
private suggestionChosen;
|
|
449
|
+
private hideAutosuggest;
|
|
450
|
+
private cleanSuggestionTerm;
|
|
451
|
+
private autosuggestItemClicked;
|
|
452
|
+
private createAutosuggestItem;
|
|
453
|
+
onSuggestionEnter(suggestion: ISearchstaxSuggestion): void;
|
|
454
|
+
appendSuggestions(suggestions: ISearchstaxSuggestResponse): void;
|
|
455
|
+
}
|
|
456
|
+
declare class SearchResultsWidget {
|
|
457
|
+
dataLayer: DataLAyer;
|
|
458
|
+
config: ISearchstaxSearchResultsConfig;
|
|
459
|
+
linkClickCallback: (uniqueId: string) => void;
|
|
460
|
+
searchCallback: (term: string) => void;
|
|
461
|
+
containerId: string;
|
|
462
|
+
searchResultsMainContainer: HTMLElement;
|
|
463
|
+
searchResultsContainer?: HTMLElement;
|
|
464
|
+
searchResultLinks: HTMLElement[];
|
|
465
|
+
constructor(params: {
|
|
466
|
+
containerId: string;
|
|
467
|
+
linkClickCallback: (uniqueId: string) => void;
|
|
468
|
+
config: ISearchstaxSearchResultsConfig;
|
|
469
|
+
dataLayer: DataLAyer;
|
|
470
|
+
searchTrigger: (term: string) => void;
|
|
471
|
+
});
|
|
472
|
+
private initializeSubscriptions;
|
|
473
|
+
changeTemplate(): void;
|
|
474
|
+
private renderNoResultsTemplate;
|
|
475
|
+
private renderResults;
|
|
476
|
+
private removeLinkClickEvents;
|
|
477
|
+
private get uniqueIdAttribute();
|
|
478
|
+
private attachLinkClickEvents;
|
|
479
|
+
private renderMainTemplate;
|
|
480
|
+
}
|
|
411
481
|
export declare class Searchstax {
|
|
412
482
|
private routerEnabled;
|
|
413
483
|
private cachedQuery;
|
|
@@ -420,8 +490,8 @@ export declare class Searchstax {
|
|
|
420
490
|
private searchFacetsConfig?;
|
|
421
491
|
private relatedSearchesConfig?;
|
|
422
492
|
private externalPromotionsConfig?;
|
|
423
|
-
|
|
424
|
-
|
|
493
|
+
searchInputWidget?: SearchInputWidget;
|
|
494
|
+
searchResultsWidget?: SearchResultsWidget;
|
|
425
495
|
private searchFacetsWidget?;
|
|
426
496
|
private searchPaginationWidget?;
|
|
427
497
|
private searchFeedbackWidget?;
|
|
@@ -408,6 +408,76 @@ export interface ISearchstaxSearchSortingTemplateData {
|
|
|
408
408
|
template: string;
|
|
409
409
|
selectId: string;
|
|
410
410
|
}
|
|
411
|
+
declare class SearchInputWidget {
|
|
412
|
+
private dataLayer;
|
|
413
|
+
private config;
|
|
414
|
+
private suggestAfterMinChars;
|
|
415
|
+
private containerId;
|
|
416
|
+
private currentInputValue;
|
|
417
|
+
autosuggestResults?: ISearchstaxSEARCHTERM;
|
|
418
|
+
private searchInput?;
|
|
419
|
+
private actionButton?;
|
|
420
|
+
private autosuggestContainer?;
|
|
421
|
+
private buttonState;
|
|
422
|
+
private selectedAutosuggestItem;
|
|
423
|
+
private suggestTrigger;
|
|
424
|
+
private searchTrigger;
|
|
425
|
+
constructor(params: {
|
|
426
|
+
containerId: string;
|
|
427
|
+
config: ISearchstaxSearchInputConfig;
|
|
428
|
+
searchTrigger: (term: string) => void;
|
|
429
|
+
suggestTrigger: (term: string) => void;
|
|
430
|
+
dataLayer: DataLAyer;
|
|
431
|
+
});
|
|
432
|
+
private renderMainTemplate;
|
|
433
|
+
private createAutosuggestContainer;
|
|
434
|
+
private actionButtonInit;
|
|
435
|
+
private attachSubscriptions;
|
|
436
|
+
private handleLoadingChange;
|
|
437
|
+
private handleSearchTermChange;
|
|
438
|
+
private updateActionButtonState;
|
|
439
|
+
selectPreviousAutosuggestItem(): void;
|
|
440
|
+
selectNextAutosuggestItem(): void;
|
|
441
|
+
resetAutosuggestSelection(): void;
|
|
442
|
+
private markActiveAutosuggestItem;
|
|
443
|
+
private inputKeyupEvent;
|
|
444
|
+
private autosuggestHandling;
|
|
445
|
+
private inputPasteEvent;
|
|
446
|
+
private executeSuggest;
|
|
447
|
+
private executeSearch;
|
|
448
|
+
private suggestionChosen;
|
|
449
|
+
private hideAutosuggest;
|
|
450
|
+
private cleanSuggestionTerm;
|
|
451
|
+
private autosuggestItemClicked;
|
|
452
|
+
private createAutosuggestItem;
|
|
453
|
+
onSuggestionEnter(suggestion: ISearchstaxSuggestion): void;
|
|
454
|
+
appendSuggestions(suggestions: ISearchstaxSuggestResponse): void;
|
|
455
|
+
}
|
|
456
|
+
declare class SearchResultsWidget {
|
|
457
|
+
dataLayer: DataLAyer;
|
|
458
|
+
config: ISearchstaxSearchResultsConfig;
|
|
459
|
+
linkClickCallback: (uniqueId: string) => void;
|
|
460
|
+
searchCallback: (term: string) => void;
|
|
461
|
+
containerId: string;
|
|
462
|
+
searchResultsMainContainer: HTMLElement;
|
|
463
|
+
searchResultsContainer?: HTMLElement;
|
|
464
|
+
searchResultLinks: HTMLElement[];
|
|
465
|
+
constructor(params: {
|
|
466
|
+
containerId: string;
|
|
467
|
+
linkClickCallback: (uniqueId: string) => void;
|
|
468
|
+
config: ISearchstaxSearchResultsConfig;
|
|
469
|
+
dataLayer: DataLAyer;
|
|
470
|
+
searchTrigger: (term: string) => void;
|
|
471
|
+
});
|
|
472
|
+
private initializeSubscriptions;
|
|
473
|
+
changeTemplate(): void;
|
|
474
|
+
private renderNoResultsTemplate;
|
|
475
|
+
private renderResults;
|
|
476
|
+
private removeLinkClickEvents;
|
|
477
|
+
private get uniqueIdAttribute();
|
|
478
|
+
private attachLinkClickEvents;
|
|
479
|
+
private renderMainTemplate;
|
|
480
|
+
}
|
|
411
481
|
export declare class Searchstax {
|
|
412
482
|
private routerEnabled;
|
|
413
483
|
private cachedQuery;
|
|
@@ -420,8 +490,8 @@ export declare class Searchstax {
|
|
|
420
490
|
private searchFacetsConfig?;
|
|
421
491
|
private relatedSearchesConfig?;
|
|
422
492
|
private externalPromotionsConfig?;
|
|
423
|
-
|
|
424
|
-
|
|
493
|
+
searchInputWidget?: SearchInputWidget;
|
|
494
|
+
searchResultsWidget?: SearchResultsWidget;
|
|
425
495
|
private searchFacetsWidget?;
|
|
426
496
|
private searchPaginationWidget?;
|
|
427
497
|
private searchFeedbackWidget?;
|
|
@@ -220,4 +220,4 @@ var Fe=Object.defineProperty;var qe=(F,C,q)=>C in F?Fe(F,C,{enumerable:!0,config
|
|
|
220
220
|
</div>
|
|
221
221
|
{{/hasResultsOrExternalPromotions}}
|
|
222
222
|
{{/searchExecuted}}
|
|
223
|
-
`,selectId:"searchstax-search-order-select"}};class d{}n(d,"externalPromotions",fe),n(d,"facets",me),n(d,"pagination",ye),n(d,"relatedSearches",Ce),n(d,"searchFeedback",ve),n(d,"searchInput",Se),n(d,"searchResults",be),n(d,"sorting",Le);class xe{constructor(e){n(this,"dataLayer");n(this,"config");n(this,"containerId");n(this,"externalPromotionsContainerId");n(this,"searchExternalPromotionsMainContainer",null);var t,a;this.dataLayer=e.dataLayer,this.config=e.config,this.containerId=e.containerId,this.externalPromotionsContainerId=((a=(t=this.config.templates)==null?void 0:t.mainTemplate)==null?void 0:a.externalPromotionsContainerId)||d.externalPromotions.mainTemplate.externalPromotionsContainerId,this.searchExternalPromotionsMainContainer=document.getElementById(this.containerId),this.initializeSubscriptions(),this.renderMainTemplate(this.generateTemplateData())}initializeSubscriptions(){this.dataLayer.$searchExternalPromotions.subscribe(e=>{e&&this.renderMainTemplate(this.generateTemplateData())})}generateTemplateData(){return{...this.dataLayer.parsedData.data,externalPromotions:this.dataLayer.parsedData.externalPromotions}}addExternalSearch(e){var a,r,s,i;const t=document.getElementById(this.externalPromotionsContainerId);if(t){const c=((s=(r=(a=this.config)==null?void 0:a.templates)==null?void 0:r.externalPromotion)==null?void 0:s.template)||((i=d.externalPromotions.externalPromotion)==null?void 0:i.template),l=document.createElement("div");l.classList.add("searchstax-external-promotion"),l.addEventListener("click",h=>{this.trackClick(e,h)}),l.innerHTML=f.render(c,e),t.appendChild(l)}}trackClick(e,t){t.stopPropagation(),t.preventDefault(),window.open(e.url,"_blank")}renderMainTemplate(e){var a,r,s,i;const t=((s=(r=(a=this.config)==null?void 0:a.templates)==null?void 0:r.mainTemplate)==null?void 0:s.template)||((i=d.externalPromotions.mainTemplate)==null?void 0:i.template);if(this.dataLayer.renderingEngine===C.mustache){this.searchExternalPromotionsMainContainer.innerHTML=f.render(t,e);const c=document.getElementById(this.externalPromotionsContainerId);c&&(c.innerHTML="");for(const l of e.externalPromotions)this.addExternalSearch(l)}}}class Te{constructor(e,t){n(this,"dataLayer");n(this,"config");n(this,"containerId");n(this,"routerHelper");n(this,"cachedPhrase","");n(this,"isCached",!1);n(this,"overlayOpened",!1);n(this,"facetPaginationStep");n(this,"facetPaginationStepMobile");n(this,"searchFacetsMainContainer",null);n(this,"searchFacetsMobileContainer",null);n(this,"searchFacetsDesktopContainer",null);n(this,"facetLimits",{});n(this,"facetLimitsMobile",{});n(this,"deactivatedFacets",{});n(this,"cachedData",null);n(this,"cacheFacets");n(this,"onFacetSelect",(e,t,a,r)=>{if(e.stopPropagation(),!t.disabled){const s=a.querySelector("input");s.checked=r?s.checked:!s.checked;const i=this.dataLayer.searchObject;let c=[...i.facets];const l=this.extractFacetValue(t);s.checked?c.find(u=>M.deepEqual(u,l)?u:!1)||(this.config.facetingType==="tabs"&&(c=c.filter(u=>u.name!==l.name)),c.push(l)):c=c.filter(h=>!M.deepEqual(h,l)),setTimeout(()=>{this.dataLayer.setSearchObject({...i,facets:c,page:1}),this.config.facetingType==="tabs"&&this.renderMainTemplate(this.generateTemplateData(),!0)},0)}});this.dataLayer=e.dataLayer,this.config=e.config,this.containerId=e.containerId,this.routerHelper=e.routerHelper,this.cacheFacets=t,this.facetPaginationStep=this.config.itemsPerPageDesktop,this.facetPaginationStepMobile=this.config.itemsPerPageMobile,this.searchFacetsMainContainer=document.getElementById(this.containerId),this.needCache&&t(),this.initializeSubscriptions()}get needCache(){return this.config.facetingType==="showUnavailable"||this.config.facetingType==="or"||this.config.facetingType==="tabs"}get needDisabling(){return this.config.facetingType==="showUnavailable"}initializeSubscriptions(){this.needCache&&this.dataLayer.$searchFacetsCached.subscribe(e=>{e&&this.dataLayer.searchFacets&&this.renderMainTemplate(this.generateTemplateData())}),this.dataLayer.$searchResults.subscribe(e=>{e&&(this.needCache&&!this.isCached&&(this.dataLayer.searchFacets&&!this.dataLayer.searchFacetsCached&&this.dataLayer.setSearchFacetsCached(this.dataLayer.searchFacets),this.cacheFacets()),this.renderMainTemplate(this.generateTemplateData()))}),this.dataLayer.$searchObject.subscribe(e=>{this.cachedPhrase!==e.query?(this.cachedPhrase=e.query,this.isCached=!1):this.isCached=!0})}extractFacetValue(e){return{type:this.config.facetingType,name:e.parentName,value:e.value}}applyFacetLimits(e,t){const a=t?this.facetPaginationStepMobile:this.facetPaginationStep,r=t?this.facetLimits:this.facetLimitsMobile;return e.forEach(s=>{r[s.name]||(r[s.name]=a)}),e.map(s=>({...s,values:s.values.slice(0,r[s.name]),showingAllFacets:s.values.length<=r[s.name],hasMoreFacets:s.values.length>a}))}generateTemplateData(e){if(this.dataLayer.searchFacets){let t=this.dataLayer.searchFacets;return this.needCache&&this.dataLayer.searchFacetsCached&&(t=this.dataLayer.searchFacetsCached,this.needDisabling&&(t=t.map(a=>{var s;const r=(s=this.dataLayer.searchFacets)==null?void 0:s.find(i=>i.name===a.name);return r?{...a,values:a.values.map(i=>{const c=r.values.find(l=>i.type==="range"?!1:i.type==="checkbox"?l.value===i.value:!1);return{...i,disabled:!c}})}:{...a,values:a.values.map(i=>({...i,disabled:!0}))}}))),this.config.specificFacets&&(t=t.filter(a=>{var r;return(r=this.config.specificFacets)==null?void 0:r.includes(a.name)})),{facets:this.applyFacetLimits(t,e),...this.dataLayer.parsedData.data}}else return{facets:[],...this.dataLayer.parsedData.data}}createFacetItem(e,t,a){var l,h,u,g,p,y,L,m,v,S,b,R;const r=document.createElement("div");r.classList.add("searchstax-facet-container"),this.deactivatedFacets[e.name]||r.classList.add("active");const s=((u=(h=(l=this.config)==null?void 0:l.templates)==null?void 0:h.facetItemContainerTemplate)==null?void 0:u.template)||((g=d.facets.facetItemContainerTemplate)==null?void 0:g.template);r.innerHTML=f.render(s,e),t.appendChild(r);const i=r.querySelector("."+(((L=(y=(p=this.config)==null?void 0:p.templates)==null?void 0:y.facetItemContainerTemplate)==null?void 0:L.facetListTitleContainerClass)||((m=d.facets.facetItemContainerTemplate)==null?void 0:m.facetListTitleContainerClass)));i==null||i.addEventListener("click",()=>{r.classList.toggle("active")});const c=r.querySelector("."+(((b=(S=(v=this.config)==null?void 0:v.templates)==null?void 0:S.facetItemContainerTemplate)==null?void 0:b.facetListContainerClass)||((R=d.facets.facetItemContainerTemplate)==null?void 0:R.facetListContainerClass)));c&&(e.values.forEach(P=>{this.createFacetListItem(P,c)}),e.hasMoreFacets&&this.createHasMoreComponent(e,c,a))}createFacetListItem(e,t){var l,h,u,g,p,y,L,m,v,S,b,R,P,x;const a=document.createElement("div");a.classList.add("searchstax-facet-value-container"),e.disabled&&a.classList.add("searchstax-facet-value-disabled");const s=!!((l=this.dataLayer.searchObject.facets)!=null&&l.find(E=>M.deepEqual(E,this.extractFacetValue(e)))),i=((g=(u=(h=this.config)==null?void 0:h.templates)==null?void 0:u.facetItemTemplate)==null?void 0:g.template)||((p=d.facets.facetItemTemplate)==null?void 0:p.template);a.innerHTML=f.render(i,{...e,isChecked:s});let c=(y=d.facets.facetItemTemplate)==null?void 0:y.checkTriggerClasses;c=((v=(m=(L=this.config)==null?void 0:L.templates)==null?void 0:m.facetItemTemplate)==null?void 0:v.checkTriggerClasses)||c,c.forEach(E=>{var A;(A=a.querySelector("."+E))==null||A.addEventListener("click",k=>{this.onFacetSelect(k,e,a)})}),(x=a.querySelector("."+(((R=(b=(S=this.config)==null?void 0:S.templates)==null?void 0:b.facetItemTemplate)==null?void 0:R.inputCheckboxClass)||((P=d.facets.facetItemTemplate)==null?void 0:P.inputCheckboxClass))))==null||x.addEventListener("click",E=>{this.onFacetSelect(E,e,a,!0)}),t.appendChild(a)}createHasMoreComponent(e,t,a){var c,l,h,u,g,p,y,L;const r=document.createElement("div");r.classList.add("searchstax-facet-show-more-container");const s=((h=(l=(c=this.config)==null?void 0:c.templates)==null?void 0:l.showMoreButtonContainerTemplate)==null?void 0:h.template)||((u=d.facets.showMoreButtonContainerTemplate)==null?void 0:u.template);r.innerHTML=f.render(s,e);const i=r.querySelector("."+(((y=(p=(g=this.config)==null?void 0:g.templates)==null?void 0:p.showMoreButtonContainerTemplate)==null?void 0:y.showMoreButtonClass)||((L=d.facets.showMoreButtonContainerTemplate)==null?void 0:L.showMoreButtonClass)));i&&(this.attachOnclickToShowMore(e,i,a),t&&t.appendChild(i))}attachOnclickToShowMore(e,t,a){t.addEventListener("click",r=>{this.onShowMoreLessClick(r,e,a)})}onShowMoreLessClick(e,t,a){e.preventDefault();const r=a?this.facetPaginationStepMobile:this.facetPaginationStep,s=a?this.facetLimits:this.facetLimitsMobile;s[t.name]===void 0?s[t.name]=r*2:s[t.name]<=t.values.length?s[t.name]=s[t.name]+r:s[t.name]=r,this.renderMainTemplate(this.generateTemplateData())}renderMainTemplate(e,t){var a,r,s,i,c,l,h,u,g,p,y;if(e&&(!M.deepEqual(this.cachedData??{},e)||t)){this.cachedData=e;const L=((s=(r=(a=this.config)==null?void 0:a.templates)==null?void 0:r.mainTemplateDesktop)==null?void 0:s.template)||((i=d.facets.mainTemplateDesktop)==null?void 0:i.template);if(this.dataLayer.renderingEngine===C.mustache&&this.searchFacetsMainContainer){this.searchFacetsMainContainer.innerHTML=f.render(L,{...e});const m=(u=this.searchFacetsMainContainer)==null?void 0:u.querySelector("."+(((h=(l=(c=this.config)==null?void 0:c.templates)==null?void 0:l.mainTemplateDesktop)==null?void 0:h.facetsContainerClass)||d.facets.mainTemplateDesktop.facetsContainerClass));if(m){m.innerHTML="";for(const v of e.facets)this.createFacetItem(v,m);if(this.searchFacetsMainContainer){const v=this.searchFacetsMainContainer.querySelector("."+(((y=(p=(g=this.config)==null?void 0:g.templates)==null?void 0:p.mainTemplateDesktop)==null?void 0:y.selectedFacetsContainerClass)||d.facets.mainTemplateDesktop.selectedFacetsContainerClass));v&&(this.createSelectedFacetsComponents(v),this.createClearFacetsComponents(v))}}this.renderMobileTemplate(this.generateTemplateData(!0))}}}createSelectedFacetsComponents(e){const t=this.dataLayer.searchObject.facets;for(const a of t){const r=decodeURIComponent(a.name),s=decodeURIComponent(a.value);if(this.dataLayer.searchFacets){const i=this.needCache?this.dataLayer.searchFacetsCached:this.dataLayer.searchFacets,c=i==null?void 0:i.find(l=>l.name===r);if(c){const l=c.values.find(h=>h.type==="range"?!1:h.type==="checkbox"?`"${h.value}"`===s:!1);l&&this.createSelectedFacetsComponent(e,l)}}}}createClearFacetsComponents(e){var i,c,l,h,u,g,p,y;const t=this.dataLayer.searchObject,a=((l=(c=(i=this.config)==null?void 0:i.templates)==null?void 0:c.clearFacetsTemplate)==null?void 0:l.template)||((h=d.facets.clearFacetsTemplate)==null?void 0:h.template),r=document.createElement("div");r.innerHTML=f.render(a,{shouldShow:t.facets.length>0});const s=r.querySelector("."+(((p=(g=(u=this.config)==null?void 0:u.templates)==null?void 0:g.clearFacetsTemplate)==null?void 0:p.containerClass)||((y=d.facets.clearFacetsTemplate)==null?void 0:y.containerClass)));s&&(s.addEventListener("click",()=>{this.removeSelectedFacets()}),e.appendChild(s))}createSelectedFacetsComponent(e,t){var i,c,l,h,u,g,p,y;const a=((l=(c=(i=this.config)==null?void 0:i.templates)==null?void 0:c.selectedFacetsTemplate)==null?void 0:l.template)||((h=d.facets.selectedFacetsTemplate)==null?void 0:h.template),r=document.createElement("div");r.innerHTML=f.render(a,t);const s=r.querySelector("."+(((p=(g=(u=this.config)==null?void 0:u.templates)==null?void 0:g.selectedFacetsTemplate)==null?void 0:p.containerClass)||((y=d.facets.selectedFacetsTemplate)==null?void 0:y.containerClass)));s&&(s.addEventListener("click",()=>{this.unselectFacet(t)}),e.appendChild(s))}unselectFacet(e){const t=this.dataLayer.searchObject;let a=[...t.facets];e.type==="checkbox"&&(a=a.filter(r=>r!==this.extractFacetValue(e))),setTimeout(()=>{this.dataLayer.setSearchObject({...t,facets:a})},0)}removeSelectedFacets(){const e=this.dataLayer.searchObject;this.dataLayer.setSearchObject({...e,facets:[]})}createFilterByComponent(e){var s,i,c,l,h,u,g,p;const t=((c=(i=(s=this.config)==null?void 0:s.templates)==null?void 0:i.filterByTemplate)==null?void 0:c.template)||((l=d.facets.filterByTemplate)==null?void 0:l.template),a=document.createElement("div");a.innerHTML=f.render(t,{});const r=a.querySelector("."+(((g=(u=(h=this.config)==null?void 0:h.templates)==null?void 0:u.filterByTemplate)==null?void 0:g.containerClass)||((p=d.facets.filterByTemplate)==null?void 0:p.containerClass)));r&&(e.prepend(r),r.addEventListener("click",this.openOverlay.bind(this)))}openOverlay(){var e;this.overlayOpened=!0,this.searchFacetsMainContainer&&(document.body.classList.toggle("searchstax-no-scroll"),(e=this.searchFacetsMainContainer.querySelector(".searchstax-facets-mobile-overlay"))==null||e.classList.add("searchstax-show"))}closeOverlay(){var e;this.overlayOpened=!1,this.searchFacetsMainContainer&&(document.body.classList.toggle("searchstax-no-scroll"),(e=this.searchFacetsMainContainer.querySelector(".searchstax-facets-mobile-overlay"))==null||e.classList.remove("searchstax-show"))}renderMobileTemplate(e){var t,a,r,s,i,c,l,h,u,g,p,y,L,m,v,S,b,R,P;if(e){const x=document.createElement("div");x.classList.add("searchstax-facets-container-mobile");const E=((r=(a=(t=this.config)==null?void 0:t.templates)==null?void 0:a.mainTemplateMobile)==null?void 0:r.template)||((s=d.facets.mainTemplateMobile)==null?void 0:s.template);if(this.dataLayer.renderingEngine===C.mustache){if(x.innerHTML=f.render(E,{...e,overlayOpened:this.overlayOpened}),(i=this.searchFacetsMainContainer)==null||i.appendChild(x),(l=(c=this.config)==null?void 0:c.templates)!=null&&l.mainTemplateMobile)for(const $ of((g=(u=(h=this.config)==null?void 0:h.templates)==null?void 0:u.mainTemplateMobile)==null?void 0:g.closeOverlayTriggerClasses)||[]){const N=x.querySelector("."+$);N&&N.addEventListener("click",this.closeOverlay.bind(this))}else for(const $ of d.facets.mainTemplateMobile.closeOverlayTriggerClasses){const N=x.querySelector("."+$);N&&N.addEventListener("click",this.closeOverlay.bind(this))}const A=x.querySelector("."+(((L=(y=(p=this.config)==null?void 0:p.templates)==null?void 0:y.mainTemplateMobile)==null?void 0:L.filterByContainerClass)||d.facets.mainTemplateMobile.filterByContainerClass));A&&this.createFilterByComponent(A);const k=x.querySelector("."+(((S=(v=(m=this.config)==null?void 0:m.templates)==null?void 0:v.mainTemplateMobile)==null?void 0:S.selectedFacetsContainerClass)||d.facets.mainTemplateMobile.selectedFacetsContainerClass));k&&(this.createSelectedFacetsComponents(k),this.createClearFacetsComponents(k));const Q=x.querySelector("."+(((P=(R=(b=this.config)==null?void 0:b.templates)==null?void 0:R.mainTemplateMobile)==null?void 0:P.facetsContainerClass)||d.facets.mainTemplateMobile.facetsContainerClass));if(Q){Q.innerHTML="";for(const $ of e.facets)this.createFacetItem($,Q,!0)}}}}}class ke{constructor(e){n(this,"dataLayer");n(this,"config");n(this,"containerId");n(this,"previousButtonClass");n(this,"nextButtonClass");n(this,"routerHelper");n(this,"searchPaginationMainContainer",null);var t,a,r,s,i,c;this.dataLayer=e.dataLayer,this.config=e.config,this.containerId=e.containerId,this.routerHelper=e.routerHelper,this.previousButtonClass=((r=(a=(t=this.config)==null?void 0:t.templates)==null?void 0:a.mainTemplate)==null?void 0:r.previousButtonClass)??d.pagination.mainTemplate.previousButtonClass,this.nextButtonClass=((c=(i=(s=this.config)==null?void 0:s.templates)==null?void 0:i.mainTemplate)==null?void 0:c.nextButtonClass)??d.pagination.mainTemplate.nextButtonClass,this.searchPaginationMainContainer=document.getElementById(this.containerId),this.initializeSubscriptions(),this.renderMainTemplate(this.generateTemplateData())}get isFirstPage(){var e;return((e=this.dataLayer.searchObject)==null?void 0:e.page)===1}get isLastPage(){var e,t;return((e=this.dataLayer.searchObject)==null?void 0:e.page)===Math.ceil((((t=this.dataLayer.searchResultsMetadata)==null?void 0:t.totalResultsValue)??0)/10)}initializeSubscriptions(){this.dataLayer.$searchResults.subscribe(e=>{e&&this.renderMainTemplate(this.generateTemplateData())})}generateTemplateData(){var e,t;return{...this.dataLayer.parsedData.data,previousPageLink:this.routerHelper.searchObjectToUrl({...this.dataLayer.searchObject,page:((e=this.dataLayer.searchObject)==null?void 0:e.page)-1}),nextPageLink:this.routerHelper.searchObjectToUrl({...this.dataLayer.searchObject,page:((t=this.dataLayer.searchObject)==null?void 0:t.page)+1})}}goToPage(e){const t=this.dataLayer.searchObject;t&&(t.page=e,this.dataLayer.setSearchObject(t)),window.scrollTo(0,0)}nextPage(e){var t;e.preventDefault(),e.stopPropagation(),this.isLastPage||this.goToPage(((t=this.dataLayer.searchObject)==null?void 0:t.page)+1)}previousPage(e){var t;e.preventDefault(),e.stopPropagation(),this.isFirstPage||this.goToPage(((t=this.dataLayer.searchObject)==null?void 0:t.page)-1)}overridePaginationEvents(){if(this.searchPaginationMainContainer){const e=this.searchPaginationMainContainer.querySelector("."+this.previousButtonClass),t=this.searchPaginationMainContainer.querySelector("."+this.nextButtonClass);e&&e.addEventListener("click",this.previousPage.bind(this)),t&&t.addEventListener("click",this.nextPage.bind(this))}}renderMainTemplate(e){var a,r,s,i,c,l;this.searchPaginationMainContainer&&((a=this.searchPaginationMainContainer.querySelector("."+this.previousButtonClass))==null||a.removeEventListener("click",this.previousPage),(r=this.searchPaginationMainContainer.querySelector("."+this.nextButtonClass))==null||r.removeEventListener("click",this.nextPage));const t=((c=(i=(s=this.config)==null?void 0:s.templates)==null?void 0:i.mainTemplate)==null?void 0:c.template)||((l=d.pagination.mainTemplate)==null?void 0:l.template);this.dataLayer.renderingEngine===C.mustache&&(this.searchPaginationMainContainer.innerHTML=f.render(t,e),setTimeout(()=>{this.overridePaginationEvents()},0))}}class Re{constructor(e){n(this,"dataLayer");n(this,"config");n(this,"containerId");n(this,"relatedSearchesContainerClass");n(this,"searchRelatedSearchesMainContainer",null);n(this,"track");var t,a;this.dataLayer=e.dataLayer,this.config=e.config,this.containerId=e.containerId,this.relatedSearchesContainerClass=((a=(t=this.config.templates)==null?void 0:t.main)==null?void 0:a.relatedSearchesContainerClass)||d.relatedSearches.main.relatedSearchesContainerClass,this.searchRelatedSearchesMainContainer=document.getElementById(this.containerId),this.track=e.trackRelatedSearchClick,this.initializeSubscriptions()}initializeSubscriptions(){this.dataLayer.$searchRelatedSearches.subscribe(e=>{e&&this.renderMainTemplate(this.generateTemplateData())})}generateTemplateData(){return{...this.dataLayer.parsedData.data}}addRelatedSearchComponent(e,t){var s,i,c,l,h;const a=document.createElement("div"),r=((c=(i=(s=this.config)==null?void 0:s.templates)==null?void 0:i.relatedSearch)==null?void 0:c.template)||d.relatedSearches.relatedSearch.template;if(this.dataLayer.renderingEngine===C.mustache){a.innerHTML=f.render(r,e);const u=a.querySelector("."+(((h=(l=this.config.templates)==null?void 0:l.relatedSearch)==null?void 0:h.relatedSearchContainerClass)||d.relatedSearches.relatedSearch.relatedSearchContainerClass));u&&(t.appendChild(u),u.addEventListener("click",()=>{this.executeSearch(e)}))}}executeSearch(e){const t=this.dataLayer.searchObject;t.query=e.related_search,this.dataLayer.setSearchObject(t),this.track(e)}renderMainTemplate(e){var a,r,s,i;const t=((s=(r=(a=this.config)==null?void 0:a.templates)==null?void 0:r.main)==null?void 0:s.template)||d.relatedSearches.main.template;if(this.dataLayer.renderingEngine===C.mustache&&this.searchRelatedSearchesMainContainer){this.searchRelatedSearchesMainContainer.innerHTML="",this.searchRelatedSearchesMainContainer.innerHTML=f.render(t,e);const c=(i=this.searchRelatedSearchesMainContainer)==null?void 0:i.querySelector(`.${this.relatedSearchesContainerClass}`);if(c)for(const l of e.relatedSearches)this.addRelatedSearchComponent(l,c)}}}class Ie{constructor(e){n(this,"dataLayer");n(this,"config");n(this,"containerId");n(this,"searchFeedbackMainContainer",null);n(this,"searchTrigger");this.dataLayer=e.dataLayer,this.config=e.config,this.containerId=e.containerId,this.searchTrigger=e.searchTrigger,this.searchFeedbackMainContainer=document.getElementById(this.containerId),this.initializeSubscriptions()}initializeSubscriptions(){this.dataLayer.$searchResults.subscribe(e=>{e&&this.renderMainTemplate(this.generateTemplateData())})}generateTemplateData(){return{...this.dataLayer.parsedData.data}}onOriginalQueryClick(e){var a;e.stopPropagation(),e.preventDefault();const t=(a=e.target)==null?void 0:a.innerHTML;this.searchTrigger(t,!0)}attachClick(){var t,a,r,s,i;const e=(i=this.searchFeedbackMainContainer)==null?void 0:i.querySelector("."+(((r=(a=(t=this.config)==null?void 0:t.templates)==null?void 0:a.main)==null?void 0:r.originalQueryClass)||((s=d.searchFeedback.main)==null?void 0:s.originalQueryClass)));console.log("originalQuery",e),e&&e.addEventListener("click",this.onOriginalQueryClick.bind(this))}renderMainTemplate(e){var a,r,s;const t=((s=(r=(a=this.config)==null?void 0:a.templates)==null?void 0:r.main)==null?void 0:s.template)||d.searchFeedback.main.template;console.log("render"),this.dataLayer.renderingEngine===C.mustache&&(this.searchFeedbackMainContainer.innerHTML=f.render(t,e),setTimeout(()=>{this.attachClick()},0))}}class Pe{constructor(e){n(this,"dataLayer");n(this,"config");n(this,"suggestAfterMinChars");n(this,"containerId");n(this,"currentInputValue","");n(this,"autosuggestResults");n(this,"searchInput");n(this,"actionButton");n(this,"autosuggestContainer");n(this,"buttonState","search");n(this,"selectedAutosuggestItem",-1);n(this,"suggestTrigger");n(this,"searchTrigger");this.dataLayer=e.dataLayer,this.config=e.config,this.searchTrigger=e.searchTrigger,this.suggestTrigger=e.suggestTrigger,this.containerId=e.containerId,this.suggestAfterMinChars=e.config.suggestAfterMinChars,this.renderMainTemplate(),this.actionButtonInit(),this.updateActionButtonState("search"),this.searchInput&&(this.createAutosuggestContainer(),this.attachSubscriptions())}renderMainTemplate(){var s,i,c,l;const e=document.getElementById(this.containerId);if(!e)throw new Error("Search input container not found");const t=((i=(s=this.config.templates)==null?void 0:s.mainTemplate)==null?void 0:i.template)||d.searchInput.mainTemplate.template;if(this.dataLayer.renderingEngine===C.mustache){const h=f.render(t,{});e.innerHTML=h}const a=((l=(c=this.config.templates)==null?void 0:c.mainTemplate)==null?void 0:l.searchInputId)||d.searchInput.mainTemplate.searchInputId,r=document.querySelector(`#${a}`);if(r)this.searchInput=r,r.addEventListener("keyup",this.inputKeyupEvent.bind(this)),r.addEventListener("blur",this.hideAutosuggest.bind(this)),r.addEventListener("paste",this.inputPasteEvent.bind(this));else throw new Error("Input not found")}createAutosuggestContainer(){var e;this.autosuggestContainer=document.createElement("div"),this.autosuggestContainer.classList.add("searchstax-autosuggest-container"),this.autosuggestContainer.addEventListener("mouseleave",()=>{this.resetAutosuggestSelection(),this.markActiveAutosuggestItem()}),(e=this.searchInput)==null||e.after(this.autosuggestContainer)}actionButtonInit(){this.actionButton=document.getElementById("searchstax-search-input-action-button"),this.actionButton&&this.actionButton.addEventListener("click",()=>{var e;this.buttonState==="search"?this.executeSearch(((e=this.searchInput)==null?void 0:e.value)??""):this.buttonState==="close"&&this.searchInput&&(this.searchInput.value="",this.executeSearch(""))})}attachSubscriptions(){this.dataLayer.$searchTermChange.subscribe(()=>{this.handleSearchTermChange()}),this.dataLayer.$loadingChange.subscribe(()=>{this.handleLoadingChange()}),this.dataLayer.$searchAutosuggest.subscribe(e=>{e&&this.appendSuggestions(e)}),this.dataLayer.$searchObject.subscribe(e=>{e.query!=="undefined"&&e.query!==void 0&&e.query!=="*"&&this.searchInput&&(this.searchInput.value=this.cleanSuggestionTerm(e.query??""))})}handleLoadingChange(){this.dataLayer.loading?this.updateActionButtonState("loading"):this.handleSearchTermChange()}handleSearchTermChange(){var e;this.dataLayer.searchTerm===((e=this.searchInput)==null?void 0:e.value)&&this.searchInput.value!==""?this.updateActionButtonState("close"):this.updateActionButtonState("search")}updateActionButtonState(e){if(this.buttonState=e,this.actionButton)switch(this.actionButton.classList.remove("searchstax-spinner-icon"),this.actionButton.classList.remove("searchstax-search-close"),this.actionButton.classList.remove("searchstax-search-icon"),e){case"loading":this.actionButton.classList.add("searchstax-spinner-icon");break;case"search":this.actionButton.classList.add("searchstax-search-icon");break;case"close":this.actionButton.classList.add("searchstax-search-close");break}}selectPreviousAutosuggestItem(){this.selectedAutosuggestItem>0?this.selectedAutosuggestItem--:this.selectedAutosuggestItem=this.autosuggestResults.suggestions.length-1,this.markActiveAutosuggestItem()}selectNextAutosuggestItem(){this.selectedAutosuggestItem<this.autosuggestResults.suggestions.length-1?this.selectedAutosuggestItem++:this.selectedAutosuggestItem=0,this.markActiveAutosuggestItem()}resetAutosuggestSelection(){this.selectedAutosuggestItem=-1,this.markActiveAutosuggestItem()}markActiveAutosuggestItem(){const e=document.getElementsByClassName("searchstax-autosuggest-item");for(let t=0;t<e.length;t++){const a=e[t];t===this.selectedAutosuggestItem?a.classList.add("active"):a.classList.remove("active")}}inputKeyupEvent(e){const t=e.key;this.currentInputValue=e.target.value,t==="Enter"?this.suggestionChosen():t==="Escape"?this.hideAutosuggest():t==="ArrowUp"?this.selectPreviousAutosuggestItem():t==="ArrowDown"?this.selectNextAutosuggestItem():this.autosuggestHandling(e),this.handleSearchTermChange()}autosuggestHandling(e){e.target&&e.target.value.length>=this.suggestAfterMinChars?this.executeSuggest(e.target.value):this.hideAutosuggest()}inputPasteEvent(e){setTimeout(()=>{this.autosuggestHandling(e),this.handleSearchTermChange()},0)}executeSuggest(e){this.suggestTrigger(e)}executeSearch(e){this.hideAutosuggest(),this.searchTrigger(e===""?"*":e)}suggestionChosen(){this.selectedAutosuggestItem>-1?this.autosuggestItemClicked(this.autosuggestResults.suggestions[this.selectedAutosuggestItem]):this.executeSearch(this.currentInputValue)}hideAutosuggest(){setTimeout(()=>{this.autosuggestContainer&&(this.autosuggestContainer.innerHTML="",this.autosuggestContainer.classList.add("hidden")),this.resetAutosuggestSelection()},100)}cleanSuggestionTerm(e){return w.removeXSSRiskyTags(e.replace(/(<([^>]+)>)/gi,"")).trim()}autosuggestItemClicked(e){this.searchInput.value=this.cleanSuggestionTerm(e.term??""),this.executeSearch(this.cleanSuggestionTerm(e.term))}createAutosuggestItem(e){var r,s,i;const t=document.createElement("div");t.classList.add("searchstax-autosuggest-item"),t.addEventListener("click",()=>{this.autosuggestItemClicked(e)}),t.addEventListener("mouseenter",()=>{var c;this.selectedAutosuggestItem=((c=this.autosuggestResults)==null?void 0:c.suggestions.indexOf(e))||0,this.markActiveAutosuggestItem()});const a=((s=(r=this.config.templates)==null?void 0:r.autosuggestItemTemplate)==null?void 0:s.template)||((i=d.searchInput.autosuggestItemTemplate)==null?void 0:i.template);return t.innerHTML=f.render(a,e),t}appendSuggestions(e){if(this.autosuggestContainer){this.autosuggestContainer.innerHTML="",this.autosuggestContainer.classList.remove("hidden");for(const t in e.suggest)if(Object.prototype.hasOwnProperty.call(e.suggest,t)){const a=e.suggest[t];for(const r in a)if(Object.prototype.hasOwnProperty.call(a,r)){const s=a[r];this.autosuggestResults=s,s.numFound>0?s.suggestions.forEach(i=>{this.autosuggestContainer.appendChild(this.createAutosuggestItem(i))}):this.autosuggestContainer.classList.add("hidden")}}}}}class Me{constructor(e){n(this,"dataLayer");n(this,"config");n(this,"linkClickCallback");n(this,"searchCallback");n(this,"containerId");n(this,"searchResultsMainContainer");n(this,"searchResultsContainer");n(this,"searchResultLinks",[]);this.linkClickCallback=e.linkClickCallback,this.searchCallback=e.searchTrigger,this.dataLayer=e.dataLayer,this.config=e.config,this.containerId=e.containerId;const t=document.getElementById(this.containerId);if(t)this.searchResultsMainContainer=t;else throw new Error(`Search Results Main Container with id ${this.containerId} not found`);this.initializeSubscriptions(),this.renderMainTemplate()}initializeSubscriptions(){this.dataLayer.$searchResults.subscribe(e=>{e&&this.searchResultsContainer&&this.renderResults(e)})}changeTemplate(){this.dataLayer.searchResults&&this.renderResults(this.dataLayer.searchResults)}renderNoResultsTemplate(){var a,r,s,i,c;const e=((s=(r=(a=this.config)==null?void 0:a.templates)==null?void 0:r.noSearchResultTemplate)==null?void 0:s.template)||((i=d.searchResults.noSearchResultTemplate)==null?void 0:i.template),t=((c=this.dataLayer.searchResultsMetadata)==null?void 0:c.spellingSuggestion)??"";if(this.dataLayer.renderingEngine===C.mustache&&this.searchResultsContainer&&(this.searchResultsContainer.innerHTML=f.render(e,{spellingSuggestion:t,searchTerm:this.dataLayer.searchTerm})),t&&this.searchResultsContainer){const l=this.searchResultsContainer.querySelector("a");l&&l.addEventListener("click",h=>{h.preventDefault(),h.stopPropagation(),this.searchCallback(t)})}}renderResults(e){var t,a,r,s;if(this.dataLayer.renderingEngine===C.mustache&&this.searchResultsContainer)if(this.removeLinkClickEvents(),e.length===0)this.renderNoResultsTemplate();else{const i=((r=(a=(t=this.config)==null?void 0:t.templates)==null?void 0:a.searchResultTemplate)==null?void 0:r.template)||((s=d.searchResults.searchResultTemplate)==null?void 0:s.template),c=e.map(l=>f.render(i,l));this.searchResultsContainer.innerHTML=c.join(""),this.searchResultLinks=Array.from(this.searchResultsContainer.querySelectorAll(`[${this.uniqueIdAttribute}]`)),this.attachLinkClickEvents()}}removeLinkClickEvents(){this.searchResultLinks.forEach(e=>{e.removeEventListener("click",()=>{})})}get uniqueIdAttribute(){var e,t,a,r;return((a=(t=(e=this.config)==null?void 0:e.templates)==null?void 0:t.searchResultTemplate)==null?void 0:a.searchResultUniqueIdAttribute)||((r=d.searchResults.searchResultTemplate)==null?void 0:r.searchResultUniqueIdAttribute)}attachLinkClickEvents(){this.searchResultLinks.forEach(e=>{e.addEventListener("click",t=>{t.preventDefault(),t.stopPropagation();const a=e.getAttribute(this.uniqueIdAttribute)??"";a&&this.linkClickCallback(a)})})}renderMainTemplate(){var t,a,r,s;const e=((r=(a=(t=this.config)==null?void 0:t.templates)==null?void 0:a.mainTemplate)==null?void 0:r.template)||((s=d.searchResults.mainTemplate)==null?void 0:s.template);this.dataLayer.renderingEngine===C.mustache&&(this.searchResultsMainContainer.innerHTML=f.render(e,{})),setTimeout(()=>{var l,h,u,g,p,y,L;const i=(u=(h=(l=this.config)==null?void 0:l.templates)==null?void 0:h.mainTemplate)!=null&&u.searchResultsContainerId?(y=(p=(g=this.config)==null?void 0:g.templates)==null?void 0:p.mainTemplate)==null?void 0:y.searchResultsContainerId:(L=d.searchResults.mainTemplate)==null?void 0:L.searchResultsContainerId,c=document.getElementById(i);if(c)this.searchResultsContainer=c;else throw new Error(`Search Results Container with id ${i} not found`)},0)}}class Ee{constructor(e){n(this,"dataLayer");n(this,"config");n(this,"containerId");n(this,"selectId");n(this,"searchSortingMainContainer",null);var t,a;this.dataLayer=e.dataLayer,this.config=e.config,this.containerId=e.containerId,this.selectId=((a=(t=this.config.templates)==null?void 0:t.main)==null?void 0:a.selectId)||d.sorting.main.selectId,this.searchSortingMainContainer=document.getElementById(this.containerId),this.initializeSubscriptions(),this.renderMainTemplate(this.generateTemplateData())}initializeSubscriptions(){this.dataLayer.$searchResults.subscribe(e=>{e&&this.renderMainTemplate(this.generateTemplateData())})}generateTemplateData(){return{...this.dataLayer.parsedData.data}}setOrderQuery(e){const t=this.dataLayer.searchObject;t&&(t.order=e,this.dataLayer.setSearchObject(t))}markOptionSelected(){const e=document.getElementById(this.selectId);if(e){const t=e.querySelector(`option[value="${decodeURIComponent(this.dataLayer.searchObject.order)}"]`);t&&(t.selected=!0)}}renderMainTemplate(e){var a,r,s;const t=((s=(r=(a=this.config)==null?void 0:a.templates)==null?void 0:r.main)==null?void 0:s.template)||d.sorting.main.template;if(this.dataLayer.renderingEngine===C.mustache){this.searchSortingMainContainer.innerHTML=f.render(t,e),this.markOptionSelected();const i=document.getElementById(this.selectId);i&&i.addEventListener("change",c=>{this.setOrderQuery(c.target.value)})}}}class we{constructor(e=C.mustache){n(this,"routerEnabled",!1);n(this,"cachedQuery","");n(this,"routerHelper");n(this,"searchHelper");n(this,"searchResultsConfig");n(this,"searchPaginationConfig");n(this,"searchFeedbackConfig");n(this,"searchSortingConfig");n(this,"searchFacetsConfig");n(this,"relatedSearchesConfig");n(this,"externalPromotionsConfig");n(this,"searchInputWidget");n(this,"searchResultsWidget");n(this,"searchFacetsWidget");n(this,"searchPaginationWidget");n(this,"searchFeedbackWidget");n(this,"searchSortingWidget");n(this,"relatedSearchesWidget");n(this,"externalPromotionsWidget");n(this,"dataLayer",new J(Y.getOrSetCookie("searchstax_session_id")));n(this,"firstRequest",!0);e&&this.dataLayer.setRenderingEngine(e),this.handleHooks()}setRenderingEngine(e=C.mustache){this.dataLayer.setRenderingEngine(e)}handleHooks(){var e,t;(t=(e=this.dataLayer.searchstaxConfig)==null?void 0:e.hooks)!=null&&t.afterSearch&&this.dataLayer.$searchResults.subscribe(a=>{this.dataLayer.searchstaxConfig.hooks.afterSearch(a)}),this.dataLayer.$searchObject.subscribe(a=>{a.query!==""&&this.search(a)}),this.dataLayer.$searchResults.subscribe(a=>{a&&this.dataLayer.searchResultsMetadata&&j.trackSearch({...this.dataLayer.parsedData.trackingData,impressions:this.dataLayer.searchResultsMetadata.impressions})})}initialize(e){var t,a;e.autoCorrect===!1&&(this.dataLayer.autoCorrect=!1),this.dataLayer.searchstaxConfig||(this.dataLayer.setSearchstaxConfig(e),this.searchHelper=new G({...e,sessionId:this.dataLayer.sessionId},this.dataLayer)),((t=e.router)==null?void 0:t.enabled)===void 0||((a=e.router)==null?void 0:a.enabled)===!0?(this.routerEnabled=!0,this.routerHelper=new K(e.router?e.router:{enabled:!0}),this.dataLayer.setSearchObject(this.routerHelper.urlToSearchObject(window.location.href)),addEventListener("popstate",()=>{this.routerHelper&&this.dataLayer.setSearchObject(this.routerHelper.urlToSearchObject(window.location.href))})):this.routerHelper=new K({})}search(e){if(this.searchHelper&&e.query!==""&&e.query!==void 0&&e.query!=="undefined"){const t=this.dataLayer.forceNotCorrect;this.searchHelper.search(e,this.parseSearchResultsResponse.bind(this),this.firstRequest,t),this.firstRequest=!1,this.getRelatedSearches()}}getRelatedSearches(){this.searchHelper&&this.relatedSearchesConfig&&this.searchHelper.getRelatedSearches(this.dataLayer.searchObject,this.relatedSearchesConfig.relatedSearchesURL,this.relatedSearchesConfig.relatedSearchesAPIKey,this.parseRelatedSearchesResponse.bind(this))}parseRelatedSearchesResponse(e){var s;const a=(((s=e.response)==null?void 0:s.docs)??[]).map((i,c)=>({...i,position:c+1})),r=[];for(const i of a)r.push({relatedSearch:i.related_search,position:i.position});this.dataLayer.searchResultsMetadata&&j.trackRelatedSearches({...this.dataLayer.parsedData.trackingData,impressions:r}),this.dataLayer.setSearchRelatedSearches(a)}handleRouter(){this.routerEnabled&&this.routerHelper.updateUrl(this.dataLayer.searchObject)}parseSearchResultsResponse(e){var s,i;this.handleRouter();let t=D.combineResultsWithMetadata(e),a=D.extractFacets(e);this.dataLayer.setSearchFacets(a),(i=(s=this.dataLayer.searchstaxConfig)==null?void 0:s.hooks)!=null&&i.afterSearch&&(t=this.dataLayer.searchstaxConfig.hooks.afterSearch(t)),this.dataLayer.setSearchExternalPromotions(e.externalLinks??[]);const r=D.extractSearchResultsMetadata(e);this.dataLayer.setSearchResultsMetadata(r),this.dataLayer.setSearchResults(t)}cacheFacets(){var e;(e=this.searchHelper)==null||e.cacheFacets()}parseSuggestSuggestResponse(e){var a,r;let t=e;(r=(a=this.dataLayer.searchInputConfig)==null?void 0:a.hooks)!=null&&r.afterAutosuggest&&(t=this.dataLayer.searchInputConfig.hooks.afterAutosuggest(e)),this.dataLayer.setSearchAutosuggest(t)}suggest(e,t){this.searchHelper&&this.searchHelper.suggest(e,this.parseSuggestSuggestResponse.bind(this),t)}changeLanguage(e){this.searchHelper&&this.dataLayer.setLanguage(e)}addSearchInputWidget(e,t){this.dataLayer.searchInputConfig||(this.dataLayer.setSearchInputConfig(t),this.searchInputWidget=new Pe({containerId:e,config:t,searchTrigger:this.executeSearch.bind(this),suggestTrigger:this.executeSuggest.bind(this),dataLayer:this.dataLayer}))}addSearchResultsWidget(e,t){this.searchResultsConfig||(this.searchResultsConfig=t,this.searchResultsWidget=new Me({containerId:e,linkClickCallback:this.executeLinkClick.bind(this),searchTrigger:this.executeSearch.bind(this),config:t,dataLayer:this.dataLayer}))}addPaginationWidget(e,t){this.searchPaginationConfig=t,this.searchPaginationWidget=new ke({containerId:e,config:t,dataLayer:this.dataLayer,routerHelper:this.routerHelper})}addSearchFeedbackWidget(e,t){this.searchFeedbackConfig||(this.searchFeedbackConfig=t,this.searchFeedbackWidget=new Ie({containerId:e,config:t,dataLayer:this.dataLayer,searchTrigger:this.executeSearch.bind(this)}))}addSearchSortingWidget(e,t){this.searchSortingConfig||(this.searchSortingConfig=t,this.searchSortingWidget=new Ee({containerId:e,config:t,dataLayer:this.dataLayer}))}addRelatedSearchesWidget(e,t){this.relatedSearchesConfig||(this.relatedSearchesConfig=t,this.relatedSearchesWidget=new Re({containerId:e,config:t,dataLayer:this.dataLayer,trackRelatedSearchClick:this.trackRelatedSearchClick.bind(this)}),setTimeout(()=>{this.getRelatedSearches()},0))}addExternalPromotionsWidget(e,t){this.externalPromotionsConfig||(this.externalPromotionsConfig=t,this.externalPromotionsWidget=new xe({containerId:e,config:t,dataLayer:this.dataLayer}))}addFacetsWidget(e,t){this.searchFacetsConfig=t,this.searchFacetsWidget=new Te({containerId:e,config:t,dataLayer:this.dataLayer,routerHelper:this.routerHelper},this.cacheFacets.bind(this))}executeSearch(e,t){var s,i;const a={...this.dataLayer.searchObject};a.query=w.removeXSSRiskyTags(e),a.page=1,a.facets=[],this.dataLayer.forceNotCorrect=!!t;let r=(s=this.routerHelper)==null?void 0:s.searchObjectToParams(a);r&&(r=(i=this.routerHelper)==null?void 0:i.extractParamsThatDoNotStartWithRouteName(r)),r&&(a.additionalProps=Object.keys(r).map(c=>r?{key:c,value:r[c]}:{key:"",value:""})),this.dataLayer.setSearchObject(a)}executeSuggest(e){var a,r;let t={term:e,queryParams:[]};(r=(a=this.dataLayer.searchInputConfig)==null?void 0:a.hooks)!=null&&r.beforeAutosuggest&&(t=this.dataLayer.searchInputConfig.hooks.beforeAutosuggest(t)),t&&t.term!==void 0&&t.queryParams!==void 0&&this.suggest(t.term,t.queryParams)}trackRelatedSearchClick(e){this.dataLayer.searchResultsMetadata&&this.dataLayer.searchRelatedSearches&&j.trackRelatedSearchClick({...this.dataLayer.parsedData.trackingData,relatedSearch:e})}executeLinkClick(e){var a,r;let t=D.findResultByUniqueId(e,this.dataLayer.searchResults??[]);t&&((r=(a=this.searchResultsConfig)==null?void 0:a.hooks)!=null&&r.afterLinkClick&&(t=this.searchResultsConfig.hooks.afterLinkClick(t)),t&&this.dataLayer.searchResultsMetadata&&(j.trackClick({result:t,...this.dataLayer.parsedData.trackingData}),setTimeout(()=>{window.location.href=(t==null?void 0:t.url)??""},0)))}setPage(e){var t;(t=this.searchPaginationWidget)==null||t.goToPage(e)}changeResultTemplate(e){var t,a,r;this.searchResultsConfig&&(this.searchResultsConfig.templates=(t=this.searchResultsConfig)!=null&&t.templates?{...(a=this.searchResultsConfig)==null?void 0:a.templates,...e}:e,(r=this.searchResultsWidget)==null||r.changeTemplate())}}F.Searchstax=we,Object.defineProperty(F,Symbol.toStringTag,{value:"Module"})})(this["@searchstaxInc/searchstudioUxJs"]=this["@searchstaxInc/searchstudioUxJs"]||{});
|
|
223
|
+
`,selectId:"searchstax-search-order-select"}};class d{}n(d,"externalPromotions",fe),n(d,"facets",me),n(d,"pagination",ye),n(d,"relatedSearches",Ce),n(d,"searchFeedback",ve),n(d,"searchInput",Se),n(d,"searchResults",be),n(d,"sorting",Le);class xe{constructor(e){n(this,"dataLayer");n(this,"config");n(this,"containerId");n(this,"externalPromotionsContainerId");n(this,"searchExternalPromotionsMainContainer",null);var t,a;this.dataLayer=e.dataLayer,this.config=e.config,this.containerId=e.containerId,this.externalPromotionsContainerId=((a=(t=this.config.templates)==null?void 0:t.mainTemplate)==null?void 0:a.externalPromotionsContainerId)||d.externalPromotions.mainTemplate.externalPromotionsContainerId,this.searchExternalPromotionsMainContainer=document.getElementById(this.containerId),this.initializeSubscriptions(),this.renderMainTemplate(this.generateTemplateData())}initializeSubscriptions(){this.dataLayer.$searchExternalPromotions.subscribe(e=>{e&&this.renderMainTemplate(this.generateTemplateData())})}generateTemplateData(){return{...this.dataLayer.parsedData.data,externalPromotions:this.dataLayer.parsedData.externalPromotions}}addExternalSearch(e){var a,r,s,i;const t=document.getElementById(this.externalPromotionsContainerId);if(t){const c=((s=(r=(a=this.config)==null?void 0:a.templates)==null?void 0:r.externalPromotion)==null?void 0:s.template)||((i=d.externalPromotions.externalPromotion)==null?void 0:i.template),l=document.createElement("div");l.classList.add("searchstax-external-promotion"),l.addEventListener("click",h=>{this.trackClick(e,h)}),l.innerHTML=f.render(c,e),t.appendChild(l)}}trackClick(e,t){t.stopPropagation(),t.preventDefault(),window.open(e.url,"_blank")}renderMainTemplate(e){var a,r,s,i;const t=((s=(r=(a=this.config)==null?void 0:a.templates)==null?void 0:r.mainTemplate)==null?void 0:s.template)||((i=d.externalPromotions.mainTemplate)==null?void 0:i.template);if(this.dataLayer.renderingEngine===C.mustache){this.searchExternalPromotionsMainContainer.innerHTML=f.render(t,e);const c=document.getElementById(this.externalPromotionsContainerId);c&&(c.innerHTML="");for(const l of e.externalPromotions)this.addExternalSearch(l)}}}class Te{constructor(e,t){n(this,"dataLayer");n(this,"config");n(this,"containerId");n(this,"routerHelper");n(this,"cachedPhrase","");n(this,"isCached",!1);n(this,"overlayOpened",!1);n(this,"facetPaginationStep");n(this,"facetPaginationStepMobile");n(this,"searchFacetsMainContainer",null);n(this,"searchFacetsMobileContainer",null);n(this,"searchFacetsDesktopContainer",null);n(this,"facetLimits",{});n(this,"facetLimitsMobile",{});n(this,"deactivatedFacets",{});n(this,"cachedData",null);n(this,"cacheFacets");n(this,"onFacetSelect",(e,t,a,r)=>{if(e.stopPropagation(),!t.disabled){const s=a.querySelector("input");s.checked=r?s.checked:!s.checked;const i=this.dataLayer.searchObject;let c=[...i.facets];const l=this.extractFacetValue(t);s.checked?c.find(u=>M.deepEqual(u,l)?u:!1)||(this.config.facetingType==="tabs"&&(c=c.filter(u=>u.name!==l.name)),c.push(l)):c=c.filter(h=>!M.deepEqual(h,l)),setTimeout(()=>{this.dataLayer.setSearchObject({...i,facets:c,page:1}),this.config.facetingType==="tabs"&&this.renderMainTemplate(this.generateTemplateData(),!0)},0)}});this.dataLayer=e.dataLayer,this.config=e.config,this.containerId=e.containerId,this.routerHelper=e.routerHelper,this.cacheFacets=t,this.facetPaginationStep=this.config.itemsPerPageDesktop,this.facetPaginationStepMobile=this.config.itemsPerPageMobile,this.searchFacetsMainContainer=document.getElementById(this.containerId),this.needCache&&t(),this.initializeSubscriptions()}get needCache(){return this.config.facetingType==="showUnavailable"||this.config.facetingType==="or"||this.config.facetingType==="tabs"}get needDisabling(){return this.config.facetingType==="showUnavailable"}initializeSubscriptions(){this.needCache&&this.dataLayer.$searchFacetsCached.subscribe(e=>{e&&this.dataLayer.searchFacets&&this.renderMainTemplate(this.generateTemplateData())}),this.dataLayer.$searchResults.subscribe(e=>{e&&(this.needCache&&!this.isCached&&(this.dataLayer.searchFacets&&!this.dataLayer.searchFacetsCached&&this.dataLayer.setSearchFacetsCached(this.dataLayer.searchFacets),this.cacheFacets()),this.renderMainTemplate(this.generateTemplateData()))}),this.dataLayer.$searchObject.subscribe(e=>{this.cachedPhrase!==e.query?(this.cachedPhrase=e.query,this.isCached=!1):this.isCached=!0})}extractFacetValue(e){return{type:this.config.facetingType,name:e.parentName,value:e.value}}applyFacetLimits(e,t){const a=t?this.facetPaginationStepMobile:this.facetPaginationStep,r=t?this.facetLimits:this.facetLimitsMobile;return e.forEach(s=>{r[s.name]||(r[s.name]=a)}),e.map(s=>({...s,values:s.values.slice(0,r[s.name]),showingAllFacets:s.values.length<=r[s.name],hasMoreFacets:s.values.length>a}))}generateTemplateData(e){if(this.dataLayer.searchFacets){let t=this.dataLayer.searchFacets;return this.needCache&&this.dataLayer.searchFacetsCached&&(t=this.dataLayer.searchFacetsCached,this.needDisabling&&(t=t.map(a=>{var s;const r=(s=this.dataLayer.searchFacets)==null?void 0:s.find(i=>i.name===a.name);return r?{...a,values:a.values.map(i=>{const c=r.values.find(l=>i.type==="range"?!1:i.type==="checkbox"?l.value===i.value:!1);return{...i,disabled:!c}})}:{...a,values:a.values.map(i=>({...i,disabled:!0}))}}))),this.config.specificFacets&&(t=t.filter(a=>{var r;return(r=this.config.specificFacets)==null?void 0:r.includes(a.name)})),{facets:this.applyFacetLimits(t,e),...this.dataLayer.parsedData.data}}else return{facets:[],...this.dataLayer.parsedData.data}}createFacetItem(e,t,a){var l,h,u,g,p,y,L,m,v,S,b,R;const r=document.createElement("div");r.classList.add("searchstax-facet-container"),this.deactivatedFacets[e.name]||r.classList.add("active");const s=((u=(h=(l=this.config)==null?void 0:l.templates)==null?void 0:h.facetItemContainerTemplate)==null?void 0:u.template)||((g=d.facets.facetItemContainerTemplate)==null?void 0:g.template);r.innerHTML=f.render(s,e),t.appendChild(r);const i=r.querySelector("."+(((L=(y=(p=this.config)==null?void 0:p.templates)==null?void 0:y.facetItemContainerTemplate)==null?void 0:L.facetListTitleContainerClass)||((m=d.facets.facetItemContainerTemplate)==null?void 0:m.facetListTitleContainerClass)));i==null||i.addEventListener("click",()=>{r.classList.toggle("active")});const c=r.querySelector("."+(((b=(S=(v=this.config)==null?void 0:v.templates)==null?void 0:S.facetItemContainerTemplate)==null?void 0:b.facetListContainerClass)||((R=d.facets.facetItemContainerTemplate)==null?void 0:R.facetListContainerClass)));c&&(e.values.forEach(P=>{this.createFacetListItem(P,c)}),e.hasMoreFacets&&this.createHasMoreComponent(e,c,a))}createFacetListItem(e,t){var l,h,u,g,p,y,L,m,v,S,b,R,P,x;const a=document.createElement("div");a.classList.add("searchstax-facet-value-container"),e.disabled&&a.classList.add("searchstax-facet-value-disabled");const s=!!((l=this.dataLayer.searchObject.facets)!=null&&l.find(E=>M.deepEqual(E,this.extractFacetValue(e)))),i=((g=(u=(h=this.config)==null?void 0:h.templates)==null?void 0:u.facetItemTemplate)==null?void 0:g.template)||((p=d.facets.facetItemTemplate)==null?void 0:p.template);a.innerHTML=f.render(i,{...e,isChecked:s});let c=(y=d.facets.facetItemTemplate)==null?void 0:y.checkTriggerClasses;c=((v=(m=(L=this.config)==null?void 0:L.templates)==null?void 0:m.facetItemTemplate)==null?void 0:v.checkTriggerClasses)||c,c.forEach(E=>{var A;(A=a.querySelector("."+E))==null||A.addEventListener("click",k=>{this.onFacetSelect(k,e,a)})}),(x=a.querySelector("."+(((R=(b=(S=this.config)==null?void 0:S.templates)==null?void 0:b.facetItemTemplate)==null?void 0:R.inputCheckboxClass)||((P=d.facets.facetItemTemplate)==null?void 0:P.inputCheckboxClass))))==null||x.addEventListener("click",E=>{this.onFacetSelect(E,e,a,!0)}),t.appendChild(a)}createHasMoreComponent(e,t,a){var c,l,h,u,g,p,y,L;const r=document.createElement("div");r.classList.add("searchstax-facet-show-more-container");const s=((h=(l=(c=this.config)==null?void 0:c.templates)==null?void 0:l.showMoreButtonContainerTemplate)==null?void 0:h.template)||((u=d.facets.showMoreButtonContainerTemplate)==null?void 0:u.template);r.innerHTML=f.render(s,e);const i=r.querySelector("."+(((y=(p=(g=this.config)==null?void 0:g.templates)==null?void 0:p.showMoreButtonContainerTemplate)==null?void 0:y.showMoreButtonClass)||((L=d.facets.showMoreButtonContainerTemplate)==null?void 0:L.showMoreButtonClass)));i&&(this.attachOnclickToShowMore(e,i,a),t&&t.appendChild(i))}attachOnclickToShowMore(e,t,a){t.addEventListener("click",r=>{this.onShowMoreLessClick(r,e,a)})}onShowMoreLessClick(e,t,a){e.preventDefault();const r=a?this.facetPaginationStepMobile:this.facetPaginationStep,s=a?this.facetLimits:this.facetLimitsMobile;s[t.name]===void 0?s[t.name]=r*2:s[t.name]<=t.values.length?s[t.name]=s[t.name]+r:s[t.name]=r,this.renderMainTemplate(this.generateTemplateData())}renderMainTemplate(e,t){var a,r,s,i,c,l,h,u,g,p,y;if(e&&(!M.deepEqual(this.cachedData??{},e)||t)){this.cachedData=e;const L=((s=(r=(a=this.config)==null?void 0:a.templates)==null?void 0:r.mainTemplateDesktop)==null?void 0:s.template)||((i=d.facets.mainTemplateDesktop)==null?void 0:i.template);if(this.dataLayer.renderingEngine===C.mustache&&this.searchFacetsMainContainer){this.searchFacetsMainContainer.innerHTML=f.render(L,{...e});const m=(u=this.searchFacetsMainContainer)==null?void 0:u.querySelector("."+(((h=(l=(c=this.config)==null?void 0:c.templates)==null?void 0:l.mainTemplateDesktop)==null?void 0:h.facetsContainerClass)||d.facets.mainTemplateDesktop.facetsContainerClass));if(m){m.innerHTML="";for(const v of e.facets)this.createFacetItem(v,m);if(this.searchFacetsMainContainer){const v=this.searchFacetsMainContainer.querySelector("."+(((y=(p=(g=this.config)==null?void 0:g.templates)==null?void 0:p.mainTemplateDesktop)==null?void 0:y.selectedFacetsContainerClass)||d.facets.mainTemplateDesktop.selectedFacetsContainerClass));v&&(this.createSelectedFacetsComponents(v),this.createClearFacetsComponents(v))}}this.renderMobileTemplate(this.generateTemplateData(!0))}}}createSelectedFacetsComponents(e){const t=this.dataLayer.searchObject.facets;for(const a of t){const r=decodeURIComponent(a.name),s=decodeURIComponent(a.value);if(this.dataLayer.searchFacets){const i=this.needCache?this.dataLayer.searchFacetsCached:this.dataLayer.searchFacets,c=i==null?void 0:i.find(l=>l.name===r);if(c){const l=c.values.find(h=>h.type==="range"?!1:h.type==="checkbox"?`"${h.value}"`===s:!1);l&&this.createSelectedFacetsComponent(e,l)}}}}createClearFacetsComponents(e){var i,c,l,h,u,g,p,y;const t=this.dataLayer.searchObject,a=((l=(c=(i=this.config)==null?void 0:i.templates)==null?void 0:c.clearFacetsTemplate)==null?void 0:l.template)||((h=d.facets.clearFacetsTemplate)==null?void 0:h.template),r=document.createElement("div");r.innerHTML=f.render(a,{shouldShow:t.facets.length>0});const s=r.querySelector("."+(((p=(g=(u=this.config)==null?void 0:u.templates)==null?void 0:g.clearFacetsTemplate)==null?void 0:p.containerClass)||((y=d.facets.clearFacetsTemplate)==null?void 0:y.containerClass)));s&&(s.addEventListener("click",()=>{this.removeSelectedFacets()}),e.appendChild(s))}createSelectedFacetsComponent(e,t){var i,c,l,h,u,g,p,y;const a=((l=(c=(i=this.config)==null?void 0:i.templates)==null?void 0:c.selectedFacetsTemplate)==null?void 0:l.template)||((h=d.facets.selectedFacetsTemplate)==null?void 0:h.template),r=document.createElement("div");r.innerHTML=f.render(a,t);const s=r.querySelector("."+(((p=(g=(u=this.config)==null?void 0:u.templates)==null?void 0:g.selectedFacetsTemplate)==null?void 0:p.containerClass)||((y=d.facets.selectedFacetsTemplate)==null?void 0:y.containerClass)));s&&(s.addEventListener("click",()=>{this.unselectFacet(t)}),e.appendChild(s))}unselectFacet(e){const t=this.dataLayer.searchObject;let a=[...t.facets];e.type==="checkbox"&&(a=a.filter(r=>r!==this.extractFacetValue(e))),setTimeout(()=>{this.dataLayer.setSearchObject({...t,facets:a})},0)}removeSelectedFacets(){const e=this.dataLayer.searchObject;this.dataLayer.setSearchObject({...e,facets:[]})}createFilterByComponent(e){var s,i,c,l,h,u,g,p;const t=((c=(i=(s=this.config)==null?void 0:s.templates)==null?void 0:i.filterByTemplate)==null?void 0:c.template)||((l=d.facets.filterByTemplate)==null?void 0:l.template),a=document.createElement("div");a.innerHTML=f.render(t,{});const r=a.querySelector("."+(((g=(u=(h=this.config)==null?void 0:h.templates)==null?void 0:u.filterByTemplate)==null?void 0:g.containerClass)||((p=d.facets.filterByTemplate)==null?void 0:p.containerClass)));r&&(e.prepend(r),r.addEventListener("click",this.openOverlay.bind(this)))}openOverlay(){var e;this.overlayOpened=!0,this.searchFacetsMainContainer&&(document.body.classList.toggle("searchstax-no-scroll"),(e=this.searchFacetsMainContainer.querySelector(".searchstax-facets-mobile-overlay"))==null||e.classList.add("searchstax-show"))}closeOverlay(){var e;this.overlayOpened=!1,this.searchFacetsMainContainer&&(document.body.classList.toggle("searchstax-no-scroll"),(e=this.searchFacetsMainContainer.querySelector(".searchstax-facets-mobile-overlay"))==null||e.classList.remove("searchstax-show"))}renderMobileTemplate(e){var t,a,r,s,i,c,l,h,u,g,p,y,L,m,v,S,b,R,P;if(e){const x=document.createElement("div");x.classList.add("searchstax-facets-container-mobile");const E=((r=(a=(t=this.config)==null?void 0:t.templates)==null?void 0:a.mainTemplateMobile)==null?void 0:r.template)||((s=d.facets.mainTemplateMobile)==null?void 0:s.template);if(this.dataLayer.renderingEngine===C.mustache){if(x.innerHTML=f.render(E,{...e,overlayOpened:this.overlayOpened}),(i=this.searchFacetsMainContainer)==null||i.appendChild(x),(l=(c=this.config)==null?void 0:c.templates)!=null&&l.mainTemplateMobile)for(const $ of((g=(u=(h=this.config)==null?void 0:h.templates)==null?void 0:u.mainTemplateMobile)==null?void 0:g.closeOverlayTriggerClasses)||[]){const N=x.querySelector("."+$);N&&N.addEventListener("click",this.closeOverlay.bind(this))}else for(const $ of d.facets.mainTemplateMobile.closeOverlayTriggerClasses){const N=x.querySelector("."+$);N&&N.addEventListener("click",this.closeOverlay.bind(this))}const A=x.querySelector("."+(((L=(y=(p=this.config)==null?void 0:p.templates)==null?void 0:y.mainTemplateMobile)==null?void 0:L.filterByContainerClass)||d.facets.mainTemplateMobile.filterByContainerClass));A&&this.createFilterByComponent(A);const k=x.querySelector("."+(((S=(v=(m=this.config)==null?void 0:m.templates)==null?void 0:v.mainTemplateMobile)==null?void 0:S.selectedFacetsContainerClass)||d.facets.mainTemplateMobile.selectedFacetsContainerClass));k&&(this.createSelectedFacetsComponents(k),this.createClearFacetsComponents(k));const Q=x.querySelector("."+(((P=(R=(b=this.config)==null?void 0:b.templates)==null?void 0:R.mainTemplateMobile)==null?void 0:P.facetsContainerClass)||d.facets.mainTemplateMobile.facetsContainerClass));if(Q){Q.innerHTML="";for(const $ of e.facets)this.createFacetItem($,Q,!0)}}}}}class ke{constructor(e){n(this,"dataLayer");n(this,"config");n(this,"containerId");n(this,"previousButtonClass");n(this,"nextButtonClass");n(this,"routerHelper");n(this,"searchPaginationMainContainer",null);var t,a,r,s,i,c;this.dataLayer=e.dataLayer,this.config=e.config,this.containerId=e.containerId,this.routerHelper=e.routerHelper,this.previousButtonClass=((r=(a=(t=this.config)==null?void 0:t.templates)==null?void 0:a.mainTemplate)==null?void 0:r.previousButtonClass)??d.pagination.mainTemplate.previousButtonClass,this.nextButtonClass=((c=(i=(s=this.config)==null?void 0:s.templates)==null?void 0:i.mainTemplate)==null?void 0:c.nextButtonClass)??d.pagination.mainTemplate.nextButtonClass,this.searchPaginationMainContainer=document.getElementById(this.containerId),this.initializeSubscriptions(),this.renderMainTemplate(this.generateTemplateData())}get isFirstPage(){var e;return((e=this.dataLayer.searchObject)==null?void 0:e.page)===1}get isLastPage(){var e,t;return((e=this.dataLayer.searchObject)==null?void 0:e.page)===Math.ceil((((t=this.dataLayer.searchResultsMetadata)==null?void 0:t.totalResultsValue)??0)/10)}initializeSubscriptions(){this.dataLayer.$searchResults.subscribe(e=>{e&&this.renderMainTemplate(this.generateTemplateData())})}generateTemplateData(){var e,t;return{...this.dataLayer.parsedData.data,previousPageLink:this.routerHelper.searchObjectToUrl({...this.dataLayer.searchObject,page:((e=this.dataLayer.searchObject)==null?void 0:e.page)-1}),nextPageLink:this.routerHelper.searchObjectToUrl({...this.dataLayer.searchObject,page:((t=this.dataLayer.searchObject)==null?void 0:t.page)+1})}}goToPage(e){const t=this.dataLayer.searchObject;t&&(t.page=e,this.dataLayer.setSearchObject(t)),window.scrollTo(0,0)}nextPage(e){var t;e.preventDefault(),e.stopPropagation(),this.isLastPage||this.goToPage(((t=this.dataLayer.searchObject)==null?void 0:t.page)+1)}previousPage(e){var t;e.preventDefault(),e.stopPropagation(),this.isFirstPage||this.goToPage(((t=this.dataLayer.searchObject)==null?void 0:t.page)-1)}overridePaginationEvents(){if(this.searchPaginationMainContainer){const e=this.searchPaginationMainContainer.querySelector("."+this.previousButtonClass),t=this.searchPaginationMainContainer.querySelector("."+this.nextButtonClass);e&&e.addEventListener("click",this.previousPage.bind(this)),t&&t.addEventListener("click",this.nextPage.bind(this))}}renderMainTemplate(e){var a,r,s,i,c,l;this.searchPaginationMainContainer&&((a=this.searchPaginationMainContainer.querySelector("."+this.previousButtonClass))==null||a.removeEventListener("click",this.previousPage),(r=this.searchPaginationMainContainer.querySelector("."+this.nextButtonClass))==null||r.removeEventListener("click",this.nextPage));const t=((c=(i=(s=this.config)==null?void 0:s.templates)==null?void 0:i.mainTemplate)==null?void 0:c.template)||((l=d.pagination.mainTemplate)==null?void 0:l.template);this.dataLayer.renderingEngine===C.mustache&&(this.searchPaginationMainContainer.innerHTML=f.render(t,e),setTimeout(()=>{this.overridePaginationEvents()},0))}}class Re{constructor(e){n(this,"dataLayer");n(this,"config");n(this,"containerId");n(this,"relatedSearchesContainerClass");n(this,"searchRelatedSearchesMainContainer",null);n(this,"track");var t,a;this.dataLayer=e.dataLayer,this.config=e.config,this.containerId=e.containerId,this.relatedSearchesContainerClass=((a=(t=this.config.templates)==null?void 0:t.main)==null?void 0:a.relatedSearchesContainerClass)||d.relatedSearches.main.relatedSearchesContainerClass,this.searchRelatedSearchesMainContainer=document.getElementById(this.containerId),this.track=e.trackRelatedSearchClick,this.initializeSubscriptions()}initializeSubscriptions(){this.dataLayer.$searchRelatedSearches.subscribe(e=>{e&&this.renderMainTemplate(this.generateTemplateData())})}generateTemplateData(){return{...this.dataLayer.parsedData.data}}addRelatedSearchComponent(e,t){var s,i,c,l,h;const a=document.createElement("div"),r=((c=(i=(s=this.config)==null?void 0:s.templates)==null?void 0:i.relatedSearch)==null?void 0:c.template)||d.relatedSearches.relatedSearch.template;if(this.dataLayer.renderingEngine===C.mustache){a.innerHTML=f.render(r,e);const u=a.querySelector("."+(((h=(l=this.config.templates)==null?void 0:l.relatedSearch)==null?void 0:h.relatedSearchContainerClass)||d.relatedSearches.relatedSearch.relatedSearchContainerClass));u&&(t.appendChild(u),u.addEventListener("click",()=>{this.executeSearch(e)}))}}executeSearch(e){const t=this.dataLayer.searchObject;t.query=e.related_search,this.dataLayer.setSearchObject(t),this.track(e)}renderMainTemplate(e){var a,r,s,i;const t=((s=(r=(a=this.config)==null?void 0:a.templates)==null?void 0:r.main)==null?void 0:s.template)||d.relatedSearches.main.template;if(this.dataLayer.renderingEngine===C.mustache&&this.searchRelatedSearchesMainContainer){this.searchRelatedSearchesMainContainer.innerHTML="",this.searchRelatedSearchesMainContainer.innerHTML=f.render(t,e);const c=(i=this.searchRelatedSearchesMainContainer)==null?void 0:i.querySelector(`.${this.relatedSearchesContainerClass}`);if(c)for(const l of e.relatedSearches)this.addRelatedSearchComponent(l,c)}}}class Ie{constructor(e){n(this,"dataLayer");n(this,"config");n(this,"containerId");n(this,"searchFeedbackMainContainer",null);n(this,"searchTrigger");this.dataLayer=e.dataLayer,this.config=e.config,this.containerId=e.containerId,this.searchTrigger=e.searchTrigger,this.searchFeedbackMainContainer=document.getElementById(this.containerId),this.initializeSubscriptions()}initializeSubscriptions(){this.dataLayer.$searchResults.subscribe(e=>{e&&this.renderMainTemplate(this.generateTemplateData())})}generateTemplateData(){return{...this.dataLayer.parsedData.data}}onOriginalQueryClick(e){var a;e.stopPropagation(),e.preventDefault();const t=(a=e.target)==null?void 0:a.innerHTML;this.searchTrigger(t,!0)}attachClick(){var t,a,r,s,i;const e=(i=this.searchFeedbackMainContainer)==null?void 0:i.querySelector("."+(((r=(a=(t=this.config)==null?void 0:t.templates)==null?void 0:a.main)==null?void 0:r.originalQueryClass)||((s=d.searchFeedback.main)==null?void 0:s.originalQueryClass)));console.log("originalQuery",e),e&&e.addEventListener("click",this.onOriginalQueryClick.bind(this))}renderMainTemplate(e){var a,r,s;const t=((s=(r=(a=this.config)==null?void 0:a.templates)==null?void 0:r.main)==null?void 0:s.template)||d.searchFeedback.main.template;console.log("render"),this.dataLayer.renderingEngine===C.mustache&&(this.searchFeedbackMainContainer.innerHTML=f.render(t,e),setTimeout(()=>{this.attachClick()},0))}}class Pe{constructor(e){n(this,"dataLayer");n(this,"config");n(this,"suggestAfterMinChars");n(this,"containerId");n(this,"currentInputValue","");n(this,"autosuggestResults");n(this,"searchInput");n(this,"actionButton");n(this,"autosuggestContainer");n(this,"buttonState","search");n(this,"selectedAutosuggestItem",-1);n(this,"suggestTrigger");n(this,"searchTrigger");this.dataLayer=e.dataLayer,this.config=e.config,this.searchTrigger=e.searchTrigger,this.suggestTrigger=e.suggestTrigger,this.containerId=e.containerId,this.suggestAfterMinChars=e.config.suggestAfterMinChars,this.renderMainTemplate(),this.actionButtonInit(),this.updateActionButtonState("search"),this.searchInput&&(this.createAutosuggestContainer(),this.attachSubscriptions())}renderMainTemplate(){var s,i,c,l;const e=document.getElementById(this.containerId);if(!e)throw new Error("Search input container not found");const t=((i=(s=this.config.templates)==null?void 0:s.mainTemplate)==null?void 0:i.template)||d.searchInput.mainTemplate.template;if(this.dataLayer.renderingEngine===C.mustache){const h=f.render(t,{});e.innerHTML=h}const a=((l=(c=this.config.templates)==null?void 0:c.mainTemplate)==null?void 0:l.searchInputId)||d.searchInput.mainTemplate.searchInputId,r=document.querySelector(`#${a}`);if(r)this.searchInput=r,r.addEventListener("keyup",this.inputKeyupEvent.bind(this)),r.addEventListener("blur",this.hideAutosuggest.bind(this)),r.addEventListener("paste",this.inputPasteEvent.bind(this));else throw new Error("Input not found")}createAutosuggestContainer(){var e;this.dataLayer.renderingEngine===C.mustache&&(this.autosuggestContainer=document.createElement("div"),this.autosuggestContainer.classList.add("searchstax-autosuggest-container"),this.autosuggestContainer.addEventListener("mouseleave",()=>{this.resetAutosuggestSelection(),this.markActiveAutosuggestItem()}),(e=this.searchInput)==null||e.after(this.autosuggestContainer))}actionButtonInit(){this.actionButton=document.getElementById("searchstax-search-input-action-button"),this.actionButton&&this.actionButton.addEventListener("click",()=>{var e;this.buttonState==="search"?this.executeSearch(((e=this.searchInput)==null?void 0:e.value)??""):this.buttonState==="close"&&this.searchInput&&(this.searchInput.value="",this.executeSearch(""))})}attachSubscriptions(){this.dataLayer.$searchTermChange.subscribe(()=>{this.handleSearchTermChange()}),this.dataLayer.$loadingChange.subscribe(()=>{this.handleLoadingChange()}),this.dataLayer.$searchAutosuggest.subscribe(e=>{e&&this.appendSuggestions(e)}),this.dataLayer.$searchObject.subscribe(e=>{e.query!=="undefined"&&e.query!==void 0&&e.query!=="*"&&this.searchInput&&(this.searchInput.value=this.cleanSuggestionTerm(e.query??""))})}handleLoadingChange(){this.dataLayer.loading?this.updateActionButtonState("loading"):this.handleSearchTermChange()}handleSearchTermChange(){var e;this.dataLayer.searchTerm===((e=this.searchInput)==null?void 0:e.value)&&this.searchInput.value!==""?this.updateActionButtonState("close"):this.updateActionButtonState("search")}updateActionButtonState(e){if(this.buttonState=e,this.actionButton)switch(this.actionButton.classList.remove("searchstax-spinner-icon"),this.actionButton.classList.remove("searchstax-search-close"),this.actionButton.classList.remove("searchstax-search-icon"),e){case"loading":this.actionButton.classList.add("searchstax-spinner-icon");break;case"search":this.actionButton.classList.add("searchstax-search-icon");break;case"close":this.actionButton.classList.add("searchstax-search-close");break}}selectPreviousAutosuggestItem(){this.selectedAutosuggestItem>0?this.selectedAutosuggestItem--:this.selectedAutosuggestItem=this.autosuggestResults.suggestions.length-1,this.markActiveAutosuggestItem()}selectNextAutosuggestItem(){this.selectedAutosuggestItem<this.autosuggestResults.suggestions.length-1?this.selectedAutosuggestItem++:this.selectedAutosuggestItem=0,this.markActiveAutosuggestItem()}resetAutosuggestSelection(){this.selectedAutosuggestItem=-1,this.markActiveAutosuggestItem()}markActiveAutosuggestItem(){const e=document.getElementsByClassName("searchstax-autosuggest-item");for(let t=0;t<e.length;t++){const a=e[t];t===this.selectedAutosuggestItem?a.classList.add("active"):a.classList.remove("active")}}inputKeyupEvent(e){const t=e.key;this.currentInputValue=e.target.value,t==="Enter"?this.suggestionChosen():t==="Escape"?this.hideAutosuggest():t==="ArrowUp"?this.selectPreviousAutosuggestItem():t==="ArrowDown"?this.selectNextAutosuggestItem():this.autosuggestHandling(e),this.handleSearchTermChange()}autosuggestHandling(e){e.target&&e.target.value.length>=this.suggestAfterMinChars?this.executeSuggest(e.target.value):this.hideAutosuggest()}inputPasteEvent(e){setTimeout(()=>{this.autosuggestHandling(e),this.handleSearchTermChange()},0)}executeSuggest(e){this.suggestTrigger(e)}executeSearch(e){this.hideAutosuggest(),this.searchTrigger(e===""?"*":e)}suggestionChosen(){this.selectedAutosuggestItem>-1?this.autosuggestItemClicked(this.autosuggestResults.suggestions[this.selectedAutosuggestItem]):this.executeSearch(this.currentInputValue)}hideAutosuggest(){setTimeout(()=>{this.autosuggestContainer&&(this.autosuggestContainer.innerHTML="",this.autosuggestContainer.classList.add("hidden")),this.resetAutosuggestSelection()},100)}cleanSuggestionTerm(e){return w.removeXSSRiskyTags(e.replace(/(<([^>]+)>)/gi,"")).trim()}autosuggestItemClicked(e){this.searchInput.value=this.cleanSuggestionTerm(e.term??""),this.executeSearch(this.cleanSuggestionTerm(e.term))}createAutosuggestItem(e){var r,s,i;const t=document.createElement("div");t.classList.add("searchstax-autosuggest-item"),t.addEventListener("click",()=>{this.autosuggestItemClicked(e)}),t.addEventListener("mouseenter",()=>{this.onSuggestionEnter(e)});const a=((s=(r=this.config.templates)==null?void 0:r.autosuggestItemTemplate)==null?void 0:s.template)||((i=d.searchInput.autosuggestItemTemplate)==null?void 0:i.template);return t.innerHTML=f.render(a,e),t}onSuggestionEnter(e){var t;this.selectedAutosuggestItem=((t=this.autosuggestResults)==null?void 0:t.suggestions.indexOf(e))||0,this.markActiveAutosuggestItem()}appendSuggestions(e){if(this.autosuggestContainer){this.autosuggestContainer.innerHTML="",this.autosuggestContainer.classList.remove("hidden");for(const t in e.suggest)if(Object.prototype.hasOwnProperty.call(e.suggest,t)){const a=e.suggest[t];for(const r in a)if(Object.prototype.hasOwnProperty.call(a,r)){const s=a[r];this.autosuggestResults=s,s.numFound>0?s.suggestions.forEach(i=>{this.autosuggestContainer.appendChild(this.createAutosuggestItem(i))}):this.autosuggestContainer.classList.add("hidden")}}}}}class Me{constructor(e){n(this,"dataLayer");n(this,"config");n(this,"linkClickCallback");n(this,"searchCallback");n(this,"containerId");n(this,"searchResultsMainContainer");n(this,"searchResultsContainer");n(this,"searchResultLinks",[]);this.linkClickCallback=e.linkClickCallback,this.searchCallback=e.searchTrigger,this.dataLayer=e.dataLayer,this.config=e.config,this.containerId=e.containerId;const t=document.getElementById(this.containerId);if(t)this.searchResultsMainContainer=t;else throw new Error(`Search Results Main Container with id ${this.containerId} not found`);this.initializeSubscriptions(),this.renderMainTemplate()}initializeSubscriptions(){this.dataLayer.$searchResults.subscribe(e=>{e&&this.searchResultsContainer&&this.renderResults(e)})}changeTemplate(){this.dataLayer.searchResults&&this.renderResults(this.dataLayer.searchResults)}renderNoResultsTemplate(){var a,r,s,i,c;const e=((s=(r=(a=this.config)==null?void 0:a.templates)==null?void 0:r.noSearchResultTemplate)==null?void 0:s.template)||((i=d.searchResults.noSearchResultTemplate)==null?void 0:i.template),t=((c=this.dataLayer.searchResultsMetadata)==null?void 0:c.spellingSuggestion)??"";if(this.dataLayer.renderingEngine===C.mustache&&this.searchResultsContainer&&(this.searchResultsContainer.innerHTML=f.render(e,{spellingSuggestion:t,searchTerm:this.dataLayer.searchTerm})),t&&this.searchResultsContainer){const l=this.searchResultsContainer.querySelector("a");l&&l.addEventListener("click",h=>{h.preventDefault(),h.stopPropagation(),this.searchCallback(t)})}}renderResults(e){var t,a,r,s;if(this.dataLayer.renderingEngine===C.mustache&&this.searchResultsContainer)if(this.removeLinkClickEvents(),e.length===0)this.renderNoResultsTemplate();else{const i=((r=(a=(t=this.config)==null?void 0:t.templates)==null?void 0:a.searchResultTemplate)==null?void 0:r.template)||((s=d.searchResults.searchResultTemplate)==null?void 0:s.template),c=e.map(l=>f.render(i,l));this.searchResultsContainer.innerHTML=c.join(""),this.searchResultLinks=Array.from(this.searchResultsContainer.querySelectorAll(`[${this.uniqueIdAttribute}]`)),this.attachLinkClickEvents()}}removeLinkClickEvents(){this.searchResultLinks.forEach(e=>{e.removeEventListener("click",()=>{})})}get uniqueIdAttribute(){var e,t,a,r;return((a=(t=(e=this.config)==null?void 0:e.templates)==null?void 0:t.searchResultTemplate)==null?void 0:a.searchResultUniqueIdAttribute)||((r=d.searchResults.searchResultTemplate)==null?void 0:r.searchResultUniqueIdAttribute)}attachLinkClickEvents(){this.searchResultLinks.forEach(e=>{e.addEventListener("click",t=>{t.preventDefault(),t.stopPropagation();const a=e.getAttribute(this.uniqueIdAttribute)??"";a&&this.linkClickCallback(a)})})}renderMainTemplate(){var t,a,r,s;const e=((r=(a=(t=this.config)==null?void 0:t.templates)==null?void 0:a.mainTemplate)==null?void 0:r.template)||((s=d.searchResults.mainTemplate)==null?void 0:s.template);this.dataLayer.renderingEngine===C.mustache&&(this.searchResultsMainContainer.innerHTML=f.render(e,{})),setTimeout(()=>{var l,h,u,g,p,y,L;const i=(u=(h=(l=this.config)==null?void 0:l.templates)==null?void 0:h.mainTemplate)!=null&&u.searchResultsContainerId?(y=(p=(g=this.config)==null?void 0:g.templates)==null?void 0:p.mainTemplate)==null?void 0:y.searchResultsContainerId:(L=d.searchResults.mainTemplate)==null?void 0:L.searchResultsContainerId,c=document.getElementById(i);if(c)this.searchResultsContainer=c;else throw new Error(`Search Results Container with id ${i} not found`)},0)}}class Ee{constructor(e){n(this,"dataLayer");n(this,"config");n(this,"containerId");n(this,"selectId");n(this,"searchSortingMainContainer",null);var t,a;this.dataLayer=e.dataLayer,this.config=e.config,this.containerId=e.containerId,this.selectId=((a=(t=this.config.templates)==null?void 0:t.main)==null?void 0:a.selectId)||d.sorting.main.selectId,this.searchSortingMainContainer=document.getElementById(this.containerId),this.initializeSubscriptions(),this.renderMainTemplate(this.generateTemplateData())}initializeSubscriptions(){this.dataLayer.$searchResults.subscribe(e=>{e&&this.renderMainTemplate(this.generateTemplateData())})}generateTemplateData(){return{...this.dataLayer.parsedData.data}}setOrderQuery(e){const t=this.dataLayer.searchObject;t&&(t.order=e,this.dataLayer.setSearchObject(t))}markOptionSelected(){const e=document.getElementById(this.selectId);if(e){const t=e.querySelector(`option[value="${decodeURIComponent(this.dataLayer.searchObject.order)}"]`);t&&(t.selected=!0)}}renderMainTemplate(e){var a,r,s;const t=((s=(r=(a=this.config)==null?void 0:a.templates)==null?void 0:r.main)==null?void 0:s.template)||d.sorting.main.template;if(this.dataLayer.renderingEngine===C.mustache){this.searchSortingMainContainer.innerHTML=f.render(t,e),this.markOptionSelected();const i=document.getElementById(this.selectId);i&&i.addEventListener("change",c=>{this.setOrderQuery(c.target.value)})}}}class we{constructor(e=C.mustache){n(this,"routerEnabled",!1);n(this,"cachedQuery","");n(this,"routerHelper");n(this,"searchHelper");n(this,"searchResultsConfig");n(this,"searchPaginationConfig");n(this,"searchFeedbackConfig");n(this,"searchSortingConfig");n(this,"searchFacetsConfig");n(this,"relatedSearchesConfig");n(this,"externalPromotionsConfig");n(this,"searchInputWidget");n(this,"searchResultsWidget");n(this,"searchFacetsWidget");n(this,"searchPaginationWidget");n(this,"searchFeedbackWidget");n(this,"searchSortingWidget");n(this,"relatedSearchesWidget");n(this,"externalPromotionsWidget");n(this,"dataLayer",new J(Y.getOrSetCookie("searchstax_session_id")));n(this,"firstRequest",!0);e&&this.dataLayer.setRenderingEngine(e),this.handleHooks()}setRenderingEngine(e=C.mustache){this.dataLayer.setRenderingEngine(e)}handleHooks(){var e,t;(t=(e=this.dataLayer.searchstaxConfig)==null?void 0:e.hooks)!=null&&t.afterSearch&&this.dataLayer.$searchResults.subscribe(a=>{this.dataLayer.searchstaxConfig.hooks.afterSearch(a)}),this.dataLayer.$searchObject.subscribe(a=>{a.query!==""&&this.search(a)}),this.dataLayer.$searchResults.subscribe(a=>{a&&this.dataLayer.searchResultsMetadata&&j.trackSearch({...this.dataLayer.parsedData.trackingData,impressions:this.dataLayer.searchResultsMetadata.impressions})})}initialize(e){var t,a;e.autoCorrect===!1&&(this.dataLayer.autoCorrect=!1),this.dataLayer.searchstaxConfig||(this.dataLayer.setSearchstaxConfig(e),this.searchHelper=new G({...e,sessionId:this.dataLayer.sessionId},this.dataLayer)),((t=e.router)==null?void 0:t.enabled)===void 0||((a=e.router)==null?void 0:a.enabled)===!0?(this.routerEnabled=!0,this.routerHelper=new K(e.router?e.router:{enabled:!0}),this.dataLayer.setSearchObject(this.routerHelper.urlToSearchObject(window.location.href)),addEventListener("popstate",()=>{this.routerHelper&&this.dataLayer.setSearchObject(this.routerHelper.urlToSearchObject(window.location.href))})):this.routerHelper=new K({})}search(e){if(this.searchHelper&&e.query!==""&&e.query!==void 0&&e.query!=="undefined"){const t=this.dataLayer.forceNotCorrect;this.searchHelper.search(e,this.parseSearchResultsResponse.bind(this),this.firstRequest,t),this.firstRequest=!1,this.getRelatedSearches()}}getRelatedSearches(){this.searchHelper&&this.relatedSearchesConfig&&this.searchHelper.getRelatedSearches(this.dataLayer.searchObject,this.relatedSearchesConfig.relatedSearchesURL,this.relatedSearchesConfig.relatedSearchesAPIKey,this.parseRelatedSearchesResponse.bind(this))}parseRelatedSearchesResponse(e){var s;const a=(((s=e.response)==null?void 0:s.docs)??[]).map((i,c)=>({...i,position:c+1})),r=[];for(const i of a)r.push({relatedSearch:i.related_search,position:i.position});this.dataLayer.searchResultsMetadata&&j.trackRelatedSearches({...this.dataLayer.parsedData.trackingData,impressions:r}),this.dataLayer.setSearchRelatedSearches(a)}handleRouter(){this.routerEnabled&&this.routerHelper.updateUrl(this.dataLayer.searchObject)}parseSearchResultsResponse(e){var s,i;this.handleRouter();let t=D.combineResultsWithMetadata(e),a=D.extractFacets(e);this.dataLayer.setSearchFacets(a),(i=(s=this.dataLayer.searchstaxConfig)==null?void 0:s.hooks)!=null&&i.afterSearch&&(t=this.dataLayer.searchstaxConfig.hooks.afterSearch(t)),this.dataLayer.setSearchExternalPromotions(e.externalLinks??[]);const r=D.extractSearchResultsMetadata(e);this.dataLayer.setSearchResultsMetadata(r),this.dataLayer.setSearchResults(t)}cacheFacets(){var e;(e=this.searchHelper)==null||e.cacheFacets()}parseSuggestSuggestResponse(e){var a,r;let t=e;(r=(a=this.dataLayer.searchInputConfig)==null?void 0:a.hooks)!=null&&r.afterAutosuggest&&(t=this.dataLayer.searchInputConfig.hooks.afterAutosuggest(e)),this.dataLayer.setSearchAutosuggest(t)}suggest(e,t){this.searchHelper&&this.searchHelper.suggest(e,this.parseSuggestSuggestResponse.bind(this),t)}changeLanguage(e){this.searchHelper&&this.dataLayer.setLanguage(e)}addSearchInputWidget(e,t){this.dataLayer.searchInputConfig||(this.dataLayer.setSearchInputConfig(t),this.searchInputWidget=new Pe({containerId:e,config:t,searchTrigger:this.executeSearch.bind(this),suggestTrigger:this.executeSuggest.bind(this),dataLayer:this.dataLayer}))}addSearchResultsWidget(e,t){this.searchResultsConfig||(this.searchResultsConfig=t,this.searchResultsWidget=new Me({containerId:e,linkClickCallback:this.executeLinkClick.bind(this),searchTrigger:this.executeSearch.bind(this),config:t,dataLayer:this.dataLayer}))}addPaginationWidget(e,t){this.searchPaginationConfig=t,this.searchPaginationWidget=new ke({containerId:e,config:t,dataLayer:this.dataLayer,routerHelper:this.routerHelper})}addSearchFeedbackWidget(e,t){this.searchFeedbackConfig||(this.searchFeedbackConfig=t,this.searchFeedbackWidget=new Ie({containerId:e,config:t,dataLayer:this.dataLayer,searchTrigger:this.executeSearch.bind(this)}))}addSearchSortingWidget(e,t){this.searchSortingConfig||(this.searchSortingConfig=t,this.searchSortingWidget=new Ee({containerId:e,config:t,dataLayer:this.dataLayer}))}addRelatedSearchesWidget(e,t){this.relatedSearchesConfig||(this.relatedSearchesConfig=t,this.relatedSearchesWidget=new Re({containerId:e,config:t,dataLayer:this.dataLayer,trackRelatedSearchClick:this.trackRelatedSearchClick.bind(this)}),setTimeout(()=>{this.getRelatedSearches()},0))}addExternalPromotionsWidget(e,t){this.externalPromotionsConfig||(this.externalPromotionsConfig=t,this.externalPromotionsWidget=new xe({containerId:e,config:t,dataLayer:this.dataLayer}))}addFacetsWidget(e,t){this.searchFacetsConfig=t,this.searchFacetsWidget=new Te({containerId:e,config:t,dataLayer:this.dataLayer,routerHelper:this.routerHelper},this.cacheFacets.bind(this))}executeSearch(e,t){var s,i;const a={...this.dataLayer.searchObject};a.query=w.removeXSSRiskyTags(e),a.page=1,a.facets=[],this.dataLayer.forceNotCorrect=!!t;let r=(s=this.routerHelper)==null?void 0:s.searchObjectToParams(a);r&&(r=(i=this.routerHelper)==null?void 0:i.extractParamsThatDoNotStartWithRouteName(r)),r&&(a.additionalProps=Object.keys(r).map(c=>r?{key:c,value:r[c]}:{key:"",value:""})),this.dataLayer.setSearchObject(a)}executeSuggest(e){var a,r;let t={term:e,queryParams:[]};(r=(a=this.dataLayer.searchInputConfig)==null?void 0:a.hooks)!=null&&r.beforeAutosuggest&&(t=this.dataLayer.searchInputConfig.hooks.beforeAutosuggest(t)),t&&t.term!==void 0&&t.queryParams!==void 0&&this.suggest(t.term,t.queryParams)}trackRelatedSearchClick(e){this.dataLayer.searchResultsMetadata&&this.dataLayer.searchRelatedSearches&&j.trackRelatedSearchClick({...this.dataLayer.parsedData.trackingData,relatedSearch:e})}executeLinkClick(e){var a,r;let t=D.findResultByUniqueId(e,this.dataLayer.searchResults??[]);t&&((r=(a=this.searchResultsConfig)==null?void 0:a.hooks)!=null&&r.afterLinkClick&&(t=this.searchResultsConfig.hooks.afterLinkClick(t)),t&&this.dataLayer.searchResultsMetadata&&(j.trackClick({result:t,...this.dataLayer.parsedData.trackingData}),setTimeout(()=>{window.location.href=(t==null?void 0:t.url)??""},0)))}setPage(e){var t;(t=this.searchPaginationWidget)==null||t.goToPage(e)}changeResultTemplate(e){var t,a,r;this.searchResultsConfig&&(this.searchResultsConfig.templates=(t=this.searchResultsConfig)!=null&&t.templates?{...(a=this.searchResultsConfig)==null?void 0:a.templates,...e}:e,(r=this.searchResultsWidget)==null||r.changeTemplate())}}F.Searchstax=we,Object.defineProperty(F,Symbol.toStringTag,{value:"Module"})})(this["@searchstaxInc/searchstudioUxJs"]=this["@searchstaxInc/searchstudioUxJs"]||{});
|
|
@@ -112,7 +112,7 @@ class J {
|
|
|
112
112
|
};
|
|
113
113
|
}
|
|
114
114
|
}
|
|
115
|
-
class
|
|
115
|
+
class M {
|
|
116
116
|
static deepEqual(e, t) {
|
|
117
117
|
const a = Object.keys(e), r = Object.keys(t);
|
|
118
118
|
if (a.length !== r.length)
|
|
@@ -200,10 +200,10 @@ class X {
|
|
|
200
200
|
this.$loadingChange.setValue(e);
|
|
201
201
|
}
|
|
202
202
|
setSearchResults(e) {
|
|
203
|
-
|
|
203
|
+
M.deepEqual(e, this.searchResults ?? []) || this.$searchResults.setValue(e);
|
|
204
204
|
}
|
|
205
205
|
setSearchResultsMetadata(e) {
|
|
206
|
-
|
|
206
|
+
M.deepEqual(e, this.searchResultsMetadata ?? {}) || this.$searchResultsMetadata.setValue(e);
|
|
207
207
|
}
|
|
208
208
|
setSearchAutosuggest(e) {
|
|
209
209
|
this.$searchAutosuggest.setValue(e);
|
|
@@ -211,19 +211,19 @@ class X {
|
|
|
211
211
|
setSearchObject(e) {
|
|
212
212
|
var a, r;
|
|
213
213
|
let t = e;
|
|
214
|
-
(r = (a = this.searchstaxConfig) == null ? void 0 : a.hooks) != null && r.beforeSearch && t && (t = this.searchstaxConfig.hooks.beforeSearch(t)), t && (!
|
|
214
|
+
(r = (a = this.searchstaxConfig) == null ? void 0 : a.hooks) != null && r.beforeSearch && t && (t = this.searchstaxConfig.hooks.beforeSearch(t)), t && (!M.deepEqual(t, this.searchObject ?? {}) || this.forceNotCorrect) && this.$searchObject.setValue(t);
|
|
215
215
|
}
|
|
216
216
|
setSearchFacets(e) {
|
|
217
|
-
|
|
217
|
+
M.deepEqual(e, this.searchFacets ?? []) || this.$searchFacets.setValue(e);
|
|
218
218
|
}
|
|
219
219
|
setSearchFacetsCached(e) {
|
|
220
|
-
|
|
220
|
+
M.deepEqual(e, this.searchFacetsCached ?? []) || this.$searchFacetsCached.setValue(e);
|
|
221
221
|
}
|
|
222
222
|
setSearchRelatedSearches(e) {
|
|
223
|
-
|
|
223
|
+
M.deepEqual(e, this.searchRelatedSearches ?? []) || this.$searchRelatedSearches.setValue(e);
|
|
224
224
|
}
|
|
225
225
|
setSearchExternalPromotions(e) {
|
|
226
|
-
|
|
226
|
+
M.deepEqual(e, this.searchExternalPromotions ?? []) || this.$searchExternalPromotions.setValue(e);
|
|
227
227
|
}
|
|
228
228
|
setLanguage(e) {
|
|
229
229
|
this.$language.setValue(e);
|
|
@@ -768,8 +768,8 @@ function ge(o, e) {
|
|
|
768
768
|
b(e || m.tags);
|
|
769
769
|
for (var f = new V(o), C, v, S, R, P, L; !f.eos(); ) {
|
|
770
770
|
if (C = f.pos, S = f.scanUntil(g), S)
|
|
771
|
-
for (var
|
|
772
|
-
R = S.charAt(
|
|
771
|
+
for (var E = 0, F = S.length; E < F; ++E)
|
|
772
|
+
R = S.charAt(E), ne(R) ? (s.push(r.length), l += R) : (c = !0, t = !0, l += " "), r.push(["text", R, C, C + 1]), C += 1, R === `
|
|
773
773
|
` && (u(), l = "", h = 0, t = !1);
|
|
774
774
|
if (!f.scan(g))
|
|
775
775
|
break;
|
|
@@ -1392,8 +1392,8 @@ class ke {
|
|
|
1392
1392
|
const i = this.dataLayer.searchObject;
|
|
1393
1393
|
let c = [...i.facets];
|
|
1394
1394
|
const l = this.extractFacetValue(t);
|
|
1395
|
-
s.checked ? c.find((u) =>
|
|
1396
|
-
(h) => !
|
|
1395
|
+
s.checked ? c.find((u) => M.deepEqual(u, l) ? u : !1) || (this.config.facetingType === "tabs" && (c = c.filter((u) => u.name !== l.name)), c.push(l)) : c = c.filter(
|
|
1396
|
+
(h) => !M.deepEqual(h, l)
|
|
1397
1397
|
), setTimeout(() => {
|
|
1398
1398
|
this.dataLayer.setSearchObject({ ...i, facets: c, page: 1 }), this.config.facetingType === "tabs" && this.renderMainTemplate(this.generateTemplateData(), !0);
|
|
1399
1399
|
}, 0);
|
|
@@ -1499,21 +1499,21 @@ class ke {
|
|
|
1499
1499
|
var l, h, u, g, p, y, b, f, C, v, S, R, P, L;
|
|
1500
1500
|
const a = document.createElement("div");
|
|
1501
1501
|
a.classList.add("searchstax-facet-value-container"), e.disabled && a.classList.add("searchstax-facet-value-disabled");
|
|
1502
|
-
const s = !!((l = this.dataLayer.searchObject.facets) != null && l.find((
|
|
1502
|
+
const s = !!((l = this.dataLayer.searchObject.facets) != null && l.find((E) => M.deepEqual(E, this.extractFacetValue(e)))), i = ((g = (u = (h = this.config) == null ? void 0 : h.templates) == null ? void 0 : u.facetItemTemplate) == null ? void 0 : g.template) || ((p = d.facets.facetItemTemplate) == null ? void 0 : p.template);
|
|
1503
1503
|
a.innerHTML = m.render(
|
|
1504
1504
|
i,
|
|
1505
1505
|
{ ...e, isChecked: s }
|
|
1506
1506
|
);
|
|
1507
1507
|
let c = (y = d.facets.facetItemTemplate) == null ? void 0 : y.checkTriggerClasses;
|
|
1508
|
-
c = ((C = (f = (b = this.config) == null ? void 0 : b.templates) == null ? void 0 : f.facetItemTemplate) == null ? void 0 : C.checkTriggerClasses) || c, c.forEach((
|
|
1508
|
+
c = ((C = (f = (b = this.config) == null ? void 0 : b.templates) == null ? void 0 : f.facetItemTemplate) == null ? void 0 : C.checkTriggerClasses) || c, c.forEach((E) => {
|
|
1509
1509
|
var F;
|
|
1510
|
-
(F = a.querySelector("." +
|
|
1510
|
+
(F = a.querySelector("." + E)) == null || F.addEventListener("click", (T) => {
|
|
1511
1511
|
this.onFacetSelect(T, e, a);
|
|
1512
1512
|
});
|
|
1513
1513
|
}), (L = a.querySelector(
|
|
1514
1514
|
"." + (((R = (S = (v = this.config) == null ? void 0 : v.templates) == null ? void 0 : S.facetItemTemplate) == null ? void 0 : R.inputCheckboxClass) || ((P = d.facets.facetItemTemplate) == null ? void 0 : P.inputCheckboxClass))
|
|
1515
|
-
)) == null || L.addEventListener("click", (
|
|
1516
|
-
this.onFacetSelect(
|
|
1515
|
+
)) == null || L.addEventListener("click", (E) => {
|
|
1516
|
+
this.onFacetSelect(E, e, a, !0);
|
|
1517
1517
|
}), t.appendChild(a);
|
|
1518
1518
|
}
|
|
1519
1519
|
createHasMoreComponent(e, t, a) {
|
|
@@ -1542,7 +1542,7 @@ class ke {
|
|
|
1542
1542
|
}
|
|
1543
1543
|
renderMainTemplate(e, t) {
|
|
1544
1544
|
var a, r, s, i, c, l, h, u, g, p, y;
|
|
1545
|
-
if (e && (!
|
|
1545
|
+
if (e && (!M.deepEqual(this.cachedData ?? {}, e) || t)) {
|
|
1546
1546
|
this.cachedData = e;
|
|
1547
1547
|
const b = ((s = (r = (a = this.config) == null ? void 0 : a.templates) == null ? void 0 : r.mainTemplateDesktop) == null ? void 0 : s.template) || ((i = d.facets.mainTemplateDesktop) == null ? void 0 : i.template);
|
|
1548
1548
|
if (this.dataLayer.renderingEngine === x.mustache && this.searchFacetsMainContainer) {
|
|
@@ -1649,9 +1649,9 @@ class ke {
|
|
|
1649
1649
|
if (e) {
|
|
1650
1650
|
const L = document.createElement("div");
|
|
1651
1651
|
L.classList.add("searchstax-facets-container-mobile");
|
|
1652
|
-
const
|
|
1652
|
+
const E = ((r = (a = (t = this.config) == null ? void 0 : t.templates) == null ? void 0 : a.mainTemplateMobile) == null ? void 0 : r.template) || ((s = d.facets.mainTemplateMobile) == null ? void 0 : s.template);
|
|
1653
1653
|
if (this.dataLayer.renderingEngine === x.mustache) {
|
|
1654
|
-
if (L.innerHTML = m.render(
|
|
1654
|
+
if (L.innerHTML = m.render(E, {
|
|
1655
1655
|
...e,
|
|
1656
1656
|
overlayOpened: this.overlayOpened
|
|
1657
1657
|
}), (i = this.searchFacetsMainContainer) == null || i.appendChild(L), (l = (c = this.config) == null ? void 0 : c.templates) != null && l.mainTemplateMobile)
|
|
@@ -1848,7 +1848,7 @@ class Pe {
|
|
|
1848
1848
|
}, 0));
|
|
1849
1849
|
}
|
|
1850
1850
|
}
|
|
1851
|
-
class
|
|
1851
|
+
class Ee {
|
|
1852
1852
|
constructor(e) {
|
|
1853
1853
|
n(this, "dataLayer");
|
|
1854
1854
|
n(this, "config");
|
|
@@ -1883,14 +1883,12 @@ class Me {
|
|
|
1883
1883
|
}
|
|
1884
1884
|
createAutosuggestContainer() {
|
|
1885
1885
|
var e;
|
|
1886
|
-
this.autosuggestContainer = document.createElement("div"), this.autosuggestContainer.classList.add("searchstax-autosuggest-container"), this.autosuggestContainer.addEventListener("mouseleave", () => {
|
|
1886
|
+
this.dataLayer.renderingEngine === x.mustache && (this.autosuggestContainer = document.createElement("div"), this.autosuggestContainer.classList.add("searchstax-autosuggest-container"), this.autosuggestContainer.addEventListener("mouseleave", () => {
|
|
1887
1887
|
this.resetAutosuggestSelection(), this.markActiveAutosuggestItem();
|
|
1888
|
-
}), (e = this.searchInput) == null || e.after(this.autosuggestContainer);
|
|
1888
|
+
}), (e = this.searchInput) == null || e.after(this.autosuggestContainer));
|
|
1889
1889
|
}
|
|
1890
1890
|
actionButtonInit() {
|
|
1891
|
-
this.actionButton = document.getElementById(
|
|
1892
|
-
"searchstax-search-input-action-button"
|
|
1893
|
-
), this.actionButton && this.actionButton.addEventListener("click", () => {
|
|
1891
|
+
this.actionButton = document.getElementById("searchstax-search-input-action-button"), this.actionButton && this.actionButton.addEventListener("click", () => {
|
|
1894
1892
|
var e;
|
|
1895
1893
|
this.buttonState === "search" ? this.executeSearch(((e = this.searchInput) == null ? void 0 : e.value) ?? "") : this.buttonState === "close" && this.searchInput && (this.searchInput.value = "", this.executeSearch(""));
|
|
1896
1894
|
});
|
|
@@ -1900,11 +1898,9 @@ class Me {
|
|
|
1900
1898
|
this.handleSearchTermChange();
|
|
1901
1899
|
}), this.dataLayer.$loadingChange.subscribe(() => {
|
|
1902
1900
|
this.handleLoadingChange();
|
|
1903
|
-
}), this.dataLayer.$searchAutosuggest.subscribe(
|
|
1904
|
-
(e)
|
|
1905
|
-
|
|
1906
|
-
}
|
|
1907
|
-
), this.dataLayer.$searchObject.subscribe((e) => {
|
|
1901
|
+
}), this.dataLayer.$searchAutosuggest.subscribe((e) => {
|
|
1902
|
+
e && this.appendSuggestions(e);
|
|
1903
|
+
}), this.dataLayer.$searchObject.subscribe((e) => {
|
|
1908
1904
|
e.query !== "undefined" && e.query !== void 0 && e.query !== "*" && this.searchInput && (this.searchInput.value = this.cleanSuggestionTerm(e.query ?? ""));
|
|
1909
1905
|
});
|
|
1910
1906
|
}
|
|
@@ -1939,9 +1935,7 @@ class Me {
|
|
|
1939
1935
|
this.selectedAutosuggestItem = -1, this.markActiveAutosuggestItem();
|
|
1940
1936
|
}
|
|
1941
1937
|
markActiveAutosuggestItem() {
|
|
1942
|
-
const e = document.getElementsByClassName(
|
|
1943
|
-
"searchstax-autosuggest-item"
|
|
1944
|
-
);
|
|
1938
|
+
const e = document.getElementsByClassName("searchstax-autosuggest-item");
|
|
1945
1939
|
for (let t = 0; t < e.length; t++) {
|
|
1946
1940
|
const a = e[t];
|
|
1947
1941
|
t === this.selectedAutosuggestItem ? a.classList.add("active") : a.classList.remove("active");
|
|
@@ -1966,9 +1960,7 @@ class Me {
|
|
|
1966
1960
|
this.hideAutosuggest(), this.searchTrigger(e === "" ? "*" : e);
|
|
1967
1961
|
}
|
|
1968
1962
|
suggestionChosen() {
|
|
1969
|
-
this.selectedAutosuggestItem > -1 ? this.autosuggestItemClicked(
|
|
1970
|
-
this.autosuggestResults.suggestions[this.selectedAutosuggestItem]
|
|
1971
|
-
) : this.executeSearch(this.currentInputValue);
|
|
1963
|
+
this.selectedAutosuggestItem > -1 ? this.autosuggestItemClicked(this.autosuggestResults.suggestions[this.selectedAutosuggestItem]) : this.executeSearch(this.currentInputValue);
|
|
1972
1964
|
}
|
|
1973
1965
|
hideAutosuggest() {
|
|
1974
1966
|
setTimeout(() => {
|
|
@@ -1987,12 +1979,15 @@ class Me {
|
|
|
1987
1979
|
t.classList.add("searchstax-autosuggest-item"), t.addEventListener("click", () => {
|
|
1988
1980
|
this.autosuggestItemClicked(e);
|
|
1989
1981
|
}), t.addEventListener("mouseenter", () => {
|
|
1990
|
-
|
|
1991
|
-
this.selectedAutosuggestItem = ((c = this.autosuggestResults) == null ? void 0 : c.suggestions.indexOf(e)) || 0, this.markActiveAutosuggestItem();
|
|
1982
|
+
this.onSuggestionEnter(e);
|
|
1992
1983
|
});
|
|
1993
1984
|
const a = ((s = (r = this.config.templates) == null ? void 0 : r.autosuggestItemTemplate) == null ? void 0 : s.template) || ((i = d.searchInput.autosuggestItemTemplate) == null ? void 0 : i.template);
|
|
1994
1985
|
return t.innerHTML = m.render(a, e), t;
|
|
1995
1986
|
}
|
|
1987
|
+
onSuggestionEnter(e) {
|
|
1988
|
+
var t;
|
|
1989
|
+
this.selectedAutosuggestItem = ((t = this.autosuggestResults) == null ? void 0 : t.suggestions.indexOf(e)) || 0, this.markActiveAutosuggestItem();
|
|
1990
|
+
}
|
|
1996
1991
|
appendSuggestions(e) {
|
|
1997
1992
|
if (this.autosuggestContainer) {
|
|
1998
1993
|
this.autosuggestContainer.innerHTML = "", this.autosuggestContainer.classList.remove("hidden");
|
|
@@ -2003,16 +1998,14 @@ class Me {
|
|
|
2003
1998
|
if (Object.prototype.hasOwnProperty.call(a, r)) {
|
|
2004
1999
|
const s = a[r];
|
|
2005
2000
|
this.autosuggestResults = s, s.numFound > 0 ? s.suggestions.forEach((i) => {
|
|
2006
|
-
this.autosuggestContainer.appendChild(
|
|
2007
|
-
this.createAutosuggestItem(i)
|
|
2008
|
-
);
|
|
2001
|
+
this.autosuggestContainer.appendChild(this.createAutosuggestItem(i));
|
|
2009
2002
|
}) : this.autosuggestContainer.classList.add("hidden");
|
|
2010
2003
|
}
|
|
2011
2004
|
}
|
|
2012
2005
|
}
|
|
2013
2006
|
}
|
|
2014
2007
|
}
|
|
2015
|
-
class
|
|
2008
|
+
class Me {
|
|
2016
2009
|
constructor(e) {
|
|
2017
2010
|
n(this, "dataLayer");
|
|
2018
2011
|
n(this, "config");
|
|
@@ -2268,7 +2261,7 @@ class qe {
|
|
|
2268
2261
|
this.searchHelper && this.dataLayer.setLanguage(e);
|
|
2269
2262
|
}
|
|
2270
2263
|
addSearchInputWidget(e, t) {
|
|
2271
|
-
this.dataLayer.searchInputConfig || (this.dataLayer.setSearchInputConfig(t), this.searchInputWidget = new
|
|
2264
|
+
this.dataLayer.searchInputConfig || (this.dataLayer.setSearchInputConfig(t), this.searchInputWidget = new Ee({
|
|
2272
2265
|
containerId: e,
|
|
2273
2266
|
config: t,
|
|
2274
2267
|
searchTrigger: this.executeSearch.bind(this),
|
|
@@ -2277,7 +2270,7 @@ class qe {
|
|
|
2277
2270
|
}));
|
|
2278
2271
|
}
|
|
2279
2272
|
addSearchResultsWidget(e, t) {
|
|
2280
|
-
this.searchResultsConfig || (this.searchResultsConfig = t, this.searchResultsWidget = new
|
|
2273
|
+
this.searchResultsConfig || (this.searchResultsConfig = t, this.searchResultsWidget = new Me({
|
|
2281
2274
|
containerId: e,
|
|
2282
2275
|
linkClickCallback: this.executeLinkClick.bind(this),
|
|
2283
2276
|
searchTrigger: this.executeSearch.bind(this),
|