@atlaskit/renderer
Version:
Renderer component
24 lines • 699 B
JavaScript
import { useEffect, useRef, useState } from 'react';
export const useInViewport = () => {
const trackingRef = useRef(null);
const [isInViewport, setIsInViewport] = useState(false);
useEffect(() => {
if (!trackingRef || !(trackingRef !== null && trackingRef !== void 0 && trackingRef.current)) {
return;
}
const target = trackingRef.current;
const observer = new IntersectionObserver(entries => {
for (const entry of entries) {
if (entry.isIntersecting) {
setIsInViewport(true);
}
}
});
observer.observe(target);
return () => observer.disconnect();
}, [trackingRef]);
return {
isInViewport,
trackingRef
};
};