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))}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 renderPage(searchParams,event,updateURLHash=!0){FacetFiltersForm.searchParamsPrev=searchParams;const sections=FacetFiltersForm.getSections(),facetDrawer=document.getElementById("FacetDrawer"),countContainer=document.getElementById("ProductCount"),countContainerMobile=document.getElementById("ProductCountMobile"),countContainerDesktop=document.getElementById("ProductCountDesktop");document.getElementById("ProductGridContainer").querySelector(".collection").classList.add("loading"),countContainer&&countContainer.classList.add("loading"),countContainerMobile&&countContainerMobile.classList.add("loading"),countContainerDesktop&&countContainerDesktop.classList.add("loading"),facetDrawer&&facetDrawer.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),document.dispatchEvent(new CustomEvent("collection:reloaded"))}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)}).catch(e=>{console.error(e)})}static renderSectionFromCache(filterDataUrl,event){const html=FacetFiltersForm.filterData.find(filterDataUrl).html;FacetFiltersForm.renderFilters(html,event),FacetFiltersForm.renderProductGridContainer(html),FacetFiltersForm.renderProductCount(html)}static renderProductGridContainer(html){document.getElementById("ProductGridContainer").innerHTML=new DOMParser().parseFromString(html,"text/html").getElementById("ProductGridContainer").innerHTML;const layoutSwitcher=document.querySelector("#FacetSortFiltersForm layout-switcher");layoutSwitcher&&layoutSwitcher.onButtonClick(layoutSwitcher.querySelector(".list-view__item--active"))}static renderProductCount(html){const count=new DOMParser().parseFromString(html,"text/html").getElementById("ProductCount").innerHTML,container=document.getElementById("ProductCount"),containerMobile=document.getElementById("ProductCountMobile"),containerDesktop=document.getElementById("ProductCountDesktop");container&&(container.innerHTML=count,container.classList.remove("loading")),containerMobile&&(containerMobile.innerHTML=count,containerMobile.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("#FacetSortFiltersForm .js-filter, #FacetFiltersForm .js-filter, #FacetFiltersFormMobile .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}),FacetFiltersForm.renderActiveFacets(parsedHTML),FacetFiltersForm.renderAdditionalElements(parsedHTML),countsToRender&&FacetFiltersForm.renderCounts(countsToRender,event.target.closest(".
1js-filter"));const facetDrawer=document.getElementById("FacetDrawer");facetDrawer&&facetDrawer.classList.remove("loading")}static renderActiveFacets(html){[".active-facets-mobile",".active-facets-desktop"].forEach(selector=>{const activeFacetsElement=html.querySelector(selector);activeFacetsElement&&(document.querySelector(selector).innerHTML=activeFacetsElement.innerHTML)})}static renderAdditionalElements(html){[".mobile-facets__open",".facets__open",".sorting"].forEach(selector=>{html.querySelector(selector)&&(document.querySelector(selector).innerHTML=html.querySelector(selector).innerHTML)}),document.getElementById("FacetFiltersFormMobile").closest("facet-drawer").bindEvents()}static renderCounts(source,target){const targetElement=target.querySelector(".facets__selected");source.querySelector(".facets__selected")&&targetElement&&(target.querySelector(".facets__selected").outerHTML=source.querySelector(".facets__selected").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)}mergeSearchParams(form,searchParams){return this.createSearchParams(form).forEach((value,key)=>{searchParams.append(key,value)}),searchParams}onSubmitForm(searchParams,event){FacetFiltersForm.renderPage(searchParams,event)}onSubmitHandler(event){event.preventDefault();const currentForm=event.target.closest("form");if(currentForm.id==="FacetFiltersFormMobile"){const searchParams=this.createSearchParams(currentForm);this.onSubmitForm(searchParams.toString(),event)}else{let searchParams=new URLSearchParams;if(currentForm.id==="FacetSortFiltersForm"&¤tForm.dataset.filterType==="drawer"){const mobileForm=document.getElementById("FacetFiltersFormMobile");searchParams=this.mergeSearchParams(mobileForm,searchParams),searchParams.delete("sort_by")}document.querySelectorAll("facet-filters-form form").forEach(form=>{(form.id==="FacetFiltersForm"||form.id==="FacetSortFiltersForm")&&(searchParams=this.mergeSearchParams(form,searchParams))}),this.onSubmitForm(searchParams.toString(),event)}}onActiveFilterClick(event){event.preventDefault(),FacetFiltersForm.renderPage(new URL(event.currentTarget.href).searchParams.toString())}}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(),this.querySelector("a").addEventListener("click",event=>{event.preventDefault(),(this.closest("facet-filters-form")||document.querySelector("facet-filters-form")).onActiveFilterClick(event)})}}customElements.define("facet-remove",FacetRemove);class PriceRange extends HTMLElement{constructor(){super(),this.min=Number(this.dataset.min),this.max=Number(this.dataset.max),this.track=this.querySelector(".price-range__track"),this.handles=[...this.querySelectorAll(".price-range__thumbs")],this.startPos=0,this.activeHandle,this.handles.forEach(handle=>{handle.addEventListener("mousedown",this.startMove.bind(this))}),window.addEventListener("mouseup",this.stopMove.bind(this)),this.querySelectorAll("input").forEach(element=>element.addEventListener("change",this.onRangeChange.bind(this)))}onRangeChange(event){this.adjustToValidValues(event.currentTarget),this.setMinAndMaxValues()}startMove(e){this.startPos=e.offsetX,this.activeHandle=e.target,this.moveListener=this.move.bind(this),window.addEventListener("mousemove",this.moveListener)}move(e){const isLower=this.activeHandle.classList.contains("is-lower"),property=isLower?"
1--progress-lower":"--progress-upper",parentRect=this.track.getBoundingClientRect(),handleRect=this.activeHandle.getBoundingClientRect();let newX=e.clientX-parentRect.x-this.startPos;if(isLower){const percentageX=parseInt(this.style.getPropertyValue("--progress-upper"))*parentRect.width/100;newX=Math.min(newX,percentageX-handleRect.width),newX=Math.max(newX,0-handleRect.width/2)}else{const percentageX=parseInt(this.style.getPropertyValue("--progress-lower"))*parentRect.width/100;newX=Math.max(newX,percentageX),newX=Math.min(newX,parentRect.width-handleRect.width/2)}const percentage=(newX+handleRect.width/2)/parentRect.width,valuenow=this.calcHandleValue(percentage);this.style.setProperty(property,percentage*100+"%"),this.activeHandle.ariaValueNow=valuenow;const text=this.activeHandle.nextElementSibling.querySelector(".price-range__output-text");text.innerHTML=valuenow;const inputs=this.querySelectorAll("input"),input=isLower?inputs[0]:inputs[1];input.value=valuenow,this.adjustToValidValues(input),this.setMinAndMaxValues()}calcHandleValue(percentage){return Math.round(percentage*(this.max-this.min)+this.min)}stopMove(){window.removeEventListener("mousemove",this.moveListener);const form=this.closest("form");this.activeHandle&&form&&form.dispatchEvent(new Event("input"))}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 LayoutSwitcher extends HTMLElement{constructor(){super(),this.cookieName="beyours:collection-layout",this.initLayoutMode(),this.querySelectorAll(".list-view__item").forEach(button=>button.addEventListener("click",this.onButtonClick.bind(this)))}onButtonClick(event){const target=event.target?event.target:event;this.changeLayoutMode(target,target.dataset.layoutMode)}initLayoutMode(){if(isStorageSupported("local")){const layoutMode=window.localStorage.getItem(this.cookieName);if(layoutMode!==null){const target=this.querySelector(`.list-view__item[data-layout-mode="${layoutMode}"]`);target&&this.changeLayoutMode(target,layoutMode)}}}changeLayoutMode(target,layoutMode){const productGrid=document.getElementById("product-grid");if(productGrid.classList.contains("collection--empty"))return;["list","grid","grid--1-col","grid--2-col","grid--3-col-tablet","grid--2-col-desktop","grid--3-col-desktop","grid--4-col-desktop"].forEach(removed=>{productGrid.classList.remove(removed)});let addedClass=[];switch(layoutMode){case"list":addedClass=["grid","grid--1-col","grid--2-col-desktop","list"];break;case"grid-2":addedClass=["grid","grid--2-col"];break;case"grid-3":addedClass=["grid","grid--2-col","grid--3-col-tablet","grid--3-col-desktop"];break;case"grid-4":addedClass=["grid","grid--2-col","grid--3-col-tablet","grid--4-col-desktop"];break}addedClass.forEach(added=>{productGrid.classList.add(added)}),this.querySelectorAll(".list-view__item").forEach(button=>button.classList.remove("list-view__item--active")),target.classList.add("list-view__item--active"),isStorageSupported("local")&&window.localStorage.setItem(this.cookieName,layoutMode)}}customElements.define("layout-switcher",LayoutSwitcher);class StickyFacetFilters extends HTMLElement{constructor(){super()}connectedCallback(){this.onScrollHandler=this.onScroll.bind(this),window.addEventListener("scroll",this.onScrollHandler,!1),this.onScrollHandler()}disconnectedCallback(){window.removeEventListener("scroll",this.onScrollHandler)}onScroll(){(window.pageYOffset||document.documentElement.scrollTop)>this.parentNode.offsetTop?window.requestAnimationFrame(this.reveal.bind(this)):window.requestAnimationFrame(this.reset.bind(this))}reveal(){this.classList.add("shopify-section-filters-sticky")}reset(){this.classList.remove("shopify-section-filters-sticky")}}customElements.define("sticky-facet-filters",StickyFacetFilters);class ShowMoreButton extends HTMLElement{constructor(){super();const attributes={expanded:"aria-expanded"};this.querySelector(".button-show-more").addEventListener("click",()=>
1{const filter=this.closest(".js-filter");filter.setAttribute(attributes.expanded,(filter.getAttribute(attributes.expanded)==="false").toString()),this.querySelectorAll(".visually-hidden").forEach(element=>element.classList.toggle("hidden"))})}}customElements.define("show-more-button",ShowMoreButton); 2//# sourceMappingURL=/cdn/shop/t/44/assets/facets.js.map?v=98587578524472453621731532685
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.