react-aria-components 1.15.0 → 1.16.0

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.
Files changed (93) hide show
  1. package/dist/Button.main.js +3 -2
  2. package/dist/Button.main.js.map +1 -1
  3. package/dist/Button.mjs +3 -2
  4. package/dist/Button.module.js +3 -2
  5. package/dist/Button.module.js.map +1 -1
  6. package/dist/Collection.main.js +3 -0
  7. package/dist/Collection.main.js.map +1 -1
  8. package/dist/Collection.mjs +3 -0
  9. package/dist/Collection.module.js +3 -0
  10. package/dist/Collection.module.js.map +1 -1
  11. package/dist/ComboBox.main.js +59 -8
  12. package/dist/ComboBox.main.js.map +1 -1
  13. package/dist/ComboBox.mjs +61 -12
  14. package/dist/ComboBox.module.js +61 -12
  15. package/dist/ComboBox.module.js.map +1 -1
  16. package/dist/DateField.main.js +8 -4
  17. package/dist/DateField.main.js.map +1 -1
  18. package/dist/DateField.mjs +8 -4
  19. package/dist/DateField.module.js +8 -4
  20. package/dist/DateField.module.js.map +1 -1
  21. package/dist/DatePicker.main.js +6 -2
  22. package/dist/DatePicker.main.js.map +1 -1
  23. package/dist/DatePicker.mjs +6 -2
  24. package/dist/DatePicker.module.js +6 -2
  25. package/dist/DatePicker.module.js.map +1 -1
  26. package/dist/DropZone.main.js +1 -1
  27. package/dist/DropZone.main.js.map +1 -1
  28. package/dist/DropZone.mjs +2 -2
  29. package/dist/DropZone.module.js +2 -2
  30. package/dist/DropZone.module.js.map +1 -1
  31. package/dist/FileTrigger.main.js +1 -1
  32. package/dist/FileTrigger.main.js.map +1 -1
  33. package/dist/FileTrigger.mjs +2 -2
  34. package/dist/FileTrigger.module.js +2 -2
  35. package/dist/FileTrigger.module.js.map +1 -1
  36. package/dist/GridList.main.js +7 -4
  37. package/dist/GridList.main.js.map +1 -1
  38. package/dist/GridList.mjs +7 -5
  39. package/dist/GridList.module.js +7 -5
  40. package/dist/GridList.module.js.map +1 -1
  41. package/dist/HiddenDateInput.main.js +3 -1
  42. package/dist/HiddenDateInput.main.js.map +1 -1
  43. package/dist/HiddenDateInput.mjs +3 -1
  44. package/dist/HiddenDateInput.module.js +3 -1
  45. package/dist/HiddenDateInput.module.js.map +1 -1
  46. package/dist/Keyboard.main.js.map +1 -1
  47. package/dist/Keyboard.module.js.map +1 -1
  48. package/dist/ListBox.main.js +2 -1
  49. package/dist/ListBox.main.js.map +1 -1
  50. package/dist/ListBox.mjs +3 -2
  51. package/dist/ListBox.module.js +3 -2
  52. package/dist/ListBox.module.js.map +1 -1
  53. package/dist/Menu.main.js +3 -1
  54. package/dist/Menu.main.js.map +1 -1
  55. package/dist/Menu.mjs +3 -1
  56. package/dist/Menu.module.js +3 -1
  57. package/dist/Menu.module.js.map +1 -1
  58. package/dist/Popover.main.js +1 -1
  59. package/dist/Popover.main.js.map +1 -1
  60. package/dist/Popover.mjs +3 -3
  61. package/dist/Popover.module.js +3 -3
  62. package/dist/Popover.module.js.map +1 -1
  63. package/dist/Tree.main.js +151 -102
  64. package/dist/Tree.main.js.map +1 -1
  65. package/dist/Tree.mjs +153 -106
  66. package/dist/Tree.module.js +153 -106
  67. package/dist/Tree.module.js.map +1 -1
  68. package/dist/import.mjs +3 -3
  69. package/dist/main.js +4 -0
  70. package/dist/main.js.map +1 -1
  71. package/dist/module.js +3 -3
  72. package/dist/module.js.map +1 -1
  73. package/dist/types.d.ts +77 -23
  74. package/dist/types.d.ts.map +1 -1
  75. package/dist/utils.main.js.map +1 -1
  76. package/dist/utils.module.js.map +1 -1
  77. package/package.json +23 -23
  78. package/src/Button.tsx +4 -2
  79. package/src/Collection.tsx +6 -0
  80. package/src/ComboBox.tsx +89 -12
  81. package/src/DateField.tsx +14 -5
  82. package/src/DatePicker.tsx +11 -2
  83. package/src/DropZone.tsx +2 -2
  84. package/src/FileTrigger.tsx +2 -2
  85. package/src/GridList.tsx +12 -3
  86. package/src/HiddenDateInput.tsx +2 -1
  87. package/src/Keyboard.tsx +2 -2
  88. package/src/ListBox.tsx +5 -4
  89. package/src/Menu.tsx +3 -2
  90. package/src/Popover.tsx +3 -3
  91. package/src/Tree.tsx +209 -146
  92. package/src/index.ts +4 -3
  93. package/src/utils.tsx +7 -6
