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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (267) hide show
  1. package/CHANGELOG.json +1028 -1
  2. package/CHANGELOG.md +281 -2
  3. package/dist/index.d.ts +244 -99
  4. package/lib/Tree.js +0 -1
  5. package/lib/Tree.js.map +1 -1
  6. package/lib/TreeItem.js +0 -1
  7. package/lib/TreeItem.js.map +1 -1
  8. package/lib/TreeItemAside.js +1 -0
  9. package/lib/TreeItemAside.js.map +1 -0
  10. package/lib/TreeItemLayout.js +0 -1
  11. package/lib/TreeItemLayout.js.map +1 -1
  12. package/lib/TreeItemPersonaLayout.js +0 -1
  13. package/lib/TreeItemPersonaLayout.js.map +1 -1
  14. package/lib/components/Tree/Tree.js +6 -8
  15. package/lib/components/Tree/Tree.js.map +1 -1
  16. package/lib/components/Tree/Tree.types.js +1 -2
  17. package/lib/components/Tree/Tree.types.js.map +1 -1
  18. package/lib/components/Tree/index.js +1 -2
  19. package/lib/components/Tree/index.js.map +1 -1
  20. package/lib/components/Tree/renderTree.js +7 -13
  21. package/lib/components/Tree/renderTree.js.map +1 -1
  22. package/lib/components/Tree/useRootTree.js +145 -0
  23. package/lib/components/Tree/useRootTree.js.map +1 -0
  24. package/lib/components/Tree/useSubtree.js +35 -0
  25. package/lib/components/Tree/useSubtree.js.map +1 -0
  26. package/lib/components/Tree/useTree.js +9 -103
  27. package/lib/components/Tree/useTree.js.map +1 -1
  28. package/lib/components/Tree/useTreeContextValues.js +12 -22
  29. package/lib/components/Tree/useTreeContextValues.js.map +1 -1
  30. package/lib/components/Tree/useTreeStyles.styles.js +30 -0
  31. package/lib/components/Tree/useTreeStyles.styles.js.map +1 -0
  32. package/lib/components/TreeItem/TreeItem.js +16 -9
  33. package/lib/components/TreeItem/TreeItem.js.map +1 -1
  34. package/lib/components/TreeItem/TreeItem.types.js +1 -2
  35. package/lib/components/TreeItem/TreeItem.types.js.map +1 -1
  36. package/lib/components/TreeItem/index.js +1 -2
  37. package/lib/components/TreeItem/index.js.map +1 -1
  38. package/lib/components/TreeItem/renderTreeItem.js +7 -25
  39. package/lib/components/TreeItem/renderTreeItem.js.map +1 -1
  40. package/lib/components/TreeItem/useTreeItem.js +114 -234
  41. package/lib/components/TreeItem/useTreeItem.js.map +1 -1
  42. package/lib/components/TreeItem/useTreeItemContextValues.js +18 -16
  43. package/lib/components/TreeItem/useTreeItemContextValues.js.map +1 -1
  44. package/lib/components/TreeItem/useTreeItemStyles.styles.js +102 -0
  45. package/lib/components/TreeItem/useTreeItemStyles.styles.js.map +1 -0
  46. package/lib/components/TreeItemAside/TreeItemAside.js +13 -0
  47. package/lib/components/TreeItemAside/TreeItemAside.js.map +1 -0
  48. package/lib/components/TreeItemAside/TreeItemAside.types.js +1 -0
  49. package/lib/components/TreeItemAside/TreeItemAside.types.js.map +1 -0
  50. package/lib/components/TreeItemAside/index.js +5 -0
  51. package/lib/components/TreeItemAside/index.js.map +1 -0
  52. package/lib/components/TreeItemAside/renderTreeItemAside.js +14 -0
  53. package/lib/components/TreeItemAside/renderTreeItemAside.js.map +1 -0
  54. package/lib/components/TreeItemAside/useTreeItemAside.js +30 -0
  55. package/lib/components/TreeItemAside/useTreeItemAside.js.map +1 -0
  56. package/lib/components/TreeItemAside/useTreeItemAsideStyles.styles.js +47 -0
  57. package/lib/components/TreeItemAside/useTreeItemAsideStyles.styles.js.map +1 -0
  58. package/lib/components/TreeItemChevron.js +24 -0
  59. package/lib/components/TreeItemChevron.js.map +1 -0
  60. package/lib/components/TreeItemLayout/TreeItemLayout.js +8 -8
  61. package/lib/components/TreeItemLayout/TreeItemLayout.js.map +1 -1
  62. package/lib/components/TreeItemLayout/TreeItemLayout.types.js +1 -2
  63. package/lib/components/TreeItemLayout/TreeItemLayout.types.js.map +1 -1
  64. package/lib/components/TreeItemLayout/index.js +1 -2
  65. package/lib/components/TreeItemLayout/index.js.map +1 -1
  66. package/lib/components/TreeItemLayout/renderTreeItemLayout.js +5 -21
  67. package/lib/components/TreeItemLayout/renderTreeItemLayout.js.map +1 -1
  68. package/lib/components/TreeItemLayout/useTreeItemLayout.js +38 -39
  69. package/lib/components/TreeItemLayout/useTreeItemLayout.js.map +1 -1
  70. package/lib/components/TreeItemLayout/useTreeItemLayoutStyles.styles.js +138 -0
  71. package/lib/components/TreeItemLayout/useTreeItemLayoutStyles.styles.js.map +1 -0
  72. package/lib/components/TreeItemPersonaLayout/TreeItemPersonaLayout.js +9 -9
  73. package/lib/components/TreeItemPersonaLayout/TreeItemPersonaLayout.js.map +1 -1
  74. package/lib/components/TreeItemPersonaLayout/TreeItemPersonaLayout.types.js +1 -2
  75. package/lib/components/TreeItemPersonaLayout/TreeItemPersonaLayout.types.js.map +1 -1
  76. package/lib/components/TreeItemPersonaLayout/index.js +1 -2
  77. package/lib/components/TreeItemPersonaLayout/index.js.map +1 -1
  78. package/lib/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js +7 -27
  79. package/lib/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js.map +1 -1
  80. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js +37 -48
  81. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js.map +1 -1
  82. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutContextValues.js +9 -10
  83. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutContextValues.js.map +1 -1
  84. package/lib/components/TreeItemPersonaLayout/{useTreeItemPersonaLayoutStyles.js → useTreeItemPersonaLayoutStyles.styles.js} +51 -30
  85. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.styles.js.map +1 -0
  86. package/lib/contexts/index.js +0 -1
  87. package/lib/contexts/index.js.map +1 -1
  88. package/lib/contexts/treeContext.js +9 -14
  89. package/lib/contexts/treeContext.js.map +1 -1
  90. package/lib/contexts/treeItemContext.js +13 -10
  91. package/lib/contexts/treeItemContext.js.map +1 -1
  92. package/lib/hooks/index.js +0 -1
  93. package/lib/hooks/index.js.map +1 -1
  94. package/lib/hooks/useFlatTree.js +71 -34
  95. package/lib/hooks/useFlatTree.js.map +1 -1
  96. package/lib/hooks/useFlatTreeNavigation.js +62 -62
  97. package/lib/hooks/useFlatTreeNavigation.js.map +1 -1
  98. package/lib/hooks/useHTMLElementWalker.js +78 -76
  99. package/lib/hooks/useHTMLElementWalker.js.map +1 -1
  100. package/lib/hooks/useNestedTreeNavigation.js +49 -49
  101. package/lib/hooks/useNestedTreeNavigation.js.map +1 -1
  102. package/lib/hooks/useOpenItemsState.js +18 -15
  103. package/lib/hooks/useOpenItemsState.js.map +1 -1
  104. package/lib/hooks/useRovingTabIndexes.js +46 -45
  105. package/lib/hooks/useRovingTabIndexes.js.map +1 -1
  106. package/lib/index.js +1 -1
  107. package/lib/index.js.map +1 -1
  108. package/lib/utils/ImmutableSet.js +27 -30
  109. package/lib/utils/ImmutableSet.js.map +1 -1
  110. package/lib/utils/assert.js +5 -5
  111. package/lib/utils/assert.js.map +1 -1
  112. package/lib/utils/createFlatTreeItems.js +120 -0
  113. package/lib/utils/createFlatTreeItems.js.map +1 -0
  114. package/lib/utils/flattenTree.js +58 -28
  115. package/lib/utils/flattenTree.js.map +1 -1
  116. package/lib/utils/nextTypeAheadElement.js +11 -12
  117. package/lib/utils/nextTypeAheadElement.js.map +1 -1
  118. package/lib/utils/normalizeOpenItems.js +6 -5
  119. package/lib/utils/normalizeOpenItems.js.map +1 -1
  120. package/lib/utils/tokens.js +13 -14
  121. package/lib/utils/tokens.js.map +1 -1
  122. package/lib/utils/treeItemFilter.js +2 -3
  123. package/lib/utils/treeItemFilter.js.map +1 -1
  124. package/lib-commonjs/Tree.js +3 -5
  125. package/lib-commonjs/Tree.js.map +1 -1
  126. package/lib-commonjs/TreeItem.js +3 -5
  127. package/lib-commonjs/TreeItem.js.map +1 -1
  128. package/lib-commonjs/TreeItemAside.js +6 -0
  129. package/lib-commonjs/TreeItemAside.js.map +1 -0
  130. package/lib-commonjs/TreeItemLayout.js +3 -5
  131. package/lib-commonjs/TreeItemLayout.js.map +1 -1
  132. package/lib-commonjs/TreeItemPersonaLayout.js +3 -5
  133. package/lib-commonjs/TreeItemPersonaLayout.js.map +1 -1
  134. package/lib-commonjs/components/Tree/Tree.js +17 -23
  135. package/lib-commonjs/components/Tree/Tree.js.map +1 -1
  136. package/lib-commonjs/components/Tree/Tree.types.js +3 -3
  137. package/lib-commonjs/components/Tree/Tree.types.js.map +1 -1
  138. package/lib-commonjs/components/Tree/index.js +8 -10
  139. package/lib-commonjs/components/Tree/index.js.map +1 -1
  140. package/lib-commonjs/components/Tree/renderTree.js +14 -19
  141. package/lib-commonjs/components/Tree/renderTree.js.map +1 -1
  142. package/lib-commonjs/components/Tree/useRootTree.js +149 -0
  143. package/lib-commonjs/components/Tree/useRootTree.js.map +1 -0
  144. package/lib-commonjs/components/Tree/useSubtree.js +39 -0
  145. package/lib-commonjs/components/Tree/useSubtree.js.map +1 -0
  146. package/lib-commonjs/components/Tree/useTree.js +16 -116
  147. package/lib-commonjs/components/Tree/useTree.js.map +1 -1
  148. package/lib-commonjs/components/Tree/useTreeContextValues.js +17 -26
  149. package/lib-commonjs/components/Tree/useTreeContextValues.js.map +1 -1
  150. package/lib-commonjs/components/Tree/useTreeStyles.styles.js +53 -0
  151. package/lib-commonjs/components/Tree/useTreeStyles.styles.js.map +1 -0
  152. package/lib-commonjs/components/TreeItem/TreeItem.js +17 -18
  153. package/lib-commonjs/components/TreeItem/TreeItem.js.map +1 -1
  154. package/lib-commonjs/components/TreeItem/TreeItem.types.js +3 -4
  155. package/lib-commonjs/components/TreeItem/TreeItem.types.js.map +1 -1
  156. package/lib-commonjs/components/TreeItem/index.js +7 -9
  157. package/lib-commonjs/components/TreeItem/index.js.map +1 -1
  158. package/lib-commonjs/components/TreeItem/renderTreeItem.js +14 -33
  159. package/lib-commonjs/components/TreeItem/renderTreeItem.js.map +1 -1
  160. package/lib-commonjs/components/TreeItem/useTreeItem.js +124 -251
  161. package/lib-commonjs/components/TreeItem/useTreeItem.js.map +1 -1
  162. package/lib-commonjs/components/TreeItem/useTreeItemContextValues.js +23 -20
  163. package/lib-commonjs/components/TreeItem/useTreeItemContextValues.js.map +1 -1
  164. package/lib-commonjs/components/TreeItem/useTreeItemStyles.styles.js +206 -0
  165. package/lib-commonjs/components/TreeItem/useTreeItemStyles.styles.js.map +1 -0
  166. package/lib-commonjs/components/TreeItemAside/TreeItemAside.js +19 -0
  167. package/lib-commonjs/components/TreeItemAside/TreeItemAside.js.map +1 -0
  168. package/lib-commonjs/components/TreeItemAside/TreeItemAside.types.js +4 -0
  169. package/lib-commonjs/components/TreeItemAside/TreeItemAside.types.js.map +1 -0
  170. package/lib-commonjs/components/TreeItemAside/index.js +10 -0
  171. package/lib-commonjs/components/TreeItemAside/index.js.map +1 -0
  172. package/lib-commonjs/components/TreeItemAside/renderTreeItemAside.js +20 -0
  173. package/lib-commonjs/components/TreeItemAside/renderTreeItemAside.js.map +1 -0
  174. package/lib-commonjs/components/TreeItemAside/useTreeItemAside.js +31 -0
  175. package/lib-commonjs/components/TreeItemAside/useTreeItemAside.js.map +1 -0
  176. package/lib-commonjs/components/TreeItemAside/useTreeItemAsideStyles.styles.js +90 -0
  177. package/lib-commonjs/components/TreeItemAside/useTreeItemAsideStyles.styles.js.map +1 -0
  178. package/lib-commonjs/components/TreeItemChevron.js +33 -0
  179. package/lib-commonjs/components/TreeItemChevron.js.map +1 -0
  180. package/lib-commonjs/components/TreeItemLayout/TreeItemLayout.js +15 -16
  181. package/lib-commonjs/components/TreeItemLayout/TreeItemLayout.js.map +1 -1
  182. package/lib-commonjs/components/TreeItemLayout/TreeItemLayout.types.js +1 -3
  183. package/lib-commonjs/components/TreeItemLayout/TreeItemLayout.types.js.map +1 -1
  184. package/lib-commonjs/components/TreeItemLayout/index.js +7 -9
  185. package/lib-commonjs/components/TreeItemLayout/index.js.map +1 -1
  186. package/lib-commonjs/components/TreeItemLayout/renderTreeItemLayout.js +11 -28
  187. package/lib-commonjs/components/TreeItemLayout/renderTreeItemLayout.js.map +1 -1
  188. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayout.js +45 -52
  189. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayout.js.map +1 -1
  190. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayoutStyles.styles.js +221 -0
  191. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayoutStyles.styles.js.map +1 -0
  192. package/lib-commonjs/components/TreeItemPersonaLayout/TreeItemPersonaLayout.js +17 -18
  193. package/lib-commonjs/components/TreeItemPersonaLayout/TreeItemPersonaLayout.js.map +1 -1
  194. package/lib-commonjs/components/TreeItemPersonaLayout/TreeItemPersonaLayout.types.js +1 -3
  195. package/lib-commonjs/components/TreeItemPersonaLayout/TreeItemPersonaLayout.types.js.map +1 -1
  196. package/lib-commonjs/components/TreeItemPersonaLayout/index.js +7 -9
  197. package/lib-commonjs/components/TreeItemPersonaLayout/index.js.map +1 -1
  198. package/lib-commonjs/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js +14 -35
  199. package/lib-commonjs/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js.map +1 -1
  200. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js +44 -61
  201. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js.map +1 -1
  202. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutContextValues.js +16 -15
  203. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutContextValues.js.map +1 -1
  204. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.styles.js +230 -0
  205. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.styles.js.map +1 -0
  206. package/lib-commonjs/contexts/index.js +4 -6
  207. package/lib-commonjs/contexts/index.js.map +1 -1
  208. package/lib-commonjs/contexts/treeContext.js +23 -18
  209. package/lib-commonjs/contexts/treeContext.js.map +1 -1
  210. package/lib-commonjs/contexts/treeItemContext.js +27 -13
  211. package/lib-commonjs/contexts/treeItemContext.js.map +1 -1
  212. package/lib-commonjs/hooks/index.js +5 -7
  213. package/lib-commonjs/hooks/index.js.map +1 -1
  214. package/lib-commonjs/hooks/useFlatTree.js +79 -52
  215. package/lib-commonjs/hooks/useFlatTree.js.map +1 -1
  216. package/lib-commonjs/hooks/useFlatTreeNavigation.js +73 -72
  217. package/lib-commonjs/hooks/useFlatTreeNavigation.js.map +1 -1
  218. package/lib-commonjs/hooks/useHTMLElementWalker.js +92 -83
  219. package/lib-commonjs/hooks/useHTMLElementWalker.js.map +1 -1
  220. package/lib-commonjs/hooks/useNestedTreeNavigation.js +59 -58
  221. package/lib-commonjs/hooks/useNestedTreeNavigation.js.map +1 -1
  222. package/lib-commonjs/hooks/useOpenItemsState.js +27 -22
  223. package/lib-commonjs/hooks/useOpenItemsState.js.map +1 -1
  224. package/lib-commonjs/hooks/useRovingTabIndexes.js +54 -53
  225. package/lib-commonjs/hooks/useRovingTabIndexes.js.map +1 -1
  226. package/lib-commonjs/index.js +52 -181
  227. package/lib-commonjs/index.js.map +1 -1
  228. package/lib-commonjs/utils/ImmutableSet.js +37 -38
  229. package/lib-commonjs/utils/ImmutableSet.js.map +1 -1
  230. package/lib-commonjs/utils/assert.js +11 -9
  231. package/lib-commonjs/utils/assert.js.map +1 -1
  232. package/lib-commonjs/utils/createFlatTreeItems.js +132 -0
  233. package/lib-commonjs/utils/createFlatTreeItems.js.map +1 -0
  234. package/lib-commonjs/utils/flattenTree.js +25 -33
  235. package/lib-commonjs/utils/flattenTree.js.map +1 -1
  236. package/lib-commonjs/utils/nextTypeAheadElement.js +16 -16
  237. package/lib-commonjs/utils/nextTypeAheadElement.js.map +1 -1
  238. package/lib-commonjs/utils/normalizeOpenItems.js +11 -9
  239. package/lib-commonjs/utils/normalizeOpenItems.js.map +1 -1
  240. package/lib-commonjs/utils/tokens.js +28 -20
  241. package/lib-commonjs/utils/tokens.js.map +1 -1
  242. package/lib-commonjs/utils/treeItemFilter.js +7 -7
  243. package/lib-commonjs/utils/treeItemFilter.js.map +1 -1
  244. package/package.json +23 -17
  245. package/lib/components/Tree/useTreeStyles.js +0 -20
  246. package/lib/components/Tree/useTreeStyles.js.map +0 -1
  247. package/lib/components/TreeItem/useTreeItemStyles.js +0 -203
  248. package/lib/components/TreeItem/useTreeItemStyles.js.map +0 -1
  249. package/lib/components/TreeItemLayout/useTreeItemLayoutStyles.js +0 -98
  250. package/lib/components/TreeItemLayout/useTreeItemLayoutStyles.js.map +0 -1
  251. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.js.map +0 -1
  252. package/lib/utils/createUnfilteredFlatTree.js +0 -77
  253. package/lib/utils/createUnfilteredFlatTree.js.map +0 -1
  254. package/lib/utils/createVisibleFlatTree.js +0 -80
  255. package/lib/utils/createVisibleFlatTree.js.map +0 -1
  256. package/lib-commonjs/components/Tree/useTreeStyles.js +0 -27
  257. package/lib-commonjs/components/Tree/useTreeStyles.js.map +0 -1
  258. package/lib-commonjs/components/TreeItem/useTreeItemStyles.js +0 -210
  259. package/lib-commonjs/components/TreeItem/useTreeItemStyles.js.map +0 -1
  260. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayoutStyles.js +0 -105
  261. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayoutStyles.js.map +0 -1
  262. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.js +0 -122
  263. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.js.map +0 -1
  264. package/lib-commonjs/utils/createUnfilteredFlatTree.js +0 -84
  265. package/lib-commonjs/utils/createUnfilteredFlatTree.js.map +0 -1
  266. package/lib-commonjs/utils/createVisibleFlatTree.js +0 -87
  267. package/lib-commonjs/utils/createVisibleFlatTree.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["isHTMLElement","React","createHTMLElementWalker","root","filter","NodeFilter","FILTER_ACCEPT","temporaryFilter","treeWalker","document","createTreeWalker","SHOW_ELEMENT","acceptNode","node","FILTER_REJECT","filterResult","_a","currentElement","currentNode","element","firstChild","localFilter","result","undefined","lastChild","nextElement","nextNode","nextSibling","parentElement","parentNode","previousElement","previousNode","previousSibling","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,SAASA,aAAa,QAAQ,2BAA2B;AACzD,OAAO,KAAKC,KAAK,MAAM,OAAO;AAgB9B,OAAM,SAAUC,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,CAACb,aAAa,CAACa,IAAI,CAAC,EAAE;QACxB,OAAOR,UAAU,CAACS,aAAa;;MAEjC,MAAMC,YAAY,GAAGX,MAAM,CAACS,IAAI,CAAC;MACjC,OAAOE,YAAY,KAAKV,UAAU,CAACC,aAAa,GAAG,CAAAU,EAAA,GAAAT,eAAe,aAAfA,eAAe,uBAAfA,eAAe,CAAGM,IAAI,CAAC,cAAAG,EAAA,cAAAA,EAAA,GAAID,YAAY,GAAGA,YAAY;IAC3G;GACD,CAAC;EACF,OAAO;IACL,IAAIZ,IAAIA,CAAA;MACN,OAAOK,UAAU,CAACL,IAAmB;IACvC,CAAC;IACD,IAAIc,cAAcA,CAAA;MAChB,OAAOT,UAAU,CAACU,WAA0B;IAC9C,CAAC;IACD,IAAID,cAAcA,CAACE,OAAO;MACxBX,UAAU,CAACU,WAAW,GAAGC,OAAO;IAClC,CAAC;IACDC,UAAU,EAAEC,WAAW,IAAG;MACxBd,eAAe,GAAGc,WAAW;MAC7B,MAAMC,MAAM,GAAGd,UAAU,CAACY,UAAU,EAAwB;MAC5Db,eAAe,GAAGgB,SAAS;MAC3B,OAAOD,MAAM;IACf,CAAC;IACDE,SAAS,EAAEH,WAAW,IAAG;MACvBd,eAAe,GAAGc,WAAW;MAC7B,MAAMC,MAAM,GAAGd,UAAU,CAACgB,SAAS,EAAwB;MAC3DjB,eAAe,GAAGgB,SAAS;MAC3B,OAAOD,MAAM;IACf,CAAC;IACDG,WAAW,EAAEJ,WAAW,IAAG;MACzBd,eAAe,GAAGc,WAAW;MAC7B,MAAMC,MAAM,GAAGd,UAAU,CAACkB,QAAQ,EAAwB;MAC1DnB,eAAe,GAAGgB,SAAS;MAC3B,OAAOD,MAAM;IACf,CAAC;IACDK,WAAW,EAAEN,WAAW,IAAG;MACzBd,eAAe,GAAGc,WAAW;MAC7B,MAAMC,MAAM,GAAGd,UAAU,CAACmB,WAAW,EAAwB;MAC7DpB,eAAe,GAAGgB,SAAS;MAC3B,OAAOD,MAAM;IACf,CAAC;IACDM,aAAa,EAAEP,WAAW,IAAG;MAC3Bd,eAAe,GAAGc,WAAW;MAC7B,MAAMC,MAAM,GAAGd,UAAU,CAACqB,UAAU,EAAwB;MAC5DtB,eAAe,GAAGgB,SAAS;MAC3B,OAAOD,MAAM;IACf,CAAC;IACDQ,eAAe,EAAET,WAAW,IAAG;MAC7Bd,eAAe,GAAGc,WAAW;MAC7B,MAAMC,MAAM,GAAGd,UAAU,CAACuB,YAAY,EAAwB;MAC9DxB,eAAe,GAAGgB,SAAS;MAC3B,OAAOD,MAAM;IACf,CAAC;IACDU,eAAe,EAAEX,WAAW,IAAG;MAC7Bd,eAAe,GAAGc,WAAW;MAC7B,MAAMC,MAAM,GAAGd,UAAU,CAACwB,eAAe,EAAwB;MACjEzB,eAAe,GAAGgB,SAAS;MAC3B,OAAOD,MAAM;IACf;GACD;AACH;AAEA,OAAO,MAAMW,uBAAuB,GAAI7B,MAA0B,IAAI;EACpE,MAAM8B,SAAS,GAAGjC,KAAK,CAACkC,MAAM,EAAqB;EAEnD,MAAMC,eAAe,GAAIjB,OAAqB,IAAI;IAChD,IAAI,CAACA,OAAO,EAAE;MACZe,SAAS,CAACG,OAAO,GAAGd,SAAS;MAC7B;;IAEFW,SAAS,CAACG,OAAO,GAAGnC,uBAAuB,CAACiB,OAAO,EAAEf,MAAM,CAAC;EAC9D,CAAC;EACD,OAAO,CAAC8B,SAA+C,EAAEE,eAAyC,CAAU;AAC9G,CAAC"}
