@mui/x-tree-view 8.0.0-beta.0 → 8.0.0-beta.2

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 (168) hide show
  1. package/CHANGELOG.md +171 -0
  2. package/RichTreeView/RichTreeView.js +17 -5
  3. package/RichTreeView/richTreeViewClasses.d.ts +2 -4
  4. package/RichTreeView/richTreeViewClasses.js +1 -1
  5. package/SimpleTreeView/SimpleTreeView.js +17 -5
  6. package/SimpleTreeView/simpleTreeViewClasses.d.ts +2 -4
  7. package/SimpleTreeView/simpleTreeViewClasses.js +1 -1
  8. package/TreeItem/TreeItem.d.ts +1 -1
  9. package/TreeItem/TreeItem.js +45 -49
  10. package/TreeItem/index.d.ts +2 -1
  11. package/TreeItem/index.js +13 -21
  12. package/TreeItem/treeItemClasses.d.ts +40 -18
  13. package/TreeItem/treeItemClasses.js +3 -1
  14. package/TreeItemLabelInput/TreeItemLabelInput.js +2 -2
  15. package/esm/RichTreeView/RichTreeView.js +17 -5
  16. package/esm/RichTreeView/richTreeViewClasses.d.ts +2 -4
  17. package/esm/RichTreeView/richTreeViewClasses.js +1 -1
  18. package/esm/SimpleTreeView/SimpleTreeView.js +17 -5
  19. package/esm/SimpleTreeView/simpleTreeViewClasses.d.ts +2 -4
  20. package/esm/SimpleTreeView/simpleTreeViewClasses.js +1 -1
  21. package/esm/TreeItem/TreeItem.d.ts +1 -1
  22. package/esm/TreeItem/TreeItem.js +45 -49
  23. package/esm/TreeItem/index.d.ts +2 -1
  24. package/esm/TreeItem/index.js +1 -1
  25. package/esm/TreeItem/treeItemClasses.d.ts +40 -18
  26. package/esm/TreeItem/treeItemClasses.js +3 -1
  27. package/esm/TreeItemLabelInput/TreeItemLabelInput.js +2 -2
  28. package/esm/hooks/useTreeItemUtils/useTreeItemUtils.js +8 -14
  29. package/esm/index.js +1 -1
  30. package/esm/internals/TreeViewProvider/TreeViewChildrenItemProvider.js +1 -1
  31. package/esm/internals/TreeViewProvider/TreeViewContext.d.ts +3 -1
  32. package/esm/internals/TreeViewProvider/TreeViewContext.js +8 -1
  33. package/esm/internals/TreeViewProvider/TreeViewProvider.d.ts +1 -1
  34. package/esm/internals/TreeViewProvider/TreeViewProvider.js +17 -5
  35. package/esm/internals/TreeViewProvider/TreeViewProvider.types.d.ts +3 -1
  36. package/esm/internals/TreeViewProvider/TreeViewStyleContext.d.ts +33 -0
  37. package/esm/internals/TreeViewProvider/TreeViewStyleContext.js +13 -0
  38. package/esm/internals/TreeViewProvider/index.d.ts +1 -1
  39. package/esm/internals/TreeViewProvider/index.js +1 -1
  40. package/esm/internals/index.d.ts +2 -1
  41. package/esm/internals/models/itemPlugin.d.ts +3 -3
  42. package/esm/internals/plugins/useTreeViewItemCustomization/index.d.ts +2 -0
  43. package/esm/internals/plugins/useTreeViewItemCustomization/index.js +1 -0
  44. package/esm/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.d.ts +3 -0
  45. package/esm/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.js +24 -0
  46. package/esm/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.types.d.ts +42 -0
  47. package/esm/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.types.js +1 -0
  48. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.js +3 -8
  49. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +1 -4
  50. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.types.d.ts +6 -6
  51. package/esm/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +13 -15
  52. package/esm/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +0 -3
  53. package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.itemPlugin.js +9 -12
  54. package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +16 -11
  55. package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.d.ts +14 -20
  56. package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.js +5 -7
  57. package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.types.d.ts +5 -4
  58. package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.d.ts +0 -2
  59. package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.d.ts +2 -3
  60. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +16 -21
  61. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +43 -38
  62. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.d.ts +331 -0
  63. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.js +38 -1
  64. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +5 -4
  65. package/esm/internals/utils/selectors.d.ts +1 -1
  66. package/esm/useTreeItem/useTreeItem.js +16 -17
  67. package/esm/useTreeItem/useTreeItem.types.d.ts +9 -4
  68. package/hooks/useTreeItemUtils/useTreeItemUtils.js +7 -13
  69. package/index.js +1 -1
  70. package/internals/TreeViewProvider/TreeViewChildrenItemProvider.js +2 -2
  71. package/internals/TreeViewProvider/TreeViewContext.d.ts +3 -1
  72. package/internals/TreeViewProvider/TreeViewContext.js +10 -2
  73. package/internals/TreeViewProvider/TreeViewProvider.d.ts +1 -1
  74. package/internals/TreeViewProvider/TreeViewProvider.js +17 -5
  75. package/internals/TreeViewProvider/TreeViewProvider.types.d.ts +3 -1
  76. package/internals/TreeViewProvider/TreeViewStyleContext.d.ts +33 -0
  77. package/internals/TreeViewProvider/TreeViewStyleContext.js +21 -0
  78. package/internals/TreeViewProvider/index.d.ts +1 -1
  79. package/internals/TreeViewProvider/index.js +2 -2
  80. package/internals/index.d.ts +2 -1
  81. package/internals/models/itemPlugin.d.ts +3 -3
  82. package/internals/plugins/useTreeViewItemCustomization/index.d.ts +2 -0
  83. package/internals/plugins/useTreeViewItemCustomization/index.js +12 -0
  84. package/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.d.ts +3 -0
  85. package/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.js +32 -0
  86. package/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.types.d.ts +42 -0
  87. package/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.types.js +5 -0
  88. package/internals/plugins/useTreeViewItems/useTreeViewItems.js +3 -8
  89. package/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +1 -4
  90. package/internals/plugins/useTreeViewItems/useTreeViewItems.types.d.ts +6 -6
  91. package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +12 -14
  92. package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +0 -3
  93. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.itemPlugin.js +9 -12
  94. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +16 -12
  95. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.d.ts +14 -20
  96. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.js +5 -7
  97. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.types.d.ts +5 -4
  98. package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.d.ts +0 -2
  99. package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.d.ts +2 -3
  100. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +15 -20
  101. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +42 -37
  102. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.d.ts +331 -0
  103. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.js +39 -2
  104. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +5 -4
  105. package/internals/utils/selectors.d.ts +1 -1
  106. package/modern/RichTreeView/RichTreeView.js +17 -5
  107. package/modern/RichTreeView/richTreeViewClasses.d.ts +2 -4
  108. package/modern/RichTreeView/richTreeViewClasses.js +1 -1
  109. package/modern/SimpleTreeView/SimpleTreeView.js +17 -5
  110. package/modern/SimpleTreeView/simpleTreeViewClasses.d.ts +2 -4
  111. package/modern/SimpleTreeView/simpleTreeViewClasses.js +1 -1
  112. package/modern/TreeItem/TreeItem.d.ts +1 -1
  113. package/modern/TreeItem/TreeItem.js +45 -49
  114. package/modern/TreeItem/index.d.ts +2 -1
  115. package/modern/TreeItem/index.js +1 -1
  116. package/modern/TreeItem/treeItemClasses.d.ts +40 -18
  117. package/modern/TreeItem/treeItemClasses.js +3 -1
  118. package/modern/TreeItemLabelInput/TreeItemLabelInput.js +2 -2
  119. package/modern/hooks/useTreeItemUtils/useTreeItemUtils.js +8 -14
  120. package/modern/index.js +1 -1
  121. package/modern/internals/TreeViewProvider/TreeViewChildrenItemProvider.js +1 -1
  122. package/modern/internals/TreeViewProvider/TreeViewContext.d.ts +3 -1
  123. package/modern/internals/TreeViewProvider/TreeViewContext.js +8 -1
  124. package/modern/internals/TreeViewProvider/TreeViewProvider.d.ts +1 -1
  125. package/modern/internals/TreeViewProvider/TreeViewProvider.js +17 -5
  126. package/modern/internals/TreeViewProvider/TreeViewProvider.types.d.ts +3 -1
  127. package/modern/internals/TreeViewProvider/TreeViewStyleContext.d.ts +33 -0
  128. package/modern/internals/TreeViewProvider/TreeViewStyleContext.js +13 -0
  129. package/modern/internals/TreeViewProvider/index.d.ts +1 -1
  130. package/modern/internals/TreeViewProvider/index.js +1 -1
  131. package/modern/internals/index.d.ts +2 -1
  132. package/modern/internals/models/itemPlugin.d.ts +3 -3
  133. package/modern/internals/plugins/useTreeViewItemCustomization/index.d.ts +2 -0
  134. package/modern/internals/plugins/useTreeViewItemCustomization/index.js +1 -0
  135. package/modern/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.d.ts +3 -0
  136. package/modern/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.js +24 -0
  137. package/modern/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.types.d.ts +42 -0
  138. package/modern/internals/plugins/useTreeViewItemCustomization/useTreeViewItemCustomization.types.js +1 -0
  139. package/modern/internals/plugins/useTreeViewItems/useTreeViewItems.js +3 -8
  140. package/modern/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +1 -4
  141. package/modern/internals/plugins/useTreeViewItems/useTreeViewItems.types.d.ts +6 -6
  142. package/modern/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +13 -15
  143. package/modern/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +0 -3
  144. package/modern/internals/plugins/useTreeViewLabel/useTreeViewLabel.itemPlugin.js +9 -12
  145. package/modern/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +16 -11
  146. package/modern/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.d.ts +14 -20
  147. package/modern/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.js +5 -7
  148. package/modern/internals/plugins/useTreeViewLabel/useTreeViewLabel.types.d.ts +5 -4
  149. package/modern/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.d.ts +0 -2
  150. package/modern/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.d.ts +2 -3
  151. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +16 -21
  152. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +43 -38
  153. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.d.ts +331 -0
  154. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.js +38 -1
  155. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +5 -4
  156. package/modern/internals/utils/selectors.d.ts +1 -1
  157. package/modern/useTreeItem/useTreeItem.js +16 -17
  158. package/modern/useTreeItem/useTreeItem.types.d.ts +9 -4
  159. package/package.json +2 -2
  160. package/tsconfig.build.tsbuildinfo +1 -1
  161. package/useTreeItem/useTreeItem.js +16 -17
  162. package/useTreeItem/useTreeItem.types.d.ts +9 -4
  163. package/esm/internals/TreeViewProvider/useTreeViewContext.d.ts +0 -3
  164. package/esm/internals/TreeViewProvider/useTreeViewContext.js +0 -9
  165. package/internals/TreeViewProvider/useTreeViewContext.d.ts +0 -3
  166. package/internals/TreeViewProvider/useTreeViewContext.js +0 -17
  167. package/modern/internals/TreeViewProvider/useTreeViewContext.d.ts +0 -3
  168. package/modern/internals/TreeViewProvider/useTreeViewContext.js +0 -9
