@itwin/itwinui-react
Version:
A react component library for iTwinUI
24 lines (23 loc) • 780 B
JavaScript
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];
};