PageSourceSearch

https://www.pianoledshop.com/cdn/shop/t/68/assets/w-press-logos.js?v=155463130980361681281786090360

js pianoledshop.com collected 2026-10-01 15:47:10 UTC 3,207 bytes, 2 lines download raw bytes

1class PressLogosMarquee{constructor(container){this.container=container,this.marquee=container.querySelector(".press-logos__marquee"),this.mobileBreakpoint=989,this.duration=parseFloat(this.marquee?.dataset.speed)||20,this.pixelsPerSecond=0,this.position=0,this.isRunning=!1,this.animationId=null,this.items=[],this.gap=40,this.init()}init(){this.marquee&&(this.checkViewport(),this.handleResize=this.debounce(this.checkViewport.bind(this),150),window.addEventListener("resize",this.handleResize))}debounce(func,wait){let timeout;return(...args)=>{clearTimeout(timeout),timeout=setTimeout(()=>func(...args),wait)}}checkViewport(){const isMobile=window.innerWidth<=this.mobileBreakpoint;isMobile&&!this.isRunning?this.startMarquee():!isMobile&&this.isRunning&&this.stopMarquee()}startMarquee(){this.isRunning||(this.isRunning=!0,this.cloneItems(),this.lastTime=performance.now(),this.animate())}cloneItems(){const originalItems=Array.from(this.marquee.querySelectorAll(".press-logos__item:not(.press-logos__item--clone)"));if(originalItems.length===0)return;const containerWidth=this.container.offsetWidth;let totalWidth=0;originalItems.forEach(item=>{totalWidth+=item.offsetWidth+this.gap});const clonesNeeded=Math.ceil(containerWidth*3/totalWidth);for(let i=0;i<clonesNeeded;i++)originalItems.forEach(item=>{const clone=item.cloneNode(!0);clone.classList.add("press-logos__item--clone"),clone.setAttribute("aria-hidden","true"),this.marquee.appendChild(clone)});this.items=Array.from(this.marquee.querySelectorAll(".press-logos__item")),this.singleSetWidth=totalWidth,this.pixelsPerSecond=this.singleSetWidth/this.duration}animate(){if(!this.isRunning)return;const now=performance.now(),delta=(now-this.lastTime)/1e3;this.lastTime=now,this.position-=this.pixelsPerSecond*delta,Math.abs(this.position)>=this.singleSetWidth&&(this.position+=this.singleSetWidth),this.marquee.style.transform=`translateX(${this.position}px)`,this.animationId=requestAnimationFrame(()=>this.animate())}stopMarquee(){this.isRunning=!1,this.animationId&&(cancelAnimationFrame(this.animationId),this.animationId=null),this.marquee.querySelectorAll(".press-logos__item--clone").forEach(clone=>clone.remove()),this.position=0,this.marquee.style.transform=""}destroy(){window.removeEventListener("resize",this.handleResize),this.stopMarquee()}}if(typeof window<"u"){const initPressLogos=()=>{document.querySelectorAll('[data-section-type="press-logos"]').forEach(section=>{section.pressLogosInstance||(section.pressLogosInstance=new PressLogosMarquee(section))})};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",initPressLogos):initPressLogos(),typeof Shopify<"u"&&Shopify.designMode&&(document.addEventListener("shopify:section:load",event=>{const section=event.target.querySelector('[data-section-type="press-logos"]');section&&(section.pressLogosInstance=new PressLogosMarquee(section))}),document.addEventListener("shopify:section:unload",event=>{const section=event.target.querySelector('[data-section-type="press-logos"]');section&&section.pressLogosInstance&&section.pressLogosInstance.destroy()}))}
2//# sourceMappingURL=/cdn/shop/t/68/assets/w-press-logos.js.map?v=155463130980361681281786090360

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.