@onairos/react-native 3.7.2 → 3.7.4

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 (237) hide show
  1. package/lib/commonjs/api/index.js +219 -9
  2. package/lib/commonjs/components/BodyText.js +27 -9
  3. package/lib/commonjs/components/BrandMark.js +111 -10
  4. package/lib/commonjs/components/CodeInput.js +120 -9
  5. package/lib/commonjs/components/EmailInput.js +30 -8
  6. package/lib/commonjs/components/GoogleButton.js +56 -9
  7. package/lib/commonjs/components/HeadingGroup.js +43 -9
  8. package/lib/commonjs/components/LLMDataInputModal.js +664 -14
  9. package/lib/commonjs/components/ModalHeader.js +99 -9
  10. package/lib/commonjs/components/ModalSheet.js +47 -9
  11. package/lib/commonjs/components/Onairos.js +380 -14
  12. package/lib/commonjs/components/OnairosButton.js +313 -13
  13. package/lib/commonjs/components/OnairosSignInButton.js +130 -12
  14. package/lib/commonjs/components/Overlay.js +465 -13
  15. package/lib/commonjs/components/PersonaImage.js +137 -10
  16. package/lib/commonjs/components/PersonaLoadingScreen.js +318 -12
  17. package/lib/commonjs/components/PersonalizationConsentScreen.js +467 -13
  18. package/lib/commonjs/components/PinCreationScreen.js +403 -12
  19. package/lib/commonjs/components/PinInput.js +464 -9
  20. package/lib/commonjs/components/PlatformConnectorsStep.js +1311 -23
  21. package/lib/commonjs/components/PlatformList.js +137 -10
  22. package/lib/commonjs/components/PlatformToggle.js +180 -9
  23. package/lib/commonjs/components/PrimaryButton.js +180 -10
  24. package/lib/commonjs/components/SignInMatchAnimation.js +197 -9
  25. package/lib/commonjs/components/SignInStep.js +345 -12
  26. package/lib/commonjs/components/UniversalOnboarding.js +2780 -30
  27. package/lib/commonjs/components/VerificationStep.js +176 -11
  28. package/lib/commonjs/components/WelcomeScreen.js +461 -22
  29. package/lib/commonjs/components/icons/Basicproficon.js +37 -8
  30. package/lib/commonjs/components/icons/Basicprofile.js +21 -8
  31. package/lib/commonjs/components/icons/Checkbox.js +21 -8
  32. package/lib/commonjs/components/icons/Checkmark.js +27 -8
  33. package/lib/commonjs/components/icons/Contentanalysis.js +21 -8
  34. package/lib/commonjs/components/icons/Contenticon.js +39 -8
  35. package/lib/commonjs/components/icons/EnochE.js +41 -8
  36. package/lib/commonjs/components/icons/Personalityicon.js +30 -8
  37. package/lib/commonjs/components/icons/Personalityprofile.js +21 -8
  38. package/lib/commonjs/components/icons/Personalitytraits.js +21 -8
  39. package/lib/commonjs/components/icons/Userpreferences.js +21 -8
  40. package/lib/commonjs/components/icons/index.js +84 -17
  41. package/lib/commonjs/components/onboarding/OAuthWebView.js +1754 -18
  42. package/lib/commonjs/components/onboarding/OnboardingHeader.js +74 -10
  43. package/lib/commonjs/components/onboarding/PinInput.js +283 -10
  44. package/lib/commonjs/components/onboarding/PlatformConnector.js +249 -11
  45. package/lib/commonjs/config/PLATFORM_APIS.md +849 -0
  46. package/lib/commonjs/config/api.js +56 -7
  47. package/lib/commonjs/constants/index.js +120 -7
  48. package/lib/commonjs/context/AuthContext.js +345 -10
  49. package/lib/commonjs/hooks/useConnectedAccounts.js +111 -9
  50. package/lib/commonjs/hooks/useConnections.js +102 -8
  51. package/lib/commonjs/hooks/useCredentials.js +178 -10
  52. package/lib/commonjs/hooks/useUserConnections.js +148 -10
  53. package/lib/commonjs/index.js +439 -34
  54. package/lib/commonjs/services/apiClient.js +298 -8
  55. package/lib/commonjs/services/biometricPinService.js +180 -8
  56. package/lib/commonjs/services/chatGPTConversationExtractor.js +155 -8
  57. package/lib/commonjs/services/chatGPTConversationService.js +275 -9
  58. package/lib/commonjs/services/claudeConversationExtractor.js +103 -8
  59. package/lib/commonjs/services/claudeConversationService.js +158 -9
  60. package/lib/commonjs/services/connectedAccountsService.js +310 -10
  61. package/lib/commonjs/services/googleAuthService.js +252 -11
  62. package/lib/commonjs/services/hingeDataExtractor.js +105 -8
  63. package/lib/commonjs/services/hingeDataService.js +150 -9
  64. package/lib/commonjs/services/imageCompressionService.js +260 -7
  65. package/lib/commonjs/services/instagramDataExtractor.js +126 -8
  66. package/lib/commonjs/services/instagramDataService.js +163 -9
  67. package/lib/commonjs/services/jwtStorageService.js +276 -7
  68. package/lib/commonjs/services/linkedinDOMExtractor.js +245 -7
  69. package/lib/commonjs/services/linkedinProfileService.js +222 -9
  70. package/lib/commonjs/services/linkedinScrapingService.js +230 -8
  71. package/lib/commonjs/services/llmDataStorage.js +294 -8
  72. package/lib/commonjs/services/mobileTrainingService.js +186 -8
  73. package/lib/commonjs/services/netflixDataExtractor.js +120 -8
  74. package/lib/commonjs/services/netflixDataService.js +198 -9
  75. package/lib/commonjs/services/pinEncryptionService.js +84 -8
  76. package/lib/commonjs/services/pinStorageUtils.js +105 -7
  77. package/lib/commonjs/services/platformAuthService.js +1484 -12
  78. package/lib/commonjs/services/sephoraDataExtractor.js +140 -8
  79. package/lib/commonjs/services/sephoraDataService.js +200 -9
  80. package/lib/commonjs/services/spotifyDataExtractor.js +148 -8
  81. package/lib/commonjs/services/spotifyDataService.js +241 -9
  82. package/lib/commonjs/services/storageService.js +404 -8
  83. package/lib/commonjs/services/telegramDataExtractor.js +115 -8
  84. package/lib/commonjs/services/telegramDataService.js +499 -9
  85. package/lib/commonjs/services/trainingApiHelpers.js +73 -7
  86. package/lib/commonjs/services/userConnectionsService.js +340 -10
  87. package/lib/commonjs/services/youtubeMigrationService.js +416 -10
  88. package/lib/commonjs/theme/index.js +250 -7
  89. package/lib/commonjs/types/ambient.d.js +2 -1
  90. package/lib/commonjs/types/declarations.d.js +2 -1
  91. package/lib/commonjs/types/index.js +6 -1
  92. package/lib/commonjs/types/node-fix.d.js +2 -1
  93. package/lib/commonjs/types/node-override.d.js +2 -1
  94. package/lib/commonjs/types/opacity.d.js +2 -1
  95. package/lib/commonjs/types.js +14 -1
  96. package/lib/commonjs/utils/Portal.js +98 -8
  97. package/lib/commonjs/utils/api.js +130 -9
  98. package/lib/commonjs/utils/assetRegistry.js +210 -35
  99. package/lib/commonjs/utils/auth.js +112 -9
  100. package/lib/commonjs/utils/connectorTests.js +613 -29
  101. package/lib/commonjs/utils/crypto.js +62 -8
  102. package/lib/commonjs/utils/debugHelper.js +64 -1
  103. package/lib/commonjs/utils/encryption.js +76 -7
  104. package/lib/commonjs/utils/eventUtils.js +288 -1
  105. package/lib/commonjs/utils/haptics.js +66 -9
  106. package/lib/commonjs/utils/imagePreloader.js +6 -1
  107. package/lib/commonjs/utils/networkDiagnostics.js +226 -8
  108. package/lib/commonjs/utils/onairosApi.js +350 -9
  109. package/lib/commonjs/utils/programmaticFlow.js +117 -9
  110. package/lib/commonjs/utils/retryHelper.js +220 -1
  111. package/lib/commonjs/utils/secureStorage.js +349 -10
  112. package/lib/commonjs/utils/webviewScripts/chatgpt.js +551 -1
  113. package/lib/commonjs/utils/webviewScripts/claude.js +376 -1
  114. package/lib/commonjs/utils/webviewScripts/hinge.js +411 -1
  115. package/lib/commonjs/utils/webviewScripts/index.js +698 -15
  116. package/lib/commonjs/utils/webviewScripts/instagram.js +454 -1
  117. package/lib/commonjs/utils/webviewScripts/linkedin.js +880 -1
  118. package/lib/commonjs/utils/webviewScripts/netflix.js +382 -1
  119. package/lib/commonjs/utils/webviewScripts/sephora.js +516 -1
  120. package/lib/commonjs/utils/webviewScripts/spotify.js +419 -1
  121. package/lib/commonjs/utils/webviewScripts/telegram.js +678 -1
  122. package/lib/module/api/index.js +211 -1
  123. package/lib/module/components/BodyText.js +20 -1
  124. package/lib/module/components/BrandMark.js +104 -1
  125. package/lib/module/components/CodeInput.js +113 -1
  126. package/lib/module/components/EmailInput.js +23 -1
  127. package/lib/module/components/GoogleButton.js +49 -1
  128. package/lib/module/components/HeadingGroup.js +36 -1
  129. package/lib/module/components/LLMDataInputModal.js +656 -7
  130. package/lib/module/components/ModalHeader.js +92 -1
  131. package/lib/module/components/ModalSheet.js +39 -1
  132. package/lib/module/components/Onairos.js +373 -1
  133. package/lib/module/components/OnairosButton.js +305 -1
  134. package/lib/module/components/OnairosSignInButton.js +121 -1
  135. package/lib/module/components/Overlay.js +456 -1
  136. package/lib/module/components/PersonaImage.js +129 -1
  137. package/lib/module/components/PersonaLoadingScreen.js +310 -1
  138. package/lib/module/components/PersonalizationConsentScreen.js +460 -1
  139. package/lib/module/components/PinCreationScreen.js +396 -1
  140. package/lib/module/components/PinInput.js +456 -1
  141. package/lib/module/components/PlatformConnectorsStep.js +1302 -6
  142. package/lib/module/components/PlatformList.js +129 -1
  143. package/lib/module/components/PlatformToggle.js +173 -1
  144. package/lib/module/components/PrimaryButton.js +172 -1
  145. package/lib/module/components/SignInMatchAnimation.js +189 -1
  146. package/lib/module/components/SignInStep.js +338 -1
  147. package/lib/module/components/UniversalOnboarding.js +2770 -1
  148. package/lib/module/components/VerificationStep.js +168 -1
  149. package/lib/module/components/WelcomeScreen.js +453 -1
  150. package/lib/module/components/icons/Basicproficon.js +30 -1
  151. package/lib/module/components/icons/Basicprofile.js +14 -1
  152. package/lib/module/components/icons/Checkbox.js +14 -1
  153. package/lib/module/components/icons/Checkmark.js +20 -1
  154. package/lib/module/components/icons/Contentanalysis.js +14 -1
  155. package/lib/module/components/icons/Contenticon.js +32 -1
  156. package/lib/module/components/icons/EnochE.js +34 -1
  157. package/lib/module/components/icons/Personalityicon.js +23 -1
  158. package/lib/module/components/icons/Personalityprofile.js +14 -1
  159. package/lib/module/components/icons/Personalitytraits.js +14 -1
  160. package/lib/module/components/icons/Userpreferences.js +14 -1
  161. package/lib/module/components/icons/index.js +13 -1
  162. package/lib/module/components/onboarding/OAuthWebView.js +1746 -1
  163. package/lib/module/components/onboarding/OnboardingHeader.js +66 -1
  164. package/lib/module/components/onboarding/PinInput.js +274 -1
  165. package/lib/module/components/onboarding/PlatformConnector.js +240 -1
  166. package/lib/module/config/PLATFORM_APIS.md +849 -0
  167. package/lib/module/config/api.js +47 -1
  168. package/lib/module/constants/index.js +114 -1
  169. package/lib/module/context/AuthContext.js +335 -1
  170. package/lib/module/hooks/useConnectedAccounts.js +106 -1
  171. package/lib/module/hooks/useConnections.js +95 -1
  172. package/lib/module/hooks/useCredentials.js +171 -6
  173. package/lib/module/hooks/useUserConnections.js +140 -1
  174. package/lib/module/index.js +172 -1
  175. package/lib/module/services/apiClient.js +295 -1
  176. package/lib/module/services/biometricPinService.js +169 -1
  177. package/lib/module/services/chatGPTConversationExtractor.js +149 -1
  178. package/lib/module/services/chatGPTConversationService.js +268 -1
  179. package/lib/module/services/claudeConversationExtractor.js +97 -1
  180. package/lib/module/services/claudeConversationService.js +151 -1
  181. package/lib/module/services/connectedAccountsService.js +293 -1
  182. package/lib/module/services/googleAuthService.js +241 -1
  183. package/lib/module/services/hingeDataExtractor.js +99 -1
  184. package/lib/module/services/hingeDataService.js +143 -1
  185. package/lib/module/services/imageCompressionService.js +250 -1
  186. package/lib/module/services/instagramDataExtractor.js +120 -1
  187. package/lib/module/services/instagramDataService.js +156 -1
  188. package/lib/module/services/jwtStorageService.js +257 -1
  189. package/lib/module/services/linkedinDOMExtractor.js +234 -1
  190. package/lib/module/services/linkedinProfileService.js +210 -1
  191. package/lib/module/services/linkedinScrapingService.js +219 -1
  192. package/lib/module/services/llmDataStorage.js +277 -1
  193. package/lib/module/services/mobileTrainingService.js +173 -1
  194. package/lib/module/services/netflixDataExtractor.js +114 -1
  195. package/lib/module/services/netflixDataService.js +191 -1
  196. package/lib/module/services/pinEncryptionService.js +74 -6
  197. package/lib/module/services/pinStorageUtils.js +93 -1
  198. package/lib/module/services/platformAuthService.js +1461 -1
  199. package/lib/module/services/sephoraDataExtractor.js +134 -1
  200. package/lib/module/services/sephoraDataService.js +193 -1
  201. package/lib/module/services/spotifyDataExtractor.js +142 -1
  202. package/lib/module/services/spotifyDataService.js +234 -1
  203. package/lib/module/services/storageService.js +383 -1
  204. package/lib/module/services/telegramDataExtractor.js +109 -1
  205. package/lib/module/services/telegramDataService.js +493 -1
  206. package/lib/module/services/trainingApiHelpers.js +67 -1
  207. package/lib/module/services/userConnectionsService.js +329 -1
  208. package/lib/module/services/youtubeMigrationService.js +405 -1
  209. package/lib/module/theme/index.js +245 -1
  210. package/lib/module/types.js +10 -1
  211. package/lib/module/utils/Portal.js +90 -1
  212. package/lib/module/utils/api.js +118 -1
  213. package/lib/module/utils/assetRegistry.js +200 -34
  214. package/lib/module/utils/auth.js +100 -1
  215. package/lib/module/utils/connectorTests.js +600 -27
  216. package/lib/module/utils/crypto.js +54 -1
  217. package/lib/module/utils/debugHelper.js +54 -1
  218. package/lib/module/utils/encryption.js +67 -1
  219. package/lib/module/utils/eventUtils.js +270 -1
  220. package/lib/module/utils/haptics.js +59 -8
  221. package/lib/module/utils/imagePreloader.js +3 -1
  222. package/lib/module/utils/networkDiagnostics.js +217 -1
  223. package/lib/module/utils/onairosApi.js +333 -1
  224. package/lib/module/utils/programmaticFlow.js +111 -1
  225. package/lib/module/utils/retryHelper.js +211 -1
  226. package/lib/module/utils/secureStorage.js +330 -6
  227. package/lib/module/utils/webviewScripts/chatgpt.js +545 -1
  228. package/lib/module/utils/webviewScripts/claude.js +370 -1
  229. package/lib/module/utils/webviewScripts/hinge.js +405 -1
  230. package/lib/module/utils/webviewScripts/index.js +434 -1
  231. package/lib/module/utils/webviewScripts/instagram.js +448 -1
  232. package/lib/module/utils/webviewScripts/linkedin.js +874 -1
  233. package/lib/module/utils/webviewScripts/netflix.js +376 -1
  234. package/lib/module/utils/webviewScripts/sephora.js +510 -1
  235. package/lib/module/utils/webviewScripts/spotify.js +413 -1
  236. package/lib/module/utils/webviewScripts/telegram.js +672 -1
  237. package/package.json +2 -2
