PageSourceSearch

https://drinkhappyviking.com/cdn/shop/t/222/assets/nss-cart-template.js?v=22320977431511140941786644262

js drinkhappyviking.com collected 2026-09-28 10:06:45 UTC 19,766 bytes, 2 lines download raw bytes

1(function(modules,entry,mainEntry,parcelRequireName,globalName){var globalObject=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{},previousRequire=typeof globalObject[parcelRequireName]=="function"&&globalObject[parcelRequireName],cache=previousRequire.cache||{},nodeRequire=typeof module<"u"&&typeof module.require=="function"&&module.require.bind(module);function newRequire(name,jumped){if(!cache[name]){if(!modules[name]){var currentRequire=typeof globalObject[parcelRequireName]=="function"&&globalObject[parcelRequireName];if(!jumped&&currentRequire)return currentRequire(name,!0);if(previousRequire)return previousRequire(name,!0);if(nodeRequire&&typeof name=="string")return nodeRequire(name);var err=new Error("Cannot find module '"+name+"'");throw err.code="MODULE_NOT_FOUND",err}localRequire.resolve=resolve,localRequire.cache={};var module2=cache[name]=new newRequire.Module(name);modules[name][0].call(module2.exports,localRequire,module2,module2.exports,this)}return cache[name].exports;function localRequire(x){var res=localRequire.resolve(x);return res===!1?{}:newRequire(res)}function resolve(x){var id=modules[name][1][x];return id??x}}function Module(moduleName){this.id=moduleName,this.bundle=newRequire,this.exports={}}newRequire.isParcelRequire=!0,newRequire.Module=Module,newRequire.modules=modules,newRequire.cache=cache,newRequire.parent=previousRequire,newRequire.register=function(id,exports2){modules[id]=[function(require,module2){module2.exports=exports2},{}]},Object.defineProperty(newRequire,"root",{get:function(){return globalObject[parcelRequireName]}}),globalObject[parcelRequireName]=newRequire;for(var i=0;i<entry.length;i++)newRequire(entry[i]);if(mainEntry){var mainExports=newRequire(mainEntry);typeof exports=="object"&&typeof module<"u"?module.exports=mainExports:typeof define=="function"&&define.amd?define(function(){return mainExports}):globalName&&(this[globalName]=mainExports)}})({h6AG3:[function(require,module2,exports2){class NSSCartTemplate extends HTMLElement{constructor(){super(),this.debug=!1,this.initialized=!1,this.currencyFormatter=new Intl.NumberFormat("en-US",{style:"currency",currency:"USD"})}connectedCallback(){this.initialized||(this.initialized=!0,this.initCartTemplate())}disconnectedCallback(){this.documentSubmitHandler&&document.removeEventListener("submit",this.documentSubmitHandler),this.documentClickHandler&&document.removeEventListener("click",this.documentClickHandler),this.initialized=!1}async apiAddToCart(e){const formData=new FormData(e.target);try{const response=await fetch(window.Shopify.routes.root+"cart/add.js",{method:"POST",body:formData}),responseText=await response.text();let data={};if(responseText)try{data=JSON.parse(responseText)}catch{data={}}return response.ok?responseText?data:{status:response.status,message:"Request failed",description:"Empty response from cart API."}:{status:response.status,message:data.message||"Request failed",description:data.description||data.error||"Unable to add item to cart."}}catch(error){return console.error("Error:",error),{status:"network_error",message:"Request failed",description:error?.message||"Network error while adding item to cart."}}}async apiUpdate(updates){try{const response=await fetch(window.Shopify.routes.root+"cart/update.js",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({updates})}),responseText=await response.text();let data={};if(responseText)try{data=JSON.parse(responseText)}catch{data={}}return!response.ok||!responseText?{status:response.status,message:data.message||"Request failed",description:data.description||data.error||"Unable to update cart."}:data}catch(error){return console.error("Error:",error),{status:"network_error",message:"Request failed",description:error?.message||"Network error while updating cart."}}}async apiChange(changes){try{const response=await fetch(window.Shopify.routes.root+"cart/change.js",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(changes)}),responseText=await response.text();let data={};if(responseText)try{data=JSON.parse(responseText)}catch{data={}}return!response.ok||!responseText?{status:response.status,message:data.message||"Request failed",description:data.description||data.error||"Unable to change cart item."}:data}catch(error){return console.error("Error:",error),{status:"network_error",message:"Request failed",description:error?.message||"Network error while changing cart item."}}}async fetchCartSection(){const parser=new DOMParser,sectionID=this.getAttribute("nss-parent-section-id");let markup=await(await fetch(`?section_id=${sectionID}`)).text();return parser.parseFromString(markup,"text/html")}getStatusRegion(){return this.querySelector("[nss-cart-status]")}announceStatus(message){const statusEl=this.getStatusRegion();!statusEl||!message||(statusEl.textContent="",requestAnimationFrame(()=>{statusEl.textContent=message}))}formatMoney(cents){return this.currencyFormatter.format((cents||0)/100)}getItemTitle(cartItemEl){return cartItemEl?.getAttribute("data-product-title")||"item"}restoreItemControlFocus(lineKey,selectors=[]){if(!lineKey)return!1;const itemEl=this.querySelector(`[nss-cart-item-reload="${lineKey}"]`);if(!itemEl)return!1;for(const selector of selectors){const targetEl=itemEl.querySelector(selector);if(targetEl&&typeof targetEl.focus=="function"&&!targetEl.disabled)return targetEl.focus({preventScroll:!0}),!0}return!1}restoreItemControlFocusByGroupIndex(index,selectors=[]){const itemGroups=[...this.querySelectorAll(".nss-cart__item-group")];if(itemGroups.length===0)return!1;const targetGroup=itemGroups[Math.min(index,itemGroups.length-1)];if(!targetGroup)return!1;for(const selector of selectors){const targetEl=targetGroup.querySelector(selector);if(targetEl&&typeof targetEl.focus=="function"&&!targetEl.disabled)return targetEl.focus({preventScroll:!0}),!0}return!1}focusCartFallbackControl(){const fallbackEl=this.querySelector('[nss-cart-event="qty-increment"], [nss-cart-event="qty-decrement"], [nss-cart-event="remove"], .nss-cart__header [nss-open-cart-drawer], .nss-cart__summary a, .nss-cart__summary button');return fallbackEl&&typeof fallbackEl.focus=="function"?(fallbackEl.focus({preventScroll:!0}),!0):!1}updateItemCount(sectionEl){const newProductListEl=sectionEl.querySelector(".nss-cart__items");document.querySelectorAll("[nss-cart-count]").forEach(itemCountEl=>{itemCountEl.innerHTML=newProductListEl.getAttribute("nss-cart-item-count")}
1),this.updateCountBadges(newProductListEl.getAttribute("nss-cart-item-count"))}updateCountBadges(result){const count=parseInt(result);count<100&&document.querySelectorAll("[nss-cart-badge-count]").forEach(countEl=>{countEl.innerHTML=count,count>0?(countEl.classList.remove("hidden"),countEl.style.display=""):(countEl.classList.add("hidden"),countEl.style.display="none")})}reloadElements(sectionEl){this.querySelectorAll("[nss-cart-reload]").forEach(reloadEl=>{const reloadID=reloadEl.getAttribute("nss-cart-reload"),updatedEl=sectionEl.querySelector(`[nss-cart-reload="${reloadID}"]`);updatedEl?reloadEl.replaceWith(updatedEl):reloadEl.remove()})}reloadItemList(sectionEl){const productListEl=this.querySelector(".nss-cart__items"),newProductListEl=sectionEl.querySelector(".nss-cart__items");productListEl.replaceWith(newProductListEl)}reloadItem(sectionEl,line){const reloadEl=this.querySelector(`[nss-cart-item-reload="${line}"]`);if(reloadEl){const updatedEl=sectionEl.querySelector(`[nss-cart-item-reload="${line}"]`);updatedEl?reloadEl.replaceWith(updatedEl):this.reloadItemList(sectionEl)}}async handleATC(e){const result=await this.apiAddToCart(e);if(typeof result?.status<"u"){this.announceStatus(`${result.message}: ${result.description}`);return}const addedQuantity=result?.quantity||1,addedTitle=result?.product_title||result?.title||"item";window.NSS_CART_OPEN_ANNOUNCEMENT=`Added ${addedQuantity} ${addedTitle} to your cart.`;const sectionEl=await this.fetchCartSection();this.updateItemCount(sectionEl),this.reloadItemList(sectionEl),this.reloadElements(sectionEl),typeof window.NSS_OPEN_CART_DRAWER=="function"&&window.NSS_OPEN_CART_DRAWER()}async handleRemove(e){const cartItemEl=e.target.closest(".nss-cart__item"),cartItemGroupEl=cartItemEl.closest(".nss-cart__item-group"),nextItemKey=cartItemGroupEl?.nextElementSibling?.querySelector(".nss-cart__item")?.getAttribute("nss-cart-item-reload")||cartItemGroupEl?.previousElementSibling?.querySelector(".nss-cart__item")?.getAttribute("nss-cart-item-reload"),itemKey=cartItemEl.getAttribute("nss-cart-item-key"),ogChildKeys=cartItemEl.getAttribute("nss-cart-item-og-child-keys")?.split(",").filter(Boolean)||[],itemTitle=this.getItemTitle(cartItemEl),removedProduct={product_id:cartItemEl.getAttribute("data-product-id"),variant_id:cartItemEl.getAttribute("data-variant-id"),variant_title:itemTitle,variant_sku:cartItemEl.getAttribute("data-variant-sku"),price:cartItemEl.getAttribute("data-price"),quantity:Number(cartItemEl.getAttribute("data-quantity"))||void 0};let updates={};updates[itemKey]=0,ogChildKeys.forEach(key=>{updates[key]=0});const result=await this.apiUpdate(updates);if(typeof result.status<"u"){const cartItemParentEl=cartItemEl.parentElement,cartErrorEl=cartItemParentEl.querySelector(".nss-cart__item-error");cartErrorEl.textContent=`${result.message}: ${result.description}`,cartItemEl.setAttribute("nss-cart-item-loading",!1),this.debug&&console.log("[NSS] Remove failed!")}else{const sectionEl=await this.fetchCartSection();this.updateItemCount(sectionEl),this.reloadItemList(sectionEl),this.reloadElements(sectionEl);const cartSummary=`Cart subtotal ${this.formatMoney(result.total_price)}.`;this.announceStatus(`${itemTitle} removed from cart. ${cartSummary}`),Shopify.analytics.publish("custom_product_removed_from_cart",{product:removedProduct}),this.restoreItemControlFocus(nextItemKey,['[nss-cart-event="qty-increment"]','[name="updates[]"]','[nss-cart-event="remove"]'])||this.focusCartFallbackControl()}}async handleQtyIncrement(e){const cartItemEl=e.target.closest(".nss-cart__item"),itemKey=cartItemEl.getAttribute("nss-cart-item-key"),qtyInputEl=cartItemEl.querySelector('[name="updates[]"]'),itemReloadKey=cartItemEl.getAttribute("nss-cart-item-reload"),itemTitle=this.getItemTitle(cartItemEl),itemGroupIndex=[...this.querySelectorAll(".nss-cart__item-group")].indexOf(cartItemEl.closest(".nss-cart__item-group"));let qtyMax=parseInt(qtyInputEl.getAttribute("max")),qtyCurrent=parseInt(qtyInputEl.value),qtyFinal=Math.min(qtyCurrent+1,qtyMax),updates={};updates[itemKey]=qtyFinal;const result=await this.apiUpdate(updates);if(typeof result.status<"u"){const cartItemParentEl=cartItemEl.parentElement,cartErrorEl=cartItemParentEl.querySelector(".nss-cart__item-error");cartErrorEl.textContent=`${result.message}: ${result.description}`,cartItemEl.setAttribute("nss-cart-item-loading",!1)}else{const sectionEl=await this.fetchCartSection();this.updateItemCount(sectionEl),this.reloadItem(sectionEl,itemReloadKey),this.reloadElements(sectionEl);const cartSummary=`Cart subtotal ${this.formatMoney(result.total_price)}.`;this.announceStatus(`${itemTitle} quantity updated to ${qtyFinal}. ${cartSummary}`),this.restoreItemControlFocus(itemReloadKey,['[nss-cart-event="qty-increment"]','[name="updates[]"]'])||this.restoreItemControlFocusByGroupIndex(itemGroupIndex,['[nss-cart-event="qty-increment"]','[name="updates[]"]'])}}
1async handleQtyDecrement(e){const cartItemEl=e.target.closest(".nss-cart__item"),itemKey=cartItemEl.getAttribute("nss-cart-item-key"),qtyInputEl=cartItemEl.querySelector('[name="updates[]"]'),itemReloadKey=cartItemEl.getAttribute("nss-cart-item-reload"),itemTitle=this.getItemTitle(cartItemEl),itemGroupIndex=[...this.querySelectorAll(".nss-cart__item-group")].indexOf(cartItemEl.closest(".nss-cart__item-group"));let qtyMin=parseInt(qtyInputEl.getAttribute("min")),qtyCurrent=parseInt(qtyInputEl.value),qtyFinal=Math.max(qtyCurrent-1,qtyMin);if(qtyFinal<=0){this.handleRemove(e);return}let updates={};updates[itemKey]=qtyFinal;const result=await this.apiUpdate(updates);if(this.debug&&console.log("[NSS] handleQtyDecrement result:",result),typeof result.status<"u"){const cartItemParentEl=cartItemEl.parentElement,cartErrorEl=cartItemParentEl.querySelector(".nss-cart__item-error");cartErrorEl.textContent=`${result.message}: ${result.description}`,cartItemEl.setAttribute("nss-cart-item-loading",!1),this.debug&&console.log("[NSS] Quantity decrement failed!")}else{const sectionEl=await this.fetchCartSection();this.updateItemCount(sectionEl),this.reloadItem(sectionEl,itemReloadKey),this.reloadElements(sectionEl);const cartSummary=`Cart subtotal ${this.formatMoney(result.total_price)}.`;this.announceStatus(`${itemTitle} quantity updated to ${qtyFinal}. ${cartSummary}`),this.restoreItemControlFocus(itemReloadKey,['[nss-cart-event="qty-decrement"]','[name="updates[]"]'])||this.restoreItemControlFocusByGroupIndex(itemGroupIndex,['[nss-cart-event="qty-decrement"]','[name="updates[]"]'])}}async handleSetQuantity(e){const cartItemEl=e.target.closest(".nss-cart__item"),itemKey=cartItemEl.getAttribute("nss-cart-item-key"),itemReloadKey=cartItemEl.getAttribute("nss-cart-item-reload"),itemTitle=this.getItemTitle(cartItemEl),itemGroupIndex=[...this.querySelectorAll(".nss-cart__item-group")].indexOf(cartItemEl.closest(".nss-cart__item-group")),targetQty=parseInt(e.target.closest('[nss-cart-event="set-quantity"]')?.getAttribute("data-target-quantity"));if(isNaN(targetQty)){console.error("[NSS] Invalid target quantity");return}if(targetQty<=0){this.handleRemove(e);return}let updates={};updates[itemKey]=targetQty;const result=await this.apiUpdate(updates);if(typeof result.status<"u"){const cartItemParentEl=cartItemEl.parentElement,cartErrorEl=cartItemParentEl.querySelector(".nss-cart__item-error");cartErrorEl.textContent=`${result.message}: ${result.description}`,cartItemEl.setAttribute("nss-cart-item-loading",!1)}else{const sectionEl=await this.fetchCartSection();this.updateItemCount(sectionEl),this.reloadItem(sectionEl,itemReloadKey),this.reloadElements(sectionEl);const cartSummary=`Cart subtotal ${this.formatMoney(result.total_price)}.`;this.announceStatus(`${itemTitle} quantity updated to ${targetQty}. ${cartSummary}`),this.restoreItemControlFocus(itemReloadKey,[`[nss-cart-event="set-quantity"][data-target-quantity="${targetQty}"]`,'[name="updates[]"]'])||this.restoreItemControlFocusByGroupIndex(itemGroupIndex,['[nss-cart-event="set-quantity"]','[name="updates[]"]'])}}async handleSubscriptionChange(e){const cartItemEl=e.target.closest(".nss-cart__item"),itemKey=cartItemEl.getAttribute("nss-cart-item-key"),qtyInputEl=cartItemEl.querySelector('[name="updates[]"]'),quantity=parseInt(qtyInputEl.value);let sellingPlanId="";e.target.nodeName=="BUTTON"?sellingPlanId=e.target.getAttribute("data-selling-plan-id"):e.target.nodeName=="SELECT"?sellingPlanId=e.target.value=="onetime"?"":e.target.value:e.target.nodeName=="INPUT"&&(sellingPlanId=e.target.checked?e.target.getAttribute("data-selling-plan-id"):"");let changes={id:itemKey,quantity,selling_plan:sellingPlanId};const result=await this.apiChange(changes);if(this.debug&&console.log(`[NSS] handleSubscriptionChange result: ${result}`),typeof result.status<"u"){const cartItemParentEl=cartItemEl.parentElement,cartErrorEl=cartItemParentEl.querySelector(".nss-cart__item-error");cartErrorEl.textContent=`${result.message}: ${result.description}`,cartItemEl.setAttribute("nss-cart-item-loading",!1),this.debug&&console.log("[NSS] Handle subscribe failed!")}else{const sectionEl=await this.fetchCartSection();this.reloadItem(sectionEl,cartItemEl.getAttribute("nss-cart-item-reload")),this.reloadElements(sectionEl)}}
1async handleBundleSubscriptionChange(e){const cartItemEl=e.target.closest(".nss-cart__item"),selectEl=e.target.closest('select[nss-cart-event="change-bundle-selling-plan"]');if(!cartItemEl||!selectEl)return;const selectedOptionEl=selectEl.options[selectEl.selectedIndex],childPlanMapRaw=selectedOptionEl?.getAttribute("data-og-child-plan-map")||"",childPlanPairs=childPlanMapRaw.split("||").map(pair=>pair.trim()).filter(Boolean),itemTitle=this.getItemTitle(cartItemEl);if(childPlanPairs.length===0){this.announceStatus("Unable to update bundle frequency right now."),cartItemEl.setAttribute("nss-cart-item-loading",!1);return}let firstError=null;for(const pair of childPlanPairs){const[childKey,childPlanId,childQuantityRaw]=pair.split("::"),childQuantity=parseInt(childQuantityRaw,10);if(!childKey||!childPlanId)continue;const result=await this.apiChange({id:childKey,quantity:Number.isNaN(childQuantity)?1:childQuantity,selling_plan:childPlanId});if(typeof result?.status<"u"){firstError=result;break}}if(firstError){const cartItemParentEl=cartItemEl.parentElement,cartErrorEl=cartItemParentEl.querySelector(".nss-cart__item-error");cartErrorEl&&(cartErrorEl.textContent=`${firstError.message}: ${firstError.description}`),cartItemEl.setAttribute("nss-cart-item-loading",!1);return}const sectionEl=await this.fetchCartSection();this.updateItemCount(sectionEl),this.reloadItemList(sectionEl),this.reloadElements(sectionEl);const selectedLabel=selectedOptionEl?.textContent?.trim();selectedLabel&&this.announceStatus(`${itemTitle} frequency updated to ${selectedLabel}.`)}startItemLoading(e){e.target.closest(".nss-cart__item").setAttribute("nss-cart-item-loading",!0)}async refreshCart(){const sectionEl=await this.fetchCartSection();this.updateItemCount(sectionEl),this.reloadItemList(sectionEl),this.reloadElements(sectionEl),typeof window.NSS_OPEN_CART_DRAWER=="function"&&window.NSS_OPEN_CART_DRAWER()}initCartTemplate(){const mainEl=document.querySelector("[nss-main]");window.NSS_REFRESH_AND_OPEN_CART=()=>{this.refreshCart()},this.documentSubmitHandler=e=>{(e.target.classList.contains("shopify-product-form")||e.target.getAttribute("action")==="/cart/add")&&(e.preventDefault(),this.debug&&console.log("[NSS] ATC form intercepted!"),this.handleATC(e))},document.addEventListener("submit",this.documentSubmitHandler),this.documentClickHandler=e=>{const clickedAddButton=e.target.closest('[name="add"]');let clickedName=clickedAddButton?.getAttribute("name");if(this.debug&&console.log("[NSS] clickedName:",clickedName),clickedName==="add"){e.preventDefault(),this.debug&&console.log("[NSS] ATC button click intercepted!");const fakeEvent={target:clickedAddButton.closest("form")};this.handleATC(fakeEvent)}},document.addEventListener("click",this.documentClickHandler),this.addEventListener("click",e=>{let eventType=e.target.closest("[nss-cart-event]")?.getAttribute("nss-cart-event");if(eventType)switch(eventType){case"remove":e.preventDefault(),this.startItemLoading(e),this.handleRemove(e);break;case"qty-increment":e.preventDefault(),this.startItemLoading(e),this.handleQtyIncrement(e);break;case"qty-decrement":e.preventDefault(),this.startItemLoading(e),this.handleQtyDecrement(e);break;case"set-quantity":e.preventDefault(),this.startItemLoading(e),this.handleSetQuantity(e);break}}),this.addEventListener("change",e=>{let eventType=e.target.closest("[nss-cart-event]")?.getAttribute("nss-cart-event");if(eventType)switch(eventType){case"change-selling-plan":e.preventDefault(),this.startItemLoading(e),this.handleSubscriptionChange(e);break;case"change-bundle-selling-plan":e.preventDefault(),this.startItemLoading(e),this.handleBundleSubscriptionChange(e);break;case"switch-to-subscription":e.preventDefault(),this.startItemLoading(e),this.handleSubscriptionChange(e);break}})}}customElements.define("nss-cart-template",NSSCartTemplate)},{}]},["h6AG3"],"h6AG3","parcelRequire83e8");
2//# sourceMappingURL=/cdn/shop/t/222/assets/nss-cart-template.js.map?v=22320977431511140941786644262

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.