]> BookStack Code Mirror - bookstack/blob - resources/js/markdown/codemirror.ts
MD Editor: Added plaintext input implementation
[bookstack] / resources / js / markdown / codemirror.ts
1 import {provideKeyBindings} from './shortcuts';
2 import {EditorView, ViewUpdate} from "@codemirror/view";
3 import {MarkdownEditor} from "./index.mjs";
4 import {CodeModule} from "../global";
5 import {MarkdownEditorEventMap} from "./dom-handlers";
6
7 /**
8  * Initiate the codemirror instance for the Markdown editor.
9  */
10 export function init(editor: MarkdownEditor, Code: CodeModule, domEventHandlers: MarkdownEditorEventMap): EditorView {
11     function onViewUpdate(v: ViewUpdate) {
12         if (v.docChanged) {
13             editor.actions.updateAndRender();
14         }
15     }
16
17
18     const cm = Code.markdownEditor(
19         editor.config.inputEl,
20         onViewUpdate,
21         domEventHandlers,
22         provideKeyBindings(editor),
23     );
24
25     // Add editor view to the window for easy access/debugging.
26     // Not part of official API/Docs
27     // @ts-ignore
28     window.mdEditorView = cm;
29
30     return cm;
31 }