| | import { app } from "../../scripts/app.js"; |
| | import { ComfyWidgets } from "../../scripts/widgets.js"; |
| | |
| |
|
| | app.registerExtension({ |
| | name: "Comfy.SlotDefaults", |
| | suggestionsNumber: null, |
| | init() { |
| | LiteGraph.search_filter_enabled = true; |
| | LiteGraph.middle_click_slot_add_default_node = true; |
| | this.suggestionsNumber = app.ui.settings.addSetting({ |
| | id: "Comfy.NodeSuggestions.number", |
| | name: "Number of nodes suggestions", |
| | type: "slider", |
| | attrs: { |
| | min: 1, |
| | max: 100, |
| | step: 1, |
| | }, |
| | defaultValue: 5, |
| | onChange: (newVal, oldVal) => { |
| | this.setDefaults(newVal); |
| | } |
| | }); |
| | }, |
| | slot_types_default_out: {}, |
| | slot_types_default_in: {}, |
| | async beforeRegisterNodeDef(nodeType, nodeData, app) { |
| | var nodeId = nodeData.name; |
| | var inputs = []; |
| | inputs = nodeData["input"]["required"]; |
| | for (const inputKey in inputs) { |
| | var input = (inputs[inputKey]); |
| | if (typeof input[0] !== "string") continue; |
| |
|
| | var type = input[0] |
| | if (type in ComfyWidgets) { |
| | var customProperties = input[1] |
| | if (!(customProperties?.forceInput)) continue; |
| | } |
| |
|
| | if (!(type in this.slot_types_default_out)) { |
| | this.slot_types_default_out[type] = ["Reroute"]; |
| | } |
| | if (this.slot_types_default_out[type].includes(nodeId)) continue; |
| | this.slot_types_default_out[type].push(nodeId); |
| |
|
| | |
| | |
| | const lowerType = type.toLocaleLowerCase(); |
| | if (!(lowerType in LiteGraph.registered_slot_in_types)) { |
| | LiteGraph.registered_slot_in_types[lowerType] = { nodes: [] }; |
| | } |
| | LiteGraph.registered_slot_in_types[lowerType].nodes.push(nodeType.comfyClass); |
| | } |
| |
|
| | var outputs = nodeData["output"]; |
| | for (const key in outputs) { |
| | var type = outputs[key]; |
| | if (!(type in this.slot_types_default_in)) { |
| | this.slot_types_default_in[type] = ["Reroute"]; |
| | } |
| |
|
| | this.slot_types_default_in[type].push(nodeId); |
| |
|
| | |
| | if (!(type in LiteGraph.registered_slot_out_types)) { |
| | LiteGraph.registered_slot_out_types[type] = { nodes: [] }; |
| | } |
| | LiteGraph.registered_slot_out_types[type].nodes.push(nodeType.comfyClass); |
| |
|
| | if(!LiteGraph.slot_types_out.includes(type)) { |
| | LiteGraph.slot_types_out.push(type); |
| | } |
| | } |
| | var maxNum = this.suggestionsNumber.value; |
| | this.setDefaults(maxNum); |
| | }, |
| | setDefaults(maxNum) { |
| |
|
| | LiteGraph.slot_types_default_out = {}; |
| | LiteGraph.slot_types_default_in = {}; |
| |
|
| | for (const type in this.slot_types_default_out) { |
| | LiteGraph.slot_types_default_out[type] = this.slot_types_default_out[type].slice(0, maxNum); |
| | } |
| | for (const type in this.slot_types_default_in) { |
| | LiteGraph.slot_types_default_in[type] = this.slot_types_default_in[type].slice(0, maxNum); |
| | } |
| | } |
| | }); |
| |
|