datakeen-session-react 1.1.195-dev.8 → 1.1.195-rc.0

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 (880) hide show
  1. package/README.md +12 -17
  2. package/dist/cjs/_virtual/_commonjsHelpers.js +0 -1
  3. package/dist/cjs/_virtual/heic2any.js +0 -1
  4. package/dist/cjs/_virtual/heic2any2.js +0 -1
  5. package/dist/cjs/assets/Face Scan Square.svg.js +0 -1
  6. package/dist/cjs/assets/Lightbulb.svg.js +0 -1
  7. package/dist/cjs/assets/Monitor Camera.svg.js +0 -1
  8. package/dist/cjs/assets/User Hands.svg.js +0 -1
  9. package/dist/cjs/assets/before-document.png.js +0 -1
  10. package/dist/cjs/assets/before-passport.png.js +0 -1
  11. package/dist/cjs/assets/before-photo.png.js +0 -1
  12. package/dist/cjs/assets/before-verso.png.js +0 -1
  13. package/dist/cjs/assets/check.svg.js +0 -1
  14. package/dist/cjs/assets/icons/shield_magic_link.svg.js +0 -1
  15. package/dist/cjs/assets/selfietake.svg.js +0 -1
  16. package/dist/cjs/components/DatakeenSession.js +0 -1
  17. package/dist/cjs/components/document-collection/DocumentCollection.js +0 -1
  18. package/dist/cjs/components/document-collection/DocumentCollectionIntroduction.js +0 -1
  19. package/dist/cjs/components/document-collection/DocumentCollectionMethodSelection.js +0 -1
  20. package/dist/cjs/components/document-collection/DocumentCollectionSelection.js +0 -1
  21. package/dist/cjs/components/document-collection/DocumentCollectionUpload.js +0 -1
  22. package/dist/cjs/components/document-collection/DocumentError.js +4 -2
  23. package/dist/cjs/components/document-collection/DocumentProcessing.js +0 -1
  24. package/dist/cjs/components/document-collection/DocumentSuccess.js +0 -1
  25. package/dist/cjs/components/document-video/DocumentVideoCapture.js +0 -1
  26. package/dist/cjs/components/document-video/DocumentVideoConfirmation.js +0 -1
  27. package/dist/cjs/components/document-video/document-video-flow/DocumentVideoFlow.js +0 -1
  28. package/dist/cjs/components/document-video/document-video-flow/DocumentVideoInstructions.js +0 -1
  29. package/dist/cjs/components/document-video/document-video-flow/DocumentVideoProcessing.js +0 -1
  30. package/dist/cjs/components/document-video/document-video-flow/DocumentVideoRecorder.js +0 -1
  31. package/dist/cjs/components/icons/ElectronicIcon.js +0 -1
  32. package/dist/cjs/components/icons/PoweredByIcon.js +0 -1
  33. package/dist/cjs/components/icons/PreIntroIcon.js +0 -1
  34. package/dist/cjs/components/icons/StartIcon.js +0 -1
  35. package/dist/cjs/components/id-check/BeforePhoto.js +0 -1
  36. package/dist/cjs/components/id-check/BeforeVersoPhoto.js +0 -1
  37. package/dist/cjs/components/id-check/CameraError.js +0 -1
  38. package/dist/cjs/components/id-check/CameraMask.js +0 -1
  39. package/dist/cjs/components/id-check/OrientationToggle.js +0 -1
  40. package/dist/cjs/components/id-check/Photo.js +0 -1
  41. package/dist/cjs/components/id-check/PhotoConfirmation.js +0 -1
  42. package/dist/cjs/components/id-check/PhotoPreview.js +0 -1
  43. package/dist/cjs/components/jdi/JDDWorkInProgress.js +0 -1
  44. package/dist/cjs/components/jdi/JDICountrySelection.js +0 -1
  45. package/dist/cjs/components/jdi/JDIDocumentSelection.js +0 -1
  46. package/dist/cjs/components/jdi/JDIDocumentUpload.js +0 -1
  47. package/dist/cjs/components/jdi/JDIError.js +4 -2
  48. package/dist/cjs/components/jdi/JDIPreIntroduction.js +0 -1
  49. package/dist/cjs/components/jdi/JDIProcessing.js +0 -1
  50. package/dist/cjs/components/jdi/JDISuccess.js +0 -1
  51. package/dist/cjs/components/legal-consent/LegalConsentNode.js +0 -1
  52. package/dist/cjs/components/nfc-scan/BiometricSymbol.js +0 -1
  53. package/dist/cjs/components/nfc-scan/NfcChipGate.js +0 -1
  54. package/dist/cjs/components/nfc-scan/NfcFallbackSurvey.js +0 -1
  55. package/dist/cjs/components/nfc-scan/NfcOnboardingNotice.js +0 -1
  56. package/dist/cjs/components/nfc-scan/NfcScanNode.js +0 -1
  57. package/dist/cjs/components/nfc-scan/NfcSuccessAnimation.js +0 -1
  58. package/dist/cjs/components/nfc-scan/PuceCniSymbol.js +0 -1
  59. package/dist/cjs/components/selfie/SelfieConfirmation.js +0 -1
  60. package/dist/cjs/components/selfie/Video.css.js +0 -1
  61. package/dist/cjs/components/selfie/Video.js +0 -1
  62. package/dist/cjs/components/selfie/VideoFixes.css.js +0 -1
  63. package/dist/cjs/components/selfie/VideoResetStyles.js +0 -1
  64. package/dist/cjs/components/selfie/hooks/useLiveFrameCapture.js +0 -1
  65. package/dist/cjs/components/selfie/hooks/useVideoRecorderStyles.js +0 -1
  66. package/dist/cjs/components/selfie/selfie-flow/InstructionsSelfie.js +0 -1
  67. package/dist/cjs/components/selfie/selfie-flow/SelfieFlow.js +0 -1
  68. package/dist/cjs/components/selfie/selfie-flow/SelfiePreIntroduction.js +0 -1
  69. package/dist/cjs/components/selfie/selfie-flow/SelfieProcessing.js +0 -1
  70. package/dist/cjs/components/selfie/selfie-flow/SelfieRecorder.js +0 -1
  71. package/dist/cjs/components/selfie/utils/selfieCaptureUtils.js +0 -1
  72. package/dist/cjs/components/selfie/utils/unisseyStrings.js +0 -1
  73. package/dist/cjs/components/selfie/utils/videoElementStyles.js +0 -1
  74. package/dist/cjs/components/session/DocumentCheck.js +0 -1
  75. package/dist/cjs/components/session/EndFlow.js +0 -1
  76. package/dist/cjs/components/session/MobileRedirect.js +0 -1
  77. package/dist/cjs/components/session/PdfGeneration.js +0 -1
  78. package/dist/cjs/components/session/Selfie.js +0 -1
  79. package/dist/cjs/components/session/SessionContent.js +0 -1
  80. package/dist/cjs/components/session/SessionExpired.js +0 -1
  81. package/dist/cjs/components/session/StartSession.js +0 -1
  82. package/dist/cjs/components/session/UserInputForm/AddressFields.js +0 -1
  83. package/dist/cjs/components/session/UserInputForm/ContactFields.js +0 -1
  84. package/dist/cjs/components/session/UserInputForm/CustomFormFields.js +2 -11
  85. package/dist/cjs/components/session/UserInputForm/DatePickerField.js +0 -1
  86. package/dist/cjs/components/session/UserInputForm/IdentityFields.js +0 -1
  87. package/dist/cjs/components/session/UserInputForm/LegalEntityFields.js +0 -1
  88. package/dist/cjs/components/session/UserInputForm/LegalRepFields.js +0 -1
  89. package/dist/cjs/components/session/UserInputForm/NationalityField.js +0 -1
  90. package/dist/cjs/components/session/UserInputForm.js +4 -2
  91. package/dist/cjs/components/session/VideoWorkInProgress.js +0 -1
  92. package/dist/cjs/components/session/controleJdiPolicy.js +0 -1
  93. package/dist/cjs/components/session/endScreenIcons.js +0 -1
  94. package/dist/cjs/components/signature-electronic/DocusealSignature.js +0 -1
  95. package/dist/cjs/components/signature-electronic/SignatureElectronic.js +0 -1
  96. package/dist/cjs/components/signature-electronic/SignatureElectronicIntroduction.js +0 -1
  97. package/dist/cjs/components/signature-electronic/SignedDocumentPreview.js +0 -1
  98. package/dist/cjs/components/start-flow/Start.js +0 -1
  99. package/dist/cjs/components/states/ErrorState.js +0 -1
  100. package/dist/cjs/components/states/LoadingState.js +0 -1
  101. package/dist/cjs/components/states/NoSessionIdState.js +0 -1
  102. package/dist/cjs/components/template/ComplementaryMandateNodeHandler.js +0 -1
  103. package/dist/cjs/components/template/ConditionNodeHandler.js +0 -1
  104. package/dist/cjs/components/template/ExternalVerificationNodeHandler.js +0 -1
  105. package/dist/cjs/components/template/TemplateNodeRenderer.js +0 -1
  106. package/dist/cjs/components/template/conditionNodePolicy.js +0 -1
  107. package/dist/cjs/components/ui/Body.js +0 -1
  108. package/dist/cjs/components/ui/Button.js +0 -1
  109. package/dist/cjs/components/ui/ButtonDesktop.js +0 -1
  110. package/dist/cjs/components/ui/Card.js +0 -1
  111. package/dist/cjs/components/ui/MobilePageLayout.js +0 -1
  112. package/dist/cjs/components/ui/PDFPreview.js +0 -1
  113. package/dist/cjs/components/ui/PageActions.js +0 -1
  114. package/dist/cjs/components/ui/Paper.js +0 -1
  115. package/dist/cjs/components/ui/PoweredBy.js +0 -1
  116. package/dist/cjs/components/ui/QRCodeDisplay.js +0 -1
  117. package/dist/cjs/components/ui/SelectComponent.js +0 -1
  118. package/dist/cjs/components/ui/Subtitle.js +0 -1
  119. package/dist/cjs/components/ui/Title.js +0 -1
  120. package/dist/cjs/config/env.js +0 -1
  121. package/dist/cjs/constants/userInputForm.js +0 -1
  122. package/dist/cjs/context/ConfigContext.js +0 -1
  123. package/dist/cjs/context/DocumentContext.js +0 -1
  124. package/dist/cjs/context/SessionContext.js +0 -1
  125. package/dist/cjs/hooks/useClientInfo.js +0 -1
  126. package/dist/cjs/hooks/useCountryOptions.js +0 -1
  127. package/dist/cjs/hooks/useI18n.js +0 -1
  128. package/dist/cjs/hooks/useIsMobile.js +0 -1
  129. package/dist/cjs/hooks/useNfcSseStatus.js +0 -1
  130. package/dist/cjs/hooks/useRouteCSS.js +0 -1
  131. package/dist/cjs/hooks/useSession.js +0 -1
  132. package/dist/cjs/hooks/useSessionData.js +0 -1
  133. package/dist/cjs/hooks/useStepCSS.js +0 -1
  134. package/dist/cjs/hooks/useStepNavigation.js +18 -1
  135. package/dist/cjs/hooks/useTemplateLoader.js +0 -1
  136. package/dist/cjs/hooks/useUserInputForm.js +38 -1
  137. package/dist/cjs/i18n/country/country.en.json.js +0 -1
  138. package/dist/cjs/i18n/country/country.fr.json.js +0 -1
  139. package/dist/cjs/i18n/country/country.iso2.en.json.js +0 -1
  140. package/dist/cjs/i18n/country/country.iso2.fr.json.js +0 -1
  141. package/dist/cjs/i18n/documents/documents.en.json.js +0 -1
  142. package/dist/cjs/i18n/documents/documents.fr.json.js +0 -1
  143. package/dist/cjs/i18n/en.json.js +0 -1
  144. package/dist/cjs/i18n/es.json.js +0 -1
  145. package/dist/cjs/i18n/fr.json.js +0 -1
  146. package/dist/cjs/i18n/index.js +0 -1
  147. package/dist/cjs/index.css.js +0 -1
  148. package/dist/cjs/index.js +0 -1
  149. package/dist/cjs/node_modules/date-fns/locale/_lib/buildFormatLongFn.js +0 -1
  150. package/dist/cjs/node_modules/date-fns/locale/_lib/buildLocalizeFn.js +0 -1
  151. package/dist/cjs/node_modules/date-fns/locale/_lib/buildMatchFn.js +0 -1
  152. package/dist/cjs/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js +0 -1
  153. package/dist/cjs/node_modules/date-fns/locale/en-US/_lib/formatDistance.js +0 -1
  154. package/dist/cjs/node_modules/date-fns/locale/en-US/_lib/formatLong.js +0 -1
  155. package/dist/cjs/node_modules/date-fns/locale/en-US/_lib/formatRelative.js +0 -1
  156. package/dist/cjs/node_modules/date-fns/locale/en-US/_lib/localize.js +0 -1
  157. package/dist/cjs/node_modules/date-fns/locale/en-US/_lib/match.js +0 -1
  158. package/dist/cjs/node_modules/date-fns/locale/en-US.js +0 -1
  159. package/dist/cjs/node_modules/date-fns/locale/fr/_lib/formatDistance.js +0 -1
  160. package/dist/cjs/node_modules/date-fns/locale/fr/_lib/formatLong.js +0 -1
  161. package/dist/cjs/node_modules/date-fns/locale/fr/_lib/formatRelative.js +0 -1
  162. package/dist/cjs/node_modules/date-fns/locale/fr/_lib/localize.js +0 -1
  163. package/dist/cjs/node_modules/date-fns/locale/fr/_lib/match.js +0 -1
  164. package/dist/cjs/node_modules/date-fns/locale/fr.js +0 -1
  165. package/dist/cjs/node_modules/heic2any/dist/heic2any.js +0 -1
  166. package/dist/cjs/node_modules/pdfjs-dist/legacy/build/pdf.js +0 -1
  167. package/dist/cjs/node_modules/pdfjs-dist/legacy/build/pdf.worker.js +0 -1
  168. package/dist/cjs/node_modules/style-inject/dist/style-inject.es.js +0 -1
  169. package/dist/cjs/node_modules/tslib/tslib.es6.js +0 -1
  170. package/dist/cjs/providers/I18nProvider.js +0 -1
  171. package/dist/cjs/services/analysis.js +0 -1
  172. package/dist/cjs/services/api.js +0 -1
  173. package/dist/cjs/services/auditTrailService.js +0 -1
  174. package/dist/cjs/services/cameraService.js +0 -1
  175. package/dist/cjs/services/documentEdgeDetectionService.js +0 -1
  176. package/dist/cjs/services/documentTemplate.js +0 -1
  177. package/dist/cjs/services/iadService.js +0 -1
  178. package/dist/cjs/services/integrationService.js +0 -1
  179. package/dist/cjs/services/pollingService.js +0 -1
  180. package/dist/cjs/services/professionalImageQuality.js +0 -1
  181. package/dist/cjs/services/retryService.js +0 -1
  182. package/dist/cjs/services/sessionCredentials.js +2 -2
  183. package/dist/cjs/services/sessionMemoryStore.js +0 -1
  184. package/dist/cjs/services/sessionService.js +0 -1
  185. package/dist/cjs/services/utils.js +0 -1
  186. package/dist/cjs/types/session.js +0 -1
  187. package/dist/cjs/utils/analysisErrors.js +0 -1
  188. package/dist/cjs/utils/apiAnalysis.js +0 -1
  189. package/dist/cjs/utils/conditionEvaluator.js +0 -1
  190. package/dist/cjs/utils/countryFlags.js +0 -1
  191. package/dist/cjs/utils/cssLoader.js +0 -1
  192. package/dist/cjs/utils/customFieldIds.js +0 -1
  193. package/dist/cjs/utils/customFieldLocks.js +27 -0
  194. package/dist/cjs/utils/customFieldValidation.js +0 -1
  195. package/dist/cjs/utils/documentLabels.js +0 -1
  196. package/dist/cjs/utils/europeanCountries.js +0 -1
  197. package/dist/cjs/utils/fileConverter.js +0 -1
  198. package/dist/cjs/utils/imageConverter.js +0 -1
  199. package/dist/cjs/utils/imageProcessing.js +0 -1
  200. package/dist/cjs/utils/isMobileDevice.js +0 -1
  201. package/dist/cjs/utils/isoCountryCodes.js +0 -1
  202. package/dist/cjs/utils/jdiCodes.js +0 -1
  203. package/dist/cjs/utils/labelToKey.js +0 -1
  204. package/dist/cjs/utils/listFieldUtils.js +0 -1
  205. package/dist/cjs/utils/mimeTypes.js +0 -1
  206. package/dist/cjs/utils/navigation.js +0 -1
  207. package/dist/cjs/utils/renderInlineMarkdown.js +0 -1
  208. package/dist/cjs/utils/sessionStatus.js +0 -1
  209. package/dist/cjs/utils/userInputForm.js +0 -1
  210. package/dist/cjs/utils/utils.js +0 -1
  211. package/dist/cjs/utils/validationUtils.js +0 -1
  212. package/dist/esm/_virtual/_commonjsHelpers.js +0 -1
  213. package/dist/esm/_virtual/heic2any.js +0 -1
  214. package/dist/esm/_virtual/heic2any2.js +0 -1
  215. package/dist/esm/assets/Face Scan Square.svg.js +0 -1
  216. package/dist/esm/assets/Lightbulb.svg.js +0 -1
  217. package/dist/esm/assets/Monitor Camera.svg.js +0 -1
  218. package/dist/esm/assets/User Hands.svg.js +0 -1
  219. package/dist/esm/assets/before-document.png.js +0 -1
  220. package/dist/esm/assets/before-passport.png.js +0 -1
  221. package/dist/esm/assets/before-photo.png.js +0 -1
  222. package/dist/esm/assets/before-verso.png.js +0 -1
  223. package/dist/esm/assets/check.svg.js +0 -1
  224. package/dist/esm/assets/icons/shield_magic_link.svg.js +0 -1
  225. package/dist/esm/assets/selfietake.svg.js +0 -1
  226. package/dist/esm/components/DatakeenSession.js +0 -1
  227. package/dist/esm/components/document-collection/DocumentCollection.js +0 -1
  228. package/dist/esm/components/document-collection/DocumentCollectionIntroduction.js +0 -1
  229. package/dist/esm/components/document-collection/DocumentCollectionMethodSelection.js +0 -1
  230. package/dist/esm/components/document-collection/DocumentCollectionSelection.js +0 -1
  231. package/dist/esm/components/document-collection/DocumentCollectionUpload.js +0 -1
  232. package/dist/esm/components/document-collection/DocumentError.js +4 -2
  233. package/dist/esm/components/document-collection/DocumentProcessing.js +0 -1
  234. package/dist/esm/components/document-collection/DocumentSuccess.js +0 -1
  235. package/dist/esm/components/document-video/DocumentVideoCapture.js +0 -1
  236. package/dist/esm/components/document-video/DocumentVideoConfirmation.js +0 -1
  237. package/dist/esm/components/document-video/document-video-flow/DocumentVideoFlow.js +0 -1
  238. package/dist/esm/components/document-video/document-video-flow/DocumentVideoInstructions.js +0 -1
  239. package/dist/esm/components/document-video/document-video-flow/DocumentVideoProcessing.js +0 -1
  240. package/dist/esm/components/document-video/document-video-flow/DocumentVideoRecorder.js +0 -1
  241. package/dist/esm/components/icons/ElectronicIcon.js +0 -1
  242. package/dist/esm/components/icons/PoweredByIcon.js +0 -1
  243. package/dist/esm/components/icons/PreIntroIcon.js +0 -1
  244. package/dist/esm/components/icons/StartIcon.js +0 -1
  245. package/dist/esm/components/id-check/BeforePhoto.js +0 -1
  246. package/dist/esm/components/id-check/BeforeVersoPhoto.js +0 -1
  247. package/dist/esm/components/id-check/CameraError.js +0 -1
  248. package/dist/esm/components/id-check/CameraMask.js +0 -1
  249. package/dist/esm/components/id-check/OrientationToggle.js +0 -1
  250. package/dist/esm/components/id-check/Photo.js +0 -1
  251. package/dist/esm/components/id-check/PhotoConfirmation.js +0 -1
  252. package/dist/esm/components/id-check/PhotoPreview.js +0 -1
  253. package/dist/esm/components/jdi/JDDWorkInProgress.js +0 -1
  254. package/dist/esm/components/jdi/JDICountrySelection.js +0 -1
  255. package/dist/esm/components/jdi/JDIDocumentSelection.js +0 -1
  256. package/dist/esm/components/jdi/JDIDocumentUpload.js +0 -1
  257. package/dist/esm/components/jdi/JDIError.js +4 -2
  258. package/dist/esm/components/jdi/JDIPreIntroduction.js +0 -1
  259. package/dist/esm/components/jdi/JDIProcessing.js +0 -1
  260. package/dist/esm/components/jdi/JDISuccess.js +0 -1
  261. package/dist/esm/components/legal-consent/LegalConsentNode.js +0 -1
  262. package/dist/esm/components/nfc-scan/BiometricSymbol.js +0 -1
  263. package/dist/esm/components/nfc-scan/NfcChipGate.js +0 -1
  264. package/dist/esm/components/nfc-scan/NfcFallbackSurvey.js +0 -1
  265. package/dist/esm/components/nfc-scan/NfcOnboardingNotice.js +0 -1
  266. package/dist/esm/components/nfc-scan/NfcScanNode.js +0 -1
  267. package/dist/esm/components/nfc-scan/NfcSuccessAnimation.js +0 -1
  268. package/dist/esm/components/nfc-scan/PuceCniSymbol.js +0 -1
  269. package/dist/esm/components/selfie/SelfieConfirmation.js +0 -1
  270. package/dist/esm/components/selfie/Video.css.js +0 -1
  271. package/dist/esm/components/selfie/Video.js +0 -1
  272. package/dist/esm/components/selfie/VideoFixes.css.js +0 -1
  273. package/dist/esm/components/selfie/VideoResetStyles.js +0 -1
  274. package/dist/esm/components/selfie/hooks/useLiveFrameCapture.js +0 -1
  275. package/dist/esm/components/selfie/hooks/useVideoRecorderStyles.js +0 -1
  276. package/dist/esm/components/selfie/selfie-flow/InstructionsSelfie.js +0 -1
  277. package/dist/esm/components/selfie/selfie-flow/SelfieFlow.js +0 -1
  278. package/dist/esm/components/selfie/selfie-flow/SelfiePreIntroduction.js +0 -1
  279. package/dist/esm/components/selfie/selfie-flow/SelfieProcessing.js +0 -1
  280. package/dist/esm/components/selfie/selfie-flow/SelfieRecorder.js +0 -1
  281. package/dist/esm/components/selfie/utils/selfieCaptureUtils.js +0 -1
  282. package/dist/esm/components/selfie/utils/unisseyStrings.js +0 -1
  283. package/dist/esm/components/selfie/utils/videoElementStyles.js +0 -1
  284. package/dist/esm/components/session/DocumentCheck.js +0 -1
  285. package/dist/esm/components/session/EndFlow.js +0 -1
  286. package/dist/esm/components/session/MobileRedirect.js +0 -1
  287. package/dist/esm/components/session/PdfGeneration.js +0 -1
  288. package/dist/esm/components/session/Selfie.js +0 -1
  289. package/dist/esm/components/session/SessionContent.js +0 -1
  290. package/dist/esm/components/session/SessionExpired.js +0 -1
  291. package/dist/esm/components/session/StartSession.js +0 -1
  292. package/dist/esm/components/session/UserInputForm/AddressFields.js +0 -1
  293. package/dist/esm/components/session/UserInputForm/ContactFields.js +0 -1
  294. package/dist/esm/components/session/UserInputForm/CustomFormFields.js +1 -10
  295. package/dist/esm/components/session/UserInputForm/DatePickerField.js +0 -1
  296. package/dist/esm/components/session/UserInputForm/IdentityFields.js +0 -1
  297. package/dist/esm/components/session/UserInputForm/LegalEntityFields.js +0 -1
  298. package/dist/esm/components/session/UserInputForm/LegalRepFields.js +0 -1
  299. package/dist/esm/components/session/UserInputForm/NationalityField.js +0 -1
  300. package/dist/esm/components/session/UserInputForm.js +4 -2
  301. package/dist/esm/components/session/VideoWorkInProgress.js +0 -1
  302. package/dist/esm/components/session/controleJdiPolicy.js +0 -1
  303. package/dist/esm/components/session/endScreenIcons.js +0 -1
  304. package/dist/esm/components/signature-electronic/DocusealSignature.js +0 -1
  305. package/dist/esm/components/signature-electronic/SignatureElectronic.js +0 -1
  306. package/dist/esm/components/signature-electronic/SignatureElectronicIntroduction.js +0 -1
  307. package/dist/esm/components/signature-electronic/SignedDocumentPreview.js +0 -1
  308. package/dist/esm/components/start-flow/Start.js +0 -1
  309. package/dist/esm/components/states/ErrorState.js +0 -1
  310. package/dist/esm/components/states/LoadingState.js +0 -1
  311. package/dist/esm/components/states/NoSessionIdState.js +0 -1
  312. package/dist/esm/components/template/ComplementaryMandateNodeHandler.js +0 -1
  313. package/dist/esm/components/template/ConditionNodeHandler.js +0 -1
  314. package/dist/esm/components/template/ExternalVerificationNodeHandler.js +0 -1
  315. package/dist/esm/components/template/TemplateNodeRenderer.js +0 -1
  316. package/dist/esm/components/template/conditionNodePolicy.js +0 -1
  317. package/dist/esm/components/ui/Body.js +0 -1
  318. package/dist/esm/components/ui/Button.js +0 -1
  319. package/dist/esm/components/ui/ButtonDesktop.js +0 -1
  320. package/dist/esm/components/ui/Card.js +0 -1
  321. package/dist/esm/components/ui/MobilePageLayout.js +0 -1
  322. package/dist/esm/components/ui/PDFPreview.js +0 -1
  323. package/dist/esm/components/ui/PageActions.js +0 -1
  324. package/dist/esm/components/ui/Paper.js +0 -1
  325. package/dist/esm/components/ui/PoweredBy.js +0 -1
  326. package/dist/esm/components/ui/QRCodeDisplay.js +0 -1
  327. package/dist/esm/components/ui/SelectComponent.js +0 -1
  328. package/dist/esm/components/ui/Subtitle.js +0 -1
  329. package/dist/esm/components/ui/Title.js +0 -1
  330. package/dist/esm/config/env.js +0 -1
  331. package/dist/esm/constants/userInputForm.js +0 -1
  332. package/dist/esm/context/ConfigContext.js +0 -1
  333. package/dist/esm/context/DocumentContext.js +0 -1
  334. package/dist/esm/context/SessionContext.js +0 -1
  335. package/dist/esm/hooks/useClientInfo.js +0 -1
  336. package/dist/esm/hooks/useCountryOptions.js +0 -1
  337. package/dist/esm/hooks/useI18n.js +0 -1
  338. package/dist/esm/hooks/useIsMobile.js +0 -1
  339. package/dist/esm/hooks/useNfcSseStatus.js +0 -1
  340. package/dist/esm/hooks/useRouteCSS.js +0 -1
  341. package/dist/esm/hooks/useSession.js +0 -1
  342. package/dist/esm/hooks/useSessionData.js +0 -1
  343. package/dist/esm/hooks/useStepCSS.js +0 -1
  344. package/dist/esm/hooks/useStepNavigation.js +18 -1
  345. package/dist/esm/hooks/useTemplateLoader.js +0 -1
  346. package/dist/esm/hooks/useUserInputForm.js +38 -1
  347. package/dist/esm/i18n/country/country.en.json.js +0 -1
  348. package/dist/esm/i18n/country/country.fr.json.js +0 -1
  349. package/dist/esm/i18n/country/country.iso2.en.json.js +0 -1
  350. package/dist/esm/i18n/country/country.iso2.fr.json.js +0 -1
  351. package/dist/esm/i18n/documents/documents.en.json.js +0 -1
  352. package/dist/esm/i18n/documents/documents.fr.json.js +0 -1
  353. package/dist/esm/i18n/en.json.js +0 -1
  354. package/dist/esm/i18n/es.json.js +0 -1
  355. package/dist/esm/i18n/fr.json.js +0 -1
  356. package/dist/esm/i18n/index.js +0 -1
  357. package/dist/esm/index.css.js +0 -1
  358. package/dist/esm/index.js +0 -1
  359. package/dist/esm/node_modules/date-fns/locale/_lib/buildFormatLongFn.js +0 -1
  360. package/dist/esm/node_modules/date-fns/locale/_lib/buildLocalizeFn.js +0 -1
  361. package/dist/esm/node_modules/date-fns/locale/_lib/buildMatchFn.js +0 -1
  362. package/dist/esm/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js +0 -1
  363. package/dist/esm/node_modules/date-fns/locale/en-US/_lib/formatDistance.js +0 -1
  364. package/dist/esm/node_modules/date-fns/locale/en-US/_lib/formatLong.js +0 -1
  365. package/dist/esm/node_modules/date-fns/locale/en-US/_lib/formatRelative.js +0 -1
  366. package/dist/esm/node_modules/date-fns/locale/en-US/_lib/localize.js +0 -1
  367. package/dist/esm/node_modules/date-fns/locale/en-US/_lib/match.js +0 -1
  368. package/dist/esm/node_modules/date-fns/locale/en-US.js +0 -1
  369. package/dist/esm/node_modules/date-fns/locale/fr/_lib/formatDistance.js +0 -1
  370. package/dist/esm/node_modules/date-fns/locale/fr/_lib/formatLong.js +0 -1
  371. package/dist/esm/node_modules/date-fns/locale/fr/_lib/formatRelative.js +0 -1
  372. package/dist/esm/node_modules/date-fns/locale/fr/_lib/localize.js +0 -1
  373. package/dist/esm/node_modules/date-fns/locale/fr/_lib/match.js +0 -1
  374. package/dist/esm/node_modules/date-fns/locale/fr.js +0 -1
  375. package/dist/esm/node_modules/heic2any/dist/heic2any.js +0 -1
  376. package/dist/esm/node_modules/pdfjs-dist/legacy/build/pdf.js +0 -1
  377. package/dist/esm/node_modules/pdfjs-dist/legacy/build/pdf.worker.js +0 -1
  378. package/dist/esm/node_modules/style-inject/dist/style-inject.es.js +0 -1
  379. package/dist/esm/node_modules/tslib/tslib.es6.js +0 -1
  380. package/dist/esm/providers/I18nProvider.js +0 -1
  381. package/dist/esm/services/analysis.js +0 -1
  382. package/dist/esm/services/api.js +0 -1
  383. package/dist/esm/services/auditTrailService.js +0 -1
  384. package/dist/esm/services/cameraService.js +0 -1
  385. package/dist/esm/services/documentEdgeDetectionService.js +0 -1
  386. package/dist/esm/services/documentTemplate.js +0 -1
  387. package/dist/esm/services/iadService.js +0 -1
  388. package/dist/esm/services/integrationService.js +0 -1
  389. package/dist/esm/services/pollingService.js +0 -1
  390. package/dist/esm/services/professionalImageQuality.js +0 -1
  391. package/dist/esm/services/retryService.js +0 -1
  392. package/dist/esm/services/sessionCredentials.js +2 -2
  393. package/dist/esm/services/sessionMemoryStore.js +0 -1
  394. package/dist/esm/services/sessionService.js +0 -1
  395. package/dist/esm/services/utils.js +0 -1
  396. package/dist/esm/types/session.js +0 -1
  397. package/dist/esm/utils/analysisErrors.js +0 -1
  398. package/dist/esm/utils/apiAnalysis.js +0 -1
  399. package/dist/esm/utils/conditionEvaluator.js +0 -1
  400. package/dist/esm/utils/countryFlags.js +0 -1
  401. package/dist/esm/utils/cssLoader.js +0 -1
  402. package/dist/esm/utils/customFieldIds.js +0 -1
  403. package/dist/esm/utils/customFieldLocks.js +24 -0
  404. package/dist/esm/utils/customFieldValidation.js +0 -1
  405. package/dist/esm/utils/documentLabels.js +0 -1
  406. package/dist/esm/utils/europeanCountries.js +0 -1
  407. package/dist/esm/utils/fileConverter.js +0 -1
  408. package/dist/esm/utils/imageConverter.js +0 -1
  409. package/dist/esm/utils/imageProcessing.js +0 -1
  410. package/dist/esm/utils/isMobileDevice.js +0 -1
  411. package/dist/esm/utils/isoCountryCodes.js +0 -1
  412. package/dist/esm/utils/jdiCodes.js +0 -1
  413. package/dist/esm/utils/labelToKey.js +0 -1
  414. package/dist/esm/utils/listFieldUtils.js +0 -1
  415. package/dist/esm/utils/mimeTypes.js +0 -1
  416. package/dist/esm/utils/navigation.js +0 -1
  417. package/dist/esm/utils/renderInlineMarkdown.js +0 -1
  418. package/dist/esm/utils/sessionStatus.js +0 -1
  419. package/dist/esm/utils/userInputForm.js +0 -1
  420. package/dist/esm/utils/utils.js +0 -1
  421. package/dist/esm/utils/validationUtils.js +0 -1
  422. package/package.json +11 -3
  423. package/.gitlab/issue_templates/bug.md +0 -14
  424. package/.gitlab/issue_templates/feature.md +0 -11
  425. package/.gitlab/issue_templates/task.md +0 -11
  426. package/.gitlab/merge_request_templates/default.md +0 -15
  427. package/.gitlab/merge_request_templates/hotfix.md +0 -15
  428. package/.gitlab-ci.yml +0 -290
  429. package/CLAUDE.md +0 -233
  430. package/__mocks__/@unissey-web/sdk-react.js +0 -17
  431. package/__mocks__/fileMock.js +0 -1
  432. package/__mocks__/pdfjs-dist/legacy/build/pdf.js +0 -5
  433. package/__mocks__/pdfjs-dist/legacy/build/pdf.worker.js +0 -1
  434. package/assets/logo.svg +0 -56
  435. package/axios.install.md +0 -2
  436. package/babel.config.js +0 -15
  437. package/dist/cjs/_virtual/_commonjsHelpers.js.map +0 -1
  438. package/dist/cjs/_virtual/heic2any.js.map +0 -1
  439. package/dist/cjs/_virtual/heic2any2.js.map +0 -1
  440. package/dist/cjs/assets/Face Scan Square.svg.js.map +0 -1
  441. package/dist/cjs/assets/Lightbulb.svg.js.map +0 -1
  442. package/dist/cjs/assets/Monitor Camera.svg.js.map +0 -1
  443. package/dist/cjs/assets/User Hands.svg.js.map +0 -1
  444. package/dist/cjs/assets/before-document.png.js.map +0 -1
  445. package/dist/cjs/assets/before-passport.png.js.map +0 -1
  446. package/dist/cjs/assets/before-photo.png.js.map +0 -1
  447. package/dist/cjs/assets/before-verso.png.js.map +0 -1
  448. package/dist/cjs/assets/check.svg.js.map +0 -1
  449. package/dist/cjs/assets/icons/shield_magic_link.svg.js.map +0 -1
  450. package/dist/cjs/assets/selfietake.svg.js.map +0 -1
  451. package/dist/cjs/components/DatakeenSession.js.map +0 -1
  452. package/dist/cjs/components/document-collection/DocumentCollection.js.map +0 -1
  453. package/dist/cjs/components/document-collection/DocumentCollectionIntroduction.js.map +0 -1
  454. package/dist/cjs/components/document-collection/DocumentCollectionMethodSelection.js.map +0 -1
  455. package/dist/cjs/components/document-collection/DocumentCollectionSelection.js.map +0 -1
  456. package/dist/cjs/components/document-collection/DocumentCollectionUpload.js.map +0 -1
  457. package/dist/cjs/components/document-collection/DocumentError.js.map +0 -1
  458. package/dist/cjs/components/document-collection/DocumentProcessing.js.map +0 -1
  459. package/dist/cjs/components/document-collection/DocumentSuccess.js.map +0 -1
  460. package/dist/cjs/components/document-video/DocumentVideoCapture.js.map +0 -1
  461. package/dist/cjs/components/document-video/DocumentVideoConfirmation.js.map +0 -1
  462. package/dist/cjs/components/document-video/document-video-flow/DocumentVideoFlow.js.map +0 -1
  463. package/dist/cjs/components/document-video/document-video-flow/DocumentVideoInstructions.js.map +0 -1
  464. package/dist/cjs/components/document-video/document-video-flow/DocumentVideoProcessing.js.map +0 -1
  465. package/dist/cjs/components/document-video/document-video-flow/DocumentVideoRecorder.js.map +0 -1
  466. package/dist/cjs/components/icons/ElectronicIcon.js.map +0 -1
  467. package/dist/cjs/components/icons/PoweredByIcon.js.map +0 -1
  468. package/dist/cjs/components/icons/PreIntroIcon.js.map +0 -1
  469. package/dist/cjs/components/icons/StartIcon.js.map +0 -1
  470. package/dist/cjs/components/id-check/BeforePhoto.js.map +0 -1
  471. package/dist/cjs/components/id-check/BeforeVersoPhoto.js.map +0 -1
  472. package/dist/cjs/components/id-check/CameraError.js.map +0 -1
  473. package/dist/cjs/components/id-check/CameraMask.js.map +0 -1
  474. package/dist/cjs/components/id-check/OrientationToggle.js.map +0 -1
  475. package/dist/cjs/components/id-check/Photo.js.map +0 -1
  476. package/dist/cjs/components/id-check/PhotoConfirmation.js.map +0 -1
  477. package/dist/cjs/components/id-check/PhotoPreview.js.map +0 -1
  478. package/dist/cjs/components/jdi/JDDWorkInProgress.js.map +0 -1
  479. package/dist/cjs/components/jdi/JDICountrySelection.js.map +0 -1
  480. package/dist/cjs/components/jdi/JDIDocumentSelection.js.map +0 -1
  481. package/dist/cjs/components/jdi/JDIDocumentUpload.js.map +0 -1
  482. package/dist/cjs/components/jdi/JDIError.js.map +0 -1
  483. package/dist/cjs/components/jdi/JDIPreIntroduction.js.map +0 -1
  484. package/dist/cjs/components/jdi/JDIProcessing.js.map +0 -1
  485. package/dist/cjs/components/jdi/JDISuccess.js.map +0 -1
  486. package/dist/cjs/components/legal-consent/LegalConsentNode.js.map +0 -1
  487. package/dist/cjs/components/nfc-scan/BiometricSymbol.js.map +0 -1
  488. package/dist/cjs/components/nfc-scan/NfcChipGate.js.map +0 -1
  489. package/dist/cjs/components/nfc-scan/NfcFallbackSurvey.js.map +0 -1
  490. package/dist/cjs/components/nfc-scan/NfcOnboardingNotice.js.map +0 -1
  491. package/dist/cjs/components/nfc-scan/NfcScanNode.js.map +0 -1
  492. package/dist/cjs/components/nfc-scan/NfcSuccessAnimation.js.map +0 -1
  493. package/dist/cjs/components/nfc-scan/PuceCniSymbol.js.map +0 -1
  494. package/dist/cjs/components/selfie/SelfieConfirmation.js.map +0 -1
  495. package/dist/cjs/components/selfie/Video.css.js.map +0 -1
  496. package/dist/cjs/components/selfie/Video.js.map +0 -1
  497. package/dist/cjs/components/selfie/VideoFixes.css.js.map +0 -1
  498. package/dist/cjs/components/selfie/VideoResetStyles.js.map +0 -1
  499. package/dist/cjs/components/selfie/hooks/useLiveFrameCapture.js.map +0 -1
  500. package/dist/cjs/components/selfie/hooks/useVideoRecorderStyles.js.map +0 -1
  501. package/dist/cjs/components/selfie/selfie-flow/InstructionsSelfie.js.map +0 -1
  502. package/dist/cjs/components/selfie/selfie-flow/SelfieFlow.js.map +0 -1
  503. package/dist/cjs/components/selfie/selfie-flow/SelfiePreIntroduction.js.map +0 -1
  504. package/dist/cjs/components/selfie/selfie-flow/SelfieProcessing.js.map +0 -1
  505. package/dist/cjs/components/selfie/selfie-flow/SelfieRecorder.js.map +0 -1
  506. package/dist/cjs/components/selfie/utils/selfieCaptureUtils.js.map +0 -1
  507. package/dist/cjs/components/selfie/utils/unisseyStrings.js.map +0 -1
  508. package/dist/cjs/components/selfie/utils/videoElementStyles.js.map +0 -1
  509. package/dist/cjs/components/session/DocumentCheck.js.map +0 -1
  510. package/dist/cjs/components/session/EndFlow.js.map +0 -1
  511. package/dist/cjs/components/session/MobileRedirect.js.map +0 -1
  512. package/dist/cjs/components/session/PdfGeneration.js.map +0 -1
  513. package/dist/cjs/components/session/Selfie.js.map +0 -1
  514. package/dist/cjs/components/session/SessionContent.js.map +0 -1
  515. package/dist/cjs/components/session/SessionExpired.js.map +0 -1
  516. package/dist/cjs/components/session/StartSession.js.map +0 -1
  517. package/dist/cjs/components/session/UserInputForm/AddressFields.js.map +0 -1
  518. package/dist/cjs/components/session/UserInputForm/ContactFields.js.map +0 -1
  519. package/dist/cjs/components/session/UserInputForm/CustomFormFields.js.map +0 -1
  520. package/dist/cjs/components/session/UserInputForm/DatePickerField.js.map +0 -1
  521. package/dist/cjs/components/session/UserInputForm/IdentityFields.js.map +0 -1
  522. package/dist/cjs/components/session/UserInputForm/LegalEntityFields.js.map +0 -1
  523. package/dist/cjs/components/session/UserInputForm/LegalRepFields.js.map +0 -1
  524. package/dist/cjs/components/session/UserInputForm/NationalityField.js.map +0 -1
  525. package/dist/cjs/components/session/UserInputForm.js.map +0 -1
  526. package/dist/cjs/components/session/VideoWorkInProgress.js.map +0 -1
  527. package/dist/cjs/components/session/controleJdiPolicy.js.map +0 -1
  528. package/dist/cjs/components/session/endScreenIcons.js.map +0 -1
  529. package/dist/cjs/components/signature-electronic/DocusealSignature.js.map +0 -1
  530. package/dist/cjs/components/signature-electronic/SignatureElectronic.js.map +0 -1
  531. package/dist/cjs/components/signature-electronic/SignatureElectronicIntroduction.js.map +0 -1
  532. package/dist/cjs/components/signature-electronic/SignedDocumentPreview.js.map +0 -1
  533. package/dist/cjs/components/start-flow/Start.js.map +0 -1
  534. package/dist/cjs/components/states/ErrorState.js.map +0 -1
  535. package/dist/cjs/components/states/LoadingState.js.map +0 -1
  536. package/dist/cjs/components/states/NoSessionIdState.js.map +0 -1
  537. package/dist/cjs/components/template/ComplementaryMandateNodeHandler.js.map +0 -1
  538. package/dist/cjs/components/template/ConditionNodeHandler.js.map +0 -1
  539. package/dist/cjs/components/template/ExternalVerificationNodeHandler.js.map +0 -1
  540. package/dist/cjs/components/template/TemplateNodeRenderer.js.map +0 -1
  541. package/dist/cjs/components/template/conditionNodePolicy.js.map +0 -1
  542. package/dist/cjs/components/ui/Body.js.map +0 -1
  543. package/dist/cjs/components/ui/Button.js.map +0 -1
  544. package/dist/cjs/components/ui/ButtonDesktop.js.map +0 -1
  545. package/dist/cjs/components/ui/Card.js.map +0 -1
  546. package/dist/cjs/components/ui/MobilePageLayout.js.map +0 -1
  547. package/dist/cjs/components/ui/PDFPreview.js.map +0 -1
  548. package/dist/cjs/components/ui/PageActions.js.map +0 -1
  549. package/dist/cjs/components/ui/Paper.js.map +0 -1
  550. package/dist/cjs/components/ui/PoweredBy.js.map +0 -1
  551. package/dist/cjs/components/ui/QRCodeDisplay.js.map +0 -1
  552. package/dist/cjs/components/ui/SelectComponent.js.map +0 -1
  553. package/dist/cjs/components/ui/Subtitle.js.map +0 -1
  554. package/dist/cjs/components/ui/Title.js.map +0 -1
  555. package/dist/cjs/config/env.js.map +0 -1
  556. package/dist/cjs/constants/userInputForm.js.map +0 -1
  557. package/dist/cjs/context/ConfigContext.js.map +0 -1
  558. package/dist/cjs/context/DocumentContext.js.map +0 -1
  559. package/dist/cjs/context/SessionContext.js.map +0 -1
  560. package/dist/cjs/hooks/useClientInfo.js.map +0 -1
  561. package/dist/cjs/hooks/useCountryOptions.js.map +0 -1
  562. package/dist/cjs/hooks/useI18n.js.map +0 -1
  563. package/dist/cjs/hooks/useIsMobile.js.map +0 -1
  564. package/dist/cjs/hooks/useNfcSseStatus.js.map +0 -1
  565. package/dist/cjs/hooks/useRouteCSS.js.map +0 -1
  566. package/dist/cjs/hooks/useSession.js.map +0 -1
  567. package/dist/cjs/hooks/useSessionData.js.map +0 -1
  568. package/dist/cjs/hooks/useStepCSS.js.map +0 -1
  569. package/dist/cjs/hooks/useStepNavigation.js.map +0 -1
  570. package/dist/cjs/hooks/useTemplateLoader.js.map +0 -1
  571. package/dist/cjs/hooks/useUserInputForm.js.map +0 -1
  572. package/dist/cjs/i18n/country/country.en.json.js.map +0 -1
  573. package/dist/cjs/i18n/country/country.fr.json.js.map +0 -1
  574. package/dist/cjs/i18n/country/country.iso2.en.json.js.map +0 -1
  575. package/dist/cjs/i18n/country/country.iso2.fr.json.js.map +0 -1
  576. package/dist/cjs/i18n/documents/documents.en.json.js.map +0 -1
  577. package/dist/cjs/i18n/documents/documents.fr.json.js.map +0 -1
  578. package/dist/cjs/i18n/en.json.js.map +0 -1
  579. package/dist/cjs/i18n/es.json.js.map +0 -1
  580. package/dist/cjs/i18n/fr.json.js.map +0 -1
  581. package/dist/cjs/i18n/index.js.map +0 -1
  582. package/dist/cjs/index.css.js.map +0 -1
  583. package/dist/cjs/index.js.map +0 -1
  584. package/dist/cjs/node_modules/date-fns/locale/_lib/buildFormatLongFn.js.map +0 -1
  585. package/dist/cjs/node_modules/date-fns/locale/_lib/buildLocalizeFn.js.map +0 -1
  586. package/dist/cjs/node_modules/date-fns/locale/_lib/buildMatchFn.js.map +0 -1
  587. package/dist/cjs/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js.map +0 -1
  588. package/dist/cjs/node_modules/date-fns/locale/en-US/_lib/formatDistance.js.map +0 -1
  589. package/dist/cjs/node_modules/date-fns/locale/en-US/_lib/formatLong.js.map +0 -1
  590. package/dist/cjs/node_modules/date-fns/locale/en-US/_lib/formatRelative.js.map +0 -1
  591. package/dist/cjs/node_modules/date-fns/locale/en-US/_lib/localize.js.map +0 -1
  592. package/dist/cjs/node_modules/date-fns/locale/en-US/_lib/match.js.map +0 -1
  593. package/dist/cjs/node_modules/date-fns/locale/en-US.js.map +0 -1
  594. package/dist/cjs/node_modules/date-fns/locale/fr/_lib/formatDistance.js.map +0 -1
  595. package/dist/cjs/node_modules/date-fns/locale/fr/_lib/formatLong.js.map +0 -1
  596. package/dist/cjs/node_modules/date-fns/locale/fr/_lib/formatRelative.js.map +0 -1
  597. package/dist/cjs/node_modules/date-fns/locale/fr/_lib/localize.js.map +0 -1
  598. package/dist/cjs/node_modules/date-fns/locale/fr/_lib/match.js.map +0 -1
  599. package/dist/cjs/node_modules/date-fns/locale/fr.js.map +0 -1
  600. package/dist/cjs/node_modules/heic2any/dist/heic2any.js.map +0 -1
  601. package/dist/cjs/node_modules/pdfjs-dist/legacy/build/pdf.js.map +0 -1
  602. package/dist/cjs/node_modules/pdfjs-dist/legacy/build/pdf.worker.js.map +0 -1
  603. package/dist/cjs/node_modules/style-inject/dist/style-inject.es.js.map +0 -1
  604. package/dist/cjs/node_modules/tslib/tslib.es6.js.map +0 -1
  605. package/dist/cjs/providers/I18nProvider.js.map +0 -1
  606. package/dist/cjs/services/analysis.js.map +0 -1
  607. package/dist/cjs/services/api.js.map +0 -1
  608. package/dist/cjs/services/auditTrailService.js.map +0 -1
  609. package/dist/cjs/services/cameraService.js.map +0 -1
  610. package/dist/cjs/services/documentEdgeDetectionService.js.map +0 -1
  611. package/dist/cjs/services/documentTemplate.js.map +0 -1
  612. package/dist/cjs/services/iadService.js.map +0 -1
  613. package/dist/cjs/services/integrationService.js.map +0 -1
  614. package/dist/cjs/services/pollingService.js.map +0 -1
  615. package/dist/cjs/services/professionalImageQuality.js.map +0 -1
  616. package/dist/cjs/services/retryService.js.map +0 -1
  617. package/dist/cjs/services/sessionCredentials.js.map +0 -1
  618. package/dist/cjs/services/sessionMemoryStore.js.map +0 -1
  619. package/dist/cjs/services/sessionService.js.map +0 -1
  620. package/dist/cjs/services/utils.js.map +0 -1
  621. package/dist/cjs/types/session.js.map +0 -1
  622. package/dist/cjs/utils/analysisErrors.js.map +0 -1
  623. package/dist/cjs/utils/apiAnalysis.js.map +0 -1
  624. package/dist/cjs/utils/conditionEvaluator.js.map +0 -1
  625. package/dist/cjs/utils/countryFlags.js.map +0 -1
  626. package/dist/cjs/utils/cssLoader.js.map +0 -1
  627. package/dist/cjs/utils/customFieldIds.js.map +0 -1
  628. package/dist/cjs/utils/customFieldValidation.js.map +0 -1
  629. package/dist/cjs/utils/documentLabels.js.map +0 -1
  630. package/dist/cjs/utils/europeanCountries.js.map +0 -1
  631. package/dist/cjs/utils/fileConverter.js.map +0 -1
  632. package/dist/cjs/utils/imageConverter.js.map +0 -1
  633. package/dist/cjs/utils/imageProcessing.js.map +0 -1
  634. package/dist/cjs/utils/isMobileDevice.js.map +0 -1
  635. package/dist/cjs/utils/isoCountryCodes.js.map +0 -1
  636. package/dist/cjs/utils/jdiCodes.js.map +0 -1
  637. package/dist/cjs/utils/labelToKey.js.map +0 -1
  638. package/dist/cjs/utils/listFieldUtils.js.map +0 -1
  639. package/dist/cjs/utils/mimeTypes.js.map +0 -1
  640. package/dist/cjs/utils/navigation.js.map +0 -1
  641. package/dist/cjs/utils/renderInlineMarkdown.js.map +0 -1
  642. package/dist/cjs/utils/sessionStatus.js.map +0 -1
  643. package/dist/cjs/utils/userInputForm.js.map +0 -1
  644. package/dist/cjs/utils/utils.js.map +0 -1
  645. package/dist/cjs/utils/validationUtils.js.map +0 -1
  646. package/dist/esm/_virtual/_commonjsHelpers.js.map +0 -1
  647. package/dist/esm/_virtual/heic2any.js.map +0 -1
  648. package/dist/esm/_virtual/heic2any2.js.map +0 -1
  649. package/dist/esm/assets/Face Scan Square.svg.js.map +0 -1
  650. package/dist/esm/assets/Lightbulb.svg.js.map +0 -1
  651. package/dist/esm/assets/Monitor Camera.svg.js.map +0 -1
  652. package/dist/esm/assets/User Hands.svg.js.map +0 -1
  653. package/dist/esm/assets/before-document.png.js.map +0 -1
  654. package/dist/esm/assets/before-passport.png.js.map +0 -1
  655. package/dist/esm/assets/before-photo.png.js.map +0 -1
  656. package/dist/esm/assets/before-verso.png.js.map +0 -1
  657. package/dist/esm/assets/check.svg.js.map +0 -1
  658. package/dist/esm/assets/icons/shield_magic_link.svg.js.map +0 -1
  659. package/dist/esm/assets/selfietake.svg.js.map +0 -1
  660. package/dist/esm/components/DatakeenSession.js.map +0 -1
  661. package/dist/esm/components/document-collection/DocumentCollection.js.map +0 -1
  662. package/dist/esm/components/document-collection/DocumentCollectionIntroduction.js.map +0 -1
  663. package/dist/esm/components/document-collection/DocumentCollectionMethodSelection.js.map +0 -1
  664. package/dist/esm/components/document-collection/DocumentCollectionSelection.js.map +0 -1
  665. package/dist/esm/components/document-collection/DocumentCollectionUpload.js.map +0 -1
  666. package/dist/esm/components/document-collection/DocumentError.js.map +0 -1
  667. package/dist/esm/components/document-collection/DocumentProcessing.js.map +0 -1
  668. package/dist/esm/components/document-collection/DocumentSuccess.js.map +0 -1
  669. package/dist/esm/components/document-video/DocumentVideoCapture.js.map +0 -1
  670. package/dist/esm/components/document-video/DocumentVideoConfirmation.js.map +0 -1
  671. package/dist/esm/components/document-video/document-video-flow/DocumentVideoFlow.js.map +0 -1
  672. package/dist/esm/components/document-video/document-video-flow/DocumentVideoInstructions.js.map +0 -1
  673. package/dist/esm/components/document-video/document-video-flow/DocumentVideoProcessing.js.map +0 -1
  674. package/dist/esm/components/document-video/document-video-flow/DocumentVideoRecorder.js.map +0 -1
  675. package/dist/esm/components/icons/ElectronicIcon.js.map +0 -1
  676. package/dist/esm/components/icons/PoweredByIcon.js.map +0 -1
  677. package/dist/esm/components/icons/PreIntroIcon.js.map +0 -1
  678. package/dist/esm/components/icons/StartIcon.js.map +0 -1
  679. package/dist/esm/components/id-check/BeforePhoto.js.map +0 -1
  680. package/dist/esm/components/id-check/BeforeVersoPhoto.js.map +0 -1
  681. package/dist/esm/components/id-check/CameraError.js.map +0 -1
  682. package/dist/esm/components/id-check/CameraMask.js.map +0 -1
  683. package/dist/esm/components/id-check/OrientationToggle.js.map +0 -1
  684. package/dist/esm/components/id-check/Photo.js.map +0 -1
  685. package/dist/esm/components/id-check/PhotoConfirmation.js.map +0 -1
  686. package/dist/esm/components/id-check/PhotoPreview.js.map +0 -1
  687. package/dist/esm/components/jdi/JDDWorkInProgress.js.map +0 -1
  688. package/dist/esm/components/jdi/JDICountrySelection.js.map +0 -1
  689. package/dist/esm/components/jdi/JDIDocumentSelection.js.map +0 -1
  690. package/dist/esm/components/jdi/JDIDocumentUpload.js.map +0 -1
  691. package/dist/esm/components/jdi/JDIError.js.map +0 -1
  692. package/dist/esm/components/jdi/JDIPreIntroduction.js.map +0 -1
  693. package/dist/esm/components/jdi/JDIProcessing.js.map +0 -1
  694. package/dist/esm/components/jdi/JDISuccess.js.map +0 -1
  695. package/dist/esm/components/legal-consent/LegalConsentNode.js.map +0 -1
  696. package/dist/esm/components/nfc-scan/BiometricSymbol.js.map +0 -1
  697. package/dist/esm/components/nfc-scan/NfcChipGate.js.map +0 -1
  698. package/dist/esm/components/nfc-scan/NfcFallbackSurvey.js.map +0 -1
  699. package/dist/esm/components/nfc-scan/NfcOnboardingNotice.js.map +0 -1
  700. package/dist/esm/components/nfc-scan/NfcScanNode.js.map +0 -1
  701. package/dist/esm/components/nfc-scan/NfcSuccessAnimation.js.map +0 -1
  702. package/dist/esm/components/nfc-scan/PuceCniSymbol.js.map +0 -1
  703. package/dist/esm/components/selfie/SelfieConfirmation.js.map +0 -1
  704. package/dist/esm/components/selfie/Video.css.js.map +0 -1
  705. package/dist/esm/components/selfie/Video.js.map +0 -1
  706. package/dist/esm/components/selfie/VideoFixes.css.js.map +0 -1
  707. package/dist/esm/components/selfie/VideoResetStyles.js.map +0 -1
  708. package/dist/esm/components/selfie/hooks/useLiveFrameCapture.js.map +0 -1
  709. package/dist/esm/components/selfie/hooks/useVideoRecorderStyles.js.map +0 -1
  710. package/dist/esm/components/selfie/selfie-flow/InstructionsSelfie.js.map +0 -1
  711. package/dist/esm/components/selfie/selfie-flow/SelfieFlow.js.map +0 -1
  712. package/dist/esm/components/selfie/selfie-flow/SelfiePreIntroduction.js.map +0 -1
  713. package/dist/esm/components/selfie/selfie-flow/SelfieProcessing.js.map +0 -1
  714. package/dist/esm/components/selfie/selfie-flow/SelfieRecorder.js.map +0 -1
  715. package/dist/esm/components/selfie/utils/selfieCaptureUtils.js.map +0 -1
  716. package/dist/esm/components/selfie/utils/unisseyStrings.js.map +0 -1
  717. package/dist/esm/components/selfie/utils/videoElementStyles.js.map +0 -1
  718. package/dist/esm/components/session/DocumentCheck.js.map +0 -1
  719. package/dist/esm/components/session/EndFlow.js.map +0 -1
  720. package/dist/esm/components/session/MobileRedirect.js.map +0 -1
  721. package/dist/esm/components/session/PdfGeneration.js.map +0 -1
  722. package/dist/esm/components/session/Selfie.js.map +0 -1
  723. package/dist/esm/components/session/SessionContent.js.map +0 -1
  724. package/dist/esm/components/session/SessionExpired.js.map +0 -1
  725. package/dist/esm/components/session/StartSession.js.map +0 -1
  726. package/dist/esm/components/session/UserInputForm/AddressFields.js.map +0 -1
  727. package/dist/esm/components/session/UserInputForm/ContactFields.js.map +0 -1
  728. package/dist/esm/components/session/UserInputForm/CustomFormFields.js.map +0 -1
  729. package/dist/esm/components/session/UserInputForm/DatePickerField.js.map +0 -1
  730. package/dist/esm/components/session/UserInputForm/IdentityFields.js.map +0 -1
  731. package/dist/esm/components/session/UserInputForm/LegalEntityFields.js.map +0 -1
  732. package/dist/esm/components/session/UserInputForm/LegalRepFields.js.map +0 -1
  733. package/dist/esm/components/session/UserInputForm/NationalityField.js.map +0 -1
  734. package/dist/esm/components/session/UserInputForm.js.map +0 -1
  735. package/dist/esm/components/session/VideoWorkInProgress.js.map +0 -1
  736. package/dist/esm/components/session/controleJdiPolicy.js.map +0 -1
  737. package/dist/esm/components/session/endScreenIcons.js.map +0 -1
  738. package/dist/esm/components/signature-electronic/DocusealSignature.js.map +0 -1
  739. package/dist/esm/components/signature-electronic/SignatureElectronic.js.map +0 -1
  740. package/dist/esm/components/signature-electronic/SignatureElectronicIntroduction.js.map +0 -1
  741. package/dist/esm/components/signature-electronic/SignedDocumentPreview.js.map +0 -1
  742. package/dist/esm/components/start-flow/Start.js.map +0 -1
  743. package/dist/esm/components/states/ErrorState.js.map +0 -1
  744. package/dist/esm/components/states/LoadingState.js.map +0 -1
  745. package/dist/esm/components/states/NoSessionIdState.js.map +0 -1
  746. package/dist/esm/components/template/ComplementaryMandateNodeHandler.js.map +0 -1
  747. package/dist/esm/components/template/ConditionNodeHandler.js.map +0 -1
  748. package/dist/esm/components/template/ExternalVerificationNodeHandler.js.map +0 -1
  749. package/dist/esm/components/template/TemplateNodeRenderer.js.map +0 -1
  750. package/dist/esm/components/template/conditionNodePolicy.js.map +0 -1
  751. package/dist/esm/components/ui/Body.js.map +0 -1
  752. package/dist/esm/components/ui/Button.js.map +0 -1
  753. package/dist/esm/components/ui/ButtonDesktop.js.map +0 -1
  754. package/dist/esm/components/ui/Card.js.map +0 -1
  755. package/dist/esm/components/ui/MobilePageLayout.js.map +0 -1
  756. package/dist/esm/components/ui/PDFPreview.js.map +0 -1
  757. package/dist/esm/components/ui/PageActions.js.map +0 -1
  758. package/dist/esm/components/ui/Paper.js.map +0 -1
  759. package/dist/esm/components/ui/PoweredBy.js.map +0 -1
  760. package/dist/esm/components/ui/QRCodeDisplay.js.map +0 -1
  761. package/dist/esm/components/ui/SelectComponent.js.map +0 -1
  762. package/dist/esm/components/ui/Subtitle.js.map +0 -1
  763. package/dist/esm/components/ui/Title.js.map +0 -1
  764. package/dist/esm/config/env.js.map +0 -1
  765. package/dist/esm/constants/userInputForm.js.map +0 -1
  766. package/dist/esm/context/ConfigContext.js.map +0 -1
  767. package/dist/esm/context/DocumentContext.js.map +0 -1
  768. package/dist/esm/context/SessionContext.js.map +0 -1
  769. package/dist/esm/hooks/useClientInfo.js.map +0 -1
  770. package/dist/esm/hooks/useCountryOptions.js.map +0 -1
  771. package/dist/esm/hooks/useI18n.js.map +0 -1
  772. package/dist/esm/hooks/useIsMobile.js.map +0 -1
  773. package/dist/esm/hooks/useNfcSseStatus.js.map +0 -1
  774. package/dist/esm/hooks/useRouteCSS.js.map +0 -1
  775. package/dist/esm/hooks/useSession.js.map +0 -1
  776. package/dist/esm/hooks/useSessionData.js.map +0 -1
  777. package/dist/esm/hooks/useStepCSS.js.map +0 -1
  778. package/dist/esm/hooks/useStepNavigation.js.map +0 -1
  779. package/dist/esm/hooks/useTemplateLoader.js.map +0 -1
  780. package/dist/esm/hooks/useUserInputForm.js.map +0 -1
  781. package/dist/esm/i18n/country/country.en.json.js.map +0 -1
  782. package/dist/esm/i18n/country/country.fr.json.js.map +0 -1
  783. package/dist/esm/i18n/country/country.iso2.en.json.js.map +0 -1
  784. package/dist/esm/i18n/country/country.iso2.fr.json.js.map +0 -1
  785. package/dist/esm/i18n/documents/documents.en.json.js.map +0 -1
  786. package/dist/esm/i18n/documents/documents.fr.json.js.map +0 -1
  787. package/dist/esm/i18n/en.json.js.map +0 -1
  788. package/dist/esm/i18n/es.json.js.map +0 -1
  789. package/dist/esm/i18n/fr.json.js.map +0 -1
  790. package/dist/esm/i18n/index.js.map +0 -1
  791. package/dist/esm/index.css.js.map +0 -1
  792. package/dist/esm/index.js.map +0 -1
  793. package/dist/esm/node_modules/date-fns/locale/_lib/buildFormatLongFn.js.map +0 -1
  794. package/dist/esm/node_modules/date-fns/locale/_lib/buildLocalizeFn.js.map +0 -1
  795. package/dist/esm/node_modules/date-fns/locale/_lib/buildMatchFn.js.map +0 -1
  796. package/dist/esm/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js.map +0 -1
  797. package/dist/esm/node_modules/date-fns/locale/en-US/_lib/formatDistance.js.map +0 -1
  798. package/dist/esm/node_modules/date-fns/locale/en-US/_lib/formatLong.js.map +0 -1
  799. package/dist/esm/node_modules/date-fns/locale/en-US/_lib/formatRelative.js.map +0 -1
  800. package/dist/esm/node_modules/date-fns/locale/en-US/_lib/localize.js.map +0 -1
  801. package/dist/esm/node_modules/date-fns/locale/en-US/_lib/match.js.map +0 -1
  802. package/dist/esm/node_modules/date-fns/locale/en-US.js.map +0 -1
  803. package/dist/esm/node_modules/date-fns/locale/fr/_lib/formatDistance.js.map +0 -1
  804. package/dist/esm/node_modules/date-fns/locale/fr/_lib/formatLong.js.map +0 -1
  805. package/dist/esm/node_modules/date-fns/locale/fr/_lib/formatRelative.js.map +0 -1
  806. package/dist/esm/node_modules/date-fns/locale/fr/_lib/localize.js.map +0 -1
  807. package/dist/esm/node_modules/date-fns/locale/fr/_lib/match.js.map +0 -1
  808. package/dist/esm/node_modules/date-fns/locale/fr.js.map +0 -1
  809. package/dist/esm/node_modules/heic2any/dist/heic2any.js.map +0 -1
  810. package/dist/esm/node_modules/pdfjs-dist/legacy/build/pdf.js.map +0 -1
  811. package/dist/esm/node_modules/pdfjs-dist/legacy/build/pdf.worker.js.map +0 -1
  812. package/dist/esm/node_modules/style-inject/dist/style-inject.es.js.map +0 -1
  813. package/dist/esm/node_modules/tslib/tslib.es6.js.map +0 -1
  814. package/dist/esm/providers/I18nProvider.js.map +0 -1
  815. package/dist/esm/services/analysis.js.map +0 -1
  816. package/dist/esm/services/api.js.map +0 -1
  817. package/dist/esm/services/auditTrailService.js.map +0 -1
  818. package/dist/esm/services/cameraService.js.map +0 -1
  819. package/dist/esm/services/documentEdgeDetectionService.js.map +0 -1
  820. package/dist/esm/services/documentTemplate.js.map +0 -1
  821. package/dist/esm/services/iadService.js.map +0 -1
  822. package/dist/esm/services/integrationService.js.map +0 -1
  823. package/dist/esm/services/pollingService.js.map +0 -1
  824. package/dist/esm/services/professionalImageQuality.js.map +0 -1
  825. package/dist/esm/services/retryService.js.map +0 -1
  826. package/dist/esm/services/sessionCredentials.js.map +0 -1
  827. package/dist/esm/services/sessionMemoryStore.js.map +0 -1
  828. package/dist/esm/services/sessionService.js.map +0 -1
  829. package/dist/esm/services/utils.js.map +0 -1
  830. package/dist/esm/types/session.js.map +0 -1
  831. package/dist/esm/utils/analysisErrors.js.map +0 -1
  832. package/dist/esm/utils/apiAnalysis.js.map +0 -1
  833. package/dist/esm/utils/conditionEvaluator.js.map +0 -1
  834. package/dist/esm/utils/countryFlags.js.map +0 -1
  835. package/dist/esm/utils/cssLoader.js.map +0 -1
  836. package/dist/esm/utils/customFieldIds.js.map +0 -1
  837. package/dist/esm/utils/customFieldValidation.js.map +0 -1
  838. package/dist/esm/utils/documentLabels.js.map +0 -1
  839. package/dist/esm/utils/europeanCountries.js.map +0 -1
  840. package/dist/esm/utils/fileConverter.js.map +0 -1
  841. package/dist/esm/utils/imageConverter.js.map +0 -1
  842. package/dist/esm/utils/imageProcessing.js.map +0 -1
  843. package/dist/esm/utils/isMobileDevice.js.map +0 -1
  844. package/dist/esm/utils/isoCountryCodes.js.map +0 -1
  845. package/dist/esm/utils/jdiCodes.js.map +0 -1
  846. package/dist/esm/utils/labelToKey.js.map +0 -1
  847. package/dist/esm/utils/listFieldUtils.js.map +0 -1
  848. package/dist/esm/utils/mimeTypes.js.map +0 -1
  849. package/dist/esm/utils/navigation.js.map +0 -1
  850. package/dist/esm/utils/renderInlineMarkdown.js.map +0 -1
  851. package/dist/esm/utils/sessionStatus.js.map +0 -1
  852. package/dist/esm/utils/userInputForm.js.map +0 -1
  853. package/dist/esm/utils/utils.js.map +0 -1
  854. package/dist/esm/utils/validationUtils.js.map +0 -1
  855. package/docs/COMPLEMENTARY_MANDATE.md +0 -22
  856. package/docs/GITLAB_BADGES_SETUP.md +0 -317
  857. package/docs/JOURNEY_NODE_BUILDER.md +0 -222
  858. package/docs/POLLING_SYSTEM.md +0 -699
  859. package/docs/README.md +0 -254
  860. package/docs/SESSION_TOKEN_MIGRATION.md +0 -52
  861. package/docs/condition-node.md +0 -651
  862. package/docs/configuration.md +0 -113
  863. package/docs/dynamic-configuration.md +0 -97
  864. package/docs/environment.md +0 -27
  865. package/docs/migration-guide.md +0 -120
  866. package/docs/multi-runs.md +0 -111
  867. package/docs/navigation-history.md +0 -163
  868. package/docs/sdk_integration_guide.md +0 -58
  869. package/eslint.config.js +0 -13
  870. package/examples/analysis-progress-example.tsx +0 -220
  871. package/examples/sdk-configuration.ts +0 -187
  872. package/examples/test-updated-urls.ts +0 -162
  873. package/examples/usage-example.tsx +0 -49
  874. package/jest.config.js +0 -32
  875. package/postcss.config.js +0 -6
  876. package/renovate.json +0 -242
  877. package/rollup.asset-url-plugin.js +0 -38
  878. package/rollup.dev.config.js +0 -65
  879. package/setupTests.js +0 -41
  880. package/tailwind.config.js +0 -11
