@mui/x-tree-view-pro 8.0.0-alpha.8 → 8.0.0-beta.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 (132) hide show
  1. package/CHANGELOG.md +2566 -687
  2. package/README.md +1 -1
  3. package/RichTreeViewPro/RichTreeViewPro.d.ts +5 -5
  4. package/RichTreeViewPro/RichTreeViewPro.js +101 -89
  5. package/RichTreeViewPro/RichTreeViewPro.plugins.d.ts +4 -5
  6. package/RichTreeViewPro/RichTreeViewPro.plugins.js +10 -3
  7. package/RichTreeViewPro/RichTreeViewPro.types.d.ts +38 -38
  8. package/RichTreeViewPro/RichTreeViewPro.types.js +5 -1
  9. package/RichTreeViewPro/index.d.ts +3 -3
  10. package/RichTreeViewPro/index.js +27 -3
  11. package/RichTreeViewPro/richTreeViewProClasses.d.ts +3 -3
  12. package/RichTreeViewPro/richTreeViewProClasses.js +13 -5
  13. package/esm/RichTreeViewPro/RichTreeViewPro.d.ts +20 -0
  14. package/{node → esm}/RichTreeViewPro/RichTreeViewPro.js +95 -95
  15. package/esm/RichTreeViewPro/RichTreeViewPro.plugins.d.ts +7 -0
  16. package/esm/RichTreeViewPro/RichTreeViewPro.plugins.js +6 -0
  17. package/esm/RichTreeViewPro/RichTreeViewPro.types.d.ts +51 -0
  18. package/esm/RichTreeViewPro/RichTreeViewPro.types.js +1 -0
  19. package/esm/RichTreeViewPro/index.d.ts +3 -0
  20. package/esm/RichTreeViewPro/index.js +3 -0
  21. package/esm/RichTreeViewPro/richTreeViewProClasses.d.ts +7 -0
  22. package/esm/RichTreeViewPro/richTreeViewProClasses.js +6 -0
  23. package/esm/index.d.ts +12 -0
  24. package/esm/index.js +22 -0
  25. package/esm/internals/index.d.ts +1 -0
  26. package/esm/internals/index.js +1 -0
  27. package/esm/internals/plugins/useTreeViewItemsReordering/index.d.ts +2 -0
  28. package/esm/internals/plugins/useTreeViewItemsReordering/index.js +1 -0
  29. package/esm/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.d.ts +3 -0
  30. package/esm/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.itemPlugin.d.ts +3 -0
  31. package/{node → esm}/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.itemPlugin.js +10 -19
  32. package/{node → esm}/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.js +29 -48
  33. package/esm/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.selectors.d.ts +183 -0
  34. package/{node → esm}/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.selectors.js +4 -11
  35. package/esm/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.types.d.ts +132 -0
  36. package/esm/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.types.js +1 -0
  37. package/esm/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.utils.d.ts +37 -0
  38. package/{node → esm}/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.utils.js +21 -31
  39. package/esm/internals/plugins/useTreeViewLazyLoading/index.d.ts +1 -0
  40. package/esm/internals/plugins/useTreeViewLazyLoading/index.js +1 -0
  41. package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.d.ts +3 -0
  42. package/esm/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.js +288 -0
  43. package/esm/internals/plugins/useTreeViewLazyLoading/utils.d.ts +32 -0
  44. package/esm/internals/plugins/useTreeViewLazyLoading/utils.js +85 -0
  45. package/esm/internals/utils/releaseInfo.d.ts +1 -0
  46. package/esm/internals/utils/releaseInfo.js +13 -0
  47. package/esm/internals/zero-styled/index.d.ts +3 -0
  48. package/esm/internals/zero-styled/index.js +7 -0
  49. package/esm/package.json +1 -0
  50. package/esm/themeAugmentation/components.d.ts +11 -0
  51. package/esm/themeAugmentation/index.d.ts +3 -0
  52. package/esm/themeAugmentation/index.js +0 -0
  53. package/esm/themeAugmentation/overrides.d.ts +12 -0
  54. package/esm/themeAugmentation/props.d.ts +10 -0
  55. package/index.d.ts +2 -2
  56. package/index.js +147 -15
  57. package/internals/index.d.ts +1 -1
  58. package/internals/index.js +12 -1
  59. package/internals/plugins/useTreeViewItemsReordering/index.d.ts +2 -2
  60. package/internals/plugins/useTreeViewItemsReordering/index.js +12 -1
  61. package/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.d.ts +2 -2
  62. package/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.itemPlugin.d.ts +1 -1
  63. package/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.itemPlugin.js +19 -10
  64. package/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.js +38 -39
  65. package/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.selectors.d.ts +138 -134
  66. package/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.selectors.js +11 -4
  67. package/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.types.d.ts +108 -117
  68. package/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.types.js +5 -1
  69. package/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.utils.d.ts +28 -15
  70. package/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.utils.js +31 -21
  71. package/internals/plugins/useTreeViewLazyLoading/index.d.ts +1 -0
  72. package/internals/plugins/useTreeViewLazyLoading/index.js +12 -0
  73. package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.d.ts +3 -0
  74. package/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.js +297 -0
  75. package/internals/plugins/useTreeViewLazyLoading/utils.d.ts +32 -0
  76. package/internals/plugins/useTreeViewLazyLoading/utils.js +89 -0
  77. package/internals/utils/releaseInfo.d.ts +1 -1
  78. package/internals/utils/releaseInfo.js +13 -5
  79. package/internals/zero-styled/index.d.ts +1 -1
  80. package/internals/zero-styled/index.js +14 -4
  81. package/modern/RichTreeViewPro/RichTreeViewPro.d.ts +20 -0
  82. package/modern/RichTreeViewPro/RichTreeViewPro.js +21 -15
  83. package/modern/RichTreeViewPro/RichTreeViewPro.plugins.d.ts +7 -0
  84. package/modern/RichTreeViewPro/RichTreeViewPro.plugins.js +2 -1
  85. package/modern/RichTreeViewPro/RichTreeViewPro.types.d.ts +51 -0
  86. package/modern/RichTreeViewPro/index.d.ts +3 -0
  87. package/modern/RichTreeViewPro/richTreeViewProClasses.d.ts +7 -0
  88. package/modern/index.d.ts +12 -0
  89. package/modern/index.js +1 -1
  90. package/modern/internals/index.d.ts +1 -0
  91. package/modern/internals/plugins/useTreeViewItemsReordering/index.d.ts +2 -0
  92. package/modern/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.d.ts +3 -0
  93. package/modern/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.itemPlugin.d.ts +3 -0
  94. package/modern/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.js +4 -14
  95. package/modern/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.selectors.d.ts +183 -0
  96. package/modern/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.types.d.ts +132 -0
  97. package/modern/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.utils.d.ts +37 -0
  98. package/modern/internals/plugins/useTreeViewLazyLoading/index.d.ts +1 -0
  99. package/modern/internals/plugins/useTreeViewLazyLoading/index.js +1 -0
  100. package/modern/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.d.ts +3 -0
  101. package/modern/internals/plugins/useTreeViewLazyLoading/useTreeViewLazyLoading.js +288 -0
  102. package/modern/internals/plugins/useTreeViewLazyLoading/utils.d.ts +32 -0
  103. package/modern/internals/plugins/useTreeViewLazyLoading/utils.js +85 -0
  104. package/modern/internals/utils/releaseInfo.d.ts +1 -0
  105. package/modern/internals/utils/releaseInfo.js +1 -1
  106. package/modern/internals/zero-styled/index.d.ts +3 -0
  107. package/modern/package.json +1 -0
  108. package/modern/themeAugmentation/components.d.ts +11 -0
  109. package/modern/themeAugmentation/index.d.ts +3 -0
  110. package/modern/themeAugmentation/overrides.d.ts +12 -0
  111. package/modern/themeAugmentation/props.d.ts +10 -0
  112. package/package.json +43 -10
  113. package/themeAugmentation/components.d.ts +1 -3
  114. package/themeAugmentation/index.d.ts +1 -1
  115. package/themeAugmentation/index.js +1 -0
  116. package/themeAugmentation/overrides.d.ts +2 -3
  117. package/themeAugmentation/props.d.ts +2 -4
  118. package/tsconfig.build.tsbuildinfo +1 -0
  119. package/RichTreeViewPro/package.json +0 -6
  120. package/internals/package.json +0 -6
  121. package/node/RichTreeViewPro/RichTreeViewPro.plugins.js +0 -11
  122. package/node/RichTreeViewPro/RichTreeViewPro.types.js +0 -5
  123. package/node/RichTreeViewPro/index.js +0 -27
  124. package/node/RichTreeViewPro/richTreeViewProClasses.js +0 -14
  125. package/node/index.js +0 -154
  126. package/node/internals/index.js +0 -12
  127. package/node/internals/plugins/useTreeViewItemsReordering/index.js +0 -12
  128. package/node/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.types.js +0 -5
  129. package/node/internals/utils/releaseInfo.js +0 -21
  130. package/node/internals/zero-styled/index.js +0 -17
  131. package/node/themeAugmentation/index.js +0 -1
  132. package/themeAugmentation/package.json +0 -6
