react-native-timacare 3.3.55 → 3.3.57-cccd

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 (612) hide show
  1. package/lib/commonjs/AppStore.js +1 -1
  2. package/lib/commonjs/AppStore.js.flow +7 -2
  3. package/lib/commonjs/AppStore.js.map +1 -1
  4. package/lib/commonjs/RNTimacare.js +1 -1
  5. package/lib/commonjs/RNTimacare.js.flow +7 -1
  6. package/lib/commonjs/RNTimacare.js.map +1 -1
  7. package/lib/commonjs/assets/icons/index.js +1 -1
  8. package/lib/commonjs/assets/icons/index.js.flow +10 -0
  9. package/lib/commonjs/assets/icons/index.js.map +1 -1
  10. package/lib/commonjs/assets/icons/modal_confirm.svg +15 -0
  11. package/lib/commonjs/assets/icons/modal_notice.svg +74 -0
  12. package/lib/commonjs/assets/icons/modal_success.svg +55 -0
  13. package/lib/commonjs/assets/icons/modal_warning.svg +48 -0
  14. package/lib/commonjs/assets/icons/user_security.svg +10 -0
  15. package/lib/commonjs/assets/tts/Frame1000011947.png +0 -0
  16. package/lib/commonjs/components/AppModal.js +2 -0
  17. package/lib/commonjs/components/AppModal.js.flow +34 -0
  18. package/lib/commonjs/components/AppModal.js.map +1 -0
  19. package/lib/commonjs/components/ItemTimaOne.js +2 -0
  20. package/lib/commonjs/components/{ItemTimaOneV3.js.flow → ItemTimaOne.js.flow} +1 -1
  21. package/lib/commonjs/components/ItemTimaOne.js.map +1 -0
  22. package/lib/commonjs/components/ModalNotification/AlertGlobal.js +2 -0
  23. package/lib/commonjs/components/ModalNotification/AlertGlobal.js.flow +100 -0
  24. package/lib/commonjs/components/ModalNotification/AlertGlobal.js.map +1 -0
  25. package/lib/commonjs/components/ModalNotification/index.js +2 -0
  26. package/lib/commonjs/components/ModalNotification/index.js.flow +224 -0
  27. package/lib/commonjs/components/ModalNotification/index.js.map +1 -0
  28. package/lib/commonjs/components/ModalOptionLoan.js +1 -1
  29. package/lib/commonjs/components/ModalOptionLoan.js.flow +15 -7
  30. package/lib/commonjs/components/ModalOptionLoan.js.map +1 -1
  31. package/lib/commonjs/components/ModalOptionLoanDigital.js +1 -1
  32. package/lib/commonjs/components/ModalOptionLoanDigital.js.flow +15 -7
  33. package/lib/commonjs/components/ModalOptionLoanDigital.js.map +1 -1
  34. package/lib/commonjs/navigation/primary-navigator.js +1 -1
  35. package/lib/commonjs/navigation/primary-navigator.js.flow +7 -0
  36. package/lib/commonjs/navigation/primary-navigator.js.map +1 -1
  37. package/lib/commonjs/screens/NFC/OcrStart.js +2 -0
  38. package/lib/commonjs/screens/NFC/OcrStart.js.flow +171 -0
  39. package/lib/commonjs/screens/NFC/OcrStart.js.map +1 -0
  40. package/lib/commonjs/screens/NFC/ScanMRZ.js +2 -0
  41. package/lib/commonjs/screens/NFC/ScanMRZ.js.flow +563 -0
  42. package/lib/commonjs/screens/NFC/ScanMRZ.js.map +1 -0
  43. package/lib/commonjs/screens/SelectorStore.js +1 -1
  44. package/lib/commonjs/screens/SelectorStore.js.flow +7 -2
  45. package/lib/commonjs/screens/SelectorStore.js.map +1 -1
  46. package/lib/commonjs/screens/camera/CCCDCameraScreen.js +1 -1
  47. package/lib/commonjs/screens/camera/CCCDCameraScreen.js.flow +253 -187
  48. package/lib/commonjs/screens/camera/CCCDCameraScreen.js.map +1 -1
  49. package/lib/commonjs/screens/camera/index.js +1 -1
  50. package/lib/commonjs/screens/camera/index.js.flow +50 -54
  51. package/lib/commonjs/screens/camera/index.js.map +1 -1
  52. package/lib/commonjs/screens/cimb-sign/index.js +1 -1
  53. package/lib/commonjs/screens/cimb-sign/index.js.flow +10 -14
  54. package/lib/commonjs/screens/cimb-sign/index.js.map +1 -1
  55. package/lib/commonjs/screens/detail-loan/PaymentInfo.js +1 -1
  56. package/lib/commonjs/screens/detail-loan/PaymentInfo.js.flow +75 -54
  57. package/lib/commonjs/screens/detail-loan/PaymentInfo.js.map +1 -1
  58. package/lib/commonjs/screens/detail-loan/ShowQrCode.js +1 -1
  59. package/lib/commonjs/screens/detail-loan/ShowQrCode.js.flow +77 -54
  60. package/lib/commonjs/screens/detail-loan/ShowQrCode.js.map +1 -1
  61. package/lib/commonjs/screens/detail-loan/store.js +1 -1
  62. package/lib/commonjs/screens/detail-loan/store.js.flow +39 -7
  63. package/lib/commonjs/screens/detail-loan/store.js.map +1 -1
  64. package/lib/commonjs/screens/detail-loan-tima/InforLoan.js +1 -1
  65. package/lib/commonjs/screens/detail-loan-tima/InforLoan.js.flow +20 -4
  66. package/lib/commonjs/screens/detail-loan-tima/InforLoan.js.map +1 -1
  67. package/lib/commonjs/screens/detail-loan-tima/PaymentSchedule.js +1 -1
  68. package/lib/commonjs/screens/detail-loan-tima/PaymentSchedule.js.flow +19 -4
  69. package/lib/commonjs/screens/detail-loan-tima/PaymentSchedule.js.map +1 -1
  70. package/lib/commonjs/screens/digital-lending/Step6.js +1 -1
  71. package/lib/commonjs/screens/digital-lending/Step6.js.flow +24 -29
  72. package/lib/commonjs/screens/digital-lending/Step6.js.map +1 -1
  73. package/lib/commonjs/screens/digital-lending/store.js +1 -1
  74. package/lib/commonjs/screens/digital-lending/store.js.flow +113 -20
  75. package/lib/commonjs/screens/digital-lending/store.js.map +1 -1
  76. package/lib/commonjs/screens/eSign/Store.js +1 -1
  77. package/lib/commonjs/screens/eSign/Store.js.flow +69 -34
  78. package/lib/commonjs/screens/eSign/Store.js.map +1 -1
  79. package/lib/commonjs/screens/eSign/index.js +1 -1
  80. package/lib/commonjs/screens/eSign/index.js.flow +33 -34
  81. package/lib/commonjs/screens/eSign/index.js.map +1 -1
  82. package/lib/commonjs/screens/full-submit/accept_policy.js +1 -1
  83. package/lib/commonjs/screens/full-submit/accept_policy.js.flow +101 -85
  84. package/lib/commonjs/screens/full-submit/accept_policy.js.map +1 -1
  85. package/lib/commonjs/screens/full-submit/store.js +1 -1
  86. package/lib/commonjs/screens/full-submit/store.js.flow +157 -27
  87. package/lib/commonjs/screens/full-submit/store.js.map +1 -1
  88. package/lib/commonjs/screens/full-submit/update-info.js +1 -1
  89. package/lib/commonjs/screens/full-submit/update-info.js.flow +0 -1
  90. package/lib/commonjs/screens/full-submit/update-info.js.map +1 -1
  91. package/lib/commonjs/screens/home/DigitalTopupItem.js +1 -1
  92. package/lib/commonjs/screens/home/DigitalTopupItem.js.flow +15 -7
  93. package/lib/commonjs/screens/home/DigitalTopupItem.js.map +1 -1
  94. package/lib/commonjs/screens/home/ItemMotoBikeLoan.js +1 -1
  95. package/lib/commonjs/screens/home/ItemMotoBikeLoan.js.flow +16 -7
  96. package/lib/commonjs/screens/home/ItemMotoBikeLoan.js.map +1 -1
  97. package/lib/commonjs/screens/home/Store.js +1 -1
  98. package/lib/commonjs/screens/home/Store.js.flow +44 -23
  99. package/lib/commonjs/screens/home/Store.js.map +1 -1
  100. package/lib/commonjs/screens/home/index.js +1 -1
  101. package/lib/commonjs/screens/home/index.js.flow +306 -298
  102. package/lib/commonjs/screens/home/index.js.map +1 -1
  103. package/lib/commonjs/screens/liveness/LivenessStore.js +1 -1
  104. package/lib/commonjs/screens/liveness/LivenessStore.js.flow +111 -89
  105. package/lib/commonjs/screens/liveness/LivenessStore.js.map +1 -1
  106. package/lib/commonjs/screens/liveness/index.js +1 -1
  107. package/lib/commonjs/screens/liveness/index.js.flow +67 -68
  108. package/lib/commonjs/screens/liveness/index.js.map +1 -1
  109. package/lib/commonjs/screens/liveness-v2/index.js +1 -1
  110. package/lib/commonjs/screens/liveness-v2/index.js.flow +52 -52
  111. package/lib/commonjs/screens/liveness-v2/index.js.map +1 -1
  112. package/lib/commonjs/screens/loan/PreviewSchedulePaymentTopup.js +1 -1
  113. package/lib/commonjs/screens/loan/PreviewSchedulePaymentTopup.js.flow +20 -10
  114. package/lib/commonjs/screens/loan/PreviewSchedulePaymentTopup.js.map +1 -1
  115. package/lib/commonjs/screens/loan/UpdateLoan.js +1 -1
  116. package/lib/commonjs/screens/loan/UpdateLoan.js.flow +56 -23
  117. package/lib/commonjs/screens/loan/UpdateLoan.js.map +1 -1
  118. package/lib/commonjs/screens/motobike/InfoLoanMotobike.js +1 -1
  119. package/lib/commonjs/screens/motobike/InfoLoanMotobike.js.flow +43 -29
  120. package/lib/commonjs/screens/motobike/InfoLoanMotobike.js.map +1 -1
  121. package/lib/commonjs/screens/motobike/PolicyF88.js +1 -1
  122. package/lib/commonjs/screens/motobike/PolicyF88.js.flow +15 -6
  123. package/lib/commonjs/screens/motobike/PolicyF88.js.map +1 -1
  124. package/lib/commonjs/screens/motobike/ReviewLoanMotobike.js +1 -1
  125. package/lib/commonjs/screens/motobike/ReviewLoanMotobike.js.flow +13 -3
  126. package/lib/commonjs/screens/motobike/ReviewLoanMotobike.js.map +1 -1
  127. package/lib/commonjs/screens/mrz-scanner/index.js +1 -1
  128. package/lib/commonjs/screens/mrz-scanner/index.js.flow +56 -55
  129. package/lib/commonjs/screens/mrz-scanner/index.js.map +1 -1
  130. package/lib/commonjs/screens/mrz-scanner/store.js +1 -1
  131. package/lib/commonjs/screens/mrz-scanner/store.js.flow +13 -3
  132. package/lib/commonjs/screens/mrz-scanner/store.js.map +1 -1
  133. package/lib/commonjs/screens/nationalID/Store.js +1 -1
  134. package/lib/commonjs/screens/nationalID/Store.js.flow +50 -29
  135. package/lib/commonjs/screens/nationalID/Store.js.map +1 -1
  136. package/lib/commonjs/screens/nationalID/index.js +1 -1
  137. package/lib/commonjs/screens/nationalID/index.js.flow +123 -219
  138. package/lib/commonjs/screens/nationalID/index.js.map +1 -1
  139. package/lib/commonjs/screens/nationalIDBack/Store.js +1 -1
  140. package/lib/commonjs/screens/nationalIDBack/Store.js.flow +44 -26
  141. package/lib/commonjs/screens/nationalIDBack/Store.js.map +1 -1
  142. package/lib/commonjs/screens/nationalIDBack/index.js +1 -1
  143. package/lib/commonjs/screens/nationalIDBack/index.js.flow +129 -210
  144. package/lib/commonjs/screens/nationalIDBack/index.js.map +1 -1
  145. package/lib/commonjs/screens/notification/ListLoanStore.js +1 -1
  146. package/lib/commonjs/screens/notification/ListLoanStore.js.flow +19 -4
  147. package/lib/commonjs/screens/notification/ListLoanStore.js.map +1 -1
  148. package/lib/commonjs/screens/notification/index.js +1 -1
  149. package/lib/commonjs/screens/notification/index.js.flow +0 -1
  150. package/lib/commonjs/screens/notification/index.js.map +1 -1
  151. package/lib/commonjs/screens/notification/store.js +1 -1
  152. package/lib/commonjs/screens/notification/store.js.flow +7 -2
  153. package/lib/commonjs/screens/notification/store.js.map +1 -1
  154. package/lib/commonjs/screens/personal/index.js +1 -1
  155. package/lib/commonjs/screens/personal/index.js.flow +21 -19
  156. package/lib/commonjs/screens/personal/index.js.map +1 -1
  157. package/lib/commonjs/screens/qualify/Store.js.flow +0 -1
  158. package/lib/commonjs/screens/qualify/Store.js.map +1 -1
  159. package/lib/commonjs/screens/quick-submit/store.js +1 -1
  160. package/lib/commonjs/screens/quick-submit/store.js.flow +85 -15
  161. package/lib/commonjs/screens/quick-submit/store.js.map +1 -1
  162. package/lib/commonjs/screens/schedule-payment/DigitalSchedulePayment.js +1 -1
  163. package/lib/commonjs/screens/schedule-payment/DigitalSchedulePayment.js.flow +20 -4
  164. package/lib/commonjs/screens/schedule-payment/DigitalSchedulePayment.js.map +1 -1
  165. package/lib/commonjs/screens/schedule-payment/store.js +1 -1
  166. package/lib/commonjs/screens/schedule-payment/store.js.flow +13 -5
  167. package/lib/commonjs/screens/schedule-payment/store.js.map +1 -1
  168. package/lib/commonjs/screens/selfie/SelfieStore.js +1 -1
  169. package/lib/commonjs/screens/selfie/SelfieStore.js.flow +25 -9
  170. package/lib/commonjs/screens/selfie/SelfieStore.js.map +1 -1
  171. package/lib/commonjs/screens/selfie/index.js +1 -1
  172. package/lib/commonjs/screens/selfie/index.js.flow +0 -1
  173. package/lib/commonjs/screens/selfie/index.js.map +1 -1
  174. package/lib/commonjs/screens/sign-tima/ViewContract.js +1 -1
  175. package/lib/commonjs/screens/sign-tima/ViewContract.js.flow +17 -18
  176. package/lib/commonjs/screens/sign-tima/ViewContract.js.map +1 -1
  177. package/lib/commonjs/screens/sign-tima/store.js +1 -1
  178. package/lib/commonjs/screens/sign-tima/store.js.flow +37 -7
  179. package/lib/commonjs/screens/sign-tima/store.js.map +1 -1
  180. package/lib/commonjs/screens/toan-trinh-so/LoanInterestRate.js +1 -1
  181. package/lib/commonjs/screens/toan-trinh-so/LoanInterestRate.js.flow +36 -10
  182. package/lib/commonjs/screens/toan-trinh-so/LoanInterestRate.js.map +1 -1
  183. package/lib/commonjs/screens/toan-trinh-so/OCR.js +1 -1
  184. package/lib/commonjs/screens/toan-trinh-so/OCR.js.flow +321 -609
  185. package/lib/commonjs/screens/toan-trinh-so/OCR.js.map +1 -1
  186. package/lib/commonjs/screens/toan-trinh-so/RegisterBack.js +1 -1
  187. package/lib/commonjs/screens/toan-trinh-so/RegisterBack.js.flow +21 -4
  188. package/lib/commonjs/screens/toan-trinh-so/RegisterBack.js.map +1 -1
  189. package/lib/commonjs/screens/toan-trinh-so/RegisterCamera.js +1 -1
  190. package/lib/commonjs/screens/toan-trinh-so/RegisterCamera.js.flow +50 -54
  191. package/lib/commonjs/screens/toan-trinh-so/RegisterCamera.js.map +1 -1
  192. package/lib/commonjs/screens/toan-trinh-so/ReviewInformation.js +1 -1
  193. package/lib/commonjs/screens/toan-trinh-so/ReviewInformation.js.flow +31 -25
  194. package/lib/commonjs/screens/toan-trinh-so/ReviewInformation.js.map +1 -1
  195. package/lib/commonjs/screens/toan-trinh-so/ReviewInformationOther.js +1 -1
  196. package/lib/commonjs/screens/toan-trinh-so/ReviewInformationOther.js.flow +88 -82
  197. package/lib/commonjs/screens/toan-trinh-so/ReviewInformationOther.js.map +1 -1
  198. package/lib/commonjs/screens/toan-trinh-so/ReviewLoan.js +1 -1
  199. package/lib/commonjs/screens/toan-trinh-so/ReviewLoan.js.flow +25 -5
  200. package/lib/commonjs/screens/toan-trinh-so/ReviewLoan.js.map +1 -1
  201. package/lib/commonjs/screens/toan-trinh-so/TTSNationalIDBack.js +1 -1
  202. package/lib/commonjs/screens/toan-trinh-so/TTSNationalIDBack.js.flow +19 -4
  203. package/lib/commonjs/screens/toan-trinh-so/TTSNationalIDBack.js.map +1 -1
  204. package/lib/commonjs/screens/toan-trinh-so/TTSNationalIDFront.js +1 -1
  205. package/lib/commonjs/screens/toan-trinh-so/TTSNationalIDFront.js.flow +19 -4
  206. package/lib/commonjs/screens/toan-trinh-so/TTSNationalIDFront.js.map +1 -1
  207. package/lib/commonjs/screens/toan-trinh-so/TTSOTP.js +1 -1
  208. package/lib/commonjs/screens/toan-trinh-so/TTSOTP.js.flow +42 -25
  209. package/lib/commonjs/screens/toan-trinh-so/TTSOTP.js.map +1 -1
  210. package/lib/commonjs/screens/toan-trinh-so/TTSSelfie.js +1 -1
  211. package/lib/commonjs/screens/toan-trinh-so/TTSSelfie.js.flow +63 -56
  212. package/lib/commonjs/screens/toan-trinh-so/TTSSelfie.js.map +1 -1
  213. package/lib/commonjs/screens/toan-trinh-so/TTSSignLoan.js +1 -1
  214. package/lib/commonjs/screens/toan-trinh-so/TTSSignLoan.js.flow +63 -55
  215. package/lib/commonjs/screens/toan-trinh-so/TTSSignLoan.js.map +1 -1
  216. package/lib/commonjs/screens/toan-trinh-so/TopupLoanInfo.js +1 -1
  217. package/lib/commonjs/screens/toan-trinh-so/TopupLoanInfo.js.flow +50 -43
  218. package/lib/commonjs/screens/toan-trinh-so/TopupLoanInfo.js.map +1 -1
  219. package/lib/commonjs/screens/toan-trinh-so/VehicleCamera.js +1 -1
  220. package/lib/commonjs/screens/toan-trinh-so/VehicleCamera.js.flow +275 -341
  221. package/lib/commonjs/screens/toan-trinh-so/VehicleCamera.js.map +1 -1
  222. package/lib/commonjs/screens/toan-trinh-so/VehicleRegistration.js +1 -1
  223. package/lib/commonjs/screens/toan-trinh-so/VehicleRegistration.js.flow +19 -4
  224. package/lib/commonjs/screens/toan-trinh-so/VehicleRegistration.js.map +1 -1
  225. package/lib/commonjs/screens/toan-trinh-so/VehicleRegistrationBack.js +1 -1
  226. package/lib/commonjs/screens/toan-trinh-so/VehicleRegistrationBack.js.flow +19 -4
  227. package/lib/commonjs/screens/toan-trinh-so/VehicleRegistrationBack.js.map +1 -1
  228. package/lib/commonjs/screens/toan-trinh-so/VehicleRegistrationFront.js +1 -1
  229. package/lib/commonjs/screens/toan-trinh-so/VehicleRegistrationFront.js.flow +19 -4
  230. package/lib/commonjs/screens/toan-trinh-so/VehicleRegistrationFront.js.map +1 -1
  231. package/lib/commonjs/screens/toan-trinh-so/store.js +1 -1
  232. package/lib/commonjs/screens/toan-trinh-so/store.js.flow +82 -37
  233. package/lib/commonjs/screens/toan-trinh-so/store.js.map +1 -1
  234. package/lib/commonjs/screens/uploadVideo/index.js +1 -1
  235. package/lib/commonjs/screens/uploadVideo/index.js.flow +26 -21
  236. package/lib/commonjs/screens/uploadVideo/index.js.map +1 -1
  237. package/lib/commonjs/screens/uploadVideo/videoStore.js +1 -1
  238. package/lib/commonjs/screens/uploadVideo/videoStore.js.flow +19 -4
  239. package/lib/commonjs/screens/uploadVideo/videoStore.js.map +1 -1
  240. package/lib/commonjs/screens/v3/AssetInformation.js +1 -1
  241. package/lib/commonjs/screens/v3/AssetInformation.js.flow +35 -16
  242. package/lib/commonjs/screens/v3/AssetInformation.js.map +1 -1
  243. package/lib/commonjs/screens/v3/LoanBuyCar.js +1 -1
  244. package/lib/commonjs/screens/v3/LoanBuyCar.js.flow +35 -16
  245. package/lib/commonjs/screens/v3/LoanBuyCar.js.map +1 -1
  246. package/lib/commonjs/services/api/api.js +1 -1
  247. package/lib/commonjs/services/api/api.js.flow +23 -26
  248. package/lib/commonjs/services/api/api.js.map +1 -1
  249. package/lib/commonjs/utils/cameraCrop.js +2 -0
  250. package/lib/commonjs/utils/cameraCrop.js.flow +96 -0
  251. package/lib/commonjs/utils/cameraCrop.js.map +1 -0
  252. package/lib/module/AppStore.js +1 -1
  253. package/lib/module/AppStore.js.map +1 -1
  254. package/lib/module/RNTimacare.js +1 -1
  255. package/lib/module/RNTimacare.js.map +1 -1
  256. package/lib/module/assets/icons/index.js +1 -1
  257. package/lib/module/assets/icons/index.js.map +1 -1
  258. package/lib/module/assets/icons/modal_confirm.svg +15 -0
  259. package/lib/module/assets/icons/modal_notice.svg +74 -0
  260. package/lib/module/assets/icons/modal_success.svg +55 -0
  261. package/lib/module/assets/icons/modal_warning.svg +48 -0
  262. package/lib/module/assets/icons/user_security.svg +10 -0
  263. package/lib/module/assets/tts/Frame1000011947.png +0 -0
  264. package/lib/module/components/AppModal.js +2 -0
  265. package/lib/module/components/AppModal.js.map +1 -0
  266. package/lib/module/components/ItemTimaOne.js +2 -0
  267. package/lib/module/components/ItemTimaOne.js.map +1 -0
  268. package/lib/module/components/ModalNotification/AlertGlobal.js +2 -0
  269. package/lib/module/components/ModalNotification/AlertGlobal.js.map +1 -0
  270. package/lib/module/components/ModalNotification/index.js +2 -0
  271. package/lib/module/components/ModalNotification/index.js.map +1 -0
  272. package/lib/module/components/ModalOptionLoan.js +1 -1
  273. package/lib/module/components/ModalOptionLoan.js.map +1 -1
  274. package/lib/module/components/ModalOptionLoanDigital.js +1 -1
  275. package/lib/module/components/ModalOptionLoanDigital.js.map +1 -1
  276. package/lib/module/navigation/primary-navigator.js +1 -1
  277. package/lib/module/navigation/primary-navigator.js.map +1 -1
  278. package/lib/module/screens/NFC/OcrStart.js +2 -0
  279. package/lib/module/screens/NFC/OcrStart.js.map +1 -0
  280. package/lib/module/screens/NFC/ScanMRZ.js +2 -0
  281. package/lib/module/screens/NFC/ScanMRZ.js.map +1 -0
  282. package/lib/module/screens/SelectorStore.js +1 -1
  283. package/lib/module/screens/SelectorStore.js.map +1 -1
  284. package/lib/module/screens/camera/CCCDCameraScreen.js +1 -1
  285. package/lib/module/screens/camera/CCCDCameraScreen.js.map +1 -1
  286. package/lib/module/screens/camera/index.js +1 -1
  287. package/lib/module/screens/camera/index.js.map +1 -1
  288. package/lib/module/screens/cimb-sign/index.js +1 -1
  289. package/lib/module/screens/cimb-sign/index.js.map +1 -1
  290. package/lib/module/screens/detail-loan/PaymentInfo.js +1 -1
  291. package/lib/module/screens/detail-loan/PaymentInfo.js.map +1 -1
  292. package/lib/module/screens/detail-loan/ShowQrCode.js +1 -1
  293. package/lib/module/screens/detail-loan/ShowQrCode.js.map +1 -1
  294. package/lib/module/screens/detail-loan/store.js +1 -1
  295. package/lib/module/screens/detail-loan/store.js.map +1 -1
  296. package/lib/module/screens/detail-loan-tima/InforLoan.js +1 -1
  297. package/lib/module/screens/detail-loan-tima/InforLoan.js.map +1 -1
  298. package/lib/module/screens/detail-loan-tima/PaymentSchedule.js +1 -1
  299. package/lib/module/screens/detail-loan-tima/PaymentSchedule.js.map +1 -1
  300. package/lib/module/screens/digital-lending/Step6.js +1 -1
  301. package/lib/module/screens/digital-lending/Step6.js.map +1 -1
  302. package/lib/module/screens/digital-lending/store.js +1 -1
  303. package/lib/module/screens/digital-lending/store.js.map +1 -1
  304. package/lib/module/screens/eSign/Store.js +1 -1
  305. package/lib/module/screens/eSign/Store.js.map +1 -1
  306. package/lib/module/screens/eSign/index.js +1 -1
  307. package/lib/module/screens/eSign/index.js.map +1 -1
  308. package/lib/module/screens/full-submit/accept_policy.js +1 -1
  309. package/lib/module/screens/full-submit/accept_policy.js.map +1 -1
  310. package/lib/module/screens/full-submit/store.js +1 -1
  311. package/lib/module/screens/full-submit/store.js.map +1 -1
  312. package/lib/module/screens/full-submit/update-info.js +1 -1
  313. package/lib/module/screens/full-submit/update-info.js.map +1 -1
  314. package/lib/module/screens/home/DigitalTopupItem.js +1 -1
  315. package/lib/module/screens/home/DigitalTopupItem.js.map +1 -1
  316. package/lib/module/screens/home/ItemMotoBikeLoan.js +1 -1
  317. package/lib/module/screens/home/ItemMotoBikeLoan.js.map +1 -1
  318. package/lib/module/screens/home/Store.js +1 -1
  319. package/lib/module/screens/home/Store.js.map +1 -1
  320. package/lib/module/screens/home/index.js +1 -1
  321. package/lib/module/screens/home/index.js.map +1 -1
  322. package/lib/module/screens/liveness/LivenessStore.js +1 -1
  323. package/lib/module/screens/liveness/LivenessStore.js.map +1 -1
  324. package/lib/module/screens/liveness/index.js +1 -1
  325. package/lib/module/screens/liveness/index.js.map +1 -1
  326. package/lib/module/screens/liveness-v2/index.js +1 -1
  327. package/lib/module/screens/liveness-v2/index.js.map +1 -1
  328. package/lib/module/screens/loan/PreviewSchedulePaymentTopup.js +1 -1
  329. package/lib/module/screens/loan/PreviewSchedulePaymentTopup.js.map +1 -1
  330. package/lib/module/screens/loan/UpdateLoan.js +1 -1
  331. package/lib/module/screens/loan/UpdateLoan.js.map +1 -1
  332. package/lib/module/screens/motobike/InfoLoanMotobike.js +1 -1
  333. package/lib/module/screens/motobike/InfoLoanMotobike.js.map +1 -1
  334. package/lib/module/screens/motobike/PolicyF88.js +1 -1
  335. package/lib/module/screens/motobike/PolicyF88.js.map +1 -1
  336. package/lib/module/screens/motobike/ReviewLoanMotobike.js +1 -1
  337. package/lib/module/screens/motobike/ReviewLoanMotobike.js.map +1 -1
  338. package/lib/module/screens/mrz-scanner/index.js +1 -1
  339. package/lib/module/screens/mrz-scanner/index.js.map +1 -1
  340. package/lib/module/screens/mrz-scanner/store.js +1 -1
  341. package/lib/module/screens/mrz-scanner/store.js.map +1 -1
  342. package/lib/module/screens/nationalID/Store.js +1 -1
  343. package/lib/module/screens/nationalID/Store.js.map +1 -1
  344. package/lib/module/screens/nationalID/index.js +1 -1
  345. package/lib/module/screens/nationalID/index.js.map +1 -1
  346. package/lib/module/screens/nationalIDBack/Store.js +1 -1
  347. package/lib/module/screens/nationalIDBack/Store.js.map +1 -1
  348. package/lib/module/screens/nationalIDBack/index.js +1 -1
  349. package/lib/module/screens/nationalIDBack/index.js.map +1 -1
  350. package/lib/module/screens/notification/ListLoanStore.js +1 -1
  351. package/lib/module/screens/notification/ListLoanStore.js.map +1 -1
  352. package/lib/module/screens/notification/index.js +1 -1
  353. package/lib/module/screens/notification/index.js.map +1 -1
  354. package/lib/module/screens/notification/store.js +1 -1
  355. package/lib/module/screens/notification/store.js.map +1 -1
  356. package/lib/module/screens/personal/index.js +1 -1
  357. package/lib/module/screens/personal/index.js.map +1 -1
  358. package/lib/module/screens/qualify/Store.js.map +1 -1
  359. package/lib/module/screens/quick-submit/store.js +1 -1
  360. package/lib/module/screens/quick-submit/store.js.map +1 -1
  361. package/lib/module/screens/schedule-payment/DigitalSchedulePayment.js +1 -1
  362. package/lib/module/screens/schedule-payment/DigitalSchedulePayment.js.map +1 -1
  363. package/lib/module/screens/schedule-payment/store.js +1 -1
  364. package/lib/module/screens/schedule-payment/store.js.map +1 -1
  365. package/lib/module/screens/selfie/SelfieStore.js +1 -1
  366. package/lib/module/screens/selfie/SelfieStore.js.map +1 -1
  367. package/lib/module/screens/selfie/index.js +1 -1
  368. package/lib/module/screens/selfie/index.js.map +1 -1
  369. package/lib/module/screens/sign-tima/ViewContract.js +1 -1
  370. package/lib/module/screens/sign-tima/ViewContract.js.map +1 -1
  371. package/lib/module/screens/sign-tima/store.js +1 -1
  372. package/lib/module/screens/sign-tima/store.js.map +1 -1
  373. package/lib/module/screens/toan-trinh-so/LoanInterestRate.js +1 -1
  374. package/lib/module/screens/toan-trinh-so/LoanInterestRate.js.map +1 -1
  375. package/lib/module/screens/toan-trinh-so/OCR.js +1 -1
  376. package/lib/module/screens/toan-trinh-so/OCR.js.map +1 -1
  377. package/lib/module/screens/toan-trinh-so/RegisterBack.js +1 -1
  378. package/lib/module/screens/toan-trinh-so/RegisterBack.js.map +1 -1
  379. package/lib/module/screens/toan-trinh-so/RegisterCamera.js +1 -1
  380. package/lib/module/screens/toan-trinh-so/RegisterCamera.js.map +1 -1
  381. package/lib/module/screens/toan-trinh-so/ReviewInformation.js +1 -1
  382. package/lib/module/screens/toan-trinh-so/ReviewInformation.js.map +1 -1
  383. package/lib/module/screens/toan-trinh-so/ReviewInformationOther.js +1 -1
  384. package/lib/module/screens/toan-trinh-so/ReviewInformationOther.js.map +1 -1
  385. package/lib/module/screens/toan-trinh-so/ReviewLoan.js +1 -1
  386. package/lib/module/screens/toan-trinh-so/ReviewLoan.js.map +1 -1
  387. package/lib/module/screens/toan-trinh-so/TTSNationalIDBack.js +1 -1
  388. package/lib/module/screens/toan-trinh-so/TTSNationalIDBack.js.map +1 -1
  389. package/lib/module/screens/toan-trinh-so/TTSNationalIDFront.js +1 -1
  390. package/lib/module/screens/toan-trinh-so/TTSNationalIDFront.js.map +1 -1
  391. package/lib/module/screens/toan-trinh-so/TTSOTP.js +1 -1
  392. package/lib/module/screens/toan-trinh-so/TTSOTP.js.map +1 -1
  393. package/lib/module/screens/toan-trinh-so/TTSSelfie.js +1 -1
  394. package/lib/module/screens/toan-trinh-so/TTSSelfie.js.map +1 -1
  395. package/lib/module/screens/toan-trinh-so/TTSSignLoan.js +1 -1
  396. package/lib/module/screens/toan-trinh-so/TTSSignLoan.js.map +1 -1
  397. package/lib/module/screens/toan-trinh-so/TopupLoanInfo.js +1 -1
  398. package/lib/module/screens/toan-trinh-so/TopupLoanInfo.js.map +1 -1
  399. package/lib/module/screens/toan-trinh-so/VehicleCamera.js +1 -1
  400. package/lib/module/screens/toan-trinh-so/VehicleCamera.js.map +1 -1
  401. package/lib/module/screens/toan-trinh-so/VehicleRegistration.js +1 -1
  402. package/lib/module/screens/toan-trinh-so/VehicleRegistration.js.map +1 -1
  403. package/lib/module/screens/toan-trinh-so/VehicleRegistrationBack.js +1 -1
  404. package/lib/module/screens/toan-trinh-so/VehicleRegistrationBack.js.map +1 -1
  405. package/lib/module/screens/toan-trinh-so/VehicleRegistrationFront.js +1 -1
  406. package/lib/module/screens/toan-trinh-so/VehicleRegistrationFront.js.map +1 -1
  407. package/lib/module/screens/toan-trinh-so/store.js +1 -1
  408. package/lib/module/screens/toan-trinh-so/store.js.map +1 -1
  409. package/lib/module/screens/uploadVideo/index.js +1 -1
  410. package/lib/module/screens/uploadVideo/index.js.map +1 -1
  411. package/lib/module/screens/uploadVideo/videoStore.js +1 -1
  412. package/lib/module/screens/uploadVideo/videoStore.js.map +1 -1
  413. package/lib/module/screens/v3/AssetInformation.js +1 -1
  414. package/lib/module/screens/v3/AssetInformation.js.map +1 -1
  415. package/lib/module/screens/v3/LoanBuyCar.js +1 -1
  416. package/lib/module/screens/v3/LoanBuyCar.js.map +1 -1
  417. package/lib/module/services/api/api.js +1 -1
  418. package/lib/module/services/api/api.js.map +1 -1
  419. package/lib/module/utils/cameraCrop.js +2 -0
  420. package/lib/module/utils/cameraCrop.js.map +1 -0
  421. package/lib/typescript/AppStore.d.ts.map +1 -1
  422. package/lib/typescript/RNTimacare.d.ts.map +1 -1
  423. package/lib/typescript/assets/icons/index.d.ts +6 -1
  424. package/lib/typescript/assets/icons/index.d.ts.map +1 -1
  425. package/lib/typescript/components/AppModal.d.ts +18 -0
  426. package/lib/typescript/components/AppModal.d.ts.map +1 -0
  427. package/lib/typescript/components/ItemTimaOne.d.ts +7 -0
  428. package/lib/typescript/components/ItemTimaOne.d.ts.map +1 -0
  429. package/lib/typescript/components/ModalNotification/AlertGlobal.d.ts +30 -0
  430. package/lib/typescript/components/ModalNotification/AlertGlobal.d.ts.map +1 -0
  431. package/lib/typescript/components/ModalNotification/index.d.ts +35 -0
  432. package/lib/typescript/components/ModalNotification/index.d.ts.map +1 -0
  433. package/lib/typescript/components/ModalOptionLoan.d.ts.map +1 -1
  434. package/lib/typescript/components/ModalOptionLoanDigital.d.ts.map +1 -1
  435. package/lib/typescript/navigation/primary-navigator.d.ts +3 -0
  436. package/lib/typescript/navigation/primary-navigator.d.ts.map +1 -1
  437. package/lib/typescript/screens/NFC/OcrStart.d.ts +2 -0
  438. package/lib/typescript/screens/NFC/OcrStart.d.ts.map +1 -0
  439. package/lib/typescript/screens/NFC/ScanMRZ.d.ts +15 -0
  440. package/lib/typescript/screens/NFC/ScanMRZ.d.ts.map +1 -0
  441. package/lib/typescript/screens/SelectorStore.d.ts.map +1 -1
  442. package/lib/typescript/screens/camera/CCCDCameraScreen.d.ts.map +1 -1
  443. package/lib/typescript/screens/camera/index.d.ts.map +1 -1
  444. package/lib/typescript/screens/cimb-sign/index.d.ts.map +1 -1
  445. package/lib/typescript/screens/detail-loan/ShowQrCode.d.ts.map +1 -1
  446. package/lib/typescript/screens/detail-loan/store.d.ts.map +1 -1
  447. package/lib/typescript/screens/detail-loan-tima/InforLoan.d.ts.map +1 -1
  448. package/lib/typescript/screens/detail-loan-tima/PaymentSchedule.d.ts.map +1 -1
  449. package/lib/typescript/screens/digital-lending/Step6.d.ts.map +1 -1
  450. package/lib/typescript/screens/digital-lending/store.d.ts.map +1 -1
  451. package/lib/typescript/screens/eSign/Store.d.ts.map +1 -1
  452. package/lib/typescript/screens/eSign/index.d.ts.map +1 -1
  453. package/lib/typescript/screens/full-submit/accept_policy.d.ts.map +1 -1
  454. package/lib/typescript/screens/full-submit/store.d.ts.map +1 -1
  455. package/lib/typescript/screens/full-submit/update-info.d.ts.map +1 -1
  456. package/lib/typescript/screens/home/DigitalTopupItem.d.ts.map +1 -1
  457. package/lib/typescript/screens/home/ItemMotoBikeLoan.d.ts.map +1 -1
  458. package/lib/typescript/screens/home/Store.d.ts.map +1 -1
  459. package/lib/typescript/screens/home/index.d.ts.map +1 -1
  460. package/lib/typescript/screens/liveness/LivenessStore.d.ts.map +1 -1
  461. package/lib/typescript/screens/liveness/index.d.ts.map +1 -1
  462. package/lib/typescript/screens/loan/PreviewSchedulePaymentTopup.d.ts.map +1 -1
  463. package/lib/typescript/screens/loan/UpdateLoan.d.ts.map +1 -1
  464. package/lib/typescript/screens/motobike/InfoLoanMotobike.d.ts.map +1 -1
  465. package/lib/typescript/screens/motobike/PolicyF88.d.ts.map +1 -1
  466. package/lib/typescript/screens/motobike/ReviewLoanMotobike.d.ts.map +1 -1
  467. package/lib/typescript/screens/mrz-scanner/index.d.ts.map +1 -1
  468. package/lib/typescript/screens/mrz-scanner/store.d.ts.map +1 -1
  469. package/lib/typescript/screens/nationalID/Store.d.ts.map +1 -1
  470. package/lib/typescript/screens/nationalID/index.d.ts.map +1 -1
  471. package/lib/typescript/screens/nationalIDBack/Store.d.ts.map +1 -1
  472. package/lib/typescript/screens/nationalIDBack/index.d.ts.map +1 -1
  473. package/lib/typescript/screens/notification/ListLoanStore.d.ts.map +1 -1
  474. package/lib/typescript/screens/notification/index.d.ts.map +1 -1
  475. package/lib/typescript/screens/notification/store.d.ts.map +1 -1
  476. package/lib/typescript/screens/personal/index.d.ts.map +1 -1
  477. package/lib/typescript/screens/qualify/Store.d.ts.map +1 -1
  478. package/lib/typescript/screens/quick-submit/store.d.ts.map +1 -1
  479. package/lib/typescript/screens/schedule-payment/DigitalSchedulePayment.d.ts.map +1 -1
  480. package/lib/typescript/screens/schedule-payment/store.d.ts.map +1 -1
  481. package/lib/typescript/screens/selfie/SelfieStore.d.ts.map +1 -1
  482. package/lib/typescript/screens/selfie/index.d.ts.map +1 -1
  483. package/lib/typescript/screens/sign-tima/ViewContract.d.ts.map +1 -1
  484. package/lib/typescript/screens/sign-tima/store.d.ts.map +1 -1
  485. package/lib/typescript/screens/toan-trinh-so/LoanInterestRate.d.ts.map +1 -1
  486. package/lib/typescript/screens/toan-trinh-so/OCR.d.ts.map +1 -1
  487. package/lib/typescript/screens/toan-trinh-so/RegisterBack.d.ts.map +1 -1
  488. package/lib/typescript/screens/toan-trinh-so/RegisterCamera.d.ts.map +1 -1
  489. package/lib/typescript/screens/toan-trinh-so/ReviewInformation.d.ts.map +1 -1
  490. package/lib/typescript/screens/toan-trinh-so/ReviewInformationOther.d.ts.map +1 -1
  491. package/lib/typescript/screens/toan-trinh-so/ReviewLoan.d.ts.map +1 -1
  492. package/lib/typescript/screens/toan-trinh-so/TTSNationalIDBack.d.ts.map +1 -1
  493. package/lib/typescript/screens/toan-trinh-so/TTSNationalIDFront.d.ts.map +1 -1
  494. package/lib/typescript/screens/toan-trinh-so/TTSOTP.d.ts.map +1 -1
  495. package/lib/typescript/screens/toan-trinh-so/TTSSelfie.d.ts.map +1 -1
  496. package/lib/typescript/screens/toan-trinh-so/TTSSignLoan.d.ts.map +1 -1
  497. package/lib/typescript/screens/toan-trinh-so/TopupLoanInfo.d.ts.map +1 -1
  498. package/lib/typescript/screens/toan-trinh-so/VehicleCamera.d.ts.map +1 -1
  499. package/lib/typescript/screens/toan-trinh-so/VehicleRegistration.d.ts.map +1 -1
  500. package/lib/typescript/screens/toan-trinh-so/VehicleRegistrationBack.d.ts.map +1 -1
  501. package/lib/typescript/screens/toan-trinh-so/VehicleRegistrationFront.d.ts.map +1 -1
  502. package/lib/typescript/screens/toan-trinh-so/store.d.ts.map +1 -1
  503. package/lib/typescript/screens/uploadVideo/index.d.ts.map +1 -1
  504. package/lib/typescript/screens/uploadVideo/videoStore.d.ts.map +1 -1
  505. package/lib/typescript/screens/v3/AssetInformation.d.ts.map +1 -1
  506. package/lib/typescript/screens/v3/LoanBuyCar.d.ts.map +1 -1
  507. package/lib/typescript/services/api/api.d.ts.map +1 -1
  508. package/lib/typescript/utils/cameraCrop.d.ts +43 -0
  509. package/lib/typescript/utils/cameraCrop.d.ts.map +1 -0
  510. package/package.json +2 -1
  511. package/src/AppStore.tsx +7 -2
  512. package/src/RNTimacare.tsx +7 -1
  513. package/src/assets/icons/index.tsx +10 -0
  514. package/src/assets/icons/modal_confirm.svg +15 -0
  515. package/src/assets/icons/modal_notice.svg +74 -0
  516. package/src/assets/icons/modal_success.svg +55 -0
  517. package/src/assets/icons/modal_warning.svg +48 -0
  518. package/src/assets/icons/user_security.svg +10 -0
  519. package/src/assets/tts/Frame1000011947.png +0 -0
  520. package/src/components/AppModal.tsx +34 -0
  521. package/src/components/{ItemTimaOneV3.tsx → ItemTimaOne.tsx} +1 -1
  522. package/src/components/ModalNotification/AlertGlobal.tsx +100 -0
  523. package/src/components/ModalNotification/index.tsx +224 -0
  524. package/src/components/ModalOptionLoan.tsx +15 -7
  525. package/src/components/ModalOptionLoanDigital.tsx +15 -7
  526. package/src/navigation/primary-navigator.tsx +7 -0
  527. package/src/screens/NFC/OcrStart.tsx +171 -0
  528. package/src/screens/NFC/ScanMRZ.tsx +563 -0
  529. package/src/screens/SelectorStore.tsx +7 -2
  530. package/src/screens/camera/CCCDCameraScreen.tsx +253 -187
  531. package/src/screens/camera/index.tsx +50 -54
  532. package/src/screens/cimb-sign/index.tsx +10 -14
  533. package/src/screens/detail-loan/PaymentInfo.tsx +75 -54
  534. package/src/screens/detail-loan/ShowQrCode.tsx +77 -54
  535. package/src/screens/detail-loan/store.tsx +39 -7
  536. package/src/screens/detail-loan-tima/InforLoan.tsx +20 -4
  537. package/src/screens/detail-loan-tima/PaymentSchedule.tsx +19 -4
  538. package/src/screens/digital-lending/Step6.tsx +24 -29
  539. package/src/screens/digital-lending/store.tsx +113 -20
  540. package/src/screens/eSign/Store.tsx +69 -34
  541. package/src/screens/eSign/index.tsx +33 -34
  542. package/src/screens/full-submit/accept_policy.tsx +101 -85
  543. package/src/screens/full-submit/store.tsx +157 -27
  544. package/src/screens/full-submit/update-info.tsx +0 -1
  545. package/src/screens/home/DigitalTopupItem.tsx +15 -7
  546. package/src/screens/home/ItemMotoBikeLoan.tsx +16 -7
  547. package/src/screens/home/Store.tsx +44 -23
  548. package/src/screens/home/index.tsx +306 -298
  549. package/src/screens/liveness/LivenessStore.tsx +111 -89
  550. package/src/screens/liveness/index.tsx +67 -68
  551. package/src/screens/liveness-v2/index.tsx +52 -52
  552. package/src/screens/loan/PreviewSchedulePaymentTopup.tsx +20 -10
  553. package/src/screens/loan/UpdateLoan.tsx +56 -23
  554. package/src/screens/motobike/InfoLoanMotobike.tsx +43 -29
  555. package/src/screens/motobike/PolicyF88.tsx +15 -6
  556. package/src/screens/motobike/ReviewLoanMotobike.tsx +13 -3
  557. package/src/screens/mrz-scanner/index.tsx +56 -55
  558. package/src/screens/mrz-scanner/store.ts +13 -3
  559. package/src/screens/nationalID/Store.tsx +50 -29
  560. package/src/screens/nationalID/index.tsx +123 -219
  561. package/src/screens/nationalIDBack/Store.tsx +44 -26
  562. package/src/screens/nationalIDBack/index.tsx +129 -210
  563. package/src/screens/notification/ListLoanStore.tsx +19 -4
  564. package/src/screens/notification/index.tsx +0 -1
  565. package/src/screens/notification/store.tsx +7 -2
  566. package/src/screens/personal/index.tsx +21 -19
  567. package/src/screens/qualify/Store.tsx +0 -1
  568. package/src/screens/quick-submit/store.tsx +85 -15
  569. package/src/screens/schedule-payment/DigitalSchedulePayment.tsx +20 -4
  570. package/src/screens/schedule-payment/store.tsx +13 -5
  571. package/src/screens/selfie/SelfieStore.tsx +25 -9
  572. package/src/screens/selfie/index.tsx +0 -1
  573. package/src/screens/sign-tima/ViewContract.tsx +17 -18
  574. package/src/screens/sign-tima/store.tsx +37 -7
  575. package/src/screens/toan-trinh-so/LoanInterestRate.tsx +36 -10
  576. package/src/screens/toan-trinh-so/OCR.tsx +321 -609
  577. package/src/screens/toan-trinh-so/RegisterBack.tsx +21 -4
  578. package/src/screens/toan-trinh-so/RegisterCamera.tsx +50 -54
  579. package/src/screens/toan-trinh-so/ReviewInformation.tsx +31 -25
  580. package/src/screens/toan-trinh-so/ReviewInformationOther.tsx +88 -82
  581. package/src/screens/toan-trinh-so/ReviewLoan.tsx +25 -5
  582. package/src/screens/toan-trinh-so/TTSNationalIDBack.tsx +19 -4
  583. package/src/screens/toan-trinh-so/TTSNationalIDFront.tsx +19 -4
  584. package/src/screens/toan-trinh-so/TTSOTP.tsx +42 -25
  585. package/src/screens/toan-trinh-so/TTSSelfie.tsx +63 -56
  586. package/src/screens/toan-trinh-so/TTSSignLoan.tsx +63 -55
  587. package/src/screens/toan-trinh-so/TopupLoanInfo.tsx +50 -43
  588. package/src/screens/toan-trinh-so/VehicleCamera.tsx +275 -341
  589. package/src/screens/toan-trinh-so/VehicleRegistration.tsx +19 -4
  590. package/src/screens/toan-trinh-so/VehicleRegistrationBack.tsx +19 -4
  591. package/src/screens/toan-trinh-so/VehicleRegistrationFront.tsx +19 -4
  592. package/src/screens/toan-trinh-so/store.ts +82 -37
  593. package/src/screens/uploadVideo/index.tsx +26 -21
  594. package/src/screens/uploadVideo/videoStore.tsx +19 -4
  595. package/src/screens/v3/AssetInformation.tsx +35 -16
  596. package/src/screens/v3/LoanBuyCar.tsx +35 -16
  597. package/src/services/api/api.ts +23 -26
  598. package/src/utils/cameraCrop.ts +96 -0
  599. package/lib/commonjs/components/ItemTimaOneV2.js +0 -2
  600. package/lib/commonjs/components/ItemTimaOneV2.js.flow +0 -617
  601. package/lib/commonjs/components/ItemTimaOneV2.js.map +0 -1
  602. package/lib/commonjs/components/ItemTimaOneV3.js +0 -2
  603. package/lib/commonjs/components/ItemTimaOneV3.js.map +0 -1
  604. package/lib/module/components/ItemTimaOneV2.js +0 -2
  605. package/lib/module/components/ItemTimaOneV2.js.map +0 -1
  606. package/lib/module/components/ItemTimaOneV3.js +0 -2
  607. package/lib/module/components/ItemTimaOneV3.js.map +0 -1
  608. package/lib/typescript/components/ItemTimaOneV2.d.ts +0 -7
  609. package/lib/typescript/components/ItemTimaOneV2.d.ts.map +0 -1
  610. package/lib/typescript/components/ItemTimaOneV3.d.ts +0 -7
  611. package/lib/typescript/components/ItemTimaOneV3.d.ts.map +0 -1
  612. package/src/components/ItemTimaOneV2.tsx +0 -617
