@fluentui/react-tree 9.0.0-beta.3 → 9.0.0-beta.30

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 (307) hide show
  1. package/CHANGELOG.json +1566 -1
  2. package/CHANGELOG.md +423 -2
  3. package/dist/index.d.ts +408 -131
  4. package/lib/FlatTree.js +1 -0
  5. package/lib/FlatTree.js.map +1 -0
  6. package/lib/Tree.js +0 -1
  7. package/lib/Tree.js.map +1 -1
  8. package/lib/TreeItem.js +0 -1
  9. package/lib/TreeItem.js.map +1 -1
  10. package/lib/TreeItemLayout.js +0 -1
  11. package/lib/TreeItemLayout.js.map +1 -1
  12. package/lib/TreeItemPersonaLayout.js +0 -1
  13. package/lib/TreeItemPersonaLayout.js.map +1 -1
  14. package/lib/components/FlatTree/FlatTree.js +13 -0
  15. package/lib/components/FlatTree/FlatTree.js.map +1 -0
  16. package/lib/components/FlatTree/FlatTree.types.js +1 -0
  17. package/lib/components/FlatTree/FlatTree.types.js.map +1 -0
  18. package/lib/components/FlatTree/index.js +6 -0
  19. package/lib/components/FlatTree/index.js.map +1 -0
  20. package/lib/components/FlatTree/useFlatControllableCheckedItems.js +63 -0
  21. package/lib/components/FlatTree/useFlatControllableCheckedItems.js.map +1 -0
  22. package/lib/components/FlatTree/useFlatTree.js +3 -0
  23. package/lib/components/FlatTree/useFlatTree.js.map +1 -0
  24. package/lib/components/FlatTree/useFlatTreeNavigation.js +74 -0
  25. package/lib/components/FlatTree/useFlatTreeNavigation.js.map +1 -0
  26. package/lib/components/FlatTree/useFlatTreeStyles.styles.js +20 -0
  27. package/lib/components/FlatTree/useFlatTreeStyles.styles.js.map +1 -0
  28. package/lib/components/FlatTree/useHeadlessFlatTree.js +117 -0
  29. package/lib/components/FlatTree/useHeadlessFlatTree.js.map +1 -0
  30. package/lib/components/Tree/Tree.js +8 -15
  31. package/lib/components/Tree/Tree.js.map +1 -1
  32. package/lib/components/Tree/Tree.types.js +1 -2
  33. package/lib/components/Tree/Tree.types.js.map +1 -1
  34. package/lib/components/Tree/index.js +2 -3
  35. package/lib/components/Tree/index.js.map +1 -1
  36. package/lib/components/Tree/renderTree.js +7 -13
  37. package/lib/components/Tree/renderTree.js.map +1 -1
  38. package/lib/components/Tree/useControllableCheckedItems.js +94 -0
  39. package/lib/components/Tree/useControllableCheckedItems.js.map +1 -0
  40. package/lib/components/Tree/useTree.js +55 -112
  41. package/lib/components/Tree/useTree.js.map +1 -1
  42. package/lib/components/Tree/useTreeContextValues.js +14 -22
  43. package/lib/components/Tree/useTreeContextValues.js.map +1 -1
  44. package/lib/components/Tree/useTreeNavigation.js +52 -0
  45. package/lib/components/Tree/useTreeNavigation.js.map +1 -0
  46. package/lib/components/Tree/{useTreeStyles.js → useTreeStyles.styles.js} +7 -3
  47. package/lib/components/Tree/useTreeStyles.styles.js.map +1 -0
  48. package/lib/components/TreeItem/TreeItem.js +16 -9
  49. package/lib/components/TreeItem/TreeItem.js.map +1 -1
  50. package/lib/components/TreeItem/TreeItem.types.js +1 -2
  51. package/lib/components/TreeItem/TreeItem.types.js.map +1 -1
  52. package/lib/components/TreeItem/index.js +2 -2
  53. package/lib/components/TreeItem/index.js.map +1 -1
  54. package/lib/components/TreeItem/renderTreeItem.js +7 -25
  55. package/lib/components/TreeItem/renderTreeItem.js.map +1 -1
  56. package/lib/components/TreeItem/useTreeItem.js +163 -234
  57. package/lib/components/TreeItem/useTreeItem.js.map +1 -1
  58. package/lib/components/TreeItem/useTreeItemContextValues.js +20 -16
  59. package/lib/components/TreeItem/useTreeItemContextValues.js.map +1 -1
  60. package/lib/components/TreeItem/useTreeItemStyles.styles.js +100 -0
  61. package/lib/components/TreeItem/useTreeItemStyles.styles.js.map +1 -0
  62. package/lib/components/TreeItemChevron.js +24 -0
  63. package/lib/components/TreeItemChevron.js.map +1 -0
  64. package/lib/components/TreeItemLayout/TreeItemLayout.js +8 -8
  65. package/lib/components/TreeItemLayout/TreeItemLayout.js.map +1 -1
  66. package/lib/components/TreeItemLayout/TreeItemLayout.types.js +1 -2
  67. package/lib/components/TreeItemLayout/TreeItemLayout.types.js.map +1 -1
  68. package/lib/components/TreeItemLayout/index.js +1 -2
  69. package/lib/components/TreeItemLayout/index.js.map +1 -1
  70. package/lib/components/TreeItemLayout/renderTreeItemLayout.js +8 -21
  71. package/lib/components/TreeItemLayout/renderTreeItemLayout.js.map +1 -1
  72. package/lib/components/TreeItemLayout/useTreeItemLayout.js +99 -40
  73. package/lib/components/TreeItemLayout/useTreeItemLayout.js.map +1 -1
  74. package/lib/components/TreeItemLayout/useTreeItemLayoutStyles.styles.js +237 -0
  75. package/lib/components/TreeItemLayout/useTreeItemLayoutStyles.styles.js.map +1 -0
  76. package/lib/components/TreeItemPersonaLayout/TreeItemPersonaLayout.js +9 -9
  77. package/lib/components/TreeItemPersonaLayout/TreeItemPersonaLayout.js.map +1 -1
  78. package/lib/components/TreeItemPersonaLayout/TreeItemPersonaLayout.types.js +1 -2
  79. package/lib/components/TreeItemPersonaLayout/TreeItemPersonaLayout.types.js.map +1 -1
  80. package/lib/components/TreeItemPersonaLayout/index.js +1 -2
  81. package/lib/components/TreeItemPersonaLayout/index.js.map +1 -1
  82. package/lib/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js +10 -27
  83. package/lib/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js.map +1 -1
  84. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js +40 -48
  85. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js.map +1 -1
  86. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutContextValues.js +9 -10
  87. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutContextValues.js.map +1 -1
  88. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.styles.js +210 -0
  89. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.styles.js.map +1 -0
  90. package/lib/contexts/index.js +0 -1
  91. package/lib/contexts/index.js.map +1 -1
  92. package/lib/contexts/treeContext.js +13 -15
  93. package/lib/contexts/treeContext.js.map +1 -1
  94. package/lib/contexts/treeItemContext.js +16 -10
  95. package/lib/contexts/treeItemContext.js.map +1 -1
  96. package/lib/hooks/useControllableOpenItems.js +28 -0
  97. package/lib/hooks/useControllableOpenItems.js.map +1 -0
  98. package/lib/hooks/useRootTree.js +139 -0
  99. package/lib/hooks/useRootTree.js.map +1 -0
  100. package/lib/hooks/useRovingTabIndexes.js +30 -49
  101. package/lib/hooks/useRovingTabIndexes.js.map +1 -1
  102. package/lib/hooks/useSubtree.js +39 -0
  103. package/lib/hooks/useSubtree.js.map +1 -0
  104. package/lib/index.js +3 -4
  105. package/lib/index.js.map +1 -1
  106. package/lib/utils/ImmutableMap.js +41 -0
  107. package/lib/utils/ImmutableMap.js.map +1 -0
  108. package/lib/utils/ImmutableSet.js +42 -33
  109. package/lib/utils/ImmutableSet.js.map +1 -1
  110. package/lib/utils/assert.js +5 -5
  111. package/lib/utils/assert.js.map +1 -1
  112. package/lib/utils/createCheckedItems.js +18 -0
  113. package/lib/utils/createCheckedItems.js.map +1 -0
  114. package/lib/utils/createHTMLElementWalker.js +67 -0
  115. package/lib/utils/createHTMLElementWalker.js.map +1 -0
  116. package/lib/utils/createHeadlessTree.js +188 -0
  117. package/lib/utils/createHeadlessTree.js.map +1 -0
  118. package/lib/utils/createOpenItems.js +10 -0
  119. package/lib/utils/createOpenItems.js.map +1 -0
  120. package/lib/utils/flattenTree.js +54 -29
  121. package/lib/utils/flattenTree.js.map +1 -1
  122. package/lib/utils/getTreeItemValueFromElement.js +4 -0
  123. package/lib/utils/getTreeItemValueFromElement.js.map +1 -0
  124. package/lib/utils/nextTypeAheadElement.js +11 -12
  125. package/lib/utils/nextTypeAheadElement.js.map +1 -1
  126. package/lib/utils/normalizeOpenItems.js +6 -5
  127. package/lib/utils/normalizeOpenItems.js.map +1 -1
  128. package/lib/utils/tokens.js +14 -14
  129. package/lib/utils/tokens.js.map +1 -1
  130. package/lib/utils/treeItemFilter.js +2 -3
  131. package/lib/utils/treeItemFilter.js.map +1 -1
  132. package/lib-commonjs/FlatTree.js +6 -0
  133. package/lib-commonjs/FlatTree.js.map +1 -0
  134. package/lib-commonjs/Tree.js +3 -5
  135. package/lib-commonjs/Tree.js.map +1 -1
  136. package/lib-commonjs/TreeItem.js +3 -5
  137. package/lib-commonjs/TreeItem.js.map +1 -1
  138. package/lib-commonjs/TreeItemLayout.js +3 -5
  139. package/lib-commonjs/TreeItemLayout.js.map +1 -1
  140. package/lib-commonjs/TreeItemPersonaLayout.js +3 -5
  141. package/lib-commonjs/TreeItemPersonaLayout.js.map +1 -1
  142. package/lib-commonjs/components/FlatTree/FlatTree.js +20 -0
  143. package/lib-commonjs/components/FlatTree/FlatTree.js.map +1 -0
  144. package/lib-commonjs/components/FlatTree/FlatTree.types.js +4 -0
  145. package/lib-commonjs/components/FlatTree/FlatTree.types.js.map +1 -0
  146. package/lib-commonjs/components/FlatTree/index.js +21 -0
  147. package/lib-commonjs/components/FlatTree/index.js.map +1 -0
  148. package/lib-commonjs/components/FlatTree/useFlatControllableCheckedItems.js +78 -0
  149. package/lib-commonjs/components/FlatTree/useFlatControllableCheckedItems.js.map +1 -0
  150. package/lib-commonjs/components/FlatTree/useFlatTree.js +12 -0
  151. package/lib-commonjs/components/FlatTree/useFlatTree.js.map +1 -0
  152. package/lib-commonjs/components/FlatTree/useFlatTreeNavigation.js +82 -0
  153. package/lib-commonjs/components/FlatTree/useFlatTreeNavigation.js.map +1 -0
  154. package/lib-commonjs/components/FlatTree/useFlatTreeStyles.styles.js +36 -0
  155. package/lib-commonjs/components/FlatTree/useFlatTreeStyles.styles.js.map +1 -0
  156. package/lib-commonjs/components/FlatTree/useHeadlessFlatTree.js +114 -0
  157. package/lib-commonjs/components/FlatTree/useHeadlessFlatTree.js.map +1 -0
  158. package/lib-commonjs/components/Tree/Tree.js +17 -23
  159. package/lib-commonjs/components/Tree/Tree.js.map +1 -1
  160. package/lib-commonjs/components/Tree/Tree.types.js +1 -3
  161. package/lib-commonjs/components/Tree/Tree.types.js.map +1 -1
  162. package/lib-commonjs/components/Tree/index.js +8 -10
  163. package/lib-commonjs/components/Tree/index.js.map +1 -1
  164. package/lib-commonjs/components/Tree/renderTree.js +14 -19
  165. package/lib-commonjs/components/Tree/renderTree.js.map +1 -1
  166. package/lib-commonjs/components/Tree/useControllableCheckedItems.js +103 -0
  167. package/lib-commonjs/components/Tree/useControllableCheckedItems.js.map +1 -0
  168. package/lib-commonjs/components/Tree/useTree.js +61 -116
  169. package/lib-commonjs/components/Tree/useTree.js.map +1 -1
  170. package/lib-commonjs/components/Tree/useTreeContextValues.js +19 -26
  171. package/lib-commonjs/components/Tree/useTreeContextValues.js.map +1 -1
  172. package/lib-commonjs/components/Tree/useTreeNavigation.js +60 -0
  173. package/lib-commonjs/components/Tree/useTreeNavigation.js.map +1 -0
  174. package/lib-commonjs/components/Tree/useTreeStyles.styles.js +41 -0
  175. package/lib-commonjs/components/Tree/useTreeStyles.styles.js.map +1 -0
  176. package/lib-commonjs/components/TreeItem/TreeItem.js +17 -18
  177. package/lib-commonjs/components/TreeItem/TreeItem.js.map +1 -1
  178. package/lib-commonjs/components/TreeItem/TreeItem.types.js +3 -4
  179. package/lib-commonjs/components/TreeItem/TreeItem.types.js.map +1 -1
  180. package/lib-commonjs/components/TreeItem/index.js +8 -9
  181. package/lib-commonjs/components/TreeItem/index.js.map +1 -1
  182. package/lib-commonjs/components/TreeItem/renderTreeItem.js +14 -33
  183. package/lib-commonjs/components/TreeItem/renderTreeItem.js.map +1 -1
  184. package/lib-commonjs/components/TreeItem/useTreeItem.js +172 -250
  185. package/lib-commonjs/components/TreeItem/useTreeItem.js.map +1 -1
  186. package/lib-commonjs/components/TreeItem/useTreeItemContextValues.js +25 -20
  187. package/lib-commonjs/components/TreeItem/useTreeItemContextValues.js.map +1 -1
  188. package/lib-commonjs/components/TreeItem/useTreeItemStyles.styles.js +202 -0
  189. package/lib-commonjs/components/TreeItem/useTreeItemStyles.styles.js.map +1 -0
  190. package/lib-commonjs/components/TreeItemChevron.js +33 -0
  191. package/lib-commonjs/components/TreeItemChevron.js.map +1 -0
  192. package/lib-commonjs/components/TreeItemLayout/TreeItemLayout.js +15 -16
  193. package/lib-commonjs/components/TreeItemLayout/TreeItemLayout.js.map +1 -1
  194. package/lib-commonjs/components/TreeItemLayout/TreeItemLayout.types.js +1 -3
  195. package/lib-commonjs/components/TreeItemLayout/TreeItemLayout.types.js.map +1 -1
  196. package/lib-commonjs/components/TreeItemLayout/index.js +7 -9
  197. package/lib-commonjs/components/TreeItemLayout/index.js.map +1 -1
  198. package/lib-commonjs/components/TreeItemLayout/renderTreeItemLayout.js +14 -28
  199. package/lib-commonjs/components/TreeItemLayout/renderTreeItemLayout.js.map +1 -1
  200. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayout.js +105 -52
  201. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayout.js.map +1 -1
  202. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayoutStyles.styles.js +392 -0
  203. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayoutStyles.styles.js.map +1 -0
  204. package/lib-commonjs/components/TreeItemPersonaLayout/TreeItemPersonaLayout.js +17 -18
  205. package/lib-commonjs/components/TreeItemPersonaLayout/TreeItemPersonaLayout.js.map +1 -1
  206. package/lib-commonjs/components/TreeItemPersonaLayout/TreeItemPersonaLayout.types.js +1 -3
  207. package/lib-commonjs/components/TreeItemPersonaLayout/TreeItemPersonaLayout.types.js.map +1 -1
  208. package/lib-commonjs/components/TreeItemPersonaLayout/index.js +7 -9
  209. package/lib-commonjs/components/TreeItemPersonaLayout/index.js.map +1 -1
  210. package/lib-commonjs/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js +17 -35
  211. package/lib-commonjs/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js.map +1 -1
  212. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js +47 -61
  213. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js.map +1 -1
  214. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutContextValues.js +16 -15
  215. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutContextValues.js.map +1 -1
  216. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.styles.js +379 -0
  217. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.styles.js.map +1 -0
  218. package/lib-commonjs/contexts/index.js +4 -6
  219. package/lib-commonjs/contexts/index.js.map +1 -1
  220. package/lib-commonjs/contexts/treeContext.js +26 -18
  221. package/lib-commonjs/contexts/treeContext.js.map +1 -1
  222. package/lib-commonjs/contexts/treeItemContext.js +30 -13
  223. package/lib-commonjs/contexts/treeItemContext.js.map +1 -1
  224. package/lib-commonjs/hooks/useControllableOpenItems.js +39 -0
  225. package/lib-commonjs/hooks/useControllableOpenItems.js.map +1 -0
  226. package/lib-commonjs/hooks/useRootTree.js +143 -0
  227. package/lib-commonjs/hooks/useRootTree.js.map +1 -0
  228. package/lib-commonjs/hooks/useRovingTabIndexes.js +36 -55
  229. package/lib-commonjs/hooks/useRovingTabIndexes.js.map +1 -1
  230. package/lib-commonjs/hooks/useSubtree.js +43 -0
  231. package/lib-commonjs/hooks/useSubtree.js.map +1 -0
  232. package/lib-commonjs/index.js +53 -181
  233. package/lib-commonjs/index.js.map +1 -1
  234. package/lib-commonjs/utils/ImmutableMap.js +49 -0
  235. package/lib-commonjs/utils/ImmutableMap.js.map +1 -0
  236. package/lib-commonjs/utils/ImmutableSet.js +47 -38
  237. package/lib-commonjs/utils/ImmutableSet.js.map +1 -1
  238. package/lib-commonjs/utils/assert.js +11 -9
  239. package/lib-commonjs/utils/assert.js.map +1 -1
  240. package/lib-commonjs/utils/createCheckedItems.js +26 -0
  241. package/lib-commonjs/utils/createCheckedItems.js.map +1 -0
  242. package/lib-commonjs/utils/createHTMLElementWalker.js +75 -0
  243. package/lib-commonjs/utils/createHTMLElementWalker.js.map +1 -0
  244. package/lib-commonjs/utils/createHeadlessTree.js +202 -0
  245. package/lib-commonjs/utils/createHeadlessTree.js.map +1 -0
  246. package/lib-commonjs/utils/createOpenItems.js +18 -0
  247. package/lib-commonjs/utils/createOpenItems.js.map +1 -0
  248. package/lib-commonjs/utils/flattenTree.js +21 -34
  249. package/lib-commonjs/utils/flattenTree.js.map +1 -1
  250. package/lib-commonjs/utils/getTreeItemValueFromElement.js +18 -0
  251. package/lib-commonjs/utils/getTreeItemValueFromElement.js.map +1 -0
  252. package/lib-commonjs/utils/nextTypeAheadElement.js +16 -16
  253. package/lib-commonjs/utils/nextTypeAheadElement.js.map +1 -1
  254. package/lib-commonjs/utils/normalizeOpenItems.js +11 -9
  255. package/lib-commonjs/utils/normalizeOpenItems.js.map +1 -1
  256. package/lib-commonjs/utils/tokens.js +29 -20
  257. package/lib-commonjs/utils/tokens.js.map +1 -1
  258. package/lib-commonjs/utils/treeItemFilter.js +7 -7
  259. package/lib-commonjs/utils/treeItemFilter.js.map +1 -1
  260. package/package.json +26 -17
  261. package/lib/components/Tree/useTreeStyles.js.map +0 -1
  262. package/lib/components/TreeItem/useTreeItemStyles.js +0 -203
  263. package/lib/components/TreeItem/useTreeItemStyles.js.map +0 -1
  264. package/lib/components/TreeItemLayout/useTreeItemLayoutStyles.js +0 -98
  265. package/lib/components/TreeItemLayout/useTreeItemLayoutStyles.js.map +0 -1
  266. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.js +0 -115
  267. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.js.map +0 -1
  268. package/lib/hooks/index.js +0 -4
  269. package/lib/hooks/index.js.map +0 -1
  270. package/lib/hooks/useFlatTree.js +0 -49
  271. package/lib/hooks/useFlatTree.js.map +0 -1
  272. package/lib/hooks/useFlatTreeNavigation.js +0 -74
  273. package/lib/hooks/useFlatTreeNavigation.js.map +0 -1
  274. package/lib/hooks/useHTMLElementWalker.js +0 -80
  275. package/lib/hooks/useHTMLElementWalker.js.map +0 -1
  276. package/lib/hooks/useNestedTreeNavigation.js +0 -59
  277. package/lib/hooks/useNestedTreeNavigation.js.map +0 -1
  278. package/lib/hooks/useOpenItemsState.js +0 -22
  279. package/lib/hooks/useOpenItemsState.js.map +0 -1
  280. package/lib/utils/createUnfilteredFlatTree.js +0 -77
  281. package/lib/utils/createUnfilteredFlatTree.js.map +0 -1
  282. package/lib/utils/createVisibleFlatTree.js +0 -80
  283. package/lib/utils/createVisibleFlatTree.js.map +0 -1
  284. package/lib-commonjs/components/Tree/useTreeStyles.js +0 -27
  285. package/lib-commonjs/components/Tree/useTreeStyles.js.map +0 -1
  286. package/lib-commonjs/components/TreeItem/useTreeItemStyles.js +0 -210
  287. package/lib-commonjs/components/TreeItem/useTreeItemStyles.js.map +0 -1
  288. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayoutStyles.js +0 -105
  289. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayoutStyles.js.map +0 -1
  290. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.js +0 -122
  291. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.js.map +0 -1
  292. package/lib-commonjs/hooks/index.js +0 -10
  293. package/lib-commonjs/hooks/index.js.map +0 -1
  294. package/lib-commonjs/hooks/useFlatTree.js +0 -56
  295. package/lib-commonjs/hooks/useFlatTree.js.map +0 -1
  296. package/lib-commonjs/hooks/useFlatTreeNavigation.js +0 -81
  297. package/lib-commonjs/hooks/useFlatTreeNavigation.js.map +0 -1
  298. package/lib-commonjs/hooks/useHTMLElementWalker.js +0 -88
  299. package/lib-commonjs/hooks/useHTMLElementWalker.js.map +0 -1
  300. package/lib-commonjs/hooks/useNestedTreeNavigation.js +0 -66
  301. package/lib-commonjs/hooks/useNestedTreeNavigation.js.map +0 -1
  302. package/lib-commonjs/hooks/useOpenItemsState.js +0 -29
  303. package/lib-commonjs/hooks/useOpenItemsState.js.map +0 -1
  304. package/lib-commonjs/utils/createUnfilteredFlatTree.js +0 -84
  305. package/lib-commonjs/utils/createUnfilteredFlatTree.js.map +0 -1
  306. package/lib-commonjs/utils/createVisibleFlatTree.js +0 -87
  307. package/lib-commonjs/utils/createVisibleFlatTree.js.map +0 -1
