datakeen-session-react 1.1.194 → 1.1.195-dev.10
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/LICENSE +218 -0
- package/README.md +1 -17
- package/dist/cjs/_virtual/_commonjsHelpers.js +0 -1
- package/dist/cjs/_virtual/heic2any.js +0 -1
- package/dist/cjs/_virtual/heic2any2.js +0 -1
- package/dist/cjs/assets/Face Scan Square.svg.js +0 -1
- package/dist/cjs/assets/Lightbulb.svg.js +0 -1
- package/dist/cjs/assets/Monitor Camera.svg.js +0 -1
- package/dist/cjs/assets/User Hands.svg.js +0 -1
- package/dist/cjs/assets/before-document.png.js +0 -1
- package/dist/cjs/assets/before-passport.png.js +0 -1
- package/dist/cjs/assets/before-photo.png.js +0 -1
- package/dist/cjs/assets/before-verso.png.js +0 -1
- package/dist/cjs/assets/check.svg.js +0 -1
- package/dist/cjs/assets/icons/shield_magic_link.svg.js +0 -1
- package/dist/cjs/assets/selfietake.svg.js +0 -1
- package/dist/cjs/components/DatakeenSession.js +0 -1
- package/dist/cjs/components/document-collection/DocumentCollection.js +0 -1
- package/dist/cjs/components/document-collection/DocumentCollectionIntroduction.js +0 -1
- package/dist/cjs/components/document-collection/DocumentCollectionMethodSelection.js +0 -1
- package/dist/cjs/components/document-collection/DocumentCollectionSelection.js +0 -1
- package/dist/cjs/components/document-collection/DocumentCollectionUpload.js +0 -1
- package/dist/cjs/components/document-collection/DocumentError.js +5 -2
- package/dist/cjs/components/document-collection/DocumentProcessing.js +13 -12
- package/dist/cjs/components/document-collection/DocumentSuccess.js +0 -1
- package/dist/cjs/components/document-video/DocumentVideoCapture.js +0 -1
- package/dist/cjs/components/document-video/DocumentVideoConfirmation.js +0 -1
- package/dist/cjs/components/document-video/document-video-flow/DocumentVideoFlow.js +0 -1
- package/dist/cjs/components/document-video/document-video-flow/DocumentVideoInstructions.js +0 -1
- package/dist/cjs/components/document-video/document-video-flow/DocumentVideoProcessing.js +9 -6
- package/dist/cjs/components/document-video/document-video-flow/DocumentVideoRecorder.js +0 -1
- package/dist/cjs/components/icons/ElectronicIcon.js +0 -1
- package/dist/cjs/components/icons/PoweredByIcon.js +0 -1
- package/dist/cjs/components/icons/PreIntroIcon.js +0 -1
- package/dist/cjs/components/icons/StartIcon.js +0 -1
- package/dist/cjs/components/id-check/BeforePhoto.js +0 -1
- package/dist/cjs/components/id-check/BeforeVersoPhoto.js +0 -1
- package/dist/cjs/components/id-check/CameraError.js +0 -1
- package/dist/cjs/components/id-check/CameraMask.js +0 -1
- package/dist/cjs/components/id-check/OrientationToggle.js +0 -1
- package/dist/cjs/components/id-check/Photo.js +0 -1
- package/dist/cjs/components/id-check/PhotoConfirmation.js +0 -1
- package/dist/cjs/components/id-check/PhotoPreview.js +0 -1
- package/dist/cjs/components/jdi/JDDWorkInProgress.js +0 -1
- package/dist/cjs/components/jdi/JDICountrySelection.js +0 -1
- package/dist/cjs/components/jdi/JDIDocumentSelection.js +0 -1
- package/dist/cjs/components/jdi/JDIDocumentUpload.js +0 -1
- package/dist/cjs/components/jdi/JDIError.js +5 -2
- package/dist/cjs/components/jdi/JDIPreIntroduction.js +0 -1
- package/dist/cjs/components/jdi/JDIProcessing.js +15 -15
- package/dist/cjs/components/jdi/JDISuccess.js +0 -1
- package/dist/cjs/components/legal-consent/LegalConsentNode.js +0 -1
- package/dist/cjs/components/nfc-scan/BiometricSymbol.js +0 -1
- package/dist/cjs/components/nfc-scan/NfcChipGate.js +0 -1
- package/dist/cjs/components/nfc-scan/NfcFallbackSurvey.js +0 -1
- package/dist/cjs/components/nfc-scan/NfcOnboardingNotice.js +0 -1
- package/dist/cjs/components/nfc-scan/NfcScanNode.js +0 -1
- package/dist/cjs/components/nfc-scan/NfcSuccessAnimation.js +0 -1
- package/dist/cjs/components/nfc-scan/PuceCniSymbol.js +0 -1
- package/dist/cjs/components/selfie/SelfieConfirmation.js +0 -1
- package/dist/cjs/components/selfie/Video.css.js +0 -1
- package/dist/cjs/components/selfie/Video.js +2 -3
- package/dist/cjs/components/selfie/VideoFixes.css.js +0 -1
- package/dist/cjs/components/selfie/VideoResetStyles.js +0 -1
- package/dist/cjs/components/selfie/hooks/useLiveFrameCapture.js +0 -1
- package/dist/cjs/components/selfie/hooks/useVideoRecorderStyles.js +0 -1
- package/dist/cjs/components/selfie/selfie-flow/InstructionsSelfie.js +0 -1
- package/dist/cjs/components/selfie/selfie-flow/SelfieFlow.js +2 -3
- package/dist/cjs/components/selfie/selfie-flow/SelfiePreIntroduction.js +0 -1
- package/dist/cjs/components/selfie/selfie-flow/SelfieProcessing.js +5 -2
- package/dist/cjs/components/selfie/selfie-flow/SelfieRecorder.js +123 -14
- package/dist/cjs/components/selfie/utils/selfieCaptureUtils.js +0 -1
- package/dist/cjs/components/selfie/utils/unisseyStrings.js +0 -1
- package/dist/cjs/components/selfie/utils/videoElementStyles.js +0 -1
- package/dist/cjs/components/session/DocumentCheck.js +0 -1
- package/dist/cjs/components/session/EndFlow.js +15 -6
- package/dist/cjs/components/session/MobileRedirect.js +0 -1
- package/dist/cjs/components/session/PdfGeneration.js +0 -1
- package/dist/cjs/components/session/Selfie.js +1 -2
- package/dist/cjs/components/session/SessionContent.js +5 -4
- package/dist/cjs/components/session/SessionExpired.js +0 -1
- package/dist/cjs/components/session/StartSession.js +4 -30
- package/dist/cjs/components/session/UserInputForm/AddressFields.js +0 -1
- package/dist/cjs/components/session/UserInputForm/ContactFields.js +0 -1
- package/dist/cjs/components/session/UserInputForm/CustomFormFields.js +2 -11
- package/dist/cjs/components/session/UserInputForm/DatePickerField.js +0 -1
- package/dist/cjs/components/session/UserInputForm/IdentityFields.js +0 -1
- package/dist/cjs/components/session/UserInputForm/LegalEntityFields.js +0 -1
- package/dist/cjs/components/session/UserInputForm/LegalRepFields.js +0 -1
- package/dist/cjs/components/session/UserInputForm/NationalityField.js +0 -1
- package/dist/cjs/components/session/UserInputForm.js +4 -2
- package/dist/cjs/components/session/VideoWorkInProgress.js +0 -1
- package/dist/cjs/components/session/controleJdiPolicy.js +0 -1
- package/dist/cjs/components/session/endScreenIcons.js +0 -1
- package/dist/cjs/components/signature-electronic/DocusealSignature.js +0 -1
- package/dist/cjs/components/signature-electronic/SignatureElectronic.js +0 -1
- package/dist/cjs/components/signature-electronic/SignatureElectronicIntroduction.js +0 -1
- package/dist/cjs/components/signature-electronic/SignedDocumentPreview.js +0 -1
- package/dist/cjs/components/start-flow/Start.js +6 -7
- package/dist/cjs/components/states/ErrorState.js +0 -1
- package/dist/cjs/components/states/LoadingState.js +0 -1
- package/dist/cjs/components/states/NoSessionIdState.js +0 -1
- package/dist/cjs/components/template/ComplementaryMandateNodeHandler.js +35 -0
- package/dist/cjs/components/template/ConditionNodeHandler.js +0 -1
- package/dist/cjs/components/template/ExternalVerificationNodeHandler.js +82 -39
- package/dist/cjs/components/template/TemplateNodeRenderer.js +8 -4
- package/dist/cjs/components/template/conditionNodePolicy.js +0 -1
- package/dist/cjs/components/ui/Body.js +0 -1
- package/dist/cjs/components/ui/Button.js +0 -1
- package/dist/cjs/components/ui/ButtonDesktop.js +0 -1
- package/dist/cjs/components/ui/Card.js +0 -1
- package/dist/cjs/components/ui/MobilePageLayout.js +0 -1
- package/dist/cjs/components/ui/PDFPreview.js +0 -1
- package/dist/cjs/components/ui/PageActions.js +0 -1
- package/dist/cjs/components/ui/Paper.js +0 -1
- package/dist/cjs/components/ui/PoweredBy.js +0 -1
- package/dist/cjs/components/ui/QRCodeDisplay.js +0 -1
- package/dist/cjs/components/ui/SelectComponent.js +0 -1
- package/dist/cjs/components/ui/Subtitle.js +0 -1
- package/dist/cjs/components/ui/Title.js +0 -1
- package/dist/cjs/config/env.js +0 -1
- package/dist/cjs/constants/userInputForm.js +0 -1
- package/dist/cjs/context/ConfigContext.js +0 -1
- package/dist/cjs/context/DocumentContext.js +0 -1
- package/dist/cjs/context/SessionContext.js +0 -1
- package/dist/cjs/hooks/useClientInfo.js +0 -1
- package/dist/cjs/hooks/useCountryOptions.js +0 -1
- package/dist/cjs/hooks/useI18n.js +0 -1
- package/dist/cjs/hooks/useIsMobile.js +0 -1
- package/dist/cjs/hooks/useNfcSseStatus.js +0 -1
- package/dist/cjs/hooks/useRouteCSS.js +0 -1
- package/dist/cjs/hooks/useSession.js +0 -1
- package/dist/cjs/hooks/useSessionData.js +10 -6
- package/dist/cjs/hooks/useStepCSS.js +0 -1
- package/dist/cjs/hooks/useStepNavigation.js +25 -6
- package/dist/cjs/hooks/useTemplateLoader.js +0 -1
- package/dist/cjs/hooks/useUserInputForm.js +65 -7
- package/dist/cjs/i18n/country/country.en.json.js +0 -1
- package/dist/cjs/i18n/country/country.fr.json.js +0 -1
- package/dist/cjs/i18n/country/country.iso2.en.json.js +0 -1
- package/dist/cjs/i18n/country/country.iso2.fr.json.js +0 -1
- package/dist/cjs/i18n/documents/documents.en.json.js +0 -1
- package/dist/cjs/i18n/documents/documents.fr.json.js +0 -1
- package/dist/cjs/i18n/en.json.js +28 -28
- package/dist/cjs/i18n/es.json.js +28 -28
- package/dist/cjs/i18n/fr.json.js +28 -28
- package/dist/cjs/i18n/index.js +0 -1
- package/dist/cjs/index.css.js +0 -1
- package/dist/cjs/index.js +0 -1
- package/dist/cjs/node_modules/date-fns/locale/_lib/buildFormatLongFn.js +0 -1
- package/dist/cjs/node_modules/date-fns/locale/_lib/buildLocalizeFn.js +0 -1
- package/dist/cjs/node_modules/date-fns/locale/_lib/buildMatchFn.js +0 -1
- package/dist/cjs/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js +0 -1
- package/dist/cjs/node_modules/date-fns/locale/en-US/_lib/formatDistance.js +0 -1
- package/dist/cjs/node_modules/date-fns/locale/en-US/_lib/formatLong.js +0 -1
- package/dist/cjs/node_modules/date-fns/locale/en-US/_lib/formatRelative.js +0 -1
- package/dist/cjs/node_modules/date-fns/locale/en-US/_lib/localize.js +0 -1
- package/dist/cjs/node_modules/date-fns/locale/en-US/_lib/match.js +0 -1
- package/dist/cjs/node_modules/date-fns/locale/en-US.js +0 -1
- package/dist/cjs/node_modules/date-fns/locale/fr/_lib/formatDistance.js +0 -1
- package/dist/cjs/node_modules/date-fns/locale/fr/_lib/formatLong.js +0 -1
- package/dist/cjs/node_modules/date-fns/locale/fr/_lib/formatRelative.js +0 -1
- package/dist/cjs/node_modules/date-fns/locale/fr/_lib/localize.js +0 -1
- package/dist/cjs/node_modules/date-fns/locale/fr/_lib/match.js +0 -1
- package/dist/cjs/node_modules/date-fns/locale/fr.js +0 -1
- package/dist/cjs/node_modules/heic2any/dist/heic2any.js +0 -1
- package/dist/cjs/node_modules/pdfjs-dist/legacy/build/pdf.js +0 -1
- package/dist/cjs/node_modules/pdfjs-dist/legacy/build/pdf.worker.js +0 -1
- package/dist/cjs/node_modules/style-inject/dist/style-inject.es.js +0 -1
- package/dist/cjs/node_modules/tslib/tslib.es6.js +0 -1
- package/dist/cjs/providers/I18nProvider.js +0 -1
- package/dist/cjs/services/analysis.js +40 -27
- package/dist/cjs/services/api.js +0 -1
- package/dist/cjs/services/auditTrailService.js +0 -1
- package/dist/cjs/services/cameraService.js +0 -1
- package/dist/cjs/services/documentEdgeDetectionService.js +0 -1
- package/dist/cjs/services/documentTemplate.js +0 -1
- package/dist/cjs/services/iadService.js +29 -0
- package/dist/cjs/services/integrationService.js +0 -1
- package/dist/cjs/services/pollingService.js +0 -1
- package/dist/cjs/services/professionalImageQuality.js +0 -1
- package/dist/cjs/services/retryService.js +0 -1
- package/dist/cjs/services/sessionCredentials.js +0 -1
- package/dist/cjs/services/sessionMemoryStore.js +0 -1
- package/dist/cjs/services/sessionService.js +33 -7
- package/dist/cjs/services/utils.js +0 -1
- package/dist/cjs/types/session.js +0 -1
- package/dist/cjs/utils/analysisErrors.js +33 -13
- package/dist/cjs/utils/apiAnalysis.js +0 -1
- package/dist/cjs/utils/conditionEvaluator.js +0 -1
- package/dist/cjs/utils/countryFlags.js +0 -1
- package/dist/cjs/utils/cssLoader.js +0 -1
- package/dist/cjs/utils/customFieldIds.js +0 -1
- package/dist/cjs/utils/customFieldLocks.js +27 -0
- package/dist/cjs/utils/customFieldValidation.js +44 -2
- package/dist/cjs/utils/documentLabels.js +0 -1
- package/dist/cjs/utils/europeanCountries.js +0 -1
- package/dist/cjs/utils/fileConverter.js +0 -1
- package/dist/cjs/utils/imageConverter.js +0 -1
- package/dist/cjs/utils/imageProcessing.js +0 -1
- package/dist/cjs/utils/isMobileDevice.js +0 -1
- package/dist/cjs/utils/isoCountryCodes.js +0 -1
- package/dist/cjs/utils/jdiCodes.js +0 -1
- package/dist/cjs/utils/labelToKey.js +0 -1
- package/dist/cjs/utils/listFieldUtils.js +0 -1
- package/dist/cjs/utils/mimeTypes.js +0 -1
- package/dist/cjs/utils/navigation.js +0 -1
- package/dist/cjs/utils/renderInlineMarkdown.js +0 -1
- package/dist/cjs/utils/sessionStatus.js +27 -0
- package/dist/cjs/utils/userInputForm.js +0 -1
- package/dist/cjs/utils/utils.js +0 -1
- package/dist/cjs/utils/validationUtils.js +0 -1
- package/dist/esm/_virtual/_commonjsHelpers.js +0 -1
- package/dist/esm/_virtual/heic2any.js +0 -1
- package/dist/esm/_virtual/heic2any2.js +0 -1
- package/dist/esm/assets/Face Scan Square.svg.js +0 -1
- package/dist/esm/assets/Lightbulb.svg.js +0 -1
- package/dist/esm/assets/Monitor Camera.svg.js +0 -1
- package/dist/esm/assets/User Hands.svg.js +0 -1
- package/dist/esm/assets/before-document.png.js +0 -1
- package/dist/esm/assets/before-passport.png.js +0 -1
- package/dist/esm/assets/before-photo.png.js +0 -1
- package/dist/esm/assets/before-verso.png.js +0 -1
- package/dist/esm/assets/check.svg.js +0 -1
- package/dist/esm/assets/icons/shield_magic_link.svg.js +0 -1
- package/dist/esm/assets/selfietake.svg.js +0 -1
- package/dist/esm/components/DatakeenSession.js +0 -1
- package/dist/esm/components/document-collection/DocumentCollection.js +0 -1
- package/dist/esm/components/document-collection/DocumentCollectionIntroduction.js +0 -1
- package/dist/esm/components/document-collection/DocumentCollectionMethodSelection.js +0 -1
- package/dist/esm/components/document-collection/DocumentCollectionSelection.js +0 -1
- package/dist/esm/components/document-collection/DocumentCollectionUpload.js +0 -1
- package/dist/esm/components/document-collection/DocumentError.js +5 -2
- package/dist/esm/components/document-collection/DocumentProcessing.js +14 -13
- package/dist/esm/components/document-collection/DocumentSuccess.js +0 -1
- package/dist/esm/components/document-video/DocumentVideoCapture.js +0 -1
- package/dist/esm/components/document-video/DocumentVideoConfirmation.js +0 -1
- package/dist/esm/components/document-video/document-video-flow/DocumentVideoFlow.js +0 -1
- package/dist/esm/components/document-video/document-video-flow/DocumentVideoInstructions.js +0 -1
- package/dist/esm/components/document-video/document-video-flow/DocumentVideoProcessing.js +9 -6
- package/dist/esm/components/document-video/document-video-flow/DocumentVideoRecorder.js +0 -1
- package/dist/esm/components/icons/ElectronicIcon.js +0 -1
- package/dist/esm/components/icons/PoweredByIcon.js +0 -1
- package/dist/esm/components/icons/PreIntroIcon.js +0 -1
- package/dist/esm/components/icons/StartIcon.js +0 -1
- package/dist/esm/components/id-check/BeforePhoto.js +0 -1
- package/dist/esm/components/id-check/BeforeVersoPhoto.js +0 -1
- package/dist/esm/components/id-check/CameraError.js +0 -1
- package/dist/esm/components/id-check/CameraMask.js +0 -1
- package/dist/esm/components/id-check/OrientationToggle.js +0 -1
- package/dist/esm/components/id-check/Photo.js +0 -1
- package/dist/esm/components/id-check/PhotoConfirmation.js +0 -1
- package/dist/esm/components/id-check/PhotoPreview.js +0 -1
- package/dist/esm/components/jdi/JDDWorkInProgress.js +0 -1
- package/dist/esm/components/jdi/JDICountrySelection.js +0 -1
- package/dist/esm/components/jdi/JDIDocumentSelection.js +0 -1
- package/dist/esm/components/jdi/JDIDocumentUpload.js +0 -1
- package/dist/esm/components/jdi/JDIError.js +5 -2
- package/dist/esm/components/jdi/JDIPreIntroduction.js +0 -1
- package/dist/esm/components/jdi/JDIProcessing.js +16 -16
- package/dist/esm/components/jdi/JDISuccess.js +0 -1
- package/dist/esm/components/legal-consent/LegalConsentNode.js +0 -1
- package/dist/esm/components/nfc-scan/BiometricSymbol.js +0 -1
- package/dist/esm/components/nfc-scan/NfcChipGate.js +0 -1
- package/dist/esm/components/nfc-scan/NfcFallbackSurvey.js +0 -1
- package/dist/esm/components/nfc-scan/NfcOnboardingNotice.js +0 -1
- package/dist/esm/components/nfc-scan/NfcScanNode.js +0 -1
- package/dist/esm/components/nfc-scan/NfcSuccessAnimation.js +0 -1
- package/dist/esm/components/nfc-scan/PuceCniSymbol.js +0 -1
- package/dist/esm/components/selfie/SelfieConfirmation.js +0 -1
- package/dist/esm/components/selfie/Video.css.js +0 -1
- package/dist/esm/components/selfie/Video.js +2 -3
- package/dist/esm/components/selfie/VideoFixes.css.js +0 -1
- package/dist/esm/components/selfie/VideoResetStyles.js +0 -1
- package/dist/esm/components/selfie/hooks/useLiveFrameCapture.js +0 -1
- package/dist/esm/components/selfie/hooks/useVideoRecorderStyles.js +0 -1
- package/dist/esm/components/selfie/selfie-flow/InstructionsSelfie.js +0 -1
- package/dist/esm/components/selfie/selfie-flow/SelfieFlow.js +2 -3
- package/dist/esm/components/selfie/selfie-flow/SelfiePreIntroduction.js +0 -1
- package/dist/esm/components/selfie/selfie-flow/SelfieProcessing.js +5 -2
- package/dist/esm/components/selfie/selfie-flow/SelfieRecorder.js +124 -15
- package/dist/esm/components/selfie/utils/selfieCaptureUtils.js +0 -1
- package/dist/esm/components/selfie/utils/unisseyStrings.js +0 -1
- package/dist/esm/components/selfie/utils/videoElementStyles.js +0 -1
- package/dist/esm/components/session/DocumentCheck.js +0 -1
- package/dist/esm/components/session/EndFlow.js +15 -6
- package/dist/esm/components/session/MobileRedirect.js +0 -1
- package/dist/esm/components/session/PdfGeneration.js +0 -1
- package/dist/esm/components/session/Selfie.js +1 -2
- package/dist/esm/components/session/SessionContent.js +5 -4
- package/dist/esm/components/session/SessionExpired.js +0 -1
- package/dist/esm/components/session/StartSession.js +5 -31
- package/dist/esm/components/session/UserInputForm/AddressFields.js +0 -1
- package/dist/esm/components/session/UserInputForm/ContactFields.js +0 -1
- package/dist/esm/components/session/UserInputForm/CustomFormFields.js +1 -10
- package/dist/esm/components/session/UserInputForm/DatePickerField.js +0 -1
- package/dist/esm/components/session/UserInputForm/IdentityFields.js +0 -1
- package/dist/esm/components/session/UserInputForm/LegalEntityFields.js +0 -1
- package/dist/esm/components/session/UserInputForm/LegalRepFields.js +0 -1
- package/dist/esm/components/session/UserInputForm/NationalityField.js +0 -1
- package/dist/esm/components/session/UserInputForm.js +4 -2
- package/dist/esm/components/session/VideoWorkInProgress.js +0 -1
- package/dist/esm/components/session/controleJdiPolicy.js +0 -1
- package/dist/esm/components/session/endScreenIcons.js +0 -1
- package/dist/esm/components/signature-electronic/DocusealSignature.js +0 -1
- package/dist/esm/components/signature-electronic/SignatureElectronic.js +0 -1
- package/dist/esm/components/signature-electronic/SignatureElectronicIntroduction.js +0 -1
- package/dist/esm/components/signature-electronic/SignedDocumentPreview.js +0 -1
- package/dist/esm/components/start-flow/Start.js +6 -7
- package/dist/esm/components/states/ErrorState.js +0 -1
- package/dist/esm/components/states/LoadingState.js +0 -1
- package/dist/esm/components/states/NoSessionIdState.js +0 -1
- package/dist/esm/components/template/ComplementaryMandateNodeHandler.js +31 -0
- package/dist/esm/components/template/ConditionNodeHandler.js +0 -1
- package/dist/esm/components/template/ExternalVerificationNodeHandler.js +82 -39
- package/dist/esm/components/template/TemplateNodeRenderer.js +8 -4
- package/dist/esm/components/template/conditionNodePolicy.js +0 -1
- package/dist/esm/components/ui/Body.js +0 -1
- package/dist/esm/components/ui/Button.js +0 -1
- package/dist/esm/components/ui/ButtonDesktop.js +0 -1
- package/dist/esm/components/ui/Card.js +0 -1
- package/dist/esm/components/ui/MobilePageLayout.js +0 -1
- package/dist/esm/components/ui/PDFPreview.js +0 -1
- package/dist/esm/components/ui/PageActions.js +0 -1
- package/dist/esm/components/ui/Paper.js +0 -1
- package/dist/esm/components/ui/PoweredBy.js +0 -1
- package/dist/esm/components/ui/QRCodeDisplay.js +0 -1
- package/dist/esm/components/ui/SelectComponent.js +0 -1
- package/dist/esm/components/ui/Subtitle.js +0 -1
- package/dist/esm/components/ui/Title.js +0 -1
- package/dist/esm/config/env.js +0 -1
- package/dist/esm/constants/userInputForm.js +0 -1
- package/dist/esm/context/ConfigContext.js +0 -1
- package/dist/esm/context/DocumentContext.js +0 -1
- package/dist/esm/context/SessionContext.js +0 -1
- package/dist/esm/hooks/useClientInfo.js +0 -1
- package/dist/esm/hooks/useCountryOptions.js +0 -1
- package/dist/esm/hooks/useI18n.js +0 -1
- package/dist/esm/hooks/useIsMobile.js +0 -1
- package/dist/esm/hooks/useNfcSseStatus.js +0 -1
- package/dist/esm/hooks/useRouteCSS.js +0 -1
- package/dist/esm/hooks/useSession.js +0 -1
- package/dist/esm/hooks/useSessionData.js +10 -6
- package/dist/esm/hooks/useStepCSS.js +0 -1
- package/dist/esm/hooks/useStepNavigation.js +23 -4
- package/dist/esm/hooks/useTemplateLoader.js +0 -1
- package/dist/esm/hooks/useUserInputForm.js +66 -8
- package/dist/esm/i18n/country/country.en.json.js +0 -1
- package/dist/esm/i18n/country/country.fr.json.js +0 -1
- package/dist/esm/i18n/country/country.iso2.en.json.js +0 -1
- package/dist/esm/i18n/country/country.iso2.fr.json.js +0 -1
- package/dist/esm/i18n/documents/documents.en.json.js +0 -1
- package/dist/esm/i18n/documents/documents.fr.json.js +0 -1
- package/dist/esm/i18n/en.json.js +28 -28
- package/dist/esm/i18n/es.json.js +28 -28
- package/dist/esm/i18n/fr.json.js +28 -28
- package/dist/esm/i18n/index.js +0 -1
- package/dist/esm/index.css.js +0 -1
- package/dist/esm/index.js +0 -1
- package/dist/esm/node_modules/date-fns/locale/_lib/buildFormatLongFn.js +0 -1
- package/dist/esm/node_modules/date-fns/locale/_lib/buildLocalizeFn.js +0 -1
- package/dist/esm/node_modules/date-fns/locale/_lib/buildMatchFn.js +0 -1
- package/dist/esm/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js +0 -1
- package/dist/esm/node_modules/date-fns/locale/en-US/_lib/formatDistance.js +0 -1
- package/dist/esm/node_modules/date-fns/locale/en-US/_lib/formatLong.js +0 -1
- package/dist/esm/node_modules/date-fns/locale/en-US/_lib/formatRelative.js +0 -1
- package/dist/esm/node_modules/date-fns/locale/en-US/_lib/localize.js +0 -1
- package/dist/esm/node_modules/date-fns/locale/en-US/_lib/match.js +0 -1
- package/dist/esm/node_modules/date-fns/locale/en-US.js +0 -1
- package/dist/esm/node_modules/date-fns/locale/fr/_lib/formatDistance.js +0 -1
- package/dist/esm/node_modules/date-fns/locale/fr/_lib/formatLong.js +0 -1
- package/dist/esm/node_modules/date-fns/locale/fr/_lib/formatRelative.js +0 -1
- package/dist/esm/node_modules/date-fns/locale/fr/_lib/localize.js +0 -1
- package/dist/esm/node_modules/date-fns/locale/fr/_lib/match.js +0 -1
- package/dist/esm/node_modules/date-fns/locale/fr.js +0 -1
- package/dist/esm/node_modules/heic2any/dist/heic2any.js +0 -1
- package/dist/esm/node_modules/pdfjs-dist/legacy/build/pdf.js +0 -1
- package/dist/esm/node_modules/pdfjs-dist/legacy/build/pdf.worker.js +0 -1
- package/dist/esm/node_modules/style-inject/dist/style-inject.es.js +0 -1
- package/dist/esm/node_modules/tslib/tslib.es6.js +0 -1
- package/dist/esm/providers/I18nProvider.js +0 -1
- package/dist/esm/services/analysis.js +40 -27
- package/dist/esm/services/api.js +0 -1
- package/dist/esm/services/auditTrailService.js +0 -1
- package/dist/esm/services/cameraService.js +0 -1
- package/dist/esm/services/documentEdgeDetectionService.js +0 -1
- package/dist/esm/services/documentTemplate.js +0 -1
- package/dist/esm/services/iadService.js +27 -0
- package/dist/esm/services/integrationService.js +0 -1
- package/dist/esm/services/pollingService.js +0 -1
- package/dist/esm/services/professionalImageQuality.js +0 -1
- package/dist/esm/services/retryService.js +0 -1
- package/dist/esm/services/sessionCredentials.js +0 -1
- package/dist/esm/services/sessionMemoryStore.js +0 -1
- package/dist/esm/services/sessionService.js +33 -8
- package/dist/esm/services/utils.js +0 -1
- package/dist/esm/types/session.js +0 -1
- package/dist/esm/utils/analysisErrors.js +30 -13
- package/dist/esm/utils/apiAnalysis.js +0 -1
- package/dist/esm/utils/conditionEvaluator.js +0 -1
- package/dist/esm/utils/countryFlags.js +0 -1
- package/dist/esm/utils/cssLoader.js +0 -1
- package/dist/esm/utils/customFieldIds.js +0 -1
- package/dist/esm/utils/customFieldLocks.js +24 -0
- package/dist/esm/utils/customFieldValidation.js +44 -3
- package/dist/esm/utils/documentLabels.js +0 -1
- package/dist/esm/utils/europeanCountries.js +0 -1
- package/dist/esm/utils/fileConverter.js +0 -1
- package/dist/esm/utils/imageConverter.js +0 -1
- package/dist/esm/utils/imageProcessing.js +0 -1
- package/dist/esm/utils/isMobileDevice.js +0 -1
- package/dist/esm/utils/isoCountryCodes.js +0 -1
- package/dist/esm/utils/jdiCodes.js +0 -1
- package/dist/esm/utils/labelToKey.js +0 -1
- package/dist/esm/utils/listFieldUtils.js +0 -1
- package/dist/esm/utils/mimeTypes.js +0 -1
- package/dist/esm/utils/navigation.js +0 -1
- package/dist/esm/utils/renderInlineMarkdown.js +0 -1
- package/dist/esm/utils/sessionStatus.js +25 -0
- package/dist/esm/utils/userInputForm.js +0 -1
- package/dist/esm/utils/utils.js +0 -1
- package/dist/esm/utils/validationUtils.js +0 -1
- package/package.json +9 -2
- package/.gitlab/issue_templates/bug.md +0 -14
- package/.gitlab/issue_templates/feature.md +0 -11
- package/.gitlab/issue_templates/task.md +0 -11
- package/.gitlab/merge_request_templates/default.md +0 -15
- package/.gitlab/merge_request_templates/hotfix.md +0 -15
- package/.gitlab-ci.yml +0 -290
- package/CLAUDE.md +0 -233
- package/__mocks__/@unissey-web/sdk-react.js +0 -17
- package/__mocks__/fileMock.js +0 -1
- package/__mocks__/pdfjs-dist/legacy/build/pdf.js +0 -5
- package/__mocks__/pdfjs-dist/legacy/build/pdf.worker.js +0 -1
- package/assets/logo.svg +0 -56
- package/axios.install.md +0 -2
- package/babel.config.js +0 -15
- package/dist/cjs/_virtual/_commonjsHelpers.js.map +0 -1
- package/dist/cjs/_virtual/heic2any.js.map +0 -1
- package/dist/cjs/_virtual/heic2any2.js.map +0 -1
- package/dist/cjs/assets/Face Scan Square.svg.js.map +0 -1
- package/dist/cjs/assets/Lightbulb.svg.js.map +0 -1
- package/dist/cjs/assets/Monitor Camera.svg.js.map +0 -1
- package/dist/cjs/assets/User Hands.svg.js.map +0 -1
- package/dist/cjs/assets/before-document.png.js.map +0 -1
- package/dist/cjs/assets/before-passport.png.js.map +0 -1
- package/dist/cjs/assets/before-photo.png.js.map +0 -1
- package/dist/cjs/assets/before-verso.png.js.map +0 -1
- package/dist/cjs/assets/check.svg.js.map +0 -1
- package/dist/cjs/assets/icons/shield_magic_link.svg.js.map +0 -1
- package/dist/cjs/assets/selfietake.svg.js.map +0 -1
- package/dist/cjs/components/DatakeenSession.js.map +0 -1
- package/dist/cjs/components/document-collection/DocumentCollection.js.map +0 -1
- package/dist/cjs/components/document-collection/DocumentCollectionIntroduction.js.map +0 -1
- package/dist/cjs/components/document-collection/DocumentCollectionMethodSelection.js.map +0 -1
- package/dist/cjs/components/document-collection/DocumentCollectionSelection.js.map +0 -1
- package/dist/cjs/components/document-collection/DocumentCollectionUpload.js.map +0 -1
- package/dist/cjs/components/document-collection/DocumentError.js.map +0 -1
- package/dist/cjs/components/document-collection/DocumentProcessing.js.map +0 -1
- package/dist/cjs/components/document-collection/DocumentSuccess.js.map +0 -1
- package/dist/cjs/components/document-video/DocumentVideoCapture.js.map +0 -1
- package/dist/cjs/components/document-video/DocumentVideoConfirmation.js.map +0 -1
- package/dist/cjs/components/document-video/document-video-flow/DocumentVideoFlow.js.map +0 -1
- package/dist/cjs/components/document-video/document-video-flow/DocumentVideoInstructions.js.map +0 -1
- package/dist/cjs/components/document-video/document-video-flow/DocumentVideoProcessing.js.map +0 -1
- package/dist/cjs/components/document-video/document-video-flow/DocumentVideoRecorder.js.map +0 -1
- package/dist/cjs/components/icons/ElectronicIcon.js.map +0 -1
- package/dist/cjs/components/icons/PoweredByIcon.js.map +0 -1
- package/dist/cjs/components/icons/PreIntroIcon.js.map +0 -1
- package/dist/cjs/components/icons/StartIcon.js.map +0 -1
- package/dist/cjs/components/id-check/BeforePhoto.js.map +0 -1
- package/dist/cjs/components/id-check/BeforeVersoPhoto.js.map +0 -1
- package/dist/cjs/components/id-check/CameraError.js.map +0 -1
- package/dist/cjs/components/id-check/CameraMask.js.map +0 -1
- package/dist/cjs/components/id-check/OrientationToggle.js.map +0 -1
- package/dist/cjs/components/id-check/Photo.js.map +0 -1
- package/dist/cjs/components/id-check/PhotoConfirmation.js.map +0 -1
- package/dist/cjs/components/id-check/PhotoPreview.js.map +0 -1
- package/dist/cjs/components/jdi/JDDWorkInProgress.js.map +0 -1
- package/dist/cjs/components/jdi/JDICountrySelection.js.map +0 -1
- package/dist/cjs/components/jdi/JDIDocumentSelection.js.map +0 -1
- package/dist/cjs/components/jdi/JDIDocumentUpload.js.map +0 -1
- package/dist/cjs/components/jdi/JDIError.js.map +0 -1
- package/dist/cjs/components/jdi/JDIPreIntroduction.js.map +0 -1
- package/dist/cjs/components/jdi/JDIProcessing.js.map +0 -1
- package/dist/cjs/components/jdi/JDISuccess.js.map +0 -1
- package/dist/cjs/components/legal-consent/LegalConsentNode.js.map +0 -1
- package/dist/cjs/components/nfc-scan/BiometricSymbol.js.map +0 -1
- package/dist/cjs/components/nfc-scan/NfcChipGate.js.map +0 -1
- package/dist/cjs/components/nfc-scan/NfcFallbackSurvey.js.map +0 -1
- package/dist/cjs/components/nfc-scan/NfcOnboardingNotice.js.map +0 -1
- package/dist/cjs/components/nfc-scan/NfcScanNode.js.map +0 -1
- package/dist/cjs/components/nfc-scan/NfcSuccessAnimation.js.map +0 -1
- package/dist/cjs/components/nfc-scan/PuceCniSymbol.js.map +0 -1
- package/dist/cjs/components/selfie/SelfieConfirmation.js.map +0 -1
- package/dist/cjs/components/selfie/Video.css.js.map +0 -1
- package/dist/cjs/components/selfie/Video.js.map +0 -1
- package/dist/cjs/components/selfie/VideoFixes.css.js.map +0 -1
- package/dist/cjs/components/selfie/VideoResetStyles.js.map +0 -1
- package/dist/cjs/components/selfie/hooks/useLiveFrameCapture.js.map +0 -1
- package/dist/cjs/components/selfie/hooks/useVideoRecorderStyles.js.map +0 -1
- package/dist/cjs/components/selfie/selfie-flow/InstructionsSelfie.js.map +0 -1
- package/dist/cjs/components/selfie/selfie-flow/SelfieFlow.js.map +0 -1
- package/dist/cjs/components/selfie/selfie-flow/SelfiePreIntroduction.js.map +0 -1
- package/dist/cjs/components/selfie/selfie-flow/SelfieProcessing.js.map +0 -1
- package/dist/cjs/components/selfie/selfie-flow/SelfieRecorder.js.map +0 -1
- package/dist/cjs/components/selfie/utils/selfieCaptureUtils.js.map +0 -1
- package/dist/cjs/components/selfie/utils/unisseyStrings.js.map +0 -1
- package/dist/cjs/components/selfie/utils/videoElementStyles.js.map +0 -1
- package/dist/cjs/components/session/DocumentCheck.js.map +0 -1
- package/dist/cjs/components/session/EndFlow.js.map +0 -1
- package/dist/cjs/components/session/MobileRedirect.js.map +0 -1
- package/dist/cjs/components/session/PdfGeneration.js.map +0 -1
- package/dist/cjs/components/session/Selfie.js.map +0 -1
- package/dist/cjs/components/session/SessionContent.js.map +0 -1
- package/dist/cjs/components/session/SessionExpired.js.map +0 -1
- package/dist/cjs/components/session/StartSession.js.map +0 -1
- package/dist/cjs/components/session/UserInputForm/AddressFields.js.map +0 -1
- package/dist/cjs/components/session/UserInputForm/ContactFields.js.map +0 -1
- package/dist/cjs/components/session/UserInputForm/CustomFormFields.js.map +0 -1
- package/dist/cjs/components/session/UserInputForm/DatePickerField.js.map +0 -1
- package/dist/cjs/components/session/UserInputForm/IdentityFields.js.map +0 -1
- package/dist/cjs/components/session/UserInputForm/LegalEntityFields.js.map +0 -1
- package/dist/cjs/components/session/UserInputForm/LegalRepFields.js.map +0 -1
- package/dist/cjs/components/session/UserInputForm/NationalityField.js.map +0 -1
- package/dist/cjs/components/session/UserInputForm.js.map +0 -1
- package/dist/cjs/components/session/VideoWorkInProgress.js.map +0 -1
- package/dist/cjs/components/session/controleJdiPolicy.js.map +0 -1
- package/dist/cjs/components/session/endScreenIcons.js.map +0 -1
- package/dist/cjs/components/signature-electronic/DocusealSignature.js.map +0 -1
- package/dist/cjs/components/signature-electronic/SignatureElectronic.js.map +0 -1
- package/dist/cjs/components/signature-electronic/SignatureElectronicIntroduction.js.map +0 -1
- package/dist/cjs/components/signature-electronic/SignedDocumentPreview.js.map +0 -1
- package/dist/cjs/components/start-flow/CGU.js +0 -132
- package/dist/cjs/components/start-flow/CGU.js.map +0 -1
- package/dist/cjs/components/start-flow/Start.js.map +0 -1
- package/dist/cjs/components/states/ErrorState.js.map +0 -1
- package/dist/cjs/components/states/LoadingState.js.map +0 -1
- package/dist/cjs/components/states/NoSessionIdState.js.map +0 -1
- package/dist/cjs/components/template/ConditionNodeHandler.js.map +0 -1
- package/dist/cjs/components/template/ExternalVerificationNodeHandler.js.map +0 -1
- package/dist/cjs/components/template/TemplateNodeRenderer.js.map +0 -1
- package/dist/cjs/components/template/conditionNodePolicy.js.map +0 -1
- package/dist/cjs/components/ui/Body.js.map +0 -1
- package/dist/cjs/components/ui/Button.js.map +0 -1
- package/dist/cjs/components/ui/ButtonDesktop.js.map +0 -1
- package/dist/cjs/components/ui/Card.js.map +0 -1
- package/dist/cjs/components/ui/LanguageSelector.js +0 -46
- package/dist/cjs/components/ui/LanguageSelector.js.map +0 -1
- package/dist/cjs/components/ui/MobilePageLayout.js.map +0 -1
- package/dist/cjs/components/ui/PDFPreview.js.map +0 -1
- package/dist/cjs/components/ui/PageActions.js.map +0 -1
- package/dist/cjs/components/ui/Paper.js.map +0 -1
- package/dist/cjs/components/ui/PoweredBy.js.map +0 -1
- package/dist/cjs/components/ui/QRCodeDisplay.js.map +0 -1
- package/dist/cjs/components/ui/SelectComponent.js.map +0 -1
- package/dist/cjs/components/ui/Subtitle.js.map +0 -1
- package/dist/cjs/components/ui/Title.js.map +0 -1
- package/dist/cjs/config/env.js.map +0 -1
- package/dist/cjs/constants/userInputForm.js.map +0 -1
- package/dist/cjs/context/ConfigContext.js.map +0 -1
- package/dist/cjs/context/DocumentContext.js.map +0 -1
- package/dist/cjs/context/SessionContext.js.map +0 -1
- package/dist/cjs/hooks/useClientInfo.js.map +0 -1
- package/dist/cjs/hooks/useCountryOptions.js.map +0 -1
- package/dist/cjs/hooks/useI18n.js.map +0 -1
- package/dist/cjs/hooks/useIsMobile.js.map +0 -1
- package/dist/cjs/hooks/useNfcSseStatus.js.map +0 -1
- package/dist/cjs/hooks/useRouteCSS.js.map +0 -1
- package/dist/cjs/hooks/useSession.js.map +0 -1
- package/dist/cjs/hooks/useSessionData.js.map +0 -1
- package/dist/cjs/hooks/useStepCSS.js.map +0 -1
- package/dist/cjs/hooks/useStepNavigation.js.map +0 -1
- package/dist/cjs/hooks/useTemplateLoader.js.map +0 -1
- package/dist/cjs/hooks/useUserInputForm.js.map +0 -1
- package/dist/cjs/i18n/country/country.en.json.js.map +0 -1
- package/dist/cjs/i18n/country/country.fr.json.js.map +0 -1
- package/dist/cjs/i18n/country/country.iso2.en.json.js.map +0 -1
- package/dist/cjs/i18n/country/country.iso2.fr.json.js.map +0 -1
- package/dist/cjs/i18n/documents/documents.en.json.js.map +0 -1
- package/dist/cjs/i18n/documents/documents.fr.json.js.map +0 -1
- package/dist/cjs/i18n/en.json.js.map +0 -1
- package/dist/cjs/i18n/es.json.js.map +0 -1
- package/dist/cjs/i18n/fr.json.js.map +0 -1
- package/dist/cjs/i18n/index.js.map +0 -1
- package/dist/cjs/index.css.js.map +0 -1
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/node_modules/date-fns/locale/_lib/buildFormatLongFn.js.map +0 -1
- package/dist/cjs/node_modules/date-fns/locale/_lib/buildLocalizeFn.js.map +0 -1
- package/dist/cjs/node_modules/date-fns/locale/_lib/buildMatchFn.js.map +0 -1
- package/dist/cjs/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js.map +0 -1
- package/dist/cjs/node_modules/date-fns/locale/en-US/_lib/formatDistance.js.map +0 -1
- package/dist/cjs/node_modules/date-fns/locale/en-US/_lib/formatLong.js.map +0 -1
- package/dist/cjs/node_modules/date-fns/locale/en-US/_lib/formatRelative.js.map +0 -1
- package/dist/cjs/node_modules/date-fns/locale/en-US/_lib/localize.js.map +0 -1
- package/dist/cjs/node_modules/date-fns/locale/en-US/_lib/match.js.map +0 -1
- package/dist/cjs/node_modules/date-fns/locale/en-US.js.map +0 -1
- package/dist/cjs/node_modules/date-fns/locale/fr/_lib/formatDistance.js.map +0 -1
- package/dist/cjs/node_modules/date-fns/locale/fr/_lib/formatLong.js.map +0 -1
- package/dist/cjs/node_modules/date-fns/locale/fr/_lib/formatRelative.js.map +0 -1
- package/dist/cjs/node_modules/date-fns/locale/fr/_lib/localize.js.map +0 -1
- package/dist/cjs/node_modules/date-fns/locale/fr/_lib/match.js.map +0 -1
- package/dist/cjs/node_modules/date-fns/locale/fr.js.map +0 -1
- package/dist/cjs/node_modules/heic2any/dist/heic2any.js.map +0 -1
- package/dist/cjs/node_modules/pdfjs-dist/legacy/build/pdf.js.map +0 -1
- package/dist/cjs/node_modules/pdfjs-dist/legacy/build/pdf.worker.js.map +0 -1
- package/dist/cjs/node_modules/style-inject/dist/style-inject.es.js.map +0 -1
- package/dist/cjs/node_modules/tslib/tslib.es6.js.map +0 -1
- package/dist/cjs/providers/I18nProvider.js.map +0 -1
- package/dist/cjs/services/analysis.js.map +0 -1
- package/dist/cjs/services/api.js.map +0 -1
- package/dist/cjs/services/auditTrailService.js.map +0 -1
- package/dist/cjs/services/cameraService.js.map +0 -1
- package/dist/cjs/services/documentEdgeDetectionService.js.map +0 -1
- package/dist/cjs/services/documentTemplate.js.map +0 -1
- package/dist/cjs/services/integrationService.js.map +0 -1
- package/dist/cjs/services/pollingService.js.map +0 -1
- package/dist/cjs/services/professionalImageQuality.js.map +0 -1
- package/dist/cjs/services/retryService.js.map +0 -1
- package/dist/cjs/services/sessionCredentials.js.map +0 -1
- package/dist/cjs/services/sessionMemoryStore.js.map +0 -1
- package/dist/cjs/services/sessionService.js.map +0 -1
- package/dist/cjs/services/utils.js.map +0 -1
- package/dist/cjs/types/session.js.map +0 -1
- package/dist/cjs/utils/analysisErrors.js.map +0 -1
- package/dist/cjs/utils/apiAnalysis.js.map +0 -1
- package/dist/cjs/utils/conditionEvaluator.js.map +0 -1
- package/dist/cjs/utils/countryFlags.js.map +0 -1
- package/dist/cjs/utils/cssLoader.js.map +0 -1
- package/dist/cjs/utils/customFieldIds.js.map +0 -1
- package/dist/cjs/utils/customFieldValidation.js.map +0 -1
- package/dist/cjs/utils/documentLabels.js.map +0 -1
- package/dist/cjs/utils/europeanCountries.js.map +0 -1
- package/dist/cjs/utils/fileConverter.js.map +0 -1
- package/dist/cjs/utils/imageConverter.js.map +0 -1
- package/dist/cjs/utils/imageProcessing.js.map +0 -1
- package/dist/cjs/utils/isMobileDevice.js.map +0 -1
- package/dist/cjs/utils/isoCountryCodes.js.map +0 -1
- package/dist/cjs/utils/jdiCodes.js.map +0 -1
- package/dist/cjs/utils/labelToKey.js.map +0 -1
- package/dist/cjs/utils/languageFlags.js +0 -46
- package/dist/cjs/utils/languageFlags.js.map +0 -1
- package/dist/cjs/utils/listFieldUtils.js.map +0 -1
- package/dist/cjs/utils/mimeTypes.js.map +0 -1
- package/dist/cjs/utils/navigation.js.map +0 -1
- package/dist/cjs/utils/renderInlineMarkdown.js.map +0 -1
- package/dist/cjs/utils/userInputForm.js.map +0 -1
- package/dist/cjs/utils/utils.js.map +0 -1
- package/dist/cjs/utils/validationUtils.js.map +0 -1
- package/dist/esm/_virtual/_commonjsHelpers.js.map +0 -1
- package/dist/esm/_virtual/heic2any.js.map +0 -1
- package/dist/esm/_virtual/heic2any2.js.map +0 -1
- package/dist/esm/assets/Face Scan Square.svg.js.map +0 -1
- package/dist/esm/assets/Lightbulb.svg.js.map +0 -1
- package/dist/esm/assets/Monitor Camera.svg.js.map +0 -1
- package/dist/esm/assets/User Hands.svg.js.map +0 -1
- package/dist/esm/assets/before-document.png.js.map +0 -1
- package/dist/esm/assets/before-passport.png.js.map +0 -1
- package/dist/esm/assets/before-photo.png.js.map +0 -1
- package/dist/esm/assets/before-verso.png.js.map +0 -1
- package/dist/esm/assets/check.svg.js.map +0 -1
- package/dist/esm/assets/icons/shield_magic_link.svg.js.map +0 -1
- package/dist/esm/assets/selfietake.svg.js.map +0 -1
- package/dist/esm/components/DatakeenSession.js.map +0 -1
- package/dist/esm/components/document-collection/DocumentCollection.js.map +0 -1
- package/dist/esm/components/document-collection/DocumentCollectionIntroduction.js.map +0 -1
- package/dist/esm/components/document-collection/DocumentCollectionMethodSelection.js.map +0 -1
- package/dist/esm/components/document-collection/DocumentCollectionSelection.js.map +0 -1
- package/dist/esm/components/document-collection/DocumentCollectionUpload.js.map +0 -1
- package/dist/esm/components/document-collection/DocumentError.js.map +0 -1
- package/dist/esm/components/document-collection/DocumentProcessing.js.map +0 -1
- package/dist/esm/components/document-collection/DocumentSuccess.js.map +0 -1
- package/dist/esm/components/document-video/DocumentVideoCapture.js.map +0 -1
- package/dist/esm/components/document-video/DocumentVideoConfirmation.js.map +0 -1
- package/dist/esm/components/document-video/document-video-flow/DocumentVideoFlow.js.map +0 -1
- package/dist/esm/components/document-video/document-video-flow/DocumentVideoInstructions.js.map +0 -1
- package/dist/esm/components/document-video/document-video-flow/DocumentVideoProcessing.js.map +0 -1
- package/dist/esm/components/document-video/document-video-flow/DocumentVideoRecorder.js.map +0 -1
- package/dist/esm/components/icons/ElectronicIcon.js.map +0 -1
- package/dist/esm/components/icons/PoweredByIcon.js.map +0 -1
- package/dist/esm/components/icons/PreIntroIcon.js.map +0 -1
- package/dist/esm/components/icons/StartIcon.js.map +0 -1
- package/dist/esm/components/id-check/BeforePhoto.js.map +0 -1
- package/dist/esm/components/id-check/BeforeVersoPhoto.js.map +0 -1
- package/dist/esm/components/id-check/CameraError.js.map +0 -1
- package/dist/esm/components/id-check/CameraMask.js.map +0 -1
- package/dist/esm/components/id-check/OrientationToggle.js.map +0 -1
- package/dist/esm/components/id-check/Photo.js.map +0 -1
- package/dist/esm/components/id-check/PhotoConfirmation.js.map +0 -1
- package/dist/esm/components/id-check/PhotoPreview.js.map +0 -1
- package/dist/esm/components/jdi/JDDWorkInProgress.js.map +0 -1
- package/dist/esm/components/jdi/JDICountrySelection.js.map +0 -1
- package/dist/esm/components/jdi/JDIDocumentSelection.js.map +0 -1
- package/dist/esm/components/jdi/JDIDocumentUpload.js.map +0 -1
- package/dist/esm/components/jdi/JDIError.js.map +0 -1
- package/dist/esm/components/jdi/JDIPreIntroduction.js.map +0 -1
- package/dist/esm/components/jdi/JDIProcessing.js.map +0 -1
- package/dist/esm/components/jdi/JDISuccess.js.map +0 -1
- package/dist/esm/components/legal-consent/LegalConsentNode.js.map +0 -1
- package/dist/esm/components/nfc-scan/BiometricSymbol.js.map +0 -1
- package/dist/esm/components/nfc-scan/NfcChipGate.js.map +0 -1
- package/dist/esm/components/nfc-scan/NfcFallbackSurvey.js.map +0 -1
- package/dist/esm/components/nfc-scan/NfcOnboardingNotice.js.map +0 -1
- package/dist/esm/components/nfc-scan/NfcScanNode.js.map +0 -1
- package/dist/esm/components/nfc-scan/NfcSuccessAnimation.js.map +0 -1
- package/dist/esm/components/nfc-scan/PuceCniSymbol.js.map +0 -1
- package/dist/esm/components/selfie/SelfieConfirmation.js.map +0 -1
- package/dist/esm/components/selfie/Video.css.js.map +0 -1
- package/dist/esm/components/selfie/Video.js.map +0 -1
- package/dist/esm/components/selfie/VideoFixes.css.js.map +0 -1
- package/dist/esm/components/selfie/VideoResetStyles.js.map +0 -1
- package/dist/esm/components/selfie/hooks/useLiveFrameCapture.js.map +0 -1
- package/dist/esm/components/selfie/hooks/useVideoRecorderStyles.js.map +0 -1
- package/dist/esm/components/selfie/selfie-flow/InstructionsSelfie.js.map +0 -1
- package/dist/esm/components/selfie/selfie-flow/SelfieFlow.js.map +0 -1
- package/dist/esm/components/selfie/selfie-flow/SelfiePreIntroduction.js.map +0 -1
- package/dist/esm/components/selfie/selfie-flow/SelfieProcessing.js.map +0 -1
- package/dist/esm/components/selfie/selfie-flow/SelfieRecorder.js.map +0 -1
- package/dist/esm/components/selfie/utils/selfieCaptureUtils.js.map +0 -1
- package/dist/esm/components/selfie/utils/unisseyStrings.js.map +0 -1
- package/dist/esm/components/selfie/utils/videoElementStyles.js.map +0 -1
- package/dist/esm/components/session/DocumentCheck.js.map +0 -1
- package/dist/esm/components/session/EndFlow.js.map +0 -1
- package/dist/esm/components/session/MobileRedirect.js.map +0 -1
- package/dist/esm/components/session/PdfGeneration.js.map +0 -1
- package/dist/esm/components/session/Selfie.js.map +0 -1
- package/dist/esm/components/session/SessionContent.js.map +0 -1
- package/dist/esm/components/session/SessionExpired.js.map +0 -1
- package/dist/esm/components/session/StartSession.js.map +0 -1
- package/dist/esm/components/session/UserInputForm/AddressFields.js.map +0 -1
- package/dist/esm/components/session/UserInputForm/ContactFields.js.map +0 -1
- package/dist/esm/components/session/UserInputForm/CustomFormFields.js.map +0 -1
- package/dist/esm/components/session/UserInputForm/DatePickerField.js.map +0 -1
- package/dist/esm/components/session/UserInputForm/IdentityFields.js.map +0 -1
- package/dist/esm/components/session/UserInputForm/LegalEntityFields.js.map +0 -1
- package/dist/esm/components/session/UserInputForm/LegalRepFields.js.map +0 -1
- package/dist/esm/components/session/UserInputForm/NationalityField.js.map +0 -1
- package/dist/esm/components/session/UserInputForm.js.map +0 -1
- package/dist/esm/components/session/VideoWorkInProgress.js.map +0 -1
- package/dist/esm/components/session/controleJdiPolicy.js.map +0 -1
- package/dist/esm/components/session/endScreenIcons.js.map +0 -1
- package/dist/esm/components/signature-electronic/DocusealSignature.js.map +0 -1
- package/dist/esm/components/signature-electronic/SignatureElectronic.js.map +0 -1
- package/dist/esm/components/signature-electronic/SignatureElectronicIntroduction.js.map +0 -1
- package/dist/esm/components/signature-electronic/SignedDocumentPreview.js.map +0 -1
- package/dist/esm/components/start-flow/CGU.js +0 -108
- package/dist/esm/components/start-flow/CGU.js.map +0 -1
- package/dist/esm/components/start-flow/Start.js.map +0 -1
- package/dist/esm/components/states/ErrorState.js.map +0 -1
- package/dist/esm/components/states/LoadingState.js.map +0 -1
- package/dist/esm/components/states/NoSessionIdState.js.map +0 -1
- package/dist/esm/components/template/ConditionNodeHandler.js.map +0 -1
- package/dist/esm/components/template/ExternalVerificationNodeHandler.js.map +0 -1
- package/dist/esm/components/template/TemplateNodeRenderer.js.map +0 -1
- package/dist/esm/components/template/conditionNodePolicy.js.map +0 -1
- package/dist/esm/components/ui/Body.js.map +0 -1
- package/dist/esm/components/ui/Button.js.map +0 -1
- package/dist/esm/components/ui/ButtonDesktop.js.map +0 -1
- package/dist/esm/components/ui/Card.js.map +0 -1
- package/dist/esm/components/ui/LanguageSelector.js +0 -42
- package/dist/esm/components/ui/LanguageSelector.js.map +0 -1
- package/dist/esm/components/ui/MobilePageLayout.js.map +0 -1
- package/dist/esm/components/ui/PDFPreview.js.map +0 -1
- package/dist/esm/components/ui/PageActions.js.map +0 -1
- package/dist/esm/components/ui/Paper.js.map +0 -1
- package/dist/esm/components/ui/PoweredBy.js.map +0 -1
- package/dist/esm/components/ui/QRCodeDisplay.js.map +0 -1
- package/dist/esm/components/ui/SelectComponent.js.map +0 -1
- package/dist/esm/components/ui/Subtitle.js.map +0 -1
- package/dist/esm/components/ui/Title.js.map +0 -1
- package/dist/esm/config/env.js.map +0 -1
- package/dist/esm/constants/userInputForm.js.map +0 -1
- package/dist/esm/context/ConfigContext.js.map +0 -1
- package/dist/esm/context/DocumentContext.js.map +0 -1
- package/dist/esm/context/SessionContext.js.map +0 -1
- package/dist/esm/hooks/useClientInfo.js.map +0 -1
- package/dist/esm/hooks/useCountryOptions.js.map +0 -1
- package/dist/esm/hooks/useI18n.js.map +0 -1
- package/dist/esm/hooks/useIsMobile.js.map +0 -1
- package/dist/esm/hooks/useNfcSseStatus.js.map +0 -1
- package/dist/esm/hooks/useRouteCSS.js.map +0 -1
- package/dist/esm/hooks/useSession.js.map +0 -1
- package/dist/esm/hooks/useSessionData.js.map +0 -1
- package/dist/esm/hooks/useStepCSS.js.map +0 -1
- package/dist/esm/hooks/useStepNavigation.js.map +0 -1
- package/dist/esm/hooks/useTemplateLoader.js.map +0 -1
- package/dist/esm/hooks/useUserInputForm.js.map +0 -1
- package/dist/esm/i18n/country/country.en.json.js.map +0 -1
- package/dist/esm/i18n/country/country.fr.json.js.map +0 -1
- package/dist/esm/i18n/country/country.iso2.en.json.js.map +0 -1
- package/dist/esm/i18n/country/country.iso2.fr.json.js.map +0 -1
- package/dist/esm/i18n/documents/documents.en.json.js.map +0 -1
- package/dist/esm/i18n/documents/documents.fr.json.js.map +0 -1
- package/dist/esm/i18n/en.json.js.map +0 -1
- package/dist/esm/i18n/es.json.js.map +0 -1
- package/dist/esm/i18n/fr.json.js.map +0 -1
- package/dist/esm/i18n/index.js.map +0 -1
- package/dist/esm/index.css.js.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/node_modules/date-fns/locale/_lib/buildFormatLongFn.js.map +0 -1
- package/dist/esm/node_modules/date-fns/locale/_lib/buildLocalizeFn.js.map +0 -1
- package/dist/esm/node_modules/date-fns/locale/_lib/buildMatchFn.js.map +0 -1
- package/dist/esm/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js.map +0 -1
- package/dist/esm/node_modules/date-fns/locale/en-US/_lib/formatDistance.js.map +0 -1
- package/dist/esm/node_modules/date-fns/locale/en-US/_lib/formatLong.js.map +0 -1
- package/dist/esm/node_modules/date-fns/locale/en-US/_lib/formatRelative.js.map +0 -1
- package/dist/esm/node_modules/date-fns/locale/en-US/_lib/localize.js.map +0 -1
- package/dist/esm/node_modules/date-fns/locale/en-US/_lib/match.js.map +0 -1
- package/dist/esm/node_modules/date-fns/locale/en-US.js.map +0 -1
- package/dist/esm/node_modules/date-fns/locale/fr/_lib/formatDistance.js.map +0 -1
- package/dist/esm/node_modules/date-fns/locale/fr/_lib/formatLong.js.map +0 -1
- package/dist/esm/node_modules/date-fns/locale/fr/_lib/formatRelative.js.map +0 -1
- package/dist/esm/node_modules/date-fns/locale/fr/_lib/localize.js.map +0 -1
- package/dist/esm/node_modules/date-fns/locale/fr/_lib/match.js.map +0 -1
- package/dist/esm/node_modules/date-fns/locale/fr.js.map +0 -1
- package/dist/esm/node_modules/heic2any/dist/heic2any.js.map +0 -1
- package/dist/esm/node_modules/pdfjs-dist/legacy/build/pdf.js.map +0 -1
- package/dist/esm/node_modules/pdfjs-dist/legacy/build/pdf.worker.js.map +0 -1
- package/dist/esm/node_modules/style-inject/dist/style-inject.es.js.map +0 -1
- package/dist/esm/node_modules/tslib/tslib.es6.js.map +0 -1
- package/dist/esm/providers/I18nProvider.js.map +0 -1
- package/dist/esm/services/analysis.js.map +0 -1
- package/dist/esm/services/api.js.map +0 -1
- package/dist/esm/services/auditTrailService.js.map +0 -1
- package/dist/esm/services/cameraService.js.map +0 -1
- package/dist/esm/services/documentEdgeDetectionService.js.map +0 -1
- package/dist/esm/services/documentTemplate.js.map +0 -1
- package/dist/esm/services/integrationService.js.map +0 -1
- package/dist/esm/services/pollingService.js.map +0 -1
- package/dist/esm/services/professionalImageQuality.js.map +0 -1
- package/dist/esm/services/retryService.js.map +0 -1
- package/dist/esm/services/sessionCredentials.js.map +0 -1
- package/dist/esm/services/sessionMemoryStore.js.map +0 -1
- package/dist/esm/services/sessionService.js.map +0 -1
- package/dist/esm/services/utils.js.map +0 -1
- package/dist/esm/types/session.js.map +0 -1
- package/dist/esm/utils/analysisErrors.js.map +0 -1
- package/dist/esm/utils/apiAnalysis.js.map +0 -1
- package/dist/esm/utils/conditionEvaluator.js.map +0 -1
- package/dist/esm/utils/countryFlags.js.map +0 -1
- package/dist/esm/utils/cssLoader.js.map +0 -1
- package/dist/esm/utils/customFieldIds.js.map +0 -1
- package/dist/esm/utils/customFieldValidation.js.map +0 -1
- package/dist/esm/utils/documentLabels.js.map +0 -1
- package/dist/esm/utils/europeanCountries.js.map +0 -1
- package/dist/esm/utils/fileConverter.js.map +0 -1
- package/dist/esm/utils/imageConverter.js.map +0 -1
- package/dist/esm/utils/imageProcessing.js.map +0 -1
- package/dist/esm/utils/isMobileDevice.js.map +0 -1
- package/dist/esm/utils/isoCountryCodes.js.map +0 -1
- package/dist/esm/utils/jdiCodes.js.map +0 -1
- package/dist/esm/utils/labelToKey.js.map +0 -1
- package/dist/esm/utils/languageFlags.js +0 -42
- package/dist/esm/utils/languageFlags.js.map +0 -1
- package/dist/esm/utils/listFieldUtils.js.map +0 -1
- package/dist/esm/utils/mimeTypes.js.map +0 -1
- package/dist/esm/utils/navigation.js.map +0 -1
- package/dist/esm/utils/renderInlineMarkdown.js.map +0 -1
- package/dist/esm/utils/userInputForm.js.map +0 -1
- package/dist/esm/utils/utils.js.map +0 -1
- package/dist/esm/utils/validationUtils.js.map +0 -1
- package/docs/GITLAB_BADGES_SETUP.md +0 -317
- package/docs/JOURNEY_NODE_BUILDER.md +0 -198
- package/docs/POLLING_SYSTEM.md +0 -695
- package/docs/README.md +0 -254
- package/docs/SESSION_TOKEN_MIGRATION.md +0 -52
- package/docs/condition-node.md +0 -651
- package/docs/configuration.md +0 -113
- package/docs/dynamic-configuration.md +0 -97
- package/docs/environment.md +0 -27
- package/docs/migration-guide.md +0 -120
- package/docs/multi-runs.md +0 -104
- package/docs/navigation-history.md +0 -155
- package/docs/sdk_integration_guide.md +0 -58
- package/eslint.config.js +0 -13
- package/examples/analysis-progress-example.tsx +0 -220
- package/examples/sdk-configuration.ts +0 -187
- package/examples/test-updated-urls.ts +0 -162
- package/examples/usage-example.tsx +0 -49
- package/jest.config.js +0 -32
- package/postcss.config.js +0 -6
- package/renovate.json +0 -242
- package/rollup.asset-url-plugin.js +0 -38
- package/rollup.dev.config.js +0 -65
- package/setupTests.js +0 -41
- package/tailwind.config.js +0 -11
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MobilePageLayout.js","sources":["../../../../../src/components/ui/MobilePageLayout.tsx"],"sourcesContent":["import React, { ReactNode, useRef, useState, useEffect } from \"react\";\nimport useIsMobile from \"../../hooks/useIsMobile\";\nimport PoweredBy from \"./PoweredBy\";\nimport { SessionData } from \"../../types/session\";\n\ninterface MobilePageLayoutProps {\n /** Contenu de l'en-tête (optionnel) */\n header?: ReactNode;\n /** Contenu principal de la page */\n children: ReactNode;\n /** Contenu du footer (boutons, etc.) */\n footer: ReactNode;\n /** Classes CSS supplémentaires pour le conteneur principal */\n className?: string;\n /** Classes CSS pour l'en-tête */\n headerClassName?: string;\n /** Classes CSS pour le contenu */\n contentClassName?: string;\n /** Classes CSS pour le footer */\n footerClassName?: string;\n /** @deprecated Ignoré */\n contentPaddingBottom?: string;\n\n session?: SessionData;\n}\n\nconst MobilePageLayout: React.FC<MobilePageLayoutProps> = ({\n header,\n children,\n footer,\n className = \"\",\n headerClassName = \"\",\n contentClassName = \"overflow-y-auto\",\n footerClassName = \"\",\n session,\n}) => {\n const isMobile = useIsMobile();\n const footerRef = useRef<HTMLDivElement>(null);\n const [footerHeight, setFooterHeight] = useState(140);\n\n useEffect(() => {\n if (!isMobile) return;\n const el = footerRef.current;\n if (!el) return;\n\n const update = () => setFooterHeight(el.offsetHeight);\n update();\n\n const observer = new ResizeObserver(update);\n observer.observe(el);\n return () => observer.disconnect();\n }, [isMobile]);\n\n if (isMobile) {\n return (\n <div className={`flex flex-col h-full w-full ${className}`}>\n {header && (\n <div className={`shrink-0 sticky top-0 bg-white z-20 ${headerClassName}`}>\n {header}\n </div>\n )}\n <div\n className={`flex-1 min-h-0 ${contentClassName}`}\n style={{ paddingBottom: footerHeight }}\n >\n {children}\n </div>\n <div\n ref={footerRef}\n className={`fixed bottom-0 left-0 right-0 bg-white border-t px-4 pt-4 pb-4 z-10 ${footerClassName}`}\n >\n <div className=\"space-y-3\">\n {footer}\n <PoweredBy\n logo={session?.template?.logo}\n text={session?.template?.logo ? \"par\" : undefined}\n />\n </div>\n </div>\n </div>\n );\n }\n\n // DESKTOP\n return (\n <div className=\"flex flex-col justify-between h-full\">\n {children}\n <div className={`px-6 pb-6 ${footerClassName}`}>{footer}</div>\n </div>\n );\n};\n\nexport default MobilePageLayout;\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PDFPreview.js","sources":["../../../../../src/components/ui/PDFPreview.tsx"],"sourcesContent":["import { useState, useRef, useEffect } from \"react\";\nimport { useI18n } from \"../../hooks/useI18n\";\n\ninterface PDFPreviewProps {\n src: string; // Data URL du PDF\n className?: string;\n}\n\ndeclare global {\n interface Window {\n pdfjsLib: {\n getDocument: (params: any) => { promise: Promise<unknown> };\n GlobalWorkerOptions: { workerSrc: string };\n };\n }\n}\n\n// Helper to sanitize PDF source\nconst sanitizePdfSrc = (src: string): string | null => {\n if (!src) return null;\n\n // Allow only specific safe protocols\n if (src.startsWith(\"blob:\") || src.startsWith(\"data:application/pdf;base64,\")) {\n return src;\n }\n\n return null;\n};\n\nconst PDFPreview = ({ src, className = \"\" }: PDFPreviewProps) => {\n const { t } = useI18n();\n const [isLoading, setIsLoading] = useState(true);\n const [isError, setIsError] = useState(false);\n const [isPDFjsReady, setIsPDFjsReady] = useState(false);\n const canvasRef = useRef<HTMLCanvasElement>(null);\n const hasRenderedRef = useRef(false);\n\n // Charger PDF.js\n useEffect(() => {\n if (window.pdfjsLib) {\n setIsPDFjsReady(true);\n return;\n }\n\n const script = document.createElement(\"script\");\n script.src = \"https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.11.174/pdf.min.js\";\n\n script.onload = () => {\n if (window.pdfjsLib) {\n window.pdfjsLib.GlobalWorkerOptions.workerSrc =\n \"https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.11.174/pdf.worker.min.js\";\n setIsPDFjsReady(true);\n }\n };\n\n script.onerror = () => {\n console.error(t(\"pdf_preview.console_pdfjs_error\"));\n setIsError(true);\n setIsLoading(false);\n };\n\n document.head.appendChild(script);\n\n return () => {\n if (document.head.contains(script)) {\n document.head.removeChild(script);\n }\n };\n }, []);\n\n // Rendre le PDF\n useEffect(() => {\n if (!isPDFjsReady || !src) {\n return;\n }\n\n if (hasRenderedRef.current) {\n return;\n }\n\n const renderPDF = async () => {\n const sanitizedSrc = sanitizePdfSrc(src);\n\n if (!sanitizedSrc) {\n console.error(\"PDFPreview: Source non autorisée ou invalide\");\n setIsError(true);\n setIsLoading(false);\n return;\n }\n\n // Attendre que le canvas soit disponible ET dans le DOM\n if (!canvasRef.current || !document.contains(canvasRef.current)) {\n setTimeout(renderPDF, 100);\n return;\n }\n\n setIsLoading(true);\n setIsError(false);\n hasRenderedRef.current = true;\n\n try {\n // Hardening configuration for PDF.js\n const loadingTask = window.pdfjsLib.getDocument({\n url: sanitizedSrc,\n isEvalSupported: false, // Non execution de code lors de l'interprétation du fichier\n disableRange: true, // Non chargement de données en plusieurs parties\n disableStream: true, // Non chargement de données en stream\n cMapPacked: true,\n });\n\n const pdf = await loadingTask.promise as any;\n\n const page = await pdf.getPage(1);\n\n const canvas = canvasRef.current;\n if (!canvas) {\n throw new Error(\"Canvas non disponible lors du rendu\");\n }\n\n const context = canvas.getContext(\"2d\");\n if (!context) {\n throw new Error(\"Impossible d'obtenir le contexte du canvas\");\n }\n\n // Calculer l'échelle pour adapter à la taille du conteneur\n const containerWidth = 300; // Largeur fixe pour la preview\n const viewport = page.getViewport({ scale: 1 });\n const scale = containerWidth / viewport.width;\n const scaledViewport = page.getViewport({ scale });\n\n canvas.width = scaledViewport.width;\n canvas.height = scaledViewport.height;\n\n // Rendre la page\n await page.render({\n canvasContext: context,\n viewport: scaledViewport,\n }).promise;\n\n setIsLoading(false);\n } catch (error) {\n console.error(\"PDFPreview: Erreur lors du rendu du PDF:\", error);\n setIsError(true);\n setIsLoading(false);\n hasRenderedRef.current = false; // Permettre un nouveau rendu en cas d'erreur\n }\n };\n\n // Délai plus long pour être sûr que le composant est complètement monté\n setTimeout(renderPDF, 200);\n }, [isPDFjsReady, src]);\n\n // Reset quand src change\n useEffect(() => {\n hasRenderedRef.current = false;\n setIsLoading(true);\n setIsError(false);\n }, [src]);\n\n if (isError) {\n return (\n <div className={`w-full h-48 flex items-center justify-center bg-white rounded-lg border ${className}`}>\n <div className=\"text-center\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-12 w-12 mx-auto text-red-500 mb-2\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n >\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.94-.49-7-3.85-7-7.93s3.06-7.44 7-7.93v15.86zm2-15.86c1.03.13 2 .45 2.87.93H13v-.93zM13 7h5.24c.25.31.48.65.68 1H13V7zm0 3h6.74c.08.33.15.66.19 1H13v-1zm0 3h6.93c-.06.35-.13.68-.24 1H13v-1zm0 3h6.24c-.22.35-.47.69-.74 1H13v-1zm0 3h3.59c-.92.45-1.96.75-3.07.82L13 19z\" />\n </svg>\n <p className=\"text-sm text-red-600\">{t(\"pdf_preview.loading_error\")}</p>\n </div>\n </div>\n );\n }\n\n return (\n <div className={`w-full h-48 bg-white rounded-lg border overflow-hidden relative ${className}`}>\n {/* Canvas toujours présent */}\n <canvas\n ref={canvasRef}\n className={`w-full h-full object-contain ${isLoading ? 'opacity-0' : 'opacity-100'}`}\n />\n\n {/* Overlay de chargement */}\n {isLoading && (\n <div className=\"absolute inset-0 flex items-center justify-center bg-white\">\n <div className=\"text-center\">\n <div className=\"animate-spin rounded-full h-8 w-8 border-b-2 border-teal-600 mx-auto mb-2\"></div>\n <p className=\"text-sm text-gray-600\">{t(\"pdf_preview.loading\")}</p>\n </div>\n </div>\n )}\n </div>\n );\n};\n\nexport default PDFPreview;\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PageActions.js","sources":["../../../../../src/components/ui/PageActions.tsx"],"sourcesContent":["import { ReactNode } from \"react\";\nimport useIsMobile from \"../../hooks/useIsMobile\";\n\ninterface PageActionsProps {\n /** Bouton d'action principal (continuer, valider…) */\n primary: ReactNode;\n /** Bouton d'action secondaire (retour…) — optionnel */\n secondary?: ReactNode;\n /** Classes CSS supplémentaires pour le conteneur */\n className?: string;\n}\n\n/**\n * Composant d'orchestration des boutons de navigation dans les pages du SDK.\n *\n * Sur MOBILE (flex-col-reverse) :\n * - primary en haut\n * - secondary en dessous\n *\n * Sur DESKTOP (flex-row) :\n * - secondary à gauche, primary à droite, alignés à droite (ou centré si seul)\n *\n * Utilise useIsMobile (JS) plutôt que des classes CSS responsives pour\n * garantir la compatibilité avec tous les contextes de build Tailwind.\n */\nconst PageActions = ({ primary, secondary, className = \"\" }: PageActionsProps) => {\n const isMobile = useIsMobile(768);\n\n if (isMobile) {\n return (\n <div className={`flex flex-col-reverse gap-3 w-full ${className}`}>\n {secondary}\n {primary}\n </div>\n );\n }\n\n const justify = secondary ? \"justify-end\" : \"justify-center\";\n return (\n <div className={`flex flex-row gap-3 ${justify} w-full ${className}`}>\n {secondary}\n {primary}\n </div>\n );\n};\n\nexport default PageActions;\n"],"names":["_jsxs"],"mappings":";;;AAYA;;;;;;;;;;;;AAYG;AACH,IAAM,WAAW,GAAG,UAAC,EAAwD,EAAA;QAAtD,OAAO,GAAA,EAAA,CAAA,OAAA,EAAE,SAAS,GAAA,EAAA,CAAA,SAAA,EAAE,iBAAc,EAAd,SAAS,GAAA,EAAA,KAAA,MAAA,GAAG,EAAE,GAAA,EAAA;AACvD,IAAA,IAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC;IAEjC,IAAI,QAAQ,EAAE;AACZ,QAAA,QACEA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,qCAAA,CAAA,MAAA,CAAsC,SAAS,CAAE,EAAA,QAAA,EAAA,CAC9D,SAAS,EACT,OAAO,CAAA,EAAA,CACJ;IAEV;IAEA,IAAM,OAAO,GAAG,SAAS,GAAG,aAAa,GAAG,gBAAgB;AAC5D,IAAA,QACEA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,8BAAuB,OAAO,EAAA,UAAA,CAAA,CAAA,MAAA,CAAW,SAAS,CAAE,aACjE,SAAS,EACT,OAAO,CAAA,EAAA,CACJ;AAEV;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Paper.js","sources":["../../../../../src/components/ui/Paper.tsx"],"sourcesContent":["import React from \"react\";\nimport type { CSSProperties, ReactNode } from \"react\";\n\ninterface PaperProps {\n children: ReactNode;\n className?: string;\n style?: CSSProperties;\n}\n\nconst Paper = ({ children, className = \"\", style }: PaperProps) => {\n return (\n <div\n data-testid=\"paper-container\"\n className={`bg-white shadow-md rounded-lg ${className}`}\n style={style}\n >\n {children}\n </div>\n );\n};\n\nexport default Paper;\n"],"names":["_jsx"],"mappings":";;AASA,IAAM,KAAK,GAAG,UAAC,EAA+C,EAAA;QAA7C,QAAQ,GAAA,EAAA,CAAA,QAAA,EAAE,EAAA,GAAA,EAAA,CAAA,SAAc,EAAd,SAAS,mBAAG,EAAE,GAAA,EAAA,EAAE,KAAK,GAAA,EAAA,CAAA,KAAA;AAC9C,IAAA,QACEA,GAAA,CAAA,KAAA,EAAA,EAAA,aAAA,EACc,iBAAiB,EAC7B,SAAS,EAAE,gCAAA,CAAA,MAAA,CAAiC,SAAS,CAAE,EACvD,KAAK,EAAE,KAAK,YAEX,QAAQ,EAAA,CACL;AAEV;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PoweredBy.js","sources":["../../../../../src/components/ui/PoweredBy.tsx"],"sourcesContent":["import React from \"react\";\nimport PoweredByIcon from \"../icons/PoweredByIcon\";\nimport { getSession } from \"../../context/SessionContext\";\nimport { useI18n } from \"../../hooks/useI18n\";\n\ninterface PoweredByProps {\n className?: string;\n logo?: string;\n text?: string; \n}\n\nconst PoweredBy = ({ className, logo, text}: PoweredByProps) => {\n const { session } = getSession();\n const { t } = useI18n();\n \n // Priorité: logo du template > logo des props\n const logoToDisplay = session?.template?.logo || logo;\n \n // Si logo du template existe, afficher \"par\", sinon utiliser le texte des props\n const textToDisplay = session?.template?.logo\n ? \"\"\n : text\n ? text\n : t(\"powered_by.default\", \"Propulsé par\");\n \n return (\n <div className={`flex items-center justify-center flex-row ${className}`}>\n <span className=\"text-xs font-semibold text-[#3C3C40] text-center mt-0.5\">\n {textToDisplay} \n </span>\n {logoToDisplay ? (\n <img\n src={logoToDisplay}\n alt={t(\"powered_by.partner_logo_alt\", \"Logo partenaire\")}\n className=\"inline-block w-[90px] h-[18px] mb-[2px] ml-1 object-contain\"\n />\n ) : (\n // fallback to default icon\n <PoweredByIcon className=\"inline-block w-[90px] h-[18px] mb-[2px] ml-1\" />\n )}\n </div>\n );\n};\n\nexport default PoweredBy;\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;AAWA,IAAM,SAAS,GAAG,UAAC,EAAwC,EAAA;;AAAtC,IAAA,IAAA,SAAS,eAAA,EAAE,IAAI,GAAA,EAAA,CAAA,IAAA,EAAE,IAAI,GAAA,EAAA,CAAA,IAAA;AAChC,IAAA,IAAA,OAAO,GAAK,UAAU,EAAE,QAAjB;AACP,IAAA,IAAA,CAAC,GAAK,OAAO,EAAE,EAAd;;AAGT,IAAA,IAAM,aAAa,GAAG,CAAA,CAAA,EAAA,GAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,MAAA,GAAA,MAAA,GAAP,OAAO,CAAE,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,IAAI,KAAI,IAAI;;AAGrD,IAAA,IAAM,aAAa,GAAG,CAAA,CAAA,EAAA,GAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,MAAA,GAAA,MAAA,GAAP,OAAO,CAAE,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,IAAI;AAC3C,UAAE;AACF,UAAE;AACF,cAAE;AACF,cAAE,CAAC,CAAC,oBAAoB,EAAE,cAAc,CAAC;AAE3C,IAAA,QACEA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,4CAAA,CAAA,MAAA,CAA6C,SAAS,CAAE,EAAA,QAAA,EAAA,CACtEA,IAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,yDAAyD,aACtE,aAAa,EAAA,QAAA,CAAA,EAAA,CACT,EACJ,aAAa,IACdC,GAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,aAAa,EAClB,GAAG,EAAE,CAAC,CAAC,6BAA6B,EAAE,iBAAiB,CAAC,EACxD,SAAS,EAAC,6DAA6D,GACvE;;YAGFA,GAAA,CAAC,aAAa,IAAC,SAAS,EAAC,8CAA8C,EAAA,CAAG,CAC3E,CAAA,EAAA,CACG;AAEV;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"QRCodeDisplay.js","sources":["../../../../../src/components/ui/QRCodeDisplay.tsx"],"sourcesContent":["import { useEffect, useRef, useState } from \"react\";\nimport QRCode from \"qrcode\";\nimport Title from \"./Title\";\nimport Subtitle from \"./Subtitle\";\nimport ButtonDesktop from \"./ButtonDesktop\";\nimport { useI18n } from \"../../hooks/useI18n\";\nimport MobilePageLayout from \"./MobilePageLayout\";\n\ninterface QRCodeDisplayProps {\n url: string;\n title?: string;\n subtitle?: string;\n onBack?: () => void;\n onContinueOnPC?: () => void;\n showButtons?: boolean;\n isDesktopAllowed?: boolean;\n}\n\nconst QRCodeDisplay = ({\n url,\n title,\n subtitle,\n onBack,\n onContinueOnPC,\n showButtons = true,\n isDesktopAllowed,\n}: QRCodeDisplayProps) => {\n const { t } = useI18n();\n const canvasRef = useRef<HTMLCanvasElement>(null);\n const [qrError, setQrError] = useState<string | null>(null);\n\n // Set default values using translations\n const displayTitle = title || t(\"qr_code.scan_title\");\n const displaySubtitle = subtitle || t(\"qr_code.scan_subtitle\");\n\n useEffect(() => {\n const generateQRCode = async () => {\n if (!canvasRef.current) return;\n\n // Reset error state\n setQrError(null);\n\n // Check if URL is valid\n if (!url || url.trim() === \"\") {\n setQrError(t(\"qr_code.missing_url\"));\n return;\n }\n\n try {\n // Utiliser toDataURL au lieu de toCanvas pour éviter les problèmes de compatibilité\n const qrDataUrl = await QRCode.toDataURL(url, {\n width: 256,\n margin: 2,\n color: {\n dark: \"#000000\",\n light: \"#FFFFFF\",\n },\n });\n\n // Dessiner l'image sur le canvas\n const canvas = canvasRef.current;\n const ctx = canvas.getContext(\"2d\");\n if (ctx) {\n const img = new Image();\n img.onload = () => {\n canvas.width = img.width;\n canvas.height = img.height;\n ctx.drawImage(img, 0, 0);\n };\n img.src = qrDataUrl;\n }\n } catch (error) {\n console.error(t(\"qr_code.console_generation\"), error);\n setQrError(t(\"qr_code.generation_failed\"));\n }\n };\n\n generateQRCode();\n }, [url]);\n\n return (\n <MobilePageLayout\n footer={\n showButtons && (onBack || onContinueOnPC) ? (\n <div className=\"flex flex-col justify-center items-center content-center w-full max-w-md mx-auto\">\n <div className=\"flex gap-3 justify-center items-center content-center\">\n {onBack && (\n <ButtonDesktop onClick={onBack} type=\"back\">\n {t(\"qr_code.back\")}\n </ButtonDesktop>\n )}\n {isDesktopAllowed && (\n <ButtonDesktop onClick={onContinueOnPC} type=\"continue\">\n {t(\"qr_code.continue_on_pc\")}\n </ButtonDesktop>\n )}\n </div>\n </div>\n ) : undefined\n }\n >\n <div className=\"px-4 py-6 pt-11 md:px-8 md:py-8\">\n <div className=\"w-full max-w-md mx-auto space-y-6\">\n {/* Header */}\n <div className=\"text-center space-y-4 mt-16 md:mt-20\">\n <Title className=\"text-xl md:text-2xl lg:text-3xl\">\n {displayTitle}\n </Title>\n <Subtitle className=\"text-sm md:text-base text-gray-600 leading-relaxed whitespace-pre-line\">\n {displaySubtitle}\n </Subtitle>\n </div>\n\n {/* QR Code - centered vertically in remaining space */}\n <div className=\"flex-1 flex justify-center items-center\">\n {qrError ? (\n <div className=\"text-red-500 text-center p-4\">{qrError}</div>\n ) : !url || url.trim() === \"\" ? (\n <div className=\"bg-white p-4 rounded-lg shadow-lg border-2 border-gray-200 flex items-center justify-center w-64 h-64\">\n <div className=\"text-gray-500 text-center\">\n <div className=\"animate-spin w-8 h-8 border-2 border-gray-300 border-t-blue-500 rounded-full mx-auto mb-2\"></div>\n {t(\"qr_code.generating\")}\n </div>\n </div>\n ) : (\n <div className=\"bg-white p-4 rounded-lg shadow-lg border-2 border-gray-200\">\n <canvas ref={canvasRef} />\n </div>\n )}\n </div>\n </div>\n </div>\n </MobilePageLayout>\n );\n};\n\nexport default QRCodeDisplay;\n"],"names":["_jsx","_jsxs"],"mappings":";;;;;;;;;;AAkBA,IAAM,aAAa,GAAG,UAAC,EAQF,EAAA;QAPnB,GAAG,GAAA,EAAA,CAAA,GAAA,EACH,KAAK,GAAA,EAAA,CAAA,KAAA,EACL,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,MAAM,GAAA,EAAA,CAAA,MAAA,EACN,cAAc,GAAA,EAAA,CAAA,cAAA,EACd,mBAAkB,EAAlB,WAAW,mBAAG,IAAI,GAAA,EAAA,EAClB,gBAAgB,GAAA,EAAA,CAAA,gBAAA;AAER,IAAA,IAAA,CAAC,GAAK,OAAO,EAAE,EAAd;AACT,IAAA,IAAM,SAAS,GAAG,MAAM,CAAoB,IAAI,CAAC;IAC3C,IAAA,EAAA,GAAwB,QAAQ,CAAgB,IAAI,CAAC,EAApD,OAAO,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,UAAU,GAAA,EAAA,CAAA,CAAA,CAAiC;;IAG3D,IAAM,YAAY,GAAG,KAAK,IAAI,CAAC,CAAC,oBAAoB,CAAC;IACrD,IAAM,eAAe,GAAG,QAAQ,IAAI,CAAC,CAAC,uBAAuB,CAAC;AAE9D,IAAA,SAAS,CAAC,YAAA;AACR,QAAA,IAAM,cAAc,GAAG,YAAA,EAAA,OAAA,SAAA,CAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,YAAA;;;;;wBACrB,IAAI,CAAC,SAAS,CAAC,OAAO;4BAAE,OAAA,CAAA,CAAA,YAAA;;wBAGxB,UAAU,CAAC,IAAI,CAAC;;wBAGhB,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;AAC7B,4BAAA,UAAU,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC;4BACpC,OAAA,CAAA,CAAA,YAAA;wBACF;;;;AAIoB,wBAAA,OAAA,CAAA,CAAA,YAAM,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE;AAC5C,gCAAA,KAAK,EAAE,GAAG;AACV,gCAAA,MAAM,EAAE,CAAC;AACT,gCAAA,KAAK,EAAE;AACL,oCAAA,IAAI,EAAE,SAAS;AACf,oCAAA,KAAK,EAAE,SAAS;AACjB,iCAAA;AACF,6BAAA,CAAC,CAAA;;AAPI,wBAAA,SAAS,GAAG,EAAA,CAAA,IAAA,EAOhB;wBAGI,QAAA,GAAS,SAAS,CAAC,OAAO;AAC1B,wBAAA,KAAA,GAAM,QAAM,CAAC,UAAU,CAAC,IAAI,CAAC;wBACnC,IAAI,KAAG,EAAE;4BACD,KAAA,GAAM,IAAI,KAAK,EAAE;4BACvB,KAAG,CAAC,MAAM,GAAG,YAAA;AACX,gCAAA,QAAM,CAAC,KAAK,GAAG,KAAG,CAAC,KAAK;AACxB,gCAAA,QAAM,CAAC,MAAM,GAAG,KAAG,CAAC,MAAM;gCAC1B,KAAG,CAAC,SAAS,CAAC,KAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AAC1B,4BAAA,CAAC;AACD,4BAAA,KAAG,CAAC,GAAG,GAAG,SAAS;wBACrB;;;;wBAEA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,4BAA4B,CAAC,EAAE,OAAK,CAAC;AACrD,wBAAA,UAAU,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC;;;;;aAE7C;AAED,QAAA,cAAc,EAAE;AAClB,IAAA,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IAET,QACEA,IAAC,gBAAgB,EAAA,EACf,MAAM,EACJ,WAAW,KAAK,MAAM,IAAI,cAAc,CAAC,IACvCA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,kFAAkF,EAAA,QAAA,EAC/FC,cAAK,SAAS,EAAC,uDAAuD,EAAA,QAAA,EAAA,CACnE,MAAM,KACLD,GAAA,CAAC,aAAa,EAAA,EAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAC,MAAM,YACxC,CAAC,CAAC,cAAc,CAAC,EAAA,CACJ,CACjB,EACA,gBAAgB,KACfA,GAAA,CAAC,aAAa,EAAA,EAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAC,UAAU,YACpD,CAAC,CAAC,wBAAwB,CAAC,EAAA,CACd,CACjB,CAAA,EAAA,CACG,EAAA,CACF,IACJ,SAAS,EAAA,QAAA,EAGfA,aAAK,SAAS,EAAC,iCAAiC,EAAA,QAAA,EAC9CC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,mCAAmC,aAEhDA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,sCAAsC,EAAA,QAAA,EAAA,CACnDD,GAAA,CAAC,KAAK,EAAA,EAAC,SAAS,EAAC,iCAAiC,EAAA,QAAA,EAC/C,YAAY,EAAA,CACP,EACRA,IAAC,QAAQ,EAAA,EAAC,SAAS,EAAC,wEAAwE,YACzF,eAAe,EAAA,CACP,IACP,EAGNA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,yCAAyC,YACrD,OAAO,IACNA,aAAK,SAAS,EAAC,8BAA8B,EAAA,QAAA,EAAE,OAAO,GAAO,IAC3D,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,IAC3BA,aAAK,SAAS,EAAC,uGAAuG,EAAA,QAAA,EACpHC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,2BAA2B,aACxCD,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,2FAA2F,EAAA,CAAO,EAChH,CAAC,CAAC,oBAAoB,CAAC,CAAA,EAAA,CACpB,GACF,KAENA,aAAK,SAAS,EAAC,4DAA4D,EAAA,QAAA,EACzEA,GAAA,CAAA,QAAA,EAAA,EAAQ,GAAG,EAAE,SAAS,GAAI,EAAA,CACtB,CACP,GACG,CAAA,EAAA,CACF,EAAA,CACF,EAAA,CACW;AAEvB;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SelectComponent.js","sources":["../../../../../src/components/ui/SelectComponent.tsx"],"sourcesContent":["import React, { useState, useRef, useEffect } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { ChevronDownIcon } from \"lucide-react\";\nimport { useI18n } from \"../../hooks/useI18n\";\n\ninterface SelectOption {\n value: string;\n label: string;\n flag?: string;\n}\n\ninterface SelectProps {\n options: SelectOption[];\n value: string;\n onValueChange: (value: string) => void;\n placeholder?: string;\n className?: string;\n disabled?: boolean;\n error?: boolean;\n allowCustomValue?: boolean;\n inputMode?: React.InputHTMLAttributes<HTMLInputElement>[\"inputMode\"];\n maxLength?: number;\n pattern?: string;\n /** Réduit le padding pour une utilisation dans des cellules de tableau */\n compact?: boolean;\n}\n\nexport const Select = React.forwardRef<HTMLInputElement, SelectProps>(({\n options,\n value,\n onValueChange,\n placeholder,\n className = \"\",\n disabled = false,\n error = false,\n allowCustomValue = false,\n inputMode,\n maxLength,\n pattern,\n compact = false,\n}, ref) => {\n const { t } = useI18n();\n const [isOpen, setIsOpen] = useState(false);\n const selectRef = useRef<HTMLDivElement>(null);\n const [inputValue, setInputValue] = useState<string>(value || \"\");\n const [isSearching, setIsSearching] = useState(false);\n const internalInputRef = useRef<HTMLInputElement>(null);\n const [dropdownStyle, setDropdownStyle] = useState<React.CSSProperties>({});\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n // Combine refs\n React.useImperativeHandle(ref, () => internalInputRef.current as HTMLInputElement);\n\n const normalizeText = (text: string) =>\n (text || \"\")\n .normalize(\"NFD\")\n .replace(/[\\u0300-\\u036f]/g, \"\")\n .toLowerCase();\n\n const matchesNumericValue = (optionValue: string, input: string) => {\n // Strict matching for length to avoid \"1\" matching \"01\" and triggering auto-advance\n if (optionValue.length !== input.length) return false;\n\n const numericOption = parseInt(optionValue, 10);\n const numericInput = parseInt(input, 10);\n if (Number.isNaN(numericOption) || Number.isNaN(numericInput)) {\n return false;\n }\n return numericOption === numericInput;\n };\n\n // Helper to remove emoji flags from search input\n const removeEmojis = (text: string) => {\n // Remove emoji flags (regional indicator symbols) - using surrogate pairs\n return text.replace(/[\\uD83C][\\uDDE6-\\uDDFF]/g, '').trim();\n };\n\n const displayPlaceholder =\n placeholder ?? t(\"select_component.placeholder\");\n\n // Close dropdown when clicking outside (trigger ou portail dropdown)\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n const target = event.target as Node;\n const insideTrigger = selectRef.current?.contains(target);\n const insideDropdown = dropdownRef.current?.contains(target);\n if (!insideTrigger && !insideDropdown) {\n setIsOpen(false);\n }\n };\n\n if (isOpen) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () =>\n document.removeEventListener(\"mousedown\", handleClickOutside);\n }\n }, [isOpen]);\n\n const selectedOption = options.find((option) => option.value === value);\n\n useEffect(() => {\n if (!allowCustomValue) return;\n\n // Don't update input value if the input is currently focused\n // This prevents auto-formatting while typing (e.g. typing \"1\" becoming \"01\")\n if (document.activeElement === internalInputRef.current) return;\n\n if (!value) {\n setInputValue(\"\");\n return;\n }\n\n const optionMatch = options.find((option) => option.value === value);\n if (optionMatch) {\n // Include flag in the input value if it exists\n const displayValue = optionMatch.flag\n ? `${optionMatch.flag} ${optionMatch.label}`\n : optionMatch.label;\n setInputValue(displayValue);\n } else if (inputMode === \"numeric\") {\n // Pour les champs numériques, afficher la valeur brute\n setInputValue(value);\n }\n // Pour les autres cas, ne pas mettre à jour inputValue si pas de match\n // Cela permet de garder la recherche en cours\n }, [value, allowCustomValue, options, inputMode]);\n\n const handleSelect = (optionValue: string) => {\n onValueChange(optionValue);\n if (allowCustomValue) {\n const optionMatch = options.find(\n (option) => option.value === optionValue\n );\n if (optionMatch) {\n // Include flag in the input value if it exists\n const displayValue = optionMatch.flag\n ? `${optionMatch.flag} ${optionMatch.label}`\n : optionMatch.label;\n setInputValue(displayValue);\n } else {\n setInputValue(optionValue);\n }\n }\n setIsSearching(false);\n setIsOpen(false);\n };\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (!allowCustomValue) return;\n\n const nextValue = event.target.value;\n // Remove emojis before normalizing for matching\n const cleanedValue = removeEmojis(nextValue);\n const normalizedNext = normalizeText(cleanedValue);\n setInputValue(nextValue);\n setIsSearching(true);\n\n const exactMatch = options.find(\n (option) =>\n (normalizeText(option.value) === normalizedNext && option.value.length === normalizedNext.length) ||\n (normalizeText(option.label) === normalizedNext && option.label.length === normalizedNext.length) ||\n matchesNumericValue(option.value, normalizedNext)\n );\n\n if (exactMatch) {\n onValueChange(exactMatch.value);\n } else if (inputMode === \"numeric\") {\n // Pour les champs numériques (date), on accepte les valeurs personnalisées\n onValueChange(nextValue);\n } else if (cleanedValue === \"\") {\n // If the user clears the input, clear the selection\n onValueChange(\"\");\n }\n // Pour les autres cas (pays, etc.), on ne met à jour que si match exact\n };\n\n\n\n const filteredOptions =\n allowCustomValue && isSearching && inputValue\n ? options.filter((option) => {\n // Remove emojis from input before searching\n const cleanedInput = removeEmojis(inputValue);\n const searchValue = normalizeText(cleanedInput);\n return (\n normalizeText(option.label).includes(searchValue) ||\n normalizeText(option.value).includes(searchValue) ||\n matchesNumericValue(option.value, searchValue)\n );\n })\n : options;\n\n // Calcule la position absolue du dropdown pour le portail\n useEffect(() => {\n if (isOpen && selectRef.current) {\n const rect = selectRef.current.getBoundingClientRect();\n setDropdownStyle({\n position: \"fixed\",\n top: rect.bottom + 4,\n left: rect.left,\n width: rect.width,\n zIndex: 9999,\n });\n }\n }, [isOpen]);\n\n const fieldBaseClasses = `w-full px-3 border rounded-lg text-base transition-colors\n focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\n focus-within:outline-none focus-within:ring-2 focus-within:ring-[#11E5C5] focus-within:border-transparent\n ${compact ? \"py-2 text-sm\" : \"py-3 md:py-4\"}\n ${error\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover:border-gray-400\"\n }\n ${disabled ? \"opacity-50 cursor-not-allowed\" : \"cursor-pointer\"}`;\n\n return (\n <div className={`relative ${className}`} ref={selectRef}>\n {allowCustomValue ? (\n <div\n className={fieldBaseClasses.replace(\n \"cursor-pointer\",\n allowCustomValue ? \"cursor-text\" : \"cursor-pointer\"\n )}\n onClick={() => {\n if (disabled) return;\n internalInputRef.current?.focus();\n }}\n >\n <div className=\"flex items-center gap-2 w-full\">\n <input\n type=\"text\"\n value={inputValue}\n onChange={handleInputChange}\n onFocus={() => {\n if (!disabled) {\n setIsOpen(true);\n setIsSearching(false);\n }\n }}\n onBlur={(e) => {\n // Close dropdown if focus moves outside the component AND its dropdown portal\n const isInsideSelect = selectRef.current?.contains(e.relatedTarget as Node);\n const isInsideDropdown = dropdownRef.current?.contains(e.relatedTarget as Node);\n\n if (!isInsideSelect && !isInsideDropdown) {\n setIsOpen(false);\n }\n\n // On blur, ensure the input value matches the selected value's label if possible\n if (value) {\n const optionMatch = options.find((option) => option.value === value);\n if (optionMatch) {\n // Include flag in the input value if it exists\n const displayValue = optionMatch.flag\n ? `${optionMatch.flag} ${optionMatch.label}`\n : optionMatch.label;\n setInputValue(displayValue);\n }\n }\n }}\n placeholder={displayPlaceholder}\n className=\"flex-1 bg-transparent outline-none text-gray-900 placeholder:text-gray-500\"\n disabled={disabled}\n inputMode={inputMode}\n maxLength={maxLength}\n pattern={pattern}\n ref={internalInputRef}\n />\n </div>\n </div>\n ) : (\n <button\n type=\"button\"\n onClick={() => !disabled && setIsOpen(!isOpen)}\n disabled={disabled}\n className={`${fieldBaseClasses} text-left flex items-center justify-between`}\n >\n <span className={selectedOption ? \"text-gray-900\" : \"text-gray-500\"}>\n {selectedOption ? (\n <span className=\"flex items-center gap-2\">\n {selectedOption.flag && <span>{selectedOption.flag}</span>}\n {selectedOption.label}\n </span>\n ) : (\n displayPlaceholder\n )}\n </span>\n <ChevronDownIcon\n className={`h-4 w-4 text-gray-400 transition-transform ${isOpen ? \"rotate-180\" : \"\"\n }`}\n />\n </button>\n )}\n\n {isOpen && !disabled && ReactDOM.createPortal(\n <div\n ref={dropdownRef}\n style={dropdownStyle}\n className=\"bg-white border border-gray-300 rounded-lg shadow-lg max-h-60 overflow-y-auto\"\n >\n <div className=\"py-1\">\n {filteredOptions.map((option) => (\n <button\n key={option.value}\n type=\"button\"\n onMouseDown={(e) => {\n // Prevent input blur before click fires\n e.preventDefault();\n }}\n onClick={() => handleSelect(option.value)}\n className={`w-full text-left px-3 py-2 hover:bg-gray-100\n active:bg-gray-200 transition-colors text-base flex items-center gap-2\n ${option.value === value\n ? \"bg-gray-50 text-gray-900\"\n : \"text-gray-700\"\n }\n `}\n >\n {option.flag && <span className=\"text-lg\">{option.flag}</span>}\n {option.label}\n </button>\n ))}\n {filteredOptions.length === 0 && (\n <div className=\"px-3 py-2 text-sm text-gray-500\">\n {t(\"select_component.no_results\")}\n </div>\n )}\n </div>\n </div>,\n document.body,\n )}\n </div>\n );\n});\n"],"names":["React","_jsxs","_jsx"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Subtitle.js","sources":["../../../../../src/components/ui/Subtitle.tsx"],"sourcesContent":["import React from \"react\";\n\nconst Subtitle = ({\n children,\n className,\n}: {\n children: React.ReactNode;\n className?: string;\n}) => {\n return (\n <h2\n className={`text-[#3C3C40] text-center text-xs font-semibold leading-[120%] ${className}`}\n >\n {children}\n </h2>\n );\n};\n\nexport default Subtitle;\n"],"names":["_jsx"],"mappings":";;AAEA,IAAM,QAAQ,GAAG,UAAC,EAMjB,EAAA;QALC,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,SAAS,GAAA,EAAA,CAAA,SAAA;IAKT,QACEA,GAAA,CAAA,IAAA,EAAA,EACE,SAAS,EAAE,kEAAA,CAAA,MAAA,CAAmE,SAAS,CAAE,EAAA,QAAA,EAExF,QAAQ,EAAA,CACN;AAET;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Title.js","sources":["../../../../../src/components/ui/Title.tsx"],"sourcesContent":["import React from \"react\";\n\nconst Title = ({\n children,\n className,\n}: {\n children: React.ReactNode;\n className?: string;\n}) => {\n return (\n <h1\n className={`text-[#3C3C40] text-center font-poppins text-2xl font-bold leading-[110%] ${className}`}\n >\n {children}\n </h1>\n );\n};\n\nexport default Title;\n"],"names":["_jsx"],"mappings":";;AAEA,IAAM,KAAK,GAAG,UAAC,EAMd,EAAA;QALC,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,SAAS,GAAA,EAAA,CAAA,SAAA;IAKT,QACEA,GAAA,CAAA,IAAA,EAAA,EACE,SAAS,EAAE,4EAAA,CAAA,MAAA,CAA6E,SAAS,CAAE,EAAA,QAAA,EAElG,QAAQ,EAAA,CACN;AAET;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","sources":["../../../../src/config/env.ts"],"sourcesContent":["/**\n * Environment configuration\n * This file exposes environment variables to use across the application\n * DEPRECATED: Use getBaseURL() from api.ts for dynamic configuration\n */\n\nfunction getApiBaseUrl() {\n // SSR/test/Node/browser: use process.env or window\n if (typeof window !== \"undefined\" && window.VITE_API_BASE_URL) {\n return window.VITE_API_BASE_URL;\n }\n\n // Check if process is defined (Node.js environment)\n if (typeof process !== \"undefined\" && process.env) {\n if (process.env.VITE_API_BASE_URL) {\n return process.env.VITE_API_BASE_URL;\n }\n if (process.env.VITE_API_URL) {\n return process.env.VITE_API_URL;\n }\n }\n\n // Fallback for browser environments without explicit env vars\n return \"http://localhost:8888/backend\";\n}\n\nexport const API_BASE_URL = getApiBaseUrl();\n"],"names":[],"mappings":"AAAA;;;;AAIG;AAEH,SAAS,aAAa,GAAA;;IAEpB,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,iBAAiB,EAAE;QAC7D,OAAO,MAAM,CAAC,iBAAiB;IACjC;;IAGA,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE;AACjD,QAAA,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE;AACjC,YAAA,OAAO,OAAO,CAAC,GAAG,CAAC,iBAAiB;QACtC;AACA,QAAA,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE;AAC5B,YAAA,OAAO,OAAO,CAAC,GAAG,CAAC,YAAY;QACjC;IACF;;AAGA,IAAA,OAAO,+BAA+B;AACxC;AAEO,IAAM,YAAY,GAAG,aAAa;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"userInputForm.js","sources":["../../../../src/constants/userInputForm.ts"],"sourcesContent":["import type {\n AddressSuggestion,\n InformationType,\n RequestedFieldKey,\n SelectOption,\n} from \"../types/userInputForm\";\n\nconst days = Array.from({ length: 31 }, (_, index) => index + 1);\nconst currentYear = new Date().getFullYear();\nconst years = Array.from({ length: 120 }, (_, index) => currentYear - index);\n\nconst monthLabels = [\n \"Janvier\",\n \"Février\",\n \"Mars\",\n \"Avril\",\n \"Mai\",\n \"Juin\",\n \"Juillet\",\n \"Août\",\n \"Septembre\",\n \"Octobre\",\n \"Novembre\",\n \"Décembre\",\n];\n\nexport const DAY_OPTIONS: SelectOption[] = days.map((value) => ({\n value: String(value).padStart(2, \"0\"),\n label: String(value).padStart(2, \"0\"),\n}));\n\nexport const MONTH_OPTIONS: SelectOption[] = monthLabels.map(\n (label, index) => ({\n value: String(index + 1).padStart(2, \"0\"),\n label,\n })\n);\n\nexport const YEAR_OPTIONS: SelectOption[] = years.map((value) => ({\n value: String(value),\n label: String(value),\n}));\n\n\nexport const ADDRESS_SUGGESTIONS: string[] = [\n \"10 Rue de Rivoli, 75001 Paris, France\",\n \"221B Baker Street, NW1 6XE Londres, Royaume-Uni\",\n \"1600 Amphitheatre Parkway, 94043 Mountain View, États-Unis\",\n \"55 Rue du Faubourg Saint-Honoré, 75008 Paris, France\",\n \"1 Place du Commerce, 44000 Nantes, France\",\n \"Piazza del Colosseo 1, 00184 Rome, Italie\",\n \"Av. Paulista 1578, 01310-200 São Paulo, Brésil\",\n];\n\nexport const DEFAULT_FIELDS: Record<InformationType, RequestedFieldKey[]> = {\n identity: [\"nom\", \"prenom\", \"date_naissance\"],\n \"identity-legal\": [\"nom\", \"registrationNumber\", \"siret\", \"tva\", \"adresse\"],\n \"identity-legal-rep\": [\"legalRepresentativeNom\", \"legalRepresentativePrenom\"],\n contact: [\"email\", \"sms\"],\n address: [\"adresse\"],\n nationality: [\"nationalite\"],\n custom: [], // Custom forms use customFields instead\n};\n\nexport const FIELD_LABELS: Record<RequestedFieldKey, string> = {\n nom: \"user_input_form.fields.last_name\",\n prenom: \"user_input_form.fields.first_name\",\n date_naissance: \"user_input_form.fields.birth_date\",\n email: \"user_input_form.fields.email\",\n sms: \"user_input_form.fields.phone\",\n adresse: \"user_input_form.fields.address_line1\",\n nationalite: \"user_input_form.fields.nationality\",\n company: \"user_input_form.fields.company_name\",\n siret: \"user_input_form.fields.siret\",\n tva: \"user_input_form.fields.vat_number\",\n registrationNumber: \"user_input_form.fields.registration_number\",\n legalRepresentativeNom:\n \"user_input_form.fields.legal_representative_last_name\",\n legalRepresentativePrenom:\n \"user_input_form.fields.legal_representative_first_name\",\n legalRepresentativeSiren:\n \"user_input_form.fields.legal_representative_siren\",\n};\n\n// Backend endpoint pour l'autocomplétion d'adresses (sécurisé)\nexport const GEOCODING_AUTOCOMPLETE_ENDPOINT = \"/geocoding/autocomplete\";\n\nexport const FALLBACK_ADDRESS_SUGGESTIONS: AddressSuggestion[] =\n ADDRESS_SUGGESTIONS.map((label, index) => ({\n id: `fallback-${index}`,\n label,\n addressLine1: label,\n postalCode: \"\",\n city: \"\",\n country: \"\",\n }));\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigContext.js","sources":["../../../../src/context/ConfigContext.tsx"],"sourcesContent":["import React, { useEffect, type ReactNode } from \"react\";\nimport { configureApiBaseURL } from \"../services/api\";\nimport { API_BASE_URL } from \"../config/env\";\n\ninterface WindowWithEnv extends Window {\n ENV?: {\n VITE_API_URL?: string;\n };\n}\n\ninterface ConfigProviderProps {\n children: ReactNode;\n apiBaseUrl?: string;\n}\n\nexport const ConfigProvider: React.FC<ConfigProviderProps> = ({\n children,\n apiBaseUrl,\n}) => {\n // Fallback hierarchy: provided apiBaseUrl > env variable > default localhost\n const resolvedApiBaseUrl =\n apiBaseUrl ||\n (typeof window !== \"undefined\" &&\n (window as WindowWithEnv)?.ENV?.VITE_API_URL) ||\n API_BASE_URL;\n\n console.log('🔧 ConfigProvider - apiBaseUrl reçue en props:', apiBaseUrl);\n console.log('🔧 ConfigProvider - URL résolue:', resolvedApiBaseUrl);\n\n // Configure the API service with the resolved URL\n useEffect(() => {\n console.log('🔧 ConfigProvider - Configuration de l\\'API avec:', resolvedApiBaseUrl);\n configureApiBaseURL(resolvedApiBaseUrl);\n }, [resolvedApiBaseUrl]);\n\n return <>{children}</>;\n};\n"],"names":["_jsx","_Fragment"],"mappings":";;;;;AAeO,IAAM,cAAc,GAAkC,UAAC,EAG7D,EAAA;;QAFC,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,UAAU,GAAA,EAAA,CAAA,UAAA;;IAGV,IAAM,kBAAkB,GACtB,UAAU;SACT,OAAO,MAAM,KAAK,WAAW;aAC5B,CAAA,EAAA,GAAC,MAAwB,KAAA,IAAA,IAAxB,MAAM,KAAA,MAAA,GAAA,MAAA,GAAN,MAAM,CAAoB,GAAG,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,YAAY,CAAA,CAAC;AAC/C,QAAA,YAAY;AAEd,IAAA,OAAO,CAAC,GAAG,CAAC,gDAAgD,EAAE,UAAU,CAAC;AACzE,IAAA,OAAO,CAAC,GAAG,CAAC,kCAAkC,EAAE,kBAAkB,CAAC;;AAGnE,IAAA,SAAS,CAAC,YAAA;AACR,QAAA,OAAO,CAAC,GAAG,CAAC,mDAAmD,EAAE,kBAAkB,CAAC;QACpF,mBAAmB,CAAC,kBAAkB,CAAC;AACzC,IAAA,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC;IAExB,OAAOA,GAAA,CAAAC,QAAA,EAAA,EAAA,QAAA,EAAG,QAAQ,EAAA,CAAI;AACxB;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DocumentContext.js","sources":["../../../../src/context/DocumentContext.tsx"],"sourcesContent":["import { createContext, useContext, useState, type ReactNode } from \"react\";\nimport type { DrawerItem } from \"../utils/jdiCountry\";\n\n// Define the shape of our context\ntype DocumentContextType = {\n selectedDocumentType: DrawerItem | null;\n setSelectedDocumentType: (documentType: DrawerItem | null) => void;\n};\n\n// Create context with default values\nexport const DocumentContext = createContext<DocumentContextType>({\n selectedDocumentType: null,\n setSelectedDocumentType: () => {},\n});\n\n// Provider component to wrap the app with\ninterface DocumentProviderProps {\n children: ReactNode;\n}\n\nexport const DocumentProvider = ({ children }: DocumentProviderProps) => {\n const [selectedDocumentType, setSelectedDocumentType] =\n useState<DrawerItem | null>(null);\n\n return (\n <DocumentContext.Provider\n value={{ selectedDocumentType, setSelectedDocumentType }}\n >\n {children}\n </DocumentContext.Provider>\n );\n};\n\n// Custom hook to use the document context\nexport const useDocumentContext = () => useContext(DocumentContext);\n"],"names":["_jsx"],"mappings":";;;AASA;AACO,IAAM,eAAe,GAAG,aAAa,CAAsB;AAChE,IAAA,oBAAoB,EAAE,IAAI;IAC1B,uBAAuB,EAAE,cAAO,CAAC;AAClC,CAAA;AAOM,IAAM,gBAAgB,GAAG,UAAC,EAAmC,EAAA;AAAjC,IAAA,IAAA,QAAQ,GAAA,EAAA,CAAA,QAAA;IACnC,IAAA,EAAA,GACJ,QAAQ,CAAoB,IAAI,CAAC,EAD5B,oBAAoB,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,uBAAuB,GAAA,EAAA,CAAA,CAAA,CACjB;AAEnC,IAAA,QACEA,GAAA,CAAC,eAAe,CAAC,QAAQ,EAAA,EACvB,KAAK,EAAE,EAAE,oBAAoB,EAAA,oBAAA,EAAE,uBAAuB,EAAA,uBAAA,EAAE,YAEvD,QAAQ,EAAA,CACgB;AAE/B;AAEA;AACO,IAAM,kBAAkB,GAAG,YAAA,EAAM,OAAA,UAAU,CAAC,eAAe,CAAC,CAAA,CAA3B;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SessionContext.js","sources":["../../../../src/context/SessionContext.tsx"],"sourcesContent":["import type { SessionData } from \"../types/session\";\nimport type { UserInput } from \"../types/userInput\";\nimport type { ContactInfo } from \"../types/contactInfo\";\n\ninterface SessionStore {\n session: SessionData | null;\n loading: boolean;\n error: string | null;\n isExpired: boolean;\n userInput: UserInput;\n contactInfo: ContactInfo;\n}\n\n// Store global pour la session\nlet sessionStore: SessionStore = {\n session: null,\n loading: true,\n error: null,\n isExpired: false,\n userInput: {},\n contactInfo: { email: \"\", phoneNumber: \"\" },\n};\n\nexport const setSessionStore = (store: SessionStore) => {\n sessionStore = store;\n};\n\nexport const getSession = (): SessionStore => {\n return sessionStore;\n};\n"],"names":[],"mappings":"AAaA;AACA,IAAI,YAAY,GAAiB;AAC/B,IAAA,OAAO,EAAE,IAAI;AACb,IAAA,OAAO,EAAE,IAAI;AACb,IAAA,KAAK,EAAE,IAAI;AACX,IAAA,SAAS,EAAE,KAAK;AAChB,IAAA,SAAS,EAAE,EAAE;IACb,WAAW,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE;CAC5C;AAEM,IAAM,eAAe,GAAG,UAAC,KAAmB,EAAA;IACjD,YAAY,GAAG,KAAK;AACtB;AAEO,IAAM,UAAU,GAAG,YAAA;AACxB,IAAA,OAAO,YAAY;AACrB;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useClientInfo.js","sources":["../../../../src/hooks/useClientInfo.tsx"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport { UAParser } from \"ua-parser-js\";\nimport { ClientInfo } from \"../types/session\";\n\ntype IpapiResponse = {\n city: string;\n region: string;\n country: string;\n postal: string;\n ip: string;\n};\n\nconst getClientInfoFromUA = (): Pick<ClientInfo, \"device\" | \"browser\" | \"os\"> => {\n const uaResult = new UAParser().getResult();\n return {\n device: uaResult.device.model || \"unknown_device\",\n browser: uaResult.browser.name || \"unknown_browser\",\n os: uaResult.os.name || \"unknown_os\",\n };\n};\n\nexport const useClientInfo = () => {\n const [info, setInfo] = useState<ClientInfo>({\n device: \"\",\n browser: \"\",\n os: \"\",\n });\n const [isLoaded, setIsLoaded] = useState(false);\n\n useEffect(() => {\n const { device, browser, os } = getClientInfoFromUA();\n\n fetch(\"https://ipapi.co/json/\")\n .then((response) => response.json())\n .then((data: IpapiResponse) => {\n setInfo({\n device,\n browser,\n os,\n ip: data.ip || \"unknown_ip\",\n location:\n data.city && data.postal && data.region && data.country\n ? `${data.city} (${data.postal}), ${data.region}, ${data.country}`\n : \"unknown_location\",\n });\n setIsLoaded(true);\n })\n .catch(() => {\n setInfo({\n device,\n browser,\n os,\n ip: \"unknown_ip\",\n location: \"unknown_location\",\n });\n setIsLoaded(true);\n });\n }, []);\n\n return { info, isLoaded };\n};\n"],"names":[],"mappings":";;;AAYA,IAAM,mBAAmB,GAAG,YAAA;IAC1B,IAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC,SAAS,EAAE;IAC3C,OAAO;AACL,QAAA,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,IAAI,gBAAgB;AACjD,QAAA,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,iBAAiB;AACnD,QAAA,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,IAAI,YAAY;KACrC;AACH,CAAC;AAEM,IAAM,aAAa,GAAG,YAAA;IACrB,IAAA,EAAA,GAAkB,QAAQ,CAAa;AAC3C,QAAA,MAAM,EAAE,EAAE;AACV,QAAA,OAAO,EAAE,EAAE;AACX,QAAA,EAAE,EAAE,EAAE;AACP,KAAA,CAAC,EAJK,IAAI,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,OAAO,QAIlB;IACI,IAAA,EAAA,GAA0B,QAAQ,CAAC,KAAK,CAAC,EAAxC,QAAQ,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,WAAW,GAAA,EAAA,CAAA,CAAA,CAAmB;AAE/C,IAAA,SAAS,CAAC,YAAA;AACF,QAAA,IAAA,EAAA,GAA0B,mBAAmB,EAAE,EAA7C,MAAM,GAAA,EAAA,CAAA,MAAA,EAAE,OAAO,GAAA,EAAA,CAAA,OAAA,EAAE,EAAE,GAAA,EAAA,CAAA,EAA0B;QAErD,KAAK,CAAC,wBAAwB;aAC3B,IAAI,CAAC,UAAC,QAAQ,EAAA,EAAK,OAAA,QAAQ,CAAC,IAAI,EAAE,CAAA,CAAf,CAAe;aAClC,IAAI,CAAC,UAAC,IAAmB,EAAA;AACxB,YAAA,OAAO,CAAC;AACN,gBAAA,MAAM,EAAA,MAAA;AACN,gBAAA,OAAO,EAAA,OAAA;AACP,gBAAA,EAAE,EAAA,EAAA;AACF,gBAAA,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,YAAY;AAC3B,gBAAA,QAAQ,EACN,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC;AAC9C,sBAAE,EAAA,CAAA,MAAA,CAAG,IAAI,CAAC,IAAI,eAAK,IAAI,CAAC,MAAM,EAAA,KAAA,CAAA,CAAA,MAAA,CAAM,IAAI,CAAC,MAAM,eAAK,IAAI,CAAC,OAAO;AAChE,sBAAE,kBAAkB;AACzB,aAAA,CAAC;YACF,WAAW,CAAC,IAAI,CAAC;AACnB,QAAA,CAAC;AACA,aAAA,KAAK,CAAC,YAAA;AACL,YAAA,OAAO,CAAC;AACN,gBAAA,MAAM,EAAA,MAAA;AACN,gBAAA,OAAO,EAAA,OAAA;AACP,gBAAA,EAAE,EAAA,EAAA;AACF,gBAAA,EAAE,EAAE,YAAY;AAChB,gBAAA,QAAQ,EAAE,kBAAkB;AAC7B,aAAA,CAAC;YACF,WAAW,CAAC,IAAI,CAAC;AACnB,QAAA,CAAC,CAAC;IACN,CAAC,EAAE,EAAE,CAAC;AAEN,IAAA,OAAO,EAAE,IAAI,EAAA,IAAA,EAAE,QAAQ,EAAA,QAAA,EAAE;AAC3B;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useCountryOptions.js","sources":["../../../../src/hooks/useCountryOptions.ts"],"sourcesContent":["import { useMemo } from \"react\";\nimport countryISO from \"../i18n/country/country.iso2.fr.json\";\nimport { useI18n } from \"./useI18n\";\nimport type { SelectOption } from \"../types/userInputForm\";\n\nconst ISO_CODES = Object.keys(countryISO);\n\nexport const useCountryOptions = (placeholderKey: string): SelectOption[] => {\n const { t, currentLanguage } = useI18n();\n\n return useMemo(() => {\n const countries = ISO_CODES.filter((code) => code !== \"EU\")\n .map((code) => ({ value: code, label: t(code) }))\n .sort((a, b) => a.label.localeCompare(b.label, currentLanguage));\n\n return [{ value: \"\", label: t(placeholderKey) }, ...countries];\n }, [t, currentLanguage, placeholderKey]);\n};\n"],"names":[],"mappings":";;;;;AAKA,IAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;AAElC,IAAM,iBAAiB,GAAG,UAAC,cAAsB,EAAA;IAChD,IAAA,EAAA,GAAyB,OAAO,EAAE,EAAhC,CAAC,GAAA,EAAA,CAAA,CAAA,EAAE,eAAe,GAAA,EAAA,CAAA,eAAc;AAExC,IAAA,OAAO,OAAO,CAAC,YAAA;AACb,QAAA,IAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,UAAC,IAAI,EAAA,EAAK,OAAA,IAAI,KAAK,IAAI,CAAA,CAAb,CAAa;aACvD,GAAG,CAAC,UAAC,IAAI,EAAA,EAAK,QAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAC,CAAjC,CAAiC;aAC/C,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,EAAA,EAAK,OAAA,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,EAAE,eAAe,CAAC,CAAA,CAA/C,CAA+C,CAAC;AAElE,QAAA,OAAA,aAAA,CAAA,CAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,cAAc,CAAC,EAAE,CAAA,EAAK,SAAS,EAAA,IAAA,CAAA;IAC/D,CAAC,EAAE,CAAC,CAAC,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;AAC1C;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useI18n.js","sources":["../../../../src/hooks/useI18n.ts"],"sourcesContent":["import { useTranslation } from 'react-i18next';\nimport { useState, useEffect } from 'react';\nimport sdkI18n from '../i18n';\n\nexport const useI18n = () => {\n // Force re-render when language changes\n const [currentLanguage, setCurrentLanguage] = useState(sdkI18n.language);\n\n // Listen for language change events\n useEffect(() => {\n const handleLanguageChange = (lng: string) => {\n console.log(`🌐 useI18n - Language changed to: ${lng}`);\n setCurrentLanguage(lng);\n };\n\n sdkI18n.on('languageChanged', handleLanguageChange);\n\n return () => {\n sdkI18n.off('languageChanged', handleLanguageChange);\n };\n }, []);\n\n // Utiliser l'instance i18n du SDK au lieu de l'instance globale\n const { t, i18n } = useTranslation('translation', { i18n: sdkI18n });\n\n const translateCodeDescription = (code: string): string => {\n // Utiliser la structure code_description (ex: \"2.2_description\", \"4.0_description\")\n const key = `${code}_description`;\n\n // Utiliser la traduction avec un fallback générique si non trouvée\n return t(key, { defaultValue: `Erreur: ${code}` });\n };\n\n const translateDocumentType = (documentType: string): string => {\n return t(`documentTypes.${documentType}`, { defaultValue: documentType });\n };\n\n const setLanguage = async (language: string) => {\n try {\n console.log(`🌐 useI18n - Setting language to: ${language}`);\n await i18n.changeLanguage(language);\n\n // Persist to localStorage\n localStorage.setItem('datakeen-sdk-language', language);\n console.log(`💾 useI18n - Language persisted to localStorage: ${language}`);\n } catch (error) {\n console.error(`❌ useI18n - Error changing language:`, error);\n }\n };\n\n return {\n t,\n translateCodeDescription,\n translateDocumentType,\n setLanguage,\n currentLanguage: i18n.language\n };\n};\n"],"names":[],"mappings":";;;;;AAIO,IAAM,OAAO,GAAG,YAAA;;AAEf,IAAA,IAAA,EAAA,GAAwC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA,CAAlD,EAAA,CAAA,CAAA,CAAA,CAAA,KAAE,kBAAkB;;AAG1C,IAAA,SAAS,CAAC,YAAA;QACR,IAAM,oBAAoB,GAAG,UAAC,GAAW,EAAA;AACvC,YAAA,OAAO,CAAC,GAAG,CAAC,sDAAqC,GAAG,CAAE,CAAC;YACvD,kBAAkB,CAAC,GAAG,CAAC;AACzB,QAAA,CAAC;AAED,QAAA,OAAO,CAAC,EAAE,CAAC,iBAAiB,EAAE,oBAAoB,CAAC;QAEnD,OAAO,YAAA;AACL,YAAA,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,oBAAoB,CAAC;AACtD,QAAA,CAAC;IACH,CAAC,EAAE,EAAE,CAAC;;AAGA,IAAA,IAAA,KAAc,cAAc,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAA5D,CAAC,OAAA,EAAE,IAAI,UAAqD;IAEpE,IAAM,wBAAwB,GAAG,UAAC,IAAY,EAAA;;AAE5C,QAAA,IAAM,GAAG,GAAG,EAAA,CAAA,MAAA,CAAG,IAAI,iBAAc;;AAGjC,QAAA,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,YAAY,EAAE,UAAA,CAAA,MAAA,CAAW,IAAI,CAAE,EAAE,CAAC;AACpD,IAAA,CAAC;IAED,IAAM,qBAAqB,GAAG,UAAC,YAAoB,EAAA;AACjD,QAAA,OAAO,CAAC,CAAC,gBAAA,CAAA,MAAA,CAAiB,YAAY,CAAE,EAAE,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;AAC3E,IAAA,CAAC;IAED,IAAM,WAAW,GAAG,UAAO,QAAgB,EAAA,EAAA,OAAA,SAAA,CAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,YAAA;;;;;;AAEvC,oBAAA,OAAO,CAAC,GAAG,CAAC,sDAAqC,QAAQ,CAAE,CAAC;AAC5D,oBAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;;AAAnC,oBAAA,EAAA,CAAA,IAAA,EAAmC;;AAGnC,oBAAA,YAAY,CAAC,OAAO,CAAC,uBAAuB,EAAE,QAAQ,CAAC;AACvD,oBAAA,OAAO,CAAC,GAAG,CAAC,qEAAoD,QAAQ,CAAE,CAAC;;;;AAE3E,oBAAA,OAAO,CAAC,KAAK,CAAC,2CAAsC,EAAE,OAAK,CAAC;;;;;SAE/D;IAED,OAAO;AACL,QAAA,CAAC,EAAA,CAAA;AACD,QAAA,wBAAwB,EAAA,wBAAA;AACxB,QAAA,qBAAqB,EAAA,qBAAA;AACrB,QAAA,WAAW,EAAA,WAAA;QACX,eAAe,EAAE,IAAI,CAAC;KACvB;AACH;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useIsMobile.js","sources":["../../../../src/hooks/useIsMobile.tsx"],"sourcesContent":["import { useEffect, useState } from \"react\";\n\nconst useIsMobile = (breakpoint = 640) => {\n const [isMobile, setIsMobile] = useState(\n typeof window !== \"undefined\" ? window.innerWidth < breakpoint : false\n );\n\n useEffect(() => {\n const mediaQuery = window.matchMedia(`(max-width: ${breakpoint}px)`);\n\n const handleChange = () => setIsMobile(mediaQuery.matches);\n\n mediaQuery.addEventListener(\"change\", handleChange);\n handleChange(); // initial check\n\n return () => mediaQuery.removeEventListener(\"change\", handleChange);\n }, [breakpoint]);\n\n return isMobile;\n};\n\nexport default useIsMobile;\n"],"names":[],"mappings":";;AAEA,IAAM,WAAW,GAAG,UAAC,UAAgB,EAAA;AAAhB,IAAA,IAAA,UAAA,KAAA,MAAA,EAAA,EAAA,UAAA,GAAA,GAAgB,CAAA,CAAA;IAC7B,IAAA,EAAA,GAA0B,QAAQ,CACtC,OAAO,MAAM,KAAK,WAAW,GAAG,MAAM,CAAC,UAAU,GAAG,UAAU,GAAG,KAAK,CACvE,EAFM,QAAQ,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,WAAW,GAAA,EAAA,CAAA,CAAA,CAE3B;AAED,IAAA,SAAS,CAAC,YAAA;QACR,IAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,cAAA,CAAA,MAAA,CAAe,UAAU,EAAA,KAAA,CAAK,CAAC;AAEpE,QAAA,IAAM,YAAY,GAAG,YAAA,EAAM,OAAA,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA,CAA/B,CAA+B;AAE1D,QAAA,UAAU,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC;QACnD,YAAY,EAAE,CAAC;AAEf,QAAA,OAAO,YAAA,EAAM,OAAA,UAAU,CAAC,mBAAmB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA,CAAtD,CAAsD;AACrE,IAAA,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;AAEhB,IAAA,OAAO,QAAQ;AACjB;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useNfcSseStatus.js","sources":["../../../../src/hooks/useNfcSseStatus.ts"],"sourcesContent":["import { useEffect, useRef, useState } from \"react\";\n\nexport type NfcStatus = \"pending\" | \"opened\" | \"success\" | \"completed\" | \"failed\";\n\nconst SUCCESS_DISPLAY_DURATION_MS = 2500;\n\ninterface UseNfcSseStatusOptions {\n sessionId: string;\n apiBaseUrl: string;\n onCompleted: () => void;\n}\n\nexport function useNfcSseStatus({\n sessionId,\n apiBaseUrl,\n onCompleted,\n}: UseNfcSseStatusOptions) {\n const [status, setStatus] = useState<NfcStatus>(\"pending\");\n const onCompletedRef = useRef(onCompleted);\n onCompletedRef.current = onCompleted;\n\n useEffect(() => {\n if (!sessionId || !apiBaseUrl) return;\n\n const url = `${apiBaseUrl}/session/sdk/${sessionId}/nfc-status`;\n const source = new EventSource(url);\n\n source.onmessage = (event) => {\n try {\n const data = JSON.parse(event.data) as { status: NfcStatus };\n if (data.status === \"completed\") {\n source.close();\n setStatus(\"success\");\n setTimeout(() => {\n setStatus(\"completed\");\n onCompletedRef.current();\n }, SUCCESS_DISPLAY_DURATION_MS);\n } else {\n setStatus(data.status);\n }\n } catch {\n // message malformé, on ignore\n }\n };\n\n source.onerror = () => {\n // EventSource reconnecte automatiquement — pas d'action requise\n };\n\n // Fermer le flux uniquement quand la page se ferme réellement, sinon le SSE reste ouvert côté\n // serveur (heartbeat + listener qui fuient). `pagehide` couvre la fermeture d'onglet/navigation\n // (plus fiable que `beforeunload` sur mobile).\n //\n // NE PAS fermer sur `visibilitychange`/`hidden` : le passage en arrière-plan est le geste\n // NORMAL de l'utilisateur qui bascule vers son téléphone pour scanner le QR. Fermer à ce\n // moment-là tue le flux définitivement (aucune réouverture), donc les events `opened` /\n // `completed` émis pendant le scan ne sont jamais reçus et le front reste bloqué sur le QR.\n const closeSource = () => source.close();\n window.addEventListener(\"pagehide\", closeSource);\n\n return () => {\n window.removeEventListener(\"pagehide\", closeSource);\n source.close();\n };\n }, [sessionId, apiBaseUrl]);\n\n return { status };\n}\n"],"names":[],"mappings":";;AAIA,IAAM,2BAA2B,GAAG,IAAI;AAQlC,SAAU,eAAe,CAAC,EAIP,EAAA;AAHvB,IAAA,IAAA,SAAS,eAAA,EACT,UAAU,GAAA,EAAA,CAAA,UAAA,EACV,WAAW,GAAA,EAAA,CAAA,WAAA;IAEL,IAAA,EAAA,GAAsB,QAAQ,CAAY,SAAS,CAAC,EAAnD,MAAM,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,SAAS,GAAA,EAAA,CAAA,CAAA,CAAkC;AAC1D,IAAA,IAAM,cAAc,GAAG,MAAM,CAAC,WAAW,CAAC;AAC1C,IAAA,cAAc,CAAC,OAAO,GAAG,WAAW;AAEpC,IAAA,SAAS,CAAC,YAAA;AACR,QAAA,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU;YAAE;AAE/B,QAAA,IAAM,GAAG,GAAG,EAAA,CAAA,MAAA,CAAG,UAAU,EAAA,eAAA,CAAA,CAAA,MAAA,CAAgB,SAAS,gBAAa;AAC/D,QAAA,IAAM,MAAM,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC;AAEnC,QAAA,MAAM,CAAC,SAAS,GAAG,UAAC,KAAK,EAAA;AACvB,YAAA,IAAI;gBACF,IAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAA0B;AAC5D,gBAAA,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE;oBAC/B,MAAM,CAAC,KAAK,EAAE;oBACd,SAAS,CAAC,SAAS,CAAC;AACpB,oBAAA,UAAU,CAAC,YAAA;wBACT,SAAS,CAAC,WAAW,CAAC;wBACtB,cAAc,CAAC,OAAO,EAAE;oBAC1B,CAAC,EAAE,2BAA2B,CAAC;gBACjC;qBAAO;AACL,oBAAA,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;gBACxB;YACF;AAAE,YAAA,OAAA,EAAA,EAAM;;YAER;AACF,QAAA,CAAC;QAED,MAAM,CAAC,OAAO,GAAG,YAAA;;AAEjB,QAAA,CAAC;;;;;;;;;QAUD,IAAM,WAAW,GAAG,YAAA,EAAM,OAAA,MAAM,CAAC,KAAK,EAAE,CAAA,CAAd,CAAc;AACxC,QAAA,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,WAAW,CAAC;QAEhD,OAAO,YAAA;AACL,YAAA,MAAM,CAAC,mBAAmB,CAAC,UAAU,EAAE,WAAW,CAAC;YACnD,MAAM,CAAC,KAAK,EAAE;AAChB,QAAA,CAAC;AACH,IAAA,CAAC,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AAE3B,IAAA,OAAO,EAAE,MAAM,EAAA,MAAA,EAAE;AACnB;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useRouteCSS.js","sources":["../../../../src/hooks/useRouteCSS.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { cssLoader, RouteCSS, ROUTE_CSS_MAP } from '../utils/cssLoader';\n\n/**\n * Hook to load CSS for specific routes/components\n * @param routeName - Name of the route to load CSS for\n * @param options - Loading options\n */\ninterface UseRouteCSSOptions {\n /** Whether to unload CSS when component unmounts (default: false for better performance) */\n unloadOnUnmount?: boolean;\n /** Custom CSS content to load inline instead of external file */\n inlineCSS?: string;\n /** Whether to load CSS immediately or wait for manual trigger */\n immediate?: boolean;\n}\n\nexport function useRouteCSS(\n routeName: RouteCSS | string,\n options: UseRouteCSSOptions = {}\n) {\n const {\n unloadOnUnmount = false,\n inlineCSS,\n immediate = true\n } = options;\n\n useEffect(() => {\n if (!immediate) return;\n\n const loadCSS = async () => {\n try {\n if (inlineCSS) {\n cssLoader.loadInlineCSS(routeName, inlineCSS);\n } else if (routeName in ROUTE_CSS_MAP) {\n const cssPath = ROUTE_CSS_MAP[routeName as RouteCSS];\n await cssLoader.loadRouteCSS(routeName, cssPath);\n } else {\n // Fallback: try to load CSS file with same name as route\n await cssLoader.loadRouteCSS(routeName, `css/routes/${routeName}.css`);\n }\n } catch (error) {\n console.warn(`Failed to load CSS for route ${routeName}:`, error);\n }\n };\n\n loadCSS();\n\n // Cleanup function\n return () => {\n if (unloadOnUnmount) {\n cssLoader.unloadRouteCSS(routeName);\n }\n };\n }, [routeName, inlineCSS, immediate, unloadOnUnmount]);\n\n // Return manual control functions\n const loadCSS = async () => {\n try {\n if (inlineCSS) {\n cssLoader.loadInlineCSS(routeName, inlineCSS);\n } else if (routeName in ROUTE_CSS_MAP) {\n const cssPath = ROUTE_CSS_MAP[routeName as RouteCSS];\n await cssLoader.loadRouteCSS(routeName, cssPath);\n } else {\n await cssLoader.loadRouteCSS(routeName, `css/routes/${routeName}.css`);\n }\n } catch (error) {\n console.warn(`Failed to load CSS for route ${routeName}:`, error);\n }\n };\n\n const unloadCSS = () => {\n cssLoader.unloadRouteCSS(routeName);\n };\n\n return { loadCSS, unloadCSS };\n}\n\n/**\n * Hook to load multiple CSS routes at once\n * @param routeNames - Array of route names to load\n * @param options - Loading options\n */\nexport function useMultipleRouteCSS(\n routeNames: (RouteCSS | string)[],\n options: UseRouteCSSOptions = {}\n) {\n const { unloadOnUnmount = false, immediate = true } = options;\n\n useEffect(() => {\n if (!immediate) return;\n\n const loadAllCSS = async () => {\n for (const routeName of routeNames) {\n try {\n if (routeName in ROUTE_CSS_MAP) {\n const cssPath = ROUTE_CSS_MAP[routeName as RouteCSS];\n await cssLoader.loadRouteCSS(routeName, cssPath);\n } else {\n await cssLoader.loadRouteCSS(routeName, `css/routes/${routeName}.css`);\n }\n } catch (error) {\n console.warn(`Failed to load CSS for route ${routeName}:`, error);\n }\n }\n };\n\n loadAllCSS();\n\n return () => {\n if (unloadOnUnmount) {\n routeNames.forEach(routeName => {\n cssLoader.unloadRouteCSS(routeName);\n });\n }\n };\n }, [routeNames, immediate, unloadOnUnmount]);\n}"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useSession.js","sources":["../../../../src/hooks/useSession.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport DatakeenSession from \"../components/DatakeenSession\";\nimport type { UseSessionReturn, SessionConfig } from \"../types/session\";\n\n/**\n * Custom hook to manage the session component.\n * @param {string} sessionId - The ID of the session.\n * @param {SessionConfig} sessionConfig - Configuration for the session (optional).\n * @param {string} apiBaseUrl - Optional API base URL for dynamic environment configuration.\n * @returns {UseSessionReturn} - An object containing the session component. The session component is a React element that can be rendered in your application.\n */\nconst useSession = (\n sessionId: string,\n sessionConfig?: SessionConfig,\n apiBaseUrl?: string,\n sessionToken?: string\n): UseSessionReturn => {\n const SessionComponent = useMemo(() => {\n if (!sessionId) {\n return <div>No session ID provided.</div>;\n }\n return (\n <DatakeenSession\n sessionId={sessionId}\n sessionToken={sessionToken}\n sessionConfig={sessionConfig}\n apiBaseUrl={apiBaseUrl}\n />\n );\n }, [sessionId, sessionConfig, apiBaseUrl, sessionToken]);\n\n return {\n SessionComponent,\n };\n};\n\nexport default useSession;\n"],"names":["_jsx"],"mappings":";;;;AAIA;;;;;;AAMG;AACH,IAAM,UAAU,GAAG,UACjB,SAAiB,EACjB,aAA6B,EAC7B,UAAmB,EACnB,YAAqB,EAAA;IAErB,IAAM,gBAAgB,GAAG,OAAO,CAAC,YAAA;QAC/B,IAAI,CAAC,SAAS,EAAE;AACd,YAAA,OAAOA,mDAAkC;QAC3C;QACA,QACEA,IAAC,eAAe,EAAA,EACd,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,UAAU,EAAA,CACtB;IAEN,CAAC,EAAE,CAAC,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;IAExD,OAAO;AACL,QAAA,gBAAgB,EAAA,gBAAA;KACjB;AACH;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useSessionData.js","sources":["../../../../src/hooks/useSessionData.ts"],"sourcesContent":["import { useState, useEffect, useRef } from \"react\";\nimport type { UserInput } from \"../types/userInput\";\nimport type { ContactInfo } from \"../types/contactInfo\";\nimport {\n clearSessionSensitiveData,\n fetchSessionById,\n isSessionExpired,\n updateSessionUserInput,\n updateSessionContactInfo,\n storeDocumentOptions,\n sendClientInfo,\n} from \"../services/sessionService\";\nimport { logSessionStarted } from \"../services/auditTrailService\";\nimport type { ClientInfo, SessionData } from \"../types/session\";\nimport {\n getSessionMemoryContactInfo,\n getSessionMemoryUserInput,\n setActiveSessionId,\n setSessionMemoryContactInfo,\n setSessionMemoryUserInput,\n} from \"../services/sessionMemoryStore\";\n\nexport const useSessionData = (\n sessionId: string,\n clientInfo: ClientInfo,\n clientInfoLoaded: boolean,\n) => {\n const [session, setSessionState] = useState<SessionData | null>(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n const [isExpired, setIsExpired] = useState(false);\n\n const [userInput, setUserInput] = useState<UserInput>({});\n\n const [contactInfo, setContactInfo] = useState<ContactInfo>({\n email: \"\",\n phoneNumber: \"\",\n });\n\n const maskClientInfoForLog = (input: ClientInfo): string => {\n if (!input) {\n return \"[client-info-unavailable]\";\n }\n\n const maskedIp = input.ip ? input.ip.replace(/\\d+$/, \"***\") : \"unknown\";\n const device = input.device || \"unknown\";\n return `device=${device}, ip=${maskedIp}`;\n };\n\n const normalizeSessionData = (\n sessionData: SessionData,\n previousSession?: SessionData | null,\n ): SessionData => {\n const templateToUse = sessionData.template ?? previousSession?.template;\n const normalizedBase =\n templateToUse && sessionData.template !== templateToUse\n ? ({\n ...sessionData,\n template: templateToUse,\n } as SessionData)\n : sessionData;\n\n const templateNodes = templateToUse?.nodes || [];\n const endNodeWithCallback = templateNodes.find(\n (node) => node.type === \"end\" && node.callbackURL !== undefined,\n );\n\n if (endNodeWithCallback && endNodeWithCallback.callbackURL !== undefined) {\n const callbackValue =\n endNodeWithCallback.callbackURL !== null\n ? endNodeWithCallback.callbackURL\n : \"\";\n return {\n ...normalizedBase,\n callbackURL: callbackValue,\n };\n }\n\n if (normalizedBase.callbackURL !== undefined) {\n return normalizedBase;\n }\n\n if (previousSession?.callbackURL !== undefined) {\n return {\n ...normalizedBase,\n callbackURL: previousSession.callbackURL,\n };\n }\n\n return normalizedBase;\n };\n\n const setSession = (\n value:\n | SessionData\n | null\n | ((prev: SessionData | null) => SessionData | null),\n ) => {\n setSessionState((previousSession) => {\n const nextValue =\n typeof value === \"function\"\n ? (value as (prev: SessionData | null) => SessionData | null)(\n previousSession,\n )\n : value;\n\n if (nextValue) {\n return normalizeSessionData(nextValue, previousSession);\n }\n\n return null;\n });\n };\n\n // Load session data\n const loadSession = async () => {\n if (!sessionId) return;\n setActiveSessionId(sessionId);\n\n setLoading(true);\n try {\n const sessionData = await fetchSessionById(sessionId);\n setSession(sessionData);\n\n // Check if session is expired\n if (isSessionExpired(sessionData)) {\n setIsExpired(true);\n setLoading(false);\n return;\n }\n\n // Initialize configuration based on session template\n if (sessionData.template) {\n // Store document options for each type in localStorage\n const templateNodes = sessionData.template.nodes;\n templateNodes.forEach((node) => {\n if (\n node.type === \"document-selection\" &&\n node.requiredDocumentType &&\n node.selectedOptions.length > 0\n ) {\n storeDocumentOptions(\n sessionId,\n node.requiredDocumentType,\n node.selectedOptions,\n );\n } else if (\n node.type === \"document-collection\" &&\n node.allowedDocumentTypes &&\n node.allowedDocumentTypes.length > 0\n ) {\n // Store allowed document types as names for document-collection nodes\n const documentNames = node.allowedDocumentTypes.map(\n (doc) => doc.name,\n );\n storeDocumentOptions(\n sessionId,\n \"document-collection\",\n documentNames,\n );\n }\n });\n\n const memoryUserInput = getSessionMemoryUserInput(sessionId);\n if (Object.keys(memoryUserInput).length > 0) {\n setUserInput((prev) => ({\n ...prev,\n ...memoryUserInput,\n }));\n } else if (\n sessionData.userInput &&\n Object.keys(sessionData.userInput).length > 0\n ) {\n const mergedUserInput = {\n ...(sessionData.userInput as Record<string, unknown>),\n };\n setUserInput((prev) => ({\n ...prev,\n ...mergedUserInput,\n }));\n setSessionMemoryUserInput(sessionId, mergedUserInput as UserInput);\n }\n\n const memoryContactInfo = getSessionMemoryContactInfo(sessionId);\n if (memoryContactInfo.email || memoryContactInfo.phoneNumber) {\n setContactInfo((prev) => ({\n ...prev,\n ...memoryContactInfo,\n }));\n } else if (\n sessionData.contactInfo &&\n Object.keys(sessionData.contactInfo).length > 0\n ) {\n const mergedContactInfo: ContactInfo = {\n email: String(sessionData.contactInfo.email || \"\"),\n phoneNumber: String(sessionData.contactInfo.phoneNumber || \"\"),\n };\n setContactInfo((prev) => ({\n ...prev,\n ...mergedContactInfo,\n }));\n setSessionMemoryContactInfo(sessionId, mergedContactInfo);\n }\n }\n\n setError(null);\n } catch (err) {\n console.error(\"Failed to load session:\", err);\n setError(\"Failed to load session data. Please try again.\");\n } finally {\n setLoading(false);\n }\n };\n\n // Retry loading the session\n const handleRetrySession = async () => {\n setIsExpired(false);\n setLoading(true);\n setError(null);\n\n try {\n const sessionData = await fetchSessionById(sessionId);\n\n if (isSessionExpired(sessionData)) {\n setIsExpired(true);\n } else {\n setSession(sessionData);\n }\n } catch (err) {\n console.error(\"Failed to retry loading session:\", err);\n setError(\"Failed to load session data. Please try again.\");\n } finally {\n setLoading(false);\n }\n };\n\n const userInputSyncInitialized = useRef(false);\n\n // Update user input in backend and in-memory store\n useEffect(() => {\n if (!sessionId) {\n return;\n }\n\n const entries = Object.entries(userInput || {}).filter(([, value]) => {\n if (value === undefined || value === null) {\n return false;\n }\n if (typeof value === \"string\") {\n return value.trim().length > 0;\n }\n return true;\n });\n\n if (!userInputSyncInitialized.current) {\n userInputSyncInitialized.current = true;\n return;\n }\n\n if (entries.length === 0) {\n return;\n }\n\n const cleanedUserInput = entries.reduce<Record<string, unknown>>(\n (acc, [key, value]) => {\n acc[key] = value;\n return acc;\n },\n {},\n );\n\n setSessionMemoryUserInput(sessionId, cleanedUserInput as UserInput);\n\n const updateUserData = async () => {\n try {\n const updatedSession = await updateSessionUserInput(\n sessionId,\n cleanedUserInput,\n );\n // Ne mettre à jour que si la requête réussit\n if (updatedSession) {\n setSession(updatedSession);\n }\n } catch (err) {\n console.error(\"Failed to update user input:\", err);\n // Ne pas mettre à jour la session en cas d'erreur\n }\n };\n\n updateUserData();\n }, [sessionId, userInput]);\n\n // Update contact info in backend and in-memory store\n useEffect(() => {\n if (contactInfo && contactInfo.email && contactInfo.phoneNumber) {\n setSessionMemoryContactInfo(sessionId, contactInfo);\n\n const updateContactData = async () => {\n if (sessionId && contactInfo.email && contactInfo.phoneNumber) {\n try {\n const updatedSession = await updateSessionContactInfo(sessionId, {\n email: contactInfo.email,\n phoneNumber: contactInfo.phoneNumber,\n });\n // Ne mettre à jour que si la requête réussit\n if (updatedSession) {\n setSession(updatedSession);\n }\n } catch (err) {\n console.error(\"Failed to update contact info:\", err);\n // Ne pas mettre à jour la session en cas d'erreur\n }\n }\n };\n\n updateContactData();\n }\n }, [contactInfo, sessionId]);\n\n // Send client info when it becomes available\n useEffect(() => {\n if (clientInfoLoaded && clientInfo && session) {\n console.log(\n \"Sending client info to backend:\",\n maskClientInfoForLog(clientInfo),\n );\n\n const sendClientInfoAsync = async () => {\n try {\n await sendClientInfo(sessionId, clientInfo);\n } catch (e) {\n console.error(\"Failed to send client info:\", e);\n }\n };\n\n const sendStartAuditTrail = async () => {\n try {\n // Utiliser analysisId et clientInfoId s'il existe\n await logSessionStarted(sessionId);\n } catch (err) {\n console.error(\"Failed to log session start in audit trail:\", err);\n // Non-blocking error - continue session loading\n }\n };\n\n sendClientInfoAsync();\n sendStartAuditTrail();\n }\n }, [clientInfoLoaded, clientInfo, sessionId, session]);\n\n // Keep active session id in memory only and clear traces on unmount/session switch.\n useEffect(() => {\n if (!sessionId) {\n return;\n }\n\n setActiveSessionId(sessionId);\n\n return () => {\n clearSessionSensitiveData(sessionId);\n };\n }, [sessionId]);\n\n // Check session expiration periodically\n useEffect(() => {\n if (!session || isExpired) return;\n\n if (isSessionExpired(session)) {\n setIsExpired(true);\n return;\n }\n\n const intervalId = setInterval(() => {\n if (isSessionExpired(session)) {\n setIsExpired(true);\n }\n }, 30000);\n\n return () => {\n clearInterval(intervalId);\n };\n }, [session, isExpired]);\n\n useEffect(() => {\n if (!isExpired || !sessionId) {\n return;\n }\n\n clearSessionSensitiveData(sessionId);\n }, [isExpired, sessionId]);\n\n const sessionSummary = session\n ? {\n id: session.id,\n status: session.status,\n currentStep: session.currentStep,\n expireTime: session.expireTime,\n templateId: session.template?.id,\n }\n : null;\n\n return {\n session,\n sessionSummary,\n setSession,\n loading,\n setLoading,\n error,\n setError,\n isExpired,\n setIsExpired,\n userInput,\n setUserInput,\n contactInfo,\n setContactInfo,\n loadSession,\n handleRetrySession,\n };\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useStepCSS.js","sources":["../../../../src/hooks/useStepCSS.ts"],"sourcesContent":["import { useEffect } from \"react\";\nimport { getOrderedJourneySteps } from \"../services/sessionService\";\nimport type { SessionData } from \"../services/sessionService\";\n\nexport const useStepCSS = (step: number, session: SessionData | null) => {\n useEffect(() => {\n const loadStepCSS = async () => {\n const { cssLoader } = await import(\"../utils/cssLoader\");\n\n switch (step) {\n case 0:\n await cssLoader.loadRouteCSS(\"start\", \"css/routes/start.css\");\n break;\n default:\n // For step 1+, load CSS based on template node type\n if (session?.template) {\n const templateNodes = getOrderedJourneySteps(session.template);\n const templateIndex = step - 1;\n if (templateIndex >= 0 && templateIndex < templateNodes.length) {\n const node = templateNodes[templateIndex];\n if (node?.type == \"information-input\") {\n await cssLoader.loadRouteCSS(\n \"user-input\",\n \"css/routes/user-input.css\"\n );\n } else if (node?.type === \"selfie-capture\" || node?.type === \"video-capture\") {\n await cssLoader.loadRouteCSS(\"selfie\", \"css/routes/selfie.css\");\n await cssLoader.loadRouteCSS(\n \"video-recorder\",\n \"css/components/video-recorder.css\"\n );\n } else if (node?.type === \"document-selection\") {\n await cssLoader.loadRouteCSS(\n \"document-check\",\n \"css/routes/document-check.css\"\n );\n await cssLoader.loadRouteCSS(\"jdi\", \"css/components/jdi.css\");\n } else if (node?.type === \"legal-consent\") {\n await cssLoader.loadRouteCSS(\n \"legal-consent\",\n \"css/routes/legal-consent.css\"\n );\n } else if (node?.type === \"custom\") {\n // For custom nodes, try to load a CSS file based on the node ID or title\n try {\n const cssFileName = node.id.replace(/[^a-zA-Z0-9-]/g, '-').toLowerCase();\n await cssLoader.loadRouteCSS(\n `custom-${cssFileName}`,\n `css/routes/custom-${cssFileName}.css`\n );\n } catch (error) {\n console.warn(`Could not load custom CSS for node: ${node.id}`);\n }\n }\n } else if (templateIndex >= templateNodes.length) {\n await cssLoader.loadRouteCSS(\n \"end-flow\",\n \"css/routes/end-flow.css\"\n );\n }\n }\n break;\n }\n };\n\n loadStepCSS().catch(console.warn);\n }, [step, session]);\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useStepNavigation.js","sources":["../../../../src/hooks/useStepNavigation.ts"],"sourcesContent":["import { useState, useEffect, useRef } from \"react\";\nimport {\n updateSessionCurrentStep,\n getNextStepIndex,\n getOrderedJourneySteps,\n reconstructHistoryToStep,\n} from \"../services/sessionService\";\nimport type { SessionTemplate } from \"../types/session\";\n\n/** Node types that auto-execute and should be skipped when going back */\nconst AUTO_EXECUTING_TYPES = new Set([\"external-verification\", \"condition\"]);\nconst COMMITTED_NODE_TYPES = new Set([\"selfie-capture\", \"biometric-capture\"]);\n\nconst getNodeTypeAtStep = (\n step: number,\n template: SessionTemplate,\n): string | undefined => getOrderedJourneySteps(template)[step - 1]?.type;\n\n/**\n * Rebuilds only the reversible part of a path after a committed node.\n * Auto-executing nodes immediately following the commit are excluded so the\n * first interactive destination remains the history boundary after reload.\n */\nconst trimHistoryAfterCommittedNode = (\n reconstructedHistory: number[],\n template: SessionTemplate,\n): number[] => {\n let committedHistoryIndex = -1;\n\n for (let index = reconstructedHistory.length - 2; index >= 0; index -= 1) {\n const nodeType = getNodeTypeAtStep(reconstructedHistory[index], template);\n if (nodeType && COMMITTED_NODE_TYPES.has(nodeType)) {\n committedHistoryIndex = index;\n break;\n }\n }\n\n if (committedHistoryIndex === -1) {\n return reconstructedHistory;\n }\n\n let reversibleHistoryStart = committedHistoryIndex + 1;\n while (reversibleHistoryStart < reconstructedHistory.length - 1) {\n const nodeType = getNodeTypeAtStep(\n reconstructedHistory[reversibleHistoryStart],\n template,\n );\n if (!nodeType || !AUTO_EXECUTING_TYPES.has(nodeType)) {\n break;\n }\n reversibleHistoryStart += 1;\n }\n\n return reconstructedHistory.slice(reversibleHistoryStart);\n};\n\nexport const useStepNavigation = (\n sessionId: string,\n sessionStatus?: string,\n initialStep?: number,\n template?: SessionTemplate,\n) => {\n const [step, setStepState] = useState(initialStep ?? 0);\n const [history, setHistory] = useState<number[]>(initialStep !== undefined ? [initialStep] : [0]);\n const hasInitialized = useRef(false);\n const committedNavigationPending = useRef(false);\n\n const setStep = (newStep: number, skipHistory = false) => {\n if (!skipHistory && newStep !== step) {\n setHistory((prev) => {\n if (prev[prev.length - 1] === newStep) return prev;\n return [...prev, newStep];\n });\n }\n setStepState(newStep);\n\n // Update current step in database\n if (sessionId) {\n updateSessionCurrentStep(sessionId, newStep).catch((error) => {\n console.error(\"Failed to update current step in database:\", error);\n // Non-blocking error - the step is still updated locally\n });\n }\n };\n\n const goBack = () => {\n if (history.length > 1) {\n let newHistory = [...history];\n newHistory.pop(); // Remove current step\n\n // Skip auto-executing nodes when going back\n if (template) {\n const orderedNodes = getOrderedJourneySteps(template);\n while (newHistory.length > 1) {\n const candidateStep = newHistory[newHistory.length - 1];\n // steps are 1-indexed (step 0 = start, step 1 = first node, etc.)\n const nodeIndex = candidateStep - 1;\n const candidateNode = orderedNodes[nodeIndex];\n if (candidateNode && AUTO_EXECUTING_TYPES.has(candidateNode.type)) {\n newHistory.pop();\n } else {\n break;\n }\n }\n }\n\n const previousStep = newHistory[newHistory.length - 1];\n setHistory(newHistory);\n setStep(previousStep, true);\n } else {\n console.warn(\"[goBack] BLOCKED — history.length <= 1, history:\", [...history]);\n }\n };\n\n /**\n * Retour arrière vers un nœud précis (ex: bouton \"Corriger ma saisie\").\n * Contrairement à `setStep`, on TRONQUE l'historique jusqu'à la dernière\n * occurrence de `targetStep` au lieu de l'empiler : le nœud cible cesse\n * ainsi d'être compté comme un \"revisit\" (runIndex 0 côté\n * TemplateNodeRenderer → formulaire pré-rempli). Si la cible n'est pas dans\n * l'historique, on retombe sur un `setStep` classique.\n */\n const goBackToStep = (targetStep: number) => {\n const idx = history.lastIndexOf(targetStep);\n if (idx !== -1) {\n const newHistory = history.slice(0, idx + 1);\n setHistory(newHistory);\n setStep(targetStep, true);\n } else {\n console.warn(\"[goBackToStep] target not in history — pushing instead:\", targetStep);\n setStep(targetStep);\n }\n };\n\n const goToNextStep = (\n currentNodeId: string,\n template: SessionTemplate,\n handle?: string\n ) => {\n const nextStepIndex = getNextStepIndex(currentNodeId, template, handle);\n\n if (nextStepIndex !== null) {\n if (committedNavigationPending.current) {\n const destinationType = getNodeTypeAtStep(nextStepIndex, template);\n committedNavigationPending.current = Boolean(\n destinationType && AUTO_EXECUTING_TYPES.has(destinationType),\n );\n setHistory([nextStepIndex]);\n setStep(nextStepIndex, true);\n } else {\n setStep(nextStepIndex);\n }\n } else {\n committedNavigationPending.current = false;\n console.warn(\n `[useStepNavigation] Could not find next step for node ${currentNodeId}. Staying on current step.`\n );\n }\n };\n\n /**\n * Navigates through the graph and makes the destination a point of no return.\n * The destination remains persisted by setStep, while prior history is discarded.\n */\n const goToNextStepCommitted = (\n currentNodeId: string,\n template: SessionTemplate,\n handle?: string,\n ) => {\n const nextStepIndex = getNextStepIndex(currentNodeId, template, handle);\n\n if (nextStepIndex !== null) {\n const destinationType = getNodeTypeAtStep(nextStepIndex, template);\n committedNavigationPending.current = Boolean(\n destinationType && AUTO_EXECUTING_TYPES.has(destinationType),\n );\n setHistory([nextStepIndex]);\n setStep(nextStepIndex, true);\n } else {\n committedNavigationPending.current = false;\n console.warn(\n `[useStepNavigation] Could not find next step for node ${currentNodeId}. Staying on current step.`,\n );\n }\n };\n\n // Initialize step from session data or status\n useEffect(() => {\n if (!sessionId) {\n return;\n }\n\n // Check if session is already ended\n if (sessionStatus === \"ended\") {\n setStepState(100);\n return;\n }\n\n // Only initialize once when initialStep becomes available\n if (initialStep !== undefined && !hasInitialized.current) {\n setStepState(initialStep);\n setHistory((prev) => {\n // Preserve history if the user already navigated past the initial step\n if (prev.length > 1 && prev[prev.length - 1] === initialStep) {\n return prev;\n }\n // Reconstruct history by following the graph from step 0\n const reconstructed = template\n ? trimHistoryAfterCommittedNode(\n reconstructHistoryToStep(initialStep, template),\n template,\n )\n : initialStep > 0 ? [0, initialStep] : [initialStep];\n return reconstructed;\n });\n hasInitialized.current = true;\n }\n }, [sessionId, sessionStatus, initialStep]);\n\n const stepObject = {\n setStep,\n goBack,\n goBackToStep,\n goToNextStep,\n goToNextStepCommitted,\n step,\n canGoBack: history.length > 1,\n };\n\n return {\n step,\n setStep,\n goBack,\n goBackToStep,\n goToNextStep,\n goToNextStepCommitted,\n stepObject,\n history,\n };\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useTemplateLoader.js","sources":["../../../../src/hooks/useTemplateLoader.ts"],"sourcesContent":["import { useEffect } from \"react\";\nimport { type SessionData } from \"../types/session\";\nimport { fetchSessionById } from \"../services/sessionService\";\n\nexport const useTemplateLoader = (\n step: number,\n sessionId: string,\n session: SessionData | null,\n loading: boolean,\n setSession: (session: SessionData | null) => void,\n setLoading: (loading: boolean) => void\n) => {\n // Effect to track current step and session for debugging\n useEffect(() => {\n // If we're at step 1+ (template steps) and template is not available\n // and we're not already loading\n if (step >= 1 && session && !session.template && sessionId && !loading) {\n // Update loading state to show indicator\n setLoading(true);\n\n const reloadSession = async () => {\n try {\n const refreshedSession = await fetchSessionById(sessionId);\n\n if (refreshedSession && refreshedSession.template) {\n setSession(refreshedSession);\n }\n // Finish loading even if session doesn't have template\n setLoading(false);\n } catch (err) {\n console.error(\"Failed to reload session at step 1+:\", err);\n setLoading(false);\n }\n };\n\n reloadSession();\n }\n }, [session, step, sessionId, loading, setSession, setLoading]);\n\n // Effect to preload/verify the template is loaded before rendering template nodes\n useEffect(() => {\n // Only preload if we don't already have a template\n if (step >= 1 && sessionId && (!session || !session.template) && !loading) {\n // Set loading to true to avoid double loading\n setLoading(true);\n\n const loadSessionTemplate = async () => {\n try {\n const sessionData = await fetchSessionById(sessionId);\n\n if (sessionData && sessionData.template) {\n setSession(sessionData);\n } else {\n console.error(\"Failed to load template from fresh session data\");\n }\n setLoading(false);\n } catch (err) {\n console.error(\"Error preloading template:\", err);\n setLoading(false);\n }\n };\n\n loadSessionTemplate();\n }\n }, [step, sessionId, session, loading, setSession, setLoading]);\n};\n"],"names":[],"mappings":";;;;AAIO,IAAM,iBAAiB,GAAG,UAC/B,IAAY,EACZ,SAAiB,EACjB,OAA2B,EAC3B,OAAgB,EAChB,UAAiD,EACjD,UAAsC,EAAA;;AAGtC,IAAA,SAAS,CAAC,YAAA;;;AAGR,QAAA,IAAI,IAAI,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,SAAS,IAAI,CAAC,OAAO,EAAE;;YAEtE,UAAU,CAAC,IAAI,CAAC;AAEhB,YAAA,IAAM,aAAa,GAAG,YAAA,EAAA,OAAA,SAAA,CAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,YAAA;;;;;;AAEO,4BAAA,OAAA,CAAA,CAAA,YAAM,gBAAgB,CAAC,SAAS,CAAC,CAAA;;AAApD,4BAAA,gBAAgB,GAAG,EAAA,CAAA,IAAA,EAAiC;AAE1D,4BAAA,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,QAAQ,EAAE;gCACjD,UAAU,CAAC,gBAAgB,CAAC;4BAC9B;;4BAEA,UAAU,CAAC,KAAK,CAAC;;;;AAEjB,4BAAA,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAG,CAAC;4BAC1D,UAAU,CAAC,KAAK,CAAC;;;;;iBAEpB;AAED,YAAA,aAAa,EAAE;QACjB;AACF,IAAA,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;;AAG/D,IAAA,SAAS,CAAC,YAAA;;AAER,QAAA,IAAI,IAAI,IAAI,CAAC,IAAI,SAAS,KAAK,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE;;YAEzE,UAAU,CAAC,IAAI,CAAC;AAEhB,YAAA,IAAM,mBAAmB,GAAG,YAAA,EAAA,OAAA,SAAA,CAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,YAAA;;;;;;AAEJ,4BAAA,OAAA,CAAA,CAAA,YAAM,gBAAgB,CAAC,SAAS,CAAC,CAAA;;AAA/C,4BAAA,WAAW,GAAG,EAAA,CAAA,IAAA,EAAiC;AAErD,4BAAA,IAAI,WAAW,IAAI,WAAW,CAAC,QAAQ,EAAE;gCACvC,UAAU,CAAC,WAAW,CAAC;4BACzB;iCAAO;AACL,gCAAA,OAAO,CAAC,KAAK,CAAC,iDAAiD,CAAC;4BAClE;4BACA,UAAU,CAAC,KAAK,CAAC;;;;AAEjB,4BAAA,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAG,CAAC;4BAChD,UAAU,CAAC,KAAK,CAAC;;;;;iBAEpB;AAED,YAAA,mBAAmB,EAAE;QACvB;AACF,IAAA,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AACjE;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useUserInputForm.js","sources":["../../../../src/hooks/useUserInputForm.ts"],"sourcesContent":["import { useEffect, useMemo, useRef, useState } from \"react\";\nimport type { UserInputFormProps } from \"../types/userInput\";\nimport type {\n AddressSuggestion,\n InformationType,\n RequestedFields,\n UserInputFormErrors,\n UserInputFormState,\n} from \"../types/userInputForm\";\nimport {\n DEFAULT_FIELDS,\n FALLBACK_ADDRESS_SUGGESTIONS,\n GEOCODING_AUTOCOMPLETE_ENDPOINT,\n} from \"../constants/userInputForm\";\nimport { API_BASE_URL } from \"../config/env\";\nimport { dedupeCustomFieldIds } from \"../utils/customFieldIds\";\nimport type { CustomField } from \"../types/session\";\nimport {\n checkIsMajor,\n parseBirthDate,\n resolveInformationType,\n} from \"../utils/userInputForm\";\nimport {\n countNonEmptyListRows,\n getListFieldMinRows,\n normalizeListColumns,\n} from \"../utils/listFieldUtils\";\nimport {\n cellErrorKey,\n isDateValid,\n isEmailValid,\n isRegexMatch,\n} from \"../utils/customFieldValidation\";\nimport { labelToKey } from \"../utils/labelToKey\";\nimport { DEFAULT_DATE_DISPLAY_FORMAT } from \"../types/session\";\nimport { useI18n } from \"./useI18n\";\nimport { logFormValidated } from \"../services/auditTrailService\";\n\nexport type CustomFieldErrorValue = string | boolean;\n\ninterface UseUserInputFormResult {\n form: UserInputFormState;\n errors: UserInputFormErrors;\n informationType: InformationType;\n requestedFields: RequestedFields;\n pageTitle: string;\n pageDescription: string;\n addressSuggestions: AddressSuggestion[];\n showSuggestions: boolean;\n handleFieldChange: (key: keyof UserInputFormState, value: string) => void;\n handleAddressChange: (value: string) => void;\n handleAddressFocus: () => void;\n handleAddressBlur: () => void;\n applyAddressSuggestion: (suggestion: AddressSuggestion) => void;\n goOnNextStep: () => void;\n goOnPreviousStep: () => void;\n // Custom form fields\n customFormData: Record<string, any>;\n customFormErrors: Record<string, CustomFieldErrorValue>;\n customFormCellErrors: Record<string, Record<string, CustomFieldErrorValue>>;\n handleCustomFieldChange: (fieldId: string, value: any) => void;\n /** Champs personnalisés du nœud, identifiants dédoublonnés. */\n customFields: CustomField[];\n}\n\nexport const useUserInputForm = ({\n stepObject,\n setUserInput,\n initialUserInput,\n node,\n template,\n contactInfo,\n setContactInfo,\n onContinueCallback,\n sessionId,\n}: UserInputFormProps & { sessionId?: string }): UseUserInputFormResult => {\n const { setStep, goBack, goToNextStep, step } = stepObject;\n const { t } = useI18n();\n\n const informationType = useMemo<InformationType>(() => {\n const resolved = resolveInformationType(\n node.informationType as string,\n \"identity\",\n );\n console.log(\"🔍 [useUserInputForm] Resolving informationType:\", {\n nodeInformationType: node.informationType,\n resolved,\n hasCustomFields: !!node.customFields,\n customFieldsCount: node.customFields?.length,\n });\n return resolved;\n }, [node.informationType, node.customFields]);\n\n // Les identifiants portent tout l'état du formulaire : deux champs qui\n // partagent le leur partagent leur valeur. On normalise a la source plutot\n // qu'a chaque point d'usage (cf. dedupeCustomFieldIds).\n const customFields = useMemo(\n () => dedupeCustomFieldIds(node.customFields),\n [node.customFields],\n );\n\n const requestedFields = useMemo<RequestedFields>(() => {\n const defaults = DEFAULT_FIELDS[informationType] || [];\n const optional =\n node.optionalFields && node.optionalFields.length > 0\n ? node.optionalFields\n : defaults;\n const merged = new Set<string>(optional);\n\n if (node.requiredFields) {\n node.requiredFields.forEach((field) => merged.add(field));\n }\n\n return merged;\n }, [node.optionalFields, node.requiredFields, informationType]);\n\n const birthDateParts = useMemo(\n () => parseBirthDate(initialUserInput?.birthDate || \"\"),\n [initialUserInput?.birthDate],\n );\n\n const [form, setForm] = useState<UserInputFormState>({\n lastName: initialUserInput?.lastName || \"\",\n firstName: initialUserInput?.firstName || \"\",\n birthDate: initialUserInput?.birthDate || \"\",\n day: birthDateParts.day,\n month: birthDateParts.month,\n year: birthDateParts.year,\n email: initialUserInput?.email || contactInfo?.email || \"\",\n phoneNumber:\n initialUserInput?.phoneNumber || contactInfo?.phoneNumber || \"\",\n sms: initialUserInput?.sms || \"\",\n addressLine1: initialUserInput?.addressLine1 || \"\",\n addressLine2: initialUserInput?.addressLine2 || \"\",\n postalCode: initialUserInput?.postalCode || \"\",\n city: initialUserInput?.city || \"\",\n countryCode: initialUserInput?.countryCode || \"\",\n nationality: initialUserInput?.nationality || \"\",\n companyName: initialUserInput?.companyName || \"\",\n siret: initialUserInput?.siret || \"\",\n tva: initialUserInput?.tva || \"\",\n registrationNumber: initialUserInput?.registrationNumber || \"\",\n legalRepresentativeLastName:\n initialUserInput?.legalRepresentativeLastName || \"\",\n legalRepresentativeFirstName:\n initialUserInput?.legalRepresentativeFirstName || \"\",\n legalRepresentativeSiren:\n initialUserInput?.legalRepresentativeSiren || \"\",\n });\n\n const [errors, setErrors] = useState<UserInputFormErrors>({});\n\n // Custom form state\n const [customFormData, setCustomFormData] = useState<Record<string, any>>(\n () => {\n if (informationType !== \"custom\" || customFields.length === 0) return {};\n\n const initial: Record<string, any> = {};\n customFields.forEach((field) => {\n const topLevelKey = field.userInputKey ?? labelToKey(field.label);\n // Priorité : top level (nouveau format) > customFormData[field.id] (ancien format)\n const savedValue =\n (initialUserInput as Record<string, any>)?.[topLevelKey] ??\n initialUserInput?.customFormData?.[field.id];\n if (field.valueType === \"list\") {\n initial[field.id] = Array.isArray(savedValue) ? savedValue : [];\n return;\n }\n\n initial[field.id] = savedValue || \"\";\n });\n return initial;\n },\n );\n const [customFormErrors, setCustomFormErrors] = useState<\n Record<string, CustomFieldErrorValue>\n >({});\n const [customFormCellErrors, setCustomFormCellErrors] = useState<\n Record<string, Record<string, CustomFieldErrorValue>>\n >({});\n\n const [addressSuggestions, setAddressSuggestions] = useState<\n AddressSuggestion[]\n >([]);\n const [showSuggestions, setShowSuggestions] = useState(false);\n const isFirstRender = useRef(true);\n const prevCustomNodeIdRef = useRef(node.id);\n const hideSuggestionTimeout = useRef<ReturnType<typeof setTimeout> | null>(\n null,\n );\n const addressRequestState = useRef<{\n debounce: ReturnType<typeof setTimeout> | null;\n controller: AbortController | null;\n }>({\n debounce: null,\n controller: null,\n });\n\n const formTitles = useMemo<Record<InformationType, string>>(\n () => ({\n identity: t(\"user_input_form.titles.identity\"),\n \"identity-legal\": t(\"user_input_form.titles.identity_legal\"),\n contact: t(\"user_input_form.titles.contact\"),\n address: t(\"user_input_form.titles.address\"),\n nationality: t(\"user_input_form.titles.nationality\"),\n custom: t(\"user_input_form.titles.custom\"),\n }),\n [t],\n );\n\n const formDescriptions = useMemo<Record<InformationType, string>>(\n () => ({\n identity: t(\"user_input_form.descriptions.identity\"),\n \"identity-legal\": t(\"user_input_form.descriptions.identity_legal\"),\n contact: t(\"user_input_form.descriptions.contact\"),\n address: t(\"user_input_form.descriptions.address\"),\n nationality: t(\"user_input_form.descriptions.nationality\"),\n custom: t(\"user_input_form.descriptions.custom\"),\n }),\n [t],\n );\n\n const applyAddressSuggestion = (suggestion: AddressSuggestion) => {\n const normalizedCountry =\n suggestion.countryCode?.toUpperCase() || suggestion.country || \"\";\n\n setForm((previous) => ({\n ...previous,\n addressLine1: suggestion.addressLine1 || suggestion.label,\n postalCode: suggestion.postalCode || previous.postalCode,\n city: suggestion.city || previous.city,\n countryCode: normalizedCountry || previous.countryCode,\n }));\n setErrors((previous) => ({\n ...previous,\n addressLine1: false,\n postalCode: false,\n city: false,\n country: false,\n }));\n setShowSuggestions(false);\n setAddressSuggestions([]);\n };\n\n const mapGeoapifyFeature = (feature: any): AddressSuggestion | null => {\n if (!feature || !feature.properties) {\n return null;\n }\n\n const { properties } = feature;\n const label: string =\n properties.formatted ||\n properties.address_line1 ||\n [properties.housenumber, properties.street]\n .filter(Boolean)\n .join(\" \")\n .trim();\n\n if (!label) {\n return null;\n }\n\n const addressLine1 =\n [properties.housenumber, properties.street]\n .filter(Boolean)\n .join(\" \")\n .trim() ||\n properties.address_line1 ||\n label;\n\n const city =\n properties.city ||\n properties.town ||\n properties.village ||\n properties.state ||\n \"\";\n\n return {\n id:\n (properties.place_id && String(properties.place_id)) ||\n feature.id ||\n `${properties.lon ?? \"\"}-${properties.lat ?? \"\"}-${label}`,\n label,\n addressLine1,\n postalCode: properties.postcode || \"\",\n city,\n country: properties.country || \"\",\n countryCode: properties.country_code || undefined,\n };\n };\n\n const requestAddressSuggestions = (\n query: string,\n { autoComplete }: { autoComplete: boolean },\n ) => {\n if (addressRequestState.current.debounce) {\n clearTimeout(addressRequestState.current.debounce);\n addressRequestState.current.debounce = null;\n }\n\n if (query.trim().length < 3) {\n if (addressRequestState.current.controller) {\n addressRequestState.current.controller.abort();\n addressRequestState.current.controller = null;\n }\n setAddressSuggestions([]);\n setShowSuggestions(false);\n return;\n }\n\n addressRequestState.current.debounce = setTimeout(async () => {\n if (addressRequestState.current.controller) {\n addressRequestState.current.controller.abort();\n }\n\n const controller = new AbortController();\n addressRequestState.current.controller = controller;\n\n try {\n const searchParams = new URLSearchParams({\n text: query,\n lang: \"fr\",\n });\n\n const response = await fetch(\n `${API_BASE_URL}${GEOCODING_AUTOCOMPLETE_ENDPOINT}?${searchParams.toString()}`,\n { signal: controller.signal },\n );\n\n if (!response.ok) {\n throw new Error(\n `Geocoding request failed with status ${response.status}`,\n );\n }\n\n const payload = await response.json();\n\n const suggestions: AddressSuggestion[] = Array.isArray(\n payload?.features,\n )\n ? payload.features\n .map((feature: any) => mapGeoapifyFeature(feature))\n .filter(\n (\n suggestion: AddressSuggestion | null,\n ): suggestion is AddressSuggestion => Boolean(suggestion),\n )\n : [];\n\n setAddressSuggestions(suggestions);\n setShowSuggestions(suggestions.length > 0);\n\n if (autoComplete && suggestions.length === 1) {\n const single = suggestions[0];\n const normalizedQuery = query.trim().toLowerCase();\n if (\n normalizedQuery.length >= 6 &&\n single.label.toLowerCase().startsWith(normalizedQuery)\n ) {\n applyAddressSuggestion(single);\n }\n }\n } catch (error) {\n if ((error as Error).name === \"AbortError\") {\n return;\n }\n\n const fallback = FALLBACK_ADDRESS_SUGGESTIONS.filter((suggestion) =>\n suggestion.label.toLowerCase().includes(query.toLowerCase()),\n );\n setAddressSuggestions(fallback);\n setShowSuggestions(fallback.length > 0);\n } finally {\n addressRequestState.current.controller = null;\n }\n }, 250);\n };\n\n useEffect(() => {\n if (!initialUserInput) {\n return;\n }\n\n if (\n isFirstRender.current ||\n (!form.firstName &&\n !form.lastName &&\n !form.email &&\n !form.phoneNumber &&\n !form.companyName)\n ) {\n const nextBirthParts = parseBirthDate(initialUserInput.birthDate || \"\");\n setForm((previous) => ({\n ...previous,\n lastName: initialUserInput.lastName || previous.lastName,\n firstName: initialUserInput.firstName || previous.firstName,\n birthDate: initialUserInput.birthDate || previous.birthDate,\n day: nextBirthParts.day,\n month: nextBirthParts.month,\n year: nextBirthParts.year,\n email: initialUserInput.email || previous.email,\n phoneNumber: initialUserInput.phoneNumber || previous.phoneNumber,\n sms: initialUserInput.sms || previous.sms,\n addressLine1: initialUserInput.addressLine1 || previous.addressLine1,\n addressLine2: initialUserInput.addressLine2 || previous.addressLine2,\n postalCode: initialUserInput.postalCode || previous.postalCode,\n city: initialUserInput.city || previous.city,\n countryCode: initialUserInput.countryCode || previous.countryCode,\n nationality: initialUserInput.nationality || previous.nationality,\n companyName: initialUserInput.companyName || previous.companyName,\n siret: initialUserInput.siret || previous.siret,\n tva: initialUserInput.tva || previous.tva,\n registrationNumber: initialUserInput.registrationNumber || previous.registrationNumber,\n }));\n\n isFirstRender.current = false;\n }\n }, [\n initialUserInput,\n form.firstName,\n form.lastName,\n form.email,\n form.phoneNumber,\n form.companyName,\n ]);\n\n // Re-synchronise customFormData depuis initialUserInput quand on (ré)affiche un\n // nœud DIFFÉRENT sur une instance réutilisée (retour arrière sans remount).\n // Le champ form standard a déjà son propre effet de re-sync ci-dessus ; le\n // customFormData n'en avait aucun → il restait périmé (formulaire perso vidé).\n // On garde sur node.id : sur le MÊME nœud (frappe en cours), on ne touche à rien.\n // Redondant avec le remount par key={node.id} côté renderer, mais sert de filet.\n useEffect(() => {\n if (prevCustomNodeIdRef.current === node.id) {\n return;\n }\n prevCustomNodeIdRef.current = node.id;\n\n if (informationType !== \"custom\" || customFields.length === 0) {\n setCustomFormData({});\n return;\n }\n\n const next: Record<string, any> = {};\n customFields.forEach((field) => {\n const topLevelKey = field.userInputKey ?? labelToKey(field.label);\n const savedValue =\n (initialUserInput as Record<string, any>)?.[topLevelKey] ??\n initialUserInput?.customFormData?.[field.id];\n if (field.valueType === \"list\") {\n next[field.id] = Array.isArray(savedValue) ? savedValue : [];\n return;\n }\n next[field.id] = savedValue || \"\";\n });\n setCustomFormData(next);\n }, [node.id, informationType, customFields, initialUserInput]);\n\n useEffect(() => {\n return () => {\n if (hideSuggestionTimeout.current) {\n clearTimeout(hideSuggestionTimeout.current);\n }\n if (addressRequestState.current.debounce) {\n clearTimeout(addressRequestState.current.debounce);\n }\n if (addressRequestState.current.controller) {\n addressRequestState.current.controller.abort();\n }\n };\n }, []);\n\n const handleFieldChange = (key: keyof UserInputFormState, value: string) => {\n setErrors((previous) => ({\n ...previous,\n [key]: false,\n notMajor: false,\n }));\n\n setForm((previous) => {\n const next = { ...previous, [key]: value };\n if (key === \"day\" || key === \"month\" || key === \"year\") {\n const { day, month, year } = next;\n if (day && month && year) {\n const paddedDay = day.padStart(2, \"0\");\n const paddedMonth = month.padStart(2, \"0\");\n next.birthDate = `${paddedDay}-${paddedMonth}-${year}`;\n } else {\n next.birthDate = \"\";\n }\n }\n return next;\n });\n };\n\n const handleAddressChange = (value: string) => {\n handleFieldChange(\"addressLine1\", value);\n requestAddressSuggestions(value, { autoComplete: true });\n };\n\n const handleAddressFocus = () => {\n requestAddressSuggestions(form.addressLine1, { autoComplete: false });\n };\n\n const handleAddressBlur = () => {\n if (hideSuggestionTimeout.current) {\n clearTimeout(hideSuggestionTimeout.current);\n }\n hideSuggestionTimeout.current = setTimeout(() => {\n setShowSuggestions(false);\n hideSuggestionTimeout.current = null;\n }, 150);\n };\n\n const validateForm = () => {\n const nextErrors: UserInputFormErrors = {};\n let hasError = false;\n\n const markError = (key: string) => {\n nextErrors[key] = true;\n hasError = true;\n };\n\n if (informationType === \"identity\") {\n if (requestedFields.has(\"prenom\") && !form.firstName) {\n markError(\"firstName\");\n }\n if (requestedFields.has(\"nom\") && !form.lastName) {\n markError(\"lastName\");\n }\n if (requestedFields.has(\"date_naissance\")) {\n if (!form.birthDate) {\n markError(\"birthDate\");\n } else if (!checkIsMajor(form.birthDate)) {\n nextErrors.notMajor = true;\n hasError = true;\n }\n }\n }\n\n if (informationType === \"identity-legal\") {\n if (requestedFields.has(\"nom\") && !form.companyName) {\n markError(\"companyName\");\n }\n if (requestedFields.has(\"siret\") && !form.siret) {\n markError(\"siret\");\n }\n if (requestedFields.has(\"tva\") && !form.tva) {\n markError(\"tva\");\n }\n if (requestedFields.has(\"registrationNumber\") && !form.registrationNumber) {\n markError(\"registrationNumber\");\n }\n }\n\n if (informationType === \"identity-legal-rep\") {\n if (\n requestedFields.has(\"legalRepresentativeNom\") &&\n !form.legalRepresentativeLastName\n ) {\n markError(\"legalRepresentativeLastName\");\n }\n if (\n requestedFields.has(\"legalRepresentativePrenom\") &&\n !form.legalRepresentativeFirstName\n ) {\n markError(\"legalRepresentativeFirstName\");\n }\n // RL personne morale (délégation de pouvoir) : SIREN à la place de\n // Nom/Prénom, mutuellement exclusif — mode fixé par le concepteur du\n // parcours via requestedFields, jamais par l'utilisateur final.\n if (\n requestedFields.has(\"legalRepresentativeSiren\") &&\n !/^\\d{9}$/.test((form.legalRepresentativeSiren || \"\").replace(/\\s+/g, \"\"))\n ) {\n markError(\"legalRepresentativeSiren\");\n }\n }\n\n if (informationType === \"contact\") {\n if (requestedFields.has(\"email\")) {\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n if (!form.email || !emailRegex.test(form.email)) {\n markError(\"email\");\n }\n }\n if (requestedFields.has(\"sms\")) {\n if (\n !form.phoneNumber ||\n form.phoneNumber.replace(/\\D/g, \"\").length < 6\n ) {\n markError(\"phoneNumber\");\n }\n }\n }\n\n if (\n (informationType === \"address\" || informationType === \"identity-legal\") &&\n requestedFields.has(\"adresse\")\n ) {\n if (!form.addressLine1) {\n markError(\"addressLine1\");\n }\n if (!form.postalCode) {\n markError(\"postalCode\");\n }\n if (!form.city) {\n markError(\"city\");\n }\n if (!form.countryCode) {\n markError(\"country\");\n }\n }\n\n if (\n informationType === \"nationality\" &&\n requestedFields.has(\"nationalite\")\n ) {\n if (!form.nationality) {\n markError(\"nationality\");\n }\n }\n\n setErrors(nextErrors);\n return !hasError;\n };\n\n const validateCustomForm = () => {\n const errors: Record<string, CustomFieldErrorValue> = {};\n const cellErrors: Record<string, Record<string, CustomFieldErrorValue>> = {};\n let hasError = false;\n\n customFields.forEach((field) => {\n const value = customFormData[field.id];\n\n if (field.valueType === \"list\") {\n const rows: Record<string, string>[] = Array.isArray(value) ? value : [];\n const minRows = getListFieldMinRows(field);\n const columns = normalizeListColumns(field.listColumns);\n const fieldCellErrors: Record<string, CustomFieldErrorValue> = {};\n let listFieldInvalid = false;\n\n if (field.required && countNonEmptyListRows(rows) < minRows) {\n errors[field.id] = true;\n hasError = true;\n listFieldInvalid = true;\n }\n\n rows.forEach((row, rowIndex) => {\n const rowIsEmpty = columns.every(\n (col) => !String(row?.[col.label] ?? \"\").trim(),\n );\n if (rowIsEmpty && !field.required) return;\n\n columns.forEach((col) => {\n const cellValue = String(row?.[col.label] ?? \"\").trim();\n const key = cellErrorKey(rowIndex, col.label);\n\n if (!cellValue) {\n if (field.required && !rowIsEmpty) {\n fieldCellErrors[key] = t(\"custom_form.required_field\");\n listFieldInvalid = true;\n }\n return;\n }\n\n switch (col.type) {\n case \"email\":\n if (!isEmailValid(cellValue)) {\n fieldCellErrors[key] = t(\"custom_form.invalid_email\");\n listFieldInvalid = true;\n }\n break;\n case \"date\": {\n const fmt = col.dateFormat ?? DEFAULT_DATE_DISPLAY_FORMAT;\n if (!isDateValid(cellValue, fmt)) {\n fieldCellErrors[key] = t(\"custom_form.invalid_date\", {\n format: fmt,\n });\n listFieldInvalid = true;\n }\n break;\n }\n case \"text\":\n if (col.regex && !isRegexMatch(cellValue, col.regex)) {\n fieldCellErrors[key] =\n col.regexErrorMessage ||\n t(\"custom_form.invalid_format\");\n listFieldInvalid = true;\n }\n break;\n }\n });\n });\n\n if (Object.keys(fieldCellErrors).length > 0) {\n cellErrors[field.id] = fieldCellErrors;\n }\n if (listFieldInvalid) {\n // This field-level boolean only drives the red field outline. When\n // cell errors exist, their messages are rendered at cell level.\n errors[field.id] = errors[field.id] ?? true;\n hasError = true;\n }\n return;\n }\n\n // Check if required field is missing\n if (field.required && !value) {\n errors[field.id] = true;\n hasError = true;\n return;\n }\n\n // Type-specific validation\n if (value) {\n switch (field.valueType) {\n case \"number\":\n if (isNaN(Number(value))) {\n errors[field.id] = true;\n hasError = true;\n }\n break;\n\n case \"email\":\n if (!isEmailValid(String(value))) {\n errors[field.id] = t(\"custom_form.invalid_email\");\n hasError = true;\n }\n break;\n\n case \"text\":\n if (field.regex && !isRegexMatch(String(value), field.regex)) {\n errors[field.id] =\n field.regexErrorMessage || t(\"custom_form.invalid_format\");\n hasError = true;\n }\n break;\n\n case \"date\": {\n const fmt = field.dateFormat ?? DEFAULT_DATE_DISPLAY_FORMAT;\n if (!isDateValid(String(value), fmt)) {\n errors[field.id] = t(\"custom_form.invalid_date\", {\n format: fmt,\n });\n hasError = true;\n }\n break;\n }\n\n case \"address\":\n // Validate address object if required\n if (field.required && typeof value === \"object\") {\n const addressValue = value as {\n addressLine1?: string;\n postalCode?: string;\n city?: string;\n countryCode?: string;\n };\n if (\n !addressValue.addressLine1 ||\n !addressValue.postalCode ||\n !addressValue.city ||\n !addressValue.countryCode\n ) {\n errors[field.id] = true;\n hasError = true;\n }\n }\n break;\n }\n }\n });\n\n setCustomFormErrors(errors);\n setCustomFormCellErrors(cellErrors);\n return !hasError;\n };\n\n const handleCustomFieldChange = (fieldId: string, value: any) => {\n setCustomFormData((prev) => ({ ...prev, [fieldId]: value }));\n setCustomFormErrors((prev) => ({ ...prev, [fieldId]: false }));\n setCustomFormCellErrors((prev) => {\n if (!(fieldId in prev)) return prev;\n const { [fieldId]: _removed, ...rest } = prev;\n return rest;\n });\n };\n\n const goOnNextStep = () => {\n // Handle custom form validation and submission\n if (informationType === \"custom\") {\n if (!validateCustomForm()) {\n return;\n }\n\n const topLevelEntries: Record<string, any> = {};\n const customFormDataEntries: Record<string, any> = {};\n customFields.forEach((field) => {\n const key = field.userInputKey ?? labelToKey(field.label);\n topLevelEntries[key] = customFormData[field.id];\n customFormDataEntries[field.id] = customFormData[field.id];\n });\n\n setUserInput((prev) => ({\n ...prev,\n // Top level avec clé lisible dérivée du label (attendu par l'API cliente)\n ...topLevelEntries,\n // customFormData avec les field.id d'origine (rétrocompat : conditions, sessions existantes)\n customFormData: { ...(prev.customFormData ?? {}), ...customFormDataEntries },\n }));\n\n if (sessionId) logFormValidated(sessionId);\n if (onContinueCallback) {\n onContinueCallback();\n } else {\n goToNextStep(node.id, template);\n }\n return;\n }\n\n // Standard form validation\n if (!validateForm()) {\n return;\n }\n\n setUserInput((previous) => ({\n ...previous,\n ...(requestedFields.has(\"nom\") && {\n ...(informationType === \"identity-legal\"\n ? { companyName: form.companyName }\n : { lastName: form.lastName }),\n }),\n ...(requestedFields.has(\"prenom\") && { firstName: form.firstName }),\n ...(requestedFields.has(\"date_naissance\") && {\n birthDate: form.birthDate,\n }),\n ...(requestedFields.has(\"email\") && { email: form.email }),\n ...(requestedFields.has(\"sms\") && {\n phoneNumber: form.phoneNumber,\n sms: form.phoneNumber,\n }),\n ...(requestedFields.has(\"adresse\") && {\n addressLine1: form.addressLine1,\n addressLine2: form.addressLine2,\n postalCode: form.postalCode,\n city: form.city,\n countryCode: form.countryCode,\n }),\n ...(requestedFields.has(\"siret\") && { siret: form.siret }),\n ...(requestedFields.has(\"tva\") && { tva: form.tva }),\n ...(requestedFields.has(\"registrationNumber\") && { registrationNumber: form.registrationNumber }),\n ...(requestedFields.has(\"siret\") && !requestedFields.has(\"registrationNumber\") && { registrationNumber: form.siret }),\n ...(requestedFields.has(\"nationalite\") && {\n nationality: form.nationality,\n }),\n ...(requestedFields.has(\"legalRepresentativeNom\") && {\n legalRepresentativeLastName: form.legalRepresentativeLastName,\n }),\n ...(requestedFields.has(\"legalRepresentativePrenom\") && {\n legalRepresentativeFirstName: form.legalRepresentativeFirstName,\n }),\n ...(requestedFields.has(\"legalRepresentativeSiren\") && {\n legalRepresentativeSiren: form.legalRepresentativeSiren,\n }),\n }));\n\n if (informationType === \"contact\" && setContactInfo) {\n setContactInfo((previous) => ({\n ...previous,\n ...(requestedFields.has(\"email\") && { email: form.email }),\n ...(requestedFields.has(\"sms\") && { phoneNumber: form.phoneNumber }),\n }));\n }\n\n if (sessionId) logFormValidated(sessionId);\n if (onContinueCallback) {\n onContinueCallback();\n } else {\n goToNextStep(node.id, template);\n }\n };\n\n const goOnPreviousStep = () => {\n goBack();\n };\n\n const pageTitle = node.pageTitle || formTitles[informationType];\n\n const pageDescription =\n node.pageDescription || formDescriptions[informationType];\n\n return {\n form,\n errors,\n informationType,\n customFields,\n requestedFields,\n pageTitle,\n pageDescription,\n addressSuggestions,\n showSuggestions,\n handleFieldChange,\n handleAddressChange,\n handleAddressFocus,\n handleAddressBlur,\n applyAddressSuggestion,\n goOnNextStep,\n goOnPreviousStep,\n customFormData,\n customFormErrors,\n customFormCellErrors,\n handleCustomFieldChange,\n };\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"country.en.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"country.fr.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"country.iso2.en.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"country.iso2.fr.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"documents.en.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"documents.fr.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"en.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|