+import {
+ EditorView, keymap, drawSelection, highlightActiveLine, dropCursor,
+ rectangularSelection, lineNumbers, highlightActiveLineGutter,
+} from '@codemirror/view';
+import {bracketMatching} from '@codemirror/language';
+import {
+ defaultKeymap, history, historyKeymap, indentWithTab,
+} from '@codemirror/commands';
+import {EditorState} from '@codemirror/state';
+import {getTheme} from './themes';
-import {keymap, highlightSpecialChars, drawSelection, highlightActiveLine, dropCursor,
- rectangularSelection, lineNumbers, highlightActiveLineGutter} from "@codemirror/view"
-import {defaultHighlightStyle, syntaxHighlighting, bracketMatching,
- foldKeymap} from "@codemirror/language"
-import {defaultKeymap, history, historyKeymap} from "@codemirror/commands"
-import {EditorState} from "@codemirror/state"
-
-export function viewer() {
+/**
+ * @param {Element} parentEl
+ * @return {(Extension[]|{extension: Extension}|readonly Extension[])[]}
+ */
+function common(parentEl) {
return [
+ getTheme(parentEl),
lineNumbers(),
highlightActiveLineGutter(),
- highlightSpecialChars(),
- history(),
drawSelection(),
dropCursor(),
- syntaxHighlighting(defaultHighlightStyle, {fallback: true}),
bracketMatching(),
rectangularSelection(),
highlightActiveLine(),
+ ];
+}
+
+/**
+ * @param {Element} parentEl
+ * @return {*[]}
+ */
+export function viewerExtensions(parentEl) {
+ return [
+ ...common(parentEl),
keymap.of([
...defaultKeymap,
- ...historyKeymap,
- ...foldKeymap,
]),
EditorState.readOnly.of(true),
];
-}
\ No newline at end of file
+}
+
+/**
+ * @param {Element} parentEl
+ * @return {*[]}
+ */
+export function editorExtensions(parentEl) {
+ return [
+ ...common(parentEl),
+ history(),
+ keymap.of([
+ ...defaultKeymap,
+ ...historyKeymap,
+ indentWithTab,
+ ]),
+ EditorView.lineWrapping,
+ ];
+}