fix: when mouseover add btn of edges display error

This commit is contained in:
hjlarry 2026-04-10 13:35:46 +08:00
parent 1aa16821c1
commit 10193179cf
2 changed files with 12 additions and 7 deletions

View File

@ -55,6 +55,7 @@ const CustomEdge = ({
curvature: 0.16,
})
const [open, setOpen] = useState(false)
const [isTriggerHovered, setIsTriggerHovered] = useState(false)
const { handleNodeAdd } = useNodesInteractions()
const { availablePrevBlocks } = useAvailableBlocks((data as Edge['data'])!.targetType, (data as Edge['data'])?.isInIteration || (data as Edge['data'])?.isInLoop)
const { availableNextBlocks } = useAvailableBlocks((data as Edge['data'])!.sourceType, (data as Edge['data'])?.isInIteration || (data as Edge['data'])?.isInLoop)
@ -142,8 +143,8 @@ const CustomEdge = ({
<EdgeLabelRenderer>
<div
className={cn(
'nopan nodrag hover:scale-125',
data?._hovering ? 'block' : 'hidden',
'nopan nodrag',
(data?._hovering || isTriggerHovered) ? 'block' : 'hidden',
open && 'block!',
data.isInIteration && `z-[${ITERATION_CHILDREN_Z_INDEX}]`,
data.isInLoop && `z-[${LOOP_CHILDREN_Z_INDEX}]`,
@ -154,6 +155,8 @@ const CustomEdge = ({
pointerEvents: 'all',
opacity: data._waitingRun ? 0.7 : 1,
}}
onMouseEnter={() => setIsTriggerHovered(true)}
onMouseLeave={() => setIsTriggerHovered(false)}
>
<BlockSelector
open={open}

View File

@ -4,8 +4,9 @@ import type {
} from 'reactflow'
import { produce } from 'immer'
import { useCallback } from 'react'
import { useCollaborativeWorkflow } from './use-collaborative-workflow'
import { useStoreApi } from 'reactflow'
import { useWorkflowStore } from '../store'
import { useCollaborativeWorkflow } from './use-collaborative-workflow'
import {
applyConnectedHandleNodeData,
buildContextMenuEdges,
@ -19,6 +20,7 @@ import { useNodesReadOnly } from './use-workflow'
import { useWorkflowHistory, WorkflowHistoryEvent } from './use-workflow-history'
export const useEdgesInteractions = () => {
const store = useStoreApi()
const { handleSyncWorkflowDraft } = useNodesSyncDraft()
const { getNodesReadOnly } = useNodesReadOnly()
const { saveStateToHistory } = useWorkflowHistory()
@ -53,17 +55,17 @@ export const useEdgesInteractions = () => {
if (getNodesReadOnly())
return
const { edges, setEdges } = collaborativeWorkflow.getState()
const { edges, setEdges } = store.getState()
setEdges(updateEdgeHoverState(edges, edge.id, true))
}, [collaborativeWorkflow, getNodesReadOnly])
}, [getNodesReadOnly, store])
const handleEdgeLeave = useCallback<EdgeMouseHandler>((_, edge) => {
if (getNodesReadOnly())
return
const { edges, setEdges } = collaborativeWorkflow.getState()
const { edges, setEdges } = store.getState()
setEdges(updateEdgeHoverState(edges, edge.id, false))
}, [collaborativeWorkflow, getNodesReadOnly])
}, [getNodesReadOnly, store])
const handleEdgeDeleteByDeleteBranch = useCallback((nodeId: string, branchId: string) => {
if (getNodesReadOnly())