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

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 (267) hide show
  1. package/CHANGELOG.json +1028 -1
  2. package/CHANGELOG.md +281 -2
  3. package/dist/index.d.ts +244 -99
  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/TreeItemAside.js +1 -0
  9. package/lib/TreeItemAside.js.map +1 -0
  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/Tree/Tree.js +6 -8
  15. package/lib/components/Tree/Tree.js.map +1 -1
  16. package/lib/components/Tree/Tree.types.js +1 -2
  17. package/lib/components/Tree/Tree.types.js.map +1 -1
  18. package/lib/components/Tree/index.js +1 -2
  19. package/lib/components/Tree/index.js.map +1 -1
  20. package/lib/components/Tree/renderTree.js +7 -13
  21. package/lib/components/Tree/renderTree.js.map +1 -1
  22. package/lib/components/Tree/useRootTree.js +145 -0
  23. package/lib/components/Tree/useRootTree.js.map +1 -0
  24. package/lib/components/Tree/useSubtree.js +35 -0
  25. package/lib/components/Tree/useSubtree.js.map +1 -0
  26. package/lib/components/Tree/useTree.js +9 -103
  27. package/lib/components/Tree/useTree.js.map +1 -1
  28. package/lib/components/Tree/useTreeContextValues.js +12 -22
  29. package/lib/components/Tree/useTreeContextValues.js.map +1 -1
  30. package/lib/components/Tree/useTreeStyles.styles.js +30 -0
  31. package/lib/components/Tree/useTreeStyles.styles.js.map +1 -0
  32. package/lib/components/TreeItem/TreeItem.js +16 -9
  33. package/lib/components/TreeItem/TreeItem.js.map +1 -1
  34. package/lib/components/TreeItem/TreeItem.types.js +1 -2
  35. package/lib/components/TreeItem/TreeItem.types.js.map +1 -1
  36. package/lib/components/TreeItem/index.js +1 -2
  37. package/lib/components/TreeItem/index.js.map +1 -1
  38. package/lib/components/TreeItem/renderTreeItem.js +7 -25
  39. package/lib/components/TreeItem/renderTreeItem.js.map +1 -1
  40. package/lib/components/TreeItem/useTreeItem.js +114 -234
  41. package/lib/components/TreeItem/useTreeItem.js.map +1 -1
  42. package/lib/components/TreeItem/useTreeItemContextValues.js +18 -16
  43. package/lib/components/TreeItem/useTreeItemContextValues.js.map +1 -1
  44. package/lib/components/TreeItem/useTreeItemStyles.styles.js +102 -0
  45. package/lib/components/TreeItem/useTreeItemStyles.styles.js.map +1 -0
  46. package/lib/components/TreeItemAside/TreeItemAside.js +13 -0
  47. package/lib/components/TreeItemAside/TreeItemAside.js.map +1 -0
  48. package/lib/components/TreeItemAside/TreeItemAside.types.js +1 -0
  49. package/lib/components/TreeItemAside/TreeItemAside.types.js.map +1 -0
  50. package/lib/components/TreeItemAside/index.js +5 -0
  51. package/lib/components/TreeItemAside/index.js.map +1 -0
  52. package/lib/components/TreeItemAside/renderTreeItemAside.js +14 -0
  53. package/lib/components/TreeItemAside/renderTreeItemAside.js.map +1 -0
  54. package/lib/components/TreeItemAside/useTreeItemAside.js +30 -0
  55. package/lib/components/TreeItemAside/useTreeItemAside.js.map +1 -0
  56. package/lib/components/TreeItemAside/useTreeItemAsideStyles.styles.js +47 -0
  57. package/lib/components/TreeItemAside/useTreeItemAsideStyles.styles.js.map +1 -0
  58. package/lib/components/TreeItemChevron.js +24 -0
  59. package/lib/components/TreeItemChevron.js.map +1 -0
  60. package/lib/components/TreeItemLayout/TreeItemLayout.js +8 -8
  61. package/lib/components/TreeItemLayout/TreeItemLayout.js.map +1 -1
  62. package/lib/components/TreeItemLayout/TreeItemLayout.types.js +1 -2
  63. package/lib/components/TreeItemLayout/TreeItemLayout.types.js.map +1 -1
  64. package/lib/components/TreeItemLayout/index.js +1 -2
  65. package/lib/components/TreeItemLayout/index.js.map +1 -1
  66. package/lib/components/TreeItemLayout/renderTreeItemLayout.js +5 -21
  67. package/lib/components/TreeItemLayout/renderTreeItemLayout.js.map +1 -1
  68. package/lib/components/TreeItemLayout/useTreeItemLayout.js +38 -39
  69. package/lib/components/TreeItemLayout/useTreeItemLayout.js.map +1 -1
  70. package/lib/components/TreeItemLayout/useTreeItemLayoutStyles.styles.js +138 -0
  71. package/lib/components/TreeItemLayout/useTreeItemLayoutStyles.styles.js.map +1 -0
  72. package/lib/components/TreeItemPersonaLayout/TreeItemPersonaLayout.js +9 -9
  73. package/lib/components/TreeItemPersonaLayout/TreeItemPersonaLayout.js.map +1 -1
  74. package/lib/components/TreeItemPersonaLayout/TreeItemPersonaLayout.types.js +1 -2
  75. package/lib/components/TreeItemPersonaLayout/TreeItemPersonaLayout.types.js.map +1 -1
  76. package/lib/components/TreeItemPersonaLayout/index.js +1 -2
  77. package/lib/components/TreeItemPersonaLayout/index.js.map +1 -1
  78. package/lib/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js +7 -27
  79. package/lib/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js.map +1 -1
  80. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js +37 -48
  81. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js.map +1 -1
  82. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutContextValues.js +9 -10
  83. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutContextValues.js.map +1 -1
  84. package/lib/components/TreeItemPersonaLayout/{useTreeItemPersonaLayoutStyles.js → useTreeItemPersonaLayoutStyles.styles.js} +51 -30
  85. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.styles.js.map +1 -0
  86. package/lib/contexts/index.js +0 -1
  87. package/lib/contexts/index.js.map +1 -1
  88. package/lib/contexts/treeContext.js +9 -14
  89. package/lib/contexts/treeContext.js.map +1 -1
  90. package/lib/contexts/treeItemContext.js +13 -10
  91. package/lib/contexts/treeItemContext.js.map +1 -1
  92. package/lib/hooks/index.js +0 -1
  93. package/lib/hooks/index.js.map +1 -1
  94. package/lib/hooks/useFlatTree.js +71 -34
  95. package/lib/hooks/useFlatTree.js.map +1 -1
  96. package/lib/hooks/useFlatTreeNavigation.js +62 -62
  97. package/lib/hooks/useFlatTreeNavigation.js.map +1 -1
  98. package/lib/hooks/useHTMLElementWalker.js +78 -76
  99. package/lib/hooks/useHTMLElementWalker.js.map +1 -1
  100. package/lib/hooks/useNestedTreeNavigation.js +49 -49
  101. package/lib/hooks/useNestedTreeNavigation.js.map +1 -1
  102. package/lib/hooks/useOpenItemsState.js +18 -15
  103. package/lib/hooks/useOpenItemsState.js.map +1 -1
  104. package/lib/hooks/useRovingTabIndexes.js +46 -45
  105. package/lib/hooks/useRovingTabIndexes.js.map +1 -1
  106. package/lib/index.js +1 -1
  107. package/lib/index.js.map +1 -1
  108. package/lib/utils/ImmutableSet.js +27 -30
  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/createFlatTreeItems.js +120 -0
  113. package/lib/utils/createFlatTreeItems.js.map +1 -0
  114. package/lib/utils/flattenTree.js +58 -28
  115. package/lib/utils/flattenTree.js.map +1 -1
  116. package/lib/utils/nextTypeAheadElement.js +11 -12
  117. package/lib/utils/nextTypeAheadElement.js.map +1 -1
  118. package/lib/utils/normalizeOpenItems.js +6 -5
  119. package/lib/utils/normalizeOpenItems.js.map +1 -1
  120. package/lib/utils/tokens.js +13 -14
  121. package/lib/utils/tokens.js.map +1 -1
  122. package/lib/utils/treeItemFilter.js +2 -3
  123. package/lib/utils/treeItemFilter.js.map +1 -1
  124. package/lib-commonjs/Tree.js +3 -5
  125. package/lib-commonjs/Tree.js.map +1 -1
  126. package/lib-commonjs/TreeItem.js +3 -5
  127. package/lib-commonjs/TreeItem.js.map +1 -1
  128. package/lib-commonjs/TreeItemAside.js +6 -0
  129. package/lib-commonjs/TreeItemAside.js.map +1 -0
  130. package/lib-commonjs/TreeItemLayout.js +3 -5
  131. package/lib-commonjs/TreeItemLayout.js.map +1 -1
  132. package/lib-commonjs/TreeItemPersonaLayout.js +3 -5
  133. package/lib-commonjs/TreeItemPersonaLayout.js.map +1 -1
  134. package/lib-commonjs/components/Tree/Tree.js +17 -23
  135. package/lib-commonjs/components/Tree/Tree.js.map +1 -1
  136. package/lib-commonjs/components/Tree/Tree.types.js +3 -3
  137. package/lib-commonjs/components/Tree/Tree.types.js.map +1 -1
  138. package/lib-commonjs/components/Tree/index.js +8 -10
  139. package/lib-commonjs/components/Tree/index.js.map +1 -1
  140. package/lib-commonjs/components/Tree/renderTree.js +14 -19
  141. package/lib-commonjs/components/Tree/renderTree.js.map +1 -1
  142. package/lib-commonjs/components/Tree/useRootTree.js +149 -0
  143. package/lib-commonjs/components/Tree/useRootTree.js.map +1 -0
  144. package/lib-commonjs/components/Tree/useSubtree.js +39 -0
  145. package/lib-commonjs/components/Tree/useSubtree.js.map +1 -0
  146. package/lib-commonjs/components/Tree/useTree.js +16 -116
  147. package/lib-commonjs/components/Tree/useTree.js.map +1 -1
  148. package/lib-commonjs/components/Tree/useTreeContextValues.js +17 -26
  149. package/lib-commonjs/components/Tree/useTreeContextValues.js.map +1 -1
  150. package/lib-commonjs/components/Tree/useTreeStyles.styles.js +53 -0
  151. package/lib-commonjs/components/Tree/useTreeStyles.styles.js.map +1 -0
  152. package/lib-commonjs/components/TreeItem/TreeItem.js +17 -18
  153. package/lib-commonjs/components/TreeItem/TreeItem.js.map +1 -1
  154. package/lib-commonjs/components/TreeItem/TreeItem.types.js +3 -4
  155. package/lib-commonjs/components/TreeItem/TreeItem.types.js.map +1 -1
  156. package/lib-commonjs/components/TreeItem/index.js +7 -9
  157. package/lib-commonjs/components/TreeItem/index.js.map +1 -1
  158. package/lib-commonjs/components/TreeItem/renderTreeItem.js +14 -33
  159. package/lib-commonjs/components/TreeItem/renderTreeItem.js.map +1 -1
  160. package/lib-commonjs/components/TreeItem/useTreeItem.js +124 -251
  161. package/lib-commonjs/components/TreeItem/useTreeItem.js.map +1 -1
  162. package/lib-commonjs/components/TreeItem/useTreeItemContextValues.js +23 -20
  163. package/lib-commonjs/components/TreeItem/useTreeItemContextValues.js.map +1 -1
  164. package/lib-commonjs/components/TreeItem/useTreeItemStyles.styles.js +206 -0
  165. package/lib-commonjs/components/TreeItem/useTreeItemStyles.styles.js.map +1 -0
  166. package/lib-commonjs/components/TreeItemAside/TreeItemAside.js +19 -0
  167. package/lib-commonjs/components/TreeItemAside/TreeItemAside.js.map +1 -0
  168. package/lib-commonjs/components/TreeItemAside/TreeItemAside.types.js +4 -0
  169. package/lib-commonjs/components/TreeItemAside/TreeItemAside.types.js.map +1 -0
  170. package/lib-commonjs/components/TreeItemAside/index.js +10 -0
  171. package/lib-commonjs/components/TreeItemAside/index.js.map +1 -0
  172. package/lib-commonjs/components/TreeItemAside/renderTreeItemAside.js +20 -0
  173. package/lib-commonjs/components/TreeItemAside/renderTreeItemAside.js.map +1 -0
  174. package/lib-commonjs/components/TreeItemAside/useTreeItemAside.js +31 -0
  175. package/lib-commonjs/components/TreeItemAside/useTreeItemAside.js.map +1 -0
  176. package/lib-commonjs/components/TreeItemAside/useTreeItemAsideStyles.styles.js +90 -0
  177. package/lib-commonjs/components/TreeItemAside/useTreeItemAsideStyles.styles.js.map +1 -0
  178. package/lib-commonjs/components/TreeItemChevron.js +33 -0
  179. package/lib-commonjs/components/TreeItemChevron.js.map +1 -0
  180. package/lib-commonjs/components/TreeItemLayout/TreeItemLayout.js +15 -16
  181. package/lib-commonjs/components/TreeItemLayout/TreeItemLayout.js.map +1 -1
  182. package/lib-commonjs/components/TreeItemLayout/TreeItemLayout.types.js +1 -3
  183. package/lib-commonjs/components/TreeItemLayout/TreeItemLayout.types.js.map +1 -1
  184. package/lib-commonjs/components/TreeItemLayout/index.js +7 -9
  185. package/lib-commonjs/components/TreeItemLayout/index.js.map +1 -1
  186. package/lib-commonjs/components/TreeItemLayout/renderTreeItemLayout.js +11 -28
  187. package/lib-commonjs/components/TreeItemLayout/renderTreeItemLayout.js.map +1 -1
  188. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayout.js +45 -52
  189. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayout.js.map +1 -1
  190. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayoutStyles.styles.js +221 -0
  191. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayoutStyles.styles.js.map +1 -0
  192. package/lib-commonjs/components/TreeItemPersonaLayout/TreeItemPersonaLayout.js +17 -18
  193. package/lib-commonjs/components/TreeItemPersonaLayout/TreeItemPersonaLayout.js.map +1 -1
  194. package/lib-commonjs/components/TreeItemPersonaLayout/TreeItemPersonaLayout.types.js +1 -3
  195. package/lib-commonjs/components/TreeItemPersonaLayout/TreeItemPersonaLayout.types.js.map +1 -1
  196. package/lib-commonjs/components/TreeItemPersonaLayout/index.js +7 -9
  197. package/lib-commonjs/components/TreeItemPersonaLayout/index.js.map +1 -1
  198. package/lib-commonjs/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js +14 -35
  199. package/lib-commonjs/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js.map +1 -1
  200. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js +44 -61
  201. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js.map +1 -1
  202. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutContextValues.js +16 -15
  203. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutContextValues.js.map +1 -1
  204. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.styles.js +230 -0
  205. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.styles.js.map +1 -0
  206. package/lib-commonjs/contexts/index.js +4 -6
  207. package/lib-commonjs/contexts/index.js.map +1 -1
  208. package/lib-commonjs/contexts/treeContext.js +23 -18
  209. package/lib-commonjs/contexts/treeContext.js.map +1 -1
  210. package/lib-commonjs/contexts/treeItemContext.js +27 -13
  211. package/lib-commonjs/contexts/treeItemContext.js.map +1 -1
  212. package/lib-commonjs/hooks/index.js +5 -7
  213. package/lib-commonjs/hooks/index.js.map +1 -1
  214. package/lib-commonjs/hooks/useFlatTree.js +79 -52
  215. package/lib-commonjs/hooks/useFlatTree.js.map +1 -1
  216. package/lib-commonjs/hooks/useFlatTreeNavigation.js +73 -72
  217. package/lib-commonjs/hooks/useFlatTreeNavigation.js.map +1 -1
  218. package/lib-commonjs/hooks/useHTMLElementWalker.js +92 -83
  219. package/lib-commonjs/hooks/useHTMLElementWalker.js.map +1 -1
  220. package/lib-commonjs/hooks/useNestedTreeNavigation.js +59 -58
  221. package/lib-commonjs/hooks/useNestedTreeNavigation.js.map +1 -1
  222. package/lib-commonjs/hooks/useOpenItemsState.js +27 -22
  223. package/lib-commonjs/hooks/useOpenItemsState.js.map +1 -1
  224. package/lib-commonjs/hooks/useRovingTabIndexes.js +54 -53
  225. package/lib-commonjs/hooks/useRovingTabIndexes.js.map +1 -1
  226. package/lib-commonjs/index.js +52 -181
  227. package/lib-commonjs/index.js.map +1 -1
  228. package/lib-commonjs/utils/ImmutableSet.js +37 -38
  229. package/lib-commonjs/utils/ImmutableSet.js.map +1 -1
  230. package/lib-commonjs/utils/assert.js +11 -9
  231. package/lib-commonjs/utils/assert.js.map +1 -1
  232. package/lib-commonjs/utils/createFlatTreeItems.js +132 -0
  233. package/lib-commonjs/utils/createFlatTreeItems.js.map +1 -0
  234. package/lib-commonjs/utils/flattenTree.js +25 -33
  235. package/lib-commonjs/utils/flattenTree.js.map +1 -1
  236. package/lib-commonjs/utils/nextTypeAheadElement.js +16 -16
  237. package/lib-commonjs/utils/nextTypeAheadElement.js.map +1 -1
  238. package/lib-commonjs/utils/normalizeOpenItems.js +11 -9
  239. package/lib-commonjs/utils/normalizeOpenItems.js.map +1 -1
  240. package/lib-commonjs/utils/tokens.js +28 -20
  241. package/lib-commonjs/utils/tokens.js.map +1 -1
  242. package/lib-commonjs/utils/treeItemFilter.js +7 -7
  243. package/lib-commonjs/utils/treeItemFilter.js.map +1 -1
  244. package/package.json +23 -17
  245. package/lib/components/Tree/useTreeStyles.js +0 -20
  246. package/lib/components/Tree/useTreeStyles.js.map +0 -1
  247. package/lib/components/TreeItem/useTreeItemStyles.js +0 -203
  248. package/lib/components/TreeItem/useTreeItemStyles.js.map +0 -1
  249. package/lib/components/TreeItemLayout/useTreeItemLayoutStyles.js +0 -98
  250. package/lib/components/TreeItemLayout/useTreeItemLayoutStyles.js.map +0 -1
  251. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.js.map +0 -1
  252. package/lib/utils/createUnfilteredFlatTree.js +0 -77
  253. package/lib/utils/createUnfilteredFlatTree.js.map +0 -1
  254. package/lib/utils/createVisibleFlatTree.js +0 -80
  255. package/lib/utils/createVisibleFlatTree.js.map +0 -1
  256. package/lib-commonjs/components/Tree/useTreeStyles.js +0 -27
  257. package/lib-commonjs/components/Tree/useTreeStyles.js.map +0 -1
  258. package/lib-commonjs/components/TreeItem/useTreeItemStyles.js +0 -210
  259. package/lib-commonjs/components/TreeItem/useTreeItemStyles.js.map +0 -1
  260. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayoutStyles.js +0 -105
  261. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayoutStyles.js.map +0 -1
  262. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.js +0 -122
  263. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.js.map +0 -1
  264. package/lib-commonjs/utils/createUnfilteredFlatTree.js +0 -84
  265. package/lib-commonjs/utils/createUnfilteredFlatTree.js.map +0 -1
  266. package/lib-commonjs/utils/createVisibleFlatTree.js +0 -87
  267. package/lib-commonjs/utils/createVisibleFlatTree.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import { useTree_unstable } from './useTree';
