typewriter-editor
Version:
A rich text editor using the Delta format with decorations and rendered with a tiny virtual dom
34 lines (33 loc) • 978 B
JavaScript
import { TextDocument } from '@typewriter/document';
import { Editor, EditorChangeEvent } from '../Editor';
import { renderChanges, render as renderWhole } from '../rendering/rendering';
export function rendering(editor) {
editor.on('change', onChange);
function render(what) {
if (!what) {
const { doc } = editor.modules.decorations || editor;
renderWhole(editor, doc);
}
else {
const { doc, old } = what;
if (old && doc) {
renderChanges(editor, old, doc);
}
else if (doc) {
renderWhole(editor, doc);
}
}
}
function onChange(event) {
const { doc, old } = editor.modules.decorations || event;
if (old.lines !== doc.lines) {
renderChanges(editor, old, doc);
}
}
return {
render,
destroy() {
editor.off('change', onChange);
},
};
}