react-native-reorderable-list 0.12.0 → 0.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/README.md +0 -1
  2. package/lib/commonjs/components/NestedReorderableList.js +2 -0
  3. package/lib/commonjs/components/NestedReorderableList.js.map +1 -1
  4. package/lib/commonjs/components/ReorderableList.js +4 -3
  5. package/lib/commonjs/components/ReorderableList.js.map +1 -1
  6. package/lib/commonjs/components/ReorderableListCell.js +2 -2
  7. package/lib/commonjs/components/ReorderableListCell.js.map +1 -1
  8. package/lib/commonjs/components/ReorderableListCore/ReorderableListCore.js +3 -3
  9. package/lib/commonjs/components/ReorderableListCore/ReorderableListCore.js.map +1 -1
  10. package/lib/commonjs/components/ReorderableListCore/useReorderableListCore.js +160 -99
  11. package/lib/commonjs/components/ReorderableListCore/useReorderableListCore.js.map +1 -1
  12. package/lib/commonjs/components/ScrollViewContainer.js +14 -3
  13. package/lib/commonjs/components/ScrollViewContainer.js.map +1 -1
  14. package/lib/commonjs/contexts/ScrollViewContainerContext.js.map +1 -1
  15. package/lib/module/components/NestedReorderableList.js +2 -0
  16. package/lib/module/components/NestedReorderableList.js.map +1 -1
  17. package/lib/module/components/ReorderableList.js +4 -3
  18. package/lib/module/components/ReorderableList.js.map +1 -1
  19. package/lib/module/components/ReorderableListCell.js +2 -2
  20. package/lib/module/components/ReorderableListCell.js.map +1 -1
  21. package/lib/module/components/ReorderableListCore/ReorderableListCore.js +3 -3
  22. package/lib/module/components/ReorderableListCore/ReorderableListCore.js.map +1 -1
  23. package/lib/module/components/ReorderableListCore/useReorderableListCore.js +161 -100
  24. package/lib/module/components/ReorderableListCore/useReorderableListCore.js.map +1 -1
  25. package/lib/module/components/ScrollViewContainer.js +16 -5
  26. package/lib/module/components/ScrollViewContainer.js.map +1 -1
  27. package/lib/module/contexts/ScrollViewContainerContext.js.map +1 -1
  28. package/lib/typescript/components/NestedReorderableList.d.ts.map +1 -1
  29. package/lib/typescript/components/ReorderableList.d.ts.map +1 -1
  30. package/lib/typescript/components/ReorderableListCore/ReorderableListCore.d.ts +1 -0
  31. package/lib/typescript/components/ReorderableListCore/ReorderableListCore.d.ts.map +1 -1
  32. package/lib/typescript/components/ReorderableListCore/useReorderableListCore.d.ts +4 -5
  33. package/lib/typescript/components/ReorderableListCore/useReorderableListCore.d.ts.map +1 -1
  34. package/lib/typescript/components/ScrollViewContainer.d.ts.map +1 -1
  35. package/lib/typescript/contexts/ScrollViewContainerContext.d.ts +1 -0
  36. package/lib/typescript/contexts/ScrollViewContainerContext.d.ts.map +1 -1
  37. package/lib/typescript/types/props.d.ts +0 -5
  38. package/lib/typescript/types/props.d.ts.map +1 -1
  39. package/package.json +1 -1
  40. package/src/components/NestedReorderableList.tsx +2 -0
  41. package/src/components/ReorderableList.tsx +3 -2
  42. package/src/components/ReorderableListCell.tsx +3 -3
  43. package/src/components/ReorderableListCore/ReorderableListCore.tsx +4 -3
  44. package/src/components/ReorderableListCore/useReorderableListCore.ts +277 -184
  45. package/src/components/ScrollViewContainer.tsx +23 -5
  46. package/src/contexts/ScrollViewContainerContext.ts +1 -0
  47. package/src/types/props.ts +0 -5
@@ -1,7 +1,7 @@
1
1
  import React, { useCallback, useEffect, useMemo, useState } from 'react';
2
2
  import { unstable_batchedUpdates } from 'react-native';
3
3
  import { Gesture, State } from 'react-native-gesture-handler';
4
- import { Easing, runOnJS, runOnUI, scrollTo, useAnimatedReaction, useAnimatedRef, useAnimatedScrollHandler, useSharedValue, withDelay, withTiming } from 'react-native-reanimated';
4
+ import { Easing, measure, runOnJS, runOnUI, scrollTo, useAnimatedReaction, useAnimatedRef, useAnimatedScrollHandler, useDerivedValue, useSharedValue, withDelay, withTiming } from 'react-native-reanimated';
5
5
  import { OPACITY_ANIMATION_CONFIG_DEFAULT, SCALE_ANIMATION_CONFIG_DEFAULT } from './animationDefaults';
6
6
  import { AUTOSCROLL_CONFIG } from './autoscrollConfig';
7
7
  import { ReorderableListState } from '../../types';
