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[]