@mui/x-tree-view 8.23.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 (494) hide show
  1. package/CHANGELOG.md +111 -1
  2. package/RichTreeView/RichTreeView.d.ts +1 -1
  3. package/RichTreeView/RichTreeView.js +34 -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/TreeItemProvider/TreeItemProvider.js +3 -10
  16. package/esm/RichTreeView/RichTreeView.d.ts +1 -1
  17. package/esm/RichTreeView/RichTreeView.js +33 -27
  18. package/esm/RichTreeView/RichTreeView.types.d.ts +6 -4
  19. package/esm/RichTreeView/index.d.ts +1 -3
  20. package/esm/RichTreeView/index.js +1 -1
  21. package/esm/RichTreeView/useExtractRichTreeViewParameters.d.ts +294 -0
  22. package/esm/RichTreeView/useExtractRichTreeViewParameters.js +83 -0
  23. package/esm/SimpleTreeView/SimpleTreeView.d.ts +1 -1
  24. package/esm/SimpleTreeView/SimpleTreeView.js +29 -23
  25. package/esm/SimpleTreeView/SimpleTreeView.types.d.ts +5 -4
  26. package/esm/SimpleTreeView/useExtractSimpleTreeViewParameters.d.ts +293 -0
  27. package/esm/SimpleTreeView/useExtractSimpleTreeViewParameters.js +70 -0
  28. package/esm/TreeItem/TreeItem.d.ts +1 -1
  29. package/esm/TreeItemProvider/TreeItemProvider.js +3 -10
  30. package/esm/hooks/useApplyPropagationToSelectedItemsOnMount.js +1 -1
  31. package/esm/hooks/useRichTreeViewApiRef.d.ts +2 -2
  32. package/esm/hooks/useSimpleTreeViewApiRef.d.ts +2 -3
  33. package/esm/hooks/useTreeItemModel.d.ts +2 -2
  34. package/esm/hooks/useTreeItemModel.js +1 -1
  35. package/esm/hooks/useTreeItemUtils/useTreeItemUtils.d.ts +9 -19
  36. package/esm/hooks/useTreeItemUtils/useTreeItemUtils.js +25 -34
  37. package/esm/hooks/useTreeViewApiRef.d.ts +2 -4
  38. package/esm/hooks/useTreeViewApiRef.js +3 -2
  39. package/esm/index.d.ts +0 -1
  40. package/esm/index.js +1 -2
  41. package/esm/internals/MinimalTreeViewStore/MinimalTreeViewStore.d.ts +90 -0
  42. package/esm/internals/MinimalTreeViewStore/MinimalTreeViewStore.js +126 -0
  43. package/esm/internals/MinimalTreeViewStore/MinimalTreeViewStore.types.d.ts +272 -0
  44. package/esm/internals/MinimalTreeViewStore/MinimalTreeViewStore.utils.d.ts +21 -0
  45. package/esm/internals/MinimalTreeViewStore/MinimalTreeViewStore.utils.js +49 -0
  46. package/esm/internals/MinimalTreeViewStore/TimeoutManager.d.ts +9 -0
  47. package/esm/internals/MinimalTreeViewStore/TimeoutManager.js +39 -0
  48. package/esm/internals/MinimalTreeViewStore/TreeViewItemPluginManager.d.ts +12 -0
  49. package/esm/internals/MinimalTreeViewStore/TreeViewItemPluginManager.js +16 -0
  50. package/esm/internals/MinimalTreeViewStore/index.d.ts +2 -0
  51. package/esm/internals/MinimalTreeViewStore/index.js +2 -0
  52. package/esm/internals/RichTreeViewStore/RichTreeViewStore.d.ts +53 -0
  53. package/esm/internals/RichTreeViewStore/RichTreeViewStore.js +21 -0
  54. package/esm/internals/RichTreeViewStore/RichTreeViewStore.types.d.ts +34 -0
  55. package/esm/internals/RichTreeViewStore/RichTreeViewStore.utils.d.ts +3 -0
  56. package/esm/internals/RichTreeViewStore/RichTreeViewStore.utils.js +15 -0
  57. package/esm/internals/RichTreeViewStore/index.d.ts +3 -0
  58. package/esm/internals/RichTreeViewStore/index.js +3 -0
  59. package/esm/internals/SimpleTreeViewStore/SimpleTreeViewStore.d.ts +8 -0
  60. package/esm/internals/SimpleTreeViewStore/SimpleTreeViewStore.js +18 -0
  61. package/esm/internals/SimpleTreeViewStore/SimpleTreeViewStore.types.d.ts +9 -0
  62. package/esm/internals/SimpleTreeViewStore/SimpleTreeViewStore.utils.d.ts +3 -0
  63. package/esm/internals/SimpleTreeViewStore/SimpleTreeViewStore.utils.js +5 -0
  64. package/esm/internals/SimpleTreeViewStore/index.d.ts +2 -0
  65. package/esm/internals/SimpleTreeViewStore/index.js +2 -0
  66. package/esm/internals/TreeViewItemDepthContext/TreeViewItemDepthContext.d.ts +2 -3
  67. package/esm/internals/TreeViewProvider/TreeViewChildrenItemProvider.js +2 -3
  68. package/esm/internals/TreeViewProvider/TreeViewContext.d.ts +3 -3
  69. package/esm/internals/TreeViewProvider/TreeViewProvider.d.ts +2 -2
  70. package/esm/internals/TreeViewProvider/TreeViewProvider.js +11 -6
  71. package/esm/internals/TreeViewProvider/TreeViewProvider.types.d.ts +8 -10
  72. package/esm/internals/TreeViewProvider/index.d.ts +1 -1
  73. package/esm/internals/TreeViewProvider/useTreeViewBuildContext.d.ts +16 -0
  74. package/esm/internals/{useTreeView → TreeViewProvider}/useTreeViewBuildContext.js +25 -39
  75. package/esm/internals/components/RichTreeViewItems.js +3 -3
  76. package/esm/internals/hooks/useTreeViewRootProps.d.ts +287 -0
  77. package/esm/internals/hooks/useTreeViewRootProps.js +30 -0
  78. package/esm/internals/hooks/useTreeViewStore.d.ts +10 -0
  79. package/esm/internals/hooks/useTreeViewStore.js +19 -0
  80. package/esm/internals/index.d.ts +15 -21
  81. package/esm/internals/index.js +11 -14
  82. package/esm/internals/models/events.d.ts +24 -3
  83. package/esm/internals/models/index.d.ts +2 -3
  84. package/esm/internals/models/index.js +2 -3
  85. package/esm/internals/models/itemPlugin.d.ts +9 -0
  86. package/esm/internals/models/treeView.d.ts +5 -9
  87. package/esm/internals/plugins/expansion/TreeViewExpansionPlugin.d.ts +69 -0
  88. package/esm/internals/plugins/expansion/TreeViewExpansionPlugin.js +124 -0
  89. package/esm/internals/plugins/expansion/index.d.ts +2 -0
  90. package/esm/internals/plugins/expansion/index.js +2 -0
  91. package/esm/internals/plugins/expansion/selectors.d.ts +27 -0
  92. package/esm/internals/plugins/{useTreeViewExpansion/useTreeViewExpansion.selectors.js → expansion/selectors.js} +5 -5
  93. package/esm/internals/plugins/expansion/utils.d.ts +5 -0
  94. package/esm/internals/plugins/focus/TreeViewFocusPlugin.d.ts +33 -0
  95. package/esm/internals/plugins/focus/TreeViewFocusPlugin.js +107 -0
  96. package/esm/internals/plugins/focus/index.d.ts +2 -0
  97. package/esm/internals/plugins/focus/index.js +2 -0
  98. package/esm/internals/plugins/focus/selectors.d.ts +21 -0
  99. package/esm/internals/plugins/{useTreeViewFocus/useTreeViewFocus.selectors.js → focus/selectors.js} +6 -6
  100. package/esm/internals/plugins/id/index.d.ts +1 -0
  101. package/esm/internals/plugins/id/index.js +1 -0
  102. package/esm/internals/plugins/id/selectors.d.ts +13 -0
  103. package/esm/internals/plugins/id/selectors.js +18 -0
  104. package/esm/internals/plugins/items/TreeViewItemsPlugin.d.ts +105 -0
  105. package/esm/internals/plugins/items/TreeViewItemsPlugin.js +223 -0
  106. package/esm/internals/plugins/items/index.d.ts +3 -0
  107. package/esm/internals/plugins/items/index.js +3 -0
  108. package/esm/internals/plugins/items/selectors.d.ts +60 -0
  109. package/esm/internals/plugins/items/selectors.js +64 -0
  110. package/esm/internals/plugins/items/utils.d.ts +43 -0
  111. package/esm/internals/plugins/{useTreeViewItems/useTreeViewItems.utils.js → items/utils.js} +6 -50
  112. package/esm/internals/plugins/{useTreeViewJSXItems/useTreeViewJSXItems.types.d.ts → jsxItems/TreeViewJSXItemsPlugin.d.ts} +6 -13
  113. package/esm/internals/plugins/jsxItems/TreeViewJSXItemsPlugin.js +81 -0
  114. package/esm/internals/plugins/jsxItems/index.d.ts +1 -0
  115. package/esm/internals/plugins/jsxItems/index.js +1 -0
  116. package/esm/internals/plugins/jsxItems/itemPlugin.d.ts +4 -0
  117. package/esm/internals/plugins/{useTreeViewJSXItems → jsxItems}/itemPlugin.js +29 -17
  118. package/esm/internals/plugins/keyboardNavigation/TreeViewKeyboardNavigationPlugin.d.ts +28 -0
  119. package/esm/internals/plugins/keyboardNavigation/TreeViewKeyboardNavigationPlugin.js +306 -0
  120. package/esm/internals/plugins/keyboardNavigation/index.d.ts +1 -0
  121. package/esm/internals/plugins/keyboardNavigation/index.js +1 -0
  122. package/esm/internals/plugins/labelEditing/TreeViewLabelEditingPlugin.d.ts +22 -0
  123. package/esm/internals/plugins/labelEditing/TreeViewLabelEditingPlugin.js +50 -0
  124. package/esm/internals/plugins/labelEditing/index.d.ts +2 -0
  125. package/esm/internals/plugins/labelEditing/index.js +2 -0
  126. package/{internals/plugins/useTreeViewLabel → esm/internals/plugins/labelEditing}/itemPlugin.d.ts +5 -4
  127. package/esm/internals/plugins/{useTreeViewLabel → labelEditing}/itemPlugin.js +2 -2
  128. package/esm/internals/plugins/labelEditing/selectors.d.ts +15 -0
  129. package/esm/internals/plugins/{useTreeViewLabel/useTreeViewLabel.selectors.js → labelEditing/selectors.js} +4 -4
  130. package/esm/internals/plugins/lazyLoading/index.d.ts +2 -0
  131. package/esm/internals/plugins/lazyLoading/index.js +2 -0
  132. package/esm/internals/plugins/lazyLoading/selectors.d.ts +19 -0
  133. package/esm/internals/plugins/lazyLoading/selectors.js +25 -0
  134. package/esm/internals/plugins/lazyLoading/types.d.ts +5 -0
  135. package/esm/internals/plugins/selection/TreeViewSelectionPlugin.d.ts +73 -0
  136. package/esm/internals/plugins/selection/TreeViewSelectionPlugin.js +319 -0
  137. package/esm/internals/plugins/selection/index.d.ts +2 -0
  138. package/esm/internals/plugins/selection/index.js +2 -0
  139. package/esm/internals/plugins/{useTreeViewSelection → selection}/itemPlugin.d.ts +1 -1
  140. package/esm/internals/plugins/{useTreeViewSelection → selection}/itemPlugin.js +3 -3
  141. package/esm/internals/plugins/selection/selectors.d.ts +48 -0
  142. package/esm/internals/plugins/{useTreeViewSelection/useTreeViewSelection.selectors.js → selection/selectors.js} +14 -9
  143. package/esm/internals/utils/tree.d.ts +8 -10
  144. package/esm/internals/utils/tree.js +2 -2
  145. package/esm/models/items.d.ts +5 -2
  146. package/esm/useTreeItem/useTreeItem.d.ts +18 -2
  147. package/esm/useTreeItem/useTreeItem.js +14 -18
  148. package/esm/useTreeItem/useTreeItem.types.d.ts +4 -19
  149. package/hooks/useApplyPropagationToSelectedItemsOnMount.js +2 -2
  150. package/hooks/useRichTreeViewApiRef.d.ts +2 -2
  151. package/hooks/useSimpleTreeViewApiRef.d.ts +2 -3
  152. package/hooks/useTreeItemModel.d.ts +2 -2
  153. package/hooks/useTreeItemModel.js +2 -2
  154. package/hooks/useTreeItemUtils/useTreeItemUtils.d.ts +9 -19
  155. package/hooks/useTreeItemUtils/useTreeItemUtils.js +41 -49
  156. package/hooks/useTreeViewApiRef.d.ts +2 -4
  157. package/hooks/useTreeViewApiRef.js +2 -4
  158. package/index.d.ts +0 -1
  159. package/index.js +1 -22
  160. package/internals/MinimalTreeViewStore/MinimalTreeViewStore.d.ts +90 -0
  161. package/internals/MinimalTreeViewStore/MinimalTreeViewStore.js +134 -0
  162. package/internals/MinimalTreeViewStore/MinimalTreeViewStore.types.d.ts +272 -0
  163. package/internals/MinimalTreeViewStore/MinimalTreeViewStore.utils.d.ts +21 -0
  164. package/internals/MinimalTreeViewStore/MinimalTreeViewStore.utils.js +58 -0
  165. package/internals/MinimalTreeViewStore/TimeoutManager.d.ts +9 -0
  166. package/internals/MinimalTreeViewStore/TimeoutManager.js +46 -0
  167. package/internals/MinimalTreeViewStore/TreeViewItemPluginManager.d.ts +12 -0
  168. package/internals/MinimalTreeViewStore/TreeViewItemPluginManager.js +23 -0
  169. package/internals/MinimalTreeViewStore/index.d.ts +2 -0
  170. package/internals/MinimalTreeViewStore/index.js +27 -0
  171. package/internals/RichTreeViewStore/RichTreeViewStore.d.ts +53 -0
  172. package/internals/RichTreeViewStore/RichTreeViewStore.js +30 -0
  173. package/internals/RichTreeViewStore/RichTreeViewStore.types.d.ts +34 -0
  174. package/internals/RichTreeViewStore/RichTreeViewStore.utils.d.ts +3 -0
  175. package/internals/RichTreeViewStore/RichTreeViewStore.utils.js +22 -0
  176. package/internals/RichTreeViewStore/index.d.ts +3 -0
  177. package/internals/RichTreeViewStore/index.js +38 -0
  178. package/internals/SimpleTreeViewStore/SimpleTreeViewStore.d.ts +8 -0
  179. package/internals/SimpleTreeViewStore/SimpleTreeViewStore.js +26 -0
  180. package/internals/SimpleTreeViewStore/SimpleTreeViewStore.types.d.ts +9 -0
  181. package/internals/SimpleTreeViewStore/SimpleTreeViewStore.utils.d.ts +3 -0
  182. package/internals/SimpleTreeViewStore/SimpleTreeViewStore.utils.js +11 -0
  183. package/internals/SimpleTreeViewStore/index.d.ts +2 -0
  184. package/internals/SimpleTreeViewStore/index.js +27 -0
  185. package/internals/TreeViewItemDepthContext/TreeViewItemDepthContext.d.ts +2 -3
  186. package/internals/TreeViewProvider/TreeViewChildrenItemProvider.js +3 -4
  187. package/internals/TreeViewProvider/TreeViewContext.d.ts +3 -3
  188. package/internals/TreeViewProvider/TreeViewProvider.d.ts +2 -2
  189. package/internals/TreeViewProvider/TreeViewProvider.js +14 -9
  190. package/internals/TreeViewProvider/TreeViewProvider.types.d.ts +8 -10
  191. package/internals/TreeViewProvider/index.d.ts +1 -1
  192. package/internals/TreeViewProvider/useTreeViewBuildContext.d.ts +16 -0
  193. package/internals/{useTreeView → TreeViewProvider}/useTreeViewBuildContext.js +25 -39
  194. package/internals/components/RichTreeViewItems.js +9 -9
  195. package/internals/hooks/useTreeViewRootProps.d.ts +287 -0
  196. package/internals/hooks/useTreeViewRootProps.js +36 -0
  197. package/internals/hooks/useTreeViewStore.d.ts +10 -0
  198. package/internals/hooks/useTreeViewStore.js +26 -0
  199. package/internals/index.d.ts +15 -21
  200. package/internals/index.js +40 -70
  201. package/internals/models/events.d.ts +24 -3
  202. package/internals/models/index.d.ts +2 -3
  203. package/internals/models/index.js +11 -22
  204. package/internals/models/itemPlugin.d.ts +9 -0
  205. package/internals/models/treeView.d.ts +5 -9
  206. package/internals/plugins/expansion/TreeViewExpansionPlugin.d.ts +69 -0
  207. package/internals/plugins/expansion/TreeViewExpansionPlugin.js +132 -0
  208. package/internals/plugins/expansion/index.d.ts +2 -0
  209. package/internals/plugins/expansion/index.js +27 -0
  210. package/internals/plugins/expansion/selectors.d.ts +27 -0
  211. package/internals/plugins/{useTreeViewExpansion/useTreeViewExpansion.selectors.js → expansion/selectors.js} +8 -8
  212. package/internals/plugins/expansion/utils.d.ts +5 -0
  213. package/internals/plugins/focus/TreeViewFocusPlugin.d.ts +33 -0
  214. package/internals/plugins/focus/TreeViewFocusPlugin.js +114 -0
  215. package/internals/plugins/focus/index.d.ts +2 -0
  216. package/internals/plugins/focus/index.js +27 -0
  217. package/internals/plugins/focus/selectors.d.ts +21 -0
  218. package/internals/plugins/{useTreeViewFocus/useTreeViewFocus.selectors.js → focus/selectors.js} +9 -9
  219. package/internals/plugins/id/index.d.ts +1 -0
  220. package/internals/plugins/id/index.js +16 -0
  221. package/internals/plugins/id/selectors.d.ts +13 -0
  222. package/internals/plugins/id/selectors.js +24 -0
  223. package/internals/plugins/items/TreeViewItemsPlugin.d.ts +105 -0
  224. package/internals/plugins/items/TreeViewItemsPlugin.js +231 -0
  225. package/internals/plugins/items/index.d.ts +3 -0
  226. package/internals/plugins/items/index.js +46 -0
  227. package/internals/plugins/items/selectors.d.ts +60 -0
  228. package/internals/plugins/{useTreeViewItems/useTreeViewItems.selectors.js → items/selectors.js} +16 -16
  229. package/internals/plugins/items/utils.d.ts +43 -0
  230. package/internals/plugins/{useTreeViewItems/useTreeViewItems.utils.js → items/utils.js} +6 -51
  231. package/internals/plugins/{useTreeViewJSXItems/useTreeViewJSXItems.types.d.ts → jsxItems/TreeViewJSXItemsPlugin.d.ts} +6 -13
  232. package/internals/plugins/jsxItems/TreeViewJSXItemsPlugin.js +89 -0
  233. package/internals/plugins/jsxItems/index.d.ts +1 -0
  234. package/internals/plugins/jsxItems/index.js +16 -0
  235. package/internals/plugins/jsxItems/itemPlugin.d.ts +4 -0
  236. package/internals/plugins/{useTreeViewJSXItems → jsxItems}/itemPlugin.js +30 -17
  237. package/internals/plugins/keyboardNavigation/TreeViewKeyboardNavigationPlugin.d.ts +28 -0
  238. package/internals/plugins/keyboardNavigation/TreeViewKeyboardNavigationPlugin.js +313 -0
  239. package/internals/plugins/keyboardNavigation/index.d.ts +1 -0
  240. package/internals/plugins/keyboardNavigation/index.js +16 -0
  241. package/internals/plugins/labelEditing/TreeViewLabelEditingPlugin.d.ts +22 -0
  242. package/internals/plugins/labelEditing/TreeViewLabelEditingPlugin.js +58 -0
  243. package/internals/plugins/labelEditing/index.d.ts +2 -0
  244. package/internals/plugins/labelEditing/index.js +27 -0
  245. package/{esm/internals/plugins/useTreeViewLabel → internals/plugins/labelEditing}/itemPlugin.d.ts +5 -4
  246. package/internals/plugins/{useTreeViewLabel → labelEditing}/itemPlugin.js +6 -6
  247. package/internals/plugins/labelEditing/selectors.d.ts +15 -0
  248. package/internals/plugins/{useTreeViewLabel/useTreeViewLabel.selectors.js → labelEditing/selectors.js} +4 -4
  249. package/internals/plugins/lazyLoading/index.d.ts +2 -0
  250. package/internals/plugins/lazyLoading/index.js +27 -0
  251. package/internals/plugins/lazyLoading/selectors.d.ts +19 -0
  252. package/internals/plugins/{useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.js → lazyLoading/selectors.js} +11 -6
  253. package/internals/plugins/lazyLoading/types.d.ts +5 -0
  254. package/internals/plugins/selection/TreeViewSelectionPlugin.d.ts +73 -0
  255. package/internals/plugins/selection/TreeViewSelectionPlugin.js +327 -0
  256. package/internals/plugins/selection/index.d.ts +2 -0
  257. package/internals/plugins/selection/index.js +27 -0
  258. package/internals/plugins/{useTreeViewSelection → selection}/itemPlugin.d.ts +1 -1
  259. package/internals/plugins/{useTreeViewSelection → selection}/itemPlugin.js +13 -13
  260. package/internals/plugins/selection/selectors.d.ts +48 -0
  261. package/internals/plugins/{useTreeViewSelection/useTreeViewSelection.selectors.js → selection/selectors.js} +14 -9
  262. package/internals/utils/tree.d.ts +8 -10
  263. package/internals/utils/tree.js +33 -33
  264. package/models/items.d.ts +5 -2
  265. package/package.json +2 -2
  266. package/useTreeItem/useTreeItem.d.ts +18 -2
  267. package/useTreeItem/useTreeItem.js +18 -23
  268. package/useTreeItem/useTreeItem.types.d.ts +4 -19
  269. package/RichTreeView/RichTreeView.plugins.d.ts +0 -10
  270. package/RichTreeView/RichTreeView.plugins.js +0 -15
  271. package/SimpleTreeView/SimpleTreeView.plugins.d.ts +0 -9
  272. package/SimpleTreeView/SimpleTreeView.plugins.js +0 -15
  273. package/esm/RichTreeView/RichTreeView.plugins.d.ts +0 -10
  274. package/esm/RichTreeView/RichTreeView.plugins.js +0 -9
  275. package/esm/SimpleTreeView/SimpleTreeView.plugins.d.ts +0 -9
  276. package/esm/SimpleTreeView/SimpleTreeView.plugins.js +0 -9
  277. package/esm/internals/corePlugins/corePlugins.d.ts +0 -9
  278. package/esm/internals/corePlugins/corePlugins.js +0 -8
  279. package/esm/internals/corePlugins/index.d.ts +0 -2
  280. package/esm/internals/corePlugins/index.js +0 -1
  281. package/esm/internals/corePlugins/useTreeViewId/index.d.ts +0 -3
  282. package/esm/internals/corePlugins/useTreeViewId/index.js +0 -2
  283. package/esm/internals/corePlugins/useTreeViewId/useTreeViewId.d.ts +0 -3
  284. package/esm/internals/corePlugins/useTreeViewId/useTreeViewId.js +0 -38
  285. package/esm/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.d.ts +0 -10
  286. package/esm/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.js +0 -9
  287. package/esm/internals/corePlugins/useTreeViewId/useTreeViewId.types.d.ts +0 -20
  288. package/esm/internals/corePlugins/useTreeViewId/useTreeViewId.utils.d.ts +0 -21
  289. package/esm/internals/corePlugins/useTreeViewId/useTreeViewId.utils.js +0 -26
  290. package/esm/internals/corePlugins/useTreeViewInstanceEvents/index.d.ts +0 -2
  291. package/esm/internals/corePlugins/useTreeViewInstanceEvents/index.js +0 -1
  292. package/esm/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.d.ts +0 -3
  293. package/esm/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.js +0 -31
  294. package/esm/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.types.d.ts +0 -22
  295. package/esm/internals/corePlugins/useTreeViewOptionalPlugins/index.d.ts +0 -2
  296. package/esm/internals/corePlugins/useTreeViewOptionalPlugins/index.js +0 -1
  297. package/esm/internals/corePlugins/useTreeViewOptionalPlugins/useTreeViewOptionalPlugins.d.ts +0 -3
  298. package/esm/internals/corePlugins/useTreeViewOptionalPlugins/useTreeViewOptionalPlugins.js +0 -12
  299. package/esm/internals/corePlugins/useTreeViewOptionalPlugins/useTreeViewOptionalPlugins.types.d.ts +0 -8
  300. package/esm/internals/hooks/useInstanceEventHandler.d.ts +0 -15
  301. package/esm/internals/hooks/useInstanceEventHandler.js +0 -79
  302. package/esm/internals/models/helpers.d.ts +0 -7
  303. package/esm/internals/models/plugin.d.ts +0 -166
  304. package/esm/internals/models/plugin.js +0 -1
  305. package/esm/internals/plugins/useTreeViewExpansion/index.d.ts +0 -3
  306. package/esm/internals/plugins/useTreeViewExpansion/index.js +0 -2
  307. package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.d.ts +0 -3
  308. package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +0 -149
  309. package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.d.ts +0 -28
  310. package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +0 -112
  311. package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.js +0 -1
  312. package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.utils.d.ts +0 -6
  313. package/esm/internals/plugins/useTreeViewFocus/index.d.ts +0 -3
  314. package/esm/internals/plugins/useTreeViewFocus/index.js +0 -2
  315. package/esm/internals/plugins/useTreeViewFocus/useTreeViewFocus.d.ts +0 -3
  316. package/esm/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +0 -113
  317. package/esm/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.d.ts +0 -22
  318. package/esm/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.d.ts +0 -45
  319. package/esm/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.js +0 -1
  320. package/esm/internals/plugins/useTreeViewItems/index.d.ts +0 -4
  321. package/esm/internals/plugins/useTreeViewItems/index.js +0 -3
  322. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.d.ts +0 -3
  323. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.js +0 -223
  324. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.d.ts +0 -60
  325. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +0 -64
  326. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.types.d.ts +0 -204
  327. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.types.js +0 -1
  328. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.utils.d.ts +0 -49
  329. package/esm/internals/plugins/useTreeViewJSXItems/index.d.ts +0 -2
  330. package/esm/internals/plugins/useTreeViewJSXItems/index.js +0 -1
  331. package/esm/internals/plugins/useTreeViewJSXItems/itemPlugin.d.ts +0 -2
  332. package/esm/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.d.ts +0 -3
  333. package/esm/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +0 -104
  334. package/esm/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.types.js +0 -1
  335. package/esm/internals/plugins/useTreeViewKeyboardNavigation/index.d.ts +0 -2
  336. package/esm/internals/plugins/useTreeViewKeyboardNavigation/index.js +0 -1
  337. package/esm/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.d.ts +0 -3
  338. package/esm/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +0 -305
  339. package/esm/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +0 -32
  340. package/esm/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.js +0 -1
  341. package/esm/internals/plugins/useTreeViewLabel/index.d.ts +0 -3
  342. package/esm/internals/plugins/useTreeViewLabel/index.js +0 -2
  343. package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.d.ts +0 -3
  344. package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +0 -70
  345. package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.d.ts +0 -16
  346. package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.types.d.ts +0 -50
  347. package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.types.js +0 -1
  348. package/esm/internals/plugins/useTreeViewLazyLoading/index.d.ts +0 -2
  349. package/esm/internals/plugins/useTreeViewLazyLoading/index.js +0 -1
  350. package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.d.ts +0 -24
  351. package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.js +0 -20
  352. package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.d.ts +0 -100
  353. package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.js +0 -1
  354. package/esm/internals/plugins/useTreeViewSelection/index.d.ts +0 -3
  355. package/esm/internals/plugins/useTreeViewSelection/index.js +0 -2
  356. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.d.ts +0 -3
  357. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +0 -231
  358. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.d.ts +0 -45
  359. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +0 -132
  360. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.js +0 -1
  361. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.d.ts +0 -31
  362. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +0 -107
  363. package/esm/internals/useTreeView/index.d.ts +0 -1
  364. package/esm/internals/useTreeView/index.js +0 -1
  365. package/esm/internals/useTreeView/useExtractPluginParamsFromProps.d.ts +0 -19
  366. package/esm/internals/useTreeView/useExtractPluginParamsFromProps.js +0 -51
  367. package/esm/internals/useTreeView/useTreeView.d.ts +0 -18
  368. package/esm/internals/useTreeView/useTreeView.js +0 -102
  369. package/esm/internals/useTreeView/useTreeView.types.d.ts +0 -20
  370. package/esm/internals/useTreeView/useTreeView.types.js +0 -1
  371. package/esm/internals/useTreeView/useTreeViewBuildContext.d.ts +0 -13
  372. package/esm/internals/utils/cleanupTracking/CleanupTracking.d.ts +0 -9
  373. package/esm/internals/utils/cleanupTracking/CleanupTracking.js +0 -1
  374. package/esm/internals/utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking.d.ts +0 -7
  375. package/esm/internals/utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking.js +0 -14
  376. package/esm/internals/utils/cleanupTracking/TimerBasedCleanupTracking.d.ts +0 -9
  377. package/esm/internals/utils/cleanupTracking/TimerBasedCleanupTracking.js +0 -38
  378. package/esm/internals/utils/plugins.d.ts +0 -2
  379. package/esm/internals/utils/plugins.js +0 -4
  380. package/esm/internals/utils/publishTreeViewEvent.d.ts +0 -5
  381. package/esm/internals/utils/publishTreeViewEvent.js +0 -3
  382. package/internals/corePlugins/corePlugins.d.ts +0 -9
  383. package/internals/corePlugins/corePlugins.js +0 -14
  384. package/internals/corePlugins/index.d.ts +0 -2
  385. package/internals/corePlugins/index.js +0 -12
  386. package/internals/corePlugins/useTreeViewId/index.d.ts +0 -3
  387. package/internals/corePlugins/useTreeViewId/index.js +0 -19
  388. package/internals/corePlugins/useTreeViewId/useTreeViewId.d.ts +0 -3
  389. package/internals/corePlugins/useTreeViewId/useTreeViewId.js +0 -46
  390. package/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.d.ts +0 -10
  391. package/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.js +0 -15
  392. package/internals/corePlugins/useTreeViewId/useTreeViewId.types.d.ts +0 -20
  393. package/internals/corePlugins/useTreeViewId/useTreeViewId.utils.d.ts +0 -21
  394. package/internals/corePlugins/useTreeViewId/useTreeViewId.utils.js +0 -34
  395. package/internals/corePlugins/useTreeViewInstanceEvents/index.d.ts +0 -2
  396. package/internals/corePlugins/useTreeViewInstanceEvents/index.js +0 -12
  397. package/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.d.ts +0 -3
  398. package/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.js +0 -38
  399. package/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.types.d.ts +0 -22
  400. package/internals/corePlugins/useTreeViewOptionalPlugins/index.d.ts +0 -2
  401. package/internals/corePlugins/useTreeViewOptionalPlugins/index.js +0 -12
  402. package/internals/corePlugins/useTreeViewOptionalPlugins/useTreeViewOptionalPlugins.d.ts +0 -3
  403. package/internals/corePlugins/useTreeViewOptionalPlugins/useTreeViewOptionalPlugins.js +0 -19
  404. package/internals/corePlugins/useTreeViewOptionalPlugins/useTreeViewOptionalPlugins.types.d.ts +0 -8
  405. package/internals/hooks/useInstanceEventHandler.d.ts +0 -15
  406. package/internals/hooks/useInstanceEventHandler.js +0 -87
  407. package/internals/models/helpers.d.ts +0 -7
  408. package/internals/models/plugin.d.ts +0 -166
  409. package/internals/models/plugin.js +0 -5
  410. package/internals/plugins/useTreeViewExpansion/index.d.ts +0 -3
  411. package/internals/plugins/useTreeViewExpansion/index.js +0 -19
  412. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.d.ts +0 -3
  413. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +0 -157
  414. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.d.ts +0 -28
  415. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +0 -112
  416. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.js +0 -5
  417. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.utils.d.ts +0 -6
  418. package/internals/plugins/useTreeViewFocus/index.d.ts +0 -3
  419. package/internals/plugins/useTreeViewFocus/index.js +0 -19
  420. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.d.ts +0 -3
  421. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +0 -121
  422. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.d.ts +0 -22
  423. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.d.ts +0 -45
  424. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.js +0 -5
  425. package/internals/plugins/useTreeViewItems/index.d.ts +0 -4
  426. package/internals/plugins/useTreeViewItems/index.js +0 -32
  427. package/internals/plugins/useTreeViewItems/useTreeViewItems.d.ts +0 -3
  428. package/internals/plugins/useTreeViewItems/useTreeViewItems.js +0 -231
  429. package/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.d.ts +0 -60
  430. package/internals/plugins/useTreeViewItems/useTreeViewItems.types.d.ts +0 -204
  431. package/internals/plugins/useTreeViewItems/useTreeViewItems.types.js +0 -5
  432. package/internals/plugins/useTreeViewItems/useTreeViewItems.utils.d.ts +0 -49
  433. package/internals/plugins/useTreeViewJSXItems/index.d.ts +0 -2
  434. package/internals/plugins/useTreeViewJSXItems/index.js +0 -12
  435. package/internals/plugins/useTreeViewJSXItems/itemPlugin.d.ts +0 -2
  436. package/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.d.ts +0 -3
  437. package/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +0 -112
  438. package/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.types.js +0 -5
  439. package/internals/plugins/useTreeViewKeyboardNavigation/index.d.ts +0 -2
  440. package/internals/plugins/useTreeViewKeyboardNavigation/index.js +0 -12
  441. package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.d.ts +0 -3
  442. package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +0 -312
  443. package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +0 -32
  444. package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.js +0 -5
  445. package/internals/plugins/useTreeViewLabel/index.d.ts +0 -3
  446. package/internals/plugins/useTreeViewLabel/index.js +0 -19
  447. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.d.ts +0 -3
  448. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +0 -78
  449. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.d.ts +0 -16
  450. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.types.d.ts +0 -50
  451. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.types.js +0 -5
  452. package/internals/plugins/useTreeViewLazyLoading/index.d.ts +0 -2
  453. package/internals/plugins/useTreeViewLazyLoading/index.js +0 -12
  454. package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.d.ts +0 -24
  455. package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.d.ts +0 -100
  456. package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.js +0 -5
  457. package/internals/plugins/useTreeViewSelection/index.d.ts +0 -3
  458. package/internals/plugins/useTreeViewSelection/index.js +0 -19
  459. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.d.ts +0 -3
  460. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +0 -240
  461. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.d.ts +0 -45
  462. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +0 -132
  463. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.js +0 -5
  464. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.d.ts +0 -31
  465. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +0 -116
  466. package/internals/useTreeView/index.d.ts +0 -1
  467. package/internals/useTreeView/index.js +0 -12
  468. package/internals/useTreeView/useExtractPluginParamsFromProps.d.ts +0 -19
  469. package/internals/useTreeView/useExtractPluginParamsFromProps.js +0 -60
  470. package/internals/useTreeView/useTreeView.d.ts +0 -18
  471. package/internals/useTreeView/useTreeView.js +0 -112
  472. package/internals/useTreeView/useTreeView.types.d.ts +0 -20
  473. package/internals/useTreeView/useTreeView.types.js +0 -5
  474. package/internals/useTreeView/useTreeViewBuildContext.d.ts +0 -13
  475. package/internals/utils/cleanupTracking/CleanupTracking.d.ts +0 -9
  476. package/internals/utils/cleanupTracking/CleanupTracking.js +0 -5
  477. package/internals/utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking.d.ts +0 -7
  478. package/internals/utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking.js +0 -21
  479. package/internals/utils/cleanupTracking/TimerBasedCleanupTracking.d.ts +0 -9
  480. package/internals/utils/cleanupTracking/TimerBasedCleanupTracking.js +0 -45
  481. package/internals/utils/plugins.d.ts +0 -2
  482. package/internals/utils/plugins.js +0 -11
  483. package/internals/utils/publishTreeViewEvent.d.ts +0 -5
  484. package/internals/utils/publishTreeViewEvent.js +0 -10
  485. /package/esm/internals/{corePlugins/useTreeViewId/useTreeViewId.types.js → MinimalTreeViewStore/MinimalTreeViewStore.types.js} +0 -0
  486. /package/esm/internals/{corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.types.js → RichTreeViewStore/RichTreeViewStore.types.js} +0 -0
  487. /package/esm/internals/{corePlugins/useTreeViewOptionalPlugins/useTreeViewOptionalPlugins.types.js → SimpleTreeViewStore/SimpleTreeViewStore.types.js} +0 -0
  488. /package/esm/internals/plugins/{useTreeViewExpansion/useTreeViewExpansion.utils.js → expansion/utils.js} +0 -0
  489. /package/esm/internals/{models/helpers.js → plugins/lazyLoading/types.js} +0 -0
  490. /package/internals/{corePlugins/useTreeViewId/useTreeViewId.types.js → MinimalTreeViewStore/MinimalTreeViewStore.types.js} +0 -0
  491. /package/internals/{corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.types.js → RichTreeViewStore/RichTreeViewStore.types.js} +0 -0
  492. /package/internals/{corePlugins/useTreeViewOptionalPlugins/useTreeViewOptionalPlugins.types.js → SimpleTreeViewStore/SimpleTreeViewStore.types.js} +0 -0
  493. /package/internals/plugins/{useTreeViewExpansion/useTreeViewExpansion.utils.js → expansion/utils.js} +0 -0
  494. /package/internals/{models/helpers.js → plugins/lazyLoading/types.js} +0 -0
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.TREE_VIEW_ROOT_PARENT_ID = void 0;
7
7
  exports.buildItemsLookups = buildItemsLookups;
