PageSourceSearch

https://lineageprovisions.com/cdn/shop/t/134/assets/product-carousel.js?v=178992930055172532601786023046

js lineageprovisions.com collected 2026-09-25 14:20:43 UTC 4,686 bytes, 2 lines download raw bytes

1class ProductCarousel extends HTMLElement{constructor(){super(),this.mainCarousel=null,this.thumbnailCarousel=null,this.useMobileArrows=!1,this.flavorImages=null,this.handleFlavorChange=this.handleFlavorChange.bind(this)}connectedCallback(){if(typeof Splide>"u"){console.error("ProductCarousel: Splide library not loaded");return}this.init()}disconnectedCallback(){this.cleanup()}init(){this.useMobileArrows=this.dataset.useMobileArrows==="true";const mainElement=this.querySelector("#pdp-main-carousel"),thumbnailElement=this.querySelector("#pdp-main-thumbnails");if(!mainElement){console.warn("ProductCarousel: Main carousel element not found");return}this.mainCarousel=new Splide(mainElement,{type:"slide",rewind:!1,pagination:!1,arrows:!1,gap:16,lazyLoad:"nearby",preloadPages:1,speed:400,reducedMotion:{speed:0,rewindSpeed:0},breakpoints:{768:{pagination:this.useMobileArrows,arrows:this.useMobileArrows}}}),thumbnailElement&&(this.thumbnailCarousel=new Splide(thumbnailElement,{fixedWidth:60,fixedHeight:60,gap:10,rewind:!1,pagination:!1,arrowPath:"m21.9531 20.0008-8.25-8.25 2.3567-2.35671L26.6665 20.0008 16.0598 30.6074l-2.3567-2.3566 8.25-8.25Z",isNavigation:!0,breakpoints:{900:{perPage:3},600:{fixedWidth:48,fixedHeight:48,perPage:2,gap:8}}}),this.mainCarousel.sync(this.thumbnailCarousel)),this.mainCarousel.mount(),this.thumbnailCarousel&&this.thumbnailCarousel.mount(),this.mainCarousel.on("lazyload:loaded",img=>{img.classList.add("is-loaded")}),this.setupVariantNavigation(),this.setupFlavorNavigation()}setupVariantNavigation(){const variantSelector=this.closest(".rtnu-pdp__hero")?.querySelector("variant-selector")||this.closest("section")?.querySelector("variant-selector");variantSelector&&variantSelector.addEventListener("variant-change",e=>{const variant=e.detail.variant;if(!variant)return;const mediaId=variant.featured_media?.id||variant.featured_image?.id;mediaId&&this.navigateToVariantImage(mediaId)})}navigateToVariantImage(mediaId){if(!this.mainCarousel)return;const targetIndex=this.mainCarousel.Components.Slides.get().findIndex(slide=>{const img=slide.slide.querySelector("img[data-image-id]");return img&&parseInt(img.dataset.imageId)===mediaId});targetIndex!==-1&&this.mainCarousel.go(targetIndex)}setupFlavorNavigation(){const dataEl=(this.closest(".rtnu-pdp__hero")||this.closest("section")||document).querySelector('script[id^="ctr-flavor-carousel-images-"]');if(dataEl){try{this.flavorImages=JSON.parse(dataEl.textContent)}catch(error){console.error("ProductCarousel: failed to parse flavor image data",error);return}document.addEventListener("ctr:choose-flavor-change",this.handleFlavorChange)}}handleFlavorChange(event){if(!this.flavorImages)return;const{mode,oneFlavor}=event.detail||{};if(mode!=="one-flavor"||!oneFlavor)return;const images=this.flavorImages[oneFlavor];!images||!images.length||this.renderFlavorImages(images)}renderFlavorImages(images){if(!this.mainCarousel)return;const mainList=this.querySelector("#pdp-main-carousel .splide__list");if(!mainList)return;mainList.replaceChildren(...images.map((image,index)=>this.buildMainSlide(image,index===0)));const thumbList=this.querySelector("#pdp-main-thumbnails .splide__list");thumbList&&thumbList.replaceChildren(...images.map(image=>this.buildThumbSlide(image))),this.mainCarousel.refresh(),this.thumbnailCarousel&&this.thumbnailCarousel.refresh(),this.mainCarousel.go(0)}buildMainSlide(image,isFirst){const li=document.createElement("li");li.className=`splide__slide ratio-${image.aspectRatio}`,(image.aspectRatio<.6||image.aspectRatio>1.52)&&li.classList.add("splide__slide--contain"),li.dataset.fancybox="pdp",li.dataset.src=image.srcLarge;const img=document.createElement("img");return img.alt=image.alt||"",img.dataset.imageId=image.id,isFirst?(img.src=image.src,img.loading="eager"):img.dataset.splideLazy=image.src,li.appendChild(img),li}buildThumbSlide(image){const li=document.createElement("li");li.className="splide__slide";const img=document.createElement("img");return img.src=image.srcThumb,img.alt=image.alt||"",img.loading="lazy",img.dataset.imageId=image.id,li.appendChild(img),li}getMainCarousel(){return this.mainCarousel}getThumbnailCarousel(){return this.thumbnailCarousel}cleanup(){document.removeEventListener("ctr:choose-flavor-change",this.handleFlavorChange),this.mainCarousel&&(this.mainCarousel.destroy(),this.mainCarousel=null),this.thumbnailCarousel&&(this.thumbnailCarousel.destroy(),this.thumbnailCarousel=null)}}
1customElements.get("product-carousel")||customElements.define("product-carousel",ProductCarousel);export default ProductCarousel;
2//# sourceMappingURL=/cdn/shop/t/134/assets/product-carousel.js.map?v=178992930055172532601786023046

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.