@headless-tree/core 0.0.14 → 0.0.15
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 +7 -0
- package/lib/cjs/core/create-tree.js +13 -4
- package/lib/cjs/features/async-data-loader/feature.js +73 -48
- package/lib/cjs/features/async-data-loader/types.d.ts +17 -14
- package/lib/cjs/features/drag-and-drop/feature.js +98 -93
- package/lib/cjs/features/drag-and-drop/types.d.ts +17 -29
- package/lib/cjs/features/drag-and-drop/types.js +7 -7
- package/lib/cjs/features/drag-and-drop/utils.d.ts +18 -3
- package/lib/cjs/features/drag-and-drop/utils.js +49 -51
- package/lib/cjs/features/expand-all/feature.js +26 -3
- package/lib/cjs/features/expand-all/types.d.ts +3 -1
- package/lib/cjs/features/hotkeys-core/feature.js +7 -3
- package/lib/cjs/features/hotkeys-core/types.d.ts +4 -5
- package/lib/cjs/features/keyboard-drag-and-drop/feature.d.ts +2 -0
- package/lib/cjs/features/keyboard-drag-and-drop/feature.js +207 -0
- package/lib/cjs/features/keyboard-drag-and-drop/types.d.ts +27 -0
- package/lib/cjs/features/keyboard-drag-and-drop/types.js +11 -0
- package/lib/cjs/features/prop-memoization/feature.js +2 -2
- package/lib/cjs/features/prop-memoization/types.d.ts +2 -2
- package/lib/cjs/features/renaming/feature.js +1 -1
- package/lib/cjs/features/search/feature.js +2 -0
- package/lib/cjs/features/search/types.d.ts +2 -2
- package/lib/cjs/features/selection/feature.js +4 -4
- package/lib/cjs/features/selection/types.d.ts +1 -1
- package/lib/cjs/features/sync-data-loader/feature.js +31 -5
- package/lib/cjs/features/sync-data-loader/types.d.ts +5 -5
- package/lib/cjs/features/tree/feature.js +4 -7
- package/lib/cjs/features/tree/types.d.ts +7 -5
- package/lib/cjs/index.d.ts +2 -0
- package/lib/cjs/index.js +2 -0
- package/lib/cjs/mddocs-entry.d.ts +10 -0
- package/lib/cjs/test-utils/test-tree-do.d.ts +2 -2
- package/lib/cjs/test-utils/test-tree-do.js +19 -6
- package/lib/cjs/test-utils/test-tree-expect.d.ts +5 -3
- package/lib/cjs/test-utils/test-tree-expect.js +3 -0
- package/lib/cjs/test-utils/test-tree.d.ts +2 -1
- package/lib/cjs/test-utils/test-tree.js +24 -21
- package/lib/cjs/types/core.d.ts +2 -1
- package/lib/cjs/utilities/create-on-drop-handler.d.ts +2 -2
- package/lib/cjs/utilities/create-on-drop-handler.js +13 -4
- package/lib/cjs/utilities/insert-items-at-target.d.ts +2 -2
- package/lib/cjs/utilities/insert-items-at-target.js +21 -12
- package/lib/cjs/utilities/remove-items-from-parents.d.ts +1 -1
- package/lib/cjs/utilities/remove-items-from-parents.js +12 -3
- package/lib/esm/core/create-tree.js +13 -4
- package/lib/esm/features/async-data-loader/feature.js +73 -48
- package/lib/esm/features/async-data-loader/types.d.ts +17 -14
- package/lib/esm/features/drag-and-drop/feature.js +99 -94
- package/lib/esm/features/drag-and-drop/types.d.ts +17 -29
- package/lib/esm/features/drag-and-drop/types.js +6 -6
- package/lib/esm/features/drag-and-drop/utils.d.ts +18 -3
- package/lib/esm/features/drag-and-drop/utils.js +44 -49
- package/lib/esm/features/expand-all/feature.js +26 -3
- package/lib/esm/features/expand-all/types.d.ts +3 -1
- package/lib/esm/features/hotkeys-core/feature.js +7 -3
- package/lib/esm/features/hotkeys-core/types.d.ts +4 -5
- package/lib/esm/features/keyboard-drag-and-drop/feature.d.ts +2 -0
- package/lib/esm/features/keyboard-drag-and-drop/feature.js +204 -0
- package/lib/esm/features/keyboard-drag-and-drop/types.d.ts +27 -0
- package/lib/esm/features/keyboard-drag-and-drop/types.js +8 -0
- package/lib/esm/features/prop-memoization/feature.js +2 -2
- package/lib/esm/features/prop-memoization/types.d.ts +2 -2
- package/lib/esm/features/renaming/feature.js +1 -1
- package/lib/esm/features/search/feature.js +2 -0
- package/lib/esm/features/search/types.d.ts +2 -2
- package/lib/esm/features/selection/feature.js +4 -4
- package/lib/esm/features/selection/types.d.ts +1 -1
- package/lib/esm/features/sync-data-loader/feature.js +31 -5
- package/lib/esm/features/sync-data-loader/types.d.ts +5 -5
- package/lib/esm/features/tree/feature.js +4 -7
- package/lib/esm/features/tree/types.d.ts +7 -5
- package/lib/esm/index.d.ts +2 -0
- package/lib/esm/index.js +2 -0
- package/lib/esm/mddocs-entry.d.ts +10 -0
- package/lib/esm/test-utils/test-tree-do.d.ts +2 -2
- package/lib/esm/test-utils/test-tree-do.js +19 -6
- package/lib/esm/test-utils/test-tree-expect.d.ts +5 -3
- package/lib/esm/test-utils/test-tree-expect.js +3 -0
- package/lib/esm/test-utils/test-tree.d.ts +2 -1
- package/lib/esm/test-utils/test-tree.js +24 -21
- package/lib/esm/types/core.d.ts +2 -1
- package/lib/esm/utilities/create-on-drop-handler.d.ts +2 -2
- package/lib/esm/utilities/create-on-drop-handler.js +13 -4
- package/lib/esm/utilities/insert-items-at-target.d.ts +2 -2
- package/lib/esm/utilities/insert-items-at-target.js +21 -12
- package/lib/esm/utilities/remove-items-from-parents.d.ts +1 -1
- package/lib/esm/utilities/remove-items-from-parents.js +12 -3
- package/package.json +2 -2
- package/src/core/core.spec.ts +31 -0
- package/src/core/create-tree.ts +15 -5
- package/src/features/async-data-loader/async-data-loader.spec.ts +10 -6
- package/src/features/async-data-loader/feature.ts +76 -48
- package/src/features/async-data-loader/types.ts +18 -11
- package/src/features/drag-and-drop/drag-and-drop.spec.ts +75 -89
- package/src/features/drag-and-drop/feature.ts +21 -22
- package/src/features/drag-and-drop/types.ts +23 -35
- package/src/features/drag-and-drop/utils.ts +67 -57
- package/src/features/expand-all/feature.ts +29 -5
- package/src/features/expand-all/types.ts +3 -1
- package/src/features/hotkeys-core/feature.ts +4 -0
- package/src/features/hotkeys-core/types.ts +4 -13
- package/src/features/keyboard-drag-and-drop/feature.ts +255 -0
- package/src/features/keyboard-drag-and-drop/keyboard-drag-and-drop.spec.ts +401 -0
- package/src/features/keyboard-drag-and-drop/types.ts +30 -0
- package/src/features/prop-memoization/feature.ts +2 -2
- package/src/features/prop-memoization/prop-memoization.spec.ts +2 -2
- package/src/features/prop-memoization/types.ts +2 -2
- package/src/features/renaming/feature.ts +8 -2
- package/src/features/search/feature.ts +2 -0
- package/src/features/search/types.ts +2 -2
- package/src/features/selection/feature.ts +4 -4
- package/src/features/selection/types.ts +1 -1
- package/src/features/sync-data-loader/feature.ts +26 -7
- package/src/features/sync-data-loader/types.ts +5 -5
- package/src/features/tree/feature.ts +8 -11
- package/src/features/tree/types.ts +7 -5
- package/src/index.ts +2 -0
- package/src/mddocs-entry.ts +16 -0
- package/src/test-utils/test-tree-do.ts +3 -3
- package/src/test-utils/test-tree-expect.ts +7 -2
- package/src/test-utils/test-tree.ts +26 -22
- package/src/types/core.ts +2 -0
- package/src/utilities/create-on-drop-handler.ts +4 -4
- package/src/utilities/insert-items-at-target.ts +18 -14
- package/src/utilities/remove-items-from-parents.ts +6 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# @headless-tree/core
|
|
2
2
|
|
|
3
|
+
## 0.0.15
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 2af5668: Bug fix: Mutations to expanded tree items from outside will now trigger a rebuild of the tree structure (#65)
|
|
8
|
+
- 617faea: Support for keyboard-controlled drag-and-drop events
|
|
9
|
+
|
|
3
10
|
## 0.0.14
|
|
4
11
|
|
|
5
12
|
### Patch Changes
|
|
@@ -92,6 +92,7 @@ const createTree = (initialConfig) => {
|
|
|
92
92
|
// Not necessary, since I think the subupdate below keeps the state fresh anyways?
|
|
93
93
|
// state = typeof updater === "function" ? updater(state) : updater;
|
|
94
94
|
(_a = config.setState) === null || _a === void 0 ? void 0 : _a.call(config, state); // TODO this cant be right... This doesnt allow external state updates
|
|
95
|
+
// TODO this is never used, remove
|
|
95
96
|
},
|
|
96
97
|
applySubStateUpdate: ({}, stateName, updater) => {
|
|
97
98
|
state[stateName] =
|
|
@@ -107,9 +108,18 @@ const createTree = (initialConfig) => {
|
|
|
107
108
|
},
|
|
108
109
|
getConfig: () => config,
|
|
109
110
|
setConfig: (_, updater) => {
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
111
|
+
var _a, _b, _c;
|
|
112
|
+
const newConfig = typeof updater === "function" ? updater(config) : updater;
|
|
113
|
+
const hasChangedExpandedItems = ((_a = newConfig.state) === null || _a === void 0 ? void 0 : _a.expandedItems) &&
|
|
114
|
+
((_b = newConfig.state) === null || _b === void 0 ? void 0 : _b.expandedItems) !== state.expandedItems;
|
|
115
|
+
config = newConfig;
|
|
116
|
+
if (newConfig.state) {
|
|
117
|
+
state = Object.assign(Object.assign({}, state), newConfig.state);
|
|
118
|
+
}
|
|
119
|
+
if (hasChangedExpandedItems) {
|
|
120
|
+
// if expanded items where changed from the outside
|
|
121
|
+
rebuildItemMeta();
|
|
122
|
+
(_c = config.setState) === null || _c === void 0 ? void 0 : _c.call(config, state);
|
|
113
123
|
}
|
|
114
124
|
},
|
|
115
125
|
getItemInstance: ({}, itemId) => itemInstancesMap[itemId],
|
|
@@ -131,7 +141,6 @@ const createTree = (initialConfig) => {
|
|
|
131
141
|
getHotkeyPresets: () => hotkeyPresets,
|
|
132
142
|
},
|
|
133
143
|
itemInstance: {
|
|
134
|
-
// TODO just change to a getRef method that memoizes, maybe as part of getProps
|
|
135
144
|
registerElement: ({ itemId, item }, element) => {
|
|
136
145
|
if (itemElementsMap[itemId] === element) {
|
|
137
146
|
return;
|
|
@@ -1,84 +1,109 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
2
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
12
|
exports.asyncDataLoaderFeature = void 0;
|
|
4
13
|
const utils_1 = require("../../utils");
|
|
5
14
|
exports.asyncDataLoaderFeature = {
|
|
6
15
|
key: "async-data-loader",
|
|
7
|
-
getInitialState: (initialState) => (Object.assign({
|
|
8
|
-
getDefaultConfig: (defaultConfig, tree) => (Object.assign({
|
|
16
|
+
getInitialState: (initialState) => (Object.assign({ loadingItemData: [], loadingItemChildrens: [] }, initialState)),
|
|
17
|
+
getDefaultConfig: (defaultConfig, tree) => (Object.assign({ setLoadingItemData: (0, utils_1.makeStateUpdater)("loadingItemData", tree), setLoadingItemChildrens: (0, utils_1.makeStateUpdater)("loadingItemChildrens", tree) }, defaultConfig)),
|
|
9
18
|
stateHandlerNames: {
|
|
10
|
-
|
|
19
|
+
loadingItemData: "setLoadingItemData",
|
|
20
|
+
loadingItemChildrens: "setLoadingItemChildrens",
|
|
11
21
|
},
|
|
12
22
|
treeInstance: {
|
|
23
|
+
waitForItemDataLoaded: (_a, itemId_1) => __awaiter(void 0, [_a, itemId_1], void 0, function* ({ tree }, itemId) {
|
|
24
|
+
tree.retrieveItemData(itemId);
|
|
25
|
+
if (!tree.getState().loadingItemData.includes(itemId)) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
yield new Promise((resolve) => {
|
|
29
|
+
var _a, _b;
|
|
30
|
+
var _c, _d;
|
|
31
|
+
const dataRef = tree.getDataRef();
|
|
32
|
+
(_a = (_c = dataRef.current).awaitingItemDataLoading) !== null && _a !== void 0 ? _a : (_c.awaitingItemDataLoading = {});
|
|
33
|
+
(_b = (_d = dataRef.current.awaitingItemDataLoading)[itemId]) !== null && _b !== void 0 ? _b : (_d[itemId] = []);
|
|
34
|
+
dataRef.current.awaitingItemDataLoading[itemId].push(resolve);
|
|
35
|
+
});
|
|
36
|
+
}),
|
|
37
|
+
waitForItemChildrenLoaded: (_a, itemId_1) => __awaiter(void 0, [_a, itemId_1], void 0, function* ({ tree }, itemId) {
|
|
38
|
+
tree.retrieveChildrenIds(itemId);
|
|
39
|
+
if (!tree.getState().loadingItemChildrens.includes(itemId)) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
yield new Promise((resolve) => {
|
|
43
|
+
var _a, _b;
|
|
44
|
+
var _c, _d;
|
|
45
|
+
const dataRef = tree.getDataRef();
|
|
46
|
+
(_a = (_c = dataRef.current).awaitingItemChildrensLoading) !== null && _a !== void 0 ? _a : (_c.awaitingItemChildrensLoading = {});
|
|
47
|
+
(_b = (_d = dataRef.current.awaitingItemChildrensLoading)[itemId]) !== null && _b !== void 0 ? _b : (_d[itemId] = []);
|
|
48
|
+
dataRef.current.awaitingItemChildrensLoading[itemId].push(resolve);
|
|
49
|
+
});
|
|
50
|
+
}),
|
|
13
51
|
retrieveItemData: ({ tree }, itemId) => {
|
|
14
|
-
var _a, _b, _c, _d
|
|
15
|
-
var
|
|
52
|
+
var _a, _b, _c, _d;
|
|
53
|
+
var _e, _f;
|
|
16
54
|
const config = tree.getConfig();
|
|
17
55
|
const dataRef = tree.getDataRef();
|
|
18
|
-
(_a = (
|
|
19
|
-
(_b = (
|
|
56
|
+
(_a = (_e = dataRef.current).itemData) !== null && _a !== void 0 ? _a : (_e.itemData = {});
|
|
57
|
+
(_b = (_f = dataRef.current).childrenIds) !== null && _b !== void 0 ? _b : (_f.childrenIds = {});
|
|
20
58
|
if (dataRef.current.itemData[itemId]) {
|
|
21
59
|
return dataRef.current.itemData[itemId];
|
|
22
60
|
}
|
|
23
|
-
if (!tree.getState().
|
|
24
|
-
tree.applySubStateUpdate("
|
|
25
|
-
...
|
|
61
|
+
if (!tree.getState().loadingItemData.includes(itemId)) {
|
|
62
|
+
tree.applySubStateUpdate("loadingItemData", (loadingItemData) => [
|
|
63
|
+
...loadingItemData,
|
|
26
64
|
itemId,
|
|
27
65
|
]);
|
|
28
|
-
(
|
|
29
|
-
var _a;
|
|
66
|
+
(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
67
|
+
var _a, _b, _c;
|
|
68
|
+
const item = yield config.dataLoader.getItem(itemId);
|
|
30
69
|
dataRef.current.itemData[itemId] = item;
|
|
31
70
|
(_a = config.onLoadedItem) === null || _a === void 0 ? void 0 : _a.call(config, itemId, item);
|
|
32
|
-
tree.applySubStateUpdate("
|
|
33
|
-
|
|
71
|
+
tree.applySubStateUpdate("loadingItemData", (loadingItemData) => loadingItemData.filter((id) => id !== itemId));
|
|
72
|
+
(_b = dataRef.current.awaitingItemDataLoading) === null || _b === void 0 ? void 0 : _b[itemId].forEach((cb) => cb());
|
|
73
|
+
(_c = dataRef.current.awaitingItemDataLoading) === null || _c === void 0 ? true : delete _c[itemId];
|
|
74
|
+
}))();
|
|
34
75
|
}
|
|
35
|
-
return (
|
|
76
|
+
return (_d = (_c = config.createLoadingItemData) === null || _c === void 0 ? void 0 : _c.call(config)) !== null && _d !== void 0 ? _d : null;
|
|
36
77
|
},
|
|
37
78
|
retrieveChildrenIds: ({ tree }, itemId) => {
|
|
38
|
-
var _a
|
|
39
|
-
var
|
|
79
|
+
var _a;
|
|
80
|
+
var _b;
|
|
40
81
|
const config = tree.getConfig();
|
|
41
82
|
const dataRef = tree.getDataRef();
|
|
42
|
-
(_a = (
|
|
43
|
-
(_b = (_g = dataRef.current).childrenIds) !== null && _b !== void 0 ? _b : (_g.childrenIds = {});
|
|
83
|
+
(_a = (_b = dataRef.current).childrenIds) !== null && _a !== void 0 ? _a : (_b.childrenIds = {});
|
|
44
84
|
if (dataRef.current.childrenIds[itemId]) {
|
|
45
85
|
return dataRef.current.childrenIds[itemId];
|
|
46
86
|
}
|
|
47
|
-
if (tree.getState().
|
|
87
|
+
if (tree.getState().loadingItemChildrens.includes(itemId)) {
|
|
48
88
|
return [];
|
|
49
89
|
}
|
|
50
|
-
tree.applySubStateUpdate("
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
(
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
const childrenIds = children.map(({ id }) => id);
|
|
62
|
-
dataRef.current.childrenIds[itemId] = childrenIds;
|
|
63
|
-
(_b = config.onLoadedChildren) === null || _b === void 0 ? void 0 : _b.call(config, itemId, childrenIds);
|
|
64
|
-
tree.applySubStateUpdate("loadingItems", (loadingItems) => loadingItems.filter((id) => id !== itemId));
|
|
65
|
-
tree.rebuildTree();
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
(_e = config.asyncDataLoader) === null || _e === void 0 ? void 0 : _e.getChildren(itemId).then((childrenIds) => {
|
|
70
|
-
var _a;
|
|
71
|
-
dataRef.current.childrenIds[itemId] = childrenIds;
|
|
72
|
-
(_a = config.onLoadedChildren) === null || _a === void 0 ? void 0 : _a.call(config, itemId, childrenIds);
|
|
73
|
-
tree.applySubStateUpdate("loadingItems", (loadingItems) => loadingItems.filter((id) => id !== itemId));
|
|
74
|
-
tree.rebuildTree();
|
|
75
|
-
});
|
|
76
|
-
}
|
|
90
|
+
tree.applySubStateUpdate("loadingItemChildrens", (loadingItemChildrens) => [...loadingItemChildrens, itemId]);
|
|
91
|
+
(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
92
|
+
var _a, _b, _c, _d;
|
|
93
|
+
const childrenIds = yield config.dataLoader.getChildren(itemId);
|
|
94
|
+
dataRef.current.childrenIds[itemId] = childrenIds;
|
|
95
|
+
(_a = config.onLoadedChildren) === null || _a === void 0 ? void 0 : _a.call(config, itemId, childrenIds);
|
|
96
|
+
tree.applySubStateUpdate("loadingItemChildrens", (loadingItemChildrens) => loadingItemChildrens.filter((id) => id !== itemId));
|
|
97
|
+
tree.rebuildTree();
|
|
98
|
+
(_c = (_b = dataRef.current.awaitingItemChildrensLoading) === null || _b === void 0 ? void 0 : _b[itemId]) === null || _c === void 0 ? void 0 : _c.forEach((cb) => cb());
|
|
99
|
+
(_d = dataRef.current.awaitingItemChildrensLoading) === null || _d === void 0 ? true : delete _d[itemId];
|
|
100
|
+
}))();
|
|
77
101
|
return [];
|
|
78
102
|
},
|
|
79
103
|
},
|
|
80
104
|
itemInstance: {
|
|
81
|
-
isLoading: ({ tree, item }) => tree.getState().
|
|
105
|
+
isLoading: ({ tree, item }) => tree.getState().loadingItemData.includes(item.getItemMeta().itemId) ||
|
|
106
|
+
tree.getState().loadingItemChildrens.includes(item.getItemMeta().itemId),
|
|
82
107
|
invalidateItemData: ({ tree, itemId }) => {
|
|
83
108
|
var _a;
|
|
84
109
|
const dataRef = tree.getDataRef();
|
|
@@ -1,33 +1,35 @@
|
|
|
1
1
|
import { SetStateFn } from "../../types/core";
|
|
2
2
|
import { SyncDataLoaderFeatureDef } from "../sync-data-loader/types";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
getChildren: (itemId: string) => Promise<string[]>;
|
|
6
|
-
getChildrenWithData?: (itemId: string) => Promise<{
|
|
7
|
-
id: string;
|
|
8
|
-
data: T;
|
|
9
|
-
}[]>;
|
|
10
|
-
};
|
|
11
|
-
export type AsyncDataLoaderRef<T = any> = {
|
|
3
|
+
type AwaitingLoaderCallbacks = Record<string, (() => void)[]>;
|
|
4
|
+
export interface AsyncDataLoaderDataRef<T = any> {
|
|
12
5
|
itemData: Record<string, T>;
|
|
13
6
|
childrenIds: Record<string, string[]>;
|
|
14
|
-
|
|
7
|
+
awaitingItemDataLoading: AwaitingLoaderCallbacks;
|
|
8
|
+
awaitingItemChildrensLoading: AwaitingLoaderCallbacks;
|
|
9
|
+
}
|
|
15
10
|
/**
|
|
16
11
|
* @category Async Data Loader/General
|
|
17
12
|
* */
|
|
18
13
|
export type AsyncDataLoaderFeatureDef<T> = {
|
|
19
14
|
state: {
|
|
20
|
-
|
|
15
|
+
loadingItemData: string[];
|
|
16
|
+
loadingItemChildrens: string[];
|
|
21
17
|
};
|
|
22
18
|
config: {
|
|
23
19
|
rootItemId: string;
|
|
20
|
+
/** Will be called when HT retrieves item data for an item whose item data is asynchronously being loaded.
|
|
21
|
+
* Can be used to create placeholder data to use for rendering the tree item while it is loaded. If not defined,
|
|
22
|
+
* the tree item data will be null. */
|
|
24
23
|
createLoadingItemData?: () => T;
|
|
25
|
-
|
|
24
|
+
setLoadingItemData?: SetStateFn<string[]>;
|
|
25
|
+
setLoadingItemChildrens?: SetStateFn<string[]>;
|
|
26
26
|
onLoadedItem?: (itemId: string, item: T) => void;
|
|
27
27
|
onLoadedChildren?: (itemId: string, childrenIds: string[]) => void;
|
|
28
|
-
asyncDataLoader?: AsyncTreeDataLoader<T>;
|
|
29
28
|
};
|
|
30
|
-
treeInstance: SyncDataLoaderFeatureDef<T>["treeInstance"]
|
|
29
|
+
treeInstance: SyncDataLoaderFeatureDef<T>["treeInstance"] & {
|
|
30
|
+
waitForItemDataLoaded: (itemId: string) => Promise<void>;
|
|
31
|
+
waitForItemChildrenLoaded: (itemId: string) => Promise<void>;
|
|
32
|
+
};
|
|
31
33
|
itemInstance: SyncDataLoaderFeatureDef<T>["itemInstance"] & {
|
|
32
34
|
/** Invalidate fetched data for item, and triggers a refetch and subsequent rerender if the item is visible */
|
|
33
35
|
invalidateItemData: () => void;
|
|
@@ -37,3 +39,4 @@ export type AsyncDataLoaderFeatureDef<T> = {
|
|
|
37
39
|
};
|
|
38
40
|
hotkeys: SyncDataLoaderFeatureDef<T>["hotkeys"];
|
|
39
41
|
};
|
|
42
|
+
export {};
|
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
2
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
12
|
exports.dragAndDropFeature = void 0;
|
|
4
13
|
const utils_1 = require("./utils");
|
|
@@ -11,16 +20,16 @@ exports.dragAndDropFeature = {
|
|
|
11
20
|
dnd: "setDndState",
|
|
12
21
|
},
|
|
13
22
|
treeInstance: {
|
|
14
|
-
|
|
23
|
+
getDragTarget: ({ tree }) => {
|
|
15
24
|
var _a, _b;
|
|
16
25
|
return (_b = (_a = tree.getState().dnd) === null || _a === void 0 ? void 0 : _a.dragTarget) !== null && _b !== void 0 ? _b : null;
|
|
17
26
|
},
|
|
18
27
|
getDragLineData: ({ tree }) => {
|
|
19
28
|
var _a, _b, _c, _d, _e, _f;
|
|
20
|
-
const target = tree.
|
|
29
|
+
const target = tree.getDragTarget();
|
|
21
30
|
const indent = ((_a = target === null || target === void 0 ? void 0 : target.item.getItemMeta().level) !== null && _a !== void 0 ? _a : 0) + 1;
|
|
22
31
|
const treeBb = (_b = tree.getElement()) === null || _b === void 0 ? void 0 : _b.getBoundingClientRect();
|
|
23
|
-
if (!target || !treeBb ||
|
|
32
|
+
if (!target || !treeBb || !("childIndex" in target))
|
|
24
33
|
return null;
|
|
25
34
|
const leftOffset = target.dragLineLevel * ((_c = tree.getConfig().indent) !== null && _c !== void 0 ? _c : 1);
|
|
26
35
|
const targetItem = tree.getItems()[target.dragLineIndex];
|
|
@@ -30,7 +39,7 @@ exports.dragAndDropFeature = {
|
|
|
30
39
|
if (bb) {
|
|
31
40
|
return {
|
|
32
41
|
indent,
|
|
33
|
-
top: bb.bottom - treeBb.
|
|
42
|
+
top: bb.bottom - treeBb.top,
|
|
34
43
|
left: bb.left + leftOffset - treeBb.left,
|
|
35
44
|
width: bb.width - leftOffset,
|
|
36
45
|
};
|
|
@@ -58,109 +67,105 @@ exports.dragAndDropFeature = {
|
|
|
58
67
|
}
|
|
59
68
|
: { display: "none" };
|
|
60
69
|
},
|
|
61
|
-
getContainerProps: ({ prev }) => {
|
|
62
|
-
const prevProps = prev === null || prev === void 0 ? void 0 : prev();
|
|
70
|
+
getContainerProps: ({ prev }, treeLabel) => {
|
|
71
|
+
const prevProps = prev === null || prev === void 0 ? void 0 : prev(treeLabel);
|
|
63
72
|
return Object.assign(Object.assign({}, prevProps), { style: Object.assign(Object.assign({}, prevProps === null || prevProps === void 0 ? void 0 : prevProps.style), { position: "relative" }) });
|
|
64
73
|
},
|
|
65
74
|
},
|
|
66
75
|
itemInstance: {
|
|
67
|
-
getProps: ({ tree, item, prev }) => {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
}
|
|
77
|
-
if (!((_b = (_a = config.canDrag) === null || _a === void 0 ? void 0 : _a.call(config, items)) !== null && _b !== void 0 ? _b : true)) {
|
|
78
|
-
e.preventDefault();
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
|
-
if (config.createForeignDragObject) {
|
|
82
|
-
const { format, data } = config.createForeignDragObject(items);
|
|
83
|
-
(_c = e.dataTransfer) === null || _c === void 0 ? void 0 : _c.setData(format, data);
|
|
84
|
-
}
|
|
85
|
-
tree.applySubStateUpdate("dnd", {
|
|
86
|
-
draggedItems: items,
|
|
87
|
-
draggingOverItem: tree.getFocusedItem(),
|
|
88
|
-
});
|
|
89
|
-
}, onDragOver: (e) => {
|
|
90
|
-
var _a, _b, _c;
|
|
91
|
-
const dataRef = tree.getDataRef();
|
|
92
|
-
const nextDragCode = (0, utils_1.getDragCode)(e, item, tree);
|
|
93
|
-
if (nextDragCode === dataRef.current.lastDragCode) {
|
|
94
|
-
if (dataRef.current.lastAllowDrop) {
|
|
95
|
-
e.preventDefault();
|
|
96
|
-
}
|
|
97
|
-
return;
|
|
98
|
-
}
|
|
99
|
-
dataRef.current.lastDragCode = nextDragCode;
|
|
100
|
-
const target = (0, utils_1.getDropTarget)(e, item, tree);
|
|
101
|
-
if (!((_a = tree.getState().dnd) === null || _a === void 0 ? void 0 : _a.draggedItems) &&
|
|
102
|
-
(!e.dataTransfer ||
|
|
103
|
-
!((_c = (_b = tree
|
|
104
|
-
.getConfig()).canDropForeignDragObject) === null || _c === void 0 ? void 0 : _c.call(_b, e.dataTransfer, target)))) {
|
|
105
|
-
dataRef.current.lastAllowDrop = false;
|
|
106
|
-
return;
|
|
107
|
-
}
|
|
108
|
-
if (!(0, utils_1.canDrop)(e.dataTransfer, target, tree)) {
|
|
109
|
-
dataRef.current.lastAllowDrop = false;
|
|
110
|
-
return;
|
|
111
|
-
}
|
|
112
|
-
tree.applySubStateUpdate("dnd", (state) => (Object.assign(Object.assign({}, state), { dragTarget: target, draggingOverItem: item })));
|
|
113
|
-
dataRef.current.lastAllowDrop = true;
|
|
114
|
-
e.preventDefault();
|
|
115
|
-
}, onDragLeave: () => {
|
|
116
|
-
const dataRef = tree.getDataRef();
|
|
117
|
-
dataRef.current.lastDragCode = "no-drag";
|
|
118
|
-
tree.applySubStateUpdate("dnd", (state) => (Object.assign(Object.assign({}, state), { draggingOverItem: undefined, dragTarget: undefined })));
|
|
119
|
-
}, onDragEnd: (e) => {
|
|
120
|
-
var _a, _b, _c, _d;
|
|
121
|
-
const draggedItems = (_a = tree.getState().dnd) === null || _a === void 0 ? void 0 : _a.draggedItems;
|
|
122
|
-
tree.applySubStateUpdate("dnd", null);
|
|
123
|
-
if (((_b = e.dataTransfer) === null || _b === void 0 ? void 0 : _b.dropEffect) === "none" || !draggedItems) {
|
|
124
|
-
return;
|
|
125
|
-
}
|
|
126
|
-
(_d = (_c = tree.getConfig()).onCompleteForeignDrop) === null || _d === void 0 ? void 0 : _d.call(_c, draggedItems);
|
|
127
|
-
}, onDrop: (e) => {
|
|
128
|
-
var _a, _b, _c;
|
|
129
|
-
const dataRef = tree.getDataRef();
|
|
130
|
-
const target = (0, utils_1.getDropTarget)(e, item, tree);
|
|
131
|
-
if (!(0, utils_1.canDrop)(e.dataTransfer, target, tree)) {
|
|
132
|
-
return;
|
|
133
|
-
}
|
|
76
|
+
getProps: ({ tree, item, prev }) => (Object.assign(Object.assign({}, prev === null || prev === void 0 ? void 0 : prev()), { draggable: true, onDragStart: (e) => {
|
|
77
|
+
var _a, _b, _c;
|
|
78
|
+
const selectedItems = tree.getSelectedItems();
|
|
79
|
+
const items = selectedItems.includes(item) ? selectedItems : [item];
|
|
80
|
+
const config = tree.getConfig();
|
|
81
|
+
if (!selectedItems.includes(item)) {
|
|
82
|
+
tree.setSelectedItems([item.getItemMeta().itemId]);
|
|
83
|
+
}
|
|
84
|
+
if (!((_b = (_a = config.canDrag) === null || _a === void 0 ? void 0 : _a.call(config, items)) !== null && _b !== void 0 ? _b : true)) {
|
|
134
85
|
e.preventDefault();
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
if (config.createForeignDragObject) {
|
|
89
|
+
const { format, data } = config.createForeignDragObject(items);
|
|
90
|
+
(_c = e.dataTransfer) === null || _c === void 0 ? void 0 : _c.setData(format, data);
|
|
91
|
+
}
|
|
92
|
+
tree.applySubStateUpdate("dnd", {
|
|
93
|
+
draggedItems: items,
|
|
94
|
+
draggingOverItem: tree.getFocusedItem(),
|
|
95
|
+
});
|
|
96
|
+
}, onDragOver: (e) => {
|
|
97
|
+
var _a, _b, _c;
|
|
98
|
+
const dataRef = tree.getDataRef();
|
|
99
|
+
const nextDragCode = (0, utils_1.getDragCode)(e, item, tree);
|
|
100
|
+
if (nextDragCode === dataRef.current.lastDragCode) {
|
|
101
|
+
if (dataRef.current.lastAllowDrop) {
|
|
102
|
+
e.preventDefault();
|
|
144
103
|
}
|
|
145
|
-
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
dataRef.current.lastDragCode = nextDragCode;
|
|
107
|
+
const target = (0, utils_1.getDragTarget)(e, item, tree);
|
|
108
|
+
if (!((_a = tree.getState().dnd) === null || _a === void 0 ? void 0 : _a.draggedItems) &&
|
|
109
|
+
(!e.dataTransfer ||
|
|
110
|
+
!((_c = (_b = tree
|
|
111
|
+
.getConfig()).canDropForeignDragObject) === null || _c === void 0 ? void 0 : _c.call(_b, e.dataTransfer, target)))) {
|
|
112
|
+
dataRef.current.lastAllowDrop = false;
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
if (!(0, utils_1.canDrop)(e.dataTransfer, target, tree)) {
|
|
116
|
+
dataRef.current.lastAllowDrop = false;
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
tree.applySubStateUpdate("dnd", (state) => (Object.assign(Object.assign({}, state), { dragTarget: target, draggingOverItem: item })));
|
|
120
|
+
dataRef.current.lastAllowDrop = true;
|
|
121
|
+
e.preventDefault();
|
|
122
|
+
}, onDragLeave: () => {
|
|
123
|
+
const dataRef = tree.getDataRef();
|
|
124
|
+
dataRef.current.lastDragCode = "no-drag";
|
|
125
|
+
tree.applySubStateUpdate("dnd", (state) => (Object.assign(Object.assign({}, state), { draggingOverItem: undefined, dragTarget: undefined })));
|
|
126
|
+
}, onDragEnd: (e) => {
|
|
127
|
+
var _a, _b, _c, _d;
|
|
128
|
+
const draggedItems = (_a = tree.getState().dnd) === null || _a === void 0 ? void 0 : _a.draggedItems;
|
|
129
|
+
tree.applySubStateUpdate("dnd", null);
|
|
130
|
+
if (((_b = e.dataTransfer) === null || _b === void 0 ? void 0 : _b.dropEffect) === "none" || !draggedItems) {
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
(_d = (_c = tree.getConfig()).onCompleteForeignDrop) === null || _d === void 0 ? void 0 : _d.call(_c, draggedItems);
|
|
134
|
+
}, onDrop: (e) => __awaiter(void 0, void 0, void 0, function* () {
|
|
135
|
+
var _a, _b, _c;
|
|
136
|
+
const dataRef = tree.getDataRef();
|
|
137
|
+
const target = (0, utils_1.getDragTarget)(e, item, tree);
|
|
138
|
+
if (!(0, utils_1.canDrop)(e.dataTransfer, target, tree)) {
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
e.preventDefault();
|
|
142
|
+
const config = tree.getConfig();
|
|
143
|
+
const draggedItems = (_a = tree.getState().dnd) === null || _a === void 0 ? void 0 : _a.draggedItems;
|
|
144
|
+
dataRef.current.lastDragCode = undefined;
|
|
145
|
+
tree.applySubStateUpdate("dnd", null);
|
|
146
|
+
if (draggedItems) {
|
|
147
|
+
yield ((_b = config.onDrop) === null || _b === void 0 ? void 0 : _b.call(config, draggedItems, target));
|
|
148
|
+
}
|
|
149
|
+
else if (e.dataTransfer) {
|
|
150
|
+
yield ((_c = config.onDropForeignDragObject) === null || _c === void 0 ? void 0 : _c.call(config, e.dataTransfer, target));
|
|
151
|
+
}
|
|
152
|
+
}) })),
|
|
153
|
+
isDragTarget: ({ tree, item }) => {
|
|
154
|
+
const target = tree.getDragTarget();
|
|
150
155
|
return target ? target.item.getId() === item.getId() : false;
|
|
151
156
|
},
|
|
152
|
-
|
|
153
|
-
const target = tree.
|
|
157
|
+
isDragTargetAbove: ({ tree, item }) => {
|
|
158
|
+
const target = tree.getDragTarget();
|
|
154
159
|
if (!target ||
|
|
155
|
-
|
|
160
|
+
!("childIndex" in target) ||
|
|
156
161
|
target.item !== item.getParent())
|
|
157
162
|
return false;
|
|
158
163
|
return target.childIndex === item.getItemMeta().posInSet;
|
|
159
164
|
},
|
|
160
|
-
|
|
161
|
-
const target = tree.
|
|
165
|
+
isDragTargetBelow: ({ tree, item }) => {
|
|
166
|
+
const target = tree.getDragTarget();
|
|
162
167
|
if (!target ||
|
|
163
|
-
|
|
168
|
+
!("childIndex" in target) ||
|
|
164
169
|
target.item !== item.getParent())
|
|
165
170
|
return false;
|
|
166
171
|
return target.childIndex - 1 === item.getItemMeta().posInSet;
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import { ItemInstance, SetStateFn } from "../../types/core";
|
|
2
|
-
export
|
|
2
|
+
export interface DndDataRef {
|
|
3
3
|
lastDragCode?: string;
|
|
4
4
|
lastAllowDrop?: boolean;
|
|
5
|
-
}
|
|
6
|
-
export
|
|
5
|
+
}
|
|
6
|
+
export interface DndState<T> {
|
|
7
7
|
draggedItems?: ItemInstance<T>[];
|
|
8
8
|
draggingOverItem?: ItemInstance<T>;
|
|
9
|
-
dragTarget?:
|
|
10
|
-
}
|
|
11
|
-
export
|
|
9
|
+
dragTarget?: DragTarget<T>;
|
|
10
|
+
}
|
|
11
|
+
export interface DragLineData {
|
|
12
12
|
indent: number;
|
|
13
13
|
top: number;
|
|
14
14
|
left: number;
|
|
15
15
|
width: number;
|
|
16
|
-
}
|
|
17
|
-
export type
|
|
16
|
+
}
|
|
17
|
+
export type DragTarget<T> = {
|
|
18
18
|
item: ItemInstance<T>;
|
|
19
19
|
childIndex: number;
|
|
20
20
|
insertionIndex: number;
|
|
@@ -22,12 +22,8 @@ export type DropTarget<T> = {
|
|
|
22
22
|
dragLineLevel: number;
|
|
23
23
|
} | {
|
|
24
24
|
item: ItemInstance<T>;
|
|
25
|
-
childIndex: null;
|
|
26
|
-
insertionIndex: null;
|
|
27
|
-
dragLineIndex: null;
|
|
28
|
-
dragLineLevel: null;
|
|
29
25
|
};
|
|
30
|
-
export declare enum
|
|
26
|
+
export declare enum DragTargetPosition {
|
|
31
27
|
Top = "top",
|
|
32
28
|
Bottom = "bottom",
|
|
33
29
|
Item = "item"
|
|
@@ -43,35 +39,27 @@ export type DragAndDropFeatureDef<T> = {
|
|
|
43
39
|
* If `canReorder` is `false`, this is ignored. */
|
|
44
40
|
reorderAreaPercentage?: number;
|
|
45
41
|
canReorder?: boolean;
|
|
46
|
-
isItemDraggable?: (item: ItemInstance<T>) => boolean;
|
|
47
42
|
canDrag?: (items: ItemInstance<T>[]) => boolean;
|
|
48
|
-
canDrop?: (items: ItemInstance<T>[], target:
|
|
43
|
+
canDrop?: (items: ItemInstance<T>[], target: DragTarget<T>) => boolean;
|
|
49
44
|
indent?: number;
|
|
50
45
|
createForeignDragObject?: (items: ItemInstance<T>[]) => {
|
|
51
46
|
format: string;
|
|
52
47
|
data: any;
|
|
53
48
|
};
|
|
54
|
-
canDropForeignDragObject?: (dataTransfer: DataTransfer, target:
|
|
55
|
-
onDrop?: (items: ItemInstance<T>[], target:
|
|
56
|
-
onDropForeignDragObject?: (dataTransfer: DataTransfer, target:
|
|
57
|
-
/** Runs in the onDragEnd event, if `ev.dataTransfer.dropEffect` is not `none`, i.e. the drop
|
|
58
|
-
* was not aborted. No target is provided as parameter since the target may be a foreign drop target.
|
|
59
|
-
* This is useful to seperate out the logic to move dragged items out of their previous parents.
|
|
60
|
-
* Use `onDrop` to handle drop-related logic.
|
|
61
|
-
*
|
|
62
|
-
* This ignores the `canDrop` handler, since the drop target is unknown in this handler.
|
|
63
|
-
*/
|
|
49
|
+
canDropForeignDragObject?: (dataTransfer: DataTransfer, target: DragTarget<T>) => boolean;
|
|
50
|
+
onDrop?: (items: ItemInstance<T>[], target: DragTarget<T>) => void | Promise<void>;
|
|
51
|
+
onDropForeignDragObject?: (dataTransfer: DataTransfer, target: DragTarget<T>) => void | Promise<void>;
|
|
64
52
|
onCompleteForeignDrop?: (items: ItemInstance<T>[]) => void;
|
|
65
53
|
};
|
|
66
54
|
treeInstance: {
|
|
67
|
-
|
|
55
|
+
getDragTarget: () => DragTarget<T> | null;
|
|
68
56
|
getDragLineData: () => DragLineData | null;
|
|
69
57
|
getDragLineStyle: (topOffset?: number, leftOffset?: number) => Record<string, any>;
|
|
70
58
|
};
|
|
71
59
|
itemInstance: {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
60
|
+
isDragTarget: () => boolean;
|
|
61
|
+
isDragTargetAbove: () => boolean;
|
|
62
|
+
isDragTargetBelow: () => boolean;
|
|
75
63
|
isDraggingOver: () => boolean;
|
|
76
64
|
};
|
|
77
65
|
hotkeys: never;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
var
|
|
5
|
-
(function (
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
})(
|
|
3
|
+
exports.DragTargetPosition = void 0;
|
|
4
|
+
var DragTargetPosition;
|
|
5
|
+
(function (DragTargetPosition) {
|
|
6
|
+
DragTargetPosition["Top"] = "top";
|
|
7
|
+
DragTargetPosition["Bottom"] = "bottom";
|
|
8
|
+
DragTargetPosition["Item"] = "item";
|
|
9
|
+
})(DragTargetPosition || (exports.DragTargetPosition = DragTargetPosition = {}));
|
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
import { ItemInstance, TreeInstance } from "../../types/core";
|
|
2
|
-
import {
|
|
3
|
-
export declare
|
|
2
|
+
import { DragTarget } from "./types";
|
|
3
|
+
export declare enum ItemDropCategory {
|
|
4
|
+
Item = 0,
|
|
5
|
+
ExpandedFolder = 1,
|
|
6
|
+
LastInGroup = 2
|
|
7
|
+
}
|
|
8
|
+
export declare const canDrop: (dataTransfer: DataTransfer | null, target: DragTarget<any>, tree: TreeInstance<any>) => boolean;
|
|
9
|
+
export declare const getItemDropCategory: (item: ItemInstance<any>) => ItemDropCategory;
|
|
10
|
+
export declare const getInsertionIndex: <T>(children: ItemInstance<T>[], childIndex: number, draggedItems: ItemInstance<T>[] | undefined) => number;
|
|
4
11
|
export declare const getDragCode: (e: any, item: ItemInstance<any>, tree: TreeInstance<any>) => string;
|
|
5
|
-
|
|
12
|
+
/** @param item refers to the bottom-most item of the container, at which bottom is being reparented on (e.g. root-1-2-6) */
|
|
13
|
+
export declare const getReparentTarget: <T>(item: ItemInstance<T>, reparentLevel: number, draggedItems: ItemInstance<T>[] | undefined) => {
|
|
14
|
+
item: ItemInstance<any>;
|
|
15
|
+
childIndex: number;
|
|
16
|
+
insertionIndex: number;
|
|
17
|
+
dragLineIndex: number;
|
|
18
|
+
dragLineLevel: number;
|
|
19
|
+
};
|
|
20
|
+
export declare const getDragTarget: (e: any, item: ItemInstance<any>, tree: TreeInstance<any>, canReorder?: boolean | undefined) => DragTarget<any>;
|