codeMirror.tsx
1.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import 'codemirror/lib/codemirror.css';
import 'codemirror/lib/codemirror.js';
import 'codemirror/theme/xq-light.css';
import React from 'react';
import { Controlled as CodeMirror } from 'react-codemirror2';
// import 'codemirror/mode/css/css';
import 'codemirror/addon/fold/brace-fold.js';
import 'codemirror/addon/fold/comment-fold.js';
import 'codemirror/addon/fold/foldcode.js';
import 'codemirror/addon/fold/foldgutter.css';
import 'codemirror/addon/fold/foldgutter.js';
import 'codemirror/addon/scroll/simplescrollbars.css';
import 'codemirror/addon/scroll/simplescrollbars.js';
import 'codemirror/addon/selection/active-line';
import 'codemirror/mode/javascript/javascript';
type CodeMirrorProps = {
value: any;
onChange: (val: any) => void;
};
/**
* 代码块
*
* @param value
* @param onChange
* @constructor
*/
const CodeMirrorSetting: React.FC<CodeMirrorProps> = ({ value, onChange }) => {
return (
<CodeMirror
value={value}
onBeforeChange={(editor, data, val) => {
onChange(val);
}}
options={{
// lineNumbers: true, //显示行号
// mode: 'javascript', //语言
mode: 'application/json',
autofocus: false, //自动获取焦点
styleActiveLine: true, //光标代码高亮
theme: 'xq-light', //主题
// scrollbarStyle: 'overlay',
smartIndent: true,
lineWrapping: false, //代码自动换行
foldGutter: true,
autoCloseBrackets: true,
gutters: ['CodeMirror-linenumbers', 'CodeMirrorfoldgutter'], //end
lint: true,
indentWithTabs: true,
}}
/>
);
};
export default CodeMirrorSetting;