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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (244) hide show
  1. package/CHANGELOG.json +1073 -1
  2. package/CHANGELOG.md +295 -2
  3. package/dist/index.d.ts +153 -91
  4. package/lib/Tree.js +0 -1
  5. package/lib/Tree.js.map +1 -1
  6. package/lib/TreeItem.js +0 -1
  7. package/lib/TreeItem.js.map +1 -1
  8. package/lib/TreeItemLayout.js +0 -1
  9. package/lib/TreeItemLayout.js.map +1 -1
  10. package/lib/TreeItemPersonaLayout.js +0 -1
  11. package/lib/TreeItemPersonaLayout.js.map +1 -1
  12. package/lib/components/Tree/Tree.js +6 -8
  13. package/lib/components/Tree/Tree.js.map +1 -1
  14. package/lib/components/Tree/Tree.types.js +1 -2
  15. package/lib/components/Tree/Tree.types.js.map +1 -1
  16. package/lib/components/Tree/index.js +1 -2
  17. package/lib/components/Tree/index.js.map +1 -1
  18. package/lib/components/Tree/renderTree.js +7 -13
  19. package/lib/components/Tree/renderTree.js.map +1 -1
  20. package/lib/components/Tree/useRootTree.js +145 -0
  21. package/lib/components/Tree/useRootTree.js.map +1 -0
  22. package/lib/components/Tree/useSubtree.js +35 -0
  23. package/lib/components/Tree/useSubtree.js.map +1 -0
  24. package/lib/components/Tree/useTree.js +9 -103
  25. package/lib/components/Tree/useTree.js.map +1 -1
  26. package/lib/components/Tree/useTreeContextValues.js +12 -22
  27. package/lib/components/Tree/useTreeContextValues.js.map +1 -1
  28. package/lib/components/Tree/useTreeStyles.styles.js +30 -0
  29. package/lib/components/Tree/useTreeStyles.styles.js.map +1 -0
  30. package/lib/components/TreeItem/TreeItem.js +16 -9
  31. package/lib/components/TreeItem/TreeItem.js.map +1 -1
  32. package/lib/components/TreeItem/TreeItem.types.js +1 -2
  33. package/lib/components/TreeItem/TreeItem.types.js.map +1 -1
  34. package/lib/components/TreeItem/index.js +1 -2
  35. package/lib/components/TreeItem/index.js.map +1 -1
  36. package/lib/components/TreeItem/renderTreeItem.js +7 -25
  37. package/lib/components/TreeItem/renderTreeItem.js.map +1 -1
  38. package/lib/components/TreeItem/useTreeItem.js +116 -234
  39. package/lib/components/TreeItem/useTreeItem.js.map +1 -1
  40. package/lib/components/TreeItem/useTreeItemContextValues.js +18 -16
  41. package/lib/components/TreeItem/useTreeItemContextValues.js.map +1 -1
  42. package/lib/components/TreeItem/useTreeItemStyles.styles.js +100 -0
  43. package/lib/components/TreeItem/useTreeItemStyles.styles.js.map +1 -0
  44. package/lib/components/TreeItemChevron.js +24 -0
  45. package/lib/components/TreeItemChevron.js.map +1 -0
  46. package/lib/components/TreeItemLayout/TreeItemLayout.js +8 -8
  47. package/lib/components/TreeItemLayout/TreeItemLayout.js.map +1 -1
  48. package/lib/components/TreeItemLayout/TreeItemLayout.types.js +1 -2
  49. package/lib/components/TreeItemLayout/TreeItemLayout.types.js.map +1 -1
  50. package/lib/components/TreeItemLayout/index.js +1 -2
  51. package/lib/components/TreeItemLayout/index.js.map +1 -1
  52. package/lib/components/TreeItemLayout/renderTreeItemLayout.js +8 -21
  53. package/lib/components/TreeItemLayout/renderTreeItemLayout.js.map +1 -1
  54. package/lib/components/TreeItemLayout/useTreeItemLayout.js +58 -39
  55. package/lib/components/TreeItemLayout/useTreeItemLayout.js.map +1 -1
  56. package/lib/components/TreeItemLayout/useTreeItemLayoutStyles.styles.js +191 -0
  57. package/lib/components/TreeItemLayout/useTreeItemLayoutStyles.styles.js.map +1 -0
  58. package/lib/components/TreeItemPersonaLayout/TreeItemPersonaLayout.js +9 -9
  59. package/lib/components/TreeItemPersonaLayout/TreeItemPersonaLayout.js.map +1 -1
  60. package/lib/components/TreeItemPersonaLayout/TreeItemPersonaLayout.types.js +1 -2
  61. package/lib/components/TreeItemPersonaLayout/TreeItemPersonaLayout.types.js.map +1 -1
  62. package/lib/components/TreeItemPersonaLayout/index.js +1 -2
  63. package/lib/components/TreeItemPersonaLayout/index.js.map +1 -1
  64. package/lib/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js +10 -27
  65. package/lib/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js.map +1 -1
  66. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js +35 -48
  67. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js.map +1 -1
  68. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutContextValues.js +9 -10
  69. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutContextValues.js.map +1 -1
  70. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.styles.js +206 -0
  71. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.styles.js.map +1 -0
  72. package/lib/contexts/index.js +0 -1
  73. package/lib/contexts/index.js.map +1 -1
  74. package/lib/contexts/treeContext.js +9 -14
  75. package/lib/contexts/treeContext.js.map +1 -1
  76. package/lib/contexts/treeItemContext.js +13 -10
  77. package/lib/contexts/treeItemContext.js.map +1 -1
  78. package/lib/hooks/index.js +0 -1
  79. package/lib/hooks/index.js.map +1 -1
  80. package/lib/hooks/useFlatTree.js +81 -35
  81. package/lib/hooks/useFlatTree.js.map +1 -1
  82. package/lib/hooks/useFlatTreeNavigation.js +65 -62
  83. package/lib/hooks/useFlatTreeNavigation.js.map +1 -1
  84. package/lib/hooks/useHTMLElementWalker.js +78 -76
  85. package/lib/hooks/useHTMLElementWalker.js.map +1 -1
  86. package/lib/hooks/useNestedTreeNavigation.js +49 -49
  87. package/lib/hooks/useNestedTreeNavigation.js.map +1 -1
  88. package/lib/hooks/useOpenItemsState.js +21 -15
  89. package/lib/hooks/useOpenItemsState.js.map +1 -1
  90. package/lib/hooks/useRovingTabIndexes.js +46 -45
  91. package/lib/hooks/useRovingTabIndexes.js.map +1 -1
  92. package/lib/index.js +0 -1
  93. package/lib/index.js.map +1 -1
  94. package/lib/utils/ImmutableSet.js +27 -30
  95. package/lib/utils/ImmutableSet.js.map +1 -1
  96. package/lib/utils/assert.js +5 -5
  97. package/lib/utils/assert.js.map +1 -1
  98. package/lib/utils/createFlatTreeItems.js +113 -0
  99. package/lib/utils/createFlatTreeItems.js.map +1 -0
  100. package/lib/utils/flattenTree.js +58 -28
  101. package/lib/utils/flattenTree.js.map +1 -1
  102. package/lib/utils/getTreeItemValueFromElement.js +4 -0
  103. package/lib/utils/getTreeItemValueFromElement.js.map +1 -0
  104. package/lib/utils/nextTypeAheadElement.js +11 -12
  105. package/lib/utils/nextTypeAheadElement.js.map +1 -1
  106. package/lib/utils/normalizeOpenItems.js +6 -5
  107. package/lib/utils/normalizeOpenItems.js.map +1 -1
  108. package/lib/utils/tokens.js +13 -14
  109. package/lib/utils/tokens.js.map +1 -1
  110. package/lib/utils/treeItemFilter.js +2 -3
  111. package/lib/utils/treeItemFilter.js.map +1 -1
  112. package/lib-commonjs/Tree.js +3 -5
  113. package/lib-commonjs/Tree.js.map +1 -1
  114. package/lib-commonjs/TreeItem.js +3 -5
  115. package/lib-commonjs/TreeItem.js.map +1 -1
  116. package/lib-commonjs/TreeItemLayout.js +3 -5
  117. package/lib-commonjs/TreeItemLayout.js.map +1 -1
  118. package/lib-commonjs/TreeItemPersonaLayout.js +3 -5
  119. package/lib-commonjs/TreeItemPersonaLayout.js.map +1 -1
  120. package/lib-commonjs/components/Tree/Tree.js +17 -23
  121. package/lib-commonjs/components/Tree/Tree.js.map +1 -1
  122. package/lib-commonjs/components/Tree/Tree.types.js +3 -3
  123. package/lib-commonjs/components/Tree/Tree.types.js.map +1 -1
  124. package/lib-commonjs/components/Tree/index.js +8 -10
  125. package/lib-commonjs/components/Tree/index.js.map +1 -1
  126. package/lib-commonjs/components/Tree/renderTree.js +14 -19
  127. package/lib-commonjs/components/Tree/renderTree.js.map +1 -1
  128. package/lib-commonjs/components/Tree/useRootTree.js +149 -0
  129. package/lib-commonjs/components/Tree/useRootTree.js.map +1 -0
  130. package/lib-commonjs/components/Tree/useSubtree.js +39 -0
  131. package/lib-commonjs/components/Tree/useSubtree.js.map +1 -0
  132. package/lib-commonjs/components/Tree/useTree.js +16 -116
  133. package/lib-commonjs/components/Tree/useTree.js.map +1 -1
  134. package/lib-commonjs/components/Tree/useTreeContextValues.js +17 -26
  135. package/lib-commonjs/components/Tree/useTreeContextValues.js.map +1 -1
  136. package/lib-commonjs/components/Tree/useTreeStyles.styles.js +53 -0
  137. package/lib-commonjs/components/Tree/useTreeStyles.styles.js.map +1 -0
  138. package/lib-commonjs/components/TreeItem/TreeItem.js +17 -18
  139. package/lib-commonjs/components/TreeItem/TreeItem.js.map +1 -1
  140. package/lib-commonjs/components/TreeItem/TreeItem.types.js +3 -4
  141. package/lib-commonjs/components/TreeItem/TreeItem.types.js.map +1 -1
  142. package/lib-commonjs/components/TreeItem/index.js +7 -9
  143. package/lib-commonjs/components/TreeItem/index.js.map +1 -1
  144. package/lib-commonjs/components/TreeItem/renderTreeItem.js +14 -33
  145. package/lib-commonjs/components/TreeItem/renderTreeItem.js.map +1 -1
  146. package/lib-commonjs/components/TreeItem/useTreeItem.js +126 -251
  147. package/lib-commonjs/components/TreeItem/useTreeItem.js.map +1 -1
  148. package/lib-commonjs/components/TreeItem/useTreeItemContextValues.js +23 -20
  149. package/lib-commonjs/components/TreeItem/useTreeItemContextValues.js.map +1 -1
  150. package/lib-commonjs/components/TreeItem/useTreeItemStyles.styles.js +202 -0
  151. package/lib-commonjs/components/TreeItem/useTreeItemStyles.styles.js.map +1 -0
  152. package/lib-commonjs/components/TreeItemChevron.js +33 -0
  153. package/lib-commonjs/components/TreeItemChevron.js.map +1 -0
  154. package/lib-commonjs/components/TreeItemLayout/TreeItemLayout.js +15 -16
  155. package/lib-commonjs/components/TreeItemLayout/TreeItemLayout.js.map +1 -1
  156. package/lib-commonjs/components/TreeItemLayout/TreeItemLayout.types.js +1 -3
  157. package/lib-commonjs/components/TreeItemLayout/TreeItemLayout.types.js.map +1 -1
  158. package/lib-commonjs/components/TreeItemLayout/index.js +7 -9
  159. package/lib-commonjs/components/TreeItemLayout/index.js.map +1 -1
  160. package/lib-commonjs/components/TreeItemLayout/renderTreeItemLayout.js +14 -28
  161. package/lib-commonjs/components/TreeItemLayout/renderTreeItemLayout.js.map +1 -1
  162. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayout.js +64 -52
  163. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayout.js.map +1 -1
  164. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayoutStyles.styles.js +321 -0
  165. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayoutStyles.styles.js.map +1 -0
  166. package/lib-commonjs/components/TreeItemPersonaLayout/TreeItemPersonaLayout.js +17 -18
  167. package/lib-commonjs/components/TreeItemPersonaLayout/TreeItemPersonaLayout.js.map +1 -1
  168. package/lib-commonjs/components/TreeItemPersonaLayout/TreeItemPersonaLayout.types.js +1 -3
  169. package/lib-commonjs/components/TreeItemPersonaLayout/TreeItemPersonaLayout.types.js.map +1 -1
  170. package/lib-commonjs/components/TreeItemPersonaLayout/index.js +7 -9
  171. package/lib-commonjs/components/TreeItemPersonaLayout/index.js.map +1 -1
  172. package/lib-commonjs/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js +17 -35
  173. package/lib-commonjs/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js.map +1 -1
  174. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js +42 -61
  175. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js.map +1 -1
  176. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutContextValues.js +16 -15
  177. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutContextValues.js.map +1 -1
  178. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.styles.js +375 -0
  179. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.styles.js.map +1 -0
  180. package/lib-commonjs/contexts/index.js +4 -6
  181. package/lib-commonjs/contexts/index.js.map +1 -1
  182. package/lib-commonjs/contexts/treeContext.js +23 -18
  183. package/lib-commonjs/contexts/treeContext.js.map +1 -1
  184. package/lib-commonjs/contexts/treeItemContext.js +27 -13
  185. package/lib-commonjs/contexts/treeItemContext.js.map +1 -1
  186. package/lib-commonjs/hooks/index.js +5 -7
  187. package/lib-commonjs/hooks/index.js.map +1 -1
  188. package/lib-commonjs/hooks/useFlatTree.js +88 -52
  189. package/lib-commonjs/hooks/useFlatTree.js.map +1 -1
  190. package/lib-commonjs/hooks/useFlatTreeNavigation.js +76 -72
  191. package/lib-commonjs/hooks/useFlatTreeNavigation.js.map +1 -1
  192. package/lib-commonjs/hooks/useHTMLElementWalker.js +92 -83
  193. package/lib-commonjs/hooks/useHTMLElementWalker.js.map +1 -1
  194. package/lib-commonjs/hooks/useNestedTreeNavigation.js +59 -58
  195. package/lib-commonjs/hooks/useNestedTreeNavigation.js.map +1 -1
  196. package/lib-commonjs/hooks/useOpenItemsState.js +30 -22
  197. package/lib-commonjs/hooks/useOpenItemsState.js.map +1 -1
  198. package/lib-commonjs/hooks/useRovingTabIndexes.js +54 -53
  199. package/lib-commonjs/hooks/useRovingTabIndexes.js.map +1 -1
  200. package/lib-commonjs/index.js +46 -181
  201. package/lib-commonjs/index.js.map +1 -1
  202. package/lib-commonjs/utils/ImmutableSet.js +37 -38
  203. package/lib-commonjs/utils/ImmutableSet.js.map +1 -1
  204. package/lib-commonjs/utils/assert.js +11 -9
  205. package/lib-commonjs/utils/assert.js.map +1 -1
  206. package/lib-commonjs/utils/createFlatTreeItems.js +127 -0
  207. package/lib-commonjs/utils/createFlatTreeItems.js.map +1 -0
  208. package/lib-commonjs/utils/flattenTree.js +25 -33
  209. package/lib-commonjs/utils/flattenTree.js.map +1 -1
  210. package/lib-commonjs/utils/getTreeItemValueFromElement.js +18 -0
  211. package/lib-commonjs/utils/getTreeItemValueFromElement.js.map +1 -0
  212. package/lib-commonjs/utils/nextTypeAheadElement.js +16 -16
  213. package/lib-commonjs/utils/nextTypeAheadElement.js.map +1 -1
  214. package/lib-commonjs/utils/normalizeOpenItems.js +11 -9
  215. package/lib-commonjs/utils/normalizeOpenItems.js.map +1 -1
  216. package/lib-commonjs/utils/tokens.js +28 -20
  217. package/lib-commonjs/utils/tokens.js.map +1 -1
  218. package/lib-commonjs/utils/treeItemFilter.js +7 -7
  219. package/lib-commonjs/utils/treeItemFilter.js.map +1 -1
  220. package/package.json +23 -17
  221. package/lib/components/Tree/useTreeStyles.js +0 -20
  222. package/lib/components/Tree/useTreeStyles.js.map +0 -1
  223. package/lib/components/TreeItem/useTreeItemStyles.js +0 -203
  224. package/lib/components/TreeItem/useTreeItemStyles.js.map +0 -1
  225. package/lib/components/TreeItemLayout/useTreeItemLayoutStyles.js +0 -98
  226. package/lib/components/TreeItemLayout/useTreeItemLayoutStyles.js.map +0 -1
  227. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.js +0 -115
  228. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.js.map +0 -1
  229. package/lib/utils/createUnfilteredFlatTree.js +0 -77
  230. package/lib/utils/createUnfilteredFlatTree.js.map +0 -1
  231. package/lib/utils/createVisibleFlatTree.js +0 -80
  232. package/lib/utils/createVisibleFlatTree.js.map +0 -1
  233. package/lib-commonjs/components/Tree/useTreeStyles.js +0 -27
  234. package/lib-commonjs/components/Tree/useTreeStyles.js.map +0 -1
  235. package/lib-commonjs/components/TreeItem/useTreeItemStyles.js +0 -210
  236. package/lib-commonjs/components/TreeItem/useTreeItemStyles.js.map +0 -1
  237. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayoutStyles.js +0 -105
  238. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayoutStyles.js.map +0 -1
  239. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.js +0 -122
  240. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.js.map +0 -1
  241. package/lib-commonjs/utils/createUnfilteredFlatTree.js +0 -84
  242. package/lib-commonjs/utils/createUnfilteredFlatTree.js.map +0 -1
  243. package/lib-commonjs/utils/createVisibleFlatTree.js +0 -87
  244. package/lib-commonjs/utils/createVisibleFlatTree.js.map +0 -1