package/dist/Tree.mjs CHANGED
@@ -3,14 +3,15 @@ import {CheckboxContext as $4e85f108e88277b8$export$b085522c77523c51} from "./RS
3
3
  import {DEFAULT_SLOT as $64fa3d84918910a7$export$c62b8e45d58ddad9, dom as $64fa3d84918910a7$export$df3a06d6289f983e, Provider as $64fa3d84918910a7$export$2881499e37b75b9a, useContextProps as $64fa3d84918910a7$export$29f1550f4b0d4415, useRenderProps as $64fa3d84918910a7$export$4d86445c2cf5e3} from "./utils.mjs";
4
4
  import {CollectionRendererContext as $7135fc7d473fd974$export$4feb769f8ddf26c5, DefaultCollectionRenderer as $7135fc7d473fd974$export$a164736487e3f0ae} from "./Collection.mjs";
5
5
  import {DragAndDropContext as $612b8eb6cb90e02d$export$d188a835a7bc5783, DropIndicatorContext as $612b8eb6cb90e02d$export$f55761759794cf55, useDndPersistedKeys as $612b8eb6cb90e02d$export$d1e8e3fbb7461f6, useRenderDropIndicator as $612b8eb6cb90e02d$export$971707d8a129a1f7} from "./DragAndDrop.mjs";
6
+ import {GridListHeader as $72e60046c03fbe42$export$1b574dbdb0075ff6, GridListHeaderContext as $72e60046c03fbe42$export$87f5843bfb30d205, GridListHeaderInnerContext as $72e60046c03fbe42$export$bc7e8a4031ec2a33} from "./GridList.mjs";
6
7
  import {SelectionIndicatorContext as $1d5b8b8664671ef2$export$c9549807523555e0} from "./SelectionIndicator.mjs";
7
8
  import {SharedElementTransition as $c8a5a149f625efcf$export$758399f318e6385a} from "./SharedElementTransition.mjs";
8
9
  import {TreeDropTargetDelegate as $7e0f784ed4e400df$export$82c13862611c034e} from "./TreeDropTargetDelegate.mjs";
