]> BookStack Code Mirror - bookstack/blob - resources/js/markdown/index.mts
MD Editor: Starting conversion to typescript
[bookstack] / resources / js / markdown / index.mts
1 import {Markdown} from './markdown';
2 import {Display} from './display';
3 import {Actions} from './actions';
4 import {Settings} from './settings';
5 import {listenToCommonEvents} from './common-events';
6 import {init as initCodemirror} from './codemirror';
7 import {EditorView} from "@codemirror/view";
8
9 export interface MarkdownEditorConfig {
10     pageId: string;
11     container: Element;
12     displayEl: Element;
13     inputEl: HTMLTextAreaElement;
14     drawioUrl: string;
15     settingInputs: HTMLInputElement[];
16     text: Record<string, string>;
17 }
18
19 export interface MarkdownEditor {
20     config: MarkdownEditorConfig;
21     display: Display;
22     markdown: Markdown;
23     actions: Actions;
24     cm: EditorView;
25     settings: Settings;
26 }
27
28 /**
29  * Initiate a new Markdown editor instance.
30  * @param {MarkdownEditorConfig} config
31  * @returns {Promise<MarkdownEditor>}
32  */
33 export async function init(config) {
34     /**
35      * @type {MarkdownEditor}
36      */
37     const editor: MarkdownEditor = {
38         config,
39         markdown: new Markdown(),
40         settings: new Settings(config.settingInputs),
41     };
42
43     editor.actions = new Actions(editor);
44     editor.display = new Display(editor);
45     editor.cm = await initCodemirror(editor);
46
47     listenToCommonEvents(editor);
48
49     return editor;
50 }
51
52