PageSourceSearch

https://ataclete.com/cdn/shop/t/11/assets/ab-pdp-v2.js?v=172836658472400290881773687434

js ataclete.com collected 2026-09-25 06:04:13 UTC 7,817 bytes, 2 lines download raw bytes

1document.addEventListener("DOMContentLoaded",function(){document.querySelectorAll(".ab-pdp-v2").forEach(function(pdp){const jsonEl=pdp.querySelector(".ab-pdp-v2__product-json");if(!jsonEl)return;const product=JSON.parse(jsonEl.textContent),variantIdInput=pdp.querySelector("[data-variant-id-input]"),priceEl=pdp.querySelector("[data-price]"),compareEl=pdp.querySelector("[data-compare-price]"),discountBadge=pdp.querySelector("[data-discount-badge]"),stockWrap=pdp.querySelector(".ab-pdp-v2__stock"),stockText=pdp.querySelector(".ab-pdp-v2__stock-text"),addToCartBtn=pdp.querySelector("[data-add-to-cart]"),optionButtons=pdp.querySelectorAll(".ab-pdp-v2__option-btn"),qtyInput=pdp.querySelector("[data-qty-input]"),qtyMinus=pdp.querySelector("[data-qty-minus]"),qtyPlus=pdp.querySelector("[data-qty-plus]"),mainImage=pdp.querySelector(".ab-pdp-v2__main-image"),thumbRail=pdp.querySelector("[data-thumb-rail]"),thumbButtons=pdp.querySelectorAll(".ab-pdp-v2__thumb"),dotButtons=pdp.querySelectorAll(".ab-pdp-v2__dot"),prevBtn=pdp.querySelector(".ab-pdp-v2__arrow--prev"),nextBtn=pdp.querySelector(".ab-pdp-v2__arrow--next"),thumbUpBtn=pdp.querySelector(".ab-pdp-v2__thumb-nav--up"),thumbDownBtn=pdp.querySelector(".ab-pdp-v2__thumb-nav--down"),imageMedia=product.media.filter(function(m){return m.media_type==="image"});let selectedOptions=product.selected_or_first_available_variant?[...product.selected_or_first_available_variant.options]:[...product.variants[0].options],activeMediaId=product.selected_or_first_available_variant&&product.selected_or_first_available_variant.featured_media?product.selected_or_first_available_variant.featured_media.id:imageMedia[0]?imageMedia[0].id:null;function money(cents){return window.Shopify&&Shopify.formatMoney?Shopify.formatMoney(cents,window.theme&&window.theme.moneyFormat?window.theme.moneyFormat:"${{amount}}"):"$"+(cents/100).toFixed(2)}function findVariant(options){return product.variants.find(function(variant){return variant.options.every(function(opt,i){return opt===options[i]})})}function anyVariantMatchesPartial(optionIndex,value){if(optionIndex===0)return!0;const trial=[...selectedOptions];return trial[optionIndex]=value,product.variants.some(function(variant){return variant.available&&variant.options.every(function(opt,i){return i===optionIndex?opt===value:i===0?opt===trial[0]:i<optionIndex?opt===trial[i]:!0})})}function getFirstAvailableVariantForSelection(){return product.variants.find(function(variant){return variant.available&&variant.options.every(function(opt,i){return selectedOptions[i]===opt})})}function getClosestAvailableVariant(){return product.variants.find(function(variant){return variant.available&&variant.options[0]===selectedOptions[0]})||product.selected_or_first_available_variant||product.variants[0]}function normalizeSelectionAfterFirstOptionChange(){if(getFirstAvailableVariantForSelection())return;const closest=getClosestAvailableVariant();closest&&(selectedOptions=[...closest.options])}function updateThumbNavState(){if(!thumbRail||!thumbUpBtn||!thumbDownBtn)return;const atTop=thumbRail.scrollTop<=2,atBottom=thumbRail.scrollTop+thumbRail.clientHeight>=thumbRail.scrollHeight-2;thumbUpBtn.classList.toggle("is-disabled",atTop),thumbDownBtn.classList.toggle("is-disabled",atBottom)}function scrollThumbIntoView(mediaId){const activeThumb=pdp.querySelector('.ab-pdp-v2__thumb[data-media-id="'+mediaId+'"]');if(!activeThumb||!thumbRail)return;const railTop=thumbRail.scrollTop,railBottom=railTop+thumbRail.clientHeight,itemTop=activeThumb.offsetTop,itemBottom=itemTop+activeThumb.offsetHeight;itemTop<railTop?thumbRail.scrollTo({top:itemTop-10,behavior:"smooth"}):itemBottom>railBottom&&thumbRail.scrollTo({top:itemBottom-thumbRail.clientHeight+10,behavior:"smooth"})}function setActiveMedia(mediaId){if(!mediaId)return;activeMediaId=mediaId;const media=imageMedia.find(function(m){return Number(m.id)===Number(mediaId)});if(media&&mainImage){const src=media.preview_image&&media.preview_image.src?media.preview_image.src.replace(/(\.[a-z]+)(\?.*)?$/i,"_1800x$1"):media.src;src&&(mainImage.src=src,mainImage.alt=media.alt||product.title)}
1thumbButtons.forEach(function(btn){btn.classList.toggle("is-active",Number(btn.dataset.mediaId)===Number(mediaId))}),dotButtons.forEach(function(btn){btn.classList.toggle("is-active",Number(btn.dataset.mediaId)===Number(mediaId))}),scrollThumbIntoView(mediaId),updateThumbNavState()}function updateOptionAvailability(){optionButtons.forEach(function(btn){const optionIndex=Number(btn.dataset.optionIndex),value=btn.dataset.optionValue,available=anyVariantMatchesPartial(optionIndex,value);btn.classList.toggle("is-unavailable",!available),selectedOptions[optionIndex]===value?btn.classList.add("is-selected"):btn.classList.remove("is-selected")})}function updateUIFromVariant(){const variant=findVariant(selectedOptions)||getClosestAvailableVariant()||product.selected_or_first_available_variant||product.variants[0];if(variant){if(variantIdInput&&(variantIdInput.value=variant.id),priceEl&&(priceEl.textContent=money(variant.price)),compareEl&&(compareEl.textContent=variant.compare_at_price&&variant.compare_at_price>variant.price?money(variant.compare_at_price):""),discountBadge)if(variant.compare_at_price&&variant.compare_at_price>variant.price){const savings=Math.round((variant.compare_at_price-variant.price)/variant.compare_at_price*100);
1discountBadge.textContent=savings+"% OFF",discountBadge.classList.remove("is-hidden")}else discountBadge.classList.add("is-hidden");stockWrap&&stockText&&(variant.available?(stockWrap.classList.remove("is-out-stock"),stockWrap.classList.add("is-in-stock"),stockText.textContent="In stock"):(stockWrap.classList.remove("is-in-stock"),stockWrap.classList.add("is-out-stock"),stockText.textContent="Out of stock")),addToCartBtn&&(addToCartBtn.disabled=!variant.available,addToCartBtn.textContent=variant.available?"ADD TO CART":"SOLD OUT"),variant.featured_media&&variant.featured_media.id&&setActiveMedia(variant.featured_media.id),updateOptionAvailability()}}optionButtons.forEach(function(btn){btn.addEventListener("click",function(){const optionIndex=Number(btn.dataset.optionIndex),value=btn.dataset.optionValue;optionIndex!==0&&btn.classList.contains("is-unavailable")||(selectedOptions[optionIndex]=value,optionIndex===0&&normalizeSelectionAfterFirstOptionChange(),updateUIFromVariant())})}),thumbButtons.forEach(function(btn){btn.addEventListener("click",function(){setActiveMedia(btn.dataset.mediaId)})}),dotButtons.forEach(function(btn){btn.addEventListener("click",function(){setActiveMedia(btn.dataset.mediaId)})});function currentMediaIndex(){return imageMedia.findIndex(function(m){return Number(m.id)===Number(activeMediaId)})}prevBtn&&prevBtn.addEventListener("click",function(){if(!imageMedia.length)return;let idx=currentMediaIndex();idx=idx<=0?imageMedia.length-1:idx-1,setActiveMedia(imageMedia[idx].id)}),nextBtn&&nextBtn.addEventListener("click",function(){if(!imageMedia.length)return;let idx=currentMediaIndex();idx=idx>=imageMedia.length-1?0:idx+1,setActiveMedia(imageMedia[idx].id)}),thumbUpBtn&&thumbRail&&thumbUpBtn.addEventListener("click",function(){thumbRail.scrollBy({top:-220,behavior:"smooth"})}),thumbDownBtn&&thumbRail&&thumbDownBtn.addEventListener("click",function(){thumbRail.scrollBy({top:220,behavior:"smooth"})}),thumbRail&&(thumbRail.addEventListener("scroll",updateThumbNavState),updateThumbNavState()),qtyMinus&&qtyInput&&qtyMinus.addEventListener("click",function(){const val=parseInt(qtyInput.value||"1",10);qtyInput.value=Math.max(1,val-1)}),qtyPlus&&qtyInput&&qtyPlus.addEventListener("click",function(){const val=parseInt(qtyInput.value||"1",10);qtyInput.value=val+1}),updateUIFromVariant()})});
2//# sourceMappingURL=/cdn/shop/t/11/assets/ab-pdp-v2.js.map?v=172836658472400290881773687434

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.