9
- import {useLocale as $kUtXx$useLocale, useCollator as $kUtXx$useCollator, useTree as $kUtXx$useTree, ListKeyboardDelegate as $kUtXx$ListKeyboardDelegate, useFocusRing as $kUtXx$useFocusRing, FocusScope as $kUtXx$FocusScope, mergeProps as $kUtXx$mergeProps, useTreeItem as $kUtXx$useTreeItem, useHover as $kUtXx$useHover, useGridListSelectionCheckbox as $kUtXx$useGridListSelectionCheckbox, useVisuallyHidden as $kUtXx$useVisuallyHidden, useId as $kUtXx$useId} from "react-aria";
10
- import {CollectionBuilder as $kUtXx$CollectionBuilder, Collection as $kUtXx$Collection, CollectionNode as $kUtXx$CollectionNode, createLeafComponent as $kUtXx$createLeafComponent, createBranchComponent as $kUtXx$createBranchComponent, useCachedChildren as $kUtXx$useCachedChildren, LoaderNode as $kUtXx$LoaderNode} from "@react-aria/collections";
10
+ import {useLocale as $kUtXx$useLocale, useCollator as $kUtXx$useCollator, useTree as $kUtXx$useTree, ListKeyboardDelegate as $kUtXx$ListKeyboardDelegate, useFocusRing as $kUtXx$useFocusRing, FocusScope as $kUtXx$FocusScope, mergeProps as $kUtXx$mergeProps, useTreeItem as $kUtXx$useTreeItem, useHover as $kUtXx$useHover, useGridListSelectionCheckbox as $kUtXx$useGridListSelectionCheckbox, useVisuallyHidden as $kUtXx$useVisuallyHidden, useId as $kUtXx$useId, useGridListSection as $kUtXx$useGridListSection} from "react-aria";
11
+ import {BaseCollection as $kUtXx$BaseCollection, CollectionBuilder as $kUtXx$CollectionBuilder, Collection as $kUtXx$Collection, CollectionNode as $kUtXx$CollectionNode, createLeafComponent as $kUtXx$createLeafComponent, createBranchComponent as $kUtXx$createBranchComponent, useCachedChildren as $kUtXx$useCachedChildren, LoaderNode as $kUtXx$LoaderNode, SectionNode as $kUtXx$SectionNode} from "@react-aria/collections";
11
12
  import {useTreeState as $kUtXx$useTreeState} from "react-stately";
12
13
  import {filterDOMProps as $kUtXx$filterDOMProps, useObjectRef as $kUtXx$useObjectRef, useLoadMoreSentinel as $kUtXx$useLoadMoreSentinel, inertValue as $kUtXx$inertValue} from "@react-aria/utils";
13
- import $kUtXx$react, {createContext as $kUtXx$createContext, forwardRef as $kUtXx$forwardRef, useRef as $kUtXx$useRef, useEffect as $kUtXx$useEffect, useContext as $kUtXx$useContext, useMemo as $kUtXx$useMemo, useState as $kUtXx$useState} from "react";
14
+ import $kUtXx$react, {createContext as $kUtXx$createContext, forwardRef as $kUtXx$forwardRef, useRef as $kUtXx$useRef, useEffect as $kUtXx$useEffect, useContext as $kUtXx$useContext, useState as $kUtXx$useState, useMemo as $kUtXx$useMemo} from "react";
14
15
  import {useControlledState as $kUtXx$useControlledState} from "@react-stately/utils";
15
16
 
