UNPKG

@heycar-uikit/core

Version:
30 lines (27 loc) 1.04 kB
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 };