+
+ const eventHandlers = getMarkdownDomEventHandlers(editor);
+ const shortcuts = provideShortcutMap(editor);
+ const onInputChange = () => editor.actions.updateAndRender();
+
+ const initCodemirrorInput: () => Promise<MarkdownEditorInput> = async () => {
+ const codeMirror = await initCodemirror(config.inputEl, shortcuts, eventHandlers, onInputChange);
+ return new CodemirrorInput(codeMirror);
+ };
+ const initTextAreaInput: () => Promise<MarkdownEditorInput> = async () => {
+ return new TextareaInput(config.inputEl, shortcuts, eventHandlers, onInputChange);
+ };
+
+ const isPlainEditor = Boolean(editor.settings.get('plainEditor'));
+ editor.input = await (isPlainEditor ? initTextAreaInput() : initCodemirrorInput());
+ editor.settings.onChange('plainEditor', async (value) => {
+ const isPlain = Boolean(value);
+ const newInput = await (isPlain ? initTextAreaInput() : initCodemirrorInput());
+ editor.input.teardown();
+ editor.input = newInput;
+ });