@fluentui/react-tree 9.0.0-beta.1 → 9.0.0-beta.10

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 (183) hide show
  1. package/.swcrc +30 -0
  2. package/CHANGELOG.json +385 -1
  3. package/CHANGELOG.md +118 -2
  4. package/dist/index.d.ts +139 -25
  5. package/lib/Tree.js.map +1 -1
  6. package/lib/TreeItem.js.map +1 -1
  7. package/lib/TreeItemLayout.js.map +1 -1
  8. package/lib/TreeItemPersonaLayout.js.map +1 -1
  9. package/lib/components/Tree/Tree.js.map +1 -1
  10. package/lib/components/Tree/Tree.types.js +1 -1
  11. package/lib/components/Tree/Tree.types.js.map +1 -1
  12. package/lib/components/Tree/index.js.map +1 -1
  13. package/lib/components/Tree/renderTree.js +1 -3
  14. package/lib/components/Tree/renderTree.js.map +1 -1
  15. package/lib/components/Tree/useTree.js +5 -4
  16. package/lib/components/Tree/useTree.js.map +1 -1
  17. package/lib/components/Tree/useTreeContextValues.js +3 -3
  18. package/lib/components/Tree/useTreeContextValues.js.map +1 -1
  19. package/lib/components/Tree/useTreeStyles.js.map +1 -1
  20. package/lib/components/TreeItem/TreeItem.js +10 -1
  21. package/lib/components/TreeItem/TreeItem.js.map +1 -1
  22. package/lib/components/TreeItem/TreeItem.types.js +1 -1
  23. package/lib/components/TreeItem/TreeItem.types.js.map +1 -1
  24. package/lib/components/TreeItem/index.js.map +1 -1
  25. package/lib/components/TreeItem/renderTreeItem.js +2 -12
  26. package/lib/components/TreeItem/renderTreeItem.js.map +1 -1
  27. package/lib/components/TreeItem/useTreeItem.js.map +1 -1
  28. package/lib/components/TreeItem/useTreeItemContextValues.js.map +1 -1
  29. package/lib/components/TreeItem/useTreeItemStyles.js.map +1 -1
  30. package/lib/components/TreeItemLayout/TreeItemLayout.js +3 -1
  31. package/lib/components/TreeItemLayout/TreeItemLayout.js.map +1 -1
  32. package/lib/components/TreeItemLayout/TreeItemLayout.types.js.map +1 -1
  33. package/lib/components/TreeItemLayout/index.js.map +1 -1
  34. package/lib/components/TreeItemLayout/renderTreeItemLayout.js +1 -9
  35. package/lib/components/TreeItemLayout/renderTreeItemLayout.js.map +1 -1
  36. package/lib/components/TreeItemLayout/useTreeItemLayout.js +1 -0
  37. package/lib/components/TreeItemLayout/useTreeItemLayout.js.map +1 -1
  38. package/lib/components/TreeItemLayout/useTreeItemLayoutStyles.js.map +1 -1
  39. package/lib/components/TreeItemPersonaLayout/TreeItemPersonaLayout.js +3 -1
  40. package/lib/components/TreeItemPersonaLayout/TreeItemPersonaLayout.js.map +1 -1
  41. package/lib/components/TreeItemPersonaLayout/TreeItemPersonaLayout.types.js.map +1 -1
  42. package/lib/components/TreeItemPersonaLayout/index.js.map +1 -1
  43. package/lib/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js +2 -14
  44. package/lib/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js.map +1 -1
  45. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js +1 -0
  46. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js.map +1 -1
  47. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutContextValues.js.map +1 -1
  48. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.js.map +1 -1
  49. package/lib/contexts/index.js.map +1 -1
  50. package/lib/contexts/treeContext.js +1 -2
  51. package/lib/contexts/treeContext.js.map +1 -1
  52. package/lib/contexts/treeItemContext.js +2 -4
  53. package/lib/contexts/treeItemContext.js.map +1 -1
  54. package/lib/hooks/index.js +1 -1
  55. package/lib/hooks/index.js.map +1 -1
  56. package/lib/hooks/useFlatTree.js +77 -0
  57. package/lib/hooks/useFlatTree.js.map +1 -0
  58. package/lib/hooks/useFlatTreeNavigation.js +10 -10
  59. package/lib/hooks/useFlatTreeNavigation.js.map +1 -1
  60. package/lib/hooks/useHTMLElementWalker.js +5 -5
  61. package/lib/hooks/useHTMLElementWalker.js.map +1 -1
  62. package/lib/hooks/useNestedTreeNavigation.js.map +1 -1
  63. package/lib/hooks/useOpenItemsState.js.map +1 -1
  64. package/lib/hooks/useRovingTabIndexes.js.map +1 -1
  65. package/lib/index.js +1 -1
  66. package/lib/index.js.map +1 -1
  67. package/lib/utils/ImmutableSet.js.map +1 -1
  68. package/lib/utils/assert.js +1 -0
  69. package/lib/utils/assert.js.map +1 -1
  70. package/lib/utils/createFlatTreeItems.js +109 -0
  71. package/lib/utils/createFlatTreeItems.js.map +1 -0
  72. package/lib/utils/flattenTree.js +75 -16
  73. package/lib/utils/flattenTree.js.map +1 -1
  74. package/lib/utils/nextTypeAheadElement.js +2 -2
  75. package/lib/utils/nextTypeAheadElement.js.map +1 -1
  76. package/lib/utils/normalizeOpenItems.js.map +1 -1
  77. package/lib/utils/tokens.js.map +1 -1
  78. package/lib/utils/treeItemFilter.js.map +1 -1
  79. package/lib-commonjs/Tree.js +5 -4
  80. package/lib-commonjs/Tree.js.map +1 -1
  81. package/lib-commonjs/TreeItem.js +5 -4
  82. package/lib-commonjs/TreeItem.js.map +1 -1
  83. package/lib-commonjs/TreeItemLayout.js +5 -4
  84. package/lib-commonjs/TreeItemLayout.js.map +1 -1
  85. package/lib-commonjs/TreeItemPersonaLayout.js +5 -4
  86. package/lib-commonjs/TreeItemPersonaLayout.js.map +1 -1
  87. package/lib-commonjs/components/Tree/Tree.js +18 -22
  88. package/lib-commonjs/components/Tree/Tree.js.map +1 -1
  89. package/lib-commonjs/components/Tree/Tree.types.js +5 -2
  90. package/lib-commonjs/components/Tree/Tree.types.js.map +1 -1
  91. package/lib-commonjs/components/Tree/index.js +10 -9
  92. package/lib-commonjs/components/Tree/index.js.map +1 -1
  93. package/lib-commonjs/components/Tree/renderTree.js +16 -18
  94. package/lib-commonjs/components/Tree/renderTree.js.map +1 -1
  95. package/lib-commonjs/components/Tree/useTree.js +88 -101
  96. package/lib-commonjs/components/Tree/useTree.js.map +1 -1
  97. package/lib-commonjs/components/Tree/useTreeContextValues.js +22 -28
  98. package/lib-commonjs/components/Tree/useTreeContextValues.js.map +1 -1
  99. package/lib-commonjs/components/Tree/useTreeStyles.js +31 -20
  100. package/lib-commonjs/components/Tree/useTreeStyles.js.map +1 -1
  101. package/lib-commonjs/components/TreeItem/TreeItem.js +18 -17
  102. package/lib-commonjs/components/TreeItem/TreeItem.js.map +1 -1
  103. package/lib-commonjs/components/TreeItem/TreeItem.types.js +5 -3
  104. package/lib-commonjs/components/TreeItem/TreeItem.types.js.map +1 -1
  105. package/lib-commonjs/components/TreeItem/index.js +9 -8
  106. package/lib-commonjs/components/TreeItem/index.js.map +1 -1
  107. package/lib-commonjs/components/TreeItem/renderTreeItem.js +19 -32
  108. package/lib-commonjs/components/TreeItem/renderTreeItem.js.map +1 -1
  109. package/lib-commonjs/components/TreeItem/useTreeItem.js +229 -249
  110. package/lib-commonjs/components/TreeItem/useTreeItem.js.map +1 -1
  111. package/lib-commonjs/components/TreeItem/useTreeItemContextValues.js +24 -20
  112. package/lib-commonjs/components/TreeItem/useTreeItemContextValues.js.map +1 -1
  113. package/lib-commonjs/components/TreeItem/useTreeItemStyles.js +353 -188
  114. package/lib-commonjs/components/TreeItem/useTreeItemStyles.js.map +1 -1
  115. package/lib-commonjs/components/TreeItemLayout/TreeItemLayout.js +16 -15
  116. package/lib-commonjs/components/TreeItemLayout/TreeItemLayout.js.map +1 -1
  117. package/lib-commonjs/components/TreeItemLayout/TreeItemLayout.types.js +3 -2
  118. package/lib-commonjs/components/TreeItemLayout/TreeItemLayout.types.js.map +1 -1
  119. package/lib-commonjs/components/TreeItemLayout/index.js +9 -8
  120. package/lib-commonjs/components/TreeItemLayout/index.js.map +1 -1
  121. package/lib-commonjs/components/TreeItemLayout/renderTreeItemLayout.js +14 -27
  122. package/lib-commonjs/components/TreeItemLayout/renderTreeItemLayout.js.map +1 -1
  123. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayout.js +42 -52
  124. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayout.js.map +1 -1
  125. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayoutStyles.js +126 -88
  126. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayoutStyles.js.map +1 -1
  127. package/lib-commonjs/components/TreeItemPersonaLayout/TreeItemPersonaLayout.js +18 -17
  128. package/lib-commonjs/components/TreeItemPersonaLayout/TreeItemPersonaLayout.js.map +1 -1
  129. package/lib-commonjs/components/TreeItemPersonaLayout/TreeItemPersonaLayout.types.js +3 -2
  130. package/lib-commonjs/components/TreeItemPersonaLayout/TreeItemPersonaLayout.types.js.map +1 -1
  131. package/lib-commonjs/components/TreeItemPersonaLayout/index.js +9 -8
  132. package/lib-commonjs/components/TreeItemPersonaLayout/index.js.map +1 -1
  133. package/lib-commonjs/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js +17 -34
  134. package/lib-commonjs/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js.map +1 -1
  135. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js +46 -61
  136. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js.map +1 -1
  137. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutContextValues.js +18 -15
  138. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutContextValues.js.map +1 -1
  139. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.js +165 -101
  140. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.js.map +1 -1
  141. package/lib-commonjs/contexts/index.js +6 -5
  142. package/lib-commonjs/contexts/index.js.map +1 -1
  143. package/lib-commonjs/contexts/treeContext.js +25 -17
  144. package/lib-commonjs/contexts/treeContext.js.map +1 -1
  145. package/lib-commonjs/contexts/treeItemContext.js +20 -12
  146. package/lib-commonjs/contexts/treeItemContext.js.map +1 -1
  147. package/lib-commonjs/hooks/index.js +7 -6
  148. package/lib-commonjs/hooks/index.js.map +1 -1
  149. package/lib-commonjs/hooks/useFlatTree.js +86 -0
  150. package/lib-commonjs/hooks/useFlatTree.js.map +1 -0
  151. package/lib-commonjs/hooks/useFlatTreeNavigation.js +73 -72
  152. package/lib-commonjs/hooks/useFlatTreeNavigation.js.map +1 -1
  153. package/lib-commonjs/hooks/useHTMLElementWalker.js +94 -83
  154. package/lib-commonjs/hooks/useHTMLElementWalker.js.map +1 -1
  155. package/lib-commonjs/hooks/useNestedTreeNavigation.js +61 -58
  156. package/lib-commonjs/hooks/useNestedTreeNavigation.js.map +1 -1
  157. package/lib-commonjs/hooks/useOpenItemsState.js +32 -22
  158. package/lib-commonjs/hooks/useOpenItemsState.js.map +1 -1
  159. package/lib-commonjs/hooks/useRovingTabIndexes.js +56 -53
  160. package/lib-commonjs/hooks/useRovingTabIndexes.js.map +1 -1
  161. package/lib-commonjs/index.js +48 -180
  162. package/lib-commonjs/index.js.map +1 -1
  163. package/lib-commonjs/utils/ImmutableSet.js +39 -38
  164. package/lib-commonjs/utils/ImmutableSet.js.map +1 -1
  165. package/lib-commonjs/utils/assert.js +13 -9
  166. package/lib-commonjs/utils/assert.js.map +1 -1
  167. package/lib-commonjs/utils/createFlatTreeItems.js +126 -0
  168. package/lib-commonjs/utils/createFlatTreeItems.js.map +1 -0
  169. package/lib-commonjs/utils/flattenTree.js +55 -32
  170. package/lib-commonjs/utils/flattenTree.js.map +1 -1
  171. package/lib-commonjs/utils/nextTypeAheadElement.js +18 -16
  172. package/lib-commonjs/utils/nextTypeAheadElement.js.map +1 -1
  173. package/lib-commonjs/utils/normalizeOpenItems.js +13 -9
  174. package/lib-commonjs/utils/normalizeOpenItems.js.map +1 -1
  175. package/lib-commonjs/utils/tokens.js +30 -20
  176. package/lib-commonjs/utils/tokens.js.map +1 -1
  177. package/lib-commonjs/utils/treeItemFilter.js +9 -7
  178. package/lib-commonjs/utils/treeItemFilter.js.map +1 -1
  179. package/package.json +19 -15
  180. package/lib/hooks/useFlatTreeItems.js +0 -134
  181. package/lib/hooks/useFlatTreeItems.js.map +0 -1
  182. package/lib-commonjs/hooks/useFlatTreeItems.js +0 -141
  183. package/lib-commonjs/hooks/useFlatTreeItems.js.map +0 -1
