Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | import type { Edge } from '@vue-flow/core'
import { computed, type WritableComputedRef } from 'vue'
import { useWorkflowStore } from '../../stores/workflowStore'
export interface EdgeOperations {
edges: WritableComputedRef<Edge[]>
addEdge: (edge: Edge) => void
removeEdge: (edgeId: string) => void
removeEdges: (edgeIds: string[]) => void
updateEdge: (edgeId: string, data: Partial<Edge>) => void
}
export function useEdgeOperations(): EdgeOperations {
const workflowStore = useWorkflowStore()
// Expose reactive references for v-model binding
const edges = computed({
get: () => workflowStore.edges,
set: (value) => { workflowStore.edges = value }
})
/**
* Add a new edge
*/
const addEdge = (edge: Edge) => {
workflowStore.addEdge(edge)
}
/**
* Remove an edge
*/
const removeEdge = (edgeId: string) => {
workflowStore.removeEdge(edgeId)
}
/**
* Remove multiple edges
*/
const removeEdges = (edgeIds: string[]) => {
edgeIds.forEach(id => workflowStore.removeEdge(id))
}
/**
* Update edge data
*/
const updateEdge = (edgeId: string, data: Partial<Edge>) => {
const edgeIndex = workflowStore.edges.findIndex(e => e.id === edgeId)
if (edgeIndex !== -1 && workflowStore.edges[edgeIndex]) {
workflowStore.edges[edgeIndex] = {
...workflowStore.edges[edgeIndex],
...data,
id: workflowStore.edges[edgeIndex].id // Ensure id is preserved
} as Edge
workflowStore.markAsDirty() // Manually mark since we're directly modifying
}
}
return {
edges,
addEdge,
removeEdge,
removeEdges,
updateEdge
}
} |