@mui/x-tree-view 7.22.1 → 8.0.0-alpha.1

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 (296) hide show
  1. package/CHANGELOG.md +486 -11
  2. package/README.md +4 -4
  3. package/RichTreeView/RichTreeView.js +22 -5
  4. package/RichTreeView/RichTreeView.types.d.ts +4 -17
  5. package/SimpleTreeView/SimpleTreeView.js +21 -3
  6. package/TreeItem/TreeItem.d.ts +20 -2
  7. package/TreeItem/TreeItem.js +241 -371
  8. package/TreeItem/TreeItem.types.d.ts +52 -85
  9. package/TreeItem/index.d.ts +1 -4
  10. package/TreeItem/index.js +2 -4
  11. package/TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.d.ts +7 -0
  12. package/{modern/TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.js → TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.js} +8 -6
  13. package/{TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.types.d.ts → TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.types.d.ts} +1 -1
  14. package/TreeItemDragAndDropOverlay/index.d.ts +2 -0
  15. package/TreeItemDragAndDropOverlay/index.js +1 -0
  16. package/{TreeItem2LabelInput → TreeItemDragAndDropOverlay}/package.json +1 -1
  17. package/TreeItemIcon/TreeItemIcon.d.ts +7 -0
  18. package/{TreeItem2Icon/TreeItem2Icon.js → TreeItemIcon/TreeItemIcon.js} +5 -3
  19. package/{TreeItem2Icon/TreeItem2Icon.types.d.ts → TreeItemIcon/TreeItemIcon.types.d.ts} +7 -7
  20. package/TreeItemIcon/index.d.ts +2 -0
  21. package/TreeItemIcon/index.js +1 -0
  22. package/{useTreeItem2 → TreeItemIcon}/package.json +1 -1
  23. package/TreeItemLabelInput/TreeItemLabelInput.d.ts +5 -0
  24. package/{TreeItem2LabelInput/TreeItem2LabelInput.js → TreeItemLabelInput/TreeItemLabelInput.js} +3 -3
  25. package/{TreeItem2LabelInput/TreeItem2LabelInput.types.d.ts → TreeItemLabelInput/TreeItemLabelInput.types.d.ts} +1 -1
  26. package/TreeItemLabelInput/index.d.ts +2 -0
  27. package/TreeItemLabelInput/index.js +1 -0
  28. package/{TreeItem2Provider → TreeItemLabelInput}/package.json +1 -1
  29. package/TreeItemProvider/TreeItemProvider.d.ts +9 -0
  30. package/TreeItemProvider/TreeItemProvider.js +43 -0
  31. package/{TreeItem2Provider/TreeItem2Provider.types.d.ts → TreeItemProvider/TreeItemProvider.types.d.ts} +2 -1
  32. package/TreeItemProvider/index.d.ts +2 -0
  33. package/TreeItemProvider/index.js +1 -0
  34. package/{TreeItem2Icon → TreeItemProvider}/package.json +1 -1
  35. package/hooks/index.d.ts +2 -1
  36. package/hooks/index.js +2 -1
  37. package/hooks/useTreeItemModel.d.ts +2 -0
  38. package/hooks/useTreeItemModel.js +11 -0
  39. package/hooks/useTreeItemUtils/index.d.ts +1 -0
  40. package/hooks/useTreeItemUtils/index.js +1 -0
  41. package/hooks/{useTreeItem2Utils/useTreeItem2Utils.d.ts → useTreeItemUtils/useTreeItemUtils.d.ts} +13 -12
  42. package/{modern/hooks/useTreeItem2Utils/useTreeItem2Utils.js → hooks/useTreeItemUtils/useTreeItemUtils.js} +36 -18
  43. package/index.d.ts +5 -7
  44. package/index.js +6 -8
  45. package/internals/TreeViewItemDepthContext/TreeViewItemDepthContext.d.ts +3 -1
  46. package/internals/TreeViewProvider/TreeViewChildrenItemProvider.d.ts +2 -1
  47. package/internals/TreeViewProvider/TreeViewChildrenItemProvider.js +6 -22
  48. package/internals/TreeViewProvider/TreeViewProvider.js +1 -2
  49. package/internals/TreeViewProvider/TreeViewProvider.types.d.ts +5 -2
  50. package/internals/components/RichTreeViewItems.d.ts +3 -6
  51. package/internals/components/RichTreeViewItems.js +42 -30
  52. package/internals/corePlugins/useTreeViewId/useTreeViewId.js +10 -11
  53. package/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.d.ts +36 -0
  54. package/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.js +9 -0
  55. package/internals/corePlugins/useTreeViewId/useTreeViewId.types.d.ts +1 -5
  56. package/internals/hooks/useSelector.d.ts +4 -0
  57. package/internals/hooks/useSelector.js +6 -0
  58. package/internals/index.d.ts +6 -1
  59. package/internals/index.js +5 -1
  60. package/internals/models/helpers.d.ts +0 -2
  61. package/internals/models/itemPlugin.d.ts +13 -10
  62. package/internals/models/plugin.d.ts +20 -8
  63. package/internals/models/treeView.d.ts +6 -0
  64. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +36 -24
  65. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.d.ts +124 -0
  66. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.js +17 -0
  67. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +8 -15
  68. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.utils.d.ts +1 -0
  69. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.utils.js +7 -0
  70. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +62 -40
  71. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.d.ts +182 -0
  72. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.js +34 -0
  73. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.d.ts +4 -16
  74. package/internals/plugins/useTreeViewIcons/useTreeViewIcons.js +15 -13
  75. package/internals/plugins/useTreeViewItems/index.d.ts +1 -1
  76. package/internals/plugins/useTreeViewItems/useTreeViewItems.js +58 -100
  77. package/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.d.ts +718 -0
  78. package/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +103 -0
  79. package/internals/plugins/useTreeViewItems/useTreeViewItems.types.d.ts +16 -55
  80. package/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +29 -26
  81. package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +27 -18
  82. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.itemPlugin.d.ts +1 -1
  83. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.itemPlugin.js +13 -5
  84. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +19 -30
  85. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.d.ts +74 -0
  86. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.js +26 -0
  87. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.types.d.ts +13 -29
  88. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.d.ts +2 -0
  89. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +88 -0
  90. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +79 -43
  91. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.d.ts +32 -0
  92. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.js +9 -0
  93. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +39 -9
  94. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.d.ts +20 -1
  95. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +105 -0
  96. package/internals/useTreeView/useTreeView.js +30 -17
  97. package/internals/useTreeView/useTreeView.types.d.ts +1 -2
  98. package/internals/useTreeView/useTreeViewBuildContext.d.ts +3 -1
  99. package/internals/useTreeView/useTreeViewBuildContext.js +24 -18
  100. package/internals/utils/TreeViewStore.d.ts +12 -0
  101. package/internals/utils/TreeViewStore.js +24 -0
  102. package/internals/utils/selectors.d.ts +9 -0
  103. package/internals/utils/selectors.js +37 -0
  104. package/internals/utils/tree.d.ts +8 -8
  105. package/internals/utils/tree.js +51 -43
  106. package/models/items.d.ts +7 -2
  107. package/modern/RichTreeView/RichTreeView.js +22 -5
  108. package/modern/SimpleTreeView/SimpleTreeView.js +21 -3
  109. package/modern/TreeItem/TreeItem.js +241 -371
  110. package/modern/TreeItem/index.js +2 -4
  111. package/{TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.js → modern/TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.js} +8 -6
  112. package/modern/TreeItemDragAndDropOverlay/index.js +1 -0
  113. package/modern/{TreeItem2Icon/TreeItem2Icon.js → TreeItemIcon/TreeItemIcon.js} +5 -3
  114. package/modern/TreeItemIcon/index.js +1 -0
  115. package/modern/{TreeItem2LabelInput/TreeItem2LabelInput.js → TreeItemLabelInput/TreeItemLabelInput.js} +3 -3
  116. package/modern/TreeItemLabelInput/index.js +1 -0
  117. package/modern/TreeItemProvider/TreeItemProvider.js +43 -0
  118. package/modern/TreeItemProvider/index.js +1 -0
  119. package/modern/hooks/index.js +2 -1
  120. package/modern/hooks/useTreeItemModel.js +11 -0
  121. package/modern/hooks/useTreeItemUtils/index.js +1 -0
  122. package/{hooks/useTreeItem2Utils/useTreeItem2Utils.js → modern/hooks/useTreeItemUtils/useTreeItemUtils.js} +36 -18
  123. package/modern/index.js +6 -8
  124. package/modern/internals/TreeViewProvider/TreeViewChildrenItemProvider.js +6 -22
  125. package/modern/internals/TreeViewProvider/TreeViewProvider.js +1 -2
  126. package/modern/internals/components/RichTreeViewItems.js +42 -30
  127. package/modern/internals/corePlugins/useTreeViewId/useTreeViewId.js +10 -11
  128. package/modern/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.js +9 -0
  129. package/modern/internals/hooks/useSelector.js +6 -0
  130. package/modern/internals/index.js +5 -1
  131. package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +36 -24
  132. package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.js +17 -0
  133. package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.utils.js +7 -0
  134. package/modern/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +62 -40
  135. package/modern/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.js +34 -0
  136. package/modern/internals/plugins/useTreeViewIcons/useTreeViewIcons.js +15 -13
  137. package/modern/internals/plugins/useTreeViewItems/useTreeViewItems.js +58 -100
  138. package/modern/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +103 -0
  139. package/modern/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +29 -26
  140. package/modern/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +27 -18
  141. package/modern/internals/plugins/useTreeViewLabel/useTreeViewLabel.itemPlugin.js +13 -5
  142. package/modern/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +19 -30
  143. package/modern/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.js +26 -0
  144. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +88 -0
  145. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +79 -43
  146. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.js +9 -0
  147. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +105 -0
  148. package/modern/internals/useTreeView/useTreeView.js +30 -17
  149. package/modern/internals/useTreeView/useTreeViewBuildContext.js +24 -18
  150. package/modern/internals/utils/TreeViewStore.js +24 -0
  151. package/modern/internals/utils/selectors.js +37 -0
  152. package/modern/internals/utils/tree.js +51 -43
  153. package/modern/useTreeItem/index.js +1 -0
  154. package/modern/{useTreeItem2/useTreeItem2.js → useTreeItem/useTreeItem.js} +45 -51
  155. package/node/RichTreeView/RichTreeView.js +22 -5
  156. package/node/SimpleTreeView/SimpleTreeView.js +21 -3
  157. package/node/TreeItem/TreeItem.js +242 -372
  158. package/node/TreeItem/index.js +38 -16
  159. package/node/{TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.js → TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.js} +7 -6
  160. package/node/TreeItemDragAndDropOverlay/index.js +12 -0
  161. package/node/{TreeItem2Icon/TreeItem2Icon.js → TreeItemIcon/TreeItemIcon.js} +4 -3
  162. package/node/TreeItemIcon/index.js +12 -0
  163. package/node/{TreeItem2LabelInput/TreeItem2LabelInput.js → TreeItemLabelInput/TreeItemLabelInput.js} +3 -3
  164. package/node/TreeItemLabelInput/index.js +12 -0
  165. package/node/{TreeItem2Provider/TreeItem2Provider.js → TreeItemProvider/TreeItemProvider.js} +22 -6
  166. package/node/TreeItemProvider/index.js +12 -0
  167. package/node/hooks/index.js +10 -3
  168. package/node/hooks/useTreeItemModel.js +17 -0
  169. package/node/hooks/useTreeItemUtils/index.js +12 -0
  170. package/node/hooks/{useTreeItem2Utils/useTreeItem2Utils.js → useTreeItemUtils/useTreeItemUtils.js} +37 -19
  171. package/node/index.js +18 -42
  172. package/node/internals/TreeViewProvider/TreeViewChildrenItemProvider.js +6 -22
  173. package/node/internals/TreeViewProvider/TreeViewProvider.js +1 -2
  174. package/node/internals/components/RichTreeViewItems.js +42 -30
  175. package/node/internals/corePlugins/useTreeViewId/useTreeViewId.js +12 -13
  176. package/node/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.js +15 -0
  177. package/node/internals/hooks/useSelector.js +13 -0
  178. package/node/internals/index.js +47 -1
  179. package/node/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +36 -24
  180. package/node/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.js +23 -0
  181. package/node/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.utils.js +14 -0
  182. package/node/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +62 -40
  183. package/node/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.js +40 -0
  184. package/node/internals/plugins/useTreeViewIcons/useTreeViewIcons.js +16 -13
  185. package/node/internals/plugins/useTreeViewItems/useTreeViewItems.js +60 -102
  186. package/node/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +109 -0
  187. package/node/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +30 -27
  188. package/node/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +27 -18
  189. package/node/internals/plugins/useTreeViewLabel/useTreeViewLabel.itemPlugin.js +13 -5
  190. package/node/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +19 -30
  191. package/node/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.js +32 -0
  192. package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +96 -0
  193. package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +78 -42
  194. package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.js +15 -0
  195. package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +109 -2
  196. package/node/internals/useTreeView/useTreeView.js +30 -17
  197. package/node/internals/useTreeView/useTreeViewBuildContext.js +25 -18
  198. package/node/internals/utils/TreeViewStore.js +31 -0
  199. package/node/internals/utils/selectors.js +44 -0
  200. package/node/internals/utils/tree.js +51 -43
  201. package/node/useTreeItem/index.js +12 -0
  202. package/node/{useTreeItem2/useTreeItem2.js → useTreeItem/useTreeItem.js} +46 -53
  203. package/package.json +7 -5
  204. package/themeAugmentation/components.d.ts +0 -10
  205. package/themeAugmentation/overrides.d.ts +0 -3
  206. package/themeAugmentation/props.d.ts +1 -5
  207. package/useTreeItem/index.d.ts +2 -0
  208. package/useTreeItem/index.js +1 -0
  209. package/{TreeItem2 → useTreeItem}/package.json +1 -1
  210. package/useTreeItem/useTreeItem.d.ts +2 -0
  211. package/{useTreeItem2/useTreeItem2.js → useTreeItem/useTreeItem.js} +45 -51
  212. package/{useTreeItem2/useTreeItem2.types.d.ts → useTreeItem/useTreeItem.types.d.ts} +51 -58
  213. package/TreeItem/TreeItemContent.d.ts +0 -61
  214. package/TreeItem/TreeItemContent.js +0 -146
  215. package/TreeItem/useTreeItemState.d.ts +0 -21
  216. package/TreeItem/useTreeItemState.js +0 -143
  217. package/TreeItem2/TreeItem2.d.ts +0 -34
  218. package/TreeItem2/TreeItem2.js +0 -387
  219. package/TreeItem2/TreeItem2.types.d.ts +0 -92
  220. package/TreeItem2/index.d.ts +0 -2
  221. package/TreeItem2/index.js +0 -1
  222. package/TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.d.ts +0 -7
  223. package/TreeItem2DragAndDropOverlay/index.d.ts +0 -2
  224. package/TreeItem2DragAndDropOverlay/index.js +0 -1
  225. package/TreeItem2DragAndDropOverlay/package.json +0 -6
  226. package/TreeItem2Icon/TreeItem2Icon.d.ts +0 -7
  227. package/TreeItem2Icon/index.d.ts +0 -2
  228. package/TreeItem2Icon/index.js +0 -1
  229. package/TreeItem2LabelInput/TreeItem2LabelInput.d.ts +0 -5
  230. package/TreeItem2LabelInput/index.d.ts +0 -2
  231. package/TreeItem2LabelInput/index.js +0 -1
  232. package/TreeItem2Provider/TreeItem2Provider.d.ts +0 -6
  233. package/TreeItem2Provider/TreeItem2Provider.js +0 -26
  234. package/TreeItem2Provider/index.d.ts +0 -2
  235. package/TreeItem2Provider/index.js +0 -1
  236. package/TreeView/TreeView.d.ts +0 -21
  237. package/TreeView/TreeView.js +0 -211
  238. package/TreeView/TreeView.types.d.ts +0 -9
  239. package/TreeView/index.d.ts +0 -3
  240. package/TreeView/index.js +0 -3
  241. package/TreeView/package.json +0 -6
  242. package/TreeView/treeViewClasses.d.ts +0 -7
  243. package/TreeView/treeViewClasses.js +0 -6
  244. package/hooks/useTreeItem2Utils/index.d.ts +0 -1
  245. package/hooks/useTreeItem2Utils/index.js +0 -1
  246. package/modern/TreeItem/TreeItemContent.js +0 -146
  247. package/modern/TreeItem/useTreeItemState.js +0 -143
  248. package/modern/TreeItem2/TreeItem2.js +0 -387
  249. package/modern/TreeItem2/index.js +0 -1
  250. package/modern/TreeItem2DragAndDropOverlay/index.js +0 -1
  251. package/modern/TreeItem2Icon/index.js +0 -1
  252. package/modern/TreeItem2LabelInput/index.js +0 -1
  253. package/modern/TreeItem2Provider/TreeItem2Provider.js +0 -26
  254. package/modern/TreeItem2Provider/TreeItem2Provider.types.js +0 -1
  255. package/modern/TreeItem2Provider/index.js +0 -1
  256. package/modern/TreeView/TreeView.js +0 -211
  257. package/modern/TreeView/TreeView.types.js +0 -1
  258. package/modern/TreeView/index.js +0 -3
  259. package/modern/TreeView/treeViewClasses.js +0 -6
  260. package/modern/hooks/useTreeItem2Utils/index.js +0 -1
  261. package/modern/useTreeItem2/index.js +0 -4
  262. package/modern/useTreeItem2/useTreeItem2.types.js +0 -1
  263. package/node/TreeItem/TreeItemContent.js +0 -153
  264. package/node/TreeItem/useTreeItemState.js +0 -148
  265. package/node/TreeItem2/TreeItem2.js +0 -394
  266. package/node/TreeItem2/index.js +0 -48
  267. package/node/TreeItem2DragAndDropOverlay/index.js +0 -12
  268. package/node/TreeItem2Icon/index.js +0 -12
  269. package/node/TreeItem2LabelInput/index.js +0 -12
  270. package/node/TreeItem2Provider/index.js +0 -12
  271. package/node/TreeView/TreeView.js +0 -217
  272. package/node/TreeView/TreeView.types.js +0 -5
  273. package/node/TreeView/index.js +0 -27
  274. package/node/TreeView/treeViewClasses.js +0 -14
  275. package/node/hooks/useTreeItem2Utils/index.js +0 -12
  276. package/node/useTreeItem2/index.js +0 -10
  277. package/node/useTreeItem2/useTreeItem2.types.js +0 -5
  278. package/useTreeItem2/index.d.ts +0 -3
  279. package/useTreeItem2/index.js +0 -4
  280. package/useTreeItem2/useTreeItem2.d.ts +0 -2
  281. package/useTreeItem2/useTreeItem2.types.js +0 -1
  282. /package/{TreeItem2/TreeItem2.types.js → TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.types.js} +0 -0
  283. /package/{TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.types.js → TreeItemIcon/TreeItemIcon.types.js} +0 -0
  284. /package/{TreeItem2Icon/TreeItem2Icon.types.js → TreeItemLabelInput/TreeItemLabelInput.types.js} +0 -0
  285. /package/{TreeItem2LabelInput/TreeItem2LabelInput.types.js → TreeItemProvider/TreeItemProvider.types.js} +0 -0
  286. /package/{TreeItem2Provider/TreeItem2Provider.types.js → modern/TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.types.js} +0 -0
  287. /package/{TreeView/TreeView.types.js → modern/TreeItemIcon/TreeItemIcon.types.js} +0 -0
  288. /package/modern/{TreeItem2/TreeItem2.types.js → TreeItemLabelInput/TreeItemLabelInput.types.js} +0 -0
  289. /package/modern/{TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.types.js → TreeItemProvider/TreeItemProvider.types.js} +0 -0
  290. /package/modern/{TreeItem2Icon/TreeItem2Icon.types.js → useTreeItem/useTreeItem.types.js} +0 -0
  291. /package/node/{TreeItem2/TreeItem2.types.js → TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.types.js} +0 -0
  292. /package/node/{TreeItem2DragAndDropOverlay/TreeItem2DragAndDropOverlay.types.js → TreeItemIcon/TreeItemIcon.types.js} +0 -0
  293. /package/node/{TreeItem2Icon/TreeItem2Icon.types.js → TreeItemLabelInput/TreeItemLabelInput.types.js} +0 -0
  294. /package/node/{TreeItem2LabelInput/TreeItem2LabelInput.types.js → TreeItemProvider/TreeItemProvider.types.js} +0 -0
  295. /package/node/{TreeItem2Provider/TreeItem2Provider.types.js → useTreeItem/useTreeItem.types.js} +0 -0
  296. /package/{modern/TreeItem2LabelInput/TreeItem2LabelInput.types.js → useTreeItem/useTreeItem.types.js} +0 -0
