multimodalart's picture
Squashing commit
4450790 verified
raw
history blame
2.16 kB
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);
}
},
});