@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,313 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.TreeViewKeyboardNavigationPlugin = void 0;
7
+ var _expansion = require("../expansion");
8
+ var _items = require("../items");
9
+ var _labelEditing = require("../labelEditing");
10
+ var _selectors = require("../selection/selectors");
11
+ var _tree = require("../../utils/tree");
12
+ const TYPEAHEAD_TIMEOUT = 500;
13
+ class TreeViewKeyboardNavigationPlugin {
14
+ typeaheadQuery = '';
15
+
16
+ // We can't type `store`, otherwise we get the following TS error:
17
+ // 'keyboardNavigation' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer.
18
+ constructor(store) {
19
+ this.store = store;
20
+ this.labelMap = createLabelMapFromItemMetaLookup(_items.itemsSelectors.itemMetaLookup(this.store.state));
21
+
22
+ // Whenever the itemMetaLookup changes, we need to regen the label map.
23
+ this.store.registerStoreEffect(_items.itemsSelectors.itemMetaLookup, (_, itemMetaLookup) => {
24
+ if (this.store.shouldIgnoreItemsStateUpdate()) {
25
+ return;
26
+ }
27
+ this.labelMap = createLabelMapFromItemMetaLookup(itemMetaLookup);
28
+ });
29
+ }
30
+ canToggleItemSelection = itemId => _selectors.selectionSelectors.canItemBeSelected(this.store.state, itemId);
31
+ canToggleItemExpansion = itemId => {
32
+ return !_items.itemsSelectors.isItemDisabled(this.store.state, itemId) && _expansion.expansionSelectors.isItemExpandable(this.store.state, itemId);
33
+ };
34
+ getFirstItemMatchingTypeaheadQuery = (itemId, newKey) => {
35
+ const getNextItem = itemIdToCheck => {
36
+ const nextItemId = (0, _tree.getNextNavigableItem)(this.store.state, itemIdToCheck);
37
+ // We reached the end of the tree, check from the beginning
38
+ if (nextItemId === null) {
39
+ return (0, _tree.getFirstNavigableItem)(this.store.state);
40
+ }
41
+ return nextItemId;
42
+ };
43
+ const getNextMatchingItemId = query => {
44
+ let matchingItemId = null;
45
+ const checkedItems = {};
46
+ // If query length > 1, first check if current item matches
47
+ let currentItemId = query.length > 1 ? itemId : getNextItem(itemId);
48
+ // The "!checkedItems[currentItemId]" condition avoids an infinite loop when there is no matching item.
49
+ while (matchingItemId == null && !checkedItems[currentItemId]) {
50
+ const itemLabel = this.labelMap[currentItemId];
51
+ if (itemLabel?.startsWith(query)) {
52
+ matchingItemId = currentItemId;
53
+ } else {
54
+ checkedItems[currentItemId] = true;
55
+ currentItemId = getNextItem(currentItemId);
56
+ }
57
+ }
58
+ return matchingItemId;
59
+ };
60
+ const cleanNewKey = newKey.toLowerCase();
61
+
62
+ // Try matching with accumulated query + new key
63
+ const concatenatedQuery = `${this.typeaheadQuery}${cleanNewKey}`;
64
+
65
+ // check if the entire typed query matches an item
66
+ const concatenatedQueryMatchingItemId = getNextMatchingItemId(concatenatedQuery);
67
+ if (concatenatedQueryMatchingItemId != null) {
68
+ this.typeaheadQuery = concatenatedQuery;
69
+ return concatenatedQueryMatchingItemId;
70
+ }
71
+ const newKeyMatchingItemId = getNextMatchingItemId(cleanNewKey);
72
+ if (newKeyMatchingItemId != null) {
73
+ this.typeaheadQuery = cleanNewKey;
74
+ return newKeyMatchingItemId;
75
+ }
76
+ this.typeaheadQuery = '';
77
+ return null;
78
+ };
79
+
80
+ /**
81
+ * Updates the `labelMap` to add/remove the first character of some item's labels.
82
+ * This map is used to navigate the tree using type-ahead search.
83
+ * This method is only used by the `useTreeViewJSXItems` plugin, otherwise the updates are handled internally.
84
+ * @param {(map: TreeViewLabelMap) => TreeViewLabelMap} updater The function to update the map.
85
+ */
86
+ updateLabelMap = callback => {
87
+ this.labelMap = callback(this.labelMap);
88
+ };
89
+
90
+ // ARIA specification: https://www.w3.org/WAI/ARIA/apg/patterns/treeview/#keyboardinteraction
91
+ /**
92
+ * Callback fired when a key is pressed on an item.
93
+ * Handles all the keyboard navigation logic.
94
+ * @param {React.KeyboardEvent<HTMLElement> & TreeViewCancellableEvent} event The keyboard event that triggered the callback.
95
+ * @param {TreeViewItemId} itemId The id of the item that the event was triggered on.
96
+ */
97
+ handleItemKeyDown = async (event, itemId) => {
98
+ if (event.defaultMuiPrevented) {
99
+ return;
100
+ }
101
+ if (event.altKey || (0, _tree.isTargetInDescendants)(event.target, event.currentTarget)) {
102
+ return;
103
+ }
104
+ const ctrlPressed = event.ctrlKey || event.metaKey;
105
+ const key = event.key;
106
+ const isMultiSelectEnabled = _selectors.selectionSelectors.isMultiSelectEnabled(this.store.state);
107
+
108
+ // eslint-disable-next-line default-case
109
+ switch (true) {
110
+ // Select the item when pressing "Space"
111
+ case key === ' ' && this.canToggleItemSelection(itemId):
112
+ {
113
+ event.preventDefault();
114
+ if (isMultiSelectEnabled && event.shiftKey) {
115
+ this.store.selection.expandSelectionRange(event, itemId);
116
+ } else {
117
+ this.store.selection.setItemSelection({
118
+ event,
119
+ itemId,
120
+ keepExistingSelection: isMultiSelectEnabled,
121
+ shouldBeSelected: undefined
122
+ });
123
+ }
124
+ break;
125
+ }
126
+
127
+ // If the focused item has children, we expand it.
128
+ // If the focused item has no children, we select it.
129
+ case key === 'Enter':
130
+ {
131
+ if (this.store.labelEditing?.setEditedItem && _labelEditing.labelSelectors.isItemEditable(this.store.state, itemId) && !_labelEditing.labelSelectors.isItemBeingEdited(this.store.state, itemId)) {
132
+ this.store.labelEditing.setEditedItem(itemId);
133
+ } else if (this.canToggleItemExpansion(itemId)) {
134
+ this.store.expansion.setItemExpansion({
135
+ event,
136
+ itemId
137
+ });
138
+ event.preventDefault();
139
+ } else if (this.canToggleItemSelection(itemId)) {
140
+ if (isMultiSelectEnabled) {
141
+ event.preventDefault();
142
+ this.store.selection.setItemSelection({
143
+ event,
144
+ itemId,
145
+ keepExistingSelection: true
146
+ });
147
+ } else if (!_selectors.selectionSelectors.isItemSelected(this.store.state, itemId)) {
148
+ this.store.selection.setItemSelection({
149
+ event,
150
+ itemId
151
+ });
152
+ event.preventDefault();
153
+ }
154
+ }
155
+ break;
156
+ }
157
+
158
+ // Focus the next focusable item
159
+ case key === 'ArrowDown':
160
+ {
161
+ const nextItem = (0, _tree.getNextNavigableItem)(this.store.state, itemId);
162
+ if (nextItem) {
163
+ event.preventDefault();
164
+ this.store.focus.focusItem(event, nextItem);
165
+
166
+ // Multi select behavior when pressing Shift + ArrowDown
167
+ // Toggles the selection state of the next item
168
+ if (isMultiSelectEnabled && event.shiftKey && this.canToggleItemSelection(nextItem)) {
169
+ this.store.selection.selectItemFromArrowNavigation(event, itemId, nextItem);
170
+ }
171
+ }
172
+ break;
173
+ }
174
+
175
+ // Focuses the previous focusable item
176
+ case key === 'ArrowUp':
177
+ {
178
+ const previousItem = (0, _tree.getPreviousNavigableItem)(this.store.state, itemId);
179
+ if (previousItem) {
180
+ event.preventDefault();
181
+ this.store.focus.focusItem(event, previousItem);
182
+
183
+ // Multi select behavior when pressing Shift + ArrowUp
184
+ // Toggles the selection state of the previous item
185
+ if (isMultiSelectEnabled && event.shiftKey && this.canToggleItemSelection(previousItem)) {
186
+ this.store.selection.selectItemFromArrowNavigation(event, itemId, previousItem);
187
+ }
188
+ }
189
+ break;
190
+ }
191
+
192
+ // If the focused item is expanded, we move the focus to its first child
193
+ // If the focused item is collapsed and has children, we expand it
194
+ case key === 'ArrowRight' && !this.store.parameters.isRtl || key === 'ArrowLeft' && this.store.parameters.isRtl:
195
+ {
196
+ if (ctrlPressed) {
197
+ return;
198
+ }
199
+ if (_expansion.expansionSelectors.isItemExpanded(this.store.state, itemId)) {
200
+ const nextItemId = (0, _tree.getNextNavigableItem)(this.store.state, itemId);
201
+ if (nextItemId) {
202
+ this.store.focus.focusItem(event, nextItemId);
203
+ event.preventDefault();
204
+ }
205
+ } else if (this.canToggleItemExpansion(itemId)) {
206
+ this.store.expansion.setItemExpansion({
207
+ event,
208
+ itemId
209
+ });
210
+ event.preventDefault();
211
+ }
212
+ break;
213
+ }
214
+
215
+ // If the focused item is expanded, we collapse it
216
+ // If the focused item is collapsed and has a parent, we move the focus to this parent
217
+ case key === 'ArrowLeft' && !this.store.parameters.isRtl || key === 'ArrowRight' && this.store.parameters.isRtl:
218
+ {
219
+ if (ctrlPressed) {
220
+ return;
221
+ }
222
+ if (this.canToggleItemExpansion(itemId) && _expansion.expansionSelectors.isItemExpanded(this.store.state, itemId)) {
223
+ this.store.expansion.setItemExpansion({
224
+ event,
225
+ itemId
226
+ });
227
+ event.preventDefault();
228
+ } else {
229
+ const parent = _items.itemsSelectors.itemParentId(this.store.state, itemId);
230
+ if (parent) {
231
+ this.store.focus.focusItem(event, parent);
232
+ event.preventDefault();
233
+ }
234
+ }
235
+ break;
236
+ }
237
+
238
+ // Focuses the first item in the tree
239
+ case key === 'Home':
240
+ {
241
+ // Multi select behavior when pressing Ctrl + Shift + Home
242
+ // Selects the focused item and all items up to the first item.
243
+ if (this.canToggleItemSelection(itemId) && isMultiSelectEnabled && ctrlPressed && event.shiftKey) {
244
+ this.store.selection.selectRangeFromStartToItem(event, itemId);
245
+ } else {
246
+ this.store.focus.focusItem(event, (0, _tree.getFirstNavigableItem)(this.store.state));
247
+ }
248
+ event.preventDefault();
249
+ break;
250
+ }
251
+
252
+ // Focuses the last item in the tree
253
+ case key === 'End':
254
+ {
255
+ // Multi select behavior when pressing Ctrl + Shirt + End
256
+ // Selects the focused item and all the items down to the last item.
257
+ if (this.canToggleItemSelection(itemId) && isMultiSelectEnabled && ctrlPressed && event.shiftKey) {
258
+ this.store.selection.selectRangeFromItemToEnd(event, itemId);
259
+ } else {
260
+ this.store.focus.focusItem(event, (0, _tree.getLastNavigableItem)(this.store.state));
261
+ }
262
+ event.preventDefault();
263
+ break;
264
+ }
265
+
266
+ // Expand all siblings that are at the same level as the focused item
267
+ case key === '*':
268
+ {
269
+ this.store.expansion.expandAllSiblings(event, itemId);
270
+ event.preventDefault();
271
+ break;
272
+ }
273
+
274
+ // Multi select behavior when pressing Ctrl + a
275
+ // Selects all the items
276
+ case String.fromCharCode(event.keyCode) === 'A' && ctrlPressed && isMultiSelectEnabled && _selectors.selectionSelectors.enabled(this.store.state):
277
+ {
278
+ this.store.selection.selectAllNavigableItems(event);
279
+ event.preventDefault();
280
+ break;
281
+ }
282
+
283
+ // Type-ahead
284
+ case !ctrlPressed && !event.shiftKey && isPrintableKey(key):
285
+ {
286
+ this.store.timeoutManager.clearTimeout('typeahead');
287
+ const matchingItem = this.getFirstItemMatchingTypeaheadQuery(itemId, key);
288
+ if (matchingItem != null) {
289
+ this.store.focus.focusItem(event, matchingItem);
290
+ event.preventDefault();
291
+ } else {
292
+ this.typeaheadQuery = '';
293
+ }
294
+ this.store.timeoutManager.startTimeout('typeahead', TYPEAHEAD_TIMEOUT, () => {
295
+ this.typeaheadQuery = '';
296
+ });
297
+ break;
298
+ }
299
+ }
300
+ };
301
+ }
302
+ exports.TreeViewKeyboardNavigationPlugin = TreeViewKeyboardNavigationPlugin;
303
+ function isPrintableKey(string) {
304
+ return !!string && string.length === 1 && !!string.match(/\S/);
305
+ }
306
+ function createLabelMapFromItemMetaLookup(itemMetaLookup) {
307
+ const labelMap = {};
308
+ const processItem = item => {
309
+ labelMap[item.id] = item.label.toLowerCase();
310
+ };
311
+ Object.values(itemMetaLookup).forEach(processItem);
312
+ return labelMap;
313
+ }
@@ -0,0 +1 @@
1
+ export * from "./TreeViewKeyboardNavigationPlugin.js";
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _TreeViewKeyboardNavigationPlugin = require("./TreeViewKeyboardNavigationPlugin");
7
+ Object.keys(_TreeViewKeyboardNavigationPlugin).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _TreeViewKeyboardNavigationPlugin[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _TreeViewKeyboardNavigationPlugin[key];
14
+ }
15
+ });
16
+ });
@@ -0,0 +1,22 @@
1
+ import { ExtendableRichTreeViewStore } from "../../RichTreeViewStore/RichTreeViewStore.js";
2
+ import { TreeViewItemId } from "../../../models/index.js";
3
+ export declare class TreeViewLabelEditingPlugin {
4
+ private store;
5
+ constructor(store: ExtendableRichTreeViewStore<any, any>);
6
+ buildPublicAPI: () => {
7
+ setEditedItem: (itemId: TreeViewItemId | null) => void;
8
+ updateItemLabel: (itemId: TreeViewItemId, label: string) => void;
9
+ };
10
+ /**
11
+ * Set which item is currently being edited.
12
+ * You can pass `null` to exit editing mode.
13
+ * @param {TreeViewItemId | null} itemId The id of the item to edit, or `null` to exit editing mode.
14
+ */
15
+ setEditedItem: (itemId: TreeViewItemId | null) => void;
16
+ /**
17
+ * Used to update the label of an item.
18
+ * @param {TreeViewItemId} itemId The id of the item to update the label of.
19
+ * @param {string} label The new label of the item.
20
+ */
21
+ updateItemLabel: (itemId: TreeViewItemId, label: string) => void;
22
+ }
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.TreeViewLabelEditingPlugin = void 0;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _selectors = require("./selectors");
10
+ var _itemPlugin = require("./itemPlugin");
11
+ class TreeViewLabelEditingPlugin {
12
+ constructor(store) {
13
+ this.store = store;
14
+ store.itemPluginManager.register(_itemPlugin.useLabelEditingItemPlugin, null);
15
+ }
16
+ buildPublicAPI = () => {
17
+ return {
18
+ setEditedItem: this.setEditedItem,
19
+ updateItemLabel: this.updateItemLabel
20
+ };
21
+ };
22
+
23
+ /**
24
+ * Set which item is currently being edited.
25
+ * You can pass `null` to exit editing mode.
26
+ * @param {TreeViewItemId | null} itemId The id of the item to edit, or `null` to exit editing mode.
27
+ */
28
+ setEditedItem = itemId => {
29
+ if (itemId !== null && !_selectors.labelSelectors.isItemEditable(this.store.state, itemId)) {
30
+ return;
31
+ }
32
+ this.store.set('editedItemId', itemId);
33
+ };
34
+
35
+ /**
36
+ * Used to update the label of an item.
37
+ * @param {TreeViewItemId} itemId The id of the item to update the label of.
38
+ * @param {string} label The new label of the item.
39
+ */
40
+ updateItemLabel = (itemId, label) => {
41
+ if (!label) {
42
+ throw new Error(['MUI X: The Tree View component requires all items to have a `label` property.', 'The label of an item cannot be empty.', itemId].join('\n'));
43
+ }
44
+ const item = this.store.state.itemMetaLookup[itemId];
45
+ if (item.label === label) {
46
+ return;
47
+ }
48
+ this.store.set('itemMetaLookup', (0, _extends2.default)({}, this.store.state.itemMetaLookup, {
49
+ [itemId]: (0, _extends2.default)({}, item, {
50
+ label
51
+ })
52
+ }));
53
+ if (this.store.parameters.onItemLabelChange) {
54
+ this.store.parameters.onItemLabelChange(itemId, label);
55
+ }
56
+ };
57
+ }
58
+ exports.TreeViewLabelEditingPlugin = TreeViewLabelEditingPlugin;
@@ -0,0 +1,2 @@
1
+ export * from "./TreeViewLabelEditingPlugin.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 _TreeViewLabelEditingPlugin = require("./TreeViewLabelEditingPlugin");
7
+ Object.keys(_TreeViewLabelEditingPlugin).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _TreeViewLabelEditingPlugin[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _TreeViewLabelEditingPlugin[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,11 +1,12 @@
1
1
  import { TreeViewItemPlugin } from "../../models/index.js";
2
2
  import { TreeItemLabelInputProps } from "../../../TreeItemLabelInput/index.js";
3
- export declare const useTreeViewLabelItemPlugin: TreeViewItemPlugin;
4
- export interface UseTreeItemLabelInputSlotPropsFromLabelEditing extends TreeItemLabelInputProps {}
5
- export interface UseTreeItemLabelSlotPropsFromLabelEditing {
3
+ export declare const useLabelEditingItemPlugin: TreeViewItemPlugin;
4
+ interface UseTreeItemLabelInputSlotPropsFromLabelEditing extends TreeItemLabelInputProps {}
5
+ interface UseTreeItemLabelSlotPropsFromLabelEditing {
6
6
  editable?: boolean;
7
7
  }
8
8
  declare module '@mui/x-tree-view/useTreeItem' {
9
9
  interface UseTreeItemLabelInputSlotOwnProps extends UseTreeItemLabelInputSlotPropsFromLabelEditing {}
10
10
  interface UseTreeItemLabelSlotOwnProps extends UseTreeItemLabelSlotPropsFromLabelEditing {}
11
- }
11
+ }
12
+ export {};
@@ -5,12 +5,12 @@ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWild
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.useTreeViewLabelItemPlugin = void 0;
8
+ exports.useLabelEditingItemPlugin = void 0;
9
9
  var React = _interopRequireWildcard(require("react"));
10
10
  var _store = require("@mui/x-internals/store");
11
11
  var _TreeViewProvider = require("../../TreeViewProvider");
12
- var _useTreeViewLabel = require("./useTreeViewLabel.selectors");
13
- const useTreeViewLabelItemPlugin = ({
12
+ var _selectors = require("./selectors");
13
+ const useLabelEditingItemPlugin = ({
14
14
  props
15
15
  }) => {
16
16
  const {
@@ -21,8 +21,8 @@ const useTreeViewLabelItemPlugin = ({
21
21
  itemId
22
22
  } = props;
23
23
  const [labelInputValue, setLabelInputValue] = React.useState(label);
24
- const isItemEditable = (0, _store.useStore)(store, _useTreeViewLabel.labelSelectors.isItemEditable, itemId);
25
- const isItemBeingEdited = (0, _store.useStore)(store, _useTreeViewLabel.labelSelectors.isItemBeingEdited, itemId);
24
+ const isItemEditable = (0, _store.useStore)(store, _selectors.labelSelectors.isItemEditable, itemId);
25
+ const isItemBeingEdited = (0, _store.useStore)(store, _selectors.labelSelectors.isItemBeingEdited, itemId);
26
26
  React.useEffect(() => {
27
27
  if (!isItemBeingEdited) {
28
28
  setLabelInputValue(label);
@@ -78,4 +78,4 @@ const useTreeViewLabelItemPlugin = ({
78
78
  }
79
79
  };
80
80
  };
81
- exports.useTreeViewLabelItemPlugin = useTreeViewLabelItemPlugin;
81
+ exports.useLabelEditingItemPlugin = useLabelEditingItemPlugin;
@@ -0,0 +1,15 @@
1
+ import { RichTreeViewState } from "../../RichTreeViewStore/index.js";
2
+ export declare const labelSelectors: {
3
+ /**
4
+ * Checks whether an item is editable.
5
+ */
6
+ isItemEditable: (args_0: RichTreeViewState<any, any>, _itemId: string) => boolean;
7
+ /**
8
+ * Checks whether an item is being edited.
9
+ */
10
+ isItemBeingEdited: (state: RichTreeViewState<any, any>, itemId: string | null) => boolean;
11
+ /**
12
+ * Checks whether any item is being edited.
13
+ */
14
+ isAnyItemBeingEdited: (state: RichTreeViewState<any, any>) => boolean;
15
+ };
@@ -5,12 +5,12 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.labelSelectors = void 0;
7
7
  var _store = require("@mui/x-internals/store");
8
- var _useTreeViewItems = require("../useTreeViewItems/useTreeViewItems.selectors");
8
+ var _selectors = require("../items/selectors");
9
9
  const labelSelectors = exports.labelSelectors = {
10
10
  /**
11
11
  * Checks whether an item is editable.
12
12
  */
13
- isItemEditable: (0, _store.createSelector)(state => state.label?.isItemEditable, _useTreeViewItems.itemsSelectors.itemModel, (isItemEditable, itemModel, _itemId) => {
13
+ isItemEditable: (0, _store.createSelector)(state => state.isItemEditable, _selectors.itemsSelectors.itemModel, (isItemEditable, itemModel, _itemId) => {
14
14
  if (!itemModel || isItemEditable == null) {
15
15
  return false;
16
16
  }
@@ -22,9 +22,9 @@ const labelSelectors = exports.labelSelectors = {
22
22
  /**
23
23
  * Checks whether an item is being edited.
24
24
  */
25
- isItemBeingEdited: (0, _store.createSelector)((state, itemId) => itemId == null ? false : state.label?.editedItemId === itemId),
25
+ isItemBeingEdited: (0, _store.createSelector)((state, itemId) => itemId == null ? false : state.editedItemId === itemId),
26
26
  /**
27
27
  * Checks whether any item is being edited.
28
28
  */
29
- isAnyItemBeingEdited: (0, _store.createSelector)(state => !!state.label?.editedItemId)
29
+ isAnyItemBeingEdited: (0, _store.createSelector)(state => !!state.editedItemId)
30
30
  };
@@ -0,0 +1,2 @@
1
+ export * from "./types.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 _types = require("./types");
7
+ Object.keys(_types).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _types[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _types[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
+ });
@@ -0,0 +1,19 @@
1
+ import { RichTreeViewState } from "../../RichTreeViewStore/index.js";
2
+ export declare const lazyLoadingSelectors: {
3
+ /**
4
+ * Checks if the lazy loaded state is empty.
5
+ */
6
+ isEmpty: (state: RichTreeViewState<any, any>) => boolean;
7
+ /**
8
+ * Checks whether an item is loading.
9
+ */
10
+ isItemLoading: (state: RichTreeViewState<any, any>, itemId: string | null) => boolean;
11
+ /**
12
+ * Checks whether an item has errors.
13
+ */
14
+ itemHasError: (state: RichTreeViewState<any, any>, itemId: string | null) => boolean;
15
+ /**
16
+ * Get an item error.
17
+ */
18
+ itemError: (state: RichTreeViewState<any, any>, itemId: string | null) => Error | null | undefined;
19
+ };
@@ -5,22 +5,27 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.lazyLoadingSelectors = void 0;
7
7
  var _store = require("@mui/x-internals/store");
8
- var _useTreeViewItems = require("../useTreeViewItems");
8
+ var _items = require("../items");
9
9
  const lazyLoadingSelectors = exports.lazyLoadingSelectors = {
10
10
  /**
11
- * Gets the data source used to lazy load items.
11
+ * Checks if the lazy loaded state is empty.
12
12
  */
13
- dataSource: (0, _store.createSelector)(state => state.lazyLoading?.dataSource),
13
+ isEmpty: (0, _store.createSelector)(state => {
14
+ if (state.lazyLoadedItems == null) {
15
+ return true;
16
+ }
17
+ return Object.keys(state.lazyLoadedItems.loading).length === 0 && Object.keys(state.lazyLoadedItems.errors).length === 0;
18
+ }),
14
19
  /**
15
20
  * Checks whether an item is loading.
16
21
  */
17
- isItemLoading: (0, _store.createSelector)((state, itemId) => state.lazyLoading?.dataSource.loading[itemId ?? _useTreeViewItems.TREE_VIEW_ROOT_PARENT_ID] ?? false),
22
+ isItemLoading: (0, _store.createSelector)((state, itemId) => state.lazyLoadedItems?.loading[itemId ?? _items.TREE_VIEW_ROOT_PARENT_ID] ?? false),
18
23
  /**
19
24
  * Checks whether an item has errors.
20
25
  */
21
- itemHasError: (0, _store.createSelector)((state, itemId) => !!state.lazyLoading?.dataSource.errors[itemId ?? _useTreeViewItems.TREE_VIEW_ROOT_PARENT_ID]),
26
+ itemHasError: (0, _store.createSelector)((state, itemId) => !!state.lazyLoadedItems?.errors[itemId ?? _items.TREE_VIEW_ROOT_PARENT_ID]),
22
27
  /**
23
28
  * Get an item error.
24
29
  */
25
- itemError: (0, _store.createSelector)((state, itemId) => state.lazyLoading?.dataSource.errors[itemId ?? _useTreeViewItems.TREE_VIEW_ROOT_PARENT_ID])
30
+ itemError: (0, _store.createSelector)((state, itemId) => state.lazyLoadedItems?.errors[itemId ?? _items.TREE_VIEW_ROOT_PARENT_ID])
26
31
  };
@@ -0,0 +1,5 @@
1
+ import { TreeViewItemId } from "../../../models/index.js";
2
+ export interface RichTreeViewLazyLoadedItemsStatus {
3
+ loading: Record<TreeViewItemId, boolean>;
4
+ errors: Record<TreeViewItemId, Error | null>;
5
+ }