import React, { createContext, FC, useLayoutEffect, useState } from 'react'; import useResizeObserver from '../hooks/useResizeObserver'; type Props = { documentSizeThrottleTimeoutMS?: number; }; export const DocumentSizeContext = createContext([]); export const DocumentSizeProvider: FC = ({ documentSizeThrottleTimeoutMS = 150, children, }) => { const [resizeEntries, setResizeEntries] = useState([]); const setElementToObserve = useResizeObserver( setResizeEntries, documentSizeThrottleTimeoutMS, ); useLayoutEffect(() => { setElementToObserve(document.body); }, [setElementToObserve]); return ( {children} ); };