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 {
"required": {
"group_mode": ("BOOLEAN", {"default": True}),
"default_active": ("BOOLEAN", {"default": True}), # New parameter to control default state
},
"optional": FlexibleOptionalInputType(any_type),
"hidden": {
@@ -41,7 +42,7 @@ class TriggerWordToggle:
else:
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
trigger_words_data = self._get_toggle_data(kwargs, 'trigger_words')
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
if (node.widgets_values && node.widgets_values.length > 0) {
// 0 is group mode, 1 is input, 2 is tag widget, 3 is original message
const savedValue = node.widgets_values[1];
// 0 is group mode, 1 is default_active, 2 is input, 3 is tag widget, 4 is original message
const savedValue = node.widgets_values[2];
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) {
hiddenWidget.value = originalMessage;
}
@@ -62,8 +62,16 @@ app.registerExtension({
const groupModeWidget = node.widgets[0];
groupModeWidget.callback = (value) => {
if (node.widgets[2].value) {
this.updateTagsBasedOnMode(node, node.widgets[2].value, value);
if (node.widgets[3].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
node.widgets[2].value = message;
node.widgets[3].value = message;
if (node.tagWidget) {
// Parse tags based on current group mode
@@ -100,6 +108,9 @@ app.registerExtension({
existingTagMap[tag.text] = tag.active;
});
// Get default active state from the widget
const defaultActive = node.widgets[1] ? node.widgets[1].value : true;
let tagArray = [];
if (groupMode) {
@@ -114,13 +125,15 @@ app.registerExtension({
.filter(group => group)
.map(group => ({
text: group,
active: existingTagMap[group] !== undefined ? existingTagMap[group] : true
// Use defaultActive only for new tags
active: existingTagMap[group] !== undefined ? existingTagMap[group] : defaultActive
}));
} else {
// If no ',,' delimiter, treat the entire message as one group
tagArray = [{
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 {
@@ -131,7 +144,8 @@ app.registerExtension({
.filter(word => word)
.map(word => ({
text: word,
active: existingTagMap[word] !== undefined ? existingTagMap[word] : true
// Use defaultActive only for new tags
active: existingTagMap[word] !== undefined ? existingTagMap[word] : defaultActive
}));
}