|
|
|
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;
|
|
|
|
},
|
|
|
|
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);
|
|
|
|
}
|
|
|
|
|
|
|
|
},
|
|
|
|
});
|