mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-02-08 17:10:07 +00:00
feat: add isDeletable computed property and isRemovableItem helper function
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user