omnipay-reactnative-sdk 1.2.3-beta.9 → 1.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/README.md +14 -64
  2. package/android/build.gradle +4 -15
  3. package/android/src/main/java/com/omniretail/omnipay/OmnipayActivityPackage.java +0 -5
  4. package/lib/commonjs/components/OmnipayProvider.js +98 -20
  5. package/lib/commonjs/components/OmnipayProvider.js.map +1 -1
  6. package/lib/commonjs/utils/buildUrlWithMetadata.js +14 -0
  7. package/lib/commonjs/utils/buildUrlWithMetadata.js.map +1 -0
  8. package/lib/module/components/OmnipayProvider.js +99 -21
  9. package/lib/module/components/OmnipayProvider.js.map +1 -1
  10. package/lib/module/components/OmnipayView.js.map +1 -1
  11. package/lib/module/components/views/BvnVerification.js.map +1 -1
  12. package/lib/module/components/views/PaylaterAgreement.js.map +1 -1
  13. package/lib/module/components/views/Registration.js.map +1 -1
  14. package/lib/module/utils/buildUrlWithMetadata.js +8 -0
  15. package/lib/module/utils/buildUrlWithMetadata.js.map +1 -0
  16. package/lib/typescript/components/OmnipayProvider.d.ts +5 -2
  17. package/lib/typescript/components/OmnipayProvider.d.ts.map +1 -1
  18. package/lib/typescript/hooks/useOmnipay.d.ts +4 -1
  19. package/lib/typescript/hooks/useOmnipay.d.ts.map +1 -1
  20. package/lib/typescript/utils/buildUrlWithMetadata.d.ts +2 -0
  21. package/lib/typescript/utils/buildUrlWithMetadata.d.ts.map +1 -0
  22. package/package.json +12 -29
  23. package/src/components/OmnipayProvider.tsx +154 -31
  24. package/src/components/OmnipayView.tsx +1 -1
  25. package/src/components/views/BvnVerification.tsx +1 -1
  26. package/src/components/views/PaylaterAgreement.tsx +1 -1
  27. package/src/components/views/Registration.tsx +1 -1
  28. package/src/hooks/useOmnipay.tsx +1 -1
  29. package/src/utils/buildUrlWithMetadata.ts +21 -0
  30. package/android/src/main/java/com/omniretail/omnipay/FaceVerificationFrameProcessor.kt +0 -111
  31. package/ios/FaceVerificationFrameProcessor.swift +0 -138
  32. package/ios/FaceVerificationFrameProcessorPlugin.m +0 -4
  33. package/ios/OmnipayReactnativeSdk.m +0 -5
  34. package/ios/OmnipayReactnativeSdk.swift +0 -10
  35. package/ios/omnipay-reactnative-sdk-Bridging-Header.h +0 -8
  36. package/ios/omnipay_reactnative_sdk.h +0 -6
  37. package/lib/commonjs/components/Button.js +0 -68
  38. package/lib/commonjs/components/Button.js.map +0 -1
  39. package/lib/commonjs/components/biometrics/FaceVerification.js +0 -380
  40. package/lib/commonjs/components/biometrics/FaceVerification.js.map +0 -1
  41. package/lib/commonjs/components/biometrics/useFaceVerification.js +0 -85
  42. package/lib/commonjs/components/biometrics/useFaceVerification.js.map +0 -1
  43. package/lib/commonjs/components/biometrics/useFaceVerificationFlow.js +0 -157
  44. package/lib/commonjs/components/biometrics/useFaceVerificationFlow.js.map +0 -1
  45. package/lib/module/components/Button.js +0 -61
  46. package/lib/module/components/Button.js.map +0 -1
  47. package/lib/module/components/biometrics/FaceVerification.js +0 -372
  48. package/lib/module/components/biometrics/FaceVerification.js.map +0 -1
  49. package/lib/module/components/biometrics/useFaceVerification.js +0 -78
  50. package/lib/module/components/biometrics/useFaceVerification.js.map +0 -1
  51. package/lib/module/components/biometrics/useFaceVerificationFlow.js +0 -150
  52. package/lib/module/components/biometrics/useFaceVerificationFlow.js.map +0 -1
  53. package/lib/typescript/components/Button.d.ts +0 -17
  54. package/lib/typescript/components/Button.d.ts.map +0 -1
  55. package/lib/typescript/components/biometrics/FaceVerification.d.ts +0 -9
  56. package/lib/typescript/components/biometrics/FaceVerification.d.ts.map +0 -1
  57. package/lib/typescript/components/biometrics/useFaceVerification.d.ts +0 -38
  58. package/lib/typescript/components/biometrics/useFaceVerification.d.ts.map +0 -1
  59. package/lib/typescript/components/biometrics/useFaceVerificationFlow.d.ts +0 -29
  60. package/lib/typescript/components/biometrics/useFaceVerificationFlow.d.ts.map +0 -1
  61. package/omnipay_reactnative_sdk.podspec +0 -52
  62. package/src/components/Button.tsx +0 -86
  63. package/src/components/biometrics/FaceVerification.tsx +0 -429
  64. package/src/components/biometrics/useFaceVerification.ts +0 -120
  65. package/src/components/biometrics/useFaceVerificationFlow.ts +0 -224
