datakeen-session-react 1.1.160 → 1.1.161

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/dist/cjs/components/document-collection/DocumentError.js +2 -0
  2. package/dist/cjs/components/document-collection/DocumentError.js.map +1 -1
  3. package/dist/cjs/components/session/DocumentCheck.js +2 -2
  4. package/dist/cjs/components/session/DocumentCheck.js.map +1 -1
  5. package/dist/cjs/components/session/UserInputForm/CustomFormFields.js +42 -45
  6. package/dist/cjs/components/session/UserInputForm/CustomFormFields.js.map +1 -1
  7. package/dist/cjs/components/session/UserInputForm/DatePickerField.js +154 -0
  8. package/dist/cjs/components/session/UserInputForm/DatePickerField.js.map +1 -0
  9. package/dist/cjs/components/session/UserInputForm.js +2 -2
  10. package/dist/cjs/components/session/UserInputForm.js.map +1 -1
  11. package/dist/cjs/components/signature-electronic/DocusealSignature.js +2 -1
  12. package/dist/cjs/components/signature-electronic/DocusealSignature.js.map +1 -1
  13. package/dist/cjs/components/signature-electronic/SignatureElectronic.js +2 -1
  14. package/dist/cjs/components/signature-electronic/SignatureElectronic.js.map +1 -1
  15. package/dist/cjs/components/signature-electronic/SignatureElectronicIntroduction.js +2 -1
  16. package/dist/cjs/components/signature-electronic/SignatureElectronicIntroduction.js.map +1 -1
  17. package/dist/cjs/components/start-flow/CGU.js +5 -2
  18. package/dist/cjs/components/start-flow/CGU.js.map +1 -1
  19. package/dist/cjs/components/start-flow/Start.js +5 -2
  20. package/dist/cjs/components/start-flow/Start.js.map +1 -1
  21. package/dist/cjs/components/template/ExternalVerificationNodeHandler.js +2 -1
  22. package/dist/cjs/components/template/ExternalVerificationNodeHandler.js.map +1 -1
  23. package/dist/cjs/hooks/useUserInputForm.js +90 -29
  24. package/dist/cjs/hooks/useUserInputForm.js.map +1 -1
  25. package/dist/cjs/i18n/en.json.js +19 -5
  26. package/dist/cjs/i18n/en.json.js.map +1 -1
  27. package/dist/cjs/i18n/fr.json.js +19 -5
  28. package/dist/cjs/i18n/fr.json.js.map +1 -1
  29. package/dist/cjs/index.css.js +1 -1
  30. package/dist/cjs/node_modules/date-fns/locale/_lib/buildFormatLongFn.js +13 -0
  31. package/dist/cjs/node_modules/date-fns/locale/_lib/buildFormatLongFn.js.map +1 -0
  32. package/dist/cjs/node_modules/date-fns/locale/_lib/buildLocalizeFn.js +67 -0
  33. package/dist/cjs/node_modules/date-fns/locale/_lib/buildLocalizeFn.js.map +1 -0
  34. package/dist/cjs/node_modules/date-fns/locale/_lib/buildMatchFn.js +62 -0
  35. package/dist/cjs/node_modules/date-fns/locale/_lib/buildMatchFn.js.map +1 -0
  36. package/dist/cjs/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js +25 -0
  37. package/dist/cjs/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js.map +1 -0
  38. package/dist/cjs/node_modules/date-fns/locale/en-US/_lib/formatDistance.js +106 -0
  39. package/dist/cjs/node_modules/date-fns/locale/en-US/_lib/formatDistance.js.map +1 -0
  40. package/dist/cjs/node_modules/date-fns/locale/en-US/_lib/formatLong.js +44 -0
  41. package/dist/cjs/node_modules/date-fns/locale/en-US/_lib/formatLong.js.map +1 -0
  42. package/dist/cjs/node_modules/date-fns/locale/en-US/_lib/formatRelative.js +16 -0
  43. package/dist/cjs/node_modules/date-fns/locale/en-US/_lib/formatRelative.js.map +1 -0
  44. package/dist/cjs/node_modules/date-fns/locale/en-US/_lib/localize.js +192 -0
  45. package/dist/cjs/node_modules/date-fns/locale/en-US/_lib/localize.js.map +1 -0
  46. package/dist/cjs/node_modules/date-fns/locale/en-US/_lib/match.js +137 -0
  47. package/dist/cjs/node_modules/date-fns/locale/en-US/_lib/match.js.map +1 -0
  48. package/dist/cjs/node_modules/date-fns/locale/en-US.js +31 -0
  49. package/dist/cjs/node_modules/date-fns/locale/en-US.js.map +1 -0
  50. package/dist/cjs/node_modules/date-fns/locale/fr/_lib/formatDistance.js +105 -0
  51. package/dist/cjs/node_modules/date-fns/locale/fr/_lib/formatDistance.js.map +1 -0
  52. package/dist/cjs/node_modules/date-fns/locale/fr/_lib/formatLong.js +44 -0
  53. package/dist/cjs/node_modules/date-fns/locale/fr/_lib/formatLong.js.map +1 -0
  54. package/dist/cjs/node_modules/date-fns/locale/fr/_lib/formatRelative.js +16 -0
  55. package/dist/cjs/node_modules/date-fns/locale/fr/_lib/formatRelative.js.map +1 -0
  56. package/dist/cjs/node_modules/date-fns/locale/fr/_lib/localize.js +170 -0
  57. package/dist/cjs/node_modules/date-fns/locale/fr/_lib/localize.js.map +1 -0
  58. package/dist/cjs/node_modules/date-fns/locale/fr/_lib/match.js +138 -0
  59. package/dist/cjs/node_modules/date-fns/locale/fr/_lib/match.js.map +1 -0
  60. package/dist/cjs/node_modules/date-fns/locale/fr.js +31 -0
  61. package/dist/cjs/node_modules/date-fns/locale/fr.js.map +1 -0
  62. package/dist/cjs/types/session.js +6 -0
  63. package/dist/cjs/types/session.js.map +1 -0
  64. package/dist/cjs/utils/customFieldValidation.js +62 -0
  65. package/dist/cjs/utils/customFieldValidation.js.map +1 -0
  66. package/dist/esm/components/document-collection/DocumentError.js +2 -0
  67. package/dist/esm/components/document-collection/DocumentError.js.map +1 -1
  68. package/dist/esm/components/session/DocumentCheck.js +2 -2
  69. package/dist/esm/components/session/DocumentCheck.js.map +1 -1
  70. package/dist/esm/components/session/UserInputForm/CustomFormFields.js +42 -45
  71. package/dist/esm/components/session/UserInputForm/CustomFormFields.js.map +1 -1
  72. package/dist/esm/components/session/UserInputForm/DatePickerField.js +132 -0
  73. package/dist/esm/components/session/UserInputForm/DatePickerField.js.map +1 -0
  74. package/dist/esm/components/session/UserInputForm.js +2 -2
  75. package/dist/esm/components/session/UserInputForm.js.map +1 -1
  76. package/dist/esm/components/signature-electronic/DocusealSignature.js +2 -1
  77. package/dist/esm/components/signature-electronic/DocusealSignature.js.map +1 -1
  78. package/dist/esm/components/signature-electronic/SignatureElectronic.js +2 -1
  79. package/dist/esm/components/signature-electronic/SignatureElectronic.js.map +1 -1
  80. package/dist/esm/components/signature-electronic/SignatureElectronicIntroduction.js +2 -1
  81. package/dist/esm/components/signature-electronic/SignatureElectronicIntroduction.js.map +1 -1
  82. package/dist/esm/components/start-flow/CGU.js +5 -2
  83. package/dist/esm/components/start-flow/CGU.js.map +1 -1
  84. package/dist/esm/components/start-flow/Start.js +5 -2
  85. package/dist/esm/components/start-flow/Start.js.map +1 -1
  86. package/dist/esm/components/template/ExternalVerificationNodeHandler.js +2 -1
  87. package/dist/esm/components/template/ExternalVerificationNodeHandler.js.map +1 -1
  88. package/dist/esm/components/ui/SelectComponent.js +3 -3
  89. package/dist/esm/components/ui/SelectComponent.js.map +1 -1
  90. package/dist/esm/hooks/useUserInputForm.js +92 -31
  91. package/dist/esm/hooks/useUserInputForm.js.map +1 -1
  92. package/dist/esm/i18n/en.json.js +19 -5
  93. package/dist/esm/i18n/en.json.js.map +1 -1
  94. package/dist/esm/i18n/fr.json.js +19 -5
  95. package/dist/esm/i18n/fr.json.js.map +1 -1
  96. package/dist/esm/index.css.js +1 -1
  97. package/dist/esm/node_modules/date-fns/locale/_lib/buildFormatLongFn.js +11 -0
  98. package/dist/esm/node_modules/date-fns/locale/_lib/buildFormatLongFn.js.map +1 -0
  99. package/dist/esm/node_modules/date-fns/locale/_lib/buildLocalizeFn.js +65 -0
  100. package/dist/esm/node_modules/date-fns/locale/_lib/buildLocalizeFn.js.map +1 -0
  101. package/dist/esm/node_modules/date-fns/locale/_lib/buildMatchFn.js +60 -0
  102. package/dist/esm/node_modules/date-fns/locale/_lib/buildMatchFn.js.map +1 -0
  103. package/dist/esm/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js +23 -0
  104. package/dist/esm/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js.map +1 -0
  105. package/dist/esm/node_modules/date-fns/locale/en-US/_lib/formatDistance.js +104 -0
  106. package/dist/esm/node_modules/date-fns/locale/en-US/_lib/formatDistance.js.map +1 -0
  107. package/dist/esm/node_modules/date-fns/locale/en-US/_lib/formatLong.js +42 -0
  108. package/dist/esm/node_modules/date-fns/locale/en-US/_lib/formatLong.js.map +1 -0
  109. package/dist/esm/node_modules/date-fns/locale/en-US/_lib/formatRelative.js +14 -0
  110. package/dist/esm/node_modules/date-fns/locale/en-US/_lib/formatRelative.js.map +1 -0
  111. package/dist/esm/node_modules/date-fns/locale/en-US/_lib/localize.js +190 -0
  112. package/dist/esm/node_modules/date-fns/locale/en-US/_lib/localize.js.map +1 -0
  113. package/dist/esm/node_modules/date-fns/locale/en-US/_lib/match.js +135 -0
  114. package/dist/esm/node_modules/date-fns/locale/en-US/_lib/match.js.map +1 -0
  115. package/dist/esm/node_modules/date-fns/locale/en-US.js +29 -0
  116. package/dist/esm/node_modules/date-fns/locale/en-US.js.map +1 -0
  117. package/dist/esm/node_modules/date-fns/locale/fr/_lib/formatDistance.js +103 -0
  118. package/dist/esm/node_modules/date-fns/locale/fr/_lib/formatDistance.js.map +1 -0
  119. package/dist/esm/node_modules/date-fns/locale/fr/_lib/formatLong.js +42 -0
  120. package/dist/esm/node_modules/date-fns/locale/fr/_lib/formatLong.js.map +1 -0
  121. package/dist/esm/node_modules/date-fns/locale/fr/_lib/formatRelative.js +14 -0
  122. package/dist/esm/node_modules/date-fns/locale/fr/_lib/formatRelative.js.map +1 -0
  123. package/dist/esm/node_modules/date-fns/locale/fr/_lib/localize.js +168 -0
  124. package/dist/esm/node_modules/date-fns/locale/fr/_lib/localize.js.map +1 -0
  125. package/dist/esm/node_modules/date-fns/locale/fr/_lib/match.js +136 -0
  126. package/dist/esm/node_modules/date-fns/locale/fr/_lib/match.js.map +1 -0
  127. package/dist/esm/node_modules/date-fns/locale/fr.js +29 -0
  128. package/dist/esm/node_modules/date-fns/locale/fr.js.map +1 -0
  129. package/dist/esm/providers/I18nProvider.js +2 -2
  130. package/dist/esm/providers/I18nProvider.js.map +1 -1
  131. package/dist/esm/types/session.js +4 -0
  132. package/dist/esm/types/session.js.map +1 -0
  133. package/dist/esm/utils/customFieldValidation.js +56 -0
  134. package/dist/esm/utils/customFieldValidation.js.map +1 -0
  135. package/jest.config.js +1 -0
  136. package/package.json +4 -1
