@mui/x-tree-view 8.10.2 → 8.11.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 (154) hide show
  1. package/CHANGELOG.md +214 -13
  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/TreeItem/TreeItem.types.d.ts +3 -1
  8. package/TreeItemProvider/TreeItemProvider.js +3 -3
  9. package/esm/RichTreeView/RichTreeView.js +16 -15
  10. package/esm/RichTreeView/RichTreeView.types.d.ts +3 -2
  11. package/esm/SimpleTreeView/SimpleTreeView.js +10 -9
  12. package/esm/SimpleTreeView/SimpleTreeView.types.d.ts +3 -2
  13. package/esm/TreeItem/TreeItem.d.ts +1 -1
  14. package/esm/TreeItem/TreeItem.types.d.ts +3 -1
  15. package/esm/TreeItemProvider/TreeItemProvider.js +3 -3
  16. package/esm/hooks/useTreeItemModel.js +3 -3
  17. package/esm/hooks/useTreeItemUtils/useTreeItemUtils.js +24 -25
  18. package/esm/index.js +1 -1
  19. package/esm/internals/TreeViewProvider/TreeViewChildrenItemProvider.js +2 -2
  20. package/esm/internals/TreeViewProvider/TreeViewProvider.types.d.ts +3 -3
  21. package/esm/internals/components/RichTreeViewItems.js +5 -5
  22. package/esm/internals/corePlugins/useTreeViewId/index.d.ts +2 -1
  23. package/esm/internals/corePlugins/useTreeViewId/index.js +2 -1
  24. package/esm/internals/corePlugins/useTreeViewId/useTreeViewId.js +10 -13
  25. package/esm/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.d.ts +8 -34
  26. package/esm/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.js +9 -9
  27. package/esm/internals/index.d.ts +6 -14
  28. package/esm/internals/index.js +6 -13
  29. package/esm/internals/models/plugin.d.ts +2 -3
  30. package/esm/internals/models/treeView.d.ts +4 -6
  31. package/esm/internals/plugins/useTreeViewExpansion/index.d.ts +2 -1
  32. package/esm/internals/plugins/useTreeViewExpansion/index.js +2 -1
  33. package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +26 -30
  34. package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.d.ts +24 -316
  35. package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.js +27 -38
  36. package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +7 -1
  37. package/esm/internals/plugins/useTreeViewFocus/index.d.ts +2 -1
  38. package/esm/internals/plugins/useTreeViewFocus/index.js +2 -1
  39. package/esm/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +17 -21
  40. package/esm/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.d.ts +20 -628
  41. package/esm/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.js +25 -37
  42. package/esm/internals/plugins/useTreeViewItems/index.d.ts +2 -1
  43. package/esm/internals/plugins/useTreeViewItems/index.js +2 -1
  44. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.js +78 -99
  45. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.d.ts +52 -1142
  46. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +58 -98
  47. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.utils.d.ts +1 -1
  48. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.utils.js +1 -1
  49. package/esm/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +32 -42
  50. package/esm/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +22 -22
  51. package/esm/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +2 -0
  52. package/esm/internals/plugins/useTreeViewLabel/index.d.ts +2 -1
  53. package/esm/internals/plugins/useTreeViewLabel/index.js +2 -1
  54. package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.itemPlugin.js +4 -4
  55. package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +17 -25
  56. package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.d.ts +14 -100
  57. package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.js +24 -34
  58. package/esm/internals/plugins/useTreeViewLazyLoading/index.d.ts +2 -1
  59. package/esm/internals/plugins/useTreeViewLazyLoading/index.js +1 -1
  60. package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.d.ts +18 -245
  61. package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.js +15 -27
  62. package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.d.ts +20 -6
  63. package/esm/internals/plugins/useTreeViewSelection/index.d.ts +2 -1
  64. package/esm/internals/plugins/useTreeViewSelection/index.js +2 -1
  65. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +25 -38
  66. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +30 -34
  67. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.d.ts +38 -517
  68. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.js +46 -71
  69. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +1 -0
  70. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +10 -10
  71. package/esm/internals/useTreeView/useTreeView.d.ts +1 -1
  72. package/esm/internals/useTreeView/useTreeView.js +11 -18
  73. package/esm/internals/useTreeView/useTreeView.types.d.ts +1 -1
  74. package/esm/internals/useTreeView/useTreeViewBuildContext.d.ts +2 -3
  75. package/esm/internals/utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking.js +0 -2
  76. package/esm/internals/utils/tree.js +33 -33
  77. package/esm/useTreeItem/useTreeItem.js +14 -14
  78. package/esm/useTreeItem/useTreeItem.types.d.ts +2 -1
  79. package/hooks/useTreeItemModel.js +3 -3
  80. package/hooks/useTreeItemUtils/useTreeItemUtils.js +18 -19
  81. package/index.js +1 -1
  82. package/internals/TreeViewProvider/TreeViewChildrenItemProvider.js +1 -1
  83. package/internals/TreeViewProvider/TreeViewProvider.types.d.ts +3 -3
  84. package/internals/components/RichTreeViewItems.js +5 -5
  85. package/internals/corePlugins/useTreeViewId/index.d.ts +2 -1
  86. package/internals/corePlugins/useTreeViewId/index.js +8 -1
  87. package/internals/corePlugins/useTreeViewId/useTreeViewId.js +9 -12
  88. package/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.d.ts +8 -34
  89. package/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.js +10 -10
  90. package/internals/index.d.ts +6 -14
  91. package/internals/index.js +12 -73
  92. package/internals/models/plugin.d.ts +2 -3
  93. package/internals/models/treeView.d.ts +4 -6
  94. package/internals/plugins/useTreeViewExpansion/index.d.ts +2 -1
  95. package/internals/plugins/useTreeViewExpansion/index.js +8 -1
  96. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +24 -28
  97. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.d.ts +24 -316
  98. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.js +27 -38
  99. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +7 -1
  100. package/internals/plugins/useTreeViewFocus/index.d.ts +2 -1
  101. package/internals/plugins/useTreeViewFocus/index.js +8 -1
  102. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +14 -18
  103. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.d.ts +20 -628
  104. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.js +23 -35
  105. package/internals/plugins/useTreeViewItems/index.d.ts +2 -1
  106. package/internals/plugins/useTreeViewItems/index.js +8 -1
  107. package/internals/plugins/useTreeViewItems/useTreeViewItems.js +77 -98
  108. package/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.d.ts +52 -1142
  109. package/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +59 -99
  110. package/internals/plugins/useTreeViewItems/useTreeViewItems.utils.d.ts +1 -1
  111. package/internals/plugins/useTreeViewItems/useTreeViewItems.utils.js +1 -1
  112. package/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +32 -42
  113. package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +18 -18
  114. package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +2 -0
  115. package/internals/plugins/useTreeViewLabel/index.d.ts +2 -1
  116. package/internals/plugins/useTreeViewLabel/index.js +8 -1
  117. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.itemPlugin.js +3 -3
  118. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +16 -24
  119. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.d.ts +14 -100
  120. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.js +24 -34
  121. package/internals/plugins/useTreeViewLazyLoading/index.d.ts +2 -1
  122. package/internals/plugins/useTreeViewLazyLoading/index.js +8 -1
  123. package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.d.ts +18 -245
  124. package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.js +16 -28
  125. package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.d.ts +20 -6
  126. package/internals/plugins/useTreeViewSelection/index.d.ts +2 -1
  127. package/internals/plugins/useTreeViewSelection/index.js +8 -1
  128. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +23 -37
  129. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +29 -33
  130. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.d.ts +38 -517
  131. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.js +46 -71
  132. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +1 -0
  133. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +8 -8
  134. package/internals/useTreeView/useTreeView.d.ts +1 -1
  135. package/internals/useTreeView/useTreeView.js +11 -18
  136. package/internals/useTreeView/useTreeView.types.d.ts +1 -1
  137. package/internals/useTreeView/useTreeViewBuildContext.d.ts +2 -3
  138. package/internals/utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking.js +0 -2
  139. package/internals/utils/tree.js +31 -31
  140. package/package.json +12 -13
  141. package/useTreeItem/useTreeItem.js +14 -14
  142. package/useTreeItem/useTreeItem.types.d.ts +2 -1
  143. package/esm/internals/hooks/useSelector.d.ts +0 -4
  144. package/esm/internals/hooks/useSelector.js +0 -8
  145. package/esm/internals/utils/TreeViewStore.d.ts +0 -12
  146. package/esm/internals/utils/TreeViewStore.js +0 -22
  147. package/esm/internals/utils/selectors.d.ts +0 -21
  148. package/esm/internals/utils/selectors.js +0 -51
  149. package/internals/hooks/useSelector.d.ts +0 -4
  150. package/internals/hooks/useSelector.js +0 -16
  151. package/internals/utils/TreeViewStore.d.ts +0 -12
  152. package/internals/utils/TreeViewStore.js +0 -29
  153. package/internals/utils/selectors.d.ts +0 -21
  154. 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,48 +89,40 @@ 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 newChildren = _useTreeViewItems2.itemsSelectors.itemOrderedChildrenIds(store.state, itemId);
