1class FreeShippingBar extends HTMLElement{constructor(){super()}connectedCallback(){this.amountToSpendElement=this.querySelector("amount-to-spend"),this.amountLeftElement=this.querySelector("amount-left"),this.moneyValueLeftElement=this.amountLeftElement.querySelector("money-value"),this.minimumReachedElement=this.querySelector("minimum-reached"),this.track=this.querySelector("free-shipping-bar-track"),this.minimumValue=Number(this.getAttribute("minimum-value")),this.value=Number(this.getAttribute("value")),this._setVariables(),this.unsubscribe=window.theme.cart.store.subscribe(state=>{this.value!==state.products.total_price&&(this.value=state.products.total_price,this._update()),this.value>=this.minimumValue&&this.classList.contains("is-visible")&&this.track.addEventListener("transitionend",()=>{setTimeout(()=>{this._playGoalAnimation()},250)},{once:!0})}),this.revealDelay=this.getAttribute("reveal-delay")||0,setTimeout(()=>{const goalAnimationElement=this.querySelector("free-shipping-bar-goal-animation");goalAnimationElement&&window.lottie&&!this.goalAnimation&&(this.goalAnimation=lottie.loadAnimation({container:goalAnimationElement,renderer:"svg",loop:!1,autoplay:!1,useWebWorker:!1,path:goalAnimationElement.getAttribute("data-url")}))});let options={rootMargin:"0px",threshold:1};this.visibilityObserver=new IntersectionObserver(entries=>{entries.forEach(entry=>{setTimeout(()=>{entry.isIntersecting&&(entry.target.classList.add("is-visible"),setTimeout(()=>{this.amountLeft===0&&this._playGoalAnimation()},1e3),this.visibilityObserver.disconnect())},this.revealDelay)})},options),this.visibilityObserver.observe(this)}disconnectedCallback(){this.classList.remove("is-visible"),this.visibilityObserver&&this.visibilityObserver.disconnect()}_setVariables(){this.amountLeft=this.minimumValue-this.value<=0?0:this.minimumValue-this.value,this.moneyLeft=window.Shopify.formatMoney(this.amountLeft,window.theme.money_format).replace(/[\.,]00$/,""),this.displacement=Math.round(this.amountLeft/this.minimumValue*100)}_update(){this.setAttribute("value",this.value),this._setVariables(),this.moneyValueLeftElement&&(this.moneyValueLeftElement.innerHTML=this.moneyLeft),this.value>0?this.amountToSpendElement.setAttribute("hidden",""):this.amountToSpendElement.removeAttribute("hidden"),this.value===0||this.amountLeft===0?this.amountLeftElement.setAttribute("hidden",""):this.amountLeftElement.removeAttribute("hidden"),this.amountLeft>0?this.minimumReachedElement.setAttribute("hidden",""):this.minimumReachedElement.removeAttribute("hidden"),this.track.style.setProperty("--displacement",`${this.displacement}%`)}_playGoalAnimation(){localStorage.getItem("freeShippingAnimationShown")||this.goalAnimation&&(localStorage.setItem("freeShippingAnimationShown",!0),this.goalAnimation.play())}}customElements.define("free-shipping-bar",FreeShippingBar); 2//# sourceMappingURL=/cdn/shop/t/23/assets/cart-free-shipping-bar.js.map?v=15473973110761128061790163178
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.