PageSourceSearch

https://match1995.com/cdn/shop/t/132/assets/product-form.js?v=103403818266330377951762803307

js match1995.com collected 2026-09-26 00:09:15 UTC 5,390 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.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";const variantRadios=document.getElementById(`VariantRadios-${this.dataset.sectionId}`);variantRadios&&(this.currentVariant=variantRadios.getCurrentVariant(),variantRadios.addEventListener("variantChange",this.onVariantChange.bind(this))),this.getProductData(),this.ga4_view_item()}getProductData(){const jsonProductData=this.querySelector('#json-product[type="application/json"]');return!this.productData&&jsonProductData!==null&&(this.productData=JSON.parse(jsonProductData.textContent).product,this.currencyCode=JSON.parse(jsonProductData.textContent).currency,jsonProductData.parentNode.removeChild(jsonProductData)),Array.isArray(this.productData)?this.productData:[]}ga4_view_item(){try{const{id:item_id,title:item_name,tags,type:item_category}=this.productData;let item_variant="";this.currentVariant&&(item_variant=this.currentVariant.id);const item={item_id,item_name,item_variant,item_category,quantity:1,...calculatePrice({product:this.currentVariant?this.currentVariant:this.productData,product_tags:Array.isArray(tags)?tags:[]})};pushDataLayerEvent({event:"view_item",ecommerce:{currency:this.currencyCode,value:calculateValue([item]),items:[item]}})}catch(error){console.log("GA4: view_item",error)}}onVariantChange(e){e.detail.available===!0?(this.submitButton.removeAttribute("aria-disabled"),this.submitButton.disabled=!1,this.submitButton.querySelector("#cart-text-content").textContent=window?.variantStrings?.addToCart||"Add to Cart",this.submitButton.classList.remove("visually-hidden"),document.querySelector(".placeholder-data-alert")&&location.reload()):(this.submitButton.setAttribute("aria-disabled",!0),this.submitButton.disabled=!0,this.submitButton.querySelector("#cart-text-content").textContent=window?.variantStrings?.soldOut||"Sold Out",this.hasKlaviyoBis===!0&&this.klaviyoBis()!==null&&this.submitButton.classList.add("visually-hidden")),this.ga4_view_item()}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.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(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);const soldOutMessage=this.submitButton.querySelector(".sold-out-message");if(!soldOutMessage)return;this.submitButton.setAttribute("aria-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}const quantityInput=document.querySelector(".product quantity-input");let quantity=parseInt(quantityInput.querySelector("input.quantity-input").value);try{const{id:item_id,title:item_name,tags,type:item_category}=this.productData;let item_variant="";this.currentVariant&&(item_variant=this.currentVariant.id);const item={item_id,item_name,item_variant,item_category,quantity,...calculatePrice({product:this.currentVariant?this.currentVariant:this.productData,product_tags:Array.isArray(tags)?tags:[]})};pushDataLayerEvent({event:"add_to_cart",ecommerce:{currency:this.currencyCode,value:calculateValue([item]),items:[item]}})}catch(error){console.log("GA4: add_to_cart",error)}this.error=!1,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.querySelector(".loading-overlay-spinner").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.textContent=errorMessage)))}});
2//# sourceMappingURL=/cdn/shop/t/132/assets/product-form.js.map?v=103403818266330377951762803307

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.