[Reland] Restrict applyToGraph to PrimitiveNode (#2724)

This commit is contained in:
Chenlei Hu
2025-02-25 10:54:21 -05:00
committed by GitHub
parent 1a7145fbc9
commit 156013aa24
4 changed files with 13 additions and 11 deletions

View File

@@ -11,6 +11,7 @@ import { INodeSlot } from '@comfyorg/litegraph'
import { useNodeDefStore } from '@/stores/nodeDefStore'
import { useSettingStore } from '@/stores/settingStore'
import type { InputSpec } from '@/types/apiTypes'
import { isPrimitiveNode } from '@/utils/typeGuardUtil'
import { app } from '../../scripts/app'
import { applyTextReplacements } from '../../scripts/utils'
@@ -30,10 +31,8 @@ const CONFIG = Symbol()
const GET_CONFIG = Symbol()
const TARGET = Symbol() // Used for reroutes to specify the real target widget
interface PrimitiveNode extends LGraphNode {}
const replacePropertyName = 'Run widget replace on values'
class PrimitiveNode extends LGraphNode {
export class PrimitiveNode extends LGraphNode {
controlValues: any[]
lastType: string
static category: string
@@ -577,10 +576,6 @@ function isValidCombo(combo: string[], obj: unknown) {
return true
}
function isPrimitiveNode(node: LGraphNode): node is PrimitiveNode {
return node.type === 'PrimitiveNode'
}
export function setWidgetConfig(slot, config, target?: IWidget) {
if (!slot.widget) return
if (config) {

View File

@@ -82,8 +82,6 @@ declare module '@comfyorg/litegraph' {
convertToNodes?(): LGraphNode[]
recreate?(): Promise<LGraphNode>
refreshComboInNode?(defs: Record<string, ComfyNodeDef>)
/** Used by virtual nodes (primitives) to insert their values into the graph prior to queueing. */
applyToGraph?(extraLinks?: LLink[]): void
/** @deprecated groupNode */
updateLink?(link: LLink): LLink | null
onExecutionStart?(): unknown

View File

@@ -2,6 +2,7 @@ import type { LGraph } from '@comfyorg/litegraph'
import { LGraphEventMode } from '@comfyorg/litegraph'
import type { ComfyApiWorkflow, ComfyWorkflowJSON } from '@/types/comfyWorkflow'
import { isPrimitiveNode } from '@/utils/typeGuardUtil'
/**
* Converts the current graph workflow for sending to the API.
@@ -17,8 +18,7 @@ export const graphToPrompt = async (
for (const node of graph.computeExecutionOrder(false)) {
const innerNodes = node.getInnerNodes ? node.getInnerNodes() : [node]
for (const innerNode of innerNodes) {
// Don't serialize frontend only nodes but let them make changes
if (innerNode.isVirtualNode) {
if (isPrimitiveNode(innerNode)) {
innerNode.applyToGraph?.()
}
}

View File

@@ -0,0 +1,9 @@
import { LGraphNode } from '@comfyorg/litegraph'
import type { PrimitiveNode } from '@/extensions/core/widgetInputs'
export function isPrimitiveNode(
node: LGraphNode
): node is PrimitiveNode & LGraphNode {
return node.type === 'PrimitiveNode'
}