@mui/x-tree-view 8.2.0 → 8.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/CHANGELOG.md +199 -6
  2. package/RichTreeView/RichTreeView.js +0 -6
  3. package/RichTreeView/RichTreeView.types.d.ts +1 -7
  4. package/SimpleTreeView/SimpleTreeView.js +0 -6
  5. package/SimpleTreeView/SimpleTreeView.types.d.ts +1 -7
  6. package/esm/RichTreeView/RichTreeView.js +0 -6
  7. package/esm/RichTreeView/RichTreeView.types.d.ts +1 -7
  8. package/esm/SimpleTreeView/SimpleTreeView.js +0 -6
  9. package/esm/SimpleTreeView/SimpleTreeView.types.d.ts +1 -7
  10. package/esm/index.js +1 -1
  11. package/esm/internals/corePlugins/useTreeViewId/index.d.ts +1 -1
  12. package/esm/internals/corePlugins/useTreeViewId/useTreeViewId.types.d.ts +2 -2
  13. package/esm/internals/index.d.ts +2 -2
  14. package/esm/internals/index.js +1 -1
  15. package/esm/internals/models/plugin.d.ts +13 -22
  16. package/esm/internals/models/treeView.d.ts +0 -1
  17. package/esm/internals/plugins/useTreeViewExpansion/index.d.ts +1 -1
  18. package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +4 -3
  19. package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +2 -2
  20. package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.utils.d.ts +2 -2
  21. package/esm/internals/plugins/useTreeViewFocus/index.d.ts +1 -1
  22. package/esm/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.d.ts +2 -2
  23. package/esm/internals/plugins/useTreeViewItems/index.d.ts +1 -1
  24. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.js +1 -1
  25. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.types.d.ts +2 -2
  26. package/esm/internals/plugins/useTreeViewJSXItems/index.d.ts +1 -1
  27. package/esm/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.types.d.ts +2 -2
  28. package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +1 -1
  29. package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.types.d.ts +2 -2
  30. package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.d.ts +2 -3
  31. package/esm/internals/plugins/useTreeViewSelection/index.d.ts +1 -1
  32. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +4 -3
  33. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +2 -2
  34. package/esm/internals/useTreeView/{extractPluginParamsFromProps.d.ts → useExtractPluginParamsFromProps.d.ts} +8 -9
  35. package/esm/internals/useTreeView/useExtractPluginParamsFromProps.js +51 -0
  36. package/esm/internals/useTreeView/useTreeView.js +3 -5
  37. package/esm/internals/useTreeView/useTreeView.types.d.ts +1 -2
  38. package/esm/internals/useTreeView/useTreeViewBuildContext.d.ts +4 -8
  39. package/esm/internals/useTreeView/useTreeViewBuildContext.js +8 -7
  40. package/esm/internals/utils/cleanupTracking/TimerBasedCleanupTracking.d.ts +1 -1
  41. package/esm/internals/utils/tree.js +1 -1
  42. package/index.js +1 -1
  43. package/internals/corePlugins/useTreeViewId/index.d.ts +1 -1
  44. package/internals/corePlugins/useTreeViewId/useTreeViewId.types.d.ts +2 -2
  45. package/internals/index.d.ts +2 -2
  46. package/internals/index.js +1 -1
  47. package/internals/models/plugin.d.ts +13 -22
  48. package/internals/models/treeView.d.ts +0 -1
  49. package/internals/plugins/useTreeViewExpansion/index.d.ts +1 -1
  50. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +5 -4
  51. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +2 -2
  52. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.utils.d.ts +2 -2
  53. package/internals/plugins/useTreeViewFocus/index.d.ts +1 -1
  54. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.d.ts +2 -2
  55. package/internals/plugins/useTreeViewItems/index.d.ts +1 -1
  56. package/internals/plugins/useTreeViewItems/useTreeViewItems.js +1 -1
  57. package/internals/plugins/useTreeViewItems/useTreeViewItems.types.d.ts +2 -2
  58. package/internals/plugins/useTreeViewJSXItems/index.d.ts +1 -1
  59. package/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.types.d.ts +2 -2
  60. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +1 -1
  61. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.types.d.ts +2 -2
  62. package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.d.ts +2 -3
  63. package/internals/plugins/useTreeViewSelection/index.d.ts +1 -1
  64. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +5 -4
  65. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +2 -2
  66. package/internals/useTreeView/{extractPluginParamsFromProps.d.ts → useExtractPluginParamsFromProps.d.ts} +8 -9
  67. package/internals/useTreeView/useExtractPluginParamsFromProps.js +60 -0
  68. package/internals/useTreeView/useTreeView.js +3 -5
  69. package/internals/useTreeView/useTreeView.types.d.ts +1 -2
  70. package/internals/useTreeView/useTreeViewBuildContext.d.ts +4 -8
  71. package/internals/useTreeView/useTreeViewBuildContext.js +8 -7
  72. package/internals/utils/cleanupTracking/TimerBasedCleanupTracking.d.ts +1 -1
  73. package/internals/utils/tree.js +1 -1
  74. package/package.json +4 -4
  75. package/esm/internals/useTreeView/extractPluginParamsFromProps.js +0 -42
  76. package/esm/internals/useTreeView/useTreeViewPlugins.d.ts +0 -0
  77. package/esm/internals/useTreeView/useTreeViewPlugins.js +0 -0
  78. package/esm/internals/utils/models.d.ts +0 -7
  79. package/esm/internals/utils/models.js +0 -23
  80. package/internals/useTreeView/extractPluginParamsFromProps.js +0 -50
  81. package/internals/useTreeView/useTreeViewPlugins.d.ts +0 -0
  82. package/internals/useTreeView/useTreeViewPlugins.js +0 -1
  83. package/internals/utils/models.d.ts +0 -7
  84. package/internals/utils/models.js +0 -30
