1var isInViewport = function (elem) { 2 var distance = elem.getBoundingClientRect(); 3 return ( 4 distance.top >= 0 && 5 distance.top <= (window.innerHeight || document.documentElement.clientHeight) && 6 distance.left >= 0 && 7 // distance.bottom <= (window.innerHeight || document.documentElement.clientHeight) && 8 distance.right <= (window.innerWidth || document.documentElement.clientWidth) 9 ); 10}; 11// read the link on how above code works 12 13window.addEventListener('DOMContentLoaded', (event) => { 14 var keySelector = '.eb___animated'; 15 waitForElement(keySelector).then((elm) => { 16 17 var findAnimationClass = document.querySelectorAll(keySelector); 18 replaceAnimationClasses(findAnimationClass); 19 20 window.addEventListener('scroll', function (event) { 21 replaceAnimationClasses(findAnimationClass); 22 }, true); 23 }); 24 25 //For Admin Panel 26 window.addEventListener('DOMNodeInserted', (event) => { 27 var adminChangeSelector = document.getElementById('eb-animation-style'); 28 29 if (adminChangeSelector) { 30 adminChangeSelector.addEventListener('change', function (event) { 31 setTimeout(function () { 32 replaceAnimationClasses(document.querySelectorAll(keySelector)); 33 }, 500); 34 }, true); 35 } 36 }); 37}); 38 39 40 41var replaceAnimationClasses = function (selector) { 42 selector.forEach(element => { 43 if (isInViewport(element)) { 44 let toRemoveClasses = []; 45 let toAddClasses = []; 46 element.classList.forEach((classname) => { 47 if (classname.includes('eb___')) { 48 toRemoveClasses.push(classname); 49 toAddClasses.push(classname.replace('eb___', 'eb__')); 50 } 51 }) 52 element.classList.add(...toAddClasses); 53 element.classList.remove(...toRemoveClasses); 54 } 55 }); 56} 57 58// 59var waitForElement = function (selector) { 60 return new Promise(resolve => { 61 if (document.querySelector(selector)) { 62 return resolve(document.querySelector(selector)); 63 } 64 65 const observer = new MutationObserver(mutations => { 66 if (document.querySelector(selector)) { 67 resolve(document.querySelector(selector)); 68 observer.disconnect(); 69 } 70 }); 71 72 observer.observe(document.body, { 73 childList: true, 74 subtree: true 75 }); 76 }); 77}
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.