1class JBProductScroll{constructor(){this.gallery=document.querySelector("[data-product-gallery]"),this.infoPanel=document.querySelector("[data-product-info-sticky]"),this.galleryItems=document.querySelectorAll(".jb-product-gallery__item"),!(!this.gallery||!this.infoPanel||window.innerWidth<=768)&&this.init()}init(){this.setupStickyBehavior(),this.observeGalleryEnd()}setupStickyBehavior(){const galleryHeight=this.gallery.scrollHeight,viewportHeight=window.innerHeight;this.gallery.setAttribute("data-gallery-height",galleryHeight),this.gallery.setAttribute("data-viewport-height",viewportHeight)}observeGalleryEnd(){const lastItem=this.galleryItems[this.galleryItems.length-1];if(!lastItem)return;new IntersectionObserver(entries=>{entries.forEach(entry=>{entry.isIntersecting?document.body.classList.add("jb-gallery-complete"):document.body.classList.remove("jb-gallery-complete")})},{threshold:.5}).observe(lastItem)}scrollToImage(index){const targetItem=this.galleryItems[index];targetItem&&targetItem.scrollIntoView({behavior:"smooth",block:"start"})}}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>{new JBProductScroll}):new JBProductScroll;let resizeTimer;window.addEventListener("resize",()=>{clearTimeout(resizeTimer),resizeTimer=setTimeout(()=>{new JBProductScroll},250)}); 2//# sourceMappingURL=/cdn/shop/t/48/assets/jb-product-scroll.js.map?v=114774675980882364701790439878
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.