@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.
- package/CHANGELOG.md +169 -0
- 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/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/TreeItemProvider/TreeItemProvider.js +3 -3
- package/esm/hooks/index.d.ts +2 -1
- package/esm/hooks/index.js +2 -1
- package/esm/hooks/useApplyPropagationToSelectedItemsOnMount.d.ts +53 -0
- package/esm/hooks/useApplyPropagationToSelectedItemsOnMount.js +80 -0
- 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 +82 -102
- 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/tree.js +33 -33
- package/esm/useTreeItem/useTreeItem.js +14 -14
- package/esm/useTreeItem/useTreeItem.types.d.ts +2 -1
- package/hooks/index.d.ts +2 -1
- package/hooks/index.js +8 -1
- package/hooks/useApplyPropagationToSelectedItemsOnMount.d.ts +53 -0
- package/hooks/useApplyPropagationToSelectedItemsOnMount.js +87 -0
- 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 +81 -101
- 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/tree.js +31 -31
- package/package.json +13 -14
- 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,65 +89,58 @@ 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
|
|
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
|
-
|
|
128
|
+
itemToMutate.children = newChildren.map(getItemFromItemId);
|
|
136
129
|
} else {
|
|
137
|
-
delete
|
|
130
|
+
delete itemToMutate.children;
|
|
138
131
|
}
|
|
139
|
-
return
|
|
132
|
+
return itemToMutate;
|
|
140
133
|
};
|
|
141
|
-
return
|
|
134
|
+
return _useTreeViewItems2.itemsSelectors.itemOrderedChildrenIds(store.state, null).map(getItemFromItemId);
|
|
142
135
|
}, [store]);
|
|
143
|
-
const getItemOrderedChildrenIds = React.useCallback(itemId =>
|
|
136
|
+
const getItemOrderedChildrenIds = React.useCallback(itemId => _useTreeViewItems2.itemsSelectors.itemOrderedChildrenIds(store.state, itemId), [store]);
|
|
144
137
|
const getItemDOMElement = itemId => {
|
|
145
|
-
const itemMeta =
|
|
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:
|
|
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
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
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
|
-
|
|
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];
|
|
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 =
|
|
234
|
-
const newItemChildrenIndexesLookup =
|
|
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
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
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
|
-
|
|
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
|
-
});
|
|
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.
|
|
308
|
+
value: _useTreeViewItems2.itemsSelectors.itemDepth,
|
|
329
309
|
children: children
|
|
330
310
|
});
|
|
331
311
|
};
|