UNPKG

mosx

Version:

Multiview observable state management engine

60 lines 6.78 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.mx = void 0; const mobx_1 = require("mobx"); const context_1 = require("./context"); const mosx_1 = require("./mosx"); const mosxPropertyDecorator = (type = "any", hidden = false, getter = false) => { // tslint:disable-next-line: ban-types return (target, key, descriptor) => { if (typeof key === "string") { const constructor = target.constructor; // save ptoperty to schema const params = { key, type, hidden, getter }; if (!exports.mx.$context.has(constructor)) { exports.mx.$context.add(constructor); const parent = constructor.$mx || { props: [] }; constructor.$mx = { props: [...parent.props], hidden: parent.hidden }; } constructor.$mx.props.push(params); return getter ? (0, mobx_1.computed)(target, key, descriptor) : (0, mobx_1.observable)(target, key); } }; }; const propertyFactory = (hidden = false, getter = false) => ({ string: mosxPropertyDecorator("string", hidden, getter), number: mosxPropertyDecorator("number", hidden, getter), boolean: mosxPropertyDecorator("boolean", hidden, getter), object: (mType) => mosxPropertyDecorator(mType, hidden, getter), array: (mType) => mosxPropertyDecorator([mType], hidden, getter), map: (mType) => mosxPropertyDecorator({ map: mType }, hidden, getter), set: (mType) => mosxPropertyDecorator({ set: mType }, hidden, getter), }); const computedFactory = mosxPropertyDecorator("any", false, true); computedFactory.private = Object.assign(mosxPropertyDecorator("any", true, true), propertyFactory(true, true)); // tslint:disable-next-line: ban-types const mosxClassDecorator = (hidden = false) => (constructor) => { const _constructor = constructor; if (!exports.mx.$context.has(_constructor)) { exports.mx.$context.add(_constructor); _constructor.$mx = Object.assign({}, _constructor.$mx || { props: [] }); } _constructor.$mx.hidden = hidden; return class extends _constructor { constructor(...args) { super(...args); if (!(this instanceof mosx_1.Mosx)) { mosx_1.Mosx.inject(this); } } }; }; exports.mx = Object.assign(mosxPropertyDecorator(), propertyFactory()); exports.mx.private = Object.assign(mosxPropertyDecorator("any", true), propertyFactory(true)); exports.mx.computed = Object.assign(computedFactory, propertyFactory(false, true)); exports.mx.observable = mobx_1.observable; exports.mx.Object = Object.assign(mosxClassDecorator(false), { private: mosxClassDecorator(true), }); exports.mx.$context = new context_1.MosxContext(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kZWNvcmF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUFzRDtBQUN0RCx1Q0FBdUM7QUFDdkMsaUNBQTZCO0FBaUQ3QixNQUFNLHFCQUFxQixHQUFHLENBQUMsT0FBdUIsS0FBSyxFQUFFLE1BQU0sR0FBRyxLQUFLLEVBQUUsTUFBTSxHQUFHLEtBQUssRUFBcUIsRUFBRTtJQUNoSCxzQ0FBc0M7SUFDdEMsT0FBTyxDQUFDLE1BQWMsRUFBRSxHQUFvQixFQUFFLFVBQStCLEVBQUUsRUFBRTtRQUMvRSxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRTtZQUMzQixNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBa0IsQ0FBQTtZQUU3QywwQkFBMEI7WUFDMUIsTUFBTSxNQUFNLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQTtZQUM1QyxJQUFJLENBQUMsVUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUU7Z0JBQ2pDLFVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFBO2dCQUM1QixNQUFNLE1BQU0sR0FBRyxXQUFXLENBQUMsR0FBRyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFBO2dCQUMvQyxXQUFXLENBQUMsR0FBRyxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQTthQUN0RTtZQUNELFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtZQUNsQyxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBQSxlQUFRLEVBQUMsTUFBTSxFQUFFLEdBQUcsRUFB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