@@ -1,22 +1,21 @@
1
1
  "use strict";
2
-
3
2
  Object.defineProperty(exports, "__esModule", {
4
- value: true
3
+ value: true
5
4
  });
6
- exports.TreeItem = void 0;
7
- const React = /*#__PURE__*/require("react");
8
- const useTreeItem_1 = /*#__PURE__*/require("./useTreeItem");
9
- const renderTreeItem_1 = /*#__PURE__*/require("./renderTreeItem");
10
- const useTreeItemStyles_1 = /*#__PURE__*/require("./useTreeItemStyles");
11
- const useTreeItemContextValues_1 = /*#__PURE__*/require("./useTreeItemContextValues");
12
- /**
13
- * TreeItem component - TODO: add more docs
14
- */
15
- exports.TreeItem = /*#__PURE__*/React.forwardRef((props, ref) => {
16
- const state = useTreeItem_1.useTreeItem_unstable(props, ref);
17
- useTreeItemStyles_1.useTreeItemStyles_unstable(state);
18
- const contextValues = useTreeItemContextValues_1.useTreeItemContextValues_unstable(state);
19
- return renderTreeItem_1.renderTreeItem_unstable(state, contextValues);
5
+ Object.defineProperty(exports, "TreeItem", {
6
+ enumerable: true,
7
+ get: ()=>TreeItem
20
8
  });
21
- exports.TreeItem.displayName = 'TreeItem';
22
- //# sourceMappingURL=TreeItem.js.map
9
+ const _interopRequireWildcard = require("@swc/helpers/lib/_interop_require_wildcard.js").default;
10
+ const _react = /*#__PURE__*/ _interopRequireWildcard(require("react"));
11
+ const _useTreeItem = require("./useTreeItem");
12
+ const _renderTreeItem = require("./renderTreeItem");
13
+ const _useTreeItemStylesStyles = require("./useTreeItemStyles.styles");
14
+ const _useTreeItemContextValues = require("./useTreeItemContextValues");
15
+ const TreeItem = /*#__PURE__*/ _react.forwardRef((props, ref)=>{
16
+ const state = (0, _useTreeItem.useTreeItem_unstable)(props, ref);
17
+ (0, _useTreeItemStylesStyles.useTreeItemStyles_unstable)(state);
18
+ const contextValues = (0, _useTreeItemContextValues.useTreeItemContextValues_unstable)(state);
19
+ return (0, _renderTreeItem.renderTreeItem_unstable)(state, contextValues);
20
+ });
21
+ TreeItem.displayName = 'TreeItem';
@@ -1 +1 @@
1
- {"version":3,"names":["React","require","useTreeItem_1","renderTreeItem_1","useTreeItemStyles_1","useTreeItemContextValues_1","exports","TreeItem","forwardRef","props","ref","state","useTreeItem_unstable","useTreeItemStyles_unstable","contextValues","useTreeItemContextValues_unstable","renderTreeItem_unstable","displayName"],"sources":["../src/packages/react-components/react-tree/src/components/TreeItem/TreeItem.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useTreeItem_unstable } from './useTreeItem';\nimport { renderTreeItem_unstable } from './renderTreeItem';\nimport { useTreeItemStyles_unstable } from './useTreeItemStyles';\nimport type { TreeItemProps } from './TreeItem.types';\nimport type { ForwardRefComponent } from '@fluentui/react-utilities';\nimport { useTreeItemContextValues_unstable } from './useTreeItemContextValues';\n\n/**\n * TreeItem component - TODO: add more docs\n */\nexport const TreeItem: ForwardRefComponent<TreeItemProps> = React.forwardRef((props, ref) => {\n const state = useTreeItem_unstable(props, ref);\n\n useTreeItemStyles_unstable(state);\n const contextValues = useTreeItemContextValues_unstable(state);\n return renderTreeItem_unstable(state, contextValues);\n});\n\nTreeItem.displayName = 'TreeItem';\n"],"mappings":";;;;;;AAAA,MAAAA,KAAA,gBAAAC,OAAA;AACA,MAAAC,aAAA,gBAAAD,OAAA;AACA,MAAAE,gBAAA,gBAAAF,OAAA;AACA,MAAAG,mBAAA,gBAAAH,OAAA;AAGA,MAAAI,0BAAA,gBAAAJ,OAAA;AAEA;;;AAGaK,OAAA,CAAAC,QAAQ,gBAAuCP,KAAK,CAACQ,UAAU,CAAC,CAACC,KAAK,EAAEC,GAAG,KAAI;EAC1F,MAAMC,KAAK,GAAGT,aAAA,CAAAU,oBAAoB,CAACH,KAAK,EAAEC,GAAG,CAAC;EAE9CN,mBAAA,CAAAS,0BAA0B,CAACF,KAAK,CAAC;EACjC,MAAMG,aAAa,GAAGT,0BAAA,CAAAU,iCAAiC,CAACJ,KAAK,CAAC;EAC9D,OAAOR,gBAAA,CAAAa,uBAAuB,CAACL,KAAK,EAAEG,aAAa,CAAC;AACtD,CAAC,CAAC;AAEFR,OAAA,CAAAC,QAAQ,CAACU,WAAW,GAAG,UAAU"}
1
+ {"version":3,"sources":["TreeItem.js"],"sourcesContent":["import * as React from 'react';\nimport { useTreeItem_unstable } from './useTreeItem';\nimport { renderTreeItem_unstable } from './renderTreeItem';\nimport { useTreeItemStyles_unstable } from './useTreeItemStyles.styles';\nimport { useTreeItemContextValues_unstable } from './useTreeItemContextValues';\n/**\n * The `TreeItem` component represents a single item in a tree.\n * It expects a certain order of children to work properly: the first child should be the node itself,\n * and the second child should be a nested subtree in the form of another Tree component or a standalone TreeItem.\n * This order follows the same order as document traversal for the TreeWalker API in JavaScript:\n * https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.\n * The content and layout of a TreeItem can be defined using the TreeItemLayout or TreeItemPersonaLayout component,\n * which should be used as a direct child of TreeItem.\n *\n * When a TreeItem has nested child subtree, an expand/collapse control is displayed,\n * allowing the user to show or hide the children.\n */ export const TreeItem = /*#__PURE__*/ React.forwardRef((props, ref)=>{\n const state = useTreeItem_unstable(props, ref);\n useTreeItemStyles_unstable(state);\n const contextValues = useTreeItemContextValues_unstable(state);\n return renderTreeItem_unstable(state, contextValues);\n});\nTreeItem.displayName = 'TreeItem';\n"],"names":["TreeItem","React","forwardRef","props","ref","state","useTreeItem_unstable","useTreeItemStyles_unstable","contextValues","useTreeItemContextValues_unstable","renderTreeItem_unstable","displayName"],"mappings":";;;;+BAgBiBA;;aAAAA;;;6DAhBM;6BACc;gCACG;yCACG;0CACO;AAYvC,MAAMA,WAAW,WAAW,GAAGC,OAAMC,UAAU,CAAC,CAACC,OAAOC,MAAM;IACrE,MAAMC,QAAQC,IAAAA,iCAAoB,EAACH,OAAOC;IAC1CG,IAAAA,mDAA0B,EAACF;IAC3B,MAAMG,gBAAgBC,IAAAA,2DAAiC,EAACJ;IACxD,OAAOK,IAAAA,uCAAuB,EAACL,OAAOG;AAC1C;AACAR,SAASW,WAAW,GAAG"}
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
-
3
2
  Object.defineProperty(exports, "__esModule", {
4
- value: true
3
+ value: true
5
4
  });
6
- const tokens_1 = /*#__PURE__*/require("../../utils/tokens");
7
- //# sourceMappingURL=TreeItem.types.js.map
5
+ const _interopRequireWildcard = require("@swc/helpers/lib/_interop_require_wildcard.js").default;
6
+ const _react = /*#__PURE__*/ _interopRequireWildcard(require("react"));
@@ -1 +1 @@
1
- {"version":3,"names":["tokens_1","require"],"sources":["../src/packages/react-components/react-tree/src/components/TreeItem/TreeItem.types.ts"],"sourcesContent":["import type { ComponentProps, ComponentState, ExtractSlotProps, Slot } from '@fluentui/react-utilities';\nimport type { ButtonContextValue } from '@fluentui/react-button';\nimport type { TreeItemContextValue } from '../../contexts';\nimport { treeItemLevelToken } from '../../utils/tokens';\nimport * as React from 'react';\n\nexport type TreeItemCSSProperties = React.CSSProperties & { [treeItemLevelToken]?: string | number };\n\nexport type TreeItemSlots = {\n root: Slot<ExtractSlotProps<Slot<'div'> & { style?: TreeItemCSSProperties }>>;\n content: NonNullable<Slot<'div'>>;\n subtree?: Slot<'span'>;\n /**\n * Expand icon slot,\n * by default renders a chevron icon to indicate opening and closing\n */\n expandIcon?: Slot<'span'>;\n /**\n * Actions slot that renders on the end of tree item\n * when the item is hovered/focused\n */\n actions?: Slot<'span'>;\n};\n\nexport type TreeItemContextValues = {\n treeItem: TreeItemContextValue;\n button: ButtonContextValue;\n};\n\n/**\n * TreeItem Props\n */\nexport type TreeItemProps = ComponentProps<Partial<TreeItemSlots>> & {\n /**\n * If a TreeItem is a leaf, it'll not present the `expandIcon` slot by default.\n * This attribute is used to force the decision if a TreeItem is a leaf or not. By not providing this property\n * this will be inferred by the presence of a subtree as part of the TreeItem children.\n */\n leaf?: boolean;\n};\n\n/**\n * State used in rendering TreeItem\n */\nexport type TreeItemState = ComponentState<TreeItemSlots> & {\n open: boolean;\n isLeaf: boolean;\n level: number;\n /**\n * By design, a button included on the actions slot should be small\n */\n buttonSize: 'small';\n isActionsVisible: boolean;\n};\n"],"mappings":";;;;;AAGA,MAAAA,QAAA,gBAAAC,OAAA"}
1
+ {"version":3,"sources":["TreeItem.types.js"],"sourcesContent":["import * as React from 'react';\n"],"names":[],"mappings":";;;;;6DAAuB"}
@@ -1,12 +1,11 @@
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("./TreeItem"), exports);
8
- tslib_1.__exportStar(require("./TreeItem.types"), exports);
9
- tslib_1.__exportStar(require("./renderTreeItem"), exports);
10
- tslib_1.__exportStar(require("./useTreeItem"), exports);
11
- tslib_1.__exportStar(require("./useTreeItemStyles"), exports);
12
- //# sourceMappingURL=index.js.map
5
+ const _exportStar = require("@swc/helpers/lib/_export_star.js").default;
6
+ _exportStar(require("./TreeItem"), exports);
7
+ _exportStar(require("./TreeItem.types"), exports);
8
+ _exportStar(require("./renderTreeItem"), exports);
9
+ _exportStar(require("./useTreeItem"), exports);
10
+ _exportStar(require("./useTreeItemStyles.styles"), exports);
11
+ _exportStar(require("./useTreeItemContextValues"), exports);
@@ -1 +1 @@
1
- {"version":3,"names":["tslib_1","__exportStar","require","exports"],"sources":["../src/packages/react-components/react-tree/src/components/TreeItem/index.ts"],"sourcesContent":["export * from './TreeItem';\nexport * from './TreeItem.types';\nexport * from './renderTreeItem';\nexport * from './useTreeItem';\nexport * from './useTreeItemStyles';\n"],"mappings":";;;;;;AAAAA,OAAA,CAAAC,YAAA,CAAAC,OAAA,gBAAAC,OAAA;AACAH,OAAA,CAAAC,YAAA,CAAAC,OAAA,sBAAAC,OAAA;AACAH,OAAA,CAAAC,YAAA,CAAAC,OAAA,sBAAAC,OAAA;AACAH,OAAA,CAAAC,YAAA,CAAAC,OAAA,mBAAAC,OAAA;AACAH,OAAA,CAAAC,YAAA,CAAAC,OAAA,yBAAAC,OAAA"}
1
+ {"version":3,"sources":["index.js"],"sourcesContent":["export * from './TreeItem';\nexport * from './TreeItem.types';\nexport * from './renderTreeItem';\nexport * from './useTreeItem';\nexport * from './useTreeItemStyles.styles';\nexport * from './useTreeItemContextValues';\n"],"names":[],"mappings":";;;;;oBAAc;oBACA;oBACA;oBACA;oBACA;oBACA"}
@@ -1,36 +1,17 @@
1
- "use strict";
2
-
1
+ /** @jsxRuntime classic */ /** @jsx createElement */ "use strict";
3
2
  Object.defineProperty(exports, "__esModule", {
4
- value: true
3
+ value: true
5
4
  });
6
- exports.renderTreeItem_unstable = void 0;
7
- const React = /*#__PURE__*/require("react");
8
- const react_utilities_1 = /*#__PURE__*/require("@fluentui/react-utilities");
9
- const contexts_1 = /*#__PURE__*/require("../../contexts");
10
- const react_button_1 = /*#__PURE__*/require("@fluentui/react-button");
11
- /**
12
- * Render the final JSX of TreeItem
13
- */
14
- const renderTreeItem_unstable = (state, contextValues) => {
15
- const {
16
- slots,
17
- slotProps
18
- } = react_utilities_1.getSlots(state);
19
- return React.createElement(contexts_1.TreeItemProvider, {
20
- value: contextValues.treeItem
21
- }, React.createElement(slots.root, {
22
- ...slotProps.root
23
- }, React.createElement(slots.content, {
24
- ...slotProps.content
25
- }, slots.expandIcon && React.createElement(slots.expandIcon, {
26
- ...slotProps.expandIcon
27
- }), slotProps.content.children, React.createElement(react_button_1.ButtonContextProvider, {
28
- value: contextValues.button
29
- }, slots.actions && React.createElement(slots.actions, {
30
- ...slotProps.actions
31
- }))), state.open && slots.subtree && React.createElement(slots.subtree, {
32
- ...slotProps.subtree
33
- })));
5
+ Object.defineProperty(exports, "renderTreeItem_unstable", {
6
+ enumerable: true,
7
+ get: ()=>renderTreeItem_unstable
8
+ });
9
+ const _reactJsxRuntime = require("@fluentui/react-jsx-runtime");
10
+ const _reactUtilities = require("@fluentui/react-utilities");
11
+ const _contexts = require("../../contexts");
12
+ const renderTreeItem_unstable = (state, contextValues)=>{
13
+ const { slots , slotProps } = (0, _reactUtilities.getSlotsNext)(state);
14
+ return /*#__PURE__*/ (0, _reactJsxRuntime.createElement)(slots.root, slotProps.root, /*#__PURE__*/ (0, _reactJsxRuntime.createElement)(_contexts.TreeItemProvider, {
15
+ value: contextValues.treeItem
16
+ }, slotProps.root.children));
34
17
  };
35
- exports.renderTreeItem_unstable = renderTreeItem_unstable;
36
- //# sourceMappingURL=renderTreeItem.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","require","react_utilities_1","contexts_1","react_button_1","renderTreeItem_unstable","state","contextValues","slots","slotProps","getSlots","createElement","TreeItemProvider","value","treeItem","root","content","expandIcon","children","ButtonContextProvider","button","actions","open","subtree","exports"],"sources":["../src/packages/react-components/react-tree/src/components/TreeItem/renderTreeItem.tsx"],"sourcesContent":["import * as React from 'react';\nimport { getSlots } from '@fluentui/react-utilities';\nimport type { TreeItemState, TreeItemSlots, TreeItemContextValues } from './TreeItem.types';\nimport { TreeItemProvider } from '../../contexts';\nimport { ButtonContextProvider } from '@fluentui/react-button';\n\n/**\n * Render the final JSX of TreeItem\n */\nexport const renderTreeItem_unstable = (state: TreeItemState, contextValues: TreeItemContextValues) => {\n const { slots, slotProps } = getSlots<TreeItemSlots>(state);\n\n return (\n <TreeItemProvider value={contextValues.treeItem}>\n <slots.root {...slotProps.root}>\n <slots.content {...slotProps.content}>\n {slots.expandIcon && <slots.expandIcon {...slotProps.expandIcon} />}\n {slotProps.content.children}\n <ButtonContextProvider value={contextValues.button}>\n {slots.actions && <slots.actions {...slotProps.actions} />}\n </ButtonContextProvider>\n </slots.content>\n {state.open && slots.subtree && <slots.subtree {...slotProps.subtree} />}\n </slots.root>\n </TreeItemProvider>\n );\n};\n"],"mappings":";;;;;;AAAA,MAAAA,KAAA,gBAAAC,OAAA;AACA,MAAAC,iBAAA,gBAAAD,OAAA;AAEA,MAAAE,UAAA,gBAAAF,OAAA;AACA,MAAAG,cAAA,gBAAAH,OAAA;AAEA;;;AAGO,MAAMI,uBAAuB,GAAGA,CAACC,KAAoB,EAAEC,aAAoC,KAAI;EACpG,MAAM;IAAEC,KAAK;IAAEC;EAAS,CAAE,GAAGP,iBAAA,CAAAQ,QAAQ,CAAgBJ,KAAK,CAAC;EAE3D,OACEN,KAAA,CAAAW,aAAA,CAACR,UAAA,CAAAS,gBAAgB;IAACC,KAAK,EAAEN,aAAa,CAACO;EAAQ,GAC7Cd,KAAA,CAAAW,aAAA,CAACH,KAAK,CAACO,IAAI;IAAA,GAAKN,SAAS,CAACM;EAAI,GAC5Bf,KAAA,CAAAW,aAAA,CAACH,KAAK,CAACQ,OAAO;IAAA,GAAKP,SAAS,CAACO;EAAO,GACjCR,KAAK,CAACS,UAAU,IAAIjB,KAAA,CAAAW,aAAA,CAACH,KAAK,CAACS,UAAU;IAAA,GAAKR,SAAS,CAACQ;EAAU,EAAI,EAClER,SAAS,CAACO,OAAO,CAACE,QAAQ,EAC3BlB,KAAA,CAAAW,aAAA,CAACP,cAAA,CAAAe,qBAAqB;IAACN,KAAK,EAAEN,aAAa,CAACa;EAAM,GAC/CZ,KAAK,CAACa,OAAO,IAAIrB,KAAA,CAAAW,aAAA,CAACH,KAAK,CAACa,OAAO;IAAA,GAAKZ,SAAS,CAACY;EAAO,EAAI,CACpC,CACV,EACff,KAAK,CAACgB,IAAI,IAAId,KAAK,CAACe,OAAO,IAAIvB,KAAA,CAAAW,aAAA,CAACH,KAAK,CAACe,OAAO;IAAA,GAAKd,SAAS,CAACc;EAAO,EAAI,CAC7D,CACI;AAEvB,CAAC;AAjBYC,OAAA,CAAAnB,uBAAuB,GAAAA,uBAAA"}
1
+ {"version":3,"sources":["renderTreeItem.js"],"sourcesContent":["/** @jsxRuntime classic */ /** @jsx createElement */ import { createElement } from '@fluentui/react-jsx-runtime';\nimport { getSlotsNext } from '@fluentui/react-utilities';\nimport { TreeItemProvider } from '../../contexts';\n/**\n * Render the final JSX of TreeItem\n */ export const renderTreeItem_unstable = (state, contextValues)=>{\n const { slots , slotProps } = getSlotsNext(state);\n return /*#__PURE__*/ createElement(slots.root, slotProps.root, /*#__PURE__*/ createElement(TreeItemProvider, {\n value: contextValues.treeItem\n }, slotProps.root.children));\n};\n"],"names":["renderTreeItem_unstable","state","contextValues","slots","slotProps","getSlotsNext","createElement","root","TreeItemProvider","value","treeItem","children"],"mappings":"AAAA,wBAAwB,GAAG,uBAAuB;;;;+BAKjCA;;aAAAA;;iCALkE;gCACtD;0BACI;AAGtB,MAAMA,0BAA0B,CAACC,OAAOC,gBAAgB;IAC/D,MAAM,EAAEC,MAAK,EAAGC,UAAS,EAAG,GAAGC,IAAAA,4BAAY,EAACJ;IAC5C,OAAO,WAAW,GAAGK,IAAAA,8BAAa,EAACH,MAAMI,IAAI,EAAEH,UAAUG,IAAI,EAAE,WAAW,GAAGD,IAAAA,8BAAa,EAACE,0BAAgB,EAAE;QACzGC,OAAOP,cAAcQ,QAAQ;IACjC,GAAGN,UAAUG,IAAI,CAACI,QAAQ;AAC9B"}
@@ -1,257 +1,179 @@
1
1
  "use strict";
2
-
3
2
  Object.defineProperty(exports, "__esModule", {
4
- value: true
3
+ value: true
5
4
  });
6
- exports.useTreeItem_unstable = void 0;
7
- const React = /*#__PURE__*/require("react");
8
- const react_utilities_1 = /*#__PURE__*/require("@fluentui/react-utilities");
9
- const react_icons_1 = /*#__PURE__*/require("@fluentui/react-icons");
10
- const react_shared_contexts_1 = /*#__PURE__*/require("@fluentui/react-shared-contexts");
11
- const react_utilities_2 = /*#__PURE__*/require("@fluentui/react-utilities");
12
- const useTreeItemStyles_1 = /*#__PURE__*/require("./useTreeItemStyles");
13
- const keyboard_keys_1 = /*#__PURE__*/require("@fluentui/keyboard-keys");
14
- const react_utilities_3 = /*#__PURE__*/require("@fluentui/react-utilities");
15
- const react_portal_1 = /*#__PURE__*/require("@fluentui/react-portal");
16
- const index_1 = /*#__PURE__*/require("../../contexts/index");
17
- const tokens_1 = /*#__PURE__*/require("../../utils/tokens");
18
- /**
19
- * Create the state required to render TreeItem.
20
- *
21
- * The returned state can be modified with hooks such as useTreeItemStyles_unstable,
22
- * before being passed to renderTreeItem_unstable.
23
- *
24
- * @param props - props from this instance of TreeItem
25
- * @param ref - reference to root HTMLElement of TreeItem
26
- */
27
- const useTreeItem_unstable = (props, ref) => {
28
- const [children, subtreeChildren] = React.Children.toArray(props.children);
29
- const contextLevel = index_1.useTreeContext_unstable(ctx => ctx.level);
30
- const {
31
- content,
32
- subtree,
33
- expandIcon,
34
- leaf: isLeaf = subtreeChildren === undefined,
35
- actions,
36
- as = 'div',
37
- onClick,
38
- onKeyDown,
39
- ['aria-level']: level = contextLevel,
40
- ...rest
41
- } = props;
42
- const requestOpenChange = index_1.useTreeContext_unstable(ctx => ctx.requestOpenChange);
43
- const requestNavigation = index_1.useTreeContext_unstable(ctx => ctx.requestNavigation);
44
- const id = react_utilities_1.useId('fui-TreeItem-', props.id);
45
- const isBranch = !isLeaf;
46
- const open = index_1.useTreeContext_unstable(ctx => isBranch && ctx.openItems.has(id));
47
- const {
48
- dir,
49
- targetDocument
50
- } = react_shared_contexts_1.useFluent_unstable();
51
- const expandIconRotation = open ? 90 : dir !== 'rtl' ? 0 : 180;
52
- const actionsRef = React.useRef(null);
53
- const expandIconRef = React.useRef(null);
54
- const subtreeRef = React.useRef(null);
55
- const handleArrowRight = event => {
56
- if (!open && isBranch) {
57
- return requestOpenChange({
58
- event,
59
- open: true,
60
- type: tokens_1.treeDataTypes.arrowRight,
61
- target: event.currentTarget
62
- });
63
- }
64
- if (open && isBranch) {
65
- return requestNavigation({
66
- event,
67
- type: tokens_1.treeDataTypes.arrowRight,
68
- target: event.currentTarget
69
- });
70
- }
71
- };
72
- const handleArrowLeft = event => {
73
- if (open && isBranch) {
74
- return requestOpenChange({
75
- event,
76
- open: false,
77
- type: tokens_1.treeDataTypes.arrowLeft,
78
- target: event.currentTarget
79
- });
80
- }
81
- if (!open && level > 1) {
82
- return requestNavigation({
83
- event,
84
- target: event.currentTarget,
85
- type: tokens_1.treeDataTypes.arrowLeft
86
- });
87
- }
88
- };
89
- const handleEnter = event => {
90
- requestOpenChange({
91
- event,
92
- open: isLeaf ? open : !open,
93
- type: tokens_1.treeDataTypes.enter,
94
- target: event.currentTarget
5
+ Object.defineProperty(exports, "useTreeItem_unstable", {
6
+ enumerable: true,
7
+ get: ()=>useTreeItem_unstable
8
+ });
9
+ const _interopRequireWildcard = require("@swc/helpers/lib/_interop_require_wildcard.js").default;
10
+ const _react = /*#__PURE__*/ _interopRequireWildcard(require("react"));
11
+ const _reactUtilities = require("@fluentui/react-utilities");
12
+ const _reactPortal = require("@fluentui/react-portal");
13
+ const _index = require("../../contexts/index");
14
+ const _getTreeItemValueFromElement = require("../../utils/getTreeItemValueFromElement");
15
+ const _keyboardKeys = require("@fluentui/keyboard-keys");
16
+ const _tokens = require("../../utils/tokens");
17
+ function useTreeItem_unstable(props, ref) {
18
+ var _props_value;
19
+ const contextLevel = (0, _index.useTreeContext_unstable)((ctx)=>ctx.level);
20
+ // note, if the value is not externally provided,
21
+ // then selection and expansion will not work properly
22
+ const value = (0, _reactUtilities.useId)('fuiTreeItemValue-', (_props_value = props.value) === null || _props_value === void 0 ? void 0 : _props_value.toString());
23
+ const { onClick , onKeyDown , as ='div' , itemType ='leaf' , 'aria-level': level = contextLevel , ...rest } = props;
24
+ const requestTreeResponse = (0, _index.useTreeContext_unstable)((ctx)=>ctx.requestTreeResponse);
25
+ const [isActionsVisible, setActionsVisible] = _react.useState(false);
26
+ const [isAsideVisible, setAsideVisible] = _react.useState(true);
27
+ const handleActionsRef = (actionsElement)=>{
28
+ setAsideVisible(actionsElement === null);
29
+ };
30
+ const actionsRef = _react.useRef(null);
31
+ const expandIconRef = _react.useRef(null);
32
+ const layoutRef = _react.useRef(null);
33
+ const subtreeRef = _react.useRef(null);
34
+ const selectionRef = _react.useRef(null);
35
+ const open = (0, _index.useTreeContext_unstable)((ctx)=>ctx.openItems.has(value));
36
+ const selectionMode = (0, _index.useTreeContext_unstable)((ctx)=>ctx.selectionMode);
37
+ const parentChecked = (0, _index.useTreeItemContext_unstable)((ctx)=>ctx.checked);
38
+ const checked = (0, _index.useTreeContext_unstable)((ctx)=>{
39
+ if (selectionMode === 'multiselect' && typeof parentChecked === 'boolean') {
40
+ return parentChecked;
41
+ }
42
+ return ctx.checkedItems.get(value);
95
43
  });
96
- };
97
- const handleClick = react_utilities_2.useEventCallback(event => {
98
- onClick === null || onClick === void 0 ? void 0 : onClick(event);
99
- const isEventFromActions = actionsRef.current && react_portal_1.elementContains(actionsRef.current, event.target);
100
- if (isEventFromActions) {
101
- return;
102
- }
103
- const isEventFromSubtree = subtreeRef.current && react_portal_1.elementContains(subtreeRef.current, event.target);
104
- if (isEventFromSubtree) {
105
- return;
106
- }
107
- const isFromExpandIcon = expandIconRef.current && react_portal_1.elementContains(expandIconRef.current, event.target);
108
- requestOpenChange({
109
- event,
110
- open: isLeaf ? open : !open,
111
- type: isFromExpandIcon ? tokens_1.treeDataTypes.expandIconClick : tokens_1.treeDataTypes.click,
112
- target: event.currentTarget
44
+ const handleClick = (0, _reactUtilities.useEventCallback)((event)=>{
45
+ onClick === null || onClick === void 0 ? void 0 : onClick(event);
46
+ if (event.isDefaultPrevented()) {
47
+ return;
48
+ }
49
+ const isEventFromActions = actionsRef.current && (0, _reactPortal.elementContains)(actionsRef.current, event.target);
50
+ if (isEventFromActions) {
51
+ return;
52
+ }
53
+ const isEventFromSubtree = subtreeRef.current && (0, _reactPortal.elementContains)(subtreeRef.current, event.target);
54
+ if (isEventFromSubtree) {
55
+ return;
56
+ }
57
+ const isEventFromSelection = selectionRef.current && (0, _reactPortal.elementContains)(selectionRef.current, event.target);
58
+ if (isEventFromSelection) {
59
+ return;
60
+ }
61
+ const isFromExpandIcon = expandIconRef.current && (0, _reactPortal.elementContains)(expandIconRef.current, event.target);
62
+ requestTreeResponse({
63
+ event,
64
+ value,
65
+ itemType,
66
+ target: event.currentTarget,
67
+ type: isFromExpandIcon ? _tokens.treeDataTypes.ExpandIconClick : _tokens.treeDataTypes.Click
68
+ });
113
69
  });
114
- requestNavigation({
115
- event,
116
- target: event.currentTarget,
117
- type: tokens_1.treeDataTypes.click
70
+ const handleKeyDown = (0, _reactUtilities.useEventCallback)((event)=>{
71
+ onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(event);
72
+ // Ignore keyboard events that do not originate from the current tree item.
73
+ if (event.isDefaultPrevented() || event.currentTarget !== event.target) {
74
+ return;
75
+ }
76
+ switch(event.key){
77
+ case _keyboardKeys.Space:
78
+ if (selectionMode !== 'none') {
79
+ var _selectionRef_current;
80
+ (_selectionRef_current = selectionRef.current) === null || _selectionRef_current === void 0 ? void 0 : _selectionRef_current.click();
81
+ event.preventDefault();
82
+ }
83
+ return;
84
+ case _tokens.treeDataTypes.End:
85
+ case _tokens.treeDataTypes.Home:
86
+ case _tokens.treeDataTypes.Enter:
87
+ case _tokens.treeDataTypes.ArrowUp:
88
+ case _tokens.treeDataTypes.ArrowDown:
89
+ case _tokens.treeDataTypes.ArrowLeft:
90
+ case _tokens.treeDataTypes.ArrowRight:
91
+ return requestTreeResponse({
92
+ event,
93
+ target: event.currentTarget,
94
+ value,
95
+ itemType,
96
+ type: event.key
97
+ });
98
+ }
99
+ const isTypeAheadCharacter = event.key.length === 1 && event.key.match(/\w/) && !event.altKey && !event.ctrlKey && !event.metaKey;
100
+ if (isTypeAheadCharacter) {
101
+ requestTreeResponse({
102
+ event,
103
+ target: event.currentTarget,
104
+ value,
105
+ itemType,
106
+ type: _tokens.treeDataTypes.TypeAhead
107
+ });
108
+ }
118
109
  });
119
- });
120
- const handleKeyDown = react_utilities_2.useEventCallback(event => {
121
- onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(event);
122
- if (event.currentTarget !== event.target) {
123
- return;
124
- }
125
- if (event.isDefaultPrevented()) {
126
- return;
127
- }
128
- switch (event.key) {
129
- case keyboard_keys_1.Enter:
130
- return handleEnter(event);
131
- case keyboard_keys_1.ArrowRight:
132
- return handleArrowRight(event);
133
- case keyboard_keys_1.ArrowLeft:
134
- return handleArrowLeft(event);
135
- case keyboard_keys_1.End:
136
- return requestNavigation({
137
- event,
138
- type: tokens_1.treeDataTypes.end,
139
- target: event.currentTarget
140
- });
141
- case keyboard_keys_1.Home:
142
- return requestNavigation({
143
- event,
144
- type: tokens_1.treeDataTypes.home,
145
- target: event.currentTarget
146
- });
147
- case keyboard_keys_1.ArrowUp:
148
- return requestNavigation({
149
- event,
150
- type: tokens_1.treeDataTypes.arrowUp,
151
- target: event.currentTarget
152
- });
153
- case keyboard_keys_1.ArrowDown:
154
- return requestNavigation({
155
- event,
156
- type: tokens_1.treeDataTypes.arrowDown,
157
- target: event.currentTarget
110
+ const handleActionsVisible = (0, _reactUtilities.useEventCallback)((event)=>{
111
+ const isTargetFromSubtree = Boolean(subtreeRef.current && (0, _reactPortal.elementContains)(subtreeRef.current, event.target));
112
+ if (!isTargetFromSubtree) {
113
+ setActionsVisible(true);
114
+ }
115
+ });
116
+ const handleActionsInvisible = (0, _reactUtilities.useEventCallback)((event)=>{
117
+ const isTargetFromSubtree = Boolean(subtreeRef.current && (0, _reactPortal.elementContains)(subtreeRef.current, event.target));
118
+ const isRelatedTargetFromActions = Boolean(actionsRef.current && (0, _reactPortal.elementContains)(actionsRef.current, event.relatedTarget));
119
+ if (isRelatedTargetFromActions) {
120
+ return setActionsVisible(true);
121
+ }
122
+ if (!isTargetFromSubtree) {
123
+ return setActionsVisible(false);
124
+ }
125
+ });
126
+ const handleChange = (0, _reactUtilities.useEventCallback)((event)=>{
127
+ if (event.isDefaultPrevented()) {
128
+ return;
129
+ }
130
+ const isEventFromSubtree = subtreeRef.current && (0, _reactPortal.elementContains)(subtreeRef.current, event.target);
131
+ if (isEventFromSubtree) {
132
+ return;
133
+ }
134
+ requestTreeResponse({
135
+ event,
136
+ value,
137
+ itemType,
138
+ type: 'Change',
139
+ target: event.currentTarget,
140
+ checked: checked === 'mixed' ? true : !checked
158
141
  });
159
- }
160
- const isTypeAheadCharacter = event.key.length === 1 && event.key.match(/\w/) && !event.altKey && !event.ctrlKey && !event.metaKey;
161
- if (isTypeAheadCharacter) {
162
- return requestNavigation({
163
- event,
164
- target: event.currentTarget,
165
- type: tokens_1.treeDataTypes.typeAhead
166
- });
167
- }
168
- });
169
- const [isActionsVisible, setActionsVisible] = React.useState(false);
170
- const showActions = react_utilities_2.useEventCallback(event => {
171
- const isEventFromSubtree = subtreeRef.current && react_portal_1.elementContains(subtreeRef.current, event.target);
172
- if (!isEventFromSubtree) {
173
- setActionsVisible(true);
174
- }
175
- });
176
- const hideActions = react_utilities_2.useEventCallback(event => {
177
- const isEventFromSubtree = subtreeRef.current && react_portal_1.elementContains(subtreeRef.current, event.target);
178
- if (!isEventFromSubtree) {
179
- setActionsVisible(false);
180
- }
181
- });
182
- // Listens to focusout event on the document to ensure treeitem actions visibility on portal scenarios
183
- // TODO: find a better way to ensure this behavior
184
- React.useEffect(() => {
185
- if (actionsRef.current) {
186
- const handleFocusOut = event => {
187
- setActionsVisible(react_portal_1.elementContains(actionsRef.current, event.relatedTarget));
188
- };
189
- targetDocument === null || targetDocument === void 0 ? void 0 : targetDocument.addEventListener('focusout', handleFocusOut, {
190
- passive: true
191
- });
192
- return () => {
193
- targetDocument === null || targetDocument === void 0 ? void 0 : targetDocument.removeEventListener('focusout', handleFocusOut);
194
- };
195
- }
196
- }, [targetDocument]);
197
- return {
198
- isLeaf,
199
- open,
200
- level,
201
- buttonSize: 'small',
202
- isActionsVisible: actions ? isActionsVisible : false,
203
- components: {
204
- content: 'div',
205
- root: 'div',
206
- expandIcon: 'span',
207
- actions: 'span',
208
- subtree: 'span'
209
- },
210
- subtree: react_utilities_1.resolveShorthand(subtree, {
211
- required: Boolean(subtreeChildren),
212
- defaultProps: {
213
- children: subtreeChildren,
214
- ref: react_utilities_3.useMergedRefs(subtreeRef, react_utilities_1.isResolvedShorthand(subtree) ? subtree.ref : undefined)
215
- }
216
- }),
217
- content: react_utilities_1.resolveShorthand(content, {
218
- required: true,
219
- defaultProps: {
220
- children
221
- }
222
- }),
223
- root: react_utilities_1.getNativeElementProps(as, {
224
- tabIndex: -1,
225
- ...rest,
226
- id,
227
- ref,
228
- children: null,
229
- 'aria-level': level,
230
- 'aria-expanded': isBranch ? open : undefined,
231
- role: 'treeitem',
232
- onClick: handleClick,
233
- onKeyDown: handleKeyDown,
234
- onMouseOver: actions ? showActions : undefined,
235
- onFocus: actions ? showActions : undefined,
236
- onMouseOut: actions ? hideActions : undefined,
237
- onBlur: actions ? hideActions : undefined
238
- }),
239
- expandIcon: react_utilities_1.resolveShorthand(expandIcon, {
240
- required: isBranch,
241
- defaultProps: {
242
- children: React.createElement(react_icons_1.ChevronRight12Regular, {
243
- style: useTreeItemStyles_1.expandIconInlineStyles[expandIconRotation]
244
- }),
245
- 'aria-hidden': true,
246
- ref: react_utilities_3.useMergedRefs(react_utilities_1.isResolvedShorthand(expandIcon) ? expandIcon.ref : undefined, expandIconRef)
247
- }
248
- }),
249
- actions: react_utilities_1.resolveShorthand(actions, {
250
- defaultProps: {
251
- ref: react_utilities_3.useMergedRefs(react_utilities_1.isResolvedShorthand(actions) ? actions.ref : undefined, actionsRef)
252
- }
253
- })
254
- };
255
- };
256
- exports.useTreeItem_unstable = useTreeItem_unstable;
257
- //# sourceMappingURL=useTreeItem.js.map
142
+ });
143
+ const isBranch = itemType === 'branch';
144
+ return {
145
+ value,
146
+ open,
147
+ checked,
148
+ subtreeRef,
149
+ layoutRef,
150
+ selectionRef,
151
+ expandIconRef,
152
+ actionsRef: (0, _reactUtilities.useMergedRefs)(handleActionsRef, actionsRef),
153
+ itemType,
154
+ level,
155
+ components: {
156
+ root: 'div'
157
+ },
158
+ isAsideVisible,
159
+ isActionsVisible,
160
+ root: (0, _reactUtilities.getNativeElementProps)(as, {
161
+ tabIndex: -1,
162
+ ...rest,
163
+ ref,
164
+ role: 'treeitem',
165
+ 'aria-level': level,
166
+ [_getTreeItemValueFromElement.dataTreeItemValueAttrName]: value,
167
+ 'aria-checked': selectionMode === 'multiselect' ? checked === 'mixed' ? undefined : checked !== null && checked !== void 0 ? checked : false : undefined,
168
+ 'aria-selected': selectionMode === 'single' ? checked : undefined,
169
+ 'aria-expanded': isBranch ? open : undefined,
170
+ onClick: handleClick,
171
+ onKeyDown: handleKeyDown,
172
+ onMouseOver: handleActionsVisible,
173
+ onFocus: handleActionsVisible,
174
+ onMouseOut: handleActionsInvisible,
175
+ onBlur: handleActionsInvisible,
176
+ onChange: handleChange
177
+ })
178
+ };
179
+ }