@mui/x-tree-view 7.0.0-beta.5 → 7.0.0-beta.7

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 (136) hide show
  1. package/CHANGELOG.md +252 -50
  2. package/RichTreeView/RichTreeView.js +23 -22
  3. package/RichTreeView/RichTreeView.types.d.ts +2 -1
  4. package/SimpleTreeView/SimpleTreeView.js +23 -22
  5. package/TreeItem/TreeItem.js +79 -79
  6. package/TreeItem/TreeItem.types.d.ts +17 -19
  7. package/TreeItem/treeItemClasses.d.ts +1 -1
  8. package/TreeItem/treeItemClasses.js +1 -1
  9. package/TreeItem/useTreeItemState.js +2 -2
  10. package/TreeItem2/TreeItem2.d.ts +18 -0
  11. package/TreeItem2/TreeItem2.js +301 -0
  12. package/TreeItem2/TreeItem2.types.d.ts +64 -0
  13. package/TreeItem2/TreeItem2.types.js +1 -0
  14. package/TreeItem2/index.d.ts +2 -0
  15. package/TreeItem2/index.js +1 -0
  16. package/TreeItem2/package.json +6 -0
  17. package/TreeItem2Icon/TreeItem2Icon.d.ts +7 -0
  18. package/TreeItem2Icon/TreeItem2Icon.js +68 -0
  19. package/TreeItem2Icon/TreeItem2Icon.types.d.ts +40 -0
  20. package/TreeItem2Icon/TreeItem2Icon.types.js +1 -0
  21. package/TreeItem2Icon/index.d.ts +2 -0
  22. package/TreeItem2Icon/index.js +1 -0
  23. package/TreeItem2Icon/package.json +6 -0
  24. package/TreeItem2Provider/TreeItem2Provider.d.ts +7 -0
  25. package/TreeItem2Provider/TreeItem2Provider.js +24 -0
  26. package/TreeItem2Provider/TreeItem2Provider.types.d.ts +6 -0
  27. package/TreeItem2Provider/TreeItem2Provider.types.js +1 -0
  28. package/TreeItem2Provider/index.d.ts +2 -0
  29. package/TreeItem2Provider/index.js +1 -0
  30. package/TreeItem2Provider/package.json +6 -0
  31. package/TreeView/TreeView.js +23 -22
  32. package/hooks/index.d.ts +1 -0
  33. package/hooks/index.js +2 -1
  34. package/hooks/useTreeItem2Utils/index.d.ts +1 -0
  35. package/hooks/useTreeItem2Utils/index.js +1 -0
  36. package/hooks/useTreeItem2Utils/useTreeItem2Utils.d.ts +15 -0
  37. package/hooks/useTreeItem2Utils/useTreeItem2Utils.js +61 -0
  38. package/hooks/useTreeViewApiRef.d.ts +2 -2
  39. package/index.d.ts +5 -1
  40. package/index.js +9 -2
  41. package/internals/TreeViewProvider/TreeViewContext.d.ts +3 -1
  42. package/internals/TreeViewProvider/TreeViewProvider.types.d.ts +4 -2
  43. package/internals/hooks/useLazyRef.d.ts +1 -2
  44. package/internals/hooks/useLazyRef.js +1 -11
  45. package/internals/hooks/useOnMount.d.ts +1 -2
  46. package/internals/hooks/useOnMount.js +1 -7
  47. package/internals/hooks/useTimeout.d.ts +1 -11
  48. package/internals/hooks/useTimeout.js +1 -36
  49. package/internals/models/helpers.d.ts +1 -0
  50. package/internals/models/plugin.d.ts +19 -16
  51. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +25 -25
  52. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +11 -11
  53. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +12 -12
  54. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.d.ts +5 -6
  55. package/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.js +37 -23
  56. package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +11 -9
  57. package/internals/plugins/useTreeViewNodes/useTreeViewNodes.js +31 -18
  58. package/internals/plugins/useTreeViewNodes/useTreeViewNodes.types.d.ts +16 -6
  59. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +34 -34
  60. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +11 -11
  61. package/internals/useTreeView/useTreeView.js +27 -25
  62. package/modern/RichTreeView/RichTreeView.js +23 -22
  63. package/modern/SimpleTreeView/SimpleTreeView.js +23 -22
  64. package/modern/TreeItem/TreeItem.js +78 -78
  65. package/modern/TreeItem/treeItemClasses.js +1 -1
  66. package/modern/TreeItem/useTreeItemState.js +2 -2
  67. package/modern/TreeItem2/TreeItem2.js +300 -0
  68. package/modern/TreeItem2/TreeItem2.types.js +1 -0
  69. package/modern/TreeItem2/index.js +1 -0
  70. package/modern/TreeItem2Icon/TreeItem2Icon.js +67 -0
  71. package/modern/TreeItem2Icon/TreeItem2Icon.types.js +1 -0
  72. package/modern/TreeItem2Icon/index.js +1 -0
  73. package/modern/TreeItem2Provider/TreeItem2Provider.js +24 -0
  74. package/modern/TreeItem2Provider/TreeItem2Provider.types.js +1 -0
  75. package/modern/TreeItem2Provider/index.js +1 -0
  76. package/modern/TreeView/TreeView.js +23 -22
  77. package/modern/hooks/index.js +2 -1
  78. package/modern/hooks/useTreeItem2Utils/index.js +1 -0
  79. package/modern/hooks/useTreeItem2Utils/useTreeItem2Utils.js +61 -0
  80. package/modern/index.js +9 -2
  81. package/modern/internals/hooks/useLazyRef.js +1 -11
  82. package/modern/internals/hooks/useOnMount.js +1 -7
  83. package/modern/internals/hooks/useTimeout.js +1 -36
  84. package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +24 -24
  85. package/modern/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +12 -12
  86. package/modern/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.js +36 -22
  87. package/modern/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +11 -9
  88. package/modern/internals/plugins/useTreeViewNodes/useTreeViewNodes.js +31 -18
  89. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +34 -34
  90. package/modern/internals/useTreeView/useTreeView.js +27 -25
  91. package/modern/useTreeItem2/index.js +1 -0
  92. package/modern/useTreeItem2/useTreeItem2.js +135 -0
  93. package/modern/useTreeItem2/useTreeItem2.types.js +1 -0
  94. package/node/RichTreeView/RichTreeView.js +23 -22
  95. package/node/SimpleTreeView/SimpleTreeView.js +23 -22
  96. package/node/TreeItem/TreeItem.js +78 -78
  97. package/node/TreeItem/treeItemClasses.js +1 -1
  98. package/node/TreeItem/useTreeItemState.js +2 -2
  99. package/node/TreeItem2/TreeItem2.js +308 -0
  100. package/node/TreeItem2/TreeItem2.types.js +5 -0
  101. package/node/TreeItem2/index.js +42 -0
  102. package/node/TreeItem2Icon/TreeItem2Icon.js +75 -0
  103. package/node/TreeItem2Icon/TreeItem2Icon.types.js +5 -0
  104. package/node/TreeItem2Icon/index.js +12 -0
  105. package/node/TreeItem2Provider/TreeItem2Provider.js +30 -0
  106. package/node/TreeItem2Provider/TreeItem2Provider.types.js +5 -0
  107. package/node/TreeItem2Provider/index.js +12 -0
  108. package/node/TreeView/TreeView.js +23 -22
  109. package/node/hooks/index.js +8 -1
  110. package/node/hooks/useTreeItem2Utils/index.js +12 -0
  111. package/node/hooks/useTreeItem2Utils/useTreeItem2Utils.js +68 -0
  112. package/node/index.js +61 -13
  113. package/node/internals/hooks/useLazyRef.js +7 -13
  114. package/node/internals/hooks/useOnMount.js +8 -10
  115. package/node/internals/hooks/useTimeout.js +7 -37
  116. package/node/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +24 -24
  117. package/node/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +12 -12
  118. package/node/internals/plugins/useTreeViewJSXNodes/useTreeViewJSXNodes.js +36 -22
  119. package/node/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +11 -9
  120. package/node/internals/plugins/useTreeViewNodes/useTreeViewNodes.js +30 -17
  121. package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +34 -34
  122. package/node/internals/useTreeView/useTreeView.js +27 -25
  123. package/node/useTreeItem2/index.js +12 -0
  124. package/node/useTreeItem2/useTreeItem2.js +143 -0
  125. package/node/useTreeItem2/useTreeItem2.types.js +5 -0
  126. package/package.json +2 -2
  127. package/themeAugmentation/components.d.ts +5 -0
  128. package/themeAugmentation/overrides.d.ts +1 -0
  129. package/themeAugmentation/props.d.ts +2 -0
  130. package/useTreeItem2/index.d.ts +2 -0
  131. package/useTreeItem2/index.js +1 -0
  132. package/useTreeItem2/package.json +6 -0
  133. package/useTreeItem2/useTreeItem2.d.ts +2 -0
  134. package/useTreeItem2/useTreeItem2.js +138 -0
  135. package/useTreeItem2/useTreeItem2.types.d.ts +113 -0
  136. package/useTreeItem2/useTreeItem2.types.js +1 -0
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useTreeItem2Utils = void 0;
7
+ var _useTreeViewContext = require("../../internals/TreeViewProvider/useTreeViewContext");
8
+ const useTreeItem2Utils = ({
9
+ nodeId,
10
+ children
11
+ }) => {
12
+ const {
13
+ instance,
14
+ selection: {
15
+ multiSelect
16
+ }
17
+ } = (0, _useTreeViewContext.useTreeViewContext)();
18
+ const status = {
19
+ expandable: Boolean(Array.isArray(children) ? children.length : children),
20
+ expanded: instance.isNodeExpanded(nodeId),
21
+ focused: instance.isNodeFocused(nodeId),
22
+ selected: instance.isNodeSelected(nodeId),
23
+ disabled: instance.isNodeDisabled(nodeId)
24
+ };
25
+ const handleExpansion = event => {
26
+ if (status.disabled) {
27
+ return;
28
+ }
29
+ if (!status.focused) {
30
+ instance.focusItem(event, nodeId);
31
+ }
32
+ const multiple = multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);
33
+
34
+ // If already expanded and trying to toggle selection don't close
35
+ if (status.expandable && !(multiple && instance.isNodeExpanded(nodeId))) {
36
+ instance.toggleNodeExpansion(event, nodeId);
37
+ }
38
+ };
39
+ const handleSelection = event => {
40
+ if (status.disabled) {
41
+ return;
42
+ }
43
+ if (!status.focused) {
44
+ instance.focusItem(event, nodeId);
45
+ }
46
+ const multiple = multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);
47
+ if (multiple) {
48
+ if (event.shiftKey) {
49
+ instance.selectRange(event, {
50
+ end: nodeId
51
+ });
52
+ } else {
53
+ instance.selectNode(event, nodeId, true);
54
+ }
55
+ } else {
56
+ instance.selectNode(event, nodeId);
57
+ }
58
+ };
59
+ const interactions = {
60
+ handleExpansion,
61
+ handleSelection
62
+ };
63
+ return {
64
+ interactions,
65
+ status
66
+ };
67
+ };
68
+ exports.useTreeItem2Utils = useTreeItem2Utils;
package/node/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-tree-view v7.0.0-beta.5
2
+ * @mui/x-tree-view v7.0.0-beta.7
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -19,18 +19,6 @@ Object.defineProperty(exports, "unstable_resetCleanupTracking", {
19
19
  return _useInstanceEventHandler.unstable_resetCleanupTracking;
20
20
  }
21
21
  });
