]> BookStack Code Mirror - bookstack/blob - resources/js/code/setups.js
Added cm6 strategy for splitting and dyn. loading langs
[bookstack] / resources / js / code / setups.js
1
2 import {EditorView, keymap, highlightSpecialChars, drawSelection, highlightActiveLine, dropCursor,
3     rectangularSelection, lineNumbers, highlightActiveLineGutter} from "@codemirror/view"
4 import {syntaxHighlighting, bracketMatching} from "@codemirror/language"
5 import {defaultKeymap, history, historyKeymap} from "@codemirror/commands"
6 import {EditorState} from "@codemirror/state"
7
8 import {defaultLight} from "./themes";
9
10 export function viewer() {
11     return [
12         lineNumbers(),
13         highlightActiveLineGutter(),
14         highlightSpecialChars(),
15         history(),
16         drawSelection(),
17         dropCursor(),
18         syntaxHighlighting(defaultLight, {fallback: true}),
19         bracketMatching(),
20         rectangularSelection(),
21         highlightActiveLine(),
22         keymap.of([
23             ...defaultKeymap,
24             ...historyKeymap,
25         ]),
26         EditorState.readOnly.of(true),
27     ];
28 }
29
30 export function editor(language) {
31     return [
32         lineNumbers(),
33         highlightActiveLineGutter(),
34         highlightSpecialChars(),
35         history(),
36         drawSelection(),
37         dropCursor(),
38         syntaxHighlighting(defaultLight, {fallback: true}),
39         bracketMatching(),
40         rectangularSelection(),
41         highlightActiveLine(),
42         keymap.of([
43             ...defaultKeymap,
44             ...historyKeymap,
45         ]),
46         EditorView.lineWrapping,
47     ];
48 }