PageSourceSearch

https://salut.md/cdn/shop/t/2/assets/salut-sticky-atc.js?v=114939269665051826321788988703

js salut.md collected 2026-10-02 12:40:34 UTC 2,790 bytes, 2 lines download raw bytes

1class SalutStickyAtc extends HTMLElement{connectedCallback(){this.input=document.getElementById(this.dataset.quantityInput),this.submit=document.getElementById(this.dataset.submitButton),this.submit&&(this.value=this.querySelector("[data-quantity-value]"),this.cta=this.querySelector("[data-sticky-submit]"),this.label=this.querySelector("[data-sticky-label]"),this.spinner=this.querySelector(".loading__spinner"),this.querySelectorAll("[data-step]").forEach(button=>{button.addEventListener("click",()=>this.step(Number(button.dataset.step)))}),this.input?.addEventListener("change",()=>this.render()),this.observeMainButton(),this.watchSubmitState(),this.render())}disconnectedCallback(){this.observer?.disconnect(),this.submitObserver?.disconnect(),this.resizeObserver?.disconnect(),document.documentElement.style.removeProperty("--salut-sticky-atc-height")}observeMainButton(){this.observer=new IntersectionObserver(([entry])=>this.toggle(!entry.isIntersecting),{rootMargin:"0px 0px -80px 0px"}),this.observer.observe(this.submit)}watchSubmitState(){this.submitObserver=new MutationObserver(()=>this.render()),this.submitObserver.observe(this.submit,{attributes:!0,childList:!0,subtree:!0})}toggle(visible){if(visible){this.hidden=!1,requestAnimationFrame(()=>{this.classList.add("is-visible"),this.publishHeight()});return}this.classList.remove("is-visible")}publishHeight(){document.documentElement.style.setProperty("--salut-sticky-atc-height",`${this.offsetHeight}px`),!this.resizeObserver&&(this.resizeObserver=new ResizeObserver(()=>{document.documentElement.style.setProperty("--salut-sticky-atc-height",`${this.offsetHeight}px`)}),this.resizeObserver.observe(this))}step(delta){if(!this.input)return;const min=Number(this.input.min)||1,max=Number(this.input.max)||1/0,increment=Number(this.input.step)||1,next=Number(this.input.value)+delta*increment;this.input.value=Math.min(Math.max(next,min),max),this.input.dispatchEvent(new Event("change",{bubbles:!0})),this.render()}render(){const quantity=Number(this.input?.value)||1,min=Number(this.input?.min)||1,max=Number(this.input?.max)||1/0;this.value.textContent=quantity,this.querySelector('[data-step="-1"]').disabled=quantity<=min,this.querySelector('[data-step="1"]').disabled=quantity>=max;const isLoading=this.submit.classList.contains("loading");this.cta.classList.toggle("loading",isLoading),this.spinner?.classList.toggle("hidden",!isLoading),this.cta.disabled=this.submit.disabled;const mainLabel=this.submit.querySelector("span:not(.visually-hidden)")?.textContent.trim();mainLabel&&(this.label.textContent=mainLabel)}}customElements.get("salut-sticky-atc")||customElements.define("salut-sticky-atc",SalutStickyAtc);
2//# sourceMappingURL=/cdn/shop/t/2/assets/salut-sticky-atc.js.map?v=114939269665051826321788988703

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.