@mui/x-tree-view-pro 8.0.0-alpha.11 → 8.0.0-alpha.13
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.
- package/CHANGELOG.md +460 -1
- package/RichTreeViewPro/RichTreeViewPro.d.ts +4 -4
- package/RichTreeViewPro/RichTreeViewPro.js +81 -75
- package/RichTreeViewPro/RichTreeViewPro.plugins.d.ts +2 -3
- package/RichTreeViewPro/RichTreeViewPro.plugins.js +9 -3
- package/RichTreeViewPro/RichTreeViewPro.types.d.ts +38 -38
- package/RichTreeViewPro/RichTreeViewPro.types.js +5 -1
- package/RichTreeViewPro/index.d.ts +3 -3
- package/RichTreeViewPro/index.js +27 -3
- package/RichTreeViewPro/richTreeViewProClasses.d.ts +3 -3
- package/RichTreeViewPro/richTreeViewProClasses.js +13 -5
- package/esm/RichTreeViewPro/RichTreeViewPro.d.ts +20 -0
- package/{node → esm}/RichTreeViewPro/RichTreeViewPro.js +75 -81
- package/esm/RichTreeViewPro/RichTreeViewPro.plugins.d.ts +7 -0
- package/esm/RichTreeViewPro/RichTreeViewPro.plugins.js +5 -0
- package/esm/RichTreeViewPro/RichTreeViewPro.types.d.ts +51 -0
- package/esm/RichTreeViewPro/RichTreeViewPro.types.js +1 -0
- package/esm/RichTreeViewPro/index.d.ts +3 -0
- package/esm/RichTreeViewPro/index.js +3 -0
- package/esm/RichTreeViewPro/richTreeViewProClasses.d.ts +7 -0
- package/esm/RichTreeViewPro/richTreeViewProClasses.js +6 -0
- package/esm/index.d.ts +12 -0
- package/esm/index.js +22 -0
- package/esm/internals/index.d.ts +1 -0
- package/esm/internals/index.js +1 -0
- package/esm/internals/plugins/useTreeViewItemsReordering/index.d.ts +2 -0
- package/esm/internals/plugins/useTreeViewItemsReordering/index.js +1 -0
- package/esm/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.d.ts +3 -0
- package/esm/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.itemPlugin.d.ts +3 -0
- package/{node → esm}/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.itemPlugin.js +10 -19
- package/{node → esm}/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.js +26 -35
- package/esm/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.selectors.d.ts +179 -0
- package/{node → esm}/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.selectors.js +4 -11
- package/esm/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.types.d.ts +132 -0
- package/esm/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.types.js +1 -0
- package/esm/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.utils.d.ts +37 -0
- package/{node → esm}/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.utils.js +21 -31
- package/esm/internals/utils/releaseInfo.d.ts +1 -0
- package/esm/internals/utils/releaseInfo.js +13 -0
- package/esm/internals/zero-styled/index.d.ts +3 -0
- package/esm/internals/zero-styled/index.js +7 -0
- package/esm/package.json +1 -0
- package/esm/themeAugmentation/components.d.ts +11 -0
- package/esm/themeAugmentation/index.d.ts +3 -0
- package/esm/themeAugmentation/index.js +0 -0
- package/esm/themeAugmentation/overrides.d.ts +12 -0
- package/esm/themeAugmentation/props.d.ts +10 -0
- package/index.d.ts +2 -2
- package/index.js +147 -15
- package/internals/index.d.ts +1 -1
- package/internals/index.js +12 -1
- package/internals/plugins/useTreeViewItemsReordering/index.d.ts +2 -2
- package/internals/plugins/useTreeViewItemsReordering/index.js +12 -1
- package/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.d.ts +2 -2
- package/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.itemPlugin.d.ts +1 -1
- package/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.itemPlugin.js +19 -10
- package/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.js +35 -26
- package/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.selectors.d.ts +134 -134
- package/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.selectors.js +11 -4
- package/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.types.d.ts +108 -114
- package/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.types.js +5 -1
- package/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.utils.d.ts +28 -15
- package/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.utils.js +31 -21
- package/internals/utils/releaseInfo.d.ts +1 -1
- package/internals/utils/releaseInfo.js +13 -5
- package/internals/zero-styled/index.d.ts +1 -1
- package/internals/zero-styled/index.js +14 -4
- package/modern/RichTreeViewPro/RichTreeViewPro.d.ts +20 -0
- package/modern/RichTreeViewPro/RichTreeViewPro.plugins.d.ts +7 -0
- package/modern/RichTreeViewPro/RichTreeViewPro.types.d.ts +51 -0
- package/modern/RichTreeViewPro/index.d.ts +3 -0
- package/modern/RichTreeViewPro/richTreeViewProClasses.d.ts +7 -0
- package/modern/index.d.ts +12 -0
- package/modern/index.js +1 -1
- package/modern/internals/index.d.ts +1 -0
- package/modern/internals/plugins/useTreeViewItemsReordering/index.d.ts +2 -0
- package/modern/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.d.ts +3 -0
- package/modern/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.itemPlugin.d.ts +3 -0
- package/modern/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.selectors.d.ts +179 -0
- package/modern/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.types.d.ts +132 -0
- package/modern/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.utils.d.ts +37 -0
- package/modern/internals/utils/releaseInfo.d.ts +1 -0
- package/modern/internals/utils/releaseInfo.js +1 -1
- package/modern/internals/zero-styled/index.d.ts +3 -0
- package/modern/package.json +1 -0
- package/modern/themeAugmentation/components.d.ts +11 -0
- package/modern/themeAugmentation/index.d.ts +3 -0
- package/modern/themeAugmentation/overrides.d.ts +12 -0
- package/modern/themeAugmentation/props.d.ts +10 -0
- package/package.json +40 -10
- package/themeAugmentation/components.d.ts +1 -3
- package/themeAugmentation/index.d.ts +1 -1
- package/themeAugmentation/index.js +1 -0
- package/themeAugmentation/overrides.d.ts +2 -3
- package/themeAugmentation/props.d.ts +2 -4
- package/tsconfig.build.tsbuildinfo +1 -0
- package/RichTreeViewPro/package.json +0 -6
- package/internals/package.json +0 -6
- package/node/RichTreeViewPro/RichTreeViewPro.plugins.js +0 -11
- package/node/RichTreeViewPro/RichTreeViewPro.types.js +0 -5
- package/node/RichTreeViewPro/index.js +0 -27
- package/node/RichTreeViewPro/richTreeViewProClasses.js +0 -14
- package/node/index.js +0 -154
- package/node/internals/index.js +0 -12
- package/node/internals/plugins/useTreeViewItemsReordering/index.js +0 -12
- package/node/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.types.js +0 -5
- package/node/internals/utils/releaseInfo.js +0 -21
- package/node/internals/zero-styled/index.js +0 -17
- package/node/themeAugmentation/index.js +0 -1
- package/themeAugmentation/package.json +0 -6
package/{node → esm}/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.js
RENAMED
|
@@ -1,18 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
exports.useTreeViewItemsReordering = void 0;
|
|
9
|
-
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
|
-
var React = _interopRequireWildcard(require("react"));
|
|
11
|
-
var _internals = require("@mui/x-tree-view/internals");
|
|
12
|
-
var _useTreeViewItemsReordering = require("./useTreeViewItemsReordering.utils");
|
|
13
|
-
var _useTreeViewItemsReordering2 = require("./useTreeViewItemsReordering.itemPlugin");
|
|
14
|
-
var _useTreeViewItemsReordering3 = require("./useTreeViewItemsReordering.selectors");
|
|
15
|
-
const useTreeViewItemsReordering = ({
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { selectorItemIndex, selectorItemMeta, selectorItemOrderedChildrenIds } from '@mui/x-tree-view/internals';
|
|
4
|
+
import { chooseActionToApply, isAncestor, moveItemInTree } from "./useTreeViewItemsReordering.utils.js";
|
|
5
|
+
import { useTreeViewItemsReorderingItemPlugin } from "./useTreeViewItemsReordering.itemPlugin.js";
|
|
6
|
+
import { selectorItemsReordering } from "./useTreeViewItemsReordering.selectors.js";
|
|
7
|
+
export const useTreeViewItemsReordering = ({
|
|
16
8
|
params,
|
|
17
9
|
store
|
|
18
10
|
}) => {
|
|
@@ -27,7 +19,7 @@ const useTreeViewItemsReordering = ({
|
|
|
27
19
|
return true;
|
|
28
20
|
}, [params.itemsReordering, params.isItemReorderable]);
|
|
29
21
|
const getDroppingTargetValidActions = React.useCallback(itemId => {
|
|
30
|
-
const itemsReordering =
|
|
22
|
+
const itemsReordering = selectorItemsReordering(store.value);
|
|
31
23
|
if (!itemsReordering) {
|
|
32
24
|
throw new Error('There is no ongoing reordering.');
|
|
33
25
|
}
|
|
@@ -35,10 +27,10 @@ const useTreeViewItemsReordering = ({
|
|
|
35
27
|
return {};
|
|
36
28
|
}
|
|
37
29
|
const canMoveItemToNewPosition = params.canMoveItemToNewPosition;
|
|
38
|
-
const targetItemMeta =
|
|
39
|
-
const targetItemIndex =
|
|
40
|
-
const draggedItemMeta =
|
|
41
|
-
const draggedItemIndex =
|
|
30
|
+
const targetItemMeta = selectorItemMeta(store.value, itemId);
|
|
31
|
+
const targetItemIndex = selectorItemIndex(store.value, targetItemMeta.id);
|
|
32
|
+
const draggedItemMeta = selectorItemMeta(store.value, itemsReordering.draggedItemId);
|
|
33
|
+
const draggedItemIndex = selectorItemIndex(store.value, draggedItemMeta.id);
|
|
42
34
|
const oldPosition = {
|
|
43
35
|
parentId: draggedItemMeta.parentId,
|
|
44
36
|
index: draggedItemIndex
|
|
@@ -74,7 +66,7 @@ const useTreeViewItemsReordering = ({
|
|
|
74
66
|
},
|
|
75
67
|
'move-to-parent': targetItemMeta.parentId == null ? null : {
|
|
76
68
|
parentId: targetItemMeta.parentId,
|
|
77
|
-
index:
|
|
69
|
+
index: selectorItemOrderedChildrenIds(store.value, targetItemMeta.parentId).length
|
|
78
70
|
}
|
|
79
71
|
};
|
|
80
72
|
const validActions = {};
|
|
@@ -87,7 +79,7 @@ const useTreeViewItemsReordering = ({
|
|
|
87
79
|
return validActions;
|
|
88
80
|
}, [store, params.canMoveItemToNewPosition]);
|
|
89
81
|
const startDraggingItem = React.useCallback(itemId => {
|
|
90
|
-
store.update(prevState => (
|
|
82
|
+
store.update(prevState => _extends({}, prevState, {
|
|
91
83
|
itemsReordering: {
|
|
92
84
|
targetItemId: itemId,
|
|
93
85
|
draggedItemId: itemId,
|
|
@@ -97,25 +89,25 @@ const useTreeViewItemsReordering = ({
|
|
|
97
89
|
}));
|
|
98
90
|
}, [store]);
|
|
99
91
|
const stopDraggingItem = React.useCallback(itemId => {
|
|
100
|
-
const itemsReordering =
|
|
92
|
+
const itemsReordering = selectorItemsReordering(store.value);
|
|
101
93
|
if (itemsReordering == null || itemsReordering.draggedItemId !== itemId) {
|
|
102
94
|
return;
|
|
103
95
|
}
|
|
104
96
|
if (itemsReordering.draggedItemId === itemsReordering.targetItemId || itemsReordering.action == null || itemsReordering.newPosition == null) {
|
|
105
|
-
store.update(prevState => (
|
|
97
|
+
store.update(prevState => _extends({}, prevState, {
|
|
106
98
|
itemsReordering: null
|
|
107
99
|
}));
|
|
108
100
|
return;
|
|
109
101
|
}
|
|
110
|
-
const draggedItemMeta =
|
|
102
|
+
const draggedItemMeta = selectorItemMeta(store.value, itemsReordering.draggedItemId);
|
|
111
103
|
const oldPosition = {
|
|
112
104
|
parentId: draggedItemMeta.parentId,
|
|
113
|
-
index:
|
|
105
|
+
index: selectorItemIndex(store.value, draggedItemMeta.id)
|
|
114
106
|
};
|
|
115
107
|
const newPosition = itemsReordering.newPosition;
|
|
116
|
-
store.update(prevState => (
|
|
108
|
+
store.update(prevState => _extends({}, prevState, {
|
|
117
109
|
itemsReordering: null,
|
|
118
|
-
items:
|
|
110
|
+
items: moveItemInTree({
|
|
119
111
|
itemToMoveId: itemId,
|
|
120
112
|
newPosition,
|
|
121
113
|
oldPosition,
|
|
@@ -139,10 +131,10 @@ const useTreeViewItemsReordering = ({
|
|
|
139
131
|
}) => {
|
|
140
132
|
store.update(prevState => {
|
|
141
133
|
const prevSubState = prevState.itemsReordering;
|
|
142
|
-
if (prevSubState == null ||
|
|
134
|
+
if (prevSubState == null || isAncestor(store, itemId, prevSubState.draggedItemId)) {
|
|
143
135
|
return prevState;
|
|
144
136
|
}
|
|
145
|
-
const action =
|
|
137
|
+
const action = chooseActionToApply({
|
|
146
138
|
itemChildrenIndentation: params.itemChildrenIndentation,
|
|
147
139
|
validActions,
|
|
148
140
|
targetHeight,
|
|
@@ -155,8 +147,8 @@ const useTreeViewItemsReordering = ({
|
|
|
155
147
|
if (prevSubState.targetItemId === itemId && prevSubState.action === action && prevSubState.newPosition?.parentId === newPosition?.parentId && prevSubState.newPosition?.index === newPosition?.index) {
|
|
156
148
|
return prevState;
|
|
157
149
|
}
|
|
158
|
-
return (
|
|
159
|
-
itemsReordering: (
|
|
150
|
+
return _extends({}, prevState, {
|
|
151
|
+
itemsReordering: _extends({}, prevSubState, {
|
|
160
152
|
targetItemId: itemId,
|
|
161
153
|
newPosition,
|
|
162
154
|
action
|
|
@@ -181,11 +173,10 @@ const useTreeViewItemsReordering = ({
|
|
|
181
173
|
contextValue: pluginContextValue
|
|
182
174
|
};
|
|
183
175
|
};
|
|
184
|
-
|
|
185
|
-
useTreeViewItemsReordering.itemPlugin = _useTreeViewItemsReordering2.useTreeViewItemsReorderingItemPlugin;
|
|
176
|
+
useTreeViewItemsReordering.itemPlugin = useTreeViewItemsReorderingItemPlugin;
|
|
186
177
|
useTreeViewItemsReordering.getDefaultizedParams = ({
|
|
187
178
|
params
|
|
188
|
-
}) => (
|
|
179
|
+
}) => _extends({}, params, {
|
|
189
180
|
itemsReordering: params.itemsReordering ?? false
|
|
190
181
|
});
|
|
191
182
|
useTreeViewItemsReordering.getInitialState = () => ({
|
package/esm/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.selectors.d.ts
ADDED
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import { TreeViewState } from '@mui/x-tree-view/internals';
|
|
2
|
+
import { UseTreeViewItemsReorderingSignature } from "./useTreeViewItemsReordering.types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Get the items reordering state.
|
|
5
|
+
* @param {TreeViewState<[UseTreeViewItemsReorderingSignature]>} state The state of the tree view.
|
|
6
|
+
* @returns {TreeViewItemsReorderingState | null} The items reordering state.
|
|
7
|
+
*/
|
|
8
|
+
export declare const selectorItemsReordering: (state: TreeViewState<[UseTreeViewItemsReorderingSignature]>) => {
|
|
9
|
+
draggedItemId: string;
|
|
10
|
+
targetItemId: string;
|
|
11
|
+
newPosition: import("./useTreeViewItemsReordering.types").TreeViewItemReorderPosition | null;
|
|
12
|
+
action: import("@mui/x-tree-view").TreeViewItemsReorderingAction | null;
|
|
13
|
+
} | null;
|
|
14
|
+
/**
|
|
15
|
+
* Get the properties of the dragged item.
|
|
16
|
+
* @param {TreeViewState<[UseTreeViewItemsSignature, UseTreeViewItemsReorderingSignature]>} state The state of the tree view.
|
|
17
|
+
* @param {string} itemId The id of the item.
|
|
18
|
+
* @returns {TreeViewItemDraggedItemProperties | null} The properties of the dragged item if the current item is being dragged, `null` otherwise.
|
|
19
|
+
*/
|
|
20
|
+
export declare const selectorItemsReorderingDraggedItemProperties: ((state: any, itemId: string) => {
|
|
21
|
+
newPosition: import("./useTreeViewItemsReordering.types").TreeViewItemReorderPosition | null;
|
|
22
|
+
action: import("@mui/x-tree-view").TreeViewItemsReorderingAction;
|
|
23
|
+
targetDepth: number;
|
|
24
|
+
} | null) & {
|
|
25
|
+
clearCache: () => void;
|
|
26
|
+
resultsCount: () => number;
|
|
27
|
+
resetResultsCount: () => void;
|
|
28
|
+
} & {
|
|
29
|
+
resultFunc: (resultFuncArgs_0: {
|
|
30
|
+
draggedItemId: string;
|
|
31
|
+
targetItemId: string;
|
|
32
|
+
newPosition: import("./useTreeViewItemsReordering.types").TreeViewItemReorderPosition | null;
|
|
33
|
+
action: import("@mui/x-tree-view").TreeViewItemsReorderingAction | null;
|
|
34
|
+
} | null, resultFuncArgs_1: {
|
|
35
|
+
[itemId: string]: import("@mui/x-tree-view/internals").TreeViewItemMeta;
|
|
36
|
+
}, resultFuncArgs_2: string) => {
|
|
37
|
+
newPosition: import("./useTreeViewItemsReordering.types").TreeViewItemReorderPosition | null;
|
|
38
|
+
action: import("@mui/x-tree-view").TreeViewItemsReorderingAction;
|
|
39
|
+
targetDepth: number;
|
|
40
|
+
} | null;
|
|
41
|
+
memoizedResultFunc: ((resultFuncArgs_0: {
|
|
42
|
+
draggedItemId: string;
|
|
43
|
+
targetItemId: string;
|
|
44
|
+
newPosition: import("./useTreeViewItemsReordering.types").TreeViewItemReorderPosition | null;
|
|
45
|
+
action: import("@mui/x-tree-view").TreeViewItemsReorderingAction | null;
|
|
46
|
+
} | null, resultFuncArgs_1: {
|
|
47
|
+
[itemId: string]: import("@mui/x-tree-view/internals").TreeViewItemMeta;
|
|
48
|
+
}, resultFuncArgs_2: string) => {
|
|
49
|
+
newPosition: import("./useTreeViewItemsReordering.types").TreeViewItemReorderPosition | null;
|
|
50
|
+
action: import("@mui/x-tree-view").TreeViewItemsReorderingAction;
|
|
51
|
+
targetDepth: number;
|
|
52
|
+
} | null) & {
|
|
53
|
+
clearCache: () => void;
|
|
54
|
+
resultsCount: () => number;
|
|
55
|
+
resetResultsCount: () => void;
|
|
56
|
+
};
|
|
57
|
+
lastResult: () => {
|
|
58
|
+
newPosition: import("./useTreeViewItemsReordering.types").TreeViewItemReorderPosition | null;
|
|
59
|
+
action: import("@mui/x-tree-view").TreeViewItemsReorderingAction;
|
|
60
|
+
targetDepth: number;
|
|
61
|
+
} | null;
|
|
62
|
+
dependencies: [(state: TreeViewState<[UseTreeViewItemsReorderingSignature]>) => {
|
|
63
|
+
draggedItemId: string;
|
|
64
|
+
targetItemId: string;
|
|
65
|
+
newPosition: import("./useTreeViewItemsReordering.types").TreeViewItemReorderPosition | null;
|
|
66
|
+
action: import("@mui/x-tree-view").TreeViewItemsReorderingAction | null;
|
|
67
|
+
} | null, ((state: import("@mui/x-tree-view/internals/corePlugins/useTreeViewId/useTreeViewId.types").UseTreeViewIdState & import("@mui/x-tree-view/internals").UseTreeViewItemsState<import("@mui/x-tree-view").TreeViewDefaultItemModelProperties> & Partial<{}> & {
|
|
68
|
+
cacheKey: import("@mui/x-tree-view/internals/models").TreeViewStateCacheKey;
|
|
69
|
+
}) => {
|
|
70
|
+
[itemId: string]: import("@mui/x-tree-view/internals").TreeViewItemMeta;
|
|
71
|
+
}) & {
|
|
72
|
+
clearCache: () => void;
|
|
73
|
+
resultsCount: () => number;
|
|
74
|
+
resetResultsCount: () => void;
|
|
75
|
+
} & {
|
|
76
|
+
resultFunc: (resultFuncArgs_0: {
|
|
77
|
+
disabledItemsFocusable: boolean;
|
|
78
|
+
itemModelLookup: {
|
|
79
|
+
[itemId: string]: import("@mui/x-tree-view").TreeViewBaseItem<import("@mui/x-tree-view").TreeViewDefaultItemModelProperties>;
|
|
80
|
+
};
|
|
81
|
+
itemMetaLookup: {
|
|
82
|
+
[itemId: string]: import("@mui/x-tree-view/internals").TreeViewItemMeta;
|
|
83
|
+
};
|
|
84
|
+
itemOrderedChildrenIdsLookup: {
|
|
85
|
+
[parentItemId: string]: string[];
|
|
86
|
+
};
|
|
87
|
+
itemChildrenIndexesLookup: {
|
|
88
|
+
[parentItemId: string]: {
|
|
89
|
+
[itemId: string]: number;
|
|
90
|
+
};
|
|
91
|
+
};
|
|
92
|
+
}) => {
|
|
93
|
+
[itemId: string]: import("@mui/x-tree-view/internals").TreeViewItemMeta;
|
|
94
|
+
};
|
|
95
|
+
memoizedResultFunc: ((resultFuncArgs_0: {
|
|
96
|
+
disabledItemsFocusable: boolean;
|
|
97
|
+
itemModelLookup: {
|
|
98
|
+
[itemId: string]: import("@mui/x-tree-view").TreeViewBaseItem<import("@mui/x-tree-view").TreeViewDefaultItemModelProperties>;
|
|
99
|
+
};
|
|
100
|
+
itemMetaLookup: {
|
|
101
|
+
[itemId: string]: import("@mui/x-tree-view/internals").TreeViewItemMeta;
|
|
102
|
+
};
|
|
103
|
+
itemOrderedChildrenIdsLookup: {
|
|
104
|
+
[parentItemId: string]: string[];
|
|
105
|
+
};
|
|
106
|
+
itemChildrenIndexesLookup: {
|
|
107
|
+
[parentItemId: string]: {
|
|
108
|
+
[itemId: string]: number;
|
|
109
|
+
};
|
|
110
|
+
};
|
|
111
|
+
}) => {
|
|
112
|
+
[itemId: string]: import("@mui/x-tree-view/internals").TreeViewItemMeta;
|
|
113
|
+
}) & {
|
|
114
|
+
clearCache: () => void;
|
|
115
|
+
resultsCount: () => number;
|
|
116
|
+
resetResultsCount: () => void;
|
|
117
|
+
};
|
|
118
|
+
lastResult: () => {
|
|
119
|
+
[itemId: string]: import("@mui/x-tree-view/internals").TreeViewItemMeta;
|
|
120
|
+
};
|
|
121
|
+
dependencies: [import("@mui/x-tree-view/internals/utils/selectors").TreeViewRootSelector<import("@mui/x-tree-view/internals").UseTreeViewItemsSignature>];
|
|
122
|
+
recomputations: () => number;
|
|
123
|
+
resetRecomputations: () => void;
|
|
124
|
+
dependencyRecomputations: () => number;
|
|
125
|
+
resetDependencyRecomputations: () => void;
|
|
126
|
+
} & {
|
|
127
|
+
argsMemoize: typeof import("reselect").weakMapMemoize;
|
|
128
|
+
memoize: typeof import("reselect").weakMapMemoize;
|
|
129
|
+
}, (_: any, itemId: string) => string];
|
|
130
|
+
recomputations: () => number;
|
|
131
|
+
resetRecomputations: () => void;
|
|
132
|
+
dependencyRecomputations: () => number;
|
|
133
|
+
resetDependencyRecomputations: () => void;
|
|
134
|
+
} & {
|
|
135
|
+
argsMemoize: typeof import("reselect").weakMapMemoize;
|
|
136
|
+
memoize: typeof import("reselect").weakMapMemoize;
|
|
137
|
+
};
|
|
138
|
+
/**
|
|
139
|
+
* Check if the current item is a valid target for the dragged item.
|
|
140
|
+
* @param {TreeViewState<[UseTreeViewItemsReorderingSignature]>} state The state of the tree view.
|
|
141
|
+
* @param {string} itemId The id of the item.
|
|
142
|
+
* @returns {boolean} `true` if the current item is a valid target for the dragged item, `false` otherwise.
|
|
143
|
+
*/
|
|
144
|
+
export declare const selectorItemsReorderingIsValidTarget: ((state: any, itemId: string) => boolean | null) & {
|
|
145
|
+
clearCache: () => void;
|
|
146
|
+
resultsCount: () => number;
|
|
147
|
+
resetResultsCount: () => void;
|
|
148
|
+
} & {
|
|
149
|
+
resultFunc: (resultFuncArgs_0: {
|
|
150
|
+
draggedItemId: string;
|
|
151
|
+
targetItemId: string;
|
|
152
|
+
newPosition: import("./useTreeViewItemsReordering.types").TreeViewItemReorderPosition | null;
|
|
153
|
+
action: import("@mui/x-tree-view").TreeViewItemsReorderingAction | null;
|
|
154
|
+
} | null, resultFuncArgs_1: string) => boolean | null;
|
|
155
|
+
memoizedResultFunc: ((resultFuncArgs_0: {
|
|
156
|
+
draggedItemId: string;
|
|
157
|
+
targetItemId: string;
|
|
158
|
+
newPosition: import("./useTreeViewItemsReordering.types").TreeViewItemReorderPosition | null;
|
|
159
|
+
action: import("@mui/x-tree-view").TreeViewItemsReorderingAction | null;
|
|
160
|
+
} | null, resultFuncArgs_1: string) => boolean | null) & {
|
|
161
|
+
clearCache: () => void;
|
|
162
|
+
resultsCount: () => number;
|
|
163
|
+
resetResultsCount: () => void;
|
|
164
|
+
};
|
|
165
|
+
lastResult: () => boolean | null;
|
|
166
|
+
dependencies: [(state: TreeViewState<[UseTreeViewItemsReorderingSignature]>) => {
|
|
167
|
+
draggedItemId: string;
|
|
168
|
+
targetItemId: string;
|
|
169
|
+
newPosition: import("./useTreeViewItemsReordering.types").TreeViewItemReorderPosition | null;
|
|
170
|
+
action: import("@mui/x-tree-view").TreeViewItemsReorderingAction | null;
|
|
171
|
+
} | null, (_: any, itemId: string) => string];
|
|
172
|
+
recomputations: () => number;
|
|
173
|
+
resetRecomputations: () => void;
|
|
174
|
+
dependencyRecomputations: () => number;
|
|
175
|
+
resetDependencyRecomputations: () => void;
|
|
176
|
+
} & {
|
|
177
|
+
argsMemoize: typeof import("reselect").weakMapMemoize;
|
|
178
|
+
memoize: typeof import("reselect").weakMapMemoize;
|
|
179
|
+
};
|
|
@@ -1,16 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.selectorItemsReorderingIsValidTarget = exports.selectorItemsReorderingDraggedItemProperties = exports.selectorItemsReordering = void 0;
|
|
7
|
-
var _internals = require("@mui/x-tree-view/internals");
|
|
1
|
+
import { createSelector, selectorItemMetaLookup } from '@mui/x-tree-view/internals';
|
|
8
2
|
/**
|
|
9
3
|
* Get the items reordering state.
|
|
10
4
|
* @param {TreeViewState<[UseTreeViewItemsReorderingSignature]>} state The state of the tree view.
|
|
11
5
|
* @returns {TreeViewItemsReorderingState | null} The items reordering state.
|
|
12
6
|
*/
|
|
13
|
-
const selectorItemsReordering = state => state.itemsReordering;
|
|
7
|
+
export const selectorItemsReordering = state => state.itemsReordering;
|
|
14
8
|
|
|
15
9
|
/**
|
|
16
10
|
* Get the properties of the dragged item.
|
|
@@ -18,8 +12,7 @@ const selectorItemsReordering = state => state.itemsReordering;
|
|
|
18
12
|
* @param {string} itemId The id of the item.
|
|
19
13
|
* @returns {TreeViewItemDraggedItemProperties | null} The properties of the dragged item if the current item is being dragged, `null` otherwise.
|
|
20
14
|
*/
|
|
21
|
-
|
|
22
|
-
const selectorItemsReorderingDraggedItemProperties = exports.selectorItemsReorderingDraggedItemProperties = (0, _internals.createSelector)([selectorItemsReordering, _internals.selectorItemMetaLookup, (_, itemId) => itemId], (itemsReordering, itemMetaLookup, itemId) => {
|
|
15
|
+
export const selectorItemsReorderingDraggedItemProperties = createSelector([selectorItemsReordering, selectorItemMetaLookup, (_, itemId) => itemId], (itemsReordering, itemMetaLookup, itemId) => {
|
|
23
16
|
if (!itemsReordering || itemsReordering.targetItemId !== itemId || itemsReordering.action == null) {
|
|
24
17
|
return null;
|
|
25
18
|
}
|
|
@@ -39,4 +32,4 @@ const selectorItemsReorderingDraggedItemProperties = exports.selectorItemsReorde
|
|
|
39
32
|
* @param {string} itemId The id of the item.
|
|
40
33
|
* @returns {boolean} `true` if the current item is a valid target for the dragged item, `false` otherwise.
|
|
41
34
|
*/
|
|
42
|
-
const selectorItemsReorderingIsValidTarget =
|
|
35
|
+
export const selectorItemsReorderingIsValidTarget = createSelector([selectorItemsReordering, (_, itemId) => itemId], (itemsReordering, itemId) => itemsReordering && itemsReordering.draggedItemId !== itemId);
|
package/esm/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.types.d.ts
ADDED
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { DefaultizedProps } from '@mui/x-internals/types';
|
|
3
|
+
import { TreeViewPluginSignature, UseTreeViewItemsSignature } from '@mui/x-tree-view/internals';
|
|
4
|
+
import { TreeViewItemId, TreeViewItemsReorderingAction, TreeViewCancellableEventHandler } from '@mui/x-tree-view/models';
|
|
5
|
+
import { TreeItemDragAndDropOverlayProps } from '@mui/x-tree-view/TreeItemDragAndDropOverlay';
|
|
6
|
+
export interface UseTreeViewItemsReorderingInstance {
|
|
7
|
+
/**
|
|
8
|
+
* Check if a given item can be dragged.
|
|
9
|
+
* @param {TreeViewItemId} itemId The id of the item to check.
|
|
10
|
+
* @returns {boolean} `true` if the item can be dragged, `false` otherwise.
|
|
11
|
+
*/
|
|
12
|
+
canItemBeDragged: (itemId: TreeViewItemId) => boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Get the valid reordering action if a given item is the target of the ongoing reordering.
|
|
15
|
+
* @param {TreeViewItemId} itemId The id of the item to get the action of.
|
|
16
|
+
* @returns {TreeViewItemItemReorderingValidActions} The valid actions for the item.
|
|
17
|
+
*/
|
|
18
|
+
getDroppingTargetValidActions: (itemId: TreeViewItemId) => TreeViewItemItemReorderingValidActions;
|
|
19
|
+
/**
|
|
20
|
+
* Start a reordering for the given item.
|
|
21
|
+
* @param {TreeViewItemId} itemId The id of the item to start the reordering for.
|
|
22
|
+
*/
|
|
23
|
+
startDraggingItem: (itemId: TreeViewItemId) => void;
|
|
24
|
+
/**
|
|
25
|
+
* Stop the reordering of a given item.
|
|
26
|
+
* @param {TreeViewItemId} itemId The id of the item to stop the reordering for.
|
|
27
|
+
*/
|
|
28
|
+
stopDraggingItem: (itemId: TreeViewItemId) => void;
|
|
29
|
+
/**
|
|
30
|
+
* Set the new target item for the ongoing reordering.
|
|
31
|
+
* The action will be determined based on the position of the cursor inside the target and the valid actions for this target.
|
|
32
|
+
* @param {object} params The params describing the new target item.
|
|
33
|
+
* @param {TreeViewItemId} params.itemId The id of the new target item.
|
|
34
|
+
* @param {TreeViewItemItemReorderingValidActions} params.validActions The valid actions for the new target item.
|
|
35
|
+
* @param {number} params.targetHeight The height of the target item.
|
|
36
|
+
* @param {number} params.cursorY The Y coordinate of the mouse cursor.
|
|
37
|
+
* @param {number} params.cursorX The X coordinate of the mouse cursor.
|
|
38
|
+
* @param {HTMLDivElement} params.contentElement The DOM element rendered for the content slot.
|
|
39
|
+
*/
|
|
40
|
+
setDragTargetItem: (params: {
|
|
41
|
+
itemId: TreeViewItemId;
|
|
42
|
+
validActions: TreeViewItemItemReorderingValidActions;
|
|
43
|
+
targetHeight: number;
|
|
44
|
+
cursorY: number;
|
|
45
|
+
cursorX: number;
|
|
46
|
+
contentElement: HTMLDivElement;
|
|
47
|
+
}) => void;
|
|
48
|
+
}
|
|
49
|
+
export interface TreeViewItemReorderPosition {
|
|
50
|
+
parentId: string | null;
|
|
51
|
+
index: number;
|
|
52
|
+
}
|
|
53
|
+
export type TreeViewItemItemReorderingValidActions = { [key in TreeViewItemsReorderingAction]?: TreeViewItemReorderPosition };
|
|
54
|
+
export interface UseTreeViewItemsReorderingParameters {
|
|
55
|
+
/**
|
|
56
|
+
* If `true`, the reordering of items is enabled.
|
|
57
|
+
* @default false
|
|
58
|
+
*/
|
|
59
|
+
itemsReordering?: boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Determine if a given item can be reordered.
|
|
62
|
+
* @param {string} itemId The id of the item to check.
|
|
63
|
+
* @returns {boolean} `true` if the item can be reordered.
|
|
64
|
+
* @default () => true
|
|
65
|
+
*/
|
|
66
|
+
isItemReorderable?: (itemId: string) => boolean;
|
|
67
|
+
/**
|
|
68
|
+
* Used to determine if a given item can move to some new position.
|
|
69
|
+
* @param {object} params The params describing the item re-ordering.
|
|
70
|
+
* @param {string} params.itemId The id of the item that is being moved to a new position.
|
|
71
|
+
* @param {TreeViewItemReorderPosition} params.oldPosition The old position of the item.
|
|
72
|
+
* @param {TreeViewItemReorderPosition} params.newPosition The new position of the item.
|
|
73
|
+
* @returns {boolean} `true` if the item can move to the new position.
|
|
74
|
+
*/
|
|
75
|
+
canMoveItemToNewPosition?: (params: {
|
|
76
|
+
itemId: string;
|
|
77
|
+
oldPosition: TreeViewItemReorderPosition;
|
|
78
|
+
newPosition: TreeViewItemReorderPosition;
|
|
79
|
+
}) => boolean;
|
|
80
|
+
/**
|
|
81
|
+
* Callback fired when a Tree Item is moved in the tree.
|
|
82
|
+
* @param {object} params The params describing the item re-ordering.
|
|
83
|
+
* @param {string} params.itemId The id of the item moved.
|
|
84
|
+
* @param {TreeViewItemReorderPosition} params.oldPosition The old position of the item.
|
|
85
|
+
* @param {TreeViewItemReorderPosition} params.newPosition The new position of the item.
|
|
86
|
+
*/
|
|
87
|
+
onItemPositionChange?: (params: {
|
|
88
|
+
itemId: string;
|
|
89
|
+
oldPosition: TreeViewItemReorderPosition;
|
|
90
|
+
newPosition: TreeViewItemReorderPosition;
|
|
91
|
+
}) => void;
|
|
92
|
+
}
|
|
93
|
+
export type UseTreeViewItemsReorderingDefaultizedParameters = DefaultizedProps<UseTreeViewItemsReorderingParameters, 'itemsReordering'>;
|
|
94
|
+
export interface UseTreeViewItemsReorderingState {
|
|
95
|
+
itemsReordering: {
|
|
96
|
+
draggedItemId: string;
|
|
97
|
+
targetItemId: string;
|
|
98
|
+
newPosition: TreeViewItemReorderPosition | null;
|
|
99
|
+
action: TreeViewItemsReorderingAction | null;
|
|
100
|
+
} | null;
|
|
101
|
+
}
|
|
102
|
+
interface UseTreeViewItemsReorderingContextValue {
|
|
103
|
+
itemsReordering: {
|
|
104
|
+
enabled: boolean;
|
|
105
|
+
isItemReorderable: ((itemId: string) => boolean) | undefined;
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
export type UseTreeViewItemsReorderingSignature = TreeViewPluginSignature<{
|
|
109
|
+
params: UseTreeViewItemsReorderingParameters;
|
|
110
|
+
defaultizedParams: UseTreeViewItemsReorderingDefaultizedParameters;
|
|
111
|
+
instance: UseTreeViewItemsReorderingInstance;
|
|
112
|
+
state: UseTreeViewItemsReorderingState;
|
|
113
|
+
contextValue: UseTreeViewItemsReorderingContextValue;
|
|
114
|
+
dependencies: [UseTreeViewItemsSignature];
|
|
115
|
+
}>;
|
|
116
|
+
export interface UseTreeItemRootSlotPropsFromItemsReordering {
|
|
117
|
+
draggable?: true;
|
|
118
|
+
onDragStart?: TreeViewCancellableEventHandler<React.DragEvent>;
|
|
119
|
+
onDragOver?: TreeViewCancellableEventHandler<React.DragEvent>;
|
|
120
|
+
onDragEnd?: TreeViewCancellableEventHandler<React.DragEvent>;
|
|
121
|
+
}
|
|
122
|
+
export interface UseTreeItemContentSlotPropsFromItemsReordering {
|
|
123
|
+
onDragEnter?: TreeViewCancellableEventHandler<React.DragEvent>;
|
|
124
|
+
onDragOver?: TreeViewCancellableEventHandler<React.DragEvent>;
|
|
125
|
+
}
|
|
126
|
+
export interface UseTreeItemDragAndDropOverlaySlotPropsFromItemsReordering extends TreeItemDragAndDropOverlayProps {}
|
|
127
|
+
declare module '@mui/x-tree-view/useTreeItem' {
|
|
128
|
+
interface UseTreeItemRootSlotOwnProps extends UseTreeItemRootSlotPropsFromItemsReordering {}
|
|
129
|
+
interface UseTreeItemContentSlotOwnProps extends UseTreeItemContentSlotPropsFromItemsReordering {}
|
|
130
|
+
interface UseTreeItemDragAndDropOverlaySlotOwnProps extends UseTreeItemDragAndDropOverlaySlotPropsFromItemsReordering {}
|
|
131
|
+
}
|
|
132
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/esm/internals/plugins/useTreeViewItemsReordering/useTreeViewItemsReordering.utils.d.ts
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { TreeViewUsedStore, UseTreeViewItemsState } from '@mui/x-tree-view/internals';
|
|
2
|
+
import { TreeViewItemId, TreeViewItemsReorderingAction } from '@mui/x-tree-view/models';
|
|
3
|
+
import { TreeViewItemItemReorderingValidActions, TreeViewItemReorderPosition, UseTreeViewItemsReorderingSignature } from "./useTreeViewItemsReordering.types.js";
|
|
4
|
+
/**
|
|
5
|
+
* Checks if the item with the id itemIdB is an ancestor of the item with the id itemIdA.
|
|
6
|
+
*/
|
|
7
|
+
export declare const isAncestor: (store: TreeViewUsedStore<UseTreeViewItemsReorderingSignature>, itemIdA: string, itemIdB: string) => boolean;
|
|
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;
|
|
16
|
+
}
|
|
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"];
|
|
36
|
+
}) => UseTreeViewItemsState<R>["items"];
|
|
37
|
+
export {};
|
|
@@ -1,17 +1,10 @@
|
|
|
1
|
-
|
|
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");
|
|
1
|
+
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
2
|
+
import { buildSiblingIndexes, TREE_VIEW_ROOT_PARENT_ID, selectorItemMeta } from '@mui/x-tree-view/internals';
|
|
10
3
|
/**
|
|
11
4
|
* Checks if the item with the id itemIdB is an ancestor of the item with the id itemIdA.
|
|
12
5
|
*/
|
|
13
|
-
const isAncestor = (store, itemIdA, itemIdB) => {
|
|
14
|
-
const itemMetaA =
|
|
6
|
+
export const isAncestor = (store, itemIdA, itemIdB) => {
|
|
7
|
+
const itemMetaA = selectorItemMeta(store.value, itemIdA);
|
|
15
8
|
if (itemMetaA.parentId === itemIdB) {
|
|
16
9
|
return true;
|
|
17
10
|
}
|
|
@@ -26,7 +19,6 @@ const isAncestor = (store, itemIdA, itemIdB) => {
|
|
|
26
19
|
* @param {string | null} itemChildrenIndentation The indentation as passed to the `itemChildrenIndentation` prop.
|
|
27
20
|
* @param {HTMLElement} contentElement The DOM element to which the indentation will be applied.
|
|
28
21
|
*/
|
|
29
|
-
exports.isAncestor = isAncestor;
|
|
30
22
|
const parseItemChildrenIndentation = (itemChildrenIndentation, contentElement) => {
|
|
31
23
|
if (typeof itemChildrenIndentation === 'number') {
|
|
32
24
|
return itemChildrenIndentation;
|
|
@@ -45,7 +37,7 @@ const parseItemChildrenIndentation = (itemChildrenIndentation, contentElement) =
|
|
|
45
37
|
contentElement.removeChild(tempElement);
|
|
46
38
|
return value;
|
|
47
39
|
};
|
|
48
|
-
const chooseActionToApply = ({
|
|
40
|
+
export const chooseActionToApply = ({
|
|
49
41
|
itemChildrenIndentation,
|
|
50
42
|
validActions,
|
|
51
43
|
targetHeight,
|
|
@@ -90,24 +82,23 @@ const chooseActionToApply = ({
|
|
|
90
82
|
}
|
|
91
83
|
return action;
|
|
92
84
|
};
|
|
93
|
-
|
|
94
|
-
const moveItemInTree = ({
|
|
85
|
+
export const moveItemInTree = ({
|
|
95
86
|
itemToMoveId,
|
|
96
87
|
oldPosition,
|
|
97
88
|
newPosition,
|
|
98
89
|
prevState
|
|
99
90
|
}) => {
|
|
100
91
|
const itemToMoveMeta = prevState.itemMetaLookup[itemToMoveId];
|
|
101
|
-
const oldParentId = oldPosition.parentId ??
|
|
102
|
-
const newParentId = newPosition.parentId ??
|
|
92
|
+
const oldParentId = oldPosition.parentId ?? TREE_VIEW_ROOT_PARENT_ID;
|
|
93
|
+
const newParentId = newPosition.parentId ?? TREE_VIEW_ROOT_PARENT_ID;
|
|
103
94
|
|
|
104
95
|
// 1. Update the `itemOrderedChildrenIds`.
|
|
105
|
-
const itemOrderedChildrenIds = (
|
|
96
|
+
const itemOrderedChildrenIds = _extends({}, prevState.itemOrderedChildrenIdsLookup);
|
|
106
97
|
if (oldParentId === newParentId) {
|
|
107
98
|
const updatedChildren = [...itemOrderedChildrenIds[oldParentId]];
|
|
108
99
|
updatedChildren.splice(oldPosition.index, 1);
|
|
109
100
|
updatedChildren.splice(newPosition.index, 0, itemToMoveId);
|
|
110
|
-
itemOrderedChildrenIds[itemToMoveMeta.parentId ??
|
|
101
|
+
itemOrderedChildrenIds[itemToMoveMeta.parentId ?? TREE_VIEW_ROOT_PARENT_ID] = updatedChildren;
|
|
111
102
|
} else {
|
|
112
103
|
const updatedOldParentChildren = [...itemOrderedChildrenIds[oldParentId]];
|
|
113
104
|
updatedOldParentChildren.splice(oldPosition.index, 1);
|
|
@@ -118,51 +109,50 @@ const moveItemInTree = ({
|
|
|
118
109
|
}
|
|
119
110
|
|
|
120
111
|
// 2. Update the `itemChildrenIndexes`
|
|
121
|
-
const itemChildrenIndexes = (
|
|
122
|
-
itemChildrenIndexes[oldParentId] =
|
|
112
|
+
const itemChildrenIndexes = _extends({}, prevState.itemChildrenIndexesLookup);
|
|
113
|
+
itemChildrenIndexes[oldParentId] = buildSiblingIndexes(itemOrderedChildrenIds[oldParentId]);
|
|
123
114
|
if (newParentId !== oldParentId) {
|
|
124
|
-
itemChildrenIndexes[newParentId] =
|
|
115
|
+
itemChildrenIndexes[newParentId] = buildSiblingIndexes(itemOrderedChildrenIds[newParentId]);
|
|
125
116
|
}
|
|
126
117
|
|
|
127
118
|
// 3. Update the `itemMetaLookup`
|
|
128
|
-
const itemMetaLookup = (
|
|
119
|
+
const itemMetaLookup = _extends({}, prevState.itemMetaLookup);
|
|
129
120
|
|
|
130
121
|
// 3.1 Update the `expandable` property of the old and the new parent
|
|
131
122
|
function updateExpandable(itemId) {
|
|
132
123
|
const isExpandable = itemOrderedChildrenIds[itemId].length > 0;
|
|
133
124
|
if (itemMetaLookup[itemId].expandable !== isExpandable) {
|
|
134
|
-
itemMetaLookup[itemId] = (
|
|
125
|
+
itemMetaLookup[itemId] = _extends({}, itemMetaLookup[itemId], {
|
|
135
126
|
expandable: isExpandable
|
|
136
127
|
});
|
|
137
128
|
}
|
|
138
129
|
}
|
|
139
|
-
if (oldParentId !==
|
|
130
|
+
if (oldParentId !== TREE_VIEW_ROOT_PARENT_ID && oldParentId !== newParentId) {
|
|
140
131
|
updateExpandable(oldParentId);
|
|
141
132
|
}
|
|
142
|
-
if (newParentId !==
|
|
133
|
+
if (newParentId !== TREE_VIEW_ROOT_PARENT_ID && newParentId !== oldParentId) {
|
|
143
134
|
updateExpandable(newParentId);
|
|
144
135
|
}
|
|
145
136
|
|
|
146
137
|
// 3.2 Update the `parentId` and `depth` properties of the item to move
|
|
147
138
|
// The depth is always defined because drag&drop is only usable with Rich Tree View components.
|
|
148
139
|
const itemToMoveDepth = newPosition.parentId == null ? 0 : itemMetaLookup[newParentId].depth + 1;
|
|
149
|
-
itemMetaLookup[itemToMoveId] = (
|
|
140
|
+
itemMetaLookup[itemToMoveId] = _extends({}, itemToMoveMeta, {
|
|
150
141
|
parentId: newPosition.parentId,
|
|
151
142
|
depth: itemToMoveDepth
|
|
152
143
|
});
|
|
153
144
|
|
|
154
145
|
// 3.3 Update the depth of all the children of the item to move
|
|
155
146
|
const updateItemDepth = (itemId, depth) => {
|
|
156
|
-
itemMetaLookup[itemId] = (
|
|
147
|
+
itemMetaLookup[itemId] = _extends({}, itemMetaLookup[itemId], {
|
|
157
148
|
depth
|
|
158
149
|
});
|
|
159
150
|
itemOrderedChildrenIds[itemId]?.forEach(childId => updateItemDepth(childId, depth + 1));
|
|
160
151
|
};
|
|
161
152
|
itemOrderedChildrenIds[itemToMoveId]?.forEach(childId => updateItemDepth(childId, itemToMoveDepth + 1));
|
|
162
|
-
return (
|
|
153
|
+
return _extends({}, prevState, {
|
|
163
154
|
itemOrderedChildrenIdsLookup: itemOrderedChildrenIds,
|
|
164
155
|
itemChildrenIndexesLookup: itemChildrenIndexes,
|
|
165
156
|
itemMetaLookup
|
|
166
157
|
});
|
|
167
|
-
};
|
|
168
|
-
exports.moveItemInTree = moveItemInTree;
|
|
158
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const getReleaseInfo: () => any;
|