datakeen-session-react 1.1.195-dev.8 → 1.1.195-dev.9

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 (878) hide show
  1. package/README.md +1 -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 +0 -1
  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 +0 -1
  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 +0 -1
  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 +0 -1
  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 +0 -1
  135. package/dist/cjs/hooks/useTemplateLoader.js +0 -1
  136. package/dist/cjs/hooks/useUserInputForm.js +0 -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 +0 -1
  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/customFieldValidation.js +0 -1
  194. package/dist/cjs/utils/documentLabels.js +0 -1
  195. package/dist/cjs/utils/europeanCountries.js +0 -1
  196. package/dist/cjs/utils/fileConverter.js +0 -1
  197. package/dist/cjs/utils/imageConverter.js +0 -1
  198. package/dist/cjs/utils/imageProcessing.js +0 -1
  199. package/dist/cjs/utils/isMobileDevice.js +0 -1
  200. package/dist/cjs/utils/isoCountryCodes.js +0 -1
  201. package/dist/cjs/utils/jdiCodes.js +0 -1
  202. package/dist/cjs/utils/labelToKey.js +0 -1
  203. package/dist/cjs/utils/listFieldUtils.js +0 -1
  204. package/dist/cjs/utils/mimeTypes.js +0 -1
  205. package/dist/cjs/utils/navigation.js +0 -1
  206. package/dist/cjs/utils/renderInlineMarkdown.js +0 -1
  207. package/dist/cjs/utils/sessionStatus.js +0 -1
  208. package/dist/cjs/utils/userInputForm.js +0 -1
  209. package/dist/cjs/utils/utils.js +0 -1
  210. package/dist/cjs/utils/validationUtils.js +0 -1
  211. package/dist/esm/_virtual/_commonjsHelpers.js +0 -1
  212. package/dist/esm/_virtual/heic2any.js +0 -1
  213. package/dist/esm/_virtual/heic2any2.js +0 -1
  214. package/dist/esm/assets/Face Scan Square.svg.js +0 -1
  215. package/dist/esm/assets/Lightbulb.svg.js +0 -1
  216. package/dist/esm/assets/Monitor Camera.svg.js +0 -1
  217. package/dist/esm/assets/User Hands.svg.js +0 -1
  218. package/dist/esm/assets/before-document.png.js +0 -1
  219. package/dist/esm/assets/before-passport.png.js +0 -1
  220. package/dist/esm/assets/before-photo.png.js +0 -1
  221. package/dist/esm/assets/before-verso.png.js +0 -1
  222. package/dist/esm/assets/check.svg.js +0 -1
  223. package/dist/esm/assets/icons/shield_magic_link.svg.js +0 -1
  224. package/dist/esm/assets/selfietake.svg.js +0 -1
  225. package/dist/esm/components/DatakeenSession.js +0 -1
  226. package/dist/esm/components/document-collection/DocumentCollection.js +0 -1
  227. package/dist/esm/components/document-collection/DocumentCollectionIntroduction.js +0 -1
  228. package/dist/esm/components/document-collection/DocumentCollectionMethodSelection.js +0 -1
  229. package/dist/esm/components/document-collection/DocumentCollectionSelection.js +0 -1
  230. package/dist/esm/components/document-collection/DocumentCollectionUpload.js +0 -1
  231. package/dist/esm/components/document-collection/DocumentError.js +0 -1
  232. package/dist/esm/components/document-collection/DocumentProcessing.js +0 -1
  233. package/dist/esm/components/document-collection/DocumentSuccess.js +0 -1
  234. package/dist/esm/components/document-video/DocumentVideoCapture.js +0 -1
  235. package/dist/esm/components/document-video/DocumentVideoConfirmation.js +0 -1
  236. package/dist/esm/components/document-video/document-video-flow/DocumentVideoFlow.js +0 -1
  237. package/dist/esm/components/document-video/document-video-flow/DocumentVideoInstructions.js +0 -1
  238. package/dist/esm/components/document-video/document-video-flow/DocumentVideoProcessing.js +0 -1
  239. package/dist/esm/components/document-video/document-video-flow/DocumentVideoRecorder.js +0 -1
  240. package/dist/esm/components/icons/ElectronicIcon.js +0 -1
  241. package/dist/esm/components/icons/PoweredByIcon.js +0 -1
  242. package/dist/esm/components/icons/PreIntroIcon.js +0 -1
  243. package/dist/esm/components/icons/StartIcon.js +0 -1
  244. package/dist/esm/components/id-check/BeforePhoto.js +0 -1
  245. package/dist/esm/components/id-check/BeforeVersoPhoto.js +0 -1
  246. package/dist/esm/components/id-check/CameraError.js +0 -1
  247. package/dist/esm/components/id-check/CameraMask.js +0 -1
  248. package/dist/esm/components/id-check/OrientationToggle.js +0 -1
  249. package/dist/esm/components/id-check/Photo.js +0 -1
  250. package/dist/esm/components/id-check/PhotoConfirmation.js +0 -1
  251. package/dist/esm/components/id-check/PhotoPreview.js +0 -1
  252. package/dist/esm/components/jdi/JDDWorkInProgress.js +0 -1
  253. package/dist/esm/components/jdi/JDICountrySelection.js +0 -1
  254. package/dist/esm/components/jdi/JDIDocumentSelection.js +0 -1
  255. package/dist/esm/components/jdi/JDIDocumentUpload.js +0 -1
  256. package/dist/esm/components/jdi/JDIError.js +0 -1
  257. package/dist/esm/components/jdi/JDIPreIntroduction.js +0 -1
  258. package/dist/esm/components/jdi/JDIProcessing.js +0 -1
  259. package/dist/esm/components/jdi/JDISuccess.js +0 -1
  260. package/dist/esm/components/legal-consent/LegalConsentNode.js +0 -1
  261. package/dist/esm/components/nfc-scan/BiometricSymbol.js +0 -1
  262. package/dist/esm/components/nfc-scan/NfcChipGate.js +0 -1
  263. package/dist/esm/components/nfc-scan/NfcFallbackSurvey.js +0 -1
  264. package/dist/esm/components/nfc-scan/NfcOnboardingNotice.js +0 -1
  265. package/dist/esm/components/nfc-scan/NfcScanNode.js +0 -1
  266. package/dist/esm/components/nfc-scan/NfcSuccessAnimation.js +0 -1
  267. package/dist/esm/components/nfc-scan/PuceCniSymbol.js +0 -1
  268. package/dist/esm/components/selfie/SelfieConfirmation.js +0 -1
  269. package/dist/esm/components/selfie/Video.css.js +0 -1
  270. package/dist/esm/components/selfie/Video.js +0 -1
  271. package/dist/esm/components/selfie/VideoFixes.css.js +0 -1
  272. package/dist/esm/components/selfie/VideoResetStyles.js +0 -1
  273. package/dist/esm/components/selfie/hooks/useLiveFrameCapture.js +0 -1
  274. package/dist/esm/components/selfie/hooks/useVideoRecorderStyles.js +0 -1
  275. package/dist/esm/components/selfie/selfie-flow/InstructionsSelfie.js +0 -1
  276. package/dist/esm/components/selfie/selfie-flow/SelfieFlow.js +0 -1
  277. package/dist/esm/components/selfie/selfie-flow/SelfiePreIntroduction.js +0 -1
  278. package/dist/esm/components/selfie/selfie-flow/SelfieProcessing.js +0 -1
  279. package/dist/esm/components/selfie/selfie-flow/SelfieRecorder.js +0 -1
  280. package/dist/esm/components/selfie/utils/selfieCaptureUtils.js +0 -1
  281. package/dist/esm/components/selfie/utils/unisseyStrings.js +0 -1
  282. package/dist/esm/components/selfie/utils/videoElementStyles.js +0 -1
  283. package/dist/esm/components/session/DocumentCheck.js +0 -1
  284. package/dist/esm/components/session/EndFlow.js +0 -1
  285. package/dist/esm/components/session/MobileRedirect.js +0 -1
  286. package/dist/esm/components/session/PdfGeneration.js +0 -1
  287. package/dist/esm/components/session/Selfie.js +0 -1
  288. package/dist/esm/components/session/SessionContent.js +0 -1
  289. package/dist/esm/components/session/SessionExpired.js +0 -1
  290. package/dist/esm/components/session/StartSession.js +0 -1
  291. package/dist/esm/components/session/UserInputForm/AddressFields.js +0 -1
  292. package/dist/esm/components/session/UserInputForm/ContactFields.js +0 -1
  293. package/dist/esm/components/session/UserInputForm/CustomFormFields.js +0 -1
  294. package/dist/esm/components/session/UserInputForm/DatePickerField.js +0 -1
  295. package/dist/esm/components/session/UserInputForm/IdentityFields.js +0 -1
  296. package/dist/esm/components/session/UserInputForm/LegalEntityFields.js +0 -1
  297. package/dist/esm/components/session/UserInputForm/LegalRepFields.js +0 -1
  298. package/dist/esm/components/session/UserInputForm/NationalityField.js +0 -1
  299. package/dist/esm/components/session/UserInputForm.js +0 -1
  300. package/dist/esm/components/session/VideoWorkInProgress.js +0 -1
  301. package/dist/esm/components/session/controleJdiPolicy.js +0 -1
  302. package/dist/esm/components/session/endScreenIcons.js +0 -1
  303. package/dist/esm/components/signature-electronic/DocusealSignature.js +0 -1
  304. package/dist/esm/components/signature-electronic/SignatureElectronic.js +0 -1
  305. package/dist/esm/components/signature-electronic/SignatureElectronicIntroduction.js +0 -1
  306. package/dist/esm/components/signature-electronic/SignedDocumentPreview.js +0 -1
  307. package/dist/esm/components/start-flow/Start.js +0 -1
  308. package/dist/esm/components/states/ErrorState.js +0 -1
  309. package/dist/esm/components/states/LoadingState.js +0 -1
  310. package/dist/esm/components/states/NoSessionIdState.js +0 -1
  311. package/dist/esm/components/template/ComplementaryMandateNodeHandler.js +0 -1
  312. package/dist/esm/components/template/ConditionNodeHandler.js +0 -1
  313. package/dist/esm/components/template/ExternalVerificationNodeHandler.js +0 -1
  314. package/dist/esm/components/template/TemplateNodeRenderer.js +0 -1
  315. package/dist/esm/components/template/conditionNodePolicy.js +0 -1
  316. package/dist/esm/components/ui/Body.js +0 -1
  317. package/dist/esm/components/ui/Button.js +0 -1
  318. package/dist/esm/components/ui/ButtonDesktop.js +0 -1
  319. package/dist/esm/components/ui/Card.js +0 -1
  320. package/dist/esm/components/ui/MobilePageLayout.js +0 -1
  321. package/dist/esm/components/ui/PDFPreview.js +0 -1
  322. package/dist/esm/components/ui/PageActions.js +0 -1
  323. package/dist/esm/components/ui/Paper.js +0 -1
  324. package/dist/esm/components/ui/PoweredBy.js +0 -1
  325. package/dist/esm/components/ui/QRCodeDisplay.js +0 -1
  326. package/dist/esm/components/ui/SelectComponent.js +0 -1
  327. package/dist/esm/components/ui/Subtitle.js +0 -1
  328. package/dist/esm/components/ui/Title.js +0 -1
  329. package/dist/esm/config/env.js +0 -1
  330. package/dist/esm/constants/userInputForm.js +0 -1
  331. package/dist/esm/context/ConfigContext.js +0 -1
  332. package/dist/esm/context/DocumentContext.js +0 -1
  333. package/dist/esm/context/SessionContext.js +0 -1
  334. package/dist/esm/hooks/useClientInfo.js +0 -1
  335. package/dist/esm/hooks/useCountryOptions.js +0 -1
  336. package/dist/esm/hooks/useI18n.js +0 -1
  337. package/dist/esm/hooks/useIsMobile.js +0 -1
  338. package/dist/esm/hooks/useNfcSseStatus.js +0 -1
  339. package/dist/esm/hooks/useRouteCSS.js +0 -1
  340. package/dist/esm/hooks/useSession.js +0 -1
  341. package/dist/esm/hooks/useSessionData.js +0 -1
  342. package/dist/esm/hooks/useStepCSS.js +0 -1
  343. package/dist/esm/hooks/useStepNavigation.js +0 -1
  344. package/dist/esm/hooks/useTemplateLoader.js +0 -1
  345. package/dist/esm/hooks/useUserInputForm.js +0 -1
  346. package/dist/esm/i18n/country/country.en.json.js +0 -1
  347. package/dist/esm/i18n/country/country.fr.json.js +0 -1
  348. package/dist/esm/i18n/country/country.iso2.en.json.js +0 -1
  349. package/dist/esm/i18n/country/country.iso2.fr.json.js +0 -1
  350. package/dist/esm/i18n/documents/documents.en.json.js +0 -1
  351. package/dist/esm/i18n/documents/documents.fr.json.js +0 -1
  352. package/dist/esm/i18n/en.json.js +0 -1
  353. package/dist/esm/i18n/es.json.js +0 -1
  354. package/dist/esm/i18n/fr.json.js +0 -1
  355. package/dist/esm/i18n/index.js +0 -1
  356. package/dist/esm/index.css.js +0 -1
  357. package/dist/esm/index.js +0 -1
  358. package/dist/esm/node_modules/date-fns/locale/_lib/buildFormatLongFn.js +0 -1
  359. package/dist/esm/node_modules/date-fns/locale/_lib/buildLocalizeFn.js +0 -1
  360. package/dist/esm/node_modules/date-fns/locale/_lib/buildMatchFn.js +0 -1
  361. package/dist/esm/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js +0 -1
  362. package/dist/esm/node_modules/date-fns/locale/en-US/_lib/formatDistance.js +0 -1
  363. package/dist/esm/node_modules/date-fns/locale/en-US/_lib/formatLong.js +0 -1
  364. package/dist/esm/node_modules/date-fns/locale/en-US/_lib/formatRelative.js +0 -1
  365. package/dist/esm/node_modules/date-fns/locale/en-US/_lib/localize.js +0 -1
  366. package/dist/esm/node_modules/date-fns/locale/en-US/_lib/match.js +0 -1
  367. package/dist/esm/node_modules/date-fns/locale/en-US.js +0 -1
  368. package/dist/esm/node_modules/date-fns/locale/fr/_lib/formatDistance.js +0 -1
  369. package/dist/esm/node_modules/date-fns/locale/fr/_lib/formatLong.js +0 -1
  370. package/dist/esm/node_modules/date-fns/locale/fr/_lib/formatRelative.js +0 -1
  371. package/dist/esm/node_modules/date-fns/locale/fr/_lib/localize.js +0 -1
  372. package/dist/esm/node_modules/date-fns/locale/fr/_lib/match.js +0 -1
  373. package/dist/esm/node_modules/date-fns/locale/fr.js +0 -1
  374. package/dist/esm/node_modules/heic2any/dist/heic2any.js +0 -1
  375. package/dist/esm/node_modules/pdfjs-dist/legacy/build/pdf.js +0 -1
  376. package/dist/esm/node_modules/pdfjs-dist/legacy/build/pdf.worker.js +0 -1
  377. package/dist/esm/node_modules/style-inject/dist/style-inject.es.js +0 -1
  378. package/dist/esm/node_modules/tslib/tslib.es6.js +0 -1
  379. package/dist/esm/providers/I18nProvider.js +0 -1
  380. package/dist/esm/services/analysis.js +0 -1
  381. package/dist/esm/services/api.js +0 -1
  382. package/dist/esm/services/auditTrailService.js +0 -1
  383. package/dist/esm/services/cameraService.js +0 -1
  384. package/dist/esm/services/documentEdgeDetectionService.js +0 -1
  385. package/dist/esm/services/documentTemplate.js +0 -1
  386. package/dist/esm/services/iadService.js +0 -1
  387. package/dist/esm/services/integrationService.js +0 -1
  388. package/dist/esm/services/pollingService.js +0 -1
  389. package/dist/esm/services/professionalImageQuality.js +0 -1
  390. package/dist/esm/services/retryService.js +0 -1
  391. package/dist/esm/services/sessionCredentials.js +0 -1
  392. package/dist/esm/services/sessionMemoryStore.js +0 -1
  393. package/dist/esm/services/sessionService.js +0 -1
  394. package/dist/esm/services/utils.js +0 -1
  395. package/dist/esm/types/session.js +0 -1
  396. package/dist/esm/utils/analysisErrors.js +0 -1
  397. package/dist/esm/utils/apiAnalysis.js +0 -1
  398. package/dist/esm/utils/conditionEvaluator.js +0 -1
  399. package/dist/esm/utils/countryFlags.js +0 -1
  400. package/dist/esm/utils/cssLoader.js +0 -1
  401. package/dist/esm/utils/customFieldIds.js +0 -1
  402. package/dist/esm/utils/customFieldValidation.js +0 -1
  403. package/dist/esm/utils/documentLabels.js +0 -1
  404. package/dist/esm/utils/europeanCountries.js +0 -1
  405. package/dist/esm/utils/fileConverter.js +0 -1
  406. package/dist/esm/utils/imageConverter.js +0 -1
  407. package/dist/esm/utils/imageProcessing.js +0 -1
  408. package/dist/esm/utils/isMobileDevice.js +0 -1
  409. package/dist/esm/utils/isoCountryCodes.js +0 -1
  410. package/dist/esm/utils/jdiCodes.js +0 -1
  411. package/dist/esm/utils/labelToKey.js +0 -1
  412. package/dist/esm/utils/listFieldUtils.js +0 -1
  413. package/dist/esm/utils/mimeTypes.js +0 -1
  414. package/dist/esm/utils/navigation.js +0 -1
  415. package/dist/esm/utils/renderInlineMarkdown.js +0 -1
  416. package/dist/esm/utils/sessionStatus.js +0 -1
  417. package/dist/esm/utils/userInputForm.js +0 -1
  418. package/dist/esm/utils/utils.js +0 -1
  419. package/dist/esm/utils/validationUtils.js +0 -1
  420. package/package.json +9 -2
  421. package/.gitlab/issue_templates/bug.md +0 -14
  422. package/.gitlab/issue_templates/feature.md +0 -11
  423. package/.gitlab/issue_templates/task.md +0 -11
  424. package/.gitlab/merge_request_templates/default.md +0 -15
  425. package/.gitlab/merge_request_templates/hotfix.md +0 -15
  426. package/.gitlab-ci.yml +0 -290
  427. package/CLAUDE.md +0 -233
  428. package/__mocks__/@unissey-web/sdk-react.js +0 -17
  429. package/__mocks__/fileMock.js +0 -1
  430. package/__mocks__/pdfjs-dist/legacy/build/pdf.js +0 -5
  431. package/__mocks__/pdfjs-dist/legacy/build/pdf.worker.js +0 -1
  432. package/assets/logo.svg +0 -56
  433. package/axios.install.md +0 -2
  434. package/babel.config.js +0 -15
  435. package/dist/cjs/_virtual/_commonjsHelpers.js.map +0 -1
  436. package/dist/cjs/_virtual/heic2any.js.map +0 -1
  437. package/dist/cjs/_virtual/heic2any2.js.map +0 -1
  438. package/dist/cjs/assets/Face Scan Square.svg.js.map +0 -1
  439. package/dist/cjs/assets/Lightbulb.svg.js.map +0 -1
  440. package/dist/cjs/assets/Monitor Camera.svg.js.map +0 -1
  441. package/dist/cjs/assets/User Hands.svg.js.map +0 -1
  442. package/dist/cjs/assets/before-document.png.js.map +0 -1
  443. package/dist/cjs/assets/before-passport.png.js.map +0 -1
  444. package/dist/cjs/assets/before-photo.png.js.map +0 -1
  445. package/dist/cjs/assets/before-verso.png.js.map +0 -1
  446. package/dist/cjs/assets/check.svg.js.map +0 -1
  447. package/dist/cjs/assets/icons/shield_magic_link.svg.js.map +0 -1
  448. package/dist/cjs/assets/selfietake.svg.js.map +0 -1
  449. package/dist/cjs/components/DatakeenSession.js.map +0 -1
  450. package/dist/cjs/components/document-collection/DocumentCollection.js.map +0 -1
  451. package/dist/cjs/components/document-collection/DocumentCollectionIntroduction.js.map +0 -1
  452. package/dist/cjs/components/document-collection/DocumentCollectionMethodSelection.js.map +0 -1
  453. package/dist/cjs/components/document-collection/DocumentCollectionSelection.js.map +0 -1
  454. package/dist/cjs/components/document-collection/DocumentCollectionUpload.js.map +0 -1
  455. package/dist/cjs/components/document-collection/DocumentError.js.map +0 -1
  456. package/dist/cjs/components/document-collection/DocumentProcessing.js.map +0 -1
  457. package/dist/cjs/components/document-collection/DocumentSuccess.js.map +0 -1
  458. package/dist/cjs/components/document-video/DocumentVideoCapture.js.map +0 -1
  459. package/dist/cjs/components/document-video/DocumentVideoConfirmation.js.map +0 -1
  460. package/dist/cjs/components/document-video/document-video-flow/DocumentVideoFlow.js.map +0 -1
  461. package/dist/cjs/components/document-video/document-video-flow/DocumentVideoInstructions.js.map +0 -1
  462. package/dist/cjs/components/document-video/document-video-flow/DocumentVideoProcessing.js.map +0 -1
  463. package/dist/cjs/components/document-video/document-video-flow/DocumentVideoRecorder.js.map +0 -1
  464. package/dist/cjs/components/icons/ElectronicIcon.js.map +0 -1
  465. package/dist/cjs/components/icons/PoweredByIcon.js.map +0 -1
  466. package/dist/cjs/components/icons/PreIntroIcon.js.map +0 -1
  467. package/dist/cjs/components/icons/StartIcon.js.map +0 -1
  468. package/dist/cjs/components/id-check/BeforePhoto.js.map +0 -1
  469. package/dist/cjs/components/id-check/BeforeVersoPhoto.js.map +0 -1
  470. package/dist/cjs/components/id-check/CameraError.js.map +0 -1
  471. package/dist/cjs/components/id-check/CameraMask.js.map +0 -1
  472. package/dist/cjs/components/id-check/OrientationToggle.js.map +0 -1
  473. package/dist/cjs/components/id-check/Photo.js.map +0 -1
  474. package/dist/cjs/components/id-check/PhotoConfirmation.js.map +0 -1
  475. package/dist/cjs/components/id-check/PhotoPreview.js.map +0 -1
  476. package/dist/cjs/components/jdi/JDDWorkInProgress.js.map +0 -1
  477. package/dist/cjs/components/jdi/JDICountrySelection.js.map +0 -1
  478. package/dist/cjs/components/jdi/JDIDocumentSelection.js.map +0 -1
  479. package/dist/cjs/components/jdi/JDIDocumentUpload.js.map +0 -1
  480. package/dist/cjs/components/jdi/JDIError.js.map +0 -1
  481. package/dist/cjs/components/jdi/JDIPreIntroduction.js.map +0 -1
  482. package/dist/cjs/components/jdi/JDIProcessing.js.map +0 -1
  483. package/dist/cjs/components/jdi/JDISuccess.js.map +0 -1
  484. package/dist/cjs/components/legal-consent/LegalConsentNode.js.map +0 -1
  485. package/dist/cjs/components/nfc-scan/BiometricSymbol.js.map +0 -1
  486. package/dist/cjs/components/nfc-scan/NfcChipGate.js.map +0 -1
  487. package/dist/cjs/components/nfc-scan/NfcFallbackSurvey.js.map +0 -1
  488. package/dist/cjs/components/nfc-scan/NfcOnboardingNotice.js.map +0 -1
  489. package/dist/cjs/components/nfc-scan/NfcScanNode.js.map +0 -1
  490. package/dist/cjs/components/nfc-scan/NfcSuccessAnimation.js.map +0 -1
  491. package/dist/cjs/components/nfc-scan/PuceCniSymbol.js.map +0 -1
  492. package/dist/cjs/components/selfie/SelfieConfirmation.js.map +0 -1
  493. package/dist/cjs/components/selfie/Video.css.js.map +0 -1
  494. package/dist/cjs/components/selfie/Video.js.map +0 -1
  495. package/dist/cjs/components/selfie/VideoFixes.css.js.map +0 -1
  496. package/dist/cjs/components/selfie/VideoResetStyles.js.map +0 -1
  497. package/dist/cjs/components/selfie/hooks/useLiveFrameCapture.js.map +0 -1
  498. package/dist/cjs/components/selfie/hooks/useVideoRecorderStyles.js.map +0 -1
  499. package/dist/cjs/components/selfie/selfie-flow/InstructionsSelfie.js.map +0 -1
  500. package/dist/cjs/components/selfie/selfie-flow/SelfieFlow.js.map +0 -1
  501. package/dist/cjs/components/selfie/selfie-flow/SelfiePreIntroduction.js.map +0 -1
  502. package/dist/cjs/components/selfie/selfie-flow/SelfieProcessing.js.map +0 -1
  503. package/dist/cjs/components/selfie/selfie-flow/SelfieRecorder.js.map +0 -1
  504. package/dist/cjs/components/selfie/utils/selfieCaptureUtils.js.map +0 -1
  505. package/dist/cjs/components/selfie/utils/unisseyStrings.js.map +0 -1
  506. package/dist/cjs/components/selfie/utils/videoElementStyles.js.map +0 -1
  507. package/dist/cjs/components/session/DocumentCheck.js.map +0 -1
  508. package/dist/cjs/components/session/EndFlow.js.map +0 -1
  509. package/dist/cjs/components/session/MobileRedirect.js.map +0 -1
  510. package/dist/cjs/components/session/PdfGeneration.js.map +0 -1
  511. package/dist/cjs/components/session/Selfie.js.map +0 -1
  512. package/dist/cjs/components/session/SessionContent.js.map +0 -1
  513. package/dist/cjs/components/session/SessionExpired.js.map +0 -1
  514. package/dist/cjs/components/session/StartSession.js.map +0 -1
  515. package/dist/cjs/components/session/UserInputForm/AddressFields.js.map +0 -1
  516. package/dist/cjs/components/session/UserInputForm/ContactFields.js.map +0 -1
  517. package/dist/cjs/components/session/UserInputForm/CustomFormFields.js.map +0 -1
  518. package/dist/cjs/components/session/UserInputForm/DatePickerField.js.map +0 -1
  519. package/dist/cjs/components/session/UserInputForm/IdentityFields.js.map +0 -1
  520. package/dist/cjs/components/session/UserInputForm/LegalEntityFields.js.map +0 -1
  521. package/dist/cjs/components/session/UserInputForm/LegalRepFields.js.map +0 -1
  522. package/dist/cjs/components/session/UserInputForm/NationalityField.js.map +0 -1
  523. package/dist/cjs/components/session/UserInputForm.js.map +0 -1
  524. package/dist/cjs/components/session/VideoWorkInProgress.js.map +0 -1
  525. package/dist/cjs/components/session/controleJdiPolicy.js.map +0 -1
  526. package/dist/cjs/components/session/endScreenIcons.js.map +0 -1
  527. package/dist/cjs/components/signature-electronic/DocusealSignature.js.map +0 -1
  528. package/dist/cjs/components/signature-electronic/SignatureElectronic.js.map +0 -1
  529. package/dist/cjs/components/signature-electronic/SignatureElectronicIntroduction.js.map +0 -1
  530. package/dist/cjs/components/signature-electronic/SignedDocumentPreview.js.map +0 -1
  531. package/dist/cjs/components/start-flow/Start.js.map +0 -1
  532. package/dist/cjs/components/states/ErrorState.js.map +0 -1
  533. package/dist/cjs/components/states/LoadingState.js.map +0 -1
  534. package/dist/cjs/components/states/NoSessionIdState.js.map +0 -1
  535. package/dist/cjs/components/template/ComplementaryMandateNodeHandler.js.map +0 -1
  536. package/dist/cjs/components/template/ConditionNodeHandler.js.map +0 -1
  537. package/dist/cjs/components/template/ExternalVerificationNodeHandler.js.map +0 -1
  538. package/dist/cjs/components/template/TemplateNodeRenderer.js.map +0 -1
  539. package/dist/cjs/components/template/conditionNodePolicy.js.map +0 -1
  540. package/dist/cjs/components/ui/Body.js.map +0 -1
  541. package/dist/cjs/components/ui/Button.js.map +0 -1
  542. package/dist/cjs/components/ui/ButtonDesktop.js.map +0 -1
  543. package/dist/cjs/components/ui/Card.js.map +0 -1
  544. package/dist/cjs/components/ui/MobilePageLayout.js.map +0 -1
  545. package/dist/cjs/components/ui/PDFPreview.js.map +0 -1
  546. package/dist/cjs/components/ui/PageActions.js.map +0 -1
  547. package/dist/cjs/components/ui/Paper.js.map +0 -1
  548. package/dist/cjs/components/ui/PoweredBy.js.map +0 -1
  549. package/dist/cjs/components/ui/QRCodeDisplay.js.map +0 -1
  550. package/dist/cjs/components/ui/SelectComponent.js.map +0 -1
  551. package/dist/cjs/components/ui/Subtitle.js.map +0 -1
  552. package/dist/cjs/components/ui/Title.js.map +0 -1
  553. package/dist/cjs/config/env.js.map +0 -1
  554. package/dist/cjs/constants/userInputForm.js.map +0 -1
  555. package/dist/cjs/context/ConfigContext.js.map +0 -1
  556. package/dist/cjs/context/DocumentContext.js.map +0 -1
  557. package/dist/cjs/context/SessionContext.js.map +0 -1
  558. package/dist/cjs/hooks/useClientInfo.js.map +0 -1
  559. package/dist/cjs/hooks/useCountryOptions.js.map +0 -1
  560. package/dist/cjs/hooks/useI18n.js.map +0 -1
  561. package/dist/cjs/hooks/useIsMobile.js.map +0 -1
  562. package/dist/cjs/hooks/useNfcSseStatus.js.map +0 -1
  563. package/dist/cjs/hooks/useRouteCSS.js.map +0 -1
  564. package/dist/cjs/hooks/useSession.js.map +0 -1
  565. package/dist/cjs/hooks/useSessionData.js.map +0 -1
  566. package/dist/cjs/hooks/useStepCSS.js.map +0 -1
  567. package/dist/cjs/hooks/useStepNavigation.js.map +0 -1
  568. package/dist/cjs/hooks/useTemplateLoader.js.map +0 -1
  569. package/dist/cjs/hooks/useUserInputForm.js.map +0 -1
  570. package/dist/cjs/i18n/country/country.en.json.js.map +0 -1
  571. package/dist/cjs/i18n/country/country.fr.json.js.map +0 -1
  572. package/dist/cjs/i18n/country/country.iso2.en.json.js.map +0 -1
  573. package/dist/cjs/i18n/country/country.iso2.fr.json.js.map +0 -1
  574. package/dist/cjs/i18n/documents/documents.en.json.js.map +0 -1
  575. package/dist/cjs/i18n/documents/documents.fr.json.js.map +0 -1
  576. package/dist/cjs/i18n/en.json.js.map +0 -1
  577. package/dist/cjs/i18n/es.json.js.map +0 -1
  578. package/dist/cjs/i18n/fr.json.js.map +0 -1
  579. package/dist/cjs/i18n/index.js.map +0 -1
  580. package/dist/cjs/index.css.js.map +0 -1
  581. package/dist/cjs/index.js.map +0 -1
  582. package/dist/cjs/node_modules/date-fns/locale/_lib/buildFormatLongFn.js.map +0 -1
  583. package/dist/cjs/node_modules/date-fns/locale/_lib/buildLocalizeFn.js.map +0 -1
  584. package/dist/cjs/node_modules/date-fns/locale/_lib/buildMatchFn.js.map +0 -1
  585. package/dist/cjs/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js.map +0 -1
  586. package/dist/cjs/node_modules/date-fns/locale/en-US/_lib/formatDistance.js.map +0 -1
  587. package/dist/cjs/node_modules/date-fns/locale/en-US/_lib/formatLong.js.map +0 -1
  588. package/dist/cjs/node_modules/date-fns/locale/en-US/_lib/formatRelative.js.map +0 -1
  589. package/dist/cjs/node_modules/date-fns/locale/en-US/_lib/localize.js.map +0 -1
  590. package/dist/cjs/node_modules/date-fns/locale/en-US/_lib/match.js.map +0 -1
  591. package/dist/cjs/node_modules/date-fns/locale/en-US.js.map +0 -1
  592. package/dist/cjs/node_modules/date-fns/locale/fr/_lib/formatDistance.js.map +0 -1
  593. package/dist/cjs/node_modules/date-fns/locale/fr/_lib/formatLong.js.map +0 -1
  594. package/dist/cjs/node_modules/date-fns/locale/fr/_lib/formatRelative.js.map +0 -1
  595. package/dist/cjs/node_modules/date-fns/locale/fr/_lib/localize.js.map +0 -1
  596. package/dist/cjs/node_modules/date-fns/locale/fr/_lib/match.js.map +0 -1
  597. package/dist/cjs/node_modules/date-fns/locale/fr.js.map +0 -1
  598. package/dist/cjs/node_modules/heic2any/dist/heic2any.js.map +0 -1
  599. package/dist/cjs/node_modules/pdfjs-dist/legacy/build/pdf.js.map +0 -1
  600. package/dist/cjs/node_modules/pdfjs-dist/legacy/build/pdf.worker.js.map +0 -1
  601. package/dist/cjs/node_modules/style-inject/dist/style-inject.es.js.map +0 -1
  602. package/dist/cjs/node_modules/tslib/tslib.es6.js.map +0 -1
  603. package/dist/cjs/providers/I18nProvider.js.map +0 -1
  604. package/dist/cjs/services/analysis.js.map +0 -1
  605. package/dist/cjs/services/api.js.map +0 -1
  606. package/dist/cjs/services/auditTrailService.js.map +0 -1
  607. package/dist/cjs/services/cameraService.js.map +0 -1
  608. package/dist/cjs/services/documentEdgeDetectionService.js.map +0 -1
  609. package/dist/cjs/services/documentTemplate.js.map +0 -1
  610. package/dist/cjs/services/iadService.js.map +0 -1
  611. package/dist/cjs/services/integrationService.js.map +0 -1
  612. package/dist/cjs/services/pollingService.js.map +0 -1
  613. package/dist/cjs/services/professionalImageQuality.js.map +0 -1
  614. package/dist/cjs/services/retryService.js.map +0 -1
  615. package/dist/cjs/services/sessionCredentials.js.map +0 -1
  616. package/dist/cjs/services/sessionMemoryStore.js.map +0 -1
  617. package/dist/cjs/services/sessionService.js.map +0 -1
  618. package/dist/cjs/services/utils.js.map +0 -1
  619. package/dist/cjs/types/session.js.map +0 -1
  620. package/dist/cjs/utils/analysisErrors.js.map +0 -1
  621. package/dist/cjs/utils/apiAnalysis.js.map +0 -1
  622. package/dist/cjs/utils/conditionEvaluator.js.map +0 -1
  623. package/dist/cjs/utils/countryFlags.js.map +0 -1
  624. package/dist/cjs/utils/cssLoader.js.map +0 -1
  625. package/dist/cjs/utils/customFieldIds.js.map +0 -1
  626. package/dist/cjs/utils/customFieldValidation.js.map +0 -1
  627. package/dist/cjs/utils/documentLabels.js.map +0 -1
  628. package/dist/cjs/utils/europeanCountries.js.map +0 -1
  629. package/dist/cjs/utils/fileConverter.js.map +0 -1
  630. package/dist/cjs/utils/imageConverter.js.map +0 -1
  631. package/dist/cjs/utils/imageProcessing.js.map +0 -1
  632. package/dist/cjs/utils/isMobileDevice.js.map +0 -1
  633. package/dist/cjs/utils/isoCountryCodes.js.map +0 -1
  634. package/dist/cjs/utils/jdiCodes.js.map +0 -1
  635. package/dist/cjs/utils/labelToKey.js.map +0 -1
  636. package/dist/cjs/utils/listFieldUtils.js.map +0 -1
  637. package/dist/cjs/utils/mimeTypes.js.map +0 -1
  638. package/dist/cjs/utils/navigation.js.map +0 -1
  639. package/dist/cjs/utils/renderInlineMarkdown.js.map +0 -1
  640. package/dist/cjs/utils/sessionStatus.js.map +0 -1
  641. package/dist/cjs/utils/userInputForm.js.map +0 -1
  642. package/dist/cjs/utils/utils.js.map +0 -1
  643. package/dist/cjs/utils/validationUtils.js.map +0 -1
  644. package/dist/esm/_virtual/_commonjsHelpers.js.map +0 -1
  645. package/dist/esm/_virtual/heic2any.js.map +0 -1
  646. package/dist/esm/_virtual/heic2any2.js.map +0 -1
  647. package/dist/esm/assets/Face Scan Square.svg.js.map +0 -1
  648. package/dist/esm/assets/Lightbulb.svg.js.map +0 -1
  649. package/dist/esm/assets/Monitor Camera.svg.js.map +0 -1
  650. package/dist/esm/assets/User Hands.svg.js.map +0 -1
  651. package/dist/esm/assets/before-document.png.js.map +0 -1
  652. package/dist/esm/assets/before-passport.png.js.map +0 -1
  653. package/dist/esm/assets/before-photo.png.js.map +0 -1
  654. package/dist/esm/assets/before-verso.png.js.map +0 -1
  655. package/dist/esm/assets/check.svg.js.map +0 -1
  656. package/dist/esm/assets/icons/shield_magic_link.svg.js.map +0 -1
  657. package/dist/esm/assets/selfietake.svg.js.map +0 -1
  658. package/dist/esm/components/DatakeenSession.js.map +0 -1
  659. package/dist/esm/components/document-collection/DocumentCollection.js.map +0 -1
  660. package/dist/esm/components/document-collection/DocumentCollectionIntroduction.js.map +0 -1
  661. package/dist/esm/components/document-collection/DocumentCollectionMethodSelection.js.map +0 -1
  662. package/dist/esm/components/document-collection/DocumentCollectionSelection.js.map +0 -1
  663. package/dist/esm/components/document-collection/DocumentCollectionUpload.js.map +0 -1
  664. package/dist/esm/components/document-collection/DocumentError.js.map +0 -1
  665. package/dist/esm/components/document-collection/DocumentProcessing.js.map +0 -1
  666. package/dist/esm/components/document-collection/DocumentSuccess.js.map +0 -1
  667. package/dist/esm/components/document-video/DocumentVideoCapture.js.map +0 -1
  668. package/dist/esm/components/document-video/DocumentVideoConfirmation.js.map +0 -1
  669. package/dist/esm/components/document-video/document-video-flow/DocumentVideoFlow.js.map +0 -1
  670. package/dist/esm/components/document-video/document-video-flow/DocumentVideoInstructions.js.map +0 -1
  671. package/dist/esm/components/document-video/document-video-flow/DocumentVideoProcessing.js.map +0 -1
  672. package/dist/esm/components/document-video/document-video-flow/DocumentVideoRecorder.js.map +0 -1
  673. package/dist/esm/components/icons/ElectronicIcon.js.map +0 -1
  674. package/dist/esm/components/icons/PoweredByIcon.js.map +0 -1
  675. package/dist/esm/components/icons/PreIntroIcon.js.map +0 -1
  676. package/dist/esm/components/icons/StartIcon.js.map +0 -1
  677. package/dist/esm/components/id-check/BeforePhoto.js.map +0 -1
  678. package/dist/esm/components/id-check/BeforeVersoPhoto.js.map +0 -1
  679. package/dist/esm/components/id-check/CameraError.js.map +0 -1
  680. package/dist/esm/components/id-check/CameraMask.js.map +0 -1
  681. package/dist/esm/components/id-check/OrientationToggle.js.map +0 -1
  682. package/dist/esm/components/id-check/Photo.js.map +0 -1
  683. package/dist/esm/components/id-check/PhotoConfirmation.js.map +0 -1
  684. package/dist/esm/components/id-check/PhotoPreview.js.map +0 -1
  685. package/dist/esm/components/jdi/JDDWorkInProgress.js.map +0 -1
  686. package/dist/esm/components/jdi/JDICountrySelection.js.map +0 -1
  687. package/dist/esm/components/jdi/JDIDocumentSelection.js.map +0 -1
  688. package/dist/esm/components/jdi/JDIDocumentUpload.js.map +0 -1
  689. package/dist/esm/components/jdi/JDIError.js.map +0 -1
  690. package/dist/esm/components/jdi/JDIPreIntroduction.js.map +0 -1
  691. package/dist/esm/components/jdi/JDIProcessing.js.map +0 -1
  692. package/dist/esm/components/jdi/JDISuccess.js.map +0 -1
  693. package/dist/esm/components/legal-consent/LegalConsentNode.js.map +0 -1
  694. package/dist/esm/components/nfc-scan/BiometricSymbol.js.map +0 -1
  695. package/dist/esm/components/nfc-scan/NfcChipGate.js.map +0 -1
  696. package/dist/esm/components/nfc-scan/NfcFallbackSurvey.js.map +0 -1
  697. package/dist/esm/components/nfc-scan/NfcOnboardingNotice.js.map +0 -1
  698. package/dist/esm/components/nfc-scan/NfcScanNode.js.map +0 -1
  699. package/dist/esm/components/nfc-scan/NfcSuccessAnimation.js.map +0 -1
  700. package/dist/esm/components/nfc-scan/PuceCniSymbol.js.map +0 -1
  701. package/dist/esm/components/selfie/SelfieConfirmation.js.map +0 -1
  702. package/dist/esm/components/selfie/Video.css.js.map +0 -1
  703. package/dist/esm/components/selfie/Video.js.map +0 -1
  704. package/dist/esm/components/selfie/VideoFixes.css.js.map +0 -1
  705. package/dist/esm/components/selfie/VideoResetStyles.js.map +0 -1
  706. package/dist/esm/components/selfie/hooks/useLiveFrameCapture.js.map +0 -1
  707. package/dist/esm/components/selfie/hooks/useVideoRecorderStyles.js.map +0 -1
  708. package/dist/esm/components/selfie/selfie-flow/InstructionsSelfie.js.map +0 -1
  709. package/dist/esm/components/selfie/selfie-flow/SelfieFlow.js.map +0 -1
  710. package/dist/esm/components/selfie/selfie-flow/SelfiePreIntroduction.js.map +0 -1
  711. package/dist/esm/components/selfie/selfie-flow/SelfieProcessing.js.map +0 -1
  712. package/dist/esm/components/selfie/selfie-flow/SelfieRecorder.js.map +0 -1
  713. package/dist/esm/components/selfie/utils/selfieCaptureUtils.js.map +0 -1
  714. package/dist/esm/components/selfie/utils/unisseyStrings.js.map +0 -1
  715. package/dist/esm/components/selfie/utils/videoElementStyles.js.map +0 -1
  716. package/dist/esm/components/session/DocumentCheck.js.map +0 -1
  717. package/dist/esm/components/session/EndFlow.js.map +0 -1
  718. package/dist/esm/components/session/MobileRedirect.js.map +0 -1
  719. package/dist/esm/components/session/PdfGeneration.js.map +0 -1
  720. package/dist/esm/components/session/Selfie.js.map +0 -1
  721. package/dist/esm/components/session/SessionContent.js.map +0 -1
  722. package/dist/esm/components/session/SessionExpired.js.map +0 -1
  723. package/dist/esm/components/session/StartSession.js.map +0 -1
  724. package/dist/esm/components/session/UserInputForm/AddressFields.js.map +0 -1
  725. package/dist/esm/components/session/UserInputForm/ContactFields.js.map +0 -1
  726. package/dist/esm/components/session/UserInputForm/CustomFormFields.js.map +0 -1
  727. package/dist/esm/components/session/UserInputForm/DatePickerField.js.map +0 -1
  728. package/dist/esm/components/session/UserInputForm/IdentityFields.js.map +0 -1
  729. package/dist/esm/components/session/UserInputForm/LegalEntityFields.js.map +0 -1
  730. package/dist/esm/components/session/UserInputForm/LegalRepFields.js.map +0 -1
  731. package/dist/esm/components/session/UserInputForm/NationalityField.js.map +0 -1
  732. package/dist/esm/components/session/UserInputForm.js.map +0 -1
  733. package/dist/esm/components/session/VideoWorkInProgress.js.map +0 -1
  734. package/dist/esm/components/session/controleJdiPolicy.js.map +0 -1
  735. package/dist/esm/components/session/endScreenIcons.js.map +0 -1
  736. package/dist/esm/components/signature-electronic/DocusealSignature.js.map +0 -1
  737. package/dist/esm/components/signature-electronic/SignatureElectronic.js.map +0 -1
  738. package/dist/esm/components/signature-electronic/SignatureElectronicIntroduction.js.map +0 -1
  739. package/dist/esm/components/signature-electronic/SignedDocumentPreview.js.map +0 -1
  740. package/dist/esm/components/start-flow/Start.js.map +0 -1
  741. package/dist/esm/components/states/ErrorState.js.map +0 -1
  742. package/dist/esm/components/states/LoadingState.js.map +0 -1
  743. package/dist/esm/components/states/NoSessionIdState.js.map +0 -1
  744. package/dist/esm/components/template/ComplementaryMandateNodeHandler.js.map +0 -1
  745. package/dist/esm/components/template/ConditionNodeHandler.js.map +0 -1
  746. package/dist/esm/components/template/ExternalVerificationNodeHandler.js.map +0 -1
  747. package/dist/esm/components/template/TemplateNodeRenderer.js.map +0 -1
  748. package/dist/esm/components/template/conditionNodePolicy.js.map +0 -1
  749. package/dist/esm/components/ui/Body.js.map +0 -1
  750. package/dist/esm/components/ui/Button.js.map +0 -1
  751. package/dist/esm/components/ui/ButtonDesktop.js.map +0 -1
  752. package/dist/esm/components/ui/Card.js.map +0 -1
  753. package/dist/esm/components/ui/MobilePageLayout.js.map +0 -1
  754. package/dist/esm/components/ui/PDFPreview.js.map +0 -1
  755. package/dist/esm/components/ui/PageActions.js.map +0 -1
  756. package/dist/esm/components/ui/Paper.js.map +0 -1
  757. package/dist/esm/components/ui/PoweredBy.js.map +0 -1
  758. package/dist/esm/components/ui/QRCodeDisplay.js.map +0 -1
  759. package/dist/esm/components/ui/SelectComponent.js.map +0 -1
  760. package/dist/esm/components/ui/Subtitle.js.map +0 -1
  761. package/dist/esm/components/ui/Title.js.map +0 -1
  762. package/dist/esm/config/env.js.map +0 -1
  763. package/dist/esm/constants/userInputForm.js.map +0 -1
  764. package/dist/esm/context/ConfigContext.js.map +0 -1
  765. package/dist/esm/context/DocumentContext.js.map +0 -1
  766. package/dist/esm/context/SessionContext.js.map +0 -1
  767. package/dist/esm/hooks/useClientInfo.js.map +0 -1
  768. package/dist/esm/hooks/useCountryOptions.js.map +0 -1
  769. package/dist/esm/hooks/useI18n.js.map +0 -1
  770. package/dist/esm/hooks/useIsMobile.js.map +0 -1
  771. package/dist/esm/hooks/useNfcSseStatus.js.map +0 -1
  772. package/dist/esm/hooks/useRouteCSS.js.map +0 -1
  773. package/dist/esm/hooks/useSession.js.map +0 -1
  774. package/dist/esm/hooks/useSessionData.js.map +0 -1
  775. package/dist/esm/hooks/useStepCSS.js.map +0 -1
  776. package/dist/esm/hooks/useStepNavigation.js.map +0 -1
  777. package/dist/esm/hooks/useTemplateLoader.js.map +0 -1
  778. package/dist/esm/hooks/useUserInputForm.js.map +0 -1
  779. package/dist/esm/i18n/country/country.en.json.js.map +0 -1
  780. package/dist/esm/i18n/country/country.fr.json.js.map +0 -1
  781. package/dist/esm/i18n/country/country.iso2.en.json.js.map +0 -1
  782. package/dist/esm/i18n/country/country.iso2.fr.json.js.map +0 -1
  783. package/dist/esm/i18n/documents/documents.en.json.js.map +0 -1
  784. package/dist/esm/i18n/documents/documents.fr.json.js.map +0 -1
  785. package/dist/esm/i18n/en.json.js.map +0 -1
  786. package/dist/esm/i18n/es.json.js.map +0 -1
  787. package/dist/esm/i18n/fr.json.js.map +0 -1
  788. package/dist/esm/i18n/index.js.map +0 -1
  789. package/dist/esm/index.css.js.map +0 -1
  790. package/dist/esm/index.js.map +0 -1
  791. package/dist/esm/node_modules/date-fns/locale/_lib/buildFormatLongFn.js.map +0 -1
  792. package/dist/esm/node_modules/date-fns/locale/_lib/buildLocalizeFn.js.map +0 -1
  793. package/dist/esm/node_modules/date-fns/locale/_lib/buildMatchFn.js.map +0 -1
  794. package/dist/esm/node_modules/date-fns/locale/_lib/buildMatchPatternFn.js.map +0 -1
  795. package/dist/esm/node_modules/date-fns/locale/en-US/_lib/formatDistance.js.map +0 -1
  796. package/dist/esm/node_modules/date-fns/locale/en-US/_lib/formatLong.js.map +0 -1
  797. package/dist/esm/node_modules/date-fns/locale/en-US/_lib/formatRelative.js.map +0 -1
  798. package/dist/esm/node_modules/date-fns/locale/en-US/_lib/localize.js.map +0 -1
  799. package/dist/esm/node_modules/date-fns/locale/en-US/_lib/match.js.map +0 -1
  800. package/dist/esm/node_modules/date-fns/locale/en-US.js.map +0 -1
  801. package/dist/esm/node_modules/date-fns/locale/fr/_lib/formatDistance.js.map +0 -1
  802. package/dist/esm/node_modules/date-fns/locale/fr/_lib/formatLong.js.map +0 -1
  803. package/dist/esm/node_modules/date-fns/locale/fr/_lib/formatRelative.js.map +0 -1
  804. package/dist/esm/node_modules/date-fns/locale/fr/_lib/localize.js.map +0 -1
  805. package/dist/esm/node_modules/date-fns/locale/fr/_lib/match.js.map +0 -1
  806. package/dist/esm/node_modules/date-fns/locale/fr.js.map +0 -1
  807. package/dist/esm/node_modules/heic2any/dist/heic2any.js.map +0 -1
  808. package/dist/esm/node_modules/pdfjs-dist/legacy/build/pdf.js.map +0 -1
  809. package/dist/esm/node_modules/pdfjs-dist/legacy/build/pdf.worker.js.map +0 -1
  810. package/dist/esm/node_modules/style-inject/dist/style-inject.es.js.map +0 -1
  811. package/dist/esm/node_modules/tslib/tslib.es6.js.map +0 -1
  812. package/dist/esm/providers/I18nProvider.js.map +0 -1
  813. package/dist/esm/services/analysis.js.map +0 -1
  814. package/dist/esm/services/api.js.map +0 -1
  815. package/dist/esm/services/auditTrailService.js.map +0 -1
  816. package/dist/esm/services/cameraService.js.map +0 -1
  817. package/dist/esm/services/documentEdgeDetectionService.js.map +0 -1
  818. package/dist/esm/services/documentTemplate.js.map +0 -1
  819. package/dist/esm/services/iadService.js.map +0 -1
  820. package/dist/esm/services/integrationService.js.map +0 -1
  821. package/dist/esm/services/pollingService.js.map +0 -1
  822. package/dist/esm/services/professionalImageQuality.js.map +0 -1
  823. package/dist/esm/services/retryService.js.map +0 -1
  824. package/dist/esm/services/sessionCredentials.js.map +0 -1
  825. package/dist/esm/services/sessionMemoryStore.js.map +0 -1
  826. package/dist/esm/services/sessionService.js.map +0 -1
  827. package/dist/esm/services/utils.js.map +0 -1
  828. package/dist/esm/types/session.js.map +0 -1
  829. package/dist/esm/utils/analysisErrors.js.map +0 -1
  830. package/dist/esm/utils/apiAnalysis.js.map +0 -1
  831. package/dist/esm/utils/conditionEvaluator.js.map +0 -1
  832. package/dist/esm/utils/countryFlags.js.map +0 -1
  833. package/dist/esm/utils/cssLoader.js.map +0 -1
  834. package/dist/esm/utils/customFieldIds.js.map +0 -1
  835. package/dist/esm/utils/customFieldValidation.js.map +0 -1
  836. package/dist/esm/utils/documentLabels.js.map +0 -1
  837. package/dist/esm/utils/europeanCountries.js.map +0 -1
  838. package/dist/esm/utils/fileConverter.js.map +0 -1
  839. package/dist/esm/utils/imageConverter.js.map +0 -1
  840. package/dist/esm/utils/imageProcessing.js.map +0 -1
  841. package/dist/esm/utils/isMobileDevice.js.map +0 -1
  842. package/dist/esm/utils/isoCountryCodes.js.map +0 -1
  843. package/dist/esm/utils/jdiCodes.js.map +0 -1
  844. package/dist/esm/utils/labelToKey.js.map +0 -1
  845. package/dist/esm/utils/listFieldUtils.js.map +0 -1
  846. package/dist/esm/utils/mimeTypes.js.map +0 -1
  847. package/dist/esm/utils/navigation.js.map +0 -1
  848. package/dist/esm/utils/renderInlineMarkdown.js.map +0 -1
  849. package/dist/esm/utils/sessionStatus.js.map +0 -1
  850. package/dist/esm/utils/userInputForm.js.map +0 -1
  851. package/dist/esm/utils/utils.js.map +0 -1
  852. package/dist/esm/utils/validationUtils.js.map +0 -1
  853. package/docs/COMPLEMENTARY_MANDATE.md +0 -22
  854. package/docs/GITLAB_BADGES_SETUP.md +0 -317
  855. package/docs/JOURNEY_NODE_BUILDER.md +0 -222
  856. package/docs/POLLING_SYSTEM.md +0 -699
  857. package/docs/README.md +0 -254
  858. package/docs/SESSION_TOKEN_MIGRATION.md +0 -52
  859. package/docs/condition-node.md +0 -651
  860. package/docs/configuration.md +0 -113
  861. package/docs/dynamic-configuration.md +0 -97
  862. package/docs/environment.md +0 -27
  863. package/docs/migration-guide.md +0 -120
  864. package/docs/multi-runs.md +0 -111
  865. package/docs/navigation-history.md +0 -163
  866. package/docs/sdk_integration_guide.md +0 -58
  867. package/eslint.config.js +0 -13
  868. package/examples/analysis-progress-example.tsx +0 -220
  869. package/examples/sdk-configuration.ts +0 -187
  870. package/examples/test-updated-urls.ts +0 -162
  871. package/examples/usage-example.tsx +0 -49
  872. package/jest.config.js +0 -32
  873. package/postcss.config.js +0 -6
  874. package/renovate.json +0 -242
  875. package/rollup.asset-url-plugin.js +0 -38
  876. package/rollup.dev.config.js +0 -65
  877. package/setupTests.js +0 -41
  878. package/tailwind.config.js +0 -11
