1class CollectionFiltersForm extends HTMLElement{constructor(){super(),this.filterData=[],this.onActiveFilterClick=this.onActiveFilterClick.bind(this),this.productGridId="CollectionProductGrid",this.filterFormsId="CollectionFiltersForm",this.searchTemplate=document.querySelector("body.template-search"),this.collectionTemplate=document.querySelector("body.template-collection"),this.sections=this.getSections();function debounce(fn,wait){let t;return(...args)=>{clearTimeout(t),t=setTimeout(()=>fn.apply(this,args),wait)}}this.debouncedOnSubmit=debounce(event=>{this.onSubmitHandler(event)},500),this.querySelector("form").addEventListener("input",this.debouncedOnSubmit.bind(this)),document.querySelector("[data-drawer-open-btn]").addEventListener("click",this.handleDrawerOpen.bind(this)),this.addDrawerListeners.bind(this),window.addEventListener("resize",this.addDrawerListeners.bind(this)),window.addEventListener("popstate",this.onHistoryChange.bind(this)),this.bindActiveFacetButtonEvents(),this.onDropDownBlur()}onDropDownBlur(){const getDropDowns=document.querySelectorAll("details");for(let item of getDropDowns)document.addEventListener("click",function(event){var isClickInside=item.contains(event.target);isClickInside||item.removeAttribute("open")})}isHidden(el){return el.offsetParent===null}addDrawerListeners(){const filterDrawer=document.querySelector("collection-filtering-form");filterDrawer.removeAttribute("role"),filterDrawer.removeAttribute("aria-modal"),window.innerWidth<991&&(filterDrawer.setAttribute("role","dialog"),filterDrawer.setAttribute("aria-modal","true"));const drawerOpenBtn=document.querySelector("[data-drawer-open-btn]");this.isHidden(drawerOpenBtn)||drawerOpenBtn.addEventListener("click",this.handleDrawerOpen)}handleDrawerOpen(e){e.target.setAttribute("tabIndex","-1");const filterDrawer=document.querySelector("collection-filtering-form"),drawerCloseBtn=this.querySelector("[data-drawer-close-btn]");filterDrawer.classList.add("is-open"),document.body.classList.add("js-drawer-open-left","js-drawer-open"),this.trapFocus("main-collection-filters",!0),drawerCloseBtn.addEventListener("click",this.handleDrawerClose.bind(this)),document.addEventListener("click",e2=>this.handleOffDrawerClick(e2),!0)}handleOffDrawerClick(e){const filterDrawer=document.querySelector("collection-filtering-form"),menuDrawer=document.querySelector("#NavDrawer");filterDrawer.contains(e.target)||menuDrawer.contains(e.target)||this.handleDrawerClose.bind(this)}handleDrawerClose(){const filterDrawer=document.querySelector("collection-filtering-form"),filterBtn=document.querySelector("[data-drawer-open-btn]");document.body.classList.remove("js-drawer-open-left","js-drawer-open"),filterDrawer.classList.remove("is-open"),filterBtn.setAttribute("tabIndex","0"),filterBtn.focus()}trapFocus(slideout_id,is_initial_open){const idString=`#${slideout_id}`,menu=document.getElementById(slideout_id),togglers=document.querySelectorAll(".facets__disclosure, .collection-filters__sort"),inputs=document.querySelectorAll(`${idString} input:not([type=hidden]), ${idString} button:not([tabindex="-1"]), ${idString} a:not([tabindex="-1"]), ${idString} textarea`),firstInput=inputs[0];let lastInput;menu.addEventListener("keydown",function(e){const getLastToggler=togglers[togglers.length-1];lastInput=!getLastToggler.hasAttribute("open")?getLastToggler:inputs[inputs.length-1],e.code==="Tab"&&!e.shiftKey&&document.activeElement==lastInput&&(e.preventDefault(),firstInput.focus()),e.code==="Tab"&&e.shiftKey&&document.activeElement==firstInput&&(e.preventDefault(),lastInput.focus())})}onSubmitHandler(event){if(event.preventDefault(),this.collectionTemplate){const formData=new FormData(event.target.closest("form")),searchParams=new URLSearchParams(formData).toString();this.renderPage(searchParams,event)}else if(this.searchTemplate){const searchParamsInitial=new URLSearchParams(window.location.search),activeTypes=document.querySelector("#page-type-input").value,types=Array.from(activeTypes.split(",")),defaultTypes=document.querySelector('.search--header input[name="type"]');if(activeTypes==""){const getInput=document.querySelector("#page-type-input");
1getInput.value=defaultTypes.value}const formData=new FormData(event.target.closest("form"));if(formData.append("q",searchParamsInitial.get("q")),types.includes("article")&&!types.includes("product")||types.includes("page")&&!types.includes("product")){const getInputs=document.querySelectorAll(`#${this.filterFormsId} input:not(#page-type-input)`),getLabels=document.querySelectorAll(`#${this.filterFormsId} label:not(.collection-filters__label)`);for(let item of getInputs)item.setAttribute("disabled","disabled");for(let inputLabel of getLabels)inputLabel.classList.add("facet-checkbox--disabled");if(searchParamsInitial.has("filter.p.product_type")){let newFormData=new URLSearchParams(window.location.search).toString();formData.delete("filter.p.product_type"),this.renderPage(newFormData,event)}if(searchParamsInitial.has("filter.p.vendor")){let newFormData=new URLSearchParams(window.location.search).toString();formData.delete("filter.p.vendor"),this.renderPage(newFormData,event)}if(searchParamsInitial.has("filter.v.availability")){let newFormData=new URLSearchParams(window.location.search).toString();formData.delete("filter.v.availability"),this.renderPage(newFormData,event)}}const searchParams=new URLSearchParams(formData).toString();this.renderPage(searchParams,event)}}onActiveFilterClick(event){event.preventDefault(),this.toggleActiveFacets(),this.renderPage(new URL(event.target.href).searchParams.toString())}onHistoryChange(event){const searchParams=event.state?.searchParams||"";this.renderPage(searchParams,null,!1)}toggleActiveFacets(disable=!0){document.querySelectorAll(".js-facet-remove").forEach(element=>{element.classList.toggle("disabled",disable)})}renderPage(searchParams,event,updateURLHash=!0){document.querySelector(`#${this.productGridId}>div`).classList.add("loading"),this.sections.forEach(section=>{if(this.collectionTemplate){const url=`${window.location.pathname}?section_id=${section.section}&${searchParams}`,filterDataUrl=element=>element.url===url;this.filterData.some(filterDataUrl)?this.renderSectionFromCache(filterDataUrl,section,event):this.renderSectionFromFetch(url,section,event)}else if(this.searchTemplate){const url=`${window.location.pathname}?${searchParams}`,filterDataUrl=element=>element.url===url;this.filterData.some(filterDataUrl)?this.renderSectionFromCache(filterDataUrl,section,event):this.renderSectionFromFetch(url,section,event)}}),updateURLHash&&this.updateURLHash(searchParams)}renderSectionFromFetch(url,section,event){fetch(url).then(response=>response.text()).then(responseText=>{const html=responseText;switch(this.filterData=[...this.filterData,{html,url}],section.id){case this.productGridId:this.renderProductGrid(html);break;case this.filterFormsId:this.renderFilters(html,event);break;default:return}})}renderSectionFromCache(filterDataUrl,section,event){const html=this.filterData.find(filterDataUrl).html;this.renderFilters(html,event),this.renderProductGrid(html)}renderProductGrid(html){const innerHTML=new DOMParser().parseFromString(html,"text/html").getElementById(this.productGridId).innerHTML;document.getElementById(this.productGridId).innerHTML=innerHTML;const event=new CustomEvent("paginate");document.dispatchEvent(event)}renderFilters(html,event){const parsedHTML=new DOMParser().parseFromString(html,"text/html"),facetDetailsElements=parsedHTML.querySelectorAll(`#${this.filterFormsId} .js-filter`),matchesIndex=element=>element.dataset.index===event?.target.closest(".js-filter")?.dataset.index,facetsToRender=Array.from(facetDetailsElements).filter(element=>!matchesIndex(element)),countsToRender=Array.from(facetDetailsElements).find(matchesIndex);facetsToRender.forEach(element=>{document.querySelector(`.js-filter[data-index="${element.dataset.index}"]`).innerHTML=element.innerHTML}),this.renderActiveFacets(parsedHTML),countsToRender&&this.renderCounts(countsToRender,event.target.closest(".js-filter"))}renderActiveFacets(html){[".active-facets-mobile",".active-facets-desktop"].forEach(selector=>{const activeFacetsElement=html.querySelector(selector);activeFacetsElement&&(document.querySelector(selector).innerHTML=activeFacetsElement.innerHTML)}),this.bindActiveFacetButtonEvents(),this.toggleActiveFacets(!1)}renderMobileElements(html){[".mobile-facets__open",".mobile-facets__count"].forEach(selector=>{document.querySelector(selector).innerHTML=html.querySelector(selector).innerHTML})}renderCounts(source,target){[".count-bubble",".facets__selected"].forEach(selector=>{const targetElement=target.querySelector(selector);source.querySelector(selector)&&targetElement&&(target.querySelector(selector).outerHTML=source.querySelector(selector).outerHTML)})}bindActiveFacetButtonEvents(){document.querySelectorAll(".js-facet-remove").forEach(element=>{element.addEventListener("click",this.onActiveFilterClick,{once:!0})})}updateURLHash(searchParams){history.pushState({searchParams},"",`${window.location.pathname}${searchParams&&"?".concat(searchParams)}`)}getSections(){return[{id:this.productGridId,section:document.getElementById(this.productGridId).dataset.sectionId},{id:this.filterFormsId,section:document.getElementById("main-collection-filters").dataset.id}]}}customElements.define("collection-filtering-form",CollectionFiltersForm);class PriceRange extends HTMLElement{constructor(){super(),this.querySelectorAll("input").forEach(element=>element.addEventListener("change",this.onRangeChange.bind(this))),this.setMinAndMaxValues()}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)}}customElements.define("price-range-selector",PriceRange);class PageType extends HTMLElement{constructor(){super(),this.selector=document.querySelector("[data-page-type-selector]"),this.selector.addEventListener("change",this.setValue)}setValue(e){const selectedTypes=e.currentTarget.querySelectorAll("input:checked"),types=Array.from(selectedTypes).map(option=>
1option.value).join(","),typeInput=document.querySelector("#page-type-input");typeInput.value=types;const event=new Event("input");typeInput.closest("form").dispatchEvent(event)}}customElements.define("page-type-selector",PageType); 2//# sourceMappingURL=/cdn/shop/t/41/assets/filtering.js.map?v=42697072702298409011750307228
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.