/*! Copyright (c) Safe As Milk. All rights reserved. */import Cart from"cart-store";import{formatMoney}from"utils";class FreeShippingBar extends HTMLElement{#animationInterval=null;#boundOrchestrateModalEvent;#parentModal;#playingAnimation;constructor(){super(),this.#boundOrchestrateModalEvent=this.#orchestrateModalEvent.bind(this)}async connectedCallback(){if(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.goalAnimation=null,this.#playingAnimation=!1,this.minimumValue=Number(this.getAttribute("minimum-value")),this.value=Number(this.getAttribute("value")),this.#parentModal=this.closest("modal-dialog, popup-dialog"),this.#setVariables(),this.unsubscribe=Cart.subscribe(state=>{this.value!==state.cart.total_price&&(this.value=state.cart.total_price,this.#update()),this.value>=this.minimumValue&&this.track.addEventListener("transitionend",()=>{setTimeout(()=>{this.#playGoalAnimation()},250)},{once:!0})}),this.revealDelay=this.getAttribute("reveal-delay")||0,this.#parentModal)this.#parentModal.addEventListener("on:modal:opened",this.#boundOrchestrateModalEvent),this.#parentModal.addEventListener("on:modal:closed",this.#boundOrchestrateModalEvent);else{const options={rootMargin:"0px",threshold:.95};this.visibilityObserver=new IntersectionObserver(entries=>{entries.forEach(entry=>{setTimeout(()=>{entry.isIntersecting&&(entry.target.classList.add("is-visible"),setTimeout(()=>{this.amountLeft===0&&this.#playGoalAnimation()},500),this.visibilityObserver.disconnect())},this.revealDelay)})},options),this.visibilityObserver.observe(this)}const goalAnimationElement=this.querySelector("free-shipping-bar-goal-animation");if(goalAnimationElement){const{DotLottie}=await import("dotlottie"),loadAnimation=()=>{this.goalAnimation=new DotLottie({canvas:goalAnimationElement.querySelector("canvas"),loop:!1,autoplay:!1,src:goalAnimationElement.getAttribute("data-url")})};this.#parentModal?this.#parentModal.on("on:modal:opening",loadAnimation,{once:!0}):loadAnimation()}}disconnectedCallback(){this.classList.remove("is-visible"),this.visibilityObserver&&this.visibilityObserver.disconnect(),this.#parentModal&&(this.#parentModal.removeEventListener("on:modal:opened",this.#boundOrchestrateModalEvent),this.#parentModal.removeEventListener("on:modal:closed",this.#boundOrchestrateModalEvent)),this.unsubscribe&&this.unsubscribe(),this.#animationInterval&&clearInterval(this.#animationInterval)}#setVariables(){this.amountLeft=this.minimumValue-this.value<=0?0:this.minimumValue-this.value,this.moneyLeft=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(){const goalAnimationElement=this.querySelector("free-shipping-bar-goal-animation"),animationShown=!!localStorage.getItem("freeShippingAnimationShown");!goalAnimationElement||animationShown||this.#playingAnimation||(this.#playingAnimation=!0,this.#animationInterval=setInterval(()=>{if(this.goalAnimation&&this.goalAnimation.isLoaded){clearInterval(this.#animationInterval),this.#animationInterval=null;const goalAnimationElementCanvas=this.querySelector("free-shipping-bar-goal-animation canvas");goalAnimationElementCanvas.getAttribute("width")==="0"&&(goalAnimationElementCanvas.setAttribute("width",300),goalAnimationElementCanvas.setAttribute("height",300)),localStorage.setItem("freeShippingAnimationShown",!0),this.goalAnimation.play()}},100))}#orchestrateModalEvent(e){e.type==="on:modal:opened"?this.classList.add("is-visible"):e.type==="on:modal:closed"&&this.classList.remove("is-visible")}}customElements.define("free-shipping-bar",FreeShippingBar); //# sourceMappingURL=/cdn/shop/t/100/assets/cart-free-shipping-bar.js.map?v=13371988690262255181751575323