@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,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/index.d.ts CHANGED
@@ -1,13 +1,11 @@
1
- export * from './TreeView';
2
1
  export * from './SimpleTreeView';
3
2
  export * from './RichTreeView';
4
3
  export * from './TreeItem';
5
- export * from './TreeItem2';
6
- export * from './useTreeItem2';
7
- export * from './TreeItem2Icon';
8
- export * from './TreeItem2Provider';
9
- export * from './TreeItem2DragAndDropOverlay';
10
- export * from './TreeItem2LabelInput';
4
+ export * from './useTreeItem';
5
+ export * from './TreeItemIcon';
6
+ export * from './TreeItemProvider';
7
+ export * from './TreeItemDragAndDropOverlay';
8
+ export * from './TreeItemLabelInput';
11
9
  export { unstable_resetCleanupTracking } from './internals/hooks/useInstanceEventHandler';
12
10
  export * from './models';
13
11
  export * from './icons';
package/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";
@@ -1,3 +1,5 @@
1
1
  import * as React from 'react';
2
2
  import { TreeViewItemId } from '../../models';
3
- export declare const TreeViewItemDepthContext: React.Context<number | ((itemId: TreeViewItemId) => number)>;
3
+ import { TreeViewState } from '../models';
4
+ import type { UseTreeViewItemsSignature } from '../plugins/useTreeViewItems';
5
+ export declare const TreeViewItemDepthContext: React.Context<number | ((state: TreeViewState<[UseTreeViewItemsSignature]>, itemId: TreeViewItemId) => number)>;
@@ -1,7 +1,8 @@
1
1
  import * as React from 'react';
2
2
  export declare const TreeViewChildrenItemContext: React.Context<TreeViewChildrenItemContextValue | null>;
3
3
  interface TreeViewChildrenItemProviderProps {
4
- itemId?: string;
4
+ itemId: string | null;
5
+ idAttribute: string | null;
5
6
  children: React.ReactNode;
6
7
  }
7
8
  export declare function TreeViewChildrenItemProvider(props: TreeViewChildrenItemProviderProps): React.JSX.Element;
@@ -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
  }
@@ -1,13 +1,16 @@
1
1
  import * as React from 'react';
2
2
  import { MergeSignaturesProperty, TreeItemWrapper, TreeRootWrapper, TreeViewAnyPluginSignature, TreeViewInstance, TreeViewItemPluginResponse, TreeViewPublicAPI } from '../models';
3
+ import { TreeViewStore } from '../utils/TreeViewStore';
3
4
  import { TreeViewCorePluginSignatures } from '../corePlugins';
4
- export type TreeViewItemPluginsRunner = <TProps extends {}>(props: TProps) => Required<TreeViewItemPluginResponse>;
5
+ import type { TreeItemProps } from '../../TreeItem/TreeItem.types';
6
+ export type TreeViewItemPluginsRunner = (props: TreeItemProps) => Required<TreeViewItemPluginResponse>;
5
7
  export type TreeViewContextValue<TSignatures extends readonly TreeViewAnyPluginSignature[], TOptionalSignatures extends readonly TreeViewAnyPluginSignature[] = []> = MergeSignaturesProperty<[...TreeViewCorePluginSignatures, ...TSignatures], 'contextValue'> & Partial<MergeSignaturesProperty<TOptionalSignatures, 'contextValue'>> & {
6
8
  instance: TreeViewInstance<TSignatures, TOptionalSignatures>;
7
9
  publicAPI: TreeViewPublicAPI<TSignatures, TOptionalSignatures>;
10
+ store: TreeViewStore<TSignatures>;
8
11
  rootRef: React.RefObject<HTMLUListElement>;
9
12
  wrapItem: TreeItemWrapper<TSignatures>;
10
- wrapRoot: TreeRootWrapper<TSignatures>;
13
+ wrapRoot: TreeRootWrapper;
11
14
  runItemPlugins: TreeViewItemPluginsRunner;
12
15
  };
