PageSourceSearch

https://www.lazylama.nl/cdn/shop/t/4/assets/collection-filters.js?v=6744880498565256171790942592

js lazylama.nl collected 2026-10-07 18:56:16 UTC 12,751 bytes, 2 lines download raw bytes

1export const sectionUrl=(href,sectionId,base=window.location.href)=>{const url=new URL(href,base);return url.searchParams.set("section_id",sectionId),`${url.pathname}${url.search}`},pageUrl=(href,base=window.location.href)=>{const url=new URL(href,base);return url.searchParams.delete("section_id"),`${url.pathname}${url.search}`},firstPageUrl=(href,base=window.location.href)=>{const url=new URL(href,base);return url.searchParams.delete("page"),`${url.pathname}${url.search}${url.hash}`},formUrl=(action,data,current=window.location.href)=>{const url=new URL(action,current);url.search=new URLSearchParams(data).toString();const prefix=new URL(current).searchParams.get("options[prefix]");return prefix!==null&&!url.searchParams.has("options[prefix]")&&url.searchParams.set("options[prefix]",prefix),`${url.pathname}${url.search}`},isLaterPage=(href,base=window.location.href)=>Number(new URL(href,base).searchParams.get("page"))>1;const layout=document.querySelector(".collection-grid__layout");if(layout){const filters=()=>layout.querySelector(".collection-grid__filters"),results=()=>layout.querySelector(".collection-grid__results"),toggle=()=>layout.querySelector(".collection-grid__toggle"),backdrop=()=>layout.querySelector(".collection-grid__backdrop"),setDrawer=open=>{const panel=filters();if(!panel)return;panel.toggleAttribute("data-open",open),toggle()?.setAttribute("aria-expanded",String(open)),document.documentElement.toggleAttribute("scroll-lock",open);const shade=backdrop();shade&&(shade.hidden=!open),open?layout.querySelector(".collection-grid__close")?.focus():toggle()?.focus()},paintPrice=()=>{const form=layout.querySelector(".collection-grid__price");if(!form)return;const slider=form.querySelector(".collection-grid__slider"),minInput=form.querySelector('[data-role="min"]'),maxInput=form.querySelector('[data-role="max"]'),ceiling=Number(maxInput.max);Number(minInput.value)>Number(maxInput.value)&&(document.activeElement===minInput?minInput.value=maxInput.value:maxInput.value=minInput.value),slider.style.setProperty("--from",`${Number(minInput.value)/ceiling*100}%`),slider.style.setProperty("--to",`${Number(maxInput.value)/ceiling*100}%`),form.querySelector("[data-price-from]").textContent=minInput.value,form.querySelector("[data-price-to]").textContent=maxInput.value},swap=async(url,{append=!1,push=!0,focusHref=null,insideDrawer=!1}={})=>{layout.setAttribute("aria-busy","true");try{const response=await fetch(url);if(!response.ok)throw new Error(`${response.status}`);const markup=new DOMParser().parseFromString(await response.text(),"text/html");if(append){const productList=results().querySelector("[data-results-products]"),nextProductList=markup.querySelector("[data-results-products]");productList&&nextProductList&&markup.querySelectorAll("[data-results-products] > li").forEach(item=>productList.append(item));const otherList=results().querySelector("[data-results-other-list]"),nextOther=markup.querySelector("[data-results-other]");otherList?markup.querySelectorAll("[data-results-other-list] > li").forEach(item=>otherList.append(item)):nextOther&&results().querySelector("[data-results-products]").insertAdjacentElement("afterend",nextOther);const pagination=results().querySelector(".collection-grid__pagination"),nextPagination=markup.querySelector(".collection-grid__pagination");nextPagination?pagination.replaceWith(nextPagination):pagination.remove()}else{const nextResults=markup.querySelector(".collection-grid__results");if(!nextResults){window.location.assign(url);return}const wasOpen=filters()?.hasAttribute("data-open"),closeDrawerAfter=insideDrawer&&wasOpen,keepDrawerOpen=wasOpen&&!closeDrawerAfter,nextFilters=markup.querySelector(".collection-grid__filters");wasOpen&&(!nextFilters||closeDrawerAfter)&&setDrawer(!1),results().replaceWith(nextResults),nextFilters?filters()?(filters().innerHTML=nextFilters.innerHTML,keepDrawerOpen&&filters().setAttribute("data-open","")):(layout.insertBefore(nextFilters,results()),keepDrawerOpen&&nextFilters.setAttribute("data-open","")):filters()?.remove(),layout.classList.toggle("collection-grid__layout--no-filters",!nextFilters),paintPrice(),startSplit(url);const header=document.querySelector(".collection-header__inner"),nextHeader=markup.querySelector(".collection-header__inner");if(header&&nextHeader&&(header.innerHTML=nextHeader.innerHTML,window.initCollectionIntroClamp?.()),document.title=markup.title,focusHref){const candidates=document.querySelectorAll(".collection-grid__filters a[href], .collection-grid__reset, .collection-header__chips a[href]");let match=null;for(const candidate of candidates)if(candidate.href===focusHref){match=candidate;break}if(match&&match.focus(),!match||document.activeElement!==match){const heading=document.querySelector(".collection-header__title")||results().querySelector(".collection-grid__count-total");heading&&(heading.hasAttribute("tabindex")||heading.setAttribute("tabindex","-1"),heading.focus())}}}push?history.pushState({},"",url):history.replaceState({},"",url)}catch(error){console.error("Kon de resultaten niet laden",error),window.location.assign(url)}finally{layout.removeAttribute("aria-busy")}};let split=null,splitting=null;const fetchSection=async(url,sectionId)=>{const response=await fetch(sectionUrl(url,sectionId));if(!response.ok)throw new Error(`${response.status}`);const markup=new DOMParser().parseFromString(await response.text(),"text/html");if(!markup.querySelector(".collection-grid__results [data-results-products]"))throw new Error("Geen resultaten in de sectie");return markup},itemKey=item=>item.querySelector("a[href]")?.pathname,appendItems=(markup,productList)=>{const shown=new Set([...results().querySelectorAll("[data-results-products] > li, [data-results-other-list] > li")].map(itemKey)),fresh=item=>{const key=itemKey(item);return key&&shown.has(key)?!1:(shown.add(key),!0)},products=[...markup.querySelectorAll("[data-results-products] > li")].filter(fresh);
1productList.append(...products);const otherList=results().querySelector("[data-results-other-list]"),others=otherList?[...markup.querySelectorAll("[data-results-other-list] > li")].filter(fresh):[];return otherList?.append(...others),{products,others}},paintSplit=markup=>{let pagination=results().querySelector("[data-split-pagination]");if(!pagination){pagination=split.template.content.querySelector("[data-split-pagination]").cloneNode(!0);const current=results().querySelector(".collection-grid__pagination");current?current.replaceWith(pagination):results().append(pagination);const soldOut=pagination.querySelector("[data-sold-out-more]");soldOut.href=firstPageUrl(soldOut.getAttribute("href"))}const next=markup.querySelector(".collection-grid__more"),more=pagination.querySelector("[data-split-more]");next?more.href=pageUrl(next.getAttribute("href")):more.removeAttribute("href"),more.hidden=!next,pagination.querySelector("[data-sold-out-more]").hidden=!!next||split.revealed,pagination.querySelector(".collection-grid__split-error").hidden=!0;const seen=results().querySelectorAll("[data-results-products] > li, [data-results-other-list] > li").length,total=Math.max(split.total,seen,1);pagination.querySelector("[data-split-progress]").textContent=`${seen} van ${total} bekeken`,pagination.querySelector(".collection-grid__progress-bar").style.setProperty("--progress",`${Math.floor(seen*100/total)}%`)},startSplit=(url=window.location.href)=>{const owner=results(),template=owner?.querySelector("template[data-sold-out]");if(split=template?{template,sectionId:template.dataset.sectionId,total:Number(template.dataset.total),revealed:!1,reveal:null}:null,splitting=null,!split)return;const laterPage=isLaterPage(url),pending2=fetchSection(firstPageUrl(template.dataset.inStockUrl),split.sectionId).then(markup=>{if(results()!==owner)return;const list=owner.querySelector("[data-results-products]");list.replaceChildren(),laterPage&&(owner.querySelector("[data-results-other-list]")?.replaceChildren(),history.replaceState({},"",firstPageUrl(window.location.href))),appendItems(markup,list),paintSplit(markup)}).catch(error=>{console.error("Kon de leverbare producten niet laden",error),results()===owner&&(split=null)}).finally(()=>{splitting===pending2&&(splitting=null)});splitting=pending2},loadSplit=async(link,{reveal=!1}={})=>{const owner=results(),pagination=link.closest("[data-split-pagination]");layout.setAttribute("aria-busy","true");try{let markup=await fetchSection(link.href,split.sectionId);if(results()!==owner)return;let list=[...owner.querySelectorAll("[data-results-products]")].pop(),target=null;if(reveal){target=split.template.content.querySelector(".collection-grid__sold-out-title").cloneNode(!0);const soldOutList=list.cloneNode(!1);(owner.querySelector("[data-results-other]")||pagination).before(target,soldOutList),list=soldOutList,split.revealed=!0,split.reveal={title:target,list:soldOutList}}let{products,others}=appendItems(markup,list);paintSplit(markup);const more=pagination.querySelector("[data-split-more]");for(;!products.length&&!more.hidden;){if(markup=await fetchSection(more.href,split.sectionId),results()!==owner)return;const page=appendItems(markup,list);products=page.products,others=others.concat(page.others),paintSplit(markup)}split.reveal&&!split.reveal.list.children.length&&(split.reveal.title.remove(),split.reveal.list.remove(),target=pagination.querySelector("[data-sold-out-none]"),target.hidden=!1),target||=products[0]?.querySelector("a[href]")||others[0]?.querySelector("a[href]")||pagination.querySelector(".collection-grid__more:not([hidden])")||pagination.querySelector("[data-split-progress]"),target?.focus({preventScroll:!0}),split.reveal=null}catch(error){console.error("Kon de producten niet laden",error),pagination.querySelector(".collection-grid__split-error").hidden=!1,pagination.querySelector(".collection-grid__more:not([hidden])")?.focus({preventScroll:!0})}finally{layout.removeAttribute("aria-busy")}};layout.addEventListener("click",event=>{const splitLink=split&&event.target.closest("[data-split-more], [data-sold-out-more]");if(splitLink){if(event.button!==0||event.metaKey||event.ctrlKey||event.shiftKey||event.altKey||(event.preventDefault(),splitting||layout.hasAttribute("aria-busy")))return;loadSplit(splitLink,{reveal:splitLink.hasAttribute("data-sold-out-more")});return}if(event.target.closest(".collection-grid__toggle")){setDrawer(!filters()?.hasAttribute("data-open"));return}if(event.target.closest(".collection-grid__close")||event.target.closest(".collection-grid__backdrop")){setDrawer(!1);return}const more=event.target.closest(".collection-grid__more");if(more){if(event.preventDefault(),splitting)return;swap(more.href,{append:!0,push:!1});return}const link=event.target.closest(".tag-filter__row, .tag-filter__chip, .collection-grid__reset");if(link?.href){if(event.button!==0||event.metaKey||event.ctrlKey||event.shiftKey||event.altKey)return;event.preventDefault(),swap(link.href,{focusHref:link.href,insideDrawer:!!link.closest(".collection-grid__filters[data-open]")})}}),layout.addEventListener("input",event=>{event.target.closest(".collection-grid__price")&&paintPrice()});let pending;layout.addEventListener("change",event=>{const form=event.target.closest(".collection-grid__price, .collection-grid__sort");form&&(clearTimeout(pending),pending=setTimeout(()=>{swap(formUrl(form.action,new FormData(form)))},300))}),layout.addEventListener("pointerdown",event=>{const slider=event.target.closest(".collection-grid__slider");if(!slider)return;const minInput=slider.querySelector('[data-role="min"]'),maxInput=slider.querySelector('[data-role="max"]'),bounds=slider.getBoundingClientRect(),position=(event.clientX-bounds.left)/bounds.width*Number(maxInput.max),nearMin=Math.abs(position-Number(minInput.value))<=Math.abs(position-Number(maxInput.value));minInput.style.zIndex=nearMin?"3":"2",maxInput.style.zIndex=nearMin?"2":"3"}),document.addEventListener("click",event=>{const chip=event.target.closest(".collection-header__chips a");chip?.href&&(event.button!==0||event.metaKey||event.ctrlKey||event.shiftKey||event.altKey||(event.preventDefault(),swap(chip.href,{focusHref:chip.href}),window.scrollTo({top:0,behavior:"smooth"}
1)))}),document.addEventListener("keydown",event=>{event.key==="Escape"&&filters()?.hasAttribute("data-open")&&setDrawer(!1)}),window.addEventListener("popstate",()=>swap(window.location.href,{push:!1}));let resizeTimer;window.addEventListener("resize",()=>{document.documentElement.dataset.resizing="",clearTimeout(resizeTimer),resizeTimer=setTimeout(()=>delete document.documentElement.dataset.resizing,200)}),paintPrice(),startSplit()}
2//# sourceMappingURL=/cdn/shop/t/4/assets/collection-filters.js.map?v=6744880498565256171790942592

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.