diff --git a/src/components/canvas.jsx b/src/components/canvas.jsx index 7e6572e..5e8ef32 100644 --- a/src/components/canvas.jsx +++ b/src/components/canvas.jsx @@ -1,4 +1,4 @@ -import React, { useContext, useRef, useState } from "react"; +import React, { useContext, useRef, useState, useEffect } from "react"; import { useDrop } from "react-dnd"; import Table from "./table"; import { @@ -51,6 +51,7 @@ export default function Canvas(props) { mouseY: 0, }); const [cursor, setCursor] = useState("default"); + const [zoom, setZoom] = useState(1); const canvas = useRef(null); @@ -347,6 +348,26 @@ export default function Canvas(props) { [tables, areas] ); + const handleMouseWheel = (e) => { + // const zoomDirection = e.deltaY > 0 ? "out" : "in"; + e.preventDefault(); + if (e.deltaY <= 0 ) { + setZoom((prev) => prev * 1.1); + } else { + setZoom((prev) => prev / 1.1); + } + }; + + useEffect(() => { + const canvasElement = canvas.current; + canvasElement.addEventListener("wheel", handleMouseWheel, { + passive: false, + }); + return () => { + canvasElement.removeEventListener("wheel", handleMouseWheel); + }; + }, []); + return (
@@ -385,47 +406,53 @@ export default function Canvas(props) { height="100%" fill="url(#pattern-circles)" > - {areas.map((a) => ( - handleMouseDownRect(e, a.id, ObjectType.AREA)} - setResize={setAreaResize} - initCoords={initCoords} - setInitCoords={setInitCoords} - > - ))} - {tables.map((table) => ( - - handleMouseDownRect(e, table.id, ObjectType.TABLE) - } - selectedTable={props.selectedTable} - setSelectedTable={props.setSelectedTable} - /> - ))} - {linking && ( - - )} - {relationships.map((e, i) => ( - - ))} - {notes.map((n) => ( - handleMouseDownRect(e, n.id, ObjectType.NOTE)} - > - ))} + + {areas.map((a) => ( + + handleMouseDownRect(e, a.id, ObjectType.AREA) + } + setResize={setAreaResize} + initCoords={initCoords} + setInitCoords={setInitCoords} + > + ))} + {tables.map((table) => ( +
+ handleMouseDownRect(e, table.id, ObjectType.TABLE) + } + selectedTable={props.selectedTable} + setSelectedTable={props.setSelectedTable} + /> + ))} + {linking && ( + + )} + {relationships.map((e, i) => ( + + ))} + {notes.map((n) => ( + + handleMouseDownRect(e, n.id, ObjectType.NOTE) + } + > + ))} +