PageSourceSearch

https://thedesitech.com/cdn/shop/t/105/assets/desitech-sticky-cart.js?v=76325504011693782251791369813

js thedesitech.com collected 2026-10-09 21:28:04 UTC 5,194 bytes, 2 lines download raw bytes

1if(!customElements.get("desitech-sticky-cart")){class DesitechStickyCart extends HTMLElement{connectedCallback(){this.buttons=[...this.querySelectorAll("[data-sticky-add],[data-sticky-buy]")],this.price=this.querySelector("[data-prepaid-price]");const variantsNode=this.querySelector("[data-sticky-variants]")||this.querySelector('script[type="application/json"]');try{this.variants=variantsNode?JSON.parse(variantsNode.textContent):[]}catch{this.variants=[]}this.formatter=new Intl.NumberFormat(this.dataset.locale||"en-IN",{style:"currency",currency:this.dataset.currency||"INR"}),this._booted=!1,this.initWhenReady()}initWhenReady(){const boot=()=>{if(this._booted)return!0;if(this.section=document.querySelector("[data-dep-root], [data-c100-root], [data-sw-root], .section-main-product"),!this.section)return!1;const form=this.getForm();if(!form||!form.querySelector('[name="add"]'))return!1;this.abort=new AbortController;const options={signal:this.abort.signal};return this.section.addEventListener("on:variant:change",e=>{this.variant=e.detail?.variant,this.sync()},options),this.section.addEventListener("change",()=>this.sync(),options),this.section.addEventListener("on:cart:error",()=>this.revealForm(),options),this.buttons.forEach(button=>button.addEventListener("click",()=>this.add(button),options)),this.observer=new MutationObserver(()=>this.sync()),this.observer.observe(this.section,{subtree:!0,childList:!0,attributes:!0,attributeFilter:["disabled","aria-disabled","value"]}),"ResizeObserver"in window&&(this.resize=new ResizeObserver(()=>document.body.style.setProperty("--desitech-sticky-cart-height",`${this.getBoundingClientRect().height+12}px`)),this.resize.observe(this)),this.initTicker(),this._booted=!0,this.sync(),!0};if(boot())return;const tryBoot=()=>
1{boot()&&(clearInterval(this._initTimer),this._initTimer=null)};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",tryBoot,{once:!0}):tryBoot(),this._initTimer=setInterval(tryBoot,200),setTimeout(()=>{this._initTimer&&(clearInterval(this._initTimer),this._initTimer=null)},1e4)}initTicker(){const label=this.querySelector("[data-sticky-ticker]"),node=this.querySelector("[data-sticky-messages]");if(!label||!node||matchMedia("(prefers-reduced-motion: reduce)").matches)return;let messages=[];try{messages=JSON.parse(node.textContent).filter(Boolean)}catch{}if(messages.length<2)return;let i=0;this.ticker=setInterval(()=>{i=(i+1)%messages.length,label.classList.add("is-changing"),setTimeout(()=>{label.textContent=messages[i],label.classList.remove("is-changing")},160)},3500)}getForm(){return this.section?.querySelector("product-form .js-product-form, form.js-product-form")}getCurrentVariant(form){const id=form?.querySelector('[name="id"]')?.value;return this.section?.querySelector("variant-picker, desitech-cover-picker, desitech-variant-picker")?.getVariantData?.()||(String(this.variant?.id)===String(id)?this.variant:this.variants.find(v=>String(v.id)===String(id)))}sync(){const form=this.getForm(),main=form?.querySelector('[name="add"]');if(this.hidden=!main,document.body.classList.toggle("desitech-has-sticky-cart",!!main),!main)return;const id=form.querySelector('[name="id"]')?.value,variant=this.getCurrentVariant(form),busy=main.getAttribute("aria-disabled")==="true",disabled=busy||!!id&&(main.disabled||variant?.available===!1);if(this.buttons.forEach(button=>{button.disabled=disabled,button.hasAttribute("data-sticky-add")&&(button.textContent=id?variant?.available===!1?this.dataset.soldOutLabel:"ADD TO CART":"CHOOSE OPTIONS"),button.hasAttribute("data-sticky-buy")&&(button.textContent=id?variant?.available===!1?this.dataset.soldOutLabel:"BUY NOW":"CHOOSE OPTIONS"),button.setAttribute("aria-busy",String(busy))}),this.price)if(variant&&Number.isFinite(Number(variant.price))){const variantPrice=Number(variant.price),customFactor=parseFloat(this.dataset.prepaidFactor),finalPrice=this.dataset.caseCover==="true"?variantPrice:Number.isFinite(customFactor)?Math.round(variantPrice*customFactor):Math.round(variantPrice*.85);this.price.textContent=this.formatter.format(finalPrice/100)}else this.price.textContent="Select a variant"}revealForm(){(this.section?.querySelector("desitech-variant-picker, variant-picker, .dt-cover-options")||this.getForm())?.scrollIntoView({behavior:"smooth",block:"center"})}add(button){const form=this.getForm(),main=form?.querySelector('[name="add"]');if(!main)return;if(!form.querySelector('[name="id"]')?.value){this.revealForm();return}if(main.disabled||main.getAttribute("aria-disabled")==="true")return;const component=form.closest("product-form");if(component?.validate&&!component.validate()||!form.reportValidity()){this.revealForm();return}main.click(),this.sync()}disconnectedCallback(){this.abort?.abort(),this.observer?.disconnect(),this.resize?.disconnect(),clearInterval(this.ticker),clearInterval(this._initTimer),document.body.classList.remove("desitech-has-sticky-cart"),document.body.style.removeProperty("--desitech-sticky-cart-height")}}customElements.define("desitech-sticky-cart",DesitechStickyCart)}
2//# sourceMappingURL=/cdn/shop/t/105/assets/desitech-sticky-cart.js.map?v=76325504011693782251791369813

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.