PageSourceSearch

https://santic.com/cdn/shop/t/101/assets/shop-product-details.js?v=151941789462150851921787129672

js santic.com collected 2026-10-01 12:09:34 UTC 9,273 bytes, 2 lines download raw bytes

1document.addEventListener("DOMContentLoaded",function(){document.querySelectorAll('form[data-type="add-to-cart-form"]').forEach(form=>{const formId=form.id,quantityInputs=document.querySelectorAll(`input[name="quantity"][form="${formId}"], .modern-quantity-selector .quantity-input[form="${formId}"]`);quantityInputs.length!==0&&form.addEventListener("submit",function(e){const activeQuantityInput=quantityInputs[0],quantity=parseInt(activeQuantityInput.value)||1;form.querySelectorAll('input[type="hidden"][name="quantity"]').forEach(input=>{input.remove()});const qtyInput=document.createElement("input");qtyInput.type="hidden",qtyInput.name="quantity",qtyInput.value=quantity,form.appendChild(qtyInput)})});function handleResponsiveProductTitles(){document.querySelectorAll(".shop-product-title[data-font-size][data-mobile-font-size]").forEach(title=>{function adjustTitleFontSize(){const desktopSize=title.getAttribute("data-font-size"),mobileSize=title.getAttribute("data-mobile-font-size");window.innerWidth<=767?title.style.setProperty("font-size",`${mobileSize}px`,"important"):title.style.setProperty("font-size",`${desktopSize}px`,"important")}adjustTitleFontSize(),title.hasAttribute("data-resize-listener-added")||(window.addEventListener("resize",adjustTitleFontSize),title.setAttribute("data-resize-listener-added","true"))})}handleResponsiveProductTitles();function initFaqAccordions(){document.querySelectorAll(".product-faq").forEach(faqContainer=>{if(!faqContainer.id)return;const faqItems=faqContainer.querySelectorAll(".faq-item"),innerFaqContainer=faqContainer.querySelector(".faq-container"),isAccordion=innerFaqContainer&&innerFaqContainer.getAttribute("data-accordion")==="true";faqItems.forEach(item=>{const question=item.querySelector(".faq-question");question&&(question.hasAttribute("data-click-listener-added")||(question.setAttribute("data-click-listener-added","true"),question.addEventListener("click",()=>{const isActive=item.classList.contains("active");isAccordion&&!isActive&&faqItems.forEach(otherItem=>{otherItem.classList.remove("active")}),item.classList.toggle("active")})))})})}initFaqAccordions(),initProductGallery(),document.addEventListener("variant:imageChanged",function(event){event.detail&&event.detail.image&&(typeof window.filterShopProductGalleryByColor=="function"&&window.filterShopProductGalleryByColor(event.detail.color,event.detail.image)||updateGalleryWithVariantImage(event.detail.image))})}),document.addEventListener("DOMContentLoaded",function(){setTimeout(function(){document.querySelectorAll(".kaching-bundles__bar").forEach(function(bar){bar.addEventListener("click",function(){const pricingContainer=bar.querySelector(".kaching-bundles__bar-pricing"),priceElement=pricingContainer.querySelector(".kaching-bundles__bar-price"),fullPriceElement=pricingContainer.querySelector(".kaching-bundles__bar-full-price"),price=priceElement?priceElement.textContent.trim():null,fullPrice=fullPriceElement?fullPriceElement.textContent.trim():null,productInfo=bar.closest(".shop-product-info");if(productInfo&&price&&fullPrice){const buttonTextContainer=productInfo.querySelector(".shop-add-to-cart-button .button-text");buttonTextContainer&&setTimeout(function(){buttonTextContainer.innerHTML=`Add to Cart - ${price} <span class="compare-price">${fullPrice}</span>`},50)}})})},1e3)});function initProductGallery(){function cloneWithoutEventListeners(element){const clone=element.cloneNode(!0);return element.replaceWith(clone),clone}const imageWrapper=document.querySelector(".shop-main-image-wrapper");imageWrapper&&cloneWithoutEventListeners(imageWrapper);const mainImages=Array.from(document.querySelectorAll(".shop-main-image")),thumbnails=Array.from(document.querySelectorAll(".shop-thumbnail")).map(cloneWithoutEventListeners),previousArrow=document.querySelector(".shop-prev-arrow"),nextArrowElement=document.querySelector(".shop-next-arrow"),prevArrow=previousArrow?cloneWithoutEventListeners(previousArrow):null,nextArrow=nextArrowElement?cloneWithoutEventListeners(nextArrowElement):null;if(!mainImages.length||!thumbnails.length||!prevArrow||!nextArrow)return;let visibleIndexes=mainImages.map((_image,index)=>index),currentVariantImage=null,currentIndex=Math.max(mainImages.findIndex(image=>image.classList.contains("active")),0);function updateArrowStates(){const disableNavigation=visibleIndexes.length<=1;prevArrow.classList.toggle("disabled",disableNavigation),nextArrow.classList.toggle("disabled",disableNavigation),prevArrow.setAttribute("aria-disabled",String(disableNavigation)),nextArrow.setAttribute("aria-disabled",String(disableNavigation))}function changeImage(index){visibleIndexes.includes(index)&&(mainImages.forEac
1h((image,imageIndex)=>{const isActive=imageIndex===index;image.classList.toggle("active",isActive),image.style.display=isActive?"block":"none"}),thumbnails.forEach((thumbnail,thumbnailIndex)=>{thumbnail.classList.toggle("active",thumbnailIndex===index)}),currentIndex=index,thumbnails[index].scrollIntoView({behavior:"smooth",block:"nearest",inline:"center"}),updateArrowStates())}function changeImageByOffset(offset){if(visibleIndexes.length<=1)return;const nextVisibleIndex=(visibleIndexes.indexOf(currentIndex)+offset+visibleIndexes.length)%visibleIndexes.length;changeImage(visibleIndexes[nextVisibleIndex])}thumbnails.forEach((thumbnail,index)=>{thumbnail.addEventListener("click",function(event){event.preventDefault(),event.stopImmediatePropagation(),changeImage(index)},!0)}),prevArrow.addEventListener("click",function(event){event.preventDefault(),event.stopImmediatePropagation(),changeImageByOffset(-1)},!0),nextArrow.addEventListener("click",function(event){event.preventDefault(),event.stopImmediatePropagation(),changeImageByOffset(1)},!0);function getImageFilename(image){return(image.src||image.dataset.src||"").split("?")[0].split("/").pop()}function filterByColor(color,variantImage){const normalizedColor=(color||"").trim().toLocaleLowerCase();if(!normalizedColor)return!1;variantImage?.src&&(currentVariantImage=variantImage);const colorIndexes=mainImages.reduce((indexes,image,index)=>((image.dataset.mediaColor||"").trim().toLocaleLowerCase()===normalizedColor&&indexes.push(index),indexes),[]);if(!colorIndexes.length)return!1;const variantFilename=variantImage?.src?variantImage.src.split("?")[0].split("/").pop():"",featuredImageIndex=mainImages.findIndex(image=>variantFilename&&getImageFilename(image)===variantFilename);visibleIndexes=[...new Set([...colorIndexes,...featuredImageIndex>=0?[featuredImageIndex]:[]])].sort((firstIndex,secondIndex)=>firstIndex-secondIndex),mainImages.forEach((image,index)=>{const isVisible=visibleIndexes.includes(index);image.hidden=!isVisible,isVisible||(image.style.display="none")}),thumbnails.forEach((thumbnail,index)=>{const isVisible=visibleIndexes.includes(index);thumbnail.hidden=!isVisible,thumbnail.style.display=isVisible?"":"none",isVisible||thumbnail.classList.remove("active")});const targetIndex=visibleIndexes.includes(featuredImageIndex)?featuredImageIndex:visibleIndexes[0];return changeImage(targetIndex),updateArrowStates(),!0}const selectedColor=document.querySelector('.simple-variant-picker__option.option--color input[type="radio"]:checked');filterByColor(selectedColor?.value,null)||(changeImage(currentIndex),updateArrowStates()),window.changeImage=changeImage,window.filterShopProductGalleryByColor=filterByColor;const imageContainer=document.querySelector(".shop-main-image-wrapper");let touchStartX=null;imageContainer&&(imageContainer.addEventListener("touchstart",function(event){touchStartX=event.changedTouches[0]?.screenX??null,event.stopImmediatePropagation()},!0),imageContainer.addEventListener("touchend",function(event){const touchEndX=event.changedTouches[0]?.screenX??null;if(event.stopImmediatePropagation(),touchStartX===null||touchEndX===null)return;const distance=touchEndX-touchStartX;Math.abs(distance)>=30&&changeImageByOffset(distance<0?1:-1),touchStartX=null},!0)),document.addEventListener("keydown",function(event){const targetTagName=document.activeElement?.tagName;["INPUT","SELECT","TEXTAREA"].includes(targetTagName)||(event.key==="ArrowLeft"||event.key==="ArrowRight")&&(event.preventDefault(),event.stopImmediatePropagation(),changeImageByOffset(event.key==="ArrowLeft"?-1:1))},!0),window.addEventListener("resize",function(){window.clearTimeout(window.shopProductGalleryResizeTimer),window.shopProductGalleryResizeTimer=window.setTimeout(function(){const selectedColorRadio=document.querySelector('.simple-variant-picker__option.option--color input[type="radio"]:checked');filterByColor(selectedColorRadio?.value,currentVariantImage)},250)})}function updateGalleryWithVariantImage(variantImage){const carouselImages=Array.from(document.querySelectorAll(".shop-main-image")),variantFilename=variantImage?.src?variantImage.src.split("?")[0].split("/").pop():"",matchingImageIndex=carouselImages.findIndex(image=>{const imageUrl=(image.src||image.dataset.src||"").split("?")[0];return variantFilename&&imageUrl.split("/").pop()===variantFilename});matchingImageIndex>=0&&typeof window.changeImage=="function"&&window.changeImage(matchingImageIndex)}
2//# sourceMappingURL=/cdn/shop/t/101/assets/shop-product-details.js.map?v=151941789462150851921787129672

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.