json-joy
Version:
Collection of libraries for building collaborative editing apps.
49 lines (48 loc) • 1.73 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.RichTextController = void 0;
const peritext_1 = require("../../../json-crdt-extensions/peritext");
class RichTextController {
constructor(opts) {
this.opts = opts;
}
/** -------------------------------------------------- {@link UiLifeCycles} */
start() {
const el = this.opts.source;
const onKeyDown = (event) => {
const key = event.key;
if (event.isComposing || key === 'Dead')
return;
const et = this.opts.et;
if (event.metaKey || event.ctrlKey) {
switch (key) {
case 'b':
event.preventDefault();
et.format(peritext_1.CommonSliceType.b);
return;
case 'i':
event.preventDefault();
et.format(peritext_1.CommonSliceType.i);
return;
case 'u':
event.preventDefault();
et.format(peritext_1.CommonSliceType.u);
return;
}
}
if (event.metaKey && event.shiftKey) {
switch (key) {
case 'x':
event.preventDefault();
et.format(peritext_1.CommonSliceType.s);
return;
}
}
};
el.addEventListener('keydown', onKeyDown);
return () => {
el.removeEventListener('keydown', onKeyDown);
};
}
}
exports.RichTextController = RichTextController;
;