PageSourceSearch

https://spaundrums.com/cdn/shop/t/1/assets/collection-filters-form.js?v=104076633749736072971631688639

js spaundrums.com collected 2026-09-25 01:07:00 UTC 6,258 bytes, 2 lines download raw bytes

1class CollectionFiltersForm extends HTMLElement{constructor(){super(),this.filterData=[],this.onActiveFilterClick=this.onActiveFilterClick.bind(this),this.debouncedOnSubmit=debounce(event=>{this.onSubmitHandler(event)},500),this.querySelector("form").addEventListener("input",this.debouncedOnSubmit.bind(this)),window.addEventListener("popstate",this.onHistoryChange.bind(this));const facetWrapper=this.querySelector("#FacetsWrapperDesktop");facetWrapper&&facetWrapper.addEventListener("keyup",onKeyUpEscape)}onSubmitHandler(event){event.preventDefault();const formData=new FormData(event.target.closest("form")),searchParams=new URLSearchParams(formData).toString();this.renderPage(searchParams,event)}onActiveFilterClick(event){event.preventDefault(),this.toggleActiveFacets(),this.renderPage(new URL(event.currentTarget.href).searchParams.toString())}onHistoryChange(event){const searchParams=event.state?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){const sections=this.getSections(),countContainerDesktop=document.getElementById("CollectionProductCountDesktop");document.getElementById("CollectionProductGrid").querySelector(".collection").classList.add("loading"),document.getElementById("CollectionProductCount").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;this.filterData.some(filterDataUrl)?this.renderSectionFromCache(filterDataUrl,event):this.renderSectionFromFetch(url,event)}),updateURLHash&&this.updateURLHash(searchParams)}renderSectionFromFetch(url,event){fetch(url).then(response=>response.text()).then(responseText=>{const html=responseText;this.filterData=[...this.filterData,{html,url}],this.renderFilters(html,event),this.renderProductGrid(html),this.renderProductCount(html)})}renderSectionFromCache(filterDataUrl,event){const html=this.filterData.find(filterDataUrl).html;this.renderFilters(html,event),this.renderProductGrid(html),this.renderProductCount(html)}renderProductGrid(html){document.getElementById("CollectionProductGrid").innerHTML=new DOMParser().parseFromString(html,"text/html").getElementById("CollectionProductGrid").innerHTML}renderProductCount(html){const count=new DOMParser().parseFromString(html,"text/html").getElementById("CollectionProductCount").innerHTML,container=document.getElementById("CollectionProductCount"),containerDesktop=document.getElementById("CollectionProductCountDesktop");container.innerHTML=count,container.classList.remove("loading"),containerDesktop&&(containerDesktop.innerHTML=count,containerDesktop.classList.remove("loading"))}renderFilters(html,event){const parsedHTML=new DOMParser().parseFromString(html,"text/html"),facetDetailsElements=parsedHTML.querySelectorAll("#CollectionFiltersForm .js-filter, #CollectionFiltersFormMobile .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=>{document.querySelector(`.js-filter[data-index="${element.dataset.index}"]`).innerHTML=element.innerHTML}),this.renderActiveFacets(parsedHTML),this.renderAdditionalElements(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.toggleActiveFacets(!1)}renderAdditionalElements(html){[".mobile-facets__open",".mobile-facets__count",".sorting"].forEach(selector=>{html.querySelector(selector)&&(document.querySelector(selector).innerHTML=html.querySelector(selector).innerHTML)}),document.getElementById("CollectionFiltersFormMobile").closest("menu-drawer").bindEvents()}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)})}updateURLHash(searchParams){history.pushState({searchParams},"",`${window.location.pathname}${searchParams&&"?".concat(searchParams)}`)}
1getSections(){return[{id:"main-collection-product-grid",section:document.getElementById("main-collection-product-grid").dataset.id}]}}customElements.define("collection-filters-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",PriceRange);class FacetRemove extends HTMLElement{constructor(){super(),this.querySelector("a").addEventListener("click",event=>{event.preventDefault(),(this.closest("collection-filters-form")||document.querySelector("collection-filters-form")).onActiveFilterClick(event)})}}customElements.define("facet-remove",FacetRemove);
2//# sourceMappingURL=/cdn/shop/t/1/assets/collection-filters-form.js.map?v=104076633749736072971631688639

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.