2 EditorView, keymap, drawSelection, highlightActiveLine, dropCursor,
3 rectangularSelection, lineNumbers, highlightActiveLineGutter,
4 } from '@codemirror/view';
5 import {bracketMatching} from '@codemirror/language';
7 defaultKeymap, history, historyKeymap, indentWithTab,
8 } from '@codemirror/commands';
9 import {Compartment, EditorState} from '@codemirror/state';
10 import {getTheme} from './themes';
13 * @param {Element} parentEl
14 * @return {(Extension[]|{extension: Extension}|readonly Extension[])[]}
16 function common(parentEl) {
23 rectangularSelection(),
28 * @returns {({extension: Extension}|readonly Extension[])[]}
30 function getDynamicActiveLineHighlighter() {
31 const highlightingCompartment = new Compartment();
35 effects: highlightingCompartment.reconfigure([
36 highlightActiveLineGutter(),
37 highlightActiveLine(),
43 effects: highlightingCompartment.reconfigure([]),
49 highlightingCompartment.of([]),
50 EditorView.domEventHandlers(domEvents),
55 * @param {Element} parentEl
58 export function viewerExtensions(parentEl) {
61 getDynamicActiveLineHighlighter(),
65 EditorState.readOnly.of(true),
70 * @param {Element} parentEl
73 export function editorExtensions(parentEl) {
76 highlightActiveLineGutter(),
77 highlightActiveLine(),
84 EditorView.lineWrapping,