@@ -1,134 +0,0 @@
1
- import { useEventCallback } from '@fluentui/react-utilities';
2
- import * as React from 'react';
3
- import { useFlatTreeNavigation } from './useFlatTreeNavigation';
4
- import { useOpenItemsState } from './useOpenItemsState';
5
- export function useFlatTreeItems_unstable(items, options) {
6
- const references = React.useMemo(() => createTreeItemPropsRefs(items), [items]);
7
- const [openItems, updateOpenItems] = useOpenItemsState(options !== null && options !== void 0 ? options : {});
8
- const [navigate, treeRef] = useFlatTreeNavigation(references);
9
- const handleOpenChange = useEventCallback((event, data) => {
10
- event.preventDefault();
11
- updateOpenItems(data);
12
- });
13
- const handleNavigation = useEventCallback((event, data) => {
14
- event.preventDefault();
15
- navigate(data);
16
- });
17
- const lazyFlatTreeItems = React.useMemo(() => createLazyFlatTreeItems(references, {
18
- filter: item => isTreeItemVisible(item, {
19
- openItems,
20
- references
21
- })
22
- }), [references, openItems]);
23
- return [{
24
- ref: treeRef,
25
- openItems,
26
- onOpenChange: handleOpenChange,
27
- // eslint-disable-next-line @typescript-eslint/naming-convention
28
- onNavigation_unstable: handleNavigation
29
- }, lazyFlatTreeItems];
30
- }
31
- function isTreeItemVisible(itemRef, {
32
- openItems,
33
- references
34
- }) {
35
- if (itemRef.props['aria-level'] === 1) {
36
- return true;
37
- }
38
- while (itemRef.parentId !== undefined) {
39
- if (!openItems.has(itemRef.parentId)) {
40
- return false;
41
- }
42
- const parent = references.getParent(itemRef);
43
- if (!parent) {
44
- return false;
45
- }
46
- itemRef = parent;
47
- }
48
- return true;
49
- }
50
- function createTreeItemPropsRefs(flatTreeItemProps) {
51
- var _a, _b;
52
- const root = {
53
- props: {
54
- id: 'root',
55
- leaf: false,
56
- 'aria-level': 0,
57
- 'aria-posinset': 0
58
- },
59
- childrenSize: 0,
60
- index: -1
61
- };
62
- const treeItemPropsRefsPerId = new Map();
63
- const refs = [];
64
- for (let index = 0; index < flatTreeItemProps.length; index++) {
65
- const {
66
- parentId,
67
- ...treeItemProps
68
- } = flatTreeItemProps[index];
69
- const nextPartialItem = flatTreeItemProps[index + 1];
70
- const currentParentRef = parentId ? (_a = treeItemPropsRefsPerId.get(parentId)) !== null && _a !== void 0 ? _a : root : root;
71
- const isLeaf = (nextPartialItem === null || nextPartialItem === void 0 ? void 0 : nextPartialItem.parentId) !== treeItemProps.id;
72
- const currentLevel = ((_b = currentParentRef.props['aria-level']) !== null && _b !== void 0 ? _b : 0) + 1;
73
- currentParentRef.childrenSize++;
74
- const treeItemPropsRef = {
75
- props: {
76
- ...treeItemProps,
77
- 'aria-level': currentLevel,
78
- 'aria-posinset': currentParentRef.childrenSize,
79
- leaf: isLeaf
80
- },
81
- parentId,
82
- childrenSize: 0,
83
- index: -1
84
- };
85
- treeItemPropsRefsPerId.set(treeItemPropsRef.props.id, treeItemPropsRef);
86
- refs.push(treeItemPropsRef);
87
- }
88
- function getParent(itemRef) {
89
- const parentRef = itemRef.parentId ? treeItemPropsRefsPerId.get(itemRef.parentId) : root;
90
- return parentRef !== null && parentRef !== void 0 ? parentRef : null;
91
- }
92
- function get(id) {
93
- var _a;
94
- return (_a = treeItemPropsRefsPerId.get(id)) !== null && _a !== void 0 ? _a : null;
95
- }
96
- return {
97
- refs,
98
- getParent,
99
- get
100
- };
101
- }
102
- function createLazyFlatTreeItems(treeItemPropsRefs, {
103
- filter = () => true
104
- }) {
105
- const flatTreeItems = {
106
- get: treeItemPropsRefs.get,
107
- toArray: () => flatTreeItems.map(identity),
108
- map: fn => {
109
- const items = [];
110
- for (let index = 0; index < treeItemPropsRefs.refs.length; index++) {
111
- const currentItemRef = treeItemPropsRefs.refs[index];
112
- const currentParentRef = treeItemPropsRefs.getParent(currentItemRef);
113
- if (!currentParentRef) {
114
- break;
115
- }
116
- if (filter(currentItemRef)) {
117
- currentItemRef.index = index;
118
- items.push(fn({
119
- ...currentItemRef.props,
120
- 'aria-setsize': currentParentRef.childrenSize
121
- }));
122
- } else {
123
- index += currentParentRef.childrenSize - 1 + currentItemRef.childrenSize;
124
- }
125
- }
126
- return items;
127
- }
128
- };
129
- return flatTreeItems;
130
- }
131
- function identity(item) {
132
- return item;
133
- }
134
- //# sourceMappingURL=useFlatTreeItems.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["useEventCallback","React","useFlatTreeNavigation","useOpenItemsState","useFlatTreeItems_unstable","items","options","references","useMemo","createTreeItemPropsRefs","openItems","updateOpenItems","navigate","treeRef","handleOpenChange","event","data","preventDefault","handleNavigation","lazyFlatTreeItems","createLazyFlatTreeItems","filter","item","isTreeItemVisible","ref","onOpenChange","onNavigation_unstable","itemRef","props","parentId","undefined","has","parent","getParent","flatTreeItemProps","root","id","leaf","childrenSize","index","treeItemPropsRefsPerId","Map","refs","length","treeItemProps","nextPartialItem","currentParentRef","_a","get","isLeaf","currentLevel","_b","treeItemPropsRef","set","push","parentRef","treeItemPropsRefs","flatTreeItems","toArray","map","identity","fn","currentItemRef"],"sources":["../src/packages/react-components/react-tree/src/hooks/useFlatTreeItems.ts"],"sourcesContent":["import { useEventCallback } from '@fluentui/react-utilities';\nimport * as React from 'react';\nimport {\n TreeItemId,\n TreeNavigationData_unstable,\n TreeNavigationEvent_unstable,\n TreeOpenChangeData,\n TreeOpenChangeEvent,\n TreeProps,\n} from '../Tree';\nimport { TreeItemProps } from '../TreeItem';\nimport { ImmutableSet } from '../utils/ImmutableSet';\nimport { useFlatTreeNavigation } from './useFlatTreeNavigation';\nimport { useOpenItemsState } from './useOpenItemsState';\n\nexport type FlatTreeItem = Required<Pick<TreeItemProps, 'id'>> &\n TreeItemProps & {\n parentId?: string;\n };\n\nexport type FlatTreeItemProps = Required<\n Pick<TreeItemProps, 'id' | 'aria-level' | 'aria-posinset' | 'leaf' | 'aria-setsize'>\n> &\n TreeItemProps;\n\ntype TreeItemPropsReference = {\n props: Required<Pick<TreeItemProps, 'id' | 'aria-level' | 'aria-posinset' | 'leaf'>> & TreeItemProps;\n parentId?: string;\n childrenSize: number;\n index: number;\n};\n\nexport type TreeItemPropsReferences = {\n refs: TreeItemPropsReference[];\n getParent(ref: TreeItemPropsReference): TreeItemPropsReference | null;\n get(id: string): TreeItemPropsReference | null;\n};\n\ntype LazyArray<Value> = {\n map<NextValue>(fn: (child: Value) => NextValue): NextValue[];\n toArray(): Value[];\n};\n\nexport type FlatTreeProps = Required<\n Pick<TreeProps, 'openItems' | 'onOpenChange' | 'onNavigation_unstable'> & { ref: React.Ref<HTMLDivElement> }\n>;\nexport type LazyFlatTreeItems = LazyArray<FlatTreeItemProps> & {\n get(id: string): TreeItemPropsReference | null;\n};\n\nexport type UseFlatTreeItemsOptions = Pick<TreeProps, 'openItems' | 'defaultOpenItems'>;\n\nexport function useFlatTreeItems_unstable(\n items: FlatTreeItem[],\n options?: UseFlatTreeItemsOptions,\n): readonly [FlatTreeProps, LazyFlatTreeItems] {\n const references = React.useMemo(() => createTreeItemPropsRefs(items), [items]);\n const [openItems, updateOpenItems] = useOpenItemsState(options ?? {});\n const [navigate, treeRef] = useFlatTreeNavigation(references);\n\n const handleOpenChange = useEventCallback((event: TreeOpenChangeEvent, data: TreeOpenChangeData) => {\n event.preventDefault();\n updateOpenItems(data);\n });\n\n const handleNavigation = useEventCallback(\n (event: TreeNavigationEvent_unstable, data: TreeNavigationData_unstable) => {\n event.preventDefault();\n navigate(data);\n },\n );\n\n const lazyFlatTreeItems = React.useMemo(\n () =>\n createLazyFlatTreeItems(references, {\n filter: item => isTreeItemVisible(item, { openItems, references }),\n }),\n [references, openItems],\n );\n\n return [\n {\n ref: treeRef as React.Ref<HTMLDivElement>,\n openItems,\n onOpenChange: handleOpenChange,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n onNavigation_unstable: handleNavigation,\n },\n lazyFlatTreeItems,\n ];\n}\n\nfunction isTreeItemVisible(\n itemRef: TreeItemPropsReference,\n {\n openItems,\n references,\n }: {\n openItems: ImmutableSet<TreeItemId>;\n references: TreeItemPropsReferences;\n },\n) {\n if (itemRef.props['aria-level'] === 1) {\n return true;\n }\n while (itemRef.parentId !== undefined) {\n if (!openItems.has(itemRef.parentId)) {\n return false;\n }\n const parent = references.getParent(itemRef);\n if (!parent) {\n return false;\n }\n itemRef = parent;\n }\n return true;\n}\n\nfunction createTreeItemPropsRefs(flatTreeItemProps: FlatTreeItem[]): TreeItemPropsReferences {\n const root: TreeItemPropsReference = {\n props: { id: 'root', leaf: false, 'aria-level': 0, 'aria-posinset': 0 },\n childrenSize: 0,\n index: -1,\n };\n const treeItemPropsRefsPerId = new Map<string, TreeItemPropsReference>();\n const refs: TreeItemPropsReference[] = [];\n\n for (let index = 0; index < flatTreeItemProps.length; index++) {\n const { parentId, ...treeItemProps } = flatTreeItemProps[index];\n\n const nextPartialItem = flatTreeItemProps[index + 1] as FlatTreeItem | undefined;\n const currentParentRef = parentId ? treeItemPropsRefsPerId.get(parentId) ?? root : root;\n const isLeaf = nextPartialItem?.parentId !== treeItemProps.id;\n const currentLevel = (currentParentRef.props['aria-level'] ?? 0) + 1;\n currentParentRef.childrenSize++;\n\n const treeItemPropsRef: TreeItemPropsReference = {\n props: {\n ...treeItemProps,\n 'aria-level': currentLevel,\n 'aria-posinset': currentParentRef.childrenSize,\n leaf: isLeaf,\n },\n parentId,\n childrenSize: 0,\n index: -1,\n };\n treeItemPropsRefsPerId.set(treeItemPropsRef.props.id, treeItemPropsRef);\n refs.push(treeItemPropsRef);\n }\n\n function getParent(itemRef: TreeItemPropsReference): TreeItemPropsReference | null {\n const parentRef = itemRef.parentId ? treeItemPropsRefsPerId.get(itemRef.parentId) : root;\n return parentRef ?? null;\n }\n function get(id: string): TreeItemPropsReference | null {\n return treeItemPropsRefsPerId.get(id) ?? null;\n }\n\n return { refs, getParent, get };\n}\n\nfunction createLazyFlatTreeItems(\n treeItemPropsRefs: TreeItemPropsReferences,\n { filter = () => true }: { filter: (item: TreeItemPropsReference) => boolean },\n): LazyFlatTreeItems {\n const flatTreeItems: LazyFlatTreeItems = {\n get: treeItemPropsRefs.get,\n toArray: () => flatTreeItems.map(identity),\n map: fn => {\n const items: ReturnType<typeof fn>[] = [];\n for (let index = 0; index < treeItemPropsRefs.refs.length; index++) {\n const currentItemRef = treeItemPropsRefs.refs[index];\n const currentParentRef = treeItemPropsRefs.getParent(currentItemRef);\n if (!currentParentRef) {\n break;\n }\n if (filter(currentItemRef)) {\n currentItemRef.index = index;\n items.push(fn({ ...currentItemRef.props, 'aria-setsize': currentParentRef.childrenSize }));\n } else {\n index += currentParentRef.childrenSize - 1 + currentItemRef.childrenSize;\n }\n }\n return items;\n },\n };\n return flatTreeItems;\n}\n\nfunction identity<T>(item: T) {\n return item;\n}\n"],"mappings":"AAAA,SAASA,gBAAgB,QAAQ,2BAA2B;AAC5D,OAAO,KAAKC,KAAK,MAAM,OAAO;AAW9B,SAASC,qBAAqB,QAAQ,yBAAyB;AAC/D,SAASC,iBAAiB,QAAQ,qBAAqB;AAuCvD,OAAM,SAAUC,yBAAyBA,CACvCC,KAAqB,EACrBC,OAAiC;EAEjC,MAAMC,UAAU,GAAGN,KAAK,CAACO,OAAO,CAAC,MAAMC,uBAAuB,CAACJ,KAAK,CAAC,EAAE,CAACA,KAAK,CAAC,CAAC;EAC/E,MAAM,CAACK,SAAS,EAAEC,eAAe,CAAC,GAAGR,iBAAiB,CAACG,OAAO,aAAPA,OAAO,cAAPA,OAAO,GAAI,EAAE,CAAC;EACrE,MAAM,CAACM,QAAQ,EAAEC,OAAO,CAAC,GAAGX,qBAAqB,CAACK,UAAU,CAAC;EAE7D,MAAMO,gBAAgB,GAAGd,gBAAgB,CAAC,CAACe,KAA0B,EAAEC,IAAwB,KAAI;IACjGD,KAAK,CAACE,cAAc,EAAE;IACtBN,eAAe,CAACK,IAAI,CAAC;EACvB,CAAC,CAAC;EAEF,MAAME,gBAAgB,GAAGlB,gBAAgB,CACvC,CAACe,KAAmC,EAAEC,IAAiC,KAAI;IACzED,KAAK,CAACE,cAAc,EAAE;IACtBL,QAAQ,CAACI,IAAI,CAAC;EAChB,CAAC,CACF;EAED,MAAMG,iBAAiB,GAAGlB,KAAK,CAACO,OAAO,CACrC,MACEY,uBAAuB,CAACb,UAAU,EAAE;IAClCc,MAAM,EAAEC,IAAI,IAAIC,iBAAiB,CAACD,IAAI,EAAE;MAAEZ,SAAS;MAAEH;IAAU,CAAE;GAClE,CAAC,EACJ,CAACA,UAAU,EAAEG,SAAS,CAAC,CACxB;EAED,OAAO,CACL;IACEc,GAAG,EAAEX,OAAoC;IACzCH,SAAS;IACTe,YAAY,EAAEX,gBAAgB;IAC9B;IACAY,qBAAqB,EAAER;GACxB,EACDC,iBAAiB,CAClB;AACH;AAEA,SAASI,iBAAiBA,CACxBI,OAA+B,EAC/B;EACEjB,SAAS;EACTH;AAAU,CAIX;EAED,IAAIoB,OAAO,CAACC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;IACrC,OAAO,IAAI;;EAEb,OAAOD,OAAO,CAACE,QAAQ,KAAKC,SAAS,EAAE;IACrC,IAAI,CAACpB,SAAS,CAACqB,GAAG,CAACJ,OAAO,CAACE,QAAQ,CAAC,EAAE;MACpC,OAAO,KAAK;;IAEd,MAAMG,MAAM,GAAGzB,UAAU,CAAC0B,SAAS,CAACN,OAAO,CAAC;IAC5C,IAAI,CAACK,MAAM,EAAE;MACX,OAAO,KAAK;;IAEdL,OAAO,GAAGK,MAAM;;EAElB,OAAO,IAAI;AACb;AAEA,SAASvB,uBAAuBA,CAACyB,iBAAiC;;EAChE,MAAMC,IAAI,GAA2B;IACnCP,KAAK,EAAE;MAAEQ,EAAE,EAAE,MAAM;MAAEC,IAAI,EAAE,KAAK;MAAE,YAAY,EAAE,CAAC;MAAE,eAAe,EAAE;IAAC,CAAE;IACvEC,YAAY,EAAE,CAAC;IACfC,KAAK,EAAE,CAAC;GACT;EACD,MAAMC,sBAAsB,GAAG,IAAIC,GAAG,EAAkC;EACxE,MAAMC,IAAI,GAA6B,EAAE;EAEzC,KAAK,IAAIH,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGL,iBAAiB,CAACS,MAAM,EAAEJ,KAAK,EAAE,EAAE;IAC7D,MAAM;MAAEV,QAAQ;MAAE,GAAGe;IAAa,CAAE,GAAGV,iBAAiB,CAACK,KAAK,CAAC;IAE/D,MAAMM,eAAe,GAAGX,iBAAiB,CAACK,KAAK,GAAG,CAAC,CAA6B;IAChF,MAAMO,gBAAgB,GAAGjB,QAAQ,GAAG,CAAAkB,EAAA,GAAAP,sBAAsB,CAACQ,GAAG,CAACnB,QAAQ,CAAC,cAAAkB,EAAA,cAAAA,EAAA,GAAIZ,IAAI,GAAGA,IAAI;IACvF,MAAMc,MAAM,GAAG,CAAAJ,eAAe,aAAfA,eAAe,uBAAfA,eAAe,CAAEhB,QAAQ,MAAKe,aAAa,CAACR,EAAE;IAC7D,MAAMc,YAAY,GAAG,CAAC,CAAAC,EAAA,GAAAL,gBAAgB,CAAClB,KAAK,CAAC,YAAY,CAAC,cAAAuB,EAAA,cAAAA,EAAA,GAAI,CAAC,IAAI,CAAC;IACpEL,gBAAgB,CAACR,YAAY,EAAE;IAE/B,MAAMc,gBAAgB,GAA2B;MAC/CxB,KAAK,EAAE;QACL,GAAGgB,aAAa;QAChB,YAAY,EAAEM,YAAY;QAC1B,eAAe,EAAEJ,gBAAgB,CAACR,YAAY;QAC9CD,IAAI,EAAEY;OACP;MACDpB,QAAQ;MACRS,YAAY,EAAE,CAAC;MACfC,KAAK,EAAE,CAAC;KACT;IACDC,sBAAsB,CAACa,GAAG,CAACD,gBAAgB,CAACxB,KAAK,CAACQ,EAAE,EAAEgB,gBAAgB,CAAC;IACvEV,IAAI,CAACY,IAAI,CAACF,gBAAgB,CAAC;;EAG7B,SAASnB,SAASA,CAACN,OAA+B;IAChD,MAAM4B,SAAS,GAAG5B,OAAO,CAACE,QAAQ,GAAGW,sBAAsB,CAACQ,GAAG,CAACrB,OAAO,CAACE,QAAQ,CAAC,GAAGM,IAAI;IACxF,OAAOoB,SAAS,aAATA,SAAS,cAATA,SAAS,GAAI,IAAI;EAC1B;EACA,SAASP,GAAGA,CAACZ,EAAU;;IACrB,OAAO,CAAAW,EAAA,GAAAP,sBAAsB,CAACQ,GAAG,CAACZ,EAAE,CAAC,cAAAW,EAAA,cAAAA,EAAA,GAAI,IAAI;EAC/C;EAEA,OAAO;IAAEL,IAAI;IAAET,SAAS;IAAEe;EAAG,CAAE;AACjC;AAEA,SAAS5B,uBAAuBA,CAC9BoC,iBAA0C,EAC1C;EAAEnC,MAAM,GAAGA,CAAA,KAAM;AAAI,CAAyD;EAE9E,MAAMoC,aAAa,GAAsB;IACvCT,GAAG,EAAEQ,iBAAiB,CAACR,GAAG;IAC1BU,OAAO,EAAEA,CAAA,KAAMD,aAAa,CAACE,GAAG,CAACC,QAAQ,CAAC;IAC1CD,GAAG,EAAEE,EAAE,IAAG;MACR,MAAMxD,KAAK,GAA4B,EAAE;MACzC,KAAK,IAAIkC,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGiB,iBAAiB,CAACd,IAAI,CAACC,MAAM,EAAEJ,KAAK,EAAE,EAAE;QAClE,MAAMuB,cAAc,GAAGN,iBAAiB,CAACd,IAAI,CAACH,KAAK,CAAC;QACpD,MAAMO,gBAAgB,GAAGU,iBAAiB,CAACvB,SAAS,CAAC6B,cAAc,CAAC;QACpE,IAAI,CAAChB,gBAAgB,EAAE;UACrB;;QAEF,IAAIzB,MAAM,CAACyC,cAAc,CAAC,EAAE;UAC1BA,cAAc,CAACvB,KAAK,GAAGA,KAAK;UAC5BlC,KAAK,CAACiD,IAAI,CAACO,EAAE,CAAC;YAAE,GAAGC,cAAc,CAAClC,KAAK;YAAE,cAAc,EAAEkB,gBAAgB,CAACR;UAAY,CAAE,CAAC,CAAC;SAC3F,MAAM;UACLC,KAAK,IAAIO,gBAAgB,CAACR,YAAY,GAAG,CAAC,GAAGwB,cAAc,CAACxB,YAAY;;;MAG5E,OAAOjC,KAAK;IACd;GACD;EACD,OAAOoD,aAAa;AACtB;AAEA,SAASG,QAAQA,CAAItC,IAAO;EAC1B,OAAOA,IAAI;AACb"}
@@ -1,141 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.useFlatTreeItems_unstable = void 0;
7
- const react_utilities_1 = /*#__PURE__*/require("@fluentui/react-utilities");
8
- const React = /*#__PURE__*/require("react");
9
- const useFlatTreeNavigation_1 = /*#__PURE__*/require("./useFlatTreeNavigation");
10
- const useOpenItemsState_1 = /*#__PURE__*/require("./useOpenItemsState");
11
- function useFlatTreeItems_unstable(items, options) {
12
- const references = React.useMemo(() => createTreeItemPropsRefs(items), [items]);
13
- const [openItems, updateOpenItems] = useOpenItemsState_1.useOpenItemsState(options !== null && options !== void 0 ? options : {});
14
- const [navigate, treeRef] = useFlatTreeNavigation_1.useFlatTreeNavigation(references);
15
- const handleOpenChange = react_utilities_1.useEventCallback((event, data) => {
16
- event.preventDefault();
17
- updateOpenItems(data);
18
- });
19
- const handleNavigation = react_utilities_1.useEventCallback((event, data) => {
20
- event.preventDefault();
21
- navigate(data);
22
- });
23
- const lazyFlatTreeItems = React.useMemo(() => createLazyFlatTreeItems(references, {
24
- filter: item => isTreeItemVisible(item, {
25
- openItems,
26
- references
27
- })
28
- }), [references, openItems]);
29
- return [{
30
- ref: treeRef,
31
- openItems,
32
- onOpenChange: handleOpenChange,
33
- // eslint-disable-next-line @typescript-eslint/naming-convention
34
- onNavigation_unstable: handleNavigation
35
- }, lazyFlatTreeItems];
36
- }
37
- exports.useFlatTreeItems_unstable = useFlatTreeItems_unstable;
38
- function isTreeItemVisible(itemRef, {
39
- openItems,
40
- references
41
- }) {
42
- if (itemRef.props['aria-level'] === 1) {
43
- return true;
44
- }
45
- while (itemRef.parentId !== undefined) {
46
- if (!openItems.has(itemRef.parentId)) {
47
- return false;
48
- }
49
- const parent = references.getParent(itemRef);
50
- if (!parent) {
51
- return false;
52
- }
53
- itemRef = parent;
54
- }
55
- return true;
56
- }
57
- function createTreeItemPropsRefs(flatTreeItemProps) {
58
- var _a, _b;
59
- const root = {
60
- props: {
61
- id: 'root',
62
- leaf: false,
63
- 'aria-level': 0,
64
- 'aria-posinset': 0
65
- },
66
- childrenSize: 0,
67
- index: -1
68
- };
69
- const treeItemPropsRefsPerId = new Map();
70
- const refs = [];
71
- for (let index = 0; index < flatTreeItemProps.length; index++) {
72
- const {
73
- parentId,
74
- ...treeItemProps
75
- } = flatTreeItemProps[index];
76
- const nextPartialItem = flatTreeItemProps[index + 1];
77
- const currentParentRef = parentId ? (_a = treeItemPropsRefsPerId.get(parentId)) !== null && _a !== void 0 ? _a : root : root;
78
- const isLeaf = (nextPartialItem === null || nextPartialItem === void 0 ? void 0 : nextPartialItem.parentId) !== treeItemProps.id;
79
- const currentLevel = ((_b = currentParentRef.props['aria-level']) !== null && _b !== void 0 ? _b : 0) + 1;
80
- currentParentRef.childrenSize++;
81
- const treeItemPropsRef = {
82
- props: {
83
- ...treeItemProps,
84
- 'aria-level': currentLevel,
85
- 'aria-posinset': currentParentRef.childrenSize,
86
- leaf: isLeaf
87
- },
88
- parentId,
89
- childrenSize: 0,
90
- index: -1
91
- };
92
- treeItemPropsRefsPerId.set(treeItemPropsRef.props.id, treeItemPropsRef);
93
- refs.push(treeItemPropsRef);
94
- }
95
- function getParent(itemRef) {
96
- const parentRef = itemRef.parentId ? treeItemPropsRefsPerId.get(itemRef.parentId) : root;
97
- return parentRef !== null && parentRef !== void 0 ? parentRef : null;
98
- }
99
- function get(id) {
100
- var _a;
101
- return (_a = treeItemPropsRefsPerId.get(id)) !== null && _a !== void 0 ? _a : null;
102
- }
103
- return {
104
- refs,
105
- getParent,
106
- get
107
- };
108
- }
109
- function createLazyFlatTreeItems(treeItemPropsRefs, {
110
- filter = () => true
111
- }) {
112
- const flatTreeItems = {
113
- get: treeItemPropsRefs.get,
114
- toArray: () => flatTreeItems.map(identity),
115
- map: fn => {
116
- const items = [];
117
- for (let index = 0; index < treeItemPropsRefs.refs.length; index++) {
118
- const currentItemRef = treeItemPropsRefs.refs[index];
119
- const currentParentRef = treeItemPropsRefs.getParent(currentItemRef);
120
- if (!currentParentRef) {
121
- break;
122
- }
123
- if (filter(currentItemRef)) {
124
- currentItemRef.index = index;
125
- items.push(fn({
126
- ...currentItemRef.props,
127
- 'aria-setsize': currentParentRef.childrenSize
128
- }));
129
- } else {
130
- index += currentParentRef.childrenSize - 1 + currentItemRef.childrenSize;
131
- }
132
- }
133
- return items;
134
- }
135
- };
136
- return flatTreeItems;
137
- }
138
- function identity(item) {
139
- return item;
140
- }
141
- //# sourceMappingURL=useFlatTreeItems.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["react_utilities_1","require","React","useFlatTreeNavigation_1","useOpenItemsState_1","useFlatTreeItems_unstable","items","options","references","useMemo","createTreeItemPropsRefs","openItems","updateOpenItems","useOpenItemsState","navigate","treeRef","useFlatTreeNavigation","handleOpenChange","useEventCallback","event","data","preventDefault","handleNavigation","lazyFlatTreeItems","createLazyFlatTreeItems","filter","item","isTreeItemVisible","ref","onOpenChange","onNavigation_unstable","exports","itemRef","props","parentId","undefined","has","parent","getParent","flatTreeItemProps","root","id","leaf","childrenSize","index","treeItemPropsRefsPerId","Map","refs","length","treeItemProps","nextPartialItem","currentParentRef","_a","get","isLeaf","currentLevel","_b","treeItemPropsRef","set","push","parentRef","treeItemPropsRefs","flatTreeItems","toArray","map","identity","fn","currentItemRef"],"sources":["../src/packages/react-components/react-tree/src/hooks/useFlatTreeItems.ts"],"sourcesContent":["import { useEventCallback } from '@fluentui/react-utilities';\nimport * as React from 'react';\nimport {\n TreeItemId,\n TreeNavigationData_unstable,\n TreeNavigationEvent_unstable,\n TreeOpenChangeData,\n TreeOpenChangeEvent,\n TreeProps,\n} from '../Tree';\nimport { TreeItemProps } from '../TreeItem';\nimport { ImmutableSet } from '../utils/ImmutableSet';\nimport { useFlatTreeNavigation } from './useFlatTreeNavigation';\nimport { useOpenItemsState } from './useOpenItemsState';\n\nexport type FlatTreeItem = Required<Pick<TreeItemProps, 'id'>> &\n TreeItemProps & {\n parentId?: string;\n };\n\nexport type FlatTreeItemProps = Required<\n Pick<TreeItemProps, 'id' | 'aria-level' | 'aria-posinset' | 'leaf' | 'aria-setsize'>\n> &\n TreeItemProps;\n\ntype TreeItemPropsReference = {\n props: Required<Pick<TreeItemProps, 'id' | 'aria-level' | 'aria-posinset' | 'leaf'>> & TreeItemProps;\n parentId?: string;\n childrenSize: number;\n index: number;\n};\n\nexport type TreeItemPropsReferences = {\n refs: TreeItemPropsReference[];\n getParent(ref: TreeItemPropsReference): TreeItemPropsReference | null;\n get(id: string): TreeItemPropsReference | null;\n};\n\ntype LazyArray<Value> = {\n map<NextValue>(fn: (child: Value) => NextValue): NextValue[];\n toArray(): Value[];\n};\n\nexport type FlatTreeProps = Required<\n Pick<TreeProps, 'openItems' | 'onOpenChange' | 'onNavigation_unstable'> & { ref: React.Ref<HTMLDivElement> }\n>;\nexport type LazyFlatTreeItems = LazyArray<FlatTreeItemProps> & {\n get(id: string): TreeItemPropsReference | null;\n};\n\nexport type UseFlatTreeItemsOptions = Pick<TreeProps, 'openItems' | 'defaultOpenItems'>;\n\nexport function useFlatTreeItems_unstable(\n items: FlatTreeItem[],\n options?: UseFlatTreeItemsOptions,\n): readonly [FlatTreeProps, LazyFlatTreeItems] {\n const references = React.useMemo(() => createTreeItemPropsRefs(items), [items]);\n const [openItems, updateOpenItems] = useOpenItemsState(options ?? {});\n const [navigate, treeRef] = useFlatTreeNavigation(references);\n\n const handleOpenChange = useEventCallback((event: TreeOpenChangeEvent, data: TreeOpenChangeData) => {\n event.preventDefault();\n updateOpenItems(data);\n });\n\n const handleNavigation = useEventCallback(\n (event: TreeNavigationEvent_unstable, data: TreeNavigationData_unstable) => {\n event.preventDefault();\n navigate(data);\n },\n );\n\n const lazyFlatTreeItems = React.useMemo(\n () =>\n createLazyFlatTreeItems(references, {\n filter: item => isTreeItemVisible(item, { openItems, references }),\n }),\n [references, openItems],\n );\n\n return [\n {\n ref: treeRef as React.Ref<HTMLDivElement>,\n openItems,\n onOpenChange: handleOpenChange,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n onNavigation_unstable: handleNavigation,\n },\n lazyFlatTreeItems,\n ];\n}\n\nfunction isTreeItemVisible(\n itemRef: TreeItemPropsReference,\n {\n openItems,\n references,\n }: {\n openItems: ImmutableSet<TreeItemId>;\n references: TreeItemPropsReferences;\n },\n) {\n if (itemRef.props['aria-level'] === 1) {\n return true;\n }\n while (itemRef.parentId !== undefined) {\n if (!openItems.has(itemRef.parentId)) {\n return false;\n }\n const parent = references.getParent(itemRef);\n if (!parent) {\n return false;\n }\n itemRef = parent;\n }\n return true;\n}\n\nfunction createTreeItemPropsRefs(flatTreeItemProps: FlatTreeItem[]): TreeItemPropsReferences {\n const root: TreeItemPropsReference = {\n props: { id: 'root', leaf: false, 'aria-level': 0, 'aria-posinset': 0 },\n childrenSize: 0,\n index: -1,\n };\n const treeItemPropsRefsPerId = new Map<string, TreeItemPropsReference>();\n const refs: TreeItemPropsReference[] = [];\n\n for (let index = 0; index < flatTreeItemProps.length; index++) {\n const { parentId, ...treeItemProps } = flatTreeItemProps[index];\n\n const nextPartialItem = flatTreeItemProps[index + 1] as FlatTreeItem | undefined;\n const currentParentRef = parentId ? treeItemPropsRefsPerId.get(parentId) ?? root : root;\n const isLeaf = nextPartialItem?.parentId !== treeItemProps.id;\n const currentLevel = (currentParentRef.props['aria-level'] ?? 0) + 1;\n currentParentRef.childrenSize++;\n\n const treeItemPropsRef: TreeItemPropsReference = {\n props: {\n ...treeItemProps,\n 'aria-level': currentLevel,\n 'aria-posinset': currentParentRef.childrenSize,\n leaf: isLeaf,\n },\n parentId,\n childrenSize: 0,\n index: -1,\n };\n treeItemPropsRefsPerId.set(treeItemPropsRef.props.id, treeItemPropsRef);\n refs.push(treeItemPropsRef);\n }\n\n function getParent(itemRef: TreeItemPropsReference): TreeItemPropsReference | null {\n const parentRef = itemRef.parentId ? treeItemPropsRefsPerId.get(itemRef.parentId) : root;\n return parentRef ?? null;\n }\n function get(id: string): TreeItemPropsReference | null {\n return treeItemPropsRefsPerId.get(id) ?? null;\n }\n\n return { refs, getParent, get };\n}\n\nfunction createLazyFlatTreeItems(\n treeItemPropsRefs: TreeItemPropsReferences,\n { filter = () => true }: { filter: (item: TreeItemPropsReference) => boolean },\n): LazyFlatTreeItems {\n const flatTreeItems: LazyFlatTreeItems = {\n get: treeItemPropsRefs.get,\n toArray: () => flatTreeItems.map(identity),\n map: fn => {\n const items: ReturnType<typeof fn>[] = [];\n for (let index = 0; index < treeItemPropsRefs.refs.length; index++) {\n const currentItemRef = treeItemPropsRefs.refs[index];\n const currentParentRef = treeItemPropsRefs.getParent(currentItemRef);\n if (!currentParentRef) {\n break;\n }\n if (filter(currentItemRef)) {\n currentItemRef.index = index;\n items.push(fn({ ...currentItemRef.props, 'aria-setsize': currentParentRef.childrenSize }));\n } else {\n index += currentParentRef.childrenSize - 1 + currentItemRef.childrenSize;\n }\n }\n return items;\n },\n };\n return flatTreeItems;\n}\n\nfunction identity<T>(item: T) {\n return item;\n}\n"],"mappings":"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"}