BookStack/resources/js/code/setups.js
Dan Brown 900571ac9c
CM6: Updated for popup editor, added new interface
New simple interface added for abstraction of CM editor in simple
use-cases, just to provide common actions like get/set content, focus
and set mode.
2023-04-17 13:24:29 +01:00

53 lines
1.3 KiB
JavaScript

import {EditorView, keymap, drawSelection, highlightActiveLine, dropCursor,
rectangularSelection, lineNumbers, highlightActiveLineGutter} from "@codemirror/view"
import {bracketMatching} from "@codemirror/language"
import {defaultKeymap, history, historyKeymap} from "@codemirror/commands"
import {EditorState} from "@codemirror/state"
import {getTheme} from "./themes";
/**
* @param {Element} parentEl
* @return {(Extension[]|{extension: Extension}|readonly Extension[])[]}
*/
function common(parentEl) {
return [
getTheme(parentEl),
lineNumbers(),
highlightActiveLineGutter(),
drawSelection(),
dropCursor(),
bracketMatching(),
rectangularSelection(),
highlightActiveLine(),
];
}
/**
* @param {Element} parentEl
* @return {*[]}
*/
export function viewerExtensions(parentEl) {
return [
...common(parentEl),
keymap.of([
...defaultKeymap,
]),
EditorState.readOnly.of(true),
];
}
/**
* @param {Element} parentEl
* @return {*[]}
*/
export function editorExtensions(parentEl) {
return [
...common(parentEl),
history(),
keymap.of([
...defaultKeymap,
...historyKeymap,
]),
EditorView.lineWrapping,
];
}