fix(autocomplete): resolve instability in Vue DOM mode and fix WanVideo node binding

- Fix infinite reinitialization loop by only validating stale widget.inputEl when it's actually in DOM
- Improve findWidgetInputElement to specifically search for textarea for text widgets, avoiding mismatches with checkbox inputs on nodes like WanVideo Lora Select that have toggle switches
- Add data-node-id based element search as primary strategy for better reliability across rendering modes
- Fix autocomplete initialization to properly handle element DOM state transitions

Fixes autocomplete failing after Canvas ↔ Vue DOM mode switches and WanVideo node always failing to trigger autocomplete.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
Will Miao
2026-01-17 14:19:20 +08:00
parent 07d599810d
commit 88e7f671d2
9 changed files with 1652 additions and 1181 deletions

View File

@@ -26,4 +26,19 @@ app.registerExtension({
});
}
},
async loadedGraphNode(node) {
if (node.comfyClass == "Prompt (LoraManager)") {
const textWidget = node.widgets?.[0];
if (textWidget && !node.autocomplete) {
const { setupInputWidgetWithAutocomplete } = await import("./utils.js");
const modelType = "embeddings";
const autocompleteOptions = {
maxItems: 20,
minChars: 1,
debounceDelay: 200,
};
textWidget.callback = setupInputWidgetWithAutocomplete(node, textWidget, textWidget.callback, modelType, autocompleteOptions);
}
}
},
});