PageSourceSearch

https://www.speediance.com/cdn/shop/t/371/assets/nano-feedback.js?v=182929016115176784231788321977

js speediance.com collected 2026-09-26 01:35:41 UTC 2,738 bytes, 2 lines download raw bytes

1(()=>{const setActive=(root,index)=>{const steps=Array.from(root.querySelectorAll("[data-nano-feedback-step]")),images=Array.from(root.querySelectorAll("[data-nano-feedback-image]")),maxIndex=Math.max(steps.length-1,0),activeIndex=Math.min(Math.max(index,0),maxIndex);steps.forEach((step,stepIndex)=>{const isActive=stepIndex===activeIndex,isRevealed=stepIndex<=activeIndex;step.classList.toggle("is-active",isActive),step.classList.toggle("is-revealed",isRevealed),step.setAttribute("aria-expanded",String(isRevealed))}),images.forEach((image,imageIndex)=>{image.classList.toggle("is-active",imageIndex===activeIndex)}),root._nanoFeedbackIndex=activeIndex},getScrollDirection=root=>{const scrollY=window.scrollY||window.pageYOffset||0,previousScrollY=root._nanoFeedbackScrollY??scrollY;return root._nanoFeedbackScrollY=scrollY,scrollY>=previousScrollY?"down":"up"},getStepPoint=step=>{const rect=(step.querySelector(".nano-feedback__number")||step).getBoundingClientRect();return rect.top+rect.height/2},getScrollIndex=(root,steps,direction)=>{const viewportHeight=window.innerHeight||document.documentElement.clientHeight||0,rootRect=root.getBoundingClientRect(),maxIndex=steps.length-1;if(rootRect.top>=viewportHeight)return 0;if(rootRect.bottom<=0)return maxIndex;const triggerY=viewportHeight*.75;let index=direction==="up"?maxIndex:0;if(direction==="up"){for(let stepIndex=steps.length-1;stepIndex>=0;stepIndex-=1)if(getStepPoint(steps[stepIndex])<=triggerY)return stepIndex;return 0}return steps.forEach((step,stepIndex)=>{getStepPoint(step)<=triggerY&&(index=stepIndex)}),index},initFeedback=root=>{if(root.dataset.nanoFeedbackReady==="true")return;root.dataset.nanoFeedbackReady="true";const steps=Array.from(root.querySelectorAll("[data-nano-feedback-step]"));if(steps.length===0)return;let ticking=!1;steps.forEach((step,index)=>{step.addEventListener("click",()=>{setActive(root,index)})});const updateActiveStep=()=>{const direction=getScrollDirection(root);setActive(root,getScrollIndex(root,steps,direction))},requestActivation=()=>{ticking||(ticking=!0,window.requestAnimationFrame(()=>{ticking=!1,updateActiveStep()}))};window.addEventListener("scroll",requestActivation,{passive:!0}),window.addEventListener("resize",requestActivation),root._nanoFeedbackScrollY=window.scrollY||window.pageYOffset||0,setActive(root,0),requestActivation()},initAll=(scope=document)=>{scope.querySelectorAll("[data-nano-feedback]").forEach(initFeedback)};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>initAll()):initAll(),document.addEventListener("shopify:section:load",event=>initAll(event.target))})();
2//# sourceMappingURL=/cdn/shop/t/371/assets/nano-feedback.js.map?v=182929016115176784231788321977

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.