Files
maher 511fad8199
Build / run (push) Has been cancelled
Initial commit
2026-05-14 13:42:10 +02:00

23 lines
634 B
TypeScript
Executable File

import {useCallback, useRef, useState} from 'react';
export function useStickySentinel() {
const [isSticky, setIsSticky] = useState(false);
const observerRef = useRef<IntersectionObserver>();
const sentinelRef = useCallback((sentinel: HTMLDivElement | null) => {
if (sentinel) {
const observer = new IntersectionObserver(
([e]) => setIsSticky(e.intersectionRatio < 1),
{threshold: [1]}
);
observerRef.current = observer;
observer.observe(sentinel);
} else if (observerRef.current) {
observerRef.current?.disconnect();
}
}, []);
return {isSticky, sentinelRef};
}