json-joy
Version:
Collection of libraries for building collaborative editing apps.
43 lines (42 loc) • 1.51 kB
JavaScript
"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;