From da08e69e789af3e6f698d06e3a63139ac555d6a4 Mon Sep 17 00:00:00 2001 From: Jack Fishwick Date: Fri, 23 Sep 2022 15:35:28 +0100 Subject: [PATCH] feat: condense user selection into pane. --- .../src/components/UserSelection/index.tsx | 16 +++++++++---- .../core/src/container/FlowRenderer/index.tsx | 23 ++++++++++--------- 2 files changed, 24 insertions(+), 15 deletions(-) diff --git a/packages/core/src/components/UserSelection/index.tsx b/packages/core/src/components/UserSelection/index.tsx index cbf1e830..b39f10ab 100644 --- a/packages/core/src/components/UserSelection/index.tsx +++ b/packages/core/src/components/UserSelection/index.tsx @@ -18,6 +18,10 @@ type SelectionRect = Rect & { type UserSelectionProps = { selectionKeyPressed: boolean; + onClick?: (e: React.MouseEvent) => void; + onContextMenu?: (e: React.MouseEvent) => void; + onWheel?: (e: React.WheelEvent) => void; + children: React.ReactNode; }; function getMousePosition(event: React.MouseEvent, containerBounds: DOMRect): XYPosition { @@ -42,7 +46,7 @@ const initialRect: SelectionRect = { draw: false, }; -const UserSelection = memo(({ selectionKeyPressed }: UserSelectionProps) => { +const UserSelection = memo(({ selectionKeyPressed, onClick, onContextMenu, onWheel, children }: UserSelectionProps) => { const store = useStoreApi(); const prevSelectedNodesCount = useRef(0); const prevSelectedEdgesCount = useRef(0); @@ -80,8 +84,6 @@ const UserSelection = memo(({ selectionKeyPressed }: UserSelectionProps) => { y: mousePos.y, draw: true, }); - - store.setState({ userSelectionActive: true, nodesSelectionActive: false }); }; const onMouseMove = (event: React.MouseEvent): void => { @@ -89,6 +91,8 @@ const UserSelection = memo(({ selectionKeyPressed }: UserSelectionProps) => { return; } + store.setState({ userSelectionActive: true, nodesSelectionActive: false }); + const mousePos = getMousePosition(event, containerBounds.current!); const startX = userSelectionRect.startX ?? 0; const startY = userSelectionRect.startY ?? 0; @@ -138,12 +142,16 @@ const UserSelection = memo(({ selectionKeyPressed }: UserSelectionProps) => { return (
+ {children} {userSelectionRect.draw && (
- {children} - - {nodesSelectionActive && ( - - )} - + selectionKeyPressed={selectionKeyPressed || (selectBoxOnDrag && !panOnDrag)} + > + {children} + {nodesSelectionActive && ( + + )} + ); };