1customElements.get("product-form-component")||customElements.define("product-form-component",class extends HTMLElement{constructor(){super(),this.init()}init(){this.form=this.querySelector("form"),this.form&&(this.variantIdInput.disabled=!1,this.form.addEventListener("submit",this.onSubmitHandler.bind(this)),this.cart=document.querySelector("cart-drawer"),this.submitButton=this.form?.querySelector(".add-to-cart-button"),this.submitButtonText=this.submitButton?this.submitButton.querySelector("span"):null,this.checkbox=this.form?.querySelector('[id^="agree_condition-"]'),this.buyItNowButton=this.form?.querySelector(".shopify-payment-button"),document.querySelector("cart-drawer")&&this.submitButton&&this.submitButton.setAttribute("aria-haspopup","dialog"),this.hideErrors=this.dataset.hideErrors==="true",this.initAgreeCondition(),this.setupErrorSync())}setupErrorSync(){try{const productInfo=this.closest("product-info"),sectionId=productInfo?.dataset.section||productInfo?.dataset.originalSection;if(!sectionId)return;const stickyATC=document.querySelector(`sticky-atc[data-sticky-section-id="${sectionId}"]`);if(!stickyATC)return;const mainErrorWrapper=this.querySelector(".product-form__error-message-wrapper"),stickyErrorWrapper=stickyATC.querySelector(".product-form__error-message-wrapper");if(!mainErrorWrapper||!stickyErrorWrapper)return;const syncFromMain=()=>{const isVisible=!mainErrorWrapper.hasAttribute("hidden"),errorMessage=mainErrorWrapper.querySelector(".product-form__error-message")?.textContent;if(stickyErrorWrapper.toggleAttribute("hidden",!isVisible||!errorMessage),isVisible&&errorMessage){const stickyErrorMessage=stickyErrorWrapper.querySelector(".product-form__error-message");stickyErrorMessage&&(stickyErrorMessage.textContent=errorMessage)}};syncFromMain(),this._errorObserver=new MutationObserver(syncFromMain),this._errorObserver.observe(mainErrorWrapper,{attributes:!0,attributeFilter:["hidden"],childList:!0,subtree:!0}),this.cartErrorUnsubscriber=subscribe(PUB_SUB_EVENTS.cartError,()=>{syncFromMain()})}catch{}}initAgreeCondition(){!this.checkbox||!this.buyItNowButton||(this.buyItNowButton.classList.add("disabled"),this.checkbox.addEventListener("change",()=>{this.buyItNowButton.classList.toggle("disabled",!this.checkbox.checked)}),this.form.addEventListener("submit",e=>{this.checkbox.checked||e.preventDefault()}))}onSubmitHandler(evt){if(evt.preventDefault(),this.submitButton.getAttribute("aria-disabled")==="true")return;this.handleErrorMessage(),this.submitButton.setAttribute("aria-disabled",!0),this.submitButton.classList.add("loading"),this.submitButton.querySelector(".loading__spinner").classList.remove("hidden");const productInfo=this.closest("product-info"),sectionId=productInfo?.dataset.section||productInfo?.dataset.originalSection,stickyAddButton=sectionId?document.getElementById(`StickyCart-ProductSubmitButton-${sectionId}`):void 0,stickyLoadingSpinner=stickyAddButton?.querySelector(".loading__spinner");stickyAddButton&&stickyLoadingSpinner&&(stickyAddButton.classList.add("loading"),stickyLoadingSpinner.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)),document.querySelectorAll('.product-form__input [name^="properties"]').forEach(property=>{if(property.type==="file"){if(!property.files||property.files.length===0||!property.files[0])return;formData.append(property.name,property.files[0]);return}property.value==null||property.value===""||formData.append(property.name,property.value)}),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-component",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)return;this.submitButton.setAttribute("aria-disabled",!0),this.submitButtonText.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-component",productVariantId:formData.get("id"),cartData:response}),this.error=!1;const quickAddModal=this.closest("quick-add-modal");quickAddModal?(document.body.addEventListener("modalClosed",()=>{setTimeout(()=>{this.cart&&typeof this.cart.renderContents=="function"&&this.cart.renderContents(response)})},{once:!0}),quickAddModal.hide(!0)):this.cart&&typeof this.cart.renderContents=="function"&&this.cart.renderContents(response)}).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.submitButton.querySelector(".loading__spinner").classList.add("hidden");const productInfo2=this.closest("product-info"),sectionId2=productInfo2?.dataset.section||productInfo2?.dataset.originalSection,stickyAddButton2=sectionId2?document.getElementById(`StickyCart-ProductSubmitButton-${sectionId2}`):void 0,stickyLoadingSpinner2=stickyAddButton2?.querySelector(".loading__spinner");stickyAddButton2&&stickyLoadingSpinner2&&(stickyAddButton2.classList.remove("loading"),stickyLoadingSpinner2.classList.add("hidden"))})}disconnectedCallback(){try{this.cartErrorUnsubscriber?.(),this._errorObserver?.disconnect()}catch{}}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)))}toggleSubmitButton(disable=!0,text){this.submitButton&&(disable?(this.submitButton.setAttribute("disabled","disabled"),text&&(this.submitButtonText.textContent=text)):(this.submitButton.removeAttribute("disabled"),this.submitButtonText.textContent=window.variantStrings.addToCart))}get variantIdInput(){return this.form.querySelector("[name=id]")}}); 2//# sourceMappingURL=/cdn/shop/t/88/assets/product-form.js.map?v=34485214730502210991785435404
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.