@mui/x-tree-view 8.11.0 → 8.11.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 (158) hide show
  1. package/CHANGELOG.md +169 -0
  2. package/RichTreeView/RichTreeView.js +16 -15
  3. package/RichTreeView/RichTreeView.types.d.ts +3 -2
  4. package/SimpleTreeView/SimpleTreeView.js +10 -9
  5. package/SimpleTreeView/SimpleTreeView.types.d.ts +3 -2
  6. package/TreeItem/TreeItem.d.ts +1 -1
  7. package/TreeItemProvider/TreeItemProvider.js +3 -3
  8. package/esm/RichTreeView/RichTreeView.js +16 -15
  9. package/esm/RichTreeView/RichTreeView.types.d.ts +3 -2
  10. package/esm/SimpleTreeView/SimpleTreeView.js +10 -9
  11. package/esm/SimpleTreeView/SimpleTreeView.types.d.ts +3 -2
  12. package/esm/TreeItem/TreeItem.d.ts +1 -1
  13. package/esm/TreeItemProvider/TreeItemProvider.js +3 -3
  14. package/esm/hooks/index.d.ts +2 -1
  15. package/esm/hooks/index.js +2 -1
  16. package/esm/hooks/useApplyPropagationToSelectedItemsOnMount.d.ts +53 -0
  17. package/esm/hooks/useApplyPropagationToSelectedItemsOnMount.js +80 -0
  18. package/esm/hooks/useTreeItemModel.js +3 -3
  19. package/esm/hooks/useTreeItemUtils/useTreeItemUtils.js +24 -25
  20. package/esm/index.js +1 -1
  21. package/esm/internals/TreeViewProvider/TreeViewChildrenItemProvider.js +2 -2
  22. package/esm/internals/TreeViewProvider/TreeViewProvider.types.d.ts +3 -3
  23. package/esm/internals/components/RichTreeViewItems.js +5 -5
  24. package/esm/internals/corePlugins/useTreeViewId/index.d.ts +2 -1
  25. package/esm/internals/corePlugins/useTreeViewId/index.js +2 -1
  26. package/esm/internals/corePlugins/useTreeViewId/useTreeViewId.js +10 -13
  27. package/esm/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.d.ts +8 -34
  28. package/esm/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.js +9 -9
  29. package/esm/internals/index.d.ts +6 -14
  30. package/esm/internals/index.js +6 -13
  31. package/esm/internals/models/plugin.d.ts +2 -3
  32. package/esm/internals/models/treeView.d.ts +4 -6
  33. package/esm/internals/plugins/useTreeViewExpansion/index.d.ts +2 -1
  34. package/esm/internals/plugins/useTreeViewExpansion/index.js +2 -1
  35. package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +26 -30
  36. package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.d.ts +24 -316
  37. package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.js +27 -38
  38. package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +7 -1
  39. package/esm/internals/plugins/useTreeViewFocus/index.d.ts +2 -1
  40. package/esm/internals/plugins/useTreeViewFocus/index.js +2 -1
  41. package/esm/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +17 -21
  42. package/esm/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.d.ts +20 -628
  43. package/esm/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.js +25 -37
  44. package/esm/internals/plugins/useTreeViewItems/index.d.ts +2 -1
  45. package/esm/internals/plugins/useTreeViewItems/index.js +2 -1
  46. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.js +82 -102
  47. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.d.ts +52 -1142
  48. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +58 -98
  49. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.utils.d.ts +1 -1
  50. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.utils.js +1 -1
  51. package/esm/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +32 -42
  52. package/esm/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +22 -22
  53. package/esm/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +2 -0
  54. package/esm/internals/plugins/useTreeViewLabel/index.d.ts +2 -1
  55. package/esm/internals/plugins/useTreeViewLabel/index.js +2 -1
  56. package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.itemPlugin.js +4 -4
  57. package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +17 -25
  58. package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.d.ts +14 -100
  59. package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.js +24 -34
  60. package/esm/internals/plugins/useTreeViewLazyLoading/index.d.ts +2 -1
  61. package/esm/internals/plugins/useTreeViewLazyLoading/index.js +1 -1
  62. package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.d.ts +18 -245
  63. package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.js +15 -27
  64. package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.d.ts +20 -6
  65. package/esm/internals/plugins/useTreeViewSelection/index.d.ts +2 -1
  66. package/esm/internals/plugins/useTreeViewSelection/index.js +2 -1
  67. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +25 -38
  68. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +30 -34
  69. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.d.ts +38 -517
  70. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.js +46 -71
  71. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +1 -0
  72. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +10 -10
  73. package/esm/internals/useTreeView/useTreeView.d.ts +1 -1
  74. package/esm/internals/useTreeView/useTreeView.js +11 -18
  75. package/esm/internals/useTreeView/useTreeView.types.d.ts +1 -1
  76. package/esm/internals/useTreeView/useTreeViewBuildContext.d.ts +2 -3
  77. package/esm/internals/utils/tree.js +33 -33
  78. package/esm/useTreeItem/useTreeItem.js +14 -14
  79. package/esm/useTreeItem/useTreeItem.types.d.ts +2 -1
  80. package/hooks/index.d.ts +2 -1
  81. package/hooks/index.js +8 -1
  82. package/hooks/useApplyPropagationToSelectedItemsOnMount.d.ts +53 -0
  83. package/hooks/useApplyPropagationToSelectedItemsOnMount.js +87 -0
  84. package/hooks/useTreeItemModel.js +3 -3
  85. package/hooks/useTreeItemUtils/useTreeItemUtils.js +18 -19
  86. package/index.js +1 -1
  87. package/internals/TreeViewProvider/TreeViewChildrenItemProvider.js +1 -1
  88. package/internals/TreeViewProvider/TreeViewProvider.types.d.ts +3 -3
  89. package/internals/components/RichTreeViewItems.js +5 -5
  90. package/internals/corePlugins/useTreeViewId/index.d.ts +2 -1
  91. package/internals/corePlugins/useTreeViewId/index.js +8 -1
  92. package/internals/corePlugins/useTreeViewId/useTreeViewId.js +9 -12
  93. package/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.d.ts +8 -34
  94. package/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.js +10 -10
  95. package/internals/index.d.ts +6 -14
  96. package/internals/index.js +12 -73
  97. package/internals/models/plugin.d.ts +2 -3
  98. package/internals/models/treeView.d.ts +4 -6
  99. package/internals/plugins/useTreeViewExpansion/index.d.ts +2 -1
  100. package/internals/plugins/useTreeViewExpansion/index.js +8 -1
  101. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +24 -28
  102. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.d.ts +24 -316
  103. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.js +27 -38
  104. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +7 -1
  105. package/internals/plugins/useTreeViewFocus/index.d.ts +2 -1
  106. package/internals/plugins/useTreeViewFocus/index.js +8 -1
  107. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +14 -18
  108. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.d.ts +20 -628
  109. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.js +23 -35
  110. package/internals/plugins/useTreeViewItems/index.d.ts +2 -1
  111. package/internals/plugins/useTreeViewItems/index.js +8 -1
  112. package/internals/plugins/useTreeViewItems/useTreeViewItems.js +81 -101
  113. package/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.d.ts +52 -1142
  114. package/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +59 -99
  115. package/internals/plugins/useTreeViewItems/useTreeViewItems.utils.d.ts +1 -1
  116. package/internals/plugins/useTreeViewItems/useTreeViewItems.utils.js +1 -1
  117. package/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +32 -42
  118. package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +18 -18
  119. package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +2 -0
  120. package/internals/plugins/useTreeViewLabel/index.d.ts +2 -1
  121. package/internals/plugins/useTreeViewLabel/index.js +8 -1
  122. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.itemPlugin.js +3 -3
  123. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +16 -24
  124. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.d.ts +14 -100
  125. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.js +24 -34
  126. package/internals/plugins/useTreeViewLazyLoading/index.d.ts +2 -1
  127. package/internals/plugins/useTreeViewLazyLoading/index.js +8 -1
  128. package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.d.ts +18 -245
  129. package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.js +16 -28
  130. package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.d.ts +20 -6
  131. package/internals/plugins/useTreeViewSelection/index.d.ts +2 -1
  132. package/internals/plugins/useTreeViewSelection/index.js +8 -1
  133. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +23 -37
  134. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +29 -33
  135. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.d.ts +38 -517
  136. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.js +46 -71
  137. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +1 -0
  138. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +8 -8
  139. package/internals/useTreeView/useTreeView.d.ts +1 -1
  140. package/internals/useTreeView/useTreeView.js +11 -18
  141. package/internals/useTreeView/useTreeView.types.d.ts +1 -1
  142. package/internals/useTreeView/useTreeViewBuildContext.d.ts +2 -3
  143. package/internals/utils/tree.js +31 -31
  144. package/package.json +13 -14
  145. package/useTreeItem/useTreeItem.js +14 -14
  146. package/useTreeItem/useTreeItem.types.d.ts +2 -1
  147. package/esm/internals/hooks/useSelector.d.ts +0 -4
  148. package/esm/internals/hooks/useSelector.js +0 -8
  149. package/esm/internals/utils/TreeViewStore.d.ts +0 -12
  150. package/esm/internals/utils/TreeViewStore.js +0 -22
  151. package/esm/internals/utils/selectors.d.ts +0 -21
  152. package/esm/internals/utils/selectors.js +0 -51
  153. package/internals/hooks/useSelector.d.ts +0 -4
  154. package/internals/hooks/useSelector.js +0 -16
  155. package/internals/utils/TreeViewStore.d.ts +0 -12
  156. package/internals/utils/TreeViewStore.js +0 -29
  157. package/internals/utils/selectors.d.ts +0 -21
  158. package/internals/utils/selectors.js +0 -58
