Files
Azornes-Comfyui-Model-Resolver/web/resolver.js
T

72 lines
2.6 KiB
JavaScript

/**
* ComfyUI Model Resolver Extension - Frontend
*
* Provides a menu button and dialog interface for relinking missing models in workflows.
*/
import { app } from "../../../scripts/app.js";
import {
MODEL_RESOLVER_NODE_TOOLBOX_COMMAND_ID,
MODEL_RESOLVER_OPEN_COMMAND_ID,
MODEL_RESOLVER_OPEN_DEFAULT_KEYBINDING,
ModelResolver as ModelResolverClass,
} from "./resolver/model_resolver.js";
import { registerGlobalHelpers } from "./resolver/globals.js";
registerGlobalHelpers();
const modelResolver = new ModelResolverClass();
app.registerExtension({
name: "Model Resolver",
commands: [
{
id: MODEL_RESOLVER_OPEN_COMMAND_ID,
label: "Open Model Resolver",
function: () => modelResolver.activateResolverButton(),
},
{
id: MODEL_RESOLVER_NODE_TOOLBOX_COMMAND_ID,
label: "Model Resolver",
icon: "mr-node-toolbar-icon",
function: () => modelResolver.handleNodeSelectionToolboxClick(),
},
],
getSelectionToolboxCommands(item) {
if (modelResolver.isNodeToolboxIconEnabled() && modelResolver.isNodeWithModels(item)) {
modelResolver.lastSelectionToolboxNode = item;
return [MODEL_RESOLVER_NODE_TOOLBOX_COMMAND_ID];
}
return [];
},
keybindings: [
MODEL_RESOLVER_OPEN_DEFAULT_KEYBINDING,
],
setup: modelResolver.setup,
beforeRegisterNodeDef(nodeType, nodeData) {
modelResolver.configureWorkflowDependencyMarkerNodeType(nodeType, nodeData);
modelResolver.configureNodeContextMenu(nodeType);
},
nodeCreated(node) {
modelResolver.configureNodeContextMenu(node?.constructor);
modelResolver.configureNodeContextMenu(node);
queueMicrotask(() => modelResolver.configureNodeContextMenu(node));
modelResolver.configureWorkflowDependencyMarkerNode(node);
modelResolver.configureCustomNodeModelAdapter(node);
modelResolver.configureWorkflowNodeLifecycle(node);
modelResolver.dialog?.scheduleActiveWorkflowRefresh?.('node-created');
},
loadedGraphNode(node) {
modelResolver.configureNodeContextMenu(node?.constructor);
modelResolver.configureNodeContextMenu(node);
queueMicrotask(() => modelResolver.configureNodeContextMenu(node));
modelResolver.configureWorkflowDependencyMarkerNode(node);
modelResolver.configureCustomNodeModelAdapter(node);
modelResolver.configureWorkflowNodeLifecycle(node);
},
afterConfigureGraph() {
modelResolver.handleGraphConfigured();
modelResolver.configureWorkflowDependencyMarkerNodes();
},
});