refactor(edge): pass onEdgeUpdate instead of creating onConnect function
This commit is contained in:
@@ -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,
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -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
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user