From 58656f5e6664fa7a071c944244f100f3b0395f9a Mon Sep 17 00:00:00 2001 From: 1ilit Date: Tue, 19 Sep 2023 15:47:01 +0300 Subject: [PATCH] geneeral clean up --- src/components/{diagram.jsx => draw_area.jsx} | 5 +- src/components/editor_panel.jsx | 80 +++++++++++ src/components/shape.jsx | 41 ++++++ src/pages/editor.jsx | 130 +----------------- 4 files changed, 130 insertions(+), 126 deletions(-) rename src/components/{diagram.jsx => draw_area.jsx} (92%) create mode 100644 src/components/editor_panel.jsx create mode 100644 src/components/shape.jsx diff --git a/src/components/diagram.jsx b/src/components/draw_area.jsx similarity index 92% rename from src/components/diagram.jsx rename to src/components/draw_area.jsx index c6fec29..0cb9b7e 100644 --- a/src/components/diagram.jsx +++ b/src/components/draw_area.jsx @@ -2,10 +2,10 @@ import React, { useEffect, useRef } from "react"; import { dia, shapes } from "jointjs"; import { useDrop } from "react-dnd"; -function Diagram(props) { +export default function DrawArea(props) { const canvas = useRef(null); - const [{ isOver }, drop] = useDrop(() => ({ + const [, drop] = useDrop(() => ({ accept: "CARD", drop: (item, monitor) => { const offset = monitor.getClientOffset(); @@ -45,4 +45,3 @@ function Diagram(props) { ); } -export default Diagram; diff --git a/src/components/editor_panel.jsx b/src/components/editor_panel.jsx new file mode 100644 index 0000000..31312ef --- /dev/null +++ b/src/components/editor_panel.jsx @@ -0,0 +1,80 @@ +import { React, useState } from "react"; +import { ResizableBox } from "react-resizable"; +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 { shapes } from "jointjs"; +import Shape from "./shape"; +import "react-resizable/css/styles.css"; + +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" }, + ], +}); + +export default function EditorPanel(props) { + const [editor, setEditor] = useState(true); + + return ( + +
+ +
+ + {editor ? ( + {}} + /> + ) : ( + + )} +
+
+ ); +} diff --git a/src/components/shape.jsx b/src/components/shape.jsx new file mode 100644 index 0000000..dfd2ba3 --- /dev/null +++ b/src/components/shape.jsx @@ -0,0 +1,41 @@ +import {React} from "react" +import { useDrag } from "react-dnd"; + +export default function Shape (){ + const rectData = { + type: "rect", + position: { x: 100, y: 100 }, + size: { width: 100, height: 40 }, + attrs: { + body: { + fill: "#7039FF", + }, + label: { + text: "hi", + fill: "white", + }, + }, + }; + + const [{ isDragging }, drag] = useDrag(() => ({ + type: "CARD", + item: rectData, + collect: (monitor) => ({ + isDragging: !!monitor.isDragging(), + }), + })); + + return ( +
+ rect +
+ ); +}; diff --git a/src/pages/editor.jsx b/src/pages/editor.jsx index b39cf57..621eeb7 100644 --- a/src/pages/editor.jsx +++ b/src/pages/editor.jsx @@ -1,141 +1,25 @@ -import { React, useState, useEffect, useMemo } from "react"; -import Diagram from "../components/diagram"; +import { React, useState, useMemo } from "react"; import Header from "../components/header"; import Sidebar from "../components/sidebar"; -import { ResizableBox } from "react-resizable"; -import "react-resizable/css/styles.css"; import ControlPanel from "../components/control_panel"; -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 { DndProvider, useDrag } from "react-dnd"; +import { DndProvider } from "react-dnd"; import { HTML5Backend } from "react-dnd-html5-backend"; -import { dia, shapes } from "jointjs"; - -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 Shape = () => { - const rectData = { - type: "rect", - position: { x: 100, y: 100 }, - size: { width: 100, height: 40 }, - attrs: { - body: { - fill: "#7039FF", - }, - label: { - text: "hi", - fill: "white", - }, - }, - }; - - const [{ isDragging }, drag] = useDrag(() => ({ - type: "CARD", - item: rectData, - collect: (monitor) => ({ - isDragging: !!monitor.isDragging(), - }), - })); - - return ( -
- rect -
- ); -}; - -const Window = (props) => { - const [editor, setEditor] = useState(true); - - return ( - -
- -
- - {editor ? ( - {}} - /> - ) : ( - - )} -
-
- ); -}; +import { dia } from "jointjs"; +import DrawArea from "../components/draw_area"; +import EditorPanel from "../components/editor_panel"; export default function Editor(props) { const graph = useMemo(() => new dia.Graph(), []); const [code, setCode] = useState(""); - useEffect(() => {}, [graph]); - return ( <>
- - + +