@mui/x-tree-view 8.0.0-beta.3 → 8.0.0

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 (421) hide show
  1. package/CHANGELOG.md +282 -96
  2. package/RichTreeView/RichTreeView.js +11 -6
  3. package/RichTreeView/RichTreeView.plugins.d.ts +3 -6
  4. package/RichTreeView/RichTreeView.plugins.js +1 -2
  5. package/RichTreeView/RichTreeView.types.d.ts +4 -3
  6. package/RichTreeView/index.d.ts +1 -1
  7. package/SimpleTreeView/SimpleTreeView.js +12 -8
  8. package/SimpleTreeView/SimpleTreeView.plugins.d.ts +3 -6
  9. package/SimpleTreeView/SimpleTreeView.plugins.js +1 -2
  10. package/SimpleTreeView/SimpleTreeView.types.d.ts +4 -3
  11. package/TreeItemIcon/TreeItemIcon.js +15 -11
  12. package/esm/RichTreeView/RichTreeView.js +10 -5
  13. package/esm/RichTreeView/RichTreeView.plugins.d.ts +3 -6
  14. package/esm/RichTreeView/RichTreeView.plugins.js +1 -2
  15. package/esm/RichTreeView/RichTreeView.types.d.ts +4 -3
  16. package/esm/RichTreeView/index.d.ts +1 -1
  17. package/esm/SimpleTreeView/SimpleTreeView.js +11 -7
  18. package/esm/SimpleTreeView/SimpleTreeView.plugins.d.ts +3 -6
  19. package/esm/SimpleTreeView/SimpleTreeView.plugins.js +1 -2
  20. package/esm/SimpleTreeView/SimpleTreeView.types.d.ts +4 -3
  21. package/esm/TreeItemIcon/TreeItemIcon.js +15 -11
  22. package/esm/hooks/useTreeItemUtils/useTreeItemUtils.js +1 -1
  23. package/esm/index.js +1 -1
  24. package/esm/internals/TreeViewProvider/TreeViewContext.d.ts +1 -1
  25. package/esm/internals/TreeViewProvider/TreeViewProvider.js +14 -4
  26. package/esm/internals/TreeViewProvider/TreeViewProvider.types.d.ts +6 -5
  27. package/esm/internals/TreeViewProvider/TreeViewStyleContext.d.ts +23 -0
  28. package/esm/internals/TreeViewProvider/TreeViewStyleContext.js +3 -1
  29. package/esm/internals/hooks/useSelector.js +1 -4
  30. package/esm/internals/index.d.ts +2 -3
  31. package/esm/internals/index.js +1 -1
  32. package/esm/internals/models/events.d.ts +2 -6
  33. package/esm/internals/models/plugin.d.ts +63 -38
  34. package/esm/internals/models/treeView.d.ts +0 -5
  35. package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +35 -21
  36. package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.d.ts +144 -10
  37. package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.js +21 -1
  38. package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +1 -1
  39. package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.utils.d.ts +0 -1
  40. package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.utils.js +0 -7
  41. package/esm/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +3 -30
  42. package/esm/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.d.ts +476 -28
  43. package/esm/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.js +21 -1
  44. package/esm/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.d.ts +0 -1
  45. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.d.ts +90 -4
  46. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +12 -25
  47. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.utils.d.ts +12 -1
  48. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.utils.js +31 -0
  49. package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +3 -6
  50. package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.d.ts +43 -9
  51. package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.js +12 -2
  52. package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.types.d.ts +1 -1
  53. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +2 -2
  54. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +39 -40
  55. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.d.ts +186 -30
  56. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.js +36 -1
  57. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +3 -6
  58. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.d.ts +0 -7
  59. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +5 -24
  60. package/esm/internals/useTreeView/extractPluginParamsFromProps.d.ts +0 -2
  61. package/esm/internals/useTreeView/extractPluginParamsFromProps.js +1 -5
  62. package/esm/internals/useTreeView/useTreeView.d.ts +10 -1
  63. package/esm/internals/useTreeView/useTreeView.js +22 -25
  64. package/esm/internals/useTreeView/useTreeView.types.d.ts +1 -3
  65. package/esm/internals/useTreeView/useTreeViewBuildContext.js +9 -11
  66. package/esm/internals/utils/models.d.ts +7 -0
  67. package/esm/internals/utils/models.js +23 -0
  68. package/esm/internals/utils/selectors.d.ts +1 -1
  69. package/esm/utils/cache.d.ts +1 -1
  70. package/esm/utils/cache.js +1 -1
  71. package/hooks/useTreeItemUtils/useTreeItemUtils.js +1 -1
  72. package/index.js +1 -1
  73. package/internals/TreeViewProvider/TreeViewContext.d.ts +1 -1
  74. package/internals/TreeViewProvider/TreeViewProvider.js +14 -4
  75. package/internals/TreeViewProvider/TreeViewProvider.types.d.ts +6 -5
  76. package/internals/TreeViewProvider/TreeViewStyleContext.d.ts +23 -0
  77. package/internals/TreeViewProvider/TreeViewStyleContext.js +3 -1
  78. package/internals/hooks/useSelector.js +1 -5
  79. package/internals/index.d.ts +2 -3
  80. package/internals/index.js +13 -7
  81. package/internals/models/events.d.ts +2 -6
  82. package/internals/models/plugin.d.ts +63 -38
  83. package/internals/models/treeView.d.ts +0 -5
  84. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +33 -19
  85. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.d.ts +144 -10
  86. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.js +22 -2
  87. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +1 -1
  88. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.utils.d.ts +0 -1
  89. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.utils.js +1 -9
  90. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +2 -30
  91. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.d.ts +476 -28
  92. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.js +21 -1
  93. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.d.ts +0 -1
  94. package/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.d.ts +90 -4
  95. package/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +12 -25
  96. package/internals/plugins/useTreeViewItems/useTreeViewItems.utils.d.ts +12 -1
  97. package/internals/plugins/useTreeViewItems/useTreeViewItems.utils.js +34 -2
  98. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +3 -6
  99. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.d.ts +43 -9
  100. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.js +13 -3
  101. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.types.d.ts +1 -1
  102. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +2 -2
  103. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +37 -38
  104. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.d.ts +186 -30
  105. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.js +37 -2
  106. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +3 -6
  107. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.d.ts +0 -7
  108. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +6 -26
  109. package/internals/useTreeView/extractPluginParamsFromProps.d.ts +0 -2
  110. package/internals/useTreeView/extractPluginParamsFromProps.js +1 -5
  111. package/internals/useTreeView/useTreeView.d.ts +10 -1
  112. package/internals/useTreeView/useTreeView.js +22 -25
  113. package/internals/useTreeView/useTreeView.types.d.ts +1 -3
  114. package/internals/useTreeView/useTreeViewBuildContext.js +9 -11
  115. package/internals/utils/models.d.ts +7 -0
  116. package/internals/utils/models.js +30 -0
  117. package/internals/utils/selectors.d.ts +1 -1
  118. package/package.json +4 -12
  119. package/utils/cache.d.ts +1 -1
  120. package/utils/cache.js +1 -1
  121. package/esm/internals/plugins/useTreeViewIcons/index.d.ts +0 -2
  122. package/esm/internals/plugins/useTreeViewIcons/index.js +0 -1
  123. package/esm/internals/plugins/useTreeViewIcons/useTreeViewIcons.d.ts +0 -3
  124. package/esm/internals/plugins/useTreeViewIcons/useTreeViewIcons.js +0 -24
  125. package/esm/internals/plugins/useTreeViewIcons/useTreeViewIcons.types.d.ts +0 -42
  126. package/esm/internals/plugins/useTreeViewIcons/useTreeViewIcons.types.js +0 -1
  127. package/esm/internals/plugins/useTreeViewItemCustomization/index.d.ts +0 -2
  128. package/esm/internals/plugins/useTreeViewItemCustomization/index.js +0 -1
  129. package/esm/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.d.ts +0 -3
  130. package/esm/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.js +0 -24
  131. package/esm/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.types.d.ts +0 -42
  132. package/esm/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.types.js +0 -1
  133. package/esm/internals/useTreeView/useTreeViewModels.d.ts +0 -7
  134. package/esm/internals/useTreeView/useTreeViewModels.js +0 -62
  135. package/internals/plugins/useTreeViewIcons/index.d.ts +0 -2
  136. package/internals/plugins/useTreeViewIcons/index.js +0 -12
  137. package/internals/plugins/useTreeViewIcons/useTreeViewIcons.d.ts +0 -3
  138. package/internals/plugins/useTreeViewIcons/useTreeViewIcons.js +0 -32
  139. package/internals/plugins/useTreeViewIcons/useTreeViewIcons.types.d.ts +0 -42
  140. package/internals/plugins/useTreeViewIcons/useTreeViewIcons.types.js +0 -5
  141. package/internals/plugins/useTreeViewItemCustomization/index.d.ts +0 -2
  142. package/internals/plugins/useTreeViewItemCustomization/index.js +0 -12
  143. package/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.d.ts +0 -3
  144. package/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.js +0 -32
  145. package/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.types.d.ts +0 -42
  146. package/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.types.js +0 -5
  147. package/internals/useTreeView/useTreeViewModels.d.ts +0 -7
  148. package/internals/useTreeView/useTreeViewModels.js +0 -71
  149. package/modern/RichTreeView/RichTreeView.d.ts +0 -18
  150. package/modern/RichTreeView/RichTreeView.js +0 -322
  151. package/modern/RichTreeView/RichTreeView.plugins.d.ts +0 -13
  152. package/modern/RichTreeView/RichTreeView.plugins.js +0 -10
  153. package/modern/RichTreeView/RichTreeView.types.d.ts +0 -52
  154. package/modern/RichTreeView/RichTreeView.types.js +0 -1
  155. package/modern/RichTreeView/index.d.ts +0 -5
  156. package/modern/RichTreeView/index.js +0 -3
  157. package/modern/RichTreeView/richTreeViewClasses.d.ts +0 -5
  158. package/modern/RichTreeView/richTreeViewClasses.js +0 -6
  159. package/modern/SimpleTreeView/SimpleTreeView.d.ts +0 -20
  160. package/modern/SimpleTreeView/SimpleTreeView.js +0 -265
  161. package/modern/SimpleTreeView/SimpleTreeView.plugins.d.ts +0 -12
  162. package/modern/SimpleTreeView/SimpleTreeView.plugins.js +0 -10
  163. package/modern/SimpleTreeView/SimpleTreeView.types.d.ts +0 -51
  164. package/modern/SimpleTreeView/SimpleTreeView.types.js +0 -1
  165. package/modern/SimpleTreeView/index.d.ts +0 -3
  166. package/modern/SimpleTreeView/index.js +0 -3
  167. package/modern/SimpleTreeView/simpleTreeViewClasses.d.ts +0 -5
  168. package/modern/SimpleTreeView/simpleTreeViewClasses.js +0 -6
  169. package/modern/TreeItem/TreeItem.d.ts +0 -33
  170. package/modern/TreeItem/TreeItem.js +0 -408
  171. package/modern/TreeItem/TreeItem.types.d.ts +0 -107
  172. package/modern/TreeItem/TreeItem.types.js +0 -1
  173. package/modern/TreeItem/index.d.ts +0 -4
  174. package/modern/TreeItem/index.js +0 -2
  175. package/modern/TreeItem/treeItemClasses.d.ts +0 -55
  176. package/modern/TreeItem/treeItemClasses.js +0 -8
  177. package/modern/TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.d.ts +0 -7
  178. package/modern/TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.js +0 -74
  179. package/modern/TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.types.d.ts +0 -6
  180. package/modern/TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.types.js +0 -1
  181. package/modern/TreeItemDragAndDropOverlay/index.d.ts +0 -2
  182. package/modern/TreeItemDragAndDropOverlay/index.js +0 -1
  183. package/modern/TreeItemIcon/TreeItemIcon.d.ts +0 -7
  184. package/modern/TreeItemIcon/TreeItemIcon.js +0 -74
  185. package/modern/TreeItemIcon/TreeItemIcon.types.d.ts +0 -40
  186. package/modern/TreeItemIcon/TreeItemIcon.types.js +0 -1
  187. package/modern/TreeItemIcon/index.d.ts +0 -2
  188. package/modern/TreeItemIcon/index.js +0 -1
  189. package/modern/TreeItemLabelInput/TreeItemLabelInput.d.ts +0 -5
  190. package/modern/TreeItemLabelInput/TreeItemLabelInput.js +0 -24
  191. package/modern/TreeItemLabelInput/TreeItemLabelInput.types.d.ts +0 -14
  192. package/modern/TreeItemLabelInput/TreeItemLabelInput.types.js +0 -1
  193. package/modern/TreeItemLabelInput/index.d.ts +0 -2
  194. package/modern/TreeItemLabelInput/index.js +0 -1
  195. package/modern/TreeItemProvider/TreeItemProvider.d.ts +0 -7
  196. package/modern/TreeItemProvider/TreeItemProvider.js +0 -45
  197. package/modern/TreeItemProvider/TreeItemProvider.types.d.ts +0 -7
  198. package/modern/TreeItemProvider/TreeItemProvider.types.js +0 -1
  199. package/modern/TreeItemProvider/index.d.ts +0 -2
  200. package/modern/TreeItemProvider/index.js +0 -1
  201. package/modern/hooks/index.d.ts +0 -3
  202. package/modern/hooks/index.js +0 -3
  203. package/modern/hooks/useTreeItemModel.d.ts +0 -2
  204. package/modern/hooks/useTreeItemModel.js +0 -11
  205. package/modern/hooks/useTreeItemUtils/index.d.ts +0 -1
  206. package/modern/hooks/useTreeItemUtils/index.js +0 -1
  207. package/modern/hooks/useTreeItemUtils/useTreeItemUtils.d.ts +0 -42
  208. package/modern/hooks/useTreeItemUtils/useTreeItemUtils.js +0 -165
  209. package/modern/hooks/useTreeViewApiRef.d.ts +0 -7
  210. package/modern/hooks/useTreeViewApiRef.js +0 -7
  211. package/modern/icons/icons.d.ts +0 -6
  212. package/modern/icons/icons.js +0 -9
  213. package/modern/icons/index.d.ts +0 -1
  214. package/modern/icons/index.js +0 -1
  215. package/modern/index.d.ts +0 -12
  216. package/modern/index.js +0 -22
  217. package/modern/internals/TreeViewItemDepthContext/TreeViewItemDepthContext.d.ts +0 -5
  218. package/modern/internals/TreeViewItemDepthContext/TreeViewItemDepthContext.js +0 -5
  219. package/modern/internals/TreeViewItemDepthContext/index.d.ts +0 -1
  220. package/modern/internals/TreeViewItemDepthContext/index.js +0 -1
  221. package/modern/internals/TreeViewProvider/TreeViewChildrenItemProvider.d.ts +0 -17
  222. package/modern/internals/TreeViewProvider/TreeViewChildrenItemProvider.js +0 -49
  223. package/modern/internals/TreeViewProvider/TreeViewContext.d.ts +0 -8
  224. package/modern/internals/TreeViewProvider/TreeViewContext.js +0 -15
  225. package/modern/internals/TreeViewProvider/TreeViewProvider.d.ts +0 -9
  226. package/modern/internals/TreeViewProvider/TreeViewProvider.js +0 -32
  227. package/modern/internals/TreeViewProvider/TreeViewProvider.types.d.ts +0 -21
  228. package/modern/internals/TreeViewProvider/TreeViewProvider.types.js +0 -1
  229. package/modern/internals/TreeViewProvider/TreeViewStyleContext.d.ts +0 -33
  230. package/modern/internals/TreeViewProvider/TreeViewStyleContext.js +0 -13
  231. package/modern/internals/TreeViewProvider/index.d.ts +0 -3
  232. package/modern/internals/TreeViewProvider/index.js +0 -2
  233. package/modern/internals/components/RichTreeViewItems.d.ts +0 -32
  234. package/modern/internals/components/RichTreeViewItems.js +0 -68
  235. package/modern/internals/corePlugins/corePlugins.d.ts +0 -9
  236. package/modern/internals/corePlugins/corePlugins.js +0 -8
  237. package/modern/internals/corePlugins/index.d.ts +0 -2
  238. package/modern/internals/corePlugins/index.js +0 -1
  239. package/modern/internals/corePlugins/useTreeViewId/index.d.ts +0 -2
  240. package/modern/internals/corePlugins/useTreeViewId/index.js +0 -1
  241. package/modern/internals/corePlugins/useTreeViewId/useTreeViewId.d.ts +0 -3
  242. package/modern/internals/corePlugins/useTreeViewId/useTreeViewId.js +0 -39
  243. package/modern/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.d.ts +0 -36
  244. package/modern/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.js +0 -9
  245. package/modern/internals/corePlugins/useTreeViewId/useTreeViewId.types.d.ts +0 -20
  246. package/modern/internals/corePlugins/useTreeViewId/useTreeViewId.types.js +0 -1
  247. package/modern/internals/corePlugins/useTreeViewId/useTreeViewId.utils.d.ts +0 -21
  248. package/modern/internals/corePlugins/useTreeViewId/useTreeViewId.utils.js +0 -26
  249. package/modern/internals/corePlugins/useTreeViewInstanceEvents/index.d.ts +0 -2
  250. package/modern/internals/corePlugins/useTreeViewInstanceEvents/index.js +0 -1
  251. package/modern/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.d.ts +0 -3
  252. package/modern/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.js +0 -29
  253. package/modern/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.types.d.ts +0 -22
  254. package/modern/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.types.js +0 -1
  255. package/modern/internals/corePlugins/useTreeViewOptionalPlugins/index.d.ts +0 -2
  256. package/modern/internals/corePlugins/useTreeViewOptionalPlugins/index.js +0 -1
  257. package/modern/internals/corePlugins/useTreeViewOptionalPlugins/useTreeViewOptionalPlugins.d.ts +0 -3
  258. package/modern/internals/corePlugins/useTreeViewOptionalPlugins/useTreeViewOptionalPlugins.js +0 -12
  259. package/modern/internals/corePlugins/useTreeViewOptionalPlugins/useTreeViewOptionalPlugins.types.d.ts +0 -8
  260. package/modern/internals/corePlugins/useTreeViewOptionalPlugins/useTreeViewOptionalPlugins.types.js +0 -1
  261. package/modern/internals/hooks/useInstanceEventHandler.d.ts +0 -15
  262. package/modern/internals/hooks/useInstanceEventHandler.js +0 -77
  263. package/modern/internals/hooks/useLazyRef.d.ts +0 -1
  264. package/modern/internals/hooks/useLazyRef.js +0 -1
  265. package/modern/internals/hooks/useOnMount.d.ts +0 -1
  266. package/modern/internals/hooks/useOnMount.js +0 -1
  267. package/modern/internals/hooks/useSelector.d.ts +0 -4
  268. package/modern/internals/hooks/useSelector.js +0 -9
  269. package/modern/internals/hooks/useTimeout.d.ts +0 -1
  270. package/modern/internals/hooks/useTimeout.js +0 -1
  271. package/modern/internals/index.d.ts +0 -34
  272. package/modern/internals/index.js +0 -24
  273. package/modern/internals/models/events.d.ts +0 -9
  274. package/modern/internals/models/events.js +0 -1
  275. package/modern/internals/models/helpers.d.ts +0 -7
  276. package/modern/internals/models/helpers.js +0 -1
  277. package/modern/internals/models/index.d.ts +0 -4
  278. package/modern/internals/models/index.js +0 -4
  279. package/modern/internals/models/itemPlugin.d.ts +0 -43
  280. package/modern/internals/models/itemPlugin.js +0 -1
  281. package/modern/internals/models/plugin.d.ts +0 -151
  282. package/modern/internals/models/plugin.js +0 -1
  283. package/modern/internals/models/treeView.d.ts +0 -32
  284. package/modern/internals/models/treeView.js +0 -1
  285. package/modern/internals/plugins/useTreeViewExpansion/index.d.ts +0 -2
  286. package/modern/internals/plugins/useTreeViewExpansion/index.js +0 -1
  287. package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.d.ts +0 -3
  288. package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +0 -134
  289. package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.d.ts +0 -184
  290. package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.js +0 -24
  291. package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +0 -102
  292. package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.js +0 -1
  293. package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.utils.d.ts +0 -7
  294. package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.utils.js +0 -19
  295. package/modern/internals/plugins/useTreeViewFocus/index.d.ts +0 -2
  296. package/modern/internals/plugins/useTreeViewFocus/index.js +0 -1
  297. package/modern/internals/plugins/useTreeViewFocus/useTreeViewFocus.d.ts +0 -3
  298. package/modern/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +0 -135
  299. package/modern/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.d.ts +0 -182
  300. package/modern/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.js +0 -34
  301. package/modern/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.d.ts +0 -45
  302. package/modern/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.js +0 -1
  303. package/modern/internals/plugins/useTreeViewIcons/index.d.ts +0 -2
  304. package/modern/internals/plugins/useTreeViewIcons/index.js +0 -1
  305. package/modern/internals/plugins/useTreeViewIcons/useTreeViewIcons.d.ts +0 -3
  306. package/modern/internals/plugins/useTreeViewIcons/useTreeViewIcons.js +0 -24
  307. package/modern/internals/plugins/useTreeViewIcons/useTreeViewIcons.types.d.ts +0 -42
  308. package/modern/internals/plugins/useTreeViewIcons/useTreeViewIcons.types.js +0 -1
  309. package/modern/internals/plugins/useTreeViewItemCustomization/index.d.ts +0 -2
  310. package/modern/internals/plugins/useTreeViewItemCustomization/index.js +0 -1
  311. package/modern/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.d.ts +0 -3
  312. package/modern/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.js +0 -24
  313. package/modern/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.types.d.ts +0 -42
  314. package/modern/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.types.js +0 -1
  315. package/modern/internals/plugins/useTreeViewItems/index.d.ts +0 -3
  316. package/modern/internals/plugins/useTreeViewItems/index.js +0 -2
  317. package/modern/internals/plugins/useTreeViewItems/useTreeViewItems.d.ts +0 -3
  318. package/modern/internals/plugins/useTreeViewItems/useTreeViewItems.js +0 -325
  319. package/modern/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.d.ts +0 -1058
  320. package/modern/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +0 -113
  321. package/modern/internals/plugins/useTreeViewItems/useTreeViewItems.types.d.ts +0 -205
  322. package/modern/internals/plugins/useTreeViewItems/useTreeViewItems.types.js +0 -1
  323. package/modern/internals/plugins/useTreeViewItems/useTreeViewItems.utils.d.ts +0 -4
  324. package/modern/internals/plugins/useTreeViewItems/useTreeViewItems.utils.js +0 -8
  325. package/modern/internals/plugins/useTreeViewJSXItems/index.d.ts +0 -2
  326. package/modern/internals/plugins/useTreeViewJSXItems/index.js +0 -1
  327. package/modern/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.d.ts +0 -3
  328. package/modern/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +0 -183
  329. package/modern/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.types.d.ts +0 -35
  330. package/modern/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.types.js +0 -1
  331. package/modern/internals/plugins/useTreeViewKeyboardNavigation/index.d.ts +0 -2
  332. package/modern/internals/plugins/useTreeViewKeyboardNavigation/index.js +0 -1
  333. package/modern/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.d.ts +0 -3
  334. package/modern/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +0 -273
  335. package/modern/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +0 -30
  336. package/modern/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.js +0 -1
  337. package/modern/internals/plugins/useTreeViewLabel/index.d.ts +0 -2
  338. package/modern/internals/plugins/useTreeViewLabel/index.js +0 -1
  339. package/modern/internals/plugins/useTreeViewLabel/useTreeViewLabel.d.ts +0 -3
  340. package/modern/internals/plugins/useTreeViewLabel/useTreeViewLabel.itemPlugin.d.ts +0 -2
  341. package/modern/internals/plugins/useTreeViewLabel/useTreeViewLabel.itemPlugin.js +0 -72
  342. package/modern/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +0 -73
  343. package/modern/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.d.ts +0 -68
  344. package/modern/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.js +0 -24
  345. package/modern/internals/plugins/useTreeViewLabel/useTreeViewLabel.types.d.ts +0 -60
  346. package/modern/internals/plugins/useTreeViewLabel/useTreeViewLabel.types.js +0 -1
  347. package/modern/internals/plugins/useTreeViewLazyLoading/index.d.ts +0 -1
  348. package/modern/internals/plugins/useTreeViewLazyLoading/index.js +0 -1
  349. package/modern/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.d.ts +0 -247
  350. package/modern/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.js +0 -27
  351. package/modern/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.d.ts +0 -82
  352. package/modern/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.js +0 -1
  353. package/modern/internals/plugins/useTreeViewSelection/index.d.ts +0 -2
  354. package/modern/internals/plugins/useTreeViewSelection/index.js +0 -1
  355. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.d.ts +0 -3
  356. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.d.ts +0 -2
  357. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +0 -80
  358. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +0 -234
  359. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.d.ts +0 -363
  360. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.js +0 -46
  361. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +0 -145
  362. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.js +0 -1
  363. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.d.ts +0 -38
  364. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +0 -126
  365. package/modern/internals/useTreeView/extractPluginParamsFromProps.d.ts +0 -22
  366. package/modern/internals/useTreeView/extractPluginParamsFromProps.js +0 -46
  367. package/modern/internals/useTreeView/index.d.ts +0 -1
  368. package/modern/internals/useTreeView/index.js +0 -1
  369. package/modern/internals/useTreeView/useTreeView.d.ts +0 -9
  370. package/modern/internals/useTreeView/useTreeView.js +0 -114
  371. package/modern/internals/useTreeView/useTreeView.types.d.ts +0 -23
  372. package/modern/internals/useTreeView/useTreeView.types.js +0 -1
  373. package/modern/internals/useTreeView/useTreeViewBuildContext.d.ts +0 -18
  374. package/modern/internals/useTreeView/useTreeViewBuildContext.js +0 -101
  375. package/modern/internals/useTreeView/useTreeViewModels.d.ts +0 -7
  376. package/modern/internals/useTreeView/useTreeViewModels.js +0 -62
  377. package/modern/internals/useTreeView/useTreeViewPlugins.d.ts +0 -0
  378. package/modern/internals/useTreeView/useTreeViewPlugins.js +0 -0
  379. package/modern/internals/utils/TreeViewStore.d.ts +0 -12
  380. package/modern/internals/utils/TreeViewStore.js +0 -24
  381. package/modern/internals/utils/cleanupTracking/CleanupTracking.d.ts +0 -9
  382. package/modern/internals/utils/cleanupTracking/CleanupTracking.js +0 -1
  383. package/modern/internals/utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking.d.ts +0 -7
  384. package/modern/internals/utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking.js +0 -18
  385. package/modern/internals/utils/cleanupTracking/TimerBasedCleanupTracking.d.ts +0 -9
  386. package/modern/internals/utils/cleanupTracking/TimerBasedCleanupTracking.js +0 -38
  387. package/modern/internals/utils/plugins.d.ts +0 -2
  388. package/modern/internals/utils/plugins.js +0 -4
  389. package/modern/internals/utils/publishTreeViewEvent.d.ts +0 -5
  390. package/modern/internals/utils/publishTreeViewEvent.js +0 -3
  391. package/modern/internals/utils/selectors.d.ts +0 -16
  392. package/modern/internals/utils/selectors.js +0 -46
  393. package/modern/internals/utils/tree.d.ts +0 -32
  394. package/modern/internals/utils/tree.js +0 -203
  395. package/modern/internals/utils/utils.d.ts +0 -2
  396. package/modern/internals/utils/utils.js +0 -17
  397. package/modern/internals/zero-styled/index.d.ts +0 -3
  398. package/modern/internals/zero-styled/index.js +0 -7
  399. package/modern/models/events.d.ts +0 -4
  400. package/modern/models/events.js +0 -1
  401. package/modern/models/index.d.ts +0 -3
  402. package/modern/models/index.js +0 -5
  403. package/modern/models/items.d.ts +0 -13
  404. package/modern/models/items.js +0 -1
  405. package/modern/package.json +0 -1
  406. package/modern/themeAugmentation/components.d.ts +0 -21
  407. package/modern/themeAugmentation/index.d.ts +0 -3
  408. package/modern/themeAugmentation/index.js +0 -0
  409. package/modern/themeAugmentation/overrides.d.ts +0 -16
  410. package/modern/themeAugmentation/props.d.ts +0 -14
  411. package/modern/useTreeItem/index.d.ts +0 -2
  412. package/modern/useTreeItem/index.js +0 -1
  413. package/modern/useTreeItem/useTreeItem.d.ts +0 -2
  414. package/modern/useTreeItem/useTreeItem.js +0 -282
  415. package/modern/useTreeItem/useTreeItem.types.d.ts +0 -201
  416. package/modern/useTreeItem/useTreeItem.types.js +0 -1
  417. package/modern/utils/cache.d.ts +0 -38
  418. package/modern/utils/cache.js +0 -31
  419. package/modern/utils/index.d.ts +0 -1
  420. package/modern/utils/index.js +0 -1
  421. package/tsconfig.build.tsbuildinfo +0 -1
