PageSourceSearch

https://farmhounds.com/cdn/shop/t/91/assets/product-form.s.min.js?v=24902052675880661221787240476

js farmhounds.com collected 2026-10-04 13:24:44 UTC 4,520 bytes, 1 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.submitButton=this.querySelector('[type="submit"]'),this.submitButtonText=this.submitButton.querySelector("span"),document.querySelector("cart-drawer")&&this.submitButton.setAttribute("aria-haspopup","dialog"),this.hideErrors="true"===this.dataset.hideErrors}onSubmitHandler(t){if(t.preventDefault(),"true"===this.submitButton.getAttribute("aria-disabled"))return;this.handleErrorMessage(),this.submitButton.setAttribute("aria-disabled",!0),this.submitButton.classList.add("loading"),this.querySelector(".loading__spinner").classList.remove("hidden");const e=fetchConfig("javascript");e.headers["X-Requested-With"]="XMLHttpRequest",delete e.headers["Content-Type"];const r=new FormData(this.form);this.cart&&(r.append("sections",this.cart.getSectionsToRender().map(t=>t.id)),r.append("sections_url",window.location.pathname),this.cart.setActiveElement(document.activeElement)),e.body=r;const s=r.get("id"),i=parseInt(r.get("quantity"))||1,a=this.createCartLinesUpdateEvent(s,i);fetch(`${routes.cart_add_url}`,e).then(t=>t.json()).then(t=>{if(t.status){publish(PUB_SUB_EVENTS.cartError,{source:"product-form",productVariantId:s,errors:t.errors||t.description,message:t.message}),this.handleErrorMessage(t.description),this.dispatchCartErrorEvent(t.description||t.message,"INVALID"),a?.reject(new Error(t.description||t.message));const e=this.submitButton.querySelector(".sold-out-message");if(!e)return;return this.submitButton.setAttribute("aria-disabled",!0),this.submitButtonText.classList.add("hidden"),e.classList.remove("hidden"),void(this.error=!0)}if(!this.cart)return this.resolveCartLinesUpdate(a),void(window.location=window.routes.cart_url);this.resolveCartLinesUpdate(a);const e=CartPerformance.createStartingMarker("add:wait-for-subscribers");this.error||publish(PUB_SUB_EVENTS.cartUpdate,{source:"product-form",productVariantId:s,cartData:t}).then(()=>{CartPerformance.measureFromMarker("add:wait-for-subscribers",e)}),this.error=!1;const r=this.closest("quick-add-modal");r?(document.body.addEventListener("modalClosed",()=>{setTimeout(()=>{CartPerformance.measure("add:paint-updated-sections",()=>{this.cart.renderContents(t)})})},{once:!0}),r.hide(!0)):CartPerformance.measure("add:paint-updated-sections",()=>{this.cart.renderContents(t)})}).catch(t=>{console.error(t),this.dispatchCartErrorEvent(t.message||"Network error","SERVICE_UNAVAILABLE"),a?.reject(t)}).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__spinner").classList.add("hidden"),CartPerformance.measureFromEvent("add:user-action",t)})}handleErrorMessage(t=!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",!t),t&&(this.errorMessage.textContent=t)))}toggleSubmitButton(t=!0,e){t?(this.submitButton.setAttribute("disabled","disabled"),e&&(this.submitButtonText.textContent=e)):(this.submitButton.removeAttribute("disabled"),this.submitButtonText.textContent=window.variantStrings.addToCart)}createCartLinesUpdateEvent(t,e){const{CartLinesUpdateEvent:r}=window.StandardEvents||{};if(!r)return null;const s=r.createPromise();return this.dispatchEvent(new r({action:"add",context:"product",lines:[{merchandiseId:t,quantity:e}],promise:s.promise})),s}resolveCartLinesUpdate(t){if(!t)return;const{CartLinesUpdateEvent:e}=window.StandardEvents||{};if(!e)return;("undefined"!=typeof CartItems?CartItems.fetchCartData():fetch(`${routes.cart_url}.json`).then(t=>t.json())).then(r=>{if(!r?.currency)return t.reject(new Error("Missing currency in cart response"));t.resolve({cart:e.createCartFromAjaxResponse(r)})}).catch(e=>t.reject(e))}dispatchCartErrorEvent(t,e){const{CartErrorEvent:r}=window.StandardEvents||{};r&&this.dispatchEvent(new r({error:t,code:e}))}get variantIdInput(){return this.form.querySelector("[name=id]")}});

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.