fix: edge

This commit is contained in:
StyleZhang 2024-04-01 12:53:17 +08:00
parent 50a7c2c92c
commit ffb698922a
3 changed files with 22 additions and 26 deletions

View File

@ -303,6 +303,7 @@ export const useNodesInteractions = () => {
targetType: nodes.find(node => node.id === target)!.data.type,
},
}
console.log(needDeleteEdges, '1')
const nodesConnectedSourceOrTargetHandleIdsMap = getNodesConnectedSourceOrTargetHandleIdsMap(
[
...needDeleteEdges.map(edge => ({ type: 'remove', edge })),

View File

@ -88,7 +88,7 @@ export const NodeTargetHandle = memo(({
triggerClassName={open => `
hidden absolute left-0 top-0 pointer-events-none
${nodeSelectorClassName}
group-hover:flex
${data.selected && '!flex'}
${open && '!flex'}
`}
availableBlocksTypes={availablePrevNodes}
@ -167,7 +167,7 @@ export const NodeSourceHandle = memo(({
triggerClassName={open => `
hidden absolute top-0 left-0 pointer-events-none
${nodeSelectorClassName}
group-hover:flex
${data.selected && '!flex'}
${open && '!flex'}
`}
availableBlocksTypes={availableNextNodes}

View File

@ -121,36 +121,31 @@ export const getNodesConnectedSourceOrTargetHandleIdsMap = (changes: ConnectedSo
edge,
type,
} = change
const sourceNode = nodes.find(node => node.id === edge.source)
const sourceNode = nodes.find(node => node.id === edge.source)!
const sourceNodeConnectedSourceHandleIds = sourceNode?.data._connectedSourceHandleIds || []
const targetNode = nodes.find(node => node.id === edge.target)
nodesConnectedSourceOrTargetHandleIdsMap[sourceNode.id] = nodesConnectedSourceOrTargetHandleIdsMap[sourceNode.id] || {
_connectedSourceHandleIds: sourceNodeConnectedSourceHandleIds,
}
const targetNode = nodes.find(node => node.id === edge.target)!
const targetNodeConnectedTargetHandleIds = targetNode?.data._connectedTargetHandleIds || []
nodesConnectedSourceOrTargetHandleIdsMap[targetNode.id] = nodesConnectedSourceOrTargetHandleIdsMap[targetNode.id] || {
_connectedTargetHandleIds: targetNodeConnectedTargetHandleIds,
}
if (sourceNode) {
const newSourceNodeConnectedSourceHandleIds = type === 'remove'
? sourceNodeConnectedSourceHandleIds.filter(handleId => handleId !== edge.sourceHandle)
: sourceNodeConnectedSourceHandleIds.concat(edge.sourceHandle || 'source')
if (!nodesConnectedSourceOrTargetHandleIdsMap[sourceNode.id]) {
nodesConnectedSourceOrTargetHandleIdsMap[sourceNode.id] = {
_connectedSourceHandleIds: newSourceNodeConnectedSourceHandleIds,
}
}
else {
nodesConnectedSourceOrTargetHandleIdsMap[sourceNode.id]._connectedSourceHandleIds = newSourceNodeConnectedSourceHandleIds
}
if (type === 'remove')
nodesConnectedSourceOrTargetHandleIdsMap[sourceNode.id]._connectedSourceHandleIds = nodesConnectedSourceOrTargetHandleIdsMap[sourceNode.id]._connectedSourceHandleIds.filter((handleId: string) => handleId !== edge.sourceHandle)
if (type === 'add')
nodesConnectedSourceOrTargetHandleIdsMap[sourceNode.id]._connectedSourceHandleIds.push(edge.sourceHandle || 'source')
}
if (targetNode) {
const newTargetNodeConnectedTargetHandleIds = type === 'remove'
? targetNodeConnectedTargetHandleIds.filter(handleId => handleId !== edge.targetHandle)
: targetNodeConnectedTargetHandleIds.concat(edge.targetHandle || 'target')
if (!nodesConnectedSourceOrTargetHandleIdsMap[targetNode.id]) {
nodesConnectedSourceOrTargetHandleIdsMap[targetNode.id] = {
_connectedTargetHandleIds: newTargetNodeConnectedTargetHandleIds,
}
}
else {
nodesConnectedSourceOrTargetHandleIdsMap[targetNode.id]._connectedTargetHandleIds = newTargetNodeConnectedTargetHandleIds
}
if (type === 'remove')
nodesConnectedSourceOrTargetHandleIdsMap[targetNode.id]._connectedTargetHandleIds = nodesConnectedSourceOrTargetHandleIdsMap[targetNode.id]._connectedTargetHandleIds.filter((handleId: string) => handleId !== edge.targetHandle)
if (type === 'add')
nodesConnectedSourceOrTargetHandleIdsMap[targetNode.id]._connectedTargetHandleIds.push(edge.targetHandle || 'target')
}
})