@mui/x-tree-view 8.0.0-alpha.0 → 8.0.0-alpha.2

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 (159) hide show
  1. package/CHANGELOG.md +651 -6
  2. package/README.md +2 -2
  3. package/RichTreeView/RichTreeView.js +2 -4
  4. package/RichTreeView/RichTreeView.types.d.ts +5 -18
  5. package/SimpleTreeView/SimpleTreeView.types.d.ts +2 -2
  6. package/TreeItem/TreeItem.js +4 -4
  7. package/TreeItem/TreeItem.types.d.ts +4 -2
  8. package/TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.js +1 -1
  9. package/TreeItemIcon/TreeItemIcon.types.d.ts +1 -1
  10. package/TreeItemProvider/TreeItemProvider.d.ts +2 -4
  11. package/TreeItemProvider/TreeItemProvider.js +26 -11
  12. package/TreeItemProvider/TreeItemProvider.types.d.ts +1 -0
  13. package/hooks/index.d.ts +1 -0
  14. package/hooks/index.js +2 -1
  15. package/hooks/useTreeItemModel.d.ts +2 -0
  16. package/hooks/useTreeItemModel.js +11 -0
  17. package/hooks/useTreeItemUtils/useTreeItemUtils.d.ts +2 -1
  18. package/hooks/useTreeItemUtils/useTreeItemUtils.js +31 -15
  19. package/hooks/useTreeViewApiRef.d.ts +1 -0
  20. package/index.js +1 -1
  21. package/internals/TreeViewItemDepthContext/TreeViewItemDepthContext.d.ts +3 -1
  22. package/internals/TreeViewProvider/TreeViewChildrenItemProvider.d.ts +2 -1
  23. package/internals/TreeViewProvider/TreeViewChildrenItemProvider.js +6 -22
  24. package/internals/TreeViewProvider/TreeViewProvider.js +1 -2
  25. package/internals/TreeViewProvider/TreeViewProvider.types.d.ts +4 -2
  26. package/internals/components/RichTreeViewItems.d.ts +3 -5
  27. package/internals/components/RichTreeViewItems.js +42 -30
  28. package/internals/corePlugins/useTreeViewId/useTreeViewId.js +10 -11
  29. package/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.d.ts +36 -0
  30. package/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.js +9 -0
  31. package/internals/corePlugins/useTreeViewId/useTreeViewId.types.d.ts +1 -5
  32. package/internals/hooks/useSelector.d.ts +4 -0
  33. package/internals/hooks/useSelector.js +6 -0
  34. package/internals/index.d.ts +6 -1
  35. package/internals/index.js +5 -1
  36. package/internals/models/itemPlugin.d.ts +5 -5
  37. package/internals/models/plugin.d.ts +20 -8
  38. package/internals/models/treeView.d.ts +6 -0
  39. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +36 -24
  40. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.d.ts +124 -0
  41. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.js +17 -0
  42. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.types.d.ts +6 -14
  43. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.utils.d.ts +1 -0
  44. package/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.utils.js +7 -0
  45. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +62 -40
  46. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.d.ts +182 -0
  47. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.js +34 -0
  48. package/internals/plugins/useTreeViewFocus/useTreeViewFocus.types.d.ts +4 -16
  49. package/internals/plugins/useTreeViewIcons/useTreeViewIcons.js +15 -13
  50. package/internals/plugins/useTreeViewIcons/useTreeViewIcons.types.d.ts +1 -1
  51. package/internals/plugins/useTreeViewItems/index.d.ts +1 -1
  52. package/internals/plugins/useTreeViewItems/useTreeViewItems.js +58 -98
  53. package/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.d.ts +718 -0
  54. package/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +103 -0
  55. package/internals/plugins/useTreeViewItems/useTreeViewItems.types.d.ts +15 -52
  56. package/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +29 -26
  57. package/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +27 -18
  58. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.itemPlugin.js +13 -5
  59. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +19 -30
  60. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.d.ts +74 -0
  61. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.js +26 -0
  62. package/internals/plugins/useTreeViewLabel/useTreeViewLabel.types.d.ts +7 -24
  63. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +8 -6
  64. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +45 -34
  65. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.d.ts +32 -0
  66. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.js +9 -0
  67. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.types.d.ts +6 -6
  68. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.d.ts +6 -6
  69. package/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +23 -13
  70. package/internals/useTreeView/useTreeView.js +30 -17
  71. package/internals/useTreeView/useTreeView.types.d.ts +2 -3
  72. package/internals/useTreeView/useTreeViewBuildContext.d.ts +3 -1
  73. package/internals/useTreeView/useTreeViewBuildContext.js +24 -18
  74. package/internals/utils/TreeViewStore.d.ts +12 -0
  75. package/internals/utils/TreeViewStore.js +24 -0
  76. package/internals/utils/selectors.d.ts +9 -0
  77. package/internals/utils/selectors.js +37 -0
  78. package/internals/utils/tree.d.ts +8 -8
  79. package/internals/utils/tree.js +51 -43
  80. package/models/items.d.ts +3 -2
  81. package/modern/RichTreeView/RichTreeView.js +2 -4
  82. package/modern/TreeItem/TreeItem.js +4 -4
  83. package/modern/TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.js +1 -1
  84. package/modern/TreeItemProvider/TreeItemProvider.js +26 -11
  85. package/modern/hooks/index.js +2 -1
  86. package/modern/hooks/useTreeItemModel.js +11 -0
  87. package/modern/hooks/useTreeItemUtils/useTreeItemUtils.js +31 -15
  88. package/modern/index.js +1 -1
  89. package/modern/internals/TreeViewProvider/TreeViewChildrenItemProvider.js +6 -22
  90. package/modern/internals/TreeViewProvider/TreeViewProvider.js +1 -2
  91. package/modern/internals/components/RichTreeViewItems.js +42 -30
  92. package/modern/internals/corePlugins/useTreeViewId/useTreeViewId.js +10 -11
  93. package/modern/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.js +9 -0
  94. package/modern/internals/hooks/useSelector.js +6 -0
  95. package/modern/internals/index.js +5 -1
  96. package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +36 -24
  97. package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.js +17 -0
  98. package/modern/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.utils.js +7 -0
  99. package/modern/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +62 -40
  100. package/modern/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.js +34 -0
  101. package/modern/internals/plugins/useTreeViewIcons/useTreeViewIcons.js +15 -13
  102. package/modern/internals/plugins/useTreeViewItems/useTreeViewItems.js +58 -98
  103. package/modern/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +103 -0
  104. package/modern/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +29 -26
  105. package/modern/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +27 -18
  106. package/modern/internals/plugins/useTreeViewLabel/useTreeViewLabel.itemPlugin.js +13 -5
  107. package/modern/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +19 -30
  108. package/modern/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.js +26 -0
  109. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +8 -6
  110. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +45 -34
  111. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.js +9 -0
  112. package/modern/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +23 -13
  113. package/modern/internals/useTreeView/useTreeView.js +30 -17
  114. package/modern/internals/useTreeView/useTreeViewBuildContext.js +24 -18
  115. package/modern/internals/utils/TreeViewStore.js +24 -0
  116. package/modern/internals/utils/selectors.js +37 -0
  117. package/modern/internals/utils/tree.js +51 -43
  118. package/modern/useTreeItem/useTreeItem.js +26 -11
  119. package/node/RichTreeView/RichTreeView.js +2 -4
  120. package/node/TreeItem/TreeItem.js +4 -4
  121. package/node/TreeItemDragAndDropOverlay/TreeItemDragAndDropOverlay.js +2 -2
  122. package/node/TreeItemProvider/TreeItemProvider.js +26 -10
  123. package/node/hooks/index.js +8 -1
  124. package/node/hooks/useTreeItemModel.js +17 -0
  125. package/node/hooks/useTreeItemUtils/useTreeItemUtils.js +32 -15
  126. package/node/index.js +1 -1
  127. package/node/internals/TreeViewProvider/TreeViewChildrenItemProvider.js +6 -22
  128. package/node/internals/TreeViewProvider/TreeViewProvider.js +1 -2
  129. package/node/internals/components/RichTreeViewItems.js +42 -30
  130. package/node/internals/corePlugins/useTreeViewId/useTreeViewId.js +12 -13
  131. package/node/internals/corePlugins/useTreeViewId/useTreeViewId.selectors.js +15 -0
  132. package/node/internals/hooks/useSelector.js +13 -0
  133. package/node/internals/index.js +47 -1
  134. package/node/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.js +36 -24
  135. package/node/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.selectors.js +23 -0
  136. package/node/internals/plugins/useTreeViewExpansion/useTreeViewExpansion.utils.js +14 -0
  137. package/node/internals/plugins/useTreeViewFocus/useTreeViewFocus.js +62 -40
  138. package/node/internals/plugins/useTreeViewFocus/useTreeViewFocus.selectors.js +40 -0
  139. package/node/internals/plugins/useTreeViewIcons/useTreeViewIcons.js +16 -13
  140. package/node/internals/plugins/useTreeViewItems/useTreeViewItems.js +60 -100
  141. package/node/internals/plugins/useTreeViewItems/useTreeViewItems.selectors.js +109 -0
  142. package/node/internals/plugins/useTreeViewJSXItems/useTreeViewJSXItems.js +30 -27
  143. package/node/internals/plugins/useTreeViewKeyboardNavigation/useTreeViewKeyboardNavigation.js +27 -18
  144. package/node/internals/plugins/useTreeViewLabel/useTreeViewLabel.itemPlugin.js +13 -5
  145. package/node/internals/plugins/useTreeViewLabel/useTreeViewLabel.js +19 -30
  146. package/node/internals/plugins/useTreeViewLabel/useTreeViewLabel.selectors.js +32 -0
  147. package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.itemPlugin.js +8 -6
  148. package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.js +46 -35
  149. package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.selectors.js +15 -0
  150. package/node/internals/plugins/useTreeViewSelection/useTreeViewSelection.utils.js +24 -14
  151. package/node/internals/useTreeView/useTreeView.js +30 -17
  152. package/node/internals/useTreeView/useTreeViewBuildContext.js +25 -18
  153. package/node/internals/utils/TreeViewStore.js +31 -0
  154. package/node/internals/utils/selectors.js +44 -0
  155. package/node/internals/utils/tree.js +51 -43
  156. package/node/useTreeItem/useTreeItem.js +26 -11
  157. package/package.json +6 -4
  158. package/useTreeItem/useTreeItem.js +26 -11
  159. package/useTreeItem/useTreeItem.types.d.ts +9 -0