3
3
  import { renderTree_unstable } from './renderTree';
4
- import { useTreeStyles_unstable } from './useTreeStyles';
4
+ import { useTreeStyles_unstable } from './useTreeStyles.styles';
5
5
  import { useTreeContextValues_unstable } from './useTreeContextValues';
6
6
  /**
7
7
  * A tree view widget presents a hierarchical list.
@@ -10,12 +10,10 @@ import { useTreeContextValues_unstable } from './useTreeContextValues';
10
10
  * For example, in a file system navigator that uses a tree view to display folders and files,
11
11
  * an item representing a folder can be expanded to reveal the contents of the folder,
12
12
  * which may be files, folders, or both.
13
- */
14
- export const Tree = /*#__PURE__*/React.forwardRef((props, ref) => {
15
- const state = useTree_unstable(props, ref);
16
- useTreeStyles_unstable(state);
17
- const contextValues = useTreeContextValues_unstable(state);
18
- return renderTree_unstable(state, contextValues);
13
+ */ export const Tree = /*#__PURE__*/ React.forwardRef((props, ref)=>{
14
+ const state = useTree_unstable(props, ref);
15
+ useTreeStyles_unstable(state);
16
+ const contextValues = useTreeContextValues_unstable(state);
17
+ return renderTree_unstable(state, contextValues);
19
18
  });
20
19
  Tree.displayName = 'Tree';
21
- //# sourceMappingURL=Tree.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","useTree_unstable","renderTree_unstable","useTreeStyles_unstable","useTreeContextValues_unstable","Tree","forwardRef","props","ref","state","contextValues","displayName"],"sources":["../src/packages/react-components/react-tree/src/components/Tree/Tree.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useTree_unstable } from './useTree';\nimport { renderTree_unstable } from './renderTree';\nimport { useTreeStyles_unstable } from './useTreeStyles';\nimport type { TreeProps } from './Tree.types';\nimport type { ForwardRefComponent } from '@fluentui/react-utilities';\nimport { useTreeContextValues_unstable } from './useTreeContextValues';\n\n/**\n * A tree view widget presents a hierarchical list.\n * Any item in the hierarchy may have child items,\n * and items that have children may be expanded or collapsed to show or hide the children.\n * For example, in a file system navigator that uses a tree view to display folders and files,\n * an item representing a folder can be expanded to reveal the contents of the folder,\n * which may be files, folders, or both.\n */\nexport const Tree: ForwardRefComponent<TreeProps> = React.forwardRef((props, ref) => {\n const state = useTree_unstable(props, ref);\n useTreeStyles_unstable(state);\n const contextValues = useTreeContextValues_unstable(state);\n return renderTree_unstable(state, contextValues);\n});\n\nTree.displayName = 'Tree';\n"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,gBAAgB,QAAQ,WAAW;AAC5C,SAASC,mBAAmB,QAAQ,cAAc;AAClD,SAASC,sBAAsB,QAAQ,iBAAiB;AAGxD,SAASC,6BAA6B,QAAQ,wBAAwB;AAEtE;;;;;;;;AAQA,OAAO,MAAMC,IAAI,gBAAmCL,KAAK,CAACM,UAAU,CAAC,CAACC,KAAK,EAAEC,GAAG,KAAI;EAClF,MAAMC,KAAK,GAAGR,gBAAgB,CAACM,KAAK,EAAEC,GAAG,CAAC;EAC1CL,sBAAsB,CAACM,KAAK,CAAC;EAC7B,MAAMC,aAAa,GAAGN,6BAA6B,CAACK,KAAK,CAAC;EAC1D,OAAOP,mBAAmB,CAACO,KAAK,EAAEC,aAAa,CAAC;AAClD,CAAC,CAAC;AAEFL,IAAI,CAACM,WAAW,GAAG,MAAM"}
1
+ {"version":3,"sources":["Tree.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useTree_unstable } from './useTree';\nimport { renderTree_unstable } from './renderTree';\nimport { useTreeStyles_unstable } from './useTreeStyles.styles';\nimport type { TreeProps } from './Tree.types';\nimport type { ForwardRefComponent } from '@fluentui/react-utilities';\nimport { useTreeContextValues_unstable } from './useTreeContextValues';\n\n/**\n * A tree view widget presents a hierarchical list.\n * Any item in the hierarchy may have child items,\n * and items that have children may be expanded or collapsed to show or hide the children.\n * For example, in a file system navigator that uses a tree view to display folders and files,\n * an item representing a folder can be expanded to reveal the contents of the folder,\n * which may be files, folders, or both.\n */\nexport const Tree = React.forwardRef((props, ref) => {\n const state = useTree_unstable(props, ref);\n useTreeStyles_unstable(state);\n const contextValues = useTreeContextValues_unstable(state);\n return renderTree_unstable(state, contextValues);\n}) as ForwardRefComponent<TreeProps> & (<Value = string>(props: TreeProps<Value>) => JSX.Element);\n\nTree.displayName = 'Tree';\n"],"names":["React","useTree_unstable","renderTree_unstable","useTreeStyles_unstable","useTreeContextValues_unstable","Tree","forwardRef","props","ref","state","contextValues","displayName"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,gBAAgB,QAAQ,YAAY;AAC7C,SAASC,mBAAmB,QAAQ,eAAe;AACnD,SAASC,sBAAsB,QAAQ,yBAAyB;AAGhE,SAASC,6BAA6B,QAAQ,yBAAyB;AAEvE;;;;;;;CAOC,GACD,OAAO,MAAMC,qBAAOL,MAAMM,UAAU,CAAC,CAACC,OAAOC,MAAQ;IACnD,MAAMC,QAAQR,iBAAiBM,OAAOC;IACtCL,uBAAuBM;IACvB,MAAMC,gBAAgBN,8BAA8BK;IACpD,OAAOP,oBAAoBO,OAAOC;AACpC,GAAkG;AAElGL,KAAKM,WAAW,GAAG"}
@@ -1,2 +1 @@
1
- export {};
2
- //# sourceMappingURL=Tree.types.js.map
1
+ import * as React from 'react';
@@ -1 +1 @@
1
- {"version":3,"file":"Tree.types.js","sourceRoot":"../src/","sources":["packages/react-components/react-tree/src/components/Tree/Tree.types.ts"],"names":[],"mappings":"","sourcesContent":["import * as React from 'react';\nimport type { ComponentProps, ComponentState, Slot } from '@fluentui/react-utilities';\nimport { TreeContextValue } from '../../contexts/treeContext';\nimport { ArrowDown, ArrowLeft, ArrowRight, ArrowUp, End, Enter, Home } from '@fluentui/keyboard-keys';\n\nexport type TreeSlots = {\n root: Slot<'div'>;\n};\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport type TreeNavigationData_unstable =\n | { event: React.MouseEvent<HTMLElement>; target: HTMLElement; type: 'Click' }\n | { event: React.KeyboardEvent<HTMLElement>; target: HTMLElement; type: 'TypeAhead' }\n | { event: React.KeyboardEvent<HTMLElement>; target: HTMLElement; type: typeof ArrowRight }\n | { event: React.KeyboardEvent<HTMLElement>; target: HTMLElement; type: typeof ArrowLeft }\n | { event: React.KeyboardEvent<HTMLElement>; target: HTMLElement; type: typeof ArrowUp }\n | { event: React.KeyboardEvent<HTMLElement>; target: HTMLElement; type: typeof ArrowDown }\n | { event: React.KeyboardEvent<HTMLElement>; target: HTMLElement; type: typeof Home }\n | { event: React.KeyboardEvent<HTMLElement>; target: HTMLElement; type: typeof End };\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport type TreeNavigationEvent_unstable = TreeNavigationData_unstable['event'];\n\nexport type TreeOpenChangeData = { open: boolean } & (\n | {\n event: React.MouseEvent<HTMLElement>;\n target: HTMLElement;\n type: 'ExpandIconClick';\n }\n | {\n event: React.MouseEvent<HTMLElement>;\n target: HTMLElement;\n type: 'Click';\n }\n | {\n event: React.KeyboardEvent<HTMLElement>;\n target: HTMLElement;\n type: typeof Enter;\n }\n | {\n event: React.KeyboardEvent<HTMLElement>;\n target: HTMLElement;\n type: typeof ArrowRight;\n }\n | {\n event: React.KeyboardEvent<HTMLElement>;\n target: HTMLElement;\n type: typeof ArrowLeft;\n }\n);\n\nexport type TreeOpenChangeEvent = TreeOpenChangeData['event'];\n\nexport type TreeContextValues = {\n tree: TreeContextValue;\n};\n\nexport type TreeItemId = string | number;\n\nexport type TreeProps = ComponentProps<TreeSlots> & {\n /**\n * A tree item can have various appearances:\n * - 'subtle' (default): The default tree item styles.\n * - 'subtle-alpha': Minimizes emphasis on hovered or focused states.\n * - 'transparent': Removes background color.\n * @default 'subtle'\n */\n appearance?: 'subtle' | 'subtle-alpha' | 'transparent';\n /**\n * Size of the tree item.\n * @default 'medium'\n */\n size?: 'small' | 'medium';\n /**\n * This refers to a list of ids of opened tree items.\n * Controls the state of the open tree items.\n * These property is ignored for subtrees.\n */\n openItems?: Iterable<TreeItemId>;\n /**\n * This refers to a list of ids of opened tree items.\n * Default value for the uncontrolled state of open tree items.\n * These property is ignored for subtrees.\n */\n defaultOpenItems?: Iterable<TreeItemId>;\n /**\n * Callback fired when the component changes value from open state.\n * These property is ignored for subtrees.\n *\n * @param event - a React's Synthetic event\n * @param data - A data object with relevant information,\n * such as open value and type of interaction that created the event.\n */\n onOpenChange?(event: TreeOpenChangeEvent, data: TreeOpenChangeData): void;\n\n /**\n * Callback fired when navigation happens inside the component.\n * These property is ignored for subtrees.\n *\n * FIXME: This method is not ideal, as navigation should be handled internally by tabster.\n *\n * @param event - a React's Synthetic event\n * @param data - A data object with relevant information,\n */\n // eslint-disable-next-line @typescript-eslint/naming-convention\n onNavigation_unstable?(event: TreeNavigationEvent_unstable, data: TreeNavigationData_unstable): void;\n};\n\n/**\n * State used in rendering Tree\n */\nexport type TreeState = ComponentState<TreeSlots> & TreeContextValue;\n"]}
1
+ {"version":3,"sources":["Tree.types.ts"],"sourcesContent":["import * as React from 'react';\nimport type { ComponentProps, ComponentState, Slot } from '@fluentui/react-utilities';\nimport { TreeContextValue } from '../../contexts/treeContext';\nimport { ArrowDown, ArrowLeft, ArrowRight, ArrowUp, End, Enter, Home } from '@fluentui/keyboard-keys';\n\nexport type TreeSlots = {\n root: Slot<'div'>;\n};\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport type TreeNavigationData_unstable<Value = string> = { value: Value; target: HTMLElement } & (\n | { event: React.MouseEvent<HTMLElement>; type: 'Click' }\n | { event: React.KeyboardEvent<HTMLElement>; type: 'TypeAhead' }\n | { event: React.KeyboardEvent<HTMLElement>; type: typeof ArrowRight }\n | { event: React.KeyboardEvent<HTMLElement>; type: typeof ArrowLeft }\n | { event: React.KeyboardEvent<HTMLElement>; type: typeof ArrowUp }\n | { event: React.KeyboardEvent<HTMLElement>; type: typeof ArrowDown }\n | { event: React.KeyboardEvent<HTMLElement>; type: typeof Home }\n | { event: React.KeyboardEvent<HTMLElement>; type: typeof End }\n);\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport type TreeNavigationEvent_unstable = TreeNavigationData_unstable['event'];\n\nexport type TreeOpenChangeData<Value = string> = { open: boolean; value: Value } & (\n | {\n event: React.MouseEvent<HTMLElement>;\n target: HTMLElement;\n type: 'ExpandIconClick';\n }\n | {\n event: React.MouseEvent<HTMLElement>;\n target: HTMLElement;\n type: 'Click';\n }\n | {\n event: React.KeyboardEvent<HTMLElement>;\n target: HTMLElement;\n type: typeof Enter;\n }\n | {\n event: React.KeyboardEvent<HTMLElement>;\n target: HTMLElement;\n type: typeof ArrowRight;\n }\n | {\n event: React.KeyboardEvent<HTMLElement>;\n target: HTMLElement;\n type: typeof ArrowLeft;\n }\n);\n\nexport type TreeOpenChangeEvent = TreeOpenChangeData['event'];\n\nexport type TreeContextValues = {\n tree: TreeContextValue;\n};\n\nexport type TreeProps<Value = string> = ComponentProps<TreeSlots> & {\n /**\n * A tree item can have various appearances:\n * - 'subtle' (default): The default tree item styles.\n * - 'subtle-alpha': Minimizes emphasis on hovered or focused states.\n * - 'transparent': Removes background color.\n * @default 'subtle'\n */\n appearance?: 'subtle' | 'subtle-alpha' | 'transparent';\n /**\n * Size of the tree item.\n * @default 'medium'\n */\n size?: 'small' | 'medium';\n /**\n * This refers to a list of ids of opened tree items.\n * Controls the state of the open tree items.\n * These property is ignored for subtrees.\n */\n openItems?: Iterable<Value>;\n /**\n * This refers to a list of ids of opened tree items.\n * Default value for the uncontrolled state of open tree items.\n * These property is ignored for subtrees.\n */\n defaultOpenItems?: Iterable<Value>;\n /**\n * Callback fired when the component changes value from open state.\n * These property is ignored for subtrees.\n *\n * @param event - a React's Synthetic event\n * @param data - A data object with relevant information,\n * such as open value and type of interaction that created the event.\n */\n onOpenChange?(event: TreeOpenChangeEvent, data: TreeOpenChangeData<Value>): void;\n\n /**\n * Callback fired when navigation happens inside the component.\n * These property is ignored for subtrees.\n *\n * FIXME: This method is not ideal, as navigation should be handled internally by tabster.\n *\n * @param event - a React's Synthetic event\n * @param data - A data object with relevant information,\n */\n // eslint-disable-next-line @typescript-eslint/naming-convention\n onNavigation_unstable?(event: TreeNavigationEvent_unstable, data: TreeNavigationData_unstable<Value>): void;\n};\n\n/**\n * State used in rendering Tree\n */\nexport type TreeState = ComponentState<TreeSlots> &\n TreeContextValue & {\n open: boolean;\n };\n"],"names":["React"],"mappings":"AAAA,YAAYA,WAAW,QAAQ"}
@@ -2,6 +2,5 @@ export * from './Tree';
2
2
  export * from './Tree.types';
3
3
  export * from './renderTree';
4
4
  export * from './useTree';
5
- export * from './useTreeStyles';
5
+ export * from './useTreeStyles.styles';
6
6
  export * from './useTreeContextValues';
7
- //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"../src/","sources":["packages/react-components/react-tree/src/components/Tree/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC","sourcesContent":["export * from './Tree';\nexport * from './Tree.types';\nexport * from './renderTree';\nexport * from './useTree';\nexport * from './useTreeStyles';\nexport * from './useTreeContextValues';\n"]}
1
+ {"version":3,"sources":["index.ts"],"sourcesContent":["export * from './Tree';\nexport * from './Tree.types';\nexport * from './renderTree';\nexport * from './useTree';\nexport * from './useTreeStyles.styles';\nexport * from './useTreeContextValues';\n"],"names":[],"mappings":"AAAA,cAAc,SAAS;AACvB,cAAc,eAAe;AAC7B,cAAc,eAAe;AAC7B,cAAc,YAAY;AAC1B,cAAc,yBAAyB;AACvC,cAAc,yBAAyB"}
@@ -1,15 +1,9 @@
1
- import * as React from 'react';
2
- import { getSlots } from '@fluentui/react-utilities';
1
+ /** @jsxRuntime classic */ /** @jsx createElement */ import { createElement } from '@fluentui/react-jsx-runtime';
2
+ import { getSlotsNext } from '@fluentui/react-utilities';
3
3
  import { TreeProvider } from '../../contexts';
4
- export const renderTree_unstable = (state, contextValues) => {
5
- const {
6
- slots,
7
- slotProps
8
- } = getSlots(state);
9
- return /*#__PURE__*/React.createElement(TreeProvider, {
10
- value: contextValues.tree
11
- }, /*#__PURE__*/React.createElement(slots.root, {
12
- ...slotProps.root
13
- }, slotProps.root.children));
4
+ export const renderTree_unstable = (state, contextValues)=>{
5
+ const { slots , slotProps } = getSlotsNext(state);
6
+ return /*#__PURE__*/ createElement(TreeProvider, {
7
+ value: contextValues.tree
8
+ }, state.open && /*#__PURE__*/ createElement(slots.root, slotProps.root, slotProps.root.children));
14
9
  };
15
- //# sourceMappingURL=renderTree.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","getSlots","TreeProvider","renderTree_unstable","state","contextValues","slots","slotProps","createElement","value","tree","root","children"],"sources":["../src/packages/react-components/react-tree/src/components/Tree/renderTree.tsx"],"sourcesContent":["import * as React from 'react';\nimport { getSlots } from '@fluentui/react-utilities';\nimport type { TreeState, TreeSlots, TreeContextValues } from './Tree.types';\nimport { TreeProvider } from '../../contexts';\n\nexport const renderTree_unstable = (state: TreeState, contextValues: TreeContextValues) => {\n const { slots, slotProps } = getSlots<TreeSlots>(state);\n\n return (\n <TreeProvider value={contextValues.tree}>\n <slots.root {...slotProps.root}>{slotProps.root.children}</slots.root>\n </TreeProvider>\n );\n};\n"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,QAAQ,QAAQ,2BAA2B;AAEpD,SAASC,YAAY,QAAQ,gBAAgB;AAE7C,OAAO,MAAMC,mBAAmB,GAAGA,CAACC,KAAgB,EAAEC,aAAgC,KAAI;EACxF,MAAM;IAAEC,KAAK;IAAEC;EAAS,CAAE,GAAGN,QAAQ,CAAYG,KAAK,CAAC;EAEvD,oBACEJ,KAAA,CAAAQ,aAAA,CAACN,YAAY;IAACO,KAAK,EAAEJ,aAAa,CAACK;EAAI,gBACrCV,KAAA,CAAAQ,aAAA,CAACF,KAAK,CAACK,IAAI;IAAA,GAAKJ,SAAS,CAACI;EAAI,GAAGJ,SAAS,CAACI,IAAI,CAACC,QAAQ,CAAc,CACzD;AAEnB,CAAC"}
1
+ {"version":3,"sources":["renderTree.tsx"],"sourcesContent":["/** @jsxRuntime classic */\n/** @jsx createElement */\n\nimport { createElement } from '@fluentui/react-jsx-runtime';\nimport { getSlotsNext } from '@fluentui/react-utilities';\nimport type { TreeState, TreeSlots, TreeContextValues } from './Tree.types';\nimport { TreeProvider } from '../../contexts';\n\nexport const renderTree_unstable = (state: TreeState, contextValues: TreeContextValues) => {\n const { slots, slotProps } = getSlotsNext<TreeSlots>(state);\n return (\n <TreeProvider value={contextValues.tree}>\n {state.open && <slots.root {...slotProps.root}>{slotProps.root.children}</slots.root>}\n </TreeProvider>\n );\n};\n"],"names":["createElement","getSlotsNext","TreeProvider","renderTree_unstable","state","contextValues","slots","slotProps","value","tree","open","root","children"],"mappings":"AAAA,wBAAwB,GACxB,uBAAuB,GAEvB,SAASA,aAAa,QAAQ,8BAA8B;AAC5D,SAASC,YAAY,QAAQ,4BAA4B;AAEzD,SAASC,YAAY,QAAQ,iBAAiB;AAE9C,OAAO,MAAMC,sBAAsB,CAACC,OAAkBC,gBAAqC;IACzF,MAAM,EAAEC,MAAK,EAAEC,UAAS,EAAE,GAAGN,aAAwBG;IACrD,qBACE,AAVJ,cAUKF;QAAaM,OAAOH,cAAcI,IAAI;OACpCL,MAAMM,IAAI,kBAAI,AAXrB,cAWsBJ,MAAMK,IAAI,EAAKJ,UAAUI,IAAI,EAAGJ,UAAUI,IAAI,CAACC,QAAQ;AAG7E,EAAE"}
@@ -0,0 +1,145 @@
1
+ import * as React from 'react';
2
+ import * as ReactDOM from 'react-dom';
3
+ import { getNativeElementProps, useEventCallback, useMergedRefs } from '@fluentui/react-utilities';
4
+ import { useNestedTreeNavigation, useOpenItemsState } from '../../hooks';
5
+ import { treeDataTypes } from '../../utils/tokens';
6
+ /**
7
+ * Create the state required to render the root level Tree.
8
+ *
9
+ * @param props - props from this instance of Tree
10
+ * @param ref - reference to root HTMLElement of Tree
11
+ */ export function useRootTree(props, ref) {
12
+ warnIfNoProperPropsRootTree(props);
13
+ const { appearance ='subtle' , size ='medium' } = props;
14
+ const [openItems, updateOpenItems] = useOpenItemsState(props);
15
+ const [navigate, navigationRef] = useNestedTreeNavigation();
16
+ const requestOpenChange = (data)=>{
17
+ var _props_onOpenChange;
18
+ (_props_onOpenChange = props.onOpenChange) === null || _props_onOpenChange === void 0 ? void 0 : _props_onOpenChange.call(props, data.event, data);
19
+ if (data.event.isDefaultPrevented()) {
20
+ return;
21
+ }
22
+ return updateOpenItems(data);
23
+ };
24
+ const requestNavigation = (data)=>{
25
+ var _props_onNavigation_unstable;
26
+ (_props_onNavigation_unstable = props.onNavigation_unstable) === null || _props_onNavigation_unstable === void 0 ? void 0 : _props_onNavigation_unstable.call(props, data.event, data);
27
+ if (data.event.isDefaultPrevented()) {
28
+ return;
29
+ }
30
+ navigate(data);
31
+ if (data.type === treeDataTypes.ArrowDown || data.type === treeDataTypes.ArrowUp) {
32
+ data.event.preventDefault();
33
+ }
34
+ };
35
+ const handleTreeItemClick = ({ event , value , itemType , type })=>{
36
+ ReactDOM.unstable_batchedUpdates(()=>{
37
+ requestOpenChange({
38
+ event,
39
+ value,
40
+ open: itemType === 'branch' && !openItems.has(value),
41
+ type,
42
+ target: event.currentTarget
43
+ });
44
+ requestNavigation({
45
+ event,
46
+ value,
47
+ target: event.currentTarget,
48
+ type: treeDataTypes.Click
49
+ });
50
+ });
51
+ };
52
+ const handleTreeItemKeyDown = ({ event , value , type , itemType })=>{
53
+ const open = openItems.has(value);
54
+ switch(type){
55
+ case treeDataTypes.ArrowRight:
56
+ if (itemType === 'leaf') {
57
+ return;
58
+ }
59
+ if (!open) {
60
+ return requestOpenChange({
61
+ event,
62
+ value,
63
+ open: true,
64
+ type: treeDataTypes.ArrowRight,
65
+ target: event.currentTarget
66
+ });
67
+ }
68
+ return requestNavigation({
69
+ event,
70
+ value,
71
+ type,
72
+ target: event.currentTarget
73
+ });
74
+ case treeDataTypes.Enter:
75
+ return requestOpenChange({
76
+ event,
77
+ value,
78
+ open: itemType === 'branch' && !open,
79
+ type: treeDataTypes.Enter,
80
+ target: event.currentTarget
81
+ });
82
+ case treeDataTypes.ArrowLeft:
83
+ if (open && itemType === 'branch') {
84
+ return requestOpenChange({
85
+ event,
86
+ value,
87
+ open: false,
88
+ type: treeDataTypes.ArrowLeft,
89
+ target: event.currentTarget
90
+ });
91
+ }
92
+ return requestNavigation({
93
+ event,
94
+ value,
95
+ target: event.currentTarget,
96
+ type: treeDataTypes.ArrowLeft
97
+ });
98
+ case treeDataTypes.End:
99
+ case treeDataTypes.Home:
100
+ case treeDataTypes.ArrowUp:
101
+ case treeDataTypes.ArrowDown:
102
+ case treeDataTypes.TypeAhead:
103
+ return requestNavigation({
104
+ event,
105
+ value,
106
+ type,
107
+ target: event.currentTarget
108
+ });
109
+ }
110
+ };
111
+ const requestTreeResponse = useEventCallback((request)=>{
112
+ switch(request.event.type){
113
+ case 'click':
114
+ // casting is required here as we're narrowing down the event to only click events
115
+ return handleTreeItemClick(request);
116
+ case 'keydown':
117
+ // casting is required here as we're narrowing down the event to only keyboard events
118
+ return handleTreeItemKeyDown(request);
119
+ }
120
+ });
121
+ return {
122
+ components: {
123
+ root: 'div'
124
+ },
125
+ open: true,
126
+ appearance,
127
+ size,
128
+ level: 1,
129
+ openItems,
130
+ requestTreeResponse,
131
+ root: getNativeElementProps('div', {
132
+ ref: useMergedRefs(navigationRef, ref),
133
+ role: 'tree',
134
+ ...props
135
+ })
136
+ };
137
+ }
138
+ function warnIfNoProperPropsRootTree(props) {
139
+ if (process.env.NODE_ENV === 'development') {
140
+ if (!props['aria-label'] && !props['aria-labelledby']) {
141
+ // eslint-disable-next-line no-console
142
+ console.warn('Tree must have either a `aria-label` or `aria-labelledby` property defined');
143
+ }
144
+ }
145
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["useRootTree.ts"],"sourcesContent":["import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { getNativeElementProps, useEventCallback, useMergedRefs } from '@fluentui/react-utilities';\nimport { TreeOpenChangeData, TreeProps, TreeState, TreeNavigationData_unstable } from './Tree.types';\nimport { useNestedTreeNavigation, useOpenItemsState } from '../../hooks';\nimport { treeDataTypes } from '../../utils/tokens';\nimport { TreeItemRequest } from '../../contexts/index';\n\n/**\n * Create the state required to render the root level Tree.\n *\n * @param props - props from this instance of Tree\n * @param ref - reference to root HTMLElement of Tree\n */\nexport function useRootTree<Value = string>(props: TreeProps<Value>, ref: React.Ref<HTMLElement>): TreeState {\n warnIfNoProperPropsRootTree(props);\n\n const { appearance = 'subtle', size = 'medium' } = props;\n\n const [openItems, updateOpenItems] = useOpenItemsState(props);\n const [navigate, navigationRef] = useNestedTreeNavigation();\n\n const requestOpenChange = (data: TreeOpenChangeData<Value>) => {\n props.onOpenChange?.(data.event, data);\n if (data.event.isDefaultPrevented()) {\n return;\n }\n return updateOpenItems(data);\n };\n\n const requestNavigation = (data: TreeNavigationData_unstable<Value>) => {\n props.onNavigation_unstable?.(data.event, data);\n if (data.event.isDefaultPrevented()) {\n return;\n }\n navigate(data);\n if (data.type === treeDataTypes.ArrowDown || data.type === treeDataTypes.ArrowUp) {\n data.event.preventDefault();\n }\n };\n\n const handleTreeItemClick = ({\n event,\n value,\n itemType,\n type,\n }: Extract<TreeItemRequest<Value>, { type: 'Click' | 'ExpandIconClick' }>) => {\n ReactDOM.unstable_batchedUpdates(() => {\n requestOpenChange({\n event,\n value,\n open: itemType === 'branch' && !openItems.has(value),\n type,\n target: event.currentTarget,\n });\n requestNavigation({ event, value, target: event.currentTarget, type: treeDataTypes.Click });\n });\n };\n\n const handleTreeItemKeyDown = ({\n event,\n value,\n type,\n itemType,\n }: Exclude<TreeItemRequest<Value>, { type: 'Click' | 'ExpandIconClick' }>) => {\n const open = openItems.has(value);\n switch (type) {\n case treeDataTypes.ArrowRight:\n if (itemType === 'leaf') {\n return;\n }\n if (!open) {\n return requestOpenChange({\n event,\n value,\n open: true,\n type: treeDataTypes.ArrowRight,\n target: event.currentTarget,\n });\n }\n return requestNavigation({ event, value, type, target: event.currentTarget });\n case treeDataTypes.Enter:\n return requestOpenChange({\n event,\n value,\n open: itemType === 'branch' && !open,\n type: treeDataTypes.Enter,\n target: event.currentTarget,\n });\n case treeDataTypes.ArrowLeft:\n if (open && itemType === 'branch') {\n return requestOpenChange({\n event,\n value,\n open: false,\n type: treeDataTypes.ArrowLeft,\n target: event.currentTarget,\n });\n }\n return requestNavigation({ event, value, target: event.currentTarget, type: treeDataTypes.ArrowLeft });\n case treeDataTypes.End:\n case treeDataTypes.Home:\n case treeDataTypes.ArrowUp:\n case treeDataTypes.ArrowDown:\n case treeDataTypes.TypeAhead:\n return requestNavigation({ event, value, type, target: event.currentTarget });\n }\n };\n\n const requestTreeResponse = useEventCallback((request: TreeItemRequest<Value>) => {\n switch (request.event.type) {\n case 'click':\n // casting is required here as we're narrowing down the event to only click events\n return handleTreeItemClick(request as Extract<TreeItemRequest<Value>, { type: 'Click' | 'ExpandIconClick' }>);\n case 'keydown':\n // casting is required here as we're narrowing down the event to only keyboard events\n return handleTreeItemKeyDown(request as Exclude<TreeItemRequest<Value>, { type: 'Click' | 'ExpandIconClick' }>);\n }\n });\n\n return {\n components: {\n root: 'div',\n },\n open: true,\n appearance,\n size,\n level: 1,\n openItems,\n requestTreeResponse,\n root: getNativeElementProps('div', {\n ref: useMergedRefs(navigationRef, ref),\n role: 'tree',\n ...props,\n }),\n };\n}\n\nfunction warnIfNoProperPropsRootTree(props: Pick<TreeProps, 'aria-label' | 'aria-labelledby'>) {\n if (process.env.NODE_ENV === 'development') {\n if (!props['aria-label'] && !props['aria-labelledby']) {\n // eslint-disable-next-line no-console\n console.warn('Tree must have either a `aria-label` or `aria-labelledby` property defined');\n }\n }\n}\n"],"names":["React","ReactDOM","getNativeElementProps","useEventCallback","useMergedRefs","useNestedTreeNavigation","useOpenItemsState","treeDataTypes","useRootTree","props","ref","warnIfNoProperPropsRootTree","appearance","size","openItems","updateOpenItems","navigate","navigationRef","requestOpenChange","data","onOpenChange","event","isDefaultPrevented","requestNavigation","onNavigation_unstable","type","ArrowDown","ArrowUp","preventDefault","handleTreeItemClick","value","itemType","unstable_batchedUpdates","open","has","target","currentTarget","Click","handleTreeItemKeyDown","ArrowRight","Enter","ArrowLeft","End","Home","TypeAhead","requestTreeResponse","request","components","root","level","role","process","env","NODE_ENV","console","warn"],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import * as React from 'react';
2
+ import { getNativeElementProps, useMergedRefs } from '@fluentui/react-utilities';
3
+ import { useTreeContext_unstable, useTreeItemContext_unstable } from '../../contexts';
4
+ /**
5
+ * Create the state required to render a sub-level Tree.
6
+ *
7
+ * @param props - props from this instance of Tree
8
+ * @param ref - reference to root HTMLElement of Tree
9
+ */ export function useSubtree(props, ref) {
10
+ const contextAppearance = useTreeContext_unstable((ctx)=>ctx.appearance);
11
+ const contextSize = useTreeContext_unstable((ctx)=>ctx.size);
12
+ const subtreeRef = useTreeItemContext_unstable((ctx)=>ctx.subtreeRef);
13
+ const value = useTreeItemContext_unstable((ctx)=>ctx.value);
14
+ const { appearance =contextAppearance !== null && contextAppearance !== void 0 ? contextAppearance : 'subtle' , size =contextSize !== null && contextSize !== void 0 ? contextSize : 'medium' } = props;
15
+ const parentLevel = useTreeContext_unstable((ctx)=>ctx.level);
16
+ const openItems = useTreeContext_unstable((ctx)=>ctx.openItems);
17
+ const requestTreeResponse = useTreeContext_unstable((ctx)=>ctx.requestTreeResponse);
18
+ const open = openItems.has(value);
19
+ return {
20
+ open,
21
+ components: {
22
+ root: 'div'
23
+ },
24
+ appearance,
25
+ size,
26
+ level: parentLevel + 1,
27
+ root: getNativeElementProps('div', {
28
+ ref: useMergedRefs(ref, subtreeRef),
29
+ role: 'group',
30
+ ...props
31
+ }),
32
+ openItems,
33
+ requestTreeResponse
34
+ };
35
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["useSubtree.ts"],"sourcesContent":["import * as React from 'react';\nimport { getNativeElementProps, useMergedRefs } from '@fluentui/react-utilities';\nimport { TreeProps, TreeState } from './Tree.types';\nimport { useTreeContext_unstable, useTreeItemContext_unstable } from '../../contexts';\n\n/**\n * Create the state required to render a sub-level Tree.\n *\n * @param props - props from this instance of Tree\n * @param ref - reference to root HTMLElement of Tree\n */\nexport function useSubtree(props: TreeProps, ref: React.Ref<HTMLElement>): TreeState {\n const contextAppearance = useTreeContext_unstable(ctx => ctx.appearance);\n const contextSize = useTreeContext_unstable(ctx => ctx.size);\n const subtreeRef = useTreeItemContext_unstable(ctx => ctx.subtreeRef);\n const value = useTreeItemContext_unstable(ctx => ctx.value);\n\n const { appearance = contextAppearance ?? 'subtle', size = contextSize ?? 'medium' } = props;\n\n const parentLevel = useTreeContext_unstable(ctx => ctx.level);\n const openItems = useTreeContext_unstable(ctx => ctx.openItems);\n const requestTreeResponse = useTreeContext_unstable(ctx => ctx.requestTreeResponse);\n\n const open = openItems.has(value);\n\n return {\n open,\n components: {\n root: 'div',\n },\n appearance,\n size,\n level: parentLevel + 1,\n root: getNativeElementProps('div', {\n ref: useMergedRefs(ref, subtreeRef),\n role: 'group',\n ...props,\n }),\n openItems,\n requestTreeResponse,\n };\n}\n"],"names":["React","getNativeElementProps","useMergedRefs","useTreeContext_unstable","useTreeItemContext_unstable","useSubtree","props","ref","contextAppearance","ctx","appearance","contextSize","size","subtreeRef","value","parentLevel","level","openItems","requestTreeResponse","open","has","components","root","role"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,qBAAqB,EAAEC,aAAa,QAAQ,4BAA4B;AAEjF,SAASC,uBAAuB,EAAEC,2BAA2B,QAAQ,iBAAiB;AAEtF;;;;;CAKC,GACD,OAAO,SAASC,WAAWC,KAAgB,EAAEC,GAA2B,EAAa;IACnF,MAAMC,oBAAoBL,wBAAwBM,CAAAA,MAAOA,IAAIC,UAAU;IACvE,MAAMC,cAAcR,wBAAwBM,CAAAA,MAAOA,IAAIG,IAAI;IAC3D,MAAMC,aAAaT,4BAA4BK,CAAAA,MAAOA,IAAII,UAAU;IACpE,MAAMC,QAAQV,4BAA4BK,CAAAA,MAAOA,IAAIK,KAAK;IAE1D,MAAM,EAAEJ,YAAaF,8BAAAA,+BAAAA,oBAAqB,QAAQ,CAAA,EAAEI,MAAOD,wBAAAA,yBAAAA,cAAe,QAAQ,CAAA,EAAE,GAAGL;IAEvF,MAAMS,cAAcZ,wBAAwBM,CAAAA,MAAOA,IAAIO,KAAK;IAC5D,MAAMC,YAAYd,wBAAwBM,CAAAA,MAAOA,IAAIQ,SAAS;IAC9D,MAAMC,sBAAsBf,wBAAwBM,CAAAA,MAAOA,IAAIS,mBAAmB;IAElF,MAAMC,OAAOF,UAAUG,GAAG,CAACN;IAE3B,OAAO;QACLK;QACAE,YAAY;YACVC,MAAM;QACR;QACAZ;QACAE;QACAI,OAAOD,cAAc;QACrBO,MAAMrB,sBAAsB,OAAO;YACjCM,KAAKL,cAAcK,KAAKM;YACxBU,MAAM;YACN,GAAGjB,KAAK;QACV;QACAW;QACAC;IACF;AACF,CAAC"}
@@ -1,7 +1,7 @@
1
- import { getNativeElementProps, useEventCallback, useMergedRefs } from '@fluentui/react-utilities';
1
+ import * as React from 'react';
2
2
  import { useTreeContext_unstable } from '../../contexts';
3
- import { useNestedTreeNavigation, useOpenItemsState } from '../../hooks';
4
- import { treeDataTypes } from '../../utils/tokens';
3
+ import { useSubtree } from './useSubtree';
4
+ import { useRootTree } from './useRootTree';
5
5
  /**
6
6
  * Create the state required to render Tree.
7
7
  *
@@ -10,104 +10,10 @@ import { treeDataTypes } from '../../utils/tokens';
10
10
  *
11
11
  * @param props - props from this instance of Tree
12
12
  * @param ref - reference to root HTMLElement of Tree
13
- */
14
- export const useTree_unstable = (props, ref) => {
15
- const isSubtree = useTreeContext_unstable(ctx => ctx.level > 0);
16
- // as isSubtree is static, this doesn't break rule of hooks
17
- // and if this becomes an issue later on, this can be easily converted
18
- // eslint-disable-next-line react-hooks/rules-of-hooks
19
- return isSubtree ? useSubtree(props, ref) : useRootTree(props, ref);
13
+ */ export const useTree_unstable = (props, ref)=>{
14
+ const isSubtree = useTreeContext_unstable((ctx)=>ctx.level > 0);
15
+ // as isSubtree is static, this doesn't break rule of hooks
16
+ // and if this becomes an issue later on, this can be easily converted
17
+ // eslint-disable-next-line react-hooks/rules-of-hooks
18
+ return isSubtree ? useSubtree(props, ref) : useRootTree(props, ref);
20
19
  };
21
- /**
22
- * Create the state required to render a sub-level Tree.
23
- *
24
- * @param props - props from this instance of Tree
25
- * @param ref - reference to root HTMLElement of Tree
26
- */
27
- function useSubtree(props, ref) {
28
- const contextAppearance = useTreeContext_unstable(ctx => ctx.appearance);
29
- const contextSize = useTreeContext_unstable(ctx => ctx.size);
30
- const {
31
- appearance = contextAppearance !== null && contextAppearance !== void 0 ? contextAppearance : 'subtle',
32
- size = contextSize !== null && contextSize !== void 0 ? contextSize : 'medium'
33
- } = props;
34
- const parentLevel = useTreeContext_unstable(ctx => ctx.level);
35
- const openItems = useTreeContext_unstable(ctx => ctx.openItems);
36
- const requestOpenChange = useTreeContext_unstable(ctx => ctx.requestOpenChange);
37
- const requestNavigation = useTreeContext_unstable(ctx => ctx.requestNavigation);
38
- return {
39
- components: {
40
- root: 'div'
41
- },
42
- appearance,
43
- size,
44
- level: parentLevel + 1,
45
- root: getNativeElementProps('div', {
46
- ref,
47
- role: 'group',
48
- ...props
49
- }),
50
- openItems,
51
- requestOpenChange,
52
- requestNavigation
53
- };
54
- }
55
- /**
56
- * Create the state required to render the root level Tree.
57
- *
58
- * @param props - props from this instance of Tree
59
- * @param ref - reference to root HTMLElement of Tree
60
- */
61
- function useRootTree(props, ref) {
62
- warnIfNoProperPropsRootTree(props);
63
- const {
64
- appearance = 'subtle',
65
- size = 'medium'
66
- } = props;
67
- const [openItems, updateOpenItems] = useOpenItemsState(props);
68
- const [navigate, navigationRef] = useNestedTreeNavigation();
69
- const requestOpenChange = useEventCallback(data => {
70
- var _a;
71
- (_a = props.onOpenChange) === null || _a === void 0 ? void 0 : _a.call(props, data.event, data);
72
- if (data.event.isDefaultPrevented()) {
73
- return;
74
- }
75
- return updateOpenItems(data);
76
- });
77
- const requestNavigation = useEventCallback(data => {
78
- var _a;
79
- (_a = props.onNavigation_unstable) === null || _a === void 0 ? void 0 : _a.call(props, data.event, data);
80
- if (data.event.isDefaultPrevented()) {
81
- return;
82
- }
83
- navigate(data);
84
- if (data.type === treeDataTypes.arrowDown || data.type === treeDataTypes.arrowUp) {
85
- data.event.preventDefault();
86
- }
87
- });
88
- return {
89
- components: {
90
- root: 'div'
91
- },
92
- appearance,
93
- size,
94
- level: 1,
95
- openItems,
96
- requestOpenChange,
97
- requestNavigation,
98
- root: getNativeElementProps('div', {
99
- ref: useMergedRefs(navigationRef, ref),
100
- role: 'tree',
101
- ...props
102
- })
103
- };
104
- }
105
- function warnIfNoProperPropsRootTree(props) {
106
- if (process.env.NODE_ENV === 'development') {
107
- if (!props['aria-label'] && !props['aria-labelledby']) {
108
- // eslint-disable-next-line no-console
109
- console.warn('Tree must have either a `aria-label` or `aria-labelledby` property defined');
110
- }
111
- }
112
- }
113
- //# sourceMappingURL=useTree.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["getNativeElementProps","useEventCallback","useMergedRefs","useTreeContext_unstable","useNestedTreeNavigation","useOpenItemsState","treeDataTypes","useTree_unstable","props","ref","isSubtree","ctx","level","useSubtree","useRootTree","contextAppearance","appearance","contextSize","size","parentLevel","openItems","requestOpenChange","requestNavigation","components","root","role","warnIfNoProperPropsRootTree","updateOpenItems","navigate","navigationRef","data","_a","onOpenChange","call","event","isDefaultPrevented","onNavigation_unstable","type","arrowDown","arrowUp","preventDefault","process","env","NODE_ENV","console","warn"],"sources":["../src/packages/react-components/react-tree/src/components/Tree/useTree.ts"],"sourcesContent":["import * as React from 'react';\nimport { getNativeElementProps, useEventCallback, useMergedRefs } from '@fluentui/react-utilities';\nimport { TreeOpenChangeData, TreeProps, TreeState, TreeNavigationData_unstable } from './Tree.types';\nimport { useTreeContext_unstable } from '../../contexts';\nimport { useNestedTreeNavigation, useOpenItemsState } from '../../hooks';\nimport { treeDataTypes } from '../../utils/tokens';\n\n/**\n * Create the state required to render Tree.\n *\n * The returned state can be modified with hooks such as useTreeStyles_unstable,\n * before being passed to renderTree_unstable.\n *\n * @param props - props from this instance of Tree\n * @param ref - reference to root HTMLElement of Tree\n */\nexport const useTree_unstable = (props: TreeProps, ref: React.Ref<HTMLElement>): TreeState => {\n const isSubtree = useTreeContext_unstable(ctx => ctx.level > 0);\n // as isSubtree is static, this doesn't break rule of hooks\n // and if this becomes an issue later on, this can be easily converted\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return isSubtree ? useSubtree(props, ref) : useRootTree(props, ref);\n};\n\n/**\n * Create the state required to render a sub-level Tree.\n *\n * @param props - props from this instance of Tree\n * @param ref - reference to root HTMLElement of Tree\n */\nfunction useSubtree(props: TreeProps, ref: React.Ref<HTMLElement>): TreeState {\n const contextAppearance = useTreeContext_unstable(ctx => ctx.appearance);\n const contextSize = useTreeContext_unstable(ctx => ctx.size);\n\n const { appearance = contextAppearance ?? 'subtle', size = contextSize ?? 'medium' } = props;\n\n const parentLevel = useTreeContext_unstable(ctx => ctx.level);\n const openItems = useTreeContext_unstable(ctx => ctx.openItems);\n const requestOpenChange = useTreeContext_unstable(ctx => ctx.requestOpenChange);\n const requestNavigation = useTreeContext_unstable(ctx => ctx.requestNavigation);\n\n return {\n components: {\n root: 'div',\n },\n appearance,\n size,\n level: parentLevel + 1,\n root: getNativeElementProps('div', {\n ref,\n role: 'group',\n ...props,\n }),\n openItems,\n requestOpenChange,\n requestNavigation,\n };\n}\n\n/**\n * Create the state required to render the root level Tree.\n *\n * @param props - props from this instance of Tree\n * @param ref - reference to root HTMLElement of Tree\n */\nfunction useRootTree(props: TreeProps, ref: React.Ref<HTMLElement>): TreeState {\n warnIfNoProperPropsRootTree(props);\n\n const { appearance = 'subtle', size = 'medium' } = props;\n\n const [openItems, updateOpenItems] = useOpenItemsState(props);\n const [navigate, navigationRef] = useNestedTreeNavigation();\n\n const requestOpenChange = useEventCallback((data: TreeOpenChangeData) => {\n props.onOpenChange?.(data.event, data);\n if (data.event.isDefaultPrevented()) {\n return;\n }\n return updateOpenItems(data);\n });\n\n const requestNavigation = useEventCallback((data: TreeNavigationData_unstable) => {\n props.onNavigation_unstable?.(data.event, data);\n if (data.event.isDefaultPrevented()) {\n return;\n }\n navigate(data);\n if (data.type === treeDataTypes.arrowDown || data.type === treeDataTypes.arrowUp) {\n data.event.preventDefault();\n }\n });\n\n return {\n components: {\n root: 'div',\n },\n appearance,\n size,\n level: 1,\n openItems,\n requestOpenChange,\n requestNavigation,\n root: getNativeElementProps('div', {\n ref: useMergedRefs(navigationRef, ref),\n role: 'tree',\n ...props,\n }),\n };\n}\n\nfunction warnIfNoProperPropsRootTree(props: Pick<TreeProps, 'aria-label' | 'aria-labelledby'>) {\n if (process.env.NODE_ENV === 'development') {\n if (!props['aria-label'] && !props['aria-labelledby']) {\n // eslint-disable-next-line no-console\n console.warn('Tree must have either a `aria-label` or `aria-labelledby` property defined');\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"sources":["useTree.ts"],"sourcesContent":["import * as React from 'react';\nimport { TreeProps, TreeState } from './Tree.types';\nimport { useTreeContext_unstable } from '../../contexts';\nimport { useSubtree } from './useSubtree';\nimport { useRootTree } from './useRootTree';\n\n/**\n * Create the state required to render Tree.\n *\n * The returned state can be modified with hooks such as useTreeStyles_unstable,\n * before being passed to renderTree_unstable.\n *\n * @param props - props from this instance of Tree\n * @param ref - reference to root HTMLElement of Tree\n */\nexport const useTree_unstable = (props: TreeProps, ref: React.Ref<HTMLElement>): TreeState => {\n const isSubtree = useTreeContext_unstable(ctx => ctx.level > 0);\n // as isSubtree is static, this doesn't break rule of hooks\n // and if this becomes an issue later on, this can be easily converted\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return isSubtree ? useSubtree(props, ref) : useRootTree(props, ref);\n};\n"],"names":["React","useTreeContext_unstable","useSubtree","useRootTree","useTree_unstable","props","ref","isSubtree","ctx","level"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAE/B,SAASC,uBAAuB,QAAQ,iBAAiB;AACzD,SAASC,UAAU,QAAQ,eAAe;AAC1C,SAASC,WAAW,QAAQ,gBAAgB;AAE5C;;;;;;;;CAQC,GACD,OAAO,MAAMC,mBAAmB,CAACC,OAAkBC,MAA2C;IAC5F,MAAMC,YAAYN,wBAAwBO,CAAAA,MAAOA,IAAIC,KAAK,GAAG;IAC7D,2DAA2D;IAC3D,sEAAsE;IACtE,sDAAsD;IACtD,OAAOF,YAAYL,WAAWG,OAAOC,OAAOH,YAAYE,OAAOC,IAAI;AACrE,EAAE"}
@@ -1,26 +1,16 @@
1
1
  export function useTreeContextValues_unstable(state) {
2
- const {
3
- openItems,
4
- level,
5
- appearance,
6
- size,
7
- requestOpenChange,
8
- requestNavigation
9
- } = state;
10
- /**
2
+ const { openItems , level , appearance , size , requestTreeResponse } = state;
3
+ /**
11
4
  * This context is created with "@fluentui/react-context-selector",
12
5
  * there is no sense to memoize it
13
- */
14
- const tree = {
15
- appearance,
16
- size,
17
- level,
18
- openItems,
19
- requestOpenChange,
20
- requestNavigation
21
- };
22
- return {
23
- tree
24
- };
6
+ */ const tree = {
7
+ appearance,
8
+ size,
9
+ level,
10
+ openItems,
11
+ requestTreeResponse
12
+ };
13
+ return {
14
+ tree
15
+ };
25
16
  }
26
- //# sourceMappingURL=useTreeContextValues.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useTreeContextValues_unstable","state","openItems","level","appearance","size","requestOpenChange","requestNavigation","tree"],"sources":["../src/packages/react-components/react-tree/src/components/Tree/useTreeContextValues.ts"],"sourcesContent":["import { TreeContextValue } from '../../contexts';\nimport type { TreeContextValues, TreeState } from './Tree.types';\n\nexport function useTreeContextValues_unstable(state: TreeState): TreeContextValues {\n const { openItems, level, appearance, size, requestOpenChange, requestNavigation } = state;\n /**\n * This context is created with \"@fluentui/react-context-selector\",\n * there is no sense to memoize it\n */\n const tree: TreeContextValue = {\n appearance,\n size,\n level,\n openItems,\n requestOpenChange,\n requestNavigation,\n };\n\n return { tree };\n}\n"],"mappings":"AAGA,OAAM,SAAUA,6BAA6BA,CAACC,KAAgB;EAC5D,MAAM;IAAEC,SAAS;IAAEC,KAAK;IAAEC,UAAU;IAAEC,IAAI;IAAEC,iBAAiB;IAAEC;EAAiB,CAAE,GAAGN,KAAK;EAC1F;;;;EAIA,MAAMO,IAAI,GAAqB;IAC7BJ,UAAU;IACVC,IAAI;IACJF,KAAK;IACLD,SAAS;IACTI,iBAAiB;IACjBC;GACD;EAED,OAAO;IAAEC;EAAI,CAAE;AACjB"}
1
+ {"version":3,"sources":["useTreeContextValues.ts"],"sourcesContent":["import { TreeContextValue } from '../../contexts';\nimport type { TreeContextValues, TreeState } from './Tree.types';\n\nexport function useTreeContextValues_unstable(state: TreeState): TreeContextValues {\n const { openItems, level, appearance, size, requestTreeResponse } = state;\n /**\n * This context is created with \"@fluentui/react-context-selector\",\n * there is no sense to memoize it\n */\n const tree: TreeContextValue = {\n appearance,\n size,\n level,\n openItems,\n requestTreeResponse,\n };\n\n return { tree };\n}\n"],"names":["useTreeContextValues_unstable","state","openItems","level","appearance","size","requestTreeResponse","tree"],"mappings":"AAGA,OAAO,SAASA,8BAA8BC,KAAgB,EAAqB;IACjF,MAAM,EAAEC,UAAS,EAAEC,MAAK,EAAEC,WAAU,EAAEC,KAAI,EAAEC,oBAAmB,EAAE,GAAGL;IACpE;;;GAGC,GACD,MAAMM,OAAyB;QAC7BH;QACAC;QACAF;QACAD;QACAI;IACF;IAEA,OAAO;QAAEC;IAAK;AAChB,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { __styles, mergeClasses, shorthands } from '@griffel/react';
2
+ import { tokens } from '@fluentui/react-theme';
3
+ export const treeClassNames = {
4
+ root: 'fui-Tree'
5
+ };
6
+ const useStyles = /*#__PURE__*/__styles({
7
+ root: {
8
+ mc9l5x: "f22iagw",
9
+ Beiy3e4: "f1vx9l62",
10
+ Belr9w4: "f1j0q4x9"
11
+ },
12
+ subtree: {
13
+ Bh6795r: "fqerorx",
14
+ Bnnss6s: "f1neuvcm",
15
+ xawz: "f1s4axba",
16
+ Ijaq50: "f1na4k6z",
17
+ Br312pm: "fwt6ga",
18
+ nk6f5a: "fi45nfw",
19
+ Bw0ie65: "f10ort2y"
20
+ }
21
+ }, {
22
+ d: [".f22iagw{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}", ".f1vx9l62{-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;}", ".f1j0q4x9{row-gap:var(--spacingVerticalXXS);}", ".fqerorx{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;}", ".f1neuvcm{-webkit-flex-shrink:1;-ms-flex-negative:1;flex-shrink:1;}", ".f1s4axba{-webkit-flex-basis:100%;-ms-flex-preferred-size:100%;flex-basis:100%;}", ".f1na4k6z{grid-row-start:subtree;}", ".fwt6ga{grid-column-start:subtree;}", ".fi45nfw{grid-row-end:subtree;}", ".f10ort2y{grid-column-end:subtree;}"]
23
+ });
24
+ export const useTreeStyles_unstable = state => {
25
+ const styles = useStyles();
26
+ const isSubtree = state.level > 0;
27
+ state.root.className = mergeClasses(treeClassNames.root, styles.root, isSubtree && styles.subtree, state.root.className);
28
+ return state;
29
+ };
30
+ //# sourceMappingURL=useTreeStyles.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__styles","mergeClasses","shorthands","tokens","treeClassNames","root","useStyles","mc9l5x","Beiy3e4","Belr9w4","subtree","Bh6795r","Bnnss6s","xawz","Ijaq50","Br312pm","nk6f5a","Bw0ie65","d","useTreeStyles_unstable","state","styles","isSubtree","level","className"],"sources":["useTreeStyles.styles.js"],"sourcesContent":["import { makeStyles, mergeClasses, shorthands } from '@griffel/react';\nimport { tokens } from '@fluentui/react-theme';\nexport const treeClassNames = {\n root: 'fui-Tree'\n};\nconst useStyles = makeStyles({\n root: {\n display: 'flex',\n flexDirection: 'column',\n rowGap: tokens.spacingVerticalXXS\n },\n subtree: {\n ...shorthands.flex(1, 1, '100%'),\n ...shorthands.gridArea('subtree')\n }\n});\nexport const useTreeStyles_unstable = (state)=>{\n const styles = useStyles();\n const isSubtree = state.level > 0;\n state.root.className = mergeClasses(treeClassNames.root, styles.root, isSubtree && styles.subtree, state.root.className);\n return state;\n};\n"],"mappings":"AAAA,SAAAA,QAAA,EAAqBC,YAAY,EAAEC,UAAU,QAAQ,gBAAgB;AACrE,SAASC,MAAM,QAAQ,uBAAuB;AAC9C,OAAO,MAAMC,cAAc,GAAG;EAC1BC,IAAI,EAAE;AACV,CAAC;AACD,MAAMC,SAAS,gBAAGN,QAAA;EAAAK,IAAA;IAAAE,MAAA;IAAAC,OAAA;IAAAC,OAAA;EAAA;EAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,IAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,OAAA;EAAA;AAAA;EAAAC,CAAA;AAAA,CAUjB,CAAC;AACF,OAAO,MAAMC,sBAAsB,GAAIC,KAAK,IAAG;EAC3C,MAAMC,MAAM,GAAGf,SAAS,CAAC,CAAC;EAC1B,MAAMgB,SAAS,GAAGF,KAAK,CAACG,KAAK,GAAG,CAAC;EACjCH,KAAK,CAACf,IAAI,CAACmB,SAAS,GAAGvB,YAAY,CAACG,cAAc,CAACC,IAAI,EAAEgB,MAAM,CAAChB,IAAI,EAAEiB,SAAS,IAAID,MAAM,CAACX,OAAO,EAAEU,KAAK,CAACf,IAAI,CAACmB,SAAS,CAAC;EACxH,OAAOJ,KAAK;AAChB,CAAC"}
@@ -1,16 +1,23 @@
1
1
  import * as React from 'react';
2
2
  import { useTreeItem_unstable } from './useTreeItem';
3
3
  import { renderTreeItem_unstable } from './renderTreeItem';
4
- import { useTreeItemStyles_unstable } from './useTreeItemStyles';
4
+ import { useTreeItemStyles_unstable } from './useTreeItemStyles.styles';
5
5
  import { useTreeItemContextValues_unstable } from './useTreeItemContextValues';
6
6
  /**
7
- * TreeItem component - TODO: add more docs
8
- */
9
- export const TreeItem = /*#__PURE__*/React.forwardRef((props, ref) => {
10
- const state = useTreeItem_unstable(props, ref);
11
- useTreeItemStyles_unstable(state);
12
- const contextValues = useTreeItemContextValues_unstable(state);
13
- return renderTreeItem_unstable(state, contextValues);
7
+ * The `TreeItem` component represents a single item in a tree.
8
+ * It expects a certain order of children to work properly: the first child should be the node itself,
9
+ * and the second child should be a nested subtree in the form of another Tree component or a standalone TreeItem.
10
+ * This order follows the same order as document traversal for the TreeWalker API in JavaScript:
11
+ * https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.
12
+ * The content and layout of a TreeItem can be defined using the TreeItemLayout or TreeItemPersonaLayout component,
13
+ * which should be used as a direct child of TreeItem.
14
+ *
15
+ * When a TreeItem has nested child subtree, an expand/collapse control is displayed,
16
+ * allowing the user to show or hide the children.
17
+ */ export const TreeItem = /*#__PURE__*/ React.forwardRef((props, ref)=>{
18
+ const state = useTreeItem_unstable(props, ref);
19
+ useTreeItemStyles_unstable(state);
20
+ const contextValues = useTreeItemContextValues_unstable(state);
21
+ return renderTreeItem_unstable(state, contextValues);
14
22
  });
15
23
  TreeItem.displayName = 'TreeItem';
16
- //# sourceMappingURL=TreeItem.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","useTreeItem_unstable","renderTreeItem_unstable","useTreeItemStyles_unstable","useTreeItemContextValues_unstable","TreeItem","forwardRef","props","ref","state","contextValues","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,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,oBAAoB,QAAQ,eAAe;AACpD,SAASC,uBAAuB,QAAQ,kBAAkB;AAC1D,SAASC,0BAA0B,QAAQ,qBAAqB;AAGhE,SAASC,iCAAiC,QAAQ,4BAA4B;AAE9E;;;AAGA,OAAO,MAAMC,QAAQ,gBAAuCL,KAAK,CAACM,UAAU,CAAC,CAACC,KAAK,EAAEC,GAAG,KAAI;EAC1F,MAAMC,KAAK,GAAGR,oBAAoB,CAACM,KAAK,EAAEC,GAAG,CAAC;EAE9CL,0BAA0B,CAACM,KAAK,CAAC;EACjC,MAAMC,aAAa,GAAGN,iCAAiC,CAACK,KAAK,CAAC;EAC9D,OAAOP,uBAAuB,CAACO,KAAK,EAAEC,aAAa,CAAC;AACtD,CAAC,CAAC;AAEFL,QAAQ,CAACM,WAAW,GAAG,UAAU"}
1
+ {"version":3,"sources":["TreeItem.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useTreeItem_unstable } from './useTreeItem';\nimport { renderTreeItem_unstable } from './renderTreeItem';\nimport { useTreeItemStyles_unstable } from './useTreeItemStyles.styles';\nimport type { TreeItemProps } from './TreeItem.types';\nimport type { ForwardRefComponent } from '@fluentui/react-utilities';\nimport { useTreeItemContextValues_unstable } from './useTreeItemContextValues';\n\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 */\nexport const TreeItem = 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}) as ForwardRefComponent<TreeItemProps> & (<Value = string>(props: TreeItemProps<Value>) => JSX.Element);\n\nTreeItem.displayName = 'TreeItem';\n"],"names":["React","useTreeItem_unstable","renderTreeItem_unstable","useTreeItemStyles_unstable","useTreeItemContextValues_unstable","TreeItem","forwardRef","props","ref","state","contextValues","displayName"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,oBAAoB,QAAQ,gBAAgB;AACrD,SAASC,uBAAuB,QAAQ,mBAAmB;AAC3D,SAASC,0BAA0B,QAAQ,6BAA6B;AAGxE,SAASC,iCAAiC,QAAQ,6BAA6B;AAE/E;;;;;;;;;;;CAWC,GACD,OAAO,MAAMC,yBAAWL,MAAMM,UAAU,CAAC,CAACC,OAAOC,MAAQ;IACvD,MAAMC,QAAQR,qBAAqBM,OAAOC;IAE1CL,2BAA2BM;IAC3B,MAAMC,gBAAgBN,kCAAkCK;IACxD,OAAOP,wBAAwBO,OAAOC;AACxC,GAA0G;AAE1GL,SAASM,WAAW,GAAG"}