@@ -1,4 +1,8 @@
1
1
  import { createSelector } from "../../utils/selectors.js";
2
+ import { selectorSelectionModelArray } from "../useTreeViewSelection/useTreeViewSelection.selectors.js";
3
+ import { selectorDisabledItemFocusable, selectorItemMetaLookup, selectorItemOrderedChildrenIds } from "../useTreeViewItems/useTreeViewItems.selectors.js";
4
+ import { isItemDisabled } from "../useTreeViewItems/useTreeViewItems.utils.js";
5
+ import { selectorExpandedItemsMap } from "../useTreeViewExpansion/useTreeViewExpansion.selectors.js";
2
6
  const selectorTreeViewFocusState = state => state.focus;
3
7
 
4
8
  /**
@@ -8,7 +12,23 @@ const selectorTreeViewFocusState = state => state.focus;
8
12
  * @param {TreeViewState<[UseTreeViewFocusSignature]>} state The state of the tree view.
9
13
  * @returns {TreeViewItemId | null} The id of the item that should be sequentially focusable.
10
14
  */
11
- export const selectorDefaultFocusableItemId = createSelector(selectorTreeViewFocusState, focus => focus.defaultFocusableItemId);
15
+ export const selectorDefaultFocusableItemId = createSelector([selectorSelectionModelArray, selectorExpandedItemsMap, selectorItemMetaLookup, selectorDisabledItemFocusable, state => selectorItemOrderedChildrenIds(state, null)], (selectedItems, expandedItemsMap, itemMetaLookup, disabledItemsFocusable, orderedRootItemIds) => {
16
+ const firstSelectedItem = selectedItems.find(itemId => {
17
+ if (!disabledItemsFocusable && isItemDisabled(itemMetaLookup, itemId)) {
18
+ return false;
19
+ }
20
+ const itemMeta = itemMetaLookup[itemId];
21
+ return itemMeta && (itemMeta.parentId == null || expandedItemsMap.has(itemMeta.parentId));
22
+ });
23
+ if (firstSelectedItem != null) {
24
+ return firstSelectedItem;
25
+ }
26
+ const firstNavigableItem = orderedRootItemIds.find(itemId => disabledItemsFocusable || !isItemDisabled(itemMetaLookup, itemId));
27
+ if (firstNavigableItem != null) {
28
+ return firstNavigableItem;
29
+ }
30
+ return null;
31
+ });
12
32
 
