1function throttle(fn,wait=300){let throttleTimeoutId=-1,tick=!1;return()=>{clearTimeout(throttleTimeoutId),throttleTimeoutId=setTimeout(fn,wait),tick||(fn.call(),tick=!0,setTimeout(()=>{tick=!1},wait))}}customElements.get("sticky-atc")||customElements.whenDefined("product-form").then(()=>{class StickyAtc extends customElements.get("product-form"){constructor(){super(),this.section=this.closest(".section-main-product"),this.buyButtons=this.section.querySelector(".quantity-submit-row"),this.buyButtons&&(this.mainProductForm=this.section.querySelector("product-form"),this.mainProductSubmitForm=this.mainProductForm.getSubmitForm(),this.submitForm=this.getSubmitForm(),this.imageContainer=this.querySelector(".sticky-atc__image"),this.variantTitle=this.querySelector(".sticky-atc__details__variant__title"),this.variantTitle?.toggleAttribute("hidden",!this.section.querySelector("variant-picker")),this.button=this.querySelector(".add-to-cart"),this.throttledOnScroll=throttle(this.handleScroll.bind(this)),window.addEventListener("scroll",this.throttledOnScroll),this.section.addEventListener("on:media-gallery:change",this.updateImage.bind(this)),this.updateImage(),this.updateAddToCartButton())}disconnectedCallback(){window.removeEventListener("scroll",this.throttledOnScroll)}async handleSubmit(evt){if(evt.preventDefault(),!this.section.querySelector('.js-product-form input[name="id"]').value){const target=this.section.querySelector("#product-info");target&&target.offsetParent&&(evt.preventDefault(),theme.scrollToRevealElement(target));return}const customFormValid=this.mainProductForm.validate();if(!customFormValid||!this.mainProductSubmitForm.reportValidity()){if(evt.preventDefault(),!customFormValid)theme.scrollToRevealElement(this.mainProductForm);else{const input=Array.from(this.mainProductSubmitForm.elements).find(el=>!el.checkValidity());setTimeout(()=>theme.scrollToRevealElement(input),100)}return}this.submitForm.querySelectorAll("[data-copied]").forEach(el=>el.remove());const formData=new FormData(this.mainProductSubmitForm);for(const p of formData)if(!this.submitForm.querySelector(`[name="${p[0]}"]`)){const input=document.createElement("input");input.name=p[0],input.value=p[1],input.hidden=!0,input.setAttribute("data-copied",""),this.submitForm.append(input)}super.handleSubmit(evt)}handleScroll(){const topOffset=document.querySelector(".pageheader--sticky")?document.querySelector(".section-header").offsetHeight:0;this.classList.toggle("sticky-atc--out",this.buyButtons.getBoundingClientRect().bottom>topOffset),document.body.classList.toggle("scrolled-to-bottom",window.scrollY+window.innerHeight+100>document.body.scrollHeight)}updateImage(){const mainImage=this.section.querySelector(".media-gallery .main-image .slider__item.is-active .product-media img");mainImage?this.imageContainer.innerHTML=mainImage.outerHTML:this.imageContainer.textContent=""}updateAddToCartButton(){this.section.querySelector('.js-product-form input[name="id"]').value||(this.button.innerHTML=this.button.dataset.unavailableText)}}customElements.define("sticky-atc",StickyAtc)}); 2//# sourceMappingURL=/cdn/shop/t/46/assets/sticky-atc.js.map?v=157204796724179211121783343428
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.