@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.
- package/CHANGELOG.md +214 -13
- package/RichTreeView/RichTreeView.js +16 -15
- package/RichTreeView/RichTreeView.types.d.ts +3 -2
- package/SimpleTreeView/SimpleTreeView.js +10 -9
- package/SimpleTreeView/SimpleTreeView.types.d.ts +3 -2
- package/TreeItem/TreeItem.d.ts +1 -1
- package/TreeItem/TreeItem.types.d.ts +3 -1
- package/TreeItemProvider/TreeItemProvider.js +3 -3
- package/esm/RichTreeView/RichTreeView.js +16 -15
- package/esm/RichTreeView/RichTreeView.types.d.ts +3 -2
- package/esm/SimpleTreeView/SimpleTreeView.js +10 -9
- package/esm/SimpleTreeView/SimpleTreeView.types.d.ts +3 -2
- package/esm/TreeItem/TreeItem.d.ts +1 -1
- package/esm/TreeItem/TreeItem.types.d.ts +3 -1
- package/esm/TreeItemProvider/TreeItemProvider.js +3 -3
- package/esm/hooks/useTreeItemModel.js +3 -3
- package/esm/hooks/useTreeItemUtils/useTreeItemUtils.js +24 -25
- package/esm/index.js +1 -1
- package/esm/internals/TreeViewProvider/TreeViewChildrenItemProvider.js +2 -2
- package/esm/internals/TreeViewProvider/TreeViewProvider.types.d.ts +3 -3
- package/esm/internals/components/RichTreeViewItems.js +5 -5
- package/esm/internals/corePlugins/useTreeViewId/index.d.ts +2 -1
- package/esm/internals/corePlugins/useTreeViewId/index.js +2 -1
- package/esm/internals/corePlugins/useTreeViewId/useTreeViewId.js +10 -13
- package/esm/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.d.ts +8 -34
- package/esm/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.js +9 -9
- package/esm/internals/index.d.ts +6 -14
- package/esm/internals/index.js +6 -13
- package/esm/internals/models/plugin.d.ts +2 -3
- package/esm/internals/models/treeView.d.ts +4 -6
- package/esm/internals/plugins/useTreeViewExpansion/index.d.ts +2 -1
- package/esm/internals/plugins/useTreeViewExpansion/index.js +2 -1
- package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +26 -30
- package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.d.ts +24 -316
- package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.js +27 -38
- package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +7 -1
- package/esm/internals/plugins/useTreeViewFocus/index.d.ts +2 -1
- package/esm/internals/plugins/useTreeViewFocus/index.js +2 -1
- package/esm/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +17 -21
- package/esm/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.d.ts +20 -628
- package/esm/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.js +25 -37
- package/esm/internals/plugins/useTreeViewItems/index.d.ts +2 -1
- package/esm/internals/plugins/useTreeViewItems/index.js +2 -1
- package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.js +78 -99
- package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.d.ts +52 -1142
- package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +58 -98
- package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.utils.d.ts +1 -1
- package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.utils.js +1 -1
- package/esm/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +32 -42
- package/esm/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +22 -22
- package/esm/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +2 -0
- package/esm/internals/plugins/useTreeViewLabel/index.d.ts +2 -1
- package/esm/internals/plugins/useTreeViewLabel/index.js +2 -1
- package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.itemPlugin.js +4 -4
- package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +17 -25
- package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.d.ts +14 -100
- package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.js +24 -34
- package/esm/internals/plugins/useTreeViewLazyLoading/index.d.ts +2 -1
- package/esm/internals/plugins/useTreeViewLazyLoading/index.js +1 -1
- package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.d.ts +18 -245
- package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.js +15 -27
- package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.d.ts +20 -6
- package/esm/internals/plugins/useTreeViewSelection/index.d.ts +2 -1
- package/esm/internals/plugins/useTreeViewSelection/index.js +2 -1
- package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +25 -38
- package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +30 -34
- package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.d.ts +38 -517
- package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.js +46 -71
- package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +1 -0
- package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +10 -10
- package/esm/internals/useTreeView/useTreeView.d.ts +1 -1
- package/esm/internals/useTreeView/useTreeView.js +11 -18
- package/esm/internals/useTreeView/useTreeView.types.d.ts +1 -1
- package/esm/internals/useTreeView/useTreeViewBuildContext.d.ts +2 -3
- package/esm/internals/utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking.js +0 -2
- package/esm/internals/utils/tree.js +33 -33
- package/esm/useTreeItem/useTreeItem.js +14 -14
- package/esm/useTreeItem/useTreeItem.types.d.ts +2 -1
- package/hooks/useTreeItemModel.js +3 -3
- package/hooks/useTreeItemUtils/useTreeItemUtils.js +18 -19
- package/index.js +1 -1
- package/internals/TreeViewProvider/TreeViewChildrenItemProvider.js +1 -1
- package/internals/TreeViewProvider/TreeViewProvider.types.d.ts +3 -3
- package/internals/components/RichTreeViewItems.js +5 -5
- package/internals/corePlugins/useTreeViewId/index.d.ts +2 -1
- package/internals/corePlugins/useTreeViewId/index.js +8 -1
- package/internals/corePlugins/useTreeViewId/useTreeViewId.js +9 -12
- package/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.d.ts +8 -34
- package/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.js +10 -10
- package/internals/index.d.ts +6 -14
- package/internals/index.js +12 -73
- package/internals/models/plugin.d.ts +2 -3
- package/internals/models/treeView.d.ts +4 -6
- package/internals/plugins/useTreeViewExpansion/index.d.ts +2 -1
- package/internals/plugins/useTreeViewExpansion/index.js +8 -1
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +24 -28
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.d.ts +24 -316
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.js +27 -38
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +7 -1
- package/internals/plugins/useTreeViewFocus/index.d.ts +2 -1
- package/internals/plugins/useTreeViewFocus/index.js +8 -1
- package/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +14 -18
- package/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.d.ts +20 -628
- package/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.js +23 -35
- package/internals/plugins/useTreeViewItems/index.d.ts +2 -1
- package/internals/plugins/useTreeViewItems/index.js +8 -1
- package/internals/plugins/useTreeViewItems/useTreeViewItems.js +77 -98
- package/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.d.ts +52 -1142
- package/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +59 -99
- package/internals/plugins/useTreeViewItems/useTreeViewItems.utils.d.ts +1 -1
- package/internals/plugins/useTreeViewItems/useTreeViewItems.utils.js +1 -1
- package/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +32 -42
- package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +18 -18
- package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +2 -0
- package/internals/plugins/useTreeViewLabel/index.d.ts +2 -1
- package/internals/plugins/useTreeViewLabel/index.js +8 -1
- package/internals/plugins/useTreeViewLabel/useTreeViewLabel.itemPlugin.js +3 -3
- package/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +16 -24
- package/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.d.ts +14 -100
- package/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.js +24 -34
- package/internals/plugins/useTreeViewLazyLoading/index.d.ts +2 -1
- package/internals/plugins/useTreeViewLazyLoading/index.js +8 -1
- package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.d.ts +18 -245
- package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.js +16 -28
- package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.d.ts +20 -6
- package/internals/plugins/useTreeViewSelection/index.d.ts +2 -1
- package/internals/plugins/useTreeViewSelection/index.js +8 -1
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +23 -37
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +29 -33
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.d.ts +38 -517
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.js +46 -71
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +1 -0
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +8 -8
- package/internals/useTreeView/useTreeView.d.ts +1 -1
- package/internals/useTreeView/useTreeView.js +11 -18
- package/internals/useTreeView/useTreeView.types.d.ts +1 -1
- package/internals/useTreeView/useTreeViewBuildContext.d.ts +2 -3
- package/internals/utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking.js +0 -2
- package/internals/utils/tree.js +31 -31
- package/package.json +12 -13
- package/useTreeItem/useTreeItem.js +14 -14
- package/useTreeItem/useTreeItem.types.d.ts +2 -1
- package/esm/internals/hooks/useSelector.d.ts +0 -4
- package/esm/internals/hooks/useSelector.js +0 -8
- package/esm/internals/utils/TreeViewStore.d.ts +0 -12
- package/esm/internals/utils/TreeViewStore.js +0 -22
- package/esm/internals/utils/selectors.d.ts +0 -21
- package/esm/internals/utils/selectors.js +0 -51
- package/internals/hooks/useSelector.d.ts +0 -4
- package/internals/hooks/useSelector.js +0 -16
- package/internals/utils/TreeViewStore.d.ts +0 -12
- package/internals/utils/TreeViewStore.js +0 -29
- package/internals/utils/selectors.d.ts +0 -21
- 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.
|
|
7
|
-
var
|
|
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
|
|
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
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
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
|
|
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 =>
|
|
92
|
+
const getItem = React.useCallback(itemId => _useTreeViewItems2.itemsSelectors.itemModel(store.state, itemId), [store]);
|
|
93
93
|
const getParentId = React.useCallback(itemId => {
|
|
94
|
-
const itemMeta =
|
|
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.
|
|
99
|
-
|
|
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.
|
|
106
|
-
|
|
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.
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
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 =
|
|
133
|
-
const newChildren =
|
|
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
|
|
133
|
+
return _useTreeViewItems2.itemsSelectors.itemOrderedChildrenIds(store.state, null).map(getItemFromItemId);
|
|
142
134
|
}, [store]);
|
|
143
|
-
const getItemOrderedChildrenIds = React.useCallback(itemId =>
|
|
135
|
+
const getItemOrderedChildrenIds = React.useCallback(itemId => _useTreeViewItems2.itemsSelectors.itemOrderedChildrenIds(store.state, itemId), [store]);
|
|
144
136
|
const getItemDOMElement = itemId => {
|
|
145
|
-
const itemMeta =
|
|
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:
|
|
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
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
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
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
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 =
|
|
234
|
-
const newItemChildrenIndexesLookup =
|
|
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
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
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
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
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.
|
|
307
|
+
value: _useTreeViewItems2.itemsSelectors.itemDepth,
|
|
329
308
|
children: children
|
|
330
309
|
});
|
|
331
310
|
};
|