@@ -28,7 +28,7 @@ export interface UseTreeViewFocusParameters {
28
28
  */
29
29
  onItemFocus?: (event: React.SyntheticEvent | null, itemId: string) => void;
30
30
  }
31
- export type UseTreeViewFocusDefaultizedParameters = UseTreeViewFocusParameters;
31
+ export type UseTreeViewFocusParametersWithDefaults = UseTreeViewFocusParameters;
32
32
  export interface UseTreeViewFocusState {
33
33
  focus: {
34
34
  focusedItemId: string | null;
@@ -36,7 +36,7 @@ export interface UseTreeViewFocusState {
36
36
  }
37
37
  export type UseTreeViewFocusSignature = TreeViewPluginSignature<{
38
38
  params: UseTreeViewFocusParameters;
39
- defaultizedParams: UseTreeViewFocusDefaultizedParameters;
39
+ paramsWithDefaults: UseTreeViewFocusParametersWithDefaults;
40
40
  instance: UseTreeViewFocusInstance;
41
41
  publicAPI: UseTreeViewFocusPublicAPI;
42
42
  state: UseTreeViewFocusState;
@@ -1,3 +1,3 @@
1
1
  export { useTreeViewItems } from "./useTreeViewItems.js";
2
- export type { UseTreeViewItemsSignature, UseTreeViewItemsParameters, UseTreeViewItemsDefaultizedParameters, UseTreeViewItemsState } from "./useTreeViewItems.types.js";
2
+ export type { UseTreeViewItemsSignature, UseTreeViewItemsParameters, UseTreeViewItemsParametersWithDefaults, UseTreeViewItemsState } from "./useTreeViewItems.types.js";
3
3
  export { buildSiblingIndexes, TREE_VIEW_ROOT_PARENT_ID } from "./useTreeViewItems.utils.js";
@@ -309,7 +309,7 @@ useTreeViewItems.getInitialState = params => ({
309
309
  error: null
310
310
  })
311
311
  });
312
- useTreeViewItems.getDefaultizedParams = ({
312
+ useTreeViewItems.applyDefaultValuesToParams = ({
313
313
  params
314
314
  }) => (0, _extends2.default)({}, params, {
315
315
  disabledItemsFocusable: params.disabledItemsFocusable ?? false,
@@ -137,7 +137,7 @@ export interface UseTreeViewItemsParameters<R extends {
137
137
  */
138
138
  itemChildrenIndentation?: string | number;
139
139
  }
140
- export type UseTreeViewItemsDefaultizedParameters<R extends {
140
+ export type UseTreeViewItemsParametersWithDefaults<R extends {
141
141
  children?: R[];
142
142
  }> = DefaultizedProps<UseTreeViewItemsParameters<R>, 'disabledItemsFocusable' | 'itemChildrenIndentation'>;
143
143
  interface UseTreeViewItemsEventLookup {
@@ -196,7 +196,7 @@ export interface UseTreeViewItemsState<R extends {}> {
196
196
  }
197
197
  export type UseTreeViewItemsSignature = TreeViewPluginSignature<{
198
198
  params: UseTreeViewItemsParameters<any>;
199
- defaultizedParams: UseTreeViewItemsDefaultizedParameters<any>;
199
+ paramsWithDefaults: UseTreeViewItemsParametersWithDefaults<any>;
200
200
  instance: UseTreeViewItemsInstance<any>;
201
201
  publicAPI: UseTreeViewItemsPublicAPI<any>;
202
202
  events: UseTreeViewItemsEventLookup;
@@ -1,2 +1,2 @@
1
1
  export { useTreeViewJSXItems } from "./useTreeViewJSXItems.js";
2
- export type { UseTreeViewJSXItemsSignature, UseTreeViewJSXItemsParameters, UseTreeViewItemsDefaultizedParameters } from "./useTreeViewJSXItems.types.js";
2
+ export type { UseTreeViewJSXItemsSignature, UseTreeViewJSXItemsParameters, UseTreeViewItemsParametersWithDefaults } from "./useTreeViewJSXItems.types.js";
@@ -26,10 +26,10 @@ export interface UseTreeViewItemsInstance {
26
26
  setJSXItemsOrderedChildrenIds: (parentId: TreeViewItemId | null, orderedChildrenIds: TreeViewItemId[]) => void;
27
27
  }
28
28
  export interface UseTreeViewJSXItemsParameters {}
29
- export interface UseTreeViewItemsDefaultizedParameters {}
29
+ export interface UseTreeViewItemsParametersWithDefaults {}
30
30
  export type UseTreeViewJSXItemsSignature = TreeViewPluginSignature<{
31
31
  params: UseTreeViewJSXItemsParameters;
32
- defaultizedParams: UseTreeViewItemsDefaultizedParameters;
32
+ paramsWithDefaults: UseTreeViewItemsParametersWithDefaults;
33
33
  instance: UseTreeViewItemsInstance;
34
34
  dependencies: [UseTreeViewItemsSignature, UseTreeViewKeyboardNavigationSignature];
35
35
  }>;
@@ -61,7 +61,7 @@ const useTreeViewLabel = ({
61
61
  };
62
62
  exports.useTreeViewLabel = useTreeViewLabel;
63
63
  useTreeViewLabel.itemPlugin = _useTreeViewLabel.useTreeViewLabelItemPlugin;
64
- useTreeViewLabel.getDefaultizedParams = ({
64
+ useTreeViewLabel.applyDefaultValuesToParams = ({
65
65
  params
66
66
  }) => (0, _extends2.default)({}, params, {
67
67
  isItemEditable: params.isItemEditable ?? false
@@ -35,7 +35,7 @@ export interface UseTreeViewLabelParameters<R extends {}> {
35
35
  */
36
36
  isItemEditable?: boolean | ((item: R) => boolean);
37
37
  }
38
- export type UseTreeViewLabelDefaultizedParameters<R extends {}> = DefaultizedProps<UseTreeViewLabelParameters<R>, 'isItemEditable'>;
38
+ export type UseTreeViewLabelParametersWithDefaults<R extends {}> = DefaultizedProps<UseTreeViewLabelParameters<R>, 'isItemEditable'>;
39
39
  export interface UseTreeViewLabelState {
40
40
  label: {
41
41
  isItemEditable: ((item: any) => boolean) | boolean;
@@ -44,7 +44,7 @@ export interface UseTreeViewLabelState {
44
44
  }
45
45
  export type UseTreeViewLabelSignature = TreeViewPluginSignature<{
46
46
  params: UseTreeViewLabelParameters<any>;
47
- defaultizedParams: UseTreeViewLabelDefaultizedParameters<any>;
47
+ paramsWithDefaults: UseTreeViewLabelParametersWithDefaults<any>;
48
48
  publicAPI: UseTreeViewLabelPublicAPI;
49
49
  instance: UseTreeViewLabelInstance;
50
50
  state: UseTreeViewLabelState;
@@ -60,7 +60,7 @@ export interface UseTreeViewLazyLoadingParameters<R extends {}> {
60
60
  dataSource?: DataSource<R>;
61
61
  dataSourceCache?: DataSourceCache;
62
62
  }
63
- export type UseTreeViewLazyLoadingDefaultizedParameters<R extends {}> = DefaultizedProps<UseTreeViewLazyLoadingParameters<R>, 'dataSource'>;
63
+ export type UseTreeViewLazyLoadingParametersWithDefaults<R extends {}> = DefaultizedProps<UseTreeViewLazyLoadingParameters<R>, 'dataSource'>;
64
64
  export interface UseTreeViewLazyLoadingState {
65
65
  lazyLoading: {
66
66
  enabled: boolean;
@@ -72,11 +72,10 @@ export interface UseTreeViewLazyLoadingState {
72
72
  }
73
73
  export type UseTreeViewLazyLoadingSignature = TreeViewPluginSignature<{
74
74
  params: UseTreeViewLazyLoadingParameters<any>;
75
- defaultizedParams: UseTreeViewLazyLoadingDefaultizedParameters<any>;
75
+ paramsWithDefaults: UseTreeViewLazyLoadingParametersWithDefaults<any>;
76
76
  publicAPI: UseTreeViewLazyLoadingPublicAPI;
77
77
  instance: UseTreeViewLazyLoadingInstance;
78
78
  state: UseTreeViewLazyLoadingState;
79
- experimentalFeatures: 'lazyLoading';
80
79
  dependencies: [UseTreeViewItemsSignature, UseTreeViewExpansionSignature, UseTreeViewSelectionSignature];
81
80
  }>;
82
81
  export {};
@@ -1,2 +1,2 @@
1
1
  export { useTreeViewSelection } from "./useTreeViewSelection.js";
2
- export type { UseTreeViewSelectionSignature, UseTreeViewSelectionParameters, UseTreeViewSelectionDefaultizedParameters } from "./useTreeViewSelection.types.js";
2
+ export type { UseTreeViewSelectionSignature, UseTreeViewSelectionParameters, UseTreeViewSelectionParametersWithDefaults } from "./useTreeViewSelection.types.js";
@@ -8,18 +8,19 @@ Object.defineProperty(exports, "__esModule", {
8
8
  exports.useTreeViewSelection = void 0;
9
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
10
  var React = _interopRequireWildcard(require("react"));
11
+ var _useAssertModelConsistency = require("@mui/x-internals/useAssertModelConsistency");
11
12
  var _useEnhancedEffect = _interopRequireDefault(require("@mui/utils/useEnhancedEffect"));
12
13
  var _tree = require("../../utils/tree");
13
14
  var _useTreeViewSelection = require("./useTreeViewSelection.utils");
14
15
  var _useTreeViewSelection2 = require("./useTreeViewSelection.selectors");
15
16
  var _useTreeViewSelection3 = require("./useTreeViewSelection.itemPlugin");
16
- var _models = require("../../utils/models");
17
17
  const useTreeViewSelection = ({
18
18
  store,
19
19
  params
20
20
  }) => {
21
- (0, _models.useAssertModelConsistency)({
22
- state: 'selectedItems',
21
+ (0, _useAssertModelConsistency.useAssertModelConsistency)({
22
+ componentName: 'Tree View',
23
+ propName: 'selectedItems',
23
24
  controlled: params.selectedItems,
24
25
  defaultValue: params.defaultSelectedItems
25
26
  });
@@ -212,7 +213,7 @@ exports.useTreeViewSelection = useTreeViewSelection;
212
213
  useTreeViewSelection.itemPlugin = _useTreeViewSelection3.useTreeViewSelectionItemPlugin;
213
214
  const DEFAULT_SELECTED_ITEMS = [];
214
215
  const EMPTY_SELECTION_PROPAGATION = {};
215
- useTreeViewSelection.getDefaultizedParams = ({
216
+ useTreeViewSelection.applyDefaultValuesToParams = ({
216
217
  params
217
218
  }) => (0, _extends2.default)({}, params, {
218
219
  disableSelection: params.disableSelection ?? false,
@@ -112,7 +112,7 @@ export interface UseTreeViewSelectionParameters<Multiple extends boolean | undef
112
112
  */
113
113
  onItemSelectionToggle?: (event: React.SyntheticEvent | null, itemId: string, isSelected: boolean) => void;
114
114
  }
115
- export type UseTreeViewSelectionDefaultizedParameters<Multiple extends boolean> = DefaultizedProps<UseTreeViewSelectionParameters<Multiple>, 'disableSelection' | 'defaultSelectedItems' | 'multiSelect' | 'checkboxSelection' | 'selectionPropagation'>;
115
+ export type UseTreeViewSelectionParametersWithDefaults<Multiple extends boolean> = DefaultizedProps<UseTreeViewSelectionParameters<Multiple>, 'disableSelection' | 'defaultSelectedItems' | 'multiSelect' | 'checkboxSelection' | 'selectionPropagation'>;
116
116
  export interface UseTreeViewSelectionState {
117
117
  selection: {
118
118
  selectedItems: TreeViewSelectionValue<boolean>;
@@ -124,7 +124,7 @@ export interface UseTreeViewSelectionState {
124
124
  }
125
125
  export type UseTreeViewSelectionSignature = TreeViewPluginSignature<{
126
126
  params: UseTreeViewSelectionParameters<any>;
127
- defaultizedParams: UseTreeViewSelectionDefaultizedParameters<any>;
127
+ paramsWithDefaults: UseTreeViewSelectionParametersWithDefaults<any>;
128
128
  instance: UseTreeViewSelectionInstance;
129
129
  publicAPI: UseTreeViewSelectionPublicAPI;
130
130
  state: UseTreeViewSelectionState;
@@ -1,20 +1,19 @@
1
1
  import { ConvertSignaturesIntoPlugins, MergeSignaturesProperty, TreeViewAnyPluginSignature, TreeViewPluginSignature } from "../models/index.js";
2
2
  import { UseTreeViewBaseProps } from "./useTreeView.types.js";
3
3
  import { TreeViewCorePluginSignatures } from "../corePlugins/index.js";
4
+ export declare const useExtractPluginParamsFromProps: <TSignatures extends readonly TreeViewPluginSignature<any>[], TProps extends Partial<UseTreeViewBaseProps<TSignatures>>>({
5
+ props: {
6
+ apiRef,
7
+ ...props
8
+ },
9
+ plugins
10
+ }: ExtractPluginParamsFromPropsParameters<TSignatures, TProps>) => ExtractPluginParamsFromPropsReturnValue<TSignatures, TProps>;
4
11
  interface ExtractPluginParamsFromPropsParameters<TSignatures extends readonly TreeViewAnyPluginSignature[], TProps extends Partial<UseTreeViewBaseProps<TSignatures>>> {
5
12
  plugins: ConvertSignaturesIntoPlugins<readonly [...TreeViewCorePluginSignatures, ...TSignatures]>;
6
13
  props: TProps;
7
14
  }
8
15
  interface ExtractPluginParamsFromPropsReturnValue<TSignatures extends readonly TreeViewAnyPluginSignature[], TProps extends Partial<UseTreeViewBaseProps<TSignatures>>> extends UseTreeViewBaseProps<TSignatures> {
9
- pluginParams: MergeSignaturesProperty<TSignatures, 'defaultizedParams'>;
16
+ pluginParams: MergeSignaturesProperty<TSignatures, 'paramsWithDefaults'>;
10
17
  forwardedProps: Omit<TProps, keyof MergeSignaturesProperty<TSignatures, 'params'>>;
11
18
  }
12
- export declare const extractPluginParamsFromProps: <TSignatures extends readonly TreeViewPluginSignature<any>[], TProps extends Partial<UseTreeViewBaseProps<TSignatures>>>({
13
- props: {
14
- apiRef,
15
- experimentalFeatures: inExperimentalFeatures,
16
- ...props
17
- },
18
- plugins
19
- }: ExtractPluginParamsFromPropsParameters<TSignatures, TProps>) => ExtractPluginParamsFromPropsReturnValue<TSignatures, TProps>;
20
19
  export {};
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.useExtractPluginParamsFromProps = void 0;
9
+ var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
10
+ var React = _interopRequireWildcard(require("react"));
11
+ const _excluded = ["apiRef"];
12
+ const useExtractPluginParamsFromProps = _ref => {
13
+ let {
14
+ props: {
15
+ apiRef
16
+ },
17
+ plugins
18
+ } = _ref,
19
+ props = (0, _objectWithoutPropertiesLoose2.default)(_ref.props, _excluded);
20
+ const paramsLookup = React.useMemo(() => {
21
+ const tempParamsLookup = {};
22
+ plugins.forEach(plugin => {
23
+ Object.assign(tempParamsLookup, plugin.params);
24
+ });
25
+ return tempParamsLookup;
26
+ }, [plugins]);
27
+ const {
28
+ forwardedProps,
29
+ pluginParams
30
+ } = React.useMemo(() => {
31
+ const tempPluginParams = {};
32
+ const tempForwardedProps = {};
33
+ Object.keys(props).forEach(propName => {
34
+ const prop = props[propName];
35
+ if (paramsLookup[propName]) {
36
+ tempPluginParams[propName] = prop;
37
+ } else {
38
+ tempForwardedProps[propName] = prop;
39
+ }
40
+ });
41
+ const pluginParamsWithDefaults = plugins.reduce((acc, plugin) => {
42
+ if (plugin.applyDefaultValuesToParams) {
43
+ return plugin.applyDefaultValuesToParams({
44
+ params: acc
45
+ });
46
+ }
47
+ return acc;
48
+ }, tempPluginParams);
49
+ return {
50
+ forwardedProps: tempForwardedProps,
51
+ pluginParams: pluginParamsWithDefaults
52
+ };
53
+ }, [plugins, props, paramsLookup]);
54
+ return {
55
+ forwardedProps,
56
+ pluginParams,
57
+ apiRef
58
+ };
59
+ };
60
+ exports.useExtractPluginParamsFromProps = useExtractPluginParamsFromProps;
@@ -11,7 +11,7 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
11
11
  var React = _interopRequireWildcard(require("react"));
12
12
  var _useForkRef = _interopRequireDefault(require("@mui/utils/useForkRef"));
13
13
  var _corePlugins = require("../corePlugins");
14
- var _extractPluginParamsFromProps = require("./extractPluginParamsFromProps");
14
+ var _useExtractPluginParamsFromProps = require("./useExtractPluginParamsFromProps");
15
15
  var _useTreeViewBuildContext = require("./useTreeViewBuildContext");
16
16
  var _TreeViewStore = require("../utils/TreeViewStore");
17
17
  function initializeInputApiRef(inputApiRef) {
@@ -47,9 +47,8 @@ const useTreeView = ({
47
47
  const {
48
48
  pluginParams,
49
49
  forwardedProps,
50
- apiRef,
51
- experimentalFeatures
52
- } = (0, _extractPluginParamsFromProps.extractPluginParamsFromProps)({
50
+ apiRef
51
+ } = (0, _useExtractPluginParamsFromProps.useExtractPluginParamsFromProps)({
53
52
  plugins,
54
53
  props
55
54
  });
@@ -85,7 +84,6 @@ const useTreeView = ({
85
84
  const pluginResponse = plugin({
86
85
  instance,
87
86
  params: pluginParams,
88
- experimentalFeatures,
89
87
  rootRef: innerRootRef,
90
88
  plugins,
91
89
  store: storeRef.current
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import { EventHandlers } from '@mui/utils/types';
3
3
  import type { TreeViewContextValue } from "../TreeViewProvider/index.js";
4
- import { TreeViewAnyPluginSignature, ConvertSignaturesIntoPlugins, TreeViewPublicAPI, TreeViewExperimentalFeatures } from "../models/index.js";
4
+ import { TreeViewAnyPluginSignature, ConvertSignaturesIntoPlugins, TreeViewPublicAPI } from "../models/index.js";
5
5
  export interface UseTreeViewParameters<TSignatures extends readonly TreeViewAnyPluginSignature[], TProps extends Partial<UseTreeViewBaseProps<TSignatures>>> {
6
6
  plugins: ConvertSignaturesIntoPlugins<TSignatures>;
7
7
  rootRef?: React.Ref<HTMLUListElement> | undefined;
@@ -9,7 +9,6 @@ export interface UseTreeViewParameters<TSignatures extends readonly TreeViewAnyP
9
9
  }
10
10
  export interface UseTreeViewBaseProps<TSignatures extends readonly TreeViewAnyPluginSignature[]> {
11
11
  apiRef: React.RefObject<TreeViewPublicAPI<TSignatures> | undefined> | undefined;
12
- experimentalFeatures: TreeViewExperimentalFeatures<TSignatures>;
13
12
  }
14
13
  export interface UseTreeViewRootSlotProps extends Pick<React.HTMLAttributes<HTMLUListElement>, 'onFocus' | 'onBlur' | 'onKeyDown' | 'id' | 'aria-multiselectable' | 'role' | 'tabIndex'> {
15
14
  ref: React.Ref<HTMLUListElement>;
@@ -3,16 +3,12 @@ import { TreeViewContextValue } from "../TreeViewProvider/index.js";
3
3
  import { ConvertSignaturesIntoPlugins, TreeViewAnyPluginSignature, TreeViewInstance, TreeViewPublicAPI } from "../models/index.js";
4
4
  import { TreeViewCorePluginSignatures } from "../corePlugins/index.js";
5
5
  import { TreeViewStore } from "../utils/TreeViewStore.js";
6
- export declare const useTreeViewBuildContext: <TSignatures extends readonly TreeViewAnyPluginSignature[]>({
7
- plugins,
8
- instance,
9
- publicAPI,
10
- store,
11
- rootRef
12
- }: {
6
+ export declare const useTreeViewBuildContext: <TSignatures extends readonly TreeViewAnyPluginSignature[]>(parameters: UseTreeViewBuildContextParameters<TSignatures>) => TreeViewContextValue<TSignatures>;
7
+ interface UseTreeViewBuildContextParameters<TSignatures extends readonly TreeViewAnyPluginSignature[]> {
13
8
  plugins: ConvertSignaturesIntoPlugins<readonly [...TreeViewCorePluginSignatures, ...TSignatures]>;
14
9
  instance: TreeViewInstance<TSignatures>;
15
10
  publicAPI: TreeViewPublicAPI<TSignatures>;
16
11
  store: TreeViewStore<TSignatures>;
17
12
  rootRef: React.RefObject<HTMLUListElement | null>;
18
- }) => TreeViewContextValue<TSignatures>;
13
+ }
14
+ export {};
@@ -6,13 +6,14 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.useTreeViewBuildContext = void 0;
8
8
  var React = _interopRequireWildcard(require("react"));
9
- const useTreeViewBuildContext = ({
10
- plugins,
11
- instance,
12
- publicAPI,
13
- store,
14
- rootRef
15
- }) => {
9
+ const useTreeViewBuildContext = parameters => {
10
+ const {
11
+ plugins,
12
+ instance,
13
+ publicAPI,
14
+ store,
15
+ rootRef
16
+ } = parameters;
16
17
  const runItemPlugins = React.useCallback(itemPluginProps => {
17
18
  let finalRootRef = null;
18
19
  let finalContentRef = null;
@@ -1,6 +1,6 @@
1
1
  import { CleanupTracking, UnregisterToken, UnsubscribeFn } from "./CleanupTracking.js";
2
2
  export declare class TimerBasedCleanupTracking implements CleanupTracking {
3
- timeouts?: Map<number, NodeJS.Timeout> | undefined;
3
+ timeouts?: Map<number, number> | undefined;
4
4
  cleanupTimeout: number;
5
5
  constructor(timeout?: number);
6
6
  register(object: any, unsubscribe: UnsubscribeFn, unregisterToken: UnregisterToken): void;
@@ -50,7 +50,7 @@ const getPreviousNavigableItem = (state, itemId) => {
50
50
  let lastNavigableChild = getLastNavigableItemInArray(state, (0, _useTreeViewItems.selectorItemOrderedChildrenIds)(state, currentItemId));
51
51
  while ((0, _useTreeViewExpansion.selectorIsItemExpanded)(state, currentItemId) && lastNavigableChild != null) {
52
52
  currentItemId = lastNavigableChild;
53
- lastNavigableChild = (0, _useTreeViewItems.selectorItemOrderedChildrenIds)(state, currentItemId).find(childId => (0, _useTreeViewItems.selectorCanItemBeFocused)(state, childId));
53
+ lastNavigableChild = getLastNavigableItemInArray(state, (0, _useTreeViewItems.selectorItemOrderedChildrenIds)(state, currentItemId));
54
54
  }
55
55
  return currentItemId;
56
56
  };
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@mui/x-tree-view",
3
- "version": "8.2.0",
4
- "description": "The community edition of the Tree View components (MUI X).",
3
+ "version": "8.3.1",
5
4
  "author": "MUI Team",
5
+ "description": "The community edition of the MUI X Tree View components.",
6
6
  "main": "./index.js",
7
7
  "license": "MIT",
8
8
  "bugs": {
@@ -33,7 +33,7 @@
33
33
  "directory": "packages/x-tree-view"
34
34
  },
35
35
  "dependencies": {
36
- "@babel/runtime": "^7.27.0",
36
+ "@babel/runtime": "^7.27.1",
37
37
  "@mui/utils": "^7.0.2",
38
38
  "@types/react-transition-group": "^4.4.12",
39
39
  "clsx": "^2.1.1",
@@ -41,7 +41,7 @@
41
41
  "react-transition-group": "^4.4.5",
42
42
  "reselect": "^5.1.1",
43
43
  "use-sync-external-store": "^1.5.0",
44
- "@mui/x-internals": "8.2.0"
44
+ "@mui/x-internals": "8.3.1"
45
45
  },
46
46
  "peerDependencies": {
47
47
  "@emotion/react": "^11.9.0",
@@ -1,42 +0,0 @@
1
- import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
2
- const _excluded = ["apiRef", "experimentalFeatures"];
3
- export const extractPluginParamsFromProps = _ref => {
4
- let {
5
- props: {
6
- apiRef,
7
- experimentalFeatures: inExperimentalFeatures
8
- },
9
- plugins
10
- } = _ref,
11
- props = _objectWithoutPropertiesLoose(_ref.props, _excluded);
12
- const paramsLookup = {};
13
- plugins.forEach(plugin => {
14
- Object.assign(paramsLookup, plugin.params);
15
- });
16
- const pluginParams = {};
17
- const forwardedProps = {};
18
- Object.keys(props).forEach(propName => {
19
- const prop = props[propName];
20
- if (paramsLookup[propName]) {
21
- pluginParams[propName] = prop;
22
- } else {
23
- forwardedProps[propName] = prop;
24
- }
25
- });
26
- const experimentalFeatures = inExperimentalFeatures ?? {};
27
- const defaultizedPluginParams = plugins.reduce((acc, plugin) => {
28
- if (plugin.getDefaultizedParams) {
29
- return plugin.getDefaultizedParams({
30
- params: acc,
31
- experimentalFeatures
32
- });
33
- }
34
- return acc;
35
- }, pluginParams);
36
- return {
37
- apiRef,
38
- forwardedProps,
39
- pluginParams: defaultizedPluginParams,
40
- experimentalFeatures
41
- };
42
- };
File without changes
File without changes
@@ -1,7 +0,0 @@
1
- declare function useAssertModelConsistencyOutsideOfProduction<T>(parameters: {
2
- state: string;
3
- controlled: T | undefined;
4
- defaultValue: T;
5
- }): void;
6
- export declare const useAssertModelConsistency: typeof useAssertModelConsistencyOutsideOfProduction;
7
- export {};
@@ -1,23 +0,0 @@
1
- import { warnOnce } from '@mui/x-internals/warning';
2
- import * as React from 'react';
3
- function useAssertModelConsistencyOutsideOfProduction(parameters) {
4
- const {
5
- state,
6
- controlled,
7
- defaultValue
8
- } = parameters;
9
- const [{
10
- initialDefaultValue,
11
- isControlled
12
- }] = React.useState({
13
- initialDefaultValue: defaultValue,
14
- isControlled: controlled !== undefined
15
- });
16
- if (isControlled !== (controlled !== undefined)) {
17
- warnOnce([`MUI X: A component is changing the ${isControlled ? '' : 'un'}controlled ${state} state of Tree View to be ${isControlled ? 'un' : ''}controlled.`, 'Elements should not switch from uncontrolled to controlled (or vice versa).', `Decide between using a controlled or uncontrolled ${state} ` + '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'], 'error');
18
- }
19
- if (JSON.stringify(initialDefaultValue) !== JSON.stringify(defaultValue)) {
20
- warnOnce([`MUI X: A component is changing the default ${state} state of an uncontrolled Tree View after being initialized. ` + `To suppress this warning opt to use a controlled Tree View.`], 'error');
21
- }
22
- }
23
- export const useAssertModelConsistency = process.env.NODE_ENV === 'production' ? () => {} : useAssertModelConsistencyOutsideOfProduction;
@@ -1,50 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.extractPluginParamsFromProps = void 0;
8
- var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
9
- const _excluded = ["apiRef", "experimentalFeatures"];
10
- const extractPluginParamsFromProps = _ref => {
11
- let {
12
- props: {
13
- apiRef,
14
- experimentalFeatures: inExperimentalFeatures
15
- },
16
- plugins
17
- } = _ref,
18
- props = (0, _objectWithoutPropertiesLoose2.default)(_ref.props, _excluded);
19
- const paramsLookup = {};
20
- plugins.forEach(plugin => {
21
- Object.assign(paramsLookup, plugin.params);
22
- });
23
- const pluginParams = {};
24
- const forwardedProps = {};
25
- Object.keys(props).forEach(propName => {
26
- const prop = props[propName];
27
- if (paramsLookup[propName]) {
28
- pluginParams[propName] = prop;
29
- } else {
30
- forwardedProps[propName] = prop;
31
- }
32
- });
33
- const experimentalFeatures = inExperimentalFeatures ?? {};
34
- const defaultizedPluginParams = plugins.reduce((acc, plugin) => {
35
- if (plugin.getDefaultizedParams) {
36
- return plugin.getDefaultizedParams({
37
- params: acc,
38
- experimentalFeatures
39
- });
40
- }
41
- return acc;
42
- }, pluginParams);
43
- return {
44
- apiRef,
45
- forwardedProps,
46
- pluginParams: defaultizedPluginParams,
47
- experimentalFeatures
48
- };
49
- };
50
- exports.extractPluginParamsFromProps = extractPluginParamsFromProps;
File without changes
@@ -1 +0,0 @@
1
- "use strict";
@@ -1,7 +0,0 @@
1
- declare function useAssertModelConsistencyOutsideOfProduction<T>(parameters: {
2
- state: string;
3
- controlled: T | undefined;
4
- defaultValue: T;
5
- }): void;
6
- export declare const useAssertModelConsistency: typeof useAssertModelConsistencyOutsideOfProduction;
7
- export {};
@@ -1,30 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.useAssertModelConsistency = void 0;
8
- var _warning = require("@mui/x-internals/warning");
9
- var React = _interopRequireWildcard(require("react"));
10
- function useAssertModelConsistencyOutsideOfProduction(parameters) {
11
- const {
12
- state,
13
- controlled,
14
- defaultValue
15
- } = parameters;
16
- const [{
17
- initialDefaultValue,
18
- isControlled
19
- }] = React.useState({
20
- initialDefaultValue: defaultValue,
21
- isControlled: controlled !== undefined
22
- });
23
- if (isControlled !== (controlled !== undefined)) {
24
- (0, _warning.warnOnce)([`MUI X: A component is changing the ${isControlled ? '' : 'un'}controlled ${state} state of Tree View to be ${isControlled ? 'un' : ''}controlled.`, 'Elements should not switch from uncontrolled to controlled (or vice versa).', `Decide between using a controlled or uncontrolled ${state} ` + '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'], 'error');
25
- }
26
- if (JSON.stringify(initialDefaultValue) !== JSON.stringify(defaultValue)) {
27
- (0, _warning.warnOnce)([`MUI X: A component is changing the default ${state} state of an uncontrolled Tree View after being initialized. ` + `To suppress this warning opt to use a controlled Tree View.`], 'error');
28
- }
29
- }
30
- const useAssertModelConsistency = exports.useAssertModelConsistency = process.env.NODE_ENV === 'production' ? () => {} : useAssertModelConsistencyOutsideOfProduction;