1
+ {"version":3,"sources":["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"],"names":["isHTMLElement","React","createHTMLElementWalker","root","filter","NodeFilter","FILTER_ACCEPT","temporaryFilter","treeWalker","document","createTreeWalker","SHOW_ELEMENT","acceptNode","node","FILTER_REJECT","filterResult","currentElement","currentNode","element","firstChild","localFilter","result","undefined","lastChild","nextElement","nextNode","nextSibling","parentElement","parentNode","previousElement","previousNode","previousSibling","useHTMLElementWalkerRef","walkerRef","useRef","rootRefCallback","current"],"mappings":"AAAA,SAASA,aAAa,QAAQ,4BAA4B;AAC1D,YAAYC,WAAW,QAAQ;AAgB/B,OAAO,SAASC,wBACdC,IAAiB,EACjBC,SAA4B,IAAMC,WAAWC,aAAa,EACvC;IACnB,IAAIC;IACJ,MAAMC,aAAaC,SAASC,gBAAgB,CAACP,MAAME,WAAWM,YAAY,EAAE;QAC1EC,YAAWC,IAAU,EAAE;YACrB,IAAI,CAACb,cAAca,OAAO;gBACxB,OAAOR,WAAWS,aAAa;YACjC,CAAC;YACD,MAAMC,eAAeX,OAAOS;gBACuBN;YAAnD,OAAOQ,iBAAiBV,WAAWC,aAAa,GAAGC,CAAAA,mBAAAA,4BAAAA,6BAAAA,KAAAA,IAAAA,gBAAkBM,mBAAlBN,8BAAAA,mBAA2BQ,YAAY,GAAGA,YAAY;QAC3G;IACF;IACA,OAAO;QACL,IAAIZ,QAAO;YACT,OAAOK,WAAWL,IAAI;QACxB;QACA,IAAIa,kBAAiB;YACnB,OAAOR,WAAWS,WAAW;QAC/B;QACA,IAAID,gBAAeE,QAAS;YAC1BV,WAAWS,WAAW,GAAGC;QAC3B;QACAC,YAAYC,CAAAA,cAAe;YACzBb,kBAAkBa;YAClB,MAAMC,SAASb,WAAWW,UAAU;YACpCZ,kBAAkBe;YAClB,OAAOD;QACT;QACAE,WAAWH,CAAAA,cAAe;YACxBb,kBAAkBa;YAClB,MAAMC,SAASb,WAAWe,SAAS;YACnChB,kBAAkBe;YAClB,OAAOD;QACT;QACAG,aAAaJ,CAAAA,cAAe;YAC1Bb,kBAAkBa;YAClB,MAAMC,SAASb,WAAWiB,QAAQ;YAClClB,kBAAkBe;YAClB,OAAOD;QACT;QACAK,aAAaN,CAAAA,cAAe;YAC1Bb,kBAAkBa;YAClB,MAAMC,SAASb,WAAWkB,WAAW;YACrCnB,kBAAkBe;YAClB,OAAOD;QACT;QACAM,eAAeP,CAAAA,cAAe;YAC5Bb,kBAAkBa;YAClB,MAAMC,SAASb,WAAWoB,UAAU;YACpCrB,kBAAkBe;YAClB,OAAOD;QACT;QACAQ,iBAAiBT,CAAAA,cAAe;YAC9Bb,kBAAkBa;YAClB,MAAMC,SAASb,WAAWsB,YAAY;YACtCvB,kBAAkBe;YAClB,OAAOD;QACT;QACAU,iBAAiBX,CAAAA,cAAe;YAC9Bb,kBAAkBa;YAClB,MAAMC,SAASb,WAAWuB,eAAe;YACzCxB,kBAAkBe;YAClB,OAAOD;QACT;IACF;AACF,CAAC;AAED,OAAO,MAAMW,0BAA0B,CAAC5B,SAA+B;IACrE,MAAM6B,YAAYhC,MAAMiC,MAAM;IAE9B,MAAMC,kBAAkB,CAACjB,WAA0B;QACjD,IAAI,CAACA,UAAS;YACZe,UAAUG,OAAO,GAAGd;YACpB;QACF,CAAC;QACDW,UAAUG,OAAO,GAAGlC,wBAAwBgB,UAASd;IACvD;IACA,OAAO;QAAC6B;QAAiDE;KAA0C;AACrG,EAAE"}
@@ -1,59 +1,59 @@
1
+ import { useMergedRefs } from '@fluentui/react-utilities';
1
2
  import { useHTMLElementWalkerRef } from './useHTMLElementWalker';