@@ -1,8 +1,657 @@
1
+ /**
2
+ * LLMDataInputModal.tsx
3
+ *
4
+ * Modal for inputting LLM conversation data via file upload or paste.
5
+ * Supports ChatGPT, Claude, Gemini, and Grok data formats.
6
+ */
1
7
 
2
- // Onairos SDK - Asset Registry (auto-generated)
3
- var __ONAIROS_REQ_REGISTRY__ = [
4
- require('react-native-document-picker'),
5
- require('react-native-fs')
6
- ];
7
- function __ONAIROS_REQ_FUNC__(i) { return __ONAIROS_REQ_REGISTRY__[i]; }
8
- import React,{useState}from'react';import{View,Text,StyleSheet,Modal,TouchableOpacity,TextInput,ScrollView,ActivityIndicator,Alert,Platform,KeyboardAvoidingView}from'react-native';function _0x53ae(){const _0x38fb82=['log','unknown','CngnP','Connect\x20ChatGPT','Paste\x20your\x20ChatGPT\x20conversation\x20JSON\x20here...','claude','Connect\x20Claude','Connect\x20Gemini','Paste\x20your\x20Gemini\x20conversation\x20JSON\x20here...','grok','Export\x20your\x20Grok\x20conversations\x20from\x20X/Twitter\x20and\x20paste\x20the\x20data\x20below.','Paste\x20your\x20Grok\x20conversation\x20JSON\x20here...','Paste\x20your\x20conversation\x20JSON\x20here...','Authentication\x20required.\x20Please\x20sign\x20in\x20first.','KmPjG','BXQAt','Failed\x20to\x20read\x20file.\x20Please\x20try\x20again\x20or\x20paste\x20data\x20manually.','FaIaR','zMKyk','HOxVG','bbIdg','qBrkf','ydMPp','WQMIK','Imported\x20Conversation','dcsjw','No\x20valid\x20conversations\x20found\x20in\x20the\x20data.\x20Please\x20check\x20the\x20format.','SjjgU','wMcGb','File\x20pick\x20error:','assistant','qBgIN','JVSoV','paste','GXdnZ','human','1|3|4|2|5|0','kcYhg','xMKXl','eowlN','LCmtM','DOCUMENT_PICKER_CANCELED','Please\x20paste\x20or\x20upload\x20conversation\x20data\x20first.','QUiIf','onairos_jwt_token','auth_token','conversation','mobile_app_import','QyVOQ','VQMia','Failed\x20to\x20import\x20data.\x20Please\x20try\x20again.','2|5|4|0|3|1','UxujP','GbYeX','File\x20upload\x20requires\x20additional\x20dependencies.\x20Please\x20paste\x20data\x20instead.','height','handled','Paste\x20Data','Upload\x20File\x20','(N/A)','top','none','...','Import\x20Conversations','nsnbF','hmsxg','xKVsK','aJgek','flwho','MmyOJ','oGqKQ','IEHAF','JznTp','Export\x20your\x20ChatGPT\x20conversations\x20from\x20Settings\x20→\x20Data\x20Controls\x20→\x20Export\x20data.\x20Then\x20upload\x20the\x20JSON\x20file\x20or\x20paste\x20your\x20conversation\x20data.','agajU','mBhwP','DvOay','GoIGU','cIPyD','ytRnr','EssCj','Connect\x20Grok','hPKIi','Connect\x20','push','message','wmTli','author','role','RQoWg','create_time','XNpba','BzxbL','sNgNX','eLfUf','iORfx','IdZmH','lWlNa','gxvqU','parse','isArray','uTbdc','ZDKer','oxrva','forEach','length','KhUYb','conversation_id','conv_','now','title','name','Conversation\x20','ULtny','created_at','update_time','updated_at','conversations','omIzT','MLPNz','FKKcu','USlyi','oPlia','error','ReyvK','jMRYg','wobNl','mapping','messages','mqpvR','msg_','QbbKg','jtJlo','bQLLr','Wphto','iNkfE','KvlaR','lBliX','content','parts','join','trim','zVGEK','NvRaS','toISOString','dImDL','xxXYn','Mhjjj','ORMOR','WPlXT','aTrtI','ZKxHj','tAnny','VVVBa','GjwXd','yjVzY','PzchF','sAjiX','fZBOm','values','yUdUM','kojHi','ZJkSh','QBWKh','Vuima','fvsDK','REkLF','UEwvw','RpQWl','bFvBO','hqPuC','eaMUa','kyKcs','QwwaS','pbCZO','aSmJC','code','YHpjq','YqfEO','UZrgY','znoQt','ERROR','fOyjf','NhfjI','text','sender','hdWvg','JLLrP','user','timestamp','hLreO','BUTTON_PRESS','chat_messages','mpcYw','uuid','mwWzM','vWyib','yjxSV','HyxEd','UEoOM','OHWMV','ghcis','sYtKL','allFiles','Selected\x20file','uri','paWpM','adpRJ','dRHII','UlIwK','split','UEHyy','readFile','utf8','Gjnpm','IgfcF','QzsiU','pEfgN','Error\x20storing\x20conversation:','mrlkQ','fAHKI','YncWF','PmHue','DTTkp','kOTnl','tdXvk','getItem','mobile-','BASE_URL','/llm-data/store','Bearer\x20','stringify','conversationId','context','ihmwF','Version','jAfqd','FaZlK','Failed\x20to\x20store\x20conversation\x20','setItem','@onairos:llm_connected:','SUCCESS','alert','lCFAa','Successfully\x20imported\x20','\x20from\x20','ydEra','aNNzN','hJPCA','eulPp','hcVZg','rvbnM','vyBrM','gFzvH','createElement','slide','container','Nzifb','ios','CaYup','PgWTH','header','closeButton','Cancel','contentContainer','ljZix','instructionsContainer','instructionsText','tabContainer','tab','UAPpN','kcyZm','tQDdc','iMHgt','WsRlI','LlXQV','tabText','KcBTk','file','tabDisabled','vLZZN','FxaIt','rrnDP','RGIJk','SZyWB','lxLMh','tabTextActive','tabTextDisabled','kmXuS','textInput','filePickButton','filePickIcon','Tap\x20to\x20select\x20a\x20file','fileSelectedContainer','errorText','XoZAF','previewContainer','previewTitle','previewText','substring','previewInfo','footer','submitButton','submitButtonDisabled','IeuHG','submitButtonText','YyjAz','create','surface','center','space-between','#E5E7EB','grey800','IBM\x20Plex\x20Sans','Inter','#0369A1','#F3F4F6','#FFFFFF','#000','500','grey500','grey400','grey300','monospace','dashed','grey600','#F0FDF4','#166534','#FEF2F2','#DC2626','600','Menlo'];_0x53ae=function(){return _0x38fb82;};return _0x53ae();}import{COLORS}from'../theme';import{triggerHaptic,HapticType}from'../utils/haptics';import AsyncStorage from'@react-native-async-storage/async-storage';import{API_CONFIG}from'../config/api';function _0x13b8(_0x53ae46,_0x13b888){_0x53ae46=_0x53ae46-0x0;const _0x48bf4=_0x53ae();let _0x28e89b=_0x48bf4[_0x53ae46];return _0x28e89b;}let DocumentPicker=null,RNFS=null;try{DocumentPicker=__ONAIROS_REQ_FUNC__(0x0);}catch(_0xc5a547){console[_0x13b8(0x0)]('react-native-document-picker not available - file upload disabled');}try{RNFS=__ONAIROS_REQ_FUNC__(0x1);}catch(_0x307ed8){console['log']('react-native-fs not available - file upload disabled');}const FILE_UPLOAD_AVAILABLE=DocumentPicker!==null&&RNFS!==null,LLMDataInputModal=({visible:_0x153b08,platform:_0x333df7,platformName:_0x331c89,onClose:_0x4c7ac2,onSuccess:_0x27608a})=>{const _0x3781ac={'wmTli':function(_0x200a5d,_0x590913){return _0x200a5d===_0x590913;},'RQoWg':_0x13b8(0x1),'XNpba':function(_0x526c7c,_0x49d7cd){return _0x526c7c*_0x49d7cd;},'oGqKQ':_0x13b8(0x2),'IEHAF':'chatgpt','JznTp':_0x13b8(0x3),'agajU':_0x13b8(0x4),'mBhwP':_0x13b8(0x5),'DvOay':_0x13b8(0x6),'kpNVs':'Export\x20your\x20Claude\x20conversations\x20and\x20paste\x20the\x20JSON\x20data\x20below,\x20or\x20upload\x20your\x20exported\x20file.','GoIGU':'Paste\x20your\x20Claude\x20conversation\x20JSON\x20here...','cIPyD':_0x13b8(0x7),'huFQc':'Export\x20your\x20Gemini\x20(Google\x20AI)\x20conversations\x20and\x20paste\x20the\x20data\x20below.','ytRnr':_0x13b8(0x8),'EssCj':_0x13b8(0x9),'nxuAb':_0x13b8(0xa),'hPKIi':_0x13b8(0xb),'aknNb':'Paste\x20your\x20conversation\x20data\x20below\x20or\x20upload\x20a\x20JSON\x20file.','UZABq':_0x13b8(0xc),'oxrva':_0x13b8(0xd),'KhUYb':_0x13b8(0xe),'ULtny':function(_0xc8e4b5,_0x30dcc2){return _0xc8e4b5+_0x30dcc2;},'FKKcu':function(_0x1af97f,_0x523675){return _0x1af97f===_0x523675;},'USlyi':_0x13b8(0xf),'oPlia':function(_0x372d54,_0x48448f){return _0x372d54+_0x48448f;},'bQLLr':function(_0xd5a4b8,_0x5123d4){return _0xd5a4b8(_0x5123d4);},'jtJlo':function(_0x26430,_0x1352c2){return _0x26430>_0x1352c2;},'iNkfE':function(_0x4f974d,_0x201119){return _0x4f974d!==_0x201119;},'uTbdc':function(_0x15d4e1,_0x1ca8fb){return _0x15d4e1!==_0x1ca8fb;},'zVGEK':function(_0x21d109,_0x593188){return _0x21d109===_0x593188;},'NvRaS':function(_0x4563ca,_0x3fe194){return _0x4563ca===_0x3fe194;},'sNgNX':function(_0x224051,_0x48bc44){return _0x224051(_0x48bc44);},'eLfUf':_0x13b8(0x10),'iORfx':'user','IdZmH':'Error\x20parsing\x20conversation\x20data:','UedUu':'Invalid\x20JSON\x20format.\x20Please\x20check\x20your\x20data\x20and\x20try\x20again.','lWlNa':_0x13b8(0x11),'gxvqU':'yQIAv','ZDKer':_0x13b8(0x12),'omIzT':_0x13b8(0x13),'MLPNz':'AsgZY','mqpvR':_0x13b8(0x14),'pUACf':_0x13b8(0x15),'RNMvg':_0x13b8(0x16),'KKdeK':_0x13b8(0x17),'Wphto':_0x13b8(0x18),'KvlaR':_0x13b8(0x19),'lBliX':'WpLhw','fZBOm':_0x13b8(0x1a),'hLreO':'file','UEoOM':function(_0x510f60,_0x144937){return _0x510f60(_0x144937);},'hJPCA':'Failed\x20to\x20import\x20any\x20conversations.\x20Please\x20check\x20your\x20data\x20format.','ahWfE':'nKAcY','Mhjjj':_0x13b8(0x1b),'ORMOR':_0x13b8(0x1c),'QBjtB':function(_0x376d69,_0x30f78e){return _0x376d69===_0x30f78e;},'WPlXT':_0x13b8(0x1d),'aTrtI':_0x13b8(0x1e),'UdJEo':_0x13b8(0x1f),'GqqiZ':_0x13b8(0x20),'ZKxHj':'string','nsnbF':_0x13b8(0x21),'VVVBa':_0x13b8(0x22),'GjwXd':_0x13b8(0x23),'yjVzY':function(_0x4f4d2c,_0x511613){return _0x4f4d2c!==_0x511613;},'PzchF':'sAjiX','RpQWl':'YrpEo','yjxSV':_0x13b8(0x24),'BzxbL':function(_0xa948c5){return _0xa948c5();},'HyxEd':_0x13b8(0x25),'OHWMV':function(_0x64f1fb,_0x18b52f){return _0x64f1fb!==_0x18b52f;},'ghcis':'zRkpW','sYtKL':_0x13b8(0x26),'paWpM':'content://','adpRJ':_0x13b8(0x27),'Olwbg':'NfyZI','Gjnpm':_0x13b8(0x28),'QzsiU':'utf8','aJgek':function(_0x876654,_0xf44293){return _0x876654(_0xf44293);},'pEfgN':function(_0x1861da,_0xf775db){return _0x1861da(_0xf775db);},'dYTOQ':function(_0x1475ed,_0x3d3643){return _0x1475ed!==_0x3d3643;},'mrlkQ':_0x13b8(0x29),'aNNzN':function(_0x3f4494,_0x33b6f3){return _0x3f4494!==_0x33b6f3;},'fAHKI':_0x13b8(0x2a),'hmsxg':function(_0x477005,_0x3057ef){return _0x477005(_0x3057ef);},'xKVsK':function(_0xb90fee,_0x28a945){return _0xb90fee(_0x28a945);},'YncWF':function(_0x2d4002,_0x309839){return _0x2d4002===_0x309839;},'PmHue':function(_0x199684,_0x4c2d1f){return _0x199684!==_0x4c2d1f;},'DTTkp':_0x13b8(0x2b),'tdXvk':_0x13b8(0x2c),'iFFfv':_0x13b8(0x2d),'ihmwF':'1.0.0','jAfqd':_0x13b8(0x2e),'FaZlK':_0x13b8(0x2f),'lCFAa':'Success!\x20🎉','JpWdf':function(_0x2c613c,_0x5b143b){return _0x2c613c>_0x5b143b;},'cAEAv':_0x13b8(0x30),'ydEra':_0x13b8(0x31),'eulPp':'Submit\x20error:','hcVZg':function(_0x311659,_0x333dcd){return _0x311659(_0x333dcd);},'rvbnM':_0x13b8(0x32),'vyBrM':function(_0x134029,_0x4e1af8){return _0x134029(_0x4e1af8);},'gFzvH':_0x13b8(0x33),'kcyZm':function(_0x17ab04,_0x217313){return _0x17ab04!==_0x217313;},'iMHgt':_0x13b8(0x34),'WsRlI':function(_0x330b0d,_0xea512){return _0x330b0d(_0xea512);},'LlXQV':function(_0x2baa96,_0x43c274){return _0x2baa96(_0x43c274);},'vLZZN':function(_0x727cb1,_0x24fafe){return _0x727cb1(_0x24fafe);},'FxaIt':function(_0x4d9ef0,_0x309f70){return _0x4d9ef0(_0x309f70);},'rrnDP':function(_0x1af35b,_0x10ad31){return _0x1af35b!==_0x10ad31;},'RGIJk':_0x13b8(0x35),'SZyWB':_0x13b8(0x36),'MwQfp':function(_0x489dc5,_0x4c4251){return _0x489dc5(_0x4c4251);},'flwho':function(_0x38e6eb,_0x1923e4){return _0x38e6eb(_0x1923e4);},'MmyOJ':function(_0xde7bf7,_0x1ea46f){return _0xde7bf7(_0x1ea46f);},'Nzifb':function(_0x340c12,_0x43579b){return _0x340c12===_0x43579b;},'CaYup':'padding','PgWTH':_0x13b8(0x37),'ljZix':_0x13b8(0x38),'UAPpN':function(_0x437b82,_0x2f97c9){return _0x437b82===_0x2f97c9;},'KcBTk':_0x13b8(0x39),'lxLMh':function(_0x2e7e2d,_0x2a7b51){return _0x2e7e2d===_0x2a7b51;},'kmXuS':_0x13b8(0x3a),'cdbJc':function(_0x4977af,_0x49da38){return _0x4977af&&_0x49da38;},'oXhGa':_0x13b8(0x3b),'dlnBQ':_0x13b8(0x3c),'faybT':_0x13b8(0x3d),'uJIhz':function(_0x543eb6,_0xd329fe){return _0x543eb6||_0xd329fe;},'XoZAF':function(_0x4d3e87,_0x313c8f){return _0x4d3e87>_0x313c8f;},'ITtoI':'Data\x20Preview','TCOvL':_0x13b8(0x3e),'IeuHG':'small','YyjAz':_0x13b8(0x3f)},[_0x4f1820,_0x3a14b]=useState(_0x3781ac[_0x13b8(0x40)]),[_0x227483,_0x50d7a8]=_0x3781ac[_0x13b8(0x41)](useState,''),[_0x5594ce,_0x178697]=_0x3781ac[_0x13b8(0x42)](useState,![]),[_0x571e63,_0x2c9290]=_0x3781ac[_0x13b8(0x43)](useState,null),[_0x2468ff,_0x6aa53b]=_0x3781ac[_0x13b8(0x44)](useState,null),[_0x517f92,_0x26ffcc]=_0x3781ac[_0x13b8(0x45)](useState,null),_0x5a7328=()=>{if(_0x3781ac[_0x13b8(0x46)]===_0x13b8(0x2))switch(_0x333df7){case _0x3781ac[_0x13b8(0x47)]:return{'title':_0x3781ac[_0x13b8(0x48)],'instructions':_0x13b8(0x49),'placeholder':_0x3781ac[_0x13b8(0x4a)]};case _0x3781ac[_0x13b8(0x4b)]:return{'title':_0x3781ac[_0x13b8(0x4c)],'instructions':_0x3781ac['kpNVs'],'placeholder':_0x3781ac[_0x13b8(0x4d)]};case'gemini':return{'title':_0x3781ac[_0x13b8(0x4e)],'instructions':_0x3781ac['huFQc'],'placeholder':_0x3781ac[_0x13b8(0x4f)]};case _0x3781ac[_0x13b8(0x50)]:return{'title':_0x13b8(0x51),'instructions':_0x3781ac['nxuAb'],'placeholder':_0x3781ac[_0x13b8(0x52)]};default:return{'title':_0x13b8(0x53)+_0x331c89,'instructions':_0x3781ac['aknNb'],'placeholder':_0x3781ac['UZABq']};}else{var _0x1b0054;_0x4444c2[_0x13b8(0x54)]({'id':_0x375504[_0x13b8(0x55)]['id']||'msg_'+_0x484462,'role':(_0x3781ac[_0x13b8(0x56)](_0x1b0054=_0x2e5e01['message'][_0x13b8(0x57)],null)||_0x3781ac[_0x13b8(0x56)](_0x1b0054,void 0x0)?void 0x0:_0x1b0054[_0x13b8(0x58)])||_0x3781ac[_0x13b8(0x59)],'content':_0x38d120,'timestamp':_0x592768[_0x13b8(0x55)][_0x13b8(0x5a)]?new _0x274c6e(_0x3781ac[_0x13b8(0x5b)](_0x2bcc04[_0x13b8(0x55)][_0x13b8(0x5a)],0x3e8))['toISOString']():_0x99ad2});}},{title:_0x1c8f3a,instructions:_0x55b13e,placeholder:_0x206257}=_0x3781ac[_0x13b8(0x5c)](_0x5a7328),_0x2be217=_0x4391a6=>{const _0x3011c1={'ReyvK':function(_0x41b3f3,_0x366f88){return _0x3781ac[_0x13b8(0x5d)](_0x41b3f3,_0x366f88);},'jMRYg':_0x3781ac[_0x13b8(0x5e)],'wobNl':_0x13b8(0x18),'QbbKg':_0x3781ac[_0x13b8(0x5f)],'dImDL':_0x3781ac[_0x13b8(0x60)],'xxXYn':_0x3781ac['UedUu']};try{if(_0x3781ac[_0x13b8(0x61)]!==_0x3781ac[_0x13b8(0x62)]){const _0x1c429a=JSON[_0x13b8(0x63)](_0x4391a6),_0x2b7a5a=[];if(Array[_0x13b8(0x64)](_0x1c429a)){if(_0x3781ac[_0x13b8(0x65)](_0x3781ac[_0x13b8(0x66)],_0x13b8(0x12)))throw new _0x3cdae2(_0x3781ac[_0x13b8(0x67)]);else _0x1c429a[_0x13b8(0x68)]((_0x5525ac,_0x30ed68)=>{const _0xde78b7=_0x44d43b(_0x5525ac);_0xde78b7[_0x13b8(0x69)]>0x0&&(_0x3781ac[_0x13b8(0x6a)]!==_0x13b8(0xe)?_0x4878f3++:_0x2b7a5a['push']({'conversationId':_0x5525ac['id']||_0x5525ac[_0x13b8(0x6b)]||_0x13b8(0x6c)+_0x30ed68+'_'+Date[_0x13b8(0x6d)](),'messages':_0xde78b7,'context':{'title':_0x5525ac[_0x13b8(0x6e)]||_0x5525ac[_0x13b8(0x6f)]||_0x13b8(0x70)+_0x3781ac[_0x13b8(0x71)](_0x30ed68,0x1),'create_time':_0x5525ac[_0x13b8(0x5a)]||_0x5525ac[_0x13b8(0x72)],'update_time':_0x5525ac[_0x13b8(0x73)]||_0x5525ac[_0x13b8(0x74)]}}));});}else{if(_0x1c429a['conversations']&&Array[_0x13b8(0x64)](_0x1c429a[_0x13b8(0x75)]))_0x3781ac['iNkfE'](_0x3781ac[_0x13b8(0x76)],_0x3781ac[_0x13b8(0x77)])?_0x1c429a[_0x13b8(0x75)][_0x13b8(0x68)]((_0x3789fd,_0x166f89)=>{const _0x1ecc6a=_0x44d43b(_0x3789fd);_0x1ecc6a[_0x13b8(0x69)]>0x0&&(_0x3781ac[_0x13b8(0x78)](_0x3781ac[_0x13b8(0x79)],_0x13b8(0xf))?_0x2b7a5a[_0x13b8(0x54)]({'conversationId':_0x3789fd['id']||_0x13b8(0x6c)+_0x166f89+'_'+Date[_0x13b8(0x6d)](),'messages':_0x1ecc6a,'context':{'title':_0x3789fd['title']||'Conversation\x20'+_0x3781ac[_0x13b8(0x7a)](_0x166f89,0x1),'create_time':_0x3789fd[_0x13b8(0x5a)],'update_time':_0x3789fd['update_time']}}):(_0x236bc3[_0x13b8(0x7b)](_0x13b8(0x1d),_0x18616d),_0x3011c1[_0x13b8(0x7c)](_0x4174a3,_0x3011c1[_0x13b8(0x7d)]),_0x3011c1[_0x13b8(0x7c)](_0x2279df,_0x57ed69['ERROR'])));}):_0x8966dd[_0x13b8(0x54)]({'conversationId':_0x405229['id']||_0x13b8(0x6c)+_0x3c2308[_0x13b8(0x6d)](),'messages':_0x485451,'context':{'title':_0x3f3000['title']||_0x3011c1[_0x13b8(0x7e)],'create_time':_0x373114['create_time'],'update_time':_0x2ec1a3[_0x13b8(0x73)]}});else{if(_0x1c429a[_0x13b8(0x7f)]||_0x1c429a[_0x13b8(0x80)]){if(_0x3781ac[_0x13b8(0x56)](_0x3781ac[_0x13b8(0x81)],_0x3781ac['pUACf']))_0x55a65e[_0x13b8(0x54)]({'id':_0x30da9e['id']||_0x13b8(0x82)+_0x14cbee,'role':_0x303979[_0x13b8(0x58)]||_0x5cafb0[_0x13b8(0x57)]||_0x3011c1[_0x13b8(0x83)],'content':_0x2019b9,'timestamp':_0x106b23['timestamp']||_0x67126c['created_at']});else{const _0x5ef410=_0x44d43b(_0x1c429a);if(_0x3781ac[_0x13b8(0x84)](_0x5ef410[_0x13b8(0x69)],0x0)){if(_0x3781ac['zVGEK'](_0x3781ac['RNMvg'],_0x3781ac['KKdeK'])){const _0x35e225=_0x3781ac[_0x13b8(0x85)](_0x3a8bec,_0x546e94);_0x3781ac[_0x13b8(0x84)](_0x35e225[_0x13b8(0x69)],0x0)&&_0x30995d[_0x13b8(0x54)]({'conversationId':_0x3ec3c3['id']||_0x13b8(0x6c)+_0x199673+'_'+_0xb9fea9[_0x13b8(0x6d)](),'messages':_0x35e225,'context':{'title':_0x582fa4[_0x13b8(0x6e)]||_0x13b8(0x70)+_0x3781ac[_0x13b8(0x71)](_0x433231,0x1),'create_time':_0x3a5d6f[_0x13b8(0x5a)],'update_time':_0x2d36b3['update_time']}});}else _0x2b7a5a['push']({'conversationId':_0x1c429a['id']||_0x13b8(0x6c)+Date['now'](),'messages':_0x5ef410,'context':{'title':_0x1c429a[_0x13b8(0x6e)]||_0x3781ac[_0x13b8(0x86)],'create_time':_0x1c429a[_0x13b8(0x5a)],'update_time':_0x1c429a[_0x13b8(0x73)]}});}}}else{const _0x455c7d=_0x3781ac[_0x13b8(0x5d)](_0x44d43b,_0x1c429a);if(_0x455c7d['length']>0x0){if(_0x3781ac[_0x13b8(0x87)](_0x3781ac[_0x13b8(0x88)],_0x3781ac[_0x13b8(0x89)]))_0x2b7a5a['push']({'conversationId':_0x13b8(0x6c)+Date[_0x13b8(0x6d)](),'messages':_0x455c7d,'context':{'title':_0x1c429a[_0x13b8(0x6e)]||_0x13b8(0x18)}});else{var _0x53150d;if(_0x3781ac[_0x13b8(0x87)](_0x384f35,null)&&_0x3781ac[_0x13b8(0x87)](_0x3b06c7,void 0x0)&&_0x3781ac[_0x13b8(0x65)](_0x53150d=_0x3256c0[_0x13b8(0x55)],null)&&_0x53150d!==void 0x0&&(_0x53150d=_0x53150d[_0x13b8(0x8a)])!==null&&_0x53150d!==void 0x0&&_0x53150d[_0x13b8(0x8b)]){const _0x2f9636=_0x1874d8[_0x13b8(0x55)][_0x13b8(0x8a)][_0x13b8(0x8b)][_0x13b8(0x8c)]('\x0a');if(_0x2f9636[_0x13b8(0x8d)]()){var _0x19c048;_0x5747fc['push']({'id':_0x57a915['message']['id']||_0x13b8(0x82)+_0x508b2f,'role':(_0x3781ac[_0x13b8(0x8e)](_0x19c048=_0x404166['message'][_0x13b8(0x57)],null)||_0x3781ac[_0x13b8(0x8f)](_0x19c048,void 0x0)?void 0x0:_0x19c048[_0x13b8(0x58)])||_0x13b8(0x1),'content':_0x2f9636,'timestamp':_0x25b3ef[_0x13b8(0x55)][_0x13b8(0x5a)]?new _0x441a0e(_0x2c517b[_0x13b8(0x55)][_0x13b8(0x5a)]*0x3e8)[_0x13b8(0x90)]():_0x2f0e5e});}}}}}}}return _0x2b7a5a;}else{_0x489eec[_0x13b8(0x7b)](_0x3011c1[_0x13b8(0x91)],_0x259ee2);throw new _0x2a1ae4(_0x3011c1[_0x13b8(0x92)]);}}catch(_0xf8e0ae){console[_0x13b8(0x7b)](_0x3781ac[_0x13b8(0x60)],_0xf8e0ae);throw new Error(_0x3781ac['UedUu']);}},_0x44d43b=_0x15b8c8=>{const _0x305d47={'UEwvw':_0x3781ac['hJPCA'],'pvFuG':function(_0x1dfa28,_0x1eb46f){return _0x1dfa28*_0x1eb46f;},'yUdUM':function(_0x42cca1,_0x4df0e3){return _0x42cca1===_0x4df0e3;},'lXPnY':_0x3781ac['ahWfE'],'kojHi':function(_0x469976,_0x5e7fe7){return _0x469976!==_0x5e7fe7;},'ZJkSh':_0x3781ac[_0x13b8(0x93)],'QBWKh':_0x3781ac[_0x13b8(0x94)],'REkLF':function(_0x2e3930,_0x22c8b5){return _0x3781ac[_0x13b8(0x78)](_0x2e3930,_0x22c8b5);},'rQnEY':function(_0x3d461b,_0xbe47f2){return _0x3781ac['QBjtB'](_0x3d461b,_0xbe47f2);},'bFvBO':_0x3781ac[_0x13b8(0x95)],'hqPuC':function(_0x392ea1,_0x3cc236){return _0x392ea1(_0x3cc236);},'PbsQv':_0x13b8(0x10),'eaMUa':function(_0x26ec9f,_0x5d7b94){return _0x3781ac['sNgNX'](_0x26ec9f,_0x5d7b94);},'OzDNS':function(_0x59946c,_0x448408){return _0x3781ac[_0x13b8(0x8e)](_0x59946c,_0x448408);},'kyKcs':_0x3781ac[_0x13b8(0x5f)],'CaEel':_0x3781ac[_0x13b8(0x96)],'QwwaS':function(_0x4ceb52,_0x929ed8){return _0x4ceb52===_0x929ed8;},'pbCZO':_0x3781ac['UdJEo'],'aSmJC':_0x3781ac['GqqiZ'],'fOyjf':_0x3781ac[_0x13b8(0x97)],'NhfjI':_0x13b8(0x98),'JLLrP':function(_0x2b691f,_0x1d38f1){return _0x2b691f!==_0x1d38f1;},'vWyib':_0x3781ac[_0x13b8(0x40)],'mpcYw':_0x3781ac[_0x13b8(0x99)],'mwWzM':_0x3781ac[_0x13b8(0x9a)]},_0x29dbb0=[];if(_0x15b8c8['mapping']){if(_0x3781ac[_0x13b8(0x9b)](_0x3781ac[_0x13b8(0x9c)],_0x13b8(0x9d)))throw new _0x40bb4b(_0x3781ac[_0x13b8(0x9e)]);else Object[_0x13b8(0x9f)](_0x15b8c8['mapping'])[_0x13b8(0x68)]((_0xec72f1,_0xeb8813)=>{const _0x5d32b2={'Vuima':function(_0x21eddb,_0x242136){return _0x21eddb===_0x242136;},'fvsDK':function(_0x34262b,_0x469e16){return _0x305d47['pvFuG'](_0x34262b,_0x469e16);}};if(_0x305d47[_0x13b8(0xa0)]('nKAcY',_0x305d47['lXPnY'])){var _0x3d1a75;if(_0x305d47[_0x13b8(0xa1)](_0xec72f1,null)&&_0xec72f1!==void 0x0&&_0x305d47[_0x13b8(0xa1)](_0x3d1a75=_0xec72f1[_0x13b8(0x55)],null)&&_0x3d1a75!==void 0x0&&_0x305d47[_0x13b8(0xa1)](_0x3d1a75=_0x3d1a75[_0x13b8(0x8a)],null)&&_0x3d1a75!==void 0x0&&_0x3d1a75[_0x13b8(0x8b)]){const _0x1451a6=_0xec72f1[_0x13b8(0x55)]['content'][_0x13b8(0x8b)][_0x13b8(0x8c)]('\x0a');if(_0x1451a6[_0x13b8(0x8d)]()){if(_0x305d47[_0x13b8(0xa0)](_0x305d47[_0x13b8(0xa2)],_0x305d47[_0x13b8(0xa3)])){const _0x4a31db=_0x42a29f[_0x13b8(0x55)]['content'][_0x13b8(0x8b)]['join']('\x0a');if(_0x4a31db[_0x13b8(0x8d)]()){var _0x319712;_0x3c4c78['push']({'id':_0x422025[_0x13b8(0x55)]['id']||_0x13b8(0x82)+_0x2fd441,'role':((_0x319712=_0x80d596['message'][_0x13b8(0x57)])===null||_0x5d32b2[_0x13b8(0xa4)](_0x319712,void 0x0)?void 0x0:_0x319712[_0x13b8(0x58)])||_0x13b8(0x1),'content':_0x4a31db,'timestamp':_0x5c6e2e[_0x13b8(0x55)][_0x13b8(0x5a)]?new _0x15e9c0(_0x5d32b2[_0x13b8(0xa5)](_0x161478[_0x13b8(0x55)][_0x13b8(0x5a)],0x3e8))[_0x13b8(0x90)]():_0x2056e6});}}else{var _0x4cc3f9;_0x29dbb0[_0x13b8(0x54)]({'id':_0xec72f1[_0x13b8(0x55)]['id']||_0x13b8(0x82)+_0xeb8813,'role':(_0x305d47[_0x13b8(0xa6)](_0x4cc3f9=_0xec72f1[_0x13b8(0x55)]['author'],null)||_0x305d47['rQnEY'](_0x4cc3f9,void 0x0)?void 0x0:_0x4cc3f9['role'])||_0x13b8(0x1),'content':_0x1451a6,'timestamp':_0xec72f1[_0x13b8(0x55)]['create_time']?new Date(_0xec72f1[_0x13b8(0x55)][_0x13b8(0x5a)]*0x3e8)[_0x13b8(0x90)]():undefined});}}}}else throw new _0x29cbf8(_0x305d47[_0x13b8(0xa7)]);});}return _0x15b8c8[_0x13b8(0x80)]&&Array[_0x13b8(0x64)](_0x15b8c8[_0x13b8(0x80)])&&(_0x3781ac['wmTli'](_0x3781ac[_0x13b8(0xa8)],_0x3781ac[_0x13b8(0xa8)])?_0x15b8c8[_0x13b8(0x80)][_0x13b8(0x68)]((_0x29e434,_0x6acb7a)=>{const _0x490349={'YHpjq':_0x305d47[_0x13b8(0xa9)],'YqfEO':function(_0x46d2fc,_0xc61f94){return _0x305d47[_0x13b8(0xaa)](_0x46d2fc,_0xc61f94);},'UZrgY':_0x305d47['PbsQv'],'znoQt':function(_0x3abe5e,_0x54d6a0){return _0x305d47[_0x13b8(0xab)](_0x3abe5e,_0x54d6a0);},'DHLoD':function(_0x5c07da,_0x21d77f){return _0x305d47['OzDNS'](_0x5c07da,_0x21d77f);},'hdWvg':_0x305d47[_0x13b8(0xac)],'ShKzY':_0x305d47['CaEel']};if(_0x305d47[_0x13b8(0xad)](_0x305d47[_0x13b8(0xae)],_0x305d47[_0x13b8(0xaf)]))_0x4912c6[_0x13b8(0xb0)]!==_0x13b8(0x29)&&(_0x3007e3['error'](_0x490349[_0x13b8(0xb1)],_0x42aee1),_0x490349[_0x13b8(0xb2)](_0x3bdfe7,_0x490349[_0x13b8(0xb3)]),_0x490349[_0x13b8(0xb4)](_0x442efb,_0x3d699b[_0x13b8(0xb5)]));else{var _0x14d1de;const _0x303f68=_0x29e434[_0x13b8(0x8a)]||_0x29e434['text']||_0x29e434[_0x13b8(0x55)]||'';if(_0x305d47[_0x13b8(0xa0)](typeof _0x303f68,_0x305d47[_0x13b8(0xb6)])&&_0x303f68['trim']())_0x305d47['yUdUM'](_0x305d47[_0x13b8(0xb7)],_0x305d47[_0x13b8(0xb7)])?_0x29dbb0[_0x13b8(0x54)]({'id':_0x29e434['id']||_0x13b8(0x82)+_0x6acb7a,'role':_0x29e434[_0x13b8(0x58)]||_0x29e434[_0x13b8(0x57)]||'user','content':_0x303f68,'timestamp':_0x29e434['timestamp']||_0x29e434[_0x13b8(0x72)]}):(_0xb5b2c8[_0x13b8(0xb8)]||_0x2cf577[_0x13b8(0x8a)])&&_0x4ac774[_0x13b8(0x54)]({'id':_0x25d703['uuid']||_0x13b8(0x82)+_0x573fb0,'role':_0x490349['DHLoD'](_0x23f86f[_0x13b8(0xb9)],'human')?_0x490349[_0x13b8(0xba)]:_0x490349['ShKzY'],'content':_0x3f2d81[_0x13b8(0xb8)]||_0x9671ab[_0x13b8(0x8a)],'timestamp':_0x5c79ab['created_at']});else _0x305d47[_0x13b8(0xbb)](_0x14d1de=_0x29e434[_0x13b8(0x8a)],null)&&_0x305d47[_0x13b8(0xbb)](_0x14d1de,void 0x0)&&_0x14d1de[_0x13b8(0x8b)]&&_0x29dbb0[_0x13b8(0x54)]({'id':_0x29e434['id']||_0x13b8(0x82)+_0x6acb7a,'role':_0x29e434[_0x13b8(0x58)]||_0x13b8(0xbc),'content':_0x29e434[_0x13b8(0x8a)][_0x13b8(0x8b)][_0x13b8(0x8c)]('\x0a'),'timestamp':_0x29e434[_0x13b8(0xbd)]});}}):_0x3d9720?(_0x3781ac[_0x13b8(0x5d)](_0x451a97,_0x3781ac[_0x13b8(0xbe)]),_0x3781ac['sNgNX'](_0x306813,_0x7d8d57[_0x13b8(0xbf)])):(_0x28fb18(_0x13b8(0x36)),_0x3781ac['UEoOM'](_0x5ed25f,_0x5eb3a7[_0x13b8(0xb5)]))),_0x15b8c8[_0x13b8(0xc0)]&&Array[_0x13b8(0x64)](_0x15b8c8['chat_messages'])&&_0x15b8c8[_0x13b8(0xc0)][_0x13b8(0x68)]((_0x4747dc,_0x5726e7)=>{(_0x4747dc['text']||_0x4747dc[_0x13b8(0x8a)])&&(_0x305d47['mpcYw']===_0x305d47[_0x13b8(0xc1)]?_0x29dbb0[_0x13b8(0x54)]({'id':_0x4747dc[_0x13b8(0xc2)]||_0x13b8(0x82)+_0x5726e7,'role':_0x4747dc['sender']===_0x305d47[_0x13b8(0xc3)]?_0x13b8(0xbc):_0x305d47['CaEel'],'content':_0x4747dc[_0x13b8(0xb8)]||_0x4747dc[_0x13b8(0x8a)],'timestamp':_0x4747dc[_0x13b8(0x72)]}):(_0x272f88(_0x305d47[_0x13b8(0xc4)]),_0x305d47[_0x13b8(0xab)](_0x4299f7,_0x8af12a['BUTTON_PRESS'])));}),_0x29dbb0;},_0x41aa01=async()=>{const _0x4eadb7={'UlIwK':_0x3781ac[_0x13b8(0xc5)],'prJdT':function(_0x478d0c){return _0x3781ac['BzxbL'](_0x478d0c);},'UEHyy':function(_0x2b1ec3,_0x13e4b7){return _0x2b1ec3(_0x13e4b7);},'IgfcF':_0x3781ac['iORfx']};if(_0x3781ac[_0x13b8(0x87)](_0x3781ac[_0x13b8(0xc6)],_0x13b8(0x25)))_0x58c0d8[_0x13b8(0x54)]({'conversationId':_0x4e5f62['id']||_0x3dc4a0[_0x13b8(0x6b)]||_0x13b8(0x6c)+_0x2aaa1b+'_'+_0x3362c3[_0x13b8(0x6d)](),'messages':_0x41e411,'context':{'title':_0x4a36b4['title']||_0x4b434c[_0x13b8(0x6f)]||_0x13b8(0x70)+_0x3781ac[_0x13b8(0x7a)](_0x34efc6,0x1),'create_time':_0x2423e6[_0x13b8(0x5a)]||_0x4046ca[_0x13b8(0x72)],'update_time':_0x7aa13b[_0x13b8(0x73)]||_0x2cfb21[_0x13b8(0x74)]}});else{if(!FILE_UPLOAD_AVAILABLE){_0x3781ac[_0x13b8(0xc7)](_0x2c9290,'File upload requires react-native-document-picker and react-native-fs. Please paste data instead.');return;}try{if(_0x3781ac[_0x13b8(0xc8)](_0x3781ac[_0x13b8(0xc9)],_0x3781ac[_0x13b8(0xca)])){_0x3781ac[_0x13b8(0x85)](_0x2c9290,null);const {pick:_0x5e62cb,types:_0x327c4e}=DocumentPicker,_0x352bc4=await _0x5e62cb({'type':[_0x327c4e['json'],_0x327c4e['plainText'],_0x327c4e[_0x13b8(0xcb)]]});if(_0x352bc4&&_0x352bc4[0x0]){const _0x44d51c=_0x352bc4[0x0];_0x6aa53b(_0x44d51c['name']||_0x13b8(0xcc));let _0x50bcaa;if(_0x44d51c[_0x13b8(0xcd)]['startsWith'](_0x3781ac[_0x13b8(0xce)])){if(_0x3781ac[_0x13b8(0xcf)]===_0x13b8(0xd0)){const _0xa8ac43=_0x4eadb7[_0x13b8(0xd1)][_0x13b8(0xd2)]('|');let _0x5f21f5=0x0;while(!![]){switch(_0xa8ac43[_0x5f21f5++]){case'0':_0x4eadb7['prJdT'](_0x2e14f3);continue;case'1':_0x4eadb7[_0x13b8(0xd3)](_0x2d9893,'');continue;case'2':_0x38c4c9(null);continue;case'3':_0x4eadb7['UEHyy'](_0xd61505,null);continue;case'4':_0x4eadb7['UEHyy'](_0xd6a427,null);continue;case'5':_0x1ac582(_0x13b8(0x21));continue;}break;}}else _0x50bcaa=await RNFS[_0x13b8(0xd4)](_0x44d51c['uri'],_0x13b8(0xd5));}else _0x3781ac['Olwbg']===_0x3781ac[_0x13b8(0xd6)]?_0x2247d3['push']({'id':_0x10eced['id']||_0x13b8(0x82)+_0x3602b9,'role':_0x593ff6[_0x13b8(0x58)]||_0x4eadb7[_0x13b8(0xd7)],'content':_0x4d265a[_0x13b8(0x8a)][_0x13b8(0x8b)][_0x13b8(0x8c)]('\x0a'),'timestamp':_0x273897[_0x13b8(0xbd)]}):_0x50bcaa=await RNFS[_0x13b8(0xd4)](_0x44d51c['uri'],_0x3781ac[_0x13b8(0xd8)]);_0x3781ac[_0x13b8(0x43)](_0x26ffcc,_0x50bcaa),_0x3781ac['UEoOM'](_0x50d7a8,_0x50bcaa),_0x3781ac[_0x13b8(0xd9)](triggerHaptic,HapticType['SUCCESS']);}}else _0x4864b8[_0x13b8(0x7b)](_0x13b8(0xda),_0x1038fd);}catch(_0x44c994){_0x3781ac['dYTOQ'](_0x44c994['code'],_0x3781ac[_0x13b8(0xdb)])&&(console[_0x13b8(0x7b)](_0x3781ac[_0x13b8(0x95)],_0x44c994),_0x2c9290(_0x3781ac[_0x13b8(0x5e)]),triggerHaptic(HapticType[_0x13b8(0xb5)]));}}},_0x577d78=async()=>{const _0x566adf={'kOTnl':_0x3781ac[_0x13b8(0x86)]},_0x1d2d59=_0x4f1820===_0x3781ac[_0x13b8(0xbe)]&&_0x517f92?_0x517f92:_0x227483;if(!_0x1d2d59['trim']()){_0x3781ac[_0x13b8(0xc7)](_0x2c9290,_0x3781ac[_0x13b8(0xdc)]),_0x3781ac[_0x13b8(0x41)](triggerHaptic,HapticType[_0x13b8(0xb5)]);return;}_0x3781ac[_0x13b8(0xc7)](_0x178697,!![]),_0x3781ac['xKVsK'](_0x2c9290,null);try{const _0x73b734=_0x3781ac[_0x13b8(0xc7)](_0x2be217,_0x1d2d59);if(_0x3781ac[_0x13b8(0xdd)](_0x73b734[_0x13b8(0x69)],0x0)){if(_0x3781ac[_0x13b8(0xde)](_0x3781ac[_0x13b8(0xdf)],_0x3781ac[_0x13b8(0xdf)]))_0x3d1fb7[_0x13b8(0x54)]({'conversationId':_0x13b8(0x6c)+_0x5e6748['now'](),'messages':_0x9fc373,'context':{'title':_0x37a905[_0x13b8(0x6e)]||_0x566adf[_0x13b8(0xe0)]}});else throw new Error(_0x13b8(0x1a));}const _0x4a7f41=await AsyncStorage['getItem'](_0x3781ac[_0x13b8(0xe1)])||await AsyncStorage[_0x13b8(0xe2)]('enoch_token')||await AsyncStorage['getItem'](_0x3781ac['iFFfv']);if(!_0x4a7f41)throw new Error(_0x3781ac['oxrva']);const _0x550c98=_0x13b8(0xe3)+_0x333df7;let _0x6162e1=0x0;for(const _0x338a5a of _0x73b734){try{const _0xdf4eba=await fetch(API_CONFIG[_0x13b8(0xe4)]+_0x13b8(0xe5),{'method':'POST','headers':{'Content-Type':'application/json','Authorization':_0x13b8(0xe6)+_0x4a7f41},'body':JSON[_0x13b8(0xe7)]({'platform':_0x550c98,'conversationData':{'conversationId':_0x338a5a[_0x13b8(0xe8)],'messages':_0x338a5a[_0x13b8(0x80)],'context':_0x338a5a[_0x13b8(0xe9)],'mobileMetadata':{'platform':Platform['OS'],'appVersion':_0x3781ac[_0x13b8(0xea)],'osVersion':Platform[_0x13b8(0xeb)],'isOfflineSync':![]}},'memoryType':_0x3781ac[_0x13b8(0xec)],'metadata':{'source':_0x3781ac[_0x13b8(0xed)],'importedAt':new Date()[_0x13b8(0x90)](),'originalPlatform':_0x333df7}})});if(_0xdf4eba['ok'])_0x6162e1++;else{const _0x37716a=await _0xdf4eba[_0x13b8(0xb8)]();console['error'](_0x13b8(0xee)+_0x338a5a[_0x13b8(0xe8)]+':',_0x37716a);}}catch(_0x14da97){console[_0x13b8(0x7b)]('Error\x20storing\x20conversation:',_0x14da97);}}if(_0x6162e1>0x0)await AsyncStorage[_0x13b8(0xef)](_0x13b8(0xf0)+_0x333df7,JSON['stringify']({'connected':!![],'platform':_0x333df7,'conversationsCount':_0x6162e1,'lastSyncAt':new Date()[_0x13b8(0x90)]()})),triggerHaptic(HapticType[_0x13b8(0xf1)]),Alert[_0x13b8(0xf2)](_0x3781ac[_0x13b8(0xf3)],_0x13b8(0xf4)+_0x6162e1+'\x20conversation'+(_0x3781ac['JpWdf'](_0x6162e1,0x1)?'s':'')+_0x13b8(0xf5)+_0x331c89+'.',[{'text':'OK','onPress':()=>_0x27608a(_0x333df7)}]);else{if(_0x3781ac[_0x13b8(0x78)](_0x3781ac['cAEAv'],_0x3781ac[_0x13b8(0xf6)])){var _0x38e57e;const _0x5c391d=_0x40c9e5['content']||_0x5e6f68[_0x13b8(0xb8)]||_0x2a9da8['message']||'';if(typeof _0x5c391d===_0x3781ac['ZKxHj']&&_0x5c391d['trim']())_0x2f6d4e[_0x13b8(0x54)]({'id':_0x30a062['id']||'msg_'+_0x231d9f,'role':_0x203969[_0x13b8(0x58)]||_0x2fc657['author']||_0x13b8(0xbc),'content':_0x5c391d,'timestamp':_0x942e27['timestamp']||_0x1106d7[_0x13b8(0x72)]});else _0x3781ac[_0x13b8(0xc8)](_0x38e57e=_0x4a1eef['content'],null)&&_0x3781ac[_0x13b8(0xf7)](_0x38e57e,void 0x0)&&_0x38e57e['parts']&&_0x3c9fec['push']({'id':_0x29c97a['id']||_0x13b8(0x82)+_0x25d58e,'role':_0x2fd30d[_0x13b8(0x58)]||_0x3781ac['iORfx'],'content':_0x32731a['content'][_0x13b8(0x8b)][_0x13b8(0x8c)]('\x0a'),'timestamp':_0x4043ee['timestamp']});}else throw new Error(_0x3781ac[_0x13b8(0xf8)]);}}catch(_0x3fecc1){console['error'](_0x3781ac[_0x13b8(0xf9)],_0x3fecc1),_0x3781ac[_0x13b8(0xfa)](_0x2c9290,_0x3fecc1[_0x13b8(0x55)]||_0x3781ac[_0x13b8(0xfb)]),_0x3781ac['bQLLr'](triggerHaptic,HapticType['ERROR']);}finally{_0x3781ac[_0x13b8(0xfc)](_0x178697,![]);}},_0x18524b=()=>{const _0x3405a5=_0x3781ac[_0x13b8(0xfd)]['split']('|');let _0x4bcd5b=0x0;while(!![]){switch(_0x3405a5[_0x4bcd5b++]){case'0':_0x3781ac['hmsxg'](_0x2c9290,null);continue;case'1':_0x3781ac['BzxbL'](_0x4c7ac2);continue;case'2':_0x50d7a8('');continue;case'3':_0x3a14b(_0x3781ac['nsnbF']);continue;case'4':_0x6aa53b(null);continue;case'5':_0x26ffcc(null);continue;}break;}};return React[_0x13b8(0xfe)](Modal,{'visible':_0x153b08,'animationType':_0x13b8(0xff),'presentationStyle':'pageSheet','onRequestClose':_0x18524b},React[_0x13b8(0xfe)](KeyboardAvoidingView,{'style':styles[_0x13b8(0x100)],'behavior':_0x3781ac[_0x13b8(0x101)](Platform['OS'],_0x13b8(0x102))?_0x3781ac[_0x13b8(0x103)]:_0x3781ac[_0x13b8(0x104)]},React[_0x13b8(0xfe)](View,{'style':styles[_0x13b8(0x105)]},React[_0x13b8(0xfe)](TouchableOpacity,{'style':styles[_0x13b8(0x106)],'onPress':_0x18524b},React[_0x13b8(0xfe)](Text,{'style':styles['closeButtonText']},_0x13b8(0x107))),React['createElement'](Text,{'style':styles['headerTitle']},_0x1c8f3a),React['createElement'](View,{'style':styles[_0x13b8(0x106)]})),React[_0x13b8(0xfe)](ScrollView,{'style':styles[_0x13b8(0x8a)],'contentContainerStyle':styles[_0x13b8(0x108)],'keyboardShouldPersistTaps':_0x3781ac[_0x13b8(0x109)]},React[_0x13b8(0xfe)](View,{'style':styles[_0x13b8(0x10a)]},React[_0x13b8(0xfe)](Text,{'style':styles[_0x13b8(0x10b)]},_0x55b13e)),React[_0x13b8(0xfe)](View,{'style':styles[_0x13b8(0x10c)]},React['createElement'](TouchableOpacity,{'style':[styles[_0x13b8(0x10d)],_0x3781ac[_0x13b8(0x10e)](_0x4f1820,_0x13b8(0x21))&&styles['tabActive']],'onPress':()=>{_0x3781ac[_0x13b8(0x10f)](_0x13b8(0x110),_0x3781ac[_0x13b8(0x111)])?(_0x3781ac[_0x13b8(0x112)](_0x3a14b,_0x3781ac[_0x13b8(0x40)]),_0x3781ac[_0x13b8(0x113)](triggerHaptic,HapticType[_0x13b8(0xbf)])):_0x326810[_0x13b8(0x0)]('react-native-fs not available - file upload disabled');}},React[_0x13b8(0xfe)](Text,{'style':[styles[_0x13b8(0x114)],_0x3781ac[_0x13b8(0x101)](_0x4f1820,_0x3781ac[_0x13b8(0x40)])&&styles['tabTextActive']]},_0x3781ac[_0x13b8(0x115)])),React[_0x13b8(0xfe)](TouchableOpacity,{'style':[styles[_0x13b8(0x10d)],_0x3781ac[_0x13b8(0x101)](_0x4f1820,_0x13b8(0x116))&&styles['tabActive'],!FILE_UPLOAD_AVAILABLE&&styles[_0x13b8(0x117)]],'onPress':()=>{const _0x2395b8={'IAhRi':function(_0xc1ad6a,_0x1d373a){return _0x3781ac[_0x13b8(0xfa)](_0xc1ad6a,_0x1d373a);},'CfsDw':function(_0xb9e8b,_0x26e998){return _0x3781ac['oPlia'](_0xb9e8b,_0x26e998);}};if(FILE_UPLOAD_AVAILABLE)_0x3781ac[_0x13b8(0x118)](_0x3a14b,_0x13b8(0x116)),_0x3781ac[_0x13b8(0x119)](triggerHaptic,HapticType[_0x13b8(0xbf)]);else{if(_0x3781ac[_0x13b8(0x11a)](_0x3781ac[_0x13b8(0x11b)],_0x3781ac[_0x13b8(0x11b)])){const _0xc8af29=_0x2395b8['IAhRi'](_0x559a8b,_0x459480);_0xc8af29['length']>0x0&&_0x10b54b['push']({'conversationId':_0x1f9059['id']||_0x344df1[_0x13b8(0x6b)]||'conv_'+_0x55c246+'_'+_0x4a8481[_0x13b8(0x6d)](),'messages':_0xc8af29,'context':{'title':_0x57e609[_0x13b8(0x6e)]||_0x4a9a62['name']||_0x13b8(0x70)+_0x2395b8['CfsDw'](_0x37cc5f,0x1),'create_time':_0x2ada9d[_0x13b8(0x5a)]||_0x7bc47f[_0x13b8(0x72)],'update_time':_0x24e6dc[_0x13b8(0x73)]||_0x922d6d[_0x13b8(0x74)]}});}else _0x3781ac[_0x13b8(0x113)](_0x2c9290,_0x3781ac[_0x13b8(0x11c)]),_0x3781ac['MwQfp'](triggerHaptic,HapticType[_0x13b8(0xb5)]);}}},React[_0x13b8(0xfe)](Text,{'style':[styles[_0x13b8(0x114)],_0x3781ac[_0x13b8(0x11d)](_0x4f1820,_0x3781ac[_0x13b8(0xbe)])&&styles[_0x13b8(0x11e)],!FILE_UPLOAD_AVAILABLE&&styles[_0x13b8(0x11f)]]},_0x3781ac[_0x13b8(0x120)],_0x3781ac['cdbJc'](!FILE_UPLOAD_AVAILABLE,_0x3781ac['oXhGa'])))),_0x3781ac[_0x13b8(0x56)](_0x4f1820,_0x13b8(0x21))?React[_0x13b8(0xfe)](View,{'style':styles['inputContainer']},React[_0x13b8(0xfe)](TextInput,{'style':styles[_0x13b8(0x121)],'multiline':!![],'placeholder':_0x206257,'placeholderTextColor':COLORS['grey400'],'value':_0x227483,'onChangeText':_0x50d7a8,'textAlignVertical':_0x3781ac['dlnBQ'],'autoCapitalize':_0x3781ac['faybT'],'autoCorrect':![]})):React['createElement'](View,{'style':styles['fileInputContainer']},React['createElement'](TouchableOpacity,{'style':styles[_0x13b8(0x122)],'onPress':_0x41aa01},React[_0x13b8(0xfe)](Text,{'style':styles[_0x13b8(0x123)]},'📁'),React['createElement'](Text,{'style':styles['filePickText']},_0x3781ac['uJIhz'](_0x2468ff,_0x13b8(0x124)))),_0x2468ff&&React[_0x13b8(0xfe)](View,{'style':styles[_0x13b8(0x125)]},React['createElement'](Text,{'style':styles['fileSelectedText']},'✓\x20',_0x2468ff))),_0x571e63&&React[_0x13b8(0xfe)](View,{'style':styles['errorContainer']},React[_0x13b8(0xfe)](Text,{'style':styles[_0x13b8(0x126)]},_0x571e63)),_0x3781ac[_0x13b8(0x127)](_0x227483[_0x13b8(0x69)],0x0)&&React[_0x13b8(0xfe)](View,{'style':styles[_0x13b8(0x128)]},React[_0x13b8(0xfe)](Text,{'style':styles[_0x13b8(0x129)]},_0x3781ac['ITtoI']),React['createElement'](Text,{'style':styles[_0x13b8(0x12a)],'numberOfLines':0x5},_0x227483[_0x13b8(0x12b)](0x0,0x1f4),_0x3781ac[_0x13b8(0x127)](_0x227483[_0x13b8(0x69)],0x1f4)?_0x3781ac['TCOvL']:''),React[_0x13b8(0xfe)](Text,{'style':styles[_0x13b8(0x12c)]},_0x227483[_0x13b8(0x69)]['toLocaleString'](),'\x20characters'))),React['createElement'](View,{'style':styles[_0x13b8(0x12d)]},React['createElement'](TouchableOpacity,{'style':[styles[_0x13b8(0x12e)],(!_0x227483['trim']()||_0x5594ce)&&styles[_0x13b8(0x12f)]],'onPress':_0x577d78,'disabled':!_0x227483['trim']()||_0x5594ce},_0x5594ce?React[_0x13b8(0xfe)](ActivityIndicator,{'color':'#FFFFFF','size':_0x3781ac[_0x13b8(0x130)]}):React[_0x13b8(0xfe)](Text,{'style':styles[_0x13b8(0x131)]},_0x3781ac[_0x13b8(0x132)])))));},styles=StyleSheet[_0x13b8(0x133)]({'container':{'flex':0x1,'backgroundColor':COLORS[_0x13b8(0x134)]},'header':{'flexDirection':'row','alignItems':_0x13b8(0x135),'justifyContent':_0x13b8(0x136),'paddingHorizontal':0x10,'paddingTop':Platform['OS']==='ios'?0xc:0x10,'paddingBottom':0xc,'borderBottomWidth':0x1,'borderBottomColor':_0x13b8(0x137)},'headerTitle':{'fontSize':0x11,'fontWeight':'600','color':COLORS[_0x13b8(0x138)],'fontFamily':_0x13b8(0x139)},'closeButton':{'width':0x3c},'closeButtonText':{'fontSize':0x10,'color':'#3B82F6','fontFamily':_0x13b8(0x13a)},'content':{'flex':0x1},'contentContainer':{'padding':0x14,'paddingBottom':0x28},'instructionsContainer':{'backgroundColor':'#F0F9FF','borderRadius':0xc,'padding':0x10,'marginBottom':0x14},'instructionsText':{'fontSize':0xe,'lineHeight':0x14,'color':_0x13b8(0x13b),'fontFamily':_0x13b8(0x13a)},'tabContainer':{'flexDirection':'row','backgroundColor':_0x13b8(0x13c),'borderRadius':0xa,'padding':0x4,'marginBottom':0x14},'tab':{'flex':0x1,'paddingVertical':0xa,'borderRadius':0x8,'alignItems':'center'},'tabActive':{'backgroundColor':_0x13b8(0x13d),'shadowColor':_0x13b8(0x13e),'shadowOffset':{'width':0x0,'height':0x1},'shadowOpacity':0.1,'shadowRadius':0x2,'elevation':0x2},'tabText':{'fontSize':0xe,'fontWeight':_0x13b8(0x13f),'color':COLORS[_0x13b8(0x140)],'fontFamily':_0x13b8(0x13a)},'tabTextActive':{'color':COLORS[_0x13b8(0x138)]},'tabDisabled':{'opacity':0.5},'tabTextDisabled':{'color':COLORS[_0x13b8(0x141)]},'inputContainer':{'marginBottom':0x14},'textInput':{'backgroundColor':'#FFFFFF','borderWidth':0x1,'borderColor':COLORS[_0x13b8(0x142)],'borderRadius':0xc,'padding':0x10,'minHeight':0xc8,'fontSize':0xe,'fontFamily':Platform['OS']===_0x13b8(0x102)?'Menlo':_0x13b8(0x143),'color':COLORS[_0x13b8(0x138)]},'fileInputContainer':{'marginBottom':0x14},'filePickButton':{'backgroundColor':_0x13b8(0x13d),'borderWidth':0x2,'borderColor':COLORS[_0x13b8(0x142)],'borderStyle':_0x13b8(0x144),'borderRadius':0xc,'padding':0x28,'alignItems':_0x13b8(0x135),'justifyContent':_0x13b8(0x135)},'filePickIcon':{'fontSize':0x28,'marginBottom':0xc},'filePickText':{'fontSize':0xf,'color':COLORS[_0x13b8(0x145)],'fontFamily':'Inter'},'fileSelectedContainer':{'marginTop':0xc,'backgroundColor':_0x13b8(0x146),'borderRadius':0x8,'padding':0xc},'fileSelectedText':{'fontSize':0xe,'color':_0x13b8(0x147),'fontFamily':'Inter','fontWeight':_0x13b8(0x13f)},'errorContainer':{'backgroundColor':_0x13b8(0x148),'borderRadius':0x8,'padding':0xc,'marginBottom':0x10},'errorText':{'fontSize':0xe,'color':_0x13b8(0x149),'fontFamily':_0x13b8(0x13a)},'previewContainer':{'backgroundColor':_0x13b8(0x13c),'borderRadius':0xc,'padding':0x10},'previewTitle':{'fontSize':0xe,'fontWeight':_0x13b8(0x14a),'color':COLORS[_0x13b8(0x138)],'marginBottom':0x8,'fontFamily':'Inter'},'previewText':{'fontSize':0xc,'color':COLORS[_0x13b8(0x145)],'fontFamily':Platform['OS']===_0x13b8(0x102)?_0x13b8(0x14b):_0x13b8(0x143),'lineHeight':0x12},'previewInfo':{'fontSize':0xc,'color':COLORS['grey500'],'marginTop':0x8,'fontFamily':_0x13b8(0x13a)},'footer':{'padding':0x14,'paddingBottom':Platform['OS']===_0x13b8(0x102)?0x22:0x14,'borderTopWidth':0x1,'borderTopColor':'#E5E7EB','backgroundColor':COLORS['surface']},'submitButton':{'backgroundColor':'#10B981','borderRadius':0xc,'paddingVertical':0x10,'alignItems':_0x13b8(0x135),'justifyContent':_0x13b8(0x135)},'submitButtonDisabled':{'backgroundColor':COLORS[_0x13b8(0x142)]},'submitButtonText':{'fontSize':0x10,'fontWeight':_0x13b8(0x14a),'color':'#FFFFFF','fontFamily':_0x13b8(0x13a)}});export default LLMDataInputModal;
8
+ import React, { useState } from 'react';
9
+ import { View, Text, StyleSheet, Modal, TouchableOpacity, TextInput, ScrollView, ActivityIndicator, Alert, Platform, KeyboardAvoidingView } from 'react-native';
10
+ import { COLORS } from '../theme';
11
+ import { triggerHaptic, HapticType } from '../utils/haptics';
12
+ import AsyncStorage from '@react-native-async-storage/async-storage';
13
+ import { API_CONFIG } from '../config/api';
14
+
15
+ // Optional dependencies - file upload won't work without them
16
+ let DocumentPicker = null;
17
+ let RNFS = null;
18
+ try {
19
+ DocumentPicker = require('react-native-document-picker');
20
+ } catch (e) {
21
+ console.log('react-native-document-picker not available - file upload disabled');
22
+ }
23
+ try {
24
+ RNFS = require('react-native-fs');
25
+ } catch (e) {
26
+ console.log('react-native-fs not available - file upload disabled');
27
+ }
28
+ const FILE_UPLOAD_AVAILABLE = DocumentPicker !== null && RNFS !== null;
29
+ const LLMDataInputModal = ({
30
+ visible,
31
+ platform,
32
+ platformName,
33
+ onClose,
34
+ onSuccess
35
+ }) => {
36
+ const [inputMode, setInputMode] = useState('paste');
37
+ const [pastedData, setPastedData] = useState('');
38
+ const [isLoading, setIsLoading] = useState(false);
39
+ const [error, setError] = useState(null);
40
+ const [selectedFileName, setSelectedFileName] = useState(null);
41
+ const [fileContent, setFileContent] = useState(null);
42
+
43
+ // Get platform-specific instructions
44
+ const getInstructions = () => {
45
+ switch (platform) {
46
+ case 'chatgpt':
47
+ return {
48
+ title: 'Connect ChatGPT',
49
+ instructions: 'Export your ChatGPT conversations from Settings → Data Controls → Export data. Then upload the JSON file or paste your conversation data.',
50
+ placeholder: 'Paste your ChatGPT conversation JSON here...'
51
+ };
52
+ case 'claude':
53
+ return {
54
+ title: 'Connect Claude',
55
+ instructions: 'Export your Claude conversations and paste the JSON data below, or upload your exported file.',
56
+ placeholder: 'Paste your Claude conversation JSON here...'
57
+ };
58
+ case 'gemini':
59
+ return {
60
+ title: 'Connect Gemini',
61
+ instructions: 'Export your Gemini (Google AI) conversations and paste the data below.',
62
+ placeholder: 'Paste your Gemini conversation JSON here...'
63
+ };
64
+ case 'grok':
65
+ return {
66
+ title: 'Connect Grok',
67
+ instructions: 'Export your Grok conversations from X/Twitter and paste the data below.',
68
+ placeholder: 'Paste your Grok conversation JSON here...'
69
+ };
70
+ default:
71
+ return {
72
+ title: `Connect ${platformName}`,
73
+ instructions: 'Paste your conversation data below or upload a JSON file.',
74
+ placeholder: 'Paste your conversation JSON here...'
75
+ };
76
+ }
77
+ };
78
+ const {
79
+ title,
80
+ instructions,
81
+ placeholder
82
+ } = getInstructions();
83
+
84
+ // Parse conversation data based on platform format
85
+ const parseConversationData = data => {
86
+ try {
87
+ const parsed = JSON.parse(data);
88
+ const conversations = [];
89
+
90
+ // Handle ChatGPT export format
91
+ if (Array.isArray(parsed)) {
92
+ // Array of conversations
93
+ parsed.forEach((conv, index) => {
94
+ const messages = extractMessages(conv);
95
+ if (messages.length > 0) {
96
+ conversations.push({
97
+ conversationId: conv.id || conv.conversation_id || `conv_${index}_${Date.now()}`,
98
+ messages,
99
+ context: {
100
+ title: conv.title || conv.name || `Conversation ${index + 1}`,
101
+ create_time: conv.create_time || conv.created_at,
102
+ update_time: conv.update_time || conv.updated_at
103
+ }
104
+ });
105
+ }
106
+ });
107
+ } else if (parsed.conversations && Array.isArray(parsed.conversations)) {
108
+ // ChatGPT export with conversations array
109
+ parsed.conversations.forEach((conv, index) => {
110
+ const messages = extractMessages(conv);
111
+ if (messages.length > 0) {
112
+ conversations.push({
113
+ conversationId: conv.id || `conv_${index}_${Date.now()}`,
114
+ messages,
115
+ context: {
116
+ title: conv.title || `Conversation ${index + 1}`,
117
+ create_time: conv.create_time,
118
+ update_time: conv.update_time
119
+ }
120
+ });
121
+ }
122
+ });
123
+ } else if (parsed.mapping || parsed.messages) {
124
+ // Single conversation format
125
+ const messages = extractMessages(parsed);
126
+ if (messages.length > 0) {
127
+ conversations.push({
128
+ conversationId: parsed.id || `conv_${Date.now()}`,
129
+ messages,
130
+ context: {
131
+ title: parsed.title || 'Imported Conversation',
132
+ create_time: parsed.create_time,
133
+ update_time: parsed.update_time
134
+ }
135
+ });
136
+ }
137
+ } else {
138
+ // Try to handle as a single object with message array
139
+ const messages = extractMessages(parsed);
140
+ if (messages.length > 0) {
141
+ conversations.push({
142
+ conversationId: `conv_${Date.now()}`,
143
+ messages,
144
+ context: {
145
+ title: parsed.title || 'Imported Conversation'
146
+ }
147
+ });
148
+ }
149
+ }
150
+ return conversations;
151
+ } catch (e) {
152
+ console.error('Error parsing conversation data:', e);
153
+ throw new Error('Invalid JSON format. Please check your data and try again.');
154
+ }
155
+ };
156
+
157
+ // Extract messages from various formats
158
+ const extractMessages = conv => {
159
+ const messages = [];
160
+
161
+ // ChatGPT mapping format
162
+ if (conv.mapping) {
163
+ Object.values(conv.mapping).forEach((node, index) => {
164
+ var _node$message;
165
+ if (node !== null && node !== void 0 && (_node$message = node.message) !== null && _node$message !== void 0 && (_node$message = _node$message.content) !== null && _node$message !== void 0 && _node$message.parts) {
166
+ const content = node.message.content.parts.join('\n');
167
+ if (content.trim()) {
168
+ var _node$message$author;
169
+ messages.push({
170
+ id: node.message.id || `msg_${index}`,
171
+ role: ((_node$message$author = node.message.author) === null || _node$message$author === void 0 ? void 0 : _node$message$author.role) || 'unknown',
172
+ content,
173
+ timestamp: node.message.create_time ? new Date(node.message.create_time * 1000).toISOString() : undefined
174
+ });
175
+ }
176
+ }
177
+ });
178
+ }
179
+
180
+ // Direct messages array
181
+ if (conv.messages && Array.isArray(conv.messages)) {
182
+ conv.messages.forEach((msg, index) => {
183
+ var _msg$content;
184
+ const content = msg.content || msg.text || msg.message || '';
185
+ if (typeof content === 'string' && content.trim()) {
186
+ messages.push({
187
+ id: msg.id || `msg_${index}`,
188
+ role: msg.role || msg.author || 'user',
189
+ content,
190
+ timestamp: msg.timestamp || msg.created_at
191
+ });
192
+ } else if ((_msg$content = msg.content) !== null && _msg$content !== void 0 && _msg$content.parts) {
193
+ messages.push({
194
+ id: msg.id || `msg_${index}`,
195
+ role: msg.role || 'user',
196
+ content: msg.content.parts.join('\n'),
197
+ timestamp: msg.timestamp
198
+ });
199
+ }
200
+ });
201
+ }
202
+
203
+ // Claude format
204
+ if (conv.chat_messages && Array.isArray(conv.chat_messages)) {
205
+ conv.chat_messages.forEach((msg, index) => {
206
+ if (msg.text || msg.content) {
207
+ messages.push({
208
+ id: msg.uuid || `msg_${index}`,
209
+ role: msg.sender === 'human' ? 'user' : 'assistant',
210
+ content: msg.text || msg.content,
211
+ timestamp: msg.created_at
212
+ });
213
+ }
214
+ });
215
+ }
216
+ return messages;
217
+ };
218
+
219
+ // Handle file selection
220
+ const handleFilePick = async () => {
221
+ if (!FILE_UPLOAD_AVAILABLE) {
222
+ setError('File upload requires react-native-document-picker and react-native-fs. Please paste data instead.');
223
+ return;
224
+ }
225
+ try {
226
+ setError(null);
227
+ const {
228
+ pick,
229
+ types
230
+ } = DocumentPicker;
231
+ const result = await pick({
232
+ type: [types.json, types.plainText, types.allFiles]
233
+ });
234
+ if (result && result[0]) {
235
+ const file = result[0];
236
+ setSelectedFileName(file.name || 'Selected file');
237
+
238
+ // Read file content
239
+ let content;
240
+ if (file.uri.startsWith('content://')) {
241
+ // Android content URI
242
+ content = await RNFS.readFile(file.uri, 'utf8');
243
+ } else {
244
+ content = await RNFS.readFile(file.uri, 'utf8');
245
+ }
246
+ setFileContent(content);
247
+ setPastedData(content);
248
+ triggerHaptic(HapticType.SUCCESS);
249
+ }
250
+ } catch (err) {
251
+ if (err.code !== 'DOCUMENT_PICKER_CANCELED') {
252
+ console.error('File pick error:', err);
253
+ setError('Failed to read file. Please try again or paste data manually.');
254
+ triggerHaptic(HapticType.ERROR);
255
+ }
256
+ }
257
+ };
258
+
259
+ // Submit data to backend
260
+ const handleSubmit = async () => {
261
+ const dataToProcess = inputMode === 'file' && fileContent ? fileContent : pastedData;
262
+ if (!dataToProcess.trim()) {
263
+ setError('Please paste or upload conversation data first.');
264
+ triggerHaptic(HapticType.ERROR);
265
+ return;
266
+ }
267
+ setIsLoading(true);
268
+ setError(null);
269
+ try {
270
+ // Parse the conversation data
271
+ const conversations = parseConversationData(dataToProcess);
272
+ if (conversations.length === 0) {
273
+ throw new Error('No valid conversations found in the data. Please check the format.');
274
+ }
275
+
276
+ // Get auth token
277
+ const authToken = (await AsyncStorage.getItem('onairos_jwt_token')) || (await AsyncStorage.getItem('enoch_token')) || (await AsyncStorage.getItem('auth_token'));
278
+ if (!authToken) {
279
+ throw new Error('Authentication required. Please sign in first.');
280
+ }
281
+
282
+ // Send each conversation to backend
283
+ const mobilePlatform = `mobile-${platform}`;
284
+ let successCount = 0;
285
+ for (const conversation of conversations) {
286
+ try {
287
+ const response = await fetch(`${API_CONFIG.BASE_URL}/llm-data/store`, {
288
+ method: 'POST',
289
+ headers: {
290
+ 'Content-Type': 'application/json',
291
+ 'Authorization': `Bearer ${authToken}`
292
+ },
293
+ body: JSON.stringify({
294
+ platform: mobilePlatform,
295
+ conversationData: {
296
+ conversationId: conversation.conversationId,
297
+ messages: conversation.messages,
298
+ context: conversation.context,
299
+ mobileMetadata: {
300
+ platform: Platform.OS,
301
+ appVersion: '1.0.0',
302
+ osVersion: Platform.Version,
303
+ isOfflineSync: false
304
+ }
305
+ },
306
+ memoryType: 'conversation',
307
+ metadata: {
308
+ source: 'mobile_app_import',
309
+ importedAt: new Date().toISOString(),
310
+ originalPlatform: platform
311
+ }
312
+ })
313
+ });
314
+ if (response.ok) {
315
+ successCount++;
316
+ } else {
317
+ const errorText = await response.text();
318
+ console.error(`Failed to store conversation ${conversation.conversationId}:`, errorText);
319
+ }
320
+ } catch (convError) {
321
+ console.error(`Error storing conversation:`, convError);
322
+ }
323
+ }
324
+ if (successCount > 0) {
325
+ // Store connection status locally
326
+ await AsyncStorage.setItem(`@onairos:llm_connected:${platform}`, JSON.stringify({
327
+ connected: true,
328
+ platform,
329
+ conversationsCount: successCount,
330
+ lastSyncAt: new Date().toISOString()
331
+ }));
332
+ triggerHaptic(HapticType.SUCCESS);
333
+ Alert.alert('Success! 🎉', `Successfully imported ${successCount} conversation${successCount > 1 ? 's' : ''} from ${platformName}.`, [{
334
+ text: 'OK',
335
+ onPress: () => onSuccess(platform)
336
+ }]);
337
+ } else {
338
+ throw new Error('Failed to import any conversations. Please check your data format.');
339
+ }
340
+ } catch (err) {
341
+ console.error('Submit error:', err);
342
+ setError(err.message || 'Failed to import data. Please try again.');
343
+ triggerHaptic(HapticType.ERROR);
344
+ } finally {
345
+ setIsLoading(false);
346
+ }
347
+ };
348
+
349
+ // Reset state when modal closes
350
+ const handleClose = () => {
351
+ setPastedData('');
352
+ setFileContent(null);
353
+ setSelectedFileName(null);
354
+ setError(null);
355
+ setInputMode('paste');
356
+ onClose();
357
+ };
358
+ return /*#__PURE__*/React.createElement(Modal, {
359
+ visible: visible,
360
+ animationType: "slide",
361
+ presentationStyle: "pageSheet",
362
+ onRequestClose: handleClose
363
+ }, /*#__PURE__*/React.createElement(KeyboardAvoidingView, {
364
+ style: styles.container,
365
+ behavior: Platform.OS === 'ios' ? 'padding' : 'height'
366
+ }, /*#__PURE__*/React.createElement(View, {
367
+ style: styles.header
368
+ }, /*#__PURE__*/React.createElement(TouchableOpacity, {
369
+ style: styles.closeButton,
370
+ onPress: handleClose
371
+ }, /*#__PURE__*/React.createElement(Text, {
372
+ style: styles.closeButtonText
373
+ }, "Cancel")), /*#__PURE__*/React.createElement(Text, {
374
+ style: styles.headerTitle
375
+ }, title), /*#__PURE__*/React.createElement(View, {
376
+ style: styles.closeButton
377
+ })), /*#__PURE__*/React.createElement(ScrollView, {
378
+ style: styles.content,
379
+ contentContainerStyle: styles.contentContainer,
380
+ keyboardShouldPersistTaps: "handled"
381
+ }, /*#__PURE__*/React.createElement(View, {
382
+ style: styles.instructionsContainer
383
+ }, /*#__PURE__*/React.createElement(Text, {
384
+ style: styles.instructionsText
385
+ }, instructions)), /*#__PURE__*/React.createElement(View, {
386
+ style: styles.tabContainer
387
+ }, /*#__PURE__*/React.createElement(TouchableOpacity, {
388
+ style: [styles.tab, inputMode === 'paste' && styles.tabActive],
389
+ onPress: () => {
390
+ setInputMode('paste');
391
+ triggerHaptic(HapticType.BUTTON_PRESS);
392
+ }
393
+ }, /*#__PURE__*/React.createElement(Text, {
394
+ style: [styles.tabText, inputMode === 'paste' && styles.tabTextActive]
395
+ }, "Paste Data")), /*#__PURE__*/React.createElement(TouchableOpacity, {
396
+ style: [styles.tab, inputMode === 'file' && styles.tabActive, !FILE_UPLOAD_AVAILABLE && styles.tabDisabled],
397
+ onPress: () => {
398
+ if (FILE_UPLOAD_AVAILABLE) {
399
+ setInputMode('file');
400
+ triggerHaptic(HapticType.BUTTON_PRESS);
401
+ } else {
402
+ setError('File upload requires additional dependencies. Please paste data instead.');
403
+ triggerHaptic(HapticType.ERROR);
404
+ }
405
+ }
406
+ }, /*#__PURE__*/React.createElement(Text, {
407
+ style: [styles.tabText, inputMode === 'file' && styles.tabTextActive, !FILE_UPLOAD_AVAILABLE && styles.tabTextDisabled]
408
+ }, "Upload File ", !FILE_UPLOAD_AVAILABLE && '(N/A)'))), inputMode === 'paste' ? /*#__PURE__*/React.createElement(View, {
409
+ style: styles.inputContainer
410
+ }, /*#__PURE__*/React.createElement(TextInput, {
411
+ style: styles.textInput,
412
+ multiline: true,
413
+ placeholder: placeholder,
414
+ placeholderTextColor: COLORS.grey400,
415
+ value: pastedData,
416
+ onChangeText: setPastedData,
417
+ textAlignVertical: "top",
418
+ autoCapitalize: "none",
419
+ autoCorrect: false
420
+ })) : /*#__PURE__*/React.createElement(View, {
421
+ style: styles.fileInputContainer
422
+ }, /*#__PURE__*/React.createElement(TouchableOpacity, {
423
+ style: styles.filePickButton,
424
+ onPress: handleFilePick
425
+ }, /*#__PURE__*/React.createElement(Text, {
426
+ style: styles.filePickIcon
427
+ }, "\uD83D\uDCC1"), /*#__PURE__*/React.createElement(Text, {
428
+ style: styles.filePickText
429
+ }, selectedFileName || 'Tap to select a file')), selectedFileName && /*#__PURE__*/React.createElement(View, {
430
+ style: styles.fileSelectedContainer
431
+ }, /*#__PURE__*/React.createElement(Text, {
432
+ style: styles.fileSelectedText
433
+ }, "\u2713 ", selectedFileName))), error && /*#__PURE__*/React.createElement(View, {
434
+ style: styles.errorContainer
435
+ }, /*#__PURE__*/React.createElement(Text, {
436
+ style: styles.errorText
437
+ }, error)), pastedData.length > 0 && /*#__PURE__*/React.createElement(View, {
438
+ style: styles.previewContainer
439
+ }, /*#__PURE__*/React.createElement(Text, {
440
+ style: styles.previewTitle
441
+ }, "Data Preview"), /*#__PURE__*/React.createElement(Text, {
442
+ style: styles.previewText,
443
+ numberOfLines: 5
444
+ }, pastedData.substring(0, 500), pastedData.length > 500 ? '...' : ''), /*#__PURE__*/React.createElement(Text, {
445
+ style: styles.previewInfo
446
+ }, pastedData.length.toLocaleString(), " characters"))), /*#__PURE__*/React.createElement(View, {
447
+ style: styles.footer
448
+ }, /*#__PURE__*/React.createElement(TouchableOpacity, {
449
+ style: [styles.submitButton, (!pastedData.trim() || isLoading) && styles.submitButtonDisabled],
450
+ onPress: handleSubmit,
451
+ disabled: !pastedData.trim() || isLoading
452
+ }, isLoading ? /*#__PURE__*/React.createElement(ActivityIndicator, {
453
+ color: "#FFFFFF",
454
+ size: "small"
455
+ }) : /*#__PURE__*/React.createElement(Text, {
456
+ style: styles.submitButtonText
457
+ }, "Import Conversations")))));
458
+ };
459
+ const styles = StyleSheet.create({
460
+ container: {
461
+ flex: 1,
462
+ backgroundColor: COLORS.surface
463
+ },
464
+ header: {
465
+ flexDirection: 'row',
466
+ alignItems: 'center',
467
+ justifyContent: 'space-between',
468
+ paddingHorizontal: 16,
469
+ paddingTop: Platform.OS === 'ios' ? 12 : 16,
470
+ paddingBottom: 12,
471
+ borderBottomWidth: 1,
472
+ borderBottomColor: '#E5E7EB' // grey200
473
+ },
474
+ headerTitle: {
475
+ fontSize: 17,
476
+ fontWeight: '600',
477
+ color: COLORS.grey800,
478
+ fontFamily: 'IBM Plex Sans'
479
+ },
480
+ closeButton: {
481
+ width: 60
482
+ },
483
+ closeButtonText: {
484
+ fontSize: 16,
485
+ color: '#3B82F6',
486
+ fontFamily: 'Inter'
487
+ },
488
+ content: {
489
+ flex: 1
490
+ },
491
+ contentContainer: {
492
+ padding: 20,
493
+ paddingBottom: 40
494
+ },
495
+ instructionsContainer: {
496
+ backgroundColor: '#F0F9FF',
497
+ borderRadius: 12,
498
+ padding: 16,
499
+ marginBottom: 20
500
+ },
501
+ instructionsText: {
502
+ fontSize: 14,
503
+ lineHeight: 20,
504
+ color: '#0369A1',
505
+ fontFamily: 'Inter'
506
+ },
507
+ tabContainer: {
508
+ flexDirection: 'row',
509
+ backgroundColor: '#F3F4F6',
510
+ // grey100
511
+ borderRadius: 10,
512
+ padding: 4,
513
+ marginBottom: 20
514
+ },
515
+ tab: {
516
+ flex: 1,
517
+ paddingVertical: 10,
518
+ borderRadius: 8,
519
+ alignItems: 'center'
520
+ },
521
+ tabActive: {
522
+ backgroundColor: '#FFFFFF',
523
+ shadowColor: '#000',
524
+ shadowOffset: {
525
+ width: 0,
526
+ height: 1
527
+ },
528
+ shadowOpacity: 0.1,
529
+ shadowRadius: 2,
530
+ elevation: 2
531
+ },
532
+ tabText: {
533
+ fontSize: 14,
534
+ fontWeight: '500',
535
+ color: COLORS.grey500,
536
+ fontFamily: 'Inter'
537
+ },
538
+ tabTextActive: {
539
+ color: COLORS.grey800
540
+ },
541
+ tabDisabled: {
542
+ opacity: 0.5
543
+ },
544
+ tabTextDisabled: {
545
+ color: COLORS.grey400
546
+ },
547
+ inputContainer: {
548
+ marginBottom: 20
549
+ },
550
+ textInput: {
551
+ backgroundColor: '#FFFFFF',
552
+ borderWidth: 1,
553
+ borderColor: COLORS.grey300,
554
+ borderRadius: 12,
555
+ padding: 16,
556
+ minHeight: 200,
557
+ fontSize: 14,
558
+ fontFamily: Platform.OS === 'ios' ? 'Menlo' : 'monospace',
559
+ color: COLORS.grey800
560
+ },
561
+ fileInputContainer: {
562
+ marginBottom: 20
563
+ },
564
+ filePickButton: {
565
+ backgroundColor: '#FFFFFF',
566
+ borderWidth: 2,
567
+ borderColor: COLORS.grey300,
568
+ borderStyle: 'dashed',
569
+ borderRadius: 12,
570
+ padding: 40,
571
+ alignItems: 'center',
572
+ justifyContent: 'center'
573
+ },
574
+ filePickIcon: {
575
+ fontSize: 40,
576
+ marginBottom: 12
577
+ },
578
+ filePickText: {
579
+ fontSize: 15,
580
+ color: COLORS.grey600,
581
+ fontFamily: 'Inter'
582
+ },
583
+ fileSelectedContainer: {
584
+ marginTop: 12,
585
+ backgroundColor: '#F0FDF4',
586
+ borderRadius: 8,
587
+ padding: 12
588
+ },
589
+ fileSelectedText: {
590
+ fontSize: 14,
591
+ color: '#166534',
592
+ fontFamily: 'Inter',
593
+ fontWeight: '500'
594
+ },
595
+ errorContainer: {
596
+ backgroundColor: '#FEF2F2',
597
+ borderRadius: 8,
598
+ padding: 12,
599
+ marginBottom: 16
600
+ },
601
+ errorText: {
602
+ fontSize: 14,
603
+ color: '#DC2626',
604
+ fontFamily: 'Inter'
605
+ },
606
+ previewContainer: {
607
+ backgroundColor: '#F3F4F6',
608
+ // grey100
609
+ borderRadius: 12,
610
+ padding: 16
611
+ },
612
+ previewTitle: {
613
+ fontSize: 14,
614
+ fontWeight: '600',
615
+ color: COLORS.grey800,
616
+ marginBottom: 8,
617
+ fontFamily: 'Inter'
618
+ },
619
+ previewText: {
620
+ fontSize: 12,
621
+ color: COLORS.grey600,
622
+ fontFamily: Platform.OS === 'ios' ? 'Menlo' : 'monospace',
623
+ lineHeight: 18
624
+ },
625
+ previewInfo: {
626
+ fontSize: 12,
627
+ color: COLORS.grey500,
628
+ marginTop: 8,
629
+ fontFamily: 'Inter'
630
+ },
631
+ footer: {
632
+ padding: 20,
633
+ paddingBottom: Platform.OS === 'ios' ? 34 : 20,
634
+ borderTopWidth: 1,
635
+ borderTopColor: '#E5E7EB',
636
+ // grey200
637
+ backgroundColor: COLORS.surface
638
+ },
639
+ submitButton: {
640
+ backgroundColor: '#10B981',
641
+ borderRadius: 12,
642
+ paddingVertical: 16,
643
+ alignItems: 'center',
644
+ justifyContent: 'center'
645
+ },
646
+ submitButtonDisabled: {
647
+ backgroundColor: COLORS.grey300
648
+ },
649
+ submitButtonText: {
650
+ fontSize: 16,
651
+ fontWeight: '600',
652
+ color: '#FFFFFF',
653
+ fontFamily: 'Inter'
654
+ }
655
+ });
656
+ export default LLMDataInputModal;
657
+ //# sourceMappingURL=LLMDataInputModal.js.map