Dr.Lt.Data
11 months ago
2 changed files with 74 additions and 1 deletions
@ -0,0 +1,73 @@
|
||||
import { app } from "../../scripts/app.js"; |
||||
import { api } from "../../scripts/api.js"; |
||||
|
||||
function addMenuHandler(nodeType, cb) { |
||||
const getOpts = nodeType.prototype.getExtraMenuOptions; |
||||
nodeType.prototype.getExtraMenuOptions = function () { |
||||
const r = getOpts.apply(this, arguments); |
||||
cb.apply(this, arguments); |
||||
return r; |
||||
}; |
||||
} |
||||
|
||||
|
||||
function node_info_copy(src, dest) { |
||||
// copy input connections
|
||||
for(let i in src.inputs) { |
||||
let input = src.inputs[i]; |
||||
if(input.link) { |
||||
let link = app.graph.links[input.link]; |
||||
let src_node = app.graph.getNodeById(link.origin_id); |
||||
src_node.connect(link.origin_slot, dest.id, input.name); |
||||
} |
||||
} |
||||
|
||||
// copy output connections
|
||||
let output_links = {}; |
||||
for(let i in src.outputs) { |
||||
let output = src.outputs[i]; |
||||
if(output.links) { |
||||
let links = []; |
||||
for(let j in output.links) { |
||||
links.push(app.graph.links[output.links[j]]); |
||||
} |
||||
output_links[output.name] = links; |
||||
} |
||||
} |
||||
|
||||
for(let i in dest.outputs) { |
||||
let links = output_links[dest.outputs[i].name]; |
||||
if(links) { |
||||
for(let j in links) { |
||||
let link = links[j]; |
||||
let target_node = app.graph.getNodeById(link.target_id); |
||||
dest.connect(parseInt(i), target_node, link.target_slot); |
||||
} |
||||
} |
||||
} |
||||
|
||||
app.graph.afterChange(); |
||||
} |
||||
|
||||
app.registerExtension({ |
||||
name: "Comfy.Manager.NodeFixer", |
||||
|
||||
beforeRegisterNodeDef(nodeType, nodeData, app) { |
||||
addMenuHandler(nodeType, function (_, options) { |
||||
options.push({ |
||||
content: "Fix node (recreate)", |
||||
callback: () => { |
||||
let new_node = LiteGraph.createNode(nodeType.comfyClass); |
||||
new_node.pos = [this.pos[0], this.pos[1]]; |
||||
app.canvas.graph.add(new_node, false); |
||||
node_info_copy(this, new_node); |
||||
app.canvas.graph.remove(this); |
||||
}, |
||||
}); |
||||
}); |
||||
}, |
||||
|
||||
nodeCreated(node, app) { |
||||
console.log('test'); |
||||
} |
||||
}); |
Loading…
Reference in new issue