File: /opt/wpsites/datainsightnow.com/wp-content/plugins/essential-blocks/assets/js/eb-animation-load.js
var isInViewport = function (elem) {
var distance = elem.getBoundingClientRect();
return (
distance.top >= 0 &&
distance.top <= (window.innerHeight || document.documentElement.clientHeight) &&
distance.left >= 0 &&
// distance.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&
distance.right <= (window.innerWidth || document.documentElement.clientWidth)
);
};
// read the link on how above code works
window.addEventListener('DOMContentLoaded', (event) => {
var keySelector = '.eb___animated';
waitForElement(keySelector).then((elm) => {
var findAnimationClass = document.querySelectorAll(keySelector);
replaceAnimationClasses(findAnimationClass);
window.addEventListener('scroll', function (event) {
replaceAnimationClasses(findAnimationClass);
}, true);
});
//For Admin Panel
window.addEventListener('DOMNodeInserted', (event) => {
var adminChangeSelector = document.getElementById('eb-animation-style');
if (adminChangeSelector) {
adminChangeSelector.addEventListener('change', function (event) {
setTimeout(function () {
replaceAnimationClasses(document.querySelectorAll(keySelector));
}, 500);
}, true);
}
});
});
var replaceAnimationClasses = function (selector) {
selector.forEach(element => {
if (isInViewport(element)) {
let toRemoveClasses = [];
let toAddClasses = [];
element.classList.forEach((classname) => {
if (classname.includes('eb___')) {
toRemoveClasses.push(classname);
toAddClasses.push(classname.replace('eb___', 'eb__'));
}
})
element.classList.add(...toAddClasses);
element.classList.remove(...toRemoveClasses);
}
});
}
//
var waitForElement = function (selector) {
return new Promise(resolve => {
if (document.querySelector(selector)) {
return resolve(document.querySelector(selector));
}
const observer = new MutationObserver(mutations => {
if (document.querySelector(selector)) {
resolve(document.querySelector(selector));
observer.disconnect();
}
});
observer.observe(document.body, {
childList: true,
subtree: true
});
});
}