1(function() { 2 var _ = v; 3 4 var scrollerDesc = mctracker(); 5 scrollerDesc.setup({ 6 element: _('.box-container').toArray(), 7 offsetBottom: '20%', 8 once: true, 9 }).onStepEnter(function(response) { 10 var list = _(response.element).find('li'); 11 list.forEach(function(item, i) { 12 var delay = i * 150 / 1000; 13 item = _(item); 14 item.attr('style', 'transition-delay: ' + delay + 's;'); 15 }) 16 17 list.addClass('show') 18 }); 19 20 21 var header = function() { 22 var lastKnownScrollY = 0; 23 var currentScrollY = 0; 24 var eleHeader = null; 25 const classes = { 26 pinned: 'header-pin', 27 unpinned: 'header-unpin', 28 }; 29 30 function onScroll() { 31 currentScrollY = window.pageYOffset; 32 33 if (currentScrollY <= 0) { 34 restore(); 35 return; 36 } 37 if (currentScrollY < lastKnownScrollY) { 38 pin(); 39 } else if (currentScrollY > lastKnownScrollY) { 40 unpin(); 41 } 42 lastKnownScrollY = currentScrollY; 43 } 44 45 function pin() { 46 eleHeader.removeClass(classes.unpinned);
47 eleHeader.addClass(classes.pinned); 48 } 49 function unpin() { 50 eleHeader.removeClass(classes.pinned); 51 eleHeader.addClass(classes.unpinned); 52 } 53 function restore() { 54 eleHeader.removeClass(classes.pinned); 55 eleHeader.removeClass(classes.unpinned); 56 } 57 eleHeader = _('.main-header'); 58 headerHeaight = eleHeader.height(); 59 onScroll(); 60 window.onload = function() { 61 document.addEventListener('scroll', onScroll, false); 62 } 63 } 64 header(); 65 66 67 68 69 var specifics = function(params) { 70 var scrollerDesc = mctracker(); 71 scrollerDesc.setup({ 72 element: _('.especifications ul').toArray(), 73 bottom: '300', 74 once: true, 75 }).onStepEnter(function(response) { 76 var list = _(response.element).find('li'); 77 list.forEach(function(item, i) { 78 var delay = i * 100 / 1000; 79 item = _(item); 80 item.attr('style', 'transition-delay: ' + delay + 's;'); 81 }) 82 list.addClass('show') 83 }); 84 } 85 specifics(); 86 87 88 const letters = _('svg').children('g'); 89 function animateLetter(index = 0) { 90 if (index > letters.length - 1) { 91 return false; 92 } 93 94 let nextIndex = index + 1; 95 let paths = _(letters[index]).find('path'); 96 let duration = (index > 0 ? 390 : 1000); 97 98 anime({ 99 targets: paths.toArray(), 100 strokeDashoffset: [anime.setDashoffset, 0], 101 easing: 'easeInOutSine', 102 duration: duration, 103 begin: () => { 104 paths.addClass('hw'); 105 }, 106 complete: () => { 107 animateLetter(nextIndex); 108 } 109 }); 110 } 111 animateLetter(0); 112 113 114 115}());
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.