Spaces:
Running
Running
File size: 520 Bytes
7198b5e | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | "use client";
import { useEffect, useRef, useState } from "react";
export function useInView<T extends Element>(threshold = 0.4) {
const ref = useRef<T | null>(null);
const [inView, setInView] = useState(false);
useEffect(() => {
const node = ref.current;
if (!node) return;
const obs = new IntersectionObserver(
([entry]) => setInView(entry.isIntersecting),
{ threshold },
);
obs.observe(node);
return () => obs.disconnect();
}, [threshold]);
return { ref, inView };
}
|