import React, { useState } from "react";
import { Controlled as CodeMirror } from "react-codemirror2";
import "codemirror/lib/codemirror.js";
import "codemirror/lib/codemirror.css";
import "codemirror/theme/mdn-like.css";
import "codemirror/mode/sql/sql.js";
import "codemirror/mode/css/css";
import "codemirror/addon/hint/show-hint.css";
import "codemirror/addon/hint/show-hint.js";
import "codemirror/addon/hint/sql-hint";
import "codemirror/addon/scroll/simplescrollbars";
import "codemirror/addon/scroll/simplescrollbars.css";
import "codemirror/addon/edit/matchbrackets";
import "codemirror/addon/edit/closebrackets";
import "codemirror/addon/selection/active-line";
import "codemirror/addon/fold/foldgutter.css";
import "codemirror/addon/fold/foldcode.js";
import "codemirror/addon/fold/foldgutter.js";
import "codemirror/addon/fold/brace-fold.js";
import { sql } from "./const";
function CodeEditer() {
const [codeData, setCodeData] = useState(sql);
return (
<div>
<CodeMirror
value={codeData}
options={{
mode: "sql", //定义mode
theme: "mdn-like", //选中的theme
autofocus: true, //自动获取焦点
styleActiveLine: true, //光标代码高亮
lineNumbers: true, //显示行号
smartIndent: true, //自动缩进
//start-设置支持代码折叠
lineWrapping: true,
foldGutter: true,
gutters: ["CodeMirror-linenumbers", "CodeMirror-foldgutter"], //end
extraKeys: {
Tab: "autocomplete",
"Ctrl-Z": function (editor) {
editor.undo();
}, //undo
},
matchBrackets: true, //括号匹配,光标旁边的括号都高亮显示
autoCloseBrackets: true, //键入时将自动关闭()[]{}''""
scrollbarStyle: "overlay",
// readOnly: true,
}}
onChange={(edit: any, data: any, value) => {
console.log(edit, data, value);
}}
onBeforeChange={(e, a, d) => {
setCodeData(d);
}}
//在失去焦点的时候触发,这个时候放数据最好
onBlur={() => {}}
/>
</div>
);
}
export default CodeEditer;