function createObserver()

in media/js/firefox/challenge-the-default/animate-pop-in.es6.js [10:50]


function createObserver() {
    return new IntersectionObserver(function (entries) {
        let chain = Promise.resolve();
        entries.forEach(function (entry) {
            if (entry.isIntersecting) {
                if (entry.target.classList.contains('mzp-c-picto')) {
                    // chain promises with a 200ms delay in between each one
                    chain = chain.then(() => popIn(entry.target));
                    // remove target observer after triggering animation
                    observer.unobserve(entry.target);
                } else if (entry.target.classList.contains('toggle')) {
                    const input = entry.target.querySelector('input');
                    setTimeout(() => {
                        entry.target.classList.add('animate-slide');
                        input.checked = true;
                    }, 600);
                } else if (heroSection.contains(entry.target)) {
                    const heroWrapper =
                        entry.target.querySelector('.hero-wrapper');
                    const imageWrapper =
                        entry.target.querySelector('.c-hero-top-images');
                    heroWrapper.classList.add('animate-pop-in');
                    heroWrapper.addEventListener('animationend', function () {
                        imageWrapper.classList.add('active');
                    });
                } else if (
                    entry.target.classList.contains('ctd-animated-logo')
                ) {
                    entry.target.classList.add('animate-active');
                } else {
                    entry.target.classList.add('animate-pop-in');
                }
            } else if (
                !entry.isIntersecting &&
                entry.target.classList.contains('ctd-animated-logo')
            ) {
                entry.target.classList.remove('animate-active');
            }
        });
    });
}