@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,88 +1,97 @@
1
1
  "use strict";
2
-
3
2
  Object.defineProperty(exports, "__esModule", {
4
- value: true
3
+ value: true
5
4
  });
6
- exports.useHTMLElementWalkerRef = exports.createHTMLElementWalker = void 0;
7
- const react_utilities_1 = /*#__PURE__*/require("@fluentui/react-utilities");
8
- const React = /*#__PURE__*/require("react");
9
- function createHTMLElementWalker(root, filter = () => NodeFilter.FILTER_ACCEPT) {
10
- let temporaryFilter;
11
- const treeWalker = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT, {
12
- acceptNode(node) {
13
- var _a;
14
- if (!react_utilities_1.isHTMLElement(node)) {
15
- return NodeFilter.FILTER_REJECT;
16
- }
17
- const filterResult = filter(node);
18
- return filterResult === NodeFilter.FILTER_ACCEPT ? (_a = temporaryFilter === null || temporaryFilter === void 0 ? void 0 : temporaryFilter(node)) !== null && _a !== void 0 ? _a : filterResult : filterResult;
19
- }
20
- });
21
- return {
22
- get root() {
23
- return treeWalker.root;
24
- },
25
- get currentElement() {
26
- return treeWalker.currentNode;
27
- },
28
- set currentElement(element) {
29
- treeWalker.currentNode = element;
30
- },
31
- firstChild: localFilter => {
32
- temporaryFilter = localFilter;
33
- const result = treeWalker.firstChild();
34
- temporaryFilter = undefined;
35
- return result;
36
- },
37
- lastChild: localFilter => {
38
- temporaryFilter = localFilter;
39
- const result = treeWalker.lastChild();
40
- temporaryFilter = undefined;
41
- return result;
42
- },
43
- nextElement: localFilter => {
44
- temporaryFilter = localFilter;
45
- const result = treeWalker.nextNode();
46
- temporaryFilter = undefined;
47
- return result;
48
- },
49
- nextSibling: localFilter => {
50
- temporaryFilter = localFilter;
51
- const result = treeWalker.nextSibling();
52
- temporaryFilter = undefined;
53
- return result;
54
- },
55
- parentElement: localFilter => {
56
- temporaryFilter = localFilter;
57
- const result = treeWalker.parentNode();
58
- temporaryFilter = undefined;
59
- return result;
60
- },
61
- previousElement: localFilter => {
62
- temporaryFilter = localFilter;
63
- const result = treeWalker.previousNode();
64
- temporaryFilter = undefined;
65
- return result;
66
- },
67
- previousSibling: localFilter => {
68
- temporaryFilter = localFilter;
69
- const result = treeWalker.previousSibling();
70
- temporaryFilter = undefined;
71
- return result;
72
- }
73
- };
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
74
10
  }
75
- exports.createHTMLElementWalker = createHTMLElementWalker;
76
- const useHTMLElementWalkerRef = filter => {
77
- const walkerRef = React.useRef();
78
- const rootRefCallback = element => {
79
- if (!element) {
80
- walkerRef.current = undefined;
81
- return;
82
- }
83
- walkerRef.current = createHTMLElementWalker(element, filter);
84
- };
85
- return [walkerRef, rootRefCallback];
11
+ _export(exports, {
12
+ createHTMLElementWalker: ()=>createHTMLElementWalker,
13
+ useHTMLElementWalkerRef: ()=>useHTMLElementWalkerRef
14
+ });
15
+ const _interopRequireWildcard = require("@swc/helpers/lib/_interop_require_wildcard.js").default;
16
+ const _reactUtilities = require("@fluentui/react-utilities");
17
+ const _react = /*#__PURE__*/ _interopRequireWildcard(require("react"));
18
+ function createHTMLElementWalker(root, filter = ()=>NodeFilter.FILTER_ACCEPT) {
19
+ let temporaryFilter;
20
+ const treeWalker = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT, {
21
+ acceptNode (node) {
22
+ if (!(0, _reactUtilities.isHTMLElement)(node)) {
23
+ return NodeFilter.FILTER_REJECT;
24
+ }
25
+ const filterResult = filter(node);
26
+ var _temporaryFilter;
27
+ return filterResult === NodeFilter.FILTER_ACCEPT ? (_temporaryFilter = temporaryFilter === null || temporaryFilter === void 0 ? void 0 : temporaryFilter(node)) !== null && _temporaryFilter !== void 0 ? _temporaryFilter : filterResult : filterResult;
28
+ }
29
+ });
30
+ return {
31
+ get root () {
32
+ return treeWalker.root;
33
+ },
34
+ get currentElement () {
35
+ return treeWalker.currentNode;
36
+ },
37
+ set currentElement (element){
38
+ treeWalker.currentNode = element;
39
+ },
40
+ firstChild: (localFilter)=>{
41
+ temporaryFilter = localFilter;
42
+ const result = treeWalker.firstChild();
43
+ temporaryFilter = undefined;
44
+ return result;
45
+ },
46
+ lastChild: (localFilter)=>{
47
+ temporaryFilter = localFilter;
48
+ const result = treeWalker.lastChild();
49
+ temporaryFilter = undefined;
50
+ return result;
51
+ },
52
+ nextElement: (localFilter)=>{
53
+ temporaryFilter = localFilter;
54
+ const result = treeWalker.nextNode();
55
+ temporaryFilter = undefined;
56
+ return result;
57
+ },
58
+ nextSibling: (localFilter)=>{
59
+ temporaryFilter = localFilter;
60
+ const result = treeWalker.nextSibling();
61
+ temporaryFilter = undefined;
62
+ return result;
63
+ },
64
+ parentElement: (localFilter)=>{
65
+ temporaryFilter = localFilter;
66
+ const result = treeWalker.parentNode();
67
+ temporaryFilter = undefined;
68
+ return result;
69
+ },
70
+ previousElement: (localFilter)=>{
71
+ temporaryFilter = localFilter;
72
+ const result = treeWalker.previousNode();
73
+ temporaryFilter = undefined;
74
+ return result;
75
+ },
76
+ previousSibling: (localFilter)=>{
77
+ temporaryFilter = localFilter;
78
+ const result = treeWalker.previousSibling();
79
+ temporaryFilter = undefined;
80
+ return result;
81
+ }
82
+ };
83
+ }
84
+ const useHTMLElementWalkerRef = (filter)=>{
85
+ const walkerRef = _react.useRef();
86
+ const rootRefCallback = (element1)=>{
87
+ if (!element1) {
88
+ walkerRef.current = undefined;
89
+ return;
90
+ }
91
+ walkerRef.current = createHTMLElementWalker(element1, filter);
92
+ };
93
+ return [
94
+ walkerRef,
95
+ rootRefCallback
96
+ ];
86
97
  };
