@fe6/water-pro
Version:
An enterprise-class UI design language and Vue-based implementation
91 lines (75 loc) • 2.3 kB
JavaScript
;
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;