From 4030debcfb5027db681d66f064714e4b09892f47 Mon Sep 17 00:00:00 2001 From: paul Date: Sat, 14 Sep 2024 16:03:26 +0530 Subject: [PATCH] working on toolbar section --- src/App.js | 13 +-- src/assets/background/dots.svg | 10 ++ src/canvas/canvas.js | 49 +++++++--- src/canvas/constants/tools.js | 2 + src/canvas/toolbar.js | 114 +++++++++++++++++----- src/canvas/widgets/base.js | 170 +++++++++++++++++++++------------ src/styles/index.css | 7 +- 7 files changed, 258 insertions(+), 107 deletions(-) create mode 100644 src/assets/background/dots.svg diff --git a/src/App.js b/src/App.js index 099bf56..6f56097 100644 --- a/src/App.js +++ b/src/App.js @@ -1,16 +1,17 @@ import { useRef, useState } from 'react' import { LayoutFilled, ProductFilled, CloudUploadOutlined } from "@ant-design/icons" +import { DndContext, useSensors, useSensor, PointerSensor, closestCorners, DragOverlay, rectIntersection } from '@dnd-kit/core' +import { snapCenterToCursor } from '@dnd-kit/modifiers' -import Sidebar from './sidebar/sidebar' -import WidgetsContainer from './sidebar/widgetsContainer' -import UploadsContainer from './sidebar/uploadsContainer' import Canvas from './canvas/canvas' import Header from './components/header' -import { DndContext, useSensors, useSensor, PointerSensor, closestCorners, DragOverlay, rectIntersection } from '@dnd-kit/core' -import { DraggableWidgetCard } from './components/cards' +import Sidebar from './sidebar/sidebar' +import UploadsContainer from './sidebar/uploadsContainer' +import WidgetsContainer from './sidebar/widgetsContainer' + import Widget from './canvas/widgets/base' -import { snapCenterToCursor } from '@dnd-kit/modifiers' +import { DraggableWidgetCard } from './components/cards' function App() { diff --git a/src/assets/background/dots.svg b/src/assets/background/dots.svg new file mode 100644 index 0000000..e8b0530 --- /dev/null +++ b/src/assets/background/dots.svg @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/src/canvas/canvas.js b/src/canvas/canvas.js index 085235c..99152b9 100644 --- a/src/canvas/canvas.js +++ b/src/canvas/canvas.js @@ -8,10 +8,17 @@ import { Button, Tooltip, Dropdown } from "antd" import Droppable from "../components/utils/droppable" import Widget from "./widgets/base" import Cursor from "./constants/cursor" -import { UID } from "../utils/uid" -import { removeDuplicateObjects } from "../utils/common" + import CanvasToolBar from "./toolbar" +import { UID } from "../utils/uid" +import { removeDuplicateObjects } from "../utils/common" + +// import {ReactComponent as DotsBackground} from "../assets/background/dots.svg" + +import DotsBackground from "../assets/background/dots.svg" + +// const DotsBackground = require("../assets/background/dots.svg") const CanvasModes = { DEFAULT: 0, @@ -202,13 +209,10 @@ class Canvas extends React.Component { this.clearSelections() } - if (selectedWidget) - - this.setState({ - selectedWidget: [selectedWidget] - }) + if (selectedWidget){ this.setState({ + selectedWidget: [selectedWidget], contextMenuItems: [ { key: "rename", @@ -223,6 +227,8 @@ class Canvas extends React.Component { } ] }) + + } } @@ -330,8 +336,13 @@ class Canvas extends React.Component { setZoom(zoom, pos={x:0, y:0}){ + // if (zoom < 0.5 || zoom > 2){ + // return + // } + const { currentTranslate } = this.state + // Calculate the new translation to zoom into the mouse position const offsetX = pos.x - (this.canvasContainerRef.current.clientWidth / 2 + currentTranslate.x) const offsetY = pos.y - (this.canvasContainerRef.current.clientHeight / 2 + currentTranslate.y) @@ -340,7 +351,7 @@ class Canvas extends React.Component { const newTranslateY = currentTranslate.y - offsetY * (zoom - this.state.zoom) this.setState({ - zoom: zoom, + zoom: Math.max(0.5, Math.min(zoom, 1.5)), // clamp between 0.5 and 1.5 currentTranslate: { x: newTranslateX, y: newTranslateY @@ -440,17 +451,22 @@ class Canvas extends React.Component { const widgetIds = activeWidgets.map(widget => widget.__id) for (let widgetId of widgetIds){ - console.log("removed: ", widgetId) // this.widgetRefs[widgetId]?.current.remove() delete this.widgetRefs[widgetId] this.setState((prevState) => ({ widgets: prevState.widgets.filter(widget => widget.id !== widgetId) - })) + }), () => { + + if (this._onWidgetListUpdated) + this._onWidgetListUpdated(this.state.widgets) + }) // value.current?.remove() } + + } /** @@ -510,19 +526,24 @@ class Canvas extends React.Component {