UNPKG

mosx

Version:

Multiview observable state management engine

90 lines 7.57 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SchemaSerializer = void 0; const mobx_1 = require("mobx"); const internal_1 = require("../internal"); const patchpack_1 = require("patchpack"); const _1 = require("."); class SchemaSerializer extends _1.Serializer { constructor(tracker) { super(tracker); tracker.privateMapValuePatch = true; } onCreate() { this.deleted = -1; this.patchPack = new patchpack_1.PatchPack(); const { _types } = this.patchPack.schema; // add mosx types to schema map internal_1.mx.$context.types.forEach((type) => { const meta = internal_1.mx.$context.meta.get(type.name); if (!meta) { return; } // this.patchPack.schema.addType(type.name, type.$mx.props.map((prop: any) => prop.key), type) const index = _types.length; _types.push({ name: type.name, props: type.$mx.props.map((prop) => prop.key), index, ref: type }); }); } onCreateNode(entry, target) { const schema = this.patchPack.schema; const parentId = entry.parent ? entry.parent.id : -1; const parent = schema.getNode(parentId); // if (parent && parent.type === MAP_NODE) { // parent.keys!.push(entry.path) // } const index = parent ? schema.getChildIndex(parent, entry.path) : -1; if (target instanceof mobx_1.ObservableMap) { // add map node to schema schema.createNode(entry.id, parent, -2, entry.path, index); // patch = schema.nodesAddMap(entry.id, parentId, entry.path, [...target.keys()]) } else if (target instanceof mobx_1.ObservableSet) { // TODO add ObservableSet } else if (Array.isArray(target)) { // add array node to schema schema.createNode(entry.id, parent, -1, entry.path, index); } else if (target instanceof internal_1.Mosx) { // add mosx node to schema const type = schema.typeByName(entry.meta.type); schema.createNode(entry.id, parent, type, entry.path, index); } } onDeleteNode(entry) { if (this.deleted === -1) { this.deleted = entry.id; const node = this.patchPack.schema.getNode(this.deleted); this.patchPack.schema.deleteNode(node); } } afterChange(change) { if (this.deleted >= 0) { this.deleted = -1; this.patchPack.schema.clearDeleted(); } } beforeChange(change, parent) { if ((0, mobx_1.isObservableMap)(change.object) && change.type === "add") { const node = this.patchPack.schema.getNode(parent.id); if (!node) { return; } node.keys.push(change.name); } } encodeSnapshot(value) { return this.patchPack.encodeState(value, true, false); } decodeSnapshot(buffer) { return this.patchPack.decodeState(buffer); } encodePatch(patch, entry) { return this.patchPack.encodePatch(patch, false); } decodePatch(buffer) { return this.patchPack.decodePatch(buffer); } } exports.SchemaSerializer = SchemaSerializer; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcmlhbGl6ZXIvc2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUFvRTtBQUVwRSwwQ0FBNkY7QUFDN0YseUNBQXFDO0FBQ3JDLHdCQUE4QjtBQUU5QixNQUFhLGdCQUFpQixTQUFRLGFBQVU7SUFJOUMsWUFBYSxPQUFvQjtRQUMvQixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUE7UUFFZCxPQUFPLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFBO0lBQ3JDLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQTtRQUVqQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUkscUJBQVMsRUFBRSxDQUFBO1FBRWhDLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQWEsQ0FBQTtRQUUvQywrQkFBK0I7UUFDL0IsYUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDakMsTUFBTSxJQUFJLEdBQUcsYUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUM1QyxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUFFLE9BQU07YUFBRTtZQUNyQiw4RkFBOEY7WUFDOUYsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQTtZQUMzQixNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFB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