@@ -3,22 +3,13 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.selectorIsItemTheDefaultFocusableItem = exports.selectorIsItemFocused = exports.selectorFocusedItemId = exports.selectorDefaultFocusableItemId = void 0;
7
- var _selectors = require("../../utils/selectors");
6
+ exports.focusSelectors = void 0;
7
+ var _store = require("@mui/x-internals/store");
8
8
  var _useTreeViewSelection = require("../useTreeViewSelection/useTreeViewSelection.selectors");
9
9
  var _useTreeViewItems = require("../useTreeViewItems/useTreeViewItems.selectors");
10
10
  var _useTreeViewItems2 = require("../useTreeViewItems/useTreeViewItems.utils");
11
11
  var _useTreeViewExpansion = require("../useTreeViewExpansion/useTreeViewExpansion.selectors");
12
- const selectorTreeViewFocusState = state => state.focus;
13
-
14
- /**
15
- * Get the item that should be sequentially focusable (usually with the Tab key).
16
- * At any point in time, there is a single item that can be sequentially focused in the Tree View.
17
- * This item is the first selected item (that is both visible and navigable), if any, or the first navigable item if no item is selected.
18
- * @param {TreeViewState<[UseTreeViewFocusSignature]>} state The state of the tree view.
19
- * @returns {TreeViewItemId | null} The id of the item that should be sequentially focusable.
20
- */
21
- const selectorDefaultFocusableItemId = exports.selectorDefaultFocusableItemId = (0, _selectors.createSelector)([_useTreeViewSelection.selectorSelectionModelArray, _useTreeViewExpansion.selectorExpandedItemsMap, _useTreeViewItems.selectorItemMetaLookup, _useTreeViewItems.selectorDisabledItemFocusable, state => (0, _useTreeViewItems.selectorItemOrderedChildrenIds)(state, null)], (selectedItems, expandedItemsMap, itemMetaLookup, disabledItemsFocusable, orderedRootItemIds) => {
12
+ const defaultFocusableItemIdSelector = (0, _store.createSelectorMemoized)(_useTreeViewSelection.selectionSelectors.selectedItems, _useTreeViewExpansion.expansionSelectors.expandedItemsMap, _useTreeViewItems.itemsSelectors.itemMetaLookup, _useTreeViewItems.itemsSelectors.disabledItemFocusable, state => _useTreeViewItems.itemsSelectors.itemOrderedChildrenIds(state, null), (selectedItems, expandedItemsMap, itemMetaLookup, disabledItemsFocusable, orderedRootItemIds) => {
22
13
  const firstSelectedItem = selectedItems.find(itemId => {
23
14
  if (!disabledItemsFocusable && (0, _useTreeViewItems2.isItemDisabled)(itemMetaLookup, itemId)) {
24
15
  return false;
@@ -35,26 +26,23 @@ const selectorDefaultFocusableItemId = exports.selectorDefaultFocusableItemId =
35
26
  }
36
27
  return null;
37
28
  });
38
-
39
- /**
40
- * Check if an item is the default focusable item.
41
- * @param {TreeViewState<[UseTreeViewFocusSignature]>} state The state of the tree view.
42
- * @param {TreeViewItemId} itemId The id of the item to check.
43
- * @returns {boolean} `true` if the item is the default focusable item, `false` otherwise.
44
- */
45
- const selectorIsItemTheDefaultFocusableItem = exports.selectorIsItemTheDefaultFocusableItem = (0, _selectors.createSelector)([selectorDefaultFocusableItemId, (_, itemId) => itemId], (defaultFocusableItemId, itemId) => defaultFocusableItemId === itemId);
46
-
47
- /**
48
- * Get the id of the item that is currently focused.
49
- * @param {TreeViewState<[UseTreeViewFocusSignature]>} state The state of the tree view.
50
- * @returns {TreeViewItemId | null} The id of the item that is currently focused.
51
- */
52
- const selectorFocusedItemId = exports.selectorFocusedItemId = (0, _selectors.createSelector)(selectorTreeViewFocusState, focus => focus.focusedItemId);
53
-
54
- /**
55
- * Check if an item is focused.
56
- * @param {TreeViewState<[UseTreeViewFocusSignature]>} state The state of the tree view.
57
- * @param {TreeViewItemId} itemId The id of the item to check.
58
- * @returns {boolean} `true` if the item is focused, `false` otherwise.
59
- */
60
- const selectorIsItemFocused = exports.selectorIsItemFocused = (0, _selectors.createSelector)([selectorFocusedItemId, (_, itemId) => itemId], (focusedItemId, itemId) => focusedItemId === itemId);
29
+ const focusSelectors = exports.focusSelectors = {
30
+ /**
31
+ * Gets the item that should be sequentially focusable (usually with the Tab key).
32
+ * At any point in time, there is a single item that can be sequentially focused in the Tree View.
33
+ * This item is the first selected item (that is both visible and navigable), if any, or the first navigable item if no item is selected.
34
+ */
35
+ defaultFocusableItemId: defaultFocusableItemIdSelector,
36
+ /**
37
+ * Checks whether an item is the default focusable item.
38
+ */
39
+ isItemTheDefaultFocusableItem: (0, _store.createSelector)(defaultFocusableItemIdSelector, (defaultFocusableItemId, itemId) => defaultFocusableItemId === itemId),
40
+ /**
41
+ * Gets the id of the item that is currently focused.
42
+ */
43
+ focusedItemId: (0, _store.createSelector)(state => state.focus.focusedItemId),
44
+ /**
45
+ * Checks whether an item is focused.
46
+ */
47
+ isItemFocused: (0, _store.createSelector)((state, itemId) => state.focus.focusedItemId === itemId)
48
+ };
@@ -1,3 +1,4 @@
1
1
  export { useTreeViewItems } from "./useTreeViewItems.js";
2
2
  export type { UseTreeViewItemsSignature, UseTreeViewItemsParameters, UseTreeViewItemsParametersWithDefaults, UseTreeViewItemsState } from "./useTreeViewItems.types.js";
3
- export { buildSiblingIndexes, TREE_VIEW_ROOT_PARENT_ID } from "./useTreeViewItems.utils.js";
3
+ export { buildSiblingIndexes, TREE_VIEW_ROOT_PARENT_ID } from "./useTreeViewItems.utils.js";
4
+ export { itemsSelectors } from "./useTreeViewItems.selectors.js";
@@ -15,6 +15,12 @@ Object.defineProperty(exports, "buildSiblingIndexes", {
15
15
  return _useTreeViewItems2.buildSiblingIndexes;
16
16
  }
17
17
  });
18
+ Object.defineProperty(exports, "itemsSelectors", {
19
+ enumerable: true,
20
+ get: function () {
21
+ return _useTreeViewItems3.itemsSelectors;
22
+ }
23
+ });
18
24
  Object.defineProperty(exports, "useTreeViewItems", {
19
25
  enumerable: true,
20
26
  get: function () {
@@ -22,4 +28,5 @@ Object.defineProperty(exports, "useTreeViewItems", {
22
28
  }
23
29
  });
24
30
  var _useTreeViewItems = require("./useTreeViewItems");
25
- var _useTreeViewItems2 = require("./useTreeViewItems.utils");
31
+ var _useTreeViewItems2 = require("./useTreeViewItems.utils");
32
+ var _useTreeViewItems3 = require("./useTreeViewItems.selectors");
@@ -14,7 +14,7 @@ var _publishTreeViewEvent = require("../../utils/publishTreeViewEvent");
14
14
  var _useTreeViewItems = require("./useTreeViewItems.utils");
15
15
  var _TreeViewItemDepthContext = require("../../TreeViewItemDepthContext");
16
16
  var _useTreeViewItems2 = require("./useTreeViewItems.selectors");
17
- var _useTreeViewId = require("../../corePlugins/useTreeViewId/useTreeViewId.selectors");
17
+ var _useTreeViewId = require("../../corePlugins/useTreeViewId");
18
18
  var _useTreeViewId2 = require("../../corePlugins/useTreeViewId/useTreeViewId.utils");
19
19
  var _jsxRuntime = require("react/jsx-runtime");
20
20
  const checkId = (id, item, itemMetaLookup) => {
@@ -89,65 +89,58 @@ const useTreeViewItems = ({
89
89
  params,
90
90
  store
91
91
  }) => {
92
- const getItem = React.useCallback(itemId => (0, _useTreeViewItems2.selectorItemModel)(store.value, itemId), [store]);
92
+ const getItem = React.useCallback(itemId => _useTreeViewItems2.itemsSelectors.itemModel(store.state, itemId), [store]);
93
93
  const getParentId = React.useCallback(itemId => {
94
- const itemMeta = (0, _useTreeViewItems2.selectorItemMeta)(store.value, itemId);
94
+ const itemMeta = _useTreeViewItems2.itemsSelectors.itemMeta(store.state, itemId);
95
95
  return itemMeta?.parentId || null;
96
96
  }, [store]);
97
97
  const setTreeViewLoading = (0, _useEventCallback.default)(isLoading => {
98
- store.update(prevState => (0, _extends2.default)({}, prevState, {
99
- items: (0, _extends2.default)({}, prevState.items, {
100
- loading: isLoading
101
- })
98
+ store.set('items', (0, _extends2.default)({}, store.state.items, {
99
+ loading: isLoading
102
100
  }));
103
101
  });
104
102
  const setTreeViewError = (0, _useEventCallback.default)(error => {
105
- store.update(prevState => (0, _extends2.default)({}, prevState, {
106
- items: (0, _extends2.default)({}, prevState.items, {
107
- error
108
- })
103
+ store.set('items', (0, _extends2.default)({}, store.state.items, {
104
+ error
109
105
  }));
110
106
  });
111
107
  const setIsItemDisabled = (0, _useEventCallback.default)(({
112
108
  itemId,
113
109
  shouldBeDisabled
114
110
  }) => {
115
- store.update(prevState => {
116
- if (!prevState.items.itemMetaLookup[itemId]) {
117
- return prevState;
118
- }
119
- const itemMetaLookup = (0, _extends2.default)({}, prevState.items.itemMetaLookup);
120
- itemMetaLookup[itemId] = (0, _extends2.default)({}, itemMetaLookup[itemId], {
121
- disabled: shouldBeDisabled ?? !itemMetaLookup[itemId].disabled
122
- });
123
- return (0, _extends2.default)({}, prevState, {
124
- items: (0, _extends2.default)({}, prevState.items, {
125
- itemMetaLookup
126
- })
127
- });
111
+ if (!store.state.items.itemMetaLookup[itemId]) {
112
+ return;
113
+ }
114
+ const itemMetaLookup = (0, _extends2.default)({}, store.state.items.itemMetaLookup);
115
+ itemMetaLookup[itemId] = (0, _extends2.default)({}, itemMetaLookup[itemId], {
116
+ disabled: shouldBeDisabled ?? !itemMetaLookup[itemId].disabled
128
117
  });
118
+ store.set('items', (0, _extends2.default)({}, store.state.items, {
119
+ itemMetaLookup
120
+ }));
129
121
  });
130
122
  const getItemTree = React.useCallback(() => {
131
123
  const getItemFromItemId = itemId => {
132
- const item = (0, _useTreeViewItems2.selectorItemModel)(store.value, itemId);
133
- const newChildren = (0, _useTreeViewItems2.selectorItemOrderedChildrenIds)(store.value, itemId);
124
+ const item = _useTreeViewItems2.itemsSelectors.itemModel(store.state, itemId);
125
+ const itemToMutate = (0, _extends2.default)({}, item);
126
+ const newChildren = _useTreeViewItems2.itemsSelectors.itemOrderedChildrenIds(store.state, itemId);
134
127
  if (newChildren.length > 0) {
135
- item.children = newChildren.map(getItemFromItemId);
128
+ itemToMutate.children = newChildren.map(getItemFromItemId);
136
129
  } else {
137
- delete item.children;
130
+ delete itemToMutate.children;
138
131
  }
139
- return item;
132
+ return itemToMutate;
140
133
  };
141
- return (0, _useTreeViewItems2.selectorItemOrderedChildrenIds)(store.value, null).map(getItemFromItemId);
134
+ return _useTreeViewItems2.itemsSelectors.itemOrderedChildrenIds(store.state, null).map(getItemFromItemId);
142
135
  }, [store]);
143
- const getItemOrderedChildrenIds = React.useCallback(itemId => (0, _useTreeViewItems2.selectorItemOrderedChildrenIds)(store.value, itemId), [store]);
136
+ const getItemOrderedChildrenIds = React.useCallback(itemId => _useTreeViewItems2.itemsSelectors.itemOrderedChildrenIds(store.state, itemId), [store]);
144
137
  const getItemDOMElement = itemId => {
145
- const itemMeta = (0, _useTreeViewItems2.selectorItemMeta)(store.value, itemId);
138
+ const itemMeta = _useTreeViewItems2.itemsSelectors.itemMeta(store.state, itemId);
146
139
  if (itemMeta == null) {
147
140
  return null;
148
141
  }
149
142
  const idAttribute = (0, _useTreeViewId2.generateTreeItemIdAttribute)({
150
- treeId: (0, _useTreeViewId.selectorTreeViewId)(store.value),
143
+ treeId: _useTreeViewId.idSelectors.treeId(store.state),
151
144
  itemId,
152
145
  id: itemMeta.idAttribute
153
146
  });
@@ -177,49 +170,42 @@ const useTreeViewItems = ({
177
170
  initialParentId: parentId,
178
171
  ignoreChildren: true
179
172
  });
180
- store.update(prevState => {
181
- let newItems;
182
- if (parentId) {
183
- newItems = {
184
- itemModelLookup: (0, _extends2.default)({}, prevState.items.itemModelLookup, newState.itemModelLookup),
185
- itemMetaLookup: (0, _extends2.default)({}, prevState.items.itemMetaLookup, newState.itemMetaLookup),
186
- itemOrderedChildrenIdsLookup: (0, _extends2.default)({}, newState.itemOrderedChildrenIdsLookup, prevState.items.itemOrderedChildrenIdsLookup),
187
- itemChildrenIndexesLookup: (0, _extends2.default)({}, newState.itemChildrenIndexesLookup, prevState.items.itemChildrenIndexesLookup)
188
- };
189
- } else {
190
- newItems = {
191
- itemModelLookup: newState.itemModelLookup,
192
- itemMetaLookup: newState.itemMetaLookup,
193
- itemOrderedChildrenIdsLookup: newState.itemOrderedChildrenIdsLookup,
194
- itemChildrenIndexesLookup: newState.itemChildrenIndexesLookup
195
- };
173
+ let newItems;
174
+ if (parentId) {
175
+ newItems = {
176
+ itemModelLookup: (0, _extends2.default)({}, store.state.items.itemModelLookup, newState.itemModelLookup),
177
+ itemMetaLookup: (0, _extends2.default)({}, store.state.items.itemMetaLookup, newState.itemMetaLookup),
178
+ itemOrderedChildrenIdsLookup: (0, _extends2.default)({}, newState.itemOrderedChildrenIdsLookup, store.state.items.itemOrderedChildrenIdsLookup),
179
+ itemChildrenIndexesLookup: (0, _extends2.default)({}, newState.itemChildrenIndexesLookup, store.state.items.itemChildrenIndexesLookup)
180
+ };
181
+ } else {
182
+ newItems = {
183
+ itemModelLookup: newState.itemModelLookup,
184
+ itemMetaLookup: newState.itemMetaLookup,
185
+ itemOrderedChildrenIdsLookup: newState.itemOrderedChildrenIdsLookup,
186
+ itemChildrenIndexesLookup: newState.itemChildrenIndexesLookup
187
+ };
188
+ }
189
+ Object.values(store.state.items.itemMetaLookup).forEach(item => {
190
+ if (!newItems.itemMetaLookup[item.id]) {
191
+ (0, _publishTreeViewEvent.publishTreeViewEvent)(instance, 'removeItem', {
192
+ id: item.id
193
+ });
196
194
  }
197
- Object.values(prevState.items.itemMetaLookup).forEach(item => {
198
- if (!newItems.itemMetaLookup[item.id]) {
199
- (0, _publishTreeViewEvent.publishTreeViewEvent)(instance, 'removeItem', {
200
- id: item.id
201
- });
202
- }
203
- });
204
- return (0, _extends2.default)({}, prevState, {
205
- items: (0, _extends2.default)({}, prevState.items, newItems)
206
- });
207
195
  });
196
+ store.set('items', (0, _extends2.default)({}, store.state.items, newItems));
208
197
  }
209
198
  };
210
199
  const removeChildren = parentId => {
211
- store.update(prevState => {
212
- if (!parentId) {
213
- return (0, _extends2.default)({}, prevState, {
214
- items: (0, _extends2.default)({}, prevState.items, {
215
- itemMetaLookup: {},
216
- itemOrderedChildrenIdsLookup: {},
217
- itemChildrenIndexesLookup: {}
218
- })
219
- });
220
- }
221
- const newMetaMap = Object.keys(prevState.items.itemMetaLookup).reduce((acc, key) => {
222
- const item = prevState.items.itemMetaLookup[key];
200
+ if (parentId == null) {
201
+ store.set('items', (0, _extends2.default)({}, store.state.items, {
202
+ itemMetaLookup: {},
203
+ itemOrderedChildrenIdsLookup: {},
204
+ itemChildrenIndexesLookup: {}
205
+ }));
206
+ } else {
207
+ const newMetaMap = Object.keys(store.state.items.itemMetaLookup).reduce((acc, key) => {
208
+ const item = store.state.items.itemMetaLookup[key];
223
209
  if (item.parentId === parentId) {
224
210
  (0, _publishTreeViewEvent.publishTreeViewEvent)(instance, 'removeItem', {
225
211
  id: item.id
@@ -230,43 +216,37 @@ const useTreeViewItems = ({
230
216
  [item.id]: item
231
217
  });
232
218
  }, {});
233
- const newItemOrderedChildrenIdsLookup = prevState.items.itemOrderedChildrenIdsLookup;
234
- const newItemChildrenIndexesLookup = prevState.items.itemChildrenIndexesLookup;
219
+ const newItemOrderedChildrenIdsLookup = (0, _extends2.default)({}, store.state.items.itemOrderedChildrenIdsLookup);
220
+ const newItemChildrenIndexesLookup = (0, _extends2.default)({}, store.state.items.itemChildrenIndexesLookup);
235
221
  delete newItemChildrenIndexesLookup[parentId];
236
222
  delete newItemOrderedChildrenIdsLookup[parentId];
237
- return (0, _extends2.default)({}, prevState, {
238
- items: (0, _extends2.default)({}, prevState.items, {
239
- itemMetaLookup: newMetaMap,
240
- itemOrderedChildrenIdsLookup: newItemOrderedChildrenIdsLookup,
241
- itemChildrenIndexesLookup: newItemChildrenIndexesLookup
242
- })
243
- });
244
- });
223
+ store.set('items', (0, _extends2.default)({}, store.state.items, {
224
+ itemMetaLookup: newMetaMap,
225
+ itemOrderedChildrenIdsLookup: newItemOrderedChildrenIdsLookup,
226
+ itemChildrenIndexesLookup: newItemChildrenIndexesLookup
227
+ }));
228
+ }
245
229
  };
246
230
  React.useEffect(() => {
247
231
  if (instance.areItemUpdatesPrevented()) {
248
232
  return;
249
233
  }
250
- store.update(prevState => {
251
- const newState = processItemsLookups({
252
- disabledItemsFocusable: params.disabledItemsFocusable,
253
- items: params.items,
254
- isItemDisabled: params.isItemDisabled,
255
- getItemId: params.getItemId,
256
- getItemLabel: params.getItemLabel,
257
- getItemChildren: params.getItemChildren
258
- });
259
- Object.values(prevState.items.itemMetaLookup).forEach(item => {
260
- if (!newState.itemMetaLookup[item.id]) {
261
- (0, _publishTreeViewEvent.publishTreeViewEvent)(instance, 'removeItem', {
262
- id: item.id
263
- });
264
- }
265
- });
266
- return (0, _extends2.default)({}, prevState, {
267
- items: (0, _extends2.default)({}, prevState.items, newState)
268
- });
234
+ const newState = processItemsLookups({
235
+ disabledItemsFocusable: params.disabledItemsFocusable,
236
+ items: params.items,
237
+ isItemDisabled: params.isItemDisabled,
238
+ getItemId: params.getItemId,
239
+ getItemLabel: params.getItemLabel,
240
+ getItemChildren: params.getItemChildren
241
+ });
242
+ Object.values(store.state.items.itemMetaLookup).forEach(item => {
243
+ if (!newState.itemMetaLookup[item.id]) {
244
+ (0, _publishTreeViewEvent.publishTreeViewEvent)(instance, 'removeItem', {
245
+ id: item.id
246
+ });
247
+ }
269
248
  });
249
+ store.set('items', (0, _extends2.default)({}, store.state.items, newState));
270
250
  }, [instance, store, params.items, params.disabledItemsFocusable, params.isItemDisabled, params.getItemId, params.getItemLabel, params.getItemChildren]);
271
251
 
272
252
  // Wrap `props.onItemClick` with `useEventCallback` to prevent unneeded context updates.
@@ -325,7 +305,7 @@ useTreeViewItems.wrapRoot = ({
325
305
  children
326
306
  }) => {
327
307
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_TreeViewItemDepthContext.TreeViewItemDepthContext.Provider, {
328
- value: _useTreeViewItems2.selectorItemDepth,
308
+ value: _useTreeViewItems2.itemsSelectors.itemDepth,
329
309
  children: children
330
310
  });
331
311
  };