Skip to content

Commit 1c6b119

Browse files
committed
Return the parent node in insertNode util
1 parent 9d73a55 commit 1c6b119

File tree

2 files changed

+24
-7
lines changed

2 files changed

+24
-7
lines changed

src/utils/tree-data-utils.js

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -620,6 +620,7 @@ function addNodeAtDepthAndIndex({
620620
nextIndex: currentIndex + 2,
621621
insertedTreeIndex: currentIndex + 1,
622622
parentPath: selfPath(nextNode),
623+
parentNode: isPseudoRoot ? null : nextNode,
623624
};
624625
}
625626
}
@@ -682,6 +683,7 @@ function addNodeAtDepthAndIndex({
682683
nextIndex: childIndex,
683684
insertedTreeIndex,
684685
parentPath: selfPath(nextNode),
686+
parentNode: isPseudoRoot ? null : nextNode,
685687
};
686688
}
687689

@@ -696,6 +698,7 @@ function addNodeAtDepthAndIndex({
696698
// Get all descendants
697699
let insertedTreeIndex = null;
698700
let pathFragment = null;
701+
let parentNode = null;
699702
let childIndex = currentIndex + 1;
700703
let newChildren = node.children;
701704
if (typeof newChildren !== 'function') {
@@ -719,7 +722,9 @@ function addNodeAtDepthAndIndex({
719722
});
720723

721724
if ('insertedTreeIndex' in mapResult) {
722-
({ insertedTreeIndex, parentPath: pathFragment } = mapResult);
725+
insertedTreeIndex = mapResult.insertedTreeIndex;
726+
pathFragment = mapResult.parentPath;
727+
parentNode = mapResult.parentNode;
723728
}
724729

725730
childIndex = mapResult.nextIndex;
@@ -737,6 +742,7 @@ function addNodeAtDepthAndIndex({
737742
if (insertedTreeIndex !== null) {
738743
result.insertedTreeIndex = insertedTreeIndex;
739744
result.parentPath = [ ...selfPath(nextNode), ...pathFragment ];
745+
result.parentNode = parentNode;
740746
}
741747

742748
return result;
@@ -757,6 +763,7 @@ function addNodeAtDepthAndIndex({
757763
* @return {Object[]} result.treeData - The tree data with the node added
758764
* @return {number} result.treeIndex - The tree index at which the node was inserted
759765
* @return {number[]|string[]} result.path - Array of keys leading to the node location after insertion
766+
* @return {Object} result.parentNode - The parent node of the inserted node
760767
*/
761768
export function insertNode({
762769
treeData,
@@ -769,9 +776,10 @@ export function insertNode({
769776
}) {
770777
if (!treeData && targetDepth === 0) {
771778
return {
772-
treeData: [newNode],
773-
treeIndex: 0,
774-
path: [getNodeKey({ node: newNode, treeIndex: 0 })],
779+
treeData: [newNode],
780+
treeIndex: 0,
781+
path: [getNodeKey({ node: newNode, treeIndex: 0 })],
782+
parentNode: null,
775783
};
776784
}
777785

@@ -798,6 +806,7 @@ export function insertNode({
798806
treeData: insertResult.node.children,
799807
treeIndex,
800808
path: [ ...insertResult.parentPath, getNodeKey({ node: newNode, treeIndex }) ],
809+
parentNode: insertResult.parentNode,
801810
};
802811
}
803812

src/utils/tree-data-utils.test.js

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1063,21 +1063,21 @@ describe('insertNode', () => {
10631063
minimumTreeIndex: 0,
10641064
newNode: {},
10651065
getNodeKey: keyFromTreeIndex,
1066-
})).toEqual({ treeData: [{}], treeIndex: 0, path: [0] });
1066+
})).toEqual({ parentNode: null, treeData: [{}], treeIndex: 0, path: [0] });
10671067
expect(insertNode({
10681068
treeData: null,
10691069
depth: 0,
10701070
minimumTreeIndex: 0,
10711071
newNode: {},
10721072
getNodeKey: keyFromTreeIndex,
1073-
})).toEqual({ treeData: [{}], treeIndex: 0, path: [0] });
1073+
})).toEqual({ parentNode: null, treeData: [{}], treeIndex: 0, path: [0] });
10741074
expect(insertNode({
10751075
treeData: undefined,
10761076
depth: 0,
10771077
minimumTreeIndex: 0,
10781078
newNode: {},
10791079
getNodeKey: keyFromTreeIndex,
1080-
})).toEqual({ treeData: [{}], treeIndex: 0, path: [0] });
1080+
})).toEqual({ parentNode: null, treeData: [{}], treeIndex: 0, path: [0] });
10811081
});
10821082

