Skip to content

Commit 094c027

Browse files
committed
perf(workflow): avoid repeated subflow edge scans
1 parent 6d0de5c commit 094c027

1 file changed

Lines changed: 8 additions & 7 deletions

File tree

packages/workflow-renderer/src/subflow/subflow-node-view.tsx

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -344,14 +344,15 @@ export function SubflowNodeView({
344344
const isPreviewSelected = data?.isPreviewSelected || false
345345

346346
const endHandleId = data.kind === 'loop' ? 'loop-end-source' : 'parallel-end-source'
347-
const hasDisplayedEndEdge = useReactFlowStore(
348-
useCallback(
349-
(state) =>
350-
state.edges.some((edge) => edge.source === id && edge.sourceHandle === endHandleId),
351-
[endHandleId, id]
352-
)
347+
const displayedEdges = useReactFlowStore(
348+
useCallback((state) => (data.parentId ? state.edges : null), [data.parentId])
349+
)
350+
const showFixedEndPort = useMemo(
351+
() =>
352+
!displayedEdges ||
353+
displayedEdges.some((edge) => edge.source === id && edge.sourceHandle === endHandleId),
354+
[displayedEdges, endHandleId, id]
353355
)
354-
const showFixedEndPort = !data.parentId || hasDisplayedEndEdge
355356
const BlockIcon = data.kind === 'loop' ? Repeat : Split
356357
const blockName = data.name || (data.kind === 'loop' ? 'Loop' : 'Parallel')
357358
const blockTypeLabel = data.kind === 'loop' ? 'Loop' : 'Parallel'

0 commit comments

Comments
 (0)