1window.setBounceClass = (element) => { 2 element.classList.add("animate__animated", "animate__bounce"); 3}; 4 5window.clearBounceClass = (element) => { 6 element.classList.remove("animate__animated", "animate__bounce"); 7}; 8 9// fand in 10// wwwroot/js/scrollAnimations.js 11window.initScrollAnimations = () => { 12 const elements = document.querySelectorAll('.fade-in'); 13 if (!elements.length) return; 14 15 if ('IntersectionObserver' in window) { 16 const observer = new IntersectionObserver((entries, obs) => { 17 entries.forEach((entry) => { 18 if (entry.isIntersecting) { 19 entry.target.classList.add('visible'); 20 obs.unobserve(entry.target); 21 } 22 }); 23 }, { root: null, rootMargin: '0px 0px -100px 0px', threshold: 0 }); 24 25 elements.forEach((el) => observer.observe(el)); 26 return; 27 } 28 29 let ticking = false; 30 const onScroll = () => { 31 if (ticking) return; 32 ticking = true; 33 requestAnimationFrame(() => { 34 elements.forEach((el) => { 35 const rect = el.getBoundingClientRect(); 36 if (rect.top < window.innerHeight - 100) { 37 el.classList.add('visible'); 38 } 39 }); 40 ticking = false; 41 }); 42 }; 43 window.addEventListener('scroll', onScroll, { passive: true }); 44 requestAnimationFrame(onScroll); 45}; 46 47// Captain Field Execution â scroll reset on screen transition 48window.cfeScrollReset = (el) => { 49 if (el) el.scrollTop = 0; 50};
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.