UNPKG

@mantine/hooks

Version:

A collection of 50+ hooks for state and UI management

28 lines (25 loc) 760 B
'use client'; import { useRef, useState, useCallback } from 'react'; function useInViewport() { const observer = useRef(null); const [inViewport, setInViewport] = useState(false); const ref = useCallback((node) => { if (typeof IntersectionObserver !== "undefined") { if (node && !observer.current) { observer.current = new IntersectionObserver( (entries) => setInViewport(entries.some((entry) => entry.isIntersecting)) ); } else { observer.current?.disconnect(); } if (node) { observer.current?.observe(node); } else { setInViewport(false); } } }, []); return { ref, inViewport }; } export { useInViewport }; //# sourceMappingURL=use-in-viewport.mjs.map