@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,104 +3,64 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.selectorItemParentId = exports.selectorItemOrderedChildrenIds = exports.selectorItemModel = exports.selectorItemMetaLookup = exports.selectorItemMeta = exports.selectorItemIndex = exports.selectorItemDepth = exports.selectorIsTreeViewLoading = exports.selectorIsItemDisabled = exports.selectorGetTreeViewError = exports.selectorDisabledItemFocusable = exports.selectorCanItemBeFocused = void 0;
7
- var _selectors = require("../../utils/selectors");
6
+ exports.itemsSelectors = void 0;
7
+ var _store = require("@mui/x-internals/store");
8
8
  var _useTreeViewItems = require("./useTreeViewItems.utils");
9
- const selectorTreeViewItemsState = state => state.items;
10
-
11
- /**
12
- * Get the loading state for the Tree View.
13
- * @param {TreeViewState<[UseTreeViewItemsSignature]>} state The state of the tree view.
14
- * @returns {boolean} The loading state for the Tree View.
15
- */
16
- const selectorIsTreeViewLoading = exports.selectorIsTreeViewLoading = (0, _selectors.createSelector)(selectorTreeViewItemsState, items => items.loading);
17
- /**
18
- * Get the error state for the Tree View.
19
- * @param {TreeViewState<[UseTreeViewItemsSignature]>} state The state of the tree view.
20
- * @returns {boolean} The error state for the Tree View.
21
- */
22
- const selectorGetTreeViewError = exports.selectorGetTreeViewError = (0, _selectors.createSelector)(selectorTreeViewItemsState, items => items.error);
23
-
24
- /**
25
- * Get the meta-information of all items.
26
- * @param {TreeViewState<[UseTreeViewItemsSignature]>} state The state of the tree view.
27
- * @returns {TreeViewItemMetaLookup} The meta-information of all items.
28
- */
29
- const selectorItemMetaLookup = exports.selectorItemMetaLookup = (0, _selectors.createSelector)(selectorTreeViewItemsState, items => items.itemMetaLookup);
30
9
  const EMPTY_CHILDREN = [];
