mirror of
https://git.datalinker.icu/comfyanonymous/ComfyUI
synced 2026-08-19 14:56:43 +08:00
138 lines
3.2 KiB
JavaScript
138 lines
3.2 KiB
JavaScript
import { api } from "../../scripts/api.js";
|
|
import { app } from "../../scripts/app.js";
|
|
|
|
let original_show = app.ui.dialog.show;
|
|
|
|
export function customAlert(message) {
|
|
try {
|
|
app.extensionManager.toast.addAlert(message);
|
|
}
|
|
catch {
|
|
alert(message);
|
|
}
|
|
}
|
|
|
|
export function isBeforeFrontendVersion(compareVersion) {
|
|
try {
|
|
const frontendVersion = window['__COMFYUI_FRONTEND_VERSION__'];
|
|
if (typeof frontendVersion !== 'string') {
|
|
return false;
|
|
}
|
|
|
|
function parseVersion(versionString) {
|
|
const parts = versionString.split('.').map(Number);
|
|
return parts.length === 3 && parts.every(part => !isNaN(part)) ? parts : null;
|
|
}
|
|
|
|
const currentVersion = parseVersion(frontendVersion);
|
|
const comparisonVersion = parseVersion(compareVersion);
|
|
|
|
if (!currentVersion || !comparisonVersion) {
|
|
return false;
|
|
}
|
|
|
|
for (let i = 0; i < 3; i++) {
|
|
if (currentVersion[i] > comparisonVersion[i]) {
|
|
return false;
|
|
} else if (currentVersion[i] < comparisonVersion[i]) {
|
|
return true;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
} catch {
|
|
return true;
|
|
}
|
|
}
|
|
|
|
function dialog_show_wrapper(html) {
|
|
if (typeof html === "string") {
|
|
if(html.includes("IMPACT-PACK-SIGNAL: STOP CONTROL BRIDGE")) {
|
|
return;
|
|
}
|
|
|
|
this.textElement.innerHTML = html;
|
|
} else {
|
|
this.textElement.replaceChildren(html);
|
|
}
|
|
this.element.style.display = "flex";
|
|
}
|
|
|
|
app.ui.dialog.show = dialog_show_wrapper;
|
|
|
|
|
|
function nodeFeedbackHandler(event) {
|
|
let nodes = app.graph._nodes_by_id;
|
|
let node = nodes[event.detail.node_id];
|
|
if(node) {
|
|
const w = node.widgets.find((w) => event.detail.widget_name === w.name);
|
|
if(w) {
|
|
w.value = event.detail.value;
|
|
}
|
|
}
|
|
}
|
|
|
|
api.addEventListener("impact-node-feedback", nodeFeedbackHandler);
|
|
|
|
|
|
function setMuteState(event) {
|
|
let nodes = app.graph._nodes_by_id;
|
|
let node = nodes[event.detail.node_id];
|
|
if(node) {
|
|
if(event.detail.is_active)
|
|
node.mode = 0;
|
|
else
|
|
node.mode = 2;
|
|
}
|
|
}
|
|
|
|
api.addEventListener("impact-node-mute-state", setMuteState);
|
|
|
|
|
|
async function bridgeContinue(event) {
|
|
let nodes = app.graph._nodes_by_id;
|
|
let node = nodes[event.detail.node_id];
|
|
if(node) {
|
|
const mutes = new Set(event.detail.mutes);
|
|
const actives = new Set(event.detail.actives);
|
|
const bypasses = new Set(event.detail.bypasses);
|
|
|
|
for(let i in app.graph._nodes_by_id) {
|
|
let this_node = app.graph._nodes_by_id[i];
|
|
if(mutes.has(i)) {
|
|
this_node.mode = 2;
|
|
}
|
|
else if(actives.has(i)) {
|
|
this_node.mode = 0;
|
|
}
|
|
else if(bypasses.has(i)) {
|
|
this_node.mode = 4;
|
|
}
|
|
}
|
|
|
|
await app.queuePrompt(0, 1);
|
|
}
|
|
}
|
|
|
|
api.addEventListener("impact-bridge-continue", bridgeContinue);
|
|
|
|
|
|
function addQueue(event) {
|
|
app.queuePrompt(0, 1);
|
|
}
|
|
|
|
api.addEventListener("impact-add-queue", addQueue);
|
|
|
|
|
|
function refreshPreview(event) {
|
|
let node_id = event.detail.node_id;
|
|
let item = event.detail.item;
|
|
let img = new Image();
|
|
img.src = `/view?filename=${item.filename}&subfolder=${item.subfolder}&type=${item.type}&no-cache=${Date.now()}`;
|
|
let node = app.graph._nodes_by_id[node_id];
|
|
if(node)
|
|
node.imgs = [img];
|
|
}
|
|
|
|
api.addEventListener("impact-preview", refreshPreview);
|