134
126
  if (newChildren.length > 0) {
135
127
  item.children = newChildren.map(getItemFromItemId);
136
128
  } else {
@@ -138,16 +130,16 @@ const useTreeViewItems = ({
138
130
  }
139
131
  return item;
140
132
  };
141
- return (0, _useTreeViewItems2.selectorItemOrderedChildrenIds)(store.value, null).map(getItemFromItemId);
133
+ return _useTreeViewItems2.itemsSelectors.itemOrderedChildrenIds(store.state, null).map(getItemFromItemId);
142
134
  }, [store]);
143
- const getItemOrderedChildrenIds = React.useCallback(itemId => (0, _useTreeViewItems2.selectorItemOrderedChildrenIds)(store.value, itemId), [store]);
135
+ const getItemOrderedChildrenIds = React.useCallback(itemId => _useTreeViewItems2.itemsSelectors.itemOrderedChildrenIds(store.state, itemId), [store]);
144
136
  const getItemDOMElement = itemId => {
145
- const itemMeta = (0, _useTreeViewItems2.selectorItemMeta)(store.value, itemId);
137
+ const itemMeta = _useTreeViewItems2.itemsSelectors.itemMeta(store.state, itemId);
146
138
  if (itemMeta == null) {
147
139
  return null;
148
140
  }
149
141
  const idAttribute = (0, _useTreeViewId2.generateTreeItemIdAttribute)({
150
- treeId: (0, _useTreeViewId.selectorTreeViewId)(store.value),
142
+ treeId: _useTreeViewId.idSelectors.treeId(store.state),
151
143
  itemId,
152
144
  id: itemMeta.idAttribute
153
145
  });
@@ -177,49 +169,42 @@ const useTreeViewItems = ({
177
169
  initialParentId: parentId,
178
170
  ignoreChildren: true
179
171
  });
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
- };
172
+ let newItems;
173
+ if (parentId) {
174
+ newItems = {
175
+ itemModelLookup: (0, _extends2.default)({}, store.state.items.itemModelLookup, newState.itemModelLookup),
176
+ itemMetaLookup: (0, _extends2.default)({}, store.state.items.itemMetaLookup, newState.itemMetaLookup),
177
+ itemOrderedChildrenIdsLookup: (0, _extends2.default)({}, newState.itemOrderedChildrenIdsLookup, store.state.items.itemOrderedChildrenIdsLookup),
178
+ itemChildrenIndexesLookup: (0, _extends2.default)({}, newState.itemChildrenIndexesLookup, store.state.items.itemChildrenIndexesLookup)
179
+ };
180
+ } else {
181
+ newItems = {
182
+ itemModelLookup: newState.itemModelLookup,
183
+ itemMetaLookup: newState.itemMetaLookup,
184
+ itemOrderedChildrenIdsLookup: newState.itemOrderedChildrenIdsLookup,
185
+ itemChildrenIndexesLookup: newState.itemChildrenIndexesLookup
186
+ };
187
+ }
188
+ Object.values(store.state.items.itemMetaLookup).forEach(item => {
189
+ if (!newItems.itemMetaLookup[item.id]) {
190
+ (0, _publishTreeViewEvent.publishTreeViewEvent)(instance, 'removeItem', {
191
+ id: item.id
192
+ });
196
193
  }
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
194
  });
