@mui/x-tree-view 6.0.0-alpha.2 → 6.0.0-alpha.4
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 +162 -1
- package/README.md +3 -9
- package/TreeItem/TreeItem.d.ts +2 -2
- package/TreeItem/TreeItem.js +25 -34
- package/TreeItem/useTreeItem.js +18 -27
- package/TreeView/TreeView.d.ts +6 -3
- package/TreeView/TreeView.js +67 -710
- package/TreeView/TreeView.types.d.ts +4 -147
- package/index.d.ts +1 -0
- package/index.js +3 -2
- package/{TreeView/descendants.d.ts → internals/TreeViewProvider/DescendantProvider.d.ts} +1 -5
- package/internals/TreeViewProvider/TreeViewContext.d.ts +7 -0
- package/{TreeView → internals/TreeViewProvider}/TreeViewContext.js +8 -18
- package/internals/TreeViewProvider/TreeViewProvider.d.ts +9 -0
- package/internals/TreeViewProvider/TreeViewProvider.js +21 -0
- package/internals/TreeViewProvider/TreeViewProvider.types.d.ts +18 -0
- package/internals/TreeViewProvider/index.d.ts +2 -0
- package/internals/TreeViewProvider/index.js +1 -0
- package/internals/TreeViewProvider/useTreeViewContext.d.ts +3 -0
- package/internals/TreeViewProvider/useTreeViewContext.js +3 -0
- package/internals/corePlugins/corePlugins.d.ts +7 -0
- package/internals/corePlugins/corePlugins.js +6 -0
- package/internals/corePlugins/index.d.ts +2 -0
- package/internals/corePlugins/index.js +1 -0
- package/internals/corePlugins/useTreeViewInstanceEvents/index.d.ts +2 -0
- package/internals/corePlugins/useTreeViewInstanceEvents/index.js +1 -0
- package/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.d.ts +8 -0
- package/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.js +35 -0
- package/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.types.d.ts +21 -0
- package/internals/hooks/useInstanceEventHandler.d.ts +15 -0
- package/internals/hooks/useInstanceEventHandler.js +82 -0
- package/internals/models/events.d.ts +9 -0
- package/internals/models/helpers.d.ts +13 -0
- package/internals/models/helpers.js +1 -0
- package/internals/models/index.d.ts +3 -0
- package/internals/models/index.js +3 -0
- package/internals/models/plugin.d.ts +69 -0
- package/internals/models/plugin.js +1 -0
- package/internals/models/treeView.d.ts +23 -0
- package/internals/models/treeView.js +1 -0
- package/internals/plugins/defaultPlugins.d.ts +10 -0
- package/internals/plugins/defaultPlugins.js +9 -0
- package/internals/plugins/index.d.ts +2 -0
- package/internals/plugins/index.js +1 -0
- package/internals/plugins/useTreeViewContextValueBuilder/index.d.ts +2 -0
- package/internals/plugins/useTreeViewContextValueBuilder/index.js +1 -0
- package/internals/plugins/useTreeViewContextValueBuilder/useTreeViewContextValueBuilder.d.ts +3 -0
- package/internals/plugins/useTreeViewContextValueBuilder/useTreeViewContextValueBuilder.js +24 -0
- package/internals/plugins/useTreeViewContextValueBuilder/useTreeViewContextValueBuilder.types.d.ts +34 -0
- package/internals/plugins/useTreeViewContextValueBuilder/useTreeViewContextValueBuilder.types.js +1 -0
- package/internals/plugins/useTreeViewExpansion/index.d.ts +2 -0
- package/internals/plugins/useTreeViewExpansion/index.js +1 -0
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.d.ts +3 -0
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +63 -0
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +32 -0
- package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.js +1 -0
- package/internals/plugins/useTreeViewFocus/index.d.ts +2 -0
- package/internals/plugins/useTreeViewFocus/index.js +1 -0
- package/internals/plugins/useTreeViewFocus/useTreeViewFocus.d.ts +3 -0
- package/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +77 -0
- package/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.d.ts +25 -0
- package/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.js +1 -0
- package/internals/plugins/useTreeViewKeyboardNavigation/index.d.ts +2 -0
- package/internals/plugins/useTreeViewKeyboardNavigation/index.js +1 -0
- package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.d.ts +3 -0
- package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +223 -0
- package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.d.ts +14 -0
- package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.js +1 -0
- package/internals/plugins/useTreeViewNodes/index.d.ts +2 -0
- package/internals/plugins/useTreeViewNodes/index.js +1 -0
- package/internals/plugins/useTreeViewNodes/useTreeViewNodes.d.ts +3 -0
- package/internals/plugins/useTreeViewNodes/useTreeViewNodes.js +60 -0
- package/internals/plugins/useTreeViewNodes/useTreeViewNodes.types.d.ts +27 -0
- package/internals/plugins/useTreeViewNodes/useTreeViewNodes.types.js +1 -0
- package/internals/plugins/useTreeViewSelection/index.d.ts +2 -0
- package/internals/plugins/useTreeViewSelection/index.js +1 -0
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.d.ts +3 -0
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +172 -0
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +49 -0
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.js +1 -0
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.d.ts +17 -0
- package/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +55 -0
- package/internals/useTreeView/index.d.ts +2 -0
- package/internals/useTreeView/index.js +1 -0
- package/internals/useTreeView/useTreeView.d.ts +3 -0
- package/internals/useTreeView/useTreeView.js +65 -0
- package/internals/useTreeView/useTreeView.types.d.ts +20 -0
- package/internals/useTreeView/useTreeView.types.js +1 -0
- package/internals/useTreeView/useTreeView.utils.d.ts +8 -0
- package/internals/useTreeView/useTreeView.utils.js +43 -0
- package/internals/useTreeView/useTreeViewModels.d.ts +6 -0
- package/internals/useTreeView/useTreeViewModels.js +63 -0
- package/internals/utils/EventManager.d.ts +29 -0
- package/internals/utils/EventManager.js +69 -0
- package/internals/utils/cleanupTracking/CleanupTracking.d.ts +9 -0
- package/internals/utils/cleanupTracking/CleanupTracking.js +1 -0
- package/internals/utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking.d.ts +7 -0
- package/internals/utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking.js +18 -0
- package/internals/utils/cleanupTracking/TimerBasedCleanupTracking.d.ts +10 -0
- package/internals/utils/cleanupTracking/TimerBasedCleanupTracking.js +38 -0
- package/internals/utils/publishTreeViewEvent.d.ts +5 -0
- package/internals/utils/publishTreeViewEvent.js +3 -0
- package/legacy/TreeItem/TreeItem.js +28 -35
- package/legacy/TreeItem/useTreeItem.js +18 -27
- package/legacy/TreeView/TreeView.js +67 -768
- package/legacy/index.js +3 -2
- package/legacy/internals/TreeViewProvider/TreeViewContext.js +21 -0
- package/legacy/internals/TreeViewProvider/TreeViewProvider.js +19 -0
- package/legacy/internals/TreeViewProvider/TreeViewProvider.types.js +1 -0
- package/legacy/internals/TreeViewProvider/index.js +1 -0
- package/legacy/internals/TreeViewProvider/useTreeViewContext.js +5 -0
- package/legacy/internals/corePlugins/corePlugins.js +6 -0
- package/legacy/internals/corePlugins/index.js +1 -0
- package/legacy/internals/corePlugins/useTreeViewInstanceEvents/index.js +1 -0
- package/legacy/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.js +45 -0
- package/legacy/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.types.js +1 -0
- package/legacy/internals/hooks/useInstanceEventHandler.js +87 -0
- package/legacy/internals/models/events.js +1 -0
- package/legacy/internals/models/helpers.js +1 -0
- package/legacy/internals/models/index.js +3 -0
- package/legacy/internals/models/plugin.js +1 -0
- package/legacy/internals/models/treeView.js +1 -0
- package/legacy/internals/plugins/defaultPlugins.js +9 -0
- package/legacy/internals/plugins/index.js +1 -0
- package/legacy/internals/plugins/useTreeViewContextValueBuilder/index.js +1 -0
- package/legacy/internals/plugins/useTreeViewContextValueBuilder/useTreeViewContextValueBuilder.js +25 -0
- package/legacy/internals/plugins/useTreeViewContextValueBuilder/useTreeViewContextValueBuilder.types.js +1 -0
- package/legacy/internals/plugins/useTreeViewExpansion/index.js +1 -0
- package/legacy/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +66 -0
- package/legacy/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.js +1 -0
- package/legacy/internals/plugins/useTreeViewFocus/index.js +1 -0
- package/legacy/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +87 -0
- package/legacy/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.js +1 -0
- package/legacy/internals/plugins/useTreeViewKeyboardNavigation/index.js +1 -0
- package/legacy/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +226 -0
- package/legacy/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.js +1 -0
- package/legacy/internals/plugins/useTreeViewNodes/index.js +1 -0
- package/legacy/internals/plugins/useTreeViewNodes/useTreeViewNodes.js +71 -0
- package/legacy/internals/plugins/useTreeViewNodes/useTreeViewNodes.types.js +1 -0
- package/legacy/internals/plugins/useTreeViewSelection/index.js +1 -0
- package/legacy/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +188 -0
- package/legacy/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.js +1 -0
- package/legacy/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +55 -0
- package/legacy/internals/useTreeView/index.js +1 -0
- package/legacy/internals/useTreeView/useTreeView.js +71 -0
- package/legacy/internals/useTreeView/useTreeView.types.js +1 -0
- package/legacy/internals/useTreeView/useTreeView.utils.js +46 -0
- package/legacy/internals/useTreeView/useTreeViewModels.js +76 -0
- package/legacy/internals/utils/EventManager.js +91 -0
- package/legacy/internals/utils/cleanupTracking/CleanupTracking.js +1 -0
- package/legacy/internals/utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking.js +29 -0
- package/legacy/internals/utils/cleanupTracking/TimerBasedCleanupTracking.js +52 -0
- package/legacy/internals/utils/publishTreeViewEvent.js +3 -0
- package/modern/TreeItem/TreeItem.js +25 -34
- package/modern/TreeItem/useTreeItem.js +18 -27
- package/modern/TreeView/TreeView.js +67 -709
- package/modern/index.js +3 -2
- package/modern/{TreeView → internals/TreeViewProvider}/TreeViewContext.js +8 -18
- package/modern/internals/TreeViewProvider/TreeViewProvider.js +21 -0
- package/modern/internals/TreeViewProvider/TreeViewProvider.types.js +1 -0
- package/modern/internals/TreeViewProvider/index.js +1 -0
- package/modern/internals/TreeViewProvider/useTreeViewContext.js +3 -0
- package/modern/internals/corePlugins/corePlugins.js +6 -0
- package/modern/internals/corePlugins/index.js +1 -0
- package/modern/internals/corePlugins/useTreeViewInstanceEvents/index.js +1 -0
- package/modern/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.js +35 -0
- package/modern/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.types.js +1 -0
- package/modern/internals/hooks/useInstanceEventHandler.js +77 -0
- package/modern/internals/models/events.js +1 -0
- package/modern/internals/models/helpers.js +1 -0
- package/modern/internals/models/index.js +3 -0
- package/modern/internals/models/plugin.js +1 -0
- package/modern/internals/models/treeView.js +1 -0
- package/modern/internals/plugins/defaultPlugins.js +9 -0
- package/modern/internals/plugins/index.js +1 -0
- package/modern/internals/plugins/useTreeViewContextValueBuilder/index.js +1 -0
- package/modern/internals/plugins/useTreeViewContextValueBuilder/useTreeViewContextValueBuilder.js +24 -0
- package/modern/internals/plugins/useTreeViewContextValueBuilder/useTreeViewContextValueBuilder.types.js +1 -0
- package/modern/internals/plugins/useTreeViewExpansion/index.js +1 -0
- package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +57 -0
- package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.js +1 -0
- package/modern/internals/plugins/useTreeViewFocus/index.js +1 -0
- package/modern/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +72 -0
- package/modern/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.js +1 -0
- package/modern/internals/plugins/useTreeViewKeyboardNavigation/index.js +1 -0
- package/modern/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +222 -0
- package/modern/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.js +1 -0
- package/modern/internals/plugins/useTreeViewNodes/index.js +1 -0
- package/modern/internals/plugins/useTreeViewNodes/useTreeViewNodes.js +60 -0
- package/modern/internals/plugins/useTreeViewNodes/useTreeViewNodes.types.js +1 -0
- package/modern/internals/plugins/useTreeViewSelection/index.js +1 -0
- package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +169 -0
- package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.js +1 -0
- package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +55 -0
- package/modern/internals/useTreeView/index.js +1 -0
- package/modern/internals/useTreeView/useTreeView.js +65 -0
- package/modern/internals/useTreeView/useTreeView.types.js +1 -0
- package/modern/internals/useTreeView/useTreeView.utils.js +43 -0
- package/modern/internals/useTreeView/useTreeViewModels.js +63 -0
- package/modern/internals/utils/EventManager.js +69 -0
- package/modern/internals/utils/cleanupTracking/CleanupTracking.js +1 -0
- package/modern/internals/utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking.js +18 -0
- package/modern/internals/utils/cleanupTracking/TimerBasedCleanupTracking.js +38 -0
- package/modern/internals/utils/publishTreeViewEvent.js +3 -0
- package/node/TreeItem/TreeItem.js +27 -36
- package/node/TreeItem/useTreeItem.js +18 -29
- package/node/TreeView/TreeView.js +67 -709
- package/node/index.js +14 -2
- package/node/{TreeView → internals/TreeViewProvider}/TreeViewContext.js +10 -19
- package/node/internals/TreeViewProvider/TreeViewProvider.js +29 -0
- package/node/internals/TreeViewProvider/index.js +12 -0
- package/node/internals/TreeViewProvider/useTreeViewContext.js +12 -0
- package/node/internals/corePlugins/corePlugins.js +13 -0
- package/node/internals/corePlugins/index.js +12 -0
- package/node/internals/corePlugins/useTreeViewInstanceEvents/index.js +12 -0
- package/node/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.js +44 -0
- package/node/internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.types.js +5 -0
- package/node/internals/hooks/useInstanceEventHandler.js +88 -0
- package/node/internals/models/events.js +5 -0
- package/node/internals/models/helpers.js +5 -0
- package/node/internals/models/index.js +38 -0
- package/node/internals/models/plugin.js +5 -0
- package/node/internals/models/treeView.js +5 -0
- package/node/internals/plugins/defaultPlugins.js +16 -0
- package/node/internals/plugins/index.js +12 -0
- package/node/internals/plugins/useTreeViewContextValueBuilder/index.js +12 -0
- package/node/internals/plugins/useTreeViewContextValueBuilder/useTreeViewContextValueBuilder.js +32 -0
- package/node/internals/plugins/useTreeViewContextValueBuilder/useTreeViewContextValueBuilder.types.js +5 -0
- package/node/internals/plugins/useTreeViewExpansion/index.js +12 -0
- package/node/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +67 -0
- package/node/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.js +5 -0
- package/node/internals/plugins/useTreeViewFocus/index.js +12 -0
- package/node/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +82 -0
- package/node/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.js +5 -0
- package/node/internals/plugins/useTreeViewKeyboardNavigation/index.js +12 -0
- package/node/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +232 -0
- package/node/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.types.js +5 -0
- package/node/internals/plugins/useTreeViewNodes/index.js +12 -0
- package/node/internals/plugins/useTreeViewNodes/useTreeViewNodes.js +70 -0
- package/node/internals/plugins/useTreeViewNodes/useTreeViewNodes.types.js +5 -0
- package/node/internals/plugins/useTreeViewSelection/index.js +12 -0
- package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +179 -0
- package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.js +5 -0
- package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +62 -0
- package/node/internals/useTreeView/index.js +12 -0
- package/node/internals/useTreeView/useTreeView.js +75 -0
- package/node/internals/useTreeView/useTreeView.types.js +5 -0
- package/node/internals/useTreeView/useTreeView.utils.js +54 -0
- package/node/internals/useTreeView/useTreeViewModels.js +73 -0
- package/node/internals/utils/EventManager.js +76 -0
- package/node/internals/utils/cleanupTracking/CleanupTracking.js +5 -0
- package/node/internals/utils/cleanupTracking/FinalizationRegistryBasedCleanupTracking.js +25 -0
- package/node/internals/utils/cleanupTracking/TimerBasedCleanupTracking.js +45 -0
- package/node/internals/utils/publishTreeViewEvent.js +10 -0
- package/package.json +3 -3
- package/themeAugmentation/props.d.ts +1 -1
- package/TreeView/TreeViewContext.d.ts +0 -6
- package/internals/models.d.ts +0 -1
- package/legacy/TreeView/TreeViewContext.js +0 -41
- /package/{TreeView/descendants.js → internals/TreeViewProvider/DescendantProvider.js} +0 -0
- /package/internals/{models.js → TreeViewProvider/TreeViewProvider.types.js} +0 -0
- /package/{legacy/internals/models.js → internals/corePlugins/useTreeViewInstanceEvents/useTreeViewInstanceEvents.types.js} +0 -0
- /package/{modern/internals/models.js → internals/models/events.js} +0 -0
- /package/legacy/{TreeView/descendants.js → internals/TreeViewProvider/DescendantProvider.js} +0 -0
- /package/modern/{TreeView/descendants.js → internals/TreeViewProvider/DescendantProvider.js} +0 -0
- /package/node/{TreeView/descendants.js → internals/TreeViewProvider/DescendantProvider.js} +0 -0
- /package/node/internals/{models.js → TreeViewProvider/TreeViewProvider.types.js} +0 -0
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
3
|
+
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
4
|
+
import * as React from 'react';
|
|
5
|
+
/**
|
|
6
|
+
* Implements the same behavior as `useControlled` but for several models.
|
|
7
|
+
* The controlled models are never stored in the state and the state is only updated if the model is not controlled.
|
|
8
|
+
*/
|
|
9
|
+
export var useTreeViewModels = function useTreeViewModels(plugins, props) {
|
|
10
|
+
var modelsRef = React.useRef({});
|
|
11
|
+
var _React$useState = React.useState(function () {
|
|
12
|
+
var initialState = {};
|
|
13
|
+
plugins.forEach(function (plugin) {
|
|
14
|
+
if (plugin.models) {
|
|
15
|
+
Object.entries(plugin.models).forEach(function (_ref) {
|
|
16
|
+
var _ref2 = _slicedToArray(_ref, 2),
|
|
17
|
+
modelName = _ref2[0],
|
|
18
|
+
model = _ref2[1];
|
|
19
|
+
modelsRef.current[modelName] = {
|
|
20
|
+
controlledProp: model.controlledProp,
|
|
21
|
+
defaultProp: model.defaultProp,
|
|
22
|
+
isControlled: props[model.controlledProp] !== undefined
|
|
23
|
+
};
|
|
24
|
+
initialState[modelName] = props[model.defaultProp];
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
return initialState;
|
|
29
|
+
}),
|
|
30
|
+
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
31
|
+
modelsState = _React$useState2[0],
|
|
32
|
+
setModelsState = _React$useState2[1];
|
|
33
|
+
var models = Object.fromEntries(Object.entries(modelsRef.current).map(function (_ref3) {
|
|
34
|
+
var _ref4 = _slicedToArray(_ref3, 2),
|
|
35
|
+
modelName = _ref4[0],
|
|
36
|
+
model = _ref4[1];
|
|
37
|
+
var value = model.isControlled ? props[model.controlledProp] : modelsState[modelName];
|
|
38
|
+
return [modelName, {
|
|
39
|
+
value: value,
|
|
40
|
+
setValue: function setValue(newValue) {
|
|
41
|
+
if (!model.isControlled) {
|
|
42
|
+
setModelsState(function (prevState) {
|
|
43
|
+
return _extends({}, prevState, _defineProperty({}, modelName, newValue));
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}];
|
|
48
|
+
}));
|
|
49
|
+
|
|
50
|
+
// We know that `modelsRef` do not vary across renders.
|
|
51
|
+
/* eslint-disable react-hooks/rules-of-hooks, react-hooks/exhaustive-deps */
|
|
52
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
53
|
+
Object.entries(modelsRef.current).forEach(function (_ref5) {
|
|
54
|
+
var _ref6 = _slicedToArray(_ref5, 2),
|
|
55
|
+
modelName = _ref6[0],
|
|
56
|
+
model = _ref6[1];
|
|
57
|
+
var controlled = props[model.controlledProp];
|
|
58
|
+
var defaultProp = props[model.defaultProp];
|
|
59
|
+
React.useEffect(function () {
|
|
60
|
+
if (model.isControlled !== (controlled !== undefined)) {
|
|
61
|
+
console.error(["MUI: A component is changing the ".concat(model.isControlled ? '' : 'un', "controlled ").concat(modelName, " state of TreeView to be ").concat(model.isControlled ? 'un' : '', "controlled."), 'Elements should not switch from uncontrolled to controlled (or vice versa).', "Decide between using a controlled or uncontrolled ".concat(modelName, " ") + 'element for the lifetime of the component.', "The nature of the state is determined during the first render. It's considered controlled if the value is not `undefined`.", 'More info: https://fb.me/react-controlled-components'].join('\n'));
|
|
62
|
+
}
|
|
63
|
+
}, [controlled]);
|
|
64
|
+
var _React$useRef = React.useRef(defaultProp),
|
|
65
|
+
defaultValue = _React$useRef.current;
|
|
66
|
+
React.useEffect(function () {
|
|
67
|
+
if (!model.isControlled && defaultValue !== defaultProp) {
|
|
68
|
+
console.error(["MUI: A component is changing the default ".concat(modelName, " state of an uncontrolled TreeView after being initialized. ") + "To suppress this warning opt to use a controlled TreeView."].join('\n'));
|
|
69
|
+
}
|
|
70
|
+
}, [JSON.stringify(defaultValue)]);
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
/* eslint-enable react-hooks/rules-of-hooks, react-hooks/exhaustive-deps */
|
|
74
|
+
|
|
75
|
+
return models;
|
|
76
|
+
};
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
|
|
2
|
+
import _createClass from "@babel/runtime/helpers/esm/createClass";
|
|
3
|
+
// Used https://gist.github.com/mudge/5830382 as a starting point.
|
|
4
|
+
// See https://github.com/browserify/events/blob/master/events.js for
|
|
5
|
+
// the Node.js (https://nodejs.org/api/events.html) polyfill used by webpack.
|
|
6
|
+
export var EventManager = /*#__PURE__*/function () {
|
|
7
|
+
function EventManager() {
|
|
8
|
+
_classCallCheck(this, EventManager);
|
|
9
|
+
this.maxListeners = 20;
|
|
10
|
+
this.warnOnce = false;
|
|
11
|
+
this.events = {};
|
|
12
|
+
}
|
|
13
|
+
_createClass(EventManager, [{
|
|
14
|
+
key: "on",
|
|
15
|
+
value: function on(eventName, listener) {
|
|
16
|
+
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
17
|
+
var collection = this.events[eventName];
|
|
18
|
+
if (!collection) {
|
|
19
|
+
collection = {
|
|
20
|
+
highPriority: new Map(),
|
|
21
|
+
regular: new Map()
|
|
22
|
+
};
|
|
23
|
+
this.events[eventName] = collection;
|
|
24
|
+
}
|
|
25
|
+
if (options.isFirst) {
|
|
26
|
+
collection.highPriority.set(listener, true);
|
|
27
|
+
} else {
|
|
28
|
+
collection.regular.set(listener, true);
|
|
29
|
+
}
|
|
30
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
31
|
+
var collectionSize = collection.highPriority.size + collection.regular.size;
|
|
32
|
+
if (collectionSize > this.maxListeners && !this.warnOnce) {
|
|
33
|
+
this.warnOnce = true;
|
|
34
|
+
console.warn(["Possible EventEmitter memory leak detected. ".concat(collectionSize, " ").concat(eventName, " listeners added.")].join('\n'));
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}, {
|
|
39
|
+
key: "removeListener",
|
|
40
|
+
value: function removeListener(eventName, listener) {
|
|
41
|
+
if (this.events[eventName]) {
|
|
42
|
+
this.events[eventName].regular.delete(listener);
|
|
43
|
+
this.events[eventName].highPriority.delete(listener);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}, {
|
|
47
|
+
key: "removeAllListeners",
|
|
48
|
+
value: function removeAllListeners() {
|
|
49
|
+
this.events = {};
|
|
50
|
+
}
|
|
51
|
+
}, {
|
|
52
|
+
key: "emit",
|
|
53
|
+
value: function emit(eventName) {
|
|
54
|
+
var collection = this.events[eventName];
|
|
55
|
+
if (!collection) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
var highPriorityListeners = Array.from(collection.highPriority.keys());
|
|
59
|
+
var regularListeners = Array.from(collection.regular.keys());
|
|
60
|
+
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
61
|
+
args[_key - 1] = arguments[_key];
|
|
62
|
+
}
|
|
63
|
+
for (var i = highPriorityListeners.length - 1; i >= 0; i -= 1) {
|
|
64
|
+
var listener = highPriorityListeners[i];
|
|
65
|
+
if (collection.highPriority.has(listener)) {
|
|
66
|
+
listener.apply(this, args);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
for (var _i = 0; _i < regularListeners.length; _i += 1) {
|
|
70
|
+
var _listener = regularListeners[_i];
|
|
71
|
+
if (collection.regular.has(_listener)) {
|
|
72
|
+
_listener.apply(this, args);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}, {
|
|
77
|
+
key: "once",
|
|
78
|
+
value: function once(eventName, listener) {
|
|
79
|
+
// eslint-disable-next-line consistent-this
|
|
80
|
+
var that = this;
|
|
81
|
+
this.on(eventName, function oneTimeListener() {
|
|
82
|
+
that.removeListener(eventName, oneTimeListener);
|
|
83
|
+
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
84
|
+
args[_key2] = arguments[_key2];
|
|
85
|
+
}
|
|
86
|
+
listener.apply(that, args);
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
}]);
|
|
90
|
+
return EventManager;
|
|
91
|
+
}();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
|
|
2
|
+
import _createClass from "@babel/runtime/helpers/esm/createClass";
|
|
3
|
+
export var FinalizationRegistryBasedCleanupTracking = /*#__PURE__*/function () {
|
|
4
|
+
function FinalizationRegistryBasedCleanupTracking() {
|
|
5
|
+
_classCallCheck(this, FinalizationRegistryBasedCleanupTracking);
|
|
6
|
+
this.registry = new FinalizationRegistry(function (unsubscribe) {
|
|
7
|
+
if (typeof unsubscribe === 'function') {
|
|
8
|
+
unsubscribe();
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
_createClass(FinalizationRegistryBasedCleanupTracking, [{
|
|
13
|
+
key: "register",
|
|
14
|
+
value: function register(object, unsubscribe, unregisterToken) {
|
|
15
|
+
this.registry.register(object, unsubscribe, unregisterToken);
|
|
16
|
+
}
|
|
17
|
+
}, {
|
|
18
|
+
key: "unregister",
|
|
19
|
+
value: function unregister(unregisterToken) {
|
|
20
|
+
this.registry.unregister(unregisterToken);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// eslint-disable-next-line class-methods-use-this
|
|
24
|
+
}, {
|
|
25
|
+
key: "reset",
|
|
26
|
+
value: function reset() {}
|
|
27
|
+
}]);
|
|
28
|
+
return FinalizationRegistryBasedCleanupTracking;
|
|
29
|
+
}();
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
|
|
2
|
+
import _createClass from "@babel/runtime/helpers/esm/createClass";
|
|
3
|
+
// If no effect ran after this amount of time, we assume that the render was not committed by React
|
|
4
|
+
var CLEANUP_TIMER_LOOP_MILLIS = 1000;
|
|
5
|
+
export var TimerBasedCleanupTracking = /*#__PURE__*/function () {
|
|
6
|
+
function TimerBasedCleanupTracking() {
|
|
7
|
+
var timeout = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : CLEANUP_TIMER_LOOP_MILLIS;
|
|
8
|
+
_classCallCheck(this, TimerBasedCleanupTracking);
|
|
9
|
+
this.timeouts = new Map();
|
|
10
|
+
this.cleanupTimeout = CLEANUP_TIMER_LOOP_MILLIS;
|
|
11
|
+
this.cleanupTimeout = timeout;
|
|
12
|
+
}
|
|
13
|
+
_createClass(TimerBasedCleanupTracking, [{
|
|
14
|
+
key: "register",
|
|
15
|
+
value: function register(object, unsubscribe, unregisterToken) {
|
|
16
|
+
var _this = this;
|
|
17
|
+
if (!this.timeouts) {
|
|
18
|
+
this.timeouts = new Map();
|
|
19
|
+
}
|
|
20
|
+
var timeout = setTimeout(function () {
|
|
21
|
+
if (typeof unsubscribe === 'function') {
|
|
22
|
+
unsubscribe();
|
|
23
|
+
}
|
|
24
|
+
_this.timeouts.delete(unregisterToken.cleanupToken);
|
|
25
|
+
}, this.cleanupTimeout);
|
|
26
|
+
this.timeouts.set(unregisterToken.cleanupToken, timeout);
|
|
27
|
+
}
|
|
28
|
+
}, {
|
|
29
|
+
key: "unregister",
|
|
30
|
+
value: function unregister(unregisterToken) {
|
|
31
|
+
var timeout = this.timeouts.get(unregisterToken.cleanupToken);
|
|
32
|
+
if (timeout) {
|
|
33
|
+
this.timeouts.delete(unregisterToken.cleanupToken);
|
|
34
|
+
clearTimeout(timeout);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}, {
|
|
38
|
+
key: "reset",
|
|
39
|
+
value: function reset() {
|
|
40
|
+
var _this2 = this;
|
|
41
|
+
if (this.timeouts) {
|
|
42
|
+
this.timeouts.forEach(function (value, key) {
|
|
43
|
+
_this2.unregister({
|
|
44
|
+
cleanupToken: key
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
this.timeouts = undefined;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}]);
|
|
51
|
+
return TimerBasedCleanupTracking;
|
|
52
|
+
}();
|
|
@@ -11,10 +11,10 @@ import useForkRef from '@mui/utils/useForkRef';
|
|
|
11
11
|
import unsupportedProp from '@mui/utils/unsupportedProp';
|
|
12
12
|
import elementTypeAcceptingRef from '@mui/utils/elementTypeAcceptingRef';
|
|
13
13
|
import { unstable_composeClasses as composeClasses } from '@mui/base';
|
|
14
|
-
import {
|
|
15
|
-
import { DescendantProvider, useDescendant } from '../TreeView/descendants';
|
|
14
|
+
import { DescendantProvider, useDescendant } from '../internals/TreeViewProvider/DescendantProvider';
|
|
16
15
|
import { TreeItemContent } from './TreeItemContent';
|
|
17
16
|
import { treeItemClasses, getTreeItemUtilityClass } from './treeItemClasses';
|
|
17
|
+
import { useTreeViewContext } from '../internals/TreeViewProvider/useTreeViewContext';
|
|
18
18
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
19
19
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
20
20
|
const useUtilityClasses = ownerState => {
|
|
@@ -59,6 +59,8 @@ const StyledTreeItemContent = styled(TreeItemContent, {
|
|
|
59
59
|
}) => ({
|
|
60
60
|
padding: '0 8px',
|
|
61
61
|
width: '100%',
|
|
62
|
+
boxSizing: 'border-box',
|
|
63
|
+
// prevent width + padding to overflow
|
|
62
64
|
display: 'flex',
|
|
63
65
|
alignItems: 'center',
|
|
64
66
|
cursor: 'pointer',
|
|
@@ -101,10 +103,12 @@ const StyledTreeItemContent = styled(TreeItemContent, {
|
|
|
101
103
|
}
|
|
102
104
|
},
|
|
103
105
|
[`& .${treeItemClasses.label}`]: _extends({
|
|
106
|
+
paddingLeft: 4,
|
|
104
107
|
width: '100%',
|
|
108
|
+
boxSizing: 'border-box',
|
|
109
|
+
// prevent width + padding to overflow
|
|
105
110
|
// fixes overflow - see https://github.com/mui/material-ui/issues/27372
|
|
106
111
|
minWidth: 0,
|
|
107
|
-
paddingLeft: 4,
|
|
108
112
|
position: 'relative'
|
|
109
113
|
}, theme.typography.body1)
|
|
110
114
|
}));
|
|
@@ -122,11 +126,11 @@ const TreeItemGroup = styled(Collapse, {
|
|
|
122
126
|
*
|
|
123
127
|
* Demos:
|
|
124
128
|
*
|
|
125
|
-
* - [Tree View](https://mui.com/
|
|
129
|
+
* - [Tree View](https://mui.com/x/react-tree-view/)
|
|
126
130
|
*
|
|
127
131
|
* API:
|
|
128
132
|
*
|
|
129
|
-
* - [TreeItem API](https://mui.com/
|
|
133
|
+
* - [TreeItem API](https://mui.com/x/api/tree-view/tree-item/)
|
|
130
134
|
*/
|
|
131
135
|
export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps, ref) {
|
|
132
136
|
const props = useThemeProps({
|
|
@@ -154,19 +158,11 @@ export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps,
|
|
|
154
158
|
other = _objectWithoutPropertiesLoose(props, _excluded);
|
|
155
159
|
const {
|
|
156
160
|
icons: contextIcons,
|
|
157
|
-
focus,
|
|
158
|
-
isExpanded,
|
|
159
|
-
isFocused,
|
|
160
|
-
isSelected,
|
|
161
|
-
isDisabled,
|
|
162
161
|
multiSelect,
|
|
163
162
|
disabledItemsFocusable,
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
unregisterNode,
|
|
168
|
-
treeId
|
|
169
|
-
} = React.useContext(TreeViewContext);
|
|
163
|
+
treeId,
|
|
164
|
+
instance
|
|
165
|
+
} = useTreeViewContext();
|
|
170
166
|
let id;
|
|
171
167
|
if (idProp != null) {
|
|
172
168
|
id = idProp;
|
|
@@ -185,10 +181,10 @@ export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps,
|
|
|
185
181
|
parentId
|
|
186
182
|
} = useDescendant(descendant);
|
|
187
183
|
const expandable = Boolean(Array.isArray(children) ? children.length : children);
|
|
188
|
-
const expanded =
|
|
189
|
-
const focused =
|
|
190
|
-
const selected =
|
|
191
|
-
const disabled =
|
|
184
|
+
const expanded = instance ? instance.isNodeExpanded(nodeId) : false;
|
|
185
|
+
const focused = instance ? instance.isNodeFocused(nodeId) : false;
|
|
186
|
+
const selected = instance ? instance.isNodeSelected(nodeId) : false;
|
|
187
|
+
const disabled = instance ? instance.isNodeDisabled(nodeId) : false;
|
|
192
188
|
const ownerState = _extends({}, props, {
|
|
193
189
|
expanded,
|
|
194
190
|
focused,
|
|
@@ -212,8 +208,8 @@ export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps,
|
|
|
212
208
|
}
|
|
213
209
|
React.useEffect(() => {
|
|
214
210
|
// On the first render a node's index will be -1. We want to wait for the real index.
|
|
215
|
-
if (
|
|
216
|
-
|
|
211
|
+
if (instance && index !== -1) {
|
|
212
|
+
instance.updateNode({
|
|
217
213
|
id: nodeId,
|
|
218
214
|
idAttribute: id,
|
|
219
215
|
index,
|
|
@@ -221,21 +217,16 @@ export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps,
|
|
|
221
217
|
expandable,
|
|
222
218
|
disabled: disabledProp
|
|
223
219
|
});
|
|
224
|
-
return () =>
|
|
225
|
-
unregisterNode(nodeId);
|
|
226
|
-
};
|
|
220
|
+
return () => instance.removeNode(nodeId);
|
|
227
221
|
}
|
|
228
222
|
return undefined;
|
|
229
|
-
}, [
|
|
223
|
+
}, [instance, parentId, index, nodeId, expandable, disabledProp, id]);
|
|
230
224
|
React.useEffect(() => {
|
|
231
|
-
if (
|
|
232
|
-
mapFirstChar(nodeId, (contentRef.current?.textContent ?? '').substring(0, 1).toLowerCase());
|
|
233
|
-
return () => {
|
|
234
|
-
unMapFirstChar(nodeId);
|
|
235
|
-
};
|
|
225
|
+
if (instance && label) {
|
|
226
|
+
return instance.mapFirstChar(nodeId, (contentRef.current?.textContent ?? '').substring(0, 1).toLowerCase());
|
|
236
227
|
}
|
|
237
228
|
return undefined;
|
|
238
|
-
}, [
|
|
229
|
+
}, [instance, nodeId, label]);
|
|
239
230
|
let ariaSelected;
|
|
240
231
|
if (multiSelect) {
|
|
241
232
|
ariaSelected = selected;
|
|
@@ -262,8 +253,8 @@ export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps,
|
|
|
262
253
|
});
|
|
263
254
|
}
|
|
264
255
|
const unfocusable = !disabledItemsFocusable && disabled;
|
|
265
|
-
if (!focused && event.currentTarget === event.target && !unfocusable) {
|
|
266
|
-
|
|
256
|
+
if (instance && !focused && event.currentTarget === event.target && !unfocusable) {
|
|
257
|
+
instance.focusNode(event, nodeId);
|
|
267
258
|
}
|
|
268
259
|
}
|
|
269
260
|
return /*#__PURE__*/_jsxs(TreeItemRoot, _extends({
|
|
@@ -1,52 +1,43 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { TreeViewContext } from '../TreeView/TreeViewContext';
|
|
1
|
+
import { useTreeViewContext } from '../internals/TreeViewProvider/useTreeViewContext';
|
|
3
2
|
export function useTreeItem(nodeId) {
|
|
4
3
|
const {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
selectRange,
|
|
14
|
-
toggleExpansion
|
|
15
|
-
} = React.useContext(TreeViewContext);
|
|
16
|
-
const expandable = isExpandable ? isExpandable(nodeId) : false;
|
|
17
|
-
const expanded = isExpanded ? isExpanded(nodeId) : false;
|
|
18
|
-
const focused = isFocused ? isFocused(nodeId) : false;
|
|
19
|
-
const disabled = isDisabled ? isDisabled(nodeId) : false;
|
|
20
|
-
const selected = isSelected ? isSelected(nodeId) : false;
|
|
4
|
+
instance,
|
|
5
|
+
multiSelect
|
|
6
|
+
} = useTreeViewContext();
|
|
7
|
+
const expandable = instance ? instance.isNodeExpandable(nodeId) : false;
|
|
8
|
+
const expanded = instance ? instance.isNodeExpanded(nodeId) : false;
|
|
9
|
+
const focused = instance ? instance.isNodeFocused(nodeId) : false;
|
|
10
|
+
const selected = instance ? instance.isNodeSelected(nodeId) : false;
|
|
11
|
+
const disabled = instance ? instance.isNodeDisabled(nodeId) : false;
|
|
21
12
|
const handleExpansion = event => {
|
|
22
|
-
if (!disabled) {
|
|
13
|
+
if (instance && !disabled) {
|
|
23
14
|
if (!focused) {
|
|
24
|
-
|
|
15
|
+
instance.focusNode(event, nodeId);
|
|
25
16
|
}
|
|
26
17
|
const multiple = multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);
|
|
27
18
|
|
|
28
19
|
// If already expanded and trying to toggle selection don't close
|
|
29
|
-
if (expandable && !(multiple &&
|
|
30
|
-
|
|
20
|
+
if (expandable && !(multiple && instance.isNodeExpanded(nodeId))) {
|
|
21
|
+
instance.toggleNodeExpansion(event, nodeId);
|
|
31
22
|
}
|
|
32
23
|
}
|
|
33
24
|
};
|
|
34
25
|
const handleSelection = event => {
|
|
35
|
-
if (!disabled) {
|
|
26
|
+
if (instance && !disabled) {
|
|
36
27
|
if (!focused) {
|
|
37
|
-
|
|
28
|
+
instance.focusNode(event, nodeId);
|
|
38
29
|
}
|
|
39
30
|
const multiple = multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);
|
|
40
31
|
if (multiple) {
|
|
41
32
|
if (event.shiftKey) {
|
|
42
|
-
selectRange(event, {
|
|
33
|
+
instance.selectRange(event, {
|
|
43
34
|
end: nodeId
|
|
44
35
|
});
|
|
45
36
|
} else {
|
|
46
|
-
selectNode(event, nodeId, true);
|
|
37
|
+
instance.selectNode(event, nodeId, true);
|
|
47
38
|
}
|
|
48
39
|
} else {
|
|
49
|
-
selectNode(event, nodeId);
|
|
40
|
+
instance.selectNode(event, nodeId);
|
|
50
41
|
}
|
|
51
42
|
}
|
|
52
43
|
};
|