13
16
  export interface TreeViewProviderProps<TSignatures extends readonly TreeViewAnyPluginSignature[]> {
@@ -1,25 +1,23 @@
1
1
  import * as React from 'react';
2
2
  import { SlotComponentProps } from '@mui/utils';
3
3
  import { TreeItem, TreeItemProps } from '../../TreeItem';
4
- import { TreeItem2Props } from '../../TreeItem2';
5
4
  import { TreeViewItemId } from '../../models';
6
- import { TreeViewItemToRenderProps } from '../plugins/useTreeViewItems';
5
+ export declare function RichTreeViewItems(props: RichTreeViewItemsProps): React.JSX.Element;
7
6
  interface RichTreeViewItemsOwnerState {
8
7
  itemId: TreeViewItemId;
9
8
  label: string;
10
9
  }
11
10
  export interface RichTreeViewItemsSlots {
12
11
  /**
13
- * Custom component for the item.
12
+ * Custom component to render a Tree Item.
14
13
  * @default TreeItem.
15
14
  */
16
- item?: React.JSXElementConstructor<TreeItemProps> | React.JSXElementConstructor<TreeItem2Props>;
15
+ item?: React.JSXElementConstructor<TreeItemProps>;
17
16
  }
18
17
  export interface RichTreeViewItemsSlotProps {
19
18
  item?: SlotComponentProps<typeof TreeItem, {}, RichTreeViewItemsOwnerState>;
20
19
  }
21
20
  export interface RichTreeViewItemsProps {
22
- itemsToRender: TreeViewItemToRenderProps[];
23
21
  /**
24
22
  * Overridable component slots.
25
23
  * @default {}
@@ -31,5 +29,4 @@ export interface RichTreeViewItemsProps {
31
29
  */
32
30
  slotProps?: RichTreeViewItemsSlotProps;
33
31
  }
34
- export declare function RichTreeViewItems(props: RichTreeViewItemsProps): React.JSX.Element;
35
32
  export {};
@@ -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,36 @@
1
+ import { TreeViewRootSelector } from '../../utils/selectors';
2
+ import { UseTreeViewIdSignature } from './useTreeViewId.types';
3
+ /**
4
+ * Get the id attribute of the tree view.
5
+ * @param {TreeViewState<[UseTreeViewIdSignature]>} state The state of the tree view.
6
+ * @returns {string} The id attribute of the tree view.
7
+ */
8
+ export declare const selectorTreeViewId: ((state: import("./useTreeViewId.types").UseTreeViewIdState & Partial<{}> & {
9
+ cacheKey: import("../../models").TreeViewStateCacheKey;
10
+ }) => string | undefined) & {
11
+ clearCache: () => void;
12
+ resultsCount: () => number;
13
+ resetResultsCount: () => void;
14
+ } & {
15
+ resultFunc: (resultFuncArgs_0: {
16
+ treeId: string | undefined;
17
+ providedTreeId: string | undefined;
18
+ }) => string | undefined;
19
+ memoizedResultFunc: ((resultFuncArgs_0: {
20
+ treeId: string | undefined;
21
+ providedTreeId: string | undefined;
22
+ }) => string | undefined) & {
23
+ clearCache: () => void;
24
+ resultsCount: () => number;
25
+ resetResultsCount: () => void;
26
+ };
27
+ lastResult: () => string | undefined;
28
+ dependencies: [TreeViewRootSelector<UseTreeViewIdSignature>];
29
+ recomputations: () => number;
30
+ resetRecomputations: () => void;
31
+ dependencyRecomputations: () => number;
32
+ resetDependencyRecomputations: () => void;
33
+ } & {
34
+ argsMemoize: typeof import("reselect").weakMapMemoize;
35
+ memoize: typeof import("reselect").weakMapMemoize;
36
+ };
@@ -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);
@@ -10,15 +10,11 @@ export type UseTreeViewIdDefaultizedParameters = UseTreeViewIdParameters;
10
10
  export interface UseTreeViewIdState {
11
11
  id: {
12
12
  treeId: string | undefined;
13
+ providedTreeId: string | undefined;
13
14
  };
14
15
  }
15
- interface UseTreeViewIdContextValue {
16
- treeId: string | undefined;
17
- }
18
16
  export type UseTreeViewIdSignature = TreeViewPluginSignature<{
19
17
  params: UseTreeViewIdParameters;
20
18
  defaultizedParams: UseTreeViewIdDefaultizedParameters;
21
19
  state: UseTreeViewIdState;
22
- contextValue: UseTreeViewIdContextValue;
23
20
  }>;