10831083
it('should handle a depth that is deeper than any branch in the tree', () => {
@@ -1158,6 +1158,7 @@ describe('insertNode', () => {
11581158
newNode: { key: 1 },
11591159
getNodeKey: keyFromKey,
11601160
})).toEqual({
1161+
parentNode: null,
11611162
treeData: [{ key: 1 }, { key: 0 }],
11621163
treeIndex: 0,
11631164
path: [1],
@@ -1172,6 +1173,7 @@ describe('insertNode', () => {
11721173
newNode: { key: 1 },
11731174
getNodeKey: keyFromKey,
11741175
})).toEqual({
1176+
parentNode: null,
11751177
treeData: [{ key: 0 }, { key: 1 }],
11761178
treeIndex: 1,
11771179
path: [1],
@@ -1186,6 +1188,7 @@ describe('insertNode', () => {
11861188
newNode: { key: 1 },
11871189
getNodeKey: keyFromKey,
11881190
})).toEqual({
1191+
parentNode: { key: 0, children: [{ key: 1 }] },
11891192
treeData: [{ key: 0, children: [{ key: 1 }] }],
11901193
treeIndex: 1,
11911194
path: [0, 1],
@@ -1291,6 +1294,7 @@ describe('insertNode', () => {
12911294
minimumTreeIndex: 3,
12921295
getNodeKey: keyFromTreeIndex,
12931296
})).toEqual({
1297+
parentNode: { key: 2, children: [{ key: 'new' }] },
12941298
treeData: [
12951299
{ key: 0, expanded: true, children: [{ key: 1 }] },
12961300
{ key: 2, children: [{ key: 'new' }] },
@@ -1308,6 +1312,7 @@ describe('insertNode', () => {
13081312
minimumTreeIndex: 3,
13091313
getNodeKey: keyFromTreeIndex,
13101314
})).toEqual({
1315+
parentNode: { expanded: true, children: [{}, { key: 'new' }, {}] },
13111316
treeData: [
13121317
{ children: [{}] },
13131318
{ expanded: true, children: [{}, { key: 'new' }, {}] },
@@ -1325,6 +1330,7 @@ describe('insertNode', () => {
13251330
minimumTreeIndex: 4,
13261331
getNodeKey: keyFromTreeIndex,
13271332
})).toEqual({
1333+
parentNode: { children: [{ key: 'new' }] },
13281334
treeData: [
13291335
{ children: [{}] },
13301336
{ expanded: true, children: [{}, { children: [{ key: 'new' }] }] },
@@ -1342,6 +1348,7 @@ describe('insertNode', () => {
13421348
minimumTreeIndex: 4,
13431349
getNodeKey: keyFromTreeIndex,
13441350
})).toEqual({
1351+
parentNode: { children: [{ key: 'new' }] },
13451352
treeData: [
13461353
{ children: [{}, {}, {}, {}] },
13471354
{ expanded: true, children: [{}, { children: [{ key: 'new' }] }] },
@@ -1371,6 +1378,7 @@ describe('insertNode', () => {
13711378
minimumTreeIndex: 2,
13721379
getNodeKey: keyFromTreeIndex,
13731380
})).toEqual({
1381+
parentNode: { expanded: true, children: [{ key: 'new' }, { children: [] }] },
13741382
treeData: [
13751383
{
13761384
expanded: true,

0 commit comments

Comments
 (0)