json-joy
Version:
Collection of libraries for building collaborative editing apps.
39 lines (38 loc) • 1.29 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.PeritextSurfaceState = void 0;
const Log_1 = require("../../../json-crdt/log/Log");
const DomController_1 = require("../dom/DomController");
const sync_store_1 = require("../../../util/events/sync-store");
class PeritextSurfaceState {
constructor(events, el, plugins) {
this.events = events;
this.el = el;
this.plugins = plugins;
this.render = new sync_store_1.ValueSyncStore(0);
this.rerender = () => {
const { peritext, render } = this;
peritext.refresh();
render.next(render.value + 1);
};
const peritext = (this.peritext = events.txt);
const log = (this.log = Log_1.Log.from(peritext.model));
this.dom = new DomController_1.DomController({
events,
log,
source: el,
});
}
start() {
const { dom, rerender } = this;
const et = dom.et;
const stopDom = dom.start();
et.addEventListener('change', rerender);
return () => {
this.log.destroy();
stopDom();
et.removeEventListener('change', rerender);
};
}
}
exports.PeritextSurfaceState = PeritextSurfaceState;
;