UNPKG

@vue-widget/hooks

Version:

hooks from react to vue

46 lines (45 loc) 1.48 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.useSize = useSize; var _resizeObserverPolyfill = _interopRequireDefault(require("resize-observer-polyfill")); var _domTarget = require("../utils/domTarget"); var _useState = require("../useState"); var _vue = require("vue"); var _useEffectWithTarget = _interopRequireDefault(require("../utils/useEffectWithTarget")); function useSize(target) { var _target = (0, _vue.toRef)(target); var _a = (0, _useState.useState)(function () { var el = (0, _domTarget.getTargetElement)((0, _vue.unref)(target)); return el ? { width: el.clientWidth, height: el.clientHeight } : undefined; }), state = _a[0], setState = _a[1]; (0, _useEffectWithTarget["default"])(function () { var el = (0, _domTarget.getTargetElement)((0, _vue.unref)(target)); if (!el) { return; } var resizeObserver = new _resizeObserverPolyfill["default"](function (entries) { entries.forEach(function (entry) { var _a = entry.target, clientWidth = _a.clientWidth, clientHeight = _a.clientHeight; setState({ width: clientWidth, height: clientHeight }); }); }); resizeObserver.observe(el); return function () { resizeObserver.disconnect(); }; }, [], _target); return state; }