@fluentui/react-tree 9.0.0-beta.2 → 9.0.0-beta.21

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 (244) hide show
  1. package/CHANGELOG.json +1073 -1
  2. package/CHANGELOG.md +295 -2
  3. package/dist/index.d.ts +153 -91
  4. package/lib/Tree.js +0 -1
  5. package/lib/Tree.js.map +1 -1
  6. package/lib/TreeItem.js +0 -1
  7. package/lib/TreeItem.js.map +1 -1
  8. package/lib/TreeItemLayout.js +0 -1
  9. package/lib/TreeItemLayout.js.map +1 -1
  10. package/lib/TreeItemPersonaLayout.js +0 -1
  11. package/lib/TreeItemPersonaLayout.js.map +1 -1
  12. package/lib/components/Tree/Tree.js +6 -8
  13. package/lib/components/Tree/Tree.js.map +1 -1
  14. package/lib/components/Tree/Tree.types.js +1 -2
  15. package/lib/components/Tree/Tree.types.js.map +1 -1
  16. package/lib/components/Tree/index.js +1 -2
  17. package/lib/components/Tree/index.js.map +1 -1
  18. package/lib/components/Tree/renderTree.js +7 -13
  19. package/lib/components/Tree/renderTree.js.map +1 -1
  20. package/lib/components/Tree/useRootTree.js +145 -0
  21. package/lib/components/Tree/useRootTree.js.map +1 -0
  22. package/lib/components/Tree/useSubtree.js +35 -0
  23. package/lib/components/Tree/useSubtree.js.map +1 -0
  24. package/lib/components/Tree/useTree.js +9 -103
  25. package/lib/components/Tree/useTree.js.map +1 -1
  26. package/lib/components/Tree/useTreeContextValues.js +12 -22
  27. package/lib/components/Tree/useTreeContextValues.js.map +1 -1
  28. package/lib/components/Tree/useTreeStyles.styles.js +30 -0
  29. package/lib/components/Tree/useTreeStyles.styles.js.map +1 -0
  30. package/lib/components/TreeItem/TreeItem.js +16 -9
  31. package/lib/components/TreeItem/TreeItem.js.map +1 -1
  32. package/lib/components/TreeItem/TreeItem.types.js +1 -2
  33. package/lib/components/TreeItem/TreeItem.types.js.map +1 -1
  34. package/lib/components/TreeItem/index.js +1 -2
  35. package/lib/components/TreeItem/index.js.map +1 -1
  36. package/lib/components/TreeItem/renderTreeItem.js +7 -25
  37. package/lib/components/TreeItem/renderTreeItem.js.map +1 -1
  38. package/lib/components/TreeItem/useTreeItem.js +116 -234
  39. package/lib/components/TreeItem/useTreeItem.js.map +1 -1
  40. package/lib/components/TreeItem/useTreeItemContextValues.js +18 -16
  41. package/lib/components/TreeItem/useTreeItemContextValues.js.map +1 -1
  42. package/lib/components/TreeItem/useTreeItemStyles.styles.js +100 -0
  43. package/lib/components/TreeItem/useTreeItemStyles.styles.js.map +1 -0
  44. package/lib/components/TreeItemChevron.js +24 -0
  45. package/lib/components/TreeItemChevron.js.map +1 -0
  46. package/lib/components/TreeItemLayout/TreeItemLayout.js +8 -8
  47. package/lib/components/TreeItemLayout/TreeItemLayout.js.map +1 -1
  48. package/lib/components/TreeItemLayout/TreeItemLayout.types.js +1 -2
  49. package/lib/components/TreeItemLayout/TreeItemLayout.types.js.map +1 -1
  50. package/lib/components/TreeItemLayout/index.js +1 -2
  51. package/lib/components/TreeItemLayout/index.js.map +1 -1
  52. package/lib/components/TreeItemLayout/renderTreeItemLayout.js +8 -21
  53. package/lib/components/TreeItemLayout/renderTreeItemLayout.js.map +1 -1
  54. package/lib/components/TreeItemLayout/useTreeItemLayout.js +58 -39
  55. package/lib/components/TreeItemLayout/useTreeItemLayout.js.map +1 -1
  56. package/lib/components/TreeItemLayout/useTreeItemLayoutStyles.styles.js +191 -0
  57. package/lib/components/TreeItemLayout/useTreeItemLayoutStyles.styles.js.map +1 -0
  58. package/lib/components/TreeItemPersonaLayout/TreeItemPersonaLayout.js +9 -9
  59. package/lib/components/TreeItemPersonaLayout/TreeItemPersonaLayout.js.map +1 -1
  60. package/lib/components/TreeItemPersonaLayout/TreeItemPersonaLayout.types.js +1 -2
  61. package/lib/components/TreeItemPersonaLayout/TreeItemPersonaLayout.types.js.map +1 -1
  62. package/lib/components/TreeItemPersonaLayout/index.js +1 -2
  63. package/lib/components/TreeItemPersonaLayout/index.js.map +1 -1
  64. package/lib/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js +10 -27
  65. package/lib/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js.map +1 -1
  66. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js +35 -48
  67. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js.map +1 -1
  68. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutContextValues.js +9 -10
  69. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutContextValues.js.map +1 -1
  70. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.styles.js +206 -0
  71. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.styles.js.map +1 -0
  72. package/lib/contexts/index.js +0 -1
  73. package/lib/contexts/index.js.map +1 -1
  74. package/lib/contexts/treeContext.js +9 -14
  75. package/lib/contexts/treeContext.js.map +1 -1
  76. package/lib/contexts/treeItemContext.js +13 -10
  77. package/lib/contexts/treeItemContext.js.map +1 -1
  78. package/lib/hooks/index.js +0 -1
  79. package/lib/hooks/index.js.map +1 -1
  80. package/lib/hooks/useFlatTree.js +81 -35
  81. package/lib/hooks/useFlatTree.js.map +1 -1
  82. package/lib/hooks/useFlatTreeNavigation.js +65 -62
  83. package/lib/hooks/useFlatTreeNavigation.js.map +1 -1
  84. package/lib/hooks/useHTMLElementWalker.js +78 -76
  85. package/lib/hooks/useHTMLElementWalker.js.map +1 -1
  86. package/lib/hooks/useNestedTreeNavigation.js +49 -49
  87. package/lib/hooks/useNestedTreeNavigation.js.map +1 -1
  88. package/lib/hooks/useOpenItemsState.js +21 -15
  89. package/lib/hooks/useOpenItemsState.js.map +1 -1
  90. package/lib/hooks/useRovingTabIndexes.js +46 -45
  91. package/lib/hooks/useRovingTabIndexes.js.map +1 -1
  92. package/lib/index.js +0 -1
  93. package/lib/index.js.map +1 -1
  94. package/lib/utils/ImmutableSet.js +27 -30
  95. package/lib/utils/ImmutableSet.js.map +1 -1
  96. package/lib/utils/assert.js +5 -5
  97. package/lib/utils/assert.js.map +1 -1
  98. package/lib/utils/createFlatTreeItems.js +113 -0
  99. package/lib/utils/createFlatTreeItems.js.map +1 -0
  100. package/lib/utils/flattenTree.js +58 -28
  101. package/lib/utils/flattenTree.js.map +1 -1
  102. package/lib/utils/getTreeItemValueFromElement.js +4 -0
  103. package/lib/utils/getTreeItemValueFromElement.js.map +1 -0
  104. package/lib/utils/nextTypeAheadElement.js +11 -12
  105. package/lib/utils/nextTypeAheadElement.js.map +1 -1
  106. package/lib/utils/normalizeOpenItems.js +6 -5
  107. package/lib/utils/normalizeOpenItems.js.map +1 -1
  108. package/lib/utils/tokens.js +13 -14
  109. package/lib/utils/tokens.js.map +1 -1
  110. package/lib/utils/treeItemFilter.js +2 -3
  111. package/lib/utils/treeItemFilter.js.map +1 -1
  112. package/lib-commonjs/Tree.js +3 -5
  113. package/lib-commonjs/Tree.js.map +1 -1
  114. package/lib-commonjs/TreeItem.js +3 -5
  115. package/lib-commonjs/TreeItem.js.map +1 -1
  116. package/lib-commonjs/TreeItemLayout.js +3 -5
  117. package/lib-commonjs/TreeItemLayout.js.map +1 -1
  118. package/lib-commonjs/TreeItemPersonaLayout.js +3 -5
  119. package/lib-commonjs/TreeItemPersonaLayout.js.map +1 -1
  120. package/lib-commonjs/components/Tree/Tree.js +17 -23
  121. package/lib-commonjs/components/Tree/Tree.js.map +1 -1
  122. package/lib-commonjs/components/Tree/Tree.types.js +3 -3
  123. package/lib-commonjs/components/Tree/Tree.types.js.map +1 -1
  124. package/lib-commonjs/components/Tree/index.js +8 -10
  125. package/lib-commonjs/components/Tree/index.js.map +1 -1
  126. package/lib-commonjs/components/Tree/renderTree.js +14 -19
  127. package/lib-commonjs/components/Tree/renderTree.js.map +1 -1
  128. package/lib-commonjs/components/Tree/useRootTree.js +149 -0
  129. package/lib-commonjs/components/Tree/useRootTree.js.map +1 -0
  130. package/lib-commonjs/components/Tree/useSubtree.js +39 -0
  131. package/lib-commonjs/components/Tree/useSubtree.js.map +1 -0
  132. package/lib-commonjs/components/Tree/useTree.js +16 -116
  133. package/lib-commonjs/components/Tree/useTree.js.map +1 -1
  134. package/lib-commonjs/components/Tree/useTreeContextValues.js +17 -26
  135. package/lib-commonjs/components/Tree/useTreeContextValues.js.map +1 -1
  136. package/lib-commonjs/components/Tree/useTreeStyles.styles.js +53 -0
  137. package/lib-commonjs/components/Tree/useTreeStyles.styles.js.map +1 -0
  138. package/lib-commonjs/components/TreeItem/TreeItem.js +17 -18
  139. package/lib-commonjs/components/TreeItem/TreeItem.js.map +1 -1
  140. package/lib-commonjs/components/TreeItem/TreeItem.types.js +3 -4
  141. package/lib-commonjs/components/TreeItem/TreeItem.types.js.map +1 -1
  142. package/lib-commonjs/components/TreeItem/index.js +7 -9
  143. package/lib-commonjs/components/TreeItem/index.js.map +1 -1
  144. package/lib-commonjs/components/TreeItem/renderTreeItem.js +14 -33
  145. package/lib-commonjs/components/TreeItem/renderTreeItem.js.map +1 -1
  146. package/lib-commonjs/components/TreeItem/useTreeItem.js +126 -251
  147. package/lib-commonjs/components/TreeItem/useTreeItem.js.map +1 -1
  148. package/lib-commonjs/components/TreeItem/useTreeItemContextValues.js +23 -20
  149. package/lib-commonjs/components/TreeItem/useTreeItemContextValues.js.map +1 -1
  150. package/lib-commonjs/components/TreeItem/useTreeItemStyles.styles.js +202 -0
  151. package/lib-commonjs/components/TreeItem/useTreeItemStyles.styles.js.map +1 -0
  152. package/lib-commonjs/components/TreeItemChevron.js +33 -0
  153. package/lib-commonjs/components/TreeItemChevron.js.map +1 -0
  154. package/lib-commonjs/components/TreeItemLayout/TreeItemLayout.js +15 -16
  155. package/lib-commonjs/components/TreeItemLayout/TreeItemLayout.js.map +1 -1
  156. package/lib-commonjs/components/TreeItemLayout/TreeItemLayout.types.js +1 -3
  157. package/lib-commonjs/components/TreeItemLayout/TreeItemLayout.types.js.map +1 -1
  158. package/lib-commonjs/components/TreeItemLayout/index.js +7 -9
  159. package/lib-commonjs/components/TreeItemLayout/index.js.map +1 -1
  160. package/lib-commonjs/components/TreeItemLayout/renderTreeItemLayout.js +14 -28
  161. package/lib-commonjs/components/TreeItemLayout/renderTreeItemLayout.js.map +1 -1
  162. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayout.js +64 -52
  163. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayout.js.map +1 -1
  164. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayoutStyles.styles.js +321 -0
  165. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayoutStyles.styles.js.map +1 -0
  166. package/lib-commonjs/components/TreeItemPersonaLayout/TreeItemPersonaLayout.js +17 -18
  167. package/lib-commonjs/components/TreeItemPersonaLayout/TreeItemPersonaLayout.js.map +1 -1
  168. package/lib-commonjs/components/TreeItemPersonaLayout/TreeItemPersonaLayout.types.js +1 -3
  169. package/lib-commonjs/components/TreeItemPersonaLayout/TreeItemPersonaLayout.types.js.map +1 -1
  170. package/lib-commonjs/components/TreeItemPersonaLayout/index.js +7 -9
  171. package/lib-commonjs/components/TreeItemPersonaLayout/index.js.map +1 -1
  172. package/lib-commonjs/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js +17 -35
  173. package/lib-commonjs/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js.map +1 -1
  174. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js +42 -61
  175. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js.map +1 -1
  176. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutContextValues.js +16 -15
  177. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutContextValues.js.map +1 -1
  178. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.styles.js +375 -0
  179. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.styles.js.map +1 -0
  180. package/lib-commonjs/contexts/index.js +4 -6
  181. package/lib-commonjs/contexts/index.js.map +1 -1
  182. package/lib-commonjs/contexts/treeContext.js +23 -18
  183. package/lib-commonjs/contexts/treeContext.js.map +1 -1
  184. package/lib-commonjs/contexts/treeItemContext.js +27 -13
  185. package/lib-commonjs/contexts/treeItemContext.js.map +1 -1
  186. package/lib-commonjs/hooks/index.js +5 -7
  187. package/lib-commonjs/hooks/index.js.map +1 -1
  188. package/lib-commonjs/hooks/useFlatTree.js +88 -52
  189. package/lib-commonjs/hooks/useFlatTree.js.map +1 -1
  190. package/lib-commonjs/hooks/useFlatTreeNavigation.js +76 -72
  191. package/lib-commonjs/hooks/useFlatTreeNavigation.js.map +1 -1
  192. package/lib-commonjs/hooks/useHTMLElementWalker.js +92 -83
  193. package/lib-commonjs/hooks/useHTMLElementWalker.js.map +1 -1
  194. package/lib-commonjs/hooks/useNestedTreeNavigation.js +59 -58
  195. package/lib-commonjs/hooks/useNestedTreeNavigation.js.map +1 -1
  196. package/lib-commonjs/hooks/useOpenItemsState.js +30 -22
  197. package/lib-commonjs/hooks/useOpenItemsState.js.map +1 -1
  198. package/lib-commonjs/hooks/useRovingTabIndexes.js +54 -53
  199. package/lib-commonjs/hooks/useRovingTabIndexes.js.map +1 -1
  200. package/lib-commonjs/index.js +46 -181
  201. package/lib-commonjs/index.js.map +1 -1
  202. package/lib-commonjs/utils/ImmutableSet.js +37 -38
  203. package/lib-commonjs/utils/ImmutableSet.js.map +1 -1
  204. package/lib-commonjs/utils/assert.js +11 -9
  205. package/lib-commonjs/utils/assert.js.map +1 -1
  206. package/lib-commonjs/utils/createFlatTreeItems.js +127 -0
  207. package/lib-commonjs/utils/createFlatTreeItems.js.map +1 -0
  208. package/lib-commonjs/utils/flattenTree.js +25 -33
  209. package/lib-commonjs/utils/flattenTree.js.map +1 -1
  210. package/lib-commonjs/utils/getTreeItemValueFromElement.js +18 -0
  211. package/lib-commonjs/utils/getTreeItemValueFromElement.js.map +1 -0
  212. package/lib-commonjs/utils/nextTypeAheadElement.js +16 -16
  213. package/lib-commonjs/utils/nextTypeAheadElement.js.map +1 -1
  214. package/lib-commonjs/utils/normalizeOpenItems.js +11 -9
  215. package/lib-commonjs/utils/normalizeOpenItems.js.map +1 -1
  216. package/lib-commonjs/utils/tokens.js +28 -20
  217. package/lib-commonjs/utils/tokens.js.map +1 -1
  218. package/lib-commonjs/utils/treeItemFilter.js +7 -7
  219. package/lib-commonjs/utils/treeItemFilter.js.map +1 -1
  220. package/package.json +23 -17
  221. package/lib/components/Tree/useTreeStyles.js +0 -20
  222. package/lib/components/Tree/useTreeStyles.js.map +0 -1
  223. package/lib/components/TreeItem/useTreeItemStyles.js +0 -203
  224. package/lib/components/TreeItem/useTreeItemStyles.js.map +0 -1
  225. package/lib/components/TreeItemLayout/useTreeItemLayoutStyles.js +0 -98
  226. package/lib/components/TreeItemLayout/useTreeItemLayoutStyles.js.map +0 -1
  227. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.js +0 -115
  228. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.js.map +0 -1
  229. package/lib/utils/createUnfilteredFlatTree.js +0 -77
  230. package/lib/utils/createUnfilteredFlatTree.js.map +0 -1
  231. package/lib/utils/createVisibleFlatTree.js +0 -80
  232. package/lib/utils/createVisibleFlatTree.js.map +0 -1
  233. package/lib-commonjs/components/Tree/useTreeStyles.js +0 -27
  234. package/lib-commonjs/components/Tree/useTreeStyles.js.map +0 -1
  235. package/lib-commonjs/components/TreeItem/useTreeItemStyles.js +0 -210
  236. package/lib-commonjs/components/TreeItem/useTreeItemStyles.js.map +0 -1
  237. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayoutStyles.js +0 -105
  238. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayoutStyles.js.map +0 -1
  239. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.js +0 -122
  240. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.js.map +0 -1
  241. package/lib-commonjs/utils/createUnfilteredFlatTree.js +0 -84
  242. package/lib-commonjs/utils/createUnfilteredFlatTree.js.map +0 -1
  243. package/lib-commonjs/utils/createVisibleFlatTree.js +0 -87
  244. package/lib-commonjs/utils/createVisibleFlatTree.js.map +0 -1
