import { useState } from "react"; import { useDidUpdate } from "hooks"; /** * * @kind 14-Virtualization */ export const useIntersectionObserver = ( ref: React.MutableRefObject, options?: IntersectionObserverInit, ) => { const [isIntersecting, setIntersecting] = useState(false); useDidUpdate(() => { const observer = new IntersectionObserver(([entry]) => { setIntersecting(entry.isIntersecting); }, options); if (ref.current) { observer.observe(ref.current); } return () => { observer.unobserve(ref.current); }; }, [ref]); return isIntersecting; };