@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.
- package/build/api/axios.d.ts +30 -0
- package/build/api/axios.d.ts.map +1 -0
- package/build/api/axios.js +92 -0
- package/build/api/axios.js.map +1 -0
- package/build/components/EnhancedCameraView.d.ts +1 -41
- package/build/components/EnhancedCameraView.d.ts.map +1 -1
- package/build/components/EnhancedCameraView.js +75 -34
- package/build/components/EnhancedCameraView.js.map +1 -1
- package/build/components/EnhancedCameraView.web.d.ts +1 -41
- package/build/components/EnhancedCameraView.web.d.ts.map +1 -1
- package/build/components/EnhancedCameraView.web.js +28 -4
- package/build/components/EnhancedCameraView.web.js.map +1 -1
- package/build/components/KYCElements/CountrySelectionTemplate.d.ts +2 -2
- package/build/components/KYCElements/CountrySelectionTemplate.d.ts.map +1 -1
- package/build/components/KYCElements/CountrySelectionTemplate.js +77 -114
- package/build/components/KYCElements/CountrySelectionTemplate.js.map +1 -1
- package/build/components/KYCElements/FileUploadTemplate.d.ts.map +1 -1
- package/build/components/KYCElements/FileUploadTemplate.js +7 -3
- package/build/components/KYCElements/FileUploadTemplate.js.map +1 -1
- package/build/components/KYCElements/IDCardCapture.d.ts +7 -2
- package/build/components/KYCElements/IDCardCapture.d.ts.map +1 -1
- package/build/components/KYCElements/IDCardCapture.js +253 -104
- package/build/components/KYCElements/IDCardCapture.js.map +1 -1
- package/build/components/KYCElements/InitializationStep.d.ts +5 -0
- package/build/components/KYCElements/InitializationStep.d.ts.map +1 -0
- package/build/components/KYCElements/InitializationStep.js +41 -0
- package/build/components/KYCElements/InitializationStep.js.map +1 -0
- package/build/components/KYCElements/LocationCaptureTemplate.d.ts.map +1 -1
- package/build/components/KYCElements/LocationCaptureTemplate.js +15 -13
- package/build/components/KYCElements/LocationCaptureTemplate.js.map +1 -1
- package/build/components/KYCElements/OrientationVideoCapture.d.ts +2 -2
- package/build/components/KYCElements/OrientationVideoCapture.d.ts.map +1 -1
- package/build/components/KYCElements/OrientationVideoCapture.js.map +1 -1
- package/build/components/KYCElements/OrientationVideoCaptureEnhanced.d.ts +2 -2
- package/build/components/KYCElements/OrientationVideoCaptureEnhanced.d.ts.map +1 -1
- package/build/components/KYCElements/OrientationVideoCaptureEnhanced.js.map +1 -1
- package/build/components/KYCElements/OrientationVideoCaptureFinal.d.ts +2 -2
- package/build/components/KYCElements/OrientationVideoCaptureFinal.d.ts.map +1 -1
- package/build/components/KYCElements/OrientationVideoCaptureFinal.js.map +1 -1
- package/build/components/KYCElements/ReviewSubmitTemplate.d.ts +12 -0
- package/build/components/KYCElements/ReviewSubmitTemplate.d.ts.map +1 -0
- package/build/components/KYCElements/ReviewSubmitTemplate.js +171 -0
- package/build/components/KYCElements/ReviewSubmitTemplate.js.map +1 -0
- package/build/components/KYCElements/SelfieCaptureTemplate.d.ts +6 -2
- package/build/components/KYCElements/SelfieCaptureTemplate.d.ts.map +1 -1
- package/build/components/KYCElements/SelfieCaptureTemplate.js +137 -38
- package/build/components/KYCElements/SelfieCaptureTemplate.js.map +1 -1
- package/build/components/KYCElements/VerificationProgressTemplate.d.ts +12 -0
- package/build/components/KYCElements/VerificationProgressTemplate.d.ts.map +1 -0
- package/build/components/KYCElements/VerificationProgressTemplate.js +194 -0
- package/build/components/KYCElements/VerificationProgressTemplate.js.map +1 -0
- package/build/components/OverLay/IdCard.d.ts +1 -1
- package/build/components/OverLay/IdCard.d.ts.map +1 -1
- package/build/components/OverLay/IdCard.js +10 -6
- package/build/components/OverLay/IdCard.js.map +1 -1
- package/build/components/OverLay/SelfieOverlay.d.ts +1 -1
- package/build/components/OverLay/SelfieOverlay.d.ts.map +1 -1
- package/build/components/OverLay/SelfieOverlay.js +5 -4
- package/build/components/OverLay/SelfieOverlay.js.map +1 -1
- package/build/components/OverLay/type.d.ts +71 -1
- package/build/components/OverLay/type.d.ts.map +1 -1
- package/build/components/OverLay/type.js.map +1 -1
- package/build/components/TemplateKYCExample.d.ts +4 -1
- package/build/components/TemplateKYCExample.d.ts.map +1 -1
- package/build/components/TemplateKYCExample.js +74 -199
- package/build/components/TemplateKYCExample.js.map +1 -1
- package/build/components/TemplateKYCFlowRefactored.d.ts +3 -2
- package/build/components/TemplateKYCFlowRefactored.d.ts.map +1 -1
- package/build/components/TemplateKYCFlowRefactored.js +64 -40
- package/build/components/TemplateKYCFlowRefactored.js.map +1 -1
- package/build/components/example/OrientationVideoExample.d.ts.map +1 -1
- package/build/components/example/OrientationVideoExample.js +1 -5
- package/build/components/example/OrientationVideoExample.js.map +1 -1
- package/build/config/countriesData.d.ts +3 -0
- package/build/config/countriesData.d.ts.map +1 -0
- package/build/config/countriesData.js +79 -0
- package/build/config/countriesData.js.map +1 -0
- package/build/config/region_mapping.d.ts +3 -0
- package/build/config/region_mapping.d.ts.map +1 -0
- package/build/config/region_mapping.js +687 -0
- package/build/config/region_mapping.js.map +1 -0
- package/build/hooks/useI18n.d.ts +11 -0
- package/build/hooks/useI18n.d.ts.map +1 -0
- package/build/hooks/useI18n.js +37 -0
- package/build/hooks/useI18n.js.map +1 -0
- package/build/hooks/useOrientationVideo.d.ts +1 -2
- package/build/hooks/useOrientationVideo.d.ts.map +1 -1
- package/build/hooks/useOrientationVideo.js +2 -1
- package/build/hooks/useOrientationVideo.js.map +1 -1
- package/build/hooks/useRealtimeVerifier.d.ts +28 -0
- package/build/hooks/useRealtimeVerifier.d.ts.map +1 -0
- package/build/hooks/useRealtimeVerifier.js +91 -0
- package/build/hooks/useRealtimeVerifier.js.map +1 -0
- package/build/hooks/useTemplateKYCFlow.d.ts +6 -3
- package/build/hooks/useTemplateKYCFlow.d.ts.map +1 -1
- package/build/hooks/useTemplateKYCFlow.js +356 -42
- package/build/hooks/useTemplateKYCFlow.js.map +1 -1
- package/build/i18n/en/index.d.ts +168 -0
- package/build/i18n/en/index.d.ts.map +1 -0
- package/build/i18n/en/index.js +195 -0
- package/build/i18n/en/index.js.map +1 -0
- package/build/i18n/fr/index.d.ts +168 -0
- package/build/i18n/fr/index.d.ts.map +1 -0
- package/build/i18n/fr/index.js +194 -0
- package/build/i18n/fr/index.js.map +1 -0
- package/build/i18n/index.d.ts +10 -0
- package/build/i18n/index.d.ts.map +1 -0
- package/build/i18n/index.js +56 -0
- package/build/i18n/index.js.map +1 -0
- package/build/i18n/types.d.ts +153 -0
- package/build/i18n/types.d.ts.map +1 -0
- package/build/i18n/types.js +3 -0
- package/build/i18n/types.js.map +1 -0
- package/build/i18n/usage-example.d.ts +4 -0
- package/build/i18n/usage-example.d.ts.map +1 -0
- package/build/i18n/usage-example.js +189 -0
- package/build/i18n/usage-example.js.map +1 -0
- package/build/index.d.ts +1 -0
- package/build/index.d.ts.map +1 -1
- package/build/index.js +2 -0
- package/build/index.js.map +1 -1
- package/build/modules/api/CardAuthentification.d.ts +22 -0
- package/build/modules/api/CardAuthentification.d.ts.map +1 -0
- package/build/modules/api/CardAuthentification.js +107 -0
- package/build/modules/api/CardAuthentification.js.map +1 -0
- package/build/modules/api/KYCService.d.ts +58 -1
- package/build/modules/api/KYCService.d.ts.map +1 -1
- package/build/modules/api/KYCService.js +304 -27
- package/build/modules/api/KYCService.js.map +1 -1
- package/build/modules/api/SelfieVerification.d.ts +3 -0
- package/build/modules/api/SelfieVerification.d.ts.map +1 -0
- package/build/modules/api/SelfieVerification.js +9 -0
- package/build/modules/api/SelfieVerification.js.map +1 -0
- package/build/modules/api/backendApi.d.ts +2 -0
- package/build/modules/api/backendApi.d.ts.map +1 -0
- package/build/modules/api/backendApi.js +6 -0
- package/build/modules/api/backendApi.js.map +1 -0
- package/build/modules/api/types.d.ts +45 -0
- package/build/modules/api/types.d.ts.map +1 -0
- package/build/modules/api/types.js +2 -0
- package/build/modules/api/types.js.map +1 -0
- package/build/types/KYC.types.d.ts +56 -7
- package/build/types/KYC.types.d.ts.map +1 -1
- package/build/types/KYC.types.js +9 -1
- package/build/types/KYC.types.js.map +1 -1
- package/build/utils/cropByObb.d.ts +11 -0
- package/build/utils/cropByObb.d.ts.map +1 -0
- package/build/utils/cropByObb.js +78 -0
- package/build/utils/cropByObb.js.map +1 -0
- package/build/utils/get-document-type-info.d.ts +13 -0
- package/build/utils/get-document-type-info.d.ts.map +1 -0
- package/build/utils/get-document-type-info.js +59 -0
- package/build/utils/get-document-type-info.js.map +1 -0
- package/build/utils/pathToBase64.d.ts +3 -0
- package/build/utils/pathToBase64.d.ts.map +1 -0
- package/build/utils/pathToBase64.js +47 -0
- package/build/utils/pathToBase64.js.map +1 -0
- package/build/utils/remove-duplicate.d.ts +2 -0
- package/build/utils/remove-duplicate.d.ts.map +1 -0
- package/build/utils/remove-duplicate.js +4 -0
- package/build/utils/remove-duplicate.js.map +1 -0
- package/build/web/WebKYCEntry.d.ts +9 -0
- package/build/web/WebKYCEntry.d.ts.map +1 -0
- package/build/web/WebKYCEntry.js +156 -0
- package/build/web/WebKYCEntry.js.map +1 -0
- package/build/web/index.d.ts +2 -0
- package/build/web/index.d.ts.map +1 -0
- package/build/web/index.js +2 -0
- package/build/web/index.js.map +1 -0
- package/package.json +3 -1
- package/src/api/axios.ts +144 -0
- package/src/components/EnhancedCameraView.tsx +96 -78
- package/src/components/EnhancedCameraView.web.tsx +41 -40
- package/src/components/KYCElements/CountrySelectionTemplate.tsx +111 -136
- package/src/components/KYCElements/FileUploadTemplate.tsx +14 -8
- package/src/components/KYCElements/IDCardCapture.tsx +311 -115
- package/src/components/KYCElements/InitializationStep.tsx +53 -0
- package/src/components/KYCElements/LocationCaptureTemplate.tsx +17 -15
- package/src/components/KYCElements/OrientationVideoCapture.tsx +2 -2
- package/src/components/KYCElements/OrientationVideoCaptureEnhanced.tsx +2 -2
- package/src/components/KYCElements/OrientationVideoCaptureFinal.tsx +2 -2
- package/src/components/KYCElements/ReviewSubmitTemplate.tsx +201 -0
- package/src/components/KYCElements/SelfieCaptureTemplate.tsx +174 -57
- package/src/components/KYCElements/VerificationProgressTemplate.tsx +246 -0
- package/src/components/OverLay/IdCard.tsx +17 -9
- package/src/components/OverLay/SelfieOverlay.tsx +6 -5
- package/src/components/OverLay/type.ts +64 -2
- package/src/components/TemplateKYCExample.tsx +80 -200
- package/src/components/TemplateKYCFlowRefactored.tsx +80 -48
- package/src/components/example/OrientationVideoExample.tsx +3 -7
- package/src/config/countriesData.ts +84 -0
- package/src/config/region_mapping.ts +688 -0
- package/src/hooks/useI18n.ts +53 -0
- package/src/hooks/useOrientationVideo.ts +2 -2
- package/src/hooks/useRealtimeVerifier.ts +128 -0
- package/src/hooks/useTemplateKYCFlow.tsx +407 -57
- package/src/i18n/README.md +288 -0
- package/src/i18n/en/index.ts +206 -0
- package/src/i18n/fr/index.ts +205 -0
- package/src/i18n/index.ts +65 -0
- package/src/i18n/types.ts +172 -0
- package/src/i18n/usage-example.tsx +202 -0
- package/src/index.ts +3 -0
- package/src/modules/api/CardAuthentification.ts +114 -0
- package/src/modules/api/KYCService.ts +350 -30
- package/src/modules/api/SelfieVerification.ts +11 -0
- package/src/modules/api/backendApi.ts +8 -0
- package/src/modules/api/types.ts +51 -0
- package/src/types/KYC.types.ts +82 -14
- package/src/utils/cropByObb.ts +99 -0
- package/src/utils/get-document-type-info.ts +62 -0
- package/src/utils/pathToBase64.ts +47 -0
- package/src/utils/remove-duplicate.ts +3 -0
- package/src/web/WebKYCEntry.tsx +215 -0
- package/src/web/index.ts +1 -0
- package/src/types/nativewind.d.ts +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OrientationVideoCapture.js","sourceRoot":"","sources":["../../../src/components/KYCElements/OrientationVideoCapture.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useState, useRef, useEffect } from 'react';\nimport {\n View,\n Text,\n StyleSheet,\n TouchableOpacity,\n Alert,\n ActivityIndicator,\n Animated,\n} from 'react-native';\nimport Svg, { Rect, Path, Mask, Defs } from 'react-native-svg';\nimport { Camera, useCameraDevice } from 'react-native-vision-camera';\nimport { OrientationVideoConfig, OrientationVideoState } from '../../types/KYC.types';\nimport KYCService from '../../modules/api/KYCService';\nimport VisionCameraModule from '../../modules/camera/VisionCameraModule';\nimport SideSelfieIcon from '../Svgs/sideSelfieIcon';\n\ninterface OrientationVideoCaptureProps {\n config?: Partial<OrientationVideoConfig>;\n onComplete: (result: any) => void;\n onError: (error: string) => void;\n kycService: KYCService;\n}\n\nconst defaultConfig: OrientationVideoConfig = {\n duration: 10, // 10 seconds\n orientations: ['center', 'left', 'right'],\n instructions: {\n center: 'Look straight ahead at the camera',\n left: 'Turn your head to the left',\n right: 'Turn your head to the right',\n },\n showPreview: true,\n allowRetake: true,\n maxRetakes: 3,\n quality: 0.8,\n aspectRatio: 16 / 9,\n};\n\nexport const OrientationVideoCapture: React.FC<OrientationVideoCaptureProps> = ({\n config = {},\n onComplete,\n onError,\n kycService,\n}) => {\n const finalConfig = { ...defaultConfig, ...config };\n \n const [state, setState] = useState<OrientationVideoState>({\n isRecording: false,\n currentOrientation: null,\n recordedVideo: null,\n processingResult: null,\n isProcessing: false,\n error: null,\n retakeCount: 0,\n });\n\n const [hasPermission, setHasPermission] = useState<boolean | null>(null);\n const cameraRef = useRef<Camera>(null);\n const recordingTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const instructionAnimation = useRef(new Animated.Value(0)).current;\n\n const device = useCameraDevice('front');\n\n useEffect(() => {\n requestCameraPermission();\n startInstructionAnimation();\n }, []);\n\n useEffect(() => {\n return () => {\n if (recordingTimeoutRef.current) {\n clearTimeout(recordingTimeoutRef.current);\n }\n };\n }, []);\n\n const requestCameraPermission = async () => {\n try {\n const hasAllPermissions = await VisionCameraModule.hasAllPermissions();\n if (!hasAllPermissions) {\n const granted = await VisionCameraModule.requestAllPermissions();\n if (!granted) {\n onError('Camera permissions not granted');\n return;\n }\n }\n setHasPermission(true);\n } catch (error) {\n console.error('Error requesting permissions:', error);\n onError('Failed to request camera permissions');\n }\n };\n\n const startInstructionAnimation = () => {\n Animated.loop(\n Animated.sequence([\n Animated.timing(instructionAnimation, {\n toValue: 1,\n duration: 1000,\n useNativeDriver: false,\n }),\n Animated.timing(instructionAnimation, {\n toValue: 0.8,\n duration: 1000,\n useNativeDriver: false,\n }),\n ])\n ).start();\n };\n\n const startRecording = async () => {\n if (!cameraRef.current || state.isRecording) return;\n\n try {\n setState(prev => ({ ...prev, isRecording: true, error: null }));\n \n await cameraRef.current.startRecording({\n onRecordingFinished: (video) => {\n setState(prev => ({ \n ...prev, \n isRecording: false, \n recordedVideo: video.path \n }));\n // Process the video immediately\n processVideo(video.path);\n },\n onRecordingError: (error) => {\n console.error('Recording error:', error);\n setState(prev => ({ \n ...prev, \n isRecording: false, \n error: 'Failed to record video' \n }));\n onError('Failed to record video');\n },\n });\n\n // Set timeout to stop recording after duration\n recordingTimeoutRef.current = setTimeout(() => {\n if (cameraRef.current && state.isRecording) {\n cameraRef.current.stopRecording();\n }\n }, finalConfig.duration * 1000);\n\n } catch (error) {\n console.error('Error starting recording:', error);\n setState(prev => ({ \n ...prev, \n isRecording: false, \n error: 'Failed to start recording' \n }));\n onError('Failed to start recording');\n }\n };\n\n const stopRecording = async () => {\n if (!cameraRef.current || !state.isRecording) return;\n\n try {\n if (recordingTimeoutRef.current) {\n clearTimeout(recordingTimeoutRef.current);\n recordingTimeoutRef.current = null;\n }\n await cameraRef.current.stopRecording();\n } catch (error) {\n console.error('Error stopping recording:', error);\n }\n };\n\n const processVideo = async (videoUri: string) => {\n if (state.isProcessing) return;\n\n setState(prev => ({ ...prev, isProcessing: true, error: null }));\n\n try {\n const result = await kycService.processOrientationVideo(videoUri);\n \n if (result.success && result.data) {\n setState(prev => ({ \n ...prev, \n processingResult: result.data || null,\n isProcessing: false \n }));\n onComplete(result.data);\n } else {\n setState(prev => ({ \n ...prev, \n isProcessing: false,\n error: result.message || 'Processing failed' \n }));\n onError(result.message || 'Processing failed');\n }\n } catch (error) {\n console.error('Error processing video:', error);\n setState(prev => ({ \n ...prev, \n isProcessing: false,\n error: 'Failed to process video' \n }));\n onError('Failed to process video');\n }\n };\n\n const retake = () => {\n if (state.retakeCount >= finalConfig.maxRetakes) {\n Alert.alert('Max Retakes Reached', 'You have reached the maximum number of retakes.');\n return;\n }\n\n setState(prev => ({ \n ...prev, \n recordedVideo: null,\n processingResult: null,\n error: null,\n retakeCount: prev.retakeCount + 1 \n }));\n };\n\n const reset = () => {\n setState({\n isRecording: false,\n currentOrientation: null,\n recordedVideo: null,\n processingResult: null,\n isProcessing: false,\n error: null,\n retakeCount: 0,\n });\n };\n\n const renderInstructions = () => {\n if (!state.currentOrientation) return null;\n\n const instruction = finalConfig.instructions[state.currentOrientation];\n \n return (\n <Animated.View \n style={[\n styles.instructionContainer,\n { opacity: instructionAnimation }\n ]}\n >\n <Text style={styles.instructionText}>{instruction}</Text>\n </Animated.View>\n );\n };\n\n const renderProcessingResult = () => {\n if (!state.processingResult) return null;\n\n const { center, left, right } = state.processingResult;\n const allCaptured = center.captured && left.captured && right.captured;\n\n return (\n <View style={styles.resultContainer}>\n <Text style={styles.resultTitle}>\n {allCaptured ? '✅ All orientations captured!' : '⚠️ Some orientations missing'}\n </Text>\n \n <View style={styles.orientationResults}>\n <View style={styles.orientationResult}>\n <Text style={styles.orientationLabel}>Center</Text>\n <Text style={[styles.orientationStatus, center.captured && styles.captured]}>\n {center.captured ? '✅' : '❌'}\n </Text>\n {center.captured && (\n <Text style={styles.frameInfo}>Frame: {center.frame}</Text>\n )}\n </View>\n \n <View style={styles.orientationResult}>\n <Text style={styles.orientationLabel}>Left</Text>\n <Text style={[styles.orientationStatus, left.captured && styles.captured]}>\n {left.captured ? '✅' : '❌'}\n </Text>\n {left.captured && (\n <Text style={styles.frameInfo}>Frame: {left.frame}</Text>\n )}\n </View>\n \n <View style={styles.orientationResult}>\n <Text style={styles.orientationLabel}>Right</Text>\n <Text style={[styles.orientationStatus, right.captured && styles.captured]}>\n {right.captured ? '✅' : '❌'}\n </Text>\n {right.captured && (\n <Text style={styles.frameInfo}>Frame: {right.frame}</Text>\n )}\n </View>\n </View>\n </View>\n );\n };\n\n if (hasPermission === null) {\n return (\n <View style={styles.container}>\n <ActivityIndicator size=\"large\" color=\"#007AFF\" />\n <Text style={styles.loadingText}>Requesting camera permission...</Text>\n </View>\n );\n }\n\n if (hasPermission === false) {\n return (\n <View style={styles.container}>\n <Text style={styles.errorText}>No access to camera</Text>\n <TouchableOpacity style={styles.button} onPress={requestCameraPermission}>\n <Text style={styles.buttonText}>Grant Permission</Text>\n </TouchableOpacity>\n </View>\n );\n }\n\n if (state.recordedVideo && finalConfig.showPreview) {\n return (\n <View style={styles.container}>\n <View style={styles.videoPreview}>\n <Text style={styles.previewText}>Video recorded successfully</Text>\n <Text style={styles.previewSubtext}>Path: {state.recordedVideo}</Text>\n </View>\n \n {state.isProcessing && (\n <View style={styles.processingOverlay}>\n <ActivityIndicator size=\"large\" color=\"#007AFF\" />\n <Text style={styles.processingText}>Processing video...</Text>\n </View>\n )}\n \n {renderProcessingResult()}\n \n <View style={styles.buttonContainer}>\n {finalConfig.allowRetake && state.retakeCount < finalConfig.maxRetakes && (\n <TouchableOpacity style={styles.retakeButton} onPress={retake}>\n <Text style={styles.retakeButtonText}>\n Retake ({finalConfig.maxRetakes - state.retakeCount} left)\n </Text>\n </TouchableOpacity>\n )}\n \n <TouchableOpacity style={styles.resetButton} onPress={reset}>\n <Text style={styles.resetButtonText}>Start Over</Text>\n </TouchableOpacity>\n </View>\n </View>\n );\n }\n\n if (!device) {\n return (\n <View style={styles.container}>\n <Text style={styles.errorText}>Camera device not available</Text>\n </View>\n );\n }\n\n return (\n <View style={styles.container}>\n <Camera\n ref={cameraRef}\n style={styles.camera}\n device={device}\n isActive={true}\n video={true}\n audio={true}\n >\n <View style={styles.overlay}>\n {renderInstructions()}\n \n {/* SideSelfieIcon overlay with mask */}\n <View style={styles.iconOverlay}>\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 dans le bbox) */}\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(195, 240) scale(0.8) 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 </Svg>\n \n {/* SideSelfieIcon positioned in the bbox */}\n <View style={[styles.iconContainer, {\n left: 20,\n top: 140,\n width: 350,\n height: 200,\n }]}>\n <SideSelfieIcon />\n </View>\n </View>\n \n {state.error && (\n <View style={styles.errorContainer}>\n <Text style={styles.errorText}>{state.error}</Text>\n </View>\n )}\n \n <View style={styles.controlsContainer}>\n {state.isRecording ? (\n <TouchableOpacity style={styles.stopButton} onPress={stopRecording}>\n <Text style={styles.stopButtonText}>Stop Recording</Text>\n </TouchableOpacity>\n ) : (\n <TouchableOpacity \n style={styles.recordButton} \n onPress={startRecording}\n disabled={state.isProcessing}\n >\n <Text style={styles.recordButtonText}>Start Recording</Text>\n </TouchableOpacity>\n )}\n </View>\n </View>\n </Camera>\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n backgroundColor: '#000',\n },\n camera: {\n flex: 1,\n },\n overlay: {\n flex: 1,\n backgroundColor: 'rgba(0, 0, 0, 0.2)',\n justifyContent: 'space-between',\n padding: 20,\n },\n instructionContainer: {\n backgroundColor: 'rgba(0, 0, 0, 0.7)',\n padding: 15,\n borderRadius: 10,\n marginTop: 50,\n alignSelf: 'center',\n },\n instructionText: {\n color: '#fff',\n fontSize: 18,\n fontWeight: 'bold',\n textAlign: 'center',\n },\n controlsContainer: {\n alignItems: 'center',\n marginBottom: 50,\n },\n recordButton: {\n backgroundColor: '#FF3B30',\n paddingHorizontal: 30,\n paddingVertical: 15,\n borderRadius: 25,\n minWidth: 150,\n alignItems: 'center',\n },\n recordButtonText: {\n color: '#fff',\n fontSize: 18,\n fontWeight: 'bold',\n },\n stopButton: {\n backgroundColor: '#007AFF',\n paddingHorizontal: 30,\n paddingVertical: 15,\n borderRadius: 25,\n minWidth: 150,\n alignItems: 'center',\n },\n stopButtonText: {\n color: '#fff',\n fontSize: 18,\n fontWeight: 'bold',\n },\n videoPreview: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor: '#f0f0f0',\n },\n previewText: {\n fontSize: 18,\n fontWeight: 'bold',\n color: '#333',\n marginBottom: 10,\n },\n previewSubtext: {\n fontSize: 14,\n color: '#666',\n textAlign: 'center',\n paddingHorizontal: 20,\n },\n processingOverlay: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.7)',\n justifyContent: 'center',\n alignItems: 'center',\n },\n processingText: {\n color: '#fff',\n fontSize: 16,\n marginTop: 10,\n },\n resultContainer: {\n backgroundColor: 'rgba(255, 255, 255, 0.9)',\n padding: 20,\n borderRadius: 10,\n margin: 20,\n },\n resultTitle: {\n fontSize: 18,\n fontWeight: 'bold',\n textAlign: 'center',\n marginBottom: 15,\n },\n orientationResults: {\n flexDirection: 'row',\n justifyContent: 'space-around',\n },\n orientationResult: {\n alignItems: 'center',\n },\n orientationLabel: {\n fontSize: 14,\n fontWeight: '600',\n marginBottom: 5,\n },\n orientationStatus: {\n fontSize: 20,\n marginBottom: 5,\n },\n captured: {\n color: '#34C759',\n },\n frameInfo: {\n fontSize: 12,\n color: '#666',\n },\n buttonContainer: {\n flexDirection: 'row',\n justifyContent: 'space-around',\n padding: 20,\n },\n retakeButton: {\n backgroundColor: '#FF9500',\n paddingHorizontal: 20,\n paddingVertical: 10,\n borderRadius: 20,\n },\n retakeButtonText: {\n color: '#fff',\n fontSize: 16,\n fontWeight: '600',\n },\n resetButton: {\n backgroundColor: '#007AFF',\n paddingHorizontal: 20,\n paddingVertical: 10,\n borderRadius: 20,\n },\n resetButtonText: {\n color: '#fff',\n fontSize: 16,\n fontWeight: '600',\n },\n errorContainer: {\n backgroundColor: 'rgba(255, 59, 48, 0.8)',\n padding: 15,\n borderRadius: 10,\n margin: 20,\n },\n errorText: {\n color: '#fff',\n fontSize: 16,\n textAlign: 'center',\n },\n loadingText: {\n color: '#fff',\n fontSize: 16,\n textAlign: 'center',\n marginTop: 10,\n },\n button: {\n backgroundColor: '#007AFF',\n paddingHorizontal: 30,\n paddingVertical: 15,\n borderRadius: 25,\n marginTop: 20,\n alignSelf: 'center',\n },\n buttonText: {\n color: '#fff',\n fontSize: 16,\n fontWeight: 'bold',\n },\n iconOverlay: {\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: [{ translateX: -120 }, { translateY: -142.5 }], // Half of width and height\n opacity: 1,\n zIndex: 10,\n backgroundColor: 'rgba(0, 0, 0, 0.1)',\n borderRadius: 10,\n padding: 10,\n },\n iconContainer: {\n position: 'absolute',\n justifyContent: 'center',\n alignItems: 'center',\n },\n});\n\nexport default OrientationVideoCapture; "]}
|
|
1
|
+
{"version":3,"file":"OrientationVideoCapture.js","sourceRoot":"","sources":["../../../src/components/KYCElements/OrientationVideoCapture.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC3D,OAAO,EACL,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,gBAAgB,EAChB,KAAK,EACL,iBAAiB,EACjB,QAAQ,GACT,MAAM,cAAc,CAAC;AACtB,OAAO,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAGrE,OAAO,kBAAkB,MAAM,yCAAyC,CAAC;AACzE,OAAO,cAAc,MAAM,wBAAwB,CAAC;AASpD,MAAM,aAAa,GAA2B;IAC5C,QAAQ,EAAE,EAAE,EAAE,aAAa;IAC3B,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC;IACzC,YAAY,EAAE;QACZ,MAAM,EAAE,mCAAmC;QAC3C,IAAI,EAAE,4BAA4B;QAClC,KAAK,EAAE,6BAA6B;KACrC;IACD,WAAW,EAAE,IAAI;IACjB,WAAW,EAAE,IAAI;IACjB,UAAU,EAAE,CAAC;IACb,OAAO,EAAE,GAAG;IACZ,WAAW,EAAE,EAAE,GAAG,CAAC;CACpB,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAA2C,CAAC,EAC9E,MAAM,GAAG,EAAE,EACX,UAAU,EACV,OAAO,EACP,UAAU,GACX,EAAE,EAAE;IACH,MAAM,WAAW,GAAG,EAAE,GAAG,aAAa,EAAE,GAAG,MAAM,EAAE,CAAC;IAEpD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAwB;QACxD,WAAW,EAAE,KAAK;QAClB,kBAAkB,EAAE,IAAI;QACxB,aAAa,EAAE,IAAI;QACnB,gBAAgB,EAAE,IAAI;QACtB,YAAY,EAAE,KAAK;QACnB,KAAK,EAAE,IAAI;QACX,WAAW,EAAE,CAAC;KACf,CAAC,CAAC;IAEH,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAiB,IAAI,CAAC,CAAC;IACzE,MAAM,SAAS,GAAG,MAAM,CAAS,IAAI,CAAC,CAAC;IACvC,MAAM,mBAAmB,GAAG,MAAM,CAAuC,IAAI,CAAC,CAAC;IAC/E,MAAM,oBAAoB,GAAG,MAAM,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAEnE,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAExC,SAAS,CAAC,GAAG,EAAE;QACb,uBAAuB,EAAE,CAAC;QAC1B,yBAAyB,EAAE,CAAC;IAC9B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,GAAG,EAAE;YACV,IAAI,mBAAmB,CAAC,OAAO,EAAE,CAAC;gBAChC,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,uBAAuB,GAAG,KAAK,IAAI,EAAE;QACzC,IAAI,CAAC;YACH,MAAM,iBAAiB,GAAG,MAAM,kBAAkB,CAAC,iBAAiB,EAAE,CAAC;YACvE,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACvB,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,qBAAqB,EAAE,CAAC;gBACjE,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,OAAO,CAAC,gCAAgC,CAAC,CAAC;oBAC1C,OAAO;gBACT,CAAC;YACH,CAAC;YACD,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;YACtD,OAAO,CAAC,sCAAsC,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,yBAAyB,GAAG,GAAG,EAAE;QACrC,QAAQ,CAAC,IAAI,CACX,QAAQ,CAAC,QAAQ,CAAC;YAChB,QAAQ,CAAC,MAAM,CAAC,oBAAoB,EAAE;gBACpC,OAAO,EAAE,CAAC;gBACV,QAAQ,EAAE,IAAI;gBACd,eAAe,EAAE,KAAK;aACvB,CAAC;YACF,QAAQ,CAAC,MAAM,CAAC,oBAAoB,EAAE;gBACpC,OAAO,EAAE,GAAG;gBACZ,QAAQ,EAAE,IAAI;gBACd,eAAe,EAAE,KAAK;aACvB,CAAC;SACH,CAAC,CACH,CAAC,KAAK,EAAE,CAAC;IACZ,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,KAAK,IAAI,EAAE;QAChC,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,KAAK,CAAC,WAAW;YAAE,OAAO;QAEpD,IAAI,CAAC;YACH,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAEhE,MAAM,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC;gBACrC,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE;oBAC7B,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBAChB,GAAG,IAAI;wBACP,WAAW,EAAE,KAAK;wBAClB,aAAa,EAAE,KAAK,CAAC,IAAI;qBAC1B,CAAC,CAAC,CAAC;oBACJ,gCAAgC;oBAChC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC3B,CAAC;gBACD,gBAAgB,EAAE,CAAC,KAAK,EAAE,EAAE;oBAC1B,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;oBACzC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBAChB,GAAG,IAAI;wBACP,WAAW,EAAE,KAAK;wBAClB,KAAK,EAAE,wBAAwB;qBAChC,CAAC,CAAC,CAAC;oBACJ,OAAO,CAAC,wBAAwB,CAAC,CAAC;gBACpC,CAAC;aACF,CAAC,CAAC;YAEH,+CAA+C;YAC/C,mBAAmB,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5C,IAAI,SAAS,CAAC,OAAO,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;oBAC3C,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;gBACpC,CAAC;YACH,CAAC,EAAE,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;QAElC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;YAClD,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAChB,GAAG,IAAI;gBACP,WAAW,EAAE,KAAK;gBAClB,KAAK,EAAE,2BAA2B;aACnC,CAAC,CAAC,CAAC;YACJ,OAAO,CAAC,2BAA2B,CAAC,CAAC;QACvC,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,KAAK,IAAI,EAAE;QAC/B,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW;YAAE,OAAO;QAErD,IAAI,CAAC;YACH,IAAI,mBAAmB,CAAC,OAAO,EAAE,CAAC;gBAChC,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;gBAC1C,mBAAmB,CAAC,OAAO,GAAG,IAAI,CAAC;YACrC,CAAC;YACD,MAAM,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;QACpD,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,KAAK,EAAE,QAAgB,EAAE,EAAE;QAC9C,IAAI,KAAK,CAAC,YAAY;YAAE,OAAO;QAE/B,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAEjE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;YAElE,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAClC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAChB,GAAG,IAAI;oBACP,gBAAgB,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI;oBACrC,YAAY,EAAE,KAAK;iBACpB,CAAC,CAAC,CAAC;gBACJ,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAChB,GAAG,IAAI;oBACP,YAAY,EAAE,KAAK;oBACnB,KAAK,EAAE,MAAM,CAAC,OAAO,IAAI,mBAAmB;iBAC7C,CAAC,CAAC,CAAC;gBACJ,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,mBAAmB,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;YAChD,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAChB,GAAG,IAAI;gBACP,YAAY,EAAE,KAAK;gBACnB,KAAK,EAAE,yBAAyB;aACjC,CAAC,CAAC,CAAC;YACJ,OAAO,CAAC,yBAAyB,CAAC,CAAC;QACrC,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,GAAG,EAAE;QAClB,IAAI,KAAK,CAAC,WAAW,IAAI,WAAW,CAAC,UAAU,EAAE,CAAC;YAChD,KAAK,CAAC,KAAK,CAAC,qBAAqB,EAAE,iDAAiD,CAAC,CAAC;YACtF,OAAO;QACT,CAAC;QAED,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAChB,GAAG,IAAI;YACP,aAAa,EAAE,IAAI;YACnB,gBAAgB,EAAE,IAAI;YACtB,KAAK,EAAE,IAAI;YACX,WAAW,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC;SAClC,CAAC,CAAC,CAAC;IACN,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,QAAQ,CAAC;YACP,WAAW,EAAE,KAAK;YAClB,kBAAkB,EAAE,IAAI;YACxB,aAAa,EAAE,IAAI;YACnB,gBAAgB,EAAE,IAAI;YACtB,YAAY,EAAE,KAAK;YACnB,KAAK,EAAE,IAAI;YACX,WAAW,EAAE,CAAC;SACf,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,kBAAkB,GAAG,GAAG,EAAE;QAC9B,IAAI,CAAC,KAAK,CAAC,kBAAkB;YAAE,OAAO,IAAI,CAAC;QAE3C,MAAM,WAAW,GAAG,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAEvE,OAAO,CACL,CAAC,QAAQ,CAAC,IAAI,CACZ,KAAK,CAAC,CAAC;gBACL,MAAM,CAAC,oBAAoB;gBAC3B,EAAE,OAAO,EAAE,oBAAoB,EAAE;aAClC,CAAC,CAEF;QAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,IAAI,CAC1D;MAAA,EAAE,QAAQ,CAAC,IAAI,CAAC,CACjB,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,sBAAsB,GAAG,GAAG,EAAE;QAClC,IAAI,CAAC,KAAK,CAAC,gBAAgB;YAAE,OAAO,IAAI,CAAC;QAEzC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,gBAAgB,CAAC;QACvD,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC;QAEvE,OAAO,CACL,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAClC;QAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAC9B;UAAA,CAAC,WAAW,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,8BAA8B,CAChF;QAAA,EAAE,IAAI,CAEN;;QAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,CACrC;UAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CACpC;YAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,MAAM,EAAE,IAAI,CAClD;YAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAC1E;cAAA,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAC9B;YAAA,EAAE,IAAI,CACN;YAAA,CAAC,MAAM,CAAC,QAAQ,IAAI,CAClB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAC5D,CACH;UAAA,EAAE,IAAI,CAEN;;UAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CACpC;YAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,IAAI,EAAE,IAAI,CAChD;YAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,EAAE,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CACxE;cAAA,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAC5B;YAAA,EAAE,IAAI,CACN;YAAA,CAAC,IAAI,CAAC,QAAQ,IAAI,CAChB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAC1D,CACH;UAAA,EAAE,IAAI,CAEN;;UAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CACpC;YAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,KAAK,EAAE,IAAI,CACjD;YAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,EAAE,KAAK,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CACzE;cAAA,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAC7B;YAAA,EAAE,IAAI,CACN;YAAA,CAAC,KAAK,CAAC,QAAQ,IAAI,CACjB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAC3D,CACH;UAAA,EAAE,IAAI,CACR;QAAA,EAAE,IAAI,CACR;MAAA,EAAE,IAAI,CAAC,CACR,CAAC;IACJ,CAAC,CAAC;IAEF,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;QAC3B,OAAO,CACL,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAC5B;QAAA,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAC/C;QAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,+BAA+B,EAAE,IAAI,CACxE;MAAA,EAAE,IAAI,CAAC,CACR,CAAC;IACJ,CAAC;IAED,IAAI,aAAa,KAAK,KAAK,EAAE,CAAC;QAC5B,OAAO,CACL,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAC5B;QAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,mBAAmB,EAAE,IAAI,CACxD;QAAA,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,uBAAuB,CAAC,CACvE;UAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,gBAAgB,EAAE,IAAI,CACxD;QAAA,EAAE,gBAAgB,CACpB;MAAA,EAAE,IAAI,CAAC,CACR,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,aAAa,IAAI,WAAW,CAAC,WAAW,EAAE,CAAC;QACnD,OAAO,CACL,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAC5B;QAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAC/B;UAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,2BAA2B,EAAE,IAAI,CAClE;UAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,IAAI,CACvE;QAAA,EAAE,IAAI,CAEN;;QAAA,CAAC,KAAK,CAAC,YAAY,IAAI,CACrB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CACpC;YAAA,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAC/C;YAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,mBAAmB,EAAE,IAAI,CAC/D;UAAA,EAAE,IAAI,CAAC,CACR,CAED;;QAAA,CAAC,sBAAsB,EAAE,CAEzB;;QAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAClC;UAAA,CAAC,WAAW,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC,UAAU,IAAI,CACxE,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAC5D;cAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CACnC;wBAAQ,CAAC,WAAW,CAAC,UAAU,GAAG,KAAK,CAAC,WAAW,CAAE;cACvD,EAAE,IAAI,CACR;YAAA,EAAE,gBAAgB,CAAC,CACpB,CAED;;UAAA,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAC1D;YAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,UAAU,EAAE,IAAI,CACvD;UAAA,EAAE,gBAAgB,CACpB;QAAA,EAAE,IAAI,CACR;MAAA,EAAE,IAAI,CAAC,CACR,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CACL,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAC5B;QAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,2BAA2B,EAAE,IAAI,CAClE;MAAA,EAAE,IAAI,CAAC,CACR,CAAC;IACJ,CAAC;IAED,OAAO,CACL,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAC5B;MAAA,CAAC,MAAM,CACL,GAAG,CAAC,CAAC,SAAS,CAAC,CACf,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CACrB,MAAM,CAAC,CAAC,MAAM,CAAC,CACf,QAAQ,CAAC,CAAC,IAAI,CAAC,CACf,KAAK,CAAC,CAAC,IAAI,CAAC,CACZ,KAAK,CAAC,CAAC,IAAI,CAAC,CAEZ;QAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAC1B;UAAA,CAAC,kBAAkB,EAAE,CAEX;;oBAAA,CAAC,sCAAsC,CACjD;UAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAC9B;YAAA,CAAC,GAAG,CACF,MAAM,CAAC,MAAM,CACb,KAAK,CAAC,MAAM,CACZ,KAAK,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAEf;8BAAA,CAAC,IAAI,CACjB;kBAAA,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CACjB;oBAAA,CAAC,2CAA2C,CAC5C;oBAAA,CAAC,IAAI,CACH,CAAC,CAAC,GAAG,CACL,CAAC,CAAC,GAAG,CACL,KAAK,CAAC,MAAM,CACZ,MAAM,CAAC,MAAM,CACb,IAAI,CAAC,OAAO,EAEd;oBAAA,CAAC,8DAA8D,CAC/D;oBAAA,CAAC,IAAI,CACH,CAAC,CAAC,shBAAshB,CACxhB,IAAI,CAAC,OAAO,CACZ,SAAS,CAAC,wDAAwD,EAEtE;kBAAA,EAAE,IAAI,CACR;gBAAA,EAAE,IAAI,CAER;;cAAA,CAAC,0CAA0C,CAC3C;cAAA,CAAC,IAAI,CACH,CAAC,CAAC,GAAG,CACL,CAAC,CAAC,GAAG,CACL,KAAK,CAAC,MAAM,CACZ,MAAM,CAAC,MAAM,CACb,IAAI,CAAC,oBAAoB,CACzB,IAAI,CAAC,gBAAgB,EAEzB;YAAA,EAAE,GAAG,CAEL;;YAAA,CAAC,2CAA2C,CAC5C;YAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,EAAE;gBAClC,IAAI,EAAE,EAAE;gBACR,GAAG,EAAE,GAAG;gBACR,KAAK,EAAE,GAAG;gBACV,MAAM,EAAE,GAAG;aACZ,CAAC,CAAC,CACD;cAAA,CAAC,cAAc,CAAC,AAAD,EACjB;YAAA,EAAE,IAAI,CACR;UAAA,EAAE,IAAI,CAEN;;UAAA,CAAC,KAAK,CAAC,KAAK,IAAI,CACd,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CACjC;cAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,CACpD;YAAA,EAAE,IAAI,CAAC,CACR,CAED;;UAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CACpC;YAAA,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CACnB,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CACjE;gBAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,EAAE,IAAI,CAC1D;cAAA,EAAE,gBAAgB,CAAC,CACpB,CAAC,CAAC,CAAC,CACF,CAAC,gBAAgB,CACf,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAC3B,OAAO,CAAC,CAAC,cAAc,CAAC,CACxB,QAAQ,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAE7B;gBAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,eAAe,EAAE,IAAI,CAC7D;cAAA,EAAE,gBAAgB,CAAC,CACpB,CACH;UAAA,EAAE,IAAI,CACR;QAAA,EAAE,IAAI,CACR;MAAA,EAAE,MAAM,CACV;IAAA,EAAE,IAAI,CAAC,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAC/B,SAAS,EAAE;QACT,IAAI,EAAE,CAAC;QACP,eAAe,EAAE,MAAM;KACxB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,CAAC;KACR;IACD,OAAO,EAAE;QACP,IAAI,EAAE,CAAC;QACP,eAAe,EAAE,oBAAoB;QACrC,cAAc,EAAE,eAAe;QAC/B,OAAO,EAAE,EAAE;KACZ;IACD,oBAAoB,EAAE;QACpB,eAAe,EAAE,oBAAoB;QACrC,OAAO,EAAE,EAAE;QACX,YAAY,EAAE,EAAE;QAChB,SAAS,EAAE,EAAE;QACb,SAAS,EAAE,QAAQ;KACpB;IACD,eAAe,EAAE;QACf,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,MAAM;QAClB,SAAS,EAAE,QAAQ;KACpB;IACD,iBAAiB,EAAE;QACjB,UAAU,EAAE,QAAQ;QACpB,YAAY,EAAE,EAAE;KACjB;IACD,YAAY,EAAE;QACZ,eAAe,EAAE,SAAS;QAC1B,iBAAiB,EAAE,EAAE;QACrB,eAAe,EAAE,EAAE;QACnB,YAAY,EAAE,EAAE;QAChB,QAAQ,EAAE,GAAG;QACb,UAAU,EAAE,QAAQ;KACrB;IACD,gBAAgB,EAAE;QAChB,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,MAAM;KACnB;IACD,UAAU,EAAE;QACV,eAAe,EAAE,SAAS;QAC1B,iBAAiB,EAAE,EAAE;QACrB,eAAe,EAAE,EAAE;QACnB,YAAY,EAAE,EAAE;QAChB,QAAQ,EAAE,GAAG;QACb,UAAU,EAAE,QAAQ;KACrB;IACD,cAAc,EAAE;QACd,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,MAAM;KACnB;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,CAAC;QACP,cAAc,EAAE,QAAQ;QACxB,UAAU,EAAE,QAAQ;QACpB,eAAe,EAAE,SAAS;KAC3B;IACD,WAAW,EAAE;QACX,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,MAAM;QAClB,KAAK,EAAE,MAAM;QACb,YAAY,EAAE,EAAE;KACjB;IACD,cAAc,EAAE;QACd,QAAQ,EAAE,EAAE;QACZ,KAAK,EAAE,MAAM;QACb,SAAS,EAAE,QAAQ;QACnB,iBAAiB,EAAE,EAAE;KACtB;IACD,iBAAiB,EAAE;QACjB,QAAQ,EAAE,UAAU;QACpB,GAAG,EAAE,CAAC;QACN,IAAI,EAAE,CAAC;QACP,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,CAAC;QACT,eAAe,EAAE,oBAAoB;QACrC,cAAc,EAAE,QAAQ;QACxB,UAAU,EAAE,QAAQ;KACrB;IACD,cAAc,EAAE;QACd,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,EAAE;KACd;IACD,eAAe,EAAE;QACf,eAAe,EAAE,0BAA0B;QAC3C,OAAO,EAAE,EAAE;QACX,YAAY,EAAE,EAAE;QAChB,MAAM,EAAE,EAAE;KACX;IACD,WAAW,EAAE;QACX,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,MAAM;QAClB,SAAS,EAAE,QAAQ;QACnB,YAAY,EAAE,EAAE;KACjB;IACD,kBAAkB,EAAE;QAClB,aAAa,EAAE,KAAK;QACpB,cAAc,EAAE,cAAc;KAC/B;IACD,iBAAiB,EAAE;QACjB,UAAU,EAAE,QAAQ;KACrB;IACD,gBAAgB,EAAE;QAChB,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,KAAK;QACjB,YAAY,EAAE,CAAC;KAChB;IACD,iBAAiB,EAAE;QACjB,QAAQ,EAAE,EAAE;QACZ,YAAY,EAAE,CAAC;KAChB;IACD,QAAQ,EAAE;QACR,KAAK,EAAE,SAAS;KACjB;IACD,SAAS,EAAE;QACT,QAAQ,EAAE,EAAE;QACZ,KAAK,EAAE,MAAM;KACd;IACD,eAAe,EAAE;QACf,aAAa,EAAE,KAAK;QACpB,cAAc,EAAE,cAAc;QAC9B,OAAO,EAAE,EAAE;KACZ;IACD,YAAY,EAAE;QACZ,eAAe,EAAE,SAAS;QAC1B,iBAAiB,EAAE,EAAE;QACrB,eAAe,EAAE,EAAE;QACnB,YAAY,EAAE,EAAE;KACjB;IACD,gBAAgB,EAAE;QAChB,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,KAAK;KAClB;IACD,WAAW,EAAE;QACX,eAAe,EAAE,SAAS;QAC1B,iBAAiB,EAAE,EAAE;QACrB,eAAe,EAAE,EAAE;QACnB,YAAY,EAAE,EAAE;KACjB;IACD,eAAe,EAAE;QACf,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,KAAK;KAClB;IACD,cAAc,EAAE;QACd,eAAe,EAAE,wBAAwB;QACzC,OAAO,EAAE,EAAE;QACX,YAAY,EAAE,EAAE;QAChB,MAAM,EAAE,EAAE;KACX;IACD,SAAS,EAAE;QACT,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,QAAQ;KACpB;IACD,WAAW,EAAE;QACX,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,EAAE;QACZ,SAAS,EAAE,QAAQ;QACnB,SAAS,EAAE,EAAE;KACd;IACD,MAAM,EAAE;QACN,eAAe,EAAE,SAAS;QAC1B,iBAAiB,EAAE,EAAE;QACrB,eAAe,EAAE,EAAE;QACnB,YAAY,EAAE,EAAE;QAChB,SAAS,EAAE,EAAE;QACb,SAAS,EAAE,QAAQ;KACpB;IACD,UAAU,EAAE;QACV,KAAK,EAAE,MAAM;QACb,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,MAAM;KACnB;IACD,WAAW,EAAE;QACX,QAAQ,EAAE,UAAU;QACpB,GAAG,EAAE,KAAK;QACV,IAAI,EAAE,KAAK;QACX,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,2BAA2B;QACtF,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,EAAE;QACV,eAAe,EAAE,oBAAoB;QACrC,YAAY,EAAE,EAAE;QAChB,OAAO,EAAE,EAAE;KACZ;IACD,aAAa,EAAE;QACb,QAAQ,EAAE,UAAU;QACpB,cAAc,EAAE,QAAQ;QACxB,UAAU,EAAE,QAAQ;KACrB;CACF,CAAC,CAAC;AAEH,eAAe,uBAAuB,CAAC","sourcesContent":["import React, { useState, useRef, useEffect } from 'react';\nimport {\n View,\n Text,\n StyleSheet,\n TouchableOpacity,\n Alert,\n ActivityIndicator,\n Animated,\n} from 'react-native';\nimport Svg, { Rect, Path, Mask, Defs } from 'react-native-svg';\nimport { Camera, useCameraDevice } from 'react-native-vision-camera';\nimport { OrientationVideoConfig, OrientationVideoState } from '../../types/KYC.types';\nimport kycService from '../../modules/api/KYCService';\nimport VisionCameraModule from '../../modules/camera/VisionCameraModule';\nimport SideSelfieIcon from '../Svgs/sideSelfieIcon';\n\ninterface OrientationVideoCaptureProps {\n config?: Partial<OrientationVideoConfig>;\n onComplete: (result: any) => void;\n onError: (error: string) => void;\n kycService: typeof kycService;\n}\n\nconst defaultConfig: OrientationVideoConfig = {\n duration: 10, // 10 seconds\n orientations: ['center', 'left', 'right'],\n instructions: {\n center: 'Look straight ahead at the camera',\n left: 'Turn your head to the left',\n right: 'Turn your head to the right',\n },\n showPreview: true,\n allowRetake: true,\n maxRetakes: 3,\n quality: 0.8,\n aspectRatio: 16 / 9,\n};\n\nexport const OrientationVideoCapture: React.FC<OrientationVideoCaptureProps> = ({\n config = {},\n onComplete,\n onError,\n kycService,\n}) => {\n const finalConfig = { ...defaultConfig, ...config };\n \n const [state, setState] = useState<OrientationVideoState>({\n isRecording: false,\n currentOrientation: null,\n recordedVideo: null,\n processingResult: null,\n isProcessing: false,\n error: null,\n retakeCount: 0,\n });\n\n const [hasPermission, setHasPermission] = useState<boolean | null>(null);\n const cameraRef = useRef<Camera>(null);\n const recordingTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const instructionAnimation = useRef(new Animated.Value(0)).current;\n\n const device = useCameraDevice('front');\n\n useEffect(() => {\n requestCameraPermission();\n startInstructionAnimation();\n }, []);\n\n useEffect(() => {\n return () => {\n if (recordingTimeoutRef.current) {\n clearTimeout(recordingTimeoutRef.current);\n }\n };\n }, []);\n\n const requestCameraPermission = async () => {\n try {\n const hasAllPermissions = await VisionCameraModule.hasAllPermissions();\n if (!hasAllPermissions) {\n const granted = await VisionCameraModule.requestAllPermissions();\n if (!granted) {\n onError('Camera permissions not granted');\n return;\n }\n }\n setHasPermission(true);\n } catch (error) {\n console.error('Error requesting permissions:', error);\n onError('Failed to request camera permissions');\n }\n };\n\n const startInstructionAnimation = () => {\n Animated.loop(\n Animated.sequence([\n Animated.timing(instructionAnimation, {\n toValue: 1,\n duration: 1000,\n useNativeDriver: false,\n }),\n Animated.timing(instructionAnimation, {\n toValue: 0.8,\n duration: 1000,\n useNativeDriver: false,\n }),\n ])\n ).start();\n };\n\n const startRecording = async () => {\n if (!cameraRef.current || state.isRecording) return;\n\n try {\n setState(prev => ({ ...prev, isRecording: true, error: null }));\n \n await cameraRef.current.startRecording({\n onRecordingFinished: (video) => {\n setState(prev => ({ \n ...prev, \n isRecording: false, \n recordedVideo: video.path \n }));\n // Process the video immediately\n processVideo(video.path);\n },\n onRecordingError: (error) => {\n console.error('Recording error:', error);\n setState(prev => ({ \n ...prev, \n isRecording: false, \n error: 'Failed to record video' \n }));\n onError('Failed to record video');\n },\n });\n\n // Set timeout to stop recording after duration\n recordingTimeoutRef.current = setTimeout(() => {\n if (cameraRef.current && state.isRecording) {\n cameraRef.current.stopRecording();\n }\n }, finalConfig.duration * 1000);\n\n } catch (error) {\n console.error('Error starting recording:', error);\n setState(prev => ({ \n ...prev, \n isRecording: false, \n error: 'Failed to start recording' \n }));\n onError('Failed to start recording');\n }\n };\n\n const stopRecording = async () => {\n if (!cameraRef.current || !state.isRecording) return;\n\n try {\n if (recordingTimeoutRef.current) {\n clearTimeout(recordingTimeoutRef.current);\n recordingTimeoutRef.current = null;\n }\n await cameraRef.current.stopRecording();\n } catch (error) {\n console.error('Error stopping recording:', error);\n }\n };\n\n const processVideo = async (videoUri: string) => {\n if (state.isProcessing) return;\n\n setState(prev => ({ ...prev, isProcessing: true, error: null }));\n\n try {\n const result = await kycService.processOrientationVideo(videoUri);\n \n if (result.success && result.data) {\n setState(prev => ({ \n ...prev, \n processingResult: result.data || null,\n isProcessing: false \n }));\n onComplete(result.data);\n } else {\n setState(prev => ({ \n ...prev, \n isProcessing: false,\n error: result.message || 'Processing failed' \n }));\n onError(result.message || 'Processing failed');\n }\n } catch (error) {\n console.error('Error processing video:', error);\n setState(prev => ({ \n ...prev, \n isProcessing: false,\n error: 'Failed to process video' \n }));\n onError('Failed to process video');\n }\n };\n\n const retake = () => {\n if (state.retakeCount >= finalConfig.maxRetakes) {\n Alert.alert('Max Retakes Reached', 'You have reached the maximum number of retakes.');\n return;\n }\n\n setState(prev => ({ \n ...prev, \n recordedVideo: null,\n processingResult: null,\n error: null,\n retakeCount: prev.retakeCount + 1 \n }));\n };\n\n const reset = () => {\n setState({\n isRecording: false,\n currentOrientation: null,\n recordedVideo: null,\n processingResult: null,\n isProcessing: false,\n error: null,\n retakeCount: 0,\n });\n };\n\n const renderInstructions = () => {\n if (!state.currentOrientation) return null;\n\n const instruction = finalConfig.instructions[state.currentOrientation];\n \n return (\n <Animated.View \n style={[\n styles.instructionContainer,\n { opacity: instructionAnimation }\n ]}\n >\n <Text style={styles.instructionText}>{instruction}</Text>\n </Animated.View>\n );\n };\n\n const renderProcessingResult = () => {\n if (!state.processingResult) return null;\n\n const { center, left, right } = state.processingResult;\n const allCaptured = center.captured && left.captured && right.captured;\n\n return (\n <View style={styles.resultContainer}>\n <Text style={styles.resultTitle}>\n {allCaptured ? '✅ All orientations captured!' : '⚠️ Some orientations missing'}\n </Text>\n \n <View style={styles.orientationResults}>\n <View style={styles.orientationResult}>\n <Text style={styles.orientationLabel}>Center</Text>\n <Text style={[styles.orientationStatus, center.captured && styles.captured]}>\n {center.captured ? '✅' : '❌'}\n </Text>\n {center.captured && (\n <Text style={styles.frameInfo}>Frame: {center.frame}</Text>\n )}\n </View>\n \n <View style={styles.orientationResult}>\n <Text style={styles.orientationLabel}>Left</Text>\n <Text style={[styles.orientationStatus, left.captured && styles.captured]}>\n {left.captured ? '✅' : '❌'}\n </Text>\n {left.captured && (\n <Text style={styles.frameInfo}>Frame: {left.frame}</Text>\n )}\n </View>\n \n <View style={styles.orientationResult}>\n <Text style={styles.orientationLabel}>Right</Text>\n <Text style={[styles.orientationStatus, right.captured && styles.captured]}>\n {right.captured ? '✅' : '❌'}\n </Text>\n {right.captured && (\n <Text style={styles.frameInfo}>Frame: {right.frame}</Text>\n )}\n </View>\n </View>\n </View>\n );\n };\n\n if (hasPermission === null) {\n return (\n <View style={styles.container}>\n <ActivityIndicator size=\"large\" color=\"#007AFF\" />\n <Text style={styles.loadingText}>Requesting camera permission...</Text>\n </View>\n );\n }\n\n if (hasPermission === false) {\n return (\n <View style={styles.container}>\n <Text style={styles.errorText}>No access to camera</Text>\n <TouchableOpacity style={styles.button} onPress={requestCameraPermission}>\n <Text style={styles.buttonText}>Grant Permission</Text>\n </TouchableOpacity>\n </View>\n );\n }\n\n if (state.recordedVideo && finalConfig.showPreview) {\n return (\n <View style={styles.container}>\n <View style={styles.videoPreview}>\n <Text style={styles.previewText}>Video recorded successfully</Text>\n <Text style={styles.previewSubtext}>Path: {state.recordedVideo}</Text>\n </View>\n \n {state.isProcessing && (\n <View style={styles.processingOverlay}>\n <ActivityIndicator size=\"large\" color=\"#007AFF\" />\n <Text style={styles.processingText}>Processing video...</Text>\n </View>\n )}\n \n {renderProcessingResult()}\n \n <View style={styles.buttonContainer}>\n {finalConfig.allowRetake && state.retakeCount < finalConfig.maxRetakes && (\n <TouchableOpacity style={styles.retakeButton} onPress={retake}>\n <Text style={styles.retakeButtonText}>\n Retake ({finalConfig.maxRetakes - state.retakeCount} left)\n </Text>\n </TouchableOpacity>\n )}\n \n <TouchableOpacity style={styles.resetButton} onPress={reset}>\n <Text style={styles.resetButtonText}>Start Over</Text>\n </TouchableOpacity>\n </View>\n </View>\n );\n }\n\n if (!device) {\n return (\n <View style={styles.container}>\n <Text style={styles.errorText}>Camera device not available</Text>\n </View>\n );\n }\n\n return (\n <View style={styles.container}>\n <Camera\n ref={cameraRef}\n style={styles.camera}\n device={device}\n isActive={true}\n video={true}\n audio={true}\n >\n <View style={styles.overlay}>\n {renderInstructions()}\n \n {/* SideSelfieIcon overlay with mask */}\n <View style={styles.iconOverlay}>\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 dans le bbox) */}\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(195, 240) scale(0.8) 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 </Svg>\n \n {/* SideSelfieIcon positioned in the bbox */}\n <View style={[styles.iconContainer, {\n left: 20,\n top: 140,\n width: 350,\n height: 200,\n }]}>\n <SideSelfieIcon />\n </View>\n </View>\n \n {state.error && (\n <View style={styles.errorContainer}>\n <Text style={styles.errorText}>{state.error}</Text>\n </View>\n )}\n \n <View style={styles.controlsContainer}>\n {state.isRecording ? (\n <TouchableOpacity style={styles.stopButton} onPress={stopRecording}>\n <Text style={styles.stopButtonText}>Stop Recording</Text>\n </TouchableOpacity>\n ) : (\n <TouchableOpacity \n style={styles.recordButton} \n onPress={startRecording}\n disabled={state.isProcessing}\n >\n <Text style={styles.recordButtonText}>Start Recording</Text>\n </TouchableOpacity>\n )}\n </View>\n </View>\n </Camera>\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n backgroundColor: '#000',\n },\n camera: {\n flex: 1,\n },\n overlay: {\n flex: 1,\n backgroundColor: 'rgba(0, 0, 0, 0.2)',\n justifyContent: 'space-between',\n padding: 20,\n },\n instructionContainer: {\n backgroundColor: 'rgba(0, 0, 0, 0.7)',\n padding: 15,\n borderRadius: 10,\n marginTop: 50,\n alignSelf: 'center',\n },\n instructionText: {\n color: '#fff',\n fontSize: 18,\n fontWeight: 'bold',\n textAlign: 'center',\n },\n controlsContainer: {\n alignItems: 'center',\n marginBottom: 50,\n },\n recordButton: {\n backgroundColor: '#FF3B30',\n paddingHorizontal: 30,\n paddingVertical: 15,\n borderRadius: 25,\n minWidth: 150,\n alignItems: 'center',\n },\n recordButtonText: {\n color: '#fff',\n fontSize: 18,\n fontWeight: 'bold',\n },\n stopButton: {\n backgroundColor: '#007AFF',\n paddingHorizontal: 30,\n paddingVertical: 15,\n borderRadius: 25,\n minWidth: 150,\n alignItems: 'center',\n },\n stopButtonText: {\n color: '#fff',\n fontSize: 18,\n fontWeight: 'bold',\n },\n videoPreview: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor: '#f0f0f0',\n },\n previewText: {\n fontSize: 18,\n fontWeight: 'bold',\n color: '#333',\n marginBottom: 10,\n },\n previewSubtext: {\n fontSize: 14,\n color: '#666',\n textAlign: 'center',\n paddingHorizontal: 20,\n },\n processingOverlay: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.7)',\n justifyContent: 'center',\n alignItems: 'center',\n },\n processingText: {\n color: '#fff',\n fontSize: 16,\n marginTop: 10,\n },\n resultContainer: {\n backgroundColor: 'rgba(255, 255, 255, 0.9)',\n padding: 20,\n borderRadius: 10,\n margin: 20,\n },\n resultTitle: {\n fontSize: 18,\n fontWeight: 'bold',\n textAlign: 'center',\n marginBottom: 15,\n },\n orientationResults: {\n flexDirection: 'row',\n justifyContent: 'space-around',\n },\n orientationResult: {\n alignItems: 'center',\n },\n orientationLabel: {\n fontSize: 14,\n fontWeight: '600',\n marginBottom: 5,\n },\n orientationStatus: {\n fontSize: 20,\n marginBottom: 5,\n },\n captured: {\n color: '#34C759',\n },\n frameInfo: {\n fontSize: 12,\n color: '#666',\n },\n buttonContainer: {\n flexDirection: 'row',\n justifyContent: 'space-around',\n padding: 20,\n },\n retakeButton: {\n backgroundColor: '#FF9500',\n paddingHorizontal: 20,\n paddingVertical: 10,\n borderRadius: 20,\n },\n retakeButtonText: {\n color: '#fff',\n fontSize: 16,\n fontWeight: '600',\n },\n resetButton: {\n backgroundColor: '#007AFF',\n paddingHorizontal: 20,\n paddingVertical: 10,\n borderRadius: 20,\n },\n resetButtonText: {\n color: '#fff',\n fontSize: 16,\n fontWeight: '600',\n },\n errorContainer: {\n backgroundColor: 'rgba(255, 59, 48, 0.8)',\n padding: 15,\n borderRadius: 10,\n margin: 20,\n },\n errorText: {\n color: '#fff',\n fontSize: 16,\n textAlign: 'center',\n },\n loadingText: {\n color: '#fff',\n fontSize: 16,\n textAlign: 'center',\n marginTop: 10,\n },\n button: {\n backgroundColor: '#007AFF',\n paddingHorizontal: 30,\n paddingVertical: 15,\n borderRadius: 25,\n marginTop: 20,\n alignSelf: 'center',\n },\n buttonText: {\n color: '#fff',\n fontSize: 16,\n fontWeight: 'bold',\n },\n iconOverlay: {\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: [{ translateX: -120 }, { translateY: -142.5 }], // Half of width and height\n opacity: 1,\n zIndex: 10,\n backgroundColor: 'rgba(0, 0, 0, 0.1)',\n borderRadius: 10,\n padding: 10,\n },\n iconContainer: {\n position: 'absolute',\n justifyContent: 'center',\n alignItems: 'center',\n },\n});\n\nexport default OrientationVideoCapture; "]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { OrientationVideoConfig } from '../../types/KYC.types';
|
|
3
|
-
import
|
|
3
|
+
import kycService from '../../modules/api/KYCService';
|
|
4
4
|
interface OrientationVideoCaptureEnhancedProps {
|
|
5
5
|
config?: Partial<OrientationVideoConfig>;
|
|
6
6
|
onComplete: (result: any) => void;
|
|
7
7
|
onError: (error: string) => void;
|
|
8
|
-
kycService:
|
|
8
|
+
kycService: typeof kycService;
|
|
9
9
|
}
|
|
10
10
|
export declare const OrientationVideoCaptureEnhanced: React.FC<OrientationVideoCaptureEnhancedProps>;
|
|
11
11
|
export default OrientationVideoCaptureEnhanced;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OrientationVideoCaptureEnhanced.d.ts","sourceRoot":"","sources":["../../../src/components/KYCElements/OrientationVideoCaptureEnhanced.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAa3D,OAAO,EAAE,sBAAsB,EAAyB,MAAM,uBAAuB,CAAC;AACtF,OAAO,UAAU,MAAM,8BAA8B,CAAC;AAItD,UAAU,oCAAoC;IAC5C,MAAM,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACzC,UAAU,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;IAClC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,UAAU,EAAE,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"OrientationVideoCaptureEnhanced.d.ts","sourceRoot":"","sources":["../../../src/components/KYCElements/OrientationVideoCaptureEnhanced.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAa3D,OAAO,EAAE,sBAAsB,EAAyB,MAAM,uBAAuB,CAAC;AACtF,OAAO,UAAU,MAAM,8BAA8B,CAAC;AAItD,UAAU,oCAAoC;IAC5C,MAAM,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACzC,UAAU,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;IAClC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,UAAU,EAAE,OAAO,UAAU,CAAC;CAC/B;AAiBD,eAAO,MAAM,+BAA+B,EAAE,KAAK,CAAC,EAAE,CAAC,oCAAoC,CAqY1F,CAAC;AAuLF,eAAe,+BAA+B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OrientationVideoCaptureEnhanced.js","sourceRoot":"","sources":["../../../src/components/KYCElements/OrientationVideoCaptureEnhanced.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useState, useRef, useEffect } from 'react';\nimport {\n View,\n Text,\n StyleSheet,\n TouchableOpacity,\n Alert,\n ActivityIndicator,\n Animated,\n Dimensions,\n} from 'react-native';\nimport Svg, { Rect, Path, Mask, Defs } from 'react-native-svg';\nimport { EnhancedCameraView } from '../EnhancedCameraView';\nimport { OrientationVideoConfig, OrientationVideoState } from '../../types/KYC.types';\nimport KYCService from '../../modules/api/KYCService';\nimport FrontSelfieIcon from '../Svgs/frontSelfieIcon';\nimport ScanningLine from '../Svgs/scanningLine';\n\ninterface OrientationVideoCaptureEnhancedProps {\n config?: Partial<OrientationVideoConfig>;\n onComplete: (result: any) => void;\n onError: (error: string) => void;\n kycService: KYCService;\n}\n\nconst defaultConfig: OrientationVideoConfig = {\n duration: 10, // 10 seconds\n orientations: ['center', 'left', 'right'],\n instructions: {\n center: 'Look straight ahead at the camera',\n left: 'Turn your head to the left',\n right: 'Turn your head to the right',\n },\n showPreview: true,\n allowRetake: true,\n maxRetakes: 3,\n quality: 0.8,\n aspectRatio: 16 / 9,\n};\n\nexport const OrientationVideoCaptureEnhanced: React.FC<OrientationVideoCaptureEnhancedProps> = ({\n config = {},\n onComplete,\n onError,\n kycService,\n}) => {\n const finalConfig = { ...defaultConfig, ...config };\n const { width: screenWidth, height: screenHeight } = Dimensions.get('window');\n \n const bbox = [20, 140, 370, 340]; // [xMin, yMin, xMax, yMax]\n \n const [state, setState] = useState<OrientationVideoState>({\n isRecording: false,\n currentOrientation: null,\n recordedVideo: null,\n processingResult: null,\n isProcessing: false,\n error: null,\n retakeCount: 0,\n });\n\n const [showCamera, setShowCamera] = useState(true);\n const instructionAnimation = useRef(new Animated.Value(0)).current;\n const recordingTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n startInstructionAnimation();\n }, []);\n\n useEffect(() => {\n return () => {\n if (recordingTimeoutRef.current) {\n clearTimeout(recordingTimeoutRef.current);\n }\n };\n }, []);\n\n const startInstructionAnimation = () => {\n Animated.loop(\n Animated.sequence([\n Animated.timing(instructionAnimation, {\n toValue: 1,\n duration: 1000,\n useNativeDriver: false,\n }),\n Animated.timing(instructionAnimation, {\n toValue: 0.8,\n duration: 1000,\n useNativeDriver: false,\n }),\n ])\n ).start();\n };\n\n const startRecording = async () => {\n if (state.isRecording) return;\n\n try {\n setState(prev => ({ ...prev, isRecording: true, error: null }));\n \n // Simulate video recording with photo capture\n // In a real implementation, you would need to extend EnhancedCameraView for video\n const mockVideoPath = `video_${Date.now()}.mp4`;\n \n // Set timeout to simulate recording duration\n recordingTimeoutRef.current = setTimeout(() => {\n setState(prev => ({ \n ...prev, \n isRecording: false, \n recordedVideo: mockVideoPath \n }));\n // Process the video immediately\n processVideo(mockVideoPath);\n }, finalConfig.duration * 1000);\n\n } catch (error) {\n console.error('Error starting recording:', error);\n setState(prev => ({ \n ...prev, \n isRecording: false, \n error: 'Failed to start recording' \n }));\n onError('Failed to start recording');\n }\n };\n\n const stopRecording = async () => {\n if (!state.isRecording) return;\n\n try {\n if (recordingTimeoutRef.current) {\n clearTimeout(recordingTimeoutRef.current);\n recordingTimeoutRef.current = null;\n }\n \n const mockVideoPath = `video_${Date.now()}.mp4`;\n setState(prev => ({ \n ...prev, \n isRecording: false, \n recordedVideo: mockVideoPath \n }));\n \n // Process the video immediately\n processVideo(mockVideoPath);\n } catch (error) {\n console.error('Error stopping recording:', error);\n }\n };\n\n const processVideo = async (videoUri: string) => {\n if (state.isProcessing) return;\n\n setState(prev => ({ ...prev, isProcessing: true, error: null }));\n\n try {\n const result = await kycService.processOrientationVideo(videoUri);\n \n if (result.success && result.data) {\n setState(prev => ({ \n ...prev, \n processingResult: result.data || null,\n isProcessing: false \n }));\n onComplete(result.data);\n } else {\n setState(prev => ({ \n ...prev, \n isProcessing: false,\n error: result.message || 'Processing failed' \n }));\n onError(result.message || 'Processing failed');\n }\n } catch (error) {\n console.error('Error processing video:', error);\n setState(prev => ({ \n ...prev, \n isProcessing: false,\n error: 'Failed to process video' \n }));\n onError('Failed to process video');\n }\n };\n\n const retake = () => {\n if (state.retakeCount >= finalConfig.maxRetakes) {\n Alert.alert('Max Retakes Reached', 'You have reached the maximum number of retakes.');\n return;\n }\n\n setState(prev => ({ \n ...prev, \n recordedVideo: null,\n processingResult: null,\n error: null,\n retakeCount: prev.retakeCount + 1 \n }));\n setShowCamera(true);\n };\n\n const reset = () => {\n setState({\n isRecording: false,\n currentOrientation: null,\n recordedVideo: null,\n processingResult: null,\n isProcessing: false,\n error: null,\n retakeCount: 0,\n });\n setShowCamera(true);\n };\n\n const handleCapture = (result: { success: boolean; path?: string; error?: string }) => {\n if (result.success && result.path) {\n // For demo purposes, we'll use the photo as a video placeholder\n setState(prev => ({\n ...prev,\n recordedVideo: result.path || null\n }));\n setShowCamera(false);\n // Process the video\n processVideo(result.path);\n } else {\n setState(prev => ({ \n ...prev, \n error: result.error || 'Capture failed' \n }));\n onError(result.error || 'Capture failed');\n }\n };\n\n const renderInstructions = () => {\n if (!state.currentOrientation) return null;\n\n const instruction = finalConfig.instructions[state.currentOrientation];\n \n return (\n <Animated.View \n style={[\n styles.instructionContainer,\n { opacity: instructionAnimation }\n ]}\n >\n <Text style={styles.instructionText}>{instruction}</Text>\n </Animated.View>\n );\n };\n\n const renderProcessingResult = () => {\n if (!state.processingResult) return null;\n\n const { center, left, right } = state.processingResult;\n const allCaptured = center.captured && left.captured && right.captured;\n\n return (\n <View style={styles.resultContainer}>\n <Text style={styles.resultTitle}>\n {allCaptured ? '✅ All orientations captured!' : '⚠️ Some orientations missing'}\n </Text>\n \n <View style={styles.orientationResults}>\n <View style={styles.orientationResult}>\n <Text style={styles.orientationLabel}>Center</Text>\n <Text style={[styles.orientationStatus, center.captured && styles.captured]}>\n {center.captured ? '✅' : '❌'}\n </Text>\n {center.captured && (\n <Text style={styles.frameInfo}>Frame: {center.frame}</Text>\n )}\n </View>\n \n <View style={styles.orientationResult}>\n <Text style={styles.orientationLabel}>Left</Text>\n <Text style={[styles.orientationStatus, left.captured && styles.captured]}>\n {left.captured ? '✅' : '❌'}\n </Text>\n {left.captured && (\n <Text style={styles.frameInfo}>Frame: {left.frame}</Text>\n )}\n </View>\n \n <View style={styles.orientationResult}>\n <Text style={styles.orientationLabel}>Right</Text>\n <Text style={[styles.orientationStatus, right.captured && styles.captured]}>\n {right.captured ? '✅' : '❌'}\n </Text>\n {right.captured && (\n <Text style={styles.frameInfo}>Frame: {right.frame}</Text>\n )}\n </View>\n </View>\n </View>\n );\n };\n\n if (state.recordedVideo && finalConfig.showPreview) {\n return (\n <View style={styles.container}>\n <View style={styles.videoPreview}>\n <Text style={styles.previewText}>Video recorded successfully</Text>\n <Text style={styles.previewSubtext}>Path: {state.recordedVideo}</Text>\n </View>\n \n {state.isProcessing && (\n <View style={styles.processingOverlay}>\n <ActivityIndicator size=\"large\" color=\"#007AFF\" />\n <Text style={styles.processingText}>Processing video...</Text>\n </View>\n )}\n \n {renderProcessingResult()}\n \n <View style={styles.buttonContainer}>\n {finalConfig.allowRetake && state.retakeCount < finalConfig.maxRetakes && (\n <TouchableOpacity style={styles.retakeButton} onPress={retake}>\n <Text style={styles.retakeButtonText}>\n Retake ({finalConfig.maxRetakes - state.retakeCount} left)\n </Text>\n </TouchableOpacity>\n )}\n \n <TouchableOpacity style={styles.resetButton} onPress={reset}>\n <Text style={styles.resetButtonText}>Start Over</Text>\n </TouchableOpacity>\n </View>\n </View>\n );\n }\n\n return (\n <View style={styles.container}>\n <EnhancedCameraView\n showCamera={showCamera}\n showSwitchCamera={false}\n cameraType=\"front\"\n bbox={{\n xMin: 150,\n yMin: 210,\n xMax: 350,\n yMax: 410,\n borderColor: \"#2DBD60\",\n borderWidth: 3,\n cornerRadius: 8\n }}\n onCapture={handleCapture}\n onError={(error) => {\n setState(prev => ({ ...prev, error: error.message }));\n onError(error.message);\n }}\n overlayComponent={\n <View style={styles.overlay}>\n {renderInstructions()}\n \n {/* SideSelfieIcon overlay with mask */}\n <View style={styles.iconOverlay}>\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 dans le bbox) */}\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(${bbox[0] + (bbox[2] - bbox[0]) / 2}, ${bbox[1] + (bbox[3] - bbox[1]) / 2}) scale(1) 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={140} screenWidth={screenWidth} height={screenHeight} yMax={340}/>\n </Svg>\n \n {/* SideSelfieIcon positioned in the bbox */}\n <View style={[styles.iconContainer, {\n left: 20,\n top: 140,\n width: 350,\n height: 200,\n }]}>\n <FrontSelfieIcon/>\n {/* <SideSelfieIcon /> */}\n </View>\n </View>\n \n {state.error && (\n <View style={styles.errorContainer}>\n <Text style={styles.errorText}>{state.error}</Text>\n </View>\n )}\n \n <View style={styles.controlsContainer}>\n {state.isRecording ? (\n <TouchableOpacity style={styles.stopButton} onPress={stopRecording}>\n <Text style={styles.stopButtonText}>Stop Recording</Text>\n </TouchableOpacity>\n ) : (\n <TouchableOpacity \n style={styles.recordButton} \n onPress={startRecording}\n disabled={state.isProcessing}\n >\n <Text style={styles.recordButtonText}>Start Recording</Text>\n </TouchableOpacity>\n )}\n </View>\n </View>\n }\n />\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n backgroundColor: '#000',\n position: 'relative',\n },\n overlay: {\n position: 'absolute',\n top: 0,\n left: 0,\n flex: 1,\n width: '100%',\n height: '100%',\n },\n instructionContainer: {\n backgroundColor: 'rgba(0, 0, 0, 0.7)',\n padding: 15,\n borderRadius: 10,\n marginTop: 50,\n alignSelf: 'center',\n },\n instructionText: {\n color: '#fff',\n fontSize: 18,\n fontWeight: 'bold',\n textAlign: 'center',\n },\n controlsContainer: {\n alignItems: 'center',\n marginBottom: 50,\n },\n recordButton: {\n backgroundColor: '#FF3B30',\n paddingHorizontal: 30,\n paddingVertical: 15,\n borderRadius: 25,\n minWidth: 150,\n alignItems: 'center',\n },\n recordButtonText: {\n color: '#fff',\n fontSize: 18,\n fontWeight: 'bold',\n },\n stopButton: {\n backgroundColor: '#007AFF',\n paddingHorizontal: 30,\n paddingVertical: 15,\n borderRadius: 25,\n minWidth: 150,\n alignItems: 'center',\n },\n stopButtonText: {\n color: '#fff',\n fontSize: 18,\n fontWeight: 'bold',\n },\n videoPreview: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor: '#f0f0f0',\n },\n previewText: {\n fontSize: 18,\n fontWeight: 'bold',\n color: '#333',\n marginBottom: 10,\n },\n previewSubtext: {\n fontSize: 14,\n color: '#666',\n textAlign: 'center',\n paddingHorizontal: 20,\n },\n processingOverlay: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.7)',\n justifyContent: 'center',\n alignItems: 'center',\n },\n processingText: {\n color: '#fff',\n fontSize: 16,\n marginTop: 10,\n },\n resultContainer: {\n backgroundColor: 'rgba(255, 255, 255, 0.9)',\n padding: 20,\n borderRadius: 10,\n margin: 20,\n },\n resultTitle: {\n fontSize: 18,\n fontWeight: 'bold',\n textAlign: 'center',\n marginBottom: 15,\n },\n orientationResults: {\n flexDirection: 'row',\n justifyContent: 'space-around',\n },\n orientationResult: {\n alignItems: 'center',\n },\n orientationLabel: {\n fontSize: 14,\n fontWeight: '600',\n marginBottom: 5,\n },\n orientationStatus: {\n fontSize: 20,\n marginBottom: 5,\n },\n captured: {\n color: '#34C759',\n },\n frameInfo: {\n fontSize: 12,\n color: '#666',\n },\n buttonContainer: {\n flexDirection: 'row',\n justifyContent: 'space-around',\n padding: 20,\n },\n retakeButton: {\n backgroundColor: '#FF9500',\n paddingHorizontal: 20,\n paddingVertical: 10,\n borderRadius: 20,\n },\n retakeButtonText: {\n color: '#fff',\n fontSize: 16,\n fontWeight: '600',\n },\n resetButton: {\n backgroundColor: '#007AFF',\n paddingHorizontal: 20,\n paddingVertical: 10,\n borderRadius: 20,\n },\n resetButtonText: {\n color: '#fff',\n fontSize: 16,\n fontWeight: '600',\n },\n errorContainer: {\n backgroundColor: 'rgba(255, 59, 48, 0.8)',\n padding: 15,\n borderRadius: 10,\n margin: 20,\n },\n errorText: {\n color: '#fff',\n fontSize: 16,\n textAlign: 'center',\n },\n iconOverlay: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n width: '100%',\n height: '100%',\n justifyContent: 'center',\n alignItems: 'center',\n },\n iconContainer: {\n position: 'absolute',\n justifyContent: 'center',\n alignItems: 'center',\n },\n});\n\nexport default OrientationVideoCaptureEnhanced; "]}
|
|
1
|
+
{"version":3,"file":"OrientationVideoCaptureEnhanced.js","sourceRoot":"","sources":["../../../src/components/KYCElements/OrientationVideoCaptureEnhanced.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useState, useRef, useEffect } from 'react';\nimport {\n View,\n Text,\n StyleSheet,\n TouchableOpacity,\n Alert,\n ActivityIndicator,\n Animated,\n Dimensions,\n} from 'react-native';\nimport Svg, { Rect, Path, Mask, Defs } from 'react-native-svg';\nimport { EnhancedCameraView } from '../EnhancedCameraView';\nimport { OrientationVideoConfig, OrientationVideoState } from '../../types/KYC.types';\nimport kycService from '../../modules/api/KYCService';\nimport FrontSelfieIcon from '../Svgs/frontSelfieIcon';\nimport ScanningLine from '../Svgs/scanningLine';\n\ninterface OrientationVideoCaptureEnhancedProps {\n config?: Partial<OrientationVideoConfig>;\n onComplete: (result: any) => void;\n onError: (error: string) => void;\n kycService: typeof kycService;\n}\n\nconst defaultConfig: OrientationVideoConfig = {\n duration: 10, // 10 seconds\n orientations: ['center', 'left', 'right'],\n instructions: {\n center: 'Look straight ahead at the camera',\n left: 'Turn your head to the left',\n right: 'Turn your head to the right',\n },\n showPreview: true,\n allowRetake: true,\n maxRetakes: 3,\n quality: 0.8,\n aspectRatio: 16 / 9,\n};\n\nexport const OrientationVideoCaptureEnhanced: React.FC<OrientationVideoCaptureEnhancedProps> = ({\n config = {},\n onComplete,\n onError,\n kycService,\n}) => {\n const finalConfig = { ...defaultConfig, ...config };\n const { width: screenWidth, height: screenHeight } = Dimensions.get('window');\n \n const bbox = [20, 140, 370, 340]; // [xMin, yMin, xMax, yMax]\n \n const [state, setState] = useState<OrientationVideoState>({\n isRecording: false,\n currentOrientation: null,\n recordedVideo: null,\n processingResult: null,\n isProcessing: false,\n error: null,\n retakeCount: 0,\n });\n\n const [showCamera, setShowCamera] = useState(true);\n const instructionAnimation = useRef(new Animated.Value(0)).current;\n const recordingTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n startInstructionAnimation();\n }, []);\n\n useEffect(() => {\n return () => {\n if (recordingTimeoutRef.current) {\n clearTimeout(recordingTimeoutRef.current);\n }\n };\n }, []);\n\n const startInstructionAnimation = () => {\n Animated.loop(\n Animated.sequence([\n Animated.timing(instructionAnimation, {\n toValue: 1,\n duration: 1000,\n useNativeDriver: false,\n }),\n Animated.timing(instructionAnimation, {\n toValue: 0.8,\n duration: 1000,\n useNativeDriver: false,\n }),\n ])\n ).start();\n };\n\n const startRecording = async () => {\n if (state.isRecording) return;\n\n try {\n setState(prev => ({ ...prev, isRecording: true, error: null }));\n \n // Simulate video recording with photo capture\n // In a real implementation, you would need to extend EnhancedCameraView for video\n const mockVideoPath = `video_${Date.now()}.mp4`;\n \n // Set timeout to simulate recording duration\n recordingTimeoutRef.current = setTimeout(() => {\n setState(prev => ({ \n ...prev, \n isRecording: false, \n recordedVideo: mockVideoPath \n }));\n // Process the video immediately\n processVideo(mockVideoPath);\n }, finalConfig.duration * 1000);\n\n } catch (error) {\n console.error('Error starting recording:', error);\n setState(prev => ({ \n ...prev, \n isRecording: false, \n error: 'Failed to start recording' \n }));\n onError('Failed to start recording');\n }\n };\n\n const stopRecording = async () => {\n if (!state.isRecording) return;\n\n try {\n if (recordingTimeoutRef.current) {\n clearTimeout(recordingTimeoutRef.current);\n recordingTimeoutRef.current = null;\n }\n \n const mockVideoPath = `video_${Date.now()}.mp4`;\n setState(prev => ({ \n ...prev, \n isRecording: false, \n recordedVideo: mockVideoPath \n }));\n \n // Process the video immediately\n processVideo(mockVideoPath);\n } catch (error) {\n console.error('Error stopping recording:', error);\n }\n };\n\n const processVideo = async (videoUri: string) => {\n if (state.isProcessing) return;\n\n setState(prev => ({ ...prev, isProcessing: true, error: null }));\n\n try {\n const result = await kycService.processOrientationVideo(videoUri);\n \n if (result.success && result.data) {\n setState(prev => ({ \n ...prev, \n processingResult: result.data || null,\n isProcessing: false \n }));\n onComplete(result.data);\n } else {\n setState(prev => ({ \n ...prev, \n isProcessing: false,\n error: result.message || 'Processing failed' \n }));\n onError(result.message || 'Processing failed');\n }\n } catch (error) {\n console.error('Error processing video:', error);\n setState(prev => ({ \n ...prev, \n isProcessing: false,\n error: 'Failed to process video' \n }));\n onError('Failed to process video');\n }\n };\n\n const retake = () => {\n if (state.retakeCount >= finalConfig.maxRetakes) {\n Alert.alert('Max Retakes Reached', 'You have reached the maximum number of retakes.');\n return;\n }\n\n setState(prev => ({ \n ...prev, \n recordedVideo: null,\n processingResult: null,\n error: null,\n retakeCount: prev.retakeCount + 1 \n }));\n setShowCamera(true);\n };\n\n const reset = () => {\n setState({\n isRecording: false,\n currentOrientation: null,\n recordedVideo: null,\n processingResult: null,\n isProcessing: false,\n error: null,\n retakeCount: 0,\n });\n setShowCamera(true);\n };\n\n const handleCapture = (result: { success: boolean; path?: string; error?: string }) => {\n if (result.success && result.path) {\n // For demo purposes, we'll use the photo as a video placeholder\n setState(prev => ({\n ...prev,\n recordedVideo: result.path || null\n }));\n setShowCamera(false);\n // Process the video\n processVideo(result.path);\n } else {\n setState(prev => ({ \n ...prev, \n error: result.error || 'Capture failed' \n }));\n onError(result.error || 'Capture failed');\n }\n };\n\n const renderInstructions = () => {\n if (!state.currentOrientation) return null;\n\n const instruction = finalConfig.instructions[state.currentOrientation];\n \n return (\n <Animated.View \n style={[\n styles.instructionContainer,\n { opacity: instructionAnimation }\n ]}\n >\n <Text style={styles.instructionText}>{instruction}</Text>\n </Animated.View>\n );\n };\n\n const renderProcessingResult = () => {\n if (!state.processingResult) return null;\n\n const { center, left, right } = state.processingResult;\n const allCaptured = center.captured && left.captured && right.captured;\n\n return (\n <View style={styles.resultContainer}>\n <Text style={styles.resultTitle}>\n {allCaptured ? '✅ All orientations captured!' : '⚠️ Some orientations missing'}\n </Text>\n \n <View style={styles.orientationResults}>\n <View style={styles.orientationResult}>\n <Text style={styles.orientationLabel}>Center</Text>\n <Text style={[styles.orientationStatus, center.captured && styles.captured]}>\n {center.captured ? '✅' : '❌'}\n </Text>\n {center.captured && (\n <Text style={styles.frameInfo}>Frame: {center.frame}</Text>\n )}\n </View>\n \n <View style={styles.orientationResult}>\n <Text style={styles.orientationLabel}>Left</Text>\n <Text style={[styles.orientationStatus, left.captured && styles.captured]}>\n {left.captured ? '✅' : '❌'}\n </Text>\n {left.captured && (\n <Text style={styles.frameInfo}>Frame: {left.frame}</Text>\n )}\n </View>\n \n <View style={styles.orientationResult}>\n <Text style={styles.orientationLabel}>Right</Text>\n <Text style={[styles.orientationStatus, right.captured && styles.captured]}>\n {right.captured ? '✅' : '❌'}\n </Text>\n {right.captured && (\n <Text style={styles.frameInfo}>Frame: {right.frame}</Text>\n )}\n </View>\n </View>\n </View>\n );\n };\n\n if (state.recordedVideo && finalConfig.showPreview) {\n return (\n <View style={styles.container}>\n <View style={styles.videoPreview}>\n <Text style={styles.previewText}>Video recorded successfully</Text>\n <Text style={styles.previewSubtext}>Path: {state.recordedVideo}</Text>\n </View>\n \n {state.isProcessing && (\n <View style={styles.processingOverlay}>\n <ActivityIndicator size=\"large\" color=\"#007AFF\" />\n <Text style={styles.processingText}>Processing video...</Text>\n </View>\n )}\n \n {renderProcessingResult()}\n \n <View style={styles.buttonContainer}>\n {finalConfig.allowRetake && state.retakeCount < finalConfig.maxRetakes && (\n <TouchableOpacity style={styles.retakeButton} onPress={retake}>\n <Text style={styles.retakeButtonText}>\n Retake ({finalConfig.maxRetakes - state.retakeCount} left)\n </Text>\n </TouchableOpacity>\n )}\n \n <TouchableOpacity style={styles.resetButton} onPress={reset}>\n <Text style={styles.resetButtonText}>Start Over</Text>\n </TouchableOpacity>\n </View>\n </View>\n );\n }\n\n return (\n <View style={styles.container}>\n <EnhancedCameraView\n showCamera={showCamera}\n showSwitchCamera={false}\n cameraType=\"front\"\n bbox={{\n xMin: 150,\n yMin: 210,\n xMax: 350,\n yMax: 410,\n borderColor: \"#2DBD60\",\n borderWidth: 3,\n cornerRadius: 8\n }}\n onCapture={handleCapture}\n onError={(error) => {\n setState(prev => ({ ...prev, error: error.message }));\n onError(error.message);\n }}\n overlayComponent={\n <View style={styles.overlay}>\n {renderInstructions()}\n \n {/* SideSelfieIcon overlay with mask */}\n <View style={styles.iconOverlay}>\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 dans le bbox) */}\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(${bbox[0] + (bbox[2] - bbox[0]) / 2}, ${bbox[1] + (bbox[3] - bbox[1]) / 2}) scale(1) 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={140} screenWidth={screenWidth} height={screenHeight} yMax={340}/>\n </Svg>\n \n {/* SideSelfieIcon positioned in the bbox */}\n <View style={[styles.iconContainer, {\n left: 20,\n top: 140,\n width: 350,\n height: 200,\n }]}>\n <FrontSelfieIcon/>\n {/* <SideSelfieIcon /> */}\n </View>\n </View>\n \n {state.error && (\n <View style={styles.errorContainer}>\n <Text style={styles.errorText}>{state.error}</Text>\n </View>\n )}\n \n <View style={styles.controlsContainer}>\n {state.isRecording ? (\n <TouchableOpacity style={styles.stopButton} onPress={stopRecording}>\n <Text style={styles.stopButtonText}>Stop Recording</Text>\n </TouchableOpacity>\n ) : (\n <TouchableOpacity \n style={styles.recordButton} \n onPress={startRecording}\n disabled={state.isProcessing}\n >\n <Text style={styles.recordButtonText}>Start Recording</Text>\n </TouchableOpacity>\n )}\n </View>\n </View>\n }\n />\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n backgroundColor: '#000',\n position: 'relative',\n },\n overlay: {\n position: 'absolute',\n top: 0,\n left: 0,\n flex: 1,\n width: '100%',\n height: '100%',\n },\n instructionContainer: {\n backgroundColor: 'rgba(0, 0, 0, 0.7)',\n padding: 15,\n borderRadius: 10,\n marginTop: 50,\n alignSelf: 'center',\n },\n instructionText: {\n color: '#fff',\n fontSize: 18,\n fontWeight: 'bold',\n textAlign: 'center',\n },\n controlsContainer: {\n alignItems: 'center',\n marginBottom: 50,\n },\n recordButton: {\n backgroundColor: '#FF3B30',\n paddingHorizontal: 30,\n paddingVertical: 15,\n borderRadius: 25,\n minWidth: 150,\n alignItems: 'center',\n },\n recordButtonText: {\n color: '#fff',\n fontSize: 18,\n fontWeight: 'bold',\n },\n stopButton: {\n backgroundColor: '#007AFF',\n paddingHorizontal: 30,\n paddingVertical: 15,\n borderRadius: 25,\n minWidth: 150,\n alignItems: 'center',\n },\n stopButtonText: {\n color: '#fff',\n fontSize: 18,\n fontWeight: 'bold',\n },\n videoPreview: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor: '#f0f0f0',\n },\n previewText: {\n fontSize: 18,\n fontWeight: 'bold',\n color: '#333',\n marginBottom: 10,\n },\n previewSubtext: {\n fontSize: 14,\n color: '#666',\n textAlign: 'center',\n paddingHorizontal: 20,\n },\n processingOverlay: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.7)',\n justifyContent: 'center',\n alignItems: 'center',\n },\n processingText: {\n color: '#fff',\n fontSize: 16,\n marginTop: 10,\n },\n resultContainer: {\n backgroundColor: 'rgba(255, 255, 255, 0.9)',\n padding: 20,\n borderRadius: 10,\n margin: 20,\n },\n resultTitle: {\n fontSize: 18,\n fontWeight: 'bold',\n textAlign: 'center',\n marginBottom: 15,\n },\n orientationResults: {\n flexDirection: 'row',\n justifyContent: 'space-around',\n },\n orientationResult: {\n alignItems: 'center',\n },\n orientationLabel: {\n fontSize: 14,\n fontWeight: '600',\n marginBottom: 5,\n },\n orientationStatus: {\n fontSize: 20,\n marginBottom: 5,\n },\n captured: {\n color: '#34C759',\n },\n frameInfo: {\n fontSize: 12,\n color: '#666',\n },\n buttonContainer: {\n flexDirection: 'row',\n justifyContent: 'space-around',\n padding: 20,\n },\n retakeButton: {\n backgroundColor: '#FF9500',\n paddingHorizontal: 20,\n paddingVertical: 10,\n borderRadius: 20,\n },\n retakeButtonText: {\n color: '#fff',\n fontSize: 16,\n fontWeight: '600',\n },\n resetButton: {\n backgroundColor: '#007AFF',\n paddingHorizontal: 20,\n paddingVertical: 10,\n borderRadius: 20,\n },\n resetButtonText: {\n color: '#fff',\n fontSize: 16,\n fontWeight: '600',\n },\n errorContainer: {\n backgroundColor: 'rgba(255, 59, 48, 0.8)',\n padding: 15,\n borderRadius: 10,\n margin: 20,\n },\n errorText: {\n color: '#fff',\n fontSize: 16,\n textAlign: 'center',\n },\n iconOverlay: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n width: '100%',\n height: '100%',\n justifyContent: 'center',\n alignItems: 'center',\n },\n iconContainer: {\n position: 'absolute',\n justifyContent: 'center',\n alignItems: 'center',\n },\n});\n\nexport default OrientationVideoCaptureEnhanced; "]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { OrientationVideoConfig } from '../../types/KYC.types';
|
|
3
|
-
import
|
|
3
|
+
import kycService from '../../modules/api/KYCService';
|
|
4
4
|
interface OrientationVideoCaptureFinalProps {
|
|
5
5
|
config?: Partial<OrientationVideoConfig>;
|
|
6
6
|
onComplete: (result: any) => void;
|
|
7
7
|
onError: (error: string) => void;
|
|
8
|
-
kycService:
|
|
8
|
+
kycService: typeof kycService;
|
|
9
9
|
}
|
|
10
10
|
export declare const OrientationVideoCaptureFinal: React.FC<OrientationVideoCaptureFinalProps>;
|
|
11
11
|
export default OrientationVideoCaptureFinal;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OrientationVideoCaptureFinal.d.ts","sourceRoot":"","sources":["../../../src/components/KYCElements/OrientationVideoCaptureFinal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAY3D,OAAO,EAAE,sBAAsB,EAAyB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"OrientationVideoCaptureFinal.d.ts","sourceRoot":"","sources":["../../../src/components/KYCElements/OrientationVideoCaptureFinal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAY3D,OAAO,EAAE,sBAAsB,EAAyB,MAAM,uBAAuB,CAAC;AAEtF,OAAO,UAAU,MAAM,8BAA8B,CAAC;AAEtD,UAAU,iCAAiC;IACzC,MAAM,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACzC,UAAU,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;IAClC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,UAAU,EAAE,OAAO,UAAU,CAAC;CAC/B;AAiBD,eAAO,MAAM,4BAA4B,EAAE,KAAK,CAAC,EAAE,CAAC,iCAAiC,CAyUpF,CAAC;AAmKF,eAAe,4BAA4B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OrientationVideoCaptureFinal.js","sourceRoot":"","sources":["../../../src/components/KYCElements/OrientationVideoCaptureFinal.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useState, useRef, useEffect } from 'react';\nimport {\n View,\n Text,\n StyleSheet,\n TouchableOpacity,\n Alert,\n ActivityIndicator,\n Animated,\n} from 'react-native';\nimport Svg, { Rect, Path, Mask, Defs } from 'react-native-svg';\nimport { EnhancedCameraView } from '../EnhancedCameraView';\nimport { OrientationVideoConfig, OrientationVideoState } from '../../types/KYC.types';\nimport KYCService from '../../modules/api/KYCService';\nimport SideSelfieIcon from '../Svgs/sideSelfieIcon';\n\ninterface OrientationVideoCaptureFinalProps {\n config?: Partial<OrientationVideoConfig>;\n onComplete: (result: any) => void;\n onError: (error: string) => void;\n kycService: KYCService;\n}\n\nconst defaultConfig: OrientationVideoConfig = {\n duration: 10, // 10 seconds\n orientations: ['center', 'left', 'right'],\n instructions: {\n center: 'Look straight ahead at the camera',\n left: 'Turn your head to the left',\n right: 'Turn your head to the right',\n },\n showPreview: true,\n allowRetake: true,\n maxRetakes: 3,\n quality: 0.8,\n aspectRatio: 16 / 9,\n};\n\nexport const OrientationVideoCaptureFinal: React.FC<OrientationVideoCaptureFinalProps> = ({\n config = {},\n onComplete,\n onError,\n kycService,\n}) => {\n const finalConfig = { ...defaultConfig, ...config };\n \n const [state, setState] = useState<OrientationVideoState>({\n isRecording: false,\n currentOrientation: null,\n recordedVideo: null,\n processingResult: null,\n isProcessing: false,\n error: null,\n retakeCount: 0,\n });\n\n const [showCamera, setShowCamera] = useState(true);\n const instructionAnimation = useRef(new Animated.Value(0)).current;\n const recordingTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n startInstructionAnimation();\n }, []);\n\n useEffect(() => {\n return () => {\n if (recordingTimeoutRef.current) {\n clearTimeout(recordingTimeoutRef.current);\n }\n };\n }, []);\n\n const startInstructionAnimation = () => {\n Animated.loop(\n Animated.sequence([\n Animated.timing(instructionAnimation, {\n toValue: 1,\n duration: 1000,\n useNativeDriver: false,\n }),\n Animated.timing(instructionAnimation, {\n toValue: 0.8,\n duration: 1000,\n useNativeDriver: false,\n }),\n ])\n ).start();\n };\n\n const handleVideoRecordingStart = () => {\n setState(prev => ({ ...prev, isRecording: true, error: null }));\n \n // Set timeout to automatically stop recording after duration\n recordingTimeoutRef.current = setTimeout(() => {\n // The recording will be stopped automatically by the timeout\n }, finalConfig.duration * 1000);\n };\n\n const handleVideoRecordingStop = (result: { success: boolean; path?: string; error?: string }) => {\n if (recordingTimeoutRef.current) {\n clearTimeout(recordingTimeoutRef.current);\n recordingTimeoutRef.current = null;\n }\n\n if (result.success && result.path) {\n setState(prev => ({\n ...prev,\n isRecording: false,\n recordedVideo: result.path || null\n }));\n setShowCamera(false);\n // Process the video immediately\n processVideo(result.path);\n } else {\n setState(prev => ({ \n ...prev, \n isRecording: false,\n error: result.error || 'Recording failed' \n }));\n onError(result.error || 'Recording failed');\n }\n };\n\n const processVideo = async (videoUri: string) => {\n if (state.isProcessing) return;\n\n setState(prev => ({ ...prev, isProcessing: true, error: null }));\n\n try {\n const result = await kycService.processOrientationVideo(videoUri);\n \n if (result.success && result.data) {\n setState(prev => ({ \n ...prev, \n processingResult: result.data || null,\n isProcessing: false \n }));\n onComplete(result.data);\n } else {\n setState(prev => ({ \n ...prev, \n isProcessing: false,\n error: result.message || 'Processing failed' \n }));\n onError(result.message || 'Processing failed');\n }\n } catch (error) {\n console.error('Error processing video:', error);\n setState(prev => ({ \n ...prev, \n isProcessing: false,\n error: 'Failed to process video' \n }));\n onError('Failed to process video');\n }\n };\n\n const retake = () => {\n if (state.retakeCount >= finalConfig.maxRetakes) {\n Alert.alert('Max Retakes Reached', 'You have reached the maximum number of retakes.');\n return;\n }\n\n setState(prev => ({ \n ...prev, \n recordedVideo: null,\n processingResult: null,\n error: null,\n retakeCount: prev.retakeCount + 1 \n }));\n setShowCamera(true);\n };\n\n const reset = () => {\n setState({\n isRecording: false,\n currentOrientation: null,\n recordedVideo: null,\n processingResult: null,\n isProcessing: false,\n error: null,\n retakeCount: 0,\n });\n setShowCamera(true);\n };\n\n const renderInstructions = () => {\n if (!state.currentOrientation) return null;\n\n const instruction = finalConfig.instructions[state.currentOrientation];\n \n return (\n <Animated.View \n style={[\n styles.instructionContainer,\n { opacity: instructionAnimation }\n ]}\n >\n <Text style={styles.instructionText}>{instruction}</Text>\n </Animated.View>\n );\n };\n\n const renderProcessingResult = () => {\n if (!state.processingResult) return null;\n\n const { center, left, right } = state.processingResult;\n const allCaptured = center.captured && left.captured && right.captured;\n\n return (\n <View style={styles.resultContainer}>\n <Text style={styles.resultTitle}>\n {allCaptured ? '✅ All orientations captured!' : '⚠️ Some orientations missing'}\n </Text>\n \n <View style={styles.orientationResults}>\n <View style={styles.orientationResult}>\n <Text style={styles.orientationLabel}>Center</Text>\n <Text style={[styles.orientationStatus, center.captured && styles.captured]}>\n {center.captured ? '✅' : '❌'}\n </Text>\n {center.captured && (\n <Text style={styles.frameInfo}>Frame: {center.frame}</Text>\n )}\n </View>\n \n <View style={styles.orientationResult}>\n <Text style={styles.orientationLabel}>Left</Text>\n <Text style={[styles.orientationStatus, left.captured && styles.captured]}>\n {left.captured ? '✅' : '❌'}\n </Text>\n {left.captured && (\n <Text style={styles.frameInfo}>Frame: {left.frame}</Text>\n )}\n </View>\n \n <View style={styles.orientationResult}>\n <Text style={styles.orientationLabel}>Right</Text>\n <Text style={[styles.orientationStatus, right.captured && styles.captured]}>\n {right.captured ? '✅' : '❌'}\n </Text>\n {right.captured && (\n <Text style={styles.frameInfo}>Frame: {right.frame}</Text>\n )}\n </View>\n </View>\n </View>\n );\n };\n\n if (state.recordedVideo && finalConfig.showPreview) {\n return (\n <View style={styles.container}>\n <View style={styles.videoPreview}>\n <Text style={styles.previewText}>Video recorded successfully</Text>\n <Text style={styles.previewSubtext}>Path: {state.recordedVideo}</Text>\n <Text style={styles.previewSubtext}>Duration: {finalConfig.duration} seconds</Text>\n </View>\n \n {state.isProcessing && (\n <View style={styles.processingOverlay}>\n <ActivityIndicator size=\"large\" color=\"#007AFF\" />\n <Text style={styles.processingText}>Processing video...</Text>\n </View>\n )}\n \n {renderProcessingResult()}\n \n <View style={styles.buttonContainer}>\n {finalConfig.allowRetake && state.retakeCount < finalConfig.maxRetakes && (\n <TouchableOpacity style={styles.retakeButton} onPress={retake}>\n <Text style={styles.retakeButtonText}>\n Retake ({finalConfig.maxRetakes - state.retakeCount} left)\n </Text>\n </TouchableOpacity>\n )}\n \n <TouchableOpacity style={styles.resetButton} onPress={reset}>\n <Text style={styles.resetButtonText}>Start Over</Text>\n </TouchableOpacity>\n </View>\n </View>\n );\n }\n\n return (\n <View style={styles.container}>\n <EnhancedCameraView\n showCamera={showCamera}\n showSwitchCamera={false}\n cameraType=\"front\"\n enableVideo={true}\n isRecording={state.isRecording}\n onVideoRecordingStart={handleVideoRecordingStart}\n onVideoRecordingStop={handleVideoRecordingStop}\n onError={(error) => {\n setState(prev => ({ ...prev, error: error.message }));\n onError(error.message);\n }}\n overlayComponent={\n <View style={styles.overlay}>\n {renderInstructions()}\n \n {/* SideSelfieIcon overlay with mask */}\n <View style={styles.iconOverlay}>\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 dans le bbox) */}\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(195, 240) scale(0.8) 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 </Svg>\n \n {/* SideSelfieIcon positioned in the bbox */}\n <View style={[styles.iconContainer, {\n left: 20,\n top: 140,\n width: 350,\n height: 200,\n }]}>\n <SideSelfieIcon />\n </View>\n </View>\n \n {state.error && (\n <View style={styles.errorContainer}>\n <Text style={styles.errorText}>{state.error}</Text>\n </View>\n )}\n \n {state.isRecording && (\n <View style={styles.recordingIndicator}>\n <Text style={styles.recordingText}>Recording... {finalConfig.duration}s</Text>\n </View>\n )}\n </View>\n }\n />\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n backgroundColor: '#000',\n },\n overlay: {\n flex: 1,\n backgroundColor: 'rgba(0, 0, 0, 0.2)',\n justifyContent: 'space-between',\n padding: 20,\n },\n instructionContainer: {\n backgroundColor: 'rgba(0, 0, 0, 0.7)',\n padding: 15,\n borderRadius: 10,\n marginTop: 50,\n alignSelf: 'center',\n },\n instructionText: {\n color: '#fff',\n fontSize: 18,\n fontWeight: 'bold',\n textAlign: 'center',\n },\n recordingIndicator: {\n backgroundColor: 'rgba(255, 59, 48, 0.8)',\n padding: 10,\n borderRadius: 20,\n alignSelf: 'center',\n marginTop: 20,\n },\n recordingText: {\n color: '#fff',\n fontSize: 16,\n fontWeight: 'bold',\n },\n videoPreview: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor: '#f0f0f0',\n },\n previewText: {\n fontSize: 18,\n fontWeight: 'bold',\n color: '#333',\n marginBottom: 10,\n },\n previewSubtext: {\n fontSize: 14,\n color: '#666',\n textAlign: 'center',\n paddingHorizontal: 20,\n marginBottom: 5,\n },\n processingOverlay: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.7)',\n justifyContent: 'center',\n alignItems: 'center',\n },\n processingText: {\n color: '#fff',\n fontSize: 16,\n marginTop: 10,\n },\n resultContainer: {\n backgroundColor: 'rgba(255, 255, 255, 0.9)',\n padding: 20,\n borderRadius: 10,\n margin: 20,\n },\n resultTitle: {\n fontSize: 18,\n fontWeight: 'bold',\n textAlign: 'center',\n marginBottom: 15,\n },\n orientationResults: {\n flexDirection: 'row',\n justifyContent: 'space-around',\n },\n orientationResult: {\n alignItems: 'center',\n },\n orientationLabel: {\n fontSize: 14,\n fontWeight: '600',\n marginBottom: 5,\n },\n orientationStatus: {\n fontSize: 20,\n marginBottom: 5,\n },\n captured: {\n color: '#34C759',\n },\n frameInfo: {\n fontSize: 12,\n color: '#666',\n },\n buttonContainer: {\n flexDirection: 'row',\n justifyContent: 'space-around',\n padding: 20,\n },\n retakeButton: {\n backgroundColor: '#FF9500',\n paddingHorizontal: 20,\n paddingVertical: 10,\n borderRadius: 20,\n },\n retakeButtonText: {\n color: '#fff',\n fontSize: 16,\n fontWeight: '600',\n },\n resetButton: {\n backgroundColor: '#007AFF',\n paddingHorizontal: 20,\n paddingVertical: 10,\n borderRadius: 20,\n },\n resetButtonText: {\n color: '#fff',\n fontSize: 16,\n fontWeight: '600',\n },\n errorContainer: {\n backgroundColor: 'rgba(255, 59, 48, 0.8)',\n padding: 15,\n borderRadius: 10,\n margin: 20,\n },\n errorText: {\n color: '#fff',\n fontSize: 16,\n textAlign: 'center',\n },\n iconOverlay: {\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: [{ translateX: -120 }, { translateY: -142.5 }], // Half of width and height\n opacity: 1,\n zIndex: 10,\n backgroundColor: 'rgba(0, 0, 0, 0.1)',\n borderRadius: 10,\n padding: 10,\n },\n iconContainer: {\n position: 'absolute',\n justifyContent: 'center',\n alignItems: 'center',\n },\n});\n\nexport default OrientationVideoCaptureFinal; "]}
|
|
1
|
+
{"version":3,"file":"OrientationVideoCaptureFinal.js","sourceRoot":"","sources":["../../../src/components/KYCElements/OrientationVideoCaptureFinal.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useState, useRef, useEffect } from 'react';\nimport {\n View,\n Text,\n StyleSheet,\n TouchableOpacity,\n Alert,\n ActivityIndicator,\n Animated,\n} from 'react-native';\nimport Svg, { Rect, Path, Mask, Defs } from 'react-native-svg';\nimport { EnhancedCameraView } from '../EnhancedCameraView';\nimport { OrientationVideoConfig, OrientationVideoState } from '../../types/KYC.types';\nimport SideSelfieIcon from '../Svgs/sideSelfieIcon';\nimport kycService from '../../modules/api/KYCService';\n\ninterface OrientationVideoCaptureFinalProps {\n config?: Partial<OrientationVideoConfig>;\n onComplete: (result: any) => void;\n onError: (error: string) => void;\n kycService: typeof kycService;\n}\n\nconst defaultConfig: OrientationVideoConfig = {\n duration: 10, // 10 seconds\n orientations: ['center', 'left', 'right'],\n instructions: {\n center: 'Look straight ahead at the camera',\n left: 'Turn your head to the left',\n right: 'Turn your head to the right',\n },\n showPreview: true,\n allowRetake: true,\n maxRetakes: 3,\n quality: 0.8,\n aspectRatio: 16 / 9,\n};\n\nexport const OrientationVideoCaptureFinal: React.FC<OrientationVideoCaptureFinalProps> = ({\n config = {},\n onComplete,\n onError,\n kycService,\n}) => {\n const finalConfig = { ...defaultConfig, ...config };\n \n const [state, setState] = useState<OrientationVideoState>({\n isRecording: false,\n currentOrientation: null,\n recordedVideo: null,\n processingResult: null,\n isProcessing: false,\n error: null,\n retakeCount: 0,\n });\n\n const [showCamera, setShowCamera] = useState(true);\n const instructionAnimation = useRef(new Animated.Value(0)).current;\n const recordingTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n startInstructionAnimation();\n }, []);\n\n useEffect(() => {\n return () => {\n if (recordingTimeoutRef.current) {\n clearTimeout(recordingTimeoutRef.current);\n }\n };\n }, []);\n\n const startInstructionAnimation = () => {\n Animated.loop(\n Animated.sequence([\n Animated.timing(instructionAnimation, {\n toValue: 1,\n duration: 1000,\n useNativeDriver: false,\n }),\n Animated.timing(instructionAnimation, {\n toValue: 0.8,\n duration: 1000,\n useNativeDriver: false,\n }),\n ])\n ).start();\n };\n\n const handleVideoRecordingStart = () => {\n setState(prev => ({ ...prev, isRecording: true, error: null }));\n \n // Set timeout to automatically stop recording after duration\n recordingTimeoutRef.current = setTimeout(() => {\n // The recording will be stopped automatically by the timeout\n }, finalConfig.duration * 1000);\n };\n\n const handleVideoRecordingStop = (result: { success: boolean; path?: string; error?: string }) => {\n if (recordingTimeoutRef.current) {\n clearTimeout(recordingTimeoutRef.current);\n recordingTimeoutRef.current = null;\n }\n\n if (result.success && result.path) {\n setState(prev => ({\n ...prev,\n isRecording: false,\n recordedVideo: result.path || null\n }));\n setShowCamera(false);\n // Process the video immediately\n processVideo(result.path);\n } else {\n setState(prev => ({ \n ...prev, \n isRecording: false,\n error: result.error || 'Recording failed' \n }));\n onError(result.error || 'Recording failed');\n }\n };\n\n const processVideo = async (videoUri: string) => {\n if (state.isProcessing) return;\n\n setState(prev => ({ ...prev, isProcessing: true, error: null }));\n\n try {\n const result = await kycService.processOrientationVideo(videoUri);\n \n if (result.success && result.data) {\n setState(prev => ({ \n ...prev, \n processingResult: result.data || null,\n isProcessing: false \n }));\n onComplete(result.data);\n } else {\n setState(prev => ({ \n ...prev, \n isProcessing: false,\n error: result.message || 'Processing failed' \n }));\n onError(result.message || 'Processing failed');\n }\n } catch (error) {\n console.error('Error processing video:', error);\n setState(prev => ({ \n ...prev, \n isProcessing: false,\n error: 'Failed to process video' \n }));\n onError('Failed to process video');\n }\n };\n\n const retake = () => {\n if (state.retakeCount >= finalConfig.maxRetakes) {\n Alert.alert('Max Retakes Reached', 'You have reached the maximum number of retakes.');\n return;\n }\n\n setState(prev => ({ \n ...prev, \n recordedVideo: null,\n processingResult: null,\n error: null,\n retakeCount: prev.retakeCount + 1 \n }));\n setShowCamera(true);\n };\n\n const reset = () => {\n setState({\n isRecording: false,\n currentOrientation: null,\n recordedVideo: null,\n processingResult: null,\n isProcessing: false,\n error: null,\n retakeCount: 0,\n });\n setShowCamera(true);\n };\n\n const renderInstructions = () => {\n if (!state.currentOrientation) return null;\n\n const instruction = finalConfig.instructions[state.currentOrientation];\n \n return (\n <Animated.View \n style={[\n styles.instructionContainer,\n { opacity: instructionAnimation }\n ]}\n >\n <Text style={styles.instructionText}>{instruction}</Text>\n </Animated.View>\n );\n };\n\n const renderProcessingResult = () => {\n if (!state.processingResult) return null;\n\n const { center, left, right } = state.processingResult;\n const allCaptured = center.captured && left.captured && right.captured;\n\n return (\n <View style={styles.resultContainer}>\n <Text style={styles.resultTitle}>\n {allCaptured ? '✅ All orientations captured!' : '⚠️ Some orientations missing'}\n </Text>\n \n <View style={styles.orientationResults}>\n <View style={styles.orientationResult}>\n <Text style={styles.orientationLabel}>Center</Text>\n <Text style={[styles.orientationStatus, center.captured && styles.captured]}>\n {center.captured ? '✅' : '❌'}\n </Text>\n {center.captured && (\n <Text style={styles.frameInfo}>Frame: {center.frame}</Text>\n )}\n </View>\n \n <View style={styles.orientationResult}>\n <Text style={styles.orientationLabel}>Left</Text>\n <Text style={[styles.orientationStatus, left.captured && styles.captured]}>\n {left.captured ? '✅' : '❌'}\n </Text>\n {left.captured && (\n <Text style={styles.frameInfo}>Frame: {left.frame}</Text>\n )}\n </View>\n \n <View style={styles.orientationResult}>\n <Text style={styles.orientationLabel}>Right</Text>\n <Text style={[styles.orientationStatus, right.captured && styles.captured]}>\n {right.captured ? '✅' : '❌'}\n </Text>\n {right.captured && (\n <Text style={styles.frameInfo}>Frame: {right.frame}</Text>\n )}\n </View>\n </View>\n </View>\n );\n };\n\n if (state.recordedVideo && finalConfig.showPreview) {\n return (\n <View style={styles.container}>\n <View style={styles.videoPreview}>\n <Text style={styles.previewText}>Video recorded successfully</Text>\n <Text style={styles.previewSubtext}>Path: {state.recordedVideo}</Text>\n <Text style={styles.previewSubtext}>Duration: {finalConfig.duration} seconds</Text>\n </View>\n \n {state.isProcessing && (\n <View style={styles.processingOverlay}>\n <ActivityIndicator size=\"large\" color=\"#007AFF\" />\n <Text style={styles.processingText}>Processing video...</Text>\n </View>\n )}\n \n {renderProcessingResult()}\n \n <View style={styles.buttonContainer}>\n {finalConfig.allowRetake && state.retakeCount < finalConfig.maxRetakes && (\n <TouchableOpacity style={styles.retakeButton} onPress={retake}>\n <Text style={styles.retakeButtonText}>\n Retake ({finalConfig.maxRetakes - state.retakeCount} left)\n </Text>\n </TouchableOpacity>\n )}\n \n <TouchableOpacity style={styles.resetButton} onPress={reset}>\n <Text style={styles.resetButtonText}>Start Over</Text>\n </TouchableOpacity>\n </View>\n </View>\n );\n }\n\n return (\n <View style={styles.container}>\n <EnhancedCameraView\n showCamera={showCamera}\n showSwitchCamera={false}\n cameraType=\"front\"\n enableVideo={true}\n isRecording={state.isRecording}\n onVideoRecordingStart={handleVideoRecordingStart}\n onVideoRecordingStop={handleVideoRecordingStop}\n onError={(error) => {\n setState(prev => ({ ...prev, error: error.message }));\n onError(error.message);\n }}\n overlayComponent={\n <View style={styles.overlay}>\n {renderInstructions()}\n \n {/* SideSelfieIcon overlay with mask */}\n <View style={styles.iconOverlay}>\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 dans le bbox) */}\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(195, 240) scale(0.8) 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 </Svg>\n \n {/* SideSelfieIcon positioned in the bbox */}\n <View style={[styles.iconContainer, {\n left: 20,\n top: 140,\n width: 350,\n height: 200,\n }]}>\n <SideSelfieIcon />\n </View>\n </View>\n \n {state.error && (\n <View style={styles.errorContainer}>\n <Text style={styles.errorText}>{state.error}</Text>\n </View>\n )}\n \n {state.isRecording && (\n <View style={styles.recordingIndicator}>\n <Text style={styles.recordingText}>Recording... {finalConfig.duration}s</Text>\n </View>\n )}\n </View>\n }\n />\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n backgroundColor: '#000',\n },\n overlay: {\n flex: 1,\n backgroundColor: 'rgba(0, 0, 0, 0.2)',\n justifyContent: 'space-between',\n padding: 20,\n },\n instructionContainer: {\n backgroundColor: 'rgba(0, 0, 0, 0.7)',\n padding: 15,\n borderRadius: 10,\n marginTop: 50,\n alignSelf: 'center',\n },\n instructionText: {\n color: '#fff',\n fontSize: 18,\n fontWeight: 'bold',\n textAlign: 'center',\n },\n recordingIndicator: {\n backgroundColor: 'rgba(255, 59, 48, 0.8)',\n padding: 10,\n borderRadius: 20,\n alignSelf: 'center',\n marginTop: 20,\n },\n recordingText: {\n color: '#fff',\n fontSize: 16,\n fontWeight: 'bold',\n },\n videoPreview: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor: '#f0f0f0',\n },\n previewText: {\n fontSize: 18,\n fontWeight: 'bold',\n color: '#333',\n marginBottom: 10,\n },\n previewSubtext: {\n fontSize: 14,\n color: '#666',\n textAlign: 'center',\n paddingHorizontal: 20,\n marginBottom: 5,\n },\n processingOverlay: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.7)',\n justifyContent: 'center',\n alignItems: 'center',\n },\n processingText: {\n color: '#fff',\n fontSize: 16,\n marginTop: 10,\n },\n resultContainer: {\n backgroundColor: 'rgba(255, 255, 255, 0.9)',\n padding: 20,\n borderRadius: 10,\n margin: 20,\n },\n resultTitle: {\n fontSize: 18,\n fontWeight: 'bold',\n textAlign: 'center',\n marginBottom: 15,\n },\n orientationResults: {\n flexDirection: 'row',\n justifyContent: 'space-around',\n },\n orientationResult: {\n alignItems: 'center',\n },\n orientationLabel: {\n fontSize: 14,\n fontWeight: '600',\n marginBottom: 5,\n },\n orientationStatus: {\n fontSize: 20,\n marginBottom: 5,\n },\n captured: {\n color: '#34C759',\n },\n frameInfo: {\n fontSize: 12,\n color: '#666',\n },\n buttonContainer: {\n flexDirection: 'row',\n justifyContent: 'space-around',\n padding: 20,\n },\n retakeButton: {\n backgroundColor: '#FF9500',\n paddingHorizontal: 20,\n paddingVertical: 10,\n borderRadius: 20,\n },\n retakeButtonText: {\n color: '#fff',\n fontSize: 16,\n fontWeight: '600',\n },\n resetButton: {\n backgroundColor: '#007AFF',\n paddingHorizontal: 20,\n paddingVertical: 10,\n borderRadius: 20,\n },\n resetButtonText: {\n color: '#fff',\n fontSize: 16,\n fontWeight: '600',\n },\n errorContainer: {\n backgroundColor: 'rgba(255, 59, 48, 0.8)',\n padding: 15,\n borderRadius: 10,\n margin: 20,\n },\n errorText: {\n color: '#fff',\n fontSize: 16,\n textAlign: 'center',\n },\n iconOverlay: {\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: [{ translateX: -120 }, { translateY: -142.5 }], // Half of width and height\n opacity: 1,\n zIndex: 10,\n backgroundColor: 'rgba(0, 0, 0, 0.1)',\n borderRadius: 10,\n padding: 10,\n },\n iconContainer: {\n position: 'absolute',\n justifyContent: 'center',\n alignItems: 'center',\n },\n});\n\nexport default OrientationVideoCaptureFinal; "]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { TemplateComponent } from '../../types/KYC.types';
|
|
3
|
+
interface ReviewSubmitTemplateProps {
|
|
4
|
+
component: TemplateComponent;
|
|
5
|
+
value: unknown;
|
|
6
|
+
onValueChange: (data: unknown) => void;
|
|
7
|
+
error?: string;
|
|
8
|
+
language?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare const ReviewSubmitTemplate: React.FC<ReviewSubmitTemplateProps>;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=ReviewSubmitTemplate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReviewSubmitTemplate.d.ts","sourceRoot":"","sources":["../../../src/components/KYCElements/ReviewSubmitTemplate.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAI1D,UAAU,yBAAyB;IACjC,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,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CAsGpE,CAAC"}
|