16
17
  /*
@@ -37,52 +38,95 @@ import {useControlledState as $kUtXx$useControlledState} from "@react-stately/ut
37
38
 
38
39
 
39
40
 
40
- class $2f5eaf4a2a47b4cf$var$TreeCollection {
41
- // TODO: should this collection's getters reflect the flattened structure or the original structure
42
- // If we respresent the flattened structure, it is easier for the keyboard nav but harder to find all the nodes
43
- *[Symbol.iterator]() {
44
- yield* this.flattenedRows;
45
- }
46
- get size() {
47
- return this.itemCount;
48
- }
49
- getKeys() {
50
- return this.keyMap.keys();
51
- }
52
- getItem(key) {
53
- return this.keyMap.get(key) || null;
41
+
42
+ class $2f5eaf4a2a47b4cf$var$TreeCollection extends (0, $kUtXx$BaseCollection) {
43
+ withExpandedKeys(lastExpandedKeys, expandedKeys) {
44
+ let collection = this.clone();
45
+ collection.expandedKeys = expandedKeys;
46
+ // Clone ancestor section nodes so React knows to re-render since the same item won't cause a new render but a clone creating a new object with the same value will
47
+ // Without this change, the items won't expand and collapse when virtualized inside a section
48
+ $2f5eaf4a2a47b4cf$var$TreeCollection.cloneAncestorSections(expandedKeys, lastExpandedKeys, collection);
49
+ $2f5eaf4a2a47b4cf$var$TreeCollection.cloneAncestorSections(lastExpandedKeys, expandedKeys, collection);
50
+ collection.frozen = this.frozen;
51
+ return collection;
54
52
  }
55
- at(idx) {
56
- return this.flattenedRows[idx];
53
+ // diff lastExpandedKeys and expandedKeys so we only clone what has changed
54
+ static cloneAncestorSections(keys, excludeSet, collection) {
55
+ for (let key of keys)if (!excludeSet.has(key)) {
56
+ let currentKey = key;
57
+ while(currentKey != null){
58
+ let item = collection.getItem(currentKey);
59
+ var _item_parentKey;
60
+ if ((item === null || item === void 0 ? void 0 : item.type) === 'section') {
61
+ collection.keyMap.set(currentKey, item.clone());
62
+ break;
63
+ } else currentKey = (_item_parentKey = item === null || item === void 0 ? void 0 : item.parentKey) !== null && _item_parentKey !== void 0 ? _item_parentKey : null;
64
+ }
65
+ }
57
66
  }
58
- getFirstKey() {
59
- var _this_flattenedRows_;
60
- return (_this_flattenedRows_ = this.flattenedRows[0]) === null || _this_flattenedRows_ === void 0 ? void 0 : _this_flattenedRows_.key;
67
+ *[Symbol.iterator]() {
68
+ let firstKey = this.getFirstKey();
69
+ let node = firstKey != null ? this.getItem(firstKey) : null;
70
+ while(node){
71
+ yield node;
72
+ if (node.type === 'section') node = node.nextKey ? this.getItem(node.nextKey) : null;
73
+ else {
74
+ // This will include both item and content nodes
75
+ // We handle the content nodes in useCollectionRenderer and ListLayout
76
+ let key = this.getKeyAfter(node.key);
77
+ node = key ? this.getItem(key) : null;
78
+ }
79
+ }
61
80
  }
62
81
  getLastKey() {
63
- var _this_flattenedRows_;
64
- return (_this_flattenedRows_ = this.flattenedRows[this.flattenedRows.length - 1]) === null || _this_flattenedRows_ === void 0 ? void 0 : _this_flattenedRows_.key;
82
+ // Find the deepest expanded child. We don't use collection.getLastKey() here
83
+ // because that will return the deepest child regardless of expandedKeys.
84
+ // Instead, start from the last top-level key and walk down.
85
+ let key = this.lastKey;
86
+ if (key == null) return null;
87
+ let node = this.getItem(key);
88
+ while((node === null || node === void 0 ? void 0 : node.lastChildKey) != null && (node.type !== 'item' || this.expandedKeys.has(node.key)))node = this.getItem(node.lastChildKey);
89
+ return node === null || node === void 0 ? void 0 : node.key;
65
90
  }
66
91
  getKeyAfter(key) {
67
- var _this_flattenedRows_;
68
- let index = this.flattenedRows.findIndex((row)=>row.key === key);
69
- return (_this_flattenedRows_ = this.flattenedRows[index + 1]) === null || _this_flattenedRows_ === void 0 ? void 0 : _this_flattenedRows_.key;
92
+ let node = this.getItem(key);
93
+ if (!node) return null;
94
+ if ((this.expandedKeys.has(node.key) || node.type !== 'item') && node.firstChildKey != null) return node.firstChildKey;
95
+ while(node){
96
+ if (node.nextKey != null) return node.nextKey;
97
+ if (node.parentKey != null) node = this.getItem(node.parentKey);
98
+ else return null;
99
+ }
100
+ return null;
70
101
  }
71
102
  getKeyBefore(key) {
72
- var _this_flattenedRows_;
73
- let index = this.flattenedRows.findIndex((row)=>row.key === key);
74
- return (_this_flattenedRows_ = this.flattenedRows[index - 1]) === null || _this_flattenedRows_ === void 0 ? void 0 : _this_flattenedRows_.key;
103
+ let node = this.getItem(key);
104
+ if (!node) return null;
105
+ if (node.prevKey != null) {
106
+ node = this.getItem(node.prevKey);
107
+ // If the lastChildKey is expanded, check its lastChildKey
108
+ while(node && (node.type !== 'item' || this.expandedKeys.has(node.key)) && node.lastChildKey != null)node = this.getItem(node.lastChildKey);
109
+ var _node_key;
110
+ return (_node_key = node === null || node === void 0 ? void 0 : node.key) !== null && _node_key !== void 0 ? _node_key : null;
111
+ }
112
+ return node.parentKey;
75
113
  }
76
- // Note that this will return Content nodes in addition to nested TreeItems
77
114
  getChildren(key) {
78
- let keyMap = this.keyMap;
115
+ let self = this;
79
116
  return {
80
117
  *[Symbol.iterator] () {
81
- let parent = keyMap.get(key);
82
- let node = (parent === null || parent === void 0 ? void 0 : parent.firstChildKey) != null ? keyMap.get(parent.firstChildKey) : null;
83
- while(node){
118
+ let parent = self.getItem(key);
119
+ let node = (parent === null || parent === void 0 ? void 0 : parent.firstChildKey) != null ? self.getItem(parent.firstChildKey) : null;
120
+ if (parent && parent.type === 'section' && node) // Stop once either the node is null or the node is the parent's sibling
121
+ while(node && node.key !== parent.nextKey){
122
+ yield self.getItem(node.key);
123
+ // This will include content nodes which we skip in ListLayout
124
+ let key = self.getKeyAfter(node.key);
125
+ node = key != null ? self.getItem(key) : null;
126
+ }
127
+ else while(node){
84
128
  yield node;
85
- node = node.nextKey != null ? keyMap.get(node.nextKey) : undefined;
129
+ node = node.nextKey != null ? self.getItem(node.nextKey) : null;
86
130
  }
87
131
  }
88
132
  };
@@ -91,17 +135,8 @@ class $2f5eaf4a2a47b4cf$var$TreeCollection {
91
135
  let item = this.getItem(key);
92
136
  return item ? item.textValue : '';
93
137
  }
94
- constructor(opts){
95
- this.keyMap = new Map();
96
- this.itemCount = 0;
97
- let { collection: collection, expandedKeys: expandedKeys } = opts;
98
- let { flattenedRows: flattenedRows, keyMap: keyMap, itemCount: itemCount } = $2f5eaf4a2a47b4cf$var$flattenTree(collection, {
99
- expandedKeys: expandedKeys
100
- });
101
- this.flattenedRows = flattenedRows;
102
- // Use generated keyMap because it contains the modified collection nodes (aka it adjusts the indexes so that they ignore the existence of the Content items)
103
- this.keyMap = keyMap;
104
- this.itemCount = itemCount;
138
+ constructor(...args){
139
+ super(...args), this.expandedKeys = new Set();
105
140
  }
106
141
  }
107
142
  const $2f5eaf4a2a47b4cf$export$dfae7d399eea2568 = /*#__PURE__*/ (0, $kUtXx$createContext)(null);
