1class CartItems extends HTMLElement{constructor(){super(),this.selectors={cartItemsWrapper:"[data-cart-items]",cartItems:[".f-cart-item"],quantityInput:".f-quantity__input",priceLiveRegion:"[data-price-live-region]",cartCount:"[data-cart-count-number]",cartSubtotal:"[data-cart-subtotal]",agree_terms:'[name="agree_terms"]',cartItemError:"[data-cart-item-error]",checkoutButton:'[name="checkout"]',removeBtn:".f-cart-item__remove-btn",collapsibleItem:"collapsible-tab",lineItemStatusElement:"#shopping-cart-line-item-status"},this.classes={isEmpty:"f-cart--empty"},this.domNodes=queryDomNodes(this.selectors,this),this.cartFooter=document.querySelector("[data-cart-footer]"),this.currentItemCount=Array.from(this.querySelectorAll('[name="updates[]"]')).reduce((total,quantityInput)=>total+parseInt(quantityInput.value),0),this.debouncedOnChange=debounce((quantity,lineItem)=>{this.updateQuantity(quantity,lineItem)},300),this.loading=new window.FoxTheme.AnimateLoading(document.body,{overlay:this.querySelector(".f-cart__items")}),this.addEventListener("change",this.handleChange.bind(this)),this.onItemAdded()}onItemAdded(){window.FoxThemeEvents.subscribe("ON_ITEM_ADDED",async state=>{this.renderCartItems(state),this.renderCart(state)})}handleChange(event){event.preventDefault(),this.loading.start(),this.domNodes.lineItemStatusElement.setAttribute("aria-hidden",!1);const lineItem=event.target.closest(this.selectors.cartItems[0]);this.debouncedOnChange(event.target.value,lineItem)}updateQuantity(quantity,lineItem){const key=lineItem.dataset.cartItem,newQuantity=parseInt(quantity,10),body=JSON.stringify({id:key,quantity:newQuantity});fetch(`${FoxThemeSettings.routes.cart_change_url}`,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body}).then(state=>state.json()).then(state=>{state&&(state.item_count||this.renderEmptyCart(),this.renderCartItems(state,key),this.renderCart(state))}).finally(()=>this.loading.finish())}renderCart(state){FoxThemeCartHelpers.renderCartFooter(this.cartFooter.querySelector(".cart-discounts")),FoxThemeCartHelpers.updateSubtotalPrice(state.total_price),FoxThemeCartHelpers.updateCartCount(state.item_count),FoxThemeCartHelpers.updateLiveRegions(this.domNodes.priceLiveRegion,this.domNodes.lineItemStatusElement,state),state.item_count&&(this.classList.remove(this.classes.isEmpty),this.changeCheckoutButtonState(!1)),window.FoxThemeEvents.emit("ON_CART_UPDATED",state)}renderEmptyCart(){return this.classList.add(this.classes.isEmpty),this.cartFooter.classList.add(this.classes.isEmpty),this.changeCheckoutButtonState(!0),!1}renderCartItems(state,key){return fetchSection("main-cart-items").then(html=>{const newItems=html.querySelector(this.selectors.cartItemsWrapper).innerHTML;if(this.domNodes.cartItemsWrapper.innerHTML=newItems,this.currentItemCount===state.item_count){const currentLineItem=this.querySelector(`[data-cart-item="${key}"]`);if(currentLineItem){const lineItemError=currentLineItem.querySelector(this.selectors.cartItemError);FoxThemeCartHelpers.updateLineItemError(lineItemError,currentLineItem.querySelector('[name="updates[]"]').value)}}return this.currentItemCount=state.item_count,state}).catch(err=>console.error("Failed to load section cart items.",err))}changeCheckoutButtonState(shouldDisable){const agreeTerms=this.cartFooter.querySelector(this.selectors.agree_terms),checkoutButton=this.cartFooter.querySelector(this.selectors.checkoutButton);agreeTerms&&!agreeTerms.checked||(checkoutButton.disabled=shouldDisable)}}customElements.define("cart-items",CartItems); 2//# sourceMappingURL=/cdn/shop/t/5/assets/cart.js.map?v=139443288221948071331746804008
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.