@frankieone/one-sdk 1.7.2-rc → 1.7.3-rc

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 (339) hide show
  1. package/dist/commit.txt +1 -1
  2. package/dist/esm/modules/biometrics/definition.d.ts +3 -3
  3. package/dist/esm/modules/biometrics/events.d.ts +2 -2
  4. package/dist/esm/modules/biometrics/index.d.ts +1 -1
  5. package/dist/esm/modules/biometrics/index.d.ts.map +1 -1
  6. package/dist/esm/modules/biometrics/index.js +12 -6
  7. package/dist/esm/modules/biometrics/index.js.map +1 -1
  8. package/dist/esm/modules/biometrics/parseConfiguration.d.ts +1 -1
  9. package/dist/esm/modules/biometrics/vendors/Incode/index.d.ts +3 -3
  10. package/dist/esm/modules/biometrics/vendors/OcrLabs/index.d.ts +2 -2
  11. package/dist/esm/modules/biometrics/vendors/Onfido/index.d.ts +5 -5
  12. package/dist/esm/modules/biometrics/vendors/common/createSession.d.ts +4 -4
  13. package/dist/esm/modules/biometrics/vendors/common/errors.d.ts +3 -3
  14. package/dist/esm/modules/biometrics/vendors/common/initProcess.d.ts +4 -4
  15. package/dist/esm/modules/biometrics/vendors/dummy-biometrics/index.d.ts +2 -2
  16. package/dist/esm/modules/business/actions/emitEvents.d.ts +2 -2
  17. package/dist/esm/modules/business/actions/search.d.ts +3 -3
  18. package/dist/esm/modules/business/actions/upload.d.ts +4 -4
  19. package/dist/esm/modules/business/definition.d.ts +4 -4
  20. package/dist/esm/modules/business/events.d.ts +1 -1
  21. package/dist/esm/modules/common/modules/HOF.d.ts +1 -1
  22. package/dist/esm/modules/common/modules/ReactiveStore.d.ts +1 -1
  23. package/dist/esm/modules/common/modules/defineModule.d.ts +1 -1
  24. package/dist/esm/modules/common/modules/error.d.ts +1 -1
  25. package/dist/esm/modules/common/modules/eventHub/index.d.ts.map +1 -1
  26. package/dist/esm/modules/common/modules/eventHub/index.js +14 -6
  27. package/dist/esm/modules/common/modules/eventHub/index.js.map +1 -1
  28. package/dist/esm/modules/common/modules/eventHub/types.d.ts +2 -2
  29. package/dist/esm/modules/common/modules/eventHub/windowEventHub.d.ts +1 -1
  30. package/dist/esm/modules/common/modules/eventHub/windowEventHub.d.ts.map +1 -1
  31. package/dist/esm/modules/common/modules/eventHub/windowEventHub.js +4 -2
  32. package/dist/esm/modules/common/modules/eventHub/windowEventHub.js.map +1 -1
  33. package/dist/esm/modules/common/modules/objectUtils.d.ts +1 -1
  34. package/dist/esm/modules/common/modules/vendorLoading.d.ts +4 -4
  35. package/dist/esm/modules/common/shared/models/DeviceCheck.d.ts +1 -1
  36. package/dist/esm/modules/common/shared/models/UBOData.d.ts +3 -3
  37. package/dist/esm/modules/common/types/Accessors.d.ts +1 -1
  38. package/dist/esm/modules/common/types/oneSDKModules/baseParameters.types.d.ts +6 -6
  39. package/dist/esm/modules/common/types/oneSDKModules/contextObject.d.ts +1 -1
  40. package/dist/esm/modules/common/types/oneSDKModules/definition.types.d.ts +2 -2
  41. package/dist/esm/modules/common/types/oneSDKModules/initialiseFunction.d.ts +2 -2
  42. package/dist/esm/modules/common/types/oneSDKModules/typeSystem.types.d.ts +1 -1
  43. package/dist/esm/modules/common/types/oneSDKVendorWrappers/initialiseFunction.d.ts +1 -1
  44. package/dist/esm/modules/common/types/recipeConfiguration.types.d.ts +5 -5
  45. package/dist/esm/modules/common/vendors/form/promisifyForm.d.ts +2 -2
  46. package/dist/esm/modules/common/vendors/form/useForm.d.ts +4 -4
  47. package/dist/esm/modules/common/vendors/incode/createEventHandlers.d.ts +4 -4
  48. package/dist/esm/modules/common/vendors/incode/index.d.ts +1 -1
  49. package/dist/esm/modules/common/vendors/incode/startCamera.d.ts +3 -3
  50. package/dist/esm/modules/common/vendors/onfido/index.d.ts +3 -3
  51. package/dist/esm/modules/common/vendors/onfido/onfido.types.d.ts +1 -1
  52. package/dist/esm/modules/config/modules.d.ts +18 -18
  53. package/dist/esm/modules/device/definition.d.ts +2 -2
  54. package/dist/esm/modules/device/events.d.ts +1 -1
  55. package/dist/esm/modules/device/index.d.ts +4 -4
  56. package/dist/esm/modules/device/index.d.ts.map +1 -1
  57. package/dist/esm/modules/device/index.js +19 -16
  58. package/dist/esm/modules/device/index.js.map +1 -1
  59. package/dist/esm/modules/device/parseConfiguration.d.ts +1 -1
  60. package/dist/esm/modules/device/vendors/Sardine.d.ts +6 -6
  61. package/dist/esm/modules/device/vendors/Threatmetrix/index.d.ts +4 -4
  62. package/dist/esm/modules/exports.d.ts +1 -1
  63. package/dist/esm/modules/features.config.d.ts +1 -1
  64. package/dist/esm/modules/federation/definition.d.ts +2 -2
  65. package/dist/esm/modules/federation/index.d.ts +2 -2
  66. package/dist/esm/modules/federation/index.d.ts.map +1 -1
  67. package/dist/esm/modules/federation/index.js +15 -14
  68. package/dist/esm/modules/federation/index.js.map +1 -1
  69. package/dist/esm/modules/federation/parseConfiguration.d.ts +1 -1
  70. package/dist/esm/modules/federation/vendors/Singpass.d.ts +5 -5
  71. package/dist/esm/modules/form/definition.d.ts +7 -7
  72. package/dist/esm/modules/form/events.d.ts +3 -3
  73. package/dist/esm/modules/form/index.d.ts.map +1 -1
  74. package/dist/esm/modules/form/index.js +5 -3
  75. package/dist/esm/modules/form/index.js.map +1 -1
  76. package/dist/esm/modules/form/validateConfiguration.d.ts +1 -1
  77. package/dist/esm/modules/form/vendors/formio/formioSdk.d.ts +1 -1
  78. package/dist/esm/modules/form/vendors/formio/index.d.ts +3 -3
  79. package/dist/esm/modules/form/vendors/formio/transformers/assignFormioDataToIndividualModule.d.ts +1 -1
  80. package/dist/esm/modules/form/vendors/formio/transformers/assignIndividualDataToFormioSdk.d.ts +1 -1
  81. package/dist/esm/modules/form/vendors/legacy/index.d.ts +5 -5
  82. package/dist/esm/modules/form/vendors/legacy/legacyUIEvents.types.d.ts +5 -5
  83. package/dist/esm/modules/form/vendors/legacy/loadLegacyUI.d.ts +3 -3
  84. package/dist/esm/modules/form/vendors/react/App.d.ts +2 -2
  85. package/dist/esm/modules/form/vendors/react/appConfig.type.d.ts +2 -2
  86. package/dist/esm/modules/form/vendors/react/components/base/SharedInput/Input.d.ts +1 -1
  87. package/dist/esm/modules/form/vendors/react/components/view/ActionFormField/ActionFormField.js +2 -2
  88. package/dist/esm/modules/form/vendors/react/components/view/ActionFormField/ActionFormField.js.map +1 -1
  89. package/dist/esm/modules/form/vendors/react/components/view/FrankieAddress/FrankieAddress.js +2 -2
  90. package/dist/esm/modules/form/vendors/react/components/view/FrankieAddress/FrankieAddress.js.map +1 -1
  91. package/dist/esm/modules/form/vendors/react/components/view/FrankieFormMapper/FrankieFormMapper.d.ts +1 -1
  92. package/dist/esm/modules/form/vendors/react/constants/icons.d.ts +62 -62
  93. package/dist/esm/modules/form/vendors/react/constants/icons.d.ts.map +1 -1
  94. package/dist/esm/modules/form/vendors/react/constants/icons.js +74 -62
  95. package/dist/esm/modules/form/vendors/react/constants/icons.js.map +1 -1
  96. package/dist/esm/modules/form/vendors/react/constants/layoutMapper.const.d.ts +7 -7
  97. package/dist/esm/modules/form/vendors/react/constants/staticScreenMapper.const.d.ts +3 -3
  98. package/dist/esm/modules/form/vendors/react/features/Consent/hostedBusinessConsent.config.d.ts +1 -1
  99. package/dist/esm/modules/form/vendors/react/features/DocUpload/FileUploader/Main.d.ts +1 -1
  100. package/dist/esm/modules/form/vendors/react/features/DocUpload/FileUploader/Progress.d.ts +1 -1
  101. package/dist/esm/modules/form/vendors/react/features/DocUpload/FileUploader/Review.d.ts +1 -1
  102. package/dist/esm/modules/form/vendors/react/features/DocUpload/FileUploader/index.d.ts +1 -1
  103. package/dist/esm/modules/form/vendors/react/features/IdPreps/driversLicense.config.d.ts +1 -1
  104. package/dist/esm/modules/form/vendors/react/features/IdPreps/mediCare.config.d.ts +1 -1
  105. package/dist/esm/modules/form/vendors/react/features/IdPreps/passport.config.d.ts +1 -1
  106. package/dist/esm/modules/form/vendors/react/features/IdSelection/idSelection.config.d.ts +6 -6
  107. package/dist/esm/modules/form/vendors/react/features/IdSelection/idSelection.const.d.ts +4 -4
  108. package/dist/esm/modules/form/vendors/react/features/IdSelection/manualIdSelection.config.d.ts +47 -47
  109. package/dist/esm/modules/form/vendors/react/features/PersonalDetails/PersonalDetails.js +1 -1
  110. package/dist/esm/modules/form/vendors/react/features/PersonalDetails/PersonalDetails.js.map +1 -1
  111. package/dist/esm/modules/form/vendors/react/features/PersonalDetails/personalDetails.config.d.ts +392 -392
  112. package/dist/esm/modules/form/vendors/react/features/ReviewDocument/ReviewDocument.js +1 -1
  113. package/dist/esm/modules/form/vendors/react/features/ReviewDocument/ReviewDocument.js.map +1 -1
  114. package/dist/esm/modules/form/vendors/react/features/Welcome/hostedBusinessWelcome.config.d.ts +1 -1
  115. package/dist/esm/modules/form/vendors/react/features/Welcome/manualWelcome.config.d.ts +4 -4
  116. package/dist/esm/modules/form/vendors/react/features/Welcome/welcome.config.d.ts +1 -1
  117. package/dist/esm/modules/form/vendors/react/hooks/useConfigFactory.hooks.js +1 -1
  118. package/dist/esm/modules/form/vendors/react/hooks/useConfigFactory.hooks.js.map +1 -1
  119. package/dist/esm/modules/form/vendors/react/hooks/useEventContext.d.ts +3 -3
  120. package/dist/esm/modules/form/vendors/react/hooks/useFormMapper.hook.d.ts +526 -526
  121. package/dist/esm/modules/form/vendors/react/hooks/useManualConfigFactory.hook.js +1 -1
  122. package/dist/esm/modules/form/vendors/react/hooks/useManualConfigFactory.hook.js.map +1 -1
  123. package/dist/esm/modules/form/vendors/react/hooks/usePersonalDetailsUpdateFactory.hook.d.ts +1 -1
  124. package/dist/esm/modules/form/vendors/react/hooks/usePersonalDetailsUpdateFactory.hook.js +1 -1
  125. package/dist/esm/modules/form/vendors/react/hooks/usePersonalDetailsUpdateFactory.hook.js.map +1 -1
  126. package/dist/esm/modules/form/vendors/react/hooks/useReviewUpdateFactory.hook.d.ts +6 -6
  127. package/dist/esm/modules/form/vendors/react/index.d.ts +4 -4
  128. package/dist/esm/modules/form/vendors/react/model/address.model.d.ts +2 -2
  129. package/dist/esm/modules/form/vendors/react/model/googleAddress.model.d.ts +1 -1
  130. package/dist/esm/modules/form/vendors/react/model/idDetails.model.d.ts +1 -1
  131. package/dist/esm/modules/form/vendors/react/model/personalDetails.model.d.ts +1 -1
  132. package/dist/esm/modules/form/vendors/react/model/review.model.d.ts +2 -2
  133. package/dist/esm/modules/form/vendors/react/types/pages.type.d.ts +1 -1
  134. package/dist/esm/modules/form/vendors/react/utils/layout.util.d.ts +1 -1
  135. package/dist/esm/modules/form/vendors/react/utils/object.util.d.ts +2 -2
  136. package/dist/esm/modules/frankie-client/ClientsDictionary.d.ts +1 -1
  137. package/dist/esm/modules/frankie-client/DummyFrankieApiClient.d.ts +1 -1
  138. package/dist/esm/modules/frankie-client/FrankieApiClient.d.ts +2 -2
  139. package/dist/esm/modules/frankie-client/clients/ApplicantClient.d.ts +4 -4
  140. package/dist/esm/modules/frankie-client/clients/BusinessClient.d.ts +1 -1
  141. package/dist/esm/modules/frankie-client/clients/FederationClient.d.ts +1 -1
  142. package/dist/esm/modules/frankie-client/clients/IDVClient.d.ts +2 -2
  143. package/dist/esm/modules/frankie-client/clients/OCRClient.d.ts +1 -1
  144. package/dist/esm/modules/frankie-client/clients/SupportingDocumentsClient.d.ts +3 -3
  145. package/dist/esm/modules/frankie-client/clients/TelemetryEventsClient.d.ts +1 -1
  146. package/dist/esm/modules/frankie-client/index.d.ts +1 -1
  147. package/dist/esm/modules/frankie-client/mocks/federation/index.d.ts +1 -1
  148. package/dist/esm/modules/frankie-client/mocks/idvAndBiometrics/idvSubmission.d.ts +4 -4
  149. package/dist/esm/modules/frankie-client/mocks/individual/loadIndividual.d.ts +1 -1
  150. package/dist/esm/modules/frankie-client/mocks/individual/resolveDocumentData.d.ts +2 -2
  151. package/dist/esm/modules/frankie-client/mocks/individual/resolveIndividualData.d.ts +3 -3
  152. package/dist/esm/modules/frankie-client/mocks/ocr/ocrSubmission.d.ts +1 -1
  153. package/dist/esm/modules/frankie-client/mocks/options/simplified/idvFlow.d.ts +4 -4
  154. package/dist/esm/modules/frankie-client/mocks/options/simplified/ocrFlow.d.ts +4 -4
  155. package/dist/esm/modules/frankie-client/mocks/options/simplified/preloadedIndividual.d.ts +5 -5
  156. package/dist/esm/modules/frankie-client/mocks/storage/mockStorage.d.ts +1 -1
  157. package/dist/esm/modules/idv/actions/mount.d.ts +3 -3
  158. package/dist/esm/modules/idv/definition.types.d.ts +8 -8
  159. package/dist/esm/modules/idv/events.types.d.ts +5 -5
  160. package/dist/esm/modules/idv/index.d.ts.map +1 -1
  161. package/dist/esm/modules/idv/index.js +9 -5
  162. package/dist/esm/modules/idv/index.js.map +1 -1
  163. package/dist/esm/modules/idv/parseConfiguration.d.ts +1 -1
  164. package/dist/esm/modules/idv/vendors/Incode/index.d.ts +5 -5
  165. package/dist/esm/modules/idv/vendors/Mastercard/index.d.ts +2 -2
  166. package/dist/esm/modules/idv/vendors/OcrLabs/endFlow.d.ts +4 -4
  167. package/dist/esm/modules/idv/vendors/OcrLabs/index.d.ts +3 -3
  168. package/dist/esm/modules/idv/vendors/OcrLabs/startDummyFlow.d.ts +2 -2
  169. package/dist/esm/modules/idv/vendors/OcrLabs/startFlow.d.ts +2 -2
  170. package/dist/esm/modules/idv/vendors/Onfido/index.d.ts +4 -4
  171. package/dist/esm/modules/idv/vendors/common/checkStatusEventMapping.d.ts +3 -3
  172. package/dist/esm/modules/idv/vendors/common/iframeUtils/createIframe.d.ts +2 -2
  173. package/dist/esm/modules/idv/vendors/common/iframeUtils/createIframeEventListener.d.ts +1 -1
  174. package/dist/esm/modules/idv/vendors/common/iframeUtils/defineIframeIDVWrapper.d.ts +7 -7
  175. package/dist/esm/modules/idv/vendors/common/iframeUtils/updateIndividualModuleState.d.ts +3 -3
  176. package/dist/esm/modules/idv/vendors/common/initialiseSession.d.ts +4 -4
  177. package/dist/esm/modules/idv/vendors/common/windowUtils/createWindow.d.ts +1 -1
  178. package/dist/esm/modules/index.d.ts +4 -4
  179. package/dist/esm/modules/individual/actions/addReference.d.ts +3 -3
  180. package/dist/esm/modules/individual/actions/addresses.d.ts +2 -2
  181. package/dist/esm/modules/individual/actions/consents.d.ts +1 -1
  182. package/dist/esm/modules/individual/actions/documents.d.ts +2 -2
  183. package/dist/esm/modules/individual/actions/email.d.ts +2 -2
  184. package/dist/esm/modules/individual/actions/emitEvents.d.ts +3 -3
  185. package/dist/esm/modules/individual/actions/phoneNumber.d.ts +2 -2
  186. package/dist/esm/modules/individual/actions/profileType.d.ts +2 -2
  187. package/dist/esm/modules/individual/actions/search.d.ts +3 -3
  188. package/dist/esm/modules/individual/actions/submit.d.ts +5 -5
  189. package/dist/esm/modules/individual/definition.d.ts +8 -8
  190. package/dist/esm/modules/individual/events.d.ts +1 -1
  191. package/dist/esm/modules/meta.json +1 -1
  192. package/dist/esm/modules/ocr/actions/mount.d.ts +4 -4
  193. package/dist/esm/modules/ocr/actions/start.d.ts +7 -7
  194. package/dist/esm/modules/ocr/definition.d.ts +5 -5
  195. package/dist/esm/modules/ocr/events.d.ts +2 -2
  196. package/dist/esm/modules/ocr/index.d.ts +11 -11
  197. package/dist/esm/modules/ocr/index.d.ts.map +1 -1
  198. package/dist/esm/modules/ocr/index.js +6 -3
  199. package/dist/esm/modules/ocr/index.js.map +1 -1
  200. package/dist/esm/modules/ocr/vendors/Incode/index.d.ts +3 -3
  201. package/dist/esm/modules/ocr/vendors/Onfido/index.d.ts +2 -2
  202. package/dist/esm/modules/ocr/vendors/common/createSession.d.ts +4 -4
  203. package/dist/esm/modules/ocr/vendors/common/initProcess.d.ts +2 -2
  204. package/dist/esm/modules/ocr/vendors/common/mutationObserver.d.ts +2 -2
  205. package/dist/esm/modules/ocr/vendors/common/statusEvaluators.d.ts +5 -5
  206. package/dist/esm/modules/ocr/vendors/dummy-ocr/index.d.ts +3 -3
  207. package/dist/esm/modules/sdk/initialisation/componentLoader.d.ts +2 -2
  208. package/dist/esm/modules/sdk/initialisation/configurationParser.d.ts +1 -1
  209. package/dist/esm/modules/sdk/initialisation/sharedDependencies.d.ts +4 -4
  210. package/dist/esm/modules/sdk/initialisation/sharedDependencies.d.ts.map +1 -1
  211. package/dist/esm/modules/sdk/initialisation/sharedDependencies.js +20 -8
  212. package/dist/esm/modules/sdk/initialisation/sharedDependencies.js.map +1 -1
  213. package/dist/esm/modules/sdk/types/globalEvents.d.ts +2 -2
  214. package/dist/esm/modules/sdk/types/oneSDK.d.ts +5 -5
  215. package/dist/esm/modules/sdk/types/oneSDKParameters.d.ts +2 -2
  216. package/dist/esm/modules/session/SessionContext.d.ts +1 -1
  217. package/dist/esm/modules/session/definition.d.ts +3 -3
  218. package/dist/esm/modules/session/index.d.ts +5 -5
  219. package/dist/esm/modules/session/index.d.ts.map +1 -1
  220. package/dist/esm/modules/session/index.js +24 -16
  221. package/dist/esm/modules/session/index.js.map +1 -1
  222. package/dist/esm/modules/session/types/module.d.ts +1 -1
  223. package/dist/esm/modules/types.d.ts +13 -13
  224. package/dist/esm/modules/workflow/definition.types.d.ts +1 -1
  225. package/dist/esm/modules/workflow/index.d.ts +1 -1
  226. package/dist/version.txt +0 -1
  227. package/package.json +8 -5
  228. package/dist/esm/node_modules/@reduxjs/toolkit/dist/uncheckedindexed.d.ts +0 -6
  229. package/dist/esm/node_modules/@reduxjs/toolkit/dist/uncheckedindexed.d.ts.map +0 -1
  230. package/dist/umd/080b774e0f4f9c679e85.svg +0 -45
  231. package/dist/umd/0c9574c81d7d87e9ccd3.svg +0 -34
  232. package/dist/umd/0cd8e74f8a68e0b1ae14.svg +0 -3
  233. package/dist/umd/10183d99573bcd186235.svg +0 -5
  234. package/dist/umd/124.js +0 -2
  235. package/dist/umd/124.js.map +0 -1
  236. package/dist/umd/1c9c1ef03c6dd661b89b.woff +0 -0
  237. package/dist/umd/1df3f35eac93c61986b1.svg +0 -60
  238. package/dist/umd/1f76ff5e84787152adc5.svg +0 -50
  239. package/dist/umd/2451ce2859277292a2a3.svg +0 -4
  240. package/dist/umd/24c67c1821feba22f3f7.svg +0 -5
  241. package/dist/umd/2546128ef2e2d56276b7.svg +0 -5
  242. package/dist/umd/26a8e1ce5e5578874420.woff2 +0 -0
  243. package/dist/umd/2f32844e02839dd608a4.svg +0 -4
  244. package/dist/umd/329d07fd3f40d3967c81.svg +0 -4
  245. package/dist/umd/32cb4eea6ca1acb9f788.svg +0 -45
  246. package/dist/umd/3443b53b9b1a00c340f7.svg +0 -27
  247. package/dist/umd/34fe2370aa5e73787795.svg +0 -30
  248. package/dist/umd/36ddfb506829cb8cde72.svg +0 -113
  249. package/dist/umd/396cc7cc5e61acfa8fc8.svg +0 -15
  250. package/dist/umd/3a660ff8435efa515e98.svg +0 -4
  251. package/dist/umd/3b687e48c6bb765ed976.svg +0 -5
  252. package/dist/umd/3d245ccf2dde73ceca07.svg +0 -114
  253. package/dist/umd/42caa2dd6b4f0de68157.svg +0 -51
  254. package/dist/umd/463e54e898297e314139.svg +0 -81
  255. package/dist/umd/4ac349963383ebda508b.svg +0 -50
  256. package/dist/umd/4db0db393dfe2f9f90c1.svg +0 -60
  257. package/dist/umd/4ee01199f6f6b7e6fb24.svg +0 -195
  258. package/dist/umd/4ff338b86cdba19934cf.svg +0 -86
  259. package/dist/umd/58b74e594849c43b2248.woff2 +0 -0
  260. package/dist/umd/5c23763467ce9cfda119.svg +0 -41
  261. package/dist/umd/5ddf80d7ddb1d1c5a0bc.woff +0 -0
  262. package/dist/umd/6375eb14534238c06a4b.svg +0 -27
  263. package/dist/umd/6558f8e71743e073c18b.svg +0 -3
  264. package/dist/umd/67cbc8178ea76ef0d8b4.svg +0 -4
  265. package/dist/umd/6c874e1a72a4fa9eeed8.woff2 +0 -0
  266. package/dist/umd/71b71503b4f733079331.svg +0 -3
  267. package/dist/umd/7f6d57b96337c21c053d.woff +0 -0
  268. package/dist/umd/8053f51266aa9d864691.svg +0 -4
  269. package/dist/umd/80929602ea97f94dc18c.svg +0 -65
  270. package/dist/umd/8a06059b84b1aa2bf661.svg +0 -29
  271. package/dist/umd/8f10666ff21ef0238370.svg +0 -13
  272. package/dist/umd/949.js +0 -3
  273. package/dist/umd/949.js.LICENSE.txt +0 -60
  274. package/dist/umd/949.js.map +0 -1
  275. package/dist/umd/9d49ce231cb895b6ef29.svg +0 -50
  276. package/dist/umd/9dee3446081d7d47623b.svg +0 -4
  277. package/dist/umd/a96ec21d243a49916487.svg +0 -47
  278. package/dist/umd/ac457c4800183645b1ad.svg +0 -45
  279. package/dist/umd/af823d3a76ce1e2e36af.woff +0 -0
  280. package/dist/umd/aff615d38d2fce3f82b2.svg +0 -83
  281. package/dist/umd/bc42b55176ae1021b9e4.svg +0 -80
  282. package/dist/umd/biometrics-dummy.js +0 -2
  283. package/dist/umd/biometrics-dummy.js.map +0 -1
  284. package/dist/umd/biometrics-incode.js +0 -2
  285. package/dist/umd/biometrics-incode.js.map +0 -1
  286. package/dist/umd/biometrics-ocrlabs.js +0 -2
  287. package/dist/umd/biometrics-ocrlabs.js.map +0 -1
  288. package/dist/umd/biometrics-onfido.js +0 -2
  289. package/dist/umd/biometrics-onfido.js.map +0 -1
  290. package/dist/umd/c0dede047f9a2b7c1309.svg +0 -51
  291. package/dist/umd/c16900512bb2f899c7eb.svg +0 -5
  292. package/dist/umd/c7a05c7d7d1f9347ae1b.svg +0 -53
  293. package/dist/umd/ce5b46abe62641bddb20.svg +0 -5
  294. package/dist/umd/d15d58eb544d245877e2.svg +0 -16
  295. package/dist/umd/d216030199c873b0bf41.woff2 +0 -0
  296. package/dist/umd/d563d85c23bcbd268d5e.svg +0 -30
  297. package/dist/umd/d70a547a409868c43a95.svg +0 -43
  298. package/dist/umd/d9ed930ae3bb52f2abe1.svg +0 -4
  299. package/dist/umd/dc45d5d9fb4b8959e156.svg +0 -24
  300. package/dist/umd/dd199fa4125e4ebef289.svg +0 -67
  301. package/dist/umd/dddc2581e578cfb3b997.svg +0 -195
  302. package/dist/umd/device-sardine.js +0 -2
  303. package/dist/umd/device-sardine.js.map +0 -1
  304. package/dist/umd/device-threatmetrix.js +0 -2
  305. package/dist/umd/device-threatmetrix.js.map +0 -1
  306. package/dist/umd/df83da88c151bcf97231.svg +0 -45
  307. package/dist/umd/e7ac03e5736bea4d6346.svg +0 -53
  308. package/dist/umd/e84075ff43e508e4fbd5.svg +0 -5
  309. package/dist/umd/e85b9f93aac09995bad2.svg +0 -80
  310. package/dist/umd/ef3c33f0d919896ee0bf.svg +0 -25
  311. package/dist/umd/f22fe25046b4ca4a969a.svg +0 -65
  312. package/dist/umd/f4a5163b8f91c2c66892.svg +0 -4
  313. package/dist/umd/f670207e1feb7ec4f6d4.svg +0 -5
  314. package/dist/umd/f75020be237d9de68d86.svg +0 -192
  315. package/dist/umd/fc7c8869af28cb1b9c21.svg +0 -5
  316. package/dist/umd/fdb0a109281e6c12eff6.svg +0 -75
  317. package/dist/umd/form-formio.js +0 -2
  318. package/dist/umd/form-formio.js.map +0 -1
  319. package/dist/umd/form-legacy.js +0 -2
  320. package/dist/umd/form-legacy.js.map +0 -1
  321. package/dist/umd/form-react.js +0 -2
  322. package/dist/umd/form-react.js.map +0 -1
  323. package/dist/umd/idv-incode.js +0 -2
  324. package/dist/umd/idv-incode.js.map +0 -1
  325. package/dist/umd/idv-mastercard.js +0 -2
  326. package/dist/umd/idv-mastercard.js.map +0 -1
  327. package/dist/umd/idv-ocrlabs.js +0 -2
  328. package/dist/umd/idv-ocrlabs.js.map +0 -1
  329. package/dist/umd/idv-onfido.js +0 -2
  330. package/dist/umd/idv-onfido.js.map +0 -1
  331. package/dist/umd/ocr-dummy.js +0 -2
  332. package/dist/umd/ocr-dummy.js.map +0 -1
  333. package/dist/umd/ocr-incode.js +0 -2
  334. package/dist/umd/ocr-incode.js.map +0 -1
  335. package/dist/umd/ocr-onfido.js +0 -2
  336. package/dist/umd/ocr-onfido.js.map +0 -1
  337. package/dist/umd/oneSdk.umd.js +0 -3
  338. package/dist/umd/oneSdk.umd.js.LICENSE.txt +0 -8
  339. package/dist/umd/oneSdk.umd.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"form-react.js","mappings":"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AAA,GACT,iBACA,aACA,SACA,SACA,4BACA,mCACD,SAEAC,aAAW,EAAXA,EAAa+D,kBAKtB,gBAAK1J,WAAW,EAAA0F,GAAA,GAAK,WAAU,UAC7B,gBACEoB,IACyC,QAAvC,EAAc,QAAd,EAAAxB,EAAOqB,eAAO,QAAIhB,aAAW,EAAXA,EAAasE,gBAAQ,QAAI1J,GAAMG,qBA/ElD,qBAAqBkF,IAoF7B,GACD,CAACjB,IAGH,OACE,iCACE,gBACE3E,WAAW,EAAA0F,GAAA,GACT,UACA,WACA,cACA,qBACA,UACAV,GAAckF,WAEhB9E,MAAOA,aAAK,EAALA,EAAQJ,GAAckF,WAAU,SAGU,QADhD,EAAAvF,aAAO,EAAPA,EACGjF,QAAQsG,IAA+B,KAAtBA,aAAI,EAAJA,EAAgB,kBAAY,eAC7CnG,IAAIgK,MAETH,aAAQ,EAARA,EAAU3J,SACT,cACEC,WAAW,EAAA0F,GAAA,GACT,aACA,4BACAV,GAAc0E,UAEhBtE,MAAsB,QAAf,EAAAsE,aAAQ,EAARA,EAAUtE,aAAK,eAAGJ,GAAc0E,UACvCnD,wBAAyB,CACvBC,OAAQ,cAAkC,QAAf,EAAAkD,aAAQ,EAARA,EAAU3J,aAAK,QAAI,GAAI,CAChD0G,UAAU,SAMrB,ECzJU0D,GAAa,CACxBC,aAAc,CACZrK,MAAO,gBACP0E,aAAc,CAAC,CAAE1E,MAAO,qDCHfsK,GAAe,CAC1B,QACA,SACA,QACA,SACA,QACA,QACA,UACA,SACA,QACA,QACA,WACA,UACA,aACA,aACA,YACA,YACA,cACA,aACA,aACA,YACA,eACA,gBACA,eACA,gBACA,eACA,eACA,iBACA,gBACA,eACA,YACA,eACA,gBACA,eACA,gBACA,eACA,eACA,iBACA,gBACA,eACA,WACA,cACA,eACA,cACA,eACA,cACA,cACA,gBACA,eACA,cACA,WACA,cACA,eACA,cACA,eACA,cACA,cACA,gBACA,eACA,cACA,WACA,cACA,eACA,cACA,eACA,cACA,cACA,gBACA,eACA,cACA,aACA,gBACA,iBACA,gBACA,iBACA,gBACA,gBACA,kBACA,iBACA,gBACA,YACA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","sources":["webpack://OneSdk/./styles/f1-style.css","webpack://OneSdk/./styles/fonts/fonts.css","webpack://OneSdk/./styles/styles.css","webpack://OneSdk/./modules/form/vendors/formio/transformers/countryData.ts","webpack://OneSdk/./styles/images/CloudUploadOutline.tsx","webpack://OneSdk/./styles/images/PencilOutline.tsx","webpack://OneSdk/./modules/form/vendors/react/constants/icons.tsx","webpack://OneSdk/./modules/form/vendors/react/features/IdPreps/passport.config.ts","webpack://OneSdk/./modules/form/vendors/react/features/IdPreps/mediCare.config.ts","webpack://OneSdk/./modules/form/vendors/react/appConfig.type.ts","webpack://OneSdk/./modules/form/vendors/react/components/view/FrankieCheckbox/FrankieCheckbox.tsx","webpack://OneSdk/./modules/form/vendors/react/components/view/FrankieDescription/FrankieDescription.tsx","webpack://OneSdk/./modules/form/vendors/react/components/view/FrankieHeading/Heading.tsx","webpack://OneSdk/./modules/form/vendors/react/components/base/FrankieButton/BaseButton.tsx","webpack://OneSdk/./modules/form/vendors/react/components/base/FrankieButton/FrankieButton.tsx","webpack://OneSdk/./modules/form/vendors/react/components/view/FrankieFormButton/FrankieFormButton.tsx","webpack://OneSdk/./modules/form/vendors/react/components/view/Wrapper/Wrapper.tsx","webpack://OneSdk/./modules/form/vendors/react/features/Consent/Consent.tsx","webpack://OneSdk/./modules/form/vendors/react/features/IdPreps/driversLicense.config.ts","webpack://OneSdk/./modules/form/vendors/react/components/view/FrankieInstructionList/FrankieInstructionList.tsx","webpack://OneSdk/./modules/form/vendors/react/constants/staticScreenMapper.const.ts","webpack://OneSdk/./modules/form/vendors/react/features/IdPreps/IdPrep.tsx","webpack://OneSdk/./modules/form/vendors/react/components/view/FrankieCardList/FrankieCardList.tsx","webpack://OneSdk/./modules/form/vendors/react/constants/locale.const.ts","webpack://OneSdk/./modules/form/vendors/react/constants/numbers.const.ts","webpack://OneSdk/./modules/form/vendors/react/redux/constants/stateKey.enum.ts","webpack://OneSdk/./modules/form/vendors/react/redux/slices/manualSlice.tsx","webpack://OneSdk/./modules/form/vendors/react/utils/object.util.ts","webpack://OneSdk/./modules/form/vendors/react/hooks/useManualWrapperFactory.hook.tsx","webpack://OneSdk/./modules/form/vendors/react/features/IdSelection/IdSelection.tsx","webpack://OneSdk/./modules/form/vendors/react/features/IdSelection/idSelection.config.tsx","webpack://OneSdk/./modules/form/vendors/react/features/Welcome/welcome.config.ts","webpack://OneSdk/./modules/form/vendors/react/components/view/Progress/Progress.tsx","webpack://OneSdk/./modules/form/vendors/react/features/DocUpload/FileUploader/index.ts","webpack://OneSdk/./modules/form/vendors/react/features/DocUpload/FileUploader/Main.tsx","webpack://OneSdk/./modules/form/vendors/react/features/DocUpload/FileUploader/Preview.tsx","webpack://OneSdk/./modules/form/vendors/react/features/DocUpload/FileUploader/Review.tsx","webpack://OneSdk/./modules/form/vendors/react/features/DocUpload/FileUploader/Progress.tsx","webpack://OneSdk/./modules/form/vendors/react/features/DocUpload/FileUploader/Success.tsx","webpack://OneSdk/./modules/form/vendors/react/features/DocUpload/FileUploader/Fail.tsx","webpack://OneSdk/./modules/form/vendors/react/features/DocUpload/DocUpload.tsx","webpack://OneSdk/./modules/form/vendors/react/features/DocUpload/docUpload.config.ts","webpack://OneSdk/./modules/form/vendors/react/features/Loading/loading.config.tsx","webpack://OneSdk/./modules/form/vendors/react/constants/form.const.tsx","webpack://OneSdk/./modules/form/vendors/react/features/Review/review.const.ts","webpack://OneSdk/./modules/form/vendors/react/features/PersonalDetails/personalDetails.config.ts","webpack://OneSdk/./modules/form/vendors/react/features/Result/result.config.ts","webpack://OneSdk/./modules/form/vendors/react/hooks/useFormMapper.hook.ts","webpack://OneSdk/./modules/form/vendors/react/components/base/TextField/TextSelectField.tsx","webpack://OneSdk/./modules/form/vendors/react/components/base/SharedInput/Input.tsx","webpack://OneSdk/./modules/form/vendors/react/model/error.model.tsx","webpack://OneSdk/./modules/form/vendors/react/hooks/menu.hooks.tsx","webpack://OneSdk/./modules/form/vendors/react/components/base/SelectField/SelectField.tsx","webpack://OneSdk/./modules/form/vendors/react/components/base/SharedSelect/Select.tsx","webpack://OneSdk/./modules/form/vendors/react/components/base/StandardDate/StandardDate.tsx","webpack://OneSdk/./modules/form/vendors/react/components/base/FrankieActionField/FrankieActionField.tsx","webpack://OneSdk/./modules/form/vendors/react/components/view/ManualAddress/ManualAddress.tsx","webpack://OneSdk/./modules/form/vendors/react/constants/address.const.ts","webpack://OneSdk/./modules/form/vendors/react/model/googleAddress.model.ts","webpack://OneSdk/./modules/form/vendors/react/hooks/useAddressSearch.tsx","webpack://OneSdk/./modules/form/vendors/react/components/base/FrankieLoader/FrankieLoader.tsx","webpack://OneSdk/./modules/form/vendors/react/components/base/FrankieTextArea/FrankieTextArea.tsx","webpack://OneSdk/./modules/form/vendors/react/components/base/SharedTextArea/TextArea.tsx","webpack://OneSdk/./modules/form/vendors/react/components/view/SearchableAddress/SearchableAddress.tsx","webpack://OneSdk/./modules/form/vendors/react/components/view/FrankieAddress/FrankieAddress.tsx","webpack://OneSdk/./modules/form/vendors/react/components/view/ActionFormField/ActionFormField.tsx","webpack://OneSdk/./modules/form/vendors/react/components/view/FrankiePhoneField/FrankiePhoneField.tsx","webpack://OneSdk/./modules/form/vendors/react/components/view/FrankieFormMapper/FrankieFormMapper.tsx","webpack://OneSdk/./modules/form/vendors/react/model/address.model.ts","webpack://OneSdk/./modules/form/vendors/react/model/review.model.ts","webpack://OneSdk/./modules/form/vendors/react/features/Consent/hostedBusinessConsent.config.tsx","webpack://OneSdk/./modules/form/vendors/react/features/Welcome/hostedBusinessWelcome.config.ts","webpack://OneSdk/./modules/form/vendors/react/features/Consent/manualConsent.config.tsx","webpack://OneSdk/./modules/form/vendors/react/features/IdSelection/idSelection.const.tsx","webpack://OneSdk/./modules/form/vendors/react/features/IdSelection/manualIdSelection.config.tsx","webpack://OneSdk/./modules/form/vendors/react/features/Review/review.config.tsx","webpack://OneSdk/./modules/form/vendors/react/features/Retry/retry.config.tsx","webpack://OneSdk/./modules/form/vendors/react/features/ReviewDocument/reviewDocument.config.tsx","webpack://OneSdk/./modules/form/vendors/react/features/Welcome/manualWelcome.config.ts","webpack://OneSdk/./modules/form/vendors/react/hooks/useConfigFactory.hooks.tsx","webpack://OneSdk/./modules/form/vendors/react/hooks/useReviewUpdateFactory.hook.tsx","webpack://OneSdk/./modules/form/vendors/react/hooks/useManualConfigFactory.hook.tsx","webpack://OneSdk/./modules/form/vendors/react/model/idDetails.model.ts","webpack://OneSdk/./modules/form/vendors/react/features/IdDetails/IdDetails.tsx","webpack://OneSdk/./modules/form/vendors/react/model/personalDetails.model.ts","webpack://OneSdk/./modules/form/vendors/react/features/PersonalDetails/PersonalDetails.tsx","webpack://OneSdk/./modules/form/vendors/react/hooks/usePersonalDetailsUpdateFactory.hook.tsx","webpack://OneSdk/./modules/form/vendors/react/components/view/FrankieReviewDocumentList/FrankieReviewDocumentList.tsx","webpack://OneSdk/./modules/form/vendors/react/features/Loading/Loading.tsx","webpack://OneSdk/./modules/form/vendors/react/features/Result/Result.tsx","webpack://OneSdk/./modules/form/vendors/react/features/ReviewDocument/ReviewDocument.tsx","webpack://OneSdk/./modules/form/vendors/react/pages/PersonalDetailWrapper/PersonalDetailWrapper.tsx","webpack://OneSdk/./modules/form/vendors/react/pages/ManualDetailsWrapper/ManualDetailsWrapper.tsx","webpack://OneSdk/./modules/form/vendors/react/features/Review/Review.tsx","webpack://OneSdk/./modules/form/vendors/react/constants/layoutMapper.const.ts","webpack://OneSdk/./modules/form/vendors/react/features/Welcome/Welcome.tsx","webpack://OneSdk/./modules/form/vendors/react/features/Retry/Retry.tsx","webpack://OneSdk/./modules/form/vendors/react/pages/ReviewWrapper/ReviewWrapper.tsx","webpack://OneSdk/./modules/form/vendors/react/pages/LoadingWrapper/LoadingWrapper.tsx","webpack://OneSdk/./modules/form/vendors/react/pages/ResultWrapper/ResultWrapper.tsx","webpack://OneSdk/./modules/form/vendors/react/features/Consent/consent.config.tsx","webpack://OneSdk/./modules/form/vendors/react/redux/slices/moduleSlice.tsx","webpack://OneSdk/./modules/form/vendors/react/utils/layout.util.tsx","webpack://OneSdk/./modules/form/vendors/react/hooks/useEventContext.tsx","webpack://OneSdk/./modules/form/vendors/react/layout/Main/MainLayout.tsx","webpack://OneSdk/./modules/form/vendors/react/pages/ScreenWrapper/ScreenWrapper.tsx","webpack://OneSdk/./modules/form/vendors/react/redux/slices/loaderSlice.tsx","webpack://OneSdk/./modules/form/vendors/react/redux/store.ts","webpack://OneSdk/./modules/form/vendors/react/App.tsx","webpack://OneSdk/./styles/f1-style.css?2333","webpack://OneSdk/./styles/fonts/fonts.css?9b38","webpack://OneSdk/./styles/styles.css?6bc6","webpack://OneSdk/./modules/form/vendors/react/constants/styles.const.tsx","webpack://OneSdk/./modules/form/vendors/react/index.tsx"],"sourcesContent":["// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `*, ::before, ::after {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n --tw-contain-size: ;\n --tw-contain-layout: ;\n --tw-contain-paint: ;\n --tw-contain-style: \n}\n\n::backdrop {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n --tw-contain-size: ;\n --tw-contain-layout: ;\n --tw-contain-paint: ;\n --tw-contain-style: \n}\n\n.f1-pointer-events-none {\n pointer-events: none\n}\n\n.f1-absolute {\n position: absolute\n}\n\n.f1-relative {\n position: relative\n}\n\n.f1-sticky {\n position: sticky\n}\n\n.f1-bottom-0 {\n bottom: 0px\n}\n\n.f1-bottom-\\\\[-20px\\\\] {\n bottom: -20px\n}\n\n.f1-bottom-\\\\[13px\\\\] {\n bottom: 13px\n}\n\n.f1-left-0 {\n left: 0px\n}\n\n.f1-right-0 {\n right: 0px\n}\n\n.f1-right-2 {\n right: 8px\n}\n\n.f1-right-3 {\n right: 0.75rem\n}\n\n.f1--top-1 {\n top: -0.25rem\n}\n\n.f1-top-0 {\n top: 0px\n}\n\n.f1-top-\\\\[10px\\\\] {\n top: 10px\n}\n\n.f1-top-\\\\[25\\\\.5\\\\%\\\\] {\n top: 25.5%\n}\n\n.f1-z-20 {\n z-index: 20\n}\n\n.f1-z-50 {\n z-index: 50\n}\n\n.f1-m-0 {\n margin: 0px\n}\n\n.f1-mx-8 {\n margin-left: 2rem;\n margin-right: 2rem\n}\n\n.f1-mx-\\\\[21px\\\\] {\n margin-left: 21px;\n margin-right: 21px\n}\n\n.f1-mx-auto {\n margin-left: auto;\n margin-right: auto\n}\n\n.f1-my-4 {\n margin-top: 1rem;\n margin-bottom: 1rem\n}\n\n.f1-my-6 {\n margin-top: 1.5rem;\n margin-bottom: 1.5rem\n}\n\n.\\\\!f1-mr-0 {\n margin-right: 0px !important\n}\n\n.f1--mt-2 {\n margin-top: -8px\n}\n\n.f1--mt-2\\\\.5 {\n margin-top: -0.625rem\n}\n\n.f1-mb-0 {\n margin-bottom: 0px\n}\n\n.f1-mb-1 {\n margin-bottom: 0.25rem\n}\n\n.f1-mb-2 {\n margin-bottom: 8px\n}\n\n.f1-mb-3 {\n margin-bottom: 0.75rem\n}\n\n.f1-mb-4 {\n margin-bottom: 1rem\n}\n\n.f1-mb-6 {\n margin-bottom: 1.5rem\n}\n\n.f1-mb-\\\\[8px\\\\] {\n margin-bottom: 8px\n}\n\n.f1-ml-3 {\n margin-left: 0.75rem\n}\n\n.f1-mr-1 {\n margin-right: 0.25rem\n}\n\n.f1-mt-0 {\n margin-top: 0px\n}\n\n.f1-mt-1 {\n margin-top: 0.25rem\n}\n\n.f1-mt-2 {\n margin-top: 8px\n}\n\n.f1-mt-4 {\n margin-top: 1rem\n}\n\n.f1-mt-5 {\n margin-top: 1.25rem\n}\n\n.f1-mt-6 {\n margin-top: 1.5rem\n}\n\n.f1-mt-8 {\n margin-top: 2rem\n}\n\n.f1-mt-\\\\[-4px\\\\] {\n margin-top: -4px\n}\n\n.f1-mt-\\\\[32px\\\\] {\n margin-top: 32px\n}\n\n.f1-box-border {\n box-sizing: border-box\n}\n\n.f1-inline {\n display: inline\n}\n\n.f1-flex {\n display: flex\n}\n\n.f1-inline-flex {\n display: inline-flex\n}\n\n.\\\\!f1-h-5 {\n height: 1.25rem !important\n}\n\n.\\\\!f1-h-8 {\n height: 2rem !important\n}\n\n.f1-h-1 {\n height: 0.25rem\n}\n\n.f1-h-1\\\\.5 {\n height: 6px\n}\n\n.f1-h-10 {\n height: 2.5rem\n}\n\n.f1-h-12 {\n height: 3rem\n}\n\n.f1-h-24 {\n height: 6rem\n}\n\n.f1-h-4 {\n height: 1rem\n}\n\n.f1-h-7 {\n height: 1.75rem\n}\n\n.f1-h-96 {\n height: 24rem\n}\n\n.f1-h-\\\\[1px\\\\] {\n height: 1px\n}\n\n.f1-h-\\\\[48px\\\\] {\n height: 48px\n}\n\n.f1-h-\\\\[73px\\\\] {\n height: 73px\n}\n\n.f1-h-\\\\[calc\\\\(100\\\\%-92px\\\\)\\\\] {\n height: calc(100% - 92px)\n}\n\n.f1-h-auto {\n height: auto\n}\n\n.f1-h-full {\n height: 100%\n}\n\n.f1-max-h-64 {\n max-height: 16rem\n}\n\n.f1-max-h-\\\\[150px\\\\] {\n max-height: 150px\n}\n\n.f1-max-h-\\\\[193px\\\\] {\n max-height: 193px\n}\n\n.f1-min-h-\\\\[52px\\\\] {\n min-height: 52px\n}\n\n.\\\\!f1-w-5 {\n width: 1.25rem !important\n}\n\n.\\\\!f1-w-8 {\n width: 2rem !important\n}\n\n.\\\\!f1-w-\\\\[138px\\\\] {\n width: 138px !important\n}\n\n.f1-w-10 {\n width: 2.5rem\n}\n\n.f1-w-24 {\n width: 6rem\n}\n\n.f1-w-4 {\n width: 1rem\n}\n\n.f1-w-\\\\[206\\\\.5\\\\%\\\\] {\n width: 206.5%\n}\n\n.f1-w-\\\\[210\\\\.5\\\\%\\\\] {\n width: 210.5%\n}\n\n.f1-w-\\\\[300px\\\\] {\n width: 300px\n}\n\n.f1-w-\\\\[342px\\\\] {\n width: 342px\n}\n\n.f1-w-\\\\[48\\\\%\\\\] {\n width: 48%\n}\n\n.f1-w-\\\\[50\\\\%\\\\] {\n width: 50%\n}\n\n.f1-w-\\\\[calc\\\\(100\\\\%-2rem-4px\\\\)\\\\] {\n width: calc(100% - 2rem - 4px)\n}\n\n.f1-w-\\\\[calc\\\\(100\\\\%-48px\\\\)\\\\] {\n width: calc(100% - 48px)\n}\n\n.f1-w-auto {\n width: auto\n}\n\n.f1-w-full {\n width: 100%\n}\n\n.f1-min-w-\\\\[210px\\\\] {\n min-width: 210px\n}\n\n.f1-max-w-\\\\[318px\\\\] {\n max-width: 318px\n}\n\n.f1-flex-initial {\n flex: 0 1 auto\n}\n\n.f1-shrink {\n flex-shrink: 1\n}\n\n.f1-flex-grow {\n flex-grow: 1\n}\n\n.f1-grow {\n flex-grow: 1\n}\n\n.f1-basis-0 {\n flex-basis: 0px\n}\n\n@keyframes f1-spin {\n to {\n transform: rotate(360deg)\n }\n}\n\n.f1-animate-spin {\n animation: f1-spin 1s linear infinite\n}\n\n.f1-cursor-not-allowed {\n cursor: not-allowed\n}\n\n.f1-cursor-pointer {\n cursor: pointer\n}\n\n.f1-cursor-text {\n cursor: text\n}\n\n.f1-resize-none {\n resize: none\n}\n\n.f1-list-none {\n list-style-type: none\n}\n\n.f1-appearance-none {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none\n}\n\n.f1-flex-col {\n flex-direction: column\n}\n\n.f1-content-center {\n align-content: center\n}\n\n.f1-items-start {\n align-items: flex-start\n}\n\n.f1-items-end {\n align-items: flex-end\n}\n\n.f1-items-center {\n align-items: center\n}\n\n.f1-justify-start {\n justify-content: flex-start\n}\n\n.f1-justify-end {\n justify-content: flex-end\n}\n\n.f1-justify-center {\n justify-content: center\n}\n\n.f1-justify-between {\n justify-content: space-between\n}\n\n.f1-justify-evenly {\n justify-content: space-evenly\n}\n\n.f1-gap-1 {\n gap: 0.25rem\n}\n\n.f1-gap-1\\\\.5 {\n gap: 6px\n}\n\n.f1-gap-10 {\n gap: 2.5rem\n}\n\n.f1-gap-2 {\n gap: 8px\n}\n\n.f1-gap-2\\\\.5 {\n gap: 0.625rem\n}\n\n.f1-gap-3 {\n gap: 0.75rem\n}\n\n.f1-gap-4 {\n gap: 1rem\n}\n\n.f1-gap-6 {\n gap: 1.5rem\n}\n\n.f1-gap-\\\\[12px\\\\] {\n gap: 12px\n}\n\n.f1-space-x-2 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(8px * var(--tw-space-x-reverse));\n margin-left: calc(8px * calc(1 - var(--tw-space-x-reverse)))\n}\n\n.f1-self-stretch {\n align-self: stretch\n}\n\n.f1-overflow-scroll {\n overflow: scroll\n}\n\n.f1-overflow-y-auto {\n overflow-y: auto\n}\n\n.f1-overflow-x-hidden {\n overflow-x: hidden\n}\n\n.\\\\!f1-rounded-\\\\[0px\\\\] {\n border-radius: 0px !important\n}\n\n.f1-rounded-\\\\[6px\\\\] {\n border-radius: 6px\n}\n\n.f1-rounded-full {\n border-radius: 9999px\n}\n\n.f1-rounded-lg {\n border-radius: 12px\n}\n\n.f1-rounded-md {\n border-radius: 8px\n}\n\n.f1-rounded-sm {\n border-radius: 4px\n}\n\n.\\\\!f1-rounded-l-sm {\n border-top-left-radius: 4px !important;\n border-bottom-left-radius: 4px !important\n}\n\n.\\\\!f1-rounded-r-sm {\n border-top-right-radius: 4px !important;\n border-bottom-right-radius: 4px !important\n}\n\n.f1-rounded-l-sm {\n border-top-left-radius: 4px;\n border-bottom-left-radius: 4px\n}\n\n.f1-border {\n border-width: 1px\n}\n\n.f1-border-2 {\n border-width: 2px\n}\n\n.f1-border-\\\\[1px\\\\] {\n border-width: 1px\n}\n\n.f1-border-\\\\[3px\\\\] {\n border-width: 3px\n}\n\n.\\\\!f1-border-r-\\\\[0px\\\\] {\n border-right-width: 0px !important\n}\n\n.f1-border-t {\n border-top-width: 1px\n}\n\n.f1-border-solid {\n border-style: solid\n}\n\n.f1-border-dashed {\n border-style: dashed\n}\n\n.f1-border-none {\n border-style: none\n}\n\n.\\\\!f1-border-primary-container {\n --tw-border-opacity: 1 !important;\n border-color: rgb(232 240 255 / var(--tw-border-opacity)) !important\n}\n\n.f1-border-primary-container {\n --tw-border-opacity: 1;\n border-color: rgb(232 240 255 / var(--tw-border-opacity))\n}\n\n.f1-border-tertiary-grey-200 {\n --tw-border-opacity: 1;\n border-color: rgb(229 231 235 / var(--tw-border-opacity))\n}\n\n.f1-border-tertiary-grey-300 {\n --tw-border-opacity: 1;\n border-color: rgb(209 213 219 / var(--tw-border-opacity))\n}\n\n.f1-border-tertiary-grey-50 {\n --tw-border-opacity: 1;\n border-color: rgb(249 250 251 / var(--tw-border-opacity))\n}\n\n.f1-border-tertiary-red-500 {\n --tw-border-opacity: 1;\n border-color: rgb(240 82 82 / var(--tw-border-opacity))\n}\n\n.f1-border-tertiary-red-700 {\n --tw-border-opacity: 1;\n border-color: rgb(200 30 30 / var(--tw-border-opacity))\n}\n\n.\\\\!f1-bg-\\\\[\\\\#e8f0ff\\\\] {\n --tw-bg-opacity: 1 !important;\n background-color: rgb(232 240 255 / var(--tw-bg-opacity)) !important\n}\n\n.\\\\!f1-bg-mono-white {\n --tw-bg-opacity: 1 !important;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity)) !important\n}\n\n.f1-bg-\\\\[\\\\#E7F0FF\\\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(231 240 255 / var(--tw-bg-opacity))\n}\n\n.f1-bg-\\\\[\\\\#FDF2F2\\\\] {\n --tw-bg-opacity: 1;\n background-color: rgb(253 242 242 / var(--tw-bg-opacity))\n}\n\n.f1-bg-mono-white {\n --tw-bg-opacity: 1;\n background-color: rgb(255 255 255 / var(--tw-bg-opacity))\n}\n\n.f1-bg-primary-50 {\n --tw-bg-opacity: 1;\n background-color: rgb(232 240 255 / var(--tw-bg-opacity))\n}\n\n.f1-bg-primary-600 {\n --tw-bg-opacity: 1;\n background-color: rgb(60 124 250 / var(--tw-bg-opacity))\n}\n\n.f1-bg-primary-800 {\n --tw-bg-opacity: 1;\n background-color: rgb(43 103 249 / var(--tw-bg-opacity))\n}\n\n.f1-bg-primary-container {\n --tw-bg-opacity: 1;\n background-color: rgb(232 240 255 / var(--tw-bg-opacity))\n}\n\n.f1-bg-tertiary-grey-100 {\n --tw-bg-opacity: 1;\n background-color: rgb(243 244 246 / var(--tw-bg-opacity))\n}\n\n.f1-bg-tertiary-grey-200 {\n --tw-bg-opacity: 1;\n background-color: rgb(229 231 235 / var(--tw-bg-opacity))\n}\n\n.f1-bg-tertiary-grey-50 {\n --tw-bg-opacity: 1;\n background-color: rgb(249 250 251 / var(--tw-bg-opacity))\n}\n\n.f1-fill-primary-600 {\n fill: #3c7cfa\n}\n\n.f1-fill-primary-800 {\n fill: #2b67f9\n}\n\n.f1-fill-tertiary-grey-400 {\n fill: #9ca3af\n}\n\n.f1-fill-tertiary-red-600 {\n fill: #e02424\n}\n\n.f1-p-0 {\n padding: 0px\n}\n\n.f1-p-1 {\n padding: 0.25rem\n}\n\n.f1-p-4 {\n padding: 1rem\n}\n\n.f1-p-6 {\n padding: 1.5rem\n}\n\n.f1-px-3xl {\n padding-left: 24px;\n padding-right: 24px\n}\n\n.f1-px-4 {\n padding-left: 1rem;\n padding-right: 1rem\n}\n\n.f1-px-5 {\n padding-left: 1.25rem;\n padding-right: 1.25rem\n}\n\n.f1-px-6 {\n padding-left: 1.5rem;\n padding-right: 1.5rem\n}\n\n.f1-px-\\\\[16px\\\\] {\n padding-left: 16px;\n padding-right: 16px\n}\n\n.f1-py-1 {\n padding-top: 0.25rem;\n padding-bottom: 0.25rem\n}\n\n.f1-py-2 {\n padding-top: 8px;\n padding-bottom: 8px\n}\n\n.f1-py-3 {\n padding-top: 0.75rem;\n padding-bottom: 0.75rem\n}\n\n.f1-py-4 {\n padding-top: 1rem;\n padding-bottom: 1rem\n}\n\n.f1-py-\\\\[14px\\\\] {\n padding-top: 14px;\n padding-bottom: 14px\n}\n\n.f1-py-\\\\[24px\\\\] {\n padding-top: 24px;\n padding-bottom: 24px\n}\n\n.f1-py-\\\\[49px\\\\] {\n padding-top: 49px;\n padding-bottom: 49px\n}\n\n.\\\\!f1-pt-\\\\[24px\\\\] {\n padding-top: 24px !important\n}\n\n.f1-pl-4 {\n padding-left: 1rem\n}\n\n.f1-pr-10 {\n padding-right: 2.5rem\n}\n\n.f1-pr-3 {\n padding-right: 0.75rem\n}\n\n.f1-pt-1 {\n padding-top: 0.25rem\n}\n\n.f1-text-left {\n text-align: left\n}\n\n.f1-text-center {\n text-align: center\n}\n\n.f1-text-2xl {\n font-size: 1.5rem\n}\n\n.f1-text-3xl {\n font-size: 1.875rem\n}\n\n.f1-text-\\\\[14px\\\\] {\n font-size: 14px\n}\n\n.f1-text-\\\\[16px\\\\] {\n font-size: 16px\n}\n\n.f1-text-\\\\[21px\\\\] {\n font-size: 21px\n}\n\n.f1-text-\\\\[24px\\\\] {\n font-size: 24px\n}\n\n.f1-text-\\\\[30px\\\\] {\n font-size: 30px\n}\n\n.f1-text-\\\\[32px\\\\] {\n font-size: 32px\n}\n\n.f1-text-lg {\n font-size: 1.125rem\n}\n\n.f1-text-md {\n font-size: 1rem\n}\n\n.f1-text-sm {\n font-size: 0.875rem\n}\n\n.f1-text-xs {\n font-size: 0.75rem\n}\n\n.f1-font-\\\\[400\\\\] {\n font-weight: 400\n}\n\n.f1-font-bold {\n font-weight: 700\n}\n\n.f1-font-medium {\n font-weight: 500\n}\n\n.f1-font-normal {\n font-weight: 400\n}\n\n.f1-font-semibold {\n font-weight: 600\n}\n\n.f1-leading-6 {\n line-height: 1.5rem\n}\n\n.f1-leading-9 {\n line-height: 2.25rem\n}\n\n.f1-leading-\\\\[21px\\\\] {\n line-height: 21px\n}\n\n.f1-leading-\\\\[32px\\\\] {\n line-height: 32px\n}\n\n.f1-leading-\\\\[42px\\\\] {\n line-height: 42px\n}\n\n.f1-leading-none {\n line-height: 1\n}\n\n.f1-leading-normal {\n line-height: 1.5\n}\n\n.f1-leading-relaxed {\n line-height: 1.625\n}\n\n.f1-leading-tight {\n line-height: 1.25\n}\n\n.\\\\!f1-text-tertiary-grey-500 {\n --tw-text-opacity: 1 !important;\n color: rgb(107 114 128 / var(--tw-text-opacity)) !important\n}\n\n.\\\\!f1-text-tertiary-red-600 {\n --tw-text-opacity: 1 !important;\n color: rgb(224 36 36 / var(--tw-text-opacity)) !important\n}\n\n.f1-text-\\\\[\\\\#1F2A37\\\\] {\n --tw-text-opacity: 1;\n color: rgb(31 42 55 / var(--tw-text-opacity))\n}\n\n.f1-text-\\\\[\\\\#306ef9\\\\] {\n --tw-text-opacity: 1;\n color: rgb(48 110 249 / var(--tw-text-opacity))\n}\n\n.f1-text-\\\\[\\\\#374151\\\\] {\n --tw-text-opacity: 1;\n color: rgb(55 65 81 / var(--tw-text-opacity))\n}\n\n.f1-text-mono-70 {\n --tw-text-opacity: 1;\n color: rgb(108 117 125 / var(--tw-text-opacity))\n}\n\n.f1-text-mono-white {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity))\n}\n\n.f1-text-primary-700 {\n --tw-text-opacity: 1;\n color: rgb(51 113 250 / var(--tw-text-opacity))\n}\n\n.f1-text-primary-800 {\n --tw-text-opacity: 1;\n color: rgb(43 103 249 / var(--tw-text-opacity))\n}\n\n.f1-text-tertiary-grey-500 {\n --tw-text-opacity: 1;\n color: rgb(107 114 128 / var(--tw-text-opacity))\n}\n\n.f1-text-tertiary-grey-700 {\n --tw-text-opacity: 1;\n color: rgb(55 65 81 / var(--tw-text-opacity))\n}\n\n.f1-text-tertiary-grey-800 {\n --tw-text-opacity: 1;\n color: rgb(31 42 55 / var(--tw-text-opacity))\n}\n\n.f1-text-tertiary-red-600 {\n --tw-text-opacity: 1;\n color: rgb(224 36 36 / var(--tw-text-opacity))\n}\n\n.f1-placeholder-tertiary-red-600::-moz-placeholder {\n --tw-placeholder-opacity: 1;\n color: rgb(224 36 36 / var(--tw-placeholder-opacity))\n}\n\n.f1-placeholder-tertiary-red-600::placeholder {\n --tw-placeholder-opacity: 1;\n color: rgb(224 36 36 / var(--tw-placeholder-opacity))\n}\n\n.f1-shadow-md {\n --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\n --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)\n}\n\n.f1-outline {\n outline-style: solid\n}\n\n.f1-outline-0 {\n outline-width: 0px\n}\n\n.f1-outline-primary-200 {\n outline-color: #a1c2fd\n}\n\n.f1-outline-tertiary-red-500 {\n outline-color: #f05252\n}\n\n.hover\\\\:f1-border-primary-container:hover {\n --tw-border-opacity: 1;\n border-color: rgb(232 240 255 / var(--tw-border-opacity))\n}\n\n.hover\\\\:f1-bg-primary-900:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(29 84 248 / var(--tw-bg-opacity))\n}\n\n.hover\\\\:f1-bg-primary-container:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(232 240 255 / var(--tw-bg-opacity))\n}\n\n.hover\\\\:f1-bg-tertiary-grey-100:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(243 244 246 / var(--tw-bg-opacity))\n}\n\n.hover\\\\:f1-text-tertiary-grey-600:hover {\n --tw-text-opacity: 1;\n color: rgb(75 85 99 / var(--tw-text-opacity))\n}\n\n.focus\\\\:f1-border-\\\\[3px\\\\]:focus {\n border-width: 3px\n}\n\n.focus\\\\:f1-bg-\\\\[\\\\#E7F0FF\\\\]:focus {\n --tw-bg-opacity: 1;\n background-color: rgb(231 240 255 / var(--tw-bg-opacity))\n}\n\n.focus\\\\:f1-bg-primary-50:focus {\n --tw-bg-opacity: 1;\n background-color: rgb(232 240 255 / var(--tw-bg-opacity))\n}\n\n.focus\\\\:f1-outline-\\\\[0\\\\.1px\\\\]:focus {\n outline-width: 0.1px\n}\n\n.focus\\\\:f1-outline-\\\\[\\\\#2B67F9\\\\]:focus {\n outline-color: #2B67F9\n}\n\n.focus\\\\:f1-outline-tertiary-red-500:focus {\n outline-color: #f05252\n}\n\n.focus-visible\\\\:f1-bg-primary-900:focus-visible {\n --tw-bg-opacity: 1;\n background-color: rgb(29 84 248 / var(--tw-bg-opacity))\n}\n\n.focus-visible\\\\:f1-outline-3:focus-visible {\n outline-width: 3px\n}\n\n.active\\\\:f1-bg-primary-900:active {\n --tw-bg-opacity: 1;\n background-color: rgb(29 84 248 / var(--tw-bg-opacity))\n}\n\n.active\\\\:f1-outline-3:active {\n outline-width: 3px\n}\n\n.disabled\\\\:f1-bg-tertiary-grey-200:disabled {\n --tw-bg-opacity: 1;\n background-color: rgb(229 231 235 / var(--tw-bg-opacity))\n}\n\n.disabled\\\\:f1-text-tertiary-grey-400:disabled {\n --tw-text-opacity: 1;\n color: rgb(156 163 175 / var(--tw-text-opacity))\n}\n\n.disabled\\\\:f1-outline-0:disabled {\n outline-width: 0px\n}\n\n@media (min-width: 640px) {\n .tablet\\\\:f1-static {\n position: static\n }\n\n .tablet\\\\:f1-mb-0 {\n margin-bottom: 0px\n }\n\n .tablet\\\\:f1-mb-\\\\[120px\\\\] {\n margin-bottom: 120px\n }\n\n .tablet\\\\:f1-h-auto {\n height: auto\n }\n\n .tablet\\\\:f1-w-\\\\[342px\\\\] {\n width: 342px\n }\n\n .tablet\\\\:f1-w-\\\\[345px\\\\] {\n width: 345px\n }\n\n .tablet\\\\:f1-w-auto {\n width: auto\n }\n\n .tablet\\\\:f1-max-w-\\\\[442px\\\\] {\n max-width: 442px\n }\n\n .tablet\\\\:f1-justify-normal {\n justify-content: normal\n }\n\n .tablet\\\\:f1-px-0 {\n padding-left: 0px;\n padding-right: 0px\n }\n\n .tablet\\\\:\\\\!f1-pt-\\\\[24px\\\\] {\n padding-top: 24px !important\n }\n\n .tablet\\\\:\\\\!f1-pt-\\\\[49px\\\\] {\n padding-top: 49px !important\n }\n\n .tablet\\\\:f1-pb-4xl {\n padding-bottom: 32px\n }\n\n .tablet\\\\:f1-pt-0 {\n padding-top: 0px\n }\n\n .tablet\\\\:f1-pt-\\\\[64px\\\\] {\n padding-top: 64px\n }\n\n .tablet\\\\:\\\\!f1-shadow-none {\n --tw-shadow: 0 0 #0000 !important;\n --tw-shadow-colored: 0 0 #0000 !important;\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow) !important\n }\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./styles/f1-style.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,wBAAwB;EACxB,wBAAwB;EACxB,mBAAmB;EACnB,mBAAmB;EACnB,cAAc;EACd,cAAc;EACd,cAAc;EACd,eAAe;EACf,eAAe;EACf,aAAa;EACb,aAAa;EACb,kBAAkB;EAClB,sCAAsC;EACtC,8BAA8B;EAC9B,6BAA6B;EAC7B,4BAA4B;EAC5B,eAAe;EACf,oBAAoB;EACpB,sBAAsB;EACtB,uBAAuB;EACvB,wBAAwB;EACxB,kBAAkB;EAClB,2BAA2B;EAC3B,4BAA4B;EAC5B,sCAAsC;EACtC,kCAAkC;EAClC,2BAA2B;EAC3B,sBAAsB;EACtB,8BAA8B;EAC9B,YAAY;EACZ,kBAAkB;EAClB,gBAAgB;EAChB,iBAAiB;EACjB,kBAAkB;EAClB,cAAc;EACd,gBAAgB;EAChB,aAAa;EACb,mBAAmB;EACnB,qBAAqB;EACrB,2BAA2B;EAC3B,yBAAyB;EACzB,0BAA0B;EAC1B,2BAA2B;EAC3B,uBAAuB;EACvB,wBAAwB;EACxB,yBAAyB;EACzB,sBAAsB;EACtB,oBAAoB;EACpB,sBAAsB;EACtB,qBAAqB;EACrB;AACF;;AAEA;EACE,wBAAwB;EACxB,wBAAwB;EACxB,mBAAmB;EACnB,mBAAmB;EACnB,cAAc;EACd,cAAc;EACd,cAAc;EACd,eAAe;EACf,eAAe;EACf,aAAa;EACb,aAAa;EACb,kBAAkB;EAClB,sCAAsC;EACtC,8BAA8B;EAC9B,6BAA6B;EAC7B,4BAA4B;EAC5B,eAAe;EACf,oBAAoB;EACpB,sBAAsB;EACtB,uBAAuB;EACvB,wBAAwB;EACxB,kBAAkB;EAClB,2BAA2B;EAC3B,4BAA4B;EAC5B,sCAAsC;EACtC,kCAAkC;EAClC,2BAA2B;EAC3B,sBAAsB;EACtB,8BAA8B;EAC9B,YAAY;EACZ,kBAAkB;EAClB,gBAAgB;EAChB,iBAAiB;EACjB,kBAAkB;EAClB,cAAc;EACd,gBAAgB;EAChB,aAAa;EACb,mBAAmB;EACnB,qBAAqB;EACrB,2BAA2B;EAC3B,yBAAyB;EACzB,0BAA0B;EAC1B,2BAA2B;EAC3B,uBAAuB;EACvB,wBAAwB;EACxB,yBAAyB;EACzB,sBAAsB;EACtB,oBAAoB;EACpB,sBAAsB;EACtB,qBAAqB;EACrB;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE,iBAAiB;EACjB;AACF;;AAEA;EACE,iBAAiB;EACjB;AACF;;AAEA;EACE,iBAAiB;EACjB;AACF;;AAEA;EACE,gBAAgB;EAChB;AACF;;AAEA;EACE,kBAAkB;EAClB;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;IACE;EACF;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE,wBAAwB;KACrB,qBAAqB;UAChB;AACV;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE,uBAAuB;EACvB,mDAAmD;EACnD;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE,sCAAsC;EACtC;AACF;;AAEA;EACE,uCAAuC;EACvC;AACF;;AAEA;EACE,2BAA2B;EAC3B;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE,iCAAiC;EACjC;AACF;;AAEA;EACE,sBAAsB;EACtB;AACF;;AAEA;EACE,sBAAsB;EACtB;AACF;;AAEA;EACE,sBAAsB;EACtB;AACF;;AAEA;EACE,sBAAsB;EACtB;AACF;;AAEA;EACE,sBAAsB;EACtB;AACF;;AAEA;EACE,sBAAsB;EACtB;AACF;;AAEA;EACE,6BAA6B;EAC7B;AACF;;AAEA;EACE,6BAA6B;EAC7B;AACF;;AAEA;EACE,kBAAkB;EAClB;AACF;;AAEA;EACE,kBAAkB;EAClB;AACF;;AAEA;EACE,kBAAkB;EAClB;AACF;;AAEA;EACE,kBAAkB;EAClB;AACF;;AAEA;EACE,kBAAkB;EAClB;AACF;;AAEA;EACE,kBAAkB;EAClB;AACF;;AAEA;EACE,kBAAkB;EAClB;AACF;;AAEA;EACE,kBAAkB;EAClB;AACF;;AAEA;EACE,kBAAkB;EAClB;AACF;;AAEA;EACE,kBAAkB;EAClB;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE,kBAAkB;EAClB;AACF;;AAEA;EACE,kBAAkB;EAClB;AACF;;AAEA;EACE,qBAAqB;EACrB;AACF;;AAEA;EACE,oBAAoB;EACpB;AACF;;AAEA;EACE,kBAAkB;EAClB;AACF;;AAEA;EACE,oBAAoB;EACpB;AACF;;AAEA;EACE,gBAAgB;EAChB;AACF;;AAEA;EACE,oBAAoB;EACpB;AACF;;AAEA;EACE,iBAAiB;EACjB;AACF;;AAEA;EACE,iBAAiB;EACjB;AACF;;AAEA;EACE,iBAAiB;EACjB;AACF;;AAEA;EACE,iBAAiB;EACjB;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE,+BAA+B;EAC/B;AACF;;AAEA;EACE,+BAA+B;EAC/B;AACF;;AAEA;EACE,oBAAoB;EACpB;AACF;;AAEA;EACE,oBAAoB;EACpB;AACF;;AAEA;EACE,oBAAoB;EACpB;AACF;;AAEA;EACE,oBAAoB;EACpB;AACF;;AAEA;EACE,oBAAoB;EACpB;AACF;;AAEA;EACE,oBAAoB;EACpB;AACF;;AAEA;EACE,oBAAoB;EACpB;AACF;;AAEA;EACE,oBAAoB;EACpB;AACF;;AAEA;EACE,oBAAoB;EACpB;AACF;;AAEA;EACE,oBAAoB;EACpB;AACF;;AAEA;EACE,oBAAoB;EACpB;AACF;;AAEA;EACE,2BAA2B;EAC3B;AACF;;AAEA;EACE,2BAA2B;EAC3B;AACF;;AAEA;EACE,6EAA6E;EAC7E,iGAAiG;EACjG;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE,sBAAsB;EACtB;AACF;;AAEA;EACE,kBAAkB;EAClB;AACF;;AAEA;EACE,kBAAkB;EAClB;AACF;;AAEA;EACE,kBAAkB;EAClB;AACF;;AAEA;EACE,oBAAoB;EACpB;AACF;;AAEA;EACE;AACF;;AAEA;EACE,kBAAkB;EAClB;AACF;;AAEA;EACE,kBAAkB;EAClB;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE;AACF;;AAEA;EACE,kBAAkB;EAClB;AACF;;AAEA;EACE;AACF;;AAEA;EACE,kBAAkB;EAClB;AACF;;AAEA;EACE;AACF;;AAEA;EACE,kBAAkB;EAClB;AACF;;AAEA;EACE,oBAAoB;EACpB;AACF;;AAEA;EACE;AACF;;AAEA;EACE;IACE;EACF;;EAEA;IACE;EACF;;EAEA;IACE;EACF;;EAEA;IACE;EACF;;EAEA;IACE;EACF;;EAEA;IACE;EACF;;EAEA;IACE;EACF;;EAEA;IACE;EACF;;EAEA;IACE;EACF;;EAEA;IACE,iBAAiB;IACjB;EACF;;EAEA;IACE;EACF;;EAEA;IACE;EACF;;EAEA;IACE;EACF;;EAEA;IACE;EACF;;EAEA;IACE;EACF;;EAEA;IACE,iCAAiC;IACjC,yCAAyC;IACzC;EACF;AACF\",\"sourcesContent\":[\"*, ::before, ::after {\\n --tw-border-spacing-x: 0;\\n --tw-border-spacing-y: 0;\\n --tw-translate-x: 0;\\n --tw-translate-y: 0;\\n --tw-rotate: 0;\\n --tw-skew-x: 0;\\n --tw-skew-y: 0;\\n --tw-scale-x: 1;\\n --tw-scale-y: 1;\\n --tw-pan-x: ;\\n --tw-pan-y: ;\\n --tw-pinch-zoom: ;\\n --tw-scroll-snap-strictness: proximity;\\n --tw-gradient-from-position: ;\\n --tw-gradient-via-position: ;\\n --tw-gradient-to-position: ;\\n --tw-ordinal: ;\\n --tw-slashed-zero: ;\\n --tw-numeric-figure: ;\\n --tw-numeric-spacing: ;\\n --tw-numeric-fraction: ;\\n --tw-ring-inset: ;\\n --tw-ring-offset-width: 0px;\\n --tw-ring-offset-color: #fff;\\n --tw-ring-color: rgb(59 130 246 / 0.5);\\n --tw-ring-offset-shadow: 0 0 #0000;\\n --tw-ring-shadow: 0 0 #0000;\\n --tw-shadow: 0 0 #0000;\\n --tw-shadow-colored: 0 0 #0000;\\n --tw-blur: ;\\n --tw-brightness: ;\\n --tw-contrast: ;\\n --tw-grayscale: ;\\n --tw-hue-rotate: ;\\n --tw-invert: ;\\n --tw-saturate: ;\\n --tw-sepia: ;\\n --tw-drop-shadow: ;\\n --tw-backdrop-blur: ;\\n --tw-backdrop-brightness: ;\\n --tw-backdrop-contrast: ;\\n --tw-backdrop-grayscale: ;\\n --tw-backdrop-hue-rotate: ;\\n --tw-backdrop-invert: ;\\n --tw-backdrop-opacity: ;\\n --tw-backdrop-saturate: ;\\n --tw-backdrop-sepia: ;\\n --tw-contain-size: ;\\n --tw-contain-layout: ;\\n --tw-contain-paint: ;\\n --tw-contain-style: \\n}\\n\\n::backdrop {\\n --tw-border-spacing-x: 0;\\n --tw-border-spacing-y: 0;\\n --tw-translate-x: 0;\\n --tw-translate-y: 0;\\n --tw-rotate: 0;\\n --tw-skew-x: 0;\\n --tw-skew-y: 0;\\n --tw-scale-x: 1;\\n --tw-scale-y: 1;\\n --tw-pan-x: ;\\n --tw-pan-y: ;\\n --tw-pinch-zoom: ;\\n --tw-scroll-snap-strictness: proximity;\\n --tw-gradient-from-position: ;\\n --tw-gradient-via-position: ;\\n --tw-gradient-to-position: ;\\n --tw-ordinal: ;\\n --tw-slashed-zero: ;\\n --tw-numeric-figure: ;\\n --tw-numeric-spacing: ;\\n --tw-numeric-fraction: ;\\n --tw-ring-inset: ;\\n --tw-ring-offset-width: 0px;\\n --tw-ring-offset-color: #fff;\\n --tw-ring-color: rgb(59 130 246 / 0.5);\\n --tw-ring-offset-shadow: 0 0 #0000;\\n --tw-ring-shadow: 0 0 #0000;\\n --tw-shadow: 0 0 #0000;\\n --tw-shadow-colored: 0 0 #0000;\\n --tw-blur: ;\\n --tw-brightness: ;\\n --tw-contrast: ;\\n --tw-grayscale: ;\\n --tw-hue-rotate: ;\\n --tw-invert: ;\\n --tw-saturate: ;\\n --tw-sepia: ;\\n --tw-drop-shadow: ;\\n --tw-backdrop-blur: ;\\n --tw-backdrop-brightness: ;\\n --tw-backdrop-contrast: ;\\n --tw-backdrop-grayscale: ;\\n --tw-backdrop-hue-rotate: ;\\n --tw-backdrop-invert: ;\\n --tw-backdrop-opacity: ;\\n --tw-backdrop-saturate: ;\\n --tw-backdrop-sepia: ;\\n --tw-contain-size: ;\\n --tw-contain-layout: ;\\n --tw-contain-paint: ;\\n --tw-contain-style: \\n}\\n\\n.f1-pointer-events-none {\\n pointer-events: none\\n}\\n\\n.f1-absolute {\\n position: absolute\\n}\\n\\n.f1-relative {\\n position: relative\\n}\\n\\n.f1-sticky {\\n position: sticky\\n}\\n\\n.f1-bottom-0 {\\n bottom: 0px\\n}\\n\\n.f1-bottom-\\\\[-20px\\\\] {\\n bottom: -20px\\n}\\n\\n.f1-bottom-\\\\[13px\\\\] {\\n bottom: 13px\\n}\\n\\n.f1-left-0 {\\n left: 0px\\n}\\n\\n.f1-right-0 {\\n right: 0px\\n}\\n\\n.f1-right-2 {\\n right: 8px\\n}\\n\\n.f1-right-3 {\\n right: 0.75rem\\n}\\n\\n.f1--top-1 {\\n top: -0.25rem\\n}\\n\\n.f1-top-0 {\\n top: 0px\\n}\\n\\n.f1-top-\\\\[10px\\\\] {\\n top: 10px\\n}\\n\\n.f1-top-\\\\[25\\\\.5\\\\%\\\\] {\\n top: 25.5%\\n}\\n\\n.f1-z-20 {\\n z-index: 20\\n}\\n\\n.f1-z-50 {\\n z-index: 50\\n}\\n\\n.f1-m-0 {\\n margin: 0px\\n}\\n\\n.f1-mx-8 {\\n margin-left: 2rem;\\n margin-right: 2rem\\n}\\n\\n.f1-mx-\\\\[21px\\\\] {\\n margin-left: 21px;\\n margin-right: 21px\\n}\\n\\n.f1-mx-auto {\\n margin-left: auto;\\n margin-right: auto\\n}\\n\\n.f1-my-4 {\\n margin-top: 1rem;\\n margin-bottom: 1rem\\n}\\n\\n.f1-my-6 {\\n margin-top: 1.5rem;\\n margin-bottom: 1.5rem\\n}\\n\\n.\\\\!f1-mr-0 {\\n margin-right: 0px !important\\n}\\n\\n.f1--mt-2 {\\n margin-top: -8px\\n}\\n\\n.f1--mt-2\\\\.5 {\\n margin-top: -0.625rem\\n}\\n\\n.f1-mb-0 {\\n margin-bottom: 0px\\n}\\n\\n.f1-mb-1 {\\n margin-bottom: 0.25rem\\n}\\n\\n.f1-mb-2 {\\n margin-bottom: 8px\\n}\\n\\n.f1-mb-3 {\\n margin-bottom: 0.75rem\\n}\\n\\n.f1-mb-4 {\\n margin-bottom: 1rem\\n}\\n\\n.f1-mb-6 {\\n margin-bottom: 1.5rem\\n}\\n\\n.f1-mb-\\\\[8px\\\\] {\\n margin-bottom: 8px\\n}\\n\\n.f1-ml-3 {\\n margin-left: 0.75rem\\n}\\n\\n.f1-mr-1 {\\n margin-right: 0.25rem\\n}\\n\\n.f1-mt-0 {\\n margin-top: 0px\\n}\\n\\n.f1-mt-1 {\\n margin-top: 0.25rem\\n}\\n\\n.f1-mt-2 {\\n margin-top: 8px\\n}\\n\\n.f1-mt-4 {\\n margin-top: 1rem\\n}\\n\\n.f1-mt-5 {\\n margin-top: 1.25rem\\n}\\n\\n.f1-mt-6 {\\n margin-top: 1.5rem\\n}\\n\\n.f1-mt-8 {\\n margin-top: 2rem\\n}\\n\\n.f1-mt-\\\\[-4px\\\\] {\\n margin-top: -4px\\n}\\n\\n.f1-mt-\\\\[32px\\\\] {\\n margin-top: 32px\\n}\\n\\n.f1-box-border {\\n box-sizing: border-box\\n}\\n\\n.f1-inline {\\n display: inline\\n}\\n\\n.f1-flex {\\n display: flex\\n}\\n\\n.f1-inline-flex {\\n display: inline-flex\\n}\\n\\n.\\\\!f1-h-5 {\\n height: 1.25rem !important\\n}\\n\\n.\\\\!f1-h-8 {\\n height: 2rem !important\\n}\\n\\n.f1-h-1 {\\n height: 0.25rem\\n}\\n\\n.f1-h-1\\\\.5 {\\n height: 6px\\n}\\n\\n.f1-h-10 {\\n height: 2.5rem\\n}\\n\\n.f1-h-12 {\\n height: 3rem\\n}\\n\\n.f1-h-24 {\\n height: 6rem\\n}\\n\\n.f1-h-4 {\\n height: 1rem\\n}\\n\\n.f1-h-7 {\\n height: 1.75rem\\n}\\n\\n.f1-h-96 {\\n height: 24rem\\n}\\n\\n.f1-h-\\\\[1px\\\\] {\\n height: 1px\\n}\\n\\n.f1-h-\\\\[48px\\\\] {\\n height: 48px\\n}\\n\\n.f1-h-\\\\[73px\\\\] {\\n height: 73px\\n}\\n\\n.f1-h-\\\\[calc\\\\(100\\\\%-92px\\\\)\\\\] {\\n height: calc(100% - 92px)\\n}\\n\\n.f1-h-auto {\\n height: auto\\n}\\n\\n.f1-h-full {\\n height: 100%\\n}\\n\\n.f1-max-h-64 {\\n max-height: 16rem\\n}\\n\\n.f1-max-h-\\\\[150px\\\\] {\\n max-height: 150px\\n}\\n\\n.f1-max-h-\\\\[193px\\\\] {\\n max-height: 193px\\n}\\n\\n.f1-min-h-\\\\[52px\\\\] {\\n min-height: 52px\\n}\\n\\n.\\\\!f1-w-5 {\\n width: 1.25rem !important\\n}\\n\\n.\\\\!f1-w-8 {\\n width: 2rem !important\\n}\\n\\n.\\\\!f1-w-\\\\[138px\\\\] {\\n width: 138px !important\\n}\\n\\n.f1-w-10 {\\n width: 2.5rem\\n}\\n\\n.f1-w-24 {\\n width: 6rem\\n}\\n\\n.f1-w-4 {\\n width: 1rem\\n}\\n\\n.f1-w-\\\\[206\\\\.5\\\\%\\\\] {\\n width: 206.5%\\n}\\n\\n.f1-w-\\\\[210\\\\.5\\\\%\\\\] {\\n width: 210.5%\\n}\\n\\n.f1-w-\\\\[300px\\\\] {\\n width: 300px\\n}\\n\\n.f1-w-\\\\[342px\\\\] {\\n width: 342px\\n}\\n\\n.f1-w-\\\\[48\\\\%\\\\] {\\n width: 48%\\n}\\n\\n.f1-w-\\\\[50\\\\%\\\\] {\\n width: 50%\\n}\\n\\n.f1-w-\\\\[calc\\\\(100\\\\%-2rem-4px\\\\)\\\\] {\\n width: calc(100% - 2rem - 4px)\\n}\\n\\n.f1-w-\\\\[calc\\\\(100\\\\%-48px\\\\)\\\\] {\\n width: calc(100% - 48px)\\n}\\n\\n.f1-w-auto {\\n width: auto\\n}\\n\\n.f1-w-full {\\n width: 100%\\n}\\n\\n.f1-min-w-\\\\[210px\\\\] {\\n min-width: 210px\\n}\\n\\n.f1-max-w-\\\\[318px\\\\] {\\n max-width: 318px\\n}\\n\\n.f1-flex-initial {\\n flex: 0 1 auto\\n}\\n\\n.f1-shrink {\\n flex-shrink: 1\\n}\\n\\n.f1-flex-grow {\\n flex-grow: 1\\n}\\n\\n.f1-grow {\\n flex-grow: 1\\n}\\n\\n.f1-basis-0 {\\n flex-basis: 0px\\n}\\n\\n@keyframes f1-spin {\\n to {\\n transform: rotate(360deg)\\n }\\n}\\n\\n.f1-animate-spin {\\n animation: f1-spin 1s linear infinite\\n}\\n\\n.f1-cursor-not-allowed {\\n cursor: not-allowed\\n}\\n\\n.f1-cursor-pointer {\\n cursor: pointer\\n}\\n\\n.f1-cursor-text {\\n cursor: text\\n}\\n\\n.f1-resize-none {\\n resize: none\\n}\\n\\n.f1-list-none {\\n list-style-type: none\\n}\\n\\n.f1-appearance-none {\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n appearance: none\\n}\\n\\n.f1-flex-col {\\n flex-direction: column\\n}\\n\\n.f1-content-center {\\n align-content: center\\n}\\n\\n.f1-items-start {\\n align-items: flex-start\\n}\\n\\n.f1-items-end {\\n align-items: flex-end\\n}\\n\\n.f1-items-center {\\n align-items: center\\n}\\n\\n.f1-justify-start {\\n justify-content: flex-start\\n}\\n\\n.f1-justify-end {\\n justify-content: flex-end\\n}\\n\\n.f1-justify-center {\\n justify-content: center\\n}\\n\\n.f1-justify-between {\\n justify-content: space-between\\n}\\n\\n.f1-justify-evenly {\\n justify-content: space-evenly\\n}\\n\\n.f1-gap-1 {\\n gap: 0.25rem\\n}\\n\\n.f1-gap-1\\\\.5 {\\n gap: 6px\\n}\\n\\n.f1-gap-10 {\\n gap: 2.5rem\\n}\\n\\n.f1-gap-2 {\\n gap: 8px\\n}\\n\\n.f1-gap-2\\\\.5 {\\n gap: 0.625rem\\n}\\n\\n.f1-gap-3 {\\n gap: 0.75rem\\n}\\n\\n.f1-gap-4 {\\n gap: 1rem\\n}\\n\\n.f1-gap-6 {\\n gap: 1.5rem\\n}\\n\\n.f1-gap-\\\\[12px\\\\] {\\n gap: 12px\\n}\\n\\n.f1-space-x-2 > :not([hidden]) ~ :not([hidden]) {\\n --tw-space-x-reverse: 0;\\n margin-right: calc(8px * var(--tw-space-x-reverse));\\n margin-left: calc(8px * calc(1 - var(--tw-space-x-reverse)))\\n}\\n\\n.f1-self-stretch {\\n align-self: stretch\\n}\\n\\n.f1-overflow-scroll {\\n overflow: scroll\\n}\\n\\n.f1-overflow-y-auto {\\n overflow-y: auto\\n}\\n\\n.f1-overflow-x-hidden {\\n overflow-x: hidden\\n}\\n\\n.\\\\!f1-rounded-\\\\[0px\\\\] {\\n border-radius: 0px !important\\n}\\n\\n.f1-rounded-\\\\[6px\\\\] {\\n border-radius: 6px\\n}\\n\\n.f1-rounded-full {\\n border-radius: 9999px\\n}\\n\\n.f1-rounded-lg {\\n border-radius: 12px\\n}\\n\\n.f1-rounded-md {\\n border-radius: 8px\\n}\\n\\n.f1-rounded-sm {\\n border-radius: 4px\\n}\\n\\n.\\\\!f1-rounded-l-sm {\\n border-top-left-radius: 4px !important;\\n border-bottom-left-radius: 4px !important\\n}\\n\\n.\\\\!f1-rounded-r-sm {\\n border-top-right-radius: 4px !important;\\n border-bottom-right-radius: 4px !important\\n}\\n\\n.f1-rounded-l-sm {\\n border-top-left-radius: 4px;\\n border-bottom-left-radius: 4px\\n}\\n\\n.f1-border {\\n border-width: 1px\\n}\\n\\n.f1-border-2 {\\n border-width: 2px\\n}\\n\\n.f1-border-\\\\[1px\\\\] {\\n border-width: 1px\\n}\\n\\n.f1-border-\\\\[3px\\\\] {\\n border-width: 3px\\n}\\n\\n.\\\\!f1-border-r-\\\\[0px\\\\] {\\n border-right-width: 0px !important\\n}\\n\\n.f1-border-t {\\n border-top-width: 1px\\n}\\n\\n.f1-border-solid {\\n border-style: solid\\n}\\n\\n.f1-border-dashed {\\n border-style: dashed\\n}\\n\\n.f1-border-none {\\n border-style: none\\n}\\n\\n.\\\\!f1-border-primary-container {\\n --tw-border-opacity: 1 !important;\\n border-color: rgb(232 240 255 / var(--tw-border-opacity)) !important\\n}\\n\\n.f1-border-primary-container {\\n --tw-border-opacity: 1;\\n border-color: rgb(232 240 255 / var(--tw-border-opacity))\\n}\\n\\n.f1-border-tertiary-grey-200 {\\n --tw-border-opacity: 1;\\n border-color: rgb(229 231 235 / var(--tw-border-opacity))\\n}\\n\\n.f1-border-tertiary-grey-300 {\\n --tw-border-opacity: 1;\\n border-color: rgb(209 213 219 / var(--tw-border-opacity))\\n}\\n\\n.f1-border-tertiary-grey-50 {\\n --tw-border-opacity: 1;\\n border-color: rgb(249 250 251 / var(--tw-border-opacity))\\n}\\n\\n.f1-border-tertiary-red-500 {\\n --tw-border-opacity: 1;\\n border-color: rgb(240 82 82 / var(--tw-border-opacity))\\n}\\n\\n.f1-border-tertiary-red-700 {\\n --tw-border-opacity: 1;\\n border-color: rgb(200 30 30 / var(--tw-border-opacity))\\n}\\n\\n.\\\\!f1-bg-\\\\[\\\\#e8f0ff\\\\] {\\n --tw-bg-opacity: 1 !important;\\n background-color: rgb(232 240 255 / var(--tw-bg-opacity)) !important\\n}\\n\\n.\\\\!f1-bg-mono-white {\\n --tw-bg-opacity: 1 !important;\\n background-color: rgb(255 255 255 / var(--tw-bg-opacity)) !important\\n}\\n\\n.f1-bg-\\\\[\\\\#E7F0FF\\\\] {\\n --tw-bg-opacity: 1;\\n background-color: rgb(231 240 255 / var(--tw-bg-opacity))\\n}\\n\\n.f1-bg-\\\\[\\\\#FDF2F2\\\\] {\\n --tw-bg-opacity: 1;\\n background-color: rgb(253 242 242 / var(--tw-bg-opacity))\\n}\\n\\n.f1-bg-mono-white {\\n --tw-bg-opacity: 1;\\n background-color: rgb(255 255 255 / var(--tw-bg-opacity))\\n}\\n\\n.f1-bg-primary-50 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(232 240 255 / var(--tw-bg-opacity))\\n}\\n\\n.f1-bg-primary-600 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(60 124 250 / var(--tw-bg-opacity))\\n}\\n\\n.f1-bg-primary-800 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(43 103 249 / var(--tw-bg-opacity))\\n}\\n\\n.f1-bg-primary-container {\\n --tw-bg-opacity: 1;\\n background-color: rgb(232 240 255 / var(--tw-bg-opacity))\\n}\\n\\n.f1-bg-tertiary-grey-100 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(243 244 246 / var(--tw-bg-opacity))\\n}\\n\\n.f1-bg-tertiary-grey-200 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(229 231 235 / var(--tw-bg-opacity))\\n}\\n\\n.f1-bg-tertiary-grey-50 {\\n --tw-bg-opacity: 1;\\n background-color: rgb(249 250 251 / var(--tw-bg-opacity))\\n}\\n\\n.f1-fill-primary-600 {\\n fill: #3c7cfa\\n}\\n\\n.f1-fill-primary-800 {\\n fill: #2b67f9\\n}\\n\\n.f1-fill-tertiary-grey-400 {\\n fill: #9ca3af\\n}\\n\\n.f1-fill-tertiary-red-600 {\\n fill: #e02424\\n}\\n\\n.f1-p-0 {\\n padding: 0px\\n}\\n\\n.f1-p-1 {\\n padding: 0.25rem\\n}\\n\\n.f1-p-4 {\\n padding: 1rem\\n}\\n\\n.f1-p-6 {\\n padding: 1.5rem\\n}\\n\\n.f1-px-3xl {\\n padding-left: 24px;\\n padding-right: 24px\\n}\\n\\n.f1-px-4 {\\n padding-left: 1rem;\\n padding-right: 1rem\\n}\\n\\n.f1-px-5 {\\n padding-left: 1.25rem;\\n padding-right: 1.25rem\\n}\\n\\n.f1-px-6 {\\n padding-left: 1.5rem;\\n padding-right: 1.5rem\\n}\\n\\n.f1-px-\\\\[16px\\\\] {\\n padding-left: 16px;\\n padding-right: 16px\\n}\\n\\n.f1-py-1 {\\n padding-top: 0.25rem;\\n padding-bottom: 0.25rem\\n}\\n\\n.f1-py-2 {\\n padding-top: 8px;\\n padding-bottom: 8px\\n}\\n\\n.f1-py-3 {\\n padding-top: 0.75rem;\\n padding-bottom: 0.75rem\\n}\\n\\n.f1-py-4 {\\n padding-top: 1rem;\\n padding-bottom: 1rem\\n}\\n\\n.f1-py-\\\\[14px\\\\] {\\n padding-top: 14px;\\n padding-bottom: 14px\\n}\\n\\n.f1-py-\\\\[24px\\\\] {\\n padding-top: 24px;\\n padding-bottom: 24px\\n}\\n\\n.f1-py-\\\\[49px\\\\] {\\n padding-top: 49px;\\n padding-bottom: 49px\\n}\\n\\n.\\\\!f1-pt-\\\\[24px\\\\] {\\n padding-top: 24px !important\\n}\\n\\n.f1-pl-4 {\\n padding-left: 1rem\\n}\\n\\n.f1-pr-10 {\\n padding-right: 2.5rem\\n}\\n\\n.f1-pr-3 {\\n padding-right: 0.75rem\\n}\\n\\n.f1-pt-1 {\\n padding-top: 0.25rem\\n}\\n\\n.f1-text-left {\\n text-align: left\\n}\\n\\n.f1-text-center {\\n text-align: center\\n}\\n\\n.f1-text-2xl {\\n font-size: 1.5rem\\n}\\n\\n.f1-text-3xl {\\n font-size: 1.875rem\\n}\\n\\n.f1-text-\\\\[14px\\\\] {\\n font-size: 14px\\n}\\n\\n.f1-text-\\\\[16px\\\\] {\\n font-size: 16px\\n}\\n\\n.f1-text-\\\\[21px\\\\] {\\n font-size: 21px\\n}\\n\\n.f1-text-\\\\[24px\\\\] {\\n font-size: 24px\\n}\\n\\n.f1-text-\\\\[30px\\\\] {\\n font-size: 30px\\n}\\n\\n.f1-text-\\\\[32px\\\\] {\\n font-size: 32px\\n}\\n\\n.f1-text-lg {\\n font-size: 1.125rem\\n}\\n\\n.f1-text-md {\\n font-size: 1rem\\n}\\n\\n.f1-text-sm {\\n font-size: 0.875rem\\n}\\n\\n.f1-text-xs {\\n font-size: 0.75rem\\n}\\n\\n.f1-font-\\\\[400\\\\] {\\n font-weight: 400\\n}\\n\\n.f1-font-bold {\\n font-weight: 700\\n}\\n\\n.f1-font-medium {\\n font-weight: 500\\n}\\n\\n.f1-font-normal {\\n font-weight: 400\\n}\\n\\n.f1-font-semibold {\\n font-weight: 600\\n}\\n\\n.f1-leading-6 {\\n line-height: 1.5rem\\n}\\n\\n.f1-leading-9 {\\n line-height: 2.25rem\\n}\\n\\n.f1-leading-\\\\[21px\\\\] {\\n line-height: 21px\\n}\\n\\n.f1-leading-\\\\[32px\\\\] {\\n line-height: 32px\\n}\\n\\n.f1-leading-\\\\[42px\\\\] {\\n line-height: 42px\\n}\\n\\n.f1-leading-none {\\n line-height: 1\\n}\\n\\n.f1-leading-normal {\\n line-height: 1.5\\n}\\n\\n.f1-leading-relaxed {\\n line-height: 1.625\\n}\\n\\n.f1-leading-tight {\\n line-height: 1.25\\n}\\n\\n.\\\\!f1-text-tertiary-grey-500 {\\n --tw-text-opacity: 1 !important;\\n color: rgb(107 114 128 / var(--tw-text-opacity)) !important\\n}\\n\\n.\\\\!f1-text-tertiary-red-600 {\\n --tw-text-opacity: 1 !important;\\n color: rgb(224 36 36 / var(--tw-text-opacity)) !important\\n}\\n\\n.f1-text-\\\\[\\\\#1F2A37\\\\] {\\n --tw-text-opacity: 1;\\n color: rgb(31 42 55 / var(--tw-text-opacity))\\n}\\n\\n.f1-text-\\\\[\\\\#306ef9\\\\] {\\n --tw-text-opacity: 1;\\n color: rgb(48 110 249 / var(--tw-text-opacity))\\n}\\n\\n.f1-text-\\\\[\\\\#374151\\\\] {\\n --tw-text-opacity: 1;\\n color: rgb(55 65 81 / var(--tw-text-opacity))\\n}\\n\\n.f1-text-mono-70 {\\n --tw-text-opacity: 1;\\n color: rgb(108 117 125 / var(--tw-text-opacity))\\n}\\n\\n.f1-text-mono-white {\\n --tw-text-opacity: 1;\\n color: rgb(255 255 255 / var(--tw-text-opacity))\\n}\\n\\n.f1-text-primary-700 {\\n --tw-text-opacity: 1;\\n color: rgb(51 113 250 / var(--tw-text-opacity))\\n}\\n\\n.f1-text-primary-800 {\\n --tw-text-opacity: 1;\\n color: rgb(43 103 249 / var(--tw-text-opacity))\\n}\\n\\n.f1-text-tertiary-grey-500 {\\n --tw-text-opacity: 1;\\n color: rgb(107 114 128 / var(--tw-text-opacity))\\n}\\n\\n.f1-text-tertiary-grey-700 {\\n --tw-text-opacity: 1;\\n color: rgb(55 65 81 / var(--tw-text-opacity))\\n}\\n\\n.f1-text-tertiary-grey-800 {\\n --tw-text-opacity: 1;\\n color: rgb(31 42 55 / var(--tw-text-opacity))\\n}\\n\\n.f1-text-tertiary-red-600 {\\n --tw-text-opacity: 1;\\n color: rgb(224 36 36 / var(--tw-text-opacity))\\n}\\n\\n.f1-placeholder-tertiary-red-600::-moz-placeholder {\\n --tw-placeholder-opacity: 1;\\n color: rgb(224 36 36 / var(--tw-placeholder-opacity))\\n}\\n\\n.f1-placeholder-tertiary-red-600::placeholder {\\n --tw-placeholder-opacity: 1;\\n color: rgb(224 36 36 / var(--tw-placeholder-opacity))\\n}\\n\\n.f1-shadow-md {\\n --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\\n --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);\\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)\\n}\\n\\n.f1-outline {\\n outline-style: solid\\n}\\n\\n.f1-outline-0 {\\n outline-width: 0px\\n}\\n\\n.f1-outline-primary-200 {\\n outline-color: #a1c2fd\\n}\\n\\n.f1-outline-tertiary-red-500 {\\n outline-color: #f05252\\n}\\n\\n.hover\\\\:f1-border-primary-container:hover {\\n --tw-border-opacity: 1;\\n border-color: rgb(232 240 255 / var(--tw-border-opacity))\\n}\\n\\n.hover\\\\:f1-bg-primary-900:hover {\\n --tw-bg-opacity: 1;\\n background-color: rgb(29 84 248 / var(--tw-bg-opacity))\\n}\\n\\n.hover\\\\:f1-bg-primary-container:hover {\\n --tw-bg-opacity: 1;\\n background-color: rgb(232 240 255 / var(--tw-bg-opacity))\\n}\\n\\n.hover\\\\:f1-bg-tertiary-grey-100:hover {\\n --tw-bg-opacity: 1;\\n background-color: rgb(243 244 246 / var(--tw-bg-opacity))\\n}\\n\\n.hover\\\\:f1-text-tertiary-grey-600:hover {\\n --tw-text-opacity: 1;\\n color: rgb(75 85 99 / var(--tw-text-opacity))\\n}\\n\\n.focus\\\\:f1-border-\\\\[3px\\\\]:focus {\\n border-width: 3px\\n}\\n\\n.focus\\\\:f1-bg-\\\\[\\\\#E7F0FF\\\\]:focus {\\n --tw-bg-opacity: 1;\\n background-color: rgb(231 240 255 / var(--tw-bg-opacity))\\n}\\n\\n.focus\\\\:f1-bg-primary-50:focus {\\n --tw-bg-opacity: 1;\\n background-color: rgb(232 240 255 / var(--tw-bg-opacity))\\n}\\n\\n.focus\\\\:f1-outline-\\\\[0\\\\.1px\\\\]:focus {\\n outline-width: 0.1px\\n}\\n\\n.focus\\\\:f1-outline-\\\\[\\\\#2B67F9\\\\]:focus {\\n outline-color: #2B67F9\\n}\\n\\n.focus\\\\:f1-outline-tertiary-red-500:focus {\\n outline-color: #f05252\\n}\\n\\n.focus-visible\\\\:f1-bg-primary-900:focus-visible {\\n --tw-bg-opacity: 1;\\n background-color: rgb(29 84 248 / var(--tw-bg-opacity))\\n}\\n\\n.focus-visible\\\\:f1-outline-3:focus-visible {\\n outline-width: 3px\\n}\\n\\n.active\\\\:f1-bg-primary-900:active {\\n --tw-bg-opacity: 1;\\n background-color: rgb(29 84 248 / var(--tw-bg-opacity))\\n}\\n\\n.active\\\\:f1-outline-3:active {\\n outline-width: 3px\\n}\\n\\n.disabled\\\\:f1-bg-tertiary-grey-200:disabled {\\n --tw-bg-opacity: 1;\\n background-color: rgb(229 231 235 / var(--tw-bg-opacity))\\n}\\n\\n.disabled\\\\:f1-text-tertiary-grey-400:disabled {\\n --tw-text-opacity: 1;\\n color: rgb(156 163 175 / var(--tw-text-opacity))\\n}\\n\\n.disabled\\\\:f1-outline-0:disabled {\\n outline-width: 0px\\n}\\n\\n@media (min-width: 640px) {\\n .tablet\\\\:f1-static {\\n position: static\\n }\\n\\n .tablet\\\\:f1-mb-0 {\\n margin-bottom: 0px\\n }\\n\\n .tablet\\\\:f1-mb-\\\\[120px\\\\] {\\n margin-bottom: 120px\\n }\\n\\n .tablet\\\\:f1-h-auto {\\n height: auto\\n }\\n\\n .tablet\\\\:f1-w-\\\\[342px\\\\] {\\n width: 342px\\n }\\n\\n .tablet\\\\:f1-w-\\\\[345px\\\\] {\\n width: 345px\\n }\\n\\n .tablet\\\\:f1-w-auto {\\n width: auto\\n }\\n\\n .tablet\\\\:f1-max-w-\\\\[442px\\\\] {\\n max-width: 442px\\n }\\n\\n .tablet\\\\:f1-justify-normal {\\n justify-content: normal\\n }\\n\\n .tablet\\\\:f1-px-0 {\\n padding-left: 0px;\\n padding-right: 0px\\n }\\n\\n .tablet\\\\:\\\\!f1-pt-\\\\[24px\\\\] {\\n padding-top: 24px !important\\n }\\n\\n .tablet\\\\:\\\\!f1-pt-\\\\[49px\\\\] {\\n padding-top: 49px !important\\n }\\n\\n .tablet\\\\:f1-pb-4xl {\\n padding-bottom: 32px\\n }\\n\\n .tablet\\\\:f1-pt-0 {\\n padding-top: 0px\\n }\\n\\n .tablet\\\\:f1-pt-\\\\[64px\\\\] {\\n padding-top: 64px\\n }\\n\\n .tablet\\\\:\\\\!f1-shadow-none {\\n --tw-shadow: 0 0 #0000 !important;\\n --tw-shadow-colored: 0 0 #0000 !important;\\n box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow) !important\\n }\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"./ProximaNova/ProximaNovaBold/bold-font.woff2\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_1___ = new URL(\"./ProximaNova/ProximaNovaBold/bold-font.woff\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_2___ = new URL(\"./ProximaNova/ProximaNovaSemibold/semibold-font.woff2\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_3___ = new URL(\"./ProximaNova/ProximaNovaSemibold/semibold-font.woff\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_4___ = new URL(\"./ProximaNova/ProximaNovaMedium/medium-font.woff2\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_5___ = new URL(\"./ProximaNova/ProximaNovaMedium/medium-font.woff\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_6___ = new URL(\"./ProximaNova/ProximaNovaRegular/regular-font.woff2\", import.meta.url);\nvar ___CSS_LOADER_URL_IMPORT_7___ = new URL(\"./ProximaNova/ProximaNovaRegular/regular-font.woff\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\nvar ___CSS_LOADER_URL_REPLACEMENT_3___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_3___);\nvar ___CSS_LOADER_URL_REPLACEMENT_4___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_4___);\nvar ___CSS_LOADER_URL_REPLACEMENT_5___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_5___);\nvar ___CSS_LOADER_URL_REPLACEMENT_6___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_6___);\nvar ___CSS_LOADER_URL_REPLACEMENT_7___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_7___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.form.react.ff-react-form {\n font-family: proxima-nova, sans-serif;\n font-style: normal;\n}\n\n.form.react.ff-react-form .f1-font-proxima-nova {\n font-family: proxima-nova, sans-serif;\n font-style: normal;\n}\n\n.form.react.ff-react-form :where(input, select) {\n font-family: proxima-nova, sans-serif;\n font-style: normal;\n}\n\n@font-face {\n font-family: 'proxima-nova';\n src:\n url(${___CSS_LOADER_URL_REPLACEMENT_0___}) format('woff2'),\n url(${___CSS_LOADER_URL_REPLACEMENT_1___}) format('woff');\n font-display: auto;\n font-style: normal;\n font-weight: 700;\n}\n\n@font-face {\n font-family: 'proxima-nova';\n src:\n url(${___CSS_LOADER_URL_REPLACEMENT_2___}) format('woff2'),\n url(${___CSS_LOADER_URL_REPLACEMENT_3___}) format('woff');\n font-display: auto;\n font-style: normal;\n font-weight: 600;\n}\n\n@font-face {\n font-family: 'proxima-nova';\n src:\n url(${___CSS_LOADER_URL_REPLACEMENT_4___}) format('woff2'),\n url(${___CSS_LOADER_URL_REPLACEMENT_5___}) format('woff');\n font-display: auto;\n font-style: normal;\n font-weight: 500;\n}\n\n@font-face {\n font-family: 'proxima-nova';\n src:\n url(${___CSS_LOADER_URL_REPLACEMENT_6___}) format('woff2'),\n url(${___CSS_LOADER_URL_REPLACEMENT_7___}) format('woff');\n font-display: auto;\n font-style: normal;\n font-weight: 400;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./styles/fonts/fonts.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,qCAAqC;EACrC,kBAAkB;AACpB;;AAEA;EACE,qCAAqC;EACrC,kBAAkB;AACpB;;AAEA;EACE,qCAAqC;EACrC,kBAAkB;AACpB;;AAEA;EACE,2BAA2B;EAC3B;;0DAEoE;EACpE,kBAAkB;EAClB,kBAAkB;EAClB,gBAAgB;AAClB;;AAEA;EACE,2BAA2B;EAC3B;;0DAE4E;EAC5E,kBAAkB;EAClB,kBAAkB;EAClB,gBAAgB;AAClB;;AAEA;EACE,2BAA2B;EAC3B;;0DAEwE;EACxE,kBAAkB;EAClB,kBAAkB;EAClB,gBAAgB;AAClB;;AAEA;EACE,2BAA2B;EAC3B;;0DAE0E;EAC1E,kBAAkB;EAClB,kBAAkB;EAClB,gBAAgB;AAClB\",\"sourcesContent\":[\".form.react.ff-react-form {\\n font-family: proxima-nova, sans-serif;\\n font-style: normal;\\n}\\n\\n.form.react.ff-react-form .f1-font-proxima-nova {\\n font-family: proxima-nova, sans-serif;\\n font-style: normal;\\n}\\n\\n.form.react.ff-react-form :where(input, select) {\\n font-family: proxima-nova, sans-serif;\\n font-style: normal;\\n}\\n\\n@font-face {\\n font-family: 'proxima-nova';\\n src:\\n url('./ProximaNova/ProximaNovaBold/bold-font.woff2') format('woff2'),\\n url('./ProximaNova/ProximaNovaBold/bold-font.woff') format('woff');\\n font-display: auto;\\n font-style: normal;\\n font-weight: 700;\\n}\\n\\n@font-face {\\n font-family: 'proxima-nova';\\n src:\\n url('./ProximaNova/ProximaNovaSemibold/semibold-font.woff2') format('woff2'),\\n url('./ProximaNova/ProximaNovaSemibold/semibold-font.woff') format('woff');\\n font-display: auto;\\n font-style: normal;\\n font-weight: 600;\\n}\\n\\n@font-face {\\n font-family: 'proxima-nova';\\n src:\\n url('./ProximaNova/ProximaNovaMedium/medium-font.woff2') format('woff2'),\\n url('./ProximaNova/ProximaNovaMedium/medium-font.woff') format('woff');\\n font-display: auto;\\n font-style: normal;\\n font-weight: 500;\\n}\\n\\n@font-face {\\n font-family: 'proxima-nova';\\n src:\\n url('./ProximaNova/ProximaNovaRegular/regular-font.woff2') format('woff2'),\\n url('./ProximaNova/ProximaNovaRegular/regular-font.woff') format('woff');\\n font-display: auto;\\n font-style: normal;\\n font-weight: 400;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.f1-leading-12 {\n line-height: 2.625rem;\n}\n\n.f1-h-26 {\n height: 100px;\n}\n\n.f1-w-26 {\n width: 100px;\n}\n\n.f1-shadow-top {\n box-shadow:\n 0px -2px 4px -2px #0000000d,\n 0px -4px 6px -1px #0000001a;\n /* 0px -2px 4px -2px rgba(0, 0, 0, 0.05),\n 0px -10px 7px -7px rgba(0, 0, 0, 0.1); */\n}\n\n.f1-max-w-65 {\n max-width: 20rem;\n}\n\n.f1-link-text a {\n color: #374151;\n}\n\n.hide-spinner input::-webkit-outer-spin-button,\n.hide-spinner input::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\n\n/* Firefox */\n.hide-spinner input[type='number'] {\n -moz-appearance: textfield;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./styles/styles.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,qBAAqB;AACvB;;AAEA;EACE,aAAa;AACf;;AAEA;EACE,YAAY;AACd;;AAEA;EACE;;+BAE6B;EAC7B;4CAC0C;AAC5C;;AAEA;EACE,gBAAgB;AAClB;;AAEA;EACE,cAAc;AAChB;;AAEA;;EAEE,wBAAwB;EACxB,SAAS;AACX;;AAEA,YAAY;AACZ;EACE,0BAA0B;AAC5B\",\"sourcesContent\":[\".f1-leading-12 {\\n line-height: 2.625rem;\\n}\\n\\n.f1-h-26 {\\n height: 100px;\\n}\\n\\n.f1-w-26 {\\n width: 100px;\\n}\\n\\n.f1-shadow-top {\\n box-shadow:\\n 0px -2px 4px -2px #0000000d,\\n 0px -4px 6px -1px #0000001a;\\n /* 0px -2px 4px -2px rgba(0, 0, 0, 0.05),\\n 0px -10px 7px -7px rgba(0, 0, 0, 0.1); */\\n}\\n\\n.f1-max-w-65 {\\n max-width: 20rem;\\n}\\n\\n.f1-link-text a {\\n color: #374151;\\n}\\n\\n.hide-spinner input::-webkit-outer-spin-button,\\n.hide-spinner input::-webkit-inner-spin-button {\\n -webkit-appearance: none;\\n margin: 0;\\n}\\n\\n/* Firefox */\\n.hide-spinner input[type='number'] {\\n -moz-appearance: textfield;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","import { countries } from 'country-data';\n\nexport function alpha2ToAlpha3(alpha2: string): string | null {\n const country = countries[alpha2];\n return country ? country.alpha3 : null;\n}\nexport function alpha3ToAlpha2(alpha3: string): string | null {\n const country = countries[alpha3];\n return country ? country.alpha2 : null;\n}\nexport function alpha3ToName(alpha3: string): string | null {\n const country = countries[alpha3];\n return country ? country.name : null;\n}\n\nexport const allCountries = Object.keys(countries)\n .filter((code: string) => code.length === 3)\n .map((alpha3) => ({ value: alpha3, label: alpha3ToName(alpha3) }));\n","const CloudUploadOutline = ({ className }) => {\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n >\n <path d=\"M6.5 20C4.98 20 3.68333 19.4767 2.61 18.43C1.53667 17.3767 1 16.0933 1 14.58C1 13.28 1.39 12.12 2.17 11.1C2.95667 10.08 3.98333 9.43 5.25 9.15C5.67 7.61667 6.50333 6.37667 7.75 5.43C9.00333 4.47667 10.42 4 12 4C13.9533 4 15.6067 4.68 16.96 6.04C18.32 7.39333 19 9.04667 19 11C20.1533 11.1333 21.1067 11.6333 21.86 12.5C22.62 13.3533 23 14.3533 23 15.5C23 16.7533 22.5633 17.8167 21.69 18.69C20.8167 19.5633 19.7533 20 18.5 20H13C12.4533 20 11.9833 19.8033 11.59 19.41C11.1967 19.0233 11 18.5533 11 18V12.85L9.4 14.4L8 13L12 9L16 13L14.6 14.4L13 12.85V18H18.5C19.2 18 19.79 17.7567 20.27 17.27C20.7567 16.79 21 16.2 21 15.5C21 14.8 20.7567 14.21 20.27 13.73C19.79 13.2433 19.2 13 18.5 13H17V11C17 9.62 16.5133 8.44 15.54 7.46C14.5667 6.48667 13.3867 6 12 6C10.62 6 9.44 6.48667 8.46 7.46C7.48667 8.44 7 9.62 7 11H6.5C5.53333 11 4.71 11.3433 4.03 12.03C3.34333 12.71 3 13.5333 3 14.5C3 15.4667 3.34333 16.3 4.03 17C4.71 17.6667 5.53333 18 6.5 18H9V20\" />\n </svg>\n );\n};\n\nexport default CloudUploadOutline;\n","const PencilOutline = ({ className }) => {\n return (\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n >\n <path d=\"M14.06 9L15 9.94L5.92 19H5V18.08L14.06 9ZM17.66 3C17.41 3 17.15 3.1 16.96 3.29L15.13 5.12L18.88 8.87L20.71 7.04C21.1 6.65 21.1 6 20.71 5.63L18.37 3.29C18.17 3.09 17.92 3 17.66 3ZM14.06 6.19L3 17.25V21H6.75L17.81 9.94L14.06 6.19Z\" />\n </svg>\n );\n};\n\nexport default PencilOutline;\n","/* eslint-disable check-file/filename-naming-convention */\nimport {\n alertCircleOutline,\n checkbox,\n chevronDown,\n close,\n driverLicenseIcon,\n driversLicenseBanner,\n loader,\n magnify,\n mediCareBanner,\n medicalIcon,\n passportBanner,\n passportIcon,\n rightArrowIcon,\n chevronDownError,\n magnifyError,\n closeError,\n nzDriverLicence,\n nzSampleCard,\n nzVersionNumber,\n actLicenseNumber,\n actIdDetails,\n nswSampleCard,\n nswLicenseNumber,\n nswIdDetails,\n ntSampleCard,\n ntLicenseNumber,\n ntIdDetails,\n nzIdDetails,\n nzLicenseNumber,\n qldSampleCard,\n qldLicenseNumber,\n qldIdDetails,\n saSampleCard,\n saLicenseNumber,\n saIdDetails,\n tasSampleCard,\n tasLicenseNumber,\n tasIdDetails,\n vicSampleCard,\n vicLicenseNumber,\n vicIdDetails,\n waSampleCard,\n waLicenseNumber,\n waIdDetails,\n blueMedicareCard,\n greenMedicareCard,\n yellowMedicareCard,\n backArrow,\n actSampleCard,\n ausPassport,\n nzPassport,\n chevronUp,\n chevronUpError,\n editIcon,\n failedIcon,\n pendingIcon,\n retryIcon,\n successIcon,\n loadingIcon,\n internationPassport,\n fileDocumentCheckOutline,\n fileDocumentAlertOutline,\n} from '../../../../../styles/images';\n\nexport { default as CloudUploadOutline } from '../../../../../styles/images/CloudUploadOutline';\nexport { default as PencilOutline } from '../../../../../styles/images/PencilOutline';\n\nexport const icons = {\n loader,\n checkbox,\n rightArrowIcon,\n driverLicenseIcon,\n passportIcon,\n medicalIcon,\n driversLicenseBanner,\n passportBanner,\n mediCareBanner,\n magnify,\n magnifyError,\n alertCircleOutline,\n close,\n chevronDown,\n chevronDownError,\n closeError,\n nzDriverLicence,\n nzSampleCard,\n nzVersionNumber,\n actLicenseNumber,\n actIdDetails,\n nswSampleCard,\n nswLicenseNumber,\n nswIdDetails,\n ntSampleCard,\n ntLicenseNumber,\n ntIdDetails,\n nzIdDetails,\n nzLicenseNumber,\n qldSampleCard,\n qldLicenseNumber,\n qldIdDetails,\n saSampleCard,\n saLicenseNumber,\n saIdDetails,\n tasSampleCard,\n tasLicenseNumber,\n tasIdDetails,\n vicSampleCard,\n vicLicenseNumber,\n vicIdDetails,\n waSampleCard,\n waLicenseNumber,\n waIdDetails,\n blueMedicareCard,\n greenMedicareCard,\n yellowMedicareCard,\n backArrow,\n actSampleCard,\n ausPassport,\n nzPassport,\n chevronUp,\n chevronUpError,\n editIcon,\n failedIcon,\n pendingIcon,\n retryIcon,\n successIcon,\n loadingIcon,\n internationPassport,\n fileDocumentCheckOutline,\n fileDocumentAlertOutline,\n} satisfies Record<string, string>;\n","import { DocumentTypes, IStaticPageConfig } from '../../appConfig.type';\nimport { icons } from '../../constants/icons';\n\nexport const passportPage = {\n name: 'PASSPORT',\n mode: 'individual',\n title: { label: `Get your passport ready` },\n descriptions: [\n {\n label:\n 'Please grant access to your camera so we can take a photo of your passport. Make sure you are in a well-lit room and the details on your ID are clear.',\n },\n ],\n instructions: {\n content: [\n {\n image: icons.passportBanner,\n },\n ],\n },\n cta: { label: 'Ready' },\n} satisfies IStaticPageConfig<DocumentTypes>;\n","import { DocumentTypes, IStaticPageConfig } from '../../appConfig.type';\nimport { icons } from '../../constants/icons';\n\nexport const mediCarePage = {\n name: 'NATIONAL_HEALTH_ID',\n mode: 'individual',\n title: { label: `Get your Medicare card ready` },\n descriptions: [\n {\n label:\n 'Please grant access to your camera so we can take a photo of your Medicare card. Make sure you are in a well-lit room and the details on your ID are clear.',\n },\n ],\n instructions: {\n content: [\n {\n image: icons.mediCareBanner,\n },\n ],\n },\n cta: { icon: '', label: 'Ready' },\n} satisfies IStaticPageConfig<DocumentTypes>;\n","import type { DocumentType } from '@module/common/shared/models/SupportingDocument';\nimport type { ConfigCategory, ConfigMode } from '@module/form/definition';\n\n/**\n * Defines the structure for styles used throughout the application.\n * @typedef {Object} Styles - Tailwind+CustomStyle object.\n */\nimport type { ActionToggleConfig } from './components/base/FrankieActionField/FrankieActionField';\nimport type { InputProps } from './components/base/SharedInput/Input';\nimport type { SelectProps } from './components/base/SharedSelect/Select';\nimport type { CalendarConfig } from './components/base/StandardDate/StandardDate';\nimport type { FrankieAddressProps } from './components/view/FrankieAddress/FrankieAddress';\nimport type { FrankiePhoneFieldTypeProps } from './components/view/FrankiePhoneField/FrankiePhoneField';\nimport type { IdDetails } from './model/idDetails.model';\nimport type { PersonalDetailsDocumentKeys } from './model/personalDetails.model';\nimport type { ReviewDocument } from './model/review.model';\nimport type { ReactFormIdsKeys } from './types/pages.type';\nimport type { CSSProperties } from 'react';\nimport type { FieldValues, Path, RegisterOptions } from 'react-hook-form';\nimport type { Message } from 'react-hook-form/dist/types/errors';\nimport type { ValidationRule } from 'react-hook-form/dist/types/validator';\n\n/*########################################################################################*/\n/*############################ Constants & Common Types ############################*/\n\n/*########################################################################################*/\nexport enum ConfigCSSKeys {\n wrapper = 'ff-wrapper',\n description = 'ff-description',\n instructions = 'ff-instructions',\n documents = 'ff-documents',\n checkbox = 'ff-checkbox',\n label = 'ff-label',\n title = 'ff-title',\n subtitle = 'ff-subtitle',\n button = 'ff-button',\n cancelButton = 'ff-cancel-button',\n checkboxItem = 'ff-checkbox-item',\n descriptionItem = 'ff-description-item',\n instructionItem = 'ff-instruction-item',\n documentItem = 'ff-document-item',\n font = 'font',\n formWrapper = 'ff-form-wrapper',\n formField = 'ff-form-field',\n progressWrapper = 'ff-progress-wrapper',\n progressItem = 'ff-progress-item',\n loading = 'ff-loading',\n}\n\nexport enum DocumentKeys {\n DRIVERS_LICENCE = 'DRIVERS_LICENCE',\n PASSPORT = 'PASSPORT',\n NATIONAL_HEALTH_ID = 'NATIONAL_HEALTH_ID',\n}\n\nexport enum RESULT_STATE {\n SUCCESS = 'SUCCESS',\n FAIL = 'FAIL',\n PENDING = 'PENDING',\n PARTIAL = 'PARTIAL',\n UPLOAD_SUCCESS = 'UPLOAD_SUCCESS',\n UPLOAD_FAIL = 'UPLOAD_FAIL',\n}\n\nexport const documentKeysList = Object.values(DocumentKeys);\nexport type DocumentTypes = keyof typeof DocumentKeys;\nexport type ConfigNames = DocumentTypes | ReactFormIdsKeys;\nexport type FormFieldConfigProps =\n | Path<ReviewDocument>\n | Path<PersonalDetailsDocumentKeys>\n | Path<IdDetails>;\n\nconst exclusiveScreens: ReactFormIdsKeys[] = ['WELCOME', 'CONSENT'];\ntype ExclusiveScreens = (typeof exclusiveScreens)[number];\n\ntype Screen<NType extends ConfigNames> = NType;\n\n/*########################################################################################*/\n/*############################ Common Configuration Types ############################*/\n/*########################################################################################*/\nexport type Styles<T extends ConfigCSSKeys = ConfigCSSKeys> =\n T extends ConfigCSSKeys.font\n ? Partial<Record<T, FontConfig>>\n : Partial<Record<T, CSSProperties>>;\n\nexport type FontConfig = {\n name?: string;\n url?: string;\n};\n\n/**\n * Represents the content of a page.\n * @typedef {Object} Content\n * @property {string} label - The label content.\n * @property {string} [icon] - The icon associated with the content.\n * @property {Styles} style - The styles for the content.\n */\nexport type Content<NType extends ConfigNames = ConfigNames> = {\n icon?: string;\n label?: string;\n subText?: string;\n style?: Styles;\n} & (NType extends DocumentTypes\n ? {\n image: string;\n }\n : NonNullable<unknown>);\n\nexport type ListInfo<NType extends ConfigNames = ConfigNames> = {\n label?: string;\n content: Content<NType>[];\n style?: Styles;\n};\n\n/**\n * Static Configuration for Document Type Content\n * @typedef {Object} DocumentTypeContent\n */\nexport interface DocumentTypeContent {\n label?: string;\n image: string;\n style?: Styles;\n}\n\n/**\n * Represents list content for a page.\n * @typedef {Object} LisContent\n * @property {boolean} [isRoundedCheckbox] - Indicates whether the list item has a circular checkbox.\n * @property {string} label - The label content.\n * @property {Styles} style - The styles for the list content.\n */\nexport type LisContent<NType extends ConfigNames = ConfigNames> =\n ListInfo<NType>;\n\ntype Checkbox = Omit<ListInfo, 'label'> & NonNullable<unknown>;\n\n/**\n * Represents ID card content for a page.\n * @typedef {Object} IDocuments\n * @property {string} postIcon - The post-fix icon associated with the ID card content.\n * @property {string} label - The label content.\n * @property {Styles} style - The styles for the ID card content.\n */\n\nexport type IDocuments<\n DType extends ConfigCategory = ConfigCategory,\n FType extends FormFieldConfigProps = FormFieldConfigProps,\n> = (Content & {\n icon: string;\n type: DocumentTypes;\n subtitle?: string;\n postIcon?: string;\n}) &\n (DType extends 'manual'\n ? { countries: CountryConfig<InputConfigType, FType> }\n : NonNullable<unknown>);\n\n/**\n * Represents action content for a page.\n * @typedef {Object} ActionContent\n * @property {string} [redirectTo] - The URL to redirect to upon action.\n * @property {string} label - The label content.\n * @property {Styles} style - The styles for the action content.\n */\n\nexport type ActionContent = Content & {\n redirectTo?: string;\n};\n\n/**\n * Represents configuration for a static page.\n * @typedef {Object} IStaticPageConfig\n * @property {Content} title - The title of the static page.\n * @property {Content[]} descriptions - The paragraphs of the static page.\n * @property {LisContent[]} instructions - The list items of the static page.\n * @property {ActionContent} cta - The action content of the static page.\n * @property {Styles} style - The styles for the static page.\n */\nexport type IBasicInfo<\n NType extends ConfigNames = ReactFormIdsKeys,\n FType extends ConfigCategory = ConfigCategory,\n MType extends ConfigMode = ConfigMode,\n> = FontConfig & {\n name: NType;\n mode: MType;\n title: Content;\n subtitle?: Content;\n descriptions?: Content[];\n style?: Styles;\n type?: FType;\n} & (FType extends 'manual'\n ? {\n type: 'manual';\n numberOfIDs?: number;\n verify?: boolean;\n }\n : NonNullable<unknown>) &\n (MType extends 'business'\n ? {\n sender?: string;\n expiry?: string;\n }\n : NonNullable<unknown>);\n\n/*########################################################################################*/\n/*############################ Static Field Configuration Types ############################*/\n/*########################################################################################*/\nexport type Instructions<NType extends ConfigNames> = {\n name: NType;\n instructions?: LisContent<NType>;\n};\n\ntype CheckboxType<NType extends ConfigNames> = {\n name: NType;\n checkbox: Checkbox;\n};\n\ntype Excluded<NType extends ConfigNames, EType extends ConfigNames> = Exclude<\n NType,\n EType\n>;\n\ntype ConditionalInstructions<NType extends ConfigNames | DocumentTypes> =\n NType extends 'WELCOME' | DocumentTypes\n ? Instructions<'WELCOME' | DocumentTypes>\n : NonNullable<unknown>;\n\ntype ConditionalCheckbox<NType extends ConfigNames> = NType extends 'CONSENT'\n ? CheckboxType<'CONSENT'>\n : NonNullable<unknown>;\n\ntype OtherConditionalFields<NType extends ConfigNames> =\n NType extends ExclusiveScreens\n ? NonNullable<unknown>\n : Instructions<Excluded<NType, 'WELCOME' | 'CONSENT'>> &\n CheckboxType<Excluded<NType, 'WELCOME' | 'CONSENT'>>;\n\ntype StaticScreen = Screen<\n 'WELCOME' | 'CONSENT' | DocumentTypes | 'DOC_UPLOAD'\n>;\n\n/**\n * Defines the type for static page configuration based on the form ID.\n * @template NType - Type parameter representing the form ID.\n */\nexport type IStaticPageConfig<NType extends StaticScreen = StaticScreen> =\n (IBasicInfo<NType> & { cta: ActionContent }) &\n (\n | ConditionalInstructions<NType>\n | ConditionalCheckbox<NType>\n | OtherConditionalFields<NType>\n );\n\n/*########################################################################################*/\n/*############################ ID Card Configuration Types ############################*/\n/*########################################################################################*/\nexport type IDCardScreen = Screen<DocumentTypes | 'DOCUMENT' | 'RETRY'>;\nexport type IIdCardPageConfig<\n NType extends IDCardScreen = IDCardScreen,\n FType extends ConfigCategory = ConfigCategory,\n CType extends FormFieldConfigProps = FormFieldConfigProps,\n> = IBasicInfo<NType> & {\n type: FType;\n showPreps?: boolean;\n documents: IDocuments<FType, CType>[];\n} & (FType extends 'manual'\n ? NType extends Screen<'DOCUMENT' | 'RETRY'>\n ? { numberOfIDs: number; cta: ActionContent; verify?: boolean }\n : { cta: ActionContent }\n : NonNullable<unknown>);\n\n/*########################################################################################*/\n/*############################ Document Upload Types ############################*/\n/*########################################################################################*/\nexport type DocUploadScreen = Screen<'DOC_UPLOAD'>;\nexport type DocUploadMime = {\n 'image/jpeg': boolean;\n 'image/png': boolean;\n 'image/gif': boolean;\n 'image/webp': boolean;\n 'image/tiff': boolean;\n 'image/bmp': boolean;\n 'application/pdf': boolean;\n};\nexport type DocUploadRules = {\n min_size?: ValidationRule<number>;\n max_size?: ValidationRule<number>;\n mime?: {\n value: DocUploadMime;\n message: Message;\n };\n};\nexport type DocUploadPageConfig<\n NType extends DocUploadScreen = DocUploadScreen,\n FType extends ConfigCategory = ConfigCategory,\n> = Omit<IBasicInfo<NType>, 'title'> & {\n type: FType;\n documents?: {\n type: DocumentType;\n title: Content;\n subtitle?: Content;\n descriptions?: Content[];\n instructions?: ListInfo<NType>;\n rules?: DocUploadRules;\n }[];\n cta: ActionContent;\n};\n\n/*########################################################################################*/\n/*############################ Progress Configuration Types ############################*/\n/*########################################################################################*/\nexport type IProgressScreen = Screen<'LOADING' | 'RESULT'>;\n\nexport type IProgressPageConfig<\n PType extends IProgressScreen = IProgressScreen,\n> = Pick<IBasicInfo<PType>, 'name' | 'descriptions' | 'title' | 'style'> & {\n icon?: string;\n} & (PType extends 'RESULT'\n ? {\n state: keyof typeof RESULT_STATE;\n cta: ActionContent;\n }\n : NonNullable<unknown>);\n\n/*########################################################################################*/\n/*############################ Form Field Configuration Types ############################*/\n/*########################################################################################*/\nexport type InputConfigType =\n | 'input'\n | 'label'\n | 'number'\n | 'date'\n | 'select'\n | 'multiselect'\n | 'textarea'\n | 'checkbox'\n | 'radio'\n | 'contact-number'\n | 'address'\n | 'phone';\n\nexport type FormFieldDataType =\n | 'phone'\n | 'email'\n | 'individual_extra'\n | 'document_extra'\n | 'previous_addr'\n | 'current_addr'\n | 'text'\n | 'number';\n\nexport type FormField<\n FType extends InputConfigType = InputConfigType,\n NType extends FormFieldConfigProps = FormFieldConfigProps,\n TType extends boolean = boolean,\n> = {\n name: NType | (string & NonNullable<unknown>);\n fieldType: FType;\n dataType?: FormFieldDataType;\n hide?: boolean;\n style?: Styles;\n showToggle?: TType;\n image?: string;\n title?: Content;\n helperText?: string;\n} & FieldProps<FType, NType> &\n (TType extends true ? Partial<ActionToggleConfig> : NonNullable<unknown>);\n\nexport type FieldProps<FType extends InputConfigType, NType> = {\n fieldType: FType;\n} & ConditionalFormFields<FType, NType>;\n\nexport type FieldRules<TFieldValues> = {\n rules?: Omit<\n RegisterOptions<TFieldValues, Path<TFieldValues>>,\n 'disabled' | 'valueAsNumber' | 'valueAsDate' | 'setValueAs' | 'pattern'\n > & {\n pattern?: {\n value?: string;\n message?: string;\n };\n };\n};\n\ntype ConditionalFormFields<FType, NType> = (FType extends\n | 'input'\n | 'date'\n | 'textarea'\n ? InputFieldProps<FType>\n : NonNullable<unknown>) &\n (FType extends 'select' | 'multiselect'\n ? SelectFieldProps<FType>\n : FType extends 'address'\n ? AddressFieldProps<FType, NType>\n : FType extends 'phone'\n ? FormPhoneFieldProps<FType, NType>\n : FieldRules<FType>);\n\nexport type CountryConfig<\n FType extends InputConfigType,\n CType extends FormFieldConfigProps = FormFieldConfigProps,\n> = {\n /// country AUS | NZL | IND | USA| 'default' ....\n [key: string]: {\n //state NSW | VIC | QLD | WA | SA | TAS | NT | ACT | 'default'\n [key: string]: {\n image?: string;\n fields: FormField<FType, CType>[];\n };\n };\n};\n\ntype InputFieldProps<FType> = {\n fieldType: FType;\n placeholder?: string;\n} & (FType extends 'date'\n ? Omit<InputProps<FieldValues>, 'control' & 'rules'>\n : Omit<InputProps<FieldValues>, 'control'>) &\n (FType extends 'date'\n ? { calendarConfig?: Partial<CalendarConfig> }\n : NonNullable<unknown>);\n\ntype SelectFieldProps<FType> = {\n fieldType: FType;\n placeholder?: string;\n} & Omit<SelectProps<FieldValues, string | number>, 'control'>;\n\nexport type AddressFieldProps<FType, AType> = {\n fieldType: FType;\n placeholder?: string;\n} & Omit<FrankieAddressProps<AType, InputConfigType>, 'control'>;\n\ntype FormPhoneFieldProps<FType, AType> = {\n fieldType: FType;\n placeholder: {\n cc: string;\n phoneNumber: string;\n };\n} & Omit<FrankiePhoneFieldTypeProps<AType>, 'control'>;\n\n/**\n * Represents configuration for a form page.\n * @typedef {Object} IFormPageConfig\n * @property {Content} label - The label of the form page.\n * @property {FormField[]} fields - The form fields of the form page.\n * @property {ActionContent} cta - The action content of the form page.\n * @property {Styles} style - The styles for the form page.\n */\nexport type FormPageScreen = Screen<'REVIEW' | 'PERSONAL' | 'RETRY'>;\ntype PersonalDetails<CType extends FormFieldConfigProps> = {\n personal: {\n countries?: CountryConfig<InputConfigType, CType>;\n };\n};\n\ntype DocumentDetails<CType extends FormFieldConfigProps> = {\n documents?: {\n type: DocumentTypes;\n countries?: CountryConfig<InputConfigType, CType>;\n }[];\n instruction?: CheckboxType<'REVIEW'>['checkbox'];\n} & Partial<PersonalDetails<CType>>;\n\nexport type IFormPageConfig<\n NType extends FormPageScreen = FormPageScreen,\n CType extends FormFieldConfigProps = FormFieldConfigProps,\n FType extends ConfigCategory = ConfigCategory,\n> = (Pick<IBasicInfo, 'name' | 'style'> & {\n title: Content;\n cta: ActionContent;\n descriptions?: Content[];\n type?: FType;\n}) &\n (NType extends Screen<'REVIEW'>\n ? DocumentDetails<CType> &\n (FType extends 'manual' ? { verify?: boolean } : NonNullable<unknown>)\n : NType extends Screen<'PERSONAL'>\n ? PersonalDetails<CType>\n : NType extends FormPageScreen\n ? DocumentDetails<CType> & PersonalDetails<CType>\n : NonNullable<unknown>);\n\n/*########################################################################################*/\n/*############################ Main Types Types ############################*/\n/*########################################################################################*/\n\n/**\n * Represents the page configuration.\n * @typedef {IStaticPageConfig | IIdCardPageConfig | IProgressPageConfig | IFormPageConfig} TPageConfig\n */\n\nexport type TPageConfig =\n | IStaticPageConfig\n | IIdCardPageConfig\n | IProgressPageConfig\n | IFormPageConfig;\n\n// Conditional type to extract keys based on value type\nexport type KeysMatching<T, V> = {\n [K in keyof T]: T[K] extends V ? K : never;\n}[keyof T];\n","import clsx from 'clsx';\n\nimport {\n ConfigCSSKeys,\n type Content,\n type ListInfo,\n type Styles,\n} from '../../../appConfig.type';\n\nexport interface CheckboxFnProps {\n item: Content;\n isSelected: boolean;\n}\n\ninterface CheckboxProps extends ListInfo {\n content: Content[];\n style?: Styles;\n testid?: {\n container?: string;\n inputWrapper?: string;\n input?: string;\n label?: string;\n };\n onChange?: (item: CheckboxFnProps) => void;\n}\n\nconst FrankieCheckbox = ({\n content,\n style,\n onChange,\n testid = {\n container: '',\n input: '',\n inputWrapper: '',\n label: '',\n },\n}: CheckboxProps) => {\n const handleCheckboxChange = (event, item: Content) => {\n onChange && onChange({ item: item, isSelected: event.target.checked });\n };\n\n return (\n <div\n className={clsx('f1-mt-5', ConfigCSSKeys.checkbox)}\n style={style?.[ConfigCSSKeys.checkbox]}\n data-testid={testid.container}\n >\n {content?.map((instruction, index) => {\n return (\n <div\n key={`f1-checkbox-${index}`}\n className={clsx('f1-flex', ConfigCSSKeys.checkboxItem)}\n data-testid={testid.inputWrapper}\n style={instruction?.style?.[ConfigCSSKeys.checkboxItem]}\n >\n <input\n className={clsx(\n '!f1-mr-0',\n 'f1-rounded-sm',\n '!f1-w-5',\n '!f1-h-5',\n )}\n id={`frankie-checkbox-id-${index}`}\n type=\"checkbox\"\n onChange={(e) => handleCheckboxChange(e, instruction)}\n data-testid={testid.input}\n />\n <label\n htmlFor={`frankie-checkbox-id-${index}`}\n className={clsx(\n 'f1-font-normal',\n 'f1-text-md',\n 'f1-leading-6',\n 'f1-text-tertiary-grey-700',\n 'f1-ml-3',\n )}\n data-testid={testid.label}\n >\n {instruction.label}\n </label>\n </div>\n );\n })}\n </div>\n );\n};\n\nexport default FrankieCheckbox;\n","import clsx from 'clsx';\nimport DOMPurify from 'dompurify';\n\nimport { ConfigCSSKeys, type Content } from '../../../appConfig.type';\n\ntype FrankieDescriptionProps = {\n descriptions: Content[];\n testId?: {\n container: string;\n };\n};\n\nconst FrankieDescription = ({\n descriptions,\n testId,\n}: FrankieDescriptionProps) => {\n return (\n <>\n {descriptions?.map((description, index) => {\n return (\n <div\n data-testid={testId?.container}\n key={`f1-description-${index}`}\n className={clsx(\n 'f1-mb-2',\n 'f1-text-tertiary-grey-700',\n 'f1-font-normal',\n 'f1-text-md',\n 'f1-leading-6',\n 'f1-link-text',\n ConfigCSSKeys.description,\n )}\n style={description?.style?.[ConfigCSSKeys.description]}\n dangerouslySetInnerHTML={{\n __html: DOMPurify.sanitize(description?.label ?? '', {\n sanitize: true,\n }),\n }}\n ></div>\n );\n })}\n </>\n );\n};\n\nexport default FrankieDescription;\n","import clsx from 'clsx';\n\nimport { ConfigCSSKeys, type Styles } from '../../../appConfig.type';\nimport { icons } from '../../../constants/icons';\n\ntype HeadingProps = {\n label: string;\n style?: Styles;\n onBack?: () => void;\n testid?: {\n header?: string;\n mockImg?: string | null;\n };\n className?: string;\n};\n\nconst Heading = ({\n label,\n style,\n className,\n testid = { header: '', mockImg: null },\n onBack,\n}: HeadingProps) => {\n return (\n <h1\n className={clsx(\n 'f1-text-2xl',\n 'f1-leading-9',\n 'f1-text-tertiary-grey-800',\n 'f1-mt-0',\n className,\n ConfigCSSKeys.title,\n )}\n style={style?.[ConfigCSSKeys.title]}\n data-testid={testid?.header}\n >\n {onBack && (\n <div className={clsx('f1-text-sm', 'f1-text-tertiary-grey-500')}>\n <span\n className={clsx(\n 'f1-cursor-pointer',\n 'f1-flex',\n 'f1-gap-2',\n 'f1-leading-[21px]',\n 'f1-font-normal',\n )}\n onClick={onBack}\n >\n <img src={testid?.mockImg ?? icons.backArrow} alt=\"back\" /> Back\n </span>\n </div>\n )}\n <div className={clsx('f1-font-bold')}>{label}</div>\n </h1>\n );\n};\n\nexport default Heading;\n","import clsx from 'clsx';\n\nexport const BaseButton = ({\n className,\n disabled,\n ...props\n}: {\n className: string;\n disabled: boolean;\n}) => {\n return (\n <button\n disabled={disabled}\n className={clsx(\n 'f1-flex',\n 'f1-flex-initial',\n 'f1-font-semibold',\n 'f1-font-proxima-nova',\n 'f1-items-center',\n 'f1-justify-center',\n 'f1-border-none',\n 'f1-outline',\n 'f1-outline-0',\n 'focus-visible:f1-outline-3',\n 'active:f1-outline-3',\n 'disabled:f1-text-tertiary-grey-400',\n 'disabled:f1-outline-0',\n 'f1-h-12',\n 'f1-w-full',\n 'f1-text-md',\n 'f1-space-x-2',\n 'f1-px-5',\n 'f1-py-3',\n 'f1-rounded-full',\n 'f1-text-mono-white',\n 'f1-bg-primary-800',\n 'hover:f1-bg-primary-900',\n 'focus-visible:f1-bg-primary-900',\n 'active:f1-bg-primary-900',\n 'disabled:f1-bg-tertiary-grey-200',\n 'f1-outline-primary-200',\n className,\n disabled ? 'f1-cursor-not-allowed' : 'f1-cursor-pointer',\n )}\n {...props}\n data-testid={props?.['testid']?.['button']}\n />\n );\n};\n","import { BaseButton } from './BaseButton';\n\nexport const FrankieButton = ({\n className,\n disabled = false,\n ...props\n}: {\n [_x: string]: unknown;\n className?: string;\n disabled?: boolean;\n}) => {\n return <BaseButton className={className} disabled={disabled} {...props} />;\n};\n","import clsx from 'clsx';\n\nimport { ConfigCSSKeys } from '../../../appConfig.type';\nimport { FrankieButton } from '../../base';\n\ntype EditableConfig = {\n [_x: string]: unknown;\n label: string;\n icon?: string;\n disabled?: boolean;\n onClick?: () => void;\n};\n\nexport type FrankieFormProps = {\n [_x: string]: unknown;\n className?: string;\n disabled?: boolean;\n onClick?: () => void;\n editable?: {\n pre?: EditableConfig;\n post?: EditableConfig;\n };\n testid?: {\n container?: string;\n preButton?: string;\n };\n buttonClass?: string;\n};\nexport const FrankieFormButton = ({\n className = ConfigCSSKeys.button,\n disabled = false,\n label = '',\n icon = null,\n onClick,\n visible = true,\n testid = {\n container: '',\n preButton: '',\n },\n buttonClass = '',\n ...props\n}: FrankieFormProps) => {\n if (!visible) return null;\n return (\n <div\n data-testid={testid.container}\n className={clsx(\n 'f1-left-0',\n 'f1-right-0',\n 'f1-bottom-0',\n 'f1-p-6',\n 'tablet:f1-pt-0',\n 'tablet:f1-mb-[120px]',\n 'f1-shadow-top',\n 'tablet:!f1-shadow-none',\n 'f1-flex',\n 'f1-justify-center',\n 'f1-sticky',\n 'tablet:f1-static',\n 'f1-bg-mono-white',\n 'f1-z-20',\n 'f1-gap-4',\n buttonClass,\n )}\n >\n {props?.editable?.pre && (\n <FrankieButton\n disabled={props?.editable?.pre?.disabled}\n onClick={props?.editable?.pre?.onClick}\n data-testid={testid.preButton}\n className={clsx(\n 'f1-w-full',\n `tablet: ${props?.editable?.pre ? 'f1-w-[50%]' : 'f1-min-w-[210px]'}`,\n 'f1-h-auto',\n '!f1-bg-mono-white',\n '!f1-text-tertiary-grey-500',\n ConfigCSSKeys.cancelButton,\n )}\n style={{\n border: '1px solid #E5E5E5',\n ...(props?.['style']\n ? (props.style as Record<string, unknown>)\n : {}),\n }}\n >\n {props?.editable?.pre?.icon}\n {props?.editable?.pre?.label}\n </FrankieButton>\n )}\n\n <FrankieButton\n disabled={disabled}\n onClick={onClick}\n className={clsx(\n 'f1-w-full',\n { 'tablet:f1-w-auto': !props?.editable?.post },\n `tablet: ${props?.editable?.post ? 'f1-w-[50%]' : 'f1-min-w-[210px]'}`,\n 'f1-h-auto',\n className,\n )}\n style={props?.style}\n >\n {props?.editable?.post?.icon ?? icon}\n {props?.editable?.post?.label ?? label}\n </FrankieButton>\n </div>\n );\n};\n","import clsx from 'clsx';\nimport { useEffect, useState } from 'react';\nimport { useSelector } from 'react-redux';\n\nimport { ConfigCSSKeys } from '../../../appConfig.type';\nimport { modules } from '../../../constants/layoutMapper.const';\nimport { selectPageConfig } from '../../../redux/slices/moduleSlice';\nimport { FrankieFormButton } from '../FrankieFormButton/FrankieFormButton';\n\nimport type { ModuleInfo, WrapperProps } from '../../../types/pages.type';\n\nconst Wrapper = ({\n disabled = false,\n renderScreen,\n onSubmit,\n ctaInfo,\n formWrapperClass,\n inputButtonClass,\n inputClass,\n hideCTA = false,\n buttonConfig,\n}: WrapperProps) => {\n const { pageConfigs } = useSelector(selectPageConfig);\n\n const [currModule, setModule] = useState<ModuleInfo>(\n modules[pageConfigs.currentModule],\n );\n\n useEffect(() => {\n setModule(modules[pageConfigs.currentModule]);\n }, [pageConfigs]);\n\n /**\n * load the next module when the current module is ready\n * Emit event builtin_ready to OneSDK when the form is ready,\n * and dispatch stopLoading action to hide the loader\n */\n const handleSubmit = () => {\n onSubmit && onSubmit();\n };\n\n const onValidate = (isValid: boolean) => {\n setModule((prevModule) => ({\n ...prevModule,\n disabled: !isValid,\n }));\n };\n\n const configInfo = ctaInfo || pageConfigs[pageConfigs.currentModule];\n\n return (\n <>\n <div\n className={clsx(\n 'f1-py-[49px]',\n 'f1-px-3xl',\n 'tablet:f1-px-0',\n 'tablet:f1-pt-[64px]',\n 'tablet:f1-pb-4xl',\n inputClass,\n formWrapperClass,\n )}\n >\n {renderScreen({ onValidate })}\n </div>\n <FrankieFormButton\n icon={configInfo?.['cta']?.icon}\n visible={configInfo?.['cta'] && !hideCTA}\n label={configInfo?.['cta']?.label}\n disabled={disabled || currModule?.disabled}\n className={`${ConfigCSSKeys.button} ${inputButtonClass}`}\n onClick={handleSubmit}\n {...buttonConfig}\n style={configInfo?.['cta']?.style?.[ConfigCSSKeys.button]}\n />\n </>\n );\n};\n\nexport default Wrapper;\n","import { useContext, useState } from 'react';\nimport { useSelector } from 'react-redux';\n\nimport FrankieCheckbox from '../../components/view/FrankieCheckbox/FrankieCheckbox';\nimport FrankieDescription from '../../components/view/FrankieDescription/FrankieDescription';\nimport Heading from '../../components/view/FrankieHeading/Heading';\nimport Wrapper from '../../components/view/Wrapper/Wrapper';\nimport { EventContext, useEventHandler } from '../../hooks/useEventContext';\nimport { selectPageConfig } from '../../redux/slices/moduleSlice';\nimport { React_Form_IDS } from '../../types/pages.type';\n\nimport type { CheckboxFnProps } from '../../components/view/FrankieCheckbox/FrankieCheckbox';\n\nconst Consent = () => {\n const { pageConfigs } = useSelector(selectPageConfig);\n const config = pageConfigs[React_Form_IDS.CONSENT];\n const [loading, setLoading] = useState(false);\n\n const eventContext = useContext(EventContext);\n const { oneSDK } = eventContext;\n const individual = oneSDK.individual();\n const { documentReady } = useEventHandler();\n\n const handleSubmit = () => {\n setLoading(true);\n if (config.mode === 'individual') {\n const allConsent: string[] = individual\n .access('consentsGiven')\n .getValue();\n const myConsent: string[] = ['general', 'docs', 'creditheader'];\n myConsent.forEach((consent) => {\n if (!allConsent.includes(consent)) {\n individual.addConsent(consent);\n }\n });\n individual.submit().then(() => {\n documentReady();\n });\n } else {\n documentReady();\n }\n setLoading(false);\n };\n\n return (\n <Wrapper\n disabled={loading}\n renderScreen={({ onValidate }) => {\n const handleChange = (selectedItem: CheckboxFnProps) => {\n onValidate(selectedItem.isSelected);\n };\n\n return (\n <>\n <Heading\n label={config?.title?.label}\n style={config?.title?.style}\n />\n <FrankieDescription descriptions={config?.descriptions} />\n <FrankieCheckbox\n content={config?.checkbox?.content}\n style={config?.checkbox?.style}\n onChange={handleChange}\n />\n </>\n );\n }}\n onSubmit={handleSubmit}\n />\n );\n};\n\nexport default Consent;\n","import { DocumentTypes, IStaticPageConfig } from '../../appConfig.type';\nimport { icons } from '../../constants/icons';\n\nexport const driversLicensePage = {\n name: 'DRIVERS_LICENCE',\n mode: 'individual',\n title: {\n label: 'Get your driver’s licence ready.',\n },\n descriptions: [\n {\n label:\n 'We need to collect some personal information to verify your identity. It’s important you enter your details as accurately as possible.',\n },\n ],\n instructions: {\n content: [\n {\n image: icons.driversLicenseBanner,\n },\n ],\n },\n cta: { icon: '', label: 'Ready' },\n} satisfies IStaticPageConfig<DocumentTypes>;\n","import clsx from 'clsx';\nimport DOMPurify from 'dompurify';\n\nimport { ConfigCSSKeys, type ListInfo } from '../../../appConfig.type';\n\nimport type { DocumentTypes } from '../../../appConfig.type';\nimport type { ReactFormIdsKeys } from '../../../types/pages.type';\n\ntype TestIdType = {\n container?: string;\n label?: string;\n contentWrapper?: string;\n mockImg?: string | null;\n};\n\ntype InstructionProps = ListInfo<ReactFormIdsKeys> | ListInfo<DocumentTypes>;\nconst FrankieInstructionList = ({\n content,\n label,\n style,\n testid = {\n container: '',\n label: '',\n contentWrapper: '',\n mockImg: null,\n },\n}: InstructionProps & {\n testid?: TestIdType;\n}) => {\n return (\n <div\n className={clsx(\n 'f1-text-tertiary-grey-700',\n 'f1-mt-[32px]',\n ConfigCSSKeys.instructions,\n )}\n style={style?.[ConfigCSSKeys.instructions]}\n data-testid={testid.container}\n >\n <p\n className={clsx(\n 'f1-font-semibold',\n 'f1-text-md',\n 'f1-leading-6',\n 'f1-mb-4',\n 'f1-text-tertiary-grey-700',\n )}\n data-testid={testid.label}\n >\n {label}\n </p>\n {content?.map((instruction, index) => {\n return (\n <div\n key={`instructions-list-${index}`}\n className={clsx(\n 'f1-flex',\n 'f1-items-start',\n 'f1-mb-4',\n\n !instruction?.icon && 'f1-justify-center',\n ConfigCSSKeys.instructionItem,\n )}\n style={instruction?.style?.[ConfigCSSKeys.instructionItem]}\n data-testid={testid.contentWrapper}\n >\n {instruction?.icon && (\n <img\n className={clsx('f1-pr-3')}\n src={testid.mockImg ?? instruction?.icon}\n alt={instruction?.label}\n />\n )}\n\n {instruction?.label && (\n <div\n className={clsx(\n 'f1-font-normal',\n 'f1-text-md',\n 'f1-leading-6',\n 'f1-text-tertiary-grey-800',\n 'f1-text-left',\n 'f1-link-text',\n )}\n dangerouslySetInnerHTML={{\n __html: DOMPurify.sanitize(instruction?.label ?? '', {\n sanitize: true,\n }),\n }}\n ></div>\n )}\n\n {instruction?.image && (\n <img\n src={testid.mockImg ?? instruction.image}\n alt={`instruction-image-${index}`}\n />\n )}\n </div>\n );\n })}\n </div>\n );\n};\n\nexport default FrankieInstructionList;\n","import { StaticScreenConfig } from '../types/pages.type';\nimport { driversLicensePage, passportPage, mediCarePage } from '../features';\nimport { DocumentKeys } from '../appConfig.type';\n\nexport const staticScreenConfig = {\n [DocumentKeys.DRIVERS_LICENCE]: driversLicensePage,\n [DocumentKeys.PASSPORT]: passportPage,\n [DocumentKeys.NATIONAL_HEALTH_ID]: mediCarePage,\n} satisfies StaticScreenConfig;\n","import { DocumentKeys } from '../../appConfig.type';\nimport FrankieDescription from '../../components/view/FrankieDescription/FrankieDescription';\nimport Heading from '../../components/view/FrankieHeading/Heading';\nimport FrankieInstructionList from '../../components/view/FrankieInstructionList/FrankieInstructionList';\nimport Wrapper from '../../components/view/Wrapper/Wrapper';\nimport { staticScreenConfig } from '../../constants/staticScreenMapper.const';\n\nimport type { DocumentTypes, IStaticPageConfig } from '../../appConfig.type';\n\ntype IdPrepProps = {\n id: DocumentTypes;\n onSubmit: () => void;\n testid?: {\n mockImg: string | null;\n };\n};\nconst IdPrep = ({ id, onSubmit, testid = { mockImg: null } }: IdPrepProps) => {\n const configData = staticScreenConfig[\n DocumentKeys[id]\n ] satisfies IStaticPageConfig<`${typeof id}`>;\n\n return (\n <Wrapper\n renderScreen={() => {\n return (\n <>\n <Heading\n label={configData?.title?.label}\n style={configData?.title?.['style']}\n testid={{ mockImg: testid.mockImg }}\n />\n <FrankieDescription descriptions={configData?.descriptions} />\n <FrankieInstructionList\n {...configData?.instructions}\n testid={{ mockImg: testid.mockImg }}\n />\n </>\n );\n }}\n ctaInfo={configData}\n onSubmit={onSubmit}\n />\n );\n};\n\nexport default IdPrep;\n","import clsx from 'clsx';\nimport DOMPurify from 'dompurify';\nimport { useCallback } from 'react';\n\nimport { ConfigCSSKeys } from '../../../appConfig.type';\nimport { icons } from '../../../constants/icons';\n\nimport type { Content, IDocuments, Styles } from '../../../appConfig.type';\ninterface IdSelectionProps {\n content?: IDocuments[];\n onSelect?: (instruction: IDocuments) => void;\n subtitle?: Content;\n style?: Styles;\n testid?: {\n wrapper?: string;\n mockImg?: string | null;\n };\n}\n\nconst FrankieCardList = ({\n content,\n subtitle,\n onSelect,\n style,\n testid = {\n wrapper: '',\n mockImg: null,\n },\n}: IdSelectionProps) => {\n const frankieCard = useCallback(\n (instruction: IDocuments, index: number) => (\n <div\n key={`instructions-list-${index}`}\n data-testid={`${testid.wrapper}-${index}`}\n className={clsx(\n 'f1-flex',\n 'f1-justify-between',\n 'f1-items-center',\n 'f1-px-4',\n 'f1-h-[73px]',\n 'f1-cursor-pointer',\n 'f1-rounded-[6px]',\n 'f1-border-solid',\n 'f1-border-[1px]',\n 'f1-text-tertiary-grey-700',\n 'hover:f1-bg-tertiary-grey-100',\n 'f1-border-tertiary-grey-200',\n 'focus:f1-bg-[#E7F0FF]',\n 'focus:f1-border-[3px]',\n ConfigCSSKeys.documentItem,\n instruction?.['focus'] && 'f1-border-[3px] f1-bg-[#E7F0FF]',\n )}\n style={instruction?.style?.[ConfigCSSKeys.documentItem]}\n tabIndex={0}\n onClick={() => onSelect(instruction)}\n >\n <div\n className={clsx(\n 'f1-w-auto',\n 'f1-flex',\n 'f1-justify-evenly',\n 'f1-items-center',\n 'f1-h-full',\n 'f1-gap-2',\n )}\n >\n {instruction?.icon && (\n <img\n src={testid.mockImg ?? instruction?.icon}\n alt=\"instruction icon\"\n />\n )}\n\n <div\n className={clsx(\n 'f1-h-full',\n 'f1-flex',\n 'f1-flex-col',\n 'f1-justify-center',\n 'f1-gap-1',\n )}\n >\n <h5\n className={clsx(\n 'f1-text-md',\n 'f1-m-0',\n 'f1-p-0',\n 'f1-text-tertiary-grey-700',\n )}\n >\n {instruction.label}\n </h5>\n {instruction?.subtitle && (\n <p\n className={clsx(\n 'f1-font-normal',\n 'f1-text-xs',\n 'f1-m-0',\n 'f1-p-0',\n 'f1-text-tertiary-grey-500',\n 'hover:f1-text-tertiary-grey-600',\n )}\n >\n {instruction?.subtitle}\n </p>\n )}\n </div>\n </div>\n <div className={clsx('my-auto')}>\n <img\n src={\n testid.mockImg ?? instruction?.postIcon ?? icons.rightArrowIcon\n }\n />\n </div>\n </div>\n ),\n [content],\n );\n\n return (\n <>\n <div\n className={clsx(\n 'f1-flex',\n 'f1-gap-6',\n 'f1-flex-col',\n 'f1-justify-between',\n 'f1-my-6',\n ConfigCSSKeys.documents,\n )}\n style={style?.[ConfigCSSKeys.documents]}\n >\n {content\n ?.filter((item) => item?.['visible'] !== false)\n ?.map(frankieCard)}\n </div>\n {subtitle?.label && (\n <p\n className={clsx(\n 'f1-text-sm',\n 'f1-text-tertiary-grey-500',\n ConfigCSSKeys.subtitle,\n )}\n style={subtitle?.style?.[ConfigCSSKeys.subtitle]}\n dangerouslySetInnerHTML={{\n __html: DOMPurify.sanitize(subtitle?.label ?? '', {\n sanitize: true,\n }),\n }}\n />\n )}\n </>\n );\n};\n\nexport default FrankieCardList;\n","export const commonInfo = {\n additionInfo: {\n label: 'Additional ID',\n descriptions: [{ label: 'We need an additional ID verify your identity.' }],\n },\n};\n","export const ordinalWords = [\n 'first',\n 'second',\n 'third',\n 'fourth',\n 'fifth',\n 'sixth',\n 'seventh',\n 'eighth',\n 'ninth',\n 'tenth',\n 'eleventh',\n 'twelfth',\n 'thirteenth',\n 'fourteenth',\n 'fifteenth',\n 'sixteenth',\n 'seventeenth',\n 'eighteenth',\n 'nineteenth',\n 'twentieth',\n 'twenty-first',\n 'twenty-second',\n 'twenty-third',\n 'twenty-fourth',\n 'twenty-fifth',\n 'twenty-sixth',\n 'twenty-seventh',\n 'twenty-eighth',\n 'twenty-ninth',\n 'thirtieth',\n 'thirty-first',\n 'thirty-second',\n 'thirty-third',\n 'thirty-fourth',\n 'thirty-fifth',\n 'thirty-sixth',\n 'thirty-seventh',\n 'thirty-eighth',\n 'thirty-ninth',\n 'fortieth',\n 'forty-first',\n 'forty-second',\n 'forty-third',\n 'forty-fourth',\n 'forty-fifth',\n 'forty-sixth',\n 'forty-seventh',\n 'forty-eighth',\n 'forty-ninth',\n 'fiftieth',\n 'fifty-first',\n 'fifty-second',\n 'fifty-third',\n 'fifty-fourth',\n 'fifty-fifth',\n 'fifty-sixth',\n 'fifty-seventh',\n 'fifty-eighth',\n 'fifty-ninth',\n 'sixtieth',\n 'sixty-first',\n 'sixty-second',\n 'sixty-third',\n 'sixty-fourth',\n 'sixty-fifth',\n 'sixty-sixth',\n 'sixty-seventh',\n 'sixty-eighth',\n 'sixty-ninth',\n 'seventieth',\n 'seventy-first',\n 'seventy-second',\n 'seventy-third',\n 'seventy-fourth',\n 'seventy-fifth',\n 'seventy-sixth',\n 'seventy-seventh',\n 'seventy-eighth',\n 'seventy-ninth',\n 'eightieth',\n 'eighty-first',\n 'eighty-second',\n 'eighty-third',\n 'eighty-fourth',\n 'eighty-fifth',\n 'eighty-sixth',\n 'eighty-seventh',\n 'eighty-eighth',\n 'eighty-ninth',\n 'ninetieth',\n 'ninety-first',\n 'ninety-second',\n 'ninety-third',\n 'ninety-fourth',\n 'ninety-fifth',\n 'ninety-sixth',\n 'ninety-seventh',\n 'ninety-eighth',\n 'ninety-ninth',\n 'hundredth',\n];\n\nexport const numberToText: string[] = [\n 'zero',\n 'one',\n 'two',\n 'three',\n 'four',\n 'five',\n 'six',\n 'seven',\n 'eight',\n 'nine',\n 'ten',\n 'eleven',\n 'twelve',\n 'thirteen',\n 'fourteen',\n 'fifteen',\n 'sixteen',\n 'seventeen',\n 'eighteen',\n 'nineteen',\n 'twenty',\n];\n","export enum REDUX_KEYS {\n LOADER = 'loader',\n PAGE_CONFIG = 'page-config',\n MANUAL_FLOW = 'manual-flow',\n}\n","// eslint-disable-next-line check-file/filename-naming-convention\nimport { createSlice } from '@reduxjs/toolkit';\nimport cloneDeep from 'lodash.clonedeep';\n\nimport { React_Form_IDS } from '../../types/pages.type';\nimport { REDUX_KEYS } from '../constants/stateKey.enum';\n\nimport type { DocumentKeys, FormField } from '../../appConfig.type';\nimport type { PayloadAction } from '@reduxjs/toolkit';\n\nexport type ManualReduxFormKeys = DocumentKeys | React_Form_IDS;\n\nexport enum FORM_MODE {\n EDIT = 'edit',\n CREATE = 'create',\n REVIEW = 'review',\n}\n\nexport enum VERIFICATION_FAILED_IDS {\n NAME = 'name',\n ID = 'id',\n}\n\ntype FormState = {\n mode?: FORM_MODE;\n currentForm: ManualReduxFormKeys;\n numberOfIdsRequired?: number;\n};\n\ntype UpdateFormPayload = FormState & {\n idType?: ManualReduxFormKeys;\n};\n\nexport type DataInfo = {\n label: string;\n docFields: FormField[];\n mode?: FORM_MODE;\n dirty?: boolean;\n};\n\nexport type PageHistoryType = {\n id?: ManualReduxFormKeys;\n isRemove?: boolean;\n isClear?: boolean;\n};\n\nexport type ManualState = Partial<\n {\n data: Record<ManualReduxFormKeys, DataInfo>;\n pageHistory?: PageHistoryType[];\n backHistory?: PageHistoryType[];\n failedType?: VERIFICATION_FAILED_IDS;\n } & FormState\n>;\n\nexport const initialState: ManualState = {\n data: {} as Record<ManualReduxFormKeys, DataInfo>,\n currentForm: null,\n numberOfIdsRequired: 1,\n mode: FORM_MODE.CREATE,\n pageHistory: [],\n backHistory: [],\n};\n\nconst getUniqueData = (dataList: PageHistoryType[]) => {\n return dataList.filter(\n (item, index, self) =>\n self.findIndex((obj) => obj.id === item.id) === index,\n );\n};\n\nconst manualFlowSlice = createSlice({\n name: REDUX_KEYS.MANUAL_FLOW,\n initialState,\n reducers: {\n updateReduxForm: (\n state,\n action: PayloadAction<{\n data: FormField[];\n label?: string;\n key: ManualReduxFormKeys;\n replacedId?: ManualReduxFormKeys;\n dirty?: boolean;\n currentForm?: ManualReduxFormKeys;\n isAdditionalId?: boolean;\n }>,\n ) => {\n const { key, data, label } = action.payload;\n const getLatestDataList = () =>\n Object.keys(state.data).reduce(\n (prev, curr) => [...prev, { [curr]: state.data[curr], key: curr }],\n [],\n );\n\n const stateDataV1 = getLatestDataList();\n\n //default configurations\n if (!state.data[key]) {\n state.data[key] = { docFields: [], label: '' };\n }\n\n //mounting current form\n if (action?.payload?.currentForm) {\n state.currentForm = action.payload.currentForm;\n }\n\n state.data[key].docFields = data;\n state.data[key].label = label ?? state.data[key].label;\n state.data[key].mode = FORM_MODE.CREATE;\n state.data[key].dirty = action.payload?.dirty ?? true;\n\n //handling additional id\n if (action.payload?.isAdditionalId && state.data[key]) {\n state.data[key].dirty = false;\n if (state.failedType === VERIFICATION_FAILED_IDS.ID) {\n state.failedType = null;\n }\n // Remarks: This is for the additional id, maintaining the sequence\n if (Object.keys(state.data).indexOf(React_Form_IDS.PERSONAL) > 0) {\n const personalData = cloneDeep(state.data[React_Form_IDS.PERSONAL]);\n delete state.data[React_Form_IDS.PERSONAL];\n state.data[React_Form_IDS.PERSONAL] = personalData;\n }\n state.numberOfIdsRequired = state.numberOfIdsRequired + 1;\n }\n\n if (action?.payload?.replacedId) {\n if (state.failedType === VERIFICATION_FAILED_IDS.ID) {\n state.failedType = null;\n }\n delete state.data[action.payload.replacedId];\n const newData = {};\n //@remarks re-arrenging the data at the same sequence\n stateDataV1.forEach((v1Data) => {\n let newKey = v1Data.key;\n if (newKey === action.payload.replacedId) {\n newKey = key;\n }\n newData[newKey] = state.data[newKey];\n delete state.data[newKey];\n state.data[newKey] = newData[newKey];\n });\n }\n },\n updateFormState: (state, action: PayloadAction<UpdateFormPayload>) => {\n const mode = action.payload.mode ?? state?.mode ?? FORM_MODE.CREATE;\n state.currentForm = action.payload.currentForm;\n\n if (action.payload?.numberOfIdsRequired) {\n state.numberOfIdsRequired = action.payload?.numberOfIdsRequired;\n }\n\n state.mode = mode;\n\n // Update mode for all the documents\n if (action.payload?.idType) {\n Object.entries(state.data).forEach(([key]) => {\n if (key === action.payload.idType) {\n state.data[key].mode = mode;\n } else {\n state.data[key].mode = FORM_MODE.CREATE;\n }\n });\n }\n },\n updateHistory: (state, action: PayloadAction<PageHistoryType>) => {\n if (action.payload?.isClear) {\n state.pageHistory = [];\n } else {\n state.pageHistory = getUniqueData([\n action.payload,\n ...state.pageHistory,\n ]);\n\n if (action.payload?.isRemove) {\n state.pageHistory = state.pageHistory.filter(\n (item) => item.id !== action.payload.id,\n );\n } else {\n state.backHistory = state.backHistory.filter(\n (item) => item.id !== action.payload.id,\n );\n }\n }\n },\n updateBackHistory: (state, action: PayloadAction<PageHistoryType>) => {\n if (state.data?.[action.payload.id]?.dirty) {\n state.data[action.payload.id].dirty = null;\n }\n\n if (action.payload?.isClear) {\n state.backHistory = [];\n } else {\n state.backHistory = getUniqueData([\n action.payload,\n ...state.backHistory,\n ]);\n\n if (action.payload?.isRemove) {\n state.backHistory = state.backHistory.filter(\n (item) => item.id !== action.payload.id,\n );\n }\n }\n },\n clearAllHistory: (\n state,\n action: PayloadAction<Partial<{ clearFormState: boolean }>>,\n ) => {\n state.pageHistory = [];\n state.backHistory = [];\n if (action.payload?.clearFormState) {\n Object.entries(state.data ?? {})?.forEach(([key]) => {\n state.data[key].dirty = null;\n });\n }\n },\n updateFailState: (\n state,\n action: PayloadAction<VERIFICATION_FAILED_IDS>,\n ) => {\n state.failedType = action.payload;\n },\n resetForm: (state) => {\n state.currentForm = null;\n state.mode = FORM_MODE.CREATE;\n Object.entries(state.data ?? {})?.forEach(([key]) => {\n state.data[key].dirty = null;\n state.data[key].mode = FORM_MODE.CREATE;\n });\n state.pageHistory = [];\n },\n updateRequiredIds: (state, action: PayloadAction<number>) => {\n state.numberOfIdsRequired = action.payload;\n },\n },\n});\n\nexport const updateReduxForm = manualFlowSlice.actions.updateReduxForm;\nexport const updateFormState = manualFlowSlice.actions.updateFormState;\nexport const updateHistory = manualFlowSlice.actions.updateHistory;\nexport const updateFailState = manualFlowSlice.actions.updateFailState;\nexport const resetForm = manualFlowSlice.actions.resetForm;\nexport const updateBackHistory = manualFlowSlice.actions.updateBackHistory;\nexport const clearAllHistory = manualFlowSlice.actions.clearAllHistory;\nexport const updateRequiredIds = manualFlowSlice.actions.updateRequiredIds;\n\nexport const selectManualForm = (state: {\n [REDUX_KEYS.MANUAL_FLOW]: ManualState;\n}) => state[REDUX_KEYS.MANUAL_FLOW];\n\nexport default manualFlowSlice.reducer;\n","import cloneDeep from 'lodash.clonedeep';\nimport get from 'lodash.get';\nimport merge from 'lodash.merge';\nimport { DateTime } from 'luxon';\n\nimport type { Address } from '@module/common/shared/models/Address';\nimport { allAustralianStates } from '@module/common/shared/utils';\n\nimport { allCountries } from '../../formio/transformers/countryData';\n\nimport type { FrankieSelectOptions } from '../types/form';\nimport type { Path } from 'react-hook-form';\n\n/* @function getUniqueList give a list of objects and return a list of unique objects\n based on the name property\n EX : [{name: 'name1',...},\n {name: 'name1',...},\n {name: 'name2',...}]\n\n ===> [{name: 'name1',....},\n {name: 'name2',....}]\n */\n\ntype FormateDateParamsType = {\n dateString: string;\n fromFormat?: 'dd-MM-yyyy' | 'yyyy-MM-dd';\n toFormat?: 'dd LLL yyyy';\n};\nexport const getUniqueList = <DType>(\n combinedList: DType[],\n key: keyof DType,\n) => {\n const uniqueList: DType[] = [];\n\n combinedList.forEach((item) => {\n const searchedIndex = uniqueList?.findIndex(\n (uniqueItem) => uniqueItem?.[key] === item?.[key],\n );\n\n if (searchedIndex >= 0) {\n uniqueList[searchedIndex] = merge(\n cloneDeep(uniqueList[searchedIndex]),\n cloneDeep(item),\n );\n } else {\n uniqueList.push(item);\n }\n });\n return uniqueList;\n};\n\nexport const replaceIfExistInList = (\n str: string,\n words: string[],\n replaceIndex: number,\n) => {\n const titleWords = str.split(' ');\n const wordIndex = titleWords.findIndex((item) => words.includes(item));\n\n return titleWords\n .map((item, index) =>\n words.includes(item) && index === wordIndex ? words[replaceIndex] : item,\n )\n .join(' ');\n};\n\nexport const changeWordFromString = (\n string: string,\n words: string[],\n newValue = '',\n) => {\n return string\n .split(' ')\n .map((char) => (words.includes(char) ? newValue : char))\n .join(' ');\n};\n\nexport const getAllPaths = <oType extends NonNullable<unknown>>(\n obj: oType,\n parentPath = '',\n): Path<typeof obj>[] => {\n let paths = [];\n\n for (const key in obj) {\n const currentPath = parentPath ? `${parentPath}.${key}` : key;\n if (typeof obj[key] === 'object' && obj[key] !== null) {\n paths = paths.concat(getAllPaths(obj[key], currentPath));\n } else {\n paths.push(currentPath);\n }\n }\n\n return paths;\n};\n\nexport const toTitleCase = (str: string) =>\n str?.[0] ? str[0].toUpperCase() + str?.slice(1)?.replace(/-/g, ' ') : '';\n\nexport const capitaliseWords = ([first, ...rest]: string[]): string =>\n first.toUpperCase() + rest.join('').toLowerCase();\n\nexport const getReadableDocType = (docType: string): string =>\n docType\n .split('_')\n .map(([first, ...rest]) => capitaliseWords([first, ...rest]))\n .join(' ');\n\nexport type AllCountries =\n | 'AUS'\n | 'NZL'\n | 'USA'\n | 'CAN'\n | 'GBR'\n | 'IND'\n | 'SGP';\nconst countriesInfo = {\n AUS: allAustralianStates.map((state) => ({\n label: state.name,\n value: state.alpha3Code,\n })),\n} satisfies Partial<Record<AllCountries, FrankieSelectOptions[]>>;\n\nexport const getStates = (country?: AllCountries): FrankieSelectOptions[] => {\n const defaultCountry = 'AUS';\n const options =\n countriesInfo?.[country] || countriesInfo[defaultCountry] || [];\n return [...options]?.sort((a, b) =>\n (a?.label?.toLowerCase() || '').localeCompare(\n b?.label?.toLowerCase() || '',\n ),\n );\n};\n\nexport const getFormateDate = (date: string, isReversed = false) => {\n const splittedDate = date?.split('-');\n splittedDate?.forEach((d, indx) => {\n if (d?.length === 1 && indx !== splittedDate?.length - 1) {\n splittedDate[indx] = d?.padStart(2, '0');\n }\n });\n return isReversed\n ? splittedDate?.reverse().join('-')\n : splittedDate?.join('-');\n};\n\nexport const getAllCountries = (): FrankieSelectOptions[] => {\n return [...allCountries]\n .sort((a, b) =>\n (a?.label?.toLowerCase() || '').localeCompare(\n b?.label?.toLowerCase() || '',\n ),\n )\n .filter((country) => country?.value && country?.label);\n};\n\nexport const nationalHealthIdOptions = [\n { label: 'Green', value: 'G' },\n { label: 'Blue', value: 'B' },\n { label: 'Yellow', value: 'Y' },\n];\n\nexport const getFullAddress = (addr: Address) => {\n const vStr = (data?: string | null, postFixData = '') =>\n data ? `${data?.toString().trim()}${postFixData}` : '';\n const { streetName: streetName1, streetNumber: streetNumber2 } =\n getStreetInfo({ street: addr }, 'street');\n\n const lFormAddress =\n `${vStr(addr?.unitNumber, '/')}${vStr(streetNumber2 || addr?.streetNumber)} ${vStr(streetName1?.length ? streetName1 : addr?.streetName, ',')} ${vStr(addr?.town, ',')} ${vStr(addr?.state)} ${vStr(addr?.postalCode, ',')} ${vStr(addr?.country)}`.trim();\n\n return lFormAddress\n .split(',')\n .map((i) => i.trim())\n .filter((i) => !!i.length)\n .join(', ');\n};\n\nexport const getStreetInfo = <GType, KType extends keyof GType | 'address1'>(\n data: GType,\n type: KType,\n) => {\n const sdValue = get(data, `${type as string}.streetAddress`) as string;\n const streetAddress = sdValue?.split(' ');\n if (streetAddress) {\n const isValidStreetNumber = typeof +streetAddress?.[0] === 'number';\n const streetNumber = isValidStreetNumber ? streetAddress?.shift() : '';\n const streetName = streetAddress?.join(' ');\n return { streetNumber, streetName };\n }\n return {};\n};\n\nexport const fullAddressToStreetInfo = (fullAddress: string) => {\n let splittedAddress = fullAddress?.split(',')?.[0];\n let streetInfo = splittedAddress?.split('/');\n splittedAddress = streetInfo?.length > 1 ? streetInfo?.[1] : splittedAddress;\n\n streetInfo = splittedAddress.split(' ');\n\n let streetNumber: string, streetName: string;\n if (!isNaN(Number(streetInfo?.[0] || ''))) {\n streetNumber = streetInfo?.[0] || '';\n streetName = streetInfo.slice(1)?.join(' ')?.trim();\n } else {\n streetNumber = '';\n streetName = (streetInfo?.join(' ') || '')?.trim();\n }\n\n return {\n streetNumber,\n streetName,\n streetAddress: `${streetNumber} ${streetName}`.trim(),\n remainingInfo: fullAddress?.split(',')?.slice(1)?.join(','),\n };\n};\n\nexport const checkObjectEditable = <CData>(\n data: CData,\n fallbackCheck?: keyof CData | string,\n) => {\n const onlyData = Object.entries(data).filter((i) => typeof i[1] !== 'object');\n const haveNullOrUndfined = onlyData.some((i) =>\n [undefined, null].includes(i[1]),\n );\n const haveValue = onlyData.some((i) => !!i[1]?.toString()?.length);\n\n if (haveNullOrUndfined) return undefined;\n return haveValue ? !!get(data, fallbackCheck) : haveValue;\n};\n\n/**\n *\n * @param dateString date in string\n * @returns formatted date\n * @example formatDate('19-10-1994') => '19 Oct 1994'\n */\nexport function formatDate({\n dateString,\n fromFormat = 'dd-MM-yyyy',\n toFormat = 'dd LLL yyyy',\n}: FormateDateParamsType): string {\n let isDateExist = true;\n if (dateString.split('-').length === 2) {\n dateString = '01-' + dateString;\n isDateExist = false;\n }\n const parsedDate = DateTime.fromFormat(dateString, fromFormat);\n\n // Format the parsed date to 'dd LLL yyyy' format\n const newDate = parsedDate.toFormat(toFormat);\n return isDateExist ? newDate : newDate.split(' ').slice(1).join(' ');\n}\n\nexport function rearrangeData<T>(config: {\n source: T[];\n destination: T[];\n key: keyof T;\n}): T[] {\n if (config.source.length !== config.destination.length)\n throw new Error('Source and destination length should be same');\n\n const typeOrder = config.source.map((item) => item[config.key]);\n\n const sortedMergedConfigData = config.destination.sort((a, b) => {\n return typeOrder.indexOf(a[config.key]) - typeOrder.indexOf(b[config.key]);\n });\n\n return sortedMergedConfigData;\n}\n\n/**\n * Returns a list of unique objects based on the specified key.\n *\n * @template DType - The type of the objects in the list.\n * @param {DType[]} data - The list of objects.\n * @param {keyof DType} key - The key to determine uniqueness.\n * @returns {DType[]} - The list of unique objects.\n */\nexport function sortData<T>(config: {\n data: T[];\n sequence: T[keyof T][];\n key: keyof T;\n}): T[] {\n const { data, sequence, key } = config;\n\n // Create a map of the sequence order for quick lookup\n const sequenceOrder = new Map<T[keyof T], number>(\n sequence.map((key, index) => [key, index]),\n );\n\n // Sort the data based on the sequence order\n const sortedData = data.sort((a, b) => {\n const indexA = sequenceOrder.get(a[key]);\n const indexB = sequenceOrder.get(b[key]);\n\n // If the key is not found in the sequence, place it at the end\n const orderA = indexA !== undefined ? indexA : sequence.length;\n const orderB = indexB !== undefined ? indexB : sequence.length;\n\n return orderA - orderB;\n });\n\n return sortedData;\n}\n","// eslint-disable-next-line check-file/filename-naming-convention\nimport { useCallback, useMemo } from 'react';\nimport { useSelector } from 'react-redux';\n\nimport { DocumentKeys } from '../appConfig.type';\nimport { numberToText, ordinalWords } from '../constants/numbers.const';\nimport {\n FORM_MODE,\n VERIFICATION_FAILED_IDS,\n selectManualForm,\n} from '../redux/slices/manualSlice';\nimport { selectPageConfig } from '../redux/slices/moduleSlice';\nimport { React_Form_IDS } from '../types/pages.type';\nimport {\n changeWordFromString,\n replaceIfExistInList,\n} from '../utils/object.util';\n\nimport type { DocumentTypes, IIdCardPageConfig } from '../appConfig.type';\nimport type { ManualReduxFormKeys } from '../redux/slices/manualSlice';\n\nexport const useManualFactory = () => {\n const { pageConfigs } = useSelector(selectPageConfig);\n\n const reduxForm = useSelector(selectManualForm);\n\n const personalSequence = (index?: number) => {\n const ind = Object.keys(reduxForm?.data).indexOf(React_Form_IDS.PERSONAL);\n return { index: ind, isValidIndex: ind === index };\n };\n\n const modifyLabel = useCallback(\n (label: string): string => {\n let currentLabel = replaceIfExistInList(\n label,\n numberToText,\n reduxForm.numberOfIdsRequired,\n );\n if (reduxForm.numberOfIdsRequired > 1) {\n [\n {\n key: 'document',\n value: 'documents',\n },\n {\n key: 'form',\n value: 'forms',\n },\n ].forEach(({ key, value }) => {\n currentLabel = changeWordFromString(currentLabel, [key], value);\n });\n }\n return currentLabel;\n },\n [reduxForm.numberOfIdsRequired],\n );\n\n const insertedDocuments = useMemo(\n () =>\n Object.entries(reduxForm?.data)\n ?.filter((item) =>\n Object.values(DocumentKeys).includes(item[0] as DocumentKeys),\n )\n .map(([key, value]) => ({ key, value })) ?? [],\n [reduxForm?.data],\n );\n\n const isAnyEditableDoc = useCallback(\n () =>\n Object.entries(reduxForm?.data ?? {})?.some(\n (item) => item?.[1]?.mode === FORM_MODE.EDIT,\n ),\n [reduxForm.data],\n );\n\n const isEditMode = useCallback(\n (id: ManualReduxFormKeys) =>\n Object.entries(reduxForm.data)?.find(([key]) => key == id)?.[1].mode ===\n FORM_MODE.EDIT,\n [reduxForm.data],\n );\n\n const numberOfIdsRequire = useMemo(\n () => reduxForm.numberOfIdsRequired,\n [reduxForm.numberOfIdsRequired],\n );\n\n const isAdditionaDoc = (isLabelValidation = false) => {\n const requiredIds =\n pageConfigs[React_Form_IDS.DOCUMENT]?.['numberOfIDs'] ?? 1;\n const isLabelValid = isLabelValidation\n ? reduxForm.pageHistory.length > requiredIds\n : true;\n return (\n pageConfigs.currentModule === React_Form_IDS.RETRY &&\n !isAnyEditableDoc() &&\n insertedDocuments.length >= requiredIds &&\n isLabelValid && // Additional Id alwys show after all doucments\n reduxForm.mode !== FORM_MODE.EDIT &&\n insertedDocuments.every((doc) => doc.value.dirty === false) &&\n reduxForm.failedType === VERIFICATION_FAILED_IDS.ID\n );\n };\n\n const modifyConfig = () => {\n const moduleDesc =\n pageConfigs[pageConfigs.currentModule]['descriptions'] ?? [];\n const fDesc = moduleDesc?.slice(0, 1);\n\n // Remarks: Making change description based on the number of ids\n // Example: if we have numberOfIDs=4/10/...., then we have to updated description `We need four .....`, `We need ten ....`\n // pageConfigs[pageConfigs.currentModule]?.['numberOfIDs']\n\n const desc =\n pageConfigs[pageConfigs.currentModule]?.['type'] === 'manual'\n ? ([\n fDesc?.[0]\n ? {\n ...fDesc?.[0],\n\n label: modifyLabel(fDesc?.[0]?.['label']),\n }\n : {},\n ...moduleDesc.slice(1),\n ] as IIdCardPageConfig['descriptions'][])\n : [fDesc?.[0], ...moduleDesc.slice(1)];\n\n return {\n ...pageConfigs[pageConfigs.currentModule],\n descriptions: desc,\n } as IIdCardPageConfig;\n };\n\n const isDocVisible = (\n docType: DocumentTypes,\n isBack: boolean | ManualReduxFormKeys,\n ) => {\n const createdDocs = insertedDocuments.filter(\n (item) => item?.value?.mode !== FORM_MODE.EDIT,\n );\n const currentDocument = createdDocs.find((item) => item.key === docType);\n const isExistInPagination = !!reduxForm.pageHistory.find(\n (item) => item.id === docType,\n );\n\n if (reduxForm?.mode === FORM_MODE.EDIT) {\n return createdDocs?.length ? !currentDocument : true;\n } else if (pageConfigs.currentModule === React_Form_IDS.RETRY) {\n const docExist =\n createdDocs?.[reduxForm.pageHistory?.length]?.key === docType;\n return docExist || !currentDocument;\n } else if (isBack) {\n return reduxForm.pageHistory.length\n ? !reduxForm.pageHistory\n .filter((i) => i.id !== isBack)\n .find((item) => item.id === docType)\n : true;\n } else {\n return reduxForm.pageHistory.length ? !isExistInPagination : true;\n }\n };\n\n const isFocused = (docType: DocumentTypes) => {\n const createdDocs = insertedDocuments.filter(\n (item) => item?.value?.mode !== FORM_MODE.EDIT,\n );\n\n if (\n pageConfigs.currentModule == React_Form_IDS.RETRY &&\n reduxForm.mode !== FORM_MODE.EDIT\n ) {\n return createdDocs?.[reduxForm.pageHistory?.length]?.key === docType;\n }\n\n return isAnyEditableDoc()\n ? isEditMode(docType as ManualReduxFormKeys)\n : undefined;\n };\n\n const getModifiedLabel = (\n prev?: IIdCardPageConfig,\n documents: IIdCardPageConfig['documents'] = [],\n ) => {\n const changeLabelIfExist = (objLen?: number) => {\n const visibleDocLen = documents.reduce(\n (acc, item) => acc + (item?.['visible'] ? 1 : 0),\n 0,\n );\n\n const requiredDocLen = reduxForm.numberOfIdsRequired;\n const docDiff = visibleDocLen - requiredDocLen;\n let objLength = 0;\n\n // If we have more than required documents then we have to show the remaining documents\n // Example: if we have 4 required documents and we have 6 documents, then we have to show 2 remaining documents\n if (documents.length > requiredDocLen) {\n objLength = documents.length - requiredDocLen - docDiff;\n } else {\n objLength = Math.abs(docDiff);\n }\n\n return replaceIfExistInList(\n pageConfigs.currentModule === React_Form_IDS.RETRY\n ? pageConfigs[React_Form_IDS.DOCUMENT].title.label\n : prev?.title?.label,\n ordinalWords,\n objLen ?? objLength,\n );\n };\n\n let editModeIndex = 0;\n for (const iDItem of insertedDocuments) {\n if (iDItem?.value?.mode === FORM_MODE.EDIT) break;\n editModeIndex = editModeIndex + 1;\n }\n\n if (isAnyEditableDoc()) {\n const newLabel =\n insertedDocuments?.length > 1 && numberOfIdsRequire > 1\n ? ordinalWords[editModeIndex]\n : '';\n return `Edit your ${newLabel} ID`;\n } else if (\n pageConfigs.currentModule === React_Form_IDS.RETRY &&\n reduxForm.mode !== FORM_MODE.EDIT\n ) {\n const docLabelConfig = () => {\n const currLabel = changeWordFromString(\n changeLabelIfExist(reduxForm.pageHistory?.length ?? 0),\n ['Select'],\n 'Review',\n );\n\n return numberOfIdsRequire < 2\n ? changeWordFromString(currLabel, ordinalWords, '')\n : currLabel;\n };\n switch (reduxForm.currentForm) {\n case React_Form_IDS.RETRY:\n return personalSequence(0).isValidIndex\n ? `Review ${pageConfigs[React_Form_IDS.PERSONAL].title.label.toLowerCase()}`\n : docLabelConfig();\n case React_Form_IDS.DOCUMENT:\n return docLabelConfig();\n case React_Form_IDS.PERSONAL:\n return `Review ${pageConfigs[React_Form_IDS.PERSONAL].title.label.toLowerCase()}`;\n default: {\n const doc = pageConfigs[React_Form_IDS.DOCUMENT].documents.find(\n (item) => item.type === reduxForm.currentForm,\n );\n return `Review ${doc?.['title']?.['label']}`;\n }\n }\n } else {\n return numberOfIdsRequire < 2\n ? changeWordFromString(changeLabelIfExist(), ordinalWords, '')\n : changeLabelIfExist();\n }\n };\n\n const modifyDocConfig = (\n prev: IIdCardPageConfig,\n isBack: boolean | ManualReduxFormKeys = false,\n ) => {\n const documents = prev.documents.map((doc) => ({\n ...doc,\n subtitle: reduxForm?.mode === FORM_MODE.EDIT ? '' : doc.subtitle,\n visible: isDocVisible(doc.type, isBack),\n focus: isFocused(doc.type),\n }));\n\n return {\n ...prev,\n title: {\n ...prev.title,\n label: getModifiedLabel(prev, documents),\n },\n\n documents,\n };\n };\n\n const isAdditionaIdSelectionScreen = (config: IIdCardPageConfig) => {\n const focusedDoc = modifyDocConfig(config).documents.find(\n (doc) => doc?.focus === true,\n );\n return (\n reduxForm.mode !== FORM_MODE.EDIT &&\n !insertedDocuments.find((i) => i.key === focusedDoc?.type)\n );\n };\n\n return {\n modifyDocConfig,\n modifyConfig,\n insertedDocuments,\n isAnyEditableDoc,\n isEditMode,\n isDocVisible,\n isFocused,\n isAdditionaDoc,\n getModifiedLabel,\n isAdditionaIdSelectionScreen,\n personalSequence,\n };\n};\n","import clsx from 'clsx';\nimport { useMemo, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport {\n DocumentKeys,\n type DocumentTypes,\n type IDocuments,\n type IIdCardPageConfig,\n} from '../../appConfig.type';\nimport FrankieCardList from '../../components/view/FrankieCardList/FrankieCardList';\nimport FrankieDescription from '../../components/view/FrankieDescription/FrankieDescription';\nimport Heading from '../../components/view/FrankieHeading/Heading';\nimport Wrapper from '../../components/view/Wrapper/Wrapper';\nimport { commonInfo } from '../../constants/locale.const';\nimport { useEventHandler } from '../../hooks/useEventContext';\nimport { useManualFactory } from '../../hooks/useManualWrapperFactory.hook';\nimport {\n FORM_MODE,\n clearAllHistory,\n selectManualForm,\n updateFormState,\n} from '../../redux/slices/manualSlice';\nimport { selectPageConfig } from '../../redux/slices/moduleSlice';\nimport { React_Form_IDS } from '../../types/pages.type';\nimport IdPrep from '../IdPreps/IdPrep';\n\nimport type { IDCardScreen } from '../../appConfig.type';\nimport type { ManualReduxFormKeys } from '../../redux/slices/manualSlice';\n\ntype Props<CType extends IDCardScreen> = {\n config: IIdCardPageConfig<CType>;\n backButton?: boolean;\n testid?: {\n mockImg?: string | null;\n };\n};\n\nconst IdSelection = <CType extends IDCardScreen>({\n config,\n backButton,\n testid = {\n mockImg: null,\n },\n}: Props<CType>) => {\n const { pageConfigs } = useSelector(selectPageConfig);\n\n const { documentReady, idvEventEmitter } = useEventHandler();\n const { isAdditionaIdSelectionScreen } = useManualFactory();\n const dispatch = useDispatch();\n const [prepScreen, setPrepScreen] = useState<DocumentTypes>();\n\n const reduxForm = useSelector(selectManualForm);\n\n const handlePrepScreen = (id: IDocuments) => {\n if (config?.showPreps) {\n setPrepScreen(id.type);\n } else {\n handleSubmit(id);\n }\n };\n\n const handleSubmit = (id?: IDocuments) => {\n const document = id?.type || prepScreen;\n if (config?.type === 'ocr') {\n documentReady(document);\n } else {\n idvEventEmitter({\n eventCategory: 'global',\n extraEventInfo: {\n name: React_Form_IDS.DOCUMENT,\n index:\n config?.documents?.findIndex((doc) => doc.type === document) + 1,\n },\n eventType: 'navigate',\n });\n dispatch(updateFormState({ currentForm: DocumentKeys[document] }));\n }\n };\n\n const isEditMode = useMemo(\n () => reduxForm.mode == FORM_MODE.EDIT,\n [reduxForm.mode],\n );\n\n const handleBack = () => {\n if (backButton) {\n if (\n isEditMode ||\n reduxForm.pageHistory.length > 0 ||\n pageConfigs?.currentModule === React_Form_IDS.RETRY\n ) {\n const firstPage =\n reduxForm.pageHistory?.[0]?.id ??\n (pageConfigs?.currentModule === React_Form_IDS.RETRY\n ? React_Form_IDS.RETRY\n : React_Form_IDS.REVIEW);\n\n const formScreens: ManualReduxFormKeys[] = [\n React_Form_IDS.RETRY,\n React_Form_IDS.PERSONAL,\n ];\n\n if (!isEditMode && formScreens.includes(firstPage)) {\n dispatch(clearAllHistory({ clearFormState: true }));\n }\n\n dispatch(\n updateFormState({\n currentForm: isEditMode ? React_Form_IDS.REVIEW : firstPage,\n }),\n );\n } else {\n idvEventEmitter({\n eventType: 'back',\n });\n }\n }\n };\n\n // Get the label for the current screen\n const getIdSelectionLabel = () => {\n if (pageConfigs.currentModule === React_Form_IDS.RETRY) {\n if (isAdditionaIdSelectionScreen(config)) {\n return commonInfo.additionInfo.label;\n }\n return config?.title?.label;\n } else {\n return config?.title?.label;\n }\n };\n\n if (!config) return null;\n\n if (prepScreen) return <IdPrep onSubmit={handleSubmit} id={prepScreen} />;\n\n return (\n <Wrapper\n hideCTA\n inputClass={clsx(\n { '!f1-pt-[24px]': backButton },\n { 'tablet:!f1-pt-[49px]': backButton },\n )}\n renderScreen={() => {\n return (\n <>\n <Heading\n label={getIdSelectionLabel()}\n style={config?.title?.['style']}\n onBack={backButton ? () => handleBack() : undefined}\n className={clsx(backButton ? `f1-mb-[8px]` : '')}\n />\n <FrankieDescription descriptions={config?.descriptions ?? []} />\n <FrankieCardList\n content={config?.documents}\n subtitle={config?.subtitle}\n onSelect={handlePrepScreen}\n testid={{ mockImg: testid?.mockImg }}\n />\n </>\n );\n }}\n />\n );\n};\n\nexport default IdSelection;\n","/* eslint-disable check-file/filename-naming-convention */\nimport { icons } from '../../constants/icons';\n\nimport type { IIdCardPageConfig } from '../../appConfig.type';\n\nexport const idSelectionPage = {\n name: 'DOCUMENT',\n mode: 'individual',\n type: 'ocr',\n title: {\n label: 'Choose Your ID',\n },\n subtitle: {\n label: 'Your ID must be valid and not expired',\n },\n descriptions: [\n {\n label:\n \"We'll need at least one of the following documents to verify your identity.\",\n },\n ],\n documents: [\n {\n type: 'DRIVERS_LICENCE',\n label: \"Driver's licence\",\n subtitle: '(recommended)',\n postIcon: icons.rightArrowIcon,\n icon: icons.driverLicenseIcon,\n },\n {\n type: 'PASSPORT',\n label: 'Passport',\n postIcon: icons.rightArrowIcon,\n icon: icons.passportIcon,\n },\n {\n type: 'NATIONAL_HEALTH_ID',\n label: 'Medicare card',\n postIcon: icons.rightArrowIcon,\n icon: icons.medicalIcon,\n },\n ],\n} satisfies IIdCardPageConfig;\n","import { icons } from '../../constants/icons';\n\nimport type { IStaticPageConfig } from '../../appConfig.type';\n\nexport const welcomePage = {\n name: 'WELCOME',\n mode: 'individual',\n title: { label: `Let's verify your identity`, style: {} },\n type: 'ocr',\n descriptions: [\n {\n label:\n 'We need to collect some personal information to verify your identity. It’s important you enter your details as accurately as possible.',\n style: {},\n },\n ],\n instructions: {\n label: 'You will need',\n content: [\n {\n icon: icons.checkbox,\n label: `An ID on you (this could be a driver’s licence, passport or Medicare card)`,\n style: {},\n },\n {\n icon: icons.checkbox,\n label:\n 'Grant access permission on the camera of your phone so we can capture your ID',\n style: {},\n },\n {\n icon: icons.checkbox,\n label:\n 'You must be an Australian citizen, permanent resident or Visa holder.',\n style: {},\n },\n ],\n },\n cta: { label: 'Start identity verification', style: {} },\n style: {},\n} satisfies IStaticPageConfig;\n// use satisfied for avoiding global runtime errors\n// it will impact WELCOME component if you will be [const obj: IStaticPageConfig = { ... }]\n","/* eslint-disable max-len */\nimport clsx from 'clsx';\nimport { useCallback } from 'react';\n\nimport { ConfigCSSKeys } from '../../../appConfig.type';\nimport { RESULT_STATE } from '../../../appConfig.type';\nimport { icons } from '../../../constants/icons';\n\nimport type { IProgressPageConfig } from '../../../appConfig.type';\n\nexport type ProgressProps = Partial<IProgressPageConfig> & {\n isLoading?: boolean;\n isSuccess?: boolean;\n state?: keyof typeof RESULT_STATE;\n inputClass?: string;\n labelClass?: string;\n descriptionClass?: string;\n progressWrapperClass?: string;\n};\n\nconst Progress = ({\n descriptions,\n style,\n title,\n state = null,\n isLoading = true,\n inputClass = '',\n labelClass = '',\n descriptionClass = '',\n progressWrapperClass = '',\n}: ProgressProps) => {\n const renderDescription = useCallback(\n (description: ProgressProps['descriptions'][0], idx: number) => (\n <div\n key={`fallback-list-${idx}`}\n className={clsx(\n 'f1-mb-1',\n ConfigCSSKeys.progressItem,\n descriptionClass,\n )}\n style={description?.style?.[ConfigCSSKeys.progressItem]}\n >\n {description?.label}\n </div>\n ),\n [],\n );\n\n if (!isLoading) return null;\n\n const IconMapper = {\n [RESULT_STATE.SUCCESS]: icons.successIcon,\n [RESULT_STATE.FAIL]: icons.failedIcon,\n [RESULT_STATE.PENDING]: icons.pendingIcon,\n [RESULT_STATE.PARTIAL]: icons.retryIcon,\n [RESULT_STATE.UPLOAD_SUCCESS]: icons.fileDocumentCheckOutline,\n [RESULT_STATE.UPLOAD_FAIL]: icons.fileDocumentAlertOutline,\n } satisfies Record<RESULT_STATE, string>;\n\n return (\n <div\n className={clsx(\n 'f1-top-0',\n 'f1-left-0',\n 'f1-text-tertiary-grey-800',\n 'f1-flex',\n 'f1-justify-center',\n 'f1-items-center',\n 'f1-z-50',\n 'f1-bg-mono-white',\n ConfigCSSKeys.progressWrapper,\n inputClass,\n )}\n style={style?.[ConfigCSSKeys.progressWrapper]}\n >\n <div\n className={clsx(\n 'f1-flex',\n 'f1-flex-col',\n 'f1-content-center',\n 'f1-items-center',\n 'f1-px-6',\n 'f1-text-center',\n progressWrapperClass,\n )}\n >\n {/* We can use image directly, because we are using class in it */}\n {state === null ? (\n <svg\n aria-hidden=\"true\"\n className={clsx(\n 'f1-inline',\n 'f1-animate-spin',\n 'f1-fill-primary-600',\n 'f1-h-24',\n 'f1-w-24',\n ConfigCSSKeys.loading,\n )}\n style={style?.[ConfigCSSKeys.loading]}\n viewBox=\"0 0 100 101\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z\"\n fill=\"#e5e7eb\"\n />\n <path\n d=\"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z\"\n fill=\"currentFill\"\n />\n </svg>\n ) : (\n <img src={IconMapper[state]} alt=\"state icon\" />\n )}\n\n <div\n className={clsx(\n 'f1-font-bold',\n 'f1-mt-8',\n title?.style?.[ConfigCSSKeys.title],\n labelClass,\n )}\n >\n {title?.label}\n </div>\n <div\n className={clsx(\n 'f1-mt-4',\n 'f1-text-ter',\n title?.style?.[ConfigCSSKeys.subtitle],\n )}\n >\n {descriptions?.map(renderDescription)}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Progress;\n","import type { DocumentType } from '@module/common/shared/models/SupportingDocument';\nimport { Fail } from '@module/form/vendors/react/features/DocUpload/FileUploader/Fail';\nimport { Main } from '@module/form/vendors/react/features/DocUpload/FileUploader/Main';\nimport { Preview } from '@module/form/vendors/react/features/DocUpload/FileUploader/Preview';\nimport { Progress } from '@module/form/vendors/react/features/DocUpload/FileUploader/Progress';\nimport { Review } from '@module/form/vendors/react/features/DocUpload/FileUploader/Review';\nimport { Success } from '@module/form/vendors/react/features/DocUpload/FileUploader/Success';\n\nexport type FileBucketItem = {\n file: File;\n type: DocumentType;\n};\n\nconst FileUploader = {\n Main,\n Preview,\n Review,\n Progress,\n Success,\n Fail,\n};\n\nexport default FileUploader;\n","import clsx from 'clsx';\nimport { type ChangeEvent, type DragEvent, useRef, useState } from 'react';\n\nimport type {\n DocUploadRules,\n DocUploadScreen,\n ListInfo,\n} from '@module/form/vendors/react/appConfig.type';\nimport { CloudUploadOutline } from '@module/form/vendors/react/constants/icons';\n\nexport const Main = ({\n instructions,\n rules,\n onFileSelect,\n}: {\n instructions: ListInfo<DocUploadScreen>;\n rules: DocUploadRules;\n onFileSelect: (file: File) => void;\n}) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const [error, setError] = useState<string>('');\n\n const maxSizeValue = rules?.max_size?.['value'] ?? 20;\n const maxSizeErrorMessage =\n rules?.max_size?.['message'] ??\n `File size exceeds the maximum limit. Please upload a file less than 20MB.`;\n\n const validateMaxSize = (file: File): boolean => {\n const fileSize = file.size / 1024 / 1024;\n return fileSize <= maxSizeValue;\n };\n\n const mimeValue = rules?.mime?.['value'] ?? {\n 'image/jpeg': true,\n 'image/png': true,\n 'image/gif': true,\n 'image/webp': true,\n 'image/tiff': true,\n 'image/bmp': true,\n 'application/pdf': true,\n };\n const mimeErrorMessage =\n rules?.mime?.['message'] ??\n `File type not supported. Please upload a PNG, JPG or PDF file.`;\n\n const supportedMime = Object.keys(mimeValue)\n .filter((format: string) => mimeValue[format])\n .join(',');\n\n const validateMime = (file: File): boolean => {\n return supportedMime.includes(file.type);\n };\n\n const handleDrop = (event: DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n handleFileSelection(event.dataTransfer.files[0]);\n };\n\n const handleClick = (event: ChangeEvent<HTMLInputElement>) => {\n handleFileSelection(event.target.files[0]);\n };\n\n // It validates the file size and file type\n // If the file is valid, it calls the onFileSelect function\n // Otherwise, it sets the error message\n // The error message is cleared when a valid file is selected\n const handleFileSelection = (file: File) => {\n if (!validateMaxSize(file)) {\n setError(maxSizeErrorMessage);\n } else if (!validateMime(file)) {\n setError(mimeErrorMessage);\n } else {\n setError('');\n onFileSelect(file);\n }\n };\n\n return (\n <>\n <div\n className={clsx([\n error ? 'f1-border-tertiary-red-500' : 'f1-border-tertiary-grey-50',\n 'f1-border-2',\n 'f1-border-solid',\n 'f1-mt-5',\n 'f1-w-[calc(100%-2rem-4px)]',\n 'f1-h-96',\n 'f1-p-4',\n 'f1-bg-tertiary-grey-50',\n 'f1-rounded-lg',\n 'f1-flex-col',\n 'f1-justify-center',\n 'f1-items-center',\n 'f1-gap-2.5',\n 'f1-inline-flex',\n 'f1-cursor-pointer',\n ])}\n onClick={() => inputRef.current.click()}\n onDrop={handleDrop}\n onDragOver={(event: DragEvent<HTMLDivElement>) =>\n event.preventDefault()\n }\n >\n <div\n className={clsx([\n 'f1-self-stretch',\n 'f1-grow',\n 'f1-shrink',\n 'f1-basis-0',\n 'f1-p-4',\n 'f1-rounded-md',\n 'f1-border',\n 'f1-border-tertiary-grey-200',\n 'f1-border-dashed',\n 'f1-flex-col',\n 'f1-justify-center',\n 'f1-items-center',\n 'f1-gap-2.5',\n 'f1-flex',\n ])}\n >\n <div\n className={clsx([\n 'f1-flex-col',\n 'f1-justify-start',\n 'f1-items-center',\n 'f1-gap-1.5',\n 'f1-flex',\n ])}\n >\n <CloudUploadOutline\n className={clsx([\n 'f1-w-10',\n 'f1-h-10',\n 'f1-relative',\n 'f1-fill-tertiary-grey-400',\n ])}\n />\n <div\n className={clsx([\n 'f1-text-center',\n 'f1-text-tertiary-grey-500',\n 'f1-text-sm',\n 'f1-font-semibold',\n 'f1-leading-tight',\n ])}\n >\n {instructions ? instructions.label : 'Click or drag to upload'}\n </div>\n <div\n className={clsx([\n 'f1-text-center',\n 'f1-text-tertiary-grey-500',\n 'f1-text-xs',\n 'f1-font-normal',\n 'f1-leading-none',\n ])}\n >\n {instructions?.content && instructions.content.length > 0\n ? instructions.content.map(({ label }) => label)\n : `PNG, JPG or PDF (Max. file size: ${maxSizeValue}MB)`}\n </div>\n </div>\n <input\n ref={inputRef}\n hidden\n type=\"file\"\n onChange={handleClick}\n accept={supportedMime}\n />\n </div>\n </div>\n {error && (\n <div\n className={clsx([\n 'f1-mt-2',\n 'f1-text-tertiary-red-600',\n 'f1-text-xs',\n 'f1-font-normal',\n 'f1-leading-normal',\n ])}\n >\n {error}\n </div>\n )}\n </>\n );\n};\n","import clsx from 'clsx';\n\nexport const Preview = ({\n file,\n onFileRemove,\n}: {\n file: File;\n onFileRemove: () => void;\n}) => {\n return (\n <>\n <div\n className={clsx([\n 'f1-mt-5',\n 'f1-text-tertiary-grey-700',\n 'f1-text-base',\n 'f1-font-semibold',\n 'f1-leading-normal',\n ])}\n >\n File added:{' '}\n <span className={clsx(['f1-font-normal'])}>{file.name}</span>\n </div>\n <div\n className={clsx([\n 'f1-mt-5',\n 'f1-text-primary-800',\n 'f1-text-base',\n 'f1-font-normal',\n 'f1-leading-normal',\n 'f1-cursor-pointer',\n ])}\n onClick={() => onFileRemove()}\n >\n Upload a different file\n </div>\n </>\n );\n};\n","import clsx from 'clsx';\n\nimport { PencilOutline } from '@module/form/vendors/react/constants/icons';\nimport type { FileBucketItem } from '@module/form/vendors/react/features/DocUpload/FileUploader/index';\nimport { getReadableDocType } from '@module/form/vendors/react/utils/object.util';\n\nexport const Review = ({\n files,\n onEdit,\n}: {\n files: FileBucketItem[];\n onEdit: (index: number) => void;\n}) => {\n return (\n <>\n {files.map(({ file, type }, index) => (\n <div\n key={index}\n className={clsx([\n 'f1-w-full',\n 'f1-flex-col',\n 'f1-justify-start',\n 'f1-items-start',\n 'f1-gap-1.5',\n 'f1-inline-flex',\n ])}\n >\n <div\n className={clsx([\n 'f1-self-stretch',\n 'f1-justify-start',\n 'f1-items-center',\n 'f1-gap-4',\n 'f1-inline-flex',\n ])}\n >\n <div\n className={clsx([\n 'f1-grow',\n 'f1-shrink',\n 'f1-basis-0',\n 'f1-text-tertiary-grey-800',\n 'f1-text-lg',\n 'f1-font-semibold',\n 'f1-leading-relaxed',\n ])}\n >\n {getReadableDocType(type)}\n </div>\n <div\n className={clsx([\n 'f1-justify-start',\n 'f1-items-center',\n 'f1-gap-1',\n 'f1-flex',\n 'f1-cursor-pointer',\n ])}\n onClick={() => onEdit(index)}\n >\n <PencilOutline\n className={clsx([\n 'f1-w-4',\n 'f1-h-4',\n 'f1-relative',\n 'f1-fill-primary-800',\n ])}\n />\n <div\n className={clsx([\n 'f1-text-primary-800',\n 'f1-text-sm',\n 'f1-font-semibold',\n 'f1-leading-tight',\n ])}\n >\n Edit\n </div>\n </div>\n </div>\n <div\n className={clsx([\n 'f1-self-stretch',\n 'f1-flex-col',\n 'f1-justify-start',\n 'f1-items-start',\n 'f1-gap-2',\n 'f1-flex',\n ])}\n >\n <div\n className={clsx([\n 'f1-self-stretch',\n 'f1-text-tertiary-grey-700',\n 'f1-text-base',\n 'f1-font-normal',\n 'f1-leading-normal',\n ])}\n >\n {file.name}\n </div>\n </div>\n {index < files.length - 1 && (\n <div className={clsx(['f1-w-full', 'f1-py-4'])}>\n <div\n className={clsx([\n 'f1-flex-grow',\n 'f1-border-t',\n 'f1-border-solid',\n 'f1-border-tertiary-grey-200',\n ])}\n ></div>\n </div>\n )}\n </div>\n ))}\n </>\n );\n};\n","import clsx from 'clsx';\n\nimport type { FileBucketItem } from '@module/form/vendors/react/features/DocUpload/FileUploader/index';\n\nexport const Progress = ({\n files,\n completed,\n}: {\n files: FileBucketItem[];\n completed: number;\n}) => {\n return (\n <>\n <div\n className={clsx([\n 'f1-w-[calc(100%-2rem-4px)]',\n 'f1-border-2',\n 'f1-border-solid',\n 'f1-border-tertiary-grey-50',\n 'f1-h-96',\n 'f1-p-4',\n 'f1-bg-tertiary-grey-50',\n 'f1-rounded-lg',\n 'f1-flex-col',\n 'f1-justify-center',\n 'f1-items-center',\n 'f1-gap-6',\n 'f1-inline-flex',\n ])}\n >\n <div\n className={clsx([\n 'f1-w-full',\n 'f1-h-7',\n 'f1-flex-col',\n 'f1-justify-start',\n 'f1-items-end',\n 'f1-gap-1',\n 'f1-flex',\n ])}\n >\n <div\n className={clsx([\n 'f1-self-stretch',\n 'f1-justify-center',\n 'f1-items-center',\n 'f1-inline-flex',\n ])}\n >\n <div\n className={clsx([\n 'f1-grow',\n 'f1-shrink',\n 'f1-basis-0',\n 'f1-text-center',\n 'f1-text-tertiary-grey-500',\n 'f1-text-xs',\n 'f1-font-medium',\n 'f1-leading-none',\n ])}\n >\n {completed}%\n </div>\n </div>\n <div\n className={clsx([\n 'f1-mx-8',\n 'f1-self-stretch',\n 'f1-h-1.5',\n 'f1-bg-tertiary-grey-200',\n 'f1-rounded-sm',\n ])}\n />\n <div\n className={clsx([\n 'f1-self-stretch',\n 'f1-mx-8',\n 'f1--mt-2.5',\n 'f1-h-1.5',\n 'f1-bg-primary-600',\n 'f1-rounded-sm',\n ])}\n style={{\n width: `calc(${completed}% - ${(completed / 100) * 4}rem)`,\n }}\n />\n </div>\n <div\n className={clsx([\n 'f1-text-center',\n 'f1-text-tertiary-grey-700',\n 'f1-text-base',\n 'f1-font-medium',\n 'f1-leading-normal',\n ])}\n >\n Uploading {files.length} documents\n </div>\n </div>\n </>\n );\n};\n","import clsx from 'clsx';\n\nimport { RESULT_STATE } from '@module/form/vendors/react/appConfig.type';\nimport Progress from '@module/form/vendors/react/components/view/Progress/Progress';\n\nexport const Success = () => {\n return (\n <div\n style={{\n height: 'calc(100vh - 282px)',\n display: 'flex',\n justifyContent: 'center',\n }}\n >\n <Progress\n state={RESULT_STATE.UPLOAD_SUCCESS}\n title={{\n label: `Thanks, your document has been uploaded`,\n }}\n labelClass={clsx(['f1-text-2xl', 'f1-leading-9'])}\n descriptions={[\n {\n label: `You’re all done, and can close the page.`,\n },\n ]}\n />\n </div>\n );\n};\n","import clsx from 'clsx';\n\nimport { RESULT_STATE } from '@module/form/vendors/react/appConfig.type';\nimport Progress from '@module/form/vendors/react/components/view/Progress/Progress';\n\nexport const Fail = ({ retries }: { retries: number }) => {\n return (\n <div\n style={{\n height: 'calc(100vh - 282px)',\n display: 'flex',\n justifyContent: 'center',\n }}\n >\n <Progress\n state={RESULT_STATE.UPLOAD_FAIL}\n title={{\n label: `There was an issue uploading your document`,\n }}\n labelClass={clsx(['f1-text-2xl', 'f1-leading-9'])}\n descriptions={\n retries > 1\n ? [\n {\n label: `This could be a technical issue with the upload. Please reach out to customer support for assistance, or try again.`,\n },\n ]\n : [\n {\n label: `This could be a technical issue with the upload. Please retry submitting document.`,\n },\n ]\n }\n />\n </div>\n );\n};\n","import { useEffect, useMemo, useState } from 'react';\nimport { useSelector } from 'react-redux';\n\nimport type { DocumentType } from '@module/common/shared/models/SupportingDocument';\nimport type { DocUploadPageConfig } from '@module/form/vendors/react/appConfig.type';\nimport FrankieDescription from '@module/form/vendors/react/components/view/FrankieDescription/FrankieDescription';\nimport Heading from '@module/form/vendors/react/components/view/FrankieHeading/Heading';\nimport Wrapper from '@module/form/vendors/react/components/view/Wrapper/Wrapper';\nimport FileUploader from '@module/form/vendors/react/features/DocUpload/FileUploader';\nimport { useEventHandler } from '@module/form/vendors/react/hooks/useEventContext';\nimport { selectPageConfig } from '@module/form/vendors/react/redux/slices/moduleSlice';\nimport { React_Form_IDS } from '@module/form/vendors/react/types/pages.type';\nimport { getReadableDocType } from '@module/form/vendors/react/utils/object.util';\n\nimport type { Key } from 'react';\n\ntype FileBucketItem = {\n file: File;\n type: DocumentType;\n};\n\nconst DocUpload = () => {\n const [viewIndex, setViewIndex] = useState<number>(0);\n const [fileBucket, setFileBucket] = useState<FileBucketItem[]>([]);\n const [isEditing, setIsEditing] = useState<boolean>(false);\n const [progress, setProgress] = useState<number>(0);\n const [uploaded, setUploaded] = useState<number>(0);\n const [hasFailed, setHasFailed] = useState<boolean>(false);\n const [hasSuccess, setHasSuccess] = useState<boolean>(false);\n const [retires, setRetires] = useState<number>(0);\n\n const { pageConfigs } = useSelector(selectPageConfig);\n const config = pageConfigs[React_Form_IDS.DOC_UPLOAD];\n const { idvEventEmitter, oneSDK } = useEventHandler();\n\n // get the requested documents from the config\n // if the config is not available, try to get the requested documents\n // from the session extra data\n // if the extra data is not available, return an empty array\n const requestedDocs = useMemo((): DocUploadPageConfig<\n 'DOC_UPLOAD',\n 'manual'\n >['documents'] => {\n if (config?.documents) {\n return config.documents;\n }\n try {\n const { requestedDocuments } = oneSDK.session.getExtraData() || {\n requestedDocuments: '[]',\n };\n\n return JSON.parse(requestedDocuments).map(\n ({ documentType }: { documentType: DocumentType }) => {\n return {\n type: documentType,\n title: { label: `Upload ${getReadableDocType(documentType)}` },\n };\n },\n );\n } catch (e) {\n return [];\n }\n }, []);\n\n // when a file is selected, update the file bucket\n const handleFileSelect =\n (index: number, type: DocumentType) => (file: File) => {\n setFileBucket((prev) => {\n const updated = [...prev];\n updated[index] = { file, type };\n return updated;\n });\n };\n\n // when a file is removed, update the file bucket\n const handleFileRemove = (index: number) => () => {\n setFileBucket((prev) => {\n const updated = [...prev];\n updated[index] = null;\n return updated;\n });\n };\n\n // when the forward button is clicked in edit mode,\n // update the view index to the last index\n // otherwise, increment the view index\n const handleForward = (index: number) => {\n if (isEditing) {\n setViewIndex(requestedDocs.length);\n setIsEditing(false);\n } else {\n idvEventEmitter({\n eventCategory: 'global',\n extraEventInfo: {\n name: React_Form_IDS.DOC_UPLOAD,\n index: index + 1,\n },\n eventType: 'navigate',\n });\n setViewIndex((prev) => prev + 1);\n }\n };\n\n // when the backward button is clicked, decrement the view index\n const handleBackward = (index: number) => {\n setViewIndex(index - 1);\n };\n\n // when the edit button is clicked, set the view index to the index\n const handleEdit = (index: number) => {\n setIsEditing(true);\n setViewIndex(index);\n };\n\n // when the submit button is clicked, increment the view index\n const handleSubmit = () => {\n setViewIndex((prev) => prev + 1);\n };\n\n // when the upload progress is updated, update the progress state\n // if the upload is completed, increment the uploaded state\n // and reset the progress state\n const updateProgress = (completed: number) => {\n if (completed === 100) {\n setUploaded((prev) => prev + 100);\n setProgress(0);\n } else {\n setProgress(completed);\n }\n };\n\n const business = oneSDK.business();\n\n // when all files are uploaded, set the success state\n // if an error occurs, set the failed state\n const startUploadFiles = async () => {\n try {\n for (const { file, type } of fileBucket) {\n await business.upload(file, type);\n }\n setHasSuccess(true);\n } catch (e) {\n setHasFailed(true);\n setRetires((prev) => prev + 1);\n }\n };\n\n // when the failed state is clicked, reset the failed state\n // and set the view index to the review screen\n const handleFailedUpload = () => {\n setHasFailed(false);\n setViewIndex(fileBucket.length);\n idvEventEmitter({\n eventCategory: 'global',\n extraEventInfo: {\n name: React_Form_IDS.DOC_UPLOAD,\n },\n eventType: 'failed',\n });\n };\n\n // when the success state is clicked, emit the success and ready event\n const handleSuccessUpload = () => {\n idvEventEmitter({\n eventCategory: 'global',\n extraEventInfo: {\n name: React_Form_IDS.DOC_UPLOAD,\n },\n eventType: 'success',\n });\n idvEventEmitter({\n eventCategory: 'global',\n extraEventInfo: {\n name: React_Form_IDS.DOC_UPLOAD,\n },\n eventType: 'ready',\n });\n };\n\n // when the component mounts, listen for the upload progress event\n useEffect(() => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n business.on('upload_progress', ({ completed }: { completed: number }) => {\n updateProgress(completed);\n });\n }, []);\n\n // when the view index changes\n // and is greater than the requested documents length,\n // start uploading the files\n // else reset the progress and uploaded states\n useEffect(() => {\n if (viewIndex > requestedDocs.length) {\n startUploadFiles();\n } else {\n setProgress(0);\n setUploaded(0);\n }\n }, [viewIndex]);\n\n return (\n <>\n {requestedDocs.map(\n ({ type, title, descriptions, instructions, rules }, index: Key) => {\n return (\n index === viewIndex && (\n <Wrapper\n key={index}\n hideCTA={!fileBucket[index]}\n onSubmit={() => handleForward(index)}\n renderScreen={() => {\n return (\n <>\n <Heading\n label={title.label}\n onBack={\n index > 0 &&\n !isEditing &&\n (() => handleBackward(index))\n }\n />\n <FrankieDescription\n descriptions={\n descriptions?.length > 0\n ? descriptions\n : [\n {\n label: `Please upload your latest document in the required format.`,\n },\n ]\n }\n />\n {fileBucket[index] ? (\n <FileUploader.Preview\n file={fileBucket[index].file}\n onFileRemove={handleFileRemove(index)}\n />\n ) : (\n <FileUploader.Main\n instructions={instructions}\n rules={rules}\n onFileSelect={handleFileSelect(index, type)}\n />\n )}\n </>\n );\n }}\n />\n )\n );\n },\n )}\n {viewIndex === requestedDocs.length && (\n <Wrapper\n ctaInfo={{ cta: { label: 'Yes, submit documents', style: {} } }}\n onSubmit={handleSubmit}\n renderScreen={() => {\n return (\n <>\n <Heading label={`Are these documents correct?`} />\n <FileUploader.Review files={fileBucket} onEdit={handleEdit} />\n </>\n );\n }}\n />\n )}\n {!hasFailed && !hasSuccess && viewIndex > requestedDocs.length && (\n <Wrapper\n hideCTA={true}\n renderScreen={() => {\n return (\n <>\n <Heading label={`Uploading documents`} />\n <FileUploader.Progress\n files={fileBucket}\n completed={Math.round(\n (uploaded + progress) / fileBucket.length,\n )}\n />\n </>\n );\n }}\n />\n )}\n {hasFailed && (\n <Wrapper\n ctaInfo={{ cta: { label: 'Retry submitting document' } }}\n onSubmit={handleFailedUpload}\n renderScreen={() => <FileUploader.Fail retries={retires} />}\n />\n )}\n {hasSuccess && (\n <Wrapper\n ctaInfo={{ cta: { label: 'Done', style: {} } }}\n onSubmit={handleSuccessUpload}\n renderScreen={() => <FileUploader.Success />}\n />\n )}\n </>\n );\n};\n\nexport default DocUpload;\n","import { DocUploadPageConfig } from '../../appConfig.type';\n\nexport const docUploadPage: DocUploadPageConfig<'DOC_UPLOAD', 'manual'> = {\n name: 'DOC_UPLOAD',\n mode: 'business',\n type: 'manual',\n cta: { label: 'Next', style: {} },\n style: {},\n};\n","import type { IProgressPageConfig } from '../../appConfig.type';\n\nexport const loadingPage: IProgressPageConfig<'LOADING'> = {\n name: 'LOADING',\n title: { label: 'Loading...' },\n descriptions: [\n {\n label: 'Data extracting...',\n },\n ],\n};\n\nexport const manualLoading: IProgressPageConfig<'LOADING'> = {\n name: 'LOADING',\n title: { label: 'Verifying your identity' },\n descriptions: [\n {\n label: `Hold tight, this can take a few seconds.\n Please do not refresh this page or click the ‘back’ button on your browser.`,\n },\n ],\n};\n","// eslint-disable-next-line check-file/filename-naming-convention\nimport type { FormValues } from '../types/form';\nimport type { ValidationRule } from 'react-hook-form';\n\nexport type customValidator = (\n value: number,\n data: string | number | Date | FormValues,\n) => boolean;\n\nexport const ValidationRulesForForm = {\n required: {\n value: true,\n message: 'This field is required',\n },\n minLength: {\n value: 6,\n message: 'min value is 6',\n },\n maxLength: {\n value: 10,\n message: 'Max value is 10',\n },\n validateLength: (value, data) => {\n return data?.toString().length === value;\n },\n onlyAlphabets: {\n value: `^[a-zA-Z]+(\\\\s+[a-zA-Z]+)*$`,\n message: 'Please enter alphabetic characters only',\n },\n onlyNumbers: {\n value: `^[0-9]+$`,\n message: 'Please enter numeric values only',\n },\n alphaNumeric: {\n value: `^[a-zA-Z0-9]+$`,\n message: `Please enter alphanumeric values only`,\n },\n alphaNumericSpaceInWords: {\n value: `^(?! )[a-zA-Z0-9 ]+(?<! )$`,\n message: `Please enter alphanumeric values only`,\n },\n alphaNumericSomeSpecialWords: {\n value: `^(?! )[a-zA-Z0-9,. - \\\\-() \\\\-[\\\\] /]+(?<! )$`,\n message: `Please enter alphanumeric values only`,\n },\n emailPattern: {\n value: `^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\\\.[a-zA-Z]{2,4}$`,\n message: 'Please enter a valid email address',\n },\n} satisfies Record<string, ValidationRule | customValidator>;\n\nexport enum MonthNameLength {\n LONG = 'long',\n SHORT = 'short',\n}\n\ntype monthGeneratorType = {\n calenderType?: CalendarType;\n localeType?: LocaleType;\n monthNameLength?: MonthNameLength;\n};\n\ntype ReturnType = {\n label: string;\n value: string;\n};\n\nexport enum CalendarType {\n Gregorian = 'gregory',\n Buddhist = 'buddhist',\n Chinese = 'chinese',\n Coptic = 'coptic',\n EthiopicAmeteAlem = 'ethioaa',\n Ethiopic = 'ethiopic',\n Hebrew = 'hebrew',\n Islamic = 'islamic',\n IslamicUmalqura = 'islamic-umalqura',\n Persian = 'persian',\n BikramSambat = 'bikram-sambat',\n}\n\nexport enum LocaleType {\n English = 'en',\n Spanish = 'es',\n French = 'fr',\n German = 'de',\n Italian = 'it',\n Japanese = 'ja',\n Korean = 'ko',\n Chinese = 'zh',\n Arabic = 'ar',\n Russian = 'ru',\n}\n\nexport const monthToValueMapper: Record<string, string> = {\n 1: 'Jan',\n 2: 'Feb',\n 3: 'Mar',\n 4: 'Apr',\n 5: 'May',\n 6: 'Jun',\n 7: 'July',\n 8: 'Aug',\n 9: 'Sep',\n 10: 'Oct',\n 11: 'Nov',\n 12: 'Dec',\n};\n\nexport const fullMonths = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n];\n\ntype GetMaxDaysInMonthProp = {\n month: number;\n year: number;\n calendarType: CalendarType;\n};\n\ntype DateTimeFormatOptionsWithCalendar = Intl.DateTimeFormatOptions & {\n calendar?: string;\n};\n\nexport function getMaxDaysInMonth({\n month = 0,\n year = 0,\n calendarType = CalendarType.Gregorian,\n}: GetMaxDaysInMonthProp): number {\n month = isNaN(month) ? 0 : month;\n year = isNaN(year) ? 0 : year;\n const options: DateTimeFormatOptionsWithCalendar = {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n };\n\n const lastDayOfMonth = new Date(year, month, 0);\n const formattedDate = new Intl.DateTimeFormat(undefined, {\n ...options,\n calendar: calendarType,\n })\n .formatToParts(lastDayOfMonth)\n .find((part) => part.type === 'day').value;\n return parseInt(formattedDate, 10);\n}\n\nexport const monthGenerator = ({\n calenderType = CalendarType.Gregorian,\n localeType = LocaleType.English,\n monthNameLength = MonthNameLength.SHORT,\n}: monthGeneratorType): ReturnType[] => {\n const months = [];\n let value = 1;\n const totalMonths =\n calenderType === CalendarType.Islamic ||\n calenderType === CalendarType.IslamicUmalqura\n ? 13\n : 12;\n for (let month = 0; month < totalMonths; month++) {\n const date = new Date(2000, month, 1);\n\n let monthName = new Intl.DateTimeFormat(localeType, {\n month: monthNameLength,\n calendar: calenderType,\n })\n .formatToParts(date)\n .find((part) => part.type === 'month').value;\n\n monthName = fullMonths.find(\n (i) => i.toLocaleLowerCase() === monthName.toLocaleLowerCase(),\n )\n ? monthName.slice(0, 3)\n : monthName;\n months.push({ label: monthName, value: +value });\n value++;\n }\n return months;\n};\n","import {\n CalendarType,\n LocaleType,\n ValidationRulesForForm,\n} from '../../constants/form.const';\nimport { getAllCountries, getStates } from '../../utils/object.util';\n\nimport type { FormField, InputConfigType } from '../../appConfig.type';\nimport type { ReviewDocument } from '../../model/review.model';\nimport type { Path } from 'react-hook-form';\n\nexport const commonReviewFieldConfig: FormField<\n InputConfigType,\n Path<ReviewDocument>\n>[] = [\n {\n fieldType: 'input',\n dataType: 'text',\n hide: false,\n label: 'Given Name',\n name: 'givenName',\n rules: {\n required: {\n value: true,\n message: 'Please enter your given name',\n },\n pattern: ValidationRulesForForm.onlyAlphabets,\n },\n },\n {\n fieldType: 'input',\n dataType: 'text',\n hide: false,\n label: 'Middle Name(s)',\n name: 'middleName',\n rules: {\n pattern: ValidationRulesForForm.onlyAlphabets,\n },\n helperText: 'As displayed on your ID',\n },\n {\n fieldType: 'input',\n dataType: 'text',\n hide: false,\n label: 'Family Name',\n name: 'familyName',\n rules: {\n required: {\n value: true,\n message: 'Please enter your family name',\n },\n pattern: ValidationRulesForForm.onlyAlphabets,\n },\n },\n\n {\n fieldType: 'date',\n dataType: 'text',\n hide: false,\n label: 'Date of Birth',\n name: 'dateOfBirth',\n\n calendarConfig: {\n type: CalendarType.Gregorian,\n locale: LocaleType.English,\n day: {\n required: true,\n placeholder: 'Day',\n },\n month: {\n required: true,\n placeholder: 'Month',\n },\n year: {\n required: true,\n placeholder: 'Year',\n },\n\n //NOTE: Please do not uncomment, it is not restrictions in figma,\n // use it only for testing purpose...\n // age: {\n // max: 30,\n // min: 5,\n // message: 'Gap between the year should be between 5 and 10',\n // },\n message: 'Please enter your date of birth',\n },\n standardDate: true,\n required: true,\n configYear: true,\n },\n {\n fieldType: 'address',\n name: 'address.fullAddress',\n hide: false,\n dataType: 'current_addr',\n label: 'Residential Address',\n placeholder: 'Type in your address',\n rules: {\n required: {\n value: true,\n message: 'Please enter your residential address',\n },\n },\n helperText: 'Cannot be a PO Box',\n manualFieldConfig: [\n {\n fieldType: 'select',\n dataType: 'text',\n hide: false,\n label: 'Country',\n name: 'address.country',\n options: getAllCountries(),\n rules: {\n required: {\n value: true,\n message: `Please select your country`,\n },\n pattern: {\n ...ValidationRulesForForm.alphaNumericSpaceInWords,\n },\n },\n },\n {\n fieldType: 'input',\n dataType: 'text',\n hide: false,\n label: 'Unit Number (optional)',\n name: 'address.unitNumber',\n rules: {\n pattern: {\n ...ValidationRulesForForm.alphaNumericSpaceInWords,\n },\n },\n },\n {\n fieldType: 'input',\n dataType: 'text',\n hide: false,\n label: 'Street Address',\n name: 'address.streetAddress',\n rules: {\n required: {\n value: true,\n message: 'Please enter your street address',\n },\n pattern: {\n ...ValidationRulesForForm.alphaNumericSomeSpecialWords,\n },\n },\n },\n {\n fieldType: 'input',\n dataType: 'text',\n hide: false,\n label: 'Suburb / Town',\n name: 'address.town',\n rules: {\n required: {\n value: true,\n message: 'Please enter your suburb/town.',\n },\n pattern: {\n ...ValidationRulesForForm.alphaNumericSpaceInWords,\n },\n },\n },\n {\n fieldType: 'select',\n dataType: 'text',\n hide: false,\n label: 'State',\n name: 'address.state',\n placeholder: 'Select Your State',\n options: getStates('AUS'),\n rules: {\n required: {\n value: true,\n message: 'Please select your state',\n },\n pattern: {\n ...ValidationRulesForForm.alphaNumericSpaceInWords,\n },\n },\n },\n {\n fieldType: 'input',\n dataType: 'text',\n hide: false,\n label: 'Postcode',\n name: 'address.postalCode',\n rules: {\n required: {\n value: true,\n message: 'Please enter your postal code',\n },\n pattern: {\n ...ValidationRulesForForm.alphaNumericSpaceInWords,\n },\n },\n },\n ],\n },\n];\n","import {\n CalendarType,\n LocaleType,\n ValidationRulesForForm,\n} from '../../constants/form.const';\nimport { commonReviewFieldConfig } from '../Review/review.const';\n\nimport type { FormField, IFormPageConfig } from '../../appConfig.type';\nimport type { PersonalDetailsDocumentKeys } from '../../model/personalDetails.model';\n\nexport const addressFields = commonReviewFieldConfig?.find(\n (item) => item.fieldType === 'address',\n);\n\nexport const withoutStateAddress = [\n {\n ...addressFields,\n manualFieldConfig: addressFields?.['manualFieldConfig']?.filter(\n (item: FormField) =>\n !['address.state'].includes(item?.name as never as string),\n ),\n },\n] as typeof commonReviewFieldConfig;\n\nexport const personalDetailsPage: IFormPageConfig<\n 'PERSONAL',\n PersonalDetailsDocumentKeys\n> = {\n name: 'PERSONAL',\n title: {\n label: 'Personal details',\n style: {\n 'ff-title': {},\n },\n },\n descriptions: [\n {\n label:\n 'The details you provide below will be used to verify your identity – make sure they match your ID documents.',\n style: {},\n },\n ],\n\n personal: {\n countries: {\n default: {\n default: {\n fields: [\n {\n fieldType: 'input',\n hide: false,\n label: 'Given Name',\n dataType: 'text',\n name: 'givenName',\n rules: {\n required: {\n value: true,\n message: 'Please enter your given name',\n },\n pattern: ValidationRulesForForm.onlyAlphabets,\n },\n },\n {\n fieldType: 'input',\n hide: false,\n label: 'Middle Name(s)',\n name: 'middleName',\n dataType: 'text',\n showToggle: true,\n rules: {\n required: {\n value: true,\n message: 'Please enter your middle name',\n },\n pattern: ValidationRulesForForm.onlyAlphabets,\n },\n toggleConfig: {\n label: 'Do you have any Middle Names?',\n rules: {\n required: {\n value: true,\n message: 'Please let us know if you have any middle names',\n },\n },\n },\n },\n {\n fieldType: 'input',\n hide: false,\n label: 'Family Name',\n dataType: 'text',\n name: 'familyName',\n rules: {\n required: {\n value: true,\n message: 'Please enter your family name',\n },\n pattern: ValidationRulesForForm.onlyAlphabets,\n },\n },\n {\n fieldType: 'phone',\n dataType: 'number',\n name: 'extraData.phone',\n hide: true,\n label: 'Phone Number',\n emptyText: 'No records found',\n options: [\n { label: 'AU +61', value: '+61' },\n { label: 'NZ +64', value: '+64' },\n ],\n placeholder: {\n cc: 'Code',\n phoneNumber: 'e.g. 0400 000 000',\n },\n rules: {\n required: {\n value: true,\n message: 'Please enter the phone number',\n },\n minLength: {\n value: 10,\n message: 'Phone number must be at least 10 digits',\n },\n maxLength: {\n value: 10,\n message: 'Phone number must not exceed 10 characters',\n },\n pattern: ValidationRulesForForm.onlyNumbers,\n },\n },\n {\n fieldType: 'input',\n hide: true,\n label: 'Email',\n dataType: 'text',\n name: 'extraData.email',\n rules: {\n required: {\n value: true,\n message: 'Please enter the email',\n },\n pattern: ValidationRulesForForm.emailPattern,\n },\n },\n {\n fieldType: 'date',\n hide: false,\n label: 'Date of Birth',\n dataType: 'text',\n name: 'dateOfBirth',\n calendarConfig: {\n type: CalendarType.Gregorian,\n locale: LocaleType.English,\n day: {\n required: true,\n placeholder: 'Day',\n },\n month: {\n required: true,\n placeholder: 'Month',\n },\n year: {\n required: true,\n placeholder: 'Year',\n },\n\n //NOTE: Please do not uncomment, it is not restrictions in figma,\n // use it only for testing purpose...\n // age: {\n // max: 30,\n // min: 5,\n // message: 'Gap between the year should be between 5 and 10',\n // },\n message: 'Please enter your date of birth',\n },\n },\n { ...withoutStateAddress[0] },\n ],\n },\n },\n AUS: {\n default: {\n fields: [\n {\n ...commonReviewFieldConfig?.find(\n (item) => item.fieldType === 'address',\n ),\n },\n ],\n },\n },\n },\n },\n cta: {\n label: 'Next',\n },\n style: {\n 'ff-form-wrapper': {},\n 'ff-form-field': {},\n },\n};\n","import { IProgressPageConfig, RESULT_STATE } from '../../appConfig.type';\n\nexport const resultInfoMapping: Record<\n RESULT_STATE,\n Partial<IProgressPageConfig<'RESULT'>>\n> = {\n [RESULT_STATE.PENDING]: {\n title: {\n label: 'Thanks, your information has been submitted for verification',\n },\n descriptions: [\n {\n label:\n 'You’re all done. We will be in touch once we have your results.',\n },\n ],\n cta: {\n label: 'Done',\n },\n },\n [RESULT_STATE.SUCCESS]: {\n title: {\n label: 'Congratulations, your identity has been successfully verified',\n },\n cta: {\n label: 'Done',\n },\n },\n [RESULT_STATE.FAIL]: {\n title: { label: 'Unfortunately we are unable to verify your identity' },\n descriptions: [\n {\n label:\n 'Please contact the customer support team to help you with creating your account.',\n },\n ],\n cta: {\n label: 'Done',\n },\n },\n [RESULT_STATE.PARTIAL]: {\n title: { label: 'We are having trouble verifying your identity' },\n descriptions: [\n {\n label:\n 'Most of the time it’s just a typo, let’s check your ID details have been entered correctly.',\n },\n ],\n cta: {\n label: 'Review details',\n },\n },\n [RESULT_STATE.UPLOAD_SUCCESS]: {},\n [RESULT_STATE.UPLOAD_FAIL]: {},\n};\n\nexport const resultPage: Partial<IProgressPageConfig<'RESULT'>> = {\n name: 'RESULT',\n state: RESULT_STATE.PENDING,\n};\n","import { getUniqueList } from '../utils/object.util';\n\nimport type {\n FormField,\n FormPageScreen,\n IDocuments,\n IFormPageConfig,\n IIdCardPageConfig,\n InputConfigType,\n} from '../appConfig.type';\nimport type { ReviewDocumentKeys } from '../model/review.model';\n\nexport const useFormMapper = () => {\n const getFormConfig = <PType extends FormPageScreen = FormPageScreen>(data: {\n config: IFormPageConfig<PType> | IIdCardPageConfig;\n idType: string;\n country?: string;\n region?: string;\n }) => {\n const { config, idType, country, region } = data;\n const documentConfig = (\n config?.['documents'] as IFormPageConfig<\n 'REVIEW',\n ReviewDocumentKeys\n >['documents']\n )?.find((item) => item.type === idType);\n\n const documentFields = documentConfig?.countries?.[country]?.[region] ??\n documentConfig?.countries?.[country]?.default ??\n documentConfig?.countries?.default?.default ?? { fields: [] };\n\n const personalConfig = config?.['personal'] as IFormPageConfig<\n 'REVIEW',\n ReviewDocumentKeys\n >['personal'];\n let personalFields = personalConfig?.countries?.[country]?.[region] ??\n personalConfig?.countries?.[country]?.default ?? { fields: [] };\n\n /**\n * Remarks: Merge the fields from the default config\n * if the fields are not available in the current config\n */\n personalFields = {\n fields: getUniqueList(\n [\n ...(personalConfig?.countries?.default?.default?.fields ?? []),\n ...personalFields.fields,\n ],\n 'name',\n ),\n };\n\n const getDefaultImage = (info?: { country?: string; region?: string }) =>\n documentConfig?.countries?.[info?.country]?.[info?.region]?.image ??\n personalConfig?.countries?.[info?.country]?.[info?.region]?.image ??\n documentConfig?.countries?.[info?.country]?.default?.image ??\n personalConfig?.countries?.[info?.country]?.default?.image ??\n documentConfig?.countries?.default?.default?.image ??\n personalConfig?.countries?.default?.default?.image ??\n documentFields?.image ??\n personalFields?.image;\n\n const manualFields = getManualFormFields({\n config: config?.['documents'],\n country,\n region,\n });\n\n return {\n documentFields: documentFields.fields as FormField<InputConfigType>[],\n personalFields: personalFields.fields as FormField<InputConfigType>[],\n manualFields: manualFields as FormField<InputConfigType>[],\n getDefaultImage,\n };\n };\n\n const getManualFormFields = (data: {\n config: IDocuments<'manual'>;\n country?: string;\n region?: string;\n }) => {\n const { config, country, region } = data;\n\n const formFields = config?.countries?.[country]?.[region] ??\n config?.countries?.[country]?.default ??\n config?.countries?.default?.[region] ?? { fields: [] };\n\n return getUniqueList(\n [\n ...formFields.fields,\n ...(config?.countries?.default?.default?.fields ?? []),\n ],\n 'name',\n );\n };\n\n const modifyFormConfig = <CType extends NonNullable<unknown>>(\n configField: CType,\n ) => {\n return {\n ...configField,\n\n rules: {\n ...(configField?.['rules'] ?? {}),\n ...(configField?.['rules']?.['pattern'] && {\n pattern: {\n ...configField?.['rules']?.['pattern'],\n value: new RegExp(configField?.['rules']?.['pattern']?.value),\n },\n }),\n },\n };\n };\n\n return { getFormConfig, getManualFormFields, modifyFormConfig };\n};\n","/* eslint-disable @typescript-eslint/no-unused-vars */\nimport clsx from 'clsx';\nimport React, { forwardRef, useState } from 'react';\n\nimport { icons } from '../../../constants/icons';\nimport { FrankieButton } from '../FrankieButton';\n\nimport type { IFrankieTextFieldProps } from '../../../types/form';\nimport type { FormEvent } from 'react';\n\nexport const FrankieTextField = forwardRef(function FrankieTextField(\n {\n className = '',\n inputClassName = '',\n counter,\n disabled = false,\n error = false,\n errorText = '',\n label,\n name,\n placeholder = '',\n readOnly = false,\n helperText = '',\n tag,\n badge,\n closeButton,\n isSearchIcon,\n testid = {\n container: '',\n input: '',\n label: '',\n tag: '',\n showPassword: '',\n helperText: '',\n counter: '',\n closeCta: '',\n mockImg: null,\n },\n type = 'text',\n value,\n onBlur,\n onChange,\n onClick,\n onFocus,\n onKeyDown,\n min,\n max,\n minLength,\n maxLength,\n pattern,\n required,\n autoComplete,\n configYear,\n hideError = false,\n }: IFrankieTextFieldProps,\n ref: React.ForwardedRef<HTMLInputElement>,\n): JSX.Element {\n const [inputLength, setInputLength] = useState(0);\n const [passwordVisibility, setPasswordVisibility] = useState(false);\n\n const handleInput = (e: FormEvent<HTMLInputElement>) => {\n setInputLength(e.currentTarget?.value?.length);\n };\n\n return (\n <div\n className={clsx(\n 'f1-w-full',\n `${!errorText?.length && error && 'f1-mb-3'}`,\n className,\n )}\n data-testid={testid.container}\n >\n {(label || tag) && (\n <div\n className={clsx(\n 'f1-w-full',\n 'f1-bg-white',\n 'f1-border',\n 'f1-py-2',\n 'f1-focus:outline-none',\n )}\n >\n <div className={clsx('grow')}>\n <label\n htmlFor={name}\n className={clsx(\n 'f1-text-sm',\n 'f1-font-medium',\n 'f1-w-full',\n 'f1-text-tertiary-grey-800',\n )}\n data-testid={testid.label}\n >\n {label}\n </label>\n </div>\n <div\n className={clsx(\n 'f1-flex',\n 'f1-flex-initial',\n 'f1-grow',\n 'f1-justify-end',\n 'f1-text-tertiary-grey-800',\n )}\n data-testid={testid.tag}\n >\n {tag}\n </div>\n </div>\n )}\n <div\n className={clsx(\n `\"f1-relative\"`,\n 'frankie-text-field-container',\n 'hide-spinner',\n )}\n >\n <input\n id={name}\n name={name}\n aria-label={name}\n ref={ref}\n className={clsx(\n 'f1-w-full',\n 'f1-rounded-sm',\n 'f1-px-[16px]',\n 'f1-py-[14px]',\n 'focus:f1-outline-[0.1px]',\n 'f1-box-border',\n 'f1-border',\n { 'focus:f1-outline-[#2B67F9] ': !error },\n { 'focus:f1-outline-tertiary-red-500': error },\n 'f1-border-solid',\n inputClassName,\n 'f1-text-md',\n 'f1-font-normal',\n 'f1-text-[#374151]',\n {\n 'f1-border-tertiary-red-500': error,\n 'f1-placeholder-tertiary-red-600': error,\n '!f1-text-tertiary-red-600': error,\n 'f1-bg-[#FDF2F2]': error,\n 'f1-border-tertiary-grey-300': !error,\n },\n )}\n placeholder={placeholder}\n disabled={disabled}\n readOnly={readOnly}\n type={passwordVisibility ? 'text' : type}\n onInput={handleInput}\n value={value ?? ''}\n data-testid={testid.input}\n onBlur={onBlur}\n onChange={onChange}\n onClick={onClick}\n onFocus={onFocus}\n min={min}\n max={max}\n minLength={minLength}\n maxLength={maxLength}\n pattern={pattern}\n required={required}\n autoComplete={autoComplete}\n onKeyDown={onKeyDown}\n />\n {type === 'search' && isSearchIcon && (\n <img\n onClick={onClick}\n className={clsx('f1-absolute', 'f1-top-[10px]', 'f1-cursor-text')}\n src={testid.mockImg ?? icons.magnify}\n alt=\"search icon\"\n />\n )}\n {!!badge && badge}\n {type === 'password' && (\n <div className={clsx('f1-absolute', 'f1-top-0', 'f1-right-2')}>\n <FrankieButton\n intent=\"subtle\"\n size=\"md\"\n testid={{ button: testid.showPassword }}\n className={clsx('f1-text-tertiary-grey-500')}\n onClick={() => setPasswordVisibility(!passwordVisibility)}\n singleicon={\n testid.mockImg ?? {\n size: 'xs',\n name: passwordVisibility\n ? 'mdiEyeOffOutline'\n : 'mdiEyeOutline',\n }\n }\n />\n </div>\n )}\n\n {closeButton && (\n <FrankieButton\n testid={{ button: testid.closeCta }}\n className={clsx('f1-text-tertiary-grey-500')}\n onClick={closeButton.onClick}\n singleicon={\n testid.mockImg ?? {\n size: 'xs',\n name: 'mdiClose',\n }\n }\n />\n )}\n </div>\n <div\n className={clsx(\n 'f1-flex',\n `${configYear && 'f1-absolute , f1-left-0'}`,\n )}\n >\n {(helperText || errorText) && !hideError && (\n <div>\n <div\n className={clsx(\n 'f1-flex',\n 'f1-flex-col',\n 'f1-gap-1',\n 'f1-mt-1',\n 'f1-text-[14px]',\n )}\n >\n <div\n data-testid={testid.helperText}\n className={clsx('f1-flex', 'f1-text-tertiary-red-600')}\n >\n {error && errorText?.length > 1\n? (\n <img\n className={clsx('f1-mr-1')}\n src={testid.mockImg ?? icons.alertCircleOutline}\n />\n )\n: (\n ''\n )}\n {error && errorText}\n </div>\n <div className={clsx('f1-text-tertiary-grey-500')}>\n {helperText}\n </div>\n </div>\n </div>\n )}\n <div data-testid={testid.counter}>\n {typeof counter === 'number' && counter > 0\n? (\n <div\n className={clsx(inputLength > counter ? 'f1-text-red-700' : '')}\n >\n {inputLength}/{counter}\n </div>\n )\n: (\n counter\n )}\n </div>\n </div>\n </div>\n );\n});\n","import { forwardRef, type ChangeEvent } from 'react';\nimport { Controller } from 'react-hook-form';\n\nimport { FrankieTextField } from '../TextField/TextSelectField';\n\nimport type { IFrankieTextFieldProps } from '../../../types/form';\nimport type {\n ControllerProps,\n ControllerRenderProps,\n FieldValues,\n Path,\n PathValue,\n ValidateResult,\n} from 'react-hook-form';\n\ntype FieldProperties = keyof ControllerRenderProps;\n\ntype ValidateFunction<TFieldValues extends FieldValues> = (\n value: PathValue<TFieldValues, Path<TFieldValues>>,\n) => boolean | ValidateResult;\n\nexport type InputProps<TFieldValues extends FieldValues> = Omit<\n IFrankieTextFieldProps,\n FieldProperties | 'error'\n> &\n Omit<ControllerProps<TFieldValues>, 'render' | 'readOnly'> & {\n onChange?: (event: ChangeEvent<HTMLInputElement>) => void;\n onBlur?: (event: ChangeEvent<HTMLInputElement>) => void;\n } & Pick<IFrankieTextFieldProps, 'value'>;\n\nconst Input = forwardRef(\n <TFieldValues extends FieldValues>(\n {\n name,\n control,\n rules,\n label,\n defaultValue,\n disabled,\n shouldUnregister,\n helperText,\n min,\n type,\n\n onChange,\n ...textProps\n }: InputProps<TFieldValues>,\n ref: React.ForwardedRef<HTMLInputElement>,\n ) => {\n return (\n <Controller\n control={control}\n name={name}\n render={({ field, fieldState: { error } }) => {\n const validateResult =\n rules &&\n rules?.validate &&\n typeof rules?.validate === 'function' &&\n min !== undefined &&\n (rules?.validate as ValidateFunction<TFieldValues>)(field?.value);\n\n const isValid =\n typeof validateResult === 'boolean' ? validateResult : false;\n\n return (\n <FrankieTextField\n type={type}\n label={label}\n readOnly={isValid}\n errorText={error?.message}\n error={!!error?.message}\n helperText={!error?.message && helperText}\n {...(textProps ?? {})}\n {...field}\n onChange={(e) => {\n field.onChange(e);\n onChange && onChange(e);\n }}\n onBlur={(e) => {\n field.onBlur();\n textProps?.onBlur && textProps.onBlur(e);\n }}\n ref={ref}\n />\n );\n }}\n rules={rules}\n defaultValue={defaultValue}\n disabled={disabled}\n shouldUnregister={shouldUnregister}\n />\n );\n },\n);\n\nexport default Input;\n","import type { FieldErrors } from 'react-hook-form';\r\n\r\n\r\nexport const getError = (name: string, errors: FieldErrors) => {\r\n if (!Object.keys(errors).length) return undefined;\r\n\r\n const error = name\r\n .split('.')\r\n .map(item => item.replace('[', '').replace(']', ''))\r\n .reduce(\r\n (prev: object | string | undefined, curr) =>\r\n prev ? prev[curr as keyof typeof prev] : prev,\r\n errors,\r\n ) as string;\r\n\r\n return error;\r\n};\r\n \r\n\r\n/**\r\n * for MM-YYYY date format\r\n */\r\nexport const isDateValid = (value: string) => {\r\n const splitData = value.split('-');\r\n if (splitData.length === 2) {\r\n const month = parseInt(splitData[0], 10);\r\n const year = parseInt(splitData[1], 10);\r\n const isValidDate =\r\n !Number.isNaN(month) &&\r\n !Number.isNaN(year) &&\r\n month >= 1 &&\r\n month <= 12 &&\r\n `${year}`.length === 4;\r\n return isValidDate;\r\n }\r\n return false;\r\n};\r\n","/* eslint-disable check-file/filename-naming-convention */\nimport { useRef, useState } from 'react';\n\nimport { useOnClickOutside } from 'usehooks-ts';\nimport { IUseFrankieMenuReturn } from '../types/form';\n\nexport function useFrankieMenu(): IUseFrankieMenuReturn {\n const parentRef = useRef(null);\n const [isOpen, setIsOpen] = useState<boolean>(false);\n const handleOpen = () => setIsOpen(true);\n const handleClose = () => setIsOpen(false);\n const handleToggle = () => setIsOpen((prev) => !prev);\n\n useOnClickOutside(parentRef, handleClose);\n\n return {\n parentRef,\n isOpen,\n handleOpen,\n handleClose,\n handleToggle,\n };\n}\n","/* eslint-disable max-len */\n/* eslint-disable no-nested-ternary */\n/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access */\nimport clsx from 'clsx';\nimport React, { forwardRef, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { icons } from '../../../constants/icons';\nimport { useFrankieMenu } from '../../../hooks/menu.hooks';\n\nimport type {\n FrankieSelectOptions,\n IFrankieTextSelectFieldProps,\n} from '../../../types/form';\nexport const FrankieSelectField = forwardRef(function FrankieSelectField<\n T extends string | number,\n>(\n {\n className = '',\n inputClassName = '',\n disabled = false,\n error = false,\n errorText = '',\n label,\n name,\n placeholder = '',\n supportingText = '',\n tag,\n badge,\n options,\n testid = {\n container: '',\n input: '',\n label: '',\n tag: '',\n supportingText: '',\n closeCta: '',\n mockImg: null,\n },\n value,\n onBlur,\n onChange,\n onClick,\n onFocus,\n autocomplete = false,\n clearable = false,\n required,\n emptyText = 'No record',\n hideError = false,\n selectLabel = null,\n ulClassName = '',\n }: IFrankieTextSelectFieldProps<T>,\n ref: React.LegacyRef<HTMLInputElement>,\n): JSX.Element {\n // To keep track of the selected index\n\n const [selectedIndex, setSelectedIndex] = useState<number | null>(null);\n\n // To keep track of value input - usually in case of autocomplete\n const [filterText, setFilterText] = useState('');\n\n const inputRef = useRef<HTMLInputElement>(null);\n\n const { parentRef, isOpen, handleOpen, handleToggle, handleClose } =\n useFrankieMenu();\n\n const selectedValueLabel = useMemo(\n () => options.find((item) => item.value === value)?.label,\n [value, options],\n );\n\n /**\n * Final option if autocomplete\n * Filtering option when autocomplete is on and filterText should no be equal to already selected value\n */\n const filteredOptions = useMemo(\n () =>\n autocomplete && filterText && filterText !== selectedValueLabel\n ? options.filter((item) =>\n item?.label\n ?.toLowerCase()\n ?.trim()\n ?.startsWith(filterText.toLowerCase().trim()),\n )\n : options,\n [options, filterText, autocomplete, selectedValueLabel],\n );\n\n /**\n * On option click\n */\n\n const handleSelectOption = (option: FrankieSelectOptions<T>) => () => {\n const { value, label } = option;\n onChange({ target: { value } });\n setFilterText(label);\n\n handleClose();\n };\n\n /**\n * On Input change\n */\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setFilterText(e.target.value);\n if (!isOpen) handleOpen();\n };\n\n useEffect(() => {\n const currentIndex = filteredOptions.findIndex(\n (option) => option.value === value,\n );\n\n if (isOpen) {\n setSelectedIndex(currentIndex);\n } else {\n setFilterText(\n currentIndex === -1 ? '' : filteredOptions[currentIndex].label,\n );\n }\n }, [isOpen, filteredOptions, value]);\n\n const handleOptionToggle = (\n e: React.MouseEvent<HTMLInputElement, MouseEvent>,\n ) => {\n if (onClick) onClick(e);\n if (disabled) return;\n handleToggle();\n };\n\n /**\n * To handle clearing of data from cross button\n */\n const handleClear = () => {\n onChange({ target: { value: undefined as unknown as T } });\n setFilterText('');\n };\n\n const handleKeyDown = (\n e: React.KeyboardEvent<HTMLInputElement | HTMLLIElement>,\n ) => {\n switch (e.key) {\n case 'ArrowUp':\n case 'ArrowDown':\n e.preventDefault();\n if (isOpen) {\n setSelectedIndex((prevIndex) => {\n let newIdx = 0;\n if (prevIndex !== null) {\n newIdx =\n e.key === 'ArrowDown'\n ? Math.min(filteredOptions.length - 1, prevIndex + 1)\n : Math.max(0, prevIndex - 1);\n }\n\n const selectedOption = document.querySelector(\n `.frankie-select-option-${newIdx}`,\n );\n\n selectedOption?.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n });\n\n return newIdx;\n });\n } else handleOpen();\n\n break;\n case 'Enter':\n if (selectedIndex !== null) {\n const { value, label } = filteredOptions[selectedIndex];\n onChange({ target: { value } });\n setFilterText(label);\n handleClose();\n setSelectedIndex(null);\n }\n break;\n case 'Escape':\n handleClose();\n break;\n default:\n if (!autocomplete) e.preventDefault();\n break;\n }\n };\n\n /**\n * To focus on the input when the when opening from toggle btn\n */\n\n const handleDropdown = () => {\n if (!isOpen && inputRef.current) {\n inputRef.current.focus();\n }\n handleToggle();\n };\n\n return (\n <div\n className={clsx('f1-w-full', className, {\n 'f1-pointer-events-none': disabled,\n })}\n data-testid={testid?.container}\n ref={parentRef}\n >\n {(label || tag) && (\n <div>\n <div className={clsx('grow', 'f1-py-2')}>\n <label\n htmlFor={name}\n className={clsx(\n 'f1-text-sm',\n 'f1-font-medium',\n 'f1-text-[#1F2A37]',\n )}\n data-testid={testid?.label}\n >\n {label}\n </label>\n </div>\n <div\n className={clsx(\n 'f1-flex',\n 'f1-flex-initial',\n 'f1-grow',\n 'f1-justify-end',\n\n 'f1-text-[#1F2A37]',\n )}\n data-testid={testid?.tag}\n >\n {tag}\n </div>\n </div>\n )}\n <div className={clsx('f1-relative', 'frankie-select-field-container')}>\n <input\n id={name}\n name={name}\n aria-label={name}\n ref={(input) => {\n (inputRef as any).current = input;\n if (typeof ref === 'function') {\n ref(input);\n } else if (ref) {\n (ref as any).current = input;\n }\n }}\n className={clsx(\n 'f1-w-full',\n 'f1-px-[16px]',\n 'f1-py-[14px]',\n 'border-slate-300',\n 'rounded-xl',\n inputClassName,\n 'focus:f1-outline-[0.1px]',\n 'f1-border',\n 'f1-border-solid',\n 'f1-rounded-sm',\n { 'focus:f1-outline-[#2B67F9] ': !error },\n { 'focus:f1-outline-tertiary-red-500': error },\n 'f1-pl-4',\n 'f1-box-border',\n\n 'f1-text-md',\n 'f1-font-normal',\n 'f1-text-[#374151]',\n {\n 'f1-border-tertiary-red-500': error,\n 'f1-placeholder-tertiary-red-600': error,\n '!f1-text-tertiary-red-600': error,\n 'f1-bg-[#FDF2F2]': error,\n 'f1-border-tertiary-grey-300': !error,\n },\n )}\n placeholder={placeholder}\n disabled={disabled}\n type=\"text\"\n value={selectLabel ?? filterText}\n data-testid={testid?.input}\n onBlur={onBlur}\n onChange={handleChange}\n onClick={handleOptionToggle}\n onFocus={onFocus}\n required={required}\n onKeyDown={handleKeyDown}\n autoComplete=\"off\"\n />\n\n <div className=\"f1-relative \">\n {isOpen && (\n <ul\n className={clsx(\n 'frankie-select-options',\n 'f1-max-h-64',\n 'f1-overflow-scroll',\n 'f1-absolute',\n 'f1-z-50',\n 'f1-bg-mono-white',\n 'f1-shadow-md',\n 'f1-rounded-sm',\n 'f1-p-0',\n ulClassName,\n { 'f1-w-full': !ulClassName.length },\n 'f1-scrollbar-sm',\n 'f1-overflow-x-hidden',\n 'f1-mt-0',\n )}\n >\n {filteredOptions.length > 0\n? (\n filteredOptions.map((option, index) => (\n <li\n role=\"option\"\n aria-selected={index === selectedIndex}\n key={option.value}\n onClick={handleSelectOption(option)}\n onKeyDown={handleKeyDown}\n className={clsx(\n 'f1-list-none',\n 'f1-p-4',\n 'f1-text-md',\n 'f1-hover:bg-grey-300',\n 'text-gray-800',\n 'cursor-pointer',\n 'f1-m-0',\n 'focus:f1-bg-primary-50',\n { 'f1-bg-primary-50': index === selectedIndex },\n {\n 'hover:f1-bg-tertiary-grey-100':\n index !== selectedIndex,\n },\n `frankie-select-option-${index}`,\n )}\n data-testid={option.testId}\n >\n {option.label}\n </li>\n ))\n )\n: (\n <li className={clsx('f1-text-sm', 'f1-py-2', 'f1-px-4')}>\n {emptyText}\n </li>\n )}\n </ul>\n )}\n </div>\n\n {!(clearable && !!filterText) && (\n <img\n onClick={handleDropdown}\n className={clsx(\n 'f1-absolute',\n 'f1-bottom-[13px]',\n 'f1-right-3',\n 'text-tertiary-grey-500',\n 'f1-cursor-pointer',\n 'f1-fill-tertiary-red-600',\n )}\n src={\n testid?.mockImg ??\n (!isOpen\n ? error\n ? icons.chevronDownError\n : icons.chevronDown\n : error\n ? icons.chevronUpError\n : icons.chevronUp)\n }\n />\n )}\n\n {!!badge && badge}\n\n {clearable && !!filterText && (\n <img\n data-testid={testid?.closeCta}\n onClick={handleClear}\n className={clsx(\n 'f1-absolute',\n 'f1-bottom-[13px]',\n 'f1-right-3',\n 'f1-cursor-pointer',\n )}\n src={testid?.mockImg ?? (error ? icons.closeError : icons.close)}\n />\n )}\n </div>\n <div className={clsx('f1-flex')}>\n {(supportingText || errorText) && !hideError && (\n <div\n className={clsx(\n 'f1-grow',\n 'f1-text-mono-70',\n 'f1-pt-1',\n 'f1-text-sm',\n )}\n >\n <div\n className={clsx('f1-flex', 'f1-flex-initial', 'f1-items-center', {\n 'f1-text-tertiary-red-600': error,\n })}\n >\n <div\n data-testid={testid?.supportingText}\n className={clsx(\n 'f1-flex',\n 'f1-text-tertiary-red-600',\n 'f1-text-[14px]',\n )}\n >\n {error && (\n <img\n className={clsx('f1-mr-1')}\n src={testid?.mockImg ?? icons.alertCircleOutline}\n />\n )}\n {error ? errorText : supportingText}\n </div>\n </div>\n </div>\n )}\n </div>\n </div>\n );\n});\n","import { forwardRef, type ChangeEvent } from 'react';\nimport { Controller } from 'react-hook-form';\n\nimport { getError } from '../../../model/error.model';\nimport { FrankieSelectField } from '../SelectField/SelectField';\n\nimport type {\n FrankieSelectOptions,\n IFrankieTextSelectFieldProps,\n} from '../../../types/form';\nimport type {\n ControllerRenderProps,\n ControllerProps,\n FieldValues,\n} from 'react-hook-form';\n\nexport type SelectChangeEvent = {\n target: {\n value: string | number;\n name?: string;\n selected?: FrankieSelectOptions;\n };\n};\n\nexport type SelectProps<\n TFormValues extends FieldValues,\n TOption extends string | number,\n> = Omit<IFrankieTextSelectFieldProps<TOption>, keyof ControllerRenderProps> &\n Omit<ControllerProps<TFormValues>, 'render'> & {\n onChange?: (event: SelectChangeEvent) => void;\n onBlur?: (event: ChangeEvent<HTMLInputElement>) => void;\n };\n\nexport const SelectFormField = forwardRef(\n <TFormValues extends FieldValues, TOption extends string | number>(\n {\n name,\n control,\n defaultValue,\n options,\n rules,\n shouldUnregister,\n onChange,\n ...selectProps\n }: SelectProps<TFormValues, TOption>,\n ref: React.ForwardedRef<HTMLInputElement>,\n ) => {\n return (\n <Controller\n render={({ field, formState: { errors } }) => (\n <FrankieSelectField\n errorText={errors[name]?.message as string}\n options={options}\n {...selectProps}\n {...field}\n error={!!getError(name, errors)}\n onChange={(e) => {\n field.onChange(e);\n e.target['name'] = name;\n e.target['selected'] = options.find(\n (item) => item.value == e.target.value,\n );\n onChange && onChange(e);\n }}\n onBlur={(e) => {\n field.onBlur();\n selectProps?.onBlur && selectProps.onBlur(e);\n }}\n ref={ref}\n />\n )}\n control={control}\n name={name}\n defaultValue={defaultValue}\n rules={rules}\n shouldUnregister={shouldUnregister}\n />\n );\n },\n);\n","/* eslint-disable no-nested-ternary */\n/* eslint-disable max-len */\n/* eslint-disable no-multiple-empty-lines */\nimport clsx from 'clsx';\nimport { DateTime } from 'luxon';\nimport React, { useCallback, useEffect, useMemo } from 'react';\nimport { Controller, type FieldValues, useController } from 'react-hook-form';\n\nimport {\n getMaxDaysInMonth,\n monthGenerator,\n MonthNameLength,\n ValidationRulesForForm,\n} from '../../../constants/form.const';\nimport { icons } from '../../../constants/icons';\nimport { getFormateDate } from '../../../utils/object.util';\nimport Input from '../../base/SharedInput/Input';\nimport { SelectFormField } from '../../base/SharedSelect/Select';\n\nimport type { CalendarType, LocaleType } from '../../../constants/form.const';\nimport type { Control } from 'react-hook-form';\n\ntype CommonComponentProps = {\n label: string;\n expiryDate?: boolean;\n helperText?: string;\n calendarConfig?: CalendarConfig;\n name?: string;\n control?: Control<FieldValues>;\n testid?: {\n container?: string;\n error?: string;\n mockImg?: string;\n };\n testingData?: string | null;\n};\n\nexport type CalendarConfig = {\n type: CalendarType;\n locale: LocaleType;\n day?: {\n value?: number;\n required?: boolean;\n placeholder?: string;\n };\n month?: {\n value?: number;\n required?: boolean;\n placeholder?: string;\n };\n year?: {\n value?: number;\n required: boolean;\n placeholder?: string;\n };\n age?: {\n max?: number;\n min?: number;\n\n message: string;\n };\n maxYear?: number | undefined;\n message?: string;\n};\n\nexport type StandardDateType = {\n dd?: string;\n mm: number;\n yyyy: string;\n};\n\nconst StandardDate: React.FC<CommonComponentProps> = ({\n label,\n expiryDate = false,\n helperText,\n calendarConfig,\n name,\n control,\n testid = {\n container: '',\n error: '',\n mockImg: null,\n },\n testingData = null,\n}) => {\n const defaultDate = useMemo(\n () => control._formValues[name]?.split('-'),\n [control._formValues[name]],\n );\n const dateExist = useMemo(\n () => expiryDate && defaultDate?.length > 2,\n [expiryDate, defaultDate],\n );\n\n const ddDefaultValue = useMemo(\n () =>\n expiryDate ? null : defaultDate?.length === 3 ? defaultDate?.[0] : null,\n [expiryDate],\n );\n const { field: ddField, formState: ddState } = useController({\n name: `${name}-dd`,\n control: control,\n defaultValue:\n testingData?.split('-')[`${expiryDate ? null : 0}`] ?? ddDefaultValue,\n });\n\n const mmDefaultValue = useMemo(\n () =>\n expiryDate\n ? dateExist\n ? +(defaultDate?.[1] ?? 0)\n : +(defaultDate?.[0] ?? 0)\n : defaultDate?.length === 3\n ? +(defaultDate?.[1] ?? 0)\n : +(defaultDate?.[0] ?? 0),\n [expiryDate],\n );\n\n const { field: mmField, formState: mmState } = useController({\n name: `${name}-mm`,\n control: control,\n defaultValue:\n testingData?.split('-')[`${expiryDate ? 0 : 1}`] ?? mmDefaultValue,\n });\n\n const yyDefaultValue = useMemo(\n () =>\n (expiryDate\n ? dateExist\n ? +(defaultDate?.[2] ?? 0)\n : +(defaultDate?.[1] ?? 0)\n : defaultDate?.length === 3\n ? +(defaultDate?.[2] ?? 0)\n : +(defaultDate?.[1] ?? 0)) === 0\n ? ''\n : expiryDate\n ? dateExist\n ? +(defaultDate?.[2] ?? 0)\n : +(defaultDate?.[1] ?? 0)\n : defaultDate?.length === 3\n ? +(defaultDate?.[2] ?? 0)\n : +(defaultDate?.[1] ?? 0),\n [expiryDate],\n );\n\n const { field: yyField, formState: yyState } = useController({\n name: `${name}-yyyy`,\n control: control,\n defaultValue:\n testingData?.split('-')[`${expiryDate ? 1 : 2}`] ?? yyDefaultValue,\n });\n\n useEffect(() => {\n const dd = ddDefaultValue;\n const mm = mmDefaultValue;\n const yy = yyDefaultValue;\n if (dd) {\n ddField.onChange(dd);\n }\n if (mm) {\n mmField.onChange(mm);\n }\n if (yy) {\n yyField.onChange(yy);\n }\n }, [ddDefaultValue, mmDefaultValue, yyDefaultValue]);\n\n function getCurrentDate() {\n return DateTime.now().toISODate();\n }\n\n const calculateValidDateRange = (): {\n maxValidYear: string;\n minValidYear: string;\n validMonth: string;\n validDay: string;\n minDateRange: string;\n maxDateRange: string;\n } => {\n const maxDateRange = DateTime.fromISO(getCurrentDate())\n .minus({ years: calendarConfig?.age?.max })\n .toISODate();\n const minDateRange = DateTime.fromISO(getCurrentDate())\n .minus({ years: calendarConfig?.age?.min })\n .toISODate();\n return {\n maxValidYear: maxDateRange?.split('-')[0],\n minValidYear: minDateRange?.split('-')[0],\n validMonth: maxDateRange?.split('-')[1],\n validDay: maxDateRange?.split('-')[2],\n minDateRange,\n maxDateRange,\n };\n };\n\n const validDateRage = calculateValidDateRange();\n\n return (\n <Controller\n control={control}\n name={name}\n render={({ field, fieldState: { error } }) => {\n const options = monthGenerator({\n calenderType: calendarConfig?.type,\n localeType: calendarConfig?.locale,\n monthNameLength: MonthNameLength.LONG,\n });\n\n const inputDate = useMemo(\n () => field?.value?.split('-'),\n [field.value],\n );\n\n const day = expiryDate\n ? ''\n : defaultDate?.length === 3\n ? inputDate?.[0]\n : '';\n\n const month =\n inputDate?.[\n `${expiryDate ? (dateExist ? 1 : 0) : defaultDate?.length === 3 ? 1 : 0}`\n ] ?? '';\n const year =\n inputDate?.[\n `${expiryDate ? (dateExist ? 2 : 1) : defaultDate?.length === 3 ? 2 : 1}`\n ] ?? '';\n\n const getDate = useCallback(\n () => (!expiryDate ? (day ? `${day}-` : '') : ''),\n [day, expiryDate],\n );\n\n useEffect(() => {\n field.onChange(\n expiryDate ? `${month}-${year}` : `${day}-${month}-${year}`,\n );\n }, [expiryDate]);\n\n const hasValidDate = useMemo(() => {\n const { minDateRange, maxDateRange } = validDateRage;\n const toMillis = (date: string) => {\n return DateTime.fromISO(date).toMillis();\n };\n const computedDate = toMillis(\n expiryDate ? `${year}-${month}-01` : `${year}-${month}-${day}`,\n );\n return (\n toMillis(maxDateRange) <= computedDate &&\n computedDate <= toMillis(minDateRange)\n );\n }, [day, month, year]);\n\n const getErrorInfo = () => {\n const errorInfo =\n ddState?.errors[`${name}-dd`] ||\n mmState?.errors[`${name}-mm`] ||\n yyState?.errors[`${name}-yyyy`];\n const errorMessage = errorInfo?.message as string;\n\n return { errorInfo, errorMessage };\n };\n\n return (\n <>\n <div>\n <div\n className={clsx('f1-w-full', 'f1-py-2')}\n data-testid={testid.container}\n >\n <label\n htmlFor={name}\n className={clsx(\n 'f1-text-tertiary-grey-800',\n 'f1-text-sm',\n 'f1-font-medium',\n 'f1-w-full',\n 'f1-py-2',\n )}\n >\n {label}\n </label>\n </div>\n <div\n className={clsx(\n 'f1-w-full',\n 'f1-h-auto',\n 'f1-flex',\n 'f1-justify-between',\n 'f1-gap-3',\n 'f1-relative',\n {\n 'f1-mb-2': error || !!getErrorInfo()?.errorMessage?.length,\n },\n )}\n >\n {!expiryDate && (\n <Input\n {...ddField}\n type=\"number\"\n name={`${name}-dd`}\n placeholder={calendarConfig?.day?.placeholder || 'Day'}\n control={control}\n hideError={true}\n shouldUnregister\n onChange={(e) =>\n field.onChange(\n getFormateDate(\n `${(!expiryDate && e.target.value) || ''}-${\n month || ''\n }-${year || ''}`,\n ),\n )\n }\n rules={{\n deps: [`${name}-dd`, `${name}-mm`, `${name}-yyyy`],\n required: {\n value: !!calendarConfig?.day?.required,\n message:\n calendarConfig?.message || 'Please enter valid date',\n },\n maxLength: {\n value: 2,\n message:\n calendarConfig?.message || 'Please enter valid date',\n },\n pattern: {\n value: new RegExp(\n ValidationRulesForForm.onlyNumbers.value,\n ),\n message:\n calendarConfig?.message || 'Please enter valid date',\n },\n validate: (value: string) => {\n const maxDays = getMaxDaysInMonth({\n month: month,\n year: year,\n calendarType: calendarConfig?.type,\n });\n\n return (\n (parseInt(value) > 0 &&\n (calendarConfig?.age\n ? hasValidDate\n : parseInt(value) <= maxDays)) ||\n calendarConfig?.age?.message ||\n calendarConfig?.message ||\n 'Please enter a valid date'\n );\n },\n }}\n />\n )}\n\n <SelectFormField\n testid={{ mockImg: testid?.mockImg }}\n control={control}\n name={`${name}-mm`}\n ulClassName={clsx(\n { 'f1-w-[206.5%]': expiryDate },\n { 'f1-w-[210.5%]': !expiryDate },\n )}\n {...mmField}\n shouldUnregister\n options={options}\n placeholder={calendarConfig?.month?.placeholder || 'Month'}\n emptyText=\"No record found\"\n hideError={true}\n onChange={(e) => {\n field.onChange(\n getFormateDate(\n `${getDate()}${(e.target.value ?? month) || ''}-${year || ''}`,\n ),\n );\n }}\n rules={{\n deps: [`${name}-dd`, `${name}-mm`, `${name}-yyyy`],\n required: {\n value: calendarConfig?.month?.required,\n message:\n calendarConfig?.message || 'Please enter valid month',\n },\n validate: (value: string) => {\n return (\n (parseInt(value) > 0 &&\n (calendarConfig?.age\n ? hasValidDate\n : parseInt(value) <= 12)) ||\n calendarConfig?.age?.message ||\n calendarConfig?.message ||\n 'Please enter a valid month'\n );\n },\n }}\n autocomplete\n />\n\n <Input\n type=\"number\"\n control={control}\n {...yyField}\n placeholder={calendarConfig?.year?.placeholder || 'Year'}\n hideError={true}\n name={`${name}-yyyy`}\n shouldUnregister\n onChange={(e) => {\n field.onChange(\n getFormateDate(\n `${getDate()}${month || ''}-${e.target.value || ''}`,\n ),\n );\n }}\n rules={{\n deps: [`${name}-dd`, `${name}-mm`, `${name}-yyyy`],\n required: {\n value: !!calendarConfig?.year?.required,\n message: calendarConfig?.message || 'Please enter year',\n },\n min: {\n value: calendarConfig?.age\n ? +validDateRage.maxValidYear\n : 1900,\n message:\n calendarConfig?.age?.message ||\n calendarConfig?.message ||\n 'Please enter a valid year',\n },\n\n max: {\n value: calendarConfig?.age\n ? +validDateRage.minValidYear\n : calendarConfig?.maxYear ?? new Date().getFullYear(),\n\n message:\n calendarConfig?.age?.message ||\n calendarConfig?.message ||\n 'Please enter a valid year',\n },\n\n minLength: {\n value: 4,\n message:\n calendarConfig?.message || 'Please enter a valid year',\n },\n maxLength: {\n value: 4,\n message:\n calendarConfig?.message || 'Please enter a valid year',\n },\n\n pattern: {\n value: new RegExp(\n ValidationRulesForForm.onlyNumbers.value,\n ),\n message:\n calendarConfig?.message ||\n 'Please enter numeric vale only',\n },\n }}\n />\n </div>\n </div>\n\n {(helperText?.length ||\n (!expiryDate &&\n ddState?.errors[`${name}-dd`]?.message?.toString()?.length) ||\n mmState?.errors[`${name}-mm`]?.message?.toString()?.length ||\n yyState?.errors[`${name}-yyyy`]?.message?.toString()?.length) && (\n <div>\n <div\n className={clsx(\n 'f1-flex',\n 'f1-flex-col',\n 'f1-gap-1',\n 'f1-mt-[-4px]',\n 'f1-text-[14px]',\n )}\n data-testid={testid.error}\n >\n {!!getErrorInfo()?.errorMessage?.length && (\n <div\n className={clsx('f1-flex', 'f1-text-tertiary-red-600')}\n >\n <img\n className={clsx('f1-mr-1')}\n src={testid.mockImg ?? icons.alertCircleOutline}\n alt=\"error icon\"\n />\n {getErrorInfo()?.errorMessage}\n </div>\n )}\n <div className={clsx('f1-text-tertiary-grey-500')}>\n {helperText}\n </div>\n </div>\n </div>\n )}\n </>\n );\n }}\n />\n );\n};\n\nexport default StandardDate;\n","import clsx from 'clsx';\n\nimport { icons } from '../../../constants/icons';\n\nimport type { FrankieSelectOptions } from '../../../types/form';\nimport type { InputProps } from '../SharedInput/Input';\nimport type { FieldValues } from 'react-hook-form';\n\nexport type ActionToggleConfig = {\n toggleConfig: {\n label?: string;\n rules?: Partial<Pick<InputProps<FieldValues>, 'rules'>['rules']>;\n };\n};\n\nexport type FrankieActionFieldProps<AType> = {\n options: FrankieSelectOptions<boolean>[];\n onChange?: (value: boolean) => void;\n helperText?: string;\n error?: null | string;\n currentValue?: AType;\n testid?: {\n label?: string;\n optionsMapper?: string;\n textWrapper?: string;\n options?: string;\n mockImg?: string | null;\n };\n control?: Pick<InputProps<FieldValues>, 'control'>['control'];\n} & Partial<ActionToggleConfig>;\n\nconst FrankieActionField = <AType extends string | number | boolean>({\n toggleConfig,\n options = [\n { label: 'Yes', value: true },\n { label: 'No', value: false },\n ],\n onChange,\n error,\n helperText,\n currentValue,\n testid = {\n label: '',\n optionsMapper: '',\n textWrapper: '',\n options: '',\n mockImg: null,\n },\n}: FrankieActionFieldProps<AType>) => {\n return (\n <div className={clsx('f1-w-full')}>\n {toggleConfig?.label && (\n <div\n data-testid={testid.label}\n className={clsx(\n 'f1-w-full',\n 'f1-bg-white',\n 'f1-border',\n 'f1-rounded-sm',\n 'f1-py-2',\n 'f1-focus:outline-none',\n )}\n >\n <div className={clsx('grow')}>\n <label\n className={clsx(\n 'f1-text-tertiary-grey-800',\n 'f1-text-sm',\n 'f1-font-medium',\n 'f1-w-full',\n )}\n >\n {toggleConfig?.label}\n </label>\n </div>\n </div>\n )}\n\n <div\n data-testid={testid.optionsMapper}\n className={clsx(\n 'frankie-text-field-container',\n 'f1-flex',\n 'f1-justify-between',\n 'f1-items-center',\n )}\n >\n {options.map((option) => (\n <div\n data-testid={testid.options}\n key={option.label}\n tabIndex={0}\n className={clsx(\n 'f1-border',\n 'f1-border-solid',\n { 'f1-border-tertiary-grey-300': !error },\n { 'f1-border-tertiary-red-700': error },\n 'f1-w-[48%]',\n 'f1-h-[48px]',\n 'f1-flex',\n 'f1-justify-center',\n 'f1-items-center',\n 'hover:f1-bg-primary-container',\n 'f1-cursor-pointer',\n 'f1-rounded-l-sm',\n 'f1-border-r-sm',\n 'f1-rounded-sm',\n { 'hover:f1-border-primary-container': !error },\n { '!f1-border-primary-container': option.value === currentValue },\n { 'f1-bg-primary-container': option.value === currentValue },\n )}\n onClick={() => onChange && onChange(option.value)}\n >\n {option.label}\n </div>\n ))}\n </div>\n\n <div className={clsx('f1-flex')}>\n {(helperText || error) && (\n <div data-testid={testid.textWrapper}>\n <div\n className={clsx(\n 'f1-flex',\n 'f1-flex-col',\n 'f1-gap-1',\n 'f1-mt-1',\n 'f1-text-[14px]',\n )}\n >\n <div className={clsx('f1-flex', 'f1-text-tertiary-red-600')}>\n {error\n? (\n <img\n className={clsx('f1-mr-1')}\n src={testid.mockImg ?? icons.alertCircleOutline}\n />\n )\n: (\n ''\n )}\n {error && error}\n </div>\n <div className={clsx('f1-text-tertiary-grey-500')}>\n {helperText}\n </div>\n </div>\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default FrankieActionField;\n","import clsx from 'clsx';\nimport { useCallback } from 'react';\nimport { type Control, type FieldValues } from 'react-hook-form';\n\nimport { ConfigCSSKeys } from '../../../appConfig.type';\nimport Input from '../../base/SharedInput/Input';\nimport { SelectFormField } from '../../base/SharedSelect/Select';\nimport ActionFormField from '../ActionFormField/ActionFormField';\n\nimport type { FormField, InputConfigType } from '../../../appConfig.type';\nimport type { Dispatch, SetStateAction } from 'react';\n\ntype PropsType<MType extends FieldValues, IType extends InputConfigType> = {\n onActionChange: Dispatch<SetStateAction<boolean>>;\n control: Control<MType>;\n config?: FormField<IType>[];\n testid?: {\n mockImg?: string;\n };\n onChange?: (\n e: React.ChangeEvent<HTMLInputElement | HTMLSelectElement>,\n ) => void;\n};\n\nconst ManualAddress = <\n MType extends FieldValues,\n IType extends InputConfigType,\n>({\n onActionChange,\n control,\n config,\n testid = null,\n onChange,\n}: PropsType<MType, IType>) => {\n const formFields = useCallback(\n (configField) => {\n const formConfig = {\n ...configField,\n rules: {\n ...(configField?.rules ?? {}),\n ...(configField?.rules?.pattern && {\n pattern: {\n ...configField?.rules?.pattern,\n value: new RegExp(configField?.rules?.pattern?.value),\n },\n }),\n },\n };\n\n return {\n input: formConfig?.['showToggle'] ? (\n <ActionFormField\n config={formConfig}\n type={formConfig?.['type'] ?? 'text'}\n onChange={onChange}\n />\n ) : (\n <Input\n {...formConfig}\n type={formConfig?.['type'] ?? 'text'}\n onChange={onChange}\n />\n ),\n\n select: (\n <SelectFormField\n {...formConfig}\n autocomplete\n hideError={false}\n errorText={formConfig?.rules?.required?.message}\n testid={testid}\n onChange={onChange}\n />\n ),\n };\n },\n [config],\n );\n\n return (\n <div className={clsx('f1-flex', 'f1-flex-col', 'f1-gap-[12px]')}>\n {config?.map((field, index: number) => {\n const configField = {\n ...field,\n control,\n };\n if (field?.hide) return null;\n\n return (\n <div\n className={clsx('f1-w-full', ConfigCSSKeys.formField)}\n key={`manual-address-${index}-${field.name}`}\n style={{\n ...(config?.['style']?.[ConfigCSSKeys.formField] ?? {}),\n ...field?.style?.[ConfigCSSKeys.formField],\n }}\n >\n {\n formFields(configField as unknown as FormField<IType>)[\n field.fieldType as unknown as InputConfigType\n ]\n }\n </div>\n );\n })}\n <div className=\"f1-w-full\">\n <span\n className={clsx(\n 'f1-text-[16px]',\n 'f1-text-primary-700',\n 'f1-cursor-pointer',\n )}\n onClick={() => onActionChange(false)}\n >\n Use address search\n </span>\n </div>\n </div>\n );\n};\n\nexport default ManualAddress;\n","export enum ADDRESS_INFO_ENUM {\n PREMISE = 'premise',\n FLOOR = 'floor',\n SUBLOCALITY_LEVEL_1 = 'sublocality_level_1',\n ROUTE = 'route',\n STREET_ADDRESS = 'street_address',\n LOCALITY = 'locality',\n ADMINISTRATIVE_AREA_LEVEL_1 = 'administrative_area_level_1',\n COUNTRY = 'country',\n POSTAL_CODE = 'postal_code',\n STREET_NUMBER = 'street_number',\n SUB_PREMISE = 'subpremise',\n}\n","import { Address } from '@module/common/shared/models/Address';\n\nimport { alpha2ToAlpha3 } from '../../formio/transformers/countryData';\nimport { ADDRESS_INFO_ENUM } from '../constants/address.const';\n\nexport interface GoogleSearchAddressDetails {\n address_components: {\n long_name: string;\n short_name: string;\n types: string[];\n }[];\n formatted_address: string;\n geometry: {\n location: { lat: number; lng: number };\n location_type: string;\n viewport: {\n northeast: { lat: number; lng: number };\n southwest: { lat: number; lng: number };\n };\n };\n place_id: string;\n plus_code: {\n compound_code: string;\n global_code: string;\n };\n types: string[];\n description: string;\n}\n\nexport class GoogleSearchAddress extends Address {\n fullAddress: string;\n streetAddress: string;\n label: string;\n value: string;\n constructor(result: google.maps.GeocoderResult) {\n super();\n const addressComponents = result.address_components;\n const getAddressComponent = (type: ADDRESS_INFO_ENUM) => {\n const shortNamesList: ADDRESS_INFO_ENUM[] = [\n ADDRESS_INFO_ENUM.COUNTRY,\n ADDRESS_INFO_ENUM.ADMINISTRATIVE_AREA_LEVEL_1,\n ];\n const component = addressComponents.find((c) => c.types.includes(type));\n return component\n ? component[shortNamesList.includes(type) ? 'short_name' : 'long_name']\n : null;\n };\n\n this.longForm = result.formatted_address;\n this.fullAddress = result.formatted_address;\n this.buildingName = getAddressComponent(ADDRESS_INFO_ENUM.PREMISE);\n this.state = getAddressComponent(\n ADDRESS_INFO_ENUM.ADMINISTRATIVE_AREA_LEVEL_1,\n );\n this.streetNumber = getAddressComponent(ADDRESS_INFO_ENUM.STREET_NUMBER);\n\n // TODO: if it required for mapping streetType then get it from the address_components\n // this.streetType = getAddressComponent(ADDRESS_INFO_ENUM.ROUTE);\n this.suburb = getAddressComponent(ADDRESS_INFO_ENUM.SUBLOCALITY_LEVEL_1);\n this.town = getAddressComponent(ADDRESS_INFO_ENUM.LOCALITY);\n\n (this.country = getAddressComponent(ADDRESS_INFO_ENUM.COUNTRY)),\n (this.postalCode = getAddressComponent(ADDRESS_INFO_ENUM.POSTAL_CODE));\n this._streetName =\n getAddressComponent(ADDRESS_INFO_ENUM.ROUTE) ||\n getAddressComponent(ADDRESS_INFO_ENUM.STREET_ADDRESS);\n\n this.streetAddress =\n `${this.streetNumber || ''} ${this._streetName || ''}`.trim();\n this.country =\n this.country?.length === 2 ? alpha2ToAlpha3(this.country) : this.country;\n this.unitNumber = getAddressComponent(ADDRESS_INFO_ENUM.SUB_PREMISE);\n }\n}\n","// eslint-disable-next-line check-file/filename-naming-convention\nimport { debounce } from 'lodash';\nimport { useContext } from 'react';\n\nimport { loadAsyncAsset } from '@module/common';\nimport { EventContext } from '@module/form/vendors/react/hooks/useEventContext';\n\nimport { GoogleSearchAddress } from '../model/googleAddress.model';\n\nimport type { GoogleSearchAddressDetails } from '../model/googleAddress.model';\nimport type { FrankieSelectOptions } from '../types/form';\nimport type { Dispatch, SetStateAction } from 'react';\n\nexport type AddressList = GoogleSearchAddress &\n GoogleSearchAddressDetails &\n FrankieSelectOptions;\n\ndeclare let google;\n\nexport const useAddressSearch = () => {\n const { googleApiKey } = useContext(EventContext);\n\n const getAddressList = (\n text: string,\n setAddressOptions?: Dispatch<SetStateAction<FrankieSelectOptions[]>>,\n country: string[] = [],\n ) => {\n // Wrapping the debounced function with a promise\n return new Promise<GoogleSearchAddress[]>((resolve) => {\n debounce(async () => {\n await initializeGoogleMaps();\n\n let addressList: GoogleSearchAddress[] = [];\n if (text) {\n const placeServiceRequest = {\n input: text,\n // REMARKS: restriction based on country\n componentRestrictions: { country },\n };\n const service = new google.maps.places.AutocompleteService();\n\n service.getPlacePredictions(\n placeServiceRequest,\n (predictions, status: string) => {\n if (status == google.maps.places.PlacesServiceStatus.OK) {\n addressList = predictions.map((item) => ({\n label: item.description,\n value: item.place_id,\n }));\n }\n getFullAddress(addressList).then((dataList) => {\n setAddressOptions && setAddressOptions(dataList);\n resolve(dataList);\n });\n },\n );\n } else {\n setAddressOptions && setAddressOptions(addressList);\n resolve(addressList);\n }\n }, 500)();\n });\n };\n\n /**\n *\n * @param placesInfo have the all information about the place, placeId, name\n * @returns formated Address with, OptionsTypes & it have AddressInfomation, country, fullAddrss, state etc of list\n */\n const getFullAddress = (placesInfo: FrankieSelectOptions[]) => {\n return new Promise<GoogleSearchAddress[]>((resolve, reject) => {\n const geocoder = new google.maps.Geocoder();\n const addressPromises: Promise<GoogleSearchAddress>[] = [];\n\n placesInfo.forEach((place) => {\n const geocodeRequest = {\n placeId: place.value,\n };\n\n const promise = new Promise<GoogleSearchAddress>((resolve, reject) => {\n geocoder.geocode(geocodeRequest, (results, status) => {\n if (status === google.maps.GeocoderStatus.OK) {\n const googleSearchData = new GoogleSearchAddress(results[0]);\n googleSearchData['label'] = place.label;\n googleSearchData['value'] = place.value;\n\n resolve(googleSearchData);\n } else {\n reject(new Error('Geocode request failed'));\n }\n });\n });\n\n addressPromises.push(promise);\n });\n\n Promise.all(addressPromises)\n .then((addresses) => resolve(addresses))\n .catch((error) => reject(error));\n });\n };\n\n const isScriptAlreadyIncluded = (src: string) => {\n const scripts = document.getElementsByTagName('script');\n for (let i = 0; i < scripts.length; i++) {\n if (scripts[i].getAttribute('src') === src) {\n return true;\n }\n }\n\n return false;\n };\n\n const initializeGoogleMaps = async () => {\n const source = `https://maps.googleapis.com/maps/api/js?key=${googleApiKey}&libraries=places`;\n if (!isScriptAlreadyIncluded(source)) {\n await loadAsyncAsset(source, 'script');\n }\n };\n\n return { getAddressList, getFullAddress };\n};\n","import clsx from 'clsx';\n\nexport const FrankieLoader = ({\n inputClass = '',\n iconInputClass = '',\n loadingText = '',\n}) => {\n return (\n <li\n className={clsx(\n 'f1-text-sm',\n 'f1-flex',\n 'f1-justify-center',\n 'f1-list-none',\n inputClass,\n )}\n >\n <span\n className={clsx(\n 'f1-flex',\n 'f1-flex-col',\n 'f1-justify-center',\n 'f1-items-center',\n 'f1-gap-1',\n 'f1-text-sm',\n 'f1-text-tertiary-grey-500',\n )}\n >\n <svg\n aria-hidden=\"true\"\n className={clsx(\n 'f1-inline',\n 'f1-animate-spin',\n 'f1-fill-primary-600',\n 'f1-h-24',\n 'f1-w-24',\n iconInputClass,\n )}\n viewBox=\"0 0 100 101\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z\"\n fill=\"#e5e7eb\"\n />\n <path\n d=\"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z\"\n fill=\"currentFill\"\n />\n </svg>\n <div>{loadingText}</div>\n </span>\n </li>\n );\n};\n","import clsx from 'clsx';\nimport React, {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { icons } from '../../../constants/icons';\nimport { useFrankieMenu } from '../../../hooks/menu.hooks';\nimport { FrankieLoader } from '../FrankieLoader/FrankieLoader';\n\nimport type {\n FrankieSelectOptions,\n IFrankieTextAreaProps,\n} from '../../../types/form';\n\nexport const FrankieTextArea = forwardRef(function FrankieSelectField<\n T extends string | number,\n>(\n {\n className = '',\n inputClassName = '',\n disabled = false,\n error = false,\n errorText = '',\n label,\n name,\n placeholder = '',\n helperText = '',\n tag,\n badge,\n options,\n testid = {\n container: '',\n input: '',\n label: '',\n tag: '',\n supportingText: '',\n closeCta: '',\n actionBtn: ' ',\n mockImg: null,\n },\n value,\n onBlur,\n onChange,\n onClick,\n onFocus,\n autocomplete = false,\n clearable = false,\n required,\n onActionChange,\n icon,\n autoSuggestion,\n autoSuggestShowAfter,\n actionLabel,\n loading = false,\n }: IFrankieTextAreaProps<T>,\n ref: React.LegacyRef<HTMLTextAreaElement>,\n): JSX.Element {\n // To keep track of the selected index\n const [selectedIndex, setSelectedIndex] = useState<number | null>(null);\n\n // To keep track of value input - usually in case of autocomplete\n const [filterText, setFilterText] = useState('');\n\n const textAreaRef = useRef<HTMLTextAreaElement>(null);\n\n const { parentRef, isOpen, handleOpen, handleToggle, handleClose } =\n useFrankieMenu();\n\n const selectedValueLabel = useMemo(\n () => options.find((item) => item.value === value)?.label,\n [value, options],\n );\n\n /**\n * Final option if autocomplete\n * Filtering option when autocomplete is on and filterText should no be equal to already selected value\n */\n const filteredOptions = useMemo(\n () =>\n autocomplete && filterText && filterText !== selectedValueLabel\n ? options.filter((item) =>\n item.label\n .toLowerCase()\n .trim()\n .startsWith(filterText.toLowerCase().trim()),\n )\n : options,\n [options, filterText, autocomplete, selectedValueLabel],\n );\n\n /**\n * On option click\n */\n const handleSelectOption = (option: FrankieSelectOptions<T>) => () => {\n const { label } = option;\n onChange({ target: { value: label as T } });\n setFilterText(label);\n handleClose();\n };\n\n /**\n * On Input change\n */\n\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n setFilterText(e.target.value);\n const text = e.target.value;\n onChange({ target: { value: text as T, isAutoSuggestChange: true } });\n if (!isOpen) handleOpen();\n };\n\n useEffect(() => {\n const currentIndex = filteredOptions.findIndex(\n (option) => option.value === value,\n );\n\n if (isOpen) {\n setSelectedIndex(currentIndex);\n } else {\n setFilterText(\n currentIndex === -1 ? '' : filteredOptions[currentIndex].label,\n );\n }\n }, [isOpen, filteredOptions, value]);\n\n const handleOptionToggle = (\n e: React.MouseEvent<HTMLTextAreaElement, MouseEvent>,\n ) => {\n if (onClick) onClick(e);\n if (disabled) return;\n handleToggle();\n };\n\n /**\n * To handle clearing of data from cross button\n */\n const handleClear = () => {\n onChange({ target: { value: '' as T } });\n setFilterText('');\n };\n\n const handleKeyDown = (\n e: React.KeyboardEvent<HTMLTextAreaElement | HTMLLIElement>,\n ) => {\n switch (e.key) {\n case 'ArrowUp':\n case 'ArrowDown':\n e.preventDefault();\n if (isOpen) {\n setSelectedIndex((prevIndex) => {\n let newIdx = 0;\n if (prevIndex !== null) {\n newIdx =\n e.key === 'ArrowDown'\n ? Math.min(filteredOptions.length - 1, prevIndex + 1)\n : Math.max(0, prevIndex - 1);\n }\n\n const selectedOption = document.querySelector(\n `.frankie-select-option-${newIdx}`,\n );\n\n selectedOption?.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n });\n\n return newIdx;\n });\n } else handleOpen();\n\n break;\n case 'Enter':\n if (selectedIndex !== null && filteredOptions?.[selectedIndex]) {\n const { value, label } = filteredOptions?.[selectedIndex] ?? {};\n onChange({ target: { value } });\n setFilterText(label);\n handleClose();\n setSelectedIndex(null);\n }\n break;\n case 'Escape':\n handleClose();\n break;\n default:\n if (!autocomplete) e.preventDefault();\n break;\n }\n };\n\n const handleClick = () => {\n onActionChange && onActionChange(true);\n };\n\n function autoResize() {\n if (textAreaRef.current) {\n textAreaRef.current.style.height = '40px';\n textAreaRef.current.style.height =\n textAreaRef.current.scrollHeight + 'px';\n\n const maxHeight = 156;\n\n if (parseInt(textAreaRef.current.style.height) >= maxHeight) {\n textAreaRef.current.style.overflowY = 'scroll';\n } else {\n textAreaRef.current.style.overflowY = 'hidden';\n }\n }\n }\n\n useEffect(() => {\n autoResize();\n }, [textAreaRef.current?.value, handleClear]);\n\n const TextAreaSuggestion = useCallback(\n () => (\n <>\n {(autoSuggestion ? options?.length > 0 : filteredOptions.length > 0) ? (\n (autoSuggestion ? options : filteredOptions).map((option, index) => (\n <li\n role=\"option\"\n aria-selected={index === selectedIndex}\n key={option.value}\n onClick={handleSelectOption(option)}\n onKeyDown={handleKeyDown}\n className={clsx(\n 'f1-list-none',\n 'f1-text-md',\n 'f1-py-2',\n 'f1-px-4',\n 'f1-cursor-pointer',\n 'f1-text-tertiary-grey-700',\n {\n 'f1-bg-primary-50': index === selectedIndex,\n 'f1-hover:bg-gray-100': index !== selectedIndex,\n },\n `frankie-select-option-${index}`,\n )}\n data-testid={option?.testId}\n >\n {option.label}\n </li>\n ))\n ) : (\n <li\n className={clsx('f1-text-md', 'f1-py-2', 'f1-px-4', 'f1-list-none')}\n >\n {!options.length && 'No Results Available'}\n </li>\n )}\n {actionLabel && (\n <li\n className={clsx(\n 'f1-text-[16px]',\n 'f1-py-2',\n 'f1-px-4',\n 'f1-text-[#306ef9]',\n 'f1-cursor-pointer',\n 'f1-list-none',\n )}\n data-testid={testid.actionBtn}\n onClick={handleClick}\n >\n {actionLabel}\n </li>\n )}\n </>\n ),\n [\n options,\n selectedIndex,\n filteredOptions,\n autoSuggestion,\n actionLabel,\n testid.actionBtn,\n loading,\n ],\n );\n\n return (\n <div\n className={clsx(\n 'f1-w-full',\n className,\n disabled ? 'pointer-events-none' : '',\n )}\n data-testid={testid.container}\n ref={parentRef}\n >\n {(label || tag) && (\n <div className={clsx('f1-flex', 'f1-flex-initial', 'f1-py-2')}>\n <div className=\"grow\">\n <label\n htmlFor={name}\n className={clsx(\n 'f1-text-sm',\n 'f1-font-medium',\n 'f1-w-full',\n 'f1-text-tertiary-grey-800',\n )}\n data-testid={testid.label}\n >\n {label}\n </label>\n </div>\n <div\n className={clsx(\n 'f1-flex',\n 'f1-flex-initial',\n 'f1-grow',\n 'f1-justify-end',\n 'f1-text-tertiary-grey-800',\n )}\n data-testid={testid.tag}\n >\n {tag}\n </div>\n </div>\n )}\n <div\n className={clsx('f1-relative', 'frankie-select-field-container', {\n 'f1-min-h-[52px]': error,\n })}\n >\n <textarea\n id={name}\n name={name}\n aria-label={name}\n ref={(textarea) => {\n textAreaRef.current = textarea;\n if (typeof ref === 'function') {\n ref(textarea);\n } else if (typeof ref === 'object') {\n Object.assign(ref.current, textarea);\n }\n }}\n className={clsx(\n 'f1-appearance-none',\n 'f1-w-full',\n 'f1-bg-white',\n 'f1-border',\n 'f1-rounded-sm',\n 'f1-px-[16px]',\n 'f1-py-[14px]',\n 'f1-focus:outline-[0.1px]',\n 'f1-box-border',\n 'f1-border',\n { 'focus:f1-outline-[#2B67F9] ': !error },\n { 'focus:f1-outline-tertiary-red-500': error },\n 'f1-border-solid',\n 'f1-pr-10',\n 'f1-max-h-[150px]',\n 'f1-resize-none',\n 'f1-font-proxima-nova',\n inputClassName,\n 'f1-text-md',\n 'f1-font-normal',\n 'f1-text-[#374151]',\n {\n 'f1-border-tertiary-red-500': error,\n 'f1-placeholder-tertiary-red-600': error,\n '!f1-text-tertiary-red-600': error,\n 'f1-bg-[#FDF2F2]': error,\n 'f1-border-tertiary-grey-300': !error,\n },\n )}\n placeholder={placeholder}\n disabled={disabled}\n value={filterText?.length ? filterText : value ?? ''}\n data-testid={testid.input}\n onBlur={onBlur}\n onChange={handleChange}\n onClick={handleOptionToggle}\n onFocus={onFocus}\n required={required}\n onKeyDown={handleKeyDown}\n autoComplete=\"off\"\n />\n <div className=\"f1-relative\">\n {isOpen &&\n (autoSuggestShowAfter\n ? (filterText.length >= autoSuggestShowAfter || value?.toString()?.length >= autoSuggestShowAfter)\n : true) && (\n <ul\n className={clsx(\n 'frankie-select-options',\n 'f1-p-1',\n 'f1-absolute',\n 'f1-z-50',\n 'f1-bg-mono-white',\n 'f1-m-0',\n 'f1-shadow-md',\n 'f1-rounded-sm',\n 'f1-top--1',\n 'f1-w-full',\n 'f1-box-border',\n 'f1-max-h-[193px]',\n 'f1-py-1',\n 'f1-overflow-y-auto',\n 'f1-scrollbar-sm',\n 'f1-overflow-x-hidden',\n )}\n >\n {loading ? (\n <FrankieLoader\n iconInputClass={clsx('!f1-h-8', '!f1-w-8')}\n loadingText=\"Loading...\"\n />\n ) : (\n <TextAreaSuggestion />\n )}\n </ul>\n )}\n </div>\n {icon && !(clearable && !!filterText) && (\n <img\n onClick={onClick}\n className={clsx(\n 'f1-absolute',\n 'f1-top-[25.5%]',\n 'f1-right-3',\n 'f1-cursor-pointer',\n )}\n src={testid.mockImg ?? (error ? icons.magnifyError : icons.magnify)}\n />\n )}\n\n {!!badge && badge}\n {clearable && !!filterText && (\n <img\n onClick={handleClear}\n className={clsx(\n 'f1-absolute',\n 'f1-top-[25.5%]',\n 'f1-right-3',\n 'f1-text-tertiary-grey-500',\n 'f1-cursor-pointer',\n )}\n data-testid={testid.closeCta}\n src={testid.mockImg ?? (error ? icons.closeError : icons.close)}\n />\n )}\n </div>\n <div className=\"f1-flex\">\n {(helperText || errorText) && (\n <div className={clsx('f1-grow', 'f1-text-mono-70', 'f1-text-sm')}>\n <div className={clsx('f1-flex', 'f1-flex-col', 'f1-gap-1')}>\n <div\n data-testid={testid.supportingText}\n className={clsx(\n 'f1-flex',\n error\n ? 'f1-text-tertiary-red-600'\n : 'f1-text-tertiary-grey-500',\n 'f1-text-[14px]',\n )}\n >\n {error ? (\n <img\n className={clsx('f1-mr-1')}\n src={testid.mockImg ?? icons.alertCircleOutline}\n alt=\"error\"\n />\n ) : (\n ''\n )}\n {error && errorText}\n </div>\n\n <div className={clsx('f1-text-tertiary-grey-500')}>\n {helperText}\n </div>\n </div>\n </div>\n )}\n </div>\n </div>\n );\n});\n","import { Controller } from 'react-hook-form';\n\nimport { FrankieTextArea } from '../FrankieTextArea/FrankieTextArea';\n\nimport type { IFrankieTextAreaProps } from '../../../types/form';\nimport type {\n ControllerRenderProps,\n ControllerProps,\n FieldValues,\n Path,\n} from 'react-hook-form';\n\ntype Props<\n FType extends FieldValues,\n TFormValues extends FieldValues,\n TOption extends string | number,\n> = Omit<IFrankieTextAreaProps<TOption>, keyof ControllerRenderProps> &\n Omit<ControllerProps<TFormValues>, 'render'> & {\n name: Path<FType>;\n onChange?: (data: string) => void;\n actionLabel?: string;\n };\n\nexport const TextArea = <\n FType extends FieldValues,\n TFormValues extends FieldValues,\n TOption extends string | number,\n>({\n name,\n control,\n defaultValue,\n options,\n rules,\n isManual,\n shouldUnregister,\n autoSuggestion,\n onChange,\n ...selectProps\n}: Props<FType, TFormValues, TOption>) => {\n return (\n <Controller\n render={({ field, fieldState: { error } }) => {\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n onChange && onChange(e.target.value);\n if (!e.target?.['isAutoSuggestChange'] || !e.target.value?.length)\n field.onChange(e.target.value);\n };\n\n return (\n <FrankieTextArea\n options={options}\n errorText={error?.message}\n error={isManual ? false : !!error?.message}\n autoSuggestion={autoSuggestion}\n {...selectProps}\n {...field}\n onChange={handleChange}\n />\n );\n }}\n control={control}\n name={name}\n defaultValue={defaultValue}\n rules={rules}\n shouldUnregister={shouldUnregister}\n />\n );\n};\n","import get from 'lodash.get';\nimport { useEffect, useState, type Dispatch, type SetStateAction } from 'react';\n\nimport { useAddressSearch } from '../../../hooks/useAddressSearch';\nimport { TextArea } from '../../base/SharedTextArea/TextArea';\n\nimport type { GoogleSearchAddress } from '../../../model/googleAddress.model';\nimport type { FrankieSelectOptions } from '../../../types/form';\nimport type { Control, FieldValues, Path } from 'react-hook-form';\n\ntype PropsType<SType extends FieldValues> = {\n isManual: boolean;\n onActionChange: Dispatch<SetStateAction<boolean>>;\n onSelect?: (data: GoogleSearchAddress) => void;\n autoSuggestShowAfter?: number;\n autoSuggestion?: boolean;\n control: Control<SType>;\n name: Path<SType>;\n label: string;\n actionLabel?: string;\n acceptedCountries?: string[];\n};\n\nconst SearchableAddress = <SType extends FieldValues>({\n onActionChange,\n onSelect,\n isManual,\n control,\n label,\n autoSuggestShowAfter,\n autoSuggestion = false,\n name,\n actionLabel,\n acceptedCountries, \n ...restProps\n}: PropsType<SType>) => {\n const [addressOptions, setAddressOptions] = useState<FrankieSelectOptions[]>(\n [],\n );\n const [isLoading, setLoading] = useState<boolean>(false);\n\n const { getAddressList } = useAddressSearch();\n\n useEffect(()=>{\n setLoading(true);\n getAddressList(get(control._formValues,name),setAddressOptions, acceptedCountries).finally(()=>{\n setLoading(false);\n });\n },[]);\n\n return (\n <div className=\"f1-w-full\">\n <TextArea\n control={control}\n name={name}\n options={addressOptions}\n label={label}\n autocomplete\n clearable={true}\n onActionChange={onActionChange}\n isManual={isManual}\n icon={true}\n loading={isLoading}\n onChange={(data) => {\n setLoading(true);\n const searchedAddress = addressOptions.find(\n (item) => item.label === data,\n ) as GoogleSearchAddress;\n if (searchedAddress) {\n onSelect(searchedAddress);\n setLoading(false);\n } else {\n getAddressList(data, setAddressOptions, acceptedCountries).finally(()=>{\n setLoading(false);\n });\n }\n }}\n autoSuggestion={autoSuggestion}\n autoSuggestShowAfter={autoSuggestShowAfter}\n actionLabel={actionLabel}\n {...restProps}\n />\n </div>\n );\n};\n\nexport default SearchableAddress;\n","import set from 'lodash/set';\nimport get from 'lodash.get';\nimport merge from 'lodash.merge';\nimport { useEffect, useState } from 'react';\n\nimport { getFullAddress, getStreetInfo } from '../../../utils/object.util';\nimport ManualAddress from '../ManualAddress/ManualAddress';\nimport SearchableAddress from '../SearchableAddress/SearchableAddress';\n\nimport type { FormField, InputConfigType } from '../../../appConfig.type';\nimport type { GoogleSearchAddress } from '../../../model/googleAddress.model';\nimport type {\n Control,\n FieldValues,\n Path,\n RegisterOptions,\n} from 'react-hook-form';\n\nexport type FrankieAddressProps<\n AType extends FieldValues,\n IType extends InputConfigType,\n> = {\n control: Control<AType>;\n name: Path<AType>;\n manualFieldConfig: FormField<IType>[];\n label: string;\n isManual?: boolean;\n rules?: RegisterOptions<AType, Path<AType>>;\n actionLabel?: string;\n acceptedCountries?: string[];\n isOverrideCountry?: boolean;\n};\n\nconst FrankieAddress = <\n AType extends FieldValues,\n IType extends InputConfigType,\n>({\n control,\n name,\n manualFieldConfig,\n isManual,\n label,\n actionLabel = 'Enter address manually',\n isOverrideCountry = true,\n ...restProps\n}: FrankieAddressProps<AType, IType>) => {\n const [manual, setIsManual] = useState<boolean>();\n\n useEffect(() => {\n setIsManual(isManual);\n }, [isManual]);\n\n // a flag to determine which format (auto/manual) to submit\n useEffect(() => {\n if (control._formValues.address?.isAddedByCustomer)\n control._formValues.address.isAddedByCustomer = manual;\n }, [manual]);\n\n const setFullAddress = () => {\n const controlPrefixName = name.split('.')[0];\n const fullAddr = getFullAddress(control._formValues?.[controlPrefixName]);\n set(control._formValues, name as string, fullAddr || '');\n const streetInfo = getStreetInfo(control._formValues, controlPrefixName);\n set(\n control._formValues,\n `${controlPrefixName}.streetNumber`,\n streetInfo?.streetNumber || '',\n );\n set(\n control._formValues,\n `${controlPrefixName}.streetName`,\n streetInfo?.streetName || '',\n );\n };\n\n const onChangeAction = (type: 'manual' | 'searchable') => {\n setIsManual(type === 'searchable');\n if (type === 'manual') {\n setFullAddress();\n }\n };\n\n const handleAddressSelect = (item: GoogleSearchAddress) => {\n //For the previous address & for the residential address\n const address = { address: item, address1: item };\n const formFieldName = name?.split('.')[0];\n const addressObj = merge(get(control._formValues, formFieldName), item);\n if (item && addressObj) {\n const country = get(address, 'address.country' as string);\n if (isOverrideCountry && formFieldName === 'address') {\n !!country?.length && set(control._formValues, 'country', country);\n }\n set(control._formValues, formFieldName, addressObj);\n }\n };\n\n return (\n <>\n {!manual ? (\n <SearchableAddress\n label={label}\n onActionChange={() => onChangeAction('searchable')}\n onSelect={handleAddressSelect}\n control={control}\n isManual={manual}\n name={name}\n actionLabel={actionLabel}\n autoSuggestShowAfter={3}\n autoSuggestion\n {...restProps}\n />\n ) : (\n <ManualAddress\n control={control}\n config={manualFieldConfig}\n onActionChange={() => onChangeAction('manual')}\n onChange={setFullAddress}\n />\n )}\n </>\n );\n};\n\nexport default FrankieAddress;\n","import clsx from 'clsx';\nimport set from 'lodash/set';\nimport get from 'lodash.get';\nimport { useEffect, type ReactNode } from 'react';\nimport { useController } from 'react-hook-form';\n\nimport FrankieActionField from '../../base/FrankieActionField/FrankieActionField';\nimport Input from '../../base/SharedInput/Input';\nimport { SelectFormField } from '../../base/SharedSelect/Select';\nimport FrankieAddress from '../FrankieAddress/FrankieAddress';\n\nimport type { InputConfigType } from '../../../appConfig.type';\nimport type { FrankieActionFieldProps } from '../../base/FrankieActionField/FrankieActionField';\nimport type { InputProps } from '../../base/SharedInput/Input';\nimport type { SelectProps } from '../../base/SharedSelect/Select';\nimport type { FrankieAddressProps } from '../FrankieAddress/FrankieAddress';\nimport type { FieldValues } from 'react-hook-form';\n\ntype ControlType<\n CType extends FieldTypes,\n FValues extends FieldValues,\n> = (CType extends 'input'\n ? Omit<InputProps<FValues>, 'options'>\n : NonNullable<unknown>) &\n (CType extends 'select'\n ? SelectProps<FValues, string>\n : NonNullable<unknown>) &\n (CType extends 'address'\n ? FrankieAddressProps<FValues, InputConfigType>\n : NonNullable<unknown>);\n\ntype FieldTypes = 'input' | 'select' | 'address';\n\nexport type ActionFormFieldProps<\n FValues extends FieldValues,\n FType extends FieldTypes = FieldTypes,\n> = {\n config: FrankieActionFieldProps<boolean>;\n} & ControlType<FType, FValues>;\n\nconst ActionFormField = <FValues extends FieldValues>({\n config,\n ...restProps\n}: ActionFormFieldProps<FValues>) => {\n const { toggleConfig } = config;\n const preloadDefaultValue = (): boolean | null => {\n const toggleData = get(\n config?.['control']?._formValues,\n `${config?.['name']}ShowToggle`,\n );\n if (toggleData === false) {\n set(config?.['control']?._formValues, config?.['name'], '');\n }\n return get(config?.control?._formValues, `${config?.['name']}ShowToggle`);\n };\n\n const { field, fieldState } = useController({\n control: config?.['control'],\n name: `${config?.['name']}ShowToggle`,\n defaultValue: '',\n rules: toggleConfig?.rules?.required?.['value'] && {\n validate: (val) => {\n return val === ''\n ? false\n : ![null].includes(val) || toggleConfig?.rules?.required?.['message'];\n },\n },\n });\n\n useEffect(() => {\n field.onChange(preloadDefaultValue());\n }, [config?.['control']?._formValues?.[config?.['name']]]);\n\n const handleSelectValue = (value: boolean) => {\n field.onChange(field.value === value ? null : value);\n };\n const fields: Record<FieldTypes, ReactNode> = {\n input: (\n <Input\n {...(config as unknown as InputProps<FieldValues>)}\n {...(restProps as InputProps<FieldValues>)}\n helperText=\"\"\n />\n ),\n address: (\n <FrankieAddress\n {...config}\n actionLabel={\n config?.['dataType'] === 'previous_addr'\n ? null\n : 'Enter address manually'\n }\n {...(restProps as unknown as FrankieAddressProps<\n FValues,\n InputConfigType\n >)}\n />\n ),\n select: (\n <SelectFormField\n {...(config as unknown as SelectProps<FieldValues, string>)}\n {...(restProps as unknown as SelectProps<FieldValues, string>)}\n />\n ),\n };\n\n return (\n <div className={clsx('f1-flex', 'f1-flex-col', 'f1-gap-[12px]')}>\n <FrankieActionField\n {...config}\n onChange={handleSelectValue}\n currentValue={field.value}\n error={fieldState.error?.message}\n />\n\n {field.value && <>{fields[config?.['fieldType']]}</>}\n </div>\n );\n};\n\nexport default ActionFormField;\n","/* eslint-disable max-len */\n/* eslint-disable @typescript-eslint/consistent-type-imports */\n\nimport clsx from 'clsx';\nimport { forwardRef, useEffect } from 'react';\nimport {\n Control,\n Controller,\n FieldValues,\n Path,\n RegisterOptions,\n useController,\n} from 'react-hook-form';\n\nimport { icons } from '../../../constants/icons';\nimport { FrankieSelectOptions } from '../../../types/form';\nimport { FrankieTextInputTypes } from '../../../types/form/formTypes/textFields.types';\nimport Input from '../../base/SharedInput/Input';\nimport { SelectFormField } from '../../base/SharedSelect/Select';\n\ntype ControlType<TFieldValues extends FieldValues> = {\n label?: string;\n\n placeholder?: {\n cc: string;\n phoneNumber?: string;\n };\n rules?: RegisterOptions<TFieldValues, Path<TFieldValues>>;\n options?: FrankieSelectOptions[];\n emptyText?: string;\n type?: FrankieTextInputTypes;\n};\n\nexport type FrankiePhoneFieldTypeProps<TFieldValues extends FieldValues> = {\n control: Control<TFieldValues>;\n name: Path<TFieldValues>;\n} & ControlType<TFieldValues>;\n\nconst FrankiePhoneField = forwardRef(\n <TFieldValues extends FieldValues>(\n {\n control,\n name,\n emptyText,\n label,\n options,\n placeholder,\n rules,\n type,\n }: FrankiePhoneFieldTypeProps<TFieldValues>,\n ref: React.ForwardedRef<HTMLDivElement>,\n ) => {\n const { field: countryCodeField, formState: countryCodeState } =\n useController({\n name: 'code' as Path<TFieldValues>,\n control: control,\n });\n const { field: phoneNumberField, formState: phoneNumberState } =\n useController({\n name: 'number' as Path<TFieldValues>,\n control: control,\n });\n\n return (\n <Controller\n control={control}\n name={name}\n render={({ field }) => {\n const inputDate = field.value\n ? field.value.split('-')\n : '-'.split('-');\n const code = inputDate[0];\n const number = inputDate[1];\n\n useEffect(() => {\n const currentCode = countryCodeField.value;\n const currentNumber = phoneNumberField.value;\n\n if (code !== currentCode && code) {\n countryCodeField.onChange(code);\n }\n\n if (number !== currentNumber && number) {\n phoneNumberField.onChange(number);\n }\n }, [code, number, countryCodeField, phoneNumberField]);\n\n return (\n <div>\n <div className={clsx('f1-w-full', 'f1-py-2')}>\n <label\n htmlFor={name}\n className={clsx(\n 'f1-text-tertiary-grey-800',\n 'f1-text-sm',\n 'f1-font-medium',\n 'f1-w-full',\n 'f1-py-2',\n )}\n >\n {label}\n </label>\n </div>\n <div\n className={clsx(\n 'f1-w-full',\n 'f1-h-auto',\n 'f1-flex',\n 'f1-relative',\n `${\n countryCodeState.errors.code ||\n phoneNumberState.errors.number\n ? 'f1-mb-6'\n : 'f1-mb-0'\n }`,\n )}\n ref={ref}\n >\n <SelectFormField\n {...countryCodeField}\n control={control as Control<FieldValues>}\n name=\"code\"\n placeholder={placeholder.cc}\n emptyText={emptyText ?? 'No record found'}\n className={clsx('!f1-w-[138px]')}\n inputClassName={clsx(\n '!f1-rounded-l-sm',\n '!f1-border-r-[0px]',\n '!f1-rounded-[0px]',\n {\n '!f1-bg-[#e8f0ff]': !countryCodeState.errors.code,\n },\n )}\n options={options ?? []}\n autocomplete\n rules={{\n required: rules?.required,\n }}\n hideError\n onChange={(e) => {\n field.onChange(`${e.target.value || ''}-${number || ''}`);\n }}\n />\n <Input\n control={control as Control<FieldValues>}\n {...phoneNumberField}\n type={type}\n inputClassName={clsx('!f1-rounded-r-sm', '!f1-rounded-[0px]')}\n name=\"number\"\n placeholder={placeholder.phoneNumber}\n rules={{\n ...rules,\n }}\n hideError\n onChange={(e) => {\n field.onChange(`${code || ''}-${e.target.value || ''}`);\n }}\n />\n\n {(countryCodeState.errors.code ||\n countryCodeState.errors.number) && (\n <div>\n <div\n className={clsx(\n 'f1-flex',\n 'f1-flex-col',\n 'f1-gap-1',\n 'f1-text-[14px]',\n 'f1-absolute',\n 'f1-left-0',\n 'f1-bottom-[-20px]',\n )}\n >\n <div\n className={clsx('f1-flex', 'f1-text-tertiary-red-600')}\n >\n {(countryCodeState.errors.code ||\n countryCodeState.errors.number) && (\n <img\n className={clsx('f1-mr-1')}\n src={icons.alertCircleOutline}\n />\n )}\n {\n (countryCodeState.errors?.code?.message ||\n countryCodeState.errors?.number\n ?.message) as unknown as string\n }\n </div>\n </div>\n </div>\n )}\n </div>\n </div>\n );\n }}\n />\n );\n },\n);\n\nexport default FrankiePhoneField;\n","import clsx from 'clsx';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { ConfigCSSKeys } from '../../../appConfig.type';\nimport { useFormMapper } from '../../../hooks/useFormMapper.hook';\nimport { React_Form_IDS } from '../../../types/pages.type';\nimport Input from '../../base/SharedInput/Input';\nimport { SelectFormField } from '../../base/SharedSelect/Select';\nimport StandardDate from '../../base/StandardDate/StandardDate';\nimport ActionFormField from '../ActionFormField/ActionFormField';\nimport FrankieAddress from '../FrankieAddress/FrankieAddress';\nimport FrankiePhoneField from '../FrankiePhoneField/FrankiePhoneField';\n\nimport type {\n FormPageScreen,\n IFormPageConfig,\n IIdCardPageConfig,\n} from '../../../appConfig.type';\nimport type { ReviewDocument } from '../../../model/review.model';\nimport type { SelectChangeEvent } from '../../base/SharedSelect/Select';\nimport type { ChangeEvent } from 'react';\nimport type { Path, UseFormReturn } from 'react-hook-form';\nexport type PersonIdvConfig = {\n country?: string;\n region?: string;\n};\nexport type FrankieFormMapperProps<PType extends FormPageScreen, FType> = {\n form: UseFormReturn<FType>;\n config: IFormPageConfig<PType> | IIdCardPageConfig;\n individualConfig: {\n idType: ReviewDocument['idType'];\n country: string;\n region: string;\n personalIdv?: {\n country?: string;\n region?: string;\n };\n };\n formFieldsType?: React_Form_IDS;\n previewImage?: boolean;\n isOverrideCountry?: boolean;\n};\n\nconst FrankieFormMapper = <\n FType,\n PType extends FormPageScreen = FormPageScreen,\n>({\n form,\n config,\n individualConfig,\n formFieldsType,\n previewImage = true,\n isOverrideCountry = true,\n}: FrankieFormMapperProps<PType, FType>) => {\n const [formFieldImage, setFormFieldImage] = useState<string>(null);\n const [isExpiryDateField, setIsExpiryDateField] = useState<boolean>(false);\n\n const { control } = form;\n const { getFormConfig, modifyFormConfig } = useFormMapper();\n const { getDefaultImage, documentFields, personalFields } = getFormConfig({\n config,\n idType: individualConfig.idType,\n country: individualConfig.country,\n region: individualConfig.region,\n });\n\n const documentInfo = useMemo(() => {\n const country = individualConfig?.personalIdv?.country;\n\n // For the OCR flow, address field is not dependent to document country, so we need\n // to hide the state field of the address, for the non Australian countries\n const newManualFieldConfig = individualConfig?.personalIdv?.country\n ? personalFields.map((field) => {\n if (field.fieldType === 'address') {\n return {\n ...field,\n manualFieldConfig: field?.['manualFieldConfig']?.map(\n (mField) => ({\n ...mField,\n hide:\n mField.hide ||\n (mField.name === 'address.state' && country !== 'AUS'),\n }),\n ),\n };\n }\n return field;\n })\n : null;\n \n switch (formFieldsType) {\n case React_Form_IDS.PERSONAL:\n return newManualFieldConfig ?? personalFields;\n case React_Form_IDS.DOCUMENT:\n return newManualFieldConfig ?? documentFields;\n default:\n return [...(newManualFieldConfig ?? personalFields), ...documentFields];\n }\n }, [personalFields, documentFields, individualConfig, config]);\n\n const getGenericImage = () =>\n getDefaultImage({\n country: individualConfig.country,\n region: individualConfig.region,\n });\n\n const handleFocus = (e: ChangeEvent<HTMLInputElement>) => {\n if (individualConfig?.idType === 'NATIONAL_HEALTH_ID') return;\n const formFieldImage =\n documentInfo.find((field) => e.target.name === field.name)?.image ||\n getGenericImage();\n setFormFieldImage(formFieldImage);\n };\n\n const handleBlur = () => {\n if (individualConfig?.idType === 'NATIONAL_HEALTH_ID') return;\n setFormFieldImage(getGenericImage());\n };\n\n useEffect(() => {\n if (individualConfig.idType === 'NATIONAL_HEALTH_ID') {\n const idSTData = form.getValues('idSubType' as Path<FType>);\n const selectedOption = documentInfo\n .find((field) => field.name === 'idSubType')\n ?.['options']?.find((op) => op.value === idSTData);\n setIsExpiryDateField(idSTData === 'G');\n handleSelectChange({\n target: { value: idSTData, selected: selectedOption },\n } as SelectChangeEvent);\n }\n }, [individualConfig]);\n\n const handleSelectChange = (e: SelectChangeEvent) => {\n if (individualConfig.idType === 'NATIONAL_HEALTH_ID') {\n setIsExpiryDateField(e.target?.value == 'G');\n }\n\n if (e.target?.selected?.['icon']) {\n setFormFieldImage(e.target?.selected?.['icon']);\n }\n };\n\n useEffect(() => {\n if (getGenericImage()) {\n setFormFieldImage(getGenericImage);\n }\n }, [config, getGenericImage()]);\n\n const formFields = useCallback(\n (configField) => {\n const formConfig = modifyFormConfig(configField);\n\n const getActionField = () => (\n <ActionFormField\n config={formConfig}\n type={formConfig?.['type'] ?? 'text'}\n />\n );\n return {\n input: formConfig?.['showToggle'] ? (\n getActionField()\n ) : (\n <Input\n {...formConfig}\n onBlur={handleBlur}\n onFocus={handleFocus}\n type={formConfig?.['type'] ?? 'text'}\n />\n ),\n date: (\n <StandardDate\n {...formConfig}\n expiryDate={\n ['idExpiry'].includes(configField?.['name']) && isExpiryDateField\n }\n />\n ),\n select: (\n <SelectFormField\n {...formConfig}\n onChange={handleSelectChange}\n autocomplete\n />\n ),\n address: formConfig?.['showToggle'] ? (\n getActionField()\n ) : (\n <FrankieAddress\n {...formConfig}\n isOverrideCountry={isOverrideCountry}\n />\n ),\n phone: <FrankiePhoneField {...formConfig} />,\n };\n },\n [\n config,\n individualConfig,\n individualConfig.country,\n individualConfig.region,\n individualConfig.idType,\n isExpiryDateField,\n ],\n );\n\n return (\n <>\n <form\n className={clsx(\n 'f1-w-full',\n 'f1-h-auto',\n 'f1-flex',\n 'f1-flex-col',\n 'f1-justify-start',\n 'f1-items-start',\n 'f1-mx-auto',\n 'f1-border-2',\n 'f1-border-grey-100',\n 'f1-gap-[12px]',\n 'f1-box-border',\n ConfigCSSKeys.formWrapper,\n )}\n style={config?.['style']?.[ConfigCSSKeys.formWrapper]}\n >\n {documentInfo?.map((field, index: number) => {\n const configField = {\n ...field,\n control,\n inputClassName: clsx(ConfigCSSKeys.formField),\n };\n const excludeFields: (typeof field.dataType)[] = ['previous_addr'];\n if (field?.hide || excludeFields?.includes(field.dataType))\n return null;\n\n return (\n <div\n className={clsx('f1-w-full', ConfigCSSKeys.formField)}\n key={`${field.name}-${index}`}\n style={{\n ...(config?.['style']?.[ConfigCSSKeys.formField] ?? {}),\n ...field?.style?.[ConfigCSSKeys.formField],\n }}\n >\n {formFields(configField)[field.fieldType]}\n </div>\n );\n })}\n </form>\n {formFieldImage && previewImage && (\n <div className={clsx('f1-mx-[21px]', 'f1-mt-6')}>\n <img src={formFieldImage} className={clsx('f1-w-full')} />\n </div>\n )}\n </>\n );\n};\n\nexport default FrankieFormMapper;\n","import type { IAddressConstructor } from '@module/common/shared/models/Address';\nimport { Address } from '@module/common/shared/models/Address';\n\nexport class AddressInfo extends Address {\n fullAddress: string;\n streetAddress?: string;\n constructor(input: IAddressConstructor) {\n super(input);\n this.streetAddress =\n `${input?.streetNumber || ''} ${input?.streetName || ''}`.trim();\n }\n}\n","import type { Address } from '@module/common/shared/models/Address';\nimport type { Core } from '@module/common/shared/models/Core';\nimport type { AcceptableType } from '@module/common/shared/models/Document';\nimport { Document } from '@module/common/shared/models/Document';\nimport { breakDateToObject } from '@module/common/shared/utils';\nimport {\n fullAddressToStreetInfo,\n getStates,\n} from '@module/form/vendors/react/utils/object.util';\n\nimport { alpha2ToAlpha3 } from '../../formio/transformers/countryData';\n\nimport { AddressInfo } from './address.model';\n\nexport class ReviewModelRecords {\n records: ReviewDocument;\n\n constructor(input: Document[], address?: Address) {\n const sortedData = [...input].sort((a, b) => {\n const getDate = (data) => {\n // Use optional chaining to access nested properties safely\n return new Date(\n data?.ocrResult?.runDate ?? data?.extraData?.ocr_process_run_date,\n );\n };\n\n const dateA = getDate(a);\n const dateB = getDate(b);\n\n // Handle missing dates by putting them at the end\n if (!dateA && !dateB) return 0;\n if (!dateA) return 1;\n if (!dateB) return -1;\n\n // Sort by date in descending order (newest to oldest)\n return dateB.getTime() - dateA.getTime();\n });\n\n this.records = new ReviewDocument(sortedData?.[0], address);\n }\n}\n\nexport class ReviewDocument extends Document {\n givenName: string;\n middleName: string;\n familyName: string;\n address: AddressInfo;\n extraData: Record<string, string> = {};\n\n constructor(input: Document, address?: Address) {\n super(input);\n // value could be empty string, empty string is truly value\n const str = (value: AcceptableType): string =>\n value?.toString()?.length ? value?.toString() : null;\n\n const dob = breakDateToObject(\n input?.dateOfBirth ??\n str(input?.ocrResult?.dateOfBirth as AcceptableType),\n );\n\n const expiryDate = breakDateToObject(\n this.idExpiry ?? str(input?.ocrResult?.dateOfExpiry as AcceptableType),\n );\n\n this.givenName = str(input?.ocrResult?.firstName as AcceptableType) ?? '';\n this.middleName = str(input?.ocrResult?.middleName as AcceptableType) ?? '';\n this.familyName = str(input?.ocrResult?.lastName as AcceptableType) ?? '';\n this.dateOfBirth = `${dob.dd ?? ''}-${dob.mm ?? ''}-${dob.yyyy ?? ''}`;\n this.idExpiry = expiryDate\n ? `${expiryDate.dd ?? ''}-${expiryDate.mm ?? ''}-${expiryDate.yyyy ?? ''}`\n : '';\n\n this.idType = (input?.idType as Core['enumIdType']) ?? 'DRIVERS_LICENCE';\n this.region =\n // convert state name to code\n getStates().find(\n (state) =>\n state.label.toLowerCase() === str(input?.region)?.toLowerCase(),\n )?.value ??\n str(input?.region) ??\n str(input?.ocrResult?.issuingState as AcceptableType) ??\n str(address?.state) ??\n str(input?.ocrResult?.state as AcceptableType) ??\n '';\n\n this.country =\n str(input?.country) ??\n str(input?.ocrResult?.issuingCountry as AcceptableType) ??\n 'AUS';\n\n this.country =\n this.country?.length === 2 ? alpha2ToAlpha3(this.country) : this.country;\n\n this.idNumber =\n str(input?.idNumber) ??\n str(input?.ocrResult?.idNumber as AcceptableType) ??\n '';\n\n this.extraData['reference'] =\n str(input?.extraData?.reference) ??\n str(input?.ocrResult?.reference as AcceptableType);\n\n this.extraData['document_number'] =\n str(input?.extraData?.document_number) ?? '';\n\n const addrCountry =\n str(address?.country) ??\n str(input?.ocrResult?.issuingCountry as AcceptableType);\n this.address = new AddressInfo({\n addressId:\n str(address?.addressId) ??\n str(input?.ocrResult?.addressId as AcceptableType),\n addressType:\n str(address?.addressType) ??\n str(input?.ocrResult?.addressType as AcceptableType) ??\n 'RESIDENTIAL1',\n buildingName:\n str(address?.buildingName) ??\n str(input?.ocrResult?.buildingName as AcceptableType),\n postalCode:\n str(address?.postalCode) ??\n str(input?.ocrResult?.postcode as AcceptableType),\n state:\n str(address?.state) ?? str(input?.ocrResult?.state as AcceptableType),\n streetName:\n str(address?.streetName) ??\n str(input?.ocrResult?.street as AcceptableType),\n streetNumber:\n str(address?.streetNumber) ??\n str(input?.ocrResult?.streetNumber as AcceptableType),\n suburb:\n str(address?.suburb) ?? str(input?.ocrResult?.suburb as AcceptableType),\n town: str(address?.town) ?? str(input?.ocrResult?.town as AcceptableType),\n unitNumber:\n str(address?.unitNumber) ??\n str(input?.ocrResult?.unitNumber as AcceptableType),\n country:\n addrCountry?.length === 2 ? alpha2ToAlpha3(addrCountry) : addrCountry,\n } as AddressInfo);\n\n this.address.fullAddress =\n str(address?.longForm) ??\n str(input?.ocrResult?.address as AcceptableType) ??\n str(input?.ocrResult?.address1 as AcceptableType);\n\n // If the address is not provided, try to fill in the address fields from the OCR result\n if (!this.address.town?.length) {\n this.address.town = this.ocrResult?.addressCity as string;\n }\n\n if (this.address?.addressType === 'RESIDENTIAL') {\n this.address.addressType = 'RESIDENTIAL1';\n }\n\n if (this.address.fullAddress?.length) {\n const { streetName, streetNumber, streetAddress, remainingInfo } =\n fullAddressToStreetInfo(this.address.fullAddress);\n\n if (!this.address?.streetNumber?.toString()?.length) {\n this.address.streetAddress = streetAddress;\n this.address.streetNumber = streetNumber;\n }\n\n if (!this.address?.streetName?.length) {\n this.address.streetAddress =\n `${streetAddress}, ${remainingInfo}`.trim();\n this.address.streetName = `${streetName}, ${remainingInfo}`.trim();\n }\n }\n }\n}\n\nexport type ReviewDocumentKeys = keyof ReviewDocument;\n\nexport type ReviewDocumentForm = ReviewDocument & AddressInfo;\n","import type { OneSdkContext } from '@module/sdk/types';\n\nimport type { IStaticPageConfig } from '../../appConfig.type';\n\nexport const hostedBusinessConsentConfig = ({\n instance,\n}: {\n instance: OneSdkContext;\n}) => {\n const business = instance.business();\n const name = business.access('name').getValue()?.name;\n\n return {\n name: 'CONSENT',\n mode: 'business',\n title: { label: 'Your consent matters', style: {} },\n descriptions: [\n {\n label: `You consent to your personal information (including business records) being collected and used in accordance with ${name || '[Business entity name]'} Privacy Policy for the purposes of investigating and determining the legitimacy of a company and its overall ownership structure, to conduct due diligence procedures to ensure business activities and partnering entities are not involved in illegal activities.`,\n },\n {\n label:\n 'You also consent to the verification of this information against records held by official document issuers or official record holders via third party systems in accordance with Australian Privacy Principles.',\n },\n {\n label:\n 'You consent to such organisations authorised by me to use your personal and business information for the purpose of monitoring and improving their verification services.',\n },\n ],\n checkbox: {\n content: [\n {\n label: 'I have read and agree to the above disclosure',\n },\n ],\n },\n cta: { icon: '', label: 'Continue', style: {} },\n } satisfies IStaticPageConfig;\n};\n","import { icons } from '../../constants/icons';\n\nimport { Content, IStaticPageConfig } from '../../appConfig.type';\nimport { DateTime } from 'luxon';\nimport type { OneSdkContext } from '@module/sdk/types';\nimport { getReadableDocType } from '@module/form/vendors/react/utils/object.util';\n\nexport const hostedBusinessWelcomePage = ({\n instance,\n}: {\n instance: OneSdkContext;\n}) => {\n const { requestedDocuments, senderName, linkExpiry } =\n instance.session.getExtraData() || {};\n\n const business = instance.business();\n const name = business.access('name').getValue()?.name;\n\n return {\n name: 'WELCOME',\n mode: 'business',\n title: { label: `Document request` },\n descriptions: [\n {\n label: `We need to collect some documents to verify your relation to ${name || '[Business entity name]'}. Please upload all documents requested below.`,\n },\n ],\n instructions: {\n label: 'Requested documents',\n content: parseRequestedDocs(requestedDocuments),\n },\n sender: `The document requested by ${senderName || '[Empty]'}.`,\n expiry: `The link will expire on ${getExpiryDateTime(linkExpiry) || '[date][time]'}.`,\n cta: { label: 'Next', style: {} },\n style: {},\n } satisfies IStaticPageConfig;\n};\n\nconst parseRequestedDocs = (requestedDocs: string): Content<'WELCOME'>[] =>\n requestedDocs\n ? JSON.parse(requestedDocs as string).map(\n ({ documentType }: { documentType: string; subType: string }) => ({\n icon: icons.checkbox,\n label: getReadableDocType(documentType),\n }),\n )\n : [\n {\n icon: icons.checkbox,\n label: `[Empty]`,\n },\n ];\n\nconst getExpiryDateTime = (linkExpiry: string): string => {\n const isoDateTime = DateTime.fromISO(linkExpiry);\n const parsedDateTime = isoDateTime.toFormat('dd/LL/yyyy h:mm:ss a');\n return isoDateTime.isValid ? parsedDateTime : '';\n};\n","import type { IStaticPageConfig } from '../../appConfig.type';\n\nexport const manualConsentPage = {\n name: 'CONSENT',\n mode: 'individual',\n type: 'manual',\n title: { label: 'Your consent matters', style: {} },\n descriptions: [\n {\n label: `Your personal information being collected and used in accordance with [Company]'s <a href=\"https://www.frankieone.com/privacy\" target=\"_blank\">Privacy Policy</a>.`,\n style: {\n 'ff-description-item': {},\n },\n },\n {\n label:\n 'In addition, for the purposes of verifying your identity, you consent to: a) the verification of my personal information with credit bureau header files (for verification only); b) against records held by official document issues or official record holders via third party systems; and c) verification agent(s) acting as a nominated intermediary in accordance with Australian Privacy Principles.',\n style: {\n 'ff-description-item': {},\n },\n },\n {\n label:\n 'You consent to the use by third parties of the results of any verification checks on my identity for the purposes of monitoring and improving their verification services.',\n style: {\n 'ff-description-item': {},\n },\n },\n ],\n checkbox: {\n content: [\n {\n label: 'I have read and agree the above disclosure',\n style: {\n 'ff-description-item': {},\n },\n },\n ],\n style: {},\n },\n cta: { icon: '', label: 'Continue', style: {} },\n style: {},\n} satisfies IStaticPageConfig;\n","// eslint-disable-next-line check-file/filename-naming-convention\nimport {\n CalendarType,\n LocaleType,\n ValidationRulesForForm,\n} from '../../constants/form.const';\nimport { icons } from '../../constants/icons';\nimport { getAllCountries, getStates } from '../../utils/object.util';\n\nimport type { FormField, InputConfigType } from '../../appConfig.type';\nimport type { IdDetails } from '../../model/idDetails.model';\nimport type { Path } from 'react-hook-form';\n\nexport const commonFormFields = {\n country: {\n fieldType: 'select',\n dataType: 'text',\n hide: false,\n options: getAllCountries().filter((item) =>\n ['AUS', 'NZL'].includes(item.value),\n ),\n label: 'Country of Driver’s Licence',\n name: 'country',\n placeholder: 'Please select',\n rules: {\n required: {\n value: true,\n message: 'Please select a country',\n },\n },\n },\n state: {\n fieldType: 'select',\n name: 'region',\n hide: false,\n dataType: 'text',\n label: 'State or Territory of Issue',\n options: getStates('AUS'),\n placeholder: 'Please select',\n rules: {\n required: {\n value: true,\n message: 'Please select your state',\n },\n },\n },\n licenceNumber: {\n fieldType: 'input',\n dataType: 'text',\n label: 'Licence Number',\n placeholder: 'e.g. 1234567890',\n name: 'idNumber',\n image: icons.nzDriverLicence,\n rules: {\n required: {\n value: true,\n message: 'Please enter your licence number',\n },\n minLength: {\n value: 6,\n message: 'Licence number must be at least 6 characters',\n },\n maxLength: {\n value: 8,\n message: 'Licence number must not exceed 8 characters',\n },\n pattern: { ...ValidationRulesForForm.alphaNumeric },\n },\n },\n cardNumber: {\n fieldType: 'input',\n dataType: 'text',\n name: 'extraData.document_number',\n label: 'Card Number',\n placeholder: 'e.g. 1234567890',\n helperText:\n 'You will find your Card Number on the front of your card, running vertically alongside your photo.',\n image: icons.actIdDetails,\n rules: {\n required: {\n value: true,\n message: 'Please enter your card number',\n },\n minLength: {\n value: 10,\n message: 'Card number must be at least 10 digits',\n },\n maxLength: {\n value: 10,\n message: 'Card number must not exceed 10 digits',\n },\n pattern: { ...ValidationRulesForForm.onlyNumbers },\n },\n },\n passport: {\n fieldType: 'input',\n dataType: 'text',\n name: 'idNumber',\n image: icons.ausPassport,\n label: 'Passport Number',\n placeholder: 'e.g. A1234567890',\n rules: {\n required: {\n value: true,\n message: 'Please enter your passport number',\n },\n },\n },\n date: {\n fieldType: 'date',\n dataType: 'text',\n name: 'idExpiry',\n label: 'Date of Expiry',\n rules: {\n required: {\n value: true,\n message: 'Please enter your passport’s expiry date',\n },\n },\n calendarConfig: {\n type: CalendarType.Gregorian,\n locale: LocaleType.English,\n day: {\n required: true,\n placeholder: 'Day',\n },\n month: {\n required: true,\n placeholder: 'Month',\n },\n year: {\n required: true,\n placeholder: 'Year',\n },\n message: 'Please enter your Medicare expiry date',\n },\n },\n cardColor: {\n fieldType: 'select',\n dataType: 'text',\n hide: false,\n label: 'Medicare Card Colour',\n name: 'idSubType',\n rules: {\n required: {\n value: true,\n message: `Please select your Medicare card colour`,\n },\n },\n options: [\n { label: 'Green', value: 'G', icon: icons.greenMedicareCard },\n { label: 'Blue', value: 'B', icon: icons.blueMedicareCard },\n { label: 'Yellow', value: 'Y', icon: icons.yellowMedicareCard },\n ],\n placeholder: 'Select Medicare Card Colour',\n autocomplete: true,\n },\n medicareCardNumber: {\n fieldType: 'input',\n hide: false,\n label: 'Medicare Card Number',\n dataType: 'text',\n name: 'idNumber',\n rules: {\n required: {\n value: true,\n message: `Please enter your Medicare card number`,\n },\n pattern: ValidationRulesForForm.onlyNumbers,\n minLength: {\n value: 10,\n message: `Medicare card number must be at least 10 digits`,\n },\n maxLength: {\n value: 10,\n message: `Medicare card number must be not exceed 10 digits`,\n },\n },\n },\n positionOnCard: {\n fieldType: 'input',\n hide: false,\n label: 'Position on Card',\n dataType: 'document_extra',\n name: 'extraData.reference',\n rules: {\n required: {\n value: true,\n message: `Please enter your position on card`,\n },\n pattern: ValidationRulesForForm.onlyNumbers,\n maxLength: {\n value: 1,\n message: `Position on card must not exceed 1 digit`,\n },\n },\n },\n} satisfies Record<string, FormField<InputConfigType, Path<IdDetails>>>;\n","/* eslint-disable check-file/filename-naming-convention */\n\nimport type { ConfigCategory } from '@module/form/definition';\n\nimport { ValidationRulesForForm } from '../../constants/form.const';\nimport { icons } from '../../constants/icons';\nimport { getAllCountries } from '../../utils/object.util';\n\nimport { commonFormFields } from './idSelection.const';\n\nimport type { IDCardScreen, IIdCardPageConfig } from '../../appConfig.type';\nimport type { IdDetails } from '../../model/idDetails.model';\nimport type { Path } from 'react-hook-form';\n\nconst passportCountryField = {\n ...commonFormFields.country,\n options: getAllCountries(),\n};\n\nexport const manualIdSelectionPage = {\n name: 'DOCUMENT',\n mode: 'individual',\n type: 'manual',\n numberOfIDs: 1,\n title: {\n label: 'Select your first ID',\n },\n subtitle: {\n label: 'Your ID must be valid and not expired',\n },\n descriptions: [\n {\n label: 'We need one form of ID document to verify your identity.',\n },\n ],\n documents: [\n {\n type: 'DRIVERS_LICENCE',\n label: \"Driver's licence\",\n subtitle: '(recommended)',\n postIcon: icons.rightArrowIcon,\n icon: icons.driverLicenseIcon,\n countries: {\n default: {\n default: {\n fields: [commonFormFields.country],\n },\n },\n NZL: {\n default: {\n image: icons.nzSampleCard,\n fields: [\n commonFormFields.country,\n {\n ...commonFormFields.licenceNumber,\n rules: {\n ...commonFormFields.licenceNumber.rules,\n required: {\n value: true,\n message: 'Please enter your licence number',\n },\n pattern: { ...ValidationRulesForForm.alphaNumeric },\n },\n },\n {\n fieldType: 'input',\n dataType: 'number',\n label: 'Version Number',\n placeholder: 'e.g. 123',\n name: 'extraData.licence_version',\n image: icons.nzVersionNumber,\n rules: {\n required: {\n value: true,\n message: 'Please enter your version number',\n },\n minLength: {\n value: 3,\n message: 'Version number must be at least 3 charecters',\n },\n maxLength: {\n value: 3,\n message: 'Version number must not exceed 3 charecters',\n },\n pattern: { ...ValidationRulesForForm.onlyNumbers },\n },\n },\n ],\n },\n },\n AUS: {\n default: {\n image: icons.driversLicenseBanner,\n fields: [\n commonFormFields.country,\n commonFormFields.state,\n {\n ...commonFormFields.licenceNumber,\n image: icons.actLicenseNumber,\n },\n { ...commonFormFields.cardNumber, image: icons.actSampleCard },\n ],\n },\n ACT: {\n image: icons.driversLicenseBanner,\n fields: [\n commonFormFields.country,\n commonFormFields.state,\n {\n ...commonFormFields.licenceNumber,\n image: icons.actLicenseNumber,\n rules: {\n required: {\n value: true,\n message: 'Please enter your licence number',\n },\n minLength: {\n value: 1,\n message: `Licence number must be at least 1 digits`,\n },\n maxLength: {\n value: 10,\n message: `Licence number must not exceed 10 digits`,\n },\n pattern: { ...ValidationRulesForForm.onlyNumbers },\n },\n },\n {\n ...commonFormFields.cardNumber,\n image: icons.actSampleCard,\n rules: {\n ...commonFormFields.cardNumber.rules,\n pattern: { ...ValidationRulesForForm.alphaNumeric },\n },\n },\n ],\n },\n NSW: {\n image: icons.nswIdDetails,\n fields: [\n commonFormFields.country,\n commonFormFields.state,\n {\n ...commonFormFields.licenceNumber,\n image: icons.nswLicenseNumber,\n },\n {\n ...commonFormFields.cardNumber,\n image: icons.nswSampleCard,\n helperText:\n 'You will find your Card Number on the front of your card, in the top right corner above your photo.',\n },\n ],\n },\n NT: {\n image: icons.ntIdDetails,\n fields: [\n commonFormFields.country,\n commonFormFields.state,\n {\n ...commonFormFields.licenceNumber,\n image: icons.ntLicenseNumber,\n rules: {\n ...commonFormFields.licenceNumber.rules,\n minLength: {\n value: 1,\n message: 'Licence number must be at least 1 characters',\n },\n maxLength: {\n value: 10,\n message: 'Licence number must not exceed 10 characters',\n },\n pattern: { ...ValidationRulesForForm.onlyNumbers },\n },\n },\n {\n ...commonFormFields.cardNumber,\n image: icons.ntSampleCard,\n rules: {\n ...commonFormFields.cardNumber.rules,\n minLength: {\n value: 6,\n message: 'Card number must be at least 6 charecters',\n },\n maxLength: {\n value: 8,\n message: 'Card number must not exceed 8 charecters',\n },\n pattern: { ...ValidationRulesForForm.onlyNumbers },\n },\n helperText:\n 'The card number is located on the back of your card, either in the bottom left corner or bottom middle.',\n },\n ],\n },\n QLD: {\n image: icons.qldIdDetails,\n fields: [\n commonFormFields.country,\n commonFormFields.state,\n {\n ...commonFormFields.licenceNumber,\n image: icons.qldLicenseNumber,\n rules: {\n ...commonFormFields.licenceNumber.rules,\n minLength: {\n value: 8,\n message: 'Licence number must be at least 8 characters',\n },\n maxLength: {\n value: 9,\n message: 'Licence number must not exceed 9 characters',\n },\n pattern: { ...ValidationRulesForForm.onlyNumbers },\n },\n },\n {\n ...commonFormFields.cardNumber,\n image: icons.qldSampleCard,\n helperText:\n 'You will find your Card Number on the front of your card, in the bottom middle, or the back of your card, on the bottom right side.',\n rules: {\n ...commonFormFields.cardNumber.rules,\n pattern: { ...ValidationRulesForForm.alphaNumeric },\n },\n },\n ],\n },\n SA: {\n image: icons.saIdDetails,\n fields: [\n commonFormFields.country,\n commonFormFields.state,\n {\n ...commonFormFields.licenceNumber,\n image: icons.saLicenseNumber,\n rules: {\n ...commonFormFields.licenceNumber.rules,\n minLength: {\n value: 6,\n message: 'Licence number must be at least 6 characters',\n },\n maxLength: {\n value: 6,\n message: 'Licence number must not exceed 6 characters',\n },\n },\n },\n {\n ...commonFormFields.cardNumber,\n image: icons.saSampleCard,\n helperText:\n 'You will find your Card Number on the back of your card, in the top right corner.',\n rules: {\n ...commonFormFields.cardNumber.rules,\n minLength: {\n value: 9,\n message: 'Card number must be at least 9 charecters',\n },\n maxLength: {\n value: 9,\n message: 'Card number must not exceed 9 charecters',\n },\n pattern: { ...ValidationRulesForForm.alphaNumeric },\n },\n },\n ],\n },\n TAS: {\n image: icons.tasIdDetails,\n fields: [\n commonFormFields.country,\n commonFormFields.state,\n {\n ...commonFormFields.licenceNumber,\n image: icons.tasLicenseNumber,\n },\n {\n ...commonFormFields.cardNumber,\n helperText:\n 'You will find your Card Number on the back of your card, in the top right corner.',\n image: icons.tasSampleCard,\n rules: {\n ...commonFormFields.cardNumber.rules,\n maxLength: {\n value: 9,\n message: 'Card number must not exceed 9 charecters',\n },\n minLength: {\n value: 9,\n message: 'Card number must be at least 9 charecters',\n },\n pattern: { ...ValidationRulesForForm.alphaNumeric },\n },\n },\n ],\n },\n VIC: {\n image: icons.vicIdDetails,\n fields: [\n commonFormFields.country,\n commonFormFields.state,\n {\n ...commonFormFields.licenceNumber,\n image: icons.vicLicenseNumber,\n rules: {\n ...commonFormFields.licenceNumber.rules,\n minLength: {\n value: 1,\n message: `Licence number must be at least 1 digits`,\n },\n maxLength: {\n value: 10,\n message: `Licence number must not exceed 10 digits`,\n },\n pattern: { ...ValidationRulesForForm.onlyNumbers },\n },\n },\n {\n ...commonFormFields.cardNumber,\n image: icons.vicSampleCard,\n placeholder: 'e.g. P1234567',\n helperText:\n 'You will find your Card Number on the back of your card, either in the top right corner or middle right.',\n rules: {\n ...commonFormFields.cardNumber.rules,\n minLength: {\n value: 8,\n message: 'Card number must be at least 8 digits',\n },\n maxLength: {\n value: 8,\n message: 'Card number must not exceed 8 digits',\n },\n pattern: { ...ValidationRulesForForm.alphaNumeric },\n },\n },\n ],\n },\n WA: {\n image: icons.waIdDetails,\n fields: [\n commonFormFields.country,\n commonFormFields.state,\n {\n ...commonFormFields.licenceNumber,\n image: icons.waLicenseNumber,\n rules: {\n ...commonFormFields.licenceNumber.rules,\n minLength: {\n value: 7,\n message: 'Licence number must be at least 7 characters',\n },\n maxLength: {\n value: 7,\n message: 'Licence number must not exceed 7 characters',\n },\n pattern: { ...ValidationRulesForForm.onlyNumbers },\n },\n },\n {\n ...commonFormFields.cardNumber,\n image: icons.waSampleCard,\n helperText:\n 'You will find your Card Number on the back of your card, in the middle of the right side.',\n rules: {\n ...commonFormFields.cardNumber.rules,\n minLength: {\n value: 8,\n message: `Card number must be at least 8 characters`,\n },\n maxLength: {\n value: 10,\n message: `Card number must not exceed 10 characters`,\n },\n pattern: { ...ValidationRulesForForm.alphaNumeric },\n },\n },\n ],\n },\n },\n },\n },\n {\n type: 'PASSPORT',\n label: 'Passport',\n postIcon: icons.rightArrowIcon,\n icon: icons.passportIcon,\n countries: {\n default: {\n default: {\n image: icons.internationPassport,\n fields: [\n {\n ...passportCountryField,\n label: 'Passport Issuing Country',\n },\n commonFormFields.passport,\n ],\n },\n },\n AUS: {\n default: {\n image: icons.ausPassport,\n fields: [\n {\n ...passportCountryField,\n label: 'Passport Issuing Country',\n },\n {\n ...commonFormFields.passport,\n rules: {\n ...commonFormFields.passport.rules,\n minLength: {\n value: 8,\n message: 'Passport number must be at least 8 characters',\n },\n maxLength: {\n value: 9,\n message: 'Passport number must not exceed 9 characters',\n },\n },\n },\n ],\n },\n },\n NZL: {\n default: {\n image: icons.nzPassport,\n fields: [\n {\n ...passportCountryField,\n label: 'Passport Issuing Country',\n },\n {\n ...commonFormFields.passport,\n image: icons.nzPassport,\n rules: {\n ...commonFormFields.passport.rules,\n },\n },\n {\n ...commonFormFields.date,\n label: 'Date of Expiry',\n rules: {\n ...commonFormFields.date.rules,\n required: {\n value: true,\n message: 'Please enter your passport’s expiry date',\n },\n },\n calendarConfig: {\n ...commonFormFields.date.calendarConfig,\n\n maxYear: 2030,\n\n message: 'Please enter your passport’s expiry date',\n },\n },\n ],\n },\n },\n IND: {\n default: {\n image: icons.internationPassport,\n fields: [\n {\n ...passportCountryField,\n label: 'Passport Issuing Country',\n },\n {\n ...commonFormFields.passport,\n image: icons.internationPassport,\n rules: {\n ...commonFormFields.passport.rules,\n },\n },\n {\n fieldType: 'input',\n name: 'extraData.document_number',\n dataType: 'document_extra',\n label: 'File Number',\n placeholder: 'e.g. ABCD12345678',\n rules: {\n required: {\n value: true,\n message: 'Please enter your File Number',\n },\n },\n },\n ],\n },\n },\n },\n },\n {\n type: 'NATIONAL_HEALTH_ID',\n label: 'Medicare card',\n postIcon: icons.rightArrowIcon,\n icon: icons.medicalIcon,\n countries: {\n default: {\n default: {\n image: icons.greenMedicareCard,\n fields: [\n commonFormFields.cardColor,\n {\n ...commonFormFields.cardNumber,\n name: 'idNumber',\n label: 'Medicare Card Number',\n helperText: '',\n rules: {\n required: {\n value: true,\n message: 'Please enter your Medicare card number',\n },\n minLength: {\n value: 10,\n message: 'Medicare card number must be at least 10 digits',\n },\n maxLength: {\n value: 10,\n message:\n 'Medicare card number must be not exceed 10 digits',\n },\n pattern: { ...ValidationRulesForForm.onlyNumbers },\n },\n },\n commonFormFields.positionOnCard,\n {\n ...commonFormFields.date,\n label: 'Date of Expiry',\n rules: {\n required: {\n value: true,\n message: 'Please enter your Medicare expiry date',\n },\n },\n calendarConfig: {\n ...commonFormFields.date.calendarConfig,\n maxYear: 2045,\n message: 'Please enter your Medicare expiry date',\n },\n },\n ],\n },\n },\n },\n },\n ],\n cta: {\n label: 'Next',\n },\n} satisfies IIdCardPageConfig<IDCardScreen, ConfigCategory, Path<IdDetails>>;\n","/* eslint-disable check-file/filename-naming-convention */\n\nimport {\n CalendarType,\n LocaleType,\n ValidationRulesForForm,\n} from '../../constants/form.const';\nimport {\n getAllCountries,\n getStates,\n nationalHealthIdOptions,\n} from '../../utils/object.util';\nimport { commonFormFields } from '../IdSelection/idSelection.const';\n\nimport { commonReviewFieldConfig } from './review.const';\n\nimport type { IFormPageConfig } from '../../appConfig.type';\nimport type { ReviewDocumentKeys } from '../../model/review.model';\nimport type { AllCountries } from '../../utils/object.util';\n\ntype ReviewConfigType = IFormPageConfig<'REVIEW', ReviewDocumentKeys, 'ocr'>;\ntype ReviewFormField =\n ReviewConfigType['documents'][number]['countries'][string][string]['fields'];\n\nconst getCountryField = (isAllCountries = true, label?: string) => {\n return {\n ...commonFormFields.country,\n name: 'country',\n label: label || 'Country of Driver’s Licence',\n placeholder: 'Select issuing country',\n options: isAllCountries\n ? getAllCountries()\n : commonFormFields.country.options,\n rules: {\n ...commonFormFields.country.rules,\n required: {\n value: true,\n message: `Please select your issuing country`,\n },\n },\n } as ReviewFormField[number];\n};\n\nconst getStateField = (country: AllCountries = 'AUS') => {\n return {\n fieldType: 'select',\n hide: false,\n dataType: 'text',\n label: `Driver's Licence State or Territory`,\n name: 'region',\n rules: {\n required: {\n value: true,\n message: `Please select your driver's licence state or territory`,\n },\n pattern: {\n value: `^(NSW|ACT|NT|QLD|SA|TAS|VIC|WA)$`,\n message: `Please select your driver's licence state or territory`,\n },\n },\n options: getStates(country),\n placeholder: 'Select DL State or Territory',\n } as ReviewFormField[number];\n};\n\nconst getDLDefaultConfig = () => {\n return [\n {\n fieldType: 'input',\n hide: false,\n dataType: 'text',\n label: 'Licence Number',\n name: 'idNumber',\n rules: {\n required: {\n value: true,\n message: `Please enter your driver's licence number`,\n },\n minLength: {\n value: 1,\n message: `Licence number must be at least 1 characters`,\n },\n maxLength: {\n value: 15,\n message: `Licence number must not exceed 15 characters`,\n },\n pattern: { ...ValidationRulesForForm.alphaNumeric },\n },\n },\n {\n fieldType: 'input',\n hide: false,\n dataType: 'text',\n label: 'Card Number',\n name: 'extraData.document_number',\n rules: {\n required: {\n value: true,\n message: `Please enter your driver's licence card number`,\n },\n minLength: {\n value: 1,\n message: `Card number must be at least 1 characters`,\n },\n maxLength: {\n value: 15,\n message: `Card number must not exceed 15 character`,\n },\n pattern: { ...ValidationRulesForForm.alphaNumeric },\n },\n },\n ] as ReviewFormField;\n};\n\nexport const reviewPage: IFormPageConfig<'REVIEW', ReviewDocumentKeys, 'ocr'> =\n {\n name: 'REVIEW',\n title: {\n label: 'Are your details correct?',\n style: {\n 'ff-title': {},\n },\n },\n\n personal: {\n countries: {\n default: {\n default: {\n fields: [...commonReviewFieldConfig],\n },\n },\n },\n },\n documents: [\n {\n type: 'DRIVERS_LICENCE',\n countries: {\n default: {\n default: {\n fields: [getCountryField(), ...getDLDefaultConfig()],\n },\n },\n AUS: {\n default: {\n fields: [\n getCountryField(),\n getStateField(),\n ...getDLDefaultConfig(),\n ],\n },\n ACT: {\n fields: [\n getCountryField(),\n getStateField(),\n {\n fieldType: 'input',\n name: 'idNumber',\n dataType: 'number',\n label: 'Licence Number',\n rules: {\n required: {\n value: true,\n message: `Please enter your driver's licence number`,\n },\n minLength: {\n value: 1,\n message: `Licence number must be at least 1 digits`,\n },\n maxLength: {\n value: 10,\n message: `Licence number must not exceed 10 digits`,\n },\n pattern: { ...ValidationRulesForForm.onlyNumbers },\n },\n style: {\n 'ff-form-field': {},\n },\n },\n {\n fieldType: 'input',\n label: 'Card Number',\n name: 'extraData.document_number',\n dataType: 'number',\n rules: {\n required: {\n value: true,\n message: `Please enter your driver's licence card number`,\n },\n minLength: {\n value: 10,\n message: `Card number must be at least 10 characters`,\n },\n maxLength: {\n value: 10,\n message: `Card number must not exceed 10 characters`,\n },\n pattern: { ...ValidationRulesForForm.alphaNumeric },\n },\n },\n ],\n },\n NSW: {\n fields: [\n getCountryField(),\n getStateField(),\n {\n fieldType: 'input',\n dataType: 'number',\n label: 'Licence Number',\n name: 'idNumber',\n rules: {\n required: {\n value: true,\n message: `Please enter your driver's licence number`,\n },\n minLength: {\n value: 6,\n message: `Licence number must be at least 6 characters`,\n },\n maxLength: {\n value: 8,\n message: `Licence number must not exceed 8 characters`,\n },\n pattern: { ...ValidationRulesForForm.alphaNumeric },\n },\n },\n {\n fieldType: 'input',\n dataType: 'number',\n label: 'Card Number',\n name: 'extraData.document_number',\n rules: {\n required: {\n value: true,\n message: `Please enter your driver's licence card number`,\n },\n minLength: {\n value: 10,\n message: `Card number must be at least 10 digits`,\n },\n maxLength: {\n value: 10,\n message: `Card number must not exceed 10 digits`,\n },\n pattern: { ...ValidationRulesForForm.onlyNumbers },\n },\n },\n ],\n },\n NT: {\n fields: [\n getCountryField(),\n getStateField(),\n {\n fieldType: 'input',\n dataType: 'number',\n label: 'Licence Number',\n name: 'idNumber',\n rules: {\n required: {\n value: true,\n message: `Please enter your driver's licence number`,\n },\n minLength: {\n value: 1,\n message: `Licence number must be at least 1 digits`,\n },\n maxLength: {\n value: 10,\n message: `Licence number must not exceed 10 digits`,\n },\n pattern: { ...ValidationRulesForForm.onlyNumbers },\n },\n },\n {\n fieldType: 'input',\n dataType: 'number',\n label: 'Card Number',\n name: 'extraData.document_number',\n rules: {\n required: {\n value: true,\n message: `Please enter your driver's licence card number`,\n },\n minLength: {\n value: 6,\n message: `Card number must be at least 6 digits`,\n },\n maxLength: {\n value: 8,\n message: `Card number must not exceed 8 digits`,\n },\n pattern: { ...ValidationRulesForForm.onlyNumbers },\n },\n },\n ],\n },\n QLD: {\n fields: [\n getCountryField(),\n getStateField(),\n {\n fieldType: 'input',\n dataType: 'number',\n label: 'Licence Number',\n name: 'idNumber',\n rules: {\n required: {\n value: true,\n message: `Please enter your driver's licence number`,\n },\n minLength: {\n value: 8,\n message: `Licence number must be at least 8 characters`,\n },\n maxLength: {\n value: 9,\n message: `Licence number must not exceed 9 characters`,\n },\n pattern: { ...ValidationRulesForForm.alphaNumeric },\n },\n },\n {\n fieldType: 'input',\n dataType: 'number',\n label: 'Card Number',\n name: 'extraData.document_number',\n rules: {\n required: {\n value: true,\n message: `Please enter your driver's licence card number`,\n },\n minLength: {\n value: 10,\n message: `Card number must be at least 10 characters`,\n },\n maxLength: {\n value: 10,\n message: `Card number must not exceed 10 characters`,\n },\n pattern: { ...ValidationRulesForForm.alphaNumeric },\n },\n },\n ],\n },\n SA: {\n fields: [\n getCountryField(),\n getStateField(),\n {\n fieldType: 'input',\n dataType: 'number',\n label: 'Licence Number',\n name: 'idNumber',\n rules: {\n required: {\n value: true,\n message: `Please enter your driver's licence number`,\n },\n minLength: {\n value: 6,\n message: `Licence number must be at least 6 characters`,\n },\n maxLength: {\n value: 6,\n message: `Licence number must not exceed 6 characters`,\n },\n pattern: { ...ValidationRulesForForm.alphaNumeric },\n },\n },\n {\n fieldType: 'input',\n dataType: 'number',\n label: 'Card Number',\n name: 'extraData.document_number',\n rules: {\n required: {\n value: true,\n message: `Please enter your driver's licence card number`,\n },\n minLength: {\n value: 9,\n message: `Card number must be at least 9 characters`,\n },\n maxLength: {\n value: 9,\n message: `Card number must not exceed 9 characters`,\n },\n pattern: { ...ValidationRulesForForm.alphaNumeric },\n },\n },\n ],\n },\n TAS: {\n fields: [\n getCountryField(),\n getStateField(),\n {\n fieldType: 'input',\n dataType: 'number',\n label: 'Licence Number',\n name: 'idNumber',\n rules: {\n required: {\n value: true,\n message: `Please enter your driver's licence number`,\n },\n minLength: {\n value: 6,\n message: `Licence number must be at least 6 characters`,\n },\n maxLength: {\n value: 8,\n message: `Licence number must not exceed 8 characters`,\n },\n pattern: { ...ValidationRulesForForm.alphaNumeric },\n },\n },\n {\n fieldType: 'input',\n dataType: 'number',\n label: 'Card Number',\n name: 'extraData.document_number',\n rules: {\n required: {\n value: true,\n message: `Please enter your driver's licence card number`,\n },\n minLength: {\n value: 9,\n message: `Card number must be at least 9 characters`,\n },\n maxLength: {\n value: 9,\n message: `Card number must not exceed 9 characters`,\n },\n pattern: { ...ValidationRulesForForm.alphaNumeric },\n },\n },\n ],\n },\n VIC: {\n fields: [\n getCountryField(),\n getStateField(),\n {\n fieldType: 'input',\n dataType: 'number',\n label: 'Licence Number',\n name: 'idNumber',\n rules: {\n required: {\n value: true,\n message: `Please enter your driver's licence number`,\n },\n minLength: {\n value: 1,\n message: `Licence number must be at least 1 digits`,\n },\n maxLength: {\n value: 10,\n message: `Licence number must not exceed 10 digits`,\n },\n pattern: { ...ValidationRulesForForm.onlyNumbers },\n },\n },\n {\n fieldType: 'input',\n dataType: 'number',\n label: 'Card Number',\n name: 'extraData.document_number',\n rules: {\n required: {\n value: true,\n message: `Please enter your driver's licence card number`,\n },\n minLength: {\n value: 8,\n message: `Card number must be at least 8 characters`,\n },\n maxLength: {\n value: 8,\n message: `Card number must not exceed 8 characters`,\n },\n pattern: { ...ValidationRulesForForm.alphaNumeric },\n },\n },\n ],\n },\n WA: {\n fields: [\n getCountryField(),\n getStateField(),\n {\n fieldType: 'input',\n dataType: 'number',\n label: 'Licence Number',\n name: 'idNumber',\n rules: {\n required: {\n value: true,\n message: `Please enter your driver's licence number`,\n },\n minLength: {\n value: 7,\n message: `Licence number must be at least 7 digits`,\n },\n maxLength: {\n value: 7,\n message: `Licence number must not exceed 7 characters`,\n },\n },\n },\n {\n fieldType: 'input',\n dataType: 'number',\n label: 'Card Number',\n name: 'extraData.document_number',\n rules: {\n required: {\n value: true,\n message: `Please enter your driver's licence card number`,\n },\n minLength: {\n value: 8,\n message: `Card number must be at least 8 characters`,\n },\n maxLength: {\n value: 10,\n message: `Card number must not exceed 10 characters`,\n },\n pattern: { ...ValidationRulesForForm.alphaNumeric },\n },\n },\n ],\n },\n },\n NZL: {\n default: {\n fields: [\n {\n fieldType: 'input',\n hide: false,\n dataType: 'text',\n label: 'Licence Number',\n name: 'idNumber',\n rules: {\n required: {\n value: true,\n message: `Please enter your driver's licence number`,\n },\n minLength: {\n value: 6,\n message: 'Licence number must be at least 6 characters',\n },\n maxLength: {\n value: 8,\n message: 'Licence number must not exceed 8 characters',\n },\n pattern: { ...ValidationRulesForForm.alphaNumeric },\n },\n },\n {\n fieldType: 'input',\n dataType: 'number',\n label: 'Version Number',\n placeholder: 'e.g. 123',\n name: 'extraData.licence_version',\n rules: {\n required: {\n value: true,\n message: 'Please enter your version number',\n },\n minLength: {\n value: 3,\n message: 'Version number must be at least 3 charecters',\n },\n maxLength: {\n value: 3,\n message: 'Version number must not exceed 3 charecters',\n },\n pattern: { ...ValidationRulesForForm.onlyNumbers },\n },\n },\n ],\n },\n },\n },\n },\n {\n type: 'NATIONAL_HEALTH_ID',\n countries: {\n default: {\n default: {\n fields: [\n getCountryField(true, 'Country of Medicare Card'),\n {\n fieldType: 'select',\n dataType: 'text',\n hide: false,\n label: 'Medicare Card Colour',\n name: 'idSubType',\n rules: {\n required: {\n value: true,\n message: `Please select your Medicare card colour`,\n },\n },\n options: nationalHealthIdOptions,\n placeholder: 'Select Medicare Card Colour',\n autocomplete: true,\n },\n {\n fieldType: 'input',\n hide: false,\n label: 'Medicare Card Number',\n dataType: 'text',\n name: 'idNumber',\n rules: {\n required: {\n value: true,\n message: `Please enter your Medicare card number`,\n },\n pattern: ValidationRulesForForm.onlyNumbers,\n minLength: {\n value: 10,\n message: `Medicare card number must be at least 10 digits`,\n },\n maxLength: {\n value: 10,\n message: `Medicare card number must be not exceed 10 digits`,\n },\n },\n },\n {\n fieldType: 'input',\n hide: false,\n label: 'Position on Card',\n dataType: 'document_extra',\n name: 'extraData.reference',\n rules: {\n required: {\n value: true,\n message: `Please enter your position on card`,\n },\n pattern: ValidationRulesForForm.onlyNumbers,\n maxLength: {\n value: 1,\n message: `Position on card must not exceed 1 digit`,\n },\n },\n },\n {\n fieldType: 'date',\n hide: false,\n dataType: 'text',\n expiryDate: true,\n label: 'Medicare Date of Expiry',\n name: 'idExpiry',\n rules: {\n required: {\n value: true,\n message: `Please select your Medicare expiry date`,\n },\n min: {\n value: 1,\n message: 'Minimum Days to be one',\n },\n max: {\n value: 31,\n message: 'Maximum Days to be 31 only',\n },\n },\n\n calendarConfig: {\n type: CalendarType.Gregorian,\n locale: LocaleType.English,\n day: {\n required: true,\n placeholder: 'Day',\n },\n month: {\n required: true,\n placeholder: 'Month',\n },\n year: {\n required: true,\n placeholder: 'Year',\n },\n\n //NOTE: Please do not uncomment, it is not restrictions in figma,\n // use it only for testing purpose...\n // age: {\n // max: 30,\n // min: 5,\n // message: 'Gap between the year should be between 5 and 10',\n // },\n message: 'Please select your Medicare expiry date',\n },\n },\n ],\n },\n },\n },\n },\n {\n type: 'PASSPORT',\n countries: {\n default: {\n default: {\n fields: [\n getCountryField(true, 'Country of Passport'),\n {\n fieldType: 'input',\n hide: false,\n dataType: 'number',\n label: 'Passport Number',\n name: 'idNumber',\n rules: {\n required: {\n value: true,\n message: `Please enter your passport number`,\n },\n pattern: ValidationRulesForForm.alphaNumeric,\n minLength: {\n value: 1,\n message: `Passport number must be at least 1 character`,\n },\n maxLength: {\n value: 9,\n message: `Passport number must not exceed 9 characters`,\n },\n },\n },\n ],\n },\n },\n AUS: {\n default: {\n fields: [\n getCountryField(true, 'Country of Passport'),\n {\n fieldType: 'input',\n hide: false,\n dataType: 'number',\n label: 'Passport Number',\n name: 'idNumber',\n rules: {\n required: {\n value: true,\n message: `Please enter your passport number`,\n },\n pattern: ValidationRulesForForm.alphaNumeric,\n minLength: {\n value: 8,\n message: `Passport number must be at least 8 characters`,\n },\n maxLength: {\n value: 9,\n message: `Passport number must not exceed 9 characters`,\n },\n },\n },\n ],\n },\n },\n NZL: {\n default: {\n fields: [\n getCountryField(true, 'Country of Passport'),\n {\n fieldType: 'input',\n hide: false,\n dataType: 'number',\n label: 'Passport Number',\n name: 'idNumber',\n rules: {\n required: {\n value: true,\n message: `Please enter your passport number`,\n },\n pattern: ValidationRulesForForm.alphaNumeric,\n minLength: {\n value: 1,\n message: `Passport number must be at least 1 character`,\n },\n maxLength: {\n value: 9,\n message: `Passport number must not exceed 9 characters`,\n },\n },\n },\n {\n ...commonFormFields.date,\n label: 'Date of Expiry',\n rules: {\n ...commonFormFields.date.rules,\n required: {\n value: true,\n message: 'Please enter your passport’s expiry date',\n },\n },\n calendarConfig: {\n ...commonFormFields.date.calendarConfig,\n maxYear: 2030,\n message: 'Please enter your passport’s expiry date',\n },\n },\n ],\n },\n },\n IND: {\n default: {\n fields: [\n getCountryField(true, 'Country of Passport'),\n {\n fieldType: 'input',\n hide: false,\n dataType: 'number',\n label: 'Passport Number',\n name: 'idNumber',\n rules: {\n required: {\n value: true,\n message: `Please enter your passport number`,\n },\n pattern: ValidationRulesForForm.alphaNumeric,\n minLength: {\n value: 1,\n message: `Passport number must be at least 1 character`,\n },\n maxLength: {\n value: 9,\n message: `Passport number must not exceed 9 characters`,\n },\n },\n },\n {\n fieldType: 'input',\n name: 'extraData.document_number',\n dataType: 'document_extra',\n label: 'File Number',\n rules: {\n required: {\n value: true,\n message: 'Please enter your File Number',\n },\n },\n },\n ],\n },\n },\n },\n },\n ],\n\n instruction: {\n content: [\n {\n label: 'I confirm that all provided information is accurate.',\n },\n ],\n },\n cta: {\n label: 'Looks good, submit',\n },\n style: {\n 'ff-form-wrapper': {},\n 'ff-form-field': {},\n },\n };\n","// eslint-disable-next-line check-file/filename-naming-convention\nimport { manualIdSelectionPage } from '../IdSelection/manualIdSelection.config';\nimport {\n addressFields,\n personalDetailsPage,\n} from '../PersonalDetails/personalDetails.config';\nimport { reviewPage } from '../Review/review.config';\nimport { commonReviewFieldConfig } from '../Review/review.const';\n\nimport type { FormField, IFormPageConfig } from '../../appConfig.type';\n\nconst newAddressField = [\n {\n ...addressFields,\n manualFieldConfig: addressFields?.['manualFieldConfig']?.map(\n (item: FormField) => {\n const cName = item.name?.toString()?.split('.');\n return { ...item, name: `address1.${cName[1]}` };\n },\n ),\n },\n] as typeof commonReviewFieldConfig;\n\nexport const retryPage: IFormPageConfig<'RETRY'> = {\n name: 'RETRY',\n ...(reviewPage as IFormPageConfig<'RETRY'>),\n title: {\n label: 'Review personal details',\n },\n personal: {\n ...personalDetailsPage.personal,\n countries: {\n ...personalDetailsPage.personal.countries,\n default: {\n default: {\n ...personalDetailsPage.personal.countries?.['default']?.['default'],\n fields: [\n ...(personalDetailsPage.personal.countries?.['default']?.['default']\n ?.fields || []),\n {\n title: {\n label: 'Residential address',\n },\n fieldType: 'address',\n name: 'address1.fullAddress',\n hide: true,\n dataType: 'previous_addr',\n label: 'What was your previous residential address?',\n showToggle: true,\n rules: {\n required: {\n value: true,\n message: 'Please enter your previous address',\n },\n },\n toggleConfig: {\n label:\n 'Have you been at your current residential address for less than 6 months?',\n rules: {\n required: {\n value: true,\n message:\n 'Please let us know if you have any previous address',\n },\n },\n },\n placeholder: 'Type in your previous address',\n manualFieldConfig: newAddressField[0]?.['manualFieldConfig'],\n },\n ],\n },\n },\n AUS: {\n default: {\n fields: [\n {\n ...commonReviewFieldConfig?.find(\n (item) => item.fieldType === 'address',\n ),\n },\n ],\n },\n },\n },\n },\n documents: [...manualIdSelectionPage.documents],\n descriptions: [\n {\n label: 'We need one form of ID document to verify your identity.',\n },\n ],\n cta: {\n label: 'Next',\n },\n};\n","import type { IFormPageConfig } from '../../appConfig.type';\nimport type { ReviewDocumentKeys } from '../../model/review.model';\n\nexport const reviewDocumentPage: IFormPageConfig<'REVIEW', ReviewDocumentKeys> =\n {\n name: 'REVIEW',\n type: 'manual',\n title: { label: 'Are your details correct?', style: {} },\n cta: { label: 'Looks good, submit' },\n };\n","import { icons } from '../../constants/icons';\n\nimport type { IStaticPageConfig } from '../../appConfig.type';\n\nexport const manualWelcomePageAU1D = {\n name: 'WELCOME',\n mode: 'individual',\n title: { label: `Let's verify your identity`, style: {} },\n type: 'manual',\n numberOfIDs: 1,\n descriptions: [\n {\n label:\n 'We need to collect some personal information to verify your identity. All fields must be filled and it is important you enter your details accurately.',\n style: {},\n },\n ],\n instructions: {\n label: 'You will need',\n content: [\n {\n icon: icons.checkbox,\n label: 'A few mins to complete this application',\n style: {\n 'ff-instruction-item': {},\n },\n },\n {\n icon: icons.checkbox,\n label:\n 'An ID on you (this could be a driver’s licence, passport or Medicare card)',\n style: {\n 'ff-instruction-item': {},\n },\n },\n {\n icon: icons.checkbox,\n label: 'You must be over 18 years of age',\n style: {\n 'ff-instruction-item': {},\n },\n },\n {\n icon: icons.checkbox,\n label:\n 'You must be an Australian citizen, permanent resident or Visa holder.',\n style: {\n 'ff-instruction-item': {},\n },\n },\n ],\n },\n cta: {\n label: 'Start identity verification',\n style: {\n 'ff-button': {},\n },\n },\n style: {},\n} satisfies IStaticPageConfig;\n\nconst manualWelcomePageNZ1D = {\n name: 'WELCOME',\n mode: 'individual',\n title: { label: `Let's verify your identity`, style: {} },\n type: 'manual',\n descriptions: [\n {\n label:\n 'We need to collect some personal information to verify your identity. All fields must be filled and it is important you enter your details accurately.',\n style: {},\n },\n ],\n instructions: {\n label: 'You will need',\n content: [\n {\n icon: icons.checkbox,\n label: 'A few mins to complete this application',\n style: {\n 'ff-instruction-item': {},\n },\n },\n {\n icon: icons.checkbox,\n label:\n 'An ID on you (this could be a driver’s licence, passport or Medicare card)',\n style: {\n 'ff-instruction-item': {},\n },\n },\n {\n icon: icons.checkbox,\n label: 'You must be over 18 years of age',\n style: {\n 'ff-instruction-item': {},\n },\n },\n {\n icon: icons.checkbox,\n label:\n 'You must be an Australian citizen, permanent resident or Visa holder.',\n style: {\n 'ff-instruction-item': {},\n },\n },\n ],\n },\n cta: {\n label: 'Start identity verification',\n style: {\n 'ff-button': {},\n },\n },\n style: {},\n} satisfies IStaticPageConfig;\n\nconst manualWelcomePageAU2ID = {\n name: 'WELCOME',\n mode: 'individual',\n title: {\n label: `Let's verify your identity`,\n style: {\n 'ff-title': {},\n },\n },\n type: 'manual',\n descriptions: [\n {\n label:\n 'We need to collect some personal information to verify your identity. All fields must be filled and it is important you enter your details accurately.',\n style: {},\n },\n ],\n instructions: {\n label: 'You will need',\n content: [\n {\n icon: icons.checkbox,\n label: 'A few mins to complete this application',\n style: {\n 'ff-instruction-item': {},\n },\n },\n {\n icon: icons.checkbox,\n label:\n 'Two IDs on you (this could be a driver’s licence, passport or Medicare card)',\n style: {\n 'ff-instruction-item': {},\n },\n },\n {\n icon: icons.checkbox,\n label: 'You must be over 18 years of age',\n style: {\n 'ff-instruction-item': {},\n },\n },\n {\n icon: icons.checkbox,\n label:\n 'You must be an Australian citizen, permanent resident or Visa holder',\n style: {\n 'ff-instruction-item': {},\n },\n },\n ],\n },\n cta: {\n label: 'Start identity verification',\n style: {\n 'ff-button': {},\n },\n },\n style: {},\n} satisfies IStaticPageConfig;\n\nexport const manualWelcomePage = {\n AUS: {\n 1: manualWelcomePageAU1D,\n 2: manualWelcomePageAU2ID,\n },\n NZL: {\n 1: manualWelcomePageNZ1D,\n },\n};\n","/* eslint-disable no-nested-ternary */\n/* eslint-disable check-file/filename-naming-convention */\nimport mergeWith from 'lodash/mergeWith';\nimport cloneDeep from 'lodash.clonedeep';\nimport { useContext } from 'react';\nimport { useSelector } from 'react-redux';\n\nimport { docUploadPage } from '@module/form/vendors/react/features';\nimport { hostedBusinessConsentConfig } from '@module/form/vendors/react/features/Consent/hostedBusinessConsent.config';\nimport { hostedBusinessWelcomePage } from '@module/form/vendors/react/features/Welcome/hostedBusinessWelcome.config';\n\nimport { DocumentKeys } from '../appConfig.type';\nimport { manualConsentPage } from '../features/Consent/manualConsent.config';\nimport { manualIdSelectionPage } from '../features/IdSelection/manualIdSelection.config';\nimport {\n resultInfoMapping,\n resultPage,\n} from '../features/Result/result.config';\nimport { retryPage } from '../features/Retry/retry.config';\nimport { reviewDocumentPage } from '../features/ReviewDocument/reviewDocument.config';\nimport { manualWelcomePage } from '../features/Welcome/manualWelcome.config';\nimport { ReviewModelRecords } from '../model/review.model';\nimport { selectPageConfig } from '../redux/slices/moduleSlice';\nimport { React_Form_IDS } from '../types/pages.type';\nimport { getUniqueList, rearrangeData, sortData } from '../utils/object.util';\n\nimport { EventContext } from './useEventContext';\n\nimport type {\n IFormPageConfig,\n IIdCardPageConfig,\n TPageConfig,\n RESULT_STATE,\n IProgressPageConfig,\n} from '../appConfig.type';\nimport type { ReviewDocument } from '../model/review.model';\nimport type { FormProps, FieldValues } from 'react-hook-form';\n\n/**\n * @function mergeAndReplaceConfig\n * @param defaultConfig if we have => { name:default, descriptions: [ { ..default.. }, { ..default.. }, { ..default.. } ], checkbox: {label:default, content: [...default,...default]}})\n * @param newConfig we need to replace & merge => { descriptions: [ { ..new.. }, { ..new.. }, ],checkbox: {content: [...new]})\n * @returns then it will return newConfig: { name:default, descriptions: [ { ..new.. }, { ..new.. } ], checkbox: {label:default, content: [...new]}})\n */\nexport const useConfigFactory = () => {\n const { pageConfigs } = useSelector(selectPageConfig);\n const { oneSDK } = useContext(EventContext);\n const individual = oneSDK.individual();\n\n const addGlobalRules = (\n docConfig: IFormPageConfig<'REVIEW'>['documents'][number],\n country: string,\n region: string,\n ) => {\n const additionalFields = (\n countries: IFormPageConfig<'REVIEW'>['documents'][number]['countries'],\n ) =>\n countries?.[country]?.[region]?.['fields'] ||\n countries?.['default']?.[region]?.['fields'] ||\n countries?.[country]?.['default']?.['fields'] ||\n countries?.['default']?.['default']?.['fields'] ||\n [];\n\n if (docConfig?.countries?.['default']?.['default']?.['fields']) {\n docConfig.countries['default']['default']['fields'] = getUniqueList(\n [\n ...(docConfig?.countries?.['default']?.['default']?.fields ?? []),\n ...additionalFields(docConfig?.['countries']),\n ],\n 'name',\n );\n }\n\n return docConfig;\n };\n\n const addFieldsRestrictions = (\n config: TPageConfig,\n pKey: keyof IIdCardPageConfig,\n ) => {\n const documents = individual\n .access('documents')\n .getValue() as ReviewDocument[];\n const { country, region } = new ReviewModelRecords(documents).records;\n\n if (pKey == 'documents') {\n Object.entries(DocumentKeys).forEach(([key]) => {\n const docConfig =\n config?.[pKey] ?? ([] as IFormPageConfig<'REVIEW'>['documents']);\n const filteredConfig = docConfig?.find((item) => item.type === key);\n addGlobalRules(filteredConfig, country, region);\n });\n } else {\n addGlobalRules(config[pKey], country, region);\n }\n };\n\n const pickManualConfig = (\n defaultConfig: TPageConfig,\n newConfig: TPageConfig,\n ) => {\n if (newConfig.name == 'RESULT') {\n return {\n ...resultPage,\n ...resultInfoMapping[newConfig?.['state']],\n ...newConfig,\n };\n }\n\n switch (newConfig?.name) {\n case 'WELCOME':\n return (\n manualWelcomePage['AUS']?.[newConfig?.['numberOfIDs'] ?? 1] ||\n manualWelcomePage['AUS'][1]\n );\n case 'CONSENT':\n return manualConsentPage;\n case 'DOCUMENT':\n return {\n ...manualIdSelectionPage,\n };\n case 'REVIEW':\n return reviewDocumentPage;\n case 'RETRY':\n return retryPage;\n default:\n return defaultConfig;\n }\n };\n\n const pickHostedBusinessConfig = (defaultConfig: TPageConfig) => {\n return {\n WELCOME: () => hostedBusinessWelcomePage({ instance: oneSDK }),\n CONSENT: () => hostedBusinessConsentConfig({ instance: oneSDK }),\n DOC_UPLOAD: () => docUploadPage,\n default: () => defaultConfig,\n }[defaultConfig?.name ?? 'default']();\n };\n\n const mergeUniqueArray = <DType extends FieldValues>(\n objValue: DType[] = [], // default config\n srcValue: DType[] = [], // runtime config\n ) => {\n if (Array.isArray(objValue) && Array.isArray(srcValue)) {\n // rearrange the default config based on the runtime config\n const allKeys = srcValue.map((item) => item.name);\n const combinedList: FormProps<FieldValues>[] = [\n ...(sortData<FieldValues>({\n data: objValue,\n sequence: allKeys,\n key: 'name',\n }) || []),\n ...srcValue,\n ];\n const uniqueData = getUniqueList(combinedList, 'name');\n const restrictedCountryField = uniqueData.find(\n (item) => item?.['acceptedCountries']?.length,\n );\n if (restrictedCountryField) {\n const acceptedCountries = restrictedCountryField[\n 'acceptedCountries'\n ] as string[];\n\n const countryField = restrictedCountryField?.[\n 'manualFieldConfig'\n ]?.find((item) => ['address.country', 'country'].includes(item?.name));\n\n if (countryField) {\n countryField['options'] = countryField?.['options']?.filter((item) =>\n acceptedCountries.includes(item?.['value']),\n );\n }\n }\n return uniqueData;\n }\n };\n\n const mergeAndReplaceConfig = (\n defaultConfig: TPageConfig,\n newConfig: TPageConfig,\n currModuleName: React_Form_IDS,\n ): TPageConfig => {\n // MANUAL CONFIGURATION\n const manualConfig = newConfig?.['mode'] === 'individual' &&\n newConfig?.['type'] === 'manual' && {\n ...pickManualConfig(defaultConfig, newConfig),\n };\n\n // HOSTED BUSINESS CONFIGURATION\n const hostedBusinessConfig = newConfig?.['mode'] === 'business' && {\n ...pickHostedBusinessConfig(defaultConfig),\n };\n\n const mergedConfig: TPageConfig = manualConfig ||\n hostedBusinessConfig || {\n ...defaultConfig,\n ...pickManualConfig(defaultConfig, newConfig),\n type: 'ocr',\n };\n\n /** ###### REVIEW & Personal Details & Retry CONFIGURATION ###### */\n const excludeScreens: React_Form_IDS[] = [\n React_Form_IDS.RETRY,\n React_Form_IDS.REVIEW,\n React_Form_IDS.PERSONAL,\n React_Form_IDS.DOCUMENT,\n ];\n const needToMergeList = excludeScreens.includes(currModuleName);\n\n const getMergeReview = (key: keyof IIdCardPageConfig) => {\n const config1 = newConfig as IFormPageConfig<'REVIEW'>;\n const config2 = mergedConfig as IFormPageConfig<'REVIEW'>;\n let isDocument = false;\n\n if (key === 'documents') {\n if (!config1?.[key]?.length) return config2?.[key];\n if (!config2?.[key]?.length && !config1?.[key]?.length) return [];\n if (config1?.[key]?.length) {\n config1[key] = config1?.[key]\n ?.map((item) => {\n const newDoc = config2?.[key]?.find(\n (doc) => doc.type === item.type,\n );\n if (newDoc) {\n isDocument = true;\n // @Remarks: Merge the runtime config (with priority) with the default config\n return mergeWith(\n cloneDeep(newDoc),\n cloneDeep(item),\n mergeUniqueArray,\n );\n }\n })\n .filter((item) => item);\n }\n }\n return mergeWith(\n cloneDeep(config1?.[key]),\n cloneDeep(isDocument ? config1?.[key] : config2?.[key]),\n (obj, src) => {\n const [newObj, newSrc] =\n key === 'documents' ? [obj, src] : [src, obj];\n return mergeUniqueArray(newObj, newSrc);\n },\n );\n };\n\n // @Remarks : Master loop to merge and replace the default config with new config\n for (const key in newConfig) {\n // targeting to merge documents and personal keys\n if (\n needToMergeList &&\n ['documents', 'personal'].includes(key) &&\n (newConfig?.['documents'] || newConfig?.['personal'])\n ) {\n mergedConfig[key] = getMergeReview(key as keyof IIdCardPageConfig);\n addFieldsRestrictions(\n cloneDeep(mergedConfig),\n key as keyof IIdCardPageConfig,\n );\n continue;\n }\n\n // @Remarks: mapping others keys\n if (!needToMergeList && Array.isArray(newConfig[key]) && newConfig[key]) {\n mergedConfig[key] = cloneDeep(newConfig[key]);\n } else if (\n !Array.isArray(newConfig[key]) &&\n typeof newConfig[key] === 'object'\n ) {\n mergedConfig[key] = {\n ...mergedConfig[key],\n ...cloneDeep(newConfig[key]),\n };\n } else {\n mergedConfig[key] = newConfig[key];\n }\n }\n\n // @Remarks: Merge Retry Config with Cache Configurations\n const mergeRetryConfigWithCache = (\n key: keyof IFormPageConfig<'RETRY', 'manual'>,\n ) => {\n const screen =\n key == 'documents' ? React_Form_IDS.DOCUMENT : React_Form_IDS.PERSONAL;\n\n const defaultValue = key === 'documents' ? [] : {};\n\n const configValues = () => {\n switch (key) {\n case 'documents':\n return pageConfigs?.[screen]?.[key] || [];\n case 'personal':\n return pageConfigs?.[screen]?.[key] || {};\n default:\n return defaultValue;\n }\n };\n\n let configData = configValues() || defaultValue;\n let mergedConfigData = mergedConfig?.[key] || defaultValue;\n\n if (\n [configData, mergedConfigData].every((i) => Array.isArray(i)) &&\n key === 'documents'\n ) {\n mergedConfigData = mergedConfig?.[key]?.filter(\n (item) => !!configData.find((i) => i.type === item.type),\n );\n\n // @Remarks: Rearrange the mergedConfigData, so that the order of the documents will be same as the runtime config,\n // it will help to merge the documents in the same order as the runtime config\n mergedConfigData = rearrangeData({\n source: configData,\n destination: mergedConfigData,\n key: 'type',\n });\n\n [configData, mergedConfigData] = [mergedConfigData, configData];\n }\n\n //Remarks: Merge the runtime config (with priority) with the default config,\n // if the key is personal then merge the default config with runtime config\n // else merge the runtime config with default config\n mergedConfig[key] = mergeWith(\n cloneDeep(configData),\n cloneDeep(mergedConfigData),\n (obj, src) => {\n const [newObj, newSrc] =\n key === 'documents' ? [obj, src] : [src, obj];\n return mergeUniqueArray(newObj, newSrc);\n },\n );\n };\n\n if (newConfig.name === 'RETRY') {\n const retryKeys: (keyof IFormPageConfig<'RETRY', 'manual'>)[] = [\n 'documents',\n 'personal',\n ]; // add more if needed\n retryKeys.forEach(mergeRetryConfigWithCache);\n }\n return mergedConfig;\n };\n\n const getResultInfo = (\n state: RESULT_STATE,\n ): Partial<IProgressPageConfig<'RESULT'>> => {\n return {\n ...mergeWith(\n cloneDeep(resultInfoMapping[state]),\n cloneDeep(pageConfigs[React_Form_IDS.RESULT]),\n (obj, src) => {\n if (Array.isArray(obj)) {\n return src;\n }\n },\n ),\n state,\n };\n };\n\n return { mergeAndReplaceConfig, addGlobalRules, getResultInfo };\n};\n","// eslint-disable-next-line check-file/filename-naming-convention\nimport cloneDeep from 'lodash.clonedeep';\nimport get from 'lodash.get';\nimport { DateTime } from 'luxon';\nimport { useContext, useMemo } from 'react';\nimport { useSelector } from 'react-redux';\n\nimport type { Address } from '@module/common/shared/models/Address';\nimport type { FullNameFields } from '@module/common/shared/models/Applicant';\nimport type { Document } from '@module/common/shared/models/Document';\nimport { breakDateToObject } from '@module/common/shared/utils';\n\nimport { ReviewModelRecords } from '../model/review.model';\nimport { selectPageConfig } from '../redux/slices/moduleSlice';\nimport { React_Form_IDS } from '../types/pages.type';\n\nimport { useConfigFactory } from './useConfigFactory.hooks';\nimport { EventContext } from './useEventContext';\nimport { useFormMapper } from './useFormMapper.hook';\n\nimport type {\n FormField,\n IFormPageConfig,\n InputConfigType,\n} from '../appConfig.type';\nimport type { AddressInfo } from '../model/address.model';\nimport type { ReviewDocument } from '../model/review.model';\nimport type { UseFormReturn } from 'react-hook-form';\n\nexport const useReviewUpdateFactory = () => {\n const { pageConfigs } = useSelector(selectPageConfig);\n const config = pageConfigs[\n React_Form_IDS.REVIEW\n ] as IFormPageConfig<'REVIEW'>;\n\n const { addGlobalRules } = useConfigFactory();\n\n const { oneSDK } = useContext(EventContext);\n const individual = oneSDK.individual();\n\n const getScannedData = useMemo(() => {\n const { givenName, middleName, familyName } = individual\n .access('name')\n .getValue();\n\n const documents = individual\n .access('documents')\n .getValue() as ReviewDocument[];\n\n const dob = breakDateToObject(individual.access('dateOfBirth').getValue());\n const addresses = individual.access('addresses').getValue()[0];\n return {\n ...new ReviewModelRecords(documents, addresses).records,\n dateOfBirth: `${dob.dd ?? ''}-${dob.mm ?? ''}-${dob.yyyy ?? ''}`,\n givenName,\n middleName,\n familyName,\n };\n }, []);\n\n const { idType, country, region } = getScannedData;\n const { getFormConfig } = useFormMapper();\n\n const fieldIsVisible = (\n name:\n | keyof ReviewDocument\n | 'address.fullAddress'\n | 'extraData.phone'\n | 'extraData.email',\n ) => {\n const { personalFields, documentFields } = getFormConfig({\n config,\n idType,\n country,\n region,\n });\n\n const status = (\n [...personalFields, ...documentFields] as FormField<InputConfigType>[]\n ).find((item) => item?.name === name)?.hide;\n\n return status === undefined || status === null ? true : !status;\n };\n\n const updateAddress = (data: AddressInfo) => {\n const getAddress = <GType extends string>(key: keyof AddressInfo) =>\n get(data, key) as GType;\n const address: Partial<Address> = {\n buildingName: getAddress('buildingName'),\n postalCode: getAddress('postalCode'),\n state: getAddress('state'),\n streetName: getAddress('streetName'),\n streetNumber: getAddress('streetNumber'),\n streetType: getAddress('streetType'),\n suburb: getAddress('suburb'),\n town: getAddress('town'),\n unitNumber: getAddress('unitNumber'),\n addressType: getAddress('addressType') || 'RESIDENTIAL1',\n longForm: getAddress('fullAddress'),\n country: getAddress('country'),\n data:{ longForm: getAddress('fullAddress') },\n };\n\n const addressRefactored = Object.keys(address).reduce(\n (acc, curr: keyof ReviewDocument) =>\n !!fieldIsVisible(curr) && { ...acc, [curr]: address[curr] },\n {},\n );\n\n const addOrUpdateAddress = (address: Address) => {\n if (data?.addressId && data?.addressId?.length) {\n individual.updateAddress(data.addressId, address);\n } else {\n const { getValue, setValue } = individual.access('addresses');\n const allAddress = getValue();\n const searchedAddr = allAddress?.find(\n (addr) => addr.addressType === address.addressType,\n );\n if (searchedAddr?.addressId) {\n individual.updateAddress(searchedAddr.addressId, address);\n } else {\n setValue([\n ...allAddress.filter((i) => i.addressType !== address.addressType),\n address,\n ]);\n }\n }\n };\n addOrUpdateAddress({\n ...addressRefactored,\n country: getAddress('country') || 'AUS',\n addressType: getAddress('addressType') || 'RESIDENTIAL1',\n } as Address);\n };\n\n const updateNames = (data: ReviewDocument) => {\n const namesObj = {\n givenName: data?.givenName,\n familyName: data?.familyName,\n middleName: data?.middleName,\n displayName:\n `${data?.givenName?.trim() || ''} ${data?.middleName?.trim() || ''} ${data?.familyName?.trim() || ''}`.trim(),\n };\n\n const namesRefactored = Object.keys(namesObj).reduce(\n (acc, curr: keyof ReviewDocument) =>\n fieldIsVisible(curr) && { ...acc, [curr]: namesObj[curr] },\n {} as FullNameFields,\n );\n individual.access('name').setValue(namesRefactored);\n };\n\n const updateModule = (data: ReviewDocument) => {\n return new Promise<boolean>((resolve) => {\n updateNames(data);\n const dateOfBirth = DateTime.fromFormat(\n data.dateOfBirth,\n 'd-L-yyyy',\n ).toFormat('yyyy-LL-dd');\n\n fieldIsVisible('dateOfBirth') &&\n individual.access('dateOfBirth').setValue(dateOfBirth);\n\n // Address\n fieldIsVisible('address') && updateAddress(data.address);\n\n // Documents\n const documentObj = {\n dateOfBirth,\n idNumber: data.idNumber,\n idSubType: data.idSubType,\n idType: data.idType,\n idExpiry: data?.idExpiry?.split('-')?.reverse()?.join('-') ?? '',\n country: data.country,\n region: data.region,\n extraData: data.extraData,\n };\n\n const docsRefactored = Object.keys(documentObj).reduce(\n (acc, curr: keyof ReviewDocument) =>\n fieldIsVisible(curr) && { ...acc, [curr]: documentObj[curr] },\n {},\n );\n\n if (data?.documentId && data?.documentId?.length) {\n individual.updateDocument(data.documentId, docsRefactored as Document);\n }\n\n // REMARKS : Verifying the updated data\n // console.log('Updated Individual', individual.access('name').getValue());\n // console.log(\"Updated Address\", individual.access('addresses').getValue());\n // console.log(\"Updated Document\", individual.access('documents').getValue());\n\n resolve(true);\n });\n };\n\n const getUpdatedGlobalConfig = (form: UseFormReturn<ReviewDocument>) => {\n return config.documents.map((item) => {\n return item.type === form.getValues('idType')\n ? addGlobalRules(\n cloneDeep(item),\n form.getValues('country'),\n form.getValues('region'),\n )\n : item;\n });\n };\n\n return {\n getScannedData,\n updateModule,\n updateAddress,\n getUpdatedGlobalConfig,\n fieldIsVisible,\n updateNames,\n individual,\n };\n};\n","/* eslint-disable max-depth */\n// eslint-disable-next-line check-file/filename-naming-convention\nimport set from 'lodash/set';\nimport { useCallback } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport type { Address } from '@module/common/shared/models/Address';\nimport type { Document } from '@module/common/shared/models/Document';\n\nimport {\n updateFormState,\n selectManualForm,\n updateReduxForm,\n FORM_MODE,\n} from '../redux/slices/manualSlice';\nimport { selectPageConfig } from '../redux/slices/moduleSlice';\nimport { React_Form_IDS } from '../types/pages.type';\nimport {\n formatDate,\n getAllCountries,\n getFormateDate,\n getStates,\n nationalHealthIdOptions,\n} from '../utils/object.util';\n\nimport { useFormMapper } from './useFormMapper.hook';\nimport { useManualFactory } from './useManualWrapperFactory.hook';\nimport { useReviewUpdateFactory } from './useReviewUpdateFactory.hook';\n\nimport type {\n DocumentTypes,\n FormField,\n IFormPageConfig,\n} from '../appConfig.type';\nimport type { IdDetails } from '../model/idDetails.model';\nimport type { ManualReduxFormKeys } from '../redux/slices/manualSlice';\nimport type { Path, UseFormReturn } from 'react-hook-form';\n\nexport const useManualConfigFactory = () => {\n const dispatch = useDispatch();\n const { getFormConfig } = useFormMapper();\n\n const reduxForm = useSelector(selectManualForm);\n const { pageConfigs } = useSelector(selectPageConfig);\n const { individual, fieldIsVisible } = useReviewUpdateFactory();\n const { insertedDocuments, personalSequence } = useManualFactory();\n\n const getFormFields = (configInfo?: {\n idType?: ManualReduxFormKeys;\n configName: React_Form_IDS;\n country?: string;\n region?: string;\n }) => {\n const config = pageConfigs[configInfo.configName] as IFormPageConfig;\n const { personalFields, documentFields, manualFields } = getFormConfig({\n config: config,\n ...configInfo,\n idType: configInfo?.idType ?? reduxForm[reduxForm.currentForm],\n });\n return [...personalFields, ...documentFields, ...manualFields];\n };\n\n /**\n * Get the screen based on the current module and the idType\n * @param screen - The screen to be displayed\n */\n const getConditionalScreeen = useCallback(\n (screen?: React_Form_IDS, idType?: ManualReduxFormKeys) => {\n if (pageConfigs.currentModule === React_Form_IDS.PERSONAL) return null;\n if (screen) return screen;\n\n if (\n [React_Form_IDS.PERSONAL].includes(idType as React_Form_IDS) &&\n [FORM_MODE.REVIEW].includes(reduxForm.mode) &&\n !personalSequence(0).isValidIndex\n ) {\n return React_Form_IDS.REVIEW;\n }\n\n return [FORM_MODE.EDIT].includes(reduxForm.mode)\n ? React_Form_IDS.REVIEW\n : React_Form_IDS.DOCUMENT;\n },\n [reduxForm.mode, screen],\n );\n\n /**\n *\n * @param idType which is the type of id\n * @returns additional id visible or not\n */\n const checkAdditionalId = (idType: ManualReduxFormKeys) => {\n const isRetry = pageConfigs.currentModule === React_Form_IDS.RETRY;\n const idExist = !insertedDocuments.find((item) => item.key === idType);\n const notPersonal = idType !== React_Form_IDS.PERSONAL;\n return isRetry && idExist && notPersonal;\n };\n\n /**\n *\n * @param configInfo which is the configuration info\n * We are saving configuration in the redux store\n */\n const saveConfig = (configInfo?: {\n form?: UseFormReturn<IdDetails>;\n idType?: ManualReduxFormKeys;\n configName: React_Form_IDS;\n country?: string;\n region?: string;\n label?: string;\n extraFields?: FormField[];\n }) => {\n const data = [\n ...getFormFields(configInfo),\n ...(configInfo?.extraFields ?? []),\n ];\n const { form, configName, idType } = configInfo;\n updateManualIndividualModule({\n form,\n configName,\n idType,\n fields: data,\n }).then((res) => {\n const idConfig = {\n currentForm: getConditionalScreeen(null, idType),\n data: data,\n label: configInfo?.label,\n key: idType,\n replacedId:\n idType === React_Form_IDS.PERSONAL\n ? undefined\n : (res as ManualReduxFormKeys),\n dirty: !!Object.keys(form?.formState?.touchedFields ?? {}).length,\n isAdditionalId: checkAdditionalId(configInfo.idType),\n };\n dispatch(updateReduxForm(idConfig));\n });\n };\n\n const handleBack = (screen?: React_Form_IDS) => {\n dispatch(\n updateFormState({\n currentForm: getConditionalScreeen(screen),\n }),\n );\n };\n\n const getReplacedDocId = (idType: ManualReduxFormKeys) => {\n const nonDocTypes: React_Form_IDS[] = [React_Form_IDS.PERSONAL];\n let filterIds: DocumentTypes;\n\n // Handling Retry Flow, for replacing ids\n if (\n pageConfigs.currentModule === React_Form_IDS['RETRY'] &&\n reduxForm.mode !== FORM_MODE.EDIT\n ) {\n const focusedId = insertedDocuments.at(\n reduxForm.pageHistory.length - 1,\n )?.key;\n return (idType === focusedId ? null : focusedId) as DocumentTypes;\n }\n\n if (reduxForm?.mode === FORM_MODE.EDIT) {\n for (const docKey in reduxForm.data) {\n if (\n !nonDocTypes.includes(docKey as React_Form_IDS) &&\n reduxForm.data[docKey].mode === FORM_MODE.EDIT &&\n docKey !== idType\n ) {\n filterIds = docKey as DocumentTypes;\n }\n }\n } else {\n // for the manual review screen, replacing page number id\n const historyLen = reduxForm.pageHistory.length;\n const currentPage = historyLen ? historyLen - 1 : historyLen;\n filterIds = insertedDocuments.at(currentPage)?.key as DocumentTypes;\n filterIds = filterIds === idType ? null : filterIds;\n }\n\n return filterIds;\n };\n\n /**\n *\n * @param configInfo configuration of the form\n * @returns Promise of the updated document\n */\n const updateManualIndividualModule = async (configInfo?: {\n form: UseFormReturn<IdDetails>;\n idType?: ManualReduxFormKeys;\n configName: React_Form_IDS;\n fields: FormField[];\n label?: string;\n }) => {\n const { form, idType, fields } = configInfo;\n\n const getObjWithCountry = <T extends Document>(obj: T) => {\n return {\n ...obj,\n country:\n getIndividualData(React_Form_IDS.PERSONAL)?.['country'] || 'AUS',\n } as T;\n };\n\n return new Promise((resolve) => {\n if (idType === React_Form_IDS.PERSONAL) resolve(true);\n else {\n const documentObj = {};\n fields.forEach((field) => {\n const fieldName = field.name as Path<IdDetails>;\n if (form.getValues(fieldName)) {\n let value = form.getValues(fieldName) as string;\n if (['idExpiry'].includes(fieldName)) {\n value = getFormateDate(value);\n }\n set(documentObj, fieldName, value);\n }\n });\n\n let docsRefactored = {\n ...Object.keys(documentObj).reduce(\n (acc, curr: keyof IdDetails) =>\n fieldIsVisible(curr) && { ...acc, [curr]: documentObj[curr] },\n {},\n ),\n idType,\n } as Document;\n\n if (docsRefactored?.['idExpiry']) {\n docsRefactored['idExpiry'] = getFormateDate(\n docsRefactored['idExpiry'],\n true,\n );\n }\n\n if (docsRefactored.idType === 'NATIONAL_HEALTH_ID') {\n docsRefactored = getObjWithCountry(docsRefactored);\n }\n\n const iDocument = individual.access('documents');\n let filterIds: DocumentTypes;\n const currentDoc = iDocument\n .getValue()\n .find((item) => item.idType === idType && item?.documentId);\n\n if (!currentDoc) {\n filterIds = getReplacedDocId(idType);\n let updatedDocuments = iDocument.getValue();\n const replaceId = updatedDocuments.find(\n (i) => i.idType == filterIds,\n )?.documentId;\n if (replaceId) {\n //Replace document in the case when we are editing\n individual.updateDocument(replaceId, docsRefactored);\n } else {\n // Adding new document with existing documents\n updatedDocuments =\n updatedDocuments.filter(\n (doc) =>\n ![filterIds, docsRefactored.idType].includes(doc.idType),\n ) || [];\n\n iDocument.setValue([...updatedDocuments, docsRefactored]);\n }\n } else {\n // Updating document with existing id\n filterIds = getReplacedDocId(idType);\n\n individual.updateDocument(currentDoc.documentId, docsRefactored);\n }\n resolve(filterIds);\n }\n });\n };\n\n const getIndividualData = (\n idType: ManualReduxFormKeys,\n translated?: boolean,\n ) => {\n let data: NonNullable<unknown>;\n const findAddress = (addrType: Address['addressType'][]) => {\n const addrs = individual.access('addresses').getValue();\n\n let searchedAddr = addrs.find((addr) =>\n addrType.includes(addr.addressType),\n );\n if (addrType.includes('RESIDENTIAL')) {\n searchedAddr = searchedAddr ?? addrs[0];\n }\n\n const streetName =\n searchedAddr?.streetName || searchedAddr?._streetName || '';\n const streetNumber = searchedAddr?.streetNumber || '';\n\n return {\n ...searchedAddr,\n fullAddress: searchedAddr?.longForm ?? searchedAddr?.data?.longForm,\n isAddedByCustomer: !!(searchedAddr?.postalCode && searchedAddr?.state),\n streetAddress: `${streetNumber} ${streetName}`.trim(),\n };\n };\n\n if (idType === React_Form_IDS.PERSONAL) {\n data = {\n ...individual.access('name').getValue(),\n dateOfBirth: getFormateDate(\n individual.access('dateOfBirth').getValue(),\n true,\n ),\n address: findAddress(['RESIDENTIAL', 'RESIDENTIAL1']),\n address1: findAddress(['RESIDENTIAL2']),\n };\n\n data['extraData'] = {\n phone: individual.getPhoneNumber(),\n email: individual.getEmail(),\n };\n\n if (translated) {\n data['dateOfBirth'] = formatDate({ dateString: data['dateOfBirth'] });\n }\n } else {\n data = individual\n .access('documents')\n .getValue()\n .find((doc) => doc.idType === idType);\n\n data = {\n ...data,\n idExpiry: getFormateDate(data?.['idExpiry'], true),\n };\n\n if (!data?.['country']) {\n data = {\n ...data,\n country: findAddress(['RESIDENTIAL', 'RESIDENTIAL1'])?.country,\n };\n }\n\n if (translated) {\n data = {\n ...data,\n country:\n getAllCountries().find(\n (country) => country.value === data?.['country'],\n )?.label || data?.['country'],\n region:\n getStates(data?.['country']).find(\n (state) => state.value === data?.['region'],\n )?.label || data?.['region'],\n };\n const idSubType = nationalHealthIdOptions.find(\n (item) => item.value === data?.['idSubType'],\n );\n\n if (data?.['idSubType'] && idSubType) {\n data['idSubType'] = idSubType.label;\n }\n\n if (data?.['idExpiry']) {\n data['idExpiry'] = formatDate({\n dateString: data['idExpiry'],\n });\n }\n }\n }\n\n return data;\n };\n\n return {\n updateManualIndividualModule,\n getIndividualData,\n handleBack,\n saveConfig,\n };\n};\n","import { Document } from '@module/common/shared/models/Document';\n\nexport class IdDetails extends Document {\n constructor(input: Document) {\n super(input);\n }\n}\n","import clsx from 'clsx';\nimport { useEffect, useMemo, useState } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { DocumentKeys, type IIdCardPageConfig } from '../../appConfig.type';\nimport FrankieFormMapper from '../../components/view/FrankieFormMapper/FrankieFormMapper';\nimport Heading from '../../components/view/FrankieHeading/Heading';\nimport Wrapper from '../../components/view/Wrapper/Wrapper';\nimport { useFormMapper } from '../../hooks/useFormMapper.hook';\nimport { useManualConfigFactory } from '../../hooks/useManualConfigFactory.hook';\nimport { useManualFactory } from '../../hooks/useManualWrapperFactory.hook';\nimport { IdDetails as IdDetailsModel } from '../../model/idDetails.model';\nimport {\n FORM_MODE,\n selectManualForm,\n updateHistory,\n} from '../../redux/slices/manualSlice';\nimport { selectPageConfig } from '../../redux/slices/moduleSlice';\nimport { React_Form_IDS } from '../../types/pages.type';\nimport { getAllPaths } from '../../utils/object.util';\n\nimport type { IFormPageConfig } from '../../appConfig.type';\nimport type { ManualReduxFormKeys } from '../../redux/slices/manualSlice';\nimport type { FrankieSelectOptions } from '../../types/form';\n\ntype IdDetailsConfigType = IIdCardPageConfig | IFormPageConfig<'RETRY'>;\n\ntype Props<IType extends IdDetailsConfigType> = {\n config: IType;\n formFieldsType?: React_Form_IDS;\n onBack?: (type?: ManualReduxFormKeys) => void;\n testid?: {\n mockImg?: string;\n };\n};\n\nconst IdDetails = <IType extends IdDetailsConfigType>({\n config,\n formFieldsType,\n testid = { mockImg: null },\n onBack,\n}: Props<IType>) => {\n const { pageConfigs } = useSelector(selectPageConfig);\n const reduxForm = useSelector(selectManualForm);\n\n const { saveConfig, handleBack, getIndividualData } =\n useManualConfigFactory();\n const { isAdditionaDoc } = useManualFactory();\n\n const [parentConfig, setParentConfig] = useState<IType>();\n const { getFormConfig } = useFormMapper();\n\n const idFormDefaultValues = useMemo(() => {\n const idvData = getIndividualData(reduxForm.currentForm);\n const { documentFields } = getFormConfig({\n config,\n idType: DocumentKeys[reduxForm.currentForm],\n country: idvData?.['country'],\n region: idvData?.['region'],\n });\n\n // Remarks: Check if the country exists in the options\n const countryExists = documentFields.find(\n (field) =>\n field?.name === 'country' &&\n field?.['options']?.some(\n (option: FrankieSelectOptions) =>\n option?.value === idvData?.['country'],\n ),\n );\n\n return {\n ...new IdDetailsModel({} as IdDetailsModel),\n ...idvData,\n country: countryExists ? idvData?.['country'] : '',\n };\n }, [reduxForm.currentForm, reduxForm.pageHistory]);\n\n const idForm = useForm<IdDetailsModel>({\n defaultValues: idFormDefaultValues,\n mode: 'all',\n });\n\n const { watch, handleSubmit } = idForm;\n const { country, region } = watch();\n\n const dispatch = useDispatch();\n\n useEffect(() => {\n setParentConfig(config);\n }, [config]);\n\n useEffect(() => {\n dispatch(updateHistory({ id: reduxForm.currentForm }));\n }, []);\n\n // Remarks: Resetting the form based on the current form\n useEffect(() => {\n if (reduxForm?.currentForm && reduxForm?.data?.[reduxForm?.currentForm]) {\n idForm.reset(getIndividualData(reduxForm.currentForm));\n }\n }, [reduxForm?.currentForm, reduxForm?.data]);\n\n // Remarks: Resetting the form based on the country and region\n // trigger only if the value is present in the form\n useEffect(() => {\n idForm.clearErrors();\n const formFieldNamePath = getAllPaths(idForm.getValues());\n formFieldNamePath.forEach((path) => {\n if (idForm.getValues(path)) {\n idForm.trigger(path);\n }\n });\n }, [country, region]);\n\n useEffect(() => {\n if (\n reduxForm.mode !== FORM_MODE.EDIT &&\n reduxForm.currentForm === DocumentKeys.NATIONAL_HEALTH_ID &&\n !idForm.getValues('idSubType')?.length\n ) {\n idForm.setValue('idSubType', 'G');\n }\n }, []);\n\n // Remarks: Submitting the form\n const onSubmitForm = () => {\n saveConfig({\n form: idForm,\n idType: DocumentKeys[reduxForm?.currentForm],\n configName:\n React_Form_IDS[\n pageConfigs?.currentModule === React_Form_IDS.RETRY\n ? 'RETRY'\n : 'DOCUMENT'\n ],\n country: country,\n region: region,\n label: currentConfig?.['label'],\n });\n };\n\n const manualBackButton = () => {\n dispatch(updateHistory({ id: reduxForm.currentForm, isRemove: true }));\n handleBack(React_Form_IDS.DOCUMENT);\n onBack && onBack(reduxForm.currentForm);\n };\n\n if (!parentConfig) return;\n\n const currentConfig = parentConfig.documents.find(\n (doc) => doc.type === DocumentKeys[reduxForm?.currentForm],\n );\n\n const getIdDetailLabel = () => {\n if (reduxForm.mode == FORM_MODE.EDIT)\n return `Edit ${currentConfig?.['label']?.toLowerCase()} details`;\n\n if (pageConfigs.currentModule === React_Form_IDS.RETRY) {\n if (isAdditionaDoc(true)) {\n return currentConfig?.['label'];\n } else {\n return `Review ${currentConfig?.['label']?.toLowerCase()} details`;\n }\n }\n return currentConfig?.['label'];\n };\n\n return (\n <Wrapper\n onSubmit={handleSubmit(onSubmitForm)}\n buttonConfig={\n reduxForm.mode == FORM_MODE.EDIT && {\n editable: {\n pre: {\n label: 'Cancel',\n onClick: () => handleBack(),\n disabled: false,\n },\n post: {\n label: 'Save',\n onClick: handleSubmit(onSubmitForm),\n disabled: !idForm.formState.isValid,\n },\n },\n }\n }\n disabled={!idForm.formState.isValid}\n inputClass={clsx(\n 'tablet:!f1-pt-[24px]',\n 'f1-py-[24px]',\n 'tablet:!f1-pt-[49px]',\n )}\n renderScreen={() => {\n return (\n <>\n <Heading\n label={getIdDetailLabel()}\n style={config.title?.style}\n onBack={manualBackButton}\n testid={{ mockImg: testid.mockImg }}\n className={clsx('f1-mb-0')}\n />\n <FrankieFormMapper\n form={idForm}\n config={config}\n individualConfig={{\n idType: DocumentKeys[reduxForm?.currentForm],\n country: country,\n region: region,\n }}\n formFieldsType={formFieldsType}\n />\n </>\n );\n }}\n />\n );\n};\n\nexport default IdDetails;\n","import type { Document } from '@module/common/shared/models/Document';\n\nimport { ReviewDocument } from './review.model';\n\nimport type { AddressInfo } from './address.model';\n\nexport class PersonalDetailsModelRecords {\n records: PersonalDetailsDocument;\n}\nexport class PersonalDetailsDocument extends ReviewDocument {\n constructor(input: Document) {\n super(input);\n }\n}\n\nexport type PersonalDetailsDocumentKeys = keyof PersonalDetailsDocument;\n\nexport type PersonalDetailsDocumentForm = PersonalDetailsDocument & AddressInfo;\n","import clsx from 'clsx';\nimport set from 'lodash/set';\nimport { useEffect, useMemo, useState } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { useSelector } from 'react-redux';\n\nimport ActionFormField from '../../components/view/ActionFormField/ActionFormField';\nimport FrankieDescription from '../../components/view/FrankieDescription/FrankieDescription';\nimport FrankieFormMapper from '../../components/view/FrankieFormMapper/FrankieFormMapper';\nimport Heading from '../../components/view/FrankieHeading/Heading';\nimport Wrapper from '../../components/view/Wrapper/Wrapper';\nimport { useEventHandler } from '../../hooks/useEventContext';\nimport { useFormMapper } from '../../hooks/useFormMapper.hook';\nimport { useManualConfigFactory } from '../../hooks/useManualConfigFactory.hook';\nimport { usePersonalDetailsUpdateFactory } from '../../hooks/usePersonalDetailsUpdateFactory.hook';\nimport { useReviewUpdateFactory } from '../../hooks/useReviewUpdateFactory.hook';\nimport { PersonalDetailsDocument } from '../../model/personalDetails.model';\nimport {\n FORM_MODE,\n VERIFICATION_FAILED_IDS,\n selectManualForm,\n} from '../../redux/slices/manualSlice';\nimport { selectPageConfig } from '../../redux/slices/moduleSlice';\nimport { React_Form_IDS } from '../../types/pages.type';\nimport { checkObjectEditable } from '../../utils/object.util';\n\nimport type { FormField, IFormPageConfig } from '../../appConfig.type';\nimport type { FrankieActionFieldProps } from '../../components/base/FrankieActionField/FrankieActionField';\nimport type { Path } from 'react-hook-form';\n\ntype PersonalDetailsProps<dType extends IFormPageConfig<'PERSONAL'>> = {\n config: dType;\n formFieldsType?: React_Form_IDS;\n previewImage?: boolean;\n onSubmit?: () => void;\n};\n\ntype PersonFormPathType = Path<PersonalDetailsDocument>;\n\nconst PersonalDetails = <dType extends IFormPageConfig<'PERSONAL'>>({\n config,\n formFieldsType,\n previewImage,\n onSubmit,\n}: PersonalDetailsProps<dType>) => {\n const { pageConfigs } = useSelector(selectPageConfig);\n const reduxForm = useSelector(selectManualForm);\n const { getIndividualData } = useManualConfigFactory();\n const [prevAddress, setPrevAddress] = useState(false);\n const { modifyFormConfig } = useFormMapper();\n\n const idvData = () => getIndividualData(React_Form_IDS.PERSONAL);\n\n const getDefautlValues = () => {\n const data = idvData();\n set(\n data,\n 'address1.fullAddressShowToggle',\n checkObjectEditable(data, 'address1.fullAddress'),\n );\n return {\n ...new PersonalDetailsDocument({} as PersonalDetailsDocument),\n ...data,\n middleNameShowToggle: checkObjectEditable(data, 'middleName'),\n };\n };\n\n const form = useForm<PersonalDetailsDocument>({\n defaultValues: getDefautlValues(),\n mode: 'all',\n });\n\n const { getScannedData } = useReviewUpdateFactory();\n const { idType } = getScannedData;\n const { country, region } = form.watch();\n\n const { handleSubmit } = form;\n\n const { updateModule } = usePersonalDetailsUpdateFactory();\n const { saveConfig, handleBack } = useManualConfigFactory();\n\n const { documentReady } = useEventHandler();\n\n // Remarks: Resetting the form based on the current form\n useEffect(() => {\n if (reduxForm?.data?.[React_Form_IDS.PERSONAL]) {\n form.reset(getDefautlValues());\n }\n }, [reduxForm, prevAddress]);\n\n useEffect(() => {\n if (!form.getValues('middleNameShowToggle' as PersonFormPathType)) {\n form.setValue('middleName', '');\n }\n }, [form.watch('middleNameShowToggle' as PersonFormPathType)]);\n\n useEffect(() => {\n const cName = form.getValues('address.country');\n if (cName) form.setValue('country', cName);\n }, [form.watch('address.country')]);\n\n const willToEmitEvent = useMemo(\n () => ![FORM_MODE.EDIT, FORM_MODE.REVIEW].includes(reduxForm.mode),\n [reduxForm.mode],\n );\n\n const prevAddressFormFields = useMemo(\n () =>\n modifyFormConfig(\n config?.['personal']?.['countries']?.['default']?.['default']?.[\n 'fields'\n ]?.find((item) => item.dataType === 'previous_addr'),\n ),\n [config, prevAddress],\n );\n\n const updateFormModule = () => {\n const individualData = form.getValues();\n updateModule(\n individualData,\n prevAddress ? 'RESIDENTIAL2' : 'RESIDENTIAL1',\n prevAddress\n ? !!form.getValues(\n prevAddressFormFields.name as Path<PersonalDetailsDocument>,\n )?.length\n : true,\n ).then(() => {\n if (willToEmitEvent) documentReady();\n else onSubmit && onSubmit();\n saveConfig({\n idType: React_Form_IDS.PERSONAL,\n configName: React_Form_IDS.PERSONAL,\n label: 'Personal details',\n extraFields: [\n {\n ...prevAddressFormFields,\n label: 'Previous Residential Address',\n } as FormField,\n ],\n });\n });\n };\n\n const handleFormSubmit = () => {\n const { formState } = form;\n const { touchedFields } = formState;\n if (\n reduxForm.failedType === VERIFICATION_FAILED_IDS.NAME &&\n ((reduxForm.mode === FORM_MODE.REVIEW &&\n Object.keys(touchedFields).length === 0) ||\n (reduxForm.mode === FORM_MODE.EDIT &&\n Object.keys(touchedFields).length === 0 &&\n reduxForm.data.personal.docFields.find(\n (item) => item?.['dataType'] === 'previous_addr',\n )))\n ) {\n prevAddress ? updateFormModule() : setPrevAddress(true);\n } else {\n updateFormModule();\n }\n };\n\n const isEditMode = useMemo(() => {\n return reduxForm.mode == FORM_MODE.EDIT;\n }, [reduxForm.mode]);\n\n const isRetryFlow = useMemo(() => {\n return pageConfigs.currentModule === React_Form_IDS.RETRY;\n }, [pageConfigs]);\n\n const getAddressLabel = () => {\n return isEditMode\n ? `Edit ${pageConfigs[React_Form_IDS.PERSONAL]?.title?.label?.toLowerCase()}`\n : config.title?.label;\n };\n\n return (\n <Wrapper\n onSubmit={handleSubmit(handleFormSubmit)}\n disabled={!form.formState.isValid}\n buttonConfig={\n isEditMode && {\n editable: {\n pre: {\n label: 'Cancel',\n onClick: () => handleBack(),\n disabled: false,\n },\n post: {\n label: 'Save',\n onClick: handleSubmit(handleFormSubmit),\n disabled: !form.formState.isValid,\n },\n },\n }\n }\n inputClass={clsx(\n { '!f1-pt-[24px]': prevAddress },\n { 'tablet:!f1-pt-[49px]': prevAddress },\n )}\n renderScreen={() => {\n return (\n <>\n <Heading\n label={\n prevAddress\n ? prevAddressFormFields?.['title']?.label\n : getAddressLabel()\n }\n onBack={prevAddress ? () => setPrevAddress(false) : undefined}\n style={config.title?.style}\n className={clsx(`f1-mb-[8px]`)}\n />\n {!prevAddress && (\n <FrankieDescription\n descriptions={\n isRetryFlow\n ? pageConfigs[React_Form_IDS.PERSONAL]?.descriptions\n : config?.descriptions\n }\n />\n )}\n {prevAddress && (\n <ActionFormField\n config={\n {\n control: form.control,\n ...prevAddressFormFields,\n } as never as FrankieActionFieldProps<boolean>\n }\n type={'text'}\n />\n )}\n {!prevAddress && (\n <FrankieFormMapper\n form={form}\n config={config}\n individualConfig={{ idType, country, region }}\n formFieldsType={formFieldsType}\n previewImage={previewImage}\n />\n )}\n </>\n );\n }}\n />\n );\n};\n\nexport default PersonalDetails;\n","/* eslint-disable check-file/filename-naming-convention */\nimport set from 'lodash/set';\nimport { useContext } from 'react';\n\nimport type { Address } from '@module/common/shared/models/Address';\n\nimport {\n getFormateDate,\n getFullAddress,\n getStreetInfo,\n} from '../utils/object.util';\n\nimport { EventContext } from './useEventContext';\nimport { useReviewUpdateFactory } from './useReviewUpdateFactory.hook';\n\nimport type { AddressInfo } from '../model/address.model';\nimport type { PersonalDetailsDocument } from '../model/personalDetails.model';\nimport type { UseFormReturn } from 'react-hook-form';\n\nexport const usePersonalDetailsUpdateFactory = () => {\n const { oneSDK } = useContext(EventContext);\n const individual = oneSDK.individual();\n const { updateAddress, updateNames, getScannedData, fieldIsVisible } =\n useReviewUpdateFactory();\n\n const updateModule = (\n data: PersonalDetailsDocument,\n addressType?: Address['addressType'],\n isValid?: boolean,\n ) => {\n return new Promise<boolean>((resolve) => {\n updateNames(data);\n let addr: Address;\n if (addressType === 'RESIDENTIAL1' && isValid) {\n const longFormAddress = data?.address?.data?.['longForm'];\n addr = {\n ...data.address,\n addressType,\n country: data.address?.country ?? 'AUS',\n ...getStreetInfo(data, 'address'),\n longForm: data?.address?.fullAddress || longFormAddress,\n } as never as Address;\n } else if (isValid && data?.['address1']) {\n const longFormAddress = data?.['address1']?.['data']?.['longForm'];\n addr = {\n ...data?.['address1'],\n addressType,\n country: data?.['address1']?.country ?? 'AUS',\n ...getStreetInfo(data, 'address1'),\n longForm: data?.['address1']?.fullAddress || longFormAddress,\n } as Address;\n }\n\n if (isValid) {\n if (!addr?.longForm) {\n set(addr, 'longForm', getFullAddress(addr));\n }\n set(addr, 'data.longForm', addr?.longForm);\n set(addr, 'fullAddress', addr?.longForm);\n updateAddress(addr as AddressInfo);\n }\n\n fieldIsVisible('extraData.phone') &&\n individual.setPhoneNumber(data.extraData.phone);\n fieldIsVisible('extraData.email') &&\n individual.setEmail(data.extraData.email);\n fieldIsVisible('dateOfBirth') &&\n individual\n .access('dateOfBirth')\n .setValue(getFormateDate(data.dateOfBirth, true));\n resolve(true);\n });\n };\n\n const updateForm = (form: UseFormReturn<PersonalDetailsDocument>) => {\n const { reset } = form;\n const scannedData = getScannedData;\n reset({ ...scannedData, address: scannedData.address });\n };\n\n return { updateModule, updateForm };\n};\n","import clsx from 'clsx';\nimport { useCallback } from 'react';\n\nimport { icons } from '../../../constants/icons';\n\nimport type { Content } from '../../../appConfig.type';\nimport type { ManualReduxFormKeys } from '../../../redux/slices/manualSlice';\n\nexport type FrankieEditDocuments<EType extends string = string> = {\n type: ManualReduxFormKeys;\n title: Content;\n details: Content[];\n} & (EType extends 'response' ? { index: number } : NonNullable<unknown>);\n\ntype Props = {\n items?: FrankieEditDocuments[];\n onSelect: (selectedItem: FrankieEditDocuments<'response'>) => void;\n testid?: {\n container?: string;\n label?: string;\n detailWrapper?: string;\n detailLabel?: string;\n detailSubText?: string;\n\n image?: string;\n mockImg?: string | null;\n };\n};\n\nconst FrankieManualEditCardList = ({\n items = [],\n onSelect,\n testid = {\n container: '',\n label: '',\n detailWrapper: '',\n detailLabel: '',\n detailSubText: '',\n image: '',\n mockImg: null,\n },\n}: Props) => {\n const reviewDocumentInformationList = useCallback(\n (item: FrankieEditDocuments, index: number) => (\n <div key={item?.title?.label} data-testid={testid.container}>\n <div className={clsx('f1-flex', 'f1-justify-between')}>\n <div className={clsx('f1-flex', 'f1-flex-col', 'f1-gap-2')}>\n <h3\n className={clsx(\n 'f1-m-0',\n 'f1-text-[#1F2A37]',\n 'f1-font-semibold',\n 'f1-text-lg',\n )}\n data-testid={testid.label}\n >\n {item.title?.label}\n </h3>\n <div>\n {item?.details?.map((detail, dIndex) => {\n return (\n <div\n data-testid={testid.detailWrapper}\n key={`f1-manual-edit-card-${dIndex}`}\n className={clsx({\n 'f1-mb-2': dIndex !== item.details.length - 1,\n })}\n >\n <div\n className={clsx(\n 'f1-text-[#1F2A37]',\n 'f1-font-medium',\n 'f1-text-sm',\n )}\n data-testid={testid.detailLabel}\n >\n {detail.label}\n </div>\n <div\n className={clsx(\n 'f1-text-[#374151]',\n 'f1-font-normal',\n 'f1-text-md',\n 'f1-leading-6',\n )}\n data-testid={testid.detailSubText}\n >\n {detail.subText}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n <div>\n <img\n className={clsx('f1-cursor-pointer')}\n src={testid.mockImg ?? icons.editIcon}\n alt=\"Action Icon\"\n onClick={() => onSelect({ ...item, index })}\n data-testid={testid.image}\n />\n </div>\n </div>\n {items.length - 1 !== index && (\n <div\n className={clsx(\n 'f1-w-full',\n 'f1-h-[1px]',\n 'f1-bg-tertiary-grey-200',\n 'f1-my-4',\n )}\n ></div>\n )}\n </div>\n ),\n [items],\n );\n\n return items?.map(reviewDocumentInformationList);\n};\n\nexport default FrankieManualEditCardList;\n","import { useSelector } from 'react-redux';\n\nimport Progress from '../../components/view/Progress/Progress';\nimport { selectPageConfig } from '../../redux/slices/moduleSlice';\nimport { React_Form_IDS } from '../../types/pages.type';\n\nimport type { IProgressPageConfig } from '../../appConfig.type';\n\ntype LoadingProps = {\n config?: Partial<IProgressPageConfig<'LOADING'>>;\n progressWrapperClass?: string;\n};\nconst Loading = ({ config, progressWrapperClass }: LoadingProps) => {\n const { pageConfigs } = useSelector(selectPageConfig);\n let newConfig = pageConfigs[React_Form_IDS.LOADING] as IProgressPageConfig;\n newConfig = { ...newConfig, ...config };\n\n return (\n <Progress\n {...newConfig}\n inputClass=\"f1-h-full\"\n progressWrapperClass={progressWrapperClass}\n />\n );\n};\n\nexport default Loading;\n","/* eslint-disable max-len */\nimport clsx from 'clsx';\nimport { useState } from 'react';\nimport { useSelector } from 'react-redux';\n\nimport type { ScreenEventType } from '@module/form/events';\n\nimport {\n ConfigCSSKeys,\n RESULT_STATE,\n type IProgressPageConfig,\n} from '../../appConfig.type';\nimport { FrankieFormButton } from '../../components/view/FrankieFormButton/FrankieFormButton';\nimport Progress from '../../components/view/Progress/Progress';\nimport { useEventHandler } from '../../hooks/useEventContext';\nimport { selectPageConfig } from '../../redux/slices/moduleSlice';\nimport { React_Form_IDS } from '../../types/pages.type';\n\nimport type { ActionContent } from '../../appConfig.type';\n\ntype ClassType = {\n label?: string;\n description?: string;\n};\n\nexport const styleMapping = {\n [RESULT_STATE.FAIL]: {\n label: clsx(\n 'f1-mt-[32px]',\n 'f1-text-[21px]',\n 'f1-text-[#1F2A37]',\n 'tablet:f1-w-[342px]',\n 'f1-w-[300px]',\n ),\n description: clsx(\n 'f1-font-[400]',\n 'f1-text-[16px]',\n 'f1-mt-4',\n 'f1-text-[#374151]',\n 'tablet:f1-w-[345px]',\n 'f1-w-[300px]',\n ),\n },\n [RESULT_STATE.SUCCESS]: {\n label: clsx(\n 'f1-mt-[32px]',\n 'f1-w-[342px]',\n 'f1-text-[32px]',\n 'f1-text-[#1F2A37]',\n 'f1-text-[30px]',\n ),\n },\n [RESULT_STATE.PARTIAL]: {\n label: clsx(\n 'f1-mt-[32px]',\n 'f1-text-[21px]',\n 'tablet:f1-w-[342px]',\n 'f1-w-[300px]',\n 'f1-leading-[32px]',\n 'f1-text-[#1F2A37]',\n ),\n description: clsx(\n 'f1-font-[400]',\n 'tablet:f1-w-[345px]',\n 'f1-text-[16px]',\n 'f1-mt-4',\n 'f1-w-[300px]',\n 'f1-text-[#374151]',\n ),\n },\n [RESULT_STATE.PENDING]: {\n label: clsx(\n 'f1-mt-[32px]',\n 'f1-text-[24px]',\n 'f1-leading-[32px]',\n 'f1-text-[#1F2A37]',\n 'tablet:f1-w-[342px]',\n 'f1-w-[300px]',\n ),\n description: clsx(\n 'f1-font-[400]',\n 'f1-text-[16px]',\n 'f1-mt-4',\n 'f1-text-[#374151]',\n 'tablet:f1-w-[345px]',\n 'f1-w-[300px]',\n ),\n },\n [RESULT_STATE.UPLOAD_SUCCESS]: {},\n [RESULT_STATE.UPLOAD_FAIL]: {},\n} satisfies Record<RESULT_STATE, ClassType>;\n\nconst ResultStates = {\n [RESULT_STATE.FAIL]: 'failed',\n [RESULT_STATE.SUCCESS]: 'success',\n [RESULT_STATE.PARTIAL]: 'partial',\n [RESULT_STATE.PENDING]: 'pending',\n [RESULT_STATE.UPLOAD_SUCCESS]: 'success',\n [RESULT_STATE.UPLOAD_FAIL]: 'failed',\n} satisfies Record<RESULT_STATE, keyof ScreenEventType>;\n\ntype ResultProps = {\n config: Partial<IProgressPageConfig<'RESULT'>>;\n onSubmit?: () => void;\n};\nconst Result = ({ config, onSubmit }: ResultProps) => {\n const { pageConfigs } = useSelector(selectPageConfig);\n const [resultReady, setReady] = useState(false);\n\n const { idvEventEmitter } = useEventHandler();\n\n const handleSubmit = () => {\n idvEventEmitter({\n eventType: ResultStates[config?.state],\n extraEventInfo: { name: React_Form_IDS.RESULT },\n });\n setReady(true);\n onSubmit && onSubmit();\n };\n\n const configInfo =\n config || (pageConfigs[pageConfigs.currentModule] as ActionContent);\n\n if (resultReady) return;\n\n return (\n <div\n className={clsx(\n 'f1-h-full',\n 'f1-w-full',\n 'f1-flex',\n 'f1-flex-col',\n 'f1-gap-10',\n 'f1-justify-center',\n 'f1-items-center',\n )}\n >\n <Progress\n {...config}\n inputClass={'f1-h-[calc(100%-92px)] tablet:f1-h-auto'}\n labelClass={styleMapping[config?.['state']]?.['label']}\n descriptionClass={styleMapping[config?.['state']]?.['description']}\n />\n\n <FrankieFormButton\n icon={configInfo?.['cta']?.icon}\n visible={Object.keys(configInfo?.['cta']).length > 0}\n label={configInfo?.['cta']?.label}\n className={`${ConfigCSSKeys.button}`}\n buttonClass=\"tablet:f1-mb-0 f1-w-[calc(100%-48px)]\"\n onClick={handleSubmit}\n {...config?.cta}\n style={configInfo?.['cta']?.style?.[ConfigCSSKeys.button]}\n />\n </div>\n );\n};\n\nexport default Result;\n","/* eslint-disable max-len */\nimport clsx from 'clsx';\nimport get from 'lodash/get';\nimport { useContext, useEffect, useMemo, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { DocumentKeys, RESULT_STATE } from '../../appConfig.type';\nimport Heading from '../../components/view/FrankieHeading/Heading';\nimport FrankieManualEditCardList from '../../components/view/FrankieReviewDocumentList/FrankieReviewDocumentList';\nimport Wrapper from '../../components/view/Wrapper/Wrapper';\nimport { modules } from '../../constants/layoutMapper.const';\nimport { ordinalWords } from '../../constants/numbers.const';\nimport IdDetails from '../../features/IdDetails/IdDetails';\nimport { useConfigFactory } from '../../hooks/useConfigFactory.hooks';\nimport { EventContext, useEventHandler } from '../../hooks/useEventContext';\nimport { useManualConfigFactory } from '../../hooks/useManualConfigFactory.hook';\nimport { useManualFactory } from '../../hooks/useManualWrapperFactory.hook';\nimport {\n FORM_MODE,\n VERIFICATION_FAILED_IDS,\n clearAllHistory,\n resetForm,\n selectManualForm,\n updateFailState,\n updateFormState,\n} from '../../redux/slices/manualSlice';\nimport { selectPageConfig } from '../../redux/slices/moduleSlice';\nimport { React_Form_IDS } from '../../types/pages.type';\nimport { toTitleCase } from '../../utils/object.util';\nimport IdSelection from '../IdSelection/IdSelection';\nimport Loading from '../Loading/Loading';\nimport { manualLoading } from '../Loading/loading.config';\nimport PersonalDetails from '../PersonalDetails/PersonalDetails';\nimport Result from '../Result/Result';\n\nimport type {\n FormFieldConfigProps,\n IFormPageConfig,\n IIdCardPageConfig,\n} from '../../appConfig.type';\nimport type { FrankieEditDocuments } from '../../components/view/FrankieReviewDocumentList/FrankieReviewDocumentList';\nimport type { IdDetails as IdDetailsModel } from '../../model/idDetails.model';\nimport type { ManualReduxFormKeys } from '../../redux/slices/manualSlice';\nimport type { Path } from 'react-hook-form';\n\nconst ReviewDocument = () => {\n const { pageConfigs } = useSelector(selectPageConfig);\n const config = pageConfigs[React_Form_IDS.REVIEW];\n const docConfig = pageConfigs[\n React_Form_IDS.REVIEW\n ] as never as IFormPageConfig<'REVIEW', FormFieldConfigProps, 'manual'>;\n const { getIndividualData } = useManualConfigFactory();\n const { getResultInfo } = useConfigFactory();\n\n const dispatch = useDispatch();\n const { documentReady, idvEventEmitter } = useEventHandler();\n const [reviewData, setReviewData] = useState<FrankieEditDocuments[]>();\n const [loading, setLoading] = useState(false);\n const [resultStatus, setResultStatus] = useState<RESULT_STATE>();\n const [idSelectionConfig, setIdSelectionConfig] =\n useState<IIdCardPageConfig>();\n\n const reduxForm = useSelector(selectManualForm);\n\n modules[pageConfigs.currentModule].disabled = false;\n\n const { oneSDK } = useContext(EventContext);\n const { insertedDocuments, modifyDocConfig, personalSequence } =\n useManualFactory();\n\n useEffect(() => {\n dispatch(\n updateFormState({\n currentForm: React_Form_IDS.REVIEW,\n mode: FORM_MODE.EDIT,\n }),\n );\n dispatch(clearAllHistory({ clearFormState: false }));\n setIdSelectionConfig(\n pageConfigs[React_Form_IDS.DOCUMENT] as IIdCardPageConfig,\n );\n }, []);\n\n useEffect(() => {\n if (Object.keys(reduxForm.data)?.length) {\n const reviewDataList: FrankieEditDocuments[] = [];\n\n Object.entries(reduxForm.data).forEach(([key, value], ind) => {\n const individualDocument = getIndividualData(\n key as ManualReduxFormKeys,\n true,\n );\n\n let label = value.label;\n if (key !== React_Form_IDS.PERSONAL) {\n const prefixText = toTitleCase(\n ordinalWords[personalSequence(0).isValidIndex ? ind - 1 : ind],\n );\n label = `${insertedDocuments.length == 1 ? `ID: ${value.label}` : `${prefixText} ID: ${value.label}`}`;\n }\n\n reviewDataList.push({\n title: { label },\n type: key as React_Form_IDS,\n details: value.docFields\n .map((dItem) => ({\n label: dItem?.['label'],\n subText: get(\n individualDocument,\n dItem.name as Path<IdDetailsModel>,\n ) as string,\n }))\n .filter((item) => item?.subText && item.subText.length > 0),\n });\n });\n\n setReviewData(reviewDataList);\n setIdSelectionConfig(modifyDocConfig);\n }\n }, [reduxForm.data]);\n\n const handleEdit = (selectedItem: FrankieEditDocuments<'response'>) => {\n const { type } = { ...selectedItem };\n const isPersonalDetails = type === React_Form_IDS.PERSONAL;\n dispatch(\n updateFormState({\n currentForm: isPersonalDetails ? type : React_Form_IDS.DOCUMENT,\n mode: FORM_MODE.EDIT,\n idType: type,\n }),\n );\n };\n\n const resetReduxData = () => dispatch(resetForm());\n\n const handleSubmit = () => {\n setLoading(true);\n oneSDK\n .individual()\n .submit({ verify: !!docConfig?.verify })\n .then(async (res) => {\n // syncing with backend for the latest entity data\n await oneSDK.individual().search();\n if (!docConfig?.verify) {\n documentReady();\n } else {\n const hasAlert = (alert: string) =>\n !!res?.['alertList']?.find((a) => a.term === alert);\n\n const nameIssue = hasAlert('partial');\n const idIssue = hasAlert('404');\n\n const isDuplicate = hasAlert('duplicate');\n const isBlacklist = hasAlert('blacklist');\n const hadTooManyTries = hasAlert('too-many');\n\n const addFailedState = () => {\n // eslint-disable-next-line no-nested-ternary\n const status = nameIssue\n ? VERIFICATION_FAILED_IDS.NAME\n : idIssue\n ? VERIFICATION_FAILED_IDS.ID\n : null;\n dispatch(updateFailState(status));\n };\n\n if (hasAlert('partial') || hasAlert('404')) {\n addFailedState();\n setResultStatus(RESULT_STATE.PARTIAL);\n } else if (isDuplicate || isBlacklist || hadTooManyTries) {\n addFailedState();\n setResultStatus(RESULT_STATE.FAIL);\n } else {\n // eslint-disable-next-line max-depth\n switch (res?.['status']?.type) {\n case 'passed':\n case 'pass_manual':\n setResultStatus(RESULT_STATE.SUCCESS);\n break;\n case 'archived':\n addFailedState();\n setResultStatus(RESULT_STATE.PARTIAL);\n break;\n case 'failed':\n addFailedState();\n setResultStatus(RESULT_STATE.FAIL);\n break;\n default:\n setResultStatus(RESULT_STATE.PENDING);\n }\n }\n }\n })\n .catch(async () => {\n await oneSDK.individual().search();\n setResultStatus(RESULT_STATE.FAIL);\n })\n .finally(() => {\n if (pageConfigs.currentModule !== React_Form_IDS.RETRY)\n resetReduxData();\n setLoading(false);\n idvEventEmitter({\n eventType: 'loaded',\n extraEventInfo: { name: React_Form_IDS.RESULT },\n });\n });\n };\n\n const IdDetailsScreen = useMemo(\n () => <IdDetails config={pageConfigs[React_Form_IDS.DOCUMENT]} />,\n [pageConfigs[React_Form_IDS.DOCUMENT]],\n );\n\n if (loading && docConfig?.verify)\n return (\n <Loading\n config={manualLoading}\n progressWrapperClass={clsx('f1-max-w-[318px]', 'f1-w-full')}\n />\n );\n\n if (resultStatus) {\n return (\n <Result config={getResultInfo(resultStatus)} onSubmit={resetReduxData} />\n );\n }\n\n if (!reviewData) return;\n\n switch (reduxForm.currentForm) {\n case React_Form_IDS.PERSONAL:\n return (\n <PersonalDetails\n config={\n pageConfigs[React_Form_IDS.PERSONAL] as IFormPageConfig<'PERSONAL'>\n }\n previewImage={false}\n />\n );\n case React_Form_IDS.DOCUMENT:\n return <IdSelection config={idSelectionConfig} backButton />;\n case DocumentKeys.DRIVERS_LICENCE:\n return IdDetailsScreen;\n case DocumentKeys.NATIONAL_HEALTH_ID:\n return IdDetailsScreen;\n case DocumentKeys.PASSPORT:\n return IdDetailsScreen;\n default:\n break;\n }\n\n return (\n <Wrapper\n onSubmit={handleSubmit}\n buttonConfig={config?.cta}\n disabled={loading}\n renderScreen={() => {\n return (\n <>\n <Heading label={config?.title.label} style={config?.title?.style} />\n <FrankieManualEditCardList\n items={reviewData}\n onSelect={handleEdit}\n />\n </>\n );\n }}\n />\n );\n};\n\nexport default ReviewDocument;\n","import { useSelector } from 'react-redux';\n\nimport PersonalDetails from '../../features/PersonalDetails/PersonalDetails';\nimport { selectPageConfig } from '../../redux/slices/moduleSlice';\nimport { React_Form_IDS } from '../../types/pages.type';\n\nimport type { IFormPageConfig } from '../../appConfig.type';\n\nconst PersonalDetailWrapper = () => {\n const { pageConfigs } = useSelector(selectPageConfig);\n const config = pageConfigs[\n React_Form_IDS.PERSONAL\n ] as IFormPageConfig<'PERSONAL'>;\n\n return <PersonalDetails config={config} />;\n};\n\nexport default PersonalDetailWrapper;\n","/* eslint-disable max-len */\nimport { useEffect, useMemo, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { DocumentKeys, type IIdCardPageConfig } from '../../appConfig.type';\nimport { IdSelection } from '../../features';\nimport IdDetails from '../../features/IdDetails/IdDetails';\nimport ReviewDocument from '../../features/ReviewDocument/ReviewDocument';\nimport { useEventHandler } from '../../hooks/useEventContext';\nimport { useManualFactory } from '../../hooks/useManualWrapperFactory.hook';\nimport {\n FORM_MODE,\n selectManualForm,\n updateFormState,\n updateRequiredIds,\n} from '../../redux/slices/manualSlice';\nimport { selectPageConfig } from '../../redux/slices/moduleSlice';\nimport { React_Form_IDS } from '../../types/pages.type';\nimport PersonalDetailWrapper from '../PersonalDetailWrapper/PersonalDetailWrapper';\n\nimport type { DocumentTypes } from '../../appConfig.type';\nimport type { ManualReduxFormKeys } from '../../redux/slices/manualSlice';\n\n// Remarks: Mapping the current component based on the current form\n\nexport const manualComponents = {\n [React_Form_IDS.DOCUMENT]: IdSelection,\n [React_Form_IDS.REVIEW]: ReviewDocument,\n [React_Form_IDS.PERSONAL]: PersonalDetailWrapper,\n [DocumentKeys.DRIVERS_LICENCE]: IdDetails,\n [DocumentKeys.PASSPORT]: IdDetails,\n [DocumentKeys.NATIONAL_HEALTH_ID]: IdDetails,\n} satisfies Partial<\n Record<ManualReduxFormKeys, React.FC<{ config: IIdCardPageConfig }>>\n>;\n\nconst ManualDetailsWrapper = () => {\n const { pageConfigs } = useSelector(selectPageConfig);\n const [currentConfig, setCurrentConfig] = useState<IIdCardPageConfig>();\n const dispatch = useDispatch();\n\n const reduxForm = useSelector(selectManualForm);\n const { isAnyEditableDoc, modifyConfig, modifyDocConfig, insertedDocuments } =\n useManualFactory();\n const { idvEventEmitter } = useEventHandler();\n\n // Remarks: Updating the current configuration based on the current module\n useEffect(() => {\n dispatch(\n updateRequiredIds(\n pageConfigs[React_Form_IDS.DOCUMENT]?.['numberOfIDs'] ?? 1,\n ),\n );\n }, [pageConfigs]);\n\n useEffect(() => {\n setCurrentConfig(modifyConfig);\n }, [pageConfigs, reduxForm?.numberOfIdsRequired]);\n\n // Remarks: Updating form state based on the current configuration\n useEffect(() => {\n if (currentConfig?.name && !isAnyEditableDoc()) {\n dispatch(\n updateFormState({\n numberOfIdsRequired: currentConfig?.['numberOfIDs'] ?? 1,\n mode: FORM_MODE.CREATE,\n currentForm: React_Form_IDS?.[currentConfig.name],\n }),\n );\n }\n }, [currentConfig]);\n\n // Remarks: Updating configurations based on the number of IDs\n useEffect(() => {\n if (\n !isAnyEditableDoc() &&\n insertedDocuments.length == currentConfig?.['numberOfIDs']\n ) {\n idvEventEmitter({\n extraEventInfo: {\n documentType: insertedDocuments.map(\n (doc) => doc.key as DocumentTypes,\n ),\n },\n eventType: 'ready',\n });\n } else if (reduxForm?.data) {\n // Remarks: Change title based on the number of IDs & filter out the documents that have been filled\n setCurrentConfig(modifyDocConfig);\n }\n }, [reduxForm?.data]);\n\n const handleBack = (id: ManualReduxFormKeys) => {\n setCurrentConfig((prev) => modifyDocConfig(prev, id));\n };\n\n // Remarks: Getting the current component based on the current form\n const CurrentComp = useMemo(\n () => manualComponents?.[reduxForm?.currentForm ?? React_Form_IDS.DOCUMENT],\n [reduxForm?.currentForm],\n );\n\n if (!currentConfig && !reduxForm?.currentForm) return;\n\n return (\n <CurrentComp\n config={currentConfig}\n backButton={currentConfig?.type === 'manual'}\n onBack={handleBack}\n />\n );\n};\n\nexport default ManualDetailsWrapper;\n","import clsx from 'clsx';\nimport { useContext, useEffect, useState } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { useSelector } from 'react-redux';\n\nimport FrankieCheckbox from '../../components/view/FrankieCheckbox/FrankieCheckbox';\nimport FrankieFormMapper from '../../components/view/FrankieFormMapper/FrankieFormMapper';\nimport Heading from '../../components/view/FrankieHeading/Heading';\nimport Wrapper from '../../components/view/Wrapper/Wrapper';\nimport { EventContext, useEventHandler } from '../../hooks/useEventContext';\nimport { useReviewUpdateFactory } from '../../hooks/useReviewUpdateFactory.hook';\nimport { selectPageConfig } from '../../redux/slices/moduleSlice';\nimport { React_Form_IDS } from '../../types/pages.type';\n\nimport type { IFormPageConfig } from '../../appConfig.type';\nimport type { CheckboxFnProps } from '../../components/view/FrankieCheckbox/FrankieCheckbox';\nimport type { ReviewDocument } from '../../model/review.model';\n\nexport const Review = () => {\n const { pageConfigs } = useSelector(selectPageConfig);\n\n const { oneSDK } = useContext(EventContext);\n\n const config = pageConfigs[\n React_Form_IDS.REVIEW\n ] as IFormPageConfig<'REVIEW'>;\n\n const [currentConfig, setCurrentConfig] =\n useState<IFormPageConfig<'REVIEW'>>();\n\n const { getScannedData, updateModule, getUpdatedGlobalConfig } =\n useReviewUpdateFactory();\n\n const { documentReady } = useEventHandler();\n\n const form = useForm<ReviewDocument>({\n defaultValues: getScannedData,\n mode: 'all',\n });\n\n const { handleSubmit, watch } = form;\n const { country, region } = watch();\n\n\n // setting the current config\n useEffect(() => {\n setCurrentConfig(config);\n }, [config]);\n\n // updating the global config, based on the country & region\n useEffect(() => {\n setCurrentConfig((prev) => ({\n ...prev,\n documents: getUpdatedGlobalConfig(form),\n }));\n }, [country, region]);\n\n // clearing the errors and triggering the form validation\n useEffect(() => {\n form.clearErrors();\n form.trigger();\n }, [currentConfig]);\n \n // submitting the form, and syncing with the backend\n const handleFormSubmit = async () => {\n const individualData = form.getValues();\n updateModule(individualData).then(async () => {\n await oneSDK.individual().submit();\n await oneSDK.individual().search(); // syncing with backend\n documentReady();\n });\n };\n\n return (\n <Wrapper\n onSubmit={handleSubmit(handleFormSubmit)}\n disabled={!form.formState.isValid}\n renderScreen={({ onValidate }) => {\n const handleChange = (selectedItem: CheckboxFnProps) => {\n onValidate(selectedItem.isSelected);\n };\n\n return (\n <>\n <Heading\n label={config.title.label}\n style={config.title?.style}\n className={clsx('f1-mb-0')}\n />\n <FrankieFormMapper\n form={form}\n config={currentConfig}\n individualConfig={{ ...getScannedData, region, country, personalIdv:{\n country: watch('address.country'),\n region: watch('address.state'),\n }}}\n isOverrideCountry={false}\n />\n <div className=\"f1-w-full\">\n <FrankieCheckbox\n content={config?.instruction?.content}\n style={config?.instruction?.style}\n onChange={handleChange}\n />\n </div>\n </>\n );\n }}\n />\n );\n};\n","import {\n Consent,\n Welcome,\n consentPage,\n idSelectionPage,\n welcomePage,\n DocUpload,\n docUploadPage,\n} from '../features';\nimport { loadingPage } from '../features/Loading/loading.config';\nimport { personalDetailsPage } from '../features/PersonalDetails/personalDetails.config';\nimport { resultPage } from '../features/Result/result.config';\nimport Retry from '../features/Retry/Retry';\nimport { retryPage } from '../features/Retry/retry.config';\nimport { reviewPage } from '../features/Review/review.config';\nimport LoadingWrapper from '../pages/LoadingWrapper/LoadingWrapper';\nimport ManualDetailsWrapper from '../pages/ManualDetailsWrapper/ManualDetailsWrapper';\nimport PersonalDetailWrapper from '../pages/PersonalDetailWrapper/PersonalDetailWrapper';\nimport ResultWrapper from '../pages/ResultWrapper/ResultWrapper';\nimport ReviewWrapper from '../pages/ReviewWrapper/ReviewWrapper';\nimport { React_Form_IDS } from '../types/pages.type';\n\nimport type { ModuleInfo, NewPageConfig } from '../types/pages.type';\n\nexport const modules: Partial<Record<React_Form_IDS, ModuleInfo>> = {\n [React_Form_IDS.WELCOME]: {\n element: Welcome,\n disabled: false,\n id: React_Form_IDS.WELCOME,\n },\n [React_Form_IDS.CONSENT]: {\n element: Consent,\n disabled: true,\n id: React_Form_IDS.CONSENT,\n },\n [React_Form_IDS.DOCUMENT]: {\n element: ManualDetailsWrapper,\n disabled: false,\n id: React_Form_IDS.DOCUMENT,\n },\n [React_Form_IDS.RETRY]: {\n element: Retry,\n disabled: false,\n id: React_Form_IDS.RETRY,\n },\n [React_Form_IDS.REVIEW]: {\n element: ReviewWrapper,\n disabled: true,\n id: React_Form_IDS.REVIEW,\n },\n [React_Form_IDS.PERSONAL]: {\n element: PersonalDetailWrapper,\n disabled: false,\n id: React_Form_IDS.PERSONAL,\n },\n [React_Form_IDS.LOADING]: {\n element: LoadingWrapper,\n disabled: true,\n id: React_Form_IDS.LOADING,\n },\n [React_Form_IDS.RESULT]: {\n element: ResultWrapper,\n disabled: false,\n id: React_Form_IDS.RESULT,\n },\n [React_Form_IDS.DOC_UPLOAD]: {\n element: DocUpload,\n disabled: false,\n id: React_Form_IDS.DOC_UPLOAD,\n },\n};\n\nexport const pagesConfig = {\n [React_Form_IDS.WELCOME]: welcomePage,\n [React_Form_IDS.CONSENT]: consentPage,\n [React_Form_IDS.DOCUMENT]: idSelectionPage,\n [React_Form_IDS.RETRY]: retryPage,\n [React_Form_IDS.REVIEW]: reviewPage,\n [React_Form_IDS.PERSONAL]: personalDetailsPage,\n [React_Form_IDS.LOADING]: loadingPage,\n [React_Form_IDS.RESULT]: resultPage,\n [React_Form_IDS.DOC_UPLOAD]: docUploadPage,\n} satisfies NewPageConfig;\n\nexport const localModuleScreen: React_Form_IDS[] = [React_Form_IDS.RESULT];\nexport const isSameReduxModule = (\n pageConfigs: NewPageConfig,\n currModuleName: React_Form_IDS,\n) => pageConfigs?.currentModule === currModuleName;\n","import clsx from 'clsx';\nimport { useSelector } from 'react-redux';\n\nimport FrankieDescription from '../../components/view/FrankieDescription/FrankieDescription';\nimport Heading from '../../components/view/FrankieHeading/Heading';\nimport FrankieInstructionList from '../../components/view/FrankieInstructionList/FrankieInstructionList';\nimport Wrapper from '../../components/view/Wrapper/Wrapper';\nimport { useEventHandler } from '../../hooks/useEventContext';\nimport { selectPageConfig } from '../../redux/slices/moduleSlice';\nimport { React_Form_IDS } from '../../types/pages.type';\n\nconst Welcome = () => {\n const { pageConfigs } = useSelector(selectPageConfig);\n const config = pageConfigs[React_Form_IDS.WELCOME];\n const { documentReady } = useEventHandler();\n\n return (\n <Wrapper\n onSubmit={documentReady}\n renderScreen={() => {\n return (\n <>\n <Heading\n label={config.title?.label}\n style={config.title?.style}\n className={clsx('f1-text-3xl', 'f1-mb-2', 'f1-leading-[42px]')}\n />\n <FrankieDescription descriptions={config?.descriptions} />\n <FrankieInstructionList {...config?.instructions} />\n <div\n className={clsx(\n 'f1-mb-2',\n 'f1-text-tertiary-grey-700',\n 'f1-font-normal',\n 'f1-text-md',\n 'f1-leading-6',\n 'f1-link-text',\n )}\n >\n {config?.['sender']}\n </div>\n <div\n className={clsx(\n 'f1-mb-2',\n 'f1-text-tertiary-grey-700',\n 'f1-font-normal',\n 'f1-text-md',\n 'f1-leading-6',\n 'f1-link-text',\n )}\n >\n {config?.['expiry']}\n </div>\n </>\n );\n }}\n />\n );\n};\n\nexport default Welcome;\n","import { useEffect, useMemo, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport {\n DocumentKeys,\n type IFormPageConfig,\n type IIdCardPageConfig,\n} from '../../appConfig.type';\nimport { commonInfo } from '../../constants/locale.const';\nimport { useManualFactory } from '../../hooks/useManualWrapperFactory.hook';\nimport {\n FORM_MODE,\n selectManualForm,\n updateBackHistory,\n updateFormState,\n} from '../../redux/slices/manualSlice';\nimport { selectPageConfig } from '../../redux/slices/moduleSlice';\nimport { React_Form_IDS } from '../../types/pages.type';\nimport IdDetails from '../IdDetails/IdDetails';\nimport IdSelection from '../IdSelection/IdSelection';\nimport PersonalDetails from '../PersonalDetails/PersonalDetails';\nimport ReviewDocument from '../ReviewDocument/ReviewDocument';\n\nimport type { ManualReduxFormKeys } from '../../redux/slices/manualSlice';\n\nconst Retry = () => {\n const { pageConfigs } = useSelector(selectPageConfig);\n const config = pageConfigs[React_Form_IDS.RETRY] as IFormPageConfig<'RETRY'>;\n const reduxForm = useSelector(selectManualForm);\n\n const dispatch = useDispatch();\n\n const [currentConfig, setCurrentConfig] = useState<IIdCardPageConfig>();\n\n useEffect(() => {\n dispatch(\n updateFormState({\n currentForm: React_Form_IDS.RETRY,\n mode: FORM_MODE.REVIEW,\n }),\n );\n setCurrentConfig(config as never as IIdCardPageConfig);\n }, []);\n\n const {\n isAdditionaDoc,\n isAnyEditableDoc,\n modifyConfig,\n modifyDocConfig,\n insertedDocuments,\n personalSequence,\n } = useManualFactory();\n\n useEffect(() => {\n setCurrentConfig(modifyConfig);\n }, [pageConfigs, reduxForm?.currentForm]);\n\n useEffect(() => {\n setCurrentConfig(modifyDocConfig);\n }, [reduxForm?.currentForm]);\n\n const handlePersonalSubmit = () => {\n !personalSequence(0).isValidIndex && loadNewScreen(React_Form_IDS.REVIEW);\n };\n\n const PersonalComponent = useMemo(\n () => (\n <PersonalDetails\n config={currentConfig as never as IFormPageConfig<'PERSONAL'>}\n formFieldsType={React_Form_IDS.PERSONAL}\n previewImage={false}\n onSubmit={handlePersonalSubmit}\n />\n ),\n [currentConfig],\n );\n\n const handleIDBack = (type: ManualReduxFormKeys) => {\n dispatch(updateBackHistory({ id: type }));\n };\n\n useEffect(() => {\n setCurrentConfig((prev) => modifyDocConfig(prev, true));\n }, [reduxForm.backHistory]);\n\n const IdDetailsComponents = useMemo(\n () => (\n <IdDetails\n config={currentConfig}\n formFieldsType={React_Form_IDS.DOCUMENT}\n onBack={handleIDBack}\n />\n ),\n [currentConfig],\n );\n\n const loadNewScreen = (screen: React_Form_IDS) =>\n dispatch(updateFormState({ currentForm: screen }));\n\n const getReviewOrPersonal = () =>\n personalSequence(0).isValidIndex\n ? React_Form_IDS.REVIEW\n : React_Form_IDS.PERSONAL;\n\n useEffect(() => {\n const isEditableMode = reduxForm.mode === FORM_MODE.EDIT;\n if (!insertedDocuments.length && !isEditableMode && reduxForm.currentForm) {\n loadNewScreen(getReviewOrPersonal());\n return;\n }\n\n // Remarks: This is for the addtional ids\n // just after inserting additional id we need to show the review screen\n if (\n !isEditableMode &&\n insertedDocuments.length >\n pageConfigs[React_Form_IDS.DOCUMENT]?.['numberOfIDs'] &&\n insertedDocuments.every((doc) => doc.value.dirty !== null)\n ) {\n loadNewScreen(getReviewOrPersonal());\n return;\n }\n\n if (\n !isAnyEditableDoc() &&\n insertedDocuments.length >=\n pageConfigs[React_Form_IDS.DOCUMENT]?.['numberOfIDs']\n ) {\n // Remarks: This is for the addtional ids\n if (isAdditionaDoc()) {\n setCurrentConfig((prev) => {\n const modifiedConfig = {\n ...prev,\n title: {\n ...prev.title,\n label: commonInfo.additionInfo.label,\n },\n descriptions: commonInfo.additionInfo.descriptions,\n documents: prev.documents.map((doc) => ({\n ...doc,\n visible: !insertedDocuments.find((item) => item.key === doc.type),\n })),\n };\n\n // Remarks: If all the documents are filled then we need to show the review screen\n if (modifiedConfig.documents.every((doc) => !doc.visible)) {\n loadNewScreen(getReviewOrPersonal());\n }\n return modifiedConfig;\n });\n } else if (\n reduxForm.currentForm &&\n !isEditableMode &&\n insertedDocuments.every(\n (doc) => doc.value.dirty !== null || doc.value.dirty === true,\n )\n ) {\n loadNewScreen(getReviewOrPersonal());\n }\n } else if (reduxForm?.data) {\n // Remarks: Change title based on the number of IDs & filter out the documents that have been filled\n setCurrentConfig(modifyDocConfig);\n }\n }, [reduxForm?.data]);\n\n const IdSelectionComponent = useMemo(() => {\n const visibility =\n !!reduxForm.pageHistory?.length || reduxForm.mode === FORM_MODE.EDIT;\n const isBackVisible = !personalSequence(0).isValidIndex ? visibility : true;\n\n return (\n <IdSelection\n config={currentConfig as never as IIdCardPageConfig}\n backButton={isBackVisible}\n />\n );\n }, [currentConfig, reduxForm.pageHistory]);\n\n if (!currentConfig) return null;\n\n switch (reduxForm.currentForm) {\n case React_Form_IDS.RETRY: {\n return personalSequence(0).isValidIndex\n ? PersonalComponent\n : IdSelectionComponent;\n }\n case React_Form_IDS.PERSONAL:\n return PersonalComponent;\n case React_Form_IDS.DOCUMENT:\n return IdSelectionComponent;\n case DocumentKeys.DRIVERS_LICENCE:\n return IdDetailsComponents;\n case DocumentKeys.PASSPORT:\n return IdDetailsComponents;\n case DocumentKeys.NATIONAL_HEALTH_ID:\n return IdDetailsComponents;\n case React_Form_IDS.REVIEW:\n return <ReviewDocument />;\n default:\n return null;\n }\n};\n\nexport default Retry;\n","import { useSelector } from 'react-redux';\n\nimport { Review } from '../../features/Review/Review';\nimport ReviewDocument from '../../features/ReviewDocument/ReviewDocument';\nimport { selectPageConfig } from '../../redux/slices/moduleSlice';\nimport { React_Form_IDS } from '../../types/pages.type';\n\nimport type { IFormPageConfig } from '../../appConfig.type';\n\nconst ReviewWrapper = () => {\n const { pageConfigs } = useSelector(selectPageConfig);\n const config = pageConfigs[\n React_Form_IDS.REVIEW\n ] as IFormPageConfig<'REVIEW'>;\n if (config?.['type'] === 'manual') return <ReviewDocument />;\n else return <Review />;\n};\n\nexport default ReviewWrapper;\n","import Loading from '../../features/Loading/Loading';\n\nconst LoadingWrapper = () => {\n return <Loading />;\n};\n\nexport default LoadingWrapper;\n","import { useSelector } from 'react-redux';\n\nimport Result from '../../features/Result/Result';\nimport { selectPageConfig } from '../../redux/slices/moduleSlice';\nimport { React_Form_IDS } from '../../types/pages.type';\n\nimport type { IProgressPageConfig } from '../../appConfig.type';\n\nconst ResultWrapper = () => {\n const { pageConfigs } = useSelector(selectPageConfig);\n const config = pageConfigs[\n React_Form_IDS.RESULT\n ] as IProgressPageConfig<'RESULT'>;\n\n return <Result config={config} />;\n};\n\nexport default ResultWrapper;\n","import type { IStaticPageConfig } from '../../appConfig.type';\n\nexport const consentPage = {\n name: 'CONSENT',\n mode: 'individual',\n type: 'ocr',\n title: { label: 'Your consent matters', style: {} },\n descriptions: [\n {\n label: `Your personal information being collected and used in accordance with FrankieOne's <a href=\"https://www.frankieone.com/privacy\" target=\"_blank\">Privacy Policy</a>.`,\n style: {},\n },\n {\n label:\n 'In addition, for the purposes of verifying your identity, you consent to: a) the verification of my personal information with credit bureau header files (for verification only); b) against records held by official document issues or official record holders via third party systems; and c) verification agent(s) acting as a nominated intermediary in accordance with Australian Privacy Principles.',\n style: {},\n },\n {\n label:\n 'You consent to the use by third parties of the results of any verification checks on my identity for the purposes of monitoring and improving their verification services.',\n style: {},\n },\n ],\n checkbox: {\n content: [\n {\n label: 'I have read and agree the above disclosure',\n style: {},\n },\n ],\n style: {},\n },\n cta: { icon: '', label: 'Continue', style: {} },\n style: {},\n} satisfies IStaticPageConfig;\n// use satisfied for avoiding global runtime errors\n// it will impact consent component if you will be [const obj: IStaticPageConfig = { ... }]\n","// eslint-disable-next-line check-file/filename-naming-convention\nimport { createSlice } from '@reduxjs/toolkit';\n\nimport { pagesConfig } from '../../constants/layoutMapper.const';\nimport { REDUX_KEYS } from '../constants/stateKey.enum';\n\nimport type { NewPageConfig } from '../../types/pages.type';\nimport type { PayloadAction } from '@reduxjs/toolkit';\n\nexport interface PageConfigState {\n pageConfigs: NewPageConfig;\n}\n\nconst initialState: PageConfigState = {\n pageConfigs: pagesConfig,\n};\n\nconst pageConfigSlice = createSlice({\n name: REDUX_KEYS.PAGE_CONFIG,\n initialState,\n reducers: {\n addPageConfig: (state, action: PayloadAction<NewPageConfig>) => {\n state.pageConfigs = { ...state.pageConfigs, ...action.payload };\n },\n removeCurrentModule: (state) => {\n state.pageConfigs.currentModule = null;\n },\n },\n});\n\nexport const { addPageConfig, removeCurrentModule } = pageConfigSlice.actions;\n\nexport const selectPageConfig = (state: {\n [REDUX_KEYS.PAGE_CONFIG]: PageConfigState;\n}) => state[REDUX_KEYS.PAGE_CONFIG];\n\nexport default pageConfigSlice.reducer;\n","// eslint-disable-next-line check-file/filename-naming-convention\nimport type {\n EventPayload,\n FormEvents,\n ScreenEventType,\n} from '@module/form/events';\nimport { screenEventMaps } from '@module/form/events';\n\nimport { React_Form_IDS } from '../types/pages.type';\n\nimport type { DocumentTypes } from '../appConfig.type';\nimport type { NewPageConfig } from '../types/pages.type';\n\nexport function getEventConfig(eventConfig: {\n pageConfigs: NewPageConfig;\n documentType?: DocumentTypes;\n eventType: keyof ScreenEventType;\n extraEventInfo?: Partial<EventPayload['inputInfo']>;\n}): {\n eventConfig: EventPayload;\n eventName: keyof FormEvents;\n} {\n const currentModule =\n eventConfig.pageConfigs[eventConfig.pageConfigs.currentModule];\n const excludeTypes: React_Form_IDS[] = [React_Form_IDS.CONSENT];\n\n return {\n eventConfig: {\n inputInfo: {\n name: React_Form_IDS[currentModule?.name],\n ...(!excludeTypes.includes(React_Form_IDS[currentModule?.name]) && {\n type: currentModule?.['type'] || 'ocr',\n }),\n ...(eventConfig?.documentType && {\n documentType: eventConfig.documentType,\n }),\n ...eventConfig?.extraEventInfo,\n },\n },\n eventName:\n screenEventMaps[\n eventConfig?.extraEventInfo?.name ?? React_Form_IDS[currentModule?.name]\n ][eventConfig.eventType],\n };\n}\n","// eslint-disable-next-line check-file/filename-naming-convention\nimport { createContext, useContext } from 'react';\nimport { useSelector } from 'react-redux';\n\nimport type { EventHub } from '@module/common';\nimport type {\n EventPayload,\n FormEvents,\n ScreenEventType,\n} from '@module/form/events';\nimport type { OneSdkContext } from '@module/types';\n\nimport { selectPageConfig } from '../redux/slices/moduleSlice';\nimport { getEventConfig } from '../utils/layout.util';\n\nimport type { ConfigType } from '../App';\nimport type { DocumentTypes } from '../appConfig.type';\n\nexport type EventContextType = {\n oneSDK: OneSdkContext;\n eventHub: EventHub<FormEvents>;\n localEventHub: EventHub<FormEvents>;\n config: ConfigType;\n googleApiKey: string;\n};\n\nexport const EventContext = createContext<EventContextType | undefined>(\n undefined,\n);\n\nexport const useEventHandler = () => {\n const { pageConfigs } = useSelector(selectPageConfig);\n\n const { eventHub, localEventHub, oneSDK } = useContext(EventContext);\n\n const documentReady = (\n documentType?: DocumentTypes,\n extraEventInfo?: Partial<EventPayload['inputInfo']>,\n ) => {\n const { eventName, eventConfig } = getEventConfig({\n pageConfigs: pageConfigs,\n documentType: documentType,\n eventType: 'ready',\n extraEventInfo,\n });\n localEventHub.emit(eventName, eventConfig);\n };\n\n const documentLoaded = (\n extraEventInfo?: Partial<EventPayload['inputInfo']>,\n ) => {\n const { eventName, eventConfig } = getEventConfig({\n pageConfigs: pageConfigs,\n eventType: 'loaded',\n extraEventInfo,\n });\n\n localEventHub.emit(eventName, eventConfig);\n };\n\n const documentResultReady = (state: keyof ScreenEventType) => {\n const { eventName, eventConfig } = getEventConfig({\n pageConfigs: pageConfigs,\n eventType: state,\n });\n\n localEventHub.emit(eventName, eventConfig);\n };\n\n /**\n *\n * @param config information about the event\n * event category: local means you are emmting event locally,\n * global means you are emitting event globally, it can be caputured by any module\n */\n const idvEventEmitter = (config?: {\n eventCategory?: 'local' | 'global';\n extraEventInfo?: Partial<EventPayload['inputInfo']>;\n eventType: keyof ScreenEventType;\n }) => {\n const { eventName, eventConfig } = getEventConfig({\n pageConfigs: pageConfigs,\n eventType: config?.eventType,\n extraEventInfo: config?.extraEventInfo,\n });\n (config?.eventCategory === 'local' ? eventHub : localEventHub).emit(\n eventName,\n eventConfig,\n );\n };\n\n return {\n documentReady,\n documentLoaded,\n documentResultReady,\n idvEventEmitter,\n oneSDK,\n };\n};\n","import clsx from 'clsx';\nimport { useContext, useMemo } from 'react';\nimport { useSelector } from 'react-redux';\n\nimport { ConfigCSSKeys } from '../../appConfig.type';\nimport { isSameReduxModule, modules } from '../../constants/layoutMapper.const';\nimport { EventContext } from '../../hooks/useEventContext';\nimport { selectPageConfig } from '../../redux/slices/moduleSlice';\nimport { React_Form_IDS } from '../../types/pages.type';\n\nconst MainLayout = () => {\n const { pageConfigs } = useSelector(selectPageConfig);\n const { config } = useContext(EventContext);\n\n const ActiveComponent = useMemo(\n () => modules[pageConfigs.currentModule]?.element,\n [pageConfigs.currentModule],\n );\n\n // NOTE: If the current module is not the form module or the ActiveComponent is not available, return null\n // its prevent the rendereding the same module multiple times\n if (\n !isSameReduxModule(pageConfigs, React_Form_IDS[config.name]) ||\n !ActiveComponent\n )\n return null;\n\n return (\n <div\n className={clsx(\n 'f1-flex',\n 'f1-flex-col',\n 'f1-justify-between',\n 'tablet:f1-justify-normal',\n 'f1-h-full',\n 'f1-w-full',\n 'tablet:f1-max-w-[442px]',\n ConfigCSSKeys.wrapper,\n )}\n style={\n pageConfigs[pageConfigs.currentModule]?.['style']?.[\n ConfigCSSKeys.wrapper\n ]\n }\n >\n <ActiveComponent />\n </div>\n );\n};\n\nexport default MainLayout;\n","import { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n\nimport { isSameReduxModule } from '../../constants/layoutMapper.const';\nimport { useConfigFactory } from '../../hooks/useConfigFactory.hooks';\nimport { useEventHandler } from '../../hooks/useEventContext';\nimport { MainLayout } from '../../layout';\nimport {\n addPageConfig,\n selectPageConfig,\n} from '../../redux/slices/moduleSlice';\nimport { React_Form_IDS } from '../../types/pages.type';\n\nconst eventExcludeIn = [React_Form_IDS.LOADING];\n\nconst ScreenWrapper = ({ config }) => {\n const { pageConfigs } = useSelector(selectPageConfig);\n const dispatch = useDispatch();\n const { mergeAndReplaceConfig } = useConfigFactory();\n const { documentLoaded } = useEventHandler();\n\n const currModuleName = React_Form_IDS[config?.name] ?? React_Form_IDS.WELCOME;\n\n /**\n * @description This useEffect will be called when the currentModule is changed\n * it will emit loaded event to every new module\n */\n useEffect(() => {\n if (\n pageConfigs?.currentModule &&\n isSameReduxModule(pageConfigs, currModuleName) &&\n !eventExcludeIn.includes(pageConfigs.currentModule)\n ) {\n documentLoaded();\n }\n }, [pageConfigs.currentModule]);\n\n /**\n * @description This useEffect will be called when the currentModule is changed\n * it will add the new module to the pageConfigs\n */\n useEffect(() => {\n dispatch(\n addPageConfig({\n currentModule: currModuleName,\n [currModuleName]: mergeAndReplaceConfig(\n pageConfigs[currModuleName],\n config,\n currModuleName,\n ),\n }),\n );\n }, [config]);\n\n return <MainLayout />;\n};\n\nexport default ScreenWrapper;\n","/* eslint-disable check-file/filename-naming-convention */\nimport { createSlice } from '@reduxjs/toolkit';\n\nimport { REDUX_KEYS } from '../constants/stateKey.enum';\n\nimport type { PayloadAction } from '@reduxjs/toolkit';\n\nexport type LoaderDetails = {\n label?: string;\n descriptions?: string[];\n};\n\nexport type LoaderState = LoaderDetails & {\n loading?: boolean;\n};\n\ntype ActionPayloadProps = Partial<LoaderDetails>;\n\nconst initialState: LoaderState = {\n loading: false,\n label: 'Loading...',\n};\n\nexport const loaderSlice = createSlice({\n name: REDUX_KEYS.LOADER,\n initialState,\n reducers: {\n startLoading: (state, action: PayloadAction<ActionPayloadProps>) => {\n state.loading = true;\n state.label = action?.payload?.label ?? state.label;\n state.descriptions = action?.payload?.descriptions;\n },\n\n stopLoading: (state) => {\n state.loading = false;\n state.label = undefined;\n state.descriptions = undefined;\n },\n },\n});\n\nexport const { startLoading, stopLoading } = loaderSlice.actions;\n\nexport const selectLoading = (state: { loader: LoaderState }) => state.loader;\n\nexport default loaderSlice.reducer;\n","import { configureStore } from '@reduxjs/toolkit';\n\nimport { REDUX_KEYS } from './constants/stateKey.enum';\nimport loaderReducer from './slices/loaderSlice';\nimport manualFlowReducer from './slices/manualSlice';\nimport pagesConfigReducer from './slices/moduleSlice';\n\nexport const store = configureStore({\n reducer: {\n [REDUX_KEYS.LOADER]: loaderReducer,\n [REDUX_KEYS.PAGE_CONFIG]: pagesConfigReducer,\n [REDUX_KEYS.MANUAL_FLOW]: manualFlowReducer,\n },\n});\n","import { Provider } from 'react-redux';\n\nimport type { EventHub } from '@module/common';\nimport type { OneSdkContext } from '@module/types';\n\n// redux store is required to initialise first\n// eslint-disable-next-line import/order\nimport { EventContext } from './hooks/useEventContext';\nimport ScreenWrapper from './pages/ScreenWrapper/ScreenWrapper';\nimport { store } from './redux/store';\n\nimport type { ReactFormIdsKeys } from './types/pages.type';\nimport type { PartialObjectDeep } from 'type-fest/source/partial-deep';\n\nexport type ScreenInfo = {\n name: ReactFormIdsKeys;\n};\n\nexport type ConfigType = PartialObjectDeep<\n PartialObjectDeep<ScreenInfo, Record<string, never>>,\n Record<string, never>\n> &\n ScreenInfo;\n\nexport interface AppProps {\n oneSDK: OneSdkContext;\n eventHub: EventHub;\n localEventHub: EventHub;\n config: ConfigType;\n googleApiKey: string;\n}\n\nconst App = ({\n oneSDK,\n eventHub,\n localEventHub,\n config,\n googleApiKey,\n}: AppProps) => {\n return (\n <Provider store={store}>\n <EventContext.Provider\n value={{ oneSDK, eventHub, config, googleApiKey, localEventHub }}\n >\n <ScreenWrapper config={config} />\n </EventContext.Provider>\n </Provider>\n );\n};\n\nexport default App;\n","\n import API from \"!../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../node_modules/css-loader/dist/cjs.js!./f1-style.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../node_modules/css-loader/dist/cjs.js!./f1-style.css\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../node_modules/css-loader/dist/cjs.js!./fonts.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../node_modules/css-loader/dist/cjs.js!./fonts.css\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../node_modules/css-loader/dist/cjs.js!./styles.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../node_modules/css-loader/dist/cjs.js!./styles.css\";\n export default content && content.locals ? content.locals : undefined;\n","import { CSSProperties } from 'react';\n\nexport const formStyle: CSSProperties = {\n height: '100%',\n textAlign: 'left',\n background: 'white',\n display: 'flex',\n justifyContent: 'center',\n overflow: 'auto',\n};\n","// eslint-disable-next-line check-file/filename-naming-convention\nimport ReactDOM from 'react-dom/client';\n\nimport { feat } from '@feature-flags';\nimport { loadAsyncAsset } from '@module/common';\nimport { defineWrapper } from '@module/common/modules/defineModule';\nimport type { FormModule } from '@module/form/definition';\nimport type { FormEvents, ScreenEventType } from '@module/form/events';\n\nimport App from './App';\n\nimport '../../../../styles/f1-style.css';\nimport '../../../../styles/fonts/fonts.css';\nimport '../../../../styles/styles.css';\nimport { formStyle } from './constants/styles.const';\nimport { React_Form_IDS } from './types/pages.type';\n\nimport type { FontConfig } from './appConfig.type';\n\ntype EType = keyof FormEvents;\n\nconst cleanupEvents = [\n 'form:result:success',\n 'form:result:failed',\n 'form:result:partial',\n 'form:result:pending',\n 'form:result:ready',\n] as EType[];\n\n// Classlist for the form container\nconst CONTAINER_CLASSLIST = ['form', 'react', 'ff-react-form'];\n\nexport const initialise = defineWrapper<FormModule>(\n 'react',\n async (shared, options) => {\n const { mountElement, eventHub } = options;\n const {\n oneSdkInstance,\n localEventHub,\n recipe: {\n form: { provider },\n },\n } = shared;\n // Retrieving the screen info from the recipe, default to WELCOME\n const config = provider.name === 'react' && provider?.config;\n const googleApiKey =\n (provider.name === 'react' && provider?.googleApiKey) ??\n process.env.PUBLIC_GOOGLE_MAP_API ??\n '';\n const currentScreenEvent = (type: keyof ScreenEventType = 'ready') =>\n `form:${\n React_Form_IDS[config.name ?? 'WELCOME']\n }:${type}` as keyof FormEvents;\n\n try {\n // Load font dynamically based on config\n const { name: fontName, url: fontUrl } =\n (config?.style?.['font'] as FontConfig) ?? {};\n await downloadFont(fontUrl);\n if (\n config.mode === 'business' &&\n !oneSdkInstance.business().access('entityId').getValue()\n ) {\n await oneSdkInstance.business().search();\n }\n // Adding specified class list to the mount element\n mountElement.classList.add(...CONTAINER_CLASSLIST);\n // Retrieving the wrapping mode from the feature flag\n const wrappingMode = feat('modules.form.wrappingMode');\n // Dynamically attaching the required elements based on wrapping mode\n const [styledMountElement, _wrapperElement, _windowContainer] =\n await ((): Promise<[HTMLElement, Node, Window]> => {\n if (wrappingMode === 'shadow')\n return attachShadow(mountElement, fontName);\n return attachDiv(mountElement, fontName);\n })();\n\n const reactRoot = ReactDOM.createRoot(styledMountElement);\n\n reactRoot.render(\n <App\n oneSDK={oneSdkInstance}\n eventHub={eventHub}\n localEventHub={localEventHub}\n config={config}\n googleApiKey={googleApiKey}\n />,\n );\n\n const cleanUpInstance = () => {\n mountElement.innerHTML = '';\n reactRoot.unmount();\n };\n\n // We are removing the previous instance of the form and cleaning up\n localEventHub.on(currentScreenEvent(), async () => {\n cleanUpInstance();\n });\n localEventHub.on(currentScreenEvent('back'), async () => {\n cleanUpInstance();\n });\n cleanupEvents.forEach((event) => {\n localEventHub.on(event, async () => {\n cleanUpInstance();\n });\n });\n } catch (error) {\n // Emitting a 'failed_loading' event in case of an error\n localEventHub.emit(currentScreenEvent('failed'), { message: error });\n }\n\n return {\n cleanup: () => {},\n };\n },\n);\n\nconst downloadFont = async (fontUrl: string) => {\n if (fontUrl) {\n const isFontLoaded = Array.from(\n document.querySelectorAll('link[rel=\"stylesheet\"]'),\n ).some((link: HTMLLinkElement) => link?.href === fontUrl);\n\n // Load font if it's not already loaded\n if (!isFontLoaded) {\n await loadAsyncAsset(fontUrl, 'style');\n }\n }\n};\n\nconst attachStyles = (mountElement: HTMLElement, fontName?: string) => {\n // Creating an internal mount element as a child of the provided mount element\n const internalMountElement = document.createElement('div');\n mountElement.appendChild(internalMountElement);\n Object.assign(internalMountElement.style, {\n ...formStyle,\n ...(fontName && { fontFamily: fontName }),\n });\n\n // applying font to the internal elements\n if (fontName) {\n const elementsToStyle = mountElement.querySelectorAll(\n 'input, select, .f1-font-proxima-nova',\n );\n elementsToStyle?.forEach((element) => {\n // Check if the element already has inline styles\n const existingStyle = element.getAttribute('style');\n const updatedStyle = `${existingStyle ? existingStyle + ';' : ''} font-family: ${fontName} !important;`;\n // Apply the updated style\n element.setAttribute('style', updatedStyle);\n });\n }\n\n return internalMountElement;\n};\n\n// Function to attach the mount element to a div\nconst attachDiv = async (\n mountElement: HTMLElement,\n fontName?: string,\n): Promise<[HTMLElement, Node, Window]> => {\n const internalMountElement = attachStyles(mountElement, fontName);\n return [internalMountElement, mountElement, window];\n};\n\n// Function to attach the mount element to a shadow root\nconst attachShadow = async (\n mountElement: HTMLElement,\n fontName?: string,\n): Promise<[HTMLElement, Node, Window]> => {\n // Creating a shadow root for the provided mount element\n const shadowRoot = mountElement.attachShadow({ mode: 'open' });\n const internalMountElement = attachStyles(mountElement, fontName);\n return [internalMountElement, shadowRoot, window];\n};\n"],"names":["___CSS_LOADER_EXPORT___","push","module","id","___CSS_LOADER_URL_IMPORT_0___","URL","___CSS_LOADER_URL_IMPORT_1___","___CSS_LOADER_URL_IMPORT_2___","___CSS_LOADER_URL_IMPORT_3___","___CSS_LOADER_URL_IMPORT_4___","___CSS_LOADER_URL_IMPORT_5___","___CSS_LOADER_URL_IMPORT_6___","___CSS_LOADER_URL_IMPORT_7___","___CSS_LOADER_URL_REPLACEMENT_0___","___CSS_LOADER_URL_REPLACEMENT_1___","___CSS_LOADER_URL_REPLACEMENT_2___","___CSS_LOADER_URL_REPLACEMENT_3___","___CSS_LOADER_URL_REPLACEMENT_4___","___CSS_LOADER_URL_REPLACEMENT_5___","___CSS_LOADER_URL_REPLACEMENT_6___","___CSS_LOADER_URL_REPLACEMENT_7___","alpha2ToAlpha3","alpha2","country","alpha3","alpha3ToAlpha2","alpha3ToName","name","allCountries","Object","keys","filter","code","length","map","value","label","className","width","height","viewBox","fill","xmlns","d","icons","loader","checkbox","rightArrowIcon","driverLicenseIcon","passportIcon","medicalIcon","driversLicenseBanner","passportBanner","mediCareBanner","magnify","magnifyError","alertCircleOutline","close","chevronDown","chevronDownError","closeError","nzDriverLicence","nzSampleCard","nzVersionNumber","actLicenseNumber","actIdDetails","nswSampleCard","nswLicenseNumber","nswIdDetails","ntSampleCard","ntLicenseNumber","ntIdDetails","nzIdDetails","nzLicenseNumber","qldSampleCard","qldLicenseNumber","qldIdDetails","saSampleCard","saLicenseNumber","saIdDetails","tasSampleCard","tasLicenseNumber","tasIdDetails","vicSampleCard","vicLicenseNumber","vicIdDetails","waSampleCard","waLicenseNumber","waIdDetails","blueMedicareCard","greenMedicareCard","yellowMedicareCard","backArrow","actSampleCard","ausPassport","nzPassport","chevronUp","chevronUpError","editIcon","failedIcon","pendingIcon","retryIcon","successIcon","loadingIcon","internationPassport","fileDocumentCheckOutline","fileDocumentAlertOutline","passportPage","mode","title","descriptions","instructions","content","image","cta","mediCarePage","icon","ConfigCSSKeys","DocumentKeys","RESULT_STATE","values","style","onChange","testid","container","input","inputWrapper","clsx","instruction","index","checkboxItem","type","e","item","isSelected","target","checked","htmlFor","testId","description","dangerouslySetInnerHTML","__html","sanitize","header","mockImg","onBack","onClick","src","alt","BaseButton","disabled","props","FrankieButton","FrankieFormButton","button","visible","preButton","buttonClass","editable","pre","cancelButton","border","post","renderScreen","onSubmit","ctaInfo","formWrapperClass","inputButtonClass","inputClass","hideCTA","buttonConfig","pageConfigs","selectPageConfig","currModule","setModule","useState","modules","currentModule","useEffect","configInfo","onValidate","isValid","prevModule","driversLicensePage","contentWrapper","instructionItem","staticScreenConfig","DRIVERS_LICENCE","PASSPORT","NATIONAL_HEALTH_ID","configData","subtitle","onSelect","wrapper","frankieCard","useCallback","documentItem","tabIndex","postIcon","documents","commonInfo","additionInfo","ordinalWords","numberToText","REDUX_KEYS","FORM_MODE","VERIFICATION_FAILED_IDS","initialState","data","currentForm","numberOfIdsRequired","CREATE","pageHistory","backHistory","getUniqueData","dataList","self","findIndex","obj","manualFlowSlice","MANUAL_FLOW","reducers","updateReduxForm","state","action","key","payload","stateDataV1","reduce","prev","curr","docFields","dirty","isAdditionalId","failedType","ID","indexOf","PERSONAL","personalData","replacedId","newData","forEach","v1Data","newKey","updateFormState","idType","entries","updateHistory","isClear","isRemove","updateBackHistory","clearAllHistory","clearFormState","updateFailState","resetForm","updateRequiredIds","actions","selectManualForm","getUniqueList","combinedList","uniqueList","searchedIndex","uniqueItem","replaceIfExistInList","str","words","replaceIndex","titleWords","split","wordIndex","includes","join","changeWordFromString","string","newValue","char","getAllPaths","parentPath","paths","currentPath","concat","getReadableDocType","docType","first","rest","toUpperCase","toLowerCase","capitaliseWords","countriesInfo","AUS","alpha3Code","getStates","sort","a","b","localeCompare","getFormateDate","date","isReversed","splittedDate","indx","padStart","reverse","getAllCountries","nationalHealthIdOptions","getFullAddress","addr","vStr","postFixData","toString","trim","streetName","streetName1","streetNumber","streetNumber2","getStreetInfo","street","unitNumber","town","postalCode","i","sdValue","streetAddress","shift","checkObjectEditable","fallbackCheck","onlyData","haveNullOrUndfined","some","undefined","haveValue","formatDate","dateString","fromFormat","toFormat","isDateExist","newDate","slice","sortData","config","sequence","sequenceOrder","Map","indexA","get","indexB","useManualFactory","reduxForm","personalSequence","ind","isValidIndex","modifyLabel","currentLabel","insertedDocuments","useMemo","isAnyEditableDoc","EDIT","isEditMode","find","numberOfIdsRequire","isDocVisible","isBack","createdDocs","currentDocument","isExistInPagination","RETRY","isFocused","getModifiedLabel","changeLabelIfExist","objLen","visibleDocLen","acc","requiredDocLen","docDiff","objLength","Math","abs","DOCUMENT","editModeIndex","iDItem","docLabelConfig","currLabel","doc","modifyDocConfig","focus","modifyConfig","moduleDesc","fDesc","desc","isAdditionaDoc","isLabelValidation","requiredIds","isLabelValid","every","isAdditionaIdSelectionScreen","focusedDoc","backButton","documentReady","idvEventEmitter","useEventHandler","dispatch","prepScreen","setPrepScreen","handlePrepScreen","showPreps","handleSubmit","document","eventCategory","extraEventInfo","eventType","getIdSelectionLabel","firstPage","REVIEW","formScreens","handleBack","idSelectionPage","welcomePage","isLoading","labelClass","descriptionClass","progressWrapperClass","renderDescription","idx","progressItem","IconMapper","SUCCESS","FAIL","PENDING","PARTIAL","UPLOAD_SUCCESS","UPLOAD_FAIL","progressWrapper","loading","FileUploader","Main","rules","onFileSelect","inputRef","useRef","error","setError","maxSizeValue","max_size","maxSizeErrorMessage","mimeValue","mime","mimeErrorMessage","supportedMime","format","handleFileSelection","file","size","validateMaxSize","validateMime","current","click","onDrop","event","preventDefault","dataTransfer","files","onDragOver","ref","hidden","accept","Preview","onFileRemove","Review","onEdit","Progress","completed","Success","display","justifyContent","Fail","retries","docUploadPage","manualLoading","ValidationRulesForForm","required","message","minLength","maxLength","validateLength","onlyAlphabets","onlyNumbers","alphaNumeric","alphaNumericSpaceInWords","alphaNumericSomeSpecialWords","emailPattern","MonthNameLength","CalendarType","LocaleType","fullMonths","commonReviewFieldConfig","fieldType","dataType","hide","pattern","helperText","calendarConfig","Gregorian","locale","English","day","placeholder","month","year","standardDate","configYear","manualFieldConfig","options","addressFields","withoutStateAddress","personalDetailsPage","personal","countries","default","fields","showToggle","toggleConfig","emptyText","cc","phoneNumber","resultInfoMapping","resultPage","useFormMapper","getManualFormFields","region","formFields","getFormConfig","documentConfig","documentFields","personalConfig","personalFields","manualFields","getDefaultImage","info","modifyFormConfig","configField","RegExp","FrankieTextField","forwardRef","inputClassName","counter","errorText","readOnly","tag","badge","closeButton","isSearchIcon","showPassword","closeCta","onBlur","onFocus","onKeyDown","min","max","autoComplete","hideError","inputLength","setInputLength","passwordVisibility","setPasswordVisibility","onInput","currentTarget","intent","singleicon","Input","control","defaultValue","shouldUnregister","textProps","render","field","fieldState","validateResult","validate","getError","errors","replace","useFrankieMenu","parentRef","isOpen","setIsOpen","handleClose","handleOpen","handleToggle","FrankieSelectField","supportingText","autocomplete","clearable","selectLabel","ulClassName","selectedIndex","setSelectedIndex","filterText","setFilterText","selectedValueLabel","filteredOptions","startsWith","handleSelectOption","option","currentIndex","handleKeyDown","prevIndex","newIdx","selectedOption","querySelector","scrollIntoView","behavior","block","role","SelectFormField","selectProps","formState","expiryDate","testingData","defaultDate","_formValues","dateExist","ddDefaultValue","ddField","ddState","mmDefaultValue","mmField","mmState","yyDefaultValue","yyField","yyState","getCurrentDate","now","toISODate","dd","mm","yy","validDateRage","maxDateRange","fromISO","minus","years","age","minDateRange","maxValidYear","minValidYear","validMonth","validDay","calculateValidDateRange","calenderType","localeType","monthNameLength","SHORT","months","totalMonths","Islamic","IslamicUmalqura","Date","monthName","Intl","DateTimeFormat","calendar","formatToParts","part","toLocaleLowerCase","monthGenerator","LONG","inputDate","getDate","hasValidDate","toMillis","computedDate","getErrorInfo","errorInfo","errorMessage","deps","maxDays","calendarType","isNaN","lastDayOfMonth","formattedDate","parseInt","getMaxDaysInMonth","maxYear","getFullYear","currentValue","optionsMapper","textWrapper","onActionChange","formConfig","select","formField","ADDRESS_INFO_ENUM","GoogleSearchAddress","Address","constructor","result","super","addressComponents","address_components","getAddressComponent","shortNamesList","COUNTRY","ADMINISTRATIVE_AREA_LEVEL_1","component","c","types","this","longForm","formatted_address","fullAddress","buildingName","PREMISE","STREET_NUMBER","suburb","SUBLOCALITY_LEVEL_1","LOCALITY","POSTAL_CODE","_streetName","ROUTE","STREET_ADDRESS","SUB_PREMISE","useAddressSearch","googleApiKey","useContext","EventContext","placesInfo","Promise","resolve","reject","geocoder","google","maps","Geocoder","addressPromises","place","geocodeRequest","placeId","promise","geocode","results","status","GeocoderStatus","OK","googleSearchData","Error","all","then","addresses","catch","getAddressList","text","setAddressOptions","debounce","source","scripts","getElementsByTagName","getAttribute","isScriptAlreadyIncluded","loadAsyncAsset","addressList","placeServiceRequest","componentRestrictions","places","AutocompleteService","getPlacePredictions","predictions","PlacesServiceStatus","place_id","FrankieLoader","iconInputClass","loadingText","FrankieTextArea","actionBtn","autoSuggestion","autoSuggestShowAfter","actionLabel","textAreaRef","handleClear","handleClick","scrollHeight","maxHeight","overflowY","autoResize","TextAreaSuggestion","textarea","assign","isAutoSuggestChange","TextArea","isManual","acceptedCountries","restProps","addressOptions","setLoading","finally","searchedAddress","isOverrideCountry","manual","setIsManual","address","isAddedByCustomer","setFullAddress","controlPrefixName","fullAddr","streetInfo","onChangeAction","address1","formFieldName","addressObj","val","preloadDefaultValue","FrankiePhoneField","countryCodeField","countryCodeState","phoneNumberField","phoneNumberState","number","currentCode","currentNumber","form","individualConfig","formFieldsType","previewImage","formFieldImage","setFormFieldImage","isExpiryDateField","setIsExpiryDateField","documentInfo","personalIdv","newManualFieldConfig","mField","getGenericImage","handleFocus","handleBlur","idSTData","getValues","op","handleSelectChange","selected","getActionField","phone","formWrapper","excludeFields","AddressInfo","ReviewModelRecords","sortedData","ocrResult","runDate","extraData","ocr_process_run_date","dateA","dateB","getTime","records","ReviewDocument","Document","dob","dateOfBirth","idExpiry","dateOfExpiry","givenName","firstName","middleName","familyName","lastName","yyyy","issuingState","issuingCountry","idNumber","reference","document_number","addrCountry","addressId","addressType","postcode","addressCity","remainingInfo","splittedAddress","Number","fullAddressToStreetInfo","getExpiryDateTime","linkExpiry","isoDateTime","parsedDateTime","manualConsentPage","commonFormFields","licenceNumber","cardNumber","passport","cardColor","medicareCardNumber","positionOnCard","passportCountryField","manualIdSelectionPage","numberOfIDs","NZL","ACT","NSW","NT","QLD","SA","TAS","VIC","WA","IND","getCountryField","isAllCountries","getStateField","getDLDefaultConfig","reviewPage","newAddressField","cName","retryPage","reviewDocumentPage","manualWelcomePage","useConfigFactory","oneSDK","individual","addGlobalRules","docConfig","additionalFields","addFieldsRestrictions","pKey","access","getValue","filteredConfig","pickManualConfig","defaultConfig","newConfig","mergeUniqueArray","objValue","srcValue","Array","isArray","uniqueData","restrictedCountryField","countryField","mergeAndReplaceConfig","currModuleName","manualConfig","hostedBusinessConfig","WELCOME","instance","requestedDocuments","senderName","session","getExtraData","business","requestedDocs","JSON","parse","documentType","sender","expiry","hostedBusinessWelcomePage","CONSENT","hostedBusinessConsentConfig","DOC_UPLOAD","pickHostedBusinessConfig","mergedConfig","needToMergeList","getMergeReview","config1","config2","isDocument","newDoc","newObj","newSrc","mergeRetryConfigWithCache","screen","configValues","mergedConfigData","destination","typeOrder","rearrangeData","getResultInfo","RESULT","useReviewUpdateFactory","getScannedData","fieldIsVisible","updateAddress","getAddress","streetType","addressRefactored","setValue","allAddress","searchedAddr","addOrUpdateAddress","updateNames","namesObj","displayName","namesRefactored","updateModule","documentObj","idSubType","docsRefactored","documentId","updateDocument","getUpdatedGlobalConfig","useManualConfigFactory","getFormFields","configName","getConditionalScreeen","checkAdditionalId","isRetry","idExist","notPersonal","getReplacedDocId","nonDocTypes","filterIds","focusedId","at","docKey","historyLen","currentPage","updateManualIndividualModule","fieldName","getIndividualData","getObjWithCountry","iDocument","currentDoc","updatedDocuments","replaceId","translated","findAddress","addrType","addrs","getPhoneNumber","email","getEmail","saveConfig","extraFields","res","idConfig","touchedFields","IdDetails","parentConfig","setParentConfig","idFormDefaultValues","idvData","countryExists","idForm","defaultValues","watch","reset","clearErrors","path","trigger","onSubmitForm","currentConfig","manualBackButton","getIdDetailLabel","PersonalDetailsDocument","prevAddress","setPrevAddress","getDefautlValues","middleNameShowToggle","longFormAddress","setPhoneNumber","setEmail","updateForm","scannedData","usePersonalDetailsUpdateFactory","willToEmitEvent","prevAddressFormFields","updateFormModule","individualData","handleFormSubmit","NAME","isRetryFlow","getAddressLabel","items","detailWrapper","detailLabel","detailSubText","reviewDocumentInformationList","details","detail","dIndex","subText","LOADING","styleMapping","ResultStates","resultReady","setReady","reviewData","setReviewData","resultStatus","setResultStatus","idSelectionConfig","setIdSelectionConfig","reviewDataList","individualDocument","prefixText","toTitleCase","dItem","handleEdit","selectedItem","isPersonalDetails","resetReduxData","IdDetailsScreen","verify","submit","search","hasAlert","alert","term","nameIssue","idIssue","isDuplicate","isBlacklist","hadTooManyTries","addFailedState","manualComponents","setCurrentConfig","element","eventContext","allConsent","consent","addConsent","CurrentComp","handlePersonalSubmit","loadNewScreen","PersonalComponent","handleIDBack","IdDetailsComponents","getReviewOrPersonal","isEditableMode","modifiedConfig","IdSelectionComponent","visibility","isBackVisible","viewIndex","setViewIndex","fileBucket","setFileBucket","isEditing","setIsEditing","progress","setProgress","uploaded","setUploaded","hasFailed","setHasFailed","hasSuccess","setHasSuccess","retires","setRetires","handleFileSelect","updated","handleFileRemove","on","updateProgress","upload","handleForward","handleBackward","round","pagesConfig","isSameReduxModule","pageConfigSlice","PAGE_CONFIG","addPageConfig","removeCurrentModule","getEventConfig","eventConfig","excludeTypes","inputInfo","eventName","createContext","eventHub","localEventHub","emit","documentLoaded","documentResultReady","ActiveComponent","eventExcludeIn","loaderSlice","LOADER","startLoading","stopLoading","store","reducer","Provider","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","formStyle","textAlign","background","overflow","cleanupEvents","CONTAINER_CLASSLIST","initialise","shared","mountElement","oneSdkInstance","recipe","provider","PUBLIC_GOOGLE_MAP_API","currentScreenEvent","fontName","url","fontUrl","downloadFont","classList","add","wrappingMode","styledMountElement","_wrapperElement","_windowContainer","attachShadow","attachDiv","reactRoot","cleanUpInstance","innerHTML","unmount","cleanup","from","querySelectorAll","link","href","attachStyles","internalMountElement","createElement","appendChild","fontFamily","elementsToStyle","existingStyle","updatedStyle","setAttribute","window","shadowRoot"],"sourceRoot":""}