1customElements.get("add-on-widget")||customElements.define("add-on-widget",class extends HTMLElement{constructor(){super()}connectedCallback(){this.initializeAddonCards(),this.observeForNewCards()}initializeAddonCards(){this.querySelectorAll(".addon-widget__product-card").forEach(card=>this.setupAddonCard(card))}observeForNewCards(){new MutationObserver(mutations=>{mutations.forEach(mutation=>{mutation.addedNodes.length&&mutation.addedNodes.forEach(node=>{if(node.nodeType===1){node.classList&&node.classList.contains("addon-widget__product-card")&&this.setupAddonCard(node);const cards=node.querySelectorAll&&node.querySelectorAll(".addon-widget__product-card");cards&&cards.forEach(card=>this.setupAddonCard(card))}})})}).observe(this,{childList:!0,subtree:!0})}setupAddonCard(card){if(!card||!card.dataset.productId)return;const variantScript=card.querySelector("script.addon-variants-data");if(!variantScript)return;let variants=[];try{variants=JSON.parse(variantScript.textContent)}catch(e){console.error("Error parsing addon variants:",e);return}const selects=card.querySelectorAll("select.addon-variant-select"),updateVariant=()=>this.updateAddonVariantId(card,variants,selects);selects.forEach(select=>{select.addEventListener("change",updateVariant)});const checkbox=card.querySelector(".addon-item__checkbox");checkbox&&checkbox.addEventListener("change",()=>{const qty=card.querySelector(".addon-item__quantity");qty&&(qty.disabled=!checkbox.checked)}),updateVariant()}updateAddonVariantId(card,variants,selects){const selectedValues=[];selects.forEach(select=>{select.value&&selectedValues.push(select.value)});let matchedVariant=null;if(selectedValues.length===0?matchedVariant=variants[0]:selectedValues.length===1?matchedVariant=variants.find(v=>selectedValues[0].includes(v.title)||v.title.includes(selectedValues[0])):matchedVariant=variants.find(v=>selectedValues.every(val=>v.title.includes(val))),!matchedVariant){const expectedTitle=selectedValues.join(" / ");matchedVariant=variants.find(v=>v.title===expectedTitle)}if(!matchedVariant&&variants.length>0&&(matchedVariant=variants[0]),matchedVariant){const checkbox=card.querySelector(".addon-item__checkbox");
1checkbox&&(checkbox.dataset.addonId=matchedVariant.id);const variantImageSrc=matchedVariant.featured_image?.src||matchedVariant.featured_image||matchedVariant.image?.src||matchedVariant.image,variantImageAlt=matchedVariant.featured_image?.alt||matchedVariant.image?.alt||"";if(variantImageSrc){const imageElements=card.querySelectorAll(".product-card__media img"),sourceElements=card.querySelectorAll(".product-card__media source");imageElements.forEach(img=>{img.src=variantImageSrc,img.srcset=variantImageSrc,variantImageAlt&&(img.alt=variantImageAlt)}),sourceElements.forEach(source=>{source.srcset=variantImageSrc})}const salePriceEl=card.querySelector(".price-item--sale"),regularPriceContainer=card.querySelector(".price-item--regular")?.parentElement;if(salePriceEl&&(typeof Shopify<"u"&&typeof Shopify.formatMoney=="function"?salePriceEl.textContent=Shopify.formatMoney(matchedVariant.price):salePriceEl.textContent="$"+(matchedVariant.price/100).toFixed(2)),regularPriceContainer){const regularPriceEl=regularPriceContainer.querySelector(".price-item--regular");matchedVariant.compare_at_price&&matchedVariant.compare_at_price>matchedVariant.price?(typeof Shopify<"u"&&typeof Shopify.formatMoney=="function"?regularPriceEl.textContent=Shopify.formatMoney(matchedVariant.compare_at_price):regularPriceEl.textContent="$"+(matchedVariant.compare_at_price/100).toFixed(2),regularPriceContainer.style.display=""):regularPriceContainer.style.display="none"}}}}); 2//# sourceMappingURL=/cdn/shop/t/240/assets/add-on-widget.js.map?v=73597024559598541581776076926
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.