@@ -66,7 +66,7 @@ const useTreeViewKeyboardNavigation = ({
66
66
  }
67
67
  return matchingItemId;
68
68
  };
69
- const canToggleItemSelection = itemId => !params.disableSelection && !(0, _useTreeViewItems.selectorIsItemDisabled)(store.value, itemId);
69
+ const canToggleItemSelection = itemId => (0, _useTreeViewSelection.selectorIsSelectionEnabled)(store.value) && !(0, _useTreeViewItems.selectorIsItemDisabled)(store.value, itemId);
70
70
  const canToggleItemExpansion = itemId => {
71
71
  return !(0, _useTreeViewItems.selectorIsItemDisabled)(store.value, itemId) && (0, _useTreeViewExpansion.selectorIsItemExpandable)(store.value, itemId);
72
72
  };
@@ -81,6 +81,7 @@ const useTreeViewKeyboardNavigation = ({
81
81
  }
82
82
  const ctrlPressed = event.ctrlKey || event.metaKey;
83
83
  const key = event.key;
84
+ const isMultiSelectEnabled = (0, _useTreeViewSelection.selectorIsMultiSelectEnabled)(store.value);
84
85
 
85
86
  // eslint-disable-next-line default-case
86
87
  switch (true) {
@@ -88,14 +89,14 @@ const useTreeViewKeyboardNavigation = ({
88
89
  case key === ' ' && canToggleItemSelection(itemId):
89
90
  {
90
91
  event.preventDefault();
91
- if (params.multiSelect && event.shiftKey) {
92
+ if (isMultiSelectEnabled && event.shiftKey) {
92
93
  instance.expandSelectionRange(event, itemId);
93
94
  } else {
94
95
  instance.setItemSelection({
95
96
  event,
96
97
  itemId,
97
- keepExistingSelection: params.multiSelect,
98
- shouldBeSelected: params.multiSelect ? undefined : true
98
+ keepExistingSelection: isMultiSelectEnabled,
99
+ shouldBeSelected: undefined
99
100
  });
100
101
  }
101
102
  break;
@@ -105,10 +106,7 @@ const useTreeViewKeyboardNavigation = ({
105
106
  // If the focused item has no children, we select it.
106
107
  case key === 'Enter':
107
108
  {
108
- if ((0, _plugins.hasPlugin)(instance, _useTreeViewLabel.useTreeViewLabel) && (0, _useTreeViewLabel2.selectorIsItemEditable)(store.value, {
109
- itemId,
110
- isItemEditable: params.isItemEditable
111
- }) && !(0, _useTreeViewLabel2.selectorIsItemBeingEdited)(store.value, itemId)) {
109
+ if ((0, _plugins.hasPlugin)(instance, _useTreeViewLabel.useTreeViewLabel) && (0, _useTreeViewLabel2.selectorIsItemEditable)(store.value, itemId) && !(0, _useTreeViewLabel2.selectorIsItemBeingEdited)(store.value, itemId)) {
112
110
  instance.setEditedItemId(itemId);
113
111
  } else if (canToggleItemExpansion(itemId)) {
114
112
  instance.setItemExpansion({
@@ -117,7 +115,7 @@ const useTreeViewKeyboardNavigation = ({
117
115
  });
118
116
  event.preventDefault();
119
117
  } else if (canToggleItemSelection(itemId)) {
120
- if (params.multiSelect) {
118
+ if (isMultiSelectEnabled) {
121
119
  event.preventDefault();
122
120
  instance.setItemSelection({
123
121
  event,
@@ -145,7 +143,7 @@ const useTreeViewKeyboardNavigation = ({
145
143
 
146
144
  // Multi select behavior when pressing Shift + ArrowDown
147
145
  // Toggles the selection state of the next item
148
- if (params.multiSelect && event.shiftKey && canToggleItemSelection(nextItem)) {
146
+ if (isMultiSelectEnabled && event.shiftKey && canToggleItemSelection(nextItem)) {
149
147
  instance.selectItemFromArrowNavigation(event, itemId, nextItem);
150
148
  }
151
149
  }
@@ -162,7 +160,7 @@ const useTreeViewKeyboardNavigation = ({
162
160
 
163
161
  // Multi select behavior when pressing Shift + ArrowUp
164
162
  // Toggles the selection state of the previous item
165
- if (params.multiSelect && event.shiftKey && canToggleItemSelection(previousItem)) {
163
+ if (isMultiSelectEnabled && event.shiftKey && canToggleItemSelection(previousItem)) {
166
164
  instance.selectItemFromArrowNavigation(event, itemId, previousItem);
167
165
  }
168
166
  }
@@ -220,7 +218,7 @@ const useTreeViewKeyboardNavigation = ({
220
218
  {
221
219
  // Multi select behavior when pressing Ctrl + Shift + Home
222
220
  // Selects the focused item and all items up to the first item.
223
- if (canToggleItemSelection(itemId) && params.multiSelect && ctrlPressed && event.shiftKey) {
221
+ if (canToggleItemSelection(itemId) && isMultiSelectEnabled && ctrlPressed && event.shiftKey) {
224
222
  instance.selectRangeFromStartToItem(event, itemId);
225
223
  } else {
226
224
  instance.focusItem(event, (0, _tree.getFirstNavigableItem)(store.value));
@@ -234,7 +232,7 @@ const useTreeViewKeyboardNavigation = ({
234
232
  {
235
233
  // Multi select behavior when pressing Ctrl + Shirt + End
236
234
  // Selects the focused item and all the items down to the last item.
237
- if (canToggleItemSelection(itemId) && params.multiSelect && ctrlPressed && event.shiftKey) {
235
+ if (canToggleItemSelection(itemId) && isMultiSelectEnabled && ctrlPressed && event.shiftKey) {
238
236
  instance.selectRangeFromItemToEnd(event, itemId);
239
237
  } else {
240
238
  instance.focusItem(event, (0, _tree.getLastNavigableItem)(store.value));
@@ -253,7 +251,7 @@ const useTreeViewKeyboardNavigation = ({
253
251
 
254
252
  // Multi select behavior when pressing Ctrl + a
255
253
  // Selects all the items
256
- case String.fromCharCode(event.keyCode) === 'A' && ctrlPressed && params.multiSelect && !params.disableSelection:
254
+ case String.fromCharCode(event.keyCode) === 'A' && ctrlPressed && isMultiSelectEnabled && (0, _useTreeViewSelection.selectorIsSelectionEnabled)(store.value):
257
255
  {
258
256
  instance.selectAllNavigableItems(event);
259
257
  event.preventDefault();
@@ -5,8 +5,6 @@ import { UseTreeViewSelectionSignature } from "../useTreeViewSelection/index.js"
5
5
  import { UseTreeViewFocusSignature } from "../useTreeViewFocus/index.js";
6
6
  import { UseTreeViewExpansionSignature } from "../useTreeViewExpansion/index.js";
7
7
  import { TreeViewItemId, TreeViewCancellableEvent } from "../../../models/index.js";
8
- import { UseTreeViewLabelSignature } from "../useTreeViewLabel/index.js";
9
- import { UseTreeViewLazyLoadingSignature } from "../useTreeViewLazyLoading/index.js";
10
8
  export interface UseTreeViewKeyboardNavigationInstance {
11
9
  /**
12
10
  * Updates the `firstCharMap` to add/remove the first character of some item's labels.
@@ -26,7 +24,6 @@ export interface UseTreeViewKeyboardNavigationInstance {
26
24
  export type UseTreeViewKeyboardNavigationSignature = TreeViewPluginSignature<{
27
25
  instance: UseTreeViewKeyboardNavigationInstance;
28
26
  dependencies: [UseTreeViewItemsSignature, UseTreeViewSelectionSignature, UseTreeViewFocusSignature, UseTreeViewExpansionSignature];
29
- optionalDependencies: [UseTreeViewLabelSignature, UseTreeViewLazyLoadingSignature];
30
27
  }>;
31
28
  export type TreeViewFirstCharMap = {
32
29
  [itemId: string]: string;
@@ -13,33 +13,30 @@ const useTreeViewLabelItemPlugin = ({
13
13
  props
14
14
  }) => {
15
15
  const {
16
- store,
17
- label: {
18
- isItemEditable
19
- }
16
+ store
20
17
  } = (0, _TreeViewProvider.useTreeViewContext)();
21
18
  const {
22
19
  label,
23
20
  itemId
24
21
  } = props;
25
22
  const [labelInputValue, setLabelInputValue] = React.useState(label);
26
- const editable = (0, _useSelector.useSelector)(store, _useTreeViewLabel.selectorIsItemEditable, {
27
- itemId,
28
- isItemEditable
29
- });
30
- const editing = (0, _useSelector.useSelector)(store, _useTreeViewLabel.selectorIsItemBeingEdited, itemId);
23
+ const isItemEditable = (0, _useSelector.useSelector)(store, _useTreeViewLabel.selectorIsItemEditable, itemId);
24
+ const isItemBeingEdited = (0, _useSelector.useSelector)(store, _useTreeViewLabel.selectorIsItemBeingEdited, itemId);
31
25
  React.useEffect(() => {
32
- if (!editing) {
26
+ if (!isItemBeingEdited) {
33
27
  setLabelInputValue(label);
34
28
  }
35
- }, [editing, label]);
29
+ }, [isItemBeingEdited, label]);
36
30
  return {
37
31
  propsEnhancers: {
32
+ label: () => ({
33
+ editable: isItemEditable
34
+ }),
38
35
  labelInput: ({
39
36
  externalEventHandlers,
40
37
  interactions
41
38
  }) => {
42
- if (!editable) {
39
+ if (!isItemEditable) {
43
40
  return {};
44
41
  }
45
42
  const handleKeydown = event => {
@@ -1,13 +1,12 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.useTreeViewLabel = void 0;
9
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
- var React = _interopRequireWildcard(require("react"));
9
+ var _useEnhancedEffect = _interopRequireDefault(require("@mui/utils/useEnhancedEffect"));
11
10
  var _useTreeViewLabel = require("./useTreeViewLabel.itemPlugin");
12
11
  const useTreeViewLabel = ({
13
12
  store,
@@ -15,9 +14,9 @@ const useTreeViewLabel = ({
15
14
  }) => {
16
15
  const setEditedItemId = editedItemId => {
17
16
  store.update(prevState => (0, _extends2.default)({}, prevState, {
18
- label: {
17
+ label: (0, _extends2.default)({}, prevState.label, {
19
18
  editedItemId
20
- }
19
+ })
21
20
  }));
22
21
  };
23
22
  const updateItemLabel = (itemId, label) => {
@@ -43,11 +42,14 @@ const useTreeViewLabel = ({
43
42
  params.onItemLabelChange(itemId, label);
44
43
  }
45
44
  };
46
- const pluginContextValue = React.useMemo(() => ({
47
- label: {
48
- isItemEditable: params.isItemEditable
49
- }
50
- }), [params.isItemEditable]);
45
+ (0, _useEnhancedEffect.default)(() => {
46
+ const isItemEditable = params.isItemEditable;
47
+ store.update(prevState => (0, _extends2.default)({}, prevState, {
48
+ label: (0, _extends2.default)({}, prevState.label, {
49
+ isItemEditable: typeof isItemEditable === 'boolean' ? () => isItemEditable : isItemEditable
50
+ })
51
+ }));
52
+ }, [store, params.isItemEditable]);
51
53
  return {
52
54
  instance: {
53
55
  setEditedItemId,
@@ -55,8 +57,7 @@ const useTreeViewLabel = ({
55
57
  },
56
58
  publicAPI: {
57
59
  updateItemLabel
58
- },
59
- contextValue: pluginContextValue
60
+ }
60
61
  };
61
62
  };
62
63
  exports.useTreeViewLabel = useTreeViewLabel;
@@ -66,8 +67,11 @@ useTreeViewLabel.getDefaultizedParams = ({
66
67
  }) => (0, _extends2.default)({}, params, {
67
68
  isItemEditable: params.isItemEditable ?? false
68
69
  });
69
- useTreeViewLabel.getInitialState = () => ({
70
+ useTreeViewLabel.getInitialState = ({
71
+ isItemEditable
72
+ }) => ({
70
73
  label: {
74
+ isItemEditable: typeof isItemEditable === 'boolean' ? () => isItemEditable : isItemEditable,
71
75
  editedItemId: null
72
76
  }
73
77
  });
@@ -3,36 +3,28 @@ import { TreeViewRootSelector } from "../../utils/selectors.js";
3
3
  /**
4
4
  * Check if an item is editable.
5
5
  * @param {TreeViewState<[UseTreeViewItemsSignature]>} state The state of the tree view.
6
- * @param {object} params The parameters.
7
- * @param {TreeViewItemId} params.itemId The id of the item to check.
8
- * @param {((item: any) => boolean) | boolean} params.isItemEditable The function to determine if an item is editable.
6
+ * @param {TreeViewItemId} itemId The id of the item to check.
9
7
  * @returns {boolean} `true` if the item is editable, `false` otherwise.
10
8
  */
11
- export declare const selectorIsItemEditable: ((state: any, args: any) => boolean) & {
9
+ export declare const selectorIsItemEditable: ((state: any, itemId: string) => boolean) & {
12
10
  clearCache: () => void;
13
11
  resultsCount: () => number;
14
12
  resetResultsCount: () => void;
15
13
  } & {
16
14
  resultFunc: (resultFuncArgs_0: {
17
- itemId: string;
18
- isItemEditable: ((item: any) => boolean) | boolean;
19
- }, resultFuncArgs_1: import("../../..").TreeViewBaseItem<import("../../..").TreeViewDefaultItemModelProperties>) => boolean;
15
+ isItemEditable: (item: any) => boolean;
16
+ editedItemId: string | null;
17
+ } | undefined, resultFuncArgs_1: import("../../..").TreeViewBaseItem<import("../../..").TreeViewDefaultItemModelProperties>) => boolean;
20
18
  memoizedResultFunc: ((resultFuncArgs_0: {
21
- itemId: string;
22
- isItemEditable: ((item: any) => boolean) | boolean;
23
- }, resultFuncArgs_1: import("../../..").TreeViewBaseItem<import("../../..").TreeViewDefaultItemModelProperties>) => boolean) & {
19
+ isItemEditable: (item: any) => boolean;
20
+ editedItemId: string | null;
21
+ } | undefined, resultFuncArgs_1: import("../../..").TreeViewBaseItem<import("../../..").TreeViewDefaultItemModelProperties>) => boolean) & {
24
22
  clearCache: () => void;
25
23
  resultsCount: () => number;
26
24
  resetResultsCount: () => void;
27
25
  };
28
26
  lastResult: () => boolean;
29
- dependencies: [(_: any, args: {
30
- itemId: string;
31
- isItemEditable: ((item: any) => boolean) | boolean;
32
- }) => {
33
- itemId: string;
34
- isItemEditable: ((item: any) => boolean) | boolean;
35
- }, (state: any, args: any) => import("../../..").TreeViewBaseItem<import("../../..").TreeViewDefaultItemModelProperties>];
27
+ dependencies: [TreeViewRootSelector<UseTreeViewLabelSignature, true>, (state: any, itemId: string) => import("../../..").TreeViewBaseItem<import("../../..").TreeViewDefaultItemModelProperties>];
36
28
  recomputations: () => number;
37
29
  resetRecomputations: () => void;
38
30
  dependencyRecomputations: () => number;
@@ -53,17 +45,19 @@ export declare const selectorIsItemBeingEdited: ((state: any, itemId: string) =>
53
45
  resetResultsCount: () => void;
54
46
  } & {
55
47
  resultFunc: (resultFuncArgs_0: {
48
+ isItemEditable: (item: any) => boolean;
56
49
  editedItemId: string | null;
57
- }, resultFuncArgs_1: string) => boolean;
50
+ } | undefined, resultFuncArgs_1: string) => boolean;
58
51
  memoizedResultFunc: ((resultFuncArgs_0: {
52
+ isItemEditable: (item: any) => boolean;
59
53
  editedItemId: string | null;
60
- }, resultFuncArgs_1: string) => boolean) & {
54
+ } | undefined, resultFuncArgs_1: string) => boolean) & {
61
55
  clearCache: () => void;
62
56
  resultsCount: () => number;
63
57
  resetResultsCount: () => void;
64
58
  };
65
59
  lastResult: () => boolean;
66
- dependencies: [TreeViewRootSelector<UseTreeViewLabelSignature>, (_: any, itemId: string) => string];
60
+ dependencies: [TreeViewRootSelector<UseTreeViewLabelSignature, true>, (_: any, itemId: string) => string];
67
61
  recomputations: () => number;
68
62
  resetRecomputations: () => void;
69
63
  dependencyRecomputations: () => number;
@@ -11,16 +11,14 @@ const selectorTreeViewLabelState = state => state.label;
11
11
  /**
12
12
  * Check if an item is editable.
13
13
  * @param {TreeViewState<[UseTreeViewItemsSignature]>} state The state of the tree view.
14
- * @param {object} params The parameters.
15
- * @param {TreeViewItemId} params.itemId The id of the item to check.
16
- * @param {((item: any) => boolean) | boolean} params.isItemEditable The function to determine if an item is editable.
14
+ * @param {TreeViewItemId} itemId The id of the item to check.
17
15
  * @returns {boolean} `true` if the item is editable, `false` otherwise.
18
16
  */
19
- const selectorIsItemEditable = exports.selectorIsItemEditable = (0, _selectors.createSelector)([(_, args) => args, (state, args) => (0, _useTreeViewItems.selectorItemModel)(state, args.itemId)], (args, itemModel) => {
20
- if (!itemModel || !args.isItemEditable) {
17
+ const selectorIsItemEditable = exports.selectorIsItemEditable = (0, _selectors.createSelector)([selectorTreeViewLabelState, (state, itemId) => (0, _useTreeViewItems.selectorItemModel)(state, itemId)], (labelState, itemModel) => {
18
+ if (!itemModel || !labelState) {
21
19
  return false;
22
20
  }
23
- return typeof args.isItemEditable === 'function' ? args.isItemEditable(itemModel) : true;
21
+ return labelState.isItemEditable(itemModel);
24
22
  });
25
23
 
26
24
  /**
@@ -29,4 +27,4 @@ const selectorIsItemEditable = exports.selectorIsItemEditable = (0, _selectors.c
29
27
  * @param {TreeViewItemId} itemId The id of the item to check.
30
28
  * @returns {boolean} `true` if the item is being edited, `false` otherwise.
31
29
  */
32
- const selectorIsItemBeingEdited = exports.selectorIsItemBeingEdited = (0, _selectors.createSelector)([selectorTreeViewLabelState, (_, itemId) => itemId], (labelState, itemId) => labelState.editedItemId === itemId);
30
+ const selectorIsItemBeingEdited = exports.selectorIsItemBeingEdited = (0, _selectors.createSelector)([selectorTreeViewLabelState, (_, itemId) => itemId], (labelState, itemId) => labelState?.editedItemId === itemId);
@@ -38,22 +38,23 @@ export interface UseTreeViewLabelParameters<R extends {}> {
38
38
  export type UseTreeViewLabelDefaultizedParameters<R extends {}> = DefaultizedProps<UseTreeViewLabelParameters<R>, 'isItemEditable'>;
39
39
  export interface UseTreeViewLabelState {
40
40
  label: {
41
+ isItemEditable: (item: any) => boolean;
41
42
  editedItemId: string | null;
42
43
  };
43
44
  }
44
- export interface UseTreeViewLabelContextValue {
45
- label: Pick<UseTreeViewLabelDefaultizedParameters<any>, 'isItemEditable'>;
46
- }
47
45
  export type UseTreeViewLabelSignature = TreeViewPluginSignature<{
48
46
  params: UseTreeViewLabelParameters<any>;
49
47
  defaultizedParams: UseTreeViewLabelDefaultizedParameters<any>;
50
48
  publicAPI: UseTreeViewLabelPublicAPI;
51
49
  instance: UseTreeViewLabelInstance;
52
50
  state: UseTreeViewLabelState;
53
- contextValue: UseTreeViewLabelContextValue;
54
51
  dependencies: [UseTreeViewItemsSignature];
55
52
  }>;
56
53
  export interface UseTreeItemLabelInputSlotPropsFromLabelEditing extends TreeItemLabelInputProps {}
54
+ export interface UseTreeItemLabelSlotPropsFromLabelEditing {
55
+ editable?: boolean;
56
+ }
57
57
  declare module '@mui/x-tree-view/useTreeItem' {
58
58
  interface UseTreeItemLabelInputSlotOwnProps extends UseTreeItemLabelInputSlotPropsFromLabelEditing {}
59
+ interface UseTreeItemLabelSlotOwnProps extends UseTreeItemLabelSlotPropsFromLabelEditing {}
59
60
  }
@@ -1,7 +1,5 @@
1
- import { TreeViewAnyPluginSignature, TreeViewState } from "../../models/index.js";
2
1
  import { TreeViewRootSelector, TreeViewRootSelectorForOptionalPlugin } from "../../utils/selectors.js";
3
2
  import { UseTreeViewLazyLoadingSignature } from "./useTreeViewLazyLoading.types.js";
4
- export type Temp<TSignature extends TreeViewAnyPluginSignature> = <TSignatures extends [], TOptionalSignatures extends [TSignature]>(state: TreeViewState<TSignatures, TOptionalSignatures>) => TSignature['state'][keyof TSignature['state']];
5
3
  export declare const selectorDataSourceState: ((state: import("../../corePlugins/useTreeViewId/useTreeViewId.types").UseTreeViewIdState & import("./useTreeViewLazyLoading.types").UseTreeViewLazyLoadingState & Partial<{}> & {
6
4
  cacheKey: import("../../models").TreeViewStateCacheKey;
7
5
  }) => {
@@ -13,9 +13,8 @@ type DataSource<R extends {}> = {
13
13
  * @template R
14
14
  * @param {R} item The item to check.
15
15
  * @returns {number} The number of children.
16
- * @default (item) => number
17
16
  */
18
- getChildrenCount?: (item: R) => number;
17
+ getChildrenCount: (item: R) => number;
19
18
  /**
20
19
  * Method used for fetching the items.
21
20
  * Only relevant for lazy-loaded tree views.
@@ -24,7 +23,7 @@ type DataSource<R extends {}> = {
24
23
  * @param {TreeViewItemId} parentId The id of the item the children belong to.
25
24
  * @returns { Promise<R[]>} The children of the item.
26
25
  */
27
- getTreeItems?: (parentId?: TreeViewItemId) => Promise<R[]>;
26
+ getTreeItems: (parentId?: TreeViewItemId) => Promise<R[]>;
28
27
  };
29
28
  export interface UseTreeViewLazyLoadingPublicAPI {}
30
29
  export interface UseTreeViewLazyLoadingInstance extends UseTreeViewLazyLoadingPublicAPI {
@@ -6,16 +6,18 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.useTreeViewSelectionItemPlugin = void 0;
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _fastObjectShallowCompare = require("@mui/x-internals/fastObjectShallowCompare");
9
10
  var _TreeViewProvider = require("../../TreeViewProvider");
10
11
  var _useTreeViewItems = require("../useTreeViewItems/useTreeViewItems.selectors");
11
12
  var _useTreeViewSelection = require("./useTreeViewSelection.selectors");
12
13
  var _useSelector = require("../../hooks/useSelector");
13
- function selectorItemCheckboxStatus(state, {
14
- itemId,
15
- selectionPropagation
16
- }) {
14
+ function selectorItemCheckboxStatus(state, itemId) {
15
+ const isCheckboxSelectionEnabled = (0, _useTreeViewSelection.selectorIsCheckboxSelectionEnabled)(state);
16
+ const isSelectionEnabledForItem = (0, _useTreeViewSelection.selectorIsItemSelectionEnabled)(state, itemId);
17
17
  if ((0, _useTreeViewSelection.selectorIsItemSelected)(state, itemId)) {
18
18
  return {
19
+ disabled: !isSelectionEnabledForItem,
20
+ visible: isCheckboxSelectionEnabled,
19
21
  indeterminate: false,
20
22
  checked: true
21
23
  };
@@ -23,6 +25,8 @@ function selectorItemCheckboxStatus(state, {
23
25
  const children = (0, _useTreeViewItems.selectorItemOrderedChildrenIds)(state, itemId);
24
26
  if (children.length === 0) {
25
27
  return {
28
+ disabled: !isSelectionEnabledForItem,
29
+ visible: isCheckboxSelectionEnabled,
26
30
  indeterminate: false,
27
31
  checked: false
28
32
  };
@@ -41,8 +45,10 @@ function selectorItemCheckboxStatus(state, {
41
45
  };
42
46
  traverseDescendants(itemId);
43
47
  return {
48
+ disabled: !isSelectionEnabledForItem,
49
+ visible: isCheckboxSelectionEnabled,
44
50
  indeterminate: hasSelectedDescendant && hasUnSelectedDescendant || !hasUnSelectedDescendant,
45
- checked: selectionPropagation.parents ? hasSelectedDescendant : false
51
+ checked: (0, _useTreeViewSelection.selectorSelectionPropagationRules)(state).parents ? hasSelectedDescendant : false
46
52
  };
47
53
  }
48
54
  const useTreeViewSelectionItemPlugin = ({
@@ -52,37 +58,26 @@ const useTreeViewSelectionItemPlugin = ({
52
58
  itemId
53
59
  } = props;
54
60
  const {
55
- store,
56
- selection: {
57
- disableSelection,
58
- checkboxSelection,
59
- selectionPropagation
60
- }
61
+ store
61
62
  } = (0, _TreeViewProvider.useTreeViewContext)();
62
- const checkboxStatus = (0, _useSelector.useSelector)(store, selectorItemCheckboxStatus, {
63
- itemId,
64
- selectionPropagation
65
- }, (a, b) => a.checked === b.checked && a.indeterminate === b.indeterminate);
63
+ const checkboxStatus = (0, _useSelector.useSelector)(store, selectorItemCheckboxStatus, itemId, _fastObjectShallowCompare.fastObjectShallowCompare);
66
64
  return {
67
65
  propsEnhancers: {
68
66
  checkbox: ({
69
67
  externalEventHandlers,
70
- interactions,
71
- status
68
+ interactions
72
69
  }) => {
73
70
  const handleChange = event => {
74
71
  externalEventHandlers.onChange?.(event);
75
72
  if (event.defaultMuiPrevented) {
76
73
  return;
77
74
  }
78
- if (disableSelection || status.disabled) {
75
+ if (!(0, _useTreeViewSelection.selectorIsItemSelectionEnabled)(store.value, itemId)) {
79
76
  return;
80
77
  }
81
78
  interactions.handleCheckboxSelection(event);
82
79
  };
83
80
  return (0, _extends2.default)({
84
- visible: checkboxSelection,
85
- disabled: disableSelection || status.disabled,
86
81
  tabIndex: -1,
87
82
  onChange: handleChange
88
83
  }, checkboxStatus);
@@ -20,16 +20,10 @@ const useTreeViewSelection = ({
20
20
  }) => {
21
21
  const lastSelectedItem = React.useRef(null);
22
22
  const lastSelectedRange = React.useRef({});
23
- (0, _useEnhancedEffect.default)(() => {
24
- store.update(prevState => (0, _extends2.default)({}, prevState, {
25
- selection: {
26
- selectedItemsMap: (0, _useTreeViewSelection.createSelectedItemsMap)(models.selectedItems.value)
27
- }
28
- }));
29
- }, [store, models.selectedItems.value]);
30
23
  const setSelectedItems = (event, newModel, additionalItemsToPropagate) => {
31
24
  let cleanModel;
32
- if (params.multiSelect && (params.selectionPropagation.descendants || params.selectionPropagation.parents)) {
25
+ const isMultiSelectEnabled = (0, _useTreeViewSelection2.selectorIsMultiSelectEnabled)(store.value);
26
+ if (isMultiSelectEnabled && (params.selectionPropagation.descendants || params.selectionPropagation.parents)) {
33
27
  cleanModel = (0, _useTreeViewSelection.propagateSelection)({
34
28
  store,
35
29
  selectionPropagation: params.selectionPropagation,
@@ -41,7 +35,7 @@ const useTreeViewSelection = ({
41
35
  cleanModel = newModel;
42
36
  }
43
37
  if (params.onItemSelectionToggle) {
44
- if (params.multiSelect) {
38
+ if (isMultiSelectEnabled) {
45
39
  const changes = (0, _useTreeViewSelection.getAddedAndRemovedItems)({
46
40
  store,
47
41
  newModel: cleanModel,
@@ -75,10 +69,11 @@ const useTreeViewSelection = ({
75
69
  keepExistingSelection = false,
76
70
  shouldBeSelected
77
71
  }) => {
78
- if (params.disableSelection) {
72
+ if (!(0, _useTreeViewSelection2.selectorIsSelectionEnabled)(store.value)) {
79
73
  return;
80
74
  }
81
75
  let newSelected;
76
+ const isMultiSelectEnabled = (0, _useTreeViewSelection2.selectorIsMultiSelectEnabled)(store.value);
82
77
  if (keepExistingSelection) {
83
78
  const cleanSelectedItems = (0, _useTreeViewSelection.convertSelectedItemsToArray)(models.selectedItems.value);
84
79
  const isSelectedBefore = (0, _useTreeViewSelection2.selectorIsItemSelected)(store.value, itemId);
@@ -92,9 +87,9 @@ const useTreeViewSelection = ({
92
87
  } else {
93
88
  // eslint-disable-next-line no-lonely-if
94
89
  if (shouldBeSelected === false || shouldBeSelected == null && (0, _useTreeViewSelection2.selectorIsItemSelected)(store.value, itemId)) {
95
- newSelected = params.multiSelect ? [] : null;
90
+ newSelected = isMultiSelectEnabled ? [] : null;
96
91
  } else {
97
- newSelected = params.multiSelect ? [itemId] : itemId;
92
+ newSelected = isMultiSelectEnabled ? [itemId] : itemId;
98
93
  }
99
94
  }
100
95
  setSelectedItems(event, newSelected,
@@ -105,7 +100,8 @@ const useTreeViewSelection = ({
105
100
  lastSelectedRange.current = {};
106
101
  };
107
102
  const selectRange = (event, [start, end]) => {
108
- if (params.disableSelection || !params.multiSelect) {
103
+ const isMultiSelectEnabled = (0, _useTreeViewSelection2.selectorIsMultiSelectEnabled)(store.value);
104
+ if (!isMultiSelectEnabled) {
109
105
  return;
110
106
  }
111
107
  let newSelectedItems = (0, _useTreeViewSelection.convertSelectedItemsToArray)(models.selectedItems.value).slice();
@@ -137,7 +133,8 @@ const useTreeViewSelection = ({
137
133
  selectRange(event, [itemId, (0, _tree.getLastNavigableItem)(store.value)]);
138
134
  };
139
135
  const selectAllNavigableItems = event => {
140
- if (params.disableSelection || !params.multiSelect) {
136
+ const isMultiSelectEnabled = (0, _useTreeViewSelection2.selectorIsMultiSelectEnabled)(store.value);
137
+ if (!isMultiSelectEnabled) {
141
138
  return;
142
139
  }
143
140
  const navigableItems = (0, _tree.getAllNavigableItems)(store.value);
@@ -145,7 +142,8 @@ const useTreeViewSelection = ({
145
142
  lastSelectedRange.current = (0, _useTreeViewSelection.getLookupFromArray)(navigableItems);
146
143
  };
147
144
  const selectItemFromArrowNavigation = (event, currentItem, nextItem) => {
148
- if (params.disableSelection || !params.multiSelect) {
145
+ const isMultiSelectEnabled = (0, _useTreeViewSelection2.selectorIsMultiSelectEnabled)(store.value);
146
+ if (!isMultiSelectEnabled) {
149
147
  return;
150
148
  }
151
149
  let newSelectedItems = (0, _useTreeViewSelection.convertSelectedItemsToArray)(models.selectedItems.value).slice();
@@ -169,17 +167,22 @@ const useTreeViewSelection = ({
169
167
  }
170
168
  setSelectedItems(event, newSelectedItems);
171
169
  };
172
- const pluginContextValue = React.useMemo(() => ({
173
- selection: {
174
- multiSelect: params.multiSelect,
175
- checkboxSelection: params.checkboxSelection,
176
- disableSelection: params.disableSelection,
177
- selectionPropagation: {
178
- descendants: params.selectionPropagation.descendants,
179
- parents: params.selectionPropagation.parents
170
+ (0, _useEnhancedEffect.default)(() => {
171
+ store.update(prevState => (0, _extends2.default)({}, prevState, {
172
+ selection: {
173
+ rawSelectedItems: models.selectedItems.value,
174
+ // Only re-compute the map when the model changes.
175
+ selectedItemsMap: prevState.selection.rawSelectedItems === models.selectedItems.value ? prevState.selection.selectedItemsMap : (0, _useTreeViewSelection.createSelectedItemsMap)(models.selectedItems.value),
176
+ isEnabled: !params.disableSelection,
177
+ isMultiSelectEnabled: params.multiSelect,
178
+ isCheckboxSelectionEnabled: params.checkboxSelection,
179
+ selectionPropagation: {
180
+ descendants: params.selectionPropagation.descendants,
181
+ parents: params.selectionPropagation.parents
182
+ }
180
183
  }
181
- }
182
- }), [params.multiSelect, params.checkboxSelection, params.disableSelection, params.selectionPropagation.descendants, params.selectionPropagation.parents]);
184
+ }));
185
+ }, [store, models.selectedItems.value, params.multiSelect, params.checkboxSelection, params.disableSelection, params.selectionPropagation.descendants, params.selectionPropagation.parents]);
183
186
  return {
184
187
  getRootProps: () => ({
185
188
  'aria-multiselectable': params.multiSelect
@@ -194,8 +197,7 @@ const useTreeViewSelection = ({
194
197
  selectRangeFromStartToItem,
195
198
  selectRangeFromItemToEnd,
196
199
  selectItemFromArrowNavigation
197
- },
198
- contextValue: pluginContextValue
200
+ }
199
201
  };
200
202
  };
201
203
  exports.useTreeViewSelection = useTreeViewSelection;
@@ -216,16 +218,19 @@ useTreeViewSelection.getDefaultizedParams = ({
216
218
  defaultSelectedItems: params.defaultSelectedItems ?? (params.multiSelect ? DEFAULT_SELECTED_ITEMS : null),
217
219
  selectionPropagation: params.selectionPropagation ?? EMPTY_SELECTION_PROPAGATION
218
220
  });
219
- useTreeViewSelection.getInitialState = params => ({
220
- selection: {
221
- selectedItemsMap: (0, _useTreeViewSelection.createSelectedItemsMap)(params.selectedItems === undefined ? params.defaultSelectedItems : params.selectedItems)
222
- }
223
- });
224
- useTreeViewSelection.getInitialState = params => ({
225
- selection: {
226
- selectedItemsMap: (0, _useTreeViewSelection.createSelectedItemsMap)(params.selectedItems === undefined ? params.defaultSelectedItems : params.selectedItems)
227
- }
228
- });
221
+ useTreeViewSelection.getInitialState = params => {
222
+ const rawSelectedItems = params.selectedItems === undefined ? params.defaultSelectedItems : params.selectedItems;
223
+ return {
224
+ selection: {
225
+ rawSelectedItems,
226
+ selectedItemsMap: (0, _useTreeViewSelection.createSelectedItemsMap)(rawSelectedItems),
227
+ isEnabled: !params.disableSelection,
228
+ isMultiSelectEnabled: params.multiSelect,
229
+ isCheckboxSelectionEnabled: params.checkboxSelection,
230
+ selectionPropagation: params.selectionPropagation
231
+ }
232
+ };
233
+ };
229
234
  useTreeViewSelection.params = {
230
235
  disableSelection: true,
231
236
  multiSelect: true,