PageSourceSearch

https://octobersveryown.com/cdn/shop/t/106/assets/product-form.js?v=58393640398960182311784642781

js octobersveryown.com collected 2026-10-02 04:07:26 UTC 10,156 bytes, 2 lines download raw bytes

1customElements.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.submitButtons=this.getSubmitButtons(),this.submitButtonTexts=Array.from(this.submitButtons).map(button=>button.querySelector("span")),this.notifyMeButton=this.querySelector("#NotifyMeButton-"+this.dataset.sectionId),this.notifyMeButton&&this.notifyMeButton.addEventListener("click",this.openNotifyMeModal.bind(this)),document.querySelector("cart-drawer")&&this.submitButtons.forEach(button=>button.setAttribute("aria-haspopup","dialog")),this.hideErrors=this.dataset.hideErrors==="true",this.safetyTimeout=null,this.setupSizeSelectionErrorHandler()}disconnectedCallback(){this.safetyTimeout&&(clearTimeout(this.safetyTimeout),this.safetyTimeout=null)}onSubmitHandler(evt){if(evt.preventDefault(),this.submitButtons=this.getSubmitButtons(),this.submitButtonTexts=Array.from(this.submitButtons).map(button=>button.querySelector("span")),evt.submitter&&evt.submitter.getAttribute("aria-disabled")==="true"||this.closest("product-info")?.dataset.variantPending==="true")return;const variantSelects=document.querySelector("variant-selects");if(variantSelects){const sizeFieldsets=Array.from(variantSelects.querySelectorAll("fieldset, .product-form__input--dropdown"));let sizeInput=null;for(const fieldset of sizeFieldsets){const legend=fieldset.querySelector("legend, label"),sizeInputByName=fieldset.querySelector('input[name*="Size"], input[name*="size"], select[name*="Size"], select[name*="size"]');if(legend&&legend.textContent.toLowerCase().includes("size")||sizeInputByName){const radioInput=fieldset.querySelector('input[type="radio"]:checked'),selectInput=fieldset.querySelector("select");if(radioInput?sizeInput=radioInput:selectInput&&selectInput.value&&(sizeInput=selectInput),!sizeInput||!sizeInput.value){const sizeErrorMessage=variantSelects.querySelector(".size-selection-error");sizeErrorMessage&&(sizeErrorMessage.style.display="block",sizeErrorMessage.scrollIntoView({behavior:"smooth",block:"center"}));return}break}}}this.handleErrorMessage(),this.submitButtons.forEach(button=>{button.setAttribute("aria-disabled",!0),button.classList.add("loading");const buttonText=button.querySelector("span"),loadingSpinner=button.querySelector(".loading__spinner");buttonText&&(buttonText.style.display="none"),loadingSpinner&&loadingSpinner.classList.remove("hidden")}),this.safetyTimeout=setTimeout(()=>{this.error!==!0&&this.resetButtonStates()},1e4);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.safetyTimeout&&(clearTimeout(this.safetyTimeout),this.safetyTimeout=null),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),response.description&&response.description.toLowerCase().includes("sold out")?(this.submitButtons.forEach(button=>{const soldOutMessage=button.querySelector(".sold-out-message");if(!soldOutMessage)return;button.setAttribute("aria-disabled",!0);const buttonText=button.querySelector("span"),loadingSpinner=button.querySelector(".loading__spinner");buttonText&&buttonText.classList.add("hidden"),loadingSpinner&&loadingSpinner.classList.add("hidden"),soldOutMessage.classList.remove("hidden")}),this.error=!0):(this.error=!1,this.resetButtonStates());return}else if(!this.cart){window.location=window.routes.cart_url;return}const startMarker=CartPerformance.createStartingMarker("add:wait-for-subscribers");this.error||publish(PUB_SUB_EVENTS.cartUpdate,{source:"product-form",productVariantId:formData.get("id"),cartData:response}).then(()=>{CartPerformance.measureFromMarker("add:wait-for-subscribers",startMarker)}),this.error=!1;const quickAddModal=this.closest("quick-add-modal");quickAddModal?(document.body.addEventListener("modalClosed",()=>{setTimeout(()=>{CartPerformance.measure("add:paint-updated-sections",()=>{this.cart.renderContents(response)})})},{once:!0}),quickAddModal.hide(!0)):CartPerformance.measure("add:paint-updated-sections",()=>{this.cart.renderContents(response)})}).catch(e=>{console.error(e),this.error=!1,this.safetyTimeout&&(clearTimeout(this.safetyTimeout),this.safetyTimeout=null)}).finally(()=>{this.safetyTimeout&&(clearTimeout(this.safetyTimeout),this.safetyTimeout=null),this.error?this.submitButtons.forEach(button=>{button.classList.remove("loading");const buttonText=button.querySelector("span"),loadingSpinner=button.querySelector(".loading__spinner");buttonText&&(buttonText.style.display=""),loadingSpinner&&loadingSpinner.classList.add("hidden")}):this.resetButtonStates(),this.cart&&this.cart.classList.contains("is-empty")&&this.cart.classList.remove("is-empty"),this.submitButtons.forEach(button=>{const buttonText=button.querySelector("span"),loadingSpinner=button.querySelector(".loading__spinner");buttonText&&(buttonText.style.display=""),loadingSpinner&&loadingSpinner.classList.add("hidden")}),CartPerformance.measureFromEvent("add:wait-for-subscribers",evt)})}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:this.resetButtonStates()))}toggleSubmitButton(disable=!0,text){this.submitButtons.forEach((button,index)=>{disable?(button.setAttribute("disabled","disabled"),text&&this.submitButtonTexts[index]&&(this.submitButtonTexts[index].textContent=text)):(button.removeAttribute("disabled"),this.submitButtonTexts[index]&&(this.submitButtonTexts[index].textContent=window.variantStrings.addToCart))})}updateButtonVisibility(isAvailable){this.notifyMeButton&&(this.notifyMeButton.style.display=isAvailable?"n
1one":"block");const hideSubmit=!isAvailable&&!!this.notifyMeButton;this.submitButtons.forEach((button,index)=>{button.style.display=hideSubmit?"none":"block"}),this.refreshButtonReferences()}refreshButtonReferences(){this.submitButtons=this.getSubmitButtons(),this.submitButtonTexts=Array.from(this.submitButtons).map(button=>button.querySelector("span")),this.notifyMeButton=this.querySelector("#NotifyMeButton-"+this.dataset.sectionId),this.notifyMeButton&&(this.notifyMeButton.removeEventListener("click",this.openNotifyMeModal.bind(this)),this.notifyMeButton.addEventListener("click",this.openNotifyMeModal.bind(this)))}getSubmitButtons(){const submitButtons=Array.from(this.querySelectorAll('[type="submit"]'));return this.form?.id&&document.querySelectorAll(`[type="submit"][form="${this.form.id}"]`).forEach(button=>{submitButtons.includes(button)||submitButtons.push(button)}),submitButtons}openNotifyMeModal(event){typeof window.openNotifyMeModal=="function"?window.openNotifyMeModal(event):console.warn("Global openNotifyMeModal function not found")}resetButtonStates(){this.submitButtons.forEach(button=>{button.classList.remove("loading"),button.removeAttribute("aria-disabled");const buttonText=button.querySelector("span"),soldOutMessage=button.querySelector(".sold-out-message"),loadingSpinner=button.querySelector(".loading__spinner");buttonText&&(buttonText.style.display="",soldOutMessage&&(buttonText.classList.remove("hidden"),soldOutMessage.classList.add("hidden"))),loadingSpinner&&loadingSpinner.classList.add("hidden"),button.removeAttribute("disabled")})}setupSizeSelectionErrorHandler(){const variantSelects=document.querySelector("variant-selects");variantSelects&&variantSelects.addEventListener("change",event=>{const fieldset=event.target.closest("fieldset, .product-form__input--dropdown");if(fieldset){const legend=fieldset.querySelector("legend, label"),sizeInputByName=fieldset.querySelector('input[name*="Size"], input[name*="size"], select[name*="Size"], select[name*="size"]');if(legend&&legend.textContent.toLowerCase().includes("size")||sizeInputByName){const sizeErrorMessage=variantSelects.querySelector(".size-selection-error");sizeErrorMessage&&(sizeErrorMessage.style.display="none")}}})}preselectSmallestSizeOnDesktop(){if(window.innerWidth<750)return;const variantSelects=document.querySelector("variant-selects");if(!variantSelects)return;const sizeFieldsets=Array.from(variantSelects.querySelectorAll("fieldset, .product-form__input--dropdown"));for(const fieldset of sizeFieldsets){const legend=fieldset.querySelector("legend, label"),sizeInputByName=fieldset.querySelector('input[name*="Size"], input[name*="size"], select[name*="Size"], select[name*="size"]');if(legend&&legend.textContent.toLowerCase().includes("size")||sizeInputByName){const alreadyChecked=fieldset.querySelector('input[type="radio"]:checked'),selectElement=fieldset.querySelector("select");if(alreadyChecked||selectElement&&selectElement.value)return;const firstRadio=fieldset.querySelector('input[type="radio"]:not([disabled]):not(.disabled)');if(firstRadio){firstRadio.click();return}if(selectElement){const firstOption=selectElement.querySelector('option:not([disabled]):not(.disabled):not([value=""])');firstOption&&(selectElement.value=firstOption.value,selectElement.dispatchEvent(new Event("change",{bubbles:!0})))}break}}}get variantIdInput(){return this.form.querySelector("[name=id]")}});
2//# sourceMappingURL=/cdn/shop/t/106/assets/product-form.js.map?v=58393640398960182311784642781

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.