@mui/x-tree-view 6.0.0-alpha.3 → 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 +83 -0
- package/TreeItem/TreeItem.js +18 -31
- package/TreeItem/useTreeItem.js +18 -27
- package/TreeView/TreeView.d.ts +4 -1
- package/TreeView/TreeView.js +65 -708
- 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 +21 -32
- package/legacy/TreeItem/useTreeItem.js +18 -27
- package/legacy/TreeView/TreeView.js +65 -766
- 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 +18 -31
- package/modern/TreeItem/useTreeItem.js +18 -27
- package/modern/TreeView/TreeView.js +65 -707
- 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 +20 -33
- package/node/TreeItem/useTreeItem.js +18 -29
- package/node/TreeView/TreeView.js +65 -707
- 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 +1 -1
- 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 => {
|
|
@@ -158,19 +158,11 @@ export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps,
|
|
|
158
158
|
other = _objectWithoutPropertiesLoose(props, _excluded);
|
|
159
159
|
const {
|
|
160
160
|
icons: contextIcons,
|
|
161
|
-
focus,
|
|
162
|
-
isExpanded,
|
|
163
|
-
isFocused,
|
|
164
|
-
isSelected,
|
|
165
|
-
isDisabled,
|
|
166
161
|
multiSelect,
|
|
167
162
|
disabledItemsFocusable,
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
unregisterNode,
|
|
172
|
-
treeId
|
|
173
|
-
} = React.useContext(TreeViewContext);
|
|
163
|
+
treeId,
|
|
164
|
+
instance
|
|
165
|
+
} = useTreeViewContext();
|
|
174
166
|
let id;
|
|
175
167
|
if (idProp != null) {
|
|
176
168
|
id = idProp;
|
|
@@ -189,10 +181,10 @@ export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps,
|
|
|
189
181
|
parentId
|
|
190
182
|
} = useDescendant(descendant);
|
|
191
183
|
const expandable = Boolean(Array.isArray(children) ? children.length : children);
|
|
192
|
-
const expanded =
|
|
193
|
-
const focused =
|
|
194
|
-
const selected =
|
|
195
|
-
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;
|
|
196
188
|
const ownerState = _extends({}, props, {
|
|
197
189
|
expanded,
|
|
198
190
|
focused,
|
|
@@ -216,8 +208,8 @@ export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps,
|
|
|
216
208
|
}
|
|
217
209
|
React.useEffect(() => {
|
|
218
210
|
// On the first render a node's index will be -1. We want to wait for the real index.
|
|
219
|
-
if (
|
|
220
|
-
|
|
211
|
+
if (instance && index !== -1) {
|
|
212
|
+
instance.updateNode({
|
|
221
213
|
id: nodeId,
|
|
222
214
|
idAttribute: id,
|
|
223
215
|
index,
|
|
@@ -225,21 +217,16 @@ export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps,
|
|
|
225
217
|
expandable,
|
|
226
218
|
disabled: disabledProp
|
|
227
219
|
});
|
|
228
|
-
return () =>
|
|
229
|
-
unregisterNode(nodeId);
|
|
230
|
-
};
|
|
220
|
+
return () => instance.removeNode(nodeId);
|
|
231
221
|
}
|
|
232
222
|
return undefined;
|
|
233
|
-
}, [
|
|
223
|
+
}, [instance, parentId, index, nodeId, expandable, disabledProp, id]);
|
|
234
224
|
React.useEffect(() => {
|
|
235
|
-
if (
|
|
236
|
-
mapFirstChar(nodeId, (contentRef.current?.textContent ?? '').substring(0, 1).toLowerCase());
|
|
237
|
-
return () => {
|
|
238
|
-
unMapFirstChar(nodeId);
|
|
239
|
-
};
|
|
225
|
+
if (instance && label) {
|
|
226
|
+
return instance.mapFirstChar(nodeId, (contentRef.current?.textContent ?? '').substring(0, 1).toLowerCase());
|
|
240
227
|
}
|
|
241
228
|
return undefined;
|
|
242
|
-
}, [
|
|
229
|
+
}, [instance, nodeId, label]);
|
|
243
230
|
let ariaSelected;
|
|
244
231
|
if (multiSelect) {
|
|
245
232
|
ariaSelected = selected;
|
|
@@ -266,8 +253,8 @@ export const TreeItem = /*#__PURE__*/React.forwardRef(function TreeItem(inProps,
|
|
|
266
253
|
});
|
|
267
254
|
}
|
|
268
255
|
const unfocusable = !disabledItemsFocusable && disabled;
|
|
269
|
-
if (!focused && event.currentTarget === event.target && !unfocusable) {
|
|
270
|
-
|
|
256
|
+
if (instance && !focused && event.currentTarget === event.target && !unfocusable) {
|
|
257
|
+
instance.focusNode(event, nodeId);
|
|
271
258
|
}
|
|
272
259
|
}
|
|
273
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
|
};
|