1!function(){class e extends HTMLElement{connectedCallback(){this.debug&&console.log("[NSS][Cart Template] Connected."),this.initCartTemplate()}async apiAddToCart(e){let t=new FormData(e.target);return fetch(window.Shopify.routes.root+"cart/add.js",{method:"POST",body:t}).then(e=>e.json()).catch(e=>{console.error("Error:",e)})}async apiUpdate(e){return fetch(window.Shopify.routes.root+"cart/update.js",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({updates:e})}).then(e=>e.json()).catch(e=>{console.error("Error:",e)})}async apiChange(e){return fetch(window.Shopify.routes.root+"cart/change.js",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}).then(e=>e.json()).catch(e=>{console.error("Error:",e)})}async fetchCartSection(){let e=new DOMParser,t=this.getAttribute("nss-parent-section-id"),a=await (await fetch(`?section_id=${t}`)).text();return e.parseFromString(a,"text/html")}updateItemCount(e){let t=e.querySelector(".nss-cart__items");document.querySelectorAll("[nss-cart-count]").forEach(e=>{e.innerHTML=t.getAttribute("nss-cart-item-count")}),this.updateCountBadges(t.getAttribute("nss-cart-item-count"))}updateCountBadges(e){let t=parseInt(e);this.debug&&console.log("[NSS][Cart Template] Updating badges, count:",t),t<100&&document.querySelectorAll("[nss-cart-badge-count]").forEach(e=>{e.innerHTML=t})}reloadElements(e){this.querySelectorAll("[nss-cart-reload]").forEach(t=>{let a=t.getAttribute("nss-cart-reload"),n=e.querySelector(`[nss-cart-reload="${a}"]`);n?t.replaceWith(n):t.remove()})}reloadItemList(e){let t=this.querySelector(".nss-cart__items"),a=e.querySelector(".nss-cart__items");t.replaceWith(a)}async handleATC(e){let t=await this.apiAddToCart(e);this.debug&&console.log("[NSS][Cart Template] handleATC result:",t);let a=await this.fetchCartSection();this.updateItemCount(a),this.reloadItemList(a),this.reloadElements(a),this.updateBlocks(),this.refreshRecommendations(),"function"==typeof window.NSS_OPEN_CART_DRAWER&&window.NSS_OPEN_CART_DRAWER()}updateBlocks(){this.els.buyboxSummaries.forEach(e=>{let t=new CustomEvent("buyboxReload",{});e.dispatchEvent(t)}),this.els.buyboxStickyATCs.forEach(e=>{let t=new CustomEvent("buyboxReload",{});e.dispatchEvent(t)})}async handleRemove(e){var t;let a=e.target.closest("[nss-cart-item-key]"),n=a.getAttribute("nss-cart-item-key"),s=(null==(t=a.getAttribute("nss-cart-item-bundle-keys"))?void 0:t.split(","))||[],r={};s.length>0?s.map(e=>{r[e]=0}):r[n]=0;let o=await this.apiUpdate(r);if(this.debug&&console.log("[NSS][Cart Template] handleRemove result:",o),void 0!==o.status)a.parentElement.querySelector(".nss-cart__item-error").textContent=`Error: ${o.message}`,a.setAttribute("nss-cart-item-loading",!1),this.debug&&console.log("[NSS][Cart Template] Remove failed!");else{let e=await this.fetchCartSection();this.updateItemCount(e),this.reloadItemList(e),this.reloadElements(e),this.updateBlocks(),this.debug&&console.log("[NSS][Cart Template] Remove completed!")}}async handleQtyIncrement(e){let t=e.target.closest(".nss-cart__item"),a=t.getAttribute("nss-cart-item-key"),n=t.querySelector('[name="updates[]"]'),s=parseInt(n.getAttribute("max")),r=Math.min(parseInt(n.value)+1,s),o={};o[a]=r;let i=await this.apiUpdate(o);if(this.debug&&console.log("[NSS][Cart Template] handleQtyIncrement result:",i),void 0!==i.status)t.parentElement.querySelector(".nss-cart__item-error").textContent=`Error: ${i.message}`,t.setAttribute("nss-cart-item-loading",!1),this.debug&&console.log("[NSS][Cart Template] Quantity increment failed!");else{let e=await this.fetchCartSection();this.updateItemCount(e),this.reloadItemList(e),this.reloadElements(e),this.updateBlocks(),this.debug&&console.log("[NSS][Cart Template] Quantity increment completed!")}}async handleQtyDecrement(e){let t=e.target.closest(".nss-cart__item"),a=t.getAttribute("nss-cart-item-key"),n=t.querySelector('[name="updates[]"]'),s=parseInt(n.getAttribute("min")),r=Math.max(parseInt(n.value)-1,s),o={};if(r<=0)return void this.handleRemove(e);o[a]=r;let i=await this.apiUpdate(o);
1if(this.debug&&console.log("[NSS][Cart Template] handleQtyDecrement result:",i),void 0!==i.status)t.parentElement.querySelector(".nss-cart__item-error").textContent=`Error: ${i.message}`,t.setAttribute("nss-cart-item-loading",!1),this.debug&&console.log("[NSS][Cart Template] Quantity decrement failed!");else{let e=await this.fetchCartSection();this.updateItemCount(e),this.reloadItemList(e),this.reloadElements(e),this.updateBlocks(),this.debug&&console.log("[NSS][Cart Template] Quantity decrement completed!")}}async handleFrequencyUpgrade(e){let t=e.target.closest(".nss-cart__item"),a=t.getAttribute("nss-cart-item-key"),n=t.querySelector('[name="updates[]"]'),s=e.target.getAttribute("nss-selling-plan-id"),r=parseInt(n.value),o={};o.id=a,o.quantity=r,o.selling_plan=s;let i=await this.apiChange(o);if(this.debug&&console.log("[NSS][Cart Template] handleFrequencyUpgrade result:",i),void 0!==i.status)t.parentElement.querySelector(".nss-cart__item-error").textContent=`Error: ${i.message}`,t.setAttribute("nss-cart-item-loading",!1),this.debug&&console.log("[NSS][Cart Template] Upgrade frequency failed!");else{let e=await this.fetchCartSection();this.reloadItemList(e),this.reloadElements(e),this.debug&&console.log("[NSS][Cart Template] Upgrade frequency completed!")}}async handleFrequencyChange(e){let t=e.target.closest(".nss-cart__item"),a=t.getAttribute("nss-cart-item-key"),n=t.querySelector('[name="updates[]"]'),s=e.target.value,r=parseInt(n.value),o={};o.id=a,o.quantity=r,o.selling_plan=s;let i=await this.apiChange(o);if(this.debug&&console.log("[NSS][Cart Template] handleFrequencyChange result:",i),void 0!==i.status)t.parentElement.querySelector(".nss-cart__item-error").textContent=`Error: ${i.message}`,t.setAttribute("nss-cart-item-loading",!1),this.debug&&console.log("[NSS][Cart Template] Change frequency failed!");else{let e=await this.fetchCartSection();this.reloadItemList(e),this.reloadElements(e),this.debug&&console.log("[NSS][Cart Template] Change frequency completed!")}}startItemLoading(e){let t=e.target.closest(".nss-cart__item");t&&t.setAttribute("nss-cart-item-loading",!0)}async refreshCart(){let e=await this.fetchCartSection();this.updateItemCount(e),this.reloadItemList(e),this.reloadElements(e),this.refreshRecommendations(),"function"==typeof window.NSS_OPEN_CART_DRAWER&&window.NSS_OPEN_CART_DRAWER()}initCartTemplate(){document.querySelector("[nss-main]"),window.NSS_REFRESH_AND_OPEN_CART=()=>{this.refreshCart()},document.addEventListener("submit",e=>{(e.target.classList.contains("shopify-product-form")||"/cart/add"===e.target.getAttribute("action"))&&(e.preventDefault(),this.debug&&console.log("[NSS][Cart Template] ATC form intercepted!"),this.handleATC(e))}),document.addEventListener("click",e=>{let t=e.target.getAttribute("name");if(this.debug&&console.log("[NSS][Cart Template] clickedName:",t),"add"===t){e.preventDefault(),this.debug&&console.log("[NSS][Cart Template] ATC button click intercepted!");let t={target:e.target.closest("form")};this.handleATC(t)}}),this.addEventListener("click",e=>{switch(e.target.getAttribute("nss-cart-event")){case"remove":e.preventDefault(),this.debug&&console.log("[NSS][Cart Template] Remove event!"),this.startItemLoading(e),this.handleRemove(e);break;case"qty-increment":e.preventDefault(),this.debug&&console.log("[NSS][Cart Template] Quantity increment event!"),this.startItemLoading(e),this.handleQtyIncrement(e);break;case"qty-decrement":e.preventDefault(),this.debug&&console.log("[NSS][Cart Template] Quantity decrement event!"),this.startItemLoading(e),this.handleQtyDecrement(e);break;case"frequency-upgrade":e.preventDefault(),this.debug&&console.log("[NSS][Cart Template] Frequency upgrade event!"),this.startItemLoading(e),this.handleFrequencyUpgrade(e)}}),this.addEventListener("change",e=>{"frequency-change"===e.target.getAttribute("nss-cart-event")&&(e.preventDefault(),this.debug&&console.log("[NSS][Cart Template] Frequency change event!"),this.startItemLoading(e),this.handleFrequencyChange(e))}),this.prepareRecommendations()}refreshRecommendations(){document.querySelectorAll("[nss-recommendations-id]").forEach(e
1=>{let t=e.dataset.url,a=e.getAttribute("nss-recommendations-id");e.setAttribute("nss-recommendations-loading",!0),fetch(t).then(t=>(e.setAttribute("nss-recommendations-loading",!1),t.text())).then(t=>{let n=document.createElement("div");n.innerHTML=t;let s=n.querySelector(`[nss-recommendations-id="${a}"]`);s&&s.innerHTML.trim().length&&(e.innerHTML=s.innerHTML,e.style.display="flex")}).catch(t=>{e.style.display="none",console.error(t)})})}prepareRecommendations(){document.querySelectorAll("[nss-recommendations-id]").forEach(e=>{new IntersectionObserver((t,a)=>{if(!t[0].isIntersecting)return;a.unobserve(e);let n=e.dataset.url,s=e.getAttribute("nss-recommendations-id");e.setAttribute("nss-recommendations-loading",!0),this.debug&&console.log("[NSS][Cart Template] Recommendations url:",n),this.debug&&console.log("[NSS][Cart Template] Recommendations id:",s),fetch(n).then(t=>(e.setAttribute("nss-recommendations-loading",!1),t.text())).then(t=>{let a=document.createElement("div");a.innerHTML=t;let n=a.querySelector(`[nss-recommendations-id="${s}"]`);n&&n.innerHTML.trim().length?(e.innerHTML=n.innerHTML,e.style.display="flex"):e.style.display="none"}).catch(t=>{e.style.display="none",console.error(t)})},{rootMargin:"0px 0px 200px 0px"}).observe(e)})}constructor(){super(),this.debug=!1,this.els={buyboxSummaries:document.querySelectorAll("nss-buybox-summary-variant"),buyboxStickyATCs:document.querySelectorAll("nss-buybox-sticky-atc-variant")}}}let t="nss-cart-template";void 0===customElements.get(t)?customElements.define(t,e):console.warn(`[NSS] Element '${t}' already defined.`)}();
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.