@ozen-ui/kit
Version:
React component library
27 lines (26 loc) • 1.12 kB
JavaScript
import { useEffect, useMemo } from 'react';
import { isClient } from '../../constants/environment';
import { useStoredValue } from '../useStoredValue';
export function useCreateResizeObserver(onChange) {
var frameID = useStoredValue(0);
var onChangeStored = useStoredValue(function () { return onChange; });
onChangeStored.current = onChange;
var observer = useMemo(function () {
return isClient && typeof ResizeObserver !== 'undefined'
? new ResizeObserver(function (entries) {
cancelAnimationFrame(frameID.current);
frameID.current = requestAnimationFrame(function () {
var _a;
(_a = onChangeStored.current) === null || _a === void 0 ? void 0 : _a.call(onChangeStored, entries);
});
})
: null;
}, []);
useEffect(function () { return function () {
observer === null || observer === void 0 ? void 0 : observer.disconnect();
if (frameID.current) {
cancelAnimationFrame(frameID.current);
}
}; }, []);
return observer;
}