react-native-reorderable-list 0.6.1 → 0.7.0
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/README.md +28 -3
- package/lib/commonjs/components/NestedReorderableList.js +41 -0
- package/lib/commonjs/components/NestedReorderableList.js.map +1 -0
- package/lib/commonjs/components/ReorderableList.js +29 -0
- package/lib/commonjs/components/ReorderableList.js.map +1 -0
- package/lib/commonjs/components/ReorderableListCell.js +1 -3
- package/lib/commonjs/components/ReorderableListCell.js.map +1 -1
- package/lib/commonjs/components/{ReorderableList/ReorderableList.js → ReorderableListCore/ReorderableListCore.js} +34 -9
- package/lib/commonjs/components/ReorderableListCore/ReorderableListCore.js.map +1 -0
- package/lib/commonjs/components/ReorderableListCore/constants.ios.js.map +1 -0
- package/lib/commonjs/components/ReorderableListCore/constants.js.map +1 -0
- package/lib/commonjs/components/ReorderableListCore/index.js +17 -0
- package/lib/commonjs/components/ReorderableListCore/index.js.map +1 -0
- package/lib/commonjs/components/{ReorderableList/useReorderableList.js → ReorderableListCore/useReorderableListCore.js} +171 -61
- package/lib/commonjs/components/ReorderableListCore/useReorderableListCore.js.map +1 -0
- package/lib/commonjs/components/ScrollViewContainer.js +53 -0
- package/lib/commonjs/components/ScrollViewContainer.js.map +1 -0
- package/lib/commonjs/components/index.js +22 -0
- package/lib/commonjs/components/index.js.map +1 -1
- package/lib/commonjs/contexts/ScrollViewContainerContext.js +10 -0
- package/lib/commonjs/contexts/ScrollViewContainerContext.js.map +1 -0
- package/lib/commonjs/contexts/index.js +11 -0
- package/lib/commonjs/contexts/index.js.map +1 -1
- package/lib/commonjs/index.js +12 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/components/NestedReorderableList.js +33 -0
- package/lib/module/components/NestedReorderableList.js.map +1 -0
- package/lib/module/components/ReorderableList.js +21 -0
- package/lib/module/components/ReorderableList.js.map +1 -0
- package/lib/module/components/ReorderableListCell.js +1 -3
- package/lib/module/components/ReorderableListCell.js.map +1 -1
- package/lib/module/components/{ReorderableList/ReorderableList.js → ReorderableListCore/ReorderableListCore.js} +37 -12
- package/lib/module/components/ReorderableListCore/ReorderableListCore.js.map +1 -0
- package/lib/module/components/ReorderableListCore/constants.ios.js.map +1 -0
- package/lib/module/components/{ReorderableList → ReorderableListCore}/constants.js.map +1 -1
- package/lib/module/components/ReorderableListCore/index.js +2 -0
- package/lib/module/components/ReorderableListCore/index.js.map +1 -0
- package/lib/module/components/{ReorderableList/useReorderableList.js → ReorderableListCore/useReorderableListCore.js} +170 -60
- package/lib/module/components/ReorderableListCore/useReorderableListCore.js.map +1 -0
- package/lib/module/components/ScrollViewContainer.js +44 -0
- package/lib/module/components/ScrollViewContainer.js.map +1 -0
- package/lib/module/components/index.js +2 -0
- package/lib/module/components/index.js.map +1 -1
- package/lib/module/contexts/ScrollViewContainerContext.js +3 -0
- package/lib/module/contexts/ScrollViewContainerContext.js.map +1 -0
- package/lib/module/contexts/index.js +1 -0
- package/lib/module/contexts/index.js.map +1 -1
- package/lib/module/index.js +2 -2
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/components/NestedReorderableList.d.ts +5 -0
- package/lib/typescript/components/NestedReorderableList.d.ts.map +1 -0
- package/lib/typescript/components/ReorderableList.d.ts +5 -0
- package/lib/typescript/components/ReorderableList.d.ts.map +1 -0
- package/lib/typescript/components/ReorderableListCell.d.ts.map +1 -1
- package/lib/typescript/components/ReorderableListCore/ReorderableListCore.d.ts +20 -0
- package/lib/typescript/components/ReorderableListCore/ReorderableListCore.d.ts.map +1 -0
- package/lib/typescript/components/ReorderableListCore/constants.d.ts.map +1 -0
- package/lib/typescript/components/ReorderableListCore/constants.ios.d.ts.map +1 -0
- package/lib/typescript/components/ReorderableListCore/index.d.ts +2 -0
- package/lib/typescript/components/ReorderableListCore/index.d.ts.map +1 -0
- package/lib/typescript/components/ReorderableListCore/useReorderableListCore.d.ts +44 -0
- package/lib/typescript/components/ReorderableListCore/useReorderableListCore.d.ts.map +1 -0
- package/lib/typescript/components/ScrollViewContainer.d.ts +4 -0
- package/lib/typescript/components/ScrollViewContainer.d.ts.map +1 -0
- package/lib/typescript/components/index.d.ts +2 -0
- package/lib/typescript/components/index.d.ts.map +1 -1
- package/lib/typescript/contexts/ScrollViewContainerContext.d.ts +15 -0
- package/lib/typescript/contexts/ScrollViewContainerContext.d.ts.map +1 -0
- package/lib/typescript/contexts/index.d.ts +1 -0
- package/lib/typescript/contexts/index.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +3 -3
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/types/props.d.ts +13 -1
- package/lib/typescript/types/props.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/NestedReorderableList.tsx +43 -0
- package/src/components/ReorderableList.tsx +29 -0
- package/src/components/ReorderableListCell.tsx +1 -3
- package/src/components/ReorderableListCore/ReorderableListCore.tsx +162 -0
- package/src/components/ReorderableListCore/index.ts +1 -0
- package/src/components/{ReorderableList/useReorderableList.ts → ReorderableListCore/useReorderableListCore.ts} +252 -75
- package/src/components/ScrollViewContainer.tsx +74 -0
- package/src/components/index.ts +2 -0
- package/src/contexts/ScrollViewContainerContext.ts +18 -0
- package/src/contexts/index.ts +1 -0
- package/src/index.ts +10 -1
- package/src/types/props.ts +21 -1
- package/lib/commonjs/components/ReorderableList/ReorderableList.js.map +0 -1
- package/lib/commonjs/components/ReorderableList/constants.ios.js.map +0 -1
- package/lib/commonjs/components/ReorderableList/constants.js.map +0 -1
- package/lib/commonjs/components/ReorderableList/index.js +0 -17
- package/lib/commonjs/components/ReorderableList/index.js.map +0 -1
- package/lib/commonjs/components/ReorderableList/useReorderableList.js.map +0 -1
- package/lib/module/components/ReorderableList/ReorderableList.js.map +0 -1
- package/lib/module/components/ReorderableList/constants.ios.js.map +0 -1
- package/lib/module/components/ReorderableList/index.js +0 -2
- package/lib/module/components/ReorderableList/index.js.map +0 -1
- package/lib/module/components/ReorderableList/useReorderableList.js.map +0 -1
- package/lib/typescript/components/ReorderableList/ReorderableList.d.ts +0 -8
- package/lib/typescript/components/ReorderableList/ReorderableList.d.ts.map +0 -1
- package/lib/typescript/components/ReorderableList/constants.d.ts.map +0 -1
- package/lib/typescript/components/ReorderableList/constants.ios.d.ts.map +0 -1
- package/lib/typescript/components/ReorderableList/index.d.ts +0 -2
- package/lib/typescript/components/ReorderableList/index.d.ts.map +0 -1
- package/lib/typescript/components/ReorderableList/useReorderableList.d.ts +0 -36
- package/lib/typescript/components/ReorderableList/useReorderableList.d.ts.map +0 -1
- package/src/components/ReorderableList/ReorderableList.tsx +0 -109
- package/src/components/ReorderableList/index.ts +0 -1
- /package/lib/commonjs/components/{ReorderableList → ReorderableListCore}/constants.ios.js +0 -0
- /package/lib/commonjs/components/{ReorderableList → ReorderableListCore}/constants.js +0 -0
- /package/lib/module/components/{ReorderableList → ReorderableListCore}/constants.ios.js +0 -0
- /package/lib/module/components/{ReorderableList → ReorderableListCore}/constants.js +0 -0
- /package/lib/typescript/components/{ReorderableList → ReorderableListCore}/constants.d.ts +0 -0
- /package/lib/typescript/components/{ReorderableList → ReorderableListCore}/constants.ios.d.ts +0 -0
- /package/src/components/{ReorderableList → ReorderableListCore}/constants.ios.ts +0 -0
- /package/src/components/{ReorderableList → ReorderableListCore}/constants.ts +0 -0
|
@@ -0,0 +1,21 @@
|
|
|
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, { forwardRef } from 'react';
|
|
3
|
+
import { ReorderableListCore } from './ReorderableListCore';
|
|
4
|
+
const ReorderableListWithRef = ({
|
|
5
|
+
scrollEnabled = true,
|
|
6
|
+
...rest
|
|
7
|
+
}, ref) => {
|
|
8
|
+
return /*#__PURE__*/React.createElement(ReorderableListCore, _extends({}, rest, {
|
|
9
|
+
ref: ref,
|
|
10
|
+
scrollEnabled: scrollEnabled,
|
|
11
|
+
initialScrollViewScrollEnabled: true,
|
|
12
|
+
scrollable: true,
|
|
13
|
+
scrollViewContainerRef: undefined,
|
|
14
|
+
scrollViewScrollOffsetY: undefined,
|
|
15
|
+
scrollViewHeightY: undefined,
|
|
16
|
+
outerScrollGesture: undefined,
|
|
17
|
+
scrollViewScrollEnabled: undefined
|
|
18
|
+
}));
|
|
19
|
+
};
|
|
20
|
+
export const ReorderableList = /*#__PURE__*/forwardRef(ReorderableListWithRef);
|
|
21
|
+
//# sourceMappingURL=ReorderableList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","forwardRef","ReorderableListCore","ReorderableListWithRef","scrollEnabled","rest","ref","createElement","_extends","initialScrollViewScrollEnabled","scrollable","scrollViewContainerRef","undefined","scrollViewScrollOffsetY","scrollViewHeightY","outerScrollGesture","scrollViewScrollEnabled","ReorderableList"],"sourceRoot":"../../../src","sources":["components/ReorderableList.tsx"],"mappings":";AAAA,OAAOA,KAAK,IAAGC,UAAU,QAAO,OAAO;AAGvC,SAAQC,mBAAmB,QAAO,uBAAuB;AAGzD,MAAMC,sBAAsB,GAAGA,CAC7B;EAACC,aAAa,GAAG,IAAI;EAAE,GAAGC;AAA6B,CAAC,EACxDC,GAA2B,KACxB;EACH,oBACEN,KAAA,CAAAO,aAAA,CAACL,mBAAmB,EAAAM,QAAA,KACdH,IAAI;IACRC,GAAG,EAAEA,GAAI;IACTF,aAAa,EAAEA,aAAc;IAC7BK,8BAA8B,EAAE,IAAK;IACrCC,UAAU,EAAE,IAAK;IACjBC,sBAAsB,EAAEC,SAAU;IAClCC,uBAAuB,EAAED,SAAU;IACnCE,iBAAiB,EAAEF,SAAU;IAC7BG,kBAAkB,EAAEH,SAAU;IAC9BI,uBAAuB,EAAEJ;EAAU,EACpC,CAAC;AAEN,CAAC;AAED,OAAO,MAAMK,eAAe,gBAAGhB,UAAU,CAACE,sBAAsB,CAEhD","ignoreList":[]}
|
|
@@ -69,9 +69,7 @@ export const ReorderableListCell = /*#__PURE__*/memo(({
|
|
|
69
69
|
itemOffset.value[index] = y;
|
|
70
70
|
itemHeight.value[index] = height;
|
|
71
71
|
})(e.nativeEvent.layout.y, e.nativeEvent.layout.height);
|
|
72
|
-
|
|
73
|
-
onLayout(e);
|
|
74
|
-
}
|
|
72
|
+
onLayout === null || onLayout === void 0 || onLayout(e);
|
|
75
73
|
};
|
|
76
74
|
return /*#__PURE__*/React.createElement(ReorderableCellContext.Provider, {
|
|
77
75
|
value: contextValue
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","memo","useCallback","useMemo","Animated","Easing","runOnUI","useAnimatedReaction","useAnimatedStyle","useSharedValue","withTiming","ReorderableCellContext","ReorderableListContext","useContext","ReorderableListCell","index","startDrag","children","onLayout","itemOffset","itemHeight","dragY","draggedIndex","animationDuration","dragHandler","contextValue","currentIndex","draggedHeight","itemZIndex","itemPositionY","itemDragY","itemIndex","value","moveDown","startMove","Math","min","endMove","max","newValue","duration","easing","out","ease","animatedStyle","zIndex","transform","translateY","handleLayout","e","y","height","nativeEvent","layout","createElement","Provider","View","style"],"sourceRoot":"../../../src","sources":["components/ReorderableListCell.tsx"],"mappings":"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
|
|
1
|
+
{"version":3,"names":["React","memo","useCallback","useMemo","Animated","Easing","runOnUI","useAnimatedReaction","useAnimatedStyle","useSharedValue","withTiming","ReorderableCellContext","ReorderableListContext","useContext","ReorderableListCell","index","startDrag","children","onLayout","itemOffset","itemHeight","dragY","draggedIndex","animationDuration","dragHandler","contextValue","currentIndex","draggedHeight","itemZIndex","itemPositionY","itemDragY","itemIndex","value","moveDown","startMove","Math","min","endMove","max","newValue","duration","easing","out","ease","animatedStyle","zIndex","transform","translateY","handleLayout","e","y","height","nativeEvent","layout","createElement","Provider","View","style"],"sourceRoot":"../../../src","sources":["components/ReorderableListCell.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,14 +1,14 @@
|
|
|
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, { useCallback } from 'react';
|
|
3
|
-
import { FlatList } from 'react-native';
|
|
4
|
-
import { GestureDetector } from 'react-native-gesture-handler';
|
|
2
|
+
import React, { useCallback, useMemo } from 'react';
|
|
3
|
+
import { FlatList, Platform } from 'react-native';
|
|
4
|
+
import { Gesture, GestureDetector } from 'react-native-gesture-handler';
|
|
5
5
|
import Animated from 'react-native-reanimated';
|
|
6
6
|
import { AUTOSCROLL_DELAY } from './constants';
|
|
7
|
-
import {
|
|
7
|
+
import { useReorderableListCore } from './useReorderableListCore';
|
|
8
8
|
import { ReorderableListContext } from '../../contexts';
|
|
9
9
|
import { ReorderableListCell } from '../ReorderableListCell';
|
|
10
10
|
const AnimatedFlatList = Animated.createAnimatedComponent(FlatList);
|
|
11
|
-
const
|
|
11
|
+
const ReorderableListCore = ({
|
|
12
12
|
data,
|
|
13
13
|
autoscrollThreshold = 0.1,
|
|
14
14
|
autoscrollSpeedScale = 1,
|
|
@@ -21,6 +21,14 @@ const ReorderableList = ({
|
|
|
21
21
|
onDragEnd,
|
|
22
22
|
keyExtractor,
|
|
23
23
|
extraData,
|
|
24
|
+
scrollViewContainerRef,
|
|
25
|
+
scrollViewHeightY,
|
|
26
|
+
scrollViewScrollOffsetY,
|
|
27
|
+
scrollViewScrollEnabled,
|
|
28
|
+
scrollEnabled,
|
|
29
|
+
initialScrollViewScrollEnabled,
|
|
30
|
+
scrollable,
|
|
31
|
+
outerScrollGesture,
|
|
24
32
|
...rest
|
|
25
33
|
}, ref) => {
|
|
26
34
|
const {
|
|
@@ -35,7 +43,7 @@ const ReorderableList = ({
|
|
|
35
43
|
dragY,
|
|
36
44
|
draggedIndex,
|
|
37
45
|
duration
|
|
38
|
-
} =
|
|
46
|
+
} = useReorderableListCore({
|
|
39
47
|
ref,
|
|
40
48
|
autoscrollThreshold,
|
|
41
49
|
autoscrollSpeedScale,
|
|
@@ -45,8 +53,24 @@ const ReorderableList = ({
|
|
|
45
53
|
onLayout,
|
|
46
54
|
onReorder,
|
|
47
55
|
onScroll,
|
|
48
|
-
onDragEnd
|
|
56
|
+
onDragEnd,
|
|
57
|
+
scrollViewContainerRef,
|
|
58
|
+
scrollViewHeightY,
|
|
59
|
+
scrollViewScrollOffsetY,
|
|
60
|
+
scrollViewScrollEnabled,
|
|
61
|
+
// flatlist will default to true if we pass explicitly undefined,
|
|
62
|
+
// but internally we would treat it as false, so we force true
|
|
63
|
+
initialScrollEnabled: typeof scrollEnabled === 'undefined' ? true : scrollEnabled,
|
|
64
|
+
initialScrollViewScrollEnabled: typeof initialScrollViewScrollEnabled === 'undefined' ? true : initialScrollViewScrollEnabled,
|
|
65
|
+
nestedScrollable: scrollable
|
|
49
66
|
});
|
|
67
|
+
const combinedGesture = useMemo(() => {
|
|
68
|
+
// android is able to handle nested scroll view, but not the full height ones like iOS
|
|
69
|
+
if (outerScrollGesture && !(Platform.OS === 'android' && scrollable)) {
|
|
70
|
+
return Gesture.Simultaneous(outerScrollGesture, gestureHandler);
|
|
71
|
+
}
|
|
72
|
+
return gestureHandler;
|
|
73
|
+
}, [scrollable, outerScrollGesture, gestureHandler]);
|
|
50
74
|
const renderAnimatedCell = useCallback(({
|
|
51
75
|
cellKey,
|
|
52
76
|
...props
|
|
@@ -63,7 +87,7 @@ const ReorderableList = ({
|
|
|
63
87
|
return /*#__PURE__*/React.createElement(ReorderableListContext.Provider, {
|
|
64
88
|
value: listContextValue
|
|
65
89
|
}, /*#__PURE__*/React.createElement(GestureDetector, {
|
|
66
|
-
gesture:
|
|
90
|
+
gesture: combinedGesture
|
|
67
91
|
}, /*#__PURE__*/React.createElement(AnimatedFlatList, _extends({}, rest, {
|
|
68
92
|
ref: handleRef,
|
|
69
93
|
data: data,
|
|
@@ -75,9 +99,10 @@ const ReorderableList = ({
|
|
|
75
99
|
removeClippedSubviews: false,
|
|
76
100
|
keyExtractor: keyExtractor,
|
|
77
101
|
extraData: extraData,
|
|
78
|
-
numColumns: 1
|
|
102
|
+
numColumns: 1,
|
|
103
|
+
scrollEnabled: scrollEnabled
|
|
79
104
|
}))));
|
|
80
105
|
};
|
|
81
|
-
const
|
|
82
|
-
export {
|
|
83
|
-
//# sourceMappingURL=
|
|
106
|
+
const MemoizedReorderableListCore = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(ReorderableListCore));
|
|
107
|
+
export { MemoizedReorderableListCore as ReorderableListCore };
|
|
108
|
+
//# sourceMappingURL=ReorderableListCore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useCallback","useMemo","FlatList","Platform","Gesture","GestureDetector","Animated","AUTOSCROLL_DELAY","useReorderableListCore","ReorderableListContext","ReorderableListCell","AnimatedFlatList","createAnimatedComponent","ReorderableListCore","data","autoscrollThreshold","autoscrollSpeedScale","autoscrollDelay","animationDuration","dragReorderThreshold","onLayout","onReorder","onScroll","onDragEnd","keyExtractor","extraData","scrollViewContainerRef","scrollViewHeightY","scrollViewScrollOffsetY","scrollViewScrollEnabled","scrollEnabled","initialScrollViewScrollEnabled","scrollable","outerScrollGesture","rest","ref","gestureHandler","handleScroll","handleFlatListLayout","handleRef","startDrag","listContextValue","itemOffset","itemHeight","dragY","draggedIndex","duration","initialScrollEnabled","nestedScrollable","combinedGesture","OS","Simultaneous","renderAnimatedCell","cellKey","props","createElement","_extends","key","index","Provider","value","gesture","CellRendererComponent","scrollEventThrottle","horizontal","removeClippedSubviews","numColumns","MemoizedReorderableListCore","memo","forwardRef"],"sourceRoot":"../../../../src","sources":["components/ReorderableListCore/ReorderableListCore.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["AUTOSCROLL_INCREMENT","AUTOSCROLL_DELAY"],"sourceRoot":"../../../../src","sources":["components/ReorderableListCore/constants.ios.ts"],"mappings":"AAAA;AACA,OAAO,MAAMA,oBAAoB,GAAG,EAAE;AACtC,OAAO,MAAMC,gBAAgB,GAAG,GAAG","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["AUTOSCROLL_INCREMENT","AUTOSCROLL_DELAY"],"sourceRoot":"../../../../src","sources":["components/
|
|
1
|
+
{"version":3,"names":["AUTOSCROLL_INCREMENT","AUTOSCROLL_DELAY"],"sourceRoot":"../../../../src","sources":["components/ReorderableListCore/constants.ts"],"mappings":"AAAA;AACA,OAAO,MAAMA,oBAAoB,GAAG,CAAC;AACrC,OAAO,MAAMC,gBAAgB,GAAG,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../../src","sources":["components/ReorderableListCore/index.ts"],"mappings":"AAAA,cAAc,uBAAuB","ignoreList":[]}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import React, { useCallback, useMemo } from 'react';
|
|
2
2
|
import { unstable_batchedUpdates } from 'react-native';
|
|
3
3
|
import { Gesture, State } from 'react-native-gesture-handler';
|
|
4
|
-
import { Easing, cancelAnimation,
|
|
4
|
+
import { Easing, cancelAnimation, runOnJS, runOnUI, scrollTo, useAnimatedReaction, useAnimatedRef, useAnimatedScrollHandler, useSharedValue, withDelay, withTiming } from 'react-native-reanimated';
|
|
5
5
|
import { AUTOSCROLL_INCREMENT } from './constants';
|
|
6
6
|
import { ReorderableListState } from '../../types';
|
|
7
7
|
const version = React.version.split('.');
|
|
8
8
|
const hasAutomaticBatching = version.length ? parseInt(version[0], 10) >= 18 : false;
|
|
9
|
-
export const
|
|
9
|
+
export const useReorderableListCore = ({
|
|
10
10
|
ref,
|
|
11
11
|
autoscrollThreshold,
|
|
12
12
|
autoscrollSpeedScale,
|
|
@@ -16,22 +16,30 @@ export const useReorderableList = ({
|
|
|
16
16
|
onReorder,
|
|
17
17
|
onDragEnd,
|
|
18
18
|
onScroll,
|
|
19
|
-
onLayout
|
|
19
|
+
onLayout,
|
|
20
|
+
scrollViewContainerRef,
|
|
21
|
+
scrollViewHeightY,
|
|
22
|
+
scrollViewScrollOffsetY,
|
|
23
|
+
scrollViewScrollEnabled,
|
|
24
|
+
initialScrollEnabled,
|
|
25
|
+
initialScrollViewScrollEnabled,
|
|
26
|
+
nestedScrollable
|
|
20
27
|
}) => {
|
|
21
|
-
const
|
|
22
|
-
const
|
|
28
|
+
const flatListRef = useAnimatedRef();
|
|
29
|
+
const scrollEnabled = useSharedValue(initialScrollEnabled);
|
|
23
30
|
const gestureState = useSharedValue(State.UNDETERMINED);
|
|
24
31
|
const currentY = useSharedValue(0);
|
|
25
32
|
const currentTranslationY = useSharedValue(0);
|
|
26
|
-
const
|
|
27
|
-
const
|
|
33
|
+
const flatListScrollOffsetY = useSharedValue(0);
|
|
34
|
+
const flatListHeightY = useSharedValue(0);
|
|
35
|
+
const nestedFlatListPositionY = useSharedValue(0);
|
|
28
36
|
const dragScrollTranslationY = useSharedValue(0);
|
|
29
37
|
const dragInitialScrollOffsetY = useSharedValue(0);
|
|
38
|
+
const scrollViewDragScrollTranslationY = useSharedValue(0);
|
|
39
|
+
const scrollViewDragInitialScrollOffsetY = useSharedValue(0);
|
|
30
40
|
const draggedHeight = useSharedValue(0);
|
|
31
41
|
const itemOffset = useSharedValue([]);
|
|
32
42
|
const itemHeight = useSharedValue([]);
|
|
33
|
-
const topAutoscrollArea = useSharedValue(0);
|
|
34
|
-
const bottomAutoscrollArea = useSharedValue(0);
|
|
35
43
|
const autoscrollTrigger = useSharedValue(-1);
|
|
36
44
|
const lastAutoscrollTrigger = useSharedValue(-1);
|
|
37
45
|
const previousY = useSharedValue(0);
|
|
@@ -58,9 +66,8 @@ export const useReorderableList = ({
|
|
|
58
66
|
const panGestureHandler = useMemo(() => Gesture.Pan().onBegin(e => {
|
|
59
67
|
// prevent new dragging until item is completely released
|
|
60
68
|
if (state.value === ReorderableListState.IDLE) {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
currentY.value = relativeY;
|
|
69
|
+
startY.value = e.y;
|
|
70
|
+
currentY.value = e.y;
|
|
64
71
|
currentTranslationY.value = e.translationY;
|
|
65
72
|
if (draggedIndex.value >= 0) {
|
|
66
73
|
dragY.value = e.translationY;
|
|
@@ -72,29 +79,40 @@ export const useReorderableList = ({
|
|
|
72
79
|
currentY.value = startY.value + e.translationY;
|
|
73
80
|
currentTranslationY.value = e.translationY;
|
|
74
81
|
if (draggedIndex.value >= 0) {
|
|
75
|
-
dragY.value = e.translationY + dragScrollTranslationY.value;
|
|
82
|
+
dragY.value = e.translationY + dragScrollTranslationY.value + scrollViewDragScrollTranslationY.value;
|
|
76
83
|
}
|
|
77
84
|
gestureState.value = e.state;
|
|
78
85
|
}
|
|
79
|
-
}).onEnd(e => gestureState.value = e.state).onFinalize(e => gestureState.value = e.state), [
|
|
86
|
+
}).onEnd(e => gestureState.value = e.state).onFinalize(e => gestureState.value = e.state), [currentTranslationY, currentY, dragScrollTranslationY, scrollViewDragScrollTranslationY, draggedIndex, gestureState, dragY, startY, state]);
|
|
80
87
|
const gestureHandler = useMemo(() => Gesture.Simultaneous(Gesture.Native(), panGestureHandler), [panGestureHandler]);
|
|
81
88
|
const setScrollEnabled = useCallback(enabled => {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
scrollEnabled
|
|
86
|
-
|
|
87
|
-
|
|
89
|
+
// if scroll is enabled on list props then we can toggle it
|
|
90
|
+
if (initialScrollEnabled) {
|
|
91
|
+
var _flatListRef$current;
|
|
92
|
+
scrollEnabled.value = enabled;
|
|
93
|
+
(_flatListRef$current = flatListRef.current) === null || _flatListRef$current === void 0 || _flatListRef$current.setNativeProps({
|
|
94
|
+
scrollEnabled: enabled
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
if (scrollViewContainerRef && scrollViewScrollEnabled && initialScrollViewScrollEnabled) {
|
|
98
|
+
var _scrollViewContainerR;
|
|
99
|
+
scrollViewScrollEnabled.value = enabled;
|
|
100
|
+
(_scrollViewContainerR = scrollViewContainerRef.current) === null || _scrollViewContainerR === void 0 || _scrollViewContainerR.setNativeProps({
|
|
101
|
+
scrollEnabled: enabled
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
}, [initialScrollEnabled, flatListRef, scrollEnabled, initialScrollViewScrollEnabled, scrollViewContainerRef, scrollViewScrollEnabled]);
|
|
88
105
|
const resetSharedValues = useCallback(() => {
|
|
89
106
|
'worklet';
|
|
90
107
|
|
|
91
|
-
draggedIndex.value = -1;
|
|
92
108
|
// current index is reset on item render for the on end event
|
|
93
|
-
|
|
109
|
+
draggedIndex.value = -1;
|
|
94
110
|
// released flag is reset after release is triggered in the item
|
|
95
111
|
state.value = ReorderableListState.IDLE;
|
|
112
|
+
dragY.value = 0;
|
|
96
113
|
dragScrollTranslationY.value = 0;
|
|
97
|
-
|
|
114
|
+
scrollViewDragScrollTranslationY.value = 0;
|
|
115
|
+
}, [dragY, dragScrollTranslationY, scrollViewDragScrollTranslationY, draggedIndex, state]);
|
|
98
116
|
const reorder = (fromIndex, toIndex) => {
|
|
99
117
|
runOnUI(resetSharedValues)();
|
|
100
118
|
if (fromIndex !== toIndex) {
|
|
@@ -114,7 +132,7 @@ export const useReorderableList = ({
|
|
|
114
132
|
const getIndexFromY = useCallback(y => {
|
|
115
133
|
'worklet';
|
|
116
134
|
|
|
117
|
-
const relativeY =
|
|
135
|
+
const relativeY = flatListScrollOffsetY.value + y;
|
|
118
136
|
const count = itemOffset.value.length;
|
|
119
137
|
for (let i = 0; i < count; i++) {
|
|
120
138
|
if (currentIndex.value === i) {
|
|
@@ -135,7 +153,7 @@ export const useReorderableList = ({
|
|
|
135
153
|
index: currentIndex.value,
|
|
136
154
|
direction: previousDirection.value
|
|
137
155
|
};
|
|
138
|
-
}, [dragReorderThreshold, currentIndex,
|
|
156
|
+
}, [dragReorderThreshold, currentIndex, flatListScrollOffsetY, previousDirection, itemOffset, itemHeight]);
|
|
139
157
|
const setCurrentIndex = useCallback(y => {
|
|
140
158
|
'worklet';
|
|
141
159
|
|
|
@@ -203,10 +221,87 @@ export const useReorderableList = ({
|
|
|
203
221
|
}
|
|
204
222
|
}
|
|
205
223
|
});
|
|
206
|
-
|
|
224
|
+
const calculateHiddenArea = useCallback(() => {
|
|
225
|
+
'worklet';
|
|
226
|
+
|
|
227
|
+
if (!scrollViewScrollOffsetY || !scrollViewHeightY) {
|
|
228
|
+
return {
|
|
229
|
+
top: 0,
|
|
230
|
+
bottom: 0
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
// hidden area cannot be negative
|
|
235
|
+
const top = Math.max(0, scrollViewScrollOffsetY.value - nestedFlatListPositionY.value);
|
|
236
|
+
const bottom = Math.max(0, nestedFlatListPositionY.value + flatListHeightY.value - (scrollViewScrollOffsetY.value + scrollViewHeightY.value));
|
|
237
|
+
return {
|
|
238
|
+
top,
|
|
239
|
+
bottom
|
|
240
|
+
};
|
|
241
|
+
}, [scrollViewScrollOffsetY, scrollViewHeightY, nestedFlatListPositionY, flatListHeightY]);
|
|
242
|
+
const calculateThresholdArea = useCallback(hiddenArea => {
|
|
243
|
+
'worklet';
|
|
244
|
+
|
|
245
|
+
const threshold = Math.max(0, Math.min(autoscrollThreshold, 0.4));
|
|
246
|
+
const visibleHeight = flatListHeightY.value - (hiddenArea.top + hiddenArea.bottom);
|
|
247
|
+
const top = visibleHeight * threshold;
|
|
248
|
+
const bottom = flatListHeightY.value - top;
|
|
249
|
+
return {
|
|
250
|
+
top,
|
|
251
|
+
bottom
|
|
252
|
+
};
|
|
253
|
+
}, [autoscrollThreshold, flatListHeightY]);
|
|
254
|
+
const calculateThresholdAreaParent = useCallback(hiddenArea => {
|
|
255
|
+
'worklet';
|
|
256
|
+
|
|
257
|
+
const threshold = Math.max(0, Math.min(autoscrollThreshold, 0.4));
|
|
258
|
+
const top = flatListHeightY.value * threshold;
|
|
259
|
+
const bottom = flatListHeightY.value - top;
|
|
260
|
+
|
|
261
|
+
// if the hidden area is 0 then we don't have a threshold area
|
|
262
|
+
// we might have floating errors like 0.0001 which we should ignore
|
|
263
|
+
return {
|
|
264
|
+
top: hiddenArea.top > 0.1 ? top + hiddenArea.top : 0,
|
|
265
|
+
bottom: hiddenArea.bottom > 0.1 ? bottom - hiddenArea.bottom : 0
|
|
266
|
+
};
|
|
267
|
+
}, [autoscrollThreshold, flatListHeightY]);
|
|
268
|
+
const shouldScrollParent = useCallback(y => {
|
|
269
|
+
'worklet';
|
|
270
|
+
|
|
271
|
+
const hiddenArea = calculateHiddenArea();
|
|
272
|
+
const thresholdAreaParent = calculateThresholdAreaParent(hiddenArea);
|
|
273
|
+
|
|
274
|
+
// we might have floating errors like 0.0001 which we should ignore
|
|
275
|
+
return hiddenArea.top > 0.1 && y <= thresholdAreaParent.top || hiddenArea.bottom > 0.1 && y >= thresholdAreaParent.bottom;
|
|
276
|
+
}, [calculateHiddenArea, calculateThresholdAreaParent]);
|
|
277
|
+
const scrollDirection = useCallback(y => {
|
|
278
|
+
'worklet';
|
|
279
|
+
|
|
280
|
+
const hiddenArea = calculateHiddenArea();
|
|
281
|
+
if (shouldScrollParent(y)) {
|
|
282
|
+
const thresholdAreaParent = calculateThresholdAreaParent(hiddenArea);
|
|
283
|
+
if (y <= thresholdAreaParent.top) {
|
|
284
|
+
return -1;
|
|
285
|
+
}
|
|
286
|
+
if (y >= thresholdAreaParent.bottom) {
|
|
287
|
+
return 1;
|
|
288
|
+
}
|
|
289
|
+
return 0;
|
|
290
|
+
} else if (nestedScrollable) {
|
|
291
|
+
const thresholdArea = calculateThresholdArea(hiddenArea);
|
|
292
|
+
if (y <= thresholdArea.top) {
|
|
293
|
+
return -1;
|
|
294
|
+
}
|
|
295
|
+
if (y >= thresholdArea.bottom) {
|
|
296
|
+
return 1;
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
return 0;
|
|
300
|
+
}, [nestedScrollable, shouldScrollParent, calculateHiddenArea, calculateThresholdArea, calculateThresholdAreaParent]);
|
|
301
|
+
useAnimatedReaction(() => currentY.value + scrollViewDragScrollTranslationY.value, y => {
|
|
207
302
|
if (state.value === ReorderableListState.DRAGGING || state.value === ReorderableListState.AUTO_SCROLL) {
|
|
208
303
|
setCurrentIndex(y);
|
|
209
|
-
if (y
|
|
304
|
+
if (scrollDirection(y)) {
|
|
210
305
|
if (state.value !== ReorderableListState.AUTO_SCROLL) {
|
|
211
306
|
// trigger autoscroll
|
|
212
307
|
lastAutoscrollTrigger.value = autoscrollTrigger.value;
|
|
@@ -220,35 +315,62 @@ export const useReorderableList = ({
|
|
|
220
315
|
});
|
|
221
316
|
useAnimatedReaction(() => autoscrollTrigger.value, () => {
|
|
222
317
|
if (autoscrollTrigger.value !== lastAutoscrollTrigger.value && state.value === ReorderableListState.AUTO_SCROLL) {
|
|
223
|
-
|
|
318
|
+
let y = currentY.value + scrollViewDragScrollTranslationY.value;
|
|
319
|
+
const autoscrollIncrement = scrollDirection(y) * AUTOSCROLL_INCREMENT * autoscrollSpeedScale;
|
|
224
320
|
if (autoscrollIncrement !== 0) {
|
|
225
|
-
|
|
321
|
+
let scrollOffset = flatListScrollOffsetY.value;
|
|
322
|
+
let listRef = flatListRef;
|
|
323
|
+
if (shouldScrollParent(y) && scrollViewScrollOffsetY) {
|
|
324
|
+
scrollOffset = scrollViewScrollOffsetY.value;
|
|
325
|
+
listRef = scrollViewContainerRef;
|
|
326
|
+
}
|
|
327
|
+
scrollTo(listRef, 0, scrollOffset + autoscrollIncrement, true);
|
|
226
328
|
}
|
|
227
329
|
|
|
228
330
|
// when autoscrolling user may not be moving his finger so we need
|
|
229
331
|
// to update the current position of the dragged item here
|
|
230
|
-
setCurrentIndex(
|
|
332
|
+
setCurrentIndex(y);
|
|
231
333
|
}
|
|
232
334
|
});
|
|
335
|
+
|
|
336
|
+
// flatlist scroll handler
|
|
233
337
|
const handleScroll = useAnimatedScrollHandler(e => {
|
|
234
|
-
|
|
338
|
+
flatListScrollOffsetY.value = e.contentOffset.y;
|
|
235
339
|
|
|
236
340
|
// checking if the list is not scrollable instead of the scrolling state
|
|
237
341
|
// fixes a bug on iOS where the item is shifted after autoscrolling and then
|
|
238
342
|
// moving await from autoscroll area
|
|
239
343
|
if (!scrollEnabled.value) {
|
|
240
|
-
dragScrollTranslationY.value =
|
|
344
|
+
dragScrollTranslationY.value = flatListScrollOffsetY.value - dragInitialScrollOffsetY.value;
|
|
241
345
|
}
|
|
242
346
|
if (state.value === ReorderableListState.AUTO_SCROLL) {
|
|
243
|
-
dragY.value = currentTranslationY.value + dragScrollTranslationY.value;
|
|
347
|
+
dragY.value = currentTranslationY.value + dragScrollTranslationY.value + scrollViewDragScrollTranslationY.value;
|
|
244
348
|
cancelAnimation(autoscrollTrigger);
|
|
245
349
|
lastAutoscrollTrigger.value = autoscrollTrigger.value;
|
|
246
350
|
autoscrollTrigger.value = withDelay(autoscrollDelay, withTiming(autoscrollTrigger.value * -1, {
|
|
247
351
|
duration: 0
|
|
248
352
|
}));
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
|
|
353
|
+
}
|
|
354
|
+
onScroll === null || onScroll === void 0 || onScroll(e);
|
|
355
|
+
});
|
|
356
|
+
|
|
357
|
+
// parent scroll handler
|
|
358
|
+
useAnimatedReaction(() => scrollViewScrollOffsetY === null || scrollViewScrollOffsetY === void 0 ? void 0 : scrollViewScrollOffsetY.value, value => {
|
|
359
|
+
if (value && scrollViewScrollEnabled) {
|
|
360
|
+
// checking if the list is not scrollable instead of the scrolling state
|
|
361
|
+
// fixes a bug on iOS where the item is shifted after autoscrolling and then
|
|
362
|
+
// moving await from autoscroll area
|
|
363
|
+
if (!scrollViewScrollEnabled.value) {
|
|
364
|
+
scrollViewDragScrollTranslationY.value = value - scrollViewDragInitialScrollOffsetY.value;
|
|
365
|
+
}
|
|
366
|
+
if (state.value === ReorderableListState.AUTO_SCROLL) {
|
|
367
|
+
dragY.value = currentTranslationY.value + scrollViewDragScrollTranslationY.value;
|
|
368
|
+
cancelAnimation(autoscrollTrigger);
|
|
369
|
+
lastAutoscrollTrigger.value = autoscrollTrigger.value;
|
|
370
|
+
autoscrollTrigger.value = withDelay(autoscrollDelay, withTiming(autoscrollTrigger.value * -1, {
|
|
371
|
+
duration: 0
|
|
372
|
+
}));
|
|
373
|
+
}
|
|
252
374
|
}
|
|
253
375
|
});
|
|
254
376
|
const startDrag = useCallback(index => {
|
|
@@ -256,38 +378,26 @@ export const useReorderableList = ({
|
|
|
256
378
|
|
|
257
379
|
// allow new drag when item is completely released
|
|
258
380
|
if (state.value === ReorderableListState.IDLE) {
|
|
381
|
+
// resetting shared values again fixes a flickeing bug in nested lists where
|
|
382
|
+
// after scrolling the parent list it would offset the new dragged item in another nested list
|
|
383
|
+
resetSharedValues();
|
|
384
|
+
dragInitialScrollOffsetY.value = flatListScrollOffsetY.value;
|
|
385
|
+
scrollViewDragInitialScrollOffsetY.value = scrollViewScrollOffsetY ? scrollViewScrollOffsetY.value : 0;
|
|
259
386
|
draggedHeight.value = itemHeight.value[index];
|
|
260
387
|
draggedIndex.value = index;
|
|
261
388
|
previousIndex.value = -1;
|
|
262
389
|
currentIndex.value = index;
|
|
263
390
|
state.value = ReorderableListState.DRAGGING;
|
|
264
|
-
dragInitialScrollOffsetY.value = currentScrollOffsetY.value;
|
|
265
391
|
runOnJS(setScrollEnabled)(false);
|
|
266
392
|
}
|
|
267
|
-
}, [setScrollEnabled, currentIndex, previousIndex, draggedHeight, draggedIndex, state,
|
|
268
|
-
const measureFlatList = useCallback(() => {
|
|
269
|
-
'worklet';
|
|
270
|
-
|
|
271
|
-
const measurement = measure(flatList);
|
|
272
|
-
if (measurement === null) {
|
|
273
|
-
return;
|
|
274
|
-
}
|
|
275
|
-
containerPositionY.value = measurement.pageY;
|
|
276
|
-
}, [flatList, containerPositionY]);
|
|
393
|
+
}, [resetSharedValues, dragInitialScrollOffsetY, scrollViewScrollOffsetY, scrollViewDragInitialScrollOffsetY, setScrollEnabled, currentIndex, previousIndex, draggedHeight, draggedIndex, state, flatListScrollOffsetY, itemHeight]);
|
|
277
394
|
const handleFlatListLayout = useCallback(e => {
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
} = e.nativeEvent.layout;
|
|
283
|
-
topAutoscrollArea.value = height * threshold;
|
|
284
|
-
bottomAutoscrollArea.value = height * (1 - threshold);
|
|
285
|
-
if (onLayout) {
|
|
286
|
-
onLayout(e);
|
|
287
|
-
}
|
|
288
|
-
}, [measureFlatList, topAutoscrollArea, bottomAutoscrollArea, autoscrollThreshold, onLayout]);
|
|
395
|
+
nestedFlatListPositionY.value = e.nativeEvent.layout.y;
|
|
396
|
+
flatListHeightY.value = e.nativeEvent.layout.height;
|
|
397
|
+
onLayout === null || onLayout === void 0 || onLayout(e);
|
|
398
|
+
}, [nestedFlatListPositionY, flatListHeightY, onLayout]);
|
|
289
399
|
const handleRef = value => {
|
|
290
|
-
|
|
400
|
+
flatListRef(value);
|
|
291
401
|
if (typeof ref === 'function') {
|
|
292
402
|
ref(value);
|
|
293
403
|
} else if (ref) {
|
|
@@ -308,4 +418,4 @@ export const useReorderableList = ({
|
|
|
308
418
|
duration
|
|
309
419
|
};
|
|
310
420
|
};
|
|
311
|
-
//# sourceMappingURL=
|
|
421
|
+
//# sourceMappingURL=useReorderableListCore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useCallback","useMemo","unstable_batchedUpdates","Gesture","State","Easing","cancelAnimation","runOnJS","runOnUI","scrollTo","useAnimatedReaction","useAnimatedRef","useAnimatedScrollHandler","useSharedValue","withDelay","withTiming","AUTOSCROLL_INCREMENT","ReorderableListState","version","split","hasAutomaticBatching","length","parseInt","useReorderableListCore","ref","autoscrollThreshold","autoscrollSpeedScale","autoscrollDelay","animationDuration","dragReorderThreshold","onReorder","onDragEnd","onScroll","onLayout","scrollViewContainerRef","scrollViewHeightY","scrollViewScrollOffsetY","scrollViewScrollEnabled","initialScrollEnabled","initialScrollViewScrollEnabled","nestedScrollable","flatListRef","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","duration","value","listContextValue","startY","panGestureHandler","Pan","onBegin","e","y","translationY","onUpdate","RELEASING","onEnd","onFinalize","gestureHandler","Simultaneous","Native","setScrollEnabled","enabled","_flatListRef$current","current","setNativeProps","_scrollViewContainerR","resetSharedValues","reorder","fromIndex","toIndex","updateState","from","to","getIndexFromY","relativeY","count","i","direction","threshold","Math","max","min","height","offset","index","setCurrentIndex","newIndex","newDirection","delta","abs","itemDirection","index1","index2","newOffset1","newHeight1","newOffset2","newHeight2","ACTIVE","BEGAN","DRAGGING","AUTO_SCROLL","handlers","Array","isArray","forEach","fn","currentItemOffset","currentItemHeight","draggedItemOffset","draggedItemHeight","newTopPosition","easing","out","ease","calculateHiddenArea","top","bottom","calculateThresholdArea","hiddenArea","visibleHeight","calculateThresholdAreaParent","shouldScrollParent","thresholdAreaParent","scrollDirection","thresholdArea","autoscrollIncrement","scrollOffset","listRef","handleScroll","contentOffset","startDrag","handleFlatListLayout","nativeEvent","layout","handleRef"],"sourceRoot":"../../../../src","sources":["components/ReorderableListCore/useReorderableListCore.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,44 @@
|
|
|
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';
|
|
3
|
+
import { Gesture, GestureDetector } from 'react-native-gesture-handler';
|
|
4
|
+
import Animated, { useAnimatedRef, useAnimatedScrollHandler, useSharedValue } from 'react-native-reanimated';
|
|
5
|
+
import { ScrollViewContainerContext } from '../contexts/ScrollViewContainerContext';
|
|
6
|
+
export const ScrollViewContainer = ({
|
|
7
|
+
onLayout,
|
|
8
|
+
onScroll,
|
|
9
|
+
scrollEnabled = true,
|
|
10
|
+
...rest
|
|
11
|
+
}) => {
|
|
12
|
+
const scrollViewScrollEnabled = useSharedValue(scrollEnabled);
|
|
13
|
+
const scrollViewContainerRef = useAnimatedRef();
|
|
14
|
+
const scrollViewScrollOffsetY = useSharedValue(0);
|
|
15
|
+
const scrollViewHeightY = useSharedValue(0);
|
|
16
|
+
const outerScrollGesture = useMemo(() => Gesture.Native(), []);
|
|
17
|
+
const handleScroll = useAnimatedScrollHandler(e => {
|
|
18
|
+
scrollViewScrollOffsetY.value = e.contentOffset.y;
|
|
19
|
+
onScroll === null || onScroll === void 0 || onScroll(e);
|
|
20
|
+
}, [scrollViewScrollOffsetY]);
|
|
21
|
+
const contextValue = useMemo(() => ({
|
|
22
|
+
scrollViewContainerRef,
|
|
23
|
+
scrollViewHeightY,
|
|
24
|
+
scrollViewScrollOffsetY,
|
|
25
|
+
scrollViewScrollEnabled,
|
|
26
|
+
outerScrollGesture,
|
|
27
|
+
initialScrollViewScrollEnabled: scrollEnabled
|
|
28
|
+
}), [scrollViewContainerRef, scrollViewHeightY, scrollViewScrollOffsetY, scrollViewScrollEnabled, outerScrollGesture, scrollEnabled]);
|
|
29
|
+
const handleLayout = e => {
|
|
30
|
+
scrollViewHeightY.value = e.nativeEvent.layout.height;
|
|
31
|
+
onLayout === null || onLayout === void 0 || onLayout(e);
|
|
32
|
+
};
|
|
33
|
+
return /*#__PURE__*/React.createElement(ScrollViewContainerContext.Provider, {
|
|
34
|
+
value: contextValue
|
|
35
|
+
}, /*#__PURE__*/React.createElement(GestureDetector, {
|
|
36
|
+
gesture: outerScrollGesture
|
|
37
|
+
}, /*#__PURE__*/React.createElement(Animated.ScrollView, _extends({}, rest, {
|
|
38
|
+
ref: scrollViewContainerRef,
|
|
39
|
+
onScroll: handleScroll,
|
|
40
|
+
onLayout: handleLayout,
|
|
41
|
+
scrollEnabled: scrollEnabled
|
|
42
|
+
}))));
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=ScrollViewContainer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useMemo","Gesture","GestureDetector","Animated","useAnimatedRef","useAnimatedScrollHandler","useSharedValue","ScrollViewContainerContext","ScrollViewContainer","onLayout","onScroll","scrollEnabled","rest","scrollViewScrollEnabled","scrollViewContainerRef","scrollViewScrollOffsetY","scrollViewHeightY","outerScrollGesture","Native","handleScroll","e","value","contentOffset","y","contextValue","initialScrollViewScrollEnabled","handleLayout","nativeEvent","layout","height","createElement","Provider","gesture","ScrollView","_extends","ref"],"sourceRoot":"../../../src","sources":["components/ScrollViewContainer.tsx"],"mappings":";AAAA,OAAOA,KAAK,IAAGC,OAAO,QAAO,OAAO;AAGpC,SAAQC,OAAO,EAAEC,eAAe,QAAO,8BAA8B;AACrE,OAAOC,QAAQ,IACbC,cAAc,EACdC,wBAAwB,EACxBC,cAAc,QACT,yBAAyB;AAEhC,SAAQC,0BAA0B,QAAO,wCAAwC;AAGjF,OAAO,MAAMC,mBAAuD,GAAGA,CAAC;EACtEC,QAAQ;EACRC,QAAQ;EACRC,aAAa,GAAG,IAAI;EACpB,GAAGC;AACL,CAAC,KAAK;EACJ,MAAMC,uBAAuB,GAAGP,cAAc,CAACK,aAAa,CAAC;EAC7D,MAAMG,sBAAsB,GAAGV,cAAc,CAAsB,CAAC;EACpE,MAAMW,uBAAuB,GAAGT,cAAc,CAAC,CAAC,CAAC;EACjD,MAAMU,iBAAiB,GAAGV,cAAc,CAAC,CAAC,CAAC;EAE3C,MAAMW,kBAAkB,GAAGjB,OAAO,CAAC,MAAMC,OAAO,CAACiB,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC;EAE9D,MAAMC,YAAY,GAAGd,wBAAwB,CAC3Ce,CAAC,IAAI;IACHL,uBAAuB,CAACM,KAAK,GAAGD,CAAC,CAACE,aAAa,CAACC,CAAC;IAEjDb,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAGU,CAAC,CAAC;EACf,CAAC,EACD,CAACL,uBAAuB,CAC1B,CAAC;EAED,MAAMS,YAAY,GAAGxB,OAAO,CAC1B,OAAO;IACLc,sBAAsB;IACtBE,iBAAiB;IACjBD,uBAAuB;IACvBF,uBAAuB;IACvBI,kBAAkB;IAClBQ,8BAA8B,EAAEd;EAClC,CAAC,CAAC,EACF,CACEG,sBAAsB,EACtBE,iBAAiB,EACjBD,uBAAuB,EACvBF,uBAAuB,EACvBI,kBAAkB,EAClBN,aAAa,CAEjB,CAAC;EAED,MAAMe,YAAY,GAAIN,CAAoB,IAAK;IAC7CJ,iBAAiB,CAACK,KAAK,GAAGD,CAAC,CAACO,WAAW,CAACC,MAAM,CAACC,MAAM;IAErDpB,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAGW,CAAC,CAAC;EACf,CAAC;EAED,oBACErB,KAAA,CAAA+B,aAAA,CAACvB,0BAA0B,CAACwB,QAAQ;IAACV,KAAK,EAAEG;EAAa,gBACvDzB,KAAA,CAAA+B,aAAA,CAAC5B,eAAe;IAAC8B,OAAO,EAAEf;EAAmB,gBAC3ClB,KAAA,CAAA+B,aAAA,CAAC3B,QAAQ,CAAC8B,UAAU,EAAAC,QAAA,KACdtB,IAAI;IACRuB,GAAG,EAAErB,sBAAuB;IAC5BJ,QAAQ,EAAES,YAAa;IACvBV,QAAQ,EAAEiB,YAAa;IACvBf,aAAa,EAAEA;EAAc,EAC9B,CACc,CACkB,CAAC;AAE1C,CAAC","ignoreList":[]}
|