PageSourceSearch

https://tataharperskincare.com/cdn/shop/t/350/assets/facets.js?v=162371722636350980441760022787

js tataharperskincare.com collected 2026-10-02 14:48:22 UTC 8,374 bytes, 2 lines download raw bytes

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",evt=>{FacetFiltersForm.loading.start(),this.debouncedOnSubmit(evt)})}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,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)}),window.scroll({top:FacetFiltersForm.section.offsetTop-100,left:0,behavior:"smooth"}),FacetFiltersForm.loading.finish(),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.renderElements(html,"[data-product-container]",FacetFiltersForm.selectors.productGrid),FacetFiltersForm.renderElements(html,"[data-facet-form]",FacetFiltersForm.selectors.filtersForm),FacetFiltersForm.renderProductCount(html),document.dispatchEvent(new CustomEvent("collection:rerendered"))})}static renderSectionFromCache(filterDataUrl,event){const html=FacetFiltersForm.filterData.find(filterDataUrl).html;FacetFiltersForm.renderFilters(html,event),FacetFiltersForm.renderElements(html,"[data-product-container]",FacetFiltersForm.selectors.productGrid),FacetFiltersForm.renderElements(html,"#Drawer-Facets [data-facet-form]",FacetFiltersForm.selectors.filtersForm),FacetFiltersForm.renderProductCount(html),document.dispatchEvent(new CustomEvent("collection:rerendered"))}static renderElements(html,el,selector){const elementContainer=document.querySelector(el);elementContainer.innerHTML=new DOMParser().parseFromString(html,"text/html").querySelector(el).innerHTML,FacetFiltersForm.loading=new window.FoxTheme.AnimateLoading(document.body,{overlay:document.querySelector(selector)}),__reInitTooltip(elementContainer)}static renderProductCount(html){const count=new DOMParser().parseFromString(html,"text/html").querySelector(FacetFiltersForm.selectors.productC
1ount).innerHTML,container=document.querySelector(FacetFiltersForm.selectors.productCount);container.innerHTML=count}static renderFilters(html,event){const parsedHTML=new DOMParser().parseFromString(html,"text/html"),facetDetailsElements=parsedHTML.querySelectorAll("#FacetFiltersForm .js-filter"),matchesIndex=element=>{const jsFilter=event?event.target.closest(".js-filter"):void 0;return jsFilter?element.dataset.index===jsFilter.dataset.index:!1};Array.from(facetDetailsElements).filter(element=>!matchesIndex(element)).forEach(element=>{const target=document.querySelector(`.f-facets__block[data-index="${element.dataset.index}"]`);if(!target)return;target.textContent="";const child=element.querySelector("collapsible-tab")||element.querySelector("#Mobile-SortBy-Block");child&&target.appendChild(child)}),FacetFiltersForm.renderActiveFacets(parsedHTML)}static renderActiveFacets(html){[".active-facets"].forEach(selector=>{const activeFacetsElement=html.querySelector(selector);activeFacetsElement&&(document.querySelector(selector).innerHTML=activeFacetsElement.innerHTML)})}static updateURLHash(searchParams){history.pushState({searchParams},"",`${window.location.pathname}${searchParams&&"?".concat(searchParams)}`)}static getSections(){return[{section:FacetFiltersForm.sectionId}]}createSearchParams(form){const formData=new FormData(form);return form.id==="FacetFiltersForm"&&!FoxThemeSettings.isMobile&&formData.delete("sort_by"),new URLSearchParams(formData).toString()}onSubmitForm(searchParams,event){FacetFiltersForm.renderPage(searchParams,event)}onSubmitHandler(event){const sortFilterForms=document.querySelectorAll("facet-filters-form form");if(FoxThemeSettings.isMobile){const searchParams=this.createSearchParams(event.target.closest("form"));this.onSubmitForm(searchParams,event)}else{const forms=[];sortFilterForms.forEach(form=>{forms.push(this.createSearchParams(form))}),this.onSubmitForm(forms.join("&"),event)}}onActiveFilterClick(event){event.preventDefault();const url=event.currentTarget.href.indexOf("?")===-1?"":event.currentTarget.href.slice(event.currentTarget.href.indexOf("?")+1);FacetFiltersForm.renderPage(url)}}FacetFiltersForm.selectors={container:".f-facets__container",productGrid:"[data-products-grid]",productCount:"[data-product-count]",filtersForm:"[data-facet-form]",facetWrapper:"[data-facets-wrapper]",facetBlock:".f-facets__block"},FacetFiltersForm.section=document.querySelector("#ProductGridContainer"),FacetFiltersForm.sectionId=FacetFiltersForm.section&&FacetFiltersForm.section.dataset.sectionId,FacetFiltersForm.domNodes=queryDomNodes(FacetFiltersForm.selectors,FacetFiltersForm.section),FacetFiltersForm.loading=new window.FoxTheme.AnimateLoading(document.body,{overlay:document.querySelector(FacetFiltersForm.selectors.productGrid)}),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 PriceRange extends HTMLElement{constructor(){super(),this.selectors={inputs:['input[type="number"]'],ranges:['input[type="range"]'],minRange:'[data-type="min-range"]',maxRange:'[data-type="max-range"]',minInput:'[data-type="min-input"]',maxInput:'[data-type="max-input"]'},this.domNodes=queryDomNodes(this.selectors,this),this.priceGap=parseInt(this.dataset.priceGap),this.priceMax=parseInt(this.dataset.priceMax),this.domNodes.inputs.forEach(el=>el.addEventListener("change",this.onInputChange.bind(this))),this.domNodes.ranges.forEach(el=>el.addEventListener("input",this.onSliderChange.bind(this))),this.setMinAndMaxValues()}onSliderChange(event){const input=event.currentTarget,type=input.dataset.type,value=Number(input.value),{minInput,maxInput,minRange,maxRange}=this.domNodes;type==="min-range"&&(maxRange.value-input.value>=this.priceGap?minInput.value=input.value:input.value=maxRange.value-this.priceGap),type==="max-range"&&(input.value-minRange.value>=this.priceGap?maxInput.value=input.value:input.value=Number(minRange.value)+Number(this.priceGap)),this.style.setProperty("--price-min",100*minRange.value/this.priceMax+"%"),this.style.setProperty("--price-max",100*maxRange.value/this.priceMax+"%")}onInputChange(event){this.adjustToValidValues(event.currentTarget),this.setMinAndMaxValues()}setMinAndMaxValues(){const{minInput,maxInput}=this.domNodes;maxInput.value&&minInput.setAttribute("max",Number(maxInput.value)-this.priceGap),minInput.value&&maxInput.setAttribute("min",Number(minInput.value)+this.priceGap),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",e=>{e.preventDefault(),(this.closest("facet-filters-form")||document.querySelector("facet-filters-form")).onActiveFilterClick(e)})}}customElements.define("facet-remove",FacetRemove);class ApplyButton extends HTMLElement{constructor(){super();const drawer=this.closest("drawer-component");this.querySelector("button").addEventListener("click",e=>{e.preventDefault(),drawer&&drawer.closeDrawer(!1)})}}
1customElements.define("facet-apply",ApplyButton);
2//# sourceMappingURL=/cdn/shop/t/350/assets/facets.js.map?v=162371722636350980441760022787

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.