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 && ( + + )} + ); };