@@ -1,24 +1,29 @@
1
1
  "use strict";
2
-
3
2
  Object.defineProperty(exports, "__esModule", {
4
- value: true
3
+ value: true
5
4
  });
6
- exports.useTreeContext_unstable = exports.TreeProvider = exports.TreeContext = void 0;
7
- const react_context_selector_1 = /*#__PURE__*/require("@fluentui/react-context-selector");
8
- const ImmutableSet_1 = /*#__PURE__*/require("../utils/ImmutableSet");
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ TreeContext: ()=>TreeContext,
13
+ TreeProvider: ()=>TreeProvider,
14
+ useTreeContext_unstable: ()=>useTreeContext_unstable
15
+ });
16
+ const _reactContextSelector = require("@fluentui/react-context-selector");
17
+ const _immutableSet = require("../utils/ImmutableSet");
9
18
  const defaultContextValue = {
10
- level: 0,
11
- openItems: ImmutableSet_1.emptyImmutableSet,
12
- requestOpenChange: noop,
13
- requestNavigation: noop,
14
- appearance: 'subtle',
15
- size: 'medium'
19
+ level: 0,
20
+ openItems: _immutableSet.emptyImmutableSet,
21
+ requestTreeResponse: noop,
22
+ appearance: 'subtle',
23
+ size: 'medium'
16
24
  };
