UNPKG

ahooks

Version:
47 lines (46 loc) 1.74 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _resizeObserverPolyfill = _interopRequireDefault(require("resize-observer-polyfill")); var _useRafState3 = _interopRequireDefault(require("../useRafState")); var _domTarget = require("../utils/domTarget"); var _useIsomorphicLayoutEffectWithTarget = _interopRequireDefault(require("../utils/useIsomorphicLayoutEffectWithTarget")); function useSize(target) { var _useRafState = (0, _useRafState3["default"])(function () { var el = (0, _domTarget.getTargetElement)(target); return el ? { width: el.clientWidth, height: el.clientHeight } : undefined; }), _useRafState2 = (0, _slicedToArray2["default"])(_useRafState, 2), state = _useRafState2[0], setState = _useRafState2[1]; (0, _useIsomorphicLayoutEffectWithTarget["default"])(function () { var el = (0, _domTarget.getTargetElement)(target); if (!el) { return; } var resizeObserver = new _resizeObserverPolyfill["default"](function (entries) { entries.forEach(function (entry) { var _entry$target = entry.target, clientWidth = _entry$target.clientWidth, clientHeight = _entry$target.clientHeight; setState({ width: clientWidth, height: clientHeight }); }); }); resizeObserver.observe(el); return function () { resizeObserver.disconnect(); }; }, [], target); return state; } var _default = exports["default"] = useSize;