195
+ store.set('items', (0, _extends2.default)({}, store.state.items, newItems));
208
196
  }
209
197
  };
210
198
  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];
199
+ if (parentId == null) {
200
+ store.set('items', (0, _extends2.default)({}, store.state.items, {
201
+ itemMetaLookup: {},
202
+ itemOrderedChildrenIdsLookup: {},
203
+ itemChildrenIndexesLookup: {}
204
+ }));
205
+ } else {
206
+ const newMetaMap = Object.keys(store.state.items.itemMetaLookup).reduce((acc, key) => {
207
+ const item = store.state.items.itemMetaLookup[key];
223
208
  if (item.parentId === parentId) {
224
209
  (0, _publishTreeViewEvent.publishTreeViewEvent)(instance, 'removeItem', {
225
210
  id: item.id
@@ -230,43 +215,37 @@ const useTreeViewItems = ({
230
215
  [item.id]: item
231
216
  });
232
217
  }, {});
233
- const newItemOrderedChildrenIdsLookup = prevState.items.itemOrderedChildrenIdsLookup;
234
- const newItemChildrenIndexesLookup = prevState.items.itemChildrenIndexesLookup;
218
+ const newItemOrderedChildrenIdsLookup = (0, _extends2.default)({}, store.state.items.itemOrderedChildrenIdsLookup);
219
+ const newItemChildrenIndexesLookup = (0, _extends2.default)({}, store.state.items.itemChildrenIndexesLookup);
235
220
  delete newItemChildrenIndexesLookup[parentId];
236
221
  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
- });
222
+ store.set('items', (0, _extends2.default)({}, store.state.items, {
223
+ itemMetaLookup: newMetaMap,
224
+ itemOrderedChildrenIdsLookup: newItemOrderedChildrenIdsLookup,
225
+ itemChildrenIndexesLookup: newItemChildrenIndexesLookup
226
+ }));
227
+ }
245
228
  };
