PageSourceSearch

https://us.balibodyco.com/cdn/shop/t/398/assets/product-form-CJL_OpcF.js

js balibodyco.com collected 2026-09-25 04:07:20 UTC 6,423 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.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",this.swatchesList=this.form.querySelector(".swatches-list")??null,this.swatchesList&&this.swatchesList.querySelectorAll("button.swatch").forEach(t=>{t.addEventListener("click",()=>{let a=t.dataset.variantTitle,r=t.dataset.variantAvailable;this.form.querySelector(".selected-shade").innerHTML=a,t.closest("ul").querySelectorAll("button.swatch").forEach(u=>{u.classList.remove("selected")}),t.classList.add("selected"),this.form.querySelector("input.product-variant-id").value=t.dataset.variantId,r==="false"?(console.log("variant out of stock"),t.closest(".quick-add").classList.remove("quick-add--true"),t.closest(".quick-add").classList.add("quick-add--false"),t.closest(".quick-add").classList.add("quick-add--variant-false"),t.closest(".quick-add").querySelector(".manual-bis-trigger").setAttribute("data-var_id",t.dataset.variantId),t.closest(".quick-add").querySelector(".manual-bis-trigger").setAttribute("data-var_title",t.dataset.variantTitle),t.closest(".quick-add").querySelector(".manual-bis-trigger").classList.remove("hidden")):(t.closest(".quick-add").classList.add("quick-add--true"),t.closest(".quick-add").classList.remove("quick-add--false"),t.closest(".quick-add").classList.remove("quick-add--variant-false"),t.closest(".quick-add").querySelector(".manual-bis-trigger").setAttribute("data-var_title",""),t.closest(".quick-add").querySelector(".manual-bis-trigger").classList.add("hidden"))})})}onSubmitHandler(t){var h;if(t.preventDefault(),this.submitButton.getAttribute("aria-disabled")==="true")return;this.handleErrorMessage(),this.submitButton.setAttribute("aria-disabled",!0),this.submitButton.classList.add("loading");const a=fetchConfig("javascript");a.headers["X-Requested-With"]="XMLHttpRequest",delete a.headers["Content-Type"];const r=new FormData(this.form);this.cart&&(r.append("sections",this.cart.getSectionsToRender().map(e=>e.id)),r.append("sections_url",window.location.pathname),this.cart.setActiveElement(document.activeElement));const u=r.get("bundle")==="true";if(r.delete("bundle"),a.body=r,u){const e=JSON.parse(((h=document.querySelector(`#${t.target.getAttribute("id")}-bundle-data`))==null?void 0:h.textContent)??null);if(e){const m=r.get("id"),d=r.get("quantity"),p=Date.now(),l=e.skipVariantOverride===!0;e.items.forEach((i,s)=>{const o=Number(i.quantity)||1,c=Number(d)||1;i.quantity=o*c,i.properties._bundle_id=`${i.properties._bundle_id}--${p}`,!l&&s===e.items.length-1&&(i.id=m)}),this.cart&&(e.sections=this.cart.getSectionsToRender().map(i=>i.id),e.sections_url=window.location.pathname),a.headers["Content-Type"]="application/json",a.body=JSON.stringify(e)}}fetch(`${routes.cart_add_url}`,a).then(e=>e.json()).then(async e=>{if(this.dataset.formType==="promo"){const s=e;s.properties&&s.properties._promotion_id&&(window.dataLayer=window.dataLayer||[],dataLayer.push({event:"pairandsave_addtocart",location:Shopify.country,promotion_ID:s.properties._promotion_id,origin_product_name:s.product_title,origin_product_cart:s.title}))}if(e.status){if(publish(PUB_SUB_EVENTS.cartError,{source:"product-form",productVariantId:r.get("id"),errors:e.errors||e.description,message:e.message}),this.handleErrorMessage(e.description),this.cart&&typeof this.cart.getSectionsToRender=="function"){const o=this.cart.getSectionsToRender().map(c=>c.id);fetch(`${routes.cart_url}?sections=${o.join(",")}&sections_url=${window.location.pathname}`).then(c=>c.json()).then(c=>this.cart.renderContents({sections:c})).catch(()=>{})}const s=this.submitButton.querySelector(".sold-out-message");if(!s)return;this.submitButton.setAttribute("aria-disabled",!0),this.submitButton.querySelector("span").classList.add("hidden"),s.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",productVariantId:r.get("id"),cartData:e}),this.error=!1;const d=this.closest("quick-add-modal");let l=await(await fetch(`${window.routes.cart_url}?section_id=promotions-to-active`)).text(),i=JSON.parse(new DOMParser().parseFromString(l,"text/html").querySelector(".shopify-section").innerHTML);if(i.id){const s=JSON.stringify({id:i.id,properties:i.properties,sections:this.cart.getSectionsToRender().map(o=>o.id),sections_url:window.location.pathname});
1e=await fetch(`${routes.cart_change_url}`,{...fetchConfig(),body:s}).then(o=>o.text()).then(o=>JSON.parse(o))}d?(document.body.addEventListener("modalClosed",()=>{setTimeout(()=>{this.cart.renderContents(e)})},{once:!0}),setTimeout(()=>{d.hide(!0),this.cart.open()},500)):this.cart.renderContents(e)}).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.error||(this.submitButton.classList.add("added"),this.cart.hasAttribute("data-auto-open")&&this.cart.open(),setTimeout(()=>{this.submitButton.classList.remove("added");const e=this.submitButton.closest(".product__card-options");e&&e.classList.remove("show"),this.querySelector(".select-shade.btn")&&(this.querySelector(".select-shade.btn").style.opacity="1")},1e3))})}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)))}});var f=document.querySelectorAll(".product-card-wrapper");f&&f.forEach(n=>{var t=n.querySelector(".select-shade.btn");if(t){var a=n.querySelector(".product__card-options");t.addEventListener("click",function(){a.classList.add("show"),t.style.opacity="0"})}});

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.