CodeMirror = async (doc = '', config = {}) => {
const extensions = config.extensions ?? []
const keymaps = config.keymaps ?? []
const { highlightSpecialChars, keymap, drawSelection, highlightActiveLine } = cmImports.view
const { Prec } = cmImports.state
const state = EditorState.create({
doc,
extensions: [
cmReactiveViewof,
cmImports.gutter.lineNumbers(),
highlightSpecialChars(),
cmImports.history.history(),
drawSelection(),
Prec.fallback(cmImports.highlight.defaultHighlightStyle),
highlightActiveLine(),
keymap.of([
...cmImports.commands.defaultKeymap,
...cmImports.search.searchKeymap,
...cmImports.history.historyKeymap,
...keymaps,
]),
...extensions,
],
})
const view = new EditorView({state})
const el = view.dom
el.value = view.state.doc.toString()
return el
}