From 2e2e75c240dd2d0bc8febe935c3b03ace7b83054 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Wed, 5 Nov 2025 09:30:33 +0000 Subject: [PATCH] Refactor: Use defineAsyncComponent for widget components Co-authored-by: rizumu --- .../widgets/registry/widgetRegistry.ts | 82 ++++++++++++++----- 1 file changed, 61 insertions(+), 21 deletions(-) diff --git a/src/renderer/extensions/vueNodes/widgets/registry/widgetRegistry.ts b/src/renderer/extensions/vueNodes/widgets/registry/widgetRegistry.ts index 8de442a08..68868bbd4 100644 --- a/src/renderer/extensions/vueNodes/widgets/registry/widgetRegistry.ts +++ b/src/renderer/extensions/vueNodes/widgets/registry/widgetRegistry.ts @@ -1,30 +1,70 @@ /** * Widget type registry and component mapping for Vue-based widgets */ -import type { Component } from 'vue' +import { defineAsyncComponent, type Component } from 'vue' -import Load3D from '@/components/load3d/Load3D.vue' import type { SafeWidgetData } from '@/composables/graph/useGraphNodeManager' -import WidgetAudioUI from '../components/WidgetAudioUI.vue' -import WidgetButton from '../components/WidgetButton.vue' -import WidgetChart from '../components/WidgetChart.vue' -import WidgetColorPicker from '../components/WidgetColorPicker.vue' -import WidgetFileUpload from '../components/WidgetFileUpload.vue' -import WidgetGalleria from '../components/WidgetGalleria.vue' -import WidgetImageCompare from '../components/WidgetImageCompare.vue' -import WidgetInputNumber from '../components/WidgetInputNumber.vue' -import WidgetInputText from '../components/WidgetInputText.vue' -import WidgetLegacy from '../components/WidgetLegacy.vue' -import WidgetMarkdown from '../components/WidgetMarkdown.vue' -import WidgetMultiSelect from '../components/WidgetMultiSelect.vue' -import WidgetRecordAudio from '../components/WidgetRecordAudio.vue' -import WidgetSelect from '../components/WidgetSelect.vue' -import WidgetSelectButton from '../components/WidgetSelectButton.vue' -import WidgetTextarea from '../components/WidgetTextarea.vue' -import WidgetToggleSwitch from '../components/WidgetToggleSwitch.vue' -import WidgetTreeSelect from '../components/WidgetTreeSelect.vue' -import AudioPreviewPlayer from '../components/audio/AudioPreviewPlayer.vue' +const WidgetButton = defineAsyncComponent( + () => import('../components/WidgetButton.vue') +) +const WidgetInputText = defineAsyncComponent( + () => import('../components/WidgetInputText.vue') +) +const WidgetInputNumber = defineAsyncComponent( + () => import('../components/WidgetInputNumber.vue') +) +const WidgetToggleSwitch = defineAsyncComponent( + () => import('../components/WidgetToggleSwitch.vue') +) +const WidgetSelect = defineAsyncComponent( + () => import('../components/WidgetSelect.vue') +) +const WidgetColorPicker = defineAsyncComponent( + () => import('../components/WidgetColorPicker.vue') +) +const WidgetMultiSelect = defineAsyncComponent( + () => import('../components/WidgetMultiSelect.vue') +) +const WidgetSelectButton = defineAsyncComponent( + () => import('../components/WidgetSelectButton.vue') +) +const WidgetTextarea = defineAsyncComponent( + () => import('../components/WidgetTextarea.vue') +) +const WidgetChart = defineAsyncComponent( + () => import('../components/WidgetChart.vue') +) +const WidgetImageCompare = defineAsyncComponent( + () => import('../components/WidgetImageCompare.vue') +) +const WidgetGalleria = defineAsyncComponent( + () => import('../components/WidgetGalleria.vue') +) +const WidgetFileUpload = defineAsyncComponent( + () => import('../components/WidgetFileUpload.vue') +) +const WidgetTreeSelect = defineAsyncComponent( + () => import('../components/WidgetTreeSelect.vue') +) +const WidgetMarkdown = defineAsyncComponent( + () => import('../components/WidgetMarkdown.vue') +) +const WidgetLegacy = defineAsyncComponent( + () => import('../components/WidgetLegacy.vue') +) +const WidgetRecordAudio = defineAsyncComponent( + () => import('../components/WidgetRecordAudio.vue') +) +const AudioPreviewPlayer = defineAsyncComponent( + () => import('../components/audio/AudioPreviewPlayer.vue') +) +const WidgetAudioUI = defineAsyncComponent( + () => import('../components/WidgetAudioUI.vue') +) +const Load3D = defineAsyncComponent( + () => import('@/components/load3d/Load3D.vue') +) interface WidgetDefinition { component: Component