@mui/x-tree-view 8.22.0 → 8.24.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 (497) hide show
  1. package/CHANGELOG.md +312 -0
  2. package/RichTreeView/RichTreeView.d.ts +1 -1
  3. package/RichTreeView/RichTreeView.js +41 -28
  4. package/RichTreeView/RichTreeView.types.d.ts +6 -4
  5. package/RichTreeView/index.d.ts +1 -3
  6. package/RichTreeView/index.js +1 -13
  7. package/RichTreeView/useExtractRichTreeViewParameters.d.ts +294 -0
  8. package/RichTreeView/useExtractRichTreeViewParameters.js +91 -0
  9. package/SimpleTreeView/SimpleTreeView.d.ts +1 -1
  10. package/SimpleTreeView/SimpleTreeView.js +30 -24
  11. package/SimpleTreeView/SimpleTreeView.types.d.ts +5 -4
  12. package/SimpleTreeView/useExtractSimpleTreeViewParameters.d.ts +293 -0
  13. package/SimpleTreeView/useExtractSimpleTreeViewParameters.js +78 -0
  14. package/TreeItem/TreeItem.d.ts +1 -1
  15. package/TreeItem/TreeItem.js +9 -2
  16. package/TreeItemProvider/TreeItemProvider.js +3 -10
  17. package/esm/RichTreeView/RichTreeView.d.ts +1 -1
  18. package/esm/RichTreeView/RichTreeView.js +40 -27
  19. package/esm/RichTreeView/RichTreeView.types.d.ts +6 -4
  20. package/esm/RichTreeView/index.d.ts +1 -3
  21. package/esm/RichTreeView/index.js +1 -1
  22. package/esm/RichTreeView/useExtractRichTreeViewParameters.d.ts +294 -0
  23. package/esm/RichTreeView/useExtractRichTreeViewParameters.js +83 -0
  24. package/esm/SimpleTreeView/SimpleTreeView.d.ts +1 -1
  25. package/esm/SimpleTreeView/SimpleTreeView.js +29 -23
  26. package/esm/SimpleTreeView/SimpleTreeView.types.d.ts +5 -4
  27. package/esm/SimpleTreeView/useExtractSimpleTreeViewParameters.d.ts +293 -0
  28. package/esm/SimpleTreeView/useExtractSimpleTreeViewParameters.js +70 -0
  29. package/esm/TreeItem/TreeItem.d.ts +1 -1
  30. package/esm/TreeItem/TreeItem.js +9 -2
  31. package/esm/TreeItemProvider/TreeItemProvider.js +3 -10
  32. package/esm/hooks/useApplyPropagationToSelectedItemsOnMount.js +2 -2
  33. package/esm/hooks/useRichTreeViewApiRef.d.ts +2 -2
  34. package/esm/hooks/useSimpleTreeViewApiRef.d.ts +2 -3
  35. package/esm/hooks/useTreeItemModel.d.ts +2 -2
  36. package/esm/hooks/useTreeItemModel.js +1 -1
  37. package/esm/hooks/useTreeItemUtils/useTreeItemUtils.d.ts +9 -19
  38. package/esm/hooks/useTreeItemUtils/useTreeItemUtils.js +26 -35
  39. package/esm/hooks/useTreeViewApiRef.d.ts +3 -5
  40. package/esm/hooks/useTreeViewApiRef.js +4 -3
  41. package/esm/index.d.ts +0 -1
  42. package/esm/index.js +1 -2
  43. package/esm/internals/MinimalTreeViewStore/MinimalTreeViewStore.d.ts +90 -0
  44. package/esm/internals/MinimalTreeViewStore/MinimalTreeViewStore.js +126 -0
  45. package/esm/internals/MinimalTreeViewStore/MinimalTreeViewStore.types.d.ts +272 -0
  46. package/esm/internals/MinimalTreeViewStore/MinimalTreeViewStore.utils.d.ts +21 -0
  47. package/esm/internals/MinimalTreeViewStore/MinimalTreeViewStore.utils.js +49 -0
  48. package/esm/internals/MinimalTreeViewStore/TimeoutManager.d.ts +9 -0
  49. package/esm/internals/MinimalTreeViewStore/TimeoutManager.js +39 -0
  50. package/esm/internals/MinimalTreeViewStore/TreeViewItemPluginManager.d.ts +12 -0
  51. package/esm/internals/MinimalTreeViewStore/TreeViewItemPluginManager.js +16 -0
  52. package/esm/internals/MinimalTreeViewStore/index.d.ts +2 -0
  53. package/esm/internals/MinimalTreeViewStore/index.js +2 -0
  54. package/esm/internals/RichTreeViewStore/RichTreeViewStore.d.ts +53 -0
  55. package/esm/internals/RichTreeViewStore/RichTreeViewStore.js +21 -0
  56. package/esm/internals/RichTreeViewStore/RichTreeViewStore.types.d.ts +34 -0
  57. package/esm/internals/RichTreeViewStore/RichTreeViewStore.utils.d.ts +3 -0
  58. package/esm/internals/RichTreeViewStore/RichTreeViewStore.utils.js +15 -0
  59. package/esm/internals/RichTreeViewStore/index.d.ts +3 -0
  60. package/esm/internals/RichTreeViewStore/index.js +3 -0
  61. package/esm/internals/SimpleTreeViewStore/SimpleTreeViewStore.d.ts +8 -0
  62. package/esm/internals/SimpleTreeViewStore/SimpleTreeViewStore.js +18 -0
  63. package/esm/internals/SimpleTreeViewStore/SimpleTreeViewStore.types.d.ts +9 -0
  64. package/esm/internals/SimpleTreeViewStore/SimpleTreeViewStore.utils.d.ts +3 -0
  65. package/esm/internals/SimpleTreeViewStore/SimpleTreeViewStore.utils.js +5 -0
  66. package/esm/internals/SimpleTreeViewStore/index.d.ts +2 -0
  67. package/esm/internals/SimpleTreeViewStore/index.js +2 -0
  68. package/esm/internals/TreeViewItemDepthContext/TreeViewItemDepthContext.d.ts +2 -3
  69. package/esm/internals/TreeViewProvider/TreeViewChildrenItemProvider.js +2 -3
  70. package/esm/internals/TreeViewProvider/TreeViewContext.d.ts +3 -3
  71. package/esm/internals/TreeViewProvider/TreeViewProvider.d.ts +2 -2
  72. package/esm/internals/TreeViewProvider/TreeViewProvider.js +11 -6
  73. package/esm/internals/TreeViewProvider/TreeViewProvider.types.d.ts +8 -10
  74. package/esm/internals/TreeViewProvider/index.d.ts +1 -1
  75. package/esm/internals/TreeViewProvider/useTreeViewBuildContext.d.ts +16 -0
  76. package/esm/internals/{useTreeView → TreeViewProvider}/useTreeViewBuildContext.js +25 -39
  77. package/esm/internals/components/RichTreeViewItems.js +3 -3
  78. package/esm/internals/hooks/useTreeViewRootProps.d.ts +287 -0
  79. package/esm/internals/hooks/useTreeViewRootProps.js +30 -0
  80. package/esm/internals/hooks/useTreeViewStore.d.ts +10 -0
  81. package/esm/internals/hooks/useTreeViewStore.js +19 -0
  82. package/esm/internals/index.d.ts +15 -21
  83. package/esm/internals/index.js +11 -14
  84. package/esm/internals/models/events.d.ts +24 -3
  85. package/esm/internals/models/index.d.ts +2 -3
  86. package/esm/internals/models/index.js +2 -3
  87. package/esm/internals/models/itemPlugin.d.ts +9 -0
  88. package/esm/internals/models/treeView.d.ts +6 -9
  89. package/esm/internals/plugins/expansion/TreeViewExpansionPlugin.d.ts +69 -0
  90. package/esm/internals/plugins/expansion/TreeViewExpansionPlugin.js +124 -0
  91. package/esm/internals/plugins/expansion/index.d.ts +2 -0
  92. package/esm/internals/plugins/expansion/index.js +2 -0
  93. package/esm/internals/plugins/expansion/selectors.d.ts +27 -0
  94. package/esm/internals/plugins/{useTreeViewExpansion/useTreeViewExpansion.selectors.js → expansion/selectors.js} +5 -5
  95. package/esm/internals/plugins/expansion/utils.d.ts +5 -0
  96. package/esm/internals/plugins/focus/TreeViewFocusPlugin.d.ts +33 -0
  97. package/esm/internals/plugins/focus/TreeViewFocusPlugin.js +107 -0
  98. package/esm/internals/plugins/focus/index.d.ts +2 -0
  99. package/esm/internals/plugins/focus/index.js +2 -0
  100. package/esm/internals/plugins/focus/selectors.d.ts +21 -0
  101. package/esm/internals/plugins/{useTreeViewFocus/useTreeViewFocus.selectors.js → focus/selectors.js} +6 -6
  102. package/esm/internals/plugins/id/index.d.ts +1 -0
  103. package/esm/internals/plugins/id/index.js +1 -0
  104. package/esm/internals/plugins/id/selectors.d.ts +13 -0
  105. package/esm/internals/plugins/id/selectors.js +18 -0
  106. package/esm/internals/plugins/items/TreeViewItemsPlugin.d.ts +105 -0
  107. package/esm/internals/plugins/items/TreeViewItemsPlugin.js +223 -0
  108. package/esm/internals/plugins/items/index.d.ts +3 -0
  109. package/esm/internals/plugins/items/index.js +3 -0
  110. package/esm/internals/plugins/items/selectors.d.ts +60 -0
  111. package/esm/internals/plugins/items/selectors.js +64 -0
  112. package/esm/internals/plugins/items/utils.d.ts +43 -0
  113. package/esm/internals/plugins/{useTreeViewItems/useTreeViewItems.utils.js → items/utils.js} +6 -49
  114. package/esm/internals/plugins/{useTreeViewJSXItems/useTreeViewJSXItems.types.d.ts → jsxItems/TreeViewJSXItemsPlugin.d.ts} +6 -13
  115. package/esm/internals/plugins/jsxItems/TreeViewJSXItemsPlugin.js +81 -0
  116. package/esm/internals/plugins/jsxItems/index.d.ts +1 -0
  117. package/esm/internals/plugins/jsxItems/index.js +1 -0
  118. package/esm/internals/plugins/jsxItems/itemPlugin.d.ts +4 -0
  119. package/esm/internals/plugins/jsxItems/itemPlugin.js +88 -0
  120. package/esm/internals/plugins/keyboardNavigation/TreeViewKeyboardNavigationPlugin.d.ts +28 -0
  121. package/esm/internals/plugins/keyboardNavigation/TreeViewKeyboardNavigationPlugin.js +306 -0
  122. package/esm/internals/plugins/keyboardNavigation/index.d.ts +1 -0
  123. package/esm/internals/plugins/keyboardNavigation/index.js +1 -0
  124. package/esm/internals/plugins/labelEditing/TreeViewLabelEditingPlugin.d.ts +22 -0
  125. package/esm/internals/plugins/labelEditing/TreeViewLabelEditingPlugin.js +50 -0
  126. package/esm/internals/plugins/labelEditing/index.d.ts +2 -0
  127. package/esm/internals/plugins/labelEditing/index.js +2 -0
  128. package/{internals/plugins/useTreeViewLabel → esm/internals/plugins/labelEditing}/itemPlugin.d.ts +5 -4
  129. package/esm/internals/plugins/{useTreeViewLabel → labelEditing}/itemPlugin.js +2 -2
  130. package/esm/internals/plugins/labelEditing/selectors.d.ts +15 -0
  131. package/esm/internals/plugins/{useTreeViewLabel/useTreeViewLabel.selectors.js → labelEditing/selectors.js} +4 -4
  132. package/esm/internals/plugins/lazyLoading/index.d.ts +2 -0
  133. package/esm/internals/plugins/lazyLoading/index.js +2 -0
  134. package/esm/internals/plugins/lazyLoading/selectors.d.ts +19 -0
  135. package/esm/internals/plugins/lazyLoading/selectors.js +25 -0
  136. package/esm/internals/plugins/lazyLoading/types.d.ts +5 -0
  137. package/esm/internals/plugins/selection/TreeViewSelectionPlugin.d.ts +73 -0
  138. package/esm/internals/plugins/selection/TreeViewSelectionPlugin.js +319 -0
  139. package/esm/internals/plugins/selection/index.d.ts +2 -0
  140. package/esm/internals/plugins/selection/index.js +2 -0
  141. package/esm/internals/plugins/{useTreeViewSelection → selection}/itemPlugin.d.ts +1 -1
  142. package/esm/internals/plugins/{useTreeViewSelection → selection}/itemPlugin.js +8 -8
  143. package/esm/internals/plugins/selection/selectors.d.ts +48 -0
  144. package/esm/internals/plugins/{useTreeViewSelection/useTreeViewSelection.selectors.js → selection/selectors.js} +19 -9
  145. package/esm/internals/utils/tree.d.ts +8 -10
  146. package/esm/internals/utils/tree.js +2 -2
  147. package/esm/models/items.d.ts +5 -2
  148. package/esm/useTreeItem/useTreeItem.d.ts +18 -2
  149. package/esm/useTreeItem/useTreeItem.js +15 -19
  150. package/esm/useTreeItem/useTreeItem.types.d.ts +9 -19
  151. package/hooks/useApplyPropagationToSelectedItemsOnMount.js +3 -3
  152. package/hooks/useRichTreeViewApiRef.d.ts +2 -2
  153. package/hooks/useSimpleTreeViewApiRef.d.ts +2 -3
  154. package/hooks/useTreeItemModel.d.ts +2 -2
  155. package/hooks/useTreeItemModel.js +2 -2
  156. package/hooks/useTreeItemUtils/useTreeItemUtils.d.ts +9 -19
  157. package/hooks/useTreeItemUtils/useTreeItemUtils.js +41 -49
  158. package/hooks/useTreeViewApiRef.d.ts +3 -5
  159. package/hooks/useTreeViewApiRef.js +3 -5
  160. package/index.d.ts +0 -1
  161. package/index.js +1 -22
  162. package/internals/MinimalTreeViewStore/MinimalTreeViewStore.d.ts +90 -0
  163. package/internals/MinimalTreeViewStore/MinimalTreeViewStore.js +134 -0
  164. package/internals/MinimalTreeViewStore/MinimalTreeViewStore.types.d.ts +272 -0
  165. package/internals/MinimalTreeViewStore/MinimalTreeViewStore.utils.d.ts +21 -0
  166. package/internals/MinimalTreeViewStore/MinimalTreeViewStore.utils.js +58 -0
  167. package/internals/MinimalTreeViewStore/TimeoutManager.d.ts +9 -0
  168. package/internals/MinimalTreeViewStore/TimeoutManager.js +46 -0
  169. package/internals/MinimalTreeViewStore/TreeViewItemPluginManager.d.ts +12 -0
  170. package/internals/MinimalTreeViewStore/TreeViewItemPluginManager.js +23 -0
  171. package/internals/MinimalTreeViewStore/index.d.ts +2 -0
  172. package/internals/MinimalTreeViewStore/index.js +27 -0
  173. package/internals/RichTreeViewStore/RichTreeViewStore.d.ts +53 -0
  174. package/internals/RichTreeViewStore/RichTreeViewStore.js +30 -0
  175. package/internals/RichTreeViewStore/RichTreeViewStore.types.d.ts +34 -0
  176. package/internals/RichTreeViewStore/RichTreeViewStore.utils.d.ts +3 -0
  177. package/internals/RichTreeViewStore/RichTreeViewStore.utils.js +22 -0
  178. package/internals/RichTreeViewStore/index.d.ts +3 -0
  179. package/internals/RichTreeViewStore/index.js +38 -0
  180. package/internals/SimpleTreeViewStore/SimpleTreeViewStore.d.ts +8 -0
  181. package/internals/SimpleTreeViewStore/SimpleTreeViewStore.js +26 -0
  182. package/internals/SimpleTreeViewStore/SimpleTreeViewStore.types.d.ts +9 -0
  183. package/internals/SimpleTreeViewStore/SimpleTreeViewStore.utils.d.ts +3 -0
  184. package/internals/SimpleTreeViewStore/SimpleTreeViewStore.utils.js +11 -0
  185. package/internals/SimpleTreeViewStore/index.d.ts +2 -0
  186. package/internals/SimpleTreeViewStore/index.js +27 -0
  187. package/internals/TreeViewItemDepthContext/TreeViewItemDepthContext.d.ts +2 -3
  188. package/internals/TreeViewProvider/TreeViewChildrenItemProvider.js +3 -4
  189. package/internals/TreeViewProvider/TreeViewContext.d.ts +3 -3
  190. package/internals/TreeViewProvider/TreeViewProvider.d.ts +2 -2
  191. package/internals/TreeViewProvider/TreeViewProvider.js +14 -9
  192. package/internals/TreeViewProvider/TreeViewProvider.types.d.ts +8 -10
  193. package/internals/TreeViewProvider/index.d.ts +1 -1
  194. package/internals/TreeViewProvider/useTreeViewBuildContext.d.ts +16 -0
  195. package/internals/{useTreeView → TreeViewProvider}/useTreeViewBuildContext.js +25 -39
  196. package/internals/components/RichTreeViewItems.js +9 -9
  197. package/internals/hooks/useTreeViewRootProps.d.ts +287 -0
  198. package/internals/hooks/useTreeViewRootProps.js +36 -0
  199. package/internals/hooks/useTreeViewStore.d.ts +10 -0
  200. package/internals/hooks/useTreeViewStore.js +26 -0
  201. package/internals/index.d.ts +15 -21
  202. package/internals/index.js +40 -70
  203. package/internals/models/events.d.ts +24 -3
  204. package/internals/models/index.d.ts +2 -3
  205. package/internals/models/index.js +11 -22
  206. package/internals/models/itemPlugin.d.ts +9 -0
  207. package/internals/models/treeView.d.ts +6 -9
  208. package/internals/plugins/expansion/TreeViewExpansionPlugin.d.ts +69 -0
  209. package/internals/plugins/expansion/TreeViewExpansionPlugin.js +132 -0
  210. package/internals/plugins/expansion/index.d.ts +2 -0
  211. package/internals/plugins/expansion/index.js +27 -0
  212. package/internals/plugins/expansion/selectors.d.ts +27 -0
  213. package/internals/plugins/{useTreeViewExpansion/useTreeViewExpansion.selectors.js → expansion/selectors.js} +8 -8
  214. package/internals/plugins/expansion/utils.d.ts +5 -0
  215. package/internals/plugins/focus/TreeViewFocusPlugin.d.ts +33 -0
  216. package/internals/plugins/focus/TreeViewFocusPlugin.js +114 -0
  217. package/internals/plugins/focus/index.d.ts +2 -0
  218. package/internals/plugins/focus/index.js +27 -0
  219. package/internals/plugins/focus/selectors.d.ts +21 -0
  220. package/internals/plugins/{useTreeViewFocus/useTreeViewFocus.selectors.js → focus/selectors.js} +9 -9
  221. package/internals/plugins/id/index.d.ts +1 -0
  222. package/internals/plugins/id/index.js +16 -0
  223. package/internals/plugins/id/selectors.d.ts +13 -0
  224. package/internals/plugins/id/selectors.js +24 -0
  225. package/internals/plugins/items/TreeViewItemsPlugin.d.ts +105 -0
  226. package/internals/plugins/items/TreeViewItemsPlugin.js +231 -0
  227. package/internals/plugins/items/index.d.ts +3 -0
  228. package/internals/plugins/items/index.js +46 -0
  229. package/internals/plugins/items/selectors.d.ts +60 -0
  230. package/internals/plugins/{useTreeViewItems/useTreeViewItems.selectors.js → items/selectors.js} +18 -14
  231. package/internals/plugins/items/utils.d.ts +43 -0
  232. package/internals/plugins/{useTreeViewItems/useTreeViewItems.utils.js → items/utils.js} +6 -50
  233. package/internals/plugins/{useTreeViewJSXItems/useTreeViewJSXItems.types.d.ts → jsxItems/TreeViewJSXItemsPlugin.d.ts} +6 -13
  234. package/internals/plugins/jsxItems/TreeViewJSXItemsPlugin.js +89 -0
  235. package/internals/plugins/jsxItems/index.d.ts +1 -0
  236. package/internals/plugins/jsxItems/index.js +16 -0
  237. package/internals/plugins/jsxItems/itemPlugin.d.ts +4 -0
  238. package/internals/plugins/{useTreeViewJSXItems → jsxItems}/itemPlugin.js +35 -20
  239. package/internals/plugins/keyboardNavigation/TreeViewKeyboardNavigationPlugin.d.ts +28 -0
  240. package/internals/plugins/keyboardNavigation/TreeViewKeyboardNavigationPlugin.js +313 -0
  241. package/internals/plugins/keyboardNavigation/index.d.ts +1 -0
  242. package/internals/plugins/keyboardNavigation/index.js +16 -0
  243. package/internals/plugins/labelEditing/TreeViewLabelEditingPlugin.d.ts +22 -0
  244. package/internals/plugins/labelEditing/TreeViewLabelEditingPlugin.js +58 -0
  245. package/internals/plugins/labelEditing/index.d.ts +2 -0
  246. package/internals/plugins/labelEditing/index.js +27 -0
  247. package/{esm/internals/plugins/useTreeViewLabel → internals/plugins/labelEditing}/itemPlugin.d.ts +5 -4
  248. package/internals/plugins/{useTreeViewLabel → labelEditing}/itemPlugin.js +6 -6
  249. package/internals/plugins/labelEditing/selectors.d.ts +15 -0
  250. package/internals/plugins/{useTreeViewLabel/useTreeViewLabel.selectors.js → labelEditing/selectors.js} +4 -4
  251. package/internals/plugins/lazyLoading/index.d.ts +2 -0
  252. package/internals/plugins/lazyLoading/index.js +27 -0
  253. package/internals/plugins/lazyLoading/selectors.d.ts +19 -0
  254. package/internals/plugins/{useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.js → lazyLoading/selectors.js} +11 -6
  255. package/internals/plugins/lazyLoading/types.d.ts +5 -0
  256. package/internals/plugins/selection/TreeViewSelectionPlugin.d.ts +73 -0
  257. package/internals/plugins/selection/TreeViewSelectionPlugin.js +327 -0
  258. package/internals/plugins/selection/index.d.ts +2 -0
  259. package/internals/plugins/selection/index.js +27 -0
  260. package/internals/plugins/{useTreeViewSelection → selection}/itemPlugin.d.ts +1 -1
  261. package/internals/plugins/{useTreeViewSelection → selection}/itemPlugin.js +16 -16
  262. package/internals/plugins/selection/selectors.d.ts +48 -0
  263. package/internals/plugins/{useTreeViewSelection/useTreeViewSelection.selectors.js → selection/selectors.js} +19 -9
  264. package/internals/utils/tree.d.ts +8 -10
  265. package/internals/utils/tree.js +33 -33
  266. package/models/items.d.ts +5 -2
  267. package/package.json +3 -3
  268. package/useTreeItem/useTreeItem.d.ts +18 -2
  269. package/useTreeItem/useTreeItem.js +19 -24
  270. package/useTreeItem/useTreeItem.types.d.ts +9 -19
  271. package/RichTreeView/RichTreeView.plugins.d.ts +0 -10
  272. package/RichTreeView/RichTreeView.plugins.js +0 -15
  273. package/SimpleTreeView/SimpleTreeView.plugins.d.ts +0 -9
  274. package/SimpleTreeView/SimpleTreeView.plugins.js +0 -15
  275. package/esm/RichTreeView/RichTreeView.plugins.d.ts +0 -10
  276. package/esm/RichTreeView/RichTreeView.plugins.js +0 -9
  277. package/esm/SimpleTreeView/SimpleTreeView.plugins.d.ts +0 -9
  278. package/esm/SimpleTreeView/SimpleTreeView.plugins.js +0 -9
  279. package/esm/internals/corePlugins/corePlugins.d.ts +0 -9
  280. package/esm/internals/corePlugins/corePlugins.js +0 -8
  281. package/esm/internals/corePlugins/index.d.ts +0 -2
  282. package/esm/internals/corePlugins/index.js +0 -1
  283. package/esm/internals/corePlugins/useTreeViewId/index.d.ts +0 -3
  284. package/esm/internals/corePlugins/useTreeViewId/index.js +0 -2
  285. package/esm/internals/corePlugins/useTreeViewId/useTreeViewId.d.ts +0 -3
  286. package/esm/internals/corePlugins/useTreeViewId/useTreeViewId.js +0 -38
  287. package/esm/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.d.ts +0 -10
  288. package/esm/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.js +0 -9
  289. package/esm/internals/corePlugins/useTreeViewId/useTreeViewId.types.d.ts +0 -20
  290. package/esm/internals/corePlugins/useTreeViewId/useTreeViewId.utils.d.ts +0 -21
  291. package/esm/internals/corePlugins/useTreeViewId/useTreeViewId.utils.js +0 -26
  292. package/esm/internals/corePlugins/useTreeViewInstanceEvents/index.d.ts +0 -2
  293. package/esm/internals/corePlugins/useTreeViewInstanceEvents/index.js +0 -1
  294. package/esm/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.d.ts +0 -3
  295. package/esm/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.js +0 -31
  296. package/esm/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.types.d.ts +0 -22
  297. package/esm/internals/corePlugins/useTreeViewOptionalPlugins/index.d.ts +0 -2
  298. package/esm/internals/corePlugins/useTreeViewOptionalPlugins/index.js +0 -1
  299. package/esm/internals/corePlugins/useTreeViewOptionalPlugins/useTreeViewOptionalPlugins.d.ts +0 -3
  300. package/esm/internals/corePlugins/useTreeViewOptionalPlugins/useTreeViewOptionalPlugins.js +0 -12
  301. package/esm/internals/corePlugins/useTreeViewOptionalPlugins/useTreeViewOptionalPlugins.types.d.ts +0 -8
  302. package/esm/internals/hooks/useInstanceEventHandler.d.ts +0 -15
  303. package/esm/internals/hooks/useInstanceEventHandler.js +0 -79
  304. package/esm/internals/models/helpers.d.ts +0 -7
  305. package/esm/internals/models/plugin.d.ts +0 -166
  306. package/esm/internals/models/plugin.js +0 -1
  307. package/esm/internals/plugins/useTreeViewExpansion/index.d.ts +0 -3
  308. package/esm/internals/plugins/useTreeViewExpansion/index.js +0 -2
  309. package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.d.ts +0 -3
  310. package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +0 -149
  311. package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.d.ts +0 -28
  312. package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +0 -112
  313. package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.js +0 -1
  314. package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.utils.d.ts +0 -6
  315. package/esm/internals/plugins/useTreeViewFocus/index.d.ts +0 -3
  316. package/esm/internals/plugins/useTreeViewFocus/index.js +0 -2
  317. package/esm/internals/plugins/useTreeViewFocus/useTreeViewFocus.d.ts +0 -3
  318. package/esm/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +0 -113
  319. package/esm/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.d.ts +0 -22
  320. package/esm/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.d.ts +0 -45
  321. package/esm/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.js +0 -1
  322. package/esm/internals/plugins/useTreeViewItems/index.d.ts +0 -4
  323. package/esm/internals/plugins/useTreeViewItems/index.js +0 -3
  324. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.d.ts +0 -3
  325. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.js +0 -218
  326. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.d.ts +0 -56
  327. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +0 -60
  328. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.types.d.ts +0 -197
  329. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.types.js +0 -1
  330. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.utils.d.ts +0 -49
  331. package/esm/internals/plugins/useTreeViewJSXItems/index.d.ts +0 -2
  332. package/esm/internals/plugins/useTreeViewJSXItems/index.js +0 -1
  333. package/esm/internals/plugins/useTreeViewJSXItems/itemPlugin.d.ts +0 -2
  334. package/esm/internals/plugins/useTreeViewJSXItems/itemPlugin.js +0 -74
  335. package/esm/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.d.ts +0 -3
  336. package/esm/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +0 -104
  337. package/esm/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.types.js +0 -1
  338. package/esm/internals/plugins/useTreeViewKeyboardNavigation/index.d.ts +0 -2
  339. package/esm/internals/plugins/useTreeViewKeyboardNavigation/index.js +0 -1
  340. package/esm/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.d.ts +0 -3
  341. package/esm/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +0 -305
  342. package/esm/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +0 -32
  343. package/esm/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.js +0 -1
  344. package/esm/internals/plugins/useTreeViewLabel/index.d.ts +0 -3
  345. package/esm/internals/plugins/useTreeViewLabel/index.js +0 -2
  346. package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.d.ts +0 -3
  347. package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +0 -70
  348. package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.d.ts +0 -16
  349. package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.types.d.ts +0 -50
  350. package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.types.js +0 -1
  351. package/esm/internals/plugins/useTreeViewLazyLoading/index.d.ts +0 -2
  352. package/esm/internals/plugins/useTreeViewLazyLoading/index.js +0 -1
  353. package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.d.ts +0 -24
  354. package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.js +0 -20
  355. package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.d.ts +0 -100
  356. package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.js +0 -1
  357. package/esm/internals/plugins/useTreeViewSelection/index.d.ts +0 -3
  358. package/esm/internals/plugins/useTreeViewSelection/index.js +0 -2
  359. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.d.ts +0 -3
  360. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +0 -230
  361. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.d.ts +0 -40
  362. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +0 -132
  363. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.js +0 -1
  364. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.d.ts +0 -31
  365. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +0 -107
  366. package/esm/internals/useTreeView/index.d.ts +0 -1
  367. package/esm/internals/useTreeView/index.js +0 -1
  368. package/esm/internals/useTreeView/useExtractPluginParamsFromProps.d.ts +0 -19
  369. package/esm/internals/useTreeView/useExtractPluginParamsFromProps.js +0 -51
  370. package/esm/internals/useTreeView/useTreeView.d.ts +0 -18
  371. package/esm/internals/useTreeView/useTreeView.js +0 -102
  372. package/esm/internals/useTreeView/useTreeView.types.d.ts +0 -20
  373. package/esm/internals/useTreeView/useTreeView.types.js +0 -1
  374. package/esm/internals/useTreeView/useTreeViewBuildContext.d.ts +0 -13
  375. package/esm/internals/utils/cleanupTracking/CleanupTracking.d.ts +0 -9
  376. package/esm/internals/utils/cleanupTracking/CleanupTracking.js +0 -1
  377. package/esm/internals/utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking.d.ts +0 -7
  378. package/esm/internals/utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking.js +0 -14
  379. package/esm/internals/utils/cleanupTracking/TimerBasedCleanupTracking.d.ts +0 -9
  380. package/esm/internals/utils/cleanupTracking/TimerBasedCleanupTracking.js +0 -38
  381. package/esm/internals/utils/plugins.d.ts +0 -2
  382. package/esm/internals/utils/plugins.js +0 -4
  383. package/esm/internals/utils/publishTreeViewEvent.d.ts +0 -5
  384. package/esm/internals/utils/publishTreeViewEvent.js +0 -3
  385. package/internals/corePlugins/corePlugins.d.ts +0 -9
  386. package/internals/corePlugins/corePlugins.js +0 -14
  387. package/internals/corePlugins/index.d.ts +0 -2
  388. package/internals/corePlugins/index.js +0 -12
  389. package/internals/corePlugins/useTreeViewId/index.d.ts +0 -3
  390. package/internals/corePlugins/useTreeViewId/index.js +0 -19
  391. package/internals/corePlugins/useTreeViewId/useTreeViewId.d.ts +0 -3
  392. package/internals/corePlugins/useTreeViewId/useTreeViewId.js +0 -46
  393. package/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.d.ts +0 -10
  394. package/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.js +0 -15
  395. package/internals/corePlugins/useTreeViewId/useTreeViewId.types.d.ts +0 -20
  396. package/internals/corePlugins/useTreeViewId/useTreeViewId.utils.d.ts +0 -21
  397. package/internals/corePlugins/useTreeViewId/useTreeViewId.utils.js +0 -34
  398. package/internals/corePlugins/useTreeViewInstanceEvents/index.d.ts +0 -2
  399. package/internals/corePlugins/useTreeViewInstanceEvents/index.js +0 -12
  400. package/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.d.ts +0 -3
  401. package/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.js +0 -38
  402. package/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.types.d.ts +0 -22
  403. package/internals/corePlugins/useTreeViewOptionalPlugins/index.d.ts +0 -2
  404. package/internals/corePlugins/useTreeViewOptionalPlugins/index.js +0 -12
  405. package/internals/corePlugins/useTreeViewOptionalPlugins/useTreeViewOptionalPlugins.d.ts +0 -3
  406. package/internals/corePlugins/useTreeViewOptionalPlugins/useTreeViewOptionalPlugins.js +0 -19
  407. package/internals/corePlugins/useTreeViewOptionalPlugins/useTreeViewOptionalPlugins.types.d.ts +0 -8
  408. package/internals/hooks/useInstanceEventHandler.d.ts +0 -15
  409. package/internals/hooks/useInstanceEventHandler.js +0 -87
  410. package/internals/models/helpers.d.ts +0 -7
  411. package/internals/models/plugin.d.ts +0 -166
  412. package/internals/models/plugin.js +0 -5
  413. package/internals/plugins/useTreeViewExpansion/index.d.ts +0 -3
  414. package/internals/plugins/useTreeViewExpansion/index.js +0 -19
  415. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.d.ts +0 -3
  416. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +0 -157
  417. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.d.ts +0 -28
  418. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +0 -112
  419. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.js +0 -5
  420. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.utils.d.ts +0 -6
  421. package/internals/plugins/useTreeViewFocus/index.d.ts +0 -3
  422. package/internals/plugins/useTreeViewFocus/index.js +0 -19
  423. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.d.ts +0 -3
  424. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +0 -121
  425. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.d.ts +0 -22
  426. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.d.ts +0 -45
  427. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.js +0 -5
  428. package/internals/plugins/useTreeViewItems/index.d.ts +0 -4
  429. package/internals/plugins/useTreeViewItems/index.js +0 -32
  430. package/internals/plugins/useTreeViewItems/useTreeViewItems.d.ts +0 -3
  431. package/internals/plugins/useTreeViewItems/useTreeViewItems.js +0 -226
  432. package/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.d.ts +0 -56
  433. package/internals/plugins/useTreeViewItems/useTreeViewItems.types.d.ts +0 -197
  434. package/internals/plugins/useTreeViewItems/useTreeViewItems.types.js +0 -5
  435. package/internals/plugins/useTreeViewItems/useTreeViewItems.utils.d.ts +0 -49
  436. package/internals/plugins/useTreeViewJSXItems/index.d.ts +0 -2
  437. package/internals/plugins/useTreeViewJSXItems/index.js +0 -12
  438. package/internals/plugins/useTreeViewJSXItems/itemPlugin.d.ts +0 -2
  439. package/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.d.ts +0 -3
  440. package/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +0 -112
  441. package/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.types.js +0 -5
  442. package/internals/plugins/useTreeViewKeyboardNavigation/index.d.ts +0 -2
  443. package/internals/plugins/useTreeViewKeyboardNavigation/index.js +0 -12
  444. package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.d.ts +0 -3
  445. package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +0 -312
  446. package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +0 -32
  447. package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.js +0 -5
  448. package/internals/plugins/useTreeViewLabel/index.d.ts +0 -3
  449. package/internals/plugins/useTreeViewLabel/index.js +0 -19
  450. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.d.ts +0 -3
  451. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +0 -78
  452. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.d.ts +0 -16
  453. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.types.d.ts +0 -50
  454. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.types.js +0 -5
  455. package/internals/plugins/useTreeViewLazyLoading/index.d.ts +0 -2
  456. package/internals/plugins/useTreeViewLazyLoading/index.js +0 -12
  457. package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.d.ts +0 -24
  458. package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.d.ts +0 -100
  459. package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.js +0 -5
  460. package/internals/plugins/useTreeViewSelection/index.d.ts +0 -3
  461. package/internals/plugins/useTreeViewSelection/index.js +0 -19
  462. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.d.ts +0 -3
  463. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +0 -239
  464. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.d.ts +0 -40
  465. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +0 -132
  466. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.js +0 -5
  467. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.d.ts +0 -31
  468. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +0 -116
  469. package/internals/useTreeView/index.d.ts +0 -1
  470. package/internals/useTreeView/index.js +0 -12
  471. package/internals/useTreeView/useExtractPluginParamsFromProps.d.ts +0 -19
  472. package/internals/useTreeView/useExtractPluginParamsFromProps.js +0 -60
  473. package/internals/useTreeView/useTreeView.d.ts +0 -18
  474. package/internals/useTreeView/useTreeView.js +0 -112
  475. package/internals/useTreeView/useTreeView.types.d.ts +0 -20
  476. package/internals/useTreeView/useTreeView.types.js +0 -5
  477. package/internals/useTreeView/useTreeViewBuildContext.d.ts +0 -13
  478. package/internals/utils/cleanupTracking/CleanupTracking.d.ts +0 -9
  479. package/internals/utils/cleanupTracking/CleanupTracking.js +0 -5
  480. package/internals/utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking.d.ts +0 -7
  481. package/internals/utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking.js +0 -21
  482. package/internals/utils/cleanupTracking/TimerBasedCleanupTracking.d.ts +0 -9
  483. package/internals/utils/cleanupTracking/TimerBasedCleanupTracking.js +0 -45
  484. package/internals/utils/plugins.d.ts +0 -2
  485. package/internals/utils/plugins.js +0 -11
  486. package/internals/utils/publishTreeViewEvent.d.ts +0 -5
  487. package/internals/utils/publishTreeViewEvent.js +0 -10
  488. /package/esm/internals/{corePlugins/useTreeViewId/useTreeViewId.types.js → MinimalTreeViewStore/MinimalTreeViewStore.types.js} +0 -0
  489. /package/esm/internals/{corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.types.js → RichTreeViewStore/RichTreeViewStore.types.js} +0 -0
  490. /package/esm/internals/{corePlugins/useTreeViewOptionalPlugins/useTreeViewOptionalPlugins.types.js → SimpleTreeViewStore/SimpleTreeViewStore.types.js} +0 -0
  491. /package/esm/internals/plugins/{useTreeViewExpansion/useTreeViewExpansion.utils.js → expansion/utils.js} +0 -0
  492. /package/esm/internals/{models/helpers.js → plugins/lazyLoading/types.js} +0 -0
  493. /package/internals/{corePlugins/useTreeViewId/useTreeViewId.types.js → MinimalTreeViewStore/MinimalTreeViewStore.types.js} +0 -0
  494. /package/internals/{corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.types.js → RichTreeViewStore/RichTreeViewStore.types.js} +0 -0
  495. /package/internals/{corePlugins/useTreeViewOptionalPlugins/useTreeViewOptionalPlugins.types.js → SimpleTreeViewStore/SimpleTreeViewStore.types.js} +0 -0
  496. /package/internals/plugins/{useTreeViewExpansion/useTreeViewExpansion.utils.js → expansion/utils.js} +0 -0
  497. /package/internals/{models/helpers.js → plugins/lazyLoading/types.js} +0 -0
