@mui/x-tree-view 9.6.0 → 9.8.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 (150) hide show
  1. package/CHANGELOG.md +241 -2
  2. package/RichTreeView/RichTreeView.d.mts +1 -1
  3. package/RichTreeView/RichTreeView.d.ts +1 -1
  4. package/RichTreeView/RichTreeView.types.d.mts +10 -10
  5. package/RichTreeView/RichTreeView.types.d.ts +10 -10
  6. package/RichTreeView/richTreeViewClasses.d.mts +1 -1
  7. package/RichTreeView/richTreeViewClasses.d.ts +1 -1
  8. package/RichTreeView/useExtractRichTreeViewParameters.d.mts +4 -4
  9. package/RichTreeView/useExtractRichTreeViewParameters.d.ts +4 -4
  10. package/SimpleTreeView/SimpleTreeView.d.mts +1 -1
  11. package/SimpleTreeView/SimpleTreeView.d.ts +1 -1
  12. package/SimpleTreeView/SimpleTreeView.types.d.mts +9 -9
  13. package/SimpleTreeView/SimpleTreeView.types.d.ts +9 -9
  14. package/SimpleTreeView/simpleTreeViewClasses.d.mts +1 -1
  15. package/SimpleTreeView/simpleTreeViewClasses.d.ts +1 -1
  16. package/SimpleTreeView/useExtractSimpleTreeViewParameters.d.mts +3 -3
  17. package/SimpleTreeView/useExtractSimpleTreeViewParameters.d.ts +3 -3
  18. package/TreeItem/TreeItem.d.mts +3 -3
  19. package/TreeItem/TreeItem.d.ts +3 -3
  20. package/TreeItem/TreeItem.types.d.mts +10 -10
  21. package/TreeItem/TreeItem.types.d.ts +10 -10
  22. package/TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.d.mts +1 -1
  23. package/TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.d.ts +1 -1
  24. package/TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.types.d.mts +2 -2
  25. package/TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.types.d.ts +2 -2
  26. package/TreeItemIcon/TreeItemIcon.d.mts +1 -1
  27. package/TreeItemIcon/TreeItemIcon.d.ts +1 -1
  28. package/TreeItemIcon/TreeItemIcon.types.d.mts +3 -3
  29. package/TreeItemIcon/TreeItemIcon.types.d.ts +3 -3
  30. package/TreeItemLabelInput/TreeItemLabelInput.types.d.mts +2 -2
  31. package/TreeItemLabelInput/TreeItemLabelInput.types.d.ts +2 -2
  32. package/TreeItemProvider/TreeItemProvider.d.mts +1 -1
  33. package/TreeItemProvider/TreeItemProvider.d.ts +1 -1
  34. package/TreeItemProvider/TreeItemProvider.types.d.mts +2 -2
  35. package/TreeItemProvider/TreeItemProvider.types.d.ts +2 -2
  36. package/hooks/useApplyPropagationToSelectedItemsOnMount.d.mts +1 -1
  37. package/hooks/useApplyPropagationToSelectedItemsOnMount.d.ts +1 -1
  38. package/hooks/useRichTreeViewApiRef.d.mts +3 -3
  39. package/hooks/useRichTreeViewApiRef.d.ts +3 -3
  40. package/hooks/useSimpleTreeViewApiRef.d.mts +2 -2
  41. package/hooks/useSimpleTreeViewApiRef.d.ts +2 -2
  42. package/hooks/useTreeItemModel.d.mts +1 -1
  43. package/hooks/useTreeItemModel.d.ts +1 -1
  44. package/hooks/useTreeItemUtils/useTreeItemUtils.d.mts +3 -3
  45. package/hooks/useTreeItemUtils/useTreeItemUtils.d.ts +3 -3
  46. package/index.js +1 -1
  47. package/index.mjs +1 -1
  48. package/internals/MinimalTreeViewStore/MinimalTreeViewStore.d.mts +15 -5
  49. package/internals/MinimalTreeViewStore/MinimalTreeViewStore.d.ts +15 -5
  50. package/internals/MinimalTreeViewStore/MinimalTreeViewStore.js +32 -8
  51. package/internals/MinimalTreeViewStore/MinimalTreeViewStore.mjs +32 -8
  52. package/internals/MinimalTreeViewStore/MinimalTreeViewStore.types.d.mts +2 -2
  53. package/internals/MinimalTreeViewStore/MinimalTreeViewStore.types.d.ts +2 -2
  54. package/internals/MinimalTreeViewStore/MinimalTreeViewStore.utils.d.mts +2 -2
  55. package/internals/MinimalTreeViewStore/MinimalTreeViewStore.utils.d.ts +2 -2
  56. package/internals/MinimalTreeViewStore/TreeViewItemPluginManager.d.mts +1 -1
  57. package/internals/MinimalTreeViewStore/TreeViewItemPluginManager.d.ts +1 -1
  58. package/internals/RichTreeViewStore/RichTreeViewStore.d.mts +2 -2
  59. package/internals/RichTreeViewStore/RichTreeViewStore.d.ts +2 -2
  60. package/internals/RichTreeViewStore/RichTreeViewStore.types.d.mts +3 -3
  61. package/internals/RichTreeViewStore/RichTreeViewStore.types.d.ts +3 -3
  62. package/internals/RichTreeViewStore/RichTreeViewStore.utils.d.mts +2 -2
  63. package/internals/RichTreeViewStore/RichTreeViewStore.utils.d.ts +2 -2
  64. package/internals/SimpleTreeViewStore/SimpleTreeViewStore.d.mts +1 -1
  65. package/internals/SimpleTreeViewStore/SimpleTreeViewStore.d.ts +1 -1
  66. package/internals/SimpleTreeViewStore/SimpleTreeViewStore.types.d.mts +1 -1
  67. package/internals/SimpleTreeViewStore/SimpleTreeViewStore.types.d.ts +1 -1
  68. package/internals/SimpleTreeViewStore/SimpleTreeViewStore.utils.d.mts +2 -2
  69. package/internals/SimpleTreeViewStore/SimpleTreeViewStore.utils.d.ts +2 -2
  70. package/internals/TreeViewItemDepthContext/TreeViewItemDepthContext.d.mts +2 -2
  71. package/internals/TreeViewItemDepthContext/TreeViewItemDepthContext.d.ts +2 -2
  72. package/internals/TreeViewProvider/TreeViewContext.d.mts +2 -2
  73. package/internals/TreeViewProvider/TreeViewContext.d.ts +2 -2
  74. package/internals/TreeViewProvider/TreeViewProvider.d.mts +2 -2
  75. package/internals/TreeViewProvider/TreeViewProvider.d.ts +2 -2
  76. package/internals/TreeViewProvider/TreeViewProvider.types.d.mts +6 -5
  77. package/internals/TreeViewProvider/TreeViewProvider.types.d.ts +6 -5
  78. package/internals/TreeViewProvider/TreeViewStyleContext.d.mts +1 -1
  79. package/internals/TreeViewProvider/TreeViewStyleContext.d.ts +1 -1
  80. package/internals/TreeViewProvider/useTreeViewBuildContext.d.mts +2 -2
  81. package/internals/TreeViewProvider/useTreeViewBuildContext.d.ts +2 -2
  82. package/internals/components/RichTreeViewItems.d.mts +4 -3
  83. package/internals/components/RichTreeViewItems.d.ts +4 -3
  84. package/internals/hooks/useTreeViewRootProps.d.mts +5 -5
  85. package/internals/hooks/useTreeViewRootProps.d.ts +5 -5
  86. package/internals/hooks/useTreeViewStore.d.mts +1 -1
  87. package/internals/hooks/useTreeViewStore.d.ts +1 -1
  88. package/internals/hooks/useTreeViewStore.js +7 -4
  89. package/internals/hooks/useTreeViewStore.mjs +7 -4
  90. package/internals/models/events.d.mts +2 -2
  91. package/internals/models/events.d.ts +2 -2
  92. package/internals/models/itemPlugin.d.mts +5 -5
  93. package/internals/models/itemPlugin.d.ts +5 -5
  94. package/internals/models/treeView.d.mts +1 -1
  95. package/internals/models/treeView.d.ts +1 -1
  96. package/internals/plugins/expansion/TreeViewExpansionPlugin.d.mts +1 -1
  97. package/internals/plugins/expansion/TreeViewExpansionPlugin.d.ts +1 -1
  98. package/internals/plugins/expansion/selectors.d.mts +1 -1
  99. package/internals/plugins/expansion/selectors.d.ts +1 -1
  100. package/internals/plugins/expansion/utils.d.mts +1 -1
  101. package/internals/plugins/expansion/utils.d.ts +1 -1
  102. package/internals/plugins/focus/TreeViewFocusPlugin.d.mts +1 -1
  103. package/internals/plugins/focus/TreeViewFocusPlugin.d.ts +1 -1
  104. package/internals/plugins/focus/TreeViewFocusPlugin.js +2 -2
  105. package/internals/plugins/focus/TreeViewFocusPlugin.mjs +2 -2
  106. package/internals/plugins/focus/selectors.d.mts +1 -1
  107. package/internals/plugins/focus/selectors.d.ts +1 -1
  108. package/internals/plugins/id/selectors.d.mts +1 -1
  109. package/internals/plugins/id/selectors.d.ts +1 -1
  110. package/internals/plugins/items/TreeViewItemsPlugin.d.mts +2 -2
  111. package/internals/plugins/items/TreeViewItemsPlugin.d.ts +2 -2
  112. package/internals/plugins/items/selectors.d.mts +3 -3
  113. package/internals/plugins/items/selectors.d.ts +3 -3
  114. package/internals/plugins/items/utils.d.mts +2 -2
  115. package/internals/plugins/items/utils.d.ts +2 -2
  116. package/internals/plugins/jsxItems/TreeViewJSXItemsPlugin.d.mts +2 -2
  117. package/internals/plugins/jsxItems/TreeViewJSXItemsPlugin.d.ts +2 -2
  118. package/internals/plugins/jsxItems/TreeViewJSXItemsPlugin.js +2 -1
  119. package/internals/plugins/jsxItems/TreeViewJSXItemsPlugin.mjs +2 -1
  120. package/internals/plugins/jsxItems/itemPlugin.d.mts +2 -2
  121. package/internals/plugins/jsxItems/itemPlugin.d.ts +2 -2
  122. package/internals/plugins/keyboardNavigation/TreeViewKeyboardNavigationPlugin.d.mts +1 -1
  123. package/internals/plugins/keyboardNavigation/TreeViewKeyboardNavigationPlugin.d.ts +1 -1
  124. package/internals/plugins/labelEditing/TreeViewLabelEditingPlugin.d.mts +2 -2
  125. package/internals/plugins/labelEditing/TreeViewLabelEditingPlugin.d.ts +2 -2
  126. package/internals/plugins/labelEditing/itemPlugin.d.mts +2 -2
  127. package/internals/plugins/labelEditing/itemPlugin.d.ts +2 -2
  128. package/internals/plugins/labelEditing/selectors.d.mts +1 -1
  129. package/internals/plugins/labelEditing/selectors.d.ts +1 -1
  130. package/internals/plugins/lazyLoading/selectors.d.mts +1 -1
  131. package/internals/plugins/lazyLoading/selectors.d.ts +1 -1
  132. package/internals/plugins/lazyLoading/types.d.mts +1 -1
  133. package/internals/plugins/lazyLoading/types.d.ts +1 -1
  134. package/internals/plugins/selection/itemPlugin.d.mts +3 -3
  135. package/internals/plugins/selection/itemPlugin.d.ts +3 -3
  136. package/internals/plugins/selection/selectors.d.mts +1 -1
  137. package/internals/plugins/selection/selectors.d.ts +1 -1
  138. package/internals/utils/tree.d.mts +1 -1
  139. package/internals/utils/tree.d.ts +1 -1
  140. package/package.json +4 -4
  141. package/themeAugmentation/components.d.mts +1 -1
  142. package/themeAugmentation/components.d.ts +1 -1
  143. package/themeAugmentation/overrides.d.mts +3 -3
  144. package/themeAugmentation/overrides.d.ts +3 -3
  145. package/themeAugmentation/props.d.mts +3 -3
  146. package/themeAugmentation/props.d.ts +3 -3
  147. package/useTreeItem/useTreeItem.d.mts +4 -4
  148. package/useTreeItem/useTreeItem.d.ts +4 -4
  149. package/useTreeItem/useTreeItem.types.d.mts +3 -3
  150. package/useTreeItem/useTreeItem.types.d.ts +3 -3