@@ -1,21 +1,23 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
- import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- const _excluded = ["children"];
4
2
  import * as React from 'react';
3
+ import useEventCallback from '@mui/utils/useEventCallback';
5
4
  import { publishTreeViewEvent } from "../../utils/publishTreeViewEvent.js";
6
5
  import { buildSiblingIndexes, TREE_VIEW_ROOT_PARENT_ID } from "./useTreeViewItems.utils.js";
7
6
  import { TreeViewItemDepthContext } from "../../TreeViewItemDepthContext/index.js";
7
+ import { selectorItemMeta, selectorItemOrderedChildrenIds, selectorItemModel, selectorItemDepth } from "./useTreeViewItems.selectors.js";
8
+ import { selectorTreeViewId } from "../../corePlugins/useTreeViewId/useTreeViewId.selectors.js";
8
9
  import { generateTreeItemIdAttribute } from "../../corePlugins/useTreeViewId/useTreeViewId.utils.js";
9
10
  import { jsx as _jsx } from "react/jsx-runtime";
10
11
  const updateItemsState = ({
12
+ disabledItemsFocusable,
11
13
  items,
12
14
  isItemDisabled,
13
15
  getItemLabel,
14
16
  getItemId
15
17
  }) => {
16
- const itemMetaMap = {};
17
- const itemMap = {};
18
- const itemOrderedChildrenIds = {
18
+ const itemMetaLookup = {};
19
+ const itemModelLookup = {};
20
+ const itemOrderedChildrenIdsLookup = {
19
21
  [TREE_VIEW_ROOT_PARENT_ID]: []
20
22
  };
21
23
  const processItem = (item, depth, parentId) => {
@@ -23,14 +25,14 @@ const updateItemsState = ({
23
25
  if (id == null) {
24
26
  throw new Error(['MUI X: The Tree View component requires all items to have a unique `id` property.', 'Alternatively, you can use the `getItemId` prop to specify a custom id for each item.', 'An item was provided without id in the `items` prop:', JSON.stringify(item)].join('\n'));
25
27
  }
26
- if (itemMetaMap[id] != null) {
28
+ if (itemMetaLookup[id] != null) {
27
29
  throw new Error(['MUI X: The Tree View component requires all items to have a unique `id` property.', 'Alternatively, you can use the `getItemId` prop to specify a custom id for each item.', `Two items were provided with the same id in the \`items\` prop: "${id}"`].join('\n'));
28
30
  }
29
31
  const label = getItemLabel ? getItemLabel(item) : item.label;
30
32
  if (label == null) {
31
33
  throw new Error(['MUI X: The Tree View component requires all items to have a `label` property.', 'Alternatively, you can use the `getItemLabel` prop to specify a custom label for each item.', 'An item was provided without label in the `items` prop:', JSON.stringify(item)].join('\n'));
32
34
  }
33
- itemMetaMap[id] = {
35
+ itemMetaLookup[id] = {
34
36
  id,
35
37
  label,
36
38
  parentId,
@@ -39,88 +41,58 @@ const updateItemsState = ({
39
41
  disabled: isItemDisabled ? isItemDisabled(item) : false,
40
42
  depth
41
43
  };
42
- itemMap[id] = item;
44
+ itemModelLookup[id] = item;
43
45
  const parentIdWithDefault = parentId ?? TREE_VIEW_ROOT_PARENT_ID;
44
- if (!itemOrderedChildrenIds[parentIdWithDefault]) {
45
- itemOrderedChildrenIds[parentIdWithDefault] = [];
46
+ if (!itemOrderedChildrenIdsLookup[parentIdWithDefault]) {
47
+ itemOrderedChildrenIdsLookup[parentIdWithDefault] = [];
46
48
  }
47
- itemOrderedChildrenIds[parentIdWithDefault].push(id);
49
+ itemOrderedChildrenIdsLookup[parentIdWithDefault].push(id);
48
50
  item.children?.forEach(child => processItem(child, depth + 1, id));
49
51
  };
50
52
  items.forEach(item => processItem(item, 0, null));
51
- const itemChildrenIndexes = {};
52
- Object.keys(itemOrderedChildrenIds).forEach(parentId => {
53
- itemChildrenIndexes[parentId] = buildSiblingIndexes(itemOrderedChildrenIds[parentId]);
53
+ const itemChildrenIndexesLookup = {};
54
+ Object.keys(itemOrderedChildrenIdsLookup).forEach(parentId => {
55
+ itemChildrenIndexesLookup[parentId] = buildSiblingIndexes(itemOrderedChildrenIdsLookup[parentId]);
54
56
  });
55
57
  return {
56
- itemMetaMap,
57
- itemMap,
58
- itemOrderedChildrenIds,
59
- itemChildrenIndexes
58
+ disabledItemsFocusable,
59
+ itemMetaLookup,
60
+ itemModelLookup,
61
+ itemOrderedChildrenIdsLookup,
62
+ itemChildrenIndexesLookup
60
63
  };
61
64
  };
62
65
  export const useTreeViewItems = ({
63
66
  instance,
64
67
  params,
65
- state,
66
- setState
68
+ store
67
69
  }) => {
68
- const getItemMeta = React.useCallback(itemId => state.items.itemMetaMap[itemId], [state.items.itemMetaMap]);
69
- const getItem = React.useCallback(itemId => state.items.itemMap[itemId], [state.items.itemMap]);
70
+ const getItem = React.useCallback(itemId => selectorItemModel(store.value, itemId), [store]);
70
71
  const getItemTree = React.useCallback(() => {
71
- const getItemFromItemId = id => {
72
- const _state$items$itemMap$ = state.items.itemMap[id],
73
- item = _objectWithoutPropertiesLoose(_state$items$itemMap$, _excluded);
74
- const newChildren = state.items.itemOrderedChildrenIds[id];
75
- if (newChildren) {
72
+ const getItemFromItemId = itemId => {
73
+ const item = selectorItemModel(store.value, itemId);
74
+ const newChildren = selectorItemOrderedChildrenIds(store.value, itemId);
75
+ if (newChildren.length > 0) {
76
76
  item.children = newChildren.map(getItemFromItemId);
77
+ } else {
78
+ delete item.children;
77
79
  }
78
80
  return item;
79
81
  };
80
- return state.items.itemOrderedChildrenIds[TREE_VIEW_ROOT_PARENT_ID].map(getItemFromItemId);
81
- }, [state.items.itemMap, state.items.itemOrderedChildrenIds]);
82
- const isItemDisabled = React.useCallback(itemId => {
83
- if (itemId == null) {
84
- return false;
85
- }
86
- let itemMeta = instance.getItemMeta(itemId);
87
-
88
- // This can be called before the item has been added to the item map.
89
- if (!itemMeta) {
90
- return false;
91
- }
92
- if (itemMeta.disabled) {
93
- return true;
94
- }
95
- while (itemMeta.parentId != null) {
96
- itemMeta = instance.getItemMeta(itemMeta.parentId);
97
- if (itemMeta.disabled) {
98
- return true;
99
- }
100
- }
101
- return false;
102
- }, [instance]);
103
- const getItemIndex = React.useCallback(itemId => {
104
- const parentId = instance.getItemMeta(itemId).parentId ?? TREE_VIEW_ROOT_PARENT_ID;
105
- return state.items.itemChildrenIndexes[parentId][itemId];
106
- }, [instance, state.items.itemChildrenIndexes]);
107
- const getItemOrderedChildrenIds = React.useCallback(itemId => state.items.itemOrderedChildrenIds[itemId ?? TREE_VIEW_ROOT_PARENT_ID] ?? [], [state.items.itemOrderedChildrenIds]);
82
+ return selectorItemOrderedChildrenIds(store.value, null).map(getItemFromItemId);
83
+ }, [store]);
84
+ const getItemOrderedChildrenIds = React.useCallback(itemId => selectorItemOrderedChildrenIds(store.value, itemId), [store]);
108
85
  const getItemDOMElement = itemId => {
109
- const itemMeta = instance.getItemMeta(itemId);
86
+ const itemMeta = selectorItemMeta(store.value, itemId);
110
87
  if (itemMeta == null) {
111
88
  return null;
112
89
  }
113
- return document.getElementById(generateTreeItemIdAttribute({
114
- treeId: state.id.treeId,
90
+ const idAttribute = generateTreeItemIdAttribute({
91
+ treeId: selectorTreeViewId(store.value),
115
92
  itemId,
116
93
  id: itemMeta.idAttribute
117
- }));
118
- };
119
- const isItemNavigable = itemId => {
120
- if (params.disabledItemsFocusable) {
121
- return true;
122
- }
123
- return !instance.isItemDisabled(itemId);
94
+ });
95
+ return document.getElementById(idAttribute);
124
96
  };
125
97
  const areItemUpdatesPreventedRef = React.useRef(false);
126
98
  const preventItemUpdates = React.useCallback(() => {
@@ -131,15 +103,16 @@ export const useTreeViewItems = ({
131
103
  if (instance.areItemUpdatesPrevented()) {
132
104
  return;
133
105
  }
134
- setState(prevState => {
106
+ store.update(prevState => {
135
107
  const newState = updateItemsState({
108
+ disabledItemsFocusable: params.disabledItemsFocusable,
136
109
  items: params.items,
137
110
  isItemDisabled: params.isItemDisabled,
138
111
  getItemId: params.getItemId,
139
112
  getItemLabel: params.getItemLabel
140
113
  });
141
- Object.values(prevState.items.itemMetaMap).forEach(item => {
142
- if (!newState.itemMetaMap[item.id]) {
114
+ Object.values(prevState.items.itemMetaLookup).forEach(item => {
115
+ if (!newState.itemMetaLookup[item.id]) {
143
116
  publishTreeViewEvent(instance, 'removeItem', {
144
117
  id: item.id
145
118
  });
@@ -149,19 +122,19 @@ export const useTreeViewItems = ({
149
122
  items: newState
150
123
  });
151
124
  });
152
- }, [instance, setState, params.items, params.isItemDisabled, params.getItemId, params.getItemLabel]);
153
- const getItemsToRender = () => {
154
- const getPropsFromItemId = id => {
155
- const item = state.items.itemMetaMap[id];
156
- return {
157
- label: item.label,
158
- itemId: item.id,
159
- id: item.idAttribute,
160
- children: state.items.itemOrderedChildrenIds[id]?.map(getPropsFromItemId)
161
- };
162
- };
163
- return state.items.itemOrderedChildrenIds[TREE_VIEW_ROOT_PARENT_ID].map(getPropsFromItemId);
164
- };
125
+ }, [instance, store, params.items, params.disabledItemsFocusable, params.isItemDisabled, params.getItemId, params.getItemLabel]);
126
+
127
+ // Wrap `props.onItemClick` with `useEventCallback` to prevent unneeded context updates.
128
+ const handleItemClick = useEventCallback((event, itemId) => {
129
+ if (params.onItemClick) {
130
+ params.onItemClick(event, itemId);
131
+ }
132
+ });
133
+ const pluginContextValue = React.useMemo(() => ({
134
+ items: {
135
+ onItemClick: handleItemClick
136
+ }
137
+ }), [handleItemClick]);
165
138
  return {
166
139
  getRootProps: () => ({
167
140
  style: {
@@ -175,28 +148,16 @@ export const useTreeViewItems = ({
175
148
  getItemOrderedChildrenIds
176
149
  },
177
150
  instance: {
178
- getItemMeta,
179
- getItem,
180
- getItemTree,
181
- getItemsToRender,
182
- getItemIndex,
183
151
  getItemDOMElement,
184
- getItemOrderedChildrenIds,
185
- isItemDisabled,
186
- isItemNavigable,
187
152
  preventItemUpdates,
188
153
  areItemUpdatesPrevented
189
154
  },
190
- contextValue: {
191
- items: {
192
- onItemClick: params.onItemClick,
193
- disabledItemsFocusable: params.disabledItemsFocusable
194
- }
195
- }
155
+ contextValue: pluginContextValue
196
156
  };
197
157
  };
198
158
  useTreeViewItems.getInitialState = params => ({
199
159
  items: updateItemsState({
160
+ disabledItemsFocusable: params.disabledItemsFocusable,
200
161
  items: params.items,
201
162
  isItemDisabled: params.isItemDisabled,
202
163
  getItemId: params.getItemId,
@@ -210,11 +171,10 @@ useTreeViewItems.getDefaultizedParams = ({
210
171
  itemChildrenIndentation: params.itemChildrenIndentation ?? '12px'
211
172
  });
212
173
  useTreeViewItems.wrapRoot = ({
213
- children,
214
- instance
174
+ children
215
175
  }) => {
216
176
  return /*#__PURE__*/_jsx(TreeViewItemDepthContext.Provider, {
217
- value: itemId => instance.getItemMeta(itemId)?.depth ?? 0,
177
+ value: selectorItemDepth,
218
178
  children: children
219
179
  });
220
180
  };