when drag from node input or output show all possible nodes that you can connect

This commit is contained in:
omar92 2023-04-20 06:19:56 +02:00
parent 7d79afd4d3
commit 94e9798a4b
1 changed files with 39 additions and 11 deletions

View File

@ -1,21 +1,49 @@
import { app } from "/scripts/app.js";
import { ComfyWidgets } from "/scripts/widgets.js";
// Adds defaults for quickly adding nodes with middle click on the input/output
app.registerExtension({
name: "Comfy.SlotDefaults",
init() {
LiteGraph.middle_click_slot_add_default_node = true;
LiteGraph.slot_types_default_in = {
MODEL: "CheckpointLoaderSimple",
LATENT: "EmptyLatentImage",
VAE: "VAELoader",
};
},
async beforeRegisterNodeDef(nodeType, nodeData, app) {
var nodeId = nodeData.name;
var inputs = [];
//if (nodeData["input"]["optional"] != undefined) {
// inputs = Object.assign({}, nodeData["input"]["required"], nodeData["input"]["optional"]);
//} else {
inputs = nodeData["input"]["required"]; //only show required inputs to reduce the mess also not logica to create node with optional inputs
//}
for (const inputKey in inputs) {
var input = (inputs[inputKey]);
//make sure input[0] is a string
if (typeof input[0] !== "string") continue;
// for (const slotKey in inputs[inputKey]) {
var type = input[0]
if (type in ComfyWidgets) {
var customProperties = input[1]
//console.log(customProperties)
if (!(customProperties?.forceInput)) continue; //ignore widgets that don't force input
}
if (!(type in LiteGraph.slot_types_default_out)) {
LiteGraph.slot_types_default_out[type] = ["Reroute"];
}
if (LiteGraph.slot_types_default_out[type].includes(nodeId)) continue;
LiteGraph.slot_types_default_out[type].push(nodeId);
// }
}
var outputs = nodeData["output"];
for (const key in outputs) {
var type = outputs[key];
if (!(type in LiteGraph.slot_types_default_in)) {
LiteGraph.slot_types_default_in[type] = ["Reroute"];// ["Reroute", "Primitive"]; primitive doesn't always work :'()
}
LiteGraph.slot_types_default_in[type].push(nodeId);
}
LiteGraph.slot_types_default_out = {
LATENT: "VAEDecode",
IMAGE: "SaveImage",
CLIP: "CLIPTextEncode",
};
},
});