87
- exports.useHTMLElementWalkerRef = useHTMLElementWalkerRef;
88
- //# sourceMappingURL=useHTMLElementWalker.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["react_utilities_1","require","React","createHTMLElementWalker","root","filter","NodeFilter","FILTER_ACCEPT","temporaryFilter","treeWalker","document","createTreeWalker","SHOW_ELEMENT","acceptNode","node","isHTMLElement","FILTER_REJECT","filterResult","_a","currentElement","currentNode","element","firstChild","localFilter","result","undefined","lastChild","nextElement","nextNode","nextSibling","parentElement","parentNode","previousElement","previousNode","previousSibling","exports","useHTMLElementWalkerRef","walkerRef","useRef","rootRefCallback","current"],"sources":["../src/packages/react-components/react-tree/src/hooks/useHTMLElementWalker.ts"],"sourcesContent":["import { isHTMLElement } from '@fluentui/react-utilities';\nimport * as React from 'react';\n\nexport interface HTMLElementWalker {\n readonly root: HTMLElement;\n currentElement: HTMLElement;\n firstChild(filter?: HTMLElementFilter): HTMLElement | null;\n lastChild(filter?: HTMLElementFilter): HTMLElement | null;\n nextElement(filter?: HTMLElementFilter): HTMLElement | null;\n nextSibling(filter?: HTMLElementFilter): HTMLElement | null;\n parentElement(filter?: HTMLElementFilter): HTMLElement | null;\n previousElement(filter?: HTMLElementFilter): HTMLElement | null;\n previousSibling(filter?: HTMLElementFilter): HTMLElement | null;\n}\n\nexport type HTMLElementFilter = (element: HTMLElement) => number;\n\nexport function createHTMLElementWalker(\n root: HTMLElement,\n filter: HTMLElementFilter = () => NodeFilter.FILTER_ACCEPT,\n): HTMLElementWalker {\n let temporaryFilter: HTMLElementFilter | undefined;\n const treeWalker = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT, {\n acceptNode(node: Node) {\n if (!isHTMLElement(node)) {\n return NodeFilter.FILTER_REJECT;\n }\n const filterResult = filter(node);\n return filterResult === NodeFilter.FILTER_ACCEPT ? temporaryFilter?.(node) ?? filterResult : filterResult;\n },\n });\n return {\n get root() {\n return treeWalker.root as HTMLElement;\n },\n get currentElement() {\n return treeWalker.currentNode as HTMLElement;\n },\n set currentElement(element) {\n treeWalker.currentNode = element;\n },\n firstChild: localFilter => {\n temporaryFilter = localFilter;\n const result = treeWalker.firstChild() as HTMLElement | null;\n temporaryFilter = undefined;\n return result;\n },\n lastChild: localFilter => {\n temporaryFilter = localFilter;\n const result = treeWalker.lastChild() as HTMLElement | null;\n temporaryFilter = undefined;\n return result;\n },\n nextElement: localFilter => {\n temporaryFilter = localFilter;\n const result = treeWalker.nextNode() as HTMLElement | null;\n temporaryFilter = undefined;\n return result;\n },\n nextSibling: localFilter => {\n temporaryFilter = localFilter;\n const result = treeWalker.nextSibling() as HTMLElement | null;\n temporaryFilter = undefined;\n return result;\n },\n parentElement: localFilter => {\n temporaryFilter = localFilter;\n const result = treeWalker.parentNode() as HTMLElement | null;\n temporaryFilter = undefined;\n return result;\n },\n previousElement: localFilter => {\n temporaryFilter = localFilter;\n const result = treeWalker.previousNode() as HTMLElement | null;\n temporaryFilter = undefined;\n return result;\n },\n previousSibling: localFilter => {\n temporaryFilter = localFilter;\n const result = treeWalker.previousSibling() as HTMLElement | null;\n temporaryFilter = undefined;\n return result;\n },\n };\n}\n\nexport const useHTMLElementWalkerRef = (filter?: HTMLElementFilter) => {\n const walkerRef = React.useRef<HTMLElementWalker>();\n\n const rootRefCallback = (element?: HTMLElement) => {\n if (!element) {\n walkerRef.current = undefined;\n return;\n }\n walkerRef.current = createHTMLElementWalker(element, filter);\n };\n return [walkerRef as React.RefObject<HTMLElementWalker>, rootRefCallback as React.Ref<HTMLElement>] as const;\n};\n"],"mappings":";;;;;;AAAA,MAAAA,iBAAA,gBAAAC,OAAA;AACA,MAAAC,KAAA,gBAAAD,OAAA;AAgBA,SAAgBE,uBAAuBA,CACrCC,IAAiB,EACjBC,MAAA,GAA4BA,CAAA,KAAMC,UAAU,CAACC,aAAa;EAE1D,IAAIC,eAA8C;EAClD,MAAMC,UAAU,GAAGC,QAAQ,CAACC,gBAAgB,CAACP,IAAI,EAAEE,UAAU,CAACM,YAAY,EAAE;IAC1EC,UAAUA,CAACC,IAAU;;MACnB,IAAI,CAACd,iBAAA,CAAAe,aAAa,CAACD,IAAI,CAAC,EAAE;QACxB,OAAOR,UAAU,CAACU,aAAa;;MAEjC,MAAMC,YAAY,GAAGZ,MAAM,CAACS,IAAI,CAAC;MACjC,OAAOG,YAAY,KAAKX,UAAU,CAACC,aAAa,GAAG,CAAAW,EAAA,GAAAV,eAAe,aAAfA,eAAe,uBAAfA,eAAe,CAAGM,IAAI,CAAC,cAAAI,EAAA,cAAAA,EAAA,GAAID,YAAY,GAAGA,YAAY;IAC3G;GACD,CAAC;EACF,OAAO;IACL,IAAIb,IAAIA,CAAA;MACN,OAAOK,UAAU,CAACL,IAAmB;IACvC,CAAC;IACD,IAAIe,cAAcA,CAAA;MAChB,OAAOV,UAAU,CAACW,WAA0B;IAC9C,CAAC;IACD,IAAID,cAAcA,CAACE,OAAO;MACxBZ,UAAU,CAACW,WAAW,GAAGC,OAAO;IAClC,CAAC;IACDC,UAAU,EAAEC,WAAW,IAAG;MACxBf,eAAe,GAAGe,WAAW;MAC7B,MAAMC,MAAM,GAAGf,UAAU,CAACa,UAAU,EAAwB;MAC5Dd,eAAe,GAAGiB,SAAS;MAC3B,OAAOD,MAAM;IACf,CAAC;IACDE,SAAS,EAAEH,WAAW,IAAG;MACvBf,eAAe,GAAGe,WAAW;MAC7B,MAAMC,MAAM,GAAGf,UAAU,CAACiB,SAAS,EAAwB;MAC3DlB,eAAe,GAAGiB,SAAS;MAC3B,OAAOD,MAAM;IACf,CAAC;IACDG,WAAW,EAAEJ,WAAW,IAAG;MACzBf,eAAe,GAAGe,WAAW;MAC7B,MAAMC,MAAM,GAAGf,UAAU,CAACmB,QAAQ,EAAwB;MAC1DpB,eAAe,GAAGiB,SAAS;MAC3B,OAAOD,MAAM;IACf,CAAC;IACDK,WAAW,EAAEN,WAAW,IAAG;MACzBf,eAAe,GAAGe,WAAW;MAC7B,MAAMC,MAAM,GAAGf,UAAU,CAACoB,WAAW,EAAwB;MAC7DrB,eAAe,GAAGiB,SAAS;MAC3B,OAAOD,MAAM;IACf,CAAC;IACDM,aAAa,EAAEP,WAAW,IAAG;MAC3Bf,eAAe,GAAGe,WAAW;MAC7B,MAAMC,MAAM,GAAGf,UAAU,CAACsB,UAAU,EAAwB;MAC5DvB,eAAe,GAAGiB,SAAS;MAC3B,OAAOD,MAAM;IACf,CAAC;IACDQ,eAAe,EAAET,WAAW,IAAG;MAC7Bf,eAAe,GAAGe,WAAW;MAC7B,MAAMC,MAAM,GAAGf,UAAU,CAACwB,YAAY,EAAwB;MAC9DzB,eAAe,GAAGiB,SAAS;MAC3B,OAAOD,MAAM;IACf,CAAC;IACDU,eAAe,EAAEX,WAAW,IAAG;MAC7Bf,eAAe,GAAGe,WAAW;MAC7B,MAAMC,MAAM,GAAGf,UAAU,CAACyB,eAAe,EAAwB;MACjE1B,eAAe,GAAGiB,SAAS;MAC3B,OAAOD,MAAM;IACf;GACD;AACH;AAnEAW,OAAA,CAAAhC,uBAAA,GAAAA,uBAAA;AAqEO,MAAMiC,uBAAuB,GAAI/B,MAA0B,IAAI;EACpE,MAAMgC,SAAS,GAAGnC,KAAK,CAACoC,MAAM,EAAqB;EAEnD,MAAMC,eAAe,GAAIlB,OAAqB,IAAI;IAChD,IAAI,CAACA,OAAO,EAAE;MACZgB,SAAS,CAACG,OAAO,GAAGf,SAAS;MAC7B;;IAEFY,SAAS,CAACG,OAAO,GAAGrC,uBAAuB,CAACkB,OAAO,EAAEhB,MAAM,CAAC;EAC9D,CAAC;EACD,OAAO,CAACgC,SAA+C,EAAEE,eAAyC,CAAU;AAC9G,CAAC;AAXYJ,OAAA,CAAAC,uBAAuB,GAAAA,uBAAA"}
1
+ {"version":3,"sources":["useHTMLElementWalker.js"],"sourcesContent":["import { isHTMLElement } from '@fluentui/react-utilities';\nimport * as React from 'react';\nexport function createHTMLElementWalker(root, filter = ()=>NodeFilter.FILTER_ACCEPT) {\n let temporaryFilter;\n const treeWalker = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT, {\n acceptNode (node) {\n if (!isHTMLElement(node)) {\n return NodeFilter.FILTER_REJECT;\n }\n const filterResult = filter(node);\n var _temporaryFilter;\n return filterResult === NodeFilter.FILTER_ACCEPT ? (_temporaryFilter = temporaryFilter === null || temporaryFilter === void 0 ? void 0 : temporaryFilter(node)) !== null && _temporaryFilter !== void 0 ? _temporaryFilter : filterResult : filterResult;\n }\n });\n return {\n get root () {\n return treeWalker.root;\n },\n get currentElement () {\n return treeWalker.currentNode;\n },\n set currentElement (element){\n treeWalker.currentNode = element;\n },\n firstChild: (localFilter)=>{\n temporaryFilter = localFilter;\n const result = treeWalker.firstChild();\n temporaryFilter = undefined;\n return result;\n },\n lastChild: (localFilter)=>{\n temporaryFilter = localFilter;\n const result = treeWalker.lastChild();\n temporaryFilter = undefined;\n return result;\n },\n nextElement: (localFilter)=>{\n temporaryFilter = localFilter;\n const result = treeWalker.nextNode();\n temporaryFilter = undefined;\n return result;\n },\n nextSibling: (localFilter)=>{\n temporaryFilter = localFilter;\n const result = treeWalker.nextSibling();\n temporaryFilter = undefined;\n return result;\n },\n parentElement: (localFilter)=>{\n temporaryFilter = localFilter;\n const result = treeWalker.parentNode();\n temporaryFilter = undefined;\n return result;\n },\n previousElement: (localFilter)=>{\n temporaryFilter = localFilter;\n const result = treeWalker.previousNode();\n temporaryFilter = undefined;\n return result;\n },\n previousSibling: (localFilter)=>{\n temporaryFilter = localFilter;\n const result = treeWalker.previousSibling();\n temporaryFilter = undefined;\n return result;\n }\n };\n}\nexport const useHTMLElementWalkerRef = (filter)=>{\n const walkerRef = React.useRef();\n const rootRefCallback = (element1)=>{\n if (!element1) {\n walkerRef.current = undefined;\n return;\n }\n walkerRef.current = createHTMLElementWalker(element1, filter);\n };\n return [\n walkerRef,\n rootRefCallback\n ];\n};\n"],"names":["createHTMLElementWalker","useHTMLElementWalkerRef","root","filter","NodeFilter","FILTER_ACCEPT","temporaryFilter","treeWalker","document","createTreeWalker","SHOW_ELEMENT","acceptNode","node","isHTMLElement","FILTER_REJECT","filterResult","_temporaryFilter","currentElement","currentNode","element","firstChild","localFilter","result","undefined","lastChild","nextElement","nextNode","nextSibling","parentElement","parentNode","previousElement","previousNode","previousSibling","walkerRef","React","useRef","rootRefCallback","element1","current"],"mappings":";;;;;;;;;;;IAEgBA,uBAAuB,MAAvBA;IAkEHC,uBAAuB,MAAvBA;;;gCApEiB;6DACP;AAChB,SAASD,wBAAwBE,IAAI,EAAEC,SAAS,IAAIC,WAAWC,aAAa,EAAE;IACjF,IAAIC;IACJ,MAAMC,aAAaC,SAASC,gBAAgB,CAACP,MAAME,WAAWM,YAAY,EAAE;QACxEC,YAAYC,IAAI,EAAE;YACd,IAAI,CAACC,IAAAA,6BAAa,EAACD,OAAO;gBACtB,OAAOR,WAAWU,aAAa;YACnC,CAAC;YACD,MAAMC,eAAeZ,OAAOS;YAC5B,IAAII;YACJ,OAAOD,iBAAiBX,WAAWC,aAAa,GAAG,AAACW,CAAAA,mBAAmBV,oBAAoB,IAAI,IAAIA,oBAAoB,KAAK,IAAI,KAAK,IAAIA,gBAAgBM,KAAK,AAAD,MAAO,IAAI,IAAII,qBAAqB,KAAK,IAAIA,mBAAmBD,YAAY,GAAGA,YAAY;QAC5P;IACJ;IACA,OAAO;QACH,IAAIb,QAAQ;YACR,OAAOK,WAAWL,IAAI;QAC1B;QACA,IAAIe,kBAAkB;YAClB,OAAOV,WAAWW,WAAW;QACjC;QACA,IAAID,gBAAgBE,QAAQ;YACxBZ,WAAWW,WAAW,GAAGC;QAC7B;QACAC,YAAY,CAACC,cAAc;YACvBf,kBAAkBe;YAClB,MAAMC,SAASf,WAAWa,UAAU;YACpCd,kBAAkBiB;YAClB,OAAOD;QACX;QACAE,WAAW,CAACH,cAAc;YACtBf,kBAAkBe;YAClB,MAAMC,SAASf,WAAWiB,SAAS;YACnClB,kBAAkBiB;YAClB,OAAOD;QACX;QACAG,aAAa,CAACJ,cAAc;YACxBf,kBAAkBe;YAClB,MAAMC,SAASf,WAAWmB,QAAQ;YAClCpB,kBAAkBiB;YAClB,OAAOD;QACX;QACAK,aAAa,CAACN,cAAc;YACxBf,kBAAkBe;YAClB,MAAMC,SAASf,WAAWoB,WAAW;YACrCrB,kBAAkBiB;YAClB,OAAOD;QACX;QACAM,eAAe,CAACP,cAAc;YAC1Bf,kBAAkBe;YAClB,MAAMC,SAASf,WAAWsB,UAAU;YACpCvB,kBAAkBiB;YAClB,OAAOD;QACX;QACAQ,iBAAiB,CAACT,cAAc;YAC5Bf,kBAAkBe;YAClB,MAAMC,SAASf,WAAWwB,YAAY;YACtCzB,kBAAkBiB;YAClB,OAAOD;QACX;QACAU,iBAAiB,CAACX,cAAc;YAC5Bf,kBAAkBe;YAClB,MAAMC,SAASf,WAAWyB,eAAe;YACzC1B,kBAAkBiB;YAClB,OAAOD;QACX;IACJ;AACJ;AACO,MAAMrB,0BAA0B,CAACE,SAAS;IAC7C,MAAM8B,YAAYC,OAAMC,MAAM;IAC9B,MAAMC,kBAAkB,CAACC,WAAW;QAChC,IAAI,CAACA,UAAU;YACXJ,UAAUK,OAAO,GAAGf;YACpB;QACJ,CAAC;QACDU,UAAUK,OAAO,GAAGtC,wBAAwBqC,UAAUlC;IAC1D;IACA,OAAO;QACH8B;QACAG;KACH;AACL"}
@@ -1,66 +1,67 @@
1
1
  "use strict";