@@ -1,24 +1,37 @@
1
1
  import { TreeViewUsedStore, UseTreeViewItemsState } from '@mui/x-tree-view/internals';
2
2
  import { TreeViewItemId, TreeViewItemsReorderingAction } from '@mui/x-tree-view/models';
3
- import { TreeViewItemItemReorderingValidActions, TreeViewItemReorderPosition, UseTreeViewItemsReorderingSignature } from './useTreeViewItemsReordering.types';
3
+ import { TreeViewItemItemReorderingValidActions, TreeViewItemReorderPosition, UseTreeViewItemsReorderingSignature } from "./useTreeViewItemsReordering.types.js";
4
4
  /**
5
5
  * Checks if the item with the id itemIdB is an ancestor of the item with the id itemIdA.
6
6
  */
7
7
  export declare const isAncestor: (store: TreeViewUsedStore<UseTreeViewItemsReorderingSignature>, itemIdA: string, itemIdB: string) => boolean;
8
8
  interface GetNewPositionParams {
9
- itemChildrenIndentation: string | number;
10
- validActions: TreeViewItemItemReorderingValidActions;
11
- targetHeight: number;
12
- targetDepth: number;
13
- cursorY: number;
14
- cursorX: number;
15
- contentElement: HTMLDivElement;
9
+ itemChildrenIndentation: string | number;
10
+ validActions: TreeViewItemItemReorderingValidActions;
11
+ targetHeight: number;
12
+ targetDepth: number;
13
+ cursorY: number;
14
+ cursorX: number;
15
+ contentElement: HTMLDivElement;
16
16
  }
