1if(!customElements.get("auzi-card-variants")){const images=new Map,queue=[];let active=0;const pump=()=>{for(;active<3&&queue.length;){active++;const{url,resolve}=queue.shift(),image=new Image;image.src=url,image.decode().then(()=>resolve(!0),()=>{images.delete(url),resolve(!1)}).finally(()=>{active--,pump()})}},preload=(url,priority=!1)=>{if(!url)return Promise.resolve(!1);if(images.has(url)||images.set(url,new Promise(resolve=>{queue[priority?"unshift":"push"]({url,resolve})})),priority){const i=queue.findIndex(job=>job.url===url);i>0&&queue.unshift(queue.splice(i,1)[0])}return pump(),images.get(url)};customElements.define("auzi-card-variants",class extends HTMLElement{connectedCallback(){if(this.initialized)return;const data=this.querySelector("[data-card-variants]");if(!data)return;this.initialized=!0;const model=JSON.parse(data.textContent);let selected=model.selected,desiredSelection=[...selected];const groups=[...this.querySelectorAll("[data-option-index]")];let request=0,animation;const card=this.closest(".product-card-wrapper");if(groups.length){card?.classList.add("auzi-variant-preview");const initial=model.variants.find(v=>v.options.every((value,i)=>value===selected[i]));if(initial){const url=new URL(this.dataset.productUrl,location.origin);url.searchParams.set("variant",initial.id),card?.querySelectorAll(".card__heading a").forEach(link=>{link.href=url.href})}}const warm=()=>[...new Set(model.variants.map(v=>v.image).filter(Boolean))].forEach(url=>preload(url)),observer=new IntersectionObserver(entries=>{entries.some(e=>e.isIntersecting)&&(warm(),observer.disconnect())},{rootMargin:"100px"});observer.observe(this),this.addEventListener("click",async event=>{const button=event.target.closest("button[data-value]");if(!button||!this.contains(button))return;event.preventDefault(),event.stopPropagation();const index=Number(button.closest("[data-option-index]").dataset.optionIndex),desired=[...desiredSelection];desired[index]=button.dataset.value;const variant=model.variants.find(v=>v.options.every((value,i)=>value===desired[i]));if(!variant?.image)return;desiredSelection=variant.options;const currentRequest=++request,image=card?.querySelector(".card__media img");if(image&&variant.image){this.setAttribute("aria-busy","true");const ready=await preload(variant.image,!0);if(currentRequest!==request)return;if(this.removeAttribute("aria-busy"),!ready){desiredSelection=[...selected];return}selected=variant.options;const price=card.querySelector("[data-auzi-card-price]");if(price){price.querySelector("[data-current-price]").innerHTML=variant.priceText;const compare=price.querySelector("[data-compare-price]");compare.hidden=!(variant.compareAt>variant.price),compare.innerHTML=compare.hidden?"":variant.compareText,price.dataset.auziBasePriceCents=String(variant.price||0),price.dataset.auziComparePriceCents=String(variant.compareAt||0),document.dispatchEvent(new CustomEvent("auzi:card-price-change",{detail:{root:price}}))}groups.forEach(group=>{const i=Number(group.dataset.optionIndex);group.querySelector("[data-option-label]").textContent=selected[i],group.querySelectorAll("button").forEach(b=>b.setAttribute("aria-pressed",String(b.dataset.value===selected[i])))});const url=new URL(this.dataset.productUrl,location.origin);url.searchParams.set("variant",variant.id),card.querySelectorAll(".card__heading a").forEach(link=>{link.href=url.href}),animation?.cancel();const changed=image.getAttribute("src")!==variant.image;image.removeAttribute("srcset"),image.src=variant.image,image.alt=variant.alt,card.classList.add("auzi-variant-preview"),changed&&!matchMedia("(prefers-reduced-motion: reduce)").matches&&(animation=image.animate([{opacity:.75},{opacity:1}],{duration:150,easing:"ease-out"}))}else this.removeAttribute("aria-busy")})}})} 2//# sourceMappingURL=/cdn/shop/t/92/assets/auzi-card-variants.js.map?v=166503732765604384531791322956
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.