1function countUp(el, start, end, duration, separatorLocale) { 2 3 let range = end - start; 4 let stepTime = Math.abs(Math.floor(duration / range)); 5 6 let startTime = new Date().getTime(); 7 let endTime = startTime + duration; 8 let timer; 9 10 function count() { 11 let now = new Date().getTime(); 12 let remaining = Math.max((endTime - now) / duration, 0); 13 let value = Math.round(end - (remaining * range)); 14 el.innerHTML = (separatorLocale === undefined) ? value : value.toLocaleString(separatorLocale, {useGrouping: true }); 15 if (value == end) { 16 clearInterval(timer); 17 } 18 } 19 20 timer = setInterval(count, stepTime); 21 count(); 22} 23 24function startAnimation() { 25 26 let counters = document.querySelectorAll('.counter-container'); 27 28 for (let i = 0; i < counters.length; i++) { 29 30 let el = counters[i]; 31 32 if (!el.getAttribute('data-animated') && UIkit.util.isInView(el)) { 33 34 let perimeter = 2 * Math.PI * el.dataset.radius, 35 circle = el.querySelector('.counter-value'), 36 numberEl = el.querySelector('.el-number'), 37 svg = el.querySelector('.el-circle'); 38 39 if (svg) { svg.setAttribute('id', el.dataset.uniqid); } 40 41 if (circle) { 42 circle.style.strokeDashoffset = perimeter * (1 - el.dataset.percentage / 100); 43 circle.style.strokeDasharray = perimeter; 44 } 45 46 if (numberEl) { 47 countUp(numberEl, 0, el.dataset.number, parseInt(el.dataset.duration), el.dataset.separatorLocale); 48 } 49 50 el.setAttribute('data-animated', true); 51 52 } 53 54 } 55 56}; 57 58UIkit.util.ready(function() { 59 startAnimation(); 60 window.addEventListener('load', startAnimation, false); 61 window.addEventListener('scroll', startAnimation, false); 62 window.addEventListener('resize', startAnimation, false); 63});
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.