Some checks failed
Python Linting / Run Ruff (push) Has been cancelled
Python Linting / Run Pylint (push) Has been cancelled
Full Comfy CI Workflow Runs / test-stable (12.1, , linux, 3.10, [self-hosted Linux], stable) (push) Has been cancelled
Full Comfy CI Workflow Runs / test-stable (12.1, , linux, 3.11, [self-hosted Linux], stable) (push) Has been cancelled
Full Comfy CI Workflow Runs / test-stable (12.1, , linux, 3.12, [self-hosted Linux], stable) (push) Has been cancelled
Full Comfy CI Workflow Runs / test-unix-nightly (12.1, , linux, 3.11, [self-hosted Linux], nightly) (push) Has been cancelled
Execution Tests / test (macos-latest) (push) Has been cancelled
Execution Tests / test (ubuntu-latest) (push) Has been cancelled
Execution Tests / test (windows-latest) (push) Has been cancelled
Test server launches without errors / test (push) Has been cancelled
Unit Tests / test (macos-latest) (push) Has been cancelled
Unit Tests / test (ubuntu-latest) (push) Has been cancelled
Unit Tests / test (windows-2022) (push) Has been cancelled
Includes 30 custom nodes committed directly, 7 Civitai-exclusive loras stored via Git LFS, and a setup script that installs all dependencies and downloads HuggingFace-hosted models on vast.ai. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
49 lines
2.0 KiB
TypeScript
49 lines
2.0 KiB
TypeScript
import type {LGraphNode, LGraphNodeConstructor} from "@comfyorg/frontend";
|
|
import type {ComfyNodeDef} from "typings/comfy.js";
|
|
|
|
import {app} from "scripts/app.js";
|
|
import {addConnectionLayoutSupport} from "./utils.js";
|
|
import {PowerPrompt} from "./base_power_prompt.js";
|
|
import {NodeTypesString} from "./constants.js";
|
|
|
|
let nodeData: ComfyNodeDef | null = null;
|
|
app.registerExtension({
|
|
name: "rgthree.PowerPrompt",
|
|
async beforeRegisterNodeDef(nodeType: typeof LGraphNode, passedNodeData: ComfyNodeDef) {
|
|
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 LGraphNode, passedNodeData);
|
|
};
|
|
addConnectionLayoutSupport(nodeType as LGraphNodeConstructor, app, [
|
|
["Left", "Right"],
|
|
["Right", "Left"],
|
|
]);
|
|
}
|
|
},
|
|
async loadedGraphNode(node: LGraphNode) {
|
|
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);
|
|
(node.graph || 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);
|
|
}
|
|
},
|
|
});
|