@transfergratis/react-native-sdk 0.1.4 → 0.1.6

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 (216) hide show
  1. package/build/api/axios.d.ts +30 -0
  2. package/build/api/axios.d.ts.map +1 -0
  3. package/build/api/axios.js +92 -0
  4. package/build/api/axios.js.map +1 -0
  5. package/build/components/EnhancedCameraView.d.ts +1 -41
  6. package/build/components/EnhancedCameraView.d.ts.map +1 -1
  7. package/build/components/EnhancedCameraView.js +75 -34
  8. package/build/components/EnhancedCameraView.js.map +1 -1
  9. package/build/components/EnhancedCameraView.web.d.ts +1 -41
  10. package/build/components/EnhancedCameraView.web.d.ts.map +1 -1
  11. package/build/components/EnhancedCameraView.web.js +28 -4
  12. package/build/components/EnhancedCameraView.web.js.map +1 -1
  13. package/build/components/KYCElements/CountrySelectionTemplate.d.ts +2 -2
  14. package/build/components/KYCElements/CountrySelectionTemplate.d.ts.map +1 -1
  15. package/build/components/KYCElements/CountrySelectionTemplate.js +77 -114
  16. package/build/components/KYCElements/CountrySelectionTemplate.js.map +1 -1
  17. package/build/components/KYCElements/FileUploadTemplate.d.ts.map +1 -1
  18. package/build/components/KYCElements/FileUploadTemplate.js +7 -3
  19. package/build/components/KYCElements/FileUploadTemplate.js.map +1 -1
  20. package/build/components/KYCElements/IDCardCapture.d.ts +7 -2
  21. package/build/components/KYCElements/IDCardCapture.d.ts.map +1 -1
  22. package/build/components/KYCElements/IDCardCapture.js +253 -104
  23. package/build/components/KYCElements/IDCardCapture.js.map +1 -1
  24. package/build/components/KYCElements/InitializationStep.d.ts +5 -0
  25. package/build/components/KYCElements/InitializationStep.d.ts.map +1 -0
  26. package/build/components/KYCElements/InitializationStep.js +41 -0
  27. package/build/components/KYCElements/InitializationStep.js.map +1 -0
  28. package/build/components/KYCElements/LocationCaptureTemplate.d.ts.map +1 -1
  29. package/build/components/KYCElements/LocationCaptureTemplate.js +15 -13
  30. package/build/components/KYCElements/LocationCaptureTemplate.js.map +1 -1
  31. package/build/components/KYCElements/OrientationVideoCapture.d.ts +2 -2
  32. package/build/components/KYCElements/OrientationVideoCapture.d.ts.map +1 -1
  33. package/build/components/KYCElements/OrientationVideoCapture.js.map +1 -1
  34. package/build/components/KYCElements/OrientationVideoCaptureEnhanced.d.ts +2 -2
  35. package/build/components/KYCElements/OrientationVideoCaptureEnhanced.d.ts.map +1 -1
  36. package/build/components/KYCElements/OrientationVideoCaptureEnhanced.js.map +1 -1
  37. package/build/components/KYCElements/OrientationVideoCaptureFinal.d.ts +2 -2
  38. package/build/components/KYCElements/OrientationVideoCaptureFinal.d.ts.map +1 -1
  39. package/build/components/KYCElements/OrientationVideoCaptureFinal.js.map +1 -1
  40. package/build/components/KYCElements/ReviewSubmitTemplate.d.ts +12 -0
  41. package/build/components/KYCElements/ReviewSubmitTemplate.d.ts.map +1 -0
  42. package/build/components/KYCElements/ReviewSubmitTemplate.js +171 -0
  43. package/build/components/KYCElements/ReviewSubmitTemplate.js.map +1 -0
  44. package/build/components/KYCElements/SelfieCaptureTemplate.d.ts +6 -2
  45. package/build/components/KYCElements/SelfieCaptureTemplate.d.ts.map +1 -1
  46. package/build/components/KYCElements/SelfieCaptureTemplate.js +137 -38
  47. package/build/components/KYCElements/SelfieCaptureTemplate.js.map +1 -1
  48. package/build/components/KYCElements/VerificationProgressTemplate.d.ts +12 -0
  49. package/build/components/KYCElements/VerificationProgressTemplate.d.ts.map +1 -0
  50. package/build/components/KYCElements/VerificationProgressTemplate.js +194 -0
  51. package/build/components/KYCElements/VerificationProgressTemplate.js.map +1 -0
  52. package/build/components/OverLay/IdCard.d.ts +1 -1
  53. package/build/components/OverLay/IdCard.d.ts.map +1 -1
  54. package/build/components/OverLay/IdCard.js +10 -6
  55. package/build/components/OverLay/IdCard.js.map +1 -1
  56. package/build/components/OverLay/SelfieOverlay.d.ts +1 -1
  57. package/build/components/OverLay/SelfieOverlay.d.ts.map +1 -1
  58. package/build/components/OverLay/SelfieOverlay.js +5 -4
  59. package/build/components/OverLay/SelfieOverlay.js.map +1 -1
  60. package/build/components/OverLay/type.d.ts +71 -1
  61. package/build/components/OverLay/type.d.ts.map +1 -1
  62. package/build/components/OverLay/type.js.map +1 -1
  63. package/build/components/TemplateKYCExample.d.ts +4 -1
  64. package/build/components/TemplateKYCExample.d.ts.map +1 -1
  65. package/build/components/TemplateKYCExample.js +74 -199
  66. package/build/components/TemplateKYCExample.js.map +1 -1
  67. package/build/components/TemplateKYCFlowRefactored.d.ts +3 -2
  68. package/build/components/TemplateKYCFlowRefactored.d.ts.map +1 -1
  69. package/build/components/TemplateKYCFlowRefactored.js +64 -40
  70. package/build/components/TemplateKYCFlowRefactored.js.map +1 -1
  71. package/build/components/example/OrientationVideoExample.d.ts.map +1 -1
  72. package/build/components/example/OrientationVideoExample.js +1 -5
  73. package/build/components/example/OrientationVideoExample.js.map +1 -1
  74. package/build/config/countriesData.d.ts +3 -0
  75. package/build/config/countriesData.d.ts.map +1 -0
  76. package/build/config/countriesData.js +79 -0
  77. package/build/config/countriesData.js.map +1 -0
  78. package/build/config/region_mapping.d.ts +3 -0
  79. package/build/config/region_mapping.d.ts.map +1 -0
  80. package/build/config/region_mapping.js +687 -0
  81. package/build/config/region_mapping.js.map +1 -0
  82. package/build/hooks/useI18n.d.ts +11 -0
  83. package/build/hooks/useI18n.d.ts.map +1 -0
  84. package/build/hooks/useI18n.js +37 -0
  85. package/build/hooks/useI18n.js.map +1 -0
  86. package/build/hooks/useOrientationVideo.d.ts +1 -2
  87. package/build/hooks/useOrientationVideo.d.ts.map +1 -1
  88. package/build/hooks/useOrientationVideo.js +2 -1
  89. package/build/hooks/useOrientationVideo.js.map +1 -1
  90. package/build/hooks/useRealtimeVerifier.d.ts +28 -0
  91. package/build/hooks/useRealtimeVerifier.d.ts.map +1 -0
  92. package/build/hooks/useRealtimeVerifier.js +91 -0
  93. package/build/hooks/useRealtimeVerifier.js.map +1 -0
  94. package/build/hooks/useTemplateKYCFlow.d.ts +6 -3
  95. package/build/hooks/useTemplateKYCFlow.d.ts.map +1 -1
  96. package/build/hooks/useTemplateKYCFlow.js +356 -42
  97. package/build/hooks/useTemplateKYCFlow.js.map +1 -1
  98. package/build/i18n/en/index.d.ts +168 -0
  99. package/build/i18n/en/index.d.ts.map +1 -0
  100. package/build/i18n/en/index.js +195 -0
  101. package/build/i18n/en/index.js.map +1 -0
  102. package/build/i18n/fr/index.d.ts +168 -0
  103. package/build/i18n/fr/index.d.ts.map +1 -0
  104. package/build/i18n/fr/index.js +194 -0
  105. package/build/i18n/fr/index.js.map +1 -0
  106. package/build/i18n/index.d.ts +10 -0
  107. package/build/i18n/index.d.ts.map +1 -0
  108. package/build/i18n/index.js +56 -0
  109. package/build/i18n/index.js.map +1 -0
  110. package/build/i18n/types.d.ts +153 -0
  111. package/build/i18n/types.d.ts.map +1 -0
  112. package/build/i18n/types.js +3 -0
  113. package/build/i18n/types.js.map +1 -0
  114. package/build/i18n/usage-example.d.ts +4 -0
  115. package/build/i18n/usage-example.d.ts.map +1 -0
  116. package/build/i18n/usage-example.js +189 -0
  117. package/build/i18n/usage-example.js.map +1 -0
  118. package/build/index.d.ts +1 -0
  119. package/build/index.d.ts.map +1 -1
  120. package/build/index.js +2 -0
  121. package/build/index.js.map +1 -1
  122. package/build/modules/api/CardAuthentification.d.ts +22 -0
  123. package/build/modules/api/CardAuthentification.d.ts.map +1 -0
  124. package/build/modules/api/CardAuthentification.js +107 -0
  125. package/build/modules/api/CardAuthentification.js.map +1 -0
  126. package/build/modules/api/KYCService.d.ts +58 -1
  127. package/build/modules/api/KYCService.d.ts.map +1 -1
  128. package/build/modules/api/KYCService.js +304 -27
  129. package/build/modules/api/KYCService.js.map +1 -1
  130. package/build/modules/api/SelfieVerification.d.ts +3 -0
  131. package/build/modules/api/SelfieVerification.d.ts.map +1 -0
  132. package/build/modules/api/SelfieVerification.js +9 -0
  133. package/build/modules/api/SelfieVerification.js.map +1 -0
  134. package/build/modules/api/backendApi.d.ts +2 -0
  135. package/build/modules/api/backendApi.d.ts.map +1 -0
  136. package/build/modules/api/backendApi.js +6 -0
  137. package/build/modules/api/backendApi.js.map +1 -0
  138. package/build/modules/api/types.d.ts +45 -0
  139. package/build/modules/api/types.d.ts.map +1 -0
  140. package/build/modules/api/types.js +2 -0
  141. package/build/modules/api/types.js.map +1 -0
  142. package/build/types/KYC.types.d.ts +56 -7
  143. package/build/types/KYC.types.d.ts.map +1 -1
  144. package/build/types/KYC.types.js +9 -1
  145. package/build/types/KYC.types.js.map +1 -1
  146. package/build/utils/cropByObb.d.ts +11 -0
  147. package/build/utils/cropByObb.d.ts.map +1 -0
  148. package/build/utils/cropByObb.js +78 -0
  149. package/build/utils/cropByObb.js.map +1 -0
  150. package/build/utils/get-document-type-info.d.ts +13 -0
  151. package/build/utils/get-document-type-info.d.ts.map +1 -0
  152. package/build/utils/get-document-type-info.js +59 -0
  153. package/build/utils/get-document-type-info.js.map +1 -0
  154. package/build/utils/pathToBase64.d.ts +3 -0
  155. package/build/utils/pathToBase64.d.ts.map +1 -0
  156. package/build/utils/pathToBase64.js +47 -0
  157. package/build/utils/pathToBase64.js.map +1 -0
  158. package/build/utils/remove-duplicate.d.ts +2 -0
  159. package/build/utils/remove-duplicate.d.ts.map +1 -0
  160. package/build/utils/remove-duplicate.js +4 -0
  161. package/build/utils/remove-duplicate.js.map +1 -0
  162. package/build/web/WebKYCEntry.d.ts +9 -0
  163. package/build/web/WebKYCEntry.d.ts.map +1 -0
  164. package/build/web/WebKYCEntry.js +156 -0
  165. package/build/web/WebKYCEntry.js.map +1 -0
  166. package/build/web/index.d.ts +2 -0
  167. package/build/web/index.d.ts.map +1 -0
  168. package/build/web/index.js +2 -0
  169. package/build/web/index.js.map +1 -0
  170. package/package.json +3 -1
  171. package/src/api/axios.ts +144 -0
  172. package/src/components/EnhancedCameraView.tsx +96 -78
  173. package/src/components/EnhancedCameraView.web.tsx +41 -40
  174. package/src/components/KYCElements/CountrySelectionTemplate.tsx +111 -136
  175. package/src/components/KYCElements/FileUploadTemplate.tsx +14 -8
  176. package/src/components/KYCElements/IDCardCapture.tsx +311 -115
  177. package/src/components/KYCElements/InitializationStep.tsx +53 -0
  178. package/src/components/KYCElements/LocationCaptureTemplate.tsx +17 -15
  179. package/src/components/KYCElements/OrientationVideoCapture.tsx +2 -2
  180. package/src/components/KYCElements/OrientationVideoCaptureEnhanced.tsx +2 -2
  181. package/src/components/KYCElements/OrientationVideoCaptureFinal.tsx +2 -2
  182. package/src/components/KYCElements/ReviewSubmitTemplate.tsx +201 -0
  183. package/src/components/KYCElements/SelfieCaptureTemplate.tsx +174 -57
  184. package/src/components/KYCElements/VerificationProgressTemplate.tsx +246 -0
  185. package/src/components/OverLay/IdCard.tsx +17 -9
  186. package/src/components/OverLay/SelfieOverlay.tsx +6 -5
  187. package/src/components/OverLay/type.ts +64 -2
  188. package/src/components/TemplateKYCExample.tsx +80 -200
  189. package/src/components/TemplateKYCFlowRefactored.tsx +80 -48
  190. package/src/components/example/OrientationVideoExample.tsx +3 -7
  191. package/src/config/countriesData.ts +84 -0
  192. package/src/config/region_mapping.ts +688 -0
  193. package/src/hooks/useI18n.ts +53 -0
  194. package/src/hooks/useOrientationVideo.ts +2 -2
  195. package/src/hooks/useRealtimeVerifier.ts +128 -0
  196. package/src/hooks/useTemplateKYCFlow.tsx +407 -57
  197. package/src/i18n/README.md +288 -0
  198. package/src/i18n/en/index.ts +206 -0
  199. package/src/i18n/fr/index.ts +205 -0
  200. package/src/i18n/index.ts +65 -0
  201. package/src/i18n/types.ts +172 -0
  202. package/src/i18n/usage-example.tsx +202 -0
  203. package/src/index.ts +3 -0
  204. package/src/modules/api/CardAuthentification.ts +114 -0
  205. package/src/modules/api/KYCService.ts +350 -30
  206. package/src/modules/api/SelfieVerification.ts +11 -0
  207. package/src/modules/api/backendApi.ts +8 -0
  208. package/src/modules/api/types.ts +51 -0
  209. package/src/types/KYC.types.ts +82 -14
  210. package/src/utils/cropByObb.ts +99 -0
  211. package/src/utils/get-document-type-info.ts +62 -0
  212. package/src/utils/pathToBase64.ts +47 -0
  213. package/src/utils/remove-duplicate.ts +3 -0
  214. package/src/web/WebKYCEntry.tsx +215 -0
  215. package/src/web/index.ts +1 -0
  216. package/src/types/nativewind.d.ts +0 -2
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import { TemplateComponent } from '../../types/KYC.types';
3
+ interface VerificationProgressTemplateProps {
4
+ component: TemplateComponent;
5
+ value: unknown;
6
+ onValueChange: (data: unknown) => void;
7
+ error?: string;
8
+ language?: string;
9
+ }
10
+ export declare const VerificationProgressTemplate: React.FC<VerificationProgressTemplateProps>;
11
+ export {};
12
+ //# sourceMappingURL=VerificationProgressTemplate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VerificationProgressTemplate.d.ts","sourceRoot":"","sources":["../../../src/components/KYCElements/VerificationProgressTemplate.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAEnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAK1D,UAAU,iCAAiC;IACzC,SAAS,EAAE,iBAAiB,CAAC;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,aAAa,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,4BAA4B,EAAE,KAAK,CAAC,EAAE,CAAC,iCAAiC,CAuMpF,CAAC"}
@@ -0,0 +1,194 @@
1
+ import React, { useEffect, useState } from 'react';
2
+ import { View, Text, StyleSheet, TouchableOpacity } from 'react-native';
3
+ import { useTemplateKYCFlowContext } from '../../hooks/useTemplateKYCFlow';
4
+ import { useI18n } from '../../hooks/useI18n';
5
+ import kycService from '../../modules/api/KYCService';
6
+ export const VerificationProgressTemplate = () => {
7
+ const { t } = useI18n();
8
+ const { state, actions } = useTemplateKYCFlowContext();
9
+ const [retryCount, setRetryCount] = useState(0);
10
+ const [isRetrying, setIsRetrying] = useState(false);
11
+ const [timeoutId, setTimeoutId] = useState(null);
12
+ const verification = state.verification;
13
+ const isSuccess = verification.status === 'success';
14
+ const isFailed = verification.status === 'failed';
15
+ // Fonction pour récupérer le résultat de vérification avec retry
16
+ const getVerificationResult = async (currentRetryCount = 0, maxRetries = 40) => {
17
+ try {
18
+ console.log(`Starting verification check (attempt ${currentRetryCount + 1}/${maxRetries + 1})`);
19
+ const result = await kycService.getVerificationResult(state.session.session_id);
20
+ const verificationResult = result[state.session.session_id].data;
21
+ console.log('getVerificationResult result', JSON.stringify(result, null, 2));
22
+ // Vérifier le statut de vérification
23
+ if (verificationResult.verification_status === null || verificationResult.verification_status === "processing" || verificationResult.verification_status === "pending") {
24
+ if (currentRetryCount < maxRetries) {
25
+ const nextRetryCount = currentRetryCount + 1;
26
+ setRetryCount(nextRetryCount);
27
+ setIsRetrying(true);
28
+ console.log(`Verification still processing, retrying in 10s... (${nextRetryCount}/${maxRetries})`);
29
+ // Nettoyer le timeout précédent s'il existe
30
+ if (timeoutId) {
31
+ clearTimeout(timeoutId);
32
+ }
33
+ // Attendre 10 secondes avant de relancer
34
+ const newTimeoutId = setTimeout(() => {
35
+ getVerificationResult(nextRetryCount, maxRetries);
36
+ }, 10000);
37
+ setTimeoutId(newTimeoutId);
38
+ return; // Sortir de la fonction pour éviter de traiter le résultat
39
+ }
40
+ else {
41
+ console.error('Max retries reached, verification still processing');
42
+ setIsRetrying(false);
43
+ return;
44
+ }
45
+ }
46
+ // Traiter le résultat final (success, failed, etc.)
47
+ if (verificationResult.verification_status === "completed" ||
48
+ verificationResult.verification_status === "approved") {
49
+ // Mettre à jour l'état avec le succès
50
+ actions.setVerificationState({
51
+ status: 'success',
52
+ result: result
53
+ });
54
+ }
55
+ else if (verificationResult.verification_status === "failed" ||
56
+ verificationResult.verification_status === "rejected") {
57
+ // Mettre à jour l'état avec l'échec
58
+ actions.setVerificationState({
59
+ status: 'failed',
60
+ result: {
61
+ referenceId: verificationResult.verification_id,
62
+ issues: ['Verification failed']
63
+ }
64
+ });
65
+ }
66
+ setIsRetrying(false);
67
+ }
68
+ catch (error) {
69
+ console.error('getVerificationResult error', error);
70
+ // En cas d'erreur, on peut aussi retry
71
+ if (currentRetryCount < maxRetries) {
72
+ const nextRetryCount = currentRetryCount + 1;
73
+ setRetryCount(nextRetryCount);
74
+ setIsRetrying(true);
75
+ console.log(`Error occurred, retrying in 10s... (${nextRetryCount}/${maxRetries})`);
76
+ // Nettoyer le timeout précédent s'il existe
77
+ if (timeoutId) {
78
+ clearTimeout(timeoutId);
79
+ }
80
+ const newTimeoutId = setTimeout(() => {
81
+ getVerificationResult(nextRetryCount, maxRetries);
82
+ }, 10000);
83
+ setTimeoutId(newTimeoutId);
84
+ }
85
+ else {
86
+ setIsRetrying(false);
87
+ console.error('Max retries reached after errors');
88
+ }
89
+ }
90
+ };
91
+ useEffect(() => {
92
+ if (state.session.session_id) {
93
+ getVerificationResult();
94
+ }
95
+ }, [state.session.session_id]);
96
+ // Nettoyage des timeouts lors du démontage du composant
97
+ useEffect(() => {
98
+ return () => {
99
+ if (timeoutId) {
100
+ clearTimeout(timeoutId);
101
+ }
102
+ };
103
+ }, [timeoutId]);
104
+ if (isSuccess) {
105
+ return (<View style={styles.container}>
106
+ <Text style={styles.title}>{t('kyc.verificationProgress.steps.complete')}</Text>
107
+ <Text style={styles.subtitle}>{t('kyc.verificationProgress.subtitle')}</Text>
108
+ <TouchableOpacity style={[styles.button, styles.primary]} onPress={() => actions.submitVerification()}>
109
+ <Text style={styles.buttonText}>{t('common.continue')}</Text>
110
+ </TouchableOpacity>
111
+ {verification.result?.referenceId ? (<Text style={styles.refText}>{`Verification ID: ${verification.result.referenceId}`}</Text>) : null}
112
+ </View>);
113
+ }
114
+ if (isFailed) {
115
+ return (<View style={styles.container}>
116
+ <Text style={styles.title}>{t('kyc.verificationProgress.status.failed')}</Text>
117
+ <Text style={styles.subtitle}>{t('errors.validationError')}</Text>
118
+ <View style={styles.issuesBox}>
119
+ <Text style={styles.issuesTitle}>{t('common.error')}</Text>
120
+ {Array.isArray(verification.result?.issues) && verification.result.issues.map((issue, idx) => (<Text key={idx} style={styles.issueItem}>• {issue}</Text>))}
121
+ </View>
122
+ <TouchableOpacity style={[styles.button, styles.primary]} onPress={() => actions.goToComponent(state.template.components.find(c => c.type !== 'review_submit' && c.type !== 'verification_progress')?.id || 0)}>
123
+ <Text style={styles.buttonText}>{t('common.retry')}</Text>
124
+ </TouchableOpacity>
125
+ <TouchableOpacity style={[styles.button, styles.secondary]}>
126
+ <Text style={styles.secondaryText}>{t('common.info')}</Text>
127
+ </TouchableOpacity>
128
+ {verification.result?.referenceId ? (<Text style={styles.refText}>{`Reference ID: ${verification.result.referenceId}`}</Text>) : null}
129
+ </View>);
130
+ }
131
+ return (<View style={styles.container}>
132
+ <Text style={styles.title}>{t('kyc.verificationProgress.title')}</Text>
133
+ <Text style={styles.subtitle}>
134
+ {isRetrying
135
+ ? `${t('kyc.verificationProgress.retrying')} (${retryCount}/10)`
136
+ : t('kyc.verificationProgress.estimatedTime')}
137
+ </Text>
138
+
139
+ <View style={styles.timeline}>
140
+ <View style={[styles.dot, styles.done]}><Text style={styles.stepCheckmark}>✓</Text></View>
141
+ <View style={styles.line}/>
142
+ <View style={[styles.dot, styles.active]}><Text style={styles.stepCheckmark}>2</Text></View>
143
+ <View style={styles.line}/>
144
+ <View style={[styles.dot, styles.pending]}><Text style={styles.stepCheckmark}>3</Text></View>
145
+ </View>
146
+
147
+ <View style={styles.row}>
148
+ <Text style={styles.stepLabel}>{t('kyc.verificationProgress.status.completed')}</Text>
149
+ <Text style={styles.stepLabel}>{t('kyc.verificationProgress.steps.analyzing')}</Text>
150
+ <Text style={styles.stepLabel}>{t('kyc.verificationProgress.steps.verifying')}</Text>
151
+ </View>
152
+
153
+ <View style={styles.card}>
154
+ <Text style={styles.cardTitle}>{t('kyc.idCardCapture.title')}</Text>
155
+ <Text style={styles.cardLine}>{t('kyc.verificationProgress.steps.extracting')}</Text>
156
+ <Text style={styles.cardTitle}>{t('kyc.selfieCapture.title')}</Text>
157
+ <Text style={styles.cardLine}>{t('kyc.verificationProgress.steps.analyzing')}</Text>
158
+ <Text style={styles.cardTitle}>{t('kyc.verificationProgress.title')}</Text>
159
+ <Text style={styles.cardLine}>
160
+ {isRetrying
161
+ ? `${t('kyc.verificationProgress.status.processing')}...`
162
+ : t('kyc.verificationProgress.status.pending')}
163
+ </Text>
164
+ </View>
165
+ </View>);
166
+ };
167
+ const styles = StyleSheet.create({
168
+ container: { flex: 1, width: '100%', paddingHorizontal: 16, paddingVertical: 12 },
169
+ title: { fontSize: 24, fontWeight: 'bold', color: '#111827', textAlign: 'center', marginTop: 12 },
170
+ subtitle: { fontSize: 14, color: '#6B7280', textAlign: 'center', marginTop: 8 },
171
+ timeline: { flexDirection: 'row', alignItems: 'center', justifyContent: 'space-between', marginTop: 24 },
172
+ dot: { width: 38, height: 38, borderRadius: 34, justifyContent: 'center', alignItems: 'center' },
173
+ stepCheckmark: { color: 'white', fontSize: 16, fontWeight: 'bold' },
174
+ line: { flex: 1, height: 4, backgroundColor: '#E5E7EB' },
175
+ done: { backgroundColor: '#10B981' },
176
+ active: { backgroundColor: '#F59E0B' },
177
+ pending: { backgroundColor: '#E5E7EB' },
178
+ row: { flexDirection: 'row', justifyContent: 'space-between', marginTop: 8 },
179
+ stepLabel: { fontSize: 14, color: '#111827', fontWeight: '600' },
180
+ card: { backgroundColor: 'white', padding: 16, borderRadius: 16, marginTop: 24 },
181
+ cardTitle: { fontSize: 16, color: '#6B7280', marginTop: 8 },
182
+ cardLine: { fontSize: 18, color: '#111827', fontWeight: '600', marginTop: 2 },
183
+ // Success/Failure specific
184
+ button: { paddingVertical: 14, borderRadius: 10, alignItems: 'center', marginTop: 20 },
185
+ primary: { backgroundColor: '#2DBD60' },
186
+ buttonText: { color: 'white', fontSize: 16, fontWeight: '600' },
187
+ refText: { marginTop: 12, textAlign: 'center', color: '#6B7280' },
188
+ issuesBox: { backgroundColor: '#FEF2F2', borderRadius: 16, padding: 16, marginTop: 20 },
189
+ issuesTitle: { color: '#991B1B', fontWeight: '700', marginBottom: 8 },
190
+ issueItem: { color: '#991B1B', marginTop: 4 },
191
+ secondary: { backgroundColor: '#F3F4F6' },
192
+ secondaryText: { color: '#111827', fontSize: 16, fontWeight: '600' },
193
+ });
194
+ //# sourceMappingURL=VerificationProgressTemplate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VerificationProgressTemplate.js","sourceRoot":"","sources":["../../../src/components/KYCElements/VerificationProgressTemplate.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { View, Text, StyleSheet, TouchableOpacity } from 'react-native';\nimport { TemplateComponent } from '../../types/KYC.types';\nimport { useTemplateKYCFlowContext } from '../../hooks/useTemplateKYCFlow';\nimport { useI18n } from '../../hooks/useI18n';\nimport kycService from '../../modules/api/KYCService';\n\ninterface VerificationProgressTemplateProps {\n component: TemplateComponent;\n value: unknown;\n onValueChange: (data: unknown) => void;\n error?: string;\n language?: string;\n}\n\nexport const VerificationProgressTemplate: React.FC<VerificationProgressTemplateProps> = () => {\n const { t } = useI18n();\n const { state, actions } = useTemplateKYCFlowContext();\n const [retryCount, setRetryCount] = useState(0);\n const [isRetrying, setIsRetrying] = useState(false);\n const [timeoutId, setTimeoutId] = useState<number | null>(null);\n\n const verification = state.verification;\n\n const isSuccess = verification.status === 'success';\n const isFailed = verification.status === 'failed';\n\n // Fonction pour récupérer le résultat de vérification avec retry\n const getVerificationResult = async (currentRetryCount = 0, maxRetries = 40) => {\n try {\n console.log(`Starting verification check (attempt ${currentRetryCount + 1}/${maxRetries + 1})`);\n \n const result = await kycService.getVerificationResult(state.session.session_id);\n const verificationResult = result[state.session.session_id].data;\n\n console.log('getVerificationResult result', JSON.stringify(result, null, 2));\n\n // Vérifier le statut de vérification\n if (verificationResult.verification_status === null || verificationResult.verification_status === \"processing\" || verificationResult.verification_status === \"pending\") {\n if (currentRetryCount < maxRetries) {\n const nextRetryCount = currentRetryCount + 1;\n setRetryCount(nextRetryCount);\n setIsRetrying(true);\n \n console.log(`Verification still processing, retrying in 10s... (${nextRetryCount}/${maxRetries})`);\n\n // Nettoyer le timeout précédent s'il existe\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n\n // Attendre 10 secondes avant de relancer\n const newTimeoutId = setTimeout(() => {\n getVerificationResult(nextRetryCount, maxRetries);\n }, 10000);\n \n setTimeoutId(newTimeoutId);\n return; // Sortir de la fonction pour éviter de traiter le résultat\n } else {\n console.error('Max retries reached, verification still processing');\n setIsRetrying(false);\n return;\n }\n }\n\n // Traiter le résultat final (success, failed, etc.)\n if (verificationResult.verification_status === \"completed\" ||\n verificationResult.verification_status === \"approved\") {\n // Mettre à jour l'état avec le succès\n actions.setVerificationState({\n status: 'success',\n result: result\n });\n } else if (verificationResult.verification_status === \"failed\" ||\n verificationResult.verification_status === \"rejected\") {\n // Mettre à jour l'état avec l'échec\n actions.setVerificationState({\n status: 'failed',\n result: {\n referenceId: verificationResult.verification_id,\n issues: ['Verification failed']\n } as any\n });\n }\n\n setIsRetrying(false);\n\n } catch (error) {\n console.error('getVerificationResult error', error);\n\n // En cas d'erreur, on peut aussi retry\n if (currentRetryCount < maxRetries) {\n const nextRetryCount = currentRetryCount + 1;\n setRetryCount(nextRetryCount);\n setIsRetrying(true);\n \n console.log(`Error occurred, retrying in 10s... (${nextRetryCount}/${maxRetries})`);\n \n // Nettoyer le timeout précédent s'il existe\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n \n const newTimeoutId = setTimeout(() => {\n getVerificationResult(nextRetryCount, maxRetries);\n }, 10000);\n \n setTimeoutId(newTimeoutId);\n } else {\n setIsRetrying(false);\n console.error('Max retries reached after errors');\n }\n }\n };\n\n useEffect(() => {\n if (state.session.session_id) {\n getVerificationResult();\n }\n }, [state.session.session_id]);\n\n // Nettoyage des timeouts lors du démontage du composant\n useEffect(() => {\n return () => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n };\n }, [timeoutId]);\n\n if (isSuccess) {\n return (\n <View style={styles.container}>\n <Text style={styles.title}>{t('kyc.verificationProgress.steps.complete')}</Text>\n <Text style={styles.subtitle}>{t('kyc.verificationProgress.subtitle')}</Text>\n <TouchableOpacity style={[styles.button, styles.primary]} onPress={() => actions.submitVerification()}>\n <Text style={styles.buttonText}>{t('common.continue')}</Text>\n </TouchableOpacity>\n {verification.result?.referenceId ? (\n <Text style={styles.refText}>{`Verification ID: ${verification.result.referenceId}`}</Text>\n ) : null}\n </View>\n );\n }\n\n if (isFailed) {\n return (\n <View style={styles.container}>\n <Text style={styles.title}>{t('kyc.verificationProgress.status.failed')}</Text>\n <Text style={styles.subtitle}>{t('errors.validationError')}</Text>\n <View style={styles.issuesBox}>\n <Text style={styles.issuesTitle}>{t('common.error')}</Text>\n {Array.isArray(verification.result?.issues) && verification.result.issues.map((issue: string, idx: number) => (\n <Text key={idx} style={styles.issueItem}>• {issue}</Text>\n ))}\n </View>\n <TouchableOpacity style={[styles.button, styles.primary]} onPress={() => actions.goToComponent(state.template.components.find(c => c.type !== 'review_submit' && c.type !== 'verification_progress')?.id || 0)}>\n <Text style={styles.buttonText}>{t('common.retry')}</Text>\n </TouchableOpacity>\n <TouchableOpacity style={[styles.button, styles.secondary]}>\n <Text style={styles.secondaryText}>{t('common.info')}</Text>\n </TouchableOpacity>\n {verification.result?.referenceId ? (\n <Text style={styles.refText}>{`Reference ID: ${verification.result.referenceId}`}</Text>\n ) : null}\n </View>\n );\n }\n\n\n\n\n\n\n\n return (\n <View style={styles.container}>\n <Text style={styles.title}>{t('kyc.verificationProgress.title')}</Text>\n <Text style={styles.subtitle}>\n {isRetrying\n ? `${t('kyc.verificationProgress.retrying')} (${retryCount}/10)`\n : t('kyc.verificationProgress.estimatedTime')\n }\n </Text>\n\n <View style={styles.timeline}>\n <View style={[styles.dot, styles.done]}><Text style={styles.stepCheckmark}>✓</Text></View>\n <View style={styles.line} />\n <View style={[styles.dot, styles.active]}><Text style={styles.stepCheckmark}>2</Text></View>\n <View style={styles.line} />\n <View style={[styles.dot, styles.pending]}><Text style={styles.stepCheckmark}>3</Text></View>\n </View>\n\n <View style={styles.row}>\n <Text style={styles.stepLabel}>{t('kyc.verificationProgress.status.completed')}</Text>\n <Text style={styles.stepLabel}>{t('kyc.verificationProgress.steps.analyzing')}</Text>\n <Text style={styles.stepLabel}>{t('kyc.verificationProgress.steps.verifying')}</Text>\n </View>\n\n <View style={styles.card}>\n <Text style={styles.cardTitle}>{t('kyc.idCardCapture.title')}</Text>\n <Text style={styles.cardLine}>{t('kyc.verificationProgress.steps.extracting')}</Text>\n <Text style={styles.cardTitle}>{t('kyc.selfieCapture.title')}</Text>\n <Text style={styles.cardLine}>{t('kyc.verificationProgress.steps.analyzing')}</Text>\n <Text style={styles.cardTitle}>{t('kyc.verificationProgress.title')}</Text>\n <Text style={styles.cardLine}>\n {isRetrying\n ? `${t('kyc.verificationProgress.status.processing')}...`\n : t('kyc.verificationProgress.status.pending')\n }\n </Text>\n </View>\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: { flex: 1, width: '100%', paddingHorizontal: 16, paddingVertical: 12 },\n title: { fontSize: 24, fontWeight: 'bold', color: '#111827', textAlign: 'center', marginTop: 12 },\n subtitle: { fontSize: 14, color: '#6B7280', textAlign: 'center', marginTop: 8 },\n timeline: { flexDirection: 'row', alignItems: 'center', justifyContent: 'space-between', marginTop: 24 },\n dot: { width: 38, height: 38, borderRadius: 34, justifyContent: 'center', alignItems: 'center' },\n stepCheckmark: { color: 'white', fontSize: 16, fontWeight: 'bold' },\n line: { flex: 1, height: 4, backgroundColor: '#E5E7EB' },\n done: { backgroundColor: '#10B981' },\n active: { backgroundColor: '#F59E0B' },\n pending: { backgroundColor: '#E5E7EB' },\n row: { flexDirection: 'row', justifyContent: 'space-between', marginTop: 8 },\n stepLabel: { fontSize: 14, color: '#111827', fontWeight: '600' },\n card: { backgroundColor: 'white', padding: 16, borderRadius: 16, marginTop: 24 },\n cardTitle: { fontSize: 16, color: '#6B7280', marginTop: 8 },\n cardLine: { fontSize: 18, color: '#111827', fontWeight: '600', marginTop: 2 },\n // Success/Failure specific\n button: { paddingVertical: 14, borderRadius: 10, alignItems: 'center', marginTop: 20 },\n primary: { backgroundColor: '#2DBD60' },\n buttonText: { color: 'white', fontSize: 16, fontWeight: '600' },\n refText: { marginTop: 12, textAlign: 'center', color: '#6B7280' },\n issuesBox: { backgroundColor: '#FEF2F2', borderRadius: 16, padding: 16, marginTop: 20 },\n issuesTitle: { color: '#991B1B', fontWeight: '700', marginBottom: 8 },\n issueItem: { color: '#991B1B', marginTop: 4 },\n secondary: { backgroundColor: '#F3F4F6' },\n secondaryText: { color: '#111827', fontSize: 16, fontWeight: '600' },\n});\n\n\n\n"]}
@@ -1,4 +1,4 @@
1
1
  import { IdCardOverlayProps } from "./type";