@@ -1,5 +1,5 @@
1
- import { TreeViewProviderProps } from "./TreeViewProvider.types.js";
2
- import { TreeViewAnyStore } from "../models/index.js";
1
+ import type { TreeViewProviderProps } from "./TreeViewProvider.types.js";
2
+ import type { TreeViewAnyStore } from "../models/index.js";
3
3
  /**
4
4
  * Sets up the contexts for the underlying Tree Item components.
5
5
  *
@@ -1,10 +1,11 @@
1
- import * as React from 'react';
2
- import { TreeItemWrapper, TreeViewItemPluginResponse, TreeViewPublicAPI, TreeViewAnyStore } from "../models/index.mjs";
1
+ import type * as React from 'react';
2
+ import type { disposeSymbol } from '@mui/x-internals/disposable';
3
+ import type { TreeItemWrapper, TreeViewItemPluginResponse, TreeViewPublicAPI, TreeViewAnyStore } from "../models/index.mjs";
3
4
  import type { TreeItemProps } from "../../TreeItem/TreeItem.types.mjs";
4
- import { TreeViewClasses, TreeViewSlotProps, TreeViewSlots } from "./TreeViewStyleContext.mjs";
5
- import { UseTreeViewBuildContextParameters } from "./useTreeViewBuildContext.mjs";
5
+ import type { TreeViewClasses, TreeViewSlotProps, TreeViewSlots } from "./TreeViewStyleContext.mjs";
6
+ import type { UseTreeViewBuildContextParameters } from "./useTreeViewBuildContext.mjs";
6
7
  export type TreeViewItemPluginsRunner = (props: TreeItemProps) => Required<TreeViewItemPluginResponse>;
7
- export type TreeViewStoreInContext<TStore extends TreeViewAnyStore> = Omit<TStore, 'setState' | 'update' | 'set' | 'updateStateFromParameters' | 'disposeEffect' | 'registerStoreEffect' | 'itemPluginManager' | 'parameters'>;
8
+ export type TreeViewStoreInContext<TStore extends TreeViewAnyStore> = Omit<TStore, 'setState' | 'update' | 'set' | 'updateStateFromParameters' | 'disposables' | typeof disposeSymbol | 'mountEffect' | 'registerStoreEffect' | 'itemPluginManager' | 'parameters'>;
8
9
  export interface TreeViewContextValue<TStore extends TreeViewAnyStore> {
9
10
  publicAPI: TreeViewPublicAPI<TStore>;
10
11
  store: TreeViewStoreInContext<TStore>;
@@ -1,10 +1,11 @@
1
- import * as React from 'react';
2
- import { TreeItemWrapper, TreeViewItemPluginResponse, TreeViewPublicAPI, TreeViewAnyStore } from "../models/index.js";
1
+ import type * as React from 'react';
2
+ import type { disposeSymbol } from '@mui/x-internals/disposable';
3
+ import type { TreeItemWrapper, TreeViewItemPluginResponse, TreeViewPublicAPI, TreeViewAnyStore } from "../models/index.js";
3
4
  import type { TreeItemProps } from "../../TreeItem/TreeItem.types.js";
4
- import { TreeViewClasses, TreeViewSlotProps, TreeViewSlots } from "./TreeViewStyleContext.js";
5
- import { UseTreeViewBuildContextParameters } from "./useTreeViewBuildContext.js";
5
+ import type { TreeViewClasses, TreeViewSlotProps, TreeViewSlots } from "./TreeViewStyleContext.js";
6
+ import type { UseTreeViewBuildContextParameters } from "./useTreeViewBuildContext.js";
6
7
  export type TreeViewItemPluginsRunner = (props: TreeItemProps) => Required<TreeViewItemPluginResponse>;
7
- export type TreeViewStoreInContext<TStore extends TreeViewAnyStore> = Omit<TStore, 'setState' | 'update' | 'set' | 'updateStateFromParameters' | 'disposeEffect' | 'registerStoreEffect' | 'itemPluginManager' | 'parameters'>;
8
+ export type TreeViewStoreInContext<TStore extends TreeViewAnyStore> = Omit<TStore, 'setState' | 'update' | 'set' | 'updateStateFromParameters' | 'disposables' | typeof disposeSymbol | 'mountEffect' | 'registerStoreEffect' | 'itemPluginManager' | 'parameters'>;
8
9
  export interface TreeViewContextValue<TStore extends TreeViewAnyStore> {
9
10
  publicAPI: TreeViewPublicAPI<TStore>;
10
11
  store: TreeViewStoreInContext<TStore>;
@@ -1,4 +1,4 @@
1
- import { SlotComponentProps } from '@mui/utils/types';
1
+ import type { SlotComponentProps } from '@mui/utils/types';
2
2
  import * as React from 'react';
3
3
  export interface TreeViewClasses {
4
4
  /** Styles applied to the root element. */
