Files
brk/website_next/learn/charts/intersection.js
T
2026-06-09 11:26:14 +02:00

22 lines
543 B
JavaScript

const lifecycleByElement = new WeakMap();
const observer = new IntersectionObserver(
(entries) => {
for (const entry of entries) {
const lifecycle = lifecycleByElement.get(entry.target);
lifecycle?.[entry.isIntersecting ? "show" : "hide"]();
}
},
{
rootMargin: "800px 0px",
},
);
/**
* @param {Element} element
* @param {{ show: () => void, hide: () => void }} lifecycle
*/
export function onChartVisibility(element, lifecycle) {
lifecycleByElement.set(element, lifecycle);
observer.observe(element);
}