mirror of
https://github.com/BookStackApp/BookStack.git
synced 2024-11-29 20:23:52 +08:00
900571ac9c
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.
53 lines
1.3 KiB
JavaScript
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,
|
|
];
|
|
} |