@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,216 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.bottomSheetController = bottomSheetController;
|
|
7
|
+
var _dragAnimation = require("../animations/drag.animation.js");
|
|
8
|
+
var _reactNativeReanimated = require("react-native-reanimated");
|
|
9
|
+
var _react = require("react");
|
|
10
|
+
var _bottomSheetTypes = require("../config/bottomSheet.types.js");
|
|
11
|
+
var _keyboardAnimationController = require("./keyboardAnimation.controller.js");
|
|
12
|
+
var _dragAnimationController = require("./dragAnimation.controller.js");
|
|
13
|
+
var _callbacksController = require("./callbacks.controller.js");
|
|
14
|
+
var _scrollContentController = require("./scrollContent.controller.js");
|
|
15
|
+
var _reactNativeEssentials = require("@shaquillehinds/react-native-essentials");
|
|
16
|
+
var _useBottomSheetUtils = require("./hooks/useBottomSheetUtils.js");
|
|
17
|
+
function bottomSheetController(props) {
|
|
18
|
+
const utils = (0, _useBottomSheetUtils.useBottomSheetUtils)();
|
|
19
|
+
const modalState = (0, _react.useRef)(_bottomSheetTypes.ModalState.CLOSED);
|
|
20
|
+
const fullyOpenYPosition = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
21
|
+
const lowestSnapPointPosition = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
22
|
+
const closedYPosition = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
23
|
+
const currentSnapPoint = (0, _reactNativeReanimated.useSharedValue)({
|
|
24
|
+
offset: 0
|
|
25
|
+
});
|
|
26
|
+
const snapPoints = (0, _reactNativeReanimated.useSharedValue)((props.snapPoints || []).map(p => utils.percentageToSnapPoint(p)));
|
|
27
|
+
const translationX = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
28
|
+
const translationY = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
29
|
+
const prevTranslationY = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
30
|
+
const keyboardHeight = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
31
|
+
const backdropOpacity = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
32
|
+
const contentOpacity = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
33
|
+
const modalContentTranslateY = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
34
|
+
const scrollY = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
35
|
+
const scrollActive = (0, _reactNativeReanimated.useSharedValue)(false);
|
|
36
|
+
const inverted = (0, _reactNativeReanimated.useSharedValue)(false);
|
|
37
|
+
const maxScrollOffset = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
38
|
+
const scrollableComponentRef = (0, _react.useRef)(null);
|
|
39
|
+
const disableLayoutAnimation = (0, _react.useRef)(false);
|
|
40
|
+
const setDisableLayoutAnimation = (0, _react.useCallback)(bool => {
|
|
41
|
+
disableLayoutAnimation.current = bool;
|
|
42
|
+
}, []);
|
|
43
|
+
const backdropOpacityStyle = (0, _reactNativeReanimated.useAnimatedStyle)(() => ({
|
|
44
|
+
opacity: backdropOpacity.value
|
|
45
|
+
}));
|
|
46
|
+
const contentOpacityStyle = (0, _reactNativeReanimated.useAnimatedStyle)(() => ({
|
|
47
|
+
opacity: contentOpacity.value
|
|
48
|
+
}));
|
|
49
|
+
const modalContentAnimatedStyle = (0, _reactNativeReanimated.useAnimatedStyle)(() => ({
|
|
50
|
+
transform: [{
|
|
51
|
+
translateY: modalContentTranslateY.value
|
|
52
|
+
}]
|
|
53
|
+
}));
|
|
54
|
+
const {
|
|
55
|
+
dragAnimatedStyle,
|
|
56
|
+
onDrag,
|
|
57
|
+
onDragStart
|
|
58
|
+
} = (0, _dragAnimation.useDragAnimation)({
|
|
59
|
+
translationX,
|
|
60
|
+
translationY,
|
|
61
|
+
prevTranslationY
|
|
62
|
+
});
|
|
63
|
+
const {
|
|
64
|
+
closeModal,
|
|
65
|
+
animateModalOpen,
|
|
66
|
+
animateModalClose,
|
|
67
|
+
animateToPercentage,
|
|
68
|
+
animateToSnapPointIndex,
|
|
69
|
+
onModalBackdropPress,
|
|
70
|
+
onModalContentLayout,
|
|
71
|
+
onPlatformViewLayout,
|
|
72
|
+
onRequestClose
|
|
73
|
+
} = (0, _callbacksController.callbackController)({
|
|
74
|
+
utils,
|
|
75
|
+
unMounter: props._unMounter,
|
|
76
|
+
snapPoints,
|
|
77
|
+
modalState,
|
|
78
|
+
translationX,
|
|
79
|
+
translationY,
|
|
80
|
+
onBackDropPress: props.onBackDropPress,
|
|
81
|
+
backdropOpacity,
|
|
82
|
+
closedYPosition,
|
|
83
|
+
currentSnapPoint,
|
|
84
|
+
prevTranslationY,
|
|
85
|
+
fullyOpenYPosition,
|
|
86
|
+
disableLayoutAnimation,
|
|
87
|
+
setDisableLayoutAnimation,
|
|
88
|
+
onSnapPointReach: props.onSnapPointReach,
|
|
89
|
+
disableCloseOnBackdropPress: props.disableCloseOnBackdropPress,
|
|
90
|
+
setShowModal: props.setShowModal
|
|
91
|
+
});
|
|
92
|
+
const [modalDimensionsStyle, setModalDimensionsStyle] = (0, _react.useState)({
|
|
93
|
+
width: utils.screenWidth,
|
|
94
|
+
height: utils.modalHeight,
|
|
95
|
+
bottom: utils.modalBottomOffset
|
|
96
|
+
});
|
|
97
|
+
(0, _react.useEffect)(() => {
|
|
98
|
+
const percentToSnapPoint = p => {
|
|
99
|
+
const percentage = (0, _reactNativeEssentials.strToNumPercentage)(p);
|
|
100
|
+
return {
|
|
101
|
+
percentage: percentage / 100,
|
|
102
|
+
offset: -(utils.relativeY(percentage) + utils.extraHeight)
|
|
103
|
+
};
|
|
104
|
+
};
|
|
105
|
+
const newSnapPoints = (props.snapPoints || []).map(p => percentToSnapPoint(p));
|
|
106
|
+
snapPoints.value = newSnapPoints;
|
|
107
|
+
setModalDimensionsStyle({
|
|
108
|
+
height: utils.modalHeight,
|
|
109
|
+
bottom: -utils.modalHeight * 2,
|
|
110
|
+
width: utils.relativeX(100)
|
|
111
|
+
});
|
|
112
|
+
if (newSnapPoints.length) {
|
|
113
|
+
const {
|
|
114
|
+
firstSnapPoint,
|
|
115
|
+
maxSnapPoint,
|
|
116
|
+
minSnapPoint
|
|
117
|
+
} = utils.getMaxMinSnapPoints(newSnapPoints);
|
|
118
|
+
currentSnapPoint.value = firstSnapPoint;
|
|
119
|
+
fullyOpenYPosition.value = maxSnapPoint;
|
|
120
|
+
lowestSnapPointPosition.value = minSnapPoint;
|
|
121
|
+
setTimeout(() => {
|
|
122
|
+
if (!modalState.current || modalState.current === _bottomSheetTypes.ModalState.CLOSING) return;
|
|
123
|
+
animateToSnapPointIndex(0);
|
|
124
|
+
}, 500);
|
|
125
|
+
}
|
|
126
|
+
}, [utils.orientation]);
|
|
127
|
+
const {
|
|
128
|
+
onDragEndGesture,
|
|
129
|
+
onDragGesture,
|
|
130
|
+
onDragStartGesture
|
|
131
|
+
} = (0, _dragAnimationController.dragAnimationController)({
|
|
132
|
+
onDrag,
|
|
133
|
+
onDragStart,
|
|
134
|
+
closeModal,
|
|
135
|
+
snapPoints,
|
|
136
|
+
currentSnapPoint,
|
|
137
|
+
keyboardHeight,
|
|
138
|
+
translationY,
|
|
139
|
+
prevTranslationY,
|
|
140
|
+
closedYPosition,
|
|
141
|
+
fullyOpenYPosition,
|
|
142
|
+
backdropOpacity,
|
|
143
|
+
keepMounted: props.keepMounted,
|
|
144
|
+
onSnapPointReach: props.onSnapPointReach,
|
|
145
|
+
lowestSnapPointPosition,
|
|
146
|
+
allowDragWhileKeyboardVisible: props.allowDragWhileKeyboardVisible
|
|
147
|
+
});
|
|
148
|
+
(0, _keyboardAnimationController.keyboardAnimationController)({
|
|
149
|
+
keyboardHeight,
|
|
150
|
+
translationY,
|
|
151
|
+
screenHeight: utils.screenHeight,
|
|
152
|
+
prevTranslationY,
|
|
153
|
+
modalContentTranslateY,
|
|
154
|
+
setDisableLayoutAnimation,
|
|
155
|
+
avoidKeyboard: props.avoidKeyboard,
|
|
156
|
+
inputsForKeyboardToAvoid: props.inputsForKeyboardToAvoid
|
|
157
|
+
});
|
|
158
|
+
const {
|
|
159
|
+
onBeginScroll,
|
|
160
|
+
onUpdateScroll,
|
|
161
|
+
onEndScroll
|
|
162
|
+
} = (0, _scrollContentController.scrollContentController)({
|
|
163
|
+
scrollableComponentRef,
|
|
164
|
+
onDragStartGesture,
|
|
165
|
+
onDragGesture,
|
|
166
|
+
onDragEndGesture,
|
|
167
|
+
maxScrollOffset,
|
|
168
|
+
scrollActive,
|
|
169
|
+
inverted,
|
|
170
|
+
scrollY
|
|
171
|
+
});
|
|
172
|
+
(0, _react.useEffect)(() => {
|
|
173
|
+
const animateContentDelay = () => {
|
|
174
|
+
if (props.showContentDelay) {
|
|
175
|
+
setTimeout(() => {
|
|
176
|
+
contentOpacity.value = (0, _reactNativeReanimated.withTiming)(1, {
|
|
177
|
+
duration: 500
|
|
178
|
+
});
|
|
179
|
+
}, props.showContentDelay.timeInMilliSecs);
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
if (props.showModal === undefined) animateContentDelay();else if (!props.showModal && !disableLayoutAnimation.current) {
|
|
183
|
+
setDisableLayoutAnimation(true);
|
|
184
|
+
(0, _reactNativeReanimated.runOnUI)(animateModalClose)();
|
|
185
|
+
} else if (props.showModal) animateContentDelay();
|
|
186
|
+
}, [props.showModal]);
|
|
187
|
+
return {
|
|
188
|
+
modalState,
|
|
189
|
+
scrollY,
|
|
190
|
+
inverted,
|
|
191
|
+
onEndScroll,
|
|
192
|
+
onBeginScroll,
|
|
193
|
+
onUpdateScroll,
|
|
194
|
+
maxScrollOffset,
|
|
195
|
+
scrollableComponentRef,
|
|
196
|
+
disableLayoutAnimation,
|
|
197
|
+
animateModalOpen,
|
|
198
|
+
animateModalClose,
|
|
199
|
+
animateToPercentage,
|
|
200
|
+
animateToSnapPointIndex,
|
|
201
|
+
onDragGesture,
|
|
202
|
+
onDragStartGesture,
|
|
203
|
+
onDragEndGesture,
|
|
204
|
+
onPlatformViewLayout,
|
|
205
|
+
onModalContentLayout,
|
|
206
|
+
onRequestClose,
|
|
207
|
+
onModalBackdropPress,
|
|
208
|
+
dragAnimatedStyle,
|
|
209
|
+
modalContentAnimatedStyle,
|
|
210
|
+
backdropOpacityStyle,
|
|
211
|
+
contentOpacityStyle,
|
|
212
|
+
modalDimensionsStyle,
|
|
213
|
+
screenHeight: utils.screenHeight
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
//# sourceMappingURL=bottomSheet.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_dragAnimation","require","_reactNativeReanimated","_react","_bottomSheetTypes","_keyboardAnimationController","_dragAnimationController","_callbacksController","_scrollContentController","_reactNativeEssentials","_useBottomSheetUtils","bottomSheetController","props","utils","useBottomSheetUtils","modalState","useRef","ModalState","CLOSED","fullyOpenYPosition","useSharedValue","lowestSnapPointPosition","closedYPosition","currentSnapPoint","offset","snapPoints","map","p","percentageToSnapPoint","translationX","translationY","prevTranslationY","keyboardHeight","backdropOpacity","contentOpacity","modalContentTranslateY","scrollY","scrollActive","inverted","maxScrollOffset","scrollableComponentRef","disableLayoutAnimation","setDisableLayoutAnimation","useCallback","bool","current","backdropOpacityStyle","useAnimatedStyle","opacity","value","contentOpacityStyle","modalContentAnimatedStyle","transform","translateY","dragAnimatedStyle","onDrag","onDragStart","useDragAnimation","closeModal","animateModalOpen","animateModalClose","animateToPercentage","animateToSnapPointIndex","onModalBackdropPress","onModalContentLayout","onPlatformViewLayout","onRequestClose","callbackController","unMounter","_unMounter","onBackDropPress","onSnapPointReach","disableCloseOnBackdropPress","setShowModal","modalDimensionsStyle","setModalDimensionsStyle","useState","width","screenWidth","height","modalHeight","bottom","modalBottomOffset","useEffect","percentToSnapPoint","percentage","strToNumPercentage","relativeY","extraHeight","newSnapPoints","relativeX","length","firstSnapPoint","maxSnapPoint","minSnapPoint","getMaxMinSnapPoints","setTimeout","CLOSING","orientation","onDragEndGesture","onDragGesture","onDragStartGesture","dragAnimationController","keepMounted","allowDragWhileKeyboardVisible","keyboardAnimationController","screenHeight","avoidKeyboard","inputsForKeyboardToAvoid","onBeginScroll","onUpdateScroll","onEndScroll","scrollContentController","animateContentDelay","showContentDelay","withTiming","duration","timeInMilliSecs","showModal","undefined","runOnUI"],"sourceRoot":"../../../../src","sources":["BottomSheet/controller/bottomSheet.controller.ts"],"mappings":";;;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AACA,IAAAC,sBAAA,GAAAD,OAAA;AAMA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,iBAAA,GAAAH,OAAA;AAMA,IAAAI,4BAAA,GAAAJ,OAAA;AACA,IAAAK,wBAAA,GAAAL,OAAA;AACA,IAAAM,oBAAA,GAAAN,OAAA;AACA,IAAAO,wBAAA,GAAAP,OAAA;AACA,IAAAQ,sBAAA,GAAAR,OAAA;AACA,IAAAS,oBAAA,GAAAT,OAAA;AAEO,SAASU,qBAAqBA,CAACC,KAA4B,EAAE;EAClE,MAAMC,KAAK,GAAG,IAAAC,wCAAmB,EAAC,CAAC;EAEnC,MAAMC,UAAU,GAAG,IAAAC,aAAM,EAACC,4BAAU,CAACC,MAAM,CAAC;EAC5C,MAAMC,kBAAkB,GAAG,IAAAC,qCAAc,EAAC,CAAC,CAAC;EAC5C,MAAMC,uBAAuB,GAAG,IAAAD,qCAAc,EAAC,CAAC,CAAC;EACjD,MAAME,eAAe,GAAG,IAAAF,qCAAc,EAAC,CAAC,CAAC;EAEzC,MAAMG,gBAAgB,GAAG,IAAAH,qCAAc,EAAY;IACjDI,MAAM,EAAE;EACV,CAAC,CAAC;EACF,MAAMC,UAAU,GAAG,IAAAL,qCAAc,EAC/B,CAACR,KAAK,CAACa,UAAU,IAAI,EAAE,EAAEC,GAAG,CAAEC,CAAC,IAAKd,KAAK,CAACe,qBAAqB,CAACD,CAAC,CAAC,CACpE,CAAC;EAED,MAAME,YAAY,GAAG,IAAAT,qCAAc,EAAC,CAAC,CAAC;EACtC,MAAMU,YAAY,GAAG,IAAAV,qCAAc,EAAC,CAAC,CAAC;EACtC,MAAMW,gBAAgB,GAAG,IAAAX,qCAAc,EAAC,CAAC,CAAC;EAE1C,MAAMY,cAAc,GAAG,IAAAZ,qCAAc,EAAC,CAAC,CAAC;EAExC,MAAMa,eAAe,GAAG,IAAAb,qCAAc,EAAC,CAAC,CAAC;EACzC,MAAMc,cAAc,GAAG,IAAAd,qCAAc,EAAC,CAAC,CAAC;EACxC,MAAMe,sBAAsB,GAAG,IAAAf,qCAAc,EAAC,CAAC,CAAC;EAEhD,MAAMgB,OAAO,GAAG,IAAAhB,qCAAc,EAAC,CAAC,CAAC;EACjC,MAAMiB,YAAY,GAAG,IAAAjB,qCAAc,EAAC,KAAK,CAAC;EAC1C,MAAMkB,QAAQ,GAAG,IAAAlB,qCAAc,EAAC,KAAK,CAAC;EACtC,MAAMmB,eAAe,GAAG,IAAAnB,qCAAc,EAAC,CAAC,CAAC;EAEzC,MAAMoB,sBAAsB,GAAG,IAAAxB,aAAM,EAA0B,IAAI,CAAC;EAEpE,MAAMyB,sBAAsB,GAAG,IAAAzB,aAAM,EAAC,KAAK,CAAC;EAC5C,MAAM0B,yBAAyB,GAAG,IAAAC,kBAAW,EAAEC,IAAa,IAAK;IAC/DH,sBAAsB,CAACI,OAAO,GAAGD,IAAI;EACvC,CAAC,EAAE,EAAE,CAAC;EAEN,MAAME,oBAAoB,GAAG,IAAAC,uCAAgB,EAAC,OAAO;IACnDC,OAAO,EAAEf,eAAe,CAACgB;EAC3B,CAAC,CAAC,CAAC;EACH,MAAMC,mBAAmB,GAAG,IAAAH,uCAAgB,EAAC,OAAO;IAClDC,OAAO,EAAEd,cAAc,CAACe;EAC1B,CAAC,CAAC,CAAC;EACH,MAAME,yBAAyB,GAAG,IAAAJ,uCAAgB,EAAC,OAAO;IACxDK,SAAS,EAAE,CAAC;MAAEC,UAAU,EAAElB,sBAAsB,CAACc;IAAM,CAAC;EAC1D,CAAC,CAAC,CAAC;EACH,MAAM;IAAEK,iBAAiB;IAAEC,MAAM;IAAEC;EAAY,CAAC,GAAG,IAAAC,+BAAgB,EAAC;IAClE5B,YAAY;IACZC,YAAY;IACZC;EACF,CAAC,CAAC;EAEF,MAAM;IACJ2B,UAAU;IACVC,gBAAgB;IAChBC,iBAAiB;IACjBC,mBAAmB;IACnBC,uBAAuB;IACvBC,oBAAoB;IACpBC,oBAAoB;IACpBC,oBAAoB;IACpBC;EACF,CAAC,GAAG,IAAAC,uCAAkB,EAAC;IACrBtD,KAAK;IACLuD,SAAS,EAAExD,KAAK,CAACyD,UAAU;IAC3B5C,UAAU;IACVV,UAAU;IACVc,YAAY;IACZC,YAAY;IACZwC,eAAe,EAAE1D,KAAK,CAAC0D,eAAe;IACtCrC,eAAe;IACfX,eAAe;IACfC,gBAAgB;IAChBQ,gBAAgB;IAChBZ,kBAAkB;IAClBsB,sBAAsB;IACtBC,yBAAyB;IACzB6B,gBAAgB,EAAE3D,KAAK,CAAC2D,gBAAgB;IACxCC,2BAA2B,EAAE5D,KAAK,CAAC4D,2BAA2B;IAC9DC,YAAY,EAAE7D,KAAK,CAAC6D;EACtB,CAAC,CAAC;EAEF,MAAM,CAACC,oBAAoB,EAAEC,uBAAuB,CAAC,GAAG,IAAAC,eAAQ,EAAC;IAC/DC,KAAK,EAAEhE,KAAK,CAACiE,WAAW;IACxBC,MAAM,EAAElE,KAAK,CAACmE,WAAW;IACzBC,MAAM,EAAEpE,KAAK,CAACqE;EAChB,CAAC,CAAC;EAEF,IAAAC,gBAAS,EAAC,MAAM;IACd,MAAMC,kBAAkB,GAAIzD,CAAkB,IAAK;MACjD,MAAM0D,UAAU,GAAG,IAAAC,yCAAkB,EAAC3D,CAAC,CAAC;MACxC,OAAO;QACL0D,UAAU,EAAEA,UAAU,GAAG,GAAG;QAC5B7D,MAAM,EAAE,EAAEX,KAAK,CAAC0E,SAAS,CAACF,UAAU,CAAC,GAAGxE,KAAK,CAAC2E,WAAW;MAC3D,CAAC;IACH,CAAC;IACD,MAAMC,aAAa,GAAG,CAAC7E,KAAK,CAACa,UAAU,IAAI,EAAE,EAAEC,GAAG,CAAEC,CAAC,IACnDyD,kBAAkB,CAACzD,CAAC,CACtB,CAAC;IACDF,UAAU,CAACwB,KAAK,GAAGwC,aAAa;IAChCd,uBAAuB,CAAC;MACtBI,MAAM,EAAElE,KAAK,CAACmE,WAAW;MACzBC,MAAM,EAAE,CAACpE,KAAK,CAACmE,WAAW,GAAG,CAAC;MAC9BH,KAAK,EAAEhE,KAAK,CAAC6E,SAAS,CAAC,GAAG;IAC5B,CAAC,CAAC;IACF,IAAID,aAAa,CAACE,MAAM,EAAE;MACxB,MAAM;QAAEC,cAAc;QAAEC,YAAY;QAAEC;MAAa,CAAC,GAClDjF,KAAK,CAACkF,mBAAmB,CAACN,aAAa,CAAC;MAC1ClE,gBAAgB,CAAC0B,KAAK,GAAG2C,cAAc;MACvCzE,kBAAkB,CAAC8B,KAAK,GAAG4C,YAAY;MACvCxE,uBAAuB,CAAC4B,KAAK,GAAG6C,YAAY;MAC5CE,UAAU,CAAC,MAAM;QACf,IAAI,CAACjF,UAAU,CAAC8B,OAAO,IAAI9B,UAAU,CAAC8B,OAAO,KAAK5B,4BAAU,CAACgF,OAAO,EAClE;QACFnC,uBAAuB,CAAC,CAAC,CAAC;MAC5B,CAAC,EAAE,GAAG,CAAC;IACT;EACF,CAAC,EAAE,CAACjD,KAAK,CAACqF,WAAW,CAAC,CAAC;EAEvB,MAAM;IAAEC,gBAAgB;IAAEC,aAAa;IAAEC;EAAmB,CAAC,GAC3D,IAAAC,gDAAuB,EAAC;IACtB/C,MAAM;IACNC,WAAW;IACXE,UAAU;IACVjC,UAAU;IACVF,gBAAgB;IAChBS,cAAc;IACdF,YAAY;IACZC,gBAAgB;IAChBT,eAAe;IACfH,kBAAkB;IAClBc,eAAe;IACfsE,WAAW,EAAE3F,KAAK,CAAC2F,WAAW;IAC9BhC,gBAAgB,EAAE3D,KAAK,CAAC2D,gBAAgB;IACxClD,uBAAuB;IACvBmF,6BAA6B,EAAE5F,KAAK,CAAC4F;EACvC,CAAC,CAAC;EAEJ,IAAAC,wDAA2B,EAAC;IAC1BzE,cAAc;IACdF,YAAY;IACZ4E,YAAY,EAAE7F,KAAK,CAAC6F,YAAY;IAChC3E,gBAAgB;IAChBI,sBAAsB;IACtBO,yBAAyB;IACzBiE,aAAa,EAAE/F,KAAK,CAAC+F,aAAa;IAClCC,wBAAwB,EAAEhG,KAAK,CAACgG;EAClC,CAAC,CAAC;EAEF,MAAM;IAAEC,aAAa;IAAEC,cAAc;IAAEC;EAAY,CAAC,GAClD,IAAAC,gDAAuB,EAAC;IACtBxE,sBAAsB;IACtB6D,kBAAkB;IAClBD,aAAa;IACbD,gBAAgB;IAChB5D,eAAe;IACfF,YAAY;IACZC,QAAQ;IACRF;EACF,CAAC,CAAC;EAEJ,IAAA+C,gBAAS,EAAC,MAAM;IACd,MAAM8B,mBAAmB,GAAGA,CAAA,KAAM;MAChC,IAAIrG,KAAK,CAACsG,gBAAgB,EAAE;QAC1BlB,UAAU,CAAC,MAAM;UACf9D,cAAc,CAACe,KAAK,GAAG,IAAAkE,iCAAU,EAAC,CAAC,EAAE;YAAEC,QAAQ,EAAE;UAAI,CAAC,CAAC;QACzD,CAAC,EAAExG,KAAK,CAACsG,gBAAgB,CAACG,eAAe,CAAC;MAC5C;IACF,CAAC;IACD,IAAIzG,KAAK,CAAC0G,SAAS,KAAKC,SAAS,EAAEN,mBAAmB,CAAC,CAAC,CAAC,KACpD,IAAI,CAACrG,KAAK,CAAC0G,SAAS,IAAI,CAAC7E,sBAAsB,CAACI,OAAO,EAAE;MAC5DH,yBAAyB,CAAC,IAAI,CAAC;MAC/B,IAAA8E,8BAAO,EAAC5D,iBAAiB,CAAC,CAAC,CAAC;IAC9B,CAAC,MAAM,IAAIhD,KAAK,CAAC0G,SAAS,EAAEL,mBAAmB,CAAC,CAAC;EACnD,CAAC,EAAE,CAACrG,KAAK,CAAC0G,SAAS,CAAC,CAAC;EAErB,OAAO;IACLvG,UAAU;IAEVqB,OAAO;IACPE,QAAQ;IACRyE,WAAW;IACXF,aAAa;IACbC,cAAc;IACdvE,eAAe;IACfC,sBAAsB;IAEtBC,sBAAsB;IAEtBkB,gBAAgB;IAChBC,iBAAiB;IACjBC,mBAAmB;IACnBC,uBAAuB;IAEvBsC,aAAa;IACbC,kBAAkB;IAClBF,gBAAgB;IAEhBlC,oBAAoB;IACpBD,oBAAoB;IAEpBE,cAAc;IACdH,oBAAoB;IAEpBT,iBAAiB;IACjBH,yBAAyB;IACzBL,oBAAoB;IACpBI,mBAAmB;IACnBwB,oBAAoB;IAEpBgC,YAAY,EAAE7F,KAAK,CAAC6F;EACtB,CAAC;AACH","ignoreList":[]}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.callbackController = callbackController;
|
|
7
|
+
var _reactNativeReanimated = require("react-native-reanimated");
|
|
8
|
+
var _react = require("react");
|
|
9
|
+
var _bottomSheetConstants = require("../config/bottomSheet.constants.js");
|
|
10
|
+
var _bottomSheetTypes = require("../config/bottomSheet.types.js");
|
|
11
|
+
//$lf-ignore
|
|
12
|
+
|
|
13
|
+
function callbackController(props) {
|
|
14
|
+
const {
|
|
15
|
+
unMounter,
|
|
16
|
+
snapPoints,
|
|
17
|
+
modalState,
|
|
18
|
+
backdropOpacity,
|
|
19
|
+
translationX,
|
|
20
|
+
translationY,
|
|
21
|
+
onBackDropPress,
|
|
22
|
+
closedYPosition,
|
|
23
|
+
currentSnapPoint,
|
|
24
|
+
prevTranslationY,
|
|
25
|
+
onSnapPointReach,
|
|
26
|
+
fullyOpenYPosition,
|
|
27
|
+
disableLayoutAnimation,
|
|
28
|
+
disableCloseOnBackdropPress
|
|
29
|
+
} = props;
|
|
30
|
+
const {
|
|
31
|
+
orientation,
|
|
32
|
+
getMaxMinSnapPointsWorklet,
|
|
33
|
+
percentageToSnapPointWorklet
|
|
34
|
+
} = props.utils;
|
|
35
|
+
const setModalState = (0, _react.useCallback)(state => {
|
|
36
|
+
if (modalState.current === _bottomSheetTypes.ModalState.CLOSING && state !== _bottomSheetTypes.ModalState.CLOSED) return;
|
|
37
|
+
modalState.current = state;
|
|
38
|
+
}, []);
|
|
39
|
+
const animateModalOpen = (0, _react.useCallback)((height, modalHeight) => {
|
|
40
|
+
'worklet';
|
|
41
|
+
|
|
42
|
+
if (height > modalHeight) height = modalHeight;
|
|
43
|
+
const translateYHeight = -height;
|
|
44
|
+
translationY.value = (0, _reactNativeReanimated.withTiming)(translateYHeight, _bottomSheetConstants.animateOpenTimingConfig, () => {
|
|
45
|
+
prevTranslationY.value = translateYHeight;
|
|
46
|
+
(0, _reactNativeReanimated.runOnJS)(setModalState)(_bottomSheetTypes.ModalState.OPEN);
|
|
47
|
+
});
|
|
48
|
+
if (snapPoints.value.length) {
|
|
49
|
+
let maxOpenPosition = fullyOpenYPosition.value;
|
|
50
|
+
if (!maxOpenPosition) maxOpenPosition = getMaxMinSnapPointsWorklet(snapPoints).maxSnapPoint;
|
|
51
|
+
backdropOpacity.value = (0, _reactNativeReanimated.withTiming)(translateYHeight / maxOpenPosition, _bottomSheetConstants.animateOpenTimingConfig);
|
|
52
|
+
} else backdropOpacity.value = (0, _reactNativeReanimated.withTiming)(1, _bottomSheetConstants.animateOpenTimingConfig);
|
|
53
|
+
}, [orientation]);
|
|
54
|
+
const animateModalClose = (0, _react.useCallback)(prop => {
|
|
55
|
+
'worklet';
|
|
56
|
+
|
|
57
|
+
const timing = {
|
|
58
|
+
duration: prop?.duration || _bottomSheetConstants.animateCloseTimingConfig.duration,
|
|
59
|
+
easing: prop?.easing || _bottomSheetConstants.animateCloseTimingConfig.easing
|
|
60
|
+
};
|
|
61
|
+
translationY.value = (0, _reactNativeReanimated.withTiming)(closedYPosition.value, timing);
|
|
62
|
+
backdropOpacity.value = (0, _reactNativeReanimated.withTiming)(0, timing);
|
|
63
|
+
}, []);
|
|
64
|
+
const onPlatformViewLayout = (0, _react.useCallback)(e => {
|
|
65
|
+
translationX.value = -e.nativeEvent.layout.x;
|
|
66
|
+
}, []);
|
|
67
|
+
const animateToSnapPoint = (0, _react.useCallback)((snapPoint, index) => {
|
|
68
|
+
'worklet';
|
|
69
|
+
|
|
70
|
+
if (!snapPoint) return;
|
|
71
|
+
currentSnapPoint.value = {
|
|
72
|
+
offset: snapPoint.offset
|
|
73
|
+
};
|
|
74
|
+
translationY.value = (0, _reactNativeReanimated.withTiming)(snapPoint.offset, _bottomSheetConstants.modalTransitionTimingConfig, () => {
|
|
75
|
+
typeof index === 'number' && onSnapPointReach && (0, _reactNativeReanimated.runOnJS)(onSnapPointReach)(index);
|
|
76
|
+
});
|
|
77
|
+
backdropOpacity.value = (0, _reactNativeReanimated.withTiming)(snapPoint.offset / fullyOpenYPosition.value, _bottomSheetConstants.modalTransitionTimingConfig);
|
|
78
|
+
}, []);
|
|
79
|
+
const animateToSnapPointIndex = (0, _react.useCallback)(snapPointIndex => {
|
|
80
|
+
'worklet';
|
|
81
|
+
|
|
82
|
+
const snapPoint = snapPoints.value[snapPointIndex];
|
|
83
|
+
animateToSnapPoint(snapPoint, snapPointIndex);
|
|
84
|
+
}, []);
|
|
85
|
+
const animateToPercentage = (0, _react.useCallback)((percentage, screenHeight) => {
|
|
86
|
+
'worklet';
|
|
87
|
+
|
|
88
|
+
const snapPoint = percentageToSnapPointWorklet(percentage, screenHeight);
|
|
89
|
+
animateToSnapPoint(snapPoint);
|
|
90
|
+
}, [orientation]);
|
|
91
|
+
const onModalContentLayout = (0, _react.useCallback)(e => {
|
|
92
|
+
if (modalState.current === _bottomSheetTypes.ModalState.OPENING) return;
|
|
93
|
+
if (!modalState.current) setModalState(_bottomSheetTypes.ModalState.OPENING);
|
|
94
|
+
if (snapPoints.value.length && modalState.current === _bottomSheetTypes.ModalState.OPEN) return;
|
|
95
|
+
if (!snapPoints.value.length) {
|
|
96
|
+
if (e.nativeEvent.layout.height > props.utils.modalHeight) fullyOpenYPosition.value = -props.utils.modalHeight;else fullyOpenYPosition.value = -e.nativeEvent.layout.height;
|
|
97
|
+
}
|
|
98
|
+
if (!disableLayoutAnimation.current) (0, _reactNativeReanimated.runOnUI)(animateModalOpen)(Math.abs(snapPoints.value[0]?.offset || e.nativeEvent.layout.height), props.utils.modalHeight);
|
|
99
|
+
}, [orientation]);
|
|
100
|
+
const closeModal = (0, _react.useCallback)(delayMS => {
|
|
101
|
+
setModalState(_bottomSheetTypes.ModalState.CLOSING);
|
|
102
|
+
delayMS ? setTimeout(() => props.setShowModal ? props.setShowModal(false) : unMounter?.(), delayMS) : props.setShowModal ? props.setShowModal(false) : unMounter?.();
|
|
103
|
+
props.setDisableLayoutAnimation(true);
|
|
104
|
+
setTimeout(() => {
|
|
105
|
+
setModalState(_bottomSheetTypes.ModalState.CLOSED);
|
|
106
|
+
}, delayMS || _bottomSheetConstants.animateCloseTimingConfig.duration);
|
|
107
|
+
}, [unMounter]);
|
|
108
|
+
const onModalBackdropPress = (0, _react.useCallback)(() => {
|
|
109
|
+
onBackDropPress?.();
|
|
110
|
+
if (disableCloseOnBackdropPress) return;
|
|
111
|
+
closeModal();
|
|
112
|
+
(0, _reactNativeReanimated.runOnUI)(animateModalClose)();
|
|
113
|
+
}, []);
|
|
114
|
+
const onRequestClose = (0, _react.useCallback)(() => {
|
|
115
|
+
disableLayoutAnimation.current = true;
|
|
116
|
+
(0, _reactNativeReanimated.runOnUI)(animateModalClose)();
|
|
117
|
+
if (props.setShowModal) {
|
|
118
|
+
props.setShowModal(false);
|
|
119
|
+
} else {
|
|
120
|
+
props.unMounter?.();
|
|
121
|
+
}
|
|
122
|
+
}, []);
|
|
123
|
+
return {
|
|
124
|
+
closeModal,
|
|
125
|
+
animateModalOpen,
|
|
126
|
+
animateModalClose,
|
|
127
|
+
animateToPercentage,
|
|
128
|
+
animateToSnapPointIndex,
|
|
129
|
+
onRequestClose,
|
|
130
|
+
onPlatformViewLayout,
|
|
131
|
+
onModalContentLayout,
|
|
132
|
+
onModalBackdropPress
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=callbacks.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_reactNativeReanimated","require","_react","_bottomSheetConstants","_bottomSheetTypes","callbackController","props","unMounter","snapPoints","modalState","backdropOpacity","translationX","translationY","onBackDropPress","closedYPosition","currentSnapPoint","prevTranslationY","onSnapPointReach","fullyOpenYPosition","disableLayoutAnimation","disableCloseOnBackdropPress","orientation","getMaxMinSnapPointsWorklet","percentageToSnapPointWorklet","utils","setModalState","useCallback","state","current","ModalState","CLOSING","CLOSED","animateModalOpen","height","modalHeight","translateYHeight","value","withTiming","animateOpenTimingConfig","runOnJS","OPEN","length","maxOpenPosition","maxSnapPoint","animateModalClose","prop","timing","duration","animateCloseTimingConfig","easing","onPlatformViewLayout","e","nativeEvent","layout","x","animateToSnapPoint","snapPoint","index","offset","modalTransitionTimingConfig","animateToSnapPointIndex","snapPointIndex","animateToPercentage","percentage","screenHeight","onModalContentLayout","OPENING","runOnUI","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,127 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.dragAnimationController = dragAnimationController;
|
|
7
|
+
var _reactNativeReanimated = require("react-native-reanimated");
|
|
8
|
+
var _react = require("react");
|
|
9
|
+
var _bottomSheetConstants = require("../config/bottomSheet.constants.js");
|
|
10
|
+
//$lf-ignore
|
|
11
|
+
|
|
12
|
+
function dragAnimationController(props) {
|
|
13
|
+
const {
|
|
14
|
+
snapPoints,
|
|
15
|
+
currentSnapPoint,
|
|
16
|
+
allowDragWhileKeyboardVisible,
|
|
17
|
+
keyboardHeight,
|
|
18
|
+
backdropOpacity,
|
|
19
|
+
closeModal,
|
|
20
|
+
keepMounted,
|
|
21
|
+
closedYPosition,
|
|
22
|
+
onSnapPointReach,
|
|
23
|
+
onDragStart,
|
|
24
|
+
lowestSnapPointPosition,
|
|
25
|
+
translationY,
|
|
26
|
+
prevTranslationY,
|
|
27
|
+
fullyOpenYPosition
|
|
28
|
+
} = props;
|
|
29
|
+
// Gesture event handlers
|
|
30
|
+
const onDragStartGesture = (0, _react.useCallback)(() => {
|
|
31
|
+
'worklet';
|
|
32
|
+
|
|
33
|
+
if (keyboardHeight.value && !allowDragWhileKeyboardVisible) return;
|
|
34
|
+
onDragStart();
|
|
35
|
+
}, []);
|
|
36
|
+
const onDragGesture = (0, _react.useCallback)(e => {
|
|
37
|
+
'worklet';
|
|
38
|
+
|
|
39
|
+
if (keyboardHeight.value && !allowDragWhileKeyboardVisible) return;
|
|
40
|
+
const val = prevTranslationY.value + e.translationY;
|
|
41
|
+
const stretch = 100;
|
|
42
|
+
translationY.value = val >= fullyOpenYPosition.value ? val : fullyOpenYPosition.value - stretch + stretch / ((fullyOpenYPosition.value - val) / stretch + 1);
|
|
43
|
+
if (snapPoints.value.length) backdropOpacity.value = -(currentSnapPoint.value.offset + e.translationY) / -fullyOpenYPosition.value;else {
|
|
44
|
+
if (prevTranslationY.value === fullyOpenYPosition.value) backdropOpacity.value = -(e.translationY + fullyOpenYPosition.value) / -fullyOpenYPosition.value;else if (e.translationY < 0) backdropOpacity.value = e.translationY / -fullyOpenYPosition.value;
|
|
45
|
+
}
|
|
46
|
+
}, []);
|
|
47
|
+
const onDragEndGesture = (0, _react.useCallback)(e => {
|
|
48
|
+
'worklet';
|
|
49
|
+
|
|
50
|
+
if (keyboardHeight.value && !allowDragWhileKeyboardVisible) return;
|
|
51
|
+
const animate = (to, timing, opacity, index) => {
|
|
52
|
+
translationY.value = (0, _reactNativeReanimated.withTiming)(to, timing, () => {
|
|
53
|
+
typeof index === 'number' && onSnapPointReach && (0, _reactNativeReanimated.runOnJS)(onSnapPointReach)(index);
|
|
54
|
+
});
|
|
55
|
+
backdropOpacity.value = (0, _reactNativeReanimated.withTiming)(opacity, _bottomSheetConstants.modalTransitionTimingConfig);
|
|
56
|
+
};
|
|
57
|
+
if (snapPoints.value.length) {
|
|
58
|
+
const fullyOpenIndex = snapPoints.value.length - 1;
|
|
59
|
+
if (e.velocityY > 1500) {
|
|
60
|
+
if (currentSnapPoint.value.offset === lowestSnapPointPosition.value && !keepMounted) {
|
|
61
|
+
animate(closedYPosition.value, _bottomSheetConstants.modalTransitionTimingConfig, 0);
|
|
62
|
+
return (0, _reactNativeReanimated.runOnJS)(closeModal)(175);
|
|
63
|
+
}
|
|
64
|
+
if (e.velocityY > 3500 && !keepMounted) {
|
|
65
|
+
animate(closedYPosition.value, _bottomSheetConstants.modalTransitionTimingConfig, 0);
|
|
66
|
+
return (0, _reactNativeReanimated.runOnJS)(closeModal)(175);
|
|
67
|
+
}
|
|
68
|
+
if (e.velocityY > 1500) {
|
|
69
|
+
animate(lowestSnapPointPosition.value, _bottomSheetConstants.modalTransitionTimingConfig, lowestSnapPointPosition.value / fullyOpenYPosition.value, 0);
|
|
70
|
+
currentSnapPoint.value = {
|
|
71
|
+
offset: lowestSnapPointPosition.value
|
|
72
|
+
};
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
} else if (e.velocityY < -1500) {
|
|
76
|
+
animate(fullyOpenYPosition.value, _bottomSheetConstants.modalTransitionTimingConfig, 1, fullyOpenIndex);
|
|
77
|
+
currentSnapPoint.value = {
|
|
78
|
+
offset: fullyOpenYPosition.value
|
|
79
|
+
};
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
let closestSnapPointValue = Math.abs(currentSnapPoint.value.offset + e.translationY + 100);
|
|
83
|
+
let closestSnapPointOffset = 0;
|
|
84
|
+
let closestSnapPointIndex = 0;
|
|
85
|
+
for (let i = 0; i < snapPoints.value.length; i++) {
|
|
86
|
+
const snapPoint = snapPoints.value[i];
|
|
87
|
+
if (!snapPoint) return animate(fullyOpenYPosition.value, _bottomSheetConstants.modalTransitionTimingConfig, 1, fullyOpenIndex);
|
|
88
|
+
const currSnapPointValue = Math.abs(currentSnapPoint.value.offset + e.translationY - snapPoint.offset);
|
|
89
|
+
if (currSnapPointValue < closestSnapPointValue) {
|
|
90
|
+
closestSnapPointValue = currSnapPointValue;
|
|
91
|
+
closestSnapPointOffset = snapPoint.offset;
|
|
92
|
+
closestSnapPointIndex = i;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
if (closestSnapPointOffset) {
|
|
96
|
+
currentSnapPoint.value = {
|
|
97
|
+
offset: closestSnapPointOffset
|
|
98
|
+
};
|
|
99
|
+
return animate(closestSnapPointOffset, _bottomSheetConstants.modalTransitionTimingConfig, closestSnapPointOffset / fullyOpenYPosition.value, closestSnapPointIndex);
|
|
100
|
+
}
|
|
101
|
+
if (!keepMounted) {
|
|
102
|
+
(0, _reactNativeReanimated.runOnJS)(closeModal)(175);
|
|
103
|
+
return animate(closedYPosition.value, _bottomSheetConstants.modalTransitionTimingConfig, 0);
|
|
104
|
+
} else return animate(lowestSnapPointPosition.value, _bottomSheetConstants.modalTransitionTimingConfig, lowestSnapPointPosition.value / fullyOpenYPosition.value, 0);
|
|
105
|
+
}
|
|
106
|
+
const halfContentHeight = -(fullyOpenYPosition.value / 2);
|
|
107
|
+
const isClosed = prevTranslationY.value === closedYPosition.value;
|
|
108
|
+
const isMovedPastHalf = Math.abs(e.translationY) > halfContentHeight;
|
|
109
|
+
const isHighVelocity = isClosed ? e.velocityY < -1000 : e.velocityY > 1000;
|
|
110
|
+
if (isClosed) {
|
|
111
|
+
if (e.translationY > 50 || isMovedPastHalf) animate(fullyOpenYPosition.value, _bottomSheetConstants.modalTransitionTimingConfig, 1);else if (isHighVelocity) animate(fullyOpenYPosition.value, _bottomSheetConstants.modalTransitionTimingConfig, 1);else animate(closedYPosition.value, _bottomSheetConstants.modalTransitionTimingConfig, 0);
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
if (isMovedPastHalf || isHighVelocity) {
|
|
115
|
+
if (e.velocityY > 1000) animate(closedYPosition.value, _bottomSheetConstants.modalTransitionTimingConfig, 0);else animate(closedYPosition.value, _bottomSheetConstants.modalTransitionTimingConfig, 0);
|
|
116
|
+
(0, _reactNativeReanimated.runOnJS)(closeModal)(175);
|
|
117
|
+
} else if (e.translationY <= halfContentHeight) {
|
|
118
|
+
animate(fullyOpenYPosition.value, _bottomSheetConstants.modalTransitionTimingConfig, 1);
|
|
119
|
+
}
|
|
120
|
+
}, []);
|
|
121
|
+
return {
|
|
122
|
+
onDragGesture,
|
|
123
|
+
onDragEndGesture,
|
|
124
|
+
onDragStartGesture
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=dragAnimation.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_reactNativeReanimated","require","_react","_bottomSheetConstants","dragAnimationController","props","snapPoints","currentSnapPoint","allowDragWhileKeyboardVisible","keyboardHeight","backdropOpacity","closeModal","keepMounted","closedYPosition","onSnapPointReach","onDragStart","lowestSnapPointPosition","translationY","prevTranslationY","fullyOpenYPosition","onDragStartGesture","useCallback","value","onDragGesture","e","val","stretch","length","offset","onDragEndGesture","animate","to","timing","opacity","index","withTiming","runOnJS","modalTransitionTimingConfig","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,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useBottomSheetRef = useBottomSheetRef;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
var _bottomSheetConstants = require("../../config/bottomSheet.constants.js");
|
|
9
|
+
function useBottomSheetRef({
|
|
10
|
+
ref,
|
|
11
|
+
showModal,
|
|
12
|
+
setShowModal
|
|
13
|
+
}) {
|
|
14
|
+
const mounterRef = (0, _react.useRef)(null);
|
|
15
|
+
const sheetRef = (0, _react.useRef)(null);
|
|
16
|
+
const modalRef = (0, _react.useMemo)(() => {
|
|
17
|
+
const hasState = setShowModal && typeof showModal === 'boolean';
|
|
18
|
+
return {
|
|
19
|
+
getModalState: () => sheetRef.current?.getModalState(),
|
|
20
|
+
openModal: openModalProps => {
|
|
21
|
+
if (hasState && !openModalProps?.onOpen) setShowModal(true);else mounterRef.current?.mountComponent(openModalProps);
|
|
22
|
+
},
|
|
23
|
+
closeModal: closeModalProps => {
|
|
24
|
+
if (closeModalProps?.skipAnimation) {
|
|
25
|
+
mounterRef.current?.hardUnMountComponent(closeModalProps);
|
|
26
|
+
hasState && setShowModal(false);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
if (closeModalProps?.isNavigating) {
|
|
30
|
+
const closeProps = {
|
|
31
|
+
duration: closeModalProps.duration || 100,
|
|
32
|
+
easing: closeModalProps?.easing,
|
|
33
|
+
onClose: closeModalProps?.onClose
|
|
34
|
+
};
|
|
35
|
+
sheetRef.current?.animateCloseModal(closeProps);
|
|
36
|
+
mounterRef.current?.unMountComponent(closeProps);
|
|
37
|
+
if (hasState) setTimeout(() => setShowModal(false), closeProps.duration);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
if (hasState && !closeModalProps?.duration && !closeModalProps?.onClose) return setShowModal(false);
|
|
41
|
+
sheetRef.current?.animateCloseModal(closeModalProps);
|
|
42
|
+
mounterRef.current?.unMountComponent(closeModalProps);
|
|
43
|
+
if (hasState) setTimeout(() => setShowModal(false), _bottomSheetConstants.animateCloseTimingConfig.duration);
|
|
44
|
+
},
|
|
45
|
+
closeWithoutAnimation: () => {
|
|
46
|
+
mounterRef.current?.hardUnMountComponent();
|
|
47
|
+
hasState && setShowModal(false);
|
|
48
|
+
},
|
|
49
|
+
snapToIndex: index => sheetRef.current?.snapToIndex(index),
|
|
50
|
+
snapToPercentage: percentage => sheetRef.current?.snapToPercentage(percentage)
|
|
51
|
+
};
|
|
52
|
+
}, []);
|
|
53
|
+
(0, _react.useImperativeHandle)(ref, () => modalRef, []);
|
|
54
|
+
return {
|
|
55
|
+
mounterRef,
|
|
56
|
+
sheetRef,
|
|
57
|
+
modalRef
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=useBottomSheetRef.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","require","_bottomSheetConstants","useBottomSheetRef","ref","showModal","setShowModal","mounterRef","useRef","sheetRef","modalRef","useMemo","hasState","getModalState","current","openModal","openModalProps","onOpen","mountComponent","closeModal","closeModalProps","skipAnimation","hardUnMountComponent","isNavigating","closeProps","duration","easing","onClose","animateCloseModal","unMountComponent","setTimeout","animateCloseTimingConfig","closeWithoutAnimation","snapToIndex","index","snapToPercentage","percentage","useImperativeHandle"],"sourceRoot":"../../../../../src","sources":["BottomSheet/controller/hooks/useBottomSheetRef.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAQA,IAAAC,qBAAA,GAAAD,OAAA;AAMO,SAASE,iBAAiBA,CAAC;EAChCC,GAAG;EACHC,SAAS;EACTC;AACsB,CAAC,EAAE;EACzB,MAAMC,UAAU,GAAG,IAAAC,aAAM,EAAoC,IAAI,CAAC;EAClE,MAAMC,QAAQ,GAAG,IAAAD,aAAM,EAAwB,IAAI,CAAC;EACpD,MAAME,QAAwB,GAAG,IAAAC,cAAO,EAAC,MAAM;IAC7C,MAAMC,QAAQ,GAAGN,YAAY,IAAI,OAAOD,SAAS,KAAK,SAAS;IAC/D,OAAO;MACLQ,aAAa,EAAEA,CAAA,KAAMJ,QAAQ,CAACK,OAAO,EAAED,aAAa,CAAC,CAAC;MACtDE,SAAS,EAAGC,cAAc,IAAK;QAC7B,IAAIJ,QAAQ,IAAI,CAACI,cAAc,EAAEC,MAAM,EAAEX,YAAY,CAAC,IAAI,CAAC,CAAC,KACvDC,UAAU,CAACO,OAAO,EAAEI,cAAc,CAACF,cAAc,CAAC;MACzD,CAAC;MACDG,UAAU,EAAGC,eAAe,IAAK;QAC/B,IAAIA,eAAe,EAAEC,aAAa,EAAE;UAClCd,UAAU,CAACO,OAAO,EAAEQ,oBAAoB,CAACF,eAAe,CAAC;UACzDR,QAAQ,IAAIN,YAAY,CAAC,KAAK,CAAC;UAC/B;QACF;QACA,IAAIc,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;UACDlB,QAAQ,CAACK,OAAO,EAAEc,iBAAiB,CAACJ,UAAU,CAAC;UAC/CjB,UAAU,CAACO,OAAO,EAAEe,gBAAgB,CAACL,UAAU,CAAC;UAChD,IAAIZ,QAAQ,EACVkB,UAAU,CAAC,MAAMxB,YAAY,CAAC,KAAK,CAAC,EAAEkB,UAAU,CAACC,QAAQ,CAAC;UAC5D;QACF;QACA,IAAIb,QAAQ,IAAI,CAACQ,eAAe,EAAEK,QAAQ,IAAI,CAACL,eAAe,EAAEO,OAAO,EACrE,OAAOrB,YAAY,CAAC,KAAK,CAAC;QAC5BG,QAAQ,CAACK,OAAO,EAAEc,iBAAiB,CAACR,eAAe,CAAC;QACpDb,UAAU,CAACO,OAAO,EAAEe,gBAAgB,CAACT,eAAe,CAAC;QACrD,IAAIR,QAAQ,EACVkB,UAAU,CACR,MAAMxB,YAAY,CAAC,KAAK,CAAC,EACzByB,8CAAwB,CAACN,QAC3B,CAAC;MACL,CAAC;MACDO,qBAAqB,EAAEA,CAAA,KAAM;QAC3BzB,UAAU,CAACO,OAAO,EAAEQ,oBAAoB,CAAC,CAAC;QAC1CV,QAAQ,IAAIN,YAAY,CAAC,KAAK,CAAC;MACjC,CAAC;MACD2B,WAAW,EAAGC,KAAK,IAAKzB,QAAQ,CAACK,OAAO,EAAEmB,WAAW,CAACC,KAAK,CAAC;MAC5DC,gBAAgB,EAAGC,UAAU,IAC3B3B,QAAQ,CAACK,OAAO,EAAEqB,gBAAgB,CAACC,UAAU;IACjD,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EACN,IAAAC,0BAAmB,EAACjC,GAAG,EAAE,MAAMM,QAAQ,EAAE,EAAE,CAAC;EAC5C,OAAO;IACLH,UAAU;IACVE,QAAQ;IACRC;EACF,CAAC;AACH","ignoreList":[]}
|