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";
10 import {TextareaInput} from "./inputs/textarea";
11 import {provideShortcutMap} from "./shortcuts";
12 import {getMarkdownDomEventHandlers} from "./dom-handlers";
14 export interface MarkdownEditorConfig {
17 displayEl: HTMLIFrameElement;
18 inputEl: HTMLTextAreaElement;
20 settingInputs: HTMLInputElement[];
21 text: Record<string, string>;
24 export interface MarkdownEditor {
25 config: MarkdownEditorConfig;
29 input: MarkdownEditorInput;
34 * Initiate a new Markdown editor instance.
36 export async function init(config: MarkdownEditorConfig): Promise<MarkdownEditor> {
37 // const Code = await window.importVersioned('code') as CodeModule;
39 const editor: MarkdownEditor = {
41 markdown: new Markdown(),
42 settings: new Settings(config.settingInputs),
45 editor.actions = new Actions(editor);
46 editor.display = new Display(editor);
48 const eventHandlers = getMarkdownDomEventHandlers(editor);
50 // const codeMirror = initCodemirror(editor, Code);
51 // editor.input = new CodemirrorInput(codeMirror);
52 editor.input = new TextareaInput(
54 provideShortcutMap(editor),
58 // window.devinput = editor.input;
60 listenToCommonEvents(editor);