17
25
  function noop() {
18
- /* noop */
19
- }
20
- exports.TreeContext = /*#__PURE__*/react_context_selector_1.createContext(undefined);
21
- exports.TreeProvider = exports.TreeContext.Provider;
22
- const useTreeContext_unstable = selector => react_context_selector_1.useContextSelector(exports.TreeContext, (ctx = defaultContextValue) => selector(ctx));
23
- exports.useTreeContext_unstable = useTreeContext_unstable;
24
- //# sourceMappingURL=treeContext.js.map
26
+ /* noop */ }
27
+ const TreeContext = (0, _reactContextSelector.createContext)(undefined);
28
+ const { Provider: TreeProvider } = TreeContext;
29
+ const useTreeContext_unstable = (selector)=>(0, _reactContextSelector.useContextSelector)(TreeContext, (ctx = defaultContextValue)=>selector(ctx));
@@ -1 +1 @@
1
- {"version":3,"names":["react_context_selector_1","require","ImmutableSet_1","defaultContextValue","level","openItems","emptyImmutableSet","requestOpenChange","noop","requestNavigation","appearance","size","exports","TreeContext","createContext","undefined","TreeProvider","Provider","useTreeContext_unstable","selector","useContextSelector","ctx"],"sources":["../src/packages/react-components/react-tree/src/contexts/treeContext.ts"],"sourcesContent":["import { Context, ContextSelector, createContext, useContextSelector } from '@fluentui/react-context-selector';\nimport { TreeItemId, TreeOpenChangeData, TreeNavigationData_unstable } from '../Tree';\nimport { emptyImmutableSet, ImmutableSet } from '../utils/ImmutableSet';\n\nexport type TreeContextValue = {\n level: number;\n appearance: 'subtle' | 'subtle-alpha' | 'transparent';\n size: 'small' | 'medium';\n openItems: ImmutableSet<TreeItemId>;\n /**\n * Requests dialog main component to update it's internal open state\n */\n requestOpenChange(data: TreeOpenChangeData): void;\n requestNavigation(data: TreeNavigationData_unstable): void;\n};\n\nconst defaultContextValue: TreeContextValue = {\n level: 0,\n openItems: emptyImmutableSet,\n requestOpenChange: noop,\n requestNavigation: noop,\n appearance: 'subtle',\n size: 'medium',\n};\n\nfunction noop() {\n /* noop */\n}\n\nexport const TreeContext: Context<TreeContextValue | undefined> = createContext<TreeContextValue | undefined>(\n undefined,\n);\n\nexport const { Provider: TreeProvider } = TreeContext;\nexport const useTreeContext_unstable = <T>(selector: ContextSelector<TreeContextValue, T>): T =>\n useContextSelector(TreeContext, (ctx = defaultContextValue) => selector(ctx));\n"],"mappings":";;;;;;AAAA,MAAAA,wBAAA,gBAAAC,OAAA;AAEA,MAAAC,cAAA,gBAAAD,OAAA;AAcA,MAAME,mBAAmB,GAAqB;EAC5CC,KAAK,EAAE,CAAC;EACRC,SAAS,EAAEH,cAAA,CAAAI,iBAAiB;EAC5BC,iBAAiB,EAAEC,IAAI;EACvBC,iBAAiB,EAAED,IAAI;EACvBE,UAAU,EAAE,QAAQ;EACpBC,IAAI,EAAE;CACP;AAED,SAASH,IAAIA,CAAA;EACX;AAAA;AAGWI,OAAA,CAAAC,WAAW,gBAA0Cb,wBAAA,CAAAc,aAAa,CAC7EC,SAAS,CACV;AAEwBH,OAAA,CAAAI,YAAY,GAAKJ,OAAA,CAAAC,WAAW,CAAAI,QAAA;AAC9C,MAAMC,uBAAuB,GAAOC,QAA8C,IACvFnB,wBAAA,CAAAoB,kBAAkB,CAACR,OAAA,CAAAC,WAAW,EAAE,CAACQ,GAAG,GAAGlB,mBAAmB,KAAKgB,QAAQ,CAACE,GAAG,CAAC,CAAC;AADlET,OAAA,CAAAM,uBAAuB,GAAAA,uBAAA"}
1
+ {"version":3,"sources":["treeContext.js"],"sourcesContent":["import { createContext, useContextSelector } from '@fluentui/react-context-selector';\nimport { emptyImmutableSet } from '../utils/ImmutableSet';\nconst defaultContextValue = {\n level: 0,\n openItems: emptyImmutableSet,\n requestTreeResponse: noop,\n appearance: 'subtle',\n size: 'medium'\n};\nfunction noop() {\n/* noop */ }\nexport const TreeContext = createContext(undefined);\nexport const { Provider: TreeProvider } = TreeContext;\nexport const useTreeContext_unstable = (selector)=>useContextSelector(TreeContext, (ctx = defaultContextValue)=>selector(ctx));\n"],"names":["TreeContext","TreeProvider","useTreeContext_unstable","defaultContextValue","level","openItems","emptyImmutableSet","requestTreeResponse","noop","appearance","size","createContext","undefined","Provider","selector","useContextSelector","ctx"],"mappings":";;;;;;;;;;;IAWaA,WAAW,MAAXA;IACYC,YAAY,MAAZA;IACZC,uBAAuB,MAAvBA;;sCAbqC;8BAChB;AAClC,MAAMC,sBAAsB;IACxBC,OAAO;IACPC,WAAWC,+BAAiB;IAC5BC,qBAAqBC;IACrBC,YAAY;IACZC,MAAM;AACV;AACA,SAASF,OAAO;AAChB,QAAQ,GAAG;AACJ,MAAMR,cAAcW,IAAAA,mCAAa,EAACC;AAClC,MAAM,EAAEC,UAAUZ,aAAY,EAAG,GAAGD;AACpC,MAAME,0BAA0B,CAACY,WAAWC,IAAAA,wCAAkB,EAACf,aAAa,CAACgB,MAAMb,mBAAmB,GAAGW,SAASE"}
@@ -1,18 +1,32 @@
1
1
  "use strict";
2
-
3
2
  Object.defineProperty(exports, "__esModule", {
4
- value: true
3
+ value: true
5
4
  });
6
- exports.useTreeItemContext_unstable = exports.TreeItemProvider = exports.TreeItemContext = void 0;
7
- const React = /*#__PURE__*/require("react");
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ TreeItemContext: ()=>TreeItemContext,
13
+ TreeItemProvider: ()=>TreeItemProvider,
14
+ useTreeItemContext_unstable: ()=>useTreeItemContext_unstable
15
+ });
16
+ const _interopRequireWildcard = require("@swc/helpers/lib/_interop_require_wildcard.js").default;
17
+ const _react = /*#__PURE__*/ _interopRequireWildcard(require("react"));
18
+ const _reactContextSelector = require("@fluentui/react-context-selector");
8
19
  const defaultContextValue = {
9
- isActionsVisible: false
10
- };
11
- exports.TreeItemContext = /*#__PURE__*/React.createContext(undefined);
12
- exports.TreeItemProvider = exports.TreeItemContext.Provider;
13
- const useTreeItemContext_unstable = () => {
14
- var _a;
15
- return (_a = React.useContext(exports.TreeItemContext)) !== null && _a !== void 0 ? _a : defaultContextValue;
20
+ value: '',
21
+ isActionsVisible: false,
22
+ isAsideVisible: true,
23
+ actionsRef: /*#__PURE__*/ _react.createRef(),
24
+ expandIconRef: /*#__PURE__*/ _react.createRef(),
25
+ layoutRef: /*#__PURE__*/ _react.createRef(),
26
+ subtreeRef: /*#__PURE__*/ _react.createRef(),
27
+ itemType: 'leaf',
28
+ open: false
16
29
  };
