@mui/x-tree-view 8.11.0 → 8.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/CHANGELOG.md +74 -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/useTreeItemModel.js +3 -3
  15. package/esm/hooks/useTreeItemUtils/useTreeItemUtils.js +24 -25
  16. package/esm/index.js +1 -1
  17. package/esm/internals/TreeViewProvider/TreeViewChildrenItemProvider.js +2 -2
  18. package/esm/internals/TreeViewProvider/TreeViewProvider.types.d.ts +3 -3
  19. package/esm/internals/components/RichTreeViewItems.js +5 -5
  20. package/esm/internals/corePlugins/useTreeViewId/index.d.ts +2 -1
  21. package/esm/internals/corePlugins/useTreeViewId/index.js +2 -1
  22. package/esm/internals/corePlugins/useTreeViewId/useTreeViewId.js +10 -13
  23. package/esm/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.d.ts +8 -34
  24. package/esm/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.js +9 -9
  25. package/esm/internals/index.d.ts +6 -14
  26. package/esm/internals/index.js +6 -13
  27. package/esm/internals/models/plugin.d.ts +2 -3
  28. package/esm/internals/models/treeView.d.ts +4 -6
  29. package/esm/internals/plugins/useTreeViewExpansion/index.d.ts +2 -1
  30. package/esm/internals/plugins/useTreeViewExpansion/index.js +2 -1
  31. package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +26 -30
  32. package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.d.ts +24 -316
  33. package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.js +27 -38
  34. package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +7 -1
  35. package/esm/internals/plugins/useTreeViewFocus/index.d.ts +2 -1
  36. package/esm/internals/plugins/useTreeViewFocus/index.js +2 -1
  37. package/esm/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +17 -21
  38. package/esm/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.d.ts +20 -628
  39. package/esm/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.js +25 -37
  40. package/esm/internals/plugins/useTreeViewItems/index.d.ts +2 -1
  41. package/esm/internals/plugins/useTreeViewItems/index.js +2 -1
  42. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.js +78 -99
  43. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.d.ts +52 -1142
  44. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +58 -98
  45. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.utils.d.ts +1 -1
  46. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.utils.js +1 -1
  47. package/esm/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +32 -42
  48. package/esm/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +22 -22
  49. package/esm/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +2 -0
  50. package/esm/internals/plugins/useTreeViewLabel/index.d.ts +2 -1
  51. package/esm/internals/plugins/useTreeViewLabel/index.js +2 -1
  52. package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.itemPlugin.js +4 -4
  53. package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +17 -25
  54. package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.d.ts +14 -100
  55. package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.js +24 -34
  56. package/esm/internals/plugins/useTreeViewLazyLoading/index.d.ts +2 -1
  57. package/esm/internals/plugins/useTreeViewLazyLoading/index.js +1 -1
  58. package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.d.ts +18 -245
  59. package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.js +15 -27
  60. package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.d.ts +20 -6
  61. package/esm/internals/plugins/useTreeViewSelection/index.d.ts +2 -1
  62. package/esm/internals/plugins/useTreeViewSelection/index.js +2 -1
  63. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +25 -38
  64. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +30 -34
  65. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.d.ts +38 -517
  66. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.js +46 -71
  67. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +1 -0
  68. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +10 -10
  69. package/esm/internals/useTreeView/useTreeView.d.ts +1 -1
  70. package/esm/internals/useTreeView/useTreeView.js +11 -18
  71. package/esm/internals/useTreeView/useTreeView.types.d.ts +1 -1
  72. package/esm/internals/useTreeView/useTreeViewBuildContext.d.ts +2 -3
  73. package/esm/internals/utils/tree.js +33 -33
  74. package/esm/useTreeItem/useTreeItem.js +14 -14
  75. package/esm/useTreeItem/useTreeItem.types.d.ts +2 -1
  76. package/hooks/useTreeItemModel.js +3 -3
  77. package/hooks/useTreeItemUtils/useTreeItemUtils.js +18 -19
  78. package/index.js +1 -1
  79. package/internals/TreeViewProvider/TreeViewChildrenItemProvider.js +1 -1
  80. package/internals/TreeViewProvider/TreeViewProvider.types.d.ts +3 -3
  81. package/internals/components/RichTreeViewItems.js +5 -5
  82. package/internals/corePlugins/useTreeViewId/index.d.ts +2 -1
  83. package/internals/corePlugins/useTreeViewId/index.js +8 -1
  84. package/internals/corePlugins/useTreeViewId/useTreeViewId.js +9 -12
  85. package/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.d.ts +8 -34
  86. package/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.js +10 -10
  87. package/internals/index.d.ts +6 -14
  88. package/internals/index.js +12 -73
  89. package/internals/models/plugin.d.ts +2 -3
  90. package/internals/models/treeView.d.ts +4 -6
  91. package/internals/plugins/useTreeViewExpansion/index.d.ts +2 -1
  92. package/internals/plugins/useTreeViewExpansion/index.js +8 -1
  93. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +24 -28
  94. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.d.ts +24 -316
  95. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.js +27 -38
  96. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +7 -1
  97. package/internals/plugins/useTreeViewFocus/index.d.ts +2 -1
  98. package/internals/plugins/useTreeViewFocus/index.js +8 -1
  99. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +14 -18
  100. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.d.ts +20 -628
  101. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.js +23 -35
  102. package/internals/plugins/useTreeViewItems/index.d.ts +2 -1
  103. package/internals/plugins/useTreeViewItems/index.js +8 -1
  104. package/internals/plugins/useTreeViewItems/useTreeViewItems.js +77 -98
  105. package/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.d.ts +52 -1142
  106. package/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +59 -99
  107. package/internals/plugins/useTreeViewItems/useTreeViewItems.utils.d.ts +1 -1
  108. package/internals/plugins/useTreeViewItems/useTreeViewItems.utils.js +1 -1
  109. package/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +32 -42
  110. package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +18 -18
  111. package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +2 -0
  112. package/internals/plugins/useTreeViewLabel/index.d.ts +2 -1
  113. package/internals/plugins/useTreeViewLabel/index.js +8 -1
  114. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.itemPlugin.js +3 -3
  115. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +16 -24
  116. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.d.ts +14 -100
  117. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.js +24 -34
  118. package/internals/plugins/useTreeViewLazyLoading/index.d.ts +2 -1
  119. package/internals/plugins/useTreeViewLazyLoading/index.js +8 -1
  120. package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.d.ts +18 -245
  121. package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.js +16 -28
  122. package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.d.ts +20 -6
  123. package/internals/plugins/useTreeViewSelection/index.d.ts +2 -1
  124. package/internals/plugins/useTreeViewSelection/index.js +8 -1
  125. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +23 -37
  126. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +29 -33
  127. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.d.ts +38 -517
  128. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.js +46 -71
  129. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +1 -0
  130. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +8 -8
  131. package/internals/useTreeView/useTreeView.d.ts +1 -1
  132. package/internals/useTreeView/useTreeView.js +11 -18
  133. package/internals/useTreeView/useTreeView.types.d.ts +1 -1
  134. package/internals/useTreeView/useTreeViewBuildContext.d.ts +2 -3
  135. package/internals/utils/tree.js +31 -31
  136. package/package.json +12 -13
  137. package/useTreeItem/useTreeItem.js +14 -14
  138. package/useTreeItem/useTreeItem.types.d.ts +2 -1
  139. package/esm/internals/hooks/useSelector.d.ts +0 -4
  140. package/esm/internals/hooks/useSelector.js +0 -8
  141. package/esm/internals/utils/TreeViewStore.d.ts +0 -12
  142. package/esm/internals/utils/TreeViewStore.js +0 -22
  143. package/esm/internals/utils/selectors.d.ts +0 -21
  144. package/esm/internals/utils/selectors.js +0 -51
  145. package/internals/hooks/useSelector.d.ts +0 -4
  146. package/internals/hooks/useSelector.js +0 -16
  147. package/internals/utils/TreeViewStore.d.ts +0 -12
  148. package/internals/utils/TreeViewStore.js +0 -29
  149. package/internals/utils/selectors.d.ts +0 -21
  150. package/internals/utils/selectors.js +0 -58
