1import{Component}from"@theme/component";import{onAnimationEnd}from"@theme/utilities";import{ThemeEvents}from"@theme/events";class CartIcon extends Component{requiredRefs=["cartBubble","cartBubbleText","cartBubbleCount"];get currentCartCount(){const visibleText=(this.refs.cartBubbleCount.textContent??"").trim();if(/^\d+$/.test(visibleText))return Number(visibleText);const announced=parseInt(this.refs.cartBubbleA11yCount?.textContent??"",10);return Number.isFinite(announced)?announced:0}set currentCartCount(value){this.refs.cartBubbleCount.textContent=value<100?String(value):""}connectedCallback(){super.connectedCallback(),document.addEventListener(ThemeEvents.cartUpdate,this.onCartUpdate),this.ensureCartBubbleIsCorrect()}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener(ThemeEvents.cartUpdate,this.onCartUpdate)}onCartUpdate=async event=>{const cart=event.detail?.resource||event.detail?.data?.cart,itemCount=cart?.item_count??event.detail.data?.itemCount;if(itemCount===void 0)return;const comingFromProductForm=event.detail.data?.source==="product-form-component",shouldSetDirectly=cart?.item_count!==void 0;this.renderCartBubble(itemCount,comingFromProductForm&&!shouldSetDirectly)};renderCartBubble=async(itemCount,comingFromProductForm,animate=!0)=>{this.refs.cartBubbleCount.classList.toggle("hidden",itemCount===0),this.refs.cartBubble.classList.toggle("visually-hidden",itemCount===0),itemCount>0&&(this.refs.cartBubbleCount.classList.remove("!hidden"),this.refs.cartBubble.classList.remove("!hidden")),this.refs.cartBubble.classList.toggle("cart-bubble--animating",itemCount>0&&animate);const nextCartCount=comingFromProductForm?this.currentCartCount+itemCount:itemCount;this.currentCartCount=nextCartCount,this.refs.cartBubbleA11yCount&&Number.isFinite(nextCartCount)&&(this.refs.cartBubbleA11yCount.textContent=String(nextCartCount)),this.classList.toggle("header-actions__cart-icon--has-cart",itemCount>0),sessionStorage.setItem("cart-count",JSON.stringify({value:String(this.currentCartCount),timestamp:Date.now()})),animate&&(await onAnimationEnd(this.refs.cartBubbleText),this.refs.cartBubble.classList.remove("cart-bubble--animating"))};ensureCartBubbleIsCorrect=()=>{const sessionStorageCount=sessionStorage.getItem("cart-count"),visibleCount=this.refs.cartBubbleCount.textContent;if(!(sessionStorageCount===visibleCount||sessionStorageCount===null))try{const{value,timestamp}=JSON.parse(sessionStorageCount);if(Date.now()-timestamp<1e4){const count=parseInt(value,10);count>=0&&this.renderCartBubble(count,!1,!1)}}catch{}}}customElements.get("cart-icon")||customElements.define("cart-icon",CartIcon); 2//# sourceMappingURL=/cdn/shop/t/410/assets/cart-icon.js.map?v=142454824505557219011790179511
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.