@mui/x-tree-view 8.11.3 → 8.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/CHANGELOG.md +296 -6
  2. package/RichTreeView/RichTreeView.js +5 -5
  3. package/RichTreeView/RichTreeView.types.d.ts +2 -3
  4. package/RichTreeView/index.d.ts +1 -1
  5. package/SimpleTreeView/SimpleTreeView.types.d.ts +2 -3
  6. package/SimpleTreeView/index.d.ts +1 -1
  7. package/TreeItemIcon/TreeItemIcon.js +12 -3
  8. package/TreeItemIcon/TreeItemIcon.types.d.ts +4 -4
  9. package/esm/RichTreeView/RichTreeView.js +5 -5
  10. package/esm/RichTreeView/RichTreeView.types.d.ts +2 -3
  11. package/esm/RichTreeView/index.d.ts +1 -1
  12. package/esm/SimpleTreeView/SimpleTreeView.types.d.ts +2 -3
  13. package/esm/SimpleTreeView/index.d.ts +1 -1
  14. package/esm/TreeItemIcon/TreeItemIcon.js +12 -3
  15. package/esm/TreeItemIcon/TreeItemIcon.types.d.ts +4 -4
  16. package/esm/hooks/useApplyPropagationToSelectedItemsOnMount.js +2 -2
  17. package/esm/index.js +1 -1
  18. package/esm/internals/TreeViewProvider/TreeViewStyleContext.d.ts +3 -3
  19. package/esm/internals/index.d.ts +2 -2
  20. package/esm/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +5 -5
  21. package/esm/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +1 -1
  22. package/esm/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.d.ts +2 -2
  23. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.js +79 -158
  24. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.d.ts +0 -8
  25. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +0 -8
  26. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.types.d.ts +12 -26
  27. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.utils.d.ts +36 -2
  28. package/esm/internals/plugins/useTreeViewItems/useTreeViewItems.utils.js +115 -1
  29. package/esm/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +6 -6
  30. package/esm/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +1 -1
  31. package/esm/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +2 -2
  32. package/esm/internals/plugins/useTreeViewLazyLoading/index.d.ts +1 -1
  33. package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.d.ts +6 -2
  34. package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.js +7 -2
  35. package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.d.ts +8 -9
  36. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +12 -3
  37. package/esm/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +2 -2
  38. package/esm/internals/useTreeView/useTreeView.js +2 -2
  39. package/esm/useTreeItem/useTreeItem.js +3 -3
  40. package/hooks/useApplyPropagationToSelectedItemsOnMount.js +2 -3
  41. package/index.js +1 -1
  42. package/internals/TreeViewProvider/TreeViewStyleContext.d.ts +3 -3
  43. package/internals/index.d.ts +2 -2
  44. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +9 -9
  45. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +4 -4
  46. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.d.ts +2 -2
  47. package/internals/plugins/useTreeViewItems/useTreeViewItems.js +80 -159
  48. package/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.d.ts +0 -8
  49. package/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +0 -8
  50. package/internals/plugins/useTreeViewItems/useTreeViewItems.types.d.ts +12 -26
  51. package/internals/plugins/useTreeViewItems/useTreeViewItems.utils.d.ts +36 -2
  52. package/internals/plugins/useTreeViewItems/useTreeViewItems.utils.js +119 -2
  53. package/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +8 -8
  54. package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +2 -3
  55. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +2 -2
  56. package/internals/plugins/useTreeViewLazyLoading/index.d.ts +1 -1
  57. package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.d.ts +6 -2
  58. package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.selectors.js +7 -2
  59. package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.types.d.ts +8 -9
  60. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +12 -3
  61. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +2 -2
  62. package/internals/useTreeView/useTreeView.js +2 -2
  63. package/package.json +3 -3
  64. package/useTreeItem/useTreeItem.js +3 -3
  65. package/esm/internals/hooks/useLazyRef.d.ts +0 -1
  66. package/esm/internals/hooks/useLazyRef.js +0 -1
  67. package/esm/internals/hooks/useOnMount.d.ts +0 -1
  68. package/esm/internals/hooks/useOnMount.js +0 -1
  69. package/esm/internals/hooks/useTimeout.d.ts +0 -1
  70. package/esm/internals/hooks/useTimeout.js +0 -1
  71. package/internals/hooks/useLazyRef.d.ts +0 -1
  72. package/internals/hooks/useLazyRef.js +0 -13
  73. package/internals/hooks/useOnMount.d.ts +0 -1
  74. package/internals/hooks/useOnMount.js +0 -13
  75. package/internals/hooks/useTimeout.d.ts +0 -1
  76. package/internals/hooks/useTimeout.js +0 -13