@@ -1,318 +1,26 @@
1
- import { TreeViewRootSelector } from "../../utils/selectors.js";
1
+ import { TreeViewState } from "../../models/index.js";
2
2
  import { UseTreeViewExpansionSignature } from "./useTreeViewExpansion.types.js";
3
- /**
4
- * Get the expanded items.
5
- * @param {TreeViewState<[UseTreeViewExpansionSignature]>} state The state of the tree view.
6
- * @returns {TreeViewItemId[]} The expanded items.
7
- */
8
- export declare const selectorExpandedItems: ((state: import("../../corePlugins/useTreeViewId/useTreeViewId.types.js").UseTreeViewIdState & import("./useTreeViewExpansion.types.js").UseTreeViewExpansionState & Partial<{}> & {
9
- cacheKey: import("../../models/index.js").TreeViewStateCacheKey;
10
- }) => string[]) & {
11
- clearCache: () => void;
12
- resultsCount: () => number;
13
- resetResultsCount: () => void;
14
- } & {
15
- resultFunc: (resultFuncArgs_0: {
16
- expandedItems: string[];
17
- expansionTrigger: "content" | "iconContainer";
18
- }) => string[];
19
- memoizedResultFunc: ((resultFuncArgs_0: {
20
- expandedItems: string[];
21
- expansionTrigger: "content" | "iconContainer";
22
- }) => string[]) & {
23
- clearCache: () => void;
24
- resultsCount: () => number;
25
- resetResultsCount: () => void;
26
- };
27
- lastResult: () => string[];
28
- dependencies: [TreeViewRootSelector<UseTreeViewExpansionSignature>];
29
- recomputations: () => number;
30
- resetRecomputations: () => void;
31
- dependencyRecomputations: () => number;
32
- resetDependencyRecomputations: () => void;
33
- } & {
34
- memoize: typeof import("reselect").weakMapMemoize;
35
- argsMemoize: typeof import("reselect").weakMapMemoize;
36
- };
37
- /**
38
- * Get the expanded items as a Map.
39
- * @param {TreeViewState<[UseTreeViewExpansionSignature]>} state The state of the tree view.
40
- * @returns {TreeViewExpansionValue} The expanded items as a Map.
41
- */
42
- export declare const selectorExpandedItemsMap: ((state: import("../../corePlugins/useTreeViewId/useTreeViewId.types.js").UseTreeViewIdState & import("./useTreeViewExpansion.types.js").UseTreeViewExpansionState & Partial<{}> & {
43
- cacheKey: import("../../models/index.js").TreeViewStateCacheKey;
44
- }) => Map<string, true>) & {
45
- clearCache: () => void;
46
- resultsCount: () => number;
47
- resetResultsCount: () => void;
48
- } & {
49
- resultFunc: (resultFuncArgs_0: string[]) => Map<string, true>;
50
- memoizedResultFunc: ((resultFuncArgs_0: string[]) => Map<string, true>) & {
51
- clearCache: () => void;
52
- resultsCount: () => number;
53
- resetResultsCount: () => void;
54
- };
55
- lastResult: () => Map<string, true>;
56
- dependencies: [((state: import("../../corePlugins/useTreeViewId/useTreeViewId.types.js").UseTreeViewIdState & import("./useTreeViewExpansion.types.js").UseTreeViewExpansionState & Partial<{}> & {
57
- cacheKey: import("../../models/index.js").TreeViewStateCacheKey;
58
- }) => string[]) & {
59
- clearCache: () => void;
60
- resultsCount: () => number;
61
- resetResultsCount: () => void;
62
- } & {
63
- resultFunc: (resultFuncArgs_0: {
64
- expandedItems: string[];
65
- expansionTrigger: "content" | "iconContainer";
66
- }) => string[];
67
- memoizedResultFunc: ((resultFuncArgs_0: {
68
- expandedItems: string[];
69
- expansionTrigger: "content" | "iconContainer";
70
- }) => string[]) & {
71
- clearCache: () => void;
72
- resultsCount: () => number;
73
- resetResultsCount: () => void;
74
- };
75
- lastResult: () => string[];
76
- dependencies: [TreeViewRootSelector<UseTreeViewExpansionSignature>];
77
- recomputations: () => number;
78
- resetRecomputations: () => void;
79
- dependencyRecomputations: () => number;
80
- resetDependencyRecomputations: () => void;
81
- } & {
82
- memoize: typeof import("reselect").weakMapMemoize;
83
- argsMemoize: typeof import("reselect").weakMapMemoize;
84
- }];
85
- recomputations: () => number;
86
- resetRecomputations: () => void;
87
- dependencyRecomputations: () => number;
88
- resetDependencyRecomputations: () => void;
89
- } & {
90
- memoize: typeof import("reselect").weakMapMemoize;
91
- argsMemoize: typeof import("reselect").weakMapMemoize;
92
- };
93
- /**
94
- * Check if an item is expanded.
95
- * @param {TreeViewState<[UseTreeViewExpansionSignature]>} state The state of the tree view.
96
- * @returns {boolean} `true` if the item is expanded, `false` otherwise.
97
- */
98
- export declare const selectorIsItemExpanded: ((state: any, itemId: string) => boolean) & {
99
- clearCache: () => void;
100
- resultsCount: () => number;
101
- resetResultsCount: () => void;
102
- } & {
103
- resultFunc: (resultFuncArgs_0: Map<string, true>, resultFuncArgs_1: string) => boolean;
104
- memoizedResultFunc: ((resultFuncArgs_0: Map<string, true>, resultFuncArgs_1: string) => boolean) & {
105
- clearCache: () => void;
106
- resultsCount: () => number;
107
- resetResultsCount: () => void;
108
- };
109
- lastResult: () => boolean;
110
- dependencies: [((state: import("../../corePlugins/useTreeViewId/useTreeViewId.types.js").UseTreeViewIdState & import("./useTreeViewExpansion.types.js").UseTreeViewExpansionState & Partial<{}> & {
111
- cacheKey: import("../../models/index.js").TreeViewStateCacheKey;
112
- }) => Map<string, true>) & {
113
- clearCache: () => void;
114
- resultsCount: () => number;
115
- resetResultsCount: () => void;
116
- } & {
117
- resultFunc: (resultFuncArgs_0: string[]) => Map<string, true>;
118
- memoizedResultFunc: ((resultFuncArgs_0: string[]) => Map<string, true>) & {
119
- clearCache: () => void;
120
- resultsCount: () => number;
121
- resetResultsCount: () => void;
122
- };
123
- lastResult: () => Map<string, true>;
124
- dependencies: [((state: import("../../corePlugins/useTreeViewId/useTreeViewId.types.js").UseTreeViewIdState & import("./useTreeViewExpansion.types.js").UseTreeViewExpansionState & Partial<{}> & {
125
- cacheKey: import("../../models/index.js").TreeViewStateCacheKey;
126
- }) => string[]) & {
127
- clearCache: () => void;
128
- resultsCount: () => number;
129
- resetResultsCount: () => void;
130
- } & {
131
- resultFunc: (resultFuncArgs_0: {
132
- expandedItems: string[];
133
- expansionTrigger: "content" | "iconContainer";
134
- }) => string[];
135
- memoizedResultFunc: ((resultFuncArgs_0: {
136
- expandedItems: string[];
137
- expansionTrigger: "content" | "iconContainer";
138
- }) => string[]) & {
139
- clearCache: () => void;
140
- resultsCount: () => number;
141
- resetResultsCount: () => void;
142
- };
143
- lastResult: () => string[];
144
- dependencies: [TreeViewRootSelector<UseTreeViewExpansionSignature>];
145
- recomputations: () => number;
146
- resetRecomputations: () => void;
147
- dependencyRecomputations: () => number;
148
- resetDependencyRecomputations: () => void;
149
- } & {
150
- memoize: typeof import("reselect").weakMapMemoize;
151
- argsMemoize: typeof import("reselect").weakMapMemoize;
152
- }];
153
- recomputations: () => number;
154
- resetRecomputations: () => void;
155
- dependencyRecomputations: () => number;
156
- resetDependencyRecomputations: () => void;
157
- } & {
158
- memoize: typeof import("reselect").weakMapMemoize;
159
- argsMemoize: typeof import("reselect").weakMapMemoize;
160
- }, (_: any, itemId: string) => string];
161
- recomputations: () => number;
162
- resetRecomputations: () => void;
163
- dependencyRecomputations: () => number;
164
- resetDependencyRecomputations: () => void;
165
- } & {
166
- memoize: typeof import("reselect").weakMapMemoize;
167
- argsMemoize: typeof import("reselect").weakMapMemoize;
168
- };
169
- /**
170
- * Check if an item is expandable.
171
- * @param {TreeViewState<[UseTreeViewItemsSignature]>} state The state of the tree view.
172
- * @returns {boolean} `true` if the item is expandable, `false` otherwise.
173
- */
174
- export declare const selectorIsItemExpandable: ((state: any, itemId: string | null) => boolean) & {
175
- clearCache: () => void;
176
- resultsCount: () => number;
177
- resetResultsCount: () => void;
178
- } & {
179
- resultFunc: (resultFuncArgs_0: import("../../index.js").TreeViewItemMeta | null) => boolean;
180
- memoizedResultFunc: ((resultFuncArgs_0: import("../../index.js").TreeViewItemMeta | null) => boolean) & {
181
- clearCache: () => void;
182
- resultsCount: () => number;
183
- resetResultsCount: () => void;
184
- };
185
- lastResult: () => boolean;
186
- dependencies: [((state: any, itemId: string | null) => import("../../index.js").TreeViewItemMeta | null) & {
187
- clearCache: () => void;
188
- resultsCount: () => number;
189
- resetResultsCount: () => void;
190
- } & {
191
- resultFunc: (resultFuncArgs_0: {
192
- [itemId: string]: import("../../index.js").TreeViewItemMeta;
193
- }, resultFuncArgs_1: string | null) => import("../../index.js").TreeViewItemMeta | null;
194
- memoizedResultFunc: ((resultFuncArgs_0: {
195
- [itemId: string]: import("../../index.js").TreeViewItemMeta;
196
- }, resultFuncArgs_1: string | null) => import("../../index.js").TreeViewItemMeta | null) & {
197
- clearCache: () => void;
198
- resultsCount: () => number;
199
- resetResultsCount: () => void;
200
- };
201
- lastResult: () => import("../../index.js").TreeViewItemMeta | null;
202
- dependencies: [((state: import("../../corePlugins/useTreeViewId/useTreeViewId.types.js").UseTreeViewIdState & import("../useTreeViewItems/index.js").UseTreeViewItemsState<import("../../../index.js").TreeViewDefaultItemModelProperties> & Partial<{}> & {
203
- cacheKey: import("../../models/index.js").TreeViewStateCacheKey;
204
- }) => {
205
- [itemId: string]: import("../../index.js").TreeViewItemMeta;
206
- }) & {
207
- clearCache: () => void;
208
- resultsCount: () => number;
209
- resetResultsCount: () => void;
210
- } & {
211
- resultFunc: (resultFuncArgs_0: {
212
- disabledItemsFocusable: boolean;
213
- itemModelLookup: {
214
- [itemId: string]: import("../../../index.js").TreeViewBaseItem<import("../../../index.js").TreeViewDefaultItemModelProperties>;
215
- };
216
- itemMetaLookup: {
217
- [itemId: string]: import("../../index.js").TreeViewItemMeta;
218
- };
219
- itemOrderedChildrenIdsLookup: {
220
- [parentItemId: string]: string[];
221
- };
222
- itemChildrenIndexesLookup: {
223
- [parentItemId: string]: {
224
- [itemId: string]: number;
225
- };
226
- };
227
- loading: boolean;
228
- error: Error | null;
229
- }) => {
230
- [itemId: string]: import("../../index.js").TreeViewItemMeta;
231
- };
232
- memoizedResultFunc: ((resultFuncArgs_0: {
233
- disabledItemsFocusable: boolean;
234
- itemModelLookup: {
235
- [itemId: string]: import("../../../index.js").TreeViewBaseItem<import("../../../index.js").TreeViewDefaultItemModelProperties>;
236
- };
237
- itemMetaLookup: {
238
- [itemId: string]: import("../../index.js").TreeViewItemMeta;
239
- };
240
- itemOrderedChildrenIdsLookup: {
241
- [parentItemId: string]: string[];
242
- };
243
- itemChildrenIndexesLookup: {
244
- [parentItemId: string]: {
245
- [itemId: string]: number;
246
- };
247
- };
248
- loading: boolean;
249
- error: Error | null;
250
- }) => {
251
- [itemId: string]: import("../../index.js").TreeViewItemMeta;
252
- }) & {
253
- clearCache: () => void;
254
- resultsCount: () => number;
255
- resetResultsCount: () => void;
256
- };
257
- lastResult: () => {
258
- [itemId: string]: import("../../index.js").TreeViewItemMeta;
259
- };
260
- dependencies: [TreeViewRootSelector<import("../useTreeViewItems/index.js").UseTreeViewItemsSignature>];
261
- recomputations: () => number;
262
- resetRecomputations: () => void;
263
- dependencyRecomputations: () => number;
264
- resetDependencyRecomputations: () => void;
265
- } & {
266
- memoize: typeof import("reselect").weakMapMemoize;
267
- argsMemoize: typeof import("reselect").weakMapMemoize;
268
- }, (_: any, itemId: string | null) => string | null];
269
- recomputations: () => number;
270
- resetRecomputations: () => void;
271
- dependencyRecomputations: () => number;
272
- resetDependencyRecomputations: () => void;
273
- } & {
274
- memoize: typeof import("reselect").weakMapMemoize;
275
- argsMemoize: typeof import("reselect").weakMapMemoize;
276
- }];
277
- recomputations: () => number;
278
- resetRecomputations: () => void;
279
- dependencyRecomputations: () => number;
280
- resetDependencyRecomputations: () => void;
281
- } & {
282
- memoize: typeof import("reselect").weakMapMemoize;
283
- argsMemoize: typeof import("reselect").weakMapMemoize;
284
- };
285
- /**
286
- * Get the slot that triggers the item's expansion when clicked.
287
- * @param {TreeViewState<[UseTreeViewExpansionSignature]>} state The state of the tree view.
288
- * @returns {'content' | 'iconContainer'} The slot that triggers the item's expansion when clicked. Is `null` if the item is not expandable.
289
- */
290
- export declare const selectorItemExpansionTrigger: ((state: import("../../corePlugins/useTreeViewId/useTreeViewId.types.js").UseTreeViewIdState & import("./useTreeViewExpansion.types.js").UseTreeViewExpansionState & Partial<{}> & {
291
- cacheKey: import("../../models/index.js").TreeViewStateCacheKey;
292
- }) => "content" | "iconContainer") & {
293
- clearCache: () => void;
294
- resultsCount: () => number;
295
- resetResultsCount: () => void;
296
- } & {
297
- resultFunc: (resultFuncArgs_0: {
298
- expandedItems: string[];
299
- expansionTrigger: "content" | "iconContainer";
300
- }) => "content" | "iconContainer";
301
- memoizedResultFunc: ((resultFuncArgs_0: {
302
- expandedItems: string[];
303
- expansionTrigger: "content" | "iconContainer";
304
- }) => "content" | "iconContainer") & {
305
- clearCache: () => void;
306
- resultsCount: () => number;
307
- resetResultsCount: () => void;
308
- };
309
- lastResult: () => "content" | "iconContainer";
310
- dependencies: [TreeViewRootSelector<UseTreeViewExpansionSignature>];
311
- recomputations: () => number;
312
- resetRecomputations: () => void;
313
- dependencyRecomputations: () => number;
314
- resetDependencyRecomputations: () => void;
315
- } & {
316
- memoize: typeof import("reselect").weakMapMemoize;
317
- argsMemoize: typeof import("reselect").weakMapMemoize;
3
+ export declare const expansionSelectors: {
4
+ /**
5
+ * Gets the expanded items as provided to the component.
6
+ */
7
+ expandedItemsRaw: (state: TreeViewState<[UseTreeViewExpansionSignature]>) => string[];
8
+ /**
9
+ * Get the expanded items as a Map.
10
+ * @param {TreeViewState<[UseTreeViewExpansionSignature]>} state The state of the tree view.
11
+ * @returns {TreeViewExpansionValue} The expanded items as a Map.
12
+ */
13
+ expandedItemsMap: (args_0: import("../../corePlugins/useTreeViewId/useTreeViewId.types.js").UseTreeViewIdState & import("./useTreeViewExpansion.types.js").UseTreeViewExpansionState & Partial<{}>) => Map<string, true>;
14
+ /**
15
+ * Gets the slot that triggers the item's expansion when clicked.
16
+ */
17
+ triggerSlot: (state: TreeViewState<[UseTreeViewExpansionSignature]>) => "content" | "iconContainer";
18
+ /**
19
+ * Checks whether an item is expanded.
20
+ */
21
+ isItemExpanded: (args_0: import("../../corePlugins/useTreeViewId/useTreeViewId.types.js").UseTreeViewIdState & import("./useTreeViewExpansion.types.js").UseTreeViewExpansionState & Partial<{}>, itemId: string) => boolean;
22
+ /**
23
+ * Checks whether an item is expandable.
24
+ */
25
+ isItemExpandable: (args_0: import("../../corePlugins/useTreeViewId/useTreeViewId.types.js").UseTreeViewIdState & import("../useTreeViewItems/index.js").UseTreeViewItemsState<import("../../../index.js").TreeViewDefaultItemModelProperties> & Partial<{}>, _itemId: string) => boolean;
318
26
  };
@@ -1,44 +1,33 @@
1
- import { createSelector } from "../../utils/selectors.js";
2
- import { selectorItemMeta } from "../useTreeViewItems/useTreeViewItems.selectors.js";
3
- const selectorExpansion = state => state.expansion;
4
-
5
- /**
6
- * Get the expanded items.
7
- * @param {TreeViewState<[UseTreeViewExpansionSignature]>} state The state of the tree view.
8
- * @returns {TreeViewItemId[]} The expanded items.
9
- */
10
- export const selectorExpandedItems = createSelector([selectorExpansion], expansionState => expansionState.expandedItems);
11
-
12
- /**
13
- * Get the expanded items as a Map.
14
- * @param {TreeViewState<[UseTreeViewExpansionSignature]>} state The state of the tree view.
15
- * @returns {TreeViewExpansionValue} The expanded items as a Map.
16
- */
17
- export const selectorExpandedItemsMap = createSelector([selectorExpandedItems], expandedItems => {
1
+ import { createSelector, createSelectorMemoized } from '@mui/x-internals/store';
2
+ import { itemsSelectors } from "../useTreeViewItems/useTreeViewItems.selectors.js";
3
+ const expandedItemMapSelector = createSelectorMemoized(state => state.expansion.expandedItems, expandedItems => {
18
4
  const expandedItemsMap = new Map();
19
5
  expandedItems.forEach(id => {
20
6
  expandedItemsMap.set(id, true);
21
7
  });
22
8
  return expandedItemsMap;
23
9
  });
24
-
25
- /**
26
- * Check if an item is expanded.
27
- * @param {TreeViewState<[UseTreeViewExpansionSignature]>} state The state of the tree view.
28
- * @returns {boolean} `true` if the item is expanded, `false` otherwise.
29
- */
30
- export const selectorIsItemExpanded = createSelector([selectorExpandedItemsMap, (_, itemId) => itemId], (expandedItemsMap, itemId) => expandedItemsMap.has(itemId));
31
-
32
- /**
33
- * Check if an item is expandable.
34
- * @param {TreeViewState<[UseTreeViewItemsSignature]>} state The state of the tree view.
35
- * @returns {boolean} `true` if the item is expandable, `false` otherwise.
36
- */
37
- export const selectorIsItemExpandable = createSelector([selectorItemMeta], itemMeta => itemMeta?.expandable ?? false);
38
-
39
- /**
40
- * Get the slot that triggers the item's expansion when clicked.
41
- * @param {TreeViewState<[UseTreeViewExpansionSignature]>} state The state of the tree view.
42
- * @returns {'content' | 'iconContainer'} The slot that triggers the item's expansion when clicked. Is `null` if the item is not expandable.
43
- */
44
- export const selectorItemExpansionTrigger = createSelector([selectorExpansion], expansionState => expansionState.expansionTrigger);
10
+ export const expansionSelectors = {
11
+ /**
12
+ * Gets the expanded items as provided to the component.
13
+ */
14
+ expandedItemsRaw: createSelector(state => state.expansion.expandedItems),
15
+ /**
16
+ * Get the expanded items as a Map.
17
+ * @param {TreeViewState<[UseTreeViewExpansionSignature]>} state The state of the tree view.
18
+ * @returns {TreeViewExpansionValue} The expanded items as a Map.
19
+ */
20
+ expandedItemsMap: expandedItemMapSelector,
21
+ /**
22
+ * Gets the slot that triggers the item's expansion when clicked.
23
+ */
24
+ triggerSlot: createSelector(state => state.expansion.expansionTrigger),
25
+ /**
26
+ * Checks whether an item is expanded.
27
+ */
28
+ isItemExpanded: createSelector(expandedItemMapSelector, (expandedItemsMap, itemId) => expandedItemsMap.has(itemId)),
29
+ /**
30
+ * Checks whether an item is expandable.
31
+ */
32
+ isItemExpandable: createSelector(itemsSelectors.itemMeta, (itemMeta, _itemId) => itemMeta?.expandable ?? false)
33
+ };
@@ -17,8 +17,14 @@ export interface UseTreeViewExpansionPublicAPI {
17
17
  event?: React.SyntheticEvent;
18
18
  shouldBeExpanded?: boolean;
19
19
  }) => void;
20
+ /**
21
+ * Check if an item is expanded.
22
+ * @param {TreeViewItemId} itemId The id of the item to check.
23
+ * @returns {boolean} `true` if the item is expanded, `false` otherwise.
24
+ */
25
+ isItemExpanded: (itemId: TreeViewItemId) => boolean;
20
26
  }
21
- export interface UseTreeViewExpansionInstance extends UseTreeViewExpansionPublicAPI {
27
+ export interface UseTreeViewExpansionInstance extends Omit<UseTreeViewExpansionPublicAPI, 'isItemExpanded'> {
22
28
  /**
23
29
  * Expand all the siblings (i.e.: the items that have the same parent) of a given item.
24
30
  * @param {React.SyntheticEvent} event The DOM event that triggered the change.
@@ -1,2 +1,3 @@
1
1
  export { useTreeViewFocus } from "./useTreeViewFocus.js";
2
- export type { UseTreeViewFocusSignature, UseTreeViewFocusParameters, UseTreeViewFocusParametersWithDefaults } from "./useTreeViewFocus.types.js";
2
+ export type { UseTreeViewFocusSignature, UseTreeViewFocusParameters, UseTreeViewFocusParametersWithDefaults } from "./useTreeViewFocus.types.js";
3
+ export { focusSelectors } from "./useTreeViewFocus.selectors.js";
@@ -1 +1,2 @@
1
- export { useTreeViewFocus } from "./useTreeViewFocus.js";
1
+ export { useTreeViewFocus } from "./useTreeViewFocus.js";
2
+ export { focusSelectors } from "./useTreeViewFocus.selectors.js";
@@ -1,30 +1,26 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import useEventCallback from '@mui/utils/useEventCallback';
3
3
  import { useInstanceEventHandler } from "../../hooks/useInstanceEventHandler.js";
4
- import { selectorDefaultFocusableItemId, selectorFocusedItemId } from "./useTreeViewFocus.selectors.js";
5
- import { selectorIsItemExpanded } from "../useTreeViewExpansion/useTreeViewExpansion.selectors.js";
6
- import { selectorItemMeta } from "../useTreeViewItems/useTreeViewItems.selectors.js";
4
+ import { focusSelectors } from "./useTreeViewFocus.selectors.js";
5
+ import { expansionSelectors } from "../useTreeViewExpansion/useTreeViewExpansion.selectors.js";
6
+ import { itemsSelectors } from "../useTreeViewItems/useTreeViewItems.selectors.js";
7
7
  export const useTreeViewFocus = ({
8
8
  instance,
9
9
  params,
10
10
  store
11
11
  }) => {
12
12
  const setFocusedItemId = useEventCallback(itemId => {
13
- store.update(prevState => {
14
- const focusedItemId = selectorFocusedItemId(prevState);
15
- if (focusedItemId === itemId) {
16
- return prevState;
17
- }
18
- return _extends({}, prevState, {
19
- focus: _extends({}, prevState.focus, {
20
- focusedItemId: itemId
21
- })
22
- });
23
- });
13
+ const focusedItemId = focusSelectors.focusedItemId(store.state);
14
+ if (focusedItemId === itemId) {
15
+ return;
16
+ }
17
+ store.set('focus', _extends({}, store.state.focus, {
18
+ focusedItemId: itemId
19
+ }));
24
20
  });
25
21
  const isItemVisible = itemId => {
26
- const itemMeta = selectorItemMeta(store.value, itemId);
27
- return itemMeta && (itemMeta.parentId == null || selectorIsItemExpanded(store.value, itemMeta.parentId));
22
+ const itemMeta = itemsSelectors.itemMeta(store.state, itemId);
23
+ return itemMeta && (itemMeta.parentId == null || expansionSelectors.isItemExpanded(store.state, itemMeta.parentId));
28
24
  };
29
25
  const innerFocusItem = (event, itemId) => {
30
26
  const itemElement = instance.getItemDOMElement(itemId);
@@ -43,11 +39,11 @@ export const useTreeViewFocus = ({
43
39
  }
44
40
  });
45
41
  const removeFocusedItem = useEventCallback(() => {
46
- const focusedItemId = selectorFocusedItemId(store.value);
42
+ const focusedItemId = focusSelectors.focusedItemId(store.state);
47
43
  if (focusedItemId == null) {
48
44
  return;
49
45
  }
50
- const itemMeta = selectorItemMeta(store.value, focusedItemId);
46
+ const itemMeta = itemsSelectors.itemMeta(store.state, focusedItemId);
51
47
  if (itemMeta) {
52
48
  const itemElement = instance.getItemDOMElement(focusedItemId);
53
49
  if (itemElement) {
@@ -59,8 +55,8 @@ export const useTreeViewFocus = ({
59
55
  useInstanceEventHandler(instance, 'removeItem', ({
60
56
  id
61
57
  }) => {
62
- const focusedItemId = selectorFocusedItemId(store.value);
63
- const defaultFocusableItemId = selectorDefaultFocusableItemId(store.value);
58
+ const focusedItemId = focusSelectors.focusedItemId(store.state);
59
+ const defaultFocusableItemId = focusSelectors.defaultFocusableItemId(store.state);
64
60
  if (focusedItemId === id && defaultFocusableItemId != null) {
65
61
  innerFocusItem(null, defaultFocusableItemId);
66
62
  }
@@ -72,7 +68,7 @@ export const useTreeViewFocus = ({
72
68
  }
73
69
 
74
70
  // if the event bubbled (which is React specific) we don't want to steal focus
75
- const defaultFocusableItemId = selectorDefaultFocusableItemId(store.value);
71
+ const defaultFocusableItemId = focusSelectors.defaultFocusableItemId(store.state);
76
72
  if (event.target === event.currentTarget && defaultFocusableItemId != null) {
77
73
  innerFocusItem(event, defaultFocusableItemId);
78
74
  }