@@ -110,7 +145,8 @@ const $2f5eaf4a2a47b4cf$export$7fbedc92909ed28e = /*#__PURE__*/ (0, $kUtXx$forwa
110
145
  // Render the portal first so that we have the collection by the time we render the DOM in SSR.
111
146
  [props, ref] = (0, $64fa3d84918910a7$export$29f1550f4b0d4415)(props, ref, $2f5eaf4a2a47b4cf$export$dfae7d399eea2568);
112
147
  return /*#__PURE__*/ (0, $kUtXx$react).createElement((0, $kUtXx$CollectionBuilder), {
113
- content: /*#__PURE__*/ (0, $kUtXx$react).createElement((0, $kUtXx$Collection), props)
148
+ content: /*#__PURE__*/ (0, $kUtXx$react).createElement((0, $kUtXx$Collection), props),
149
+ createCollection: ()=>new $2f5eaf4a2a47b4cf$var$TreeCollection()
114
150
  }, (collection)=>/*#__PURE__*/ (0, $kUtXx$react).createElement($2f5eaf4a2a47b4cf$var$TreeInner, {
115
151
  props: props,
116
152
  collection: collection,
@@ -149,16 +185,16 @@ function $2f5eaf4a2a47b4cf$var$TreeInner({ props: props, collection: collection,
149
185
  let { CollectionRoot: CollectionRoot, isVirtualized: isVirtualized, layoutDelegate: layoutDelegate, dropTargetDelegate: ctxDropTargetDelegate } = (0, $kUtXx$useContext)((0, $7135fc7d473fd974$export$4feb769f8ddf26c5));
150
186
  // Kinda annoying that we have to replicate this code here as well as in useTreeState, but don't want to add
151
187
  // flattenCollection stuff to useTreeState. Think about this later
152
- let [expandedKeys, setExpandedKeys] = (0, $kUtXx$useControlledState)(propExpandedKeys ? $2f5eaf4a2a47b4cf$var$convertExpanded(propExpandedKeys) : undefined, propDefaultExpandedKeys ? $2f5eaf4a2a47b4cf$var$convertExpanded(propDefaultExpandedKeys) : new Set(), onExpandedChange);
153
- let flattenedCollection = (0, $kUtXx$useMemo)(()=>{
154
- return new $2f5eaf4a2a47b4cf$var$TreeCollection({
155
- collection: collection,
156
- expandedKeys: expandedKeys
157
- });
158
- }, [
159
- collection,
160
- expandedKeys
161
- ]);
188
+ let [expandedKeys, setExpandedKeys] = (0, $kUtXx$useControlledState)(propExpandedKeys ? new Set(propExpandedKeys) : undefined, propDefaultExpandedKeys ? new Set(propDefaultExpandedKeys) : new Set(), onExpandedChange);
189
+ let [lastCollection, setLastCollection] = (0, $kUtXx$useState)(collection);
190
+ let [lastExpandedKeys, setLastExpandedKeys] = (0, $kUtXx$useState)(expandedKeys);
191
+ let [flattenedCollection, setFlattenedCollection] = (0, $kUtXx$useState)(()=>collection.withExpandedKeys(lastExpandedKeys, expandedKeys));
192
+ // if the lastExpandedKeys is not the same as the currentExpandedKeys or the collection has changed, then run this
193
+ if (!$2f5eaf4a2a47b4cf$var$areSetsEqual(lastExpandedKeys, expandedKeys) || collection !== lastCollection) {
194
+ setFlattenedCollection(collection.withExpandedKeys(lastExpandedKeys, expandedKeys));
195
+ setLastCollection(collection);
196
+ setLastExpandedKeys(expandedKeys);
197
+ }
162
198
  let state = (0, $kUtXx$useTreeState)({
163
199
  ...props,
164
200
  selectionMode: selectionMode,
@@ -219,7 +255,7 @@ function $2f5eaf4a2a47b4cf$var$TreeInner({ props: props, collection: collection,
219
255
  var _dragAndDropHooks_isVirtualDragging;
220
256
  let key = e.target.key;
221
257
  let item = state.collection.getItem(key);
222
- let isExpanded = expandedKeys !== 'all' && expandedKeys.has(key);
258
+ let isExpanded = expandedKeys.has(key);
223
259
  if (item && item.hasChildNodes && (!isExpanded || (dragAndDropHooks === null || dragAndDropHooks === void 0 ? void 0 : (_dragAndDropHooks_isVirtualDragging = dragAndDropHooks.isVirtualDragging) === null || _dragAndDropHooks_isVirtualDragging === void 0 ? void 0 : _dragAndDropHooks_isVirtualDragging.call(dragAndDropHooks)))) state.toggleKey(key);
224
260
  }
225
261
  },
@@ -643,52 +679,6 @@ const $2f5eaf4a2a47b4cf$export$533df5f8efd48cc9 = (0, $kUtXx$createLeafComponent
643
679
  style: style
644
680
  }, renderProps.children)));
645
681
  });
646
- function $2f5eaf4a2a47b4cf$var$convertExpanded(expanded) {
647
- if (!expanded) return new Set();
648
- return expanded === 'all' ? 'all' : new Set(expanded);
649
- }
650
- function $2f5eaf4a2a47b4cf$var$flattenTree(collection, opts) {
651
- let { expandedKeys: expandedKeys = new Set() } = opts;
652
- let keyMap = new Map();
653
- let flattenedRows = [];
654
- // Need to count the items here because BaseCollection will return the full item count regardless if items are hidden via collapsed rows
655
- let itemCount = 0;
656
- let parentLookup = new Map();
657
- let visitNode = (node)=>{
658
- if (node.type === 'item' || node.type === 'loader') {
659
- let parentKey = node === null || node === void 0 ? void 0 : node.parentKey;
660
- let clone = {
661
- ...node
662
- };
663
- if (parentKey != null) {
664
- // TODO: assumes that non item content node (aka TreeItemContent always placed before Collection) will be always placed before the child rows. If we can't make this assumption then we can filter out
665
- // every non-item per level and assign indicies based off the node's position in said filtered array
666
- let hasContentNode = [
667
- ...collection.getChildren(parentKey)
668
- ][0].type !== 'item';
669
- if (hasContentNode) clone.index = (node === null || node === void 0 ? void 0 : node.index) != null ? (node === null || node === void 0 ? void 0 : node.index) - 1 : 0;
670
- // For loader nodes that have a parent (aka non-root level loaders), these need their levels incremented by 1 for parity with their sibiling rows
671
- // (Collection only increments the level if it is a "item" type node).
672
- if (node.type === 'loader') clone.level = node.level + 1;
673
- keyMap.set(clone.key, clone);
674
- } else keyMap.set(node.key, node);
675
- // Grab the modified node from the key map so our flattened list and modified key map point to the same nodes
676
- let modifiedNode = keyMap.get(node.key) || node;
677
- if (modifiedNode.level === 0 || modifiedNode.parentKey != null && expandedKeys.has(modifiedNode.parentKey) && parentLookup.get(modifiedNode.parentKey)) {
678
- if (modifiedNode.type === 'item') itemCount++;
679
- flattenedRows.push(modifiedNode);
680
- parentLookup.set(modifiedNode.key, true);
681
- }
682
- } else if (node.type !== null) keyMap.set(node.key, node);
683
- for (let child of collection.getChildren(node.key))visitNode(child);
684
- };
685
- for (let node of collection)visitNode(node);
686
- return {
687
- flattenedRows: flattenedRows,
688
- keyMap: keyMap,
689
- itemCount: itemCount
690
- };
691
- }
692
682
  function $2f5eaf4a2a47b4cf$var$TreeDropIndicatorWrapper(props, ref) {
693
683
  var _dropState_collection_getItem;
694
684
  ref = (0, $kUtXx$useObjectRef)(ref);
@@ -765,7 +755,64 @@ function $2f5eaf4a2a47b4cf$var$RootDropIndicator() {
765
755
  ref: ref
766
756
  })));
767
757
  }