@@ -0,0 +1,73 @@
1
+ export declare class TreeViewSelectionPlugin<Multiple extends boolean | undefined> {
2
+ private store;
3
+ private lastSelectedItem;
4
+ private lastSelectedRange;
5
+ constructor(store: any);
6
+ private setSelectedItems;
7
+ private selectRange;
8
+ buildPublicAPI: () => {
9
+ setItemSelection: ({
10
+ itemId,
11
+ event,
12
+ keepExistingSelection,
13
+ shouldBeSelected
14
+ }: {
15
+ itemId: string;
16
+ event?: React.SyntheticEvent | null;
17
+ shouldBeSelected?: boolean;
18
+ keepExistingSelection?: boolean;
19
+ }) => void;
20
+ };
21
+ /**
22
+ * Select or deselect an item.
23
+ * @param {object} parameters The parameters of the method.
24
+ * @param {TreeViewItemId} parameters.itemId The id of the item to select or deselect.
25
+ * @param {React.SyntheticEvent} parameters.event The DOM event that triggered the change.
26
+ * @param {boolean} parameters.keepExistingSelection If `true`, the other already selected items will remain selected, otherwise, they will be deselected. This parameter is only relevant when `multiSelect` is `true`
27
+ * @param {boolean | undefined} parameters.shouldBeSelected If `true` the item will be selected. If `false` the item will be deselected. If not defined, the item's selection status will be toggled.
28
+ */
29
+ setItemSelection: ({
30
+ itemId,
31
+ event,
32
+ keepExistingSelection,
33
+ shouldBeSelected
34
+ }: {
35
+ itemId: string;
36
+ event?: React.SyntheticEvent | null;
37
+ shouldBeSelected?: boolean;
38
+ keepExistingSelection?: boolean;
39
+ }) => void;
40
+ /**
41
+ * Select all the navigable items in the tree.
42
+ * @param {React.SyntheticEvent} event The DOM event that triggered the change.
43
+ */
44
+ selectAllNavigableItems: (event: React.SyntheticEvent) => void;
45
+ /**
46
+ * Expand the current selection range up to the given item.
47
+ * @param {React.SyntheticEvent} event The DOM event that triggered the change.
48
+ * @param {TreeViewItemId} itemId The id of the item to expand the selection to.
49
+ */
50
+ expandSelectionRange: (event: React.SyntheticEvent, itemId: string) => void;
51
+ /**
52
+ * Expand the current selection range from the first navigable item to the given item.
53
+ * @param {React.SyntheticEvent} event The DOM event that triggered the change.
54
+ * @param {TreeViewItemId} itemId The id of the item up to which the selection range should be expanded.
55
+ */
56
+ selectRangeFromStartToItem: (event: React.SyntheticEvent, itemId: string) => void;
57
+ /**
58
+ * Expand the current selection range from the given item to the last navigable item.
59
+ * @param {React.SyntheticEvent} event The DOM event that triggered the change.
60
+ * @param {TreeViewItemId} itemId The id of the item from which the selection range should be expanded.
61
+ */
62
+ selectRangeFromItemToEnd: (event: React.SyntheticEvent, itemId: string) => void;
63
+ /**
64
+ * Update the selection when navigating with ArrowUp / ArrowDown keys.
65
+ * @param {React.SyntheticEvent} event The DOM event that triggered the change.
66
+ * @param {TreeViewItemId} currentItemId The id of the active item before the keyboard navigation.
67
+ * @param {TreeViewItemId} nextItemId The id of the active item after the keyboard navigation.
68
+ */
69
+ selectItemFromArrowNavigation: (event: React.SyntheticEvent, currentItem: string, nextItem: string) => void;
70
+ }
71
+ export declare function getLookupFromArray(array: string[]): {
72
+ [itemId: string]: true;
73
+ };
@@ -0,0 +1,327 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.TreeViewSelectionPlugin = void 0;
7
+ exports.getLookupFromArray = getLookupFromArray;
8
+ var _empty = require("@base-ui/utils/empty");
9
+ var _items = require("../items");
10
+ var _selectors = require("./selectors");
11
+ var _itemPlugin = require("./itemPlugin");
12
+ var _tree = require("../../utils/tree");
13
+ class TreeViewSelectionPlugin {
14
+ lastSelectedItem = null;
15
+ lastSelectedRange = {};
16
+
17
+ // We can't type `store`, otherwise we get the following TS error:
18
+ // 'selection' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer.
19
+ constructor(store) {
20
+ this.store = store;
21
+ store.itemPluginManager.register(_itemPlugin.useSelectionItemPlugin, null);
22
+ }
23
+ setSelectedItems = (event, newModel, additionalItemsToPropagate) => {
24
+ const {
25
+ selectionPropagation = _empty.EMPTY_OBJECT,
26
+ selectedItems,
27
+ onItemSelectionToggle,
28
+ onSelectedItemsChange
29
+ } = this.store.parameters;
30
+ const oldModel = _selectors.selectionSelectors.selectedItemsRaw(this.store.state);
31
+ let cleanModel;
32
+ const isMultiSelectEnabled = _selectors.selectionSelectors.isMultiSelectEnabled(this.store.state);
33
+ if (isMultiSelectEnabled && (selectionPropagation.descendants || selectionPropagation.parents)) {
34
+ cleanModel = propagateSelection({
35
+ store: this.store,
36
+ selectionPropagation,
37
+ newModel: newModel,
38
+ oldModel: oldModel,
39
+ additionalItemsToPropagate
40
+ });
41
+ } else {
42
+ cleanModel = newModel;
43
+ }
44
+ if (onItemSelectionToggle) {
45
+ if (isMultiSelectEnabled) {
46
+ const changes = getAddedAndRemovedItems({
47
+ store: this.store,
48
+ newModel: cleanModel,
49
+ oldModel: oldModel
50
+ });
51
+ if (onItemSelectionToggle) {
52
+ changes.added.forEach(itemId => {
53
+ onItemSelectionToggle(event, itemId, true);
54
+ });
55
+ changes.removed.forEach(itemId => {
56
+ onItemSelectionToggle(event, itemId, false);
57
+ });
58
+ }
59
+ } else if (cleanModel !== oldModel) {
60
+ if (oldModel != null) {
61
+ onItemSelectionToggle(event, oldModel, false);
62
+ }
63
+ if (cleanModel != null) {
64
+ onItemSelectionToggle(event, cleanModel, true);
65
+ }
66
+ }
67
+ }
68
+ if (selectedItems === undefined) {
69
+ this.store.set('selectedItems', cleanModel);
70
+ }
71
+ onSelectedItemsChange?.(event, cleanModel);
72
+ };
73
+ selectRange = (event, [start, end]) => {
74
+ const isMultiSelectEnabled = _selectors.selectionSelectors.isMultiSelectEnabled(this.store.state);
75
+ if (!isMultiSelectEnabled) {
76
+ return;
77
+ }
78
+ let newSelectedItems = _selectors.selectionSelectors.selectedItems(this.store.state).slice();
79
+
80
+ // If the last selection was a range selection,
81
+ // remove the items that were part of the last range from the model
82
+ if (Object.keys(this.lastSelectedRange).length > 0) {
83
+ newSelectedItems = newSelectedItems.filter(id => !this.lastSelectedRange[id]);
84
+ }
85
+
86
+ // Add to the model the items that are part of the new range and not already part of the model.
87
+ const selectedItemsLookup = getLookupFromArray(newSelectedItems);
88
+ const range = (0, _tree.getNonDisabledItemsInRange)(this.store.state, start, end).filter(id => _selectors.selectionSelectors.isItemSelectable(this.store.state, id));
89
+ const itemsToAddToModel = range.filter(id => !selectedItemsLookup[id]);
90
+ newSelectedItems = newSelectedItems.concat(itemsToAddToModel);
91
+ this.setSelectedItems(event, newSelectedItems);
92
+ this.lastSelectedRange = getLookupFromArray(range);
93
+ };
94
+ buildPublicAPI = () => {
95
+ return {
96
+ setItemSelection: this.setItemSelection
97
+ };
98
+ };
99
+
100
+ /**
101
+ * Select or deselect an item.
102
+ * @param {object} parameters The parameters of the method.
103
+ * @param {TreeViewItemId} parameters.itemId The id of the item to select or deselect.
104
+ * @param {React.SyntheticEvent} parameters.event The DOM event that triggered the change.
105
+ * @param {boolean} parameters.keepExistingSelection If `true`, the other already selected items will remain selected, otherwise, they will be deselected. This parameter is only relevant when `multiSelect` is `true`
106
+ * @param {boolean | undefined} parameters.shouldBeSelected If `true` the item will be selected. If `false` the item will be deselected. If not defined, the item's selection status will be toggled.
107
+ */
108
+ setItemSelection = ({
109
+ itemId,
110
+ event = null,
111
+ keepExistingSelection = false,
112
+ shouldBeSelected
113
+ }) => {
114
+ if (!_selectors.selectionSelectors.enabled(this.store.state)) {
115
+ return;
116
+ }
117
+ let newSelected;
118
+ const isMultiSelectEnabled = _selectors.selectionSelectors.isMultiSelectEnabled(this.store.state);
119
+ if (keepExistingSelection) {
120
+ const oldSelected = _selectors.selectionSelectors.selectedItems(this.store.state);
121
+ const isSelectedBefore = _selectors.selectionSelectors.isItemSelected(this.store.state, itemId);
122
+ if (isSelectedBefore && (shouldBeSelected === false || shouldBeSelected == null)) {
123
+ newSelected = oldSelected.filter(id => id !== itemId);
124
+ } else if (!isSelectedBefore && (shouldBeSelected === true || shouldBeSelected == null)) {
125
+ newSelected = [itemId].concat(oldSelected);
126
+ } else {
127
+ newSelected = oldSelected;
128
+ }
129
+ } else {
130
+ // eslint-disable-next-line no-lonely-if
131
+ if (shouldBeSelected === false || shouldBeSelected == null && _selectors.selectionSelectors.isItemSelected(this.store.state, itemId)) {
132
+ newSelected = isMultiSelectEnabled ? [] : null;
133
+ } else {
134
+ newSelected = isMultiSelectEnabled ? [itemId] : itemId;
135
+ }
136
+ }
137
+ this.setSelectedItems(event, newSelected,
138
+ // If shouldBeSelected === selectionSelectors.isItemSelected(store, itemId), we still want to propagate the select.
139
+ // This is useful when the element is in an indeterminate state.
140
+ [itemId]);
141
+ this.lastSelectedItem = itemId;
142
+ this.lastSelectedRange = {};
143
+ };
144
+
145
+ /**
146
+ * Select all the navigable items in the tree.
147
+ * @param {React.SyntheticEvent} event The DOM event that triggered the change.
148
+ */
149
+ selectAllNavigableItems = event => {
150
+ const isMultiSelectEnabled = _selectors.selectionSelectors.isMultiSelectEnabled(this.store.state);
151
+ if (!isMultiSelectEnabled) {
152
+ return;
153
+ }
154
+ const navigableItems = (0, _tree.getAllNavigableItems)(this.store.state);
155
+ this.setSelectedItems(event, navigableItems);
156
+ this.lastSelectedRange = getLookupFromArray(navigableItems);
157
+ };
158
+
159
+ /**
160
+ * Expand the current selection range up to the given item.
161
+ * @param {React.SyntheticEvent} event The DOM event that triggered the change.
162
+ * @param {TreeViewItemId} itemId The id of the item to expand the selection to.
163
+ */
164
+ expandSelectionRange = (event, itemId) => {
165
+ if (this.lastSelectedItem != null) {
166
+ const [start, end] = (0, _tree.findOrderInTremauxTree)(this.store.state, itemId, this.lastSelectedItem);
167
+ this.selectRange(event, [start, end]);
168
+ }
169
+ };
170
+
171
+ /**
172
+ * Expand the current selection range from the first navigable item to the given item.
173
+ * @param {React.SyntheticEvent} event The DOM event that triggered the change.
174
+ * @param {TreeViewItemId} itemId The id of the item up to which the selection range should be expanded.
175
+ */
176
+ selectRangeFromStartToItem = (event, itemId) => {
177
+ this.selectRange(event, [(0, _tree.getFirstNavigableItem)(this.store.state), itemId]);
178
+ };
179
+
180
+ /**
181
+ * Expand the current selection range from the given item to the last navigable item.
182
+ * @param {React.SyntheticEvent} event The DOM event that triggered the change.
183
+ * @param {TreeViewItemId} itemId The id of the item from which the selection range should be expanded.
184
+ */
185
+ selectRangeFromItemToEnd = (event, itemId) => {
186
+ this.selectRange(event, [itemId, (0, _tree.getLastNavigableItem)(this.store.state)]);
187
+ };
188
+
189
+ /**
190
+ * Update the selection when navigating with ArrowUp / ArrowDown keys.
191
+ * @param {React.SyntheticEvent} event The DOM event that triggered the change.
192
+ * @param {TreeViewItemId} currentItemId The id of the active item before the keyboard navigation.
193
+ * @param {TreeViewItemId} nextItemId The id of the active item after the keyboard navigation.
194
+ */
195
+ selectItemFromArrowNavigation = (event, currentItem, nextItem) => {
196
+ const isMultiSelectEnabled = _selectors.selectionSelectors.isMultiSelectEnabled(this.store.state);
197
+ if (!isMultiSelectEnabled) {
198
+ return;
199
+ }
200
+ let newSelectedItems = _selectors.selectionSelectors.selectedItems(this.store.state).slice();
201
+ if (Object.keys(this.lastSelectedRange).length === 0) {
202
+ newSelectedItems.push(nextItem);
203
+ this.lastSelectedRange = {
204
+ [currentItem]: true,
205
+ [nextItem]: true
206
+ };
207
+ } else {
208
+ if (!this.lastSelectedRange[currentItem]) {
209
+ this.lastSelectedRange = {};
210
+ }
211
+ if (this.lastSelectedRange[nextItem]) {
212
+ newSelectedItems = newSelectedItems.filter(id => id !== currentItem);
213
+ delete this.lastSelectedRange[currentItem];
214
+ } else {
215
+ newSelectedItems.push(nextItem);
216
+ this.lastSelectedRange[nextItem] = true;
217
+ }
218
+ }
219
+ this.setSelectedItems(event, newSelectedItems);
220
+ };
221
+ }
222
+ exports.TreeViewSelectionPlugin = TreeViewSelectionPlugin;
223
+ function propagateSelection({
224
+ store,
225
+ selectionPropagation,
226
+ newModel,
227
+ oldModel,
228
+ additionalItemsToPropagate
229
+ }) {
230
+ if (!selectionPropagation.descendants && !selectionPropagation.parents) {
231
+ return newModel;
232
+ }
233
+ let shouldRegenerateModel = false;
234
+ const newModelLookup = getLookupFromArray(newModel);
235
+ const changes = getAddedAndRemovedItems({
236
+ store,
237
+ newModel,
238
+ oldModel
239
+ });
240
+ additionalItemsToPropagate?.forEach(itemId => {
241
+ if (newModelLookup[itemId]) {
242
+ if (!changes.added.includes(itemId)) {
243
+ changes.added.push(itemId);
244
+ }
245
+ } else if (!changes.removed.includes(itemId)) {
246
+ changes.removed.push(itemId);
247
+ }
248
+ });
249
+ changes.added.forEach(addedItemId => {
250
+ if (selectionPropagation.descendants) {
251
+ const selectDescendants = itemId => {
252
+ if (itemId !== addedItemId) {
253
+ shouldRegenerateModel = true;
254
+ newModelLookup[itemId] = true;
255
+ }
256
+ _items.itemsSelectors.itemOrderedChildrenIds(store.state, itemId).forEach(selectDescendants);
257
+ };
258
+ selectDescendants(addedItemId);
259
+ }
260
+ if (selectionPropagation.parents) {
261
+ const checkAllDescendantsSelected = itemId => {
262
+ if (!newModelLookup[itemId]) {
263
+ return false;
264
+ }
265
+ const children = _items.itemsSelectors.itemOrderedChildrenIds(store.state, itemId);
266
+ return children.every(checkAllDescendantsSelected);
267
+ };
268
+ const selectParents = itemId => {
269
+ const parentId = _items.itemsSelectors.itemParentId(store.state, itemId);
270
+ if (parentId == null) {
271
+ return;
272
+ }
273
+ const siblings = _items.itemsSelectors.itemOrderedChildrenIds(store.state, parentId);
274
+ if (siblings.every(checkAllDescendantsSelected)) {
275
+ shouldRegenerateModel = true;
276
+ newModelLookup[parentId] = true;
277
+ selectParents(parentId);
278
+ }
279
+ };
280
+ selectParents(addedItemId);
281
+ }
282
+ });
283
+ changes.removed.forEach(removedItemId => {
284
+ if (selectionPropagation.parents) {
285
+ let parentId = _items.itemsSelectors.itemParentId(store.state, removedItemId);
286
+ while (parentId != null) {
287
+ if (newModelLookup[parentId]) {
288
+ shouldRegenerateModel = true;
289
+ delete newModelLookup[parentId];
290
+ }
291
+ parentId = _items.itemsSelectors.itemParentId(store.state, parentId);
292
+ }
293
+ }
294
+ if (selectionPropagation.descendants) {
295
+ const deSelectDescendants = itemId => {
296
+ if (itemId !== removedItemId) {
297
+ shouldRegenerateModel = true;
298
+ delete newModelLookup[itemId];
299
+ }
300
+ _items.itemsSelectors.itemOrderedChildrenIds(store.state, itemId).forEach(deSelectDescendants);
301
+ };
302
+ deSelectDescendants(removedItemId);
303
+ }
304
+ });
305
+ return shouldRegenerateModel ? Object.keys(newModelLookup) : newModel;
306
+ }
307
+ function getAddedAndRemovedItems({
308
+ store,
309
+ oldModel,
310
+ newModel
311
+ }) {
312
+ const newModelMap = new Map();
313
+ newModel.forEach(id => {
314
+ newModelMap.set(id, true);
315
+ });
316
+ return {
317
+ added: newModel.filter(itemId => !_selectors.selectionSelectors.isItemSelected(store.state, itemId)),
318
+ removed: oldModel.filter(itemId => !newModelMap.has(itemId))
319
+ };
320
+ }
321
+ function getLookupFromArray(array) {
322
+ const lookup = {};
323
+ array.forEach(itemId => {
324
+ lookup[itemId] = true;
325
+ });
326
+ return lookup;
327
+ }
@@ -0,0 +1,2 @@
1
+ export * from "./TreeViewSelectionPlugin.js";
2
+ export * from "./selectors.js";
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _TreeViewSelectionPlugin = require("./TreeViewSelectionPlugin");
7
+ Object.keys(_TreeViewSelectionPlugin).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _TreeViewSelectionPlugin[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _TreeViewSelectionPlugin[key];
14
+ }
15
+ });
16
+ });
17
+ var _selectors = require("./selectors");
18
+ Object.keys(_selectors).forEach(function (key) {
19
+ if (key === "default" || key === "__esModule") return;
20
+ if (key in exports && exports[key] === _selectors[key]) return;
21
+ Object.defineProperty(exports, key, {
22
+ enumerable: true,
23
+ get: function () {
24
+ return _selectors[key];
25
+ }
26
+ });
27
+ });
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import { TreeViewCancellableEventHandler } from "../../../models/index.js";
3
3
  import { TreeViewItemPlugin } from "../../models/index.js";
