48 lines
1.5 KiB
JavaScript
48 lines
1.5 KiB
JavaScript
import { app } from "../../scripts/app.js";
|
|
import { api } from "../../scripts/api.js";
|
|
|
|
function addButtons(node) {
|
|
if (node.__webuiGenButtonsAdded) return;
|
|
node.__webuiGenButtonsAdded = true;
|
|
|
|
node.addWidget("button", "Open Generator UI", null, async () => {
|
|
try {
|
|
const info = await api.fetchApi("/webui-generator/info").then(r => r.json());
|
|
const host = info.host || "127.0.0.1";
|
|
const port = info.port || 7860;
|
|
|
|
// Open generator (Gradio) in a new tab
|
|
const url = `http://${host}:${port}`;
|
|
window.open(url, "_blank", "noopener,noreferrer");
|
|
} catch (e) {
|
|
console.error(e);
|
|
alert("Failed to get generator URL. Check ComfyUI console logs.");
|
|
}
|
|
});
|
|
|
|
node.addWidget("button", "Open ComfyUI Output Folder", null, async () => {
|
|
try {
|
|
await api.fetchApi("/webui-generator/open-output", { method: "POST" });
|
|
} catch (e) {
|
|
console.error(e);
|
|
alert("Failed to open output folder.");
|
|
}
|
|
});
|
|
|
|
node.addWidget("text", "Note", "Upload the *API workflow JSON* in the generator UI.", () => {});
|
|
}
|
|
|
|
app.registerExtension({
|
|
name: "ai.joe.webui_generator_node",
|
|
async beforeRegisterNodeDef(nodeType, nodeData) {
|
|
if (nodeData.name === "WebUI_Generator_Launcher") {
|
|
const onNodeCreated = nodeType.prototype.onNodeCreated;
|
|
nodeType.prototype.onNodeCreated = function () {
|
|
const r = onNodeCreated?.apply(this, arguments);
|
|
addButtons(this);
|
|
return r;
|
|
};
|
|
}
|
|
}
|
|
});
|