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 {CodeModule} from "../global";
8 import {MarkdownEditorInput} from "./inputs/interface";
9 import {CodemirrorInput} from "./inputs/codemirror";
11 export interface MarkdownEditorConfig {
14 displayEl: HTMLIFrameElement;
15 inputEl: HTMLTextAreaElement;
17 settingInputs: HTMLInputElement[];
18 text: Record<string, string>;
21 export interface MarkdownEditor {
22 config: MarkdownEditorConfig;
26 input: MarkdownEditorInput;
31 * Initiate a new Markdown editor instance.
33 export async function init(config: MarkdownEditorConfig): Promise<MarkdownEditor> {
34 const Code = await window.importVersioned('code') as CodeModule;
36 const editor: MarkdownEditor = {
38 markdown: new Markdown(),
39 settings: new Settings(config.settingInputs),
42 editor.actions = new Actions(editor);
43 editor.display = new Display(editor);
45 const codeMirror = initCodemirror(editor, Code);
46 editor.input = new CodemirrorInput(codeMirror);
48 listenToCommonEvents(editor);