8
- exports.buildItemsState = buildItemsState;
9
8
  exports.isItemDisabled = exports.buildSiblingIndexes = void 0;
10
9
  const TREE_VIEW_ROOT_PARENT_ID = exports.TREE_VIEW_ROOT_PARENT_ID = '__TREE_VIEW_ROOT_PARENT_ID__';
11
10
  const buildSiblingIndexes = siblings => {
@@ -48,53 +47,9 @@ const isItemDisabled = (itemMetaLookup, itemId) => {
48
47
  return false;
49
48
  };
50
49
  exports.isItemDisabled = isItemDisabled;
51
- function buildItemsState(parameters) {
52
- const {
53
- config,
54
- items: itemsParam,
55
- disabledItemsFocusable
56
- } = parameters;
57
- const itemMetaLookup = {};
58
- const itemModelLookup = {};
59
- const itemOrderedChildrenIdsLookup = {};
60
- const itemChildrenIndexesLookup = {};
61
- function processSiblings(items, parentId, depth) {
62
- const parentIdWithDefault = parentId ?? TREE_VIEW_ROOT_PARENT_ID;
63
- const {
64
- metaLookup,
65
- modelLookup,
66
- orderedChildrenIds,
67
- childrenIndexes,
68
- itemsChildren
69
- } = buildItemsLookups({
70
- config,
71
- items,
72
- parentId,
73
- depth,
74
- isItemExpandable: (item, children) => !!children && children.length > 0,
75
- otherItemsMetaLookup: itemMetaLookup
76
- });
77
- Object.assign(itemMetaLookup, metaLookup);
78
- Object.assign(itemModelLookup, modelLookup);
79
- itemOrderedChildrenIdsLookup[parentIdWithDefault] = orderedChildrenIds;
80
- itemChildrenIndexesLookup[parentIdWithDefault] = childrenIndexes;
81
- for (const item of itemsChildren) {
82
- processSiblings(item.children || [], item.id, depth + 1);
83
- }
84
- }
85
- processSiblings(itemsParam, null, 0);
86
- return {
87
- disabledItemsFocusable,
88
- itemMetaLookup,
89
- itemModelLookup,
90
- itemOrderedChildrenIdsLookup,
91
- itemChildrenIndexesLookup,
92
- domStructure: 'nested'
93
- };
94
- }
95
50
  function buildItemsLookups(parameters) {
96
51
  const {
97
- config,
52
+ storeParameters,
98
53
  items,
99
54
  parentId,
100
55
  depth,
@@ -106,7 +61,7 @@ function buildItemsLookups(parameters) {
106
61
  const orderedChildrenIds = [];
107
62
  const itemsChildren = [];
108
63
  const processItem = item => {
109
- const id = config.getItemId ? config.getItemId(item) : item.id;
64
+ const id = storeParameters.getItemId ? storeParameters.getItemId(item) : item.id;
110
65
  checkId({
111
66
  id,
112
67
  parentId,
@@ -114,11 +69,11 @@ function buildItemsLookups(parameters) {
114
69
  itemMetaLookup: otherItemsMetaLookup,
115
70
  siblingsMetaLookup: metaLookup
116
71
  });
117
- const label = config.getItemLabel ? config.getItemLabel(item) : item.label;
72
+ const label = storeParameters.getItemLabel ? storeParameters.getItemLabel(item) : item.label;
118
73
  if (label == null) {
119
74
  throw new Error(['MUI X: The Tree View component requires all items to have a `label` property.', 'Alternatively, you can use the `getItemLabel` prop to specify a custom label for each item.', 'An item was provided without label in the `items` prop:', JSON.stringify(item)].join('\n'));
120
75
  }
121
- const children = (config.getItemChildren ? config.getItemChildren(item) : item.children) || [];
76
+ const children = (storeParameters.getItemChildren ? storeParameters.getItemChildren(item) : item.children) || [];
122
77
  itemsChildren.push({
123
78
  id,
124
79
  children
@@ -130,8 +85,8 @@ function buildItemsLookups(parameters) {
130
85
  parentId,
131
86
  idAttribute: undefined,
132
87
  expandable: isItemExpandable(item, children),
133
- disabled: config.isItemDisabled ? config.isItemDisabled(item) : false,
134
- selectable: config.isItemSelectionDisabled ? !config.isItemSelectionDisabled(item) : true,
88
+ disabled: storeParameters.isItemDisabled ? storeParameters.isItemDisabled(item) : false,
89
+ selectable: storeParameters.isItemSelectionDisabled ? !storeParameters.isItemSelectionDisabled(item) : true,
135
90
  depth
136
91
  };
137
92
  orderedChildrenIds.push(id);
@@ -1,8 +1,9 @@
1
- import { TreeViewItemMeta, TreeViewPluginSignature } from "../../models/index.js";
2
- import { UseTreeViewItemsSignature } from "../useTreeViewItems/index.js";
3
- import { UseTreeViewKeyboardNavigationSignature } from "../useTreeViewKeyboardNavigation/index.js";
4
1
  import { TreeViewItemId } from "../../../models/index.js";
5
- export interface UseTreeViewItemsInstance {
2
+ import { TreeViewItemMeta } from "../../models/index.js";
3
+ import type { SimpleTreeViewStore } from "../../SimpleTreeViewStore/index.js";
4
+ export declare class TreeViewJSXItemsPlugin {
5
+ private store;
6
+ constructor(store: SimpleTreeViewStore<any>);
6
7
  /**
7
8
  * Insert a new item in the state from a Tree Item component.
8
9
  * @param {TreeViewItemMeta} item The meta-information of the item to insert.
@@ -24,12 +25,4 @@ export interface UseTreeViewItemsInstance {
24
25
  * @param {TreeViewItemId[]} orderedChildrenIds The ids of the item's children.
25
26
  */
26
27
  setJSXItemsOrderedChildrenIds: (parentId: TreeViewItemId | null, orderedChildrenIds: TreeViewItemId[]) => void;
27
- }
28
- export interface UseTreeViewJSXItemsParameters {}
29
- export interface UseTreeViewItemsParametersWithDefaults {}
30
- export type UseTreeViewJSXItemsSignature = TreeViewPluginSignature<{
31
- params: UseTreeViewJSXItemsParameters;
32
- paramsWithDefaults: UseTreeViewItemsParametersWithDefaults;
33
- instance: UseTreeViewItemsInstance;
34
- dependencies: [UseTreeViewItemsSignature, UseTreeViewKeyboardNavigationSignature];
35
- }>;
28
+ }
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.TreeViewJSXItemsPlugin = void 0;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _items = require("../items");
10
+ var _itemPlugin = require("./itemPlugin");
11
+ class TreeViewJSXItemsPlugin {
12
+ constructor(store) {
13
+ this.store = store;
14
+ store.itemPluginManager.register(_itemPlugin.useJSXItemsItemPlugin, _itemPlugin.jsxItemsitemWrapper);
15
+ }
16
+
17
+ /**
18
+ * Insert a new item in the state from a Tree Item component.
19
+ * @param {TreeViewItemMeta} item The meta-information of the item to insert.
20
+ * @returns {() => void} A function to remove the item from the state.
21
+ */
22
+ insertJSXItem = item => {
23
+ if (this.store.state.itemMetaLookup[item.id] != null) {
24
+ throw new Error(['MUI X: The Tree View component requires all items to have a unique `id` property.', 'Alternatively, you can use the `getItemId` prop to specify a custom id for each item.', `Two items were provided with the same id in the \`items\` prop: "${item.id}"`].join('\n'));
25
+ }
26
+ this.store.update({
27
+ itemMetaLookup: (0, _extends2.default)({}, this.store.state.itemMetaLookup, {
28
+ [item.id]: item
29
+ }),
30
+ // For Simple Tree View, we don't have a proper `item` object, so we create a very basic one.
31
+ itemModelLookup: (0, _extends2.default)({}, this.store.state.itemModelLookup, {
32
+ [item.id]: {
33
+ id: item.id,
34
+ label: item.label ?? ''
35
+ }
36
+ })
37
+ });
38
+ return () => {
39
+ const newItemMetaLookup = (0, _extends2.default)({}, this.store.state.itemMetaLookup);
40
+ const newItemModelLookup = (0, _extends2.default)({}, this.store.state.itemModelLookup);
41
+ delete newItemMetaLookup[item.id];
42
+ delete newItemModelLookup[item.id];
43
+ this.store.update({
44
+ itemMetaLookup: newItemMetaLookup,
45
+ itemModelLookup: newItemModelLookup
46
+ });
47
+ };
48
+ };
49
+
50
+ /**
51
+ * Updates the `labelMap` to register the first character of the given item's label.
52
+ * This map is used to navigate the tree using type-ahead search.
53
+ * @param {TreeViewItemId} itemId The id of the item to map the label of.
54
+ * @param {string} label The item's label.
55
+ * @returns {() => void} A function to remove the item from the `labelMap`.
56
+ */
57
+ mapLabelFromJSX = (itemId, label) => {
58
+ this.store.keyboardNavigation.updateLabelMap(labelMap => {
59
+ labelMap[itemId] = label;
60
+ return labelMap;
61
+ });
62
+ return () => {
63
+ this.store.keyboardNavigation.updateLabelMap(labelMap => {
64
+ const newMap = (0, _extends2.default)({}, labelMap);
65
+ delete newMap[itemId];
66
+ return newMap;
67
+ });
68
+ };
69
+ };
70
+
71
+ /**
72
+ * Store the ids of a given item's children in the state.
73
+ * Those ids must be passed in the order they should be rendered.
74
+ * @param {TreeViewItemId | null} parentId The id of the item to store the children of.
75
+ * @param {TreeViewItemId[]} orderedChildrenIds The ids of the item's children.
76
+ */
77
+ setJSXItemsOrderedChildrenIds = (parentId, orderedChildrenIds) => {
78
+ const parentIdWithDefault = parentId ?? _items.TREE_VIEW_ROOT_PARENT_ID;
79
+ this.store.update({
80
+ itemOrderedChildrenIdsLookup: (0, _extends2.default)({}, this.store.state.itemOrderedChildrenIdsLookup, {
81
+ [parentIdWithDefault]: orderedChildrenIds
82
+ }),
83
+ itemChildrenIndexesLookup: (0, _extends2.default)({}, this.store.state.itemChildrenIndexesLookup, {
84
+ [parentIdWithDefault]: (0, _items.buildSiblingIndexes)(orderedChildrenIds)
85
+ })
86
+ });
87
+ };
88
+ }
89
+ exports.TreeViewJSXItemsPlugin = TreeViewJSXItemsPlugin;
@@ -0,0 +1 @@
1
+ export * from "./TreeViewJSXItemsPlugin.js";
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _TreeViewJSXItemsPlugin = require("./TreeViewJSXItemsPlugin");
7
+ Object.keys(_TreeViewJSXItemsPlugin).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _TreeViewJSXItemsPlugin[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _TreeViewJSXItemsPlugin[key];
14
+ }
15
+ });
16
+ });
@@ -0,0 +1,4 @@
1
+ import { TreeItemWrapper, TreeViewItemPlugin } from "../../models/index.js";
2
+ import { SimpleTreeViewStore } from "../../SimpleTreeViewStore/index.js";
3
+ export declare const useJSXItemsItemPlugin: TreeViewItemPlugin;
4
+ export declare const jsxItemsitemWrapper: TreeItemWrapper<SimpleTreeViewStore<any>>;
@@ -5,23 +5,23 @@ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWild
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.useTreeViewJSXItemsItemPlugin = void 0;
8
+ exports.useJSXItemsItemPlugin = exports.jsxItemsitemWrapper = void 0;
9
9
  var React = _interopRequireWildcard(require("react"));
10
10
  var _store = require("@mui/x-internals/store");
11
11
  var _useMergedRefs = require("@base-ui/utils/useMergedRefs");
12
12
  var _useIsoLayoutEffect = require("@base-ui/utils/useIsoLayoutEffect");
13
13
  var _TreeViewProvider = require("../../TreeViewProvider");
14
14
  var _TreeViewChildrenItemProvider = require("../../TreeViewProvider/TreeViewChildrenItemProvider");
15
+ var _TreeViewItemDepthContext = require("../../TreeViewItemDepthContext");
15
16
  var _useTreeItemUtils = require("../../../hooks/useTreeItemUtils/useTreeItemUtils");
16
- var _useTreeViewId = require("../../corePlugins/useTreeViewId");
17
- var _useTreeViewId2 = require("../../corePlugins/useTreeViewId/useTreeViewId.utils");
18
- const useTreeViewJSXItemsItemPlugin = ({
17
+ var _id = require("../id");
18
+ var _jsxRuntime = require("react/jsx-runtime");
19
+ const useJSXItemsItemPlugin = ({
19
20
  props,
20
21
  rootRef,
21
22
  contentRef
22
23
  }) => {
23
24
  const {
24
- instance,
25
25
  store
26
26
  } = (0, _TreeViewProvider.useTreeViewContext)();
27
27
  const {
@@ -44,23 +44,18 @@ const useTreeViewJSXItemsItemPlugin = ({
44
44
  const expandable = (0, _useTreeItemUtils.itemHasChildren)(children);
45
45
  const pluginContentRef = React.useRef(null);
46
46
  const handleContentRef = (0, _useMergedRefs.useMergedRefs)(pluginContentRef, contentRef);
47
- const treeId = (0, _store.useStore)(store, _useTreeViewId.idSelectors.treeId);
47
+ const idAttribute = (0, _store.useStore)(store, _id.idSelectors.treeItemIdAttribute, itemId, id);
48
48
 
49
49
  // Prevent any flashing
50
50
  (0, _useIsoLayoutEffect.useIsoLayoutEffect)(() => {
51
- const idAttribute = (0, _useTreeViewId2.generateTreeItemIdAttribute)({
52
- itemId,
53
- treeId,
54
- id
55
- });
56
51
  registerChild(idAttribute, itemId);
57
52
  return () => {
58
53
  unregisterChild(idAttribute);
59
54
  unregisterChild(idAttribute);
60
55
  };
61
- }, [store, instance, registerChild, unregisterChild, itemId, id, treeId]);
56
+ }, [store, registerChild, unregisterChild, idAttribute, itemId]);
62
57
  (0, _useIsoLayoutEffect.useIsoLayoutEffect)(() => {
63
- return instance.insertJSXItem({
58
+ return store.jsxItems.insertJSXItem({
64
59
  id: itemId,
65
60
  idAttribute: id,
66
61
  parentId,
@@ -68,16 +63,34 @@ const useTreeViewJSXItemsItemPlugin = ({
68
63
  disabled,
69
64
  selectable: !disableSelection
70
65
  });
71
- }, [instance, parentId, itemId, expandable, disabled, disableSelection, id]);
66
+ }, [store, parentId, itemId, expandable, disabled, disableSelection, id]);
72
67
  React.useEffect(() => {
73
68
  if (label) {
74
- return instance.mapLabelFromJSX(itemId, (pluginContentRef.current?.textContent ?? '').toLowerCase());
69
+ return store.jsxItems.mapLabelFromJSX(itemId, (pluginContentRef.current?.textContent ?? '').toLowerCase());
75
70
  }
76
71
  return undefined;
77
- }, [instance, itemId, label]);
72
+ }, [store, itemId, label]);
78
73
  return {
79
74
  contentRef: handleContentRef,
80
75
  rootRef
81
76
  };
82
77
  };
83
- exports.useTreeViewJSXItemsItemPlugin = useTreeViewJSXItemsItemPlugin;
78
+ exports.useJSXItemsItemPlugin = useJSXItemsItemPlugin;
79
+ const jsxItemsitemWrapper = ({
80
+ children,
81
+ itemId,
82
+ idAttribute
83
+ }) => {
84
+ // eslint-disable-next-line react-hooks/rules-of-hooks
85
+ const depthContext = React.useContext(_TreeViewItemDepthContext.TreeViewItemDepthContext);
86
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_TreeViewChildrenItemProvider.TreeViewChildrenItemProvider, {
87
+ itemId: itemId,
88
+ idAttribute: idAttribute,
89
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_TreeViewItemDepthContext.TreeViewItemDepthContext.Provider, {
90
+ value: depthContext + 1,
91
+ children: children
92
+ })
93
+ });
94
+ };
95
+ exports.jsxItemsitemWrapper = jsxItemsitemWrapper;
96
+ if (process.env.NODE_ENV !== "production") jsxItemsitemWrapper.displayName = "jsxItemsitemWrapper";
@@ -0,0 +1,28 @@
1
+ import { TreeViewCancellableEvent, TreeViewItemId } from "../../../models/index.js";
2
+ type TreeViewLabelMap = {
3
+ [itemId: string]: string;
4
+ };
5
+ export declare class TreeViewKeyboardNavigationPlugin {
6
+ private store;
7
+ private labelMap;
8
+ private typeaheadQuery;
9
+ constructor(store: any);
10
+ private canToggleItemSelection;
11
+ private canToggleItemExpansion;
12
+ private getFirstItemMatchingTypeaheadQuery;
13
+ /**
14
+ * Updates the `labelMap` to add/remove the first character of some item's labels.
15
+ * This map is used to navigate the tree using type-ahead search.
16
+ * This method is only used by the `useTreeViewJSXItems` plugin, otherwise the updates are handled internally.
17
+ * @param {(map: TreeViewLabelMap) => TreeViewLabelMap} updater The function to update the map.
18
+ */
19
+ updateLabelMap: (callback: (labelMap: TreeViewLabelMap) => TreeViewLabelMap) => void;
20
+ /**
21
+ * Callback fired when a key is pressed on an item.
22
+ * Handles all the keyboard navigation logic.
23
+ * @param {React.KeyboardEvent<HTMLElement> & TreeViewCancellableEvent} event The keyboard event that triggered the callback.
24
+ * @param {TreeViewItemId} itemId The id of the item that the event was triggered on.
25
+ */
26
+ handleItemKeyDown: (event: React.KeyboardEvent<HTMLElement> & TreeViewCancellableEvent, itemId: TreeViewItemId) => Promise<void>;
27
+ }
28
+ export {};
@@ -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";