24
- export {};
@@ -0,0 +1,4 @@
1
+ import { TreeViewAnyPluginSignature, TreeViewState } from '../models';
2
+ import { TreeViewStore } from '../utils/TreeViewStore';
3
+ import { TreeViewSelector } from '../utils/selectors';
4
+ export declare const useSelector: <TSignatures extends readonly TreeViewAnyPluginSignature[], TArgs, TValue>(store: TreeViewStore<TSignatures>, selector: TreeViewSelector<TreeViewState<TSignatures>, TArgs, TValue>, args?: TArgs, equals?: (a: TValue, b: TValue) => boolean) => TValue;
@@ -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
+ };
@@ -1,8 +1,10 @@
1
1
  export { useTreeView } from './useTreeView';
2
2
  export { TreeViewProvider, useTreeViewContext } from './TreeViewProvider';
3
3
  export { RichTreeViewItems } from './components/RichTreeViewItems';
4
+ export type { RichTreeViewItemsSlots, RichTreeViewItemsSlotProps, } from './components/RichTreeViewItems';
4
5
  export { unstable_resetCleanupTracking } from './hooks/useInstanceEventHandler';
5
- export type { TreeViewPlugin, TreeViewPluginSignature, ConvertPluginsIntoSignatures, MergeSignaturesProperty, TreeViewPublicAPI, TreeViewExperimentalFeatures, TreeViewItemMeta, TreeViewInstance, DefaultizedProps, TreeViewItemPlugin, } from './models';
6
+ export { useSelector } from './hooks/useSelector';
7
+ export type { TreeViewPlugin, TreeViewPluginSignature, ConvertPluginsIntoSignatures, MergeSignaturesProperty, TreeViewPublicAPI, TreeViewState, TreeViewExperimentalFeatures, TreeViewItemMeta, TreeViewInstance, TreeViewItemPlugin, TreeViewUsedStore, } from './models';
6
8
  export type { TreeViewCorePluginParameters } from './corePlugins';
7
9
  export { useTreeViewExpansion } from './plugins/useTreeViewExpansion';
8
10
  export type { UseTreeViewExpansionSignature, UseTreeViewExpansionParameters, } from './plugins/useTreeViewExpansion';
@@ -15,9 +17,12 @@ export type { UseTreeViewKeyboardNavigationSignature } from './plugins/useTreeVi
15
17
  export { useTreeViewIcons } from './plugins/useTreeViewIcons';
16
18
  export type { UseTreeViewIconsSignature, UseTreeViewIconsParameters, } from './plugins/useTreeViewIcons';
17
19
  export { useTreeViewItems, buildSiblingIndexes, TREE_VIEW_ROOT_PARENT_ID, } from './plugins/useTreeViewItems';
20
+ export { selectorItemMetaLookup, selectorItemMeta, selectorItemIndex, selectorItemOrderedChildrenIds, } from './plugins/useTreeViewItems/useTreeViewItems.selectors';
18
21
  export type { UseTreeViewItemsSignature, UseTreeViewItemsParameters, UseTreeViewItemsState, } from './plugins/useTreeViewItems';
19
22
  export { useTreeViewLabel } from './plugins/useTreeViewLabel';
20
23
  export type { UseTreeViewLabelSignature, UseTreeViewLabelParameters, } from './plugins/useTreeViewLabel';
21
24
  export { useTreeViewJSXItems } from './plugins/useTreeViewJSXItems';
22
25
  export type { UseTreeViewJSXItemsSignature, UseTreeViewJSXItemsParameters, } from './plugins/useTreeViewJSXItems';
26
+ export { createSelector } from './utils/selectors';
23
27
  export { isTargetInDescendants } from './utils/tree';
28
+ export { TreeViewStore } from './utils/TreeViewStore';
@@ -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";
@@ -1,6 +1,4 @@
1
1
  import type { TreeViewAnyPluginSignature, TreeViewPlugin } from './plugin';
2
- export type DefaultizedProps<P extends {}, RequiredProps extends keyof P, AdditionalProps extends {} = {}> = Omit<P, RequiredProps | keyof AdditionalProps> & Required<Pick<P, RequiredProps>> & AdditionalProps;
3
- export type SlotComponentPropsFromProps<TProps extends {}, TOverrides extends {}, TOwnerState extends {}> = (Partial<TProps> & TOverrides) | ((ownerState: TOwnerState) => Partial<TProps> & TOverrides);
4
2
  type IsAny<T> = 0 extends 1 & T ? true : false;
5
3
  export type OptionalIfEmpty<A extends string, B> = keyof B extends never ? Partial<Record<A, B>> : IsAny<B> extends true ? Partial<Record<A, B>> : Record<A, B>;
