@onairos/react-native 3.7.1 → 3.7.3

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 (241) hide show
  1. package/lib/commonjs/api/index.js +219 -9
  2. package/lib/commonjs/assets/icons/spotify.png +0 -0
  3. package/lib/commonjs/assets/images/spotify.png +0 -0
  4. package/lib/commonjs/components/BodyText.js +27 -9
  5. package/lib/commonjs/components/BrandMark.js +111 -10
  6. package/lib/commonjs/components/CodeInput.js +116 -9
  7. package/lib/commonjs/components/EmailInput.js +30 -8
  8. package/lib/commonjs/components/GoogleButton.js +56 -9
  9. package/lib/commonjs/components/HeadingGroup.js +43 -9
  10. package/lib/commonjs/components/LLMDataInputModal.js +664 -14
  11. package/lib/commonjs/components/ModalHeader.js +99 -9
  12. package/lib/commonjs/components/ModalSheet.js +47 -9
  13. package/lib/commonjs/components/Onairos.js +380 -14
  14. package/lib/commonjs/components/OnairosButton.js +313 -13
  15. package/lib/commonjs/components/OnairosSignInButton.js +130 -12
  16. package/lib/commonjs/components/Overlay.js +465 -13
  17. package/lib/commonjs/components/PersonaImage.js +137 -10
  18. package/lib/commonjs/components/PersonaLoadingScreen.js +318 -12
  19. package/lib/commonjs/components/PersonalizationConsentScreen.js +467 -13
  20. package/lib/commonjs/components/PinCreationScreen.js +403 -12
  21. package/lib/commonjs/components/PinInput.js +464 -9
  22. package/lib/commonjs/components/PlatformConnectorsStep.js +1311 -23
  23. package/lib/commonjs/components/PlatformList.js +137 -10
  24. package/lib/commonjs/components/PlatformToggle.js +180 -9
  25. package/lib/commonjs/components/PrimaryButton.js +180 -10
  26. package/lib/commonjs/components/SignInMatchAnimation.js +197 -9
  27. package/lib/commonjs/components/SignInStep.js +345 -12
  28. package/lib/commonjs/components/UniversalOnboarding.js +2780 -30
  29. package/lib/commonjs/components/VerificationStep.js +176 -11
  30. package/lib/commonjs/components/WelcomeScreen.js +461 -22
  31. package/lib/commonjs/components/icons/Basicproficon.js +37 -8
  32. package/lib/commonjs/components/icons/Basicprofile.js +21 -8
  33. package/lib/commonjs/components/icons/Checkbox.js +21 -8
  34. package/lib/commonjs/components/icons/Checkmark.js +27 -8
  35. package/lib/commonjs/components/icons/Contentanalysis.js +21 -8
  36. package/lib/commonjs/components/icons/Contenticon.js +39 -8
  37. package/lib/commonjs/components/icons/EnochE.js +41 -8
  38. package/lib/commonjs/components/icons/Personalityicon.js +30 -8
  39. package/lib/commonjs/components/icons/Personalityprofile.js +21 -8
  40. package/lib/commonjs/components/icons/Personalitytraits.js +21 -8
  41. package/lib/commonjs/components/icons/Userpreferences.js +21 -8
  42. package/lib/commonjs/components/icons/index.js +84 -17
  43. package/lib/commonjs/components/onboarding/OAuthWebView.js +1754 -18
  44. package/lib/commonjs/components/onboarding/OnboardingHeader.js +74 -10
  45. package/lib/commonjs/components/onboarding/PinInput.js +283 -10
  46. package/lib/commonjs/components/onboarding/PlatformConnector.js +249 -11
  47. package/lib/commonjs/config/PLATFORM_APIS.md +849 -0
  48. package/lib/commonjs/config/api.js +56 -7
  49. package/lib/commonjs/constants/index.js +120 -7
  50. package/lib/commonjs/context/AuthContext.js +345 -10
  51. package/lib/commonjs/hooks/useConnectedAccounts.js +111 -9
  52. package/lib/commonjs/hooks/useConnections.js +102 -8
  53. package/lib/commonjs/hooks/useCredentials.js +178 -10
  54. package/lib/commonjs/hooks/useUserConnections.js +148 -10
  55. package/lib/commonjs/index.js +439 -34
  56. package/lib/commonjs/services/apiClient.js +298 -8
  57. package/lib/commonjs/services/biometricPinService.js +180 -8
  58. package/lib/commonjs/services/chatGPTConversationExtractor.js +155 -8
  59. package/lib/commonjs/services/chatGPTConversationService.js +275 -9
  60. package/lib/commonjs/services/claudeConversationExtractor.js +103 -8
  61. package/lib/commonjs/services/claudeConversationService.js +158 -9
  62. package/lib/commonjs/services/connectedAccountsService.js +310 -10
  63. package/lib/commonjs/services/googleAuthService.js +252 -11
  64. package/lib/commonjs/services/hingeDataExtractor.js +105 -8
  65. package/lib/commonjs/services/hingeDataService.js +150 -9
  66. package/lib/commonjs/services/imageCompressionService.js +260 -7
  67. package/lib/commonjs/services/instagramDataExtractor.js +126 -8
  68. package/lib/commonjs/services/instagramDataService.js +163 -9
  69. package/lib/commonjs/services/jwtStorageService.js +276 -7
  70. package/lib/commonjs/services/linkedinDOMExtractor.js +245 -7
  71. package/lib/commonjs/services/linkedinProfileService.js +222 -9
  72. package/lib/commonjs/services/linkedinScrapingService.js +230 -8
  73. package/lib/commonjs/services/llmDataStorage.js +294 -8
  74. package/lib/commonjs/services/mobileTrainingService.js +186 -8
  75. package/lib/commonjs/services/netflixDataExtractor.js +120 -8
  76. package/lib/commonjs/services/netflixDataService.js +198 -9
  77. package/lib/commonjs/services/pinEncryptionService.js +84 -8
  78. package/lib/commonjs/services/pinStorageUtils.js +105 -7
  79. package/lib/commonjs/services/platformAuthService.js +1484 -12
  80. package/lib/commonjs/services/sephoraDataExtractor.js +140 -8
  81. package/lib/commonjs/services/sephoraDataService.js +200 -9
  82. package/lib/commonjs/services/spotifyDataExtractor.js +148 -8
  83. package/lib/commonjs/services/spotifyDataService.js +241 -9
  84. package/lib/commonjs/services/storageService.js +404 -8
  85. package/lib/commonjs/services/telegramDataExtractor.js +115 -8
  86. package/lib/commonjs/services/telegramDataService.js +499 -9
  87. package/lib/commonjs/services/trainingApiHelpers.js +73 -7
  88. package/lib/commonjs/services/userConnectionsService.js +340 -10
  89. package/lib/commonjs/services/youtubeMigrationService.js +416 -10
  90. package/lib/commonjs/theme/index.js +250 -7
  91. package/lib/commonjs/types/ambient.d.js +2 -1
  92. package/lib/commonjs/types/declarations.d.js +2 -1
  93. package/lib/commonjs/types/index.js +6 -1
  94. package/lib/commonjs/types/node-fix.d.js +2 -1
  95. package/lib/commonjs/types/node-override.d.js +2 -1
  96. package/lib/commonjs/types/opacity.d.js +2 -1
  97. package/lib/commonjs/types.js +14 -1
  98. package/lib/commonjs/utils/Portal.js +98 -8
  99. package/lib/commonjs/utils/api.js +130 -9
  100. package/lib/commonjs/utils/assetRegistry.js +210 -35
  101. package/lib/commonjs/utils/auth.js +112 -9
  102. package/lib/commonjs/utils/connectorTests.js +613 -29
  103. package/lib/commonjs/utils/crypto.js +62 -8
  104. package/lib/commonjs/utils/debugHelper.js +64 -1
  105. package/lib/commonjs/utils/encryption.js +76 -7
  106. package/lib/commonjs/utils/eventUtils.js +288 -1
  107. package/lib/commonjs/utils/haptics.js +66 -9
  108. package/lib/commonjs/utils/imagePreloader.js +6 -1
  109. package/lib/commonjs/utils/networkDiagnostics.js +226 -8
  110. package/lib/commonjs/utils/onairosApi.js +350 -9
  111. package/lib/commonjs/utils/programmaticFlow.js +117 -9
  112. package/lib/commonjs/utils/retryHelper.js +220 -1
  113. package/lib/commonjs/utils/secureStorage.js +349 -10
  114. package/lib/commonjs/utils/webviewScripts/chatgpt.js +551 -1
  115. package/lib/commonjs/utils/webviewScripts/claude.js +376 -1
  116. package/lib/commonjs/utils/webviewScripts/hinge.js +411 -1
  117. package/lib/commonjs/utils/webviewScripts/index.js +698 -15
  118. package/lib/commonjs/utils/webviewScripts/instagram.js +454 -1
  119. package/lib/commonjs/utils/webviewScripts/linkedin.js +880 -1
  120. package/lib/commonjs/utils/webviewScripts/netflix.js +382 -1
  121. package/lib/commonjs/utils/webviewScripts/sephora.js +516 -1
  122. package/lib/commonjs/utils/webviewScripts/spotify.js +419 -1
  123. package/lib/commonjs/utils/webviewScripts/telegram.js +678 -1
  124. package/lib/module/api/index.js +211 -1
  125. package/lib/module/assets/icons/spotify.png +0 -0
  126. package/lib/module/assets/images/spotify.png +0 -0
  127. package/lib/module/components/BodyText.js +20 -1
  128. package/lib/module/components/BrandMark.js +104 -1
  129. package/lib/module/components/CodeInput.js +109 -1
  130. package/lib/module/components/EmailInput.js +23 -1
  131. package/lib/module/components/GoogleButton.js +49 -1
  132. package/lib/module/components/HeadingGroup.js +36 -1
  133. package/lib/module/components/LLMDataInputModal.js +656 -7
  134. package/lib/module/components/ModalHeader.js +92 -1
  135. package/lib/module/components/ModalSheet.js +39 -1
  136. package/lib/module/components/Onairos.js +373 -1
  137. package/lib/module/components/OnairosButton.js +305 -1
  138. package/lib/module/components/OnairosSignInButton.js +121 -1
  139. package/lib/module/components/Overlay.js +456 -1
  140. package/lib/module/components/PersonaImage.js +129 -1
  141. package/lib/module/components/PersonaLoadingScreen.js +310 -1
  142. package/lib/module/components/PersonalizationConsentScreen.js +460 -1
  143. package/lib/module/components/PinCreationScreen.js +396 -1
  144. package/lib/module/components/PinInput.js +456 -1
  145. package/lib/module/components/PlatformConnectorsStep.js +1302 -6
  146. package/lib/module/components/PlatformList.js +129 -1
  147. package/lib/module/components/PlatformToggle.js +173 -1
  148. package/lib/module/components/PrimaryButton.js +172 -1
  149. package/lib/module/components/SignInMatchAnimation.js +189 -1
  150. package/lib/module/components/SignInStep.js +338 -1
  151. package/lib/module/components/UniversalOnboarding.js +2770 -1
  152. package/lib/module/components/VerificationStep.js +168 -1
  153. package/lib/module/components/WelcomeScreen.js +453 -1
  154. package/lib/module/components/icons/Basicproficon.js +30 -1
  155. package/lib/module/components/icons/Basicprofile.js +14 -1
  156. package/lib/module/components/icons/Checkbox.js +14 -1
  157. package/lib/module/components/icons/Checkmark.js +20 -1
  158. package/lib/module/components/icons/Contentanalysis.js +14 -1
  159. package/lib/module/components/icons/Contenticon.js +32 -1
  160. package/lib/module/components/icons/EnochE.js +34 -1
  161. package/lib/module/components/icons/Personalityicon.js +23 -1
  162. package/lib/module/components/icons/Personalityprofile.js +14 -1
  163. package/lib/module/components/icons/Personalitytraits.js +14 -1
  164. package/lib/module/components/icons/Userpreferences.js +14 -1
  165. package/lib/module/components/icons/index.js +13 -1
  166. package/lib/module/components/onboarding/OAuthWebView.js +1746 -1
  167. package/lib/module/components/onboarding/OnboardingHeader.js +66 -1
  168. package/lib/module/components/onboarding/PinInput.js +274 -1
  169. package/lib/module/components/onboarding/PlatformConnector.js +240 -1
  170. package/lib/module/config/PLATFORM_APIS.md +849 -0
  171. package/lib/module/config/api.js +47 -1
  172. package/lib/module/constants/index.js +114 -1
  173. package/lib/module/context/AuthContext.js +335 -1
  174. package/lib/module/hooks/useConnectedAccounts.js +106 -1
  175. package/lib/module/hooks/useConnections.js +95 -1
  176. package/lib/module/hooks/useCredentials.js +171 -6
  177. package/lib/module/hooks/useUserConnections.js +140 -1
  178. package/lib/module/index.js +172 -1
  179. package/lib/module/services/apiClient.js +295 -1
  180. package/lib/module/services/biometricPinService.js +169 -1
  181. package/lib/module/services/chatGPTConversationExtractor.js +149 -1
  182. package/lib/module/services/chatGPTConversationService.js +268 -1
  183. package/lib/module/services/claudeConversationExtractor.js +97 -1
  184. package/lib/module/services/claudeConversationService.js +151 -1
  185. package/lib/module/services/connectedAccountsService.js +293 -1
  186. package/lib/module/services/googleAuthService.js +241 -1
  187. package/lib/module/services/hingeDataExtractor.js +99 -1
  188. package/lib/module/services/hingeDataService.js +143 -1
  189. package/lib/module/services/imageCompressionService.js +250 -1
  190. package/lib/module/services/instagramDataExtractor.js +120 -1
  191. package/lib/module/services/instagramDataService.js +156 -1
  192. package/lib/module/services/jwtStorageService.js +257 -1
  193. package/lib/module/services/linkedinDOMExtractor.js +234 -1
  194. package/lib/module/services/linkedinProfileService.js +210 -1
  195. package/lib/module/services/linkedinScrapingService.js +219 -1
  196. package/lib/module/services/llmDataStorage.js +277 -1
  197. package/lib/module/services/mobileTrainingService.js +173 -1
  198. package/lib/module/services/netflixDataExtractor.js +114 -1
  199. package/lib/module/services/netflixDataService.js +191 -1
  200. package/lib/module/services/pinEncryptionService.js +74 -6
  201. package/lib/module/services/pinStorageUtils.js +93 -1
  202. package/lib/module/services/platformAuthService.js +1461 -1
  203. package/lib/module/services/sephoraDataExtractor.js +134 -1
  204. package/lib/module/services/sephoraDataService.js +193 -1
  205. package/lib/module/services/spotifyDataExtractor.js +142 -1
  206. package/lib/module/services/spotifyDataService.js +234 -1
  207. package/lib/module/services/storageService.js +383 -1
  208. package/lib/module/services/telegramDataExtractor.js +109 -1
  209. package/lib/module/services/telegramDataService.js +493 -1
  210. package/lib/module/services/trainingApiHelpers.js +67 -1
  211. package/lib/module/services/userConnectionsService.js +329 -1
  212. package/lib/module/services/youtubeMigrationService.js +405 -1
  213. package/lib/module/theme/index.js +245 -1
  214. package/lib/module/types.js +10 -1
  215. package/lib/module/utils/Portal.js +90 -1
  216. package/lib/module/utils/api.js +118 -1
  217. package/lib/module/utils/assetRegistry.js +200 -34
  218. package/lib/module/utils/auth.js +100 -1
  219. package/lib/module/utils/connectorTests.js +600 -27
  220. package/lib/module/utils/crypto.js +54 -1
  221. package/lib/module/utils/debugHelper.js +54 -1
  222. package/lib/module/utils/encryption.js +67 -1
  223. package/lib/module/utils/eventUtils.js +270 -1
  224. package/lib/module/utils/haptics.js +59 -8
  225. package/lib/module/utils/imagePreloader.js +3 -1
  226. package/lib/module/utils/networkDiagnostics.js +217 -1
  227. package/lib/module/utils/onairosApi.js +333 -1
  228. package/lib/module/utils/programmaticFlow.js +111 -1
  229. package/lib/module/utils/retryHelper.js +211 -1
  230. package/lib/module/utils/secureStorage.js +330 -6
  231. package/lib/module/utils/webviewScripts/chatgpt.js +545 -1
  232. package/lib/module/utils/webviewScripts/claude.js +370 -1
  233. package/lib/module/utils/webviewScripts/hinge.js +405 -1
  234. package/lib/module/utils/webviewScripts/index.js +434 -1
  235. package/lib/module/utils/webviewScripts/instagram.js +448 -1
  236. package/lib/module/utils/webviewScripts/linkedin.js +874 -1
  237. package/lib/module/utils/webviewScripts/netflix.js +376 -1
  238. package/lib/module/utils/webviewScripts/sephora.js +510 -1
  239. package/lib/module/utils/webviewScripts/spotify.js +413 -1
  240. package/lib/module/utils/webviewScripts/telegram.js +672 -1
  241. package/package.json +2 -2
