|
1 | 1 | import type { ComputedRef } from 'vue'
|
2 | 2 | import { computed } from 'vue'
|
3 |
| -import type { ComputedGetters, GraphEdge, GraphNode, State } from '../types' |
| 3 | +import type { ComputedGetters, EdgeLookup, GraphEdge, GraphNode, NodeLookup, State } from '../types' |
4 | 4 | import { getNodesInside, isEdgeVisible } from '../utils'
|
5 | 5 | import { defaultEdgeTypes, defaultNodeTypes } from '../utils/defaultNodesEdges'
|
6 | 6 |
|
7 |
| -export function useGetters(state: State, nodeIds: ComputedRef<string[]>, edgeIds: ComputedRef<string[]>): ComputedGetters { |
| 7 | +export function useGetters( |
| 8 | + state: State, |
| 9 | + nodeLookup: ComputedRef<NodeLookup>, |
| 10 | + edgeLookup: ComputedRef<EdgeLookup>, |
| 11 | +): ComputedGetters { |
8 | 12 | /**
|
9 | 13 | * @deprecated will be removed in next major version; use findNode instead
|
10 | 14 | */
|
11 |
| - const getNode: ComputedGetters['getNode'] = computed(() => (id: string) => { |
12 |
| - if (state.nodes && !nodeIds.value.length) { |
13 |
| - return state.nodes.find((node) => node.id === id) |
14 |
| - } |
15 |
| - |
16 |
| - return state.nodes[nodeIds.value.indexOf(id)] |
17 |
| - }) |
| 15 | + const getNode: ComputedGetters['getNode'] = computed(() => (id) => nodeLookup.value.get(id)) |
18 | 16 |
|
19 | 17 | /**
|
20 | 18 | * @deprecated will be removed in next major version; use findEdge instead
|
21 | 19 | */
|
22 |
| - const getEdge: ComputedGetters['getEdge'] = computed(() => (id: string) => { |
23 |
| - if (state.edges && !edgeIds.value.length) { |
24 |
| - return state.edges.find((edge) => edge.id === id) |
25 |
| - } |
26 |
| - |
27 |
| - return state.edges[edgeIds.value.indexOf(id)] |
28 |
| - }) |
| 20 | + const getEdge: ComputedGetters['getEdge'] = computed(() => (id) => edgeLookup.value.get(id)) |
29 | 21 |
|
30 | 22 | const getEdgeTypes: ComputedGetters['getEdgeTypes'] = computed(() => {
|
31 | 23 | const edgeTypes: Record<string, any> = {
|
@@ -80,8 +72,8 @@ export function useGetters(state: State, nodeIds: ComputedRef<string[]>, edgeIds
|
80 | 72 | const visibleEdges: GraphEdge[] = []
|
81 | 73 |
|
82 | 74 | for (const edge of state.edges) {
|
83 |
| - const source = getNode.value(edge.source)! |
84 |
| - const target = getNode.value(edge.target)! |
| 75 | + const source = nodeLookup.value.get(edge.source)! |
| 76 | + const target = nodeLookup.value.get(edge.target)! |
85 | 77 |
|
86 | 78 | if (
|
87 | 79 | isEdgeVisible({
|
|
0 commit comments