1class AddonProduct{constructor(trigger){this.addProduct=!trigger.classList.contains("in-cart-drawer"),this.dom={trigger,text:trigger.querySelector("span")},this.settings={id:Number(trigger.dataset.variantId),isAside:trigger.id.includes("aside")},this.text={submit:trigger.dataset.textSubmit,submitted:trigger.dataset.textSubmitted,soldOut:trigger.dataset.textSoldOut},this.dom.trigger.classList.remove("js-init"),this.dom.trigger.addEventListener("click",event=>{event.preventDefault(),this.click()}),this.eventListeners()}click(){this.addProduct?this.addToCart():this.removeFromCart()}checkIfInCart({cartItems=null,errorData=null}){if(cartItems!=null){const matches=cartItems.items.find(x=>x.id===this.settings.id),text=matches?this.text.submitted:this.text.submit;this.dom.text.textContent=text,matches?this.addProduct=!1:this.addProduct=!0}else{const isInCartDrawer=this.dom.trigger.classList.contains("in-cart-drawer");if(this.dom.text.textContent=this.text.submit,errorData!=null)return this.errorHandler({errorData});isInCartDrawer?(this.dom.text.textContent=this.text.submitted,this.addProduct=!1):this.addProduct=!0}}eventListeners(){this.settings.isAside&&(document.addEventListener("product:removed",e=>{const cartItems=e.detail.cart.items===void 0?null:{items:e.detail.cart.items};this.checkIfInCart({cartItems})}),document.addEventListener("cart-addon:added",e=>{const cartItems=e.detail.cart.items===void 0?null:{items:e.detail.cart.items};this.checkIfInCart({cartItems})}))}errorHandler({errorData}){errorData.status===422&&(this.dom.text.textContent=this.text.soldOut,this.addProduct=!1,this.dom.trigger.disabled=!0,this.errorAlertMessage({errorData}))}errorAlertMessage({errorData}){setTimeout(()=>{alert(errorData.description)},400)}addToCart(){const formData={items:[{id:this.settings.id,quantity:1}]};fetch("/cart/add.js",{credentials:"same-origin",method:"POST",headers:{"Content-Type":"application/json","X-Requested-With":"XMLHttpRequest"},body:JSON.stringify(formData)}).then(response=>response.json().then(data=>{response.ok?(document.dispatchEvent(new CustomEvent("product:added",{bubbles:!0,detail:{data,variant:this.settings.id,quantity:1}})),getCart()):this.errorHandler({errorData:data})})).catch(error=>{console.error("Error:",error)})}removeFromCart(){const lineItem=document.querySelector(`.CartItem__Remove[data-variant-id="${this.settings.id}"]`);lineItem?lineItem.click():console.warn("item not found")}}function getCart(){fetch("/cart.js",{credentials:"same-origin",method:"GET",headers:{"Content-Type":"application/json","X-Requested-With":"XMLHttpRequest"}}).then(response=>response.json().then(data=>{document.dispatchEvent(new CustomEvent("cart-addon:added",{bubbles:!0,detail:{cart:data}}))}))}function initAddonProducts(){document.querySelectorAll(".js-addon-product.js-init").forEach(addon_product=>{new AddonProduct(addon_product)})}initAddonProducts(),document.addEventListener("cart:updated",()=>{initAddonProducts()});function getScrollPosition({elem,position="x"}){let scrollValue=0;return position==="x"?scrollValue=elem.scrollLeft:position==="y"&&(scrollValue=elem.scrollTop),scrollValue}(function(){let cartAddonsInlineVerticalScrollPosition=0,cartAddonsAsideHorizontalScrollPosition=0;function getCartAddonsScrollPosition(){const cartAddonsInline=document.querySelector(".cart-addons--inline .cart-addons__container"),cartAddonsAside=document.querySelector(".cart-addons--aside .cart-addons__container");cartAddonsInline&&cartAddonsAside&&(cartAddonsInlineVerticalScrollPosition=getScrollPosition({elem:cartAddonsInline,position:"x"}),cartAddonsAsideHorizontalScrollPosition=getScrollPosition({elem:cartAddonsAside,position:"y"}))}function setCartAddonsScrollPosition(){const cartAddonsInline=document.querySelector(".cart-addons--inline .cart-addons__container"),cartAddonsAside=document.querySelector(".cart-addons--aside .cart-addons__container");cartAddonsInline&&cartAddonsAside&&(cartAddonsInline.scrollLeft=cartAddonsInlineVerticalScrollPosition,cartAddonsAside.scrollTop=cartAddonsAsideHorizontalScrollPosition)}document.addEventListener("cart:updated",()=>{setCartAddonsScrollPosition()}),document.addEventListener("product:changed",()=>{getCartAddonsScrollPosition()}),document.addEventListener("product:removed",()=>{getCartAddonsScrollPosition()}),document.addEventListener("cart-addon:added",()=>{getCartAddonsScrollPosition()})})(); 2//# sourceMappingURL=/cdn/shop/t/13/assets/addon-product.js.map?v=99989177053663439591738735530
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.