6
4
  export type MergeSignaturesProperty<TSignatures extends readonly any[], TProperty extends keyof TreeViewAnyPluginSignature> = TSignatures extends readonly [plugin: infer P, ...otherPlugin: infer R] ? P extends TreeViewAnyPluginSignature ? P[TProperty] & MergeSignaturesProperty<R, TProperty> : {} : {};
@@ -1,19 +1,22 @@
1
1
  import * as React from 'react';
2
2
  import { EventHandlers } from '@mui/utils';
3
- import type { UseTreeItem2ContentSlotOwnProps, UseTreeItem2DragAndDropOverlaySlotOwnProps, UseTreeItem2LabelInputSlotOwnProps, UseTreeItem2RootSlotOwnProps } from '../../useTreeItem2';
4
- import type { UseTreeItem2Interactions } from '../../hooks/useTreeItem2Utils/useTreeItem2Utils';
3
+ import type { UseTreeItemContentSlotOwnProps, UseTreeItemDragAndDropOverlaySlotOwnProps, UseTreeItemLabelInputSlotOwnProps, UseTreeItemRootSlotOwnProps, UseTreeItemCheckboxSlotOwnProps, UseTreeItemStatus } from '../../useTreeItem';
4
+ import type { UseTreeItemInteractions } from '../../hooks/useTreeItemUtils/useTreeItemUtils';
5
+ import type { TreeItemProps } from '../../TreeItem/TreeItem.types';
5
6
  export interface TreeViewItemPluginSlotPropsEnhancerParams {
6
7
  rootRefObject: React.MutableRefObject<HTMLLIElement | null>;
7
8
  contentRefObject: React.MutableRefObject<HTMLDivElement | null>;
8
9
  externalEventHandlers: EventHandlers;
9
- interactions: Pick<UseTreeItem2Interactions, 'handleSaveItemLabel' | 'handleCancelItemLabelEditing'>;
10
+ interactions: UseTreeItemInteractions;
11
+ status: UseTreeItemStatus;
10
12
  }
11
13
  type TreeViewItemPluginSlotPropsEnhancer<TSlotProps> = (params: TreeViewItemPluginSlotPropsEnhancerParams) => Partial<TSlotProps>;
12
14
  export interface TreeViewItemPluginSlotPropsEnhancers {
13
- root?: TreeViewItemPluginSlotPropsEnhancer<UseTreeItem2RootSlotOwnProps>;
14
- content?: TreeViewItemPluginSlotPropsEnhancer<UseTreeItem2ContentSlotOwnProps>;
15
- dragAndDropOverlay?: TreeViewItemPluginSlotPropsEnhancer<UseTreeItem2DragAndDropOverlaySlotOwnProps>;
16
- labelInput?: TreeViewItemPluginSlotPropsEnhancer<UseTreeItem2LabelInputSlotOwnProps>;
15
+ root?: TreeViewItemPluginSlotPropsEnhancer<UseTreeItemRootSlotOwnProps>;
16
+ content?: TreeViewItemPluginSlotPropsEnhancer<UseTreeItemContentSlotOwnProps>;
17
+ dragAndDropOverlay?: TreeViewItemPluginSlotPropsEnhancer<UseTreeItemDragAndDropOverlaySlotOwnProps>;
18
+ labelInput?: TreeViewItemPluginSlotPropsEnhancer<UseTreeItemLabelInputSlotOwnProps>;
19
+ checkbox?: TreeViewItemPluginSlotPropsEnhancer<UseTreeItemCheckboxSlotOwnProps>;
17
20
  }
18
21
  export interface TreeViewItemPluginResponse {
19
22
  /**
@@ -33,8 +36,8 @@ export interface TreeViewItemPluginResponse {
33
36
  */
34
37
  propsEnhancers?: TreeViewItemPluginSlotPropsEnhancers;
35
38
  }
36
- export interface TreeViewItemPluginOptions<TProps extends {}> extends Omit<TreeViewItemPluginResponse, 'propsEnhancers'> {
37
- props: TProps;
39
+ export interface TreeViewItemPluginOptions extends Omit<TreeViewItemPluginResponse, 'propsEnhancers'> {
40
+ props: TreeItemProps;
38
41
  }
39
- export type TreeViewItemPlugin<TProps extends {}> = (options: TreeViewItemPluginOptions<TProps>) => void | TreeViewItemPluginResponse;
42
+ export type TreeViewItemPlugin = (options: TreeViewItemPluginOptions) => void | TreeViewItemPluginResponse;
40
43
  export {};