@heycar-uikit/core
Version:
The React UI library from HeyCar
30 lines (27 loc) • 1.04 kB
JavaScript
import { useState, useMemo, useEffect, useCallback } from 'react';
const useReviewRating = () => {
const [hasIntersectionObserver, setHasIntersectionObserver] = useState(false);
const [isVisible, setIsVisible] = useState(false);
const observer = useMemo(() => {
if (hasIntersectionObserver) {
return new IntersectionObserver((entries) => setIsVisible(entries[0].isIntersecting), {
threshold: 1.0,
});
}
return undefined;
}, [hasIntersectionObserver]);
const setIntersectionObserver = (targetId) => {
const target = document.querySelector(`#${targetId}`);
if (target && observer?.observe)
observer.observe(target);
};
useEffect(() => {
const hasIntObs = !!window && 'IntersectionObserver' in window;
setHasIntersectionObserver(hasIntObs);
}, []);
return {
isVisible,
setIntersectionObserver: useCallback(setIntersectionObserver, [observer]),
};
};
export { useReviewRating };