22
- var _TreeItem = require("./TreeItem");
23
- Object.keys(_TreeItem).forEach(function (key) {
24
- if (key === "default" || key === "__esModule") return;
25
- if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
26
- if (key in exports && exports[key] === _TreeItem[key]) return;
27
- Object.defineProperty(exports, key, {
28
- enumerable: true,
29
- get: function () {
30
- return _TreeItem[key];
31
- }
32
- });
33
- });
34
22
  var _TreeView = require("./TreeView");
35
23
  Object.keys(_TreeView).forEach(function (key) {
36
24
  if (key === "default" || key === "__esModule") return;
@@ -67,6 +55,66 @@ Object.keys(_RichTreeView).forEach(function (key) {
67
55
  }
68
56
  });
69
57
  });
58
+ var _TreeItem = require("./TreeItem");
59
+ Object.keys(_TreeItem).forEach(function (key) {
60
+ if (key === "default" || key === "__esModule") return;
61
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
62
+ if (key in exports && exports[key] === _TreeItem[key]) return;
63
+ Object.defineProperty(exports, key, {
64
+ enumerable: true,
65
+ get: function () {
66
+ return _TreeItem[key];
67
+ }
68
+ });
69
+ });
70
+ var _TreeItem2 = require("./TreeItem2");
71
+ Object.keys(_TreeItem2).forEach(function (key) {
72
+ if (key === "default" || key === "__esModule") return;
73
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
74
+ if (key in exports && exports[key] === _TreeItem2[key]) return;
75
+ Object.defineProperty(exports, key, {
76
+ enumerable: true,
77
+ get: function () {
78
+ return _TreeItem2[key];
79
+ }
80
+ });
81
+ });
82
+ var _useTreeItem = require("./useTreeItem2");
83
+ Object.keys(_useTreeItem).forEach(function (key) {
84
+ if (key === "default" || key === "__esModule") return;
85
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
86
+ if (key in exports && exports[key] === _useTreeItem[key]) return;
87
+ Object.defineProperty(exports, key, {
88
+ enumerable: true,
89
+ get: function () {
90
+ return _useTreeItem[key];
91
+ }
92
+ });
93
+ });
94
+ var _TreeItem2Icon = require("./TreeItem2Icon");
95
+ Object.keys(_TreeItem2Icon).forEach(function (key) {
96
+ if (key === "default" || key === "__esModule") return;
97
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
98
+ if (key in exports && exports[key] === _TreeItem2Icon[key]) return;
99
+ Object.defineProperty(exports, key, {
100
+ enumerable: true,
101
+ get: function () {
102
+ return _TreeItem2Icon[key];
103
+ }
104
+ });
105
+ });
106
+ var _TreeItem2Provider = require("./TreeItem2Provider");
107
+ Object.keys(_TreeItem2Provider).forEach(function (key) {
108
+ if (key === "default" || key === "__esModule") return;
109
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
110
+ if (key in exports && exports[key] === _TreeItem2Provider[key]) return;
111
+ Object.defineProperty(exports, key, {
112
+ enumerable: true,
113
+ get: function () {
114
+ return _TreeItem2Provider[key];
115
+ }
116
+ });
117
+ });
70
118
  var _useInstanceEventHandler = require("./internals/hooks/useInstanceEventHandler");
