Spaces:
Sleeping
Sleeping
import { app } from "scripts/app.js"; | |
import type { LGraphNode as TLGraphNode } from "typings/litegraph.js"; | |
import type { | |
ComfyApp, | |
ComfyObjectInfo, | |
ComfyGraphNode, | |
ComfyNodeConstructor, | |
} from "typings/comfy.js"; | |
import { addConnectionLayoutSupport } from "./utils.js"; | |
import { PowerPrompt } from "./base_power_prompt.js"; | |
import { NodeTypesString } from "./constants.js"; | |
let nodeData: ComfyObjectInfo | null = null; | |
app.registerExtension({ | |
name: "rgthree.PowerPrompt", | |
async beforeRegisterNodeDef( | |
nodeType: ComfyNodeConstructor, | |
passedNodeData: ComfyObjectInfo, | |
_app: ComfyApp, | |
) { | |
if (passedNodeData.name.includes("Power Prompt") && passedNodeData.name.includes("rgthree")) { | |
nodeData = passedNodeData; | |
const onNodeCreated = nodeType.prototype.onNodeCreated; | |
nodeType.prototype.onNodeCreated = function () { | |
onNodeCreated ? onNodeCreated.apply(this, []) : undefined; | |
(this as any).powerPrompt = new PowerPrompt(this as ComfyGraphNode, passedNodeData); | |
}; | |
addConnectionLayoutSupport(nodeType, app, [ | |
["Left", "Right"], | |
["Right", "Left"], | |
]); | |
} | |
}, | |
async loadedGraphNode(node: TLGraphNode) { | |
if (node.type === NodeTypesString.POWER_PROMPT) { | |
setTimeout(() => { | |
// If the first output is STRING, then it's the text output from the initial launch. | |
// Let's port it to the new | |
if (node.outputs[0]!.type === "STRING") { | |
if (node.outputs[0]!.links) { | |
node.outputs[3]!.links = node.outputs[3]!.links || []; | |
for (const link of node.outputs[0]!.links) { | |
node.outputs[3]!.links.push(link); | |
app.graph.links[link]!.origin_slot = 3; | |
} | |
node.outputs[0]!.links = null; | |
} | |
node.outputs[0]!.type = nodeData!.output![0] as string; | |
node.outputs[0]!.name = nodeData!.output_name![0] || (node.outputs[0]!.type as string); | |
node.outputs[0]!.color_on = undefined; | |
node.outputs[0]!.color_off = undefined; | |
} | |
}, 50); | |
} | |
}, | |
}); | |