feat: add isDeletable computed property and isRemovableItem helper function

This commit is contained in:
Johnpaul
2025-09-09 20:51:15 +01:00
parent 990a36c56c
commit d48c0ace54
2 changed files with 17 additions and 13 deletions

View File

@@ -16,7 +16,6 @@
<script setup lang="ts">
import Button from 'primevue/button'
import { computed } from 'vue'
import { useI18n } from 'vue-i18n'
import { useSelectionState } from '@/composables/graph/useSelectionState'
@@ -24,9 +23,5 @@ import { useCommandStore } from '@/stores/commandStore'
const { t } = useI18n()
const commandStore = useCommandStore()
const { selectedItems } = useSelectionState()
const isDeletable = computed(() =>
selectedItems.value.some((x: any) => x.removable !== false)
)
const { isDeletable } = useSelectionState()
</script>

View File

@@ -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
}
}