UNPKG

@primer/react

Version:

An implementation of GitHub's Primer Design System using React

27 lines (23 loc) 758 B
import { useRef } from 'react'; import useIsomorphicLayoutEffect from '../utils/useIsomorphicLayoutEffect.js'; // https://gist.github.com/strothj/708afcf4f01dd04de8f49c92e88093c3 function useResizeObserver(callback, target) { const savedCallback = useRef(callback); useIsomorphicLayoutEffect(() => { savedCallback.current = callback; }); useIsomorphicLayoutEffect(() => { const targetEl = target && 'current' in target ? target.current : document.documentElement; if (!targetEl) { return; } const observer = new ResizeObserver(entries => { savedCallback.current(entries); }); observer.observe(targetEl); return () => { observer.disconnect(); }; }, [target]); } export { useResizeObserver };