@os-design/drag-sort 1.0.1 → 1.0.5
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/dist/cjs/DragAndDrop.js +7 -1
- package/dist/cjs/DragAndDrop.js.map +1 -1
- package/dist/cjs/Draggable.js.map +1 -1
- package/dist/cjs/Droppable.js +4 -8
- package/dist/cjs/Droppable.js.map +1 -1
- package/dist/cjs/utils/ListStore.js +1 -1
- package/dist/cjs/utils/ListStore.js.map +1 -1
- package/dist/cjs/utils/useBlankNode.js.map +1 -1
- package/dist/cjs/utils/useDragEffect.js +146 -129
- package/dist/cjs/utils/useDragEffect.js.map +1 -1
- package/dist/cjs/utils/useInitRect.js.map +1 -1
- package/dist/cjs/utils/useInitScrollOffset.js.map +1 -1
- package/dist/cjs/utils/useMoveNode.js +25 -19
- package/dist/cjs/utils/useMoveNode.js.map +1 -1
- package/dist/esm/DragAndDrop.js +6 -1
- package/dist/esm/DragAndDrop.js.map +1 -1
- package/dist/esm/Draggable.js.map +1 -1
- package/dist/esm/Droppable.js +4 -8
- package/dist/esm/Droppable.js.map +1 -1
- package/dist/esm/utils/ListStore.js +1 -1
- package/dist/esm/utils/ListStore.js.map +1 -1
- package/dist/esm/utils/useBlankNode.js.map +1 -1
- package/dist/esm/utils/useDragEffect.js +125 -107
- package/dist/esm/utils/useDragEffect.js.map +1 -1
- package/dist/esm/utils/useInitRect.js.map +1 -1
- package/dist/esm/utils/useInitScrollOffset.js.map +1 -1
- package/dist/esm/utils/useMoveNode.js +60 -47
- package/dist/esm/utils/useMoveNode.js.map +1 -1
- package/dist/types/DragAndDrop.d.ts.map +1 -1
- package/dist/types/Draggable.d.ts +1 -1
- package/dist/types/Draggable.d.ts.map +1 -1
- package/dist/types/Droppable.d.ts +1 -1
- package/dist/types/Droppable.d.ts.map +1 -1
- package/dist/types/utils/useBlankNode.d.ts +3 -1
- package/dist/types/utils/useBlankNode.d.ts.map +1 -1
- package/dist/types/utils/useDragEffect.d.ts.map +1 -1
- package/dist/types/utils/useInitRect.d.ts.map +1 -1
- package/dist/types/utils/useInitScrollOffset.d.ts.map +1 -1
- package/dist/types/utils/useMoveNode.d.ts +12 -5
- package/dist/types/utils/useMoveNode.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -55,7 +55,7 @@ var createEmptyNode = function createEmptyNode(_ref) {
|
|
|
55
55
|
current: null
|
|
56
56
|
}, function () {}, -1];
|
|
57
57
|
};
|
|
58
|
-
/* eslint-disable
|
|
58
|
+
/* eslint-disable no-constant-condition */
|
|
59
59
|
|
|
60
60
|
|
|
61
61
|
var useDragEffect = function useDragEffect(props) {
|
|
@@ -75,8 +75,7 @@ var useDragEffect = function useDragEffect(props) {
|
|
|
75
75
|
// We can't read the bounds of the dragged node on the fly because the node can be unmounted in the virtual list.
|
|
76
76
|
|
|
77
77
|
var initDraggedNodeRect = (0, _useInitRect["default"])(draggedNode ? draggedNode.node[2] : undefined); // The initial scroll position of the list where the dragged node is located.
|
|
78
|
-
// Used to detect the actual position of the dragged node.
|
|
79
|
-
// The purpose is the same as with initDraggedNodeRect.
|
|
78
|
+
// Used to detect the actual position of the dragged node. The purpose is the same as with initDraggedNodeRect.
|
|
80
79
|
|
|
81
80
|
var initDraggedNodeListScrollOffset = (0, _useInitScrollOffset["default"])(draggedNode ? draggedNode.list.ref : undefined); // The central position of the dragged node
|
|
82
81
|
|
|
@@ -90,12 +89,17 @@ var useDragEffect = function useDragEffect(props) {
|
|
|
90
89
|
x: x - draggedNode.position.x + initWidth / 2,
|
|
91
90
|
y: y - draggedNode.position.y + initHeight / 2
|
|
92
91
|
};
|
|
93
|
-
}, [cursorPosition, draggedNode, initDraggedNodeRect]); //
|
|
92
|
+
}, [cursorPosition, draggedNode, initDraggedNodeRect]); // The list in which the cursor is located
|
|
94
93
|
|
|
95
|
-
var
|
|
94
|
+
var targetList = (0, _useTargetList["default"])(position, listStoreRef); // Returns the style for moving the node in the specified direction
|
|
96
95
|
|
|
97
|
-
var
|
|
98
|
-
|
|
96
|
+
var getNodeStyle = (0, _useGetNodeStyle["default"])(initDraggedNodeRect); // Moves the node up or down
|
|
97
|
+
|
|
98
|
+
var moveNode = (0, _useMoveNode["default"])({
|
|
99
|
+
position: position,
|
|
100
|
+
draggedNode: draggedNode,
|
|
101
|
+
getNodeStyle: getNodeStyle
|
|
102
|
+
});
|
|
99
103
|
var setTargetNode = (0, _react.useCallback)(function (list, node) {
|
|
100
104
|
var _node = _slicedToArray(node, 5),
|
|
101
105
|
nodeIndex = _node[4];
|
|
@@ -161,14 +165,14 @@ var useDragEffect = function useDragEffect(props) {
|
|
|
161
165
|
var updateTargetNode = (0, _react.useCallback)(function () {
|
|
162
166
|
if (!draggedNode) return;
|
|
163
167
|
var prevTargetNode = targetNodeRef.current; // The last updated node
|
|
164
|
-
// Dragging outside the list
|
|
168
|
+
// Dragging outside the origin list
|
|
165
169
|
|
|
166
170
|
if (prevTargetNode && prevTargetNode.list === draggedNode.list && targetList !== draggedNode.list) {
|
|
167
171
|
moveNode({
|
|
168
172
|
list: prevTargetNode.list,
|
|
169
173
|
startNode: prevTargetNode.node,
|
|
170
|
-
|
|
171
|
-
|
|
174
|
+
direction: 'down',
|
|
175
|
+
destination: 'end'
|
|
172
176
|
});
|
|
173
177
|
clearTargetNode();
|
|
174
178
|
} // Dragging outside another list
|
|
@@ -178,13 +182,13 @@ var useDragEffect = function useDragEffect(props) {
|
|
|
178
182
|
moveNode({
|
|
179
183
|
list: prevTargetNode.list,
|
|
180
184
|
startNode: prevTargetNode.node,
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
185
|
+
direction: 'down',
|
|
186
|
+
destination: 'end',
|
|
187
|
+
isAnotherList: true
|
|
184
188
|
});
|
|
185
189
|
removeBlankNode();
|
|
186
190
|
clearTargetNode();
|
|
187
|
-
} // Dragging inside the list
|
|
191
|
+
} // Dragging inside the origin list
|
|
188
192
|
|
|
189
193
|
|
|
190
194
|
if (!prevTargetNode && targetList === draggedNode.list) {
|
|
@@ -193,7 +197,8 @@ var useDragEffect = function useDragEffect(props) {
|
|
|
193
197
|
var node = moveNode({
|
|
194
198
|
list: targetList,
|
|
195
199
|
startNode: tail,
|
|
196
|
-
|
|
200
|
+
direction: 'up',
|
|
201
|
+
destination: 'cursor'
|
|
197
202
|
});
|
|
198
203
|
setTargetNode(targetList, node);
|
|
199
204
|
return;
|
|
@@ -208,13 +213,14 @@ var useDragEffect = function useDragEffect(props) {
|
|
|
208
213
|
var _node2 = moveNode({
|
|
209
214
|
list: targetList,
|
|
210
215
|
startNode: _tail,
|
|
211
|
-
|
|
212
|
-
|
|
216
|
+
direction: 'up',
|
|
217
|
+
destination: 'cursor',
|
|
218
|
+
isAnotherList: true
|
|
213
219
|
});
|
|
214
220
|
|
|
215
221
|
setTargetNode(targetList, _node2);
|
|
216
222
|
return;
|
|
217
|
-
} // Dragging in the
|
|
223
|
+
} // Dragging in the origin list
|
|
218
224
|
|
|
219
225
|
|
|
220
226
|
if (prevTargetNode && prevTargetNode.list === draggedNode.list && targetList === draggedNode.list) {
|
|
@@ -242,7 +248,8 @@ var useDragEffect = function useDragEffect(props) {
|
|
|
242
248
|
startNode: createEmptyNode({
|
|
243
249
|
prev: _tail2
|
|
244
250
|
}),
|
|
245
|
-
|
|
251
|
+
direction: 'up',
|
|
252
|
+
destination: 'cursor'
|
|
246
253
|
});
|
|
247
254
|
|
|
248
255
|
setTargetNode(targetList, _node4);
|
|
@@ -255,7 +262,8 @@ var useDragEffect = function useDragEffect(props) {
|
|
|
255
262
|
startNode: createEmptyNode({
|
|
256
263
|
next: head
|
|
257
264
|
}),
|
|
258
|
-
|
|
265
|
+
direction: 'down',
|
|
266
|
+
destination: 'cursor'
|
|
259
267
|
});
|
|
260
268
|
|
|
261
269
|
setTargetNode(targetList, _node5);
|
|
@@ -265,18 +273,20 @@ var useDragEffect = function useDragEffect(props) {
|
|
|
265
273
|
}
|
|
266
274
|
|
|
267
275
|
var prevTargetNodeRect = (0, _getNodeRect["default"])(prevTargetNode.node[2]);
|
|
268
|
-
var
|
|
276
|
+
var startRectProp = targetList.horizontal ? 'left' : 'top';
|
|
269
277
|
if (!position || !prevTargetNodeRect) return;
|
|
270
|
-
var isMoveUp = position[axis] < prevTargetNodeRect[
|
|
278
|
+
var isMoveUp = position[axis] < prevTargetNodeRect[startRectProp];
|
|
271
279
|
|
|
272
280
|
var _node3 = isMoveUp ? moveNode({
|
|
273
281
|
list: targetList,
|
|
274
282
|
startNode: prevTargetNode.node,
|
|
275
|
-
|
|
283
|
+
direction: 'up',
|
|
284
|
+
destination: 'cursor'
|
|
276
285
|
}) : moveNode({
|
|
277
286
|
list: targetList,
|
|
278
287
|
startNode: prevTargetNode.node,
|
|
279
|
-
|
|
288
|
+
direction: 'down',
|
|
289
|
+
destination: 'cursor'
|
|
280
290
|
});
|
|
281
291
|
|
|
282
292
|
setTargetNode(targetList, _node3);
|
|
@@ -289,22 +299,24 @@ var useDragEffect = function useDragEffect(props) {
|
|
|
289
299
|
|
|
290
300
|
var _prevTargetNodeRect = (0, _getNodeRect["default"])(prevTargetNode.node[2]);
|
|
291
301
|
|
|
292
|
-
var
|
|
302
|
+
var _startRectProp = targetList.horizontal ? 'left' : 'top';
|
|
293
303
|
|
|
294
304
|
if (!position || !_prevTargetNodeRect) return;
|
|
295
305
|
|
|
296
|
-
var _isMoveUp = position[_axis] < _prevTargetNodeRect[
|
|
306
|
+
var _isMoveUp = position[_axis] < _prevTargetNodeRect[_startRectProp];
|
|
297
307
|
|
|
298
308
|
var _node6 = _isMoveUp ? moveNode({
|
|
299
309
|
list: targetList,
|
|
300
310
|
startNode: prevTargetNode.node,
|
|
301
|
-
|
|
302
|
-
|
|
311
|
+
direction: 'up',
|
|
312
|
+
destination: 'cursor',
|
|
313
|
+
isAnotherList: true
|
|
303
314
|
}) : moveNode({
|
|
304
315
|
list: targetList,
|
|
305
316
|
startNode: prevTargetNode.node,
|
|
306
|
-
|
|
307
|
-
|
|
317
|
+
direction: 'down',
|
|
318
|
+
destination: 'cursor',
|
|
319
|
+
isAnotherList: true
|
|
308
320
|
});
|
|
309
321
|
|
|
310
322
|
setTargetNode(targetList, _node6);
|
|
@@ -320,7 +332,7 @@ var useDragEffect = function useDragEffect(props) {
|
|
|
320
332
|
throttledUpdateTargetNode = _useThrottle2[0];
|
|
321
333
|
|
|
322
334
|
(0, _useEvent["default"])(targetList ? targetList.ref : undefined, 'scroll', throttledUpdateTargetNode);
|
|
323
|
-
(0, _useEvent["default"])(window, 'scroll', throttledUpdateTargetNode); // Reset styles of the nodes when the dragged node was dropped
|
|
335
|
+
(0, _useEvent["default"])(window, 'scroll', throttledUpdateTargetNode); // Reset styles of the affected nodes when the dragged node was dropped
|
|
324
336
|
|
|
325
337
|
(0, _react.useEffect)(function () {
|
|
326
338
|
if (!draggedNode) return function () {};
|
|
@@ -329,94 +341,98 @@ var useDragEffect = function useDragEffect(props) {
|
|
|
329
341
|
draggedNodeIndex = _draggedNode$node2[4];
|
|
330
342
|
|
|
331
343
|
return function () {
|
|
332
|
-
var targetNode = targetNodeRef.current; // If the dragged node was
|
|
333
|
-
// starting at the tail and ending with the dragged node.
|
|
334
|
-
|
|
335
|
-
if (targetNode
|
|
336
|
-
var
|
|
337
|
-
|
|
338
|
-
if (
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
344
|
+
var targetNode = targetNodeRef.current; // If the dragged node was outside the origin list, reset the styles for the nodes,
|
|
345
|
+
// starting at the tail and ending with the dragged node in the origin list.
|
|
346
|
+
|
|
347
|
+
if (!targetNode || targetNode.list !== draggedNode.list) {
|
|
348
|
+
var tail = draggedNode.list.getTail();
|
|
349
|
+
|
|
350
|
+
if (tail) {
|
|
351
|
+
var node = tail;
|
|
352
|
+
|
|
353
|
+
while (true) {
|
|
354
|
+
var _node7 = node,
|
|
355
|
+
_node8 = _slicedToArray(_node7, 5),
|
|
356
|
+
prev = _node8[0],
|
|
357
|
+
nodeSetStyle = _node8[3],
|
|
358
|
+
nodeIndex = _node8[4];
|
|
359
|
+
|
|
360
|
+
nodeSetStyle({});
|
|
361
|
+
if (!prev || nodeIndex <= draggedNodeIndex) break;
|
|
362
|
+
node = prev;
|
|
363
|
+
}
|
|
351
364
|
}
|
|
352
|
-
} // If the dragged node was
|
|
353
|
-
// starting at the tail and ending with the dragged node.
|
|
354
|
-
|
|
365
|
+
} // If the dragged node was inside another list, reset the styles for the nodes,
|
|
366
|
+
// starting at the tail and ending with the dragged node in the target list.
|
|
355
367
|
|
|
356
|
-
var tail = draggedNode.list.getTail();
|
|
357
368
|
|
|
358
|
-
if (
|
|
359
|
-
var
|
|
360
|
-
|
|
361
|
-
while (true) {
|
|
362
|
-
var _node10 = _node9,
|
|
363
|
-
_node11 = _slicedToArray(_node10, 5),
|
|
364
|
-
_prev = _node11[0],
|
|
365
|
-
_nodeSetStyle = _node11[3],
|
|
366
|
-
_nodeIndex = _node11[4];
|
|
367
|
-
|
|
368
|
-
_nodeSetStyle({});
|
|
369
|
-
|
|
370
|
-
if (!_prev || _nodeIndex <= draggedNodeIndex) break;
|
|
371
|
-
_node9 = _prev;
|
|
372
|
-
}
|
|
373
|
-
}
|
|
374
|
-
|
|
375
|
-
if (!targetNode) return;
|
|
369
|
+
if (targetNode && targetNode.list !== draggedNode.list) {
|
|
370
|
+
var _tail3 = targetNode.list.getTail();
|
|
376
371
|
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
targetNodeIndex = _targetNode$node[4];
|
|
372
|
+
var _targetNode$node = _slicedToArray(targetNode.node, 5),
|
|
373
|
+
targetNodeIndex = _targetNode$node[4];
|
|
380
374
|
|
|
381
|
-
|
|
382
|
-
|
|
375
|
+
if (_tail3) {
|
|
376
|
+
var _node9 = _tail3;
|
|
383
377
|
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
378
|
+
while (true) {
|
|
379
|
+
var _node10 = _node9,
|
|
380
|
+
_node11 = _slicedToArray(_node10, 5),
|
|
381
|
+
_prev = _node11[0],
|
|
382
|
+
_nodeSetStyle = _node11[3],
|
|
383
|
+
_nodeIndex = _node11[4];
|
|
390
384
|
|
|
391
|
-
|
|
385
|
+
_nodeSetStyle({});
|
|
392
386
|
|
|
393
|
-
|
|
394
|
-
|
|
387
|
+
if (!_prev || _nodeIndex <= targetNodeIndex) break;
|
|
388
|
+
_node9 = _prev;
|
|
389
|
+
}
|
|
395
390
|
}
|
|
396
|
-
}
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
391
|
+
} // If the dragged node was moved inside the origin list, reset the styles for the nodes,
|
|
392
|
+
// starting with target node and ending with the dragged node.
|
|
393
|
+
|
|
394
|
+
|
|
395
|
+
if (targetNode && targetNode.list === draggedNode.list) {
|
|
396
|
+
var _targetNode$node2 = _slicedToArray(targetNode.node, 5),
|
|
397
|
+
targetNodeSetStyle = _targetNode$node2[3],
|
|
398
|
+
_targetNodeIndex = _targetNode$node2[4];
|
|
399
|
+
|
|
400
|
+
if (_targetNodeIndex > draggedNodeIndex) {
|
|
401
|
+
var _node12 = targetNode.node;
|
|
402
|
+
|
|
403
|
+
while (true) {
|
|
404
|
+
var _node13 = _node12,
|
|
405
|
+
_node14 = _slicedToArray(_node13, 5),
|
|
406
|
+
_prev2 = _node14[0],
|
|
407
|
+
_nodeSetStyle2 = _node14[3],
|
|
408
|
+
_nodeIndex2 = _node14[4];
|
|
409
|
+
|
|
410
|
+
_nodeSetStyle2({});
|
|
411
|
+
|
|
412
|
+
if (!_prev2 || _nodeIndex2 <= draggedNodeIndex) break;
|
|
413
|
+
_node12 = _prev2;
|
|
414
|
+
}
|
|
415
|
+
} else if (_targetNodeIndex < draggedNodeIndex) {
|
|
416
|
+
var _node15 = targetNode.node;
|
|
417
|
+
|
|
418
|
+
while (true) {
|
|
419
|
+
var _node16 = _node15,
|
|
420
|
+
_node17 = _slicedToArray(_node16, 5),
|
|
421
|
+
next = _node17[1],
|
|
422
|
+
_nodeSetStyle3 = _node17[3],
|
|
423
|
+
_nodeIndex3 = _node17[4];
|
|
424
|
+
|
|
425
|
+
_nodeSetStyle3({});
|
|
426
|
+
|
|
427
|
+
if (!next || _nodeIndex3 >= draggedNodeIndex) break;
|
|
428
|
+
_node15 = next;
|
|
429
|
+
}
|
|
430
|
+
} else if (_targetNodeIndex === draggedNodeIndex) {
|
|
431
|
+
targetNodeSetStyle({});
|
|
412
432
|
}
|
|
413
433
|
}
|
|
414
|
-
|
|
415
|
-
if (targetNodeIndex === draggedNodeIndex) {
|
|
416
|
-
targetNodeSetStyle({});
|
|
417
|
-
}
|
|
418
434
|
};
|
|
419
|
-
}, [draggedNode]); // Update the position of the mounted nodes
|
|
435
|
+
}, [draggedNode]); // Update the position of the newly mounted nodes in the origin list (used in the virtual list)
|
|
420
436
|
|
|
421
437
|
(0, _react.useEffect)(function () {
|
|
422
438
|
if (!draggedNode) return function () {};
|
|
@@ -427,29 +443,27 @@ var useDragEffect = function useDragEffect(props) {
|
|
|
427
443
|
var update = function update(nodeProps) {
|
|
428
444
|
var setStyle = nodeProps.setStyle,
|
|
429
445
|
index = nodeProps.index;
|
|
430
|
-
var targetNode = targetNodeRef.current; //
|
|
431
|
-
|
|
432
|
-
if ((!targetNodeRef.current || targetNodeRef.current.list !== draggedNode.list) && index > draggedNodeIndex) {
|
|
433
|
-
setStyle(getNodeStyle('up', draggedNode.list.horizontal));
|
|
434
|
-
return;
|
|
435
|
-
}
|
|
436
|
-
|
|
437
|
-
if (!targetNode || !targetNode.node) return;
|
|
438
|
-
|
|
439
|
-
var _targetNode$node2 = _slicedToArray(targetNode.node, 5),
|
|
440
|
-
targetNodeIndex = _targetNode$node2[4]; // If the dragged node was mounted
|
|
441
|
-
|
|
446
|
+
var targetNode = targetNodeRef.current; // Set the hidden style, if the mounted node is the dragged node
|
|
442
447
|
|
|
443
448
|
if (index === draggedNodeIndex) {
|
|
444
449
|
setStyle(HIDDEN_NODE_STYLE);
|
|
445
450
|
return;
|
|
446
|
-
} // If the node
|
|
451
|
+
} // If the dragged node is inside the origin list
|
|
452
|
+
|
|
447
453
|
|
|
454
|
+
if (targetNode && targetNode.list === draggedNode.list) {
|
|
455
|
+
// Move the mounted node up/down, if it is located between the dragged and target node
|
|
456
|
+
var _targetNode$node3 = _slicedToArray(targetNode.node, 5),
|
|
457
|
+
targetNodeIndex = _targetNode$node3[4];
|
|
448
458
|
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
459
|
+
if (index > draggedNodeIndex && index < targetNodeIndex) {
|
|
460
|
+
setStyle(getNodeStyle('up', targetNode.list.horizontal));
|
|
461
|
+
} else if (index < draggedNodeIndex && index > targetNodeIndex) {
|
|
462
|
+
setStyle(getNodeStyle('down', targetNode.list.horizontal));
|
|
463
|
+
}
|
|
464
|
+
} else if (index > draggedNodeIndex) {
|
|
465
|
+
// Otherwise, move the mounted node up, if it is located below the dragged node
|
|
466
|
+
setStyle(getNodeStyle('up', draggedNode.list.horizontal));
|
|
453
467
|
}
|
|
454
468
|
};
|
|
455
469
|
|
|
@@ -457,7 +471,8 @@ var useDragEffect = function useDragEffect(props) {
|
|
|
457
471
|
return function () {
|
|
458
472
|
return draggedNode.list.removeListener(update);
|
|
459
473
|
};
|
|
460
|
-
}, [draggedNode, getNodeStyle]);
|
|
474
|
+
}, [draggedNode, getNodeStyle]); // Update the position of the newly mounted nodes in the target list (used in the virtual list)
|
|
475
|
+
|
|
461
476
|
(0, _react.useEffect)(function () {
|
|
462
477
|
if (!draggedNode || !targetList || targetList === draggedNode.list) {
|
|
463
478
|
return function () {};
|
|
@@ -469,11 +484,13 @@ var useDragEffect = function useDragEffect(props) {
|
|
|
469
484
|
var targetNode = targetNodeRef.current;
|
|
470
485
|
if (!targetNode) return;
|
|
471
486
|
|
|
472
|
-
var _targetNode$
|
|
473
|
-
targetNodeIndex = _targetNode$
|
|
487
|
+
var _targetNode$node4 = _slicedToArray(targetNode.node, 5),
|
|
488
|
+
targetNodeIndex = _targetNode$node4[4];
|
|
474
489
|
|
|
475
|
-
if (index
|
|
476
|
-
|
|
490
|
+
if (index >= targetNodeIndex) {
|
|
491
|
+
// Move the mounted node down, if it is located below the target node or if it is the target node
|
|
492
|
+
setStyle(getNodeStyle('down', targetList.horizontal));
|
|
493
|
+
}
|
|
477
494
|
};
|
|
478
495
|
|
|
479
496
|
targetList.addListener(update);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/useDragEffect.ts"],"names":["HIDDEN_NODE_STYLE","opacity","pointerEvents","createEmptyNode","prev","next","current","useDragEffect","props","draggedNode","cursorPosition","listStoreRef","onDragEnd","targetRef","targetNodeRef","onDragEndRef","initDraggedNodeRect","node","undefined","initDraggedNodeListScrollOffset","list","ref","position","x","y","initWidth","initHeight","getNodeStyle","targetList","moveNode","setTargetNode","nodeIndex","id","index","clearTargetNode","getDraggedNodePos","initX","initY","initScrollLeft","initScrollTop","scrollLeft","scrollTop","getDraggedNodePosRef","draggedNodeSetStyle","removeBlankNode","updateTargetNode","prevTargetNode","startNode","type","untilTheEnd","insideAnotherList","tail","getTail","axis","horizontal","prevTargetNodeRef","draggedNodePos","isDraggingUp","head","getHead","prevTargetNodeRect","rectProp","isMoveUp","throttledUpdateTargetNode","window","draggedNodeIndex","targetNode","nodeSetStyle","targetNodeSetStyle","targetNodeIndex","update","nodeProps","setStyle","addListener","removeListener","target","dragged"],"mappings":";;;;;;;AACA;;AAQA;;AACA;;AAGA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AAEA;;;;;;;;;;;;;;;;AA8BA,IAAMA,iBAAgC,GAAG;AACvCC,EAAAA,OAAO,EAAE,CAD8B;AAEvCC,EAAAA,aAAa,EAAE;AAFwB,CAAzC;;AAKA,IAAMC,eAAe,GAAG,SAAlBA,eAAkB;AAAA,uBACtBC,IADsB;AAAA,MACtBA,IADsB,0BACf,IADe;AAAA,uBAEtBC,IAFsB;AAAA,MAEtBA,IAFsB,0BAEf,IAFe;AAAA,SAMJ,CAACD,IAAD,EAAOC,IAAP,EAAa;AAAEC,IAAAA,OAAO,EAAE;AAAX,GAAb,EAAgC,YAAM,CAAE,CAAxC,EAA0C,CAAC,CAA3C,CANI;AAAA,CAAxB;AAQA;;;AAEA,IAAMC,aAAa,GAAG,SAAhBA,aAAgB,CAACC,KAAD,EAA+B;AACnD,MAAQC,WAAR,GAAiED,KAAjE,CAAQC,WAAR;AAAA,MAAqBC,cAArB,GAAiEF,KAAjE,CAAqBE,cAArB;AAAA,MAAqCC,YAArC,GAAiEH,KAAjE,CAAqCG,YAArC;AAAA,MAAmDC,SAAnD,GAAiEJ,KAAjE,CAAmDI,SAAnD;AAEA,MAAMC,SAAS,GAAG,mBAA4B,IAA5B,CAAlB;AACA,MAAMC,aAAa,GAAG,mBAA0BL,WAA1B,CAAtB;AAEA,wBAAU,YAAM;AACdK,IAAAA,aAAa,CAACR,OAAd,GAAwBG,WAAxB;AACD,GAFD,EAEG,CAACA,WAAD,CAFH;AAIA,MAAMM,YAAY,GAAG,mBAAOH,SAAP,CAArB;AACA,wBAAU,YAAM;AACdG,IAAAA,YAAY,CAACT,OAAb,GAAuBM,SAAvB;AACD,GAFD,EAEG,CAACA,SAAD,CAFH,EAXmD,CAenD;AACA;;AACA,MAAMI,mBAAmB,GAAG,6BAC1BP,WAAW,GAAGA,WAAW,CAACQ,IAAZ,CAAiB,CAAjB,CAAH,GAAyBC,SADV,CAA5B,CAjBmD,CAqBnD;AACA;AACA;;AACA,MAAMC,+BAA+B,GAAG,qCACtCV,WAAW,GAAGA,WAAW,CAACW,IAAZ,CAAiBC,GAApB,GAA0BH,SADC,CAAxC,CAxBmD,CA4BnD;;AACA,MAAMI,QAAQ,GAAG,oBAAQ,YAAM;AAC7B,QAAI,CAACb,WAAD,IAAgB,CAACO,mBAArB,EAA0C,OAAO,IAAP;AAC1C,QAAQO,CAAR,GAAiBb,cAAjB,CAAQa,CAAR;AAAA,QAAWC,CAAX,GAAiBd,cAAjB,CAAWc,CAAX;AACA,QAAQC,SAAR,GAAkCT,mBAAlC,CAAQS,SAAR;AAAA,QAAmBC,UAAnB,GAAkCV,mBAAlC,CAAmBU,UAAnB;AACA,WAAO;AACLH,MAAAA,CAAC,EAAEA,CAAC,GAAGd,WAAW,CAACa,QAAZ,CAAqBC,CAAzB,GAA6BE,SAAS,GAAG,CADvC;AAELD,MAAAA,CAAC,EAAEA,CAAC,GAAGf,WAAW,CAACa,QAAZ,CAAqBE,CAAzB,GAA6BE,UAAU,GAAG;AAFxC,KAAP;AAID,GARgB,EAQd,CAAChB,cAAD,EAAiBD,WAAjB,EAA8BO,mBAA9B,CARc,CAAjB,CA7BmD,CAuCnD;;AACA,MAAMW,YAAY,GAAG,iCAAgBX,mBAAhB,CAArB,CAxCmD,CA0CnD;;AACA,MAAMY,UAAU,GAAG,+BAAcN,QAAd,EAAwBX,YAAxB,CAAnB;AAEA,MAAMkB,QAAQ,GAAG,6BAAYP,QAAZ,EAAsBb,WAAtB,EAAmCkB,YAAnC,CAAjB;AAEA,MAAMG,aAAa,GAAG,wBAAY,UAACV,IAAD,EAAiBH,IAAjB,EAAwC;AACxE,+BAA4BA,IAA5B;AAAA,QAAec,SAAf;;AACAjB,IAAAA,aAAa,CAACR,OAAd,GAAwB;AAAEc,MAAAA,IAAI,EAAJA,IAAF;AAAQH,MAAAA,IAAI,EAAJA;AAAR,KAAxB;AACAJ,IAAAA,SAAS,CAACP,OAAV,GAAoB;AAAE0B,MAAAA,EAAE,EAAEZ,IAAI,CAACY,EAAX;AAAeC,MAAAA,KAAK,EAAEF;AAAtB,KAApB;AACD,GAJqB,EAInB,EAJmB,CAAtB;AAMA,MAAMG,eAAe,GAAG,wBAAY,YAAM;AACxCpB,IAAAA,aAAa,CAACR,OAAd,GAAwB,IAAxB;AACAO,IAAAA,SAAS,CAACP,OAAV,GAAoB,IAApB;AACD,GAHuB,EAGrB,EAHqB,CAAxB,CArDmD,CA0DnD;;AACA,MAAM6B,iBAAiB,GAAG,wBAAY,YAAM;AAC1C,QACE,CAACP,UAAD,IACA,CAACA,UAAU,CAACP,GAAX,CAAef,OADhB,IAEA,CAACU,mBAFD,IAGA,CAACG,+BAJH,EAKE;AACA,aAAO,IAAP;AACD;;AACD,QAAQiB,KAAR,GAAgDpB,mBAAhD,CAAQoB,KAAR;AAAA,QAAeC,KAAf,GAAgDrB,mBAAhD,CAAeqB,KAAf;AAAA,QAAsBZ,SAAtB,GAAgDT,mBAAhD,CAAsBS,SAAtB;AAAA,QAAiCC,UAAjC,GAAgDV,mBAAhD,CAAiCU,UAAjC;AACA,QAAQY,cAAR,GAA0CnB,+BAA1C,CAAQmB,cAAR;AAAA,QAAwBC,aAAxB,GAA0CpB,+BAA1C,CAAwBoB,aAAxB;;AACA,4BAAkC,mCAAiBX,UAAU,CAACP,GAAX,CAAef,OAAhC,CAAlC;AAAA,QAAQkC,UAAR,qBAAQA,UAAR;AAAA,QAAoBC,SAApB,qBAAoBA,SAApB;;AACA,WAAO;AACLlB,MAAAA,CAAC,EAAEa,KAAK,GAAGX,SAAS,GAAG,CAApB,GAAwBa,cAAxB,GAAyCE,UADvC;AAELhB,MAAAA,CAAC,EAAEa,KAAK,GAAGX,UAAU,GAAG,CAArB,GAAyBa,aAAzB,GAAyCE;AAFvC,KAAP;AAID,GAhByB,EAgBvB,CAACtB,+BAAD,EAAkCH,mBAAlC,EAAuDY,UAAvD,CAhBuB,CAA1B;AAkBA,MAAMc,oBAAoB,GAAG,mBAAOP,iBAAP,CAA7B;AACA,wBAAU,YAAM;AACdO,IAAAA,oBAAoB,CAACpC,OAArB,GAA+B6B,iBAA/B;AACD,GAFD,EAEG,CAACA,iBAAD,CAFH,EA9EmD,CAkFnD;;AACA,wBAAU,YAAM;AACd,QAAI,CAAC1B,WAAL,EAAkB,OAAO,YAAM,CAAE,CAAf;;AAClB,2CAAoCA,WAAW,CAACQ,IAAhD;AAAA,QAAa0B,mBAAb;;AACAA,IAAAA,mBAAmB,CAAC3C,iBAAD,CAAnB;AACA,WAAO;AAAA,aAAM2C,mBAAmB,CAAC,EAAD,CAAzB;AAAA,KAAP;AACD,GALD,EAKG,CAAClC,WAAD,CALH,EAnFmD,CA0FnD;AACA;;AACA,MAAMmC,eAAe,GAAG,8BAAa;AACnCnC,IAAAA,WAAW,EAAXA,WADmC;AAEnCmB,IAAAA,UAAU,EAAVA,UAFmC;AAGnCZ,IAAAA,mBAAmB,EAAnBA;AAHmC,GAAb,CAAxB;AAMA,MAAM6B,gBAAgB,GAAG,wBAAY,YAAM;AACzC,QAAI,CAACpC,WAAL,EAAkB;AAClB,QAAMqC,cAAc,GAAGhC,aAAa,CAACR,OAArC,CAFyC,CAEK;AAE9C;;AACA,QACEwC,cAAc,IACdA,cAAc,CAAC1B,IAAf,KAAwBX,WAAW,CAACW,IADpC,IAEAQ,UAAU,KAAKnB,WAAW,CAACW,IAH7B,EAIE;AACAS,MAAAA,QAAQ,CAAC;AACPT,QAAAA,IAAI,EAAE0B,cAAc,CAAC1B,IADd;AAEP2B,QAAAA,SAAS,EAAED,cAAc,CAAC7B,IAFnB;AAGP+B,QAAAA,IAAI,EAAE,MAHC;AAIPC,QAAAA,WAAW,EAAE;AAJN,OAAD,CAAR;AAMAf,MAAAA,eAAe;AAChB,KAjBwC,CAmBzC;;;AACA,QACEY,cAAc,IACdA,cAAc,CAAC1B,IAAf,KAAwBX,WAAW,CAACW,IADpC,IAEAQ,UAAU,KAAKkB,cAAc,CAAC1B,IAHhC,EAIE;AACAS,MAAAA,QAAQ,CAAC;AACPT,QAAAA,IAAI,EAAE0B,cAAc,CAAC1B,IADd;AAEP2B,QAAAA,SAAS,EAAED,cAAc,CAAC7B,IAFnB;AAGP+B,QAAAA,IAAI,EAAE,MAHC;AAIPC,QAAAA,WAAW,EAAE,IAJN;AAKPC,QAAAA,iBAAiB,EAAE;AALZ,OAAD,CAAR;AAOAN,MAAAA,eAAe;AACfV,MAAAA,eAAe;AAChB,KAlCwC,CAoCzC;;;AACA,QAAI,CAACY,cAAD,IAAmBlB,UAAU,KAAKnB,WAAW,CAACW,IAAlD,EAAwD;AACtD,UAAM+B,IAAI,GAAGvB,UAAU,CAACwB,OAAX,EAAb;AACA,UAAI,CAACD,IAAL,EAAW;AACX,UAAMlC,IAAI,GAAGY,QAAQ,CAAC;AACpBT,QAAAA,IAAI,EAAEQ,UADc;AAEpBmB,QAAAA,SAAS,EAAEI,IAFS;AAGpBH,QAAAA,IAAI,EAAE;AAHc,OAAD,CAArB;AAKAlB,MAAAA,aAAa,CAACF,UAAD,EAAaX,IAAb,CAAb;AACA;AACD,KA/CwC,CAiDzC;;;AACA,QACEW,UAAU,IACVA,UAAU,KAAKnB,WAAW,CAACW,IAD3B,KAEC,CAAC0B,cAAD,IAAmBA,cAAc,CAAC1B,IAAf,KAAwBQ,UAF5C,CADF,EAIE;AACA,UAAMuB,KAAI,GAAGvB,UAAU,CAACwB,OAAX,EAAb;;AACA,UAAI,CAACD,KAAL,EAAW;;AACX,UAAMlC,MAAI,GAAGY,QAAQ,CAAC;AACpBT,QAAAA,IAAI,EAAEQ,UADc;AAEpBmB,QAAAA,SAAS,EAAEI,KAFS;AAGpBH,QAAAA,IAAI,EAAE,IAHc;AAIpBE,QAAAA,iBAAiB,EAAE;AAJC,OAAD,CAArB;;AAMApB,MAAAA,aAAa,CAACF,UAAD,EAAaX,MAAb,CAAb;AACA;AACD,KAjEwC,CAmEzC;;;AACA,QACE6B,cAAc,IACdA,cAAc,CAAC1B,IAAf,KAAwBX,WAAW,CAACW,IADpC,IAEAQ,UAAU,KAAKnB,WAAW,CAACW,IAH7B,EAIE;AACA,UAAMiC,IAAI,GAAGzB,UAAU,CAAC0B,UAAX,GAAwB,GAAxB,GAA8B,GAA3C;;AACA,gDAAmCR,cAAc,CAAC7B,IAAlD;AAAA,UAAWsC,iBAAX;;AACA,UAAI,CAACA,iBAAiB,CAACjD,OAAvB,EAAgC;AAC9B;AACA;AACA;AACA;AACA,YAAMkD,cAAc,GAAGd,oBAAoB,CAACpC,OAArB,EAAvB;AACA,YAAI,CAACgB,QAAD,IAAa,CAACkC,cAAlB,EAAkC;AAClC,YAAMC,YAAY,GAAGnC,QAAQ,CAAC+B,IAAD,CAAR,GAAiBG,cAAc,CAACH,IAAD,CAApD;;AACA,YAAII,YAAJ,EAAkB;AAChB,cAAMN,MAAI,GAAGvB,UAAU,CAACwB,OAAX,EAAb;;AACA,cAAI,CAACD,MAAD,IAAS,CAACA,MAAI,CAAC,CAAD,CAAJ,CAAQ7C,OAAtB,EAA+B;;AAC/B,cAAMW,MAAI,GAAGY,QAAQ,CAAC;AACpBT,YAAAA,IAAI,EAAEQ,UADc;AAEpBmB,YAAAA,SAAS,EAAE5C,eAAe,CAAC;AAAEC,cAAAA,IAAI,EAAE+C;AAAR,aAAD,CAFN;AAGpBH,YAAAA,IAAI,EAAE;AAHc,WAAD,CAArB;;AAKAlB,UAAAA,aAAa,CAACF,UAAD,EAAaX,MAAb,CAAb;AACD,SATD,MASO;AACL,cAAMyC,IAAI,GAAG9B,UAAU,CAAC+B,OAAX,EAAb;AACA,cAAI,CAACD,IAAD,IAAS,CAACA,IAAI,CAAC,CAAD,CAAJ,CAAQpD,OAAtB,EAA+B;;AAC/B,cAAMW,MAAI,GAAGY,QAAQ,CAAC;AACpBT,YAAAA,IAAI,EAAEQ,UADc;AAEpBmB,YAAAA,SAAS,EAAE5C,eAAe,CAAC;AAAEE,cAAAA,IAAI,EAAEqD;AAAR,aAAD,CAFN;AAGpBV,YAAAA,IAAI,EAAE;AAHc,WAAD,CAArB;;AAKAlB,UAAAA,aAAa,CAACF,UAAD,EAAaX,MAAb,CAAb;AACD;;AACD;AACD;;AACD,UAAM2C,kBAAkB,GAAG,6BAAYd,cAAc,CAAC7B,IAAf,CAAoB,CAApB,CAAZ,CAA3B;AACA,UAAM4C,QAAQ,GAAGjC,UAAU,CAAC0B,UAAX,GAAwB,MAAxB,GAAiC,KAAlD;AACA,UAAI,CAAChC,QAAD,IAAa,CAACsC,kBAAlB,EAAsC;AACtC,UAAME,QAAQ,GAAGxC,QAAQ,CAAC+B,IAAD,CAAR,GAAiBO,kBAAkB,CAACC,QAAD,CAApD;;AACA,UAAM5C,MAAI,GAAG6C,QAAQ,GACjBjC,QAAQ,CAAC;AACPT,QAAAA,IAAI,EAAEQ,UADC;AAEPmB,QAAAA,SAAS,EAAED,cAAc,CAAC7B,IAFnB;AAGP+B,QAAAA,IAAI,EAAE;AAHC,OAAD,CADS,GAMjBnB,QAAQ,CAAC;AACPT,QAAAA,IAAI,EAAEQ,UADC;AAEPmB,QAAAA,SAAS,EAAED,cAAc,CAAC7B,IAFnB;AAGP+B,QAAAA,IAAI,EAAE;AAHC,OAAD,CANZ;;AAWAlB,MAAAA,aAAa,CAACF,UAAD,EAAaX,MAAb,CAAb;AACA;AACD,KAzHwC,CA2HzC;;;AACA,QACEW,UAAU,IACVA,UAAU,KAAKnB,WAAW,CAACW,IAD3B,IAEA0B,cAFA,IAGAA,cAAc,CAAC1B,IAAf,KAAwBQ,UAJ1B,EAKE;AACA,UAAMyB,KAAI,GAAGzB,UAAU,CAAC0B,UAAX,GAAwB,GAAxB,GAA8B,GAA3C;;AACA,UAAMM,mBAAkB,GAAG,6BAAYd,cAAc,CAAC7B,IAAf,CAAoB,CAApB,CAAZ,CAA3B;;AACA,UAAM4C,SAAQ,GAAGjC,UAAU,CAAC0B,UAAX,GAAwB,MAAxB,GAAiC,KAAlD;;AACA,UAAI,CAAChC,QAAD,IAAa,CAACsC,mBAAlB,EAAsC;;AACtC,UAAME,SAAQ,GAAGxC,QAAQ,CAAC+B,KAAD,CAAR,GAAiBO,mBAAkB,CAACC,SAAD,CAApD;;AACA,UAAM5C,MAAI,GAAG6C,SAAQ,GACjBjC,QAAQ,CAAC;AACPT,QAAAA,IAAI,EAAEQ,UADC;AAEPmB,QAAAA,SAAS,EAAED,cAAc,CAAC7B,IAFnB;AAGP+B,QAAAA,IAAI,EAAE,IAHC;AAIPE,QAAAA,iBAAiB,EAAE;AAJZ,OAAD,CADS,GAOjBrB,QAAQ,CAAC;AACPT,QAAAA,IAAI,EAAEQ,UADC;AAEPmB,QAAAA,SAAS,EAAED,cAAc,CAAC7B,IAFnB;AAGP+B,QAAAA,IAAI,EAAE,MAHC;AAIPE,QAAAA,iBAAiB,EAAE;AAJZ,OAAD,CAPZ;;AAaApB,MAAAA,aAAa,CAACF,UAAD,EAAaX,MAAb,CAAb;AACD;AACF,GAtJwB,EAsJtB,CACDR,WADC,EAEDmB,UAFC,EAGDC,QAHC,EAIDK,eAJC,EAKDU,eALC,EAMDd,aANC,EAODR,QAPC,CAtJsB,CAAzB,CAlGmD,CAkQnD;;AACA,wBAAU,YAAM;AACduB,IAAAA,gBAAgB;AACjB,GAFD,EAEG,CAACA,gBAAD,CAFH,EAnQmD,CAuQnD;;AACA,qBAAoC,8BAAYA,gBAAZ,EAA8B,GAA9B,CAApC;AAAA;AAAA,MAAOkB,yBAAP;;AACA,4BACGnC,UAAU,GAAGA,UAAU,CAACP,GAAd,GAAoBH,SADjC,EAEE,QAFF,EAGE6C,yBAHF;AAKA,4BAASC,MAAT,EAAiB,QAAjB,EAA2BD,yBAA3B,EA9QmD,CAgRnD;;AACA,wBAAU,YAAM;AACd,QAAI,CAACtD,WAAL,EAAkB,OAAO,YAAM,CAAE,CAAf;;AAClB,4CAAmCA,WAAW,CAACQ,IAA/C;AAAA,QAAegD,gBAAf;;AACA,WAAO,YAAM;AACX,UAAMC,UAAU,GAAGpD,aAAa,CAACR,OAAjC,CADW,CAGX;AACA;;AACA,UAAI4D,UAAU,IAAIA,UAAU,CAAC9C,IAAX,KAAoBX,WAAW,CAACW,IAAlD,EAAwD;AACtD,YAAM+B,MAAI,GAAGe,UAAU,CAAC9C,IAAX,CAAgBgC,OAAhB,EAAb;;AACA,YAAI,CAACD,MAAL,EAAW;AACX,YAAIlC,IAAI,GAAGkC,MAAX;;AACA,eAAO,IAAP,EAAa;AACX,uBAA4ClC,IAA5C;AAAA;AAAA,cAAOb,IAAP;AAAA,cAAiB+D,YAAjB;AAAA,cAA+BpC,SAA/B;;AACAoC,UAAAA,YAAY,CAAC,EAAD,CAAZ;AACA,cAAI,CAAC/D,IAAD,IAAS2B,SAAS,IAAIkC,gBAA1B,EAA4C;AAC5ChD,UAAAA,IAAI,GAAGb,IAAP;AACD;AACF,OAfU,CAiBX;AACA;;;AACA,UAAM+C,IAAI,GAAG1C,WAAW,CAACW,IAAZ,CAAiBgC,OAAjB,EAAb;;AACA,UAAI,CAAC,CAACc,UAAD,IAAeA,UAAU,CAAC9C,IAAX,KAAoBX,WAAW,CAACW,IAAhD,KAAyD+B,IAA7D,EAAmE;AACjE,YAAIlC,MAAI,GAAGkC,IAAX;;AACA,eAAO,IAAP,EAAa;AACX,wBAA4ClC,MAA5C;AAAA;AAAA,cAAOb,KAAP;AAAA,cAAiB+D,aAAjB;AAAA,cAA+BpC,UAA/B;;AACAoC,UAAAA,aAAY,CAAC,EAAD,CAAZ;;AACA,cAAI,CAAC/D,KAAD,IAAS2B,UAAS,IAAIkC,gBAA1B,EAA4C;AAC5ChD,UAAAA,MAAI,GAAGb,KAAP;AACD;AACF;;AAED,UAAI,CAAC8D,UAAL,EAAiB;;AACjB,4CAAoDA,UAAU,CAACjD,IAA/D;AAAA,UAAamD,kBAAb;AAAA,UAAiCC,eAAjC;;AACA,UAAIA,eAAe,GAAGJ,gBAAtB,EAAwC;AACtC,YAAMhD,OAAN,GAAeiD,UAAf,CAAMjD,IAAN;;AACA,eAAO,IAAP,EAAa;AACX,wBAA4CA,OAA5C;AAAA;AAAA,cAAOb,MAAP;AAAA,cAAiB+D,cAAjB;AAAA,cAA+BpC,WAA/B;;AACAoC,UAAAA,cAAY,CAAC,EAAD,CAAZ;;AACA,cAAI,CAAC/D,MAAD,IAAS2B,WAAS,GAAGkC,gBAAzB,EAA2C;AAC3ChD,UAAAA,OAAI,GAAGb,MAAP;AACD;AACF;;AACD,UAAIiE,eAAe,GAAGJ,gBAAtB,EAAwC;AACtC,YAAMhD,OAAN,GAAeiD,UAAf,CAAMjD,IAAN;;AACA,eAAO,IAAP,EAAa;AACX,wBAA4CA,OAA5C;AAAA;AAAA,cAASZ,IAAT;AAAA,cAAiB8D,cAAjB;AAAA,cAA+BpC,WAA/B;;AACAoC,UAAAA,cAAY,CAAC,EAAD,CAAZ;;AACA,cAAI,CAAC9D,IAAD,IAAS0B,WAAS,GAAGkC,gBAAzB,EAA2C;AAC3ChD,UAAAA,OAAI,GAAGZ,IAAP;AACD;AACF;;AACD,UAAIgE,eAAe,KAAKJ,gBAAxB,EAA0C;AACxCG,QAAAA,kBAAkB,CAAC,EAAD,CAAlB;AACD;AACF,KArDD;AAsDD,GAzDD,EAyDG,CAAC3D,WAAD,CAzDH,EAjRmD,CA4UnD;;AACA,wBAAU,YAAM;AACd,QAAI,CAACA,WAAL,EAAkB,OAAO,YAAM,CAAE,CAAf;;AAClB,4CAAmCA,WAAW,CAACQ,IAA/C;AAAA,QAAegD,gBAAf;;AACA,QAAMK,MAAM,GAAG,SAATA,MAAS,CAACC,SAAD,EAA0B;AACvC,UAAQC,QAAR,GAA4BD,SAA5B,CAAQC,QAAR;AAAA,UAAkBvC,KAAlB,GAA4BsC,SAA5B,CAAkBtC,KAAlB;AACA,UAAMiC,UAAU,GAAGpD,aAAa,CAACR,OAAjC,CAFuC,CAIvC;;AACA,UACE,CAAC,CAACQ,aAAa,CAACR,OAAf,IACCQ,aAAa,CAACR,OAAd,CAAsBc,IAAtB,KAA+BX,WAAW,CAACW,IAD7C,KAEAa,KAAK,GAAGgC,gBAHV,EAIE;AACAO,QAAAA,QAAQ,CAAC7C,YAAY,CAAC,IAAD,EAAOlB,WAAW,CAACW,IAAZ,CAAiBkC,UAAxB,CAAb,CAAR;AACA;AACD;;AAED,UAAI,CAACY,UAAD,IAAe,CAACA,UAAU,CAACjD,IAA/B,EAAqC;;AACrC,6CAAkCiD,UAAU,CAACjD,IAA7C;AAAA,UAAeoD,eAAf,wBAfuC,CAgBvC;;;AACA,UAAIpC,KAAK,KAAKgC,gBAAd,EAAgC;AAC9BO,QAAAA,QAAQ,CAACxE,iBAAD,CAAR;AACA;AACD,OApBsC,CAqBvC;;;AACA,UAAIiC,KAAK,GAAGgC,gBAAR,IAA4BhC,KAAK,GAAGoC,eAAxC,EAAyD;AACvDG,QAAAA,QAAQ,CAAC7C,YAAY,CAAC,IAAD,EAAOuC,UAAU,CAAC9C,IAAX,CAAgBkC,UAAvB,CAAb,CAAR;AACD,OAFD,MAEO,IAAIrB,KAAK,GAAGgC,gBAAR,IAA4BhC,KAAK,GAAGoC,eAAxC,EAAyD;AAC9DG,QAAAA,QAAQ,CAAC7C,YAAY,CAAC,MAAD,EAASuC,UAAU,CAAC9C,IAAX,CAAgBkC,UAAzB,CAAb,CAAR;AACD;AACF,KA3BD;;AA4BA7C,IAAAA,WAAW,CAACW,IAAZ,CAAiBqD,WAAjB,CAA6BH,MAA7B;AACA,WAAO;AAAA,aAAM7D,WAAW,CAACW,IAAZ,CAAiBsD,cAAjB,CAAgCJ,MAAhC,CAAN;AAAA,KAAP;AACD,GAjCD,EAiCG,CAAC7D,WAAD,EAAckB,YAAd,CAjCH;AAmCA,wBAAU,YAAM;AACd,QAAI,CAAClB,WAAD,IAAgB,CAACmB,UAAjB,IAA+BA,UAAU,KAAKnB,WAAW,CAACW,IAA9D,EAAoE;AAClE,aAAO,YAAM,CAAE,CAAf;AACD;;AACD,QAAMkD,MAAM,GAAG,SAATA,MAAS,CAACC,SAAD,EAA0B;AACvC,UAAQC,QAAR,GAA4BD,SAA5B,CAAQC,QAAR;AAAA,UAAkBvC,KAAlB,GAA4BsC,SAA5B,CAAkBtC,KAAlB;AACA,UAAMiC,UAAU,GAAGpD,aAAa,CAACR,OAAjC;AACA,UAAI,CAAC4D,UAAL,EAAiB;;AACjB,6CAAkCA,UAAU,CAACjD,IAA7C;AAAA,UAAeoD,eAAf;;AACA,UAAIpC,KAAK,GAAGoC,eAAZ,EAA6B;AAC7BG,MAAAA,QAAQ,CAAC7C,YAAY,CAAC,MAAD,EAASC,UAAU,CAAC0B,UAApB,CAAb,CAAR;AACD,KAPD;;AAQA1B,IAAAA,UAAU,CAAC6C,WAAX,CAAuBH,MAAvB;AACA,WAAO;AAAA,aAAM1C,UAAU,CAAC8C,cAAX,CAA0BJ,MAA1B,CAAN;AAAA,KAAP;AACD,GAdD,EAcG,CAAC7D,WAAD,EAAckB,YAAd,EAA4BC,UAA5B,CAdH,EAhXmD,CAgYnD;;AACA,wBAAU,YAAM;AACd,QAAI,CAACnB,WAAL,EAAkB,OAAO,YAAM,CAAE,CAAf;AAClB,WAAO,YAAM;AACX;AACA,UAAMkE,MAAM,GAAG9D,SAAS,CAACP,OAAzB;AACA,UAAI,CAACqE,MAAL,EAAa;;AACb,8CAAmClE,WAAW,CAACQ,IAA/C;AAAA,UAAegD,gBAAf;;AACA,UAAMW,OAAO,GAAG;AAAE5C,QAAAA,EAAE,EAAEvB,WAAW,CAACW,IAAZ,CAAiBY,EAAvB;AAA2BC,QAAAA,KAAK,EAAEgC;AAAlC,OAAhB;AACA,UAAIW,OAAO,CAAC5C,EAAR,KAAe2C,MAAM,CAAC3C,EAAtB,IAA4B4C,OAAO,CAAC3C,KAAR,KAAkB0C,MAAM,CAAC1C,KAAzD,EAAgE;AAChElB,MAAAA,YAAY,CAACT,OAAb,CAAqBsE,OAArB,EAA8BD,MAA9B;AACD,KARD;AASD,GAXD,EAWG,CAAClE,WAAD,CAXH;AAYD,CA7YD;;eA+YeF,a","sourcesContent":["import { Position } from '@os-design/use-drag';\nimport {\n CSSProperties,\n RefObject,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n} from 'react';\nimport useThrottle from '@os-design/use-throttle';\nimport useEvent from '@os-design/use-event';\nimport NodeList, { ExistingNode, Node, NodeProps } from './NodeList';\nimport ListStore from './ListStore';\nimport getElementScroll from './getElementScroll';\nimport useTargetList from './useTargetList';\nimport useInitRect from './useInitRect';\nimport useInitScrollOffset from './useInitScrollOffset';\nimport useGetNodeStyle from './useGetNodeStyle';\n// eslint-disable-next-line import/no-cycle\nimport useMoveNode from './useMoveNode';\nimport getNodeRect from './getNodeRect';\n// eslint-disable-next-line import/no-cycle\nimport useBlankNode from './useBlankNode';\n\nexport interface DraggedNode {\n list: NodeList;\n node: ExistingNode;\n position: Position;\n}\n\ninterface TargetNode {\n list: NodeList;\n node: ExistingNode;\n}\n\nexport interface ItemLocation {\n id: string;\n index: number;\n}\n\nexport type DragEndHandler = (\n dragged: ItemLocation,\n target: ItemLocation\n) => void;\n\ninterface UseDragEffectProps {\n draggedNode: DraggedNode | null;\n cursorPosition: Position;\n listStoreRef: RefObject<ListStore>;\n onDragEnd: DragEndHandler;\n}\n\nconst HIDDEN_NODE_STYLE: CSSProperties = {\n opacity: 0,\n pointerEvents: 'none',\n};\n\nconst createEmptyNode = ({\n prev = null,\n next = null,\n}: {\n prev?: Node;\n next?: Node;\n}): ExistingNode => [prev, next, { current: null }, () => {}, -1];\n\n/* eslint-disable @typescript-eslint/no-explicit-any,no-constant-condition */\n\nconst useDragEffect = (props: UseDragEffectProps) => {\n const { draggedNode, cursorPosition, listStoreRef, onDragEnd } = props;\n\n const targetRef = useRef<ItemLocation | null>(null);\n const targetNodeRef = useRef<TargetNode | null>(draggedNode);\n\n useEffect(() => {\n targetNodeRef.current = draggedNode;\n }, [draggedNode]);\n\n const onDragEndRef = useRef(onDragEnd);\n useEffect(() => {\n onDragEndRef.current = onDragEnd;\n }, [onDragEnd]);\n\n // The initial bounds of the dragged node.\n // We can't read the bounds of the dragged node on the fly because the node can be unmounted in the virtual list.\n const initDraggedNodeRect = useInitRect(\n draggedNode ? draggedNode.node[2] : undefined\n );\n\n // The initial scroll position of the list where the dragged node is located.\n // Used to detect the actual position of the dragged node.\n // The purpose is the same as with initDraggedNodeRect.\n const initDraggedNodeListScrollOffset = useInitScrollOffset(\n draggedNode ? draggedNode.list.ref : undefined\n );\n\n // The central position of the dragged node\n const position = useMemo(() => {\n if (!draggedNode || !initDraggedNodeRect) return null;\n const { x, y } = cursorPosition;\n const { initWidth, initHeight } = initDraggedNodeRect;\n return {\n x: x - draggedNode.position.x + initWidth / 2,\n y: y - draggedNode.position.y + initHeight / 2,\n };\n }, [cursorPosition, draggedNode, initDraggedNodeRect]);\n\n // Returns the style for moving the node in the specified direction\n const getNodeStyle = useGetNodeStyle(initDraggedNodeRect);\n\n // The list in which the cursor is located\n const targetList = useTargetList(position, listStoreRef);\n\n const moveNode = useMoveNode(position, draggedNode, getNodeStyle);\n\n const setTargetNode = useCallback((list: NodeList, node: ExistingNode) => {\n const [, , , , nodeIndex] = node;\n targetNodeRef.current = { list, node };\n targetRef.current = { id: list.id, index: nodeIndex };\n }, []);\n\n const clearTargetNode = useCallback(() => {\n targetNodeRef.current = null;\n targetRef.current = null;\n }, []);\n\n // Returns the central position of the dragged node in the list\n const getDraggedNodePos = useCallback(() => {\n if (\n !targetList ||\n !targetList.ref.current ||\n !initDraggedNodeRect ||\n !initDraggedNodeListScrollOffset\n ) {\n return null;\n }\n const { initX, initY, initWidth, initHeight } = initDraggedNodeRect;\n const { initScrollLeft, initScrollTop } = initDraggedNodeListScrollOffset;\n const { scrollLeft, scrollTop } = getElementScroll(targetList.ref.current);\n return {\n x: initX + initWidth / 2 + initScrollLeft - scrollLeft,\n y: initY + initHeight / 2 + initScrollTop - scrollTop,\n };\n }, [initDraggedNodeListScrollOffset, initDraggedNodeRect, targetList]);\n\n const getDraggedNodePosRef = useRef(getDraggedNodePos);\n useEffect(() => {\n getDraggedNodePosRef.current = getDraggedNodePos;\n }, [getDraggedNodePos]);\n\n // Hide the dragged node\n useEffect(() => {\n if (!draggedNode) return () => {};\n const [, , , draggedNodeSetStyle] = draggedNode.node;\n draggedNodeSetStyle(HIDDEN_NODE_STYLE);\n return () => draggedNodeSetStyle({});\n }, [draggedNode]);\n\n // Append the blank node to the list to increase the height of it.\n // Used when the dragged node is located inside another list.\n const removeBlankNode = useBlankNode({\n draggedNode,\n targetList,\n initDraggedNodeRect,\n });\n\n const updateTargetNode = useCallback(() => {\n if (!draggedNode) return;\n const prevTargetNode = targetNodeRef.current; // The last updated node\n\n // Dragging outside the list\n if (\n prevTargetNode &&\n prevTargetNode.list === draggedNode.list &&\n targetList !== draggedNode.list\n ) {\n moveNode({\n list: prevTargetNode.list,\n startNode: prevTargetNode.node,\n type: 'down',\n untilTheEnd: true,\n });\n clearTargetNode();\n }\n\n // Dragging outside another list\n if (\n prevTargetNode &&\n prevTargetNode.list !== draggedNode.list &&\n targetList !== prevTargetNode.list\n ) {\n moveNode({\n list: prevTargetNode.list,\n startNode: prevTargetNode.node,\n type: 'down',\n untilTheEnd: true,\n insideAnotherList: true,\n });\n removeBlankNode();\n clearTargetNode();\n }\n\n // Dragging inside the list\n if (!prevTargetNode && targetList === draggedNode.list) {\n const tail = targetList.getTail();\n if (!tail) return;\n const node = moveNode({\n list: targetList,\n startNode: tail,\n type: 'up',\n });\n setTargetNode(targetList, node);\n return;\n }\n\n // Dragging inside another list\n if (\n targetList &&\n targetList !== draggedNode.list &&\n (!prevTargetNode || prevTargetNode.list !== targetList)\n ) {\n const tail = targetList.getTail();\n if (!tail) return;\n const node = moveNode({\n list: targetList,\n startNode: tail,\n type: 'up',\n insideAnotherList: true,\n });\n setTargetNode(targetList, node);\n return;\n }\n\n // Dragging in the same list\n if (\n prevTargetNode &&\n prevTargetNode.list === draggedNode.list &&\n targetList === draggedNode.list\n ) {\n const axis = targetList.horizontal ? 'x' : 'y';\n const [, , prevTargetNodeRef, ,] = prevTargetNode.node;\n if (!prevTargetNodeRef.current) {\n // The target node was unmounted. It happens when the virtual list is used.\n // If the cursor is above the dragged node, we need to move the nodes down from the tail to the node where\n // the cursor is located. Otherwise, we need to move the nodes up from the head to the node where the cursor\n // is located.\n const draggedNodePos = getDraggedNodePosRef.current();\n if (!position || !draggedNodePos) return;\n const isDraggingUp = position[axis] < draggedNodePos[axis];\n if (isDraggingUp) {\n const tail = targetList.getTail();\n if (!tail || !tail[2].current) return;\n const node = moveNode({\n list: targetList,\n startNode: createEmptyNode({ prev: tail }),\n type: 'up',\n });\n setTargetNode(targetList, node);\n } else {\n const head = targetList.getHead();\n if (!head || !head[2].current) return;\n const node = moveNode({\n list: targetList,\n startNode: createEmptyNode({ next: head }),\n type: 'down',\n });\n setTargetNode(targetList, node);\n }\n return;\n }\n const prevTargetNodeRect = getNodeRect(prevTargetNode.node[2]);\n const rectProp = targetList.horizontal ? 'left' : 'top';\n if (!position || !prevTargetNodeRect) return;\n const isMoveUp = position[axis] < prevTargetNodeRect[rectProp];\n const node = isMoveUp\n ? moveNode({\n list: targetList,\n startNode: prevTargetNode.node,\n type: 'up',\n })\n : moveNode({\n list: targetList,\n startNode: prevTargetNode.node,\n type: 'down',\n });\n setTargetNode(targetList, node);\n return;\n }\n\n // Dragging in another list\n if (\n targetList &&\n targetList !== draggedNode.list &&\n prevTargetNode &&\n prevTargetNode.list === targetList\n ) {\n const axis = targetList.horizontal ? 'x' : 'y';\n const prevTargetNodeRect = getNodeRect(prevTargetNode.node[2]);\n const rectProp = targetList.horizontal ? 'left' : 'top';\n if (!position || !prevTargetNodeRect) return;\n const isMoveUp = position[axis] < prevTargetNodeRect[rectProp];\n const node = isMoveUp\n ? moveNode({\n list: targetList,\n startNode: prevTargetNode.node,\n type: 'up',\n insideAnotherList: true,\n })\n : moveNode({\n list: targetList,\n startNode: prevTargetNode.node,\n type: 'down',\n insideAnotherList: true,\n });\n setTargetNode(targetList, node);\n }\n }, [\n draggedNode,\n targetList,\n moveNode,\n clearTargetNode,\n removeBlankNode,\n setTargetNode,\n position,\n ]);\n\n // Update the target node if either the position or the target list has been changed\n useEffect(() => {\n updateTargetNode();\n }, [updateTargetNode]);\n\n // Update the target node if the target list has been scrolled\n const [throttledUpdateTargetNode] = useThrottle(updateTargetNode, 100);\n useEvent(\n (targetList ? targetList.ref : undefined) as any,\n 'scroll',\n throttledUpdateTargetNode\n );\n useEvent(window, 'scroll', throttledUpdateTargetNode);\n\n // Reset styles of the nodes when the dragged node was dropped\n useEffect(() => {\n if (!draggedNode) return () => {};\n const [, , , , draggedNodeIndex] = draggedNode.node;\n return () => {\n const targetNode = targetNodeRef.current;\n\n // If the dragged node was inside another list, reset the styles for the nodes,\n // starting at the tail and ending with the dragged node.\n if (targetNode && targetNode.list !== draggedNode.list) {\n const tail = targetNode.list.getTail();\n if (!tail) return;\n let node = tail;\n while (true) {\n const [prev, , , nodeSetStyle, nodeIndex] = node;\n nodeSetStyle({});\n if (!prev || nodeIndex <= draggedNodeIndex) break;\n node = prev;\n }\n }\n\n // If the dragged node was outside the origin list, reset the styles for the nodes,\n // starting at the tail and ending with the dragged node.\n const tail = draggedNode.list.getTail();\n if ((!targetNode || targetNode.list !== draggedNode.list) && tail) {\n let node = tail;\n while (true) {\n const [prev, , , nodeSetStyle, nodeIndex] = node;\n nodeSetStyle({});\n if (!prev || nodeIndex <= draggedNodeIndex) break;\n node = prev;\n }\n }\n\n if (!targetNode) return;\n const [, , , targetNodeSetStyle, targetNodeIndex] = targetNode.node;\n if (targetNodeIndex > draggedNodeIndex) {\n let { node } = targetNode;\n while (true) {\n const [prev, , , nodeSetStyle, nodeIndex] = node;\n nodeSetStyle({});\n if (!prev || nodeIndex < draggedNodeIndex) return;\n node = prev;\n }\n }\n if (targetNodeIndex < draggedNodeIndex) {\n let { node } = targetNode;\n while (true) {\n const [, next, , nodeSetStyle, nodeIndex] = node;\n nodeSetStyle({});\n if (!next || nodeIndex > draggedNodeIndex) return;\n node = next;\n }\n }\n if (targetNodeIndex === draggedNodeIndex) {\n targetNodeSetStyle({});\n }\n };\n }, [draggedNode]);\n\n // Update the position of the mounted nodes between the dragged and target nodes (used in virtual list)\n useEffect(() => {\n if (!draggedNode) return () => {};\n const [, , , , draggedNodeIndex] = draggedNode.node;\n const update = (nodeProps: NodeProps) => {\n const { setStyle, index } = nodeProps;\n const targetNode = targetNodeRef.current;\n\n // If the dragged node outside the origin list\n if (\n (!targetNodeRef.current ||\n targetNodeRef.current.list !== draggedNode.list) &&\n index > draggedNodeIndex\n ) {\n setStyle(getNodeStyle('up', draggedNode.list.horizontal));\n return;\n }\n\n if (!targetNode || !targetNode.node) return;\n const [, , , , targetNodeIndex] = targetNode.node;\n // If the dragged node was mounted\n if (index === draggedNodeIndex) {\n setStyle(HIDDEN_NODE_STYLE);\n return;\n }\n // If the node between the dragged and target nodes was mounted\n if (index > draggedNodeIndex && index < targetNodeIndex) {\n setStyle(getNodeStyle('up', targetNode.list.horizontal));\n } else if (index < draggedNodeIndex && index > targetNodeIndex) {\n setStyle(getNodeStyle('down', targetNode.list.horizontal));\n }\n };\n draggedNode.list.addListener(update);\n return () => draggedNode.list.removeListener(update);\n }, [draggedNode, getNodeStyle]);\n\n useEffect(() => {\n if (!draggedNode || !targetList || targetList === draggedNode.list) {\n return () => {};\n }\n const update = (nodeProps: NodeProps) => {\n const { setStyle, index } = nodeProps;\n const targetNode = targetNodeRef.current;\n if (!targetNode) return;\n const [, , , , targetNodeIndex] = targetNode.node;\n if (index < targetNodeIndex) return;\n setStyle(getNodeStyle('down', targetList.horizontal));\n };\n targetList.addListener(update);\n return () => targetList.removeListener(update);\n }, [draggedNode, getNodeStyle, targetList]);\n\n // Call the onDragEnd callback if the draggedNode was changed to null\n useEffect(() => {\n if (!draggedNode) return () => {};\n return () => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const target = targetRef.current;\n if (!target) return;\n const [, , , , draggedNodeIndex] = draggedNode.node;\n const dragged = { id: draggedNode.list.id, index: draggedNodeIndex };\n if (dragged.id === target.id && dragged.index === target.index) return;\n onDragEndRef.current(dragged, target);\n };\n }, [draggedNode]);\n};\n\nexport default useDragEffect;\n"],"file":"useDragEffect.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/useDragEffect.ts"],"names":["HIDDEN_NODE_STYLE","opacity","pointerEvents","createEmptyNode","prev","next","current","useDragEffect","props","draggedNode","cursorPosition","listStoreRef","onDragEnd","targetRef","targetNodeRef","onDragEndRef","initDraggedNodeRect","node","undefined","initDraggedNodeListScrollOffset","list","ref","position","x","y","initWidth","initHeight","targetList","getNodeStyle","moveNode","setTargetNode","nodeIndex","id","index","clearTargetNode","getDraggedNodePos","initX","initY","initScrollLeft","initScrollTop","scrollLeft","scrollTop","getDraggedNodePosRef","draggedNodeSetStyle","removeBlankNode","updateTargetNode","prevTargetNode","startNode","direction","destination","isAnotherList","tail","getTail","axis","horizontal","prevTargetNodeRef","draggedNodePos","isDraggingUp","head","getHead","prevTargetNodeRect","startRectProp","isMoveUp","throttledUpdateTargetNode","window","draggedNodeIndex","targetNode","nodeSetStyle","targetNodeIndex","targetNodeSetStyle","update","nodeProps","setStyle","addListener","removeListener","target","dragged"],"mappings":"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","sourcesContent":["import { Position } from '@os-design/use-drag';\nimport {\n CSSProperties,\n RefObject,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n} from 'react';\nimport useThrottle from '@os-design/use-throttle';\nimport useEvent from '@os-design/use-event';\nimport NodeList, { ExistingNode, Node, NodeProps } from './NodeList';\nimport ListStore from './ListStore';\nimport getElementScroll from './getElementScroll';\nimport useTargetList from './useTargetList';\nimport useInitRect from './useInitRect';\nimport useInitScrollOffset from './useInitScrollOffset';\nimport useGetNodeStyle from './useGetNodeStyle';\nimport useMoveNode from './useMoveNode';\nimport getNodeRect from './getNodeRect';\nimport useBlankNode from './useBlankNode';\n\nexport interface DraggedNode {\n list: NodeList;\n node: ExistingNode;\n position: Position;\n}\n\ninterface TargetNode {\n list: NodeList;\n node: ExistingNode;\n}\n\nexport interface ItemLocation {\n id: string;\n index: number;\n}\n\nexport type DragEndHandler = (\n dragged: ItemLocation,\n target: ItemLocation\n) => void;\n\ninterface UseDragEffectProps {\n draggedNode: DraggedNode | null;\n cursorPosition: Position;\n listStoreRef: RefObject<ListStore>;\n onDragEnd: DragEndHandler;\n}\n\nconst HIDDEN_NODE_STYLE: CSSProperties = {\n opacity: 0,\n pointerEvents: 'none',\n};\n\nconst createEmptyNode = ({\n prev = null,\n next = null,\n}: {\n prev?: Node;\n next?: Node;\n}): ExistingNode => [prev, next, { current: null }, () => {}, -1];\n\n/* eslint-disable no-constant-condition */\n\nconst useDragEffect = (props: UseDragEffectProps) => {\n const { draggedNode, cursorPosition, listStoreRef, onDragEnd } = props;\n\n const targetRef = useRef<ItemLocation | null>(null);\n const targetNodeRef = useRef<TargetNode | null>(draggedNode);\n\n useEffect(() => {\n targetNodeRef.current = draggedNode;\n }, [draggedNode]);\n\n const onDragEndRef = useRef(onDragEnd);\n useEffect(() => {\n onDragEndRef.current = onDragEnd;\n }, [onDragEnd]);\n\n // The initial bounds of the dragged node.\n // We can't read the bounds of the dragged node on the fly because the node can be unmounted in the virtual list.\n const initDraggedNodeRect = useInitRect(\n draggedNode ? draggedNode.node[2] : undefined\n );\n\n // The initial scroll position of the list where the dragged node is located.\n // Used to detect the actual position of the dragged node. The purpose is the same as with initDraggedNodeRect.\n const initDraggedNodeListScrollOffset = useInitScrollOffset(\n draggedNode ? draggedNode.list.ref : undefined\n );\n\n // The central position of the dragged node\n const position = useMemo(() => {\n if (!draggedNode || !initDraggedNodeRect) return null;\n const { x, y } = cursorPosition;\n const { initWidth, initHeight } = initDraggedNodeRect;\n return {\n x: x - draggedNode.position.x + initWidth / 2,\n y: y - draggedNode.position.y + initHeight / 2,\n };\n }, [cursorPosition, draggedNode, initDraggedNodeRect]);\n\n // The list in which the cursor is located\n const targetList = useTargetList(position, listStoreRef);\n\n // Returns the style for moving the node in the specified direction\n const getNodeStyle = useGetNodeStyle(initDraggedNodeRect);\n\n // Moves the node up or down\n const moveNode = useMoveNode({ position, draggedNode, getNodeStyle });\n\n const setTargetNode = useCallback((list: NodeList, node: ExistingNode) => {\n const [, , , , nodeIndex] = node;\n targetNodeRef.current = { list, node };\n targetRef.current = { id: list.id, index: nodeIndex };\n }, []);\n\n const clearTargetNode = useCallback(() => {\n targetNodeRef.current = null;\n targetRef.current = null;\n }, []);\n\n // Returns the central position of the dragged node in the list\n const getDraggedNodePos = useCallback(() => {\n if (\n !targetList ||\n !targetList.ref.current ||\n !initDraggedNodeRect ||\n !initDraggedNodeListScrollOffset\n ) {\n return null;\n }\n const { initX, initY, initWidth, initHeight } = initDraggedNodeRect;\n const { initScrollLeft, initScrollTop } = initDraggedNodeListScrollOffset;\n const { scrollLeft, scrollTop } = getElementScroll(targetList.ref.current);\n return {\n x: initX + initWidth / 2 + initScrollLeft - scrollLeft,\n y: initY + initHeight / 2 + initScrollTop - scrollTop,\n };\n }, [initDraggedNodeListScrollOffset, initDraggedNodeRect, targetList]);\n\n const getDraggedNodePosRef = useRef(getDraggedNodePos);\n useEffect(() => {\n getDraggedNodePosRef.current = getDraggedNodePos;\n }, [getDraggedNodePos]);\n\n // Hide the dragged node\n useEffect(() => {\n if (!draggedNode) return () => {};\n const [, , , draggedNodeSetStyle] = draggedNode.node;\n draggedNodeSetStyle(HIDDEN_NODE_STYLE);\n return () => draggedNodeSetStyle({});\n }, [draggedNode]);\n\n // Append the blank node to the list to increase the height of it.\n // Used when the dragged node is located inside another list.\n const removeBlankNode = useBlankNode({\n draggedNode,\n targetList,\n initDraggedNodeRect,\n });\n\n const updateTargetNode = useCallback(() => {\n if (!draggedNode) return;\n const prevTargetNode = targetNodeRef.current; // The last updated node\n\n // Dragging outside the origin list\n if (\n prevTargetNode &&\n prevTargetNode.list === draggedNode.list &&\n targetList !== draggedNode.list\n ) {\n moveNode({\n list: prevTargetNode.list,\n startNode: prevTargetNode.node,\n direction: 'down',\n destination: 'end',\n });\n clearTargetNode();\n }\n\n // Dragging outside another list\n if (\n prevTargetNode &&\n prevTargetNode.list !== draggedNode.list &&\n targetList !== prevTargetNode.list\n ) {\n moveNode({\n list: prevTargetNode.list,\n startNode: prevTargetNode.node,\n direction: 'down',\n destination: 'end',\n isAnotherList: true,\n });\n removeBlankNode();\n clearTargetNode();\n }\n\n // Dragging inside the origin list\n if (!prevTargetNode && targetList === draggedNode.list) {\n const tail = targetList.getTail();\n if (!tail) return;\n const node = moveNode({\n list: targetList,\n startNode: tail,\n direction: 'up',\n destination: 'cursor',\n });\n setTargetNode(targetList, node);\n return;\n }\n\n // Dragging inside another list\n if (\n targetList &&\n targetList !== draggedNode.list &&\n (!prevTargetNode || prevTargetNode.list !== targetList)\n ) {\n const tail = targetList.getTail();\n if (!tail) return;\n const node = moveNode({\n list: targetList,\n startNode: tail,\n direction: 'up',\n destination: 'cursor',\n isAnotherList: true,\n });\n setTargetNode(targetList, node);\n return;\n }\n\n // Dragging in the origin list\n if (\n prevTargetNode &&\n prevTargetNode.list === draggedNode.list &&\n targetList === draggedNode.list\n ) {\n const axis = targetList.horizontal ? 'x' : 'y';\n const [, , prevTargetNodeRef, ,] = prevTargetNode.node;\n if (!prevTargetNodeRef.current) {\n // The target node was unmounted. It happens when the virtual list is used.\n // If the cursor is above the dragged node, we need to move the nodes down from the tail to the node where\n // the cursor is located. Otherwise, we need to move the nodes up from the head to the node where the cursor\n // is located.\n const draggedNodePos = getDraggedNodePosRef.current();\n if (!position || !draggedNodePos) return;\n const isDraggingUp = position[axis] < draggedNodePos[axis];\n if (isDraggingUp) {\n const tail = targetList.getTail();\n if (!tail || !tail[2].current) return;\n const node = moveNode({\n list: targetList,\n startNode: createEmptyNode({ prev: tail }),\n direction: 'up',\n destination: 'cursor',\n });\n setTargetNode(targetList, node);\n } else {\n const head = targetList.getHead();\n if (!head || !head[2].current) return;\n const node = moveNode({\n list: targetList,\n startNode: createEmptyNode({ next: head }),\n direction: 'down',\n destination: 'cursor',\n });\n setTargetNode(targetList, node);\n }\n return;\n }\n const prevTargetNodeRect = getNodeRect(prevTargetNode.node[2]);\n const startRectProp = targetList.horizontal ? 'left' : 'top';\n if (!position || !prevTargetNodeRect) return;\n const isMoveUp = position[axis] < prevTargetNodeRect[startRectProp];\n const node = isMoveUp\n ? moveNode({\n list: targetList,\n startNode: prevTargetNode.node,\n direction: 'up',\n destination: 'cursor',\n })\n : moveNode({\n list: targetList,\n startNode: prevTargetNode.node,\n direction: 'down',\n destination: 'cursor',\n });\n setTargetNode(targetList, node);\n return;\n }\n\n // Dragging in another list\n if (\n targetList &&\n targetList !== draggedNode.list &&\n prevTargetNode &&\n prevTargetNode.list === targetList\n ) {\n const axis = targetList.horizontal ? 'x' : 'y';\n const prevTargetNodeRect = getNodeRect(prevTargetNode.node[2]);\n const startRectProp = targetList.horizontal ? 'left' : 'top';\n if (!position || !prevTargetNodeRect) return;\n const isMoveUp = position[axis] < prevTargetNodeRect[startRectProp];\n const node = isMoveUp\n ? moveNode({\n list: targetList,\n startNode: prevTargetNode.node,\n direction: 'up',\n destination: 'cursor',\n isAnotherList: true,\n })\n : moveNode({\n list: targetList,\n startNode: prevTargetNode.node,\n direction: 'down',\n destination: 'cursor',\n isAnotherList: true,\n });\n setTargetNode(targetList, node);\n }\n }, [\n draggedNode,\n targetList,\n moveNode,\n clearTargetNode,\n removeBlankNode,\n setTargetNode,\n position,\n ]);\n\n // Update the target node if either the position or the target list has been changed\n useEffect(() => {\n updateTargetNode();\n }, [updateTargetNode]);\n\n // Update the target node if the target list has been scrolled\n const [throttledUpdateTargetNode] = useThrottle(updateTargetNode, 100);\n useEvent(\n (targetList ? targetList.ref : undefined) as unknown as EventTarget,\n 'scroll',\n throttledUpdateTargetNode\n );\n useEvent(window, 'scroll', throttledUpdateTargetNode);\n\n // Reset styles of the affected nodes when the dragged node was dropped\n useEffect(() => {\n if (!draggedNode) return () => {};\n const [, , , , draggedNodeIndex] = draggedNode.node;\n return () => {\n const targetNode = targetNodeRef.current;\n\n // If the dragged node was outside the origin list, reset the styles for the nodes,\n // starting at the tail and ending with the dragged node in the origin list.\n if (!targetNode || targetNode.list !== draggedNode.list) {\n const tail = draggedNode.list.getTail();\n if (tail) {\n let node = tail;\n while (true) {\n const [prev, , , nodeSetStyle, nodeIndex] = node;\n nodeSetStyle({});\n if (!prev || nodeIndex <= draggedNodeIndex) break;\n node = prev;\n }\n }\n }\n\n // If the dragged node was inside another list, reset the styles for the nodes,\n // starting at the tail and ending with the dragged node in the target list.\n if (targetNode && targetNode.list !== draggedNode.list) {\n const tail = targetNode.list.getTail();\n const [, , , , targetNodeIndex] = targetNode.node;\n if (tail) {\n let node = tail;\n while (true) {\n const [prev, , , nodeSetStyle, nodeIndex] = node;\n nodeSetStyle({});\n if (!prev || nodeIndex <= targetNodeIndex) break;\n node = prev;\n }\n }\n }\n\n // If the dragged node was moved inside the origin list, reset the styles for the nodes,\n // starting with target node and ending with the dragged node.\n if (targetNode && targetNode.list === draggedNode.list) {\n const [, , , targetNodeSetStyle, targetNodeIndex] = targetNode.node;\n if (targetNodeIndex > draggedNodeIndex) {\n let { node } = targetNode;\n while (true) {\n const [prev, , , nodeSetStyle, nodeIndex] = node;\n nodeSetStyle({});\n if (!prev || nodeIndex <= draggedNodeIndex) break;\n node = prev;\n }\n } else if (targetNodeIndex < draggedNodeIndex) {\n let { node } = targetNode;\n while (true) {\n const [, next, , nodeSetStyle, nodeIndex] = node;\n nodeSetStyle({});\n if (!next || nodeIndex >= draggedNodeIndex) break;\n node = next;\n }\n } else if (targetNodeIndex === draggedNodeIndex) {\n targetNodeSetStyle({});\n }\n }\n };\n }, [draggedNode]);\n\n // Update the position of the newly mounted nodes in the origin list (used in the virtual list)\n useEffect(() => {\n if (!draggedNode) return () => {};\n const [, , , , draggedNodeIndex] = draggedNode.node;\n\n const update = (nodeProps: NodeProps) => {\n const { setStyle, index } = nodeProps;\n const targetNode = targetNodeRef.current;\n\n // Set the hidden style, if the mounted node is the dragged node\n if (index === draggedNodeIndex) {\n setStyle(HIDDEN_NODE_STYLE);\n return;\n }\n\n // If the dragged node is inside the origin list\n if (targetNode && targetNode.list === draggedNode.list) {\n // Move the mounted node up/down, if it is located between the dragged and target node\n const [, , , , targetNodeIndex] = targetNode.node;\n if (index > draggedNodeIndex && index < targetNodeIndex) {\n setStyle(getNodeStyle('up', targetNode.list.horizontal));\n } else if (index < draggedNodeIndex && index > targetNodeIndex) {\n setStyle(getNodeStyle('down', targetNode.list.horizontal));\n }\n } else if (index > draggedNodeIndex) {\n // Otherwise, move the mounted node up, if it is located below the dragged node\n setStyle(getNodeStyle('up', draggedNode.list.horizontal));\n }\n };\n\n draggedNode.list.addListener(update);\n return () => draggedNode.list.removeListener(update);\n }, [draggedNode, getNodeStyle]);\n\n // Update the position of the newly mounted nodes in the target list (used in the virtual list)\n useEffect(() => {\n if (!draggedNode || !targetList || targetList === draggedNode.list) {\n return () => {};\n }\n\n const update = (nodeProps: NodeProps) => {\n const { setStyle, index } = nodeProps;\n const targetNode = targetNodeRef.current;\n if (!targetNode) return;\n const [, , , , targetNodeIndex] = targetNode.node;\n if (index >= targetNodeIndex) {\n // Move the mounted node down, if it is located below the target node or if it is the target node\n setStyle(getNodeStyle('down', targetList.horizontal));\n }\n };\n\n targetList.addListener(update);\n return () => targetList.removeListener(update);\n }, [draggedNode, getNodeStyle, targetList]);\n\n // Call the onDragEnd callback if the draggedNode was changed to null\n useEffect(() => {\n if (!draggedNode) return () => {};\n return () => {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const target = targetRef.current;\n if (!target) return;\n const [, , , , draggedNodeIndex] = draggedNode.node;\n const dragged = { id: draggedNode.list.id, index: draggedNodeIndex };\n if (dragged.id === target.id && dragged.index === target.index) return;\n onDragEndRef.current(dragged, target);\n };\n }, [draggedNode]);\n};\n\nexport default useDragEffect;\n"],"file":"useDragEffect.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/useInitRect.ts"],"names":["useInitRect","ref","current","rect","getBoundingClientRect","initX","x","initY","y","initWidth","width","initHeight","height"],"mappings":";;;;;;;AAAA;;AAEA,IAAMA,WAAW,GAAG,SAAdA,WAAc,CAACC,GAAD;AAAA,SAClB,oBAAQ,YAAM;AACZ,QAAI,CAACA,GAAD,IAAQ,CAACA,GAAG,CAACC,OAAjB,EAA0B,OAAO,IAAP;
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/useInitRect.ts"],"names":["useInitRect","ref","current","rect","getBoundingClientRect","initX","x","initY","y","initWidth","width","initHeight","height"],"mappings":";;;;;;;AAAA;;AAEA,IAAMA,WAAW,GAAG,SAAdA,WAAc,CAACC,GAAD;AAAA,SAClB,oBAAQ,YAAM;AACZ,QAAI,CAACA,GAAD,IAAQ,CAACA,GAAG,CAACC,OAAjB,EAA0B,OAAO,IAAP;AAE1B,QAAMC,IAAI,GAAGF,GAAG,CAACC,OAAJ,CAAYE,qBAAZ,EAAb;AAEA,WAAO;AACLC,MAAAA,KAAK,EAAEF,IAAI,CAACG,CADP;AAELC,MAAAA,KAAK,EAAEJ,IAAI,CAACK,CAFP;AAGLC,MAAAA,SAAS,EAAEN,IAAI,CAACO,KAHX;AAILC,MAAAA,UAAU,EAAER,IAAI,CAACS;AAJZ,KAAP;AAMD,GAXD,EAWG,CAACX,GAAD,CAXH,CADkB;AAAA,CAApB;;eAceD,W","sourcesContent":["import { RefObject, useMemo } from 'react';\n\nconst useInitRect = (ref?: RefObject<HTMLElement>) =>\n useMemo(() => {\n if (!ref || !ref.current) return null;\n\n const rect = ref.current.getBoundingClientRect();\n\n return {\n initX: rect.x,\n initY: rect.y,\n initWidth: rect.width,\n initHeight: rect.height,\n };\n }, [ref]);\n\nexport default useInitRect;\n"],"file":"useInitRect.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/useInitScrollOffset.ts"],"names":["useInitScrollOffset","ref","current","scrollOffset","initScrollLeft","scrollLeft","initScrollTop","scrollTop"],"mappings":";;;;;;;AAAA;;AACA;;;;AAEA,IAAMA,mBAAmB,GAAG,SAAtBA,mBAAsB,CAACC,GAAD;AAAA,SAC1B,oBAAQ,YAAM;AACZ,QAAI,CAACA,GAAD,IAAQ,CAACA,GAAG,CAACC,OAAjB,EAA0B,OAAO,IAAP;
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/useInitScrollOffset.ts"],"names":["useInitScrollOffset","ref","current","scrollOffset","initScrollLeft","scrollLeft","initScrollTop","scrollTop"],"mappings":";;;;;;;AAAA;;AACA;;;;AAEA,IAAMA,mBAAmB,GAAG,SAAtBA,mBAAsB,CAACC,GAAD;AAAA,SAC1B,oBAAQ,YAAM;AACZ,QAAI,CAACA,GAAD,IAAQ,CAACA,GAAG,CAACC,OAAjB,EAA0B,OAAO,IAAP;AAE1B,QAAMC,YAAY,GAAG,kCAAiBF,GAAG,CAACC,OAArB,CAArB;AAEA,WAAO;AACLE,MAAAA,cAAc,EAAED,YAAY,CAACE,UADxB;AAELC,MAAAA,aAAa,EAAEH,YAAY,CAACI;AAFvB,KAAP;AAID,GATD,EASG,CAACN,GAAD,CATH,CAD0B;AAAA,CAA5B;;eAYeD,mB","sourcesContent":["import { RefObject, useMemo } from 'react';\nimport getElementScroll from './getElementScroll';\n\nconst useInitScrollOffset = (ref?: RefObject<HTMLElement>) =>\n useMemo(() => {\n if (!ref || !ref.current) return null;\n\n const scrollOffset = getElementScroll(ref.current);\n\n return {\n initScrollLeft: scrollOffset.scrollLeft,\n initScrollTop: scrollOffset.scrollTop,\n };\n }, [ref]);\n\nexport default useInitScrollOffset;\n"],"file":"useInitScrollOffset.js"}
|