4
- export declare const useTreeViewSelectionItemPlugin: TreeViewItemPlugin;
4
+ export declare const useSelectionItemPlugin: TreeViewItemPlugin;
5
5
  interface UseTreeItemRootSlotPropsFromSelection {
6
6
  'aria-checked': React.AriaAttributes['aria-checked'];
7
7
  }
@@ -3,29 +3,29 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.useTreeViewSelectionItemPlugin = void 0;
6
+ exports.useSelectionItemPlugin = void 0;
7
7
  var _store = require("@mui/x-internals/store");
8
8
  var _TreeViewProvider = require("../../TreeViewProvider");
9
- var _useTreeViewItems = require("../useTreeViewItems/useTreeViewItems.selectors");
10
- var _useTreeViewSelection = require("./useTreeViewSelection.selectors");
9
+ var _selectors = require("../items/selectors");
10
+ var _selectors2 = require("./selectors");
11
11
  const selectorCheckboxSelectionStatus = (0, _store.createSelector)((state, itemId) => {
12
- if (_useTreeViewSelection.selectionSelectors.isItemSelected(state, itemId)) {
12
+ if (_selectors2.selectionSelectors.isItemSelected(state, itemId)) {
13
13
  return 'checked';
14
14
  }
15
15
  let hasSelectedDescendant = false;
16
16
  let hasUnSelectedDescendant = false;
17
17
  const traverseDescendants = itemToTraverseId => {
18
18
  if (itemToTraverseId !== itemId) {
19
- if (_useTreeViewSelection.selectionSelectors.isItemSelected(state, itemToTraverseId)) {
19
+ if (_selectors2.selectionSelectors.isItemSelected(state, itemToTraverseId)) {
20
20
  hasSelectedDescendant = true;
21
21
  } else {
22
22
  hasUnSelectedDescendant = true;
23
23
  }
24
24
  }
25
- _useTreeViewItems.itemsSelectors.itemOrderedChildrenIds(state, itemToTraverseId).forEach(traverseDescendants);
25
+ _selectors.itemsSelectors.itemOrderedChildrenIds(state, itemToTraverseId).forEach(traverseDescendants);
26
26
  };
27
27
  traverseDescendants(itemId);
28
- const shouldSelectBasedOnDescendants = _useTreeViewSelection.selectionSelectors.propagationRules(state).parents;
28
+ const shouldSelectBasedOnDescendants = _selectors2.selectionSelectors.propagationRules(state).parents;
29
29
  if (shouldSelectBasedOnDescendants) {
30
30
  if (hasSelectedDescendant && hasUnSelectedDescendant) {
31
31
  return 'indeterminate';
@@ -40,7 +40,7 @@ const selectorCheckboxSelectionStatus = (0, _store.createSelector)((state, itemI
40
40
  }
41
41
  return 'empty';
42
42
  });
43
- const useTreeViewSelectionItemPlugin = ({
43
+ const useSelectionItemPlugin = ({
44
44
  props
45
45
  }) => {
46
46
  const {
@@ -49,10 +49,10 @@ const useTreeViewSelectionItemPlugin = ({
49
49
  const {
50
50
  store
51
51
  } = (0, _TreeViewProvider.useTreeViewContext)();
52
- const isCheckboxSelectionEnabled = (0, _store.useStore)(store, _useTreeViewSelection.selectionSelectors.isCheckboxSelectionEnabled);
53
- const isItemSelectionEnabled = (0, _store.useStore)(store, _useTreeViewSelection.selectionSelectors.canItemBeSelected, itemId);
52
+ const isCheckboxSelectionEnabled = (0, _store.useStore)(store, _selectors2.selectionSelectors.isCheckboxSelectionEnabled);
53
+ const isFeatureEnabledForItem = (0, _store.useStore)(store, _selectors2.selectionSelectors.isFeatureEnabledForItem, itemId);
54
+ const canItemBeSelected = (0, _store.useStore)(store, _selectors2.selectionSelectors.canItemBeSelected, itemId);
54
55
  const selectionStatus = (0, _store.useStore)(store, selectorCheckboxSelectionStatus, itemId);
55
- const isSelectionEnabledForItem = (0, _store.useStore)(store, _useTreeViewSelection.selectionSelectors.canItemBeSelected, itemId);
56
56
  return {
57
57
  propsEnhancers: {
58
58
  root: () => {
@@ -63,7 +63,7 @@ const useTreeViewSelectionItemPlugin = ({
63
63
  ariaChecked = true;
64
64
  } else if (selectionStatus === 'indeterminate') {
65
65
  ariaChecked = 'mixed';
66
- } else if (!isSelectionEnabledForItem) {
66
+ } else if (!canItemBeSelected) {
67
67
  // - if the tree contains nodes that are not selectable, aria-checked is not present on those nodes.
68
68
  ariaChecked = undefined;
69
69
  } else {
@@ -83,7 +83,7 @@ const useTreeViewSelectionItemPlugin = ({
83
83
  if (event.defaultMuiPrevented) {
84
84
  return;
85
85
  }
86
- if (!_useTreeViewSelection.selectionSelectors.canItemBeSelected(store.state, itemId)) {
86
+ if (!_selectors2.selectionSelectors.canItemBeSelected(store.state, itemId)) {
87
87
  return;
88
88
  }
89
89
  interactions.handleCheckboxSelection(event);
@@ -91,8 +91,8 @@ const useTreeViewSelectionItemPlugin = ({
91
91
  return {
92
92
  tabIndex: -1,
93
93
  onChange: handleChange,
94
- visible: isCheckboxSelectionEnabled,
95
- disabled: !isItemSelectionEnabled,
94
+ visible: isCheckboxSelectionEnabled && isFeatureEnabledForItem,
95
+ disabled: !canItemBeSelected,
96
96
  checked: selectionStatus === 'checked',
97
97
  indeterminate: selectionStatus === 'indeterminate'
98
98
  };
@@ -100,4 +100,4 @@ const useTreeViewSelectionItemPlugin = ({
100
100
  }
101
101
  };
102
102
  };
103
- exports.useTreeViewSelectionItemPlugin = useTreeViewSelectionItemPlugin;
103
+ exports.useSelectionItemPlugin = useSelectionItemPlugin;
@@ -0,0 +1,48 @@
1
+ import { MinimalTreeViewState } from "../../MinimalTreeViewStore/index.js";
2
+ export declare const selectionSelectors: {
3
+ /**
4
+ * Gets the selected items as provided to the component.
5
+ */
6
+ selectedItemsRaw: (state: MinimalTreeViewState<any, any>) => string | readonly string[] | readonly string[] | null;
7
+ /**
8
+ * Gets the selected items as an array.
9
+ */
10
+ selectedItems: (args_0: MinimalTreeViewState<any, any>) => any[];
11
+ /**
12
+ * Gets the selected items as a Map.
13
+ */
14
+ selectedItemsMap: (args_0: MinimalTreeViewState<any, any>) => Map<string, true>;
15
+ /**
16
+ * Checks whether selection is enabled.
17
+ */
18
+ enabled: (state: MinimalTreeViewState<any, any>) => boolean;
19
+ /**
20
+ * Checks whether multi selection is enabled.
21
+ */
22
+ isMultiSelectEnabled: (state: MinimalTreeViewState<any, any>) => boolean;
23
+ /**
24
+ * Checks whether checkbox selection is enabled.
25
+ */
26
+ isCheckboxSelectionEnabled: (state: MinimalTreeViewState<any, any>) => boolean;
27
+ /**
28
+ * Gets the selection propagation rules.
29
+ */
30
+ propagationRules: (state: MinimalTreeViewState<any, any>) => import("../../../index.js").TreeViewSelectionPropagation;
31
+ /**
32
+ * Checks whether an item is selected.
33
+ */
34
+ isItemSelected: (args_0: MinimalTreeViewState<any, any>, itemId: string) => boolean;
35
+ /**
36
+ * Checks whether the selection feature is enabled for an item.
37
+ * Returns `true` when selection is enabled on the Tree View and the item is selectable (even if the item is disabled).
38
+ */
39
+ isFeatureEnabledForItem: (args_0: MinimalTreeViewState<any, any>, _itemId: string) => boolean;
40
+ /**
41
+ * Checks whether an item can be selected (if selection is enabled, if the item is not disabled, and if the item is selectable).
42
+ */
43
+ canItemBeSelected: (args_0: MinimalTreeViewState<any, any>, _itemId: string) => boolean;
44
+ /**
45
+ * Checks whether an item is selectable based on the `isItemSelectionDisabled` prop.
46
+ */
47
+ isItemSelectable: (state: MinimalTreeViewState<any, any>, itemId: string) => boolean;
48
+ };
@@ -5,8 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.selectionSelectors = void 0;
7
7
  var _store = require("@mui/x-internals/store");
8
- var _useTreeViewItems = require("../useTreeViewItems/useTreeViewItems.selectors");
9
- const selectedItemsSelector = (0, _store.createSelectorMemoized)(state => state.selection.selectedItems, selectedItemsRaw => {
8
+ var _selectors = require("../items/selectors");
9
+ const selectedItemsSelector = (0, _store.createSelectorMemoized)(state => state.selectedItems, selectedItemsRaw => {
10
10
  if (Array.isArray(selectedItemsRaw)) {
11
11
  return selectedItemsRaw;
12
12
  }
@@ -22,11 +22,12 @@ const selectedItemsMapSelector = (0, _store.createSelectorMemoized)(selectedItem
22
22
  });
23
23
  return selectedItemsMap;
24
24
  });
25
+ const isItemSelectableSelector = (0, _store.createSelector)((state, itemId) => state.itemMetaLookup[itemId]?.selectable ?? true);
25
26
  const selectionSelectors = exports.selectionSelectors = {
26
27
  /**
27
28
  * Gets the selected items as provided to the component.
28
29
  */
29
- selectedItemsRaw: (0, _store.createSelector)(state => state.selection.selectedItems),
30
+ selectedItemsRaw: (0, _store.createSelector)(state => state.selectedItems),
30
31
  /**
31
32
  * Gets the selected items as an array.
32
33
  */
@@ -38,25 +39,34 @@ const selectionSelectors = exports.selectionSelectors = {
38
39
  /**
39
40
  * Checks whether selection is enabled.
40
41
  */
41
- enabled: (0, _store.createSelector)(state => state.selection.isEnabled),
42
+ enabled: (0, _store.createSelector)(state => !state.disableSelection),
42
43
  /**
43
44
  * Checks whether multi selection is enabled.
44
45
  */
45
- isMultiSelectEnabled: (0, _store.createSelector)(state => state.selection.isMultiSelectEnabled),
46
+ isMultiSelectEnabled: (0, _store.createSelector)(state => state.multiSelect),
46
47
  /**
47
48
  * Checks whether checkbox selection is enabled.
48
49
  */
49
- isCheckboxSelectionEnabled: (0, _store.createSelector)(state => state.selection.isCheckboxSelectionEnabled),
50
+ isCheckboxSelectionEnabled: (0, _store.createSelector)(state => state.checkboxSelection),
50
51
  /**
51
52
  * Gets the selection propagation rules.
52
53
  */
53
- propagationRules: (0, _store.createSelector)(state => state.selection.selectionPropagation),
54
+ propagationRules: (0, _store.createSelector)(state => state.selectionPropagation),
54
55
  /**
55
56
  * Checks whether an item is selected.
56
57
  */
57
58
  isItemSelected: (0, _store.createSelector)(selectedItemsMapSelector, (selectedItemsMap, itemId) => selectedItemsMap.has(itemId)),
58
59
  /**
59
- * Checks whether an item can be selected (if selection is enabled and if the item is not disabled).
60
+ * Checks whether the selection feature is enabled for an item.
61
+ * Returns `true` when selection is enabled on the Tree View and the item is selectable (even if the item is disabled).
60
62
  */
61
- canItemBeSelected: (0, _store.createSelector)(_useTreeViewItems.itemsSelectors.isItemDisabled, state => state.selection.isEnabled, (isItemDisabled, isSelectionEnabled, _itemId) => isSelectionEnabled && !isItemDisabled)
63
+ isFeatureEnabledForItem: (0, _store.createSelector)(isItemSelectableSelector, state => !state.disableSelection, (isItemSelectable, isSelectionEnabled, _itemId) => isSelectionEnabled && isItemSelectable),
64
+ /**
65
+ * Checks whether an item can be selected (if selection is enabled, if the item is not disabled, and if the item is selectable).
66
+ */
67
+ canItemBeSelected: (0, _store.createSelector)(_selectors.itemsSelectors.isItemDisabled, isItemSelectableSelector, state => !state.disableSelection, (isItemDisabled, isItemSelectable, isSelectionEnabled, _itemId) => isSelectionEnabled && !isItemDisabled && isItemSelectable),
68
+ /**
69
+ * Checks whether an item is selectable based on the `isItemSelectionDisabled` prop.
70
+ */
71
+ isItemSelectable: isItemSelectableSelector
62
72
  };