json-joy
Version:
Collection of libraries for building collaborative editing apps.
37 lines (36 loc) • 1.28 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.PeritextSurfaceState = void 0;
const rxjs_1 = require("rxjs");
const Log_1 = require("../../../json-crdt/log/Log");
const DomController_1 = require("../dom/DomController");
class PeritextSurfaceState {
constructor(events, plugins) {
this.events = events;
this.plugins = plugins;
this.render$ = new rxjs_1.BehaviorSubject(0);
/** Overlay portal container element. */
this.portalEl = void 0;
this.rerender = () => {
const { peritext, render$ } = this;
peritext.refresh();
render$.next(render$.getValue() + 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);
}
start() {
const { dom, rerender, el } = this;
dom.el = el;
const stopDom = dom.start();
const et = dom.et;
et.addEventListener('change', rerender);
return () => {
this.log.destroy();
stopDom();
et.removeEventListener('change', rerender);
};
}
}
exports.PeritextSurfaceState = PeritextSurfaceState;