1document.addEventListener('DOMContentLoaded', () => { 2 const CountUpCtor = window.CountUp || (window.countUp && window.countUp.CountUp); 3 if (!CountUpCtor) { console.error('CountUp not loaded'); return; } 4 5 const observerOptions = { root: null, rootMargin: '0px', threshold: 0.5 }; 6 7 const observer = new IntersectionObserver((entries, obs) => { 8 entries.forEach(entry => { 9 if (!entry.isIntersecting) return; 10 11 const el = entry.target; 12 const target = parseFloat(el.getAttribute('data-target')) || 0; 13 14 setTimeout(() => { 15 const counter = new CountUpCtor(el, target, { duration: 2 }); 16 if (!counter.error) counter.start(); else console.error(counter.error); 17 }, 200); 18 19 obs.unobserve(el); 20 }); 21 }, observerOptions); 22 23 document.querySelectorAll('.number-value').forEach(el => observer.observe(el)); 24});
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.