@shaquillehinds/react-native-bottom-sheet 0.0.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.
- package/LICENSE +20 -0
- package/README.md +880 -0
- package/lib/commonjs/BottomSheet/animations/drag.animation.js +72 -0
- package/lib/commonjs/BottomSheet/animations/drag.animation.js.map +1 -0
- package/lib/commonjs/BottomSheet/components/BottomSheet.js +92 -0
- package/lib/commonjs/BottomSheet/components/BottomSheet.js.map +1 -0
- package/lib/commonjs/BottomSheet/components/BottomSheetFlatlist.js +38 -0
- package/lib/commonjs/BottomSheet/components/BottomSheetFlatlist.js.map +1 -0
- package/lib/commonjs/BottomSheet/components/BottomSheetModal.js +34 -0
- package/lib/commonjs/BottomSheet/components/BottomSheetModal.js.map +1 -0
- package/lib/commonjs/BottomSheet/components/BottomSheetScrollView.js +37 -0
- package/lib/commonjs/BottomSheet/components/BottomSheetScrollView.js.map +1 -0
- package/lib/commonjs/BottomSheet/config/bottomSheet.constants.js +35 -0
- package/lib/commonjs/BottomSheet/config/bottomSheet.constants.js.map +1 -0
- package/lib/commonjs/BottomSheet/config/bottomSheet.styles.js +42 -0
- package/lib/commonjs/BottomSheet/config/bottomSheet.styles.js.map +1 -0
- package/lib/commonjs/BottomSheet/config/bottomSheet.types.js +14 -0
- package/lib/commonjs/BottomSheet/config/bottomSheet.types.js.map +1 -0
- package/lib/commonjs/BottomSheet/controller/bottomFlatlist.controller.js +69 -0
- package/lib/commonjs/BottomSheet/controller/bottomFlatlist.controller.js.map +1 -0
- package/lib/commonjs/BottomSheet/controller/bottomScrollView.controller.js +41 -0
- package/lib/commonjs/BottomSheet/controller/bottomScrollView.controller.js.map +1 -0
- package/lib/commonjs/BottomSheet/controller/bottomSheet.controller.js +216 -0
- package/lib/commonjs/BottomSheet/controller/bottomSheet.controller.js.map +1 -0
- package/lib/commonjs/BottomSheet/controller/callbacks.controller.js +135 -0
- package/lib/commonjs/BottomSheet/controller/callbacks.controller.js.map +1 -0
- package/lib/commonjs/BottomSheet/controller/dragAnimation.controller.js +127 -0
- package/lib/commonjs/BottomSheet/controller/dragAnimation.controller.js.map +1 -0
- package/lib/commonjs/BottomSheet/controller/hooks/useBottomSheetRef.js +60 -0
- package/lib/commonjs/BottomSheet/controller/hooks/useBottomSheetRef.js.map +1 -0
- package/lib/commonjs/BottomSheet/controller/hooks/useBottomSheetUtils.js +74 -0
- package/lib/commonjs/BottomSheet/controller/hooks/useBottomSheetUtils.js.map +1 -0
- package/lib/commonjs/BottomSheet/controller/index.js +17 -0
- package/lib/commonjs/BottomSheet/controller/index.js.map +1 -0
- package/lib/commonjs/BottomSheet/controller/keyboardAnimation.controller.js +88 -0
- package/lib/commonjs/BottomSheet/controller/keyboardAnimation.controller.js.map +1 -0
- package/lib/commonjs/BottomSheet/controller/scrollContent.controller.js +89 -0
- package/lib/commonjs/BottomSheet/controller/scrollContent.controller.js.map +1 -0
- package/lib/commonjs/BottomSheet/index.js +130 -0
- package/lib/commonjs/BottomSheet/index.js.map +1 -0
- package/lib/commonjs/index.js +17 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/package.json +1 -0
- package/lib/module/BottomSheet/animations/drag.animation.js +68 -0
- package/lib/module/BottomSheet/animations/drag.animation.js.map +1 -0
- package/lib/module/BottomSheet/components/BottomSheet.js +87 -0
- package/lib/module/BottomSheet/components/BottomSheet.js.map +1 -0
- package/lib/module/BottomSheet/components/BottomSheetFlatlist.js +32 -0
- package/lib/module/BottomSheet/components/BottomSheetFlatlist.js.map +1 -0
- package/lib/module/BottomSheet/components/BottomSheetModal.js +30 -0
- package/lib/module/BottomSheet/components/BottomSheetModal.js.map +1 -0
- package/lib/module/BottomSheet/components/BottomSheetScrollView.js +31 -0
- package/lib/module/BottomSheet/components/BottomSheetScrollView.js.map +1 -0
- package/lib/module/BottomSheet/config/bottomSheet.constants.js +30 -0
- package/lib/module/BottomSheet/config/bottomSheet.constants.js.map +1 -0
- package/lib/module/BottomSheet/config/bottomSheet.styles.js +38 -0
- package/lib/module/BottomSheet/config/bottomSheet.styles.js.map +1 -0
- package/lib/module/BottomSheet/config/bottomSheet.types.js +10 -0
- package/lib/module/BottomSheet/config/bottomSheet.types.js.map +1 -0
- package/lib/module/BottomSheet/controller/bottomFlatlist.controller.js +64 -0
- package/lib/module/BottomSheet/controller/bottomFlatlist.controller.js.map +1 -0
- package/lib/module/BottomSheet/controller/bottomScrollView.controller.js +37 -0
- package/lib/module/BottomSheet/controller/bottomScrollView.controller.js.map +1 -0
- package/lib/module/BottomSheet/controller/bottomSheet.controller.js +212 -0
- package/lib/module/BottomSheet/controller/bottomSheet.controller.js.map +1 -0
- package/lib/module/BottomSheet/controller/callbacks.controller.js +130 -0
- package/lib/module/BottomSheet/controller/callbacks.controller.js.map +1 -0
- package/lib/module/BottomSheet/controller/dragAnimation.controller.js +122 -0
- package/lib/module/BottomSheet/controller/dragAnimation.controller.js.map +1 -0
- package/lib/module/BottomSheet/controller/hooks/useBottomSheetRef.js +56 -0
- package/lib/module/BottomSheet/controller/hooks/useBottomSheetRef.js.map +1 -0
- package/lib/module/BottomSheet/controller/hooks/useBottomSheetUtils.js +70 -0
- package/lib/module/BottomSheet/controller/hooks/useBottomSheetUtils.js.map +1 -0
- package/lib/module/BottomSheet/controller/index.js +4 -0
- package/lib/module/BottomSheet/controller/index.js.map +1 -0
- package/lib/module/BottomSheet/controller/keyboardAnimation.controller.js +84 -0
- package/lib/module/BottomSheet/controller/keyboardAnimation.controller.js.map +1 -0
- package/lib/module/BottomSheet/controller/scrollContent.controller.js +84 -0
- package/lib/module/BottomSheet/controller/scrollContent.controller.js.map +1 -0
- package/lib/module/BottomSheet/index.js +112 -0
- package/lib/module/BottomSheet/index.js.map +1 -0
- package/lib/module/index.js +4 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/typescript/commonjs/package.json +1 -0
- package/lib/typescript/commonjs/src/BottomSheet/animations/drag.animation.d.ts +31 -0
- package/lib/typescript/commonjs/src/BottomSheet/animations/drag.animation.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/BottomSheet/components/BottomSheet.d.ts +9 -0
- package/lib/typescript/commonjs/src/BottomSheet/components/BottomSheet.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/BottomSheet/components/BottomSheetFlatlist.d.ts +3 -0
- package/lib/typescript/commonjs/src/BottomSheet/components/BottomSheetFlatlist.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/BottomSheet/components/BottomSheetModal.d.ts +8 -0
- package/lib/typescript/commonjs/src/BottomSheet/components/BottomSheetModal.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/BottomSheet/components/BottomSheetScrollView.d.ts +3 -0
- package/lib/typescript/commonjs/src/BottomSheet/components/BottomSheetScrollView.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/BottomSheet/config/bottomSheet.constants.d.ts +30 -0
- package/lib/typescript/commonjs/src/BottomSheet/config/bottomSheet.constants.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/BottomSheet/config/bottomSheet.styles.d.ts +37 -0
- package/lib/typescript/commonjs/src/BottomSheet/config/bottomSheet.styles.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/BottomSheet/config/bottomSheet.types.d.ts +185 -0
- package/lib/typescript/commonjs/src/BottomSheet/config/bottomSheet.types.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/BottomSheet/controller/bottomFlatlist.controller.d.ts +480 -0
- package/lib/typescript/commonjs/src/BottomSheet/controller/bottomFlatlist.controller.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/BottomSheet/controller/bottomScrollView.controller.d.ts +338 -0
- package/lib/typescript/commonjs/src/BottomSheet/controller/bottomScrollView.controller.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/BottomSheet/controller/bottomSheet.controller.d.ts +51 -0
- package/lib/typescript/commonjs/src/BottomSheet/controller/bottomSheet.controller.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/BottomSheet/controller/callbacks.controller.d.ts +36 -0
- package/lib/typescript/commonjs/src/BottomSheet/controller/callbacks.controller.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/BottomSheet/controller/dragAnimation.controller.d.ts +27 -0
- package/lib/typescript/commonjs/src/BottomSheet/controller/dragAnimation.controller.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/BottomSheet/controller/hooks/useBottomSheetRef.d.ts +12 -0
- package/lib/typescript/commonjs/src/BottomSheet/controller/hooks/useBottomSheetRef.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/BottomSheet/controller/hooks/useBottomSheetUtils.d.ts +40 -0
- package/lib/typescript/commonjs/src/BottomSheet/controller/hooks/useBottomSheetUtils.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/BottomSheet/controller/index.d.ts +2 -0
- package/lib/typescript/commonjs/src/BottomSheet/controller/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/BottomSheet/controller/keyboardAnimation.controller.d.ts +15 -0
- package/lib/typescript/commonjs/src/BottomSheet/controller/keyboardAnimation.controller.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/BottomSheet/controller/scrollContent.controller.d.ts +20 -0
- package/lib/typescript/commonjs/src/BottomSheet/controller/scrollContent.controller.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/BottomSheet/index.d.ts +23 -0
- package/lib/typescript/commonjs/src/BottomSheet/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/index.d.ts +2 -0
- package/lib/typescript/commonjs/src/index.d.ts.map +1 -0
- package/lib/typescript/module/package.json +1 -0
- package/lib/typescript/module/src/BottomSheet/animations/drag.animation.d.ts +31 -0
- package/lib/typescript/module/src/BottomSheet/animations/drag.animation.d.ts.map +1 -0
- package/lib/typescript/module/src/BottomSheet/components/BottomSheet.d.ts +9 -0
- package/lib/typescript/module/src/BottomSheet/components/BottomSheet.d.ts.map +1 -0
- package/lib/typescript/module/src/BottomSheet/components/BottomSheetFlatlist.d.ts +3 -0
- package/lib/typescript/module/src/BottomSheet/components/BottomSheetFlatlist.d.ts.map +1 -0
- package/lib/typescript/module/src/BottomSheet/components/BottomSheetModal.d.ts +8 -0
- package/lib/typescript/module/src/BottomSheet/components/BottomSheetModal.d.ts.map +1 -0
- package/lib/typescript/module/src/BottomSheet/components/BottomSheetScrollView.d.ts +3 -0
- package/lib/typescript/module/src/BottomSheet/components/BottomSheetScrollView.d.ts.map +1 -0
- package/lib/typescript/module/src/BottomSheet/config/bottomSheet.constants.d.ts +30 -0
- package/lib/typescript/module/src/BottomSheet/config/bottomSheet.constants.d.ts.map +1 -0
- package/lib/typescript/module/src/BottomSheet/config/bottomSheet.styles.d.ts +37 -0
- package/lib/typescript/module/src/BottomSheet/config/bottomSheet.styles.d.ts.map +1 -0
- package/lib/typescript/module/src/BottomSheet/config/bottomSheet.types.d.ts +185 -0
- package/lib/typescript/module/src/BottomSheet/config/bottomSheet.types.d.ts.map +1 -0
- package/lib/typescript/module/src/BottomSheet/controller/bottomFlatlist.controller.d.ts +480 -0
- package/lib/typescript/module/src/BottomSheet/controller/bottomFlatlist.controller.d.ts.map +1 -0
- package/lib/typescript/module/src/BottomSheet/controller/bottomScrollView.controller.d.ts +338 -0
- package/lib/typescript/module/src/BottomSheet/controller/bottomScrollView.controller.d.ts.map +1 -0
- package/lib/typescript/module/src/BottomSheet/controller/bottomSheet.controller.d.ts +51 -0
- package/lib/typescript/module/src/BottomSheet/controller/bottomSheet.controller.d.ts.map +1 -0
- package/lib/typescript/module/src/BottomSheet/controller/callbacks.controller.d.ts +36 -0
- package/lib/typescript/module/src/BottomSheet/controller/callbacks.controller.d.ts.map +1 -0
- package/lib/typescript/module/src/BottomSheet/controller/dragAnimation.controller.d.ts +27 -0
- package/lib/typescript/module/src/BottomSheet/controller/dragAnimation.controller.d.ts.map +1 -0
- package/lib/typescript/module/src/BottomSheet/controller/hooks/useBottomSheetRef.d.ts +12 -0
- package/lib/typescript/module/src/BottomSheet/controller/hooks/useBottomSheetRef.d.ts.map +1 -0
- package/lib/typescript/module/src/BottomSheet/controller/hooks/useBottomSheetUtils.d.ts +40 -0
- package/lib/typescript/module/src/BottomSheet/controller/hooks/useBottomSheetUtils.d.ts.map +1 -0
- package/lib/typescript/module/src/BottomSheet/controller/index.d.ts +2 -0
- package/lib/typescript/module/src/BottomSheet/controller/index.d.ts.map +1 -0
- package/lib/typescript/module/src/BottomSheet/controller/keyboardAnimation.controller.d.ts +15 -0
- package/lib/typescript/module/src/BottomSheet/controller/keyboardAnimation.controller.d.ts.map +1 -0
- package/lib/typescript/module/src/BottomSheet/controller/scrollContent.controller.d.ts +20 -0
- package/lib/typescript/module/src/BottomSheet/controller/scrollContent.controller.d.ts.map +1 -0
- package/lib/typescript/module/src/BottomSheet/index.d.ts +23 -0
- package/lib/typescript/module/src/BottomSheet/index.d.ts.map +1 -0
- package/lib/typescript/module/src/index.d.ts +2 -0
- package/lib/typescript/module/src/index.d.ts.map +1 -0
- package/package.json +203 -0
- package/src/BottomSheet/animations/drag.animation.ts +86 -0
- package/src/BottomSheet/components/BottomSheet.tsx +157 -0
- package/src/BottomSheet/components/BottomSheetFlatlist.tsx +46 -0
- package/src/BottomSheet/components/BottomSheetModal.tsx +47 -0
- package/src/BottomSheet/components/BottomSheetScrollView.tsx +46 -0
- package/src/BottomSheet/config/bottomSheet.constants.ts +31 -0
- package/src/BottomSheet/config/bottomSheet.styles.ts +42 -0
- package/src/BottomSheet/config/bottomSheet.types.ts +246 -0
- package/src/BottomSheet/controller/bottomFlatlist.controller.ts +87 -0
- package/src/BottomSheet/controller/bottomScrollView.controller.ts +43 -0
- package/src/BottomSheet/controller/bottomSheet.controller.ts +238 -0
- package/src/BottomSheet/controller/callbacks.controller.ts +222 -0
- package/src/BottomSheet/controller/dragAnimation.controller.ts +211 -0
- package/src/BottomSheet/controller/hooks/useBottomSheetRef.ts +73 -0
- package/src/BottomSheet/controller/hooks/useBottomSheetUtils.ts +75 -0
- package/src/BottomSheet/controller/index.ts +1 -0
- package/src/BottomSheet/controller/keyboardAnimation.controller.ts +148 -0
- package/src/BottomSheet/controller/scrollContent.controller.ts +120 -0
- package/src/BottomSheet/index.tsx +139 -0
- package/src/index.tsx +1 -0
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
//$lf-ignore
|
|
4
|
+
import { runOnJS, runOnUI, withTiming } from 'react-native-reanimated';
|
|
5
|
+
import { useCallback } from 'react';
|
|
6
|
+
import { animateOpenTimingConfig, animateCloseTimingConfig, modalTransitionTimingConfig } from "../config/bottomSheet.constants.js";
|
|
7
|
+
import { ModalState } from "../config/bottomSheet.types.js";
|
|
8
|
+
export function callbackController(props) {
|
|
9
|
+
const {
|
|
10
|
+
unMounter,
|
|
11
|
+
snapPoints,
|
|
12
|
+
modalState,
|
|
13
|
+
backdropOpacity,
|
|
14
|
+
translationX,
|
|
15
|
+
translationY,
|
|
16
|
+
onBackDropPress,
|
|
17
|
+
closedYPosition,
|
|
18
|
+
currentSnapPoint,
|
|
19
|
+
prevTranslationY,
|
|
20
|
+
onSnapPointReach,
|
|
21
|
+
fullyOpenYPosition,
|
|
22
|
+
disableLayoutAnimation,
|
|
23
|
+
disableCloseOnBackdropPress
|
|
24
|
+
} = props;
|
|
25
|
+
const {
|
|
26
|
+
orientation,
|
|
27
|
+
getMaxMinSnapPointsWorklet,
|
|
28
|
+
percentageToSnapPointWorklet
|
|
29
|
+
} = props.utils;
|
|
30
|
+
const setModalState = useCallback(state => {
|
|
31
|
+
if (modalState.current === ModalState.CLOSING && state !== ModalState.CLOSED) return;
|
|
32
|
+
modalState.current = state;
|
|
33
|
+
}, []);
|
|
34
|
+
const animateModalOpen = useCallback((height, modalHeight) => {
|
|
35
|
+
'worklet';
|
|
36
|
+
|
|
37
|
+
if (height > modalHeight) height = modalHeight;
|
|
38
|
+
const translateYHeight = -height;
|
|
39
|
+
translationY.value = withTiming(translateYHeight, animateOpenTimingConfig, () => {
|
|
40
|
+
prevTranslationY.value = translateYHeight;
|
|
41
|
+
runOnJS(setModalState)(ModalState.OPEN);
|
|
42
|
+
});
|
|
43
|
+
if (snapPoints.value.length) {
|
|
44
|
+
let maxOpenPosition = fullyOpenYPosition.value;
|
|
45
|
+
if (!maxOpenPosition) maxOpenPosition = getMaxMinSnapPointsWorklet(snapPoints).maxSnapPoint;
|
|
46
|
+
backdropOpacity.value = withTiming(translateYHeight / maxOpenPosition, animateOpenTimingConfig);
|
|
47
|
+
} else backdropOpacity.value = withTiming(1, animateOpenTimingConfig);
|
|
48
|
+
}, [orientation]);
|
|
49
|
+
const animateModalClose = useCallback(prop => {
|
|
50
|
+
'worklet';
|
|
51
|
+
|
|
52
|
+
const timing = {
|
|
53
|
+
duration: prop?.duration || animateCloseTimingConfig.duration,
|
|
54
|
+
easing: prop?.easing || animateCloseTimingConfig.easing
|
|
55
|
+
};
|
|
56
|
+
translationY.value = withTiming(closedYPosition.value, timing);
|
|
57
|
+
backdropOpacity.value = withTiming(0, timing);
|
|
58
|
+
}, []);
|
|
59
|
+
const onPlatformViewLayout = useCallback(e => {
|
|
60
|
+
translationX.value = -e.nativeEvent.layout.x;
|
|
61
|
+
}, []);
|
|
62
|
+
const animateToSnapPoint = useCallback((snapPoint, index) => {
|
|
63
|
+
'worklet';
|
|
64
|
+
|
|
65
|
+
if (!snapPoint) return;
|
|
66
|
+
currentSnapPoint.value = {
|
|
67
|
+
offset: snapPoint.offset
|
|
68
|
+
};
|
|
69
|
+
translationY.value = withTiming(snapPoint.offset, modalTransitionTimingConfig, () => {
|
|
70
|
+
typeof index === 'number' && onSnapPointReach && runOnJS(onSnapPointReach)(index);
|
|
71
|
+
});
|
|
72
|
+
backdropOpacity.value = withTiming(snapPoint.offset / fullyOpenYPosition.value, modalTransitionTimingConfig);
|
|
73
|
+
}, []);
|
|
74
|
+
const animateToSnapPointIndex = useCallback(snapPointIndex => {
|
|
75
|
+
'worklet';
|
|
76
|
+
|
|
77
|
+
const snapPoint = snapPoints.value[snapPointIndex];
|
|
78
|
+
animateToSnapPoint(snapPoint, snapPointIndex);
|
|
79
|
+
}, []);
|
|
80
|
+
const animateToPercentage = useCallback((percentage, screenHeight) => {
|
|
81
|
+
'worklet';
|
|
82
|
+
|
|
83
|
+
const snapPoint = percentageToSnapPointWorklet(percentage, screenHeight);
|
|
84
|
+
animateToSnapPoint(snapPoint);
|
|
85
|
+
}, [orientation]);
|
|
86
|
+
const onModalContentLayout = useCallback(e => {
|
|
87
|
+
if (modalState.current === ModalState.OPENING) return;
|
|
88
|
+
if (!modalState.current) setModalState(ModalState.OPENING);
|
|
89
|
+
if (snapPoints.value.length && modalState.current === ModalState.OPEN) return;
|
|
90
|
+
if (!snapPoints.value.length) {
|
|
91
|
+
if (e.nativeEvent.layout.height > props.utils.modalHeight) fullyOpenYPosition.value = -props.utils.modalHeight;else fullyOpenYPosition.value = -e.nativeEvent.layout.height;
|
|
92
|
+
}
|
|
93
|
+
if (!disableLayoutAnimation.current) runOnUI(animateModalOpen)(Math.abs(snapPoints.value[0]?.offset || e.nativeEvent.layout.height), props.utils.modalHeight);
|
|
94
|
+
}, [orientation]);
|
|
95
|
+
const closeModal = useCallback(delayMS => {
|
|
96
|
+
setModalState(ModalState.CLOSING);
|
|
97
|
+
delayMS ? setTimeout(() => props.setShowModal ? props.setShowModal(false) : unMounter?.(), delayMS) : props.setShowModal ? props.setShowModal(false) : unMounter?.();
|
|
98
|
+
props.setDisableLayoutAnimation(true);
|
|
99
|
+
setTimeout(() => {
|
|
100
|
+
setModalState(ModalState.CLOSED);
|
|
101
|
+
}, delayMS || animateCloseTimingConfig.duration);
|
|
102
|
+
}, [unMounter]);
|
|
103
|
+
const onModalBackdropPress = useCallback(() => {
|
|
104
|
+
onBackDropPress?.();
|
|
105
|
+
if (disableCloseOnBackdropPress) return;
|
|
106
|
+
closeModal();
|
|
107
|
+
runOnUI(animateModalClose)();
|
|
108
|
+
}, []);
|
|
109
|
+
const onRequestClose = useCallback(() => {
|
|
110
|
+
disableLayoutAnimation.current = true;
|
|
111
|
+
runOnUI(animateModalClose)();
|
|
112
|
+
if (props.setShowModal) {
|
|
113
|
+
props.setShowModal(false);
|
|
114
|
+
} else {
|
|
115
|
+
props.unMounter?.();
|
|
116
|
+
}
|
|
117
|
+
}, []);
|
|
118
|
+
return {
|
|
119
|
+
closeModal,
|
|
120
|
+
animateModalOpen,
|
|
121
|
+
animateModalClose,
|
|
122
|
+
animateToPercentage,
|
|
123
|
+
animateToSnapPointIndex,
|
|
124
|
+
onRequestClose,
|
|
125
|
+
onPlatformViewLayout,
|
|
126
|
+
onModalContentLayout,
|
|
127
|
+
onModalBackdropPress
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=callbacks.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["runOnJS","runOnUI","withTiming","useCallback","animateOpenTimingConfig","animateCloseTimingConfig","modalTransitionTimingConfig","ModalState","callbackController","props","unMounter","snapPoints","modalState","backdropOpacity","translationX","translationY","onBackDropPress","closedYPosition","currentSnapPoint","prevTranslationY","onSnapPointReach","fullyOpenYPosition","disableLayoutAnimation","disableCloseOnBackdropPress","orientation","getMaxMinSnapPointsWorklet","percentageToSnapPointWorklet","utils","setModalState","state","current","CLOSING","CLOSED","animateModalOpen","height","modalHeight","translateYHeight","value","OPEN","length","maxOpenPosition","maxSnapPoint","animateModalClose","prop","timing","duration","easing","onPlatformViewLayout","e","nativeEvent","layout","x","animateToSnapPoint","snapPoint","index","offset","animateToSnapPointIndex","snapPointIndex","animateToPercentage","percentage","screenHeight","onModalContentLayout","OPENING","Math","abs","closeModal","delayMS","setTimeout","setShowModal","setDisableLayoutAnimation","onModalBackdropPress","onRequestClose"],"sourceRoot":"../../../../src","sources":["BottomSheet/controller/callbacks.controller.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
//$lf-ignore
|
|
4
|
+
import { runOnJS, withTiming } from 'react-native-reanimated';
|
|
5
|
+
import { useCallback } from 'react';
|
|
6
|
+
import { modalTransitionTimingConfig } from "../config/bottomSheet.constants.js";
|
|
7
|
+
export function dragAnimationController(props) {
|
|
8
|
+
const {
|
|
9
|
+
snapPoints,
|
|
10
|
+
currentSnapPoint,
|
|
11
|
+
allowDragWhileKeyboardVisible,
|
|
12
|
+
keyboardHeight,
|
|
13
|
+
backdropOpacity,
|
|
14
|
+
closeModal,
|
|
15
|
+
keepMounted,
|
|
16
|
+
closedYPosition,
|
|
17
|
+
onSnapPointReach,
|
|
18
|
+
onDragStart,
|
|
19
|
+
lowestSnapPointPosition,
|
|
20
|
+
translationY,
|
|
21
|
+
prevTranslationY,
|
|
22
|
+
fullyOpenYPosition
|
|
23
|
+
} = props;
|
|
24
|
+
// Gesture event handlers
|
|
25
|
+
const onDragStartGesture = useCallback(() => {
|
|
26
|
+
'worklet';
|
|
27
|
+
|
|
28
|
+
if (keyboardHeight.value && !allowDragWhileKeyboardVisible) return;
|
|
29
|
+
onDragStart();
|
|
30
|
+
}, []);
|
|
31
|
+
const onDragGesture = useCallback(e => {
|
|
32
|
+
'worklet';
|
|
33
|
+
|
|
34
|
+
if (keyboardHeight.value && !allowDragWhileKeyboardVisible) return;
|
|
35
|
+
const val = prevTranslationY.value + e.translationY;
|
|
36
|
+
const stretch = 100;
|
|
37
|
+
translationY.value = val >= fullyOpenYPosition.value ? val : fullyOpenYPosition.value - stretch + stretch / ((fullyOpenYPosition.value - val) / stretch + 1);
|
|
38
|
+
if (snapPoints.value.length) backdropOpacity.value = -(currentSnapPoint.value.offset + e.translationY) / -fullyOpenYPosition.value;else {
|
|
39
|
+
if (prevTranslationY.value === fullyOpenYPosition.value) backdropOpacity.value = -(e.translationY + fullyOpenYPosition.value) / -fullyOpenYPosition.value;else if (e.translationY < 0) backdropOpacity.value = e.translationY / -fullyOpenYPosition.value;
|
|
40
|
+
}
|
|
41
|
+
}, []);
|
|
42
|
+
const onDragEndGesture = useCallback(e => {
|
|
43
|
+
'worklet';
|
|
44
|
+
|
|
45
|
+
if (keyboardHeight.value && !allowDragWhileKeyboardVisible) return;
|
|
46
|
+
const animate = (to, timing, opacity, index) => {
|
|
47
|
+
translationY.value = withTiming(to, timing, () => {
|
|
48
|
+
typeof index === 'number' && onSnapPointReach && runOnJS(onSnapPointReach)(index);
|
|
49
|
+
});
|
|
50
|
+
backdropOpacity.value = withTiming(opacity, modalTransitionTimingConfig);
|
|
51
|
+
};
|
|
52
|
+
if (snapPoints.value.length) {
|
|
53
|
+
const fullyOpenIndex = snapPoints.value.length - 1;
|
|
54
|
+
if (e.velocityY > 1500) {
|
|
55
|
+
if (currentSnapPoint.value.offset === lowestSnapPointPosition.value && !keepMounted) {
|
|
56
|
+
animate(closedYPosition.value, modalTransitionTimingConfig, 0);
|
|
57
|
+
return runOnJS(closeModal)(175);
|
|
58
|
+
}
|
|
59
|
+
if (e.velocityY > 3500 && !keepMounted) {
|
|
60
|
+
animate(closedYPosition.value, modalTransitionTimingConfig, 0);
|
|
61
|
+
return runOnJS(closeModal)(175);
|
|
62
|
+
}
|
|
63
|
+
if (e.velocityY > 1500) {
|
|
64
|
+
animate(lowestSnapPointPosition.value, modalTransitionTimingConfig, lowestSnapPointPosition.value / fullyOpenYPosition.value, 0);
|
|
65
|
+
currentSnapPoint.value = {
|
|
66
|
+
offset: lowestSnapPointPosition.value
|
|
67
|
+
};
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
} else if (e.velocityY < -1500) {
|
|
71
|
+
animate(fullyOpenYPosition.value, modalTransitionTimingConfig, 1, fullyOpenIndex);
|
|
72
|
+
currentSnapPoint.value = {
|
|
73
|
+
offset: fullyOpenYPosition.value
|
|
74
|
+
};
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
let closestSnapPointValue = Math.abs(currentSnapPoint.value.offset + e.translationY + 100);
|
|
78
|
+
let closestSnapPointOffset = 0;
|
|
79
|
+
let closestSnapPointIndex = 0;
|
|
80
|
+
for (let i = 0; i < snapPoints.value.length; i++) {
|
|
81
|
+
const snapPoint = snapPoints.value[i];
|
|
82
|
+
if (!snapPoint) return animate(fullyOpenYPosition.value, modalTransitionTimingConfig, 1, fullyOpenIndex);
|
|
83
|
+
const currSnapPointValue = Math.abs(currentSnapPoint.value.offset + e.translationY - snapPoint.offset);
|
|
84
|
+
if (currSnapPointValue < closestSnapPointValue) {
|
|
85
|
+
closestSnapPointValue = currSnapPointValue;
|
|
86
|
+
closestSnapPointOffset = snapPoint.offset;
|
|
87
|
+
closestSnapPointIndex = i;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
if (closestSnapPointOffset) {
|
|
91
|
+
currentSnapPoint.value = {
|
|
92
|
+
offset: closestSnapPointOffset
|
|
93
|
+
};
|
|
94
|
+
return animate(closestSnapPointOffset, modalTransitionTimingConfig, closestSnapPointOffset / fullyOpenYPosition.value, closestSnapPointIndex);
|
|
95
|
+
}
|
|
96
|
+
if (!keepMounted) {
|
|
97
|
+
runOnJS(closeModal)(175);
|
|
98
|
+
return animate(closedYPosition.value, modalTransitionTimingConfig, 0);
|
|
99
|
+
} else return animate(lowestSnapPointPosition.value, modalTransitionTimingConfig, lowestSnapPointPosition.value / fullyOpenYPosition.value, 0);
|
|
100
|
+
}
|
|
101
|
+
const halfContentHeight = -(fullyOpenYPosition.value / 2);
|
|
102
|
+
const isClosed = prevTranslationY.value === closedYPosition.value;
|
|
103
|
+
const isMovedPastHalf = Math.abs(e.translationY) > halfContentHeight;
|
|
104
|
+
const isHighVelocity = isClosed ? e.velocityY < -1000 : e.velocityY > 1000;
|
|
105
|
+
if (isClosed) {
|
|
106
|
+
if (e.translationY > 50 || isMovedPastHalf) animate(fullyOpenYPosition.value, modalTransitionTimingConfig, 1);else if (isHighVelocity) animate(fullyOpenYPosition.value, modalTransitionTimingConfig, 1);else animate(closedYPosition.value, modalTransitionTimingConfig, 0);
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
if (isMovedPastHalf || isHighVelocity) {
|
|
110
|
+
if (e.velocityY > 1000) animate(closedYPosition.value, modalTransitionTimingConfig, 0);else animate(closedYPosition.value, modalTransitionTimingConfig, 0);
|
|
111
|
+
runOnJS(closeModal)(175);
|
|
112
|
+
} else if (e.translationY <= halfContentHeight) {
|
|
113
|
+
animate(fullyOpenYPosition.value, modalTransitionTimingConfig, 1);
|
|
114
|
+
}
|
|
115
|
+
}, []);
|
|
116
|
+
return {
|
|
117
|
+
onDragGesture,
|
|
118
|
+
onDragEndGesture,
|
|
119
|
+
onDragStartGesture
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=dragAnimation.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["runOnJS","withTiming","useCallback","modalTransitionTimingConfig","dragAnimationController","props","snapPoints","currentSnapPoint","allowDragWhileKeyboardVisible","keyboardHeight","backdropOpacity","closeModal","keepMounted","closedYPosition","onSnapPointReach","onDragStart","lowestSnapPointPosition","translationY","prevTranslationY","fullyOpenYPosition","onDragStartGesture","value","onDragGesture","e","val","stretch","length","offset","onDragEndGesture","animate","to","timing","opacity","index","fullyOpenIndex","velocityY","closestSnapPointValue","Math","abs","closestSnapPointOffset","closestSnapPointIndex","i","snapPoint","currSnapPointValue","halfContentHeight","isClosed","isMovedPastHalf","isHighVelocity"],"sourceRoot":"../../../../src","sources":["BottomSheet/controller/dragAnimation.controller.ts"],"mappings":";;AAAA;AACA,SACEA,OAAO,EACPC,UAAU,QAGL,yBAAyB;AAEhC,SAASC,WAAW,QAAQ,OAAO;AACnC,SAASC,2BAA2B,QAAQ,oCAAiC;AAwB7E,OAAO,SAASC,uBAAuBA,CAACC,KAAmC,EAAE;EAC3E,MAAM;IACJC,UAAU;IACVC,gBAAgB;IAChBC,6BAA6B;IAC7BC,cAAc;IACdC,eAAe;IACfC,UAAU;IACVC,WAAW;IACXC,eAAe;IACfC,gBAAgB;IAChBC,WAAW;IACXC,uBAAuB;IACvBC,YAAY;IACZC,gBAAgB;IAChBC;EACF,CAAC,GAAGd,KAAK;EACT;EACA,MAAMe,kBAAmD,GACvDlB,WAAW,CAAC,MAAM;IAChB,SAAS;;IACT,IAAIO,cAAc,CAACY,KAAK,IAAI,CAACb,6BAA6B,EAAE;IAC5DO,WAAW,CAAC,CAAC;EACf,CAAC,EAAE,EAAE,CAAC;EACR,MAAMO,aAAyC,GAAGpB,WAAW,CAAEqB,CAAC,IAAK;IACnE,SAAS;;IACT,IAAId,cAAc,CAACY,KAAK,IAAI,CAACb,6BAA6B,EAAE;IAC5D,MAAMgB,GAAG,GAAGN,gBAAgB,CAACG,KAAK,GAAGE,CAAC,CAACN,YAAY;IACnD,MAAMQ,OAAO,GAAG,GAAG;IACnBR,YAAY,CAACI,KAAK,GAChBG,GAAG,IAAIL,kBAAkB,CAACE,KAAK,GAC3BG,GAAG,GACHL,kBAAkB,CAACE,KAAK,GACxBI,OAAO,GACPA,OAAO,IAAI,CAACN,kBAAkB,CAACE,KAAK,GAAGG,GAAG,IAAIC,OAAO,GAAG,CAAC,CAAC;IAChE,IAAInB,UAAU,CAACe,KAAK,CAACK,MAAM,EACzBhB,eAAe,CAACW,KAAK,GACnB,EAAEd,gBAAgB,CAACc,KAAK,CAACM,MAAM,GAAGJ,CAAC,CAACN,YAAY,CAAC,GACjD,CAACE,kBAAkB,CAACE,KAAK,CAAC,KACzB;MACH,IAAIH,gBAAgB,CAACG,KAAK,KAAKF,kBAAkB,CAACE,KAAK,EACrDX,eAAe,CAACW,KAAK,GACnB,EAAEE,CAAC,CAACN,YAAY,GAAGE,kBAAkB,CAACE,KAAK,CAAC,GAC5C,CAACF,kBAAkB,CAACE,KAAK,CAAC,KACzB,IAAIE,CAAC,CAACN,YAAY,GAAG,CAAC,EACzBP,eAAe,CAACW,KAAK,GAAGE,CAAC,CAACN,YAAY,GAAG,CAACE,kBAAkB,CAACE,KAAK;IACtE;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMO,gBAA4D,GAChE1B,WAAW,CAAEqB,CAAC,IAAK;IACjB,SAAS;;IACT,IAAId,cAAc,CAACY,KAAK,IAAI,CAACb,6BAA6B,EAAE;IAC5D,MAAMqB,OAAO,GAAGA,CACdC,EAAU,EACVC,MAAwB,EACxBC,OAAe,EACfC,KAAc,KACX;MACHhB,YAAY,CAACI,KAAK,GAAGpB,UAAU,CAAC6B,EAAE,EAAEC,MAAM,EAAE,MAAM;QAChD,OAAOE,KAAK,KAAK,QAAQ,IACvBnB,gBAAgB,IAChBd,OAAO,CAACc,gBAAgB,CAAC,CAACmB,KAAK,CAAC;MACpC,CAAC,CAAC;MACFvB,eAAe,CAACW,KAAK,GAAGpB,UAAU,CAChC+B,OAAO,EACP7B,2BACF,CAAC;IACH,CAAC;IACD,IAAIG,UAAU,CAACe,KAAK,CAACK,MAAM,EAAE;MAC3B,MAAMQ,cAAc,GAAG5B,UAAU,CAACe,KAAK,CAACK,MAAM,GAAG,CAAC;MAClD,IAAIH,CAAC,CAACY,SAAS,GAAG,IAAI,EAAE;QACtB,IACE5B,gBAAgB,CAACc,KAAK,CAACM,MAAM,KAAKX,uBAAuB,CAACK,KAAK,IAC/D,CAACT,WAAW,EACZ;UACAiB,OAAO,CAAChB,eAAe,CAACQ,KAAK,EAAElB,2BAA2B,EAAE,CAAC,CAAC;UAC9D,OAAOH,OAAO,CAACW,UAAU,CAAC,CAAC,GAAG,CAAC;QACjC;QACA,IAAIY,CAAC,CAACY,SAAS,GAAG,IAAI,IAAI,CAACvB,WAAW,EAAE;UACtCiB,OAAO,CAAChB,eAAe,CAACQ,KAAK,EAAElB,2BAA2B,EAAE,CAAC,CAAC;UAC9D,OAAOH,OAAO,CAACW,UAAU,CAAC,CAAC,GAAG,CAAC;QACjC;QACA,IAAIY,CAAC,CAACY,SAAS,GAAG,IAAI,EAAE;UACtBN,OAAO,CACLb,uBAAuB,CAACK,KAAK,EAC7BlB,2BAA2B,EAC3Ba,uBAAuB,CAACK,KAAK,GAAGF,kBAAkB,CAACE,KAAK,EACxD,CACF,CAAC;UACDd,gBAAgB,CAACc,KAAK,GAAG;YACvBM,MAAM,EAAEX,uBAAuB,CAACK;UAClC,CAAC;UACD;QACF;MACF,CAAC,MAAM,IAAIE,CAAC,CAACY,SAAS,GAAG,CAAC,IAAI,EAAE;QAC9BN,OAAO,CACLV,kBAAkB,CAACE,KAAK,EACxBlB,2BAA2B,EAC3B,CAAC,EACD+B,cACF,CAAC;QACD3B,gBAAgB,CAACc,KAAK,GAAG;UACvBM,MAAM,EAAER,kBAAkB,CAACE;QAC7B,CAAC;QACD;MACF;MACA,IAAIe,qBAAqB,GAAGC,IAAI,CAACC,GAAG,CAClC/B,gBAAgB,CAACc,KAAK,CAACM,MAAM,GAAGJ,CAAC,CAACN,YAAY,GAAG,GACnD,CAAC;MACD,IAAIsB,sBAAsB,GAAG,CAAC;MAC9B,IAAIC,qBAAqB,GAAG,CAAC;MAC7B,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGnC,UAAU,CAACe,KAAK,CAACK,MAAM,EAAEe,CAAC,EAAE,EAAE;QAChD,MAAMC,SAAS,GAAGpC,UAAU,CAACe,KAAK,CAACoB,CAAC,CAAC;QACrC,IAAI,CAACC,SAAS,EACZ,OAAOb,OAAO,CACZV,kBAAkB,CAACE,KAAK,EACxBlB,2BAA2B,EAC3B,CAAC,EACD+B,cACF,CAAC;QACH,MAAMS,kBAAkB,GAAGN,IAAI,CAACC,GAAG,CACjC/B,gBAAgB,CAACc,KAAK,CAACM,MAAM,GAAGJ,CAAC,CAACN,YAAY,GAAGyB,SAAS,CAACf,MAC7D,CAAC;QACD,IAAIgB,kBAAkB,GAAGP,qBAAqB,EAAE;UAC9CA,qBAAqB,GAAGO,kBAAkB;UAC1CJ,sBAAsB,GAAGG,SAAS,CAACf,MAAM;UACzCa,qBAAqB,GAAGC,CAAC;QAC3B;MACF;MACA,IAAIF,sBAAsB,EAAE;QAC1BhC,gBAAgB,CAACc,KAAK,GAAG;UACvBM,MAAM,EAAEY;QACV,CAAC;QACD,OAAOV,OAAO,CACZU,sBAAsB,EACtBpC,2BAA2B,EAC3BoC,sBAAsB,GAAGpB,kBAAkB,CAACE,KAAK,EACjDmB,qBACF,CAAC;MACH;MACA,IAAI,CAAC5B,WAAW,EAAE;QAChBZ,OAAO,CAACW,UAAU,CAAC,CAAC,GAAG,CAAC;QACxB,OAAOkB,OAAO,CAAChB,eAAe,CAACQ,KAAK,EAAElB,2BAA2B,EAAE,CAAC,CAAC;MACvE,CAAC,MACC,OAAO0B,OAAO,CACZb,uBAAuB,CAACK,KAAK,EAC7BlB,2BAA2B,EAC3Ba,uBAAuB,CAACK,KAAK,GAAGF,kBAAkB,CAACE,KAAK,EACxD,CACF,CAAC;IACL;IACA,MAAMuB,iBAAiB,GAAG,EAAEzB,kBAAkB,CAACE,KAAK,GAAG,CAAC,CAAC;IACzD,MAAMwB,QAAQ,GAAG3B,gBAAgB,CAACG,KAAK,KAAKR,eAAe,CAACQ,KAAK;IACjE,MAAMyB,eAAe,GAAGT,IAAI,CAACC,GAAG,CAACf,CAAC,CAACN,YAAY,CAAC,GAAG2B,iBAAiB;IACpE,MAAMG,cAAc,GAAGF,QAAQ,GAC3BtB,CAAC,CAACY,SAAS,GAAG,CAAC,IAAI,GACnBZ,CAAC,CAACY,SAAS,GAAG,IAAI;IACtB,IAAIU,QAAQ,EAAE;MACZ,IAAItB,CAAC,CAACN,YAAY,GAAG,EAAE,IAAI6B,eAAe,EACxCjB,OAAO,CAACV,kBAAkB,CAACE,KAAK,EAAElB,2BAA2B,EAAE,CAAC,CAAC,CAAC,KAC/D,IAAI4C,cAAc,EACrBlB,OAAO,CAACV,kBAAkB,CAACE,KAAK,EAAElB,2BAA2B,EAAE,CAAC,CAAC,CAAC,KAC/D0B,OAAO,CAAChB,eAAe,CAACQ,KAAK,EAAElB,2BAA2B,EAAE,CAAC,CAAC;MACnE;IACF;IACA,IAAI2C,eAAe,IAAIC,cAAc,EAAE;MACrC,IAAIxB,CAAC,CAACY,SAAS,GAAG,IAAI,EACpBN,OAAO,CAAChB,eAAe,CAACQ,KAAK,EAAElB,2BAA2B,EAAE,CAAC,CAAC,CAAC,KAC5D0B,OAAO,CAAChB,eAAe,CAACQ,KAAK,EAAElB,2BAA2B,EAAE,CAAC,CAAC;MACnEH,OAAO,CAACW,UAAU,CAAC,CAAC,GAAG,CAAC;IAC1B,CAAC,MAAM,IAAIY,CAAC,CAACN,YAAY,IAAI2B,iBAAiB,EAAE;MAC9Cf,OAAO,CAACV,kBAAkB,CAACE,KAAK,EAAElB,2BAA2B,EAAE,CAAC,CAAC;IACnE;EACF,CAAC,EAAE,EAAE,CAAC;EAER,OAAO;IAAEmB,aAAa;IAAEM,gBAAgB;IAAER;EAAmB,CAAC;AAChE","ignoreList":[]}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { useImperativeHandle, useMemo, useRef } from 'react';
|
|
4
|
+
import { animateCloseTimingConfig } from "../../config/bottomSheet.constants.js";
|
|
5
|
+
export function useBottomSheetRef({
|
|
6
|
+
ref,
|
|
7
|
+
showModal,
|
|
8
|
+
setShowModal
|
|
9
|
+
}) {
|
|
10
|
+
const mounterRef = useRef(null);
|
|
11
|
+
const sheetRef = useRef(null);
|
|
12
|
+
const modalRef = useMemo(() => {
|
|
13
|
+
const hasState = setShowModal && typeof showModal === 'boolean';
|
|
14
|
+
return {
|
|
15
|
+
getModalState: () => sheetRef.current?.getModalState(),
|
|
16
|
+
openModal: openModalProps => {
|
|
17
|
+
if (hasState && !openModalProps?.onOpen) setShowModal(true);else mounterRef.current?.mountComponent(openModalProps);
|
|
18
|
+
},
|
|
19
|
+
closeModal: closeModalProps => {
|
|
20
|
+
if (closeModalProps?.skipAnimation) {
|
|
21
|
+
mounterRef.current?.hardUnMountComponent(closeModalProps);
|
|
22
|
+
hasState && setShowModal(false);
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
if (closeModalProps?.isNavigating) {
|
|
26
|
+
const closeProps = {
|
|
27
|
+
duration: closeModalProps.duration || 100,
|
|
28
|
+
easing: closeModalProps?.easing,
|
|
29
|
+
onClose: closeModalProps?.onClose
|
|
30
|
+
};
|
|
31
|
+
sheetRef.current?.animateCloseModal(closeProps);
|
|
32
|
+
mounterRef.current?.unMountComponent(closeProps);
|
|
33
|
+
if (hasState) setTimeout(() => setShowModal(false), closeProps.duration);
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
if (hasState && !closeModalProps?.duration && !closeModalProps?.onClose) return setShowModal(false);
|
|
37
|
+
sheetRef.current?.animateCloseModal(closeModalProps);
|
|
38
|
+
mounterRef.current?.unMountComponent(closeModalProps);
|
|
39
|
+
if (hasState) setTimeout(() => setShowModal(false), animateCloseTimingConfig.duration);
|
|
40
|
+
},
|
|
41
|
+
closeWithoutAnimation: () => {
|
|
42
|
+
mounterRef.current?.hardUnMountComponent();
|
|
43
|
+
hasState && setShowModal(false);
|
|
44
|
+
},
|
|
45
|
+
snapToIndex: index => sheetRef.current?.snapToIndex(index),
|
|
46
|
+
snapToPercentage: percentage => sheetRef.current?.snapToPercentage(percentage)
|
|
47
|
+
};
|
|
48
|
+
}, []);
|
|
49
|
+
useImperativeHandle(ref, () => modalRef, []);
|
|
50
|
+
return {
|
|
51
|
+
mounterRef,
|
|
52
|
+
sheetRef,
|
|
53
|
+
modalRef
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=useBottomSheetRef.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useImperativeHandle","useMemo","useRef","animateCloseTimingConfig","useBottomSheetRef","ref","showModal","setShowModal","mounterRef","sheetRef","modalRef","hasState","getModalState","current","openModal","openModalProps","onOpen","mountComponent","closeModal","closeModalProps","skipAnimation","hardUnMountComponent","isNavigating","closeProps","duration","easing","onClose","animateCloseModal","unMountComponent","setTimeout","closeWithoutAnimation","snapToIndex","index","snapToPercentage","percentage"],"sourceRoot":"../../../../../src","sources":["BottomSheet/controller/hooks/useBottomSheetRef.ts"],"mappings":";;AAAA,SAASA,mBAAmB,EAAEC,OAAO,EAAEC,MAAM,QAAQ,OAAO;AAQ5D,SAASC,wBAAwB,QAAQ,uCAAoC;AAM7E,OAAO,SAASC,iBAAiBA,CAAC;EAChCC,GAAG;EACHC,SAAS;EACTC;AACsB,CAAC,EAAE;EACzB,MAAMC,UAAU,GAAGN,MAAM,CAAoC,IAAI,CAAC;EAClE,MAAMO,QAAQ,GAAGP,MAAM,CAAwB,IAAI,CAAC;EACpD,MAAMQ,QAAwB,GAAGT,OAAO,CAAC,MAAM;IAC7C,MAAMU,QAAQ,GAAGJ,YAAY,IAAI,OAAOD,SAAS,KAAK,SAAS;IAC/D,OAAO;MACLM,aAAa,EAAEA,CAAA,KAAMH,QAAQ,CAACI,OAAO,EAAED,aAAa,CAAC,CAAC;MACtDE,SAAS,EAAGC,cAAc,IAAK;QAC7B,IAAIJ,QAAQ,IAAI,CAACI,cAAc,EAAEC,MAAM,EAAET,YAAY,CAAC,IAAI,CAAC,CAAC,KACvDC,UAAU,CAACK,OAAO,EAAEI,cAAc,CAACF,cAAc,CAAC;MACzD,CAAC;MACDG,UAAU,EAAGC,eAAe,IAAK;QAC/B,IAAIA,eAAe,EAAEC,aAAa,EAAE;UAClCZ,UAAU,CAACK,OAAO,EAAEQ,oBAAoB,CAACF,eAAe,CAAC;UACzDR,QAAQ,IAAIJ,YAAY,CAAC,KAAK,CAAC;UAC/B;QACF;QACA,IAAIY,eAAe,EAAEG,YAAY,EAAE;UACjC,MAAMC,UAAU,GAAG;YACjBC,QAAQ,EAAEL,eAAe,CAACK,QAAQ,IAAI,GAAG;YACzCC,MAAM,EAAEN,eAAe,EAAEM,MAAM;YAC/BC,OAAO,EAAEP,eAAe,EAAEO;UAC5B,CAAC;UACDjB,QAAQ,CAACI,OAAO,EAAEc,iBAAiB,CAACJ,UAAU,CAAC;UAC/Cf,UAAU,CAACK,OAAO,EAAEe,gBAAgB,CAACL,UAAU,CAAC;UAChD,IAAIZ,QAAQ,EACVkB,UAAU,CAAC,MAAMtB,YAAY,CAAC,KAAK,CAAC,EAAEgB,UAAU,CAACC,QAAQ,CAAC;UAC5D;QACF;QACA,IAAIb,QAAQ,IAAI,CAACQ,eAAe,EAAEK,QAAQ,IAAI,CAACL,eAAe,EAAEO,OAAO,EACrE,OAAOnB,YAAY,CAAC,KAAK,CAAC;QAC5BE,QAAQ,CAACI,OAAO,EAAEc,iBAAiB,CAACR,eAAe,CAAC;QACpDX,UAAU,CAACK,OAAO,EAAEe,gBAAgB,CAACT,eAAe,CAAC;QACrD,IAAIR,QAAQ,EACVkB,UAAU,CACR,MAAMtB,YAAY,CAAC,KAAK,CAAC,EACzBJ,wBAAwB,CAACqB,QAC3B,CAAC;MACL,CAAC;MACDM,qBAAqB,EAAEA,CAAA,KAAM;QAC3BtB,UAAU,CAACK,OAAO,EAAEQ,oBAAoB,CAAC,CAAC;QAC1CV,QAAQ,IAAIJ,YAAY,CAAC,KAAK,CAAC;MACjC,CAAC;MACDwB,WAAW,EAAGC,KAAK,IAAKvB,QAAQ,CAACI,OAAO,EAAEkB,WAAW,CAACC,KAAK,CAAC;MAC5DC,gBAAgB,EAAGC,UAAU,IAC3BzB,QAAQ,CAACI,OAAO,EAAEoB,gBAAgB,CAACC,UAAU;IACjD,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EACNlC,mBAAmB,CAACK,GAAG,EAAE,MAAMK,QAAQ,EAAE,EAAE,CAAC;EAC5C,OAAO;IACLF,UAAU;IACVC,QAAQ;IACRC;EACF,CAAC;AACH","ignoreList":[]}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { useDeviceOrientation, strToNumPercentage, strToNumPercentageWorklet } from '@shaquillehinds/react-native-essentials';
|
|
4
|
+
import { extraHeightPercent } from "../../config/bottomSheet.constants.js";
|
|
5
|
+
export function useBottomSheetUtils() {
|
|
6
|
+
const deviceOrientation = useDeviceOrientation();
|
|
7
|
+
const extraHeight = deviceOrientation.relativeY(extraHeightPercent);
|
|
8
|
+
const modalHeight = deviceOrientation.relativeY(100) + extraHeight;
|
|
9
|
+
const modalBottomOffset = -modalHeight * 2;
|
|
10
|
+
const getMaxMinSnapPoints = snapPoints => {
|
|
11
|
+
const firstSnapPoint = snapPoints[0];
|
|
12
|
+
let maxSnapPoint = firstSnapPoint.offset;
|
|
13
|
+
let minSnapPoint = firstSnapPoint.offset;
|
|
14
|
+
for (const snapPoint of snapPoints) {
|
|
15
|
+
if (snapPoint.offset < maxSnapPoint) maxSnapPoint = snapPoint.offset;
|
|
16
|
+
if (snapPoint.offset > minSnapPoint) minSnapPoint = snapPoint.offset;
|
|
17
|
+
}
|
|
18
|
+
return {
|
|
19
|
+
maxSnapPoint,
|
|
20
|
+
minSnapPoint,
|
|
21
|
+
firstSnapPoint
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
const getMaxMinSnapPointsWorklet = snapPoints => {
|
|
25
|
+
'worklet';
|
|
26
|
+
|
|
27
|
+
const firstSnapPoint = snapPoints.value[0];
|
|
28
|
+
let maxSnapPoint = firstSnapPoint.offset;
|
|
29
|
+
let minSnapPoint = firstSnapPoint.offset;
|
|
30
|
+
for (const snapPoint of snapPoints.value) {
|
|
31
|
+
if (snapPoint.offset < maxSnapPoint) maxSnapPoint = snapPoint.offset;
|
|
32
|
+
if (snapPoint.offset > minSnapPoint) minSnapPoint = snapPoint.offset;
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
maxSnapPoint,
|
|
36
|
+
minSnapPoint,
|
|
37
|
+
firstSnapPoint
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
const percentageToSnapPoint = p => {
|
|
41
|
+
const percentage = strToNumPercentage(p);
|
|
42
|
+
return {
|
|
43
|
+
percentage: percentage / 100,
|
|
44
|
+
offset: -(deviceOrientation.relativeY(percentage) + extraHeight)
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
const percentageToSnapPointWorklet = (p, screenHeight) => {
|
|
48
|
+
'worklet';
|
|
49
|
+
|
|
50
|
+
const percentage = strToNumPercentageWorklet(p);
|
|
51
|
+
const decimal = percentage / 100;
|
|
52
|
+
const snapPointOffset = screenHeight * decimal;
|
|
53
|
+
const extraSnapPointHeight = screenHeight * (extraHeightPercent / 100);
|
|
54
|
+
return {
|
|
55
|
+
percentage: decimal,
|
|
56
|
+
offset: -(snapPointOffset + extraSnapPointHeight)
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
return {
|
|
60
|
+
...deviceOrientation,
|
|
61
|
+
extraHeight,
|
|
62
|
+
modalHeight,
|
|
63
|
+
modalBottomOffset,
|
|
64
|
+
getMaxMinSnapPoints,
|
|
65
|
+
getMaxMinSnapPointsWorklet,
|
|
66
|
+
percentageToSnapPoint,
|
|
67
|
+
percentageToSnapPointWorklet
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=useBottomSheetUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useDeviceOrientation","strToNumPercentage","strToNumPercentageWorklet","extraHeightPercent","useBottomSheetUtils","deviceOrientation","extraHeight","relativeY","modalHeight","modalBottomOffset","getMaxMinSnapPoints","snapPoints","firstSnapPoint","maxSnapPoint","offset","minSnapPoint","snapPoint","getMaxMinSnapPointsWorklet","value","percentageToSnapPoint","p","percentage","percentageToSnapPointWorklet","screenHeight","decimal","snapPointOffset","extraSnapPointHeight"],"sourceRoot":"../../../../../src","sources":["BottomSheet/controller/hooks/useBottomSheetUtils.ts"],"mappings":";;AAAA,SACEA,oBAAoB,EACpBC,kBAAkB,EAClBC,yBAAyB,QACpB,yCAAyC;AAGhD,SAASC,kBAAkB,QAAQ,uCAAoC;AAEvE,OAAO,SAASC,mBAAmBA,CAAA,EAAG;EACpC,MAAMC,iBAAiB,GAAGL,oBAAoB,CAAC,CAAC;EAEhD,MAAMM,WAAW,GAAGD,iBAAiB,CAACE,SAAS,CAACJ,kBAAkB,CAAC;EACnE,MAAMK,WAAW,GAAGH,iBAAiB,CAACE,SAAS,CAAC,GAAG,CAAC,GAAGD,WAAW;EAClE,MAAMG,iBAAiB,GAAG,CAACD,WAAW,GAAG,CAAC;EAE1C,MAAME,mBAAmB,GAAIC,UAAuB,IAAK;IACvD,MAAMC,cAAc,GAAGD,UAAU,CAAC,CAAC,CAAE;IACrC,IAAIE,YAAY,GAAGD,cAAc,CAACE,MAAM;IACxC,IAAIC,YAAY,GAAGH,cAAc,CAACE,MAAM;IACxC,KAAK,MAAME,SAAS,IAAIL,UAAU,EAAE;MAClC,IAAIK,SAAS,CAACF,MAAM,GAAGD,YAAY,EAAEA,YAAY,GAAGG,SAAS,CAACF,MAAM;MACpE,IAAIE,SAAS,CAACF,MAAM,GAAGC,YAAY,EAAEA,YAAY,GAAGC,SAAS,CAACF,MAAM;IACtE;IACA,OAAO;MAAED,YAAY;MAAEE,YAAY;MAAEH;IAAe,CAAC;EACvD,CAAC;EAED,MAAMK,0BAA0B,GAAIN,UAAoC,IAAK;IAC3E,SAAS;;IACT,MAAMC,cAAc,GAAGD,UAAU,CAACO,KAAK,CAAC,CAAC,CAAE;IAC3C,IAAIL,YAAY,GAAGD,cAAc,CAACE,MAAM;IACxC,IAAIC,YAAY,GAAGH,cAAc,CAACE,MAAM;IACxC,KAAK,MAAME,SAAS,IAAIL,UAAU,CAACO,KAAK,EAAE;MACxC,IAAIF,SAAS,CAACF,MAAM,GAAGD,YAAY,EAAEA,YAAY,GAAGG,SAAS,CAACF,MAAM;MACpE,IAAIE,SAAS,CAACF,MAAM,GAAGC,YAAY,EAAEA,YAAY,GAAGC,SAAS,CAACF,MAAM;IACtE;IACA,OAAO;MAAED,YAAY;MAAEE,YAAY;MAAEH;IAAe,CAAC;EACvD,CAAC;EAED,MAAMO,qBAAqB,GAAIC,CAAkB,IAAK;IACpD,MAAMC,UAAU,GAAGpB,kBAAkB,CAACmB,CAAC,CAAC;IACxC,OAAO;MACLC,UAAU,EAAEA,UAAU,GAAG,GAAG;MAC5BP,MAAM,EAAE,EAAET,iBAAiB,CAACE,SAAS,CAACc,UAAU,CAAC,GAAGf,WAAW;IACjE,CAAC;EACH,CAAC;EAED,MAAMgB,4BAA4B,GAAGA,CACnCF,CAAkB,EAClBG,YAAoB,KACjB;IACH,SAAS;;IACT,MAAMF,UAAU,GAAGnB,yBAAyB,CAACkB,CAAC,CAAC;IAC/C,MAAMI,OAAO,GAAGH,UAAU,GAAG,GAAG;IAChC,MAAMI,eAAe,GAAGF,YAAY,GAAGC,OAAO;IAC9C,MAAME,oBAAoB,GAAGH,YAAY,IAAIpB,kBAAkB,GAAG,GAAG,CAAC;IACtE,OAAO;MACLkB,UAAU,EAAEG,OAAO;MACnBV,MAAM,EAAE,EAAEW,eAAe,GAAGC,oBAAoB;IAClD,CAAC;EACH,CAAC;EAED,OAAO;IACL,GAAGrB,iBAAiB;IACpBC,WAAW;IACXE,WAAW;IACXC,iBAAiB;IACjBC,mBAAmB;IACnBO,0BAA0B;IAC1BE,qBAAqB;IACrBG;EACF,CAAC;AACH","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../../src","sources":["BottomSheet/controller/index.ts"],"mappings":";;AAAA,cAAc,6BAA0B","ignoreList":[]}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { useCallback, useRef } from 'react';
|
|
4
|
+
import { runOnUI, withTiming } from 'react-native-reanimated';
|
|
5
|
+
import { closeKeyboardTimingConfig, openKeyboardTimingConfig } from "../config/bottomSheet.constants.js";
|
|
6
|
+
import { isAndroid, isIOS, useKeyboardListeners, wait } from '@shaquillehinds/react-native-essentials';
|
|
7
|
+
export function keyboardAnimationController(props) {
|
|
8
|
+
const {
|
|
9
|
+
translationY,
|
|
10
|
+
prevTranslationY,
|
|
11
|
+
modalContentTranslateY,
|
|
12
|
+
keyboardHeight
|
|
13
|
+
} = props;
|
|
14
|
+
const keyboardHeightRef = useRef(0);
|
|
15
|
+
const setKeyboardHeight = useCallback(height => {
|
|
16
|
+
keyboardHeight.value = height;
|
|
17
|
+
keyboardHeightRef.current = height;
|
|
18
|
+
}, []);
|
|
19
|
+
const adjustForKeyboardHeight = useCallback((currentKeyboardHeight, previousKeyboardHeight, screenHeight) => {
|
|
20
|
+
'worklet';
|
|
21
|
+
|
|
22
|
+
const maxModalY = screenHeight * -1;
|
|
23
|
+
if (currentKeyboardHeight > 10) {
|
|
24
|
+
if (translationY.value <= maxModalY) {
|
|
25
|
+
modalContentTranslateY.value = withTiming(-currentKeyboardHeight, openKeyboardTimingConfig);
|
|
26
|
+
} else {
|
|
27
|
+
const maxGap = maxModalY - translationY.value;
|
|
28
|
+
const height = translationY.value - currentKeyboardHeight;
|
|
29
|
+
if (height < maxModalY) {
|
|
30
|
+
const modalShift = translationY.value + maxGap;
|
|
31
|
+
translationY.value = withTiming(modalShift, openKeyboardTimingConfig);
|
|
32
|
+
prevTranslationY.value = modalShift;
|
|
33
|
+
modalContentTranslateY.value = withTiming(-currentKeyboardHeight - maxGap, openKeyboardTimingConfig);
|
|
34
|
+
} else {
|
|
35
|
+
translationY.value = withTiming(height, openKeyboardTimingConfig);
|
|
36
|
+
prevTranslationY.value = height;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
} else {
|
|
40
|
+
const newTranslationY = translationY.value + (previousKeyboardHeight + modalContentTranslateY.value);
|
|
41
|
+
translationY.value = withTiming(newTranslationY, closeKeyboardTimingConfig);
|
|
42
|
+
prevTranslationY.value = newTranslationY;
|
|
43
|
+
modalContentTranslateY.value = withTiming(0, closeKeyboardTimingConfig);
|
|
44
|
+
}
|
|
45
|
+
}, []);
|
|
46
|
+
const keyBoardShowListener = useCallback(async (e, shouldAdjust) => {
|
|
47
|
+
await wait(10);
|
|
48
|
+
if (keyboardHeightRef.current) return;
|
|
49
|
+
setKeyboardHeight(e.endCoordinates.height);
|
|
50
|
+
if (!shouldAdjust) return;
|
|
51
|
+
if (props.inputsForKeyboardToAvoid && !props.inputsForKeyboardToAvoid.find(input => {
|
|
52
|
+
return input.current?.isFocused();
|
|
53
|
+
})) return;
|
|
54
|
+
props.setDisableLayoutAnimation(true);
|
|
55
|
+
runOnUI(adjustForKeyboardHeight)(keyboardHeightRef.current, 0, props.screenHeight);
|
|
56
|
+
}, [props.screenHeight]);
|
|
57
|
+
const keyboardHideListener = useCallback(async shouldAdjust => {
|
|
58
|
+
if (!keyboardHeightRef.current) return;
|
|
59
|
+
const previousKeyboardHeight = keyboardHeightRef.current;
|
|
60
|
+
setKeyboardHeight(0);
|
|
61
|
+
if (!shouldAdjust) return;
|
|
62
|
+
props.setDisableLayoutAnimation(false);
|
|
63
|
+
runOnUI(adjustForKeyboardHeight)(keyboardHeightRef.current, previousKeyboardHeight, props.screenHeight);
|
|
64
|
+
}, [props.screenHeight]);
|
|
65
|
+
const shouldAdjustForKeyboard = !!(props.avoidKeyboard || props.inputsForKeyboardToAvoid?.length);
|
|
66
|
+
useKeyboardListeners({
|
|
67
|
+
listeners: {
|
|
68
|
+
keyboardWillShow: e => {
|
|
69
|
+
isIOS && keyBoardShowListener(e, shouldAdjustForKeyboard);
|
|
70
|
+
},
|
|
71
|
+
keyboardWillHide: () => {
|
|
72
|
+
isIOS && keyboardHideListener(shouldAdjustForKeyboard);
|
|
73
|
+
},
|
|
74
|
+
keyboardDidShow: e => {
|
|
75
|
+
isAndroid && keyBoardShowListener(e, shouldAdjustForKeyboard);
|
|
76
|
+
},
|
|
77
|
+
keyboardDidHide: async () => {
|
|
78
|
+
isAndroid && keyboardHideListener(shouldAdjustForKeyboard);
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
subscribeCondition: () => true
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=keyboardAnimation.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useCallback","useRef","runOnUI","withTiming","closeKeyboardTimingConfig","openKeyboardTimingConfig","isAndroid","isIOS","useKeyboardListeners","wait","keyboardAnimationController","props","translationY","prevTranslationY","modalContentTranslateY","keyboardHeight","keyboardHeightRef","setKeyboardHeight","height","value","current","adjustForKeyboardHeight","currentKeyboardHeight","previousKeyboardHeight","screenHeight","maxModalY","maxGap","modalShift","newTranslationY","keyBoardShowListener","e","shouldAdjust","endCoordinates","inputsForKeyboardToAvoid","find","input","isFocused","setDisableLayoutAnimation","keyboardHideListener","shouldAdjustForKeyboard","avoidKeyboard","length","listeners","keyboardWillShow","keyboardWillHide","keyboardDidShow","keyboardDidHide","subscribeCondition"],"sourceRoot":"../../../../src","sources":["BottomSheet/controller/keyboardAnimation.controller.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
//$lf-ignore
|
|
4
|
+
import { runOnJS, useSharedValue } from 'react-native-reanimated';
|
|
5
|
+
import { useCallback } from 'react';
|
|
6
|
+
export function scrollContentController({
|
|
7
|
+
scrollActive,
|
|
8
|
+
scrollY,
|
|
9
|
+
onDragStartGesture,
|
|
10
|
+
onDragEndGesture,
|
|
11
|
+
onDragGesture,
|
|
12
|
+
maxScrollOffset,
|
|
13
|
+
inverted,
|
|
14
|
+
scrollableComponentRef
|
|
15
|
+
}) {
|
|
16
|
+
const enableScroll = (scrollEnabled, timeout) => {
|
|
17
|
+
if (timeout) setTimeout(() => scrollableComponentRef?.current?.setNativeProps({
|
|
18
|
+
scrollEnabled
|
|
19
|
+
}), timeout);else scrollableComponentRef?.current?.setNativeProps({
|
|
20
|
+
scrollEnabled
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
const dragEnabled = useSharedValue(false);
|
|
24
|
+
const initDragPos = useSharedValue(0);
|
|
25
|
+
const beginDragInit = useSharedValue(false);
|
|
26
|
+
const scrollEnabled = useSharedValue(true);
|
|
27
|
+
const onBeginScroll = useCallback(e => {
|
|
28
|
+
'worklet';
|
|
29
|
+
|
|
30
|
+
const maxPositionFromTopToEnableScroll = 15;
|
|
31
|
+
const isPositionFarFromTop = inverted.value ? scrollY.value < maxScrollOffset.value - maxPositionFromTopToEnableScroll : scrollY.value > maxPositionFromTopToEnableScroll;
|
|
32
|
+
if (isPositionFarFromTop) {
|
|
33
|
+
scrollActive.value = true;
|
|
34
|
+
} else {
|
|
35
|
+
beginDragInit.value = true;
|
|
36
|
+
onDragStartGesture(e);
|
|
37
|
+
}
|
|
38
|
+
}, []);
|
|
39
|
+
const onUpdateScroll = useCallback(e => {
|
|
40
|
+
'worklet';
|
|
41
|
+
|
|
42
|
+
if (scrollActive.value) return;
|
|
43
|
+
if (dragEnabled.value) {
|
|
44
|
+
if (scrollEnabled.value) {
|
|
45
|
+
if (e.translationY < initDragPos.value) {
|
|
46
|
+
scrollEnabled.value = false;
|
|
47
|
+
runOnJS(enableScroll)(false);
|
|
48
|
+
}
|
|
49
|
+
initDragPos.value = e.translationY;
|
|
50
|
+
}
|
|
51
|
+
return onDragGesture(e);
|
|
52
|
+
}
|
|
53
|
+
if (beginDragInit.value) {
|
|
54
|
+
beginDragInit.value = false;
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
if (e.translationY > -400 && (inverted.value ? Math.round(scrollY.value) >= Math.round(maxScrollOffset.value) : scrollY.value <= 0)) {
|
|
58
|
+
if (!dragEnabled.value) {
|
|
59
|
+
initDragPos.value = e.translationY;
|
|
60
|
+
dragEnabled.value = true;
|
|
61
|
+
onDragGesture(e);
|
|
62
|
+
}
|
|
63
|
+
} else if (scrollY.value > 0) {
|
|
64
|
+
scrollActive.value = true;
|
|
65
|
+
}
|
|
66
|
+
}, [enableScroll]);
|
|
67
|
+
const onEndScroll = useCallback(e => {
|
|
68
|
+
'worklet';
|
|
69
|
+
|
|
70
|
+
if (!scrollActive.value) {
|
|
71
|
+
onDragEndGesture(e);
|
|
72
|
+
runOnJS(enableScroll)(true);
|
|
73
|
+
} else runOnJS(enableScroll)(true);
|
|
74
|
+
scrollActive.value = false;
|
|
75
|
+
dragEnabled.value = false;
|
|
76
|
+
scrollEnabled.value = true;
|
|
77
|
+
}, [enableScroll]);
|
|
78
|
+
return {
|
|
79
|
+
onBeginScroll,
|
|
80
|
+
onUpdateScroll,
|
|
81
|
+
onEndScroll
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=scrollContent.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["runOnJS","useSharedValue","useCallback","scrollContentController","scrollActive","scrollY","onDragStartGesture","onDragEndGesture","onDragGesture","maxScrollOffset","inverted","scrollableComponentRef","enableScroll","scrollEnabled","timeout","setTimeout","current","setNativeProps","dragEnabled","initDragPos","beginDragInit","onBeginScroll","e","maxPositionFromTopToEnableScroll","isPositionFarFromTop","value","onUpdateScroll","translationY","Math","round","onEndScroll"],"sourceRoot":"../../../../src","sources":["BottomSheet/controller/scrollContent.controller.ts"],"mappings":"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","ignoreList":[]}
|