vue-coe-observer
Version:
92 lines (77 loc) • 2.02 kB
JavaScript
function _slicedToArray(arr, i) {
return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();
}
function _arrayWithHoles(arr) {
if (Array.isArray(arr)) return arr;
}
function _iterableToArrayLimit(arr, i) {
var _arr = [];
var _n = true;
var _d = false;
var _e = undefined;
try {
for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
_arr.push(_s.value);
if (i && _arr.length === i) break;
}
} catch (err) {
_d = true;
_e = err;
} finally {
try {
if (!_n && _i["return"] != null) _i["return"]();
} finally {
if (_d) throw _e;
}
}
return _arr;
}
function _nonIterableRest() {
throw new TypeError("Invalid attempt to destructure non-iterable instance");
}
var init = function init(callback) {
return new MutationObserver(callback);
};
var start = function start(state, target, config) {
return state.observe(target, config);
};
var stop = function stop(state) {
return state.disconnect();
};
var uuidv1 = require('uuid/v1');
var prototypes = {
init: init,
start: start,
stop: stop
};
var index = {
install: function install(Vue) {
Object.defineProperty(Vue.prototype, '$observer', {
get: function get() {
return Object.assign({}, prototypes);
}
});
Vue.mixin({
mounted: function mounted() {
var _this = this;
var observe = this.$options.observe;
if (!observe) return;
Object.entries(observe).forEach(function (_ref) {
var _ref2 = _slicedToArray(_ref, 2),
key = _ref2[0],
value = _ref2[1];
var uniqueKey = uuidv1();
Vue.set(_this.observers, key, uniqueKey);
_this.observers[key] = init(value['callback']);
start(_this.observers[key], value['target'](), value['config']);
});
},
data: function data() {
return {
observers: {}
};
}
});
}
};
export default index;