1import{f as I}from"./_fetch-config.js";import{p as _}from"./_pubsub.js";import{P as y}from"./_constants.js";import{g as L,t as k}from"./_analytics.js";customElements.get("product-form")||customElements.define("product-form",class extends HTMLElement{constructor(){super(),this.form=this.querySelector("form"),this.variantIdInput.disabled=!1,this.form.addEventListener("submit",this.onSubmitHandler.bind(this)),this.cart=document.querySelector("cart-notification")||document.querySelector("cart-drawer"),this.submitButton=this.querySelector('[type="submit"]'),this.submitButtonText=this.submitButton.querySelector("span"),document.querySelector("cart-drawer")&&this.submitButton.setAttribute("aria-haspopup","dialog"),this.hideErrors=this.dataset.hideErrors==="true"}onSubmitHandler(r){if(r.preventDefault(),this.submitButton.getAttribute("aria-disabled")==="true")return;this.handleErrorMessage(),this.submitButton.setAttribute("aria-disabled",!0),this.submitButton.classList.add("loading"),this.querySelector(".loading__spinner").classList.remove("hidden");const i=I("javascript");i.headers["X-Requested-With"]="XMLHttpRequest",delete i.headers["Content-Type"];const s=new FormData(this.form);this.cart&&(s.append("sections",this.cart.getSectionsToRender().map(e=>e.id)),s.append("sections_url",window.location.pathname),this.cart.setActiveElement(document.activeElement)),i.body=s,fetch(`${routes.cart_add_url}`,i).then(e=>e.json()).then(e=>{var n,c,u,d,l,m,h;if(e.status){_(y.cartError,{source:"product-form",productVariantId:s.get("id"),errors:e.errors||e.description,message:e.message}),this.handleErrorMessage(e.description);const t=this.submitButton.querySelector(".sold-out-message");if(!t)return;this.submitButton.setAttribute("disabled",!0),this.submitButtonText.classList.add("hidden"),t.classList.remove("hidden"),this.error=!0;return}else if(!this.cart){window.location=window.routes.cart_url;return}this.error||_(y.cartUpdate,{source:"product-form",productVariantId:s.get("id"),cartData:e});try{const t=this.closest(".product__info-wrapper"),S=(t==null?void 0:t.getAttribute("data-collection-name"))||null;if(!t)throw new Error("No .product__info-wrapper found");const p=L(),q=p==="product"?"product_page":"quick_add_modal",v=(n=t.querySelector(".product__title h1, .product__title h2"))==null?void 0:n.textContent.trim(),g=t.querySelector(".price-item--sale.price-item--last")?t.querySelector(".price-item--sale.price-item--last"):t.querySelector(".price-item--regular"),f=t.querySelector(".price-item--regular"),E=(c=t.querySelector('input[type="radio"][name^="Size-"]:checked'))==null?void 0:c.value,B=(u=t.querySelector("img"))==null?void 0:u.src,C=parseInt(((l=(d=t.querySelector(".product__inventory"))==null?void 0:d.textContent.match(/\d+/))==null?void 0:l[0])||"0",10),b=parseInt(((m=t.querySelector('[name="quantity"]'))==null?void 0:m.value)||"1",10),w=((h=t.querySelector(".product__sku__id"))==null?void 0:h.textContent.replace("SKU: ","").trim())||null,o=g?parseFloat(g.textContent.replace(/[^\d.]/g,"")):null,A=f?parseFloat(f.textContent.replace(/[^\d.]/g,"")):null,M=parseInt(this.variantIdInput.value,10),x={location:q,page_category:p,item_id:M,item_name:v,item_sku:w,item_category:S,price:o,compare_at_price:A,size:E,image:B,stock:C,quantity:b,total_cost:o?o*b:null};k("product_added_to_cart",x)}catch(t){console.warn("[Analytics] Failed to track quick add to cart:",t)}this.error=!1;const a=this.closest("quick-add-modal");a?(document.body.addEventListener("modalClosed",()=>{setTimeout(()=>{this.cart.renderContents(e)})},{once:!0}),a.hide(!0)):this.cart.renderContents(e)}).catch(e=>{console.error(e)}).finally(()=>{this.submitButton.classList.remove("loading"),this.cart&&this.cart.classList.contains("is-empty")&&this.cart.classList.remove("is-empty"),this.error||this.submitButton.removeAttribute("aria-disabled"),this.querySelector(".loading__spinner").classList.add("hidden")})}handleErrorMessage(r=!1){this.hideErrors||(this.errorMessageWrapper=this.errorMessageWrapper||this.querySelector(".product-form__error-message-wrapper"),this.errorMessageWrapper&&(this.errorMessage=this.errorMessage||this.errorMessageWrapper.querySelector(".product-form__error-message"),this.errorMessageWrapper.toggleAttribute("hidden",!r),r&&(this.errorMessage.textContent=r)))}toggleSubmitButton(r=!0,i){r?(this.submitButton.setAttribute("disabled","disabled"),i&&(this.submitButtonText.textContent=i)):(this.submitButton.removeAttribute("disabled"),this.submitButtonText.textContent=window.variantStrings.addToCart)}get variantIdInput(){return this.form.querySelector("[name=id]")}});
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.