UNPKG

@ozen-ui/kit

Version:

React component library

30 lines (29 loc) 1.32 kB
"use strict"; 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; }