1class FacetFiltersForm extends HTMLElement{constructor(){super(),this.onActiveFilterClick=this.onActiveFilterClick.bind(this),this.debouncedOnSubmit=debounce(e2=>{this.onSubmitHandler(e2)},500),this.querySelector("form").addEventListener("input",this.debouncedOnSubmit.bind(this));const e=this.querySelector("#FacetsWrapperDesktop");e&&e.addEventListener("keyup",onKeyUpEscape),FacetFiltersForm.url=window.location.href,FacetFiltersForm.searchParamsArr=[],FacetFiltersForm.optionValues=[],FacetFiltersForm.dynamicTitle=document.getElementsByClassName("dynamic-title"),FacetFiltersForm.dynamicTitleText=FacetFiltersForm.dynamicTitle[0]?FacetFiltersForm.dynamicTitle[0].textContent.replace(/\s/g,"").slice(1):"",FacetFiltersForm.optionValues=FacetFiltersForm.dynamicTitleText.split("-"),FacetFiltersForm.ajaxFilterValues=[],FacetFiltersForm.renderTitle()}static setListeners(){window.addEventListener("popstate",e=>{const t=e.state?e.state.searchParams:FacetFiltersForm.searchParamsInitial;t!==FacetFiltersForm.searchParamsPrev&&FacetFiltersForm.renderPage(t,null,!1)})}static toggleActiveFacets(e=!0){document.querySelectorAll(".js-facet-remove").forEach(t=>{t.classList.toggle("disabled",e)})}static renderPage(e,t,r=!0){FacetFiltersForm.searchParamsPrev=e;const i=FacetFiltersForm.getSections(),n=document.getElementById("ProductCount"),s=document.getElementById("ProductCountDesktop");document.getElementById("ProductGridContainer").querySelector(".collection").classList.add("loading"),n&&n.classList.add("loading"),s&&s.classList.add("loading"),i.forEach(r2=>{const i2=`${window.location.pathname}?section_id=${r2.section}&${e}`,n2=e2=>e2.url===i2;FacetFiltersForm.filterData.some(n2)?FacetFiltersForm.renderSectionFromCache(n2,t):FacetFiltersForm.renderSectionFromFetch(FacetFiltersForm.interceptFiltering(t,i2),t)}),r&&FacetFiltersForm.updateURLHash(e)}static renderSectionFromFetch(e,t){fetch(e).then(e2=>e2.text()).then(r=>{const i=r;FacetFiltersForm.filterData=[...FacetFiltersForm.filterData,{html:i,url:e}],FacetFiltersForm.renderFilters(i,t),FacetFiltersForm.renderProductGridContainer(i),FacetFiltersForm.renderProductCount(i),FacetFiltersForm.renderTitle(),typeof initializeScrollAnimationTrigger=="function"&&initializeScrollAnimationTrigger(i.innerHTML)})}static renderSectionFromCache(e,t){const r=FacetFiltersForm.filterData.find(e).html;FacetFiltersForm.renderFilters(r,t),FacetFiltersForm.renderProductGridContainer(r),FacetFiltersForm.renderProductCount(r),typeof initializeScrollAnimationTrigger=="function"&&initializeScrollAnimationTrigger(r.innerHTML)}static renderProductGridContainer(e){const t=document.getElementById("ProductGridContainer");if(!t)return;const r=new DOMParser().parseFromString(e,"text/html");t.innerHTML=r.getElementById("ProductGridContainer").innerHTML}static renderProductCount(e){const t=new DOMParser().parseFromString(e,"text/html")?.getElementById("ProductCount")?.innerHTML,r=document.getElementById("ProductCount"),i=document.getElementById("ProductCountDesktop");t&&(r.innerHTML=t,r.classList.remove("loading")),i&&t&&(i.innerHTML=t,i.classList.remove("loading"))}static renderFilters(e,t){const r=new DOMParser().parseFromString(e,"text/html"),i=r.querySelectorAll("#FacetFiltersForm .js-filter, #FacetFiltersFormMobile .js-filter, #FacetFiltersPillsForm .js-filter"),n=e2=>{const r2=t?t.target.closest(".js-filter"):void 0;return!!r2&&e2.dataset.index===r2.dataset.index},s=Array.from(i).filter(e2=>!n(e2)),o=Array.from(i).find(n);s.forEach(e2=>{document.querySelector(`.js-filter[data-index="${e2.dataset.index}"]`).innerHTML=e2.innerHTML}),FacetFiltersForm.renderActiveFacets(r),FacetFiltersForm.renderAdditionalElements(r),o&&FacetFiltersForm.renderCounts(o,t.target.closest(".js-filter"))}static renderActiveFacets(e){[".active-facets-mobile",".active-facets-desktop"].forEach(t=>{const r=e.querySelector(t);r&&(document.querySelector(t).innerHTML=r.innerHTML)}),FacetFiltersForm.toggleActiveFacets(!1)}static renderAdditionalElements(e){[".mobile-facets__open",".mobile-facets__count",".sorting"].forEach(t=>{e.querySelector(t)&&(document.querySelector(t).innerHTML=e.querySelector(t).innerHTML)}),document.getElementById("FacetFiltersFormMobile").closest("menu-drawer").bindEvents()}static renderCounts(e,t){const r=t.querySelector(".facets__selected"),i=e.querySelector(".facets__selected"),n=t.querySelector(".facets__summary"),s=e.querySelector(".facets__summary");i&&r&&(t.querySelector(".facets__selected").outerHTML=e.querySelector(".facets__selected").outerHTML),n&&s&&(t.querySelector(".facets__summary").outerHTML=e.querySelector(".facets__summary").outerHTML)}static updateURLHash(e){history.pushState({searchParams:e},"",`${window.location.pathname}${e&&"?".concat(e)}`)}static getSections(){return[{section:document.getElementById("product-grid").dataset.id}]}createSearchParams(e){const t=new FormData(e);let r=new URLSearchParams(t).toString(),i="";return r.split("&").filter(e2=>{e2.split("=")[1]!==""&&(i+=`${e2}&`)}),i.substring(0,i.length-1)}onSubmitForm(e,t){FacetFiltersForm.renderPage(e,t)}removeLastElementWithValueContainingString(e,t){for(let r=e.length-1;r>=0;r--)e[r].includes(t)&&r!=0&&e.splice(r,1)}onSubmitHandler(e){e.preventDefault(),FacetFiltersForm.counter=0;const t=document.querySelectorAll("facet-filters-form form");if(e.srcElement.className=="mobile-facets__checkbox"){const t2=this.createSearchParams(e.target.closest("form"));this.onSubmitForm(t2,e)}else{const r=[],i=e.target.closest("form").id==="FacetFiltersFormMobile";t.forEach(e2=>{i?e2.id==="FacetFiltersFormMobile"&&r.push(this.createSearchParams(e2)):(e2.id==="FacetSortForm"||e2.id==="FacetFiltersForm"||e2.id==="FacetSortDrawerForm")&&(document.querySelectorAll(".no-js-list").forEach(e3=>e3.remove()),r.push(this.createSearchParams(e2)),FacetFiltersForm.counter++)}
1),this.removeLastElementWithValueContainingString(r,"sort_by"),this.onSubmitForm(r.join("&"),e)}}onActiveFilterClick(e){e.preventDefault(),FacetFiltersForm.toggleActiveFacets();const t=e.currentTarget.href.indexOf("?")==-1?"":e.currentTarget.href.replaceAll("filter.v.option.","").replaceAll("filter.v.m.global.","").replaceAll("filter.v.price.","").replaceAll("filter.p.m.custom.","").slice(e.currentTarget.href.indexOf("?")+1);FacetFiltersForm.renderTitle(),FacetFiltersForm.renderPage(t)}static removeStringFromEnd(e,t){if(e.endsWith(t)){const r=t.length;return e.slice(0,-r)}return e}static interceptFiltering(e,t){let r=window.paramArr?window.paramArr:[],i=t||window.location.search.substring(1),n=i.split("&").map((e2,t2)=>{let r2=e2.split("=")[0];if(r2!=="sort_by")return r2}).filter(function(e2){return e2!=null&&e2!=""&&e2!="undefined"});return r.filter(e2=>e2!=="").filter((e2,t2)=>{n.forEach((t3,r2)=>{e2.toLowerCase().includes(t3.toLowerCase())&&FacetFiltersForm.ajaxFilterValues.push({option:e2,currOption:t3})})}),Array.from(FacetFiltersForm.ajaxFilterValues.reduce((e2,t2)=>e2.set(t2.currOption,t2),new Map).values()).map((e2,t2)=>{e2.currOption!==""&&(i=i.replaceAll(e2.currOption,e2.option))}),FacetFiltersForm.getSections().map(e2=>`${window.location.pathname}?section_id=${e2.section}&${i}`)}static hasUndefinedValue(e){for(let t in e)if(e[t]===void 0)return!0;return!1}static renderTitle(){let e=document.getElementsByClassName("dynamic-title")[0];setTimeout(()=>{let t=[],r=new URLSearchParams(window.location.search);if(r.has("utm_source"))return;r.delete("sort_by"),r.delete("view"),r.delete("slScreenshot");for(let[e2,i2]of r.entries())t.push({[e2]:i2});const i={};for(const[e2,r2]of Object.entries(t))for(const[t2,n2]of Object.entries(r2)){i[t2]||(i[t2]={});for(const r3 of[n2].flat())i[t2][e2]=r3}const n=Object.entries(i).map(([e2,t2])=>({key:e2,value:t2}));let s=0,o=["utm source","utm medium","utm campaign","sort by","phcursor"],a=n.map((e2,t2)=>{let r2=e2.key.replace(/_/g," ");if(!o.includes(r2)){let i2="";t2!=0||this.hasUndefinedValue(e2.value)||(i2+=" - "),this.hasUndefinedValue(e2.value)||(i2+=r2+": ");for(const t3 in e2.value)s>=Object.keys(e2.value).length-1&&0>=n.length-1?e2.value[t3]&&(i2+=e2.value[t3]):e2.value[t3]&&(i2+=e2.value[t3]+", "),s++;return i2}}).join("");a=a.replace(/,\s*$/,""),e&&(e.innerHTML=window.collectionName.replace(/-\s*$/,"")+a.replaceAll("+%2F+"," / ").replaceAll("%2F"," / ").replaceAll("+%2B+"," + "))},200)}}FacetFiltersForm.filterData=[],FacetFiltersForm.searchParamsInitial=window.location.search.slice(1),FacetFiltersForm.searchParamsPrev=window.location.search.slice(1),customElements.define("facet-filters-form",FacetFiltersForm),FacetFiltersForm.setListeners();const url=window.location.href,substrings=["color","bong_joint_type","joint_size","filter.v.price.gte","filter.v.price.lte","seed_type"];for(let e=0;e<substrings.length;e++)url.includes(substrings[e])&&FacetFiltersForm.renderSectionFromFetch(FacetFiltersForm.interceptFiltering(formUrl=url));class PriceRange extends HTMLElement{constructor(){super(),this.querySelectorAll("input").forEach(e=>e.addEventListener("change",this.onRangeChange.bind(this))),this.setMinAndMaxValues()}onRangeChange(e){this.adjustToValidValues(e.currentTarget),this.setMinAndMaxValues()}setMinAndMaxValues(){const e=this.querySelectorAll("input"),t=e[0],r=e[1];r.value&&t.setAttribute("max",r.value),t.value&&r.setAttribute("min",t.value),t.value===""&&r.setAttribute("min",0),r.value===""&&t.setAttribute("max",r.getAttribute("max"))}adjustToValidValues(e){const t=Number(e.value),r=Number(e.getAttribute("min")),i=Number(e.getAttribute("max"));t<r&&(e.value=r),t>i&&(e.value=i)}}customElements.define("price-range",PriceRange);class FacetRemove extends HTMLElement{constructor(){super();const e=this.querySelector("a");e.setAttribute("role","button"),e.addEventListener("click",this.closeFilter.bind(this)),e.addEventListener("keyup",e2=>{e2.preventDefault(),e2.code.toUpperCase()==="SPACE"&&this.closeFilter(e2)})}closeFilter(e){e.preventDefault(),(this.closest("facet-filters-form")||document.querySelector("facet-filters-form")).onActiveFilterClick(e)}}customElements.define("facet-remove",FacetRemove); 2//# sourceMappingURL=/cdn/shop/t/869/assets/facets.js.map?v=70438155467090807841753351506
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.