@@ -1 +0,0 @@
1
- {"version":3,"file":"EndFlow.js","sources":["../../../../../src/components/session/EndFlow.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport { HeartHandshake, Send, Mail } from \"lucide-react\";\nimport checkIcon from \"../../assets/check.svg\";\nimport LoadingState from \"../states/LoadingState\";\nimport Button from \"../ui/Button\";\nimport PageActions from \"../ui/PageActions\";\nimport Title from \"../ui/Title\";\nimport Subtitle from \"../ui/Subtitle\";\nimport {\n clearSessionSensitiveData,\n updateSessionStatus,\n} from \"../../services/sessionService\";\nimport { logSessionEnded } from \"../../services/auditTrailService\";\nimport MobilePageLayout from \"../ui/MobilePageLayout\";\nimport { useI18n } from \"../../hooks/useI18n\";\nimport useIsMobile from \"../../hooks/useIsMobile\";\nimport type { EndScreenCase } from \"../../types/session\";\nimport { resolveEndScreenIcon } from \"./endScreenIcons\";\nimport { replaceLocation } from \"../../utils/navigation\";\n\n// Couleur des icônes = couleur du bouton choisie pour le journey (buttonBgColor).\nconst ICON_COLOR = \"var(--dk-btn-bg, #11e5c5)\";\n\ninterface EndFlowProps {\n sessionId: string;\n sessionStatus?: string; // Ajout du statut de session optionnel\n callbackURL?: string | null;\n endNodeId?: string; // Id du nœud `end` atteint, transmis au backend pour forcer le bon statut\n expectedResult?: string; // Résultat forcé du nœud end atteint (ex: 'non_compliant')\n /** Textes de fin personnalisés (config globale du journey). Vide → fallback standard. */\n compliantCase?: EndScreenCase;\n nonCompliantCase?: EndScreenCase;\n /**\n * true si la session était déjà terminée à l'arrivée sur ce composant\n * (reprise d'une session déjà consolidée, ex: sessionStatus=\"verify\").\n * Dans ce cas on n'appelle pas updateSessionStatus au montage — la session\n * a déjà un résultat, renvoyer \"ended\" + endNodeId ré-ouvrirait une\n * décision déjà prise et risquerait de forcer un nœud \"end\" jamais\n * légitimement atteint (bug de reprise par index). L'écran affiché reflète\n * directement le statut déjà connu de la session.\n */\n alreadyFinished?: boolean;\n}\n\n/**\n * EndFlow Component\n *\n * Composant affiché à la fin du flux de vérification lorsque toutes les étapes ont été complétées.\n * Affiche un message de confirmation avec une icône de succès.\n *\n * @param {EndFlowProps} props - Propriétés du composant\n * @param {string} props.sessionId - L'identifiant de la session\n * @param {string} props.sessionStatus - Le statut actuel de la session\n * @returns {JSX.Element} Le composant EndFlow\n */\nconst EndFlow: React.FC<EndFlowProps> = ({\n sessionId,\n sessionStatus,\n callbackURL,\n endNodeId,\n expectedResult,\n compliantCase,\n nonCompliantCase,\n alreadyFinished,\n}) => {\n const [isEnding, setIsEnding] = useState(false);\n const [isRedirecting, setIsRedirecting] = useState(false);\n const [shouldRedirect, setShouldRedirect] = useState(false);\n // Statut consolidé renvoyé par le backend après updateSessionStatus —\n // sert à détecter un échec « poursuivre quand même » non porté par\n // expectedResult. Si la session était déjà terminée à l'arrivée, on la\n // connaît déjà (sessionStatus) : pas besoin d'attendre le backend.\n const [backendStatus, setBackendStatus] = useState<string | undefined>(\n alreadyFinished ? sessionStatus : undefined,\n );\n // Le verdict backend arrive de façon asynchrone (~1-2s). On le marque résolu\n // pour éviter de flasher l'écran succès puis basculer sur l'écran erreur.\n // Déjà résolu si la session était déjà terminée (pas d'appel réseau à attendre).\n const [statusResolved, setStatusResolved] = useState(\n Boolean(alreadyFinished),\n );\n const { t } = useI18n();\n const isMobile = useIsMobile(768);\n // Décalage horizontal du bloc d'items réservé au desktop. On le pilote en JS\n // (useIsMobile, cohérent avec le composant Button) plutôt que via `md:` Tailwind :\n // les variantes responsive `md:translate-*` ne sont pas fiables dans le bundle SDK.\n // Utilisé uniquement par l'écran d'erreur générique hardcodé ci-dessous.\n const desktopTranslateX = isMobile ? \"\" : \"translate-x-10\";\n // Même décalage, mais via padding plutôt que transform — réservé aux écrans à\n // message personnalisé (renderCustomCase) : un `transform: translateX(...)` ne fait\n // déborder aucune boîte visuellement, mais contribue quand même au \"scrollable\n // overflow\" du conteneur `overflow-y-auto` ancêtre (DatakeenSession), ce qui\n // affichait une scrollbar horizontale fantôme sur desktop. `padding-left` reste\n // contenu dans la largeur déclarée (box-sizing: border-box global du SDK), donc ne\n // peut pas produire ce débordement invisible.\n const desktopOffsetX = isMobile ? \"\" : \"pl-10\";\n\n // Le nœud end peut déjà forcer un résultat non conforme : dans ce cas on\n // connaît l'issue sans attendre le backend.\n const expectedError =\n expectedResult === \"non_compliant\" || expectedResult === \"error\";\n\n // L'écran « erreur conservée » s'affiche si le nœud end force un résultat\n // non conforme, OU si le backend a consolidé un statut d'échec/vérification.\n const isError =\n expectedError ||\n backendStatus === \"ai_rejected\" ||\n backendStatus === \"verify\";\n\n // Tant que le verdict n'est pas connu (ni forcé par le nœud, ni renvoyé par\n // le backend), on affiche un état neutre plutôt que de présumer le succès.\n const isResolving = !expectedError && !statusResolved;\n\n // Trigger session end as soon as the user reaches this screen,\n // regardless of whether they click the button (e.g. tab close).\n // Skipped when the session was already finished on arrival: the backend\n // ignores this PATCH anyway (session already consolidated), and resending\n // it risks forcing a phantom \"end\" node reached only through a resumption\n // index mismatch, not a real navigation.\n useEffect(() => {\n if (alreadyFinished) {\n return;\n }\n updateSessionStatus(sessionId, \"ended\", endNodeId)\n .then((updatedSession) => {\n if (updatedSession?.status) {\n setBackendStatus(updatedSession.status);\n }\n if (updatedSession && updatedSession.analysisId) {\n logSessionEnded(sessionId).catch((err) => {\n console.error(\"Failed to log session end in audit trail:\", err);\n });\n }\n })\n .catch((error) => {\n console.error(\"Error updating session status on EndFlow mount:\", error);\n })\n .finally(() => {\n // Verdict connu (ou échec d'appel) : on peut afficher l'écran final.\n setStatusResolved(true);\n });\n }, []);\n\n const handleEndSession = async () => {\n setIsEnding(true);\n try {\n clearSessionSensitiveData(sessionId);\n } catch (error) {\n console.error(\"Erreur lors de la finalisation de la session:\", error);\n } finally {\n setIsEnding(false);\n if (callbackURL) {\n setIsRedirecting(true);\n setShouldRedirect(true);\n } else {\n // Forcer la fermeture immédiatement lorsqu'aucune redirection n'est attendue\n closeWindow();\n }\n }\n };\n\n const redirectToCallback = (url: string) => {\n try {\n replaceLocation(url);\n } catch (e) {\n console.error(\"Redirection vers le callback échouée:\", e);\n setIsRedirecting(false);\n closeWindow();\n }\n };\n\n useEffect(() => {\n if (sessionStatus === \"ended\" && callbackURL && !shouldRedirect) {\n setIsRedirecting(true);\n setShouldRedirect(true);\n }\n }, [sessionStatus, callbackURL, shouldRedirect]);\n\n useEffect(() => {\n if (!shouldRedirect || !callbackURL) {\n return;\n }\n\n const REDIRECT_DELAY_MS = 2000;\n const timer = window.setTimeout(\n () => redirectToCallback(callbackURL),\n REDIRECT_DELAY_MS,\n );\n return () => window.clearTimeout(timer);\n }, [shouldRedirect, callbackURL]);\n\n const closeWindow = () => {\n console.log(\"Tentative de fermeture de la fenêtre...\");\n\n // Méthode 1: Si dans un iframe, communiquer avec le parent IMMÉDIATEMENT\n if (window.parent && window.parent !== window) {\n try {\n window.parent.postMessage(\n {\n action: \"closeSession\",\n sessionId,\n status: \"ended\",\n message: \"Session terminée, veuillez fermer cette fenêtre\",\n },\n \"*\",\n );\n console.log(\"Message envoyé au parent pour fermeture\");\n } catch (e) {\n console.log(\"postMessage échoué:\", e);\n }\n }\n\n // Méthode 2: Essayer window.close() avec différentes approches\n try {\n // Essayer close direct\n window.close();\n console.log(\"window.close() direct appelé\");\n } catch (e) {\n console.log(\"window.close() direct échoué:\", e);\n }\n\n // Méthode 3: Si on a un opener, essayer de se fermer via l'opener\n setTimeout(() => {\n try {\n if (window.opener) {\n window.opener.focus();\n window.close();\n console.log(\"Fermeture via opener\");\n }\n } catch (e) {\n console.log(\"Fermeture via opener échouée:\", e);\n }\n }, 100);\n\n // Méthode 4: Forcer avec self.close()\n setTimeout(() => {\n try {\n self.close();\n console.log(\"self.close() appelé\");\n } catch (e) {\n console.log(\"self.close() échoué:\", e);\n }\n }, 200);\n\n // Méthode 5: Essayer de manipuler l'historique pour forcer la fermeture\n setTimeout(() => {\n try {\n window.history.back();\n window.close();\n console.log(\"history.back() + close\");\n } catch (e) {\n console.log(\"history.back() + close échoué:\", e);\n }\n }, 300);\n\n // Méthode 6: Rediriger vers une page de fermeture personnalisée\n setTimeout(() => {\n try {\n // Créer une URL de données avec un script de fermeture automatique\n const closeScript = `\n <html>\n <head><title>Session terminée</title></head>\n <body style=\"margin:0;padding:0;background:#f0f0f0;font-family:Arial,sans-serif;\">\n <div style=\"display:flex;flex-direction:column;justify-content:center;align-items:center;height:100vh;text-align:center;\">\n <h1 style=\"color:#4ade80;margin-bottom:20px;\">✅ Session terminée avec succès</h1>\n <p style=\"color:#666;margin-bottom:30px;\">Cette fenêtre va se fermer automatiquement.</p>\n <button onclick=\"attemptClose()\" style=\"background:#3b82f6;color:white;border:none;padding:12px 24px;border-radius:6px;cursor:pointer;font-size:16px;\">\n Fermer maintenant\n </button>\n </div>\n <script>\n function attemptClose() {\n try {\n window.close();\n self.close();\n if (window.opener) {\n window.opener.focus();\n window.close();\n }\n if (window.parent && window.parent !== window) {\n window.parent.postMessage({action:'closeWindow'}, '*');\n }\n } catch(e) {\n console.log('Fermeture impossible:', e);\n document.body.innerHTML = '<div style=\"text-align:center;padding:50px;\"><h2>Veuillez fermer cette fenêtre manuellement</h2><p>Appuyez sur Alt+F4 ou cliquez sur le X</p></div>';\n }\n }\n // Essayer de fermer automatiquement après 1 seconde\n setTimeout(attemptClose, 1000);\n </script>\n </body>\n </html>\n `;\n const dataUrl =\n \"data:text/html;charset=utf-8,\" + encodeURIComponent(closeScript);\n replaceLocation(dataUrl);\n console.log(\"Redirection vers page de fermeture personnalisée\");\n } catch (e) {\n console.log(\"Redirection vers page personnalisée échouée:\", e);\n }\n }, 500);\n };\n\n // Rendu d'un jeu de textes de fin personnalisé (titre ancré en haut,\n // items centrés verticalement, icônes à la couleur du bouton du journey).\n const renderCustomCase = (config: EndScreenCase, fallbackTitle: string) => (\n <div className=\"flex flex-1 flex-col items-center h-full px-4 pt-10 pb-8 md:px-8\">\n <Title className=\"text-2xl md:text-3xl text-center\">\n {config.title?.trim() || fallbackTitle}\n </Title>\n <div className=\"flex flex-1 items-center w-full max-w-md mx-auto\">\n {/* Padding appliqué uniquement sur desktop (md+) ; sur mobile il\n décalait le texte hors écran et le tronquait. */}\n <div\n className={`flex w-full flex-col items-start gap-7 -translate-y-20 ${desktopOffsetX}`}\n >\n {config.items.map((item, index) => {\n const Icon = resolveEndScreenIcon(item.icon);\n return (\n <div\n key={index}\n className=\"flex w-full items-center gap-4 text-left\"\n >\n <Icon\n className=\"w-7 h-7 shrink-0\"\n style={{ color: ICON_COLOR }}\n />\n <span className=\"flex-1 text-base md:text-lg text-[#3C3C40]\">\n {item.text}\n </span>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n );\n\n const hasCustomError = !!nonCompliantCase?.items?.length;\n const hasCustomSuccess = !!compliantCase?.items?.length;\n\n // En attente du verdict backend : éviter le flash de l'écran succès.\n if (isResolving) {\n return (\n <LoadingState\n message={t(\"session.end.finalizing\", \"Finalisation du parcours...\")}\n subtitle=\"\"\n />\n );\n }\n\n return (\n <MobilePageLayout\n footer={\n <PageActions\n primary={\n <Button\n onClick={handleEndSession}\n disabled={isEnding || isRedirecting}\n >\n {isRedirecting\n ? t(\"session.end.button_redirecting\", \"Redirection...\")\n : isEnding\n ? t(\"session.end.button_finalizing\", \"Finalisation...\")\n : t(\"session.end.button_end\", \"Terminer\")}\n </Button>\n }\n />\n }\n >\n {isError ? (\n hasCustomError ? (\n renderCustomCase(\n nonCompliantCase as EndScreenCase,\n t(\"session.end.error_title\", \"Les prochaines étapes\"),\n )\n ) : (\n <div className=\"flex flex-1 flex-col items-center h-full px-4 pt-10 pb-8 md:px-8\">\n {/* Titre ancré en haut */}\n <Title className=\"text-2xl md:text-3xl text-center\">\n {t(\"session.end.error_title\", \"Les prochaines étapes\")}\n </Title>\n\n {/* Liste centrée verticalement dans l'espace restant */}\n <div className=\"flex flex-1 items-center w-full max-w-md mx-auto\">\n {/* Translate desktop-only : sur mobile il tronquait le texte. */}\n <div\n className={`flex w-full flex-col items-start gap-7 -translate-y-20 ${desktopTranslateX}`}\n >\n {[\n {\n Icon: HeartHandshake,\n key: \"session.end.error_step_thanks\",\n fallback: \"Nous vous remercions pour ces informations\",\n },\n {\n Icon: Send,\n key: \"session.end.error_step_transmitted\",\n fallback: \"Votre dossier a été transmis à notre équipe\",\n },\n {\n Icon: Mail,\n key: \"session.end.error_step_contact\",\n fallback: \"Nous vous recontacterons si nécessaire\",\n },\n ].map(({ Icon, key, fallback }) => (\n <div\n key={key}\n className=\"flex w-full items-center gap-4 text-left\"\n >\n <Icon\n className=\"w-7 h-7 shrink-0\"\n style={{ color: ICON_COLOR }}\n />\n <span className=\"flex-1 text-base md:text-lg text-[#3C3C40]\">\n {t(key, fallback)}\n </span>\n </div>\n ))}\n </div>\n </div>\n </div>\n )\n ) : hasCustomSuccess ? (\n renderCustomCase(\n compliantCase as EndScreenCase,\n t(\"session.end.title\", \"C'est tout bon !\"),\n )\n ) : (\n <div className=\"flex flex-1 flex-col items-center justify-center h-full px-4 py-8 md:px-8\">\n <div className=\"w-full max-w-md mx-auto text-center space-y-6\">\n {/* Icon - shown on top for both mobile and desktop */}\n <div className=\"flex justify-center\">\n <img\n src={checkIcon}\n alt={t(\"session.end.image_alt\", \"Vérification terminée\")}\n className=\"w-48 h-48\"\n />\n </div>\n\n {/* Text content */}\n <div className=\"space-y-4\">\n <Title className=\"text-xl md:text-2xl lg:text-3xl\">\n {t(\"session.end.title\", \"C'est tout bon !\")}\n </Title>\n <Subtitle className=\"text-sm md:text-base text-gray-600 leading-relaxed\">\n {t(\n \"session.end.subtitle\",\n \"Merci d'avoir terminé ce parcours, vous pouvez quitter cette fenêtre.\",\n )}\n </Subtitle>\n </div>\n </div>\n </div>\n )}\n </MobilePageLayout>\n );\n};\n\nexport default EndFlow;\n"],"names":["useState","useI18n","useIsMobile","useEffect","updateSessionStatus","logSessionEnded","__awaiter","clearSessionSensitiveData","replaceLocation","_jsxs","_jsx","Title","resolveEndScreenIcon","LoadingState","MobilePageLayout","PageActions","Button","HeartHandshake","Send","Mail","checkIcon","Subtitle"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"MobileRedirect.js","sources":["../../../../../src/components/session/MobileRedirect.tsx"],"sourcesContent":["import { getSessionCredential } from '../../services/sessionCredentials';\nimport { useEffect, useState } from \"react\";\nimport useIsMobile from \"../../hooks/useIsMobile\";\nimport QRCodeDisplay from \"../ui/QRCodeDisplay\";\n\ninterface MobileRedirectProps {\n sessionId: string;\n children?: React.ReactNode;\n onBack?: () => void;\n onContinueOnPC?: () => void;\n title?: string;\n subtitle?: string;\n isDesktopAllowed?: boolean;\n}\n\nconst MobileRedirect = ({\n sessionId,\n children,\n onBack,\n onContinueOnPC,\n isDesktopAllowed,\n title,\n subtitle,\n}: MobileRedirectProps) => {\n const isMobile = useIsMobile();\n const [currentUrl, setCurrentUrl] = useState(\"\");\n\n useEffect(() => {\n // Only generate URL if sessionId is available\n if (!sessionId) return;\n\n // Generate the mobile URL with the session ID\n const baseUrl = window.location.origin + window.location.pathname;\n const url = new URL(baseUrl);\n url.searchParams.set(\"sessionId\", sessionId);\n url.searchParams.set(\"mobile\", \"true\");\n const token = getSessionCredential(sessionId);\n if (token) url.hash = new URLSearchParams({ sessionToken: token }).toString();\n const mobileUrl = url.toString();\n\n setCurrentUrl(mobileUrl);\n }, [sessionId]);\n\n // If the user is on mobile, automatically continue to next step\n useEffect(() => {\n if (isMobile) {\n if (onContinueOnPC) {\n onContinueOnPC();\n } else {\n // Even if onContinueOnPC is not defined, we should not show the QR code on mobile\n console.warn(\n \"User is on mobile but onContinueOnPC callback is not provided. Cannot proceed automatically.\"\n );\n }\n }\n }, [isMobile, onContinueOnPC]);\n\n // If the user is on mobile, show the normal session flow (or will redirect automatically)\n if (isMobile) {\n return <>{children || null}</>;\n }\n\n // If the user is on desktop, show the QR code redirect\n return (\n <QRCodeDisplay\n url={currentUrl}\n title={title || \"Continuer sur mobile\"}\n subtitle={subtitle || \"Scannez ce QR code pour continuer la vérification d'identité sur votre smartphone.\"}\n onBack={onBack}\n onContinueOnPC={onContinueOnPC}\n isDesktopAllowed={isDesktopAllowed}\n />\n );\n};\n\nexport default MobileRedirect;\n"],"names":["useIsMobile","useState","useEffect","getSessionCredential","_jsx","_Fragment","QRCodeDisplay"],"mappings":";;;;;;;;;;AAeA,IAAM,cAAc,GAAG,UAAC,EAQF,EAAA;AAPpB,IAAA,IAAA,SAAS,eAAA,EACT,QAAQ,cAAA,EACR,MAAM,YAAA,EACN,cAAc,GAAA,EAAA,CAAA,cAAA,EACd,gBAAgB,GAAA,EAAA,CAAA,gBAAA,EAChB,KAAK,GAAA,EAAA,CAAA,KAAA,EACL,QAAQ,GAAA,EAAA,CAAA,QAAA;AAER,IAAA,IAAM,QAAQ,GAAGA,mBAAW,EAAE;IACxB,IAAA,EAAA,GAA8BC,cAAQ,CAAC,EAAE,CAAC,EAAzC,UAAU,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,aAAa,GAAA,EAAA,CAAA,CAAA,CAAgB;AAEhD,IAAAC,eAAS,CAAC,YAAA;;AAER,QAAA,IAAI,CAAC,SAAS;YAAE;;AAGhB,QAAA,IAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ;AACjE,QAAA,IAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC;QAC5B,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC;QAC5C,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtC,QAAA,IAAM,KAAK,GAAGC,uCAAoB,CAAC,SAAS,CAAC;AAC7C,QAAA,IAAI,KAAK;AAAE,YAAA,GAAG,CAAC,IAAI,GAAG,IAAI,eAAe,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE;AAC7E,QAAA,IAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,EAAE;QAEhC,aAAa,CAAC,SAAS,CAAC;AAC1B,IAAA,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;;AAGf,IAAAD,eAAS,CAAC,YAAA;QACR,IAAI,QAAQ,EAAE;YACZ,IAAI,cAAc,EAAE;AAClB,gBAAA,cAAc,EAAE;YAClB;iBAAO;;AAEL,gBAAA,OAAO,CAAC,IAAI,CACV,8FAA8F,CAC/F;YACH;QACF;AACF,IAAA,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;;IAG9B,IAAI,QAAQ,EAAE;AACZ,QAAA,OAAOE,cAAA,CAAAC,mBAAA,EAAA,EAAA,QAAA,EAAG,QAAQ,IAAI,IAAI,GAAI;IAChC;;AAGA,IAAA,QACED,cAAA,CAACE,qBAAa,EAAA,EACZ,GAAG,EAAE,UAAU,EACf,KAAK,EAAE,KAAK,IAAI,sBAAsB,EACtC,QAAQ,EAAE,QAAQ,IAAI,oFAAoF,EAC1G,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,cAAc,EAC9B,gBAAgB,EAAE,gBAAgB,EAAA,CAClC;AAEN;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"PdfGeneration.js","sources":["../../../../../src/components/session/PdfGeneration.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport LoadingState from \"../states/LoadingState\";\nimport { apiService } from \"../../services/api\";\nimport { useI18n } from \"../../hooks/useI18n\";\nimport type { SessionData, stepObject } from \"../../types/session\";\nimport type { UserInput } from \"../../types/userInput\";\n\ninterface PdfGenerationProps {\n node: {\n id: string;\n type: string;\n pageTitle?: string;\n pageDescription?: string;\n };\n session: SessionData;\n sessionId: string;\n stepObject: stepObject;\n userInput: UserInput;\n}\n\nconst PdfGeneration: React.FC<PdfGenerationProps> = ({\n node,\n session,\n sessionId,\n stepObject,\n userInput,\n}) => {\n const { t } = useI18n();\n const [status, setStatus] = useState<\"loading\" | \"ready\" | \"error\">(\n \"loading\",\n );\n const [runId, setRunId] = useState(0);\n const [generationError, setGenerationError] = useState<string | null>(null);\n\n const baseURL = (apiService.getRawClient().defaults.baseURL || \"\").replace(\n /\\/+$/,\n \"\",\n );\n const generatedPdfPath = `/session/sdk/${sessionId}/generated-pdf/${node.id}.pdf`;\n const [generatedPdfUrl, setGeneratedPdfUrl] = useState('');\n const downloadPdfUrl = generatedPdfUrl;\n\n const isDevEnv = /localhost|app\\.dev\\.datakeen\\.co/.test(baseURL);\n\n useEffect(() => {\n let cancelled = false;\n let objectUrl: string | undefined;\n\n const generate = async () => {\n try {\n await apiService.post(\n `/session/sdk/${sessionId}/generate-pdf`,\n {\n nodeId: node.id,\n userInput: {\n ...userInput,\n customFormData: (userInput as any).customFormData ?? {},\n },\n },\n { timeout: 60_000 }, // PDF generation can take up to 60s\n );\n\n if (!cancelled) {\n setGenerationError(null);\n if (!isDevEnv) {\n stepObject.goToNextStep(node.id, session.template);\n } else {\n const response = await apiService.get(generatedPdfPath, { responseType: 'blob' });\n if (cancelled) return;\n objectUrl = URL.createObjectURL(response.data);\n setGeneratedPdfUrl(objectUrl);\n setStatus(\"ready\");\n }\n }\n } catch (error: any) {\n if (!cancelled) {\n setGenerationError(\n error?.message ||\n t(\n \"pdf_generation.error_unknown\",\n \"Erreur inconnue pendant la génération du PDF.\",\n ),\n );\n setStatus(\"error\");\n }\n }\n };\n\n generate();\n\n return () => {\n cancelled = true;\n if (objectUrl) URL.revokeObjectURL(objectUrl);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [runId]);\n\n if (status === \"loading\") {\n return (\n <LoadingState\n message={\n node.pageTitle ||\n t(\"pdf_generation.loading_title\", \"Génération du document\")\n }\n subtitle={\n node.pageDescription ||\n t(\n \"pdf_generation.loading_subtitle\",\n \"Votre document est en cours de préparation...\",\n )\n }\n />\n );\n }\n\n if (status === \"ready\") {\n return (\n <div className=\"flex flex-col items-center justify-center h-full p-6 text-center gap-4\">\n <div className=\"text-green-500 text-4xl\">✅</div>\n <h2 className=\"text-xl font-bold text-gray-900\">\n {t(\"pdf_generation.ready_title\", \"Document généré\")}\n </h2>\n <p className=\"text-gray-600 max-w-md\">\n {t(\n \"pdf_generation.ready_description\",\n \"Vous pouvez prévisualiser ou télécharger le PDF avant de continuer.\",\n )}\n </p>\n <div className=\"flex flex-wrap justify-center gap-3 mt-2\">\n <a\n href={generatedPdfUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"px-4 py-2 border border-gray-300 rounded text-gray-700 hover:bg-gray-50 transition-colors\"\n >\n {t(\"pdf_generation.preview\", \"Aperçu\")}\n </a>\n <a\n href={downloadPdfUrl}\n className=\"px-4 py-2 border border-gray-300 rounded text-gray-700 hover:bg-gray-50 transition-colors\"\n >\n {t(\"pdf_generation.download\", \"Télécharger\")}\n </a>\n <button\n type=\"button\"\n className=\"px-4 py-2 bg-primary text-white rounded hover:opacity-90 transition-opacity\"\n onClick={() => stepObject.goToNextStep(node.id, session.template)}\n >\n {t(\"template.buttons.continue\", \"Continuer\")}\n </button>\n </div>\n </div>\n );\n }\n\n // Error state\n return (\n <div className=\"flex flex-col items-center justify-center h-full p-6 text-center gap-4\">\n <div className=\"text-red-500 text-4xl\">⚠️</div>\n <h2 className=\"text-xl font-bold text-red-600\">\n {t(\"pdf_generation.error_title\", \"Erreur lors de la génération\")}\n </h2>\n <p className=\"text-gray-600 max-w-sm\">\n {t(\n \"pdf_generation.error_description\",\n \"Une erreur est survenue lors de la génération de votre document. Veuillez réessayer.\",\n )}\n </p>\n {generationError && (\n <p className=\"max-w-md text-xs text-red-500\">{generationError}</p>\n )}\n <div className=\"flex gap-3 mt-2\">\n {stepObject.canGoBack && (\n <button\n type=\"button\"\n className=\"px-4 py-2 border border-gray-300 rounded text-gray-700 hover:bg-gray-50 transition-colors\"\n onClick={() => stepObject.goBack()}\n >\n {t(\"template.buttons.back\", \"Retour\")}\n </button>\n )}\n <button\n type=\"button\"\n className=\"px-4 py-2 bg-primary text-white rounded hover:opacity-90 transition-opacity\"\n onClick={() => {\n setGenerationError(null);\n setStatus(\"loading\");\n setRunId((value) => value + 1);\n }}\n >\n {t(\"pdf_generation.retry\", \"Réessayer\")}\n </button>\n </div>\n </div>\n );\n};\n\nexport default PdfGeneration;\n"],"names":["useI18n","useState","apiService","useEffect","__awaiter","__assign","_jsx","LoadingState","_jsxs"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Selfie.js","sources":["../../../../../src/components/session/Selfie.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport {\n SessionTemplate,\n SessionTemplateNode,\n stepObject,\n} from \"../../types/session\";\nimport Video from \"../selfie/Video\";\nimport SelfieConfirmation from \"../selfie/SelfieConfirmation\";\nimport type { SelfieCaptureData } from \"../../types/selfie\";\nimport SelfieProcessing from \"../selfie/selfie-flow/SelfieProcessing\";\nimport { reportSelfieFailure } from \"../../services/sessionService\";\n\n/**\n * Composant de gestion du flux selfie.\n * Gère les étapes internes de capture et confirmation du selfie.\n */\nconst Selfie = ({\n stepObject,\n sessionId,\n node,\n template,\n}: {\n stepObject: stepObject;\n sessionId: string;\n node: SessionTemplateNode;\n template: SessionTemplate;\n}) => {\n const [internalStep, setInternalStep] = useState(0);\n const [selfieData, setSelfieData] = useState<SelfieCaptureData | null>(null);\n const [selfiePhoto, setSelfiePhoto] = useState<string | null>(null);\n const [isTransitioning, setIsTransitioning] = useState(false);\n\n const handleConfirmSelfie = () => {\n // Ajouter une transition visuelle avant de passer à l'étape suivante\n setIsTransitioning(true);\n\n // Attendre un peu pour l'animation avant de passer à l'étape suivante\n setTimeout(() => {\n setInternalStep(2); // Passer à l'étape de traitement du selfie\n setIsTransitioning(false);\n }, 500);\n };\n\n const selfieProcessed = (processed: boolean) => {\n // Callback pour indiquer que le selfie a été traité\n if (processed) {\n stepObject.goToNextStepCommitted(node.id, template);\n }\n };\n\n const handleContinueAnyway = () => {\n void reportSelfieFailure(sessionId, {\n nodeId: node.id,\n reason: \"user_bypassed\",\n bypassed: true,\n }).catch(() => undefined);\n stepObject.goToNextStepCommitted(node.id, template);\n };\n\n const onRetake = () => {\n setInternalStep(0);\n };\n\n const handleRetakeSelfie = () => {\n setInternalStep(0);\n };\n\n return (\n <div\n className={`h-full w-full transition-opacity duration-500 ${isTransitioning ? \"opacity-50\" : \"opacity-100\"\n }`}\n >\n {internalStep === 0 && (\n <Video\n setSelfieData={setSelfieData}\n setStep={setInternalStep}\n sessionId={sessionId}\n iad={node.iad}\n btnBg={template.buttonBgColor ?? \"#11E5C5\"}\n btnText={template.buttonTextColor ?? \"#3C3C40\"}\n />\n )}\n {internalStep === 1 && selfieData && (\n <SelfieConfirmation\n selfieData={selfieData}\n onConfirm={handleConfirmSelfie}\n onRetake={handleRetakeSelfie}\n setSelfiePhoto={setSelfiePhoto}\n />\n )}\n {internalStep === 2 && selfieData && (\n <SelfieProcessing\n onProcessingComplete={selfieProcessed}\n selfieVideo={selfieData}\n selfiePhoto={selfiePhoto}\n onRetake={onRetake}\n nodeId={node.id}\n onContinueAnyway={\n node.allowContinueOnFailure === false\n ? undefined\n : handleContinueAnyway\n }\n />\n )}\n </div>\n );\n};\n\nexport default Selfie;\n"],"names":["useState","reportSelfieFailure","_jsxs","_jsx","Video","SelfieConfirmation","SelfieProcessing"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SessionContent.js","sources":["../../../../../src/components/session/SessionContent.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport StartSession from \"../session/StartSession\";\nimport MobileRedirect from \"../session/MobileRedirect\";\nimport EndFlow from \"../session/EndFlow\";\nimport LoadingState from \"../states/LoadingState\";\nimport TemplateNodeRenderer from \"../template/TemplateNodeRenderer\";\nimport { getOrderedJourneySteps } 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 { useI18n } from \"../../hooks/useI18n\";\n\ninterface SessionContentProps {\n step: number;\n loading: boolean;\n session: SessionData | null;\n sessionId: string;\n stepObject: stepObject;\n stepHistory: number[];\n userInput: UserInput;\n setUserInput: React.Dispatch<React.SetStateAction<UserInput>>;\n contactInfo: ContactInfo;\n setContactInfo: React.Dispatch<React.SetStateAction<ContactInfo>>;\n}\n\nconst SessionContent: React.FC<SessionContentProps> = ({\n step,\n loading,\n session,\n sessionId,\n stepObject,\n stepHistory,\n userInput,\n setUserInput,\n contactInfo,\n setContactInfo,\n}) => {\n const { setLanguage, currentLanguage, t } = useI18n();\n // If is mobile template, isMobileCapture should be true for document-selection nodes\n const isMobileTemplate = session?.template?.platforms?.mobile === true;\n const showQRCodeInstructions =\n isMobileTemplate && session?.template?.showQRCode === true;\n const isDesktopAllowed = session?.template?.platforms?.desktop === true;\n\n // Get QR code title and description from Start node\n const startNode = session?.template?.nodes?.find(\n (node: any) => node.type === \"start\"\n );\n const qrCodeTitle = startNode?.qrCodeTitle;\n const qrCodeDescription = startNode?.qrCodeDescription;\n\n // Handle template step progression\n const handleContinueOnPC = () => {\n if (!session?.template) return;\n\n const templateNodes = getOrderedJourneySteps(session.template);\n // When user clicks \"Continue on PC\" from MobileRedirect (step 0.5), go to step 1\n // For other steps, calculate templateIndex normally\n const templateIndex =\n step === 0.5 ? 0 : showQRCodeInstructions ? step - 1.5 : step - 1;\n\n if (templateIndex < templateNodes.length - 1) {\n const nextStep =\n step === 0.5\n ? 1\n : showQRCodeInstructions\n ? templateIndex + 2.5\n : templateIndex + 2;\n stepObject.setStep(nextStep);\n } else {\n // Last step, finish the process\n const endNode = session.template.nodes.find(\n (node: { type: string }) => node.type === \"end\"\n );\n if (endNode) {\n // Continue to the next node which will be the \"end\" node\n stepObject.setStep(\n step === 0.5\n ? 1\n : showQRCodeInstructions\n ? templateIndex + 2.5\n : templateIndex + 2\n );\n } else {\n stepObject.setStep(0);\n }\n }\n };\n\n // Change languages dynamically based on session template\n useEffect(() => {\n if (session?.template?.languages && session.template.languages.length > 0) {\n const language = session.template.languages[0]; // Use the first language\n\n // Check if language is different from current\n if (language !== currentLanguage) {\n setLanguage(language);\n }\n }\n }, []);\n\n // Special check: if the session is already finished, display EndFlow\n // directly (raw \"ended\" or a consolidated result status).\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 // Render step content\n switch (step) {\n case 0:\n return (\n <StartSession\n stepObject={stepObject}\n session={session}\n showQRCodeInstructions={showQRCodeInstructions}\n />\n );\n\n case 0.5:\n // MobileRedirect step - only shown if showQRCodeInstructions is true\n return (\n <MobileRedirect\n sessionId={sessionId}\n onBack={() => stepObject.setStep(0)}\n onContinueOnPC={handleContinueOnPC}\n isDesktopAllowed={isDesktopAllowed}\n title={qrCodeTitle}\n subtitle={qrCodeDescription}\n />\n );\n\n default:\n // From step 1 onwards, use dynamic logic based on template\n if (step >= 1) {\n if (loading) {\n return (\n <LoadingState\n message={t(\"loading.document\")}\n subtitle={t(\"loading.preparing_document\")}\n />\n );\n }\n\n if (session?.template) {\n return (\n <TemplateNodeRenderer\n session={session}\n sessionId={sessionId}\n stepObject={stepObject}\n stepHistory={stepHistory}\n templateIndex={step - 1}\n onContinueOnPC={handleContinueOnPC}\n userInput={userInput}\n setUserInput={setUserInput}\n contactInfo={contactInfo}\n setContactInfo={setContactInfo}\n isMobileTemplate={isMobileTemplate}\n />\n );\n } else {\n console.log(\n \"❌ SessionContent - No template found, showing fallback\"\n );\n // Fallback if template is not available\n return (\n <div className=\"flex flex-col items-center justify-center h-full p-4 text-center\">\n <div className=\"animate-spin rounded-full h-12 w-12 border-t-2 border-b-2 border-primary mb-4\"></div>\n <h2 className=\"text-xl font-bold text-gray-700 mb-2\">\n {t(\"session_content.preparing_verification\")}\n </h2>\n <p className=\"text-gray-600 mb-4\">\n {t(\"session_content.please_wait\")}\n </p>\n <div className=\"bg-blue-50 border border-blue-200 rounded-lg p-3 mt-4 max-w-xs mx-auto\">\n <p className=\"text-sm text-blue-600\">\n {t(\"session_content.configuring_steps\")}\n </p>\n <button\n onClick={() => window.location.reload()}\n className=\"mt-2 px-3 py-1 bg-blue-600 text-white text-xs rounded\"\n >\n Actualiser si nécessaire\n </button>\n </div>\n </div>\n );\n }\n }\n\n return null;\n }\n};\n\nexport default SessionContent;\n"],"names":["useI18n","getOrderedJourneySteps","useEffect","isSessionFinished","_jsx","EndFlow","StartSession","MobileRedirect","LoadingState","TemplateNodeRenderer","_jsxs"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SessionExpired.js","sources":["../../../../../src/components/session/SessionExpired.tsx"],"sourcesContent":["import React from \"react\";\nimport Button from \"../ui/Button\";\nimport shieldIcon from \"../../assets/icons/shield_magic_link.svg\";\nimport { useI18n } from \"../../hooks/useI18n\";\n\ninterface SessionExpiredProps {\n onRetry?: () => void;\n}\n\n/**\n * SessionExpired Component\n *\n * Displays a session expired message with a retry button\n */\nconst SessionExpired: React.FC<SessionExpiredProps> = ({ onRetry }) => {\n const { t } = useI18n();\n\n const handleRetry = () => {\n if (onRetry) {\n onRetry();\n } else {\n window.location.reload();\n }\n };\n\n return (\n <div className=\"flex flex-col items-center justify-center h-full text-center p-6\">\n <div className=\"mb-6\">\n <img src={shieldIcon} alt={t(\"session.expired.image_alt\", \"Session expirée\")} />\n </div>\n <h2 className=\"text-2xl font-bold text-red-600 mb-4\">{t(\"session.expired.title\", \"Session expirée\")}</h2>\n <p className=\"text-gray-600 mb-6\">{t(\"session.expired.description\", \"Cette session n'est plus valide, veuillez recommencer.\")}</p>\n <Button onClick={handleRetry} className=\"w-full\">\n {t(\"session.expired.retry\", \"Réessayer\")}\n </Button>\n </div>\n );\n};\n\nexport default SessionExpired;\n"],"names":["useI18n","_jsxs","_jsx","shieldIcon","Button"],"mappings":";;;;;;;;;AASA;;;;AAIG;AACH,IAAM,cAAc,GAAkC,UAAC,EAAW,EAAA;AAAT,IAAA,IAAA,OAAO,GAAA,EAAA,CAAA,OAAA;AACtD,IAAA,IAAA,CAAC,GAAKA,eAAO,EAAE,EAAd;AAET,IAAA,IAAM,WAAW,GAAG,YAAA;QAClB,IAAI,OAAO,EAAE;AACX,YAAA,OAAO,EAAE;QACX;aAAO;AACL,YAAA,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE;QAC1B;AACF,IAAA,CAAC;AAED,IAAA,QACEC,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,kEAAkE,EAAA,QAAA,EAAA,CAC/EC,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,MAAM,EAAA,QAAA,EACnBA,cAAA,CAAA,KAAA,EAAA,EAAK,GAAG,EAAEC,yBAAU,EAAE,GAAG,EAAE,CAAC,CAAC,2BAA2B,EAAE,iBAAiB,CAAC,EAAA,CAAI,EAAA,CAC5E,EACND,cAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,sCAAsC,EAAA,QAAA,EAAE,CAAC,CAAC,uBAAuB,EAAE,iBAAiB,CAAC,EAAA,CAAM,EACzGA,cAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,oBAAoB,EAAA,QAAA,EAAE,CAAC,CAAC,6BAA6B,EAAE,wDAAwD,CAAC,EAAA,CAAK,EAClIA,cAAA,CAACE,cAAM,EAAA,EAAC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAC,QAAQ,EAAA,QAAA,EAC7C,CAAC,CAAC,uBAAuB,EAAE,WAAW,CAAC,EAAA,CACjC,CAAA,EAAA,CACL;AAEV;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"StartSession.js","sources":["../../../../../src/components/session/StartSession.tsx"],"sourcesContent":["import type { stepObject } from \"../../types/session\";\nimport { type SessionData } from \"../../types/session\";\nimport Start from \"../start-flow/Start\";\n\ninterface StartSessionProps {\n stepObject: stepObject;\n session: SessionData | null;\n showQRCodeInstructions: boolean;\n}\n\n// Le consentement est porté par le nœud `legal-consent` du parcours : l'accueil\n// enchaîne directement sur le QR code (si configuré) ou le premier nœud.\nconst StartSession = ({ stepObject, session, showQRCodeInstructions }: StartSessionProps) => {\n const { setStep } = stepObject;\n\n const startNode = session?.template?.nodes?.find((node) => node.type === \"start\");\n\n return (\n <div className=\"w-full h-full\">\n <Start\n setStep={() => setStep(showQRCodeInstructions ? 0.5 : 1)}\n welcomeTitle={startNode?.welcomeTitle}\n welcomeSubtitle={startNode?.welcomeSubtitle}\n welcomeDescription={startNode?.welcomeDescription}\n welcomeImage={startNode?.welcomeImage}\n session={session ?? undefined}\n />\n </div>\n );\n};\n\nexport default StartSession;\n"],"names":["_jsx","Start"],"mappings":";;;;;;;AAUA;AACA;AACA,IAAM,YAAY,GAAG,UAAC,EAAkE,EAAA;;AAAhE,IAAA,IAAA,UAAU,gBAAA,EAAE,OAAO,GAAA,EAAA,CAAA,OAAA,EAAE,sBAAsB,GAAA,EAAA,CAAA,sBAAA;AACzD,IAAA,IAAA,OAAO,GAAK,UAAU,CAAA,OAAf;AAEf,IAAA,IAAM,SAAS,GAAG,CAAA,EAAA,GAAA,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,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,IAAI,CAAC,UAAC,IAAI,EAAA,EAAK,OAAA,IAAI,CAAC,IAAI,KAAK,OAAO,CAAA,CAArB,CAAqB,CAAC;AAEjF,IAAA,QACEA,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,eAAe,YAC5BA,cAAA,CAACC,aAAK,EAAA,EACJ,OAAO,EAAE,YAAA,EAAM,OAAA,OAAO,CAAC,sBAAsB,GAAG,GAAG,GAAG,CAAC,CAAC,CAAA,CAAzC,CAAyC,EACxD,YAAY,EAAE,SAAS,aAAT,SAAS,KAAA,MAAA,GAAA,MAAA,GAAT,SAAS,CAAE,YAAY,EACrC,eAAe,EAAE,SAAS,KAAA,IAAA,IAAT,SAAS,KAAA,MAAA,GAAA,MAAA,GAAT,SAAS,CAAE,eAAe,EAC3C,kBAAkB,EAAE,SAAS,KAAA,IAAA,IAAT,SAAS,KAAA,MAAA,GAAA,MAAA,GAAT,SAAS,CAAE,kBAAkB,EACjD,YAAY,EAAE,SAAS,KAAA,IAAA,IAAT,SAAS,uBAAT,SAAS,CAAE,YAAY,EACrC,OAAO,EAAE,OAAO,KAAA,IAAA,IAAP,OAAO,cAAP,OAAO,GAAI,SAAS,EAAA,CAC7B,EAAA,CACE;AAEV;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"AddressFields.js","sources":["../../../../../../src/components/session/UserInputForm/AddressFields.tsx"],"sourcesContent":["import * as Label from \"@radix-ui/react-label\";\nimport clsx from \"clsx\";\nimport { Select } from \"../../ui/SelectComponent\";\nimport type {\n AddressSuggestion,\n RequestedFields,\n UserInputFormErrors,\n UserInputFormState,\n} from \"../../../types/userInputForm\";\nimport { useI18n } from \"../../../hooks/useI18n\";\nimport { useCountryOptions } from \"../../../hooks/useCountryOptions\";\n\ninterface AddressFieldsProps {\n form: UserInputFormState;\n errors: UserInputFormErrors;\n requestedFields: RequestedFields;\n addressSuggestions: AddressSuggestion[];\n showSuggestions: boolean;\n onFieldChange: (key: keyof UserInputFormState, value: string) => void;\n onAddressChange: (value: string) => void;\n onAddressFocus: () => void;\n onAddressBlur: () => void;\n onApplySuggestion: (suggestion: AddressSuggestion) => void;\n}\n\nconst AddressFields = ({\n form,\n errors,\n requestedFields,\n addressSuggestions,\n showSuggestions,\n onFieldChange,\n onAddressChange,\n onAddressFocus,\n onAddressBlur,\n onApplySuggestion,\n}: AddressFieldsProps) => {\n const { t } = useI18n();\n const countryOptions = useCountryOptions(\"user_input_form.select.country\");\n\n if (!requestedFields.has(\"adresse\")) {\n return null;\n }\n\n return (\n <>\n <div className=\"relative space-y-2\">\n <Label.Root\n htmlFor=\"addressLine1\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(\"user_input_form.fields.address_line1\")}\n </Label.Root>\n <input\n id=\"addressLine1\"\n type=\"text\"\n value={form.addressLine1 || \"\"}\n onChange={(event) => onAddressChange(event.target.value)}\n onFocus={onAddressFocus}\n onBlur={onAddressBlur}\n placeholder={t(\"user_input_form.placeholders.address_line1\")}\n className={clsx(\n \"w-full px-3 py-3 md:py-4 border rounded-lg text-base transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\",\n errors.addressLine1\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover:border-gray-400\"\n )}\n autoComplete=\"street-address\"\n />\n {showSuggestions && addressSuggestions.length > 0 && (\n <div className=\"absolute z-20 mt-1 max-h-48 w-full overflow-auto rounded-lg border border-gray-200 bg-white shadow-lg\">\n {addressSuggestions.map((suggestion) => (\n <button\n key={suggestion.id}\n type=\"button\"\n className=\"w-full px-3 py-2 text-left text-sm hover:bg-gray-100\"\n onMouseDown={(event) => event.preventDefault()}\n onClick={() => onApplySuggestion(suggestion)}\n >\n <div className=\"flex flex-col\">\n <span className=\"text-sm text-gray-900\">\n {suggestion.label}\n </span>\n {(suggestion.city ||\n suggestion.postalCode ||\n suggestion.country ||\n suggestion.countryCode) && (\n <span className=\"text-xs text-gray-500\">\n {[\n [suggestion.postalCode, suggestion.city]\n .filter(Boolean)\n .join(\" \"),\n suggestion.country ||\n suggestion.countryCode?.toUpperCase(),\n ]\n .filter(Boolean)\n .join(\", \")}\n </span>\n )}\n </div>\n </button>\n ))}\n </div>\n )}\n {errors.addressLine1 && (\n <p className=\"flex items-center gap-1 text-sm text-red-600\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.address_line1_required\")}\n </p>\n )}\n </div>\n\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"addressLine2\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(\"user_input_form.fields.address_line2\")}\n </Label.Root>\n <input\n id=\"addressLine2\"\n type=\"text\"\n value={form.addressLine2 || \"\"}\n onChange={(event) =>\n onFieldChange(\"addressLine2\", event.target.value)\n }\n placeholder={t(\"user_input_form.placeholders.address_line2\")}\n className=\"w-full rounded-lg border border-gray-300 px-3 py-3 text-base transition-colors hover:border-gray-400 focus:border-transparent focus:outline-none focus:ring-2 focus:ring-[#11E5C5]\"\n autoComplete=\"address-line2\"\n />\n </div>\n\n <div className=\"grid grid-cols-[140px_minmax(0,1fr)] gap-3 md:grid-cols-[160px_minmax(0,1fr)]\">\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"postalCode\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(\"user_input_form.fields.postal_code\")}\n </Label.Root>\n <input\n id=\"postalCode\"\n type=\"text\"\n value={form.postalCode || \"\"}\n onChange={(event) =>\n onFieldChange(\"postalCode\", event.target.value)\n }\n placeholder={t(\"user_input_form.placeholders.postal_code\")}\n className={clsx(\n \"w-full px-3 py-3 md:py-4 border rounded-lg text-base transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\",\n errors.postalCode\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover-border-gray-400\"\n )}\n autoComplete=\"postal-code\"\n />\n {errors.postalCode && (\n <p className=\"flex items-center gap-1 text-sm text-red-600\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.postal_code_required\")}\n </p>\n )}\n </div>\n\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"city\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(\"user_input_form.fields.city\")}\n </Label.Root>\n <input\n id=\"city\"\n type=\"text\"\n value={form.city || \"\"}\n onChange={(event) => onFieldChange(\"city\", event.target.value)}\n placeholder={t(\"user_input_form.placeholders.city\")}\n className={clsx(\n \"w-full px-3 py-3 md:py-4 border rounded-lg text-base transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\",\n errors.city\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover-border-gray-400\"\n )}\n autoComplete=\"address-level2\"\n />\n {errors.city && (\n <p className=\"flex items-center gap-1 text-sm text-red-600\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.city_required\")}\n </p>\n )}\n </div>\n </div>\n\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"country\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(\"user_input_form.fields.country\")}\n </Label.Root>\n <Select\n options={countryOptions}\n value={form.countryCode || \"\"}\n onValueChange={(value) => onFieldChange(\"countryCode\", value)}\n placeholder={t(\"user_input_form.select.country\")}\n error={Boolean(errors.country)}\n allowCustomValue\n />\n {errors.country && (\n <p className=\"flex items-center gap-1 text-sm text-red-600\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.country_required\")}\n </p>\n )}\n </div>\n </>\n );\n};\n\nexport default AddressFields;\n"],"names":["useI18n","useCountryOptions","_jsxs","_Fragment","_jsx","Label","Select"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ContactFields.js","sources":["../../../../../../src/components/session/UserInputForm/ContactFields.tsx"],"sourcesContent":["import { Fragment } from \"react\";\nimport * as Label from \"@radix-ui/react-label\";\nimport clsx from \"clsx\";\nimport {\n RequestedFields,\n UserInputFormErrors,\n UserInputFormState,\n} from \"../../../types/userInputForm\";\nimport { FIELD_LABELS } from \"../../../constants/userInputForm\";\nimport { useI18n } from \"../../../hooks/useI18n\";\n\ninterface ContactFieldsProps {\n form: UserInputFormState;\n errors: UserInputFormErrors;\n requestedFields: RequestedFields;\n onFieldChange: (key: keyof UserInputFormState, value: string) => void;\n}\n\nconst ContactFields = ({\n form,\n errors,\n requestedFields,\n onFieldChange,\n}: ContactFieldsProps) => {\n const { t } = useI18n();\n\n return (\n <Fragment>\n {requestedFields.has(\"email\") && (\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"email\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(FIELD_LABELS.email)}\n </Label.Root>\n <input\n id=\"email\"\n type=\"email\"\n value={form.email || \"\"}\n onChange={(event) => onFieldChange(\"email\", event.target.value)}\n placeholder={t(\"user_input_form.placeholders.email\")}\n className={clsx(\n \"w-full px-3 py-3 md:py-4 border rounded-lg text-base transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\",\n errors.email\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover:border-gray-400\"\n )}\n autoComplete=\"email\"\n />\n {errors.email && (\n <p className=\"text-red-600 text-sm flex items-center gap-1\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.email_invalid\")}\n </p>\n )}\n </div>\n )}\n\n {requestedFields.has(\"sms\") && (\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"phoneNumber\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(FIELD_LABELS.sms)}\n </Label.Root>\n <input\n id=\"phoneNumber\"\n type=\"tel\"\n value={form.phoneNumber || \"\"}\n onChange={(event) => onFieldChange(\"phoneNumber\", event.target.value)}\n placeholder={t(\"user_input_form.placeholders.phone\")}\n className={clsx(\n \"w-full px-3 py-3 md:py-4 border rounded-lg text-base transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\",\n errors.phoneNumber\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover-border-gray-400\"\n )}\n autoComplete=\"tel\"\n />\n {errors.phoneNumber && (\n <p className=\"text-red-600 text-sm flex items-center gap-1\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.phone_invalid\")}\n </p>\n )}\n </div>\n )}\n </Fragment>\n );\n};\n\nexport default ContactFields;\n"],"names":["useI18n","_jsxs","Fragment","_jsx","Label","FIELD_LABELS"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,IAAM,aAAa,GAAG,UAAC,EAKF,EAAA;QAJnB,IAAI,GAAA,EAAA,CAAA,IAAA,EACJ,MAAM,GAAA,EAAA,CAAA,MAAA,EACN,eAAe,GAAA,EAAA,CAAA,eAAA,EACf,aAAa,GAAA,EAAA,CAAA,aAAA;AAEL,IAAA,IAAA,CAAC,GAAKA,eAAO,EAAE,EAAd;AAET,IAAA,QACEC,eAAA,CAACC,cAAQ,eACN,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,KAC3BD,yBAAK,SAAS,EAAC,WAAW,EAAA,QAAA,EAAA,CACxBE,cAAA,CAACC,gBAAK,CAAC,IAAI,EAAA,EACT,OAAO,EAAC,OAAO,EACf,SAAS,EAAC,wDAAwD,YAEjE,CAAC,CAACC,0BAAY,CAAC,KAAK,CAAC,EAAA,CACX,EACbF,0BACE,EAAE,EAAC,OAAO,EACV,IAAI,EAAC,OAAO,EACZ,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,EACvB,QAAQ,EAAE,UAAC,KAAK,EAAA,EAAK,OAAA,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,CAA1C,CAA0C,EAC/D,WAAW,EAAE,CAAC,CAAC,oCAAoC,CAAC,EACpD,SAAS,EAAE,IAAI,CACb,sJAAsJ,EACtJ,MAAM,CAAC;AACL,8BAAE;8BACA,uCAAuC,CAC5C,EACD,YAAY,EAAC,OAAO,EAAA,CACpB,EACD,MAAM,CAAC,KAAK,KACXF,eAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,8CAA8C,EAAA,QAAA,EAAA,CACzDE,cAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,cAAc,EAAA,QAAA,EAAA,QAAA,EAAA,CAAS,EACtC,CAAC,CAAC,sCAAsC,CAAC,CAAA,EAAA,CACxC,CACL,CAAA,EAAA,CACG,CACP,EAEA,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,KACzBF,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,WAAW,EAAA,QAAA,EAAA,CACxBE,cAAA,CAACC,gBAAK,CAAC,IAAI,EAAA,EACT,OAAO,EAAC,aAAa,EACrB,SAAS,EAAC,wDAAwD,YAEjE,CAAC,CAACC,0BAAY,CAAC,GAAG,CAAC,EAAA,CACT,EACbF,cAAA,CAAA,OAAA,EAAA,EACE,EAAE,EAAC,aAAa,EAChB,IAAI,EAAC,KAAK,EACV,KAAK,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE,EAC7B,QAAQ,EAAE,UAAC,KAAK,EAAA,EAAK,OAAA,aAAa,CAAC,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,CAAhD,CAAgD,EACrE,WAAW,EAAE,CAAC,CAAC,oCAAoC,CAAC,EACpD,SAAS,EAAE,IAAI,CACb,sJAAsJ,EACtJ,MAAM,CAAC;AACL,8BAAE;AACF,8BAAE,uCAAuC,CAC5C,EACD,YAAY,EAAC,KAAK,EAAA,CAClB,EACD,MAAM,CAAC,WAAW,KACjBF,uBAAG,SAAS,EAAC,8CAA8C,EAAA,QAAA,EAAA,CACzDE,yBAAM,SAAS,EAAC,cAAc,EAAA,QAAA,EAAA,QAAA,EAAA,CAAS,EACtC,CAAC,CAAC,sCAAsC,CAAC,IACxC,CACL,CAAA,EAAA,CACG,CACP,CAAA,EAAA,CACQ;AAEf;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"CustomFormFields.js","sources":["../../../../../../src/components/session/UserInputForm/CustomFormFields.tsx"],"sourcesContent":["import { Fragment, useRef } from \"react\";\nimport * as Label from \"@radix-ui/react-label\";\nimport clsx from \"clsx\";\nimport { Select } from \"../../ui/SelectComponent\";\nimport type { CustomField, ListColumn } from \"../../../types/session\";\nimport { useI18n } from \"../../../hooks/useI18n\";\nimport AddressFields from \"./AddressFields\";\nimport type { AddressSuggestion } from \"../../../types/userInputForm\";\nimport {\n createEmptyListRow,\n ensureMinimumListRows,\n getListFieldMinRows,\n normalizeListColumns,\n} from \"../../../utils/listFieldUtils\";\nimport { cellErrorKey } from \"../../../utils/customFieldValidation\";\nimport { DatePickerField } from \"./DatePickerField\";\n\ntype CellErrorValue = string | boolean;\n\n/**\n * Sous-composant dédié au rendu d'une cellule du tableau dynamique.\n * Nécessaire pour que les hooks internes à Select soient toujours appelés\n * de façon stable (règle des hooks React).\n */\nconst ListCell = ({\n col,\n value,\n hasError,\n cellClasses,\n onChange,\n language,\n}: {\n col: ListColumn;\n value: string;\n hasError: boolean;\n cellClasses: string;\n onChange: (val: string) => void;\n language: string;\n}) => {\n if (col.type === \"enum\") {\n return (\n <Select\n options={(col.options ?? []).map((opt) => ({ value: opt, label: opt }))}\n value={value}\n onValueChange={onChange}\n placeholder={col.placeholder || col.label}\n error={hasError}\n compact\n />\n );\n }\n if (col.type === \"email\") {\n return (\n <input\n type=\"email\"\n value={value}\n onChange={(e) => onChange(e.target.value)}\n placeholder={col.placeholder || col.label}\n className={cellClasses}\n autoComplete=\"off\"\n inputMode=\"email\"\n />\n );\n }\n if (col.type === \"date\") {\n return (\n <DatePickerField\n value={value}\n dateFormat={col.dateFormat ?? \"dd/mm/yyyy\"}\n placeholder={col.placeholder}\n hasError={hasError}\n language={language}\n onChange={onChange}\n className={cellClasses}\n />\n );\n }\n return (\n <input\n type=\"text\"\n value={value}\n onChange={(e) => onChange(e.target.value)}\n placeholder={col.placeholder || col.label}\n className={cellClasses}\n autoComplete=\"off\"\n />\n );\n};\n\ninterface CustomFormFieldsProps {\n customFields: CustomField[];\n formData: Record<string, any>;\n errors: Record<string, CellErrorValue>;\n cellErrors?: Record<string, Record<string, CellErrorValue>>;\n onFieldChange: (fieldId: string, value: any) => void;\n // Address autocomplete props (for address field type)\n addressSuggestions?: AddressSuggestion[];\n showSuggestions?: boolean;\n onAddressChange?: (fieldId: string, value: string) => void;\n onAddressFocus?: (fieldId: string) => void;\n onAddressBlur?: (fieldId: string) => void;\n onApplySuggestion?: (fieldId: string, suggestion: AddressSuggestion) => void;\n}\n\nconst CustomFormFields = ({\n customFields,\n formData,\n errors,\n cellErrors = {},\n onFieldChange,\n addressSuggestions = [],\n showSuggestions = false,\n onAddressChange,\n onAddressFocus,\n onAddressBlur,\n onApplySuggestion,\n}: CustomFormFieldsProps) => {\n const { t, currentLanguage } = useI18n();\n\n const renderField = (field: CustomField) => {\n const hasError = Boolean(errors[field.id]);\n const value = formData[field.id];\n\n // Classes communes (EXACTEMENT comme IdentityFields/ContactFields)\n const inputClasses = clsx(\n \"w-full px-3 py-3 md:py-4 border rounded-lg text-base transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\",\n hasError\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover:border-gray-400\",\n );\n\n switch (field.valueType) {\n case \"text\":\n return (\n <input\n id={field.id}\n type=\"text\"\n value={value || \"\"}\n onChange={(e) => onFieldChange(field.id, e.target.value)}\n placeholder={field.placeholder}\n className={inputClasses}\n autoComplete=\"off\"\n />\n );\n\n case \"number\":\n return (\n <input\n id={field.id}\n type=\"number\"\n inputMode=\"numeric\"\n value={value || \"\"}\n onChange={(e) => onFieldChange(field.id, e.target.value)}\n placeholder={field.placeholder}\n className={inputClasses}\n />\n );\n\n case \"date\":\n return (\n <DatePickerField\n id={field.id}\n value={value || \"\"}\n dateFormat={field.dateFormat ?? \"dd/mm/yyyy\"}\n placeholder={field.placeholder}\n hasError={hasError}\n language={currentLanguage}\n onChange={(v) => onFieldChange(field.id, v)}\n className={inputClasses}\n />\n );\n\n case \"boolean\":\n return (\n <div className=\"flex items-center gap-2\">\n <input\n id={field.id}\n type=\"checkbox\"\n checked={value || false}\n onChange={(e) => onFieldChange(field.id, e.target.checked)}\n className=\"h-4 w-4 text-[#11E5C5] border-gray-300 rounded focus:ring-[#11E5C5]\"\n />\n {field.description && (\n <span className=\"text-sm text-gray-600\">{field.description}</span>\n )}\n </div>\n );\n\n case \"enum\":\n return (\n <Select\n options={(field.enumOptions || []).map((opt) => ({\n value: opt,\n label: opt,\n }))}\n value={value || \"\"}\n onValueChange={(val) => onFieldChange(field.id, val)}\n placeholder={field.placeholder || t(\"custom_form.select_option\")}\n error={hasError}\n />\n );\n\n case \"email\":\n return (\n <input\n id={field.id}\n type=\"email\"\n value={value || \"\"}\n onChange={(e) => onFieldChange(field.id, e.target.value)}\n placeholder={field.placeholder}\n className={inputClasses}\n autoComplete=\"off\"\n inputMode=\"email\"\n />\n );\n\n case \"address\":\n // For address, use the existing AddressFields component\n const addressValue = value || {};\n const addressForm = {\n lastName: \"\",\n firstName: \"\",\n birthDate: \"\",\n day: \"\",\n month: \"\",\n year: \"\",\n email: \"\",\n phoneNumber: \"\",\n sms: \"\",\n addressLine1: addressValue.addressLine1 || \"\",\n addressLine2: addressValue.addressLine2 || \"\",\n postalCode: addressValue.postalCode || \"\",\n city: addressValue.city || \"\",\n countryCode: addressValue.countryCode || \"\",\n nationality: \"\",\n companyName: \"\",\n siret: \"\",\n tva: \"\",\n };\n\n return (\n <AddressFields\n form={addressForm}\n errors={{\n addressLine1: hasError,\n addressLine2: false,\n postalCode: hasError,\n city: hasError,\n country: hasError,\n }}\n requestedFields={new Set([\"adresse\"])}\n onFieldChange={(key, val) => {\n const updatedAddress = {\n ...addressValue,\n [key]: val,\n };\n onFieldChange(field.id, updatedAddress);\n }}\n addressSuggestions={addressSuggestions}\n showSuggestions={showSuggestions}\n onAddressChange={(val) => {\n const updatedAddress = {\n ...addressValue,\n addressLine1: val,\n };\n onFieldChange(field.id, updatedAddress);\n onAddressChange?.(field.id, val);\n }}\n onAddressFocus={() => onAddressFocus?.(field.id)}\n onAddressBlur={() => onAddressBlur?.(field.id)}\n onApplySuggestion={(suggestion) => {\n const updatedAddress = {\n addressLine1: suggestion.label || \"\",\n addressLine2: addressValue.addressLine2 || \"\",\n postalCode: suggestion.postalCode || \"\",\n city: suggestion.city || \"\",\n countryCode: suggestion.countryCode || \"\",\n };\n onFieldChange(field.id, updatedAddress);\n onApplySuggestion?.(field.id, suggestion);\n }}\n />\n );\n\n case \"list\": {\n const persistedRows: Record<string, string>[] = Array.isArray(value)\n ? value\n : [];\n const columns: ListColumn[] = normalizeListColumns(field.listColumns);\n const minRows = getListFieldMinRows(field);\n const rows = ensureMinimumListRows(persistedRows, columns, minRows);\n const gridTemplateColumns = `repeat(${columns.length}, minmax(180px, 1fr)) 32px`;\n const gridMinWidth = `${columns.length * 180 + (columns.length - 1) * 8 + 32}px`;\n const fieldCellErrors = cellErrors[field.id] ?? {};\n\n if (columns.length === 0) {\n return (\n <p className=\"text-sm text-red-600\">\n {t(\n \"custom_form.list_missing_columns\",\n \"Ce tableau n'a pas de colonnes configurées.\",\n )}\n </p>\n );\n }\n\n const handleRowChange = (\n rowIndex: number,\n colName: string,\n colValue: string,\n ) => {\n const updated = [...rows];\n updated[rowIndex] = { ...updated[rowIndex], [colName]: colValue };\n onFieldChange(field.id, updated);\n };\n\n const handleAddRow = () => {\n const emptyRow = createEmptyListRow(columns);\n onFieldChange(field.id, [...rows, emptyRow]);\n };\n\n const handleRemoveRow = (rowIndex: number) => {\n if (rows.length <= minRows) {\n return;\n }\n\n onFieldChange(\n field.id,\n rows.filter((_, i) => i !== rowIndex),\n );\n };\n\n return (\n <div className=\"space-y-3 overflow-x-auto\">\n {columns.length > 0 && (\n <div\n className=\"grid gap-2 items-center w-full\"\n style={{\n gridTemplateColumns,\n minWidth: gridMinWidth,\n }}\n >\n {columns.map((col) => (\n <span\n key={col.label}\n className=\"text-xs font-semibold text-gray-600 uppercase tracking-wide truncate\"\n >\n {col.label}\n </span>\n ))}\n <span />\n </div>\n )}\n\n {rows.map((row, rowIndex) => (\n <div\n key={rowIndex}\n className=\"grid gap-2 items-start w-full\"\n style={{\n gridTemplateColumns,\n minWidth: gridMinWidth,\n }}\n >\n {columns.map((col) => {\n const cellErr =\n fieldCellErrors[cellErrorKey(rowIndex, col.label)];\n const cellHasError = Boolean(cellErr);\n const cellInputClasses = clsx(\n \"w-full px-2 py-2 border rounded-lg text-sm transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\",\n cellHasError\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover:border-gray-400\",\n );\n return (\n <div\n key={col.label}\n className=\"flex flex-col gap-1 min-w-0\"\n >\n <ListCell\n col={col}\n value={row[col.label] || \"\"}\n // Volontairement `cellHasError` seul : l'ancien\n // `|| hasError` peignait tout le tableau en rouge dès\n // qu'une seule cellule était invalide, sans permettre\n // de repérer laquelle. Le cas « pas assez de lignes »\n // reste signalé par le message sous le champ.\n hasError={cellHasError}\n cellClasses={cellInputClasses}\n onChange={(val) =>\n handleRowChange(rowIndex, col.label, val)\n }\n language={currentLanguage}\n />\n {typeof cellErr === \"string\" && (\n <span className=\"text-xs text-red-600\">\n {cellErr}\n </span>\n )}\n </div>\n );\n })}\n <button\n type=\"button\"\n onClick={() => handleRemoveRow(rowIndex)}\n className={clsx(\n \"flex items-center justify-center w-8 h-8 rounded-full transition-colors\",\n rows.length <= minRows\n ? \"text-gray-300 cursor-not-allowed\"\n : \"text-gray-400 hover:text-red-500 hover:bg-red-50\",\n )}\n aria-label={t(\"custom_form.remove_row\", \"Supprimer la ligne\")}\n disabled={rows.length <= minRows}\n >\n ✕\n </button>\n </div>\n ))}\n\n <button\n type=\"button\"\n onClick={handleAddRow}\n className=\"flex items-center gap-2 text-sm text-[#11E5C5] hover:underline font-medium\"\n >\n + {t(\"custom_form.add_row\", \"Ajouter une ligne\")}\n </button>\n </div>\n );\n }\n\n default:\n return null;\n }\n };\n\n // Un champ est masqué quand il est verrouillé depuis l'API :\n // - hard lock (lockedFromApi sans editableIfMissing) → toujours masqué ;\n // - soft lock (editableIfMissing) → masqué uniquement si l'API a fourni une\n // valeur ; sinon le champ redevient éditable par l'utilisateur final.\n const isValuePresent = (value: unknown): boolean => {\n if (value === null || value === undefined) return false;\n if (typeof value === \"string\") return value.trim().length > 0;\n if (Array.isArray(value)) return value.length > 0;\n return true;\n };\n\n // La décision de visibilité d'un soft lock se fige à l'OUVERTURE du nœud,\n // pas à chaque frappe : on capture une seule fois (au mount, via ref) les\n // soft locks dont l'API n'avait fourni AUCUNE valeur. Ceux-là restent\n // éditables ensuite, même quand l'utilisateur commence à taper (sinon le\n // champ se masquerait dès le 1er caractère puisque formData deviendrait\n // non vide). Le composant est remonté par nœud (key={node.id}), donc le\n // snapshot est bien réinitialisé à chaque entrée de nœud.\n const editableSoftLocksRef = useRef<Set<string> | null>(null);\n if (editableSoftLocksRef.current === null) {\n const ids = new Set<string>();\n for (const f of customFields) {\n if (f.lockedFromApi && f.editableIfMissing && !isValuePresent(formData[f.id])) {\n ids.add(f.id);\n }\n }\n editableSoftLocksRef.current = ids;\n }\n const editableSoftLocks = editableSoftLocksRef.current;\n\n const isLockedHidden = (f: CustomField): boolean => {\n if (!f.lockedFromApi) return false;\n if (!f.editableIfMissing) return true;\n // soft lock : visible seulement s'il était vide à l'ouverture du nœud\n return !editableSoftLocks.has(f.id);\n };\n\n const visibleFields = customFields.filter((f) => !isLockedHidden(f));\n\n return (\n <Fragment>\n {visibleFields.map((field) => (\n <div key={field.id} className=\"space-y-2\">\n <Label.Root\n htmlFor={field.id}\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {field.label}\n {field.required && <span className=\"text-red-500 ml-1\">*</span>}\n </Label.Root>\n\n {field.description && field.valueType !== \"boolean\" && (\n <p className=\"text-xs text-gray-500 -mt-1\">{field.description}</p>\n )}\n\n {renderField(field)}\n\n {(() => {\n const fieldCellErrs = cellErrors[field.id];\n if (fieldCellErrs && Object.keys(fieldCellErrs).length > 0) {\n return null;\n }\n const fieldErr = errors[field.id];\n if (!fieldErr) return null;\n const message =\n typeof fieldErr === \"string\"\n ? fieldErr\n : field.required && !formData[field.id]\n ? t(\"custom_form.required_field\")\n : t(\"custom_form.invalid_value\");\n return (\n <p className=\"text-red-600 text-sm flex items-center gap-1\">\n <span className=\"text-red-500\">⚠</span>\n {message}\n </p>\n );\n })()}\n </div>\n ))}\n </Fragment>\n );\n};\n\nexport default CustomFormFields;\n"],"names":["_jsx","Select","DatePickerField","useI18n","_jsxs","AddressFields","normalizeListColumns","getListFieldMinRows","ensureMinimumListRows","__spreadArray","__assign","createEmptyListRow","cellErrorKey","useRef","Fragment","Label"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"DatePickerField.js","sources":["../../../../../../src/components/session/UserInputForm/DatePickerField.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { format, parse, isValid, type Locale } from \"date-fns\";\nimport { fr, enUS } from \"date-fns/locale\";\nimport { ChevronLeft, ChevronRight, Calendar } from \"lucide-react\";\nimport { DayPicker } from \"react-day-picker\";\nimport type { MonthCaptionProps, ChevronProps } from \"react-day-picker\";\nimport * as Popover from \"@radix-ui/react-popover\";\nimport clsx from \"clsx\";\nimport type { DateDisplayFormat } from \"../../../types/session\";\nimport { useI18n } from \"../../../hooks/useI18n\";\n\n// ─── helpers ──────────────────────────────────────────────────────────────────\n\nconst FORMAT_TO_DATEFNS: Record<DateDisplayFormat, string> = {\n \"dd/mm/yyyy\": \"dd/MM/yyyy\",\n \"mm/dd/yyyy\": \"MM/dd/yyyy\",\n \"yyyy-mm-dd\": \"yyyy-MM-dd\",\n};\n\n// Auto-inserts separator after 2nd and 4th digit while the user types.\nconst autoInsertSeparator = (\n prev: string,\n next: string,\n separator: \"/\" | \"-\",\n): string => {\n const digits = next.replace(/[^\\d]/g, \"\");\n let out = \"\";\n for (let i = 0; i < digits.length && i < 8; i++) {\n if (i === 2 || i === 4) out += separator;\n out += digits[i];\n }\n if (next.length < prev.length) return next;\n return out;\n};\n\n// ─── mini calendar (DayPicker v9 wrapper) ─────────────────────────────────────\n\ntype CalendarMode = \"day\" | \"month\" | \"year\";\n\ninterface MiniCalendarProps {\n selected: Date | undefined;\n onSelect: (d: Date | undefined) => void;\n locale: Locale;\n}\n\nconst MONTH_LABELS_FR = [\"Jan\", \"Fév\", \"Mar\", \"Avr\", \"Mai\", \"Jun\", \"Jul\", \"Aoû\", \"Sep\", \"Oct\", \"Nov\", \"Déc\"];\nconst MONTH_LABELS_EN = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\n\nconst MiniCalendar: React.FC<MiniCalendarProps> = ({ selected, onSelect, locale }) => {\n const [mode, setMode] = React.useState<CalendarMode>(\"day\");\n const [displayMonth, setDisplayMonth] = React.useState<Date>(selected ?? new Date());\n const [tempYear, setTempYear] = React.useState<number | null>(null);\n\n const isFr = locale === fr;\n const monthLabels = isFr ? MONTH_LABELS_FR : MONTH_LABELS_EN;\n\n const yearGrid: number[] = React.useMemo(() => {\n const base = displayMonth.getFullYear();\n return Array.from({ length: 15 }, (_, i) => base - 7 + i);\n }, [displayMonth]);\n\n const navYear = (dir: 1 | -1) => {\n const d = new Date(displayMonth);\n d.setFullYear(d.getFullYear() + dir * 15);\n setDisplayMonth(d);\n };\n\n // Custom MonthCaption pour v9 — reçoit calendarMonth\n const CustomMonthCaption = React.useCallback(\n ({ calendarMonth }: MonthCaptionProps) => {\n const dm = calendarMonth.date;\n return (\n <div className=\"flex items-center justify-center gap-1 text-sm font-semibold select-none py-1\">\n <button\n type=\"button\"\n onClick={() => { setDisplayMonth(dm); setMode(\"month\"); }}\n className=\"hover:text-[#11E5C5] transition-colors capitalize\"\n >\n {dm.toLocaleString(isFr ? \"fr-FR\" : \"en-US\", { month: \"long\" })}\n </button>\n <button\n type=\"button\"\n onClick={() => { setDisplayMonth(dm); setMode(\"year\"); }}\n className=\"hover:text-[#11E5C5] transition-colors\"\n >\n {dm.getFullYear()}\n </button>\n </div>\n );\n },\n [isFr],\n );\n\n // Custom Chevron pour v9 — orientation \"left\" | \"right\"\n const CustomChevron = React.useCallback(\n ({ orientation }: ChevronProps) =>\n orientation === \"left\"\n ? <ChevronLeft className=\"size-4\" />\n : <ChevronRight className=\"size-4\" />,\n [],\n );\n\n if (mode === \"year\") {\n return (\n <div className=\"p-3 w-[252px]\">\n <div className=\"flex items-center justify-between mb-3\">\n <button type=\"button\" onClick={() => navYear(-1)} className=\"p-1 rounded hover:bg-gray-100\">\n <ChevronLeft className=\"size-4\" />\n </button>\n <span className=\"text-sm font-semibold\">\n {yearGrid[0]} – {yearGrid[yearGrid.length - 1]}\n </span>\n <button type=\"button\" onClick={() => navYear(1)} className=\"p-1 rounded hover:bg-gray-100\">\n <ChevronRight className=\"size-4\" />\n </button>\n </div>\n <div className=\"grid grid-cols-3 gap-1\">\n {yearGrid.map((y) => (\n <button\n key={y}\n type=\"button\"\n onClick={() => { setTempYear(y); setMode(\"month\"); }}\n className={clsx(\n \"rounded py-1.5 text-sm transition-colors\",\n y === displayMonth.getFullYear()\n ? \"bg-[#11E5C5] text-white font-semibold\"\n : \"hover:bg-gray-100\",\n )}\n >\n {y}\n </button>\n ))}\n </div>\n </div>\n );\n }\n\n if (mode === \"month\") {\n const year = tempYear ?? displayMonth.getFullYear();\n return (\n <div className=\"p-3 w-[252px]\">\n <div className=\"text-sm font-semibold text-center mb-3\">{year}</div>\n <div className=\"grid grid-cols-3 gap-1\">\n {monthLabels.map((m, i) => (\n <button\n key={m}\n type=\"button\"\n onClick={() => {\n const d = new Date(year, i, 1);\n setDisplayMonth(d);\n setTempYear(null);\n setMode(\"day\");\n }}\n className={clsx(\n \"rounded py-1.5 text-sm transition-colors\",\n i === displayMonth.getMonth() && year === displayMonth.getFullYear()\n ? \"bg-[#11E5C5] text-white font-semibold\"\n : \"hover:bg-gray-100\",\n )}\n >\n {m}\n </button>\n ))}\n </div>\n </div>\n );\n }\n\n return (\n <DayPicker\n mode=\"single\"\n selected={selected}\n onSelect={onSelect}\n month={displayMonth}\n onMonthChange={setDisplayMonth}\n locale={locale}\n showOutsideDays\n navLayout=\"around\"\n components={{\n MonthCaption: CustomMonthCaption,\n Chevron: CustomChevron,\n }}\n />\n );\n};\n\n// ─── DatePickerField (export) ──────────────────────────────────────────────────\n\ninterface DatePickerFieldProps {\n id?: string;\n value: string;\n dateFormat: DateDisplayFormat;\n placeholder?: string;\n hasError?: boolean;\n language?: string;\n onChange: (value: string) => void;\n className?: string;\n}\n\nexport const DatePickerField: React.FC<DatePickerFieldProps> = ({\n id,\n value,\n dateFormat,\n placeholder,\n hasError = false,\n language = \"fr\",\n onChange,\n className,\n}) => {\n const { t } = useI18n();\n const locale = language === \"en\" ? enUS : fr;\n const dfnsFmt = FORMAT_TO_DATEFNS[dateFormat] ?? \"dd/MM/yyyy\";\n const separator = dateFormat === \"yyyy-mm-dd\" ? \"-\" : \"/\";\n\n const [inputValue, setInputValue] = React.useState(value ?? \"\");\n const [open, setOpen] = React.useState(false);\n\n React.useEffect(() => {\n setInputValue(value ?? \"\");\n }, [value]);\n\n const parseInputToDate = (raw: string): Date | undefined => {\n if (raw.length < 10) return undefined;\n const d = parse(raw, dfnsFmt, new Date(), { locale });\n return isValid(d) ? d : undefined;\n };\n\n const selectedDate = parseInputToDate(inputValue);\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const next = autoInsertSeparator(inputValue, e.target.value, separator);\n if (next.length > 10) return;\n setInputValue(next);\n if (next.length === 10) {\n const d = parse(next, dfnsFmt, new Date(), { locale });\n if (isValid(d)) {\n onChange(next);\n setOpen(false);\n }\n } else if (next === \"\") {\n onChange(\"\");\n }\n };\n\n const handleCalendarSelect = (d: Date | undefined) => {\n if (!d) return;\n const formatted = format(d, dfnsFmt, { locale });\n setInputValue(formatted);\n onChange(formatted);\n setOpen(false);\n };\n\n const defaultPlaceholder = placeholder ?? dfnsFmt.toUpperCase();\n\n const inputClasses = clsx(\n \"w-full px-3 py-3 md:py-4 border rounded-lg text-base transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent bg-transparent\",\n hasError ? \"border-red-500 bg-red-50\" : \"border-gray-300 hover:border-gray-400\",\n className,\n );\n\n return (\n <Popover.Root open={open} onOpenChange={setOpen}>\n <Popover.Trigger asChild>\n <div className=\"relative\">\n <input\n id={id}\n type=\"text\"\n value={inputValue}\n onChange={handleInputChange}\n placeholder={defaultPlaceholder}\n className={clsx(inputClasses, \"pr-10\")}\n autoComplete=\"off\"\n inputMode=\"numeric\"\n onFocus={() => setOpen(true)}\n aria-label={t(\"custom_form.select_option\", \"Date\")}\n />\n <button\n type=\"button\"\n tabIndex={-1}\n onClick={() => setOpen((o) => !o)}\n className=\"absolute right-3 top-1/2 -translate-y-1/2 text-gray-400 hover:text-gray-600\"\n >\n <Calendar className=\"size-4\" />\n </button>\n </div>\n </Popover.Trigger>\n\n <Popover.Portal>\n <Popover.Content\n side=\"bottom\"\n align=\"start\"\n sideOffset={4}\n className=\"z-50 rounded-lg border border-gray-200 bg-white shadow-lg focus:outline-none\"\n onOpenAutoFocus={(e) => e.preventDefault()}\n >\n <MiniCalendar\n selected={selectedDate}\n onSelect={handleCalendarSelect}\n locale={locale}\n />\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n );\n};\n"],"names":["React","fr","_jsxs","_jsx","ChevronLeft","ChevronRight","DayPicker","useI18n","enUS","parse","isValid","format","Popover","Calendar"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"IdentityFields.js","sources":["../../../../../../src/components/session/UserInputForm/IdentityFields.tsx"],"sourcesContent":["import { Fragment, useMemo, useRef } from \"react\";\nimport * as Label from \"@radix-ui/react-label\";\nimport clsx from \"clsx\";\nimport { Select } from \"../../ui/SelectComponent\";\nimport {\n DAY_OPTIONS,\n FIELD_LABELS,\n MONTH_OPTIONS,\n YEAR_OPTIONS,\n} from \"../../../constants/userInputForm\";\nimport type {\n RequestedFields,\n UserInputFormErrors,\n UserInputFormState,\n} from \"../../../types/userInputForm\";\nimport { useI18n } from \"../../../hooks/useI18n\";\n\ninterface IdentityFieldsProps {\n form: UserInputFormState;\n errors: UserInputFormErrors;\n requestedFields: RequestedFields;\n onFieldChange: (key: keyof UserInputFormState, value: string) => void;\n}\n\nconst IdentityFields = ({\n form,\n errors,\n requestedFields,\n onFieldChange,\n}: IdentityFieldsProps) => {\n const { t } = useI18n();\n const dayRef = useRef<HTMLInputElement>(null);\n const monthRef = useRef<HTMLInputElement>(null);\n const yearRef = useRef<HTMLInputElement>(null);\n\n const monthOptionsWithTranslation = useMemo(\n () =>\n MONTH_OPTIONS.map((option, index) => ({\n ...option,\n label: (index + 1).toString().padStart(2, \"0\"),\n })),\n []\n );\n\n const handleDayChange = (value: string) => {\n onFieldChange(\"day\", value);\n if (value.length === 2) {\n monthRef.current?.focus();\n }\n };\n\n const handleMonthChange = (value: string) => {\n onFieldChange(\"month\", value);\n if (value.length === 2) {\n yearRef.current?.focus();\n }\n };\n\n const handleYearChange = (value: string) => {\n onFieldChange(\"year\", value);\n if (value.length === 4) {\n yearRef.current?.blur();\n }\n };\n\n return (\n <Fragment>\n {requestedFields.has(\"prenom\") && (\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"firstName\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(FIELD_LABELS.prenom)}\n </Label.Root>\n <input\n id=\"firstName\"\n type=\"text\"\n value={form.firstName || \"\"}\n onChange={(event) => onFieldChange(\"firstName\", event.target.value)}\n placeholder={t(\"user_input_form.placeholders.first_name\")}\n className={clsx(\n \"w-full px-3 py-3 md:py-4 border rounded-lg text-base transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\",\n errors.firstName\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover-border-gray-400\"\n )}\n autoComplete=\"off\"\n />\n {errors.firstName && (\n <p className=\"text-red-600 text-sm flex items-center gap-1\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.first_name_required\")}\n </p>\n )}\n </div>\n )}\n\n {requestedFields.has(\"nom\") && (\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"lastName\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(FIELD_LABELS.nom)}\n </Label.Root>\n <input\n id=\"lastName\"\n type=\"text\"\n value={form.lastName || \"\"}\n onChange={(event) => onFieldChange(\"lastName\", event.target.value)}\n placeholder={t(\"user_input_form.placeholders.last_name\")}\n className={clsx(\n \"w-full px-3 py-3 md:py-4 border rounded-lg text-base transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\",\n errors.lastName\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover-border-gray-400\"\n )}\n autoComplete=\"off\"\n />\n {errors.lastName && (\n <p className=\"text-red-600 text-sm flex items-center gap-1\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.last_name_required\")}\n </p>\n )}\n </div>\n )}\n\n {requestedFields.has(\"date_naissance\") && (\n <div className=\"space-y-2\">\n <Label.Root className=\"block text-sm md:text-base font-semibold text-gray-900\">\n {t(FIELD_LABELS.date_naissance)}\n </Label.Root>\n <div className=\"grid grid-cols-3 gap-2 md:gap-3\">\n <Select\n ref={dayRef}\n options={DAY_OPTIONS}\n value={form.day || \"\"}\n onValueChange={handleDayChange}\n placeholder=\"JJ\"\n error={Boolean(errors.birthDate || errors.notMajor)}\n allowCustomValue\n inputMode=\"numeric\"\n pattern=\"[0-9]*\"\n maxLength={2}\n />\n <Select\n ref={monthRef}\n options={monthOptionsWithTranslation}\n value={form.month || \"\"}\n onValueChange={handleMonthChange}\n placeholder=\"MM\"\n error={Boolean(errors.birthDate || errors.notMajor)}\n allowCustomValue\n inputMode=\"numeric\"\n maxLength={9}\n />\n <Select\n ref={yearRef}\n options={YEAR_OPTIONS}\n value={form.year || \"\"}\n onValueChange={handleYearChange}\n placeholder=\"AAAA\"\n error={Boolean(errors.birthDate || errors.notMajor)}\n allowCustomValue\n inputMode=\"numeric\"\n pattern=\"[0-9]*\"\n maxLength={4}\n />\n </div>\n {errors.birthDate && (\n <p className=\"text-red-600 text-sm flex items-center gap-1\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.birth_date_required\")}\n </p>\n )}\n {errors.notMajor && (\n <p className=\"text-red-600 text-sm flex items-center gap-1\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.not_major\")}\n </p>\n )}\n </div>\n )}\n </Fragment>\n );\n};\n\nexport default IdentityFields;\n"],"names":["useI18n","useRef","useMemo","MONTH_OPTIONS","__assign","_jsxs","Fragment","_jsx","Label","FIELD_LABELS","Select","DAY_OPTIONS","YEAR_OPTIONS"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"LegalEntityFields.js","sources":["../../../../../../src/components/session/UserInputForm/LegalEntityFields.tsx"],"sourcesContent":["import { Fragment } from \"react\";\nimport * as Label from \"@radix-ui/react-label\";\nimport clsx from \"clsx\";\nimport { FIELD_LABELS } from \"../../../constants/userInputForm\";\nimport type {\n RequestedFields,\n UserInputFormErrors,\n UserInputFormState,\n} from \"../../../types/userInputForm\";\nimport { useI18n } from \"../../../hooks/useI18n\";\n\ninterface LegalEntityFieldsProps {\n form: UserInputFormState;\n errors: UserInputFormErrors;\n requestedFields: RequestedFields;\n onFieldChange: (key: keyof UserInputFormState, value: string) => void;\n}\n\nconst LegalEntityFields = ({\n form,\n errors,\n requestedFields,\n onFieldChange,\n}: LegalEntityFieldsProps) => {\n const { t } = useI18n();\n\n return (\n <Fragment>\n <h3 className=\"text-lg md:text-xl font-semibold text-gray-900\">\n {t(\"user_input_form.company_information\", \"Informations de société\")}\n </h3>\n\n {/* Nom (Raison sociale pour personne morale) */}\n {requestedFields.has(\"nom\") && (\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"companyName\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(FIELD_LABELS.company, \"Company Name\")}\n </Label.Root>\n <input\n id=\"companyName\"\n type=\"text\"\n value={form.companyName || \"\"}\n onChange={(event) =>\n onFieldChange(\"companyName\", event.target.value)\n }\n placeholder={t(\"user_input_form.placeholders.company_name\", \"\")}\n className={clsx(\n \"w-full px-3 py-3 md:py-4 border rounded-lg text-base transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\",\n errors.companyName\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover-border-gray-400\"\n )}\n autoComplete=\"off\"\n />\n {errors.companyName && (\n <p className=\"text-red-600 text-sm flex items-center gap-1\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.last_name_required\")}\n </p>\n )}\n </div>\n )}\n\n {/* Registration Number (SIREN / Company Registration Number) */}\n {requestedFields.has(\"registrationNumber\") && (\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"registrationNumber\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(FIELD_LABELS.registrationNumber, \"Company Registration Number\")}\n </Label.Root>\n <input\n id=\"registrationNumber\"\n type=\"text\"\n value={form.registrationNumber || \"\"}\n onChange={(event) =>\n onFieldChange(\"registrationNumber\", event.target.value)\n }\n placeholder={t(\n \"user_input_form.placeholders.registration_number\",\n \"e.g. 362 521 879\"\n )}\n className={clsx(\n \"w-full px-3 py-3 md:py-4 border rounded-lg text-base transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\",\n errors.registrationNumber\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover-border-gray-400\"\n )}\n autoComplete=\"off\"\n />\n {errors.registrationNumber && (\n <p className=\"text-red-600 text-sm flex items-center gap-1\">\n <span className=\"text-red-500\">⚠</span>\n {t(\n \"user_input_form.errors.registration_number_required\",\n \"Please enter your company registration number\"\n )}\n </p>\n )}\n </div>\n )}\n\n {/* SIRET */}\n {requestedFields.has(\"siret\") && (\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"siret\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(FIELD_LABELS.siret, \"SIRET Number\")}\n </Label.Root>\n <input\n id=\"siret\"\n type=\"text\"\n value={form.siret || \"\"}\n onChange={(event) => onFieldChange(\"siret\", event.target.value)}\n placeholder={t(\n \"user_input_form.placeholders.siret\",\n \"Ex : 362 521 879 00034\"\n )}\n className={clsx(\n \"w-full px-3 py-3 md:py-4 border rounded-lg text-base transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\",\n errors.siret\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover-border-gray-400\"\n )}\n autoComplete=\"off\"\n />\n {errors.siret && (\n <p className=\"text-red-600 text-sm flex items-center gap-1\">\n <span className=\"text-red-500\">⚠</span>\n {t(\n \"user_input_form.errors.siret_required\",\n \"Please enter a valid SIRET number\"\n )}\n </p>\n )}\n </div>\n )}\n\n {/* TVA */}\n {requestedFields.has(\"tva\") && (\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"tva\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(FIELD_LABELS.tva, \"VAT Number\")}\n </Label.Root>\n <input\n id=\"tva\"\n type=\"text\"\n value={form.tva || \"\"}\n onChange={(event) => onFieldChange(\"tva\", event.target.value)}\n placeholder={t(\n \"user_input_form.placeholders.vat_number\",\n \"Ex : FR32362521879\"\n )}\n className={clsx(\n \"w-full px-3 py-3 md:py-4 border rounded-lg text-base transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\",\n errors.tva\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover-border-gray-400\"\n )}\n autoComplete=\"off\"\n />\n {errors.tva && (\n <p className=\"text-red-600 text-sm flex items-center gap-1\">\n <span className=\"text-red-500\">⚠</span>\n {t(\n \"user_input_form.errors.tva_required\",\n \"Please enter a valid VAT number\"\n )}\n </p>\n )}\n </div>\n )}\n </Fragment>\n );\n};\n\nexport default LegalEntityFields;\n"],"names":["useI18n","_jsxs","Fragment","_jsx","Label","FIELD_LABELS"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"LegalRepFields.js","sources":["../../../../../../src/components/session/UserInputForm/LegalRepFields.tsx"],"sourcesContent":["import { Fragment } from \"react\";\nimport * as Label from \"@radix-ui/react-label\";\nimport clsx from \"clsx\";\nimport type {\n RequestedFields,\n UserInputFormErrors,\n UserInputFormState,\n} from \"../../../types/userInputForm\";\nimport { useI18n } from \"../../../hooks/useI18n\";\n\ninterface LegalRepFieldsProps {\n form: UserInputFormState;\n errors: UserInputFormErrors;\n requestedFields: RequestedFields;\n onFieldChange: (key: keyof UserInputFormState, value: string) => void;\n}\n\nconst LegalRepFields = ({\n form,\n errors,\n requestedFields,\n onFieldChange,\n}: LegalRepFieldsProps) => {\n const { t } = useI18n();\n\n return (\n <Fragment>\n {requestedFields.has(\"legalRepresentativeNom\") && (\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"legalRepresentativeLastName\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(\n \"user_input_form.fields.legal_representative_last_name\",\n \"Nom du représentant légal\",\n )}\n </Label.Root>\n <input\n id=\"legalRepresentativeLastName\"\n type=\"text\"\n value={form.legalRepresentativeLastName || \"\"}\n onChange={(event) =>\n onFieldChange(\"legalRepresentativeLastName\", event.target.value)\n }\n placeholder={t(\n \"user_input_form.placeholders.legal_representative_last_name\",\n \"Nom\",\n )}\n className={clsx(\n \"w-full px-3 py-3 md:py-4 border rounded-lg text-base transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\",\n errors.legalRepresentativeLastName\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover-border-gray-400\",\n )}\n autoComplete=\"off\"\n />\n {errors.legalRepresentativeLastName && (\n <p className=\"text-red-600 text-sm flex items-center gap-1\">\n <span className=\"text-red-500\">⚠</span>\n {t(\n \"user_input_form.errors.legal_representative_last_name_required\",\n )}\n </p>\n )}\n </div>\n )}\n\n {requestedFields.has(\"legalRepresentativePrenom\") && (\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"legalRepresentativeFirstName\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(\n \"user_input_form.fields.legal_representative_first_name\",\n \"Prénom du représentant légal\",\n )}\n </Label.Root>\n <input\n id=\"legalRepresentativeFirstName\"\n type=\"text\"\n value={form.legalRepresentativeFirstName || \"\"}\n onChange={(event) =>\n onFieldChange(\"legalRepresentativeFirstName\", event.target.value)\n }\n placeholder={t(\n \"user_input_form.placeholders.legal_representative_first_name\",\n \"Prénom\",\n )}\n className={clsx(\n \"w-full px-3 py-3 md:py-4 border rounded-lg text-base transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\",\n errors.legalRepresentativeFirstName\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover-border-gray-400\",\n )}\n autoComplete=\"off\"\n />\n {errors.legalRepresentativeFirstName && (\n <p className=\"text-red-600 text-sm flex items-center gap-1\">\n <span className=\"text-red-500\">⚠</span>\n {t(\n \"user_input_form.errors.legal_representative_first_name_required\",\n )}\n </p>\n )}\n </div>\n )}\n\n {/* RL personne morale (délégation de pouvoir) : remplace Nom/Prénom par\n le SIREN de la société mandataire. Mode fixé par le concepteur du\n parcours (requestedFields), jamais choisi par l'utilisateur final. */}\n {requestedFields.has(\"legalRepresentativeSiren\") && (\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"legalRepresentativeSiren\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(\n \"user_input_form.fields.legal_representative_siren\",\n \"SIREN du représentant légal\",\n )}\n </Label.Root>\n <input\n id=\"legalRepresentativeSiren\"\n type=\"text\"\n inputMode=\"numeric\"\n value={form.legalRepresentativeSiren || \"\"}\n onChange={(event) =>\n onFieldChange(\"legalRepresentativeSiren\", event.target.value)\n }\n placeholder={t(\n \"user_input_form.placeholders.legal_representative_siren\",\n \"9 chiffres\",\n )}\n className={clsx(\n \"w-full px-3 py-3 md:py-4 border rounded-lg text-base transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\",\n errors.legalRepresentativeSiren\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover-border-gray-400\",\n )}\n autoComplete=\"off\"\n />\n {errors.legalRepresentativeSiren && (\n <p className=\"text-red-600 text-sm flex items-center gap-1\">\n <span className=\"text-red-500\">⚠</span>\n {t(\n \"user_input_form.errors.legal_representative_siren_required\",\n )}\n </p>\n )}\n </div>\n )}\n </Fragment>\n );\n};\n\nexport default LegalRepFields;\n"],"names":["useI18n","_jsxs","Fragment","_jsx","Label"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"NationalityField.js","sources":["../../../../../../src/components/session/UserInputForm/NationalityField.tsx"],"sourcesContent":["import * as Label from \"@radix-ui/react-label\";\nimport { Select } from \"../../ui/SelectComponent\";\nimport { FIELD_LABELS } from \"../../../constants/userInputForm\";\nimport type {\n RequestedFields,\n UserInputFormErrors,\n UserInputFormState,\n} from \"../../../types/userInputForm\";\nimport { useI18n } from \"../../../hooks/useI18n\";\nimport { useCountryOptions } from \"../../../hooks/useCountryOptions\";\n\ninterface NationalityFieldProps {\n form: UserInputFormState;\n errors: UserInputFormErrors;\n requestedFields: RequestedFields;\n onFieldChange: (key: keyof UserInputFormState, value: string) => void;\n}\n\nconst NationalityField = ({\n form,\n errors,\n requestedFields,\n onFieldChange,\n}: NationalityFieldProps) => {\n const { t } = useI18n();\n const countryOptions = useCountryOptions(\"user_input_form.select.nationality\");\n\n if (!requestedFields.has(\"nationalite\")) {\n return null;\n }\n\n return (\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"nationality\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(FIELD_LABELS.nationalite)}\n </Label.Root>\n <Select\n options={countryOptions}\n value={form.nationality || \"\"}\n onValueChange={(value) => onFieldChange(\"nationality\", value)}\n placeholder={t(\"user_input_form.select.nationality\")}\n error={Boolean(errors.nationality)}\n />\n {errors.nationality && (\n <p className=\"text-red-600 text-sm flex items-center gap-1\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.nationality_required\")}\n </p>\n )}\n </div>\n );\n};\n\nexport default NationalityField;\n"],"names":["useI18n","useCountryOptions","_jsxs","_jsx","Label","FIELD_LABELS","Select"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,IAAM,gBAAgB,GAAG,UAAC,EAKF,EAAA;QAJtB,IAAI,GAAA,EAAA,CAAA,IAAA,EACJ,MAAM,GAAA,EAAA,CAAA,MAAA,EACN,eAAe,GAAA,EAAA,CAAA,eAAA,EACf,aAAa,GAAA,EAAA,CAAA,aAAA;AAEL,IAAA,IAAA,CAAC,GAAKA,eAAO,EAAE,EAAd;AACT,IAAA,IAAM,cAAc,GAAGC,mCAAiB,CAAC,oCAAoC,CAAC;IAE9E,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE;AACvC,QAAA,OAAO,IAAI;IACb;IAEA,QACEC,yBAAK,SAAS,EAAC,WAAW,EAAA,QAAA,EAAA,CACxBC,cAAA,CAACC,gBAAK,CAAC,IAAI,IACT,OAAO,EAAC,aAAa,EACrB,SAAS,EAAC,wDAAwD,EAAA,QAAA,EAEjE,CAAC,CAACC,0BAAY,CAAC,WAAW,CAAC,EAAA,CACjB,EACbF,cAAA,CAACG,sBAAM,IACL,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE,EAC7B,aAAa,EAAE,UAAC,KAAK,EAAA,EAAK,OAAA,aAAa,CAAC,aAAa,EAAE,KAAK,CAAC,CAAA,CAAnC,CAAmC,EAC7D,WAAW,EAAE,CAAC,CAAC,oCAAoC,CAAC,EACpD,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,EAAA,CAClC,EACD,MAAM,CAAC,WAAW,KACjBJ,eAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,8CAA8C,EAAA,QAAA,EAAA,CACzDC,cAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,cAAc,EAAA,QAAA,EAAA,QAAA,EAAA,CAAS,EACtC,CAAC,CAAC,6CAA6C,CAAC,CAAA,EAAA,CAC/C,CACL,CAAA,EAAA,CACG;AAEV;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"UserInputForm.js","sources":["../../../../../src/components/session/UserInputForm.tsx"],"sourcesContent":["import type { UserInputFormProps } from \"../../types/userInput\";\nimport Button from \"../ui/Button\";\nimport PageActions from \"../ui/PageActions\";\nimport Title from \"../ui/Title\";\nimport Subtitle from \"../ui/Subtitle\";\nimport { useI18n } from \"../../hooks/useI18n\";\nimport { useUserInputForm } from \"../../hooks/useUserInputForm\";\nimport IdentityFields from \"./UserInputForm/IdentityFields\";\nimport LegalEntityFields from \"./UserInputForm/LegalEntityFields\";\nimport LegalRepFields from \"./UserInputForm/LegalRepFields\";\nimport ContactFields from \"./UserInputForm/ContactFields\";\nimport AddressFields from \"./UserInputForm/AddressFields\";\nimport NationalityField from \"./UserInputForm/NationalityField\";\nimport CustomFormFields from \"./UserInputForm/CustomFormFields\";\nimport MobilePageLayout from \"../ui/MobilePageLayout\";\n\nconst UserInputForm = (props: UserInputFormProps) => {\n const { t } = useI18n();\n const hasListCustomField =\n props.node.informationType === \"custom\" &&\n (props.node.customFields || []).some((field) => field.valueType === \"list\");\n\n const {\n form,\n errors,\n informationType,\n requestedFields,\n pageTitle,\n pageDescription,\n addressSuggestions,\n showSuggestions,\n handleFieldChange,\n handleAddressChange,\n handleAddressFocus,\n handleAddressBlur,\n applyAddressSuggestion,\n goOnNextStep,\n goOnPreviousStep,\n customFormData,\n customFormErrors,\n customFormCellErrors,\n handleCustomFieldChange,\n customFields,\n } = useUserInputForm(props);\n\n return (\n <MobilePageLayout\n contentClassName=\"overflow-y-auto\"\n footerClassName=\"md:sticky md:bottom-0 md:bg-white md:pt-4 md:z-20\"\n footer={\n <PageActions\n primary={\n <Button onClick={goOnNextStep}>\n {t(\"user_input_form.buttons.continue\")}\n </Button>\n }\n secondary={props.stepObject.canGoBack ? (\n <Button variant=\"secondary\" onClick={goOnPreviousStep}>\n {t(\"user_input_form.buttons.back\")}\n </Button>\n ) : undefined}\n />\n }\n >\n {typeof process !== \"undefined\" &&\n process.env?.NODE_ENV === \"development\" && (\n <div className=\"fixed right-0 top-0 z-50 bg-green-500 p-2 text-xs text-white\">\n UserInputForm Rendered ✓\n </div>\n )}\n\n <div className=\"px-4 py-6 pt-11 md:px-8 md:py-8\">\n <div\n className={`mx-auto w-full space-y-6 ${\n hasListCustomField\n ? \"max-w-[98vw] md:max-w-[1300px] lg:max-w-[1500px]\"\n : \"max-w-md\"\n }`}\n >\n <div className=\"space-y-4 text-center\">\n <Title className=\"text-xl md:text-2xl lg:text-3xl\">\n {pageTitle}\n </Title>\n <Subtitle className=\"text-sm leading-relaxed text-gray-600 md:text-base whitespace-pre-line\">\n {pageDescription}\n </Subtitle>\n </div>\n\n <div className=\"space-y-6 z-30\">\n {informationType === \"identity\" && (\n <IdentityFields\n form={form}\n errors={errors}\n requestedFields={requestedFields}\n onFieldChange={handleFieldChange}\n />\n )}\n\n {informationType === \"identity-legal-rep\" && (\n <LegalRepFields\n form={form}\n errors={errors}\n requestedFields={requestedFields}\n onFieldChange={handleFieldChange}\n />\n )}\n\n {informationType === \"identity-legal\" && (\n <>\n <LegalEntityFields\n form={form}\n errors={errors}\n requestedFields={requestedFields}\n onFieldChange={handleFieldChange}\n />\n {requestedFields.has(\"adresse\") && (\n <div className=\"space-y-4\">\n <h3 className=\"text-lg md:text-xl font-semibold text-gray-900\">\n {t(\n \"user_input_form.registered_office_address\",\n \"Adresse du siège social\",\n )}\n </h3>\n <AddressFields\n form={form}\n errors={errors}\n requestedFields={requestedFields}\n onFieldChange={handleFieldChange}\n addressSuggestions={addressSuggestions}\n showSuggestions={showSuggestions}\n onAddressChange={handleAddressChange}\n onAddressFocus={handleAddressFocus}\n onAddressBlur={handleAddressBlur}\n onApplySuggestion={applyAddressSuggestion}\n />\n </div>\n )}\n </>\n )}\n\n {informationType === \"contact\" && (\n <ContactFields\n form={form}\n errors={errors}\n requestedFields={requestedFields}\n onFieldChange={handleFieldChange}\n />\n )}\n\n {informationType === \"address\" && (\n <AddressFields\n form={form}\n errors={errors}\n requestedFields={requestedFields}\n onFieldChange={handleFieldChange}\n addressSuggestions={addressSuggestions}\n showSuggestions={showSuggestions}\n onAddressChange={handleAddressChange}\n onAddressFocus={handleAddressFocus}\n onAddressBlur={handleAddressBlur}\n onApplySuggestion={applyAddressSuggestion}\n />\n )}\n\n {informationType === \"nationality\" && (\n <NationalityField\n form={form}\n errors={errors}\n requestedFields={requestedFields}\n onFieldChange={handleFieldChange}\n />\n )}\n\n {informationType === \"custom\" && customFields.length > 0 && (\n <CustomFormFields\n customFields={customFields}\n formData={customFormData}\n errors={customFormErrors}\n cellErrors={customFormCellErrors}\n onFieldChange={handleCustomFieldChange}\n addressSuggestions={addressSuggestions}\n showSuggestions={showSuggestions}\n onAddressChange={(fieldId, val) => handleAddressChange(val)}\n onAddressFocus={(fieldId) => handleAddressFocus()}\n onAddressBlur={(fieldId) => handleAddressBlur()}\n onApplySuggestion={(fieldId, suggestion) =>\n applyAddressSuggestion(suggestion)\n }\n />\n )}\n </div>\n </div>\n </div>\n </MobilePageLayout>\n );\n};\n\nexport default UserInputForm;\n"],"names":["useI18n","useUserInputForm","_jsxs","MobilePageLayout","_jsx","PageActions","Button","Title","Subtitle","IdentityFields","LegalRepFields","_Fragment","LegalEntityFields","AddressFields","ContactFields","NationalityField","CustomFormFields"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"VideoWorkInProgress.js","sources":["../../../../../src/components/session/VideoWorkInProgress.tsx"],"sourcesContent":["import React from \"react\";\nimport Button from \"../ui/Button\";\nimport ButtonDesktop from \"../ui/ButtonDesktop\";\nimport useIsMobile from \"../../hooks/useIsMobile\";\n\ninterface VideoWorkInProgressProps {\n onContinue: () => void;\n}\n\nconst VideoWorkInProgress: React.FC<VideoWorkInProgressProps> = ({ onContinue }) => {\n const isMobile = useIsMobile();\n\n return (\n <div className=\"flex flex-col justify-between h-full w-full\">\n {/* Main content area */}\n <div className=\"flex-1 flex items-start justify-center md:items-center px-4 py-8\">\n <div className=\"w-full max-w-md mx-auto text-center space-y-6\">\n {/* Work in progress icon */}\n <div className=\"text-6xl mb-6\">🎥</div>\n \n {/* Title */}\n <h1 className=\"text-2xl md:text-3xl font-bold text-gray-800 mb-4\">\n Capture vidéo en cours de développement\n </h1>\n \n {/* Subtitle */}\n <p className=\"text-gray-600 text-lg mb-6\">\n Cette fonctionnalité de capture vidéo est actuellement en développement.\n </p>\n \n {/* Info box */}\n <div className=\"bg-purple-50 border border-purple-200 rounded-lg p-4 mb-8\">\n <div className=\"flex items-center justify-center mb-2\">\n <div className=\"text-purple-500 text-2xl mr-2\">📹</div>\n <h3 className=\"text-purple-800 font-semibold\">Capture Vidéo - En développement</h3>\n </div>\n <p className=\"text-purple-700 text-sm\">\n La fonctionnalité de capture vidéo sera bientôt disponible avec des contrôles avancés. \n Vous pouvez continuer le processus pour passer à l'étape suivante.\n </p>\n </div>\n </div>\n </div>\n\n {/* Bottom navigation */}\n <div className=\"flex-shrink-0 p-4 border-t border-gray-200 bg-white\">\n {isMobile ? (\n <div className=\"w-full\">\n <Button onClick={onContinue} className=\"w-full py-3\">\n Continuer\n </Button>\n </div>\n ) : (\n <div className=\"flex justify-end max-w-4xl mx-auto\">\n <ButtonDesktop onClick={onContinue} type=\"continue\">\n Continuer\n </ButtonDesktop>\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default VideoWorkInProgress;"],"names":["useIsMobile","_jsxs","_jsx","Button","ButtonDesktop"],"mappings":";;;;;;;;;AASA,IAAM,mBAAmB,GAAuC,UAAC,EAAc,EAAA;AAAZ,IAAA,IAAA,UAAU,GAAA,EAAA,CAAA,UAAA;AAC3E,IAAA,IAAM,QAAQ,GAAGA,mBAAW,EAAE;IAE9B,QACEC,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,6CAA6C,EAAA,QAAA,EAAA,CAE1DC,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,kEAAkE,EAAA,QAAA,EAC/ED,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,+CAA+C,EAAA,QAAA,EAAA,CAE5DC,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,eAAe,EAAA,QAAA,EAAA,cAAA,EAAA,CAAS,EAGvCA,cAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,mDAAmD,EAAA,QAAA,EAAA,mDAAA,EAAA,CAE5D,EAGLA,sBAAG,SAAS,EAAC,4BAA4B,EAAA,QAAA,EAAA,yFAAA,EAAA,CAErC,EAGJD,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,2DAA2D,EAAA,QAAA,EAAA,CACxEA,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,uCAAuC,EAAA,QAAA,EAAA,CACpDC,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,+BAA+B,EAAA,QAAA,EAAA,cAAA,EAAA,CAAS,EACvDA,cAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,+BAA+B,EAAA,QAAA,EAAA,4CAAA,EAAA,CAAsC,CAAA,EAAA,CAC/E,EACNA,cAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,yBAAyB,EAAA,QAAA,EAAA,8LAAA,EAAA,CAGlC,CAAA,EAAA,CACA,CAAA,EAAA,CACF,EAAA,CACF,EAGNA,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,qDAAqD,EAAA,QAAA,EACjE,QAAQ,IACPA,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,QAAQ,EAAA,QAAA,EACrBA,cAAA,CAACC,cAAM,EAAA,EAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAC,aAAa,EAAA,QAAA,EAAA,WAAA,EAAA,CAE3C,EAAA,CACL,KAEND,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,oCAAoC,EAAA,QAAA,EACjDA,cAAA,CAACE,qBAAa,EAAA,EAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAC,UAAU,EAAA,QAAA,EAAA,WAAA,EAAA,CAEnC,EAAA,CACZ,CACP,EAAA,CACG,CAAA,EAAA,CACF;AAEV;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"controleJdiPolicy.js","sources":["../../../../../src/components/session/controleJdiPolicy.ts"],"sourcesContent":["/**\n * Politique de routage du nœud controle-jdi quand les resoumissions sont\n * épuisées sur un code bloquant — miroir de `conditionNodePolicy.ts`\n * (nœud condition), extrait en fonctions pures pour rester testable sans\n * monter DocumentCheck.tsx en entier.\n *\n * Décision produit (rétrocompat) : la sortie \"false\" du nœud controle-jdi\n * est OPTIONNELLE. Un nœud legacy sans sortie \"false\" câblée doit conserver\n * EXACTEMENT son comportement actuel (écran d'erreur + bouton \"continuer\n * quand même\"). Le routage automatique true/false ne s'active que si\n * l'auteur du parcours a explicitement câblé une sortie \"false\".\n */\n\nexport type MaxResubmissionAction = 'end-journey' | 'force-true';\n\nexport const DEFAULT_MAX_RESUBMISSION_ACTION: MaxResubmissionAction = 'end-journey';\n\nexport function normalizeMaxResubmissionAction(value?: string): MaxResubmissionAction {\n return value === 'force-true' ? 'force-true' : DEFAULT_MAX_RESUBMISSION_ACTION;\n}\n\nexport function hasExceededResubmissionAttempts(\n retryCountAfterFailure: number,\n maxAttempts: number,\n): boolean {\n return retryCountAfterFailure >= maxAttempts;\n}\n\nexport interface ResolveControleJdiOutcomeRouteParams {\n /** Le code JDI reçu est-il configuré comme bloquant pour ce nœud ? */\n isBlockingCode: boolean;\n /** Le nombre de tentatives (après cet échec) a-t-il atteint/dépassé le maximum ? */\n hasExceededAttempts: boolean;\n /** Une arête sortante avec sourceHandle=\"false\" existe-t-elle sur ce nœud ? */\n hasFalseEdge: boolean;\n action: MaxResubmissionAction;\n}\n\nexport interface ControleJdiOutcomeRoute {\n /** Handle à suivre pour la navigation automatique, ou undefined si aucune navigation auto. */\n handle: 'true' | 'false' | undefined;\n /** Faut-il afficher l'écran d'erreur (JDIError) avec bouton réessayer/continuer quand même ? */\n showErrorScreen: boolean;\n}\n\n/**\n * Point de décision unique pour le routage du nœud controle-jdi après un\n * résultat d'analyse.\n *\n * - Succès (code non bloquant) → toujours \"true\" (sûr même sur un nœud\n * legacy à une seule arête : `findOutgoingEdge` retombe sur la première\n * arête si aucune n'a le handle \"true\").\n * - Échec, tentatives non épuisées → écran d'erreur actuel (retry possible).\n * - Échec épuisé, PAS de sortie \"false\" câblée → écran d'erreur actuel\n * inchangé (rétrocompat totale, aucune navigation automatique).\n * - Échec épuisé, sortie \"false\" câblée → navigation automatique silencieuse\n * selon `action` (miroir de `conditionMaxRetryAction`).\n */\nexport function resolveControleJdiOutcomeRoute(\n params: ResolveControleJdiOutcomeRouteParams,\n): ControleJdiOutcomeRoute {\n const { isBlockingCode: blocking, hasExceededAttempts, hasFalseEdge, action } = params;\n\n if (!blocking) {\n return { handle: 'true', showErrorScreen: false };\n }\n\n if (!hasExceededAttempts || !hasFalseEdge) {\n return { handle: undefined, showErrorScreen: true };\n }\n\n return { handle: action === 'force-true' ? 'true' : 'false', showErrorScreen: false };\n}\n"],"names":[],"mappings":";;AAAA;;;;;;;;;;;AAWG;AAII,IAAM,+BAA+B,GAA0B;AAEhE,SAAU,8BAA8B,CAAC,KAAc,EAAA;IAC3D,OAAO,KAAK,KAAK,YAAY,GAAG,YAAY,GAAG,+BAA+B;AAChF;AAEM,SAAU,+BAA+B,CAC7C,sBAA8B,EAC9B,WAAmB,EAAA;IAEnB,OAAO,sBAAsB,IAAI,WAAW;AAC9C;AAmBA;;;;;;;;;;;;AAYG;AACG,SAAU,8BAA8B,CAC5C,MAA4C,EAAA;AAEpC,IAAA,IAA0B,mBAAmB,GAA2B,MAAM,CAAA,mBAAjC,EAAE,YAAY,GAAa,MAAM,CAAA,YAAnB,CAAA,CAAE,MAAM,GAAK,MAAM;AAMtF,IAAA,IAAI,CAAC,mBAAmB,IAAI,CAAC,YAAY,EAAE;QACzC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,IAAI,EAAE;IACrD;AAEA,IAAA,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,YAAY,GAAG,MAAM,GAAG,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE;AACvF;;;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"endScreenIcons.js","sources":["../../../../../src/components/session/endScreenIcons.ts"],"sourcesContent":["import {\n HeartHandshake,\n Send,\n Mail,\n CheckCircle,\n Clock,\n ShieldCheck,\n User,\n Info,\n LucideIcon,\n} from \"lucide-react\";\nimport type { EndScreenIcon } from \"../../types/session\";\n\n/**\n * Catalogue d'icônes des écrans de fin : clé partagée avec le builder\n * (qui utilise solar-icon-set) → composant lucide-react pour le rendu SDK.\n */\nconst END_SCREEN_ICONS: Record<EndScreenIcon, LucideIcon> = {\n thanks: HeartHandshake,\n send: Send,\n mail: Mail,\n check: CheckCircle,\n clock: Clock,\n shield: ShieldCheck,\n user: User,\n info: Info,\n};\n\n/** Résout une clé d'icône vers son composant lucide, avec fallback `Info`. */\nexport const resolveEndScreenIcon = (icon?: string): LucideIcon => {\n if (icon && icon in END_SCREEN_ICONS) {\n return END_SCREEN_ICONS[icon as EndScreenIcon];\n }\n return Info;\n};\n"],"names":["HeartHandshake","Send","Mail","CheckCircle","Clock","ShieldCheck","User","Info"],"mappings":";;;;AAaA;;;AAGG;AACH,IAAM,gBAAgB,GAAsC;AAC1D,IAAA,MAAM,EAAEA,0BAAc;AACtB,IAAA,IAAI,EAAEC,gBAAI;AACV,IAAA,IAAI,EAAEC,gBAAI;AACV,IAAA,KAAK,EAAEC,uBAAW;AAClB,IAAA,KAAK,EAAEC,iBAAK;AACZ,IAAA,MAAM,EAAEC,uBAAW;AACnB,IAAA,IAAI,EAAEC,gBAAI;AACV,IAAA,IAAI,EAAEC,gBAAI;CACX;AAED;AACO,IAAM,oBAAoB,GAAG,UAAC,IAAa,EAAA;AAChD,IAAA,IAAI,IAAI,IAAI,IAAI,IAAI,gBAAgB,EAAE;AACpC,QAAA,OAAO,gBAAgB,CAAC,IAAqB,CAAC;IAChD;AACA,IAAA,OAAOA,gBAAI;AACb;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"DocusealSignature.js","sources":["../../../../../src/components/signature-electronic/DocusealSignature.tsx"],"sourcesContent":["import React, { useEffect, useState, useCallback } from \"react\";\nimport { DocusealForm } from \"@docuseal/react\";\nimport LoadingState from \"../states/LoadingState\";\nimport { useTranslation } from \"react-i18next\";\nimport sdkI18n from \"../../i18n\";\nimport { getDocusealSigningToken } from \"../../services/integrationService\";\nimport { logSignatureDocumentOpened, logDocumentSigned } from \"../../services/auditTrailService\";\n\nconst DEFAULT_DOCUSEAL_HOST = \"docuseal.datakeen.co\";\n\nconst normalizeDocusealHost = (rawHost?: string | null): string => {\n const candidate = (rawHost ?? \"\").trim() || DEFAULT_DOCUSEAL_HOST;\n // Just return the domain, stripping any protocol to let the component handle it\n return candidate.replace(/^https?:\\/\\//i, \"\").replace(/\\/+$/, \"\");\n};\n\ninterface DocusealSignatureProps {\n sessionId: string;\n templateId: string;\n templateName?: string;\n onComplete: () => void;\n onBack: () => void;\n /** Pre-filled field values from previous information-input steps */\n prefillValues?: Record<string, string>;\n /** Field names that should be read-only in the signing form */\n readonlyFieldNames?: string[];\n}\n\nconst DocusealSignature: React.FC<DocusealSignatureProps> = ({\n sessionId,\n templateId,\n templateName = \"Document\",\n onComplete,\n onBack,\n prefillValues,\n readonlyFieldNames,\n}) => {\n const { t } = useTranslation(\"translation\", { i18n: sdkI18n });\n const [token, setToken] = useState<string | null>(null);\n const [host, setHost] = useState<string>(DEFAULT_DOCUSEAL_HOST);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n\n useEffect(() => {\n\n const fetchData = async () => {\n try {\n setLoading(true);\n\n const data = await getDocusealSigningToken(sessionId, templateId);\n const normalizedHost = normalizeDocusealHost(data?.host);\n\n setToken(data.token);\n setHost(normalizedHost);\n } catch (err) {\n setError(t(\"signature.token_error\", \"Erreur lors du chargement de la signature.\"));\n } finally {\n setLoading(false);\n }\n };\n\n fetchData();\n }, [sessionId, templateId, t]);\n\n const handleInit = useCallback(async () => {\n try {\n await logSignatureDocumentOpened(sessionId, {\n templateId,\n templateName: templateName || \"Document\",\n sessionId,\n });\n } catch (error) {\n console.error(\"[DocusealSignature] Failed to log SIGNATURE_DOCUMENT_OPENED:\", error);\n }\n }, [sessionId, templateId, templateName]);\n\n const handleComplete = useCallback(async () => {\n try {\n await logDocumentSigned(sessionId, {\n templateId,\n templateName: templateName || \"Document\",\n sessionId,\n });\n } catch (error) {\n console.error(\"[DocusealSignature] Failed to log DOCUMENT_SIGNED:\", error);\n }\n\n onComplete();\n }, [sessionId, templateId, templateName, onComplete]);\n\n if (loading) {\n return <LoadingState message={t(\"signature.loading\", \"Chargement du document...\")} subtitle=\"\" />;\n }\n\n if (error || !token) {\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\">{t(\"signature.error_title\", \"Erreur\")}</h2>\n <p className=\"text-gray-600 mb-4\">{error || t(\"signature.generic_error\", \"Impossible de charger le document.\")}</p>\n <button\n className=\"px-4 py-2 bg-primary text-white rounded hover:bg-primary-dark transition-colors\"\n onClick={onBack}\n >\n {t(\"buttons.back\", \"Retour\")}\n </button>\n </div>\n );\n }\n\n const src = `https://${host}/s/${token}`;\n\n const customCss = `\n input[type=\"date\"] {\n width: 100% !important;\n min-height: 48px !important;\n padding: 10px 14px !important;\n font-size: 18px !important;\n box-sizing: border-box !important;\n }\n `;\n\n return (\n <div className=\"w-full flex-1 flex flex-col\" style={{ minHeight: \"600px\" }}>\n <DocusealForm\n src={src}\n host={host}\n withTitle={false}\n withSendCopyButton={false}\n values={prefillValues}\n readonlyFields={readonlyFieldNames}\n onComplete={handleComplete}\n onInit={handleInit}\n className=\"flex-1 w-full h-[600px]\"\n customCss={customCss}\n />\n </div>\n );\n};\n\nexport default DocusealSignature;\n"],"names":["useTranslation","sdkI18n","useState","useEffect","__awaiter","getDocusealSigningToken","useCallback","logSignatureDocumentOpened","logDocumentSigned","_jsx","LoadingState","_jsxs","DocusealForm"],"mappings":"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"}