@@ -8,12 +8,13 @@ var Subtitle = require('../ui/Subtitle.js');
8
8
  var Button = require('../ui/Button.js');
9
9
  var PageActions = require('../ui/PageActions.js');
10
10
  var reactI18next = require('react-i18next');
11
+ var index = require('../../i18n/index.js');
11
12
  var MobilePageLayout = require('../ui/MobilePageLayout.js');
12
13
  var ElectronicIcon = require('../icons/ElectronicIcon.js');
13
14
 
14
15
  var SignatureElectronicIntroduction = function (_a) {
15
16
  var onContinue = _a.onContinue, onBack = _a.onBack, propTitle = _a.title, propDescription = _a.description;
16
- var t = reactI18next.useTranslation().t;
17
+ var t = reactI18next.useTranslation("translation", { i18n: index.default }).t;
17
18
  var title = propTitle || t("signature.introduction_title", "Signature électronique");
18
19
  var description = propDescription || t("signature.introduction_description", "Veuillez signer le document pour continuer.");
19
20
  var handleContinueClick = function (event) {
@@ -1 +1 @@
1
- {"version":3,"file":"SignatureElectronicIntroduction.js","sources":["../../../../../src/components/signature-electronic/SignatureElectronicIntroduction.tsx"],"sourcesContent":["import React from \"react\";\nimport Title from \"../ui/Title\";\nimport Subtitle from \"../ui/Subtitle\";\nimport Button from \"../ui/Button\";\nimport PageActions from \"../ui/PageActions\";\nimport { useTranslation } from \"react-i18next\";\nimport MobilePageLayout from \"../ui/MobilePageLayout\";\nimport ElectronicIcon from \"../icons/ElectronicIcon\";\n\ninterface SignatureElectronicIntroductionProps {\n onContinue: () => void;\n onBack: () => void;\n title?: string;\n description?: string;\n}\n\nconst SignatureElectronicIntroduction: React.FC<SignatureElectronicIntroductionProps> = ({\n onContinue,\n onBack,\n title: propTitle,\n description: propDescription,\n}) => {\n const { t } = useTranslation();\n\n const title = propTitle || t(\"signature.introduction_title\", \"Signature électronique\");\n const description = propDescription || t(\"signature.introduction_description\", \"Veuillez signer le document pour continuer.\");\n\n const handleContinueClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n onContinue();\n };\n\n const handleBackClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n onBack();\n };\n\n return (\n <MobilePageLayout\n footer={\n <PageActions\n primary={\n <Button onClick={handleContinueClick} type=\"button\">\n {t(\"buttons.continue\", \"Commencer\")}\n </Button>\n }\n secondary={\n <Button variant=\"secondary\" onClick={handleBackClick} type=\"button\">\n {t(\"buttons.back\", \"Retour\")}\n </Button>\n }\n />\n }\n >\n <div className=\"px-4 py-6 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\">\n <Title className=\"text-xl md:text-2xl lg:text-3xl\">{title}</Title>\n <Subtitle className=\"text-sm md:text-base text-gray-600 leading-relaxed whitespace-pre-line\">\n {description}\n </Subtitle>\n </div>\n\n <div className=\"flex justify-center items-center w-full py-6\">\n <ElectronicIcon className=\"w-full max-w-xs md:max-w-sm\" />\n </div>\n\n {/* Information box */}\n <div className=\"bg-blue-50 border border-blue-200 rounded-lg p-4\">\n <div className=\"flex\">\n <div className=\"shrink-0\">\n <svg\n className=\"h-5 w-5 text-blue-400\"\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </div>\n <div className=\"ml-3\">\n <h3 className=\"text-sm font-medium text-blue-800\">\n {t(\"signature.info_title\", \"Instruction\")}\n </h3>\n <div className=\"mt-2 text-sm text-blue-700\">\n <p>{t(\"signature.info_description\", \"Vous allez être redirigé vers un formulaire de signature sécurisé. Assurez-vous d'avoir une connexion stable.\")}</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </MobilePageLayout>\n );\n};\n\nexport default SignatureElectronicIntroduction;\n"],"names":["useTranslation","_jsx","MobilePageLayout","PageActions","Button","_jsxs","Title","Subtitle","ElectronicIcon"],"mappings":"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"}
1
+ {"version":3,"file":"SignatureElectronicIntroduction.js","sources":["../../../../../src/components/signature-electronic/SignatureElectronicIntroduction.tsx"],"sourcesContent":["import React from \"react\";\nimport Title from \"../ui/Title\";\nimport Subtitle from \"../ui/Subtitle\";\nimport Button from \"../ui/Button\";\nimport PageActions from \"../ui/PageActions\";\nimport { useTranslation } from \"react-i18next\";\nimport sdkI18n from \"../../i18n\";\nimport MobilePageLayout from \"../ui/MobilePageLayout\";\nimport ElectronicIcon from \"../icons/ElectronicIcon\";\n\ninterface SignatureElectronicIntroductionProps {\n onContinue: () => void;\n onBack: () => void;\n title?: string;\n description?: string;\n}\n\nconst SignatureElectronicIntroduction: React.FC<SignatureElectronicIntroductionProps> = ({\n onContinue,\n onBack,\n title: propTitle,\n description: propDescription,\n}) => {\n const { t } = useTranslation(\"translation\", { i18n: sdkI18n });\n\n const title = propTitle || t(\"signature.introduction_title\", \"Signature électronique\");\n const description = propDescription || t(\"signature.introduction_description\", \"Veuillez signer le document pour continuer.\");\n\n const handleContinueClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n onContinue();\n };\n\n const handleBackClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n onBack();\n };\n\n return (\n <MobilePageLayout\n footer={\n <PageActions\n primary={\n <Button onClick={handleContinueClick} type=\"button\">\n {t(\"buttons.continue\", \"Commencer\")}\n </Button>\n }\n secondary={\n <Button variant=\"secondary\" onClick={handleBackClick} type=\"button\">\n {t(\"buttons.back\", \"Retour\")}\n </Button>\n }\n />\n }\n >\n <div className=\"px-4 py-6 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\">\n <Title className=\"text-xl md:text-2xl lg:text-3xl\">{title}</Title>\n <Subtitle className=\"text-sm md:text-base text-gray-600 leading-relaxed whitespace-pre-line\">\n {description}\n </Subtitle>\n </div>\n\n <div className=\"flex justify-center items-center w-full py-6\">\n <ElectronicIcon className=\"w-full max-w-xs md:max-w-sm\" />\n </div>\n\n {/* Information box */}\n <div className=\"bg-blue-50 border border-blue-200 rounded-lg p-4\">\n <div className=\"flex\">\n <div className=\"shrink-0\">\n <svg\n className=\"h-5 w-5 text-blue-400\"\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </div>\n <div className=\"ml-3\">\n <h3 className=\"text-sm font-medium text-blue-800\">\n {t(\"signature.info_title\", \"Instruction\")}\n </h3>\n <div className=\"mt-2 text-sm text-blue-700\">\n <p>{t(\"signature.info_description\", \"Vous allez être redirigé vers un formulaire de signature sécurisé. Assurez-vous d'avoir une connexion stable.\")}</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </MobilePageLayout>\n );\n};\n\nexport default SignatureElectronicIntroduction;\n"],"names":["useTranslation","sdkI18n","_jsx","MobilePageLayout","PageActions","Button","_jsxs","Title","Subtitle","ElectronicIcon"],"mappings":"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"}
@@ -35,10 +35,13 @@ require('../jdi/JDIProcessing.js');
35
35
  require('../../services/cameraService.js');
36
36
  require('../../services/documentDetectionService.js');
37
37
  require('lucide-react');
38
- require('react-i18next');
39
38
  require('../document-collection/DocumentProcessing.js');
40
39
  require('../../constants/userInputForm.js');
41
- require('../session/UserInputForm/CustomFormFields.js');
40
+ require('date-fns');
41
+ require('react-day-picker');
42
+ require('@radix-ui/react-popover');
43
+ require('react-i18next');
44
+ require('../../i18n/index.js');
42
45
  require('@docuseal/react');
43
46
  require('../../services/professionalImageQuality.js');
44
47
  require('../../providers/I18nProvider.js');
@@ -1 +1 @@
1
- {"version":3,"file":"CGU.js","sources":["../../../../../src/components/start-flow/CGU.tsx"],"sourcesContent":["import Body from \"../ui/Body\";\nimport Title from \"../ui/Title\";\nimport { useState } from \"react\";\nimport { updateSessionStatus } from \"../../services/sessionService\";\n\n// For checkbox\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { CheckIcon } from \"@radix-ui/react-icons\";\nimport Button from \"../ui/Button\";\nimport PageActions from \"../ui/PageActions\";\nimport { useI18n } from \"../..\";\nimport LanguageSelector from \"../ui/LanguageSelector\";\nimport MobilePageLayout from \"../ui/MobilePageLayout\";\nimport { SessionData } from \"../../types/session\";\n\ninterface CGUProps {\n setStep: (nubr: number) => void;\n sessionId?: string;\n showQRCodeInstructions: boolean;\n languages?: string[];\n session?: SessionData;\n onBack?: () => void;\n}\n\nconst CGU = ({\n setStep,\n sessionId,\n showQRCodeInstructions,\n languages,\n session,\n onBack,\n}: CGUProps) => {\n const { t, setLanguage } = useI18n();\n const [selectedLanguage, setSelectedLanguage] = useState(\n languages ? languages[0] : \"fr\"\n );\n const [checked, setChecked] = useState(false);\n const [error, setError] = useState(false);\n const [submitError, setSubmitError] = useState<string | null>(null);\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const handleCheckboxChange = (value: boolean) => {\n setChecked(value);\n setError(false);\n setSubmitError(null);\n };\n\n const goOnNextStep = async () => {\n if (!checked) {\n setError(true);\n return;\n }\n\n const nextStep = showQRCodeInstructions ? 0.5 : 1;\n\n if (!sessionId) {\n setStep(nextStep);\n return;\n }\n\n setIsSubmitting(true);\n try {\n await updateSessionStatus(sessionId, \"started\");\n setStep(nextStep);\n } catch (statusError) {\n console.error(t(\"CGU.error.console_update_status\"), statusError);\n setSubmitError(t(\"CGU.error.general\"));\n } finally {\n setIsSubmitting(false);\n }\n };\n\n const handleLanguageChange = (langId: string) => {\n const lang = languages?.find((l) => l === langId);\n if (lang) {\n setLanguage(lang);\n setSelectedLanguage(lang);\n }\n };\n\n return (\n <MobilePageLayout\n session={session ?? undefined}\n footer={\n <div className=\"w-full space-y-4\">\n {/* Error message */}\n {(error || submitError) && (\n <div className=\"bg-red-50 border border-red-200 rounded-lg p-3\">\n <Body className=\"text-red-600 text-sm text-center\">\n {submitError ? submitError : t(\"CGU.error.required\")}\n </Body>\n </div>\n )}\n\n {/* Consent checkbox */}\n <div className=\"flex items-start gap-3 p-3 bg-gray-50 rounded-lg\">\n <CheckboxPrimitive.Root\n id=\"checkbox\"\n checked={checked}\n onCheckedChange={(value) => handleCheckboxChange(!!value)}\n className={`mt-1 h-5 w-5 shrink-0 rounded border bg-white transition-colors\n data-[state=checked]:bg-[var(--dk-btn-bg)] data-[state=checked]:border-[var(--dk-btn-bg)]\n ${error\n ? \"border-red-500\"\n : \"border-gray-300 hover:border-gray-400\"\n }\n `}\n >\n <CheckboxPrimitive.Indicator className=\"flex items-center justify-center text-white\">\n <CheckIcon className=\"h-4 w-4\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n\n <LabelPrimitive.Root htmlFor=\"checkbox\" className=\"cursor-pointer\">\n <Body\n className={`text-left text-sm leading-relaxed ${error ? \"text-red-600\" : \"text-gray-700\"\n }`}\n >\n {t(\"CGU.checkbox_text\")}\n </Body>\n </LabelPrimitive.Root>\n </div>\n\n {/* Buttons */}\n <PageActions\n primary={\n <Button\n onClick={goOnNextStep}\n disabled={!checked || isSubmitting}\n >\n {isSubmitting\n ? t(\"CGU.button.loading\")\n : t(\"CGU.button.continue\")}\n </Button>\n }\n secondary={\n onBack ? (\n <Button variant=\"secondary\" onClick={onBack}>\n {t(\"jdi.country_selection.back\")}\n </Button>\n ) : undefined\n }\n />\n </div>\n }\n >\n <div className=\"px-4 py-8 md:px-8 flex flex-col\">\n <div className=\"w-full max-w-2xl mx-auto space-y-6\">\n <div className=\"text-center justify-center items-center\">\n <Title className=\"text-xl md:text-2xl lg:text-3xl mb-6\">\n {t(\"CGU.terms_of_use\")}\n </Title>\n\n {/* Language selector */}\n {languages && languages.length > 1 && (\n <div className=\"flex justify-center items-center mb-6\">\n <LanguageSelector\n className=\"w-64 mx-auto\"\n languages={languages}\n />\n </div>\n )}\n </div>\n\n {/* Terms content */}\n <div className=\"bg-gray-50 rounded-lg p-4 md:p-6\">\n <Body className=\"text-left text-sm md:text-base leading-relaxed space-y-4\">\n <p>{t(\"CGU.title\")}</p>\n <p>{t(\"CGU.description\")}</p>\n <p>\n {t(\"CGU.description2_before\")}{\" \"}\n <a\n href={t(\"CGU.privacy_url\")}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"underline text-blue-600 hover:text-blue-800\"\n >\n {t(\"CGU.privacy_link_label\")}\n </a>\n {t(\"CGU.description2_after\")}\n </p>\n <p>\n {t(\"CGU.by_proceeding_before\")}{\" \"}\n <a\n href={t(\"CGU.cgu_url\")}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"underline text-blue-600 hover:text-blue-800\"\n >\n {t(\"CGU.cgu_link_label\")}\n </a>\n {t(\"CGU.by_proceeding_after\")}\n </p>\n </Body>\n </div>\n </div>\n </div>\n </MobilePageLayout>\n );\n};\n\nexport default CGU;\n"],"names":["useI18n","useState","__awaiter","updateSessionStatus","_jsx","MobilePageLayout","_jsxs","Body","CheckboxPrimitive","CheckIcon","LabelPrimitive","PageActions","Button","Title","LanguageSelector"],"mappings":"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"}
1
+ {"version":3,"file":"CGU.js","sources":["../../../../../src/components/start-flow/CGU.tsx"],"sourcesContent":["import Body from \"../ui/Body\";\nimport Title from \"../ui/Title\";\nimport { useState } from \"react\";\nimport { updateSessionStatus } from \"../../services/sessionService\";\n\n// For checkbox\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { CheckIcon } from \"@radix-ui/react-icons\";\nimport Button from \"../ui/Button\";\nimport PageActions from \"../ui/PageActions\";\nimport { useI18n } from \"../..\";\nimport LanguageSelector from \"../ui/LanguageSelector\";\nimport MobilePageLayout from \"../ui/MobilePageLayout\";\nimport { SessionData } from \"../../types/session\";\n\ninterface CGUProps {\n setStep: (nubr: number) => void;\n sessionId?: string;\n showQRCodeInstructions: boolean;\n languages?: string[];\n session?: SessionData;\n onBack?: () => void;\n}\n\nconst CGU = ({\n setStep,\n sessionId,\n showQRCodeInstructions,\n languages,\n session,\n onBack,\n}: CGUProps) => {\n const { t, setLanguage } = useI18n();\n const [selectedLanguage, setSelectedLanguage] = useState(\n languages ? languages[0] : \"fr\"\n );\n const [checked, setChecked] = useState(false);\n const [error, setError] = useState(false);\n const [submitError, setSubmitError] = useState<string | null>(null);\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const handleCheckboxChange = (value: boolean) => {\n setChecked(value);\n setError(false);\n setSubmitError(null);\n };\n\n const goOnNextStep = async () => {\n if (!checked) {\n setError(true);\n return;\n }\n\n const nextStep = showQRCodeInstructions ? 0.5 : 1;\n\n if (!sessionId) {\n setStep(nextStep);\n return;\n }\n\n setIsSubmitting(true);\n try {\n await updateSessionStatus(sessionId, \"started\");\n setStep(nextStep);\n } catch (statusError) {\n console.error(t(\"CGU.error.console_update_status\"), statusError);\n setSubmitError(t(\"CGU.error.general\"));\n } finally {\n setIsSubmitting(false);\n }\n };\n\n const handleLanguageChange = (langId: string) => {\n const lang = languages?.find((l) => l === langId);\n if (lang) {\n setLanguage(lang);\n setSelectedLanguage(lang);\n }\n };\n\n return (\n <MobilePageLayout\n session={session ?? undefined}\n footer={\n <div className=\"w-full space-y-4\">\n {/* Error message */}\n {(error || submitError) && (\n <div className=\"bg-red-50 border border-red-200 rounded-lg p-3\">\n <Body className=\"text-red-600 text-sm text-center\">\n {submitError ? submitError : t(\"CGU.error.required\")}\n </Body>\n </div>\n )}\n\n {/* Consent checkbox */}\n <div className=\"flex items-start gap-3 p-3 bg-gray-50 rounded-lg\">\n <CheckboxPrimitive.Root\n id=\"checkbox\"\n checked={checked}\n onCheckedChange={(value) => handleCheckboxChange(!!value)}\n className={`mt-1 h-5 w-5 shrink-0 rounded border bg-white transition-colors\n data-[state=checked]:bg-[var(--dk-btn-bg)] data-[state=checked]:border-[var(--dk-btn-bg)]\n ${error\n ? \"border-red-500\"\n : \"border-gray-300 hover:border-gray-400\"\n }\n `}\n >\n <CheckboxPrimitive.Indicator className=\"flex items-center justify-center text-white\">\n <CheckIcon className=\"h-4 w-4\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n\n <LabelPrimitive.Root htmlFor=\"checkbox\" className=\"cursor-pointer\">\n <Body\n className={`text-left text-sm leading-relaxed ${error ? \"text-red-600\" : \"text-gray-700\"\n }`}\n >\n {t(\"CGU.checkbox_text\")}\n </Body>\n </LabelPrimitive.Root>\n </div>\n\n {/* Buttons */}\n <PageActions\n primary={\n <Button\n onClick={goOnNextStep}\n disabled={!checked || isSubmitting}\n >\n {isSubmitting\n ? t(\"CGU.button.loading\")\n : t(\"CGU.button.continue\")}\n </Button>\n }\n secondary={\n onBack ? (\n <Button variant=\"secondary\" onClick={onBack}>\n {t(\"jdi.country_selection.back\")}\n </Button>\n ) : undefined\n }\n />\n </div>\n }\n >\n <div className=\"px-4 py-8 md:px-8 flex flex-col\">\n <div className=\"w-full max-w-2xl mx-auto space-y-6\">\n <div className=\"text-center justify-center items-center\">\n <Title className=\"text-xl md:text-2xl lg:text-3xl mb-6\">\n {t(\"CGU.terms_of_use\")}\n </Title>\n\n {/* Language selector */}\n {languages && languages.length > 1 && (\n <div className=\"flex justify-center items-center mb-6\">\n <LanguageSelector\n className=\"w-64 mx-auto\"\n languages={languages}\n />\n </div>\n )}\n </div>\n\n {/* Terms content */}\n <div className=\"bg-gray-50 rounded-lg p-4 md:p-6\">\n <Body className=\"text-left text-sm md:text-base leading-relaxed space-y-4\">\n <p>{t(\"CGU.title\")}</p>\n <p>{t(\"CGU.description\")}</p>\n <p>\n {t(\"CGU.description2_before\")}{\" \"}\n <a\n href={t(\"CGU.privacy_url\")}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"underline text-blue-600 hover:text-blue-800\"\n >\n {t(\"CGU.privacy_link_label\")}\n </a>\n {t(\"CGU.description2_after\")}\n </p>\n <p>\n {t(\"CGU.by_proceeding_before\")}{\" \"}\n <a\n href={t(\"CGU.cgu_url\")}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"underline text-blue-600 hover:text-blue-800\"\n >\n {t(\"CGU.cgu_link_label\")}\n </a>\n {t(\"CGU.by_proceeding_after\")}\n </p>\n </Body>\n </div>\n </div>\n </div>\n </MobilePageLayout>\n );\n};\n\nexport default CGU;\n"],"names":["useI18n","useState","__awaiter","updateSessionStatus","_jsx","MobilePageLayout","_jsxs","Body","CheckboxPrimitive","CheckIcon","LabelPrimitive","PageActions","Button","Title","LanguageSelector"],"mappings":"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"}
@@ -35,10 +35,13 @@ require('../jdi/JDIProcessing.js');
35
35
  require('../../services/cameraService.js');
36
36
  require('../../services/documentDetectionService.js');
37
37
  require('lucide-react');
38
- require('react-i18next');
39
38
  require('../document-collection/DocumentProcessing.js');
40
39
  require('../../constants/userInputForm.js');
41
- require('../session/UserInputForm/CustomFormFields.js');
40
+ require('date-fns');
41
+ require('react-day-picker');
42
+ require('@radix-ui/react-popover');
43
+ require('react-i18next');
44
+ require('../../i18n/index.js');
42
45
  require('@docuseal/react');
43
46
  require('../../services/professionalImageQuality.js');
44
47
  require('../../providers/I18nProvider.js');
@@ -1 +1 @@
1
- {"version":3,"file":"Start.js","sources":["../../../../../src/components/start-flow/Start.tsx"],"sourcesContent":["import { useI18n } from \"../..\";\nimport { SessionData } from \"../../types/session\";\nimport StartIcon from \"../icons/StartIcon\";\nimport Button from \"../ui/Button\";\nimport PageActions from \"../ui/PageActions\";\nimport Subtitle from \"../ui/Subtitle\";\nimport Title from \"../ui/Title\";\nimport MobilePageLayout from \"../ui/MobilePageLayout\";\n\ninterface StartProps {\n setStep: (nubr: number) => void;\n welcomeTitle?: string;\n welcomeSubtitle?: string;\n welcomeDescription?: string;\n welcomeImage?: string;\n session?: SessionData;\n}\n\nconst Start = ({\n setStep,\n welcomeTitle,\n welcomeSubtitle,\n welcomeDescription,\n welcomeImage,\n session,\n}: StartProps) => {\n const { t } = useI18n();\n\n const displayTitle =\n welcomeTitle || t(\"start.welcome_title\", \"Vérifions votre identité\");\n const displaySubtitle =\n welcomeSubtitle ||\n t(\"start.welcome_subtitle\", \"Nous devons vérifier votre identité\");\n const displayDescription =\n welcomeDescription || t(\"start.welcome_description\");\n\n const goOnCGU = () => {\n setStep(1);\n };\n\n return (\n <MobilePageLayout\n footer={\n <PageActions\n primary={\n <Button onClick={goOnCGU}>{t(\"start_verification\")}</Button>\n }\n />\n }\n session={session}\n >\n <div className=\"flex flex-col items-center px-4 py-8 md:px-8\">\n <div className=\"w-full max-w-md mx-auto text-center space-y-6 flex flex-col\">\n {/* Icon/Image - shown on top for both mobile and desktop */}\n <div className=\"flex justify-center\">\n {welcomeImage ? (\n <img\n src={welcomeImage}\n alt=\"Welcome image\"\n className=\"max-w-48 w-auto h-auto rounded-lg\"\n />\n ) : (\n <StartIcon className=\"w-48 h-48\" />\n )}\n </div>\n\n {/* Text content */}\n <div className=\"space-y-4\">\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 {/* Terms notice */}\n <div className=\"md:block mt-8\">\n <p className=\"text-xs text-gray-500 leading-relaxed max-w-sm mx-auto whitespace-pre-line\">\n {displayDescription}\n </p>\n </div>\n </div>\n </div>\n </MobilePageLayout>\n );\n};\n\nexport default Start;\n"],"names":["useI18n","_jsx","MobilePageLayout","PageActions","Button","_jsxs","StartIcon","Title","Subtitle"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,IAAM,KAAK,GAAG,UAAC,EAOF,EAAA;AANX,IAAA,IAAA,OAAO,GAAA,EAAA,CAAA,OAAA,EACP,YAAY,GAAA,EAAA,CAAA,YAAA,EACZ,eAAe,GAAA,EAAA,CAAA,eAAA,EACf,kBAAkB,wBAAA,EAClB,YAAY,GAAA,EAAA,CAAA,YAAA,EACZ,OAAO,GAAA,EAAA,CAAA,OAAA;AAEC,IAAA,IAAA,CAAC,GAAKA,eAAO,EAAE,EAAd;IAET,IAAM,YAAY,GAChB,YAAY,IAAI,CAAC,CAAC,qBAAqB,EAAE,0BAA0B,CAAC;IACtE,IAAM,eAAe,GACnB,eAAe;AACf,QAAA,CAAC,CAAC,wBAAwB,EAAE,qCAAqC,CAAC;IACpE,IAAM,kBAAkB,GACtB,kBAAkB,IAAI,CAAC,CAAC,2BAA2B,CAAC;AAEtD,IAAA,IAAM,OAAO,GAAG,YAAA;QACd,OAAO,CAAC,CAAC,CAAC;AACZ,IAAA,CAAC;IAED,QACEC,cAAA,CAACC,wBAAgB,EAAA,EACf,MAAM,EACJD,cAAA,CAACE,mBAAW,EAAA,EACV,OAAO,EACLF,cAAA,CAACG,cAAM,EAAA,EAAC,OAAO,EAAE,OAAO,EAAA,QAAA,EAAG,CAAC,CAAC,oBAAoB,CAAC,EAAA,CAAU,EAAA,CAE9D,EAEJ,OAAO,EAAE,OAAO,EAAA,QAAA,EAEhBH,wBAAK,SAAS,EAAC,8CAA8C,EAAA,QAAA,EAC3DI,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,6DAA6D,EAAA,QAAA,EAAA,CAE1EJ,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,qBAAqB,EAAA,QAAA,EACjC,YAAY,IACXA,cAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,YAAY,EACjB,GAAG,EAAC,eAAe,EACnB,SAAS,EAAC,mCAAmC,EAAA,CAC7C,KAEFA,cAAA,CAACK,iBAAS,EAAA,EAAC,SAAS,EAAC,WAAW,EAAA,CAAG,CACpC,EAAA,CACG,EAGND,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,WAAW,EAAA,QAAA,EAAA,CACxBJ,cAAA,CAACM,aAAK,EAAA,EAAC,SAAS,EAAC,iCAAiC,EAAA,QAAA,EAC/C,YAAY,EAAA,CACP,EACRN,cAAA,CAACO,gBAAQ,EAAA,EAAC,SAAS,EAAC,wEAAwE,EAAA,QAAA,EACzF,eAAe,EAAA,CACP,CAAA,EAAA,CACP,EAGNP,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,eAAe,EAAA,QAAA,EAC5BA,cAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,4EAA4E,EAAA,QAAA,EACtF,kBAAkB,EAAA,CACjB,EAAA,CACA,CAAA,EAAA,CACF,EAAA,CACF,EAAA,CACW;AAEvB;;;;"}
1
+ {"version":3,"file":"Start.js","sources":["../../../../../src/components/start-flow/Start.tsx"],"sourcesContent":["import { useI18n } from \"../..\";\nimport { SessionData } from \"../../types/session\";\nimport StartIcon from \"../icons/StartIcon\";\nimport Button from \"../ui/Button\";\nimport PageActions from \"../ui/PageActions\";\nimport Subtitle from \"../ui/Subtitle\";\nimport Title from \"../ui/Title\";\nimport MobilePageLayout from \"../ui/MobilePageLayout\";\n\ninterface StartProps {\n setStep: (nubr: number) => void;\n welcomeTitle?: string;\n welcomeSubtitle?: string;\n welcomeDescription?: string;\n welcomeImage?: string;\n session?: SessionData;\n}\n\nconst Start = ({\n setStep,\n welcomeTitle,\n welcomeSubtitle,\n welcomeDescription,\n welcomeImage,\n session,\n}: StartProps) => {\n const { t } = useI18n();\n\n const displayTitle =\n welcomeTitle || t(\"start.welcome_title\", \"Vérifions votre identité\");\n const displaySubtitle =\n welcomeSubtitle ||\n t(\"start.welcome_subtitle\", \"Nous devons vérifier votre identité\");\n const displayDescription =\n welcomeDescription || t(\"start.welcome_description\");\n\n const goOnCGU = () => {\n setStep(1);\n };\n\n return (\n <MobilePageLayout\n footer={\n <PageActions\n primary={\n <Button onClick={goOnCGU}>{t(\"start_verification\")}</Button>\n }\n />\n }\n session={session}\n >\n <div className=\"flex flex-col items-center px-4 py-8 md:px-8\">\n <div className=\"w-full max-w-md mx-auto text-center space-y-6 flex flex-col\">\n {/* Icon/Image - shown on top for both mobile and desktop */}\n <div className=\"flex justify-center\">\n {welcomeImage ? (\n <img\n src={welcomeImage}\n alt=\"Welcome image\"\n className=\"max-w-48 w-auto h-auto rounded-lg\"\n />\n ) : (\n <StartIcon className=\"w-48 h-48\" />\n )}\n </div>\n\n {/* Text content */}\n <div className=\"space-y-4\">\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 {/* Terms notice */}\n <div className=\"md:block mt-8\">\n <p className=\"text-xs text-gray-500 leading-relaxed max-w-sm mx-auto whitespace-pre-line\">\n {displayDescription}\n </p>\n </div>\n </div>\n </div>\n </MobilePageLayout>\n );\n};\n\nexport default Start;\n"],"names":["useI18n","_jsx","MobilePageLayout","PageActions","Button","_jsxs","StartIcon","Title","Subtitle"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,IAAM,KAAK,GAAG,UAAC,EAOF,EAAA;AANX,IAAA,IAAA,OAAO,GAAA,EAAA,CAAA,OAAA,EACP,YAAY,GAAA,EAAA,CAAA,YAAA,EACZ,eAAe,GAAA,EAAA,CAAA,eAAA,EACf,kBAAkB,wBAAA,EAClB,YAAY,GAAA,EAAA,CAAA,YAAA,EACZ,OAAO,GAAA,EAAA,CAAA,OAAA;AAEC,IAAA,IAAA,CAAC,GAAKA,eAAO,EAAE,EAAd;IAET,IAAM,YAAY,GAChB,YAAY,IAAI,CAAC,CAAC,qBAAqB,EAAE,0BAA0B,CAAC;IACtE,IAAM,eAAe,GACnB,eAAe;AACf,QAAA,CAAC,CAAC,wBAAwB,EAAE,qCAAqC,CAAC;IACpE,IAAM,kBAAkB,GACtB,kBAAkB,IAAI,CAAC,CAAC,2BAA2B,CAAC;AAEtD,IAAA,IAAM,OAAO,GAAG,YAAA;QACd,OAAO,CAAC,CAAC,CAAC;AACZ,IAAA,CAAC;IAED,QACEC,cAAA,CAACC,wBAAgB,EAAA,EACf,MAAM,EACJD,cAAA,CAACE,mBAAW,EAAA,EACV,OAAO,EACLF,cAAA,CAACG,cAAM,EAAA,EAAC,OAAO,EAAE,OAAO,EAAA,QAAA,EAAG,CAAC,CAAC,oBAAoB,CAAC,EAAA,CAAU,EAAA,CAE9D,EAEJ,OAAO,EAAE,OAAO,EAAA,QAAA,EAEhBH,wBAAK,SAAS,EAAC,8CAA8C,EAAA,QAAA,EAC3DI,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,6DAA6D,EAAA,QAAA,EAAA,CAE1EJ,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,qBAAqB,EAAA,QAAA,EACjC,YAAY,IACXA,cAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,YAAY,EACjB,GAAG,EAAC,eAAe,EACnB,SAAS,EAAC,mCAAmC,EAAA,CAC7C,KAEFA,cAAA,CAACK,iBAAS,EAAA,EAAC,SAAS,EAAC,WAAW,EAAA,CAAG,CACpC,EAAA,CACG,EAGND,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,WAAW,EAAA,QAAA,EAAA,CACxBJ,cAAA,CAACM,aAAK,EAAA,EAAC,SAAS,EAAC,iCAAiC,EAAA,QAAA,EAC/C,YAAY,EAAA,CACP,EACRN,cAAA,CAACO,gBAAQ,EAAA,EAAC,SAAS,EAAC,wEAAwE,EAAA,QAAA,EACzF,eAAe,EAAA,CACP,CAAA,EAAA,CACP,EAGNP,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,eAAe,EAAA,QAAA,EAC5BA,cAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,4EAA4E,EAAA,QAAA,EACtF,kBAAkB,EAAA,CACjB,EAAA,CACA,CAAA,EAAA,CACF,EAAA,CACF,EAAA,CACW;AAEvB;;;;"}
@@ -6,6 +6,7 @@ var tslib_es6 = require('../../node_modules/tslib/tslib.es6.js');
6
6
  var jsxRuntime = require('react/jsx-runtime');
7
7
  var React = require('react');
8
8
  var reactI18next = require('react-i18next');
9
+ var index = require('../../i18n/index.js');
9
10
  var lucideReact = require('lucide-react');
10
11
  var api = require('../../services/api.js');
11
12
 
@@ -33,7 +34,7 @@ var maskReferenceValue = function (value) {
33
34
  };
34
35
  var ExternalVerificationNodeHandler = function (_a) {
35
36
  var node = _a.node, session = _a.session, userInput = _a.userInput, setUserInput = _a.setUserInput, onNext = _a.onNext;
36
- var t = reactI18next.useTranslation().t;
37
+ var t = reactI18next.useTranslation('translation', { i18n: index.default }).t;
37
38
  React.useEffect(function () {
38
39
  var performVerification = function () { return tslib_es6.__awaiter(void 0, void 0, void 0, function () {
39
40
  var verificationResult, apiType, referenceField, referenceValueMasked, nodeData, referenceNodeId, referenceVariable, nodeInput, userInputFlat, lookupKeys, referenceValue, _i, lookupKeys_1, key, candidateValue, allCustomFields, _a, _b, _c, key, value, stringValue, response, result, apiErr_1, apiResult, err_1;
@@ -1 +1 @@
1
- {"version":3,"file":"ExternalVerificationNodeHandler.js","sources":["../../../../../src/components/template/ExternalVerificationNodeHandler.tsx"],"sourcesContent":["import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Loader2 } from 'lucide-react';\nimport { apiService } from '../../services/api';\nimport type { SessionData, SessionTemplateNode } from '../../types/session';\nimport type { UserInput } from '../../types/userInput';\n\ntype VerificationStatus =\n | 'ok'\n | 'not_found'\n | 'invalid_input'\n | 'config_error'\n | 'external_error';\n\ninterface VerificationResponsePayload {\n isVerified: boolean;\n status: VerificationStatus;\n message?: string;\n errorCode?: string;\n}\n\ninterface ExternalVerificationNodeHandlerProps {\n node: SessionTemplateNode;\n session: SessionData;\n userInput: UserInput;\n setUserInput: React.Dispatch<React.SetStateAction<UserInput>>;\n onNext: () => void;\n onPrevious: () => void;\n}\n\nconst FIELD_ALIASES: Record<'siren' | 'siret', string[]> = {\n siren: ['siren', 'siren_number', 'company_siren', 'legal_siren', 'num_siren'],\n siret: ['siret', 'siret_number', 'company_siret', 'legal_siret', 'num_siret'],\n};\n\nconst normalizeReferenceField = (field?: string): 'siren' | 'siret' | undefined => {\n if (!field) return undefined;\n const normalized = field.toLowerCase().replace(/[\\s_.-]/g, '');\n if (normalized.includes('siret')) return 'siret';\n if (normalized.includes('siren')) return 'siren';\n return undefined;\n};\n\nconst maskReferenceValue = (value: string): string => {\n const clean = value.replace(/\\s+/g, '');\n if (!clean) return '';\n if (clean.length <= 4) return '****';\n return `${'*'.repeat(clean.length - 4)}${clean.slice(-4)}`;\n};\n\nconst ExternalVerificationNodeHandler: React.FC<ExternalVerificationNodeHandlerProps> = ({\n node,\n session,\n userInput,\n setUserInput,\n onNext,\n}) => {\n const { t } = useTranslation();\n\n useEffect(() => {\n const performVerification = async () => {\n let verificationResult: VerificationResponsePayload = {\n isVerified: false,\n status: 'external_error',\n message: 'Verification did not run.',\n };\n let apiType = (node as any).targetApi || 'INSEE';\n let referenceField: 'siren' | 'siret' | undefined;\n let referenceValueMasked = '';\n console.log(\"Api Type :\", apiType);\n try {\n if (!session?.id) {\n throw new Error('Session ID is missing');\n }\n\n const nodeData = node as any;\n apiType = String(nodeData.targetApi || 'INSEE');\n const referenceNodeId = String(nodeData.referenceNodeId || '');\n const referenceVariable = String(nodeData.referenceVariable || '');\n referenceField = normalizeReferenceField(\n String(nodeData.referenceField || referenceVariable || ''),\n );\n\n if (!referenceNodeId || !referenceField) {\n verificationResult = {\n isVerified: false,\n status: 'config_error',\n message: 'External verification node is missing reference configuration.',\n errorCode: 'MISSING_REFERENCE_CONFIG',\n };\n } else {\n const nodeInput = (userInput as any)[referenceNodeId];\n const userInputFlat = userInput as any;\n const lookupKeys = Array.from(\n new Set([\n referenceVariable,\n referenceField,\n ...FIELD_ALIASES[referenceField],\n ].filter(Boolean)),\n );\n\n let referenceValue: string | undefined;\n for (const key of lookupKeys) {\n const candidateValue =\n nodeInput?.[key] ??\n nodeInput?.customFormData?.[key] ??\n userInputFlat?.customFormData?.[key] ??\n userInputFlat?.[key];\n\n if (candidateValue !== undefined && candidateValue !== null && `${candidateValue}`.trim() !== '') {\n referenceValue = String(candidateValue);\n break;\n }\n }\n\n // Fallback: Smart lookup if no value found by key\n if (!referenceValue) {\n const allCustomFields = {\n ...(userInputFlat?.customFormData || {}),\n ...(nodeInput?.customFormData || {}),\n ...(nodeInput || {}),\n };\n\n for (const [key, value] of Object.entries(allCustomFields)) {\n if (typeof value !== 'string' && typeof value !== 'number') continue;\n const stringValue = String(value).replace(/\\s+/g, '');\n\n // 9-digit SIREN pattern\n if (referenceField === 'siren' && /^\\d{9}$/.test(stringValue)) {\n referenceValue = stringValue;\n break;\n }\n // 14-digit SIRET pattern\n if (referenceField === 'siret' && /^\\d{14}$/.test(stringValue)) {\n referenceValue = stringValue;\n break;\n }\n }\n }\n\n if (!referenceValue) {\n verificationResult = {\n isVerified: false,\n status: 'invalid_input',\n message: 'No SIREN/SIRET value found in source node data.',\n errorCode: 'REFERENCE_VALUE_NOT_FOUND',\n };\n } else {\n referenceValueMasked = maskReferenceValue(referenceValue);\n\n try {\n const response = await apiService.post(\n `/session/sdk/${session.id}/verify-external/${node.id}`,\n { apiType, referenceValue, referenceField },\n );\n const result = response.data?.data as VerificationResponsePayload | undefined;\n if (result && typeof result.isVerified === 'boolean') {\n verificationResult = result;\n }\n } catch (apiErr: any) {\n const apiResult = apiErr?.response?.data?.data as VerificationResponsePayload | undefined;\n if (apiResult && typeof apiResult.isVerified === 'boolean') {\n verificationResult = apiResult;\n } else {\n verificationResult = {\n isVerified: false,\n status: 'external_error',\n message: 'External verification request failed.',\n errorCode: 'REQUEST_FAILED',\n };\n }\n }\n }\n }\n } catch (err) {\n verificationResult = {\n isVerified: false,\n status: 'external_error',\n message: 'Unexpected error during verification.',\n errorCode: 'UNEXPECTED_ERROR',\n };\n console.warn('[ExternalVerificationNodeHandler] Unexpected error:', err);\n }\n\n setUserInput((prev) => ({\n ...prev,\n [node.id]: {\n isVerified: verificationResult.isVerified,\n apiType,\n referenceField,\n referenceValueMasked,\n verifiedAt: new Date().toISOString(),\n status: verificationResult.status,\n errorCode: verificationResult.errorCode,\n message: verificationResult.message,\n hasError: verificationResult.status !== 'ok' && verificationResult.status !== 'not_found',\n },\n } as any));\n\n onNext();\n };\n\n performVerification();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <div className=\"flex min-h-[300px] flex-col items-center justify-center space-y-4 p-6 text-center\">\n <Loader2 className=\"h-12 w-12 animate-spin text-[#1c2c5c]\" />\n <h3 className=\"text-xl font-semibold text-gray-900\">\n {t('verification_node.verifying_title', 'Vérification en cours...')}\n </h3>\n <p className=\"text-gray-500\">\n {t('verification_node.verifying_desc', 'Nous interrogeons la base de données.')}\n </p>\n </div>\n );\n};\n\nexport default ExternalVerificationNodeHandler;\n"],"names":["useTranslation","useEffect","__awaiter","__spreadArray","__assign","apiService","_jsxs","_jsx","Loader2"],"mappings":";;;;;;;;;;;AA8BA,IAAM,aAAa,GAAwC;IACvD,KAAK,EAAE,CAAC,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,WAAW,CAAC;IAC7E,KAAK,EAAE,CAAC,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,WAAW,CAAC;CAChF;AAED,IAAM,uBAAuB,GAAG,UAAC,KAAc,EAAA;AAC3C,IAAA,IAAI,CAAC,KAAK;AAAE,QAAA,OAAO,SAAS;AAC5B,IAAA,IAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;AAC9D,IAAA,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC;AAAE,QAAA,OAAO,OAAO;AAChD,IAAA,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC;AAAE,QAAA,OAAO,OAAO;AAChD,IAAA,OAAO,SAAS;AACpB,CAAC;AAED,IAAM,kBAAkB,GAAG,UAAC,KAAa,EAAA;IACrC,IAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;AACvC,IAAA,IAAI,CAAC,KAAK;AAAE,QAAA,OAAO,EAAE;AACrB,IAAA,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;AAAE,QAAA,OAAO,MAAM;IACpC,OAAO,EAAA,CAAA,MAAA,CAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA,CAAA,MAAA,CAAG,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAE;AAC9D,CAAC;AAED,IAAM,+BAA+B,GAAmD,UAAC,EAMxF,EAAA;AALG,IAAA,IAAA,IAAI,GAAA,EAAA,CAAA,IAAA,EACJ,OAAO,GAAA,EAAA,CAAA,OAAA,EACP,SAAS,GAAA,EAAA,CAAA,SAAA,EACT,YAAY,GAAA,EAAA,CAAA,YAAA,EACZ,MAAM,GAAA,EAAA,CAAA,MAAA;AAEE,IAAA,IAAA,CAAC,GAAKA,2BAAc,EAAE,EAArB;AAET,IAAAC,eAAS,CAAC,YAAA;AACN,QAAA,IAAM,mBAAmB,GAAG,YAAA,EAAA,OAAAC,mBAAA,CAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,YAAA;;;;;;AACpB,wBAAA,kBAAkB,GAAgC;AAClD,4BAAA,UAAU,EAAE,KAAK;AACjB,4BAAA,MAAM,EAAE,gBAAgB;AACxB,4BAAA,OAAO,EAAE,2BAA2B;yBACvC;AACG,wBAAA,OAAO,GAAI,IAAY,CAAC,SAAS,IAAI,OAAO;wBAE5C,oBAAoB,GAAG,EAAE;AAC7B,wBAAA,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC;;;;wBAE9B,IAAI,EAAC,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,MAAA,GAAA,MAAA,GAAP,OAAO,CAAE,EAAE,CAAA,EAAE;AACd,4BAAA,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC;wBAC5C;wBAEM,QAAQ,GAAG,IAAW;wBAC5B,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,IAAI,OAAO,CAAC;wBACzC,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC,eAAe,IAAI,EAAE,CAAC;wBACxD,iBAAiB,GAAG,MAAM,CAAC,QAAQ,CAAC,iBAAiB,IAAI,EAAE,CAAC;AAClE,wBAAA,cAAc,GAAG,uBAAuB,CACpC,MAAM,CAAC,QAAQ,CAAC,cAAc,IAAI,iBAAiB,IAAI,EAAE,CAAC,CAC7D;AAEG,wBAAA,IAAA,EAAA,CAAC,eAAe,IAAI,CAAC,cAAc,CAAA,EAAnC,OAAA,CAAA,CAAA,YAAA,CAAA,CAAA;AACA,wBAAA,kBAAkB,GAAG;AACjB,4BAAA,UAAU,EAAE,KAAK;AACjB,4BAAA,MAAM,EAAE,cAAc;AACtB,4BAAA,OAAO,EAAE,gEAAgE;AACzE,4BAAA,SAAS,EAAE,0BAA0B;yBACxC;;;AAEK,wBAAA,SAAS,GAAI,SAAiB,CAAC,eAAe,CAAC;wBAC/C,aAAa,GAAG,SAAgB;AAChC,wBAAA,UAAU,GAAG,KAAK,CAAC,IAAI,CACzB,IAAI,GAAG,CAACC,uBAAA,CAAA;4BACJ,iBAAiB;4BACjB;2BACG,aAAa,CAAC,cAAc,CAAC,EAAA,IAAA,CAAA,CAClC,MAAM,CAAC,OAAO,CAAC,CAAC,CACrB;AAEG,wBAAA,cAAc,SAAoB;AACtC,wBAAA,KAAA,EAAA,GAAA,CAA4B,EAAV,YAAA,GAAA,UAAU,EAAV,wBAAU,EAAV,EAAA,EAAU,EAAE;4BAAnB,GAAG,GAAA,YAAA,CAAA,EAAA,CAAA;4BACJ,cAAc,GAChB,MAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,SAAS,KAAA,IAAA,IAAT,SAAS,uBAAT,SAAS,CAAG,GAAG,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAChB,MAAA,SAAS,KAAA,IAAA,IAAT,SAAS,KAAA,MAAA,GAAA,MAAA,GAAT,SAAS,CAAE,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAG,GAAG,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAChC,MAAA,aAAa,KAAA,IAAA,IAAb,aAAa,KAAA,MAAA,GAAA,MAAA,GAAb,aAAa,CAAE,cAAc,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAG,GAAG,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GACpC,aAAa,KAAA,IAAA,IAAb,aAAa,uBAAb,aAAa,CAAG,GAAG,CAAC;AAExB,4BAAA,IAAI,cAAc,KAAK,SAAS,IAAI,cAAc,KAAK,IAAI,IAAI,EAAA,CAAA,MAAA,CAAG,cAAc,CAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;AAC9F,gCAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;gCACvC;4BACJ;wBACJ;;wBAGA,IAAI,CAAC,cAAc,EAAE;AACX,4BAAA,eAAe,GAAAC,kBAAA,CAAAA,kBAAA,CAAAA,kBAAA,CAAA,EAAA,GACb,CAAA,aAAa,aAAb,aAAa,KAAA,MAAA,GAAA,MAAA,GAAb,aAAa,CAAE,cAAc,KAAI,EAAE,KACnC,CAAA,SAAS,KAAA,IAAA,IAAT,SAAS,KAAA,MAAA,GAAA,MAAA,GAAT,SAAS,CAAE,cAAc,KAAI,EAAE,EAAC,GAChC,SAAS,IAAI,EAAE,EACtB;AAED,4BAAA,KAAA,EAAA,GAAA,CAA0D,EAA/B,EAAA,GAAA,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,EAA/B,EAAA,GAAA,EAAA,CAAA,MAA+B,EAA/B,EAAA,EAA+B,EAAE;AAAjD,gCAAA,EAAA,GAAA,EAAA,CAAA,EAAA,CAAY,EAAX,GAAG,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,KAAK,GAAA,EAAA,CAAA,CAAA,CAAA;gCAClB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ;oCAAE;AACtD,gCAAA,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;;gCAGrD,IAAI,cAAc,KAAK,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;oCAC3D,cAAc,GAAG,WAAW;oCAC5B;gCACJ;;gCAEA,IAAI,cAAc,KAAK,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;oCAC5D,cAAc,GAAG,WAAW;oCAC5B;gCACJ;4BACJ;wBACJ;6BAEI,CAAC,cAAc,EAAf,OAAA,CAAA,CAAA,YAAA,CAAA,CAAA;AACA,wBAAA,kBAAkB,GAAG;AACjB,4BAAA,UAAU,EAAE,KAAK;AACjB,4BAAA,MAAM,EAAE,eAAe;AACvB,4BAAA,OAAO,EAAE,iDAAiD;AAC1D,4BAAA,SAAS,EAAE,2BAA2B;yBACzC;;;AAED,wBAAA,oBAAoB,GAAG,kBAAkB,CAAC,cAAc,CAAC;;;;wBAGpC,OAAA,CAAA,CAAA,YAAMC,cAAU,CAAC,IAAI,CAClC,eAAA,CAAA,MAAA,CAAgB,OAAO,CAAC,EAAE,EAAA,mBAAA,CAAA,CAAA,MAAA,CAAoB,IAAI,CAAC,EAAE,CAAE,EACvD,EAAE,OAAO,EAAA,OAAA,EAAE,cAAc,EAAA,cAAA,EAAE,cAAc,EAAA,cAAA,EAAE,CAC9C,CAAA;;AAHK,wBAAA,QAAQ,GAAG,EAAA,CAAA,IAAA,EAGhB;AACK,wBAAA,MAAM,GAAG,CAAA,EAAA,GAAA,QAAQ,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,IAA+C;wBAC7E,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE;4BAClD,kBAAkB,GAAG,MAAM;wBAC/B;;;;AAEM,wBAAA,SAAS,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,QAAM,aAAN,QAAM,KAAA,MAAA,GAAA,MAAA,GAAN,QAAM,CAAE,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,IAA+C;wBACzF,IAAI,SAAS,IAAI,OAAO,SAAS,CAAC,UAAU,KAAK,SAAS,EAAE;4BACxD,kBAAkB,GAAG,SAAS;wBAClC;6BAAO;AACH,4BAAA,kBAAkB,GAAG;AACjB,gCAAA,UAAU,EAAE,KAAK;AACjB,gCAAA,MAAM,EAAE,gBAAgB;AACxB,gCAAA,OAAO,EAAE,uCAAuC;AAChD,gCAAA,SAAS,EAAE,gBAAgB;6BAC9B;wBACL;;;;;AAKZ,wBAAA,kBAAkB,GAAG;AACjB,4BAAA,UAAU,EAAE,KAAK;AACjB,4BAAA,MAAM,EAAE,gBAAgB;AACxB,4BAAA,OAAO,EAAE,uCAAuC;AAChD,4BAAA,SAAS,EAAE,kBAAkB;yBAChC;AACD,wBAAA,OAAO,CAAC,IAAI,CAAC,qDAAqD,EAAE,KAAG,CAAC;;;wBAG5E,YAAY,CAAC,UAAC,IAAI,EAAA;;AAAK,4BAAA,QAACD,kBAAA,CAAAA,kBAAA,CAAA,EAAA,EACjB,IAAI,gBACN,IAAI,CAAC,EAAE,CAAA,GAAG;gCACP,UAAU,EAAE,kBAAkB,CAAC,UAAU;AACzC,gCAAA,OAAO,EAAA,OAAA;AACP,gCAAA,cAAc,EAAA,cAAA;AACd,gCAAA,oBAAoB,EAAA,oBAAA;AACpB,gCAAA,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gCACpC,MAAM,EAAE,kBAAkB,CAAC,MAAM;gCACjC,SAAS,EAAE,kBAAkB,CAAC,SAAS;gCACvC,OAAO,EAAE,kBAAkB,CAAC,OAAO;gCACnC,QAAQ,EAAE,kBAAkB,CAAC,MAAM,KAAK,IAAI,IAAI,kBAAkB,CAAC,MAAM,KAAK,WAAW;AAC5F,6BAAA,EAAA,EAAA,EACI;AAbc,wBAAA,CAad,CAAC;AAEV,wBAAA,MAAM,EAAE;;;;aACX;AAED,QAAA,mBAAmB,EAAE;;IAEzB,CAAC,EAAE,EAAE,CAAC;AAEN,IAAA,QACIE,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,mFAAmF,EAAA,QAAA,EAAA,CAC9FC,eAACC,mBAAO,EAAA,EAAC,SAAS,EAAC,uCAAuC,EAAA,CAAG,EAC7DD,uBAAI,SAAS,EAAC,qCAAqC,EAAA,QAAA,EAC9C,CAAC,CAAC,mCAAmC,EAAE,0BAA0B,CAAC,GAClE,EACLA,cAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,eAAe,YACvB,CAAC,CAAC,kCAAkC,EAAE,uCAAuC,CAAC,EAAA,CAC/E,CAAA,EAAA,CACF;AAEd;;;;"}
1
+ {"version":3,"file":"ExternalVerificationNodeHandler.js","sources":["../../../../../src/components/template/ExternalVerificationNodeHandler.tsx"],"sourcesContent":["import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport sdkI18n from '../../i18n';\nimport { Loader2 } from 'lucide-react';\nimport { apiService } from '../../services/api';\nimport type { SessionData, SessionTemplateNode } from '../../types/session';\nimport type { UserInput } from '../../types/userInput';\n\ntype VerificationStatus =\n | 'ok'\n | 'not_found'\n | 'invalid_input'\n | 'config_error'\n | 'external_error';\n\ninterface VerificationResponsePayload {\n isVerified: boolean;\n status: VerificationStatus;\n message?: string;\n errorCode?: string;\n}\n\ninterface ExternalVerificationNodeHandlerProps {\n node: SessionTemplateNode;\n session: SessionData;\n userInput: UserInput;\n setUserInput: React.Dispatch<React.SetStateAction<UserInput>>;\n onNext: () => void;\n onPrevious: () => void;\n}\n\nconst FIELD_ALIASES: Record<'siren' | 'siret', string[]> = {\n siren: ['siren', 'siren_number', 'company_siren', 'legal_siren', 'num_siren'],\n siret: ['siret', 'siret_number', 'company_siret', 'legal_siret', 'num_siret'],\n};\n\nconst normalizeReferenceField = (field?: string): 'siren' | 'siret' | undefined => {\n if (!field) return undefined;\n const normalized = field.toLowerCase().replace(/[\\s_.-]/g, '');\n if (normalized.includes('siret')) return 'siret';\n if (normalized.includes('siren')) return 'siren';\n return undefined;\n};\n\nconst maskReferenceValue = (value: string): string => {\n const clean = value.replace(/\\s+/g, '');\n if (!clean) return '';\n if (clean.length <= 4) return '****';\n return `${'*'.repeat(clean.length - 4)}${clean.slice(-4)}`;\n};\n\nconst ExternalVerificationNodeHandler: React.FC<ExternalVerificationNodeHandlerProps> = ({\n node,\n session,\n userInput,\n setUserInput,\n onNext,\n}) => {\n const { t } = useTranslation('translation', { i18n: sdkI18n });\n\n useEffect(() => {\n const performVerification = async () => {\n let verificationResult: VerificationResponsePayload = {\n isVerified: false,\n status: 'external_error',\n message: 'Verification did not run.',\n };\n let apiType = (node as any).targetApi || 'INSEE';\n let referenceField: 'siren' | 'siret' | undefined;\n let referenceValueMasked = '';\n console.log(\"Api Type :\", apiType);\n try {\n if (!session?.id) {\n throw new Error('Session ID is missing');\n }\n\n const nodeData = node as any;\n apiType = String(nodeData.targetApi || 'INSEE');\n const referenceNodeId = String(nodeData.referenceNodeId || '');\n const referenceVariable = String(nodeData.referenceVariable || '');\n referenceField = normalizeReferenceField(\n String(nodeData.referenceField || referenceVariable || ''),\n );\n\n if (!referenceNodeId || !referenceField) {\n verificationResult = {\n isVerified: false,\n status: 'config_error',\n message: 'External verification node is missing reference configuration.',\n errorCode: 'MISSING_REFERENCE_CONFIG',\n };\n } else {\n const nodeInput = (userInput as any)[referenceNodeId];\n const userInputFlat = userInput as any;\n const lookupKeys = Array.from(\n new Set([\n referenceVariable,\n referenceField,\n ...FIELD_ALIASES[referenceField],\n ].filter(Boolean)),\n );\n\n let referenceValue: string | undefined;\n for (const key of lookupKeys) {\n const candidateValue =\n nodeInput?.[key] ??\n nodeInput?.customFormData?.[key] ??\n userInputFlat?.customFormData?.[key] ??\n userInputFlat?.[key];\n\n if (candidateValue !== undefined && candidateValue !== null && `${candidateValue}`.trim() !== '') {\n referenceValue = String(candidateValue);\n break;\n }\n }\n\n // Fallback: Smart lookup if no value found by key\n if (!referenceValue) {\n const allCustomFields = {\n ...(userInputFlat?.customFormData || {}),\n ...(nodeInput?.customFormData || {}),\n ...(nodeInput || {}),\n };\n\n for (const [key, value] of Object.entries(allCustomFields)) {\n if (typeof value !== 'string' && typeof value !== 'number') continue;\n const stringValue = String(value).replace(/\\s+/g, '');\n\n // 9-digit SIREN pattern\n if (referenceField === 'siren' && /^\\d{9}$/.test(stringValue)) {\n referenceValue = stringValue;\n break;\n }\n // 14-digit SIRET pattern\n if (referenceField === 'siret' && /^\\d{14}$/.test(stringValue)) {\n referenceValue = stringValue;\n break;\n }\n }\n }\n\n if (!referenceValue) {\n verificationResult = {\n isVerified: false,\n status: 'invalid_input',\n message: 'No SIREN/SIRET value found in source node data.',\n errorCode: 'REFERENCE_VALUE_NOT_FOUND',\n };\n } else {\n referenceValueMasked = maskReferenceValue(referenceValue);\n\n try {\n const response = await apiService.post(\n `/session/sdk/${session.id}/verify-external/${node.id}`,\n { apiType, referenceValue, referenceField },\n );\n const result = response.data?.data as VerificationResponsePayload | undefined;\n if (result && typeof result.isVerified === 'boolean') {\n verificationResult = result;\n }\n } catch (apiErr: any) {\n const apiResult = apiErr?.response?.data?.data as VerificationResponsePayload | undefined;\n if (apiResult && typeof apiResult.isVerified === 'boolean') {\n verificationResult = apiResult;\n } else {\n verificationResult = {\n isVerified: false,\n status: 'external_error',\n message: 'External verification request failed.',\n errorCode: 'REQUEST_FAILED',\n };\n }\n }\n }\n }\n } catch (err) {\n verificationResult = {\n isVerified: false,\n status: 'external_error',\n message: 'Unexpected error during verification.',\n errorCode: 'UNEXPECTED_ERROR',\n };\n console.warn('[ExternalVerificationNodeHandler] Unexpected error:', err);\n }\n\n setUserInput((prev) => ({\n ...prev,\n [node.id]: {\n isVerified: verificationResult.isVerified,\n apiType,\n referenceField,\n referenceValueMasked,\n verifiedAt: new Date().toISOString(),\n status: verificationResult.status,\n errorCode: verificationResult.errorCode,\n message: verificationResult.message,\n hasError: verificationResult.status !== 'ok' && verificationResult.status !== 'not_found',\n },\n } as any));\n\n onNext();\n };\n\n performVerification();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <div className=\"flex min-h-[300px] flex-col items-center justify-center space-y-4 p-6 text-center\">\n <Loader2 className=\"h-12 w-12 animate-spin text-[#1c2c5c]\" />\n <h3 className=\"text-xl font-semibold text-gray-900\">\n {t('verification_node.verifying_title', 'Vérification en cours...')}\n </h3>\n <p className=\"text-gray-500\">\n {t('verification_node.verifying_desc', 'Nous interrogeons la base de données.')}\n </p>\n </div>\n );\n};\n\nexport default ExternalVerificationNodeHandler;\n"],"names":["useTranslation","sdkI18n","useEffect","__awaiter","__spreadArray","__assign","apiService","_jsxs","_jsx","Loader2"],"mappings":"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"}
@@ -6,6 +6,8 @@ var userInputForm$1 = require('../constants/userInputForm.js');
6
6
  var env = require('../config/env.js');
7
7
  var userInputForm = require('../utils/userInputForm.js');
8
8
  var listFieldUtils = require('../utils/listFieldUtils.js');
9
+ var customFieldValidation = require('../utils/customFieldValidation.js');
10
+ var session = require('../types/session.js');
9
11
  var useI18n = require('./useI18n.js');
10
12
 
11
13
  var useUserInputForm = function (_a) {
@@ -73,8 +75,9 @@ var useUserInputForm = function (_a) {
73
75
  return initial;
74
76
  }), customFormData = _d[0], setCustomFormData = _d[1];
75
77
  var _e = React.useState({}), customFormErrors = _e[0], setCustomFormErrors = _e[1];
76
- var _f = React.useState([]), addressSuggestions = _f[0], setAddressSuggestions = _f[1];
77
- var _g = React.useState(false), showSuggestions = _g[0], setShowSuggestions = _g[1];
78
+ var _f = React.useState({}), customFormCellErrors = _f[0], setCustomFormCellErrors = _f[1];
79
+ var _g = React.useState([]), addressSuggestions = _g[0], setAddressSuggestions = _g[1];
80
+ var _h = React.useState(false), showSuggestions = _h[0], setShowSuggestions = _h[1];
78
81
  var isFirstRender = React.useRef(true);
79
82
  var hideSuggestionTimeout = React.useRef(null);
80
83
  var addressRequestState = React.useRef({
@@ -368,15 +371,71 @@ var useUserInputForm = function (_a) {
368
371
  var validateCustomForm = function () {
369
372
  var _a;
370
373
  var errors = {};
374
+ var cellErrors = {};
371
375
  var hasError = false;
372
376
  (_a = node.customFields) === null || _a === void 0 ? void 0 : _a.forEach(function (field) {
377
+ var _a, _b;
373
378
  var value = customFormData[field.id];
374
379
  if (field.valueType === "list") {
375
380
  var rows = Array.isArray(value) ? value : [];
376
381
  var minRows = listFieldUtils.getListFieldMinRows(field);
382
+ var columns_1 = listFieldUtils.normalizeListColumns(field.listColumns);
383
+ var fieldCellErrors_1 = {};
384
+ var listFieldInvalid_1 = false;
377
385
  if (field.required && listFieldUtils.countNonEmptyListRows(rows) < minRows) {
378
386
  errors[field.id] = true;
379
387
  hasError = true;
388
+ listFieldInvalid_1 = true;
389
+ }
390
+ rows.forEach(function (row, rowIndex) {
391
+ var rowIsEmpty = columns_1.every(function (col) { var _a; return !String((_a = row === null || row === void 0 ? void 0 : row[col.label]) !== null && _a !== void 0 ? _a : "").trim(); });
392
+ if (rowIsEmpty && !field.required)
393
+ return;
394
+ columns_1.forEach(function (col) {
395
+ var _a, _b;
396
+ var cellValue = String((_a = row === null || row === void 0 ? void 0 : row[col.label]) !== null && _a !== void 0 ? _a : "").trim();
397
+ var key = customFieldValidation.cellErrorKey(rowIndex, col.label);
398
+ if (!cellValue) {
399
+ if (field.required && !rowIsEmpty) {
400
+ fieldCellErrors_1[key] = t("custom_form.required_field");
401
+ listFieldInvalid_1 = true;
402
+ }
403
+ return;
404
+ }
405
+ switch (col.type) {
406
+ case "email":
407
+ if (!customFieldValidation.isEmailValid(cellValue)) {
408
+ fieldCellErrors_1[key] = t("custom_form.invalid_email");
409
+ listFieldInvalid_1 = true;
410
+ }
411
+ break;
412
+ case "date": {
413
+ var fmt = (_b = col.dateFormat) !== null && _b !== void 0 ? _b : session.DEFAULT_DATE_DISPLAY_FORMAT;
414
+ if (!customFieldValidation.isDateValid(cellValue, fmt)) {
415
+ fieldCellErrors_1[key] = t("custom_form.invalid_date", {
416
+ format: fmt,
417
+ });
418
+ listFieldInvalid_1 = true;
419
+ }
420
+ break;
421
+ }
422
+ case "text":
423
+ if (col.regex && !customFieldValidation.isRegexMatch(cellValue, col.regex)) {
424
+ fieldCellErrors_1[key] =
425
+ col.regexErrorMessage ||
426
+ t("custom_form.invalid_format");
427
+ listFieldInvalid_1 = true;
428
+ }
429
+ break;
430
+ }
431
+ });
432
+ });
433
+ if (Object.keys(fieldCellErrors_1).length > 0) {
434
+ cellErrors[field.id] = fieldCellErrors_1;
435
+ }
436
+ if (listFieldInvalid_1) {
437
+ errors[field.id] = (_a = errors[field.id]) !== null && _a !== void 0 ? _a : true;
438
+ hasError = true;
380
439
  }
381
440
  return;
382
441
  }
@@ -395,35 +454,29 @@ var useUserInputForm = function (_a) {
395
454
  hasError = true;
396
455
  }
397
456
  break;
398
- case "date":
399
- // Date format: DD-MM-YYYY
400
- // For required dates, all parts must be filled
401
- if (field.required) {
402
- var dateParts = value.split("-");
403
- if (dateParts.length !== 3 ||
404
- !dateParts[0] ||
405
- !dateParts[1] ||
406
- !dateParts[2]) {
407
- errors[field.id] = true;
408
- hasError = true;
409
- break;
410
- }
411
- // Validate month and day ranges
412
- var day = parseInt(dateParts[0], 10);
413
- var month = parseInt(dateParts[1], 10);
414
- var year = parseInt(dateParts[2], 10);
415
- if (isNaN(day) ||
416
- isNaN(month) ||
417
- isNaN(year) ||
418
- month < 1 ||
419
- month > 12 ||
420
- day < 1 ||
421
- day > 31) {
422
- errors[field.id] = true;
423
- hasError = true;
424
- }
457
+ case "email":
458
+ if (!customFieldValidation.isEmailValid(String(value))) {
459
+ errors[field.id] = t("custom_form.invalid_email");
460
+ hasError = true;
461
+ }
462
+ break;
463
+ case "text":
464
+ if (field.regex && !customFieldValidation.isRegexMatch(String(value), field.regex)) {
465
+ errors[field.id] =
466
+ field.regexErrorMessage || t("custom_form.invalid_format");
467
+ hasError = true;
468
+ }
469
+ break;
470
+ case "date": {
471
+ var fmt = (_b = field.dateFormat) !== null && _b !== void 0 ? _b : session.DEFAULT_DATE_DISPLAY_FORMAT;
472
+ if (!customFieldValidation.isDateValid(String(value), fmt)) {
473
+ errors[field.id] = t("custom_form.invalid_date", {
474
+ format: fmt,
475
+ });
476
+ hasError = true;
425
477
  }
426
478
  break;
479
+ }
427
480
  case "address":
428
481
  // Validate address object if required
429
482
  if (field.required && typeof value === "object") {
@@ -441,6 +494,7 @@ var useUserInputForm = function (_a) {
441
494
  }
442
495
  });
443
496
  setCustomFormErrors(errors);
497
+ setCustomFormCellErrors(cellErrors);
444
498
  return !hasError;
445
499
  };
446
500
  var handleCustomFieldChange = function (fieldId, value) {
@@ -452,6 +506,12 @@ var useUserInputForm = function (_a) {
452
506
  var _a;
453
507
  return (tslib_es6.__assign(tslib_es6.__assign({}, prev), (_a = {}, _a[fieldId] = false, _a)));
454
508
  });
509
+ setCustomFormCellErrors(function (prev) {
510
+ if (!(fieldId in prev))
511
+ return prev;
512
+ var _a = prev, _b = fieldId; _a[_b]; var rest = tslib_es6.__rest(_a, [typeof _b === "symbol" ? _b : _b + ""]);
513
+ return rest;
514
+ });
455
515
  };
456
516
  var goOnNextStep = function () {
457
517
  // Handle custom form validation and submission
@@ -525,6 +585,7 @@ var useUserInputForm = function (_a) {
525
585
  goOnPreviousStep: goOnPreviousStep,
526
586
  customFormData: customFormData,
527
587
  customFormErrors: customFormErrors,
588
+ customFormCellErrors: customFormCellErrors,
528
589
  handleCustomFieldChange: handleCustomFieldChange,
529
590
  };
530
591
  };