diff --git a/src/components/graph/selectionToolbox/DeleteButton.vue b/src/components/graph/selectionToolbox/DeleteButton.vue index 9f95ff515..966b8628e 100644 --- a/src/components/graph/selectionToolbox/DeleteButton.vue +++ b/src/components/graph/selectionToolbox/DeleteButton.vue @@ -16,7 +16,6 @@ diff --git a/src/composables/graph/useSelectionState.ts b/src/composables/graph/useSelectionState.ts index 8504bafe0..9480462b2 100644 --- a/src/composables/graph/useSelectionState.ts +++ b/src/composables/graph/useSelectionState.ts @@ -1,11 +1,7 @@ import { computed } from 'vue' import { useNodeLibrarySidebarTab } from '@/composables/sidebarTabs/useNodeLibrarySidebarTab' -import { - LGraphEventMode, - LGraphNode, - SubgraphNode -} from '@/lib/litegraph/src/litegraph' +import { LGraphEventMode, LGraphNode } from '@/lib/litegraph/src/litegraph' import { useCanvasStore } from '@/stores/graphStore' import { useNodeDefStore } from '@/stores/nodeDefStore' import { useNodeHelpStore } from '@/stores/workspace/nodeHelpStore' @@ -18,6 +14,9 @@ interface NodeSelectionState { pinned: boolean bypassed: boolean } +interface RemovableItem { + removable?: boolean +} /** * Centralized computed selection state + shared helper actions to avoid duplication @@ -59,7 +58,7 @@ export function useSelectionState() { ) const hasSubgraphs = computed(() => - selectedItems.value.some((i) => i instanceof SubgraphNode) + selectedItems.value.some((i) => (i as LGraphNode)?.isSubgraphNode?.()) ) const hasImageNode = computed(() => isSingleImageNode.value) @@ -112,6 +111,15 @@ export function useSelectionState() { nodeHelpStore.openHelp(def) } + const isRemovableItem = (item: unknown): item is RemovableItem => + item != null && typeof item === 'object' && ('removable' in item || true) + + const isDeletable = computed(() => + selectedItems.value + .filter(isRemovableItem) + .some((x) => x.removable !== false) + ) + return { selectedItems, selectedNodes, @@ -127,6 +135,7 @@ export function useSelectionState() { hasImageNode, hasOutputNodesSelected, selectedNodesStates, - computeSelectionFlags + computeSelectionFlags, + isDeletable } }