diff --git a/src/composables/graph/useGraphNodeManager.ts b/src/composables/graph/useGraphNodeManager.ts
index 9858e331d..be96d85cc 100644
--- a/src/composables/graph/useGraphNodeManager.ts
+++ b/src/composables/graph/useGraphNodeManager.ts
@@ -12,6 +12,7 @@ import type {
import { useLayoutMutations } from '@/renderer/core/layout/operations/layoutMutations'
import { LayoutSource } from '@/renderer/core/layout/types'
import type { InputSpec } from '@/schemas/nodeDef/nodeDefSchemaV2'
+import { isDOMWidget } from '@/scripts/domWidget'
import { useNodeDefStore } from '@/stores/nodeDefStore'
import type { WidgetValue } from '@/types/simplifiedWidget'
@@ -38,6 +39,7 @@ export interface SafeWidgetData {
callback?: ((value: unknown) => void) | undefined
spec?: InputSpec
slotMetadata?: WidgetSlotMetadata
+ isDOMWidget?: boolean
}
export interface VueNodeData {
@@ -156,7 +158,8 @@ export function useGraphNodeManager(graph: LGraph): GraphNodeManager {
options: widget.options ? { ...widget.options } : undefined,
callback: widget.callback,
spec,
- slotMetadata: slotInfo
+ slotMetadata: slotInfo,
+ isDOMWidget: isDOMWidget(widget)
}
} catch (error) {
return {
diff --git a/src/renderer/extensions/vueNodes/components/NodeWidgets.vue b/src/renderer/extensions/vueNodes/components/NodeWidgets.vue
index 0d6764e89..9685a2a9c 100644
--- a/src/renderer/extensions/vueNodes/components/NodeWidgets.vue
+++ b/src/renderer/extensions/vueNodes/components/NodeWidgets.vue
@@ -62,6 +62,7 @@ import type {
import { useErrorHandling } from '@/composables/useErrorHandling'
import { useCanvasInteractions } from '@/renderer/core/canvas/useCanvasInteractions'
import { useNodeTooltips } from '@/renderer/extensions/vueNodes/composables/useNodeTooltips'
+import WidgetDOM from '@/renderer/extensions/vueNodes/widgets/components/WidgetDOM.vue'
import WidgetInputText from '@/renderer/extensions/vueNodes/widgets/components/WidgetInputText.vue'
import {
getComponent,
@@ -127,7 +128,8 @@ const processedWidgets = computed((): ProcessedWidget[] => {
if (!shouldRenderAsVue(widget)) continue
const vueComponent =
- getComponent(widget.type, widget.name) || WidgetInputText
+ getComponent(widget.type, widget.name) ||
+ (widget.isDOMWidget ? WidgetDOM : WidgetInputText)
const slotMetadata = widget.slotMetadata
diff --git a/src/renderer/extensions/vueNodes/widgets/components/WidgetDOM.vue b/src/renderer/extensions/vueNodes/widgets/components/WidgetDOM.vue
new file mode 100644
index 000000000..b780fce07
--- /dev/null
+++ b/src/renderer/extensions/vueNodes/widgets/components/WidgetDOM.vue
@@ -0,0 +1,29 @@
+
+
+
+
diff --git a/src/renderer/extensions/vueNodes/widgets/registry/widgetRegistry.ts b/src/renderer/extensions/vueNodes/widgets/registry/widgetRegistry.ts
index 8bda86865..6cab2dbdd 100644
--- a/src/renderer/extensions/vueNodes/widgets/registry/widgetRegistry.ts
+++ b/src/renderer/extensions/vueNodes/widgets/registry/widgetRegistry.ts
@@ -3,6 +3,8 @@
*/
import type { Component } from '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'
@@ -169,11 +171,9 @@ export const isEssential = (type: string): boolean => {
return widgets.get(canonicalType)?.essential || false
}
-export const shouldRenderAsVue = (widget: {
- type?: string
- options?: Record
-}): boolean => {
+export const shouldRenderAsVue = (widget: Partial): boolean => {
if (widget.options?.canvasOnly) return false
+ if (widget.isDOMWidget) return true
if (!widget.type) return false
return isSupported(widget.type)
}