import {Markdown} from './markdown'; import {Display} from './display'; import {Actions} from './actions'; import {Settings} from './settings'; import {listen} from './common-events'; import {init as initCodemirror} from './codemirror'; /** * Initiate a new markdown editor instance. * @param {MarkdownEditorConfig} config * @returns {Promise} */ export async function init(config) { /** * @type {MarkdownEditor} */ const editor = { config, markdown: new Markdown(), settings: new Settings(config.settingInputs), }; editor.actions = new Actions(editor); editor.display = new Display(editor); editor.cm = await initCodemirror(editor); listen(editor); return editor; } /** * @typedef MarkdownEditorConfig * @property {String} pageId * @property {Element} container * @property {Element} displayEl * @property {HTMLTextAreaElement} inputEl * @property {String} drawioUrl * @property {HTMLInputElement[]} settingInputs * @property {Object} text */ /** * @typedef MarkdownEditor * @property {MarkdownEditorConfig} config * @property {Display} display * @property {Markdown} markdown * @property {Actions} actions * @property {EditorView} cm * @property {Settings} settings */