diff --git a/web/app/components/workflow/hooks/use-nodes-interactions.ts b/web/app/components/workflow/hooks/use-nodes-interactions.ts index 1ceb263625..f15d9793e4 100644 --- a/web/app/components/workflow/hooks/use-nodes-interactions.ts +++ b/web/app/components/workflow/hooks/use-nodes-interactions.ts @@ -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 })), diff --git a/web/app/components/workflow/nodes/_base/components/node-handle.tsx b/web/app/components/workflow/nodes/_base/components/node-handle.tsx index e85b007b7e..ccdadd5034 100644 --- a/web/app/components/workflow/nodes/_base/components/node-handle.tsx +++ b/web/app/components/workflow/nodes/_base/components/node-handle.tsx @@ -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} diff --git a/web/app/components/workflow/utils.ts b/web/app/components/workflow/utils.ts index da1ce569f8..c5b660dafa 100644 --- a/web/app/components/workflow/utils.ts +++ b/web/app/components/workflow/utils.ts @@ -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') } })