diff --git a/src/lib/litegraph/src/subgraph/SubgraphNode.ts b/src/lib/litegraph/src/subgraph/SubgraphNode.ts index 43f59b51666..e26e1cd48c7 100644 --- a/src/lib/litegraph/src/subgraph/SubgraphNode.ts +++ b/src/lib/litegraph/src/subgraph/SubgraphNode.ts @@ -28,6 +28,7 @@ import type { } from '@/lib/litegraph/src/types/serialisation' import type { IBaseWidget } from '@/lib/litegraph/src/types/widgets' import type { UUID } from '@/lib/litegraph/src/utils/uuid' +import { AssetWidget } from '@/lib/litegraph/src/widgets/AssetWidget' import { toConcreteWidget } from '@/lib/litegraph/src/widgets/widgetMap' import { ExecutableNodeDTO } from './ExecutableNodeDTO' @@ -333,6 +334,8 @@ export class SubgraphNode extends LGraphNode implements BaseLGraph { const promotedWidget = toConcreteWidget(widget, this).createCopyForNode( this ) + if (widget instanceof AssetWidget) + promotedWidget.options.nodeType ??= widget.node.type Object.assign(promotedWidget, { get name() { diff --git a/src/lib/litegraph/src/types/widgets.ts b/src/lib/litegraph/src/types/widgets.ts index 1cfb323d8fc..b2cf1155754 100644 --- a/src/lib/litegraph/src/types/widgets.ts +++ b/src/lib/litegraph/src/types/widgets.ts @@ -27,6 +27,8 @@ export interface IWidgetOptions { socketless?: boolean /** If `true`, the widget will not be rendered by the Vue renderer. */ canvasOnly?: boolean + /** Used as a temporary override for determining the asset type in vue mode*/ + nodeType?: string values?: TValues /** Optional function to format values for display (e.g., hash → human-readable name) */ diff --git a/src/renderer/extensions/vueNodes/widgets/components/WidgetSelectDropdown.vue b/src/renderer/extensions/vueNodes/widgets/components/WidgetSelectDropdown.vue index f460390a234..84cb49218ed 100644 --- a/src/renderer/extensions/vueNodes/widgets/components/WidgetSelectDropdown.vue +++ b/src/renderer/extensions/vueNodes/widgets/components/WidgetSelectDropdown.vue @@ -60,8 +60,9 @@ const combinedProps = computed(() => ({ })) const getAssetData = () => { - if (props.isAssetMode && props.nodeType) { - return useAssetWidgetData(toRef(() => props.nodeType)) + const nodeType = props.widget.options?.nodeType ?? props.nodeType + if (props.isAssetMode && nodeType) { + return useAssetWidgetData(toRef(nodeType)) } return null }