Add default_active parameter to TriggerWordToggle for controlling default state

This commit is contained in:
Will Miao
2025-06-03 17:45:52 +08:00
parent 88779ed56c
commit e5ef2ef8b5
2 changed files with 26 additions and 11 deletions

View File

@@ -17,6 +17,7 @@ class TriggerWordToggle:
return { return {
"required": { "required": {
"group_mode": ("BOOLEAN", {"default": True}), "group_mode": ("BOOLEAN", {"default": True}),
"default_active": ("BOOLEAN", {"default": True}), # New parameter to control default state
}, },
"optional": FlexibleOptionalInputType(any_type), "optional": FlexibleOptionalInputType(any_type),
"hidden": { "hidden": {
@@ -41,7 +42,7 @@ class TriggerWordToggle:
else: else:
return data return data
def process_trigger_words(self, id, group_mode, **kwargs): def process_trigger_words(self, id, group_mode, default_active, **kwargs):
# Handle both old and new formats for trigger_words # Handle both old and new formats for trigger_words
trigger_words_data = self._get_toggle_data(kwargs, 'trigger_words') trigger_words_data = self._get_toggle_data(kwargs, 'trigger_words')
trigger_words = trigger_words_data if isinstance(trigger_words_data, str) else "" trigger_words = trigger_words_data if isinstance(trigger_words_data, str) else ""

View File

@@ -49,12 +49,12 @@ app.registerExtension({
// Restore saved value if exists // Restore saved value if exists
if (node.widgets_values && node.widgets_values.length > 0) { if (node.widgets_values && node.widgets_values.length > 0) {
// 0 is group mode, 1 is input, 2 is tag widget, 3 is original message // 0 is group mode, 1 is default_active, 2 is input, 3 is tag widget, 4 is original message
const savedValue = node.widgets_values[1]; const savedValue = node.widgets_values[2];
if (savedValue) { if (savedValue) {
result.widget.value = savedValue; result.widget.value = Array.isArray(savedValue) ? savedValue : [];
} }
const originalMessage = node.widgets_values[2]; const originalMessage = node.widgets_values[3];
if (originalMessage) { if (originalMessage) {
hiddenWidget.value = originalMessage; hiddenWidget.value = originalMessage;
} }
@@ -62,8 +62,16 @@ app.registerExtension({
const groupModeWidget = node.widgets[0]; const groupModeWidget = node.widgets[0];
groupModeWidget.callback = (value) => { groupModeWidget.callback = (value) => {
if (node.widgets[2].value) { if (node.widgets[3].value) {
this.updateTagsBasedOnMode(node, node.widgets[2].value, value); this.updateTagsBasedOnMode(node, node.widgets[3].value, value);
}
}
// Add callback for default_active widget
const defaultActiveWidget = node.widgets[1];
defaultActiveWidget.callback = (value) => {
if (node.widgets[3].value) {
this.updateTagsBasedOnMode(node, node.widgets[3].value, groupModeWidget.value);
} }
} }
}); });
@@ -79,7 +87,7 @@ app.registerExtension({
} }
// Store the original message for mode switching // Store the original message for mode switching
node.widgets[2].value = message; node.widgets[3].value = message;
if (node.tagWidget) { if (node.tagWidget) {
// Parse tags based on current group mode // Parse tags based on current group mode
@@ -100,6 +108,9 @@ app.registerExtension({
existingTagMap[tag.text] = tag.active; existingTagMap[tag.text] = tag.active;
}); });
// Get default active state from the widget
const defaultActive = node.widgets[1] ? node.widgets[1].value : true;
let tagArray = []; let tagArray = [];
if (groupMode) { if (groupMode) {
@@ -114,13 +125,15 @@ app.registerExtension({
.filter(group => group) .filter(group => group)
.map(group => ({ .map(group => ({
text: group, text: group,
active: existingTagMap[group] !== undefined ? existingTagMap[group] : true // Use defaultActive only for new tags
active: existingTagMap[group] !== undefined ? existingTagMap[group] : defaultActive
})); }));
} else { } else {
// If no ',,' delimiter, treat the entire message as one group // If no ',,' delimiter, treat the entire message as one group
tagArray = [{ tagArray = [{
text: message.trim(), text: message.trim(),
active: existingTagMap[message.trim()] !== undefined ? existingTagMap[message.trim()] : true // Use defaultActive only for new tags
active: existingTagMap[message.trim()] !== undefined ? existingTagMap[message.trim()] : defaultActive
}]; }];
} }
} else { } else {
@@ -131,7 +144,8 @@ app.registerExtension({
.filter(word => word) .filter(word => word)
.map(word => ({ .map(word => ({
text: word, text: word,
active: existingTagMap[word] !== undefined ? existingTagMap[word] : true // Use defaultActive only for new tags
active: existingTagMap[word] !== undefined ? existingTagMap[word] : defaultActive
})); }));
} }