@mui/x-tree-view 9.11.0 → 9.13.0
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 +317 -0
- package/RichTreeView/RichTreeView.js +30 -25
- package/RichTreeView/RichTreeView.mjs +30 -25
- package/RichTreeView/RichTreeView.types.d.mts +27 -1
- package/RichTreeView/RichTreeView.types.d.ts +27 -1
- package/RichTreeView/richTreeViewClasses.d.mts +4 -1
- package/RichTreeView/richTreeViewClasses.d.ts +4 -1
- package/RichTreeView/richTreeViewClasses.js +1 -1
- package/RichTreeView/richTreeViewClasses.mjs +1 -1
- package/RichTreeView/useExtractRichTreeViewParameters.d.mts +1 -0
- package/RichTreeView/useExtractRichTreeViewParameters.d.ts +1 -0
- package/RichTreeView/useExtractRichTreeViewParameters.js +6 -3
- package/RichTreeView/useExtractRichTreeViewParameters.mjs +6 -3
- package/SimpleTreeView/simpleTreeViewClasses.d.mts +1 -1
- package/SimpleTreeView/simpleTreeViewClasses.d.ts +1 -1
- package/TreeItem/TreeItem.js +2 -1
- package/TreeItem/TreeItem.mjs +2 -1
- package/TreeItemLoader/TreeItemLoader.d.mts +20 -0
- package/TreeItemLoader/TreeItemLoader.d.ts +20 -0
- package/TreeItemLoader/TreeItemLoader.js +152 -0
- package/TreeItemLoader/TreeItemLoader.mjs +146 -0
- package/TreeItemLoader/TreeItemLoader.types.d.mts +36 -0
- package/TreeItemLoader/TreeItemLoader.types.d.ts +36 -0
- package/TreeItemLoader/TreeItemLoader.types.js +5 -0
- package/TreeItemLoader/TreeItemLoader.types.mjs +1 -0
- package/TreeItemLoader/TreeItemLoaderContext.d.mts +24 -0
- package/TreeItemLoader/TreeItemLoaderContext.d.ts +24 -0
- package/TreeItemLoader/TreeItemLoaderContext.js +22 -0
- package/TreeItemLoader/TreeItemLoaderContext.mjs +16 -0
- package/TreeItemLoader/index.d.mts +3 -0
- package/TreeItemLoader/index.d.ts +3 -0
- package/TreeItemLoader/index.js +34 -0
- package/TreeItemLoader/index.mjs +2 -0
- package/TreeItemLoader/treeItemLoaderClasses.d.mts +13 -0
- package/TreeItemLoader/treeItemLoaderClasses.d.ts +13 -0
- package/TreeItemLoader/treeItemLoaderClasses.js +14 -0
- package/TreeItemLoader/treeItemLoaderClasses.mjs +6 -0
- package/index.d.mts +1 -0
- package/index.d.ts +1 -0
- package/index.js +12 -1
- package/index.mjs +2 -1
- package/internals/MinimalTreeViewStore/MinimalTreeViewStore.js +2 -2
- package/internals/MinimalTreeViewStore/MinimalTreeViewStore.mjs +3 -3
- package/internals/MinimalTreeViewStore/MinimalTreeViewStore.types.d.mts +4 -0
- package/internals/MinimalTreeViewStore/MinimalTreeViewStore.types.d.ts +4 -0
- package/internals/MinimalTreeViewStore/MinimalTreeViewStore.utils.d.mts +1 -2
- package/internals/MinimalTreeViewStore/MinimalTreeViewStore.utils.d.ts +1 -2
- package/internals/MinimalTreeViewStore/MinimalTreeViewStore.utils.js +2 -9
- package/internals/MinimalTreeViewStore/MinimalTreeViewStore.utils.mjs +2 -7
- package/internals/TreeViewProvider/TreeViewProvider.js +7 -3
- package/internals/TreeViewProvider/TreeViewProvider.mjs +7 -3
- package/internals/TreeViewProvider/TreeViewProvider.types.d.mts +3 -3
- package/internals/TreeViewProvider/TreeViewProvider.types.d.ts +3 -3
- package/internals/TreeViewProvider/TreeViewStyleContext.d.mts +30 -2
- package/internals/TreeViewProvider/TreeViewStyleContext.d.ts +30 -2
- package/internals/TreeViewProvider/TreeViewStyleContext.js +12 -0
- package/internals/TreeViewProvider/TreeViewStyleContext.mjs +13 -0
- package/internals/components/RichTreeViewItems.js +59 -2
- package/internals/components/RichTreeViewItems.mjs +59 -2
- package/internals/components/RichTreeViewLoading.d.mts +97 -0
- package/internals/components/RichTreeViewLoading.d.ts +97 -0
- package/internals/components/RichTreeViewLoading.js +171 -0
- package/internals/components/RichTreeViewLoading.mjs +160 -0
- package/internals/constants.d.mts +6 -0
- package/internals/constants.d.ts +6 -0
- package/internals/constants.js +12 -0
- package/internals/constants.mjs +6 -0
- package/internals/hooks/useTreeViewStore.d.mts +1 -1
- package/internals/hooks/useTreeViewStore.d.ts +1 -1
- package/internals/hooks/useTreeViewStore.js +7 -3
- package/internals/hooks/useTreeViewStore.mjs +7 -3
- package/internals/index.d.mts +2 -0
- package/internals/index.d.ts +2 -0
- package/internals/index.js +13 -0
- package/internals/index.mjs +1 -0
- package/internals/plugins/expansion/selectors.d.mts +3 -2
- package/internals/plugins/expansion/selectors.d.ts +3 -2
- package/internals/plugins/expansion/selectors.js +4 -4
- package/internals/plugins/expansion/selectors.mjs +5 -5
- package/internals/plugins/focus/selectors.d.mts +3 -2
- package/internals/plugins/focus/selectors.d.ts +3 -2
- package/internals/plugins/focus/selectors.js +3 -3
- package/internals/plugins/focus/selectors.mjs +4 -4
- package/internals/plugins/id/selectors.d.mts +6 -3
- package/internals/plugins/id/selectors.d.ts +6 -3
- package/internals/plugins/id/selectors.js +4 -5
- package/internals/plugins/id/selectors.mjs +4 -5
- package/internals/plugins/items/selectors.d.mts +9 -8
- package/internals/plugins/items/selectors.d.ts +9 -8
- package/internals/plugins/items/selectors.js +15 -16
- package/internals/plugins/items/selectors.mjs +15 -16
- package/internals/plugins/labelEditing/selectors.d.mts +3 -2
- package/internals/plugins/labelEditing/selectors.d.ts +3 -2
- package/internals/plugins/labelEditing/selectors.js +6 -5
- package/internals/plugins/labelEditing/selectors.mjs +6 -5
- package/internals/plugins/lazyLoading/selectors.d.mts +9 -3
- package/internals/plugins/lazyLoading/selectors.d.ts +9 -3
- package/internals/plugins/lazyLoading/selectors.js +10 -6
- package/internals/plugins/lazyLoading/selectors.mjs +10 -6
- package/internals/plugins/lazyLoading/types.d.mts +5 -1
- package/internals/plugins/lazyLoading/types.d.ts +5 -1
- package/internals/plugins/selection/selectors.d.mts +15 -9
- package/internals/plugins/selection/selectors.d.ts +15 -9
- package/internals/plugins/selection/selectors.js +12 -12
- package/internals/plugins/selection/selectors.mjs +13 -13
- package/package.json +19 -7
- package/useTreeItem/useTreeItem.js +3 -3
- package/useTreeItem/useTreeItem.mjs +3 -3
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var _exportNames = {
|
|
7
|
+
TreeItemLoader: true,
|
|
8
|
+
TreeItemLoaderRoot: true
|
|
9
|
+
};
|
|
10
|
+
Object.defineProperty(exports, "TreeItemLoader", {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function () {
|
|
13
|
+
return _TreeItemLoader.TreeItemLoader;
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
Object.defineProperty(exports, "TreeItemLoaderRoot", {
|
|
17
|
+
enumerable: true,
|
|
18
|
+
get: function () {
|
|
19
|
+
return _TreeItemLoader.TreeItemLoaderRoot;
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
var _TreeItemLoader = require("./TreeItemLoader");
|
|
23
|
+
var _treeItemLoaderClasses = require("./treeItemLoaderClasses");
|
|
24
|
+
Object.keys(_treeItemLoaderClasses).forEach(function (key) {
|
|
25
|
+
if (key === "default" || key === "__esModule") return;
|
|
26
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
27
|
+
if (key in exports && exports[key] === _treeItemLoaderClasses[key]) return;
|
|
28
|
+
Object.defineProperty(exports, key, {
|
|
29
|
+
enumerable: true,
|
|
30
|
+
get: function () {
|
|
31
|
+
return _treeItemLoaderClasses[key];
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
});
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface TreeItemLoaderClasses {
|
|
2
|
+
/** Styles applied to the root element. */
|
|
3
|
+
root: string;
|
|
4
|
+
/** Styles applied to the icon gutter element of the default content. */
|
|
5
|
+
iconContainer: string;
|
|
6
|
+
/** Styles applied to the checkbox placeholder element of the default content. */
|
|
7
|
+
checkbox: string;
|
|
8
|
+
/** Styles applied to the label placeholder element of the default content. */
|
|
9
|
+
label: string;
|
|
10
|
+
}
|
|
11
|
+
export type TreeItemLoaderClassKey = keyof TreeItemLoaderClasses;
|
|
12
|
+
export declare function getTreeItemLoaderUtilityClass(slot: string): string;
|
|
13
|
+
export declare const treeItemLoaderClasses: TreeItemLoaderClasses;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface TreeItemLoaderClasses {
|
|
2
|
+
/** Styles applied to the root element. */
|
|
3
|
+
root: string;
|
|
4
|
+
/** Styles applied to the icon gutter element of the default content. */
|
|
5
|
+
iconContainer: string;
|
|
6
|
+
/** Styles applied to the checkbox placeholder element of the default content. */
|
|
7
|
+
checkbox: string;
|
|
8
|
+
/** Styles applied to the label placeholder element of the default content. */
|
|
9
|
+
label: string;
|
|
10
|
+
}
|
|
11
|
+
export type TreeItemLoaderClassKey = keyof TreeItemLoaderClasses;
|
|
12
|
+
export declare function getTreeItemLoaderUtilityClass(slot: string): string;
|
|
13
|
+
export declare const treeItemLoaderClasses: TreeItemLoaderClasses;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.getTreeItemLoaderUtilityClass = getTreeItemLoaderUtilityClass;
|
|
8
|
+
exports.treeItemLoaderClasses = void 0;
|
|
9
|
+
var _generateUtilityClass = _interopRequireDefault(require("@mui/utils/generateUtilityClass"));
|
|
10
|
+
var _generateUtilityClasses = _interopRequireDefault(require("@mui/utils/generateUtilityClasses"));
|
|
11
|
+
function getTreeItemLoaderUtilityClass(slot) {
|
|
12
|
+
return (0, _generateUtilityClass.default)('MuiTreeItemLoader', slot);
|
|
13
|
+
}
|
|
14
|
+
const treeItemLoaderClasses = exports.treeItemLoaderClasses = (0, _generateUtilityClasses.default)('MuiTreeItemLoader', ['root', 'iconContainer', 'checkbox', 'label']);
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import generateUtilityClass from '@mui/utils/generateUtilityClass';
|
|
2
|
+
import generateUtilityClasses from '@mui/utils/generateUtilityClasses';
|
|
3
|
+
export function getTreeItemLoaderUtilityClass(slot) {
|
|
4
|
+
return generateUtilityClass('MuiTreeItemLoader', slot);
|
|
5
|
+
}
|
|
6
|
+
export const treeItemLoaderClasses = generateUtilityClasses('MuiTreeItemLoader', ['root', 'iconContainer', 'checkbox', 'label']);
|
package/index.d.mts
CHANGED
|
@@ -6,6 +6,7 @@ export * from "./TreeItemIcon/index.mjs";
|
|
|
6
6
|
export * from "./TreeItemProvider/index.mjs";
|
|
7
7
|
export * from "./TreeItemDragAndDropOverlay/index.mjs";
|
|
8
8
|
export * from "./TreeItemLabelInput/index.mjs";
|
|
9
|
+
export * from "./TreeItemLoader/index.mjs";
|
|
9
10
|
export * from "./models/index.mjs";
|
|
10
11
|
export * from "./icons/index.mjs";
|
|
11
12
|
export * from "./hooks/index.mjs";
|
package/index.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export * from "./TreeItemIcon/index.js";
|
|
|
6
6
|
export * from "./TreeItemProvider/index.js";
|
|
7
7
|
export * from "./TreeItemDragAndDropOverlay/index.js";
|
|
8
8
|
export * from "./TreeItemLabelInput/index.js";
|
|
9
|
+
export * from "./TreeItemLoader/index.js";
|
|
9
10
|
export * from "./models/index.js";
|
|
10
11
|
export * from "./icons/index.js";
|
|
11
12
|
export * from "./hooks/index.js";
|
package/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @mui/x-tree-view v9.
|
|
2
|
+
* @mui/x-tree-view v9.13.0
|
|
3
3
|
*
|
|
4
4
|
* @license MIT
|
|
5
5
|
* This source code is licensed under the MIT license found in the
|
|
@@ -98,6 +98,17 @@ Object.keys(_TreeItemLabelInput).forEach(function (key) {
|
|
|
98
98
|
}
|
|
99
99
|
});
|
|
100
100
|
});
|
|
101
|
+
var _TreeItemLoader = require("./TreeItemLoader");
|
|
102
|
+
Object.keys(_TreeItemLoader).forEach(function (key) {
|
|
103
|
+
if (key === "default" || key === "__esModule") return;
|
|
104
|
+
if (key in exports && exports[key] === _TreeItemLoader[key]) return;
|
|
105
|
+
Object.defineProperty(exports, key, {
|
|
106
|
+
enumerable: true,
|
|
107
|
+
get: function () {
|
|
108
|
+
return _TreeItemLoader[key];
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
});
|
|
101
112
|
var _models = require("./models");
|
|
102
113
|
Object.keys(_models).forEach(function (key) {
|
|
103
114
|
if (key === "default" || key === "__esModule") return;
|
package/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @mui/x-tree-view v9.
|
|
2
|
+
* @mui/x-tree-view v9.13.0
|
|
3
3
|
*
|
|
4
4
|
* @license MIT
|
|
5
5
|
* This source code is licensed under the MIT license found in the
|
|
@@ -16,6 +16,7 @@ export * from "./TreeItemIcon/index.mjs";
|
|
|
16
16
|
export * from "./TreeItemProvider/index.mjs";
|
|
17
17
|
export * from "./TreeItemDragAndDropOverlay/index.mjs";
|
|
18
18
|
export * from "./TreeItemLabelInput/index.mjs";
|
|
19
|
+
export * from "./TreeItemLoader/index.mjs";
|
|
19
20
|
export * from "./models/index.mjs";
|
|
20
21
|
export * from "./icons/index.mjs";
|
|
21
22
|
export * from "./hooks/index.mjs";
|
|
@@ -77,8 +77,8 @@ class MinimalTreeViewStore extends _store.Store {
|
|
|
77
77
|
const newMinimalState = (0, _MinimalTreeViewStore.deriveStateFromParameters)(parameters);
|
|
78
78
|
updateModel(newMinimalState, 'expandedItems', 'defaultExpandedItems');
|
|
79
79
|
updateModel(newMinimalState, 'selectedItems', 'defaultSelectedItems');
|
|
80
|
-
if (this.state.
|
|
81
|
-
newMinimalState.treeId =
|
|
80
|
+
if (this.state.treeId !== parameters.defaultId) {
|
|
81
|
+
newMinimalState.treeId = parameters.defaultId;
|
|
82
82
|
}
|
|
83
83
|
if (!this.mapper.shouldIgnoreItemsStateUpdate(parameters) && _TreeViewItemsPlugin.TreeViewItemsPlugin.shouldRebuildItemsState(parameters, this.parameters)) {
|
|
84
84
|
Object.assign(newMinimalState, _TreeViewItemsPlugin.TreeViewItemsPlugin.buildItemsStateIfNeeded(parameters));
|
|
@@ -3,7 +3,7 @@ import { Store } from '@mui/x-internals/store';
|
|
|
3
3
|
import { warnOnce } from '@mui/x-internals/warning';
|
|
4
4
|
import { EventManager } from '@mui/x-internals/EventManager';
|
|
5
5
|
import { DisposableStack, disposeSymbol, unwrapSuppressedErrors } from '@mui/x-internals/disposable';
|
|
6
|
-
import { createMinimalInitialState,
|
|
6
|
+
import { createMinimalInitialState, deriveStateFromParameters } from "./MinimalTreeViewStore.utils.mjs";
|
|
7
7
|
import { TimeoutManager } from "./TimeoutManager.mjs";
|
|
8
8
|
import { TreeViewKeyboardNavigationPlugin } from "../plugins/keyboardNavigation/index.mjs";
|
|
9
9
|
import { TreeViewFocusPlugin } from "../plugins/focus/TreeViewFocusPlugin.mjs";
|
|
@@ -70,8 +70,8 @@ export class MinimalTreeViewStore extends Store {
|
|
|
70
70
|
const newMinimalState = deriveStateFromParameters(parameters);
|
|
71
71
|
updateModel(newMinimalState, 'expandedItems', 'defaultExpandedItems');
|
|
72
72
|
updateModel(newMinimalState, 'selectedItems', 'defaultSelectedItems');
|
|
73
|
-
if (this.state.
|
|
74
|
-
newMinimalState.treeId =
|
|
73
|
+
if (this.state.treeId !== parameters.defaultId) {
|
|
74
|
+
newMinimalState.treeId = parameters.defaultId;
|
|
75
75
|
}
|
|
76
76
|
if (!this.mapper.shouldIgnoreItemsStateUpdate(parameters) && TreeViewItemsPlugin.shouldRebuildItemsState(parameters, this.parameters)) {
|
|
77
77
|
Object.assign(newMinimalState, TreeViewItemsPlugin.buildItemsStateIfNeeded(parameters));
|
|
@@ -88,6 +88,10 @@ export interface MinimalTreeViewState<R extends TreeViewValidItem<R>, Multiple e
|
|
|
88
88
|
itemHeight: number | null;
|
|
89
89
|
}
|
|
90
90
|
export interface MinimalTreeViewParameters<R extends TreeViewValidItem<R>, Multiple extends boolean | undefined> {
|
|
91
|
+
/**
|
|
92
|
+
* The id used to build the id attributes of the items when the `id` parameter is not provided.
|
|
93
|
+
*/
|
|
94
|
+
defaultId: string | undefined;
|
|
91
95
|
/**
|
|
92
96
|
* Whether the layout is right-to-left.
|
|
93
97
|
*/
|
|
@@ -88,6 +88,10 @@ export interface MinimalTreeViewState<R extends TreeViewValidItem<R>, Multiple e
|
|
|
88
88
|
itemHeight: number | null;
|
|
89
89
|
}
|
|
90
90
|
export interface MinimalTreeViewParameters<R extends TreeViewValidItem<R>, Multiple extends boolean | undefined> {
|
|
91
|
+
/**
|
|
92
|
+
* The id used to build the id attributes of the items when the `id` parameter is not provided.
|
|
93
|
+
*/
|
|
94
|
+
defaultId: string | undefined;
|
|
91
95
|
/**
|
|
92
96
|
* Whether the layout is right-to-left.
|
|
93
97
|
*/
|
|
@@ -17,5 +17,4 @@ export declare function deriveStateFromParameters<R extends TreeViewValidItem<R>
|
|
|
17
17
|
selectionPropagation: Readonly<{}>;
|
|
18
18
|
itemHeight: number | null;
|
|
19
19
|
};
|
|
20
|
-
export declare function createMinimalInitialState<R extends TreeViewValidItem<R>, Multiple extends boolean | undefined>(parameters: MinimalTreeViewParameters<R, Multiple>): MinimalTreeViewState<R, Multiple>;
|
|
21
|
-
export declare const createTreeViewDefaultId: () => string;
|
|
20
|
+
export declare function createMinimalInitialState<R extends TreeViewValidItem<R>, Multiple extends boolean | undefined>(parameters: MinimalTreeViewParameters<R, Multiple>): MinimalTreeViewState<R, Multiple>;
|
|
@@ -17,5 +17,4 @@ export declare function deriveStateFromParameters<R extends TreeViewValidItem<R>
|
|
|
17
17
|
selectionPropagation: Readonly<{}>;
|
|
18
18
|
itemHeight: number | null;
|
|
19
19
|
};
|
|
20
|
-
export declare function createMinimalInitialState<R extends TreeViewValidItem<R>, Multiple extends boolean | undefined>(parameters: MinimalTreeViewParameters<R, Multiple>): MinimalTreeViewState<R, Multiple>;
|
|
21
|
-
export declare const createTreeViewDefaultId: () => string;
|
|
20
|
+
export declare function createMinimalInitialState<R extends TreeViewValidItem<R>, Multiple extends boolean | undefined>(parameters: MinimalTreeViewParameters<R, Multiple>): MinimalTreeViewState<R, Multiple>;
|
|
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.createMinimalInitialState = createMinimalInitialState;
|
|
8
|
-
exports.createTreeViewDefaultId = void 0;
|
|
9
8
|
exports.deriveStateFromParameters = deriveStateFromParameters;
|
|
10
9
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
10
|
var _empty = require("@base-ui/utils/empty");
|
|
@@ -43,16 +42,10 @@ function applyModelInitialValue(controlledValue, defaultValue, fallback) {
|
|
|
43
42
|
}
|
|
44
43
|
function createMinimalInitialState(parameters) {
|
|
45
44
|
return (0, _extends2.default)({
|
|
46
|
-
treeId:
|
|
45
|
+
treeId: parameters.defaultId,
|
|
47
46
|
focusedItemId: null
|
|
48
47
|
}, deriveStateFromParameters(parameters), _items.TreeViewItemsPlugin.buildItemsStateIfNeeded(parameters), {
|
|
49
48
|
expandedItems: applyModelInitialValue(parameters.expandedItems, parameters.defaultExpandedItems, []),
|
|
50
49
|
selectedItems: applyModelInitialValue(parameters.selectedItems, parameters.defaultSelectedItems, parameters.multiSelect ? _empty.EMPTY_ARRAY : null)
|
|
51
50
|
});
|
|
52
|
-
}
|
|
53
|
-
let globalTreeViewDefaultId = 0;
|
|
54
|
-
const createTreeViewDefaultId = () => {
|
|
55
|
-
globalTreeViewDefaultId += 1;
|
|
56
|
-
return `mui-tree-view-${globalTreeViewDefaultId}`;
|
|
57
|
-
};
|
|
58
|
-
exports.createTreeViewDefaultId = createTreeViewDefaultId;
|
|
51
|
+
}
|
|
@@ -35,15 +35,10 @@ function applyModelInitialValue(controlledValue, defaultValue, fallback) {
|
|
|
35
35
|
}
|
|
36
36
|
export function createMinimalInitialState(parameters) {
|
|
37
37
|
return _extends({
|
|
38
|
-
treeId:
|
|
38
|
+
treeId: parameters.defaultId,
|
|
39
39
|
focusedItemId: null
|
|
40
40
|
}, deriveStateFromParameters(parameters), TreeViewItemsPlugin.buildItemsStateIfNeeded(parameters), {
|
|
41
41
|
expandedItems: applyModelInitialValue(parameters.expandedItems, parameters.defaultExpandedItems, []),
|
|
42
42
|
selectedItems: applyModelInitialValue(parameters.selectedItems, parameters.defaultSelectedItems, parameters.multiSelect ? EMPTY_ARRAY : null)
|
|
43
43
|
});
|
|
44
|
-
}
|
|
45
|
-
let globalTreeViewDefaultId = 0;
|
|
46
|
-
export const createTreeViewDefaultId = () => {
|
|
47
|
-
globalTreeViewDefaultId += 1;
|
|
48
|
-
return `mui-tree-view-${globalTreeViewDefaultId}`;
|
|
49
|
-
};
|
|
44
|
+
}
|
|
@@ -36,14 +36,18 @@ function TreeViewProvider(props) {
|
|
|
36
36
|
slots: {
|
|
37
37
|
collapseIcon: slots.collapseIcon,
|
|
38
38
|
expandIcon: slots.expandIcon,
|
|
39
|
-
endIcon: slots.endIcon
|
|
39
|
+
endIcon: slots.endIcon,
|
|
40
|
+
loading: slots.loading,
|
|
41
|
+
itemLoader: slots.itemLoader
|
|
40
42
|
},
|
|
41
43
|
slotProps: {
|
|
42
44
|
collapseIcon: slotProps.collapseIcon,
|
|
43
45
|
expandIcon: slotProps.expandIcon,
|
|
44
|
-
endIcon: slotProps.endIcon
|
|
46
|
+
endIcon: slotProps.endIcon,
|
|
47
|
+
loading: slotProps.loading,
|
|
48
|
+
itemLoader: slotProps.itemLoader
|
|
45
49
|
}
|
|
46
|
-
}), [classes, slots.collapseIcon, slots.expandIcon, slots.endIcon, slotProps.collapseIcon, slotProps.expandIcon, slotProps.endIcon]);
|
|
50
|
+
}), [classes, slots.collapseIcon, slots.expandIcon, slots.endIcon, slots.loading, slots.itemLoader, slotProps.collapseIcon, slotProps.expandIcon, slotProps.endIcon, slotProps.loading, slotProps.itemLoader]);
|
|
47
51
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_TreeViewContext.TreeViewContext.Provider, {
|
|
48
52
|
value: contextValue,
|
|
49
53
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_TreeViewStyleContext.TreeViewStyleContext.Provider, {
|
|
@@ -29,14 +29,18 @@ export function TreeViewProvider(props) {
|
|
|
29
29
|
slots: {
|
|
30
30
|
collapseIcon: slots.collapseIcon,
|
|
31
31
|
expandIcon: slots.expandIcon,
|
|
32
|
-
endIcon: slots.endIcon
|
|
32
|
+
endIcon: slots.endIcon,
|
|
33
|
+
loading: slots.loading,
|
|
34
|
+
itemLoader: slots.itemLoader
|
|
33
35
|
},
|
|
34
36
|
slotProps: {
|
|
35
37
|
collapseIcon: slotProps.collapseIcon,
|
|
36
38
|
expandIcon: slotProps.expandIcon,
|
|
37
|
-
endIcon: slotProps.endIcon
|
|
39
|
+
endIcon: slotProps.endIcon,
|
|
40
|
+
loading: slotProps.loading,
|
|
41
|
+
itemLoader: slotProps.itemLoader
|
|
38
42
|
}
|
|
39
|
-
}), [classes, slots.collapseIcon, slots.expandIcon, slots.endIcon, slotProps.collapseIcon, slotProps.expandIcon, slotProps.endIcon]);
|
|
43
|
+
}), [classes, slots.collapseIcon, slots.expandIcon, slots.endIcon, slots.loading, slots.itemLoader, slotProps.collapseIcon, slotProps.expandIcon, slotProps.endIcon, slotProps.loading, slotProps.itemLoader]);
|
|
40
44
|
return /*#__PURE__*/_jsx(TreeViewContext.Provider, {
|
|
41
45
|
value: contextValue,
|
|
42
46
|
children: /*#__PURE__*/_jsx(TreeViewStyleContext.Provider, {
|
|
@@ -2,7 +2,7 @@ import type * as React from 'react';
|
|
|
2
2
|
import type { disposeSymbol } from '@mui/x-internals/disposable';
|
|
3
3
|
import type { TreeItemWrapper, TreeViewItemPluginResponse, TreeViewPublicAPI, TreeViewAnyStore } from "../models/index.mjs";
|
|
4
4
|
import type { TreeItemProps } from "../../TreeItem/TreeItem.types.mjs";
|
|
5
|
-
import type { TreeViewClasses,
|
|
5
|
+
import type { TreeViewClasses, TreeViewStyleContextSlotProps, TreeViewStyleContextSlots } from "./TreeViewStyleContext.mjs";
|
|
6
6
|
import type { UseTreeViewBuildContextParameters } from "./useTreeViewBuildContext.mjs";
|
|
7
7
|
export type TreeViewItemPluginsRunner = (props: TreeItemProps) => Required<TreeViewItemPluginResponse>;
|
|
8
8
|
export type TreeViewStoreInContext<TStore extends TreeViewAnyStore> = Omit<TStore, 'setState' | 'update' | 'set' | 'updateStateFromParameters' | 'disposables' | typeof disposeSymbol | 'mountEffect' | 'registerStoreEffect' | 'itemPluginManager' | 'parameters'>;
|
|
@@ -16,6 +16,6 @@ export interface TreeViewContextValue<TStore extends TreeViewAnyStore> {
|
|
|
16
16
|
export interface TreeViewProviderProps<TStore extends TreeViewAnyStore> extends UseTreeViewBuildContextParameters<TStore> {
|
|
17
17
|
children: React.ReactNode;
|
|
18
18
|
classes: Partial<TreeViewClasses> | undefined;
|
|
19
|
-
slots:
|
|
20
|
-
slotProps:
|
|
19
|
+
slots: TreeViewStyleContextSlots | undefined;
|
|
20
|
+
slotProps: TreeViewStyleContextSlotProps | undefined;
|
|
21
21
|
}
|
|
@@ -2,7 +2,7 @@ import type * as React from 'react';
|
|
|
2
2
|
import type { disposeSymbol } from '@mui/x-internals/disposable';
|
|
3
3
|
import type { TreeItemWrapper, TreeViewItemPluginResponse, TreeViewPublicAPI, TreeViewAnyStore } from "../models/index.js";
|
|
4
4
|
import type { TreeItemProps } from "../../TreeItem/TreeItem.types.js";
|
|
5
|
-
import type { TreeViewClasses,
|
|
5
|
+
import type { TreeViewClasses, TreeViewStyleContextSlotProps, TreeViewStyleContextSlots } from "./TreeViewStyleContext.js";
|
|
6
6
|
import type { UseTreeViewBuildContextParameters } from "./useTreeViewBuildContext.js";
|
|
7
7
|
export type TreeViewItemPluginsRunner = (props: TreeItemProps) => Required<TreeViewItemPluginResponse>;
|
|
8
8
|
export type TreeViewStoreInContext<TStore extends TreeViewAnyStore> = Omit<TStore, 'setState' | 'update' | 'set' | 'updateStateFromParameters' | 'disposables' | typeof disposeSymbol | 'mountEffect' | 'registerStoreEffect' | 'itemPluginManager' | 'parameters'>;
|
|
@@ -16,6 +16,6 @@ export interface TreeViewContextValue<TStore extends TreeViewAnyStore> {
|
|
|
16
16
|
export interface TreeViewProviderProps<TStore extends TreeViewAnyStore> extends UseTreeViewBuildContextParameters<TStore> {
|
|
17
17
|
children: React.ReactNode;
|
|
18
18
|
classes: Partial<TreeViewClasses> | undefined;
|
|
19
|
-
slots:
|
|
20
|
-
slotProps:
|
|
19
|
+
slots: TreeViewStyleContextSlots | undefined;
|
|
20
|
+
slotProps: TreeViewStyleContextSlotProps | undefined;
|
|
21
21
|
}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { SlotComponentProps } from '@mui/utils/types';
|
|
2
2
|
import * as React from 'react';
|
|
3
|
+
import type { TreeItemLoaderOwnerState } from "../../TreeItemLoader/index.mjs";
|
|
4
|
+
import type { RichTreeViewLoadingSlotOwnProps, RichTreeViewLoadingSlotOwnerState } from "../components/RichTreeViewLoading.mjs";
|
|
3
5
|
export interface TreeViewClasses {
|
|
4
6
|
/** Styles applied to the root element. */
|
|
5
7
|
root: string;
|
|
@@ -23,6 +25,8 @@ export interface TreeViewClasses {
|
|
|
23
25
|
itemErrorIcon: string;
|
|
24
26
|
/** Styles applied to the item's loading icon element */
|
|
25
27
|
itemLoadingIcon: string;
|
|
28
|
+
/** Styles applied to the item loader element. */
|
|
29
|
+
itemLoader: string;
|
|
26
30
|
}
|
|
27
31
|
export interface TreeViewSlots {
|
|
28
32
|
/**
|
|
@@ -44,10 +48,34 @@ export interface TreeViewSlotProps {
|
|
|
44
48
|
expandIcon?: SlotComponentProps<'svg', {}, {}>;
|
|
45
49
|
endIcon?: SlotComponentProps<'svg', {}, {}>;
|
|
46
50
|
}
|
|
51
|
+
/**
|
|
52
|
+
* Slots stored in the style context.
|
|
53
|
+
* The loading slots only exist on the components with a loading state,
|
|
54
|
+
* so they are not part of the public `TreeViewSlots` interface.
|
|
55
|
+
*/
|
|
56
|
+
export interface TreeViewStyleContextSlots extends TreeViewSlots {
|
|
57
|
+
/**
|
|
58
|
+
* Component rendered instead of the default loading rows.
|
|
59
|
+
*/
|
|
60
|
+
loading?: React.ElementType;
|
|
61
|
+
/**
|
|
62
|
+
* Component rendered for each loading row. The default renders a skeleton row.
|
|
63
|
+
*/
|
|
64
|
+
itemLoader?: React.ElementType;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Slot props stored in the style context.
|
|
68
|
+
* The loading slot props only exist on the components with a loading state,
|
|
69
|
+
* so they are not part of the public `TreeViewSlotProps` interface.
|
|
70
|
+
*/
|
|
71
|
+
export interface TreeViewStyleContextSlotProps extends TreeViewSlotProps {
|
|
72
|
+
loading?: SlotComponentProps<'div', RichTreeViewLoadingSlotOwnProps, RichTreeViewLoadingSlotOwnerState>;
|
|
73
|
+
itemLoader?: SlotComponentProps<'li', {}, TreeItemLoaderOwnerState>;
|
|
74
|
+
}
|
|
47
75
|
export interface TreeViewStyleContextValue {
|
|
48
76
|
classes: Partial<TreeViewClasses>;
|
|
49
|
-
slots:
|
|
50
|
-
slotProps:
|
|
77
|
+
slots: TreeViewStyleContextSlots;
|
|
78
|
+
slotProps: TreeViewStyleContextSlotProps;
|
|
51
79
|
}
|
|
52
80
|
/**
|
|
53
81
|
* @ignore - internal component.
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { SlotComponentProps } from '@mui/utils/types';
|
|
2
2
|
import * as React from 'react';
|
|
3
|
+
import type { TreeItemLoaderOwnerState } from "../../TreeItemLoader/index.js";
|
|
4
|
+
import type { RichTreeViewLoadingSlotOwnProps, RichTreeViewLoadingSlotOwnerState } from "../components/RichTreeViewLoading.js";
|
|
3
5
|
export interface TreeViewClasses {
|
|
4
6
|
/** Styles applied to the root element. */
|
|
5
7
|
root: string;
|
|
@@ -23,6 +25,8 @@ export interface TreeViewClasses {
|
|
|
23
25
|
itemErrorIcon: string;
|
|
24
26
|
/** Styles applied to the item's loading icon element */
|
|
25
27
|
itemLoadingIcon: string;
|
|
28
|
+
/** Styles applied to the item loader element. */
|
|
29
|
+
itemLoader: string;
|
|
26
30
|
}
|
|
27
31
|
export interface TreeViewSlots {
|
|
28
32
|
/**
|
|
@@ -44,10 +48,34 @@ export interface TreeViewSlotProps {
|
|
|
44
48
|
expandIcon?: SlotComponentProps<'svg', {}, {}>;
|
|
45
49
|
endIcon?: SlotComponentProps<'svg', {}, {}>;
|
|
46
50
|
}
|
|
51
|
+
/**
|
|
52
|
+
* Slots stored in the style context.
|
|
53
|
+
* The loading slots only exist on the components with a loading state,
|
|
54
|
+
* so they are not part of the public `TreeViewSlots` interface.
|
|
55
|
+
*/
|
|
56
|
+
export interface TreeViewStyleContextSlots extends TreeViewSlots {
|
|
57
|
+
/**
|
|
58
|
+
* Component rendered instead of the default loading rows.
|
|
59
|
+
*/
|
|
60
|
+
loading?: React.ElementType;
|
|
61
|
+
/**
|
|
62
|
+
* Component rendered for each loading row. The default renders a skeleton row.
|
|
63
|
+
*/
|
|
64
|
+
itemLoader?: React.ElementType;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Slot props stored in the style context.
|
|
68
|
+
* The loading slot props only exist on the components with a loading state,
|
|
69
|
+
* so they are not part of the public `TreeViewSlotProps` interface.
|
|
70
|
+
*/
|
|
71
|
+
export interface TreeViewStyleContextSlotProps extends TreeViewSlotProps {
|
|
72
|
+
loading?: SlotComponentProps<'div', RichTreeViewLoadingSlotOwnProps, RichTreeViewLoadingSlotOwnerState>;
|
|
73
|
+
itemLoader?: SlotComponentProps<'li', {}, TreeItemLoaderOwnerState>;
|
|
74
|
+
}
|
|
47
75
|
export interface TreeViewStyleContextValue {
|
|
48
76
|
classes: Partial<TreeViewClasses>;
|
|
49
|
-
slots:
|
|
50
|
-
slotProps:
|
|
77
|
+
slots: TreeViewStyleContextSlots;
|
|
78
|
+
slotProps: TreeViewStyleContextSlotProps;
|
|
51
79
|
}
|
|
52
80
|
/**
|
|
53
81
|
* @ignore - internal component.
|
|
@@ -7,6 +7,18 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.useTreeViewStyleContext = exports.TreeViewStyleContext = void 0;
|
|
9
9
|
var React = _interopRequireWildcard(require("react"));
|
|
10
|
+
/**
|
|
11
|
+
* Slots stored in the style context.
|
|
12
|
+
* The loading slots only exist on the components with a loading state,
|
|
13
|
+
* so they are not part of the public `TreeViewSlots` interface.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Slot props stored in the style context.
|
|
18
|
+
* The loading slot props only exist on the components with a loading state,
|
|
19
|
+
* so they are not part of the public `TreeViewSlotProps` interface.
|
|
20
|
+
*/
|
|
21
|
+
|
|
10
22
|
/**
|
|
11
23
|
* @ignore - internal component.
|
|
12
24
|
*/
|
|
@@ -1,6 +1,19 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
import * as React from 'react';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Slots stored in the style context.
|
|
7
|
+
* The loading slots only exist on the components with a loading state,
|
|
8
|
+
* so they are not part of the public `TreeViewSlots` interface.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Slot props stored in the style context.
|
|
13
|
+
* The loading slot props only exist on the components with a loading state,
|
|
14
|
+
* so they are not part of the public `TreeViewSlotProps` interface.
|
|
15
|
+
*/
|
|
16
|
+
|
|
4
17
|
/**
|
|
5
18
|
* @ignore - internal component.
|
|
6
19
|
*/
|
|
@@ -8,8 +8,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
8
8
|
});
|
|
9
9
|
exports.RichTreeViewItem = void 0;
|
|
10
10
|
exports.RichTreeViewItems = RichTreeViewItems;
|
|
11
|
-
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
12
11
|
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
|
12
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
13
13
|
var React = _interopRequireWildcard(require("react"));
|
|
14
14
|
var _empty = require("@base-ui/utils/empty");
|
|
15
15
|
var _store = require("@mui/x-internals/store");
|
|
@@ -19,6 +19,8 @@ var _TreeItem = require("../../TreeItem");
|
|
|
19
19
|
var _items = require("../plugins/items");
|
|
20
20
|
var _TreeViewProvider = require("../TreeViewProvider");
|
|
21
21
|
var _expansion = require("../plugins/expansion");
|
|
22
|
+
var _lazyLoading = require("../plugins/lazyLoading");
|
|
23
|
+
var _RichTreeViewLoading = require("./RichTreeViewLoading");
|
|
22
24
|
var _useTreeViewRootProps = require("../hooks/useTreeViewRootProps");
|
|
23
25
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
24
26
|
const _excluded = ["ownerState"];
|
|
@@ -26,6 +28,54 @@ const RichTreeViewItemsContext = /*#__PURE__*/React.createContext(null);
|
|
|
26
28
|
if (process.env.NODE_ENV !== "production") RichTreeViewItemsContext.displayName = "RichTreeViewItemsContext";
|
|
27
29
|
const selectorNoChildren = () => _empty.EMPTY_ARRAY;
|
|
28
30
|
const selectorChildrenIdsNull = state => _items.itemsSelectors.itemOrderedChildrenIds(state, null);
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Renders the loading rows for the children of an item that lazily loads them.
|
|
34
|
+
* It only mounts while the item is loading, so the `loading` slot props are not
|
|
35
|
+
* resolved for the other items.
|
|
36
|
+
*/
|
|
37
|
+
function RichTreeViewItemLoadingChildren({
|
|
38
|
+
itemId
|
|
39
|
+
}) {
|
|
40
|
+
const {
|
|
41
|
+
store
|
|
42
|
+
} = (0, _TreeViewProvider.useTreeViewContext)();
|
|
43
|
+
const {
|
|
44
|
+
classes,
|
|
45
|
+
slots: styleSlots,
|
|
46
|
+
slotProps: styleSlotProps
|
|
47
|
+
} = (0, _TreeViewProvider.useTreeViewStyleContext)();
|
|
48
|
+
const itemDepth = (0, _store.useStore)(store, _items.itemsSelectors.itemDepth, itemId);
|
|
49
|
+
const loadingChildrenCount = (0, _store.useStore)(store, _lazyLoading.lazyLoadingSelectors.itemLoadingChildrenCount, itemId);
|
|
50
|
+
const Loading = styleSlots.loading;
|
|
51
|
+
const loadingProps = (0, _useSlotProps2.default)({
|
|
52
|
+
elementType: Loading ?? 'div',
|
|
53
|
+
externalSlotProps: styleSlotProps.loading,
|
|
54
|
+
ownerState: {
|
|
55
|
+
itemId
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
// The count reported by `getChildrenCount()` wins over `slotProps.loading.itemsCount`,
|
|
60
|
+
// which only acts as a fallback when the count is unknown.
|
|
61
|
+
const itemsCount = loadingChildrenCount > 0 ? Math.min(loadingChildrenCount, _RichTreeViewLoading.MAX_LOADING_ITEMS_COUNT) : (0, _RichTreeViewLoading.getLoadingItemsCount)(loadingProps.itemsCount);
|
|
62
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_RichTreeViewLoading.RichTreeViewLoadingContext, {
|
|
63
|
+
store: store,
|
|
64
|
+
itemDepth: itemDepth + 1,
|
|
65
|
+
children: Loading ? /*#__PURE__*/(0, _jsxRuntime.jsx)(Loading, (0, _extends2.default)({}, loadingProps, {
|
|
66
|
+
itemsCount: itemsCount
|
|
67
|
+
})) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_RichTreeViewLoading.RichTreeViewItemLoaders, {
|
|
68
|
+
classes: classes,
|
|
69
|
+
slots: {
|
|
70
|
+
itemLoader: styleSlots.itemLoader
|
|
71
|
+
},
|
|
72
|
+
slotProps: {
|
|
73
|
+
itemLoader: styleSlotProps.itemLoader
|
|
74
|
+
},
|
|
75
|
+
itemsCount: itemsCount
|
|
76
|
+
})
|
|
77
|
+
});
|
|
78
|
+
}
|
|
29
79
|
const RichTreeViewItem = exports.RichTreeViewItem = /*#__PURE__*/React.memo(function RichTreeViewItem({
|
|
30
80
|
itemSlot,
|
|
31
81
|
itemSlotProps,
|
|
@@ -38,6 +88,7 @@ const RichTreeViewItem = exports.RichTreeViewItem = /*#__PURE__*/React.memo(func
|
|
|
38
88
|
} = (0, _TreeViewProvider.useTreeViewContext)();
|
|
39
89
|
const itemMeta = (0, _store.useStore)(store, _items.itemsSelectors.itemMeta, itemId);
|
|
40
90
|
const children = (0, _store.useStore)(store, skipChildren ? selectorNoChildren : _items.itemsSelectors.itemOrderedChildrenIds, itemId);
|
|
91
|
+
const isLoadingChildren = (0, _store.useStore)(store, _lazyLoading.lazyLoadingSelectors.isItemLoading, itemId);
|
|
41
92
|
const Item = itemSlot ?? _TreeItem.TreeItem;
|
|
42
93
|
const _useSlotProps = (0, _useSlotProps2.default)({
|
|
43
94
|
elementType: Item,
|
|
@@ -53,8 +104,14 @@ const RichTreeViewItem = exports.RichTreeViewItem = /*#__PURE__*/React.memo(func
|
|
|
53
104
|
}
|
|
54
105
|
}),
|
|
55
106
|
itemProps = (0, _objectWithoutPropertiesLoose2.default)(_useSlotProps, _excluded);
|
|
107
|
+
let renderedChildren = renderItemForRichTreeView ? children?.map(renderItemForRichTreeView) : null;
|
|
108
|
+
if (isLoadingChildren && !skipChildren && (children == null || children.length === 0)) {
|
|
109
|
+
renderedChildren = /*#__PURE__*/(0, _jsxRuntime.jsx)(RichTreeViewItemLoadingChildren, {
|
|
110
|
+
itemId: itemId
|
|
111
|
+
});
|
|
112
|
+
}
|
|
56
113
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(Item, (0, _extends2.default)({}, itemProps, {
|
|
57
|
-
children:
|
|
114
|
+
children: renderedChildren
|
|
58
115
|
}));
|
|
59
116
|
}, _fastObjectShallowCompare.fastObjectShallowCompare);
|
|
60
117
|
if (process.env.NODE_ENV !== "production") RichTreeViewItem.displayName = "RichTreeViewItem";
|