@@ -1,4 +1,2 @@
1
- export { TreeItem } from "./TreeItem.js";
2
- export * from "./treeItemClasses.js";
3
- export * from "./useTreeItemState.js";
4
- export { TreeItemContent } from "./TreeItemContent.js";
1
+ export { TreeItem, TreeItemRoot, TreeItemContent, TreeItemIconContainer, TreeItemGroupTransition, TreeItemCheckbox, TreeItemLabel } from "./TreeItem.js";
2
+ export * from "./treeItemClasses.js";
@@ -1,3 +1,5 @@
1
+ 'use client';
2
+
1
3
  import _extends from "@babel/runtime/helpers/esm/extends";
2
4
  import * as React from 'react';
3
5
  import PropTypes from 'prop-types';
@@ -5,8 +7,8 @@ import { alpha } from '@mui/material/styles';
5
7
  import { shouldForwardProp } from '@mui/system';
6
8
  import { styled } from "../internals/zero-styled/index.js";
7
9
  import { jsx as _jsx } from "react/jsx-runtime";
8
- const TreeItem2DragAndDropOverlayRoot = styled('div', {
9
- name: 'MuiTreeItem2DragAndDropOverlay',
10
+ const TreeItemDragAndDropOverlayRoot = styled('div', {
11
+ name: 'MuiTreeItemDragAndDropOverlay',
10
12
  slot: 'Root',
11
13
  overridesResolver: (props, styles) => styles.root,
12
14
  shouldForwardProp: prop => shouldForwardProp(prop) && prop !== 'action'
@@ -55,13 +57,13 @@ const TreeItem2DragAndDropOverlayRoot = styled('div', {
55
57
  }
56
58
  }]
57
59
  }));
