import { useState, useMemo, useEffect } from 'react' import { observeViewport, measureViewport, ViewportMeasurements } from './viewport' const useViewport = () => { const [viewport, setViewport] = useState(measureViewport) const observer = useMemo>(() => { const observer = observeViewport(setViewport) observer.observe() return observer }, []) useEffect(() => { return () => observer.unobserve() }, []) return viewport } export default useViewport