UNPKG

@itwin/itwinui-react

Version:

A react component library for iTwinUI

24 lines (23 loc) 780 B
import * as React from 'react'; import { getWindow } from '../functions/dom.js'; export const useResizeObserver = (onResize) => { let resizeObserver = React.useRef(void 0); let elementRef = React.useCallback( (element) => { if (!getWindow()?.ResizeObserver) return; resizeObserver.current?.disconnect?.(); if (element) { resizeObserver.current = new ResizeObserver((entries) => { window.requestAnimationFrame(() => { if (!Array.isArray(entries) || !entries.length) return; let [{ contentRect }] = entries; return onResize(contentRect); }); }); resizeObserver.current?.observe?.(element); } }, [onResize], ); return [elementRef, resizeObserver.current]; };