@ozen-ui/kit
Version:
React component library
30 lines (29 loc) • 1.32 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useCreateResizeObserver = useCreateResizeObserver;
var react_1 = require("react");
var environment_1 = require("../../constants/environment");
var useStoredValue_1 = require("../useStoredValue");
function useCreateResizeObserver(onChange) {
var frameID = (0, useStoredValue_1.useStoredValue)(0);
var onChangeStored = (0, useStoredValue_1.useStoredValue)(function () { return onChange; });
onChangeStored.current = onChange;
var observer = (0, react_1.useMemo)(function () {
return environment_1.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;
}, []);
(0, react_1.useEffect)(function () { return function () {
observer === null || observer === void 0 ? void 0 : observer.disconnect();
if (frameID.current) {
cancelAnimationFrame(frameID.current);
}
}; }, []);
return observer;
}