UNPKG

@ozen-ui/kit

Version:

React component library

27 lines (26 loc) 1.12 kB
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; }