1console.log("\u{1F50D} Debug: Checking required dependencies..."),console.log("\u{1F50D} fetchConfig available:",typeof fetchConfig<"u"),console.log("\u{1F50D} routes available:",typeof routes<"u",routes),console.log("\u{1F50D} PUB_SUB_EVENTS available:",typeof PUB_SUB_EVENTS<"u",PUB_SUB_EVENTS),console.log("\u{1F50D} publish function available:",typeof publish<"u"),customElements.get("product-form")||customElements.define("product-form",class extends HTMLElement{constructor(){if(super(),console.log("\u{1F527} ProductForm constructor called"),this.form=this.querySelector("form"),console.log("\u{1F527} Form found:",!!this.form),!this.form){console.error("\u274C No form found in ProductForm element");return}this.variantIdInput.disabled=!1,this.form.addEventListener("submit",this.onSubmitHandler.bind(this));const cartType=window.Shopify?.theme?.settings?.cart_type||"notification";console.log("\u{1F527} Cart type setting:",cartType),cartType==="drawer"?this.cart=document.querySelector("cart-drawer")||document.querySelector("cart-notification"):this.cart=document.querySelector("cart-notification")||document.querySelector("cart-drawer"),console.log("\u{1F527} Cart notification found:",!!document.querySelector("cart-notification")),console.log("\u{1F527} Cart drawer found:",!!document.querySelector("cart-drawer")),console.log("\u{1F527} Cart element found:",!!this.cart,this.cart?.tagName),console.log("\u{1F527} Selected cart element type:",this.cart?.tagName),this.submitButton=this.querySelector('[type="submit"]'),console.log("\u{1F527} Submit button found:",!!this.submitButton),this.submitButton&&(this.submitButtonText=this.submitButton.querySelector("span"),console.log("\u{1F527} Submit button text element found:",!!this.submitButtonText)),document.querySelector("cart-drawer")&&this.submitButton.setAttribute("aria-haspopup","dialog"),this.hideErrors=this.dataset.hideErrors==="true",console.log("\u{1F527} ProductForm initialization complete")}onSubmitHandler(evt){if(console.log("\u{1F680} onSubmitHandler triggered"),evt.preventDefault(),this.submitButton.getAttribute("aria-disabled")==="true"){console.log("\u26A0\uFE0F Button already disabled, returning");return}console.log("\u{1F527} Starting form submission process"),this.handleErrorMessage(),console.log("\u{1F527} Setting button to loading state"),this.submitButton.setAttribute("aria-disabled",!0),this.submitButton.classList.add("loading");const spinner=this.querySelector(".loading__spinner");console.log("\u{1F527} Loading spinner found:",!!spinner),spinner?spinner.classList.remove("hidden"):console.warn("\u26A0\uFE0F No loading spinner found"),console.log("\u{1F527} Preparing fetch config");const config=fetchConfig("javascript");config.headers["X-Requested-With"]="XMLHttpRequest",delete config.headers["Content-Type"],console.log("\u{1F527} Creating FormData");const formData=new FormData(this.form);if(console.log("\u{1F527} FormData created, entries:",Array.from(formData.entries())),this.cart){console.log("\u{1F527} Adding cart sections to form data");const sections=this.cart.getSectionsToRender().map(section=>section.id);console.log("\u{1F527} Sections to render:",sections),formData.append("sections",sections),formData.append("sections_url",window.location.pathname),this.cart.setActiveElement(document.activeElement)}else console.warn("\u26A0\uFE0F No cart element found");config.body=formData,console.log("\u{1F527} Fetch config prepared:",config),console.log("\u{1F527} Starting fetch request to:",routes.cart_add_url),fetch(`${routes.cart_add_url}`,config).then(response=>{if(console.log("\u{1F527} Fetch response received:",response.status,response.statusText),!response.ok)throw new Error(`HTTP error! status: ${response.status}`);return response.json()}).then(response=>{if(console.log("\u{1F527} Response parsed:",response),response.status){console.error("\u274C Cart error response:",response),publish(PUB_SUB_EVENTS.cartError,{source:"product-form",productVariantId:formData.get("id"),errors:response.errors||response.description,message:response.message}),this.handleErrorMessage(response.description);const soldOutMessage=this.submitButton.querySelector(".sold-out-message");if(!soldOutMessage){console.log("\u{1F527} No sold out message element found");return}this.submitButton.setAttribute("aria-disabled",!0),this.submitButtonText.classList.add("hidden"),soldOutMessage.classList.remove("hidden"),this.error=!0;return}else if(!this.cart){console.log("\u{1F527} No cart element, redirecting to cart page"),window.location=window.routes.cart_url;return}console.log("\u{1F527} Cart update successful, publishing event"),this.error||(console.log("\u{1F527} Publishing cart update event"),publish(PUB_SUB_EVENTS.cartUpdate,{source:"product-form",productVariantId:formData.get("id"),cartData:response})),this.error=!1;const quickAddModal=this.closest("quick-add-modal");quickAddModal?(console.log("\u{1F527} Quick add modal detected"),document.body.addEventListener("modalClosed",()=>{setTimeout(()=>{console.log("\u{1F527} Rendering cart contents after modal close"),this.cart.renderContents(response)})},{once:!0}),quickAddModal.hide(!0)):(console.log("\u{1F527} Rendering cart contents directly"),this.cart.renderContents(response))}).catch(e=>{console.error("\u274C Fetch error:",e),console.error("\u274C Error details:",{message:e.message,stack:e.stack,formData:Array.from(formData.entries()),config})}).finally(()=>{console.log("\u{1F527} Finally block executed"),this.submitButton.classList.remove("loading"),this.cart&&this.cart.classList.contains("is-empty")&&this.cart.classList.remove("is-empty"),this.error?console.log("\u26A0\uFE0F Error occurred, keeping button disabled"):(console.log("\u{1F527} Removing aria-disabled from button"),this.submitButton.removeAttribute("aria-disabled"));const spinner2=this.querySelector(".loading__spinner");spinner2&&(console.log("\u{1F527} Hiding loading spinner"),spinner2.classList.add("hidden")),console.log("\u{1F527} Form submission process complete")}
1)}handleErrorMessage(errorMessage=!1){if(console.log("\u{1F527} handleErrorMessage called with:",errorMessage),this.hideErrors){console.log("\u{1F527} Errors hidden, returning");return}if(this.errorMessageWrapper=this.errorMessageWrapper||this.querySelector(".product-form__error-message-wrapper"),console.log("\u{1F527} Error message wrapper found:",!!this.errorMessageWrapper),!this.errorMessageWrapper){console.warn("\u26A0\uFE0F No error message wrapper found");return}this.errorMessage=this.errorMessage||this.errorMessageWrapper.querySelector(".product-form__error-message"),console.log("\u{1F527} Error message element found:",!!this.errorMessage),this.errorMessageWrapper.toggleAttribute("hidden",!errorMessage),errorMessage&&(console.log("\u{1F527} Setting error message:",errorMessage),this.errorMessage.textContent=errorMessage)}toggleSubmitButton(disable=!0,text){console.log("\u{1F527} toggleSubmitButton called:",disable,text),disable?(this.submitButton.setAttribute("disabled","disabled"),text&&(this.submitButtonText.textContent=text)):(this.submitButton.removeAttribute("disabled"),this.submitButtonText.textContent=window.variantStrings.addToCart)}get variantIdInput(){const input=this.form.querySelector("[name=id]");return console.log("\u{1F527} Variant ID input found:",!!input,input?.value),input}}); 2//# sourceMappingURL=/cdn/shop/t/7/assets/product-form.js.map?v=49080737872126674431770958727
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.