UNPKG

mosx

Version:

Multiview observable state management engine

93 lines 6.21 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __rest = (this && this.__rest) || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.MosxAdmin = void 0; const mobx_1 = require("mobx"); class MosxAdmin { constructor(target, parentNode) { this.target = target; this.parent = null; this.children = new WeakSet(); this.$tags = new Set(); this.$tracker = null; this.disposers = []; this.setParent(parentNode || null); // observe tags change const tagsDispose = (0, mobx_1.computed)(() => this.tags).observe((change) => { if (this.tracker) { const { object: obj } = change, rest = __rest(change, ["object"]); this.tracker.tagChange(target, rest); } }); this.disposers.push(tagsDispose); } get tracker() { return this.$tracker || this.parent && this.parent.tracker; } set tracker(tracker) { this.$tracker = tracker; } addTag(tags) { if (!Array.isArray(tags)) { tags = [tags]; } tags.forEach((tag) => this.$tags.add(tag)); this.tracker && this.tracker.tagChanged(); } deleteTag(tag) { this.$tags.delete(tag); this.tracker && this.tracker.tagChanged(); } get tags() { return new Set([...this.$tags, ...(this.parent && this.parent.tags || [])]); } setParent(parentNode) { if (parentNode && parentNode === this.parent) { return; } // remove object from old parent node if (this.parent) { this.children.delete(this.target); } // add object to new parent node if (parentNode) { parentNode.children.add(this.target); } // save owner this.parent = parentNode || null; this.tracker && this.tracker.tagChanged(); } } __decorate([ mobx_1.observable ], MosxAdmin.prototype, "parent", void 0); __decorate([ mobx_1.observable ], MosxAdmin.prototype, "$tags", void 0); __decorate([ mobx_1.action ], MosxAdmin.prototype, "addTag", null); __decorate([ mobx_1.action ], MosxAdmin.prototype, "deleteTag", null); __decorate([ mobx_1.computed ], MosxAdmin.prototype, "tags", null); exports.MosxAdmin = MosxAdmin; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWRtaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQkFBMkQ7QUFTM0QsTUFBYSxTQUFTO0lBbUJwQixZQUFtQixNQUFXLEVBQUUsVUFBc0I7UUFBbkMsV0FBTSxHQUFOLE1BQU0sQ0FBSztRQWpCdkIsV0FBTSxHQUFxQixJQUFJLENBQUE7UUFDL0IsYUFBUSxHQUFpQixJQUFJLE9BQU8sRUFBTyxDQUFBO1FBRzFDLFVBQUssR0FBZ0IsSUFBSSxHQUFHLEVBQVUsQ0FBQTtRQUN0QyxhQUFRLEdBQTRCLElBQUksQ0FBQTtRQUV6QyxjQUFTLEdBQWEsRUFBRSxDQUFBO1FBVzdCLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxDQUFBO1FBRWxDLHNCQUFzQjtRQUN0QixNQUFNLFdBQVcsR0FBRyxJQUFBLGVBQVEsRUFBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDL0QsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNoQixNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsS0FBYyxNQUFNLEVBQWYsSUFBSSxVQUFLLE1BQU0sRUFBakMsVUFBd0IsQ0FBUyxDQUFBO2dCQUN2QyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUE7YUFDckM7UUFDSCxDQUFDLENBQUMsQ0FBQTtRQUVGLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBQ2xDLENBQUM7SUFwQkQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUE7SUFDNUQsQ0FBQztJQUVELElBQUksT0FBTyxDQUFDLE9BQTJCO1FBQ3JDLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFBO0lBQ3pCLENBQUM7SUFpQk0sTUFBTSxDQUFDLElBQXVCO1FBQ25DLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3hCLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO1NBQ2Q7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO1FBQzFDLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQTtJQUMzQyxDQUFDO0lBR00sU0FBUyxDQUFDLEdBQVc7UUFDMUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDdEIsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFBO0lBQzNDLENBQUM7SUFHRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUM3RSxDQUFDO0lBRU0sU0FBUyxDQUFDLFVBQTZCO1FBQzVDLElBQUksVUFBVSxJQUFJLFVBQVUsS0FBSyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQUUsT0FBTTtTQUFFO1FBRXhELHFDQUFxQztRQUNyQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDZixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7U0FDbEM7UUFFRCxnQ0FBZ0M7UUFDaEMsSUFBSSxVQUFVLEVBQUU7WUFDZCxVQUFVLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7U0FDckM7UUFFRCxhQUFhO1FBQ2IsSUFBSSxDQUFDLE1BQU0sR0FBRyxVQUFVLElBQUksSUFBSSxDQUFBO1FBQ2hDLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQTtJQUMzQyxDQUFDO0NBQ0Y7QUFwRUM7SUFEQyxpQkFBVTt5Q0FDMkI7QUFJdEM7SUFEQyxpQkFBVTt3Q0FDbUM7QUE0QjlDO0lBREMsYUFBTTt1Q0FPTjtBQUdEO0lBREMsYUFBTTswQ0FJTjtBQUdEO0lBREMsZUFBUTtxQ0FHUjtBQW5ESCw4QkFzRUMifQ==