@@ -15,19 +15,19 @@ export const useReorderableListCore = ({
15
15
  autoscrollDelay,
16
16
  autoscrollActivationDelta,
17
17
  animationDuration,
18
- dragReorderThreshold,
19
18
  onReorder,
20
19
  onDragStart,
21
20
  onDragEnd,
22
21
  onLayout,
23
22
  onIndexChange,
24
23
  scrollViewContainerRef,
24
+ scrollViewPageY,
25
25
  scrollViewHeightY,
26
26
  scrollViewScrollOffsetY,
27
27
  scrollViewScrollEnabled,
28
+ scrollable,
28
29
  initialScrollEnabled,
29
30
  initialScrollViewScrollEnabled,
30
- nestedScrollable,
31
31
  cellAnimations,
32
32
  shouldUpdateActiveItem,
33
33
  panActivateAfterLongPress,
@@ -39,22 +39,25 @@ export const useReorderableListCore = ({
39
39
  const gestureState = useSharedValue(State.UNDETERMINED);
40
40
  const currentY = useSharedValue(0);
41
41
  const currentTranslationY = useSharedValue(0);
42
+ const currentItemDragCenterY = useSharedValue(null);
43
+ const startItemDragCenterY = useSharedValue(0);
42
44
  const flatListScrollOffsetY = useSharedValue(0);
43
45
  const flatListHeightY = useSharedValue(0);
44
- const nestedFlatListPositionY = useSharedValue(0);
46
+ const flatListPageY = useSharedValue(0);
47
+ // The scroll y translation of the list since drag start
45
48
  const dragScrollTranslationY = useSharedValue(0);
49
+ // The initial scroll offset y of the list on drag start
46
50
  const dragInitialScrollOffsetY = useSharedValue(0);
51
+ // The scroll y translation of the ScrollViewContainer since drag start
47
52
  const scrollViewDragScrollTranslationY = useSharedValue(0);
53
+ // The initial scroll offset y of the ScrollViewContainer on drag start
48
54
  const scrollViewDragInitialScrollOffsetY = useSharedValue(0);
49
55
  const draggedHeight = useSharedValue(0);
50
56
  const itemOffset = useSharedValue([]);
51
57
  const itemHeight = useSharedValue([]);
52
58
  const autoscrollTrigger = useSharedValue(-1);
53
59
  const lastAutoscrollTrigger = useSharedValue(-1);
54
- const previousY = useSharedValue(0);
55
60
  const dragY = useSharedValue(0);
56
- const previousDirection = useSharedValue(0);
57
- const previousIndex = useSharedValue(-1);
58
61
  const currentIndex = useSharedValue(-1);
59
62
  const draggedIndex = useSharedValue(-1);
60
63
  const state = useSharedValue(ReorderableListState.IDLE);
@@ -66,6 +69,9 @@ export const useReorderableListCore = ({
66
69
  const dragDirection = useSharedValue(0);
67
70
  const lastDragDirectionPivot = useSharedValue(null);
68
71
  const autoscrollDelta = useSharedValue(autoscrollActivationDelta);
72
+
73
+ // Position of the list relative to the scroll container
74
+ const nestedFlatListPositionY = useDerivedValue(() => flatListPageY.value - ((scrollViewPageY === null || scrollViewPageY === void 0 ? void 0 : scrollViewPageY.value) || 0));
69
75
  useEffect(() => {
70
76
  duration.value = animationDuration;
71
77
  autoscrollDelta.value = autoscrollActivationDelta;
@@ -89,6 +95,8 @@ export const useReorderableListCore = ({
89
95
  * Decides the intended drag direction of the user.
90
96
  * This is used to to determine if the user intends to autoscroll
91
97
  * when within the threshold area.
98
+ *
99
+ * @param e - The payload of the pan gesture update event.
92
100
  */
93
101
  const setDragDirection = useCallback(e => {
94
102
  'worklet';
@@ -103,6 +111,22 @@ export const useReorderableListCore = ({
103
111
  }
104
112
  }
105
113
  }, [dragDirection, lastDragDirectionPivot, autoscrollDelta]);
114
+ const setCurrentItemDragCenterY = useCallback(e => {
115
+ 'worklet';
116
+
117
+ if (currentItemDragCenterY.value === null) {
118
+ if (currentIndex.value >= 0) {
119
+ const itemCenter = itemHeight.value[currentIndex.value] * 0.5;
120
+ // the y coordinate of the item relative to the list
121
+ const itemY = itemOffset.value[currentIndex.value] - (flatListScrollOffsetY.value + scrollViewDragScrollTranslationY.value);
122
+ const value = itemY + itemCenter + e.translationY;
123
+ startItemDragCenterY.value = value;
124
+ currentItemDragCenterY.value = value;
125
+ }
126
+ } else {
127
+ currentItemDragCenterY.value = startItemDragCenterY.value + e.translationY;
128
+ }
129
+ }, [currentItemDragCenterY, currentIndex, startItemDragCenterY, itemOffset, itemHeight, flatListScrollOffsetY, scrollViewDragScrollTranslationY]);
106
130
  const panGestureHandler = useMemo(() => Gesture.Pan().onBegin(e => {
107
131
  // prevent new dragging until item is completely released
108
132
  if (state.value === ReorderableListState.IDLE) {
@@ -117,12 +141,13 @@ export const useReorderableListCore = ({
117
141
  setDragDirection(e);
118
142
  }
119
143
  if (state.value !== ReorderableListState.RELEASED) {
144
+ setCurrentItemDragCenterY(e);
120
145
  currentY.value = startY.value + e.translationY;
121
146
  currentTranslationY.value = e.translationY;
122
147
  dragY.value = e.translationY + dragScrollTranslationY.value + scrollViewDragScrollTranslationY.value;
123
148
  gestureState.value = e.state;
124
149
  }
125
- }).onEnd(e => gestureState.value = e.state).onFinalize(e => gestureState.value = e.state), [state, startY, currentY, currentTranslationY, dragY, gestureState, setDragDirection, dragScrollTranslationY, scrollViewDragScrollTranslationY]);
150
+ }).onEnd(e => gestureState.value = e.state).onFinalize(e => gestureState.value = e.state), [state, startY, currentY, currentTranslationY, dragY, gestureState, dragScrollTranslationY, scrollViewDragScrollTranslationY, setDragDirection, setCurrentItemDragCenterY]);
126
151
  const panGestureHandlerWithOptions = useMemo(() => {
127
152
  if (typeof panActivateAfterLongPress === 'number') {
128
153
  panGestureHandler.activateAfterLongPress(panActivateAfterLongPress);
@@ -160,7 +185,8 @@ export const useReorderableListCore = ({
160
185
  scrollViewDragScrollTranslationY.value = 0;
161
186
  dragDirection.value = 0;
162
187
  lastDragDirectionPivot.value = null;
163
- }, [state, draggedIndex, dragY, dragScrollTranslationY, scrollViewDragScrollTranslationY, dragDirection, lastDragDirectionPivot]);
188
+ currentItemDragCenterY.value = null;
189
+ }, [state, draggedIndex, dragY, dragScrollTranslationY, scrollViewDragScrollTranslationY, dragDirection, lastDragDirectionPivot, currentItemDragCenterY]);
164
190
  const resetSharedValuesAfterAnimations = useCallback(() => {
165
191
  setTimeout(runOnUI(resetSharedValues), duration.value);
166
192
  }, [resetSharedValues, duration]);
@@ -180,67 +206,72 @@ export const useReorderableListCore = ({
180
206
  }
181
207
  }
182
208
  };
183
- const getIndexFromY = useCallback(y => {
209
+ const recomputeLayout = useCallback((from, to) => {
184
210
  'worklet';
185
211
 
186
- const relativeY = flatListScrollOffsetY.value + y;
187
- const count = itemOffset.value.length;
188
- for (let i = 0; i < count; i++) {
189
- if (currentIndex.value === i) {
190
- continue;
191
- }
192
- const direction = i > currentIndex.value ? 1 : -1;
193
- const threshold = Math.max(0, Math.min(1, dragReorderThreshold));
194
- const height = itemHeight.value[i];
195
- const offset = itemOffset.value[i] + height * threshold * direction;
196
- if (i === 0 && relativeY <= offset || i === count - 1 && relativeY >= offset + height || relativeY >= offset && relativeY <= offset + height) {
197
- return {
198
- index: i,
199
- direction
200
- };
212
+ const itemDirection = to > from;
213
+ const index1 = itemDirection ? from : to;
214
+ const index2 = itemDirection ? to : from;
215
+ const newOffset1 = itemOffset.value[index1];
216
+ const newHeight1 = itemHeight.value[index2];
217
+ const newOffset2 = itemOffset.value[index2] + itemHeight.value[index2] - itemHeight.value[index1];
218
+ const newHeight2 = itemHeight.value[index1];
219
+ itemOffset.value[index1] = newOffset1;
220
+ itemHeight.value[index1] = newHeight1;
221
+ itemOffset.value[index2] = newOffset2;
222
+ itemHeight.value[index2] = newHeight2;
223
+ }, [itemOffset, itemHeight]);
224
+
225
+ /**
226
+ * Computes a potential new drop container for the current dragged item and evaluates
227
+ * whether the dragged item center is nearer to the center of the current container or the new one.
228
+ *
229
+ * @returns The new index if the center of the dragged item is closer to the center of
230
+ * the new drop container or the current index if closer to the current drop container.
231
+ */
232
+ const computeCurrentIndex = useCallback(() => {
233
+ 'worklet';
234
+
235
+ if (currentItemDragCenterY.value === null) {
236
+ return currentIndex.value;
237
+ }
238
+
239
+ // apply scroll offset and scroll container translation
240
+ const relativeDragCenterY = flatListScrollOffsetY.value + scrollViewDragScrollTranslationY.value + currentItemDragCenterY.value;
241
+ const currentOffset = itemOffset.value[currentIndex.value];
242
+ const currentHeight = itemHeight.value[currentIndex.value];
243
+ const currentCenter = currentOffset + currentHeight * 0.5;
244
+ const max = itemOffset.value.length;
245
+ const possibleIndex = relativeDragCenterY < currentCenter ? Math.max(0, currentIndex.value - 1) : Math.min(max - 1, currentIndex.value + 1);
246
+ if (currentIndex.value !== possibleIndex) {
247
+ let possibleOffset = itemOffset.value[possibleIndex];
248
+ if (possibleIndex > currentIndex.value) {
249
+ possibleOffset += itemHeight.value[possibleIndex] - currentHeight;
201
250
  }
251
+ const possibleCenter = possibleOffset + currentHeight * 0.5;
252
+ const distanceFromCurrent = Math.abs(relativeDragCenterY - currentCenter);
253
+ const distanceFromPossible = Math.abs(relativeDragCenterY - possibleCenter);
254
+ return distanceFromCurrent <= distanceFromPossible ? currentIndex.value : possibleIndex;
202
255
  }
203
- return {
204
- index: currentIndex.value,
205
- direction: previousDirection.value
206
- };
207
- }, [dragReorderThreshold, currentIndex, flatListScrollOffsetY, previousDirection, itemOffset, itemHeight]);
208
- const setCurrentIndex = useCallback(y => {
256
+ return currentIndex.value;
257
+ }, [currentIndex, currentItemDragCenterY, itemOffset, itemHeight, flatListScrollOffsetY, scrollViewDragScrollTranslationY]);
258
+ const setCurrentIndex = useCallback(() => {
209
259
  'worklet';
210
260
 
211
- const {
212
- index: newIndex,
213
- direction: newDirection
214
- } = getIndexFromY(y);
215
- const delta = Math.abs(previousY.value - y);
216
- if (currentIndex.value !== newIndex && (
217
- // if the same two items re-swap index check delta and direction to avoid swap flickering
218
- previousIndex.value !== newIndex || previousDirection.value !== newDirection && delta >= 5)) {
219
- const itemDirection = newIndex > currentIndex.value;
220
- const index1 = itemDirection ? currentIndex.value : newIndex;
221
- const index2 = itemDirection ? newIndex : currentIndex.value;
222
- const newOffset1 = itemOffset.value[index1];
223
- const newHeight1 = itemHeight.value[index2];
224
- const newOffset2 = itemOffset.value[index2] + (itemHeight.value[index2] - itemHeight.value[index1]);
225
- const newHeight2 = itemHeight.value[index1];
226
- itemOffset.value[index1] = newOffset1;
227
- itemHeight.value[index1] = newHeight1;
228
- itemOffset.value[index2] = newOffset2;
229
- itemHeight.value[index2] = newHeight2;
230
- previousY.value = y;
231
- previousDirection.value = newDirection;
232
- previousIndex.value = currentIndex.value;
261
+ const newIndex = computeCurrentIndex();
262
+ if (currentIndex.value !== newIndex) {
263
+ recomputeLayout(currentIndex.value, newIndex);
233
264
  currentIndex.value = newIndex;
234
265
  onIndexChange === null || onIndexChange === void 0 || onIndexChange({
235
266
  index: newIndex
236
267
  });
237
268
  }
238
- }, [currentIndex, previousIndex, previousDirection, previousY, itemOffset, itemHeight, getIndexFromY, onIndexChange]);
269
+ }, [currentIndex, computeCurrentIndex, recomputeLayout, onIndexChange]);
239
270
  const runDefaultDragAnimations = useCallback(type => {
240
271
  'worklet';
241
272
 
242
273
  // if no custom scale run default
243
- if (!(cellAnimations && 'transformtra' in cellAnimations)) {
274
+ if (!(cellAnimations && 'transform' in cellAnimations)) {
244
275
  const scaleConfig = SCALE_ANIMATION_CONFIG_DEFAULT[type];
245
276
  scaleDefault.value = withTiming(scaleConfig.toValue, scaleConfig);
246
277
  }
@@ -295,7 +326,7 @@ export const useReorderableListCore = ({
295
326
  }
296
327
  }
297
328
  });
298
- const calculateHiddenArea = useCallback(() => {
329
+ const computeHiddenArea = useCallback(() => {
299
330
  'worklet';
300
331
 
301
332
  if (!scrollViewScrollOffsetY || !scrollViewHeightY) {
@@ -313,9 +344,10 @@ export const useReorderableListCore = ({
313
344
  bottom
314
345
  };
315
346
  }, [scrollViewScrollOffsetY, scrollViewHeightY, nestedFlatListPositionY, flatListHeightY]);
316
- const calculateThresholdArea = useCallback(hiddenArea => {
347
+ const computeThresholdArea = useCallback(() => {
317
348
  'worklet';
318
349
 
350
+ const hiddenArea = computeHiddenArea();
319
351
  const offsetTop = Math.max(0, (autoscrollThresholdOffset === null || autoscrollThresholdOffset === void 0 ? void 0 : autoscrollThresholdOffset.top) || 0);
320
352
  const offsetBottom = Math.max(0, (autoscrollThresholdOffset === null || autoscrollThresholdOffset === void 0 ? void 0 : autoscrollThresholdOffset.bottom) || 0);
321
353
  const threshold = Math.max(0, Math.min(autoscrollThreshold, 0.4));
@@ -327,66 +359,81 @@ export const useReorderableListCore = ({
327
359
  top,
328
360
  bottom
329
361
  };
330
- }, [autoscrollThreshold, autoscrollThresholdOffset, flatListHeightY]);
331
- const calculateThresholdAreaParent = useCallback(hiddenArea => {
362
+ }, [computeHiddenArea, autoscrollThreshold, autoscrollThresholdOffset, flatListHeightY]);
363
+ const computeContainerThresholdArea = useCallback(() => {
332
364
  'worklet';
333
365
 
366
+ if (!scrollViewHeightY) {
367
+ return {
368
+ top: -Infinity,
369
+ bottom: Infinity
370
+ };
371
+ }
334
372
  const offsetTop = Math.max(0, (autoscrollThresholdOffset === null || autoscrollThresholdOffset === void 0 ? void 0 : autoscrollThresholdOffset.top) || 0);
335
373
  const offsetBottom = Math.max(0, (autoscrollThresholdOffset === null || autoscrollThresholdOffset === void 0 ? void 0 : autoscrollThresholdOffset.bottom) || 0);
336
374
  const threshold = Math.max(0, Math.min(autoscrollThreshold, 0.4));
337
- const area = flatListHeightY.value * threshold;
375
+ const visibleHeight = scrollViewHeightY.value - (offsetTop + offsetBottom);
376
+ const area = visibleHeight * threshold;
338
377
  const top = area + offsetTop;
339
- const bottom = flatListHeightY.value - area - offsetBottom;
340
-
341
- // if the hidden area is 0 then we don't have a threshold area
342
- // we might have floating errors like 0.0001 which we should ignore
378
+ const bottom = visibleHeight - area - offsetBottom;
343
379
  return {
344
- top: hiddenArea.top > 0.1 ? top + hiddenArea.top : 0,
345
- bottom: hiddenArea.bottom > 0.1 ? bottom - hiddenArea.bottom : 0
380
+ top,
381
+ bottom
346
382
  };
347
- }, [autoscrollThreshold, autoscrollThresholdOffset, flatListHeightY]);
348
- const shouldScrollParent = useCallback(y => {
383
+ }, [autoscrollThreshold, autoscrollThresholdOffset, scrollViewHeightY]);
384
+ const shouldScrollContainer = useCallback(y => {
349
385
  'worklet';
350
386
 
351
- const hiddenArea = calculateHiddenArea();
352
- const thresholdAreaParent = calculateThresholdAreaParent(hiddenArea);
387
+ const containerThresholdArea = computeContainerThresholdArea();
388
+ const nestedListHiddenArea = computeHiddenArea();
353
389
 
354
- // we might have floating errors like 0.0001 which we should ignore
355
- return hiddenArea.top > 0.1 && y <= thresholdAreaParent.top || hiddenArea.bottom > 0.1 && y >= thresholdAreaParent.bottom;
356
- }, [calculateHiddenArea, calculateThresholdAreaParent]);
357
- const scrollDirection = useCallback(y => {
390
+ // We should scroll the container if there's a hidden part of the nested list.
391
+ // We might have floating errors like 0.0001 which we should ignore.
392
+ return nestedListHiddenArea.top > 0.01 && y <= containerThresholdArea.top || nestedListHiddenArea.bottom > 0.01 && y >= containerThresholdArea.bottom;
393
+ }, [computeHiddenArea, computeContainerThresholdArea]);
394
+ const getRelativeContainerY = useCallback(() => {
358
395
  'worklet';
359
396
 
360
- const hiddenArea = calculateHiddenArea();
361
- if (shouldScrollParent(y)) {
362
- const thresholdAreaParent = calculateThresholdAreaParent(hiddenArea);
363
- if (y <= thresholdAreaParent.top) {
397
+ return currentY.value + nestedFlatListPositionY.value - scrollViewDragInitialScrollOffsetY.value;
398
+ }, [currentY, nestedFlatListPositionY, scrollViewDragInitialScrollOffsetY]);
399
+ const getRelativeListY = useCallback(() => {
400
+ 'worklet';
401
+
402
+ return currentY.value + scrollViewDragScrollTranslationY.value;
403
+ }, [currentY, scrollViewDragScrollTranslationY]);
404
+ const scrollDirection = useCallback(() => {
405
+ 'worklet';
406
+
407
+ const relativeContainerY = getRelativeContainerY();
408
+ if (shouldScrollContainer(relativeContainerY)) {
409
+ const containerThresholdArea = computeContainerThresholdArea();
410
+ if (relativeContainerY <= containerThresholdArea.top) {
364
411
  return -1;
365
412
  }
366
- if (y >= thresholdAreaParent.bottom) {
413
+ if (relativeContainerY >= containerThresholdArea.bottom) {
367
414
  return 1;
368
415
  }
369
- return 0;
370
- } else if (nestedScrollable) {
371
- const thresholdArea = calculateThresholdArea(hiddenArea);
372
- if (y <= thresholdArea.top) {
416
+ } else if (scrollable) {
417
+ const relativeListY = getRelativeListY();
418
+ const thresholdArea = computeThresholdArea();
419
+ if (relativeListY <= thresholdArea.top) {
373
420
  return -1;
374
421
  }
375
- if (y >= thresholdArea.bottom) {
422
+ if (relativeListY >= thresholdArea.bottom) {
376
423
  return 1;
377
424
  }
378
425
  }
379
426
  return 0;
380
- }, [nestedScrollable, shouldScrollParent, calculateHiddenArea, calculateThresholdArea, calculateThresholdAreaParent]);
381
- useAnimatedReaction(() => currentY.value + scrollViewDragScrollTranslationY.value, y => {
427
+ }, [shouldScrollContainer, computeThresholdArea, computeContainerThresholdArea, getRelativeContainerY, getRelativeListY, scrollable]);
428
+ useAnimatedReaction(() => currentY.value, () => {
382
429
  if (state.value === ReorderableListState.DRAGGED || state.value === ReorderableListState.AUTOSCROLL) {
383
- setCurrentIndex(y);
430
+ setCurrentIndex();
384
431
 
385
432
  // Trigger autoscroll when:
386
433
  // 1. Within the threshold area (top or bottom of list)
387
434
  // 2. Have dragged in the same direction as the scroll
388
435
  // 3. Not already in autoscroll mode
389
- if (dragDirection.value === scrollDirection(y)) {
436
+ if (dragDirection.value === scrollDirection()) {
390
437
  // When the first two conditions are met and it's already in autoscroll mode, we let it continue (no-op)
391
438
  if (state.value !== ReorderableListState.AUTOSCROLL) {
392
439
  state.value = ReorderableListState.AUTOSCROLL;
@@ -400,12 +447,15 @@ export const useReorderableListCore = ({
400
447
  });
401
448
  useAnimatedReaction(() => autoscrollTrigger.value, () => {
402
449
  if (autoscrollTrigger.value !== lastAutoscrollTrigger.value && state.value === ReorderableListState.AUTOSCROLL) {
403
- let y = currentY.value + scrollViewDragScrollTranslationY.value;
404
- const autoscrollIncrement = scrollDirection(y) * AUTOSCROLL_CONFIG.increment * autoscrollSpeedScale;
450
+ const autoscrollIncrement = dragDirection.value * AUTOSCROLL_CONFIG.increment * autoscrollSpeedScale;
405
451
  if (autoscrollIncrement !== 0) {
406
452
  let scrollOffset = flatListScrollOffsetY.value;
407
453
  let listRef = flatListRef;
408
- if (shouldScrollParent(y) && scrollViewScrollOffsetY) {
454
+
455
+ // Checking on every autoscroll whether to scroll the container,
456
+ // this allows to smoothly pass the scroll from the container to the nested list
457
+ // without any gesture input.
458
+ if (scrollViewScrollOffsetY && shouldScrollContainer(getRelativeContainerY())) {
409
459
  scrollOffset = scrollViewScrollOffsetY.value;
410
460
  listRef = scrollViewContainerRef;
411
461
  }
@@ -414,7 +464,7 @@ export const useReorderableListCore = ({
414
464
 
415
465
  // when autoscrolling user may not be moving his finger so we need
416
466
  // to update the current position of the dragged item here
417
- setCurrentIndex(y);
467
+ setCurrentIndex();
418
468
  }
419
469
  });
420
470
 
@@ -437,12 +487,11 @@ export const useReorderableListCore = ({
437
487
  }
438
488
  });
439
489
 
440
- // parent scroll handler
490
+ // container scroll handler
441
491
  useAnimatedReaction(() => scrollViewScrollOffsetY === null || scrollViewScrollOffsetY === void 0 ? void 0 : scrollViewScrollOffsetY.value, value => {
442
492
  if (value && scrollViewScrollEnabled) {
443
493
  // checking if the list is not scrollable instead of the scrolling state
444
- // fixes a bug on iOS where the item is shifted after autoscrolling and then
445
- // moving await from autoscroll area
494
+ // fixes a bug on iOS where the item is shifted after autoscrolling and moving away from the area
446
495
  if (!scrollViewScrollEnabled.value) {
447
496
  scrollViewDragScrollTranslationY.value = value - scrollViewDragInitialScrollOffsetY.value;
448
497
  }
@@ -467,10 +516,9 @@ export const useReorderableListCore = ({
467
516
  runOnJS(setActiveIndex)(index);
468
517
  }
469
518
  dragInitialScrollOffsetY.value = flatListScrollOffsetY.value;
470
- scrollViewDragInitialScrollOffsetY.value = scrollViewScrollOffsetY ? scrollViewScrollOffsetY.value : 0;
519
+ scrollViewDragInitialScrollOffsetY.value = (scrollViewScrollOffsetY === null || scrollViewScrollOffsetY === void 0 ? void 0 : scrollViewScrollOffsetY.value) || 0;
471
520
  draggedHeight.value = itemHeight.value[index];
472
521
  draggedIndex.value = index;
473
- previousIndex.value = -1;
474
522
  currentIndex.value = index;
475
523
  state.value = ReorderableListState.DRAGGED;
476
524
  runOnJS(setScrollEnabled)(false);
@@ -481,12 +529,25 @@ export const useReorderableListCore = ({
481
529
  index
482
530
  });
483
531
  }
484
- }, [resetSharedValues, shouldUpdateActiveItem, dragInitialScrollOffsetY, scrollViewScrollOffsetY, scrollViewDragInitialScrollOffsetY, setScrollEnabled, currentIndex, previousIndex, draggedHeight, draggedIndex, state, flatListScrollOffsetY, itemHeight, onDragStart, runDefaultDragAnimations]);
532
+ }, [resetSharedValues, shouldUpdateActiveItem, dragInitialScrollOffsetY, scrollViewScrollOffsetY, scrollViewDragInitialScrollOffsetY, setScrollEnabled, currentIndex, draggedHeight, draggedIndex, state, flatListScrollOffsetY, itemHeight, onDragStart, runDefaultDragAnimations]);
485
533
  const handleFlatListLayout = useCallback(e => {
486
- nestedFlatListPositionY.value = e.nativeEvent.layout.y;
487
534
  flatListHeightY.value = e.nativeEvent.layout.height;
535
+
536
+ // If nested in a scroll container.
537
+ if (scrollViewScrollOffsetY) {
538
+ // Timeout fixes a bug where measure returns height 0.
539
+ setTimeout(() => {
540
+ runOnUI(() => {
541
+ const measurement = measure(flatListRef);
542
+ if (!measurement) {
543
+ return;
544
+ }
545
+ flatListPageY.value = measurement.pageY;
546
+ })();
547
+ }, 100);
548
+ }
488
549
  onLayout === null || onLayout === void 0 || onLayout(e);
489
- }, [nestedFlatListPositionY, flatListHeightY, onLayout]);
550
+ }, [flatListRef, flatListPageY, flatListHeightY, scrollViewScrollOffsetY, onLayout]);
490
551
  const handleRef = value => {
491
552
  flatListRef(value);
492
553
  if (typeof ref === 'function') {
@@ -1 +1 @@
1
- {"version":3,"names":["React","useCallback","useEffect","useMemo","useState","unstable_batchedUpdates","Gesture","State","Easing","runOnJS","runOnUI","scrollTo","useAnimatedReaction","useAnimatedRef","useAnimatedScrollHandler","useSharedValue","withDelay","withTiming","OPACITY_ANIMATION_CONFIG_DEFAULT","SCALE_ANIMATION_CONFIG_DEFAULT","AUTOSCROLL_CONFIG","ReorderableListState","version","split","hasAutomaticBatching","length","parseInt","useReorderableListCore","ref","autoscrollThreshold","autoscrollThresholdOffset","autoscrollSpeedScale","autoscrollDelay","autoscrollActivationDelta","animationDuration","dragReorderThreshold","onReorder","onDragStart","onDragEnd","onLayout","onIndexChange","scrollViewContainerRef","scrollViewHeightY","scrollViewScrollOffsetY","scrollViewScrollEnabled","initialScrollEnabled","initialScrollViewScrollEnabled","nestedScrollable","cellAnimations","shouldUpdateActiveItem","panActivateAfterLongPress","panEnabled","flatListRef","activeIndex","setActiveIndex","scrollEnabled","gestureState","UNDETERMINED","currentY","currentTranslationY","flatListScrollOffsetY","flatListHeightY","nestedFlatListPositionY","dragScrollTranslationY","dragInitialScrollOffsetY","scrollViewDragScrollTranslationY","scrollViewDragInitialScrollOffsetY","draggedHeight","itemOffset","itemHeight","autoscrollTrigger","lastAutoscrollTrigger","previousY","dragY","previousDirection","previousIndex","currentIndex","draggedIndex","state","IDLE","dragEndHandlers","startY","duration","scaleDefault","opacityDefault","dragDirection","lastDragDirectionPivot","autoscrollDelta","value","listContextValue","transform","scale","opacity","setDragDirection","e","direction","velocityY","absoluteY","Math","abs","panGestureHandler","Pan","onBegin","y","translationY","onUpdate","DRAGGED","RELEASED","onEnd","onFinalize","panGestureHandlerWithOptions","activateAfterLongPress","enabled","gestureHandler","Simultaneous","Native","setScrollEnabled","_flatListRef$current","current","setNativeProps","_scrollViewContainerR","resetSharedValues","resetSharedValuesAfterAnimations","setTimeout","reorder","fromIndex","toIndex","updateState","from","to","getIndexFromY","relativeY","count","i","threshold","max","min","height","offset","index","setCurrentIndex","newIndex","newDirection","delta","itemDirection","index1","index2","newOffset1","newHeight1","newOffset2","newHeight2","runDefaultDragAnimations","type","scaleConfig","toValue","opacityConfig","ACTIVE","BEGAN","AUTOSCROLL","handlers","Array","isArray","forEach","fn","currentItemOffset","currentItemHeight","draggedItemOffset","draggedItemHeight","newTopPosition","easing","out","ease","calculateHiddenArea","top","bottom","calculateThresholdArea","hiddenArea","offsetTop","offsetBottom","visibleHeight","area","calculateThresholdAreaParent","shouldScrollParent","thresholdAreaParent","scrollDirection","thresholdArea","autoscrollIncrement","increment","scrollOffset","listRef","handleScroll","contentOffset","startDrag","handleFlatListLayout","nativeEvent","layout","handleRef"],"sourceRoot":"../../../../src","sources":["components/ReorderableListCore/useReorderableListCore.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useCallback","useEffect","useMemo","useState","unstable_batchedUpdates","Gesture","State","Easing","measure","runOnJS","runOnUI","scrollTo","useAnimatedReaction","useAnimatedRef","useAnimatedScrollHandler","useDerivedValue","useSharedValue","withDelay","withTiming","OPACITY_ANIMATION_CONFIG_DEFAULT","SCALE_ANIMATION_CONFIG_DEFAULT","AUTOSCROLL_CONFIG","ReorderableListState","version","split","hasAutomaticBatching","length","parseInt","useReorderableListCore","ref","autoscrollThreshold","autoscrollThresholdOffset","autoscrollSpeedScale","autoscrollDelay","autoscrollActivationDelta","animationDuration","onReorder","onDragStart","onDragEnd","onLayout","onIndexChange","scrollViewContainerRef","scrollViewPageY","scrollViewHeightY","scrollViewScrollOffsetY","scrollViewScrollEnabled","scrollable","initialScrollEnabled","initialScrollViewScrollEnabled","cellAnimations","shouldUpdateActiveItem","panActivateAfterLongPress","panEnabled","flatListRef","activeIndex","setActiveIndex","scrollEnabled","gestureState","UNDETERMINED","currentY","currentTranslationY","currentItemDragCenterY","startItemDragCenterY","flatListScrollOffsetY","flatListHeightY","flatListPageY","dragScrollTranslationY","dragInitialScrollOffsetY","scrollViewDragScrollTranslationY","scrollViewDragInitialScrollOffsetY","draggedHeight","itemOffset","itemHeight","autoscrollTrigger","lastAutoscrollTrigger","dragY","currentIndex","draggedIndex","state","IDLE","dragEndHandlers","startY","duration","scaleDefault","opacityDefault","dragDirection","lastDragDirectionPivot","autoscrollDelta","nestedFlatListPositionY","value","listContextValue","transform","scale","opacity","setDragDirection","e","direction","velocityY","absoluteY","Math","abs","setCurrentItemDragCenterY","itemCenter","itemY","translationY","panGestureHandler","Pan","onBegin","y","onUpdate","DRAGGED","RELEASED","onEnd","onFinalize","panGestureHandlerWithOptions","activateAfterLongPress","enabled","gestureHandler","Simultaneous","Native","setScrollEnabled","_flatListRef$current","current","setNativeProps","_scrollViewContainerR","resetSharedValues","resetSharedValuesAfterAnimations","setTimeout","reorder","fromIndex","toIndex","updateState","from","to","recomputeLayout","itemDirection","index1","index2","newOffset1","newHeight1","newOffset2","newHeight2","computeCurrentIndex","relativeDragCenterY","currentOffset","currentHeight","currentCenter","max","possibleIndex","min","possibleOffset","possibleCenter","distanceFromCurrent","distanceFromPossible","setCurrentIndex","newIndex","index","runDefaultDragAnimations","type","scaleConfig","toValue","opacityConfig","ACTIVE","BEGAN","AUTOSCROLL","handlers","Array","isArray","forEach","fn","currentItemOffset","currentItemHeight","draggedItemOffset","draggedItemHeight","newTopPosition","easing","out","ease","computeHiddenArea","top","bottom","computeThresholdArea","hiddenArea","offsetTop","offsetBottom","threshold","visibleHeight","area","computeContainerThresholdArea","Infinity","shouldScrollContainer","containerThresholdArea","nestedListHiddenArea","getRelativeContainerY","getRelativeListY","scrollDirection","relativeContainerY","relativeListY","thresholdArea","autoscrollIncrement","increment","scrollOffset","listRef","handleScroll","contentOffset","startDrag","handleFlatListLayout","nativeEvent","layout","height","measurement","pageY","handleRef"],"sourceRoot":"../../../../src","sources":["components/ReorderableListCore/useReorderableListCore.ts"],"mappings":"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","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2
- import React, { useMemo } from 'react';
2
+ import React, { useCallback, useMemo } from 'react';
3
3
  import { Gesture, GestureDetector } from 'react-native-gesture-handler';
4
- import Animated, { useAnimatedRef, useAnimatedScrollHandler, useComposedEventHandler, useSharedValue } from 'react-native-reanimated';
4
+ import Animated, { measure, runOnUI, useAnimatedRef, useAnimatedScrollHandler, useComposedEventHandler, useSharedValue } from 'react-native-reanimated';
5
5
  import { ScrollViewContainerContext } from '../contexts/ScrollViewContainerContext';
6
6
  export const ScrollViewContainer = ({
7
7
  onLayout,
@@ -12,6 +12,7 @@ export const ScrollViewContainer = ({
12
12
  const scrollViewScrollEnabled = useSharedValue(scrollEnabled);
13
13
  const scrollViewContainerRef = useAnimatedRef();
14
14
  const scrollViewScrollOffsetY = useSharedValue(0);
15
+ const scrollViewPageY = useSharedValue(0);
15
16
  const scrollViewHeightY = useSharedValue(0);
16
17
  const outerScrollGesture = useMemo(() => Gesture.Native(), []);
17
18
  const handleScroll = useAnimatedScrollHandler(e => {
@@ -20,16 +21,26 @@ export const ScrollViewContainer = ({
20
21
  const composedScrollHandler = useComposedEventHandler([handleScroll, onScroll || null]);
21
22
  const contextValue = useMemo(() => ({
22
23
  scrollViewContainerRef,
24
+ scrollViewPageY,
23
25
  scrollViewHeightY,
24
26
  scrollViewScrollOffsetY,
25
27
  scrollViewScrollEnabled,
26
28
  outerScrollGesture,
27
29
  initialScrollViewScrollEnabled: scrollEnabled
28
- }), [scrollViewContainerRef, scrollViewHeightY, scrollViewScrollOffsetY, scrollViewScrollEnabled, outerScrollGesture, scrollEnabled]);
29
- const handleLayout = e => {
30
+ }), [scrollViewContainerRef, scrollViewPageY, scrollViewHeightY, scrollViewScrollOffsetY, scrollViewScrollEnabled, outerScrollGesture, scrollEnabled]);
31
+ const handleLayout = useCallback(e => {
30
32
  scrollViewHeightY.value = e.nativeEvent.layout.height;
33
+
34
+ // measuring pageY allows wrapping nested lists in other views
35
+ runOnUI(() => {
36
+ const measurement = measure(scrollViewContainerRef);
37
+ if (!measurement) {
38
+ return;
39
+ }
40
+ scrollViewPageY.value = measurement.pageY;
41
+ })();
31
42
  onLayout === null || onLayout === void 0 || onLayout(e);
32
- };
43
+ }, [onLayout, scrollViewContainerRef, scrollViewHeightY, scrollViewPageY]);
33
44
  return /*#__PURE__*/React.createElement(ScrollViewContainerContext.Provider, {
34
45
  value: contextValue
35
46
  }, /*#__PURE__*/React.createElement(GestureDetector, {