1class FacetFiltersForm extends HTMLElement{constructor(){super(),this.onActiveFilterClick=this.onActiveFilterClick.bind(this),this.debouncedOnSubmit=debounce(event=>{this.onSubmitHandler(event)},500),this.querySelector("form").addEventListener("input",this.debouncedOnSubmit.bind(this));const facetWrapper=this.querySelector("#FacetsWrapperDesktop");facetWrapper&&facetWrapper.addEventListener("keyup",onKeyUpEscape);const facetButton=this.querySelector(".facets__button-show"),facetsContainer=this.querySelector(".facets__container");if(facetsContainer&&setTimeout(()=>{facetsContainer.style.display="flex"},600),facetButton){if(facetButton.onclick=event=>{let labelHide=event.currentTarget.querySelector(".label-hide"),labelShow=event.currentTarget.querySelector(".label-show");labelHide.classList.toggle("hidden"),labelShow.classList.toggle("hidden");let container=labelHide.closest("form").querySelector(".facets__container");if(container.classList.toggle("active"),document.body.classList.toggle("overflow-hidden"),document.body.classList.toggle("filter-open"),document.querySelector(".facets__container--horizontal:not(.active)")!=null){let horizontalFilters=document.querySelector(".facets__container--horizontal:not(.active)");horizontalFilters.classList.add("visible_container"),setTimeout(()=>horizontalFilters.classList.remove("visible_container"),600)}container.addEventListener("click",()=>{container.querySelector(".facets__wrapper:hover")==null&&(container.classList.remove("active"),document.body.classList.remove("overflow-hidden"),setTimeout(()=>document.body.classList.remove("filter-open"),700))})},document.getElementById("SortBy")!=null){let select=document.getElementById("SortBy");select.addEventListener("click",()=>select.classList.toggle("open")),select.addEventListener("blur",()=>select.classList.remove("open"))}const facetCloseButton=this.querySelector(".facets-modal__close");facetCloseButton.addEventListener("click",()=>{facetCloseButton.closest(".facets__container").classList.remove("active"),document.body.classList.remove("overflow-hidden"),setTimeout(()=>document.body.classList.remove("filter-open"),700)});const collectionGridSection=document.querySelector(".collection-grid-section")||document.querySelector(".section-search");let prevWidth=0;new ResizeObserver(entries=>{const[entry]=entries}).observe(collectionGridSection)}const checkboxes=document.querySelectorAll('#FacetFiltersFormMobile .js-filter input[type="checkbox"]'),removebtn=document.querySelector("#FacetFiltersFormMobile .facets-tag-wrapper");Array.from(checkboxes).some(checkbox=>checkbox.checked)?removebtn?.classList.remove("active"):removebtn?.classList.add("active")}static setListeners(){const onHistoryChange=event=>{const searchParams=event.state?event.state.searchParams:FacetFiltersForm.searchParamsInitial;searchParams!==FacetFiltersForm.searchParamsPrev&&FacetFiltersForm.renderPage(searchParams,null,!1)};window.addEventListener("popstate",onHistoryChange)}static toggleActiveFacets(disable=!0){document.querySelectorAll(".js-facet-remove").forEach(element=>{element.classList.toggle("disabled",disable)})}static renderPage(searchParams,event,updateURLHash=!0){FacetFiltersForm.searchParamsPrev=searchParams;const sections=FacetFiltersForm.getSections(),countContainer=document.getElementById("ProductCount"),countContainerDesktop=document.getElementById("ProductCountDesktop");document.getElementById("ProductGridContainer").querySelector(".collection").classList.add("loading"),countContainer&&countContainer.classList.add("loading"),countContainerDesktop&&countContainerDesktop.classList.add("loading"),sections.forEach(section=>{const url=`${window.location.pathname}?section_id=${section.section}&${searchParams}`,filterDataUrl=element=>element.url===url;FacetFiltersForm.filterData.some(filterDataUrl)?FacetFiltersForm.renderSectionFromCache(filterDataUrl,event):FacetFiltersForm.renderSectionFromFetch(url,event)}),updateURLHash&&FacetFiltersForm.updateURLHash(searchParams)}static renderSectionFromFetch(url,event){fetch(url).then(response=>response.text()).then(responseText=>{const html=responseText;FacetFiltersForm.filterData=[...FacetFiltersForm.filterData,{html,url}],FacetFiltersForm.renderFilters(html,event),FacetFiltersForm.renderProductGridContainer(html),FacetFiltersForm.renderProductCount(html),FacetFiltersForm.rerenderProductSliders()})}
1static renderSectionFromCache(filterDataUrl,event){const html=FacetFiltersForm.filterData.find(filterDataUrl).html;FacetFiltersForm.renderFilters(html,event),FacetFiltersForm.renderProductGridContainer(html),FacetFiltersForm.renderProductCount(html),FacetFiltersForm.rerenderProductSliders()}static renderProductGridContainer(html){document.getElementById("ProductGridContainer").innerHTML=new DOMParser().parseFromString(html,"text/html").getElementById("ProductGridContainer").innerHTML,(document.querySelector(".js-load-more")||document.querySelector(".js-infinite-scroll"))&&loadMore(),colorSwatches()}static renderProductCount(html){const count=new DOMParser().parseFromString(html,"text/html").getElementById("ProductCount").innerHTML,container=document.getElementById("ProductCount"),containerDesktop=document.getElementById("ProductCountDesktop");container.innerHTML=count,container.classList.remove("loading"),containerDesktop&&(containerDesktop.innerHTML=count,containerDesktop.classList.remove("loading"))}static renderFilters(html,event){const parsedHTML=new DOMParser().parseFromString(html,"text/html"),facetDetailsElements=parsedHTML.querySelectorAll("#FacetFiltersForm .js-filter, #FacetFiltersFormMobile .js-filter, #FacetFiltersPillsForm .js-filter"),matchesIndex=element=>{const jsFilter=event?event.target.closest(".js-filter"):void 0;return jsFilter?element.dataset.index===jsFilter.dataset.index:!1},facetsToRender=Array.from(facetDetailsElements).filter(element=>!matchesIndex(element)),countsToRender=Array.from(facetDetailsElements).find(matchesIndex);facetsToRender.forEach(element=>{const filterEl=document.querySelector(`.js-filter[data-index="${element.dataset.index}"]`);filterEl&&(filterEl.innerHTML=element.innerHTML)}),FacetFiltersForm.renderActiveFacets(parsedHTML),FacetFiltersForm.renderAdditionalElements(parsedHTML),countsToRender&&FacetFiltersForm.renderCounts(countsToRender,event.target.closest(".js-filter"));const checkboxes=document.querySelectorAll('#FacetFiltersFormMobile .js-filter input[type="checkbox"]'),removebtn=document.querySelector("#FacetFiltersFormMobile .facets-tag-wrapper");Array.from(checkboxes).some(checkbox=>checkbox.checked)?removebtn?.classList.remove("active"):removebtn?.classList.add("active")}static renderActiveFacets(html){[".active-facets-mobile",".active-facets-desktop"].forEach(selector=>{const activeFacetsElement=html.querySelector(selector);activeFacetsElement&&(document.querySelector(selector).innerHTML=activeFacetsElement.innerHTML)}),FacetFiltersForm.toggleActiveFacets(!1)}static renderAdditionalElements(html){[".mobile-facets__open",".mobile-facets__count",".sorting"].forEach(selector=>{html.querySelector(selector)&&(document.querySelector(selector).innerHTML=html.querySelector(selector).innerHTML)})}static renderCounts(source,target){const targetElement=target.querySelector(".facets__selected"),sourceElement=source.querySelector(".facets__selected"),targetElementAccessibility=target.querySelector(".facets__summary"),sourceElementAccessibility=source.querySelector(".facets__summary");sourceElement&&targetElement&&(target.querySelector(".facets__selected").outerHTML=source.querySelector(".facets__selected").outerHTML),targetElementAccessibility&&sourceElementAccessibility&&(target.querySelector(".facets__summary").outerHTML=source.querySelector(".facets__summary").outerHTML)}static updateURLHash(searchParams){history.pushState({searchParams},"",`${window.location.pathname}${searchParams&&"?".concat(searchParams)}`)}static getSections(){return[{section:document.getElementById("product-grid").dataset.id}]}static rerenderProductSliders(){document.querySelectorAll(".product-card-js").forEach(sli
1der=>{new Swiper(slider,{pagination:{el:".product-pagination .swiper-pagination",clickable:!0},navigation:{nextEl:".product-button-group .swiper-button-next",prevEl:".product-button-group .swiper-button-prev"},allowTouchMove:!0,990:{allowTouchMove:!1}})})}createSearchParams(form){const formData=new FormData(form);return new URLSearchParams(formData).toString()}onSubmitForm(searchParams,event){FacetFiltersForm.renderPage(searchParams,event)}onSubmitHandler(event){event.preventDefault();const sortFilterForms=document.querySelectorAll("facet-filters-form form");if(event.srcElement.className=="mobile-facets__checkbox"){const searchParams=this.createSearchParams(event.target.closest("form"));this.onSubmitForm(searchParams,event)}else{const forms=[],currentForm=event.target.closest("form");sortFilterForms.forEach(form=>{if(form.id==="FacetSortForm"||form.id==="FacetFiltersForm"||form.id==="FacetFiltersFormMobile"||form.id==="FacetSortDrawerForm")if(document.querySelectorAll(".no-js-list").forEach(el=>el.remove()),currentForm===form)forms.push(this.createSearchParams(form));else{const searchParamsWithoutProductType=this.createSearchParams(form)?.split("&")?.filter(element=>!element.startsWith("filter.p.product_type"))?.join("&")||"";forms.push(searchParamsWithoutProductType)}}),this.onSubmitForm(forms.join("&"),event)}}onActiveFilterClick(event){event.preventDefault(),FacetFiltersForm.toggleActiveFacets();const url=event.currentTarget.href.indexOf("?")==-1?"":event.currentTarget.href.slice(event.currentTarget.href.indexOf("?")+1);FacetFiltersForm.renderPage(url),document.querySelector("#FacetFiltersFormMobile .facets-tag-wrapper")?.classList.add("active")}}FacetFiltersForm.filterData=[],FacetFiltersForm.searchParamsInitial=window.location.search.slice(1),FacetFiltersForm.searchParamsPrev=window.location.search.slice(1),customElements.define("facet-filters-form",FacetFiltersForm),FacetFiltersForm.setListeners();class PriceRange extends HTMLElement{constructor(){super(),this.querySelectorAll("input").forEach(element=>element.addEventListener("change",this.onRangeChange.bind(this))),this.setMinAndMaxValues(),this.controlSlider(),this.controlInput()}onRangeChange(event){this.adjustToValidValues(event.currentTarget),this.setMinAndMaxValues()}setMinAndMaxValues(){const inputs=this.querySelectorAll("input"),minInput=inputs[0],maxInput=inputs[1];maxInput.value&&minInput.setAttribute("max",maxInput.value),minInput.value&&maxInput.setAttribute("min",minInput.value),minInput.value===""&&maxInput.setAttribute("min",0),maxInput.value===""&&minInput.setAttribute("max",maxInput.getAttribute("max"))}adjustToValidValues(input){const value=Number(input.value),min=Number(input.getAttribute("min")),max=Number(input.getAttribute("max"));value<min&&(input.value=min),value>max&&(input.value=max)}fillSlider(){document.querySelectorAll(".facets__price .facets__range").forEach(inputWrapper=>{const inputsRange=inputWrapper.querySelectorAll(".field__range"),inputRangeFrom=inputsRange[0],inputRangeTo=inputsRange[1],range=inputRangeTo.max-inputRangeTo.min,fromCurrent=inputRangeFrom.value-inputRangeTo.min,toCurrent=inputRangeTo.value-inputRangeTo.min,minRange=fromCurrent/range*100,maxRange=toCurrent/range*100;inputWrapper.setAttribute("style",`--range-min: ${minRange}%; --range-max: ${maxRange}%`)})}controlSlider(){const inputRangeWrappers=document.querySelectorAll(".facets__price .facets__range"),inputNumberWrappers=document.querySelectorAll(".facets__price .facets__price-wrapper");inputRangeWrappers.forEach((inputWrapper,index)=>{const inputsRange=inputWrapper.querySelectorAll(".field__range"),inputRangeFrom=inputsRange[0],inputRangeTo=inputsRange[1],inputNumberFrom=inputNumberWrappers[index].querySelectorAll(".field__input")[0],inputNumberTo=inputNumberWrappers[index].querySelectorAll(".field__input")[1];inputRangeFrom.oninput=()=>{const from=parseInt(inputRangeFrom.value,10),to=parseInt(inputRangeTo.value,10);from>to?(inputRangeFrom.value=to,inputNumberFrom.value=to):inputNumberFrom.value=from,this.fillSlider()},Number(inputRangeTo.value)<=0?inputRangeTo.style.zIndex=2:inputRangeTo.style.zIndex=0,inputRangeTo.oninput=()=>{const from=parseInt(inputRangeFrom.value,10),to=parseInt(inputRangeTo.value,10);from<=to?(inputRangeTo.value=to,inputNumberTo.value=to):(inputNumberTo.value=from,inputRangeTo.value=from),Number(inputRangeTo.value)<=0?inputRangeTo.style.zIndex=2:inputRangeTo.style.zIndex=0,this.fillSlider()}})}controlInput(){const inputRangeWrappers=document.querySelectorAll(".facets__price .facets__range");document.querySelectorAll(".facets__price .facets__price-wrapper").forEach((inputWrapper,index)=>{const inputsNumber=inputWrapper.querySelectorAll(".field__input"),inputNumberFrom=inputsNumber[0],inputNumberTo=inputsNumber[1],inputRangeFrom=inputRangeWrappers[index].querySelectorAll(".field__range")[0],inputRangeTo=inputRangeWrappers[index].querySelectorAll(".field__range")[1];inputNumberFrom.oninput=()=>{const from=parseInt(inputNumberFrom.value,10),to=parseInt(inputNumberTo.value,10);from>to?(inputRangeFrom.value=to,inputNumberFrom.value=to):inputRangeFrom.value=from,this.fillSlider()},inputNumberTo.oninput=()=>{const from=parseInt(inputNumberFrom.value,10),to=parseInt(inputNumberTo.value,10);from<=to?(inputRangeTo.value=to,inputNumberTo.value=to):inputNumberTo.value=from,this.fillSlider()}})}}customElements.define("price-range",PriceRange);class FacetRemove extends HTMLElement{constructor(){super();const facetLink=this.querySelector("a");facetLink.setAttribute("role","button"),facetLink.addEventListener("click",this.closeFilter.bind(this)),facetLink.addEventListener("keyup",event=>{event.preventDefault(),event.code.toUpperCase()==="SPACE"&&this.closeFilter(event)})}closeFilter(event){event.preventDefault(),(this.closest("facet-filters-form")||document.querySelector("facet-filters-form")).onActiveFilterClick(event)}}customElements.define("facet-remove",FacetRemove); 2//# sourceMappingURL=/cdn/shop/t/2/assets/facets.js.map?v=109074058538794032371775814996
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.