758
+ const $2f5eaf4a2a47b4cf$export$1cd40fa16d4f033a = /*#__PURE__*/ (0, $kUtXx$createBranchComponent)((0, $kUtXx$SectionNode), (props, ref, item)=>{
759
+ let state = (0, $kUtXx$useContext)($2f5eaf4a2a47b4cf$export$8953bccafd7bce87);
760
+ let { CollectionBranch: CollectionBranch } = (0, $kUtXx$useContext)((0, $7135fc7d473fd974$export$4feb769f8ddf26c5));
761
+ let headingRef = (0, $kUtXx$useRef)(null);
762
+ ref = (0, $kUtXx$useObjectRef)(ref);
763
+ var _props_arialabel;
764
+ let { rowHeaderProps: rowHeaderProps, rowProps: rowProps, rowGroupProps: rowGroupProps } = (0, $kUtXx$useGridListSection)({
765
+ 'aria-label': (_props_arialabel = props['aria-label']) !== null && _props_arialabel !== void 0 ? _props_arialabel : undefined
766
+ }, state, ref);
767
+ let renderProps = (0, $64fa3d84918910a7$export$4d86445c2cf5e3)({
768
+ ...props,
769
+ id: undefined,
770
+ children: undefined,
771
+ defaultClassName: 'react-aria-TreeSection',
772
+ values: undefined
773
+ });
774
+ let DOMProps = (0, $kUtXx$filterDOMProps)(props, {
775
+ global: true
776
+ });
777
+ delete DOMProps.id;
778
+ return /*#__PURE__*/ (0, $kUtXx$react).createElement((0, $64fa3d84918910a7$export$df3a06d6289f983e).section, {
779
+ ...(0, $kUtXx$mergeProps)(DOMProps, renderProps, rowGroupProps),
780
+ ref: ref
781
+ }, /*#__PURE__*/ (0, $kUtXx$react).createElement((0, $64fa3d84918910a7$export$2881499e37b75b9a), {
782
+ values: [
783
+ [
784
+ (0, $72e60046c03fbe42$export$87f5843bfb30d205),
785
+ {
786
+ ...rowProps,
787
+ ref: headingRef
788
+ }
789
+ ],
790
+ [
791
+ (0, $72e60046c03fbe42$export$bc7e8a4031ec2a33),
792
+ {
793
+ ...rowHeaderProps
794
+ }
795
+ ]
796
+ ]
797
+ }, /*#__PURE__*/ (0, $kUtXx$react).createElement(CollectionBranch, {
798
+ collection: state.collection,
799
+ parent: item
800
+ })));
801
+ });
802
+ const $2f5eaf4a2a47b4cf$export$2a73ea8963a8efd8 = (props)=>{
803
+ return /*#__PURE__*/ (0, $kUtXx$react).createElement((0, $72e60046c03fbe42$export$1b574dbdb0075ff6), {
804
+ className: "react-aria-TreeHeader",
805
+ ...props
806
+ }, props.children);
807
+ };
808
+ function $2f5eaf4a2a47b4cf$var$areSetsEqual(a, b) {
809
+ if (a.size !== b.size) return false;
810
+ for (let item of a){
811
+ if (!b.has(item)) return false;
812
+ }
813
+ return true;
814
+ }
768
815
 