31
-
32
- /**
33
- * Get the ordered children ids of a given item.
34
- * @param {TreeViewState<[UseTreeViewItemsSignature]>} state The state of the tree view.
35
- * @param {TreeViewItemId} itemId The id of the item to get the children of.
36
- * @returns {TreeViewItemId[]} The ordered children ids of the item.
37
- */
38
- const selectorItemOrderedChildrenIds = exports.selectorItemOrderedChildrenIds = (0, _selectors.createSelector)([selectorTreeViewItemsState, (_, itemId) => itemId], (itemsState, itemId) => itemsState.itemOrderedChildrenIdsLookup[itemId ?? _useTreeViewItems.TREE_VIEW_ROOT_PARENT_ID] ?? EMPTY_CHILDREN);
39
-
40
- /**
41
- * Get the model of an item.
42
- * @param {TreeViewState<[UseTreeViewItemsSignature]>} state The state of the tree view.
43
- * @param {TreeViewItemId} itemId The id of the item to get the model of.
44
- * @returns {R} The model of the item.
45
- */
46
- const selectorItemModel = exports.selectorItemModel = (0, _selectors.createSelector)([selectorTreeViewItemsState, (_, itemId) => itemId], (itemsState, itemId) => itemsState.itemModelLookup[itemId]);
47
-
48
- /**
49
- * Get the meta-information of an item.
50
- * Check the `TreeViewItemMeta` type for more information.
51
- * @param {TreeViewState<[UseTreeViewItemsSignature]>}
52
- * @param {TreeViewItemId} itemId The id of the item to get the meta-information of.
53
- * @returns {TreeViewItemMeta | null} The meta-information of the item.
54
- */
55
- const selectorItemMeta = exports.selectorItemMeta = (0, _selectors.createSelector)([selectorItemMetaLookup, (_, itemId) => itemId], (itemMetaLookup, itemId) => itemMetaLookup[itemId ?? _useTreeViewItems.TREE_VIEW_ROOT_PARENT_ID] ?? null);
56
-
57
- /**
58
- * Check if an item is disabled.
59
- * @param {TreeViewState<[UseTreeViewItemsSignature]>} state The state of the tree view.
60
- * @param {TreeViewItemId} itemId The id of the item to check.
61
- * @returns {boolean} `true` if the item is disabled, `false` otherwise.
62
- */
63
- const selectorIsItemDisabled = exports.selectorIsItemDisabled = (0, _selectors.createSelector)([selectorItemMetaLookup, (_, itemId) => itemId], _useTreeViewItems.isItemDisabled);
64
-
65
- /**
66
- * Get the index of an item in its parent's children.
67
- * @param {TreeViewState<[UseTreeViewItemsSignature]>} state The state of the tree view.
68
- * @param {TreeViewItemId} itemId The id of the item to get the index of.
69
- * @returns {number} The index of the item in its parent's children.
70
- */
71
- const selectorItemIndex = exports.selectorItemIndex = (0, _selectors.createSelector)([selectorTreeViewItemsState, selectorItemMeta], (itemsState, itemMeta) => {
72
- if (itemMeta == null) {
73
- return -1;
74
- }
75
- const parentIndexes = itemsState.itemChildrenIndexesLookup[itemMeta.parentId ?? _useTreeViewItems.TREE_VIEW_ROOT_PARENT_ID];
76
- return parentIndexes[itemMeta.id];
77
- });
78
-
79
- /**
80
- * Get the id of the parent of an item.
81
- * @param {TreeViewState<[UseTreeViewItemsSignature]>} state The state of the tree view.
82
- * @param {TreeViewItemId} itemId The id of the item to get the parent id of.
83
- * @returns {TreeViewItemId | null} The id of the parent of the item.
84
- */
85
- const selectorItemParentId = exports.selectorItemParentId = (0, _selectors.createSelector)([selectorItemMeta], itemMeta => itemMeta?.parentId ?? null);
86
-
87
- /**
88
- * Get the depth of an item (items at the root level have a depth of 0).
89
- * @param {TreeViewState<[UseTreeViewItemsSignature]>} state The state of the tree view.
90
- * @param {TreeViewItemId} itemId The id of the item to get the depth of.
91
- * @returns {number} The depth of the item.
92
- */
93
- const selectorItemDepth = exports.selectorItemDepth = (0, _selectors.createSelector)([selectorItemMeta], itemMeta => itemMeta?.depth ?? 0);
94
-
95
- /**
96
- * Check if the disabled items are focusable.
97
- * @param {TreeViewState<[UseTreeViewItemsSignature]>} state The state of the tree view.
98
- * @returns {boolean} Whether the disabled items are focusable.
99
- */
100
- const selectorDisabledItemFocusable = exports.selectorDisabledItemFocusable = (0, _selectors.createSelector)([selectorTreeViewItemsState], itemsState => itemsState.disabledItemsFocusable);
101
- const selectorCanItemBeFocused = exports.selectorCanItemBeFocused = (0, _selectors.createSelector)([selectorDisabledItemFocusable, selectorIsItemDisabled], (disabledItemsFocusable, isDisabled) => {
102
- if (disabledItemsFocusable) {
103
- return true;
104
- }
105
- return !isDisabled;
106
- });
10
+ const itemsSelectors = exports.itemsSelectors = {
11
+ /**
12
+ * Gets the loading state for the Tree View.
13
+ */
14
+ isLoading: (0, _store.createSelector)(state => state.items.loading),
15
+ /**
16
+ * Gets the error state for the Tree View.
17
+ */
18
+ error: (0, _store.createSelector)(state => state.items.error),
19
+ /**
20
+ * Checks whether the disabled items are focusable.
21
+ */
22
+ disabledItemFocusable: (0, _store.createSelector)(state => state.items.disabledItemsFocusable),
23
+ /**
24
+ * Gets the meta-information of all items.
25
+ */
26
+ itemMetaLookup: (0, _store.createSelector)(state => state.items.itemMetaLookup),
27
+ /**
28
+ * Gets the meta-information of an item.
29
+ */
30
+ itemMeta: (0, _store.createSelector)((state, itemId) => state.items.itemMetaLookup[itemId ?? _useTreeViewItems.TREE_VIEW_ROOT_PARENT_ID] ?? null),
31
+ /**
32
+ * Gets the ordered children ids of an item.
33
+ */
34
+ itemOrderedChildrenIds: (0, _store.createSelector)((state, itemId) => state.items.itemOrderedChildrenIdsLookup[itemId ?? _useTreeViewItems.TREE_VIEW_ROOT_PARENT_ID] ?? EMPTY_CHILDREN),
35
+ /**
36
+ * Gets the model of an item.
37
+ */
38
+ itemModel: (0, _store.createSelector)((state, itemId) => state.items.itemModelLookup[itemId]),
39
+ /**
40
+ * Checks whether an item is disabled.
41
+ */
42
+ isItemDisabled: (0, _store.createSelector)((state, itemId) => (0, _useTreeViewItems.isItemDisabled)(state.items.itemMetaLookup, itemId)),
43
+ /**
44
+ * Gets the index of an item in its parent's children.
45
+ */
46
+ itemIndex: (0, _store.createSelector)((state, itemId) => {
47
+ const itemMeta = state.items.itemMetaLookup[itemId];
48
+ if (itemMeta == null) {
49
+ return -1;
50
+ }
51
+ const parentIndexes = state.items.itemChildrenIndexesLookup[itemMeta.parentId ?? _useTreeViewItems.TREE_VIEW_ROOT_PARENT_ID];
52
+ return parentIndexes[itemMeta.id];
53
+ }),
54
+ /**
55
+ * Gets the id of an item's parent.
56
+ */
57
+ itemParentId: (0, _store.createSelector)((state, itemId) => state.items.itemMetaLookup[itemId]?.parentId ?? null),
58
+ /**
59
+ * Gets the depth of an item (items at the root level have a depth of 0).
60
+ */
61
+ itemDepth: (0, _store.createSelector)((state, itemId) => state.items.itemMetaLookup[itemId]?.depth ?? 0),
62
+ /**
63
+ * Checks whether an item can be focused.
64
+ */
65
+ canItemBeFocused: (0, _store.createSelector)((state, itemId) => state.items.disabledItemsFocusable || !(0, _useTreeViewItems.isItemDisabled)(state.items.itemMetaLookup, itemId))
66
+ };
@@ -7,7 +7,7 @@ export declare const buildSiblingIndexes: (siblings: string[]) => {
7
7
  /**
8
8
  * Check if an item is disabled.
9
9
  * This method should only be used in selectors that are checking if several items are disabled.
10
- * Otherwise, use the `selectorIsItemDisabled` selector.
10
+ * Otherwise, use the `itemsSelector.isItemDisabled` selector.
11
11
  * @returns
12
12
  */
13
13
  export declare const isItemDisabled: (itemMetaLookup: {
@@ -16,7 +16,7 @@ const buildSiblingIndexes = siblings => {
16
16
  /**
17
17
  * Check if an item is disabled.
18
18
  * This method should only be used in selectors that are checking if several items are disabled.
19
- * Otherwise, use the `selectorIsItemDisabled` selector.
19
+ * Otherwise, use the `itemsSelector.isItemDisabled` selector.
20
20
  * @returns
21
21
  */
22
22
  exports.buildSiblingIndexes = buildSiblingIndexes;
@@ -9,6 +9,7 @@ Object.defineProperty(exports, "__esModule", {
9
9
  exports.useTreeViewJSXItems = void 0;
10
10
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
11
  var React = _interopRequireWildcard(require("react"));
12
+ var _store = require("@mui/x-internals/store");
12
13
  var _useEventCallback = _interopRequireDefault(require("@mui/utils/useEventCallback"));
13
14
  var _useForkRef = _interopRequireDefault(require("@mui/utils/useForkRef"));
14
15
  var _useEnhancedEffect = _interopRequireDefault(require("@mui/utils/useEnhancedEffect"));
@@ -19,8 +20,7 @@ var _useTreeViewItems = require("../useTreeViewItems/useTreeViewItems.utils");
19
20
  var _TreeViewItemDepthContext = require("../../TreeViewItemDepthContext");
20
21
  var _useTreeViewId = require("../../corePlugins/useTreeViewId/useTreeViewId.utils");
21
22
  var _useTreeItemUtils = require("../../../hooks/useTreeItemUtils/useTreeItemUtils");
22
- var _useSelector = require("../../hooks/useSelector");
23
- var _useTreeViewId2 = require("../../corePlugins/useTreeViewId/useTreeViewId.selectors");
23
+ var _useTreeViewId2 = require("../../corePlugins/useTreeViewId");
24
24
  var _jsxRuntime = require("react/jsx-runtime");
25
25
  const useTreeViewJSXItems = ({
26
26
  instance,
@@ -28,38 +28,30 @@ const useTreeViewJSXItems = ({
28
28
  }) => {
29
29
  instance.preventItemUpdates();
30
30
  const insertJSXItem = (0, _useEventCallback.default)(item => {
31
- store.update(prevState => {
32
- if (prevState.items.itemMetaLookup[item.id] != null) {
33
- throw new Error(['MUI X: The Tree View component requires all items to have a unique `id` property.', 'Alternatively, you can use the `getItemId` prop to specify a custom id for each item.', `Two items were provided with the same id in the \`items\` prop: "${item.id}"`].join('\n'));
34
- }
35
- return (0, _extends2.default)({}, prevState, {
36
- items: (0, _extends2.default)({}, prevState.items, {
37
- itemMetaLookup: (0, _extends2.default)({}, prevState.items.itemMetaLookup, {
38
- [item.id]: item
39
- }),
40
- // For Simple Tree View, we don't have a proper `item` object, so we create a very basic one.
41
- itemModelLookup: (0, _extends2.default)({}, prevState.items.itemModelLookup, {
42
- [item.id]: {
43
- id: item.id,
44
- label: item.label ?? ''
45
- }
46
- })
47
- })
48
- });
49
- });
31
+ if (store.state.items.itemMetaLookup[item.id] != null) {
32
+ throw new Error(['MUI X: The Tree View component requires all items to have a unique `id` property.', 'Alternatively, you can use the `getItemId` prop to specify a custom id for each item.', `Two items were provided with the same id in the \`items\` prop: "${item.id}"`].join('\n'));
33
+ }
34
+ store.set('items', (0, _extends2.default)({}, store.state.items, {
35
+ itemMetaLookup: (0, _extends2.default)({}, store.state.items.itemMetaLookup, {
36
+ [item.id]: item
37
+ }),
38
+ // For Simple Tree View, we don't have a proper `item` object, so we create a very basic one.
39
+ itemModelLookup: (0, _extends2.default)({}, store.state.items.itemModelLookup, {
40
+ [item.id]: {
41
+ id: item.id,
42
+ label: item.label ?? ''
43
+ }
44
+ })
45
+ }));
50
46
  return () => {
51
- store.update(prevState => {
52
- const newItemMetaLookup = (0, _extends2.default)({}, prevState.items.itemMetaLookup);
53
- const newItemModelLookup = (0, _extends2.default)({}, prevState.items.itemModelLookup);
54
- delete newItemMetaLookup[item.id];
55
- delete newItemModelLookup[item.id];
56
- return (0, _extends2.default)({}, prevState, {
57
- items: (0, _extends2.default)({}, prevState.items, {
58
- itemMetaLookup: newItemMetaLookup,
59
- itemModelLookup: newItemModelLookup
60
- })
61
- });
62
- });
47
+ const newItemMetaLookup = (0, _extends2.default)({}, store.state.items.itemMetaLookup);
48
+ const newItemModelLookup = (0, _extends2.default)({}, store.state.items.itemModelLookup);
49
+ delete newItemMetaLookup[item.id];
50
+ delete newItemModelLookup[item.id];
51
+ store.set('items', (0, _extends2.default)({}, store.state.items, {
52
+ itemMetaLookup: newItemMetaLookup,
53
+ itemModelLookup: newItemModelLookup
54
+ }));
63
55
  (0, _publishTreeViewEvent.publishTreeViewEvent)(instance, 'removeItem', {
64
56
  id: item.id
65
57
  });
@@ -67,14 +59,12 @@ const useTreeViewJSXItems = ({
67
59
  });
68
60
  const setJSXItemsOrderedChildrenIds = (parentId, orderedChildrenIds) => {
69
61
  const parentIdWithDefault = parentId ?? _useTreeViewItems.TREE_VIEW_ROOT_PARENT_ID;
70
- store.update(prevState => (0, _extends2.default)({}, prevState, {
71
- items: (0, _extends2.default)({}, prevState.items, {
72
- itemOrderedChildrenIdsLookup: (0, _extends2.default)({}, prevState.items.itemOrderedChildrenIdsLookup, {
73
- [parentIdWithDefault]: orderedChildrenIds
74
- }),
75
- itemChildrenIndexesLookup: (0, _extends2.default)({}, prevState.items.itemChildrenIndexesLookup, {
76
- [parentIdWithDefault]: (0, _useTreeViewItems.buildSiblingIndexes)(orderedChildrenIds)
77
- })
62
+ store.set('items', (0, _extends2.default)({}, store.state.items, {
63
+ itemOrderedChildrenIdsLookup: (0, _extends2.default)({}, store.state.items.itemOrderedChildrenIdsLookup, {
64
+ [parentIdWithDefault]: orderedChildrenIds
65
+ }),
66
+ itemChildrenIndexesLookup: (0, _extends2.default)({}, store.state.items.itemChildrenIndexesLookup, {
67
+ [parentIdWithDefault]: (0, _useTreeViewItems.buildSiblingIndexes)(orderedChildrenIds)
78
68
  })
79
69
  }));
80
70
  };
@@ -128,7 +118,7 @@ const useTreeViewJSXItemsItemPlugin = ({
128
118
  const expandable = (0, _useTreeItemUtils.itemHasChildren)(children);
129
119
  const pluginContentRef = React.useRef(null);
130
120
  const handleContentRef = (0, _useForkRef.default)(pluginContentRef, contentRef);
131
- const treeId = (0, _useSelector.useSelector)(store, _useTreeViewId2.selectorTreeViewId);
121
+ const treeId = (0, _store.useStore)(store, _useTreeViewId2.idSelectors.treeId);
132
122
 
133
123
  // Prevent any flashing
134
124
  (0, _useEnhancedEffect.default)(() => {
@@ -8,12 +8,12 @@ Object.defineProperty(exports, "__esModule", {
8
8
  });
9
9
  exports.useTreeViewKeyboardNavigation = void 0;
10
10
  var React = _interopRequireWildcard(require("react"));
11
+ var _store = require("@mui/x-internals/store");
11
12
  var _RtlProvider = require("@mui/system/RtlProvider");
12
13
  var _useEventCallback = _interopRequireDefault(require("@mui/utils/useEventCallback"));
13
14
  var _tree = require("../../utils/tree");
14
15
  var _plugins = require("../../utils/plugins");
15
16
  var _useTreeViewLabel = require("../useTreeViewLabel");
16
- var _useSelector = require("../../hooks/useSelector");
17
17
  var _useTreeViewItems = require("../useTreeViewItems/useTreeViewItems.selectors");
18
18
  var _useTreeViewLabel2 = require("../useTreeViewLabel/useTreeViewLabel.selectors");
19
19
  var _useTreeViewSelection = require("../useTreeViewSelection/useTreeViewSelection.selectors");
@@ -31,7 +31,7 @@ const useTreeViewKeyboardNavigation = ({
31
31
  const updateFirstCharMap = (0, _useEventCallback.default)(callback => {
32
32
  firstCharMap.current = callback(firstCharMap.current);
33
33
  });
34
- const itemMetaLookup = (0, _useSelector.useSelector)(store, _useTreeViewItems.selectorItemMetaLookup);
34
+ const itemMetaLookup = (0, _store.useStore)(store, _useTreeViewItems.itemsSelectors.itemMetaLookup);
35
35
  React.useEffect(() => {
36
36
  if (instance.areItemUpdatesPrevented()) {
37
37
  return;
@@ -46,10 +46,10 @@ const useTreeViewKeyboardNavigation = ({
46
46
  const getFirstMatchingItem = (itemId, query) => {
47
47
  const cleanQuery = query.toLowerCase();
48
48
  const getNextItem = itemIdToCheck => {
49
- const nextItemId = (0, _tree.getNextNavigableItem)(store.value, itemIdToCheck);
49
+ const nextItemId = (0, _tree.getNextNavigableItem)(store.state, itemIdToCheck);
50
50
  // We reached the end of the tree, check from the beginning
51
51
  if (nextItemId === null) {
52
- return (0, _tree.getFirstNavigableItem)(store.value);
52
+ return (0, _tree.getFirstNavigableItem)(store.state);
53
53
  }
54
54
  return nextItemId;
55
55
  };
@@ -67,9 +67,9 @@ const useTreeViewKeyboardNavigation = ({
67
67
  }
68
68
  return matchingItemId;
69
69
  };
70
- const canToggleItemSelection = itemId => (0, _useTreeViewSelection.selectorIsSelectionEnabled)(store.value) && !(0, _useTreeViewItems.selectorIsItemDisabled)(store.value, itemId);
70
+ const canToggleItemSelection = itemId => _useTreeViewSelection.selectionSelectors.enabled(store.state) && !_useTreeViewItems.itemsSelectors.isItemDisabled(store.state, itemId);
71
71
  const canToggleItemExpansion = itemId => {
72
- return !(0, _useTreeViewItems.selectorIsItemDisabled)(store.value, itemId) && (0, _useTreeViewExpansion.selectorIsItemExpandable)(store.value, itemId);
72
+ return !_useTreeViewItems.itemsSelectors.isItemDisabled(store.state, itemId) && _useTreeViewExpansion.expansionSelectors.isItemExpandable(store.state, itemId);
73
73
  };
74
74
 
75
75
  // ARIA specification: https://www.w3.org/WAI/ARIA/apg/patterns/treeview/#keyboardinteraction
@@ -82,7 +82,7 @@ const useTreeViewKeyboardNavigation = ({
82
82
  }
83
83
  const ctrlPressed = event.ctrlKey || event.metaKey;
84
84
  const key = event.key;
85
- const isMultiSelectEnabled = (0, _useTreeViewSelection.selectorIsMultiSelectEnabled)(store.value);
85
+ const isMultiSelectEnabled = _useTreeViewSelection.selectionSelectors.isMultiSelectEnabled(store.state);
86
86
 
87
87
  // eslint-disable-next-line default-case
88
88
  switch (true) {
@@ -107,7 +107,7 @@ const useTreeViewKeyboardNavigation = ({
107
107
  // If the focused item has no children, we select it.
108
108
  case key === 'Enter':
109
109
  {
110
- if ((0, _plugins.hasPlugin)(instance, _useTreeViewLabel.useTreeViewLabel) && (0, _useTreeViewLabel2.selectorIsItemEditable)(store.value, itemId) && !(0, _useTreeViewLabel2.selectorIsItemBeingEdited)(store.value, itemId)) {
110
+ if ((0, _plugins.hasPlugin)(instance, _useTreeViewLabel.useTreeViewLabel) && _useTreeViewLabel2.labelSelectors.isItemEditable(store.state, itemId) && !_useTreeViewLabel2.labelSelectors.isItemBeingEdited(store.state, itemId)) {
111
111
  instance.setEditedItem(itemId);
112
112
  } else if (canToggleItemExpansion(itemId)) {
113
113
  instance.setItemExpansion({
@@ -123,7 +123,7 @@ const useTreeViewKeyboardNavigation = ({
123
123
  itemId,
124
124
  keepExistingSelection: true
125
125
  });
126
- } else if (!(0, _useTreeViewSelection.selectorIsItemSelected)(store.value, itemId)) {
126
+ } else if (!_useTreeViewSelection.selectionSelectors.isItemSelected(store.state, itemId)) {
127
127
  instance.setItemSelection({
128
128
  event,
129
129
  itemId
@@ -137,7 +137,7 @@ const useTreeViewKeyboardNavigation = ({
137
137
  // Focus the next focusable item
138
138
  case key === 'ArrowDown':
139
139
  {
140
- const nextItem = (0, _tree.getNextNavigableItem)(store.value, itemId);
140
+ const nextItem = (0, _tree.getNextNavigableItem)(store.state, itemId);
141
141
  if (nextItem) {
142
142
  event.preventDefault();
143
143
  instance.focusItem(event, nextItem);
@@ -154,7 +154,7 @@ const useTreeViewKeyboardNavigation = ({
154
154
  // Focuses the previous focusable item
155
155
  case key === 'ArrowUp':
156
156
  {
157
- const previousItem = (0, _tree.getPreviousNavigableItem)(store.value, itemId);
157
+ const previousItem = (0, _tree.getPreviousNavigableItem)(store.state, itemId);
158
158
  if (previousItem) {
159
159
  event.preventDefault();
160
160
  instance.focusItem(event, previousItem);
@@ -175,8 +175,8 @@ const useTreeViewKeyboardNavigation = ({
175
175
  if (ctrlPressed) {
176
176
  return;
177
177
  }
178
- if ((0, _useTreeViewExpansion.selectorIsItemExpanded)(store.value, itemId)) {
179
- const nextItemId = (0, _tree.getNextNavigableItem)(store.value, itemId);
178
+ if (_useTreeViewExpansion.expansionSelectors.isItemExpanded(store.state, itemId)) {
179
+ const nextItemId = (0, _tree.getNextNavigableItem)(store.state, itemId);
180
180
  if (nextItemId) {
181
181
  instance.focusItem(event, nextItemId);
182
182
  event.preventDefault();
@@ -198,14 +198,14 @@ const useTreeViewKeyboardNavigation = ({
198
198
  if (ctrlPressed) {
199
199
  return;
200
200
  }
201
- if (canToggleItemExpansion(itemId) && (0, _useTreeViewExpansion.selectorIsItemExpanded)(store.value, itemId)) {
201
+ if (canToggleItemExpansion(itemId) && _useTreeViewExpansion.expansionSelectors.isItemExpanded(store.state, itemId)) {
202
202
  instance.setItemExpansion({
203
203
  event,
204
204
  itemId
205
205
  });
206
206
  event.preventDefault();
207
207
  } else {
208
- const parent = (0, _useTreeViewItems.selectorItemParentId)(store.value, itemId);
208
+ const parent = _useTreeViewItems.itemsSelectors.itemParentId(store.state, itemId);
209
209
  if (parent) {
210
210
  instance.focusItem(event, parent);
211
211
  event.preventDefault();
@@ -222,7 +222,7 @@ const useTreeViewKeyboardNavigation = ({
222
222
  if (canToggleItemSelection(itemId) && isMultiSelectEnabled && ctrlPressed && event.shiftKey) {
223
223
  instance.selectRangeFromStartToItem(event, itemId);
224
224
  } else {
225
- instance.focusItem(event, (0, _tree.getFirstNavigableItem)(store.value));
225
+ instance.focusItem(event, (0, _tree.getFirstNavigableItem)(store.state));
226
226
  }
227
227
  event.preventDefault();
228
228
  break;
@@ -236,7 +236,7 @@ const useTreeViewKeyboardNavigation = ({
236
236
  if (canToggleItemSelection(itemId) && isMultiSelectEnabled && ctrlPressed && event.shiftKey) {
237
237
  instance.selectRangeFromItemToEnd(event, itemId);
238
238
  } else {
239
- instance.focusItem(event, (0, _tree.getLastNavigableItem)(store.value));
239
+ instance.focusItem(event, (0, _tree.getLastNavigableItem)(store.state));
240
240
  }
241
241
  event.preventDefault();
242
242
  break;
@@ -252,7 +252,7 @@ const useTreeViewKeyboardNavigation = ({
252
252
 
253
253
  // Multi select behavior when pressing Ctrl + a
254
254
  // Selects all the items
255
- case String.fromCharCode(event.keyCode) === 'A' && ctrlPressed && isMultiSelectEnabled && (0, _useTreeViewSelection.selectorIsSelectionEnabled)(store.value):
255
+ case String.fromCharCode(event.keyCode) === 'A' && ctrlPressed && isMultiSelectEnabled && _useTreeViewSelection.selectionSelectors.enabled(store.state):
256
256
  {
257
257
  instance.selectAllNavigableItems(event);
258
258
  event.preventDefault();
@@ -4,6 +4,7 @@ import { UseTreeViewItemsSignature } from "../useTreeViewItems/index.js";
4
4
  import { UseTreeViewSelectionSignature } from "../useTreeViewSelection/index.js";
5
5
  import { UseTreeViewFocusSignature } from "../useTreeViewFocus/index.js";
6
6
  import { UseTreeViewExpansionSignature } from "../useTreeViewExpansion/index.js";
7
+ import { UseTreeViewLabelSignature } from "../useTreeViewLabel/index.js";
7
8
  import { TreeViewItemId, TreeViewCancellableEvent } from "../../../models/index.js";
8
9
  export interface UseTreeViewKeyboardNavigationInstance {
9
10
  /**
@@ -24,6 +25,7 @@ export interface UseTreeViewKeyboardNavigationInstance {
24
25
  export type UseTreeViewKeyboardNavigationSignature = TreeViewPluginSignature<{
25
26
  instance: UseTreeViewKeyboardNavigationInstance;
26
27
  dependencies: [UseTreeViewItemsSignature, UseTreeViewSelectionSignature, UseTreeViewFocusSignature, UseTreeViewExpansionSignature];
28
+ optionalDependencies: [UseTreeViewLabelSignature];
27
29
  }>;
28
30
  export type TreeViewFirstCharMap = {
29
31
  [itemId: string]: string;
@@ -1,2 +1,3 @@
1
1
  export { useTreeViewLabel } from "./useTreeViewLabel.js";
2
- export type { UseTreeViewLabelSignature, UseTreeViewLabelParameters } from "./useTreeViewLabel.types.js";
2
+ export type { UseTreeViewLabelSignature, UseTreeViewLabelParameters } from "./useTreeViewLabel.types.js";
3
+ export { labelSelectors } from "./useTreeViewLabel.selectors.js";
@@ -3,10 +3,17 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ Object.defineProperty(exports, "labelSelectors", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _useTreeViewLabel2.labelSelectors;
10
+ }
11
+ });
6
12
  Object.defineProperty(exports, "useTreeViewLabel", {
7
13
  enumerable: true,
8
14
  get: function () {
9
15
  return _useTreeViewLabel.useTreeViewLabel;
10
16
  }
11
17
  });
12
- var _useTreeViewLabel = require("./useTreeViewLabel");
18
+ var _useTreeViewLabel = require("./useTreeViewLabel");
19
+ var _useTreeViewLabel2 = require("./useTreeViewLabel.selectors");
@@ -7,8 +7,8 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.useTreeViewLabelItemPlugin = void 0;
9
9
  var React = _interopRequireWildcard(require("react"));
10
+ var _store = require("@mui/x-internals/store");
10
11
  var _TreeViewProvider = require("../../TreeViewProvider");
11
- var _useSelector = require("../../hooks/useSelector");
12
12
  var _useTreeViewLabel = require("./useTreeViewLabel.selectors");
13
13
  const useTreeViewLabelItemPlugin = ({
14
14
  props
@@ -21,8 +21,8 @@ const useTreeViewLabelItemPlugin = ({
21
21
  itemId
22
22
  } = props;
23
23
  const [labelInputValue, setLabelInputValue] = React.useState(label);
24
- const isItemEditable = (0, _useSelector.useSelector)(store, _useTreeViewLabel.selectorIsItemEditable, itemId);
25
- const isItemBeingEdited = (0, _useSelector.useSelector)(store, _useTreeViewLabel.selectorIsItemBeingEdited, itemId);
24
+ const isItemEditable = (0, _store.useStore)(store, _useTreeViewLabel.labelSelectors.isItemEditable, itemId);
25
+ const isItemBeingEdited = (0, _store.useStore)(store, _useTreeViewLabel.labelSelectors.isItemBeingEdited, itemId);
26
26
  React.useEffect(() => {
27
27
  if (!isItemBeingEdited) {
28
28
  setLabelInputValue(label);
@@ -15,45 +15,37 @@ const useTreeViewLabel = ({
15
15
  }) => {
16
16
  const setEditedItem = editedItemId => {
17
17
  if (editedItemId !== null) {
18
- const isEditable = (0, _useTreeViewLabel2.selectorIsItemEditable)(store.value, editedItemId);
18
+ const isEditable = _useTreeViewLabel2.labelSelectors.isItemEditable(store.state, editedItemId);
19
19
  if (!isEditable) {
20
20
  return;
21
21
  }
22
22
  }
23
- store.update(prevState => (0, _extends2.default)({}, prevState, {
24
- label: (0, _extends2.default)({}, prevState.label, {
25
- editedItemId
26
- })
23
+ store.set('label', (0, _extends2.default)({}, store.state.label, {
24
+ editedItemId
27
25
  }));
28
26
  };
29
27
  const updateItemLabel = (itemId, label) => {
30
28
  if (!label) {
31
29
  throw new Error(['MUI X: The Tree View component requires all items to have a `label` property.', 'The label of an item cannot be empty.', itemId].join('\n'));
32
30
  }
33
- store.update(prevState => {
34
- const item = prevState.items.itemMetaLookup[itemId];
35
- if (item.label !== label) {
36
- return (0, _extends2.default)({}, prevState, {
37
- items: (0, _extends2.default)({}, prevState.items, {
38
- itemMetaLookup: (0, _extends2.default)({}, prevState.items.itemMetaLookup, {
39
- [itemId]: (0, _extends2.default)({}, item, {
40
- label
41
- })
42
- })
43
- })
44
- });
45
- }
46
- return prevState;
47
- });
31
+ const item = store.state.items.itemMetaLookup[itemId];
32
+ if (item.label === label) {
33
+ return;
34
+ }
35
+ store.set('items', (0, _extends2.default)({}, store.state.items, {
36
+ itemMetaLookup: (0, _extends2.default)({}, store.state.items.itemMetaLookup, {
37
+ [itemId]: (0, _extends2.default)({}, item, {
38
+ label
39
+ })
40
+ })
41
+ }));
48
42
  if (params.onItemLabelChange) {
49
43
  params.onItemLabelChange(itemId, label);
50
44
  }
51
45
  };
52
46
  (0, _useEnhancedEffect.default)(() => {
53
- store.update(prevState => (0, _extends2.default)({}, prevState, {
54
- label: (0, _extends2.default)({}, prevState.label, {
55
- isItemEditable: params.isItemEditable
56
- })
47
+ store.set('label', (0, _extends2.default)({}, store.state.items, {
48
+ isItemEditable: params.isItemEditable
57
49
  }));
58
50
  }, [store, params.isItemEditable]);
59
51
  return {