@@ -1,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,132 @@
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 _tokens = require("../../utils/tokens");
15
+ const _getTreeItemValueFromElement = require("../../utils/getTreeItemValueFromElement");
16
+ function useTreeItem_unstable(props, ref) {
17
+ var _props_value;
18
+ const contextLevel = (0, _index.useTreeContext_unstable)((ctx)=>ctx.level);
19
+ const value = (0, _reactUtilities.useId)('fuiTreeItemValue-', (_props_value = props.value) === null || _props_value === void 0 ? void 0 : _props_value.toString());
20
+ const { onClick , onKeyDown , as ='div' , itemType ='leaf' , 'aria-level': level = contextLevel , ...rest } = props;
21
+ const requestTreeResponse = (0, _index.useTreeContext_unstable)((ctx)=>ctx.requestTreeResponse);
22
+ const [isActionsVisible, setActionsVisible] = _react.useState(false);
23
+ const [isAsideVisible, setAsideVisible] = _react.useState(true);
24
+ const handleActionsRef = (actions)=>{
25
+ setAsideVisible(actions === null);
26
+ };
27
+ const open = (0, _index.useTreeContext_unstable)((ctx)=>ctx.openItems.has(value));
28
+ const actionsRef = _react.useRef(null);
29
+ const expandIconRef = _react.useRef(null);
30
+ const layoutRef = _react.useRef(null);
31
+ const subtreeRef = _react.useRef(null);
32
+ const handleClick = (0, _reactUtilities.useEventCallback)((event)=>{
33
+ onClick === null || onClick === void 0 ? void 0 : onClick(event);
34
+ if (event.isDefaultPrevented()) {
35
+ return;
36
+ }
37
+ const isEventFromActions = actionsRef.current && (0, _reactPortal.elementContains)(actionsRef.current, event.target);
38
+ if (isEventFromActions) {
39
+ return;
40
+ }
41
+ const isEventFromSubtree = subtreeRef.current && (0, _reactPortal.elementContains)(subtreeRef.current, event.target);
42
+ if (isEventFromSubtree) {
43
+ return;
44
+ }
45
+ const isFromExpandIcon = expandIconRef.current && (0, _reactPortal.elementContains)(expandIconRef.current, event.target);
46
+ requestTreeResponse({
47
+ event,
48
+ itemType,
49
+ value,
50
+ type: isFromExpandIcon ? _tokens.treeDataTypes.ExpandIconClick : _tokens.treeDataTypes.Click
51
+ });
95
52
  });
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
53
+ const handleKeyDown = (0, _reactUtilities.useEventCallback)((event)=>{
54
+ onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(event);
55
+ if (event.isDefaultPrevented()) {
56
+ return;
57
+ }
58
+ if (event.currentTarget !== event.target) {
59
+ return;
60
+ }
61
+ switch(event.key){
62
+ case _tokens.treeDataTypes.End:
63
+ case _tokens.treeDataTypes.Home:
64
+ case _tokens.treeDataTypes.Enter:
65
+ case _tokens.treeDataTypes.ArrowUp:
66
+ case _tokens.treeDataTypes.ArrowDown:
67
+ case _tokens.treeDataTypes.ArrowLeft:
68
+ case _tokens.treeDataTypes.ArrowRight:
69
+ return requestTreeResponse({
70
+ event,
71
+ value,
72
+ itemType,
73
+ type: event.key
74
+ });
75
+ }
76
+ const isTypeAheadCharacter = event.key.length === 1 && event.key.match(/\w/) && !event.altKey && !event.ctrlKey && !event.metaKey;
77
+ if (isTypeAheadCharacter) {
78
+ requestTreeResponse({
79
+ event,
80
+ value,
81
+ itemType,
82
+ type: _tokens.treeDataTypes.TypeAhead
83
+ });
84
+ }
113
85
  });
114
- requestNavigation({
115
- event,
116
- target: event.currentTarget,
117
- type: tokens_1.treeDataTypes.click
86
+ const handleActionsVisible = (0, _reactUtilities.useEventCallback)((event)=>{
87
+ const isTargetFromSubtree = Boolean(subtreeRef.current && (0, _reactPortal.elementContains)(subtreeRef.current, event.target));
88
+ if (!isTargetFromSubtree) {
89
+ setActionsVisible(true);
90
+ }
118
91
  });
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
158
- });
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
92
+ const handleActionsInvisible = (0, _reactUtilities.useEventCallback)((event)=>{
93
+ const isTargetFromSubtree = Boolean(subtreeRef.current && (0, _reactPortal.elementContains)(subtreeRef.current, event.target));
94
+ const isRelatedTargetFromActions = Boolean(actionsRef.current && (0, _reactPortal.elementContains)(actionsRef.current, event.relatedTarget));
95
+ if (isRelatedTargetFromActions) {
96
+ return setActionsVisible(true);
97
+ }
98
+ if (!isTargetFromSubtree) {
99
+ return setActionsVisible(false);
100
+ }
101
+ });
102
+ return {
103
+ value,
104
+ open,
105
+ subtreeRef,
106
+ actionsRef: (0, _reactUtilities.useMergedRefs)(actionsRef, handleActionsRef),
107
+ expandIconRef,
108
+ layoutRef,
109
+ itemType,
110
+ isActionsVisible,
111
+ isAsideVisible,
112
+ level,
113
+ components: {
114
+ root: 'div'
115
+ },
116
+ root: (0, _reactUtilities.getNativeElementProps)(as, {
117
+ tabIndex: -1,
118
+ ...rest,
119
+ ref,
120
+ role: 'treeitem',
121
+ 'aria-level': level,
122
+ [_getTreeItemValueFromElement.dataTreeItemValueAttrName]: value,
123
+ 'aria-expanded': itemType === 'branch' ? open : undefined,
124
+ onClick: handleClick,
125
+ onKeyDown: handleKeyDown,
126
+ onMouseOver: handleActionsVisible,
127
+ onFocus: handleActionsVisible,
128
+ onMouseOut: handleActionsInvisible,
129
+ onBlur: handleActionsInvisible
130
+ })
131
+ };
132
+ }
@@ -1 +1 @@
1
- {"version":3,"names":["React","require","react_utilities_1","react_icons_1","react_shared_contexts_1","react_utilities_2","useTreeItemStyles_1","keyboard_keys_1","react_utilities_3","react_portal_1","index_1","tokens_1","useTreeItem_unstable","props","ref","children","subtreeChildren","Children","toArray","contextLevel","useTreeContext_unstable","ctx","level","content","subtree","expandIcon","leaf","isLeaf","undefined","actions","as","onClick","onKeyDown","rest","requestOpenChange","requestNavigation","id","useId","isBranch","open","openItems","has","dir","targetDocument","useFluent_unstable","expandIconRotation","actionsRef","useRef","expandIconRef","subtreeRef","handleArrowRight","event","type","treeDataTypes","arrowRight","target","currentTarget","handleArrowLeft","arrowLeft","handleEnter","enter","handleClick","useEventCallback","isEventFromActions","current","elementContains","isEventFromSubtree","isFromExpandIcon","expandIconClick","click","handleKeyDown","isDefaultPrevented","key","Enter","ArrowRight","ArrowLeft","End","end","Home","home","ArrowUp","arrowUp","ArrowDown","arrowDown","isTypeAheadCharacter","length","match","altKey","ctrlKey","metaKey","typeAhead","isActionsVisible","setActionsVisible","useState","showActions","hideActions","useEffect","handleFocusOut","relatedTarget","addEventListener","passive","removeEventListener","buttonSize","components","root","resolveShorthand","required","Boolean","defaultProps","useMergedRefs","isResolvedShorthand","getNativeElementProps","tabIndex","role","onMouseOver","onFocus","onMouseOut","onBlur","createElement","ChevronRight12Regular","style","expandIconInlineStyles","exports"],"sources":["../src/packages/react-components/react-tree/src/components/TreeItem/useTreeItem.tsx"],"sourcesContent":["import * as React from 'react';\nimport { getNativeElementProps, isResolvedShorthand, resolveShorthand, useId } from '@fluentui/react-utilities';\nimport { ChevronRight12Regular } from '@fluentui/react-icons';\nimport { useFluent_unstable } from '@fluentui/react-shared-contexts';\nimport { useEventCallback } from '@fluentui/react-utilities';\nimport { expandIconInlineStyles } from './useTreeItemStyles';\nimport { ArrowDown, ArrowLeft, ArrowRight, ArrowUp, End, Enter, Home } from '@fluentui/keyboard-keys';\nimport { useMergedRefs } from '@fluentui/react-utilities';\nimport { elementContains } from '@fluentui/react-portal';\nimport type { TreeItemProps, TreeItemState } from './TreeItem.types';\nimport { useTreeContext_unstable } from '../../contexts/index';\nimport { treeDataTypes } from '../../utils/tokens';\n\n/**\n * Create the state required to render TreeItem.\n *\n * The returned state can be modified with hooks such as useTreeItemStyles_unstable,\n * before being passed to renderTreeItem_unstable.\n *\n * @param props - props from this instance of TreeItem\n * @param ref - reference to root HTMLElement of TreeItem\n */\nexport const useTreeItem_unstable = (props: TreeItemProps, ref: React.Ref<HTMLDivElement>): TreeItemState => {\n const [children, subtreeChildren] = React.Children.toArray(props.children);\n\n const contextLevel = useTreeContext_unstable(ctx => ctx.level);\n const {\n content,\n subtree,\n expandIcon,\n leaf: isLeaf = subtreeChildren === undefined,\n actions,\n as = 'div',\n onClick,\n onKeyDown,\n ['aria-level']: level = contextLevel,\n ...rest\n } = props;\n\n const requestOpenChange = useTreeContext_unstable(ctx => ctx.requestOpenChange);\n const requestNavigation = useTreeContext_unstable(ctx => ctx.requestNavigation);\n\n const id = useId('fui-TreeItem-', props.id);\n\n const isBranch = !isLeaf;\n\n const open = useTreeContext_unstable(ctx => isBranch && ctx.openItems.has(id));\n const { dir, targetDocument } = useFluent_unstable();\n const expandIconRotation = open ? 90 : dir !== 'rtl' ? 0 : 180;\n\n const actionsRef = React.useRef<HTMLElement>(null);\n const expandIconRef = React.useRef<HTMLElement>(null);\n const subtreeRef = React.useRef<HTMLElement>(null);\n\n const handleArrowRight = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (!open && isBranch) {\n return requestOpenChange({ event, open: true, type: treeDataTypes.arrowRight, target: event.currentTarget });\n }\n if (open && isBranch) {\n return requestNavigation({ event, type: treeDataTypes.arrowRight, target: event.currentTarget });\n }\n };\n const handleArrowLeft = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (open && isBranch) {\n return requestOpenChange({ event, open: false, type: treeDataTypes.arrowLeft, target: event.currentTarget });\n }\n if (!open && level > 1) {\n return requestNavigation({ event, target: event.currentTarget, type: treeDataTypes.arrowLeft });\n }\n };\n const handleEnter = (event: React.KeyboardEvent<HTMLDivElement>) => {\n requestOpenChange({ event, open: isLeaf ? open : !open, type: treeDataTypes.enter, target: event.currentTarget });\n };\n\n const handleClick = useEventCallback((event: React.MouseEvent<HTMLDivElement>) => {\n onClick?.(event);\n\n const isEventFromActions = actionsRef.current && elementContains(actionsRef.current, event.target as Node);\n if (isEventFromActions) {\n return;\n }\n const isEventFromSubtree = subtreeRef.current && elementContains(subtreeRef.current, event.target as Node);\n if (isEventFromSubtree) {\n return;\n }\n const isFromExpandIcon = expandIconRef.current && elementContains(expandIconRef.current, event.target as Node);\n requestOpenChange({\n event,\n open: isLeaf ? open : !open,\n type: isFromExpandIcon ? treeDataTypes.expandIconClick : treeDataTypes.click,\n target: event.currentTarget,\n });\n requestNavigation({ event, target: event.currentTarget, type: treeDataTypes.click });\n });\n\n const handleKeyDown = useEventCallback((event: React.KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(event);\n if (event.currentTarget !== event.target) {\n return;\n }\n if (event.isDefaultPrevented()) {\n return;\n }\n switch (event.key) {\n case Enter:\n return handleEnter(event);\n case ArrowRight:\n return handleArrowRight(event);\n case ArrowLeft:\n return handleArrowLeft(event);\n case End:\n return requestNavigation({ event, type: treeDataTypes.end, target: event.currentTarget });\n case Home:\n return requestNavigation({ event, type: treeDataTypes.home, target: event.currentTarget });\n case ArrowUp:\n return requestNavigation({ event, type: treeDataTypes.arrowUp, target: event.currentTarget });\n case ArrowDown:\n return requestNavigation({ event, type: treeDataTypes.arrowDown, target: event.currentTarget });\n }\n const isTypeAheadCharacter =\n event.key.length === 1 && event.key.match(/\\w/) && !event.altKey && !event.ctrlKey && !event.metaKey;\n if (isTypeAheadCharacter) {\n return requestNavigation({ event, target: event.currentTarget, type: treeDataTypes.typeAhead });\n }\n });\n\n const [isActionsVisible, setActionsVisible] = React.useState(false);\n const showActions = useEventCallback((event: React.SyntheticEvent) => {\n const isEventFromSubtree = subtreeRef.current && elementContains(subtreeRef.current, event.target as Node);\n if (!isEventFromSubtree) {\n setActionsVisible(true);\n }\n });\n const hideActions = useEventCallback((event: React.SyntheticEvent) => {\n const isEventFromSubtree = subtreeRef.current && elementContains(subtreeRef.current, event.target as Node);\n if (!isEventFromSubtree) {\n setActionsVisible(false);\n }\n });\n\n // Listens to focusout event on the document to ensure treeitem actions visibility on portal scenarios\n // TODO: find a better way to ensure this behavior\n React.useEffect(() => {\n if (actionsRef.current) {\n const handleFocusOut = (event: FocusEvent) => {\n setActionsVisible(elementContains(actionsRef.current, event.relatedTarget as Node));\n };\n targetDocument?.addEventListener('focusout', handleFocusOut, { passive: true });\n return () => {\n targetDocument?.removeEventListener('focusout', handleFocusOut);\n };\n }\n }, [targetDocument]);\n\n return {\n isLeaf,\n open,\n level,\n buttonSize: 'small',\n isActionsVisible: actions ? isActionsVisible : false,\n components: {\n content: 'div',\n root: 'div',\n expandIcon: 'span',\n actions: 'span',\n subtree: 'span',\n },\n subtree: resolveShorthand(subtree, {\n required: Boolean(subtreeChildren),\n defaultProps: {\n children: subtreeChildren,\n ref: useMergedRefs(subtreeRef, isResolvedShorthand(subtree) ? subtree.ref : undefined),\n },\n }),\n content: resolveShorthand(content, {\n required: true,\n defaultProps: {\n children,\n },\n }),\n root: getNativeElementProps(as, {\n tabIndex: -1,\n ...rest,\n id,\n ref,\n children: null,\n 'aria-level': level,\n 'aria-expanded': isBranch ? open : undefined,\n role: 'treeitem',\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n onMouseOver: actions ? showActions : undefined,\n onFocus: actions ? showActions : undefined,\n onMouseOut: actions ? hideActions : undefined,\n onBlur: actions ? hideActions : undefined,\n }),\n expandIcon: resolveShorthand(expandIcon, {\n required: isBranch,\n defaultProps: {\n children: <ChevronRight12Regular style={expandIconInlineStyles[expandIconRotation]} />,\n 'aria-hidden': true,\n ref: useMergedRefs(isResolvedShorthand(expandIcon) ? expandIcon.ref : undefined, expandIconRef),\n },\n }),\n actions: resolveShorthand(actions, {\n defaultProps: {\n ref: useMergedRefs(isResolvedShorthand(actions) ? actions.ref : undefined, actionsRef),\n },\n }),\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"sources":["useTreeItem.js"],"sourcesContent":["import * as React from 'react';\nimport { getNativeElementProps, useId, useMergedRefs } from '@fluentui/react-utilities';\nimport { useEventCallback } from '@fluentui/react-utilities';\nimport { elementContains } from '@fluentui/react-portal';\nimport { useTreeContext_unstable } from '../../contexts/index';\nimport { treeDataTypes } from '../../utils/tokens';\nimport { dataTreeItemValueAttrName } from '../../utils/getTreeItemValueFromElement';\n/**\n * Create the state required to render TreeItem.\n *\n * The returned state can be modified with hooks such as useTreeItemStyles_unstable,\n * before being passed to renderTreeItem_unstable.\n *\n * @param props - props from this instance of TreeItem\n * @param ref - reference to root HTMLElement of TreeItem\n */ export function useTreeItem_unstable(props, ref) {\n var _props_value;\n const contextLevel = useTreeContext_unstable((ctx)=>ctx.level);\n const value = useId('fuiTreeItemValue-', (_props_value = props.value) === null || _props_value === void 0 ? void 0 : _props_value.toString());\n const { onClick , onKeyDown , as ='div' , itemType ='leaf' , 'aria-level': level = contextLevel , ...rest } = props;\n const requestTreeResponse = useTreeContext_unstable((ctx)=>ctx.requestTreeResponse);\n const [isActionsVisible, setActionsVisible] = React.useState(false);\n const [isAsideVisible, setAsideVisible] = React.useState(true);\n const handleActionsRef = (actions)=>{\n setAsideVisible(actions === null);\n };\n const open = useTreeContext_unstable((ctx)=>ctx.openItems.has(value));\n const actionsRef = React.useRef(null);\n const expandIconRef = React.useRef(null);\n const layoutRef = React.useRef(null);\n const subtreeRef = React.useRef(null);\n const handleClick = useEventCallback((event)=>{\n onClick === null || onClick === void 0 ? void 0 : onClick(event);\n if (event.isDefaultPrevented()) {\n return;\n }\n const isEventFromActions = actionsRef.current && elementContains(actionsRef.current, event.target);\n if (isEventFromActions) {\n return;\n }\n const isEventFromSubtree = subtreeRef.current && elementContains(subtreeRef.current, event.target);\n if (isEventFromSubtree) {\n return;\n }\n const isFromExpandIcon = expandIconRef.current && elementContains(expandIconRef.current, event.target);\n requestTreeResponse({\n event,\n itemType,\n value,\n type: isFromExpandIcon ? treeDataTypes.ExpandIconClick : treeDataTypes.Click\n });\n });\n const handleKeyDown = useEventCallback((event)=>{\n onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(event);\n if (event.isDefaultPrevented()) {\n return;\n }\n if (event.currentTarget !== event.target) {\n return;\n }\n switch(event.key){\n case treeDataTypes.End:\n case treeDataTypes.Home:\n case treeDataTypes.Enter:\n case treeDataTypes.ArrowUp:\n case treeDataTypes.ArrowDown:\n case treeDataTypes.ArrowLeft:\n case treeDataTypes.ArrowRight:\n return requestTreeResponse({\n event,\n value,\n itemType,\n type: event.key\n });\n }\n const isTypeAheadCharacter = event.key.length === 1 && event.key.match(/\\w/) && !event.altKey && !event.ctrlKey && !event.metaKey;\n if (isTypeAheadCharacter) {\n requestTreeResponse({\n event,\n value,\n itemType,\n type: treeDataTypes.TypeAhead\n });\n }\n });\n const handleActionsVisible = useEventCallback((event)=>{\n const isTargetFromSubtree = Boolean(subtreeRef.current && elementContains(subtreeRef.current, event.target));\n if (!isTargetFromSubtree) {\n setActionsVisible(true);\n }\n });\n const handleActionsInvisible = useEventCallback((event)=>{\n const isTargetFromSubtree = Boolean(subtreeRef.current && elementContains(subtreeRef.current, event.target));\n const isRelatedTargetFromActions = Boolean(actionsRef.current && elementContains(actionsRef.current, event.relatedTarget));\n if (isRelatedTargetFromActions) {\n return setActionsVisible(true);\n }\n if (!isTargetFromSubtree) {\n return setActionsVisible(false);\n }\n });\n return {\n value,\n open,\n subtreeRef,\n actionsRef: useMergedRefs(actionsRef, handleActionsRef),\n expandIconRef,\n layoutRef,\n itemType,\n isActionsVisible,\n isAsideVisible,\n level,\n components: {\n root: 'div'\n },\n root: getNativeElementProps(as, {\n tabIndex: -1,\n ...rest,\n ref,\n role: 'treeitem',\n 'aria-level': level,\n [dataTreeItemValueAttrName]: value,\n 'aria-expanded': itemType === 'branch' ? open : undefined,\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n onMouseOver: handleActionsVisible,\n onFocus: handleActionsVisible,\n onMouseOut: handleActionsInvisible,\n onBlur: handleActionsInvisible\n })\n };\n}\n"],"names":["useTreeItem_unstable","props","ref","_props_value","contextLevel","useTreeContext_unstable","ctx","level","value","useId","toString","onClick","onKeyDown","as","itemType","rest","requestTreeResponse","isActionsVisible","setActionsVisible","React","useState","isAsideVisible","setAsideVisible","handleActionsRef","actions","open","openItems","has","actionsRef","useRef","expandIconRef","layoutRef","subtreeRef","handleClick","useEventCallback","event","isDefaultPrevented","isEventFromActions","current","elementContains","target","isEventFromSubtree","isFromExpandIcon","type","treeDataTypes","ExpandIconClick","Click","handleKeyDown","currentTarget","key","End","Home","Enter","ArrowUp","ArrowDown","ArrowLeft","ArrowRight","isTypeAheadCharacter","length","match","altKey","ctrlKey","metaKey","TypeAhead","handleActionsVisible","isTargetFromSubtree","Boolean","handleActionsInvisible","isRelatedTargetFromActions","relatedTarget","useMergedRefs","components","root","getNativeElementProps","tabIndex","role","dataTreeItemValueAttrName","undefined","onMouseOver","onFocus","onMouseOut","onBlur"],"mappings":"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"}
@@ -1,25 +1,28 @@
1
1
  "use strict";
2
-
3
2
  Object.defineProperty(exports, "__esModule", {
4
- value: true
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "useTreeItemContextValues_unstable", {
6
+ enumerable: true,
7
+ get: ()=>useTreeItemContextValues_unstable
5
8
  });
6
- exports.useTreeItemContextValues_unstable = void 0;
7
- const React = /*#__PURE__*/require("react");
8
9
  function useTreeItemContextValues_unstable(state) {
9
- const {
10
- buttonSize,
11
- isActionsVisible
12
- } = state;
13
- const treeItem = React.useMemo(() => ({
14
- isActionsVisible
15
- }), [isActionsVisible]);
16
- const button = React.useMemo(() => ({
17
- size: buttonSize
18
- }), [buttonSize]);
19
- return {
20
- treeItem,
21
- button
22
- };
10
+ const { value , isActionsVisible , isAsideVisible , actionsRef , itemType , layoutRef , subtreeRef , expandIconRef , open } = state;
11
+ /**
12
+ * This context is created with "@fluentui/react-context-selector",
13
+ * there is no sense to memoize it
14
+ */ const treeItem = {
15
+ isActionsVisible,
16
+ isAsideVisible,
17
+ value,
18
+ actionsRef,
19
+ itemType,
20
+ layoutRef,
21
+ subtreeRef,
22
+ expandIconRef,
23
+ open
24
+ };
25
+ return {
26
+ treeItem
27
+ };
23
28
  }
24
- exports.useTreeItemContextValues_unstable = useTreeItemContextValues_unstable;
25
- //# sourceMappingURL=useTreeItemContextValues.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","require","useTreeItemContextValues_unstable","state","buttonSize","isActionsVisible","treeItem","useMemo","button","size","exports"],"sources":["../src/packages/react-components/react-tree/src/components/TreeItem/useTreeItemContextValues.ts"],"sourcesContent":["import * as React from 'react';\nimport type { ButtonContextValue } from '@fluentui/react-button';\nimport type { TreeItemContextValue } from '../../contexts';\nimport type { TreeItemContextValues, TreeItemState } from './TreeItem.types';\n\nexport function useTreeItemContextValues_unstable(\n state: Pick<TreeItemState, 'buttonSize' | 'isActionsVisible'>,\n): TreeItemContextValues {\n const { buttonSize, isActionsVisible } = state;\n\n const treeItem = React.useMemo<TreeItemContextValue>(() => ({ isActionsVisible }), [isActionsVisible]);\n const button = React.useMemo<ButtonContextValue>(() => ({ size: buttonSize }), [buttonSize]);\n\n return { treeItem, button };\n}\n"],"mappings":";;;;;;AAAA,MAAAA,KAAA,gBAAAC,OAAA;AAKA,SAAgBC,iCAAiCA,CAC/CC,KAA6D;EAE7D,MAAM;IAAEC,UAAU;IAAEC;EAAgB,CAAE,GAAGF,KAAK;EAE9C,MAAMG,QAAQ,GAAGN,KAAK,CAACO,OAAO,CAAuB,OAAO;IAAEF;EAAgB,CAAE,CAAC,EAAE,CAACA,gBAAgB,CAAC,CAAC;EACtG,MAAMG,MAAM,GAAGR,KAAK,CAACO,OAAO,CAAqB,OAAO;IAAEE,IAAI,EAAEL;EAAU,CAAE,CAAC,EAAE,CAACA,UAAU,CAAC,CAAC;EAE5F,OAAO;IAAEE,QAAQ;IAAEE;EAAM,CAAE;AAC7B;AATAE,OAAA,CAAAR,iCAAA,GAAAA,iCAAA"}
1
+ {"version":3,"sources":["useTreeItemContextValues.js"],"sourcesContent":["export function useTreeItemContextValues_unstable(state) {\n const { value , isActionsVisible , isAsideVisible , actionsRef , itemType , layoutRef , subtreeRef , expandIconRef , open } = state;\n /**\n * This context is created with \"@fluentui/react-context-selector\",\n * there is no sense to memoize it\n */ const treeItem = {\n isActionsVisible,\n isAsideVisible,\n value,\n actionsRef,\n itemType,\n layoutRef,\n subtreeRef,\n expandIconRef,\n open\n };\n return {\n treeItem\n };\n}\n"],"names":["useTreeItemContextValues_unstable","state","value","isActionsVisible","isAsideVisible","actionsRef","itemType","layoutRef","subtreeRef","expandIconRef","open","treeItem"],"mappings":";;;;+BAAgBA;;aAAAA;;AAAT,SAASA,kCAAkCC,KAAK,EAAE;IACrD,MAAM,EAAEC,MAAK,EAAGC,iBAAgB,EAAGC,eAAc,EAAGC,WAAU,EAAGC,SAAQ,EAAGC,UAAS,EAAGC,WAAU,EAAGC,cAAa,EAAGC,KAAI,EAAG,GAAGT;IAC/H;;;GAGD,GAAG,MAAMU,WAAW;QACfR;QACAC;QACAF;QACAG;QACAC;QACAC;QACAC;QACAC;QACAC;IACJ;IACA,OAAO;QACHC;IACJ;AACJ"}