frontend/app/lib/use-is-in-view.tsx
Nathan Lamy fbb9158684
All checks were successful
Deploy to Netlify / Deploy to Netlify (push) Successful in 1m16s
feat: add stress
2025-12-23 15:15:11 +01:00

25 lines
750 B
TypeScript

import * as React from "react";
import { useInView, type UseInViewOptions } from "motion/react";
interface UseIsInViewOptions {
inView?: boolean;
inViewOnce?: boolean;
inViewMargin?: UseInViewOptions["margin"];
}
function useIsInView<T extends HTMLElement = HTMLElement>(
ref: React.Ref<T>,
options: UseIsInViewOptions = {}
) {
const { inView, inViewOnce = false, inViewMargin = "0px" } = options;
const localRef = React.useRef<T>(null);
React.useImperativeHandle(ref, () => localRef.current as T);
const inViewResult = useInView(localRef, {
once: inViewOnce,
margin: inViewMargin,
});
const isInView = !inView || inViewResult;
return { ref: localRef, isInView };
}
export { useIsInView, type UseIsInViewOptions };