Intersection Observer Admin for better performance
This library is used in ember-in-viewport and ember-infinity. This library is particularly important for re-using the IntersectionObserver API.
Most implementations have one Intersection Observer for each target element or so called sentinel
. However, IntersectionObserver.observe can observer multiple sentinels
. So this library will resuse the IntersectionObserver instance for another element on the page with the same set of observer options and root element. This can dramatically improve performance for pages with lots of elements and observers.
Note: A companion library is also available for requestAnimationFrame: https://github.com/snewcomer/raf-pool
npm install intersection-observer-admin --save
import IntersectionObserverAdmin from 'intersection-observer-admin';
const intersectionObserverAdmin = new IntersectionObserverAdmin();
// Add callbacks that will be called when observer detects entering and leaving viewport
intersectionObserverAdmin.addEnterCallback(element, enterCallback);
intersectionObserverAdmin.addExitCallback(element, exitCallback);
// add an element to static administrator with window as scrollable area
intersectionObserverAdmin.observe(element, { root, rootMargin: '0px 0px 100px 0px', threshold: 0 });
// add an element in a scrolling container
intersectionObserverAdmin.observe(element, { root, rootMargin: '0px 0px 100px 0px', threshold: 0 });
// Use in cleanup lifecycle hooks (if applicable) from the element being observed
intersectionObserverAdmin.unobserve(element, observerOptions);
// Use in cleanup lifecycle hooks of your application as a whole
// This will remove the in memory data store holding onto all of the observers
intersectionObserverAdmin.destroy();
isIntersecting
until later versions.dom.IntersectionObserver.enabled
.