@fluentui/react-tree 9.0.0-beta.12 → 9.0.0-beta.13

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 (190) hide show
  1. package/CHANGELOG.json +147 -4
  2. package/CHANGELOG.md +34 -5
  3. package/dist/index.d.ts +142 -81
  4. package/lib/TreeItemAside.js +2 -0
  5. package/lib/TreeItemAside.js.map +1 -0
  6. package/lib/components/Tree/Tree.js +1 -1
  7. package/lib/components/Tree/Tree.js.map +1 -1
  8. package/lib/components/Tree/Tree.types.js.map +1 -1
  9. package/lib/components/Tree/index.js +1 -1
  10. package/lib/components/Tree/index.js.map +1 -1
  11. package/lib/components/Tree/renderTree.js +1 -1
  12. package/lib/components/Tree/renderTree.js.map +1 -1
  13. package/lib/components/Tree/useRootTree.js +160 -0
  14. package/lib/components/Tree/useRootTree.js.map +1 -0
  15. package/lib/components/Tree/useSubtree.js +40 -0
  16. package/lib/components/Tree/useSubtree.js.map +1 -0
  17. package/lib/components/Tree/useTree.js +2 -95
  18. package/lib/components/Tree/useTree.js.map +1 -1
  19. package/lib/components/Tree/useTreeContextValues.js +2 -4
  20. package/lib/components/Tree/useTreeContextValues.js.map +1 -1
  21. package/lib/components/Tree/useTreeStyles.styles.js +30 -0
  22. package/lib/components/Tree/useTreeStyles.styles.js.map +1 -0
  23. package/lib/components/TreeItem/TreeItem.js +1 -1
  24. package/lib/components/TreeItem/TreeItem.js.map +1 -1
  25. package/lib/components/TreeItem/TreeItem.types.js.map +1 -1
  26. package/lib/components/TreeItem/index.js +1 -1
  27. package/lib/components/TreeItem/index.js.map +1 -1
  28. package/lib/components/TreeItem/renderTreeItem.js +2 -5
  29. package/lib/components/TreeItem/renderTreeItem.js.map +1 -1
  30. package/lib/components/TreeItem/useTreeItem.js +58 -181
  31. package/lib/components/TreeItem/useTreeItem.js.map +1 -1
  32. package/lib/components/TreeItem/useTreeItemContextValues.js +25 -11
  33. package/lib/components/TreeItem/useTreeItemContextValues.js.map +1 -1
  34. package/lib/components/TreeItem/useTreeItemStyles.styles.js +102 -0
  35. package/lib/components/TreeItem/useTreeItemStyles.styles.js.map +1 -0
  36. package/lib/components/TreeItemAside/TreeItemAside.js +15 -0
  37. package/lib/components/TreeItemAside/TreeItemAside.js.map +1 -0
  38. package/lib/components/TreeItemAside/TreeItemAside.types.js +2 -0
  39. package/lib/components/TreeItemAside/TreeItemAside.types.js.map +1 -0
  40. package/lib/components/TreeItemAside/index.js +6 -0
  41. package/lib/components/TreeItemAside/index.js.map +1 -0
  42. package/lib/components/TreeItemAside/renderTreeItemAside.js +19 -0
  43. package/lib/components/TreeItemAside/renderTreeItemAside.js.map +1 -0
  44. package/lib/components/TreeItemAside/useTreeItemAside.js +35 -0
  45. package/lib/components/TreeItemAside/useTreeItemAside.js.map +1 -0
  46. package/lib/components/TreeItemAside/useTreeItemAsideStyles.styles.js +47 -0
  47. package/lib/components/TreeItemAside/useTreeItemAsideStyles.styles.js.map +1 -0
  48. package/lib/components/TreeItemChevron.js +27 -0
  49. package/lib/components/TreeItemChevron.js.map +1 -0
  50. package/lib/components/TreeItemLayout/TreeItemLayout.js +1 -1
  51. package/lib/components/TreeItemLayout/TreeItemLayout.js.map +1 -1
  52. package/lib/components/TreeItemLayout/TreeItemLayout.types.js.map +1 -1
  53. package/lib/components/TreeItemLayout/index.js +1 -1
  54. package/lib/components/TreeItemLayout/index.js.map +1 -1
  55. package/lib/components/TreeItemLayout/renderTreeItemLayout.js +1 -4
  56. package/lib/components/TreeItemLayout/renderTreeItemLayout.js.map +1 -1
  57. package/lib/components/TreeItemLayout/useTreeItemLayout.js +16 -11
  58. package/lib/components/TreeItemLayout/useTreeItemLayout.js.map +1 -1
  59. package/lib/components/TreeItemLayout/useTreeItemLayoutStyles.styles.js +138 -0
  60. package/lib/components/TreeItemLayout/useTreeItemLayoutStyles.styles.js.map +1 -0
  61. package/lib/components/TreeItemPersonaLayout/TreeItemPersonaLayout.js +1 -1
  62. package/lib/components/TreeItemPersonaLayout/TreeItemPersonaLayout.js.map +1 -1
  63. package/lib/components/TreeItemPersonaLayout/TreeItemPersonaLayout.types.js.map +1 -1
  64. package/lib/components/TreeItemPersonaLayout/index.js +1 -1
  65. package/lib/components/TreeItemPersonaLayout/index.js.map +1 -1
  66. package/lib/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js +2 -5
  67. package/lib/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js.map +1 -1
  68. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js +16 -20
  69. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js.map +1 -1
  70. package/lib/components/TreeItemPersonaLayout/{useTreeItemPersonaLayoutStyles.js → useTreeItemPersonaLayoutStyles.styles.js} +46 -18
  71. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.styles.js.map +1 -0
  72. package/lib/contexts/treeContext.js +1 -2
  73. package/lib/contexts/treeContext.js.map +1 -1
  74. package/lib/contexts/treeItemContext.js +12 -4
  75. package/lib/contexts/treeItemContext.js.map +1 -1
  76. package/lib/hooks/useFlatTree.js +7 -7
  77. package/lib/hooks/useFlatTree.js.map +1 -1
  78. package/lib/hooks/useFlatTreeNavigation.js +8 -8
  79. package/lib/hooks/useFlatTreeNavigation.js.map +1 -1
  80. package/lib/hooks/useNestedTreeNavigation.js +8 -8
  81. package/lib/hooks/useNestedTreeNavigation.js.map +1 -1
  82. package/lib/hooks/useOpenItemsState.js +1 -1
  83. package/lib/hooks/useOpenItemsState.js.map +1 -1
  84. package/lib/index.js +1 -0
  85. package/lib/index.js.map +1 -1
  86. package/lib/utils/createFlatTreeItems.js +12 -10
  87. package/lib/utils/createFlatTreeItems.js.map +1 -1
  88. package/lib/utils/flattenTree.js +0 -29
  89. package/lib/utils/flattenTree.js.map +1 -1
  90. package/lib/utils/tokens.js +11 -11
  91. package/lib/utils/tokens.js.map +1 -1
  92. package/lib-commonjs/TreeItemAside.js +9 -0
  93. package/lib-commonjs/TreeItemAside.js.map +1 -0
  94. package/lib-commonjs/components/Tree/Tree.js +2 -2
  95. package/lib-commonjs/components/Tree/Tree.js.map +1 -1
  96. package/lib-commonjs/components/Tree/index.js +1 -1
  97. package/lib-commonjs/components/Tree/index.js.map +1 -1
  98. package/lib-commonjs/components/Tree/renderTree.js +1 -1
  99. package/lib-commonjs/components/Tree/renderTree.js.map +1 -1
  100. package/lib-commonjs/components/Tree/useRootTree.js +151 -0
  101. package/lib-commonjs/components/Tree/useRootTree.js.map +1 -0
  102. package/lib-commonjs/components/Tree/useSubtree.js +41 -0
  103. package/lib-commonjs/components/Tree/useSubtree.js.map +1 -0
  104. package/lib-commonjs/components/Tree/useTree.js +4 -89
  105. package/lib-commonjs/components/Tree/useTree.js.map +1 -1
  106. package/lib-commonjs/components/Tree/useTreeContextValues.js +2 -3
  107. package/lib-commonjs/components/Tree/useTreeContextValues.js.map +1 -1
  108. package/lib-commonjs/components/Tree/{useTreeStyles.js → useTreeStyles.styles.js} +21 -4
  109. package/lib-commonjs/components/Tree/useTreeStyles.styles.js.map +1 -0
  110. package/lib-commonjs/components/TreeItem/TreeItem.js +2 -2
  111. package/lib-commonjs/components/TreeItem/TreeItem.js.map +1 -1
  112. package/lib-commonjs/components/TreeItem/index.js +1 -1
  113. package/lib-commonjs/components/TreeItem/index.js.map +1 -1
  114. package/lib-commonjs/components/TreeItem/renderTreeItem.js +2 -5
  115. package/lib-commonjs/components/TreeItem/renderTreeItem.js.map +1 -1
  116. package/lib-commonjs/components/TreeItem/useTreeItem.js +55 -172
  117. package/lib-commonjs/components/TreeItem/useTreeItem.js.map +1 -1
  118. package/lib-commonjs/components/TreeItem/useTreeItemContextValues.js +16 -15
  119. package/lib-commonjs/components/TreeItem/useTreeItemContextValues.js.map +1 -1
  120. package/lib-commonjs/components/TreeItem/useTreeItemStyles.styles.js +208 -0
  121. package/lib-commonjs/components/TreeItem/useTreeItemStyles.styles.js.map +1 -0
  122. package/lib-commonjs/components/TreeItemAside/TreeItemAside.js +21 -0
  123. package/lib-commonjs/components/TreeItemAside/TreeItemAside.js.map +1 -0
  124. package/lib-commonjs/components/TreeItemAside/TreeItemAside.types.js +7 -0
  125. package/lib-commonjs/components/TreeItemAside/TreeItemAside.types.js.map +1 -0
  126. package/lib-commonjs/components/TreeItemAside/index.js +13 -0
  127. package/lib-commonjs/components/TreeItemAside/index.js.map +1 -0
  128. package/lib-commonjs/components/TreeItemAside/renderTreeItemAside.js +22 -0
  129. package/lib-commonjs/components/TreeItemAside/renderTreeItemAside.js.map +1 -0
  130. package/lib-commonjs/components/TreeItemAside/useTreeItemAside.js +33 -0
  131. package/lib-commonjs/components/TreeItemAside/useTreeItemAside.js.map +1 -0
  132. package/lib-commonjs/components/TreeItemAside/useTreeItemAsideStyles.styles.js +92 -0
  133. package/lib-commonjs/components/TreeItemAside/useTreeItemAsideStyles.styles.js.map +1 -0
  134. package/lib-commonjs/components/TreeItemChevron.js +35 -0
  135. package/lib-commonjs/components/TreeItemChevron.js.map +1 -0
  136. package/lib-commonjs/components/TreeItemLayout/TreeItemLayout.js +2 -2
  137. package/lib-commonjs/components/TreeItemLayout/TreeItemLayout.js.map +1 -1
  138. package/lib-commonjs/components/TreeItemLayout/index.js +1 -1
  139. package/lib-commonjs/components/TreeItemLayout/index.js.map +1 -1
  140. package/lib-commonjs/components/TreeItemLayout/renderTreeItemLayout.js +1 -2
  141. package/lib-commonjs/components/TreeItemLayout/renderTreeItemLayout.js.map +1 -1
  142. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayout.js +15 -10
  143. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayout.js.map +1 -1
  144. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayoutStyles.styles.js +223 -0
  145. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayoutStyles.styles.js.map +1 -0
  146. package/lib-commonjs/components/TreeItemPersonaLayout/TreeItemPersonaLayout.js +2 -2
  147. package/lib-commonjs/components/TreeItemPersonaLayout/TreeItemPersonaLayout.js.map +1 -1
  148. package/lib-commonjs/components/TreeItemPersonaLayout/index.js +1 -1
  149. package/lib-commonjs/components/TreeItemPersonaLayout/index.js.map +1 -1
  150. package/lib-commonjs/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js +2 -3
  151. package/lib-commonjs/components/TreeItemPersonaLayout/renderTreeItemPersonaLayout.js.map +1 -1
  152. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js +14 -14
  153. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayout.js.map +1 -1
  154. package/lib-commonjs/components/TreeItemPersonaLayout/{useTreeItemPersonaLayoutStyles.js → useTreeItemPersonaLayoutStyles.styles.js} +82 -28
  155. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.styles.js.map +1 -0
  156. package/lib-commonjs/contexts/treeContext.js +1 -2
  157. package/lib-commonjs/contexts/treeContext.js.map +1 -1
  158. package/lib-commonjs/contexts/treeItemContext.js +12 -4
  159. package/lib-commonjs/contexts/treeItemContext.js.map +1 -1
  160. package/lib-commonjs/hooks/useFlatTree.js +7 -7
  161. package/lib-commonjs/hooks/useFlatTree.js.map +1 -1
  162. package/lib-commonjs/hooks/useFlatTreeNavigation.js +8 -8
  163. package/lib-commonjs/hooks/useFlatTreeNavigation.js.map +1 -1
  164. package/lib-commonjs/hooks/useNestedTreeNavigation.js +8 -8
  165. package/lib-commonjs/hooks/useNestedTreeNavigation.js.map +1 -1
  166. package/lib-commonjs/hooks/useOpenItemsState.js +1 -3
  167. package/lib-commonjs/hooks/useOpenItemsState.js.map +1 -1
  168. package/lib-commonjs/index.js +6 -0
  169. package/lib-commonjs/index.js.map +1 -1
  170. package/lib-commonjs/utils/createFlatTreeItems.js +12 -10
  171. package/lib-commonjs/utils/createFlatTreeItems.js.map +1 -1
  172. package/lib-commonjs/utils/flattenTree.js +4 -37
  173. package/lib-commonjs/utils/flattenTree.js.map +1 -1
  174. package/lib-commonjs/utils/tokens.js +10 -10
  175. package/lib-commonjs/utils/tokens.js.map +1 -1
  176. package/package.json +15 -14
  177. package/.swcrc +0 -30
  178. package/lib/components/Tree/useTreeStyles.js +0 -20
  179. package/lib/components/Tree/useTreeStyles.js.map +0 -1
  180. package/lib/components/TreeItem/useTreeItemStyles.js +0 -203
  181. package/lib/components/TreeItem/useTreeItemStyles.js.map +0 -1
  182. package/lib/components/TreeItemLayout/useTreeItemLayoutStyles.js +0 -98
  183. package/lib/components/TreeItemLayout/useTreeItemLayoutStyles.js.map +0 -1
  184. package/lib/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.js.map +0 -1
  185. package/lib-commonjs/components/Tree/useTreeStyles.js.map +0 -1
  186. package/lib-commonjs/components/TreeItem/useTreeItemStyles.js +0 -375
  187. package/lib-commonjs/components/TreeItem/useTreeItemStyles.js.map +0 -1
  188. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayoutStyles.js +0 -143
  189. package/lib-commonjs/components/TreeItemLayout/useTreeItemLayoutStyles.js.map +0 -1
  190. package/lib-commonjs/components/TreeItemPersonaLayout/useTreeItemPersonaLayoutStyles.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["React","createFlatTreeItems","flatTreeItemProps","root","createFlatTreeRootItem","itemsPerValue","Map","flatTreeRootId","items","index","length","parentValue","treeItemProps","nextItemProps","currentParent","get","process","env","NODE_ENV","console","error","id","isLeaf","value","_currentParent_level","currentLevel","level","currentChildrenSize","childrenSize","ref","createRef","flatTreeItem","getTreeItemProps","leaf","undefined","set","push","size","getByIndex","current","VisibleFlatTreeItemGenerator","openItems","flatTreeItems","visibleIndex","item","_flatTreeItems_get","parent","isItemVisible","has"],"sources":["../../src/utils/createFlatTreeItems.ts"],"sourcesContent":["import type { ImmutableSet } from './ImmutableSet';\nimport type { FlatTreeItem, FlatTreeItemProps, MutableFlatTreeItem } from '../hooks/useFlatTree';\nimport * as React from 'react';\n\n/**\n * @internal\n */\nexport type FlatTreeItems<Value = string> = {\n size: number;\n root: FlatTreeItem<Value>;\n get(key: Value): FlatTreeItem<Value> | undefined;\n set(key: Value, value: FlatTreeItem<Value>): void;\n getByIndex(index: number): FlatTreeItem<Value>;\n};\n\n/**\n * creates a list of flat tree items\n * and provides a map to access each item by id\n */\nexport function createFlatTreeItems<Value = string>(\n flatTreeItemProps: FlatTreeItemProps<Value>[],\n): FlatTreeItems<Value> {\n const root = createFlatTreeRootItem<Value>();\n const itemsPerValue = new Map<Value, MutableFlatTreeItem<Value>>([[flatTreeRootId as Value, root]]);\n const items: MutableFlatTreeItem<Value>[] = [];\n\n for (let index = 0; index < flatTreeItemProps.length; index++) {\n const { parentValue = flatTreeRootId as Value, ...treeItemProps } = flatTreeItemProps[index];\n\n const nextItemProps: FlatTreeItemProps<Value> | undefined = flatTreeItemProps[index + 1];\n const currentParent = itemsPerValue.get(parentValue);\n if (!currentParent) {\n if (process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.error(\n `useFlatTree: item ${flatTreeItemProps[index].id} is wrongly positioned, did you properly ordered provided item props? make sure provided items are organized`,\n );\n }\n break;\n }\n const isLeaf = nextItemProps?.parentValue !== treeItemProps.value;\n const currentLevel = (currentParent.level ?? 0) + 1;\n const currentChildrenSize = ++currentParent.childrenSize;\n const ref = React.createRef<HTMLDivElement>();\n\n const flatTreeItem: MutableFlatTreeItem<Value> = {\n value: treeItemProps.value,\n getTreeItemProps: () => ({\n ...treeItemProps,\n 'aria-level': currentLevel,\n 'aria-posinset': currentChildrenSize,\n 'aria-setsize': currentParent.childrenSize,\n leaf: isLeaf,\n // a reference to every parent element is necessary to ensure navigation\n ref: flatTreeItem.childrenSize > 0 ? ref : undefined,\n }),\n ref,\n level: currentLevel,\n parentValue,\n childrenSize: 0,\n index: -1,\n };\n itemsPerValue.set(flatTreeItem.value, flatTreeItem);\n items.push(flatTreeItem);\n }\n\n return {\n root,\n size: items.length,\n getByIndex: index => items[index],\n get: id => itemsPerValue.get(id),\n set: (id, value) => itemsPerValue.set(id, value),\n };\n}\n\nexport const flatTreeRootId = '__fuiFlatTreeRoot' as unknown;\n\nfunction createFlatTreeRootItem<Value = string>(): FlatTreeItem<Value> {\n return {\n ref: { current: null },\n value: flatTreeRootId as Value,\n getTreeItemProps: () => {\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.error('useFlatTree: internal error, trying to access treeitem props from invalid root element');\n }\n return { value: flatTreeRootId as Value, 'aria-setsize': -1, 'aria-level': -1, 'aria-posinset': -1, leaf: true };\n },\n childrenSize: 0,\n get index() {\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.error('useFlatTree: internal error, trying to access treeitem props from invalid root element');\n }\n return -1;\n },\n level: 0,\n };\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function* VisibleFlatTreeItemGenerator<Value = string>(\n openItems: ImmutableSet<Value>,\n flatTreeItems: FlatTreeItems<Value>,\n) {\n for (let index = 0, visibleIndex = 0; index < flatTreeItems.size; index++) {\n const item: MutableFlatTreeItem<Value> = flatTreeItems.getByIndex(index);\n const parent = item.parentValue ? flatTreeItems.get(item.parentValue) ?? flatTreeItems.root : flatTreeItems.root;\n if (isItemVisible(item, openItems, flatTreeItems)) {\n item.index = visibleIndex++;\n yield item;\n } else {\n index += parent.childrenSize - 1 + item.childrenSize;\n }\n }\n}\n\nfunction isItemVisible<Value>(\n item: FlatTreeItem<Value>,\n openItems: ImmutableSet<Value>,\n flatTreeItems: FlatTreeItems<Value>,\n) {\n if (item.level === 1) {\n return true;\n }\n while (item.parentValue && item.parentValue !== flatTreeItems.root.value) {\n if (!openItems.has(item.parentValue)) {\n return false;\n }\n const parent = flatTreeItems.get(item.parentValue);\n if (!parent) {\n return false;\n }\n item = parent;\n }\n return true;\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["React","createFlatTreeItems","flatTreeItemProps","root","createFlatTreeRootItem","itemsPerValue","Map","value","items","index","length","parentValue","flatTreeRootId","treeItemProps","nextItemProps","currentParent","get","process","env","NODE_ENV","console","error","id","_treeItemProps_itemType","itemType","undefined","_currentParent_level","currentLevel","level","currentChildrenSize","childrenSize","ref","createRef","flatTreeItem","getTreeItemProps","set","push","flatTreeItems","size","getByIndex","key","current","VisibleFlatTreeItemGenerator","openItems","visibleIndex","item","isItemVisible","has","parent"],"sources":["../../src/utils/createFlatTreeItems.ts"],"sourcesContent":["import type { ImmutableSet } from './ImmutableSet';\nimport type { FlatTreeItem, FlatTreeItemProps } from '../hooks/useFlatTree';\nimport * as React from 'react';\n\n/**\n * @internal\n */\nexport type FlatTreeItems<Props extends FlatTreeItemProps<unknown>> = {\n size: number;\n root: FlatTreeItem;\n get(key: Props['value']): FlatTreeItem<Props> | undefined;\n set(key: Props['value'], value: FlatTreeItem<Props>): void;\n getByIndex(index: number): FlatTreeItem<Props>;\n};\n\n/**\n * creates a list of flat tree items\n * and provides a map to access each item by id\n */\nexport function createFlatTreeItems<Props extends FlatTreeItemProps<unknown>>(\n flatTreeItemProps: Props[],\n): FlatTreeItems<Props> {\n const root = createFlatTreeRootItem();\n const itemsPerValue = new Map<unknown, FlatTreeItem<FlatTreeItemProps<unknown>>>([[root.value, root]]);\n const items: FlatTreeItem<FlatTreeItemProps<unknown>>[] = [];\n\n for (let index = 0; index < flatTreeItemProps.length; index++) {\n const { parentValue = flatTreeRootId, ...treeItemProps } = flatTreeItemProps[index];\n\n const nextItemProps: Props | undefined = flatTreeItemProps[index + 1];\n const currentParent = itemsPerValue.get(parentValue);\n if (!currentParent) {\n if (process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.error(\n `useFlatTree: item ${flatTreeItemProps[index].id} is wrongly positioned, did you properly ordered provided item props? make sure provided items are organized`,\n );\n }\n break;\n }\n const itemType =\n treeItemProps.itemType ??\n (treeItemProps.value === undefined || nextItemProps?.parentValue !== treeItemProps.value ? 'leaf' : 'branch');\n const currentLevel = (currentParent.level ?? 0) + 1;\n const currentChildrenSize = ++currentParent.childrenSize;\n const ref = React.createRef<HTMLDivElement>();\n\n const flatTreeItem: FlatTreeItem<FlatTreeItemProps<unknown>> = {\n value: treeItemProps.value,\n getTreeItemProps: () => ({\n ...treeItemProps,\n 'aria-level': currentLevel,\n 'aria-posinset': currentChildrenSize,\n 'aria-setsize': currentParent.childrenSize,\n itemType,\n // a reference to every parent element is necessary to ensure navigation\n ref: flatTreeItem.childrenSize > 0 ? ref : undefined,\n }),\n ref,\n level: currentLevel,\n parentValue,\n childrenSize: 0,\n index: -1,\n };\n itemsPerValue.set(flatTreeItem.value, flatTreeItem);\n items.push(flatTreeItem);\n }\n\n const flatTreeItems: FlatTreeItems<FlatTreeItemProps<unknown>> = {\n root,\n size: items.length,\n getByIndex: index => items[index],\n get: key => itemsPerValue.get(key),\n set: (key, value) => itemsPerValue.set(key, value),\n };\n\n return flatTreeItems as FlatTreeItems<Props>;\n}\n\nexport const flatTreeRootId = '__fuiFlatTreeRoot';\n\nfunction createFlatTreeRootItem(): FlatTreeItem {\n return {\n ref: { current: null },\n value: flatTreeRootId,\n parentValue: undefined,\n getTreeItemProps: () => {\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.error('useFlatTree: internal error, trying to access treeitem props from invalid root element');\n }\n return { value: flatTreeRootId, 'aria-setsize': -1, 'aria-level': -1, 'aria-posinset': -1, itemType: 'branch' };\n },\n childrenSize: 0,\n get index() {\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.error('useFlatTree: internal error, trying to access treeitem props from invalid root element');\n }\n return -1;\n },\n level: 0,\n };\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function* VisibleFlatTreeItemGenerator<Props extends FlatTreeItemProps<unknown>>(\n openItems: ImmutableSet<unknown>,\n flatTreeItems: FlatTreeItems<Props>,\n) {\n for (let index = 0, visibleIndex = 0; index < flatTreeItems.size; index++) {\n const item = flatTreeItems.getByIndex(index) as FlatTreeItem<Props>;\n if (isItemVisible(item, openItems, flatTreeItems)) {\n item.index = visibleIndex++;\n yield item;\n } else {\n // Jump the amount of children the current item has, since those items will also be hidden\n index += item.childrenSize;\n }\n }\n}\n\nfunction isItemVisible(\n item: FlatTreeItem<FlatTreeItemProps<unknown>>,\n openItems: ImmutableSet<unknown>,\n flatTreeItems: FlatTreeItems<FlatTreeItemProps<unknown>>,\n) {\n if (item.level === 1) {\n return true;\n }\n while (item.parentValue && item.parentValue !== flatTreeItems.root.value) {\n if (!openItems.has(item.parentValue)) {\n return false;\n }\n const parent = flatTreeItems.get(item.parentValue);\n if (!parent) {\n return false;\n }\n item = parent;\n }\n return true;\n}\n"],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- import * as React from 'react';
2
1
  let count = 1;
3
2
  function flattenTreeRecursive(items, parent, level = 1) {
4
3
  return items.reduce((acc, {
@@ -14,7 +13,6 @@ function flattenTreeRecursive(items, parent, level = 1) {
14
13
  'aria-setsize': items.length,
15
14
  parentValue: parent === null || parent === void 0 ? void 0 : parent.value,
16
15
  value: (_item_value = item.value) !== null && _item_value !== void 0 ? _item_value : id,
17
- leaf: subtree === undefined,
18
16
  ...item
19
17
  };
20
18
  acc.push(flatTreeItem);
@@ -65,31 +63,4 @@ function flattenTreeRecursive(items, parent, level = 1) {
65
63
  * ```
66
64
  */ // eslint-disable-next-line @typescript-eslint/naming-convention
67
65
  export const flattenTree_unstable = items => flattenTreeRecursive(items);
68
- /**
69
- * @internal
70
- */
71
- export const flattenTreeFromElement = (root, parent, level = 1) => {
72
- const children = React.Children.toArray(root.props.children);
73
- return children.reduce((acc, curr, index) => {
74
- const [content, subtree] = React.Children.toArray(curr.props.children);
75
- var _curr_props_id;
76
- const id = (_curr_props_id = curr.props.id) !== null && _curr_props_id !== void 0 ? _curr_props_id : `fui-FlatTreeItem-${count++}`;
77
- var _curr_props_value;
78
- const flatTreeItem = {
79
- 'aria-level': level,
80
- 'aria-posinset': index + 1,
81
- 'aria-setsize': children.length,
82
- parentValue: parent === null || parent === void 0 ? void 0 : parent.value,
83
- value: (_curr_props_value = curr.props.value) !== null && _curr_props_value !== void 0 ? _curr_props_value : id,
84
- leaf: subtree === undefined,
85
- ...curr.props,
86
- children: content
87
- };
88
- acc.push(flatTreeItem);
89
- if (subtree !== undefined) {
90
- acc.push(...flattenTreeFromElement(subtree, flatTreeItem, level + 1));
91
- }
92
- return acc;
93
- }, []);
94
- };
95
66
  //# sourceMappingURL=flattenTree.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","count","flattenTreeRecursive","items","parent","level","reduce","acc","subtree","item","index","_item_id","id","_item_value","flatTreeItem","length","parentValue","value","leaf","undefined","push","flattenTree_unstable","flattenTreeFromElement","root","children","Children","toArray","props","curr","content","_curr_props_id","_curr_props_value"],"sources":["../../src/utils/flattenTree.ts"],"sourcesContent":["import * as React from 'react';\nimport { FlatTreeItemProps } from '../hooks/useFlatTree';\nimport { TreeItemProps } from '../TreeItem';\n\nexport type NestedTreeItem<Value = string> = Omit<TreeItemProps<Value>, 'subtree'> & {\n subtree?: NestedTreeItem<Value>[];\n};\n\nlet count = 1;\nfunction flattenTreeRecursive<Value = string>(\n items: NestedTreeItem<Value>[],\n parent?: FlatTreeItemProps<Value>,\n level = 1,\n): FlatTreeItemProps<Value>[] {\n return items.reduce<FlatTreeItemProps<Value>[]>((acc, { subtree, ...item }, index) => {\n const id = item.id ?? `fui-FlatTreeItem-${count++}`;\n const flatTreeItem: FlatTreeItemProps<Value> = {\n 'aria-level': level,\n 'aria-posinset': index + 1,\n 'aria-setsize': items.length,\n parentValue: parent?.value,\n value: item.value ?? (id as unknown as Value),\n leaf: subtree === undefined,\n ...item,\n };\n acc.push(flatTreeItem);\n if (subtree !== undefined) {\n acc.push(...flattenTreeRecursive(subtree, flatTreeItem, level + 1));\n }\n return acc;\n }, []);\n}\n\n/**\n * Converts a nested structure to a flat one which can be consumed by `useFlatTreeItems`\n * @example\n * ```tsx\n * const defaultItems = flattenTree_unstable([\n * {\n * children: <TreeItemLayout>level 1, item 1</TreeItemLayout>,\n * subtree: [\n * {\n * children: <TreeItemLayout>level 2, item 1</TreeItemLayout>,\n * },\n * {\n * children: <TreeItemLayout>level 2, item 2</TreeItemLayout>,\n * },\n * {\n * children: <TreeItemLayout>level 2, item 3</TreeItemLayout>,\n * },\n * ],\n * },\n * {\n * children: <TreeItemLayout>level 1, item 2</TreeItemLayout>,\n * subtree: [\n * {\n * children: <TreeItemLayout>level 2, item 1</TreeItemLayout>,\n * subtree: [\n * {\n * children: <TreeItemLayout>level 3, item 1</TreeItemLayout>,\n * subtree: [\n * {\n * children: <TreeItemLayout>level 4, item 1</TreeItemLayout>,\n * },\n * ],\n * },\n * ],\n * },\n * ],\n * },\n * ]);\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const flattenTree_unstable = <Value = string>(items: NestedTreeItem<Value>[]): FlatTreeItemProps<Value>[] =>\n flattenTreeRecursive(items);\n\n/**\n * @internal\n */\nexport const flattenTreeFromElement = <Value = string>(\n root: React.ReactElement<{\n children?: React.ReactElement<TreeItemProps<Value>> | React.ReactElement<TreeItemProps<Value>>[];\n }>,\n parent?: FlatTreeItemProps<Value>,\n level = 1,\n): FlatTreeItemProps<Value>[] => {\n const children = React.Children.toArray(root.props.children) as React.ReactElement<TreeItemProps<Value>>[];\n return children.reduce<FlatTreeItemProps<Value>[]>((acc, curr, index) => {\n const [content, subtree] = React.Children.toArray(curr.props.children) as [\n React.ReactNode,\n typeof root | undefined,\n ];\n const id = curr.props.id ?? `fui-FlatTreeItem-${count++}`;\n const flatTreeItem: FlatTreeItemProps<Value> = {\n 'aria-level': level,\n 'aria-posinset': index + 1,\n 'aria-setsize': children.length,\n parentValue: parent?.value,\n value: curr.props.value ?? (id as unknown as Value),\n leaf: subtree === undefined,\n ...curr.props,\n children: content,\n };\n acc.push(flatTreeItem);\n if (subtree !== undefined) {\n acc.push(...flattenTreeFromElement(subtree, flatTreeItem, level + 1));\n }\n return acc;\n }, []);\n};\n"],"mappings":"AAAA,YAAYA,KAAA,MAAW;AAQvB,IAAIC,KAAA,GAAQ;AACZ,SAASC,qBACPC,KAA8B,EAC9BC,MAAiC,EACjCC,KAAA,GAAQ,CAAC,EACmB;EAC5B,OAAOF,KAAA,CAAMG,MAAM,CAA6B,CAACC,GAAA,EAAK;IAAEC,OAAA;IAAS,GAAGC;EAAA,CAAM,EAAEC,KAAA,KAAU;QACzEC,QAAA;IAAX,MAAMC,EAAA,GAAK,CAAAD,QAAA,GAAAF,IAAA,CAAKG,EAAE,cAAPD,QAAA,cAAAA,QAAA,GAAY,oBAAmBV,KAAA,EAAQ,EAAC;QAM1CY,WAAA;IALT,MAAMC,YAAA,GAAyC;MAC7C,cAAcT,KAAA;MACd,iBAAiBK,KAAA,GAAQ;MACzB,gBAAgBP,KAAA,CAAMY,MAAM;MAC5BC,WAAA,EAAaZ,MAAA,aAAAA,MAAA,uBAAAA,MAAA,CAAQa,KAAK;MAC1BA,KAAA,EAAO,CAAAJ,WAAA,GAAAJ,IAAA,CAAKQ,KAAK,cAAVJ,WAAA,cAAAA,WAAA,GAAeD,EAAuB;MAC7CM,IAAA,EAAMV,OAAA,KAAYW,SAAA;MAClB,GAAGV;IACL;IACAF,GAAA,CAAIa,IAAI,CAACN,YAAA;IACT,IAAIN,OAAA,KAAYW,SAAA,EAAW;MACzBZ,GAAA,CAAIa,IAAI,IAAIlB,oBAAA,CAAqBM,OAAA,EAASM,YAAA,EAAcT,KAAA,GAAQ;IAClE;IACA,OAAOE,GAAA;EACT,GAAG,EAAE;AACP;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAAA,CAwCA;AACA,OAAO,MAAMc,oBAAA,GAAwClB,KAAA,IACnDD,oBAAA,CAAqBC,KAAA;AAEvB;;;AAGA,OAAO,MAAMmB,sBAAA,GAAyBA,CACpCC,IAAA,EAGAnB,MAAA,EACAC,KAAA,GAAQ,CAAC,KACsB;EAC/B,MAAMmB,QAAA,GAAWxB,KAAA,CAAMyB,QAAQ,CAACC,OAAO,CAACH,IAAA,CAAKI,KAAK,CAACH,QAAQ;EAC3D,OAAOA,QAAA,CAASlB,MAAM,CAA6B,CAACC,GAAA,EAAKqB,IAAA,EAAMlB,KAAA,KAAU;IACvE,MAAM,CAACmB,OAAA,EAASrB,OAAA,CAAQ,GAAGR,KAAA,CAAMyB,QAAQ,CAACC,OAAO,CAACE,IAAA,CAAKD,KAAK,CAACH,QAAQ;QAI1DM,cAAA;IAAX,MAAMlB,EAAA,GAAK,CAAAkB,cAAA,GAAAF,IAAA,CAAKD,KAAK,CAACf,EAAE,cAAbkB,cAAA,cAAAA,cAAA,GAAkB,oBAAmB7B,KAAA,EAAQ,EAAC;QAMhD8B,iBAAA;IALT,MAAMjB,YAAA,GAAyC;MAC7C,cAAcT,KAAA;MACd,iBAAiBK,KAAA,GAAQ;MACzB,gBAAgBc,QAAA,CAAST,MAAM;MAC/BC,WAAA,EAAaZ,MAAA,aAAAA,MAAA,uBAAAA,MAAA,CAAQa,KAAK;MAC1BA,KAAA,EAAO,CAAAc,iBAAA,GAAAH,IAAA,CAAKD,KAAK,CAACV,KAAK,cAAhBc,iBAAA,cAAAA,iBAAA,GAAqBnB,EAAuB;MACnDM,IAAA,EAAMV,OAAA,KAAYW,SAAA;MAClB,GAAGS,IAAA,CAAKD,KAAK;MACbH,QAAA,EAAUK;IACZ;IACAtB,GAAA,CAAIa,IAAI,CAACN,YAAA;IACT,IAAIN,OAAA,KAAYW,SAAA,EAAW;MACzBZ,GAAA,CAAIa,IAAI,IAAIE,sBAAA,CAAuBd,OAAA,EAASM,YAAA,EAAcT,KAAA,GAAQ;IACpE;IACA,OAAOE,GAAA;EACT,GAAG,EAAE;AACP"}
1
+ {"version":3,"names":["count","flattenTreeRecursive","items","parent","level","reduce","acc","subtree","item","index","_item_id","id","_item_value","flatTreeItem","length","parentValue","value","push","undefined","flattenTree_unstable"],"sources":["../../src/utils/flattenTree.ts"],"sourcesContent":["import { FlatTreeItemProps } from '../hooks/useFlatTree';\nimport { TreeItemProps } from '../TreeItem';\n\nexport type NestedTreeItem<Props extends TreeItemProps<unknown>> = Omit<Props, 'subtree' | 'itemType'> & {\n subtree?: NestedTreeItem<Props>[];\n};\n\nexport type FlattenedTreeItem<Props extends TreeItemProps<unknown>> = FlatTreeItemProps<NonNullable<Props['value']>> &\n Props;\n\nlet count = 1;\nfunction flattenTreeRecursive<Props extends TreeItemProps<unknown>>(\n items: NestedTreeItem<Props>[],\n parent?: FlatTreeItemProps<Props['value']> & Props,\n level = 1,\n): FlattenedTreeItem<Props>[] {\n return items.reduce<FlattenedTreeItem<Props>[]>((acc, { subtree, ...item }, index) => {\n const id = item.id ?? `fui-FlatTreeItem-${count++}`;\n const flatTreeItem = {\n 'aria-level': level,\n 'aria-posinset': index + 1,\n 'aria-setsize': items.length,\n parentValue: parent?.value,\n value: item.value ?? (id as unknown as Props['value']),\n ...item,\n } as FlattenedTreeItem<Props>;\n acc.push(flatTreeItem);\n if (subtree !== undefined) {\n acc.push(...flattenTreeRecursive<Props>(subtree, flatTreeItem, level + 1));\n }\n return acc;\n }, []);\n}\n\n/**\n * Converts a nested structure to a flat one which can be consumed by `useFlatTreeItems`\n * @example\n * ```tsx\n * const defaultItems = flattenTree_unstable([\n * {\n * children: <TreeItemLayout>level 1, item 1</TreeItemLayout>,\n * subtree: [\n * {\n * children: <TreeItemLayout>level 2, item 1</TreeItemLayout>,\n * },\n * {\n * children: <TreeItemLayout>level 2, item 2</TreeItemLayout>,\n * },\n * {\n * children: <TreeItemLayout>level 2, item 3</TreeItemLayout>,\n * },\n * ],\n * },\n * {\n * children: <TreeItemLayout>level 1, item 2</TreeItemLayout>,\n * subtree: [\n * {\n * children: <TreeItemLayout>level 2, item 1</TreeItemLayout>,\n * subtree: [\n * {\n * children: <TreeItemLayout>level 3, item 1</TreeItemLayout>,\n * subtree: [\n * {\n * children: <TreeItemLayout>level 4, item 1</TreeItemLayout>,\n * },\n * ],\n * },\n * ],\n * },\n * ],\n * },\n * ]);\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const flattenTree_unstable = <Props extends TreeItemProps<unknown>>(\n items: NestedTreeItem<Props>[],\n): FlattenedTreeItem<Props>[] => flattenTreeRecursive(items);\n"],"mappings":"AAUA,IAAIA,KAAA,GAAQ;AACZ,SAASC,qBACPC,KAA8B,EAC9BC,MAAkD,EAClDC,KAAA,GAAQ,CAAC,EACmB;EAC5B,OAAOF,KAAA,CAAMG,MAAM,CAA6B,CAACC,GAAA,EAAK;IAAEC,OAAA;IAAS,GAAGC;EAAA,CAAM,EAAEC,KAAA,KAAU;QACzEC,QAAA;IAAX,MAAMC,EAAA,GAAK,CAAAD,QAAA,GAAAF,IAAA,CAAKG,EAAE,cAAPD,QAAA,cAAAA,QAAA,GAAY,oBAAmBV,KAAA,EAAQ,EAAC;QAM1CY,WAAA;IALT,MAAMC,YAAA,GAAe;MACnB,cAAcT,KAAA;MACd,iBAAiBK,KAAA,GAAQ;MACzB,gBAAgBP,KAAA,CAAMY,MAAM;MAC5BC,WAAA,EAAaZ,MAAA,aAAAA,MAAA,uBAAAA,MAAA,CAAQa,KAAK;MAC1BA,KAAA,EAAO,CAAAJ,WAAA,GAAAJ,IAAA,CAAKQ,KAAK,cAAVJ,WAAA,cAAAA,WAAA,GAAeD,EAAgC;MACtD,GAAGH;IACL;IACAF,GAAA,CAAIW,IAAI,CAACJ,YAAA;IACT,IAAIN,OAAA,KAAYW,SAAA,EAAW;MACzBZ,GAAA,CAAIW,IAAI,IAAIhB,oBAAA,CAA4BM,OAAA,EAASM,YAAA,EAAcT,KAAA,GAAQ;IACzE;IACA,OAAOE,GAAA;EACT,GAAG,EAAE;AACP;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAAA,CAwCA;AACA,OAAO,MAAMa,oBAAA,GACXjB,KAAA,IAC+BD,oBAAA,CAAqBC,KAAA"}
@@ -1,19 +1,19 @@
1
- import { ArrowDown, ArrowLeft, ArrowRight, ArrowUp, End, Home } from '@fluentui/keyboard-keys';
1
+ import { ArrowDown, ArrowLeft, ArrowRight, ArrowUp, End, Home, Enter } from '@fluentui/keyboard-keys';
2
2
  export const treeItemLevelToken = '--fluent-TreeItem--level';
3
3
  export const treeAvatarSize = {
4
4
  medium: 32,
5
5
  small: 24
6
6
  };
7
7
  export const treeDataTypes = {
8
- arrowLeft: ArrowLeft,
9
- arrowRight: ArrowRight,
10
- enter: 'Enter',
11
- click: 'Click',
12
- expandIconClick: 'ExpandIconClick',
13
- end: End,
14
- home: Home,
15
- arrowUp: ArrowUp,
16
- arrowDown: ArrowDown,
17
- typeAhead: 'TypeAhead'
8
+ ArrowLeft,
9
+ ArrowRight,
10
+ Enter,
11
+ Click: 'Click',
12
+ ExpandIconClick: 'ExpandIconClick',
13
+ End,
14
+ Home,
15
+ ArrowUp,
16
+ ArrowDown,
17
+ TypeAhead: 'TypeAhead'
18
18
  };
19
19
  //# sourceMappingURL=tokens.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["ArrowDown","ArrowLeft","ArrowRight","ArrowUp","End","Home","treeItemLevelToken","treeAvatarSize","medium","small","treeDataTypes","arrowLeft","arrowRight","enter","click","expandIconClick","end","home","arrowUp","arrowDown","typeAhead"],"sources":["../../src/utils/tokens.ts"],"sourcesContent":["import { ArrowDown, ArrowLeft, ArrowRight, ArrowUp, End, Home } from '@fluentui/keyboard-keys';\nimport { TreeNavigationData_unstable, TreeOpenChangeData } from '../Tree';\n\nexport const treeItemLevelToken = '--fluent-TreeItem--level' as const;\n\nexport const treeAvatarSize = {\n medium: 32,\n small: 24,\n} as const;\n\nexport const treeDataTypes: {\n readonly [K in Uncapitalize<TreeOpenChangeData['type'] | TreeNavigationData_unstable['type']>]: Capitalize<K>;\n} = {\n arrowLeft: ArrowLeft,\n arrowRight: ArrowRight,\n enter: 'Enter',\n click: 'Click',\n expandIconClick: 'ExpandIconClick',\n end: End,\n home: Home,\n arrowUp: ArrowUp,\n arrowDown: ArrowDown,\n typeAhead: 'TypeAhead',\n};\n"],"mappings":"AAAA,SAASA,SAAS,EAAEC,SAAS,EAAEC,UAAU,EAAEC,OAAO,EAAEC,GAAG,EAAEC,IAAI,QAAQ;AAGrE,OAAO,MAAMC,kBAAA,GAAqB;AAElC,OAAO,MAAMC,cAAA,GAAiB;EAC5BC,MAAA,EAAQ;EACRC,KAAA,EAAO;AACT;AAEA,OAAO,MAAMC,aAAA,GAET;EACFC,SAAA,EAAWV,SAAA;EACXW,UAAA,EAAYV,UAAA;EACZW,KAAA,EAAO;EACPC,KAAA,EAAO;EACPC,eAAA,EAAiB;EACjBC,GAAA,EAAKZ,GAAA;EACLa,IAAA,EAAMZ,IAAA;EACNa,OAAA,EAASf,OAAA;EACTgB,SAAA,EAAWnB,SAAA;EACXoB,SAAA,EAAW;AACb"}
1
+ {"version":3,"names":["ArrowDown","ArrowLeft","ArrowRight","ArrowUp","End","Home","Enter","treeItemLevelToken","treeAvatarSize","medium","small","treeDataTypes","Click","ExpandIconClick","TypeAhead"],"sources":["../../src/utils/tokens.ts"],"sourcesContent":["import { ArrowDown, ArrowLeft, ArrowRight, ArrowUp, End, Home, Enter } from '@fluentui/keyboard-keys';\nimport { TreeNavigationData_unstable, TreeOpenChangeData } from '../Tree';\n\nexport const treeItemLevelToken = '--fluent-TreeItem--level' as const;\n\nexport const treeAvatarSize = {\n medium: 32,\n small: 24,\n} as const;\n\nexport const treeDataTypes: {\n readonly [K in TreeOpenChangeData['type'] | TreeNavigationData_unstable['type']]: K;\n} = {\n ArrowLeft,\n ArrowRight,\n Enter,\n Click: 'Click',\n ExpandIconClick: 'ExpandIconClick',\n End,\n Home,\n ArrowUp,\n ArrowDown,\n TypeAhead: 'TypeAhead',\n};\n"],"mappings":"AAAA,SAASA,SAAS,EAAEC,SAAS,EAAEC,UAAU,EAAEC,OAAO,EAAEC,GAAG,EAAEC,IAAI,EAAEC,KAAK,QAAQ;AAG5E,OAAO,MAAMC,kBAAA,GAAqB;AAElC,OAAO,MAAMC,cAAA,GAAiB;EAC5BC,MAAA,EAAQ;EACRC,KAAA,EAAO;AACT;AAEA,OAAO,MAAMC,aAAA,GAET;EACFV,SAAA;EACAC,UAAA;EACAI,KAAA;EACAM,KAAA,EAAO;EACPC,eAAA,EAAiB;EACjBT,GAAA;EACAC,IAAA;EACAF,OAAA;EACAH,SAAA;EACAc,SAAA,EAAW;AACb"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ const _exportStar = require("@swc/helpers/lib/_export_star.js").default;
6
+ _exportStar(require("./components/TreeItemAside/index"), exports);
7
+ //# sourceMappingURL=TreeItemAside.js.map
8
+
9
+ //# sourceMappingURL=TreeItemAside.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../lib/TreeItemAside.js"],"sourcesContent":["export * from './components/TreeItemAside/index';\n//# sourceMappingURL=TreeItemAside.js.map"],"names":[],"mappings":";;;;;oBAAc;CACd,yCAAyC"}
@@ -10,11 +10,11 @@ const _interopRequireWildcard = require("@swc/helpers/lib/_interop_require_wildc
10
10
  const _react = /*#__PURE__*/ _interopRequireWildcard(require("react"));
11
11
  const _useTree = require("./useTree");
12
12
  const _renderTree = require("./renderTree");
13
- const _useTreeStyles = require("./useTreeStyles");
13
+ const _useTreeStylesStyles = require("./useTreeStyles.styles");
14
14
  const _useTreeContextValues = require("./useTreeContextValues");
15
15
  const Tree = /*#__PURE__*/ _react.forwardRef((props, ref)=>{
16
16
  const state = (0, _useTree.useTree_unstable)(props, ref);
17
- (0, _useTreeStyles.useTreeStyles_unstable)(state);
17
+ (0, _useTreeStylesStyles.useTreeStyles_unstable)(state);
18
18
  const contextValues = (0, _useTreeContextValues.useTreeContextValues_unstable)(state);
19
19
  return (0, _renderTree.renderTree_unstable)(state, contextValues);
20
20
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../lib/components/Tree/Tree.js"],"sourcesContent":["import * as React from 'react';\nimport { useTree_unstable } from './useTree';\nimport { renderTree_unstable } from './renderTree';\nimport { useTreeStyles_unstable } from './useTreeStyles';\nimport { useTreeContextValues_unstable } from './useTreeContextValues';\n/**\n * A tree view widget presents a hierarchical list.\n * Any item in the hierarchy may have child items,\n * and items that have children may be expanded or collapsed to show or hide the children.\n * For example, in a file system navigator that uses a tree view to display folders and files,\n * an item representing a folder can be expanded to reveal the contents of the folder,\n * which may be files, folders, or both.\n */\nexport const Tree = /*#__PURE__*/React.forwardRef((props, ref) => {\n const state = useTree_unstable(props, ref);\n useTreeStyles_unstable(state);\n const contextValues = useTreeContextValues_unstable(state);\n return renderTree_unstable(state, contextValues);\n});\nTree.displayName = 'Tree';\n//# sourceMappingURL=Tree.js.map"],"names":["Tree","React","forwardRef","props","ref","state","useTree_unstable","useTreeStyles_unstable","contextValues","useTreeContextValues_unstable","renderTree_unstable","displayName"],"mappings":";;;;+BAaaA;;aAAAA;;;6DAbU;yBACU;4BACG;+BACG;sCACO;AASvC,MAAMA,OAAO,WAAW,GAAEC,OAAMC,UAAU,CAAC,CAACC,OAAOC,MAAQ;IAChE,MAAMC,QAAQC,IAAAA,yBAAgB,EAACH,OAAOC;IACtCG,IAAAA,qCAAsB,EAACF;IACvB,MAAMG,gBAAgBC,IAAAA,mDAA6B,EAACJ;IACpD,OAAOK,IAAAA,+BAAmB,EAACL,OAAOG;AACpC;AACAR,KAAKW,WAAW,GAAG,QACnB,gCAAgC"}
1
+ {"version":3,"sources":["../../../lib/components/Tree/Tree.js"],"sourcesContent":["import * as React from 'react';\nimport { useTree_unstable } from './useTree';\nimport { renderTree_unstable } from './renderTree';\nimport { useTreeStyles_unstable } from './useTreeStyles.styles';\nimport { useTreeContextValues_unstable } from './useTreeContextValues';\n/**\n * A tree view widget presents a hierarchical list.\n * Any item in the hierarchy may have child items,\n * and items that have children may be expanded or collapsed to show or hide the children.\n * For example, in a file system navigator that uses a tree view to display folders and files,\n * an item representing a folder can be expanded to reveal the contents of the folder,\n * which may be files, folders, or both.\n */\nexport const Tree = /*#__PURE__*/React.forwardRef((props, ref) => {\n const state = useTree_unstable(props, ref);\n useTreeStyles_unstable(state);\n const contextValues = useTreeContextValues_unstable(state);\n return renderTree_unstable(state, contextValues);\n});\nTree.displayName = 'Tree';\n//# sourceMappingURL=Tree.js.map"],"names":["Tree","React","forwardRef","props","ref","state","useTree_unstable","useTreeStyles_unstable","contextValues","useTreeContextValues_unstable","renderTree_unstable","displayName"],"mappings":";;;;+BAaaA;;aAAAA;;;6DAbU;yBACU;4BACG;qCACG;sCACO;AASvC,MAAMA,OAAO,WAAW,GAAEC,OAAMC,UAAU,CAAC,CAACC,OAAOC,MAAQ;IAChE,MAAMC,QAAQC,IAAAA,yBAAgB,EAACH,OAAOC;IACtCG,IAAAA,2CAAsB,EAACF;IACvB,MAAMG,gBAAgBC,IAAAA,mDAA6B,EAACJ;IACpD,OAAOK,IAAAA,+BAAmB,EAACL,OAAOG;AACpC;AACAR,KAAKW,WAAW,GAAG,QACnB,gCAAgC"}
@@ -7,7 +7,7 @@ _exportStar(require("./Tree"), exports);
7
7
  _exportStar(require("./Tree.types"), exports);
8
8
  _exportStar(require("./renderTree"), exports);
9
9
  _exportStar(require("./useTree"), exports);
10
- _exportStar(require("./useTreeStyles"), exports);
10
+ _exportStar(require("./useTreeStyles.styles"), exports);
11
11
  _exportStar(require("./useTreeContextValues"), exports);
12
12
  //# sourceMappingURL=index.js.map
13
13
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../lib/components/Tree/index.js"],"sourcesContent":["export * from './Tree';\nexport * from './Tree.types';\nexport * from './renderTree';\nexport * from './useTree';\nexport * from './useTreeStyles';\nexport * from './useTreeContextValues';\n//# sourceMappingURL=index.js.map"],"names":[],"mappings":";;;;;oBAAc;oBACA;oBACA;oBACA;oBACA;oBACA;CACd,iCAAiC"}
1
+ {"version":3,"sources":["../../../lib/components/Tree/index.js"],"sourcesContent":["export * from './Tree';\nexport * from './Tree.types';\nexport * from './renderTree';\nexport * from './useTree';\nexport * from './useTreeStyles.styles';\nexport * from './useTreeContextValues';\n//# sourceMappingURL=index.js.map"],"names":[],"mappings":";;;;;oBAAc;oBACA;oBACA;oBACA;oBACA;oBACA;CACd,iCAAiC"}
@@ -13,7 +13,7 @@ const renderTree_unstable = (state, contextValues)=>{
13
13
  const { slots , slotProps } = (0, _reactUtilities.getSlotsNext)(state);
14
14
  return /*#__PURE__*/ (0, _reactJsxRuntime.createElement)(_contexts.TreeProvider, {
15
15
  value: contextValues.tree
16
- }, /*#__PURE__*/ (0, _reactJsxRuntime.createElement)(slots.root, slotProps.root, slotProps.root.children));
16
+ }, state.open && /*#__PURE__*/ (0, _reactJsxRuntime.createElement)(slots.root, slotProps.root, slotProps.root.children));
17
17
  }; //# sourceMappingURL=renderTree.js.map
18
18
 
19
19
  //# sourceMappingURL=renderTree.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../lib/components/Tree/renderTree.js"],"sourcesContent":["/** @jsxRuntime classic */ /** @jsx createElement */import { createElement } from '@fluentui/react-jsx-runtime';\nimport { getSlotsNext } from '@fluentui/react-utilities';\nimport { TreeProvider } from '../../contexts';\nexport const renderTree_unstable = (state, contextValues) => {\n const {\n slots,\n slotProps\n } = getSlotsNext(state);\n return /*#__PURE__*/createElement(TreeProvider, {\n value: contextValues.tree\n }, /*#__PURE__*/createElement(slots.root, slotProps.root, slotProps.root.children));\n};\n//# sourceMappingURL=renderTree.js.map"],"names":["renderTree_unstable","state","contextValues","slots","slotProps","getSlotsNext","createElement","TreeProvider","value","tree","root","children"],"mappings":"AAAA,wBAAwB,GAAG,uBAAuB;;;;+BAGrCA;;aAAAA;;iCAHqE;gCACrD;0BACA;AACtB,MAAMA,sBAAsB,CAACC,OAAOC,gBAAkB;IAC3D,MAAM,EACJC,MAAK,EACLC,UAAS,EACV,GAAGC,IAAAA,4BAAY,EAACJ;IACjB,OAAO,WAAW,GAAEK,IAAAA,8BAAa,EAACC,sBAAY,EAAE;QAC9CC,OAAON,cAAcO,IAAI;IAC3B,GAAG,WAAW,GAAEH,IAAAA,8BAAa,EAACH,MAAMO,IAAI,EAAEN,UAAUM,IAAI,EAAEN,UAAUM,IAAI,CAACC,QAAQ;AACnF,GACA,sCAAsC"}
1
+ {"version":3,"sources":["../../../lib/components/Tree/renderTree.js"],"sourcesContent":["/** @jsxRuntime classic */ /** @jsx createElement */import { createElement } from '@fluentui/react-jsx-runtime';\nimport { getSlotsNext } from '@fluentui/react-utilities';\nimport { TreeProvider } from '../../contexts';\nexport const renderTree_unstable = (state, contextValues) => {\n const {\n slots,\n slotProps\n } = getSlotsNext(state);\n return /*#__PURE__*/createElement(TreeProvider, {\n value: contextValues.tree\n }, state.open && /*#__PURE__*/createElement(slots.root, slotProps.root, slotProps.root.children));\n};\n//# sourceMappingURL=renderTree.js.map"],"names":["renderTree_unstable","state","contextValues","slots","slotProps","getSlotsNext","createElement","TreeProvider","value","tree","open","root","children"],"mappings":"AAAA,wBAAwB,GAAG,uBAAuB;;;;+BAGrCA;;aAAAA;;iCAHqE;gCACrD;0BACA;AACtB,MAAMA,sBAAsB,CAACC,OAAOC,gBAAkB;IAC3D,MAAM,EACJC,MAAK,EACLC,UAAS,EACV,GAAGC,IAAAA,4BAAY,EAACJ;IACjB,OAAO,WAAW,GAAEK,IAAAA,8BAAa,EAACC,sBAAY,EAAE;QAC9CC,OAAON,cAAcO,IAAI;IAC3B,GAAGR,MAAMS,IAAI,IAAI,WAAW,GAAEJ,IAAAA,8BAAa,EAACH,MAAMQ,IAAI,EAAEP,UAAUO,IAAI,EAAEP,UAAUO,IAAI,CAACC,QAAQ;AACjG,GACA,sCAAsC"}
@@ -0,0 +1,151 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "useRootTree", {
6
+ enumerable: true,
7
+ get: ()=>useRootTree
8
+ });
9
+ const _interopRequireWildcard = require("@swc/helpers/lib/_interop_require_wildcard.js").default;
10
+ const _react = /*#__PURE__*/ _interopRequireWildcard(require("react"));
11
+ const _reactDom = /*#__PURE__*/ _interopRequireWildcard(require("react-dom"));
12
+ const _reactUtilities = require("@fluentui/react-utilities");
13
+ const _hooks = require("../../hooks");
14
+ const _tokens = require("../../utils/tokens");
15
+ function useRootTree(props, ref) {
16
+ warnIfNoProperPropsRootTree(props);
17
+ const { appearance ='subtle' , size ='medium' } = props;
18
+ const [openItems, updateOpenItems] = (0, _hooks.useOpenItemsState)(props);
19
+ const [navigate, navigationRef] = (0, _hooks.useNestedTreeNavigation)();
20
+ const requestOpenChange = (data)=>{
21
+ var _props_onOpenChange;
22
+ (_props_onOpenChange = props.onOpenChange) === null || _props_onOpenChange === void 0 ? void 0 : _props_onOpenChange.call(props, data.event, data);
23
+ if (data.event.isDefaultPrevented()) {
24
+ return;
25
+ }
26
+ return updateOpenItems(data);
27
+ };
28
+ const requestNavigation = (data)=>{
29
+ var _props_onNavigation_unstable;
30
+ (_props_onNavigation_unstable = props.onNavigation_unstable) === null || _props_onNavigation_unstable === void 0 ? void 0 : _props_onNavigation_unstable.call(props, data.event, data);
31
+ if (data.event.isDefaultPrevented()) {
32
+ return;
33
+ }
34
+ navigate(data);
35
+ if (data.type === _tokens.treeDataTypes.ArrowDown || data.type === _tokens.treeDataTypes.ArrowUp) {
36
+ data.event.preventDefault();
37
+ }
38
+ };
39
+ const handleTreeItemClick = ({ event , value , itemType , type })=>{
40
+ _reactDom.unstable_batchedUpdates(()=>{
41
+ requestOpenChange({
42
+ event,
43
+ value,
44
+ open: itemType === 'branch' && !openItems.has(value),
45
+ type,
46
+ target: event.currentTarget
47
+ });
48
+ requestNavigation({
49
+ event,
50
+ value,
51
+ target: event.currentTarget,
52
+ type: _tokens.treeDataTypes.Click
53
+ });
54
+ });
55
+ };
56
+ const handleTreeItemKeyDown = ({ event , value , type , itemType })=>{
57
+ const open = openItems.has(value);
58
+ switch(type){
59
+ case _tokens.treeDataTypes.ArrowRight:
60
+ if (itemType === 'leaf') {
61
+ return;
62
+ }
63
+ if (!open) {
64
+ return requestOpenChange({
65
+ event,
66
+ value,
67
+ open: true,
68
+ type: _tokens.treeDataTypes.ArrowRight,
69
+ target: event.currentTarget
70
+ });
71
+ }
72
+ return requestNavigation({
73
+ event,
74
+ value,
75
+ type,
76
+ target: event.currentTarget
77
+ });
78
+ case _tokens.treeDataTypes.Enter:
79
+ return requestOpenChange({
80
+ event,
81
+ value,
82
+ open: itemType === 'branch' && !open,
83
+ type: _tokens.treeDataTypes.Enter,
84
+ target: event.currentTarget
85
+ });
86
+ case _tokens.treeDataTypes.ArrowLeft:
87
+ if (open && itemType === 'branch') {
88
+ return requestOpenChange({
89
+ event,
90
+ value,
91
+ open: false,
92
+ type: _tokens.treeDataTypes.ArrowLeft,
93
+ target: event.currentTarget
94
+ });
95
+ }
96
+ return requestNavigation({
97
+ event,
98
+ value,
99
+ target: event.currentTarget,
100
+ type: _tokens.treeDataTypes.ArrowLeft
101
+ });
102
+ case _tokens.treeDataTypes.End:
103
+ case _tokens.treeDataTypes.Home:
104
+ case _tokens.treeDataTypes.ArrowUp:
105
+ case _tokens.treeDataTypes.ArrowDown:
106
+ case _tokens.treeDataTypes.TypeAhead:
107
+ return requestNavigation({
108
+ event,
109
+ value,
110
+ type,
111
+ target: event.currentTarget
112
+ });
113
+ }
114
+ };
115
+ const requestTreeResponse = (0, _reactUtilities.useEventCallback)((request)=>{
116
+ switch(request.event.type){
117
+ case 'click':
118
+ // casting is required here as we're narrowing down the event to only click events
119
+ return handleTreeItemClick(request);
120
+ case 'keydown':
121
+ // casting is required here as we're narrowing down the event to only keyboard events
122
+ return handleTreeItemKeyDown(request);
123
+ }
124
+ });
125
+ return {
126
+ components: {
127
+ root: 'div'
128
+ },
129
+ open: true,
130
+ appearance,
131
+ size,
132
+ level: 1,
133
+ openItems,
134
+ requestTreeResponse,
135
+ root: (0, _reactUtilities.getNativeElementProps)('div', {
136
+ ref: (0, _reactUtilities.useMergedRefs)(navigationRef, ref),
137
+ role: 'tree',
138
+ ...props
139
+ })
140
+ };
141
+ }
142
+ function warnIfNoProperPropsRootTree(props) {
143
+ if (process.env.NODE_ENV === 'development') {
144
+ if (!props['aria-label'] && !props['aria-labelledby']) {
145
+ // eslint-disable-next-line no-console
146
+ console.warn('Tree must have either a `aria-label` or `aria-labelledby` property defined');
147
+ }
148
+ }
149
+ } //# sourceMappingURL=useRootTree.js.map
150
+
151
+ //# sourceMappingURL=useRootTree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../lib/components/Tree/useRootTree.js"],"sourcesContent":["import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { getNativeElementProps, useEventCallback, useMergedRefs } from '@fluentui/react-utilities';\nimport { useNestedTreeNavigation, useOpenItemsState } from '../../hooks';\nimport { treeDataTypes } from '../../utils/tokens';\n/**\n * Create the state required to render the root level Tree.\n *\n * @param props - props from this instance of Tree\n * @param ref - reference to root HTMLElement of Tree\n */\nexport function useRootTree(props, ref) {\n warnIfNoProperPropsRootTree(props);\n const {\n appearance = 'subtle',\n size = 'medium'\n } = props;\n const [openItems, updateOpenItems] = useOpenItemsState(props);\n const [navigate, navigationRef] = useNestedTreeNavigation();\n const requestOpenChange = data => {\n var _props_onOpenChange;\n (_props_onOpenChange = props.onOpenChange) === null || _props_onOpenChange === void 0 ? void 0 : _props_onOpenChange.call(props, data.event, data);\n if (data.event.isDefaultPrevented()) {\n return;\n }\n return updateOpenItems(data);\n };\n const requestNavigation = data => {\n var _props_onNavigation_unstable;\n (_props_onNavigation_unstable = props.onNavigation_unstable) === null || _props_onNavigation_unstable === void 0 ? void 0 : _props_onNavigation_unstable.call(props, data.event, data);\n if (data.event.isDefaultPrevented()) {\n return;\n }\n navigate(data);\n if (data.type === treeDataTypes.ArrowDown || data.type === treeDataTypes.ArrowUp) {\n data.event.preventDefault();\n }\n };\n const handleTreeItemClick = ({\n event,\n value,\n itemType,\n type\n }) => {\n ReactDOM.unstable_batchedUpdates(() => {\n requestOpenChange({\n event,\n value,\n open: itemType === 'branch' && !openItems.has(value),\n type,\n target: event.currentTarget\n });\n requestNavigation({\n event,\n value,\n target: event.currentTarget,\n type: treeDataTypes.Click\n });\n });\n };\n const handleTreeItemKeyDown = ({\n event,\n value,\n type,\n itemType\n }) => {\n const open = openItems.has(value);\n switch (type) {\n case treeDataTypes.ArrowRight:\n if (itemType === 'leaf') {\n return;\n }\n if (!open) {\n return requestOpenChange({\n event,\n value,\n open: true,\n type: treeDataTypes.ArrowRight,\n target: event.currentTarget\n });\n }\n return requestNavigation({\n event,\n value,\n type,\n target: event.currentTarget\n });\n case treeDataTypes.Enter:\n return requestOpenChange({\n event,\n value,\n open: itemType === 'branch' && !open,\n type: treeDataTypes.Enter,\n target: event.currentTarget\n });\n case treeDataTypes.ArrowLeft:\n if (open && itemType === 'branch') {\n return requestOpenChange({\n event,\n value,\n open: false,\n type: treeDataTypes.ArrowLeft,\n target: event.currentTarget\n });\n }\n return requestNavigation({\n event,\n value,\n target: event.currentTarget,\n type: treeDataTypes.ArrowLeft\n });\n case treeDataTypes.End:\n case treeDataTypes.Home:\n case treeDataTypes.ArrowUp:\n case treeDataTypes.ArrowDown:\n case treeDataTypes.TypeAhead:\n return requestNavigation({\n event,\n value,\n type,\n target: event.currentTarget\n });\n }\n };\n const requestTreeResponse = useEventCallback(request => {\n switch (request.event.type) {\n case 'click':\n // casting is required here as we're narrowing down the event to only click events\n return handleTreeItemClick(request);\n case 'keydown':\n // casting is required here as we're narrowing down the event to only keyboard events\n return handleTreeItemKeyDown(request);\n }\n });\n return {\n components: {\n root: 'div'\n },\n open: true,\n appearance,\n size,\n level: 1,\n openItems,\n requestTreeResponse,\n root: getNativeElementProps('div', {\n ref: useMergedRefs(navigationRef, ref),\n role: 'tree',\n ...props\n })\n };\n}\nfunction warnIfNoProperPropsRootTree(props) {\n if (process.env.NODE_ENV === 'development') {\n if (!props['aria-label'] && !props['aria-labelledby']) {\n // eslint-disable-next-line no-console\n console.warn('Tree must have either a `aria-label` or `aria-labelledby` property defined');\n }\n }\n}\n//# sourceMappingURL=useRootTree.js.map"],"names":["useRootTree","props","ref","warnIfNoProperPropsRootTree","appearance","size","openItems","updateOpenItems","useOpenItemsState","navigate","navigationRef","useNestedTreeNavigation","requestOpenChange","data","_props_onOpenChange","onOpenChange","call","event","isDefaultPrevented","requestNavigation","_props_onNavigation_unstable","onNavigation_unstable","type","treeDataTypes","ArrowDown","ArrowUp","preventDefault","handleTreeItemClick","value","itemType","ReactDOM","unstable_batchedUpdates","open","has","target","currentTarget","Click","handleTreeItemKeyDown","ArrowRight","Enter","ArrowLeft","End","Home","TypeAhead","requestTreeResponse","useEventCallback","request","components","root","level","getNativeElementProps","useMergedRefs","role","process","env","NODE_ENV","console","warn"],"mappings":";;;;+BAWgBA;;aAAAA;;;6DAXO;gEACG;gCAC6C;uBACZ;wBAC7B;AAOvB,SAASA,YAAYC,KAAK,EAAEC,GAAG,EAAE;IACtCC,4BAA4BF;IAC5B,MAAM,EACJG,YAAa,SAAQ,EACrBC,MAAO,SAAQ,EAChB,GAAGJ;IACJ,MAAM,CAACK,WAAWC,gBAAgB,GAAGC,IAAAA,wBAAiB,EAACP;IACvD,MAAM,CAACQ,UAAUC,cAAc,GAAGC,IAAAA,8BAAuB;IACzD,MAAMC,oBAAoBC,CAAAA,OAAQ;QAChC,IAAIC;QACHA,CAAAA,sBAAsBb,MAAMc,YAAY,AAAD,MAAO,IAAI,IAAID,wBAAwB,KAAK,IAAI,KAAK,IAAIA,oBAAoBE,IAAI,CAACf,OAAOY,KAAKI,KAAK,EAAEJ,KAAK;QAClJ,IAAIA,KAAKI,KAAK,CAACC,kBAAkB,IAAI;YACnC;QACF,CAAC;QACD,OAAOX,gBAAgBM;IACzB;IACA,MAAMM,oBAAoBN,CAAAA,OAAQ;QAChC,IAAIO;QACHA,CAAAA,+BAA+BnB,MAAMoB,qBAAqB,AAAD,MAAO,IAAI,IAAID,iCAAiC,KAAK,IAAI,KAAK,IAAIA,6BAA6BJ,IAAI,CAACf,OAAOY,KAAKI,KAAK,EAAEJ,KAAK;QACtL,IAAIA,KAAKI,KAAK,CAACC,kBAAkB,IAAI;YACnC;QACF,CAAC;QACDT,SAASI;QACT,IAAIA,KAAKS,IAAI,KAAKC,qBAAa,CAACC,SAAS,IAAIX,KAAKS,IAAI,KAAKC,qBAAa,CAACE,OAAO,EAAE;YAChFZ,KAAKI,KAAK,CAACS,cAAc;QAC3B,CAAC;IACH;IACA,MAAMC,sBAAsB,CAAC,EAC3BV,MAAK,EACLW,MAAK,EACLC,SAAQ,EACRP,KAAI,EACL,GAAK;QACJQ,UAASC,uBAAuB,CAAC,IAAM;YACrCnB,kBAAkB;gBAChBK;gBACAW;gBACAI,MAAMH,aAAa,YAAY,CAACvB,UAAU2B,GAAG,CAACL;gBAC9CN;gBACAY,QAAQjB,MAAMkB,aAAa;YAC7B;YACAhB,kBAAkB;gBAChBF;gBACAW;gBACAM,QAAQjB,MAAMkB,aAAa;gBAC3Bb,MAAMC,qBAAa,CAACa,KAAK;YAC3B;QACF;IACF;IACA,MAAMC,wBAAwB,CAAC,EAC7BpB,MAAK,EACLW,MAAK,EACLN,KAAI,EACJO,SAAQ,EACT,GAAK;QACJ,MAAMG,OAAO1B,UAAU2B,GAAG,CAACL;QAC3B,OAAQN;YACN,KAAKC,qBAAa,CAACe,UAAU;gBAC3B,IAAIT,aAAa,QAAQ;oBACvB;gBACF,CAAC;gBACD,IAAI,CAACG,MAAM;oBACT,OAAOpB,kBAAkB;wBACvBK;wBACAW;wBACAI,MAAM,IAAI;wBACVV,MAAMC,qBAAa,CAACe,UAAU;wBAC9BJ,QAAQjB,MAAMkB,aAAa;oBAC7B;gBACF,CAAC;gBACD,OAAOhB,kBAAkB;oBACvBF;oBACAW;oBACAN;oBACAY,QAAQjB,MAAMkB,aAAa;gBAC7B;YACF,KAAKZ,qBAAa,CAACgB,KAAK;gBACtB,OAAO3B,kBAAkB;oBACvBK;oBACAW;oBACAI,MAAMH,aAAa,YAAY,CAACG;oBAChCV,MAAMC,qBAAa,CAACgB,KAAK;oBACzBL,QAAQjB,MAAMkB,aAAa;gBAC7B;YACF,KAAKZ,qBAAa,CAACiB,SAAS;gBAC1B,IAAIR,QAAQH,aAAa,UAAU;oBACjC,OAAOjB,kBAAkB;wBACvBK;wBACAW;wBACAI,MAAM,KAAK;wBACXV,MAAMC,qBAAa,CAACiB,SAAS;wBAC7BN,QAAQjB,MAAMkB,aAAa;oBAC7B;gBACF,CAAC;gBACD,OAAOhB,kBAAkB;oBACvBF;oBACAW;oBACAM,QAAQjB,MAAMkB,aAAa;oBAC3Bb,MAAMC,qBAAa,CAACiB,SAAS;gBAC/B;YACF,KAAKjB,qBAAa,CAACkB,GAAG;YACtB,KAAKlB,qBAAa,CAACmB,IAAI;YACvB,KAAKnB,qBAAa,CAACE,OAAO;YAC1B,KAAKF,qBAAa,CAACC,SAAS;YAC5B,KAAKD,qBAAa,CAACoB,SAAS;gBAC1B,OAAOxB,kBAAkB;oBACvBF;oBACAW;oBACAN;oBACAY,QAAQjB,MAAMkB,aAAa;gBAC7B;QACJ;IACF;IACA,MAAMS,sBAAsBC,IAAAA,gCAAgB,EAACC,CAAAA,UAAW;QACtD,OAAQA,QAAQ7B,KAAK,CAACK,IAAI;YACxB,KAAK;gBACH,kFAAkF;gBAClF,OAAOK,oBAAoBmB;YAC7B,KAAK;gBACH,qFAAqF;gBACrF,OAAOT,sBAAsBS;QACjC;IACF;IACA,OAAO;QACLC,YAAY;YACVC,MAAM;QACR;QACAhB,MAAM,IAAI;QACV5B;QACAC;QACA4C,OAAO;QACP3C;QACAsC;QACAI,MAAME,IAAAA,qCAAqB,EAAC,OAAO;YACjChD,KAAKiD,IAAAA,6BAAa,EAACzC,eAAeR;YAClCkD,MAAM;YACN,GAAGnD,KAAK;QACV;IACF;AACF;AACA,SAASE,4BAA4BF,KAAK,EAAE;IAC1C,IAAIoD,QAAQC,GAAG,CAACC,QAAQ,KAAK,eAAe;QAC1C,IAAI,CAACtD,KAAK,CAAC,aAAa,IAAI,CAACA,KAAK,CAAC,kBAAkB,EAAE;YACrD,sCAAsC;YACtCuD,QAAQC,IAAI,CAAC;QACf,CAAC;IACH,CAAC;AACH,EACA,uCAAuC"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "useSubtree", {
6
+ enumerable: true,
7
+ get: ()=>useSubtree
8
+ });
9
+ const _interopRequireWildcard = require("@swc/helpers/lib/_interop_require_wildcard.js").default;
10
+ const _react = /*#__PURE__*/ _interopRequireWildcard(require("react"));
11
+ const _reactUtilities = require("@fluentui/react-utilities");
12
+ const _contexts = require("../../contexts");
13
+ function useSubtree(props, ref) {
14
+ const contextAppearance = (0, _contexts.useTreeContext_unstable)((ctx)=>ctx.appearance);
15
+ const contextSize = (0, _contexts.useTreeContext_unstable)((ctx)=>ctx.size);
16
+ const subtreeRef = (0, _contexts.useTreeItemContext_unstable)((ctx)=>ctx.subtreeRef);
17
+ const value = (0, _contexts.useTreeItemContext_unstable)((ctx)=>ctx.value);
18
+ const { appearance =contextAppearance !== null && contextAppearance !== void 0 ? contextAppearance : 'subtle' , size =contextSize !== null && contextSize !== void 0 ? contextSize : 'medium' } = props;
19
+ const parentLevel = (0, _contexts.useTreeContext_unstable)((ctx)=>ctx.level);
20
+ const openItems = (0, _contexts.useTreeContext_unstable)((ctx)=>ctx.openItems);
21
+ const requestTreeResponse = (0, _contexts.useTreeContext_unstable)((ctx)=>ctx.requestTreeResponse);
22
+ const open = openItems.has(value);
23
+ return {
24
+ open,
25
+ components: {
26
+ root: 'div'
27
+ },
28
+ appearance,
29
+ size,
30
+ level: parentLevel + 1,
31
+ root: (0, _reactUtilities.getNativeElementProps)('div', {
32
+ ref: (0, _reactUtilities.useMergedRefs)(ref, subtreeRef),
33
+ role: 'group',
34
+ ...props
35
+ }),
36
+ openItems,
37
+ requestTreeResponse
38
+ };
39
+ } //# sourceMappingURL=useSubtree.js.map
40
+
41
+ //# sourceMappingURL=useSubtree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../lib/components/Tree/useSubtree.js"],"sourcesContent":["import * as React from 'react';\nimport { getNativeElementProps, useMergedRefs } from '@fluentui/react-utilities';\nimport { useTreeContext_unstable, useTreeItemContext_unstable } from '../../contexts';\n/**\n * Create the state required to render a sub-level Tree.\n *\n * @param props - props from this instance of Tree\n * @param ref - reference to root HTMLElement of Tree\n */\nexport function useSubtree(props, ref) {\n const contextAppearance = useTreeContext_unstable(ctx => ctx.appearance);\n const contextSize = useTreeContext_unstable(ctx => ctx.size);\n const subtreeRef = useTreeItemContext_unstable(ctx => ctx.subtreeRef);\n const value = useTreeItemContext_unstable(ctx => ctx.value);\n const {\n appearance = contextAppearance !== null && contextAppearance !== void 0 ? contextAppearance : 'subtle',\n size = contextSize !== null && contextSize !== void 0 ? contextSize : 'medium'\n } = props;\n const parentLevel = useTreeContext_unstable(ctx => ctx.level);\n const openItems = useTreeContext_unstable(ctx => ctx.openItems);\n const requestTreeResponse = useTreeContext_unstable(ctx => ctx.requestTreeResponse);\n const open = openItems.has(value);\n return {\n open,\n components: {\n root: 'div'\n },\n appearance,\n size,\n level: parentLevel + 1,\n root: getNativeElementProps('div', {\n ref: useMergedRefs(ref, subtreeRef),\n role: 'group',\n ...props\n }),\n openItems,\n requestTreeResponse\n };\n}\n//# sourceMappingURL=useSubtree.js.map"],"names":["useSubtree","props","ref","contextAppearance","useTreeContext_unstable","ctx","appearance","contextSize","size","subtreeRef","useTreeItemContext_unstable","value","parentLevel","level","openItems","requestTreeResponse","open","has","components","root","getNativeElementProps","useMergedRefs","role"],"mappings":";;;;+BASgBA;;aAAAA;;;6DATO;gCAC8B;0BACgB;AAO9D,SAASA,WAAWC,KAAK,EAAEC,GAAG,EAAE;IACrC,MAAMC,oBAAoBC,IAAAA,iCAAuB,EAACC,CAAAA,MAAOA,IAAIC,UAAU;IACvE,MAAMC,cAAcH,IAAAA,iCAAuB,EAACC,CAAAA,MAAOA,IAAIG,IAAI;IAC3D,MAAMC,aAAaC,IAAAA,qCAA2B,EAACL,CAAAA,MAAOA,IAAII,UAAU;IACpE,MAAME,QAAQD,IAAAA,qCAA2B,EAACL,CAAAA,MAAOA,IAAIM,KAAK;IAC1D,MAAM,EACJL,YAAaH,sBAAsB,IAAI,IAAIA,sBAAsB,KAAK,IAAIA,oBAAoB,QAAQ,CAAA,EACtGK,MAAOD,gBAAgB,IAAI,IAAIA,gBAAgB,KAAK,IAAIA,cAAc,QAAQ,CAAA,EAC/E,GAAGN;IACJ,MAAMW,cAAcR,IAAAA,iCAAuB,EAACC,CAAAA,MAAOA,IAAIQ,KAAK;IAC5D,MAAMC,YAAYV,IAAAA,iCAAuB,EAACC,CAAAA,MAAOA,IAAIS,SAAS;IAC9D,MAAMC,sBAAsBX,IAAAA,iCAAuB,EAACC,CAAAA,MAAOA,IAAIU,mBAAmB;IAClF,MAAMC,OAAOF,UAAUG,GAAG,CAACN;IAC3B,OAAO;QACLK;QACAE,YAAY;YACVC,MAAM;QACR;QACAb;QACAE;QACAK,OAAOD,cAAc;QACrBO,MAAMC,IAAAA,qCAAqB,EAAC,OAAO;YACjClB,KAAKmB,IAAAA,6BAAa,EAACnB,KAAKO;YACxBa,MAAM;YACN,GAAGrB,KAAK;QACV;QACAa;QACAC;IACF;AACF,EACA,sCAAsC"}
@@ -8,100 +8,15 @@ Object.defineProperty(exports, "useTree_unstable", {
8
8
  });
9
9
  const _interopRequireWildcard = require("@swc/helpers/lib/_interop_require_wildcard.js").default;
10
10
  const _react = /*#__PURE__*/ _interopRequireWildcard(require("react"));
11
- const _reactUtilities = require("@fluentui/react-utilities");
12
11
  const _contexts = require("../../contexts");
13
- const _hooks = require("../../hooks");
14
- const _tokens = require("../../utils/tokens");
12
+ const _useSubtree = require("./useSubtree");
13
+ const _useRootTree = require("./useRootTree");
15
14
  const useTree_unstable = (props, ref)=>{
16
15
  const isSubtree = (0, _contexts.useTreeContext_unstable)((ctx)=>ctx.level > 0);
17
16
  // as isSubtree is static, this doesn't break rule of hooks
18
17
  // and if this becomes an issue later on, this can be easily converted
19
18
  // eslint-disable-next-line react-hooks/rules-of-hooks
20
- return isSubtree ? useSubtree(props, ref) : useRootTree(props, ref);
21
- };
22
- /**
23
- * Create the state required to render a sub-level Tree.
24
- *
25
- * @param props - props from this instance of Tree
26
- * @param ref - reference to root HTMLElement of Tree
27
- */ function useSubtree(props, ref) {
28
- const contextAppearance = (0, _contexts.useTreeContext_unstable)((ctx)=>ctx.appearance);
29
- const contextSize = (0, _contexts.useTreeContext_unstable)((ctx)=>ctx.size);
30
- const { appearance =contextAppearance !== null && contextAppearance !== void 0 ? contextAppearance : 'subtle' , size =contextSize !== null && contextSize !== void 0 ? contextSize : 'medium' } = props;
31
- const parentLevel = (0, _contexts.useTreeContext_unstable)((ctx)=>ctx.level);
32
- const openItems = (0, _contexts.useTreeContext_unstable)((ctx)=>ctx.openItems);
33
- const requestOpenChange = (0, _contexts.useTreeContext_unstable)((ctx)=>ctx.requestOpenChange);
34
- const requestNavigation = (0, _contexts.useTreeContext_unstable)((ctx)=>ctx.requestNavigation);
35
- return {
36
- components: {
37
- root: 'div'
38
- },
39
- appearance,
40
- size,
41
- level: parentLevel + 1,
42
- root: (0, _reactUtilities.getNativeElementProps)('div', {
43
- ref,
44
- role: 'group',
45
- ...props
46
- }),
47
- openItems,
48
- requestOpenChange,
49
- requestNavigation
50
- };
51
- }
52
- /**
53
- * Create the state required to render the root level Tree.
54
- *
55
- * @param props - props from this instance of Tree
56
- * @param ref - reference to root HTMLElement of Tree
57
- */ function useRootTree(props, ref) {
58
- warnIfNoProperPropsRootTree(props);
59
- const { appearance ='subtle' , size ='medium' } = props;
60
- const [openItems, updateOpenItems] = (0, _hooks.useOpenItemsState)(props);
61
- const [navigate, navigationRef] = (0, _hooks.useNestedTreeNavigation)();
62
- const requestOpenChange = (0, _reactUtilities.useEventCallback)((data)=>{
63
- var _props_onOpenChange;
64
- (_props_onOpenChange = props.onOpenChange) === null || _props_onOpenChange === void 0 ? void 0 : _props_onOpenChange.call(props, data.event, data);
65
- if (data.event.isDefaultPrevented()) {
66
- return;
67
- }
68
- return updateOpenItems(data);
69
- });
70
- const requestNavigation = (0, _reactUtilities.useEventCallback)((data)=>{
71
- var _props_onNavigation_unstable;
72
- (_props_onNavigation_unstable = props.onNavigation_unstable) === null || _props_onNavigation_unstable === void 0 ? void 0 : _props_onNavigation_unstable.call(props, data.event, data);
73
- if (data.event.isDefaultPrevented()) {
74
- return;
75
- }
76
- navigate(data);
77
- if (data.type === _tokens.treeDataTypes.arrowDown || data.type === _tokens.treeDataTypes.arrowUp) {
78
- data.event.preventDefault();
79
- }
80
- });
81
- return {
82
- components: {
83
- root: 'div'
84
- },
85
- appearance,
86
- size,
87
- level: 1,
88
- openItems,
89
- requestOpenChange,
90
- requestNavigation,
91
- root: (0, _reactUtilities.getNativeElementProps)('div', {
92
- ref: (0, _reactUtilities.useMergedRefs)(navigationRef, ref),
93
- role: 'tree',
94
- ...props
95
- })
96
- };
97
- }
98
- function warnIfNoProperPropsRootTree(props) {
99
- if (process.env.NODE_ENV === 'development') {
100
- if (!props['aria-label'] && !props['aria-labelledby']) {
101
- // eslint-disable-next-line no-console
102
- console.warn('Tree must have either a `aria-label` or `aria-labelledby` property defined');
103
- }
104
- }
105
- } //# sourceMappingURL=useTree.js.map
19
+ return isSubtree ? (0, _useSubtree.useSubtree)(props, ref) : (0, _useRootTree.useRootTree)(props, ref);
20
+ }; //# sourceMappingURL=useTree.js.map
106
21
 
107
22
  //# sourceMappingURL=useTree.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../lib/components/Tree/useTree.js"],"sourcesContent":["import * as React from 'react';\nimport { getNativeElementProps, useEventCallback, useMergedRefs } from '@fluentui/react-utilities';\nimport { useTreeContext_unstable } from '../../contexts';\nimport { useNestedTreeNavigation, useOpenItemsState } from '../../hooks';\nimport { treeDataTypes } from '../../utils/tokens';\n/**\n * Create the state required to render Tree.\n *\n * The returned state can be modified with hooks such as useTreeStyles_unstable,\n * before being passed to renderTree_unstable.\n *\n * @param props - props from this instance of Tree\n * @param ref - reference to root HTMLElement of Tree\n */\nexport const useTree_unstable = (props, ref) => {\n const isSubtree = useTreeContext_unstable(ctx => ctx.level > 0);\n // as isSubtree is static, this doesn't break rule of hooks\n // and if this becomes an issue later on, this can be easily converted\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return isSubtree ? useSubtree(props, ref) : useRootTree(props, ref);\n};\n/**\n * Create the state required to render a sub-level Tree.\n *\n * @param props - props from this instance of Tree\n * @param ref - reference to root HTMLElement of Tree\n */\nfunction useSubtree(props, ref) {\n const contextAppearance = useTreeContext_unstable(ctx => ctx.appearance);\n const contextSize = useTreeContext_unstable(ctx => ctx.size);\n const {\n appearance = contextAppearance !== null && contextAppearance !== void 0 ? contextAppearance : 'subtle',\n size = contextSize !== null && contextSize !== void 0 ? contextSize : 'medium'\n } = props;\n const parentLevel = useTreeContext_unstable(ctx => ctx.level);\n const openItems = useTreeContext_unstable(ctx => ctx.openItems);\n const requestOpenChange = useTreeContext_unstable(ctx => ctx.requestOpenChange);\n const requestNavigation = useTreeContext_unstable(ctx => ctx.requestNavigation);\n return {\n components: {\n root: 'div'\n },\n appearance,\n size,\n level: parentLevel + 1,\n root: getNativeElementProps('div', {\n ref,\n role: 'group',\n ...props\n }),\n openItems,\n requestOpenChange,\n requestNavigation\n };\n}\n/**\n * Create the state required to render the root level Tree.\n *\n * @param props - props from this instance of Tree\n * @param ref - reference to root HTMLElement of Tree\n */\nfunction useRootTree(props, ref) {\n warnIfNoProperPropsRootTree(props);\n const {\n appearance = 'subtle',\n size = 'medium'\n } = props;\n const [openItems, updateOpenItems] = useOpenItemsState(props);\n const [navigate, navigationRef] = useNestedTreeNavigation();\n const requestOpenChange = useEventCallback(data => {\n var _props_onOpenChange;\n (_props_onOpenChange = props.onOpenChange) === null || _props_onOpenChange === void 0 ? void 0 : _props_onOpenChange.call(props, data.event, data);\n if (data.event.isDefaultPrevented()) {\n return;\n }\n return updateOpenItems(data);\n });\n const requestNavigation = useEventCallback(data => {\n var _props_onNavigation_unstable;\n (_props_onNavigation_unstable = props.onNavigation_unstable) === null || _props_onNavigation_unstable === void 0 ? void 0 : _props_onNavigation_unstable.call(props, data.event, data);\n if (data.event.isDefaultPrevented()) {\n return;\n }\n navigate(data);\n if (data.type === treeDataTypes.arrowDown || data.type === treeDataTypes.arrowUp) {\n data.event.preventDefault();\n }\n });\n return {\n components: {\n root: 'div'\n },\n appearance,\n size,\n level: 1,\n openItems,\n requestOpenChange,\n requestNavigation,\n root: getNativeElementProps('div', {\n ref: useMergedRefs(navigationRef, ref),\n role: 'tree',\n ...props\n })\n };\n}\nfunction warnIfNoProperPropsRootTree(props) {\n if (process.env.NODE_ENV === 'development') {\n if (!props['aria-label'] && !props['aria-labelledby']) {\n // eslint-disable-next-line no-console\n console.warn('Tree must have either a `aria-label` or `aria-labelledby` property defined');\n }\n }\n}\n//# sourceMappingURL=useTree.js.map"],"names":["useTree_unstable","props","ref","isSubtree","useTreeContext_unstable","ctx","level","useSubtree","useRootTree","contextAppearance","appearance","contextSize","size","parentLevel","openItems","requestOpenChange","requestNavigation","components","root","getNativeElementProps","role","warnIfNoProperPropsRootTree","updateOpenItems","useOpenItemsState","navigate","navigationRef","useNestedTreeNavigation","useEventCallback","data","_props_onOpenChange","onOpenChange","call","event","isDefaultPrevented","_props_onNavigation_unstable","onNavigation_unstable","type","treeDataTypes","arrowDown","arrowUp","preventDefault","useMergedRefs","process","env","NODE_ENV","console","warn"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../lib/components/Tree/useTree.js"],"sourcesContent":["import * as React from 'react';\nimport { useTreeContext_unstable } from '../../contexts';\nimport { useSubtree } from './useSubtree';\nimport { useRootTree } from './useRootTree';\n/**\n * Create the state required to render Tree.\n *\n * The returned state can be modified with hooks such as useTreeStyles_unstable,\n * before being passed to renderTree_unstable.\n *\n * @param props - props from this instance of Tree\n * @param ref - reference to root HTMLElement of Tree\n */\nexport const useTree_unstable = (props, ref) => {\n const isSubtree = useTreeContext_unstable(ctx => ctx.level > 0);\n // as isSubtree is static, this doesn't break rule of hooks\n // and if this becomes an issue later on, this can be easily converted\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return isSubtree ? useSubtree(props, ref) : useRootTree(props, ref);\n};\n//# sourceMappingURL=useTree.js.map"],"names":["useTree_unstable","props","ref","isSubtree","useTreeContext_unstable","ctx","level","useSubtree","useRootTree"],"mappings":";;;;+BAaaA;;aAAAA;;;6DAbU;0BACiB;4BACb;6BACC;AAUrB,MAAMA,mBAAmB,CAACC,OAAOC,MAAQ;IAC9C,MAAMC,YAAYC,IAAAA,iCAAuB,EAACC,CAAAA,MAAOA,IAAIC,KAAK,GAAG;IAC7D,2DAA2D;IAC3D,sEAAsE;IACtE,sDAAsD;IACtD,OAAOH,YAAYI,IAAAA,sBAAU,EAACN,OAAOC,OAAOM,IAAAA,wBAAW,EAACP,OAAOC,IAAI;AACrE,GACA,mCAAmC"}