2
3
  import { nextTypeAheadElement } from '../utils/nextTypeAheadElement';
3
4
  import { treeDataTypes } from '../utils/tokens';
4
5
  import { treeItemFilter } from '../utils/treeItemFilter';
5
6
  import { useRovingTabIndex } from './useRovingTabIndexes';
6
- import { useMergedRefs } from '@fluentui/react-utilities';
7
7
  export function useNestedTreeNavigation() {
8
- const [{
9
- rove
10
- }, rovingRootRef] = useRovingTabIndex(treeItemFilter);
11
- const [walkerRef, rootRef] = useHTMLElementWalkerRef(treeItemFilter);
12
- const getNextElement = data => {
13
- if (!walkerRef.current) {
14
- return;
15
- }
16
- const treeItemWalker = walkerRef.current;
17
- switch (data.type) {
18
- case treeDataTypes.click:
19
- return data.target;
20
- case treeDataTypes.typeAhead:
21
- treeItemWalker.currentElement = data.target;
22
- return nextTypeAheadElement(treeItemWalker, data.event.key);
23
- case treeDataTypes.arrowLeft:
24
- treeItemWalker.currentElement = data.target;
25
- return treeItemWalker.parentElement();
26
- case treeDataTypes.arrowRight:
27
- treeItemWalker.currentElement = data.target;
28
- return treeItemWalker.firstChild();
29
- case treeDataTypes.end:
30
- treeItemWalker.currentElement = treeItemWalker.root;
31
- return lastChildRecursive(treeItemWalker);
32
- case treeDataTypes.home:
33
- treeItemWalker.currentElement = treeItemWalker.root;
34
- return treeItemWalker.firstChild();
35
- case treeDataTypes.arrowDown:
36
- treeItemWalker.currentElement = data.target;
37
- return treeItemWalker.nextElement();
38
- case treeDataTypes.arrowUp:
39
- treeItemWalker.currentElement = data.target;
40
- return treeItemWalker.previousElement();
8
+ const [{ rove }, rovingRootRef] = useRovingTabIndex(treeItemFilter);
9
+ const [walkerRef, rootRef] = useHTMLElementWalkerRef(treeItemFilter);
10
+ const getNextElement = (data)=>{
11
+ if (!walkerRef.current) {
12
+ return;
13
+ }
14
+ const treeItemWalker = walkerRef.current;
15
+ switch(data.type){
16
+ case treeDataTypes.Click:
17
+ return data.target;
18
+ case treeDataTypes.TypeAhead:
19
+ treeItemWalker.currentElement = data.target;
20
+ return nextTypeAheadElement(treeItemWalker, data.event.key);
21
+ case treeDataTypes.ArrowLeft:
22
+ treeItemWalker.currentElement = data.target;
23
+ return treeItemWalker.parentElement();
24
+ case treeDataTypes.ArrowRight:
25
+ treeItemWalker.currentElement = data.target;
26
+ return treeItemWalker.firstChild();
27
+ case treeDataTypes.End:
28
+ treeItemWalker.currentElement = treeItemWalker.root;
29
+ return lastChildRecursive(treeItemWalker);
30
+ case treeDataTypes.Home:
31
+ treeItemWalker.currentElement = treeItemWalker.root;
32
+ return treeItemWalker.firstChild();
33
+ case treeDataTypes.ArrowDown:
34
+ treeItemWalker.currentElement = data.target;
35
+ return treeItemWalker.nextElement();
36
+ case treeDataTypes.ArrowUp:
37
+ treeItemWalker.currentElement = data.target;
38
+ return treeItemWalker.previousElement();
39
+ }
40
+ };
41
+ function navigate(data) {
42
+ const nextElement = getNextElement(data);
43
+ if (nextElement) {
44
+ rove(nextElement);
45
+ }
41
46
  }
42
- };
43
- function navigate(data) {
44
- const nextElement = getNextElement(data);
45
- if (nextElement) {
46
- rove(nextElement);
47
- }
48
- }
49
- return [navigate, useMergedRefs(rootRef, rovingRootRef)];
47
+ return [
48
+ navigate,
49
+ useMergedRefs(rootRef, rovingRootRef)
50
+ ];
50
51
  }
51
52
  function lastChildRecursive(walker) {
52
- let lastElement = null;
53
- let nextElement = null;
54
- while (nextElement = walker.lastChild()) {
55
- lastElement = nextElement;
56
- }
57
- return lastElement;
53
+ let lastElement = null;
54
+ let nextElement = null;
55
+ while(nextElement = walker.lastChild()){
56
+ lastElement = nextElement;
57
+ }
58
+ return lastElement;
58
59
  }
59
- //# sourceMappingURL=useNestedTreeNavigation.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useHTMLElementWalkerRef","nextTypeAheadElement","treeDataTypes","treeItemFilter","useRovingTabIndex","useMergedRefs","useNestedTreeNavigation","rove","rovingRootRef","walkerRef","rootRef","getNextElement","data","current","treeItemWalker","type","click","target","typeAhead","currentElement","event","key","arrowLeft","parentElement","arrowRight","firstChild","end","root","lastChildRecursive","home","arrowDown","nextElement","arrowUp","previousElement","navigate","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,SAA4BA,uBAAuB,QAAQ,wBAAwB;AACnF,SAASC,oBAAoB,QAAQ,+BAA+B;AACpE,SAASC,aAAa,QAAQ,iBAAiB;AAC/C,SAASC,cAAc,QAAQ,yBAAyB;AACxD,SAASC,iBAAiB,QAAQ,uBAAuB;AACzD,SAASC,aAAa,QAAQ,2BAA2B;AAEzD,OAAM,SAAUC,uBAAuBA,CAAA;EACrC,MAAM,CAAC;IAAEC;EAAI,CAAE,EAAEC,aAAa,CAAC,GAAGJ,iBAAiB,CAACD,cAAc,CAAC;EACnE,MAAM,CAACM,SAAS,EAAEC,OAAO,CAAC,GAAGV,uBAAuB,CAACG,cAAc,CAAC;EAEpE,MAAMQ,cAAc,GAAIC,IAAiC,IAAI;IAC3D,IAAI,CAACH,SAAS,CAACI,OAAO,EAAE;MACtB;;IAEF,MAAMC,cAAc,GAAGL,SAAS,CAACI,OAAO;IACxC,QAAQD,IAAI,CAACG,IAAI;MACf,KAAKb,aAAa,CAACc,KAAK;QACtB,OAAOJ,IAAI,CAACK,MAAM;MACpB,KAAKf,aAAa,CAACgB,SAAS;QAC1BJ,cAAc,CAACK,cAAc,GAAGP,IAAI,CAACK,MAAM;QAC3C,OAAOhB,oBAAoB,CAACa,cAAc,EAAEF,IAAI,CAACQ,KAAK,CAACC,GAAG,CAAC;MAC7D,KAAKnB,aAAa,CAACoB,SAAS;QAC1BR,cAAc,CAACK,cAAc,GAAGP,IAAI,CAACK,MAAM;QAC3C,OAAOH,cAAc,CAACS,aAAa,EAAE;MACvC,KAAKrB,aAAa,CAACsB,UAAU;QAC3BV,cAAc,CAACK,cAAc,GAAGP,IAAI,CAACK,MAAM;QAC3C,OAAOH,cAAc,CAACW,UAAU,EAAE;MACpC,KAAKvB,aAAa,CAACwB,GAAG;QACpBZ,cAAc,CAACK,cAAc,GAAGL,cAAc,CAACa,IAAI;QACnD,OAAOC,kBAAkB,CAACd,cAAc,CAAC;MAC3C,KAAKZ,aAAa,CAAC2B,IAAI;QACrBf,cAAc,CAACK,cAAc,GAAGL,cAAc,CAACa,IAAI;QACnD,OAAOb,cAAc,CAACW,UAAU,EAAE;MACpC,KAAKvB,aAAa,CAAC4B,SAAS;QAC1BhB,cAAc,CAACK,cAAc,GAAGP,IAAI,CAACK,MAAM;QAC3C,OAAOH,cAAc,CAACiB,WAAW,EAAE;MACrC,KAAK7B,aAAa,CAAC8B,OAAO;QACxBlB,cAAc,CAACK,cAAc,GAAGP,IAAI,CAACK,MAAM;QAC3C,OAAOH,cAAc,CAACmB,eAAe,EAAE;IAAC;EAE9C,CAAC;EACD,SAASC,QAAQA,CAACtB,IAAiC;IACjD,MAAMmB,WAAW,GAAGpB,cAAc,CAACC,IAAI,CAAC;IACxC,IAAImB,WAAW,EAAE;MACfxB,IAAI,CAACwB,WAAW,CAAC;;EAErB;EACA,OAAO,CAACG,QAAQ,EAAE7B,aAAa,CAACK,OAAO,EAAEF,aAAa,CAAC,CAAU;AACnE;AAEA,SAASoB,kBAAkBA,CAACO,MAAyB;EACnD,IAAIC,WAAW,GAAuB,IAAI;EAC1C,IAAIL,WAAW,GAAuB,IAAI;EAC1C,OAAQA,WAAW,GAAGI,MAAM,CAACE,SAAS,EAAE,EAAG;IACzCD,WAAW,GAAGL,WAAW;;EAE3B,OAAOK,WAAW;AACpB"}
1
+ {"version":3,"sources":["useNestedTreeNavigation.ts"],"sourcesContent":["import { useMergedRefs } from '@fluentui/react-utilities';\nimport { 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';\n\nexport function useNestedTreeNavigation() {\n const [{ rove }, rovingRootRef] = useRovingTabIndex(treeItemFilter);\n const [walkerRef, rootRef] = useHTMLElementWalkerRef(treeItemFilter);\n\n const getNextElement = (data: TreeNavigationData_unstable<unknown>) => {\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<unknown>) {\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"],"names":["useMergedRefs","useHTMLElementWalkerRef","nextTypeAheadElement","treeDataTypes","treeItemFilter","useRovingTabIndex","useNestedTreeNavigation","rove","rovingRootRef","walkerRef","rootRef","getNextElement","data","current","treeItemWalker","type","Click","target","TypeAhead","currentElement","event","key","ArrowLeft","parentElement","ArrowRight","firstChild","End","root","lastChildRecursive","Home","ArrowDown","nextElement","ArrowUp","previousElement","navigate","walker","lastElement","lastChild"],"mappings":"AAAA,SAASA,aAAa,QAAQ,4BAA4B;AAE1D,SAA4BC,uBAAuB,QAAQ,yBAAyB;AACpF,SAASC,oBAAoB,QAAQ,gCAAgC;AACrE,SAASC,aAAa,QAAQ,kBAAkB;AAChD,SAASC,cAAc,QAAQ,0BAA0B;AACzD,SAASC,iBAAiB,QAAQ,wBAAwB;AAE1D,OAAO,SAASC,0BAA0B;IACxC,MAAM,CAAC,EAAEC,KAAI,EAAE,EAAEC,cAAc,GAAGH,kBAAkBD;IACpD,MAAM,CAACK,WAAWC,QAAQ,GAAGT,wBAAwBG;IAErD,MAAMO,iBAAiB,CAACC,OAA+C;QACrE,IAAI,CAACH,UAAUI,OAAO,EAAE;YACtB;QACF,CAAC;QACD,MAAMC,iBAAiBL,UAAUI,OAAO;QACxC,OAAQD,KAAKG,IAAI;YACf,KAAKZ,cAAca,KAAK;gBACtB,OAAOJ,KAAKK,MAAM;YACpB,KAAKd,cAAce,SAAS;gBAC1BJ,eAAeK,cAAc,GAAGP,KAAKK,MAAM;gBAC3C,OAAOf,qBAAqBY,gBAAgBF,KAAKQ,KAAK,CAACC,GAAG;YAC5D,KAAKlB,cAAcmB,SAAS;gBAC1BR,eAAeK,cAAc,GAAGP,KAAKK,MAAM;gBAC3C,OAAOH,eAAeS,aAAa;YACrC,KAAKpB,cAAcqB,UAAU;gBAC3BV,eAAeK,cAAc,GAAGP,KAAKK,MAAM;gBAC3C,OAAOH,eAAeW,UAAU;YAClC,KAAKtB,cAAcuB,GAAG;gBACpBZ,eAAeK,cAAc,GAAGL,eAAea,IAAI;gBACnD,OAAOC,mBAAmBd;YAC5B,KAAKX,cAAc0B,IAAI;gBACrBf,eAAeK,cAAc,GAAGL,eAAea,IAAI;gBACnD,OAAOb,eAAeW,UAAU;YAClC,KAAKtB,cAAc2B,SAAS;gBAC1BhB,eAAeK,cAAc,GAAGP,KAAKK,MAAM;gBAC3C,OAAOH,eAAeiB,WAAW;YACnC,KAAK5B,cAAc6B,OAAO;gBACxBlB,eAAeK,cAAc,GAAGP,KAAKK,MAAM;gBAC3C,OAAOH,eAAemB,eAAe;QACzC;IACF;IACA,SAASC,SAAStB,IAA0C,EAAE;QAC5D,MAAMmB,cAAcpB,eAAeC;QACnC,IAAImB,aAAa;YACfxB,KAAKwB;QACP,CAAC;IACH;IACA,OAAO;QAACG;QAAUlC,cAAcU,SAASF;KAAe;AAC1D,CAAC;AAED,SAASoB,mBAAmBO,MAAyB,EAAE;IACrD,IAAIC,cAAkC,IAAI;IAC1C,IAAIL,cAAkC,IAAI;IAC1C,MAAQA,cAAcI,OAAOE,SAAS,GAAK;QACzCD,cAAcL;IAChB;IACA,OAAOK;AACT"}
@@ -2,21 +2,24 @@ import { useControllableState, useEventCallback } from '@fluentui/react-utilitie
2
2
  import * as React from 'react';
3
3
  import { createImmutableSet, emptyImmutableSet } from '../utils/ImmutableSet';
4
4
  export function useOpenItemsState(props) {
5
- const [openItems, setOpenItems] = useControllableState({
6
- state: React.useMemo(() => props.openItems && createImmutableSet(props.openItems), [props.openItems]),
7
- defaultState: React.useMemo(() => props.defaultOpenItems && createImmutableSet(props.defaultOpenItems), [props.defaultOpenItems]),
8
- initialState: emptyImmutableSet
9
- });
10
- const updateOpenItems = useEventCallback(data => setOpenItems(currentOpenItems => createNextOpenItems(data, currentOpenItems)));
11
- return [openItems, updateOpenItems];
5
+ const [openItems, setOpenItems] = useControllableState({
6
+ state: React.useMemo(()=>props.openItems && createImmutableSet(props.openItems), [
7
+ props.openItems
8
+ ]),
9
+ defaultState: props.defaultOpenItems && (()=>createImmutableSet(props.defaultOpenItems)),
10
+ initialState: emptyImmutableSet
11
+ });
12
+ const updateOpenItems = useEventCallback((data)=>setOpenItems((currentOpenItems)=>createNextOpenItems(data, currentOpenItems)));
13
+ return [
14
+ openItems,
15
+ updateOpenItems
16
+ ];
12
17
  }
13
18
  function createNextOpenItems(data, previousOpenItems) {
14
- const id = data.target.id;
15
- const previousOpenItemsHasId = previousOpenItems.has(id);
16
- if (data.open ? previousOpenItemsHasId : !previousOpenItemsHasId) {
17
- return previousOpenItems;
18
- }
19
- const nextOpenItems = createImmutableSet(previousOpenItems);
20
- return data.open ? nextOpenItems.add(id) : nextOpenItems.delete(id);
19
+ const previousOpenItemsHasId = previousOpenItems.has(data.value);
20
+ if (data.open ? previousOpenItemsHasId : !previousOpenItemsHasId) {
21
+ return previousOpenItems;
22
+ }
23
+ const nextOpenItems = createImmutableSet(previousOpenItems);
24
+ return data.open ? nextOpenItems.add(data.value) : nextOpenItems.delete(data.value);
21
25
  }
22
- //# sourceMappingURL=useOpenItemsState.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useControllableState","useEventCallback","React","createImmutableSet","emptyImmutableSet","useOpenItemsState","props","openItems","setOpenItems","state","useMemo","defaultState","defaultOpenItems","initialState","updateOpenItems","data","currentOpenItems","createNextOpenItems","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,SAASA,oBAAoB,EAAEC,gBAAgB,QAAQ,2BAA2B;AAClF,OAAO,KAAKC,KAAK,MAAM,OAAO;AAE9B,SAASC,kBAAkB,EAAEC,iBAAiB,QAAsB,uBAAuB;AAE3F,OAAM,SAAUC,iBAAiBA,CAACC,KAAwD;EACxF,MAAM,CAACC,SAAS,EAAEC,YAAY,CAAC,GAAGR,oBAAoB,CAAC;IACrDS,KAAK,EAAEP,KAAK,CAACQ,OAAO,CAAC,MAAMJ,KAAK,CAACC,SAAS,IAAIJ,kBAAkB,CAACG,KAAK,CAACC,SAAS,CAAC,EAAE,CAACD,KAAK,CAACC,SAAS,CAAC,CAAC;IACrGI,YAAY,EAAET,KAAK,CAACQ,OAAO,CACzB,MAAMJ,KAAK,CAACM,gBAAgB,IAAIT,kBAAkB,CAACG,KAAK,CAACM,gBAAgB,CAAC,EAC1E,CAACN,KAAK,CAACM,gBAAgB,CAAC,CACzB;IACDC,YAAY,EAAET;GACf,CAAC;EACF,MAAMU,eAAe,GAAGb,gBAAgB,CAAEc,IAAwB,IAChEP,YAAY,CAACQ,gBAAgB,IAAIC,mBAAmB,CAACF,IAAI,EAAEC,gBAAgB,CAAC,CAAC,CAC9E;EACD,OAAO,CAACT,SAAS,EAAEO,eAAe,CAAU;AAC9C;AAEA,SAASG,mBAAmBA,CAC1BF,IAAwB,EACxBG,iBAA2C;EAE3C,MAAMC,EAAE,GAAGJ,IAAI,CAACK,MAAM,CAACD,EAAE;EACzB,MAAME,sBAAsB,GAAGH,iBAAiB,CAACI,GAAG,CAACH,EAAE,CAAC;EACxD,IAAIJ,IAAI,CAACQ,IAAI,GAAGF,sBAAsB,GAAG,CAACA,sBAAsB,EAAE;IAChE,OAAOH,iBAAiB;;EAE1B,MAAMM,aAAa,GAAGrB,kBAAkB,CAACe,iBAAiB,CAAC;EAC3D,OAAOH,IAAI,CAACQ,IAAI,GAAGC,aAAa,CAACC,GAAG,CAACN,EAAE,CAAC,GAAGK,aAAa,CAACE,MAAM,CAACP,EAAE,CAAC;AACrE"}
1
+ {"version":3,"sources":["useOpenItemsState.ts"],"sourcesContent":["import { useControllableState, useEventCallback } from '@fluentui/react-utilities';\nimport * as React from 'react';\nimport { createImmutableSet, emptyImmutableSet, ImmutableSet } from '../utils/ImmutableSet';\nimport type { TreeOpenChangeData, TreeProps } from '../Tree';\n\nexport function useOpenItemsState<Value = string>(props: Pick<TreeProps<Value>, 'openItems' | 'defaultOpenItems'>) {\n const [openItems, setOpenItems] = useControllableState({\n state: React.useMemo(() => props.openItems && createImmutableSet(props.openItems), [props.openItems]),\n defaultState: props.defaultOpenItems && (() => createImmutableSet(props.defaultOpenItems)),\n initialState: emptyImmutableSet,\n });\n const updateOpenItems = useEventCallback((data: TreeOpenChangeData<Value>) =>\n setOpenItems(currentOpenItems => createNextOpenItems(data, currentOpenItems)),\n );\n return [openItems, updateOpenItems] as const;\n}\n\nfunction createNextOpenItems<Value = string>(\n data: TreeOpenChangeData<Value>,\n previousOpenItems: ImmutableSet<Value>,\n): ImmutableSet<Value> {\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":["useControllableState","useEventCallback","React","createImmutableSet","emptyImmutableSet","useOpenItemsState","props","openItems","setOpenItems","state","useMemo","defaultState","defaultOpenItems","initialState","updateOpenItems","data","currentOpenItems","createNextOpenItems","previousOpenItems","previousOpenItemsHasId","has","value","open","nextOpenItems","add","delete"],"mappings":"AAAA,SAASA,oBAAoB,EAAEC,gBAAgB,QAAQ,4BAA4B;AACnF,YAAYC,WAAW,QAAQ;AAC/B,SAASC,kBAAkB,EAAEC,iBAAiB,QAAsB,wBAAwB;AAG5F,OAAO,SAASC,kBAAkCC,KAA+D,EAAE;IACjH,MAAM,CAACC,WAAWC,aAAa,GAAGR,qBAAqB;QACrDS,OAAOP,MAAMQ,OAAO,CAAC,IAAMJ,MAAMC,SAAS,IAAIJ,mBAAmBG,MAAMC,SAAS,GAAG;YAACD,MAAMC,SAAS;SAAC;QACpGI,cAAcL,MAAMM,gBAAgB,IAAK,CAAA,IAAMT,mBAAmBG,MAAMM,gBAAgB,CAAA;QACxFC,cAAcT;IAChB;IACA,MAAMU,kBAAkBb,iBAAiB,CAACc,OACxCP,aAAaQ,CAAAA,mBAAoBC,oBAAoBF,MAAMC;IAE7D,OAAO;QAACT;QAAWO;KAAgB;AACrC,CAAC;AAED,SAASG,oBACPF,IAA+B,EAC/BG,iBAAsC,EACjB;IACrB,MAAMC,yBAAyBD,kBAAkBE,GAAG,CAACL,KAAKM,KAAK;IAC/D,IAAIN,KAAKO,IAAI,GAAGH,yBAAyB,CAACA,sBAAsB,EAAE;QAChE,OAAOD;IACT,CAAC;IACD,MAAMK,gBAAgBpB,mBAAmBe;IACzC,OAAOH,KAAKO,IAAI,GAAGC,cAAcC,GAAG,CAACT,KAAKM,KAAK,IAAIE,cAAcE,MAAM,CAACV,KAAKM,KAAK,CAAC;AACrF"}
@@ -3,51 +3,52 @@ import * as React from 'react';
3
3
  import { useHTMLElementWalkerRef } from './useHTMLElementWalker';
4
4
  /**
5
5
  * https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/#kbd_roving_tabindex
6
- */
7
- export function useRovingTabIndex(filter) {
8
- const currentElementRef = React.useRef();
9
- const [walkerRef, rootRef] = useHTMLElementWalkerRef(filter);
10
- const rootRefCallback = element => {
11
- if (!element) {
12
- return;
6
+ */ export function useRovingTabIndex(filter) {
7
+ const currentElementRef = React.useRef();
8
+ const [walkerRef, rootRef] = useHTMLElementWalkerRef(filter);
9
+ const rootRefCallback = (element)=>{
10
+ if (!element) {
11
+ return;
12
+ }
13
+ reset();
14
+ };
15
+ function reset() {
16
+ if (!walkerRef.current) {
17
+ return;
18
+ }
19
+ const walker = walkerRef.current;
20
+ walker.currentElement = walker.root;
21
+ let tabbableChild = walker.firstChild((element)=>element.tabIndex === 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP);
22
+ walker.currentElement = walker.root;
23
+ tabbableChild !== null && tabbableChild !== void 0 ? tabbableChild : tabbableChild = walker.firstChild();
24
+ if (!tabbableChild) {
25
+ if (process.env.NODE_ENV === 'development') {
26
+ // eslint-disable-next-line no-console
27
+ console.warn('useRovingTabIndexes: internal error, no tabbable element was found');
28
+ }
29
+ return;
30
+ }
31
+ tabbableChild.tabIndex = 0;
32
+ currentElementRef.current = tabbableChild;
33
+ let nextElement = null;
34
+ while((nextElement = walker.nextElement()) && nextElement !== tabbableChild){
35
+ nextElement.tabIndex = -1;
36
+ }
13
37
  }
14
- reset();
15
- };
16
- function reset() {
17
- if (!walkerRef.current) {
18
- return;
38
+ function rove(nextElement) {
39
+ if (!currentElementRef.current) {
40
+ return;
41
+ }
42
+ currentElementRef.current.tabIndex = -1;
43
+ nextElement.tabIndex = 0;
44
+ nextElement.focus();
45
+ currentElementRef.current = nextElement;
19
46
  }
20
- const walker = walkerRef.current;
21
- walker.currentElement = walker.root;
22
- let tabbableChild = walker.firstChild(element => element.tabIndex === 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP);
23
- walker.currentElement = walker.root;
24
- tabbableChild !== null && tabbableChild !== void 0 ? tabbableChild : tabbableChild = walker.firstChild();
25
- if (!tabbableChild) {
26
- if (process.env.NODE_ENV === 'development') {
27
- // eslint-disable-next-line no-console
28
- console.warn('useRovingTabIndexes: internal error, no tabbable element was found');
29
- }
30
- return;
31
- }
32
- tabbableChild.tabIndex = 0;
33
- currentElementRef.current = tabbableChild;
34
- let nextElement = null;
35
- while ((nextElement = walker.nextElement()) && nextElement !== tabbableChild) {
36
- nextElement.tabIndex = -1;
37
- }
38
- }
39
- function rove(nextElement) {
40
- if (!currentElementRef.current) {
41
- return;
42
- }
43
- currentElementRef.current.tabIndex = -1;
44
- nextElement.tabIndex = 0;
45
- nextElement.focus();
46
- currentElementRef.current = nextElement;
47
- }
48
- return [{
49
- rove,
50
- reset
51
- }, useMergedRefs(rootRef, rootRefCallback)];
47
+ return [
48
+ {
49
+ rove,
50
+ reset
51
+ },
52
+ useMergedRefs(rootRef, rootRefCallback)
53
+ ];
52
54
  }
53
- //# sourceMappingURL=useRovingTabIndexes.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useMergedRefs","React","useHTMLElementWalkerRef","useRovingTabIndex","filter","currentElementRef","useRef","walkerRef","rootRef","rootRefCallback","element","reset","current","walker","currentElement","root","tabbableChild","firstChild","tabIndex","NodeFilter","FILTER_ACCEPT","FILTER_SKIP","process","env","NODE_ENV","console","warn","nextElement","rove","focus"],"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,SAASA,aAAa,QAAQ,2BAA2B;AACzD,OAAO,KAAKC,KAAK,MAAM,OAAO;AAC9B,SAA4BC,uBAAuB,QAAQ,wBAAwB;AAEnF;;;AAGA,OAAM,SAAUC,iBAAiBA,CAACC,MAA0B;EAC1D,MAAMC,iBAAiB,GAAGJ,KAAK,CAACK,MAAM,EAAe;EACrD,MAAM,CAACC,SAAS,EAAEC,OAAO,CAAC,GAAGN,uBAAuB,CAACE,MAAM,CAAC;EAE5D,MAAMK,eAAe,GAAIC,OAAqB,IAAI;IAChD,IAAI,CAACA,OAAO,EAAE;MACZ;;IAEFC,KAAK,EAAE;EACT,CAAC;EAED,SAASA,KAAKA,CAAA;IACZ,IAAI,CAACJ,SAAS,CAACK,OAAO,EAAE;MACtB;;IAEF,MAAMC,MAAM,GAAGN,SAAS,CAACK,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;IAC1Bb,iBAAiB,CAACO,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,CAACtB,iBAAiB,CAACO,OAAO,EAAE;MAC9B;;IAEFP,iBAAiB,CAACO,OAAO,CAACM,QAAQ,GAAG,CAAC,CAAC;IACvCS,WAAW,CAACT,QAAQ,GAAG,CAAC;IACxBS,WAAW,CAACE,KAAK,EAAE;IACnBxB,iBAAiB,CAACO,OAAO,GAAGe,WAAW;EACzC;EAEA,OAAO,CACL;IACEC,IAAI;IACJjB;GACD,EACDX,aAAa,CAACQ,OAAO,EAAEC,eAAe,CAA2B,CACzD;AACZ"}
1
+ {"version":3,"sources":["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"],"names":["useMergedRefs","React","useHTMLElementWalkerRef","useRovingTabIndex","filter","currentElementRef","useRef","walkerRef","rootRef","rootRefCallback","element","reset","current","walker","currentElement","root","tabbableChild","firstChild","tabIndex","NodeFilter","FILTER_ACCEPT","FILTER_SKIP","process","env","NODE_ENV","console","warn","nextElement","rove","focus"],"mappings":"AAAA,SAASA,aAAa,QAAQ,4BAA4B;AAC1D,YAAYC,WAAW,QAAQ;AAC/B,SAA4BC,uBAAuB,QAAQ,yBAAyB;AAEpF;;CAEC,GACD,OAAO,SAASC,kBAAkBC,MAA0B,EAAE;IAC5D,MAAMC,oBAAoBJ,MAAMK,MAAM;IACtC,MAAM,CAACC,WAAWC,QAAQ,GAAGN,wBAAwBE;IAErD,MAAMK,kBAAkB,CAACC,UAA0B;QACjD,IAAI,CAACA,SAAS;YACZ;QACF,CAAC;QACDC;IACF;IAEA,SAASA,QAAQ;QACf,IAAI,CAACJ,UAAUK,OAAO,EAAE;YACtB;QACF,CAAC;QACD,MAAMC,SAASN,UAAUK,OAAO;QAChCC,OAAOC,cAAc,GAAGD,OAAOE,IAAI;QACnC,IAAIC,gBAAgBH,OAAOI,UAAU,CAACP,CAAAA,UACpCA,QAAQQ,QAAQ,KAAK,IAAIC,WAAWC,aAAa,GAAGD,WAAWE,WAAW;QAE5ER,OAAOC,cAAc,GAAGD,OAAOE,IAAI;QACnCC,0BAAAA,2BAAAA,gBAAAA,gBAAkBH,OAAOI,UAAU,EAAE;QACrC,IAAI,CAACD,eAAe;YAClB,IAAIM,QAAQC,GAAG,CAACC,QAAQ,KAAK,eAAe;gBAC1C,sCAAsC;gBACtCC,QAAQC,IAAI,CAAC;YACf,CAAC;YACD;QACF,CAAC;QACDV,cAAcE,QAAQ,GAAG;QACzBb,kBAAkBO,OAAO,GAAGI;QAC5B,IAAIW,cAAkC,IAAI;QAC1C,MAAO,AAACA,CAAAA,cAAcd,OAAOc,WAAW,EAAC,KAAMA,gBAAgBX,cAAe;YAC5EW,YAAYT,QAAQ,GAAG,CAAC;QAC1B;IACF;IACA,SAASU,KAAKD,WAAwB,EAAE;QACtC,IAAI,CAACtB,kBAAkBO,OAAO,EAAE;YAC9B;QACF,CAAC;QACDP,kBAAkBO,OAAO,CAACM,QAAQ,GAAG,CAAC;QACtCS,YAAYT,QAAQ,GAAG;QACvBS,YAAYE,KAAK;QACjBxB,kBAAkBO,OAAO,GAAGe;IAC9B;IAEA,OAAO;QACL;YACEC;YACAjB;QACF;QACAX,cAAcQ,SAASC;KACxB;AACH,CAAC"}
package/lib/index.js CHANGED
@@ -4,6 +4,6 @@ export { treeItemLevelToken } from './utils/tokens';
4
4
  export { TreeItem, treeItemClassNames, renderTreeItem_unstable, useTreeItemStyles_unstable, useTreeItem_unstable } from './TreeItem';
5
5
  export { TreeItemLayout, treeItemLayoutClassNames, renderTreeItemLayout_unstable, useTreeItemLayoutStyles_unstable, useTreeItemLayout_unstable } from './TreeItemLayout';
6
6
  export { TreeItemPersonaLayout, treeItemPersonaLayoutClassNames, renderTreeItemPersonaLayout_unstable, useTreeItemPersonaLayoutStyles_unstable, useTreeItemPersonaLayout_unstable } from './TreeItemPersonaLayout';
7
+ export { TreeItemAside, treeItemAsideClassNames, renderTreeItemAside_unstable, useTreeItemAsideStyles_unstable, useTreeItemAside_unstable } from './TreeItemAside';
7
8
  export { useFlatTree_unstable } from './hooks/index';
8
9
  export { flattenTree_unstable } from './utils/flattenTree';
9
- //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["Tree","treeClassNames","renderTree_unstable","useTreeStyles_unstable","useTree_unstable","useTreeContextValues_unstable","TreeProvider","useTreeContext_unstable","useTreeItemContext_unstable","TreeItemProvider","treeItemLevelToken","TreeItem","treeItemClassNames","renderTreeItem_unstable","useTreeItemStyles_unstable","useTreeItem_unstable","TreeItemLayout","treeItemLayoutClassNames","renderTreeItemLayout_unstable","useTreeItemLayoutStyles_unstable","useTreeItemLayout_unstable","TreeItemPersonaLayout","treeItemPersonaLayoutClassNames","renderTreeItemPersonaLayout_unstable","useTreeItemPersonaLayoutStyles_unstable","useTreeItemPersonaLayout_unstable","useFlatTree_unstable","flattenTree_unstable"],"sources":["../src/packages/react-components/react-tree/src/index.ts"],"sourcesContent":["export {\n Tree,\n treeClassNames,\n renderTree_unstable,\n useTreeStyles_unstable,\n useTree_unstable,\n useTreeContextValues_unstable,\n} from './Tree';\nexport type {\n TreeProps,\n TreeState,\n TreeSlots,\n TreeOpenChangeData,\n TreeOpenChangeEvent,\n TreeNavigationEvent_unstable,\n TreeNavigationData_unstable,\n TreeItemId,\n} from './Tree';\n\nexport { TreeProvider, useTreeContext_unstable, useTreeItemContext_unstable, TreeItemProvider } from './contexts';\nexport type { TreeContextValue } from './contexts';\n\nexport { treeItemLevelToken } from './utils/tokens';\n\nexport {\n TreeItem,\n treeItemClassNames,\n renderTreeItem_unstable,\n useTreeItemStyles_unstable,\n useTreeItem_unstable,\n} from './TreeItem';\nexport type { TreeItemProps, TreeItemState, TreeItemSlots } from './TreeItem';\n\nexport {\n TreeItemLayout,\n treeItemLayoutClassNames,\n renderTreeItemLayout_unstable,\n useTreeItemLayoutStyles_unstable,\n useTreeItemLayout_unstable,\n} from './TreeItemLayout';\nexport type { TreeItemLayoutProps, TreeItemLayoutSlots, TreeItemLayoutState } from './TreeItemLayout';\n\nexport {\n TreeItemPersonaLayout,\n treeItemPersonaLayoutClassNames,\n renderTreeItemPersonaLayout_unstable,\n useTreeItemPersonaLayoutStyles_unstable,\n useTreeItemPersonaLayout_unstable,\n} from './TreeItemPersonaLayout';\nexport type {\n TreeItemPersonaLayoutProps,\n TreeItemPersonaLayoutSlots,\n TreeItemPersonaLayoutState,\n} from './TreeItemPersonaLayout';\n\nexport { useFlatTree_unstable } from './hooks/index';\nexport type { FlatTreeItem, FlatTreeItemProps, FlatTreeProps, FlatTree } from './hooks/index';\n\nexport { flattenTree_unstable } from './utils/flattenTree';\nexport type { NestedTreeItem } from './utils/flattenTree';\n"],"mappings":"AAAA,SACEA,IAAI,EACJC,cAAc,EACdC,mBAAmB,EACnBC,sBAAsB,EACtBC,gBAAgB,EAChBC,6BAA6B,QACxB,QAAQ;AAYf,SAASC,YAAY,EAAEC,uBAAuB,EAAEC,2BAA2B,EAAEC,gBAAgB,QAAQ,YAAY;AAGjH,SAASC,kBAAkB,QAAQ,gBAAgB;AAEnD,SACEC,QAAQ,EACRC,kBAAkB,EAClBC,uBAAuB,EACvBC,0BAA0B,EAC1BC,oBAAoB,QACf,YAAY;AAGnB,SACEC,cAAc,EACdC,wBAAwB,EACxBC,6BAA6B,EAC7BC,gCAAgC,EAChCC,0BAA0B,QACrB,kBAAkB;AAGzB,SACEC,qBAAqB,EACrBC,+BAA+B,EAC/BC,oCAAoC,EACpCC,uCAAuC,EACvCC,iCAAiC,QAC5B,yBAAyB;AAOhC,SAASC,oBAAoB,QAAQ,eAAe;AAGpD,SAASC,oBAAoB,QAAQ,qBAAqB"}
1
+ {"version":3,"sources":["index.ts"],"sourcesContent":["export {\n Tree,\n treeClassNames,\n renderTree_unstable,\n useTreeStyles_unstable,\n useTree_unstable,\n useTreeContextValues_unstable,\n} from './Tree';\nexport type {\n TreeProps,\n TreeState,\n TreeSlots,\n TreeOpenChangeData,\n TreeOpenChangeEvent,\n TreeNavigationEvent_unstable,\n TreeNavigationData_unstable,\n} from './Tree';\n\nexport { TreeProvider, useTreeContext_unstable, useTreeItemContext_unstable, TreeItemProvider } from './contexts';\nexport type { TreeContextValue } from './contexts';\n\nexport { treeItemLevelToken } from './utils/tokens';\n\nexport {\n TreeItem,\n treeItemClassNames,\n renderTreeItem_unstable,\n useTreeItemStyles_unstable,\n useTreeItem_unstable,\n} from './TreeItem';\nexport type { TreeItemProps, TreeItemState, TreeItemSlots } from './TreeItem';\n\nexport {\n TreeItemLayout,\n treeItemLayoutClassNames,\n renderTreeItemLayout_unstable,\n useTreeItemLayoutStyles_unstable,\n useTreeItemLayout_unstable,\n} from './TreeItemLayout';\nexport type { TreeItemLayoutProps, TreeItemLayoutSlots, TreeItemLayoutState } from './TreeItemLayout';\n\nexport {\n TreeItemPersonaLayout,\n treeItemPersonaLayoutClassNames,\n renderTreeItemPersonaLayout_unstable,\n useTreeItemPersonaLayoutStyles_unstable,\n useTreeItemPersonaLayout_unstable,\n} from './TreeItemPersonaLayout';\nexport type {\n TreeItemPersonaLayoutProps,\n TreeItemPersonaLayoutSlots,\n TreeItemPersonaLayoutState,\n} from './TreeItemPersonaLayout';\n\nexport {\n TreeItemAside,\n treeItemAsideClassNames,\n renderTreeItemAside_unstable,\n useTreeItemAsideStyles_unstable,\n useTreeItemAside_unstable,\n} from './TreeItemAside';\nexport type { TreeItemAsideProps, TreeItemAsideSlots, TreeItemAsideState } from './TreeItemAside';\n\nexport { useFlatTree_unstable } from './hooks/index';\nexport type { FlatTreeItem, FlatTreeItemProps, FlatTreeProps, FlatTree } from './hooks/index';\n\nexport { flattenTree_unstable } from './utils/flattenTree';\nexport type { NestedTreeItem } from './utils/flattenTree';\n"],"names":["Tree","treeClassNames","renderTree_unstable","useTreeStyles_unstable","useTree_unstable","useTreeContextValues_unstable","TreeProvider","useTreeContext_unstable","useTreeItemContext_unstable","TreeItemProvider","treeItemLevelToken","TreeItem","treeItemClassNames","renderTreeItem_unstable","useTreeItemStyles_unstable","useTreeItem_unstable","TreeItemLayout","treeItemLayoutClassNames","renderTreeItemLayout_unstable","useTreeItemLayoutStyles_unstable","useTreeItemLayout_unstable","TreeItemPersonaLayout","treeItemPersonaLayoutClassNames","renderTreeItemPersonaLayout_unstable","useTreeItemPersonaLayoutStyles_unstable","useTreeItemPersonaLayout_unstable","TreeItemAside","treeItemAsideClassNames","renderTreeItemAside_unstable","useTreeItemAsideStyles_unstable","useTreeItemAside_unstable","useFlatTree_unstable","flattenTree_unstable"],"mappings":"AAAA,SACEA,IAAI,EACJC,cAAc,EACdC,mBAAmB,EACnBC,sBAAsB,EACtBC,gBAAgB,EAChBC,6BAA6B,QACxB,SAAS;AAWhB,SAASC,YAAY,EAAEC,uBAAuB,EAAEC,2BAA2B,EAAEC,gBAAgB,QAAQ,aAAa;AAGlH,SAASC,kBAAkB,QAAQ,iBAAiB;AAEpD,SACEC,QAAQ,EACRC,kBAAkB,EAClBC,uBAAuB,EACvBC,0BAA0B,EAC1BC,oBAAoB,QACf,aAAa;AAGpB,SACEC,cAAc,EACdC,wBAAwB,EACxBC,6BAA6B,EAC7BC,gCAAgC,EAChCC,0BAA0B,QACrB,mBAAmB;AAG1B,SACEC,qBAAqB,EACrBC,+BAA+B,EAC/BC,oCAAoC,EACpCC,uCAAuC,EACvCC,iCAAiC,QAC5B,0BAA0B;AAOjC,SACEC,aAAa,EACbC,uBAAuB,EACvBC,4BAA4B,EAC5BC,+BAA+B,EAC/BC,yBAAyB,QACpB,kBAAkB;AAGzB,SAASC,oBAAoB,QAAQ,gBAAgB;AAGrD,SAASC,oBAAoB,QAAQ,sBAAsB"}
@@ -1,37 +1,34 @@
1
- export const emptyImmutableSet = /*#__PURE__*/createImmutableSet();
1
+ export const emptyImmutableSet = createImmutableSet();
2
2
  /**
3
3
  * properly creates an ImmutableSet instance from an iterable
4
- */
5
- export function createImmutableSet(iterable) {
6
- const internalSet = new Set(iterable);
7
- return dangerouslyCreateImmutableSet(internalSet);
4
+ */ export function createImmutableSet(iterable) {
5
+ const internalSet = new Set(iterable);
6
+ return dangerouslyCreateImmutableSet(internalSet);
8
7
  }
9
8
  /**
10
9
  * Avoid using *dangerouslyCreateImmutableSet*, since this method will expose internally used set, use createImmutableSet instead,
11
10
  * @param internalSet - a set that is used internally to store values.
12
- */
13
- export function dangerouslyCreateImmutableSet(internalSet) {
14
- return {
15
- size: internalSet.size,
16
- add(value) {
17
- const nextSet = new Set(internalSet);
18
- nextSet.add(value);
19
- return dangerouslyCreateImmutableSet(nextSet);
20
- },
21
- clear() {
22
- return emptyImmutableSet;
23
- },
24
- delete(value) {
25
- const nextSet = new Set(internalSet);
26
- nextSet.delete(value);
27
- return dangerouslyCreateImmutableSet(nextSet);
28
- },
29
- has(value) {
30
- return internalSet.has(value);
31
- },
32
- [Symbol.iterator]() {
33
- return internalSet[Symbol.iterator]();
34
- }
35
- };
11
+ */ export function dangerouslyCreateImmutableSet(internalSet) {
12
+ return {
13
+ size: internalSet.size,
14
+ add (value) {
15
+ const nextSet = new Set(internalSet);
16
+ nextSet.add(value);
17
+ return dangerouslyCreateImmutableSet(nextSet);
18
+ },
19
+ clear () {
20
+ return emptyImmutableSet;
21
+ },
22
+ delete (value) {
23
+ const nextSet = new Set(internalSet);
24
+ nextSet.delete(value);
25
+ return dangerouslyCreateImmutableSet(nextSet);
26
+ },
27
+ has (value) {
28
+ return internalSet.has(value);
29
+ },
30
+ [Symbol.iterator] () {
31
+ return internalSet[Symbol.iterator]();
32
+ }
33
+ };
36
34
  }
37
- //# sourceMappingURL=ImmutableSet.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["emptyImmutableSet","createImmutableSet","iterable","internalSet","Set","dangerouslyCreateImmutableSet","size","add","value","nextSet","clear","delete","has","Symbol","iterator"],"sources":["../src/packages/react-components/react-tree/src/utils/ImmutableSet.ts"],"sourcesContent":["export interface ImmutableSet<Value> {\n /**\n * The number of (unique) elements in a ImmutableSet.\n */\n readonly size: number;\n /**\n * Creates a new ImmutableSet containing all previous element plus the one provided as argument\n * @param value - new value to be included in the new ImmutableSet instance\n */\n add(value: Value): ImmutableSet<Value>;\n /**\n * Returns a reference to ImmutableSet.emptySet\n */\n clear(): ImmutableSet<Value>;\n /**\n * Creates a new ImmutableSet with the original items and removes a specified value from the new ImmutableSet.\n */\n delete(value: Value): ImmutableSet<Value>;\n /**\n * @returns a boolean indicating whether an element with the specified value exists in the ImmutableSet or not.\n */\n has(value: Value): boolean;\n /** Iterates over values in the ImmutableSet. */\n [Symbol.iterator](): IterableIterator<Value>;\n}\n\nexport const emptyImmutableSet = createImmutableSet<never>();\n\n/**\n * properly creates an ImmutableSet instance from an iterable\n */\nexport function createImmutableSet<Value>(iterable?: Iterable<Value>): ImmutableSet<Value> {\n const internalSet = new Set(iterable);\n return dangerouslyCreateImmutableSet(internalSet);\n}\n/**\n * Avoid using *dangerouslyCreateImmutableSet*, since this method will expose internally used set, use createImmutableSet instead,\n * @param internalSet - a set that is used internally to store values.\n */\nexport function dangerouslyCreateImmutableSet<Value>(internalSet: Set<Value>): ImmutableSet<Value> {\n return {\n size: internalSet.size,\n add(value) {\n const nextSet = new Set(internalSet);\n nextSet.add(value);\n return dangerouslyCreateImmutableSet(nextSet);\n },\n clear() {\n return emptyImmutableSet;\n },\n delete(value) {\n const nextSet = new Set(internalSet);\n nextSet.delete(value);\n return dangerouslyCreateImmutableSet(nextSet);\n },\n has(value) {\n return internalSet.has(value);\n },\n [Symbol.iterator]() {\n return internalSet[Symbol.iterator]();\n },\n };\n}\n"],"mappings":"AA0BA,OAAO,MAAMA,iBAAiB,gBAAGC,kBAAkB,EAAS;AAE5D;;;AAGA,OAAM,SAAUA,kBAAkBA,CAAQC,QAA0B;EAClE,MAAMC,WAAW,GAAG,IAAIC,GAAG,CAACF,QAAQ,CAAC;EACrC,OAAOG,6BAA6B,CAACF,WAAW,CAAC;AACnD;AACA;;;;AAIA,OAAM,SAAUE,6BAA6BA,CAAQF,WAAuB;EAC1E,OAAO;IACLG,IAAI,EAAEH,WAAW,CAACG,IAAI;IACtBC,GAAGA,CAACC,KAAK;MACP,MAAMC,OAAO,GAAG,IAAIL,GAAG,CAACD,WAAW,CAAC;MACpCM,OAAO,CAACF,GAAG,CAACC,KAAK,CAAC;MAClB,OAAOH,6BAA6B,CAACI,OAAO,CAAC;IAC/C,CAAC;IACDC,KAAKA,CAAA;MACH,OAAOV,iBAAiB;IAC1B,CAAC;IACDW,MAAMA,CAACH,KAAK;MACV,MAAMC,OAAO,GAAG,IAAIL,GAAG,CAACD,WAAW,CAAC;MACpCM,OAAO,CAACE,MAAM,CAACH,KAAK,CAAC;MACrB,OAAOH,6BAA6B,CAACI,OAAO,CAAC;IAC/C,CAAC;IACDG,GAAGA,CAACJ,KAAK;MACP,OAAOL,WAAW,CAACS,GAAG,CAACJ,KAAK,CAAC;IAC/B,CAAC;IACD,CAACK,MAAM,CAACC,QAAQ,IAAC;MACf,OAAOX,WAAW,CAACU,MAAM,CAACC,QAAQ,CAAC,EAAE;IACvC;GACD;AACH"}
1
+ {"version":3,"sources":["ImmutableSet.ts"],"sourcesContent":["export interface ImmutableSet<Value> {\n /**\n * The number of (unique) elements in a ImmutableSet.\n */\n readonly size: number;\n /**\n * Creates a new ImmutableSet containing all previous element plus the one provided as argument\n * @param value - new value to be included in the new ImmutableSet instance\n */\n add(value: Value): ImmutableSet<Value>;\n /**\n * Returns a reference to ImmutableSet.emptySet\n */\n clear(): ImmutableSet<Value>;\n /**\n * Creates a new ImmutableSet with the original items and removes a specified value from the new ImmutableSet.\n */\n delete(value: Value): ImmutableSet<Value>;\n /**\n * @returns a boolean indicating whether an element with the specified value exists in the ImmutableSet or not.\n */\n has(value: Value): boolean;\n /** Iterates over values in the ImmutableSet. */\n [Symbol.iterator](): IterableIterator<Value>;\n}\n\nexport const emptyImmutableSet = createImmutableSet<never>();\n\n/**\n * properly creates an ImmutableSet instance from an iterable\n */\nexport function createImmutableSet<Value>(iterable?: Iterable<Value>): ImmutableSet<Value> {\n const internalSet = new Set(iterable);\n return dangerouslyCreateImmutableSet(internalSet);\n}\n/**\n * Avoid using *dangerouslyCreateImmutableSet*, since this method will expose internally used set, use createImmutableSet instead,\n * @param internalSet - a set that is used internally to store values.\n */\nexport function dangerouslyCreateImmutableSet<Value>(internalSet: Set<Value>): ImmutableSet<Value> {\n return {\n size: internalSet.size,\n add(value) {\n const nextSet = new Set(internalSet);\n nextSet.add(value);\n return dangerouslyCreateImmutableSet(nextSet);\n },\n clear() {\n return emptyImmutableSet;\n },\n delete(value) {\n const nextSet = new Set(internalSet);\n nextSet.delete(value);\n return dangerouslyCreateImmutableSet(nextSet);\n },\n has(value) {\n return internalSet.has(value);\n },\n [Symbol.iterator]() {\n return internalSet[Symbol.iterator]();\n },\n };\n}\n"],"names":["emptyImmutableSet","createImmutableSet","iterable","internalSet","Set","dangerouslyCreateImmutableSet","size","add","value","nextSet","clear","delete","has","Symbol","iterator"],"mappings":"AA0BA,OAAO,MAAMA,oBAAoBC,qBAA4B;AAE7D;;CAEC,GACD,OAAO,SAASA,mBAA0BC,QAA0B,EAAuB;IACzF,MAAMC,cAAc,IAAIC,IAAIF;IAC5B,OAAOG,8BAA8BF;AACvC,CAAC;AACD;;;CAGC,GACD,OAAO,SAASE,8BAAqCF,WAAuB,EAAuB;IACjG,OAAO;QACLG,MAAMH,YAAYG,IAAI;QACtBC,KAAIC,KAAK,EAAE;YACT,MAAMC,UAAU,IAAIL,IAAID;YACxBM,QAAQF,GAAG,CAACC;YACZ,OAAOH,8BAA8BI;QACvC;QACAC,SAAQ;YACN,OAAOV;QACT;QACAW,QAAOH,KAAK,EAAE;YACZ,MAAMC,UAAU,IAAIL,IAAID;YACxBM,QAAQE,MAAM,CAACH;YACf,OAAOH,8BAA8BI;QACvC;QACAG,KAAIJ,KAAK,EAAE;YACT,OAAOL,YAAYS,GAAG,CAACJ;QACzB;QACA,CAACK,OAAOC,QAAQ,CAAC,IAAG;YAClB,OAAOX,WAAW,CAACU,OAAOC,QAAQ,CAAC;QACrC;IACF;AACF,CAAC"}
@@ -1,7 +1,7 @@
1
+ import * as React from 'react';
1
2
  export function assertIsDefinedRef(refObject, msg = `assertIsDefinedRef: reference not properly defined ${refObject}`) {
2
- // eslint-disable-next-line eqeqeq
3
- if (refObject.current == undefined && process.env.NODE_ENV === 'development') {
4
- throw new TypeError(msg);
5
- }
3
+ // eslint-disable-next-line eqeqeq
4
+ if (refObject.current == undefined && process.env.NODE_ENV === 'development') {
5
+ throw new TypeError(msg);
6
+ }
6
7
  }
7
- //# sourceMappingURL=assert.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["assertIsDefinedRef","refObject","msg","current","undefined","process","env","NODE_ENV","TypeError"],"sources":["../src/packages/react-components/react-tree/src/utils/assert.ts"],"sourcesContent":["import * as React from 'react';\n\nexport function assertIsDefinedRef<V>(\n refObject: React.RefObject<V | null | undefined>,\n msg = `assertIsDefinedRef: reference not properly defined ${refObject}`,\n): asserts refObject is React.MutableRefObject<V> {\n // eslint-disable-next-line eqeqeq\n if (refObject.current == undefined && process.env.NODE_ENV === 'development') {\n throw new TypeError(msg);\n }\n}\n"],"mappings":"AAEA,OAAM,SAAUA,kBAAkBA,CAChCC,SAAgD,EAChDC,GAAG,GAAG,sDAAsDD,SAAS,EAAE;EAEvE;EACA,IAAIA,SAAS,CAACE,OAAO,IAAIC,SAAS,IAAIC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,aAAa,EAAE;IAC5E,MAAM,IAAIC,SAAS,CAACN,GAAG,CAAC;;AAE5B"}
1
+ {"version":3,"sources":["assert.ts"],"sourcesContent":["import * as React from 'react';\n\nexport function assertIsDefinedRef<V>(\n refObject: React.RefObject<V | null | undefined>,\n msg = `assertIsDefinedRef: reference not properly defined ${refObject}`,\n): asserts refObject is React.MutableRefObject<V> {\n // eslint-disable-next-line eqeqeq\n if (refObject.current == undefined && process.env.NODE_ENV === 'development') {\n throw new TypeError(msg);\n }\n}\n"],"names":["React","assertIsDefinedRef","refObject","msg","current","undefined","process","env","NODE_ENV","TypeError"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAE/B,OAAO,SAASC,mBACdC,SAAgD,EAChDC,MAAM,CAAC,mDAAmD,EAAED,UAAU,CAAC,EACvB;IAChD,kCAAkC;IAClC,IAAIA,UAAUE,OAAO,IAAIC,aAAaC,QAAQC,GAAG,CAACC,QAAQ,KAAK,eAAe;QAC5E,MAAM,IAAIC,UAAUN,KAAK;IAC3B,CAAC;AACH,CAAC"}