collaborative-ui
Version:
React component library for building real-time collaborative editing applications.
49 lines (48 loc) • 2.18 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.log4 = exports.model4 = exports.log3 = exports.model3 = exports.log2 = exports.model2 = exports.log1 = exports.model1 = exports.model0 = exports.schema0 = void 0;
const json_crdt_1 = require("json-joy/lib/json-crdt");
const Log_1 = require("json-joy/lib/json-crdt/log/Log");
const decode_1 = require("json-joy/lib/json-crdt-patch/codec/compact/decode");
const schema_1 = require("../examples/Blogpost/schema");
exports.schema0 = json_crdt_1.s.obj({
id: json_crdt_1.s.con(''),
name: json_crdt_1.s.str('John Doe'),
age: json_crdt_1.s.val(json_crdt_1.s.con(42)),
tags: json_crdt_1.s.arr([json_crdt_1.s.str('tag1'), json_crdt_1.s.str('tag2')]),
});
exports.model0 = json_crdt_1.Model.create(exports.schema0);
exports.model1 = json_crdt_1.Model.create(exports.schema0);
exports.log1 = Log_1.Log.fromNewModel(exports.model1);
exports.log1.end.s.toApi().set({ id: json_crdt_1.s.con('xyz') });
exports.log1.end.api.flush();
exports.log1.end.s.age.toApi().set(35);
exports.log1.end.api.flush();
exports.log1.end.s.tags.toApi().del(0, 1);
exports.log1.end.api.flush();
exports.log1.end.s.name.toApi().del(0, 8);
exports.log1.end.s.name.toApi().ins(0, 'Va Da');
exports.log1.end.api.flush();
exports.log1.end.s.tags[0].toApi().del(0, 4);
exports.log1.end.s.tags[0].toApi().ins(0, 'retired');
exports.log1.end.api.flush();
exports.log1.end.api.onLocalChange.listen(() => {
exports.log1.end.api.flush();
});
exports.model2 = json_crdt_1.Model.create();
exports.log2 = Log_1.Log.fromNewModel(exports.model2);
exports.log2.end.api.autoFlush();
const patches = require('./friendsforever.log.json');
for (const encoded of patches) {
const patch = (0, decode_1.decode)(encoded);
exports.log2.end.applyPatch(patch);
}
const schema3 = json_crdt_1.s.obj({
list: json_crdt_1.s.arr([]),
});
exports.model3 = json_crdt_1.Model.create(schema3);
exports.log3 = Log_1.Log.fromNewModel(exports.model3);
exports.log3.end.api.autoFlush();
exports.model4 = json_crdt_1.Model.create(schema_1.BlogpostSchema);
exports.log4 = Log_1.Log.fromNewModel(exports.model4);
exports.log4.end.api.autoFlush();
;