import { React, useState } from "react"; import CodeMirror from "@uiw/react-codemirror"; import { createTheme } from "@uiw/codemirror-themes"; import { sql } from "@codemirror/lang-sql"; import { tags as t } from "@lezer/highlight"; import Shape from "./shape"; // import { Parser } from "node-sql-parser"; import { Tabs } from "@douyinfe/semi-ui"; import TableOverview from "./table_overview"; import ReferenceOverview from "./reference_overview"; import AreaOverview from "./area_overview"; // import { TableContext } from "../pages/editor"; const myTheme = createTheme({ dark: "light", settings: {}, styles: [ { tag: t.comment, color: "#8ab0ed" }, { tag: t.string, color: "#e68e29" }, { tag: t.number, color: "#e68e29" }, { tag: t.keyword, color: "#295be6" }, { tag: t.variableName, color: "#1a00db" }, { tag: t.typeName, color: "#295be6" }, { tag: t.tagName, color: "#008a02" }, ], }); const EditorPanel = (props) => { const [tab, setTab] = useState("1"); // const map = useRef(new Map()); // const {tables, setTables} = useContext(TableContext); const tabList = [ { tab: "Tables", itemKey: "1" }, { tab: "Relationships", itemKey: "2" }, { tab: "Subject Areas", itemKey: "3" }, { tab: "Shapes", itemKey: "4" }, { tab: "Editor", itemKey: "5" }, ]; const contentList = [ , , , , { props.setCode(e); }} />, ]; return ( { setTab(key); }} collapsible > {contentList[parseInt(tab) - 1]} { const blob = new Blob([props.code], { type: "text/plain;charset=utf-8", }); window.saveAs(blob, "src.txt"); }} > export src { // try { // const parser = new Parser(); // const ast = parser.astify(props.code); // console.log(ast); // ast.forEach((e) => { // e.table.forEach((t) => { // if (map.current.has(t.table)) { // return; // } // map.current.set(t.table, t); // const newTable = { // id: props.tables.length, // name: `table_${props.tables.length}`, // x: 0, // y: 0, // fields: [ // { // name: "id", // type: "UUID", // default: "", // check: "", // primary: true, // unique: true, // notNull: true, // increment: true, // comment: "", // }, // ], // comment: "", // indices: [], // color: defaultTableTheme, // }; // props.setTables((prev) => [...prev, newTable]); // }); // }); // } catch (e) { // alert("parsing error"); // } }} > parse props.setResize(true)} > ); }; export default EditorPanel;