71
119
  var _models = require("./models");
72
120
  Object.keys(_models).forEach(function (key) {
@@ -1,19 +1,13 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
- exports.useLazyRef = useLazyRef;
7
- var React = _interopRequireWildcard(require("react"));
8
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
9
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
10
- const UNINITIALIZED = {};
11
-
12
- // See https://github.com/facebook/react/issues/14490 for when to use this.
13
- function useLazyRef(init, initArg) {
14
- const ref = React.useRef(UNINITIALIZED);
15
- if (ref.current === UNINITIALIZED) {
16
- ref.current = init(initArg);
7
+ Object.defineProperty(exports, "useLazyRef", {
8
+ enumerable: true,
9
+ get: function () {
10
+ return _useLazyRef.default;
17
11
  }
18
- return ref;
19
- }
12
+ });
13
+ var _useLazyRef = _interopRequireDefault(require("@mui/utils/useLazyRef"));
@@ -1,15 +1,13 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
- exports.useOnMount = useOnMount;
7
- var React = _interopRequireWildcard(require("react"));
8
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
9
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
10
- const EMPTY = [];
11
- function useOnMount(fn) {
12
- /* eslint-disable react-hooks/exhaustive-deps */
13
- React.useEffect(fn, EMPTY);
14
- /* eslint-enable react-hooks/exhaustive-deps */
15
- }
7
+ Object.defineProperty(exports, "useOnMount", {
8
+ enumerable: true,
9
+ get: function () {
10
+ return _useOnMount.default;
11
+ }
12
+ });
13
+ var _useOnMount = _interopRequireDefault(require("@mui/utils/useOnMount"));
@@ -1,43 +1,13 @@
1
1
  "use strict";
2
- 'use client';
3
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.Timeout = void 0;
8
- exports.useTimeout = useTimeout;
9
- var _useLazyRef = require("./useLazyRef");
10
- var _useOnMount = require("./useOnMount");
11
- class Timeout {
12
- constructor() {
13
- this.currentId = null;
14
- this.clear = () => {
15
- if (this.currentId !== null) {
16
- clearTimeout(this.currentId);
17
- this.currentId = null;
18
- }
19
- };
20
- this.disposeEffect = () => {
21
- return this.clear;
22
- };
7
+ Object.defineProperty(exports, "useTimeout", {
8
+ enumerable: true,
9
+ get: function () {
10
+ return _useTimeout.default;
23
11
  }
24
- static create() {
25
- return new Timeout();
26
- }
27
- /**
28
- * Executes `fn` after `delay`, clearing any previously scheduled call.
29
- */
30
- start(delay, fn) {
31
- this.clear();
32
- this.currentId = setTimeout(() => {
33
- this.currentId = null;
34
- fn();
35
- }, delay);
36
- }
37
- }
38
- exports.Timeout = Timeout;
39
- function useTimeout() {
40
- const timeout = (0, _useLazyRef.useLazyRef)(Timeout.create).current;
41
- (0, _useOnMount.useOnMount)(timeout.disposeEffect);
42
- return timeout;
43
- }
12
+ });
13
+ var _useTimeout = _interopRequireDefault(require("@mui/utils/useTimeout"));
@@ -16,42 +16,42 @@ const useTreeViewExpansion = ({
16
16
  params,
17
17
  models
18
18
  }) => {
19
- const setExpandedNodes = (event, value) => {
20
- params.onExpandedNodesChange?.(event, value);
21
- models.expandedNodes.setControlledValue(value);
19
+ const setExpandedItems = (event, value) => {
20
+ params.onExpandedItemsChange?.(event, value);
21
+ models.expandedItems.setControlledValue(value);
22
22
  };
23
23
  const isNodeExpanded = React.useCallback(nodeId => {
24
- return Array.isArray(models.expandedNodes.value) ? models.expandedNodes.value.indexOf(nodeId) !== -1 : false;
25
- }, [models.expandedNodes.value]);
24
+ return Array.isArray(models.expandedItems.value) ? models.expandedItems.value.indexOf(nodeId) !== -1 : false;
25
+ }, [models.expandedItems.value]);
26
26
  const isNodeExpandable = React.useCallback(nodeId => !!instance.getNode(nodeId)?.expandable, [instance]);
27
- const toggleNodeExpansion = (0, _useEventCallback.default)((event, nodeId) => {
28
- if (nodeId == null) {
27
+ const toggleNodeExpansion = (0, _useEventCallback.default)((event, itemId) => {
28
+ if (itemId == null) {
29
29
  return;
30
30
  }
31
- const isExpandedBefore = models.expandedNodes.value.indexOf(nodeId) !== -1;
31
+ const isExpandedBefore = models.expandedItems.value.indexOf(itemId) !== -1;
32
32
  let newExpanded;
33
33
  if (isExpandedBefore) {
34
- newExpanded = models.expandedNodes.value.filter(id => id !== nodeId);
34
+ newExpanded = models.expandedItems.value.filter(id => id !== itemId);
35
35
  } else {
36
- newExpanded = [nodeId].concat(models.expandedNodes.value);
36
+ newExpanded = [itemId].concat(models.expandedItems.value);
37
37
  }
38
- if (params.onNodeExpansionToggle) {
39
- params.onNodeExpansionToggle(event, nodeId, !isExpandedBefore);
38
+ if (params.onItemExpansionToggle) {
39
+ params.onItemExpansionToggle(event, itemId, !isExpandedBefore);
40
40
  }
41
- setExpandedNodes(event, newExpanded);
41
+ setExpandedItems(event, newExpanded);
42
42
  });
43
43
  const expandAllSiblings = (event, nodeId) => {
44
44
  const node = instance.getNode(nodeId);
45
45
  const siblings = instance.getChildrenIds(node.parentId);
46
46
  const diff = siblings.filter(child => instance.isNodeExpandable(child) && !instance.isNodeExpanded(child));
47
- const newExpanded = models.expandedNodes.value.concat(diff);
47
+ const newExpanded = models.expandedItems.value.concat(diff);
48
48
  if (diff.length > 0) {
49
- if (params.onNodeExpansionToggle) {
49
+ if (params.onItemExpansionToggle) {
50
50
  diff.forEach(newlyExpandedNodeId => {
51
- params.onNodeExpansionToggle(event, newlyExpandedNodeId, true);
51
+ params.onItemExpansionToggle(event, newlyExpandedNodeId, true);
52
52
  });
53
53
  }
54
- setExpandedNodes(event, newExpanded);
54
+ setExpandedItems(event, newExpanded);
55
55
  }
56
56
  };
57
57
  (0, _useTreeView.populateInstance)(instance, {
@@ -63,17 +63,17 @@ const useTreeViewExpansion = ({
63
63
  };
64
64
  exports.useTreeViewExpansion = useTreeViewExpansion;
65
65
  useTreeViewExpansion.models = {
66
- expandedNodes: {
67
- getDefaultValue: params => params.defaultExpandedNodes
66
+ expandedItems: {
67
+ getDefaultValue: params => params.defaultExpandedItems
68
68
  }
69
69
  };
70
70
  const DEFAULT_EXPANDED_NODES = [];
71
71
  useTreeViewExpansion.getDefaultizedParams = params => (0, _extends2.default)({}, params, {
72
- defaultExpandedNodes: params.defaultExpandedNodes ?? DEFAULT_EXPANDED_NODES
72
+ defaultExpandedItems: params.defaultExpandedItems ?? DEFAULT_EXPANDED_NODES
73
73
  });
74
74
  useTreeViewExpansion.params = {
75
- expandedNodes: true,
76
- defaultExpandedNodes: true,
77
- onExpandedNodesChange: true,
78
- onNodeExpansionToggle: true
75
+ expandedItems: true,
76
+ defaultExpandedItems: true,
77
+ onExpandedItemsChange: true,
78
+ onItemExpansionToggle: true
79
79
  };
@@ -37,31 +37,31 @@ const useTreeViewFocus = ({
37
37
  const node = instance.getNode(nodeId);
38
38
  return node && (node.parentId == null || instance.isNodeExpanded(node.parentId));
39
39
  };
40
- const focusNode = (0, _useEventCallback.default)((event, nodeId) => {
40
+ const focusItem = (0, _useEventCallback.default)((event, nodeId) => {
41
41
  // if we receive a nodeId, and it is visible, the focus will be set to it
42
42
  if (nodeId && isNodeVisible(nodeId)) {
43
43
  if (!isTreeViewFocused()) {
44
44
  instance.focusRoot();
45
45
  }
46
46
  setFocusedNodeId(nodeId);
47
- if (params.onNodeFocus) {
48
- params.onNodeFocus(event, nodeId);
47
+ if (params.onItemFocus) {
48
+ params.onItemFocus(event, nodeId);
49
49
  }
50
50
  }
51
51
  });
52
52
  const focusDefaultNode = (0, _useEventCallback.default)(event => {
53
53
  let nodeToFocusId;
54
- if (Array.isArray(models.selectedNodes.value)) {
55
- nodeToFocusId = models.selectedNodes.value.find(isNodeVisible);
56
- } else if (models.selectedNodes.value != null && isNodeVisible(models.selectedNodes.value)) {
57
- nodeToFocusId = models.selectedNodes.value;
54
+ if (Array.isArray(models.selectedItems.value)) {
55
+ nodeToFocusId = models.selectedItems.value.find(isNodeVisible);
56
+ } else if (models.selectedItems.value != null && isNodeVisible(models.selectedItems.value)) {
57
+ nodeToFocusId = models.selectedItems.value;
58
58
  }
59
59
  if (nodeToFocusId == null) {
60
60
  nodeToFocusId = instance.getNavigableChildrenIds(null)[0];
61
61
  }
62
62
  setFocusedNodeId(nodeToFocusId);
63
- if (params.onNodeFocus) {
64
- params.onNodeFocus(event, nodeToFocusId);
63
+ if (params.onItemFocus) {
64
+ params.onItemFocus(event, nodeToFocusId);
65
65
  }
66
66
  });
67
67
  const focusRoot = (0, _useEventCallback.default)(() => {
@@ -71,12 +71,12 @@ const useTreeViewFocus = ({
71
71
  });
72
72
  (0, _useTreeView.populateInstance)(instance, {
73
73
  isNodeFocused,
74
- focusNode,
74
+ focusItem,
75
75
  focusRoot,
76
76
  focusDefaultNode
77
77
  });
78
78
  (0, _useTreeView.populatePublicAPI)(publicAPI, {
79
- focusNode
79
+ focusItem
80
80
  });
81
81
  (0, _useInstanceEventHandler.useInstanceEventHandler)(instance, 'removeNode', ({
82
82
  id
@@ -114,5 +114,5 @@ useTreeViewFocus.getInitialState = () => ({
114
114
  focusedNodeId: null
115
115
  });
116
116
  useTreeViewFocus.params = {
117
- onNodeFocus: true
117
+ onItemFocus: true
118
118
  };
@@ -22,22 +22,36 @@ const useTreeViewJSXNodes = ({
22
22
  }) => {
23
23
  const insertJSXNode = (0, _useEventCallback.default)(node => {
24
24
  setState(prevState => {
25
- if (prevState.nodeMap[node.id] != null) {
25
+ if (prevState.nodes.nodeMap[node.id] != null) {
26
26
  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.', `Tow items were provided with the same id in the \`items\` prop: "${node.id}"`].join('\n'));
27
27
  }
28
28
  return (0, _extends2.default)({}, prevState, {
29
- nodeMap: (0, _extends2.default)({}, prevState.nodeMap, {
30
- [node.id]: node
29
+ nodes: (0, _extends2.default)({}, prevState.nodes, {
30
+ nodeMap: (0, _extends2.default)({}, prevState.nodes.nodeMap, {
31
+ [node.id]: node
32
+ }),
33
+ // For `SimpleTreeView`, we don't have a proper `item` object, so we create a very basic one.
34
+ itemMap: (0, _extends2.default)({}, prevState.nodes.itemMap, {
35
+ [node.id]: {
36
+ id: node.id,
37
+ label: node.label
38
+ }
39
+ })
31
40
  })
32
41
  });
33
42
  });
34
43
  });
35
44
  const removeJSXNode = (0, _useEventCallback.default)(nodeId => {
36
45
  setState(prevState => {
37
- const newMap = (0, _extends2.default)({}, prevState.nodeMap);
38
- delete newMap[nodeId];
46
+ const newNodeMap = (0, _extends2.default)({}, prevState.nodes.nodeMap);
47
+ const newItemMap = (0, _extends2.default)({}, prevState.nodes.itemMap);
48
+ delete newNodeMap[nodeId];
49
+ delete newItemMap[nodeId];
39
50
  return (0, _extends2.default)({}, prevState, {
40
- nodeMap: newMap
51
+ nodes: (0, _extends2.default)({}, prevState.nodes, {
52
+ nodeMap: newNodeMap,
53
+ itemMap: newItemMap
54
+ })
41
55
  });
42
56
  });
43
57
  (0, _publishTreeViewEvent.publishTreeViewEvent)(instance, 'removeNode', {
@@ -66,15 +80,15 @@ const useTreeViewJSXNodes = ({
66
80
  exports.useTreeViewJSXNodes = useTreeViewJSXNodes;
67
81
  const useTreeViewJSXNodesItemPlugin = ({
68
82
  props,
69
- ref
83
+ rootRef,
84
+ contentRef
70
85
  }) => {
71
86
  const {
72
87
  children,
73
88
  disabled = false,
74
89
  label,
75
90
  nodeId,
76
- id,
77
- ContentProps: inContentProps
91
+ id
78
92
  } = props;
79
93
  const {
80
94
  instance
@@ -87,8 +101,9 @@ const useTreeViewJSXNodesItemPlugin = ({
87
101
  };
88
102
  const expandable = isExpandable(children);
89
103
  const [treeItemElement, setTreeItemElement] = React.useState(null);
90
- const contentRef = React.useRef(null);
91
- const handleRef = (0, _useForkRef.default)(setTreeItemElement, ref);
104
+ const pluginContentRef = React.useRef(null);
105
+ const handleRootRef = (0, _useForkRef.default)(setTreeItemElement, rootRef);
106
+ const handleContentRef = (0, _useForkRef.default)(pluginContentRef, contentRef);
92
107
  const descendant = React.useMemo(() => ({
93
108
  element: treeItemElement,
94
109
  id: nodeId
@@ -114,22 +129,21 @@ const useTreeViewJSXNodesItemPlugin = ({
114
129
  }, [instance, parentId, index, nodeId, expandable, disabled, id]);
115
130
  React.useEffect(() => {
116
131
  if (label) {
117
- return instance.mapFirstCharFromJSX(nodeId, (contentRef.current?.textContent ?? '').substring(0, 1).toLowerCase());
132
+ return instance.mapFirstCharFromJSX(nodeId, (pluginContentRef.current?.textContent ?? '').substring(0, 1).toLowerCase());
118
133
  }
119
134
  return undefined;
120
135
  }, [instance, nodeId, label]);
121
136
  return {
122
- props: (0, _extends2.default)({}, props, {
123
- ContentProps: (0, _extends2.default)({}, inContentProps, {
124
- ref: contentRef
125
- })
126
- }),
127
- ref: handleRef,
128
- wrapItem: item => /*#__PURE__*/(0, _jsxRuntime.jsx)(_DescendantProvider.DescendantProvider, {
129
- id: nodeId,
130
- children: item
131
- })
137
+ contentRef: handleContentRef,
138
+ rootRef: handleRootRef
132
139
  };
133
140
  };
134
141
  useTreeViewJSXNodes.itemPlugin = useTreeViewJSXNodesItemPlugin;
142
+ useTreeViewJSXNodes.wrapItem = ({
143
+ children,
144
+ nodeId
145
+ }) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_DescendantProvider.DescendantProvider, {
146
+ id: nodeId,
147
+ children: children
148
+ });
135
149
  useTreeViewJSXNodes.params = {};
@@ -90,7 +90,9 @@ const useTreeViewKeyboardNavigation = ({
90
90
  return null;
91
91
  };
92
92
  const canToggleNodeSelection = nodeId => !params.disableSelection && !instance.isNodeDisabled(nodeId);
93
- const canToggleNodeExpansion = nodeId => !instance.isNodeDisabled(nodeId) && instance.isNodeExpandable(nodeId);
93
+ const canToggleNodeExpansion = nodeId => {
94
+ return !instance.isNodeDisabled(nodeId) && instance.isNodeExpandable(nodeId);
95
+ };
94
96
 
95
97
  // ARIA specification: https://www.w3.org/WAI/ARIA/apg/patterns/treeview/#keyboardinteraction
96
98
  const createHandleKeyDown = otherHandlers => event => {
@@ -99,7 +101,7 @@ const useTreeViewKeyboardNavigation = ({
99
101
  return;
100
102
  }
101
103
 
102
- // If the tree is empty there will be no focused node
104
+ // If the tree is empty, there will be no focused node
103
105
  if (event.altKey || event.currentTarget !== event.target || state.focusedNodeId == null) {
104
106
  return;
105
107
  }
@@ -149,7 +151,7 @@ const useTreeViewKeyboardNavigation = ({
149
151
  const nextNode = (0, _useTreeView.getNextNode)(instance, state.focusedNodeId);
150
152
  if (nextNode) {
151
153
  event.preventDefault();
152
- instance.focusNode(event, nextNode);
154
+ instance.focusItem(event, nextNode);
153
155
 
154
156
  // Multi select behavior when pressing Shift + ArrowDown
155
157
  // Toggles the selection state of the next node
@@ -169,7 +171,7 @@ const useTreeViewKeyboardNavigation = ({
169
171
  const previousNode = (0, _useTreeView.getPreviousNode)(instance, state.focusedNodeId);
170
172
  if (previousNode) {
171
173
  event.preventDefault();
172
- instance.focusNode(event, previousNode);
174
+ instance.focusItem(event, previousNode);
173
175
 
174
176
  // Multi select behavior when pressing Shift + ArrowUp
175
177
  // Toggles the selection state of the previous node
@@ -188,7 +190,7 @@ const useTreeViewKeyboardNavigation = ({
188
190
  case key === 'ArrowRight' && !isRTL || key === 'ArrowLeft' && isRTL:
189
191
  {
190
192
  if (instance.isNodeExpanded(state.focusedNodeId)) {
191
- instance.focusNode(event, (0, _useTreeView.getNextNode)(instance, state.focusedNodeId));
193
+ instance.focusItem(event, (0, _useTreeView.getNextNode)(instance, state.focusedNodeId));
192
194
  event.preventDefault();
193
195
  } else if (canToggleNodeExpansion(state.focusedNodeId)) {
194
196
  instance.toggleNodeExpansion(event, state.focusedNodeId);
@@ -207,7 +209,7 @@ const useTreeViewKeyboardNavigation = ({
207
209
  } else {
208
210
  const parent = instance.getNode(state.focusedNodeId).parentId;
209
211
  if (parent) {
210
- instance.focusNode(event, parent);
212
+ instance.focusItem(event, parent);
211
213
  event.preventDefault();
212
214
  }
213
215
  }
@@ -217,7 +219,7 @@ const useTreeViewKeyboardNavigation = ({
217
219
  // Focuses the first node in the tree
218
220
  case key === 'Home':
219
221
  {
220
- instance.focusNode(event, (0, _useTreeView.getFirstNode)(instance));
222
+ instance.focusItem(event, (0, _useTreeView.getFirstNode)(instance));
221
223
 
222
224
  // Multi select behavior when pressing Ctrl + Shift + Home
223
225
  // Selects the focused node and all nodes up to the first node.
@@ -231,7 +233,7 @@ const useTreeViewKeyboardNavigation = ({
231
233
  // Focuses the last node in the tree
232
234
  case key === 'End':
233
235
  {
234
- instance.focusNode(event, (0, _useTreeView.getLastNode)(instance));
236
+ instance.focusItem(event, (0, _useTreeView.getLastNode)(instance));
235
237
 
236
238
  // Multi select behavior when pressing Ctrl + Shirt + End
237
239
  // Selects the focused node and all the nodes down to the last node.
@@ -268,7 +270,7 @@ const useTreeViewKeyboardNavigation = ({
268
270
  {
269
271
  const matchingNode = getFirstMatchingNode(state.focusedNodeId, key);
270
272
  if (matchingNode != null) {
271
- instance.focusNode(event, matchingNode);
273
+ instance.focusItem(event, matchingNode);
272
274
  event.preventDefault();
273
275
  }
274
276
  break;