@ozen-ui/kit
Version:
React component library
26 lines (25 loc) • 1.03 kB
JavaScript
import { __read } from "tslib";
import { useEffect, useRef, useState } from 'react';
import { useCreateResizeObserver } from '../useCreateResizeObserver';
import { USE_RESIZE_OBSERVER_DEFAULT_STATE } from './constants';
// eslint-disable-next-line @typescript-eslint/no-explicit-any
export function useResizeObserver(options) {
var ref = useRef(null);
var _a = __read(useState(USE_RESIZE_OBSERVER_DEFAULT_STATE), 2), rect = _a[0], setRect = _a[1];
var observer = useCreateResizeObserver(function (entries) {
var entry = entries[0];
if (entry && ref.current) {
var newRect = entry.contentRect;
setRect(newRect);
}
});
useEffect(function () {
if (ref.current) {
observer === null || observer === void 0 ? void 0 : observer.observe(ref.current, options);
}
return function () {
observer === null || observer === void 0 ? void 0 : observer.disconnect();
};
}, [ref.current]);
return [ref, rect];
}