@@ -3,9 +3,9 @@
3
3
  import _extends from "@babel/runtime/helpers/esm/extends";
4
4
  import * as React from 'react';
5
5
  import { useStore } from '@mui/x-internals/store';
6
- import useEventCallback from '@mui/utils/useEventCallback';
7
- import useForkRef from '@mui/utils/useForkRef';
8
- import useEnhancedEffect from '@mui/utils/useEnhancedEffect';
6
+ import { useEventCallback } from '@base-ui-components/utils/useEventCallback';
7
+ import { useMergedRefs } from '@base-ui-components/utils/useMergedRefs';
8
+ import { useIsoLayoutEffect } from '@base-ui-components/utils/useIsoLayoutEffect';
9
9
  import { useTreeViewContext } from "../../TreeViewProvider/index.js";
10
10
  import { TreeViewChildrenItemContext, TreeViewChildrenItemProvider } from "../../TreeViewProvider/TreeViewChildrenItemProvider.js";
11
11
  import { buildSiblingIndexes, TREE_VIEW_ROOT_PARENT_ID } from "../useTreeViewItems/useTreeViewItems.utils.js";
@@ -105,11 +105,11 @@ const useTreeViewJSXItemsItemPlugin = ({
105
105
  } = parentContext;
106
106
  const expandable = itemHasChildren(children);
107
107
  const pluginContentRef = React.useRef(null);
108
- const handleContentRef = useForkRef(pluginContentRef, contentRef);
108
+ const handleContentRef = useMergedRefs(pluginContentRef, contentRef);
109
109
  const treeId = useStore(store, idSelectors.treeId);
110
110
 
111
111
  // Prevent any flashing
112
- useEnhancedEffect(() => {
112
+ useIsoLayoutEffect(() => {
113
113
  const idAttribute = generateTreeItemIdAttribute({
114
114
  itemId,
115
115
  treeId,
@@ -121,7 +121,7 @@ const useTreeViewJSXItemsItemPlugin = ({
121
121
  unregisterChild(idAttribute);
122
122
  };
123
123
  }, [store, instance, registerChild, unregisterChild, itemId, id, treeId]);
124
- useEnhancedEffect(() => {
124
+ useIsoLayoutEffect(() => {
125
125
  return instance.insertJSXItem({
126
126
  id: itemId,
127
127
  idAttribute: id,
@@ -3,7 +3,7 @@
3
3
  import * as React from 'react';
4
4
  import { useStore } from '@mui/x-internals/store';
5
5
  import { useRtl } from '@mui/system/RtlProvider';
6
- import useEventCallback from '@mui/utils/useEventCallback';
6
+ import { useEventCallback } from '@base-ui-components/utils/useEventCallback';
7
7
  import { getFirstNavigableItem, getLastNavigableItem, getNextNavigableItem, getPreviousNavigableItem, isTargetInDescendants } from "../../utils/tree.js";
8
8
  import { hasPlugin } from "../../utils/plugins.js";
9
9
  import { useTreeViewLabel } from "../useTreeViewLabel/index.js";
@@ -1,5 +1,5 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
- import useEnhancedEffect from '@mui/utils/useEnhancedEffect';
2
+ import { useIsoLayoutEffect } from '@base-ui-components/utils/useIsoLayoutEffect';
3
3
  import { useTreeViewLabelItemPlugin } from "./useTreeViewLabel.itemPlugin.js";
4
4
  import { labelSelectors } from "./useTreeViewLabel.selectors.js";
5
5
  export const useTreeViewLabel = ({
@@ -36,7 +36,7 @@ export const useTreeViewLabel = ({
36
36
  params.onItemLabelChange(itemId, label);
37
37
  }
38
38
  };
39
- useEnhancedEffect(() => {
39
+ useIsoLayoutEffect(() => {
40
40
  store.set('label', _extends({}, store.state.items, {
41
41
  isItemEditable: params.isItemEditable
42
42
  }));
@@ -1,2 +1,2 @@
1
- export type { UseTreeViewLazyLoadingSignature, UseTreeViewLazyLoadingParameters, UseTreeViewLazyLoadingInstance } from "./useTreeViewLazyLoading.types.js";
1
+ export type { UseTreeViewLazyLoadingSignature, UseTreeViewLazyLoadingParameters, UseTreeViewLazyLoadingInstance, DataSource } from "./useTreeViewLazyLoading.types.js";
2
2
  export { lazyLoadingSelectors } from "./useTreeViewLazyLoading.selectors.js";
@@ -12,9 +12,13 @@ export declare const lazyLoadingSelectors: {
12
12
  /**
13
13
  * Checks whether an item is loading.
14
14
  */
15
- isItemLoading: (state: TreeViewState<[], [UseTreeViewLazyLoadingSignature]>, itemId: string) => boolean;
15
+ isItemLoading: (state: TreeViewState<[], [UseTreeViewLazyLoadingSignature]>, itemId: string | null) => boolean;
16
16
  /**
17
17
  * Checks whether an item has errors.
18
18
  */
19
- itemHasError: (state: TreeViewState<[], [UseTreeViewLazyLoadingSignature]>, itemId: string) => boolean;
19
+ itemHasError: (state: TreeViewState<[], [UseTreeViewLazyLoadingSignature]>, itemId: string | null) => boolean;
20
+ /**
21
+ * Get an item error.
22
+ */
23
+ itemError: (state: TreeViewState<[], [UseTreeViewLazyLoadingSignature]>, itemId: string | null) => Error | null | undefined;
20
24
  };
@@ -1,4 +1,5 @@
1
1
  import { createSelector } from '@mui/x-internals/store';
2
+ import { TREE_VIEW_ROOT_PARENT_ID } from "../useTreeViewItems/index.js";
2
3
  export const lazyLoadingSelectors = {
3
4
  /**
4
5
  * Gets the data source used to lazy load items.
@@ -7,9 +8,13 @@ export const lazyLoadingSelectors = {
7
8
  /**
8
9
  * Checks whether an item is loading.
9
10
  */
10
- isItemLoading: createSelector((state, itemId) => state.lazyLoading?.dataSource.loading[itemId] ?? false),
11
+ isItemLoading: createSelector((state, itemId) => state.lazyLoading?.dataSource.loading[itemId ?? TREE_VIEW_ROOT_PARENT_ID] ?? false),
11
12
  /**
12
13
  * Checks whether an item has errors.
13
14
  */
14
- itemHasError: createSelector((state, itemId) => !!state.lazyLoading?.dataSource.errors[itemId])
15
+ itemHasError: createSelector((state, itemId) => !!state.lazyLoading?.dataSource.errors[itemId ?? TREE_VIEW_ROOT_PARENT_ID]),
16
+ /**
17
+ * Get an item error.
18
+ */
19
+ itemError: createSelector((state, itemId) => state.lazyLoading?.dataSource.errors[itemId ?? TREE_VIEW_ROOT_PARENT_ID])
15
20
  };
@@ -5,7 +5,7 @@ import { TreeViewItemId } from "../../../models/index.js";
5
5
  import { UseTreeViewItemsSignature } from "../useTreeViewItems/index.js";
6
6
  import { UseTreeViewExpansionSignature } from "../useTreeViewExpansion/index.js";
7
7
  import { UseTreeViewSelectionSignature } from "../useTreeViewSelection/index.js";
8
- type DataSource<R extends {}> = {
8
+ export type DataSource<R extends {}> = {
9
9
  /**
10
10
  * Used to determine the number of children the item has.
11
11
  * Only relevant for lazy-loaded trees.
@@ -43,7 +43,7 @@ export interface UseTreeViewLazyLoadingInstance extends UseTreeViewLazyLoadingPu
43
43
  * @param {TreeViewItemId[]} parentIds The ids of the items to fetch the children of.
44
44
  * @returns {Promise<void>} The promise resolved when the items are fetched.
45
45
  */
46
- fetchItems: (parentIds?: TreeViewItemId[]) => Promise<void>;
46
+ fetchItems: (parentIds: TreeViewItemId[]) => Promise<void>;
47
47
  /**
48
48
  * Method used for fetching an item's children.
49
49
  * Only relevant for lazy-loaded tree views.
@@ -54,21 +54,21 @@ export interface UseTreeViewLazyLoadingInstance extends UseTreeViewLazyLoadingPu
54
54
  * @returns {Promise<void>} The promise resolved when the items are fetched.
55
55
  */
56
56
  fetchItemChildren: (parameters: {
57
- itemId: TreeViewItemId;
57
+ itemId: TreeViewItemId | null;
58
58
  forceRefresh?: boolean;
59
59
  }) => Promise<void>;
60
60
  /**
61
61
  * Set the loading state of an item.
62
- * @param {TreeViewItemId} itemId The id of the item to set the loading state of.
62
+ * @param {TreeViewItemId} itemId The id of the item to set the loading state of. If `null` is passed, it will set the loading state of the root.
63
63
  * @param {boolean} isLoading True if the item is loading.
64
64
  */
65
- setDataSourceLoading: (itemId: TreeViewItemId, isLoading: boolean) => void;
65
+ setDataSourceLoading: (itemId: TreeViewItemId | null, isLoading: boolean) => void;
66
66
  /**
67
67
  * Set the error state of an item.
68
- * @param {TreeViewItemId} itemId The id of the item to set the error state of.
68
+ * @param {TreeViewItemId} itemId The id of the item to set the error state of. If `null` is passed, it will set the error state of the root.
69
69
  * @param {Error | null} error The error caught on the item.
70
70
  */
71
- setDataSourceError: (itemId: TreeViewItemId, error: Error | null) => void;
71
+ setDataSourceError: (itemId: TreeViewItemId | null, error: Error | null) => void;
72
72
  }
73
73
  export interface UseTreeViewLazyLoadingParameters<R extends {}> {
74
74
  /**
@@ -97,5 +97,4 @@ export type UseTreeViewLazyLoadingSignature = TreeViewPluginSignature<{
97
97
  instance: UseTreeViewLazyLoadingInstance;
98
98
  state: UseTreeViewLazyLoadingState;
99
99
  dependencies: [UseTreeViewItemsSignature, UseTreeViewExpansionSignature, UseTreeViewSelectionSignature];
100
- }>;
101
- export {};
100
+ }>;
@@ -19,11 +19,20 @@ const selectorCheckboxSelectionStatus = createSelector((state, itemId) => {
19
19
  itemsSelectors.itemOrderedChildrenIds(state, itemToTraverseId).forEach(traverseDescendants);
20
20
  };
21
21
  traverseDescendants(itemId);
22
- if (hasSelectedDescendant && hasUnSelectedDescendant) {
22
+ const shouldSelectBasedOnDescendants = selectionSelectors.propagationRules(state).parents;
23
+ if (shouldSelectBasedOnDescendants) {
24
+ if (hasSelectedDescendant && hasUnSelectedDescendant) {
25
+ return 'indeterminate';
26
+ }
27
+ if (hasSelectedDescendant && !hasUnSelectedDescendant) {
28
+ return 'checked';
29
+ }
30
+ return 'empty';
31
+ }
32
+ if (hasSelectedDescendant) {
23
33
  return 'indeterminate';
24
34
  }
25
- const shouldSelectBasedOnDescendants = selectionSelectors.propagationRules(state).parents;
26
- return shouldSelectBasedOnDescendants && hasSelectedDescendant && !hasUnSelectedDescendant ? 'checked' : 'empty';
35
+ return 'empty';
27
36
  });
28
37
  export const useTreeViewSelectionItemPlugin = ({
29
38
  props
@@ -1,7 +1,7 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
3
  import { useAssertModelConsistency } from '@mui/x-internals/useAssertModelConsistency';
4
- import useEnhancedEffect from '@mui/utils/useEnhancedEffect';
4
+ import { useIsoLayoutEffect } from '@base-ui-components/utils/useIsoLayoutEffect';
5
5
  import { findOrderInTremauxTree, getAllNavigableItems, getFirstNavigableItem, getLastNavigableItem, getNonDisabledItemsInRange } from "../../utils/tree.js";
6
6
  import { propagateSelection, getAddedAndRemovedItems, getLookupFromArray } from "./useTreeViewSelection.utils.js";
7
7
  import { selectionSelectors } from "./useTreeViewSelection.selectors.js";
@@ -168,7 +168,7 @@ export const useTreeViewSelection = ({
168
168
  }
169
169
  setSelectedItems(event, newSelectedItems);
170
170
  };
171
- useEnhancedEffect(() => {
171
+ useIsoLayoutEffect(() => {
172
172
  store.set('selection', {
173
173
  selectedItems: params.selectedItems === undefined ? store.state.selection.selectedItems : params.selectedItems,
174
174
  isEnabled: !params.disableSelection,
@@ -2,7 +2,7 @@ import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import * as React from 'react';
3
3
  import { useRefWithInit } from '@base-ui-components/utils/useRefWithInit';
4
4
  import { Store } from '@mui/x-internals/store';
5
- import useForkRef from '@mui/utils/useForkRef';
5
+ import { useMergedRefs } from '@base-ui-components/utils/useMergedRefs';
6
6
  import { TREE_VIEW_CORE_PLUGINS } from "../corePlugins/index.js";
7
7
  import { useExtractPluginParamsFromProps } from "./useExtractPluginParamsFromProps.js";
8
8
  import { useTreeViewBuildContext } from "./useTreeViewBuildContext.js";
@@ -46,7 +46,7 @@ export const useTreeView = ({
46
46
  const instance = useRefWithInit(() => ({})).current;
47
47
  const publicAPI = useTreeViewApiInitialization(apiRef);
48
48
  const innerRootRef = React.useRef(null);
49
- const handleRootRef = useForkRef(innerRootRef, rootRef);
49
+ const handleRootRef = useMergedRefs(innerRootRef, rootRef);
50
50
  const store = useRefWithInit(() => {
51
51
  const initialState = {};
52
52
  for (const plugin of plugins) {
@@ -4,7 +4,7 @@ import _extends from "@babel/runtime/helpers/esm/extends";
4
4
  import * as React from 'react';
5
5
  import { useStore } from '@mui/x-internals/store';
6
6
  import extractEventHandlers from '@mui/utils/extractEventHandlers';
7
- import useForkRef from '@mui/utils/useForkRef';
7
+ import { useMergedRefs } from '@base-ui-components/utils/useMergedRefs';
8
8
  import { useTreeViewContext } from "../internals/TreeViewProvider/index.js";
9
9
  import { useTreeItemUtils } from "../hooks/useTreeItemUtils/index.js";
10
10
  import { TreeViewItemDepthContext } from "../internals/TreeViewItemDepthContext/index.js";
@@ -50,8 +50,8 @@ export const useTreeItem = parameters => {
50
50
  });
51
51
  const rootRefObject = React.useRef(null);
52
52
  const contentRefObject = React.useRef(null);
53
- const handleRootRef = useForkRef(rootRef, pluginRootRef, rootRefObject);
54
- const handleContentRef = useForkRef(contentRef, contentRefObject);
53
+ const handleRootRef = useMergedRefs(rootRef, pluginRootRef, rootRefObject);
54
+ const handleContentRef = useMergedRefs(contentRef, contentRefObject);
55
55
  const checkboxRef = React.useRef(null);
56
56
  const treeId = useStore(store, idSelectors.treeId);
57
57
  const isSelectionEnabledForItem = useStore(store, selectionSelectors.canItemBeSelected, itemId);
@@ -1,11 +1,10 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
6
  exports.useApplyPropagationToSelectedItemsOnMount = useApplyPropagationToSelectedItemsOnMount;
8
- var _useLazyRef = _interopRequireDefault(require("@mui/utils/useLazyRef"));
7
+ var _useRefWithInit = require("@base-ui-components/utils/useRefWithInit");
9
8
  var _useTreeViewSelection = require("../internals/plugins/useTreeViewSelection/useTreeViewSelection.utils");
10
9
  const defaultGetItemId = item => item.id;
11
10
  const defaultGetItemChildren = item => item.children;
@@ -59,7 +58,7 @@ function useApplyPropagationToSelectedItemsOnMount(parameters) {
59
58
  selectedItems,
60
59
  selectionPropagation
61
60
  } = parameters;
62
- return (0, _useLazyRef.default)(() => {
61
+ return (0, _useRefWithInit.useRefWithInit)(() => {
63
62
  const lookup = (0, _useTreeViewSelection.getLookupFromArray)(selectedItems);
64
63
  function walk(items, isParentSelected) {
65
64
  for (const item of items) {
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @mui/x-tree-view v8.11.3
2
+ * @mui/x-tree-view v8.13.0
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -28,16 +28,16 @@ export interface TreeViewSlots {
28
28
  /**
29
29
  * The default icon used to collapse the item.
30
30
  */
31
- collapseIcon?: React.ElementType;
31
+ collapseIcon?: React.ElementType | null;
32
32
  /**
33
33
  * The default icon used to expand the item.
34
34
  */
35
- expandIcon?: React.ElementType;
35
+ expandIcon?: React.ElementType | null;
36
36
  /**
37
37
  * The default icon displayed next to an end item.
38
38
  * This is applied to all Tree Items and can be overridden by the TreeItem `icon` slot prop.
39
39
  */
40
- endIcon?: React.ElementType;
40
+ endIcon?: React.ElementType | null;
41
41
  }
42
42
  export interface TreeViewSlotProps {
43
43
  collapseIcon?: SlotComponentProps<'svg', {}, {}>;
@@ -3,7 +3,7 @@ export { TreeViewProvider, useTreeViewContext } from "./TreeViewProvider/index.j
3
3
  export { RichTreeViewItems } from "./components/RichTreeViewItems.js";
4
4
  export type { RichTreeViewItemsSlots, RichTreeViewItemsSlotProps } from "./components/RichTreeViewItems.js";
5
5
  export { unstable_resetCleanupTracking, useInstanceEventHandler } from "./hooks/useInstanceEventHandler.js";
6
- export type { TreeViewPlugin, TreeViewPluginSignature, ConvertPluginsIntoSignatures, MergeSignaturesProperty, TreeViewPublicAPI, TreeViewState, TreeViewItemMeta, TreeViewInstance, TreeViewItemPlugin, TreeViewUsedStore } from "./models/index.js";
6
+ export type { TreeViewPlugin, TreeViewPluginSignature, ConvertPluginsIntoSignatures, MergeSignaturesProperty, TreeViewPublicAPI, TreeViewState, TreeViewItemMeta, TreeViewInstance, TreeViewItemPlugin, TreeViewUsedStore, TreeViewUsedInstance, TreeViewUsedParamsWithDefaults } from "./models/index.js";
7
7
  export type { TreeViewCorePluginParameters } from "./corePlugins/index.js";
8
8
  export { useTreeViewExpansion, expansionSelectors } from "./plugins/useTreeViewExpansion/index.js";
9
9
  export type { UseTreeViewExpansionSignature, UseTreeViewExpansionParameters } from "./plugins/useTreeViewExpansion/index.js";
@@ -17,7 +17,7 @@ export { useTreeViewItems, buildSiblingIndexes, itemsSelectors, TREE_VIEW_ROOT_P
17
17
  export type { UseTreeViewItemsSignature, UseTreeViewItemsParameters, UseTreeViewItemsState } from "./plugins/useTreeViewItems/index.js";
18
18
  export { useTreeViewLabel, labelSelectors } from "./plugins/useTreeViewLabel/index.js";
19
19
  export type { UseTreeViewLabelSignature, UseTreeViewLabelParameters } from "./plugins/useTreeViewLabel/index.js";
20
- export type { UseTreeViewLazyLoadingSignature, UseTreeViewLazyLoadingParameters, UseTreeViewLazyLoadingInstance } from "./plugins/useTreeViewLazyLoading/index.js";
20
+ export type { UseTreeViewLazyLoadingSignature, UseTreeViewLazyLoadingParameters, UseTreeViewLazyLoadingInstance, DataSource } from "./plugins/useTreeViewLazyLoading/index.js";
21
21
  export { lazyLoadingSelectors } from "./plugins/useTreeViewLazyLoading/index.js";
22
22
  export { useTreeViewJSXItems } from "./plugins/useTreeViewJSXItems/index.js";
23
23
  export type { UseTreeViewJSXItemsSignature, UseTreeViewJSXItemsParameters } from "./plugins/useTreeViewJSXItems/index.js";
@@ -7,8 +7,8 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.useTreeViewExpansion = void 0;
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
9
  var _useAssertModelConsistency = require("@mui/x-internals/useAssertModelConsistency");
10
- var _useEventCallback = _interopRequireDefault(require("@mui/utils/useEventCallback"));
11
- var _useEnhancedEffect = _interopRequireDefault(require("@mui/utils/useEnhancedEffect"));
10
+ var _useEventCallback = require("@base-ui-components/utils/useEventCallback");
11
+ var _useIsoLayoutEffect = require("@base-ui-components/utils/useIsoLayoutEffect");
12
12
  var _useTreeViewExpansion = require("./useTreeViewExpansion.selectors");
13
13
  var _useTreeViewExpansion2 = require("./useTreeViewExpansion.utils");
14
14
  var _useTreeViewItems = require("../useTreeViewItems/useTreeViewItems.selectors");
@@ -24,7 +24,7 @@ const useTreeViewExpansion = ({
24
24
  controlled: params.expandedItems,
25
25
  defaultValue: params.defaultExpandedItems
26
26
  });
27
- (0, _useEnhancedEffect.default)(() => {
27
+ (0, _useIsoLayoutEffect.useIsoLayoutEffect)(() => {
28
28
  const newExpansionTrigger = (0, _useTreeViewExpansion2.getExpansionTrigger)({
29
29
  isItemEditable: params.isItemEditable,
30
30
  expansionTrigger: params.expansionTrigger
@@ -44,10 +44,10 @@ const useTreeViewExpansion = ({
44
44
  }
45
45
  params.onExpandedItemsChange?.(event, value);
46
46
  };
47
- const resetItemExpansion = (0, _useEventCallback.default)(() => {
47
+ const resetItemExpansion = (0, _useEventCallback.useEventCallback)(() => {
48
48
  setExpandedItems(null, []);
49
49
  });
50
- const applyItemExpansion = (0, _useEventCallback.default)(({
50
+ const applyItemExpansion = (0, _useEventCallback.useEventCallback)(({
51
51
  itemId,
52
52
  event,
53
53
  shouldBeExpanded
@@ -64,7 +64,7 @@ const useTreeViewExpansion = ({
64
64
  }
65
65
  setExpandedItems(event, newExpanded);
66
66
  });
67
- const setItemExpansion = (0, _useEventCallback.default)(({
67
+ const setItemExpansion = (0, _useEventCallback.useEventCallback)(({
68
68
  itemId,
69
69
  event = null,
70
70
  shouldBeExpanded
@@ -90,8 +90,8 @@ const useTreeViewExpansion = ({
90
90
  shouldBeExpanded: cleanShouldBeExpanded
91
91
  });
92
92
  });
93
- const isItemExpanded = (0, _useEventCallback.default)(itemId => {
94
- return _useTreeViewExpansion.expansionSelectors.isItemExpandable(store.state, itemId);
93
+ const isItemExpanded = (0, _useEventCallback.useEventCallback)(itemId => {
94
+ return _useTreeViewExpansion.expansionSelectors.isItemExpanded(store.state, itemId);
95
95
  });
96
96
  const expandAllSiblings = (event, itemId) => {
97
97
  const itemMeta = _useTreeViewItems.itemsSelectors.itemMeta(store.state, itemId);
@@ -114,7 +114,7 @@ const useTreeViewExpansion = ({
114
114
  /**
115
115
  * Update the controlled model when the `expandedItems` prop changes.
116
116
  */
117
- (0, _useEnhancedEffect.default)(() => {
117
+ (0, _useIsoLayoutEffect.useIsoLayoutEffect)(() => {
118
118
  const expandedItems = params.expandedItems;
119
119
  if (expandedItems !== undefined) {
120
120
  store.set('expansion', (0, _extends2.default)({}, store.state.expansion, {
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.useTreeViewFocus = void 0;
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
- var _useEventCallback = _interopRequireDefault(require("@mui/utils/useEventCallback"));
9
+ var _useEventCallback = require("@base-ui-components/utils/useEventCallback");
10
10
  var _store = require("@mui/x-internals/store");
11
11
  var _useTreeViewFocus = require("./useTreeViewFocus.selectors");
12
12
  var _useTreeViewExpansion = require("../useTreeViewExpansion/useTreeViewExpansion.selectors");
@@ -16,7 +16,7 @@ const useTreeViewFocus = ({
16
16
  params,
17
17
  store
18
18
  }) => {
19
- const setFocusedItemId = (0, _useEventCallback.default)(itemId => {
19
+ const setFocusedItemId = (0, _useEventCallback.useEventCallback)(itemId => {
20
20
  const focusedItemId = _useTreeViewFocus.focusSelectors.focusedItemId(store.state);
21
21
  if (focusedItemId === itemId) {
22
22
  return;
@@ -39,13 +39,13 @@ const useTreeViewFocus = ({
39
39
  params.onItemFocus(event, itemId);
40
40
  }
41
41
  };
42
- const focusItem = (0, _useEventCallback.default)((event, itemId) => {
42
+ const focusItem = (0, _useEventCallback.useEventCallback)((event, itemId) => {
43
43
  // If we receive an itemId, and it is visible, the focus will be set to it
44
44
  if (isItemVisible(itemId)) {
45
45
  innerFocusItem(event, itemId);
46
46
  }
47
47
  });
48
- const removeFocusedItem = (0, _useEventCallback.default)(() => {
48
+ const removeFocusedItem = (0, _useEventCallback.useEventCallback)(() => {
49
49
  const focusedItemId = _useTreeViewFocus.focusSelectors.focusedItemId(store.state);
50
50
  if (focusedItemId == null) {
51
51
  return;
@@ -9,10 +9,10 @@ export interface UseTreeViewFocusPublicAPI {
9
9
  *
10
10
  * If the item is the child of a collapsed item, then this method will do nothing.
11
11
  * Make sure to expand the ancestors of the item before calling this method if needed.
12
- * @param {React.SyntheticEvent} event The DOM event that triggered the change.
12
+ * @param {React.SyntheticEvent | null} event The DOM event that triggered the change.
13
13
  * @param {TreeViewItemId} itemId The id of the item to focus.
14
14
  */
15
- focusItem: (event: React.SyntheticEvent, itemId: string) => void;
15
+ focusItem: (event: React.SyntheticEvent | null, itemId: string) => void;
16
16
  }
17
17
  export interface UseTreeViewFocusInstance extends UseTreeViewFocusPublicAPI {
18
18
  /**