From 9a8caf444ca6396288caee3138d05582f79f3698 Mon Sep 17 00:00:00 2001
From: Braks <78412429+bcakmakoglu@users.noreply.github.com>
Date: Wed, 23 Mar 2022 17:43:27 +0100
Subject: [PATCH] feat(store): Enable using a parentNode / parentNodeId to add
child nodes
---
examples/Nesting/Nesting.vue | 9 ++++++++-
src/store/actions.ts | 6 ++++--
src/types/store.ts | 2 +-
3 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/examples/Nesting/Nesting.vue b/examples/Nesting/Nesting.vue
index f25e469c..9686af9a 100644
--- a/examples/Nesting/Nesting.vue
+++ b/examples/Nesting/Nesting.vue
@@ -1,7 +1,7 @@
diff --git a/src/store/actions.ts b/src/store/actions.ts
index a465a5cc..dc4accaf 100644
--- a/src/store/actions.ts
+++ b/src/store/actions.ts
@@ -214,10 +214,12 @@ export default (state: State, getters: ComputedGetters): Actions => {
setEdges(elements.filter(isEdge))
}
- const addNodes: Actions['addNodes'] = (nodes, extent) => {
+ const addNodes: Actions['addNodes'] = (nodes, options) => {
const parsed = nodes.flatMap((node) => {
const children: GraphNode[] = []
- parseChildren(node, undefined, children, extent ?? state.nodeExtent, getters.getNode.value)
+ const parent =
+ options && (typeof options.parentNode === 'string' ? getters.getNode.value(options.parentNode) : options.parentNode)
+ parseChildren(node, parent, children, options?.extent ?? state.nodeExtent, getters.getNode.value)
return children
})
state.nodes.push(...parsed)
diff --git a/src/types/store.ts b/src/types/store.ts
index a4152c9b..552ab8aa 100644
--- a/src/types/store.ts
+++ b/src/types/store.ts
@@ -75,7 +75,7 @@ export interface Actions {
setElements: (elements: Elements, extent?: CoordinateExtent) => void
setNodes: (nodes: Node[], extent?: CoordinateExtent) => void
setEdges: (edges: Edge[]) => void
- addNodes: (nodes: Node[], extent?: CoordinateExtent) => void
+ addNodes: (nodes: Node[], options?: { extent?: CoordinateExtent; parentNode: GraphNode | string }) => void
addEdges: (edgesOrConnections: (Edge | Connection)[]) => void
updateEdge: (oldEdge: GraphEdge, newConnection: Connection) => boolean
applyEdgeChanges: (changes: EdgeChange[]) => GraphEdge[]