@mui/x-tree-view 7.0.0-alpha.1 → 7.0.0-alpha.8

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 (217) hide show
  1. package/CHANGELOG.md +1380 -188
  2. package/README.md +0 -1
  3. package/RichTreeView/RichTreeView.d.ts +20 -0
  4. package/RichTreeView/RichTreeView.js +285 -0
  5. package/RichTreeView/RichTreeView.types.d.ts +55 -0
  6. package/RichTreeView/RichTreeView.types.js +1 -0
  7. package/RichTreeView/index.d.ts +3 -0
  8. package/RichTreeView/index.js +3 -0
  9. package/RichTreeView/package.json +6 -0
  10. package/RichTreeView/richTreeViewClasses.d.ts +7 -0
  11. package/RichTreeView/richTreeViewClasses.js +6 -0
  12. package/SimpleTreeView/SimpleTreeView.d.ts +20 -0
  13. package/SimpleTreeView/SimpleTreeView.js +235 -0
  14. package/SimpleTreeView/SimpleTreeView.plugins.d.ts +6 -0
  15. package/SimpleTreeView/SimpleTreeView.plugins.js +5 -0
  16. package/SimpleTreeView/SimpleTreeView.types.d.ts +38 -0
  17. package/SimpleTreeView/SimpleTreeView.types.js +1 -0
  18. package/SimpleTreeView/index.d.ts +3 -0
  19. package/SimpleTreeView/index.js +3 -0
  20. package/SimpleTreeView/package.json +6 -0
  21. package/SimpleTreeView/simpleTreeViewClasses.d.ts +7 -0
  22. package/SimpleTreeView/simpleTreeViewClasses.js +6 -0
  23. package/TreeItem/TreeItem.js +44 -89
  24. package/TreeItem/TreeItem.types.d.ts +2 -1
  25. package/TreeItem/index.d.ts +2 -2
  26. package/TreeItem/index.js +2 -2
  27. package/TreeItem/useTreeItem.js +5 -5
  28. package/TreeView/TreeView.d.ts +4 -0
  29. package/TreeView/TreeView.js +80 -87
  30. package/TreeView/TreeView.types.d.ts +4 -26
  31. package/TreeView/index.d.ts +1 -1
  32. package/index.d.ts +3 -0
  33. package/index.js +5 -2
  34. package/internals/TreeViewProvider/TreeViewContext.d.ts +1 -2
  35. package/internals/TreeViewProvider/TreeViewContext.js +1 -14
  36. package/internals/TreeViewProvider/TreeViewProvider.types.d.ts +3 -3
  37. package/internals/TreeViewProvider/useTreeViewContext.js +7 -1
  38. package/internals/corePlugins/corePlugins.d.ts +1 -1
  39. package/internals/corePlugins/corePlugins.js +1 -1
  40. package/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.d.ts +0 -5
  41. package/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.js +2 -7
  42. package/internals/hooks/useLazyRef.d.ts +2 -0
  43. package/internals/hooks/useLazyRef.js +11 -0
  44. package/internals/hooks/useOnMount.d.ts +2 -0
  45. package/internals/hooks/useOnMount.js +7 -0
  46. package/internals/hooks/useTimeout.d.ts +9 -0
  47. package/internals/hooks/useTimeout.js +28 -0
  48. package/internals/models/MuiCancellableEvent.d.ts +4 -0
  49. package/internals/models/MuiCancellableEvent.js +1 -0
  50. package/internals/models/plugin.d.ts +24 -0
  51. package/internals/models/treeView.d.ts +5 -1
  52. package/internals/plugins/defaultPlugins.d.ts +3 -2
  53. package/internals/plugins/defaultPlugins.js +2 -1
  54. package/internals/plugins/useTreeViewContextValueBuilder/useTreeViewContextValueBuilder.js +14 -6
  55. package/internals/plugins/useTreeViewContextValueBuilder/useTreeViewContextValueBuilder.types.d.ts +1 -6
  56. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +32 -17
  57. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +12 -5
  58. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +16 -6
  59. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.d.ts +4 -1
  60. package/internals/plugins/useTreeViewId/index.d.ts +2 -0
  61. package/internals/plugins/useTreeViewId/index.js +1 -0
  62. package/internals/plugins/useTreeViewId/useTreeViewId.d.ts +3 -0
  63. package/internals/plugins/useTreeViewId/useTreeViewId.js +21 -0
  64. package/internals/plugins/useTreeViewId/useTreeViewId.types.d.ts +17 -0
  65. package/internals/plugins/useTreeViewId/useTreeViewId.types.js +1 -0
  66. package/internals/plugins/useTreeViewJSXNodes/index.d.ts +2 -0
  67. package/internals/plugins/useTreeViewJSXNodes/index.js +1 -0
  68. package/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.d.ts +3 -0
  69. package/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.js +115 -0
  70. package/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.types.d.ts +16 -0
  71. package/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.types.js +1 -0
  72. package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +175 -121
  73. package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +5 -2
  74. package/internals/plugins/useTreeViewNodes/useTreeViewNodes.js +89 -17
  75. package/internals/plugins/useTreeViewNodes/useTreeViewNodes.types.d.ts +48 -5
  76. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.d.ts +1 -1
  77. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +49 -28
  78. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +15 -8
  79. package/internals/useTreeView/useTreeView.js +40 -3
  80. package/internals/useTreeView/useTreeView.types.d.ts +2 -1
  81. package/internals/useTreeView/useTreeViewModels.js +2 -2
  82. package/internals/utils/extractPluginParamsFromProps.d.ts +13 -0
  83. package/internals/utils/extractPluginParamsFromProps.js +27 -0
  84. package/internals/utils/warning.d.ts +1 -0
  85. package/internals/utils/warning.js +14 -0
  86. package/legacy/RichTreeView/RichTreeView.js +279 -0
  87. package/legacy/RichTreeView/RichTreeView.types.js +1 -0
  88. package/legacy/RichTreeView/index.js +3 -0
  89. package/legacy/RichTreeView/richTreeViewClasses.js +6 -0
  90. package/legacy/SimpleTreeView/SimpleTreeView.js +232 -0
  91. package/legacy/SimpleTreeView/SimpleTreeView.plugins.js +6 -0
  92. package/legacy/SimpleTreeView/SimpleTreeView.types.js +1 -0
  93. package/legacy/SimpleTreeView/index.js +3 -0
  94. package/legacy/SimpleTreeView/simpleTreeViewClasses.js +6 -0
  95. package/legacy/TreeItem/TreeItem.js +49 -103
  96. package/legacy/TreeItem/index.js +2 -2
  97. package/legacy/TreeItem/useTreeItem.js +5 -5
  98. package/legacy/TreeView/TreeView.js +80 -82
  99. package/legacy/index.js +5 -2
  100. package/legacy/internals/TreeViewProvider/TreeViewContext.js +1 -14
  101. package/legacy/internals/TreeViewProvider/useTreeViewContext.js +5 -1
  102. package/legacy/internals/corePlugins/corePlugins.js +1 -1
  103. package/legacy/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.js +2 -7
  104. package/legacy/internals/hooks/useLazyRef.js +11 -0
  105. package/legacy/internals/hooks/useOnMount.js +7 -0
  106. package/legacy/internals/hooks/useTimeout.js +38 -0
  107. package/legacy/internals/models/MuiCancellableEvent.js +1 -0
  108. package/legacy/internals/plugins/defaultPlugins.js +2 -1
  109. package/legacy/internals/plugins/useTreeViewContextValueBuilder/useTreeViewContextValueBuilder.js +17 -8
  110. package/legacy/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +32 -17
  111. package/legacy/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +16 -6
  112. package/legacy/internals/plugins/useTreeViewId/index.js +1 -0
  113. package/legacy/internals/plugins/useTreeViewId/useTreeViewId.js +24 -0
  114. package/legacy/internals/plugins/useTreeViewId/useTreeViewId.types.js +1 -0
  115. package/legacy/internals/plugins/useTreeViewJSXNodes/index.js +1 -0
  116. package/legacy/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.js +121 -0
  117. package/legacy/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.types.js +1 -0
  118. package/legacy/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +177 -119
  119. package/legacy/internals/plugins/useTreeViewNodes/useTreeViewNodes.js +96 -20
  120. package/legacy/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +53 -28
  121. package/legacy/internals/useTreeView/useTreeView.js +39 -3
  122. package/legacy/internals/useTreeView/useTreeViewModels.js +2 -2
  123. package/legacy/internals/utils/extractPluginParamsFromProps.js +27 -0
  124. package/legacy/internals/utils/warning.js +15 -0
  125. package/legacy/models/index.js +1 -0
  126. package/legacy/models/items.js +1 -0
  127. package/models/index.d.ts +1 -0
  128. package/models/index.js +1 -0
  129. package/models/items.d.ts +7 -0
  130. package/models/items.js +1 -0
  131. package/models/package.json +6 -0
  132. package/modern/RichTreeView/RichTreeView.js +283 -0
  133. package/modern/RichTreeView/RichTreeView.types.js +1 -0
  134. package/modern/RichTreeView/index.js +3 -0
  135. package/modern/RichTreeView/richTreeViewClasses.js +6 -0
  136. package/modern/SimpleTreeView/SimpleTreeView.js +234 -0
  137. package/modern/SimpleTreeView/SimpleTreeView.plugins.js +5 -0
  138. package/modern/SimpleTreeView/SimpleTreeView.types.js +1 -0
  139. package/modern/SimpleTreeView/index.js +3 -0
  140. package/modern/SimpleTreeView/simpleTreeViewClasses.js +6 -0
  141. package/modern/TreeItem/TreeItem.js +44 -88
  142. package/modern/TreeItem/index.js +2 -2
  143. package/modern/TreeItem/useTreeItem.js +5 -5
  144. package/modern/TreeView/TreeView.js +80 -87
  145. package/modern/index.js +5 -2
  146. package/modern/internals/TreeViewProvider/TreeViewContext.js +1 -14
  147. package/modern/internals/TreeViewProvider/useTreeViewContext.js +7 -1
  148. package/modern/internals/corePlugins/corePlugins.js +1 -1
  149. package/modern/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.js +2 -7
  150. package/modern/internals/hooks/useLazyRef.js +11 -0
  151. package/modern/internals/hooks/useOnMount.js +7 -0
  152. package/modern/internals/hooks/useTimeout.js +28 -0
  153. package/modern/internals/models/MuiCancellableEvent.js +1 -0
  154. package/modern/internals/plugins/defaultPlugins.js +2 -1
  155. package/modern/internals/plugins/useTreeViewContextValueBuilder/useTreeViewContextValueBuilder.js +14 -6
  156. package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +33 -18
  157. package/modern/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +16 -7
  158. package/modern/internals/plugins/useTreeViewId/index.js +1 -0
  159. package/modern/internals/plugins/useTreeViewId/useTreeViewId.js +21 -0
  160. package/modern/internals/plugins/useTreeViewId/useTreeViewId.types.js +1 -0
  161. package/modern/internals/plugins/useTreeViewJSXNodes/index.js +1 -0
  162. package/modern/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.js +114 -0
  163. package/modern/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.types.js +1 -0
  164. package/modern/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +174 -121
  165. package/modern/internals/plugins/useTreeViewNodes/useTreeViewNodes.js +88 -17
  166. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +50 -29
  167. package/modern/internals/useTreeView/useTreeView.js +40 -3
  168. package/modern/internals/useTreeView/useTreeViewModels.js +2 -2
  169. package/modern/internals/utils/extractPluginParamsFromProps.js +27 -0
  170. package/modern/internals/utils/warning.js +14 -0
  171. package/modern/models/index.js +1 -0
  172. package/modern/models/items.js +1 -0
  173. package/node/RichTreeView/RichTreeView.js +291 -0
  174. package/node/RichTreeView/RichTreeView.types.js +5 -0
  175. package/node/RichTreeView/index.js +27 -0
  176. package/node/RichTreeView/richTreeViewClasses.js +14 -0
  177. package/node/SimpleTreeView/SimpleTreeView.js +242 -0
  178. package/node/SimpleTreeView/SimpleTreeView.plugins.js +11 -0
  179. package/node/SimpleTreeView/SimpleTreeView.types.js +5 -0
  180. package/node/SimpleTreeView/index.js +27 -0
  181. package/node/SimpleTreeView/simpleTreeViewClasses.js +14 -0
  182. package/node/TreeItem/TreeItem.js +44 -88
  183. package/node/TreeItem/index.js +11 -15
  184. package/node/TreeItem/useTreeItem.js +5 -5
  185. package/node/TreeView/TreeView.js +80 -87
  186. package/node/index.js +38 -2
  187. package/node/internals/TreeViewProvider/TreeViewContext.js +2 -15
  188. package/node/internals/TreeViewProvider/useTreeViewContext.js +7 -1
  189. package/node/internals/corePlugins/corePlugins.js +1 -1
  190. package/node/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.js +2 -7
  191. package/node/internals/hooks/useLazyRef.js +19 -0
  192. package/node/internals/hooks/useOnMount.js +15 -0
  193. package/node/internals/hooks/useTimeout.js +34 -0
  194. package/node/internals/models/MuiCancellableEvent.js +5 -0
  195. package/node/internals/plugins/defaultPlugins.js +2 -1
  196. package/node/internals/plugins/useTreeViewContextValueBuilder/useTreeViewContextValueBuilder.js +15 -8
  197. package/node/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +33 -18
  198. package/node/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +16 -7
  199. package/node/internals/plugins/useTreeViewId/index.js +12 -0
  200. package/node/internals/plugins/useTreeViewId/useTreeViewId.js +31 -0
  201. package/node/internals/plugins/useTreeViewId/useTreeViewId.types.js +5 -0
  202. package/node/internals/plugins/useTreeViewJSXNodes/index.js +12 -0
  203. package/node/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.js +124 -0
  204. package/node/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.types.js +5 -0
  205. package/node/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +174 -121
  206. package/node/internals/plugins/useTreeViewNodes/useTreeViewNodes.js +89 -18
  207. package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +50 -29
  208. package/node/internals/useTreeView/useTreeView.js +40 -3
  209. package/node/internals/useTreeView/useTreeViewModels.js +2 -2
  210. package/node/internals/utils/extractPluginParamsFromProps.js +34 -0
  211. package/node/internals/utils/warning.js +21 -0
  212. package/node/models/index.js +16 -0
  213. package/node/models/items.js +5 -0
  214. package/package.json +8 -7
  215. package/themeAugmentation/components.d.ts +14 -4
  216. package/themeAugmentation/overrides.d.ts +8 -4
  217. package/themeAugmentation/props.d.ts +7 -3
