From 0ac768722ce371c9e01d4a2333c14a11d09cad56 Mon Sep 17 00:00:00 2001 From: Johnpaul Date: Fri, 21 Nov 2025 20:06:23 +0100 Subject: [PATCH] feat: add WidgetSelectToggle and enhance webcam widget with dynamic controls Implements a proper Vue toggle widget component and enhances the webcam widget to dynamically show/hide related controls based on camera state, with automatic restoration on component unmount. --- .../widgets/components/WidgetSelectToggle.vue | 97 +++++++++++++++++++ .../widgets/components/WidgetWebcam.vue | 65 ++++++++++++- .../widgets/registry/widgetRegistry.ts | 11 +++ 3 files changed, 171 insertions(+), 2 deletions(-) create mode 100644 src/renderer/extensions/vueNodes/widgets/components/WidgetSelectToggle.vue diff --git a/src/renderer/extensions/vueNodes/widgets/components/WidgetSelectToggle.vue b/src/renderer/extensions/vueNodes/widgets/components/WidgetSelectToggle.vue new file mode 100644 index 0000000000..5896c66856 --- /dev/null +++ b/src/renderer/extensions/vueNodes/widgets/components/WidgetSelectToggle.vue @@ -0,0 +1,97 @@ + + + diff --git a/src/renderer/extensions/vueNodes/widgets/components/WidgetWebcam.vue b/src/renderer/extensions/vueNodes/widgets/components/WidgetWebcam.vue index b238d81c22..b375f32913 100644 --- a/src/renderer/extensions/vueNodes/widgets/components/WidgetWebcam.vue +++ b/src/renderer/extensions/vueNodes/widgets/components/WidgetWebcam.vue @@ -7,7 +7,6 @@ @click="handleTurnOnCamera" > {{ t('g.turnOnCamera', 'Turn on Camera') }} - @@ -16,10 +15,11 @@ diff --git a/src/renderer/extensions/vueNodes/widgets/registry/widgetRegistry.ts b/src/renderer/extensions/vueNodes/widgets/registry/widgetRegistry.ts index 4809d5c565..7a19055716 100644 --- a/src/renderer/extensions/vueNodes/widgets/registry/widgetRegistry.ts +++ b/src/renderer/extensions/vueNodes/widgets/registry/widgetRegistry.ts @@ -54,6 +54,9 @@ const WidgetAudioUI = defineAsyncComponent( const WidgetWebcam = defineAsyncComponent( () => import('../components/WidgetWebcam.vue') ) +const WidgetSelectToggle = defineAsyncComponent( + () => import('../components/WidgetSelectToggle.vue') +) const Load3D = defineAsyncComponent( () => import('@/components/load3d/Load3D.vue') ) @@ -164,6 +167,14 @@ const coreWidgetDefinitions: Array<[string, WidgetDefinition]> = [ essential: false } ], + [ + 'selectToggle', + { + component: WidgetSelectToggle, + aliases: ['SELECT_TOGGLE'], + essential: false + } + ], ['load3D', { component: Load3D, aliases: ['LOAD_3D'], essential: false }] ]