246
229
  React.useEffect(() => {
247
230
  if (instance.areItemUpdatesPrevented()) {
248
231
  return;
249
232
  }
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
- });
233
+ const newState = processItemsLookups({
234
+ disabledItemsFocusable: params.disabledItemsFocusable,
235
+ items: params.items,
236
+ isItemDisabled: params.isItemDisabled,
237
+ getItemId: params.getItemId,
238
+ getItemLabel: params.getItemLabel,
239
+ getItemChildren: params.getItemChildren
240
+ });
241
+ Object.values(store.state.items.itemMetaLookup).forEach(item => {
242
+ if (!newState.itemMetaLookup[item.id]) {
243
+ (0, _publishTreeViewEvent.publishTreeViewEvent)(instance, 'removeItem', {
244
+ id: item.id
245
+ });
246
+ }
269
247
  });
248
+ store.set('items', (0, _extends2.default)({}, store.state.items, newState));
270
249
  }, [instance, store, params.items, params.disabledItemsFocusable, params.isItemDisabled, params.getItemId, params.getItemLabel, params.getItemChildren]);
271
250
 
272
251
  // Wrap `props.onItemClick` with `useEventCallback` to prevent unneeded context updates.
@@ -325,7 +304,7 @@ useTreeViewItems.wrapRoot = ({
325
304
  children
326
305
  }) => {
327
306
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_TreeViewItemDepthContext.TreeViewItemDepthContext.Provider, {
328
- value: _useTreeViewItems2.selectorItemDepth,
307
+ value: _useTreeViewItems2.itemsSelectors.itemDepth,
329
308
  children: children
330
309
  });
331
310
  };