feat: replace react-codemirror2 with @uiw/react-codemirror (#3577)

Signed-off-by: WindSpiritSR <simon343riley@gmail.com>
This commit is contained in:
WindSpiritSR
2025-02-14 00:10:33 +08:00
committed by GitHub
parent 9c39179849
commit 81b336b37a
11 changed files with 871 additions and 122 deletions

55
web/src/common/Editor.js Normal file
View File

@ -0,0 +1,55 @@
// Copyright 2025 The Casdoor Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
import React from "react";
import CodeMirror from "@uiw/react-codemirror";
import {materialDark} from "@uiw/codemirror-theme-material";
import {langs} from "@uiw/codemirror-extensions-langs";
export const Editor = (props) => {
const fillHeight = props.fillHeight ? {
height: "100%",
style: {height: "100%"},
} : {};
let extensions = [];
switch (props.lang) {
case "javascript":
case "js":
extensions = [langs.javascript()];
break;
case "html":
extensions = [langs.html()];
break;
case "css":
extensions = [langs.css()];
break;
case "xml":
extensions = [langs.xml()];
break;
}
return (
<CodeMirror
value={props.value}
height={props.height}
{...fillHeight}
readOnly={props.readOnly}
theme={props.dark ? materialDark : "light"}
extensions={extensions}
onChange={props.onChange}
/>
);
};
export default Editor;