2
-
3
2
  Object.defineProperty(exports, "__esModule", {
4
- value: true
3
+ value: true
5
4
  });
6
- exports.useNestedTreeNavigation = void 0;
7
- const useHTMLElementWalker_1 = /*#__PURE__*/require("./useHTMLElementWalker");
8
- const nextTypeAheadElement_1 = /*#__PURE__*/require("../utils/nextTypeAheadElement");
9
- const tokens_1 = /*#__PURE__*/require("../utils/tokens");
10
- const treeItemFilter_1 = /*#__PURE__*/require("../utils/treeItemFilter");
11
- const useRovingTabIndexes_1 = /*#__PURE__*/require("./useRovingTabIndexes");
12
- const react_utilities_1 = /*#__PURE__*/require("@fluentui/react-utilities");
5
+ Object.defineProperty(exports, "useNestedTreeNavigation", {
6
+ enumerable: true,
7
+ get: ()=>useNestedTreeNavigation
8
+ });
9
+ const _reactUtilities = require("@fluentui/react-utilities");
10
+ const _useHTMLElementWalker = require("./useHTMLElementWalker");
11
+ const _nextTypeAheadElement = require("../utils/nextTypeAheadElement");
12
+ const _tokens = require("../utils/tokens");
13
+ const _treeItemFilter = require("../utils/treeItemFilter");
14
+ const _useRovingTabIndexes = require("./useRovingTabIndexes");
13
15
  function useNestedTreeNavigation() {
14
- const [{
15
- rove
16
- }, rovingRootRef] = useRovingTabIndexes_1.useRovingTabIndex(treeItemFilter_1.treeItemFilter);
17
- const [walkerRef, rootRef] = useHTMLElementWalker_1.useHTMLElementWalkerRef(treeItemFilter_1.treeItemFilter);
18
- const getNextElement = data => {
19
- if (!walkerRef.current) {
20
- return;
21
- }
22
- const treeItemWalker = walkerRef.current;
23
- switch (data.type) {
24
- case tokens_1.treeDataTypes.click:
25
- return data.target;
26
- case tokens_1.treeDataTypes.typeAhead:
27
- treeItemWalker.currentElement = data.target;
28
- return nextTypeAheadElement_1.nextTypeAheadElement(treeItemWalker, data.event.key);
29
- case tokens_1.treeDataTypes.arrowLeft:
30
- treeItemWalker.currentElement = data.target;
31
- return treeItemWalker.parentElement();
32
- case tokens_1.treeDataTypes.arrowRight:
33
- treeItemWalker.currentElement = data.target;
34
- return treeItemWalker.firstChild();
35
- case tokens_1.treeDataTypes.end:
36
- treeItemWalker.currentElement = treeItemWalker.root;
37
- return lastChildRecursive(treeItemWalker);
38
- case tokens_1.treeDataTypes.home:
39
- treeItemWalker.currentElement = treeItemWalker.root;
40
- return treeItemWalker.firstChild();
41
- case tokens_1.treeDataTypes.arrowDown:
42
- treeItemWalker.currentElement = data.target;
43
- return treeItemWalker.nextElement();
44
- case tokens_1.treeDataTypes.arrowUp:
45
- treeItemWalker.currentElement = data.target;
46
- return treeItemWalker.previousElement();
16
+ const [{ rove }, rovingRootRef] = (0, _useRovingTabIndexes.useRovingTabIndex)(_treeItemFilter.treeItemFilter);
17
+ const [walkerRef, rootRef] = (0, _useHTMLElementWalker.useHTMLElementWalkerRef)(_treeItemFilter.treeItemFilter);
18
+ const getNextElement = (data)=>{
19
+ if (!walkerRef.current) {
20
+ return;
21
+ }
22
+ const treeItemWalker = walkerRef.current;
23
+ switch(data.type){
24
+ case _tokens.treeDataTypes.Click:
25
+ return data.target;
26
+ case _tokens.treeDataTypes.TypeAhead:
27
+ treeItemWalker.currentElement = data.target;
28
+ return (0, _nextTypeAheadElement.nextTypeAheadElement)(treeItemWalker, data.event.key);
29
+ case _tokens.treeDataTypes.ArrowLeft:
30
+ treeItemWalker.currentElement = data.target;
31
+ return treeItemWalker.parentElement();
32
+ case _tokens.treeDataTypes.ArrowRight:
33
+ treeItemWalker.currentElement = data.target;
34
+ return treeItemWalker.firstChild();
35
+ case _tokens.treeDataTypes.End:
36
+ treeItemWalker.currentElement = treeItemWalker.root;
37
+ return lastChildRecursive(treeItemWalker);
38
+ case _tokens.treeDataTypes.Home:
39
+ treeItemWalker.currentElement = treeItemWalker.root;
40
+ return treeItemWalker.firstChild();
41
+ case _tokens.treeDataTypes.ArrowDown:
42
+ treeItemWalker.currentElement = data.target;
43
+ return treeItemWalker.nextElement();
44
+ case _tokens.treeDataTypes.ArrowUp:
45
+ treeItemWalker.currentElement = data.target;
46
+ return treeItemWalker.previousElement();
47
+ }
48
+ };
49
+ function navigate(data) {
50
+ const nextElement = getNextElement(data);
51
+ if (nextElement) {
52
+ rove(nextElement);
53
+ }
47
54
  }
48
- };
49
- function navigate(data) {
50
- const nextElement = getNextElement(data);
51
- if (nextElement) {
52
- rove(nextElement);
53
- }
54
- }
55
- return [navigate, react_utilities_1.useMergedRefs(rootRef, rovingRootRef)];
55
+ return [
56
+ navigate,
57
+ (0, _reactUtilities.useMergedRefs)(rootRef, rovingRootRef)
58
+ ];
56
59
  }
57
- exports.useNestedTreeNavigation = useNestedTreeNavigation;
58
60
  function lastChildRecursive(walker) {
59
- let lastElement = null;
60
- let nextElement = null;
61
- while (nextElement = walker.lastChild()) {
62
- lastElement = nextElement;
63
- }
64
- return lastElement;
61
+ let lastElement = null;
62
+ let nextElement = null;
63
+ while(nextElement = walker.lastChild()){
64
+ lastElement = nextElement;
65
+ }
66
+ return lastElement;
65
67
  }
66
- //# sourceMappingURL=useNestedTreeNavigation.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useHTMLElementWalker_1","require","nextTypeAheadElement_1","tokens_1","treeItemFilter_1","useRovingTabIndexes_1","react_utilities_1","useNestedTreeNavigation","rove","rovingRootRef","useRovingTabIndex","treeItemFilter","walkerRef","rootRef","useHTMLElementWalkerRef","getNextElement","data","current","treeItemWalker","type","treeDataTypes","click","target","typeAhead","currentElement","nextTypeAheadElement","event","key","arrowLeft","parentElement","arrowRight","firstChild","end","root","lastChildRecursive","home","arrowDown","nextElement","arrowUp","previousElement","navigate","useMergedRefs","exports","walker","lastElement","lastChild"],"sources":["../src/packages/react-components/react-tree/src/hooks/useNestedTreeNavigation.ts"],"sourcesContent":["import { TreeNavigationData_unstable } from '../Tree';\nimport { HTMLElementWalker, useHTMLElementWalkerRef } from './useHTMLElementWalker';\nimport { nextTypeAheadElement } from '../utils/nextTypeAheadElement';\nimport { treeDataTypes } from '../utils/tokens';\nimport { treeItemFilter } from '../utils/treeItemFilter';\nimport { useRovingTabIndex } from './useRovingTabIndexes';\nimport { useMergedRefs } from '@fluentui/react-utilities';\n\nexport function useNestedTreeNavigation() {\n const [{ rove }, rovingRootRef] = useRovingTabIndex(treeItemFilter);\n const [walkerRef, rootRef] = useHTMLElementWalkerRef(treeItemFilter);\n\n const getNextElement = (data: TreeNavigationData_unstable) => {\n if (!walkerRef.current) {\n return;\n }\n const treeItemWalker = walkerRef.current;\n switch (data.type) {\n case treeDataTypes.click:\n return data.target;\n case treeDataTypes.typeAhead:\n treeItemWalker.currentElement = data.target;\n return nextTypeAheadElement(treeItemWalker, data.event.key);\n case treeDataTypes.arrowLeft:\n treeItemWalker.currentElement = data.target;\n return treeItemWalker.parentElement();\n case treeDataTypes.arrowRight:\n treeItemWalker.currentElement = data.target;\n return treeItemWalker.firstChild();\n case treeDataTypes.end:\n treeItemWalker.currentElement = treeItemWalker.root;\n return lastChildRecursive(treeItemWalker);\n case treeDataTypes.home:\n treeItemWalker.currentElement = treeItemWalker.root;\n return treeItemWalker.firstChild();\n case treeDataTypes.arrowDown:\n treeItemWalker.currentElement = data.target;\n return treeItemWalker.nextElement();\n case treeDataTypes.arrowUp:\n treeItemWalker.currentElement = data.target;\n return treeItemWalker.previousElement();\n }\n };\n function navigate(data: TreeNavigationData_unstable) {\n const nextElement = getNextElement(data);\n if (nextElement) {\n rove(nextElement);\n }\n }\n return [navigate, useMergedRefs(rootRef, rovingRootRef)] as const;\n}\n\nfunction lastChildRecursive(walker: HTMLElementWalker) {\n let lastElement: HTMLElement | null = null;\n let nextElement: HTMLElement | null = null;\n while ((nextElement = walker.lastChild())) {\n lastElement = nextElement;\n }\n return lastElement;\n}\n"],"mappings":";;;;;;AACA,MAAAA,sBAAA,gBAAAC,OAAA;AACA,MAAAC,sBAAA,gBAAAD,OAAA;AACA,MAAAE,QAAA,gBAAAF,OAAA;AACA,MAAAG,gBAAA,gBAAAH,OAAA;AACA,MAAAI,qBAAA,gBAAAJ,OAAA;AACA,MAAAK,iBAAA,gBAAAL,OAAA;AAEA,SAAgBM,uBAAuBA,CAAA;EACrC,MAAM,CAAC;IAAEC;EAAI,CAAE,EAAEC,aAAa,CAAC,GAAGJ,qBAAA,CAAAK,iBAAiB,CAACN,gBAAA,CAAAO,cAAc,CAAC;EACnE,MAAM,CAACC,SAAS,EAAEC,OAAO,CAAC,GAAGb,sBAAA,CAAAc,uBAAuB,CAACV,gBAAA,CAAAO,cAAc,CAAC;EAEpE,MAAMI,cAAc,GAAIC,IAAiC,IAAI;IAC3D,IAAI,CAACJ,SAAS,CAACK,OAAO,EAAE;MACtB;;IAEF,MAAMC,cAAc,GAAGN,SAAS,CAACK,OAAO;IACxC,QAAQD,IAAI,CAACG,IAAI;MACf,KAAKhB,QAAA,CAAAiB,aAAa,CAACC,KAAK;QACtB,OAAOL,IAAI,CAACM,MAAM;MACpB,KAAKnB,QAAA,CAAAiB,aAAa,CAACG,SAAS;QAC1BL,cAAc,CAACM,cAAc,GAAGR,IAAI,CAACM,MAAM;QAC3C,OAAOpB,sBAAA,CAAAuB,oBAAoB,CAACP,cAAc,EAAEF,IAAI,CAACU,KAAK,CAACC,GAAG,CAAC;MAC7D,KAAKxB,QAAA,CAAAiB,aAAa,CAACQ,SAAS;QAC1BV,cAAc,CAACM,cAAc,GAAGR,IAAI,CAACM,MAAM;QAC3C,OAAOJ,cAAc,CAACW,aAAa,EAAE;MACvC,KAAK1B,QAAA,CAAAiB,aAAa,CAACU,UAAU;QAC3BZ,cAAc,CAACM,cAAc,GAAGR,IAAI,CAACM,MAAM;QAC3C,OAAOJ,cAAc,CAACa,UAAU,EAAE;MACpC,KAAK5B,QAAA,CAAAiB,aAAa,CAACY,GAAG;QACpBd,cAAc,CAACM,cAAc,GAAGN,cAAc,CAACe,IAAI;QACnD,OAAOC,kBAAkB,CAAChB,cAAc,CAAC;MAC3C,KAAKf,QAAA,CAAAiB,aAAa,CAACe,IAAI;QACrBjB,cAAc,CAACM,cAAc,GAAGN,cAAc,CAACe,IAAI;QACnD,OAAOf,cAAc,CAACa,UAAU,EAAE;MACpC,KAAK5B,QAAA,CAAAiB,aAAa,CAACgB,SAAS;QAC1BlB,cAAc,CAACM,cAAc,GAAGR,IAAI,CAACM,MAAM;QAC3C,OAAOJ,cAAc,CAACmB,WAAW,EAAE;MACrC,KAAKlC,QAAA,CAAAiB,aAAa,CAACkB,OAAO;QACxBpB,cAAc,CAACM,cAAc,GAAGR,IAAI,CAACM,MAAM;QAC3C,OAAOJ,cAAc,CAACqB,eAAe,EAAE;IAAC;EAE9C,CAAC;EACD,SAASC,QAAQA,CAACxB,IAAiC;IACjD,MAAMqB,WAAW,GAAGtB,cAAc,CAACC,IAAI,CAAC;IACxC,IAAIqB,WAAW,EAAE;MACf7B,IAAI,CAAC6B,WAAW,CAAC;;EAErB;EACA,OAAO,CAACG,QAAQ,EAAElC,iBAAA,CAAAmC,aAAa,CAAC5B,OAAO,EAAEJ,aAAa,CAAC,CAAU;AACnE;AA1CAiC,OAAA,CAAAnC,uBAAA,GAAAA,uBAAA;AA4CA,SAAS2B,kBAAkBA,CAACS,MAAyB;EACnD,IAAIC,WAAW,GAAuB,IAAI;EAC1C,IAAIP,WAAW,GAAuB,IAAI;EAC1C,OAAQA,WAAW,GAAGM,MAAM,CAACE,SAAS,EAAE,EAAG;IACzCD,WAAW,GAAGP,WAAW;;EAE3B,OAAOO,WAAW;AACpB"}
1
+ {"version":3,"sources":["useNestedTreeNavigation.js"],"sourcesContent":["import { useMergedRefs } from '@fluentui/react-utilities';\nimport { useHTMLElementWalkerRef } from './useHTMLElementWalker';\nimport { nextTypeAheadElement } from '../utils/nextTypeAheadElement';\nimport { treeDataTypes } from '../utils/tokens';\nimport { treeItemFilter } from '../utils/treeItemFilter';\nimport { useRovingTabIndex } from './useRovingTabIndexes';\nexport function useNestedTreeNavigation() {\n const [{ rove }, rovingRootRef] = useRovingTabIndex(treeItemFilter);\n const [walkerRef, rootRef] = useHTMLElementWalkerRef(treeItemFilter);\n const getNextElement = (data)=>{\n if (!walkerRef.current) {\n return;\n }\n const treeItemWalker = walkerRef.current;\n switch(data.type){\n case treeDataTypes.Click:\n return data.target;\n case treeDataTypes.TypeAhead:\n treeItemWalker.currentElement = data.target;\n return nextTypeAheadElement(treeItemWalker, data.event.key);\n case treeDataTypes.ArrowLeft:\n treeItemWalker.currentElement = data.target;\n return treeItemWalker.parentElement();\n case treeDataTypes.ArrowRight:\n treeItemWalker.currentElement = data.target;\n return treeItemWalker.firstChild();\n case treeDataTypes.End:\n treeItemWalker.currentElement = treeItemWalker.root;\n return lastChildRecursive(treeItemWalker);\n case treeDataTypes.Home:\n treeItemWalker.currentElement = treeItemWalker.root;\n return treeItemWalker.firstChild();\n case treeDataTypes.ArrowDown:\n treeItemWalker.currentElement = data.target;\n return treeItemWalker.nextElement();\n case treeDataTypes.ArrowUp:\n treeItemWalker.currentElement = data.target;\n return treeItemWalker.previousElement();\n }\n };\n function navigate(data) {\n const nextElement = getNextElement(data);\n if (nextElement) {\n rove(nextElement);\n }\n }\n return [\n navigate,\n useMergedRefs(rootRef, rovingRootRef)\n ];\n}\nfunction lastChildRecursive(walker) {\n let lastElement = null;\n let nextElement = null;\n while(nextElement = walker.lastChild()){\n lastElement = nextElement;\n }\n return lastElement;\n}\n"],"names":["useNestedTreeNavigation","rove","rovingRootRef","useRovingTabIndex","treeItemFilter","walkerRef","rootRef","useHTMLElementWalkerRef","getNextElement","data","current","treeItemWalker","type","treeDataTypes","Click","target","TypeAhead","currentElement","nextTypeAheadElement","event","key","ArrowLeft","parentElement","ArrowRight","firstChild","End","root","lastChildRecursive","Home","ArrowDown","nextElement","ArrowUp","previousElement","navigate","useMergedRefs","walker","lastElement","lastChild"],"mappings":";;;;+BAMgBA;;aAAAA;;gCANc;sCACU;sCACH;wBACP;gCACC;qCACG;AAC3B,SAASA,0BAA0B;IACtC,MAAM,CAAC,EAAEC,KAAI,EAAG,EAAEC,cAAc,GAAGC,IAAAA,sCAAiB,EAACC,8BAAc;IACnE,MAAM,CAACC,WAAWC,QAAQ,GAAGC,IAAAA,6CAAuB,EAACH,8BAAc;IACnE,MAAMI,iBAAiB,CAACC,OAAO;QAC3B,IAAI,CAACJ,UAAUK,OAAO,EAAE;YACpB;QACJ,CAAC;QACD,MAAMC,iBAAiBN,UAAUK,OAAO;QACxC,OAAOD,KAAKG,IAAI;YACZ,KAAKC,qBAAa,CAACC,KAAK;gBACpB,OAAOL,KAAKM,MAAM;YACtB,KAAKF,qBAAa,CAACG,SAAS;gBACxBL,eAAeM,cAAc,GAAGR,KAAKM,MAAM;gBAC3C,OAAOG,IAAAA,0CAAoB,EAACP,gBAAgBF,KAAKU,KAAK,CAACC,GAAG;YAC9D,KAAKP,qBAAa,CAACQ,SAAS;gBACxBV,eAAeM,cAAc,GAAGR,KAAKM,MAAM;gBAC3C,OAAOJ,eAAeW,aAAa;YACvC,KAAKT,qBAAa,CAACU,UAAU;gBACzBZ,eAAeM,cAAc,GAAGR,KAAKM,MAAM;gBAC3C,OAAOJ,eAAea,UAAU;YACpC,KAAKX,qBAAa,CAACY,GAAG;gBAClBd,eAAeM,cAAc,GAAGN,eAAee,IAAI;gBACnD,OAAOC,mBAAmBhB;YAC9B,KAAKE,qBAAa,CAACe,IAAI;gBACnBjB,eAAeM,cAAc,GAAGN,eAAee,IAAI;gBACnD,OAAOf,eAAea,UAAU;YACpC,KAAKX,qBAAa,CAACgB,SAAS;gBACxBlB,eAAeM,cAAc,GAAGR,KAAKM,MAAM;gBAC3C,OAAOJ,eAAemB,WAAW;YACrC,KAAKjB,qBAAa,CAACkB,OAAO;gBACtBpB,eAAeM,cAAc,GAAGR,KAAKM,MAAM;gBAC3C,OAAOJ,eAAeqB,eAAe;QAC7C;IACJ;IACA,SAASC,SAASxB,IAAI,EAAE;QACpB,MAAMqB,cAActB,eAAeC;QACnC,IAAIqB,aAAa;YACb7B,KAAK6B;QACT,CAAC;IACL;IACA,OAAO;QACHG;QACAC,IAAAA,6BAAa,EAAC5B,SAASJ;KAC1B;AACL;AACA,SAASyB,mBAAmBQ,MAAM,EAAE;IAChC,IAAIC,cAAc,IAAI;IACtB,IAAIN,cAAc,IAAI;IACtB,MAAMA,cAAcK,OAAOE,SAAS,GAAG;QACnCD,cAAcN;IAClB;IACA,OAAOM;AACX"}
@@ -1,29 +1,37 @@
1
1
  "use strict";
2
-
3
2
  Object.defineProperty(exports, "__esModule", {
4
- value: true
3
+ value: true
5
4
  });
6
- exports.useOpenItemsState = void 0;
7
- const react_utilities_1 = /*#__PURE__*/require("@fluentui/react-utilities");
8
- const React = /*#__PURE__*/require("react");
9
- const ImmutableSet_1 = /*#__PURE__*/require("../utils/ImmutableSet");
5
+ Object.defineProperty(exports, "useOpenItemsState", {
6
+ enumerable: true,
7
+ get: ()=>useOpenItemsState
8
+ });
9
+ const _interopRequireWildcard = require("@swc/helpers/lib/_interop_require_wildcard.js").default;
10
+ const _reactUtilities = require("@fluentui/react-utilities");
11
+ const _react = /*#__PURE__*/ _interopRequireWildcard(require("react"));
12
+ const _immutableSet = require("../utils/ImmutableSet");
10
13
  function useOpenItemsState(props) {
11
- const [openItems, setOpenItems] = react_utilities_1.useControllableState({
12
- state: React.useMemo(() => props.openItems && ImmutableSet_1.createImmutableSet(props.openItems), [props.openItems]),
13
- defaultState: React.useMemo(() => props.defaultOpenItems && ImmutableSet_1.createImmutableSet(props.defaultOpenItems), [props.defaultOpenItems]),
14
- initialState: ImmutableSet_1.emptyImmutableSet
15
- });
16
- const updateOpenItems = react_utilities_1.useEventCallback(data => setOpenItems(currentOpenItems => createNextOpenItems(data, currentOpenItems)));
17
- return [openItems, updateOpenItems];
14
+ const [openItems, setOpenItems] = (0, _reactUtilities.useControllableState)({
15
+ state: _react.useMemo(()=>props.openItems && (0, _immutableSet.createImmutableSet)(props.openItems), [
16
+ props.openItems
17
+ ]),
18
+ defaultState: props.defaultOpenItems && (()=>(0, _immutableSet.createImmutableSet)(props.defaultOpenItems)),
19
+ initialState: _immutableSet.emptyImmutableSet
20
+ });
21
+ const updateOpenItems = (0, _reactUtilities.useEventCallback)((data)=>setOpenItems((currentOpenItems)=>createNextOpenItems(data, currentOpenItems)));
22
+ return [
23
+ openItems,
24
+ updateOpenItems
25
+ ];
18
26
  }
19
- exports.useOpenItemsState = useOpenItemsState;
20
27
  function createNextOpenItems(data, previousOpenItems) {
21
- const id = data.target.id;
22
- const previousOpenItemsHasId = previousOpenItems.has(id);
23
- if (data.open ? previousOpenItemsHasId : !previousOpenItemsHasId) {
24
- return previousOpenItems;
25
- }
26
- const nextOpenItems = ImmutableSet_1.createImmutableSet(previousOpenItems);
27
- return data.open ? nextOpenItems.add(id) : nextOpenItems.delete(id);
28
+ if (data.value === null) {
29
+ return previousOpenItems;
30
+ }
31
+ const previousOpenItemsHasId = previousOpenItems.has(data.value);
32
+ if (data.open ? previousOpenItemsHasId : !previousOpenItemsHasId) {
33
+ return previousOpenItems;
34
+ }
35
+ const nextOpenItems = (0, _immutableSet.createImmutableSet)(previousOpenItems);
36
+ return data.open ? nextOpenItems.add(data.value) : nextOpenItems.delete(data.value);
28
37
  }
29
- //# sourceMappingURL=useOpenItemsState.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["react_utilities_1","require","React","ImmutableSet_1","useOpenItemsState","props","openItems","setOpenItems","useControllableState","state","useMemo","createImmutableSet","defaultState","defaultOpenItems","initialState","emptyImmutableSet","updateOpenItems","useEventCallback","data","currentOpenItems","createNextOpenItems","exports","previousOpenItems","id","target","previousOpenItemsHasId","has","open","nextOpenItems","add","delete"],"sources":["../src/packages/react-components/react-tree/src/hooks/useOpenItemsState.ts"],"sourcesContent":["import { useControllableState, useEventCallback } from '@fluentui/react-utilities';\nimport * as React from 'react';\nimport { TreeItemId, TreeOpenChangeData, TreeProps } from '../Tree';\nimport { createImmutableSet, emptyImmutableSet, ImmutableSet } from '../utils/ImmutableSet';\n\nexport function useOpenItemsState(props: Pick<TreeProps, 'openItems' | 'defaultOpenItems'>) {\n const [openItems, setOpenItems] = useControllableState({\n state: React.useMemo(() => props.openItems && createImmutableSet(props.openItems), [props.openItems]),\n defaultState: React.useMemo(\n () => props.defaultOpenItems && createImmutableSet(props.defaultOpenItems),\n [props.defaultOpenItems],\n ),\n initialState: emptyImmutableSet,\n });\n const updateOpenItems = useEventCallback((data: TreeOpenChangeData) =>\n setOpenItems(currentOpenItems => createNextOpenItems(data, currentOpenItems)),\n );\n return [openItems, updateOpenItems] as const;\n}\n\nfunction createNextOpenItems(\n data: TreeOpenChangeData,\n previousOpenItems: ImmutableSet<TreeItemId>,\n): ImmutableSet<TreeItemId> {\n const id = data.target.id;\n const previousOpenItemsHasId = previousOpenItems.has(id);\n if (data.open ? previousOpenItemsHasId : !previousOpenItemsHasId) {\n return previousOpenItems;\n }\n const nextOpenItems = createImmutableSet(previousOpenItems);\n return data.open ? nextOpenItems.add(id) : nextOpenItems.delete(id);\n}\n"],"mappings":";;;;;;AAAA,MAAAA,iBAAA,gBAAAC,OAAA;AACA,MAAAC,KAAA,gBAAAD,OAAA;AAEA,MAAAE,cAAA,gBAAAF,OAAA;AAEA,SAAgBG,iBAAiBA,CAACC,KAAwD;EACxF,MAAM,CAACC,SAAS,EAAEC,YAAY,CAAC,GAAGP,iBAAA,CAAAQ,oBAAoB,CAAC;IACrDC,KAAK,EAAEP,KAAK,CAACQ,OAAO,CAAC,MAAML,KAAK,CAACC,SAAS,IAAIH,cAAA,CAAAQ,kBAAkB,CAACN,KAAK,CAACC,SAAS,CAAC,EAAE,CAACD,KAAK,CAACC,SAAS,CAAC,CAAC;IACrGM,YAAY,EAAEV,KAAK,CAACQ,OAAO,CACzB,MAAML,KAAK,CAACQ,gBAAgB,IAAIV,cAAA,CAAAQ,kBAAkB,CAACN,KAAK,CAACQ,gBAAgB,CAAC,EAC1E,CAACR,KAAK,CAACQ,gBAAgB,CAAC,CACzB;IACDC,YAAY,EAAEX,cAAA,CAAAY;GACf,CAAC;EACF,MAAMC,eAAe,GAAGhB,iBAAA,CAAAiB,gBAAgB,CAAEC,IAAwB,IAChEX,YAAY,CAACY,gBAAgB,IAAIC,mBAAmB,CAACF,IAAI,EAAEC,gBAAgB,CAAC,CAAC,CAC9E;EACD,OAAO,CAACb,SAAS,EAAEU,eAAe,CAAU;AAC9C;AAbAK,OAAA,CAAAjB,iBAAA,GAAAA,iBAAA;AAeA,SAASgB,mBAAmBA,CAC1BF,IAAwB,EACxBI,iBAA2C;EAE3C,MAAMC,EAAE,GAAGL,IAAI,CAACM,MAAM,CAACD,EAAE;EACzB,MAAME,sBAAsB,GAAGH,iBAAiB,CAACI,GAAG,CAACH,EAAE,CAAC;EACxD,IAAIL,IAAI,CAACS,IAAI,GAAGF,sBAAsB,GAAG,CAACA,sBAAsB,EAAE;IAChE,OAAOH,iBAAiB;;EAE1B,MAAMM,aAAa,GAAGzB,cAAA,CAAAQ,kBAAkB,CAACW,iBAAiB,CAAC;EAC3D,OAAOJ,IAAI,CAACS,IAAI,GAAGC,aAAa,CAACC,GAAG,CAACN,EAAE,CAAC,GAAGK,aAAa,CAACE,MAAM,CAACP,EAAE,CAAC;AACrE"}
1
+ {"version":3,"sources":["useOpenItemsState.js"],"sourcesContent":["import { useControllableState, useEventCallback } from '@fluentui/react-utilities';\nimport * as React from 'react';\nimport { createImmutableSet, emptyImmutableSet } from '../utils/ImmutableSet';\nexport function useOpenItemsState(props) {\n const [openItems, setOpenItems] = useControllableState({\n state: React.useMemo(()=>props.openItems && createImmutableSet(props.openItems), [\n props.openItems\n ]),\n defaultState: props.defaultOpenItems && (()=>createImmutableSet(props.defaultOpenItems)),\n initialState: emptyImmutableSet\n });\n const updateOpenItems = useEventCallback((data)=>setOpenItems((currentOpenItems)=>createNextOpenItems(data, currentOpenItems)));\n return [\n openItems,\n updateOpenItems\n ];\n}\nfunction createNextOpenItems(data, previousOpenItems) {\n if (data.value === null) {\n return previousOpenItems;\n }\n const previousOpenItemsHasId = previousOpenItems.has(data.value);\n if (data.open ? previousOpenItemsHasId : !previousOpenItemsHasId) {\n return previousOpenItems;\n }\n const nextOpenItems = createImmutableSet(previousOpenItems);\n return data.open ? nextOpenItems.add(data.value) : nextOpenItems.delete(data.value);\n}\n"],"names":["useOpenItemsState","props","openItems","setOpenItems","useControllableState","state","React","useMemo","createImmutableSet","defaultState","defaultOpenItems","initialState","emptyImmutableSet","updateOpenItems","useEventCallback","data","currentOpenItems","createNextOpenItems","previousOpenItems","value","previousOpenItemsHasId","has","open","nextOpenItems","add","delete"],"mappings":";;;;+BAGgBA;;aAAAA;;;gCAHuC;6DAChC;8BAC+B;AAC/C,SAASA,kBAAkBC,KAAK,EAAE;IACrC,MAAM,CAACC,WAAWC,aAAa,GAAGC,IAAAA,oCAAoB,EAAC;QACnDC,OAAOC,OAAMC,OAAO,CAAC,IAAIN,MAAMC,SAAS,IAAIM,IAAAA,gCAAkB,EAACP,MAAMC,SAAS,GAAG;YAC7ED,MAAMC,SAAS;SAClB;QACDO,cAAcR,MAAMS,gBAAgB,IAAK,CAAA,IAAIF,IAAAA,gCAAkB,EAACP,MAAMS,gBAAgB,CAAA;QACtFC,cAAcC,+BAAiB;IACnC;IACA,MAAMC,kBAAkBC,IAAAA,gCAAgB,EAAC,CAACC,OAAOZ,aAAa,CAACa,mBAAmBC,oBAAoBF,MAAMC;IAC5G,OAAO;QACHd;QACAW;KACH;AACL;AACA,SAASI,oBAAoBF,IAAI,EAAEG,iBAAiB,EAAE;IAClD,IAAIH,KAAKI,KAAK,KAAK,IAAI,EAAE;QACrB,OAAOD;IACX,CAAC;IACD,MAAME,yBAAyBF,kBAAkBG,GAAG,CAACN,KAAKI,KAAK;IAC/D,IAAIJ,KAAKO,IAAI,GAAGF,yBAAyB,CAACA,sBAAsB,EAAE;QAC9D,OAAOF;IACX,CAAC;IACD,MAAMK,gBAAgBf,IAAAA,gCAAkB,EAACU;IACzC,OAAOH,KAAKO,IAAI,GAAGC,cAAcC,GAAG,CAACT,KAAKI,KAAK,IAAII,cAAcE,MAAM,CAACV,KAAKI,KAAK,CAAC;AACvF"}
@@ -1,60 +1,61 @@
1
1
  "use strict";
2
-
3
2
  Object.defineProperty(exports, "__esModule", {
4
- value: true
3
+ value: true
5
4
  });
6
- exports.useRovingTabIndex = void 0;
7
- const react_utilities_1 = /*#__PURE__*/require("@fluentui/react-utilities");
8
- const React = /*#__PURE__*/require("react");
9
- const useHTMLElementWalker_1 = /*#__PURE__*/require("./useHTMLElementWalker");
10
- /**
11
- * https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/#kbd_roving_tabindex
12
- */
5
+ Object.defineProperty(exports, "useRovingTabIndex", {
6
+ enumerable: true,
7
+ get: ()=>useRovingTabIndex
8
+ });
9
+ const _interopRequireWildcard = require("@swc/helpers/lib/_interop_require_wildcard.js").default;
10
+ const _reactUtilities = require("@fluentui/react-utilities");
11
+ const _react = /*#__PURE__*/ _interopRequireWildcard(require("react"));
12
+ const _useHTMLElementWalker = require("./useHTMLElementWalker");
13
13
  function useRovingTabIndex(filter) {
14
- const currentElementRef = React.useRef();
15
- const [walkerRef, rootRef] = useHTMLElementWalker_1.useHTMLElementWalkerRef(filter);
16
- const rootRefCallback = element => {
17
- if (!element) {
18
- return;
19
- }
20
- reset();
21
- };
22
- function reset() {
23
- if (!walkerRef.current) {
24
- return;
25
- }
26
- const walker = walkerRef.current;
27
- walker.currentElement = walker.root;
28
- let tabbableChild = walker.firstChild(element => element.tabIndex === 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP);
29
- walker.currentElement = walker.root;
30
- tabbableChild !== null && tabbableChild !== void 0 ? tabbableChild : tabbableChild = walker.firstChild();
31
- if (!tabbableChild) {
32
- if (process.env.NODE_ENV === 'development') {
33
- // eslint-disable-next-line no-console
34
- console.warn('useRovingTabIndexes: internal error, no tabbable element was found');
35
- }
36
- return;
37
- }
38
- tabbableChild.tabIndex = 0;
39
- currentElementRef.current = tabbableChild;
40
- let nextElement = null;
41
- while ((nextElement = walker.nextElement()) && nextElement !== tabbableChild) {
42
- nextElement.tabIndex = -1;
14
+ const currentElementRef = _react.useRef();
15
+ const [walkerRef, rootRef] = (0, _useHTMLElementWalker.useHTMLElementWalkerRef)(filter);
16
+ const rootRefCallback = (element)=>{
17
+ if (!element) {
18
+ return;
19
+ }
20
+ reset();
21
+ };
22
+ function reset() {
23
+ if (!walkerRef.current) {
24
+ return;
25
+ }
26
+ const walker = walkerRef.current;
27
+ walker.currentElement = walker.root;
28
+ let tabbableChild = walker.firstChild((element)=>element.tabIndex === 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP);
29
+ walker.currentElement = walker.root;
30
+ tabbableChild !== null && tabbableChild !== void 0 ? tabbableChild : tabbableChild = walker.firstChild();
31
+ if (!tabbableChild) {
32
+ if (process.env.NODE_ENV === 'development') {
33
+ // eslint-disable-next-line no-console
34
+ console.warn('useRovingTabIndexes: internal error, no tabbable element was found');
35
+ }
36
+ return;
37
+ }
38
+ tabbableChild.tabIndex = 0;
39
+ currentElementRef.current = tabbableChild;
40
+ let nextElement = null;
41
+ while((nextElement = walker.nextElement()) && nextElement !== tabbableChild){
42
+ nextElement.tabIndex = -1;
43
+ }
43
44
  }
44
- }
45
- function rove(nextElement) {
46
- if (!currentElementRef.current) {
47
- return;
45
+ function rove(nextElement) {
46
+ if (!currentElementRef.current) {
47
+ return;
48
+ }
49
+ currentElementRef.current.tabIndex = -1;
50
+ nextElement.tabIndex = 0;
51
+ nextElement.focus();
52
+ currentElementRef.current = nextElement;
48
53
  }
49
- currentElementRef.current.tabIndex = -1;
50
- nextElement.tabIndex = 0;
51
- nextElement.focus();
52
- currentElementRef.current = nextElement;
53
- }
54
- return [{
55
- rove,
56
- reset
57
- }, react_utilities_1.useMergedRefs(rootRef, rootRefCallback)];
54
+ return [
55
+ {
56
+ rove,
57
+ reset
58
+ },
59
+ (0, _reactUtilities.useMergedRefs)(rootRef, rootRefCallback)
60
+ ];
58
61
  }
59
- exports.useRovingTabIndex = useRovingTabIndex;
60
- //# sourceMappingURL=useRovingTabIndexes.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["react_utilities_1","require","React","useHTMLElementWalker_1","useRovingTabIndex","filter","currentElementRef","useRef","walkerRef","rootRef","useHTMLElementWalkerRef","rootRefCallback","element","reset","current","walker","currentElement","root","tabbableChild","firstChild","tabIndex","NodeFilter","FILTER_ACCEPT","FILTER_SKIP","process","env","NODE_ENV","console","warn","nextElement","rove","focus","useMergedRefs","exports"],"sources":["../src/packages/react-components/react-tree/src/hooks/useRovingTabIndexes.ts"],"sourcesContent":["import { useMergedRefs } from '@fluentui/react-utilities';\nimport * as React from 'react';\nimport { HTMLElementFilter, useHTMLElementWalkerRef } from './useHTMLElementWalker';\n\n/**\n * https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/#kbd_roving_tabindex\n */\nexport function useRovingTabIndex(filter?: HTMLElementFilter) {\n const currentElementRef = React.useRef<HTMLElement>();\n const [walkerRef, rootRef] = useHTMLElementWalkerRef(filter);\n\n const rootRefCallback = (element?: HTMLElement) => {\n if (!element) {\n return;\n }\n reset();\n };\n\n function reset() {\n if (!walkerRef.current) {\n return;\n }\n const walker = walkerRef.current;\n walker.currentElement = walker.root;\n let tabbableChild = walker.firstChild(element =>\n element.tabIndex === 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP,\n );\n walker.currentElement = walker.root;\n tabbableChild ??= walker.firstChild();\n if (!tabbableChild) {\n if (process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.warn('useRovingTabIndexes: internal error, no tabbable element was found');\n }\n return;\n }\n tabbableChild.tabIndex = 0;\n currentElementRef.current = tabbableChild;\n let nextElement: HTMLElement | null = null;\n while ((nextElement = walker.nextElement()) && nextElement !== tabbableChild) {\n nextElement.tabIndex = -1;\n }\n }\n function rove(nextElement: HTMLElement) {\n if (!currentElementRef.current) {\n return;\n }\n currentElementRef.current.tabIndex = -1;\n nextElement.tabIndex = 0;\n nextElement.focus();\n currentElementRef.current = nextElement;\n }\n\n return [\n {\n rove,\n reset,\n },\n useMergedRefs(rootRef, rootRefCallback) as React.Ref<HTMLElement>,\n ] as const;\n}\n"],"mappings":";;;;;;AAAA,MAAAA,iBAAA,gBAAAC,OAAA;AACA,MAAAC,KAAA,gBAAAD,OAAA;AACA,MAAAE,sBAAA,gBAAAF,OAAA;AAEA;;;AAGA,SAAgBG,iBAAiBA,CAACC,MAA0B;EAC1D,MAAMC,iBAAiB,GAAGJ,KAAK,CAACK,MAAM,EAAe;EACrD,MAAM,CAACC,SAAS,EAAEC,OAAO,CAAC,GAAGN,sBAAA,CAAAO,uBAAuB,CAACL,MAAM,CAAC;EAE5D,MAAMM,eAAe,GAAIC,OAAqB,IAAI;IAChD,IAAI,CAACA,OAAO,EAAE;MACZ;;IAEFC,KAAK,EAAE;EACT,CAAC;EAED,SAASA,KAAKA,CAAA;IACZ,IAAI,CAACL,SAAS,CAACM,OAAO,EAAE;MACtB;;IAEF,MAAMC,MAAM,GAAGP,SAAS,CAACM,OAAO;IAChCC,MAAM,CAACC,cAAc,GAAGD,MAAM,CAACE,IAAI;IACnC,IAAIC,aAAa,GAAGH,MAAM,CAACI,UAAU,CAACP,OAAO,IAC3CA,OAAO,CAACQ,QAAQ,KAAK,CAAC,GAAGC,UAAU,CAACC,aAAa,GAAGD,UAAU,CAACE,WAAW,CAC3E;IACDR,MAAM,CAACC,cAAc,GAAGD,MAAM,CAACE,IAAI;IACnCC,aAAa,aAAbA,aAAa,cAAbA,aAAa,GAAbA,aAAa,GAAKH,MAAM,CAACI,UAAU,EAAE;IACrC,IAAI,CAACD,aAAa,EAAE;MAClB,IAAIM,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,aAAa,EAAE;QAC1C;QACAC,OAAO,CAACC,IAAI,CAAC,oEAAoE,CAAC;;MAEpF;;IAEFV,aAAa,CAACE,QAAQ,GAAG,CAAC;IAC1Bd,iBAAiB,CAACQ,OAAO,GAAGI,aAAa;IACzC,IAAIW,WAAW,GAAuB,IAAI;IAC1C,OAAO,CAACA,WAAW,GAAGd,MAAM,CAACc,WAAW,EAAE,KAAKA,WAAW,KAAKX,aAAa,EAAE;MAC5EW,WAAW,CAACT,QAAQ,GAAG,CAAC,CAAC;;EAE7B;EACA,SAASU,IAAIA,CAACD,WAAwB;IACpC,IAAI,CAACvB,iBAAiB,CAACQ,OAAO,EAAE;MAC9B;;IAEFR,iBAAiB,CAACQ,OAAO,CAACM,QAAQ,GAAG,CAAC,CAAC;IACvCS,WAAW,CAACT,QAAQ,GAAG,CAAC;IACxBS,WAAW,CAACE,KAAK,EAAE;IACnBzB,iBAAiB,CAACQ,OAAO,GAAGe,WAAW;EACzC;EAEA,OAAO,CACL;IACEC,IAAI;IACJjB;GACD,EACDb,iBAAA,CAAAgC,aAAa,CAACvB,OAAO,EAAEE,eAAe,CAA2B,CACzD;AACZ;AArDAsB,OAAA,CAAA7B,iBAAA,GAAAA,iBAAA"}
1
+ {"version":3,"sources":["useRovingTabIndexes.js"],"sourcesContent":["import { useMergedRefs } from '@fluentui/react-utilities';\nimport * as React from 'react';\nimport { useHTMLElementWalkerRef } from './useHTMLElementWalker';\n/**\n * https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/#kbd_roving_tabindex\n */ export function useRovingTabIndex(filter) {\n const currentElementRef = React.useRef();\n const [walkerRef, rootRef] = useHTMLElementWalkerRef(filter);\n const rootRefCallback = (element)=>{\n if (!element) {\n return;\n }\n reset();\n };\n function reset() {\n if (!walkerRef.current) {\n return;\n }\n const walker = walkerRef.current;\n walker.currentElement = walker.root;\n let tabbableChild = walker.firstChild((element)=>element.tabIndex === 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP);\n walker.currentElement = walker.root;\n tabbableChild !== null && tabbableChild !== void 0 ? tabbableChild : tabbableChild = walker.firstChild();\n if (!tabbableChild) {\n if (process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.warn('useRovingTabIndexes: internal error, no tabbable element was found');\n }\n return;\n }\n tabbableChild.tabIndex = 0;\n currentElementRef.current = tabbableChild;\n let nextElement = null;\n while((nextElement = walker.nextElement()) && nextElement !== tabbableChild){\n nextElement.tabIndex = -1;\n }\n }\n function rove(nextElement) {\n if (!currentElementRef.current) {\n return;\n }\n currentElementRef.current.tabIndex = -1;\n nextElement.tabIndex = 0;\n nextElement.focus();\n currentElementRef.current = nextElement;\n }\n return [\n {\n rove,\n reset\n },\n useMergedRefs(rootRef, rootRefCallback)\n ];\n}\n"],"names":["useRovingTabIndex","filter","currentElementRef","React","useRef","walkerRef","rootRef","useHTMLElementWalkerRef","rootRefCallback","element","reset","current","walker","currentElement","root","tabbableChild","firstChild","tabIndex","NodeFilter","FILTER_ACCEPT","FILTER_SKIP","process","env","NODE_ENV","console","warn","nextElement","rove","focus","useMergedRefs"],"mappings":";;;;+BAKoBA;;aAAAA;;;gCALU;6DACP;sCACiB;AAG7B,SAASA,kBAAkBC,MAAM,EAAE;IAC1C,MAAMC,oBAAoBC,OAAMC,MAAM;IACtC,MAAM,CAACC,WAAWC,QAAQ,GAAGC,IAAAA,6CAAuB,EAACN;IACrD,MAAMO,kBAAkB,CAACC,UAAU;QAC/B,IAAI,CAACA,SAAS;YACV;QACJ,CAAC;QACDC;IACJ;IACA,SAASA,QAAQ;QACb,IAAI,CAACL,UAAUM,OAAO,EAAE;YACpB;QACJ,CAAC;QACD,MAAMC,SAASP,UAAUM,OAAO;QAChCC,OAAOC,cAAc,GAAGD,OAAOE,IAAI;QACnC,IAAIC,gBAAgBH,OAAOI,UAAU,CAAC,CAACP,UAAUA,QAAQQ,QAAQ,KAAK,IAAIC,WAAWC,aAAa,GAAGD,WAAWE,WAAW;QAC3HR,OAAOC,cAAc,GAAGD,OAAOE,IAAI;QACnCC,kBAAkB,IAAI,IAAIA,kBAAkB,KAAK,IAAIA,gBAAgBA,gBAAgBH,OAAOI,UAAU,EAAE;QACxG,IAAI,CAACD,eAAe;YAChB,IAAIM,QAAQC,GAAG,CAACC,QAAQ,KAAK,eAAe;gBACxC,sCAAsC;gBACtCC,QAAQC,IAAI,CAAC;YACjB,CAAC;YACD;QACJ,CAAC;QACDV,cAAcE,QAAQ,GAAG;QACzBf,kBAAkBS,OAAO,GAAGI;QAC5B,IAAIW,cAAc,IAAI;QACtB,MAAM,AAACA,CAAAA,cAAcd,OAAOc,WAAW,EAAC,KAAMA,gBAAgBX,cAAc;YACxEW,YAAYT,QAAQ,GAAG,CAAC;QAC5B;IACJ;IACA,SAASU,KAAKD,WAAW,EAAE;QACvB,IAAI,CAACxB,kBAAkBS,OAAO,EAAE;YAC5B;QACJ,CAAC;QACDT,kBAAkBS,OAAO,CAACM,QAAQ,GAAG,CAAC;QACtCS,YAAYT,QAAQ,GAAG;QACvBS,YAAYE,KAAK;QACjB1B,kBAAkBS,OAAO,GAAGe;IAChC;IACA,OAAO;QACH;YACIC;YACAjB;QACJ;QACAmB,IAAAA,6BAAa,EAACvB,SAASE;KAC1B;AACL"}