feat(randomizer): add mode change listener to update downstream trigger words

Add LoraRandomizer extension that monitors node mode changes and triggers
updates to connected downstream trigger word toggle nodes, matching the
behavior implemented for Lora Stacker nodes.
This commit is contained in:
Will Miao
2026-01-19 14:33:11 +08:00
parent e44180b832
commit 4c2c8c2bc8
2 changed files with 47 additions and 0 deletions

View File

@@ -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);
};
});
}
},
});

View File

@@ -146,6 +146,13 @@ app.registerExtension({
isUpdating = false;
}
};
// Setup input widget with autocomplete
inputWidget.callback = setupInputWidgetWithAutocomplete(
this,
inputWidget,
originalCallback
);
});
}
},