UNPKG

@fe6/water-pro

Version:

An enterprise-class UI design language and Vue-based implementation

91 lines (75 loc) 2.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _vue = require("vue"); var _vueTypes = _interopRequireDefault(require("../_util/vue-types")); var _resizeObserverPolyfill = _interopRequireDefault(require("resize-observer-polyfill")); var _propsUtil = require("../_util/props-util"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var DOMWrap = (0, _vue.defineComponent)({ name: 'DOMWrap', emits: ['update-dom'], setup: function setup(_, _ref) { var emit = _ref.emit; return { theUpdate: function theUpdate() { emit('update-dom'); } }; }, data: function data() { this.resizeObserver = null; this.mutationObserver = null; return { lastVisibleIndex: undefined }; }, mounted: function mounted() { var _this = this; this.$nextTick(function () { _this.theUpdate(); var menuUl = (0, _propsUtil.findDOMNode)(_this); if (!menuUl) { return; } _this.resizeObserver = new _resizeObserverPolyfill.default(function (entries) { entries.forEach(_this.theUpdate); }); [].slice.call(menuUl.children).concat(menuUl).forEach(function (el) { _this.resizeObserver.observe(el); }); if (typeof MutationObserver !== 'undefined') { _this.mutationObserver = new MutationObserver(function () { _this.resizeObserver.disconnect(); [].slice.call(menuUl.children).concat(menuUl).forEach(function (el) { _this.resizeObserver.observe(el); }); _this.theUpdate(); }); _this.mutationObserver.observe(menuUl, { attributes: false, childList: true, subTree: false }); } }); }, beforeUnmount: function beforeUnmount() { if (this.resizeObserver) { this.resizeObserver.disconnect(); } if (this.mutationObserver) { this.mutationObserver.disconnect(); } }, render: function render() { return (0, _vue.createVNode)("div", null, [(0, _propsUtil.getSlot)(this)]); } }); DOMWrap.props = { onUpdateDom: _vueTypes.default.func.def(function () {}) }; var _default = DOMWrap; exports.default = _default;