@mui/x-tree-view-pro 7.12.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 (98) hide show
  1. package/LICENSE +11 -0
  2. package/README.md +26 -0
  3. package/build/CHANGELOG.md +4336 -0
  4. package/build/LICENSE +11 -0
  5. package/build/README.md +26 -0
  6. package/build/RichTreeViewPro/RichTreeViewPro.d.ts +20 -0
  7. package/build/RichTreeViewPro/RichTreeViewPro.js +359 -0
  8. package/build/RichTreeViewPro/RichTreeViewPro.plugins.d.ts +8 -0
  9. package/build/RichTreeViewPro/RichTreeViewPro.plugins.js +5 -0
  10. package/build/RichTreeViewPro/RichTreeViewPro.types.d.ts +65 -0
  11. package/build/RichTreeViewPro/RichTreeViewPro.types.js +1 -0
  12. package/build/RichTreeViewPro/index.d.ts +3 -0
  13. package/build/RichTreeViewPro/index.js +3 -0
  14. package/build/RichTreeViewPro/package.json +6 -0
  15. package/build/RichTreeViewPro/richTreeViewProClasses.d.ts +7 -0
  16. package/build/RichTreeViewPro/richTreeViewProClasses.js +6 -0
  17. package/build/index.d.ts +12 -0
  18. package/build/index.js +22 -0
  19. package/build/internals/index.d.ts +1 -0
  20. package/build/internals/index.js +1 -0
  21. package/build/internals/package.json +6 -0
  22. package/build/internals/plugins/useTreeViewItemsReordering/index.d.ts +2 -0
  23. package/build/internals/plugins/useTreeViewItemsReordering/index.js +1 -0
  24. package/build/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.d.ts +3 -0
  25. package/build/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.itemPlugin.d.ts +4 -0
  26. package/build/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.itemPlugin.js +128 -0
  27. package/build/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.js +193 -0
  28. package/build/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.types.d.ts +140 -0
  29. package/build/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.types.js +1 -0
  30. package/build/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.utils.d.ts +26 -0
  31. package/build/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.utils.js +150 -0
  32. package/build/internals/utils/releaseInfo.d.ts +1 -0
  33. package/build/internals/utils/releaseInfo.js +13 -0
  34. package/build/internals/zero-styled/index.d.ts +3 -0
  35. package/build/internals/zero-styled/index.js +7 -0
  36. package/build/modern/RichTreeViewPro/RichTreeViewPro.js +359 -0
  37. package/build/modern/RichTreeViewPro/RichTreeViewPro.plugins.js +5 -0
  38. package/build/modern/RichTreeViewPro/RichTreeViewPro.types.js +1 -0
  39. package/build/modern/RichTreeViewPro/index.js +3 -0
  40. package/build/modern/RichTreeViewPro/richTreeViewProClasses.js +6 -0
  41. package/build/modern/index.js +22 -0
  42. package/build/modern/internals/index.js +1 -0
  43. package/build/modern/internals/plugins/useTreeViewItemsReordering/index.js +1 -0
  44. package/build/modern/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.itemPlugin.js +128 -0
  45. package/build/modern/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.js +193 -0
  46. package/build/modern/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.types.js +1 -0
  47. package/build/modern/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.utils.js +150 -0
  48. package/build/modern/internals/utils/releaseInfo.js +13 -0
  49. package/build/modern/internals/zero-styled/index.js +7 -0
  50. package/build/modern/themeAugmentation/index.js +3 -0
  51. package/build/node/RichTreeViewPro/RichTreeViewPro.js +367 -0
  52. package/build/node/RichTreeViewPro/RichTreeViewPro.plugins.js +11 -0
  53. package/build/node/RichTreeViewPro/RichTreeViewPro.types.js +5 -0
  54. package/build/node/RichTreeViewPro/index.js +27 -0
  55. package/build/node/RichTreeViewPro/richTreeViewProClasses.js +14 -0
  56. package/build/node/index.js +154 -0
  57. package/build/node/internals/index.js +12 -0
  58. package/build/node/internals/plugins/useTreeViewItemsReordering/index.js +12 -0
  59. package/build/node/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.itemPlugin.js +138 -0
  60. package/build/node/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.js +203 -0
  61. package/build/node/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.types.js +5 -0
  62. package/build/node/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.utils.js +160 -0
  63. package/build/node/internals/utils/releaseInfo.js +20 -0
  64. package/build/node/internals/zero-styled/index.js +17 -0
  65. package/build/node/themeAugmentation/index.js +38 -0
  66. package/build/package.json +59 -0
  67. package/build/themeAugmentation/components.d.ts +13 -0
  68. package/build/themeAugmentation/index.d.ts +3 -0
  69. package/build/themeAugmentation/index.js +3 -0
  70. package/build/themeAugmentation/overrides.d.ts +13 -0
  71. package/build/themeAugmentation/package.json +6 -0
  72. package/build/themeAugmentation/props.d.ts +12 -0
  73. package/package.json +71 -0
  74. package/src/RichTreeViewPro/RichTreeViewPro.plugins.ts +54 -0
  75. package/src/RichTreeViewPro/RichTreeViewPro.test.tsx +20 -0
  76. package/src/RichTreeViewPro/RichTreeViewPro.tsx +383 -0
  77. package/src/RichTreeViewPro/RichTreeViewPro.types.ts +80 -0
  78. package/src/RichTreeViewPro/index.ts +8 -0
  79. package/src/RichTreeViewPro/richTreeViewProClasses.ts +18 -0
  80. package/src/index.ts +17 -0
  81. package/src/internals/index.ts +1 -0
  82. package/src/internals/plugins/useTreeViewItemsReordering/index.ts +7 -0
  83. package/src/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.itemPlugin.ts +155 -0
  84. package/src/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.test.tsx +370 -0
  85. package/src/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.ts +278 -0
  86. package/src/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.types.ts +160 -0
  87. package/src/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.utils.ts +199 -0
  88. package/src/internals/utils/releaseInfo.ts +15 -0
  89. package/src/internals/zero-styled/index.ts +8 -0
  90. package/src/themeAugmentation/components.d.ts +13 -0
  91. package/src/themeAugmentation/index.js +1 -0
  92. package/src/themeAugmentation/index.ts +3 -0
  93. package/src/themeAugmentation/overrides.d.ts +13 -0
  94. package/src/themeAugmentation/props.d.ts +12 -0
  95. package/src/themeAugmentation/themeAugmentation.spec.ts +26 -0
  96. package/tsconfig.build.json +21 -0
  97. package/tsconfig.build.tsbuildinfo +1 -0
  98. package/tsconfig.json +14 -0
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useTreeViewItemsReorderingItemPlugin = exports.isAndroid = void 0;
7
+ var React = _interopRequireWildcard(require("react"));
8
+ var _internals = require("@mui/x-tree-view/internals");
9
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
10
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
11
+ const isAndroid = () => navigator.userAgent.toLowerCase().includes('android');
12
+ exports.isAndroid = isAndroid;
13
+ const useTreeViewItemsReorderingItemPlugin = ({
14
+ props
15
+ }) => {
16
+ const {
17
+ itemsReordering,
18
+ instance
19
+ } = (0, _internals.useTreeViewContext)();
20
+ const {
21
+ itemId
22
+ } = props;
23
+ const validActionsRef = React.useRef(null);
24
+ return {
25
+ propsEnhancers: {
26
+ root: ({
27
+ rootRefObject,
28
+ contentRefObject,
29
+ externalEventHandlers
30
+ }) => {
31
+ const draggable = instance.canItemBeDragged(itemId);
32
+ if (!draggable) {
33
+ return {};
34
+ }
35
+ const handleDragStart = event => {
36
+ externalEventHandlers.onDragStart?.(event);
37
+ if (event.defaultMuiPrevented || event.defaultPrevented) {
38
+ return;
39
+ }
40
+
41
+ // We don't use `event.currentTarget` here.
42
+ // This is to allow people to pass `onDragStart` to another element than the root.
43
+ if ((0, _internals.isTargetInDescendants)(event.target, rootRefObject.current)) {
44
+ return;
45
+ }
46
+
47
+ // Comment to show the children in the drag preview
48
+ // TODO: Improve the customization of the drag preview
49
+ event.dataTransfer.effectAllowed = 'move';
50
+ event.dataTransfer.setDragImage(contentRefObject.current, 0, 0);
51
+ const {
52
+ types
53
+ } = event.dataTransfer;
54
+ if (isAndroid() && !types.includes('text/plain') && !types.includes('text/uri-list')) {
55
+ event.dataTransfer.setData('text/plain', 'android-fallback');
56
+ }
57
+
58
+ // iOS requires a media type to be defined
59
+ event.dataTransfer.setData('application/mui-x', '');
60
+ instance.startDraggingItem(itemId);
61
+ };
62
+ const handleRootDragOver = event => {
63
+ externalEventHandlers.onDragOver?.(event);
64
+ if (event.defaultMuiPrevented) {
65
+ return;
66
+ }
67
+ event.preventDefault();
68
+ };
69
+ const handleRootDragEnd = event => {
70
+ externalEventHandlers.onDragEnd?.(event);
71
+ if (event.defaultMuiPrevented) {
72
+ return;
73
+ }
74
+ instance.stopDraggingItem(itemId);
75
+ };
76
+ return {
77
+ draggable: true,
78
+ onDragStart: handleDragStart,
79
+ onDragOver: handleRootDragOver,
80
+ onDragEnd: handleRootDragEnd
81
+ };
82
+ },
83
+ content: ({
84
+ externalEventHandlers,
85
+ contentRefObject
86
+ }) => {
87
+ const currentDrag = itemsReordering.currentDrag;
88
+ if (!currentDrag || currentDrag.draggedItemId === itemId) {
89
+ return {};
90
+ }
91
+ const handleDragOver = event => {
92
+ externalEventHandlers.onDragOver?.(event);
93
+ if (event.defaultMuiPrevented || validActionsRef.current == null) {
94
+ return;
95
+ }
96
+ const rect = event.target.getBoundingClientRect();
97
+ const y = event.clientY - rect.top;
98
+ const x = event.clientX - rect.left;
99
+ instance.setDragTargetItem({
100
+ itemId,
101
+ validActions: validActionsRef.current,
102
+ targetHeight: rect.height,
103
+ cursorY: y,
104
+ cursorX: x,
105
+ contentElement: contentRefObject.current
106
+ });
107
+ };
108
+ const handleDragEnter = event => {
109
+ externalEventHandlers.onDragEnter?.(event);
110
+ if (event.defaultMuiPrevented) {
111
+ return;
112
+ }
113
+ validActionsRef.current = instance.getDroppingTargetValidActions(itemId);
114
+ };
115
+ return {
116
+ onDragEnter: handleDragEnter,
117
+ onDragOver: handleDragOver
118
+ };
119
+ },
120
+ dragAndDropOverlay: () => {
121
+ const currentDrag = itemsReordering.currentDrag;
122
+ if (!currentDrag || currentDrag.targetItemId !== itemId || currentDrag.action == null) {
123
+ return {};
124
+ }
125
+ const targetDepth = currentDrag.newPosition?.parentId == null ? 0 :
126
+ // The depth is always defined because drag&drop is only usable with Rich Tree View components.
127
+ instance.getItemMeta(currentDrag.newPosition.parentId).depth + 1;
128
+ return {
129
+ action: currentDrag.action,
130
+ style: {
131
+ '--TreeView-targetDepth': targetDepth
132
+ }
133
+ };
134
+ }
135
+ }
136
+ };
137
+ };
138
+ exports.useTreeViewItemsReorderingItemPlugin = useTreeViewItemsReorderingItemPlugin;
@@ -0,0 +1,203 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.useTreeViewItemsReordering = void 0;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var React = _interopRequireWildcard(require("react"));
10
+ var _internals = require("@mui/x-tree-view/internals");
11
+ var _useTreeViewItemsReordering = require("./useTreeViewItemsReordering.utils");
12
+ var _useTreeViewItemsReordering2 = require("./useTreeViewItemsReordering.itemPlugin");
13
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
14
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
15
+ const useTreeViewItemsReordering = ({
16
+ params,
17
+ instance,
18
+ state,
19
+ setState,
20
+ experimentalFeatures
21
+ }) => {
22
+ const isItemsReorderingEnabled = params.itemsReordering && !!experimentalFeatures?.itemsReordering;
23
+ if (process.env.NODE_ENV !== 'production') {
24
+ if (params.itemsReordering && (!experimentalFeatures?.indentationAtItemLevel || !experimentalFeatures?.itemsReordering)) {
25
+ (0, _internals.warnOnce)(['MUI X: The items reordering feature requires the `indentationAtItemLevel` and `itemsReordering` experimental features to be enabled.', 'You can do it by passing `experimentalFeatures={{ indentationAtItemLevel: true, itemsReordering: true }}` to the `RichTreeViewPro` component.', 'Check the documentation for more details: https://mui.com/x/react-tree-view/rich-tree-view/items/']);
26
+ }
27
+ }
28
+ const canItemBeDragged = React.useCallback(itemId => {
29
+ if (!isItemsReorderingEnabled) {
30
+ return false;
31
+ }
32
+ const isItemReorderable = params.isItemReorderable;
33
+ if (isItemReorderable) {
34
+ return isItemReorderable(itemId);
35
+ }
36
+ return true;
37
+ }, [isItemsReorderingEnabled, params.isItemReorderable]);
38
+ const getDroppingTargetValidActions = React.useCallback(itemId => {
39
+ if (!state.itemsReordering) {
40
+ throw new Error('There is no ongoing reordering.');
41
+ }
42
+ if (itemId === state.itemsReordering.draggedItemId) {
43
+ return {};
44
+ }
45
+ const canMoveItemToNewPosition = params.canMoveItemToNewPosition;
46
+ const targetItemMeta = instance.getItemMeta(itemId);
47
+ const targetItemIndex = instance.getItemIndex(targetItemMeta.id);
48
+ const draggedItemMeta = instance.getItemMeta(state.itemsReordering.draggedItemId);
49
+ const draggedItemIndex = instance.getItemIndex(draggedItemMeta.id);
50
+ const oldPosition = {
51
+ parentId: draggedItemMeta.parentId,
52
+ index: draggedItemIndex
53
+ };
54
+ const checkIfPositionIsValid = positionAfterAction => {
55
+ let isValid;
56
+ // If the new position is equal to the old one, we don't want to show any dropping UI.
57
+ if (positionAfterAction.parentId === oldPosition.parentId && positionAfterAction.index === oldPosition.index) {
58
+ isValid = false;
59
+ } else if (canMoveItemToNewPosition) {
60
+ isValid = canMoveItemToNewPosition({
61
+ itemId,
62
+ oldPosition,
63
+ newPosition: positionAfterAction
64
+ });
65
+ } else {
66
+ isValid = true;
67
+ }
68
+ return isValid;
69
+ };
70
+ const positionsAfterAction = {
71
+ 'make-child': {
72
+ parentId: targetItemMeta.id,
73
+ index: 0
74
+ },
75
+ 'reorder-above': {
76
+ parentId: targetItemMeta.parentId,
77
+ index: targetItemMeta.parentId === draggedItemMeta.parentId && targetItemIndex > draggedItemIndex ? targetItemIndex - 1 : targetItemIndex
78
+ },
79
+ 'reorder-below': targetItemMeta.expandable ? null : {
80
+ parentId: targetItemMeta.parentId,
81
+ index: targetItemMeta.parentId === draggedItemMeta.parentId && targetItemIndex > draggedItemIndex ? targetItemIndex : targetItemIndex + 1
82
+ },
83
+ 'move-to-parent': targetItemMeta.parentId == null ? null : {
84
+ parentId: targetItemMeta.parentId,
85
+ index: instance.getItemOrderedChildrenIds(targetItemMeta.parentId).length
86
+ }
87
+ };
88
+ const validActions = {};
89
+ Object.keys(positionsAfterAction).forEach(action => {
90
+ const positionAfterAction = positionsAfterAction[action];
91
+ if (positionAfterAction != null && checkIfPositionIsValid(positionAfterAction)) {
92
+ validActions[action] = positionAfterAction;
93
+ }
94
+ });
95
+ return validActions;
96
+ }, [instance, state.itemsReordering, params.canMoveItemToNewPosition]);
97
+ const startDraggingItem = React.useCallback(itemId => {
98
+ setState(prevState => (0, _extends2.default)({}, prevState, {
99
+ itemsReordering: {
100
+ targetItemId: itemId,
101
+ draggedItemId: itemId,
102
+ action: null,
103
+ newPosition: null
104
+ }
105
+ }));
106
+ }, [setState]);
107
+ const stopDraggingItem = React.useCallback(itemId => {
108
+ if (state.itemsReordering == null || state.itemsReordering.draggedItemId !== itemId) {
109
+ return;
110
+ }
111
+ if (state.itemsReordering.draggedItemId === state.itemsReordering.targetItemId || state.itemsReordering.action == null || state.itemsReordering.newPosition == null) {
112
+ setState(prevState => (0, _extends2.default)({}, prevState, {
113
+ itemsReordering: null
114
+ }));
115
+ return;
116
+ }
117
+ const draggedItemMeta = instance.getItemMeta(state.itemsReordering.draggedItemId);
118
+ const oldPosition = {
119
+ parentId: draggedItemMeta.parentId,
120
+ index: instance.getItemIndex(draggedItemMeta.id)
121
+ };
122
+ const newPosition = state.itemsReordering.newPosition;
123
+ setState(prevState => (0, _extends2.default)({}, prevState, {
124
+ itemsReordering: null,
125
+ items: (0, _useTreeViewItemsReordering.moveItemInTree)({
126
+ itemToMoveId: itemId,
127
+ newPosition,
128
+ oldPosition,
129
+ prevState: prevState.items
130
+ })
131
+ }));
132
+ const onItemPositionChange = params.onItemPositionChange;
133
+ onItemPositionChange?.({
134
+ itemId,
135
+ newPosition,
136
+ oldPosition
137
+ });
138
+ }, [setState, state.itemsReordering, instance, params.onItemPositionChange]);
139
+ const setDragTargetItem = React.useCallback(({
140
+ itemId,
141
+ validActions,
142
+ targetHeight,
143
+ cursorY,
144
+ cursorX,
145
+ contentElement
146
+ }) => {
147
+ setState(prevState => {
148
+ const prevSubState = prevState.itemsReordering;
149
+ if (prevSubState == null || (0, _useTreeViewItemsReordering.isAncestor)(instance, itemId, prevSubState.draggedItemId)) {
150
+ return prevState;
151
+ }
152
+ const action = (0, _useTreeViewItemsReordering.chooseActionToApply)({
153
+ itemChildrenIndentation: params.itemChildrenIndentation,
154
+ validActions,
155
+ targetHeight,
156
+ targetDepth: prevState.items.itemMetaMap[itemId].depth,
157
+ cursorY,
158
+ cursorX,
159
+ contentElement
160
+ });
161
+ const newPosition = action == null ? null : validActions[action];
162
+ if (prevSubState.targetItemId === itemId && prevSubState.action === action && prevSubState.newPosition?.parentId === newPosition?.parentId && prevSubState.newPosition?.index === newPosition?.index) {
163
+ return prevState;
164
+ }
165
+ return (0, _extends2.default)({}, prevState, {
166
+ itemsReordering: (0, _extends2.default)({}, prevSubState, {
167
+ targetItemId: itemId,
168
+ newPosition,
169
+ action
170
+ })
171
+ });
172
+ });
173
+ }, [instance, setState, params.itemChildrenIndentation]);
174
+ return {
175
+ instance: {
176
+ canItemBeDragged,
177
+ getDroppingTargetValidActions,
178
+ startDraggingItem,
179
+ stopDraggingItem,
180
+ setDragTargetItem
181
+ },
182
+ contextValue: {
183
+ itemsReordering: {
184
+ enabled: isItemsReorderingEnabled,
185
+ currentDrag: state.itemsReordering
186
+ }
187
+ }
188
+ };
189
+ };
190
+ exports.useTreeViewItemsReordering = useTreeViewItemsReordering;
191
+ useTreeViewItemsReordering.itemPlugin = _useTreeViewItemsReordering2.useTreeViewItemsReorderingItemPlugin;
192
+ useTreeViewItemsReordering.getDefaultizedParams = params => (0, _extends2.default)({}, params, {
193
+ itemsReordering: params.itemsReordering ?? false
194
+ });
195
+ useTreeViewItemsReordering.getInitialState = () => ({
196
+ itemsReordering: null
197
+ });
198
+ useTreeViewItemsReordering.params = {
199
+ itemsReordering: true,
200
+ isItemReorderable: true,
201
+ canMoveItemToNewPosition: true,
202
+ onItemPositionChange: true
203
+ };
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
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");
10
+ /**
11
+ * Checks if the item with the id itemIdB is an ancestor of the item with the id itemIdA.
12
+ */
13
+ const isAncestor = (instance, itemIdA, itemIdB) => {
14
+ const itemMetaA = instance.getItemMeta(itemIdA);
15
+ if (itemMetaA.parentId === itemIdB) {
16
+ return true;
17
+ }
18
+ if (itemMetaA.parentId == null) {
19
+ return false;
20
+ }
21
+ return isAncestor(instance, itemMetaA.parentId, itemIdB);
22
+ };
23
+
24
+ /**
25
+ * Transforms a CSS string `itemChildrenIndentation` into a number representing the indentation in number.
26
+ * @param {string | null} itemChildrenIndentation The indentation as passed to the `itemChildrenIndentation` prop.
27
+ * @param {HTMLElement} contentElement The DOM element to which the indentation will be applied.
28
+ */
29
+ exports.isAncestor = isAncestor;
30
+ const parseItemChildrenIndentation = (itemChildrenIndentation, contentElement) => {
31
+ if (typeof itemChildrenIndentation === 'number') {
32
+ return itemChildrenIndentation;
33
+ }
34
+ const pixelExec = /^(\d.+)(px)$/.exec(itemChildrenIndentation);
35
+ if (pixelExec) {
36
+ return parseFloat(pixelExec[1]);
37
+ }
38
+
39
+ // If the format is neither `px` nor a number, we need to measure the indentation using an actual DOM element.
40
+ const tempElement = document.createElement('div');
41
+ tempElement.style.width = itemChildrenIndentation;
42
+ tempElement.style.position = 'absolute';
43
+ contentElement.appendChild(tempElement);
44
+ const value = tempElement.offsetWidth;
45
+ contentElement.removeChild(tempElement);
46
+ return value;
47
+ };
48
+ const chooseActionToApply = ({
49
+ itemChildrenIndentation,
50
+ validActions,
51
+ targetHeight,
52
+ targetDepth,
53
+ cursorX,
54
+ cursorY,
55
+ contentElement
56
+ }) => {
57
+ let action;
58
+ const itemChildrenIndentationPx = parseItemChildrenIndentation(itemChildrenIndentation, contentElement);
59
+ // If we can move the item to the parent of the target, then we allocate the left offset to this action
60
+ // Support moving to other ancestors
61
+ if (validActions['move-to-parent'] && cursorX < itemChildrenIndentationPx * targetDepth) {
62
+ action = 'move-to-parent';
63
+ }
64
+
65
+ // If we can move the item inside the target, then we have the following split:
66
+ // - the upper quarter of the target moves it above
67
+ // - the lower quarter of the target moves it below
68
+ // - the inner half makes it a child
69
+ else if (validActions['make-child']) {
70
+ if (validActions['reorder-above'] && cursorY < 1 / 4 * targetHeight) {
71
+ action = 'reorder-above';
72
+ } else if (validActions['reorder-below'] && cursorY > 3 / 4 * targetHeight) {
73
+ action = 'reorder-below';
74
+ } else {
75
+ action = 'make-child';
76
+ }
77
+ }
78
+ // If we can't move the item inside the target, then we have the following split:
79
+ // - the upper half of the target moves it above
80
+ // - the lower half of the target moves it below
81
+ else {
82
+ // eslint-disable-next-line no-lonely-if
83
+ if (validActions['reorder-above'] && cursorY < 1 / 2 * targetHeight) {
84
+ action = 'reorder-above';
85
+ } else if (validActions['reorder-below'] && cursorY >= 1 / 2 * targetHeight) {
86
+ action = 'reorder-below';
87
+ } else {
88
+ action = null;
89
+ }
90
+ }
91
+ return action;
92
+ };
93
+ exports.chooseActionToApply = chooseActionToApply;
94
+ const moveItemInTree = ({
95
+ itemToMoveId,
96
+ oldPosition,
97
+ newPosition,
98
+ prevState
99
+ }) => {
100
+ const itemToMoveMeta = prevState.itemMetaMap[itemToMoveId];
101
+ const oldParentId = oldPosition.parentId ?? _internals.TREE_VIEW_ROOT_PARENT_ID;
102
+ const newParentId = newPosition.parentId ?? _internals.TREE_VIEW_ROOT_PARENT_ID;
103
+
104
+ // 1. Update the `itemOrderedChildrenIds`.
105
+ const itemOrderedChildrenIds = (0, _extends2.default)({}, prevState.itemOrderedChildrenIds);
106
+ if (oldParentId === newParentId) {
107
+ const updatedChildren = [...itemOrderedChildrenIds[oldParentId]];
108
+ updatedChildren.splice(oldPosition.index, 1);
109
+ updatedChildren.splice(newPosition.index, 0, itemToMoveId);
110
+ itemOrderedChildrenIds[itemToMoveMeta.parentId ?? _internals.TREE_VIEW_ROOT_PARENT_ID] = updatedChildren;
111
+ } else {
112
+ const updatedOldParentChildren = [...itemOrderedChildrenIds[oldParentId]];
113
+ updatedOldParentChildren.splice(oldPosition.index, 1);
114
+ itemOrderedChildrenIds[oldParentId] = updatedOldParentChildren;
115
+ const updatedNewParentChildren = [...(itemOrderedChildrenIds[newParentId] ?? [])];
116
+ updatedNewParentChildren.splice(newPosition.index, 0, itemToMoveId);
117
+ itemOrderedChildrenIds[newParentId] = updatedNewParentChildren;
118
+ }
119
+
120
+ // 2. Update the `itemChildrenIndexes`
121
+ const itemChildrenIndexes = (0, _extends2.default)({}, prevState.itemChildrenIndexes);
122
+ itemChildrenIndexes[oldParentId] = (0, _internals.buildSiblingIndexes)(itemOrderedChildrenIds[oldParentId]);
123
+ if (newParentId !== oldParentId) {
124
+ itemChildrenIndexes[newParentId] = (0, _internals.buildSiblingIndexes)(itemOrderedChildrenIds[newParentId]);
125
+ }
126
+
127
+ // 3. Update the `itemMetaMap`
128
+ const itemMetaMap = (0, _extends2.default)({}, prevState.itemMetaMap);
129
+
130
+ // 3.1 Update the `expandable` property of the old and the new parent
131
+ if (oldParentId !== _internals.TREE_VIEW_ROOT_PARENT_ID && oldParentId !== newParentId) {
132
+ itemMetaMap[oldParentId].expandable = itemOrderedChildrenIds[oldParentId].length > 0;
133
+ }
134
+ if (newParentId !== _internals.TREE_VIEW_ROOT_PARENT_ID && newParentId !== oldParentId) {
135
+ itemMetaMap[newParentId].expandable = itemOrderedChildrenIds[newParentId].length > 0;
136
+ }
137
+
138
+ // 3.2 Update the `parentId` and `depth` properties of the item to move
139
+ // The depth is always defined because drag&drop is only usable with Rich Tree View components.
140
+ const itemToMoveDepth = newPosition.parentId == null ? 0 : itemMetaMap[newParentId].depth + 1;
141
+ itemMetaMap[itemToMoveId] = (0, _extends2.default)({}, itemToMoveMeta, {
142
+ parentId: newPosition.parentId,
143
+ depth: itemToMoveDepth
144
+ });
145
+
146
+ // 3.3 Update the depth of all the children of the item to move
147
+ const updateItemDepth = (itemId, depth) => {
148
+ itemMetaMap[itemId] = (0, _extends2.default)({}, itemMetaMap[itemId], {
149
+ depth
150
+ });
151
+ itemOrderedChildrenIds[itemId]?.forEach(childId => updateItemDepth(childId, depth + 1));
152
+ };
153
+ itemOrderedChildrenIds[itemToMoveId]?.forEach(childId => updateItemDepth(childId, itemToMoveDepth + 1));
154
+ return (0, _extends2.default)({}, prevState, {
155
+ itemOrderedChildrenIds,
156
+ itemChildrenIndexes,
157
+ itemMetaMap
158
+ });
159
+ };
160
+ exports.moveItemInTree = moveItemInTree;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getReleaseInfo = void 0;
7
+ var _utils = require("@mui/utils");
8
+ const getReleaseInfo = () => {
9
+ const releaseInfo = "MTcyMjQ2MzIwMDAwMA==";
10
+ if (process.env.NODE_ENV !== 'production') {
11
+ // A simple hack to set the value in the test environment (has no build step).
12
+ // eslint-disable-next-line no-useless-concat
13
+ if (releaseInfo === '__RELEASE' + '_INFO__') {
14
+ // eslint-disable-next-line no-underscore-dangle
15
+ return _utils.ponyfillGlobal.__MUI_RELEASE_INFO__;
16
+ }
17
+ }
18
+ return releaseInfo;
19
+ };
20
+ exports.getReleaseInfo = getReleaseInfo;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createUseThemeProps = createUseThemeProps;
7
+ Object.defineProperty(exports, "styled", {
8
+ enumerable: true,
9
+ get: function () {
10
+ return _styles.styled;
11
+ }
12
+ });
13
+ var _styles = require("@mui/material/styles");
14
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
15
+ function createUseThemeProps(name) {
16
+ return _styles.useThemeProps;
17
+ }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _overrides = require("./overrides");
7
+ Object.keys(_overrides).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _overrides[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function () {
13
+ return _overrides[key];
14
+ }
15
+ });
16
+ });
17
+ var _props = require("./props");
18
+ Object.keys(_props).forEach(function (key) {
19
+ if (key === "default" || key === "__esModule") return;
20
+ if (key in exports && exports[key] === _props[key]) return;
21
+ Object.defineProperty(exports, key, {
22
+ enumerable: true,
23
+ get: function () {
24
+ return _props[key];
25
+ }
26
+ });
27
+ });
28
+ var _components = require("./components");
29
+ Object.keys(_components).forEach(function (key) {
30
+ if (key === "default" || key === "__esModule") return;
31
+ if (key in exports && exports[key] === _components[key]) return;
32
+ Object.defineProperty(exports, key, {
33
+ enumerable: true,
34
+ get: function () {
35
+ return _components[key];
36
+ }
37
+ });
38
+ });
@@ -0,0 +1,59 @@
1
+ {
2
+ "name": "@mui/x-tree-view-pro",
3
+ "version": "7.12.0",
4
+ "description": "The Pro plan edition of the Tree View components (MUI X).",
5
+ "author": "MUI Team",
6
+ "main": "./node/index.js",
7
+ "license": "SEE LICENSE IN LICENSE",
8
+ "bugs": {
9
+ "url": "https://github.com/mui/mui-x/issues"
10
+ },
11
+ "homepage": "https://mui.com/x/react-tree-view/",
12
+ "funding": {
13
+ "type": "opencollective",
14
+ "url": "https://opencollective.com/mui-org"
15
+ },
16
+ "sideEffects": false,
17
+ "publishConfig": {
18
+ "access": "public"
19
+ },
20
+ "keywords": [
21
+ "react",
22
+ "react-component",
23
+ "mui",
24
+ "mui-x",
25
+ "material-ui",
26
+ "material design",
27
+ "treeview"
28
+ ],
29
+ "repository": {
30
+ "type": "git",
31
+ "url": "https://github.com/mui/mui-x.git",
32
+ "directory": "packages/x-tree-view-pro"
33
+ },
34
+ "dependencies": {
35
+ "@babel/runtime": "^7.25.0",
36
+ "@mui/system": "^5.16.5",
37
+ "@mui/utils": "^5.16.5",
38
+ "@mui/x-internals": "workspace:*",
39
+ "@mui/x-license": "workspace:*",
40
+ "@mui/x-tree-view": "workspace:*",
41
+ "@types/react-transition-group": "^4.4.10",
42
+ "clsx": "^2.1.1",
43
+ "prop-types": "^15.8.1",
44
+ "react-transition-group": "^4.4.5"
45
+ },
46
+ "peerDependencies": {
47
+ "@emotion/react": "^11.9.0",
48
+ "@emotion/styled": "^11.8.1",
49
+ "@mui/material": "^5.15.14",
50
+ "react": "^17.0.0 || ^18.0.0",
51
+ "react-dom": "^17.0.0 || ^18.0.0"
52
+ },
53
+ "engines": {
54
+ "node": ">=14.0.0"
55
+ },
56
+ "private": false,
57
+ "module": "./index.js",
58
+ "types": "./index.d.ts"
59
+ }
@@ -0,0 +1,13 @@
1
+ import { ComponentsProps, ComponentsOverrides, ComponentsVariants } from '@mui/material/styles';
2
+
3
+ export interface TreeViewComponents<Theme = unknown> {
4
+ MuiRichTreeViewPro?: {
5
+ defaultProps?: ComponentsProps['MuiRichTreeViewPro'];
6
+ styleOverrides?: ComponentsOverrides<Theme>['MuiRichTreeViewPro'];
7
+ variants?: ComponentsVariants<Theme>['MuiRichTreeViewPro'];
8
+ };
9
+ }
10
+
11
+ declare module '@mui/material/styles' {
12
+ interface Components<Theme = unknown> extends TreeViewComponents<Theme> {}
13
+ }
@@ -0,0 +1,3 @@
1
+ export * from './overrides';
2
+ export * from './props';
3
+ export * from './components';
@@ -0,0 +1,3 @@
1
+ export * from './overrides';
2
+ export * from './props';
3
+ export * from './components';
@@ -0,0 +1,13 @@
1
+ import { RichTreeViewProClassKey } from '../RichTreeViewPro';
2
+
3
+ // prettier-ignore
4
+ export interface TreeViewComponentNameToClassKey {
5
+ MuiRichTreeViewPro: RichTreeViewProClassKey;
6
+ }
7
+
8
+ declare module '@mui/material/styles' {
9
+ interface ComponentNameToClassKey extends TreeViewComponentNameToClassKey {}
10
+ }
11
+
12
+ // disable automatic export
13
+ export {};