@itwin/itwinui-react
Version:
A react component library for iTwinUI
35 lines (34 loc) • 1.13 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', {
value: true,
});
Object.defineProperty(exports, 'useResizeObserver', {
enumerable: true,
get: function () {
return useResizeObserver;
},
});
const _interop_require_wildcard = require('@swc/helpers/_/_interop_require_wildcard');
const _react = /*#__PURE__*/ _interop_require_wildcard._(require('react'));
const _dom = require('../functions/dom.js');
const useResizeObserver = (onResize) => {
let resizeObserver = _react.useRef(void 0);
let elementRef = _react.useCallback(
(element) => {
if (!(0, _dom.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];
};