react-native-fpay 0.2.9 → 0.3.2
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/lib/module/FountainPayProvider.js +5 -1
- package/lib/module/FountainPayProvider.js.map +1 -1
- package/lib/module/core/api/index.js +22 -12
- package/lib/module/core/api/index.js.map +1 -1
- package/lib/module/engine/BLEReceiverService.js.map +1 -1
- package/lib/module/engine/FPEngine.js +24 -13
- package/lib/module/engine/FPEngine.js.map +1 -1
- package/lib/module/engine/useIsForeground.js +17 -0
- package/lib/module/engine/useIsForeground.js.map +1 -0
- package/lib/module/ui/components/AnimatedDots.js +68 -0
- package/lib/module/ui/components/AnimatedDots.js.map +1 -0
- package/lib/module/ui/components/ConfirmScreen.js +333 -0
- package/lib/module/ui/components/ConfirmScreen.js.map +1 -0
- package/lib/module/ui/modals/FPPaymentRequestModal.js +6 -8
- package/lib/module/ui/modals/FPPaymentRequestModal.js.map +1 -1
- package/lib/module/ui/modals/FPShell.js +7 -4
- package/lib/module/ui/modals/FPShell.js.map +1 -1
- package/lib/module/ui/screens/ReceiveScreen.js +379 -274
- package/lib/module/ui/screens/ReceiveScreen.js.map +1 -1
- package/lib/module/ui/screens/SendScreen.js +154 -45
- package/lib/module/ui/screens/SendScreen.js.map +1 -1
- package/lib/module/ui/screens/styles.js +89 -0
- package/lib/module/ui/screens/styles.js.map +1 -0
- package/lib/module/ui/screens/sub/receivePayment/Nfc/index.js +361 -0
- package/lib/module/ui/screens/sub/receivePayment/Nfc/index.js.map +1 -0
- package/lib/module/ui/screens/sub/receivePayment/Qr/index.js +338 -0
- package/lib/module/ui/screens/sub/receivePayment/Qr/index.js.map +1 -0
- package/lib/module/ui/screens/sub/receivePayment/Transfer/index.js +453 -0
- package/lib/module/ui/screens/sub/receivePayment/Transfer/index.js.map +1 -0
- package/lib/module/ui/screens/sub/{BluetoothSubScreen.js → sendPayment/BluetoothSubScreen.js} +25 -32
- package/lib/module/ui/screens/sub/sendPayment/BluetoothSubScreen.js.map +1 -0
- package/lib/module/ui/screens/sub/sendPayment/NFCSubScreen.js +354 -0
- package/lib/module/ui/screens/sub/sendPayment/NFCSubScreen.js.map +1 -0
- package/lib/module/ui/screens/sub/sendPayment/NQRSubScreen.js +440 -0
- package/lib/module/ui/screens/sub/sendPayment/NQRSubScreen.js.map +1 -0
- package/lib/module/ui/screens/sub/{ProximitySubScreen.js → sendPayment/ProximitySubScreen.js} +20 -111
- package/lib/module/ui/screens/sub/sendPayment/ProximitySubScreen.js.map +1 -0
- package/lib/module/ui/screens/sub/sendPayment/TransferSubScreen.js +327 -0
- package/lib/module/ui/screens/sub/sendPayment/TransferSubScreen.js.map +1 -0
- package/lib/typescript/src/FountainPayProvider.d.ts.map +1 -1
- package/lib/typescript/src/core/api/index.d.ts +20 -27
- package/lib/typescript/src/core/api/index.d.ts.map +1 -1
- package/lib/typescript/src/core/types/index.d.ts +56 -13
- package/lib/typescript/src/core/types/index.d.ts.map +1 -1
- package/lib/typescript/src/engine/BLEReceiverService.d.ts +2 -0
- package/lib/typescript/src/engine/BLEReceiverService.d.ts.map +1 -1
- package/lib/typescript/src/engine/FPEngine.d.ts +3 -1
- package/lib/typescript/src/engine/FPEngine.d.ts.map +1 -1
- package/lib/typescript/src/engine/useIsForeground.d.ts +2 -0
- package/lib/typescript/src/engine/useIsForeground.d.ts.map +1 -0
- package/lib/typescript/src/ui/components/AnimatedDots.d.ts +2 -0
- package/lib/typescript/src/ui/components/AnimatedDots.d.ts.map +1 -0
- package/lib/typescript/src/ui/components/ConfirmScreen.d.ts +10 -0
- package/lib/typescript/src/ui/components/ConfirmScreen.d.ts.map +1 -0
- package/lib/typescript/src/ui/components/OtpInput/Styles.d.ts +3 -3
- package/lib/typescript/src/ui/modals/FPPaymentRequestModal.d.ts.map +1 -1
- package/lib/typescript/src/ui/modals/FPShell.d.ts.map +1 -1
- package/lib/typescript/src/ui/screens/ReceiveScreen.d.ts +2 -9
- package/lib/typescript/src/ui/screens/ReceiveScreen.d.ts.map +1 -1
- package/lib/typescript/src/ui/screens/SendScreen.d.ts +4 -2
- package/lib/typescript/src/ui/screens/SendScreen.d.ts.map +1 -1
- package/lib/typescript/src/ui/screens/styles.d.ts +1390 -0
- package/lib/typescript/src/ui/screens/styles.d.ts.map +1 -0
- package/lib/typescript/src/ui/screens/sub/receivePayment/Nfc/index.d.ts +10 -0
- package/lib/typescript/src/ui/screens/sub/receivePayment/Nfc/index.d.ts.map +1 -0
- package/lib/typescript/src/ui/screens/sub/receivePayment/Qr/index.d.ts +10 -0
- package/lib/typescript/src/ui/screens/sub/receivePayment/Qr/index.d.ts.map +1 -0
- package/lib/typescript/src/ui/screens/sub/receivePayment/Transfer/index.d.ts +5 -0
- package/lib/typescript/src/ui/screens/sub/receivePayment/Transfer/index.d.ts.map +1 -0
- package/lib/typescript/src/ui/screens/sub/{BluetoothSubScreen.d.ts → sendPayment/BluetoothSubScreen.d.ts} +2 -11
- package/lib/typescript/src/ui/screens/sub/sendPayment/BluetoothSubScreen.d.ts.map +1 -0
- package/lib/typescript/src/ui/screens/sub/sendPayment/NFCSubScreen.d.ts +3 -0
- package/lib/typescript/src/ui/screens/sub/sendPayment/NFCSubScreen.d.ts.map +1 -0
- package/lib/typescript/src/ui/screens/sub/sendPayment/NQRSubScreen.d.ts +3 -0
- package/lib/typescript/src/ui/screens/sub/sendPayment/NQRSubScreen.d.ts.map +1 -0
- package/lib/typescript/src/ui/screens/sub/{ProximitySubScreen.d.ts → sendPayment/ProximitySubScreen.d.ts} +2 -10
- package/lib/typescript/src/ui/screens/sub/sendPayment/ProximitySubScreen.d.ts.map +1 -0
- package/lib/typescript/src/ui/screens/sub/sendPayment/TransferSubScreen.d.ts +3 -0
- package/lib/typescript/src/ui/screens/sub/sendPayment/TransferSubScreen.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/FountainPayProvider.tsx +7 -1
- package/src/core/api/index.ts +34 -19
- package/src/core/types/index.ts +67 -13
- package/src/engine/BLEReceiverService.ts +2 -0
- package/src/engine/FPEngine.ts +29 -14
- package/src/engine/useIsForeground.ts +18 -0
- package/src/ui/components/AnimatedDots.tsx +81 -0
- package/src/ui/components/ConfirmScreen.tsx +421 -0
- package/src/ui/modals/FPPaymentRequestModal.tsx +7 -6
- package/src/ui/modals/FPShell.tsx +9 -9
- package/src/ui/screens/ReceiveScreen.tsx +266 -115
- package/src/ui/screens/SendScreen.tsx +141 -19
- package/src/ui/screens/styles.ts +101 -0
- package/src/ui/screens/sub/receivePayment/Nfc/index.tsx +418 -0
- package/src/ui/screens/sub/receivePayment/Qr/index.tsx +391 -0
- package/src/ui/screens/sub/receivePayment/Transfer/index.tsx +512 -0
- package/src/ui/screens/sub/{BluetoothSubScreen.tsx → sendPayment/BluetoothSubScreen.tsx} +27 -46
- package/src/ui/screens/sub/sendPayment/NFCSubScreen.tsx +302 -0
- package/src/ui/screens/sub/sendPayment/NQRSubScreen.tsx +490 -0
- package/src/ui/screens/sub/{ProximitySubScreen.tsx → sendPayment/ProximitySubScreen.tsx} +24 -44
- package/src/ui/screens/sub/sendPayment/TransferSubScreen.tsx +345 -0
- package/lib/module/ui/screens/sub/BluetoothSubScreen.js.map +0 -1
- package/lib/module/ui/screens/sub/NFCSubScreen.js +0 -164
- package/lib/module/ui/screens/sub/NFCSubScreen.js.map +0 -1
- package/lib/module/ui/screens/sub/NQRSubScreen.js +0 -131
- package/lib/module/ui/screens/sub/NQRSubScreen.js.map +0 -1
- package/lib/module/ui/screens/sub/ProximitySubScreen.js.map +0 -1
- package/lib/module/ui/screens/sub/TransferSubScreen.js +0 -353
- package/lib/module/ui/screens/sub/TransferSubScreen.js.map +0 -1
- package/lib/typescript/src/ui/screens/sub/BluetoothSubScreen.d.ts.map +0 -1
- package/lib/typescript/src/ui/screens/sub/NFCSubScreen.d.ts +0 -18
- package/lib/typescript/src/ui/screens/sub/NFCSubScreen.d.ts.map +0 -1
- package/lib/typescript/src/ui/screens/sub/NQRSubScreen.d.ts +0 -12
- package/lib/typescript/src/ui/screens/sub/NQRSubScreen.d.ts.map +0 -1
- package/lib/typescript/src/ui/screens/sub/ProximitySubScreen.d.ts.map +0 -1
- package/lib/typescript/src/ui/screens/sub/TransferSubScreen.d.ts +0 -11
- package/lib/typescript/src/ui/screens/sub/TransferSubScreen.d.ts.map +0 -1
- package/src/ui/screens/sub/NFCSubScreen.tsx +0 -86
- package/src/ui/screens/sub/NQRSubScreen.tsx +0 -62
- package/src/ui/screens/sub/TransferSubScreen.tsx +0 -147
|
@@ -0,0 +1,440 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React, { useEffect, useState } from 'react';
|
|
4
|
+
import { View, Text, StyleSheet, TouchableOpacity, Dimensions, Animated, Easing, Alert, Vibration, Linking } from 'react-native';
|
|
5
|
+
import { Camera, useCameraDevice, useCodeScanner } from 'react-native-vision-camera';
|
|
6
|
+
import styled from 'styled-components/native';
|
|
7
|
+
import { launchImageLibrary } from 'react-native-image-picker';
|
|
8
|
+
import QRKit from 'react-native-qr-kit';
|
|
9
|
+
import Ionicons from 'react-native-vector-icons/Ionicons';
|
|
10
|
+
import { useIsForeground } from "../../../../engine/useIsForeground.js";
|
|
11
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
12
|
+
const {
|
|
13
|
+
width,
|
|
14
|
+
height
|
|
15
|
+
} = Dimensions.get('window');
|
|
16
|
+
|
|
17
|
+
// Styled Components
|
|
18
|
+
const Container = styled(View)`
|
|
19
|
+
flex: 1;
|
|
20
|
+
background-color: #000000;
|
|
21
|
+
`;
|
|
22
|
+
const Header = styled(View)`
|
|
23
|
+
flex-direction: row;
|
|
24
|
+
align-items: center;
|
|
25
|
+
justify-content: space-between;
|
|
26
|
+
padding: 12px 16px;
|
|
27
|
+
position: absolute !important;
|
|
28
|
+
top: 40px;
|
|
29
|
+
left: 0;
|
|
30
|
+
right: 0;
|
|
31
|
+
z-index: 10;
|
|
32
|
+
elevation: 4;
|
|
33
|
+
shadow-color: #000;
|
|
34
|
+
shadow-offset: 0px 2px;
|
|
35
|
+
shadow-opacity: 0.1;
|
|
36
|
+
shadow-radius: 4px;
|
|
37
|
+
z-index: 9999999999 !important;
|
|
38
|
+
`;
|
|
39
|
+
const HeaderButton = styled(TouchableOpacity)`
|
|
40
|
+
padding: 8px;
|
|
41
|
+
background-color: #fff;
|
|
42
|
+
width: 40px;
|
|
43
|
+
height: 40px;
|
|
44
|
+
border-radius: 50%;
|
|
45
|
+
justify-content: center;
|
|
46
|
+
align-items: center;
|
|
47
|
+
`;
|
|
48
|
+
const HeaderCenter = styled(View)`
|
|
49
|
+
flex-direction: row;
|
|
50
|
+
align-items: center;
|
|
51
|
+
gap: 8px;
|
|
52
|
+
`;
|
|
53
|
+
const HeaderRight = styled(View)`
|
|
54
|
+
flex-direction: row;
|
|
55
|
+
align-items: center;
|
|
56
|
+
gap: 8px;
|
|
57
|
+
`;
|
|
58
|
+
const CameraContainer = styled(View)`
|
|
59
|
+
flex: 1;
|
|
60
|
+
`;
|
|
61
|
+
const StyledCamera = styled(Camera)`
|
|
62
|
+
flex: 1;
|
|
63
|
+
`;
|
|
64
|
+
const CameraPlaceholder = styled(View)`
|
|
65
|
+
flex: 1;
|
|
66
|
+
background-color: #1a1a1a;
|
|
67
|
+
justify-content: center;
|
|
68
|
+
align-items: center;
|
|
69
|
+
`;
|
|
70
|
+
const PlaceholderText = styled(Text)`
|
|
71
|
+
color: #ffffff;
|
|
72
|
+
font-size: 16px;
|
|
73
|
+
text-align: center;
|
|
74
|
+
padding: 20px;
|
|
75
|
+
`;
|
|
76
|
+
const PermissionButton = styled(TouchableOpacity)`
|
|
77
|
+
background-color: #10b981;
|
|
78
|
+
padding: 12px 24px;
|
|
79
|
+
border-radius: 12px;
|
|
80
|
+
margin-top: 16px;
|
|
81
|
+
`;
|
|
82
|
+
const PermissionButtonText = styled(Text)`
|
|
83
|
+
color: #ffffff;
|
|
84
|
+
font-size: 14px;
|
|
85
|
+
font-weight: 600;
|
|
86
|
+
`;
|
|
87
|
+
const ScanOverlay = styled(View)`
|
|
88
|
+
position: absolute;
|
|
89
|
+
top: 150px;
|
|
90
|
+
left: 0;
|
|
91
|
+
right: 0;
|
|
92
|
+
justify-content: center;
|
|
93
|
+
align-items: center;
|
|
94
|
+
`;
|
|
95
|
+
const ScanOverlays = styled(View)`
|
|
96
|
+
position: absolute;
|
|
97
|
+
top: 200px;
|
|
98
|
+
left: 0;
|
|
99
|
+
right: 0;
|
|
100
|
+
bottom: ${height * 0.5}px;
|
|
101
|
+
justify-content: center;
|
|
102
|
+
align-items: center;
|
|
103
|
+
`;
|
|
104
|
+
const ScanFrame = styled(View)`
|
|
105
|
+
width: ${width * 0.75}px;
|
|
106
|
+
height: ${width * 0.75}px;
|
|
107
|
+
position: relative;
|
|
108
|
+
`;
|
|
109
|
+
const CornerBorder = styled(View)`
|
|
110
|
+
position: absolute;
|
|
111
|
+
width: 40px;
|
|
112
|
+
height: 40px;
|
|
113
|
+
${props => {
|
|
114
|
+
switch (props.position) {
|
|
115
|
+
case 'topLeft':
|
|
116
|
+
return 'top: 0; left: 0; border-top-width: 4px; border-left-width: 4px;';
|
|
117
|
+
case 'topRight':
|
|
118
|
+
return 'top: 0; right: 0; border-top-width: 4px; border-right-width: 4px;';
|
|
119
|
+
case 'bottomLeft':
|
|
120
|
+
return 'bottom: 0; left: 0; border-bottom-width: 4px; border-left-width: 4px;';
|
|
121
|
+
case 'bottomRight':
|
|
122
|
+
return 'bottom: 0; right: 0; border-bottom-width: 4px; border-right-width: 4px;';
|
|
123
|
+
default:
|
|
124
|
+
return '';
|
|
125
|
+
}
|
|
126
|
+
}}
|
|
127
|
+
border-color: #10b981;
|
|
128
|
+
`;
|
|
129
|
+
const ScanLineContainer = styled(View)`
|
|
130
|
+
width: 100%;
|
|
131
|
+
height: 100%;
|
|
132
|
+
overflow: hidden;
|
|
133
|
+
`;
|
|
134
|
+
const ScanLine = styled(View)`
|
|
135
|
+
width: 100%;
|
|
136
|
+
height: 2px;
|
|
137
|
+
background-color: #10b981;
|
|
138
|
+
shadow-color: #10b981;
|
|
139
|
+
shadow-offset: 0px 0px;
|
|
140
|
+
shadow-opacity: 0.8;
|
|
141
|
+
shadow-radius: 4px;
|
|
142
|
+
elevation: 5;
|
|
143
|
+
`;
|
|
144
|
+
const ScanInstructionText = styled(Text)`
|
|
145
|
+
color: #ffffff;
|
|
146
|
+
font-size: 16px;
|
|
147
|
+
font-weight: 600;
|
|
148
|
+
text-align: center;
|
|
149
|
+
margin-top: 24px;
|
|
150
|
+
text-shadow-color: rgba(0, 0, 0, 0.75);
|
|
151
|
+
text-shadow-offset: 0px 1px;
|
|
152
|
+
text-shadow-radius: 3px;
|
|
153
|
+
`;
|
|
154
|
+
const ScannedDataContainer = styled(View)`
|
|
155
|
+
position: absolute;
|
|
156
|
+
top: 100px;
|
|
157
|
+
left: 20px;
|
|
158
|
+
right: 20px;
|
|
159
|
+
background-color: rgba(16, 185, 129, 0.95);
|
|
160
|
+
padding: 16px;
|
|
161
|
+
border-radius: 12px;
|
|
162
|
+
z-index: 5;
|
|
163
|
+
`;
|
|
164
|
+
const ScannedDataText = styled(Text)`
|
|
165
|
+
color: #ffffff;
|
|
166
|
+
font-size: 14px;
|
|
167
|
+
font-weight: 600;
|
|
168
|
+
`;
|
|
169
|
+
export function NQRSubScreen({
|
|
170
|
+
amount,
|
|
171
|
+
currency,
|
|
172
|
+
onClose,
|
|
173
|
+
onProcessTransaction,
|
|
174
|
+
onError
|
|
175
|
+
}) {
|
|
176
|
+
const [hasPermission, setHasPermission] = useState(null);
|
|
177
|
+
const [scannedData, setScannedData] = useState(null);
|
|
178
|
+
const [isScanning, setIsScanning] = useState(true);
|
|
179
|
+
const [torch, setTorch] = useState(false);
|
|
180
|
+
const [layoutReady, setLayoutReady] = useState(false);
|
|
181
|
+
const [isActive, setIsActive] = useState(false);
|
|
182
|
+
const isForeground = useIsForeground();
|
|
183
|
+
const lineAnim = React.useRef(new Animated.Value(0)).current;
|
|
184
|
+
const lineWidth = 2;
|
|
185
|
+
const device = useCameraDevice('back', {
|
|
186
|
+
physicalDevices: ['wide-angle-camera']
|
|
187
|
+
});
|
|
188
|
+
useEffect(() => {
|
|
189
|
+
checkCameraPermission();
|
|
190
|
+
return () => {
|
|
191
|
+
setIsActive(false);
|
|
192
|
+
};
|
|
193
|
+
}, []);
|
|
194
|
+
useEffect(() => {
|
|
195
|
+
// if (scanned) {
|
|
196
|
+
Animated.loop(Animated.sequence([Animated.timing(lineAnim, {
|
|
197
|
+
toValue: qrSize - lineWidth,
|
|
198
|
+
// Move to right edge
|
|
199
|
+
duration: 1500,
|
|
200
|
+
easing: Easing.inOut(Easing.linear),
|
|
201
|
+
useNativeDriver: true
|
|
202
|
+
}), Animated.timing(lineAnim, {
|
|
203
|
+
toValue: 0,
|
|
204
|
+
// Move back to left
|
|
205
|
+
duration: 1500,
|
|
206
|
+
easing: Easing.inOut(Easing.linear),
|
|
207
|
+
useNativeDriver: true
|
|
208
|
+
})])).start();
|
|
209
|
+
// }
|
|
210
|
+
}, []);
|
|
211
|
+
useEffect(() => {
|
|
212
|
+
if (hasPermission && device && isForeground) {
|
|
213
|
+
const timer = setTimeout(() => {
|
|
214
|
+
setIsActive(true);
|
|
215
|
+
}, 500);
|
|
216
|
+
return () => clearTimeout(timer);
|
|
217
|
+
}
|
|
218
|
+
return undefined;
|
|
219
|
+
}, [hasPermission, device, isForeground]);
|
|
220
|
+
const checkCameraPermission = async () => {
|
|
221
|
+
try {
|
|
222
|
+
const permission = await Camera.getCameraPermissionStatus();
|
|
223
|
+
console.log('Current permission status:', permission);
|
|
224
|
+
if (permission === 'granted') {
|
|
225
|
+
setHasPermission(true);
|
|
226
|
+
} else if (permission === 'not-determined') {
|
|
227
|
+
const newPermission = await Camera.requestCameraPermission();
|
|
228
|
+
console.log('New permission status:', newPermission);
|
|
229
|
+
setHasPermission(newPermission === 'granted');
|
|
230
|
+
} else {
|
|
231
|
+
setHasPermission(false);
|
|
232
|
+
}
|
|
233
|
+
} catch (error) {
|
|
234
|
+
console.error('Permission check error:', error);
|
|
235
|
+
setHasPermission(false);
|
|
236
|
+
}
|
|
237
|
+
};
|
|
238
|
+
const requestPermission = async () => {
|
|
239
|
+
try {
|
|
240
|
+
const permission = await Camera.requestCameraPermission();
|
|
241
|
+
console.log('Requested permission:', permission);
|
|
242
|
+
if (permission === 'denied') {
|
|
243
|
+
Alert.alert('Permission Required', 'Camera permission is required to scan QR codes. Please enable it in settings.', [{
|
|
244
|
+
text: 'Cancel',
|
|
245
|
+
style: 'cancel'
|
|
246
|
+
}, {
|
|
247
|
+
text: 'Open Settings',
|
|
248
|
+
onPress: () => Linking.openSettings()
|
|
249
|
+
}]);
|
|
250
|
+
setHasPermission(false);
|
|
251
|
+
} else if (permission === 'granted') {
|
|
252
|
+
setHasPermission(true);
|
|
253
|
+
}
|
|
254
|
+
} catch (error) {
|
|
255
|
+
console.error('Permission request error:', error);
|
|
256
|
+
setHasPermission(false);
|
|
257
|
+
}
|
|
258
|
+
};
|
|
259
|
+
const handleQrData = data => {
|
|
260
|
+
console.log('QR Code Data:', data);
|
|
261
|
+
const payload = {
|
|
262
|
+
accountNo: data?.accountNo,
|
|
263
|
+
bank: data?.bankName,
|
|
264
|
+
accountDetail: data?.accountName,
|
|
265
|
+
channel: 'qr',
|
|
266
|
+
amount: data?.amount,
|
|
267
|
+
remark: data?.description
|
|
268
|
+
};
|
|
269
|
+
console.log('Qr details:', payload);
|
|
270
|
+
onProcessTransaction?.(payload);
|
|
271
|
+
};
|
|
272
|
+
const scanQrFromGallery = async () => {
|
|
273
|
+
try {
|
|
274
|
+
// Open gallery
|
|
275
|
+
const result = await launchImageLibrary({
|
|
276
|
+
mediaType: 'photo',
|
|
277
|
+
quality: 1
|
|
278
|
+
});
|
|
279
|
+
if (result.didCancel || !result.assets || !result.assets[0].uri) {
|
|
280
|
+
return;
|
|
281
|
+
}
|
|
282
|
+
const imageUri = result.assets[0].uri;
|
|
283
|
+
const barcodes = await QRKit.decodeQR(imageUri);
|
|
284
|
+
if (barcodes?.success) {
|
|
285
|
+
Vibration.vibrate(100);
|
|
286
|
+
await handleQrData(JSON.parse(barcodes?.data));
|
|
287
|
+
} else {
|
|
288
|
+
Alert.alert('Error:', barcodes?.message);
|
|
289
|
+
}
|
|
290
|
+
} catch (error) {
|
|
291
|
+
console.error('QR Scan Error:', error);
|
|
292
|
+
}
|
|
293
|
+
};
|
|
294
|
+
const codeScanner = useCodeScanner({
|
|
295
|
+
codeTypes: ['qr', 'ean-13'],
|
|
296
|
+
onCodeScanned: codes => {
|
|
297
|
+
if (isScanning && codes.length > 0) {
|
|
298
|
+
const qrData = codes[0].value;
|
|
299
|
+
setScannedData(qrData);
|
|
300
|
+
setIsScanning(false);
|
|
301
|
+
|
|
302
|
+
// Vibrate on scan (optional)
|
|
303
|
+
Vibration.vibrate(100);
|
|
304
|
+
console.log('Scanned QR Code:', JSON.parse(qrData));
|
|
305
|
+
// Show alert with scanned data
|
|
306
|
+
handleQrData(JSON.parse(qrData));
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
});
|
|
310
|
+
|
|
311
|
+
// useEffect(() => {
|
|
312
|
+
// setLoading(true);
|
|
313
|
+
// nqrAPI.generate({ amount: amount ? amount * 100 : undefined, currency })
|
|
314
|
+
// .then(setQr).catch(e => onError?.(e)).finally(() => setLoading(false));
|
|
315
|
+
// }, []);
|
|
316
|
+
|
|
317
|
+
const renderCamera = () => {
|
|
318
|
+
console.log('Render camera - hasPermission:', hasPermission, 'device:', !!device, 'isActive:', isActive);
|
|
319
|
+
if (hasPermission === null) {
|
|
320
|
+
return /*#__PURE__*/_jsx(CameraPlaceholder, {
|
|
321
|
+
children: /*#__PURE__*/_jsx(PlaceholderText, {
|
|
322
|
+
children: "Checking camera permission..."
|
|
323
|
+
})
|
|
324
|
+
});
|
|
325
|
+
}
|
|
326
|
+
if (!hasPermission) {
|
|
327
|
+
return /*#__PURE__*/_jsxs(CameraPlaceholder, {
|
|
328
|
+
children: [/*#__PURE__*/_jsx(PlaceholderText, {
|
|
329
|
+
children: "Camera permission is required to scan QR codes"
|
|
330
|
+
}), /*#__PURE__*/_jsx(PermissionButton, {
|
|
331
|
+
onPress: requestPermission,
|
|
332
|
+
children: /*#__PURE__*/_jsx(PermissionButtonText, {
|
|
333
|
+
children: "Grant Permission"
|
|
334
|
+
})
|
|
335
|
+
})]
|
|
336
|
+
});
|
|
337
|
+
}
|
|
338
|
+
if (!device) {
|
|
339
|
+
return /*#__PURE__*/_jsx(CameraPlaceholder, {
|
|
340
|
+
children: /*#__PURE__*/_jsx(PlaceholderText, {
|
|
341
|
+
children: "Loading camera..."
|
|
342
|
+
})
|
|
343
|
+
});
|
|
344
|
+
}
|
|
345
|
+
if (!isActive) {
|
|
346
|
+
return /*#__PURE__*/_jsx(CameraPlaceholder, {
|
|
347
|
+
children: /*#__PURE__*/_jsx(PlaceholderText, {
|
|
348
|
+
children: "Initializing camera..."
|
|
349
|
+
})
|
|
350
|
+
});
|
|
351
|
+
}
|
|
352
|
+
return /*#__PURE__*/_jsx(StyledCamera, {
|
|
353
|
+
device: device,
|
|
354
|
+
isActive: true,
|
|
355
|
+
codeScanner: codeScanner,
|
|
356
|
+
enableZoomGesture: true,
|
|
357
|
+
torch: torch ? 'on' : 'off'
|
|
358
|
+
});
|
|
359
|
+
};
|
|
360
|
+
return /*#__PURE__*/_jsxs(Container, {
|
|
361
|
+
children: [/*#__PURE__*/_jsxs(Header, {
|
|
362
|
+
children: [/*#__PURE__*/_jsx(HeaderButton, {
|
|
363
|
+
onPress: onClose,
|
|
364
|
+
children: /*#__PURE__*/_jsx(Ionicons, {
|
|
365
|
+
name: "close",
|
|
366
|
+
size: 24
|
|
367
|
+
})
|
|
368
|
+
}), /*#__PURE__*/_jsxs(HeaderCenter, {
|
|
369
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
370
|
+
style: {
|
|
371
|
+
fontWeight: 'bold',
|
|
372
|
+
fontSize: 16,
|
|
373
|
+
color: '#FFF'
|
|
374
|
+
},
|
|
375
|
+
children: "QRIS"
|
|
376
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
377
|
+
style: {
|
|
378
|
+
fontSize: 10,
|
|
379
|
+
color: '#FFF'
|
|
380
|
+
},
|
|
381
|
+
children: "QB Code Standar"
|
|
382
|
+
})]
|
|
383
|
+
}), /*#__PURE__*/_jsxs(HeaderRight, {
|
|
384
|
+
children: [/*#__PURE__*/_jsx(HeaderButton, {
|
|
385
|
+
onPress: scanQrFromGallery,
|
|
386
|
+
children: /*#__PURE__*/_jsx(Ionicons, {
|
|
387
|
+
name: "image-outline",
|
|
388
|
+
size: 22
|
|
389
|
+
})
|
|
390
|
+
}), /*#__PURE__*/_jsx(HeaderButton, {
|
|
391
|
+
children: /*#__PURE__*/_jsx(Ionicons, {
|
|
392
|
+
name: "settings-outline",
|
|
393
|
+
size: 22
|
|
394
|
+
})
|
|
395
|
+
})]
|
|
396
|
+
})]
|
|
397
|
+
}), /*#__PURE__*/_jsxs(CameraContainer, {
|
|
398
|
+
onLayout: () => setLayoutReady(true),
|
|
399
|
+
children: [renderCamera(), hasPermission && device && isActive && /*#__PURE__*/_jsxs(ScanOverlay, {
|
|
400
|
+
pointerEvents: "none",
|
|
401
|
+
children: [/*#__PURE__*/_jsxs(ScanFrame, {
|
|
402
|
+
children: [/*#__PURE__*/_jsx(CornerBorder, {
|
|
403
|
+
position: "topLeft"
|
|
404
|
+
}), /*#__PURE__*/_jsx(CornerBorder, {
|
|
405
|
+
position: "topRight"
|
|
406
|
+
}), /*#__PURE__*/_jsx(CornerBorder, {
|
|
407
|
+
position: "bottomLeft"
|
|
408
|
+
}), /*#__PURE__*/_jsx(CornerBorder, {
|
|
409
|
+
position: "bottomRight"
|
|
410
|
+
}), /*#__PURE__*/_jsx(Animated.View, {
|
|
411
|
+
style: [styles.scanningLine, {
|
|
412
|
+
transform: [{
|
|
413
|
+
translateX: lineAnim
|
|
414
|
+
}]
|
|
415
|
+
}]
|
|
416
|
+
})]
|
|
417
|
+
}), /*#__PURE__*/_jsx(ScanInstructionText, {
|
|
418
|
+
children: isScanning ? 'Point camera at QR code' : 'QR Code Detected!'
|
|
419
|
+
})]
|
|
420
|
+
}), scannedData && /*#__PURE__*/_jsx(ScannedDataContainer, {
|
|
421
|
+
children: /*#__PURE__*/_jsxs(ScannedDataText, {
|
|
422
|
+
children: ["Scanned: ", scannedData]
|
|
423
|
+
})
|
|
424
|
+
})]
|
|
425
|
+
})]
|
|
426
|
+
});
|
|
427
|
+
}
|
|
428
|
+
const qrSize = width * 0.75;
|
|
429
|
+
const styles = StyleSheet.create({
|
|
430
|
+
scanningLine: {
|
|
431
|
+
height: qrSize,
|
|
432
|
+
width: 2,
|
|
433
|
+
backgroundColor: '#10b981',
|
|
434
|
+
position: 'absolute',
|
|
435
|
+
top: 0,
|
|
436
|
+
left: 0,
|
|
437
|
+
borderRadius: 1
|
|
438
|
+
}
|
|
439
|
+
});
|
|
440
|
+
//# sourceMappingURL=NQRSubScreen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useEffect","useState","View","Text","StyleSheet","TouchableOpacity","Dimensions","Animated","Easing","Alert","Vibration","Linking","Camera","useCameraDevice","useCodeScanner","styled","launchImageLibrary","QRKit","Ionicons","useIsForeground","jsx","_jsx","jsxs","_jsxs","width","height","get","Container","Header","HeaderButton","HeaderCenter","HeaderRight","CameraContainer","StyledCamera","CameraPlaceholder","PlaceholderText","PermissionButton","PermissionButtonText","ScanOverlay","ScanOverlays","ScanFrame","CornerBorder","props","position","ScanLineContainer","ScanLine","ScanInstructionText","ScannedDataContainer","ScannedDataText","NQRSubScreen","amount","currency","onClose","onProcessTransaction","onError","hasPermission","setHasPermission","scannedData","setScannedData","isScanning","setIsScanning","torch","setTorch","layoutReady","setLayoutReady","isActive","setIsActive","isForeground","lineAnim","useRef","Value","current","lineWidth","device","physicalDevices","checkCameraPermission","loop","sequence","timing","toValue","qrSize","duration","easing","inOut","linear","useNativeDriver","start","timer","setTimeout","clearTimeout","undefined","permission","getCameraPermissionStatus","console","log","newPermission","requestCameraPermission","error","requestPermission","alert","text","style","onPress","openSettings","handleQrData","data","payload","accountNo","bank","bankName","accountDetail","accountName","channel","remark","description","scanQrFromGallery","result","mediaType","quality","didCancel","assets","uri","imageUri","barcodes","decodeQR","success","vibrate","JSON","parse","message","codeScanner","codeTypes","onCodeScanned","codes","length","qrData","value","renderCamera","children","enableZoomGesture","name","size","fontWeight","fontSize","color","onLayout","pointerEvents","styles","scanningLine","transform","translateX","create","backgroundColor","top","left","borderRadius"],"sourceRoot":"../../../../../../src","sources":["ui/screens/sub/sendPayment/NQRSubScreen.tsx"],"mappings":"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","ignoreList":[]}
|
package/lib/module/ui/screens/sub/{ProximitySubScreen.js → sendPayment/ProximitySubScreen.js}
RENAMED
|
@@ -3,13 +3,10 @@
|
|
|
3
3
|
import React, { useState, useEffect, useRef } from 'react';
|
|
4
4
|
import styled from 'styled-components/native';
|
|
5
5
|
import Svg, { Path } from "react-native-svg";
|
|
6
|
-
import { View, Text, TouchableOpacity,
|
|
7
|
-
import
|
|
8
|
-
import {
|
|
9
|
-
import NearbyUsersService from "../../../engine/NearbyUsersService.js";
|
|
10
|
-
import { PulseAnimation } from "../../components/PulseAnimation.js";
|
|
6
|
+
import { View, Text, TouchableOpacity, Animated, Easing } from 'react-native';
|
|
7
|
+
import NearbyUsersService from "../../../../engine/NearbyUsersService.js";
|
|
8
|
+
import { PulseAnimation } from "../../../components/PulseAnimation.js";
|
|
11
9
|
import Ionicons from 'react-native-vector-icons/Ionicons';
|
|
12
|
-
import LoadingAnimation from "../../components/LoadingAnimation/index.js";
|
|
13
10
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
14
11
|
const Container = styled(View)`
|
|
15
12
|
flex: 1;
|
|
@@ -262,8 +259,8 @@ const ProximityIcon = ({
|
|
|
262
259
|
export function ProximitySubScreen({
|
|
263
260
|
amount,
|
|
264
261
|
currency,
|
|
265
|
-
|
|
266
|
-
|
|
262
|
+
onClose,
|
|
263
|
+
onProcessTransaction,
|
|
267
264
|
onError
|
|
268
265
|
}) {
|
|
269
266
|
const [nearbyUsers, setNearbyUsers] = useState([]);
|
|
@@ -283,32 +280,17 @@ export function ProximitySubScreen({
|
|
|
283
280
|
};
|
|
284
281
|
const handlePayment = async selected => {
|
|
285
282
|
if (!selected) return;
|
|
286
|
-
setLoading(true);
|
|
287
283
|
try {
|
|
288
|
-
const
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
amount: amount * 100,
|
|
292
|
-
narration: 'Proximity payment'
|
|
293
|
-
});
|
|
294
|
-
onSuccess?.({
|
|
295
|
-
id: result.reference,
|
|
296
|
-
reference: result.reference,
|
|
297
|
-
type: 'debit',
|
|
284
|
+
const payload = {
|
|
285
|
+
amount: amount,
|
|
286
|
+
currency: currency,
|
|
298
287
|
channel: 'proximity',
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
accountName: selected.displayName
|
|
304
|
-
},
|
|
305
|
-
createdAt: result.createdAt
|
|
306
|
-
});
|
|
307
|
-
onDone();
|
|
288
|
+
narration: `Send ${currency}${amount} to ${selected.displayName}`,
|
|
289
|
+
recipient: selected
|
|
290
|
+
};
|
|
291
|
+
onProcessTransaction?.(payload);
|
|
308
292
|
} catch (e) {
|
|
309
293
|
onError?.(e);
|
|
310
|
-
} finally {
|
|
311
|
-
setLoading(false);
|
|
312
294
|
}
|
|
313
295
|
};
|
|
314
296
|
useEffect(() => {
|
|
@@ -337,8 +319,14 @@ export function ProximitySubScreen({
|
|
|
337
319
|
};
|
|
338
320
|
}, [scanning]);
|
|
339
321
|
return /*#__PURE__*/_jsxs(Container, {
|
|
340
|
-
children: [
|
|
341
|
-
children: [/*#__PURE__*/
|
|
322
|
+
children: [/*#__PURE__*/_jsxs(Header, {
|
|
323
|
+
children: [/*#__PURE__*/_jsx(HeaderButton, {
|
|
324
|
+
onPress: onClose,
|
|
325
|
+
children: /*#__PURE__*/_jsx(Ionicons, {
|
|
326
|
+
name: "close",
|
|
327
|
+
size: 24
|
|
328
|
+
})
|
|
329
|
+
}), /*#__PURE__*/_jsxs(HeaderCenter, {
|
|
342
330
|
children: [/*#__PURE__*/_jsx(Text, {
|
|
343
331
|
style: {
|
|
344
332
|
fontWeight: 'bold',
|
|
@@ -419,83 +407,4 @@ export function ProximitySubScreen({
|
|
|
419
407
|
})]
|
|
420
408
|
});
|
|
421
409
|
}
|
|
422
|
-
const st = StyleSheet.create({
|
|
423
|
-
wrap: {
|
|
424
|
-
flex: 1,
|
|
425
|
-
padding: S.lg
|
|
426
|
-
},
|
|
427
|
-
back: {
|
|
428
|
-
color: C.brand,
|
|
429
|
-
fontSize: F.md,
|
|
430
|
-
fontWeight: '600',
|
|
431
|
-
marginBottom: S.md
|
|
432
|
-
},
|
|
433
|
-
title: {
|
|
434
|
-
fontSize: F.xl,
|
|
435
|
-
fontWeight: '800',
|
|
436
|
-
color: C.ink,
|
|
437
|
-
marginBottom: S.lg
|
|
438
|
-
},
|
|
439
|
-
peerCard: {
|
|
440
|
-
flexDirection: 'row',
|
|
441
|
-
alignItems: 'center',
|
|
442
|
-
backgroundColor: C.surface,
|
|
443
|
-
borderRadius: R.lg,
|
|
444
|
-
padding: S.md,
|
|
445
|
-
borderWidth: 2,
|
|
446
|
-
borderColor: 'transparent'
|
|
447
|
-
},
|
|
448
|
-
peerSelected: {
|
|
449
|
-
borderColor: C.brand,
|
|
450
|
-
backgroundColor: '#EEF4FF'
|
|
451
|
-
},
|
|
452
|
-
avatar: {
|
|
453
|
-
width: 44,
|
|
454
|
-
height: 44,
|
|
455
|
-
borderRadius: 22,
|
|
456
|
-
backgroundColor: C.brand,
|
|
457
|
-
justifyContent: 'center',
|
|
458
|
-
alignItems: 'center',
|
|
459
|
-
marginRight: S.md
|
|
460
|
-
},
|
|
461
|
-
avatarText: {
|
|
462
|
-
color: C.white,
|
|
463
|
-
fontWeight: '800',
|
|
464
|
-
fontSize: F.lg
|
|
465
|
-
},
|
|
466
|
-
peerName: {
|
|
467
|
-
fontSize: F.md,
|
|
468
|
-
fontWeight: '700',
|
|
469
|
-
color: C.ink
|
|
470
|
-
},
|
|
471
|
-
peerBank: {
|
|
472
|
-
fontSize: F.sm,
|
|
473
|
-
color: C.muted
|
|
474
|
-
},
|
|
475
|
-
dist: {
|
|
476
|
-
fontSize: F.xs,
|
|
477
|
-
color: C.brand
|
|
478
|
-
},
|
|
479
|
-
check: {
|
|
480
|
-
color: C.brand,
|
|
481
|
-
fontWeight: '800'
|
|
482
|
-
},
|
|
483
|
-
empty: {
|
|
484
|
-
textAlign: 'center',
|
|
485
|
-
color: C.muted,
|
|
486
|
-
padding: S.xl
|
|
487
|
-
},
|
|
488
|
-
footer: {
|
|
489
|
-
backgroundColor: C.surface,
|
|
490
|
-
borderRadius: R.lg,
|
|
491
|
-
padding: S.lg,
|
|
492
|
-
marginTop: S.md
|
|
493
|
-
},
|
|
494
|
-
footerText: {
|
|
495
|
-
fontSize: F.md,
|
|
496
|
-
color: C.ink,
|
|
497
|
-
fontWeight: '600',
|
|
498
|
-
marginBottom: S.md
|
|
499
|
-
}
|
|
500
|
-
});
|
|
501
410
|
//# sourceMappingURL=ProximitySubScreen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useState","useEffect","useRef","styled","Svg","Path","View","Text","TouchableOpacity","Animated","Easing","NearbyUsersService","PulseAnimation","Ionicons","jsx","_jsx","jsxs","_jsxs","Container","Header","HeaderButton","HeaderCenter","HeaderRight","QuickLinksContainer","QuickLinksContainerWithDevices","QuickLinksIcon","QuickLinksText","DeviceCard","DeviceInfo","DeviceName","DeviceSignal","PayButton","PayButtonText","ScrollContainer","ScrollView","ContentContainer","BluetoothIconContainer","LCAnimationContainer","LCIconContainer","LCIcon","StatusTextContainer","StatusText","StatusSubText","ConnectionStatusBadge","props","connected","ConnectionStatusText","BluetoothIcon","color","size","width","height","strokeWidth","viewBox","fill","children","d","stroke","strokeLinecap","strokeLinejoin","fillRule","clipRule","BluetoothScanningIcon","ProximityIcon","ProximitySubScreen","amount","currency","onClose","onProcessTransaction","onError","nearbyUsers","setNearbyUsers","loading","setLoading","scanning","setScanning","iconScale","Value","current","animationRef","handleScan","users","getNearbyUsers","error","console","handlePayment","selected","payload","channel","narration","displayName","recipient","e","loop","sequence","timing","toValue","duration","easing","inOut","ease","useNativeDriver","start","stop","stopAnimation","setValue","onPress","name","style","fontWeight","fontSize","length","transform","scale","marginTop","showsVerticalScrollIndicator","map","user","userName","appName","Math","round","distance","activeOpacity","userId"],"sourceRoot":"../../../../../../src","sources":["ui/screens/sub/sendPayment/ProximitySubScreen.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,QAAQ,EAAEC,SAAS,EAAEC,MAAM,QAAQ,OAAO;AAC1D,OAAOC,MAAM,MAAM,0BAA0B;AAC7C,OAAOC,GAAG,IAAIC,IAAI,QAAQ,kBAAkB;AAC5C,SAASC,IAAI,EAAEC,IAAI,EAAEC,gBAAgB,EAAcC,QAAQ,EAAEC,MAAM,QAAQ,cAAc;AAGzF,OAAOC,kBAAkB,MAAM,0CAAuC;AACtE,SAASC,cAAc,QAAQ,uCAAoC;AACnE,OAAOC,QAAQ,MAAM,oCAAoC;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAI1D,MAAMC,SAAS,GAAGf,MAAM,CAACG,IAAI,CAAC;AAC9B;AACA;AACA,CAAC;AAED,MAAMa,MAAM,GAAGhB,MAAM,CAACG,IAAI,CAAC;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAED,MAAMc,YAAY,GAAGjB,MAAM,CAACK,gBAAgB,CAAC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAED,MAAMa,YAAY,GAAGlB,MAAM,CAACG,IAAI,CAAC;AACjC;AACA;AACA;AACA,CAAC;AAED,MAAMgB,WAAW,GAAGnB,MAAM,CAACG,IAAI,CAAC;AAChC;AACA;AACA;AACA,CAAC;AAED,MAAMiB,mBAAmB,GAAGpB,MAAM,CAACG,IAAI;AACvC;AACA;AACA,CAAC;AAED,MAAMkB,8BAA8B,GAAGrB,MAAM,CAACG,IAAI;AAClD;AACA;AACA;AACA,CAAC;AAED,MAAMmB,cAAc,GAAGtB,MAAM,CAACK,gBAAgB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAED,MAAMkB,cAAc,GAAGvB,MAAM,CAACI,IAAI;AAClC;AACA;AACA,CAAC;AAED,OAAO,MAAMoB,UAAU,GAAGxB,MAAM,CAACG,IAAI;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAED,OAAO,MAAMsB,UAAU,GAAGzB,MAAM,CAACG,IAAI;AACrC;AACA,CAAC;AAED,OAAO,MAAMuB,UAAU,GAAG1B,MAAM,CAACI,IAAI;AACrC;AACA;AACA;AACA;AACA,CAAC;AAED,OAAO,MAAMuB,YAAY,GAAG3B,MAAM,CAACI,IAAI;AACvC;AACA;AACA,CAAC;AAED,OAAO,MAAMwB,SAAS,GAAG5B,MAAM,CAACK,gBAAgB;AAChD;AACA;AACA;AACA,CAAC;AAED,OAAO,MAAMwB,aAAa,GAAG7B,MAAM,CAACI,IAAI;AACxC;AACA;AACA;AACA,CAAC;AAED,MAAM0B,eAAe,GAAG9B,MAAM,CAAC+B,UAAU;AACzC;AACA,CAAC;AAED,MAAMC,gBAAgB,GAAGhC,MAAM,CAACG,IAAI;AACpC;AACA;AACA,CAAC;AAED,MAAM8B,sBAAsB,GAAGjC,MAAM,CAACG,IAAI;AAC1C;AACA;AACA,CAAC;AAED,MAAM+B,oBAAoB,GAAGlC,MAAM,CAACG,IAAI;AACxC;AACA;AACA;AACA,CAAC;AAED,MAAMgC,eAAe,GAAGnC,MAAM,CAACM,QAAQ,CAACH,IAAI,CAAC;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAED,MAAMiC,MAAM,GAAGpC,MAAM,CAACI,IAAI;AAC1B;AACA,CAAC;AAED,MAAMiC,mBAAmB,GAAGrC,MAAM,CAACG,IAAI;AACvC;AACA;AACA,CAAC;AAED,MAAMmC,UAAU,GAAGtC,MAAM,CAACI,IAAI;AAC9B;AACA;AACA;AACA;AACA;AACA,CAAC;AAED,MAAMmC,aAAa,GAAGvC,MAAM,CAACI,IAAI;AACjC;AACA;AACA;AACA,CAAC;AAED,MAAMoC,qBAAqB,GAAGxC,MAAM,CAACG,IAA4B;AACjE,sBAAsBsC,KAAK,IAAIA,KAAK,CAACC,SAAS,GAAG,SAAS,GAAG,SAAS;AACtE;AACA;AACA;AACA,CAAC;AAED,MAAMC,oBAAoB,GAAG3C,MAAM,CAACI,IAA4B;AAChE;AACA;AACA,WAAWqC,KAAK,IAAIA,KAAK,CAACC,SAAS,GAAG,SAAS,GAAG,SAAS;AAC3D,CAAC;AAGD,MAAME,aAAa,GAAEA,CAAC;EAAEC,KAAK,GAAG,MAAM;EAAEC,IAAI,GAAG;AAAG,CAAC,kBAC/ChC,KAAA,CAACb,GAAG;EAAC8C,KAAK,EAAED,IAAK;EAACE,MAAM,EAAEF,IAAK;EAACG,WAAW,EAAC,KAAK;EAACC,OAAO,EAAC,WAAW;EAACC,IAAI,EAAC,MAAM;EAACN,KAAK,EAAEA,KAAM;EAAAO,QAAA,gBAC3FxC,IAAA,CAACV,IAAI;IAACmD,CAAC,EAAC,qIAAqI;IAACC,MAAM,EAAC,MAAM;IAACL,WAAW,EAAC,KAAK;IAACM,aAAa,EAAC,OAAO;IAACC,cAAc,EAAC;EAAO,CAAE,CAAC,eAC7N5C,IAAA,CAACV,IAAI;IAACmD,CAAC,EAAC,qIAAqI;IAACC,MAAM,EAAC,MAAM;IAACL,WAAW,EAAC,KAAK;IAACM,aAAa,EAAC,OAAO;IAACC,cAAc,EAAC;EAAO,CAAE,CAAC,eAC7N5C,IAAA,CAACV,IAAI;IAACmD,CAAC,EAAC,sIAAsI;IAACC,MAAM,EAAC,MAAM;IAACL,WAAW,EAAC,KAAK;IAACM,aAAa,EAAC,OAAO;IAACC,cAAc,EAAC;EAAO,CAAE,CAAC,eAC9N5C,IAAA,CAACV,IAAI;IAACuD,QAAQ,EAAC,SAAS;IAACC,QAAQ,EAAC,SAAS;IAACL,CAAC,EAAC,yJAAyJ;IAACF,IAAI,EAAC;EAAM,CAAE,CAAC,eACtNvC,IAAA,CAACV,IAAI;IAACmD,CAAC,EAAC,mSAAmS;IAACF,IAAI,EAAC;EAAM,CAAE,CAAC;AAAA,CACzT,CACR;AAGD,MAAMQ,qBAAqB,GAAGA,CAAC;EAAEd,KAAK,GAAG,MAAM;EAAEC,IAAI,GAAG;AAAE,CAAC,kBACzDlC,IAAA,CAACX,GAAG;EAAC8C,KAAK,EAAED,IAAK;EAACE,MAAM,EAAEF,IAAK;EAACG,WAAW,EAAC,KAAK;EAACC,OAAO,EAAC,WAAW;EAACC,IAAI,EAAC,MAAM;EAACN,KAAK,EAAEA,KAAM;EAAAO,QAAA,eAC7FxC,IAAA,CAACV,IAAI;IAACmD,CAAC,EAAC,iDAAiD;IAACC,MAAM,EAAET,KAAM;IAACI,WAAW,EAAC,KAAK;IAACM,aAAa,EAAC,OAAO;IAACC,cAAc,EAAC;EAAO,CAAE;AAAC,CACvI,CACN;AAED,MAAMI,aAAa,GAAEA,CAAC;EAAEf,KAAK,GAAG,MAAM;EAAEC,IAAI,GAAG;AAAG,CAAC,kBAC/ChC,KAAA,CAACb,GAAG;EAAC8C,KAAK,EAAED,IAAK;EAACE,MAAM,EAAEF,IAAK;EAACG,WAAW,EAAC,KAAK;EAACC,OAAO,EAAC,WAAW;EAACC,IAAI,EAAC,MAAM;EAACN,KAAK,EAAEA,KAAM;EAAAO,QAAA,gBAC7FxC,IAAA,CAACV,IAAI;IAACmD,CAAC,EAAC,mHAAmH;IAACC,MAAM,EAAET,KAAM;IAACI,WAAW,EAAC,KAAK;IAACM,aAAa,EAAC,OAAO;IAACC,cAAc,EAAC;EAAO,CAAC,CAAC,eAC3M5C,IAAA,CAACV,IAAI;IAACmD,CAAC,EAAC,yHAAyH;IAACF,IAAI,EAAEN,KAAM;IAACS,MAAM,EAAET,KAAM;IAACI,WAAW,EAAC,KAAK;IAACM,aAAa,EAAC,OAAO;IAACC,cAAc,EAAC;EAAO,CAAC,CAAC,eAC9N5C,IAAA,CAACV,IAAI;IAACmD,CAAC,EAAC,kBAAkB;IAACC,MAAM,EAAET,KAAM;IAACI,WAAW,EAAC,KAAK;IAACM,aAAa,EAAC,OAAO;IAACC,cAAc,EAAC;EAAO,CAAC,CAAC,eAC1G5C,IAAA,CAACV,IAAI;IAACmD,CAAC,EAAC,sBAAsB;IAACC,MAAM,EAAET,KAAM;IAACI,WAAW,EAAC,KAAK;IAACM,aAAa,EAAC,OAAO;IAACC,cAAc,EAAC;EAAO,CAAC,CAAC;AAAA,CAC3G,CACR;AAGD,OAAO,SAASK,kBAAkBA,CAAC;EACjCC,MAAM;EACNC,QAAQ;EACRC,OAAO;EACPC,oBAAoB;EACpBC;AAAe,CAAC,EAAE;EAElB,MAAM,CAACC,WAAW,EAAEC,cAAc,CAAC,GAAGvE,QAAQ,CAAC,EAAE,CAAC;EAClD,MAAM,CAACwE,OAAO,EAAEC,UAAU,CAAC,GAAGzE,QAAQ,CAAC,KAAK,CAAC;EAC7C,MAAM,CAAC0E,QAAQ,EAAEC,WAAW,CAAC,GAAG3E,QAAQ,CAAC,KAAK,CAAC;EAC/C,MAAM4E,SAAS,GAAG1E,MAAM,CAAC,IAAIO,QAAQ,CAACoE,KAAK,CAAC,CAAC,CAAC,CAAC,CAACC,OAAO;EACvD,MAAMC,YAAY,GAAG7E,MAAM,CAAqC,IAAI,CAAC;EAErE,MAAM8E,UAAU,GAAG,MAAAA,CAAA,KAAY;IAC3B,IAAI;MACA,MAAMC,KAAU,GAAG,MAAMtE,kBAAkB,CAACuE,cAAc,CAAC,CAAC;MAC5DX,cAAc,CAACU,KAAK,CAAC;IACzB,CAAC,CAAC,OAAOE,KAAK,EAAE;MACZC,OAAO,CAACD,KAAK,CAAC,8BAA8B,EAAEA,KAAK,CAAC;IACxD,CAAC,SAAS;MACNR,WAAW,CAAC,KAAK,CAAC;IACtB;EACJ,CAAC;EAED,MAAMU,aAAa,GAAG,MAAOC,QAAa,IAAK;IAC7C,IAAI,CAACA,QAAQ,EAAE;IACf,IAAI;MACF,MAAMC,OAA6B,GAAG;QACpCtB,MAAM,EAAEA,MAAM;QACdC,QAAQ,EAAEA,QAAQ;QAClBsB,OAAO,EAAE,WAAW;QACpBC,SAAS,EAAE,QAAQvB,QAAQ,GAAGD,MAAM,OAAOqB,QAAQ,CAACI,WAAW,EAAE;QACjEC,SAAS,EAAEL;MACb,CAAC;MAEDlB,oBAAoB,GAAGmB,OAAO,CAAC;IACjC,CAAC,CAAC,OAAOK,CAAC,EAAE;MAAEvB,OAAO,GAAGuB,CAAY,CAAC;IAAE;EACzC,CAAC;EAED3F,SAAS,CAAC,MAAM;IACd,IAAIyE,QAAQ,EAAE;MACZM,UAAU,CAAC,CAAC;MACZD,YAAY,CAACD,OAAO,GAAGrE,QAAQ,CAACoF,IAAI,CAClCpF,QAAQ,CAACqF,QAAQ,CAAC,CAChBrF,QAAQ,CAACsF,MAAM,CAACnB,SAAS,EAAE;QACzBoB,OAAO,EAAE,GAAG;QACZC,QAAQ,EAAE,IAAI;QACdC,MAAM,EAAExF,MAAM,CAACyF,KAAK,CAACzF,MAAM,CAAC0F,IAAI,CAAC;QACjCC,eAAe,EAAE;MACnB,CAAC,CAAC,EACF5F,QAAQ,CAACsF,MAAM,CAACnB,SAAS,EAAE;QACzBoB,OAAO,EAAE,CAAC;QACVC,QAAQ,EAAE,IAAI;QACdC,MAAM,EAAExF,MAAM,CAACyF,KAAK,CAACzF,MAAM,CAAC0F,IAAI,CAAC;QACjCC,eAAe,EAAE;MACnB,CAAC,CAAC,CACH,CACH,CAAC;MAEDtB,YAAY,CAACD,OAAO,CAACwB,KAAK,CAAC,CAAC;IAC9B,CAAC,MAAM;MACL;MACAvB,YAAY,CAACD,OAAO,EAAEyB,IAAI,CAAC,CAAC;MAC5B3B,SAAS,CAAC4B,aAAa,CAAC,CAAC;MACzB5B,SAAS,CAAC6B,QAAQ,CAAC,CAAC,CAAC;IACvB;IAEA,OAAO,MAAM;MACT1B,YAAY,CAACD,OAAO,EAAEyB,IAAI,CAAC,CAAC;IAChC,CAAC;EACH,CAAC,EAAE,CAAC7B,QAAQ,CAAC,CAAC;EAEd,oBACEzD,KAAA,CAACC,SAAS;IAAAqC,QAAA,gBACRtC,KAAA,CAACE,MAAM;MAAAoC,QAAA,gBACLxC,IAAA,CAACK,YAAY;QAACsF,OAAO,EAAEvC,OAAQ;QAAAZ,QAAA,eAC7BxC,IAAA,CAACF,QAAQ;UAAC8F,IAAI,EAAC,OAAO;UAAC1D,IAAI,EAAE;QAAG,CAAE;MAAC,CACvB,CAAC,eACfhC,KAAA,CAACI,YAAY;QAAAkC,QAAA,gBACXxC,IAAA,CAACR,IAAI;UAACqG,KAAK,EAAE;YAAEC,UAAU,EAAE,MAAM;YAAEC,QAAQ,EAAE,EAAE;YAAE9D,KAAK,EAAC;UAAO,CAAE;UAAAO,QAAA,EAAC;QAAS,CAAM,CAAC,eACjFxC,IAAA,CAACR,IAAI;UAACqG,KAAK,EAAE;YAAEE,QAAQ,EAAE,EAAE;YAAE9D,KAAK,EAAE;UAAO,CAAE;UAAAO,QAAA,EAAC;QAAQ,CAAM,CAAC;MAAA,CACjD,CAAC,eAEfxC,IAAA,CAACO,WAAW;QAAAiC,QAAA,eACVxC,IAAA,CAACK,YAAY;UAAAmC,QAAA,eACTxC,IAAA,CAACF,QAAQ;YAAC8F,IAAI,EAAC,mBAAmB;YAAC1D,IAAI,EAAE;UAAG,CAAE;QAAC,CACrC;MAAC,CACJ,CAAC;IAAA,CACR,CAAC,EAER,CAACyB,QAAQ,IAAI,CAACJ,WAAW,CAACyC,MAAM,iBAC/B9F,KAAA,CAACM,mBAAmB;MAAAgC,QAAA,gBAClBxC,IAAA,CAACU,cAAc;QAACiF,OAAO,EAAEA,CAAA,KAAI/B,WAAW,CAAC,IAAI,CAAE;QAAApB,QAAA,eAC/CxC,IAAA,CAACgD,aAAa;UAACd,IAAI,EAAE,EAAG;UAACD,KAAK,EAAC;QAAM,CAAE;MAAC,CACxB,CAAC,eACjBjC,IAAA,CAACW,cAAc;QAAA6B,QAAA,EAAC;MAAU,CAAgB,CAAC,eAC3CxC,IAAA,CAACR,IAAI;QAACqG,KAAK,EAAE;UAAEE,QAAQ,EAAE,EAAE;UAAE9D,KAAK,EAAE;QAAO,CAAE;QAAAO,QAAA,EAAC;MAE9C,CAAM,CAAC;IAAA,CACY,CACtB,EAEAmB,QAAQ,iBACPzD,KAAA,CAACoB,oBAAoB;MAAAkB,QAAA,gBACnBxC,IAAA,CAACH,cAAc,IAAE,CAAC,eAClBG,IAAA,CAACuB,eAAe;QAACsE,KAAK,EAAE;UAAEI,SAAS,EAAE,CAAC;YAAEC,KAAK,EAAErC;UAAU,CAAC,CAAC;UAAEsC,SAAS,EAAE;QAAG,CAAE;QAAA3D,QAAA,eACzExC,IAAA,CAACwB,MAAM;UAAAgB,QAAA,EAAC;QAAE,CAAQ;MAAC,CACN,CAAC,eAElBxC,IAAA,CAACyB,mBAAmB;QAAAe,QAAA,eAChBxC,IAAA,CAAC0B,UAAU;UAAAc,QAAA,EAAC;QAEZ,CAAY;MAAC,CAEI,CAAC;IAAA,CACF,CAEvB,EAEE,CAACmB,QAAQ,IAAIJ,WAAW,CAACyC,MAAM,GAAG,CAAC,iBAChChG,IAAA,CAACkB,eAAe;MAACkF,4BAA4B,EAAE,KAAM;MAAA5D,QAAA,eACnDtC,KAAA,CAACkB,gBAAgB;QAAAoB,QAAA,gBACjBxC,IAAA,CAACS,8BAA8B;UAAA+B,QAAA,eAC7BtC,KAAA,CAACS,cAAc;YAAA6B,QAAA,GAAC,QAAM,EAACe,WAAW,CAACyC,MAAM,EAAC,UAAQ;UAAA,CAAgB;QAAC,CACrC,CAAC,EAChCzC,WAAW,CAAC8C,GAAG,CAAEC,IAAS,iBACzBpG,KAAA,CAACU,UAAU;UAAA4B,QAAA,gBACXtC,KAAA,CAACW,UAAU;YAAA2B,QAAA,gBACTtC,KAAA,CAACY,UAAU;cAAA0B,QAAA,GACV8D,IAAI,CAACC,QAAQ,IAAID,IAAI,CAACV,IAAI,EAC1BU,IAAI,CAACE,OAAO;YAAA,CACD,CAAC,eACbtG,KAAA,CAACa,YAAY;cAAAyB,QAAA,GAAC,UACN,EAACiE,IAAI,CAACC,KAAK,CAACJ,IAAI,CAACK,QAAQ,CAAC,EAAC,QACnC;YAAA,CAAc,CAAC;UAAA,CACL,CAAC,eACb3G,IAAA,CAACgB,SAAS;YACN2E,OAAO,EAAEA,CAAA,KAAMrB,aAAa,CAACgC,IAAI,CAAE;YACnCM,aAAa,EAAE,GAAI;YAAApE,QAAA,eAEnBxC,IAAA,CAACiB,aAAa;cAAAuB,QAAA,EAAC;YAAG,CAAe;UAAC,CAC3B,CAAC;QAAA,GAfK8D,IAAI,CAACO,MAgBV,CACb,CAAC;MAAA,CACgB;IAAC,CACJ,CAEpB;EAAA,CACM,CAAC;AAEhB","ignoreList":[]}
|