X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/6b4b500a3313f30c92a8a6ffa1d8427fdf4d2aaa..HEAD:/resources/js/markdown/index.mts diff --git a/resources/js/markdown/index.mts b/resources/js/markdown/index.mts index 7edf80d4f..0a6e974b7 100644 --- a/resources/js/markdown/index.mts +++ b/resources/js/markdown/index.mts @@ -4,7 +4,6 @@ import {Actions} from './actions'; import {Settings} from './settings'; import {listenToCommonEvents} from './common-events'; import {init as initCodemirror} from './codemirror'; -import {CodeModule} from "../global"; import {MarkdownEditorInput} from "./inputs/interface"; import {CodemirrorInput} from "./inputs/codemirror"; import {TextareaInput} from "./inputs/textarea"; @@ -34,8 +33,6 @@ export interface MarkdownEditor { * Initiate a new Markdown editor instance. */ export async function init(config: MarkdownEditorConfig): Promise { - // const Code = await window.importVersioned('code') as CodeModule; - const editor: MarkdownEditor = { config, markdown: new Markdown(), @@ -46,16 +43,25 @@ export async function init(config: MarkdownEditorConfig): Promise editor.actions.updateAndRender(); + + const initCodemirrorInput: () => Promise = async () => { + const codeMirror = await initCodemirror(config.inputEl, shortcuts, eventHandlers, onInputChange); + return new CodemirrorInput(codeMirror); + }; + const initTextAreaInput: () => Promise = async () => { + return new TextareaInput(config.inputEl, shortcuts, eventHandlers, onInputChange); + }; - // window.devinput = editor.input; + 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; + }); listenToCommonEvents(editor);