@@ -966,6 +966,26 @@ export class GroupNodeHandler {
966
966
api . removeEventListener ( "executing" , executing ) ;
967
967
api . removeEventListener ( "executed" , executed ) ;
968
968
} ;
969
+
970
+ this . node . refreshComboInNode = ( defs ) => {
971
+ // Update combo widget options
972
+ for ( const widgetName in this . groupData . newToOldWidgetMap ) {
973
+ const widget = this . node . widgets . find ( ( w ) => w . name === widgetName ) ;
974
+ if ( widget ?. type === "combo" ) {
975
+ const old = this . groupData . newToOldWidgetMap [ widgetName ] ;
976
+ const def = defs [ old . node . type ] ;
977
+ const input = def ?. input ?. required ?. [ old . inputName ] ?? def ?. input ?. optional ?. [ old . inputName ] ;
978
+ if ( ! input ) continue ;
979
+
980
+ widget . options . values = input [ 0 ] ;
981
+
982
+ if ( old . inputName !== "image" && ! widget . options . values . includes ( widget . value ) ) {
983
+ widget . value = widget . options . values [ 0 ] ;
984
+ widget . callback ( widget . value ) ;
985
+ }
986
+ }
987
+ }
988
+ } ;
969
989
}
970
990
971
991
updateInnerWidgets ( ) {
@@ -1245,6 +1265,14 @@ const ext = {
1245
1265
node [ GROUP ] = new GroupNodeHandler ( node ) ;
1246
1266
}
1247
1267
} ,
1268
+ async refreshComboInNodes ( defs ) {
1269
+ // Re-register group nodes so new ones are created with the correct options
1270
+ Object . assign ( globalDefs , defs ) ;
1271
+ const nodes = app . graph . extra ?. groupNodes ;
1272
+ if ( nodes ) {
1273
+ await GroupNodeConfig . registerFromWorkflow ( nodes , { } ) ;
1274
+ }
1275
+ }
1248
1276
} ;
1249
1277
1250
1278
app . registerExtension ( ext ) ;
0 commit comments