13
33
  /**
14
34
  * Check if an item is the default focusable item.
@@ -32,7 +32,6 @@ export type UseTreeViewFocusDefaultizedParameters = UseTreeViewFocusParameters;
32
32
  export interface UseTreeViewFocusState {
33
33
  focus: {
34
34
  focusedItemId: string | null;
35
- defaultFocusableItemId: string | null;
36
35
  };
37
36
  }
38
37
  export type UseTreeViewFocusSignature = TreeViewPluginSignature<{
@@ -909,7 +909,14 @@ export declare const selectorItemDepth: ((state: any, itemId: string | null) =>
909
909
  argsMemoize: typeof import("reselect").weakMapMemoize;
910
910
  memoize: typeof import("reselect").weakMapMemoize;
911
911
  };
912
- export declare const selectorCanItemBeFocused: ((state: any, itemId: string) => boolean) & {
912
+ /**
913
+ * Check if the disabled items are focusable.
914
+ * @param {TreeViewState<[UseTreeViewItemsSignature]>} state The state of the tree view.
915
+ * @returns {boolean} Whether the disabled items are focusable.
916
+ */
917
+ export declare const selectorDisabledItemFocusable: ((state: import("../../corePlugins/useTreeViewId/useTreeViewId.types").UseTreeViewIdState & import("./useTreeViewItems.types").UseTreeViewItemsState<import("../../..").TreeViewDefaultItemModelProperties> & Partial<{}> & {
918
+ cacheKey: import("../../models").TreeViewStateCacheKey;
919
+ }) => boolean) & {
913
920
  clearCache: () => void;
914
921
  resultsCount: () => number;
915
922
  resetResultsCount: () => void;
@@ -932,7 +939,7 @@ export declare const selectorCanItemBeFocused: ((state: any, itemId: string) =>
932
939
  };
933
940
  loading: boolean;
934
941
  error: Error | null;
935
- }, resultFuncArgs_1: boolean) => boolean;
942
+ }) => boolean;
936
943
  memoizedResultFunc: ((resultFuncArgs_0: {
937
944
  disabledItemsFocusable: boolean;
938
945
  itemModelLookup: {
@@ -951,13 +958,92 @@ export declare const selectorCanItemBeFocused: ((state: any, itemId: string) =>
951
958
  };
952
959
  loading: boolean;
953
960
  error: Error | null;
954
- }, resultFuncArgs_1: boolean) => boolean) & {
961
+ }) => boolean) & {
962
+ clearCache: () => void;
963
+ resultsCount: () => number;
964
+ resetResultsCount: () => void;
965
+ };
966
+ lastResult: () => boolean;
967
+ dependencies: [TreeViewRootSelector<UseTreeViewItemsSignature>];
968
+ recomputations: () => number;
969
+ resetRecomputations: () => void;
970
+ dependencyRecomputations: () => number;
971
+ resetDependencyRecomputations: () => void;
972
+ } & {
973
+ argsMemoize: typeof import("reselect").weakMapMemoize;
974
+ memoize: typeof import("reselect").weakMapMemoize;
975
+ };
976
+ export declare const selectorCanItemBeFocused: ((state: any, itemId: string) => boolean) & {
977
+ clearCache: () => void;
978
+ resultsCount: () => number;
979
+ resetResultsCount: () => void;
980
+ } & {
981
+ resultFunc: (resultFuncArgs_0: boolean, resultFuncArgs_1: boolean) => boolean;
982
+ memoizedResultFunc: ((resultFuncArgs_0: boolean, resultFuncArgs_1: boolean) => boolean) & {
955
983
  clearCache: () => void;
956
984
  resultsCount: () => number;
957
985
  resetResultsCount: () => void;
958
986
  };
959
987
  lastResult: () => boolean;
960
- dependencies: [TreeViewRootSelector<UseTreeViewItemsSignature>, ((state: any, itemId: string) => boolean) & {
988
+ dependencies: [((state: import("../../corePlugins/useTreeViewId/useTreeViewId.types").UseTreeViewIdState & import("./useTreeViewItems.types").UseTreeViewItemsState<import("../../..").TreeViewDefaultItemModelProperties> & Partial<{}> & {
989
+ cacheKey: import("../../models").TreeViewStateCacheKey;
990
+ }) => boolean) & {
991
+ clearCache: () => void;
992
+ resultsCount: () => number;
993
+ resetResultsCount: () => void;
994
+ } & {
995
+ resultFunc: (resultFuncArgs_0: {
996
+ disabledItemsFocusable: boolean;
997
+ itemModelLookup: {
998
+ [itemId: string]: import("../../..").TreeViewBaseItem<import("../../..").TreeViewDefaultItemModelProperties>;
999
+ };
1000
+ itemMetaLookup: {
1001
+ [itemId: string]: TreeViewItemMeta;
1002
+ };
1003
+ itemOrderedChildrenIdsLookup: {
1004
+ [parentItemId: string]: string[];
1005
+ };
1006
+ itemChildrenIndexesLookup: {
1007
+ [parentItemId: string]: {
1008
+ [itemId: string]: number;
1009
+ };
1010
+ };
1011
+ loading: boolean;
1012
+ error: Error | null;
1013
+ }) => boolean;
1014
+ memoizedResultFunc: ((resultFuncArgs_0: {
1015
+ disabledItemsFocusable: boolean;
1016
+ itemModelLookup: {
1017
+ [itemId: string]: import("../../..").TreeViewBaseItem<import("../../..").TreeViewDefaultItemModelProperties>;
1018
+ };
1019
+ itemMetaLookup: {
1020
+ [itemId: string]: TreeViewItemMeta;
1021
+ };
1022
+ itemOrderedChildrenIdsLookup: {
1023
+ [parentItemId: string]: string[];
1024
+ };
1025
+ itemChildrenIndexesLookup: {
1026
+ [parentItemId: string]: {
1027
+ [itemId: string]: number;
1028
+ };
1029
+ };
1030
+ loading: boolean;
1031
+ error: Error | null;
1032
+ }) => boolean) & {
1033
+ clearCache: () => void;
1034
+ resultsCount: () => number;
1035
+ resetResultsCount: () => void;
1036
+ };
1037
+ lastResult: () => boolean;
1038
+ dependencies: [TreeViewRootSelector<UseTreeViewItemsSignature>];
1039
+ recomputations: () => number;
1040
+ resetRecomputations: () => void;
1041
+ dependencyRecomputations: () => number;
1042
+ resetDependencyRecomputations: () => void;
1043
+ } & {
1044
+ argsMemoize: typeof import("reselect").weakMapMemoize;
1045
+ memoize: typeof import("reselect").weakMapMemoize;
1046
+ }, ((state: any, itemId: string) => boolean) & {
961
1047
  clearCache: () => void;
962
1048
  resultsCount: () => number;
963
1049
  resetResultsCount: () => void;
@@ -1,5 +1,5 @@
1
1
  import { createSelector } from "../../utils/selectors.js";
2
- import { TREE_VIEW_ROOT_PARENT_ID } from "./useTreeViewItems.utils.js";
2
+ import { isItemDisabled, TREE_VIEW_ROOT_PARENT_ID } from "./useTreeViewItems.utils.js";
3
3
  const selectorTreeViewItemsState = state => state.items;
4
4
 
5
5
  /**
@@ -54,27 +54,7 @@ export const selectorItemMeta = createSelector([selectorItemMetaLookup, (_, item
54
54
  * @param {TreeViewItemId} itemId The id of the item to check.
55
55
  * @returns {boolean} `true` if the item is disabled, `false` otherwise.
56
56
  */
57
- export const selectorIsItemDisabled = createSelector([selectorItemMetaLookup, (_, itemId) => itemId], (itemMetaLookup, itemId) => {
58
- if (itemId == null) {
59
- return false;
60
- }
61
- let itemMeta = itemMetaLookup[itemId];
62
-
63
- // This can be called before the item has been added to the item map.
64
- if (!itemMeta) {
65
- return false;
66
- }
67
- if (itemMeta.disabled) {
68
- return true;
69
- }
70
- while (itemMeta.parentId != null) {
71
- itemMeta = itemMetaLookup[itemMeta.parentId];
72
- if (itemMeta.disabled) {
73
- return true;
74
- }
75
- }
76
- return false;
77
- });
57
+ export const selectorIsItemDisabled = createSelector([selectorItemMetaLookup, (_, itemId) => itemId], isItemDisabled);
78
58
 
79
59
  /**
80
60
  * Get the index of an item in its parent's children.
@@ -105,9 +85,16 @@ export const selectorItemParentId = createSelector([selectorItemMeta], itemMeta
105
85
  * @returns {number} The depth of the item.
106
86
  */
107
87
  export const selectorItemDepth = createSelector([selectorItemMeta], itemMeta => itemMeta?.depth ?? 0);
108
- export const selectorCanItemBeFocused = createSelector([selectorTreeViewItemsState, selectorIsItemDisabled], (itemsState, isItemDisabled) => {
109
- if (itemsState.disabledItemsFocusable) {
88
+
89
+ /**
90
+ * Check if the disabled items are focusable.
91
+ * @param {TreeViewState<[UseTreeViewItemsSignature]>} state The state of the tree view.
92
+ * @returns {boolean} Whether the disabled items are focusable.
93
+ */
94
+ export const selectorDisabledItemFocusable = createSelector([selectorTreeViewItemsState], itemsState => itemsState.disabledItemsFocusable);
95
+ export const selectorCanItemBeFocused = createSelector([selectorDisabledItemFocusable, selectorIsItemDisabled], (disabledItemsFocusable, isDisabled) => {
96
+ if (disabledItemsFocusable) {
110
97
  return true;
111
98
  }
112
- return !isItemDisabled;
99
+ return !isDisabled;
113
100
  });
@@ -1,4 +1,15 @@
1
+ import { TreeViewItemId } from "../../../models/index.js";
2
+ import { TreeViewItemMeta } from "../../models/index.js";
1
3
  export declare const TREE_VIEW_ROOT_PARENT_ID = "__TREE_VIEW_ROOT_PARENT_ID__";
2
4
  export declare const buildSiblingIndexes: (siblings: string[]) => {
3
5
  [itemId: string]: number;
4
- };
6
+ };
7
+ /**
8
+ * Check if an item is disabled.
9
+ * This method should only be used in selectors that are checking if several items are disabled.
10
+ * Otherwise, use the `selectorIsItemDisabled` selector.
11
+ * @returns
12
+ */
13
+ export declare const isItemDisabled: (itemMetaLookup: {
14
+ [itemId: string]: TreeViewItemMeta;
15
+ }, itemId: TreeViewItemId) => boolean;
@@ -5,4 +5,35 @@ export const buildSiblingIndexes = siblings => {
5
5
  siblingsIndexLookup[childId] = index;
6
6
  });
7
7
  return siblingsIndexLookup;
8
+ };
9
+
10
+ /**
11
+ * Check if an item is disabled.
12
+ * This method should only be used in selectors that are checking if several items are disabled.
13
+ * Otherwise, use the `selectorIsItemDisabled` selector.
14
+ * @returns
15
+ */
16
+ export const isItemDisabled = (itemMetaLookup, itemId) => {
17
+ if (itemId == null) {
18
+ return false;
19
+ }
20
+ let itemMeta = itemMetaLookup[itemId];
21
+
22
+ // This can be called before the item has been added to the item map.
23
+ if (!itemMeta) {
24
+ return false;
25
+ }
26
+ if (itemMeta.disabled) {
27
+ return true;
28
+ }
29
+ while (itemMeta.parentId != null) {
30
+ itemMeta = itemMetaLookup[itemMeta.parentId];
31
+ if (!itemMeta) {
32
+ return false;
33
+ }
34
+ if (itemMeta.disabled) {
35
+ return true;
36
+ }
37
+ }
38
+ return false;
8
39
  };
@@ -36,10 +36,9 @@ export const useTreeViewLabel = ({
36
36
  }
37
37
  };
38
38
  useEnhancedEffect(() => {
39
- const isItemEditable = params.isItemEditable;
40
39
  store.update(prevState => _extends({}, prevState, {
41
40
  label: _extends({}, prevState.label, {
42
- isItemEditable: typeof isItemEditable === 'boolean' ? () => isItemEditable : isItemEditable
41
+ isItemEditable: params.isItemEditable
43
42
  })
44
43
  }));
45
44
  }, [store, params.isItemEditable]);
@@ -59,11 +58,9 @@ useTreeViewLabel.getDefaultizedParams = ({
59
58
  }) => _extends({}, params, {
60
59
  isItemEditable: params.isItemEditable ?? false
61
60
  });
62
- useTreeViewLabel.getInitialState = ({
63
- isItemEditable
64
- }) => ({
61
+ useTreeViewLabel.getInitialState = params => ({
65
62
  label: {
66
- isItemEditable: typeof isItemEditable === 'boolean' ? () => isItemEditable : isItemEditable,
63
+ isItemEditable: params.isItemEditable,
67
64
  editedItemId: null
68
65
  }
69
66
  });
@@ -12,11 +12,11 @@ export declare const selectorIsItemEditable: ((state: any, itemId: string) => bo
12
12
  resetResultsCount: () => void;
13
13
  } & {
14
14
  resultFunc: (resultFuncArgs_0: {
15
- isItemEditable: (item: any) => boolean;
15
+ isItemEditable: ((item: any) => boolean) | boolean;
16
16
  editedItemId: string | null;
17
17
  } | undefined, resultFuncArgs_1: import("../../..").TreeViewBaseItem<import("../../..").TreeViewDefaultItemModelProperties>) => boolean;
18
18
  memoizedResultFunc: ((resultFuncArgs_0: {
19
- isItemEditable: (item: any) => boolean;
19
+ isItemEditable: ((item: any) => boolean) | boolean;
20
20
  editedItemId: string | null;
21
21
  } | undefined, resultFuncArgs_1: import("../../..").TreeViewBaseItem<import("../../..").TreeViewDefaultItemModelProperties>) => boolean) & {
22
22
  clearCache: () => void;
@@ -34,30 +34,64 @@ export declare const selectorIsItemEditable: ((state: any, itemId: string) => bo
34
34
  memoize: typeof import("reselect").weakMapMemoize;
35
35
  };
36
36
  /**
37
- * Check if an item is being edited.
37
+ * Check if the given item is being edited.
38
38
  * @param {TreeViewState<[UseTreeViewLabelSignature]>} state The state of the tree view.
39
39
  * @param {TreeViewItemId} itemId The id of the item to check.
40
40
  * @returns {boolean} `true` if the item is being edited, `false` otherwise.
41
41
  */
42
- export declare const selectorIsItemBeingEdited: ((state: any, itemId: string) => boolean) & {
42
+ export declare const selectorIsItemBeingEdited: ((state: any, itemId: string | null) => boolean) & {
43
+ clearCache: () => void;
44
+ resultsCount: () => number;
45
+ resetResultsCount: () => void;
46
+ } & {
47
+ resultFunc: (resultFuncArgs_0: {
48
+ isItemEditable: ((item: any) => boolean) | boolean;
49
+ editedItemId: string | null;
50
+ } | undefined, resultFuncArgs_1: string | null) => boolean;
51
+ memoizedResultFunc: ((resultFuncArgs_0: {
52
+ isItemEditable: ((item: any) => boolean) | boolean;
53
+ editedItemId: string | null;
54
+ } | undefined, resultFuncArgs_1: string | null) => boolean) & {
55
+ clearCache: () => void;
56
+ resultsCount: () => number;
57
+ resetResultsCount: () => void;
58
+ };
59
+ lastResult: () => boolean;
60
+ dependencies: [TreeViewRootSelector<UseTreeViewLabelSignature, true>, (_: any, itemId: string | null) => string | null];
61
+ recomputations: () => number;
62
+ resetRecomputations: () => void;
63
+ dependencyRecomputations: () => number;
64
+ resetDependencyRecomputations: () => void;
65
+ } & {
66
+ argsMemoize: typeof import("reselect").weakMapMemoize;
67
+ memoize: typeof import("reselect").weakMapMemoize;
68
+ };
69
+ /**
70
+ * Check if an item is being edited.
71
+ * @param {TreeViewState<[UseTreeViewLabelSignature]>} state The state of the tree view.
72
+ * @returns {boolean} `true` if an item is being edited, `false` otherwise.
73
+ */
74
+ export declare const selectorIsAnyItemBeingEdited: ((state: import("../../corePlugins/useTreeViewId/useTreeViewId.types").UseTreeViewIdState & Partial<import("./useTreeViewLabel.types").UseTreeViewLabelState> & {
75
+ cacheKey: import("../../models").TreeViewStateCacheKey;
76
+ }) => boolean) & {
43
77
  clearCache: () => void;
44
78
  resultsCount: () => number;
45
79
  resetResultsCount: () => void;
46
80
  } & {
47
81
  resultFunc: (resultFuncArgs_0: {
48
- isItemEditable: (item: any) => boolean;
82
+ isItemEditable: ((item: any) => boolean) | boolean;
49
83
  editedItemId: string | null;
50
- } | undefined, resultFuncArgs_1: string) => boolean;
84
+ } | undefined) => boolean;
51
85
  memoizedResultFunc: ((resultFuncArgs_0: {
52
- isItemEditable: (item: any) => boolean;
86
+ isItemEditable: ((item: any) => boolean) | boolean;
53
87
  editedItemId: string | null;
54
- } | undefined, resultFuncArgs_1: string) => boolean) & {
88
+ } | undefined) => boolean) & {
55
89
  clearCache: () => void;
56
90
  resultsCount: () => number;
57
91
  resetResultsCount: () => void;
58
92
  };
59
93
  lastResult: () => boolean;
60
- dependencies: [TreeViewRootSelector<UseTreeViewLabelSignature, true>, (_: any, itemId: string) => string];
94
+ dependencies: [TreeViewRootSelector<UseTreeViewLabelSignature, true>];
61
95
  recomputations: () => number;
62
96
  resetRecomputations: () => void;
63
97
  dependencyRecomputations: () => number;
@@ -12,13 +12,23 @@ export const selectorIsItemEditable = createSelector([selectorTreeViewLabelState
12
12
  if (!itemModel || !labelState) {
13
13
  return false;
14
14
  }
15
+ if (typeof labelState.isItemEditable === 'boolean') {
16
+ return labelState.isItemEditable;
17
+ }
15
18
  return labelState.isItemEditable(itemModel);
16
19
  });
17
20
 
18
21
  /**
19
- * Check if an item is being edited.
22
+ * Check if the given item is being edited.
20
23
  * @param {TreeViewState<[UseTreeViewLabelSignature]>} state The state of the tree view.
21
24
  * @param {TreeViewItemId} itemId The id of the item to check.
22
25
  * @returns {boolean} `true` if the item is being edited, `false` otherwise.
23
26
  */
24
- export const selectorIsItemBeingEdited = createSelector([selectorTreeViewLabelState, (_, itemId) => itemId], (labelState, itemId) => labelState?.editedItemId === itemId);
27
+ export const selectorIsItemBeingEdited = createSelector([selectorTreeViewLabelState, (_, itemId) => itemId], (labelState, itemId) => itemId ? labelState?.editedItemId === itemId : false);
28
+
29
+ /**
30
+ * Check if an item is being edited.
31
+ * @param {TreeViewState<[UseTreeViewLabelSignature]>} state The state of the tree view.
32
+ * @returns {boolean} `true` if an item is being edited, `false` otherwise.
33
+ */
34
+ export const selectorIsAnyItemBeingEdited = createSelector(selectorTreeViewLabelState, labelState => !!labelState?.editedItemId);
@@ -38,7 +38,7 @@ export interface UseTreeViewLabelParameters<R extends {}> {
38
38
  export type UseTreeViewLabelDefaultizedParameters<R extends {}> = DefaultizedProps<UseTreeViewLabelParameters<R>, 'isItemEditable'>;
39
39
  export interface UseTreeViewLabelState {
40
40
  label: {
41
- isItemEditable: (item: any) => boolean;
41
+ isItemEditable: ((item: any) => boolean) | boolean;
42
42
  editedItemId: string | null;
43
43
  };
44
44
  }
@@ -40,8 +40,8 @@ function selectorItemCheckboxStatus(state, itemId) {
40
40
  return {
41
41
  disabled: !isSelectionEnabledForItem,
42
42
  visible: isCheckboxSelectionEnabled,
43
- indeterminate: hasSelectedDescendant && hasUnSelectedDescendant || !hasUnSelectedDescendant,
44
- checked: selectorSelectionPropagationRules(state).parents ? hasSelectedDescendant : false
43
+ indeterminate: hasSelectedDescendant && hasUnSelectedDescendant,
44
+ checked: selectorSelectionPropagationRules(state).parents ? hasSelectedDescendant && !hasUnSelectedDescendant : false
45
45
  };
46
46
  }
47
47
  export const useTreeViewSelectionItemPlugin = ({
@@ -2,17 +2,23 @@ import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
3
  import useEnhancedEffect from '@mui/utils/useEnhancedEffect';
4
4
  import { findOrderInTremauxTree, getAllNavigableItems, getFirstNavigableItem, getLastNavigableItem, getNonDisabledItemsInRange } from "../../utils/tree.js";
5
- import { convertSelectedItemsToArray, propagateSelection, getAddedAndRemovedItems, getLookupFromArray, createSelectedItemsMap } from "./useTreeViewSelection.utils.js";
6
- import { selectorIsItemSelected, selectorIsMultiSelectEnabled, selectorIsSelectionEnabled } from "./useTreeViewSelection.selectors.js";
5
+ import { propagateSelection, getAddedAndRemovedItems, getLookupFromArray } from "./useTreeViewSelection.utils.js";
6
+ import { selectorIsItemSelected, selectorIsMultiSelectEnabled, selectorIsSelectionEnabled, selectorSelectionModel, selectorSelectionModelArray } from "./useTreeViewSelection.selectors.js";
7
7
  import { useTreeViewSelectionItemPlugin } from "./useTreeViewSelection.itemPlugin.js";
8
+ import { useAssertModelConsistency } from "../../utils/models.js";
8
9
  export const useTreeViewSelection = ({
9
10
  store,
10
- params,
11
- models
11
+ params
12
12
  }) => {
13
+ useAssertModelConsistency({
14
+ state: 'selectedItems',
15
+ controlled: params.selectedItems,
16
+ defaultValue: params.defaultSelectedItems
17
+ });
13
18
  const lastSelectedItem = React.useRef(null);
14
19
  const lastSelectedRange = React.useRef({});
15
20
  const setSelectedItems = (event, newModel, additionalItemsToPropagate) => {
21
+ const oldModel = selectorSelectionModel(store.value);
16
22
  let cleanModel;
17
23
  const isMultiSelectEnabled = selectorIsMultiSelectEnabled(store.value);
18
24
  if (isMultiSelectEnabled && (params.selectionPropagation.descendants || params.selectionPropagation.parents)) {
@@ -20,7 +26,7 @@ export const useTreeViewSelection = ({
20
26
  store,
21
27
  selectionPropagation: params.selectionPropagation,
22
28
  newModel: newModel,
23
- oldModel: models.selectedItems.value,
29
+ oldModel: oldModel,
24
30
  additionalItemsToPropagate
25
31
  });
26
32
  } else {
@@ -31,7 +37,7 @@ export const useTreeViewSelection = ({
31
37
  const changes = getAddedAndRemovedItems({
32
38
  store,
33
39
  newModel: cleanModel,
34
- oldModel: models.selectedItems.value
40
+ oldModel: oldModel
35
41
  });
36
42
  if (params.onItemSelectionToggle) {
37
43
  changes.added.forEach(itemId => {
@@ -41,19 +47,23 @@ export const useTreeViewSelection = ({
41
47
  params.onItemSelectionToggle(event, itemId, false);
42
48
  });
43
49
  }
44
- } else if (params.onItemSelectionToggle && cleanModel !== models.selectedItems.value) {
45
- if (models.selectedItems.value != null) {
46
- params.onItemSelectionToggle(event, models.selectedItems.value, false);
50
+ } else if (params.onItemSelectionToggle && cleanModel !== oldModel) {
51
+ if (oldModel != null) {
52
+ params.onItemSelectionToggle(event, oldModel, false);
47
53
  }
48
54
  if (cleanModel != null) {
49
55
  params.onItemSelectionToggle(event, cleanModel, true);
50
56
  }
51
57
  }
52
58
  }
53
- if (params.onSelectedItemsChange) {
54
- params.onSelectedItemsChange(event, cleanModel);
59
+ if (params.selectedItems === undefined) {
60
+ store.update(prevState => _extends({}, prevState, {
61
+ selection: _extends({}, prevState.selection, {
62
+ selectedItems: cleanModel
63
+ })
64
+ }));
55
65
  }
56
- models.selectedItems.setControlledValue(cleanModel);
66
+ params.onSelectedItemsChange?.(event, cleanModel);
57
67
  };
58
68
  const setItemSelection = ({
59
69
  itemId,
@@ -67,14 +77,14 @@ export const useTreeViewSelection = ({
67
77
  let newSelected;
68
78
  const isMultiSelectEnabled = selectorIsMultiSelectEnabled(store.value);
69
79
  if (keepExistingSelection) {
70
- const cleanSelectedItems = convertSelectedItemsToArray(models.selectedItems.value);
80
+ const oldSelected = selectorSelectionModelArray(store.value);
71
81
  const isSelectedBefore = selectorIsItemSelected(store.value, itemId);
72
82
  if (isSelectedBefore && (shouldBeSelected === false || shouldBeSelected == null)) {
73
- newSelected = cleanSelectedItems.filter(id => id !== itemId);
83
+ newSelected = oldSelected.filter(id => id !== itemId);
74
84
  } else if (!isSelectedBefore && (shouldBeSelected === true || shouldBeSelected == null)) {
75
- newSelected = [itemId].concat(cleanSelectedItems);
85
+ newSelected = [itemId].concat(oldSelected);
76
86
  } else {
77
- newSelected = cleanSelectedItems;
87
+ newSelected = oldSelected;
78
88
  }
79
89
  } else {
80
90
  // eslint-disable-next-line no-lonely-if
@@ -96,7 +106,7 @@ export const useTreeViewSelection = ({
96
106
  if (!isMultiSelectEnabled) {
97
107
  return;
98
108
  }
99
- let newSelectedItems = convertSelectedItemsToArray(models.selectedItems.value).slice();
109
+ let newSelectedItems = selectorSelectionModelArray(store.value).slice();
100
110
 
101
111
  // If the last selection was a range selection,
102
112
  // remove the items that were part of the last range from the model
@@ -138,7 +148,7 @@ export const useTreeViewSelection = ({
138
148
  if (!isMultiSelectEnabled) {
139
149
  return;
140
150
  }
141
- let newSelectedItems = convertSelectedItemsToArray(models.selectedItems.value).slice();
151
+ let newSelectedItems = selectorSelectionModelArray(store.value).slice();
142
152
  if (Object.keys(lastSelectedRange.current).length === 0) {
143
153
  newSelectedItems.push(nextItem);
144
154
  lastSelectedRange.current = {
@@ -162,9 +172,7 @@ export const useTreeViewSelection = ({
162
172
  useEnhancedEffect(() => {
163
173
  store.update(prevState => _extends({}, prevState, {
164
174
  selection: {
165
- rawSelectedItems: models.selectedItems.value,
166
- // Only re-compute the map when the model changes.
167
- selectedItemsMap: prevState.selection.rawSelectedItems === models.selectedItems.value ? prevState.selection.selectedItemsMap : createSelectedItemsMap(models.selectedItems.value),
175
+ selectedItems: params.selectedItems === undefined ? prevState.selection.selectedItems : params.selectedItems,
168
176
  isEnabled: !params.disableSelection,
169
177
  isMultiSelectEnabled: params.multiSelect,
170
178
  isCheckboxSelectionEnabled: params.checkboxSelection,
@@ -174,7 +182,7 @@ export const useTreeViewSelection = ({
174
182
  }
175
183
  }
176
184
  }));
177
- }, [store, models.selectedItems.value, params.multiSelect, params.checkboxSelection, params.disableSelection, params.selectionPropagation.descendants, params.selectionPropagation.parents]);
185
+ }, [store, params.selectedItems, params.multiSelect, params.checkboxSelection, params.disableSelection, params.selectionPropagation.descendants, params.selectionPropagation.parents]);
178
186
  return {
179
187
  getRootProps: () => ({
180
188
  'aria-multiselectable': params.multiSelect
@@ -193,11 +201,6 @@ export const useTreeViewSelection = ({
193
201
  };
194
202
  };
195
203
  useTreeViewSelection.itemPlugin = useTreeViewSelectionItemPlugin;
196
- useTreeViewSelection.models = {
197
- selectedItems: {
198
- getDefaultValue: params => params.defaultSelectedItems
199
- }
200
- };
201
204
  const DEFAULT_SELECTED_ITEMS = [];
202
205
  const EMPTY_SELECTION_PROPAGATION = {};
203
206
  useTreeViewSelection.getDefaultizedParams = ({
@@ -209,19 +212,15 @@ useTreeViewSelection.getDefaultizedParams = ({
209
212
  defaultSelectedItems: params.defaultSelectedItems ?? (params.multiSelect ? DEFAULT_SELECTED_ITEMS : null),
210
213
  selectionPropagation: params.selectionPropagation ?? EMPTY_SELECTION_PROPAGATION
211
214
  });
212
- useTreeViewSelection.getInitialState = params => {
213
- const rawSelectedItems = params.selectedItems === undefined ? params.defaultSelectedItems : params.selectedItems;
214
- return {
215
- selection: {
216
- rawSelectedItems,
217
- selectedItemsMap: createSelectedItemsMap(rawSelectedItems),
218
- isEnabled: !params.disableSelection,
219
- isMultiSelectEnabled: params.multiSelect,
220
- isCheckboxSelectionEnabled: params.checkboxSelection,
221
- selectionPropagation: params.selectionPropagation
222
- }
223
- };
224
- };
215
+ useTreeViewSelection.getInitialState = params => ({
216
+ selection: {
217
+ selectedItems: params.selectedItems === undefined ? params.defaultSelectedItems : params.selectedItems,
218
+ isEnabled: !params.disableSelection,
219
+ isMultiSelectEnabled: params.multiSelect,
220
+ isCheckboxSelectionEnabled: params.checkboxSelection,
221
+ selectionPropagation: params.selectionPropagation
222
+ }
223
+ });
225
224
  useTreeViewSelection.params = {
226
225
  disableSelection: true,
227
226
  multiSelect: true,