1customElements.get("sticky-add-to-cart")||customElements.define("sticky-add-to-cart",class extends HTMLElement{constructor(){super(),this.reinitalize=this.reinitalize.bind(this),this.stickyAddObserver=null,this.atcMutationObserver=null,this._mutationRaf=null,this._intersectionObserved=null,this._onStickyClick=e=>{e.preventDefault();const main=this.resolveMainCta();main instanceof HTMLElement&&(main.click(),main.scrollIntoView({behavior:"smooth"}))}}connectedCallback(){setTimeout(()=>{this.init()}),document.addEventListener("product:reload",this.reinitalize)}disconnectedCallback(){document.removeEventListener("product:reload",this.reinitalize),this.atcMutationObserver?.disconnect(),this.stickyAddObserver?.disconnect(),this.button?.removeEventListener("click",this._onStickyClick),this._intersectionObserved=null}resolveMainCta(){const section=this.closest(".shopify-section");if(!section)return null;const addBtn=section.querySelector('button[name="add"]'),notifyBtn=section.querySelector("button.btn-notifyme");return addBtn&&!addBtn.classList.contains("hidden")?addBtn:notifyBtn&&!notifyBtn.classList.contains("hidden")?notifyBtn:addBtn||notifyBtn}setupButton(){this.button=this.querySelector("button"),this.button&&(this._clickBound||(this.button.addEventListener("click",this._onStickyClick),this._clickBound=!0))}applyMainCtaToSticky(){if(this.button=this.button||this.querySelector("button"),!this.button||(this.mainCTA=this.resolveMainCta(),!this.mainCTA))return;const mainSpan=this.mainCTA.querySelector("span"),stickySpan=this.button.querySelector("span");mainSpan&&stickySpan&&(stickySpan.textContent=mainSpan.textContent),this.mainCTA.hasAttribute("disabled")?this.button.setAttribute("disabled","disabled"):this.button.removeAttribute("disabled"),this.setupIntersection()}init(){this.setupButton(),this.applyMainCtaToSticky(),this.mutation()}reinitalize(){this.atcMutationObserver?.disconnect(),this.stickyAddObserver?.disconnect(),this._intersectionObserved=null,setTimeout(()=>{this.init()},500)}setupIntersection(){const target=this.mainCTA||this.resolveMainCta();if(!target||this._intersectionObserved===target)return;this.stickyAddObserver?.disconnect(),this._intersectionObserved=target;const stickyAddOptions={root:null,rootMargin:"0px",threshold:.5},stickyAddCallback=entries=>{entries.forEach(entry=>{entry.isIntersecting?this.setAttribute("data-show","false"):this.setAttribute("data-show","true")})};this.stickyAddObserver=new IntersectionObserver(stickyAddCallback,stickyAddOptions),this.stickyAddObserver.observe(target)}mutation(){const section=this.closest(".shopify-section");if(!section)return;const form=section.querySelector("product-form")||section.querySelector(".bundle-product-form")||section;if(!form)return;this.atcMutationObserver?.disconnect();const scheduleSync=()=>{this._mutationRaf==null&&(this._mutationRaf=requestAnimationFrame(()=>{this._mutationRaf=null,this.applyMainCtaToSticky()}))};this.atcMutationObserver=new MutationObserver(scheduleSync),this.atcMutationObserver.observe(form,{attributes:!0,childList:!0,subtree:!0,characterData:!0})}}); 2//# sourceMappingURL=/cdn/shop/t/491/assets/sticky-add-to-cart.js.map?v=55644014553237854431790367360
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.