feat(store): add findNode & findEdge actions

# What's changed?

* deprecate computed getters `getNode` & `getEdge`
* add actions instead
This commit is contained in:
braks
2022-07-27 22:49:00 +02:00
committed by Braks
parent 49d51ccf10
commit f2321f2626
2 changed files with 23 additions and 2 deletions
+17
View File
@@ -301,6 +301,21 @@ export default (state: State, getters: ComputedGetters): Actions => {
state.hooks.edgesChange.trigger(changes)
}
const nodeIds = $computed(() => state.nodes.map((n) => n.id))
const edgeIds = $computed(() => state.edges.map((e) => e.id))
const findNode: Actions['findNode'] = (id) => {
if (state.nodes && !nodeIds.length) return state.nodes.find((node) => node.id === id)
return state.nodes[nodeIds.indexOf(id)]
}
const findEdge: Actions['findEdge'] = (id) => {
if (state.edges && !edgeIds.length) return state.edges.find((edge) => edge.id === id)
return state.edges[edgeIds.indexOf(id)]
}
const updateEdge: Actions['updateEdge'] = (oldEdge, newConnection) =>
updateEdgeAction(oldEdge, newConnection, state.edges, addEdges)
@@ -380,6 +395,8 @@ export default (state: State, getters: ComputedGetters): Actions => {
addEdges,
removeNodes,
removeEdges,
findNode,
findEdge,
updateEdge,
applyEdgeChanges,
applyNodeChanges,
+6 -2
View File
@@ -145,6 +145,10 @@ export interface Actions extends ViewportFunctions {
removeNodes: RemoveNodes
/** remove edges from state */
removeEdges: RemoveEdges
/** find a node by id */
findNode: (id: string) => GraphNode | undefined
/** find an edge by id */
findEdge: (id: string) => GraphEdge | undefined
/** updates an edge */
updateEdge: UpdateEdge
/** applies default edge change handler */
@@ -198,9 +202,9 @@ export interface Getters {
getNodes: GraphNode[]
/** filters hidden edges */
getEdges: GraphEdge[]
/** returns a node by id */
/** @deprecated use {@link Actions.findNode} instead; returns a node by id */
getNode: (id: string) => GraphNode | undefined
/** returns an edge by id */
/** @deprecated use {@link Actions.findEdge} instead; returns an edge by id */
getEdge: (id: string) => GraphEdge | undefined
/** returns all currently selected elements */
getSelectedElements: FlowElements