@react-stately/data 3.11.1-nightly.4440 → 3.11.1-nightly.4451
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/import.mjs +87 -62
- package/dist/main.js +87 -62
- package/dist/main.js.map +1 -1
- package/dist/module.js +87 -62
- package/dist/module.js.map +1 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/useTreeData.ts +83 -64
package/dist/import.mjs
CHANGED
|
@@ -505,33 +505,38 @@ function $f86e6c1ec7da6ebb$export$bc3384a35de93d66(options) {
|
|
|
505
505
|
*/
|
|
506
506
|
function $be2ea0343af54212$export$d14e1352e21f4a16(options) {
|
|
507
507
|
let { initialItems: initialItems = [], initialSelectedKeys: initialSelectedKeys, getKey: getKey = (item)=>item.id || item.key, getChildren: getChildren = (item)=>item.children } = options;
|
|
508
|
-
let map = (0, $d70Aq$useMemo)(()=>new Map(), []);
|
|
509
508
|
// We only want to compute this on initial render.
|
|
510
|
-
|
|
511
|
-
let
|
|
512
|
-
let [items, setItems] = (0, $d70Aq$useState)(initialNodes);
|
|
509
|
+
let [tree, setItems] = (0, $d70Aq$useState)(()=>buildTree(initialItems, new Map()));
|
|
510
|
+
let { items: items, nodeMap: nodeMap } = tree;
|
|
513
511
|
let [selectedKeys, setSelectedKeys] = (0, $d70Aq$useState)(new Set(initialSelectedKeys || []));
|
|
514
|
-
function buildTree(initialItems = [], parentKey) {
|
|
515
|
-
return
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
512
|
+
function buildTree(initialItems = [], map, parentKey) {
|
|
513
|
+
return {
|
|
514
|
+
items: initialItems.map((item)=>{
|
|
515
|
+
let node = {
|
|
516
|
+
key: getKey(item),
|
|
517
|
+
parentKey: parentKey,
|
|
518
|
+
value: item,
|
|
519
|
+
children: null
|
|
520
|
+
};
|
|
521
|
+
node.children = buildTree(getChildren(item), map, node.key).items;
|
|
522
|
+
map.set(node.key, node);
|
|
523
|
+
return node;
|
|
524
|
+
}),
|
|
525
|
+
nodeMap: map
|
|
526
|
+
};
|
|
526
527
|
}
|
|
527
|
-
function updateTree(items, key, update) {
|
|
528
|
-
let node =
|
|
529
|
-
if (!node) return
|
|
528
|
+
function updateTree(items, key, update, originalMap) {
|
|
529
|
+
let node = originalMap.get(key);
|
|
530
|
+
if (!node) return {
|
|
531
|
+
items: items,
|
|
532
|
+
nodeMap: originalMap
|
|
533
|
+
};
|
|
534
|
+
let map = new Map(originalMap);
|
|
530
535
|
// Create a new node. If null, then delete the node, otherwise replace.
|
|
531
536
|
let newNode = update(node);
|
|
532
|
-
if (newNode == null) deleteNode(node);
|
|
533
|
-
else addNode(newNode);
|
|
534
|
-
// Walk up the tree and update each parent to refer to the new
|
|
537
|
+
if (newNode == null) deleteNode(node, map);
|
|
538
|
+
else addNode(newNode, map);
|
|
539
|
+
// Walk up the tree and update each parent to refer to the new children.
|
|
535
540
|
while(node.parentKey){
|
|
536
541
|
let nextParent = map.get(node.parentKey);
|
|
537
542
|
let copy = {
|
|
@@ -551,35 +556,41 @@ function $be2ea0343af54212$export$d14e1352e21f4a16(options) {
|
|
|
551
556
|
node = nextParent;
|
|
552
557
|
}
|
|
553
558
|
if (newNode == null) items = items.filter((c)=>c !== node);
|
|
554
|
-
return
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
559
|
+
return {
|
|
560
|
+
items: items.map((item)=>{
|
|
561
|
+
if (item === node) return newNode;
|
|
562
|
+
return item;
|
|
563
|
+
}),
|
|
564
|
+
nodeMap: map
|
|
565
|
+
};
|
|
558
566
|
}
|
|
559
|
-
function addNode(node) {
|
|
567
|
+
function addNode(node, map) {
|
|
560
568
|
map.set(node.key, node);
|
|
561
|
-
for (let child of node.children)addNode(child);
|
|
569
|
+
for (let child of node.children)addNode(child, map);
|
|
562
570
|
}
|
|
563
|
-
function deleteNode(node) {
|
|
571
|
+
function deleteNode(node, map) {
|
|
564
572
|
map.delete(node.key);
|
|
565
|
-
for (let child of node.children)deleteNode(child);
|
|
573
|
+
for (let child of node.children)deleteNode(child, map);
|
|
566
574
|
}
|
|
567
575
|
return {
|
|
568
576
|
items: items,
|
|
569
577
|
selectedKeys: selectedKeys,
|
|
570
578
|
setSelectedKeys: setSelectedKeys,
|
|
571
579
|
getItem (key) {
|
|
572
|
-
return
|
|
580
|
+
return nodeMap.get(key);
|
|
573
581
|
},
|
|
574
582
|
insert (parentKey, index, ...values) {
|
|
575
|
-
setItems((items)=>{
|
|
576
|
-
let
|
|
583
|
+
setItems(({ items: items, nodeMap: originalMap })=>{
|
|
584
|
+
let { items: newNodes, nodeMap: newMap } = buildTree(values, originalMap, parentKey);
|
|
577
585
|
// If parentKey is null, insert into the root.
|
|
578
|
-
if (parentKey == null) return
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
586
|
+
if (parentKey == null) return {
|
|
587
|
+
items: [
|
|
588
|
+
...items.slice(0, index),
|
|
589
|
+
...newNodes,
|
|
590
|
+
...items.slice(index)
|
|
591
|
+
],
|
|
592
|
+
nodeMap: newMap
|
|
593
|
+
};
|
|
583
594
|
// Otherwise, update the parent node and its ancestors.
|
|
584
595
|
return updateTree(items, parentKey, (parentNode)=>({
|
|
585
596
|
key: parentNode.key,
|
|
@@ -587,24 +598,24 @@ function $be2ea0343af54212$export$d14e1352e21f4a16(options) {
|
|
|
587
598
|
value: parentNode.value,
|
|
588
599
|
children: [
|
|
589
600
|
...parentNode.children.slice(0, index),
|
|
590
|
-
...
|
|
601
|
+
...newNodes,
|
|
591
602
|
...parentNode.children.slice(index)
|
|
592
603
|
]
|
|
593
|
-
}));
|
|
604
|
+
}), newMap);
|
|
594
605
|
});
|
|
595
606
|
},
|
|
596
607
|
insertBefore (key, ...values) {
|
|
597
|
-
let node =
|
|
608
|
+
let node = nodeMap.get(key);
|
|
598
609
|
if (!node) return;
|
|
599
|
-
let parentNode =
|
|
610
|
+
let parentNode = nodeMap.get(node.parentKey);
|
|
600
611
|
let nodes = parentNode ? parentNode.children : items;
|
|
601
612
|
let index = nodes.indexOf(node);
|
|
602
613
|
this.insert(parentNode === null || parentNode === void 0 ? void 0 : parentNode.key, index, ...values);
|
|
603
614
|
},
|
|
604
615
|
insertAfter (key, ...values) {
|
|
605
|
-
let node =
|
|
616
|
+
let node = nodeMap.get(key);
|
|
606
617
|
if (!node) return;
|
|
607
|
-
let parentNode =
|
|
618
|
+
let parentNode = nodeMap.get(node.parentKey);
|
|
608
619
|
let nodes = parentNode ? parentNode.children : items;
|
|
609
620
|
let index = nodes.indexOf(node);
|
|
610
621
|
this.insert(parentNode === null || parentNode === void 0 ? void 0 : parentNode.key, index + 1, ...values);
|
|
@@ -615,39 +626,52 @@ function $be2ea0343af54212$export$d14e1352e21f4a16(options) {
|
|
|
615
626
|
append (parentKey, ...values) {
|
|
616
627
|
if (parentKey == null) this.insert(null, items.length, ...values);
|
|
617
628
|
else {
|
|
618
|
-
let parentNode =
|
|
629
|
+
let parentNode = nodeMap.get(parentKey);
|
|
619
630
|
if (!parentNode) return;
|
|
620
631
|
this.insert(parentKey, parentNode.children.length, ...values);
|
|
621
632
|
}
|
|
622
633
|
},
|
|
623
634
|
remove (...keys) {
|
|
635
|
+
if (keys.length === 0) return;
|
|
624
636
|
let newItems = items;
|
|
625
|
-
|
|
626
|
-
|
|
637
|
+
let prevMap = nodeMap;
|
|
638
|
+
let newTree;
|
|
639
|
+
for (let key of keys){
|
|
640
|
+
newTree = updateTree(newItems, key, ()=>null, prevMap);
|
|
641
|
+
prevMap = newTree.nodeMap;
|
|
642
|
+
newItems = newTree.items;
|
|
643
|
+
}
|
|
644
|
+
setItems(newTree);
|
|
627
645
|
let selection = new Set(selectedKeys);
|
|
628
|
-
for (let key of selectedKeys)if (!
|
|
646
|
+
for (let key of selectedKeys)if (!newTree.nodeMap.has(key)) selection.delete(key);
|
|
629
647
|
setSelectedKeys(selection);
|
|
630
648
|
},
|
|
631
649
|
removeSelectedItems () {
|
|
632
650
|
this.remove(...selectedKeys);
|
|
633
651
|
},
|
|
634
652
|
move (key, toParentKey, index) {
|
|
635
|
-
setItems((items)=>{
|
|
636
|
-
let node =
|
|
637
|
-
if (!node) return
|
|
638
|
-
|
|
653
|
+
setItems(({ items: items, nodeMap: originalMap })=>{
|
|
654
|
+
let node = originalMap.get(key);
|
|
655
|
+
if (!node) return {
|
|
656
|
+
items: items,
|
|
657
|
+
nodeMap: originalMap
|
|
658
|
+
};
|
|
659
|
+
let { items: newItems, nodeMap: newMap } = updateTree(items, key, ()=>null, originalMap);
|
|
639
660
|
const movedNode = {
|
|
640
661
|
...node,
|
|
641
662
|
parentKey: toParentKey
|
|
642
663
|
};
|
|
643
664
|
// If parentKey is null, insert into the root.
|
|
644
|
-
if (toParentKey == null) return
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
665
|
+
if (toParentKey == null) return {
|
|
666
|
+
items: [
|
|
667
|
+
...newItems.slice(0, index),
|
|
668
|
+
movedNode,
|
|
669
|
+
...newItems.slice(index)
|
|
670
|
+
],
|
|
671
|
+
nodeMap: newMap
|
|
672
|
+
};
|
|
649
673
|
// Otherwise, update the parent node and its ancestors.
|
|
650
|
-
return updateTree(
|
|
674
|
+
return updateTree(newItems, toParentKey, (parentNode)=>({
|
|
651
675
|
key: parentNode.key,
|
|
652
676
|
parentKey: parentNode.parentKey,
|
|
653
677
|
value: parentNode.value,
|
|
@@ -656,20 +680,21 @@ function $be2ea0343af54212$export$d14e1352e21f4a16(options) {
|
|
|
656
680
|
movedNode,
|
|
657
681
|
...parentNode.children.slice(index)
|
|
658
682
|
]
|
|
659
|
-
}));
|
|
683
|
+
}), newMap);
|
|
660
684
|
});
|
|
661
685
|
},
|
|
662
686
|
update (oldKey, newValue) {
|
|
663
|
-
setItems((items)=>updateTree(items, oldKey, (oldNode)=>{
|
|
687
|
+
setItems(({ items: items, nodeMap: originalMap })=>updateTree(items, oldKey, (oldNode)=>{
|
|
664
688
|
let node = {
|
|
665
689
|
key: oldNode.key,
|
|
666
690
|
parentKey: oldNode.parentKey,
|
|
667
691
|
value: newValue,
|
|
668
692
|
children: null
|
|
669
693
|
};
|
|
670
|
-
|
|
694
|
+
let tree = buildTree(getChildren(newValue), originalMap, node.key);
|
|
695
|
+
node.children = tree.items;
|
|
671
696
|
return node;
|
|
672
|
-
}));
|
|
697
|
+
}, originalMap));
|
|
673
698
|
}
|
|
674
699
|
};
|
|
675
700
|
}
|
package/dist/main.js
CHANGED
|
@@ -513,33 +513,38 @@ function $1cb48366e5c5533f$export$bc3384a35de93d66(options) {
|
|
|
513
513
|
*/
|
|
514
514
|
function $2d16d1aab63a81f4$export$d14e1352e21f4a16(options) {
|
|
515
515
|
let { initialItems: initialItems = [], initialSelectedKeys: initialSelectedKeys, getKey: getKey = (item)=>item.id || item.key, getChildren: getChildren = (item)=>item.children } = options;
|
|
516
|
-
let map = (0, $kdbv0$react.useMemo)(()=>new Map(), []);
|
|
517
516
|
// We only want to compute this on initial render.
|
|
518
|
-
|
|
519
|
-
let
|
|
520
|
-
let [items, setItems] = (0, $kdbv0$react.useState)(initialNodes);
|
|
517
|
+
let [tree, setItems] = (0, $kdbv0$react.useState)(()=>buildTree(initialItems, new Map()));
|
|
518
|
+
let { items: items, nodeMap: nodeMap } = tree;
|
|
521
519
|
let [selectedKeys, setSelectedKeys] = (0, $kdbv0$react.useState)(new Set(initialSelectedKeys || []));
|
|
522
|
-
function buildTree(initialItems = [], parentKey) {
|
|
523
|
-
return
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
520
|
+
function buildTree(initialItems = [], map, parentKey) {
|
|
521
|
+
return {
|
|
522
|
+
items: initialItems.map((item)=>{
|
|
523
|
+
let node = {
|
|
524
|
+
key: getKey(item),
|
|
525
|
+
parentKey: parentKey,
|
|
526
|
+
value: item,
|
|
527
|
+
children: null
|
|
528
|
+
};
|
|
529
|
+
node.children = buildTree(getChildren(item), map, node.key).items;
|
|
530
|
+
map.set(node.key, node);
|
|
531
|
+
return node;
|
|
532
|
+
}),
|
|
533
|
+
nodeMap: map
|
|
534
|
+
};
|
|
534
535
|
}
|
|
535
|
-
function updateTree(items, key, update) {
|
|
536
|
-
let node =
|
|
537
|
-
if (!node) return
|
|
536
|
+
function updateTree(items, key, update, originalMap) {
|
|
537
|
+
let node = originalMap.get(key);
|
|
538
|
+
if (!node) return {
|
|
539
|
+
items: items,
|
|
540
|
+
nodeMap: originalMap
|
|
541
|
+
};
|
|
542
|
+
let map = new Map(originalMap);
|
|
538
543
|
// Create a new node. If null, then delete the node, otherwise replace.
|
|
539
544
|
let newNode = update(node);
|
|
540
|
-
if (newNode == null) deleteNode(node);
|
|
541
|
-
else addNode(newNode);
|
|
542
|
-
// Walk up the tree and update each parent to refer to the new
|
|
545
|
+
if (newNode == null) deleteNode(node, map);
|
|
546
|
+
else addNode(newNode, map);
|
|
547
|
+
// Walk up the tree and update each parent to refer to the new children.
|
|
543
548
|
while(node.parentKey){
|
|
544
549
|
let nextParent = map.get(node.parentKey);
|
|
545
550
|
let copy = {
|
|
@@ -559,35 +564,41 @@ function $2d16d1aab63a81f4$export$d14e1352e21f4a16(options) {
|
|
|
559
564
|
node = nextParent;
|
|
560
565
|
}
|
|
561
566
|
if (newNode == null) items = items.filter((c)=>c !== node);
|
|
562
|
-
return
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
567
|
+
return {
|
|
568
|
+
items: items.map((item)=>{
|
|
569
|
+
if (item === node) return newNode;
|
|
570
|
+
return item;
|
|
571
|
+
}),
|
|
572
|
+
nodeMap: map
|
|
573
|
+
};
|
|
566
574
|
}
|
|
567
|
-
function addNode(node) {
|
|
575
|
+
function addNode(node, map) {
|
|
568
576
|
map.set(node.key, node);
|
|
569
|
-
for (let child of node.children)addNode(child);
|
|
577
|
+
for (let child of node.children)addNode(child, map);
|
|
570
578
|
}
|
|
571
|
-
function deleteNode(node) {
|
|
579
|
+
function deleteNode(node, map) {
|
|
572
580
|
map.delete(node.key);
|
|
573
|
-
for (let child of node.children)deleteNode(child);
|
|
581
|
+
for (let child of node.children)deleteNode(child, map);
|
|
574
582
|
}
|
|
575
583
|
return {
|
|
576
584
|
items: items,
|
|
577
585
|
selectedKeys: selectedKeys,
|
|
578
586
|
setSelectedKeys: setSelectedKeys,
|
|
579
587
|
getItem (key) {
|
|
580
|
-
return
|
|
588
|
+
return nodeMap.get(key);
|
|
581
589
|
},
|
|
582
590
|
insert (parentKey, index, ...values) {
|
|
583
|
-
setItems((items)=>{
|
|
584
|
-
let
|
|
591
|
+
setItems(({ items: items, nodeMap: originalMap })=>{
|
|
592
|
+
let { items: newNodes, nodeMap: newMap } = buildTree(values, originalMap, parentKey);
|
|
585
593
|
// If parentKey is null, insert into the root.
|
|
586
|
-
if (parentKey == null) return
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
594
|
+
if (parentKey == null) return {
|
|
595
|
+
items: [
|
|
596
|
+
...items.slice(0, index),
|
|
597
|
+
...newNodes,
|
|
598
|
+
...items.slice(index)
|
|
599
|
+
],
|
|
600
|
+
nodeMap: newMap
|
|
601
|
+
};
|
|
591
602
|
// Otherwise, update the parent node and its ancestors.
|
|
592
603
|
return updateTree(items, parentKey, (parentNode)=>({
|
|
593
604
|
key: parentNode.key,
|
|
@@ -595,24 +606,24 @@ function $2d16d1aab63a81f4$export$d14e1352e21f4a16(options) {
|
|
|
595
606
|
value: parentNode.value,
|
|
596
607
|
children: [
|
|
597
608
|
...parentNode.children.slice(0, index),
|
|
598
|
-
...
|
|
609
|
+
...newNodes,
|
|
599
610
|
...parentNode.children.slice(index)
|
|
600
611
|
]
|
|
601
|
-
}));
|
|
612
|
+
}), newMap);
|
|
602
613
|
});
|
|
603
614
|
},
|
|
604
615
|
insertBefore (key, ...values) {
|
|
605
|
-
let node =
|
|
616
|
+
let node = nodeMap.get(key);
|
|
606
617
|
if (!node) return;
|
|
607
|
-
let parentNode =
|
|
618
|
+
let parentNode = nodeMap.get(node.parentKey);
|
|
608
619
|
let nodes = parentNode ? parentNode.children : items;
|
|
609
620
|
let index = nodes.indexOf(node);
|
|
610
621
|
this.insert(parentNode === null || parentNode === void 0 ? void 0 : parentNode.key, index, ...values);
|
|
611
622
|
},
|
|
612
623
|
insertAfter (key, ...values) {
|
|
613
|
-
let node =
|
|
624
|
+
let node = nodeMap.get(key);
|
|
614
625
|
if (!node) return;
|
|
615
|
-
let parentNode =
|
|
626
|
+
let parentNode = nodeMap.get(node.parentKey);
|
|
616
627
|
let nodes = parentNode ? parentNode.children : items;
|
|
617
628
|
let index = nodes.indexOf(node);
|
|
618
629
|
this.insert(parentNode === null || parentNode === void 0 ? void 0 : parentNode.key, index + 1, ...values);
|
|
@@ -623,39 +634,52 @@ function $2d16d1aab63a81f4$export$d14e1352e21f4a16(options) {
|
|
|
623
634
|
append (parentKey, ...values) {
|
|
624
635
|
if (parentKey == null) this.insert(null, items.length, ...values);
|
|
625
636
|
else {
|
|
626
|
-
let parentNode =
|
|
637
|
+
let parentNode = nodeMap.get(parentKey);
|
|
627
638
|
if (!parentNode) return;
|
|
628
639
|
this.insert(parentKey, parentNode.children.length, ...values);
|
|
629
640
|
}
|
|
630
641
|
},
|
|
631
642
|
remove (...keys) {
|
|
643
|
+
if (keys.length === 0) return;
|
|
632
644
|
let newItems = items;
|
|
633
|
-
|
|
634
|
-
|
|
645
|
+
let prevMap = nodeMap;
|
|
646
|
+
let newTree;
|
|
647
|
+
for (let key of keys){
|
|
648
|
+
newTree = updateTree(newItems, key, ()=>null, prevMap);
|
|
649
|
+
prevMap = newTree.nodeMap;
|
|
650
|
+
newItems = newTree.items;
|
|
651
|
+
}
|
|
652
|
+
setItems(newTree);
|
|
635
653
|
let selection = new Set(selectedKeys);
|
|
636
|
-
for (let key of selectedKeys)if (!
|
|
654
|
+
for (let key of selectedKeys)if (!newTree.nodeMap.has(key)) selection.delete(key);
|
|
637
655
|
setSelectedKeys(selection);
|
|
638
656
|
},
|
|
639
657
|
removeSelectedItems () {
|
|
640
658
|
this.remove(...selectedKeys);
|
|
641
659
|
},
|
|
642
660
|
move (key, toParentKey, index) {
|
|
643
|
-
setItems((items)=>{
|
|
644
|
-
let node =
|
|
645
|
-
if (!node) return
|
|
646
|
-
|
|
661
|
+
setItems(({ items: items, nodeMap: originalMap })=>{
|
|
662
|
+
let node = originalMap.get(key);
|
|
663
|
+
if (!node) return {
|
|
664
|
+
items: items,
|
|
665
|
+
nodeMap: originalMap
|
|
666
|
+
};
|
|
667
|
+
let { items: newItems, nodeMap: newMap } = updateTree(items, key, ()=>null, originalMap);
|
|
647
668
|
const movedNode = {
|
|
648
669
|
...node,
|
|
649
670
|
parentKey: toParentKey
|
|
650
671
|
};
|
|
651
672
|
// If parentKey is null, insert into the root.
|
|
652
|
-
if (toParentKey == null) return
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
673
|
+
if (toParentKey == null) return {
|
|
674
|
+
items: [
|
|
675
|
+
...newItems.slice(0, index),
|
|
676
|
+
movedNode,
|
|
677
|
+
...newItems.slice(index)
|
|
678
|
+
],
|
|
679
|
+
nodeMap: newMap
|
|
680
|
+
};
|
|
657
681
|
// Otherwise, update the parent node and its ancestors.
|
|
658
|
-
return updateTree(
|
|
682
|
+
return updateTree(newItems, toParentKey, (parentNode)=>({
|
|
659
683
|
key: parentNode.key,
|
|
660
684
|
parentKey: parentNode.parentKey,
|
|
661
685
|
value: parentNode.value,
|
|
@@ -664,20 +688,21 @@ function $2d16d1aab63a81f4$export$d14e1352e21f4a16(options) {
|
|
|
664
688
|
movedNode,
|
|
665
689
|
...parentNode.children.slice(index)
|
|
666
690
|
]
|
|
667
|
-
}));
|
|
691
|
+
}), newMap);
|
|
668
692
|
});
|
|
669
693
|
},
|
|
670
694
|
update (oldKey, newValue) {
|
|
671
|
-
setItems((items)=>updateTree(items, oldKey, (oldNode)=>{
|
|
695
|
+
setItems(({ items: items, nodeMap: originalMap })=>updateTree(items, oldKey, (oldNode)=>{
|
|
672
696
|
let node = {
|
|
673
697
|
key: oldNode.key,
|
|
674
698
|
parentKey: oldNode.parentKey,
|
|
675
699
|
value: newValue,
|
|
676
700
|
children: null
|
|
677
701
|
};
|
|
678
|
-
|
|
702
|
+
let tree = buildTree(getChildren(newValue), originalMap, node.key);
|
|
703
|
+
node.children = tree.items;
|
|
679
704
|
return node;
|
|
680
|
-
}));
|
|
705
|
+
}, originalMap));
|
|
681
706
|
}
|
|
682
707
|
};
|
|
683
708
|
}
|