UNPKG

json-joy

Version:

Collection of libraries for building collaborative editing apps.

39 lines (38 loc) 1.29 kB
"use strict"; 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;