1(function(){const qs=(root,sel)=>root.querySelector(sel),qsa=(root,sel)=>Array.prototype.slice.call(root.querySelectorAll(sel)),parsePayload=el=>{try{const raw=el.getAttribute("data-external-product");if(!raw)return null;const txt=raw.replace(/"/g,'"');return JSON.parse(txt)}catch(e){return console.error("Failed to parse external product payload",e),null}},updateFlavorName=(root,title)=>{try{const el=qs(root,"[data-flavor-name]");el&&(el.textContent=(title||"").toUpperCase())}catch{}},ensureImageTitleVisible=root=>{try{const img=qs(root||document,"[data-variant-image-title] img, .product-showcase__image-title img");img&&(img.style.display="")}catch{}},installImageTitleVisibilityGuard=root=>{try{let section=root&&root.closest?root.closest(".product-showcase"):root;section||(section=document);const holder=qs(section,"[data-variant-image-title], .product-showcase__image-title");if(!holder||holder.dataset.titleGuardInstalled)return;holder.dataset.titleGuardInstalled="1";const ensure=()=>{ensureImageTitleVisible(section)};new MutationObserver(()=>{ensure()}).observe(holder,{attributes:!0,childList:!0,subtree:!0,attributeFilter:["style","class"]}),ensure()}catch{}},fetchAndReplaceSelector=(root,productUrl,onDone)=>{try{const sectionEl=root.closest(".product-showcase");if(!sectionEl)return;const sectionId=sectionEl.id&§ionEl.id.indexOf("section--")===0?sectionEl.id.replace("section--",""):"";if(!sectionId||!productUrl){typeof onDone=="function"&&onDone();return}const url=productUrl+(productUrl.indexOf("?")>-1?"&":"?")+"sections="+encodeURIComponent(sectionId);fetch(url,{credentials:"same-origin"}).then(function(r){return r.json()}).then(function(json){const html=json&&json[sectionId];if(!html)return;const tmp=document.createElement("div");tmp.innerHTML=html;const newContainer=tmp.querySelector(".product-showcase__external .product-showcase__variants-container"),container=qs(root,".product-showcase__external .product-showcase__variants-container");newContainer&&container&&(container.innerHTML=newContainer.innerHTML)}).catch(function(){}).then(function(){typeof onDone=="function"&&onDone()})}catch{typeof onDone=="function"&&onDone()}},escapeAttrJson=obj=>{try{return JSON.stringify(obj).replace(/"/g,""")}catch{return""}},buildSelectorButtons=(refs,activeUrl)=>Array.isArray(refs)?refs.map(function(r){const bg=r.bgColor||"",thumb=r.images&&r.images.thumbs&&r.images.thumbs[0]?r.images.thumbs[0]:"",payload=escapeAttrJson(r),style="display:inline-block;margin-right:8px;border-radius:9999px;width:64px;height:64px;overflow:hidden;cursor:pointer;"+(bg?"background-color: "+bg+";":""),inner=thumb?'<img src="'+thumb+'" alt="'+(r.title||"")+'" style="width:100%;height:100%;object-fit:cover;" width="64" height="64">':'<span style="display:inline-block;width:100%;height:100%;border-radius:9999px;'+(bg?"background:"+bg+";":"background:#eee;")+'"></span>';return'<button type="button" class="product-showcase__external-item'+(activeUrl&&r.url===activeUrl?" is-active":"")+'" data-external-product="'+payload+'" style="'+style+'">'+inner+"</button>"}).join(""):"",uniqByUrl=list=>{const seen=Object.create(null),out=[];return(list||[]).forEach(function(item){const key=item&&item.url?item.url:JSON.stringify(item);seen[key]||(seen[key]=!0,out.push(item))}),out},updateProductSelector=(root,refs,current)=>{const container=qs(root,".product-showcase__external .product-showcase__variants-container");if(!container)return;refs&&!Array.isArray(refs)&&(refs=[refs]);let list=[];current&&list.push(current),Array.isArray(refs)&&(list=list.concat(refs)),list=uniqByUrl(list),container.innerHTML=buildSelectorButtons(list,current&¤t.url)},updateNutrition=(root,nutritionUrl)=>{const img=qs(document,".nutrition-modal__img");img&&(img.src=nutritionUrl||img.src);const btn=qs(root,"[data-nutrition-modal]");btn&&(btn.style.display=nutritionUrl?"":"none")},updateAddToCart=(root,payload)=>{const form=qs(root,"form#product-form-"+root.id.replace("section--",""))||qs(root,"form"),idInput=form?form.querySelector('input[name="id"]'):null;idInput&&payload.variantId&&(idInput.value=String(payload.variantId));const btn=qs(root,"[data-add-to-cart]");btn&&(payload.title&&(btn.textContent="ADD TO CART - "+payload.title),payload.available===!1?(btn.classList.add("disabled","is-out-of-stock"),btn.setAttribute("disabled","true"),btn.setAttribute("aria-disabled","true"),btn.style.backgroundColor="#E0E0E0",btn.style.borderColor="#D5D5D5",btn.style.color="#666",btn.style.cursor="not-allowed"):(btn.classList.remove("disabled","is-out-of-stock"),btn.removeAttribute("disabled"),btn.removeAttribute("aria-disabled"),btn.style.backgroundColor="",btn.style.borderColor="",btn.style.color="",btn.style.cursor=""))},updateIngredients=(root,ingredients)=>
1{const txt=qs(root,".product-showcase__ingredients-text");if(txt&&Array.isArray(ingredients)&&ingredients.length){const html="<ul>"+ingredients.map(function(i){return"<li>"+i+"</li>"}).join("")+"</ul>";setHTML(txt,html)}},setText=(el,text)=>{el&&(el.textContent=text||"")},setHTML=(el,html)=>{el&&(el.innerHTML=html||"")},updateFindNearYou=(root,payload)=>{if(!root||!payload)return;const btn=qs(root,"[data-find-near-you-button]");if(!btn)return;const text=payload.findNearYouText||btn.textContent||"",href=payload.findNearYouUrl||btn.getAttribute("href")||"#";setText(btn,text),btn.setAttribute("href",href)},buildThumbSlides=urls=>(urls||[]).map(function(url){return'<div class="swiper-slide product-showcase__thumbnail"><div class="product-showcase__thumbnail-img"><img src="'+url+'" alt=""></div></div>'}).join(""),buildMainSlides=urls=>(urls||[]).map(function(url,idx){return'<div class="swiper-slide product-showcase__main-img"><img src="'+url+'" alt="'+(idx+1)+'" width="auto" height="auto"></div>'}).join(""),updateImageTitle=(container,imageTitleSrc)=>{if(!container)return;const img=container.querySelector("img"),fallback=container.getAttribute("data-default-image"),src=imageTitleSrc||fallback||"";img?img.src=src:src&&(container.innerHTML='<img src="'+src+'" alt="">')},updatePrice=(root,priceStr,compareStr)=>{const priceEl=qs(root,"[data-product-price]"),compareEl=qs(root,".product-showcase__price-compare");priceEl&&(priceEl.textContent=priceStr||""),compareEl&&(compareStr?(compareEl.textContent=compareStr,compareEl.style.display=""):(compareEl.textContent="",compareEl.style.display="none"))},updateGallery=(root,images)=>{const thumbsWrap=qs(root,".product-showcase__thumbnails .swiper-wrapper"),mainWrap=qs(root,".product-showcase__main-slider .swiper-wrapper");thumbsWrap&&setHTML(thumbsWrap,buildThumbSlides(images&&images.thumbs)),mainWrap&&setHTML(mainWrap,buildMainSlides(images&&images.main));try{typeof window.initProductShowcaseSwipers=="function"?window.initProductShowcaseSwipers():(window.Swiper&&qsa(root,".swiper").forEach(function(el){el.swiper&&typeof el.swiper.update=="function"&&el.swiper.update()}),bindThumbnailClicks(root))}catch(e){console.warn("Error reinitializing Swiper:",e)}},getMainSwiper=root=>{try{const el=qs(root,".product-showcase__main-slider .swiper");return el&&el.swiper?el.swiper:null}catch{return null}},setActiveThumb=(root,index)=>{qsa(root,".product-showcase__thumbnails .swiper-slide").forEach((t,i)=>{i===index?t.classList.add("swiper-slide-thumb-active"):t.classList.remove("swiper-slide-thumb-active")})},bindThumbnailClicks=root=>{const thumbs=qsa(root,".product-showcase__thumbnails .swiper-slide"),mainSwiper=getMainSwiper(root),initialIndex=mainSwiper&&typeof mainSwiper.activeIndex=="number"?mainSwiper.activeIndex:0;setActiveThumb(root,Math.min(initialIndex,Math.max(thumbs.length-1,0))),mainSwiper&&!mainSwiper._hg_thumbSyncAttached&&typeof mainSwiper.on=="function"&&(mainSwiper.on("slideChange",function(){setActiveThumb(root,mainSwiper.activeIndex||0)}),mainSwiper._hg_thumbSyncAttached=!0),thumbs.forEach((el,idx)=>{el.addEventListener("click",function(){setActiveThumb(root,idx),mainSwiper&&typeof mainSwiper.slideTo=="function"?mainSwiper.slideTo(idx):qsa(root,".product-showcase__main-img").forEach((s,i)=>{s.style.display=i===idx?"":"none"})})})},onSelect=btn=>{const payload=parsePayload(btn);if(!payload)return;const section=btn.closest(".product-showcase");if(!section)return;const titleEl=qs(section,".product-showcase__title");setText(titleEl,payload.title),updateFlavorName(section,payload.title),setHTML(qs(section,".product-showcase__description-desktop"),payload.description),setHTML(qs(section,".product-showcase__description-mobile"),payload.description);const imageTitleEl=qs(section,"[data-variant-image-title]");updateImageTitle(imageTitleEl,payload.imageTitleSrc),installImageTitleVisibilityGuard(section),updateGallery(section,payload.images),updatePrice(section,payload.price,payload.compareAt),updateIngredients(section,payload.ingredients),updateAddToCart(section,payload),updateFindNearYou(section,payload),updateNutrition(section,payload.nutrition);let ext=payload.externalRefs;ext&&!Array.isArray(ext)&&(ext=[ext]),updateProductSelector(section,ext||[],payload);try{payload.url&&window.history&&typeof window.history.replaceState=="function"&&window.history.replaceState(null,"",payload.url)}catch{}
1const wrap=qs(section,".product-showcase__external .product-showcase__variants-container");wrap&&qsa(wrap,".product-showcase__external-item").forEach(function(el){el.style.display="none"}),fetchAndReplaceSelector(section,payload.url,function(){const wrapAfter=qs(section,".product-showcase__external .product-showcase__variants-container");wrapAfter&&qsa(wrapAfter,".product-showcase__external-item").forEach(function(el){el.style.display=""}),ensureImageTitleVisible(section),installImageTitleVisibilityGuard(section);const t=qs(section,".product-showcase__title"),hasPayloadTitle=!!(payload&&payload.title),isEmpty=t&&(!t.textContent||!t.textContent.trim());if(t&&(!hasPayloadTitle||isEmpty)){const restore=prevTitle||section.dataset.prevTitle||"";setText(t,restore);try{t.setAttribute("data-text",restore)}catch{}}});const ev=new CustomEvent("externalProductSelected",{detail:{payload,section}});document.dispatchEvent(ev)},init=()=>{qsa(document,".product-showcase").forEach(function(sec){installImageTitleVisibilityGuard(sec)}),document.addEventListener("click",function(e){const target=e.target.closest(".product-showcase__external-item[data-external-product]");target&&(e.preventDefault(),onSelect(target))}),document.addEventListener("click",function(e){const within=e.target.closest(".product-showcase__variants-container, .product-showcase__variants-container--image");if(within){const section=within.closest(".product-showcase");section&&ensureImageTitleVisible(section)}},!0);function handleVariantInteraction(e){const within=e.target.closest(".product-showcase__variants-container, .product-showcase__variants-container--image");if(!within)return;const section=within.closest(".product-showcase");section&&(ensureImageTitleVisible(section),setTimeout(function(){ensureImageTitleVisible(section)},0),setTimeout(function(){ensureImageTitleVisible(section)},60))}document.addEventListener("change",handleVariantInteraction,!0),document.addEventListener("input",handleVariantInteraction,!0)};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",init):init()})(); 2//# sourceMappingURL=/cdn/shop/t/24/assets/product-selector.js.map?v=110467816963461072351765546849
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.