Files
mtdb_movie/common/resources/client/utils/hooks/sticky-sentinel.ts
maher 703f50a09d
Some checks failed
Build / run (push) Has been cancelled
first commit
2025-10-29 11:42:25 +01: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};
}