/*! Copyright (c) Safe As Milk. All rights reserved. */import Cart from"cart-store";import Cookies from"js-cookie";import plugins from"cart-plugins";import{debounce,formatMoney}from"utils";class InteractiveCart extends HTMLElement{#cartDraw;#controlHeightAtValue;#resizeObserver;static#plugins={};connectedCallback(){this.id=this.getAttribute("id"),this.form=this.querySelector("form"),this.cart=Cart.getState().cart,this.freeShippingBar=this.querySelector("free-shipping-bar"),this.#cartDraw=this.closest(".modal--cart"),this.#controlHeightAtValue=null,this.#resizeObserver=null,this.getAttribute("height-control")&&this.#cartDraw&&(this.#controlHeightAtValue=Number(this.getAttribute("height-control")),this.#resizeObserver=new ResizeObserver(debounce(this.#onResize.bind(this),100)),this.#resizeObserver.observe(this.#cartDraw)),this.#render(),this.unsubscribe=Cart.subscribe(state=>{this.cart=state.cart,this.#render(),this.#updateCartDiscounts(),this.#updateCartTotal(),this.#updateFreeShipping()})}disconnectedCallback(){this.unsubscribe(),this.#resizeObserver&&(this.#resizeObserver.disconnect(),this.#resizeObserver=null)}static registerPlugin(priority,fn){if(InteractiveCart.#plugins[priority])throw new Error(`Plugin with priority ${priority} is already registered`);InteractiveCart.#plugins[priority]=fn}#onResize(entries){entries.forEach(()=>{const{parentElement}=this,parentElementComputedStyle=window.getComputedStyle(parentElement),gap=Number(parentElementComputedStyle.getPropertyValue("row-gap").replace("px","")),parentElementTopPadding=Number(parentElementComputedStyle.getPropertyValue("padding-top").replace("px","")),siblingElements=Array.from(this.parentElement.querySelectorAll(".cart-draw__announcement, .cart-draw__head, .free-shipping-bar")),cartControls=this.querySelector(".cart__controls");if(!cartControls)return;const blockedHeight=parentElementTopPadding+siblingElements.reduce((total,element)=>total+element.offsetHeight+gap,0)+cartControls.offsetHeight;this.#cartDraw.classList.toggle("is-scrollable",this.#controlHeightAtValue>window.innerHeight-blockedHeight)})}#render(){this.cart.item_count>0?(this.#renderCart(),Object.entries(InteractiveCart.#plugins).sort(([a],[b])=>a-b).forEach(([,fn])=>{fn.call(this,Cart,this,this.cart)})):this.#renderEmptyCart()}#renderCart(){if(this.querySelector("cart-full"))return;const cartFragment=document.getElementById("template-cart").content.cloneNode(!0),cartNote=cartFragment.querySelector("cart-note"),emptyCart=this.querySelector("cart-empty");emptyCart&&emptyCart.remove(),this.appendChild(cartFragment),cartNote&&(cartNote.querySelector("cart-text-input").value=this.cart.note),this.#updateCartDiscounts(),this.#updateCartTotal()}#renderEmptyCart(){if(this.querySelector("cart-empty"))return;const cartEmptyFragment=document.getElementById("template-empty-cart").content.cloneNode(!0),cartFull=this.querySelector("cart-full");cartFull&&cartFull.remove(),this.appendChild(cartEmptyFragment)}#updateFreeShipping(){this.freeShippingBar&&this.freeShippingBar.setAttribute("value",this.cart.total_price)}#updateCartTotal(){const cartTotal=this.querySelector("cart-total");cartTotal&&(cartTotal.innerHTML=formatMoney(this.cart.total_price,window.theme.money_total_price_format))}#updateCartDiscounts(){const discountsContainer=this.querySelector("cart-discounts");if(!discountsContainer)return;const discounts=discountsContainer.querySelector("discount-list"),discountApplications=this.cart.cart_level_discount_applications,discountItems=discountApplications.length>0&&discountApplications[0].hasOwnProperty("discount_application")?discountApplications.reduce((items,{discount_application:{key,title,total_allocated_amount:amount}})=>{const newItems=items,sameKeyItemIndex=newItems.findIndex(i=>i.key===key);return sameKeyItemIndex>-1?(newItems[sameKeyItemIndex].amount+=amount,newItems):(newItems.push({key,title,amount}),newItems)},[]):discountApplications.reduce((items,{key,title,total_allocated_amount:amount})=>(items.push({key,title,amount}),items),[]);this.classList.toggle("has-cart-discounts",discountItems.length);const discountItemsString=JSON.stringify(discountItems);discounts.setAttribute("items",discountItemsString)}}customElements.define("interactive-cart",InteractiveCart);class CartItems extends HTMLElement{connectedCallback(){this.items=Array.from(this.querySelectorAll("cart-item")),this.giftWrappingProductId=this.getAttribute("gift-wrapping-product-id"),this.unsubscribe=Cart.subscribe(state=>{this.items=this.items.reduce((newItems2,item)=>{const key=item.getAttribute("key");return state.cart.items.find(i=>i.key===key)?(newItems2.push(item),newItems2):(item.remove(),newItems2)},[]);const currentItemsKeys=this.items.map(item=>item.key),newItems=[];state.cart.items.forEach((item,i)=>{if(currentItemsKeys.includes(item.key)){const oldItem=this.items.find(j=>j.key===item.key);currentItemsKeys.indexOf(oldItem.key)!==i&&(i===0?this.prepend(oldItem):newItems[i-1].after(oldItem)),newItems.push(oldItem)}else{const newCartItem=CartItems.#createCartItem(item);i===0?this.prepend(newCartItem):newItems[i-1].after(newCartItem),newItems.push(newCartItem)}}),this.items=newItems})}disconnectedCallback(){this.unsubscribe()}static#createCartItem(item){const cartItem=document.getElementById("template-cart-item").content.cloneNode(!0).querySelector("cart-item");return cartItem.setAttribute("key",item.key),cartItem}}customElements.define("cart-items",CartItems);class CartItem extends HTMLElement{#boundRemoveProduct;#debouncedChangeQuantity;#isRendered;static#plugins={};constructor(){super(),this.#debouncedChangeQuantity=debounce(this.#changeQuantity.bind(this),250),this.#boundRemoveProduct=this.#removeProduct.bind(this)}connectedCallback(){this.key=this.getAttribute("key"),this.item=Cart.getState().cart.items.find(item=>item.key===this.key),this.item&&(this.item.variant_id===Cart.getState().giftWrapping.productId&&(this.giftWrappingItem=!0,this.noQuantityInput=!0,this.noLinks=!0,this.giftWrappingMessageEnabled=Cart.getState().giftWrapping.giftMessageEnabled,this.giftWrappingMessage=Cart.getState().cart.attributes["gift-wrapping-message"]||""),this.image=this.querySelector("cart-item-image-container img"),this.imageContainerRatio=this.getAttribute("image-container-ratio").trim(),this.imageFit=this.hasAttribute("image-fit"),this.details=this.querySelector("cart-item-details"),this.#isRendered=this.hasAttribute("rendered"),this.#isRendered||this.#render(),this.quantity=this.querySelector("quantity-input"),this.removeItemButton=this.querySelector("[cart-item-remove"),setTimeout(()=>{this.quantity&&this.quantity.addEventListener("update",this.#debouncedChangeQuantity),this.removeItemButton&&this.removeItemButton.addEventListener("click",this.#boundRemoveProduct)}),this.unsubscribe=Cart.subscribe((state,prevState)=>{if(state.lineItemsBeingUpdated.length>0&&this.#renderError(),state.lineItemsBeingUpdated.includes(this.key))this.#toggleSpinner(!0);else{const newItem=state.cart.items.find(item=>item.key===this.key);if(newItem&&prevState.lineItemsBeingUpdated.includes(this.key)&&this.#toggleSpinner(!1),!state.lineItemsBeingUpdated.includes(this.key))if(this.quantity&&this.quantity.value!==newItem.quantity)this.quantity.value=newItem.quantity;else{const quantityDisplay=this.querySelector("quantity-display");quantityDisplay&&(quantityDisplay.innerHTML=newItem.quantity)}this.item=newItem,this.#clearTotalPrice(),this.#renderTotalPriceAndDiscounts(),this.#runPostRenderFunctions()}}),setTimeout(()=>this.#runPostRenderFunctions))}disconnectedCallback(){this.unsubscribe&&this.unsubscribe(),this.quantity&&this.quantity.removeEventListener("update",this.#debouncedChangeQuantity),this.removeItemButton&&this.removeItemButton.removeEventListener("click",this.#boundRemoveProduct)}static registerPlugin(priority,fn){if(CartItem.#plugins[priority])throw new Error(`Plugin with priority ${priority} is already registered`);CartItem.#plugins[priority]=fn}#runPostRenderFunctions(){Object.entries(CartItem.#plugins).sort(([a],[b])=>a-b).forEach(([,fn])=>{fn.call(this,Cart,this,this.item)})}#render(){this.querySelectorAll("a[cart-item-url]").forEach(link=>{if(this.noLinks){const div=document.createElement("div");link.hasAttribute("class")&&div.setAttribute("class",link.getAttribute("class")),link.hasAttribute("style")&&div.setAttribute("style",link.getAttribute("style")),div.innerHTML=link.innerHTML,link.replaceWith(div),this.image=this.querySelector("cart-item-image-container img")}else link.setAttribute("href",this.item.url)}),this.#setImage(),this.imageContainerRatio==="natural"?this.image.closest(".o-ratio").style.paddingBottom=`${1/(this.item.featured_image?this.item.featured_image.aspect_ratio:1)*100}%`:this.image.closest(".o-ratio").style.paddingBottom=null,this.#updateSkeleton(),this.querySelector("cart-item-title").innerHTML=this.item.product_title;const metaItemTemplate=document.getElementById("template-cart-item-meta").content,vendor=this.querySelector("cart-item-vendor");if(vendor&&(vendor.appendChild(metaItemTemplate.cloneNode(!0)),vendor.querySelector("property-value").innerHTML=this.item.vendor),this.item.variant_title&&!this.item.variant_title.includes("Default")){const defaultProperty=this.querySelector("cart-item-default-property");defaultProperty.appendChild(metaItemTemplate.cloneNode(!0)),defaultProperty.querySelector("property-value").innerHTML=this.item.variant_title}if(Object.keys(this.item.properties||{}).length>0){const propertyItemTemplate=document.getElementById("template-cart-item-property").content,properties=this.querySelector("cart-item-properties");Object.entries(this.item.properties).forEach(([name,value])=>{if(value!==""&&name.slice(0,1)!=="_"){const propertyTemplate=propertyItemTemplate.cloneNode(!0);let propertyName=name;this.item.gift_card&&name==="Recipient email"?propertyName=window.theme.localize("GIFT_CARD_RECIPIENT_EMAIL"):this.item.gift_card&&name==="Recipient name"?propertyName=window.theme.localize("GIFT_CARD_RECIPIENT_NAME"):this.item.gift_card&&name==="Recipient message"&&(propertyName=window.theme.localize("GIFT_CARD_RECIPIENT_MESSAGE")),propertyTemplate.querySelector("property-name").innerHTML=propertyName,propertyTemplate.querySelector("property-value").innerHTML=value.includes("/uploads/")?`${value.split("/").pop()}`:value,properties.appendChild(propertyTemplate)}})}if(this.item.selling_plan_allocation){const sellingPlanAllocation=this.querySelector("cart-item-selling-plan-allocation");sellingPlanAllocation.appendChild(metaItemTemplate.cloneNode(!0)),sellingPlanAllocation.querySelector("property-value").innerHTML=`${this.item.selling_plan_allocation.selling_plan.name}${this.item.selling_plan_allocation.compare_at_price&&this.item.selling_plan_allocation.compare_at_price!==this.item.selling_plan_allocation.price?` (-${Math.round((1-this.item.selling_plan_allocation.price/this.item.selling_plan_allocation.compare_at_price)*100)}%)`:""}`}const sku=this.querySelector("cart-item-sku");if(sku&&this.item.sku&&(sku.appendChild(metaItemTemplate.cloneNode(!0)),sku.querySelector("property-value").innerHTML=this.item.sku),this.item.unit_price_measurement){const itemUnitPrice=this.querySelector("cart-item-unit-price"),unitPriceTemplate=document.getElementById("template-unit-price").content;itemUnitPrice.appendChild(unitPriceTemplate.cloneNode(!0));const baseUnit=`${this.item.unit_price_measurement.reference_value!==1?this.item.unit_price_measurement.reference_value:""}${this.item.unit_price_measurement.reference_unit}`;itemUnitPrice.querySelector("unit-price").innerHTML=formatMoney(this.item.unit_price,window.theme.money_format),itemUnitPrice.querySelector("base-unit").innerHTML=baseUnit}if(this.giftWrappingItem&&this.giftWrappingMessageEnabled){const giftWrappingMessageTemplate=document.getElementById("template-cart-gift-wrapping-message").content;this.querySelector("cart-item-micro-copy").appendChild(giftWrappingMessageTemplate.cloneNode(!0)),this.classList.add("cart-item--full-details"),this.querySelector("cart-text-input").value=this.giftWrappingMessage}if(this.noQuantityInput){const quantityDisplay=document.createElement("quantity-display");quantityDisplay.classList.add("cart-item__qty-display"),quantityDisplay.innerHTML=this.item.quantity,this.querySelector("cart-item-quantity").appendChild(quantityDisplay)}else{const quantityElement=document.getElementById("template-quantity-input").content.cloneNode(!0);this.quantity=quantityElement.querySelector("quantity-input");const quantityInput=quantityElement.querySelector('input[type="number"]');quantityInput.setAttribute("id",`updates_${this.item.key}`),quantityInput.setAttribute("name","updates[]"),this.querySelector("cart-item-quantity").appendChild(this.quantity),setTimeout(()=>{this.quantity.value=this.item.quantity}),this.removeItemButton=this.querySelector("button[cart-item-remove]")}this.#renderTotalPriceAndDiscounts(),this.setAttribute("rendered","")}#setImage(srcsetWidths=[120,240,360,480]){if(!this.image)return;const imageData=this.item.featured_image;if(imageData&&imageData.url){const{width,height,url}=imageData,imageContainerRatio=this.imageContainerRatio!=="natural"?this.imageContainerRatio.split(":").reduce((ratio,value)=>ratio!==0?value/ratio:value,0):null,aspectRatio=width/height,uncroppedImage=this.imageContainerRatio==="natural"||imageContainerRatio&&this.imageFit;let masterWidth=width,masterHeight=height;uncroppedImage||(masterHeight=Math.round(masterWidth*imageContainerRatio),masterHeight>height&&(masterHeight=height,masterWidth=Math.round(masterHeight/imageContainerRatio)));const srcset=srcsetWidths.reduce((srcSet,srcWidth)=>{const srcHeight=Math.round(uncroppedImage?srcWidth/aspectRatio:srcWidth*imageContainerRatio);return srcWidth>masterWidth||srcHeight>masterHeight?srcSet:`${srcSet}${url}${url.includes("?")?"&":"?"}width=${srcWidth}${uncroppedImage?"":`&height=${srcHeight}&crop=center`} ${srcWidth}w ${srcHeight}h, `},""),masterSrc=uncroppedImage?url:`${url}${url.includes("?")?"&":"?"}width=${masterWidth}&height=${masterHeight}&crop=center`;this.image.setAttribute("src",masterSrc),this.image.setAttribute("srcset",srcset),this.image.setAttribute("width",masterWidth),this.image.setAttribute("height",masterHeight)}this.image.setAttribute("alt",`Image for ${this.item.title}`)}#updateSkeleton(){if(!this.image)return;const skeleton=this.image.previousElementSibling&&this.image.previousElementSibling.tagName.toLowerCase()==="image-skeleton"?this.image.previousElementSibling:null;if(skeleton){const svg=skeleton.querySelector("svg"),rect=svg.querySelector("rect"),width=this.image.getAttribute("width"),height=this.image.getAttribute("height");skeleton.setAttribute("aria-label",`Loading image for ${this.item.title}`),svg.setAttribute("width",width),svg.setAttribute("height",height),svg.setAttribute("viewBox",`0 0 ${width} ${height}`),rect.setAttribute("width",width),rect.setAttribute("height",height)}}#toggleSpinner(visible=!0){if(visible){this.#clearTotalPrice();const quantityInputTemplate=document.getElementById("template-spinner").content;this.querySelector("cart-item-spinner").appendChild(quantityInputTemplate.cloneNode(!0))}else this.querySelector("cart-item-spinner").innerHTML=""}#clearTotalPrice(){const priceContainer=this.querySelector("cart-item-original-line-price").parentElement;if(priceContainer){const priceContainerWidth=priceContainer.offsetWidth,priceContainerHeight=priceContainer.offsetHeight;priceContainer.style.width=`${priceContainerWidth}px`,priceContainer.style.height=`${priceContainerHeight}px`}this.querySelector("cart-item-original-line-price").innerHTML="",this.querySelector("cart-item-final-line-price").innerHTML=""}#renderTotalPriceAndDiscounts(){const originalLinePrice=this.querySelector("cart-item-original-line-price"),finalLinePrice=this.querySelector("cart-item-final-line-price"),priceTemplate=document.getElementById("template-price").content;this.item.original_line_price!==this.item.final_line_price?(originalLinePrice.appendChild(priceTemplate.cloneNode(!0)),originalLinePrice.querySelector(".price").classList.add("price--original"),originalLinePrice.querySelector("money-amount").innerHTML=formatMoney(this.item.original_line_price,window.theme.money_format),finalLinePrice.appendChild(priceTemplate.cloneNode(!0)),finalLinePrice.querySelector(".price").classList.add("price--sale"),finalLinePrice.querySelector("money-amount").innerHTML=formatMoney(this.item.final_line_price,window.theme.money_format)):(originalLinePrice.appendChild(priceTemplate.cloneNode(!0)),originalLinePrice.querySelector("money-amount").innerHTML=formatMoney(this.item.final_line_price,window.theme.money_format));const discounts=this.querySelector("cart-item-discounts").querySelector("discount-list"),discountItems=JSON.stringify(this.item.line_level_discount_allocations.reduce((items,{amount,discount_application:{key,title}})=>(items.push({key,title,amount}),items),[]));discounts.setAttribute("items",discountItems),this.classList.toggle("has-discounts",this.item.line_level_discount_allocations.length>0);const priceContainer=this.querySelector("cart-item-original-line-price").parentElement;priceContainer&&(priceContainer.style.width="",priceContainer.style.height="")}#renderError(errorText=""){const errorContainer=this.querySelector("cart-item-errors");this.classList.toggle("has-errors",errorText),errorContainer.innerHTML=`
${errorText}
`}async#changeQuantity(){if(this.key)try{await Cart.change({id:this.key,quantity:this.quantity.value})}catch(e){if(e.name&&e.name==="AbortError")return;this.#renderError(e.message)}}async#removeProduct(e){this.key&&(e.preventDefault(),this.giftWrappingItem?await Cart.setGiftWrapping(!1):await Cart.change({id:this.key,quantity:0}))}}customElements.define("cart-item",CartItem);class DiscountList extends HTMLElement{constructor(){super(),this.items=JSON.parse(this.getAttribute("items")||"[]")}static get observedAttributes(){return["items"]}attributeChangedCallback(_,oldVal,newVal){oldVal!==newVal&&(this.items=JSON.parse(newVal),this.#renderDiscounts())}#renderDiscounts(){if(this.innerHTML="",this.items.length>0){const discountsList=document.createElement("ul");discountsList.classList.add("discounts"),this.appendChild(discountsList),this.items.forEach(item=>{const discount=document.createElement("li");discount.classList.add("discount"),discountsList.appendChild(discount);const discountTemplate=document.getElementById("template-discount-item").content;discount.appendChild(discountTemplate.cloneNode(!0)),discount.querySelector("discount-title").innerHTML=item.title,item.amount>0&&(discount.querySelector("discount-amount").innerHTML=formatMoney(item.amount,window.theme.money_format))})}}}customElements.define("discount-list",DiscountList);class CartTextInput extends HTMLElement{#function;#spinnerTemplate;#status;#text;#updated;#updatedHTML;#updating;async connectedCallback(){this.#text=this.querySelector('textarea, input[type="text"]'),this.#status=this.querySelector("cart-text-input-status"),this.#updatedHTML='
',this.#updating=!1,this.#updated=!1,this.#spinnerTemplate=document.getElementById("template-spinner").content,this.#function=()=>{},this.#text.addEventListener("input",this.#function)}disconnectedCallback(){this.#text.removeEventListener("input",this.#function)}set updating(isUpdating){this.#updated=!1,this.#updating=isUpdating,isUpdating&&(this.#status.innerHTML="",this.#status.appendChild(this.#spinnerTemplate.cloneNode(!0)))}get updating(){return this.#updating}set updated(isUpdated){this.#updating=!1,this.#updated=isUpdated,isUpdated&&(this.#status.innerHTML=this.#updatedHTML)}get updated(){return this.#updated}set value(value){this.#text.value=value}get value(){return this.#text.value}set updatedHTML(html){this.#updatedHTML=html}get updatedHTML(){return this.#updatedHTML}set function(f){this.#text.removeEventListener("input",this.#function),this.#function=debounce(f,1e3),this.#text.addEventListener("input",this.#function)}get function(){return this.#function}}customElements.define("cart-text-input",CartTextInput);class CartGiftWrappingMessage extends HTMLElement{#cartTextInput;async connectedCallback(){this.#cartTextInput=this.querySelector("cart-text-input"),setTimeout(()=>{this.#cartTextInput.function=CartGiftWrappingMessage.#updateMessage.bind(this)}),this.unsubscribe=Cart.subscribe((state,prevState)=>{state.giftWrapping.messageBeingUpdated?this.#cartTextInput.updating=!0:prevState.giftWrapping.messageBeingUpdated&&(this.#cartTextInput.updated=!0)})}disconnectedCallback(){this.unsubscribe()}static async#updateMessage(e){try{await Cart.updateGiftWrappingMessage(e.target.value)}catch(error){if(error.name&&error.name==="AbortError")return;console.log(e)}}}customElements.define("cart-gift-wrapping-message",CartGiftWrappingMessage);class CartNote extends HTMLElement{#cartTextInput;connectedCallback(){this.#cartTextInput=this.querySelector("cart-text-input"),setTimeout(()=>{this.#cartTextInput.function=CartNote.#updateNote.bind(this)}),this.unsubscribe=Cart.subscribe((state,prevState)=>{state.noteBeingUpdated?this.#cartTextInput.updating=!0:prevState.noteBeingUpdated&&(this.#cartTextInput.updated=!0)})}disconnectedCallback(){this.unsubscribe()}static async#updateNote(e){try{await Cart.updateCartNote(e.target.value)}catch(error){if(error.name&&error.name==="AbortError")return;console.log(e)}}}customElements.define("cart-note",CartNote);class CartTerms extends HTMLElement{#boundInputChange;#boundValidateForm;connectedCallback(){this.form=this.closest("form"),this.input=this.querySelector('input[type="checkbox"]'),this.error=this.querySelector("cart-terms-error"),this.#boundValidateForm=this.#validateForm.bind(this),this.#boundInputChange=this.#inputChange.bind(this),setTimeout(()=>{Cookies.get("cart_order_terms")==="accepted"&&(this.input.checked=!0),this.form.addEventListener("submit",this.#boundValidateForm),this.input.addEventListener("change",this.#boundInputChange)})}disconnectedCallback(){this.form.removeEventListener("submit",this.#boundValidateForm),this.input.removeEventListener("change",this.#boundInputChange)}#validateForm(e){this.input.checked||(e.preventDefault(),this.#toggleError(!0))}#inputChange({target:{checked}}){checked&&this.#toggleError(!1),Cookies.set("cart_order_terms",checked?"accepted":"",{secure:!0,SameSite:"None"})}#toggleError(visible=!0){visible?(this.error.removeAttribute("hidden"),this.error.classList.add("is-active")):(this.error.classList.remove("is-active"),this.error.setAttribute("hidden",""))}}customElements.define("cart-terms",CartTerms);class CartNotification extends HTMLElement{#imagePlaceholder;connectedCallback(){this.image=this.querySelector("cart-item-image-container img"),this.#imagePlaceholder=this.image.cloneNode(),this.imageContainerRatio=this.querySelector(".cart-item").getAttribute("image-container-ratio").trim(),this.imageFit=this.querySelector(".cart-item").hasAttribute("image-fit"),this.item=Cart.getState().latestAddedProduct,this.unsubscribe=Cart.subscribe(state=>{state.latestAddedProduct?(this.item=state.latestAddedProduct,this.#render()):this.item=null})}disconnectedCallback(){this.unsubscribe()}#render(){if(!this.item)return;this.#setImage(),this.imageContainerRatio==="natural"?this.image.closest(".o-ratio").style.paddingBottom=`${1/(this.item.featured_image?this.item.featured_image.aspect_ratio:1)*100}%`:this.image.closest(".o-ratio").style.paddingBottom=null,this.#updateSkeleton(),this.querySelector("cart-item-title").innerHTML=this.item.product_title;const metaItemTemplate=document.getElementById("template-cart-item-meta").content;if(this.item.variant_title&&!this.item.variant_title.includes("Default")){const defaultProperty=this.querySelector("cart-item-default-property");defaultProperty.innerHTML="",defaultProperty.appendChild(metaItemTemplate.cloneNode(!0)),defaultProperty.querySelector("property-value").innerHTML=this.item.variant_title}const vendor=this.querySelector("cart-item-vendor");vendor&&(vendor.innerHTML="",vendor.appendChild(metaItemTemplate.cloneNode(!0)),vendor.querySelector("property-value").innerHTML=this.item.vendor)}#setImage(srcsetWidths=[120,240,360,480]){if(!this.image)return;const imageData=this.item.featured_image;if(imageData&&imageData.url){const{width,height,url}=imageData,imageContainerRatio=this.imageContainerRatio!=="natural"?this.imageContainerRatio.split(":").reduce((ratio,value)=>ratio!==0?value/ratio:value,0):null,aspectRatio=width/height,uncroppedImage=this.imageContainerRatio==="natural"||imageContainerRatio&&this.imageFit;let masterWidth=width,masterHeight=height;uncroppedImage||(masterHeight=Math.round(masterWidth*imageContainerRatio),masterHeight>height&&(masterHeight=height,masterWidth=Math.round(masterHeight/imageContainerRatio)));const srcset=srcsetWidths.reduce((srcSet,srcWidth)=>{const srcHeight=Math.round(uncroppedImage?srcWidth/aspectRatio:srcWidth*imageContainerRatio);return srcWidth>masterWidth||srcHeight>masterHeight?srcSet:`${srcSet}${url}${url.includes("?")?"&":"?"}width=${srcWidth}${uncroppedImage?"":`&height=${srcHeight}&crop=center`} ${srcWidth}w ${srcHeight}h, `},""),masterSrc=uncroppedImage?url:`${url}${url.includes("?")?"&":"?"}width=${masterWidth}&height=${masterHeight}&crop=center`;this.image.setAttribute("src",masterSrc),this.image.setAttribute("srcset",srcset),this.image.setAttribute("width",masterWidth),this.image.setAttribute("height",masterHeight)}else this.image.setAttribute("src",this.#imagePlaceholder.getAttribute("src")),this.image.setAttribute("srcset",this.#imagePlaceholder.getAttribute("srcset")),this.image.setAttribute("width",this.#imagePlaceholder.getAttribute("width")),this.image.setAttribute("height",this.#imagePlaceholder.getAttribute("height"));this.image.setAttribute("alt",`Image for ${this.item.title}`)}#updateSkeleton(){if(!this.image)return;const skeleton=this.image.nextElementSibling&&this.image.nextElementSibling.tagName.toLowerCase()==="image-skeleton"?this.image.nextElementSibling:null;if(skeleton){const svg=skeleton.querySelector("svg"),rect=svg.querySelector("rect"),width=this.image.getAttribute("width"),height=this.image.getAttribute("height");skeleton.setAttribute("aria-label",`Loading image for ${this.item.title}`),svg.setAttribute("width",width),svg.setAttribute("height",height),svg.setAttribute("viewBox",`0 0 ${width} ${height}`),rect.setAttribute("width",width),rect.setAttribute("height",height)}}}customElements.define("cart-notification",CartNotification);class CartQuantityInfo extends HTMLElement{constructor(){super(),this.itemsCount=this.querySelector("items-count"),this.infoContent=this.querySelector("info-content")}connectedCallback(){this.unsubscribe=Cart.subscribe(state=>{state.cart.item_count>0?(this.removeAttribute("hidden"),state.cart.item_count===1?this.infoContent.innerHTML=window.theme.localize("CART_ITEM_SINGULAR"):this.infoContent.innerHTML=window.theme.localize("CART_ITEM_PLURAL")):this.setAttribute("hidden",""),this.itemsCount.innerHTML=state.cart.item_count.toString()})}disconnectedCallback(){this.unsubscribe()}}customElements.define("cart-quantity-info",CartQuantityInfo);class CartGiftWrappingBanner extends HTMLElement{#boundEnable;constructor(){super(),this.#boundEnable=this.#enable.bind(this)}connectedCallback(){this.trigger=this.querySelector("button"),this.stagedAction=this.querySelector("staged-action"),!!(Cart.getState().cart.attributes["gift-wrapping"]!=="false"&&Cart.getState().cart.attributes["gift-wrapping"])&&this.setAttribute("hidden",""),this.unsubscribe=Cart.subscribe(state=>{!!state.cart.attributes["gift-wrapping"]||this.removeAttribute("hidden")}),this.trigger.addEventListener("click",this.#boundEnable)}disconnectedCallback(){this.unsubscribe(),this.trigger.removeEventListener("click",this.#boundEnable)}async#enable(e){e.preventDefault();try{this.stagedAction&&await this.stagedAction.setState("DOING"),await Cart.setGiftWrapping(),this.stagedAction&&await this.stagedAction.setState("DONE"),this.setAttribute("hidden","")}catch(error){console.log(error),this.stagedAction&&await this.stagedAction.setState("IDLE")}}}customElements.define("cart-gift-wrapping-banner",CartGiftWrappingBanner),plugins.map(({functions})=>functions).forEach(pluginFunctions=>{Object.entries(pluginFunctions).forEach(([componentType,functions])=>{componentType==="interactive-cart"&&Object.entries(functions).forEach(([priority,fn])=>{InteractiveCart.registerPlugin(priority,fn)}),componentType==="cart-item"&&Object.entries(functions).forEach(([priority,fn])=>{CartItem.registerPlugin(priority,fn)})})});export{CartItem,InteractiveCart}; //# sourceMappingURL=/cdn/shop/t/100/assets/cart-components.js.map?v=111286232996226158641751575323