mirror of
https://github.com/comfyanonymous/ComfyUI.git
synced 2026-02-11 22:12:33 +08:00
55 lines
1.6 KiB
JavaScript
55 lines
1.6 KiB
JavaScript
import { app } from "../../scripts/app.js";
|
|
import { api } from "../../scripts/api.js";
|
|
|
|
app.registerExtension({
|
|
name: "Comfy.Subflow",
|
|
async nodeCreated(node) {
|
|
|
|
if (!node.widgets) return;
|
|
if (node.widgets[0].name !== "subflow_name") return;
|
|
|
|
const refreshPins = (subflowNodes) => {
|
|
// remove all existing pins
|
|
const numInputs = node.inputs.length;
|
|
const numOutputs = node.outputs.length;
|
|
for(let i = numInputs-1; i > -1; i--) {
|
|
node.removeInput(i);
|
|
}
|
|
for(let i = numOutputs-1; i > -1; i--) {
|
|
node.removeOutput(i);
|
|
}
|
|
|
|
for (const subflowNode of subflowNodes) {
|
|
const exports = subflowNode.properties.exports;
|
|
if (exports) {
|
|
for (const inputRef of exports.inputs) {
|
|
const input = subflowNode.inputs.find(q => q.name === inputRef);
|
|
if (!input) continue;
|
|
node.addInput(input.name, input.type);
|
|
}
|
|
for (const outputRef of exports.outputs) {
|
|
const output = subflowNode.outputs.find(q => q.name === outputRef);
|
|
if (!output) continue;
|
|
node.addOutput(output.name, output.type);
|
|
}
|
|
}
|
|
}
|
|
};
|
|
|
|
node.onConfigure = async function () {
|
|
const subflowData = await api.getSubflow(node.widgets[0].value);
|
|
if (subflowData.subflow) {
|
|
refreshPins(subflowData.subflow.nodes);
|
|
}
|
|
};
|
|
|
|
node.widgets[0].callback = async function (subflowName) {
|
|
const subflowData = await api.getSubflow(subflowName);
|
|
if (subflowData.subflow) {
|
|
refreshPins(subflowData.subflow.nodes);
|
|
}
|
|
};
|
|
|
|
}
|
|
});
|