@@ -0,0 +1,38 @@
1
+ import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
2
+ import _createClass from "@babel/runtime/helpers/esm/createClass";
3
+ import { useLazyRef } from './useLazyRef';
4
+ import { useOnMount } from './useOnMount';
5
+ var Timeout = /*#__PURE__*/function () {
6
+ function Timeout() {
7
+ var _this = this;
8
+ _classCallCheck(this, Timeout);
9
+ this.currentId = 0;
10
+ this.clear = function () {
11
+ if (_this.currentId !== 0) {
12
+ clearTimeout(_this.currentId);
13
+ _this.currentId = 0;
14
+ }
15
+ };
16
+ this.disposeEffect = function () {
17
+ return _this.clear;
18
+ };
19
+ }
20
+ _createClass(Timeout, [{
21
+ key: "start",
22
+ value: function start(delay, fn) {
23
+ this.clear();
24
+ this.currentId = setTimeout(fn, delay);
25
+ }
26
+ }], [{
27
+ key: "create",
28
+ value: function create() {
29
+ return new Timeout();
30
+ }
31
+ }]);
32
+ return Timeout;
33
+ }();
34
+ export function useTimeout() {
35
+ var timeout = useLazyRef(Timeout.create).current;
36
+ useOnMount(timeout.disposeEffect);
37
+ return timeout;
38
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -1,9 +1,10 @@
1
+ import { useTreeViewId } from './useTreeViewId';
1
2
  import { useTreeViewNodes } from './useTreeViewNodes';
2
3
  import { useTreeViewExpansion } from './useTreeViewExpansion';
3
4
  import { useTreeViewSelection } from './useTreeViewSelection';
4
5
  import { useTreeViewFocus } from './useTreeViewFocus';
5
6
  import { useTreeViewKeyboardNavigation } from './useTreeViewKeyboardNavigation';
6
7
  import { useTreeViewContextValueBuilder } from './useTreeViewContextValueBuilder';
7
- export var DEFAULT_TREE_VIEW_PLUGINS = [useTreeViewNodes, useTreeViewExpansion, useTreeViewSelection, useTreeViewFocus, useTreeViewKeyboardNavigation, useTreeViewContextValueBuilder];
8
+ export var DEFAULT_TREE_VIEW_PLUGINS = [useTreeViewId, useTreeViewNodes, useTreeViewExpansion, useTreeViewSelection, useTreeViewFocus, useTreeViewKeyboardNavigation, useTreeViewContextValueBuilder];
8
9
 
9
10
  // We can't infer this type from the plugin, otherwise we would lose the generics.
@@ -1,18 +1,21 @@
1
- import useId from '@mui/utils/useId';
2
1
  export var useTreeViewContextValueBuilder = function useTreeViewContextValueBuilder(_ref) {
3
2
  var instance = _ref.instance,
4
3
  params = _ref.params;
5
- var treeId = useId(params.id);
6
4
  return {
7
- getRootProps: function getRootProps() {
8
- return {
9
- id: treeId
10
- };
11
- },
12
5
  contextValue: {
13
- treeId: treeId,
14
6
  instance: instance,
15
7
  multiSelect: params.multiSelect,
8
+ runItemPlugins: function runItemPlugins(_ref2) {
9
+ var props = _ref2.props,
10
+ ref = _ref2.ref;
11
+ return {
12
+ props: props,
13
+ ref: ref,
14
+ wrapItem: function wrapItem(children) {
15
+ return children;
16
+ }
17
+ };
18
+ },
16
19
  disabledItemsFocusable: params.disabledItemsFocusable,
17
20
  icons: {
18
21
  defaultCollapseIcon: params.defaultCollapseIcon,
@@ -22,4 +25,10 @@ export var useTreeViewContextValueBuilder = function useTreeViewContextValueBuil
22
25
  }
23
26
  }
24
27
  };
28
+ };
29
+ useTreeViewContextValueBuilder.params = {
30
+ defaultCollapseIcon: true,
31
+ defaultEndIcon: true,
32
+ defaultExpandIcon: true,
33
+ defaultParentIcon: true
25
34
  };
@@ -7,8 +7,8 @@ export var useTreeViewExpansion = function useTreeViewExpansion(_ref) {
7
7
  params = _ref.params,
8
8
  models = _ref.models;
9
9
  var isNodeExpanded = React.useCallback(function (nodeId) {
10
- return Array.isArray(models.expanded.value) ? models.expanded.value.indexOf(nodeId) !== -1 : false;
11
- }, [models.expanded.value]);
10
+ return Array.isArray(models.expandedNodes.value) ? models.expandedNodes.value.indexOf(nodeId) !== -1 : false;
11
+ }, [models.expandedNodes.value]);
12
12
  var isNodeExpandable = React.useCallback(function (nodeId) {
13
13
  var _instance$getNode;
14
14
  return !!((_instance$getNode = instance.getNode(nodeId)) != null && _instance$getNode.expandable);
@@ -17,18 +17,22 @@ export var useTreeViewExpansion = function useTreeViewExpansion(_ref) {
17
17
  if (nodeId == null) {
18
18
  return;
19
19
  }
20
+ var isExpandedBefore = models.expandedNodes.value.indexOf(nodeId) !== -1;
20
21
  var newExpanded;
21
- if (models.expanded.value.indexOf(nodeId) !== -1) {
22
- newExpanded = models.expanded.value.filter(function (id) {
22
+ if (isExpandedBefore) {
23
+ newExpanded = models.expandedNodes.value.filter(function (id) {
23
24
  return id !== nodeId;
24
25
  });
25
26
  } else {
26
- newExpanded = [nodeId].concat(models.expanded.value);
27
+ newExpanded = [nodeId].concat(models.expandedNodes.value);
27
28
  }
28
- if (params.onNodeToggle) {
29
- params.onNodeToggle(event, newExpanded);
29
+ if (params.onNodeExpansionToggle) {
30
+ params.onNodeExpansionToggle(event, nodeId, !isExpandedBefore);
30
31
  }
31
- models.expanded.setValue(newExpanded);
32
+ if (params.onExpandedNodesChange) {
33
+ params.onExpandedNodesChange(event, newExpanded);
34
+ }
35
+ models.expandedNodes.setValue(newExpanded);
32
36
  });
33
37
  var expandAllSiblings = function expandAllSiblings(event, nodeId) {
34
38
  var node = instance.getNode(nodeId);
@@ -36,12 +40,17 @@ export var useTreeViewExpansion = function useTreeViewExpansion(_ref) {
36
40
  var diff = siblings.filter(function (child) {
37
41
  return instance.isNodeExpandable(child) && !instance.isNodeExpanded(child);
38
42
  });
39
- var newExpanded = models.expanded.value.concat(diff);
43
+ var newExpanded = models.expandedNodes.value.concat(diff);
40
44
  if (diff.length > 0) {
41
- models.expanded.setValue(newExpanded);
42
- if (params.onNodeToggle) {
43
- params.onNodeToggle(event, newExpanded);
45
+ if (params.onNodeExpansionToggle) {
46
+ diff.forEach(function (newlyExpandedNodeId) {
47
+ params.onNodeExpansionToggle(event, newlyExpandedNodeId, true);
48
+ });
49
+ }
50
+ if (params.onExpandedNodesChange) {
51
+ params.onExpandedNodesChange(event, newExpanded);
44
52
  }
53
+ models.expandedNodes.setValue(newExpanded);
45
54
  }
46
55
  };
47
56
  populateInstance(instance, {
@@ -52,15 +61,21 @@ export var useTreeViewExpansion = function useTreeViewExpansion(_ref) {
52
61
  });
53
62
  };
54
63
  useTreeViewExpansion.models = {
55
- expanded: {
56
- controlledProp: 'expanded',
57
- defaultProp: 'defaultExpanded'
64
+ expandedNodes: {
65
+ controlledProp: 'expandedNodes',
66
+ defaultProp: 'defaultExpandedNodes'
58
67
  }
59
68
  };
60
- var DEFAULT_EXPANDED = [];
69
+ var DEFAULT_EXPANDED_NODES = [];
61
70
  useTreeViewExpansion.getDefaultizedParams = function (params) {
62
71
  var _params$defaultExpand;
63
72
  return _extends({}, params, {
64
- defaultExpanded: (_params$defaultExpand = params.defaultExpanded) != null ? _params$defaultExpand : DEFAULT_EXPANDED
73
+ defaultExpandedNodes: (_params$defaultExpand = params.defaultExpandedNodes) != null ? _params$defaultExpand : DEFAULT_EXPANDED_NODES
65
74
  });
75
+ };
76
+ useTreeViewExpansion.params = {
77
+ expandedNodes: true,
78
+ defaultExpandedNodes: true,
79
+ onExpandedNodesChange: true,
80
+ onNodeExpansionToggle: true
66
81
  };
@@ -30,9 +30,16 @@ export var useTreeViewFocus = function useTreeViewFocus(_ref) {
30
30
  }
31
31
  }
32
32
  });
33
+ var focusRoot = useEventCallback(function () {
34
+ var _rootRef$current;
35
+ (_rootRef$current = rootRef.current) == null || _rootRef$current.focus({
36
+ preventScroll: true
37
+ });
38
+ });
33
39
  populateInstance(instance, {
34
40
  isNodeFocused: isNodeFocused,
35
- focusNode: focusNode
41
+ focusNode: focusNode,
42
+ focusRoot: focusRoot
36
43
  });
37
44
  useInstanceEventHandler(instance, 'removeNode', function (_ref2) {
38
45
  var id = _ref2.id;
@@ -55,10 +62,10 @@ export var useTreeViewFocus = function useTreeViewFocus(_ref) {
55
62
  return node && (node.parentId == null || instance.isNodeExpanded(node.parentId));
56
63
  };
57
64
  var nodeToFocusId;
58
- if (Array.isArray(models.selected.value)) {
59
- nodeToFocusId = models.selected.value.find(isNodeVisible);
60
- } else if (models.selected.value != null && isNodeVisible(models.selected.value)) {
61
- nodeToFocusId = models.selected.value;
65
+ if (Array.isArray(models.selectedNodes.value)) {
66
+ nodeToFocusId = models.selectedNodes.value.find(isNodeVisible);
67
+ } else if (models.selectedNodes.value != null && isNodeVisible(models.selectedNodes.value)) {
68
+ nodeToFocusId = models.selectedNodes.value;
62
69
  }
63
70
  if (nodeToFocusId == null) {
64
71
  nodeToFocusId = instance.getNavigableChildrenIds(null)[0];
@@ -75,7 +82,7 @@ export var useTreeViewFocus = function useTreeViewFocus(_ref) {
75
82
  };
76
83
  };
77
84
  var focusedNode = instance.getNode(state.focusedNodeId);
78
- var activeDescendant = focusedNode ? focusedNode.idAttribute : null;
85
+ var activeDescendant = focusedNode ? instance.getTreeItemId(focusedNode.id, focusedNode.idAttribute) : null;
79
86
  return {
80
87
  getRootProps: function getRootProps(otherHandlers) {
81
88
  return {
@@ -96,4 +103,7 @@ useTreeViewFocus.getDefaultizedParams = function (params) {
96
103
  return _extends({}, params, {
97
104
  disabledItemsFocusable: (_params$disabledItems = params.disabledItemsFocusable) != null ? _params$disabledItems : false
98
105
  });
106
+ };
107
+ useTreeViewFocus.params = {
108
+ onNodeFocus: true
99
109
  };
@@ -0,0 +1 @@
1
+ export { useTreeViewId } from './useTreeViewId';
@@ -0,0 +1,24 @@
1
+ import * as React from 'react';
2
+ import useId from '@mui/utils/useId';
3
+ import { populateInstance } from '../../useTreeView/useTreeView.utils';
4
+ export var useTreeViewId = function useTreeViewId(_ref) {
5
+ var instance = _ref.instance,
6
+ params = _ref.params;
7
+ var treeId = useId(params.id);
8
+ var getTreeItemId = React.useCallback(function (nodeId, idAttribute) {
9
+ return idAttribute != null ? idAttribute : "".concat(treeId, "-").concat(nodeId);
10
+ }, [treeId]);
11
+ populateInstance(instance, {
12
+ getTreeItemId: getTreeItemId
13
+ });
14
+ return {
15
+ getRootProps: function getRootProps() {
16
+ return {
17
+ id: treeId
18
+ };
19
+ }
20
+ };
21
+ };
22
+ useTreeViewId.params = {
23
+ id: true
24
+ };
@@ -0,0 +1 @@
1
+ export { useTreeViewJSXNodes } from './useTreeViewJSXNodes';
@@ -0,0 +1,121 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
3
+ import _extends from "@babel/runtime/helpers/esm/extends";
4
+ import * as React from 'react';
5
+ import useEventCallback from '@mui/utils/useEventCallback';
6
+ import useForkRef from '@mui/utils/useForkRef';
7
+ import { populateInstance } from '../../useTreeView/useTreeView.utils';
8
+ import { publishTreeViewEvent } from '../../utils/publishTreeViewEvent';
9
+ import { useTreeViewContext } from '../../TreeViewProvider/useTreeViewContext';
10
+ import { DescendantProvider, useDescendant } from '../../TreeViewProvider/DescendantProvider';
11
+ import { jsx as _jsx } from "react/jsx-runtime";
12
+ export var useTreeViewJSXNodes = function useTreeViewJSXNodes(_ref) {
13
+ var instance = _ref.instance,
14
+ setState = _ref.setState;
15
+ var insertJSXNode = useEventCallback(function (node) {
16
+ setState(function (prevState) {
17
+ return _extends({}, prevState, {
18
+ nodeMap: _extends({}, prevState.nodeMap, _defineProperty({}, node.id, node))
19
+ });
20
+ });
21
+ });
22
+ var removeJSXNode = useEventCallback(function (nodeId) {
23
+ setState(function (prevState) {
24
+ var newMap = _extends({}, prevState.nodeMap);
25
+ delete newMap[nodeId];
26
+ return _extends({}, prevState, {
27
+ nodeMap: newMap
28
+ });
29
+ });
30
+ publishTreeViewEvent(instance, 'removeNode', {
31
+ id: nodeId
32
+ });
33
+ });
34
+ var mapFirstCharFromJSX = useEventCallback(function (nodeId, firstChar) {
35
+ instance.updateFirstCharMap(function (firstCharMap) {
36
+ firstCharMap[nodeId] = firstChar;
37
+ return firstCharMap;
38
+ });
39
+ return function () {
40
+ instance.updateFirstCharMap(function (firstCharMap) {
41
+ var newMap = _extends({}, firstCharMap);
42
+ delete newMap[nodeId];
43
+ return newMap;
44
+ });
45
+ };
46
+ });
47
+ populateInstance(instance, {
48
+ insertJSXNode: insertJSXNode,
49
+ removeJSXNode: removeJSXNode,
50
+ mapFirstCharFromJSX: mapFirstCharFromJSX
51
+ });
52
+ };
53
+ var useTreeViewJSXNodesItemPlugin = function useTreeViewJSXNodesItemPlugin(_ref2) {
54
+ var props = _ref2.props,
55
+ ref = _ref2.ref;
56
+ var children = props.children,
57
+ _props$disabled = props.disabled,
58
+ disabled = _props$disabled === void 0 ? false : _props$disabled,
59
+ label = props.label,
60
+ nodeId = props.nodeId,
61
+ id = props.id,
62
+ inContentProps = props.ContentProps;
63
+ var _useTreeViewContext = useTreeViewContext(),
64
+ instance = _useTreeViewContext.instance;
65
+ var expandable = Boolean(Array.isArray(children) ? children.length : children);
66
+ var _React$useState = React.useState(null),
67
+ _React$useState2 = _slicedToArray(_React$useState, 2),
68
+ treeItemElement = _React$useState2[0],
69
+ setTreeItemElement = _React$useState2[1];
70
+ var contentRef = React.useRef(null);
71
+ var handleRef = useForkRef(setTreeItemElement, ref);
72
+ var descendant = React.useMemo(function () {
73
+ return {
74
+ element: treeItemElement,
75
+ id: nodeId
76
+ };
77
+ }, [nodeId, treeItemElement]);
78
+ var _useDescendant = useDescendant(descendant),
79
+ index = _useDescendant.index,
80
+ parentId = _useDescendant.parentId;
81
+ React.useEffect(function () {
82
+ // On the first render a node's index will be -1. We want to wait for the real index.
83
+ if (instance && index !== -1) {
84
+ instance.insertJSXNode({
85
+ id: nodeId,
86
+ idAttribute: id,
87
+ index: index,
88
+ parentId: parentId,
89
+ expandable: expandable,
90
+ disabled: disabled
91
+ });
92
+ return function () {
93
+ return instance.removeJSXNode(nodeId);
94
+ };
95
+ }
96
+ return undefined;
97
+ }, [instance, parentId, index, nodeId, expandable, disabled, id]);
98
+ React.useEffect(function () {
99
+ if (instance && label) {
100
+ var _contentRef$current$t, _contentRef$current;
101
+ return instance.mapFirstCharFromJSX(nodeId, ((_contentRef$current$t = (_contentRef$current = contentRef.current) == null ? void 0 : _contentRef$current.textContent) != null ? _contentRef$current$t : '').substring(0, 1).toLowerCase());
102
+ }
103
+ return undefined;
104
+ }, [instance, nodeId, label]);
105
+ return {
106
+ props: _extends({}, props, {
107
+ ContentProps: _extends({}, inContentProps, {
108
+ ref: contentRef
109
+ })
110
+ }),
111
+ ref: handleRef,
112
+ wrapItem: function wrapItem(item) {
113
+ return /*#__PURE__*/_jsx(DescendantProvider, {
114
+ id: nodeId,
115
+ children: item
116
+ });
117
+ }
118
+ };
119
+ };
120
+ useTreeViewJSXNodes.itemPlugin = useTreeViewJSXNodesItemPlugin;
121
+ useTreeViewJSXNodes.params = {};