1if(customElements.get("product-form")||customElements.define("product-form",class extends HTMLElement{constructor(){if(super(),this.form=this.querySelector("form"),this.submitButton=this.querySelector('[type="submit"]'),this.hideErrors=this.dataset.hideErrors==="true",!this.form||!this.submitButton)return;const variantInput=this.form.querySelector("[name=id]");variantInput&&(variantInput.disabled=!1),this.form.addEventListener("submit",this.onSubmitHandler.bind(this));const cartDrawer=document.querySelector("cart-drawer");this.cart=cartDrawer&&typeof cartDrawer.getSectionsToRender=="function"&&typeof cartDrawer.renderContents=="function"?cartDrawer:null,this.cart&&this.submitButton.setAttribute("aria-haspopup","dialog")}onSubmitHandler(evt){if(evt.preventDefault(),!this.form||!this.submitButton||this.submitButton.getAttribute("aria-disabled")==="true")return;this.handleErrorMessage(),this.submitButton.setAttribute("aria-disabled",!0),this.submitButton.classList.add("loading");const loadingSpinner=this.querySelector(".loading__spinner");loadingSpinner?.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(response.status){publish(PUB_SUB_EVENTS.cartError,{source:"product-form",productVariantId:formData.get("id"),errors:response.errors||response.description,message:response.message}),this.handleErrorMessage(response.description),this.submitButton.setAttribute("aria-disabled",!0),this.submitButton.querySelector("span")?.classList.add("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"),cartData:response}),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.error(e),this.handleErrorMessage(window.cartStrings?.error||"We could not add this item to the cart. Please try again.")}).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"),loadingSpinner?.classList.add("hidden")})}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&&(this.errorMessage.textContent=errorMessage)))}toggleAddButton(disable=!0,text,modifyClass=!0){const addButton=this.querySelector('[name="add"]'),addButtonText=this.querySelector('[name="add"] > span'),suggestions=this.querySelector(".animate-suggestions");addButton&&(disable?(addButton.setAttribute("disabled","disabled"),text&&addButtonText&&(addButtonText.textContent=text),suggestions&&suggestions.classList.add("hidden")):(addButton.removeAttribute("disabled"),addButtonText&&(addButtonText.textContent=window.variantStrings.addToCart),suggestions&&suggestions.classList.remove("hidden")))}}),!customElements.get("discount-code")){class DiscountCodeBar extends HTMLElement{constructor(){super()}connectedCallback(){const discountField=this.querySelector(".discount-field__input"),copyButton=this.querySelector(".button-copy__discount"),primaryLabel=copyButton.dataset.primaryLabel,secondaryLabel=copyButton.dataset.secondaryLabel;copyButton.addEventListener("click",()=>{discountField.select(),discountField.setSelectionRange(0,99999),document.execCommand("copy"),discountField.setSelectionRange(0,0),copyButton.textContent=secondaryLabel,setTimeout(()=>{copyButton.textContent=primaryLabel},2e3)})}}customElements.define("discount-code",DiscountCodeBar)} 2//# sourceMappingURL=/cdn/shop/t/20/assets/product-form.js.map?v=178065541159897669501791145512
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.