PageSourceSearch

https://www.heartprintthreads.com/cdn/shop/t/31/assets/cart-bar.js?v=37798441583221551421773343020

js heartprintthreads.com collected 2026-10-06 15:18:17 UTC 6,560 bytes, 1 lines download raw bytes

1!function(){"use strict";class t extends HTMLElement{constructor(){super(),this.boundHandleClick=this.handleClick.bind(this),this.boundResetATC=this.resetATC.bind(this),this.boundOptionChange=this.handleOptionChange.bind(this),this.boundScroll=this.toggleScroll.bind(this)}connectedCallback(){this.section=this.closest("product-info"),this.form=this.section?.querySelector("[data-product-form]"),this.section&&this.form&&(this.formWrapper=window.theme?.settings?.productPageSticky&&this.section.querySelector("[data-form-wrapper]")||this.form,this.image=this.querySelector("[data-cart-bar-image]"),this.options=this.querySelector("[data-cart-bar-options]"),this.qty=this.querySelector("[data-cart-bar-qty]"),this.atcBtn=this.querySelector("[data-cart-bar-add-to-cart]"),this.addEventListener("click",this.boundHandleClick),["theme:cart:refresh","theme:cart-bar:reset-atc-animation"].forEach((t=>document.addEventListener(t,this.boundResetATC))),this.initOptions(),this.initQty(),this.subVariant(),this.initObserver())}resetATC(){this.atcBtn?.classList.remove("is-loading"),this.atcBtn?.removeAttribute("disabled")}handleClick(t){if(t.target.closest("[data-scroll-to-form]")){t.preventDefault();const e=this.section.querySelector("product-form");if(!e)return;return e.setAttribute("tabindex","-1"),e.focus({preventScroll:!0}),void e.scrollIntoView({behavior:"smooth",block:"start"})}if(t.target.closest("[data-cart-bar-add-to-cart]")){t.preventDefault();const e=this.form.querySelector("[data-add-to-cart]");if(!e||e.hasAttribute("disabled"))return;this.atcBtn.classList.add("is-loading"),this.atcBtn.setAttribute("disabled",!0),this.form.requestSubmit?this.form.requestSubmit(e):e.click()}}initOptions(){this.options?.querySelectorAll("[data-popout-input]").forEach((t=>t.addEventListener("change",this.boundOptionChange)))}handleOptionChange(t){const e=t.target.getAttribute("data-option-value-id");if(!e)return;const i=this.section.querySelector(`variant-selects [data-option-value-id="${CSS.escape(e)}"]`);if(!i)return;const s=new MouseEvent("click",{bubbles:!0,cancelable:!0});if(s.fromCartBar=!0,"A"===i.tagName||i.matches("input")){if(i.dispatchEvent(s),i.matches("input")){const t=new Event("change",{bubbles:!0});t.fromCartBar=!0,i.dispatchEvent(t)}}else i.closest('label, a, [role="button"], .select-popout__option')?.dispatchEvent(s)}subVariant(){window.subscribe&&window.theme?.PUB_SUB_EVENTS?.variantChange&&(this.unsub=window.subscribe(window.theme.PUB_SUB_EVENTS.variantChange,(({data:t})=>{const e=t?.sectionId;!e||e!==this.section.dataset.section&&e!==this.section.dataset.originalSection||(this.updateImage(t.variant),this.updateOptions(t.variant),this.updateBtn(t.variant),this.updatePrice(t.variant))})))}updateImage(t){const e=this.image?.querySelector("img"),i=t?.featured_media?.preview_image?.src;e&&i&&(e.src=`${i}${i.includes("?")?"&":"?"}width=160`)}updateOptions(t){this.options&&t?.options&&this.options.querySelectorAll("popout-select").forEach((e=>{const i=e.querySelector("[data-popout-input]"),s=parseInt(i?.dataset.index?.replace("option","")||"",10);if(!i||isNaN(s))return;const r=t.options[s-1],a=e.querySelector("[data-popout-text]");e.querySelectorAll("[data-popout-option]").forEach((t=>{const s=t.dataset.value,o=s===r,n=t.closest("li");o&&n&&(a&&(a.textContent=s),i.value=s,n.dataset.optionValueId&&i.setAttribute("data-option-value-id",n.dataset.optionValueId),n.dataset.productUrl&&i.setAttribute("data-product-url",n.dataset.productUrl),e.querySelector(".select-popout__item--current")?.classList.remove("select-popout__item--current"),n.classList.add("select-popout__item--current"),e.querySelector('[aria-current="true"]')?.removeAttribute("aria-current"),t.setAttribute("aria-current","true"));const c=n?.dataset.optionValueId;if(c){const e=this.section.querySelector(`variant-selects [data-option-value-id="${CSS.escape(c)}"]`);if(e){const i=e.closest(".sold-out, .unavailable")||e.classList.contains("unavailable")||e.disabled;t.classList.toggle("unavailable",i)}}}))}))}updateBtn(t){const e=this.atcBtn,i=this.querySelector("[data-add-to-cart-text]");if(!e||!i||!t)return;const s=t.available;i.textContent=window.theme?.strings?.[s?"addToCart":"soldOut"]||(s?"Add to cart":"Sold out"),e.toggleAttribute("disabled",!s)}updatePrice(t){const e=this.querySelector("[data-product-price]");if(!e||!t)return;const i=t=>window.theme.formatMoney(t,window.theme?.settings?.currency_code_enable?window.theme.moneyWithCurrencyFormat:window.theme.moneyFormat);e.innerHTML=0===t.price?window.theme?.strings?.free||"Free":i(t.price);const s=t.compare_at_price>t.price;e.classList.toggle("product__price--sale",s);const r=this.querySelector(".product__price--strike");r&&(r.textContent=s?i(t.compare_at_price):"",r.classList.toggle("hidden",!s))}initQty(){if(!this.qty)return;const t=this.qty.querySelector("[data-quantity-field]"),e=Array.from(this.section.querySelectorAll("[data-quantity-holder]")).find((t=>!this.contains(t)))?.querySelector("[data-quantity-field]");if(!t||!e)return;t.value=e.value,this.qtySync=!1;const i=(t,e)=>{this.qtySync||(this.qtySync=!0,e.value=t.value,e.dispatchEvent(new Event("change",{bubbles:!0})),this.qtySync=!1)};this.syncMain=()=>i(e,t),this.syncBar=()=>i(t,e),[e,t].forEach((t=>["input","change"].forEach((i=>t.addEventListener(i,t===e?this.syncMain:this.syncBar))))),this.mainQtyRef=e,this.barQtyRef=t}initObserver(){"IntersectionObserver"in window&&this.formWrapper?(this.obs=new IntersectionObserver((t=>{t.forEach((t=>this.classList.toggle("is-visible",!t.isIntersecting&&t.boundingClientRect.top<0)))}),{rootMargin:"0px",threshold:0}),this.obs.observe(this.formWrapper)):document.addEventListener("theme:scroll",this.boundScroll)}toggleScroll(){this.formWrapper&&this.classList.toggle("is-visible",window.scrollY>this.formWrapper.offsetTop+this.formWrapper.offsetHeight)}disconnectedCallback(){["theme:cart:refresh","theme:cart-bar:reset-atc-animation"].forEach((t=>document.removeEventListener(t,this.boundResetATC))),this.obs?this.obs.disconnect():document.removeEventListener("theme:scroll",this.boundScroll),this.unsub?.(),this.removeEventListener("click",this.boundHandleClick),this.options?.querySelectorAll("[data-popout-input]").forEach((t=>t.removeEventListener("change",this.boundOptionChange))),this.mainQtyRef&&["input","change"].forEach((t=>this.mainQtyRef.removeEventListener(t,this.syncMain))),this.barQtyRef&&["input","change"].forEach((t=>this.barQtyRef.removeEventListener(t,this.syncBar)))}}customElements.get("cart-bar")||customElements.define("cart-bar",t)}();

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.