drawDB/src/pages/editor.jsx

61 lines
1.7 KiB
React
Raw Normal View History

2023-09-19 20:48:14 +08:00
import React, { useState } from "react";
2023-09-19 20:46:48 +08:00
import Sidebar from "../components/sidebar";
import ControlPanel from "../components/control_panel";
2023-09-19 20:47:01 +08:00
import { DndProvider } from "react-dnd";
import { HTML5Backend } from "react-dnd-html5-backend";
2023-09-19 20:47:43 +08:00
import Canvas from "../components/canvas";
2023-09-19 20:47:01 +08:00
import EditorPanel from "../components/editor_panel";
2023-09-19 20:46:46 +08:00
export default function Editor(props) {
2023-09-19 20:46:56 +08:00
const [code, setCode] = useState("");
const [tables, setTables] = useState([]);
const [relationships, setRelationships] = useState([]);
2023-09-19 20:48:04 +08:00
const [areas, setAreas] = useState([]);
2023-09-19 20:48:30 +08:00
const [resize, setResize] = useState(false);
2023-09-19 20:48:32 +08:00
const [width, setWidth] = useState(340);
2023-09-19 20:48:31 +08:00
const dragHandler = (e) => {
if (!resize) return;
const w = e.clientX;
2023-09-19 20:48:32 +08:00
if (w > 340) setWidth(w);
2023-09-19 20:48:31 +08:00
};
2023-09-19 20:46:56 +08:00
2023-09-19 20:46:46 +08:00
return (
<>
2023-09-19 20:46:50 +08:00
<ControlPanel />
2023-09-19 20:48:31 +08:00
<div
className={`flex h-full`}
onMouseUp={() => setResize(false)}
onMouseMove={dragHandler}
>
<DndProvider backend={HTML5Backend}>
2023-09-19 20:47:06 +08:00
<EditorPanel
tables={tables}
setTables={setTables}
2023-09-19 20:47:06 +08:00
code={code}
setCode={setCode}
relationships={relationships}
setRelationships={setRelationships}
2023-09-19 20:48:04 +08:00
areas={areas}
setAreas={setAreas}
2023-09-19 20:48:30 +08:00
resize={resize}
setResize={setResize}
2023-09-19 20:48:31 +08:00
width={width}
2023-09-19 20:47:06 +08:00
/>
<Canvas
tables={tables}
setTables={setTables}
2023-09-19 20:47:06 +08:00
code={code}
setCode={setCode}
relationships={relationships}
setRelationships={setRelationships}
2023-09-19 20:48:04 +08:00
areas={areas}
setAreas={setAreas}
2023-09-19 20:47:06 +08:00
/>
</DndProvider>
2023-09-19 20:46:50 +08:00
<Sidebar />
2023-09-19 20:46:46 +08:00
</div>
</>
);
}