Fix UI crash when selecting broken node + TS fixes (#3859)

This commit is contained in:
filtered
2025-05-12 17:57:59 +10:00
committed by GitHub
parent b2f144c27b
commit 7144ec54aa
14 changed files with 65 additions and 59 deletions

View File

@@ -2,14 +2,14 @@
* Stores all DOM widgets that are used in the canvas.
*/
import { defineStore } from 'pinia'
import { markRaw, ref } from 'vue'
import { type Raw, markRaw, ref } from 'vue'
import type { PositionConfig } from '@/composables/element/useAbsolutePosition'
import type { BaseDOMWidget } from '@/scripts/domWidget'
export interface DomWidgetState extends PositionConfig {
// Raw widget instance
widget: BaseDOMWidget<object | string>
widget: Raw<BaseDOMWidget<object | string>>
visible: boolean
readonly: boolean
zIndex: number
@@ -23,7 +23,7 @@ export const useDomWidgetStore = defineStore('domWidget', () => {
widget: BaseDOMWidget<V>
) => {
widgetStates.value.set(widget.id, {
widget: markRaw(widget) as unknown as BaseDOMWidget<object | string>,
widget: markRaw(widget) as unknown as Raw<BaseDOMWidget<object | string>>,
visible: true,
readonly: false,
zIndex: 0,

View File

@@ -292,6 +292,8 @@ export const useNodeDefStore = defineStore('nodeDef', () => {
}
function fromLGraphNode(node: LGraphNode): ComfyNodeDefImpl | null {
// Frontend-only nodes don't have nodeDef
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore Optional chaining used in index
return nodeDefsByName.value[node.constructor?.nodeData?.name] ?? null
}