@@ -1,157 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.useFaceVerificationFlow = void 0;
7
- var _react = require("react");
8
- var _useFaceVerification = require("./useFaceVerification");
9
- const DEFAULT_CONFIG = {
10
- stepTimeout: 10000,
11
- // 10 seconds per step
12
- totalTimeout: 60000,
13
- // 1 minute total
14
- confirmationFrames: 5,
15
- // 5 consecutive frames
16
- requiredSteps: ['position_face', 'smile', 'blink', 'turn_left', 'turn_right']
17
- };
18
- const STEP_INSTRUCTIONS = {
19
- position_face: 'Position your face in the center of the frame',
20
- smile: 'Please smile for the camera',
21
- blink: 'Please blink your eyes',
22
- turn_left: 'Slowly turn your head to the left',
23
- turn_right: 'Slowly turn your head to the right',
24
- completed: 'Verification completed successfully!',
25
- failed: 'Verification failed. Please try again.'
26
- };
27
- const useFaceVerificationFlow = (config = {}) => {
28
- const fullConfig = {
29
- ...DEFAULT_CONFIG,
30
- ...config
31
- };
32
- const [state, setState] = (0, _react.useState)({
33
- currentStep: 'position_face',
34
- completedSteps: [],
35
- stepStartTime: Date.now(),
36
- totalStartTime: Date.now(),
37
- isProcessing: false,
38
- progress: 0,
39
- instruction: STEP_INSTRUCTIONS.position_face
40
- });
41
- const [confirmationCount, setConfirmationCount] = (0, _react.useState)(0);
42
-
43
- // Reset verification flow
44
- const resetFlow = (0, _react.useCallback)(() => {
45
- const now = Date.now();
46
- setState({
47
- currentStep: 'position_face',
48
- completedSteps: [],
49
- stepStartTime: now,
50
- totalStartTime: now,
51
- isProcessing: false,
52
- progress: 0,
53
- instruction: STEP_INSTRUCTIONS.position_face
54
- });
55
- setConfirmationCount(0);
56
- }, []);
57
-
58
- // Check if current step is completed based on face detection result
59
- const checkStepCompletion = (0, _react.useCallback)(result => {
60
- if (!result.faceDetected) return false;
61
- switch (state.currentStep) {
62
- case 'position_face':
63
- return _useFaceVerification.FaceVerificationUtils.isFaceCentered(result);
64
- case 'smile':
65
- return _useFaceVerification.FaceVerificationUtils.isConfidentSmile(result);
66
- case 'blink':
67
- return _useFaceVerification.FaceVerificationUtils.isConfidentBlink(result);
68
- case 'turn_left':
69
- return _useFaceVerification.FaceVerificationUtils.isHeadTurnedLeft(result);
70
- case 'turn_right':
71
- return _useFaceVerification.FaceVerificationUtils.isHeadTurnedRight(result);
72
- default:
73
- return false;
74
- }
75
- }, [state.currentStep]);
76
-
77
- // Get next step in sequence
78
- const getNextStep = (0, _react.useCallback)(currentStep => {
79
- const currentIndex = fullConfig.requiredSteps.indexOf(currentStep);
80
- if (currentIndex === -1 || currentIndex === fullConfig.requiredSteps.length - 1) {
81
- return 'completed';
82
- }
83
- const nextStep = fullConfig.requiredSteps[currentIndex + 1];
84
- return nextStep || 'completed';
85
- }, [fullConfig.requiredSteps]);
86
-
87
- // Process face detection result
88
- const processFaceResult = (0, _react.useCallback)(result => {
89
- if (state.currentStep === 'completed' || state.currentStep === 'failed') {
90
- return;
91
- }
92
- const now = Date.now();
93
-
94
- // Check for timeouts
95
- if (now - state.totalStartTime > fullConfig.totalTimeout) {
96
- setState(prev => ({
97
- ...prev,
98
- currentStep: 'failed',
99
- instruction: 'Verification timed out. Please try again.',
100
- error: 'Total verification timeout exceeded'
101
- }));
102
- return;
103
- }
104
- if (now - state.stepStartTime > fullConfig.stepTimeout) {
105
- setState(prev => ({
106
- ...prev,
107
- currentStep: 'failed',
108
- instruction: 'Step timed out. Please try again.',
109
- error: 'Step timeout exceeded'
110
- }));
111
- return;
112
- }
113
-
114
- // Check if current step is completed
115
- const stepCompleted = checkStepCompletion(result);
116
- if (stepCompleted) {
117
- setConfirmationCount(prev => prev + 1);
118
-
119
- // Require multiple consecutive confirmations
120
- if (confirmationCount + 1 >= fullConfig.confirmationFrames) {
121
- const nextStep = getNextStep(state.currentStep);
122
- const newCompletedSteps = [...state.completedSteps, state.currentStep];
123
- const newProgress = newCompletedSteps.length / fullConfig.requiredSteps.length * 100;
124
- setState(prev => ({
125
- ...prev,
126
- currentStep: nextStep,
127
- completedSteps: newCompletedSteps,
128
- stepStartTime: now,
129
- progress: newProgress,
130
- instruction: STEP_INSTRUCTIONS[nextStep],
131
- isProcessing: nextStep === 'completed'
132
- }));
133
- setConfirmationCount(0);
134
- }
135
- } else {
136
- // Reset confirmation count if step not completed
137
- setConfirmationCount(0);
138
- }
139
- }, [state, fullConfig.totalTimeout, fullConfig.stepTimeout, fullConfig.confirmationFrames, fullConfig.requiredSteps.length, confirmationCount, checkStepCompletion, getNextStep]);
140
-
141
- // Auto-reset on mount
142
- (0, _react.useEffect)(() => {
143
- resetFlow();
144
- }, [resetFlow]);
145
- return {
146
- state,
147
- processFaceResult,
148
- resetFlow,
149
- isCompleted: state.currentStep === 'completed',
150
- isFailed: state.currentStep === 'failed',
151
- isActive: state.currentStep !== 'completed' && state.currentStep !== 'failed',
152
- remainingTime: Math.max(0, fullConfig.stepTimeout - (Date.now() - state.stepStartTime)),
153
- totalRemainingTime: Math.max(0, fullConfig.totalTimeout - (Date.now() - state.totalStartTime))
154
- };
155
- };
156
- exports.useFaceVerificationFlow = useFaceVerificationFlow;
157
- //# sourceMappingURL=useFaceVerificationFlow.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_react","require","_useFaceVerification","DEFAULT_CONFIG","stepTimeout","totalTimeout","confirmationFrames","requiredSteps","STEP_INSTRUCTIONS","position_face","smile","blink","turn_left","turn_right","completed","failed","useFaceVerificationFlow","config","fullConfig","state","setState","useState","currentStep","completedSteps","stepStartTime","Date","now","totalStartTime","isProcessing","progress","instruction","confirmationCount","setConfirmationCount","resetFlow","useCallback","checkStepCompletion","result","faceDetected","FaceVerificationUtils","isFaceCentered","isConfidentSmile","isConfidentBlink","isHeadTurnedLeft","isHeadTurnedRight","getNextStep","currentIndex","indexOf","length","nextStep","processFaceResult","prev","error","stepCompleted","newCompletedSteps","newProgress","useEffect","isCompleted","isFailed","isActive","remainingTime","Math","max","totalRemainingTime","exports"],"sourceRoot":"../../../../src","sources":["components/biometrics/useFaceVerificationFlow.ts"],"mappings":"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","ignoreList":[]}
@@ -1,61 +0,0 @@
1
- import React from 'react';
2
- import { TouchableOpacity, Text, StyleSheet, ActivityIndicator } from 'react-native';
3
- const Button = ({
4
- title,
5
- onPress,
6
- backgroundColor = '#007AFF',
7
- borderColor,
8
- textColor = 'white',
9
- disabled = false,
10
- loading = false,
11
- style,
12
- textStyle,
13
- activeOpacity = 0.8
14
- }) => {
15
- const buttonStyle = {
16
- ...styles.button,
17
- backgroundColor: disabled ? '#cccccc' : backgroundColor,
18
- borderColor: disabled ? '#cccccc' : borderColor || backgroundColor,
19
- ...style
20
- };
21
- const finalTextStyle = {
22
- ...styles.buttonText,
23
- color: disabled ? '#666666' : textColor,
24
- ...textStyle
25
- };
26
- return /*#__PURE__*/React.createElement(TouchableOpacity, {
27
- style: buttonStyle,
28
- onPress: onPress,
29
- disabled: disabled || loading,
30
- activeOpacity: activeOpacity,
31
- accessibilityRole: "button",
32
- accessibilityLabel: title,
33
- accessibilityState: {
34
- disabled: disabled || loading
35
- }
36
- }, loading ? /*#__PURE__*/React.createElement(ActivityIndicator, {
37
- color: textColor,
38
- size: "small"
39
- }) : /*#__PURE__*/React.createElement(Text, {
40
- style: finalTextStyle
41
- }, title));
42
- };
43
- const styles = StyleSheet.create({
44
- button: {
45
- borderRadius: 6,
46
- paddingHorizontal: 12,
47
- paddingVertical: 14,
48
- borderWidth: 1,
49
- alignItems: 'center',
50
- justifyContent: 'center',
51
- minHeight: 48
52
- },
53
- buttonText: {
54
- color: 'white',
55
- fontSize: 16,
56
- fontWeight: '600',
57
- paddingHorizontal: 30
58
- }
59
- });
60
- export default Button;
61
- //# sourceMappingURL=Button.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["React","TouchableOpacity","Text","StyleSheet","ActivityIndicator","Button","title","onPress","backgroundColor","borderColor","textColor","disabled","loading","style","textStyle","activeOpacity","buttonStyle","styles","button","finalTextStyle","buttonText","color","createElement","accessibilityRole","accessibilityLabel","accessibilityState","size","create","borderRadius","paddingHorizontal","paddingVertical","borderWidth","alignItems","justifyContent","minHeight","fontSize","fontWeight"],"sourceRoot":"../../../src","sources":["components/Button.tsx"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SACEC,gBAAgB,EAChBC,IAAI,EACJC,UAAU,EACVC,iBAAiB,QAGZ,cAAc;AAerB,MAAMC,MAA6B,GAAGA,CAAC;EACrCC,KAAK;EACLC,OAAO;EACPC,eAAe,GAAG,SAAS;EAC3BC,WAAW;EACXC,SAAS,GAAG,OAAO;EACnBC,QAAQ,GAAG,KAAK;EAChBC,OAAO,GAAG,KAAK;EACfC,KAAK;EACLC,SAAS;EACTC,aAAa,GAAG;AAClB,CAAC,KAAK;EACJ,MAAMC,WAAsB,GAAG;IAC7B,GAAGC,MAAM,CAACC,MAAM;IAChBV,eAAe,EAAEG,QAAQ,GAAG,SAAS,GAAGH,eAAe;IACvDC,WAAW,EAAEE,QAAQ,GAAG,SAAS,GAAGF,WAAW,IAAID,eAAe;IAClE,GAAGK;EACL,CAAC;EAED,MAAMM,cAAyB,GAAG;IAChC,GAAGF,MAAM,CAACG,UAAU;IACpBC,KAAK,EAAEV,QAAQ,GAAG,SAAS,GAAGD,SAAS;IACvC,GAAGI;EACL,CAAC;EAED,oBACEd,KAAA,CAAAsB,aAAA,CAACrB,gBAAgB;IACfY,KAAK,EAAEG,WAAY;IACnBT,OAAO,EAAEA,OAAQ;IACjBI,QAAQ,EAAEA,QAAQ,IAAIC,OAAQ;IAC9BG,aAAa,EAAEA,aAAc;IAC7BQ,iBAAiB,EAAC,QAAQ;IAC1BC,kBAAkB,EAAElB,KAAM;IAC1BmB,kBAAkB,EAAE;MAAEd,QAAQ,EAAEA,QAAQ,IAAIC;IAAQ;EAAE,GAErDA,OAAO,gBACNZ,KAAA,CAAAsB,aAAA,CAAClB,iBAAiB;IAACiB,KAAK,EAAEX,SAAU;IAACgB,IAAI,EAAC;EAAO,CAAE,CAAC,gBAEpD1B,KAAA,CAAAsB,aAAA,CAACpB,IAAI;IAACW,KAAK,EAAEM;EAAe,GAAEb,KAAY,CAE5B,CAAC;AAEvB,CAAC;AAED,MAAMW,MAAM,GAAGd,UAAU,CAACwB,MAAM,CAAC;EAC/BT,MAAM,EAAE;IACNU,YAAY,EAAE,CAAC;IACfC,iBAAiB,EAAE,EAAE;IACrBC,eAAe,EAAE,EAAE;IACnBC,WAAW,EAAE,CAAC;IACdC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE,QAAQ;IACxBC,SAAS,EAAE;EACb,CAAC;EACDd,UAAU,EAAE;IACVC,KAAK,EAAE,OAAO;IACdc,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE,KAAK;IACjBP,iBAAiB,EAAE;EACrB;AACF,CAAC,CAAC;AAEF,eAAexB,MAAM","ignoreList":[]}
@@ -1,372 +0,0 @@
1
- import React, { useState, useEffect } from 'react';
2
- import { View, Modal, Dimensions, Platform, StyleSheet, TouchableOpacity, Image, Text } from 'react-native';
3
- import { Camera, useCameraDevice, useCameraPermission } from 'react-native-vision-camera';
4
- import Button from '../Button';
5
- import { useFaceVerification } from './useFaceVerification';
6
- import { useFaceVerificationFlow } from './useFaceVerificationFlow';
7
- const FaceVerification = ({
8
- onClose,
9
- onSuccess,
10
- primaryColor
11
- }) => {
12
- const device = useCameraDevice('front');
13
- const {
14
- hasPermission,
15
- requestPermission
16
- } = useCameraPermission();
17
- const [isRequestingPermission, setIsRequestingPermission] = useState(false);
18
-
19
- // Face verification flow
20
- const {
21
- state: flowState,
22
- resetFlow,
23
- isCompleted,
24
- isFailed
25
- } = useFaceVerificationFlow();
26
-
27
- // Frame processor
28
- const frameProcessor = useFaceVerification();
29
-
30
- // Handle completion
31
- useEffect(() => {
32
- if (isCompleted) {
33
- setTimeout(() => {
34
- onSuccess();
35
- }, 1000); // Show success message briefly
36
- }
37
- }, [isCompleted, onSuccess]);
38
- const handleRequestPermission = async () => {
39
- setIsRequestingPermission(true);
40
- try {
41
- await requestPermission();
42
- } catch (error) {
43
- console.error('Error requesting camera permission:', error);
44
- } finally {
45
- setIsRequestingPermission(false);
46
- }
47
- };
48
- const renderPermissionRequest = () => /*#__PURE__*/React.createElement(View, {
49
- style: styles.permissionContainer
50
- }, /*#__PURE__*/React.createElement(View, {
51
- style: styles.permissionIconContainer
52
- }, /*#__PURE__*/React.createElement(Text, {
53
- style: styles.permissionIcon
54
- }, "\uD83D\uDCF7")), /*#__PURE__*/React.createElement(Text, {
55
- style: styles.permissionTitle
56
- }, "Camera Permission Required"), /*#__PURE__*/React.createElement(Text, {
57
- style: styles.permissionDescription
58
- }, "To verify your identity, we need access to your camera. This allows us to capture your face for secure verification."), /*#__PURE__*/React.createElement(Button, {
59
- title: "Allow Camera Access",
60
- onPress: handleRequestPermission,
61
- backgroundColor: primaryColor,
62
- loading: isRequestingPermission
63
- }));
64
- const renderNoDevice = () => /*#__PURE__*/React.createElement(View, {
65
- style: styles.errorContainer
66
- }, /*#__PURE__*/React.createElement(Text, {
67
- style: styles.errorTitle
68
- }, "Camera Not Available"), /*#__PURE__*/React.createElement(Text, {
69
- style: styles.errorSubtitle
70
- }, "No front camera detected on this device. Face verification requires a front-facing camera."));
71
- const renderCamera = () => {
72
- if (!device) return null;
73
- return /*#__PURE__*/React.createElement(View, {
74
- style: styles.cameraContainer
75
- }, /*#__PURE__*/React.createElement(Camera, {
76
- device: device,
77
- style: styles.camera,
78
- isActive: true,
79
- frameProcessor: frameProcessor
80
- }), /*#__PURE__*/React.createElement(View, {
81
- style: styles.cameraOverlay
82
- }, /*#__PURE__*/React.createElement(View, {
83
- style: styles.faceFrame
84
- }), /*#__PURE__*/React.createElement(View, {
85
- style: styles.progressContainer
86
- }, /*#__PURE__*/React.createElement(View, {
87
- style: [styles.progressBar, {
88
- width: `${flowState.progress}%`,
89
- backgroundColor: primaryColor
90
- }]
91
- })), /*#__PURE__*/React.createElement(Text, {
92
- style: styles.instructionText
93
- }, flowState.instruction), /*#__PURE__*/React.createElement(Text, {
94
- style: styles.stepIndicator
95
- }, "Step ", flowState.completedSteps.length + 1, " of 5"), isCompleted && /*#__PURE__*/React.createElement(View, {
96
- style: [styles.statusContainer, {
97
- backgroundColor: primaryColor
98
- }]
99
- }, /*#__PURE__*/React.createElement(Text, {
100
- style: styles.statusText
101
- }, "\u2713 Verification Complete!")), isFailed && /*#__PURE__*/React.createElement(View, {
102
- style: [styles.statusContainer, styles.statusContainerError]
103
- }, /*#__PURE__*/React.createElement(Text, {
104
- style: styles.statusText
105
- }, "\u2717 Verification Failed"), /*#__PURE__*/React.createElement(Button, {
106
- title: "Try Again",
107
- onPress: resetFlow,
108
- backgroundColor: "white",
109
- textColor: "#ff4444",
110
- style: styles.retryButton
111
- }))));
112
- };
113
- console.log(onSuccess, primaryColor);
114
- return /*#__PURE__*/React.createElement(Modal, {
115
- visible: true,
116
- transparent: true,
117
- onRequestClose: onClose,
118
- style: styles.modal
119
- }, /*#__PURE__*/React.createElement(TouchableOpacity, {
120
- style: styles.backdrop,
121
- activeOpacity: 1,
122
- onPress: onClose
123
- }, /*#__PURE__*/React.createElement(View, {
124
- style: [styles.container]
125
- }, /*#__PURE__*/React.createElement(TouchableOpacity, {
126
- style: styles.close,
127
- onPress: onClose
128
- }, /*#__PURE__*/React.createElement(Image, {
129
- source: require('../../assets/cancel.png'),
130
- style: styles.closeIcon
131
- })), /*#__PURE__*/React.createElement(View, {
132
- style: styles.contentContainer
133
- }, !hasPermission && renderPermissionRequest(), hasPermission && !device && renderNoDevice(), hasPermission && device && renderCamera()))));
134
- };
135
- export default FaceVerification;
136
- const styles = StyleSheet.create({
137
- hide: {
138
- display: 'none'
139
- },
140
- full: {
141
- flex: 1,
142
- width: '100%',
143
- height: '100%'
144
- },
145
- webview: {
146
- flex: 1,
147
- width: '100%',
148
- height: Dimensions.get('window').height - 40,
149
- backgroundColor: 'white',
150
- borderTopRightRadius: 20,
151
- borderTopLeftRadius: 20,
152
- paddingTop: 150
153
- },
154
- webviewLoader: {
155
- zIndex: 3,
156
- backgroundColor: 'white',
157
- alignItems: 'center',
158
- justifyContent: 'center',
159
- flex: 1,
160
- width: '100%',
161
- height: '100%',
162
- position: 'absolute',
163
- top: 0,
164
- left: 0,
165
- borderTopRightRadius: 20,
166
- borderTopLeftRadius: 20
167
- },
168
- backdrop: {
169
- backgroundColor: 'rgba(0,0,0,0.3)',
170
- flex: 1,
171
- justifyContent: 'flex-end',
172
- position: 'relative',
173
- height: '100%'
174
- },
175
- container: {
176
- backgroundColor: 'white',
177
- borderTopRightRadius: 20,
178
- borderTopLeftRadius: 20,
179
- maxHeight: Dimensions.get('window').height - 120,
180
- flex: 1,
181
- position: 'relative',
182
- ...(Platform.OS === 'android' && {
183
- overflow: 'hidden'
184
- })
185
- },
186
- modal: {
187
- flex: 1,
188
- backgroundColor: 'rgba(0,0,0,0.48)',
189
- height: '100%',
190
- width: '100%'
191
- },
192
- close: {
193
- position: 'absolute',
194
- top: 10,
195
- right: 10,
196
- backgroundColor: 'white',
197
- height: 24,
198
- width: 24,
199
- borderRadius: 1000,
200
- alignItems: 'center',
201
- justifyContent: 'center',
202
- zIndex: 2
203
- },
204
- closeIcon: {
205
- height: 12,
206
- width: 12
207
- },
208
- contentContainer: {
209
- height: '100%',
210
- position: 'relative',
211
- borderTopRightRadius: 20,
212
- borderTopLeftRadius: 20,
213
- padding: 16
214
- },
215
- testContent: {
216
- paddingTop: 30,
217
- paddingLeft: 16
218
- },
219
- testTwoContent: {
220
- paddingTop: 10,
221
- paddingLeft: 16
222
- },
223
- errorSubtitle: {
224
- textAlign: 'center',
225
- fontSize: 14,
226
- color: '#5e7079',
227
- marginBottom: 20,
228
- paddingHorizontal: 8,
229
- marginTop: 14
230
- },
231
- errorContainer: {
232
- flex: 1,
233
- justifyContent: 'center',
234
- alignItems: 'center',
235
- width: Dimensions.get('window').width,
236
- height: Dimensions.get('window').height,
237
- zIndex: 2,
238
- backgroundColor: 'white'
239
- },
240
- camera: {
241
- width: '100%',
242
- height: 400
243
- },
244
- // Permission request styles
245
- permissionContainer: {
246
- flex: 1,
247
- justifyContent: 'center',
248
- alignItems: 'center',
249
- paddingHorizontal: 24,
250
- paddingVertical: 40
251
- },
252
- permissionIconContainer: {
253
- width: 80,
254
- height: 80,
255
- borderRadius: 40,
256
- backgroundColor: '#f0f0f0',
257
- justifyContent: 'center',
258
- alignItems: 'center',
259
- marginBottom: 24
260
- },
261
- permissionIcon: {
262
- fontSize: 40
263
- },
264
- permissionTitle: {
265
- fontSize: 20,
266
- fontWeight: '600',
267
- color: '#1a1a1a',
268
- textAlign: 'center',
269
- marginBottom: 12
270
- },
271
- permissionDescription: {
272
- fontSize: 16,
273
- color: '#666',
274
- textAlign: 'center',
275
- lineHeight: 22,
276
- marginBottom: 32
277
- },
278
- // Error styles
279
- errorTitle: {
280
- fontSize: 18,
281
- fontWeight: '600',
282
- color: '#1a1a1a',
283
- textAlign: 'center',
284
- marginBottom: 8
285
- },
286
- // Camera styles
287
- cameraContainer: {
288
- flex: 1,
289
- position: 'relative',
290
- marginTop: 60
291
- },
292
- cameraOverlay: {
293
- position: 'absolute',
294
- top: 0,
295
- left: 0,
296
- right: 0,
297
- bottom: 0,
298
- justifyContent: 'center',
299
- alignItems: 'center'
300
- },
301
- faceFrame: {
302
- width: 200,
303
- height: 250,
304
- borderWidth: 3,
305
- borderColor: 'white',
306
- borderRadius: 100,
307
- borderStyle: 'dashed',
308
- backgroundColor: 'transparent'
309
- },
310
- instructionText: {
311
- color: 'white',
312
- fontSize: 16,
313
- fontWeight: '500',
314
- textAlign: 'center',
315
- marginTop: 20,
316
- backgroundColor: 'rgba(0,0,0,0.7)',
317
- paddingHorizontal: 16,
318
- paddingVertical: 8,
319
- borderRadius: 20
320
- },
321
- // Verification flow styles
322
- progressContainer: {
323
- position: 'absolute',
324
- top: 20,
325
- left: 20,
326
- right: 20,
327
- height: 4,
328
- backgroundColor: 'rgba(255,255,255,0.3)',
329
- borderRadius: 2,
330
- overflow: 'hidden'
331
- },
332
- progressBar: {
333
- height: '100%',
334
- borderRadius: 2
335
- },
336
- stepIndicator: {
337
- color: 'white',
338
- fontSize: 14,
339
- fontWeight: '400',
340
- textAlign: 'center',
341
- marginTop: 8,
342
- backgroundColor: 'rgba(0,0,0,0.5)',
343
- paddingHorizontal: 12,
344
- paddingVertical: 4,
345
- borderRadius: 12,
346
- alignSelf: 'center'
347
- },
348
- statusContainer: {
349
- position: 'absolute',
350
- bottom: 40,
351
- left: 20,
352
- right: 20,
353
- padding: 20,
354
- borderRadius: 12,
355
- alignItems: 'center'
356
- },
357
- statusContainerError: {
358
- backgroundColor: '#ff4444'
359
- },
360
- statusText: {
361
- color: 'white',
362
- fontSize: 18,
363
- fontWeight: '600',
364
- textAlign: 'center',
365
- marginBottom: 8
366
- },
367
- retryButton: {
368
- marginTop: 12,
369
- minWidth: 120
370
- }
371
- });
372
- //# sourceMappingURL=FaceVerification.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["React","useState","useEffect","View","Modal","Dimensions","Platform","StyleSheet","TouchableOpacity","Image","Text","Camera","useCameraDevice","useCameraPermission","Button","useFaceVerification","useFaceVerificationFlow","FaceVerification","onClose","onSuccess","primaryColor","device","hasPermission","requestPermission","isRequestingPermission","setIsRequestingPermission","state","flowState","resetFlow","isCompleted","isFailed","frameProcessor","setTimeout","handleRequestPermission","error","console","renderPermissionRequest","createElement","style","styles","permissionContainer","permissionIconContainer","permissionIcon","permissionTitle","permissionDescription","title","onPress","backgroundColor","loading","renderNoDevice","errorContainer","errorTitle","errorSubtitle","renderCamera","cameraContainer","camera","isActive","cameraOverlay","faceFrame","progressContainer","progressBar","width","progress","instructionText","instruction","stepIndicator","completedSteps","length","statusContainer","statusText","statusContainerError","textColor","retryButton","log","visible","transparent","onRequestClose","modal","backdrop","activeOpacity","container","close","source","require","closeIcon","contentContainer","create","hide","display","full","flex","height","webview","get","borderTopRightRadius","borderTopLeftRadius","paddingTop","webviewLoader","zIndex","alignItems","justifyContent","position","top","left","maxHeight","OS","overflow","right","borderRadius","padding","testContent","paddingLeft","testTwoContent","textAlign","fontSize","color","marginBottom","paddingHorizontal","marginTop","paddingVertical","fontWeight","lineHeight","bottom","borderWidth","borderColor","borderStyle","alignSelf","minWidth"],"sourceRoot":"../../../../src","sources":["components/biometrics/FaceVerification.tsx"],"mappings":"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","ignoreList":[]}