cmView = {
const { EditorState } = CodeMirrorImports.state
const { EditorView, keymap, drawSelection, highlightSpecialChars, highlightActiveLine } = CodeMirrorImports.view
const { history, redo, redoSelection, undo, undoSelection } = CodeMirrorImports.history
const { foldCode, unfoldCode, foldGutter } = CodeMirrorImports.fold
const { lineNumbers } = CodeMirrorImports.gutter
const { baseKeymap, indentSelection } = CodeMirrorImports.commands
const { bracketMatching } = CodeMirrorImports.matchbrackets
const { closeBrackets } = CodeMirrorImports.closebrackets
const { rectangularSelection } = CodeMirrorImports['rectangular-selection']
const { search, defaultSearchKeymap } = CodeMirrorImports.search
const { indentOnInput } = CodeMirrorImports.language
const { autocompletion, startCompletion } = CodeMirrorImports['autocomplete']
const { defaultHighlightStyle } = CodeMirrorImports.highlight
const exts = [
lineNumbers(),
highlightSpecialChars(),
history(),
foldGutter(),
drawSelection(),
EditorState.allowMultipleSelections.of(true),
indentOnInput(),
languageHighlighter,
defaultHighlightStyle,
bracketMatching(),
closeBrackets(),
autocompletion(),
highlightActiveLine(),
cmTheme,
keymap.of({
"Mod-z": undo,
"Mod-Shift-z": redo,
"Mod-u": view => undoSelection(view) || true,
[isMac ? "Mod-Shift-u" : "Alt-u"]: redoSelection,
"Ctrl-y": isMac ? undefined : redo,
"Shift-Tab": indentSelection,
"Mod-Alt-[": foldCode,
"Mod-Alt-]": unfoldCode,
"Mod-Space": startCompletion,
}),
keymap.of(baseKeymap),
]
console.log(exts)
const state = EditorState.create({
doc: initialContent,
extensions: exts,
})
const view = new EditorView({state})
return view
}