diff --git a/src/store/utils/connectedInputs.ts b/src/store/utils/connectedInputs.ts index e4824603..b222edf0 100644 --- a/src/store/utils/connectedInputs.ts +++ b/src/store/utils/connectedInputs.ts @@ -125,7 +125,8 @@ export function getConnectedInputsPure( nodeId: string, nodes: WorkflowNode[], edges: WorkflowEdge[], - visited?: Set + visited?: Set, + dimmedNodeIds?: Set ): ConnectedInputs { const _visited = visited || new Set(); if (_visited.has(nodeId)) return { images: [], videos: [], audio: [], model3d: null, text: null, dynamicInputs: {}, easeCurve: null }; @@ -169,9 +170,12 @@ export function getConnectedInputsPure( const sourceNode = nodes.find((n) => n.id === edge.source); if (!sourceNode) return; + // Skip dimmed source nodes — their data should not flow downstream + if (dimmedNodeIds && dimmedNodeIds.has(sourceNode.id)) return; + // Router passthrough — traverse upstream to find actual data source if (sourceNode.type === "router") { - const routerInputs = getConnectedInputsPure(sourceNode.id, nodes, edges, _visited); + const routerInputs = getConnectedInputsPure(sourceNode.id, nodes, edges, _visited, dimmedNodeIds); // Determine which type this edge carries based on the source handle const edgeType = edge.sourceHandle; // Will be "image", "text", "video", "audio", "3d", or "easeCurve" @@ -204,7 +208,7 @@ export function getConnectedInputsPure( } // Enabled switch: recursively get upstream data (same pattern as router) - const switchInputs = getConnectedInputsPure(sourceNode.id, nodes, edges, _visited); + const switchInputs = getConnectedInputsPure(sourceNode.id, nodes, edges, _visited, dimmedNodeIds); const edgeType = switchData.inputType; if (edgeType === "image") { diff --git a/src/store/workflowStore.ts b/src/store/workflowStore.ts index 994529d3..6ac6080b 100644 --- a/src/store/workflowStore.ts +++ b/src/store/workflowStore.ts @@ -848,8 +848,8 @@ const workflowStoreImpl: StateCreator = (set, get) => ({ }, getConnectedInputs: (nodeId: string) => { - const { edges, nodes } = get(); - return getConnectedInputsPure(nodeId, nodes, edges); + const { edges, nodes, dimmedNodeIds } = get(); + return getConnectedInputsPure(nodeId, nodes, edges, undefined, dimmedNodeIds); }, validateWorkflow: () => {