1class FacetFiltersForm extends HTMLElement{constructor(){super(),this.onActiveFilterClick=this.onActiveFilterClick.bind(this),this.debouncedOnSubmit=debounce(event=>{this.onSubmitHandler(event)},800),this.querySelector("form").addEventListener("input",this.debouncedOnSubmit.bind(this))}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,FacetFiltersForm.getSections().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),typeof initializeScrollAnimationTrigger=="function"&&initializeScrollAnimationTrigger(html.innerHTML)})}static renderSectionFromCache(filterDataUrl,event){const html=FacetFiltersForm.filterData.find(filterDataUrl).html;FacetFiltersForm.renderFilters(html,event),FacetFiltersForm.renderProductGridContainer(html),FacetFiltersForm.renderProductCount(html),typeof initializeScrollAnimationTrigger=="function"&&initializeScrollAnimationTrigger(html.innerHTML)}static renderProductGridContainer(html){document.getElementById("ProductGridContainer").innerHTML=new DOMParser().parseFromString(html,"text/html").getElementById("ProductGridContainer").innerHTML,window?.ajaxinateResults()}static renderProductCount(html){const count=new DOMParser().parseFromString(html,"text/html").getElementById("ProductCount").innerHTML,container=document.getElementById("ProductCount");container.innerHTML=count,container.classList.remove("loading"),document.querySelectorAll(".facets-container .loading__spinner, facet-filters-form .loading__spinner").forEach(spinner=>spinner.classList.add("hidden"))}static renderFilters(html,event){const parsedHTML=new DOMParser().parseFromString(html,"text/html"),facetDetailsElementsFromFetch=parsedHTML.querySelectorAll("#FacetFiltersForm .js-filter, #FacetSortForm .js-filter"),facetDetailsElementsFromDom=document.querySelectorAll("#FacetFiltersForm .js-filter, #FacetSortForm .js-filter");Array.from(facetDetailsElementsFromDom).forEach(currentElement=>{Array.from(facetDetailsElementsFromFetch).some(({id})=>currentElement.id===id)||currentElement.remove()});const matchesId=element=>{const jsFilter=event?event.target.closest(".js-filter"):void 0;return jsFilter?element.id===jsFilter.id:!1},facetsToRender=Array.from(facetDetailsElementsFromFetch).filter(element=>!matchesId(element)),countsToRender=Array.from(facetDetailsElementsFromFetch).find(matchesId);if(facetsToRender.forEach((elementToRender,index)=>{if(document.getElementById(elementToRender.id))document.getElementById(elementToRender.id).innerHTML=elementToRender.innerHTML;else{if(index>0){const{className:previousElementClassName,id:previousElementId}=facetsToRender[index-1];if(elementToRender.className===previousElementClassName){document.getElementById(previousElementId).after(elementToRender);return}}elementToRender.parentElement&&document.querySelector(`#${elementToRender.parentElement.id} .js-filter`).before(elementToRender)}}),FacetFiltersForm.renderActiveFacets(parsedHTML),FacetFiltersForm.renderAdditionalElements(parsedHTML),FacetFiltersForm.renderGroupClearButtons(parsedHTML),FacetFiltersForm.renderFiltersOptionsWrapper(parsedHTML),countsToRender){const closestJSFilterID=event.target.closest(".
1js-filter").id;if(closestJSFilterID){FacetFiltersForm.renderCounts(countsToRender,event.target.closest(".js-filter")),FacetFiltersForm.renderMobileCounts(countsToRender,document.getElementById(closestJSFilterID));const newFacetDetailsElement=document.getElementById(closestJSFilterID),newElementSelector=newFacetDetailsElement.classList.contains("mobile-facets__details")?".mobile-facets__close-button":".facets__summary",newElementToActivate=newFacetDetailsElement.querySelector(newElementSelector),isTextInput=event.target.getAttribute("type")==="text";newElementToActivate&&!isTextInput&&newElementToActivate.focus()}}}static renderGroupClearButtons(html){[".collection__filters-options-group.js-filter"].forEach(selector=>{const facetGroups=html.querySelectorAll(selector);facetGroups.length>0&&facetGroups.forEach(group=>{const groupItems=group.querySelectorAll('.collection__filters-options-list-item input[type="checkbox"]');let checkedCount=0;if(groupItems.length>0){groupItems.forEach(item=>{item.checked===!0&&checkedCount++});const documentGroup=document.getElementById(group.id);if(documentGroup){const documentClearButton=documentGroup.querySelector(".collection__filters-options-clear");checkedCount>0?documentClearButton.classList.remove("disabled"):documentClearButton.classList.add("disabled")}}})})}static renderFiltersOptionsWrapper(html){const targetFiltersOptionsWrapper=document.querySelector(".collection__filters-options-wrapper"),sourceFiltersOptionsWrapper=html.querySelector(".collection__filters-options-wrapper");sourceFiltersOptionsWrapper&&targetFiltersOptionsWrapper&&(targetFiltersOptionsWrapper.className=sourceFiltersOptionsWrapper.className)}static renderActiveFacets(html){[".active-facets"].forEach(selector=>{const activeFacetsElement=html.querySelector(selector);activeFacetsElement&&(document.querySelector(selector).innerHTML=activeFacetsElement.innerHTML)}),FacetFiltersForm.toggleActiveFacets(!1)}static renderAdditionalElements(html){[".sorting"].forEach(selector=>{html.querySelector(selector)&&(document.querySelector(selector).innerHTML=html.querySelector(selector).innerHTML)})}static renderCounts(source,target){const targetSummary=target.querySelector(".facets__summary"),sourceSummary=source.querySelector(".facets__summary");
1sourceSummary&&targetSummary&&(targetSummary.outerHTML=sourceSummary.outerHTML);const targetHeaderElement=target.querySelector(".facets__header"),sourceHeaderElement=source.querySelector(".facets__header");sourceHeaderElement&&targetHeaderElement&&(targetHeaderElement.outerHTML=sourceHeaderElement.outerHTML);const targetWrapElement=target.querySelector(".facets-wrap"),sourceWrapElement=source.querySelector(".facets-wrap");sourceWrapElement&&targetWrapElement&&(target.querySelector("show-more-button .label-show-more.hidden")&&sourceWrapElement.querySelectorAll(".facets__item.hidden").forEach(hiddenItem=>hiddenItem.classList.replace("hidden","show-more-item")),targetWrapElement.outerHTML=sourceWrapElement.outerHTML)}static renderMobileCounts(source,target){const targetFacetsList=target.querySelector(".mobile-facets__list"),sourceFacetsList=source.querySelector(".mobile-facets__list");sourceFacetsList&&targetFacetsList&&(targetFacetsList.outerHTML=sourceFacetsList.outerHTML)}static updateURLHash(searchParams){history.pushState({searchParams},"",`${window.location.pathname}${searchParams&&"?".concat(searchParams)}`)}static getSections(){return[{section:document.getElementById("product-grid").dataset.id}]}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=[],isMobile=event.target.closest("form").id==="FacetFiltersFormMobile";sortFilterForms.forEach(form=>{isMobile?form.id==="FacetFiltersFormMobile"&&forms.push(this.createSearchParams(form)):(form.id==="FacetSortForm"||form.id==="FacetFiltersForm")&&forms.push(this.createSearchParams(form))}),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)}}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 FacetRemove extends HTMLElement{constructor(){super();const facetLink=this.querySelector("a");facetLink.setAttribute("role","button"),facetLink.addEventListener("click",this.closeFilter.bind(this)),this.type="",facetLink.dataset.type?this.type=facetLink.dataset.type:this.type="single"}closeFilter(event){if(event.preventDefault(),this.type==="single")(this.closest("facet-filters-form")||document.querySelector("facet-filters-form")).onActiveFilterClick(event);else if(this.type==="group"){const targetGroupId=this.querySelector("a").dataset.groupId,targets=this.parentElement.parentElement.querySelector(`#${targetGroupId}`).querySelectorAll('input[type="checkbox"]:checked');targets.length>0&&targets.forEach(target=>{target.parentElement.click()})}}}customElements.define("facet-remove",FacetRemove);function debounce(fn,wait){let t;return(...args)=>{clearTimeout(t),t=setTimeout(()=>fn.apply(this,args),wait)}}document.addEventListener("click",function(event){const collapsibleTriggers=document.querySelectorAll(".collection__filters-options-title h3 span");collapsibleTriggers.length>0&&collapsibleTriggers.forEach(trigger=>{const triggerTargetId=trigger.dataset.collapsibleTargetId,triggerTarget=document.getElementById(triggerTargetId);triggerTarget&&trigger.contains(event.target)&&triggerTarget.classList.toggle("collection__filters-options-group--hidden")})});const toggleFiltersOnMobile=()=>{const stickyToggle=document.querySelector(".collection__filter-sticky-toggle"),collectionFilters=document.querySelector(".hide-filters"),collectionContent=document.querySelector(".collection__contents"),collectionFiltersHide=document.querySelector(".collection__filters-hide"),collectionFiltersShow=document.querySelector(".collection__filters-show");
1window.innerWidth<1024&&(stickyToggle.classList.remove("show"),collectionFilters.classList.remove("hide-filters"),collectionContent.classList.remove("hide-filters"),collectionFiltersHide.classList.remove("visually-hidden"),collectionFiltersShow.classList.add("visually-hidden"))};document.addEventListener("DOMContentLoaded",toggleFiltersOnMobile),window.addEventListener("resize",toggleFiltersOnMobile),document.addEventListener("click",function(event){const dropdown=document.querySelector(".collection__sorting-choices-dropdown"),list=document.querySelector(".collection__sorting-choices-list");if(dropdown&&list&&list.contains(event.target)){dropdown.classList.toggle("collection__sorting-choices-dropdown--hidden");return}dropdown&&!dropdown.contains(event.target)&&(!list||!list.contains(event.target))&&dropdown.classList.add("collection__sorting-choices-dropdown--hidden")}); 2//# sourceMappingURL=/cdn/shop/t/292/assets/facets.js.map?v=43333529885783951421781624701
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.