@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.
Files changed (187) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +880 -0
  3. package/lib/commonjs/BottomSheet/animations/drag.animation.js +72 -0
  4. package/lib/commonjs/BottomSheet/animations/drag.animation.js.map +1 -0
  5. package/lib/commonjs/BottomSheet/components/BottomSheet.js +92 -0
  6. package/lib/commonjs/BottomSheet/components/BottomSheet.js.map +1 -0
  7. package/lib/commonjs/BottomSheet/components/BottomSheetFlatlist.js +38 -0
  8. package/lib/commonjs/BottomSheet/components/BottomSheetFlatlist.js.map +1 -0
  9. package/lib/commonjs/BottomSheet/components/BottomSheetModal.js +34 -0
  10. package/lib/commonjs/BottomSheet/components/BottomSheetModal.js.map +1 -0
  11. package/lib/commonjs/BottomSheet/components/BottomSheetScrollView.js +37 -0
  12. package/lib/commonjs/BottomSheet/components/BottomSheetScrollView.js.map +1 -0
  13. package/lib/commonjs/BottomSheet/config/bottomSheet.constants.js +35 -0
  14. package/lib/commonjs/BottomSheet/config/bottomSheet.constants.js.map +1 -0
  15. package/lib/commonjs/BottomSheet/config/bottomSheet.styles.js +42 -0
  16. package/lib/commonjs/BottomSheet/config/bottomSheet.styles.js.map +1 -0
  17. package/lib/commonjs/BottomSheet/config/bottomSheet.types.js +14 -0
  18. package/lib/commonjs/BottomSheet/config/bottomSheet.types.js.map +1 -0
  19. package/lib/commonjs/BottomSheet/controller/bottomFlatlist.controller.js +69 -0
  20. package/lib/commonjs/BottomSheet/controller/bottomFlatlist.controller.js.map +1 -0
  21. package/lib/commonjs/BottomSheet/controller/bottomScrollView.controller.js +41 -0
  22. package/lib/commonjs/BottomSheet/controller/bottomScrollView.controller.js.map +1 -0
  23. package/lib/commonjs/BottomSheet/controller/bottomSheet.controller.js +216 -0
  24. package/lib/commonjs/BottomSheet/controller/bottomSheet.controller.js.map +1 -0
  25. package/lib/commonjs/BottomSheet/controller/callbacks.controller.js +135 -0
  26. package/lib/commonjs/BottomSheet/controller/callbacks.controller.js.map +1 -0
  27. package/lib/commonjs/BottomSheet/controller/dragAnimation.controller.js +127 -0
  28. package/lib/commonjs/BottomSheet/controller/dragAnimation.controller.js.map +1 -0
  29. package/lib/commonjs/BottomSheet/controller/hooks/useBottomSheetRef.js +60 -0
  30. package/lib/commonjs/BottomSheet/controller/hooks/useBottomSheetRef.js.map +1 -0
  31. package/lib/commonjs/BottomSheet/controller/hooks/useBottomSheetUtils.js +74 -0
  32. package/lib/commonjs/BottomSheet/controller/hooks/useBottomSheetUtils.js.map +1 -0
  33. package/lib/commonjs/BottomSheet/controller/index.js +17 -0
  34. package/lib/commonjs/BottomSheet/controller/index.js.map +1 -0
  35. package/lib/commonjs/BottomSheet/controller/keyboardAnimation.controller.js +88 -0
  36. package/lib/commonjs/BottomSheet/controller/keyboardAnimation.controller.js.map +1 -0
  37. package/lib/commonjs/BottomSheet/controller/scrollContent.controller.js +89 -0
  38. package/lib/commonjs/BottomSheet/controller/scrollContent.controller.js.map +1 -0
  39. package/lib/commonjs/BottomSheet/index.js +130 -0
  40. package/lib/commonjs/BottomSheet/index.js.map +1 -0
  41. package/lib/commonjs/index.js +17 -0
  42. package/lib/commonjs/index.js.map +1 -0
  43. package/lib/commonjs/package.json +1 -0
  44. package/lib/module/BottomSheet/animations/drag.animation.js +68 -0
  45. package/lib/module/BottomSheet/animations/drag.animation.js.map +1 -0
  46. package/lib/module/BottomSheet/components/BottomSheet.js +87 -0
  47. package/lib/module/BottomSheet/components/BottomSheet.js.map +1 -0
  48. package/lib/module/BottomSheet/components/BottomSheetFlatlist.js +32 -0
  49. package/lib/module/BottomSheet/components/BottomSheetFlatlist.js.map +1 -0
  50. package/lib/module/BottomSheet/components/BottomSheetModal.js +30 -0
  51. package/lib/module/BottomSheet/components/BottomSheetModal.js.map +1 -0
  52. package/lib/module/BottomSheet/components/BottomSheetScrollView.js +31 -0
  53. package/lib/module/BottomSheet/components/BottomSheetScrollView.js.map +1 -0
  54. package/lib/module/BottomSheet/config/bottomSheet.constants.js +30 -0
  55. package/lib/module/BottomSheet/config/bottomSheet.constants.js.map +1 -0
  56. package/lib/module/BottomSheet/config/bottomSheet.styles.js +38 -0
  57. package/lib/module/BottomSheet/config/bottomSheet.styles.js.map +1 -0
  58. package/lib/module/BottomSheet/config/bottomSheet.types.js +10 -0
  59. package/lib/module/BottomSheet/config/bottomSheet.types.js.map +1 -0
  60. package/lib/module/BottomSheet/controller/bottomFlatlist.controller.js +64 -0
  61. package/lib/module/BottomSheet/controller/bottomFlatlist.controller.js.map +1 -0
  62. package/lib/module/BottomSheet/controller/bottomScrollView.controller.js +37 -0
  63. package/lib/module/BottomSheet/controller/bottomScrollView.controller.js.map +1 -0
  64. package/lib/module/BottomSheet/controller/bottomSheet.controller.js +212 -0
  65. package/lib/module/BottomSheet/controller/bottomSheet.controller.js.map +1 -0
  66. package/lib/module/BottomSheet/controller/callbacks.controller.js +130 -0
  67. package/lib/module/BottomSheet/controller/callbacks.controller.js.map +1 -0
  68. package/lib/module/BottomSheet/controller/dragAnimation.controller.js +122 -0
  69. package/lib/module/BottomSheet/controller/dragAnimation.controller.js.map +1 -0
  70. package/lib/module/BottomSheet/controller/hooks/useBottomSheetRef.js +56 -0
  71. package/lib/module/BottomSheet/controller/hooks/useBottomSheetRef.js.map +1 -0
  72. package/lib/module/BottomSheet/controller/hooks/useBottomSheetUtils.js +70 -0
  73. package/lib/module/BottomSheet/controller/hooks/useBottomSheetUtils.js.map +1 -0
  74. package/lib/module/BottomSheet/controller/index.js +4 -0
  75. package/lib/module/BottomSheet/controller/index.js.map +1 -0
  76. package/lib/module/BottomSheet/controller/keyboardAnimation.controller.js +84 -0
  77. package/lib/module/BottomSheet/controller/keyboardAnimation.controller.js.map +1 -0
  78. package/lib/module/BottomSheet/controller/scrollContent.controller.js +84 -0
  79. package/lib/module/BottomSheet/controller/scrollContent.controller.js.map +1 -0
  80. package/lib/module/BottomSheet/index.js +112 -0
  81. package/lib/module/BottomSheet/index.js.map +1 -0
  82. package/lib/module/index.js +4 -0
  83. package/lib/module/index.js.map +1 -0
  84. package/lib/module/package.json +1 -0
  85. package/lib/typescript/commonjs/package.json +1 -0
  86. package/lib/typescript/commonjs/src/BottomSheet/animations/drag.animation.d.ts +31 -0
  87. package/lib/typescript/commonjs/src/BottomSheet/animations/drag.animation.d.ts.map +1 -0
  88. package/lib/typescript/commonjs/src/BottomSheet/components/BottomSheet.d.ts +9 -0
  89. package/lib/typescript/commonjs/src/BottomSheet/components/BottomSheet.d.ts.map +1 -0
  90. package/lib/typescript/commonjs/src/BottomSheet/components/BottomSheetFlatlist.d.ts +3 -0
  91. package/lib/typescript/commonjs/src/BottomSheet/components/BottomSheetFlatlist.d.ts.map +1 -0
  92. package/lib/typescript/commonjs/src/BottomSheet/components/BottomSheetModal.d.ts +8 -0
  93. package/lib/typescript/commonjs/src/BottomSheet/components/BottomSheetModal.d.ts.map +1 -0
  94. package/lib/typescript/commonjs/src/BottomSheet/components/BottomSheetScrollView.d.ts +3 -0
  95. package/lib/typescript/commonjs/src/BottomSheet/components/BottomSheetScrollView.d.ts.map +1 -0
  96. package/lib/typescript/commonjs/src/BottomSheet/config/bottomSheet.constants.d.ts +30 -0
  97. package/lib/typescript/commonjs/src/BottomSheet/config/bottomSheet.constants.d.ts.map +1 -0
  98. package/lib/typescript/commonjs/src/BottomSheet/config/bottomSheet.styles.d.ts +37 -0
  99. package/lib/typescript/commonjs/src/BottomSheet/config/bottomSheet.styles.d.ts.map +1 -0
  100. package/lib/typescript/commonjs/src/BottomSheet/config/bottomSheet.types.d.ts +185 -0
  101. package/lib/typescript/commonjs/src/BottomSheet/config/bottomSheet.types.d.ts.map +1 -0
  102. package/lib/typescript/commonjs/src/BottomSheet/controller/bottomFlatlist.controller.d.ts +480 -0
  103. package/lib/typescript/commonjs/src/BottomSheet/controller/bottomFlatlist.controller.d.ts.map +1 -0
  104. package/lib/typescript/commonjs/src/BottomSheet/controller/bottomScrollView.controller.d.ts +338 -0
  105. package/lib/typescript/commonjs/src/BottomSheet/controller/bottomScrollView.controller.d.ts.map +1 -0
  106. package/lib/typescript/commonjs/src/BottomSheet/controller/bottomSheet.controller.d.ts +51 -0
  107. package/lib/typescript/commonjs/src/BottomSheet/controller/bottomSheet.controller.d.ts.map +1 -0
  108. package/lib/typescript/commonjs/src/BottomSheet/controller/callbacks.controller.d.ts +36 -0
  109. package/lib/typescript/commonjs/src/BottomSheet/controller/callbacks.controller.d.ts.map +1 -0
  110. package/lib/typescript/commonjs/src/BottomSheet/controller/dragAnimation.controller.d.ts +27 -0
  111. package/lib/typescript/commonjs/src/BottomSheet/controller/dragAnimation.controller.d.ts.map +1 -0
  112. package/lib/typescript/commonjs/src/BottomSheet/controller/hooks/useBottomSheetRef.d.ts +12 -0
  113. package/lib/typescript/commonjs/src/BottomSheet/controller/hooks/useBottomSheetRef.d.ts.map +1 -0
  114. package/lib/typescript/commonjs/src/BottomSheet/controller/hooks/useBottomSheetUtils.d.ts +40 -0
  115. package/lib/typescript/commonjs/src/BottomSheet/controller/hooks/useBottomSheetUtils.d.ts.map +1 -0
  116. package/lib/typescript/commonjs/src/BottomSheet/controller/index.d.ts +2 -0
  117. package/lib/typescript/commonjs/src/BottomSheet/controller/index.d.ts.map +1 -0
  118. package/lib/typescript/commonjs/src/BottomSheet/controller/keyboardAnimation.controller.d.ts +15 -0
  119. package/lib/typescript/commonjs/src/BottomSheet/controller/keyboardAnimation.controller.d.ts.map +1 -0
  120. package/lib/typescript/commonjs/src/BottomSheet/controller/scrollContent.controller.d.ts +20 -0
  121. package/lib/typescript/commonjs/src/BottomSheet/controller/scrollContent.controller.d.ts.map +1 -0
  122. package/lib/typescript/commonjs/src/BottomSheet/index.d.ts +23 -0
  123. package/lib/typescript/commonjs/src/BottomSheet/index.d.ts.map +1 -0
  124. package/lib/typescript/commonjs/src/index.d.ts +2 -0
  125. package/lib/typescript/commonjs/src/index.d.ts.map +1 -0
  126. package/lib/typescript/module/package.json +1 -0
  127. package/lib/typescript/module/src/BottomSheet/animations/drag.animation.d.ts +31 -0
  128. package/lib/typescript/module/src/BottomSheet/animations/drag.animation.d.ts.map +1 -0
  129. package/lib/typescript/module/src/BottomSheet/components/BottomSheet.d.ts +9 -0
  130. package/lib/typescript/module/src/BottomSheet/components/BottomSheet.d.ts.map +1 -0
  131. package/lib/typescript/module/src/BottomSheet/components/BottomSheetFlatlist.d.ts +3 -0
  132. package/lib/typescript/module/src/BottomSheet/components/BottomSheetFlatlist.d.ts.map +1 -0
  133. package/lib/typescript/module/src/BottomSheet/components/BottomSheetModal.d.ts +8 -0
  134. package/lib/typescript/module/src/BottomSheet/components/BottomSheetModal.d.ts.map +1 -0
  135. package/lib/typescript/module/src/BottomSheet/components/BottomSheetScrollView.d.ts +3 -0
  136. package/lib/typescript/module/src/BottomSheet/components/BottomSheetScrollView.d.ts.map +1 -0
  137. package/lib/typescript/module/src/BottomSheet/config/bottomSheet.constants.d.ts +30 -0
  138. package/lib/typescript/module/src/BottomSheet/config/bottomSheet.constants.d.ts.map +1 -0
  139. package/lib/typescript/module/src/BottomSheet/config/bottomSheet.styles.d.ts +37 -0
  140. package/lib/typescript/module/src/BottomSheet/config/bottomSheet.styles.d.ts.map +1 -0
  141. package/lib/typescript/module/src/BottomSheet/config/bottomSheet.types.d.ts +185 -0
  142. package/lib/typescript/module/src/BottomSheet/config/bottomSheet.types.d.ts.map +1 -0
  143. package/lib/typescript/module/src/BottomSheet/controller/bottomFlatlist.controller.d.ts +480 -0
  144. package/lib/typescript/module/src/BottomSheet/controller/bottomFlatlist.controller.d.ts.map +1 -0
  145. package/lib/typescript/module/src/BottomSheet/controller/bottomScrollView.controller.d.ts +338 -0
  146. package/lib/typescript/module/src/BottomSheet/controller/bottomScrollView.controller.d.ts.map +1 -0
  147. package/lib/typescript/module/src/BottomSheet/controller/bottomSheet.controller.d.ts +51 -0
  148. package/lib/typescript/module/src/BottomSheet/controller/bottomSheet.controller.d.ts.map +1 -0
  149. package/lib/typescript/module/src/BottomSheet/controller/callbacks.controller.d.ts +36 -0
  150. package/lib/typescript/module/src/BottomSheet/controller/callbacks.controller.d.ts.map +1 -0
  151. package/lib/typescript/module/src/BottomSheet/controller/dragAnimation.controller.d.ts +27 -0
  152. package/lib/typescript/module/src/BottomSheet/controller/dragAnimation.controller.d.ts.map +1 -0
  153. package/lib/typescript/module/src/BottomSheet/controller/hooks/useBottomSheetRef.d.ts +12 -0
  154. package/lib/typescript/module/src/BottomSheet/controller/hooks/useBottomSheetRef.d.ts.map +1 -0
  155. package/lib/typescript/module/src/BottomSheet/controller/hooks/useBottomSheetUtils.d.ts +40 -0
  156. package/lib/typescript/module/src/BottomSheet/controller/hooks/useBottomSheetUtils.d.ts.map +1 -0
  157. package/lib/typescript/module/src/BottomSheet/controller/index.d.ts +2 -0
  158. package/lib/typescript/module/src/BottomSheet/controller/index.d.ts.map +1 -0
  159. package/lib/typescript/module/src/BottomSheet/controller/keyboardAnimation.controller.d.ts +15 -0
  160. package/lib/typescript/module/src/BottomSheet/controller/keyboardAnimation.controller.d.ts.map +1 -0
  161. package/lib/typescript/module/src/BottomSheet/controller/scrollContent.controller.d.ts +20 -0
  162. package/lib/typescript/module/src/BottomSheet/controller/scrollContent.controller.d.ts.map +1 -0
  163. package/lib/typescript/module/src/BottomSheet/index.d.ts +23 -0
  164. package/lib/typescript/module/src/BottomSheet/index.d.ts.map +1 -0
  165. package/lib/typescript/module/src/index.d.ts +2 -0
  166. package/lib/typescript/module/src/index.d.ts.map +1 -0
  167. package/package.json +203 -0
  168. package/src/BottomSheet/animations/drag.animation.ts +86 -0
  169. package/src/BottomSheet/components/BottomSheet.tsx +157 -0
  170. package/src/BottomSheet/components/BottomSheetFlatlist.tsx +46 -0
  171. package/src/BottomSheet/components/BottomSheetModal.tsx +47 -0
  172. package/src/BottomSheet/components/BottomSheetScrollView.tsx +46 -0
  173. package/src/BottomSheet/config/bottomSheet.constants.ts +31 -0
  174. package/src/BottomSheet/config/bottomSheet.styles.ts +42 -0
  175. package/src/BottomSheet/config/bottomSheet.types.ts +246 -0
  176. package/src/BottomSheet/controller/bottomFlatlist.controller.ts +87 -0
  177. package/src/BottomSheet/controller/bottomScrollView.controller.ts +43 -0
  178. package/src/BottomSheet/controller/bottomSheet.controller.ts +238 -0
  179. package/src/BottomSheet/controller/callbacks.controller.ts +222 -0
  180. package/src/BottomSheet/controller/dragAnimation.controller.ts +211 -0
  181. package/src/BottomSheet/controller/hooks/useBottomSheetRef.ts +73 -0
  182. package/src/BottomSheet/controller/hooks/useBottomSheetUtils.ts +75 -0
  183. package/src/BottomSheet/controller/index.ts +1 -0
  184. package/src/BottomSheet/controller/keyboardAnimation.controller.ts +148 -0
  185. package/src/BottomSheet/controller/scrollContent.controller.ts +120 -0
  186. package/src/BottomSheet/index.tsx +139 -0
  187. 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":"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","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,4 @@
1
+ "use strict";
2
+
3
+ export * from "./bottomSheet.controller.js";
4
+ //# sourceMappingURL=index.js.map
@@ -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":[]}