@sanctum-key/react-native-sdk 1.0.10 → 1.0.12
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/README.md +3 -3
- package/android/build/.transforms/{c9d62bb333688ab562f51958998d5a48 → 9e34a0354bf8964d60c4c1392f5aa5b2}/transformed/classes/classes_dex/classes.dex +0 -0
- package/android/build/generated/source/buildConfig/debug/kyc/{SanctumKey → sanctumkey}/com/BuildConfig.java +2 -2
- package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml +1 -1
- package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json +1 -1
- package/android/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar +0 -0
- package/android/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar +0 -0
- package/android/build/intermediates/compiled_local_resources/debug/compileDebugLibraryResources/out/xml_file_paths.xml.flat +0 -0
- package/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +2 -2
- package/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml +1 -1
- package/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +1 -1
- package/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +1 -1
- package/android/build/intermediates/incremental/packageDebugAssets/merger.xml +1 -1
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/kyc/{SanctumKey → sanctumkey}/com/BuildConfig.class +0 -0
- package/android/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt +42 -42
- package/android/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml +1 -1
- package/android/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar +0 -0
- package/android/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt +1 -1
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/last-build.bin +0 -0
- package/android/build/kotlin/compileDebugKotlin/local-state/build-history.bin +0 -0
- package/android/build/outputs/logs/manifest-merger-debug-report.txt +52 -52
- package/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
- package/android/build/tmp/kotlin-classes/debug/kyc/{SanctumKey → sanctumkey}/com/SanctumKeySdkModule$definition$1$5$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kyc/{SanctumKey → sanctumkey}/com/SanctumKeySdkModule$definition$1$5$2.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kyc/{SanctumKey → sanctumkey}/com/SanctumKeySdkModule$definition$lambda$5$$inlined$AsyncFunction$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kyc/{SanctumKey → sanctumkey}/com/SanctumKeySdkModule$definition$lambda$5$$inlined$AsyncFunction$2.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kyc/{SanctumKey → sanctumkey}/com/SanctumKeySdkModule$definition$lambda$5$$inlined$AsyncFunction$3.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kyc/{SanctumKey → sanctumkey}/com/SanctumKeySdkModule$definition$lambda$5$$inlined$AsyncFunction$4.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kyc/{SanctumKey → sanctumkey}/com/SanctumKeySdkModule$definition$lambda$5$$inlined$AsyncFunction$5.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kyc/{SanctumKey → sanctumkey}/com/SanctumKeySdkModule$definition$lambda$5$$inlined$AsyncFunction$6.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kyc/{SanctumKey → sanctumkey}/com/SanctumKeySdkModule$definition$lambda$5$$inlined$AsyncFunctionWithPromise$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kyc/{SanctumKey → sanctumkey}/com/SanctumKeySdkModule$definition$lambda$5$$inlined$AsyncFunctionWithPromise$2.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kyc/{SanctumKey → sanctumkey}/com/SanctumKeySdkModule$definition$lambda$5$$inlined$AsyncFunctionWithPromise$3.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kyc/{SanctumKey → sanctumkey}/com/SanctumKeySdkModule$definition$lambda$5$$inlined$AsyncFunctionWithPromise$4.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kyc/{SanctumKey → sanctumkey}/com/SanctumKeySdkModule$definition$lambda$5$$inlined$View$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kyc/{SanctumKey → sanctumkey}/com/SanctumKeySdkModule$definition$lambda$5$lambda$4$$inlined$Prop$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kyc/{SanctumKey → sanctumkey}/com/SanctumKeySdkModule$definition$lambda$5$lambda$4$$inlined$Prop$2.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kyc/{SanctumKey → sanctumkey}/com/SanctumKeySdkModule.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/kyc/{SanctumKey → sanctumkey}/com/SanctumKeySdkView.class +0 -0
- package/android/build.gradle +2 -2
- package/android/src/main/AndroidManifest.xml +1 -1
- package/android/src/main/java/kyc/{transfergratis/com/TransfergratisSdkModule.kt → sanctumkey/com/SanctumKeySdkModule.kt} +21 -18
- package/android/src/main/java/kyc/{transfergratis/com/TransfergratisSdkView.kt → sanctumkey/com/SanctumKeySdkView.kt} +2 -2
- package/build/package.json +5 -5
- package/build/src/App.d.ts +2 -2
- package/build/src/App.d.ts.map +1 -1
- package/build/src/App.js +2 -2
- package/build/src/App.js.map +1 -1
- package/build/src/{TransfergratisSdk.types.d.ts → SanctumKeySdk.types.d.ts} +3 -3
- package/build/src/SanctumKeySdk.types.d.ts.map +1 -0
- package/build/src/SanctumKeySdk.types.js +2 -0
- package/build/src/SanctumKeySdk.types.js.map +1 -0
- package/build/src/{TransfergratisSdkModule.d.ts → SanctumKeySdkModule.d.ts} +4 -4
- package/build/src/SanctumKeySdkModule.d.ts.map +1 -0
- package/build/src/{TransfergratisSdkModule.js → SanctumKeySdkModule.js} +2 -2
- package/build/src/SanctumKeySdkModule.js.map +1 -0
- package/build/src/{TransfergratisSdkModule.web.d.ts → SanctumKeySdkModule.web.d.ts} +4 -4
- package/build/src/SanctumKeySdkModule.web.d.ts.map +1 -0
- package/build/src/{TransfergratisSdkModule.web.js → SanctumKeySdkModule.web.js} +3 -3
- package/build/src/SanctumKeySdkModule.web.js.map +1 -0
- package/build/src/SanctumKeySdkView.d.ts +4 -0
- package/build/src/SanctumKeySdkView.d.ts.map +1 -0
- package/build/src/SanctumKeySdkView.js +7 -0
- package/build/src/SanctumKeySdkView.js.map +1 -0
- package/build/src/SanctumKeySdkView.web.d.ts +4 -0
- package/build/src/SanctumKeySdkView.web.d.ts.map +1 -0
- package/build/src/{TransfergratisSdkView.web.js → SanctumKeySdkView.web.js} +2 -2
- package/build/src/SanctumKeySdkView.web.js.map +1 -0
- package/build/src/components/KYCElements/IDCardCapture.d.ts.map +1 -1
- package/build/src/components/KYCElements/IDCardCapture.js +132 -175
- package/build/src/components/KYCElements/IDCardCapture.js.map +1 -1
- package/build/src/components/NativeCameraView.js +1 -1
- package/build/src/components/NativeCameraView.js.map +1 -1
- package/build/src/components/TemplateKYCExample.d.ts +4 -3
- package/build/src/components/TemplateKYCExample.d.ts.map +1 -1
- package/build/src/components/TemplateKYCExample.js +2 -2
- package/build/src/components/TemplateKYCExample.js.map +1 -1
- package/build/src/config/allowedDomains.js +6 -6
- package/build/src/config/allowedDomains.js.map +1 -1
- package/build/src/index.d.ts +3 -3
- package/build/src/index.d.ts.map +1 -1
- package/build/src/index.js +3 -3
- package/build/src/index.js.map +1 -1
- package/build/src/modules/api/KYCService.d.ts.map +1 -1
- package/build/src/modules/api/KYCService.js +9 -4
- package/build/src/modules/api/KYCService.js.map +1 -1
- package/build/src/modules/camera/NativeCameraModule.js +17 -17
- package/build/src/modules/camera/NativeCameraModule.js.map +1 -1
- package/build/src/web/WebKYCEntry.d.ts +2 -2
- package/build/src/web/WebKYCEntry.d.ts.map +1 -1
- package/build/src/web/WebKYCEntry.js +3 -2
- package/build/src/web/WebKYCEntry.js.map +1 -1
- package/expo-module.config.json +3 -3
- package/ios/TransfergratisSdk.podspec +2 -2
- package/ios/TransfergratisSdkModule.swift +12 -12
- package/package.json +5 -5
- package/src/App.tsx +2 -2
- package/src/{TransfergratisSdk.types.ts → SanctumKeySdk.types.ts} +2 -2
- package/src/{TransfergratisSdkModule.ts → SanctumKeySdkModule.ts} +3 -3
- package/src/{TransfergratisSdkModule.web.ts → SanctumKeySdkModule.web.ts} +3 -3
- package/src/SanctumKeySdkView.tsx +11 -0
- package/src/{TransfergratisSdkView.web.tsx → SanctumKeySdkView.web.tsx} +2 -2
- package/src/components/KYCElements/IDCardCapture.tsx +227 -286
- package/src/components/NativeCameraView.tsx +1 -1
- package/src/components/TemplateKYCExample.tsx +23 -4
- package/src/config/allowedDomains.ts +6 -6
- package/src/i18n/README.md +1 -1
- package/src/index.ts +3 -3
- package/src/modules/api/KYCService.ts +10 -4
- package/src/modules/camera/NativeCameraModule.ts +17 -17
- package/src/web/WebKYCEntry.tsx +3 -3
- package/android/build/.transforms/ab90740579f5bd05b27b4343ada2d1c9/transformed/classes/classes_dex/classes.dex +0 -0
- package/android/build/.transforms/c9d62bb333688ab562f51958998d5a48/results.bin +0 -1
- package/android/build/tmp/compileDebugJavaWithJavac/compileTransaction/stash-dir/BuildConfig.class.uniqueId0 +0 -0
- package/build/src/TransfergratisSdk.types.d.ts.map +0 -1
- package/build/src/TransfergratisSdk.types.js +0 -2
- package/build/src/TransfergratisSdk.types.js.map +0 -1
- package/build/src/TransfergratisSdkModule.d.ts.map +0 -1
- package/build/src/TransfergratisSdkModule.js.map +0 -1
- package/build/src/TransfergratisSdkModule.web.d.ts.map +0 -1
- package/build/src/TransfergratisSdkModule.web.js.map +0 -1
- package/build/src/TransfergratisSdkView.d.ts +0 -4
- package/build/src/TransfergratisSdkView.d.ts.map +0 -1
- package/build/src/TransfergratisSdkView.js +0 -7
- package/build/src/TransfergratisSdkView.js.map +0 -1
- package/build/src/TransfergratisSdkView.web.d.ts +0 -4
- package/build/src/TransfergratisSdkView.web.d.ts.map +0 -1
- package/build/src/TransfergratisSdkView.web.js.map +0 -1
- package/src/TransfergratisSdkView.tsx +0 -11
- /package/android/build/.transforms/{ab90740579f5bd05b27b4343ada2d1c9 → 9e34a0354bf8964d60c4c1392f5aa5b2}/results.bin +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IDCardCapture.js","sourceRoot":"","sources":["../../../../src/components/KYCElements/IDCardCapture.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useEffect, useMemo, useState } from 'react';\nimport { View, Text, StyleSheet, Image, ScrollView, Platform, ActivityIndicator } from 'react-native';\nimport { showAlert } from '../../utils/platformAlert';\nimport { EnhancedCameraView } from '../EnhancedCameraView';\nimport { TemplateComponent, LocalizedText, GovernmentDocumentType, ISilentCaptureResult, IBbox, GovernmentDocumentTypeShorted, GovernmentDocumentTypeBackend } from '../../types/KYC.types';\nimport IdCardOverlay from '../OverLay/IdCard';\nimport { useTemplateKYCFlowContext } from '../../hooks/useTemplateKYCFlow';\nimport { useI18n } from '../../hooks/useI18n';\nimport { Button } from '../ui/Button';\nimport { removeDuplicates } from '../../utils/remove-duplicate';\nimport { backVerification, checkTemplateType, frontVerification } from '../../modules/api/CardAuthentification';\nimport { getDocumentTypeInfo } from '../../utils/get-document-type-info';\nimport pathToBase64 from '../../utils/pathToBase64';\nimport { cropByObb, cropImageWithBBoxWithTolerance, getObbConfidence, OBB_CONFIDENCE_THRESHOLD } from '../../utils/cropByObb';\nimport REGION_MAPPING from '../../config/region_mapping.json';\n\n// 🌍 Map ISO codes to exact JSON root keys to ensure perfect dictionary lookups\nconst ISO_TO_COUNTRY_NAME: Record<string, string> = {\n 'KE': 'Kenya', 'CM': 'Cameroon', 'NG': 'Nigeria', 'CA': 'Canada',\n 'FR': 'France', 'GH': 'Ghana', 'ZA': 'South Africa', 'GB': 'Britain',\n 'CI': 'Ivory Coast', 'SN': 'Senegal', 'TG': 'Togo', 'ML': 'Mali'\n};\n\ninterface IIDCardPayload { dir: string; file: string; mrz: string; templatePath?: string; }\ninterface IDCardCaptureProps {\n component: TemplateComponent;\n value?: Record<string, IIDCardPayload>;\n onValueChange: (value: Record<string, IIDCardPayload | string>) => void;\n error?: string;\n language?: string;\n currentSide?: string;\n}\n\nexport const IDCardCapture: React.FC<IDCardCaptureProps> = ({ component, value = {}, onValueChange, error, language = 'en' }) => {\n const { t, locale } = useI18n();\n const [showCamera, setShowCamera] = useState(false);\n const [capturedImages, setCapturedImages] = useState<Record<string, IIDCardPayload>>(value || {});\n const [currentSide, setCurrentSide] = useState<'front' | 'back'>('front');\n const [bboxBySide, setBboxBySide] = useState<Record<string, IBbox>>({});\n const [silentCaptureResult, setSilentCaptureResult] = useState<ISilentCaptureResult>({ success: false, isAnalyzing: false });\n const [isProcessingCapture, setIsProcessingCapture] = useState(false);\n const [processingImagePath, setProcessingImagePath] = useState<string | null>(null);\n\n const documentTypeMapping: Record<string, GovernmentDocumentType> = {\n 'nationalId': 'national_id', 'passport': 'passport', 'driversLicense': 'drivers_licence',\n 'residencePermit': 'permanent_residence', 'healthInsuranceCard': 'health_insurance_card',\n };\n\n const { actions, state, env } = useTemplateKYCFlowContext();\n\n const getLocalizedText = (text: LocalizedText | Record<string, LocalizedText>): string => {\n if (text && typeof text[currentSide] === 'object' && text[currentSide][locale]) return text[currentSide][locale] || '';\n return \"\";\n };\n\n const countrySelectionData = useMemo(() => {\n const countrySelectionComponent = state.template.components.find(c => c.type === 'country_selection');\n return countrySelectionComponent ? state.componentData[countrySelectionComponent.id] : null;\n }, [state.template.components, state.componentData]);\n\n const selectedDocumentType = useMemo<{ type: GovernmentDocumentType; region: string } | null>(() => {\n if (!countrySelectionData?.documentType) return null;\n const backendDocType = countrySelectionData.documentType;\n const mappedType = documentTypeMapping[backendDocType] || backendDocType as GovernmentDocumentType;\n return { type: mappedType, region: countrySelectionData.region || 'root' };\n }, [countrySelectionData, documentTypeMapping]);\n\n const countryData = useMemo(() => countrySelectionData, [countrySelectionData]);\n\n useEffect(() => {\n if (value && Object.keys(value).length > 0) {\n if (JSON.stringify(value) !== JSON.stringify(capturedImages)) {\n const updatedImages = value as Record<string, IIDCardPayload>;\n setCapturedImages(updatedImages);\n \n const currentImageData = updatedImages[currentSide];\n if (currentImageData?.dir) {\n setSilentCaptureResult(prev => ({\n ...prev, \n path: currentImageData.dir, \n success: true, \n isAnalyzing: false, \n mrz: currentImageData.mrz || '', \n templatePath: currentImageData.templatePath || '',\n }));\n }\n }\n }\n }, [value, currentSide]);\n\n const cameraConfig = useMemo(() => {\n const instructions = selectedDocumentType\n ? (locale === 'en' ? getDocumentTypeInfo(selectedDocumentType.type).instructions.en : getDocumentTypeInfo(selectedDocumentType.type).instructions.fr)\n : getLocalizedText(component.instructions as Record<string, LocalizedText>);\n return {\n cameraType: 'back' as const, flashMode: 'auto' as const,\n overlay: { guideText: instructions, bbox: { xMin: 15, yMin: 20, xMax: 85, yMax: 70, borderColor: '#2DBD60', borderWidth: 3, cornerRadius: 8 } }\n };\n }, [selectedDocumentType, locale, component.instructions]);\n\n const retakePicture = (sideToRetake: 'front' | 'back') => {\n setIsProcessingCapture(false);\n setProcessingImagePath(null);\n setSilentCaptureResult({ path: '', success: false, isAnalyzing: false, error: '', templatePath: '', mrz: '', bbox: undefined });\n setShowCamera(true);\n actions.showCustomStepper(false);\n setCapturedImages((prev) => { const newState = { ...prev }; delete newState[sideToRetake]; return newState; });\n if (value) { const newValue = { ...value }; delete newValue[sideToRetake]; onValueChange(newValue); }\n };\n\n const getCurrentSideVerification = (currentSide: string, countryKey: string) => {\n const rawDocType = countrySelectionData?.documentType; \n\n if (!rawDocType || !countryKey) {\n return { authMethod: [], mrzTypes: [], regionMapping: null, key: 'root' };\n }\n\n const rawCountryName = ISO_TO_COUNTRY_NAME[countryData?.code || ''] || countryData?.code || countryKey;\n const baseMapping = (REGION_MAPPING as any).regionMapping || REGION_MAPPING;\n \n let countryMapping = baseMapping[rawCountryName];\n \n // Fallback search in case of case mismatches\n if (!countryMapping) {\n const foundKey = Object.keys(baseMapping).find(k => k.toLowerCase() === rawCountryName.toLowerCase() || k.toLowerCase() === countryKey.toLowerCase());\n if (foundKey) countryMapping = baseMapping[foundKey];\n }\n\n if (!countryMapping) {\n return { authMethod: [], mrzTypes: [], regionMapping: null, key: 'root' };\n }\n\n const regionMapping = countryMapping[rawDocType];\n if (!regionMapping) {\n return { authMethod: [], mrzTypes: [], regionMapping: null, key: 'root' };\n }\n\n const authMethod: string[] = []; \n const mrzTypes: string[] = [];\n const key = countrySelectionData.region?.trim()?.length > 0 ? countrySelectionData.region.trim() : 'root';\n\n if (regionMapping?.[key] && Array.isArray(regionMapping[key])) {\n regionMapping[key].forEach((item: any) => {\n if (item[currentSide]) {\n authMethod.push(item[currentSide]);\n if (item?.mrz_type) mrzTypes.push(item?.mrz_type);\n }\n });\n }\n\n return { authMethod: removeDuplicates(authMethod), mrzTypes: removeDuplicates(mrzTypes), regionMapping, key };\n }\n\n const getCorrespondingMrzType = (templatePath: string, mapping: any, selectedDocumentType: string = \"root\") => {\n if (!mapping || !mapping[selectedDocumentType]) return null;\n const fileName = templatePath.split(\"/\").pop()?.replace(\".jpg\", \"\").replace(\".png\", \"\");\n if (!fileName) return null;\n const pyName = `${fileName}.py`;\n const found = mapping[selectedDocumentType].find((item: any) => item.py_file === pyName);\n return found?.mrz_type || null;\n }\n\n const getCorrespondingAuthMethod = (templatePath: string, mapping: any, selectedDocumentType: string = \"root\", side: 'front' | 'back') => {\n if (!mapping || !mapping[selectedDocumentType]) return null;\n const fileName = templatePath.split(\"/\").pop()?.replace(\".jpg\", \"\").replace(\".png\", \"\");\n if (!fileName) return null;\n const pyName = `${fileName}.py`;\n const found = mapping[selectedDocumentType].find((item: any) => item.py_file === pyName);\n return found?.[side] || null;\n }\n\n const autoCapture = async (capturePath: string, verified: ISilentCaptureResult) => {\n if (isProcessingCapture) return;\n setIsProcessingCapture(true);\n setProcessingImagePath(capturePath);\n try {\n let imagePathForUpload = capturePath;\n if (verified.bbox) {\n try {\n imagePathForUpload = await cropImageWithBBoxWithTolerance(capturePath, verified.bbox, 0.15);\n } catch {\n imagePathForUpload = capturePath;\n }\n }\n const base64 = await pathToBase64(imagePathForUpload);\n const newImages = {\n ...capturedImages,\n [currentSide]: { dir: imagePathForUpload, file: base64, mrz: verified.mrz || \"\", templatePath: verified.templatePath },\n };\n setCapturedImages(newImages);\n if (verified.country && verified.documentType) {\n onValueChange({\n ...newImages,\n country: verified.country,\n documentType: GovernmentDocumentTypeBackend[verified.documentType as keyof typeof GovernmentDocumentTypeBackend] || '',\n });\n }\n setTimeout(() => {\n setShowCamera(false);\n actions.showCustomStepper(true);\n setSilentCaptureResult(prev => ({ ...prev, isAnalyzing: false }));\n setIsProcessingCapture(false);\n setProcessingImagePath(null);\n }, 600);\n } catch (e: any) {\n showAlert('Error', e?.message || 'Impossible de capturer la photo');\n setSilentCaptureResult(prev => ({ ...prev, isAnalyzing: false, success: false }));\n setIsProcessingCapture(false);\n setProcessingImagePath(null);\n }\n };\n\n const handleSilentCapture = async (result: { success: boolean; path?: string; error?: string }) => {\n if (silentCaptureResult.isAnalyzing || isProcessingCapture) return;\n if (result.success && result.path) {\n setSilentCaptureResult((prev) => ({ ...prev, isAnalyzing: true, success: false, error: '' }));\n \n // 🚨 Force a template fetch if we haven't successfully saved the current side yet\n let templatePath = capturedImages[currentSide]?.templatePath || '';\n let templateBbox: IBbox | undefined;\n let templateResponse: any;\n \n if (!selectedDocumentType) {\n setSilentCaptureResult((prev) => ({ ...prev, isAnalyzing: false, success: false, error: 'Document type not selected' })); return;\n }\n\n try {\n if (!templatePath) {\n const templateType = await checkTemplateType({ path: result.path || '', docType: selectedDocumentType?.type as GovernmentDocumentType, docRegion: countryData?.code || \"\", postfix: currentSide }, env);\n templateResponse = templateType;\n if (templateType.template_path) templatePath = templateType.template_path;\n if (templateType.card_obb) {\n const obbConfidence = getObbConfidence((templateType as any).card_obb);\n if (obbConfidence !== null && obbConfidence < OBB_CONFIDENCE_THRESHOLD) {\n setSilentCaptureResult((prev) => ({ ...prev, isAnalyzing: false, success: false, error: t('kyc.idCardCapture.cardNotFullyInFrame') }));\n return;\n }\n try {\n const crop = await cropByObb(result.path, (templateType as any).card_obb);\n templateBbox = crop.bbox;\n } catch { }\n }\n }\n\n const extractedCountryKey = templatePath ? templatePath.split('/')[0] : (ISO_TO_COUNTRY_NAME[countryData?.code || ''] || 'root');\n const regionMappings = getCurrentSideVerification(currentSide, extractedCountryKey);\n\n let verificationRes: any;\n if (currentSide === 'front') {\n const matchedAuthMethod = getCorrespondingAuthMethod(templatePath, regionMappings.regionMapping, regionMappings.key || '', 'front');\n const mrzType = getCorrespondingMrzType(templatePath, regionMappings.regionMapping, regionMappings.key || '') || 'TD1';\n verificationRes = await frontVerification({ path: result.path, regionMapping: { authMethod: matchedAuthMethod ? [matchedAuthMethod] : regionMappings.authMethod, mrzTypes: regionMappings.mrzTypes }, selectedDocumentType: GovernmentDocumentTypeShorted[selectedDocumentType?.type as keyof typeof GovernmentDocumentTypeShorted] || '', code: countryData?.code || '', currentSide, templatePath, mrzType }, env);\n } else {\n let matchedBackAuthMethod = getCorrespondingAuthMethod(templatePath, regionMappings.regionMapping, regionMappings.key || '', 'back');\n \n if (!matchedBackAuthMethod && currentSide === 'back') {\n matchedBackAuthMethod = 'MRZ'; \n }\n\n const backMrzType = getCorrespondingMrzType(templatePath, regionMappings.regionMapping, regionMappings.key || '') || 'TD1';\n \n verificationRes = await backVerification({ \n path: result.path, \n regionMapping: { \n authMethod: matchedBackAuthMethod ? [matchedBackAuthMethod] : regionMappings.authMethod, \n mrzTypes: regionMappings.mrzTypes \n }, \n selectedDocumentType: GovernmentDocumentTypeShorted[selectedDocumentType.type as keyof typeof GovernmentDocumentTypeShorted] || '', \n code: countryData?.code || '', \n currentSide, \n templatePath, \n mrzType: backMrzType, \n templateResponse \n }, env);\n }\n \n const bbox = verificationRes?.bbox || templateBbox;\n const mrz = verificationRes?.mrz ? JSON.stringify(verificationRes.mrz) : \"\";\n const verifiedResult: ISilentCaptureResult = { path: result.path, templatePath, bbox, success: true, mrz, isAnalyzing: false, country: countryData?.code, documentType: selectedDocumentType.type };\n \n setSilentCaptureResult(verifiedResult);\n if (bbox) setBboxBySide(prev => ({ ...prev, [currentSide]: bbox }));\n await autoCapture(result.path, verifiedResult);\n \n } catch (error: any) {\n const isCardNotFullyInFrame = error?.message === 'CARD_NOT_FULLY_IN_FRAME' || error?.message?.includes('entirement');\n const errorMessage = isCardNotFullyInFrame ? t('kyc.idCardCapture.cardNotFullyInFrame') : (error?.message || 'Erreur de détection');\n setSilentCaptureResult(prev => ({ ...prev, isAnalyzing: false, success: false, error: errorMessage }));\n }\n }\n };\n\n const handleError = (event: { message: string }) => {\n showAlert('Erreur', event.message); setShowCamera(false); setIsProcessingCapture(false);\n };\n\n useEffect(() => { actions.showCustomStepper(!showCamera); }, [showCamera]);\n\n if (!countrySelectionData || !selectedDocumentType) {\n return (\n <View style={styles.root}>\n <View style={styles.previewContainer}>\n <Text style={styles.title}>{getLocalizedText(component.labels)}</Text>\n <Text style={styles.description}>\n {state.currentLanguage === \"en\" ? \"Please complete the country and document selection first.\" : \"Veuillez d'abord compléter la sélection du pays et du document.\"}\n </Text>\n </View>\n </View>\n );\n }\n\n // --- CAMERA RENDER ---\n if (showCamera) {\n const isBusy = isProcessingCapture;\n return (\n <View style={styles.root}>\n <View style={styles.cameraWrapper}>\n \n {/* Web/Desktop Clean Header */}\n <View style={styles.headerContainer}>\n <Text style={styles.headerTitle}>\n {selectedDocumentType ? (locale === 'en' ? getDocumentTypeInfo(selectedDocumentType.type).name.en : getDocumentTypeInfo(selectedDocumentType.type).name.fr) : ''}\n </Text>\n <View style={styles.stepBadge}>\n <Text style={styles.stepText}>\n {t('kyc.idCardCapture.captureTitle', { side: currentSide === 'front' ? locale === 'en' ? 'Front' : 'Recto' : locale === 'en' ? 'Back' : 'Verso' })}\n </Text>\n </View>\n </View>\n\n <View style={styles.cameraFeedContainer}>\n <EnhancedCameraView\n key={currentSide}\n showCamera={true}\n isProcessing={isBusy}\n cameraType={cameraConfig.cameraType}\n style={styles.camera}\n onError={handleError}\n onSilentCapture={handleSilentCapture}\n silentCaptureResult={silentCaptureResult}\n overlayComponent={\n <>\n {!isBusy && silentCaptureResult.isAnalyzing && (\n <View style={styles.topAnalyzingPillContainer}>\n <View style={styles.topAnalyzingPill}>\n <ActivityIndicator size=\"small\" color=\"white\" />\n <Text style={styles.analyzingPillText}>\n {state.currentLanguage === 'en' ? 'Scanning...' : 'Analyse...'}\n </Text>\n </View>\n </View>\n )}\n {isBusy && (\n <View style={StyleSheet.absoluteFillObject}>\n {processingImagePath && (\n <Image\n source={{ uri: processingImagePath.startsWith('file://') ? processingImagePath : `file://${processingImagePath}` }}\n style={StyleSheet.absoluteFillObject}\n resizeMode=\"cover\"\n />\n )}\n <View style={styles.processingOverlay}>\n <ActivityIndicator size=\"large\" color=\"#2DBD60\" />\n <Text style={styles.processingText}>\n {state.currentLanguage === 'en' ? 'Perfect!\\nProcessing Document...' : 'Parfait!\\nTraitement du document...'}\n </Text>\n </View>\n </View>\n )}\n <IdCardOverlay\n xMin={cameraConfig.overlay.bbox.xMin} yMin={cameraConfig.overlay.bbox.yMin} xMax={cameraConfig.overlay.bbox.xMax} yMax={cameraConfig.overlay.bbox.yMax}\n instructions={cameraConfig.overlay.guideText}\n cornerOpacity={cameraConfig.overlay.bbox.cornerRadius || 0 as number}\n isSuccess={silentCaptureResult.success}\n language={state.currentLanguage}\n stepperProps={{\n back: () => {\n if (currentSide === 'back') {\n setCurrentSide('front');\n setShowCamera(false);\n setIsProcessingCapture(false);\n setProcessingImagePath(null);\n if (capturedImages['front']?.dir) {\n const frontImage = capturedImages['front'];\n setSilentCaptureResult((prev) => ({ ...prev, path: frontImage.dir, success: true, isAnalyzing: false, error: '', mrz: frontImage.mrz || '', templatePath: frontImage.templatePath || '', bbox: bboxBySide['front'] }));\n } else { setSilentCaptureResult((prev) => ({ ...prev, path: '', success: false, isAnalyzing: false, error: '', templatePath: '' })); }\n } else { actions.previousComponent(); }\n },\n selectedDocumentType: selectedDocumentType ? (locale === 'en' ? getDocumentTypeInfo(selectedDocumentType.type).name.en : getDocumentTypeInfo(selectedDocumentType.type).name.fr) : '',\n step: state.currentComponentIndex + 1, totalSteps: state.template.components.length, side: currentSide,\n }}\n />\n </>\n }\n />\n {/* Elegant Floating Error Banner below the cutout */}\n {silentCaptureResult.error && !isBusy ? (\n <View style={styles.floatingErrorBanner}>\n <Text style={styles.floatingErrorText}>⚠️ {silentCaptureResult.error}</Text>\n </View>\n ) : null}\n </View>\n </View>\n </View>\n );\n }\n\n return (\n <View style={styles.root}>\n <View style={styles.previewContainer}>\n <ScrollView style={styles.previewItemContainer} showsVerticalScrollIndicator={false}>\n <View key={currentSide} style={styles.sideContainer}>\n <Text style={styles.sideTitle}>\n {t('kyc.idCardCapture.captureTitle', { side: currentSide === 'front' ? locale === 'en' ? 'Front' : 'Recto' : locale === 'en' ? 'Back' : 'Verso' })}\n </Text>\n <Text style={{ fontSize: 14, color: '#666', textAlign: 'center', marginBottom: 16, lineHeight: 22 }}>\n {getLocalizedText(component.instructions)}\n </Text>\n <View style={{ alignItems: 'center', justifyContent: 'center', flexDirection: \"column\", gap: 16 }}>\n {silentCaptureResult?.error === 'TOO_FAR_AWAY' && (\n <View style={styles.warningBanner}>\n <Text style={styles.warningText}>\n {state.currentLanguage === \"en\" ? \"Move the document closer to the camera and place it on a flat surface.\" : \"Veuillez rapprocher le document de la caméra et le poser à plat.\"}\n </Text>\n </View>\n )}\n <View style={styles.imagePreviewWrapper}>\n {capturedImages[currentSide]?.dir ? (\n <Image source={{ uri: capturedImages[currentSide].dir }} style={styles.previewImage} />\n ) : silentCaptureResult.path ? (\n <Image source={{ uri: silentCaptureResult.path }} style={styles.previewImage} />\n ) : null}\n </View>\n {!capturedImages[currentSide]?.dir && (\n <Button\n title={state.currentLanguage === \"en\" ? \"Start Scanning\" : \"Commencer la numérisation\"}\n onPress={() => { setShowCamera(true); actions.showCustomStepper(false); }}\n variant=\"primary\" size=\"large\" fullWidth\n />\n )}\n {capturedImages[currentSide]?.dir && (\n <>\n <Button title={t('kyc.idCardCapture.retakeButton')} onPress={() => retakePicture(currentSide)} variant=\"outline\" size=\"medium\" fullWidth />\n <Button title={t('common.next')} onPress={() => {\n if (!selectedDocumentType) { showAlert('Error', 'Document type not selected'); return; }\n if (currentSide === 'back' || selectedDocumentType.type === 'passport') {\n actions.nextComponent();\n } else {\n setShowCamera(true);\n setCurrentSide('back');\n setSilentCaptureResult({ success: false, isAnalyzing: false, path: '', error: '', templatePath: undefined });\n setIsProcessingCapture(false);\n setProcessingImagePath(null);\n }\n }} variant=\"primary\" size=\"large\" fullWidth />\n </>\n )}\n </View>\n </View>\n </ScrollView>\n </View>\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n root: { \n flex: 1, \n width: '100%', \n backgroundColor: 'transparent', \n alignSelf: 'center', \n ...(Platform.OS === 'web' \n ? ({ \n minHeight: '85vh', \n justifyContent: 'center', \n alignItems: 'center',\n // Note: backdropFilter is valid in React Native Web but TS might complain, cast safely\n backdropFilter: 'blur(8px)' \n } as any) \n : {}) \n },\n cameraWrapper: {\n width: '100%',\n backgroundColor: '#FFFFFF',\n overflow: 'hidden',\n ...(Platform.OS === 'web' \n ? ({\n maxWidth: 500, \n height: 700, \n maxHeight: '90vh', // TypeScript will now ignore this thanks to the cast below\n borderRadius: 24, \n shadowColor: '#000',\n shadowOffset: { width: 0, height: 20 },\n shadowOpacity: 0.25,\n shadowRadius: 35,\n elevation: 24,\n } as any) // 🚨 CAST TO ANY\n : {\n flex: 1,\n })\n },\n headerContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingHorizontal: 24,\n paddingVertical: 18,\n backgroundColor: '#FFFFFF',\n borderBottomWidth: 1,\n borderBottomColor: '#F1F5F9', \n zIndex: 10,\n // Mobile hidden, Web visible to replace floating text\n ...(Platform.OS !== 'web' ? { display: 'none' } : {}) \n },\n headerTitle: {\n fontSize: 18,\n fontWeight: '700',\n color: '#0F172A',\n },\n stepBadge: {\n backgroundColor: '#F1F5F9',\n paddingHorizontal: 12,\n paddingVertical: 6,\n borderRadius: 20,\n },\n stepText: {\n fontSize: 13,\n fontWeight: '600',\n color: '#64748B',\n },\n cameraFeedContainer: {\n flex: 1,\n position: 'relative',\n backgroundColor: '#000', \n },\n camera: {\n flex: 1,\n },\n previewContainer: { \n width: '100%', \n backgroundColor: 'white', \n borderRadius: 12, \n paddingVertical: 24, \n paddingHorizontal: 20,\n shadowColor: '#000', \n shadowOffset: { width: 0, height: 4 }, \n shadowOpacity: 0.1, \n shadowRadius: 12, \n elevation: 8,\n ...(Platform.OS === 'web' ? { alignSelf: 'center', maxWidth: 600 } : { margin: 10, width: '95%' })\n }, \n previewItemContainer: {\n flexGrow: 1,\n }, \n title: { fontSize: 24, fontWeight: 'bold', color: '#333', marginBottom: 8, textAlign: 'center' }, \n description: { fontSize: 16, color: '#666', textAlign: 'center', marginBottom: 24, lineHeight: 22 }, \n sideContainer: { marginBottom: 24 }, \n sideTitle: { fontSize: 25, fontWeight: 'bold', color: '#000', marginBottom: 12, textAlign: 'center' }, \n imagePreviewWrapper: { \n width: '100%', height: 220, borderRadius: 12, padding: 1, overflow: 'hidden', \n shadowColor: '#000', shadowOffset: { width: 0, height: 4 }, shadowOpacity: 0.18, shadowRadius: 8, elevation: 8, backgroundColor: '#f0f0f0' \n }, \n previewImage: { width: '100%', height: '100%', borderRadius: 12, resizeMode: 'cover' }, \n floatingErrorBanner: { \n position: 'absolute', \n bottom: 30, // Pushed to the bottom for professional feel\n left: 24, \n right: 24, \n backgroundColor: '#FEF2F2', \n borderWidth: 1,\n borderColor: '#FCA5A5',\n paddingVertical: 12, \n paddingHorizontal: 16, \n borderRadius: 12, \n alignItems: 'center', \n justifyContent: 'center', \n shadowColor: '#DC2626', \n shadowOffset: { width: 0, height: 4 }, \n shadowOpacity: 0.1, \n shadowRadius: 8, \n elevation: 8, \n zIndex: 100 \n }, \n floatingErrorText: { color: '#991B1B', fontSize: 14, fontWeight: '700', textAlign: 'center' }, \n processingOverlay: { flex: 1, backgroundColor: 'rgba(0, 0, 0, 0.6)', justifyContent: 'center', alignItems: 'center', zIndex: 9999 }, \n processingText: { color: '#FFF', fontSize: 18, fontWeight: 'bold', marginTop: 16, textAlign: 'center' }, \n warningBanner: { backgroundColor: '#FF9500', padding: 12, borderRadius: 8, width: '100%', shadowColor: '#000', shadowOffset: { width: 0, height: 2 }, shadowOpacity: 0.2, shadowRadius: 4, elevation: 4 }, \n warningText: { color: 'white', fontWeight: 'bold', textAlign: 'center', fontSize: 16 }, \n errorText: { color: '#dc2626', fontSize: 14, marginTop: 8, textAlign: 'center' }, \n topAnalyzingPillContainer: { position: 'absolute', top: Platform.OS === 'android' ? 60 : 50, left: 0, right: 0, alignItems: 'center', zIndex: 100 }, \n topAnalyzingPill: { flexDirection: 'row', alignItems: 'center', backgroundColor: 'rgba(0,0,0,0.6)', paddingVertical: 8, paddingHorizontal: 16, borderRadius: 20, gap: 8 }, \n analyzingPillText: { color: 'white', fontSize: 14, fontWeight: 'bold' }\n});"]}
|
|
1
|
+
{"version":3,"file":"IDCardCapture.js","sourceRoot":"","sources":["../../../../src/components/KYCElements/IDCardCapture.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useEffect, useMemo, useState } from 'react';\nimport { View, Text, StyleSheet, Image, ScrollView, Platform, ActivityIndicator, TouchableOpacity } from 'react-native'; // 🚨 Added TouchableOpacity\nimport { showAlert } from '../../utils/platformAlert';\nimport { EnhancedCameraView } from '../EnhancedCameraView';\nimport { TemplateComponent, LocalizedText, GovernmentDocumentType, ISilentCaptureResult, IBbox, GovernmentDocumentTypeShorted, GovernmentDocumentTypeBackend } from '../../types/KYC.types';\nimport IdCardOverlay from '../OverLay/IdCard';\nimport { useTemplateKYCFlowContext } from '../../hooks/useTemplateKYCFlow';\nimport { useI18n } from '../../hooks/useI18n';\nimport { Button } from '../ui/Button';\nimport { removeDuplicates } from '../../utils/remove-duplicate';\nimport { backVerification, checkTemplateType, frontVerification } from '../../modules/api/CardAuthentification';\nimport { getDocumentTypeInfo } from '../../utils/get-document-type-info';\nimport pathToBase64 from '../../utils/pathToBase64';\nimport { cropByObb, cropImageWithBBoxWithTolerance, getObbConfidence, OBB_CONFIDENCE_THRESHOLD } from '../../utils/cropByObb';\nimport REGION_MAPPING from '../../config/region_mapping.json';\n\nconst ISO_TO_COUNTRY_NAME: Record<string, string> = { 'KE': 'Kenya', 'CM': 'Cameroon', 'NG': 'Nigeria', 'CA': 'Canada', 'FR': 'France', 'GH': 'Ghana', 'ZA': 'South Africa', 'GB': 'Britain', 'CI': 'Ivory Coast', 'SN': 'Senegal', 'TG': 'Togo', 'ML': 'Mali' };\n\ninterface IIDCardPayload { dir: string; file: string; mrz: string; templatePath?: string; }\ninterface IDCardCaptureProps { component: TemplateComponent; value?: Record<string, IIDCardPayload>; onValueChange: (value: Record<string, IIDCardPayload | string>) => void; error?: string; language?: string; currentSide?: string; }\n\nexport const IDCardCapture: React.FC<IDCardCaptureProps> = ({ component, value = {}, onValueChange, error, language = 'en' }) => {\n const { t, locale } = useI18n();\n const [showCamera, setShowCamera] = useState(false);\n const [capturedImages, setCapturedImages] = useState<Record<string, IIDCardPayload>>(value || {});\n const [currentSide, setCurrentSide] = useState<'front' | 'back'>('front');\n const [bboxBySide, setBboxBySide] = useState<Record<string, IBbox>>({});\n const [silentCaptureResult, setSilentCaptureResult] = useState<ISilentCaptureResult>({ success: false, isAnalyzing: false });\n const [isProcessingCapture, setIsProcessingCapture] = useState(false);\n const [processingImagePath, setProcessingImagePath] = useState<string | null>(null);\n \n // 🚨 ADDED: Key to force camera re-mount\n const [cameraKey, setCameraKey] = useState(0);\n\n const documentTypeMapping: Record<string, GovernmentDocumentType> = { 'nationalId': 'national_id', 'passport': 'passport', 'driversLicense': 'drivers_licence', 'residencePermit': 'permanent_residence', 'healthInsuranceCard': 'health_insurance_card', };\n const { actions, state, env } = useTemplateKYCFlowContext();\n\n const getLocalizedText = (text: LocalizedText | Record<string, LocalizedText>): string => {\n if (text && typeof text[currentSide] === 'object' && text[currentSide][locale]) return text[currentSide][locale] || '';\n return \"\";\n };\n\n const countrySelectionData = useMemo(() => {\n const countrySelectionComponent = state.template.components.find(c => c.type === 'country_selection');\n return countrySelectionComponent ? state.componentData[countrySelectionComponent.id] : null;\n }, [state.template.components, state.componentData]);\n\n const selectedDocumentType = useMemo<{ type: GovernmentDocumentType; region: string } | null>(() => {\n if (!countrySelectionData?.documentType) return null;\n const backendDocType = countrySelectionData.documentType;\n const mappedType = documentTypeMapping[backendDocType] || backendDocType as GovernmentDocumentType;\n return { type: mappedType, region: countrySelectionData.region || 'root' };\n }, [countrySelectionData, documentTypeMapping]);\n\n const countryData = useMemo(() => countrySelectionData, [countrySelectionData]);\n\n const [isRebootingCamera, setIsRebootingCamera] = useState(false);\n\n const refreshCamera = () => {\n setIsRebootingCamera(true);\n \n setTimeout(() => {\n setCameraKey(prev => prev + 1);\n setIsRebootingCamera(false);\n }, 500);\n };\n\n \n\n useEffect(() => {\n if (value && Object.keys(value).length > 0) {\n if (JSON.stringify(value) !== JSON.stringify(capturedImages)) {\n const updatedImages = value as Record<string, IIDCardPayload>;\n setCapturedImages(updatedImages);\n const currentImageData = updatedImages[currentSide];\n if (currentImageData?.dir) {\n setSilentCaptureResult(prev => ({\n ...prev, path: currentImageData.dir, success: true, isAnalyzing: false, mrz: currentImageData.mrz || '', templatePath: currentImageData.templatePath || '',\n }));\n }\n }\n }\n }, [value, currentSide]);\n\n const cameraConfig = useMemo(() => {\n const instructions = selectedDocumentType ? (locale === 'en' ? getDocumentTypeInfo(selectedDocumentType.type).instructions.en : getDocumentTypeInfo(selectedDocumentType.type).instructions.fr) : getLocalizedText(component.instructions as Record<string, LocalizedText>);\n return {\n cameraType: 'back' as const, flashMode: 'auto' as const,\n overlay: { guideText: instructions, bbox: { xMin: 15, yMin: 20, xMax: 85, yMax: 70, borderColor: '#2DBD60', borderWidth: 3, cornerRadius: 8 } }\n };\n }, [selectedDocumentType, locale, component.instructions]);\n\n const retakePicture = (sideToRetake: 'front' | 'back') => {\n setIsProcessingCapture(false);\n setProcessingImagePath(null);\n setSilentCaptureResult({ path: '', success: false, isAnalyzing: false, error: '', templatePath: '', mrz: '', bbox: undefined });\n setShowCamera(true);\n actions.showCustomStepper(false);\n setCapturedImages((prev) => { const newState = { ...prev }; delete newState[sideToRetake]; return newState; });\n if (value) { const newValue = { ...value }; delete newValue[sideToRetake]; onValueChange(newValue); }\n };\n\n const getCurrentSideVerification = (currentSide: string, countryKey: string) => {\n const rawDocType = countrySelectionData?.documentType;\n if (!rawDocType || !countryKey) { return { authMethod: [], mrzTypes: [], regionMapping: null, key: 'root' }; }\n const rawCountryName = ISO_TO_COUNTRY_NAME[countryData?.code || ''] || countryData?.code || countryKey;\n const baseMapping = (REGION_MAPPING as any).regionMapping || REGION_MAPPING;\n let countryMapping = baseMapping[rawCountryName];\n if (!countryMapping) {\n const foundKey = Object.keys(baseMapping).find(k => k.toLowerCase() === rawCountryName.toLowerCase() || k.toLowerCase() === countryKey.toLowerCase());\n if (foundKey) countryMapping = baseMapping[foundKey];\n }\n if (!countryMapping) { return { authMethod: [], mrzTypes: [], regionMapping: null, key: 'root' }; }\n const regionMapping = countryMapping[rawDocType];\n if (!regionMapping) { return { authMethod: [], mrzTypes: [], regionMapping: null, key: 'root' }; }\n const authMethod: string[] = [];\n const mrzTypes: string[] = [];\n const key = countrySelectionData.region?.trim()?.length > 0 ? countrySelectionData.region.trim() : 'root';\n if (regionMapping?.[key] && Array.isArray(regionMapping[key])) {\n regionMapping[key].forEach((item: any) => {\n if (item[currentSide]) {\n authMethod.push(item[currentSide]);\n if (item?.mrz_type) mrzTypes.push(item?.mrz_type);\n }\n });\n }\n return { authMethod: removeDuplicates(authMethod), mrzTypes: removeDuplicates(mrzTypes), regionMapping, key };\n }\n\n const getCorrespondingMrzType = (templatePath: string, mapping: any, selectedDocumentType: string = \"root\") => {\n if (!mapping || !mapping[selectedDocumentType]) return null;\n const fileName = templatePath.split(\"/\").pop()?.replace(\".jpg\", \"\").replace(\".png\", \"\");\n if (!fileName) return null;\n const pyName = `${fileName}.py`;\n const found = mapping[selectedDocumentType].find((item: any) => item.py_file === pyName);\n return found?.mrz_type || null;\n }\n\n const getCorrespondingAuthMethod = (templatePath: string, mapping: any, selectedDocumentType: string = \"root\", side: 'front' | 'back') => {\n if (!mapping || !mapping[selectedDocumentType]) return null;\n const fileName = templatePath.split(\"/\").pop()?.replace(\".jpg\", \"\").replace(\".png\", \"\");\n if (!fileName) return null;\n const pyName = `${fileName}.py`;\n const found = mapping[selectedDocumentType].find((item: any) => item.py_file === pyName);\n return found?.[side] || null;\n }\n\n const autoCapture = async (capturePath: string, verified: ISilentCaptureResult) => {\n if (isProcessingCapture) return;\n setIsProcessingCapture(true);\n setProcessingImagePath(capturePath);\n try {\n let imagePathForUpload = capturePath;\n if (verified.bbox) {\n try {\n imagePathForUpload = await cropImageWithBBoxWithTolerance(capturePath, verified.bbox, 0.15);\n } catch {\n imagePathForUpload = capturePath;\n }\n }\n const base64 = await pathToBase64(imagePathForUpload);\n const newImages = {\n ...capturedImages,\n [currentSide]: { dir: imagePathForUpload, file: base64, mrz: verified.mrz || \"\", templatePath: verified.templatePath },\n };\n setCapturedImages(newImages);\n if (verified.country && verified.documentType) {\n onValueChange({\n ...newImages,\n country: verified.country,\n documentType: GovernmentDocumentTypeBackend[verified.documentType as keyof typeof GovernmentDocumentTypeBackend] || '',\n });\n }\n setTimeout(() => {\n setShowCamera(false);\n actions.showCustomStepper(true);\n setSilentCaptureResult(prev => ({ ...prev, isAnalyzing: false }));\n setIsProcessingCapture(false);\n setProcessingImagePath(null);\n }, 600);\n } catch (e: any) {\n showAlert('Error', e?.message || 'Impossible de capturer la photo');\n setSilentCaptureResult(prev => ({ ...prev, isAnalyzing: false, success: false }));\n setIsProcessingCapture(false);\n setProcessingImagePath(null);\n }\n };\n\n const handleSilentCapture = async (result: { success: boolean; path?: string; error?: string }) => {\n if (silentCaptureResult.isAnalyzing || isProcessingCapture) return;\n if (result.success && result.path) {\n setSilentCaptureResult((prev) => ({ ...prev, isAnalyzing: true, success: false, error: '' }));\n let templatePath = capturedImages[currentSide]?.templatePath || '';\n let templateBbox: IBbox | undefined;\n let templateResponse: any;\n if (!selectedDocumentType) {\n setSilentCaptureResult((prev) => ({ ...prev, isAnalyzing: false, success: false, error: 'Document type not selected' }));\n return;\n }\n try {\n if (!templatePath) {\n const templateType = await checkTemplateType({ path: result.path || '', docType: selectedDocumentType?.type as GovernmentDocumentType, docRegion: countryData?.code || \"\", postfix: currentSide }, env);\n templateResponse = templateType;\n if (templateType.template_path) templatePath = templateType.template_path;\n if (templateType.card_obb) {\n const obbConfidence = getObbConfidence((templateType as any).card_obb);\n if (obbConfidence !== null && obbConfidence < OBB_CONFIDENCE_THRESHOLD) {\n setSilentCaptureResult((prev) => ({ ...prev, isAnalyzing: false, success: false, error: t('kyc.idCardCapture.cardNotFullyInFrame') }));\n return;\n }\n try {\n const crop = await cropByObb(result.path, (templateType as any).card_obb);\n templateBbox = crop.bbox;\n } catch { }\n }\n }\n const extractedCountryKey = templatePath ? templatePath.split('/')[0] : (ISO_TO_COUNTRY_NAME[countryData?.code || ''] || 'root');\n const regionMappings = getCurrentSideVerification(currentSide, extractedCountryKey);\n let verificationRes: any;\n if (currentSide === 'front') {\n const matchedAuthMethod = getCorrespondingAuthMethod(templatePath, regionMappings.regionMapping, regionMappings.key || '', 'front');\n const mrzType = getCorrespondingMrzType(templatePath, regionMappings.regionMapping, regionMappings.key || '') || 'TD1';\n verificationRes = await frontVerification({ path: result.path, regionMapping: { authMethod: matchedAuthMethod ? [matchedAuthMethod] : regionMappings.authMethod, mrzTypes: regionMappings.mrzTypes }, selectedDocumentType: GovernmentDocumentTypeShorted[selectedDocumentType?.type as keyof typeof GovernmentDocumentTypeShorted] || '', code: countryData?.code || '', currentSide, templatePath, mrzType }, env);\n } else {\n let matchedBackAuthMethod = getCorrespondingAuthMethod(templatePath, regionMappings.regionMapping, regionMappings.key || '', 'back');\n if (!matchedBackAuthMethod && currentSide === 'back') {\n matchedBackAuthMethod = 'MRZ';\n }\n const backMrzType = getCorrespondingMrzType(templatePath, regionMappings.regionMapping, regionMappings.key || '') || 'TD1';\n verificationRes = await backVerification({ path: result.path, regionMapping: { authMethod: matchedBackAuthMethod ? [matchedBackAuthMethod] : regionMappings.authMethod, mrzTypes: regionMappings.mrzTypes }, selectedDocumentType: GovernmentDocumentTypeShorted[selectedDocumentType.type as keyof typeof GovernmentDocumentTypeShorted] || '', code: countryData?.code || '', currentSide, templatePath, mrzType: backMrzType, templateResponse }, env);\n }\n const bbox = verificationRes?.bbox || templateBbox;\n const mrz = verificationRes?.mrz ? JSON.stringify(verificationRes.mrz) : \"\";\n const verifiedResult: ISilentCaptureResult = { path: result.path, templatePath, bbox, success: true, mrz, isAnalyzing: false, country: countryData?.code, documentType: selectedDocumentType.type };\n setSilentCaptureResult(verifiedResult);\n if (bbox) setBboxBySide(prev => ({ ...prev, [currentSide]: bbox }));\n await autoCapture(result.path, verifiedResult);\n } catch (error: any) {\n const isCardNotFullyInFrame = error?.message === 'CARD_NOT_FULLY_IN_FRAME' || error?.message?.includes('entirement');\n const errorMessage = isCardNotFullyInFrame ? t('kyc.idCardCapture.cardNotFullyInFrame') : (error?.message || 'Erreur de détection');\n setSilentCaptureResult(prev => ({ ...prev, isAnalyzing: false, success: false, error: errorMessage }));\n }\n }\n };\n\n const handleError = (event: { message: string }) => {\n showAlert('Erreur', event.message);\n setShowCamera(false);\n setIsProcessingCapture(false);\n };\n\n useEffect(() => {\n actions.showCustomStepper(!showCamera);\n }, [showCamera]);\n\n if (!countrySelectionData || !selectedDocumentType) {\n return (\n <View style={styles.root}>\n <View style={styles.previewContainer}>\n <Text style={styles.title}>{getLocalizedText(component.labels)}</Text>\n <Text style={styles.description}>\n {state.currentLanguage === \"en\" ? \"Please complete the country and document selection first.\" : \"Veuillez d'abord compléter la sélection du pays et du document.\"}\n </Text>\n </View>\n </View>\n );\n }\n\n\n // --- CAMERA RENDER ---\n if (showCamera) {\n const isBusy = isProcessingCapture;\n\n if (isRebootingCamera) {\n return (\n <View style={[styles.root, { justifyContent: 'center', alignItems: 'center', backgroundColor: '#000' }]}>\n <ActivityIndicator size=\"large\" color=\"#2DBD60\" />\n <Text style={{ color: 'white', marginTop: 20, fontSize: 16 }}>Initializing Camera...</Text>\n </View>\n );\n }\n\n return (\n <View style={styles.root}>\n <View style={[styles.cameraWrapper, { flex: 1, minHeight: 400 }]}>\n \n <View style={styles.headerContainer}>\n <Text style={styles.headerTitle}>\n {selectedDocumentType ? (locale === 'en' ? getDocumentTypeInfo(selectedDocumentType.type).name.en : getDocumentTypeInfo(selectedDocumentType.type).name.fr) : ''}\n </Text>\n <View style={styles.stepBadge}>\n <Text style={styles.stepText}>\n {t('kyc.idCardCapture.captureTitle', { side: currentSide === 'front' ? locale === 'en' ? 'Front' : 'Recto' : locale === 'en' ? 'Back' : 'Verso' })}\n </Text>\n </View>\n </View>\n \n <View style={[styles.cameraFeedContainer, { flex: 1, backgroundColor: '#000' }]}>\n \n <EnhancedCameraView\n key={`${currentSide}-${cameraKey}`}\n showCamera={true}\n isProcessing={isBusy}\n cameraType={cameraConfig.cameraType}\n style={styles.absoluteFillObject} \n onError={handleError}\n onSilentCapture={handleSilentCapture}\n silentCaptureResult={silentCaptureResult}\n overlayComponent={\n <>\n {/* We ONLY put the ID frame here, because if the camera fails, we don't care if the frame fails too */}\n <IdCardOverlay\n xMin={cameraConfig.overlay.bbox.xMin} yMin={cameraConfig.overlay.bbox.yMin} xMax={cameraConfig.overlay.bbox.xMax} yMax={cameraConfig.overlay.bbox.yMax}\n instructions={cameraConfig.overlay.guideText}\n cornerOpacity={cameraConfig.overlay.bbox.cornerRadius || 0 as number}\n isSuccess={silentCaptureResult.success}\n language={state.currentLanguage}\n stepperProps={{\n back: () => {\n if (currentSide === 'back') {\n setCurrentSide('front');\n setShowCamera(false);\n setIsProcessingCapture(false);\n setProcessingImagePath(null);\n if (capturedImages['front']?.dir) {\n const frontImage = capturedImages['front'];\n setSilentCaptureResult((prev) => ({ ...prev, path: frontImage.dir, success: true, isAnalyzing: false, error: '', mrz: frontImage.mrz || '', templatePath: frontImage.templatePath || '', bbox: bboxBySide['front'] }));\n } else { setSilentCaptureResult((prev) => ({ ...prev, path: '', success: false, isAnalyzing: false, error: '', templatePath: '' })); }\n } else { actions.previousComponent(); }\n },\n selectedDocumentType: selectedDocumentType ? (locale === 'en' ? getDocumentTypeInfo(selectedDocumentType.type).name.en : getDocumentTypeInfo(selectedDocumentType.type).name.fr) : '',\n step: state.currentComponentIndex + 1, totalSteps: state.template.components.length, side: currentSide,\n }}\n />\n </>\n }\n />\n\n\n {!isBusy && silentCaptureResult.isAnalyzing && (\n <View style={styles.topAnalyzingPillContainer}>\n <View style={styles.topAnalyzingPill}>\n <ActivityIndicator size=\"small\" color=\"white\" />\n <Text style={styles.analyzingPillText}>\n {state.currentLanguage === 'en' ? 'Scanning...' : 'Analyse...'}\n </Text>\n </View>\n </View>\n )}\n\n {isBusy && (\n <View style={[StyleSheet.absoluteFillObject, { zIndex: 9999 }]}>\n {processingImagePath && (\n <Image\n source={{ uri: processingImagePath.startsWith('file://') ? processingImagePath : `file://${processingImagePath}` }}\n style={StyleSheet.absoluteFillObject}\n resizeMode=\"cover\"\n />\n )}\n <View style={styles.processingOverlay}>\n <ActivityIndicator size=\"large\" color=\"#2DBD60\" />\n <Text style={styles.processingText}>\n {state.currentLanguage === 'en' ? 'Perfect!\\nProcessing Document...' : 'Parfait!\\nTraitement du document...'}\n </Text>\n </View>\n </View>\n )}\n\n {!isBusy && (\n <View style={styles.escapeHatchContainer}>\n {/* Refresh Button */}\n <TouchableOpacity style={styles.fallbackRefreshButton} onPress={refreshCamera}>\n <Text style={styles.fallbackRefreshText}>↻ Refresh Camera</Text>\n </TouchableOpacity>\n\n <TouchableOpacity \n style={[styles.fallbackRefreshButton, { marginTop: 15, backgroundColor: 'rgba(220, 38, 38, 0.8)', borderColor: '#DC2626' }]} \n onPress={() => setShowCamera(false)}\n >\n <Text style={styles.fallbackRefreshText}>Cancel / Go Back</Text>\n </TouchableOpacity>\n </View>\n )}\n\n {silentCaptureResult.error && !isBusy ? (\n <View style={[styles.floatingErrorBanner, { zIndex: 10000 }]}>\n <Text style={styles.floatingErrorText}>⚠️ {silentCaptureResult.error}</Text>\n </View>\n ) : null}\n\n </View>\n </View>\n </View>\n );\n}\n\n return (\n <View style={styles.root}>\n <View style={styles.previewContainer}>\n <ScrollView style={styles.previewItemContainer} showsVerticalScrollIndicator={false}>\n <View key={currentSide} style={styles.sideContainer}>\n <Text style={styles.sideTitle}>\n {t('kyc.idCardCapture.captureTitle', { side: currentSide === 'front' ? locale === 'en' ? 'Front' : 'Recto' : locale === 'en' ? 'Back' : 'Verso' })}\n </Text>\n <Text style={{ fontSize: 14, color: '#666', textAlign: 'center', marginBottom: 16, lineHeight: 22 }}>\n {getLocalizedText(component.instructions)}\n </Text>\n <View style={{ alignItems: 'center', justifyContent: 'center', flexDirection: \"column\", gap: 16 }}>\n {silentCaptureResult?.error === 'TOO_FAR_AWAY' && (\n <View style={styles.warningBanner}>\n <Text style={styles.warningText}>\n {state.currentLanguage === \"en\" ? \"Move the document closer to the camera and place it on a flat surface.\" : \"Veuillez rapprocher le document de la caméra et le poser à plat.\"}\n </Text>\n </View>\n )}\n <View style={styles.imagePreviewWrapper}>\n {capturedImages[currentSide]?.dir ? (\n <Image source={{ uri: capturedImages[currentSide].dir }} style={styles.previewImage} />\n ) : silentCaptureResult.path ? (\n <Image source={{ uri: silentCaptureResult.path }} style={styles.previewImage} />\n ) : null}\n </View>\n {!capturedImages[currentSide]?.dir && (\n <Button\n title={state.currentLanguage === \"en\" ? \"Start Scanning\" : \"Commencer la numérisation\"}\n onPress={() => { setShowCamera(true); actions.showCustomStepper(false); }}\n variant=\"primary\" size=\"large\" fullWidth\n />\n )}\n {capturedImages[currentSide]?.dir && (\n <>\n <Button title={t('kyc.idCardCapture.retakeButton')} onPress={() => retakePicture(currentSide)} variant=\"outline\" size=\"medium\" fullWidth />\n <Button title={t('common.next')} onPress={() => {\n if (!selectedDocumentType) { showAlert('Error', 'Document type not selected'); return; }\n if (currentSide === 'back' || selectedDocumentType.type === 'passport') {\n actions.nextComponent();\n } else {\n setShowCamera(true);\n setCurrentSide('back');\n setSilentCaptureResult({ success: false, isAnalyzing: false, path: '', error: '', templatePath: undefined });\n setIsProcessingCapture(false);\n setProcessingImagePath(null);\n }\n }} variant=\"primary\" size=\"large\" fullWidth />\n </>\n )}\n </View>\n </View>\n </ScrollView>\n </View>\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n root: {\n flex: 1, width: '100%', backgroundColor: 'transparent', alignSelf: 'center',\n ...(Platform.OS === 'web' ? ({ minHeight: '85vh', justifyContent: 'center', alignItems: 'center', backdropFilter: 'blur(8px)' } as any) : {})\n },\n cameraWrapper: {\n width: '100%', backgroundColor: '#FFFFFF', overflow: 'hidden',\n ...(Platform.OS === 'web' ? ({ maxWidth: 500, height: 700, maxHeight: '90vh', borderRadius: 24, shadowColor: '#000', shadowOffset: { width: 0, height: 20 }, shadowOpacity: 0.25, shadowRadius: 35, elevation: 24, } as any) : { flex: 1, })\n },\n headerContainer: {\n flexDirection: 'row', alignItems: 'center', justifyContent: 'space-between', paddingHorizontal: 24, paddingVertical: 18, backgroundColor: '#FFFFFF', borderBottomWidth: 1, borderBottomColor: '#F1F5F9', zIndex: 10,\n ...(Platform.OS !== 'web' ? { display: 'none' } : {})\n },\n headerTitle: { fontSize: 18, fontWeight: '700', color: '#0F172A', },\n stepBadge: { backgroundColor: '#F1F5F9', paddingHorizontal: 12, paddingVertical: 6, borderRadius: 20, },\n stepText: { fontSize: 13, fontWeight: '600', color: '#64748B', },\n cameraFeedContainer: { flex: 1, position: 'relative', backgroundColor: '#000', },\n camera: { flex: 1, },\n refreshButton: {\n position: 'absolute', bottom: 100, alignSelf: 'center', backgroundColor: 'rgba(0,0,0,0.6)', paddingVertical: 12, paddingHorizontal: 24, borderRadius: 24, zIndex: 500\n },\n refreshButtonText: { color: 'white', fontWeight: 'bold', fontSize: 16 },\n previewContainer: {\n width: '100%', backgroundColor: 'white', borderRadius: 12, paddingVertical: 24, paddingHorizontal: 20, shadowColor: '#000', shadowOffset: { width: 0, height: 4 }, shadowOpacity: 0.1, shadowRadius: 12, elevation: 8,\n ...(Platform.OS === 'web' ? { alignSelf: 'center', maxWidth: 600 } : { margin: 10, width: '95%' })\n },\n previewItemContainer: { flexGrow: 1, },\n title: { fontSize: 24, fontWeight: 'bold', color: '#333', marginBottom: 8, textAlign: 'center' },\n description: { fontSize: 16, color: '#666', textAlign: 'center', marginBottom: 24, lineHeight: 22 },\n sideContainer: { marginBottom: 24 },\n sideTitle: { fontSize: 25, fontWeight: 'bold', color: '#000', marginBottom: 12, textAlign: 'center' },\n imagePreviewWrapper: { width: '100%', height: 220, borderRadius: 12, padding: 1, overflow: 'hidden', shadowColor: '#000', shadowOffset: { width: 0, height: 4 }, shadowOpacity: 0.18, shadowRadius: 8, elevation: 8, backgroundColor: '#f0f0f0' },\n previewImage: { width: '100%', height: '100%', borderRadius: 12, resizeMode: 'cover' },\n floatingErrorBanner: {\n position: 'absolute', bottom: 30, left: 24, right: 24, backgroundColor: '#FEF2F2', borderWidth: 1, borderColor: '#FCA5A5', paddingVertical: 12, paddingHorizontal: 16, borderRadius: 12, alignItems: 'center', justifyContent: 'center', shadowColor: '#DC2626', shadowOffset: { width: 0, height: 4 }, shadowOpacity: 0.1, shadowRadius: 8, elevation: 8, zIndex: 100\n },\n floatingErrorText: { color: '#991B1B', fontSize: 14, fontWeight: '700', textAlign: 'center' },\n processingOverlay: { flex: 1, backgroundColor: 'rgba(0, 0, 0, 0.6)', justifyContent: 'center', alignItems: 'center', zIndex: 9999 },\n processingText: { color: '#FFF', fontSize: 18, fontWeight: 'bold', marginTop: 16, textAlign: 'center' },\n warningBanner: { backgroundColor: '#FF9500', padding: 12, borderRadius: 8, width: '100%', shadowColor: '#000', shadowOffset: { width: 0, height: 2 }, shadowOpacity: 0.2, shadowRadius: 4, elevation: 4 },\n warningText: { color: 'white', fontWeight: 'bold', textAlign: 'center', fontSize: 16 },\n errorText: { color: '#dc2626', fontSize: 14, marginTop: 8, textAlign: 'center' },\n topAnalyzingPillContainer: { position: 'absolute', top: Platform.OS === 'android' ? 60 : 50, left: 0, right: 0, alignItems: 'center', zIndex: 100 },\n topAnalyzingPill: { flexDirection: 'row', alignItems: 'center', backgroundColor: 'rgba(0,0,0,0.6)', paddingVertical: 8, paddingHorizontal: 16, borderRadius: 20, gap: 8 },\n analyzingPillText: { color: 'white', fontSize: 14, fontWeight: 'bold' },\n escapeHatchContainer: {\n position: 'absolute',\n bottom: 40,\n left: 0,\n right: 0,\n alignItems: 'center',\n justifyContent: 'center',\n zIndex: 99999, // Guarantees it is the top-most element\n },\n fallbackRefreshButton: {\n backgroundColor: 'rgba(0, 0, 0, 0.8)', // Darker so it's visible on white or black\n borderWidth: 1,\n borderColor: 'rgba(255, 255, 255, 0.5)',\n paddingVertical: 12,\n paddingHorizontal: 24,\n borderRadius: 24,\n shadowColor: '#000',\n shadowOffset: { width: 0, height: 4 },\n shadowOpacity: 0.3,\n shadowRadius: 5,\n elevation: 8,\n },\n fallbackRefreshText: {\n color: '#FFFFFF',\n fontWeight: 'bold',\n fontSize: 16,\n },\n absoluteFillObject: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n },\n});"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React, { useEffect } from 'react';
|
|
2
2
|
import { requireNativeViewManager } from 'expo-modules-core';
|
|
3
|
-
const NativeCameraViewComponent = requireNativeViewManager('
|
|
3
|
+
const NativeCameraViewComponent = requireNativeViewManager('SanctumKeySdk_SanctumKeySdkView');
|
|
4
4
|
export const NativeCameraView = (props) => {
|
|
5
5
|
useEffect(() => {
|
|
6
6
|
console.log('🟨 [NativeCameraView] Props reçues:', {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NativeCameraView.js","sourceRoot":"","sources":["../../../src/components/NativeCameraView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEzC,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAU7D,MAAM,yBAAyB,GAAG,wBAAwB,CAAC,
|
|
1
|
+
{"version":3,"file":"NativeCameraView.js","sourceRoot":"","sources":["../../../src/components/NativeCameraView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEzC,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAU7D,MAAM,yBAAyB,GAAG,wBAAwB,CAAC,iCAAiC,CAAC,CAAC;AAE9F,MAAM,CAAC,MAAM,gBAAgB,GAAoC,CAAC,KAAK,EAAE,EAAE;IAEzE,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,CAAC,GAAG,CAAC,qCAAqC,EAAE;YACjD,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS;YAC/B,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO;SAC5B,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAE3E,MAAM,aAAa,GAAG,CAAC,KAAU,EAAE,EAAE;QACnC,OAAO,CAAC,GAAG,CAAC,iDAAiD,EAAE,KAAK,CAAC,CAAC;QACtE,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YACpB,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,KAAU,EAAE,EAAE;QACjC,OAAO,CAAC,GAAG,CAAC,+CAA+C,EAAE,KAAK,CAAC,CAAC;QACpE,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,CAAC,yBAAyB,CACxB,IAAI,KAAK,CAAC,CACV,SAAS,CAAC,CAAC,aAAa,CAAC,CACzB,OAAO,CAAC,CAAC,WAAW,CAAC,EACrB,CACH,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import React, { useEffect } from 'react';\nimport { ViewStyle } from 'react-native';\nimport { requireNativeViewManager } from 'expo-modules-core';\n\nexport interface NativeCameraViewProps {\n instructions: string;\n showCamera: boolean;\n style?: ViewStyle;\n onCapture?: (event: any) => void;\n onError?: (event: any) => void;\n}\n\nconst NativeCameraViewComponent = requireNativeViewManager('SanctumKeySdk_SanctumKeySdkView');\n\nexport const NativeCameraView: React.FC<NativeCameraViewProps> = (props) => {\n \n useEffect(() => {\n console.log('🟨 [NativeCameraView] Props reçues:', {\n instructions: props.instructions,\n showCamera: props.showCamera,\n hasOnCapture: !!props.onCapture,\n hasOnError: !!props.onError\n });\n }, [props.instructions, props.showCamera, props.onCapture, props.onError]);\n\n const handleCapture = (event: any) => {\n console.log('🟨 [NativeCameraView] Événement onCapture reçu:', event);\n if (props.onCapture) {\n props.onCapture(event);\n }\n };\n\n const handleError = (event: any) => {\n console.log('🟨 [NativeCameraView] Événement onError reçu:', event);\n if (props.onError) {\n props.onError(event);\n }\n };\n\n return (\n <NativeCameraViewComponent \n {...props} \n onCapture={handleCapture}\n onError={handleError}\n />\n );\n}; "]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { JSX } from 'react';
|
|
2
2
|
import { KYCTemplate, VerificationState } from '../types/KYC.types';
|
|
3
3
|
import { KycEnvironment, BackendEnvironment } from '../types/env.types';
|
|
4
|
-
export
|
|
4
|
+
export interface TemplateKYCExampleProps {
|
|
5
5
|
onComplete: (data: VerificationState) => void;
|
|
6
6
|
onCancel: () => void;
|
|
7
7
|
onError: (error: string) => void;
|
|
@@ -20,5 +20,6 @@ export declare const TemplateKYCExample: React.FC<{
|
|
|
20
20
|
};
|
|
21
21
|
referenceId?: string;
|
|
22
22
|
onSessionSave?: (sessionId: string) => void;
|
|
23
|
-
}
|
|
23
|
+
}
|
|
24
|
+
export declare function TemplateKYCExample({ onComplete, onCancel, onError, language, API_KEY, templateId, template, env, serverEnv, existingSessionId, initialComponentIndex, initialCountryResume, referenceId, onSessionSave }: TemplateKYCExampleProps): JSX.Element;
|
|
24
25
|
//# sourceMappingURL=TemplateKYCExample.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TemplateKYCExample.d.ts","sourceRoot":"","sources":["../../../src/components/TemplateKYCExample.tsx"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"TemplateKYCExample.d.ts","sourceRoot":"","sources":["../../../src/components/TemplateKYCExample.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAGnC,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAuIxE,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC9C,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,GAAG,CAAC,EAAE,cAAc,CAAC;IACrB,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,oBAAoB,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7C;AAED,wBAAgB,kBAAkB,CAAC,EACjC,UAAU,EACV,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,OAAO,EACP,UAAU,EACV,QAAQ,EACR,GAAkB,EAClB,SAAS,EACT,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,WAAW,EACX,aAAa,EACd,EAAE,uBAAuB,GAAG,GAAG,CAAC,OAAO,CA4CvC"}
|
|
@@ -128,7 +128,7 @@ const advancedVerificationTemplate = {
|
|
|
128
128
|
},
|
|
129
129
|
]
|
|
130
130
|
};
|
|
131
|
-
export
|
|
131
|
+
export function TemplateKYCExample({ onComplete, onCancel, onError, language, API_KEY, templateId, template, env = 'PRODUCTION', serverEnv, existingSessionId, initialComponentIndex, initialCountryResume, referenceId, onSessionSave }) {
|
|
132
132
|
const handleComplete = (data) => {
|
|
133
133
|
console.log('KYC Template completed with data:', data);
|
|
134
134
|
onComplete(data);
|
|
@@ -151,5 +151,5 @@ export const TemplateKYCExample = ({ onComplete, onCancel, onError, language, AP
|
|
|
151
151
|
API_KEY={API_KEY} env={env} serverEnv={serverEnv} existingSessionId={existingSessionId} initialComponentIndex={initialComponentIndex} initialCountryResume={initialCountryResume} referenceId={referenceId} onSessionSave={onSessionSave}/>
|
|
152
152
|
</View>
|
|
153
153
|
</SafeAreaView>);
|
|
154
|
-
}
|
|
154
|
+
}
|
|
155
155
|
//# sourceMappingURL=TemplateKYCExample.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TemplateKYCExample.js","sourceRoot":"","sources":["../../../src/components/TemplateKYCExample.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport { View, SafeAreaView } from 'react-native';\nimport { TemplateKYCFlow } from './TemplateKYCFlowRefactored';\nimport { KYCTemplate, VerificationState } from '../types/KYC.types';\nimport { KycEnvironment, BackendEnvironment } from '../types/env.types';\n\n\n\n\nconst advancedVerificationTemplate: KYCTemplate = {\n id: 1,\n name: {\n en: \"Advanced Verification\",\n fr: \"Vérification Avancée\"\n },\n description: {\n en: \"Extended identity verification flow\",\n fr: \"Processus de vérification d'identité étendu\"\n },\n version: \"1.1.0\",\n components: [\n {\n id: 5,\n type: \"location\" as const,\n order: 1,\n labels: {\n en: \"Enable your location\",\n fr: \"Activez votre localisation\"\n },\n instructions: {\n en: \"We need your GPS location for compliance purposes.\",\n fr: \"Nous avons besoin de votre localisation GPS pour des raisons réglementaires.\"\n },\n ui: {\n icon: \"location-icon.png\",\n themeColor: \"#2DBD60\",\n buttonText: { en: \"Enable Location\", fr: \"Activer la localisation\" }\n },\n config: {\n accuracy: \"high\",\n required: true\n } as const\n },\n {\n id: 6,\n type: \"country_selection\" as const,\n order: 2,\n labels: {\n en: \"Select your country\",\n fr: \"Sélectionnez votre pays\"\n },\n instructions: {\n en: \"Choose your country of residence.\",\n fr: \"Choisissez votre pays de résidence.\"\n },\n ui: {\n icon: \"country-icon.png\",\n themeColor: \"#2DBD60\",\n buttonText: { en: \"Confirm\", fr: \"Confirmer\" }\n },\n config: {\n allowed_countries: [\"CM\", \"NG\", \"CI\", \"KE\", \"GH\"],\n default_country: \"CM\",\n required: true\n } as const\n },\n {\n id: 1,\n type: \"id_card\" as const,\n order: 3,\n templateId: 1,\n labels: {\n front: {\n en: \"Upload front of ID card\",\n fr: \"Téléversez le recto de votre carte d'identité\"\n },\n back: {\n en: \"Upload back of ID card\",\n fr: \"Téléversez le verso de votre carte d'identité\"\n },\n },\n instructions: {\n front: {\n en: \"Take a clear photo of the front of your ID.\",\n fr: \"Prenez une photo nette du recto de votre pièce.\"\n },\n back: {\n en: \"Take a clear photo of the back of your ID.\",\n fr: \"Prenez une photo nette du verso de votre pièce.\"\n },\n },\n ui: {\n front: {\n icon: \"id-card-icon.png\",\n themeColor: \"#2DBD60\",\n buttonText: { en: \"Next\", fr: \"Suivant\" }\n },\n back: {\n icon: \"id-card-icon.png\",\n themeColor: \"#2DBD60\",\n buttonText: { en: \"Next\", fr: \"Suivant\" }\n },\n },\n config: {\n sides: [\"front\", \"back\"],\n allowed_formats: [\"jpg\", \"png\"],\n max_size_mb: 5,\n document_types: [\"drivers_licence\", \"passport\", \"drivers_licence\", \"national_id\"],\n\n } as const\n },\n {\n id: 3,\n type: \"selfie\" as const,\n order: 5,\n templateId: 1,\n labels: {\n en: \"Take selfies from different angles\",\n fr: \"Prenez des selfies sous différents angles\"\n },\n instructions: {\n en: \"Take selfies from front, left, and right angles.\",\n fr: \"Prenez des selfies de face, profil gauche et profil droit.\"\n },\n ui: {\n icon: \"selfie-icon.png\",\n themeColor: \"#2DBD60\",\n buttonText: { en: \"Next\", fr: \"Suivant\" }\n },\n config: {\n liveness_check: true,\n max_attempts: 3,\n orientations: [\"center\", \"left\", \"right\"]\n } as const\n },\n ]\n};\n\nexport const TemplateKYCExample: React.FC<{\n onComplete: (data: VerificationState) => void;\n onCancel: () => void;\n onError: (error: string) => void;\n language: string;\n API_KEY?: string;\n templateId?: string;\n template?: KYCTemplate;\n env?: KycEnvironment; // Flow execution: PRODUCTION (full AI) or SANDBOX (skip AI)\n serverEnv?: BackendEnvironment; // Backend to call: PRODUCTION or TEST (API URL)\n existingSessionId?: string;\n initialComponentIndex?: number;\n initialCountryResume?: { code: string; documentType: string; region?: string };\n referenceId?: string;\n onSessionSave?: (sessionId: string) => void;\n}> = ({ onComplete, onCancel, onError, language, API_KEY, templateId, template, env = 'PRODUCTION', serverEnv, existingSessionId, initialComponentIndex, initialCountryResume, referenceId, onSessionSave }) => {\n const handleComplete = (data: VerificationState) => {\n console.log('KYC Template completed with data:', data);\n onComplete(data);\n // Ici vous pouvez envoyer les données à votre API\n };\n\n const handleCancel = () => {\n console.log('KYC Template flow cancelled');\n onCancel();\n };\n\n const handleError = (error: string) => {\n console.error('KYC Template error:', error);\n onError(error);\n };\n\n // Transform backend template to SDK format\n // Determine which template to use: prefer templateId for dynamic loading, then template prop, then fallback to hardcoded\n const templateToUse = templateId ? undefined : (template || advancedVerificationTemplate);\n\n return (\n <SafeAreaView style={{ flex: 1, paddingVertical: 25 }}>\n <View style={{ flex: 1 }}>\n <TemplateKYCFlow\n template={templateToUse}\n templateId={templateId}\n onComplete={handleComplete}\n onError={handleError}\n onCancel={handleCancel}\n language={language} // ou \"en\" pour l'anglais\n API_KEY={API_KEY}\n env={env}\n serverEnv={serverEnv}\n existingSessionId={existingSessionId}\n initialComponentIndex={initialComponentIndex}\n initialCountryResume={initialCountryResume}\n referenceId={referenceId}\n onSessionSave={onSessionSave}\n />\n </View>\n </SafeAreaView>\n );\n};\n\n"]}
|
|
1
|
+
{"version":3,"file":"TemplateKYCExample.js","sourceRoot":"","sources":["../../../src/components/TemplateKYCExample.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { JSX } from 'react';\nimport { View, SafeAreaView } from 'react-native';\nimport { TemplateKYCFlow } from './TemplateKYCFlowRefactored';\nimport { KYCTemplate, VerificationState } from '../types/KYC.types';\nimport { KycEnvironment, BackendEnvironment } from '../types/env.types';\n\n\n\n\nconst advancedVerificationTemplate: KYCTemplate = {\n id: 1,\n name: {\n en: \"Advanced Verification\",\n fr: \"Vérification Avancée\"\n },\n description: {\n en: \"Extended identity verification flow\",\n fr: \"Processus de vérification d'identité étendu\"\n },\n version: \"1.1.0\",\n components: [\n {\n id: 5,\n type: \"location\" as const,\n order: 1,\n labels: {\n en: \"Enable your location\",\n fr: \"Activez votre localisation\"\n },\n instructions: {\n en: \"We need your GPS location for compliance purposes.\",\n fr: \"Nous avons besoin de votre localisation GPS pour des raisons réglementaires.\"\n },\n ui: {\n icon: \"location-icon.png\",\n themeColor: \"#2DBD60\",\n buttonText: { en: \"Enable Location\", fr: \"Activer la localisation\" }\n },\n config: {\n accuracy: \"high\",\n required: true\n } as const\n },\n {\n id: 6,\n type: \"country_selection\" as const,\n order: 2,\n labels: {\n en: \"Select your country\",\n fr: \"Sélectionnez votre pays\"\n },\n instructions: {\n en: \"Choose your country of residence.\",\n fr: \"Choisissez votre pays de résidence.\"\n },\n ui: {\n icon: \"country-icon.png\",\n themeColor: \"#2DBD60\",\n buttonText: { en: \"Confirm\", fr: \"Confirmer\" }\n },\n config: {\n allowed_countries: [\"CM\", \"NG\", \"CI\", \"KE\", \"GH\"],\n default_country: \"CM\",\n required: true\n } as const\n },\n {\n id: 1,\n type: \"id_card\" as const,\n order: 3,\n templateId: 1,\n labels: {\n front: {\n en: \"Upload front of ID card\",\n fr: \"Téléversez le recto de votre carte d'identité\"\n },\n back: {\n en: \"Upload back of ID card\",\n fr: \"Téléversez le verso de votre carte d'identité\"\n },\n },\n instructions: {\n front: {\n en: \"Take a clear photo of the front of your ID.\",\n fr: \"Prenez une photo nette du recto de votre pièce.\"\n },\n back: {\n en: \"Take a clear photo of the back of your ID.\",\n fr: \"Prenez une photo nette du verso de votre pièce.\"\n },\n },\n ui: {\n front: {\n icon: \"id-card-icon.png\",\n themeColor: \"#2DBD60\",\n buttonText: { en: \"Next\", fr: \"Suivant\" }\n },\n back: {\n icon: \"id-card-icon.png\",\n themeColor: \"#2DBD60\",\n buttonText: { en: \"Next\", fr: \"Suivant\" }\n },\n },\n config: {\n sides: [\"front\", \"back\"],\n allowed_formats: [\"jpg\", \"png\"],\n max_size_mb: 5,\n document_types: [\"drivers_licence\", \"passport\", \"drivers_licence\", \"national_id\"],\n\n } as const\n },\n {\n id: 3,\n type: \"selfie\" as const,\n order: 5,\n templateId: 1,\n labels: {\n en: \"Take selfies from different angles\",\n fr: \"Prenez des selfies sous différents angles\"\n },\n instructions: {\n en: \"Take selfies from front, left, and right angles.\",\n fr: \"Prenez des selfies de face, profil gauche et profil droit.\"\n },\n ui: {\n icon: \"selfie-icon.png\",\n themeColor: \"#2DBD60\",\n buttonText: { en: \"Next\", fr: \"Suivant\" }\n },\n config: {\n liveness_check: true,\n max_attempts: 3,\n orientations: [\"center\", \"left\", \"right\"]\n } as const\n },\n ]\n};\n\n\nexport interface TemplateKYCExampleProps {\n onComplete: (data: VerificationState) => void;\n onCancel: () => void;\n onError: (error: string) => void;\n language: string;\n API_KEY?: string;\n templateId?: string;\n template?: KYCTemplate;\n env?: KycEnvironment; // Flow execution: PRODUCTION (full AI) or SANDBOX (skip AI)\n serverEnv?: BackendEnvironment; // Backend to call: PRODUCTION or TEST (API URL)\n existingSessionId?: string;\n initialComponentIndex?: number;\n initialCountryResume?: { code: string; documentType: string; region?: string };\n referenceId?: string;\n onSessionSave?: (sessionId: string) => void;\n}\n\nexport function TemplateKYCExample({ \n onComplete, \n onCancel, \n onError, \n language, \n API_KEY, \n templateId, \n template, \n env = 'PRODUCTION', \n serverEnv, \n existingSessionId, \n initialComponentIndex, \n initialCountryResume, \n referenceId, \n onSessionSave \n}: TemplateKYCExampleProps): JSX.Element { // <--- Explicit Return Type\n\n const handleComplete = (data: VerificationState) => {\n console.log('KYC Template completed with data:', data);\n onComplete(data);\n // Ici vous pouvez envoyer les données à votre API\n };\n\n const handleCancel = () => {\n console.log('KYC Template flow cancelled');\n onCancel();\n };\n\n const handleError = (error: string) => {\n console.error('KYC Template error:', error);\n onError(error);\n };\n\n // Transform backend template to SDK format\n // Determine which template to use: prefer templateId for dynamic loading, then template prop, then fallback to hardcoded\n const templateToUse = templateId ? undefined : (template || advancedVerificationTemplate);\n\n return (\n <SafeAreaView style={{ flex: 1, paddingVertical: 25 }}>\n <View style={{ flex: 1 }}>\n <TemplateKYCFlow\n template={templateToUse}\n templateId={templateId}\n onComplete={handleComplete}\n onError={handleError}\n onCancel={handleCancel}\n language={language} // ou \"en\" pour l'anglais\n API_KEY={API_KEY}\n env={env}\n serverEnv={serverEnv}\n existingSessionId={existingSessionId}\n initialComponentIndex={initialComponentIndex}\n initialCountryResume={initialCountryResume}\n referenceId={referenceId}\n onSessionSave={onSessionSave}\n />\n </View>\n </SafeAreaView>\n );\n}\n\n"]}
|
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
// Default configuration - can be overridden via environment variables
|
|
6
6
|
const DEFAULT_CONFIG = {
|
|
7
7
|
domains: [
|
|
8
|
-
'
|
|
9
|
-
'www.
|
|
10
|
-
'admin.
|
|
11
|
-
'dashboard.
|
|
12
|
-
'preweb.
|
|
8
|
+
'sanctumkey.com',
|
|
9
|
+
'www.sanctumkey.com',
|
|
10
|
+
'admin.sanctumkey.com',
|
|
11
|
+
'dashboard.sanctumkey.com',
|
|
12
|
+
'preweb.sanctumkey.net',
|
|
13
13
|
// Add other trusted domains here
|
|
14
14
|
],
|
|
15
15
|
enforceHttps: true,
|
|
@@ -46,7 +46,7 @@ export const isDomainAllowed = (domain) => {
|
|
|
46
46
|
if (domain === allowedDomain) {
|
|
47
47
|
return true;
|
|
48
48
|
}
|
|
49
|
-
// Subdomain match (e.g., app.
|
|
49
|
+
// Subdomain match (e.g., app.SanctumKey.com matches SanctumKey.com)
|
|
50
50
|
if (domain.endsWith('.' + allowedDomain)) {
|
|
51
51
|
return true;
|
|
52
52
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"allowedDomains.js","sourceRoot":"","sources":["../../../src/config/allowedDomains.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,sEAAsE;AACtE,MAAM,cAAc,GAAwB;IAC1C,OAAO,EAAE;QACP,oBAAoB;QACpB,
|
|
1
|
+
{"version":3,"file":"allowedDomains.js","sourceRoot":"","sources":["../../../src/config/allowedDomains.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Allowed domains configuration for callback URL validation\n * These domains are permitted to receive KYC completion callbacks\n */\n\nexport interface AllowedDomainConfig {\n domains: string[];\n enforceHttps: boolean;\n allowLocalhost: boolean;\n}\n\n// Default configuration - can be overridden via environment variables\nconst DEFAULT_CONFIG: AllowedDomainConfig = {\n domains: [\n 'sanctumkey.com',\n 'www.sanctumkey.com',\n 'admin.sanctumkey.com',\n 'dashboard.sanctumkey.com',\n 'preweb.sanctumkey.net',\n // Add other trusted domains here\n ],\n enforceHttps: true,\n allowLocalhost: true, // Allow localhost for development\n};\n\n/**\n * Get allowed domains from environment or use defaults\n */\nexport const getAllowedDomainsConfig = (): AllowedDomainConfig => {\n // Check for environment variable override\n if (typeof window !== 'undefined' && (window as any).KYC_ALLOWED_DOMAINS) {\n const envDomains = (window as any).KYC_ALLOWED_DOMAINS;\n if (Array.isArray(envDomains)) {\n return {\n ...DEFAULT_CONFIG,\n domains: envDomains,\n };\n }\n }\n\n return DEFAULT_CONFIG;\n};\n\n/**\n * Check if a domain is in the allowed list\n */\nexport const isDomainAllowed = (domain: string): boolean => {\n const config = getAllowedDomainsConfig();\n\n // Allow localhost in development\n if (config.allowLocalhost && (domain === 'localhost' || domain.startsWith('127.0.0.1'))) {\n return true;\n }\n\n // Check if domain matches any in the allowed list\n return config.domains.some(allowedDomain => {\n // Exact match\n if (domain === allowedDomain) {\n return true;\n }\n\n // Subdomain match (e.g., app.SanctumKey.com matches SanctumKey.com)\n if (domain.endsWith('.' + allowedDomain)) {\n return true;\n }\n\n return false;\n });\n};\n\n/**\n * Validate if a URL is allowed for callback\n */\nexport const isCallbackUrlAllowed = (url: string): { allowed: boolean; reason?: string } => {\n try {\n // Check if valid URL\n new URL(url);\n // Allow all URLs for redirection as requested\n return { allowed: true };\n } catch (error) {\n return {\n allowed: false,\n reason: 'Invalid URL format',\n };\n }\n};\n\n/**\n * Generate a signature for the callback URL parameters\n * This can be used to verify the integrity of the callback\n */\nexport const generateCallbackSignature = async (\n params: Record<string, string>,\n secret?: string\n): Promise<string> => {\n // Only generate signature if secret is provided\n if (!secret) {\n return '';\n }\n\n // Sort params for consistent signature\n const sortedParams = Object.keys(params)\n .sort()\n .map(key => `${key}=${params[key]}`)\n .join('&');\n\n const data = `${sortedParams}:${secret}`;\n\n // Use Web Crypto API for signature generation\n if (typeof window !== 'undefined' && window.crypto && window.crypto.subtle) {\n try {\n const encoder = new TextEncoder();\n const dataBuffer = encoder.encode(data);\n const hashBuffer = await window.crypto.subtle.digest('SHA-256', dataBuffer);\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n const hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');\n return hashHex;\n } catch (error) {\n console.error('Error generating signature:', error);\n return '';\n }\n }\n\n // Fallback: simple hash for environments without Web Crypto API\n let hash = 0;\n for (let i = 0; i < data.length; i++) {\n const char = data.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash = hash & hash;\n }\n return Math.abs(hash).toString(16);\n};\n\n"]}
|
package/build/src/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export * from './
|
|
1
|
+
export * from './SanctumKeySdk.types';
|
|
2
2
|
export * from './types/KYC.types';
|
|
3
3
|
export * from './types/env.types';
|
|
4
|
-
export { TemplateKYCExample as
|
|
5
|
-
export { TemplateKYCExample as
|
|
4
|
+
export { TemplateKYCExample as LaunchSanctumKeyKYC } from './components/TemplateKYCExample';
|
|
5
|
+
export { TemplateKYCExample as LauchSanctumKeyKYC } from './components/TemplateKYCExample';
|
|
6
6
|
export { TemplateKYCFlow } from './components/TemplateKYCFlowRefactored';
|
|
7
7
|
export { default as templateService } from './modules/api/TemplateService';
|
|
8
8
|
export { transformBackendTemplateToSDK, validateTransformedTemplate } from './utils/template-transformer';
|
package/build/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AAItC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,mBAAmB,CAAC;AAGlC,OAAO,EAAE,kBAAkB,IAAI,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAE5F,OAAO,EAAE,kBAAkB,IAAI,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAG3F,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AAGzE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,6BAA6B,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAC1G,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAG9D,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAGvD,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC"}
|
package/build/src/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
export * from './
|
|
1
|
+
export * from './SanctumKeySdk.types';
|
|
2
2
|
// Export KYC types
|
|
3
3
|
export * from './types/KYC.types';
|
|
4
4
|
// Export Environment types
|
|
5
5
|
export * from './types/env.types';
|
|
6
|
-
export { TemplateKYCExample as
|
|
6
|
+
export { TemplateKYCExample as LaunchSanctumKeyKYC } from './components/TemplateKYCExample';
|
|
7
7
|
// Backward compatibility for existing integrations using the typo.
|
|
8
|
-
export { TemplateKYCExample as
|
|
8
|
+
export { TemplateKYCExample as LauchSanctumKeyKYC } from './components/TemplateKYCExample';
|
|
9
9
|
// Export Template Flow Components
|
|
10
10
|
export { TemplateKYCFlow } from './components/TemplateKYCFlowRefactored';
|
|
11
11
|
// Export Template Service and Utilities
|
package/build/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AAGtC,mBAAmB;AACnB,cAAc,mBAAmB,CAAC;AAElC,2BAA2B;AAC3B,cAAc,mBAAmB,CAAC;AAGlC,OAAO,EAAE,kBAAkB,IAAI,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC5F,mEAAmE;AACnE,OAAO,EAAE,kBAAkB,IAAI,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAE3F,kCAAkC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AAEzE,wCAAwC;AACxC,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,6BAA6B,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAC1G,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D,6BAA6B;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,4BAA4B;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC","sourcesContent":["export * from './SanctumKeySdk.types';\n\n\n// Export KYC types\nexport * from './types/KYC.types';\n\n// Export Environment types\nexport * from './types/env.types';\n\n\nexport { TemplateKYCExample as LaunchSanctumKeyKYC } from './components/TemplateKYCExample';\n// Backward compatibility for existing integrations using the typo.\nexport { TemplateKYCExample as LauchSanctumKeyKYC } from './components/TemplateKYCExample';\n\n// Export Template Flow Components\nexport { TemplateKYCFlow } from './components/TemplateKYCFlowRefactored';\n\n// Export Template Service and Utilities\nexport { default as templateService } from './modules/api/TemplateService';\nexport { transformBackendTemplateToSDK, validateTransformedTemplate } from './utils/template-transformer';\nexport { useTemplateLoader } from './hooks/useTemplateLoader';\n\n// Export Template Components\nexport { WelcomeTemplate } from './components/KYCElements/WelcomeTemplate';\nexport { EnhancedCameraView } from './components/EnhancedCameraView';\nexport { UnifiedCameraModule } from './modules/camera';\n\n// Export Web KYC Components\nexport { WebKYCEntry } from './web';\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KYCService.d.ts","sourceRoot":"","sources":["../../../../src/modules/api/KYCService.ts"],"names":[],"mappings":"AACA,OAAO,EAAyD,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAExH,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AAC1F,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAmBvD,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,UAAU,GAAG,SAAS,GAAG,iBAAiB,CAAC;CAC1D;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,qBAAqB,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;IACnD,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AAGD,qBAAa,UAAU;IACrB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO,CAAC,cAAc,
|
|
1
|
+
{"version":3,"file":"KYCService.d.ts","sourceRoot":"","sources":["../../../../src/modules/api/KYCService.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,11 +20,16 @@ export class KYCService {
|
|
|
20
20
|
baseURL;
|
|
21
21
|
apiKey;
|
|
22
22
|
// Additional service base URLs (fixed as per current infra)
|
|
23
|
-
faceServiceURL = 'https://face-infera.sanctumkey.com
|
|
24
|
-
textExtractionServiceURL = 'https://text-infera.sanctumkey.com
|
|
25
|
-
mrzServiceURL = 'https://mrz-infera.sanctumkey.com
|
|
26
|
-
barcodeServiceURL = 'https://kyc-engine.
|
|
23
|
+
faceServiceURL = 'https://face-infera.sanctumkey.com';
|
|
24
|
+
textExtractionServiceURL = 'https://text-infera.sanctumkey.com';
|
|
25
|
+
mrzServiceURL = 'https://mrz-infera.sanctumkey.com';
|
|
26
|
+
barcodeServiceURL = 'https://kyc-engine.SanctumKey.net:8000';
|
|
27
27
|
orientationServiceURL = 'http://18.188.180.154:8080';
|
|
28
|
+
// private faceServiceURL = 'https://kyc-engine.transfergratis.net:8000';
|
|
29
|
+
// private textExtractionServiceURL = 'https://kyc-engine.transfergratis.net:8006';
|
|
30
|
+
// private mrzServiceURL = 'https://kyc-engine.transfergratis.net:8002';
|
|
31
|
+
// private barcodeServiceURL = 'https://kyc-engine.transfergratis.net:8000';
|
|
32
|
+
// private orientationServiceURL = 'http://18.188.180.154:8080';
|
|
28
33
|
constructor(baseURL, apiKey) {
|
|
29
34
|
this.baseURL = baseURL;
|
|
30
35
|
this.apiKey = apiKey;
|