sass-site/source/assets/js/playground/editor-setup.ts
Jonny Gerig Meyer 300c873f06
lint
2023-06-22 15:44:26 -04:00

79 lines
1.7 KiB
TypeScript

/* eslint-disable node/no-extraneous-import */
import {
autocompletion,
closeBrackets,
closeBracketsKeymap,
completionKeymap,
} from '@codemirror/autocomplete';
import {
defaultKeymap,
history,
historyKeymap,
indentWithTab,
} from '@codemirror/commands';
import {css as langCss} from '@codemirror/lang-css';
import {sass as langSass} from '@codemirror/lang-sass';
import {
bracketMatching,
defaultHighlightStyle,
foldGutter,
foldKeymap,
indentOnInput,
syntaxHighlighting,
} from '@codemirror/language';
import {lintKeymap} from '@codemirror/lint';
import {EditorState} from '@codemirror/state';
import {
dropCursor,
highlightActiveLine,
highlightActiveLineGutter,
highlightSpecialChars,
keymap,
lineNumbers,
} from '@codemirror/view';
import {playgroundHighlightStyle} from './theme.js';
const editorSetup = (() => [
[
lineNumbers(),
highlightActiveLineGutter(),
highlightSpecialChars(),
history(),
foldGutter(),
dropCursor(),
indentOnInput(),
syntaxHighlighting(playgroundHighlightStyle),
syntaxHighlighting(defaultHighlightStyle, {fallback: true}),
bracketMatching(),
closeBrackets(),
autocompletion(),
highlightActiveLine(),
keymap.of([
...closeBracketsKeymap,
...defaultKeymap,
...historyKeymap,
...foldKeymap,
...completionKeymap,
...lintKeymap,
indentWithTab,
]),
],
langSass(),
])();
const outputSetup = (() => [
[
lineNumbers(),
highlightSpecialChars(),
foldGutter(),
syntaxHighlighting(playgroundHighlightStyle),
syntaxHighlighting(defaultHighlightStyle, {fallback: true}),
highlightActiveLine(),
EditorState.readOnly.of(true),
],
langCss(),
])();
export {editorSetup, outputSetup};