refactor(edge-updater): pass handle type #1212
This commit is contained in:
@@ -7,6 +7,7 @@ import ReactFlow, {
|
|||||||
OnLoadParams,
|
OnLoadParams,
|
||||||
Connection,
|
Connection,
|
||||||
Edge,
|
Edge,
|
||||||
|
removeElements,
|
||||||
} from 'react-flow-renderer';
|
} from 'react-flow-renderer';
|
||||||
|
|
||||||
const initialElements: Elements = [
|
const initialElements: Elements = [
|
||||||
@@ -56,6 +57,7 @@ const UpdatableEdge = () => {
|
|||||||
const onEdgeUpdate = (oldEdge: Edge, newConnection: Connection) =>
|
const onEdgeUpdate = (oldEdge: Edge, newConnection: Connection) =>
|
||||||
setElements((els) => updateEdge(oldEdge, newConnection, els));
|
setElements((els) => updateEdge(oldEdge, newConnection, els));
|
||||||
const onConnect = (params: Connection | Edge) => setElements((els) => addEdge(params, els));
|
const onConnect = (params: Connection | Edge) => setElements((els) => addEdge(params, els));
|
||||||
|
const onElementsRemove = (elementsToRemove: Elements) => setElements((els) => removeElements(elementsToRemove, els));
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<ReactFlow
|
<ReactFlow
|
||||||
@@ -65,6 +67,7 @@ const UpdatableEdge = () => {
|
|||||||
onEdgeUpdate={onEdgeUpdate}
|
onEdgeUpdate={onEdgeUpdate}
|
||||||
onConnect={onConnect}
|
onConnect={onConnect}
|
||||||
onEdgeUpdateStart={onEdgeUpdateStart}
|
onEdgeUpdateStart={onEdgeUpdateStart}
|
||||||
|
onElementsRemove={onElementsRemove}
|
||||||
>
|
>
|
||||||
<Controls />
|
<Controls />
|
||||||
</ReactFlow>
|
</ReactFlow>
|
||||||
|
|||||||
@@ -150,7 +150,8 @@ export default (EdgeComponent: ComponentType<EdgeProps>) => {
|
|||||||
onConnectEdge,
|
onConnectEdge,
|
||||||
isTarget,
|
isTarget,
|
||||||
isValidConnection,
|
isValidConnection,
|
||||||
connectionMode
|
connectionMode,
|
||||||
|
isSourceHandle ? 'target' : 'source'
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
[id, source, target, type, sourceHandleId, targetHandleId, setConnectionNodeId, setPosition, edgeElement]
|
[id, source, target, type, sourceHandleId, targetHandleId, setConnectionNodeId, setPosition, edgeElement]
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import {
|
|||||||
ConnectionMode,
|
ConnectionMode,
|
||||||
SetConnectionId,
|
SetConnectionId,
|
||||||
Connection,
|
Connection,
|
||||||
|
HandleType,
|
||||||
} from '../../types';
|
} from '../../types';
|
||||||
|
|
||||||
type ValidConnectionFunc = (connection: Connection) => boolean;
|
type ValidConnectionFunc = (connection: Connection) => boolean;
|
||||||
@@ -96,6 +97,7 @@ export function onMouseDown(
|
|||||||
isTarget: boolean,
|
isTarget: boolean,
|
||||||
isValidConnection: ValidConnectionFunc,
|
isValidConnection: ValidConnectionFunc,
|
||||||
connectionMode: ConnectionMode,
|
connectionMode: ConnectionMode,
|
||||||
|
elementEdgeUpdaterType?: HandleType | null,
|
||||||
onConnectStart?: OnConnectStartFunc,
|
onConnectStart?: OnConnectStartFunc,
|
||||||
onConnectStop?: OnConnectStopFunc,
|
onConnectStop?: OnConnectStopFunc,
|
||||||
onConnectEnd?: OnConnectEndFunc
|
onConnectEnd?: OnConnectEndFunc
|
||||||
@@ -111,13 +113,12 @@ export function onMouseDown(
|
|||||||
const elementBelow = doc.elementFromPoint(event.clientX, event.clientY);
|
const elementBelow = doc.elementFromPoint(event.clientX, event.clientY);
|
||||||
const elementBelowIsTarget = elementBelow?.classList.contains('target');
|
const elementBelowIsTarget = elementBelow?.classList.contains('target');
|
||||||
const elementBelowIsSource = elementBelow?.classList.contains('source');
|
const elementBelowIsSource = elementBelow?.classList.contains('source');
|
||||||
const elementBelowIsUpdater = elementBelow?.classList.contains('react-flow__edgeupdater');
|
|
||||||
|
|
||||||
if (!reactFlowNode || (!elementBelowIsTarget && !elementBelowIsSource && !elementBelowIsUpdater)) {
|
if (!reactFlowNode || (!elementBelowIsTarget && !elementBelowIsSource && !elementEdgeUpdaterType)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const handleType = elementBelowIsTarget ? 'target' : 'source';
|
const handleType = elementEdgeUpdaterType ? elementEdgeUpdaterType : elementBelowIsTarget ? 'target' : 'source';
|
||||||
const containerBounds = reactFlowNode.getBoundingClientRect();
|
const containerBounds = reactFlowNode.getBoundingClientRect();
|
||||||
let recentHoveredHandle: Element;
|
let recentHoveredHandle: Element;
|
||||||
|
|
||||||
|
|||||||
@@ -45,12 +45,13 @@ const Handle: FC<HandleProps & Omit<HTMLAttributes<HTMLDivElement>, 'id'>> = ({
|
|||||||
event,
|
event,
|
||||||
handleId,
|
handleId,
|
||||||
nodeId,
|
nodeId,
|
||||||
(setConnectionNodeId as unknown) as SetSourceIdFunc,
|
setConnectionNodeId as unknown as SetSourceIdFunc,
|
||||||
(setPosition as unknown) as SetPosition,
|
setPosition as unknown as SetPosition,
|
||||||
onConnectExtended,
|
onConnectExtended,
|
||||||
isTarget,
|
isTarget,
|
||||||
isValidConnection,
|
isValidConnection,
|
||||||
connectionMode,
|
connectionMode,
|
||||||
|
null,
|
||||||
onConnectStart,
|
onConnectStart,
|
||||||
onConnectStop,
|
onConnectStop,
|
||||||
onConnectEnd
|
onConnectEnd
|
||||||
|
|||||||
Reference in New Issue
Block a user