1customElements.get("product-form")||customElements.define("product-form",class extends HTMLElement{constructor(){if(super(),this.form=this.querySelector("form"),this.form.querySelector("[name=id]").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"]'),document.querySelector("cart-drawer")&&this.submitButton.setAttribute("aria-haspopup","dialog"),this.hideErrors=this.dataset.hideErrors==="true",this.stickySubmitBtn=document.querySelector(".anchor_links_nav_section .sticky-submit-button"),this.stickySubmitBtn){const _this=this;this.stickySubmitBtn.addEventListener("click",function(e){e.preventDefault();const targetHref=this.getAttribute("data-target-id");if(targetHref.length){const targetEl=document.querySelector(targetHref);targetEl&&(this.setAttribute("disabled",!0),this.setAttribute("aria-disabled",!0),this.classList.add("loading"),this.querySelector(".loading-overlay__spinner").classList.remove("hidden"),targetEl.dispatchEvent(new Event("click",{bubbles:!0})))}})}this.initKlarnaPrice()}initKlarnaPrice(){const submitBtn=this.querySelector(".product-form__submit"),priceEl=this.querySelector(".klarna_price");if(!submitBtn||!priceEl)return;((selector,timeout=3e3)=>new Promise(resolve=>{const el=document.querySelector(selector);if(el)return resolve(el);const observer=new MutationObserver(()=>{const el2=document.querySelector(selector);el2&&(observer.disconnect(),resolve(el2))});observer.observe(document.body,{childList:!0,subtree:!0}),setTimeout(()=>{observer.disconnect(),resolve(null)},timeout)}))("shopify-payment-terms").then(el=>{if(!el){submitBtn.classList.add("without_klarna_info");return}this.updateKlarnaPrice()})}updateKlarnaPrice(variantId=null){const el=this.form.querySelector("shopify-payment-terms");if(!el)return;const meta=el.getAttribute("shopify-meta");if(!meta)return;const data=JSON.parse(meta);variantId||(variantId=el.getAttribute("variant-id"));const variant=data.variants.find(v=>v.id==variantId&&v.available);if(!variant)return;const priceEl=this.querySelector(".klarna_price");priceEl.innerHTML=variant.price_per_term}onSubmitHandler(evt){if(evt.preventDefault(),this.submitButton.getAttribute("aria-disabled")==="true"||this.submitButton.getAttribute("disabled")==="true")return;if(this.isGridForm=this.form.classList.contains("card-product-form"),this.isGridForm&&this.form.classList.contains("already_added"))return window.location=window.routes.cart_url,!1;this.handleErrorMessage(),this.submitButton.setAttribute("disabled",!0),this.submitButton.setAttribute("aria-disabled",!0),this.submitButton.classList.add("loading"),this.querySelector(".loading-overlay__spinner").classList.remove("hidden");const config=fetchConfig("javascript");config.headers["X-Requested-With"]="XMLHttpRequest",delete config.headers["Content-Type"];const formData=new FormData(this.form);this.cart&&(formData.append("sections",this.cart.getSectionsToRender().map(section=>section.id)),formData.append("sections_url",window.location.pathname),this.cart.setActiveElement(document.activeElement)),config.body=formData,fetch(`${routes.cart_add_url}`,config).then(response=>response.json()).then(response=>{if(this.isGridForm&&(this.form.classList.add("already_added"),this.submitButton.querySelector("span").innerHTML=window.variantStrings.viewCart),response.status){publish(PUB_SUB_EVENTS.cartError,{source:"product-form",productVariantId:formData.get("id"),errors:response.description,message:response.message}),this.handleErrorMessage(response.description);const soldOutMessage=this.submitButton.querySelector(".sold-out-message");if(!soldOutMessage)return;this.submitButton.setAttribute("aria-disabled",!0),this.submitButton.setAttribute("disabled",!0),this.submitButton.querySelector("span").classList.add("hidden"),soldOutMessage.classList.remove("hidden"),this.error=!0;return}else if(!this.cart){window.location=window.routes.cart_url;return}this.error||publish(PUB_SUB_EVENTS.cartUpdate,{source:"product-form",productVariantId:formData.get("id")}),this.error=!1;const quickAddModal=this.closest("quick-add-modal");quickAddModal?(document.body.addEventListener("modalClosed",()=>{setTimeout(()=>{this.cart.renderContents(response)})},{once:!0}),quickAddModal.hide(!0)):this.cart.renderContents(response)}).catch(e=>{console.log(e),console.error(e)}).finally(()=>{const custom_product_submit_popupEl=document.querySelector(".custom_product_submit_popup");custom_product_submit_popupEl&&(custom_product_submit_popupEl.classList.remove("hide"),document.body.classList.add("popup-open")),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.error||this.submitButton.removeAttribute("disabled"),this.querySelector(".loading-overlay__spinner").classList.add("hidden"),this.submitButton.blur()})}handleErrorMessage(errorMessage=!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",!errorMessage),errorMessage&&(this.errorMessage.textContent=errorMessage)))}}); 2//# sourceMappingURL=/cdn/shop/t/120/assets/product-form.js.map?v=33395954546569530801785505490
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.