17
- export declare const chooseActionToApply: ({ itemChildrenIndentation, validActions, targetHeight, targetDepth, cursorX, cursorY, contentElement, }: GetNewPositionParams) => TreeViewItemsReorderingAction | null;
18
- export declare const moveItemInTree: <R extends {}>({ itemToMoveId, oldPosition, newPosition, prevState, }: {
19
- itemToMoveId: TreeViewItemId;
20
- oldPosition: TreeViewItemReorderPosition;
21
- newPosition: TreeViewItemReorderPosition;
22
- prevState: UseTreeViewItemsState<R>["items"];
17
+ export declare const chooseActionToApply: ({
18
+ itemChildrenIndentation,
19
+ validActions,
20
+ targetHeight,
21
+ targetDepth,
22
+ cursorX,
23
+ cursorY,
24
+ contentElement
25
+ }: GetNewPositionParams) => TreeViewItemsReorderingAction | null;
26
+ export declare const moveItemInTree: <R extends {}>({
27
+ itemToMoveId,
28
+ oldPosition,
29
+ newPosition,
30
+ prevState
31
+ }: {
32
+ itemToMoveId: TreeViewItemId;
33
+ oldPosition: TreeViewItemReorderPosition;
34
+ newPosition: TreeViewItemReorderPosition;
35
+ prevState: UseTreeViewItemsState<R>["items"];
23
36
  }) => UseTreeViewItemsState<R>["items"];
24
- export {};
37
+ export {};
@@ -1,10 +1,17 @@
1
- import _extends from "@babel/runtime/helpers/esm/extends";
2
- import { buildSiblingIndexes, TREE_VIEW_ROOT_PARENT_ID, selectorItemMeta } from '@mui/x-tree-view/internals';
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.moveItemInTree = exports.isAncestor = exports.chooseActionToApply = void 0;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _internals = require("@mui/x-tree-view/internals");
3
10
  /**
4
11
  * Checks if the item with the id itemIdB is an ancestor of the item with the id itemIdA.
5
12
  */
6
- export const isAncestor = (store, itemIdA, itemIdB) => {
7
- const itemMetaA = selectorItemMeta(store.value, itemIdA);
13
+ const isAncestor = (store, itemIdA, itemIdB) => {
14
+ const itemMetaA = (0, _internals.selectorItemMeta)(store.value, itemIdA);
8
15
  if (itemMetaA.parentId === itemIdB) {
9
16
  return true;
10
17
  }
@@ -19,6 +26,7 @@ export const isAncestor = (store, itemIdA, itemIdB) => {
19
26
  * @param {string | null} itemChildrenIndentation The indentation as passed to the `itemChildrenIndentation` prop.
20
27
  * @param {HTMLElement} contentElement The DOM element to which the indentation will be applied.
21
28
  */
29
+ exports.isAncestor = isAncestor;
22
30
  const parseItemChildrenIndentation = (itemChildrenIndentation, contentElement) => {
23
31
  if (typeof itemChildrenIndentation === 'number') {
24
32
  return itemChildrenIndentation;
@@ -37,7 +45,7 @@ const parseItemChildrenIndentation = (itemChildrenIndentation, contentElement) =
37
45
  contentElement.removeChild(tempElement);
38
46
  return value;
39
47
  };
40
- export const chooseActionToApply = ({
48
+ const chooseActionToApply = ({
41
49
  itemChildrenIndentation,
42
50
  validActions,
43
51
  targetHeight,
@@ -82,23 +90,24 @@ export const chooseActionToApply = ({
82
90
  }
83
91
  return action;
84
92
  };
85
- export const moveItemInTree = ({
93
+ exports.chooseActionToApply = chooseActionToApply;
94
+ const moveItemInTree = ({
86
95
  itemToMoveId,
87
96
  oldPosition,
88
97
  newPosition,
89
98
  prevState
90
99
  }) => {
91
100
  const itemToMoveMeta = prevState.itemMetaLookup[itemToMoveId];
92
- const oldParentId = oldPosition.parentId ?? TREE_VIEW_ROOT_PARENT_ID;
93
- const newParentId = newPosition.parentId ?? TREE_VIEW_ROOT_PARENT_ID;
101
+ const oldParentId = oldPosition.parentId ?? _internals.TREE_VIEW_ROOT_PARENT_ID;
102
+ const newParentId = newPosition.parentId ?? _internals.TREE_VIEW_ROOT_PARENT_ID;
94
103
 
95
104
  // 1. Update the `itemOrderedChildrenIds`.
96
- const itemOrderedChildrenIds = _extends({}, prevState.itemOrderedChildrenIdsLookup);
105
+ const itemOrderedChildrenIds = (0, _extends2.default)({}, prevState.itemOrderedChildrenIdsLookup);
97
106
  if (oldParentId === newParentId) {
98
107
  const updatedChildren = [...itemOrderedChildrenIds[oldParentId]];
99
108
  updatedChildren.splice(oldPosition.index, 1);
100
109
  updatedChildren.splice(newPosition.index, 0, itemToMoveId);
101
- itemOrderedChildrenIds[itemToMoveMeta.parentId ?? TREE_VIEW_ROOT_PARENT_ID] = updatedChildren;
110
+ itemOrderedChildrenIds[itemToMoveMeta.parentId ?? _internals.TREE_VIEW_ROOT_PARENT_ID] = updatedChildren;
102
111
  } else {
103
112
  const updatedOldParentChildren = [...itemOrderedChildrenIds[oldParentId]];
104
113
  updatedOldParentChildren.splice(oldPosition.index, 1);
@@ -109,50 +118,51 @@ export const moveItemInTree = ({
109
118
  }
110
119
 
111
120
  // 2. Update the `itemChildrenIndexes`
112
- const itemChildrenIndexes = _extends({}, prevState.itemChildrenIndexesLookup);
113
- itemChildrenIndexes[oldParentId] = buildSiblingIndexes(itemOrderedChildrenIds[oldParentId]);
121
+ const itemChildrenIndexes = (0, _extends2.default)({}, prevState.itemChildrenIndexesLookup);
122
+ itemChildrenIndexes[oldParentId] = (0, _internals.buildSiblingIndexes)(itemOrderedChildrenIds[oldParentId]);
114
123
  if (newParentId !== oldParentId) {
115
- itemChildrenIndexes[newParentId] = buildSiblingIndexes(itemOrderedChildrenIds[newParentId]);
124
+ itemChildrenIndexes[newParentId] = (0, _internals.buildSiblingIndexes)(itemOrderedChildrenIds[newParentId]);
116
125
  }
117
126
 
118
127
  // 3. Update the `itemMetaLookup`
119
- const itemMetaLookup = _extends({}, prevState.itemMetaLookup);
128
+ const itemMetaLookup = (0, _extends2.default)({}, prevState.itemMetaLookup);
120
129
 
121
130
  // 3.1 Update the `expandable` property of the old and the new parent
122
131
  function updateExpandable(itemId) {
123
132
  const isExpandable = itemOrderedChildrenIds[itemId].length > 0;
124
133
  if (itemMetaLookup[itemId].expandable !== isExpandable) {
125
- itemMetaLookup[itemId] = _extends({}, itemMetaLookup[itemId], {
134
+ itemMetaLookup[itemId] = (0, _extends2.default)({}, itemMetaLookup[itemId], {
126
135
  expandable: isExpandable
127
136
  });
128
137
  }
129
138
  }
130
- if (oldParentId !== TREE_VIEW_ROOT_PARENT_ID && oldParentId !== newParentId) {
139
+ if (oldParentId !== _internals.TREE_VIEW_ROOT_PARENT_ID && oldParentId !== newParentId) {
131
140
  updateExpandable(oldParentId);
132
141
  }
133
- if (newParentId !== TREE_VIEW_ROOT_PARENT_ID && newParentId !== oldParentId) {
142
+ if (newParentId !== _internals.TREE_VIEW_ROOT_PARENT_ID && newParentId !== oldParentId) {
134
143
  updateExpandable(newParentId);
135
144
  }
136
145
 
137
146
  // 3.2 Update the `parentId` and `depth` properties of the item to move
138
147
  // The depth is always defined because drag&drop is only usable with Rich Tree View components.
139
148
  const itemToMoveDepth = newPosition.parentId == null ? 0 : itemMetaLookup[newParentId].depth + 1;
140
- itemMetaLookup[itemToMoveId] = _extends({}, itemToMoveMeta, {
149
+ itemMetaLookup[itemToMoveId] = (0, _extends2.default)({}, itemToMoveMeta, {
141
150
  parentId: newPosition.parentId,
142
151
  depth: itemToMoveDepth
143
152
  });
144
153
 
145
154
  // 3.3 Update the depth of all the children of the item to move
146
155
  const updateItemDepth = (itemId, depth) => {
147
- itemMetaLookup[itemId] = _extends({}, itemMetaLookup[itemId], {
156
+ itemMetaLookup[itemId] = (0, _extends2.default)({}, itemMetaLookup[itemId], {
148
157
  depth
149
158
  });
150
159
  itemOrderedChildrenIds[itemId]?.forEach(childId => updateItemDepth(childId, depth + 1));
151
160
  };
152
161
  itemOrderedChildrenIds[itemToMoveId]?.forEach(childId => updateItemDepth(childId, itemToMoveDepth + 1));
153
- return _extends({}, prevState, {
162
+ return (0, _extends2.default)({}, prevState, {
154
163
  itemOrderedChildrenIdsLookup: itemOrderedChildrenIds,
155
164
  itemChildrenIndexesLookup: itemChildrenIndexes,
156
165
  itemMetaLookup
157
166
  });
158
- };
167
+ };
168
+ exports.moveItemInTree = moveItemInTree;
@@ -0,0 +1 @@
1
+ export { useTreeViewLazyLoading } from "./useTreeViewLazyLoading.js";
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "useTreeViewLazyLoading", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _useTreeViewLazyLoading.useTreeViewLazyLoading;
10
+ }
11
+ });
12
+ var _useTreeViewLazyLoading = require("./useTreeViewLazyLoading");
@@ -0,0 +1,3 @@
1
+ import { TreeViewPlugin } from '@mui/x-tree-view/internals';
2
+ import type { UseTreeViewLazyLoadingSignature } from '@mui/x-tree-view/internals';
3
+ export declare const useTreeViewLazyLoading: TreeViewPlugin<UseTreeViewLazyLoadingSignature>;
@@ -0,0 +1,297 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.useTreeViewLazyLoading = void 0;
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+ var React = _interopRequireWildcard(require("react"));
11
+ var _useLazyRef = _interopRequireDefault(require("@mui/utils/useLazyRef"));
12
+ var _warning = require("@mui/x-internals/warning");
13
+ var _useEventCallback = _interopRequireDefault(require("@mui/utils/useEventCallback"));
14
+ var _internals = require("@mui/x-tree-view/internals");
15
+ var _utils = require("@mui/x-tree-view/utils");
16
+ var _utils2 = require("./utils");
17
+ const INITIAL_STATE = {
18
+ loading: {},
19
+ errors: {}
20
+ };
21
+ const noopCache = {
22
+ clear: () => {},
23
+ get: () => undefined,
24
+ set: () => {}
25
+ };
26
+ function getCache(cacheProp) {
27
+ if (cacheProp === null) {
28
+ return noopCache;
29
+ }
30
+ return cacheProp ?? new _utils.DataSourceCacheDefault({});
31
+ }
32
+ const useTreeViewLazyLoading = ({
33
+ instance,
34
+ params,
35
+ store
36
+ }) => {
37
+ const isLazyLoadingEnabled = params.dataSource?.getChildrenCount !== undefined;
38
+ const firstRenderRef = React.useRef(true);
39
+ const nestedDataManager = (0, _useLazyRef.default)(() => new _utils2.NestedDataManager(instance)).current;
40
+ const cacheRef = (0, _useLazyRef.default)(() => getCache(params.dataSourceCache));
41
+ const setDataSourceLoading = (0, _useEventCallback.default)((itemId, isLoading) => {
42
+ if (!isLazyLoadingEnabled) {
43
+ return;
44
+ }
45
+ store.update(prevState => {
46
+ if (!prevState.lazyLoading.dataSource.loading[itemId] && !isLoading) {
47
+ return prevState;
48
+ }
49
+ const loading = (0, _extends2.default)({}, prevState.lazyLoading.dataSource.loading);
50
+ if (isLoading === false) {
51
+ delete loading[itemId];
52
+ } else {
53
+ loading[itemId] = isLoading;
54
+ }
55
+ return (0, _extends2.default)({}, prevState, {
56
+ lazyLoading: (0, _extends2.default)({}, prevState.lazyLoading, {
57
+ dataSource: (0, _extends2.default)({}, prevState.lazyLoading.dataSource, {
58
+ loading
59
+ })
60
+ })
61
+ });
62
+ });
63
+ });
64
+ const setDataSourceError = (itemId, error) => {
65
+ if (!isLazyLoadingEnabled) {
66
+ return;
67
+ }
68
+ store.update(prevState => {
69
+ const errors = (0, _extends2.default)({}, prevState.lazyLoading.dataSource.errors);
70
+ if (error === null && errors[itemId] !== undefined) {
71
+ delete errors[itemId];
72
+ } else {
73
+ errors[itemId] = error;
74
+ }
75
+ errors[itemId] = error;
76
+ return (0, _extends2.default)({}, prevState, {
77
+ lazyLoading: (0, _extends2.default)({}, prevState.lazyLoading, {
78
+ dataSource: (0, _extends2.default)({}, prevState.lazyLoading.dataSource, {
79
+ errors
80
+ })
81
+ })
82
+ });
83
+ });
84
+ };
85
+ const resetDataSourceState = (0, _useEventCallback.default)(() => {
86
+ if (!isLazyLoadingEnabled) {
87
+ return;
88
+ }
89
+ store.update(prevState => (0, _extends2.default)({}, prevState, {
90
+ lazyLoading: (0, _extends2.default)({}, prevState.lazyLoading, {
91
+ dataSource: INITIAL_STATE
92
+ })
93
+ }));
94
+ });
95
+ const fetchItems = (0, _useEventCallback.default)(async parentIds => {
96
+ if (!isLazyLoadingEnabled) {
97
+ return;
98
+ }
99
+ const getChildrenCount = params.dataSource?.getChildrenCount || (() => 0);
100
+ const getTreeItems = params.dataSource?.getTreeItems;
101
+ if (!getTreeItems) {
102
+ return;
103
+ }
104
+ if (parentIds) {
105
+ await nestedDataManager.queue(parentIds);
106
+ return;
107
+ }
108
+ nestedDataManager.clear();
109
+
110
+ // reset the state if we are refetching the first visible items
111
+ if ((0, _internals.selectorDataSourceState)(store.value) !== INITIAL_STATE) {
112
+ resetDataSourceState();
113
+ }
114
+ // handle caching here
115
+ const cachedData = cacheRef.current.get('root');
116
+ if (cachedData !== undefined) {
117
+ return;
118
+ }
119
+
120
+ // handle loading here
121
+ instance.setTreeViewLoading(true);
122
+ try {
123
+ const getTreeItemsResponse = await getTreeItems();
124
+
125
+ // set caching
126
+ cacheRef.current.set('root', getTreeItemsResponse);
127
+
128
+ // update the items in the state
129
+ instance.addItems({
130
+ items: getTreeItemsResponse,
131
+ depth: 0,
132
+ getChildrenCount
133
+ });
134
+ } catch (error) {
135
+ // set the items to empty
136
+ instance.addItems({
137
+ items: [],
138
+ depth: 0,
139
+ getChildrenCount
140
+ });
141
+ // set error state
142
+ instance.setTreeViewError(error);
143
+ } finally {
144
+ // set loading state
145
+ instance.setTreeViewLoading(false);
146
+ }
147
+ });
148
+ const fetchItemChildren = (0, _useEventCallback.default)(async id => {
149
+ if (!isLazyLoadingEnabled) {
150
+ return;
151
+ }
152
+ const getChildrenCount = params.dataSource?.getChildrenCount || (() => 0);
153
+ const getTreeItems = params.dataSource?.getTreeItems;
154
+ if (!getTreeItems) {
155
+ nestedDataManager.clearPendingRequest(id);
156
+ return;
157
+ }
158
+ const parent = (0, _internals.selectorItemMeta)(store.value, id);
159
+ if (!parent) {
160
+ nestedDataManager.clearPendingRequest(id);
161
+ return;
162
+ }
163
+ const depth = parent.depth ? parent.depth + 1 : 1;
164
+
165
+ // handle loading here
166
+ instance.setDataSourceLoading(id, true);
167
+
168
+ // handle caching here
169
+ const cachedData = cacheRef.current.get(id);
170
+ if (cachedData !== undefined && cachedData !== -1) {
171
+ nestedDataManager.setRequestSettled(id);
172
+ instance.addItems({
173
+ items: cachedData,
174
+ depth,
175
+ parentId: id,
176
+ getChildrenCount
177
+ });
178
+ instance.setDataSourceLoading(id, false);
179
+ return;
180
+ }
181
+ if (cachedData === -1) {
182
+ instance.removeChildren(id);
183
+ }
184
+ const existingError = (0, _internals.selectorGetTreeItemError)(store.value, id) ?? null;
185
+ if (existingError) {
186
+ instance.setDataSourceError(id, null);
187
+ }
188
+ try {
189
+ const getTreeItemsResponse = await getTreeItems(id);
190
+ nestedDataManager.setRequestSettled(id);
191
+
192
+ // set caching
193
+ cacheRef.current.set(id, getTreeItemsResponse);
194
+ // update the items in the state
195
+ instance.addItems({
196
+ items: getTreeItemsResponse,
197
+ depth,
198
+ parentId: id,
199
+ getChildrenCount
200
+ });
201
+ } catch (error) {
202
+ const childrenFetchError = error;
203
+ // handle errors here
204
+ instance.setDataSourceError(id, childrenFetchError);
205
+ instance.removeChildren(id);
206
+ } finally {
207
+ // unset loading
208
+ instance.setDataSourceLoading(id, false);
209
+ nestedDataManager.setRequestSettled(id);
210
+ }
211
+ });
212
+ (0, _internals.useInstanceEventHandler)(instance, 'beforeItemToggleExpansion', async eventParameters => {
213
+ if (!isLazyLoadingEnabled || !eventParameters.shouldBeExpanded) {
214
+ return;
215
+ }
216
+ eventParameters.isExpansionPrevented = true;
217
+ await instance.fetchItems([eventParameters.itemId]);
218
+ const fetchErrors = Boolean((0, _internals.selectorGetTreeItemError)(store.value, eventParameters.itemId));
219
+ if (!fetchErrors) {
220
+ instance.applyItemExpansion({
221
+ itemId: eventParameters.itemId,
222
+ shouldBeExpanded: true,
223
+ event: eventParameters.event
224
+ });
225
+ if ((0, _internals.selectorIsItemSelected)(store.value, eventParameters.itemId)) {
226
+ // make sure selection propagation works correctly
227
+ instance.setItemSelection({
228
+ event: eventParameters.event,
229
+ itemId: eventParameters.itemId,
230
+ keepExistingSelection: true,
231
+ shouldBeSelected: true
232
+ });
233
+ }
234
+ }
235
+ });
236
+ React.useEffect(() => {
237
+ if (isLazyLoadingEnabled && firstRenderRef.current) {
238
+ store.update(prevState => (0, _extends2.default)({}, prevState, {
239
+ lazyLoading: (0, _extends2.default)({}, prevState.lazyLoading, {
240
+ enabled: true
241
+ })
242
+ }));
243
+ if (params.items.length) {
244
+ const getChildrenCount = params.dataSource?.getChildrenCount || (() => 0);
245
+ instance.addItems({
246
+ items: params.items,
247
+ depth: 0,
248
+ getChildrenCount
249
+ });
250
+ } else {
251
+ instance.fetchItems();
252
+ }
253
+ firstRenderRef.current = false;
254
+ }
255
+ }, [instance, params.items, params.dataSource, isLazyLoadingEnabled, store]);
256
+ if (isLazyLoadingEnabled) {
257
+ instance.preventItemUpdates();
258
+ }
259
+ return {
260
+ instance: {
261
+ fetchItemChildren,
262
+ fetchItems,
263
+ setDataSourceLoading,
264
+ setDataSourceError
265
+ },
266
+ publicAPI: {}
267
+ };
268
+ };
269
+ exports.useTreeViewLazyLoading = useTreeViewLazyLoading;
270
+ useTreeViewLazyLoading.getDefaultizedParams = ({
271
+ params,
272
+ experimentalFeatures
273
+ }) => {
274
+ const canUseFeature = experimentalFeatures?.lazyLoading;
275
+ if (process.env.NODE_ENV !== 'production') {
276
+ if (params.dataSource && !canUseFeature) {
277
+ (0, _warning.warnOnce)(['MUI X: The label editing feature requires the `lazyLoading` experimental feature to be enabled.', 'You can do it by passing `experimentalFeatures={{ lazyLoading: true}}` to the Rich Tree View Pro component.', 'Check the documentation for more details: https://mui.com/x/react-tree-view/rich-tree-view/lazy-loading/']);
278
+ }
279
+ }
280
+ const defaultDataSource = params?.dataSource ?? {
281
+ getChildrenCount: () => 0,
282
+ getTreeItems: () => Promise.resolve([])
283
+ };
284
+ return (0, _extends2.default)({}, params, {
285
+ dataSource: canUseFeature ? defaultDataSource : {}
286
+ });
287
+ };
288
+ useTreeViewLazyLoading.getInitialState = () => ({
289
+ lazyLoading: {
290
+ enabled: false,
291
+ dataSource: INITIAL_STATE
292
+ }
293
+ });
294
+ useTreeViewLazyLoading.params = {
295
+ dataSource: true,
296
+ dataSourceCache: true
297
+ };
@@ -0,0 +1,32 @@
1
+ import { TreeViewInstance, UseTreeViewLazyLoadingSignature } from '@mui/x-tree-view/internals';
2
+ import { TreeViewItemId } from '@mui/x-tree-view/models';
3
+ export declare enum RequestStatus {
4
+ QUEUED = 0,
5
+ PENDING = 1,
6
+ SETTLED = 2,
7
+ UNKNOWN = 3,
8
+ }
9
+ /**
10
+ * Plugins that the `NestedDataManager` class can use if they are present, but are not required.
11
+ */
12
+ export type NestedDataManagerOptionalPlugins = readonly [];
13
+ /**
14
+ * Fetches row children from the server with option to limit the number of concurrent requests
15
+ * Determines the status of a request based on the enum `RequestStatus`
16
+ * Uses `ParentId` to uniquely identify a request
17
+ */
18
+ export declare class NestedDataManager {
19
+ private pendingRequests;
20
+ private queuedRequests;
21
+ private settledRequests;
22
+ private instance;
23
+ private maxConcurrentRequests;
24
+ constructor(instance: TreeViewInstance<[UseTreeViewLazyLoadingSignature]>, maxConcurrentRequests?: number);
25
+ private processQueue;
26
+ queue: (ids: TreeViewItemId[]) => Promise<void>;
27
+ setRequestSettled: (id: TreeViewItemId) => Promise<void>;
28
+ clear: () => void;
29
+ clearPendingRequest: (id: TreeViewItemId) => Promise<void>;
30
+ getRequestStatus: (id: TreeViewItemId) => RequestStatus;
31
+ getActiveRequestsCount: () => number;
32
+ }
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.RequestStatus = exports.NestedDataManager = void 0;
7
+ const MAX_CONCURRENT_REQUESTS = Infinity;
8
+ let RequestStatus = exports.RequestStatus = /*#__PURE__*/function (RequestStatus) {
9
+ RequestStatus[RequestStatus["QUEUED"] = 0] = "QUEUED";
10
+ RequestStatus[RequestStatus["PENDING"] = 1] = "PENDING";
11
+ RequestStatus[RequestStatus["SETTLED"] = 2] = "SETTLED";
12
+ RequestStatus[RequestStatus["UNKNOWN"] = 3] = "UNKNOWN";
13
+ return RequestStatus;
14
+ }({});
15
+ /**
16
+ * Plugins that need to be present in the Tree View in order for the `NestedDataManager` class to work correctly.
17
+ */
18
+ /**
19
+ * Plugins that the `NestedDataManager` class can use if they are present, but are not required.
20
+ */
21
+ /**
22
+ * Fetches row children from the server with option to limit the number of concurrent requests
23
+ * Determines the status of a request based on the enum `RequestStatus`
24
+ * Uses `ParentId` to uniquely identify a request
25
+ */
26
+ class NestedDataManager {
27
+ constructor(instance, maxConcurrentRequests = MAX_CONCURRENT_REQUESTS) {
28
+ this.pendingRequests = new Set();
29
+ this.queuedRequests = new Set();
30
+ this.settledRequests = new Set();
31
+ this.instance = void 0;
32
+ this.maxConcurrentRequests = void 0;
33
+ this.processQueue = async () => {
34
+ if (this.queuedRequests.size === 0 || this.pendingRequests.size >= this.maxConcurrentRequests) {
35
+ return;
36
+ }
37
+ const loopLength = Math.min(this.maxConcurrentRequests - this.pendingRequests.size, this.queuedRequests.size);
38
+ if (loopLength === 0) {
39
+ return;
40
+ }
41
+ const fetchQueue = Array.from(this.queuedRequests);
42
+ const fetchPromises = [];
43
+ for (let i = 0; i < loopLength; i += 1) {
44
+ const id = fetchQueue[i];
45
+ this.queuedRequests.delete(id);
46
+ this.pendingRequests.add(id);
47
+ fetchPromises.push(this.instance.fetchItemChildren(id));
48
+ }
49
+ await Promise.all(fetchPromises);
50
+ };
51
+ this.queue = async ids => {
52
+ const loadingIds = {};
53
+ ids.forEach(id => {
54
+ this.queuedRequests.add(id);
55
+ loadingIds[id] = true;
56
+ });
57
+ await this.processQueue();
58
+ };
59
+ this.setRequestSettled = async id => {
60
+ this.pendingRequests.delete(id);
61
+ this.settledRequests.add(id);
62
+ await this.processQueue();
63
+ };
64
+ this.clear = () => {
65
+ this.queuedRequests.clear();
66
+ Array.from(this.pendingRequests).forEach(id => this.clearPendingRequest(id));
67
+ };
68
+ this.clearPendingRequest = async id => {
69
+ this.pendingRequests.delete(id);
70
+ await this.processQueue();
71
+ };
72
+ this.getRequestStatus = id => {
73
+ if (this.pendingRequests.has(id)) {
74
+ return RequestStatus.PENDING;
75
+ }
76
+ if (this.queuedRequests.has(id)) {
77
+ return RequestStatus.QUEUED;
78
+ }
79
+ if (this.settledRequests.has(id)) {
80
+ return RequestStatus.SETTLED;
81
+ }
82
+ return RequestStatus.UNKNOWN;
83
+ };
84
+ this.getActiveRequestsCount = () => this.pendingRequests.size + this.queuedRequests.size;
85
+ this.instance = instance;
86
+ this.maxConcurrentRequests = maxConcurrentRequests;
87
+ }
88
+ }
89
+ exports.NestedDataManager = NestedDataManager;
@@ -1 +1 @@
1
- export declare const getReleaseInfo: () => any;
1
+ export declare const getReleaseInfo: () => any;
@@ -1,13 +1,21 @@
1
- import ponyfillGlobal from '@mui/utils/ponyfillGlobal';
2
- export const getReleaseInfo = () => {
3
- const releaseInfo = "MTczNjk4MjAwMDAwMA==";
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.getReleaseInfo = void 0;
8
+ var _ponyfillGlobal = _interopRequireDefault(require("@mui/utils/ponyfillGlobal"));
9
+ const getReleaseInfo = () => {
10
+ const releaseInfo = "MTc0MjI0ODgwMDAwMA==";
4
11
  if (process.env.NODE_ENV !== 'production') {
5
12
  // A simple hack to set the value in the test environment (has no build step).
6
13
  // eslint-disable-next-line no-useless-concat
7
14
  if (releaseInfo === '__RELEASE' + '_INFO__') {
8
15
  // eslint-disable-next-line no-underscore-dangle
9
- return ponyfillGlobal.__MUI_RELEASE_INFO__;
16
+ return _ponyfillGlobal.default.__MUI_RELEASE_INFO__;
10
17
  }
11
18
  }
12
19
  return releaseInfo;
13
- };
20
+ };
21
+ exports.getReleaseInfo = getReleaseInfo;
@@ -1,3 +1,3 @@
1
1
  import { useThemeProps } from '@mui/material/styles';
2
2
  export { styled } from '@mui/material/styles';
3
- export declare function createUseThemeProps(name: string): typeof useThemeProps;
3
+ export declare function createUseThemeProps(name: string): typeof useThemeProps;