@uiw/react-codemirror
Version:
CodeMirror component for React.
55 lines • 1.62 kB
JavaScript
import { indentWithTab } from '@codemirror/commands';
import { basicSetup } from '@uiw/codemirror-extensions-basic-setup';
import { EditorView, keymap, placeholder } from '@codemirror/view';
import { oneDark } from '@codemirror/theme-one-dark';
import { EditorState } from '@codemirror/state';
import { defaultLightThemeOption } from './theme/light';
export * from '@codemirror/theme-one-dark';
export * from './theme/light';
export var getDefaultExtensions = function getDefaultExtensions(optios) {
if (optios === void 0) {
optios = {};
}
var {
indentWithTab: defaultIndentWithTab = true,
editable = true,
readOnly = false,
theme = 'light',
placeholder: placeholderStr = '',
basicSetup: defaultBasicSetup = true
} = optios;
var getExtensions = [];
if (defaultIndentWithTab) {
getExtensions.unshift(keymap.of([indentWithTab]));
}
if (defaultBasicSetup) {
if (typeof defaultBasicSetup === 'boolean') {
getExtensions.unshift(basicSetup());
} else {
getExtensions.unshift(basicSetup(defaultBasicSetup));
}
}
if (placeholderStr) {
getExtensions.unshift(placeholder(placeholderStr));
}
switch (theme) {
case 'light':
getExtensions.push(defaultLightThemeOption);
break;
case 'dark':
getExtensions.push(oneDark);
break;
case 'none':
break;
default:
getExtensions.push(theme);
break;
}
if (editable === false) {
getExtensions.push(EditorView.editable.of(false));
}
if (readOnly) {
getExtensions.push(EditorState.readOnly.of(true));
}
return [...getExtensions];
};