@mui/x-tree-view 7.3.0 → 7.3.1

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 (63) hide show
  1. package/CHANGELOG.md +79 -2
  2. package/TreeItem/TreeItem.js +1 -2
  3. package/TreeItem/TreeItemContent.js +1 -2
  4. package/TreeItem/useTreeItemState.js +1 -3
  5. package/TreeItem2/TreeItem2.js +1 -2
  6. package/hooks/useTreeItem2Utils/useTreeItem2Utils.js +1 -3
  7. package/index.js +1 -1
  8. package/internals/TreeViewProvider/useTreeViewContext.d.ts +1 -1
  9. package/internals/hooks/useInstanceEventHandler.d.ts +2 -2
  10. package/internals/models/treeView.d.ts +0 -6
  11. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +1 -4
  12. package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +31 -63
  13. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +82 -94
  14. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +32 -5
  15. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.d.ts +9 -0
  16. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +21 -0
  17. package/internals/useTreeView/useTreeView.types.d.ts +1 -1
  18. package/internals/useTreeView/useTreeViewModels.d.ts +1 -1
  19. package/internals/utils/extractPluginParamsFromProps.d.ts +1 -1
  20. package/internals/utils/publishTreeViewEvent.d.ts +1 -1
  21. package/internals/utils/tree.d.ts +17 -1
  22. package/internals/utils/tree.js +34 -4
  23. package/modern/TreeItem/TreeItem.js +1 -2
  24. package/modern/TreeItem/TreeItemContent.js +1 -2
  25. package/modern/TreeItem/useTreeItemState.js +1 -3
  26. package/modern/TreeItem2/TreeItem2.js +1 -2
  27. package/modern/hooks/useTreeItem2Utils/useTreeItem2Utils.js +1 -3
  28. package/modern/index.js +1 -1
  29. package/modern/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +1 -4
  30. package/modern/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +31 -63
  31. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +82 -94
  32. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +21 -0
  33. package/modern/internals/utils/tree.js +34 -4
  34. package/node/RichTreeView/RichTreeView.js +1 -1
  35. package/node/SimpleTreeView/SimpleTreeView.js +1 -1
  36. package/node/TreeItem/TreeItem.js +1 -1
  37. package/node/TreeItem/TreeItemContent.js +1 -1
  38. package/node/TreeItem/useTreeItemState.js +1 -3
  39. package/node/TreeItem2/TreeItem2.js +1 -1
  40. package/node/TreeItem2Icon/TreeItem2Icon.js +1 -1
  41. package/node/TreeView/TreeView.js +1 -1
  42. package/node/hooks/useTreeItem2Utils/useTreeItem2Utils.js +1 -3
  43. package/node/hooks/useTreeViewApiRef.js +1 -1
  44. package/node/icons/icons.js +1 -1
  45. package/node/index.js +1 -1
  46. package/node/internals/TreeViewProvider/TreeViewChildrenItemProvider.js +1 -1
  47. package/node/internals/TreeViewProvider/TreeViewContext.js +1 -1
  48. package/node/internals/TreeViewProvider/TreeViewProvider.js +1 -1
  49. package/node/internals/TreeViewProvider/useTreeViewContext.js +1 -1
  50. package/node/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.js +1 -1
  51. package/node/internals/hooks/useInstanceEventHandler.js +1 -1
  52. package/node/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +1 -1
  53. package/node/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +2 -5
  54. package/node/internals/plugins/useTreeViewId/useTreeViewId.js +1 -1
  55. package/node/internals/plugins/useTreeViewItems/useTreeViewItems.js +1 -1
  56. package/node/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +1 -1
  57. package/node/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +32 -64
  58. package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +82 -94
  59. package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +29 -0
  60. package/node/internals/useTreeView/useTreeView.js +1 -1
  61. package/node/internals/useTreeView/useTreeViewModels.js +1 -1
  62. package/node/internals/utils/tree.js +37 -5
  63. package/package.json +3 -5
@@ -8,16 +8,27 @@ exports.useTreeViewSelection = void 0;
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
9
  var React = _interopRequireWildcard(require("react"));