17
- exports.useTreeItemContext_unstable = useTreeItemContext_unstable;
18
- //# sourceMappingURL=treeItemContext.js.map
30
+ const TreeItemContext = (0, _reactContextSelector.createContext)(undefined);
31
+ const { Provider: TreeItemProvider } = TreeItemContext;
32
+ const useTreeItemContext_unstable = (selector)=>(0, _reactContextSelector.useContextSelector)(TreeItemContext, (ctx = defaultContextValue)=>selector(ctx));
@@ -1 +1 @@
1
- {"version":3,"names":["React","require","defaultContextValue","isActionsVisible","exports","TreeItemContext","createContext","undefined","TreeItemProvider","Provider","useTreeItemContext_unstable","_a","useContext"],"sources":["../src/packages/react-components/react-tree/src/contexts/treeItemContext.ts"],"sourcesContent":["import * as React from 'react';\n\nexport type TreeItemContextValue = {\n isActionsVisible: boolean;\n};\n\nconst defaultContextValue: TreeItemContextValue = {\n isActionsVisible: false,\n};\n\nexport const TreeItemContext: React.Context<TreeItemContextValue | undefined> = React.createContext<\n TreeItemContextValue | undefined\n>(undefined);\n\nexport const { Provider: TreeItemProvider } = TreeItemContext;\nexport const useTreeItemContext_unstable = (): TreeItemContextValue =>\n React.useContext(TreeItemContext) ?? defaultContextValue;\n"],"mappings":";;;;;;AAAA,MAAAA,KAAA,gBAAAC,OAAA;AAMA,MAAMC,mBAAmB,GAAyB;EAChDC,gBAAgB,EAAE;CACnB;AAEYC,OAAA,CAAAC,eAAe,gBAAoDL,KAAK,CAACM,aAAa,CAEjGC,SAAS,CAAC;AAEaH,OAAA,CAAAI,gBAAgB,GAAKJ,OAAA,CAAAC,eAAe,CAAAI,QAAA;AACtD,MAAMC,2BAA2B,GAAGA,CAAA,KAA2B;EAAA,IAAAC,EAAA;EACpE,QAAAA,EAAA,GAAAX,KAAK,CAACY,UAAU,CAACR,OAAA,CAAAC,eAAe,CAAC,cAAAM,EAAA,cAAAA,EAAA,GAAIT,mBAAmB;AAAA;AAD7CE,OAAA,CAAAM,2BAA2B,GAAAA,2BAAA"}
1
+ {"version":3,"sources":["treeItemContext.js"],"sourcesContent":["import * as React from 'react';\nimport { createContext, useContextSelector } from '@fluentui/react-context-selector';\nconst defaultContextValue = {\n value: '',\n isActionsVisible: false,\n isAsideVisible: true,\n actionsRef: React.createRef(),\n expandIconRef: React.createRef(),\n layoutRef: React.createRef(),\n subtreeRef: React.createRef(),\n itemType: 'leaf',\n open: false\n};\nexport const TreeItemContext = createContext(undefined);\nexport const { Provider: TreeItemProvider } = TreeItemContext;\nexport const useTreeItemContext_unstable = (selector)=>useContextSelector(TreeItemContext, (ctx = defaultContextValue)=>selector(ctx));\n"],"names":["TreeItemContext","TreeItemProvider","useTreeItemContext_unstable","defaultContextValue","value","isActionsVisible","isAsideVisible","actionsRef","React","createRef","expandIconRef","layoutRef","subtreeRef","itemType","open","createContext","undefined","Provider","selector","useContextSelector","ctx"],"mappings":";;;;;;;;;;;IAaaA,eAAe,MAAfA;IACYC,gBAAgB,MAAhBA;IACZC,2BAA2B,MAA3BA;;;6DAfU;sCAC2B;AAClD,MAAMC,sBAAsB;IACxBC,OAAO;IACPC,kBAAkB,KAAK;IACvBC,gBAAgB,IAAI;IACpBC,0BAAYC,OAAMC,SAAS;IAC3BC,6BAAeF,OAAMC,SAAS;IAC9BE,yBAAWH,OAAMC,SAAS;IAC1BG,0BAAYJ,OAAMC,SAAS;IAC3BI,UAAU;IACVC,MAAM,KAAK;AACf;AACO,MAAMd,kBAAkBe,IAAAA,mCAAa,EAACC;AACtC,MAAM,EAAEC,UAAUhB,iBAAgB,EAAG,GAAGD;AACxC,MAAME,8BAA8B,CAACgB,WAAWC,IAAAA,wCAAkB,EAACnB,iBAAiB,CAACoB,MAAMjB,mBAAmB,GAAGe,SAASE"}
@@ -1,10 +1,8 @@
1
1
  "use strict";
2
-
3
2
  Object.defineProperty(exports, "__esModule", {
4
- value: true
3
+ value: true
5
4
  });
6
- const tslib_1 = /*#__PURE__*/require("tslib");
7
- tslib_1.__exportStar(require("./useFlatTree"), exports);
8
- tslib_1.__exportStar(require("./useNestedTreeNavigation"), exports);
9
- tslib_1.__exportStar(require("./useOpenItemsState"), exports);
10
- //# sourceMappingURL=index.js.map
5
+ const _exportStar = require("@swc/helpers/lib/_export_star.js").default;
6
+ _exportStar(require("./useFlatTree"), exports);
7
+ _exportStar(require("./useNestedTreeNavigation"), exports);
8
+ _exportStar(require("./useOpenItemsState"), exports);
@@ -1 +1 @@
1
- {"version":3,"names":["tslib_1","__exportStar","require","exports"],"sources":["../src/packages/react-components/react-tree/src/hooks/index.ts"],"sourcesContent":["export * from './useFlatTree';\nexport * from './useNestedTreeNavigation';\nexport * from './useOpenItemsState';\n"],"mappings":";;;;;;AAAAA,OAAA,CAAAC,YAAA,CAAAC,OAAA,mBAAAC,OAAA;AACAH,OAAA,CAAAC,YAAA,CAAAC,OAAA,+BAAAC,OAAA;AACAH,OAAA,CAAAC,YAAA,CAAAC,OAAA,yBAAAC,OAAA"}
1
+ {"version":3,"sources":["index.js"],"sourcesContent":["export * from './useFlatTree';\nexport * from './useNestedTreeNavigation';\nexport * from './useOpenItemsState';\n"],"names":[],"mappings":";;;;;oBAAc;oBACA;oBACA"}
@@ -1,56 +1,92 @@
1
1
  "use strict";
2
-
3
2
  Object.defineProperty(exports, "__esModule", {
4
- value: true
3
+ value: true
5
4
  });
