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,8 +1,10 @@
1
- import React, {useMemo} from 'react';
1
+ import React, {useCallback, useMemo} from 'react';
2
2
  import {LayoutChangeEvent} from 'react-native';
3
3
 
4
4
  import {Gesture, GestureDetector} from 'react-native-gesture-handler';
5
5
  import Animated, {
6
+ measure,
7
+ runOnUI,
6
8
  useAnimatedRef,
7
9
  useAnimatedScrollHandler,
8
10
  useComposedEventHandler,
@@ -21,6 +23,7 @@ export const ScrollViewContainer: React.FC<ScrollViewContainerProps> = ({
21
23
  const scrollViewScrollEnabled = useSharedValue(scrollEnabled);
22
24
  const scrollViewContainerRef = useAnimatedRef<Animated.ScrollView>();
23
25
  const scrollViewScrollOffsetY = useSharedValue(0);
26
+ const scrollViewPageY = useSharedValue(0);
24
27
  const scrollViewHeightY = useSharedValue(0);
25
28
 
26
29
  const outerScrollGesture = useMemo(() => Gesture.Native(), []);
@@ -40,6 +43,7 @@ export const ScrollViewContainer: React.FC<ScrollViewContainerProps> = ({
40
43
  const contextValue = useMemo(
41
44
  () => ({
42
45
  scrollViewContainerRef,
46
+ scrollViewPageY,
43
47
  scrollViewHeightY,
44
48
  scrollViewScrollOffsetY,
45
49
  scrollViewScrollEnabled,
@@ -48,6 +52,7 @@ export const ScrollViewContainer: React.FC<ScrollViewContainerProps> = ({
48
52
  }),
49
53
  [
50
54
  scrollViewContainerRef,
55
+ scrollViewPageY,
51
56
  scrollViewHeightY,
52
57
  scrollViewScrollOffsetY,
53
58
  scrollViewScrollEnabled,
@@ -56,11 +61,24 @@ export const ScrollViewContainer: React.FC<ScrollViewContainerProps> = ({
56
61
  ],
57
62
  );
58
63
 
59
- const handleLayout = (e: LayoutChangeEvent) => {
60
- scrollViewHeightY.value = e.nativeEvent.layout.height;
64
+ const handleLayout = useCallback(
65
+ (e: LayoutChangeEvent) => {
66
+ scrollViewHeightY.value = e.nativeEvent.layout.height;
61
67
 
62
- onLayout?.(e);
63
- };
68
+ // measuring pageY allows wrapping nested lists in other views
69
+ runOnUI(() => {
70
+ const measurement = measure(scrollViewContainerRef);
71
+ if (!measurement) {
72
+ return;
73
+ }
74
+
75
+ scrollViewPageY.value = measurement.pageY;
76
+ })();
77
+
78
+ onLayout?.(e);
79
+ },
80
+ [onLayout, scrollViewContainerRef, scrollViewHeightY, scrollViewPageY],
81
+ );
64
82
 
65
83
  return (
66
84
  <ScrollViewContainerContext.Provider value={contextValue}>
@@ -6,6 +6,7 @@ import {SharedValue} from 'react-native-reanimated';
6
6
 
7
7
  interface ScrollViewContainerContextData {
8
8
  scrollViewContainerRef: React.RefObject<ScrollView>;
9
+ scrollViewPageY: SharedValue<number>;
9
10
  scrollViewHeightY: SharedValue<number>;
10
11
  scrollViewScrollOffsetY: SharedValue<number>;
11
12
  scrollViewScrollEnabled: SharedValue<boolean>;
@@ -95,11 +95,6 @@ export interface ReorderableListProps<T>
95
95
  * Default: `5`.
96
96
  */
97
97
  autoscrollActivationDelta?: number;
98
- /**
99
- * Specifies the fraction of an item's size at which it will shift when a dragged item crosses over it.
100
- * For example, a value of 0.2 means the item shifts when the dragged item passes 20% of its height (vertical list). Default is `0.2`.
101
- */
102
- dragReorderThreshold?: number;
103
98
  /**
104
99
  * Duration of the animations in milliseconds.
105
100
  * Be aware that users won't be able to drag a new item until the dragged item is released and