class CartDrawer extends HTMLElement{selectors={cartItemsWrapper:"[data-cart-items]",cartItems:[".f-cart-drawer__item"],quantityInput:".f-quantity__input",priceLiveRegion:"[data-price-live-region]",checkoutButton:"[data-checkout-button]",cartItemError:"[data-cart-item-error]",emptyText:"[data-cart-empty-text]",discounts:"[data-discounts]",collapsibleItems:["collapsible-tab"],addressForm:'[data-address="root"]',zipCode:'[name="address[zip]"]',province:'[name="address[province]"]',country:'[name="address[country]"]',shippingRates:".f-cart-drawer__shipping-message",cartCount:"[data-cart-count-number]",agree_terms:'[name="agree_terms"]',lineItemStatusElement:"#shopping-cart-line-item-status"};classes={hidden:"f-hidden",isEmpty:"f-cart-drawer--empty",cookiesDisabled:"cookies-disabled"};constructor(){super(),window.FoxTheme=window.FoxTheme||{},window.FoxTheme.Cart=this,this.cartDrawer=this.closest("drawer-component"),window.FoxTheme.CartDrawer=this.cartDrawer}connectedCallback(){this.init()}init(){if(!cookiesEnabled()){this.classList.add(this.classes.cookiesDisabled);return}this.debouncedOnChange=debounce((quantity,lineItem)=>{this.updateQuantity(quantity,lineItem)},300),this.domNodes=queryDomNodes(this.selectors,this),this.currentItemCount=Array.from(this.querySelectorAll('[name="updates[]"]')).reduce((total,quantityInput)=>total+parseInt(quantityInput.value),0),this.loading=new window.FoxTheme.AnimateLoading(this,{overlay:this}),this.onItemAdded(),this.domNodes.cartItemsWrapper.addEventListener("change",this.handleChange.bind(this))}onItemAdded(){const openWhenAdded=this.dataset.openWhenAdded==="true";window.FoxThemeEvents.subscribe("ON_ITEM_ADDED",async state=>{await this.updateCart(),openWhenAdded&&this.cartDrawer.openDrawer()})}handleChange(event){event.preventDefault(),this.loading.start(),this.domNodes.lineItemStatusElement.setAttribute("aria-hidden",!1);const lineItem=event.target.closest(this.selectors.cartItems[0]);lineItem&&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(async state=>{if(!state)return!1;if(state.item_count||this.renderEmptyCart(),this.renderCart(state),await this.renderCartItems(),this.currentItemCount===state.item_count){const currentLineItem=this.querySelector(`[data-cart-item="${key}"]`);if(!currentLineItem)return!1;const lineItemError=currentLineItem&¤tLineItem.querySelector(this.selectors.cartItemError);FoxThemeCartHelpers.updateLineItemError(lineItemError,currentLineItem.querySelector('[name="updates[]"]').value)}this.currentItemCount=state.item_count}).finally(()=>this.loading.finish())}changeCheckoutButtonState(shouldDisable){this.domNodes.agree_terms&&!this.domNodes.agree_terms.checked||(this.domNodes.checkoutButton.disabled=shouldDisable)}renderCartItems(){return fetchSection("cart-items").then(html=>{const newItems=html.querySelector("#shopify-section-cart-items").innerHTML;this.domNodes.cartItemsWrapper.innerHTML=newItems}).catch(err=>console.error("Failed to load section cart items.",err))}renderCart(state){FoxThemeCartHelpers.renderCartFooter(this.domNodes.discounts),FoxThemeCartHelpers.updateSubtotalPrice(state.total_price),FoxThemeCartHelpers.updateCartCount(state.item_count),FoxThemeCartHelpers.updateLiveRegions(this.domNodes.priceLiveRegion,state),state.item_count&&(this.classList.remove(this.classes.isEmpty),this.changeCheckoutButtonState(!1)),this.state=state,window.FoxThemeEvents.emit("ON_CART_UPDATED",state)}renderEmptyCart(){return this.classList.add(this.classes.isEmpty),this.changeCheckoutButtonState(!0),!1}getState(){return fetch("/cart.js",{credentials:"same-origin",headers:{"X-Requested-With":"XMLHttpRequest","Content-Type":"application/json;"}}).then(state=>{if(!state.ok)throw state;return state.json()})}updateCart(){this.renderCartItems(),this.getState().then(state=>{this.renderCart(state)})}}customElements.define("cart-drawer",CartDrawer);
//# sourceMappingURL=/cdn/shop/t/3/assets/cart-drawer.js.map?v=26636617789290937291672340465