import { useState, useRef, useEffect, RefObject } from 'react'; export const useBoundingBox = (): [ Partial, RefObject ] => { const ref = useRef(); const [bbox, setBbox] = useState>({}); const set = () => setBbox(ref && ref.current ? ref.current.getBoundingClientRect() : {}); useEffect(() => { set(); window.addEventListener('resize', set); return () => window.removeEventListener('resize', set); }, []); return [bbox, ref]; };