58
- function TreeItem2DragAndDropOverlay(props) {
60
+ function TreeItemDragAndDropOverlay(props) {
59
61
  if (props.action == null) {
60
62
  return null;
61
63
  }
62
- return /*#__PURE__*/_jsx(TreeItem2DragAndDropOverlayRoot, _extends({}, props));
64
+ return /*#__PURE__*/_jsx(TreeItemDragAndDropOverlayRoot, _extends({}, props));
63
65
  }
64
- process.env.NODE_ENV !== "production" ? TreeItem2DragAndDropOverlay.propTypes = {
66
+ process.env.NODE_ENV !== "production" ? TreeItemDragAndDropOverlay.propTypes = {
65
67
  // ----------------------------- Warning --------------------------------
66
68
  // | These PropTypes are generated from the TypeScript type definitions |
67
69
  // | To update them edit the TypeScript types and run "pnpm proptypes" |
@@ -69,4 +71,4 @@ process.env.NODE_ENV !== "production" ? TreeItem2DragAndDropOverlay.propTypes =
69
71
  action: PropTypes.oneOf(['make-child', 'move-to-parent', 'reorder-above', 'reorder-below']),
70
72
  style: PropTypes.object
71
73
  } : void 0;
72
- export { TreeItem2DragAndDropOverlay };
74
+ export { TreeItemDragAndDropOverlay };
@@ -0,0 +1 @@
1
+ export { TreeItemDragAndDropOverlay } from "./TreeItemDragAndDropOverlay.js";
@@ -1,3 +1,5 @@
1
+ 'use client';
2
+
1
3
  import _extends from "@babel/runtime/helpers/esm/extends";
2
4
  import * as React from 'react';
3
5
  import PropTypes from 'prop-types';
@@ -6,7 +8,7 @@ import useSlotProps from '@mui/utils/useSlotProps';
6
8
  import { useTreeViewContext } from "../internals/TreeViewProvider/index.js";
7
9
  import { TreeViewCollapseIcon, TreeViewExpandIcon } from "../icons/index.js";
8
10
  import { jsx as _jsx } from "react/jsx-runtime";
9
- function TreeItem2Icon(props) {
11
+ function TreeItemIcon(props) {
10
12
  const {
11
13
  slots,
12
14
  slotProps,
@@ -42,7 +44,7 @@ function TreeItem2Icon(props) {
42
44
  }
43
45
  return /*#__PURE__*/_jsx(Icon, _extends({}, iconProps));
44
46
  }
45
- process.env.NODE_ENV !== "production" ? TreeItem2Icon.propTypes = {
47
+ process.env.NODE_ENV !== "production" ? TreeItemIcon.propTypes = {
46
48
  // ----------------------------- Warning --------------------------------
47
49
  // | These PropTypes are generated from the TypeScript type definitions |
48
50
  // | To update them edit the TypeScript types and run "pnpm proptypes" |
@@ -67,4 +69,4 @@ process.env.NODE_ENV !== "production" ? TreeItem2Icon.propTypes = {
67
69
  selected: PropTypes.bool.isRequired
68
70
  }).isRequired
69
71
  } : void 0;
70
- export { TreeItem2Icon };
72
+ export { TreeItemIcon };
@@ -0,0 +1 @@
1
+ export { TreeItemIcon } from "./TreeItemIcon.js";
@@ -4,8 +4,8 @@ import { styled } from "../internals/zero-styled/index.js";
4
4
  /**
5
5
  * @ignore - internal component.
6
6
  */
7
- const TreeItem2LabelInput = styled('input', {
8
- name: 'MuiTreeItem2',
7
+ const TreeItemLabelInput = styled('input', {
8
+ name: 'MuiTreeItem',
9
9
  slot: 'LabelInput',
10
10
  overridesResolver: (props, styles) => styles.labelInput
11
11
  })(({
@@ -21,4 +21,4 @@ const TreeItem2LabelInput = styled('input', {
21
21
  outline: `1px solid ${theme.palette.primary.main}`
22
22
  }
23
23
  }));
24
- export { TreeItem2LabelInput };
24
+ export { TreeItemLabelInput };
@@ -0,0 +1 @@
1
+ export { TreeItemLabelInput } from "./TreeItemLabelInput.js";
@@ -0,0 +1,43 @@
1
+ import PropTypes from 'prop-types';
2
+ import { useTreeViewContext } from "../internals/TreeViewProvider/index.js";
3
+ import { generateTreeItemIdAttribute } from "../internals/corePlugins/useTreeViewId/useTreeViewId.utils.js";
4
+ import { useSelector } from "../internals/hooks/useSelector.js";
5
+ import { selectorTreeViewId } from "../internals/corePlugins/useTreeViewId/useTreeViewId.selectors.js";
6
+
7
+ /**
8
+ * @ignore - internal component.
9
+ */
10
+ function TreeItemProvider(props) {
11
+ const {
12
+ children,
13
+ itemId,
14
+ id
15
+ } = props;
16
+ const {
17
+ wrapItem,
18
+ instance,
19
+ store
20
+ } = useTreeViewContext();
21
+ const treeId = useSelector(store, selectorTreeViewId);
22
+ const idAttribute = generateTreeItemIdAttribute({
23
+ itemId,
24
+ treeId,
25
+ id
26
+ });
27
+ return wrapItem({
28
+ children,
29
+ itemId,
30
+ instance,
31
+ idAttribute
32
+ });
33
+ }
34
+ TreeItemProvider.propTypes = {
35
+ // ----------------------------- Warning --------------------------------
36
+ // | These PropTypes are generated from the TypeScript type definitions |
37
+ // | To update them edit the TypeScript types and run "pnpm proptypes" |
38
+ // ----------------------------------------------------------------------
39
+ children: PropTypes.node,
40
+ id: PropTypes.string,
41
+ itemId: PropTypes.string.isRequired
42
+ };
43
+ export { TreeItemProvider };
@@ -0,0 +1 @@
1
+ export { TreeItemProvider } from "./TreeItemProvider.js";
@@ -1,2 +1,3 @@
1
1
  export { useTreeViewApiRef } from "./useTreeViewApiRef.js";
2
- export { useTreeItem2Utils } from "./useTreeItem2Utils/index.js";
2
+ export { useTreeItemUtils } from "./useTreeItemUtils/index.js";
3
+ export { useTreeItemModel } from "./useTreeItemModel.js";
@@ -0,0 +1,11 @@
1
+ 'use client';
2
+
3
+ import { useTreeViewContext } from "../internals/TreeViewProvider/index.js";
4
+ import { useSelector } from "../internals/hooks/useSelector.js";
5
+ import { selectorItemModel } from "../internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js";
6
+ export const useTreeItemModel = itemId => {
7
+ const {
8
+ store
9
+ } = useTreeViewContext();
10
+ return useSelector(store, selectorItemModel, itemId);
11
+ };
@@ -0,0 +1 @@
1
+ export { useTreeItemUtils } from "./useTreeItemUtils.js";
@@ -1,40 +1,59 @@
1
+ 'use client';
2
+
1
3
  import { useTreeViewContext } from "../../internals/TreeViewProvider/index.js";
2
4
  import { useTreeViewLabel } from "../../internals/plugins/useTreeViewLabel/index.js";
3
5
  import { hasPlugin } from "../../internals/utils/plugins.js";
6
+ import { useSelector } from "../../internals/hooks/useSelector.js";
7
+ import { selectorIsItemExpanded } from "../../internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.js";
8
+ import { selectorIsItemFocused } from "../../internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.js";
9
+ import { selectorIsItemDisabled } from "../../internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js";
10
+ import { selectorIsItemSelected } from "../../internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.js";
11
+ import { selectorIsItemBeingEdited, selectorIsItemEditable } from "../../internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.js";
4
12
 
5
13
  /**
6
- * Plugins that need to be present in the Tree View in order for `useTreeItem2Utils` to work correctly.
14
+ * Plugins that need to be present in the Tree View in order for `useTreeItemUtils` to work correctly.
7
15
  */
8
16
 
9
17
  /**
10
- * Plugins that `useTreeItem2Utils` can use if they are present, but are not required.
18
+ * Plugins that `useTreeItemUtils` can use if they are present, but are not required.
11
19
  */
12
20
 
13
- const isItemExpandable = reactChildren => {
21
+ export const isItemExpandable = reactChildren => {
14
22
  if (Array.isArray(reactChildren)) {
15
23
  return reactChildren.length > 0 && reactChildren.some(isItemExpandable);
16
24
  }
17
25
  return Boolean(reactChildren);
18
26
  };
19
- export const useTreeItem2Utils = ({
27
+ export const useTreeItemUtils = ({
20
28
  itemId,
21
29
  children
22
30
  }) => {
23
31
  const {
24
32
  instance,
33
+ label,
34
+ store,
25
35
  selection: {
26
36
  multiSelect
27
37
  },
28
38
  publicAPI
29
39
  } = useTreeViewContext();
40
+ const isExpanded = useSelector(store, selectorIsItemExpanded, itemId);
41
+ const isFocused = useSelector(store, selectorIsItemFocused, itemId);
42
+ const isSelected = useSelector(store, selectorIsItemSelected, itemId);
43
+ const isDisabled = useSelector(store, selectorIsItemDisabled, itemId);
44
+ const isEditing = useSelector(store, state => label == null ? false : selectorIsItemBeingEdited(state, itemId));
45
+ const isEditable = useSelector(store, state => label == null ? false : selectorIsItemEditable(state, {
46
+ itemId,
47
+ isItemEditable: label.isItemEditable
48
+ }));
30
49
  const status = {
31
50
  expandable: isItemExpandable(children),
32
- expanded: instance.isItemExpanded(itemId),
33
- focused: instance.isItemFocused(itemId),
34
- selected: instance.isItemSelected(itemId),
35
- disabled: instance.isItemDisabled(itemId),
36
- editing: instance?.isItemBeingEdited ? instance?.isItemBeingEdited(itemId) : false,
37
- editable: instance.isItemEditable ? instance.isItemEditable(itemId) : false
51
+ expanded: isExpanded,
52
+ focused: isFocused,
53
+ selected: isSelected,
54
+ disabled: isDisabled,
55
+ editing: isEditing,
56
+ editable: isEditable
38
57
  };
39
58
  const handleExpansion = event => {
40
59
  if (status.disabled) {
@@ -46,7 +65,7 @@ export const useTreeItem2Utils = ({
46
65
  const multiple = multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);
47
66
 
48
67
  // If already expanded and trying to toggle selection don't close
49
- if (status.expandable && !(multiple && instance.isItemExpanded(itemId))) {
68
+ if (status.expandable && !(multiple && selectorIsItemExpanded(store.value, itemId))) {
50
69
  instance.toggleItemExpansion(event, itemId);
51
70
  }
52
71
  };
@@ -93,15 +112,15 @@ export const useTreeItem2Utils = ({
93
112
  if (!hasPlugin(instance, useTreeViewLabel)) {
94
113
  return;
95
114
  }
96
- if (instance.isItemEditable(itemId)) {
97
- if (instance.isItemBeingEdited(itemId)) {
115
+ if (isEditable) {
116
+ if (isEditing) {
98
117
  instance.setEditedItemId(null);
99
118
  } else {
100
119
  instance.setEditedItemId(itemId);
101
120
  }
102
121
  }
103
122
  };
104
- const handleSaveItemLabel = (event, label) => {
123
+ const handleSaveItemLabel = (event, newLabel) => {
105
124
  if (!hasPlugin(instance, useTreeViewLabel)) {
106
125
  return;
107
126
  }
@@ -109,9 +128,8 @@ export const useTreeItem2Utils = ({
109
128
  // As a side effect of `instance.focusItem` called here and in `handleCancelItemLabelEditing` the `labelInput` is blurred
110
129
  // The `onBlur` event is triggered, which calls `handleSaveItemLabel` again.
111
130
  // To avoid creating an unwanted behavior we need to check if the item is being edited before calling `updateItemLabel`
112
- // using `instance.isItemBeingEditedRef` instead of `instance.isItemBeingEdited` since the state is not yet updated in this point
113
- if (instance.isItemBeingEditedRef(itemId)) {
114
- instance.updateItemLabel(itemId, label);
131
+ if (selectorIsItemBeingEdited(store.value, itemId)) {
132
+ instance.updateItemLabel(itemId, newLabel);
115
133
  toggleItemEditing();
116
134
  instance.focusItem(event, itemId);
117
135
  }
@@ -120,7 +138,7 @@ export const useTreeItem2Utils = ({
120
138
  if (!hasPlugin(instance, useTreeViewLabel)) {
121
139
  return;
122
140
  }
123
- if (instance.isItemBeingEditedRef(itemId)) {
141
+ if (selectorIsItemBeingEdited(store.value, itemId)) {
124
142
  toggleItemEditing();
125
143
  instance.focusItem(event, itemId);
126
144
  }
package/modern/index.js CHANGED
@@ -1,23 +1,21 @@
1
1
  /**
2
- * @mui/x-tree-view v7.22.1
2
+ * @mui/x-tree-view v8.0.0-alpha.1
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
6
6
  * LICENSE file in the root directory of this source tree.
7
7
  */
8
8
  // Tree View
9
- export * from "./TreeView/index.js";
10
9
  export * from "./SimpleTreeView/index.js";
11
10
  export * from "./RichTreeView/index.js";
12
11
 
13
12
  // Tree Item
14
13
  export * from "./TreeItem/index.js";
15
- export * from "./TreeItem2/index.js";
16
- export * from "./useTreeItem2/index.js";
17
- export * from "./TreeItem2Icon/index.js";
18
- export * from "./TreeItem2Provider/index.js";
19
- export * from "./TreeItem2DragAndDropOverlay/index.js";
20
- export * from "./TreeItem2LabelInput/index.js";
14
+ export * from "./useTreeItem/index.js";
15
+ export * from "./TreeItemIcon/index.js";
16
+ export * from "./TreeItemProvider/index.js";
17
+ export * from "./TreeItemDragAndDropOverlay/index.js";
18
+ export * from "./TreeItemLabelInput/index.js";
21
19
  export { unstable_resetCleanupTracking } from "./internals/hooks/useInstanceEventHandler.js";
22
20
  export * from "./models/index.js";
23
21
  export * from "./icons/index.js";
@@ -2,7 +2,7 @@ import * as React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import { useTreeViewContext } from "./useTreeViewContext.js";
4
4
  import { escapeOperandAttributeSelector } from "../utils/utils.js";
5
- import { generateTreeItemIdAttribute } from "../corePlugins/useTreeViewId/useTreeViewId.utils.js";
5
+ import { selectorItemOrderedChildrenIds } from "../plugins/useTreeViewItems/useTreeViewItems.selectors.js";
6
6
  import { jsx as _jsx } from "react/jsx-runtime";
7
7
  export const TreeViewChildrenItemContext = /*#__PURE__*/React.createContext(null);
8
8
  if (process.env.NODE_ENV !== 'production') {
@@ -11,11 +11,12 @@ if (process.env.NODE_ENV !== 'production') {
11
11
  export function TreeViewChildrenItemProvider(props) {
12
12
  const {
13
13
  children,
14
- itemId = null
14
+ itemId = null,
15
+ idAttribute
15
16
  } = props;
16
17
  const {
17
18
  instance,
18
- treeId,
19
+ store,
19
20
  rootRef
20
21
  } = useTreeViewContext();
21
22
  const childrenIdAttrToIdRef = React.useRef(new Map());
@@ -23,25 +24,8 @@ export function TreeViewChildrenItemProvider(props) {
23
24
  if (!rootRef.current) {
24
25
  return;
25
26
  }
26
- let idAttr = null;
27
- if (itemId == null) {
28
- idAttr = rootRef.current.id;
29
- } else {
30
- // Undefined during 1st render
31
- const itemMeta = instance.getItemMeta(itemId);
32
- if (itemMeta !== undefined) {
33
- idAttr = generateTreeItemIdAttribute({
34
- itemId,
35
- treeId,
36
- id: itemMeta.idAttribute
37
- });
38
- }
39
- }
40
- if (idAttr == null) {
41
- return;
42
- }
43
- const previousChildrenIds = instance.getItemOrderedChildrenIds(itemId ?? null) ?? [];
44
- const escapedIdAttr = escapeOperandAttributeSelector(idAttr);
27
+ const previousChildrenIds = selectorItemOrderedChildrenIds(store.value, itemId ?? null) ?? [];
28
+ const escapedIdAttr = escapeOperandAttributeSelector(idAttribute ?? rootRef.current.id);
45
29
  const childrenElements = rootRef.current.querySelectorAll(`${itemId == null ? '' : `*[id="${escapedIdAttr}"] `}[role="treeitem"]:not(*[id="${escapedIdAttr}"] [role="treeitem"] [role="treeitem"])`);
46
30
  const childrenIds = Array.from(childrenElements).map(child => childrenIdAttrToIdRef.current.get(child.id));
47
31
  const hasChanged = childrenIds.length !== previousChildrenIds.length || childrenIds.some((childId, index) => childId !== previousChildrenIds[index]);
@@ -14,8 +14,7 @@ export function TreeViewProvider(props) {
14
14
  return /*#__PURE__*/_jsx(TreeViewContext.Provider, {
15
15
  value: value,
16
16
  children: value.wrapRoot({
17
- children,
18
- instance: value.instance
17
+ children
19
18
  })
20
19
  });
21
20
  }
@@ -3,54 +3,66 @@ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWith
3
3
  const _excluded = ["ownerState"];
4
4
  import * as React from 'react';
5
5
  import useSlotProps from '@mui/utils/useSlotProps';
6
+ import { fastObjectShallowCompare } from '@mui/x-internals/fastObjectShallowCompare';
6
7
  import { TreeItem } from "../../TreeItem/index.js";
8
+ import { useSelector } from "../hooks/useSelector.js";
9
+ import { selectorItemMeta, selectorItemOrderedChildrenIds } from "../plugins/useTreeViewItems/useTreeViewItems.selectors.js";
10
+ import { useTreeViewContext } from "../TreeViewProvider/index.js";
7
11
  import { jsx as _jsx } from "react/jsx-runtime";
8
- function WrappedTreeItem({
9
- slots,
10
- slotProps,
11
- label,
12
- id,
13
- itemId,
14
- itemsToRender
12
+ const RichTreeViewItemsContext = /*#__PURE__*/React.createContext(null);
13
+ if (process.env.NODE_ENV !== 'production') {
14
+ RichTreeViewItemsContext.displayName = 'RichTreeViewItemsProvider';
15
+ }
16
+ const WrappedTreeItem = /*#__PURE__*/React.memo(function WrappedTreeItem({
17
+ itemSlot,
18
+ itemSlotProps,
19
+ itemId
15
20
  }) {
16
- const Item = slots?.item ?? TreeItem;
21
+ const renderItemForRichTreeView = React.useContext(RichTreeViewItemsContext);
22
+ const {
23
+ store
24
+ } = useTreeViewContext();
25
+ const itemMeta = useSelector(store, selectorItemMeta, itemId);
26
+ const children = useSelector(store, selectorItemOrderedChildrenIds, itemId);
27
+ const Item = itemSlot ?? TreeItem;
17
28
  const _useSlotProps = useSlotProps({
18
29
  elementType: Item,
19
- externalSlotProps: slotProps?.item,
30
+ externalSlotProps: itemSlotProps,
20
31
  additionalProps: {
21
- itemId,
22
- id,
23
- label
32
+ label: itemMeta?.label,
33
+ id: itemMeta?.idAttribute,
34
+ itemId
24
35
  },
25
36
  ownerState: {
26
37
  itemId,
27
- label
38
+ label: itemMeta?.label
28
39
  }
29
40
  }),
30
41
  itemProps = _objectWithoutPropertiesLoose(_useSlotProps, _excluded);
31
- const children = React.useMemo(() => itemsToRender ? /*#__PURE__*/_jsx(RichTreeViewItems, {
32
- itemsToRender: itemsToRender,
33
- slots: slots,
34
- slotProps: slotProps
35
- }) : null, [itemsToRender, slots, slotProps]);
36
42
  return /*#__PURE__*/_jsx(Item, _extends({}, itemProps, {
37
- children: children
43
+ children: children?.map(renderItemForRichTreeView)
38
44
  }));
39
- }
45
+ }, fastObjectShallowCompare);
40
46
  export function RichTreeViewItems(props) {
41
47
  const {
42
- itemsToRender,
43
48
  slots,
44
49
  slotProps
45
50
  } = props;
46
- return /*#__PURE__*/_jsx(React.Fragment, {
47
- children: itemsToRender.map(item => /*#__PURE__*/_jsx(WrappedTreeItem, {
48
- slots: slots,
49
- slotProps: slotProps,
50
- label: item.label,
51
- id: item.id,
52
- itemId: item.itemId,
53
- itemsToRender: item.children
54
- }, item.itemId))
51
+ const {
52
+ store
53
+ } = useTreeViewContext();
54
+ const itemSlot = slots?.item;
55
+ const itemSlotProps = slotProps?.item;
56
+ const items = useSelector(store, selectorItemOrderedChildrenIds, null);
57
+ const renderItem = React.useCallback(itemId => {
58
+ return /*#__PURE__*/_jsx(WrappedTreeItem, {
59
+ itemSlot: itemSlot,
60
+ itemSlotProps: itemSlotProps,
61
+ itemId: itemId
62
+ }, itemId);
63
+ }, [itemSlot, itemSlotProps]);
64
+ return /*#__PURE__*/_jsx(RichTreeViewItemsContext.Provider, {
65
+ value: renderItem,
66
+ children: items.map(renderItem)
55
67
  });
56
68
  }
@@ -1,14 +1,15 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
+ import { useSelector } from "../../hooks/useSelector.js";
4
+ import { selectorTreeViewId } from "./useTreeViewId.selectors.js";
3
5
  import { createTreeViewDefaultId } from "./useTreeViewId.utils.js";
4
6
  export const useTreeViewId = ({
5
7
  params,
6
- state,
7
- setState
8
+ store
8
9
  }) => {
9
10
  React.useEffect(() => {
10
- setState(prevState => {
11
- if (prevState.id.treeId === params.id && prevState.id.treeId !== undefined) {
11
+ store.update(prevState => {
12
+ if (params.id === prevState.id.providedTreeId && prevState.id.treeId !== undefined) {
12
13
  return prevState;
13
14
  }
14
15
  return _extends({}, prevState, {
@@ -17,15 +18,12 @@ export const useTreeViewId = ({
17
18
  })
18
19
  });
19
20
  });
20
- }, [setState, params.id]);
21
- const treeId = params.id ?? state.id.treeId;
21
+ }, [store, params.id]);
22
+ const treeId = useSelector(store, selectorTreeViewId);
22
23
  return {
23
24
  getRootProps: () => ({
24
25
  id: treeId
25
- }),
26
- contextValue: {
27
- treeId
28
- }
26
+ })
29
27
  };
30
28
  };
31
29
  useTreeViewId.params = {
@@ -35,6 +33,7 @@ useTreeViewId.getInitialState = ({
35
33
  id
36
34
  }) => ({
37
35
  id: {
38
- treeId: id ?? undefined
36
+ treeId: undefined,
37
+ providedTreeId: id
39
38
  }
40
39
  });
@@ -0,0 +1,9 @@
1
+ import { createSelector } from "../../utils/selectors.js";
2
+ const selectorTreeViewIdState = state => state.id;
3
+
4
+ /**
5
+ * Get the id attribute of the tree view.
6
+ * @param {TreeViewState<[UseTreeViewIdSignature]>} state The state of the tree view.
7
+ * @returns {string} The id attribute of the tree view.
8
+ */
9
+ export const selectorTreeViewId = createSelector(selectorTreeViewIdState, idState => idState.treeId);
@@ -0,0 +1,6 @@
1
+ import { useSyncExternalStoreWithSelector } from 'use-sync-external-store/with-selector';
2
+ const defaultCompare = Object.is;
3
+ export const useSelector = (store, selector, args = undefined, equals = defaultCompare) => {
4
+ const selectorWithArgs = state => selector(state, args);
5
+ return useSyncExternalStoreWithSelector(store.subscribe, store.getSnapshot, store.getSnapshot, selectorWithArgs, equals);
6
+ };
@@ -2,6 +2,7 @@ export { useTreeView } from "./useTreeView/index.js";
2
2
  export { TreeViewProvider, useTreeViewContext } from "./TreeViewProvider/index.js";
3
3
  export { RichTreeViewItems } from "./components/RichTreeViewItems.js";
4
4
  export { unstable_resetCleanupTracking } from "./hooks/useInstanceEventHandler.js";
5
+ export { useSelector } from "./hooks/useSelector.js";
5
6
 
6
7
  // Core plugins
7
8
 
@@ -12,6 +13,9 @@ export { useTreeViewFocus } from "./plugins/useTreeViewFocus/index.js";
12
13
  export { useTreeViewKeyboardNavigation } from "./plugins/useTreeViewKeyboardNavigation/index.js";
13
14
  export { useTreeViewIcons } from "./plugins/useTreeViewIcons/index.js";
14
15
  export { useTreeViewItems, buildSiblingIndexes, TREE_VIEW_ROOT_PARENT_ID } from "./plugins/useTreeViewItems/index.js";
16
+ export { selectorItemMetaLookup, selectorItemMeta, selectorItemIndex, selectorItemOrderedChildrenIds } from "./plugins/useTreeViewItems/useTreeViewItems.selectors.js";
15
17
  export { useTreeViewLabel } from "./plugins/useTreeViewLabel/index.js";
16
18
  export { useTreeViewJSXItems } from "./plugins/useTreeViewJSXItems/index.js";
17
- export { isTargetInDescendants } from "./utils/tree.js";
19
+ export { createSelector } from "./utils/selectors.js";
20
+ export { isTargetInDescendants } from "./utils/tree.js";
21
+ export { TreeViewStore } from "./utils/TreeViewStore.js";