@@ -0,0 +1,563 @@
1
+ //@ts-nocheck
2
+ import { observer } from 'mobx-react-lite';
3
+ import React, { useCallback, useEffect, useRef, useState } from 'react';
4
+ import {
5
+ Alert,
6
+ Image,
7
+ Linking,
8
+ NativeModules,
9
+ PermissionsAndroid,
10
+ Platform,
11
+ StyleSheet,
12
+ Text,
13
+ TouchableOpacity,
14
+ View,
15
+ } from 'react-native';
16
+ import {
17
+ MrzScannerView,
18
+ type MrzError,
19
+ type MrzResult,
20
+ type MrzScannerHandle,
21
+ } from 'react-native-mrz-scanner';
22
+ import {
23
+ Camera as VisionCamera,
24
+ useCameraDevice,
25
+ useCameraFormat,
26
+ } from 'react-native-vision-camera';
27
+ import RNImageManipulator from '@oguzhnatly/react-native-image-manipulator';
28
+ import ImagePicker from 'react-native-image-crop-picker';
29
+ import { launchImageLibrary } from 'react-native-image-picker';
30
+ import { AlertGlobal } from '../../components/ModalNotification/AlertGlobal';
31
+ import { useSafeAreaInsets } from 'react-native-safe-area-context';
32
+ import { useIsFocused, useNavigation } from '@react-navigation/native';
33
+ import { IconBack, TakePhotoSvg } from '../../assets/icons';
34
+ import { IconUpload } from '../../assets/svgs';
35
+ import { MText } from '../../components/MText';
36
+
37
+ const { NFCReader } = NativeModules;
38
+
39
+ const ORANGE = '#F05123';
40
+ // Tỉ lệ thẻ CCCD/CMND theo chuẩn ID-1: 85.6mm x 54mm
41
+ const CARD_ASPECT_RATIO = 85.6 / 54;
42
+
43
+ // iPhone 7 trở lên (iOS 13+) đều có NFC và iOS không cho tắt NFC nên iOS
44
+ // mặc định là hỗ trợ + đang bật. Android hỏi native module; máy không có
45
+ // phần cứng NFC (hoặc app chủ chưa implement getNfcStatus) trả về false.
46
+ const getNfcStatus = async () => {
47
+ if (Platform.OS === 'ios') return { supported: true, enabled: true };
48
+ try {
49
+ const status = await NFCReader?.getNfcStatus?.();
50
+ return { supported: !!status?.supported, enabled: !!status?.enabled };
51
+ } catch (e) {
52
+ return { supported: false, enabled: false };
53
+ }
54
+ };
55
+
56
+ const promptEnableNfc = () => {
57
+ AlertGlobal.show({
58
+ type: 'warning',
59
+ title: 'NFC đang tắt',
60
+ message:
61
+ 'Thiết bị của bạn hỗ trợ NFC nhưng đang tắt. Vui lòng bật NFC để đọc thông tin thẻ CCCD.',
62
+ primaryText: 'Mở cài đặt',
63
+ secondaryText: 'Để sau',
64
+ onPrimaryPress: () => {
65
+ Linking.sendIntent('android.settings.NFC_SETTINGS').catch(() => {});
66
+ },
67
+ });
68
+ };
69
+
70
+ const getImageSize = (uri) =>
71
+ new Promise((resolve, reject) => {
72
+ Image.getSize(uri, (width, height) => resolve({ width, height }), reject);
73
+ });
74
+
75
+ /**
76
+ * Tính vùng crop (pixel trên ảnh gốc) tương ứng với phần preview nhìn thấy
77
+ * trong khung. VisionCamera fill khung theo kiểu "cover": ảnh được scale để
78
+ * phủ kín khung rồi cắt phần thừa, nên vùng nhìn thấy là hình chữ nhật đồng
79
+ * dạng với khung và nằm chính giữa ảnh.
80
+ */
81
+ export const computeCropRegion = (photoW, photoH, frameW, frameH) => {
82
+ // Ảnh lưu ngang nhưng khung dọc (hoặc ngược lại) -> tính trên hệ trục đã xoay 90°
83
+ const rotated = photoW > photoH !== frameW > frameH;
84
+ const w = rotated ? photoH : photoW;
85
+ const h = rotated ? photoW : photoH;
86
+
87
+ const scale = Math.max(frameW / w, frameH / h);
88
+ const cropW = Math.min(w, Math.round(frameW / scale));
89
+ const cropH = Math.min(h, Math.round(frameH / scale));
90
+ const cropX = Math.max(0, Math.round((w - cropW) / 2));
91
+ const cropY = Math.max(0, Math.round((h - cropH) / 2));
92
+
93
+ // Vùng crop luôn nằm chính giữa nên khi ảnh xoay 90° chỉ cần đảo trục
94
+ return rotated
95
+ ? { originX: cropY, originY: cropX, width: cropH, height: cropW }
96
+ : { originX: cropX, originY: cropY, width: cropW, height: cropH };
97
+ };
98
+
99
+ const ScanMRZ = (props: any) => {
100
+ const insets = useSafeAreaInsets();
101
+ const navigation = useNavigation();
102
+ const isFocused = useIsFocused();
103
+ const scannerRef = useRef<MrzScannerHandle>(null);
104
+ const cameraRef = useRef(null);
105
+ const frameLayout = useRef({ width: 0, height: 0 });
106
+ const [mode, setMode] = useState(props.route?.params?.initialMode ?? null);
107
+ const [autoCapture, setAutoCapture] = useState(true);
108
+ const [hasPermission, setHasPermission] = useState(Platform.OS === 'ios');
109
+ const [cameraReady, setCameraReady] = useState(false);
110
+ const [taking, setTaking] = useState(false);
111
+ const [captured, setCaptured] = useState(null);
112
+
113
+ const device = useCameraDevice('back');
114
+ const format = useCameraFormat(device, [
115
+ { photoResolution: { width: 1280, height: 720 } },
116
+ ]);
117
+
118
+ const front = props.route?.params?.front !== false;
119
+
120
+ useEffect(() => {
121
+ if (Platform.OS === 'android') {
122
+ PermissionsAndroid.request(PermissionsAndroid.PERMISSIONS.CAMERA, {
123
+ title: 'Quyền camera',
124
+ message:
125
+ 'Ứng dụng cần camera để quét chuỗi ký tự trên mặt sau thẻ CCCD.',
126
+ buttonPositive: 'Đồng ý',
127
+ buttonNegative: 'Từ chối',
128
+ }).then((status) =>
129
+ setHasPermission(status === PermissionsAndroid.RESULTS.GRANTED)
130
+ );
131
+ }
132
+ }, []);
133
+
134
+ // Chưa chỉ định initialMode: thiết bị hỗ trợ NFC thì ưu tiên tab Đọc NFC,
135
+ // không hỗ trợ thì vào thẳng tab Chụp CCCD. Có NFC nhưng đang tắt thì vẫn
136
+ // vào tab NFC kèm nhắc bật NFC trong cài đặt.
137
+ useEffect(() => {
138
+ if (props.route?.params?.initialMode) return;
139
+ getNfcStatus().then(({ supported, enabled }) => {
140
+ setMode(supported ? 'nfc' : 'photo');
141
+ if (supported && !enabled) {
142
+ promptEnableNfc();
143
+ }
144
+ });
145
+ // eslint-disable-next-line react-hooks/exhaustive-deps
146
+ }, []);
147
+
148
+ // Bấm tab Đọc NFC: check lại trạng thái vì người dùng có thể vừa tắt/bật NFC
149
+ const switchToNfc = async () => {
150
+ setMode('nfc');
151
+ const { supported, enabled } = await getNfcStatus();
152
+ if (supported && !enabled) {
153
+ promptEnableNfc();
154
+ }
155
+ };
156
+
157
+ // Đổi chế độ: gỡ camera cũ trước, chờ Android nhả camera rồi mới gắn camera mới
158
+ useEffect(() => {
159
+ setCameraReady(false);
160
+ const timeout = setTimeout(() => setCameraReady(true), 500);
161
+ return () => clearTimeout(timeout);
162
+ }, [mode]);
163
+
164
+ const handleDetected = useCallback((result: MrzResult) => {
165
+ Alert.alert(
166
+ 'Đã đọc MRZ',
167
+ [
168
+ `Họ tên: ${result.fullName}`,
169
+ `Số định danh: ${result.idNumber ?? result.documentNumber}`,
170
+ `Ngày sinh: ${result.dateOfBirth}`,
171
+ `Hết hạn: ${result.dateOfExpiry}`,
172
+ `Hợp lệ: ${result.valid ? 'Có' : 'Không'}`,
173
+ ].join('\n'),
174
+ [{ text: 'Quét lại', onPress: () => scannerRef.current?.resume() }]
175
+ );
176
+ }, []);
177
+
178
+ const handleError = useCallback((error: MrzError) => {
179
+ AlertGlobal.show({
180
+ type: 'warning',
181
+ title: 'Thông báo',
182
+ message: error?.message,
183
+ });
184
+ }, []);
185
+
186
+ const cropToFrame = async (uri) => {
187
+ const { width: frameW, height: frameH } = frameLayout.current;
188
+ if (!frameW || !frameH) return uri;
189
+ const { width: photoW, height: photoH } = await getImageSize(uri);
190
+ const crop = computeCropRegion(photoW, photoH, frameW, frameH);
191
+ console.log('CCCD crop region', { photoW, photoH, frameW, frameH, crop });
192
+ const result = await RNImageManipulator.manipulate(uri, [{ crop }], {
193
+ compress: 0.9,
194
+ format: 'jpeg',
195
+ });
196
+ return result.uri;
197
+ };
198
+
199
+ const takePicture = async () => {
200
+ if (cameraRef.current == null || taking) return;
201
+ setTaking(true);
202
+ try {
203
+ const photo = await cameraRef.current.takePhoto({
204
+ qualityPrioritization: 'quality',
205
+ });
206
+ const uri = 'file://' + photo.path;
207
+ const cropped = await cropToFrame(uri);
208
+ setCaptured(cropped);
209
+ } catch (err) {
210
+ console.error(err);
211
+ AlertGlobal.show({
212
+ type: 'warning',
213
+ title: 'Thông báo',
214
+ message: 'Không chụp được ảnh. Vui lòng thử lại.',
215
+ });
216
+ } finally {
217
+ setTaking(false);
218
+ }
219
+ };
220
+
221
+ // Ảnh từ thư viện không đi qua preview nên không có toạ độ khung để crop
222
+ const pickImageFromGallery = async () => {
223
+ if (Platform.OS === 'android') {
224
+ const result = await launchImageLibrary({ mediaType: 'photo' });
225
+ if (result.assets?.[0]?.uri) {
226
+ setCaptured(result.assets[0].uri);
227
+ }
228
+ } else {
229
+ ImagePicker.openPicker({}).then((image) => {
230
+ if (image?.path) {
231
+ setCaptured('file://' + image.path);
232
+ }
233
+ });
234
+ }
235
+ };
236
+
237
+ const usePhoto = () => {
238
+ const callback =
239
+ props.route?.params?.onCaptured ?? props.route?.params?.callback;
240
+ if (callback) {
241
+ navigation.goBack();
242
+ callback(captured);
243
+ } else {
244
+ AlertGlobal.show({
245
+ type: 'success',
246
+ title: 'Đã chụp ảnh',
247
+ message: captured,
248
+ });
249
+ }
250
+ };
251
+
252
+ return (
253
+ <View style={styles.container}>
254
+ <View style={[styles.header, { paddingTop: insets.top + 16 }]}>
255
+ <TouchableOpacity
256
+ onPress={() => {
257
+ navigation.goBack();
258
+ }}
259
+ hitSlop={{ top: 12, bottom: 12, left: 12, right: 12 }}
260
+ >
261
+ <IconBack />
262
+ </TouchableOpacity>
263
+ <View style={styles.tabs}>
264
+ <TouchableOpacity
265
+ style={[
266
+ styles.tab,
267
+ mode === 'photo' ? styles.tabActive : styles.tabInactive,
268
+ ]}
269
+ onPress={() => setMode('photo')}
270
+ >
271
+ <MText
272
+ style={
273
+ mode === 'photo' ? styles.tabTextActive : styles.tabTextInactive
274
+ }
275
+ >
276
+ Chụp CCCD
277
+ </MText>
278
+ </TouchableOpacity>
279
+ <TouchableOpacity
280
+ style={[
281
+ styles.tab,
282
+ mode === 'nfc' ? styles.tabActive : styles.tabInactive,
283
+ ]}
284
+ onPress={switchToNfc}
285
+ >
286
+ <MText
287
+ style={
288
+ mode === 'nfc' ? styles.tabTextActive : styles.tabTextInactive
289
+ }
290
+ >
291
+ Đọc NFC
292
+ </MText>
293
+ </TouchableOpacity>
294
+ </View>
295
+ </View>
296
+
297
+ {mode === 'nfc' ? (
298
+ <>
299
+ <MText style={styles.instruction}>
300
+ Dùng camera để quét chuỗi ký tự mặt sau thẻ{'\n'}CCCD gắn chíp ở
301
+ phía dưới
302
+ </MText>
303
+ {/* Khung camera + 4 góc cam */}
304
+ <View style={styles.cameraWrap}>
305
+ {hasPermission && cameraReady && isFocused && (
306
+ <MrzScannerView
307
+ ref={scannerRef}
308
+ style={StyleSheet.absoluteFill}
309
+ autoCapture={autoCapture}
310
+ onMrzDetected={handleDetected}
311
+ onError={handleError}
312
+ />
313
+ )}
314
+ <View style={[styles.corner, styles.cornerTL]} />
315
+ <View style={[styles.corner, styles.cornerTR]} />
316
+ <View style={[styles.corner, styles.cornerBL]} />
317
+ <View style={[styles.corner, styles.cornerBR]} />
318
+ </View>
319
+ {/* Checkbox chụp tự động */}
320
+ <TouchableOpacity
321
+ style={styles.checkboxRow}
322
+ onPress={() => setAutoCapture((v) => !v)}
323
+ activeOpacity={0.7}
324
+ >
325
+ <Text style={styles.checkboxLabel}>Chụp tự động</Text>
326
+ <View
327
+ style={[styles.checkbox, autoCapture && styles.checkboxChecked]}
328
+ >
329
+ {autoCapture && <Text style={styles.checkmark}>✓</Text>}
330
+ </View>
331
+ </TouchableOpacity>
332
+
333
+ <MText style={styles.hint}>
334
+ Vui lòng đặt chuỗi kí tự nằm vừa khung{'\n'}hình chữ nhật, chụp đủ
335
+ ánh sáng và rõ nét.
336
+ </MText>
337
+ </>
338
+ ) : mode === 'photo' ? (
339
+ <>
340
+ <MText style={styles.instruction}>
341
+ {front ? 'Chụp CMND/ CCCD mặt trước' : 'Chụp CMND/ CCCD mặt sau'}
342
+ </MText>
343
+ {/* Khung tỉ lệ thẻ CCCD: vùng nhìn thấy của preview = vùng sẽ crop */}
344
+ <View
345
+ style={styles.photoFrame}
346
+ onLayout={(e) => {
347
+ frameLayout.current = e.nativeEvent.layout;
348
+ }}
349
+ >
350
+ {captured ? (
351
+ <Image
352
+ source={{ uri: captured }}
353
+ style={StyleSheet.absoluteFill}
354
+ resizeMode="cover"
355
+ />
356
+ ) : hasPermission && cameraReady && device ? (
357
+ <VisionCamera
358
+ ref={cameraRef}
359
+ style={StyleSheet.absoluteFill}
360
+ device={device}
361
+ isActive={isFocused && mode === 'photo' && !captured}
362
+ photo={true}
363
+ format={format}
364
+ />
365
+ ) : null}
366
+ <View style={[styles.corner, styles.cornerTL]} />
367
+ <View style={[styles.corner, styles.cornerTR]} />
368
+ <View style={[styles.corner, styles.cornerBL]} />
369
+ <View style={[styles.corner, styles.cornerBR]} />
370
+ </View>
371
+
372
+ {captured ? (
373
+ <View style={styles.previewActions}>
374
+ <TouchableOpacity
375
+ style={styles.retakeButton}
376
+ onPress={() => setCaptured(null)}
377
+ >
378
+ <MText style={styles.retakeText}>Chụp lại</MText>
379
+ </TouchableOpacity>
380
+ <TouchableOpacity style={styles.useButton} onPress={usePhoto}>
381
+ <MText style={styles.useText}>Dùng ảnh này</MText>
382
+ </TouchableOpacity>
383
+ </View>
384
+ ) : (
385
+ <>
386
+ <TouchableOpacity
387
+ style={styles.galleryButton}
388
+ onPress={pickImageFromGallery}
389
+ >
390
+ <IconUpload />
391
+ <MText style={styles.galleryText}>Tải ảnh từ thư viện</MText>
392
+ </TouchableOpacity>
393
+ <View style={styles.spacer} />
394
+ <MText style={[styles.hint, { marginTop: 0, marginBottom: 20 }]}>
395
+ Vui lòng đặt giấy tờ nằm vừa khung hình chữ nhật,{'\n'}chụp đủ
396
+ ánh sáng và rõ nét.
397
+ </MText>
398
+ <TouchableOpacity
399
+ style={[
400
+ styles.captureButton,
401
+ { marginBottom: insets.bottom + 24 },
402
+ ]}
403
+ onPress={takePicture}
404
+ disabled={taking}
405
+ >
406
+ <TakePhotoSvg />
407
+ </TouchableOpacity>
408
+ </>
409
+ )}
410
+ </>
411
+ ) : null}
412
+ </View>
413
+ );
414
+ };
415
+
416
+ export default observer(ScanMRZ);
417
+ const styles = StyleSheet.create({
418
+ container: { flex: 1, backgroundColor: '#FFFFFF' },
419
+ header: {
420
+ flexDirection: 'row',
421
+ alignItems: 'center',
422
+ paddingHorizontal: 16,
423
+ paddingTop: 8,
424
+ },
425
+ tabs: {
426
+ flex: 1,
427
+ flexDirection: 'row',
428
+ justifyContent: 'center',
429
+ gap: 8,
430
+ },
431
+ tab: {
432
+ paddingHorizontal: 14,
433
+ paddingVertical: 7,
434
+ borderRadius: 8,
435
+ },
436
+ tabInactive: { backgroundColor: '#F1F1F1' },
437
+ tabActive: { backgroundColor: ORANGE },
438
+ tabTextInactive: { color: '#555555', fontSize: 13, fontWeight: '500' },
439
+ tabTextActive: { color: '#FFFFFF', fontSize: 13, fontWeight: '600' },
440
+ instruction: {
441
+ textAlign: 'center',
442
+ color: '#333333',
443
+ fontSize: 14,
444
+ lineHeight: 20,
445
+ marginTop: 20,
446
+ marginBottom: 28,
447
+ },
448
+ cameraWrap: {
449
+ marginHorizontal: 16,
450
+ height: 220,
451
+ borderRadius: 8,
452
+ overflow: 'hidden',
453
+ backgroundColor: '#000000',
454
+ },
455
+ photoFrame: {
456
+ marginHorizontal: 24,
457
+ aspectRatio: CARD_ASPECT_RATIO,
458
+ borderRadius: 8,
459
+ overflow: 'hidden',
460
+ backgroundColor: '#000000',
461
+ },
462
+ corner: {
463
+ position: 'absolute',
464
+ width: 26,
465
+ height: 26,
466
+ borderColor: ORANGE,
467
+ },
468
+ cornerTL: {
469
+ top: 0,
470
+ left: 0,
471
+ borderTopWidth: 4,
472
+ borderLeftWidth: 4,
473
+ borderTopLeftRadius: 8,
474
+ },
475
+ cornerTR: {
476
+ top: 0,
477
+ right: 0,
478
+ borderTopWidth: 4,
479
+ borderRightWidth: 4,
480
+ borderTopRightRadius: 8,
481
+ },
482
+ cornerBL: {
483
+ bottom: 0,
484
+ left: 0,
485
+ borderBottomWidth: 4,
486
+ borderLeftWidth: 4,
487
+ borderBottomLeftRadius: 8,
488
+ },
489
+ cornerBR: {
490
+ bottom: 0,
491
+ right: 0,
492
+ borderBottomWidth: 4,
493
+ borderRightWidth: 4,
494
+ borderBottomRightRadius: 8,
495
+ },
496
+ checkboxRow: {
497
+ flexDirection: 'row',
498
+ alignItems: 'center',
499
+ justifyContent: 'center',
500
+ marginTop: 24,
501
+ gap: 8,
502
+ },
503
+ checkboxLabel: { fontSize: 14, color: '#333333' },
504
+ checkbox: {
505
+ width: 20,
506
+ height: 20,
507
+ borderRadius: 4,
508
+ borderWidth: 1.5,
509
+ borderColor: '#BBBBBB',
510
+ alignItems: 'center',
511
+ justifyContent: 'center',
512
+ },
513
+ checkboxChecked: { backgroundColor: '#22A45D', borderColor: '#22A45D' },
514
+ checkmark: { color: '#FFFFFF', fontSize: 13, fontWeight: '700' },
515
+ hint: {
516
+ textAlign: 'center',
517
+ color: '#555555',
518
+ fontSize: 13,
519
+ lineHeight: 19,
520
+ marginTop: 48,
521
+ },
522
+ galleryButton: {
523
+ alignSelf: 'center',
524
+ flexDirection: 'row',
525
+ alignItems: 'center',
526
+ gap: 8,
527
+ marginTop: 20,
528
+ paddingHorizontal: 14,
529
+ paddingVertical: 8,
530
+ borderRadius: 8,
531
+ borderWidth: 1,
532
+ borderColor: ORANGE,
533
+ backgroundColor: '#FFFFFF',
534
+ },
535
+ galleryText: { color: '#333333', fontSize: 13 },
536
+ spacer: { flex: 1 },
537
+ captureButton: { alignSelf: 'center' },
538
+ previewActions: {
539
+ flexDirection: 'row',
540
+ gap: 12,
541
+ marginTop: 24,
542
+ marginHorizontal: 24,
543
+ },
544
+ retakeButton: {
545
+ flex: 1,
546
+ height: 40,
547
+ borderRadius: 20,
548
+ borderWidth: 1,
549
+ borderColor: ORANGE,
550
+ alignItems: 'center',
551
+ justifyContent: 'center',
552
+ },
553
+ retakeText: { color: ORANGE, fontSize: 14, fontWeight: '600' },
554
+ useButton: {
555
+ flex: 1,
556
+ height: 40,
557
+ borderRadius: 20,
558
+ backgroundColor: ORANGE,
559
+ alignItems: 'center',
560
+ justifyContent: 'center',
561
+ },
562
+ useText: { color: '#FFFFFF', fontSize: 14, fontWeight: '600' },
563
+ });
@@ -1,7 +1,7 @@
1
1
  //@ts-nocheck
2
2
  import { observable, action, toJS } from 'mobx';
3
3
  import { Api } from '../services/api';
4
- import { Alert } from 'react-native';
4
+ import { AlertGlobal } from '../components/ModalNotification/AlertGlobal';
5
5
  import { myLog } from '../utils/log';
6
6
 
7
7
  export enum Types {
@@ -70,7 +70,12 @@ class SelectorStore {
70
70
  } else {
71
71
  this.isLoading = false;
72
72
  this.isError = false;
73
- Alert.alert('Lỗi', response.Messages);
73
+ AlertGlobal.show({
74
+ type: 'warning',
75
+ title: 'Lỗi',
76
+ message: response.Messages,
77
+ primaryText: 'Đóng',
78
+ });
74
79
  }
75
80
  }
76
81
  }