Files
numz-Comfyui-FlowChain/web/js/jsnodes.js
T
2025-03-26 16:27:17 +01:00

69 lines
2.4 KiB
JavaScript

import { app } from "../../../scripts/app.js";
import { api } from '../../../scripts/api.js'
import { setupWorkflowNode } from './nodetype_workflow.js';
import { setupInputNode } from "./nodetype_input.js";
import { setupContinueNode } from "./nodetype_continue.js";
import { setupOutputNode } from "./nodetype_output.js";
import { setupLipSyncNode } from "./nodetype_lipSync.js";
app.registerExtension({
name: "FlowChain.jsnodes",
async beforeRegisterNodeDef(nodeType, nodeData, app) {
if(!nodeData?.category?.startsWith("FlowChain")) {
return;
}
switch (nodeData.name) {
case "Workflow":
setupWorkflowNode(nodeType);
break;
case "WorkflowInput":
setupInputNode(nodeType);
break;
case "WorkflowContinue":
setupContinueNode(nodeType);
break;
case "WorkflowOutput":
setupOutputNode(nodeType);
break;
case "WorkflowLipSync":
setupLipSyncNode(nodeType, nodeData, app);
break;
}
},
async init(app) {
api.fetchApi("/flowchain/workflows")
.then(response => response.json())
.then(data => {
app.lipsync_studio = data
})
.catch(error => {
console.error('Error:', error);
throw error;
});
const origRemoveNode = LGraphCanvas.prototype.removeNode;
LGraphCanvas.prototype.removeNode = function(node) {
if (node && node.inputs && node.outputs) {
// Assurer que tous les liens sont déconnectés avant de supprimer le nœud
for (let i = 0; i < node.inputs.length; i++) {
const input = node.inputs[i];
if (input.link != null) {
this.graph.removeLink(input.link);
}
}
for (let i = 0; i < node.outputs.length; i++) {
const output = node.outputs[i];
if (output.links && output.links.length) {
const links = output.links.slice(); // Copier pour éviter les problèmes lors de la modification
for (const linkId of links) {
this.graph.removeLink(linkId);
}
}
}
}
// Appeler la méthode originale
return origRemoveNode.call(this, node);
};
}
});