PageSourceSearch

https://www.lacoquetakids.com/cdn/shop/t/291/assets/collection-filters.js?v=110877253708360026851761906980

js lacoquetakids.com collected 2026-09-26 18:43:57 UTC 11,261 bytes, 2 lines download raw bytes

1const{debounce,getElement,getElements}=window.BAO.Utils;class CollectionFiltersRenderer{constructor(form){this.form=form}fromCache(filterDataUrl,e){const html=this.form.filterData.find(element=>filterDataUrl(element)).html;this.form.log("fromCache",{filterDataUrl,e,html}),this.render(html,e)}async fromFetch(section,url,e){const html=await window.BAO.sectionRenderer.fetchSingle(section,url);this.form.log("fromFetch",{section,url,html}),this.form.filterData.push({html,url}),this.render(html,e)}render(html,e){this.renderFilters(html,e),this.renderProductGridContainer(html),this.renderProductCount(html),this.form.loading=!1,window.BAO.dispatchEvent(window.BAO.EVENTS.PRODUCT_GRID.RENDERED)}renderFilters(html,e){const parsedHTML=new DOMParser().parseFromString(html,"text/html"),detailSelector=[this.form.els?.facet?.selector,this.form.externalEls?.facet?.selector].filter(Boolean).join(","),facetDetailElements=getElements(detailSelector,{context:parsedHTML}),matchesIndex=element=>{const facet=e?e.target.closest(detailSelector):null;return facet?element.dataset.index===facet.dataset.index:!1},facetsToRender=facetDetailElements.filter(el=>!matchesIndex(el)),countsToRender=facetDetailElements.find(el=>matchesIndex(el));this.form.log("renderFilters",{e,parsedHTML,facetDetailElements,facetsToRender,countsToRender}),facetsToRender.forEach(element=>{const selector=detailSelector.split(",").map(selector2=>`${selector2}[data-index="${element.dataset.index}"]`).join(","),el=getElement(selector);el.innerHTML=element.innerHTML}),this.renderActiveFacets(parsedHTML),this.renderAdditionalElements(parsedHTML),countsToRender&&this.renderSelectedFacetCount(countsToRender,e.target.closest(detailSelector))}renderActiveFacets(parsedHTML){this.activeFacetSelectors.forEach(selector=>{const activeFacetElement=parsedHTML.querySelector(selector);this.form.log("renderActiveFacets",{parsedHTML,activeFacetElement,selector}),activeFacetElement&&getElements(selector).forEach(el=>el.innerHTML=activeFacetElement.innerHTML)})}renderAdditionalElements(parsedHTML){}renderProductGridContainer(html){const parsedHTML=new DOMParser().parseFromString(html,"text/html");this.form.externalEls["product-grid"].element.innerHTML=getElement(this.form.externalEls["product-grid"].selector,{context:parsedHTML}).innerHTML}renderProductCount(html){const count=new DOMParser().parseFromString(html,"text/html").querySelector(this.form?.els["product-count"]?.selector)?.innerHTML;this.form.log("renderProductCount",{html,count,countElements:this.countElements}),count&&this.countElements.forEach(element=>element.innerHTML=count)}renderSelectedFacetCount(source,target){const sourceElement=getElement(this.form.els["facets-selected"].selector,{context:source}),targetElement=getElement(this.form.els["facets-selected"].selector,{context:target});sourceElement&&targetElement&&(targetElement.outerHTML=sourceElement.outerHTML)}get countElements(){return getElements("[data-product-grid-count]")}get activeFacetSelectors(){return"active-facets"in this.form.externalEls?[this.form.els["active-facets"].selector,this.form.externalEls["active-facets"].selector]:[this.form.els["active-facets"].selector]}}class CollectionFiltersForm extends window.BAO.CustomElement({SuperClass:HTMLFormElement}){static get requiredElements(){return["facets","facet","facet-summary","product-count"]}static get requiredExternalElements(){return["container","product-grid"]}constructor(){super(),this.sections=[{id:"template-collection-product-grid",section:this.dataset.id,selector:".shopify-section"}],this.filterData=[],this.searchParams={previous:new URLSearchParams(window.location.search),current:new URLSearchParams(window.location.search),initial:new URLSearchParams(window.location.search)},this.renderer=new CollectionFiltersRenderer(this)}setupListeners(){super.setupListeners(),this.onFacetRemovalClick=this.onFacetRemovalClick.bind(this),this.debouncedOnSubmit=debounce(e=>this.onSubmit(e),700),this.listeners.add(this,"input",this.debouncedOnSubmit.bind(this)),this.listeners.add(window,"popstate",this.onHistoryChange.bind(this)),this.listeners.add(this.els.facets.element,"keyup",this.onKeyUp.bind(this)),this.listeners.add(document,"click",this.onPaginationClick.bind(this))}onHistoryChange(e){const searchParams=e.state?e.state.searchParams:this.form.searchParams.initial;searchParams.toString()!==this.form.searchParams.previous.toString()&&this.form.renderPage({searchParams,updateURLHash:!1})}onFacetRemovalClick(e){e.preventDefault();const searchParams=e.currentTarget.href.includes("?")?e.currentTarget.href.slice(e.currentTarget.href.indexOf("?")+1):"";this.log("onFacetRemovalClick",{searchParams}),this.renderPage({searchParams})}onKeyUp(e){if(e.code.toUpperCase()!=="ESCAPE")return;const openFacet=e.target.closest(`${this.els.facet.selector}[open]`);if(!openFacet)return;const summary=getElement(`${this.els["facet-summary"].selector}`,{context:openFacet});openFacet.removeAttribute("open"),summary.setAttribute("aria-expanded","fal
1se"),summary.focus()}onPaginationClick(e){if(!e.target.closest(this.externalEls?.pagination?.selector))return;e.preventDefault();const anchor=e.target.closest("a");if(this.log("onPaginationClick",{anchor}),!anchor||anchor.getAttribute("href")===""||anchor.disabled)return;const href=anchor.getAttribute("href");this.log("onPaginationClick",{href});const wantedPage=new URLSearchParams(href.split("?")[1]).get("page")??"1",currentSearchParams=new URLSearchParams(this.searchParams.current.toString());currentSearchParams.set("page",wantedPage),this.renderPage({searchParams:currentSearchParams.toString()})}onSubmit(e){e.preventDefault();const formData=new FormData(this),searchParams=new URLSearchParams(formData).toString();this.renderPage({searchParams,e})}renderPage({searchParams,e,updateURLHash=!0}={}){this.log("renderPage",{searchParams,e,updateURLHash}),this.searchParams.previous=this.searchParams.current,this.searchParams.current=new URLSearchParams(searchParams),this.loading=!0,this.sections.forEach(section=>{const url=`${window.location.pathname}?section_id=${section.section}&${this.searchParams.current.toString()}`,filterDataUrl=element=>element.url===url;this.log("renderPageSections",{section,url}),this.filterData.some(element=>filterDataUrl(element))?this.renderer.fromCache(filterDataUrl,e):this.renderer.fromFetch(section.section,url,e)}),updateURLHash&&this.updateURLHash(this.searchParams.current)}updateURLHash(searchParams){history.pushState({searchParams:searchParams.toString()},"",`${window.location.pathname}${searchParams&&"?".concat(searchParams.toString())}`)}get loading(){return this._loading}set loading(val){this._loading=val,this.setAttribute("aria-busy",val.toString()),this.externalEls?.container.element.setAttribute("aria-busy",val.toString())}}customElements.get("collection-filters-form")||customElements.define("collection-filters-form",CollectionFiltersForm,{extends:"form"});class PriceRange extends window.BAO.CustomElement(){static get requiredElements(){return["min","max"]}constructor(){super(),this.setMinAndMaxValues()}setupListeners(){super.setupListeners(),this.onRangeChange=this.onRangeChange.bind(this),getElements("input",{context:this}).forEach(el=>this.listeners.add(el,"change",this.onRangeChange))}onRangeChange(e){this.adjustToValidValues(e.currentTarget),this.setMinAndMaxValues()}setMinAndMaxValues(){this.maxInput.value&&this.minInput.setAttribute("max",this.maxInput.value),this.minInput.value&&this.maxInput.setAttribute("min",this.minInput.value),this.minInput.value===""&&this.maxInput.setAttribute("min","0"),this.maxInput.value===""&&this.minInput.setAttribute("max",this.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.toString()),value>max&&(input.value=max.toString())}get maxInput(){return this.els.max.element}get minInput(){return this.els.min.element}}customElements.get("price-range")||customElements.define("price-range",PriceRange);class FacetRemove extends window.BAO.CustomElement(){setupListeners(){super.setupListeners(),this.listeners.add(this.querySelector("a"),"click",e=>{e.preventDefault(),this.form.onFacetRemovalClick(e)})}get form(){const selector='collection-filters-form, [is="collection-filters-form"]';return this.closest(selector)||document.querySelector(selector)}}customElements.get("facet-remove")||customElements.define("facet-remove",FacetRemove);class FilterFacet extends window.BAO.CustomElement({SuperClass:HTMLDetailsElement}){static get requiredElements(){return["summary","content","close"]}constructor(){super(),this.animation=null,this.isClosing=!1,this.isExpanding=!1}setupListeners(){super.setupListeners(),this.onSummaryClick=this.onSummaryClick.bind(this),this.onCloseClick=this.onCloseClick.bind(this),this.listeners.add(this,"click",this.onSummaryClick),this.listeners.add(this,"click",this.onCloseClick)}onSummaryClick(e){e.target.closest(this.els.summary.selector)&&(e.preventDefault(),this.isClosing||!this.open?this.start():(this.isExpanding||this.open)&&this.close())}onCloseClick(e){e.target.closest(this.els.close.selector)&&this.close()}start(){this.open=!0,window.requestAnimationFrame(()=>this.expand())}close(){this.shrink()}shrink(){this.isClosing=!0,this.animation&&this.animation.cancel();const content=window.BAO.Utils.getElement(this.els.content.selector,{context:this});this.animation=content.animate({opacity:[1,0],transform:["none","translateY(-15px)"]},{duration:400,easing:"ease"}),this.animation.onfinish=()=>this.onAnimationFinish(!1),this.animation.oncancel=()=>this.isClosing=!1}expand(){this.isExpanding=!0,this.animation&&this.animation.cancel();const content=window.BAO.Utils.getElement(this.els.content.selector,{context:this});this.animation=content.element.animate({opacity:[0,1],transform:["translateY(-15px)","none"]},{duration:400,easing:"ease"}),this.animation.onfinish=()=>this.onAnimationFinish(!0),this.animation.oncancel=()=>this.isExpanding=!1}onAnimationFinish(open){this.open=open,this.animation=null,this.isClosing=!1,this.isExpanding=!1}}customElements.get("filter-facet")||customElements.define("filter-facet",FilterFacet,{extends:"details"});class SortBy extends window.BAO.CustomElement(){setupListeners(){super.setupListeners(),this.els.item.elements.forEac
1h(item=>{this.onClick=this.onClick.bind(this),item.addEventListener("click",this.onClick)}),this.onChange=this.onChange.bind(this),this.listeners.add(this.externalEls.select.element,"change",this.onChange)}onClick(e){this.els.item.elements.forEach(item=>{item.removeAttribute("checked")}),e.target.setAttribute("checked",!0);const sortBy=getElement("#SortBy",document),optionToSelect=Array.from(sortBy.options).find(item=>item.value===e.target.value);sortBy.value=optionToSelect.value}onChange(e){const selectValue=e.target.value;this.els.item.elements.forEach(item=>{item.value===selectValue&&(this.els.item.elements.forEach(el=>{el.removeAttribute("checked")}),item.setAttribute("checked",!0))})}}customElements.get("sort-by")||customElements.define("sort-by",SortBy);
2//# sourceMappingURL=/cdn/shop/t/291/assets/collection-filters.js.map?v=110877253708360026851761906980

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.