PageSourceSearch

https://urbanroad.com/cdn/shop/t/184/assets/cart.js?v=41100822403927358831787809863

js urbanroad.com collected 2026-10-03 21:21:44 UTC 26,210 bytes, 2 lines download raw bytes

1class CartRemoveButton extends HTMLElement{constructor(){super(),this.addEventListener("click",event=>{event.preventDefault(),(this.closest("cart-items")||this.closest("cart-drawer-items")).updateQuantity(this.dataset.index,0)})}}customElements.define("cart-remove-button",CartRemoveButton);class CartItems extends HTMLElement{constructor(){super(),this.lineItemStatusElement=document.getElementById("shopping-cart-line-item-status")||document.getElementById("CartDrawer-LineItemStatus");const debouncedOnChange=debounce(event=>{this.onChange(event)},ON_CHANGE_DEBOUNCE_TIMER);this.addEventListener("change",debouncedOnChange.bind(this)),this.debouncedNoteChange=debounce(event=>{this.handleNoteChange(event)},ON_CHANGE_DEBOUNCE_TIMER)}cartUpdateUnsubscriber=void 0;connectedCallback(){this.cartUpdateUnsubscriber=subscribe(PUB_SUB_EVENTS.cartUpdate,event=>{event.source!=="cart-items"&&this.onCartUpdate()});const cartNoteElement=this.querySelector("#CartNote");cartNoteElement&&cartNoteElement.addEventListener("input",this.debouncedNoteChange.bind(this)),this.initializeAbove600Component()}disconnectedCallback(){this.cartUpdateUnsubscriber&&this.cartUpdateUnsubscriber()}
1getCurrentCartScope(){if(this.isConnected)return this;const selector=this.tagName==="CART-DRAWER-ITEMS"?"cart-drawer-items":"cart-items";return document.querySelector(selector)||this}onChange(event){event.target.id!=="CartNote"&&this.updateQuantity(event.target.dataset.index,event.target.value,document.activeElement.getAttribute("name"),event.target.dataset.quantityVariantId)}onCartUpdate(){this.tagName==="CART-DRAWER-ITEMS"?fetch(`${routes.cart_url}?section_id=cart-drawer`).then(response=>response.text()).then(responseText=>{const html=new DOMParser().parseFromString(responseText,"text/html"),selectors=[".drawer__header","cart-drawer-items",".cart-drawer__footer"];for(const selector of selectors){const targetElement=document.querySelector(selector),sourceElement=html.querySelector(selector);targetElement&&sourceElement&&targetElement.replaceWith(sourceElement)}this.initializeAbove600Component(),this.handleAbove600Update()}).catch(e=>{console.error(e)}):fetch(`${routes.cart_url}?section_id=main-cart-items`).then(response=>response.text()).then(responseText=>{const sourceQty=new DOMParser().parseFromString(responseText,"text/html").querySelector("cart-items");this.innerHTML=sourceQty.innerHTML;const cartNoteElement=this.querySelector("#CartNote");cartNoteElement&&this.currentNote&&(cartNoteElement.value=this.currentNote),this.initializeAbove600Component(),this.handleAbove600Update()}).catch(e=>{console.error(e)})}getSectionsToRender(){return[{id:"main-cart-items",section:document.getElementById("main-cart-items")?.dataset.id,selector:".js-contents"},{id:"main-cart-free-gift-banner",section:document.getElementById("main-cart-items")?.dataset.id,selector:".main-cart-free-gift-banner"},{id:"cart-icon-bubble",section:"cart-icon-bubble",selector:".shopify-section"},{id:"cart-live-region-text",section:"cart-live-region-text",selector:".shopify-section"},{id:"main-cart-footer",section:document.getElementById("main-cart-footer")?.dataset.id,selector:".js-contents"}]}updateQuantity(line,quantity,name,variantId,skipPairSync){this.enableLoading(line);const pairSyncPromise=skipPairSync?Promise.resolve(null):this.getCoverInsertPairUpdate(line,quantity),body=JSON.stringify({line,quantity:parseInt(quantity,10),sections:[...new Set(this.getSectionsToRender().map(section=>section.section).filter(Boolean))],sections_url:window.location.pathname});fetch(`${routes.cart_change_url}`,{...fetchConfig(),body}).then(response=>response.text()).then(state=>{try{const parsedState=JSON.parse(state);this.handleJSONResponse(parsedState,line,name,variantId),pairSyncPromise.then(pairedUpdate=>{pairedUpdate&&fetch(`${routes.cart_url}.js`).then(res=>res.json()).then(freshCart=>{const idx=freshCart.items.findIndex(it=>it.key===pairedUpdate.key);idx!==-1&&freshCart.items[idx].quantity!==pairedUpdate.targetQuantity&&this.updateQuantity(idx+1,pairedUpdate.targetQuantity,null,pairedUpdate.variantId,!0)}).catch(err=>console.error("Error re-resolving paired cover/insert line:",err))})}catch{this.handleHTMLResponse(state,line,name,variantId)}}).catch(error=>{console.error("Error updating cart:",error),this.querySelectorAll(".loading-overlay").forEach(overlay=>overlay.classList.add("hidden"));const errors=document.getElementById("cart-errors")||document.getElementById("CartDrawer-CartErrors");errors.textContent=window.cartStrings.error}).finally(()=>{this.disableLoading(line)})}getCoverInsertPairUpdate(changedLine,newQuantity){return fetch(`${routes.cart_url}.js`).then(res=>res.json()).then(cart=>{const changedIndex=parseInt(changedLine,10)-1,changedItem=cart.items[changedIndex];if(!changedItem)return null;const offerId=changedItem.properties&&(changedItem.properties._cover_insert_offer_id||changedItem.properties.offer_id);if(!offerId)return null;const pairedItem=cart.items.find((item,idx)=>idx===changedIndex?!1:(item.properties&&(item.properties._cover_insert_offer_id||item.properties.offer_id))===offerId);return pairedItem?{key:pairedItem.key,variantId:pairedItem.variant_id,targetQuantity:parseInt(newQuantity,10)}:null}).catch(err=>(console.error("Error reading cart for cover/insert pair sync:",err),null))}handleJSONResponse(parsedState,line,name,variantId){const quantityElement=document.getElementById(`Quantity-${line}`)||document.getElementById(`Drawer-quantity-${line}`),items=document.querySelectorAll(".cart-item");if(parsedState.errors){quantityElement.value=quantityElement.getAttribute("value"),this.updateLiveRegions(line,parsedState.errors);return}this.classList.toggle("is-empty",parsedState.item_count===0);const cartDrawerWrapper=document.querySelector("cart-drawer"),cartFooter=document.getElementById("main-cart-footer"),mainContentWrapper=document.querySelector(".main-content-wrapper");mainContentWrapper&&mainContentWrapper.classList.toggle("is-empty",parsedState.item_count===0),c
1artFooter&&cartFooter.classList.toggle("is-empty",parsedState.item_count===0),cartDrawerWrapper&&cartDrawerWrapper.classList.toggle("is-empty",parsedState.item_count===0);const cartItemCount=document.getElementById("js-cart-item-count");cartItemCount&&(cartItemCount.textContent=`${parsedState.item_count} ${parsedState.item_count===1?"item":"items"}`),this.getSectionsToRender().forEach(section=>{const elementToReplace=document.getElementById(section.id).querySelector(section.selector)||document.getElementById(section.id);elementToReplace.innerHTML=this.getSectionInnerHTML(parsedState.sections[section.section],section.selector)}),publish(PUB_SUB_EVENTS.cartUpdate,{source:"cart-items",cartData:parsedState,variantId}),this.handleAbove600Update(parsedState)}handleHTMLResponse(htmlString,line,name,variantId){const doc=new DOMParser().parseFromString(htmlString,"text/html");this.getSectionsToRender().forEach(section=>{const elementToReplace=document.getElementById(section.id),newElement=doc.getElementById(section.id);elementToReplace&&newElement&&elementToReplace.parentNode.replaceChild(newElement,elementToReplace)});const cartItemCount=doc.querySelector("[data-cart-count]");if(cartItemCount){const itemCount=parseInt(cartItemCount.textContent,10);this.classList.toggle("is-empty",itemCount===0);const cartDrawerWrapper2=document.querySelector("cart-drawer"),cartFooter=document.getElementById("main-cart-footer"),mainContentWrapper=document.querySelector(".main-content-wrapper");mainContentWrapper&&mainContentWrapper.classList.toggle("is-empty",itemCount===0),cartFooter&&cartFooter.classList.toggle("is-empty",itemCount===0),cartDrawerWrapper2&&cartDrawerWrapper2.classList.toggle("is-empty",itemCount===0)}const lineItem=document.getElementById(`CartItem-${line}`)||document.getElementById(`CartDrawer-Item-${line}`),cartDrawerWrapper=document.querySelector("cart-drawer");lineItem&&lineItem.querySelector(`[name="${name}"]`)?cartDrawerWrapper?trapFocus(cartDrawerWrapper,lineItem.querySelector(`[name="${name}"]`)):lineItem.querySelector(`[name="${name}"]`).focus():this.classList.contains("is-empty")&&cartDrawerWrapper?trapFocus(cartDrawerWrapper.querySelector(".drawer__inner-empty"),cartDrawerWrapper.querySelector("a")):document.querySelector(".cart-item")&&cartDrawerWrapper&&trapFocus(cartDrawerWrapper,document.querySelector(".cart-item__name")),customElements.upgrade(document.body),publish(PUB_SUB_EVENTS.cartUpdate,{source:"cart-items",cartData:null,variantId}),this.handleAbove600Update(null)}updateLiveRegions(line,message){const lineItemError=document.getElementById(`Line-item-error-${line}`)||document.getElementById(`CartDrawer-LineItemError-${line}`);lineItemError&&(lineItemError.querySelector(".cart-item__error-text").innerHTML=message),this.lineItemStatusElement.setAttribute("aria-hidden",!0);const cartStatus=document.getElementById("cart-live-region-text")||document.getElementById("CartDrawer-LiveRegionText");cartStatus.setAttribute("aria-hidden",!1),setTimeout(()=>{cartStatus.setAttribute("aria-hidden",!0)},1e3)}getSectionInnerHTML(html,selector){const el=new DOMParser().parseFromString(html,"text/html").querySelector(selector);return el?el.innerHTML:""}enableLoading(line){(document.getElementById("main-cart-items")||document.getElementById("CartDrawer-CartItems")).classList.add("cart__items--disabled");const cartItemElements=this.querySelectorAll(`#CartItem-${line} .loading-overlay`),cartDrawerItemElements=this.querySelectorAll(`#CartDrawer-Item-${line} .loading-overlay`);
1[...cartItemElements,...cartDrawerItemElements].forEach(overlay=>overlay.classList.remove("hidden")),document.activeElement.blur(),this.lineItemStatusElement.setAttribute("aria-hidden",!1)}disableLoading(line){const mainCartItems=document.getElementById("main-cart-items")||document.getElementById("CartDrawer-CartItems");mainCartItems&&mainCartItems.classList.remove("cart__items--disabled");const cartItemElements=document.querySelectorAll(`#CartItem-${line} .loading-overlay`)||[],cartDrawerItemElements=document.querySelectorAll(`#CartDrawer-Item-${line} .loading-overlay`)||[];[...cartItemElements,...cartDrawerItemElements].forEach(overlay=>{overlay&&overlay.classList.add("hidden")});const itemInputs=document.querySelectorAll(`#CartItem-${line} input, #CartDrawer-Item-${line} input`),itemButtons=document.querySelectorAll(`#CartItem-${line} button, #CartDrawer-Item-${line} button`);[...itemInputs,...itemButtons].forEach(element=>{element&&(element.disabled=!1)})}handleNoteChange(event){const note=event.target.value;this.currentNote=note,this.saveNote(note)}saveNote(note){const body=JSON.stringify({note});fetch(`${routes.cart_update_url}`,{...fetchConfig(),body}).then(response=>response.json()).then(parsedState=>{this.showNoteSuccess()}).catch(e=>{console.error("Error saving cart note:",e)})}showNoteSuccess(){const successElement=this.querySelector(".cart-items__note-success");if(successElement){successElement.style.display="block",successElement.style.opacity="1";const computedStyle=window.getComputedStyle(successElement);setTimeout(()=>{let opacity=1;const fadeInterval=setInterval(()=>{opacity<=.1&&(clearInterval(fadeInterval),successElement.style.display="none"),successElement.style.opacity=opacity,opacity-=.1},50)},2e3)}else console.error("Success element not found")}handleAbove600Update(cartData){let cartItems=this.getCurrentCartScope().querySelectorAll(".cart-item"),totalPriceElement;this.tagName==="CART-DRAWER-ITEMS"?totalPriceElement=document.querySelector("#CartDrawer .cart-drawer-total-price"):totalPriceElement=document.querySelector("#main-cart-footer .total-value");let totalPrice=totalPriceElement?.dataset.totalPrice,variantId="";totalPrice=Number(totalPrice)/100;let target=0;cartItems.forEach(item=>{if(item.dataset.stepCounter==="true"){let discountPrice=item.dataset.discountPrice;target=item.dataset.target,variantId=item.dataset.variantId,variantId=Number(variantId),discountPrice=Number(discountPrice),target=Number(target),totalPrice=totalPrice-discountPrice}}),totalPrice<target&&target>0&&this.removeUpsellProductFromCart(variantId),setTimeout(()=>{this.getCurrentCartScope().querySelectorAll(".above-600").forEach(above600Element=>{const addToCartButton=above600Element.querySelector(".js-add-to-cart");addToCartButton&&!addToCartButton.classList.contains("added-to-cart")&&this.checkForUpsellSwap(addToCartButton,above600Element)})},500)}initializeQuantitySelectors(){const scope=this.getCurrentCartScope();scope.querySelectorAll(".above-600__quantity-btn").forEach(btn=>{const newBtn=btn.cloneNode(!0);btn.parentNode.replaceChild(newBtn,btn),newBtn.addEventListener("click",e=>{e.preventDefault();const wrapper=newBtn.closest(".above-600__quantity-input-wrapper");if(!wrapper)return;const input=wrapper.querySelector(".js-upsell-quantity");if(!input)return;let currentValue=parseInt(input.value,10)||1;const maxAllowed=parseInt(input.dataset.maxAllowed,10)||1,min=parseInt(input.min,10)||1;newBtn.classList.contains("above-600__quantity-btn--plus")?currentValue<maxAllowed&&(currentValue++,input.value=currentValue,input.dispatchEvent(new Event("change",{bubbles:!0}))):newBtn.classList.contains("above-600__quantity-btn--minus")&&currentValue>min&&(currentValue--,input.value=currentValue,input.dispatchEvent(new Event("change",{bubbles:!0})));const minusBtn=wrapper.querySelector(".above-600__quantity-btn--minus"),plusBtn=wrapper.querySelector(".above-600__quantity-btn--plus");minusBtn&&(minusBtn.disabled=currentValue<=min),plusBtn&&(plusBtn.disabled=currentValue>=maxAllowed)})}),scope.querySelectorAll(".js-upsell-quantity").forEach(input=>{const newInput=input.cloneNode(!0);input.parentNode.replaceChild(newInput,input);const validateQuantity=inputElement=>{let value=parseInt(inputElement.value,10);const maxAllowed=parseInt(inputElement.dataset.maxAllowed,10)||1,min=parseInt(inputElement.min,10)||1;(isNaN(value)||value==="")&&(value=min),value<min&&(value=min),value>maxAllowed&&(value=maxAllowed),parseInt(inputElement.value,10)!==value&&(inputElement.value=value);const wrapper2=inputElement.closest(".above-600__quantity-input-wrapper");if(wrapper2){const minusBtn=wrapper2.querySelector(".above-600__quantity-btn--minus"),plusBtn=wrapper2.querySelector(".above-600__quantity-btn--plus");minusBtn&&(minusBtn.disabled=value<=min),plusBtn&&(plusBtn.disabled=value>=maxAllowed)}return value};newInput.addEventListener("blur",e=>{validateQuantity(e.target)}),newInput.addEventListener("change",e=>{validateQuantity(e.target)}),newInput.addEventListener("input",e=>{const value=e.target.value,maxAllowed=parseInt(e.target.dataset.maxAllowed,10)||1,min=parseInt(e.target.min,10)||1;if(value!==""&&!isNaN(value)){const numValue=parseInt(value,10);numValue>maxAllowed?(e.target.style.borderColor="#ff0000",e.target.title=`Maximum ${maxAllowed} allowed`):numValue<min?(e.target.style.borderColor="#ff0000",e.target.title=`Minimum ${min} required`):(e.target.style.borderColor="",e.target.title="")}}),newInput.addEventListener("paste",e=>{setTimeout(()=>{validateQuantity(e.target)},0)});const wrapper=newInput.closest(".above-600__quantity-input-wrapper");if(wrapper){const currentValue=parseInt(newInput.value,10)||1,maxAllowed=parseInt(newInput.dataset.maxAllowed,10)||1,min=parseInt(newInput.min,10)||1,minusBtn=wrapper.querySelector(".above-600__quantity-btn--minus"),plusBtn=wrapper.querySelector(".above-600__quantity-btn--plus");minusBtn&&(minusBtn.disabled=currentValue<=min),plusBtn&&(plusBtn.disabled=currentValue>=maxAllowed)}})}initializeAbove600Component(){const scope=this.getCurrentCartScope(),above600Elements=scope.querySelectorAll(".above-600");if(!above600Elements.length)return;this.initializeQuantitySelectors(),scope.querySelectorAll(".above-600-carousel").forEach(carousel=>{setTimeout(()=>{carousel.style.visibility="visible"},4e3)}
1),above600Elements.forEach(above600Element=>{const addToCartButton=above600Element.querySelector(".js-add-to-cart");if(!addToCartButton)return;const newButton=addToCartButton.cloneNode(!0);addToCartButton.parentNode.replaceChild(newButton,addToCartButton),newButton.disabled=!0;const carouselWrapper=above600Element.closest(".above-600-carousel"),resolveSwapState=()=>{newButton.disabled=!1,carouselWrapper&&(carouselWrapper.style.visibility="visible")};if(above600Element.dataset.isSwapOpportunity==="true"){const buttonText=newButton.querySelector(".button-text");buttonText&&(buttonText.textContent="Swap gift!",buttonText.dataset.baseText="Swap gift!"),newButton.classList.add("swap-button"),newButton.dataset.isSwap="true",newButton.dataset.oldUpsellVariantId=above600Element.dataset.oldUpsellVariantId,above600Element.classList.add("swap-available"),resolveSwapState()}this.checkForUpsellSwap(newButton,above600Element,resolveSwapState),newButton.addEventListener("click",e=>{if(e.preventDefault(),e.stopPropagation(),newButton.classList.contains("added-to-cart")||newButton.disabled)return;const buttonText=newButton.querySelector(".button-text"),loadingSpinner=newButton.querySelector(".loading-spinner");buttonText&&(buttonText.style.display="none"),loadingSpinner&&(loadingSpinner.style.display="block"),newButton.disabled=!0;const variantId=newButton.dataset.variantId?parseInt(newButton.dataset.variantId,10):null,featherInsertId=newButton.dataset.featherInsertId?parseInt(newButton.dataset.featherInsertId,10):null,discountPriceCents=newButton.dataset.discountPrice||"",discountPrice=discountPriceCents?(parseInt(discountPriceCents,10)/100).toString():"",finalPrice=newButton.querySelector("[data-discount-price]")?.dataset.discountPrice||"",originalPrice=newButton.dataset.originalPrice||above600Element.querySelector("[data-original-price]")?.dataset.originalPrice||"";let stepCounter=above600Element.dataset.step;const quantityButtonWrapper=newButton.closest(".above-600__quantity-button-wrapper"),quantityInput=quantityButtonWrapper?quantityButtonWrapper.querySelector(".js-upsell-quantity"):above600Element.querySelector(".js-upsell-quantity");let quantity=1;if(quantityInput){const currentValue=parseInt(quantityInput.value,10),maxAllowed=parseInt(quantityInput.dataset.maxAllowed,10)||parseInt(newButton.dataset.remaining,10)||0,min=parseInt(quantityInput.min,10)||1;if(isNaN(currentValue)||currentValue===""||currentValue<min?(quantity=min,quantityInput.value=min):currentValue>maxAllowed?(quantity=maxAllowed,quantityInput.value=maxAllowed):quantity=currentValue,maxAllowed<=0||quantity<=0||quantity>maxAllowed){buttonText&&(buttonText.style.display="block",buttonText.textContent="Limit reached"),loadingSpinner&&(loadingSpinner.style.display="none"),newButton.disabled=!1;const wrapper=quantityInput.closest(".above-600__quantity-input-wrapper");if(wrapper){const minusBtn=wrapper.querySelector(".above-600__quantity-btn--minus"),plusBtn=wrapper.querySelector(".above-600__quantity-btn--plus");minusBtn&&(minusBtn.disabled=quantity<=min),plusBtn&&(plusBtn.disabled=quantity>=maxAllowed)}return}}if(!variantId){console.error("No variant ID found"),buttonText&&(buttonText.style.display="block",buttonText.textContent="Error: Invalid product"),loadingSpinner&&(loadingSpinner.style.display="none"),newButton.disabled=!1;return}const upsellHandle=newButton.dataset.upsellHandle||"",isSwap=newButton.dataset.isSwap==="true",oldUpsellVariantId=newButton.dataset.oldUpsellVariantId;(async()=>{isSwap&&oldUpsellVariantId&&await this.removeUpsellByVariantId(parseInt(oldUpsellVariantId,10));const sharedOfferId=`offer-${stepCounter}-${variantId}`;return await fetch("/cart/add.js",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({id:variantId,quantity,sections:["cart-drawer","cart-icon-bubble"],sections_url:window.location.pathname,attributes:{offer_id:sharedOfferId,discount_price:discountPrice,step_counter:stepCounter},properties:{_step_counter:stepCounter,discount_price:discountPrice,_discount_price:discountPrice,_original_price:originalPrice,offer_id:sharedOfferId,_offer_id:sharedOfferId,_upsell_id:upsellHandle}})}).then(async response=>{const responseData=await response.json();if(!response.ok)throw new Error(responseData.description||responseData.message||"Unable to add gift to cart");return responseData})})().then(data=>{loadingSpinner&&(loadingSpinner.style.display="none"),buttonText&&(buttonText.style.display="block",isSwap?buttonText.textContent="Swapped!":buttonText.textContent="Added to Cart");const cartDrawer=document.querySelector("cart-drawer");cartDrawer&&data.sections&&typeof cartDrawer.renderContents=="function"?cartDrawer.renderContents(data):(this.onCartUpdate(),typeof window.publish=="function"&&window.publish("cart-update",{source:"cart-items",cartData:data}))}).catch(error=>{console.error("Error adding to cart:",error),loadingSpinner&&(loadingSpinner.style.display="none"),buttonText&&(buttonText.style.display="block",buttonText.textContent="Error - Try Again"),newButton.disabled=!1})})});const variantSelect=document.getElementById("upsell-variant-select");variantSelect&&variantSelect.addEventListener("change",e=>{this.updateAbove600Prices(e.target)}),this.handleAbove600Update()}updateAbove600Prices(selectElement){const selectedOption=selectElement.options[selectElement.selectedIndex];if(!selectedOption)return;const originalPrice=selectedOption.dataset.price,discountPrice=selectedOption.dataset.discountPrice||"";if(!originalPrice||!discountPrice)return;const originalPriceElement=document.querySelector(".above-600__content-inner-right-price"),discountPriceElement=document.querySelector(".above-600__content-inner-right-price-discount"),buttonTextElement=document.querySelector(".above-600 .button-text");if(originalPriceElement&&(originalPriceElement.textContent=this.formatMoney(parseInt(originalPrice))),discountPriceElement&&(discountPriceElement.textContent=this.formatMoney(parseInt(discountPrice))),buttonTextElement){const baseText=buttonTextElement.dataset.baseText||"Add to Cart for";buttonTextElement.textContent=`${baseText} ${this.formatMoney(parseInt(discountPrice))}`}}formatMoney(cents){return"$"+(cents/100).toFixed(2)}removeUpsellProductFromCart(variantId){fetch("/cart.js").then(response=>response.json()).then(cart=>{const upsellItem=cart.items.find(item=>item.variant_id==variantId);upsellItem&&fetch("/cart/change.js",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:upsellItem.key,quantity:0})}).then(response=>response.json()).then(data=>{const featherInsertItems=data.items.filter(item=>item.properties&&item.properties.upsell_free==="true");if(featherInsertItems.length>0){const removePromises=featherInsertItems.map(item=>fetch("/cart/change.js",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:item.key,quantity:0})}).then(response=>response.json()));Promise.all(removePromises).then(()=>{this.updateCartSections()})}else this.updateCartSections()}).catch(e=>{console.error("Error removing upsell product:",e)})}).catch(e=>{console.error("Error fetching cart:",e)})}updateCartSections(){const updatePromises=[];
1this.getSectionsToRender().forEach(section=>{const elementToReplace=document.getElementById(section.id);if(elementToReplace){const promise=fetch(`${routes.cart_url}?section_id=${section.section}`).then(response=>response.text()).then(responseText=>{const newElement=new DOMParser().parseFromString(responseText,"text/html").getElementById(section.id);newElement&&(elementToReplace.innerHTML=newElement.innerHTML)}).catch(e=>{console.error("Error updating section:",section.id,e)});updatePromises.push(promise)}}),Promise.all(updatePromises).then(()=>{})}checkForUpsellSwap(button,above600Element,onResolved){const currentTier=parseFloat(above600Element.dataset.step);if(above600Element.dataset.isSwapOpportunity==="true"){onResolved&&onResolved();return}const swapCheckController=new AbortController,swapCheckTimeout=setTimeout(()=>swapCheckController.abort(),3e3);fetch("/cart.js",{signal:swapCheckController.signal}).then(response=>response.json()).then(cart=>{const existingUpsell=cart.items.find(item=>item.properties&&item.properties._step_counter);if(existingUpsell){const existingTier=parseFloat(existingUpsell.properties._step_counter);if(currentTier>existingTier){const buttonText=button.querySelector(".button-text");buttonText&&!button.classList.contains("swap-button")&&(buttonText.textContent="Swap gift!",buttonText.dataset.baseText="Swap gift!"),button.dataset.isSwap="true",button.dataset.oldUpsellVariantId=existingUpsell.variant_id,button.classList.add("swap-button"),above600Element.classList.add("swap-available")}}}).catch(e=>{console.error("Error checking for upsell swap:",e)}).finally(()=>{clearTimeout(swapCheckTimeout),onResolved&&onResolved()})}setSwapVariantId(button,currentTier){fetch("/cart.js").then(response=>response.json()).then(cart=>{const existingUpsell=cart.items.find(item=>item.properties&&item.properties._step_counter);existingUpsell&&(button.dataset.isSwap="true",button.dataset.oldUpsellVariantId=existingUpsell.variant_id)}).catch(e=>{console.error("Error setting swap variant ID:",e)})}async removeUpsellByVariantId(variantId){try{const cart=await(await fetch("/cart.js")).json(),upsellItem=cart.items.find(item=>item.variant_id===variantId);if(!upsellItem)return;const offerId=upsellItem.properties?.offer_id||upsellItem.attributes?.offer_id;if(!offerId)return;const itemsToRemove=cart.items.filter(item=>(item.properties?.offer_id||item.attributes?.offer_id)===offerId);for(const item of itemsToRemove)await fetch("/cart/change.js",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:item.key,quantity:0})});return!0}catch(error){throw console.error("Error removing upsell:",error),error}}}customElements.define("cart-items",CartItems),customElements.get("cart-note")||customElements.define("cart-note",class extends HTMLElement{constructor(){super(),this.addEventListener("change",debounce(event=>{const body=JSON.stringify({note:event.target.value});fetch(`${routes.cart_update_url}`,{...fetchConfig(),body})},ON_CHANGE_DEBOUNCE_TIMER))}});
2//# sourceMappingURL=/cdn/shop/t/184/assets/cart.js.map?v=41100822403927358831787809863

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.