6
- exports.useFlatTree_unstable = void 0;
7
- const react_utilities_1 = /*#__PURE__*/require("@fluentui/react-utilities");
8
- const React = /*#__PURE__*/require("react");
9
- const createUnfilteredFlatTree_1 = /*#__PURE__*/require("../utils/createUnfilteredFlatTree");
10
- const createVisibleFlatTree_1 = /*#__PURE__*/require("../utils/createVisibleFlatTree");
11
- const useFlatTreeNavigation_1 = /*#__PURE__*/require("./useFlatTreeNavigation");
12
- const useOpenItemsState_1 = /*#__PURE__*/require("./useOpenItemsState");
13
- /**
14
- * this hook provides FlatTree API to manage all required mechanisms to convert a list of items into renderable TreeItems
15
- * in multiple scenarios including virtualization.
16
- *
17
- * !!A flat tree is an unofficial spec for tree!!
18
- *
19
- * It should be used on cases where more complex interactions with a Tree is required.
20
- * On simple scenarios it is advised to simply use a nested structure instead.
21
- *
22
- * @param items - a list of tree items
23
- * @param options - in case control over the internal openItems is required
24
- */
25
- function useFlatTree_unstable(items, options = {}) {
26
- const [openItems, updateOpenItems] = useOpenItemsState_1.useOpenItemsState(options);
27
- const unfilteredFlatTree = React.useMemo(() => createUnfilteredFlatTree_1.createUnfilteredFlatTree(items), [items]);
28
- const [navigate, navigationRef] = useFlatTreeNavigation_1.useFlatTreeNavigation(unfilteredFlatTree);
29
- const visibleFlatTree = React.useMemo(() => createVisibleFlatTree_1.createVisibleFlatTree(unfilteredFlatTree, openItems), [unfilteredFlatTree, openItems]);
30
- const handleOpenChange = react_utilities_1.useEventCallback((event, data) => {
31
- event.preventDefault();
32
- updateOpenItems(data);
33
- });
34
- const handleNavigation = react_utilities_1.useEventCallback((event, data) => {
35
- event.preventDefault();
36
- navigate(data);
37
- });
38
- const flatTree = {
39
- ...visibleFlatTree,
40
- getTreeProps: () => ({
41
- ref: navigationRef,
42
- openItems,
43
- onOpenChange: handleOpenChange,
44
- // eslint-disable-next-line @typescript-eslint/naming-convention
45
- onNavigation_unstable: handleNavigation
46
- }),
47
- navigate,
48
- getItem: id => {
49
- var _a;
50
- return (_a = unfilteredFlatTree.itemsPerId.get(id)) !== null && _a !== void 0 ? _a : null;
51
- }
52
- };
53
- return flatTree;
5
+ Object.defineProperty(exports, "useFlatTree_unstable", {
6
+ enumerable: true,
7
+ get: ()=>useFlatTree_unstable
8
+ });
9
+ const _interopRequireWildcard = require("@swc/helpers/lib/_interop_require_wildcard.js").default;
10
+ const _reactUtilities = require("@fluentui/react-utilities");
11
+ const _react = /*#__PURE__*/ _interopRequireWildcard(require("react"));
12
+ const _createFlatTreeItems = require("../utils/createFlatTreeItems");
13
+ const _tokens = require("../utils/tokens");
14
+ const _useFlatTreeNavigation = require("./useFlatTreeNavigation");
15
+ const _useOpenItemsState = require("./useOpenItemsState");
16
+ const _getTreeItemValueFromElement = require("../utils/getTreeItemValueFromElement");
17
+ function useFlatTree_unstable(flatTreeItemProps, options = {}) {
18
+ const [openItems, updateOpenItems] = (0, _useOpenItemsState.useOpenItemsState)(options);
19
+ const flatTreeItems = _react.useMemo(()=>(0, _createFlatTreeItems.createFlatTreeItems)(flatTreeItemProps), [
20
+ flatTreeItemProps
21
+ ]);
22
+ const [navigate, navigationRef] = (0, _useFlatTreeNavigation.useFlatTreeNavigation)(flatTreeItems);
23
+ const treeRef = _react.useRef(null);
24
+ const handleOpenChange = (0, _reactUtilities.useEventCallback)((event, data)=>{
25
+ var _options_onOpenChange;
26
+ (_options_onOpenChange = options.onOpenChange) === null || _options_onOpenChange === void 0 ? void 0 : _options_onOpenChange.call(options, event, data);
27
+ if (!event.isDefaultPrevented()) {
28
+ updateOpenItems(data);
29
+ }
30
+ event.preventDefault();
31
+ });
32
+ const handleNavigation = (0, _reactUtilities.useEventCallback)((event, data)=>{
33
+ var _options_onNavigation_unstable;
34
+ (_options_onNavigation_unstable = options.onNavigation_unstable) === null || _options_onNavigation_unstable === void 0 ? void 0 : _options_onNavigation_unstable.call(options, event, data);
35
+ if (!event.isDefaultPrevented()) {
36
+ navigate(data);
37
+ }
38
+ event.preventDefault();
39
+ });
40
+ const getNextNavigableItem = (0, _reactUtilities.useEventCallback)((visibleItems, data)=>{
41
+ const item = flatTreeItems.get(data.value);
42
+ if (item) {
43
+ switch(data.type){
44
+ case _tokens.treeDataTypes.TypeAhead:
45
+ return item;
46
+ case _tokens.treeDataTypes.ArrowLeft:
47
+ return flatTreeItems.get(item.parentValue);
48
+ case _tokens.treeDataTypes.ArrowRight:
49
+ return visibleItems[item.index + 1];
50
+ case _tokens.treeDataTypes.End:
51
+ return visibleItems[visibleItems.length - 1];
52
+ case _tokens.treeDataTypes.Home:
53
+ return visibleItems[0];
54
+ case _tokens.treeDataTypes.ArrowDown:
55
+ return visibleItems[item.index + 1];
56
+ case _tokens.treeDataTypes.ArrowUp:
57
+ return visibleItems[item.index - 1];
58
+ }
59
+ }
60
+ });
61
+ const getElementFromItem = _react.useCallback((item)=>{
62
+ var _treeRef_current;
63
+ return (_treeRef_current = treeRef.current) === null || _treeRef_current === void 0 ? void 0 : _treeRef_current.querySelector(`[${_getTreeItemValueFromElement.dataTreeItemValueAttrName}="${item.value}"]`);
64
+ }, []);
65
+ const ref = (0, _reactUtilities.useMergedRefs)(treeRef, navigationRef);
66
+ const getTreeProps = _react.useCallback(()=>({
67
+ ref,
68
+ openItems,
69
+ onOpenChange: handleOpenChange,
70
+ // eslint-disable-next-line @typescript-eslint/naming-convention
71
+ onNavigation_unstable: handleNavigation
72
+ }), [
73
+ openItems
74
+ ]);
75
+ const items = _react.useCallback(()=>(0, _createFlatTreeItems.VisibleFlatTreeItemGenerator)(openItems, flatTreeItems), [
76
+ openItems,
77
+ flatTreeItems
78
+ ]);
79
+ return _react.useMemo(()=>({
80
+ navigate,
81
+ getTreeProps,
82
+ getNextNavigableItem,
83
+ getElementFromItem,
84
+ items
85
+ }), [
86
+ navigate,
87
+ getTreeProps,
88
+ getNextNavigableItem,
89
+ getElementFromItem,
90
+ items
91
+ ]);
54
92
  }
55
- exports.useFlatTree_unstable = useFlatTree_unstable;
56
- //# sourceMappingURL=useFlatTree.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["react_utilities_1","require","React","createUnfilteredFlatTree_1","createVisibleFlatTree_1","useFlatTreeNavigation_1","useOpenItemsState_1","useFlatTree_unstable","items","options","openItems","updateOpenItems","useOpenItemsState","unfilteredFlatTree","useMemo","createUnfilteredFlatTree","navigate","navigationRef","useFlatTreeNavigation","visibleFlatTree","createVisibleFlatTree","handleOpenChange","useEventCallback","event","data","preventDefault","handleNavigation","flatTree","getTreeProps","ref","onOpenChange","onNavigation_unstable","getItem","id","_a","itemsPerId","get","exports"],"sources":["../src/packages/react-components/react-tree/src/hooks/useFlatTree.ts"],"sourcesContent":["import { useEventCallback } from '@fluentui/react-utilities';\nimport * as React from 'react';\nimport {\n TreeNavigationData_unstable,\n TreeNavigationEvent_unstable,\n TreeOpenChangeData,\n TreeOpenChangeEvent,\n TreeProps,\n} from '../Tree';\nimport { TreeItemProps } from '../TreeItem';\nimport { createUnfilteredFlatTree } from '../utils/createUnfilteredFlatTree';\nimport { createVisibleFlatTree } from '../utils/createVisibleFlatTree';\nimport { useFlatTreeNavigation } from './useFlatTreeNavigation';\nimport { useOpenItemsState } from './useOpenItemsState';\n\nexport type FlatTreeItemProps = Required<Pick<TreeItemProps, 'id'>> &\n TreeItemProps & {\n parentId?: string;\n };\n\nexport type FlatTreeItem = {\n getTreeItemProps(): Required<Pick<TreeItemProps, 'id' | 'aria-setsize' | 'aria-level' | 'aria-posinset' | 'leaf'>> &\n TreeItemProps;\n parentId?: string;\n childrenSize: number;\n index: number;\n id: string;\n level: number;\n};\n\nexport type FlatTreeProps = Required<\n Pick<TreeProps, 'openItems' | 'onOpenChange' | 'onNavigation_unstable'> & { ref: React.Ref<HTMLDivElement> }\n>;\n\n/**\n * FlatTree API to manage all required mechanisms to convert a list of items into renderable TreeItems\n * in multiple scenarios including virtualization.\n *\n * !!A flat tree is an unofficial spec for tree!!\n *\n * It should be used on cases where more complex interactions with a Tree is required.\n *\n * On simple scenarios it is advised to simply use a nested structure instead.\n */\nexport type FlatTree = {\n /**\n * returns the properties required for the Tree component to work properly.\n * That includes:\n * `openItems`, `onOpenChange`, `onNavigation_unstable` and `ref`\n */\n getTreeProps(): FlatTreeProps;\n /**\n * internal method used to react to an `onNavigation` event.\n * This method ensures proper navigation on keyboard and mouse interaction.\n * In case of virtualization it might be required to cancel default provided `onNavigation`\n * event and then call this method manually.\n *\n * @example\n * ```ts\n * // react-window\n * const handleNavigation = (event, data) => {\n * event.preventDefault();\n * const nextItem = tree.getNextNavigableItem(data);\n * // scroll to item using virtualization scroll mechanism\n * if (nextItem && !targetDocument.getElementById(nextItem.id)) {\n * listRef.current.scrollToItem(nextItem.index);\n * }\n * // wait for scrolling to happen and then invoke navigate method\n * requestAnimationFrame(() => {\n * tree.navigate(data);\n * });\n * };\n *```\n */\n navigate(data: TreeNavigationData_unstable): void;\n /**\n * returns next item to be focused on a navigation.\n * This method is provided to decouple the element that needs to be focused from\n * the action of focusing it itself.\n */\n getNextNavigableItem(data: TreeNavigationData_unstable): FlatTreeItem | null;\n /**\n * returns a single flat tree item by id without iterating over the whole collection\n */\n getItem(id: string): FlatTreeItem | null;\n /**\n * returns an iterable containing all visually available flat tree items\n */\n items(): Iterable<FlatTreeItem>;\n};\n\n/**\n * this hook provides FlatTree API to manage all required mechanisms to convert a list of items into renderable TreeItems\n * in multiple scenarios including virtualization.\n *\n * !!A flat tree is an unofficial spec for tree!!\n *\n * It should be used on cases where more complex interactions with a Tree is required.\n * On simple scenarios it is advised to simply use a nested structure instead.\n *\n * @param items - a list of tree items\n * @param options - in case control over the internal openItems is required\n */\nexport function useFlatTree_unstable(\n items: FlatTreeItemProps[],\n options: Pick<TreeProps, 'openItems' | 'defaultOpenItems'> = {},\n): FlatTree {\n const [openItems, updateOpenItems] = useOpenItemsState(options);\n const unfilteredFlatTree = React.useMemo(() => createUnfilteredFlatTree(items), [items]);\n const [navigate, navigationRef] = useFlatTreeNavigation(unfilteredFlatTree);\n const visibleFlatTree = React.useMemo(\n () => createVisibleFlatTree(unfilteredFlatTree, openItems),\n [unfilteredFlatTree, openItems],\n );\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 flatTree: FlatTree = {\n ...visibleFlatTree,\n getTreeProps: () => ({\n ref: navigationRef as React.Ref<HTMLDivElement>,\n openItems,\n onOpenChange: handleOpenChange,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n onNavigation_unstable: handleNavigation,\n }),\n navigate,\n getItem: id => unfilteredFlatTree.itemsPerId.get(id) ?? null,\n };\n return flatTree;\n}\n"],"mappings":";;;;;;AAAA,MAAAA,iBAAA,gBAAAC,OAAA;AACA,MAAAC,KAAA,gBAAAD,OAAA;AASA,MAAAE,0BAAA,gBAAAF,OAAA;AACA,MAAAG,uBAAA,gBAAAH,OAAA;AACA,MAAAI,uBAAA,gBAAAJ,OAAA;AACA,MAAAK,mBAAA,gBAAAL,OAAA;AA8EA;;;;;;;;;;;;AAYA,SAAgBM,oBAAoBA,CAClCC,KAA0B,EAC1BC,OAAA,GAA6D,EAAE;EAE/D,MAAM,CAACC,SAAS,EAAEC,eAAe,CAAC,GAAGL,mBAAA,CAAAM,iBAAiB,CAACH,OAAO,CAAC;EAC/D,MAAMI,kBAAkB,GAAGX,KAAK,CAACY,OAAO,CAAC,MAAMX,0BAAA,CAAAY,wBAAwB,CAACP,KAAK,CAAC,EAAE,CAACA,KAAK,CAAC,CAAC;EACxF,MAAM,CAACQ,QAAQ,EAAEC,aAAa,CAAC,GAAGZ,uBAAA,CAAAa,qBAAqB,CAACL,kBAAkB,CAAC;EAC3E,MAAMM,eAAe,GAAGjB,KAAK,CAACY,OAAO,CACnC,MAAMV,uBAAA,CAAAgB,qBAAqB,CAACP,kBAAkB,EAAEH,SAAS,CAAC,EAC1D,CAACG,kBAAkB,EAAEH,SAAS,CAAC,CAChC;EAED,MAAMW,gBAAgB,GAAGrB,iBAAA,CAAAsB,gBAAgB,CAAC,CAACC,KAA0B,EAAEC,IAAwB,KAAI;IACjGD,KAAK,CAACE,cAAc,EAAE;IACtBd,eAAe,CAACa,IAAI,CAAC;EACvB,CAAC,CAAC;EAEF,MAAME,gBAAgB,GAAG1B,iBAAA,CAAAsB,gBAAgB,CACvC,CAACC,KAAmC,EAAEC,IAAiC,KAAI;IACzED,KAAK,CAACE,cAAc,EAAE;IACtBT,QAAQ,CAACQ,IAAI,CAAC;EAChB,CAAC,CACF;EAED,MAAMG,QAAQ,GAAa;IACzB,GAAGR,eAAe;IAClBS,YAAY,EAAEA,CAAA,MAAO;MACnBC,GAAG,EAAEZ,aAA0C;MAC/CP,SAAS;MACToB,YAAY,EAAET,gBAAgB;MAC9B;MACAU,qBAAqB,EAAEL;KACxB,CAAC;IACFV,QAAQ;IACRgB,OAAO,EAAEC,EAAE,IAAG;MAAA,IAAAC,EAAA;MAAC,QAAAA,EAAA,GAAArB,kBAAkB,CAACsB,UAAU,CAACC,GAAG,CAACH,EAAE,CAAC,cAAAC,EAAA,cAAAA,EAAA,GAAI,IAAI;IAAA;GAC7D;EACD,OAAOP,QAAQ;AACjB;AArCAU,OAAA,CAAA9B,oBAAA,GAAAA,oBAAA"}
1
+ {"version":3,"sources":["useFlatTree.js"],"sourcesContent":["import { useEventCallback, useMergedRefs } from '@fluentui/react-utilities';\nimport * as React from 'react';\nimport { createFlatTreeItems, VisibleFlatTreeItemGenerator } from '../utils/createFlatTreeItems';\nimport { treeDataTypes } from '../utils/tokens';\nimport { useFlatTreeNavigation } from './useFlatTreeNavigation';\nimport { useOpenItemsState } from './useOpenItemsState';\nimport { dataTreeItemValueAttrName } from '../utils/getTreeItemValueFromElement';\n/**\n * this hook provides FlatTree API to manage all required mechanisms to convert a list of items into renderable TreeItems\n * in multiple scenarios including virtualization.\n *\n * !!A flat tree is an unofficial spec for tree!!\n *\n * It should be used on cases where more complex interactions with a Tree is required.\n * On simple scenarios it is advised to simply use a nested structure instead.\n *\n * @param flatTreeItemProps - a list of tree items\n * @param options - in case control over the internal openItems is required\n */ export function useFlatTree_unstable(flatTreeItemProps, options = {}) {\n const [openItems, updateOpenItems] = useOpenItemsState(options);\n const flatTreeItems = React.useMemo(()=>createFlatTreeItems(flatTreeItemProps), [\n flatTreeItemProps\n ]);\n const [navigate, navigationRef] = useFlatTreeNavigation(flatTreeItems);\n const treeRef = React.useRef(null);\n const handleOpenChange = useEventCallback((event, data)=>{\n var _options_onOpenChange;\n (_options_onOpenChange = options.onOpenChange) === null || _options_onOpenChange === void 0 ? void 0 : _options_onOpenChange.call(options, event, data);\n if (!event.isDefaultPrevented()) {\n updateOpenItems(data);\n }\n event.preventDefault();\n });\n const handleNavigation = useEventCallback((event, data)=>{\n var _options_onNavigation_unstable;\n (_options_onNavigation_unstable = options.onNavigation_unstable) === null || _options_onNavigation_unstable === void 0 ? void 0 : _options_onNavigation_unstable.call(options, event, data);\n if (!event.isDefaultPrevented()) {\n navigate(data);\n }\n event.preventDefault();\n });\n const getNextNavigableItem = useEventCallback((visibleItems, data)=>{\n const item = flatTreeItems.get(data.value);\n if (item) {\n switch(data.type){\n case treeDataTypes.TypeAhead:\n return item;\n case treeDataTypes.ArrowLeft:\n return flatTreeItems.get(item.parentValue);\n case treeDataTypes.ArrowRight:\n return visibleItems[item.index + 1];\n case treeDataTypes.End:\n return visibleItems[visibleItems.length - 1];\n case treeDataTypes.Home:\n return visibleItems[0];\n case treeDataTypes.ArrowDown:\n return visibleItems[item.index + 1];\n case treeDataTypes.ArrowUp:\n return visibleItems[item.index - 1];\n }\n }\n });\n const getElementFromItem = React.useCallback((item)=>{\n var _treeRef_current;\n return (_treeRef_current = treeRef.current) === null || _treeRef_current === void 0 ? void 0 : _treeRef_current.querySelector(`[${dataTreeItemValueAttrName}=\"${item.value}\"]`);\n }, []);\n const ref = useMergedRefs(treeRef, navigationRef);\n const getTreeProps = React.useCallback(()=>({\n ref,\n openItems,\n onOpenChange: handleOpenChange,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n onNavigation_unstable: handleNavigation\n }), // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n openItems\n ]);\n const items = React.useCallback(()=>VisibleFlatTreeItemGenerator(openItems, flatTreeItems), [\n openItems,\n flatTreeItems\n ]);\n return React.useMemo(()=>({\n navigate,\n getTreeProps,\n getNextNavigableItem,\n getElementFromItem,\n items\n }), [\n navigate,\n getTreeProps,\n getNextNavigableItem,\n getElementFromItem,\n items\n ]);\n}\n"],"names":["useFlatTree_unstable","flatTreeItemProps","options","openItems","updateOpenItems","useOpenItemsState","flatTreeItems","React","useMemo","createFlatTreeItems","navigate","navigationRef","useFlatTreeNavigation","treeRef","useRef","handleOpenChange","useEventCallback","event","data","_options_onOpenChange","onOpenChange","call","isDefaultPrevented","preventDefault","handleNavigation","_options_onNavigation_unstable","onNavigation_unstable","getNextNavigableItem","visibleItems","item","get","value","type","treeDataTypes","TypeAhead","ArrowLeft","parentValue","ArrowRight","index","End","length","Home","ArrowDown","ArrowUp","getElementFromItem","useCallback","_treeRef_current","current","querySelector","dataTreeItemValueAttrName","ref","useMergedRefs","getTreeProps","items","VisibleFlatTreeItemGenerator"],"mappings":"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"}
@@ -1,81 +1,85 @@
1
1
  "use strict";
2
-
3
2
  Object.defineProperty(exports, "__esModule", {
4
- value: true
3
+ value: true
5
4
  });
6
- exports.useFlatTreeNavigation = void 0;
7
- const react_shared_contexts_1 = /*#__PURE__*/require("@fluentui/react-shared-contexts");
8
- const react_utilities_1 = /*#__PURE__*/require("@fluentui/react-utilities");
9
- const nextTypeAheadElement_1 = /*#__PURE__*/require("../utils/nextTypeAheadElement");
10
- const tokens_1 = /*#__PURE__*/require("../utils/tokens");
11
- const treeItemFilter_1 = /*#__PURE__*/require("../utils/treeItemFilter");
12
- const useHTMLElementWalker_1 = /*#__PURE__*/require("./useHTMLElementWalker");
13
- const useRovingTabIndexes_1 = /*#__PURE__*/require("./useRovingTabIndexes");
14
- function useFlatTreeNavigation(flatTree) {
15
- const {
16
- targetDocument
17
- } = react_shared_contexts_1.useFluent_unstable();
18
- const [treeItemWalkerRef, treeItemWalkerRootRef] = useHTMLElementWalker_1.useHTMLElementWalkerRef(treeItemFilter_1.treeItemFilter);
19
- const [{
20
- rove
21
- }, rovingRootRef] = useRovingTabIndexes_1.useRovingTabIndex(treeItemFilter_1.treeItemFilter);
22
- function getNextElement(data) {
23
- if (!targetDocument || !treeItemWalkerRef.current) {
24
- return null;
25
- }
26
- const treeItemWalker = treeItemWalkerRef.current;
27
- switch (data.type) {
28
- case tokens_1.treeDataTypes.click:
29
- return data.target;
30
- case tokens_1.treeDataTypes.typeAhead:
31
- treeItemWalker.currentElement = data.target;
32
- return nextTypeAheadElement_1.nextTypeAheadElement(treeItemWalker, data.event.key);
33
- case tokens_1.treeDataTypes.arrowLeft:
34
- return parentElement(flatTree, data.target, targetDocument);
35
- case tokens_1.treeDataTypes.arrowRight:
36
- treeItemWalker.currentElement = data.target;
37
- return firstChild(data.target, treeItemWalker);
38
- case tokens_1.treeDataTypes.end:
39
- treeItemWalker.currentElement = treeItemWalker.root;
40
- return treeItemWalker.lastChild();
41
- case tokens_1.treeDataTypes.home:
42
- treeItemWalker.currentElement = treeItemWalker.root;
43
- return treeItemWalker.firstChild();
44
- case tokens_1.treeDataTypes.arrowDown:
45
- treeItemWalker.currentElement = data.target;
46
- return treeItemWalker.nextElement();
47
- case tokens_1.treeDataTypes.arrowUp:
48
- treeItemWalker.currentElement = data.target;
49
- return treeItemWalker.previousElement();
50
- }
51
- }
52
- function navigate(data) {
53
- const nextElement = getNextElement(data);
54
- if (nextElement) {
55
- rove(nextElement);
5
+ Object.defineProperty(exports, "useFlatTreeNavigation", {
6
+ enumerable: true,
7
+ get: ()=>useFlatTreeNavigation
8
+ });
9
+ const _reactSharedContexts = require("@fluentui/react-shared-contexts");
10
+ const _reactUtilities = require("@fluentui/react-utilities");
11
+ const _nextTypeAheadElement = require("../utils/nextTypeAheadElement");
12
+ const _tokens = require("../utils/tokens");
13
+ const _treeItemFilter = require("../utils/treeItemFilter");
14
+ const _useHTMLElementWalker = require("./useHTMLElementWalker");
15
+ const _useRovingTabIndexes = require("./useRovingTabIndexes");
16
+ const _getTreeItemValueFromElement = require("../utils/getTreeItemValueFromElement");
17
+ function useFlatTreeNavigation(flatTreeItems) {
18
+ const { targetDocument } = (0, _reactSharedContexts.useFluent_unstable)();
19
+ const [treeItemWalkerRef, treeItemWalkerRootRef] = (0, _useHTMLElementWalker.useHTMLElementWalkerRef)(_treeItemFilter.treeItemFilter);
20
+ const [{ rove }, rovingRootRef] = (0, _useRovingTabIndexes.useRovingTabIndex)(_treeItemFilter.treeItemFilter);
21
+ function getNextElement(data) {
22
+ if (!targetDocument || !treeItemWalkerRef.current) {
23
+ return null;
24
+ }
25
+ const treeItemWalker = treeItemWalkerRef.current;
26
+ switch(data.type){
27
+ case _tokens.treeDataTypes.Click:
28
+ return data.target;
29
+ case _tokens.treeDataTypes.TypeAhead:
30
+ treeItemWalker.currentElement = data.target;
31
+ return (0, _nextTypeAheadElement.nextTypeAheadElement)(treeItemWalker, data.event.key);
32
+ case _tokens.treeDataTypes.ArrowLeft:
33
+ return parentElement(flatTreeItems, data.target, treeItemWalker);
34
+ case _tokens.treeDataTypes.ArrowRight:
35
+ treeItemWalker.currentElement = data.target;
36
+ return firstChild(data.target, treeItemWalker);
37
+ case _tokens.treeDataTypes.End:
38
+ treeItemWalker.currentElement = treeItemWalker.root;
39
+ return treeItemWalker.lastChild();
40
+ case _tokens.treeDataTypes.Home:
41
+ treeItemWalker.currentElement = treeItemWalker.root;
42
+ return treeItemWalker.firstChild();
43
+ case _tokens.treeDataTypes.ArrowDown:
44
+ treeItemWalker.currentElement = data.target;
45
+ return treeItemWalker.nextElement();
46
+ case _tokens.treeDataTypes.ArrowUp:
47
+ treeItemWalker.currentElement = data.target;
48
+ return treeItemWalker.previousElement();
49
+ }
56
50
  }
57
- }
58
- return [navigate, react_utilities_1.useMergedRefs(treeItemWalkerRootRef, rovingRootRef)];
51
+ const navigate = (0, _reactUtilities.useEventCallback)((data)=>{
52
+ const nextElement = getNextElement(data);
53
+ if (nextElement) {
54
+ rove(nextElement);
55
+ }
56
+ });
57
+ return [
58
+ navigate,
59
+ (0, _reactUtilities.useMergedRefs)(treeItemWalkerRootRef, rovingRootRef)
60
+ ];
59
61
  }
60
- exports.useFlatTreeNavigation = useFlatTreeNavigation;
61
62
  function firstChild(target, treeWalker) {
62
- const nextElement = treeWalker.nextElement();
63
- if (!nextElement) {
63
+ const nextElement = treeWalker.nextElement();
64
+ if (!nextElement) {
65
+ return null;
66
+ }
67
+ const nextElementAriaPosInSet = nextElement.getAttribute('aria-posinset');
68
+ const nextElementAriaLevel = nextElement.getAttribute('aria-level');
69
+ const targetAriaLevel = target.getAttribute('aria-level');
70
+ if (nextElementAriaPosInSet === '1' && Number(nextElementAriaLevel) === Number(targetAriaLevel) + 1) {
71
+ return nextElement;
72
+ }
64
73
  return null;
65
- }
66
- const nextElementAriaPosInSet = nextElement.getAttribute('aria-posinset');
67
- const nextElementAriaLevel = nextElement.getAttribute('aria-level');
68
- const targetAriaLevel = target.getAttribute('aria-level');
69
- if (nextElementAriaPosInSet === '1' && Number(nextElementAriaLevel) === Number(targetAriaLevel) + 1) {
70
- return nextElement;
71
- }
72
- return null;
73
74
  }
74
- function parentElement(flatTree, target, document) {
75
- const flatTreeItem = flatTree.itemsPerId.get(target.id);
76
- if (flatTreeItem && flatTreeItem.parentId) {
77
- return document.getElementById(flatTreeItem.parentId);
78
- }
79
- return null;
75
+ function parentElement(flatTreeItems, target, treeWalker) {
76
+ const value = (0, _getTreeItemValueFromElement.getTreeItemValueFromElement)(target);
77
+ if (value === null) {
78
+ return null;
79
+ }
80
+ const flatTreeItem = flatTreeItems.get(value);
81
+ if (flatTreeItem === null || flatTreeItem === void 0 ? void 0 : flatTreeItem.parentValue) {
82
+ return treeWalker.root.querySelector(`[${_getTreeItemValueFromElement.dataTreeItemValueAttrName}="${flatTreeItem.parentValue}"]`);
83
+ }
84
+ return null;
80
85
  }
81
- //# sourceMappingURL=useFlatTreeNavigation.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["react_shared_contexts_1","require","react_utilities_1","nextTypeAheadElement_1","tokens_1","treeItemFilter_1","useHTMLElementWalker_1","useRovingTabIndexes_1","useFlatTreeNavigation","flatTree","targetDocument","useFluent_unstable","treeItemWalkerRef","treeItemWalkerRootRef","useHTMLElementWalkerRef","treeItemFilter","rove","rovingRootRef","useRovingTabIndex","getNextElement","data","current","treeItemWalker","type","treeDataTypes","click","target","typeAhead","currentElement","nextTypeAheadElement","event","key","arrowLeft","parentElement","arrowRight","firstChild","end","root","lastChild","home","arrowDown","nextElement","arrowUp","previousElement","navigate","useMergedRefs","exports","treeWalker","nextElementAriaPosInSet","getAttribute","nextElementAriaLevel","targetAriaLevel","Number","document","flatTreeItem","itemsPerId","get","id","parentId","getElementById"],"sources":["../src/packages/react-components/react-tree/src/hooks/useFlatTreeNavigation.ts"],"sourcesContent":["import { useFluent_unstable } from '@fluentui/react-shared-contexts';\nimport { useMergedRefs } from '@fluentui/react-utilities';\nimport { TreeNavigationData_unstable } from '../Tree';\nimport { UnfilteredFlatTree } from '../utils/createUnfilteredFlatTree';\nimport { nextTypeAheadElement } from '../utils/nextTypeAheadElement';\nimport { treeDataTypes } from '../utils/tokens';\nimport { treeItemFilter } from '../utils/treeItemFilter';\nimport { HTMLElementWalker, useHTMLElementWalkerRef } from './useHTMLElementWalker';\nimport { useRovingTabIndex } from './useRovingTabIndexes';\n\nexport function useFlatTreeNavigation(flatTree: UnfilteredFlatTree) {\n const { targetDocument } = useFluent_unstable();\n const [treeItemWalkerRef, treeItemWalkerRootRef] = useHTMLElementWalkerRef(treeItemFilter);\n const [{ rove }, rovingRootRef] = useRovingTabIndex(treeItemFilter);\n\n function getNextElement(data: TreeNavigationData_unstable) {\n if (!targetDocument || !treeItemWalkerRef.current) {\n return null;\n }\n const treeItemWalker = treeItemWalkerRef.current;\n switch (data.type) {\n case treeDataTypes.click:\n return data.target;\n case treeDataTypes.typeAhead:\n treeItemWalker.currentElement = data.target;\n return nextTypeAheadElement(treeItemWalker, data.event.key);\n case treeDataTypes.arrowLeft:\n return parentElement(flatTree, data.target, targetDocument);\n case treeDataTypes.arrowRight:\n treeItemWalker.currentElement = data.target;\n return firstChild(data.target, treeItemWalker);\n case treeDataTypes.end:\n treeItemWalker.currentElement = treeItemWalker.root;\n return treeItemWalker.lastChild();\n case treeDataTypes.home:\n treeItemWalker.currentElement = treeItemWalker.root;\n return treeItemWalker.firstChild();\n case treeDataTypes.arrowDown:\n treeItemWalker.currentElement = data.target;\n return treeItemWalker.nextElement();\n case treeDataTypes.arrowUp:\n treeItemWalker.currentElement = data.target;\n return treeItemWalker.previousElement();\n }\n }\n function navigate(data: TreeNavigationData_unstable) {\n const nextElement = getNextElement(data);\n if (nextElement) {\n rove(nextElement);\n }\n }\n return [navigate, useMergedRefs(treeItemWalkerRootRef, rovingRootRef)] as const;\n}\n\nfunction firstChild(target: HTMLElement, treeWalker: HTMLElementWalker): HTMLElement | null {\n const nextElement = treeWalker.nextElement();\n if (!nextElement) {\n return null;\n }\n const nextElementAriaPosInSet = nextElement.getAttribute('aria-posinset');\n const nextElementAriaLevel = nextElement.getAttribute('aria-level');\n const targetAriaLevel = target.getAttribute('aria-level');\n if (nextElementAriaPosInSet === '1' && Number(nextElementAriaLevel) === Number(targetAriaLevel) + 1) {\n return nextElement;\n }\n return null;\n}\n\nfunction parentElement(flatTree: UnfilteredFlatTree, target: HTMLElement, document: Document) {\n const flatTreeItem = flatTree.itemsPerId.get(target.id);\n if (flatTreeItem && flatTreeItem.parentId) {\n return document.getElementById(flatTreeItem.parentId);\n }\n return null;\n}\n"],"mappings":"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"}
1
+ {"version":3,"sources":["useFlatTreeNavigation.js"],"sourcesContent":["import { useFluent_unstable } from '@fluentui/react-shared-contexts';\nimport { useEventCallback, useMergedRefs } from '@fluentui/react-utilities';\nimport { nextTypeAheadElement } from '../utils/nextTypeAheadElement';\nimport { treeDataTypes } from '../utils/tokens';\nimport { treeItemFilter } from '../utils/treeItemFilter';\nimport { useHTMLElementWalkerRef } from './useHTMLElementWalker';\nimport { useRovingTabIndex } from './useRovingTabIndexes';\nimport { dataTreeItemValueAttrName, getTreeItemValueFromElement } from '../utils/getTreeItemValueFromElement';\nexport function useFlatTreeNavigation(flatTreeItems) {\n const { targetDocument } = useFluent_unstable();\n const [treeItemWalkerRef, treeItemWalkerRootRef] = useHTMLElementWalkerRef(treeItemFilter);\n const [{ rove }, rovingRootRef] = useRovingTabIndex(treeItemFilter);\n function getNextElement(data) {\n if (!targetDocument || !treeItemWalkerRef.current) {\n return null;\n }\n const treeItemWalker = treeItemWalkerRef.current;\n switch(data.type){\n case treeDataTypes.Click:\n return data.target;\n case treeDataTypes.TypeAhead:\n treeItemWalker.currentElement = data.target;\n return nextTypeAheadElement(treeItemWalker, data.event.key);\n case treeDataTypes.ArrowLeft:\n return parentElement(flatTreeItems, data.target, treeItemWalker);\n case treeDataTypes.ArrowRight:\n treeItemWalker.currentElement = data.target;\n return firstChild(data.target, treeItemWalker);\n case treeDataTypes.End:\n treeItemWalker.currentElement = treeItemWalker.root;\n return treeItemWalker.lastChild();\n case treeDataTypes.Home:\n treeItemWalker.currentElement = treeItemWalker.root;\n return treeItemWalker.firstChild();\n case treeDataTypes.ArrowDown:\n treeItemWalker.currentElement = data.target;\n return treeItemWalker.nextElement();\n case treeDataTypes.ArrowUp:\n treeItemWalker.currentElement = data.target;\n return treeItemWalker.previousElement();\n }\n }\n const navigate = useEventCallback((data)=>{\n const nextElement = getNextElement(data);\n if (nextElement) {\n rove(nextElement);\n }\n });\n return [\n navigate,\n useMergedRefs(treeItemWalkerRootRef, rovingRootRef)\n ];\n}\nfunction firstChild(target, treeWalker) {\n const nextElement = treeWalker.nextElement();\n if (!nextElement) {\n return null;\n }\n const nextElementAriaPosInSet = nextElement.getAttribute('aria-posinset');\n const nextElementAriaLevel = nextElement.getAttribute('aria-level');\n const targetAriaLevel = target.getAttribute('aria-level');\n if (nextElementAriaPosInSet === '1' && Number(nextElementAriaLevel) === Number(targetAriaLevel) + 1) {\n return nextElement;\n }\n return null;\n}\nfunction parentElement(flatTreeItems, target, treeWalker) {\n const value = getTreeItemValueFromElement(target);\n if (value === null) {\n return null;\n }\n const flatTreeItem = flatTreeItems.get(value);\n if (flatTreeItem === null || flatTreeItem === void 0 ? void 0 : flatTreeItem.parentValue) {\n return treeWalker.root.querySelector(`[${dataTreeItemValueAttrName}=\"${flatTreeItem.parentValue}\"]`);\n }\n return null;\n}\n"],"names":["useFlatTreeNavigation","flatTreeItems","targetDocument","useFluent_unstable","treeItemWalkerRef","treeItemWalkerRootRef","useHTMLElementWalkerRef","treeItemFilter","rove","rovingRootRef","useRovingTabIndex","getNextElement","data","current","treeItemWalker","type","treeDataTypes","Click","target","TypeAhead","currentElement","nextTypeAheadElement","event","key","ArrowLeft","parentElement","ArrowRight","firstChild","End","root","lastChild","Home","ArrowDown","nextElement","ArrowUp","previousElement","navigate","useEventCallback","useMergedRefs","treeWalker","nextElementAriaPosInSet","getAttribute","nextElementAriaLevel","targetAriaLevel","Number","value","getTreeItemValueFromElement","flatTreeItem","get","parentValue","querySelector","dataTreeItemValueAttrName"],"mappings":"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"}