Files
ota-admin-portal/src/hooks/useIntersectObserver.js
Tristan Timblin 05c02dc1aa CEC-6016: add trim to fleet (#523)
* CEC-6016: add trim to fleet

* update snapshot
2024-04-30 10:06:55 -07:00

21 lines
608 B
JavaScript

import { useEffect, useState } from "react";
export function useIntersectObserver(element, offset, once) {
const [isInViewport, setIsInViewport] = useState(false);
useEffect(() => {
const current = element?.current;
const observer = new IntersectionObserver(([entry]) => {
setIsInViewport(entry.isIntersecting);
if (entry.isIntersecting && once) {
observer.unobserve(current);
}
}, { rootMargin: offset });
current && observer.observe(current);
return () => current && observer.unobserve(current);
}, [element, offset, once]);
return isInViewport;
}