@@ -1,4 +1,4 @@
1
- import { SlotComponentProps } from '@mui/utils/types';
1
+ import type { SlotComponentProps } from '@mui/utils/types';
2
2
  import * as React from 'react';
3
3
  export interface TreeViewClasses {
4
4
  /** Styles applied to the root element. */
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
- import { TreeViewContextValue, TreeViewItemPluginsRunner, TreeViewStoreInContext } from "./TreeViewProvider.types.mjs";
3
- import { TreeViewAnyStore, TreeViewPublicAPI, TreeItemWrapper } from "../models/index.mjs";
2
+ import type { TreeViewContextValue, TreeViewItemPluginsRunner, TreeViewStoreInContext } from "./TreeViewProvider.types.mjs";
3
+ import type { TreeViewAnyStore, TreeViewPublicAPI, TreeItemWrapper } from "../models/index.mjs";
4
4
  export declare const useTreeViewBuildContext: <TStore extends TreeViewAnyStore>(parameters: UseTreeViewBuildContextParameters<TStore>) => TreeViewContextValue<TStore>;
5
5
  export interface UseTreeViewBuildContextParameters<TStore extends TreeViewAnyStore> {
6
6
  store: TStore;
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
- import { TreeViewContextValue, TreeViewItemPluginsRunner, TreeViewStoreInContext } from "./TreeViewProvider.types.js";
3
- import { TreeViewAnyStore, TreeViewPublicAPI, TreeItemWrapper } from "../models/index.js";
2
+ import type { TreeViewContextValue, TreeViewItemPluginsRunner, TreeViewStoreInContext } from "./TreeViewProvider.types.js";
3
+ import type { TreeViewAnyStore, TreeViewPublicAPI, TreeItemWrapper } from "../models/index.js";
4
4
  export declare const useTreeViewBuildContext: <TStore extends TreeViewAnyStore>(parameters: UseTreeViewBuildContextParameters<TStore>) => TreeViewContextValue<TStore>;
5
5
  export interface UseTreeViewBuildContextParameters<TStore extends TreeViewAnyStore> {
6
6
  store: TStore;
@@ -1,7 +1,8 @@
1
1
  import * as React from 'react';
2
- import { SlotComponentProps } from '@mui/utils/types';
3
- import { TreeItem, TreeItemProps } from "../../TreeItem/index.mjs";
4
- import { TreeViewItemId } from "../../models/index.mjs";
2
+ import type { SlotComponentProps } from '@mui/utils/types';
3
+ import type { TreeItemProps } from "../../TreeItem/index.mjs";
4
+ import { TreeItem } from "../../TreeItem/index.mjs";
5
+ import type { TreeViewItemId } from "../../models/index.mjs";
5
6
  export declare const RichTreeViewItem: React.MemoExoticComponent<({
6
7
  itemSlot,
7
8
  itemSlotProps,
@@ -1,7 +1,8 @@
1
1
  import * as React from 'react';
2
- import { SlotComponentProps } from '@mui/utils/types';
3
- import { TreeItem, TreeItemProps } from "../../TreeItem/index.js";
4
- import { TreeViewItemId } from "../../models/index.js";
2
+ import type { SlotComponentProps } from '@mui/utils/types';
3
+ import type { TreeItemProps } from "../../TreeItem/index.js";
4
+ import { TreeItem } from "../../TreeItem/index.js";
5
+ import type { TreeViewItemId } from "../../models/index.js";
5
6
  export declare const RichTreeViewItem: React.MemoExoticComponent<({
6
7
  itemSlot,
7
8
  itemSlotProps,
@@ -1,8 +1,8 @@
1
- import * as React from 'react';
2
- import { EventHandlers } from '@mui/utils/types';
3
- import { TreeViewCancellableEvent } from "../../models/index.mjs";
4
- import { TreeViewAnyStore } from "../models/index.mjs";
5
- import { TreeViewStoreInContext } from "../TreeViewProvider/index.mjs";
1
+ import type * as React from 'react';
2
+ import type { EventHandlers } from '@mui/utils/types';
3
+ import type { TreeViewCancellableEvent } from "../../models/index.mjs";
4
+ import type { TreeViewAnyStore } from "../models/index.mjs";
5
+ import type { TreeViewStoreInContext } from "../TreeViewProvider/index.mjs";
6
6
  export declare function useTreeViewRootProps<TStore extends TreeViewAnyStore>(store: TreeViewStoreInContext<TStore>, forwardedProps: React.HTMLAttributes<HTMLUListElement>, ref: React.Ref<HTMLUListElement | null> | undefined): (otherHandlers: EventHandlers) => {
7
7
  style: React.CSSProperties;
8
8
  onFocus: (event: React.FocusEvent<HTMLUListElement> & TreeViewCancellableEvent) => void;
@@ -1,8 +1,8 @@
1
- import * as React from 'react';
2
- import { EventHandlers } from '@mui/utils/types';
3
- import { TreeViewCancellableEvent } from "../../models/index.js";
4
- import { TreeViewAnyStore } from "../models/index.js";
5
- import { TreeViewStoreInContext } from "../TreeViewProvider/index.js";
1
+ import type * as React from 'react';
2
+ import type { EventHandlers } from '@mui/utils/types';
3
+ import type { TreeViewCancellableEvent } from "../../models/index.js";
4
+ import type { TreeViewAnyStore } from "../models/index.js";
5
+ import type { TreeViewStoreInContext } from "../TreeViewProvider/index.js";
6
6
  export declare function useTreeViewRootProps<TStore extends TreeViewAnyStore>(store: TreeViewStoreInContext<TStore>, forwardedProps: React.HTMLAttributes<HTMLUListElement>, ref: React.Ref<HTMLUListElement | null> | undefined): (otherHandlers: EventHandlers) => {
7
7
  style: React.CSSProperties;
8
8
  onFocus: (event: React.FocusEvent<HTMLUListElement> & TreeViewCancellableEvent) => void;
@@ -1,4 +1,4 @@
1
- import { TreeViewAnyStore } from "../models/index.mjs";
1
+ import type { TreeViewAnyStore } from "../models/index.mjs";
2
2
  interface ValidTreeViewStoreConstructor<TStore extends TreeViewAnyStore> {
3
3
  new (parameters: TStore['parameters']): TStore;
4
4
  }
@@ -1,4 +1,4 @@
1
- import { TreeViewAnyStore } from "../models/index.js";
1
+ import type { TreeViewAnyStore } from "../models/index.js";
2
2
  interface ValidTreeViewStoreConstructor<TStore extends TreeViewAnyStore> {
3
3
  new (parameters: TStore['parameters']): TStore;
4
4
  }
@@ -7,21 +7,24 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.useTreeViewStore = useTreeViewStore;
9
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
- var _useRefWithInit = require("@base-ui/utils/useRefWithInit");
11
10
  var _useIsoLayoutEffect = require("@base-ui/utils/useIsoLayoutEffect");
12
11
  var _useOnMount = require("@base-ui/utils/useOnMount");
12
+ var _useDisposable = require("@mui/x-internals/useDisposable");
13
13
  var _RtlProvider = require("@mui/system/RtlProvider");
14
14
  /**
15
15
  * Creates a Tree View store and keep it in sync with the provided parameters.
16
16
  */
17
17
  function useTreeViewStore(StoreClass, parameters) {
18
18
  const isRtl = (0, _RtlProvider.useRtl)();
19
- const store = (0, _useRefWithInit.useRefWithInit)(() => new StoreClass((0, _extends2.default)({}, parameters, {
19
+ const store = (0, _useDisposable.useDisposable)(() => new StoreClass((0, _extends2.default)({}, parameters, {
20
20
  isRtl
21
- }))).current;
21
+ })));
22
22
  (0, _useIsoLayoutEffect.useIsoLayoutEffect)(() => store.updateStateFromParameters((0, _extends2.default)({}, parameters, {
23
23
  isRtl
24
24
  })), [store, isRtl, parameters]);
25
- (0, _useOnMount.useOnMount)(store.disposeEffect);
25
+
26
+ // Mount-time side effects (e.g. kicking off lazy-loading fetches). The store is
27
+ // created during render by `useDisposable`, so these can't run in the factory.
28
+ (0, _useOnMount.useOnMount)(store.mountEffect);
26
29
  return store;
27
30
  }
@@ -1,21 +1,24 @@
1
1
  'use client';
2
2
 
3
3
  import _extends from "@babel/runtime/helpers/esm/extends";
4
- import { useRefWithInit } from '@base-ui/utils/useRefWithInit';
5
4
  import { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';
6
5
  import { useOnMount } from '@base-ui/utils/useOnMount';
6
+ import { useDisposable } from '@mui/x-internals/useDisposable';
7
7
  import { useRtl } from '@mui/system/RtlProvider';
8
8
  /**
9
9
  * Creates a Tree View store and keep it in sync with the provided parameters.
10
10
  */
11
11
  export function useTreeViewStore(StoreClass, parameters) {
12
12
  const isRtl = useRtl();
13
- const store = useRefWithInit(() => new StoreClass(_extends({}, parameters, {
13
+ const store = useDisposable(() => new StoreClass(_extends({}, parameters, {
14
14
  isRtl
15
- }))).current;
15
+ })));
16
16
  useIsoLayoutEffect(() => store.updateStateFromParameters(_extends({}, parameters, {
17
17
  isRtl
18
18
  })), [store, isRtl, parameters]);
19
- useOnMount(store.disposeEffect);
19
+
20
+ // Mount-time side effects (e.g. kicking off lazy-loading fetches). The store is
21
+ // created during render by `useDisposable`, so these can't run in the factory.
22
+ useOnMount(store.mountEffect);
20
23
  return store;
21
24
  }
@@ -1,5 +1,5 @@
1
- import { MuiEvent } from '@mui/x-internals/types';
2
- import { TreeViewItemId } from "../../models/index.mjs";
1
+ import type { MuiEvent } from '@mui/x-internals/types';
2
+ import type { TreeViewItemId } from "../../models/index.mjs";
3
3
  interface TreeViewEventLookup {
4
4
  /**
5
5
  * Fired before an item is expanded or collapsed.
@@ -1,5 +1,5 @@
1
- import { MuiEvent } from '@mui/x-internals/types';
2
- import { TreeViewItemId } from "../../models/index.js";
1
+ import type { MuiEvent } from '@mui/x-internals/types';
2
+ import type { TreeViewItemId } from "../../models/index.js";
3
3
  interface TreeViewEventLookup {
4
4
  /**
5
5
  * Fired before an item is expanded or collapsed.
@@ -1,11 +1,11 @@
1
- import * as React from 'react';
2
- import { EventHandlers } from '@mui/utils/types';
3
- import { TreeViewItemId } from "../../models/index.mjs";
1
+ import type * as React from 'react';
2
+ import type { EventHandlers } from '@mui/utils/types';
3
+ import type { TreeViewItemId } from "../../models/index.mjs";
4
4
  import type { UseTreeItemContentSlotOwnProps, UseTreeItemDragAndDropOverlaySlotOwnProps, UseTreeItemLabelInputSlotOwnProps, UseTreeItemRootSlotOwnProps, UseTreeItemCheckboxSlotOwnProps, UseTreeItemLabelSlotOwnProps } from "../../useTreeItem/index.mjs";
5
5
  import type { UseTreeItemInteractions } from "../../hooks/useTreeItemUtils/useTreeItemUtils.mjs";
6
6
  import type { TreeItemProps } from "../../TreeItem/TreeItem.types.mjs";
7
- import { TreeViewAnyStore } from "./treeView.mjs";
8
- import { TreeViewStoreInContext } from "../TreeViewProvider/index.mjs";
7
+ import type { TreeViewAnyStore } from "./treeView.mjs";
8
+ import type { TreeViewStoreInContext } from "../TreeViewProvider/index.mjs";
9
9
  export interface TreeViewItemPluginSlotPropsEnhancerParams {
10
10
  rootRefObject: React.RefObject<HTMLLIElement | null>;
11
11
  contentRefObject: React.RefObject<HTMLDivElement | null>;
@@ -1,11 +1,11 @@
1
- import * as React from 'react';
2
- import { EventHandlers } from '@mui/utils/types';
3
- import { TreeViewItemId } from "../../models/index.js";
1
+ import type * as React from 'react';
2
+ import type { EventHandlers } from '@mui/utils/types';
3
+ import type { TreeViewItemId } from "../../models/index.js";
4
4
  import type { UseTreeItemContentSlotOwnProps, UseTreeItemDragAndDropOverlaySlotOwnProps, UseTreeItemLabelInputSlotOwnProps, UseTreeItemRootSlotOwnProps, UseTreeItemCheckboxSlotOwnProps, UseTreeItemLabelSlotOwnProps } from "../../useTreeItem/index.js";
5
5
  import type { UseTreeItemInteractions } from "../../hooks/useTreeItemUtils/useTreeItemUtils.js";
6
6
  import type { TreeItemProps } from "../../TreeItem/TreeItem.types.js";
7
- import { TreeViewAnyStore } from "./treeView.js";
8
- import { TreeViewStoreInContext } from "../TreeViewProvider/index.js";
7
+ import type { TreeViewAnyStore } from "./treeView.js";
8
+ import type { TreeViewStoreInContext } from "../TreeViewProvider/index.js";
9
9
  export interface TreeViewItemPluginSlotPropsEnhancerParams {
10
10
  rootRefObject: React.RefObject<HTMLLIElement | null>;
11
11
  contentRefObject: React.RefObject<HTMLDivElement | null>;
@@ -1,4 +1,4 @@
1
- import { MinimalTreeViewStore } from "../MinimalTreeViewStore/index.mjs";
1
+ import type { MinimalTreeViewStore } from "../MinimalTreeViewStore/index.mjs";
2
2
  export interface TreeViewItemMeta {
3
3
  id: string;
4
4
  idAttribute: string | undefined;
@@ -1,4 +1,4 @@
1
- import { MinimalTreeViewStore } from "../MinimalTreeViewStore/index.js";
1
+ import type { MinimalTreeViewStore } from "../MinimalTreeViewStore/index.js";
2
2
  export interface TreeViewItemMeta {
3
3
  id: string;
4
4
  idAttribute: string | undefined;
@@ -1,4 +1,4 @@
1
- import { TreeViewItemId } from "../../../models/index.mjs";
1
+ import type { TreeViewItemId } from "../../../models/index.mjs";
2
2
  export declare class TreeViewExpansionPlugin {
3
3
  private store;
4
4
  constructor(store: any);
@@ -1,4 +1,4 @@
1
- import { TreeViewItemId } from "../../../models/index.js";
1
+ import type { TreeViewItemId } from "../../../models/index.js";
2
2
  export declare class TreeViewExpansionPlugin {
3
3
  private store;
4
4
  constructor(store: any);
@@ -1,4 +1,4 @@
1
- import { MinimalTreeViewState } from "../../MinimalTreeViewStore/index.mjs";
1
+ import type { MinimalTreeViewState } from "../../MinimalTreeViewStore/index.mjs";
2
2
  export declare const expansionSelectors: {
3
3
  /**
4
4
  * Gets the expanded items as provided to the component.
@@ -1,4 +1,4 @@
1
- import { MinimalTreeViewState } from "../../MinimalTreeViewStore/index.js";
1
+ import type { MinimalTreeViewState } from "../../MinimalTreeViewStore/index.js";
2
2
  export declare const expansionSelectors: {
3
3
  /**
4
4
  * Gets the expanded items as provided to the component.
@@ -1,4 +1,4 @@
1
- import { RichTreeViewStoreParameters } from "../../RichTreeViewStore/index.mjs";
1
+ import type { RichTreeViewStoreParameters } from "../../RichTreeViewStore/index.mjs";
2
2
  export declare const getExpansionTrigger: ({
3
3
  isItemEditable,
4
4
  expansionTrigger
@@ -1,4 +1,4 @@
1
- import { RichTreeViewStoreParameters } from "../../RichTreeViewStore/index.js";
1
+ import type { RichTreeViewStoreParameters } from "../../RichTreeViewStore/index.js";
2
2
  export declare const getExpansionTrigger: ({
3
3
  isItemEditable,
4
4
  expansionTrigger
@@ -1,4 +1,4 @@
1
- import { TreeViewCancellableEvent, TreeViewItemId } from "../../../models/index.mjs";
1
+ import type { TreeViewCancellableEvent, TreeViewItemId } from "../../../models/index.mjs";
2
2
  export declare class TreeViewFocusPlugin {
3
3
  private store;
4
4
  constructor(store: any);
@@ -1,4 +1,4 @@
1
- import { TreeViewCancellableEvent, TreeViewItemId } from "../../../models/index.js";
1
+ import type { TreeViewCancellableEvent, TreeViewItemId } from "../../../models/index.js";
2
2
  export declare class TreeViewFocusPlugin {
3
3
  private store;
4
4
  constructor(store: any);
@@ -17,7 +17,7 @@ class TreeViewFocusPlugin {
17
17
  // Whenever the items change, we need to ensure the focused item is still present.
18
18
  // If the focused item was removed, focus the closest neighbor instead of the first item.
19
19
  let previousState = store.state;
20
- this.store.subscribe(newState => {
20
+ this.store.disposables.defer(this.store.subscribe(newState => {
21
21
  // Only run when items actually changed.
22
22
  if (newState.itemMetaLookup === previousState.itemMetaLookup) {
23
23
  previousState = newState;
@@ -36,7 +36,7 @@ class TreeViewFocusPlugin {
36
36
  this.applyItemFocus(null, itemToFocusId);
37
37
  }
38
38
  previousState = newState;
39
- });
39
+ }));
40
40
  }
41
41
  setFocusedItemId = itemId => {
42
42
  const focusedItemId = _selectors.focusSelectors.focusedItemId(this.store.state);
@@ -11,7 +11,7 @@ export class TreeViewFocusPlugin {
11
11
  // Whenever the items change, we need to ensure the focused item is still present.
12
12
  // If the focused item was removed, focus the closest neighbor instead of the first item.
13
13
  let previousState = store.state;
14
- this.store.subscribe(newState => {
14
+ this.store.disposables.defer(this.store.subscribe(newState => {
15
15
  // Only run when items actually changed.
16
16
  if (newState.itemMetaLookup === previousState.itemMetaLookup) {
17
17
  previousState = newState;
@@ -30,7 +30,7 @@ export class TreeViewFocusPlugin {
30
30
  this.applyItemFocus(null, itemToFocusId);
31
31
  }
32
32
  previousState = newState;
33
- });
33
+ }));
34
34
  }
35
35
  setFocusedItemId = itemId => {
36
36
  const focusedItemId = focusSelectors.focusedItemId(this.store.state);
@@ -1,4 +1,4 @@
1
- import { MinimalTreeViewState } from "../../MinimalTreeViewStore/index.mjs";
1
+ import type { MinimalTreeViewState } from "../../MinimalTreeViewStore/index.mjs";
2
2
  export declare const focusSelectors: {
3
3
  /**
4
4
  * Gets the item that should be sequentially focusable (usually with the Tab key).
@@ -1,4 +1,4 @@
1
- import { MinimalTreeViewState } from "../../MinimalTreeViewStore/index.js";
1
+ import type { MinimalTreeViewState } from "../../MinimalTreeViewStore/index.js";
2
2
  export declare const focusSelectors: {
3
3
  /**
4
4
  * Gets the item that should be sequentially focusable (usually with the Tab key).
@@ -1,4 +1,4 @@
1
- import { MinimalTreeViewState } from "../../MinimalTreeViewStore/index.mjs";
1
+ import type { MinimalTreeViewState } from "../../MinimalTreeViewStore/index.mjs";
2
2
  export declare const idSelectors: {
3
3
  /**
4
4
  * Get the id attribute of the tree view.
@@ -1,4 +1,4 @@
1
- import { MinimalTreeViewState } from "../../MinimalTreeViewStore/index.js";
1
+ import type { MinimalTreeViewState } from "../../MinimalTreeViewStore/index.js";
2
2
  export declare const idSelectors: {
3
3
  /**
4
4
  * Get the id attribute of the tree view.
@@ -1,5 +1,5 @@
1
- import { TreeViewItemId, TreeViewValidItem } from "../../../models/index.mjs";
2
- import { MinimalTreeViewParameters } from "../../MinimalTreeViewStore/MinimalTreeViewStore.types.mjs";
1
+ import type { TreeViewItemId, TreeViewValidItem } from "../../../models/index.mjs";
2
+ import type { MinimalTreeViewParameters } from "../../MinimalTreeViewStore/MinimalTreeViewStore.types.mjs";
3
3
  export declare class TreeViewItemsPlugin<R extends TreeViewValidItem<R>> {
4
4
  private store;
5
5
  constructor(store: any);
@@ -1,5 +1,5 @@
1
- import { TreeViewItemId, TreeViewValidItem } from "../../../models/index.js";
2
- import { MinimalTreeViewParameters } from "../../MinimalTreeViewStore/MinimalTreeViewStore.types.js";
1
+ import type { TreeViewItemId, TreeViewValidItem } from "../../../models/index.js";
2
+ import type { MinimalTreeViewParameters } from "../../MinimalTreeViewStore/MinimalTreeViewStore.types.js";
3
3
  export declare class TreeViewItemsPlugin<R extends TreeViewValidItem<R>> {
4
4
  private store;
5
5
  constructor(store: any);
@@ -1,6 +1,6 @@
1
- import { TreeViewItemMeta } from "../../models/index.mjs";
2
- import { MinimalTreeViewState } from "../../MinimalTreeViewStore/index.mjs";
3
- import { RichTreeViewState } from "../../RichTreeViewStore/index.mjs";
1
+ import type { TreeViewItemMeta } from "../../models/index.mjs";
2
+ import type { MinimalTreeViewState } from "../../MinimalTreeViewStore/index.mjs";
3
+ import type { RichTreeViewState } from "../../RichTreeViewStore/index.mjs";
4
4
  export declare const itemsSelectors: {
5
5
  /**
6
6
  * Gets the DOM structure of the Tree View.
@@ -1,6 +1,6 @@
1
- import { TreeViewItemMeta } from "../../models/index.js";
2
- import { MinimalTreeViewState } from "../../MinimalTreeViewStore/index.js";
3
- import { RichTreeViewState } from "../../RichTreeViewStore/index.js";
1
+ import type { TreeViewItemMeta } from "../../models/index.js";
2
+ import type { MinimalTreeViewState } from "../../MinimalTreeViewStore/index.js";
3
+ import type { RichTreeViewState } from "../../RichTreeViewStore/index.js";
4
4
  export declare const itemsSelectors: {
5
5
  /**
6
6
  * Gets the DOM structure of the Tree View.
@@ -1,5 +1,5 @@
1
- import { TreeViewValidItem, TreeViewItemId } from "../../../models/index.mjs";
2
- import { TreeViewItemMeta } from "../../models/index.mjs";
1
+ import type { TreeViewValidItem, TreeViewItemId } from "../../../models/index.mjs";
2
+ import type { TreeViewItemMeta } from "../../models/index.mjs";
3
3
  import type { MinimalTreeViewParameters } from "../../MinimalTreeViewStore/index.mjs";
4
4
  export declare const TREE_VIEW_ROOT_PARENT_ID = "__TREE_VIEW_ROOT_PARENT_ID__";
5
5
  export declare const buildSiblingIndexes: (siblings: string[]) => {
@@ -1,5 +1,5 @@
1
- import { TreeViewValidItem, TreeViewItemId } from "../../../models/index.js";
2
- import { TreeViewItemMeta } from "../../models/index.js";
1
+ import type { TreeViewValidItem, TreeViewItemId } from "../../../models/index.js";
2
+ import type { TreeViewItemMeta } from "../../models/index.js";
3
3
  import type { MinimalTreeViewParameters } from "../../MinimalTreeViewStore/index.js";
4
4
  export declare const TREE_VIEW_ROOT_PARENT_ID = "__TREE_VIEW_ROOT_PARENT_ID__";
5
5
  export declare const buildSiblingIndexes: (siblings: string[]) => {
@@ -1,5 +1,5 @@
1
- import { TreeViewItemId } from "../../../models/index.mjs";
2
- import { TreeViewItemMeta } from "../../models/index.mjs";
1
+ import type { TreeViewItemId } from "../../../models/index.mjs";
2
+ import type { TreeViewItemMeta } from "../../models/index.mjs";
3
3
  import type { SimpleTreeViewStore } from "../../SimpleTreeViewStore/index.mjs";
4
4
  export declare class TreeViewJSXItemsPlugin {
5
5
  private store;
@@ -1,5 +1,5 @@
1
- import { TreeViewItemId } from "../../../models/index.js";
2
- import { TreeViewItemMeta } from "../../models/index.js";
1
+ import type { TreeViewItemId } from "../../../models/index.js";
2
+ import type { TreeViewItemMeta } from "../../models/index.js";
3
3
  import type { SimpleTreeViewStore } from "../../SimpleTreeViewStore/index.js";
4
4
  export declare class TreeViewJSXItemsPlugin {
5
5
  private store;
@@ -118,7 +118,8 @@ Two items were provided with the same id in the \`items\` prop: "${item.id}"` :
118
118
 
119
119
  // If a parent was selected while its children were unmounted (collapsed with unmountOnExit),
120
120
  // re-run selection propagation now that the children are registered.
121
- if (parentId !== null && _selectors.selectionSelectors.isItemSelected(this.store.state, parentId)) {
121
+ // The multiSelect guard matches the documented contract: selectionPropagation only works with multiSelect.
122
+ if (parentId !== null && _selectors.selectionSelectors.isMultiSelectEnabled(this.store.state) && _selectors.selectionSelectors.propagationRules(this.store.state).descendants && _selectors.selectionSelectors.isItemSelected(this.store.state, parentId)) {
122
123
  this.store.selection.setItemSelection({
123
124
  itemId: parentId,
124
125
  shouldBeSelected: true,
@@ -111,7 +111,8 @@ Two items were provided with the same id in the \`items\` prop: "${item.id}"` :
111
111
 
112
112
  // If a parent was selected while its children were unmounted (collapsed with unmountOnExit),
113
113
  // re-run selection propagation now that the children are registered.
114
- if (parentId !== null && selectionSelectors.isItemSelected(this.store.state, parentId)) {
114
+ // The multiSelect guard matches the documented contract: selectionPropagation only works with multiSelect.
115
+ if (parentId !== null && selectionSelectors.isMultiSelectEnabled(this.store.state) && selectionSelectors.propagationRules(this.store.state).descendants && selectionSelectors.isItemSelected(this.store.state, parentId)) {
115
116
  this.store.selection.setItemSelection({
116
117
  itemId: parentId,
117
118
  shouldBeSelected: true,
@@ -1,4 +1,4 @@
1
- import { TreeItemWrapper, TreeViewItemPlugin } from "../../models/index.mjs";
2
- import { SimpleTreeViewStore } from "../../SimpleTreeViewStore/index.mjs";
1
+ import type { TreeItemWrapper, TreeViewItemPlugin } from "../../models/index.mjs";
2
+ import type { SimpleTreeViewStore } from "../../SimpleTreeViewStore/index.mjs";
3
3
  export declare const useJSXItemsItemPlugin: TreeViewItemPlugin;
4
4
  export declare const jsxItemsitemWrapper: TreeItemWrapper<SimpleTreeViewStore<any>>;
@@ -1,4 +1,4 @@
1
- import { TreeItemWrapper, TreeViewItemPlugin } from "../../models/index.js";
2
- import { SimpleTreeViewStore } from "../../SimpleTreeViewStore/index.js";
1
+ import type { TreeItemWrapper, TreeViewItemPlugin } from "../../models/index.js";
2
+ import type { SimpleTreeViewStore } from "../../SimpleTreeViewStore/index.js";
3
3
  export declare const useJSXItemsItemPlugin: TreeViewItemPlugin;
4
4
  export declare const jsxItemsitemWrapper: TreeItemWrapper<SimpleTreeViewStore<any>>;
@@ -1,4 +1,4 @@
1
- import { TreeViewCancellableEvent, TreeViewItemId } from "../../../models/index.mjs";
1
+ import type { TreeViewCancellableEvent, TreeViewItemId } from "../../../models/index.mjs";
2
2
  type TreeViewLabelMap = {
3
3
  [itemId: string]: string;
4
4
  };
@@ -1,4 +1,4 @@
1
- import { TreeViewCancellableEvent, TreeViewItemId } from "../../../models/index.js";
1
+ import type { TreeViewCancellableEvent, TreeViewItemId } from "../../../models/index.js";
2
2
  type TreeViewLabelMap = {
3
3
  [itemId: string]: string;
4
4
  };
@@ -1,5 +1,5 @@
1
- import { ExtendableRichTreeViewStore } from "../../RichTreeViewStore/RichTreeViewStore.mjs";
2
- import { TreeViewItemId } from "../../../models/index.mjs";
1
+ import type { ExtendableRichTreeViewStore } from "../../RichTreeViewStore/RichTreeViewStore.mjs";
2
+ import type { TreeViewItemId } from "../../../models/index.mjs";
3
3
  export declare class TreeViewLabelEditingPlugin {
4
4
  private store;
5
5
  constructor(store: ExtendableRichTreeViewStore<any, any>);
@@ -1,5 +1,5 @@
1
- import { ExtendableRichTreeViewStore } from "../../RichTreeViewStore/RichTreeViewStore.js";
2
- import { TreeViewItemId } from "../../../models/index.js";
1
+ import type { ExtendableRichTreeViewStore } from "../../RichTreeViewStore/RichTreeViewStore.js";
2
+ import type { TreeViewItemId } from "../../../models/index.js";
3
3
  export declare class TreeViewLabelEditingPlugin {
4
4
  private store;
5
5
  constructor(store: ExtendableRichTreeViewStore<any, any>);
@@ -1,5 +1,5 @@
1
- import { TreeViewItemPlugin } from "../../models/index.mjs";
2
- import { TreeItemLabelInputProps } from "../../../TreeItemLabelInput/index.mjs";
1
+ import type { TreeViewItemPlugin } from "../../models/index.mjs";
2
+ import type { TreeItemLabelInputProps } from "../../../TreeItemLabelInput/index.mjs";
3
3
  export declare const useLabelEditingItemPlugin: TreeViewItemPlugin;
4
4
  interface UseTreeItemLabelInputSlotPropsFromLabelEditing extends TreeItemLabelInputProps {}
5
5
  interface UseTreeItemLabelSlotPropsFromLabelEditing {
@@ -1,5 +1,5 @@
1
- import { TreeViewItemPlugin } from "../../models/index.js";
2
- import { TreeItemLabelInputProps } from "../../../TreeItemLabelInput/index.js";
1
+ import type { TreeViewItemPlugin } from "../../models/index.js";
2
+ import type { TreeItemLabelInputProps } from "../../../TreeItemLabelInput/index.js";
3
3
  export declare const useLabelEditingItemPlugin: TreeViewItemPlugin;
4
4
  interface UseTreeItemLabelInputSlotPropsFromLabelEditing extends TreeItemLabelInputProps {}
5
5
  interface UseTreeItemLabelSlotPropsFromLabelEditing {
@@ -1,4 +1,4 @@
1
- import { RichTreeViewState } from "../../RichTreeViewStore/index.mjs";
1
+ import type { RichTreeViewState } from "../../RichTreeViewStore/index.mjs";
2
2
  export declare const labelSelectors: {
3
3
  /**
4
4
  * Checks whether an item is editable.
@@ -1,4 +1,4 @@
1
- import { RichTreeViewState } from "../../RichTreeViewStore/index.js";
1
+ import type { RichTreeViewState } from "../../RichTreeViewStore/index.js";
2
2
  export declare const labelSelectors: {
3
3
  /**
4
4
  * Checks whether an item is editable.