@mantine/hooks
Version:
A collection of 50+ hooks for state and UI management
25 lines (24 loc) • 808 B
JavaScript
"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