2
- declare const IdCardOverlay: ({ xMin: xMinProps, yMin: yMinProps, xMax: xMaxProps, yMax: yMaxProps, cornerOpacity, instructions, cornerColor, stepperProps }: IdCardOverlayProps) => import("react").JSX.Element;
2
+ declare const IdCardOverlay: ({ xMin: xMinProps, yMin: yMinProps, xMax: xMaxProps, yMax: yMaxProps, cornerOpacity, instructions, cornerColor, stepperProps, isSuccess, language }: IdCardOverlayProps) => import("react").JSX.Element;
3
3
  export default IdCardOverlay;
4
4
  //# sourceMappingURL=IdCard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"IdCard.d.ts","sourceRoot":"","sources":["../../../src/components/OverLay/IdCard.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAM5C,QAAA,MAAM,aAAa,GAAI,gIAA4I,kBAAkB,gCA2IpL,CAAA;AAED,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"IdCard.d.ts","sourceRoot":"","sources":["../../../src/components/OverLay/IdCard.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAM5C,QAAA,MAAM,aAAa,GAAI,qJAAkK,kBAAkB,gCAmJ1M,CAAA;AAED,eAAe,aAAa,CAAC"}
@@ -2,7 +2,7 @@ import { Animated, Dimensions, StyleSheet, Text, View } from "react-native";
2
2
  import Svg, { Defs, Mask, Rect, Path } from "react-native-svg";
