refactor(edge): pass onEdgeUpdate instead of creating onConnect function

This commit is contained in:
Christopher Möller
2021-11-25 16:04:08 +01:00
parent 22f7dd6306
commit b2ac219912
3 changed files with 18 additions and 16 deletions
+12 -3
View File
@@ -3,7 +3,7 @@ import cc from 'classcat';
import shallow from 'zustand/shallow'; import shallow from 'zustand/shallow';
import { useStore, useStoreApi } from '../../store'; import { useStore, useStoreApi } from '../../store';
import { Edge, EdgeProps, WrapEdgeProps, ReactFlowState } from '../../types'; import { Edge, EdgeProps, WrapEdgeProps, ReactFlowState, Connection } from '../../types';
import { onMouseDown } from '../../components/Handle/handler'; import { onMouseDown } from '../../components/Handle/handler';
import { EdgeAnchor } from './EdgeAnchor'; import { EdgeAnchor } from './EdgeAnchor';
import { getMarkerId } from '../../utils/graph'; import { getMarkerId } from '../../utils/graph';
@@ -46,12 +46,12 @@ export default (EdgeComponent: ComponentType<EdgeProps>) => {
sourceHandleId, sourceHandleId,
targetHandleId, targetHandleId,
handleEdgeUpdate, handleEdgeUpdate,
onConnectEdge,
onContextMenu, onContextMenu,
onMouseEnter, onMouseEnter,
onMouseMove, onMouseMove,
onMouseLeave, onMouseLeave,
edgeUpdaterRadius, edgeUpdaterRadius,
onEdgeUpdate,
onEdgeUpdateStart, onEdgeUpdateStart,
onEdgeUpdateEnd, onEdgeUpdateEnd,
markerEnd, markerEnd,
@@ -156,6 +156,15 @@ export default (EdgeComponent: ComponentType<EdgeProps>) => {
? (evt: MouseEvent): void => onEdgeUpdateEnd(evt, edgeElement) ? (evt: MouseEvent): void => onEdgeUpdateEnd(evt, edgeElement)
: undefined; : undefined;
const onConnectEdge = (connection: Connection) => {
const { edges } = store.getState();
const edge = edges.find((e) => e.id === id);
if (edge && onEdgeUpdate) {
onEdgeUpdate(edge, connection);
}
};
onMouseDown( onMouseDown(
event, event,
handleId, handleId,
@@ -181,7 +190,7 @@ export default (EdgeComponent: ComponentType<EdgeProps>) => {
setConnectionNodeId, setConnectionNodeId,
setPosition, setPosition,
edgeElement, edgeElement,
onConnectEdge, onEdgeUpdate,
] ]
); );
+4 -11
View File
@@ -9,7 +9,6 @@ import { getEdgePositions, getHandle } from './utils';
import { import {
Position, Position,
Edge, Edge,
Connection,
ConnectionLineType, ConnectionLineType,
ConnectionLineComponent, ConnectionLineComponent,
ConnectionMode, ConnectionMode,
@@ -92,12 +91,6 @@ const EdgeRenderer = (props: EdgeRendererProps) => {
const sourceHandleId = edge.sourceHandle || null; const sourceHandleId = edge.sourceHandle || null;
const targetHandleId = edge.targetHandle || null; const targetHandleId = edge.targetHandle || null;
const onConnectEdge = (connection: Connection) => {
props.onEdgeUpdate?.(edge, connection);
};
const sourceNodeWidth = sourceNode?.width;
const sourceNodeHeight = sourceNode?.height;
const sourceNodeX = sourceNode?.positionAbsolute?.x; const sourceNodeX = sourceNode?.positionAbsolute?.x;
const sourceNodeY = sourceNode?.positionAbsolute?.y; const sourceNodeY = sourceNode?.positionAbsolute?.y;
const sourceNodeHandleBounds = sourceNode?.handleBounds; const sourceNodeHandleBounds = sourceNode?.handleBounds;
@@ -113,8 +106,8 @@ const EdgeRenderer = (props: EdgeRendererProps) => {
} }
if ( if (
!sourceNodeWidth || !sourceNode?.width ||
!sourceNodeHeight || !sourceNode?.height ||
typeof sourceNodeX === 'undefined' || typeof sourceNodeX === 'undefined' ||
typeof sourceNodeY === 'undefined' typeof sourceNodeY === 'undefined'
) { ) {
@@ -155,7 +148,7 @@ const EdgeRenderer = (props: EdgeRendererProps) => {
} }
const { sourceX, sourceY, targetX, targetY } = getEdgePositions( const { sourceX, sourceY, targetX, targetY } = getEdgePositions(
{ x: sourceNodeX, y: sourceNodeY, width: sourceNodeWidth, height: sourceNodeHeight }, { x: sourceNodeX, y: sourceNodeY, width: sourceNode?.width, height: sourceNode?.height },
sourceHandle, sourceHandle,
sourcePosition, sourcePosition,
{ x: targetNodeX, y: targetNodeY, width: targetNodeWidth, height: targetNodeHeight }, { x: targetNodeX, y: targetNodeY, width: targetNodeWidth, height: targetNodeHeight },
@@ -193,8 +186,8 @@ const EdgeRenderer = (props: EdgeRendererProps) => {
sourcePosition={sourcePosition} sourcePosition={sourcePosition}
targetPosition={targetPosition} targetPosition={targetPosition}
elementsSelectable={elementsSelectable} elementsSelectable={elementsSelectable}
onConnectEdge={onConnectEdge}
handleEdgeUpdate={typeof props.onEdgeUpdate !== 'undefined'} handleEdgeUpdate={typeof props.onEdgeUpdate !== 'undefined'}
onEdgeUpdate={props.onEdgeUpdate}
onContextMenu={props.onEdgeContextMenu} onContextMenu={props.onEdgeContextMenu}
onMouseEnter={props.onEdgeMouseEnter} onMouseEnter={props.onEdgeMouseEnter}
onMouseMove={props.onEdgeMouseMove} onMouseMove={props.onEdgeMouseMove}
+2 -2
View File
@@ -1,7 +1,7 @@
import { CSSProperties, ReactNode, HTMLAttributes } from 'react'; import { CSSProperties, ReactNode, HTMLAttributes } from 'react';
import { Position } from './utils'; import { Position } from './utils';
import { OnConnect, Connection } from './general'; import { Connection } from './general';
import { HandleElement } from './handles'; import { HandleElement } from './handles';
import { Node } from './nodes'; import { Node } from './nodes';
@@ -90,7 +90,7 @@ export interface WrapEdgeProps<T = any> {
elementsSelectable?: boolean; elementsSelectable?: boolean;
hidden?: boolean; hidden?: boolean;
handleEdgeUpdate: boolean; handleEdgeUpdate: boolean;
onConnectEdge: OnConnect; onEdgeUpdate: OnEdgeUpdateFunc;
onContextMenu?: EdgeMouseHandler; onContextMenu?: EdgeMouseHandler;
onMouseEnter?: EdgeMouseHandler; onMouseEnter?: EdgeMouseHandler;
onMouseMove?: EdgeMouseHandler; onMouseMove?: EdgeMouseHandler;