@@ -1 +0,0 @@
1
- {"version":3,"file":"ConditionNodeHandler.js","sources":["../../../../../src/components/template/ConditionNodeHandler.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useRef, useState } from \"react\";\nimport LoadingState from \"../states/LoadingState\";\nimport type { SessionData, SessionTemplateNode } from \"../../types/session\";\nimport type { stepObject } from \"../../types/session\";\nimport type { UserInput } from \"../../types/userInput\";\nimport type { ContactInfo } from \"../../types/contactInfo\";\nimport { useI18n } from \"../../hooks/useI18n\";\nimport {\n evaluateConditionTokens,\n parseConditionExpression,\n} from \"../../utils/conditionEvaluator\";\nimport {\n fetchSessionById,\n findOutgoingEdge,\n} from \"../../services/sessionService\";\nimport {\n getNodeRetryCount,\n updateNodeRetryCount,\n} from \"../../services/retryService\";\nimport {\n hasExceededConditionMaxRetries,\n normalizeConditionMaxRetries,\n normalizeConditionMaxRetryAction,\n} from \"./conditionNodePolicy\";\n\ninterface ConditionNodeHandlerProps {\n node: SessionTemplateNode;\n session: SessionData;\n templateNodes: SessionTemplateNode[];\n stepObject: stepObject;\n userInput: UserInput;\n contactInfo: ContactInfo;\n}\n\ninterface FalseConditionState {\n message: string;\n retryCount: number;\n maxRetries: number;\n template: SessionData[\"template\"];\n}\n\nconst ConditionNodeHandler: React.FC<ConditionNodeHandlerProps> = ({\n node,\n session,\n templateNodes,\n stepObject,\n userInput,\n contactInfo,\n}) => {\n const { t } = useI18n();\n const [errorMessage, setErrorMessage] = useState<string | null>(null);\n const [isLoadingSession, setIsLoadingSession] = useState(false);\n const [falseConditionState, setFalseConditionState] =\n useState<FalseConditionState | null>(null);\n const hasEvaluatedRef = useRef(false);\n\n const tokens = useMemo(() => {\n return (\n (node.conditionTokens && node.conditionTokens.length > 0\n ? node.conditionTokens\n : parseConditionExpression(node.conditionExpression || \"\")) || []\n );\n }, [node.conditionExpression, node.conditionTokens]);\n\n useEffect(() => {\n hasEvaluatedRef.current = false;\n setErrorMessage(null);\n setFalseConditionState(null);\n }, [node.id]);\n\n useEffect(() => {\n if (hasEvaluatedRef.current) {\n return;\n }\n hasEvaluatedRef.current = true;\n\n const evaluateCondition = async () => {\n if (!session?.template) {\n setErrorMessage(\n t(\n \"condition_node.error_missing_template\",\n \"Aucun template disponible pour évaluer la condition.\",\n ),\n );\n return;\n }\n\n if (tokens.length === 0) {\n setErrorMessage(\n t(\n \"condition_node.error_missing_tokens\",\n \"Aucune expression de condition n'est définie pour ce nœud.\",\n ),\n );\n return;\n }\n\n setIsLoadingSession(true);\n let freshSession: SessionData;\n try {\n freshSession = await fetchSessionById(session.id);\n } catch (error) {\n console.error(\"[ConditionNodeHandler] Error fetching fresh session:\", error);\n freshSession = session;\n } finally {\n setIsLoadingSession(false);\n }\n\n try {\n const evaluationResult = evaluateConditionTokens(tokens, {\n session: freshSession,\n userInput,\n contactInfo,\n });\n\n if (evaluationResult) {\n stepObject.goToNextStep(node.id, freshSession.template, \"true\");\n return;\n }\n\n if (node.conditionFalseMode !== \"retry\") {\n stepObject.goToNextStep(node.id, freshSession.template, \"false\");\n return;\n }\n\n const maxRetries = normalizeConditionMaxRetries(node.conditionMaxRetries);\n const maxRetryAction = normalizeConditionMaxRetryAction(\n node.conditionMaxRetryAction,\n );\n const currentRetryCount = getNodeRetryCount(freshSession, node.id);\n const retryCountAfterFailure = currentRetryCount + 1;\n\n try {\n await updateNodeRetryCount(\n session.id,\n node.id,\n retryCountAfterFailure,\n );\n } catch (retryError) {\n console.error(\n \"[ConditionNodeHandler] Failed to persist retry count:\",\n retryError,\n );\n }\n\n if (\n hasExceededConditionMaxRetries(retryCountAfterFailure, maxRetries)\n ) {\n if (maxRetryAction === \"force-true\") {\n stepObject.goToNextStep(node.id, freshSession.template, \"true\");\n return;\n }\n stepObject.goToNextStep(node.id, freshSession.template, \"false\");\n return;\n }\n\n const falseEdge = findOutgoingEdge(node.id, freshSession.template, \"false\");\n if (!falseEdge) {\n throw new Error(\"No outgoing false edge defined for condition node\");\n }\n\n setFalseConditionState({\n message:\n node.conditionFalseErrorMessage?.trim() ||\n t(\n \"condition_node.false_error_default\",\n \"Les informations ne respectent pas les conditions demandées.\",\n ),\n retryCount: retryCountAfterFailure,\n maxRetries,\n template: freshSession.template,\n });\n } catch (error) {\n console.error(\"Failed to evaluate condition node\", error);\n setErrorMessage(\n t(\n \"condition_node.error_evaluation\",\n \"Impossible d'évaluer cette condition. Vous pouvez poursuivre manuellement.\",\n ),\n );\n }\n };\n\n evaluateCondition();\n }, [contactInfo, node, session, stepObject, t, tokens, userInput, templateNodes]);\n\n const handleRetry = () => {\n if (!falseConditionState) {\n return;\n }\n stepObject.goToNextStep(node.id, falseConditionState.template, \"false\");\n };\n\n if (isLoadingSession) {\n return (\n <LoadingState\n message={t(\n \"condition_node.loading_analysis\",\n \"Chargement des données d'analyse...\",\n )}\n subtitle={t(\n \"condition_node.loading_description\",\n \"Récupération des informations nécessaires pour évaluer la condition.\",\n )}\n />\n );\n }\n\n if (falseConditionState) {\n return (\n <div className=\"flex flex-col justify-between h-full w-full\">\n <div className=\"flex-1 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 <div className=\"text-center\">\n <div className=\"mx-auto w-16 h-16 bg-red-100 rounded-full flex items-center justify-center mb-4\">\n <div className=\"w-8 h-8 bg-red-500 rounded-full flex items-center justify-center\">\n <span className=\"text-white text-lg\">✕</span>\n </div>\n </div>\n </div>\n\n <div className=\"text-center space-y-4\">\n <h2 className=\"text-xl font-bold text-red-600\">\n {t(\"condition_node.false_error_title\", \"Condition non remplie\")}\n </h2>\n <p className=\"text-sm text-gray-600 leading-relaxed\">\n {falseConditionState.message}\n </p>\n </div>\n\n <div className=\"bg-orange-50 border border-orange-200 rounded-lg p-4\">\n <p className=\"text-sm text-orange-800\">\n {t(\n \"condition_node.retry_counter\",\n \"Tentative {{current}}/{{max}}\",\n {\n current: falseConditionState.retryCount,\n max: falseConditionState.maxRetries,\n },\n )}\n </p>\n </div>\n </div>\n </div>\n\n <div className=\"sticky bottom-0 md:static bg-white border-t md:border-t-0 p-4 md:p-0 md:pb-8\">\n <div className=\"w-full max-w-md mx-auto\">\n <button\n className=\"w-full px-4 py-2 bg-primary text-white rounded hover:bg-primary-dark transition-colors\"\n onClick={handleRetry}\n >\n {t(\"condition_node.buttons.retry\", \"Réessayer\")}\n </button>\n </div>\n </div>\n </div>\n );\n }\n\n if (errorMessage) {\n return (\n <div className=\"flex flex-col items-center justify-center h-full p-4 text-center\">\n <div className=\"text-red-500 text-4xl mb-4\">⚠️</div>\n <h2 className=\"text-xl font-bold text-red-600 mb-2\">\n {t(\"condition_node.title\", \"Condition\")}\n </h2>\n <p className=\"text-gray-600 mb-4\">{errorMessage}</p>\n <button\n className=\"px-4 py-2 bg-primary text-white rounded hover:bg-primary-dark transition-colors\"\n onClick={() => stepObject.setStep(stepObject.step + 1)}\n >\n {t(\"condition_node.buttons.skip\", \"Continuer\")}\n </button>\n </div>\n );\n }\n\n return (\n <LoadingState\n message={t(\n \"condition_node.evaluating\",\n \"Évaluation de la condition en cours...\",\n )}\n subtitle={t(\n \"condition_node.evaluating_description\",\n \"Merci de patienter pendant que nous déterminons la prochaine étape.\",\n )}\n />\n );\n};\n\nexport default ConditionNodeHandler;\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ExternalVerificationNodeHandler.js","sources":["../../../../../src/components/template/ExternalVerificationNodeHandler.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport sdkI18n from '../../i18n';\nimport { apiService } from '../../services/api';\nimport checkIcon from '../../assets/check.svg';\nimport LoadingState from '../states/LoadingState';\nimport Title from '../ui/Title';\nimport Subtitle from '../ui/Subtitle';\nimport Button from '../ui/Button';\nimport type { SessionData, SessionTemplateNode } from '../../types/session';\nimport type { UserInput } from '../../types/userInput';\nimport { labelToKey } from '../../utils/labelToKey';\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\ntype VerificationStatus =\n | 'ok'\n | 'not_found'\n | 'invalid_input'\n | 'config_error'\n | 'external_error'\n | 'person_mismatch';\n\ninterface InpiMandataire {\n type: 'individu' | 'personne_morale';\n nom?: string;\n prenoms?: string[];\n dateDeNaissance?: string;\n denominationSociale?: string;\n siren?: string;\n}\n\ninterface InpiVerificationData {\n identite?: { denomination?: string; siren?: string; dateImmat?: string };\n mandataires?: InpiMandataire[];\n beneficiairesEffectifs?: Array<{ nom?: string; prenoms?: string[]; dateDeNaissance?: string }>;\n comparison?: { matched: boolean; matchedPersonType?: string; targets: string[] };\n /** Real registry the data was resolved from — RNE directly, or the RNA fallback for associations. */\n source?: 'RNE' | 'RNA';\n}\n\n/** RL personne morale (délégation de pouvoir) : configuré par le concepteur du\n * parcours sur le nœud external-verification — jamais choisi par l'utilisateur\n * final. Absent/'PHYSIQUE' = comportement actuel inchangé (Nom/Prénom). */\ninterface InpiComparisonConfigSdk {\n personType?: 'PHYSIQUE' | 'MORALE';\n personReferenceNodeId?: string;\n personFirstNameField?: string;\n personLastNameField?: string;\n /** Mode MORALE uniquement : champ (du même nœud source) contenant le SIREN saisi. */\n personSirenField?: string;\n compareTargets?: Array<'beneficiairesEffectifs' | 'mandataires'>;\n compareBirthDate?: boolean;\n personBirthDateField?: string;\n}\n\ninterface VerificationResponsePayload {\n isVerified: boolean;\n status: VerificationStatus;\n message?: string;\n errorCode?: string;\n inpiData?: InpiVerificationData;\n}\n\n// Data needed to render the error screens after API response\ninterface ErrorScreenData {\n // person_mismatch\n submittedLastName: string;\n submittedFirstName: string;\n /** RL personne morale (personType: MORALE) : SIREN saisi par le délégataire. */\n submittedSiren?: string;\n mandataires: InpiMandataire[];\n beneficiairesEffectifs: Array<{ nom?: string; prenoms?: string[] }>;\n compareTargets: string[];\n personNodeId: string; // for \"Corriger ma saisie\" navigation\n // Dénomination sociale de la société cible (message de rejet, ticket codes INPI)\n targetDenomination?: string;\n // not_found / invalid_input\n siren: string;\n sirenNodeId: string; // for \"Corriger ma saisie\" navigation\n // Real registry the data came from — undefined when neither RNE nor RNA found anything.\n source?: 'RNE' | 'RNA';\n // True when both RNE and RNA were tried and neither found the entity.\n isDoubleNotFound?: boolean;\n /** Le registre n'a pas été interrogé : aucune valeur de référence lisible. */\n isValueMissing?: boolean;\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 /** Navigate to a specific journey node by ID (used for \"Corriger ma saisie\") */\n onNavigateToNode?: (nodeId: string) => void;\n}\n\n// ─── Helpers ──────────────────────────────────────────────────────────────────\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 STANDARD_FIELD_ALIASES: Record<string, string[]> = {\n prenom: ['firstName', 'first_name', 'prenom'],\n nom: ['lastName', 'last_name', 'surname', 'familyName', 'nom'],\n date_naissance: ['birthDate', 'birth_date', 'dateOfBirth', 'date_naissance'],\n // Champs d'un nœud identity-legal-rep (RL) : la clé de config (builder) diffère\n // de la clé réellement soumise par LegalRepFields — sans cet alias, la\n // résolution échouait silencieusement dès qu'un nœud identity-legal-rep était\n // choisi comme \"Nœud source Nom/Prénom\" (compareTargets ne trouvait jamais la\n // valeur, causant un person_mismatch systématique).\n legalRepresentativePrenom: ['legalRepresentativeFirstName', 'legalRepresentativePrenom'],\n legalRepresentativeNom: ['legalRepresentativeLastName', 'legalRepresentativeNom'],\n};\n\nconst normalizeReferenceField = (field?: string): 'siren' | 'siret' | undefined => {\n if (!field) return undefined;\n const n = field.toLowerCase().replace(/[\\s_.-]/g, '');\n if (n.includes('siret')) return 'siret';\n if (n.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 resolveFieldValue = (nodeInput: any, userInputFlat: any, keys: string[]): string | undefined => {\n for (const key of keys) {\n const candidate =\n nodeInput?.[key] ??\n nodeInput?.customFormData?.[key] ??\n userInputFlat?.customFormData?.[key] ??\n userInputFlat?.[key];\n if (candidate !== undefined && candidate !== null && `${candidate}`.trim() !== '') {\n return String(candidate);\n }\n }\n return undefined;\n};\n\n/** Clés désignant le numéro d'un tiers, jamais celui de la société vérifiée. */\nconst THIRD_PARTY_KEY_MARKERS = ['legalrepresentative', 'representantlegal', 'mandataire', 'beneficiaire'];\n\nconst normalizeKeyName = (key: string): string => key.toLowerCase().replace(/[\\s_.\\-]/g, '');\n\n/**\n * Cherche une valeur dont le *nom de clé* désigne le champ recherché.\n *\n * Un formulaire personnalisé ne stocke jamais sous la clé canonique `siren` :\n * il écrit sous une clé dérivée du label (\"N° de SIREN\" → \"n_de_siren\") et,\n * pour la rétrocompatibilité, sous l'identifiant technique du champ\n * (\"custom-field-1779…\"). Ni l'une ni l'autre ne figure dans FIELD_ALIASES, qui\n * ne connaît que des noms canoniques : la résolution nominale échouait donc pour\n * tout formulaire personnalisé, et seule l'heuristique de repli — « n'importe\n * quelle suite de 9 chiffres » — rattrapait le cas, au risque d'envoyer au\n * registre le premier nombre venu (numéro de compte, référence interne).\n *\n * On reconnaît ici la clé par son nom, comme le fait déjà la configuration côté\n * builder (`normalizeReferenceField`), en écartant les numéros d'un tiers.\n */\nconst findValueByKeyName = (\n sources: Array<Record<string, unknown> | undefined>,\n referenceField: 'siren' | 'siret',\n): string | undefined => {\n for (const source of sources) {\n if (!source || typeof source !== 'object') continue;\n for (const [key, value] of Object.entries(source)) {\n if (typeof value !== 'string' && typeof value !== 'number') continue;\n if (`${value}`.trim() === '') continue;\n const normalized = normalizeKeyName(key);\n if (!normalized.includes(referenceField)) continue;\n if (THIRD_PARTY_KEY_MARKERS.some(marker => normalized.includes(marker))) continue;\n return String(value);\n }\n }\n return undefined;\n};\n\nconst expandFieldKey = (key: string): string[] => [key, ...(STANDARD_FIELD_ALIASES[key] ?? [])];\n\n/**\n * Clés (clé aplatie dérivée du label + id du champ custom) des champs du nœud\n * `nodeId` — et lui seul — qui correspondent au type recherché (siren/siret).\n *\n * Sans ce filtrage par nœud, la résolution retombe sur une recherche globale\n * par nom de clé canonique (`findValueByKeyName` / repli 9-14 chiffres) qui\n * ne sait pas distinguer deux nœuds ayant chacun un champ SIREN : un nœud\n * \"Identification de la société mère\" (champ \"SIREN\" → clé `siren`) a ainsi\n * capté la résolution d'un nœud \"Votre entreprise\" (champ \"N° de SIREN\" →\n * clé `n_de_siren`) configuré comme référence, car `siren` matchait en\n * premier la clé canonique — l'appel INPI est parti sur le mauvais SIREN.\n */\nconst getNodeScopedFieldKeys = (\n templateNodes: SessionTemplateNode[] | undefined,\n nodeId: string,\n referenceField: 'siren' | 'siret',\n): string[] => {\n const node = templateNodes?.find(n => n.id === nodeId);\n const keys: string[] = [];\n for (const field of node?.customFields ?? []) {\n const normalized = normalizeKeyName(labelToKey(field.label));\n if (!normalized.includes(referenceField)) continue;\n if (THIRD_PARTY_KEY_MARKERS.some(marker => normalized.includes(marker))) continue;\n keys.push(labelToKey(field.label), field.id);\n }\n return keys;\n};\n\n// ─── Loader step type ─────────────────────────────────────────────────────────\n\ntype LoaderStep = { title: string; subtitle: string; status: 'pending' | 'active' | 'done' };\n\n// ─── Component ────────────────────────────────────────────────────────────────\n\nconst ExternalVerificationNodeHandler: React.FC<ExternalVerificationNodeHandlerProps> = ({\n node,\n session,\n userInput,\n setUserInput,\n onNext,\n onPrevious,\n onNavigateToNode,\n}) => {\n const { t } = useTranslation('translation', { i18n: sdkI18n });\n\n const nodeData = node as any;\n const apiType = String(nodeData.targetApi || 'INSEE');\n const isInpiRbe = apiType === 'INPI_RBE';\n // Paramétrable depuis le journey builder (panneau \"Configuration de la base\n // externe\"), par nœud. Absent/true = comportement actuel inchangé.\n const allowContinueOnFailure = nodeData.allowContinueOnFailure !== false;\n\n const [phase, setPhase] = useState<'loading' | 'success' | 'mismatch' | 'not_found' | 'error'>('loading');\n const [errorScreenData, setErrorScreenData] = useState<ErrorScreenData | null>(null);\n\n const [steps, setSteps] = useState<LoaderStep[]>(() => {\n if (isInpiRbe) {\n return [\n {\n // Générique : le backend interroge le RNE puis, si besoin, le RNA en\n // fallback (associations) via un seul appel — la source réelle n'est\n // connue qu'à la réponse finale (cf. inpiData.source).\n title: t('inpi_verification.step1', 'Vérification du SIREN auprès des registres officiels'),\n subtitle: t('inpi_verification.step1_sub', 'Connexion aux registres RNE et RNA'),\n status: 'active',\n },\n {\n title: t('inpi_verification.step2', \"Récupération des données d'identité\"),\n subtitle: t('inpi_verification.step2_sub', 'Lecture des informations légales et des responsables'),\n status: 'pending',\n },\n {\n title: t('inpi_verification.step3', 'Comparaison avec les données saisies'),\n subtitle: t('inpi_verification.step3_sub', 'Vérification de la concordance des informations'),\n status: 'pending',\n },\n ];\n }\n return [{\n title: t('verification_node.verifying_title', 'Vérification en cours…'),\n subtitle: t('verification_node.verifying_desc', 'Connexion au service externe'),\n status: 'active',\n }];\n });\n\n const advanceStep = (index: number) => {\n setSteps(prev =>\n prev.map((s, i) => {\n if (i < index) return { ...s, status: 'done' };\n if (i === index) return { ...s, status: 'active' };\n return s;\n }),\n );\n };\n\n const completeSteps = () => setSteps(prev => prev.map(s => ({ ...s, status: 'done' })));\n\n useEffect(() => {\n const abortController = new AbortController();\n\n const run = async () => {\n let result: VerificationResponsePayload = {\n isVerified: false,\n status: 'external_error',\n message: 'Verification did not run.',\n };\n let referenceField: 'siren' | 'siret' | undefined;\n let referenceValueMasked = '';\n let resolvedReferenceValue = '';\n const referenceNodeId = String(nodeData.referenceNodeId || '');\n const referenceVariable = String(nodeData.referenceVariable || '');\n let submittedFirstName = '';\n let submittedLastName = '';\n let submittedSiren = '';\n\n try {\n if (!session?.id) throw new Error('Session ID is missing');\n\n referenceField = normalizeReferenceField(\n String(nodeData.referenceField || referenceVariable || ''),\n );\n\n if (!referenceNodeId || !referenceField) {\n result = {\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 nodeScopedKeys = getNodeScopedFieldKeys(\n session?.template?.nodes,\n referenceNodeId,\n referenceField,\n );\n const lookupKeys = Array.from(\n new Set(\n [...nodeScopedKeys, referenceVariable, referenceField, ...FIELD_ALIASES[referenceField]].filter(\n Boolean,\n ),\n ),\n );\n\n let referenceValue = resolveFieldValue(nodeInput, userInputFlat, lookupKeys);\n\n // 2e passe : la clé porte le nom du champ sans être canonique\n // (cas de tout formulaire personnalisé).\n if (!referenceValue) {\n referenceValue = findValueByKeyName(\n [nodeInput, nodeInput?.customFormData, userInputFlat?.customFormData, userInputFlat],\n referenceField,\n );\n }\n\n // 3e passe, heuristique : aucune clé ne nomme le champ, on\n // retient une valeur au bon format. Volontairement en dernier,\n // elle ne distingue pas un SIREN d'un autre nombre à 9 chiffres.\n if (!referenceValue) {\n const allCustomFields = {\n ...(userInputFlat || {}),\n ...(userInputFlat?.customFormData || {}),\n ...(nodeInput?.customFormData || {}),\n ...(nodeInput || {}),\n };\n for (const [, value] of Object.entries(allCustomFields)) {\n if (typeof value !== 'string' && typeof value !== 'number') continue;\n const str = String(value).replace(/\\s+/g, '');\n if (referenceField === 'siren' && /^\\d{9}$/.test(str)) { referenceValue = str; break; }\n if (referenceField === 'siret' && /^\\d{14}$/.test(str)) { referenceValue = str; break; }\n }\n }\n\n if (!referenceValue) {\n // Chemin muet jusqu'ici : ni appel réseau, ni trace serveur.\n // On journalise les noms de clés disponibles — jamais leurs\n // valeurs, qui sont des données personnelles.\n console.warn(\n '[ExternalVerification] Aucune valeur %s trouvée pour le nœud source %s. Clés disponibles : %s',\n referenceField,\n referenceNodeId,\n Object.keys({ ...(userInputFlat || {}), ...(userInputFlat?.customFormData || {}), ...(nodeInput || {}) }).join(', '),\n );\n result = {\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 resolvedReferenceValue = referenceValue;\n referenceValueMasked = maskReferenceValue(referenceValue);\n\n let comparisonConfig: Record<string, unknown> | undefined;\n if (isInpiRbe && nodeData.comparisonConfig?.personReferenceNodeId) {\n const cfg = nodeData.comparisonConfig as InpiComparisonConfigSdk;\n const personNodeInput = (userInput as any)[cfg.personReferenceNodeId!] ?? {};\n const flat = userInput as any;\n const isPersonneMorale = cfg.personType === 'MORALE';\n\n if (isPersonneMorale) {\n // RL personne morale (délégation de pouvoir) : le SIREN saisi\n // remplace Nom/Prénom — jamais les deux en même temps.\n const sirenKeys = expandFieldKey(cfg.personSirenField ?? '').filter(Boolean);\n submittedSiren = resolveFieldValue(personNodeInput, flat, sirenKeys) ?? '';\n\n if (submittedSiren) {\n comparisonConfig = {\n personType: 'MORALE',\n siren: submittedSiren,\n // Un RBE est toujours une personne physique en droit\n // français : forcé à 'mandataires' quel que soit le\n // contenu de cfg.compareTargets (défense en profondeur).\n compareTargets: ['mandataires'],\n };\n }\n } else {\n const firstNameKeys = expandFieldKey(cfg.personFirstNameField ?? '').filter(Boolean);\n const lastNameKeys = expandFieldKey(cfg.personLastNameField ?? '').filter(Boolean);\n const birthDateKeys = cfg.personBirthDateField\n ? expandFieldKey(cfg.personBirthDateField).filter(Boolean)\n : [];\n\n submittedFirstName = resolveFieldValue(personNodeInput, flat, firstNameKeys) ?? '';\n submittedLastName = resolveFieldValue(personNodeInput, flat, lastNameKeys) ?? '';\n const dateOfBirth = cfg.compareBirthDate && birthDateKeys.length\n ? resolveFieldValue(personNodeInput, flat, birthDateKeys)\n : undefined;\n\n if (submittedFirstName && submittedLastName) {\n comparisonConfig = {\n firstName: submittedFirstName,\n lastName: submittedLastName,\n compareTargets: cfg.compareTargets ?? ['mandataires'],\n ...(dateOfBirth ? { dateOfBirth } : {}),\n };\n }\n }\n }\n\n if (isInpiRbe) advanceStep(1);\n\n try {\n const response = await apiService.post(\n `/session/sdk/${session.id}/verify-external/${node.id}`,\n {\n apiType,\n referenceValue,\n referenceField,\n enableRnaFallback: isInpiRbe && nodeData.rnaFallbackEnabled === true,\n enableInseeFallback: isInpiRbe && nodeData.enableInseeFallback === true,\n ...(comparisonConfig ? { comparisonConfig } : {}),\n },\n { signal: abortController.signal },\n );\n\n if (isInpiRbe) advanceStep(2);\n await new Promise(r => setTimeout(r, 600));\n\n const res = response.data?.data as VerificationResponsePayload | undefined;\n if (res && typeof res.isVerified === 'boolean') {\n result = res;\n }\n } catch (apiErr: any) {\n if (abortController.signal.aborted) return;\n if (isInpiRbe) advanceStep(2);\n const apiResult = apiErr?.response?.data?.data as VerificationResponsePayload | undefined;\n if (apiResult && typeof apiResult.isVerified === 'boolean') {\n result = apiResult;\n } else {\n result = {\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 result = {\n isVerified: false,\n status: 'external_error',\n message: 'Unexpected error during verification.',\n errorCode: 'UNEXPECTED_ERROR',\n };\n }\n\n if (abortController.signal.aborted) return;\n\n completeSteps();\n\n setUserInput(prev => ({\n ...prev,\n [node.id]: {\n isVerified: result.isVerified,\n apiType,\n referenceField,\n referenceValueMasked,\n verifiedAt: new Date().toISOString(),\n status: result.status,\n errorCode: result.errorCode,\n message: result.message,\n inpiData: result.inpiData,\n hasError: result.status !== 'ok' && result.status !== 'not_found' && result.status !== 'person_mismatch',\n },\n } as any));\n\n if (result.status === 'person_mismatch') {\n const inpi = result.inpiData;\n const cfg = nodeData.comparisonConfig as InpiComparisonConfigSdk | undefined;\n const isPersonneMorale = cfg?.personType === 'MORALE';\n setErrorScreenData({\n submittedLastName,\n submittedFirstName,\n submittedSiren: isPersonneMorale ? submittedSiren : undefined,\n // En mode personne morale, seuls les mandataires personne morale ont\n // un sens (un RBE est toujours une personne physique) ; en mode\n // physique, tous les mandataires sont listés : une société\n // mandataire (ex. holding présidente) explique pourquoi la\n // personne saisie n'apparaît pas en direct au RNE.\n mandataires: (inpi?.mandataires ?? []).filter(m =>\n isPersonneMorale ? m.type === 'personne_morale' : true,\n ),\n beneficiairesEffectifs: inpi?.beneficiairesEffectifs ?? [],\n compareTargets: isPersonneMorale ? ['mandataires'] : (cfg?.compareTargets ?? ['mandataires']),\n personNodeId: cfg?.personReferenceNodeId ?? '',\n targetDenomination: inpi?.identite?.denomination,\n siren: resolvedReferenceValue,\n sirenNodeId: referenceNodeId,\n source: inpi?.source,\n });\n setPhase('mismatch');\n\n } else if (result.status === 'not_found' || result.status === 'invalid_input') {\n setErrorScreenData({\n submittedLastName: '',\n submittedFirstName: '',\n mandataires: [],\n beneficiairesEffectifs: [],\n compareTargets: [],\n personNodeId: '',\n siren: resolvedReferenceValue,\n sirenNodeId: referenceNodeId,\n isDoubleNotFound: result.errorCode === 'NOT_FOUND_RNE_RNA',\n isValueMissing: result.errorCode === 'REFERENCE_VALUE_NOT_FOUND',\n });\n setPhase('not_found');\n\n } else if (result.isVerified || result.status === 'ok') {\n setPhase('success');\n setTimeout(onNext, 1200);\n\n } else {\n // config_error / external_error / any other non-blocking technical\n // failure (missing API key, registry down…) — never a fault of the\n // end user. The backend already maps these to a 'done' analysisrun,\n // never 'ai_rejected' (reviewed manually in backoffice), so the SDK\n // stays non-blocking here too — but must never claim success\n // (config_error used to show the success screen) and must never\n // leave a blank screen (this phase previously had no render block).\n setPhase('error');\n setTimeout(onNext, 1200);\n }\n };\n\n run();\n return () => abortController.abort();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // ─── Navigation helper ────────────────────────────────────────────────────\n\n const handleCorrect = () => {\n if (phase === 'mismatch' && errorScreenData?.personNodeId && onNavigateToNode) {\n onNavigateToNode(errorScreenData.personNodeId);\n } else if (phase === 'not_found' && errorScreenData?.sirenNodeId && onNavigateToNode) {\n onNavigateToNode(errorScreenData.sirenNodeId);\n } else {\n onPrevious();\n }\n };\n\n // ─── Loading phase ─────────────────────────────────────────────────────────\n\n if (phase === 'loading') {\n return (\n <div className=\"flex flex-col justify-between h-full w-full\">\n <div className=\"flex-1 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 <div className=\"text-center space-y-4\">\n <Title className=\"text-xl md:text-2xl lg:text-3xl\">\n {t('verification_node.verifying_title', 'Vérification en cours…')}\n </Title>\n <Subtitle className=\"text-sm text-gray-600 leading-relaxed\">\n {t('verification_node.verifying_desc', 'Nous vérifions vos informations. Cela peut prendre quelques instants.')}\n </Subtitle>\n </div>\n <div className=\"w-full flex justify-center\">\n <div className=\"space-y-5\">\n {steps.map((step, index) => (\n <div key={index} className=\"flex items-start\">\n <div className=\"mr-4 mt-1 shrink-0\">\n {step.status === 'done' ? (\n <div className=\"flex items-center justify-center w-6 h-6 rounded-full bg-[#11E5C5] text-white text-xs\">✓</div>\n ) : step.status === 'active' ? (\n <div className=\"w-6 h-6 rounded-full border-2 border-t-[#11E5C5] border-r-[#11E5C5] border-b-[#11E5C5] border-l-transparent animate-spin\" />\n ) : (\n <div className=\"w-6 h-6 rounded-full border-2 border-gray-300\" />\n )}\n </div>\n <div className=\"flex-1 min-w-0\">\n <p className=\"font-medium text-[#3C3C40] text-sm\">{step.title}</p>\n <p className=\"text-xs text-gray-500 mt-1\">{step.subtitle}</p>\n </div>\n </div>\n ))}\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n }\n\n // ─── Success phase ─────────────────────────────────────────────────────────\n\n if (phase === 'success') {\n return (\n <div className=\"flex flex-col items-center justify-center h-full px-6 py-8 text-center space-y-4\">\n <img src={checkIcon} alt=\"success\" className=\"w-24 h-24\" />\n <h3 className=\"text-[#3C3C40] font-poppins text-xl font-bold\">\n {t('inpi_verification.success_title', 'Vérification réussie')}\n </h3>\n <p className=\"text-gray-500 text-sm\">\n {t('inpi_verification.success_desc', \"Passage à l'étape suivante…\")}\n </p>\n </div>\n );\n }\n\n // ─── Technical error phase (config_error / external_error) ────────────────\n //\n // Non-blocking (the flow already auto-advances via the useEffect above) but\n // must never look like a success — neutral wording, no checkmark.\n\n if (phase === 'error') {\n return (\n <div className=\"flex flex-col items-center justify-center h-full px-6 py-8 text-center space-y-4\">\n <div className=\"w-16 h-16 bg-gray-100 rounded-full flex items-center justify-center\">\n <span className=\"text-gray-500 text-2xl font-bold\">!</span>\n </div>\n <h3 className=\"text-[#3C3C40] font-poppins text-xl font-bold\">\n {t('inpi_verification.technical_error_title', 'Vérification en cours de traitement')}\n </h3>\n <p className=\"text-gray-500 text-sm\">\n {t(\n 'inpi_verification.technical_error_desc',\n 'Un problème technique est survenu. Votre dossier sera examiné manuellement.',\n )}\n </p>\n </div>\n );\n }\n\n // ─── Mismatch phase ────────────────────────────────────────────────────────\n\n if (phase === 'mismatch') {\n const d = errorScreenData;\n const showBeneficiaires =\n d?.compareTargets?.includes('beneficiairesEffectifs') && (d?.beneficiairesEffectifs?.length ?? 0) > 0;\n const showMandataires =\n (!d?.compareTargets?.length || d?.compareTargets?.includes('mandataires')) &&\n (d?.mandataires?.length ?? 0) > 0;\n const isRna = d?.source === 'RNA';\n const personListLabel = isRna\n ? t('inpi_verification.dirigeants_label', 'Dirigeants renseignés au RNA')\n : d?.compareTargets?.includes('beneficiairesEffectifs') && !d?.compareTargets?.includes('mandataires')\n ? t('inpi_verification.beneficiaires_label', 'Bénéficiaires effectifs renseignés au RNE')\n : d?.compareTargets?.includes('mandataires') && !d?.compareTargets?.includes('beneficiairesEffectifs')\n ? t('inpi_verification.mandataires_label', 'Mandataires renseignés au RNE')\n : t('inpi_verification.persons_label', 'Personnes renseignées au RNE');\n\n return (\n <div className=\"flex flex-col justify-between h-full w-full\">\n <div className=\"flex-1 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\n {/* Icon */}\n <div className=\"text-center\">\n <div className=\"mx-auto w-16 h-16 bg-red-100 rounded-full flex items-center justify-center mb-4\">\n <div className=\"w-8 h-8 bg-red-500 rounded-full flex items-center justify-center\">\n <span className=\"text-white text-lg\">✕</span>\n </div>\n </div>\n </div>\n\n {/* Header */}\n <div className=\"text-center space-y-4\">\n <Title className=\"text-xl md:text-2xl lg:text-3xl text-red-600\">\n {t('inpi_verification.mismatch_title', 'Identité non confirmée')}\n </Title>\n <Subtitle className=\"text-sm text-gray-600 leading-relaxed\">\n {d?.targetDenomination\n ? t(\n 'inpi_verification.mismatch_desc_denomination',\n `Le responsable légal saisi ne fait pas partie des responsables légaux ou bénéficiaires effectifs de la société ${d.targetDenomination}`,\n )\n : t(\n 'inpi_verification.mismatch_desc',\n \"Les informations saisies ne correspondent à aucune personne déclarée à l'INPI pour cette société.\",\n )}\n </Subtitle>\n </div>\n\n {/* Submitted identity card */}\n {d && (d.submittedLastName || d.submittedFirstName || d.submittedSiren) && (\n <div className=\"bg-red-50 border border-red-200 rounded-lg p-4\">\n <h3 className=\"font-medium text-red-900 mb-2\">\n {t('errors.problems_detected', 'Problèmes détectés')}\n </h3>\n <div className=\"text-sm text-red-800 space-y-1\">\n {d.submittedSiren && (\n <p>\n {t('inpi_verification.submitted_siren', 'SIREN saisi')}\n {' : '}\n <strong>{d.submittedSiren}</strong>\n </p>\n )}\n {d.submittedLastName && (\n <p>\n {t('inpi_verification.submitted_last_name', 'Nom saisi')}\n {' : '}\n <strong>{d.submittedLastName}</strong>\n </p>\n )}\n {d.submittedFirstName && (\n <p>\n {t('inpi_verification.submitted_first_name', 'Prénom saisi')}\n {' : '}\n <strong>{d.submittedFirstName}</strong>\n </p>\n )}\n </div>\n </div>\n )}\n\n {/* INPI persons card */}\n {(showMandataires || showBeneficiaires) && (\n <div className=\"bg-blue-50 border border-blue-200 rounded-lg p-4\">\n <h3 className=\"font-medium text-blue-900 mb-2\">{personListLabel}</h3>\n <div className=\"text-sm text-blue-800 space-y-1\">\n {showMandataires && d!.mandataires.map((m, i) => (\n <p key={`m-${i}`}>\n {m.type === 'personne_morale' ? (\n <>\n <strong>{m.denominationSociale ?? '—'}</strong>\n {m.siren && ` (SIREN ${m.siren})`}\n </>\n ) : (\n <>\n <strong>{m.nom ?? '—'}</strong>\n {(m.prenoms ?? []).length > 0 && ` ${m.prenoms!.join(' ')}`}\n </>\n )}\n </p>\n ))}\n {showBeneficiaires && d!.beneficiairesEffectifs.map((b, i) => (\n <p key={`b-${i}`}>\n <strong>{b.nom ?? '—'}</strong>\n {(b.prenoms ?? []).length > 0 && ` ${b.prenoms!.join(' ')}`}\n </p>\n ))}\n </div>\n </div>\n )}\n\n </div>\n </div>\n\n {/* Footer */}\n <div className=\"sticky bottom-0 md:static bg-white border-t md:border-t-0 p-4 md:p-0 md:pb-8\">\n <div className=\"w-full max-w-md mx-auto\">\n <div className=\"flex flex-col space-y-3 md:hidden\">\n <Button variant=\"secondary\" onClick={handleCorrect} data-cy=\"inpi-mismatch-go-back\">\n {t('inpi_verification.mismatch_correct', 'Corriger ma saisie')}\n </Button>\n {allowContinueOnFailure && (\n <Button onClick={onNext} data-cy=\"inpi-mismatch-continue\">\n {t('inpi_verification.mismatch_continue', 'Continuer quand même')}\n </Button>\n )}\n </div>\n <div className=\"hidden md:flex justify-center space-x-3\">\n <Button variant=\"secondary\" onClick={handleCorrect} data-cy=\"inpi-mismatch-go-back\">\n {t('inpi_verification.mismatch_correct', 'Corriger ma saisie')}\n </Button>\n {allowContinueOnFailure && (\n <Button onClick={onNext} data-cy=\"inpi-mismatch-continue\">\n {t('inpi_verification.mismatch_continue', 'Continuer quand même')}\n </Button>\n )}\n </div>\n </div>\n </div>\n </div>\n );\n }\n\n // ─── Not found phase ───────────────────────────────────────────────────────\n\n if (phase === 'not_found') {\n const d = errorScreenData;\n return (\n <div className=\"flex flex-col justify-between h-full w-full\">\n <div className=\"flex-1 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\n {/* Icon */}\n <div className=\"text-center\">\n <div className=\"mx-auto w-16 h-16 bg-orange-100 rounded-full flex items-center justify-center mb-4\">\n <div className=\"w-8 h-8 bg-orange-500 rounded-full flex items-center justify-center\">\n <span className=\"text-white text-lg font-bold\">!</span>\n </div>\n </div>\n </div>\n\n {/* Header — quand aucune valeur n'a pu être lue, le registre\n n'a jamais été interrogé : le dire, plutôt que d'affirmer\n que le numéro y est inconnu et de rejeter le dossier. */}\n <div className=\"text-center space-y-4\">\n <Title className=\"text-xl md:text-2xl lg:text-3xl text-orange-600\">\n {d?.isValueMissing\n ? t('inpi_verification.missing_value_title', 'Numéro non renseigné')\n : t('inpi_verification.not_found_title', 'Société introuvable')}\n </Title>\n <Subtitle className=\"text-sm text-gray-600 leading-relaxed\">\n {d?.isValueMissing\n ? t(\n 'inpi_verification.missing_value_desc',\n \"Aucun numéro SIREN ou SIRET n'a été trouvé dans les informations saisies : la vérification n'a pas pu être lancée.\",\n )\n : t(\n 'inpi_verification.not_found_desc',\n \"Le numéro saisi ne correspond à aucune société enregistrée dans le Registre National des Entreprises.\",\n )}\n </Subtitle>\n {/* Signal de rejet explicite — une société introuvable n'est plus\n traitée comme un succès silencieux (code 2.6). */}\n {!d?.isValueMissing && (\n <span className=\"inline-block rounded-full bg-red-100 px-3 py-1 text-xs font-semibold text-red-700\">\n {t('inpi_verification.not_found_rejected_label', 'Dossier rejeté')}\n </span>\n )}\n </div>\n\n {/* Details card */}\n <div className=\"bg-orange-50 border border-orange-200 rounded-lg p-4\">\n <h3 className=\"font-medium text-orange-900 mb-2\">\n {t('errors.problems_detected', 'Problèmes détectés')}\n </h3>\n <div className=\"text-sm text-orange-800 space-y-1\">\n {d?.siren && (\n <p>\n {t('inpi_verification.siren_label', 'SIREN')}\n {' : '}\n <strong>{d.siren}</strong>\n </p>\n )}\n <p>\n {d?.isValueMissing\n ? t(\n 'inpi_verification.missing_value_detail',\n \"Le champ SIREN/SIRET du formulaire est vide ou n'a pas pu être lu.\",\n )\n : d?.isDoubleNotFound\n ? t(\n 'inpi_verification.not_found_detail_rne_rna',\n \"Aucune société ni association trouvée, ni dans le Registre National des Entreprises (RNE), ni dans le Répertoire National des Associations (RNA).\",\n )\n : t('inpi_verification.not_found_detail', 'Aucune société trouvée dans le Registre National des Entreprises.')}\n </p>\n </div>\n </div>\n\n </div>\n </div>\n\n {/* Footer */}\n <div className=\"sticky bottom-0 md:static bg-white border-t md:border-t-0 p-4 md:p-0 md:pb-8\">\n <div className=\"w-full max-w-md mx-auto\">\n <div className=\"flex flex-col space-y-3 md:hidden\">\n <Button variant=\"secondary\" onClick={handleCorrect} data-cy=\"inpi-not-found-go-back\">\n {t('inpi_verification.mismatch_correct', 'Corriger ma saisie')}\n </Button>\n {allowContinueOnFailure && (\n <Button onClick={onNext} data-cy=\"inpi-not-found-continue\">\n {t('inpi_verification.mismatch_continue', 'Continuer quand même')}\n </Button>\n )}\n </div>\n <div className=\"hidden md:flex justify-center space-x-3\">\n <Button variant=\"secondary\" onClick={handleCorrect} data-cy=\"inpi-not-found-go-back\">\n {t('inpi_verification.mismatch_correct', 'Corriger ma saisie')}\n </Button>\n {allowContinueOnFailure && (\n <Button onClick={onNext} data-cy=\"inpi-not-found-continue\">\n {t('inpi_verification.mismatch_continue', 'Continuer quand même')}\n </Button>\n )}\n </div>\n </div>\n </div>\n </div>\n );\n }\n\n // ─── Error / fallback ─────────────────────────────────────────────────────\n\n return (\n <LoadingState\n message={t('verification_node.verifying_title', 'Vérification en cours…')}\n subtitle={t('verification_node.verifying_desc', 'Vérification en cours…')}\n />\n );\n};\n\nexport default ExternalVerificationNodeHandler;\n"],"names":["_jsx","_jsxs","_Fragment"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TemplateNodeRenderer.js","sources":["../../../../../src/components/template/TemplateNodeRenderer.tsx"],"sourcesContent":["import ComplementaryMandateNodeHandler from './ComplementaryMandateNodeHandler';\nimport React, { useMemo } from \"react\";\nimport Selfie from \"../session/Selfie\";\nimport VideoWorkInProgress from \"../session/VideoWorkInProgress\";\nimport DocumentCheck, { NodeIdentityControl } from \"../session/DocumentCheck\";\nimport DocumentCollection, {\n DocumentTypeSide,\n NodeDocumentCollection,\n} from \"../document-collection/DocumentCollection\";\nimport EndFlow from \"../session/EndFlow\";\nimport LoadingState from \"../states/LoadingState\";\nimport JDDWorkInProgress from \"../jdi/JDDWorkInProgress\";\nimport { getOrderedJourneySteps, getRunPrefillData } from \"../../services/sessionService\";\nimport { isSessionFinished } from \"../../utils/sessionStatus\";\nimport type { SessionData, stepObject } from \"../../types/session\";\nimport type { UserInput } from \"../../types/userInput\";\nimport type { ContactInfo } from \"../../types/contactInfo\";\nimport UserInputForm from \"../session/UserInputForm\";\nimport { useI18n } from \"../../hooks/useI18n\";\nimport ConditionNodeHandler from \"./ConditionNodeHandler\";\nimport SignatureElectronic from \"../signature-electronic/SignatureElectronic\";\nimport ExternalVerificationNodeHandler from \"./ExternalVerificationNodeHandler\";\nimport PdfGeneration from \"../session/PdfGeneration\";\nimport LegalConsentNode from \"../legal-consent/LegalConsentNode\";\n\ninterface TemplateNodeRendererProps {\n session: SessionData;\n sessionId: string;\n stepObject: stepObject;\n stepHistory: number[];\n templateIndex: number;\n onContinueOnPC: () => void;\n userInput: UserInput;\n setUserInput: React.Dispatch<React.SetStateAction<UserInput>>;\n contactInfo: ContactInfo;\n setContactInfo: React.Dispatch<React.SetStateAction<ContactInfo>>;\n isMobileTemplate: boolean;\n}\n\nconst TemplateNodeRenderer: React.FC<TemplateNodeRendererProps> = ({\n session,\n sessionId,\n stepObject,\n stepHistory,\n templateIndex,\n onContinueOnPC,\n userInput,\n setUserInput,\n contactInfo,\n setContactInfo,\n isMobileTemplate,\n}) => {\n const { t } = useI18n();\n\n if (!session?.template) {\n console.error(t(\"template.error.console_no_template\"));\n return (\n <div className=\"flex flex-col items-center justify-center h-full p-4 text-center\">\n <div className=\"text-red-500 text-4xl mb-4\">⚠️</div>\n <h2 className=\"text-xl font-bold text-red-600 mb-2\">\n {t(\"template.error.configuration\")}\n </h2>\n <p className=\"text-gray-600 mb-4\">{t(\"template.error.no_template\")}</p>\n </div>\n );\n }\n\n // Check if session is already finished before rendering nodes (raw \"ended\"\n // or a consolidated result status written by the backend once terminal).\n if (isSessionFinished(session.status)) {\n return (\n <EndFlow\n sessionId={sessionId}\n sessionStatus={session.status}\n callbackURL={session.callbackURL}\n compliantCase={session.template?.endScreenConfig?.compliant}\n nonCompliantCase={session.template?.endScreenConfig?.nonCompliant}\n alreadyFinished={session.status !== \"ended\"}\n />\n );\n }\n\n // Use getOrderedWorkflowSteps to get sorted and filtered nodes\n const templateNodes = useMemo(\n () => getOrderedJourneySteps(session.template),\n [session.template],\n );\n\n // Check if index is valid\n if (templateNodes.length === 0) {\n console.warn(\"No valid template nodes found after filtering\");\n return (\n <EndFlow\n sessionId={sessionId}\n sessionStatus={session?.status}\n callbackURL={session?.callbackURL}\n />\n );\n }\n\n if (templateIndex < 0 || templateIndex >= templateNodes.length) {\n console.warn(\n `Invalid template index: ${templateIndex}, max index: ${templateNodes.length - 1\n }`,\n );\n\n // If we're beyond the maximum index, it means we've completed all nodes\n if (templateIndex >= templateNodes.length) {\n return (\n <EndFlow\n sessionId={sessionId}\n sessionStatus={session?.status}\n callbackURL={session?.callbackURL}\n compliantCase={session?.template?.endScreenConfig?.compliant}\n nonCompliantCase={session?.template?.endScreenConfig?.nonCompliant}\n />\n );\n }\n\n // If index is negative, redirect to start\n if (templateIndex < 0) {\n setTimeout(() => stepObject.setStep(0), 0);\n return <LoadingState message={t(\"loading.step\")} subtitle=\"\" />;\n }\n }\n\n // At this point, we should have a valid node\n const node = templateNodes[templateIndex];\n if (!node) {\n console.error(\n `Node at index ${templateIndex} is undefined. Available nodes:`,\n templateNodes,\n );\n return (\n <div className=\"flex flex-col items-center justify-center h-full p-4 text-center\">\n <div className=\"text-red-500 text-4xl mb-4\">⚠️</div>\n <h2 className=\"text-xl font-bold text-red-600 mb-2\">\n {t(\"template.error.render\")}\n </h2>\n <p className=\"text-gray-600 mb-4\">\n {t(\"template.error.node_not_found\")}\n </p>\n <button\n className=\"px-4 py-2 bg-primary text-white rounded hover:bg-primary-dark transition-colors\"\n onClick={() => stepObject.setStep(0)}\n >\n {t(\"template.buttons.restart\")}\n </button>\n </div>\n );\n }\n\n switch (node.type) {\n case \"end\":\n console.log(\"📄 Rendering EndFlow component\");\n return (\n <EndFlow\n sessionId={sessionId}\n sessionStatus={session?.status}\n callbackURL={session?.callbackURL}\n endNodeId={node.id}\n expectedResult={node.expectedResult}\n compliantCase={session?.template?.endScreenConfig?.compliant}\n nonCompliantCase={session?.template?.endScreenConfig?.nonCompliant}\n />\n );\n\n case \"information-input\": {\n // runIndex = nombre de fois que ce step a déjà été visité dans l'historique\n // (0 = premier passage, 1 = deuxième, …).\n // On compte les occurrences de (templateIndex + 1) dans stepHistory,\n // minus 1 car le step courant est déjà dans l'historique.\n const currentStep = templateIndex + 1;\n const visitCount = stepHistory.filter((s) => s === currentStep).length;\n const runIndex = Math.max(0, visitCount - 1);\n\n // Pré-remplissage multi-ENTITÉS : si _list présent, utiliser _list[runIndex]\n // (ou {} hors borne). L'énumération de plusieurs entités successives passe\n // exclusivement par _list (cf. docs/multi-runs.md).\n // Sans _list : on pré-remplit TOUJOURS depuis le userInput persisté — y compris\n // sur une ré-entrée (boucle condition de correction, retour arrière, bouton\n // \"Corriger ma saisie\"). Une ré-entrée sans _list = corriger les MÊMES données,\n // pas en saisir de nouvelles → on ne doit pas vider le formulaire.\n const hasList = Array.isArray(\n (session.userInput as Record<string, unknown>)?._list,\n );\n let initialUserInput: UserInput;\n if (hasList) {\n const prefill = getRunPrefillData(\n session.userInput as Record<string, unknown>,\n runIndex,\n );\n initialUserInput = (prefill ?? {}) as UserInput;\n } else {\n initialUserInput = userInput;\n }\n return (\n // key={node.id} : remonte le formulaire à chaque changement de nœud, pour\n // qu'il se ré-initialise depuis initialUserInput (comportement \"refresh sans\n // refresh\"). Évite la réutilisation d'instance qui laissait customFormData\n // périmé au retour arrière entre deux nœuds information-input.\n <UserInputForm\n key={node.id}\n stepObject={stepObject}\n node={node}\n template={session.template}\n setUserInput={setUserInput}\n initialUserInput={initialUserInput}\n contactInfo={contactInfo}\n setContactInfo={setContactInfo}\n sessionId={sessionId}\n />\n );\n }\n\n case \"document-collection\": {\n return (\n <DocumentCollection\n key={`doc-collection-${templateIndex}`}\n node={node as NodeDocumentCollection}\n stepObject={stepObject}\n sessionId={sessionId}\n template={session.template}\n onContinueOnPC={onContinueOnPC}\n allowedDocumentTypes={(node.allowedDocumentTypes || []).map(\n (docType: any) => ({\n ...docType,\n side:\n typeof docType.side === \"string\" ||\n typeof docType.side === \"number\"\n ? (docType.side as DocumentTypeSide)\n : undefined,\n }),\n )}\n allowedAddingMethods={node.allowedAddingMethods || [\"download\"]}\n introductionPage={node.introductionPage}\n documentSelection={node.documentSelection}\n allowResubmission={node.allowResubmission}\n maxResubmissionAttempts={node.maxResubmissionAttempts}\n />\n );\n }\n\n case \"document-selection\":\n case \"controle-jdi\": {\n if (!node.requiredDocumentType) {\n console.error(\n \"Missing requiredDocumentType in document-selection node:\",\n node,\n );\n return (\n <div className=\"flex flex-col items-center justify-center h-full p-4 text-center\">\n <div className=\"text-red-500 text-4xl mb-4\">⚠️</div>\n <h2 className=\"text-xl font-bold text-red-600 mb-2\">\n Erreur de configuration\n </h2>\n <p className=\"text-gray-600 mb-4\">\n Le type de document requis n'est pas spécifié dans le template.\n </p>\n <button\n className=\"px-4 py-2 bg-primary text-white rounded hover:bg-primary-dark transition-colors\"\n onClick={() => stepObject.setStep(0)}\n >\n Recommencer\n </button>\n </div>\n );\n }\n\n // Determine if current device is mobile for capture method\n const isMobile =\n /Android|iPhone|iPad|iPod|Opera Mini|IEMobile|WPDesktop/i.test(\n navigator.userAgent,\n );\n\n return (\n <DocumentCheck\n key={`doc-check-${templateIndex}`}\n stepObject={stepObject}\n node={node as NodeIdentityControl}\n sessionId={sessionId}\n documentTypeId={node.requiredDocumentType}\n acceptedCountries={node.acceptedCountries}\n onContinueOnPC={onContinueOnPC}\n isMobileCapture={isMobileTemplate && isMobile}\n allowedAddingMethods={\n node.allowedAddingMethods || [\"download\", \"picture\"]\n }\n template={session.template}\n templateIndex={templateIndex}\n setUserInput={setUserInput}\n />\n );\n // }\n }\n\n case \"biometric-capture\":\n case \"selfie-capture\":\n return (\n <Selfie\n key={`selfie-${templateIndex}`}\n stepObject={stepObject}\n sessionId={sessionId}\n node={node}\n template={session.template}\n />\n );\n\n case \"signature-electronic\":\n return (\n <SignatureElectronic\n key={`signature-${templateIndex}`}\n sessionId={sessionId}\n stepObject={stepObject}\n node={node}\n session={session}\n title={node.title}\n description={node.description}\n // Always pass a stable node identifier so backend can resolve\n // either a static DocuSeal template OR a generated PDF source.\n external_id={node.templateId || node.external_id || node.id}\n fieldMappings={node.fieldMappings}\n userInput={userInput}\n contactInfo={contactInfo}\n />\n );\n\n case \"video-capture\":\n console.log(\"🎥 Rendering Video Work in Progress component\");\n return <VideoWorkInProgress onContinue={onContinueOnPC} />;\n\n case \"jdd\":\n console.log(\"🚧 Rendering JDD Work in Progress component\");\n return <JDDWorkInProgress onContinue={onContinueOnPC} />;\n\n case \"condition\":\n console.debug(\"🔀 Rendering Condition Node Handler component and well\");\n return (\n <ConditionNodeHandler\n node={node}\n session={session}\n templateNodes={templateNodes}\n stepObject={stepObject}\n userInput={userInput}\n contactInfo={contactInfo}\n />\n );\n\n case \"complementary-mandate\":\n return <ComplementaryMandateNodeHandler sessionId={sessionId} nodeId={node.id} onOutcome={outcome => stepObject.goToNextStep(node.id, session.template, outcome)} />;\n\n case \"external-verification\":\n console.debug(\"🔍 Rendering External Verification Node Handler\");\n return (\n <ExternalVerificationNodeHandler\n node={node}\n session={session}\n userInput={userInput}\n setUserInput={setUserInput}\n onNext={() => stepObject.goToNextStep(node.id, session.template)}\n onPrevious={() => stepObject.goBack()}\n onNavigateToNode={(nodeId: string) => {\n const idx = templateNodes.findIndex((n: any) => n.id === nodeId);\n // idx est 0-based, les steps sont 1-based → idx + 1.\n // goBackToStep tronque l'historique pour que le nœud corrigé\n // redevienne runIndex 0 (formulaire pré-rempli).\n if (idx !== -1) stepObject.goBackToStep(idx + 1);\n else stepObject.goBack();\n }}\n />\n );\n\n case \"pdf-generation\":\n console.debug(\"📄 Rendering PDF Generation component\");\n return (\n <PdfGeneration\n key={`pdf-generation-${templateIndex}`}\n node={node}\n session={session}\n sessionId={sessionId}\n stepObject={stepObject}\n userInput={userInput}\n />\n );\n\n case \"legal-consent\":\n return (\n <LegalConsentNode\n node={node}\n session={session}\n sessionId={sessionId}\n stepObject={stepObject}\n />\n );\n\n case \"custom\":\n // For custom nodes, we provide a basic structure that can be extended\n return (\n <div className=\"flex flex-col items-center justify-center h-full p-4 text-center\">\n <div className=\"text-blue-500 text-4xl mb-4\">🔧</div>\n <h2 className=\"text-xl font-bold text-blue-600 mb-2\">\n Nœud personnalisé\n </h2>\n <p className=\"text-gray-600 mb-4\">\n Implémentation personnalisée requise pour: \"{node.title || node.id}\"\n </p>\n <div className=\"bg-blue-50 border border-blue-200 rounded p-3 text-left text-sm mb-4 max-w-md\">\n <p className=\"font-semibold text-blue-700 mb-2\">\n Configuration du nœud:\n </p>\n <pre className=\"text-xs overflow-auto max-h-32\">\n {JSON.stringify(\n {\n id: node.id,\n title: node.title,\n description: node.description,\n options: node.options,\n selectedOptions: node.selectedOptions,\n },\n null,\n 2,\n )}\n </pre>\n </div>\n <button\n className=\"px-4 py-2 bg-blue-600 text-white rounded hover:bg-blue-700 transition-colors\"\n onClick={() => {\n console.log(\"Custom node action:\", node);\n stepObject.goToNextStep(node.id, session.template);\n }}\n >\n {t(\"template.buttons.continue\")}\n </button>\n </div>\n );\n\n default:\n console.warn(`❌ Type de nœud non supporté: ${node.type}`, node);\n console.log(\"❓ Available supported types:\", [\n \"end\",\n \"information-input\",\n \"document-collection\",\n \"document-selection\",\n \"document-upload\",\n \"controle-jdi\",\n \"selfie-capture\",\n \"video-capture\",\n \"country-selection\",\n \"identity-control\",\n \"jdd\",\n \"condition\",\n \"custom\",\n ]);\n return (\n <div className=\"flex flex-col items-center justify-center h-full p-4 text-center\">\n <div className=\"text-yellow-500 text-4xl mb-4\">⚠️</div>\n <h2 className=\"text-xl font-bold text-yellow-600 mb-2\">\n Étape non supportée\n </h2>\n <p className=\"text-gray-600 mb-4\">\n Le type d'étape \"{node.type}\" n'est pas pris en charge.\n </p>\n <div className=\"bg-gray-100 p-4 rounded mb-4 text-left text-xs overflow-auto max-h-32\">\n <pre>{JSON.stringify(node, null, 2)}</pre>\n </div>\n <button\n className=\"px-4 py-2 bg-primary text-white rounded hover:bg-primary-dark transition-colors\"\n onClick={() => {\n stepObject.goToNextStep(node.id, session.template);\n }}\n >\n {t(\"template.buttons.continue\")}\n </button>\n </div>\n );\n }\n};\n\nexport default TemplateNodeRenderer;\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"conditionNodePolicy.js","sources":["../../../../../src/components/template/conditionNodePolicy.ts"],"sourcesContent":["export type ConditionMaxRetryAction = \"end-journey\" | \"force-true\";\n\nexport const DEFAULT_CONDITION_MAX_RETRIES = 3;\n\nexport const normalizeConditionMaxRetries = (value?: number): number => {\n if (!Number.isFinite(value)) {\n return DEFAULT_CONDITION_MAX_RETRIES;\n }\n\n return Math.max(1, Math.floor(Number(value)));\n};\n\nexport const normalizeConditionMaxRetryAction = (\n value?: string,\n): ConditionMaxRetryAction => {\n return value === \"force-true\" ? \"force-true\" : \"end-journey\";\n};\n\nexport const hasExceededConditionMaxRetries = (\n retryCountAfterFailure: number,\n maxRetries: number,\n): boolean => retryCountAfterFailure >= maxRetries;\n"],"names":[],"mappings":"AAEO,IAAM,6BAA6B,GAAG;AAEtC,IAAM,4BAA4B,GAAG,UAAC,KAAc,EAAA;IACzD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC3B,QAAA,OAAO,6BAA6B;IACtC;AAEA,IAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/C;AAEO,IAAM,gCAAgC,GAAG,UAC9C,KAAc,EAAA;IAEd,OAAO,KAAK,KAAK,YAAY,GAAG,YAAY,GAAG,aAAa;AAC9D;AAEO,IAAM,8BAA8B,GAAG,UAC5C,sBAA8B,EAC9B,UAAkB,EAAA,EACN,OAAA,sBAAsB,IAAI,UAAU,CAAA,CAApC;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Body.js","sources":["../../../../../src/components/ui/Body.tsx"],"sourcesContent":["import React from \"react\";\n\nconst Body = ({\n children,\n className,\n}: {\n children: React.ReactNode;\n className?: string;\n}) => {\n return (\n <div\n className={` text-[#3C3C40] text-center text-sm font-medium leading-[120%] ${className}`}\n >\n {children}\n </div>\n );\n};\n\nexport default Body;\n"],"names":["_jsx"],"mappings":";;AAEA,IAAM,IAAI,GAAG,UAAC,EAMb,EAAA;QALC,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,SAAS,GAAA,EAAA,CAAA,SAAA;IAKT,QACEA,GAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAE,iEAAA,CAAA,MAAA,CAAkE,SAAS,CAAE,EAAA,QAAA,EAEvF,QAAQ,EAAA,CACL;AAEV;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Button.js","sources":["../../../../../src/components/ui/Button.tsx"],"sourcesContent":["/**\n * Button component - Unified adaptive button\n *\n * Adapts automatically between mobile and desktop using useIsMobile hook\n * rather than CSS responsive classes, for build compatibility.\n *\n * - Mobile: full width, tall (h-[48px], rounded-[12px])\n * - Desktop: auto width, comfortable (h-10, px-8, min-w-[140px])\n *\n * @param variant - \"primary\" (filled, default) | \"secondary\" (outlined)\n */\nimport useIsMobile from \"../../hooks/useIsMobile\";\n\ninterface ButtonProps {\n variant?: \"primary\" | \"secondary\";\n children: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n disabled?: boolean;\n type?: \"button\" | \"submit\" | \"reset\";\n}\n\nconst Button = ({\n variant = \"primary\",\n children,\n className = \"\",\n style,\n onClick,\n disabled = false,\n type = \"button\",\n}: ButtonProps) => {\n const isMobile = useIsMobile(768);\n\n const baseShared = \"flex items-center justify-center gap-2 shrink-0 font-poppins text-sm font-medium leading-[110%] transition-filter\";\n const base = isMobile\n ? `${baseShared} w-full h-[48px] rounded-[12px]`\n : `${baseShared} h-10 rounded-md px-8 min-w-[140px]`;\n\n if (variant === \"secondary\") {\n return (\n <button\n type={type}\n className={`${base} bg-transparent border border-gray-300 text-gray-600 ${\n disabled\n ? \"opacity-60 cursor-not-allowed\"\n : \"hover:bg-black/5 cursor-pointer\"\n } ${className}`}\n onClick={onClick}\n disabled={disabled}\n >\n {children}\n </button>\n );\n }\n\n return (\n <button\n type={type}\n className={`${base} ${\n disabled\n ? \"bg-gray-200 text-gray-400 cursor-not-allowed opacity-60\"\n : \"hover:brightness-110 active:brightness-90 cursor-pointer\"\n } ${className}`}\n style={\n disabled\n ? style\n : { ...style, backgroundColor: style?.backgroundColor ?? \"var(--dk-btn-bg)\", color: style?.color ?? \"var(--dk-btn-text)\" }\n }\n onClick={onClick}\n disabled={disabled}\n >\n {children}\n </button>\n );\n};\n\nexport default Button;\n"],"names":["_jsx"],"mappings":";;;;AAuBA,IAAM,MAAM,GAAG,UAAC,EAQF,EAAA;;AAPZ,IAAA,IAAA,EAAA,GAAA,EAAA,CAAA,OAAmB,EAAnB,OAAO,GAAA,EAAA,KAAA,MAAA,GAAG,SAAS,KAAA,EACnB,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,iBAAc,EAAd,SAAS,GAAA,EAAA,KAAA,MAAA,GAAG,EAAE,KAAA,EACd,KAAK,GAAA,EAAA,CAAA,KAAA,EACL,OAAO,GAAA,EAAA,CAAA,OAAA,EACP,EAAA,GAAA,EAAA,CAAA,QAAgB,EAAhB,QAAQ,GAAA,EAAA,KAAA,MAAA,GAAG,KAAK,GAAA,EAAA,EAChB,EAAA,GAAA,EAAA,CAAA,IAAe,EAAf,IAAI,GAAA,EAAA,KAAA,MAAA,GAAG,QAAQ,GAAA,EAAA;AAEf,IAAA,IAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC;IAEjC,IAAM,UAAU,GAAG,mHAAmH;IACtI,IAAM,IAAI,GAAG;UACT,EAAA,CAAA,MAAA,CAAG,UAAU,EAAA,iCAAA;AACf,UAAE,EAAA,CAAA,MAAA,CAAG,UAAU,EAAA,qCAAA,CAAqC;AAEtD,IAAA,IAAI,OAAO,KAAK,WAAW,EAAE;QAC3B,QACEA,GAAA,CAAA,QAAA,EAAA,EACE,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,EAAA,CAAA,MAAA,CAAG,IAAI,EAAA,uDAAA,CAAA,CAAA,MAAA,CAChB;AACE,kBAAE;AACF,kBAAE,iCAAiC,EAAA,GAAA,CAAA,CAAA,MAAA,CACnC,SAAS,CAAE,EACf,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,YAEjB,QAAQ,EAAA,CACF;IAEb;IAEA,QACEA,GAAA,CAAA,QAAA,EAAA,EACE,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,EAAA,CAAA,MAAA,CAAG,IAAI,EAAA,GAAA,CAAA,CAAA,MAAA,CAChB;AACE,cAAE;cACA,0DAA0D,EAAA,GAAA,CAAA,CAAA,MAAA,CAC5D,SAAS,CAAE,EACf,KAAK,EACH;AACE,cAAE;AACF,oCAAO,KAAK,CAAA,EAAA,EAAE,eAAe,EAAE,CAAA,EAAA,GAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,MAAA,GAAA,MAAA,GAAL,KAAK,CAAE,eAAe,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,kBAAkB,EAAE,KAAK,EAAE,CAAA,EAAA,GAAA,KAAK,KAAA,IAAA,IAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,oBAAoB,GAAE,EAE9H,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,YAEjB,QAAQ,EAAA,CACF;AAEb;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ButtonDesktop.js","sources":["../../../../../src/components/ui/ButtonDesktop.tsx"],"sourcesContent":["import Button from \"./Button\";\n\n/**\n * @deprecated Use <Button variant=\"primary\"> or <Button variant=\"secondary\"> instead.\n * Kept for backward compatibility.\n */\ninterface ButtonDesktopProps {\n children: React.ReactNode;\n className?: string;\n onClick?: React.MouseEventHandler<HTMLButtonElement>;\n disabled?: boolean;\n type: \"continue\" | \"back\";\n buttonType?: \"button\" | \"submit\" | \"reset\";\n}\n\nconst ButtonDesktop = ({\n children,\n className,\n onClick,\n disabled = false,\n type,\n buttonType = \"button\",\n}: ButtonDesktopProps) => (\n <Button\n variant={type === \"continue\" ? \"primary\" : \"secondary\"}\n type={buttonType}\n onClick={onClick}\n disabled={disabled}\n className={className}\n >\n {children}\n </Button>\n);\n\nexport default ButtonDesktop;\n"],"names":["_jsx"],"mappings":";;;AAeA,IAAM,aAAa,GAAG,UAAC,EAOF,EAAA;QANnB,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,SAAS,GAAA,EAAA,CAAA,SAAA,EACT,OAAO,GAAA,EAAA,CAAA,OAAA,EACP,EAAA,GAAA,EAAA,CAAA,QAAgB,EAAhB,QAAQ,mBAAG,KAAK,GAAA,EAAA,EAChB,IAAI,GAAA,EAAA,CAAA,IAAA,EACJ,kBAAqB,EAArB,UAAU,GAAA,EAAA,KAAA,MAAA,GAAG,QAAQ,GAAA,EAAA;AACG,IAAA,QACxBA,GAAA,CAAC,MAAM,EAAA,EACL,OAAO,EAAE,IAAI,KAAK,UAAU,GAAG,SAAS,GAAG,WAAW,EACtD,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,EAAA,QAAA,EAEnB,QAAQ,GACF;AATe;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Card.js","sources":["../../../../../src/components/ui/Card.tsx"],"sourcesContent":["import * as React from \"react\";\n\nimport { cn } from \"../../utils/utils\";\n\nfunction Card({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card\"\n className={cn(\n \"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\"leading-none font-semibold\", className)}\n {...props}\n />\n );\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"px-6\", className)}\n {...props}\n />\n );\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\"flex items-center px-6 [.border-t]:pt-6\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n};\n"],"names":["_jsx"],"mappings":";;;;AAIA,SAAS,IAAI,CAAC,EAAoD,EAAA;AAAlD,IAAA,IAAA,SAAS,GAAA,EAAA,CAAA,SAAA,EAAK,KAAK,GAAA,MAAA,CAAA,EAAA,EAArB,aAAuB,CAAF;AACjC,IAAA,QACEA,GAAA,CAAA,KAAA,EAAA,QAAA,CAAA,EAAA,WAAA,EACY,MAAM,EAChB,SAAS,EAAE,EAAE,CACX,mFAAmF,EACnF,SAAS,CACV,EAAA,EACG,KAAK,CAAA,CACT;AAEN;;;;"}
@@ -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":";;;;;AA0BA,IAAM,gBAAgB,GAAoC,UAAC,EAS1D,EAAA;;AARC,IAAA,IAAA,MAAM,YAAA,EACN,QAAQ,GAAA,EAAA,CAAA,QAAA,EACR,MAAM,GAAA,EAAA,CAAA,MAAA,EACN,EAAA,GAAA,EAAA,CAAA,SAAc,EAAd,SAAS,GAAA,EAAA,KAAA,MAAA,GAAG,EAAE,GAAA,EAAA,EACd,uBAAoB,EAApB,eAAe,GAAA,EAAA,KAAA,MAAA,GAAG,EAAE,KAAA,EACpB,EAAA,GAAA,EAAA,CAAA,gBAAoC,EAApC,gBAAgB,mBAAG,iBAAiB,GAAA,EAAA,EACpC,EAAA,GAAA,EAAA,CAAA,eAAoB,EAApB,eAAe,GAAA,EAAA,KAAA,MAAA,GAAG,EAAE,GAAA,EAAA,EACpB,OAAO,GAAA,EAAA,CAAA,OAAA;AAEP,IAAA,IAAM,QAAQ,GAAG,WAAW,EAAE;AAC9B,IAAA,IAAM,SAAS,GAAG,MAAM,CAAiB,IAAI,CAAC;IACxC,IAAA,EAAA,GAAkC,QAAQ,CAAC,GAAG,CAAC,EAA9C,YAAY,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,eAAe,GAAA,EAAA,CAAA,CAAA,CAAiB;AAErD,IAAA,SAAS,CAAC,YAAA;AACR,QAAA,IAAI,CAAC,QAAQ;YAAE;AACf,QAAA,IAAM,EAAE,GAAG,SAAS,CAAC,OAAO;AAC5B,QAAA,IAAI,CAAC,EAAE;YAAE;AAET,QAAA,IAAM,MAAM,GAAG,YAAA,EAAM,OAAA,eAAe,CAAC,EAAE,CAAC,YAAY,CAAC,CAAA,CAAhC,CAAgC;AACrD,QAAA,MAAM,EAAE;AAER,QAAA,IAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC;AAC3C,QAAA,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACpB,OAAO,YAAA,EAAM,OAAA,QAAQ,CAAC,UAAU,EAAE,CAAA,CAArB,CAAqB;AACpC,IAAA,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;IAEd,IAAI,QAAQ,EAAE;QACZ,QACEA,cAAK,SAAS,EAAE,sCAA+B,SAAS,CAAE,EAAA,QAAA,EAAA,CACvD,MAAM,KACLC,aAAK,SAAS,EAAE,8CAAuC,eAAe,CAAE,YACrE,MAAM,EAAA,CACH,CACP,EACDA,GAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAE,iBAAA,CAAA,MAAA,CAAkB,gBAAgB,CAAE,EAC/C,KAAK,EAAE,EAAE,aAAa,EAAE,YAAY,EAAE,EAAA,QAAA,EAErC,QAAQ,EAAA,CACL,EACNA,aACE,GAAG,EAAE,SAAS,EACd,SAAS,EAAE,sEAAA,CAAA,MAAA,CAAuE,eAAe,CAAE,YAEnGD,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,WAAW,EAAA,QAAA,EAAA,CACvB,MAAM,EACPC,GAAA,CAAC,SAAS,EAAA,EACR,IAAI,EAAE,MAAA,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,EAC7B,IAAI,EAAE,CAAA,CAAA,EAAA,GAAA,OAAO,aAAP,OAAO,KAAA,MAAA,GAAA,MAAA,GAAP,OAAO,CAAE,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,IAAI,IAAG,KAAK,GAAG,SAAS,GACjD,CAAA,EAAA,CACE,EAAA,CACF,CAAA,EAAA,CACF;IAEV;;AAGA,IAAA,QACED,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,sCAAsC,EAAA,QAAA,EAAA,CAClD,QAAQ,EACTC,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,YAAA,CAAA,MAAA,CAAa,eAAe,CAAE,EAAA,QAAA,EAAG,MAAM,EAAA,CAAO,CAAA,EAAA,CAC1D;AAEV;;;;"}
@@ -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}&nbsp;\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":"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"}
@@ -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":";;;;;;AA2BO,IAAM,MAAM,GAAGA,cAAK,CAAC,UAAU,CAAgC,UAAC,EAatE,EAAE,GAAG,EAAA;QAZJ,OAAO,GAAA,EAAA,CAAA,OAAA,EACP,KAAK,GAAA,EAAA,CAAA,KAAA,EACL,aAAa,GAAA,EAAA,CAAA,aAAA,EACb,WAAW,GAAA,EAAA,CAAA,WAAA,EACX,EAAA,GAAA,EAAA,CAAA,SAAc,EAAd,SAAS,GAAA,EAAA,KAAA,MAAA,GAAG,EAAE,GAAA,EAAA,EACd,EAAA,GAAA,EAAA,CAAA,QAAgB,EAAhB,QAAQ,GAAA,EAAA,KAAA,MAAA,GAAG,KAAK,GAAA,EAAA,EAChB,EAAA,GAAA,EAAA,CAAA,KAAa,EAAb,KAAK,GAAA,EAAA,KAAA,MAAA,GAAG,KAAK,GAAA,EAAA,EACb,EAAA,GAAA,EAAA,CAAA,gBAAwB,EAAxB,gBAAgB,GAAA,EAAA,KAAA,MAAA,GAAG,KAAK,GAAA,EAAA,EACxB,SAAS,eAAA,EACT,SAAS,GAAA,EAAA,CAAA,SAAA,EACT,OAAO,GAAA,EAAA,CAAA,OAAA,EACP,EAAA,GAAA,EAAA,CAAA,OAAe,EAAf,OAAO,GAAA,EAAA,KAAA,MAAA,GAAG,KAAK,GAAA,EAAA;AAEP,IAAA,IAAA,CAAC,GAAK,OAAO,EAAE,EAAd;IACH,IAAA,EAAA,GAAsB,QAAQ,CAAC,KAAK,CAAC,EAApC,MAAM,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,SAAS,GAAA,EAAA,CAAA,CAAA,CAAmB;AAC3C,IAAA,IAAM,SAAS,GAAG,MAAM,CAAiB,IAAI,CAAC;AACxC,IAAA,IAAA,EAAA,GAA8B,QAAQ,CAAS,KAAK,IAAI,EAAE,CAAC,EAA1D,UAAU,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,aAAa,QAAiC;IAC3D,IAAA,EAAA,GAAgC,QAAQ,CAAC,KAAK,CAAC,EAA9C,WAAW,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,cAAc,GAAA,EAAA,CAAA,CAAA,CAAmB;AACrD,IAAA,IAAM,gBAAgB,GAAG,MAAM,CAAmB,IAAI,CAAC;IACjD,IAAA,EAAA,GAAoC,QAAQ,CAAsB,EAAE,CAAC,EAApE,aAAa,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,gBAAgB,GAAA,EAAA,CAAA,CAAA,CAAqC;AAC3E,IAAA,IAAM,WAAW,GAAG,MAAM,CAAiB,IAAI,CAAC;;AAGhD,IAAAA,cAAK,CAAC,mBAAmB,CAAC,GAAG,EAAE,YAAA,EAAM,OAAA,gBAAgB,CAAC,OAA2B,CAAA,CAA5C,CAA4C,CAAC;IAElF,IAAM,aAAa,GAAG,UAAC,IAAY,EAAA;AACjC,QAAA,OAAA,CAAC,IAAI,IAAI,EAAE;aACR,SAAS,CAAC,KAAK;AACf,aAAA,OAAO,CAAC,kBAAkB,EAAE,EAAE;AAC9B,aAAA,WAAW,EAAE;AAHhB,IAAA,CAGgB;AAElB,IAAA,IAAM,mBAAmB,GAAG,UAAC,WAAmB,EAAE,KAAa,EAAA;;AAE7D,QAAA,IAAI,WAAW,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;AAAE,YAAA,OAAO,KAAK;QAErD,IAAM,aAAa,GAAG,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;QAC/C,IAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC;AACxC,QAAA,IAAI,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;AAC7D,YAAA,OAAO,KAAK;QACd;QACA,OAAO,aAAa,KAAK,YAAY;AACvC,IAAA,CAAC;;IAGD,IAAM,YAAY,GAAG,UAAC,IAAY,EAAA;;QAEhC,OAAO,IAAI,CAAC,OAAO,CAAC,0BAA0B,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE;AAC5D,IAAA,CAAC;AAED,IAAA,IAAM,kBAAkB,GACtB,WAAW,KAAA,IAAA,IAAX,WAAW,KAAA,MAAA,GAAX,WAAW,GAAI,CAAC,CAAC,8BAA8B,CAAC;;AAGlD,IAAA,SAAS,CAAC,YAAA;QACR,IAAM,kBAAkB,GAAG,UAAC,KAAiB,EAAA;;AAC3C,YAAA,IAAM,MAAM,GAAG,KAAK,CAAC,MAAc;YACnC,IAAM,aAAa,GAAG,CAAA,EAAA,GAAA,SAAS,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,QAAQ,CAAC,MAAM,CAAC;YACzD,IAAM,cAAc,GAAG,CAAA,EAAA,GAAA,WAAW,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,QAAQ,CAAC,MAAM,CAAC;AAC5D,YAAA,IAAI,CAAC,aAAa,IAAI,CAAC,cAAc,EAAE;gBACrC,SAAS,CAAC,KAAK,CAAC;YAClB;AACF,QAAA,CAAC;QAED,IAAI,MAAM,EAAE;AACV,YAAA,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,kBAAkB,CAAC;YAC1D,OAAO,YAAA;AACL,gBAAA,OAAA,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,kBAAkB,CAAC;AAA7D,YAAA,CAA6D;QACjE;AACF,IAAA,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;AAEZ,IAAA,IAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,UAAC,MAAM,EAAA,EAAK,OAAA,MAAM,CAAC,KAAK,KAAK,KAAK,CAAA,CAAtB,CAAsB,CAAC;AAEvE,IAAA,SAAS,CAAC,YAAA;AACR,QAAA,IAAI,CAAC,gBAAgB;YAAE;;;AAIvB,QAAA,IAAI,QAAQ,CAAC,aAAa,KAAK,gBAAgB,CAAC,OAAO;YAAE;QAEzD,IAAI,CAAC,KAAK,EAAE;YACV,aAAa,CAAC,EAAE,CAAC;YACjB;QACF;AAEA,QAAA,IAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,UAAC,MAAM,EAAA,EAAK,OAAA,MAAM,CAAC,KAAK,KAAK,KAAK,CAAA,CAAtB,CAAsB,CAAC;QACpE,IAAI,WAAW,EAAE;;AAEf,YAAA,IAAM,YAAY,GAAG,WAAW,CAAC;kBAC7B,UAAG,WAAW,CAAC,IAAI,EAAA,GAAA,CAAA,CAAA,MAAA,CAAI,WAAW,CAAC,KAAK;AAC1C,kBAAE,WAAW,CAAC,KAAK;YACrB,aAAa,CAAC,YAAY,CAAC;QAC7B;AAAO,aAAA,IAAI,SAAS,KAAK,SAAS,EAAE;;YAElC,aAAa,CAAC,KAAK,CAAC;QACtB;;;IAGF,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IAEjD,IAAM,YAAY,GAAG,UAAC,WAAmB,EAAA;QACvC,aAAa,CAAC,WAAW,CAAC;QAC1B,IAAI,gBAAgB,EAAE;AACpB,YAAA,IAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAC9B,UAAC,MAAM,EAAA,EAAK,OAAA,MAAM,CAAC,KAAK,KAAK,WAAW,CAAA,CAA5B,CAA4B,CACzC;YACD,IAAI,WAAW,EAAE;;AAEf,gBAAA,IAAM,YAAY,GAAG,WAAW,CAAC;sBAC7B,UAAG,WAAW,CAAC,IAAI,EAAA,GAAA,CAAA,CAAA,MAAA,CAAI,WAAW,CAAC,KAAK;AAC1C,sBAAE,WAAW,CAAC,KAAK;gBACrB,aAAa,CAAC,YAAY,CAAC;YAC7B;iBAAO;gBACL,aAAa,CAAC,WAAW,CAAC;YAC5B;QACF;QACA,cAAc,CAAC,KAAK,CAAC;QACrB,SAAS,CAAC,KAAK,CAAC;AAClB,IAAA,CAAC;IAED,IAAM,iBAAiB,GAAG,UAAC,KAA0C,EAAA;AACnE,QAAA,IAAI,CAAC,gBAAgB;YAAE;AAEvB,QAAA,IAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK;;AAEpC,QAAA,IAAM,YAAY,GAAG,YAAY,CAAC,SAAS,CAAC;AAC5C,QAAA,IAAM,cAAc,GAAG,aAAa,CAAC,YAAY,CAAC;QAClD,aAAa,CAAC,SAAS,CAAC;QACxB,cAAc,CAAC,IAAI,CAAC;AAEpB,QAAA,IAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAC7B,UAAC,MAAM,EAAA;AACL,YAAA,OAAA,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,cAAc,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,cAAc,CAAC,MAAM;AAChG,iBAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,cAAc,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,cAAc,CAAC,MAAM,CAAC;AACjG,gBAAA,mBAAmB,CAAC,MAAM,CAAC,KAAK,EAAE,cAAc,CAAC;AAFjD,QAAA,CAEiD,CACpD;QAED,IAAI,UAAU,EAAE;AACd,YAAA,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC;QACjC;AAAO,aAAA,IAAI,SAAS,KAAK,SAAS,EAAE;;YAElC,aAAa,CAAC,SAAS,CAAC;QAC1B;AAAO,aAAA,IAAI,YAAY,KAAK,EAAE,EAAE;;YAE9B,aAAa,CAAC,EAAE,CAAC;QACnB;;AAEF,IAAA,CAAC;AAID,IAAA,IAAM,eAAe,GACnB,gBAAgB,IAAI,WAAW,IAAI;AACjC,UAAE,OAAO,CAAC,MAAM,CAAC,UAAC,MAAM,EAAA;;AAEtB,YAAA,IAAM,YAAY,GAAG,YAAY,CAAC,UAAU,CAAC;AAC7C,YAAA,IAAM,WAAW,GAAG,aAAa,CAAC,YAAY,CAAC;YAC/C,QACE,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;gBACjD,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;gBACjD,mBAAmB,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC;AAElD,QAAA,CAAC;UACC,OAAO;;AAGb,IAAA,SAAS,CAAC,YAAA;AACR,QAAA,IAAI,MAAM,IAAI,SAAS,CAAC,OAAO,EAAE;YAC/B,IAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,qBAAqB,EAAE;AACtD,YAAA,gBAAgB,CAAC;AACf,gBAAA,QAAQ,EAAE,OAAO;AACjB,gBAAA,GAAG,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC;gBACpB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,gBAAA,MAAM,EAAE,IAAI;AACb,aAAA,CAAC;QACJ;AACF,IAAA,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;AAEZ,IAAA,IAAM,gBAAgB,GAAG,qRAAA,CAAA,MAAA,CAGf,OAAO,GAAG,cAAc,GAAG,cAAc,yBACzC;AACN,UAAE;AACF,UAAE,uCAAuC,EAAA,cAAA,CAAA,CAAA,MAAA,CAEnC,QAAQ,GAAG,+BAA+B,GAAG,gBAAgB,CAAE;AAEzE,IAAA,QACEC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,WAAA,CAAA,MAAA,CAAY,SAAS,CAAE,EAAE,GAAG,EAAE,SAAS,EAAA,QAAA,EAAA,CACpD,gBAAgB,IACfC,GAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAE,gBAAgB,CAAC,OAAO,CACjC,gBAAgB,EAChB,gBAAgB,GAAG,aAAa,GAAG,gBAAgB,CACpD,EACD,OAAO,EAAE,YAAA;;AACP,oBAAA,IAAI,QAAQ;wBAAE;AACd,oBAAA,CAAA,EAAA,GAAA,gBAAgB,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,KAAK,EAAE;gBACnC,CAAC,EAAA,QAAA,EAEDA,aAAK,SAAS,EAAC,gCAAgC,EAAA,QAAA,EAC7CA,GAAA,CAAA,OAAA,EAAA,EACE,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,EAAE,YAAA;4BACP,IAAI,CAAC,QAAQ,EAAE;gCACb,SAAS,CAAC,IAAI,CAAC;gCACf,cAAc,CAAC,KAAK,CAAC;4BACvB;AACF,wBAAA,CAAC,EACD,MAAM,EAAE,UAAC,CAAC,EAAA;;;AAER,4BAAA,IAAM,cAAc,GAAG,CAAA,EAAA,GAAA,SAAS,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,QAAQ,CAAC,CAAC,CAAC,aAAqB,CAAC;AAC3E,4BAAA,IAAM,gBAAgB,GAAG,CAAA,EAAA,GAAA,WAAW,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,QAAQ,CAAC,CAAC,CAAC,aAAqB,CAAC;AAE/E,4BAAA,IAAI,CAAC,cAAc,IAAI,CAAC,gBAAgB,EAAE;gCACxC,SAAS,CAAC,KAAK,CAAC;4BAClB;;4BAGA,IAAI,KAAK,EAAE;AACT,gCAAA,IAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,UAAC,MAAM,EAAA,EAAK,OAAA,MAAM,CAAC,KAAK,KAAK,KAAK,CAAA,CAAtB,CAAsB,CAAC;gCACpE,IAAI,WAAW,EAAE;;AAEf,oCAAA,IAAM,YAAY,GAAG,WAAW,CAAC;0CAC7B,UAAG,WAAW,CAAC,IAAI,EAAA,GAAA,CAAA,CAAA,MAAA,CAAI,WAAW,CAAC,KAAK;AAC1C,0CAAE,WAAW,CAAC,KAAK;oCACrB,aAAa,CAAC,YAAY,CAAC;gCAC7B;4BACF;AACF,wBAAA,CAAC,EACD,WAAW,EAAE,kBAAkB,EAC/B,SAAS,EAAC,4EAA4E,EACtF,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,gBAAgB,GACrB,EAAA,CACE,EAAA,CACF,KAEND,IAAA,CAAA,QAAA,EAAA,EACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,YAAA,EAAM,OAAA,CAAC,QAAQ,IAAI,SAAS,CAAC,CAAC,MAAM,CAAC,CAAA,CAA/B,CAA+B,EAC9C,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,UAAG,gBAAgB,EAAA,8CAAA,CAA8C,EAAA,QAAA,EAAA,CAE5EC,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAE,cAAc,GAAG,eAAe,GAAG,eAAe,EAAA,QAAA,EAChE,cAAc,IACbD,IAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,yBAAyB,EAAA,QAAA,EAAA,CACtC,cAAc,CAAC,IAAI,IAAIC,wBAAO,cAAc,CAAC,IAAI,EAAA,CAAQ,EACzD,cAAc,CAAC,KAAK,CAAA,EAAA,CAChB,KAEP,kBAAkB,CACnB,EAAA,CACI,EACPA,IAAC,eAAe,EAAA,EACd,SAAS,EAAE,6CAAA,CAAA,MAAA,CAA8C,MAAM,GAAG,YAAY,GAAG,EAAE,CAC/E,EAAA,CACJ,CAAA,EAAA,CACK,CACV,EAEA,MAAM,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,YAAY,CAC3CA,aACE,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE,aAAa,EACpB,SAAS,EAAC,+EAA+E,EAAA,QAAA,EAEzFD,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,MAAM,EAAA,QAAA,EAAA,CAClB,eAAe,CAAC,GAAG,CAAC,UAAC,MAAM,EAAA,EAAK,QAC/BA,IAAA,CAAA,QAAA,EAAA,EAEE,IAAI,EAAC,QAAQ,EACb,WAAW,EAAE,UAAC,CAAC,EAAA;;gCAEb,CAAC,CAAC,cAAc,EAAE;4BACpB,CAAC,EACD,OAAO,EAAE,YAAA,EAAM,OAAA,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,CAA1B,CAA0B,EACzC,SAAS,EAAE,oKAEP,MAAM,CAAC,KAAK,KAAK;AACjB,kCAAE;kCACA,eAAe,EAAA,oBAAA,CAEpB,EAAA,QAAA,EAAA,CAEA,MAAM,CAAC,IAAI,IAAIC,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,SAAS,EAAA,QAAA,EAAE,MAAM,CAAC,IAAI,EAAA,CAAQ,EAC7D,MAAM,CAAC,KAAK,CAAA,EAAA,EAhBR,MAAM,CAAC,KAAK,CAiBV,EACV,CApBgC,CAoBhC,CAAC,EACD,eAAe,CAAC,MAAM,KAAK,CAAC,KAC3BA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,iCAAiC,EAAA,QAAA,EAC7C,CAAC,CAAC,6BAA6B,CAAC,EAAA,CAC7B,CACP,CAAA,EAAA,CACG,EAAA,CACF,EACN,QAAQ,CAAC,IAAI,CACd,CAAA,EAAA,CACG;AAEV,CAAC;;;;"}
@@ -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;;;;"}