3
3
  import ScanningLine from "../Svgs/scanningLine";
4
4
  import StepOverlay from "./StepOverlay";
5
- const IdCardOverlay = ({ xMin: xMinProps, yMin: yMinProps, xMax: xMaxProps, yMax: yMaxProps, cornerOpacity, instructions, cornerColor = "#4CAF50", stepperProps }) => {
5
+ const IdCardOverlay = ({ xMin: xMinProps, yMin: yMinProps, xMax: xMaxProps, yMax: yMaxProps, cornerOpacity, instructions, cornerColor = "#4CAF50", stepperProps, isSuccess, language }) => {
6
6
  const screenWidth = Dimensions.get('window').width;
7
7
  const screenHeight = Dimensions.get('window').height;
8
8
  const boxWidth = xMaxProps - xMinProps;
@@ -14,7 +14,7 @@ const IdCardOverlay = ({ xMin: xMinProps, yMin: yMinProps, xMax: xMaxProps, yMax
14
14
  const yMax = yMin + boxHeight;
15
15
  return (<View style={StyleSheet.absoluteFill}>
16
16
  {stepperProps ? (<StepOverlay {...stepperProps}/>) : null}
17
-
17
+
18
18
  <Animated.View style={[styles.topIntruction]}>
19
19
  <Text style={styles.topIntructionText}>
20
20
  💡 {instructions}
@@ -51,15 +51,19 @@ const IdCardOverlay = ({ xMin: xMinProps, yMin: yMinProps, xMax: xMaxProps, yMax
51
51
  <Path d={`M ${xMax - 15} ${yMax} Q ${xMax} ${yMax} ${xMax} ${yMax - 15} L ${xMax} ${yMax - 20}`} stroke={cornerColor} strokeWidth="8" fill="none" opacity={cornerOpacity}/>
52
52
  <Path d={`M ${xMax - 20} ${yMax} L ${xMax - 15} ${yMax}`} stroke={cornerColor} strokeWidth="8" opacity={cornerOpacity}/>
53
53
  </Svg>
54
-
55
- <ScanningLine yMin={yMin} screenWidth={screenWidth} height={screenHeight} yMax={yMax}/>
54
+ {isSuccess ? null : (<ScanningLine yMin={yMin} screenWidth={screenWidth} height={screenHeight} yMax={yMax}/>)}
55
+ {/* <ScanningLine yMin={yMin} screenWidth={screenWidth} height={screenHeight} yMax={yMax} /> */}
56
56
 
57
57
  <View style={styles.bottomIntruction}>
58
58
  <Text style={styles.bottomTitle}>
59
- Mesurez 100cm de hauteur.
59
+ {language === "en" ? "Measure 100cm in height." : "Mesurez 100cm de hauteur."}
60
+
60
61
  </Text>
61
62
  <Text style={styles.bottomSubtitle}>
62
- Ne pas déplacer la caméra pendant la capture. • Ne pas déplacer la caméra pendant la capture.
63
+ {language === "en"
64
+ ? "Do not move the camera during capture. • Do not move the camera during capture."
65
+ : "Ne pas déplacer la caméra pendant la capture. • Ne pas déplacer la caméra pendant la capture."}
66
+
63
67
  </Text>
64
68
  </View>
65
69
  </View>);
@@ -1 +1 @@
1
- {"version":3,"file":"IdCard.js","sourceRoot":"","sources":["../../../src/components/OverLay/IdCard.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Animated, Dimensions, StyleSheet, Text, View } from \"react-native\";\nimport Svg, { Defs, Mask, Rect, Path } from \"react-native-svg\";\nimport ScanningLine from \"../Svgs/scanningLine\";\nimport { IdCardOverlayProps } from \"./type\";\nimport StepOverlay from \"./StepOverlay\";\n\n\n\n\nconst IdCardOverlay = ({ xMin: xMinProps, yMin: yMinProps, xMax: xMaxProps, yMax: yMaxProps, cornerOpacity, instructions, cornerColor = \"#4CAF50\", stepperProps }: IdCardOverlayProps) => {\n const screenWidth = Dimensions.get('window').width;\n const screenHeight = Dimensions.get('window').height;\n\n const boxWidth = xMaxProps - xMinProps;\n const boxHeight = yMaxProps - yMinProps;\n\n\n \n\n \n \n // Calculer les coordonnées pour centrer le cadre\n const xMin = (screenWidth - boxWidth) / 2;\n const yMin = (screenHeight - boxHeight) / 3;\n const xMax = xMin + boxWidth;\n const yMax = yMin + boxHeight;\n\n return (\n <View style={StyleSheet.absoluteFill}>\n {stepperProps ? (\n <StepOverlay {...stepperProps} />\n ) : null}\n \n <Animated.View style={[styles.topIntruction]}>\n <Text style={styles.topIntructionText}>\n 💡 {instructions}\n </Text>\n </Animated.View>\n\n <Svg\n height={screenHeight}\n width={screenWidth}\n style={styles.svg}\n >\n <Defs>\n <Mask id=\"cameraMask\">\n {/* Fond blanc - zone visible */}\n <Rect\n x=\"0\"\n y=\"0\"\n width={screenWidth}\n height={screenHeight}\n fill=\"white\"\n />\n {/* Zone noire - zone masquée (transparente) */}\n <Rect\n x={xMin}\n y={yMin}\n width={boxWidth}\n height={boxHeight}\n fill=\"black\"\n />\n </Mask>\n </Defs>\n\n {/* Overlay semi-transparent avec masque */}\n <Rect\n x=\"0\"\n y=\"0\"\n width={screenWidth}\n height={screenHeight}\n fill=\"rgba(0, 0, 0, 0.5)\"\n mask=\"url(#cameraMask)\"\n />\n\n {/* Coins de la zone de capture - arrondis avec animation */}\n {/* Coin supérieur gauche */}\n <Path\n d={`M ${xMin + 15} ${yMin} Q ${xMin} ${yMin} ${xMin} ${yMin + 15} L ${xMin} ${yMin + 20}`}\n stroke={cornerColor}\n strokeWidth=\"8\"\n fill=\"none\"\n opacity={cornerOpacity}\n />\n <Path\n d={`M ${xMin + 20} ${yMin} L ${xMin + 15} ${yMin}`}\n stroke={cornerColor}\n strokeWidth=\"8\"\n opacity={cornerOpacity}\n />\n\n {/* Coin supérieur droit */}\n <Path\n d={`M ${xMax - 15} ${yMin} Q ${xMax} ${yMin} ${xMax} ${yMin + 15} L ${xMax} ${yMin + 20}`}\n stroke={cornerColor}\n strokeWidth=\"8\"\n fill=\"none\"\n opacity={cornerOpacity}\n />\n <Path\n d={`M ${xMax - 20} ${yMin} L ${xMax - 15} ${yMin}`}\n stroke={cornerColor}\n strokeWidth=\"8\"\n opacity={cornerOpacity}\n />\n\n {/* Coin inférieur gauche */}\n <Path\n d={`M ${xMin + 15} ${yMax} Q ${xMin} ${yMax} ${xMin} ${yMax - 15} L ${xMin} ${yMax - 20}`}\n stroke={cornerColor}\n strokeWidth=\"8\"\n fill=\"none\"\n opacity={cornerOpacity}\n />\n <Path\n d={`M ${xMin + 20} ${yMax} L ${xMin + 15} ${yMax}`}\n stroke={cornerColor}\n strokeWidth=\"8\"\n opacity={cornerOpacity}\n />\n\n {/* Coin inférieur droit */}\n <Path\n d={`M ${xMax - 15} ${yMax} Q ${xMax} ${yMax} ${xMax} ${yMax - 15} L ${xMax} ${yMax - 20}`}\n stroke={cornerColor}\n strokeWidth=\"8\"\n fill=\"none\"\n opacity={cornerOpacity}\n />\n <Path\n d={`M ${xMax - 20} ${yMax} L ${xMax - 15} ${yMax}`}\n stroke={cornerColor}\n strokeWidth=\"8\"\n opacity={cornerOpacity}\n />\n </Svg>\n \n <ScanningLine yMin={yMin} screenWidth={screenWidth} height={screenHeight} yMax={yMax} />\n\n <View style={styles.bottomIntruction}>\n <Text style={styles.bottomTitle}>\n Mesurez 100cm de hauteur.\n </Text>\n <Text style={styles.bottomSubtitle}>\n Ne pas déplacer la caméra pendant la capture. • Ne pas déplacer la caméra pendant la capture.\n </Text>\n </View>\n </View>)\n}\n\nexport default IdCardOverlay;\n\nconst styles = StyleSheet.create({\n overlay: {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '50%',\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\n },\n svg: {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n },\n topIntruction: {\n zIndex: 1000,\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n paddingVertical: 20,\n paddingHorizontal: 10,\n marginHorizontal: 20,\n marginTop: 10,\n backgroundColor: \"#FDE04730\",\n borderColor: \"#FDE047\",\n borderWidth: 1,\n borderRadius: 10,\n gap: 10,\n },\n topIntructionText: {\n color: '#FDE047',\n fontSize: 14,\n fontWeight: 'bold',\n textAlign: 'center',\n },\n bottomIntruction: {\n position: 'absolute',\n bottom: 0,\n left: 0,\n width: '100%',\n height: '35%',\n paddingHorizontal: 20,\n },\n bottomIntructionTextBold: {\n color: 'white',\n fontSize: 16,\n fontWeight: 'bold',\n textAlign: 'center',\n },\n bottomIntructionText: {\n color: 'white',\n fontSize: 14,\n fontWeight: 'bold',\n textAlign: 'center',\n },\n bottomTitle: {\n color: 'white',\n fontSize: 25,\n fontWeight: 'bold',\n textAlign: 'center',\n },\n bottomSubtitle: {\n color: 'white',\n marginTop: 15,\n fontSize: 14,\n fontWeight: '500',\n textAlign: 'center',\n },\n\n\n image: {\n position: 'absolute',\n borderRadius: 10,\n },\n stepperContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingHorizontal: 20,\n paddingVertical: 15,\n // backgroundColor: 'rgba(0, 0, 0, 0.5)',\n zIndex: 1000,\n },\n stepperItem: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n },\n stepperDetails: {\n\n alignItems: 'center',\n justifyContent: 'center',\n },\n stepperItemText: {\n color: 'white',\n fontSize: 20,\n fontWeight: 'bold',\n },\n stepperDetailsText: {\n color: 'white',\n fontSize: 12,\n fontWeight: '500',\n },\n back: {\n // flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n },\n next: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n },\n\n})"]}
1
+ {"version":3,"file":"IdCard.js","sourceRoot":"","sources":["../../../src/components/OverLay/IdCard.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Animated, Dimensions, StyleSheet, Text, View } from \"react-native\";\nimport Svg, { Defs, Mask, Rect, Path } from \"react-native-svg\";\nimport ScanningLine from \"../Svgs/scanningLine\";\nimport { IdCardOverlayProps } from \"./type\";\nimport StepOverlay from \"./StepOverlay\";\n\n\n\n\nconst IdCardOverlay = ({ xMin: xMinProps, yMin: yMinProps, xMax: xMaxProps, yMax: yMaxProps, cornerOpacity, instructions, cornerColor = \"#4CAF50\", stepperProps, isSuccess, language }: IdCardOverlayProps) => {\n const screenWidth = Dimensions.get('window').width;\n const screenHeight = Dimensions.get('window').height;\n\n const boxWidth = xMaxProps - xMinProps;\n const boxHeight = yMaxProps - yMinProps;\n\n \n\n\n\n\n // Calculer les coordonnées pour centrer le cadre\n const xMin = (screenWidth - boxWidth) / 2;\n const yMin = (screenHeight - boxHeight) / 3;\n const xMax = xMin + boxWidth;\n const yMax = yMin + boxHeight;\n\n return (\n <View style={StyleSheet.absoluteFill}>\n {stepperProps ? (\n <StepOverlay {...stepperProps} />\n ) : null}\n\n <Animated.View style={[styles.topIntruction]}>\n <Text style={styles.topIntructionText}>\n 💡 {instructions}\n </Text>\n </Animated.View>\n\n <Svg\n height={screenHeight}\n width={screenWidth}\n style={styles.svg}\n >\n <Defs>\n <Mask id=\"cameraMask\">\n {/* Fond blanc - zone visible */}\n <Rect\n x=\"0\"\n y=\"0\"\n width={screenWidth}\n height={screenHeight}\n fill=\"white\"\n />\n {/* Zone noire - zone masquée (transparente) */}\n <Rect\n x={xMin}\n y={yMin}\n width={boxWidth}\n height={boxHeight}\n fill=\"black\"\n />\n </Mask>\n </Defs>\n\n {/* Overlay semi-transparent avec masque */}\n <Rect\n x=\"0\"\n y=\"0\"\n width={screenWidth}\n height={screenHeight}\n fill=\"rgba(0, 0, 0, 0.5)\"\n mask=\"url(#cameraMask)\"\n />\n\n {/* Coins de la zone de capture - arrondis avec animation */}\n {/* Coin supérieur gauche */}\n <Path\n d={`M ${xMin + 15} ${yMin} Q ${xMin} ${yMin} ${xMin} ${yMin + 15} L ${xMin} ${yMin + 20}`}\n stroke={cornerColor}\n strokeWidth=\"8\"\n fill=\"none\"\n opacity={cornerOpacity}\n />\n <Path\n d={`M ${xMin + 20} ${yMin} L ${xMin + 15} ${yMin}`}\n stroke={cornerColor}\n strokeWidth=\"8\"\n opacity={cornerOpacity}\n />\n\n {/* Coin supérieur droit */}\n <Path\n d={`M ${xMax - 15} ${yMin} Q ${xMax} ${yMin} ${xMax} ${yMin + 15} L ${xMax} ${yMin + 20}`}\n stroke={cornerColor}\n strokeWidth=\"8\"\n fill=\"none\"\n opacity={cornerOpacity}\n />\n <Path\n d={`M ${xMax - 20} ${yMin} L ${xMax - 15} ${yMin}`}\n stroke={cornerColor}\n strokeWidth=\"8\"\n opacity={cornerOpacity}\n />\n\n {/* Coin inférieur gauche */}\n <Path\n d={`M ${xMin + 15} ${yMax} Q ${xMin} ${yMax} ${xMin} ${yMax - 15} L ${xMin} ${yMax - 20}`}\n stroke={cornerColor}\n strokeWidth=\"8\"\n fill=\"none\"\n opacity={cornerOpacity}\n />\n <Path\n d={`M ${xMin + 20} ${yMax} L ${xMin + 15} ${yMax}`}\n stroke={cornerColor}\n strokeWidth=\"8\"\n opacity={cornerOpacity}\n />\n\n {/* Coin inférieur droit */}\n <Path\n d={`M ${xMax - 15} ${yMax} Q ${xMax} ${yMax} ${xMax} ${yMax - 15} L ${xMax} ${yMax - 20}`}\n stroke={cornerColor}\n strokeWidth=\"8\"\n fill=\"none\"\n opacity={cornerOpacity}\n />\n <Path\n d={`M ${xMax - 20} ${yMax} L ${xMax - 15} ${yMax}`}\n stroke={cornerColor}\n strokeWidth=\"8\"\n opacity={cornerOpacity}\n />\n </Svg>\n {isSuccess ? null : (\n <ScanningLine yMin={yMin} screenWidth={screenWidth} height={screenHeight} yMax={yMax} />\n )}\n {/* <ScanningLine yMin={yMin} screenWidth={screenWidth} height={screenHeight} yMax={yMax} /> */}\n\n <View style={styles.bottomIntruction}>\n <Text style={styles.bottomTitle}>\n {language === \"en\" ? \"Measure 100cm in height.\":\"Mesurez 100cm de hauteur.\"}\n \n </Text>\n <Text style={styles.bottomSubtitle}>\n {\n language === \"en\" \n ? \"Do not move the camera during capture. • Do not move the camera during capture.\"\n : \"Ne pas déplacer la caméra pendant la capture. • Ne pas déplacer la caméra pendant la capture.\"\n }\n \n </Text>\n </View>\n </View>)\n}\n\nexport default IdCardOverlay;\n\nconst styles = StyleSheet.create({\n overlay: {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '50%',\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\n },\n svg: {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n },\n topIntruction: {\n zIndex: 1000,\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n paddingVertical: 20,\n paddingHorizontal: 10,\n marginHorizontal: 20,\n marginTop: 10,\n backgroundColor: \"#FDE04730\",\n borderColor: \"#FDE047\",\n borderWidth: 1,\n borderRadius: 10,\n gap: 10,\n },\n topIntructionText: {\n color: '#FDE047',\n fontSize: 14,\n fontWeight: 'bold',\n textAlign: 'center',\n },\n bottomIntruction: {\n position: 'absolute',\n bottom: 0,\n left: 0,\n width: '100%',\n height: '35%',\n paddingHorizontal: 20,\n },\n bottomIntructionTextBold: {\n color: 'white',\n fontSize: 16,\n fontWeight: 'bold',\n textAlign: 'center',\n },\n bottomIntructionText: {\n color: 'white',\n fontSize: 14,\n fontWeight: 'bold',\n textAlign: 'center',\n },\n bottomTitle: {\n color: 'white',\n fontSize: 25,\n fontWeight: 'bold',\n textAlign: 'center',\n },\n bottomSubtitle: {\n color: 'white',\n marginTop: 15,\n fontSize: 14,\n fontWeight: '500',\n textAlign: 'center',\n },\n\n\n image: {\n position: 'absolute',\n borderRadius: 10,\n },\n stepperContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingHorizontal: 20,\n paddingVertical: 15,\n // backgroundColor: 'rgba(0, 0, 0, 0.5)',\n zIndex: 1000,\n },\n stepperItem: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n },\n stepperDetails: {\n\n alignItems: 'center',\n justifyContent: 'center',\n },\n stepperItemText: {\n color: 'white',\n fontSize: 20,\n fontWeight: 'bold',\n },\n stepperDetailsText: {\n color: 'white',\n fontSize: 12,\n fontWeight: '500',\n },\n back: {\n // flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n },\n next: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n },\n\n})"]}
@@ -1,4 +1,4 @@
1
1
  import { IdCardOverlayProps } from "./type";
2
- declare const SelfieOverlay: ({ xMin, yMin, xMax, yMax, cornerOpacity, instructions, cornerColor, stepperProps, instructionsTile, instructionsSubtitle, orientation }: IdCardOverlayProps) => import("react").JSX.Element;
2
+ declare const SelfieOverlay: ({ xMin, yMin, xMax, yMax, cornerOpacity, instructions, cornerColor, stepperProps, instructionsTile, instructionsSubtitle, orientation, isSuccess }: IdCardOverlayProps) => import("react").JSX.Element;
3
3
  export default SelfieOverlay;
4
4
  //# sourceMappingURL=SelfieOverlay.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SelfieOverlay.d.ts","sourceRoot":"","sources":["../../../src/components/OverLay/SelfieOverlay.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAO5C,QAAA,MAAM,aAAa,GAAI,yIAAqJ,kBAAkB,gCAuG7L,CAAA;AAED,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"SelfieOverlay.d.ts","sourceRoot":"","sources":["../../../src/components/OverLay/SelfieOverlay.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAO5C,QAAA,MAAM,aAAa,GAAI,oJAAgK,kBAAkB,gCAwGxM,CAAA;AAED,eAAe,aAAa,CAAC"}
@@ -4,7 +4,7 @@ import ScanningLine from "../Svgs/scanningLine";
4
4
  import FrontSelfieIcon from "../Svgs/frontSelfieIcon";
5
5
  import StepOverlay from "./StepOverlay";
6
6
  import SideSelfieIcon from "../Svgs/sideSelfieIcon";
7
- const SelfieOverlay = ({ xMin, yMin, xMax, yMax, cornerOpacity, instructions, cornerColor = "#4CAF50", stepperProps, instructionsTile, instructionsSubtitle, orientation }) => {
7
+ const SelfieOverlay = ({ xMin, yMin, xMax, yMax, cornerOpacity, instructions, cornerColor = "#4CAF50", stepperProps, instructionsTile, instructionsSubtitle, orientation, isSuccess }) => {
8
8
  const screenWidth = Dimensions.get('window').width;
9
9
  const screenHeight = Dimensions.get('window').height;
10
10
  // Dimensions de l'icône FrontSelfieIcon (240x285 selon le viewBox)
@@ -34,7 +34,7 @@ const SelfieOverlay = ({ xMin, yMin, xMax, yMax, cornerOpacity, instructions, co
34
34
 
35
35
  {/* Overlay semi-transparent avec masque */}
36
36
  <Rect x="0" y="0" width="100%" height="100%" fill="rgba(0, 0, 0, 0.5)" mask="url(#faceMask)"/>
37
- <ScanningLine yMin={scanningYMin} screenWidth={screenWidth} height={screenHeight} yMax={scanningYMax}/>
37
+ {isSuccess ? null : <ScanningLine yMin={scanningYMin} screenWidth={screenWidth} height={screenHeight} yMax={scanningYMax}/>}
38
38
  </Svg>
39
39
 
40
40
  {/* Container de l'icône - centré automatiquement */}
@@ -44,11 +44,11 @@ const SelfieOverlay = ({ xMin, yMin, xMax, yMax, cornerOpacity, instructions, co
44
44
  width: iconWidth,
45
45
  height: iconHeight,
46
46
  }]}>
47
- {orientation === "front" ? <FrontSelfieIcon /> : <SideSelfieIcon />}
47
+ {orientation === "center" ? <FrontSelfieIcon /> : <SideSelfieIcon />}
48
48
  </View>
49
49
 
50
50
  {/* Flèche directionnelle pour les orientations latérales */}
51
- {orientation !== "front" ? (<View style={[
51
+ {orientation !== "center" ? (<View style={[
52
52
  styles.arrowContainer,
53
53
  {
54
54
  top: iconY + iconHeight / 2 - 50, // Centré verticalement par rapport à l'icône
@@ -62,6 +62,7 @@ const SelfieOverlay = ({ xMin, yMin, xMax, yMax, cornerOpacity, instructions, co
62
62
  ]}/>
63
63
  </View>) : null}
64
64
 
65
+
65
66
  <View style={styles.bottomIntruction}>
66
67
  <Text style={styles.bottomTitle}>
67
68
  {instructionsTile}
@@ -1 +1 @@
1
- {"version":3,"file":"SelfieOverlay.js","sourceRoot":"","sources":["../../../src/components/OverLay/SelfieOverlay.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Dimensions, Image, StyleSheet, Text, View } from \"react-native\";\nimport { IdCardOverlayProps } from \"./type\";\nimport Svg, { Rect, Path, Mask, Defs } from 'react-native-svg';\nimport ScanningLine from \"../Svgs/scanningLine\";\nimport FrontSelfieIcon from \"../Svgs/frontSelfieIcon\";\nimport StepOverlay from \"./StepOverlay\";\nimport SideSelfieIcon from \"../Svgs/sideSelfieIcon\";\n\nconst SelfieOverlay = ({ xMin, yMin, xMax, yMax, cornerOpacity, instructions, cornerColor = \"#4CAF50\", stepperProps, instructionsTile, instructionsSubtitle, orientation }: IdCardOverlayProps) => {\n const screenWidth = Dimensions.get('window').width;\n const screenHeight = Dimensions.get('window').height;\n\n // Dimensions de l'icône FrontSelfieIcon (240x285 selon le viewBox)\n const iconWidth = 240;\n const iconHeight = 285;\n\n // Calculer la position pour centrer l'icône\n const iconX = (screenWidth - iconWidth) / 2;\n const iconY = (screenHeight - iconHeight) / 3;\n\n // Position du centre pour le masque (doit correspondre au centre de l'icône)\n const maskCenterX = iconX + iconWidth / 2;\n const maskCenterY = iconY + iconHeight / 2;\n\n // Zone pour ScanningLine (basée sur la zone de l'icône)\n const scanningYMin = iconY;\n const scanningYMax = iconY + iconHeight;\n\n return (\n <View style={StyleSheet.absoluteFill}>\n {stepperProps ? (\n <StepOverlay {...stepperProps} />\n ) : null}\n\n <Svg\n height=\"100%\"\n width=\"100%\"\n style={[StyleSheet.absoluteFill]}\n >\n <Defs>\n <Mask id=\"faceMask\">\n {/* Fond blanc - zone visible (extérieur) */}\n <Rect\n x=\"0\"\n y=\"0\"\n width=\"100%\"\n height=\"100%\"\n fill=\"white\"\n />\n {/* Zone noire - zone masquée (forme du visage) - exactement alignée avec l'icône */}\n <Path\n d=\"M35.4198 48.9242C38.2153 41.9014 42.5851 35.6693 48.3859 30.8232C61.3601 19.9842 88.1543 1.5 120 1.5C151.846 1.5 178.64 19.9842 191.614 30.8232C197.415 35.6693 201.785 41.9014 204.58 48.9242C210.484 63.7564 220 93.0114 220 127.5C220 168.082 204.19 212.617 198.234 227.954C196.792 231.667 194.971 235.196 192.628 238.417C183.46 251.021 156.313 283.5 120 283.5C83.6867 283.5 56.5401 251.021 47.3723 238.417C45.0294 235.196 43.2081 231.667 41.7663 227.954C35.8102 212.617 20 168.082 20 127.5C20 93.0114 29.5157 63.7564 35.4198 48.9242Z\"\n fill=\"black\"\n transform={`translate(${maskCenterX}, ${maskCenterY}) translate(-120, -142.5)`}\n />\n </Mask>\n </Defs>\n\n {/* Overlay semi-transparent avec masque */}\n <Rect\n x=\"0\"\n y=\"0\"\n width=\"100%\"\n height=\"100%\"\n fill=\"rgba(0, 0, 0, 0.5)\"\n mask=\"url(#faceMask)\"\n />\n <ScanningLine yMin={scanningYMin} screenWidth={screenWidth} height={screenHeight} yMax={scanningYMax} />\n </Svg>\n\n {/* Container de l'icône - centré automatiquement */}\n <View style={[styles.iconContainer, {\n left: iconX,\n top: iconY,\n width: iconWidth,\n height: iconHeight,\n }]}>\n {orientation === \"front\" ? <FrontSelfieIcon /> : <SideSelfieIcon />}\n </View>\n\n {/* Flèche directionnelle pour les orientations latérales */}\n {orientation !== \"front\" ? (\n <View style={[\n styles.arrowContainer,\n {\n top: iconY + iconHeight / 2 - 50, // Centré verticalement par rapport à l'icône\n left: orientation === \"left\" ? iconX - 72 : 'auto',\n right: orientation === \"right\" ? iconX-75: 'auto'\n }\n ]}>\n <Image\n source={require('../Svgs/directionArrow.gif')}\n resizeMode=\"contain\"\n style={[\n styles.arrowImage,\n { transform: orientation === \"right\" ? [{ scaleX: -1 }] : [] }\n ]}\n />\n </View>\n ) : null}\n\n <View style={styles.bottomIntruction}>\n <Text style={styles.bottomTitle}>\n {instructionsTile}\n </Text>\n <Text style={styles.bottomSubtitle}>\n {instructionsSubtitle}\n </Text>\n </View>\n </View>\n )\n}\n\nexport default SelfieOverlay;\n\n\nconst styles = StyleSheet.create({\n overlay: {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '50%',\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\n },\n svg: {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n },\n topIntruction: {\n zIndex: 1000,\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n paddingVertical: 20,\n paddingHorizontal: 10,\n marginHorizontal: 20,\n marginTop: 10,\n backgroundColor: \"#FDE04730\",\n borderColor: \"#FDE047\",\n borderWidth: 1,\n borderRadius: 10,\n gap: 10,\n },\n topIntructionText: {\n color: '#FDE047',\n fontSize: 14,\n fontWeight: 'bold',\n textAlign: 'center',\n },\n bottomIntruction: {\n position: 'absolute',\n bottom: 0,\n left: 0,\n width: '100%',\n height: '35%',\n paddingHorizontal: 20,\n },\n bottomIntructionTextBold: {\n color: 'white',\n fontSize: 16,\n fontWeight: 'bold',\n textAlign: 'center',\n },\n bottomIntructionText: {\n color: 'white',\n fontSize: 14,\n fontWeight: 'bold',\n textAlign: 'center',\n },\n bottomTitle: {\n color: 'white',\n fontSize: 25,\n fontWeight: 'bold',\n textAlign: 'center',\n },\n bottomSubtitle: {\n color: 'white',\n marginTop: 15,\n fontSize: 14,\n fontWeight: '500',\n textAlign: 'center',\n },\n\n\n image: {\n position: 'absolute',\n borderRadius: 10,\n },\n iconContainer: {\n position: 'absolute',\n justifyContent: 'center',\n alignItems: 'center',\n },\n arrowContainer: {\n position: 'absolute',\n width: 100,\n height: 100,\n justifyContent: 'center',\n alignItems: 'center',\n },\n arrowImage: {\n width: 100,\n height: 100,\n objectFit: 'contain',\n },\n})\n"]}
1
+ {"version":3,"file":"SelfieOverlay.js","sourceRoot":"","sources":["../../../src/components/OverLay/SelfieOverlay.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Dimensions, Image, StyleSheet, Text, View } from \"react-native\";\nimport { IdCardOverlayProps } from \"./type\";\nimport Svg, { Rect, Path, Mask, Defs } from 'react-native-svg';\nimport ScanningLine from \"../Svgs/scanningLine\";\nimport FrontSelfieIcon from \"../Svgs/frontSelfieIcon\";\nimport StepOverlay from \"./StepOverlay\";\nimport SideSelfieIcon from \"../Svgs/sideSelfieIcon\";\n\nconst SelfieOverlay = ({ xMin, yMin, xMax, yMax, cornerOpacity, instructions, cornerColor = \"#4CAF50\", stepperProps, instructionsTile, instructionsSubtitle, orientation, isSuccess }: IdCardOverlayProps) => {\n const screenWidth = Dimensions.get('window').width;\n const screenHeight = Dimensions.get('window').height;\n\n // Dimensions de l'icône FrontSelfieIcon (240x285 selon le viewBox)\n const iconWidth = 240;\n const iconHeight = 285;\n\n // Calculer la position pour centrer l'icône\n const iconX = (screenWidth - iconWidth) / 2;\n const iconY = (screenHeight - iconHeight) / 3;\n\n // Position du centre pour le masque (doit correspondre au centre de l'icône)\n const maskCenterX = iconX + iconWidth / 2;\n const maskCenterY = iconY + iconHeight / 2;\n\n // Zone pour ScanningLine (basée sur la zone de l'icône)\n const scanningYMin = iconY;\n const scanningYMax = iconY + iconHeight;\n\n return (\n <View style={StyleSheet.absoluteFill}>\n {stepperProps ? (\n <StepOverlay {...stepperProps} />\n ) : null}\n\n <Svg\n height=\"100%\"\n width=\"100%\"\n style={[StyleSheet.absoluteFill]}\n >\n <Defs>\n <Mask id=\"faceMask\">\n {/* Fond blanc - zone visible (extérieur) */}\n <Rect\n x=\"0\"\n y=\"0\"\n width=\"100%\"\n height=\"100%\"\n fill=\"white\"\n />\n {/* Zone noire - zone masquée (forme du visage) - exactement alignée avec l'icône */}\n <Path\n d=\"M35.4198 48.9242C38.2153 41.9014 42.5851 35.6693 48.3859 30.8232C61.3601 19.9842 88.1543 1.5 120 1.5C151.846 1.5 178.64 19.9842 191.614 30.8232C197.415 35.6693 201.785 41.9014 204.58 48.9242C210.484 63.7564 220 93.0114 220 127.5C220 168.082 204.19 212.617 198.234 227.954C196.792 231.667 194.971 235.196 192.628 238.417C183.46 251.021 156.313 283.5 120 283.5C83.6867 283.5 56.5401 251.021 47.3723 238.417C45.0294 235.196 43.2081 231.667 41.7663 227.954C35.8102 212.617 20 168.082 20 127.5C20 93.0114 29.5157 63.7564 35.4198 48.9242Z\"\n fill=\"black\"\n transform={`translate(${maskCenterX}, ${maskCenterY}) translate(-120, -142.5)`}\n />\n </Mask>\n </Defs>\n\n {/* Overlay semi-transparent avec masque */}\n <Rect\n x=\"0\"\n y=\"0\"\n width=\"100%\"\n height=\"100%\"\n fill=\"rgba(0, 0, 0, 0.5)\"\n mask=\"url(#faceMask)\"\n />\n {isSuccess ? null : <ScanningLine yMin={scanningYMin} screenWidth={screenWidth} height={screenHeight} yMax={scanningYMax} />}\n </Svg>\n\n {/* Container de l'icône - centré automatiquement */}\n <View style={[styles.iconContainer, {\n left: iconX,\n top: iconY,\n width: iconWidth,\n height: iconHeight,\n }]}>\n {orientation === \"center\" ? <FrontSelfieIcon /> : <SideSelfieIcon />}\n </View>\n\n {/* Flèche directionnelle pour les orientations latérales */}\n {orientation !== \"center\" ? (\n <View style={[\n styles.arrowContainer,\n {\n top: iconY + iconHeight / 2 - 50, // Centré verticalement par rapport à l'icône\n left: orientation === \"left\" ? iconX - 72 : 'auto',\n right: orientation === \"right\" ? iconX - 75 : 'auto'\n }\n ]}>\n <Image\n source={require('../Svgs/directionArrow.gif')}\n resizeMode=\"contain\"\n style={[\n styles.arrowImage,\n { transform: orientation === \"right\" ? [{ scaleX: -1 }] : [] }\n ]}\n />\n </View>\n ) : null}\n\n\n <View style={styles.bottomIntruction}>\n <Text style={styles.bottomTitle}>\n {instructionsTile}\n </Text>\n <Text style={styles.bottomSubtitle}>\n {instructionsSubtitle}\n </Text>\n </View>\n </View>\n )\n}\n\nexport default SelfieOverlay;\n\n\nconst styles = StyleSheet.create({\n overlay: {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '50%',\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\n },\n svg: {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n },\n topIntruction: {\n zIndex: 1000,\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n paddingVertical: 20,\n paddingHorizontal: 10,\n marginHorizontal: 20,\n marginTop: 10,\n backgroundColor: \"#FDE04730\",\n borderColor: \"#FDE047\",\n borderWidth: 1,\n borderRadius: 10,\n gap: 10,\n },\n topIntructionText: {\n color: '#FDE047',\n fontSize: 14,\n fontWeight: 'bold',\n textAlign: 'center',\n },\n bottomIntruction: {\n position: 'absolute',\n bottom: 0,\n left: 0,\n width: '100%',\n height: '35%',\n paddingHorizontal: 20,\n },\n bottomIntructionTextBold: {\n color: 'white',\n fontSize: 16,\n fontWeight: 'bold',\n textAlign: 'center',\n },\n bottomIntructionText: {\n color: 'white',\n fontSize: 14,\n fontWeight: 'bold',\n textAlign: 'center',\n },\n bottomTitle: {\n color: 'white',\n fontSize: 25,\n fontWeight: 'bold',\n textAlign: 'center',\n },\n bottomSubtitle: {\n color: 'white',\n marginTop: 15,\n fontSize: 14,\n fontWeight: '500',\n textAlign: 'center',\n },\n\n\n image: {\n position: 'absolute',\n borderRadius: 10,\n },\n iconContainer: {\n position: 'absolute',\n justifyContent: 'center',\n alignItems: 'center',\n },\n arrowContainer: {\n position: 'absolute',\n width: 100,\n height: 100,\n justifyContent: 'center',\n alignItems: 'center',\n },\n arrowImage: {\n width: 100,\n height: 100,\n objectFit: 'contain',\n },\n})\n"]}
@@ -1,3 +1,5 @@
1
+ import { ViewStyle } from "react-native";
2
+ import { ISilentCaptureResult } from "../../types/KYC.types";
1
3
  export interface IdCardOverlayProps {
2
4
  xMin: number;
3
5
  yMin: number;
@@ -9,7 +11,10 @@ export interface IdCardOverlayProps {
9
11
  stepperProps?: StepperProps;
10
12
  instructionsTile?: string;
11
13
  instructionsSubtitle?: string;
12
- orientation?: 'front' | 'left' | 'right';
14
+ orientation?: 'center' | 'left' | 'right';
15
+ isAnalyzing?: boolean;
16
+ isSuccess?: boolean;
17
+ language: string;
13
18
  }
14
19
  interface StepperProps {
15
20
  back: () => void;
@@ -17,5 +22,70 @@ interface StepperProps {
17
22
  step: number;
18
23
  totalSteps: number;
19
24
  }
25
+ export interface ExtractMrzTextResponse {
26
+ parsed_data: {
27
+ mrz_type: string;
28
+ document_code: string;
29
+ issuer_code: string;
30
+ surname: string;
31
+ given_name: string;
32
+ document_number: string;
33
+ document_number_checkdigit: string;
34
+ nationality_code: string;
35
+ birth_date: string;
36
+ sex: string;
37
+ expiry_date: string;
38
+ optional_data: string;
39
+ mrz_text: string;
40
+ status: string;
41
+ };
42
+ success: boolean;
43
+ }
44
+ export interface EnhancedCameraViewProps {
45
+ instructions?: string;
46
+ showCamera: boolean;
47
+ cameraType?: 'front' | 'back';
48
+ style?: ViewStyle;
49
+ onCapture?: (result: {
50
+ success: boolean;
51
+ path?: string;
52
+ error?: string;
53
+ }) => void;
54
+ onSilentCapture?: (result: {
55
+ success: boolean;
56
+ path?: string;
57
+ error?: string;
58
+ }) => void;
59
+ silentCaptureResult?: ISilentCaptureResult;
60
+ onError?: (event: {
61
+ message: string;
62
+ }) => void;
63
+ onClose?: () => void;
64
+ enableFlash?: boolean;
65
+ enableHdr?: boolean;
66
+ quality?: 'low' | 'medium' | 'high';
67
+ showCaptureButton?: boolean;
68
+ showSwitchCamera?: boolean;
69
+ overlayComponent?: React.ReactNode;
70
+ bbox?: {
71
+ xMin: number;
72
+ yMin: number;
73
+ xMax: number;
74
+ yMax: number;
75
+ borderColor?: string;
76
+ borderWidth?: number;
77
+ cornerRadius?: number;
78
+ };
79
+ canFlip?: boolean;
80
+ enableVideo?: boolean;
81
+ isRecording?: boolean;
82
+ onVideoRecordingStart?: () => void;
83
+ onVideoRecordingStop?: (result: {
84
+ success: boolean;
85
+ path?: string;
86
+ error?: string;
87
+ }) => void;
88
+ videoDuration?: number;
89
+ }
20
90
  export {};
21
91
  //# sourceMappingURL=type.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../../src/components/OverLay/type.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;CAC5C;AAGD,UAAU,YAAY;IAClB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACtB"}
1
+ {"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../../src/components/OverLay/type.ts"],"names":[],"mappings":"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"}