1class ProductCardQuantity extends HTMLElement{constructor(){super(),this.abortController=null,this.decreaseButton=null,this.increaseButton=null,this.inputElement=null}connectedCallback(){this.abortController=new AbortController;const quantityWrapper=this.querySelector(".product-card__quantity-wrapper");if(!quantityWrapper||(this.decreaseButton=quantityWrapper.querySelector(".product-card__quantity-btn--minus"),this.increaseButton=quantityWrapper.querySelector(".product-card__quantity-btn--plus"),this.inputElement=quantityWrapper.querySelector(".product-card__quantity-input"),!this.decreaseButton||!this.increaseButton||!this.inputElement))return;this.updateUI(),this.decreaseButton.addEventListener("click",()=>this.onDecreaseQuantity(),{signal:this.abortController.signal}),this.increaseButton.addEventListener("click",()=>this.onIncreaseQuantity(),{signal:this.abortController.signal});const form=this.closest("form");form&&form.addEventListener("variant:change",()=>this.updateUI(),{signal:this.abortController.signal})}disconnectedCallback(){this.abortController&&this.abortController.abort()}onDecreaseQuantity(){if(!this.inputElement)return;const currentValue=parseInt(this.inputElement.value)||1,minValue=parseInt(this.inputElement.min)||1;currentValue>minValue&&(this.inputElement.value=currentValue-1,this.updateUI())}onIncreaseQuantity(){if(!this.inputElement)return;const currentValue=parseInt(this.inputElement.value)||1,maxValue=this.inputElement.hasAttribute("max")?parseInt(this.inputElement.max):null;(!maxValue||currentValue<maxValue)&&(this.inputElement.value=currentValue+1,this.updateUI())}updateUI(){if(!this.inputElement||!this.decreaseButton||!this.increaseButton)return;const currentValue=parseInt(this.inputElement.value)||1,minValue=parseInt(this.inputElement.min)||1,maxValue=this.inputElement.hasAttribute("max")?parseInt(this.inputElement.max):null;this.decreaseButton.disabled=currentValue<=minValue,this.increaseButton.disabled=maxValue!==null&¤tValue>=maxValue}get quantity(){return this.inputElement&&parseInt(this.inputElement.value)||1}set quantity(value){if(this.inputElement){const numValue=parseInt(value)||1,minValue=parseInt(this.inputElement.min)||1,maxValue=this.inputElement.hasAttribute("max")?parseInt(this.inputElement.max):null;let clampedValue=Math.max(minValue,numValue);maxValue!==null&&(clampedValue=Math.min(maxValue,clampedValue)),this.inputElement.value=clampedValue,this.updateUI()}}}window.customElements.get("product-card-quantity")||window.customElements.define("product-card-quantity",ProductCardQuantity),(function(){"use strict";const originalErrorHandler=window.onerror;window.onerror=function(message,source,lineno,colno,error){return source&&source.includes("theme.js")&&message&&(message.includes("private field")||message.includes("Cannot read"))&&error&&error.stack&&error.stack.includes("onScrollEnd")?!0:originalErrorHandler?originalErrorHandler.call(this,message,source,lineno,colno,error):!1},window.addEventListener("unhandledrejection",function(event){event.reason&&event.reason.message&&event.reason.message.includes("private field")&&event.reason.stack&&event.reason.stack.includes("onScrollEnd")&&event.preventDefault()});function setupCarouselFix(carousel){carousel._scrollEndFixApplied||(carousel._scrollEndFixApplied=!0,carousel.addEventListener("scrollend",function(){const pagination=carousel.parentElement?.querySelector(".product-card__pagination");if(pagination){const items=Array.from(carousel.querySelectorAll(".product-card__media-item:not([hidden])"));if(items.length>0){const scrollLeft=carousel.scrollLeft,itemWidth=carousel.clientWidth||items[0].offsetWidth,currentIndex=Math.min(Math.max(0,Math.round(scrollLeft/itemWidth)),items.length-1);pagination.querySelectorAll(".tap-area").forEach((dot,index)=>{dot.setAttribute("aria-current",index===currentIndex?"true":"false")})}}},{passive:!0}))}function initCarousels(){document.querySelectorAll("scroll-carousel.product-card__carousel").forEach(setupCarouselFix)}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",initCarousels):initCarousels(),new MutationObserver(initCarousels).observe(document.body,{childList:!0,subtree:!0})})(),(function(){"use strict";function ensureCarouselItemsVisible(){document.querySelectorAll(".product-card__carousel .product-card__media-item").forEach(item=>{item.hasAttribute("hidden")&&item.removeAttribute("hidden")})}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",ensureCarouselItemsVisible):ensureCarouselItemsVisible(),new MutationObserver(ensureC
1arouselItemsVisible).observe(document.body,{childList:!0,subtree:!0})})(),(function(){"use strict";document.addEventListener("variant:change",function(event){const variant=event.detail&&event.detail.variant;if(!variant)return;const modal=document.querySelector("quick-buy-modal");if(!modal)return;const container=modal.querySelector("[data-variant-image-container]");if(!container)return;const currentImg=container.querySelector(".qb-new__thumb-img");if(!currentImg)return;const productId=event.detail.formId?event.detail.formId.toString().replace(/\D/g,"").slice(0,-1):null,dataScript=modal.querySelector('script[id^="qb-new-media-"]');if(!dataScript)return;let mediaMap;try{mediaMap=JSON.parse(dataScript.textContent)}catch{return}const newSrc=mediaMap[variant.id];if(!newSrc)return;const baseSrc=newSrc.split("?")[0];if(currentImg.src&¤tImg.src.includes(baseSrc.split("/").pop().split("_")[0]))return;currentImg.style.transition="opacity 0.15s ease",currentImg.style.opacity="0";const newImg=new Image;newImg.className=currentImg.className,newImg.alt=variant.featured_media?variant.featured_media.alt||"":currentImg.alt,newImg.sizes="80px",newImg.srcset=[baseSrc+"?width=80 80w",baseSrc+"?width=160 160w",baseSrc+"?width=240 240w"].join(", "),newImg.src=baseSrc+"?width=160",newImg.dataset.mediaId=variant.featured_media?variant.featured_media.id:"",setTimeout(function(){container.replaceChild(newImg,currentImg),newImg.style.opacity="0",newImg.style.transition="opacity 0.3s ease",setTimeout(function(){newImg.style.opacity="1"},10)},150)})})(); 2//# sourceMappingURL=/cdn/shop/t/13/assets/product-card-quantity.js.map?v=50558735659747243801773130367
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.