UNPKG

@mantine/hooks

Version:

A collection of 50+ hooks for state and UI management

25 lines (24 loc) 808 B
"use client"; let react = require("react"); //#region packages/@mantine/hooks/src/use-in-viewport/use-in-viewport.ts function useInViewport() { const observer = (0, react.useRef)(null); const [inViewport, setInViewport] = (0, react.useState)(false); return { ref: (0, react.useCallback)((node) => { if (typeof IntersectionObserver !== "undefined") { if (node && !observer.current) observer.current = new IntersectionObserver((entries) => { const lastEntry = entries[entries.length - 1]; setInViewport(lastEntry.isIntersecting); }); else observer.current?.disconnect(); if (node) observer.current?.observe(node); else setInViewport(false); } }, []), inViewport }; } //#endregion exports.useInViewport = useInViewport; //# sourceMappingURL=use-in-viewport.cjs.map