769
816
 
770
- export {$2f5eaf4a2a47b4cf$export$dfae7d399eea2568 as TreeContext, $2f5eaf4a2a47b4cf$export$8953bccafd7bce87 as TreeStateContext, $2f5eaf4a2a47b4cf$export$7fbedc92909ed28e as Tree, $2f5eaf4a2a47b4cf$export$4b687e3f663d618c as TreeItemContent, $2f5eaf4a2a47b4cf$export$36b5dda0d9bc8f78 as TreeItemContentContext, $2f5eaf4a2a47b4cf$export$53d36ab85dc89436 as TreeItem, $2f5eaf4a2a47b4cf$export$533df5f8efd48cc9 as TreeLoadMoreItem};
817
+ export {$2f5eaf4a2a47b4cf$export$dfae7d399eea2568 as TreeContext, $2f5eaf4a2a47b4cf$export$8953bccafd7bce87 as TreeStateContext, $2f5eaf4a2a47b4cf$export$7fbedc92909ed28e as Tree, $2f5eaf4a2a47b4cf$export$4b687e3f663d618c as TreeItemContent, $2f5eaf4a2a47b4cf$export$36b5dda0d9bc8f78 as TreeItemContentContext, $2f5eaf4a2a47b4cf$export$53d36ab85dc89436 as TreeItem, $2f5eaf4a2a47b4cf$export$533df5f8efd48cc9 as TreeLoadMoreItem, $2f5eaf4a2a47b4cf$export$1cd40fa16d4f033a as TreeSection, $2f5eaf4a2a47b4cf$export$2a73ea8963a8efd8 as TreeHeader};
771
818
  //# sourceMappingURL=Tree.module.js.map