UNPKG

@techmely/utils

Version:

Collection of helpful JavaScript / TypeScript utils

36 lines (33 loc) 979 B
import { invariant } from './chunk-JBXZG2HJ.mjs'; import { isBrowser } from './chunk-AJMQPQGJ.mjs'; // src/useObserverElement.ts function useObserverElement() { invariant(isBrowser()); let observer = null; const callbacks = /* @__PURE__ */ new Map(); const observe = (element, callback) => { if (!observer) { observer = new IntersectionObserver((entries) => { for (const entry of entries) { const callback2 = callbacks.get(entry.target); const isVisible = entry.isIntersecting || entry.intersectionRatio > 0; if (isVisible && callback2) { callback2(); } } }); } callbacks.set(element, callback); observer.observe(element); return () => { callbacks.delete(element); observer?.unobserve(element); if (callbacks.size === 0) { observer?.disconnect(); observer = null; } }; }; return observe; } export { useObserverElement };