diff --git a/web/comfyui/lora_randomizer.js b/web/comfyui/lora_randomizer.js new file mode 100644 index 00000000..24001008 --- /dev/null +++ b/web/comfyui/lora_randomizer.js @@ -0,0 +1,40 @@ +import { app } from "../../scripts/app.js"; +import { + getActiveLorasFromNode, + updateDownstreamLoaders, + chainCallback, +} from "./utils.js"; + +app.registerExtension({ + name: "LoraManager.LoraRandomizer", + + async beforeRegisterNodeDef(nodeType, nodeData, app) { + if (nodeType.comfyClass === "Lora Randomizer (LoraManager)") { + chainCallback(nodeType.prototype, "onNodeCreated", async function () { + this.serialize_widgets = true; + + let _mode = this.mode; + const self = this; + Object.defineProperty(this, 'mode', { + get() { + return _mode; + }, + set(value) { + const oldValue = _mode; + _mode = value; + + if (self.onModeChange) { + self.onModeChange(value, oldValue); + } + } + }); + + this.onModeChange = function(newMode, oldMode) { + const isNodeActive = newMode === 0 || newMode === 3; + const activeLoraNames = isNodeActive ? getActiveLorasFromNode(self) : new Set(); + updateDownstreamLoaders(self); + }; + }); + } + }, +}); diff --git a/web/comfyui/lora_stacker.js b/web/comfyui/lora_stacker.js index 703e911e..b76670c0 100644 --- a/web/comfyui/lora_stacker.js +++ b/web/comfyui/lora_stacker.js @@ -146,6 +146,13 @@ app.registerExtension({ isUpdating = false; } }; + + // Setup input widget with autocomplete + inputWidget.callback = setupInputWidgetWithAutocomplete( + this, + inputWidget, + originalCallback + ); }); } },