UNPKG

json-joy

Version:

Collection of libraries for building collaborative editing apps.

43 lines (42 loc) 1.51 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CompositionController = void 0; class CompositionController { constructor(opts) { this.opts = opts; this.composing = false; this.data = ''; } /** -------------------------------------------------- {@link UiLifeCycles} */ start() { const onStart = (event) => { this.composing = true; this.data = event.data; }; const onUpdate = (event) => { this.composing = true; this.data = event.data; }; const onEnd = (event) => { this.composing = false; this.data = ''; const text = event.data; if (text) this.opts.et.insert(text); }; const el = this.opts.source; el.addEventListener('compositionstart', onStart); el.addEventListener('compositionupdate', onUpdate); el.addEventListener('compositionend', onEnd); return () => { el.removeEventListener('compositionstart', onStart); el.removeEventListener('compositionupdate', onUpdate); el.removeEventListener('compositionend', onEnd); }; } /** ----------------------------------------------------- {@link Printable} */ toString(tab) { return `composition { composing: ${this.composing}, data: ${JSON.stringify(this.data)} }`; } } exports.CompositionController = CompositionController;