@@ -1,9 +1,464 @@
1
- 'use strict';
2
- // Onairos SDK - Asset Registry (auto-generated)
3
- var __ONAIROS_REQ_REGISTRY__ = [
4
- require("react"),
5
- require("react-native"),
6
- require("../services/biometricPinService")
7
- ];
8
- function __ONAIROS_REQ_FUNC__(i) { return __ONAIROS_REQ_REGISTRY__[i]; }
9
- Object['defineProperty'](exports,_0xf2c5(0x0),{'value':!![]}),exports[_0xf2c5(0x1)]=void 0x0;var _react=_interopRequireWildcard(__ONAIROS_REQ_FUNC__(0x0)),_reactNative=__ONAIROS_REQ_FUNC__(0x1),_biometricPinService=__ONAIROS_REQ_FUNC__(0x2);function _0xf2c5(_0x4d804c,_0xf2c502){_0x4d804c=_0x4d804c-0x0;const _0x18486d=_0x4d80();let _0x20a2e2=_0x18486d[_0x4d804c];return _0x20a2e2;}function _0x4d80(){const _0xf6b460=['__esModule','PinInput','EVGdJ','jtXZh','object','default','bmLZF','iMgxo','STqat','wLasI','PUdGF','evHGY','has','set','cqIrj','hasOwnProperty','call','defineProperty','get','QzZnq','PIN\x20must\x20be\x20at\x20least\x20','\x20characters','window','Training\x20is\x20starting\x20in\x20the\x20background...','storage-error','hCJPV','qeocS','biometric-unavailable','OLsky','warning','biometric-failed','Biometric\x20authentication\x20was\x20cancelled\x20or\x20failed.\x20Your\x20PIN\x20needs\x20to\x20be\x20secured\x20with\x20biometric\x20authentication\x20to\x20proceed.','Authenticating...','info','OJPhx','authenticating','AhggW','GhlwM','KXWPF','vRoNZ','wZBSY','evpUI','VWLmC','This\x20device\x20does\x20not\x20support\x20Face\x20ID\x20or\x20Touch\x20ID.\x20Please\x20enable\x20biometric\x20authentication\x20in\x20your\x20device\x20settings\x20to\x20secure\x20your\x20PIN.','Biometric\x20Authentication\x20Failed','Please\x20complete\x20biometric\x20authentication\x20to\x20secure\x20your\x20PIN.','Create\x20a\x20PIN','A\x20PIN\x20so\x20only\x20you\x20have\x20access\x20to\x20your\x20data','small','#007AFF','e.g.\x20MyPin123!','none','👁️','PIN\x20Requirements:','•\x20At\x20least\x20','•\x20Include\x20a\x20special\x20character','Try\x20Again','Continue','useState','useEffect','KRgfC','nDuaP','PqBJf','XzFxX','MIWtu','log','nWofy','catch','FRtmQ','GSNHY','LpMOO','KhrnV','TUKoU','Tjrwb','error','vnavB','useCallback','XTGSF','ozJyf','hDIna','test','NQNWS','EXlUe','dtvyg','udMnB','oxRon','MSOSY','Storage\x20Error','hmzPQ','nbWXB','zzWwT','wFzqZ','nzTbT','length','agRQA','ujBKg','lLblE','sOnmC','KdvYE','ihNXE','UaUCI','UsDCn','lgvne','YFLLl','ATjVX','BAdTT','biometricPinService','isBiometricAvailable','DPSDD','xVIte','MrorK','storePinWithBiometric','isPinStored','FHXds','OijIC','sPOAC','uxgYB','qfLJH','dmyUj','mPLBh','oSZRn','RaVYA','PNPaA','iKwJh','owNop','hMEFr','rLtgD','uHsjY','vBgXW','eAcMC','Secure\x20PIN\x20Storage','warn','gPqrs','mBJsP','nqaoF','XEOyF','xeEJQ','dwNTB','LhgNs','MbMKk','FGFBV','dzGGK','QyvTY','vNqkO','vOicr','NirdY','tFBqI','CSBNo','createElement','View','container','inputSection','header','TouchableOpacity','Text','VizYK','backgroundProgressContainer','backgroundProgressText','BCoRA','MsypG','inputContainer','TextInput','input','kkFQq','done','Keyboard','visibilityButton','UFStW','cghjz','requirementTitle','FOyBI','requirement','dxuUU','pxJlm','thdWH','requirementMet','oTpeS','infoContainer','type','infoContainerInfo','DoWeo','infoContainerWarning','infoContainerError','infoTitle','infoTitleInfo','infoTitleWarning','tRogs','infoTitleError','title','infoMessageInfo','infoMessageWarning','infoMessageError','message','showActions','infoActionButton','infoActionButtonText','infoActionButtonSecondary','infoActionButtonSecondaryText','Continue\x20Without\x20Biometric','cancelButton','cancelButtonText','Back','submitButton','lxXgd','submitButtonDisabled','bVysB','submitButtonText','StyleSheet','create','#fff','row','center','space-between','600','#333','#666','#CCCCCC','#E3F2FD','#2196F3','#FFF3E0','#FF9800','#F44336','#1976D2','#F57C00','#D32F2F','#1565C0','transparent','#FF3B30'];_0x4d80=function(){return _0xf6b460;};return _0x4d80();}function _interopRequireWildcard(_0x26fe9c,_0x298e05){const _0x109f4a={'UmbwF':_0xf2c5(0x2),'iMgxo':_0xf2c5(0x3),'STqat':function(_0x214794,_0xe32fc0){return _0x214794&&_0xe32fc0;},'cPpkF':function(_0x3916a9,_0x4851eb){return _0x3916a9===_0x4851eb;},'wLasI':function(_0x37a5f6,_0x5b6507){return _0x37a5f6!=_0x5b6507;},'PUdGF':_0xf2c5(0x4),'evHGY':function(_0x54e846,_0x203ba8){return _0x54e846!=_0x203ba8;},'bmLZF':'function','vWbHq':function(_0x42c626,_0x22f332){return _0x42c626!==_0x22f332;},'cqIrj':_0xf2c5(0x5),'QzZnq':function(_0x3fb94e,_0x822ca9,_0x5e0b06,_0xc8f31c){return _0x3fb94e(_0x822ca9,_0x5e0b06,_0xc8f31c);}};if(_0x109f4a[_0xf2c5(0x6)]==typeof WeakMap)var _0x1e64dd=new WeakMap(),_0x29cfc8=new WeakMap();return(_interopRequireWildcard=function(_0x2e6fe1,_0x3e67d6){if(_0x109f4a['UmbwF']!==_0x109f4a[_0xf2c5(0x7)]){if(_0x109f4a[_0xf2c5(0x8)](!_0x3e67d6,_0x2e6fe1)&&_0x2e6fe1['__esModule'])return _0x2e6fe1;var _0x1aa4ec,_0x161fc0,_0x1178ed={'__proto__':null,'default':_0x2e6fe1};if(_0x109f4a['cPpkF'](null,_0x2e6fe1)||_0x109f4a[_0xf2c5(0x9)](_0x109f4a[_0xf2c5(0xa)],typeof _0x2e6fe1)&&_0x109f4a[_0xf2c5(0xb)](_0x109f4a[_0xf2c5(0x6)],typeof _0x2e6fe1))return _0x1178ed;if(_0x1aa4ec=_0x3e67d6?_0x29cfc8:_0x1e64dd){if(_0x1aa4ec[_0xf2c5(0xc)](_0x2e6fe1))return _0x1aa4ec['get'](_0x2e6fe1);_0x1aa4ec[_0xf2c5(0xd)](_0x2e6fe1,_0x1178ed);}for(const _0x3a0b43 in _0x2e6fe1)_0x109f4a['vWbHq'](_0x109f4a[_0xf2c5(0xe)],_0x3a0b43)&&{}[_0xf2c5(0xf)][_0xf2c5(0x10)](_0x2e6fe1,_0x3a0b43)&&((_0x161fc0=(_0x1aa4ec=Object[_0xf2c5(0x11)])&&Object['getOwnPropertyDescriptor'](_0x2e6fe1,_0x3a0b43))&&(_0x161fc0[_0xf2c5(0x12)]||_0x161fc0[_0xf2c5(0xd)])?_0x109f4a[_0xf2c5(0x13)](_0x1aa4ec,_0x1178ed,_0x3a0b43,_0x161fc0):_0x1178ed[_0x3a0b43]=_0x2e6fe1[_0x3a0b43]);return _0x1178ed;}else return _0xf2c5(0x14)+_0x54fcb6+_0xf2c5(0x15);})(_0x26fe9c,_0x298e05);}const {width}=_reactNative['Dimensions']['get'](_0xf2c5(0x16)),PinInput=({onSubmit:_0x3ccd7b,minLength:minLength=0x8,requireSpecialChar:requireSpecialChar=!![],requireNumber:requireNumber=!![],onBack:_0x88d29e,enableBiometricStorage:enableBiometricStorage=!![],onBackgroundTrainingStart:_0x287362,showBackgroundProgress:showBackgroundProgress=![],backgroundProgressText:backgroundProgressText=_0xf2c5(0x17)})=>{const _0x590549={'KRgfC':function(_0x1e1705,_0x307ffd){return _0x1e1705(_0x307ffd);},'nDuaP':_0xf2c5(0x18),'DPSDD':function(_0x21ce51,_0x267645){return _0x21ce51!==_0x267645;},'PqBJf':_0xf2c5(0x19),'XzFxX':function(_0x36f7f4,_0x33e668){return _0x36f7f4===_0x33e668;},'MIWtu':_0xf2c5(0x1a),'nWofy':function(_0xea9c65,_0x5cc20b){return _0xea9c65(_0x5cc20b);},'sOnmC':function(_0x5ef15f){return _0x5ef15f();},'QyvTY':_0xf2c5(0x1b),'XTGSF':function(_0x56f577,_0xd6f4b0){return _0x56f577<_0xd6f4b0;},'ozJyf':_0xf2c5(0x1c),'hDIna':'aEQgY','KHmQl':'PIN\x20must\x20include\x20a\x20special\x20character','GAGnp':'ukFwD','lLblE':function(_0x159fe2,_0x4e63c9){return _0x159fe2(_0x4e63c9);},'YFLLl':function(_0x2a4a23,_0x2ce29b){return _0x2a4a23&&_0x2ce29b;},'ATjVX':function(_0x46d7b9,_0x33b86b){return _0x46d7b9(_0x33b86b);},'BAdTT':function(_0x3afb42){return _0x3afb42();},'NQNWS':function(_0x24cc5d,_0x594d2c){return _0x24cc5d<_0x594d2c;},'EXlUe':'PIN\x20must\x20include\x20a\x20number','dtvyg':'Biometric\x20Authentication\x20Not\x20Available','udMnB':_0xf2c5(0x1d),'oxRon':_0xf2c5(0x1e),'MSOSY':_0xf2c5(0x1f),'hmzPQ':'An\x20error\x20occurred\x20while\x20securing\x20your\x20PIN.\x20Would\x20you\x20like\x20to\x20try\x20again?','nbWXB':'error','zzWwT':_0xf2c5(0x20),'wFzqZ':_0xf2c5(0x21),'nzTbT':'Your\x20PIN\x20will\x20be\x20securely\x20stored\x20locally\x20on\x20your\x20device\x20using\x20biometric\x20authentication\x20(Face\x20ID\x20or\x20Touch\x20ID)\x20for\x20enhanced\x20security.','ihNXE':function(_0x4522a8,_0x47edcc){return _0x4522a8(_0x47edcc);},'agRQA':function(_0x239b5c,_0x5ae4ad){return _0x239b5c(_0x5ae4ad);},'ujBKg':_0xf2c5(0x22),'UaUCI':_0xf2c5(0x23),'UsDCn':_0xf2c5(0x24),'lgvne':_0xf2c5(0x25),'xVIte':_0xf2c5(0x26),'FHXds':function(_0x399913,_0x3b5c51){return _0x399913(_0x3b5c51);},'OijIC':function(_0x494db3,_0x24e144){return _0x494db3(_0x24e144);},'sPOAC':'xkkqe','uxgYB':function(_0x13adf0,_0x5aa202){return _0x13adf0(_0x5aa202);},'qfLJH':function(_0x195f19,_0x50501b){return _0x195f19(_0x50501b);},'dmyUj':_0xf2c5(0x27),'mPLBh':'bKUNg','KOdch':function(_0x57a37b,_0xafc99e){return _0x57a37b(_0xafc99e);},'lxXgd':function(_0x308cd3,_0x19e280){return _0x308cd3(_0x19e280);},'LhgNs':_0xf2c5(0x5),'gPqrs':function(_0x58ac18,_0x2ff2cd){return _0x58ac18(_0x2ff2cd);},'ipdYn':function(_0x6804c0,_0x7dbd70){return _0x6804c0&&_0x7dbd70;},'mBJsP':_0xf2c5(0x4),'nqaoF':function(_0x2b823c,_0x62223,_0x252818,_0x3709b2){return _0x2b823c(_0x62223,_0x252818,_0x3709b2);},'XEOyF':_0xf2c5(0x28),'MbMKk':function(_0x5f2ffc,_0x3b5682){return _0x5f2ffc(_0x3b5682);},'FGFBV':_0xf2c5(0x29),'dzGGK':_0xf2c5(0x2a),'vNqkO':_0xf2c5(0x2b),'vOicr':_0xf2c5(0x2c),'NirdY':_0xf2c5(0x2d),'tFBqI':'Secure\x20PIN\x20Storage','CSBNo':function(_0x46c9a3){return _0x46c9a3();},'VizYK':_0xf2c5(0x2e),'eEnxw':_0xf2c5(0x2f),'BCoRA':_0xf2c5(0x30),'MsypG':_0xf2c5(0x31),'KCNRE':_0xf2c5(0x32),'kkFQq':_0xf2c5(0x33),'UFStW':_0xf2c5(0x34),'cghjz':'👁️‍🗨️','FOyBI':_0xf2c5(0x35),'dxuUU':function(_0x2b774c,_0x6f0edc){return _0x2b774c>=_0x6f0edc;},'pxJlm':_0xf2c5(0x36),'thdWH':'\x20characters','oTpeS':_0xf2c5(0x37),'DoWeo':function(_0x2532c8,_0x15ef4a){return _0x2532c8===_0x15ef4a;},'tRogs':function(_0x3b6232,_0x977842){return _0x3b6232===_0x977842;},'ToocW':_0xf2c5(0x38),'MmMrb':function(_0x401507,_0x3e86d3){return _0x401507||_0x3e86d3;},'bVysB':function(_0x4d7042,_0x1cbc77){return _0x4d7042||_0x1cbc77;},'WuYrA':_0xf2c5(0x39)},[_0x447e55,_0x37df3f]=(0x0,_react[_0xf2c5(0x3a)])(''),[_0x2bf7a0,_0xdd784b]=(0x0,_react[_0xf2c5(0x3a)])(null),[_0x4d0c19,_0xb50ac4]=(0x0,_react[_0xf2c5(0x3a)])(![]),[_0x27c6e3,_0xfbcb0]=(0x0,_react[_0xf2c5(0x3a)])(![]),[_0x3028c4,_0x1638ed]=(0x0,_react[_0xf2c5(0x3a)])(_0xf2c5(0x5)),[_0x34a8a3,_0x491150]=(0x0,_react[_0xf2c5(0x3a)])(![]);_react[_0xf2c5(0x5)][_0xf2c5(0x3b)](()=>{const _0x1f9697={'GSNHY':function(_0x49dc7b,_0x466e1c){return _0x590549[_0xf2c5(0x3c)](_0x49dc7b,_0x466e1c);},'FRtmQ':_0x590549[_0xf2c5(0x3d)],'LpMOO':function(_0x55ed7e,_0x1de927){return _0x590549['DPSDD'](_0x55ed7e,_0x1de927);},'KhrnV':_0x590549[_0xf2c5(0x3e)],'vnavB':function(_0x51775e,_0x18bb10){return _0x51775e(_0x18bb10);}};_0x287362&&!_0x34a8a3&&showBackgroundProgress&&(_0x590549[_0xf2c5(0x3f)]('zroNt',_0x590549[_0xf2c5(0x40)])?(_0x534207[_0xf2c5(0x41)]('\uD83D\uDD10 [PIN INPUT] Biometric storage disabled, proceeding normally'),_0x1f9697['GSNHY'](_0x220b8d,_0x5d6934)):(console['log']('\uD83D\uDE80 [PIN INPUT] Background training explicitly requested...'),_0x590549[_0xf2c5(0x42)](_0x491150,!![]),_0x590549['sOnmC'](_0x287362)[_0xf2c5(0x43)](_0x1058ab=>{const _0x1d27ee={'TUKoU':function(_0x1b0119,_0x5f6ac0){return _0x1f9697['GSNHY'](_0x1b0119,_0x5f6ac0);},'eemvU':_0x1f9697[_0xf2c5(0x44)],'Tjrwb':function(_0x228295,_0x42d669){return _0x1f9697[_0xf2c5(0x45)](_0x228295,_0x42d669);}};_0x1f9697[_0xf2c5(0x46)](_0xf2c5(0x19),_0x1f9697[_0xf2c5(0x47)])?(_0x44863a['error']('\u274C [PIN INPUT] Error handling biometric PIN storage:',_0x2a26f7),_0x1d27ee[_0xf2c5(0x48)](_0x4a8851,_0x1d27ee['eemvU']),_0x1d27ee[_0xf2c5(0x49)](_0x53236d,![])):(console[_0xf2c5(0x4a)]('\u274C [PIN INPUT] Background training failed:',_0x1058ab),_0x1f9697[_0xf2c5(0x4b)](_0x491150,![]));})));},[_0x287362,_0x34a8a3,showBackgroundProgress]);const _0x4220d1=(0x0,_react[_0xf2c5(0x4c)])(_0x5e2628=>{if(_0x590549[_0xf2c5(0x4d)](_0x5e2628['length'],minLength)){if(_0x590549['DPSDD'](_0x590549[_0xf2c5(0x4e)],_0x590549[_0xf2c5(0x4f)]))return'PIN\x20must\x20be\x20at\x20least\x20'+minLength+_0xf2c5(0x15);else{_0x13bffc[_0xf2c5(0x41)]('\u274C [PIN INPUT] Validation failed:',_0x3ac991),_0x590549[_0xf2c5(0x42)](_0x2da2b9,_0x3e8e30);return;}}if(requireSpecialChar&&!/[!@#$%^&*(),.?":{}|<>]/['test'](_0x5e2628))return _0x590549['KHmQl'];if(requireNumber&&!/\d/[_0xf2c5(0x50)](_0x5e2628)){if(_0x590549['GAGnp']==='ukFwD')return'PIN\x20must\x20include\x20a\x20number';else{_0x2c9003['error']('\u274C [PIN INPUT] Face ID not available on this device'),_0x590549[_0xf2c5(0x42)](_0x396c49,_0x590549['QyvTY']),_0x590549[_0xf2c5(0x42)](_0x20ddd1,![]);return;}}return null;},[minLength,requireSpecialChar,requireNumber]),_0x3eae3a=(0x0,_react[_0xf2c5(0x4c)])(async()=>{const _0x1bae22={'HUOUs':function(_0x452c9a,_0x2ca7cc){return _0x590549[_0xf2c5(0x51)](_0x452c9a,_0x2ca7cc);},'MrorK':_0x590549[_0xf2c5(0x52)],'oSZRn':_0xf2c5(0x1b),'RaVYA':_0x590549[_0xf2c5(0x53)],'PNPaA':_0x590549[_0xf2c5(0x54)],'iKwJh':_0x590549[_0xf2c5(0x55)],'owNop':_0xf2c5(0x2c),'hMEFr':_0x590549[_0xf2c5(0x56)],'TVgDH':_0xf2c5(0x57),'rLtgD':_0x590549[_0xf2c5(0x58)],'uHsjY':_0x590549[_0xf2c5(0x59)],'vBgXW':_0x590549[_0xf2c5(0x5a)],'eAcMC':_0x590549[_0xf2c5(0x5b)],'ZfPLV':_0x590549[_0xf2c5(0x5c)]};console[_0xf2c5(0x41)]('\uD83D\uDD0D [PIN INPUT] handleSubmit called with PIN length:',_0x447e55[_0xf2c5(0x5d)]);const _0x24b3da=_0x590549['ihNXE'](_0x4220d1,_0x447e55);if(_0x24b3da){console[_0xf2c5(0x41)]('\u274C [PIN INPUT] Validation failed:',_0x24b3da),_0x590549[_0xf2c5(0x5e)](_0xdd784b,_0x24b3da);return;}console[_0xf2c5(0x41)]('\u2705 [PIN INPUT] PIN validation passed');if(enableBiometricStorage){if(_0x590549[_0xf2c5(0x5f)]!==_0x590549[_0xf2c5(0x5f)]){const _0xf37788={'KdvYE':function(_0x201dd6,_0x3bf399){return _0x590549[_0xf2c5(0x60)](_0x201dd6,_0x3bf399);}};_0x1a393d[_0xf2c5(0x41)]('\uD83D\uDE80 [PIN INPUT] Background training explicitly requested...'),_0x1cbed8(!![]),_0x590549[_0xf2c5(0x61)](_0x3cd6c8)[_0xf2c5(0x43)](_0x5ccdc4=>{_0x5416b9['error']('\u274C [PIN INPUT] Background training failed:',_0x5ccdc4),_0xf37788[_0xf2c5(0x62)](_0x3861ad,![]);});}else{console[_0xf2c5(0x41)]('\uD83D\uDD10 [PIN INPUT] Biometric storage enabled, starting biometric flow...'),_0x590549[_0xf2c5(0x63)](_0xfbcb0,!![]),_0x1638ed(_0x590549[_0xf2c5(0x64)]);try{if(_0x590549[_0xf2c5(0x3f)](_0x590549[_0xf2c5(0x65)],_0x590549[_0xf2c5(0x66)]))_0x590549[_0xf2c5(0x67)](_0x2d5528,!_0x25e3e8)&&_0x46facc&&(_0x589faa[_0xf2c5(0x41)]('\uD83D\uDE80 [PIN INPUT] Background training explicitly requested...'),_0x590549[_0xf2c5(0x68)](_0x119866,!![]),_0x590549[_0xf2c5(0x69)](_0x4cb77a)[_0xf2c5(0x43)](_0x518693=>{_0x7c14ed[_0xf2c5(0x4a)]('\u274C [PIN INPUT] Background training failed:',_0x518693),_0x4f1983(![]);}));else{const _0x3fa392=await _biometricPinService[_0xf2c5(0x6a)][_0xf2c5(0x6b)]();console['log']('\uD83D\uDCF1 [PIN INPUT] Biometric available:',_0x3fa392);if(!_0x3fa392){if(_0x590549[_0xf2c5(0x6c)](_0x590549['xVIte'],_0x590549[_0xf2c5(0x6d)])){if(_0x1bae22['HUOUs'](_0x147596[_0xf2c5(0x5d)],_0x316142))return _0xf2c5(0x14)+_0x370968+_0xf2c5(0x15);if(_0x5b2d40&&!/[!@#$%^&*(),.?":{}|<>]/['test'](_0xe62a27))return'PIN\x20must\x20include\x20a\x20special\x20character';if(_0x54a25a&&!/\d/[_0xf2c5(0x50)](_0x3877e3))return _0x1bae22[_0xf2c5(0x6e)];return null;}else{console[_0xf2c5(0x4a)]('\u274C [PIN INPUT] Face ID not available on this device'),_0x590549[_0xf2c5(0x60)](_0x1638ed,'biometric-unavailable'),_0x590549[_0xf2c5(0x60)](_0xfbcb0,![]);return;}}console[_0xf2c5(0x41)]('\uD83D\uDD10 [PIN INPUT] Triggering biometric authentication for PIN storage...');const _0xe3b177=await _biometricPinService[_0xf2c5(0x6a)][_0xf2c5(0x6f)](_0x447e55);if(_0xe3b177){console[_0xf2c5(0x41)]('\u2705 [PIN INPUT] PIN stored successfully with biometric protection');const _0x3edab1=await _biometricPinService['biometricPinService'][_0xf2c5(0x70)]();_0x3edab1?(console[_0xf2c5(0x41)]('\u2705 [PIN INPUT] PIN storage verified - proceeding with onboarding'),_0x590549[_0xf2c5(0x3c)](_0x3ccd7b,_0x447e55)):(console[_0xf2c5(0x4a)]('\u274C [PIN INPUT] PIN storage verification failed'),_0x590549[_0xf2c5(0x71)](_0x1638ed,_0xf2c5(0x18)),_0x590549[_0xf2c5(0x72)](_0xfbcb0,![]));}else{if(_0x590549[_0xf2c5(0x3f)](_0x590549[_0xf2c5(0x73)],'xkkqe'))console['warn']('\u26A0️ [PIN INPUT] Biometric authentication failed or was cancelled'),_0x590549[_0xf2c5(0x74)](_0x1638ed,_0x590549['oxRon']),_0x590549[_0xf2c5(0x75)](_0xfbcb0,![]);else{if(_0x2f3d76['has'](_0x2cc669))return _0x5f8bd4['get'](_0x565a67);_0x416172['set'](_0x377e2b,_0x298544);}}}}catch(_0x4d8a19){console['error']('\u274C [PIN INPUT] Error handling biometric PIN storage:',_0x4d8a19),_0x590549['KRgfC'](_0x1638ed,_0x590549['nDuaP']),_0xfbcb0(![]);}}}else{if(_0x590549[_0xf2c5(0x76)]!==_0x590549[_0xf2c5(0x77)])console[_0xf2c5(0x41)]('\uD83D\uDD10 [PIN INPUT] Biometric storage disabled, proceeding normally'),_0x590549[_0xf2c5(0x72)](_0x3ccd7b,_0x447e55);else switch(_0x3b1b8e){case _0x1bae22[_0xf2c5(0x78)]:return{'title':_0x1bae22[_0xf2c5(0x79)],'message':_0xf2c5(0x2b),'type':_0x1bae22[_0xf2c5(0x7a)],'showActions':!![]};case _0x1bae22[_0xf2c5(0x7b)]:return{'title':_0x1bae22[_0xf2c5(0x7c)],'message':_0x1bae22[_0xf2c5(0x7d)],'type':_0x1bae22[_0xf2c5(0x7a)],'showActions':!![]};case _0xf2c5(0x18):return{'title':_0x1bae22['TVgDH'],'message':_0x1bae22[_0xf2c5(0x7e)],'type':_0x1bae22[_0xf2c5(0x7f)],'showActions':!![]};case _0xf2c5(0x23):return{'title':_0x1bae22[_0xf2c5(0x80)],'message':'Please\x20complete\x20biometric\x20authentication\x20to\x20secure\x20your\x20PIN.','type':_0x1bae22[_0xf2c5(0x81)],'showActions':![]};default:return{'title':_0xf2c5(0x82),'message':_0x1bae22['ZfPLV'],'type':_0xf2c5(0x21),'showActions':![]};}}},[_0x447e55,_0x4220d1,_0x3ccd7b,enableBiometricStorage]),_0x26b5d9=(0x0,_react[_0xf2c5(0x4c)])(_0xb115c0=>{_0x590549['ATjVX'](_0x37df3f,_0xb115c0),_0x590549['KOdch'](_0xdd784b,null),_0x590549['lxXgd'](_0x1638ed,_0x590549['LhgNs']),console[_0xf2c5(0x41)]('\uD83D\uDD0D [PIN INPUT] PIN changed:',{'length':_0xb115c0[_0xf2c5(0x5d)],'hasSpecialChar':/[!@#$%^&*(),.?":{}|<>]/[_0xf2c5(0x50)](_0xb115c0),'hasNumber':/\d/[_0xf2c5(0x50)](_0xb115c0),'isValid':!_0x4220d1(_0xb115c0)});},[_0x4220d1]),_0x34cc89=(0x0,_react[_0xf2c5(0x4c)])(()=>{console[_0xf2c5(0x83)]('\u26A0️ [PIN INPUT] User chose to continue without biometric security'),_0x590549[_0xf2c5(0x84)](_0x3ccd7b,_0x447e55);},[_0x447e55,_0x3ccd7b]),_0x2883f3=(0x0,_react[_0xf2c5(0x4c)])(()=>{const _0x14c219={'nzwqp':function(_0x3e662c,_0xcdca17){return _0x590549['ipdYn'](_0x3e662c,_0xcdca17);},'psZMV':_0x590549[_0xf2c5(0x85)],'xeEJQ':function(_0x25aa4a,_0x368119){return _0x25aa4a!==_0x368119;},'dwNTB':function(_0x129926,_0x103db4,_0x23a344,_0x7d2541){return _0x590549[_0xf2c5(0x86)](_0x129926,_0x103db4,_0x23a344,_0x7d2541);}};if(_0x590549[_0xf2c5(0x6c)](_0x590549[_0xf2c5(0x87)],_0x590549[_0xf2c5(0x87)])){if(_0x14c219['nzwqp'](!_0x33028c,_0x5bd721)&&_0x12975f[_0xf2c5(0x0)])return _0x47b57f;var _0x9eaefe,_0x5d41b3,_0x31110d={'__proto__':null,'default':_0x13a6ba};if(null===_0x333277||_0x14c219['psZMV']!=typeof _0x13527c&&'function'!=typeof _0x48e1d3)return _0x31110d;if(_0x9eaefe=_0x14e026?_0x3a2e3c:_0x329c28){if(_0x9eaefe[_0xf2c5(0xc)](_0x289375))return _0x9eaefe[_0xf2c5(0x12)](_0x4c0306);_0x9eaefe[_0xf2c5(0xd)](_0x4e071d,_0x31110d);}for(const _0x5e7758 in _0x1ea41a)_0x14c219[_0xf2c5(0x88)](_0xf2c5(0x5),_0x5e7758)&&{}[_0xf2c5(0xf)][_0xf2c5(0x10)](_0x922b7,_0x5e7758)&&((_0x5d41b3=(_0x9eaefe=_0x332649[_0xf2c5(0x11)])&&_0x262d13['getOwnPropertyDescriptor'](_0x172f72,_0x5e7758))&&(_0x5d41b3[_0xf2c5(0x12)]||_0x5d41b3[_0xf2c5(0xd)])?_0x14c219[_0xf2c5(0x89)](_0x9eaefe,_0x31110d,_0x5e7758,_0x5d41b3):_0x31110d[_0x5e7758]=_0x34664e[_0x5e7758]);return _0x31110d;}else _0x1638ed(_0x590549[_0xf2c5(0x8a)]),_0x3eae3a();},[_0x3eae3a]),_0x4a4a9f=()=>{const _0x10edff={'GPray':function(_0x1f8de3,_0x49d87d){return _0x590549[_0xf2c5(0x8b)](_0x1f8de3,_0x49d87d);}};if(_0x590549[_0xf2c5(0x6c)](_0x590549[_0xf2c5(0x8c)],_0x590549[_0xf2c5(0x8d)]))switch(_0x3028c4){case _0x590549[_0xf2c5(0x8e)]:return{'title':_0x590549[_0xf2c5(0x53)],'message':_0x590549[_0xf2c5(0x8f)],'type':_0x590549[_0xf2c5(0x54)],'showActions':!![]};case _0x590549[_0xf2c5(0x55)]:return{'title':_0x590549[_0xf2c5(0x90)],'message':_0x590549['MSOSY'],'type':_0x590549[_0xf2c5(0x54)],'showActions':!![]};case _0xf2c5(0x18):return{'title':_0xf2c5(0x57),'message':_0x590549['hmzPQ'],'type':_0x590549[_0xf2c5(0x59)],'showActions':!![]};case _0x590549['UaUCI']:return{'title':_0x590549[_0xf2c5(0x5a)],'message':_0x590549[_0xf2c5(0x91)],'type':_0x590549[_0xf2c5(0x5b)],'showActions':![]};default:return{'title':_0x590549[_0xf2c5(0x92)],'message':_0x590549[_0xf2c5(0x5c)],'type':_0x590549[_0xf2c5(0x5b)],'showActions':![]};}else _0x347dd5['log']('\u2705 [PIN INPUT] PIN storage verified - proceeding with onboarding'),_0x10edff['GPray'](_0x327531,_0x486beb);},_0x54504d=_0x590549[_0xf2c5(0x93)](_0x4a4a9f);return _react[_0xf2c5(0x5)][_0xf2c5(0x94)](_reactNative[_0xf2c5(0x95)],{'style':styles[_0xf2c5(0x96)]},_react[_0xf2c5(0x5)][_0xf2c5(0x94)](_reactNative[_0xf2c5(0x95)],{'style':styles[_0xf2c5(0x97)]},_react[_0xf2c5(0x5)][_0xf2c5(0x94)](_reactNative[_0xf2c5(0x95)],{'style':styles[_0xf2c5(0x98)]},_0x88d29e&&_react[_0xf2c5(0x5)][_0xf2c5(0x94)](_reactNative[_0xf2c5(0x99)],{'style':styles['backButton'],'onPress':_0x88d29e},_react[_0xf2c5(0x5)][_0xf2c5(0x94)](_reactNative[_0xf2c5(0x9a)],{'style':{'fontSize':0x18}},'←')),_react[_0xf2c5(0x5)][_0xf2c5(0x94)](_reactNative[_0xf2c5(0x9a)],{'style':styles['title']},_0x590549[_0xf2c5(0x9b)])),_react[_0xf2c5(0x5)][_0xf2c5(0x94)](_reactNative[_0xf2c5(0x9a)],{'style':styles['subtitle']},_0x590549['eEnxw']),_0x590549[_0xf2c5(0x67)](showBackgroundProgress,_0x34a8a3)&&_react[_0xf2c5(0x5)][_0xf2c5(0x94)](_reactNative[_0xf2c5(0x95)],{'style':styles[_0xf2c5(0x9c)]},_react['default'][_0xf2c5(0x94)](_reactNative[_0xf2c5(0x9a)],{'style':styles[_0xf2c5(0x9d)]},backgroundProgressText),_react[_0xf2c5(0x5)][_0xf2c5(0x94)](_reactNative['View'],{'style':styles['backgroundProgressIndicator']},_react[_0xf2c5(0x5)][_0xf2c5(0x94)](_reactNative['ActivityIndicator'],{'size':_0x590549[_0xf2c5(0x9e)],'color':_0x590549[_0xf2c5(0x9f)]}))),_react['default'][_0xf2c5(0x94)](_reactNative[_0xf2c5(0x95)],{'style':styles[_0xf2c5(0xa0)]},_react['default'][_0xf2c5(0x94)](_reactNative[_0xf2c5(0xa1)],{'style':styles[_0xf2c5(0xa2)],'value':_0x447e55,'onChangeText':_0x26b5d9,'secureTextEntry':!_0x4d0c19,'placeholder':_0x590549['KCNRE'],'keyboardType':_0x590549[_0xf2c5(0x8a)],'maxLength':0x14,'autoCapitalize':_0x590549[_0xf2c5(0xa3)],'autoCorrect':![],'returnKeyType':_0xf2c5(0xa4),'onSubmitEditing':()=>_reactNative[_0xf2c5(0xa5)]['dismiss']()}),_react['default'][_0xf2c5(0x94)](_reactNative[_0xf2c5(0x99)],{'style':styles[_0xf2c5(0xa6)],'onPress':()=>_0xb50ac4(!_0x4d0c19)},_react[_0xf2c5(0x5)]['createElement'](_reactNative['Text'],null,_0x4d0c19?_0x590549[_0xf2c5(0xa7)]:_0x590549[_0xf2c5(0xa8)])))),_0x2bf7a0&&_react[_0xf2c5(0x5)][_0xf2c5(0x94)](_reactNative[_0xf2c5(0x9a)],{'style':styles[_0xf2c5(0x4a)]},_0x2bf7a0),_react[_0xf2c5(0x5)]['createElement'](_reactNative[_0xf2c5(0x95)],{'style':styles['requirements']},_react[_0xf2c5(0x5)][_0xf2c5(0x94)](_reactNative['Text'],{'style':styles[_0xf2c5(0xa9)]},_0x590549[_0xf2c5(0xaa)]),_react[_0xf2c5(0x5)][_0xf2c5(0x94)](_reactNative['Text'],{'style':[styles[_0xf2c5(0xab)],_0x590549[_0xf2c5(0xac)](_0x447e55[_0xf2c5(0x5d)],minLength)&&styles['requirementMet']]},_0x590549[_0xf2c5(0xad)],minLength,_0x590549[_0xf2c5(0xae)]),requireSpecialChar&&_react['default'][_0xf2c5(0x94)](_reactNative['Text'],{'style':[styles['requirement'],/[!@#$%^&*(),.?":{}|<>]/[_0xf2c5(0x50)](_0x447e55)&&styles[_0xf2c5(0xaf)]]},_0x590549[_0xf2c5(0xb0)]),requireNumber&&_react[_0xf2c5(0x5)]['createElement'](_reactNative[_0xf2c5(0x9a)],{'style':[styles[_0xf2c5(0xab)],/\d/[_0xf2c5(0x50)](_0x447e55)&&styles[_0xf2c5(0xaf)]]},'•\x20Include\x20a\x20number')),_react['default'][_0xf2c5(0x94)](_reactNative[_0xf2c5(0x95)],{'style':[styles[_0xf2c5(0xb1)],_0x54504d[_0xf2c5(0xb2)]===_0xf2c5(0x21)&&styles[_0xf2c5(0xb3)],_0x590549[_0xf2c5(0xb4)](_0x54504d['type'],_0xf2c5(0x1d))&&styles[_0xf2c5(0xb5)],_0x590549['DoWeo'](_0x54504d[_0xf2c5(0xb2)],_0x590549['nbWXB'])&&styles[_0xf2c5(0xb6)]]},_react[_0xf2c5(0x5)][_0xf2c5(0x94)](_reactNative[_0xf2c5(0x9a)],{'style':[styles[_0xf2c5(0xb7)],_0x54504d['type']===_0x590549[_0xf2c5(0x5b)]&&styles[_0xf2c5(0xb8)],_0x54504d[_0xf2c5(0xb2)]===_0x590549['udMnB']&&styles[_0xf2c5(0xb9)],_0x590549[_0xf2c5(0xba)](_0x54504d[_0xf2c5(0xb2)],_0x590549[_0xf2c5(0x59)])&&styles[_0xf2c5(0xbb)]]},_0x54504d[_0xf2c5(0xbc)]),_react[_0xf2c5(0x5)][_0xf2c5(0x94)](_reactNative[_0xf2c5(0x9a)],{'style':[styles['infoMessage'],_0x54504d[_0xf2c5(0xb2)]==='info'&&styles[_0xf2c5(0xbd)],_0x590549['XzFxX'](_0x54504d[_0xf2c5(0xb2)],_0x590549[_0xf2c5(0x54)])&&styles[_0xf2c5(0xbe)],_0x590549['tRogs'](_0x54504d[_0xf2c5(0xb2)],_0x590549[_0xf2c5(0x59)])&&styles[_0xf2c5(0xbf)]]},_0x54504d[_0xf2c5(0xc0)]),_0x54504d[_0xf2c5(0xc1)]&&_react[_0xf2c5(0x5)][_0xf2c5(0x94)](_reactNative[_0xf2c5(0x95)],{'style':styles['infoActions']},_react[_0xf2c5(0x5)][_0xf2c5(0x94)](_reactNative[_0xf2c5(0x99)],{'style':styles[_0xf2c5(0xc2)],'onPress':_0x2883f3},_react[_0xf2c5(0x5)][_0xf2c5(0x94)](_reactNative['Text'],{'style':styles[_0xf2c5(0xc3)]},_0x590549['ToocW'])),_react[_0xf2c5(0x5)][_0xf2c5(0x94)](_reactNative[_0xf2c5(0x99)],{'style':[styles[_0xf2c5(0xc2)],styles[_0xf2c5(0xc4)]],'onPress':_0x34cc89},_react[_0xf2c5(0x5)][_0xf2c5(0x94)](_reactNative['Text'],{'style':[styles[_0xf2c5(0xc3)],styles[_0xf2c5(0xc5)]]},_0xf2c5(0xc6))))),_react[_0xf2c5(0x5)][_0xf2c5(0x94)](_reactNative[_0xf2c5(0x95)],{'style':styles['footer']},_0x88d29e&&_react['default'][_0xf2c5(0x94)](_reactNative[_0xf2c5(0x99)],{'style':styles[_0xf2c5(0xc7)],'onPress':_0x88d29e},_react[_0xf2c5(0x5)][_0xf2c5(0x94)](_reactNative['Text'],{'style':styles[_0xf2c5(0xc8)]},_0xf2c5(0xc9))),_react[_0xf2c5(0x5)][_0xf2c5(0x94)](_reactNative[_0xf2c5(0x99)],{'style':[styles[_0xf2c5(0xca)],(_0x590549['MmMrb'](!_0x447e55,_0x27c6e3)||_0x590549[_0xf2c5(0xcb)](_0x4220d1,_0x447e55))&&styles[_0xf2c5(0xcc)]],'onPress':_0x3eae3a,'disabled':_0x590549[_0xf2c5(0xcd)](!_0x447e55,_0x27c6e3)||!!_0x4220d1(_0x447e55)},_react['default'][_0xf2c5(0x94)](_reactNative[_0xf2c5(0x9a)],{'style':styles[_0xf2c5(0xce)]},_0x27c6e3?_0x590549[_0xf2c5(0x5a)]:_0x590549['WuYrA']))));};exports['PinInput']=PinInput;const styles=_reactNative[_0xf2c5(0xcf)][_0xf2c5(0xd0)]({'container':{'flex':0x1,'padding':0x10,'width':width,'backgroundColor':_0xf2c5(0xd1),'justifyContent':'flex-start'},'inputSection':{'width':'100%','marginTop':0x0,'paddingTop':0x0},'header':{'flexDirection':_0xf2c5(0xd2),'alignItems':_0xf2c5(0xd3),'justifyContent':_0xf2c5(0xd4),'marginBottom':0x10,'paddingVertical':0x8},'backButton':{'padding':0x8},'title':{'fontSize':0x14,'fontWeight':_0xf2c5(0xd5),'color':_0xf2c5(0xd6),'textAlign':_0xf2c5(0xd3),'flex':0x1,'marginBottom':0x8},'subtitle':{'fontSize':0xe,'color':_0xf2c5(0xd7),'marginBottom':0x18,'textAlign':_0xf2c5(0xd3)},'inputContainer':{'flexDirection':_0xf2c5(0xd2),'alignItems':_0xf2c5(0xd3),'borderWidth':0x1,'borderColor':_0xf2c5(0xd8),'borderRadius':0x8,'marginBottom':0x10},'input':{'flex':0x1,'padding':0xc,'fontSize':0x10},'visibilityButton':{'padding':0xc},'infoContainer':{'padding':0x10,'borderRadius':0xc,'marginBottom':0x10,'borderWidth':0x1},'infoContainerInfo':{'backgroundColor':_0xf2c5(0xd9),'borderColor':_0xf2c5(0xda)},'infoContainerWarning':{'backgroundColor':_0xf2c5(0xdb),'borderColor':_0xf2c5(0xdc)},'infoContainerError':{'backgroundColor':'#FFEBEE','borderColor':_0xf2c5(0xdd)},'infoTitle':{'fontSize':0x10,'fontWeight':_0xf2c5(0xd5),'marginBottom':0x8},'infoTitleInfo':{'color':_0xf2c5(0xde)},'infoTitleWarning':{'color':_0xf2c5(0xdf)},'infoTitleError':{'color':_0xf2c5(0xe0)},'infoMessage':{'fontSize':0xe,'lineHeight':0x14,'marginBottom':0xc},'infoMessageInfo':{'color':_0xf2c5(0xe1)},'infoMessageWarning':{'color':'#E65100'},'infoMessageError':{'color':'#C62828'},'infoActions':{'flexDirection':_0xf2c5(0xd2),'justifyContent':_0xf2c5(0xd4),'marginTop':0x8},'infoActionButton':{'flex':0x1,'paddingVertical':0xa,'paddingHorizontal':0x10,'borderRadius':0x8,'backgroundColor':_0xf2c5(0x31),'marginHorizontal':0x4,'alignItems':_0xf2c5(0xd3)},'infoActionButtonSecondary':{'backgroundColor':_0xf2c5(0xe2),'borderWidth':0x1,'borderColor':_0xf2c5(0x31)},'infoActionButtonText':{'color':_0xf2c5(0xd1),'fontSize':0xe,'fontWeight':_0xf2c5(0xd5)},'infoActionButtonSecondaryText':{'color':_0xf2c5(0x31)},'error':{'color':_0xf2c5(0xe3),'marginBottom':0x10},'requirements':{'marginBottom':0x18},'requirementTitle':{'fontSize':0xe,'fontWeight':_0xf2c5(0xd5),'marginBottom':0x8,'color':_0xf2c5(0xd6)},'requirement':{'fontSize':0xe,'color':_0xf2c5(0xd7),'marginBottom':0x4},'requirementMet':{'color':'#34C759'},'footer':{'flexDirection':_0xf2c5(0xd2),'alignItems':_0xf2c5(0xd3),'justifyContent':_0xf2c5(0xd4),'marginTop':0x18,'borderTopWidth':0x1,'borderTopColor':'#eee','paddingTop':0x10},'cancelButton':{'paddingVertical':0x8,'paddingHorizontal':0x10},'cancelButtonText':{'color':_0xf2c5(0xd7),'fontSize':0x10},'submitButton':{'paddingVertical':0x10,'paddingHorizontal':0x20,'borderRadius':0x10,'backgroundColor':'#000000','alignItems':_0xf2c5(0xd3)},'submitButtonDisabled':{'opacity':0.5},'submitButtonText':{'color':'#fff','fontSize':0x10,'fontWeight':'600'},'backgroundProgressContainer':{'flexDirection':'row','alignItems':'center','justifyContent':_0xf2c5(0xd3),'marginBottom':0x10},'backgroundProgressText':{'fontSize':0xe,'color':_0xf2c5(0xd7),'marginRight':0xa},'backgroundProgressIndicator':{'padding':0x5}});
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.PinInput = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _reactNative = require("react-native");
9
+ var _biometricPinService = require("../services/biometricPinService");
10
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
11
+ const {
12
+ width
13
+ } = _reactNative.Dimensions.get('window');
14
+ const PinInput = ({
15
+ onSubmit,
16
+ minLength = 8,
17
+ requireSpecialChar = true,
18
+ requireNumber = true,
19
+ onBack,
20
+ enableBiometricStorage = true,
21
+ // ✅ NEW: Background training optimization props
22
+ onBackgroundTrainingStart,
23
+ showBackgroundProgress = false,
24
+ backgroundProgressText = "Training is starting in the background..."
25
+ }) => {
26
+ const [pin, setPin] = (0, _react.useState)('');
27
+ const [error, setError] = (0, _react.useState)(null);
28
+ const [showPin, setShowPin] = (0, _react.useState)(false);
29
+ const [isStoringPin, setIsStoringPin] = (0, _react.useState)(false);
30
+ const [infoStatus, setInfoStatus] = (0, _react.useState)('default');
31
+ // ✅ NEW: Background training state
32
+ const [isBackgroundTrainingStarted, setIsBackgroundTrainingStarted] = (0, _react.useState)(false);
33
+
34
+ // ✅ UPDATED: Make background training conditional, not automatic on mount
35
+ _react.default.useEffect(() => {
36
+ // Only start background training if explicitly requested and not already started
37
+ // This prevents automatic training on component mount
38
+ if (onBackgroundTrainingStart && !isBackgroundTrainingStarted && showBackgroundProgress) {
39
+ console.log('🚀 [PIN INPUT] Background training explicitly requested...');
40
+ setIsBackgroundTrainingStarted(true);
41
+ onBackgroundTrainingStart().catch(error => {
42
+ console.error('❌ [PIN INPUT] Background training failed:', error);
43
+ setIsBackgroundTrainingStarted(false);
44
+ });
45
+ }
46
+ }, [onBackgroundTrainingStart, isBackgroundTrainingStarted, showBackgroundProgress]);
47
+ const validatePin = (0, _react.useCallback)(value => {
48
+ if (value.length < minLength) {
49
+ return `PIN must be at least ${minLength} characters`;
50
+ }
51
+ if (requireSpecialChar && !/[!@#$%^&*(),.?":{}|<>]/.test(value)) {
52
+ return 'PIN must include a special character';
53
+ }
54
+ if (requireNumber && !/\d/.test(value)) {
55
+ return 'PIN must include a number';
56
+ }
57
+ return null;
58
+ }, [minLength, requireSpecialChar, requireNumber]);
59
+ const handleSubmit = (0, _react.useCallback)(async () => {
60
+ console.log('🔍 [PIN INPUT] handleSubmit called with PIN length:', pin.length);
61
+ const validationError = validatePin(pin);
62
+ if (validationError) {
63
+ console.log('❌ [PIN INPUT] Validation failed:', validationError);
64
+ setError(validationError);
65
+ return;
66
+ }
67
+ console.log('✅ [PIN INPUT] PIN validation passed');
68
+
69
+ // If biometric storage is enabled, store PIN securely
70
+ if (enableBiometricStorage) {
71
+ console.log('🔐 [PIN INPUT] Biometric storage enabled, starting biometric flow...');
72
+ setIsStoringPin(true);
73
+ setInfoStatus('authenticating');
74
+ try {
75
+ // Check if biometric is available
76
+ const biometricAvailable = await _biometricPinService.biometricPinService.isBiometricAvailable();
77
+ console.log('📱 [PIN INPUT] Biometric available:', biometricAvailable);
78
+ if (!biometricAvailable) {
79
+ console.error('❌ [PIN INPUT] Face ID not available on this device');
80
+ setInfoStatus('biometric-unavailable');
81
+ setIsStoringPin(false);
82
+ return;
83
+ }
84
+
85
+ // Immediately attempt to store PIN with biometric authentication
86
+ console.log('🔐 [PIN INPUT] Triggering biometric authentication for PIN storage...');
87
+ const stored = await _biometricPinService.biometricPinService.storePinWithBiometric(pin);
88
+ if (stored) {
89
+ console.log('✅ [PIN INPUT] PIN stored successfully with biometric protection');
90
+
91
+ // Verify the PIN was actually stored by checking if it can be retrieved
92
+ const isStored = await _biometricPinService.biometricPinService.isPinStored();
93
+ if (isStored) {
94
+ console.log('✅ [PIN INPUT] PIN storage verified - proceeding with onboarding');
95
+ onSubmit(pin);
96
+ } else {
97
+ console.error('❌ [PIN INPUT] PIN storage verification failed');
98
+ setInfoStatus('storage-error');
99
+ setIsStoringPin(false);
100
+ }
101
+ } else {
102
+ // Biometric authentication was cancelled or failed
103
+ console.warn('⚠️ [PIN INPUT] Biometric authentication failed or was cancelled');
104
+ setInfoStatus('biometric-failed');
105
+ setIsStoringPin(false);
106
+ }
107
+ } catch (error) {
108
+ console.error('❌ [PIN INPUT] Error handling biometric PIN storage:', error);
109
+ setInfoStatus('storage-error');
110
+ setIsStoringPin(false);
111
+ }
112
+ } else {
113
+ // Biometric storage disabled, proceed normally
114
+ console.log('🔐 [PIN INPUT] Biometric storage disabled, proceeding normally');
115
+ onSubmit(pin);
116
+ }
117
+ }, [pin, validatePin, onSubmit, enableBiometricStorage]);
118
+ const handlePinChange = (0, _react.useCallback)(value => {
119
+ setPin(value);
120
+ setError(null);
121
+ setInfoStatus('default');
122
+
123
+ // Debug logging to help troubleshoot
124
+ console.log('🔍 [PIN INPUT] PIN changed:', {
125
+ length: value.length,
126
+ hasSpecialChar: /[!@#$%^&*(),.?":{}|<>]/.test(value),
127
+ hasNumber: /\d/.test(value),
128
+ isValid: !validatePin(value)
129
+ });
130
+ }, [validatePin]);
131
+ const handleContinueWithoutBiometric = (0, _react.useCallback)(() => {
132
+ console.warn('⚠️ [PIN INPUT] User chose to continue without biometric security');
133
+ onSubmit(pin);
134
+ }, [pin, onSubmit]);
135
+ const handleRetry = (0, _react.useCallback)(() => {
136
+ setInfoStatus('default');
137
+ handleSubmit();
138
+ }, [handleSubmit]);
139
+ const getInfoMessage = () => {
140
+ switch (infoStatus) {
141
+ case 'biometric-unavailable':
142
+ return {
143
+ title: 'Biometric Authentication Not Available',
144
+ message: 'This device does not support Face ID or Touch ID. Please enable biometric authentication in your device settings to secure your PIN.',
145
+ type: 'warning',
146
+ showActions: true
147
+ };
148
+ case 'biometric-failed':
149
+ return {
150
+ title: 'Biometric Authentication Failed',
151
+ message: 'Biometric authentication was cancelled or failed. Your PIN needs to be secured with biometric authentication to proceed.',
152
+ type: 'warning',
153
+ showActions: true
154
+ };
155
+ case 'storage-error':
156
+ return {
157
+ title: 'Storage Error',
158
+ message: 'An error occurred while securing your PIN. Would you like to try again?',
159
+ type: 'error',
160
+ showActions: true
161
+ };
162
+ case 'authenticating':
163
+ return {
164
+ title: 'Authenticating...',
165
+ message: 'Please complete biometric authentication to secure your PIN.',
166
+ type: 'info',
167
+ showActions: false
168
+ };
169
+ default:
170
+ return {
171
+ title: 'Secure PIN Storage',
172
+ message: 'Your PIN will be securely stored locally on your device using biometric authentication (Face ID or Touch ID) for enhanced security.',
173
+ type: 'info',
174
+ showActions: false
175
+ };
176
+ }
177
+ };
178
+ const infoMessage = getInfoMessage();
179
+ return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
180
+ style: styles.container
181
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
182
+ style: styles.inputSection
183
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
184
+ style: styles.header
185
+ }, onBack && /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
186
+ style: styles.backButton,
187
+ onPress: onBack
188
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
189
+ style: {
190
+ fontSize: 24
191
+ }
192
+ }, "\u2190")), /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
193
+ style: styles.title
194
+ }, "Create a PIN")), /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
195
+ style: styles.subtitle
196
+ }, "A PIN so only you have access to your data"), showBackgroundProgress && isBackgroundTrainingStarted && /*#__PURE__*/_react.default.createElement(_reactNative.View, {
197
+ style: styles.backgroundProgressContainer
198
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
199
+ style: styles.backgroundProgressText
200
+ }, backgroundProgressText), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
201
+ style: styles.backgroundProgressIndicator
202
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.ActivityIndicator, {
203
+ size: "small",
204
+ color: "#007AFF"
205
+ }))), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
206
+ style: styles.inputContainer
207
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.TextInput, {
208
+ style: styles.input,
209
+ value: pin,
210
+ onChangeText: handlePinChange,
211
+ secureTextEntry: !showPin,
212
+ placeholder: "e.g. MyPin123!",
213
+ keyboardType: "default",
214
+ maxLength: 20,
215
+ autoCapitalize: "none",
216
+ autoCorrect: false,
217
+ returnKeyType: "done",
218
+ onSubmitEditing: () => _reactNative.Keyboard.dismiss()
219
+ }), /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
220
+ style: styles.visibilityButton,
221
+ onPress: () => setShowPin(!showPin)
222
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.Text, null, showPin ? '👁️' : '👁️‍🗨️')))), error && /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
223
+ style: styles.error
224
+ }, error), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
225
+ style: styles.requirements
226
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
227
+ style: styles.requirementTitle
228
+ }, "PIN Requirements:"), /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
229
+ style: [styles.requirement, pin.length >= minLength && styles.requirementMet]
230
+ }, "\u2022 At least ", minLength, " characters"), requireSpecialChar && /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
231
+ style: [styles.requirement, /[!@#$%^&*(),.?":{}|<>]/.test(pin) && styles.requirementMet]
232
+ }, "\u2022 Include a special character"), requireNumber && /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
233
+ style: [styles.requirement, /\d/.test(pin) && styles.requirementMet]
234
+ }, "\u2022 Include a number")), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
235
+ style: [styles.infoContainer, infoMessage.type === 'info' && styles.infoContainerInfo, infoMessage.type === 'warning' && styles.infoContainerWarning, infoMessage.type === 'error' && styles.infoContainerError]
236
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
237
+ style: [styles.infoTitle, infoMessage.type === 'info' && styles.infoTitleInfo, infoMessage.type === 'warning' && styles.infoTitleWarning, infoMessage.type === 'error' && styles.infoTitleError]
238
+ }, infoMessage.title), /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
239
+ style: [styles.infoMessage, infoMessage.type === 'info' && styles.infoMessageInfo, infoMessage.type === 'warning' && styles.infoMessageWarning, infoMessage.type === 'error' && styles.infoMessageError]
240
+ }, infoMessage.message), infoMessage.showActions && /*#__PURE__*/_react.default.createElement(_reactNative.View, {
241
+ style: styles.infoActions
242
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
243
+ style: styles.infoActionButton,
244
+ onPress: handleRetry
245
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
246
+ style: styles.infoActionButtonText
247
+ }, "Try Again")), /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
248
+ style: [styles.infoActionButton, styles.infoActionButtonSecondary],
249
+ onPress: handleContinueWithoutBiometric
250
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
251
+ style: [styles.infoActionButtonText, styles.infoActionButtonSecondaryText]
252
+ }, "Continue Without Biometric")))), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
253
+ style: styles.footer
254
+ }, onBack && /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
255
+ style: styles.cancelButton,
256
+ onPress: onBack
257
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
258
+ style: styles.cancelButtonText
259
+ }, "Back")), /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
260
+ style: [styles.submitButton, (!pin || isStoringPin || validatePin(pin)) && styles.submitButtonDisabled],
261
+ onPress: handleSubmit,
262
+ disabled: !pin || isStoringPin || !!validatePin(pin)
263
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
264
+ style: styles.submitButtonText
265
+ }, isStoringPin ? 'Authenticating...' : 'Continue'))));
266
+ };
267
+ exports.PinInput = PinInput;
268
+ const styles = _reactNative.StyleSheet.create({
269
+ container: {
270
+ flex: 1,
271
+ padding: 16,
272
+ width: width,
273
+ backgroundColor: '#fff',
274
+ justifyContent: 'flex-start'
275
+ },
276
+ inputSection: {
277
+ width: '100%',
278
+ marginTop: 0,
279
+ paddingTop: 0
280
+ },
281
+ header: {
282
+ flexDirection: 'row',
283
+ alignItems: 'center',
284
+ justifyContent: 'space-between',
285
+ marginBottom: 16,
286
+ paddingVertical: 8
287
+ },
288
+ backButton: {
289
+ padding: 8
290
+ },
291
+ title: {
292
+ fontSize: 20,
293
+ fontWeight: '600',
294
+ color: '#333',
295
+ textAlign: 'center',
296
+ flex: 1,
297
+ marginBottom: 8
298
+ },
299
+ subtitle: {
300
+ fontSize: 14,
301
+ color: '#666',
302
+ marginBottom: 24,
303
+ textAlign: 'center'
304
+ },
305
+ inputContainer: {
306
+ flexDirection: 'row',
307
+ alignItems: 'center',
308
+ borderWidth: 1,
309
+ borderColor: '#CCCCCC',
310
+ borderRadius: 8,
311
+ marginBottom: 16
312
+ },
313
+ input: {
314
+ flex: 1,
315
+ padding: 12,
316
+ fontSize: 16
317
+ },
318
+ visibilityButton: {
319
+ padding: 12
320
+ },
321
+ // Info Container Styles
322
+ infoContainer: {
323
+ padding: 16,
324
+ borderRadius: 12,
325
+ marginBottom: 16,
326
+ borderWidth: 1
327
+ },
328
+ infoContainerInfo: {
329
+ backgroundColor: '#E3F2FD',
330
+ borderColor: '#2196F3'
331
+ },
332
+ infoContainerWarning: {
333
+ backgroundColor: '#FFF3E0',
334
+ borderColor: '#FF9800'
335
+ },
336
+ infoContainerError: {
337
+ backgroundColor: '#FFEBEE',
338
+ borderColor: '#F44336'
339
+ },
340
+ infoTitle: {
341
+ fontSize: 16,
342
+ fontWeight: '600',
343
+ marginBottom: 8
344
+ },
345
+ infoTitleInfo: {
346
+ color: '#1976D2'
347
+ },
348
+ infoTitleWarning: {
349
+ color: '#F57C00'
350
+ },
351
+ infoTitleError: {
352
+ color: '#D32F2F'
353
+ },
354
+ infoMessage: {
355
+ fontSize: 14,
356
+ lineHeight: 20,
357
+ marginBottom: 12
358
+ },
359
+ infoMessageInfo: {
360
+ color: '#1565C0'
361
+ },
362
+ infoMessageWarning: {
363
+ color: '#E65100'
364
+ },
365
+ infoMessageError: {
366
+ color: '#C62828'
367
+ },
368
+ infoActions: {
369
+ flexDirection: 'row',
370
+ justifyContent: 'space-between',
371
+ marginTop: 8
372
+ },
373
+ infoActionButton: {
374
+ flex: 1,
375
+ paddingVertical: 10,
376
+ paddingHorizontal: 16,
377
+ borderRadius: 8,
378
+ backgroundColor: '#007AFF',
379
+ marginHorizontal: 4,
380
+ alignItems: 'center'
381
+ },
382
+ infoActionButtonSecondary: {
383
+ backgroundColor: 'transparent',
384
+ borderWidth: 1,
385
+ borderColor: '#007AFF'
386
+ },
387
+ infoActionButtonText: {
388
+ color: '#fff',
389
+ fontSize: 14,
390
+ fontWeight: '600'
391
+ },
392
+ infoActionButtonSecondaryText: {
393
+ color: '#007AFF'
394
+ },
395
+ error: {
396
+ color: '#FF3B30',
397
+ marginBottom: 16
398
+ },
399
+ requirements: {
400
+ marginBottom: 24
401
+ },
402
+ requirementTitle: {
403
+ fontSize: 14,
404
+ fontWeight: '600',
405
+ marginBottom: 8,
406
+ color: '#333'
407
+ },
408
+ requirement: {
409
+ fontSize: 14,
410
+ color: '#666',
411
+ marginBottom: 4
412
+ },
413
+ requirementMet: {
414
+ color: '#34C759'
415
+ },
416
+ footer: {
417
+ flexDirection: 'row',
418
+ alignItems: 'center',
419
+ justifyContent: 'space-between',
420
+ marginTop: 24,
421
+ borderTopWidth: 1,
422
+ borderTopColor: '#eee',
423
+ paddingTop: 16
424
+ },
425
+ cancelButton: {
426
+ paddingVertical: 8,
427
+ paddingHorizontal: 16
428
+ },
429
+ cancelButtonText: {
430
+ color: '#666',
431
+ fontSize: 16
432
+ },
433
+ submitButton: {
434
+ paddingVertical: 16,
435
+ paddingHorizontal: 32,
436
+ borderRadius: 16,
437
+ backgroundColor: '#000000',
438
+ alignItems: 'center'
439
+ },
440
+ submitButtonDisabled: {
441
+ opacity: 0.5
442
+ },
443
+ submitButtonText: {
444
+ color: '#fff',
445
+ fontSize: 16,
446
+ fontWeight: '600'
447
+ },
448
+ // ✅ NEW: Background training progress styles
449
+ backgroundProgressContainer: {
450
+ flexDirection: 'row',
451
+ alignItems: 'center',
452
+ justifyContent: 'center',
453
+ marginBottom: 16
454
+ },
455
+ backgroundProgressText: {
456
+ fontSize: 14,
457
+ color: '#666',
458
+ marginRight: 10
459
+ },
460
+ backgroundProgressIndicator: {
461
+ padding: 5
462
+ }
463
+ });
464
+ //# sourceMappingURL=PinInput.js.map