|
@@ -43,7 +43,10 @@ export const useNodesInteractions = () => {
|
|
|
const workflowStore = useWorkflowStore()
|
|
|
const nodesExtraData = useNodesExtraData()
|
|
|
const { handleSyncWorkflowDraft } = useNodesSyncDraft()
|
|
|
- const { getAfterNodesInSameBranch } = useWorkflow()
|
|
|
+ const {
|
|
|
+ getAfterNodesInSameBranch,
|
|
|
+ getTreeLeafNodes,
|
|
|
+ } = useWorkflow()
|
|
|
const { getNodesReadOnly } = useNodesReadOnly()
|
|
|
const dragNodeStartPosition = useRef({ x: 0, y: 0 } as { x: number; y: number })
|
|
|
const connectingNodeRef = useRef<{ nodeId: string; handleType: HandleType } | null>(null)
|
|
@@ -313,6 +316,13 @@ export const useNodesInteractions = () => {
|
|
|
setEdges,
|
|
|
} = store.getState()
|
|
|
const nodes = getNodes()
|
|
|
+ const targetNode = nodes.find(node => node.id === target!)
|
|
|
+ if (targetNode && targetNode?.data.type === BlockEnum.VariableAssigner) {
|
|
|
+ const treeNodes = getTreeLeafNodes(target!)
|
|
|
+
|
|
|
+ if (!treeNodes.find(treeNode => treeNode.id === source))
|
|
|
+ return
|
|
|
+ }
|
|
|
const needDeleteEdges = edges.filter((edge) => {
|
|
|
if (edge.source === source) {
|
|
|
if (edge.sourceHandle)
|
|
@@ -368,7 +378,7 @@ export const useNodesInteractions = () => {
|
|
|
})
|
|
|
setEdges(newEdges)
|
|
|
handleSyncWorkflowDraft()
|
|
|
- }, [store, handleSyncWorkflowDraft, getNodesReadOnly])
|
|
|
+ }, [store, handleSyncWorkflowDraft, getNodesReadOnly, getTreeLeafNodes])
|
|
|
|
|
|
const handleNodeConnectStart = useCallback<OnConnectStart>((_, { nodeId, handleType }) => {
|
|
|
if (nodeId && handleType) {
|