10
10
  var _tree = require("../../utils/tree");
11
+ var _useTreeViewSelection = require("./useTreeViewSelection.utils");
11
12
  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); }
12
- 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; }
13
+ 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 && {}.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; }
13
14
  const useTreeViewSelection = ({
14
15
  instance,
15
16
  params,
16
17
  models
17
18
  }) => {
18
19
  const lastSelectedItem = React.useRef(null);
19
- const lastSelectionWasRange = React.useRef(false);
20
- const currentRangeSelection = React.useRef([]);
20
+ const lastSelectedRange = React.useRef({});
21
+ const selectedItemsMap = React.useMemo(() => {
22
+ const temp = new Map();
23
+ if (Array.isArray(models.selectedItems.value)) {
24
+ models.selectedItems.value.forEach(id => {
25
+ temp.set(id, true);
26
+ });
27
+ } else if (models.selectedItems.value != null) {
28
+ temp.set(models.selectedItems.value, true);
29
+ }
30
+ return temp;
31
+ }, [models.selectedItems.value]);
21
32
  const setSelectedItems = (event, newSelectedItems) => {
22
33
  if (params.onItemSelectionToggle) {
23
34
  if (params.multiSelect) {
@@ -43,115 +54,90 @@ const useTreeViewSelection = ({
43
54
  }
44
55
  models.selectedItems.setControlledValue(newSelectedItems);
45
56
  };
46
- const isItemSelected = itemId => Array.isArray(models.selectedItems.value) ? models.selectedItems.value.indexOf(itemId) !== -1 : models.selectedItems.value === itemId;
57
+ const isItemSelected = itemId => selectedItemsMap.has(itemId);
47
58
  const selectItem = (event, itemId, multiple = false) => {
48
59
  if (params.disableSelection) {
49
60
  return;
50
61
  }
62
+ let newSelected;
51
63
  if (multiple) {
52
- if (Array.isArray(models.selectedItems.value)) {
53
- let newSelected;
54
- if (models.selectedItems.value.indexOf(itemId) !== -1) {
55
- newSelected = models.selectedItems.value.filter(id => id !== itemId);
56
- } else {
57
- newSelected = [itemId].concat(models.selectedItems.value);
58
- }
59
- setSelectedItems(event, newSelected);
64
+ const cleanSelectedItems = (0, _useTreeViewSelection.convertSelectedItemsToArray)(models.selectedItems.value);
65
+ if (instance.isItemSelected(itemId)) {
66
+ newSelected = cleanSelectedItems.filter(id => id !== itemId);
67
+ } else {
68
+ newSelected = [itemId].concat(cleanSelectedItems);
60
69
  }
61
70
  } else {
62
- const newSelected = params.multiSelect ? [itemId] : itemId;
63
- setSelectedItems(event, newSelected);
71
+ newSelected = params.multiSelect ? [itemId] : itemId;
64
72
  }
73
+ setSelectedItems(event, newSelected);
65
74
  lastSelectedItem.current = itemId;
66
- lastSelectionWasRange.current = false;
67
- currentRangeSelection.current = [];
75
+ lastSelectedRange.current = {};
68
76
  };
69
- const handleRangeArrowSelect = (event, items) => {
70
- let base = models.selectedItems.value.slice();
71
- const {
72
- start,
73
- next,
74
- current
75
- } = items;
76
- if (!next || !current) {
77
+ const selectRange = (event, [start, end]) => {
78
+ if (params.disableSelection || !params.multiSelect) {
77
79
  return;
78
80
  }
79
- if (currentRangeSelection.current.indexOf(current) === -1) {
80
- currentRangeSelection.current = [];
81
- }
82
- if (lastSelectionWasRange.current) {
83
- if (currentRangeSelection.current.indexOf(next) !== -1) {
84
- base = base.filter(id => id === start || id !== current);
85
- currentRangeSelection.current = currentRangeSelection.current.filter(id => id === start || id !== current);
86
- } else {
87
- base.push(next);
88
- currentRangeSelection.current.push(next);
89
- }
90
- } else {
91
- base.push(next);
92
- currentRangeSelection.current.push(current, next);
81
+ let newSelectedItems = (0, _useTreeViewSelection.convertSelectedItemsToArray)(models.selectedItems.value).slice();
82
+
83
+ // If the last selection was a range selection,
84
+ // remove the items that were part of the last range from the model
85
+ if (Object.keys(lastSelectedRange.current).length > 0) {
86
+ newSelectedItems = newSelectedItems.filter(id => !lastSelectedRange.current[id]);
93
87
  }
94
- setSelectedItems(event, base);
88
+
89
+ // Add to the model the items that are part of the new range and not already part of the model.
90
+ const selectedItemsLookup = (0, _useTreeViewSelection.getLookupFromArray)(newSelectedItems);
91
+ const range = (0, _tree.getNonDisabledItemsInRange)(instance, start, end);
92
+ const itemsToAddToModel = range.filter(id => !selectedItemsLookup[id]);
93
+ newSelectedItems = newSelectedItems.concat(itemsToAddToModel);
94
+ setSelectedItems(event, newSelectedItems);
95
+ lastSelectedRange.current = (0, _useTreeViewSelection.getLookupFromArray)(range);
95
96
  };
96
- const handleRangeSelect = (event, items) => {
97
- let base = models.selectedItems.value.slice();
98
- const {
99
- start,
100
- end
101
- } = items;
102
- // If last selection was a range selection ignore items that were selected.
103
- if (lastSelectionWasRange.current) {
104
- base = base.filter(id => currentRangeSelection.current.indexOf(id) === -1);
97
+ const expandSelectionRange = (event, itemId) => {
98
+ if (lastSelectedItem.current != null) {
99
+ const [start, end] = (0, _tree.findOrderInTremauxTree)(instance, itemId, lastSelectedItem.current);
100
+ selectRange(event, [start, end]);
105
101
  }
106
- let range = (0, _tree.getNavigableItemsInRange)(instance, start, end);
107
- range = range.filter(item => !instance.isItemDisabled(item));
108
- currentRangeSelection.current = range;
109
- let newSelected = base.concat(range);
110
- newSelected = newSelected.filter((id, i) => newSelected.indexOf(id) === i);
111
- setSelectedItems(event, newSelected);
112
102
  };
113
- const selectRange = (event, items, stacked = false) => {
114
- if (params.disableSelection) {
103
+ const selectRangeFromStartToItem = (event, itemId) => {
104
+ selectRange(event, [(0, _tree.getFirstNavigableItem)(instance), itemId]);
105
+ };
106
+ const selectRangeFromItemToEnd = (event, itemId) => {
107
+ selectRange(event, [itemId, (0, _tree.getLastNavigableItem)(instance)]);
108
+ };
109
+ const selectAllNavigableItems = event => {
110
+ if (params.disableSelection || !params.multiSelect) {
115
111
  return;
116
112
  }
117
- const {
118
- start = lastSelectedItem.current,
119
- end,
120
- current
121
- } = items;
122
- if (stacked) {
123
- handleRangeArrowSelect(event, {
124
- start,
125
- next: end,
126
- current
127
- });
128
- } else if (start != null && end != null) {
129
- handleRangeSelect(event, {
130
- start,
131
- end
132
- });
133
- }
134
- lastSelectionWasRange.current = true;
113
+ const navigableItems = (0, _tree.getAllNavigableItems)(instance);
114
+ setSelectedItems(event, navigableItems);
115
+ lastSelectedRange.current = (0, _useTreeViewSelection.getLookupFromArray)(navigableItems);
135
116
  };
136
- const rangeSelectToFirst = (event, itemId) => {
137
- if (!lastSelectedItem.current) {
138
- lastSelectedItem.current = itemId;
117
+ const selectItemFromArrowNavigation = (event, currentItem, nextItem) => {
118
+ if (params.disableSelection || !params.multiSelect) {
119
+ return;
139
120
  }
140
- const start = lastSelectionWasRange.current ? lastSelectedItem.current : itemId;
141
- instance.selectRange(event, {
142
- start,
143
- end: (0, _tree.getFirstNavigableItem)(instance)
144
- });
145
- };
146
- const rangeSelectToLast = (event, itemId) => {
147
- if (!lastSelectedItem.current) {
148
- lastSelectedItem.current = itemId;
121
+ let newSelectedItems = (0, _useTreeViewSelection.convertSelectedItemsToArray)(models.selectedItems.value).slice();
122
+ if (Object.keys(lastSelectedRange.current).length === 0) {
123
+ newSelectedItems.push(nextItem);
124
+ lastSelectedRange.current = {
125
+ [currentItem]: true,
126
+ [nextItem]: true
127
+ };
128
+ } else {
129
+ if (!lastSelectedRange.current[currentItem]) {
130
+ lastSelectedRange.current = {};
131
+ }
132
+ if (lastSelectedRange.current[nextItem]) {
133
+ newSelectedItems = newSelectedItems.filter(id => id !== currentItem);
134
+ delete lastSelectedRange.current[currentItem];
135
+ } else {
136
+ newSelectedItems.push(nextItem);
137
+ lastSelectedRange.current[nextItem] = true;
138
+ }
149
139
  }
150
- const start = lastSelectionWasRange.current ? lastSelectedItem.current : itemId;
151
- instance.selectRange(event, {
152
- start,
153
- end: (0, _tree.getLastNavigableItem)(instance)
154
- });
140
+ setSelectedItems(event, newSelectedItems);
155
141
  };
156
142
  return {
157
143
  getRootProps: () => ({
@@ -160,9 +146,11 @@ const useTreeViewSelection = ({
160
146
  instance: {
161
147
  isItemSelected,
162
148
  selectItem,
163
- selectRange,
164
- rangeSelectToLast,
165
- rangeSelectToFirst
149
+ selectAllNavigableItems,
150
+ expandSelectionRange,
151
+ selectRangeFromStartToItem,
152
+ selectRangeFromItemToEnd,
153
+ selectItemFromArrowNavigation
166
154
  },
167
155
  contextValue: {
168
156
  selection: {
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getLookupFromArray = exports.convertSelectedItemsToArray = void 0;
7
+ /**
8
+ * Transform the `selectedItems` model to be an array if it was a string or null.
9
+ * @param {string[] | string | null} model The raw model.
10
+ * @returns {string[]} The converted model.
11
+ */
12
+ const convertSelectedItemsToArray = model => {
13
+ if (Array.isArray(model)) {
14
+ return model;
15
+ }
16
+ if (model != null) {
17
+ return [model];
18
+ }
19
+ return [];
20
+ };
21
+ exports.convertSelectedItemsToArray = convertSelectedItemsToArray;
22
+ const getLookupFromArray = array => {
23
+ const lookup = {};
24
+ array.forEach(itemId => {
25
+ lookup[itemId] = true;
26
+ });
27
+ return lookup;
28
+ };
29
+ exports.getLookupFromArray = getLookupFromArray;
@@ -12,7 +12,7 @@ var _useForkRef = _interopRequireDefault(require("@mui/utils/useForkRef"));
12
12
  var _useTreeViewModels = require("./useTreeViewModels");
13
13
  var _corePlugins = require("../corePlugins");
14
14
  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); }
15
- 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; }
15
+ 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 && {}.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; }
16
16
  function useTreeViewApiInitialization(inputApiRef) {
17
17
  const fallbackPublicApiRef = React.useRef({});
18
18
  if (inputApiRef) {
@@ -8,7 +8,7 @@ exports.useTreeViewModels = void 0;
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
9
  var React = _interopRequireWildcard(require("react"));
10
10
  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); }
11
- 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; }
11
+ 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 && {}.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; }
12
12
  /**
13
13
  * Implements the same behavior as `useControlled` but for several models.
14
14
  * The controlled models are never stored in the state and the state is only updated if the model is not controlled.
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.getPreviousNavigableItem = exports.getNextNavigableItem = exports.getNavigableItemsInRange = exports.getLastNavigableItem = exports.getFirstNavigableItem = void 0;
6
+ exports.getPreviousNavigableItem = exports.getNonDisabledItemsInRange = exports.getNextNavigableItem = exports.getLastNavigableItem = exports.getFirstNavigableItem = exports.getAllNavigableItems = exports.findOrderInTremauxTree = void 0;
7
7
  const getLastNavigableItemInArray = (instance, items) => {
8
8
  // Equivalent to Array.prototype.findLastIndex
9
9
  let itemIndex = items.length - 1;
@@ -135,14 +135,46 @@ const findOrderInTremauxTree = (instance, itemAId, itemBId) => {
135
135
  const bSide = bFamily[bFamily.indexOf(commonAncestor) - 1];
136
136
  return ancestorFamily.indexOf(aSide) < ancestorFamily.indexOf(bSide) ? [itemAId, itemBId] : [itemBId, itemAId];
137
137
  };
138
- const getNavigableItemsInRange = (instance, itemAId, itemBId) => {
138
+ exports.findOrderInTremauxTree = findOrderInTremauxTree;
139
+ const getNonDisabledItemsInRange = (instance, itemAId, itemBId) => {
140
+ const getNextItem = itemId => {
141
+ // If the item is expanded and has some children, return the first of them.
142
+ if (instance.isItemExpandable(itemId) && instance.isItemExpanded(itemId)) {
143
+ return instance.getItemOrderedChildrenIds(itemId)[0];
144
+ }
145
+ let itemMeta = instance.getItemMeta(itemId);
146
+ while (itemMeta != null) {
147
+ // Try to find the first navigable sibling after the current item.
148
+ const siblings = instance.getItemOrderedChildrenIds(itemMeta.parentId);
149
+ const currentItemIndex = instance.getItemIndex(itemMeta.id);
150
+ if (currentItemIndex < siblings.length - 1) {
151
+ return siblings[currentItemIndex + 1];
152
+ }
153
+
154
+ // If the item is the last of its siblings, go up a level to the parent and try again.
155
+ itemMeta = instance.getItemMeta(itemMeta.parentId);
156
+ }
157
+ throw new Error('Invalid range');
158
+ };
139
159
  const [first, last] = findOrderInTremauxTree(instance, itemAId, itemBId);
140
160
  const items = [first];
141
161
  let current = first;
142
162
  while (current !== last) {
143
- current = getNextNavigableItem(instance, current);
144
- items.push(current);
163
+ current = getNextItem(current);
164
+ if (!instance.isItemDisabled(current)) {
165
+ items.push(current);
166
+ }
145
167
  }
146
168
  return items;
147
169
  };
148
- exports.getNavigableItemsInRange = getNavigableItemsInRange;
170
+ exports.getNonDisabledItemsInRange = getNonDisabledItemsInRange;
171
+ const getAllNavigableItems = instance => {
172
+ let item = getFirstNavigableItem(instance);
173
+ const navigableItems = [];
174
+ while (item != null) {
175
+ navigableItems.push(item);
176
+ item = getNextNavigableItem(instance, item);
177
+ }
178
+ return navigableItems;
179
+ };
180
+ exports.getAllNavigableItems = getAllNavigableItems;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mui/x-tree-view",
3
- "version": "7.3.0",
3
+ "version": "7.3.1",
4
4
  "description": "The community edition of the Tree View components (MUI X).",
5
5
  "author": "MUI Team",
6
6
  "main": "./node/index.js",
@@ -15,7 +15,8 @@
15
15
  },
16
16
  "sideEffects": false,
17
17
  "publishConfig": {
18
- "access": "public"
18
+ "access": "public",
19
+ "directory": "build"
19
20
  },
20
21
  "keywords": [
21
22
  "react",
@@ -48,9 +49,6 @@
48
49
  "react": "^17.0.0 || ^18.0.0",
49
50
  "react-dom": "^17.0.0 || ^18.0.0"
50
51
  },
51
- "setupFiles": [
52
- "<rootDir>/src/setupTests.js"
53
- ],
54
52
  "engines": {
55
53
  "node": ">=14.0.0"
56
54
  },