react-native-inapp-inspector 2.4.1 → 2.4.2

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 (231) hide show
  1. package/README.ar.md +163 -0
  2. package/README.de.md +163 -0
  3. package/README.es.md +164 -0
  4. package/README.fr.md +163 -0
  5. package/README.hi.md +163 -0
  6. package/README.ja.md +180 -0
  7. package/README.ko.md +163 -0
  8. package/README.md +340 -243
  9. package/README.pt-BR.md +163 -0
  10. package/README.ru.md +163 -0
  11. package/README.zh-CN.md +387 -0
  12. package/android/src/main/java/com/inappinspector/NetworkInspectorModule.kt +82 -21
  13. package/assets/banner_dark.svg +186 -0
  14. package/assets/banner_light.svg +186 -0
  15. package/assets/icon_circle.svg +148 -0
  16. package/assets/icon_square.svg +369 -0
  17. package/assets/inapp_inspector_icon.gif +0 -0
  18. package/assets/inapp_inspector_icon_original.gif +0 -0
  19. package/assets/social_preview.png +0 -0
  20. package/assets/walkthrough.gif +0 -0
  21. package/dist/commonjs/components/AnimatedBrandOwl.d.ts +7 -0
  22. package/dist/commonjs/components/AnimatedBrandOwl.js +175 -0
  23. package/dist/commonjs/components/AppHeaderLogo.d.ts +1 -0
  24. package/dist/commonjs/components/AppHeaderLogo.js +7 -5
  25. package/dist/commonjs/components/BrandSquareIcon.d.ts +5 -0
  26. package/dist/commonjs/components/BrandSquareIcon.js +139 -0
  27. package/dist/commonjs/components/ConsoleLogCard.d.ts +2 -1
  28. package/dist/commonjs/components/ConsoleLogCard.js +23 -39
  29. package/dist/commonjs/components/Inspector/AboutModal.js +44 -54
  30. package/dist/commonjs/components/Inspector/AnalyticsTab.js +5 -5
  31. package/dist/commonjs/components/Inspector/ConfirmationModal.d.ts +13 -0
  32. package/dist/commonjs/components/Inspector/ConfirmationModal.js +32 -0
  33. package/dist/commonjs/components/Inspector/ConsoleTab.js +11 -11
  34. package/dist/commonjs/components/Inspector/CrashTab.js +14 -12
  35. package/dist/commonjs/components/Inspector/DebuggingTab.js +17 -17
  36. package/dist/commonjs/components/Inspector/FabLauncher.js +22 -30
  37. package/dist/commonjs/components/Inspector/FeatureUnderDevNotice.js +2 -2
  38. package/dist/commonjs/components/Inspector/LanguageSelectorModal.d.ts +15 -0
  39. package/dist/commonjs/components/Inspector/LanguageSelectorModal.js +90 -0
  40. package/dist/commonjs/components/Inspector/MainScreen.js +46 -33
  41. package/dist/commonjs/components/Inspector/MediaGalleryTab.js +21 -19
  42. package/dist/commonjs/components/Inspector/MediaPreviewModal.js +85 -101
  43. package/dist/commonjs/components/Inspector/NetworkTab.js +50 -50
  44. package/dist/commonjs/components/Inspector/NpmUpdateToast.js +1 -1
  45. package/dist/commonjs/components/Inspector/PushCard.d.ts +3 -2
  46. package/dist/commonjs/components/Inspector/PushCard.js +5 -4
  47. package/dist/commonjs/components/Inspector/PushDetail.js +32 -23
  48. package/dist/commonjs/components/Inspector/PushTab.js +12 -12
  49. package/dist/commonjs/components/Inspector/ReduxDetail.js +32 -32
  50. package/dist/commonjs/components/Inspector/ReduxTab.js +5 -5
  51. package/dist/commonjs/components/Inspector/SettingsPanel.js +258 -139
  52. package/dist/commonjs/components/Inspector/SocketCard.d.ts +5 -0
  53. package/dist/commonjs/components/Inspector/SocketCard.js +116 -0
  54. package/dist/commonjs/components/Inspector/SocketDetail.d.ts +4 -0
  55. package/dist/commonjs/components/Inspector/SocketDetail.js +317 -0
  56. package/dist/commonjs/components/Inspector/SocketFilterModal.d.ts +13 -0
  57. package/dist/commonjs/components/Inspector/SocketFilterModal.js +69 -0
  58. package/dist/commonjs/components/Inspector/SocketTab.d.ts +3 -0
  59. package/dist/commonjs/components/Inspector/SocketTab.js +112 -0
  60. package/dist/commonjs/components/Inspector/StorageTab.js +38 -36
  61. package/dist/commonjs/components/Inspector/SupportModal.d.ts +7 -0
  62. package/dist/commonjs/components/Inspector/SupportModal.js +125 -0
  63. package/dist/commonjs/components/Inspector/SupportPage.d.ts +5 -0
  64. package/dist/commonjs/components/Inspector/SupportPage.js +227 -0
  65. package/dist/commonjs/components/Inspector/TabBar.js +24 -23
  66. package/dist/commonjs/components/Inspector/UpdateAvailableModal.js +24 -24
  67. package/dist/commonjs/components/JsonViewer.js +7 -7
  68. package/dist/commonjs/components/LogCard.d.ts +3 -2
  69. package/dist/commonjs/components/LogCard.js +13 -13
  70. package/dist/commonjs/components/LogSyntaxHighlighter.js +5 -5
  71. package/dist/commonjs/components/ModuleErrorBoundary.js +2 -2
  72. package/dist/commonjs/components/NetworkIcons.d.ts +15 -0
  73. package/dist/commonjs/components/NetworkIcons.js +38 -3
  74. package/dist/commonjs/components/SegmentedTabs.js +1 -1
  75. package/dist/commonjs/constants/version.d.ts +1 -1
  76. package/dist/commonjs/constants/version.js +1 -1
  77. package/dist/commonjs/customHooks/socketLogger.d.ts +26 -0
  78. package/dist/commonjs/customHooks/socketLogger.js +2 -0
  79. package/dist/commonjs/helpers/index.js +3 -3
  80. package/dist/commonjs/helpers/memoryManager.d.ts +1 -0
  81. package/dist/commonjs/helpers/memoryManager.js +1 -1
  82. package/dist/commonjs/helpers/searchQueryParser.d.ts +1 -1
  83. package/dist/commonjs/helpers/searchQueryParser.js +5 -1
  84. package/dist/commonjs/helpers/settingsStore.d.ts +1 -0
  85. package/dist/commonjs/helpers/settingsStore.js +1 -1
  86. package/dist/commonjs/helpers/shareFormatter.d.ts +3 -1
  87. package/dist/commonjs/helpers/shareFormatter.js +8 -7
  88. package/dist/commonjs/i18n/index.d.ts +99 -1
  89. package/dist/commonjs/i18n/index.js +1 -1
  90. package/dist/commonjs/i18n/locales/ar.json +1 -1
  91. package/dist/commonjs/i18n/locales/bn.json +1 -0
  92. package/dist/commonjs/i18n/locales/de.json +1 -1
  93. package/dist/commonjs/i18n/locales/en.json +1 -1
  94. package/dist/commonjs/i18n/locales/es.json +1 -1
  95. package/dist/commonjs/i18n/locales/fr.json +1 -1
  96. package/dist/commonjs/i18n/locales/gu.json +1 -0
  97. package/dist/commonjs/i18n/locales/hi.json +1 -1
  98. package/dist/commonjs/i18n/locales/id.json +1 -0
  99. package/dist/commonjs/i18n/locales/it.json +1 -0
  100. package/dist/commonjs/i18n/locales/ja.json +1 -1
  101. package/dist/commonjs/i18n/locales/kn.json +1 -0
  102. package/dist/commonjs/i18n/locales/ko.json +1 -1
  103. package/dist/commonjs/i18n/locales/ml.json +1 -0
  104. package/dist/commonjs/i18n/locales/mr.json +1 -0
  105. package/dist/commonjs/i18n/locales/nl.json +1 -0
  106. package/dist/commonjs/i18n/locales/pa.json +1 -0
  107. package/dist/commonjs/i18n/locales/pl.json +1 -0
  108. package/dist/commonjs/i18n/locales/pt.json +1 -1
  109. package/dist/commonjs/i18n/locales/ru.json +1 -1
  110. package/dist/commonjs/i18n/locales/ta.json +1 -0
  111. package/dist/commonjs/i18n/locales/te.json +1 -0
  112. package/dist/commonjs/i18n/locales/tr.json +1 -0
  113. package/dist/commonjs/i18n/locales/vi.json +1 -0
  114. package/dist/commonjs/i18n/locales/zh.json +1 -1
  115. package/dist/commonjs/index.d.ts +13 -13
  116. package/dist/commonjs/index.js +5 -4
  117. package/dist/commonjs/native/NativeInspector.d.ts +1 -0
  118. package/dist/commonjs/socket.d.ts +4 -0
  119. package/dist/commonjs/socket.js +1 -0
  120. package/dist/commonjs/styles/index.d.ts +23 -0
  121. package/dist/commonjs/styles/index.js +1 -1
  122. package/dist/commonjs/types/enums.d.ts +40 -0
  123. package/dist/commonjs/types/enums.js +1 -1
  124. package/dist/commonjs/types/interfaces.d.ts +122 -1
  125. package/dist/esm/components/AnimatedBrandOwl.d.ts +7 -0
  126. package/dist/esm/components/AnimatedBrandOwl.js +175 -0
  127. package/dist/esm/components/AppHeaderLogo.d.ts +1 -0
  128. package/dist/esm/components/AppHeaderLogo.js +7 -5
  129. package/dist/esm/components/BrandSquareIcon.d.ts +5 -0
  130. package/dist/esm/components/BrandSquareIcon.js +139 -0
  131. package/dist/esm/components/ConsoleLogCard.d.ts +2 -1
  132. package/dist/esm/components/ConsoleLogCard.js +61 -77
  133. package/dist/esm/components/Inspector/AboutModal.js +85 -95
  134. package/dist/esm/components/Inspector/AnalyticsTab.js +15 -15
  135. package/dist/esm/components/Inspector/ConfirmationModal.d.ts +13 -0
  136. package/dist/esm/components/Inspector/ConfirmationModal.js +32 -0
  137. package/dist/esm/components/Inspector/ConsoleTab.js +47 -47
  138. package/dist/esm/components/Inspector/CrashTab.js +34 -32
  139. package/dist/esm/components/Inspector/DebuggingTab.js +29 -29
  140. package/dist/esm/components/Inspector/FabLauncher.js +50 -58
  141. package/dist/esm/components/Inspector/FeatureUnderDevNotice.js +7 -7
  142. package/dist/esm/components/Inspector/LanguageSelectorModal.d.ts +15 -0
  143. package/dist/esm/components/Inspector/LanguageSelectorModal.js +90 -0
  144. package/dist/esm/components/Inspector/MainScreen.js +123 -110
  145. package/dist/esm/components/Inspector/MediaGalleryTab.js +64 -62
  146. package/dist/esm/components/Inspector/MediaPreviewModal.js +107 -123
  147. package/dist/esm/components/Inspector/NetworkTab.js +90 -90
  148. package/dist/esm/components/Inspector/NpmUpdateToast.js +1 -1
  149. package/dist/esm/components/Inspector/PushCard.d.ts +3 -2
  150. package/dist/esm/components/Inspector/PushCard.js +23 -22
  151. package/dist/esm/components/Inspector/PushDetail.js +34 -25
  152. package/dist/esm/components/Inspector/PushTab.js +23 -23
  153. package/dist/esm/components/Inspector/ReduxDetail.js +42 -42
  154. package/dist/esm/components/Inspector/ReduxTab.js +22 -22
  155. package/dist/esm/components/Inspector/SettingsPanel.js +495 -376
  156. package/dist/esm/components/Inspector/SocketCard.d.ts +5 -0
  157. package/dist/esm/components/Inspector/SocketCard.js +116 -0
  158. package/dist/esm/components/Inspector/SocketDetail.d.ts +4 -0
  159. package/dist/esm/components/Inspector/SocketDetail.js +317 -0
  160. package/dist/esm/components/Inspector/SocketFilterModal.d.ts +13 -0
  161. package/dist/esm/components/Inspector/SocketFilterModal.js +69 -0
  162. package/dist/esm/components/Inspector/SocketTab.d.ts +3 -0
  163. package/dist/esm/components/Inspector/SocketTab.js +112 -0
  164. package/dist/esm/components/Inspector/StorageTab.js +145 -143
  165. package/dist/esm/components/Inspector/SupportModal.d.ts +7 -0
  166. package/dist/esm/components/Inspector/SupportModal.js +125 -0
  167. package/dist/esm/components/Inspector/SupportPage.d.ts +5 -0
  168. package/dist/esm/components/Inspector/SupportPage.js +227 -0
  169. package/dist/esm/components/Inspector/TabBar.js +36 -35
  170. package/dist/esm/components/Inspector/UpdateAvailableModal.js +22 -22
  171. package/dist/esm/components/JsonViewer.js +55 -55
  172. package/dist/esm/components/LogCard.d.ts +3 -2
  173. package/dist/esm/components/LogCard.js +60 -60
  174. package/dist/esm/components/LogSyntaxHighlighter.js +5 -5
  175. package/dist/esm/components/ModuleErrorBoundary.js +23 -23
  176. package/dist/esm/components/NetworkIcons.d.ts +15 -0
  177. package/dist/esm/components/NetworkIcons.js +38 -3
  178. package/dist/esm/components/SegmentedTabs.js +7 -7
  179. package/dist/esm/constants/version.d.ts +1 -1
  180. package/dist/esm/constants/version.js +1 -1
  181. package/dist/esm/customHooks/socketLogger.d.ts +26 -0
  182. package/dist/esm/customHooks/socketLogger.js +2 -0
  183. package/dist/esm/helpers/index.js +3 -3
  184. package/dist/esm/helpers/memoryManager.d.ts +1 -0
  185. package/dist/esm/helpers/memoryManager.js +1 -1
  186. package/dist/esm/helpers/searchQueryParser.d.ts +1 -1
  187. package/dist/esm/helpers/searchQueryParser.js +5 -1
  188. package/dist/esm/helpers/settingsStore.d.ts +1 -0
  189. package/dist/esm/helpers/settingsStore.js +1 -1
  190. package/dist/esm/helpers/shareFormatter.d.ts +3 -1
  191. package/dist/esm/helpers/shareFormatter.js +8 -7
  192. package/dist/esm/i18n/index.d.ts +99 -1
  193. package/dist/esm/i18n/index.js +1 -1
  194. package/dist/esm/i18n/locales/ar.json +1 -1
  195. package/dist/esm/i18n/locales/bn.json +1 -0
  196. package/dist/esm/i18n/locales/de.json +1 -1
  197. package/dist/esm/i18n/locales/en.json +1 -1
  198. package/dist/esm/i18n/locales/es.json +1 -1
  199. package/dist/esm/i18n/locales/fr.json +1 -1
  200. package/dist/esm/i18n/locales/gu.json +1 -0
  201. package/dist/esm/i18n/locales/hi.json +1 -1
  202. package/dist/esm/i18n/locales/id.json +1 -0
  203. package/dist/esm/i18n/locales/it.json +1 -0
  204. package/dist/esm/i18n/locales/ja.json +1 -1
  205. package/dist/esm/i18n/locales/kn.json +1 -0
  206. package/dist/esm/i18n/locales/ko.json +1 -1
  207. package/dist/esm/i18n/locales/ml.json +1 -0
  208. package/dist/esm/i18n/locales/mr.json +1 -0
  209. package/dist/esm/i18n/locales/nl.json +1 -0
  210. package/dist/esm/i18n/locales/pa.json +1 -0
  211. package/dist/esm/i18n/locales/pl.json +1 -0
  212. package/dist/esm/i18n/locales/pt.json +1 -1
  213. package/dist/esm/i18n/locales/ru.json +1 -1
  214. package/dist/esm/i18n/locales/ta.json +1 -0
  215. package/dist/esm/i18n/locales/te.json +1 -0
  216. package/dist/esm/i18n/locales/tr.json +1 -0
  217. package/dist/esm/i18n/locales/vi.json +1 -0
  218. package/dist/esm/i18n/locales/zh.json +1 -1
  219. package/dist/esm/index.d.ts +13 -13
  220. package/dist/esm/index.js +8 -7
  221. package/dist/esm/native/NativeInspector.d.ts +1 -0
  222. package/dist/esm/socket.d.ts +4 -0
  223. package/dist/esm/socket.js +1 -0
  224. package/dist/esm/styles/index.d.ts +23 -0
  225. package/dist/esm/styles/index.js +1 -1
  226. package/dist/esm/types/enums.d.ts +40 -0
  227. package/dist/esm/types/enums.js +1 -1
  228. package/dist/esm/types/interfaces.d.ts +122 -1
  229. package/ios/NetworkInspectorModule.mm +102 -12
  230. package/package.json +204 -2
  231. package/src/native/NativeInspector.ts +8 -0
@@ -1,25 +1,23 @@
1
- "use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.AboutModal=void 0;const react_1=__importDefault(require("react")),react_native_1=require("react-native"),AppColors_1=require("../../styles/AppColors"),AppFonts_1=require("../../styles/AppFonts"),TouchableScale_1=__importDefault(require("../TouchableScale")),InspectorContext_1=require("./InspectorContext"),version_1=require("../../constants/version"),helpers_1=require("../../helpers"),NetworkIcons_1=require("../NetworkIcons"),AboutModal=({onClose:e})=>{const{updateAvailable:t,latestNpmVersion:r}=(0,InspectorContext_1.useInspector)();return<react_native_1.View style={styles.container}>
1
+ "use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.AboutModal=void 0;const react_1=__importDefault(require("react")),react_native_1=require("react-native"),AppColors_1=require("../../styles/AppColors"),AppFonts_1=require("../../styles/AppFonts"),TouchableScale_1=__importDefault(require("../TouchableScale")),InspectorContext_1=require("./InspectorContext"),i18n_1=require("../../i18n"),version_1=require("../../constants/version"),AppHeaderLogo_1=__importDefault(require("../AppHeaderLogo")),helpers_1=require("../../helpers"),NetworkIcons_1=require("../NetworkIcons"),AboutModal=({onClose:e})=>{const{updateAvailable:t,latestNpmVersion:o}=(0,InspectorContext_1.useInspector)();return<react_native_1.View style={styles.container}>
2
2
  <react_native_1.ScrollView style={styles.scrollView}contentContainerStyle={styles.scrollContent}showsVerticalScrollIndicator={!1}>
3
3
 
4
4
  <react_native_1.View style={styles.heroCard}>
5
5
  <react_native_1.View style={styles.heroHeaderRow}>
6
6
  <react_native_1.View style={styles.heroBrandRow}>
7
- <react_native_1.View style={styles.heroIconBox}>
8
- <NetworkIcons_1.PackageIcon color={AppColors_1.AppColors.brandPurple}size={24}/>
9
- </react_native_1.View>
7
+ <AppHeaderLogo_1.default size={46}shape="circle"/>
10
8
  <react_native_1.View style={{flex:1}}>
11
9
  <react_native_1.View style={styles.heroTitleRow}>
12
- <react_native_1.Text style={styles.heroTitle}>In-App Inspector</react_native_1.Text>
10
+ <react_native_1.Text style={styles.heroTitle}>{(0,i18n_1.t)("about.heroTitle","In-App Inspector")}</react_native_1.Text>
13
11
  <react_native_1.View style={styles.versionBadge}>
14
12
  <react_native_1.Text style={styles.versionBadgeText}>v{version_1.LIB_VERSION}</react_native_1.Text>
15
13
  </react_native_1.View>
16
14
  {t?<react_native_1.View style={styles.updateBadge}>
17
15
  <react_native_1.Text style={styles.updateBadgeText}>
18
- v{r} Available
16
+ {(0,i18n_1.t)("about.versionAvailable","v{{version}} Available").replace("{{version}}",o||"")}
19
17
  </react_native_1.Text>
20
18
  <NetworkIcons_1.BoltIcon size={9}color={AppColors_1.AppColors.amber600}/>
21
19
  </react_native_1.View>:<react_native_1.View style={styles.upToDateBadge}>
22
- <react_native_1.Text style={styles.upToDateBadgeText}>Up to date</react_native_1.Text>
20
+ <react_native_1.Text style={styles.upToDateBadgeText}>{(0,i18n_1.t)("about.upToDate","Up to date")}</react_native_1.Text>
23
21
  </react_native_1.View>}
24
22
  </react_native_1.View>
25
23
  <react_native_1.Text style={styles.heroPackageName}>
@@ -30,54 +28,52 @@
30
28
  </react_native_1.View>
31
29
 
32
30
  <react_native_1.Text style={styles.heroDescription}>
33
- The all-in-one on-device debugging, logging, and QA companion for
34
- React Native & Expo applications. Designed for developers, QA
35
- testers, and product teams.
31
+ {(0,i18n_1.t)("about.heroDescription","The all-in-one on-device debugging, logging, and QA companion for React Native & Expo applications. Designed for developers, QA testers, and product teams.")}
36
32
  </react_native_1.Text>
37
33
 
38
- {t&&<TouchableScale_1.default onPress={()=>{(0,helpers_1.copyToClipboard)("npm install react-native-inapp-inspector@latest","Install Command"),(0,helpers_1.showToast)("Copied npm upgrade command!")}}style={styles.upgradeBtn}>
34
+ {t&&<TouchableScale_1.default onPress={()=>{(0,helpers_1.copyToClipboard)("npm install react-native-inapp-inspector@latest","Install Command"),(0,helpers_1.showToast)((0,i18n_1.t)("about.copiedUpgradeCommand","Copied npm upgrade command!"))}}style={styles.upgradeBtn}>
39
35
  <NetworkIcons_1.BoltIcon size={12}color={AppColors_1.AppColors.white}/>
40
36
  <react_native_1.Text style={styles.upgradeBtnText}>
41
- Copy Upgrade Command (v{r})
37
+ {(0,i18n_1.t)("about.copyUpgradeCommand","Copy Upgrade Command (v{{version}})").replace("{{version}}",o||"")}
42
38
  </react_native_1.Text>
43
39
  </TouchableScale_1.default>}
44
40
  </react_native_1.View>
45
41
 
46
42
 
47
43
  <react_native_1.View style={styles.sectionCard}>
48
- <react_native_1.Text style={styles.sectionHeader}>APP INFORMATION</react_native_1.Text>
44
+ <react_native_1.Text style={styles.sectionHeader}>{(0,i18n_1.t)("about.appInformation","APP INFORMATION")}</react_native_1.Text>
49
45
 
50
46
  <react_native_1.View style={{gap:8}}>
51
47
  <react_native_1.View style={styles.row}>
52
- <react_native_1.Text style={styles.rowLabel}>App Name</react_native_1.Text>
48
+ <react_native_1.Text style={styles.rowLabel}>{(0,i18n_1.t)("about.appName","App Name")}</react_native_1.Text>
53
49
  <react_native_1.Text style={styles.rowValueBold}>{(0,helpers_1.getAppName)()}</react_native_1.Text>
54
50
  </react_native_1.View>
55
51
 
56
52
  <react_native_1.View style={styles.row}>
57
- <react_native_1.Text style={styles.rowLabel}>Package Identifier</react_native_1.Text>
53
+ <react_native_1.Text style={styles.rowLabel}>{(0,i18n_1.t)("about.packageIdentifier","Package Identifier")}</react_native_1.Text>
58
54
  <react_native_1.Text style={styles.rowValueRegular}>{(0,helpers_1.getBundleIdentifier)()}</react_native_1.Text>
59
55
  </react_native_1.View>
60
56
 
61
57
  <react_native_1.View style={styles.row}>
62
- <react_native_1.Text style={styles.rowLabel}>App Version</react_native_1.Text>
58
+ <react_native_1.Text style={styles.rowLabel}>{(0,i18n_1.t)("about.appVersion","App Version")}</react_native_1.Text>
63
59
  <react_native_1.Text style={styles.rowValueBold}>
64
60
  {(0,helpers_1.getAppVersionAndBuild)().formatted}
65
61
  </react_native_1.Text>
66
62
  </react_native_1.View>
67
63
 
68
64
  <react_native_1.View style={styles.row}>
69
- <react_native_1.Text style={styles.rowLabel}>Environment</react_native_1.Text>
65
+ <react_native_1.Text style={styles.rowLabel}>{(0,i18n_1.t)("about.environment","Environment")}</react_native_1.Text>
70
66
  <react_native_1.View style={[styles.statusTag,{backgroundColor:__DEV__?`${AppColors_1.AppColors.amber500}20`:`${AppColors_1.AppColors.emerald500}20`,borderColor:__DEV__?`${AppColors_1.AppColors.amber500}50`:`${AppColors_1.AppColors.emerald500}50`}]}>
71
67
  <react_native_1.Text style={[styles.statusTagText,{color:__DEV__?AppColors_1.AppColors.amber600:AppColors_1.AppColors.emerald600}]}>
72
- {__DEV__?"Development (Debug)":"Production (Release)"}
68
+ {__DEV__?(0,i18n_1.t)("about.developmentDebug","Development (Debug)"):(0,i18n_1.t)("about.productionRelease","Production (Release)")}
73
69
  </react_native_1.Text>
74
70
  </react_native_1.View>
75
71
  </react_native_1.View>
76
72
 
77
73
  <react_native_1.View style={styles.row}>
78
- <react_native_1.Text style={styles.rowLabel}>Platform</react_native_1.Text>
74
+ <react_native_1.Text style={styles.rowLabel}>{(0,i18n_1.t)("about.platform","Platform")}</react_native_1.Text>
79
75
  <react_native_1.Text style={styles.rowValueRegular}>
80
- {react_native_1.Platform.OS==="ios"?"Apple iOS":"Google Android"}{" "}
76
+ {react_native_1.Platform.OS==="ios"?(0,i18n_1.t)("about.appleIos","Apple iOS"):(0,i18n_1.t)("about.googleAndroid","Google Android")}{" "}
81
77
  (v{react_native_1.Platform.Version})
82
78
  </react_native_1.Text>
83
79
  </react_native_1.View>
@@ -86,7 +82,7 @@
86
82
 
87
83
 
88
84
  <react_native_1.View style={styles.sectionCard}>
89
- <react_native_1.Text style={styles.sectionHeader}>WHAT IN-APP INSPECTOR DOES</react_native_1.Text>
85
+ <react_native_1.Text style={styles.sectionHeader}>{(0,i18n_1.t)("about.features","WHAT IN-APP INSPECTOR DOES")}</react_native_1.Text>
90
86
 
91
87
  <react_native_1.View style={styles.featuresList}>
92
88
  <react_native_1.View style={styles.featureItem}>
@@ -94,10 +90,9 @@
94
90
  <NetworkIcons_1.WifiIcon color={AppColors_1.AppColors.brandPurple}size={18}/>
95
91
  </react_native_1.View>
96
92
  <react_native_1.View style={styles.featureTextBox}>
97
- <react_native_1.Text style={styles.featureTitle}>Network Traffic Monitor</react_native_1.Text>
93
+ <react_native_1.Text style={styles.featureTitle}>{(0,i18n_1.t)("about.featureNetwork","Network Traffic Monitor")}</react_native_1.Text>
98
94
  <react_native_1.Text style={styles.featureDesc}>
99
- Inspect HTTP and HTTPS API requests, responses, headers, and
100
- server latency with waterfall timing charts.
95
+ {(0,i18n_1.t)("about.featureNetworkDesc","Inspect HTTP and HTTPS API requests, responses, headers, and server latency with waterfall timing charts.")}
101
96
  </react_native_1.Text>
102
97
  </react_native_1.View>
103
98
  </react_native_1.View>
@@ -107,10 +102,9 @@
107
102
  <NetworkIcons_1.TerminalIcon color={AppColors_1.AppColors.blue500}size={18}/>
108
103
  </react_native_1.View>
109
104
  <react_native_1.View style={styles.featureTextBox}>
110
- <react_native_1.Text style={styles.featureTitle}>Console Logger</react_native_1.Text>
105
+ <react_native_1.Text style={styles.featureTitle}>{(0,i18n_1.t)("about.featureConsole","Console Logger")}</react_native_1.Text>
111
106
  <react_native_1.Text style={styles.featureDesc}>
112
- View real-time console logs, warnings, and errors with source
113
- file origins and formatted stack traces.
107
+ {(0,i18n_1.t)("about.featureConsoleDesc","View real-time console logs, warnings, and errors with source file origins and formatted stack traces.")}
114
108
  </react_native_1.Text>
115
109
  </react_native_1.View>
116
110
  </react_native_1.View>
@@ -120,10 +114,9 @@
120
114
  <NetworkIcons_1.AnalyticsIcon color={AppColors_1.AppColors.firebaseOrange}size={18}/>
121
115
  </react_native_1.View>
122
116
  <react_native_1.View style={styles.featureTextBox}>
123
- <react_native_1.Text style={styles.featureTitle}>Analytics Telemetry</react_native_1.Text>
117
+ <react_native_1.Text style={styles.featureTitle}>{(0,i18n_1.t)("about.featureAnalytics","Analytics Telemetry")}</react_native_1.Text>
124
118
  <react_native_1.Text style={styles.featureDesc}>
125
- Track Firebase and custom analytics events, screen views, and
126
- user properties live on the device.
119
+ {(0,i18n_1.t)("about.featureAnalyticsDesc","Track Firebase and custom analytics events, screen views, and user properties live on the device.")}
127
120
  </react_native_1.Text>
128
121
  </react_native_1.View>
129
122
  </react_native_1.View>
@@ -133,10 +126,9 @@
133
126
  <NetworkIcons_1.DatabaseIcon color={AppColors_1.AppColors.violet600}size={18}/>
134
127
  </react_native_1.View>
135
128
  <react_native_1.View style={styles.featureTextBox}>
136
- <react_native_1.Text style={styles.featureTitle}>Redux State & Actions</react_native_1.Text>
129
+ <react_native_1.Text style={styles.featureTitle}>{(0,i18n_1.t)("about.featureRedux","Redux State & Actions")}</react_native_1.Text>
137
130
  <react_native_1.Text style={styles.featureDesc}>
138
- Inspect dispatched actions, payloads, and state tree diffs
139
- without connecting desktop companion tools.
131
+ {(0,i18n_1.t)("about.featureReduxDesc","Inspect dispatched actions, payloads, and state tree diffs without connecting desktop companion tools.")}
140
132
  </react_native_1.Text>
141
133
  </react_native_1.View>
142
134
  </react_native_1.View>
@@ -146,10 +138,9 @@
146
138
  <NetworkIcons_1.CameraIcon color={AppColors_1.AppColors.teal600}size={18}/>
147
139
  </react_native_1.View>
148
140
  <react_native_1.View style={styles.featureTextBox}>
149
- <react_native_1.Text style={styles.featureTitle}>Screen & Video Capture</react_native_1.Text>
141
+ <react_native_1.Text style={styles.featureTitle}>{(0,i18n_1.t)("about.featureCapture","Screen & Video Capture")}</react_native_1.Text>
150
142
  <react_native_1.Text style={styles.featureDesc}>
151
- Take screenshots and record test sessions to share with QA and
152
- engineering teams instantly.
143
+ {(0,i18n_1.t)("about.featureCaptureDesc","Take screenshots and record test sessions to share with QA and engineering teams instantly.")}
153
144
  </react_native_1.Text>
154
145
  </react_native_1.View>
155
146
  </react_native_1.View>
@@ -160,11 +151,10 @@
160
151
  </react_native_1.View>
161
152
  <react_native_1.View style={styles.featureTextBox}>
162
153
  <react_native_1.Text style={styles.featureTitle}>
163
- Crash Catcher & Diagnostics
154
+ {(0,i18n_1.t)("about.featureCrash","Crash Catcher & Diagnostics")}
164
155
  </react_native_1.Text>
165
156
  <react_native_1.Text style={styles.featureDesc}>
166
- Protects against native crashes and provides device health
167
- metrics including RAM, battery, and storage.
157
+ {(0,i18n_1.t)("about.featureCrashDesc","Protects against native crashes and provides device health metrics including RAM, battery, and storage.")}
168
158
  </react_native_1.Text>
169
159
  </react_native_1.View>
170
160
  </react_native_1.View>
@@ -178,9 +168,9 @@
178
168
  <react_native_1.View style={{flex:1}}>
179
169
  <react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:5}}>
180
170
  <NetworkIcons_1.StarIcon color={AppColors_1.AppColors.amber500}size={13}/>
181
- <react_native_1.Text style={styles.gridCardTitle}>GitHub</react_native_1.Text>
171
+ <react_native_1.Text style={styles.gridCardTitle}>{(0,i18n_1.t)("about.github","GitHub")}</react_native_1.Text>
182
172
  </react_native_1.View>
183
- <react_native_1.Text style={styles.gridCardSub}>Star & source code</react_native_1.Text>
173
+ <react_native_1.Text style={styles.gridCardSub}>{(0,i18n_1.t)("about.githubSub","Star & source code")}</react_native_1.Text>
184
174
  </react_native_1.View>
185
175
  <NetworkIcons_1.ExternalLinkIcon size={12}color={AppColors_1.AppColors.grayTextWeak}/>
186
176
  </TouchableScale_1.default>
@@ -188,8 +178,8 @@
188
178
  <TouchableScale_1.default onPress={()=>{react_native_1.Linking.openURL("https://www.npmjs.com/package/react-native-inapp-inspector").catch(()=>{})}}style={styles.gridCard}>
189
179
  <NetworkIcons_1.NpmIcon color={AppColors_1.AppColors.npmRed}size={18}/>
190
180
  <react_native_1.View style={{flex:1}}>
191
- <react_native_1.Text style={styles.gridCardTitle}>NPM Registry</react_native_1.Text>
192
- <react_native_1.Text style={styles.gridCardSub}>Package updates</react_native_1.Text>
181
+ <react_native_1.Text style={styles.gridCardTitle}>{(0,i18n_1.t)("about.npmRegistry","NPM Registry")}</react_native_1.Text>
182
+ <react_native_1.Text style={styles.gridCardSub}>{(0,i18n_1.t)("about.npmRegistrySub","Package updates")}</react_native_1.Text>
193
183
  </react_native_1.View>
194
184
  <NetworkIcons_1.ExternalLinkIcon size={12}color={AppColors_1.AppColors.grayTextWeak}/>
195
185
  </TouchableScale_1.default>
@@ -197,8 +187,8 @@
197
187
  <TouchableScale_1.default onPress={()=>{react_native_1.Linking.openURL("https://github.com/vengatmacuser/react-native-inapp-inspector#readme").catch(()=>{})}}style={styles.gridCard}>
198
188
  <NetworkIcons_1.BookOpenIcon color={AppColors_1.AppColors.brandPurple}size={18}/>
199
189
  <react_native_1.View style={{flex:1}}>
200
- <react_native_1.Text style={styles.gridCardTitle}>Documentation</react_native_1.Text>
201
- <react_native_1.Text style={styles.gridCardSub}>Integration guide</react_native_1.Text>
190
+ <react_native_1.Text style={styles.gridCardTitle}>{(0,i18n_1.t)("about.documentation","Documentation")}</react_native_1.Text>
191
+ <react_native_1.Text style={styles.gridCardSub}>{(0,i18n_1.t)("about.documentationSub","Integration guide")}</react_native_1.Text>
202
192
  </react_native_1.View>
203
193
  <NetworkIcons_1.ExternalLinkIcon size={12}color={AppColors_1.AppColors.grayTextWeak}/>
204
194
  </TouchableScale_1.default>
@@ -206,8 +196,8 @@
206
196
  <TouchableScale_1.default onPress={()=>{react_native_1.Linking.openURL("https://github.com/vengatmacuser/react-native-inapp-inspector/issues").catch(()=>{})}}style={styles.gridCard}>
207
197
  <NetworkIcons_1.BugIcon color={AppColors_1.AppColors.errorColor}size={18}/>
208
198
  <react_native_1.View style={{flex:1}}>
209
- <react_native_1.Text style={styles.gridCardTitle}>Report Issue</react_native_1.Text>
210
- <react_native_1.Text style={styles.gridCardSub}>Help & support</react_native_1.Text>
199
+ <react_native_1.Text style={styles.gridCardTitle}>{(0,i18n_1.t)("about.reportIssue","Report Issue")}</react_native_1.Text>
200
+ <react_native_1.Text style={styles.gridCardSub}>{(0,i18n_1.t)("about.reportIssueSub","Help & support")}</react_native_1.Text>
211
201
  </react_native_1.View>
212
202
  <NetworkIcons_1.ExternalLinkIcon size={12}color={AppColors_1.AppColors.grayTextWeak}/>
213
203
  </TouchableScale_1.default>
@@ -215,17 +205,17 @@
215
205
  <TouchableScale_1.default onPress={()=>{react_native_1.Linking.openURL("https://github.com/vengatmacuser/react-native-inapp-inspector/releases").catch(()=>{})}}style={styles.gridCard}>
216
206
  <NetworkIcons_1.TagIcon color={AppColors_1.AppColors.successGreen}size={18}/>
217
207
  <react_native_1.View style={{flex:1}}>
218
- <react_native_1.Text style={styles.gridCardTitle}>Release Notes</react_native_1.Text>
219
- <react_native_1.Text style={styles.gridCardSub}>What's new</react_native_1.Text>
208
+ <react_native_1.Text style={styles.gridCardTitle}>{(0,i18n_1.t)("about.releaseNotes","Release Notes")}</react_native_1.Text>
209
+ <react_native_1.Text style={styles.gridCardSub}>{(0,i18n_1.t)("about.releaseNotesSub","What's new")}</react_native_1.Text>
220
210
  </react_native_1.View>
221
211
  <NetworkIcons_1.ExternalLinkIcon size={12}color={AppColors_1.AppColors.grayTextWeak}/>
222
212
  </TouchableScale_1.default>
223
213
 
224
- <TouchableScale_1.default onPress={()=>{(0,helpers_1.copyToClipboard)("npm install react-native-inapp-inspector","NPM Command"),(0,helpers_1.showToast)("Copied package install command!")}}style={styles.gridCard}>
214
+ <TouchableScale_1.default onPress={()=>{(0,helpers_1.copyToClipboard)("npm install react-native-inapp-inspector","NPM Command"),(0,helpers_1.showToast)((0,i18n_1.t)("about.copiedInstallCommand","Copied package install command!"))}}style={styles.gridCard}>
225
215
  <NetworkIcons_1.CopyIcon color={AppColors_1.AppColors.brandPurple}size={16}/>
226
216
  <react_native_1.View style={{flex:1}}>
227
- <react_native_1.Text style={styles.gridCardTitle}>Copy Install</react_native_1.Text>
228
- <react_native_1.Text style={styles.gridCardSub}>npm / yarn command</react_native_1.Text>
217
+ <react_native_1.Text style={styles.gridCardTitle}>{(0,i18n_1.t)("about.copyInstall","Copy Install")}</react_native_1.Text>
218
+ <react_native_1.Text style={styles.gridCardSub}>{(0,i18n_1.t)("about.copyInstallSub","npm / yarn command")}</react_native_1.Text>
229
219
  </react_native_1.View>
230
220
  </TouchableScale_1.default>
231
221
  </react_native_1.View>
@@ -233,10 +223,10 @@
233
223
 
234
224
  <react_native_1.View style={styles.footer}>
235
225
  <react_native_1.Text style={styles.footerText}>
236
- React Native In-App Inspector · MIT License
226
+ {(0,i18n_1.t)("about.footerLicense","React Native In-App Inspector \xB7 MIT License")}
237
227
  </react_native_1.Text>
238
228
  <react_native_1.Text style={styles.footerSubText}>
239
- Zero-config on-device debugging tool
229
+ {(0,i18n_1.t)("about.footerTagline","Zero-config on-device debugging tool")}
240
230
  </react_native_1.Text>
241
231
  </react_native_1.View>
242
232
  </react_native_1.ScrollView>
@@ -1,4 +1,4 @@
1
- "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(n,l,a,o){o===void 0&&(o=a);var s=Object.getOwnPropertyDescriptor(l,a);(!s||("get"in s?!l.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return l[a]}}),Object.defineProperty(n,o,s)}):(function(n,l,a,o){o===void 0&&(o=a),n[o]=l[a]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(n,l){Object.defineProperty(n,"default",{enumerable:!0,value:l})}):function(n,l){n.default=l}),__importStar=this&&this.__importStar||(function(){var n=function(l){return n=Object.getOwnPropertyNames||function(a){var o=[];for(var s in a)Object.prototype.hasOwnProperty.call(a,s)&&(o[o.length]=s);return o},n(l)};return function(l){if(l&&l.__esModule)return l;var a={};if(l!=null)for(var o=n(l),s=0;s<o.length;s++)o[s]!=="default"&&__createBinding(a,l,o[s]);return __setModuleDefault(a,l),a}})(),__importDefault=this&&this.__importDefault||function(n){return n&&n.__esModule?n:{default:n}};Object.defineProperty(exports,"__esModule",{value:!0});const react_1=__importStar(require("react")),react_native_1=require("react-native"),InspectorContext_1=require("./InspectorContext"),AnalyticsEventCard_1=__importDefault(require("../AnalyticsEventCard")),AnalyticsFilterModal_1=__importDefault(require("./AnalyticsFilterModal")),EndOfListFooter_1=__importDefault(require("../EndOfListFooter")),EmptyState_1=__importDefault(require("../EmptyState")),styles_1=__importDefault(require("../../styles")),AppColors_1=require("../../styles/AppColors"),AppFonts_1=require("../../styles/AppFonts"),i18n_1=require("../../i18n"),TouchableScale_1=__importDefault(require("../TouchableScale")),helpers_1=require("../../helpers"),NetworkIcons_1=require("../NetworkIcons"),LOAD_MORE_STEP=10,AnalyticsTab=react_1.default.memo(()=>{const{t:n}=(0,i18n_1.useTranslation)(),{analyticsEvents:l,filteredAnalyticsEvents:a,analyticsSearch:o,setAnalyticsSearch:s,analyticsFilters:m,setAnalyticsFilters:x,handleDelete:B,selectedEvent:R,setSelectedEvent:V,newEventIds:O,logRouteMapRef:F,isAnalyticsLayoutReady:N,setIsAnalyticsLayoutReady:k,isAnalyticsFilterApplied:w,maxAnalyticsEventsLimit:A}=(0,InspectorContext_1.useInspector)(),q=A||100,P=(0,react_1.useRef)(null),[D,E]=(0,react_1.useState)(!1),[L,M]=(0,react_1.useState)(q);react_1.default.useEffect(()=>{M(A||100),P.current?.scrollToOffset({offset:0,animated:!1})},[o,m,A]);const S=(0,react_1.useMemo)(()=>a.slice(0,L),[a,L]),u=(0,react_1.useMemo)(()=>{let e=0,r=0,t=0,i=0;for(const b of l){const C=(0,helpers_1.getEventCategory)(b.name),c=b.count||1;C==="ecommerce"?e+=c:C==="page_view"?r+=c:C==="system"?t+=c:i+=c}const _=e+r+t+i;return{ecommerce:e,page_view:r,system:t,custom:i,totalCount:_}},[l]),j=(0,react_1.useCallback)(e=>{(0,InspectorContext_1.animateNextLayout)(),x(r=>{if(e==="all")return{...r,categories:new Set(["all"])};const t=new Set(r.categories);if(t.has("all"))t.delete("all"),t.add(e);else if(t.has(e))t.delete(e),t.size===0&&t.add("all");else if(t.add(e),t.has("ecommerce")&&t.has("page_view")&&t.has("system")&&t.has("custom"))return{...r,categories:new Set(["all"])};return{...r,categories:t}})},[x]),$=(0,react_1.useCallback)((e,r)=>e?.id?.toString()??r.toString(),[]),H=(0,react_1.useCallback)(({item:e,index:r})=>{const t=a[r+1],i=a[r-1],_=t?e.timestamp-t.timestamp:void 0,b=Math.floor(e.timestamp/6e4),C=i?Math.floor(i.timestamp/6e4):-1,c=r===0||b!==C;return<AnalyticsEventCard_1.default event={e}onPress={()=>{V(e)}}isNew={O.has(e.id)}searchStr={o}isFirst={r===0}isLast={r===a.length-1}msSincePrev={_}showTimestamp={c}computedScreenName={(()=>{if(!e)return"";const v=e.screenName||e.screenClass||e.pageTitle||e.pageLocation||e.params?.firebase_screen||e.params?.screen_name||e.params?.firebase_screen_class||e.params?.screen_class;let I=typeof v=="string"?v:v?JSON.stringify(v):"";const T=F.current.get(e.id+1e6);if(!I&&T&&T.path!=="Navigators"){const z=T.path.split(" \u2794 ");I=z[z.length-1]}return I})()}/>},[a,o,O,V,F]),W=(0,react_1.useCallback)((e,r)=>({length:86,offset:86*r,index:r}),[]);return<>
1
+ "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(n,l,a,o){o===void 0&&(o=a);var s=Object.getOwnPropertyDescriptor(l,a);(!s||("get"in s?!l.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return l[a]}}),Object.defineProperty(n,o,s)}):(function(n,l,a,o){o===void 0&&(o=a),n[o]=l[a]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(n,l){Object.defineProperty(n,"default",{enumerable:!0,value:l})}):function(n,l){n.default=l}),__importStar=this&&this.__importStar||(function(){var n=function(l){return n=Object.getOwnPropertyNames||function(a){var o=[];for(var s in a)Object.prototype.hasOwnProperty.call(a,s)&&(o[o.length]=s);return o},n(l)};return function(l){if(l&&l.__esModule)return l;var a={};if(l!=null)for(var o=n(l),s=0;s<o.length;s++)o[s]!=="default"&&__createBinding(a,l,o[s]);return __setModuleDefault(a,l),a}})(),__importDefault=this&&this.__importDefault||function(n){return n&&n.__esModule?n:{default:n}};Object.defineProperty(exports,"__esModule",{value:!0});const react_1=__importStar(require("react")),react_native_1=require("react-native"),InspectorContext_1=require("./InspectorContext"),AnalyticsEventCard_1=__importDefault(require("../AnalyticsEventCard")),AnalyticsFilterModal_1=__importDefault(require("./AnalyticsFilterModal")),EndOfListFooter_1=__importDefault(require("../EndOfListFooter")),EmptyState_1=__importDefault(require("../EmptyState")),styles_1=__importDefault(require("../../styles")),AppColors_1=require("../../styles/AppColors"),AppFonts_1=require("../../styles/AppFonts"),i18n_1=require("../../i18n"),TouchableScale_1=__importDefault(require("../TouchableScale")),helpers_1=require("../../helpers"),NetworkIcons_1=require("../NetworkIcons"),LOAD_MORE_STEP=10,AnalyticsTab=react_1.default.memo(()=>{const{t:n}=(0,i18n_1.useTranslation)(),{analyticsEvents:l,filteredAnalyticsEvents:a,analyticsSearch:o,setAnalyticsSearch:s,analyticsFilters:m,setAnalyticsFilters:x,handleDelete:B,selectedEvent:R,setSelectedEvent:V,newEventIds:O,logRouteMapRef:F,isAnalyticsLayoutReady:N,setIsAnalyticsLayoutReady:k,isAnalyticsFilterApplied:v,maxAnalyticsEventsLimit:A}=(0,InspectorContext_1.useInspector)(),q=A||100,P=(0,react_1.useRef)(null),[D,E]=(0,react_1.useState)(!1),[L,M]=(0,react_1.useState)(q);react_1.default.useEffect(()=>{M(A||100),P.current?.scrollToOffset({offset:0,animated:!1})},[o,m,A]);const S=(0,react_1.useMemo)(()=>a.slice(0,L),[a,L]),u=(0,react_1.useMemo)(()=>{let e=0,r=0,t=0,i=0;for(const b of l){const C=(0,helpers_1.getEventCategory)(b.name),c=b.count||1;C==="ecommerce"?e+=c:C==="page_view"?r+=c:C==="system"?t+=c:i+=c}const _=e+r+t+i;return{ecommerce:e,page_view:r,system:t,custom:i,totalCount:_}},[l]),j=(0,react_1.useCallback)(e=>{(0,InspectorContext_1.animateNextLayout)(),x(r=>{if(e==="all")return{...r,categories:new Set(["all"])};const t=new Set(r.categories);if(t.has("all"))t.delete("all"),t.add(e);else if(t.has(e))t.delete(e),t.size===0&&t.add("all");else if(t.add(e),t.has("ecommerce")&&t.has("page_view")&&t.has("system")&&t.has("custom"))return{...r,categories:new Set(["all"])};return{...r,categories:t}})},[x]),$=(0,react_1.useCallback)((e,r)=>e?.id?.toString()??r.toString(),[]),H=(0,react_1.useCallback)(({item:e,index:r})=>{const t=a[r+1],i=a[r-1],_=t?e.timestamp-t.timestamp:void 0,b=Math.floor(e.timestamp/6e4),C=i?Math.floor(i.timestamp/6e4):-1,c=r===0||b!==C;return<AnalyticsEventCard_1.default event={e}onPress={()=>{V(e)}}isNew={O.has(e.id)}searchStr={o}isFirst={r===0}isLast={r===a.length-1}msSincePrev={_}showTimestamp={c}computedScreenName={(()=>{if(!e)return"";const w=e.screenName||e.screenClass||e.pageTitle||e.pageLocation||e.params?.firebase_screen||e.params?.screen_name||e.params?.firebase_screen_class||e.params?.screen_class;let I=typeof w=="string"?w:w?JSON.stringify(w):"";const T=F.current.get(e.id+1e6);if(!I&&T&&T.path!=="Navigators"){const z=T.path.split(" \u2794 ");I=z[z.length-1]}return I})()}/>},[a,o,O,V,F]),W=(0,react_1.useCallback)((e,r)=>({length:86,offset:86*r,index:r}),[]);return<>
2
2
 
3
3
  {R==null&&<react_native_1.View style={{backgroundColor:AppColors_1.AppColors.white,borderBottomWidth:1,borderBottomColor:AppColors_1.AppColors.dividerColor,paddingBottom:6}}>
4
4
  <react_native_1.View style={[styles_1.default.toolbarRow,{marginTop:12,marginBottom:8}]}>
@@ -18,9 +18,9 @@
18
18
  </react_native_1.View>
19
19
  <react_native_1.View style={styles_1.default.toolbarRight}>
20
20
 
21
- <react_native_1.TouchableOpacity style={[styles_1.default.toolbarBtn,w&&{borderColor:`${AppColors_1.AppColors.brandPurple}60`,backgroundColor:`${AppColors_1.AppColors.brandPurple}15`}]}onPress={()=>E(!0)}hitSlop={6}>
22
- <NetworkIcons_1.FilterIcon color={w?AppColors_1.AppColors.brandPurple:AppColors_1.AppColors.grayTextStrong}size={15}/>
23
- {w&&<react_native_1.View style={{position:"absolute",top:2,right:2,width:7,height:7,borderRadius:3.5,backgroundColor:AppColors_1.AppColors.darkOrange,borderWidth:1,borderColor:AppColors_1.AppColors.white}}/>}
21
+ <react_native_1.TouchableOpacity style={[styles_1.default.toolbarBtn,v&&{borderColor:`${AppColors_1.AppColors.brandPurple}60`,backgroundColor:`${AppColors_1.AppColors.brandPurple}15`}]}onPress={()=>E(!0)}hitSlop={6}>
22
+ <NetworkIcons_1.FilterIcon color={v?AppColors_1.AppColors.brandPurple:AppColors_1.AppColors.grayTextStrong}size={15}/>
23
+ {v&&<react_native_1.View style={{position:"absolute",top:2,right:2,width:7,height:7,borderRadius:3.5,backgroundColor:AppColors_1.AppColors.darkOrange,borderWidth:1,borderColor:AppColors_1.AppColors.white}}/>}
24
24
  </react_native_1.TouchableOpacity>
25
25
 
26
26
  <react_native_1.TouchableOpacity style={[styles_1.default.toolbarBtn,{borderColor:`${AppColors_1.AppColors.errorColor}38`,backgroundColor:`${AppColors_1.AppColors.errorColor}0F`}]}onPress={B}hitSlop={6}>
@@ -54,7 +54,7 @@
54
54
 
55
55
  <react_native_1.View style={{flex:1}}onLayout={()=>k(!0)}>
56
56
  {N?<>
57
- <react_native_1.FlatList ref={P}data={S}keyExtractor={$}renderItem={H}getItemLayout={W}initialNumToRender={15}maxToRenderPerBatch={10}windowSize={9}removeClippedSubviews={react_native_1.Platform.OS==="android"}renderToHardwareTextureAndroid={!0}ListEmptyComponent={<EmptyState_1.default isSearch={o.length>0}searchQuery={o}customTitle={o.length>0?"No matching analytics events":"No analytics events yet"}customSub={o.length>0?`No events matched "${o}"`:"Call setupAnalyticsLogger(analytics()) at app start."}onClearSearch={()=>s("")}/>}ListFooterComponent={a.length>0?<EndOfListFooter_1.default count={S.length}totalCount={a.length}label="events"loadMoreStep={LOAD_MORE_STEP}hasMore={S.length<a.length}onLoadMore={()=>M(e=>e+LOAD_MORE_STEP)}/>:null}contentContainerStyle={[styles_1.default.listContent,a.length===0&&{flexGrow:1}]}keyboardShouldPersistTaps="handled"/>
57
+ <react_native_1.FlatList ref={P}data={S}keyExtractor={$}renderItem={H}getItemLayout={W}initialNumToRender={10}maxToRenderPerBatch={8}windowSize={5}updateCellsBatchingPeriod={40}removeClippedSubviews={!0}renderToHardwareTextureAndroid={!0}showsVerticalScrollIndicator={!1}ListEmptyComponent={<EmptyState_1.default isSearch={o.length>0}searchQuery={o}customTitle={o.length>0?"No matching analytics events":"No analytics events yet"}customSub={o.length>0?`No events matched "${o}"`:"Call setupAnalyticsLogger(analytics()) at app start."}onClearSearch={()=>s("")}/>}ListFooterComponent={a.length>0?<EndOfListFooter_1.default count={S.length}totalCount={a.length}label="events"loadMoreStep={LOAD_MORE_STEP}hasMore={S.length<a.length}onLoadMore={()=>M(e=>e+LOAD_MORE_STEP)}/>:null}contentContainerStyle={[styles_1.default.listContent,a.length===0&&{flexGrow:1}]}keyboardShouldPersistTaps="handled"/>
58
58
  </>:null}
59
59
  </react_native_1.View>
60
60
  </>});exports.default=AnalyticsTab;
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ export interface ConfirmationModalProps {
3
+ visible: boolean;
4
+ title: string;
5
+ message: string;
6
+ confirmText?: string;
7
+ cancelText?: string;
8
+ isDestructive?: boolean;
9
+ icon?: 'trash' | 'alert' | 'reset' | 'info';
10
+ onConfirm: () => void;
11
+ onCancel: () => void;
12
+ }
13
+ export declare const ConfirmationModal: React.FC<ConfirmationModalProps>;
@@ -0,0 +1,32 @@
1
+ "use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.ConfirmationModal=void 0;const react_1=__importDefault(require("react")),react_native_1=require("react-native"),TouchableScale_1=__importDefault(require("../TouchableScale")),AppColors_1=require("../../styles/AppColors"),AppFonts_1=require("../../styles/AppFonts"),NetworkIcons_1=require("../NetworkIcons"),NativeInspector_1=require("../../native/NativeInspector"),i18n_1=require("../../i18n"),ConfirmationModal=({visible:e,title:i,message:s,confirmText:c,cancelText:p,isDestructive:t=!0,icon:r="trash",onConfirm:d,onCancel:u})=>{const{t:a}=(0,i18n_1.useTranslation)();if(!e)return null;const n=c||a("common.confirm","Confirm"),l=p||a("common.cancel","Cancel"),C=()=>{(0,NativeInspector_1.triggerNativeHaptic)(t?"heavy":"medium"),d()},o=()=>{(0,NativeInspector_1.triggerNativeHaptic)("light"),u()},h=()=>{switch(r){case"trash":return<NetworkIcons_1.TrashIcon size={24}color={AppColors_1.AppColors.red500}/>;case"alert":return<NetworkIcons_1.AlertTriangleIcon size={24}color={AppColors_1.AppColors.amber500}/>;case"reset":return<NetworkIcons_1.ResetIcon size={24}color={AppColors_1.AppColors.purple}/>;default:return<NetworkIcons_1.InfoCircleIcon size={24}color={AppColors_1.AppColors.purple}/>}},f=t?AppColors_1.AppColors.red100:r==="alert"?AppColors_1.AppColors.amber100:AppColors_1.AppColors.purple50,g=t?`${AppColors_1.AppColors.red500}4D`:r==="alert"?AppColors_1.AppColors.amber200:AppColors_1.AppColors.purple200;return<react_native_1.Modal visible={e}transparent={!0}animationType="fade"onRequestClose={o}>
2
+ <react_native_1.View style={styles.overlay}>
3
+ <react_native_1.Pressable style={styles.backdrop}onPress={o}/>
4
+
5
+ <react_native_1.View style={styles.card}>
6
+
7
+ <TouchableScale_1.default onPress={o}hitSlop={8}style={styles.cornerCloseBtn}>
8
+ <NetworkIcons_1.CloseWhite size={11}color={AppColors_1.AppColors.grayTextWeak}/>
9
+ </TouchableScale_1.default>
10
+
11
+
12
+ <react_native_1.View style={[styles.iconBadge,{backgroundColor:f,borderColor:g}]}>
13
+ {h()}
14
+ </react_native_1.View>
15
+
16
+
17
+ <react_native_1.Text style={styles.title}>{i}</react_native_1.Text>
18
+ <react_native_1.Text style={styles.message}>{s}</react_native_1.Text>
19
+
20
+
21
+ <react_native_1.View style={styles.buttonRow}>
22
+ <TouchableScale_1.default accessible={!0}accessibilityRole="button"accessibilityLabel={l}onPress={o}style={styles.cancelBtn}>
23
+ <react_native_1.Text style={styles.cancelBtnText}>{l}</react_native_1.Text>
24
+ </TouchableScale_1.default>
25
+
26
+ <TouchableScale_1.default accessible={!0}accessibilityRole="button"accessibilityLabel={n}onPress={C}style={[styles.confirmBtn,t?styles.confirmBtnDestructive:styles.confirmBtnPrimary]}>
27
+ <react_native_1.Text style={styles.confirmBtnText}>{n}</react_native_1.Text>
28
+ </TouchableScale_1.default>
29
+ </react_native_1.View>
30
+ </react_native_1.View>
31
+ </react_native_1.View>
32
+ </react_native_1.Modal>};exports.ConfirmationModal=ConfirmationModal;const styles=react_native_1.StyleSheet.create({overlay:{flex:1,backgroundColor:`${AppColors_1.AppColors.slate900}A6`,justifyContent:"center",alignItems:"center",paddingHorizontal:24},backdrop:{...react_native_1.StyleSheet.absoluteFillObject},card:{width:"100%",maxWidth:340,backgroundColor:AppColors_1.AppColors.white,borderRadius:22,paddingTop:24,paddingBottom:18,paddingHorizontal:20,alignItems:"center",borderWidth:1,borderColor:`${AppColors_1.AppColors.white}CC`,...react_native_1.Platform.select({ios:{shadowColor:AppColors_1.AppColors.slate900,shadowOffset:{width:0,height:12},shadowOpacity:.28,shadowRadius:24},android:{elevation:12}})},cornerCloseBtn:{position:"absolute",top:14,right:14,width:28,height:28,borderRadius:14,backgroundColor:AppColors_1.AppColors.graySurface,alignItems:"center",justifyContent:"center"},iconBadge:{width:54,height:54,borderRadius:27,borderWidth:1.5,alignItems:"center",justifyContent:"center",marginBottom:14},title:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:17,color:AppColors_1.AppColors.slate900,textAlign:"center",marginBottom:8,letterSpacing:-.2},message:{fontFamily:AppFonts_1.AppFonts.interRegular,fontSize:13,color:AppColors_1.AppColors.grayTextWeak,textAlign:"center",lineHeight:19,paddingHorizontal:8,marginBottom:22},buttonRow:{flexDirection:"row",alignItems:"center",gap:10,width:"100%"},cancelBtn:{flex:1,height:44,borderRadius:12,backgroundColor:AppColors_1.AppColors.graySurface,borderWidth:1,borderColor:AppColors_1.AppColors.grayBorderSecondary,alignItems:"center",justifyContent:"center"},cancelBtnText:{fontFamily:AppFonts_1.AppFonts.interSemiBold,fontSize:14,color:AppColors_1.AppColors.grayText},confirmBtn:{flex:1.15,height:44,borderRadius:12,alignItems:"center",justifyContent:"center"},confirmBtnDestructive:{backgroundColor:AppColors_1.AppColors.red500,...react_native_1.Platform.select({ios:{shadowColor:AppColors_1.AppColors.red500,shadowOffset:{width:0,height:4},shadowOpacity:.35,shadowRadius:8},android:{elevation:4}})},confirmBtnPrimary:{backgroundColor:AppColors_1.AppColors.purple,...react_native_1.Platform.select({ios:{shadowColor:AppColors_1.AppColors.purple,shadowOffset:{width:0,height:4},shadowOpacity:.35,shadowRadius:8},android:{elevation:4}})},confirmBtnText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:14,color:AppColors_1.AppColors.white,letterSpacing:.2}});
@@ -1,6 +1,6 @@
1
- "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(t,o,l,n){n===void 0&&(n=l);var a=Object.getOwnPropertyDescriptor(o,l);(!a||("get"in a?!o.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return o[l]}}),Object.defineProperty(t,n,a)}):(function(t,o,l,n){n===void 0&&(n=l),t[n]=o[l]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(t,o){Object.defineProperty(t,"default",{enumerable:!0,value:o})}):function(t,o){t.default=o}),__importStar=this&&this.__importStar||(function(){var t=function(o){return t=Object.getOwnPropertyNames||function(l){var n=[];for(var a in l)Object.prototype.hasOwnProperty.call(l,a)&&(n[n.length]=a);return n},t(o)};return function(o){if(o&&o.__esModule)return o;var l={};if(o!=null)for(var n=t(o),a=0;a<n.length;a++)n[a]!=="default"&&__createBinding(l,o,n[a]);return __setModuleDefault(l,o),l}})(),__importDefault=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0});const react_1=__importStar(require("react")),react_native_1=require("react-native"),InspectorContext_1=require("./InspectorContext"),i18n_1=require("../../i18n"),TouchableScale_1=__importDefault(require("../TouchableScale")),AnimatedEntrance_1=__importDefault(require("../AnimatedEntrance")),ConsoleLogCard_1=require("../ConsoleLogCard"),EmptyState_1=__importDefault(require("../EmptyState")),EndOfListFooter_1=__importDefault(require("../EndOfListFooter")),styles_1=__importDefault(require("../../styles")),AppColors_1=require("../../styles/AppColors"),AppFonts_1=require("../../styles/AppFonts"),types_1=require("../../types"),NetworkIcons_1=require("../NetworkIcons"),LOAD_MORE_STEP=10,ConsoleTab=react_1.default.memo(()=>{const{t}=(0,i18n_1.useTranslation)(),{logSearch:o,setLogSearch:l,logSortOrder:n,setLogSortOrder:a,handleDelete:L,logFilters:s,setLogFilters:A,logCounts:_,filteredConsoleLogs:c,visibleConsoleLogs:b,maxConsoleLogs:S}=(0,InspectorContext_1.useInspector)(),V=S||100,T=(0,react_1.useRef)(null),[I,v]=react_1.default.useState(V);react_1.default.useEffect(()=>{v(S||100),T.current?.scrollToOffset({offset:0,animated:!1})},[o,s,S]);const w=(0,react_1.useMemo)(()=>c.slice(0,I),[c,I]),F=(0,react_1.useCallback)(({item:e,index:r})=><AnimatedEntrance_1.default index={r}distance={8}>
2
- <ConsoleLogCard_1.ConsoleLogCard item={e}searchStr={o}/>
3
- </AnimatedEntrance_1.default>,[o]),z=(0,react_1.useCallback)((e,r)=>({length:148,offset:148*r,index:r}),[]),O=(0,react_1.useCallback)((e,r)=>e?.id?.toString()??r.toString(),[]),E=(0,react_1.useMemo)(()=>{const e=b.length,r=c.length;if(s.has("all")||!Array.from(s).some(h=>h!=="all"))return<react_native_1.View style={{paddingHorizontal:12,paddingTop:8,paddingBottom:3}}>
1
+ "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(o,t,l,n){n===void 0&&(n=l);var a=Object.getOwnPropertyDescriptor(t,l);(!a||("get"in a?!t.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return t[l]}}),Object.defineProperty(o,n,a)}):(function(o,t,l,n){n===void 0&&(n=l),o[n]=t[l]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(o,t){Object.defineProperty(o,"default",{enumerable:!0,value:t})}):function(o,t){o.default=t}),__importStar=this&&this.__importStar||(function(){var o=function(t){return o=Object.getOwnPropertyNames||function(l){var n=[];for(var a in l)Object.prototype.hasOwnProperty.call(l,a)&&(n[n.length]=a);return n},o(t)};return function(t){if(t&&t.__esModule)return t;var l={};if(t!=null)for(var n=o(t),a=0;a<n.length;a++)n[a]!=="default"&&__createBinding(l,t,n[a]);return __setModuleDefault(l,t),l}})(),__importDefault=this&&this.__importDefault||function(o){return o&&o.__esModule?o:{default:o}};Object.defineProperty(exports,"__esModule",{value:!0});const react_1=__importStar(require("react")),react_native_1=require("react-native"),InspectorContext_1=require("./InspectorContext"),i18n_1=require("../../i18n"),TouchableScale_1=__importDefault(require("../TouchableScale")),AnimatedEntrance_1=__importDefault(require("../AnimatedEntrance")),ConsoleLogCard_1=require("../ConsoleLogCard"),EmptyState_1=__importDefault(require("../EmptyState")),EndOfListFooter_1=__importDefault(require("../EndOfListFooter")),styles_1=__importDefault(require("../../styles")),AppColors_1=require("../../styles/AppColors"),AppFonts_1=require("../../styles/AppFonts"),types_1=require("../../types"),NetworkIcons_1=require("../NetworkIcons"),LOAD_MORE_STEP=10,ConsoleTab=react_1.default.memo(()=>{const{t:o}=(0,i18n_1.useTranslation)(),{logSearch:t,setLogSearch:l,logSortOrder:n,setLogSortOrder:a,handleDelete:F,logFilters:s,setLogFilters:S,logCounts:_,filteredConsoleLogs:c,visibleConsoleLogs:b,maxConsoleLogs:A,setSelectedLog:T}=(0,InspectorContext_1.useInspector)(),z=A||100,I=(0,react_1.useRef)(null),[v,x]=react_1.default.useState(z);react_1.default.useEffect(()=>{x(A||100),I.current?.scrollToOffset({offset:0,animated:!1})},[t,s,A]);const w=(0,react_1.useMemo)(()=>c.slice(0,v),[c,v]),L=(0,react_1.useCallback)(e=>{T(e)},[T]),P=(0,react_1.useCallback)(({item:e,index:r})=><AnimatedEntrance_1.default index={r}distance={8}>
2
+ <ConsoleLogCard_1.ConsoleLogCard item={e}searchStr={t}onPress={L}/>
3
+ </AnimatedEntrance_1.default>,[t,L]),E=(0,react_1.useCallback)((e,r)=>({length:148,offset:148*r,index:r}),[]),O=(0,react_1.useCallback)((e,r)=>e?.id?.toString()??r.toString(),[]),B=(0,react_1.useMemo)(()=>{const e=b.length,r=c.length;if(s.has("all")||!Array.from(s).some(h=>h!=="all"))return<react_native_1.View style={{paddingHorizontal:12,paddingTop:8,paddingBottom:3}}>
4
4
  <react_native_1.Text style={{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:11,color:AppColors_1.AppColors.grayTextWeak,letterSpacing:.2}}>
5
5
  {r===e?`Showing ${e} logs`:`Showing ${r} of ${e} logs`}
6
6
  </react_native_1.Text>
@@ -8,13 +8,13 @@
8
8
  <react_native_1.Text style={{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:11,color:AppColors_1.AppColors.grayTextWeak,letterSpacing:.2}}>
9
9
  Filtered by {h.join(", ")} ({r} of {e} logs)
10
10
  </react_native_1.Text>
11
- </react_native_1.View>}},[b.length,c.length,s]),[m,x]=react_1.default.useState(!1),P=(0,react_1.useMemo)(()=>["[AXIOS]","[API]","[GRAPHQL]","[REDUX]","[ANALYTICS]","[AUTH]","[NAV]","[STORAGE]","[PERF]","[WS]","[PUSH]","[PAYMENT]","[SYNC]","[BLE]","[LOCATION]","[TEST]","[DEBUG]"],[]),B=(0,react_1.useMemo)(()=>[{id:types_1.LogFilter.All,label:t("common.all","All"),count:_.all?.split("/")?.[0]??"0",color:AppColors_1.AppColors.purple,Icon:NetworkIcons_1.LayersIcon},{id:types_1.LogFilter.UserLog,label:t("console.log","Log"),count:_["user-log"]?.split("/")?.[0]??"0",color:AppColors_1.AppColors.teal600,Icon:NetworkIcons_1.UserIcon},{id:types_1.LogFilter.Info,label:t("console.info","Info"),count:_.info?.split("/")?.[0]??"0",color:AppColors_1.AppColors.sky600,Icon:NetworkIcons_1.InfoCircleIcon},{id:types_1.LogFilter.Warn,label:t("console.warning","Warn"),count:_.warn?.split("/")?.[0]??"0",color:AppColors_1.AppColors.amber600,Icon:NetworkIcons_1.WarningTriangleIcon},{id:types_1.LogFilter.Error,label:t("console.error","Error"),count:_.error?.split("/")?.[0]??"0",color:AppColors_1.AppColors.errorColor,Icon:NetworkIcons_1.ErrorCircleIcon},{id:types_1.LogFilter.Analytics,label:t("console.analytics","Analytics"),count:_.analytics?.split("/")?.[0]??"0",color:AppColors_1.AppColors.violet600,Icon:NetworkIcons_1.AnalyticsIcon}],[_,t]);return<react_native_1.View style={{flex:1}}>
11
+ </react_native_1.View>}},[b.length,c.length,s]),[m,V]=react_1.default.useState(!1),H=(0,react_1.useMemo)(()=>["[AXIOS]","[API]","[GRAPHQL]","[REDUX]","[ANALYTICS]","[AUTH]","[NAV]","[STORAGE]","[PERF]","[WS]","[PUSH]","[PAYMENT]","[SYNC]","[BLE]","[LOCATION]","[TEST]","[DEBUG]"],[]),M=(0,react_1.useMemo)(()=>[{id:types_1.LogFilter.All,label:o("common.all","All"),count:_.all?.split("/")?.[0]??"0",color:AppColors_1.AppColors.purple,Icon:NetworkIcons_1.LayersIcon},{id:types_1.LogFilter.UserLog,label:o("console.log","Log"),count:_["user-log"]?.split("/")?.[0]??"0",color:AppColors_1.AppColors.teal600,Icon:NetworkIcons_1.UserIcon},{id:types_1.LogFilter.Info,label:o("console.info","Info"),count:_.info?.split("/")?.[0]??"0",color:AppColors_1.AppColors.sky600,Icon:NetworkIcons_1.InfoCircleIcon},{id:types_1.LogFilter.Warn,label:o("console.warning","Warn"),count:_.warn?.split("/")?.[0]??"0",color:AppColors_1.AppColors.amber600,Icon:NetworkIcons_1.WarningTriangleIcon},{id:types_1.LogFilter.Error,label:o("console.error","Error"),count:_.error?.split("/")?.[0]??"0",color:AppColors_1.AppColors.errorColor,Icon:NetworkIcons_1.ErrorCircleIcon},{id:types_1.LogFilter.Analytics,label:o("console.analytics","Analytics"),count:_.analytics?.split("/")?.[0]??"0",color:AppColors_1.AppColors.violet600,Icon:NetworkIcons_1.AnalyticsIcon}],[_,o]);return<react_native_1.View style={{flex:1}}>
12
12
  <react_native_1.View style={{backgroundColor:AppColors_1.AppColors.white,borderBottomWidth:1,borderBottomColor:AppColors_1.AppColors.dividerColor,paddingBottom:6}}>
13
13
  <react_native_1.View style={[styles_1.default.toolbarRow,{marginTop:12,marginBottom:8}]}>
14
14
  <react_native_1.View style={[styles_1.default.searchContainer,m&&{borderColor:AppColors_1.AppColors.purple,borderWidth:1.5}]}>
15
15
  <NetworkIcons_1.SearchIcon color={m?AppColors_1.AppColors.purple:AppColors_1.AppColors.grayTextWeak}size={16}/>
16
- <react_native_1.TextInput placeholder={t("console.searchPlaceholder")}placeholderTextColor={AppColors_1.AppColors.grayTextWeak}value={o}onChangeText={l}onFocus={()=>x(!0)}onBlur={()=>x(!1)}style={styles_1.default.searchInput}autoCorrect={!1}autoCapitalize="none"/>
17
- {o.length>0&&<react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:4}}>
16
+ <react_native_1.TextInput placeholder={o("console.searchPlaceholder")}placeholderTextColor={AppColors_1.AppColors.grayTextWeak}value={t}onChangeText={l}onFocus={()=>V(!0)}onBlur={()=>V(!1)}style={styles_1.default.searchInput}autoCorrect={!1}autoCapitalize="none"/>
17
+ {t.length>0&&<react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:4}}>
18
18
  <react_native_1.View style={{backgroundColor:`${AppColors_1.AppColors.purple}20`,borderRadius:10,paddingHorizontal:6,paddingVertical:2}}>
19
19
  <react_native_1.Text style={{color:AppColors_1.AppColors.purple,fontSize:10,fontFamily:AppFonts_1.AppFonts.interBold}}>
20
20
  {c.length}
@@ -30,15 +30,15 @@
30
30
  <TouchableScale_1.default style={styles_1.default.toolbarBtn}onPress={()=>a(e=>e==="newest"?"oldest":"newest")}hitSlop={10}>
31
31
  <NetworkIcons_1.SortArrowIcon color={AppColors_1.AppColors.grayTextStrong}size={18}direction={n==="newest"?"down":"up"}/>
32
32
  </TouchableScale_1.default>
33
- <TouchableScale_1.default style={[styles_1.default.toolbarBtn,{borderColor:`${AppColors_1.AppColors.errorColor}38`,backgroundColor:`${AppColors_1.AppColors.errorColor}0F`}]}onPress={L}hitSlop={6}>
33
+ <TouchableScale_1.default style={[styles_1.default.toolbarBtn,{borderColor:`${AppColors_1.AppColors.errorColor}38`,backgroundColor:`${AppColors_1.AppColors.errorColor}0F`}]}onPress={F}hitSlop={6}>
34
34
  <NetworkIcons_1.TrashIcon color={AppColors_1.AppColors.errorColor}size={15}/>
35
35
  </TouchableScale_1.default>
36
36
  </react_native_1.View>
37
37
  </react_native_1.View>
38
38
 
39
39
 
40
- {(m||o.length>0)&&<react_native_1.ScrollView horizontal showsHorizontalScrollIndicator={!1}style={{marginBottom:6,maxHeight:30}}contentContainerStyle={{paddingHorizontal:16,flexDirection:"row",alignItems:"center",gap:6}}>
41
- {P.map(e=>{const r=o.includes(e);return<TouchableScale_1.default key={e}onPress={()=>{l(r?i=>i.replace(e,"").trim():i=>i?`${i} ${e}`.trim():e)}}>
40
+ {(m||t.length>0)&&<react_native_1.ScrollView horizontal showsHorizontalScrollIndicator={!1}style={{marginBottom:6,maxHeight:30}}contentContainerStyle={{paddingHorizontal:16,flexDirection:"row",alignItems:"center",gap:6}}>
41
+ {H.map(e=>{const r=t.includes(e);return<TouchableScale_1.default key={e}onPress={()=>{l(r?i=>i.replace(e,"").trim():i=>i?`${i} ${e}`.trim():e)}}>
42
42
  <react_native_1.View style={{paddingHorizontal:8,paddingVertical:3,borderRadius:6,backgroundColor:r?AppColors_1.AppColors.purple:`${AppColors_1.AppColors.purple}14`,borderWidth:1,borderColor:r?AppColors_1.AppColors.purple:`${AppColors_1.AppColors.purple}30`}}>
43
43
  <react_native_1.Text style={{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:10,color:r?AppColors_1.AppColors.white:AppColors_1.AppColors.purple}}>
44
44
  {e}
@@ -50,7 +50,7 @@
50
50
 
51
51
  <react_native_1.View style={{flexDirection:"row",alignItems:"center",marginBottom:8,paddingHorizontal:12,gap:6}}>
52
52
  <react_native_1.ScrollView horizontal showsHorizontalScrollIndicator={!1}style={{flex:1}}contentContainerStyle={{flexDirection:"row",alignItems:"center",gap:6,paddingRight:6}}>
53
- {B.map(e=>{const r=e.id==="all"?s.has("all"):s.has(e.id)&&!s.has("all"),i=e.color||AppColors_1.AppColors.purple,h=r?AppColors_1.AppColors.white:i,C=e.Icon;return<TouchableScale_1.default key={e.id}onPress={()=>{e.id==="all"?A(new Set(["all"])):A(H=>{const y=new Set(H);return y.delete("all"),y.has(e.id)?y.delete(e.id):y.add(e.id),y.size===0&&y.add("all"),y})}}>
53
+ {M.map(e=>{const r=e.id==="all"?s.has("all"):s.has(e.id)&&!s.has("all"),i=e.color||AppColors_1.AppColors.purple,h=r?AppColors_1.AppColors.white:i,C=e.Icon;return<TouchableScale_1.default key={e.id}onPress={()=>{e.id==="all"?S(new Set(["all"])):S(R=>{const y=new Set(R);return y.delete("all"),y.has(e.id)?y.delete(e.id):y.add(e.id),y.size===0&&y.add("all"),y})}}>
54
54
  <react_native_1.View style={{flexDirection:"row",alignItems:"center",paddingHorizontal:9,paddingVertical:4.5,borderRadius:8,backgroundColor:r?i:`${i}12`,borderWidth:1,borderColor:r?i:`${i}30`,gap:5}}>
55
55
  <C size={11}color={h}/>
56
56
  <react_native_1.Text style={{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:10.5,color:r?AppColors_1.AppColors.white:AppColors_1.AppColors.primaryBlack}}>
@@ -67,5 +67,5 @@
67
67
  </react_native_1.View>
68
68
  </react_native_1.View>
69
69
 
70
- <react_native_1.FlatList ref={T}data={w}keyExtractor={O}ListHeaderComponent={E}renderItem={F}getItemLayout={z}initialNumToRender={15}maxToRenderPerBatch={10}windowSize={9}removeClippedSubviews={react_native_1.Platform.OS==="android"}renderToHardwareTextureAndroid={!0}ListEmptyComponent={<EmptyState_1.default isSearch={o.length>0||!s.has("all")}searchQuery={o}customTitle={o.length>0?"No matching console logs":"No console logs"}onClearSearch={()=>{l(""),A(new Set(["all"]))}}/>}ListFooterComponent={c.length>0?<EndOfListFooter_1.default count={w.length}totalCount={c.length}label="logs"loadMoreStep={LOAD_MORE_STEP}hasMore={w.length<c.length}onLoadMore={()=>v(e=>e+LOAD_MORE_STEP)}/>:null}contentContainerStyle={[styles_1.default.listContent,c.length===0&&{flexGrow:1}]}keyboardShouldPersistTaps="handled"/>
70
+ <react_native_1.FlatList ref={I}data={w}keyExtractor={O}ListHeaderComponent={B}renderItem={P}getItemLayout={E}initialNumToRender={10}maxToRenderPerBatch={8}windowSize={5}updateCellsBatchingPeriod={40}removeClippedSubviews={!0}renderToHardwareTextureAndroid={!0}showsVerticalScrollIndicator={!1}ListEmptyComponent={<EmptyState_1.default isSearch={t.length>0||!s.has("all")}searchQuery={t}customTitle={t.length>0?"No matching console logs":"No console logs"}onClearSearch={()=>{l(""),S(new Set(["all"]))}}/>}ListFooterComponent={c.length>0?<EndOfListFooter_1.default count={w.length}totalCount={c.length}label="logs"loadMoreStep={LOAD_MORE_STEP}hasMore={w.length<c.length}onLoadMore={()=>x(e=>e+LOAD_MORE_STEP)}/>:null}contentContainerStyle={[styles_1.default.listContent,c.length===0&&{flexGrow:1}]}keyboardShouldPersistTaps="handled"/>
71
71
  </react_native_1.View>});exports.default=ConsoleTab;
@@ -1,4 +1,4 @@
1
- "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(t,o,s,n){n===void 0&&(n=s);var i=Object.getOwnPropertyDescriptor(o,s);(!i||("get"in i?!o.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return o[s]}}),Object.defineProperty(t,n,i)}):(function(t,o,s,n){n===void 0&&(n=s),t[n]=o[s]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(t,o){Object.defineProperty(t,"default",{enumerable:!0,value:o})}):function(t,o){t.default=o}),__importStar=this&&this.__importStar||(function(){var t=function(o){return t=Object.getOwnPropertyNames||function(s){var n=[];for(var i in s)Object.prototype.hasOwnProperty.call(s,i)&&(n[n.length]=i);return n},t(o)};return function(o){if(o&&o.__esModule)return o;var s={};if(o!=null)for(var n=t(o),i=0;i<n.length;i++)n[i]!=="default"&&__createBinding(s,o,n[i]);return __setModuleDefault(s,o),s}})(),__importDefault=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0});const react_1=__importStar(require("react")),react_native_1=require("react-native"),i18n_1=require("../../i18n"),InspectorContext_1=require("./InspectorContext"),TouchableScale_1=__importDefault(require("../TouchableScale")),AnimatedEntrance_1=__importDefault(require("../AnimatedEntrance")),EndOfListFooter_1=__importDefault(require("../EndOfListFooter")),FeatureUnderDevNotice_1=__importDefault(require("./FeatureUnderDevNotice")),HighlightText_1=__importDefault(require("../HighlightText")),AppColors_1=require("../../styles/AppColors"),AppFonts_1=require("../../styles/AppFonts"),crashHandler_1=require("../../customHooks/crashHandler"),CrashFilterModal_1=__importStar(require("./CrashFilterModal")),NetworkIcons_1=require("../NetworkIcons"),getRelativeTime=t=>{const o=Date.now(),s=Math.max(0,o-t),n=Math.floor(s/1e3),i=Math.floor(n/60),T=Math.floor(i/60),x=Math.floor(T/24);return n<60?`${n}s ago`:i<60?`${i}m ago`:T<24?`${T}h ago`:`${x}d ago`},LOAD_MORE_STEP=10,CrashTab=react_1.default.memo(()=>{const{t}=(0,i18n_1.useTranslation)(),{crashRecords:o,setSelectedCrash:s,maxCrashLogs:n}=(0,InspectorContext_1.useInspector)(),i=n||50,T=(0,react_1.useRef)(null),[x,b]=(0,react_1.useState)(i),[f,A]=(0,react_1.useState)(""),[y,v]=(0,react_1.useState)("all"),[l,S]=(0,react_1.useState)(CrashFilterModal_1.DEFAULT_CRASH_FILTERS),[F,V]=(0,react_1.useState)(!1);(0,react_1.useEffect)(()=>{b(n||50),T.current?.scrollToOffset({offset:0,animated:!1})},[f,y,l,n]);const g=(0,react_1.useMemo)(()=>{const e=o.length;let r=0,a=0,h=0,C=0,w=0;return o.forEach(m=>{m.isFatal&&r++,m.type==="js"?a++:m.type==="promise"?h++:m.type==="render"?C++:m.type==="native"&&w++}),{total:e,fatalCount:r,jsCount:a,promiseCount:h,renderCount:C,nativeCount:w}},[o]),_=(0,react_1.useMemo)(()=>{let e=o.filter(r=>{if(y==="fatal"&&!r.isFatal||y==="js"&&r.type!=="js"||y==="promise"&&r.type!=="promise"||y==="render"&&r.type!=="render"||y==="native"&&r.type!=="native"||l.types.size>0&&!l.types.has("all")&&!(l.types.has("fatal")&&r.isFatal||l.types.has("js")&&r.type==="js"||l.types.has("promise")&&r.type==="promise"||l.types.has("render")&&r.type==="render"||l.types.has("native")&&r.type==="native"))return!1;if(l.timeWindow!=="all"){const a=Date.now(),h=l.timeWindow==="15m"?a-900*1e3:l.timeWindow==="1h"?a-3600*1e3:l.timeWindow==="24h"?a-1440*60*1e3:a-10080*60*1e3;if(r.timestamp<h)return!1}if(l.platform!=="all"&&(r.deviceInfo?.platform||"").toLowerCase()!==l.platform)return!1;if(l.engine!=="all"){const a=r.deviceInfo?.isHermes;if(l.engine==="hermes"&&a!==!0||l.engine==="jsc"&&a===!0)return!1}if(f.trim().length>0){const a=f.trim().toLowerCase().split(/\s+/).filter(Boolean),h=[r.message||"",r.name||"",r.stack||"",r.type||"",r.deviceInfo?.platform||"",...(r.breadcrumbs||[]).map(C=>`${C.type||""} ${C.message||""}`)].join(" ").toLowerCase();return a.every(C=>h.includes(C))}return!0});return l.sortBy==="time_asc"&&(e=[...e].sort((r,a)=>r.timestamp-a.timestamp)),e},[o,y,f,l]),I=()=>{react_native_1.Alert.alert(t("crash.clearTitle"),t("crash.clearMessage"),[{text:t("crash.clearCancel"),style:"cancel"},{text:t("crash.clearConfirm"),style:"destructive",onPress:()=>(0,crashHandler_1.clearCrashRecords)()}])},B=(0,react_1.useCallback)(({item:e,index:r})=>{const a=e.isFatal,h=e.type.toUpperCase(),C=e.parsedStack&&e.parsedStack.length>0?e.parsedStack.find(k=>k.isAppCode)||e.parsedStack[0]:null,w=e.type==="native"?`${AppColors_1.AppColors.errorColor}22`:e.type==="render"?`${AppColors_1.AppColors.purple}22`:e.type==="promise"?`${AppColors_1.AppColors.darkOrange}22`:`${AppColors_1.AppColors.offerPurple}22`,m=e.type==="native"?AppColors_1.AppColors.errorColor:e.type==="render"?AppColors_1.AppColors.purple:e.type==="promise"?AppColors_1.AppColors.darkOrange:AppColors_1.AppColors.offerPurple;return<AnimatedEntrance_1.default index={r}distance={8}>
1
+ "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(t,o,s,n){n===void 0&&(n=s);var i=Object.getOwnPropertyDescriptor(o,s);(!i||("get"in i?!o.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return o[s]}}),Object.defineProperty(t,n,i)}):(function(t,o,s,n){n===void 0&&(n=s),t[n]=o[s]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(t,o){Object.defineProperty(t,"default",{enumerable:!0,value:o})}):function(t,o){t.default=o}),__importStar=this&&this.__importStar||(function(){var t=function(o){return t=Object.getOwnPropertyNames||function(s){var n=[];for(var i in s)Object.prototype.hasOwnProperty.call(s,i)&&(n[n.length]=i);return n},t(o)};return function(o){if(o&&o.__esModule)return o;var s={};if(o!=null)for(var n=t(o),i=0;i<n.length;i++)n[i]!=="default"&&__createBinding(s,o,n[i]);return __setModuleDefault(s,o),s}})(),__importDefault=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0});const react_1=__importStar(require("react")),react_native_1=require("react-native"),i18n_1=require("../../i18n"),InspectorContext_1=require("./InspectorContext"),TouchableScale_1=__importDefault(require("../TouchableScale")),AnimatedEntrance_1=__importDefault(require("../AnimatedEntrance")),EndOfListFooter_1=__importDefault(require("../EndOfListFooter")),FeatureUnderDevNotice_1=__importDefault(require("./FeatureUnderDevNotice")),HighlightText_1=__importDefault(require("../HighlightText")),AppColors_1=require("../../styles/AppColors"),AppFonts_1=require("../../styles/AppFonts"),crashHandler_1=require("../../customHooks/crashHandler"),CrashFilterModal_1=__importStar(require("./CrashFilterModal")),ConfirmationModal_1=require("./ConfirmationModal"),NetworkIcons_1=require("../NetworkIcons"),getRelativeTime=t=>{const o=Date.now(),s=Math.max(0,o-t),n=Math.floor(s/1e3),i=Math.floor(n/60),T=Math.floor(i/60),w=Math.floor(T/24);return n<60?`${n}s ago`:i<60?`${i}m ago`:T<24?`${T}h ago`:`${w}d ago`},LOAD_MORE_STEP=10,CrashTab=react_1.default.memo(()=>{const{t}=(0,i18n_1.useTranslation)(),{crashRecords:o,setSelectedCrash:s,maxCrashLogs:n}=(0,InspectorContext_1.useInspector)(),i=n||50,T=(0,react_1.useRef)(null),[w,v]=(0,react_1.useState)(i),[f,A]=(0,react_1.useState)(""),[h,S]=(0,react_1.useState)("all"),[l,V]=(0,react_1.useState)(CrashFilterModal_1.DEFAULT_CRASH_FILTERS),[I,F]=(0,react_1.useState)(!1),[B,b]=(0,react_1.useState)(!1);(0,react_1.useEffect)(()=>{v(n||50),T.current?.scrollToOffset({offset:0,animated:!1})},[f,h,l,n]);const g=(0,react_1.useMemo)(()=>{const e=o.length;let r=0,a=0,y=0,C=0,x=0;return o.forEach(m=>{m.isFatal&&r++,m.type==="js"?a++:m.type==="promise"?y++:m.type==="render"?C++:m.type==="native"&&x++}),{total:e,fatalCount:r,jsCount:a,promiseCount:y,renderCount:C,nativeCount:x}},[o]),_=(0,react_1.useMemo)(()=>{let e=o.filter(r=>{if(h==="fatal"&&!r.isFatal||h==="js"&&r.type!=="js"||h==="promise"&&r.type!=="promise"||h==="render"&&r.type!=="render"||h==="native"&&r.type!=="native"||l.types.size>0&&!l.types.has("all")&&!(l.types.has("fatal")&&r.isFatal||l.types.has("js")&&r.type==="js"||l.types.has("promise")&&r.type==="promise"||l.types.has("render")&&r.type==="render"||l.types.has("native")&&r.type==="native"))return!1;if(l.timeWindow!=="all"){const a=Date.now(),y=l.timeWindow==="15m"?a-900*1e3:l.timeWindow==="1h"?a-3600*1e3:l.timeWindow==="24h"?a-1440*60*1e3:a-10080*60*1e3;if(r.timestamp<y)return!1}if(l.platform!=="all"&&(r.deviceInfo?.platform||"").toLowerCase()!==l.platform)return!1;if(l.engine!=="all"){const a=r.deviceInfo?.isHermes;if(l.engine==="hermes"&&a!==!0||l.engine==="jsc"&&a===!0)return!1}if(f.trim().length>0){const a=f.trim().toLowerCase().split(/\s+/).filter(Boolean),y=[r.message||"",r.name||"",r.stack||"",r.type||"",r.deviceInfo?.platform||"",...(r.breadcrumbs||[]).map(C=>`${C.type||""} ${C.message||""}`)].join(" ").toLowerCase();return a.every(C=>y.includes(C))}return!0});return l.sortBy==="time_asc"&&(e=[...e].sort((r,a)=>r.timestamp-a.timestamp)),e},[o,h,f,l]),k=()=>{b(!0)},z=(0,react_1.useCallback)(({item:e,index:r})=>{const a=e.isFatal,y=e.type.toUpperCase(),C=e.parsedStack&&e.parsedStack.length>0?e.parsedStack.find(R=>R.isAppCode)||e.parsedStack[0]:null,x=e.type==="native"?`${AppColors_1.AppColors.errorColor}22`:e.type==="render"?`${AppColors_1.AppColors.purple}22`:e.type==="promise"?`${AppColors_1.AppColors.darkOrange}22`:`${AppColors_1.AppColors.offerPurple}22`,m=e.type==="native"?AppColors_1.AppColors.errorColor:e.type==="render"?AppColors_1.AppColors.purple:e.type==="promise"?AppColors_1.AppColors.darkOrange:AppColors_1.AppColors.offerPurple;return<AnimatedEntrance_1.default index={r}distance={8}>
2
2
  <TouchableScale_1.default onPress={()=>{s(e)}}style={[localStyles.cardContainer,a&&localStyles.fatalCardBorder]}>
3
3
 
4
4
  <react_native_1.View style={localStyles.cardHeader}>
@@ -14,9 +14,9 @@
14
14
  <react_native_1.Text style={localStyles.caughtBadgeText}>{t("crash.handledBadge")}</react_native_1.Text>
15
15
  </react_native_1.View>}
16
16
 
17
- <react_native_1.View style={[localStyles.typeBadge,{backgroundColor:w}]}>
17
+ <react_native_1.View style={[localStyles.typeBadge,{backgroundColor:x}]}>
18
18
  <react_native_1.Text style={[localStyles.typeBadgeText,{color:m}]}>
19
- {h}
19
+ {y}
20
20
  </react_native_1.Text>
21
21
  </react_native_1.View>
22
22
  </react_native_1.View>
@@ -150,13 +150,13 @@
150
150
  </react_native_1.View>
151
151
 
152
152
 
153
- <TouchableScale_1.default onPress={()=>V(!0)}style={[localStyles.filterButton,!(0,CrashFilterModal_1.isCrashFiltersDefault)(l)&&{borderColor:`${AppColors_1.AppColors.brandPurple}60`,backgroundColor:`${AppColors_1.AppColors.brandPurple}15`}]}>
153
+ <TouchableScale_1.default onPress={()=>F(!0)}style={[localStyles.filterButton,!(0,CrashFilterModal_1.isCrashFiltersDefault)(l)&&{borderColor:`${AppColors_1.AppColors.brandPurple}60`,backgroundColor:`${AppColors_1.AppColors.brandPurple}15`}]}>
154
154
  <NetworkIcons_1.FilterIcon size={14}color={(0,CrashFilterModal_1.isCrashFiltersDefault)(l)?AppColors_1.AppColors.grayTextStrong:AppColors_1.AppColors.brandPurple}/>
155
155
  {!(0,CrashFilterModal_1.isCrashFiltersDefault)(l)&&<react_native_1.View style={{position:"absolute",top:2,right:2,width:7,height:7,borderRadius:3.5,backgroundColor:AppColors_1.AppColors.darkOrange,borderWidth:1,borderColor:AppColors_1.AppColors.white}}/>}
156
156
  </TouchableScale_1.default>
157
157
 
158
158
 
159
- <TouchableScale_1.default onPress={I}style={localStyles.clearButton}>
159
+ <TouchableScale_1.default onPress={k}style={localStyles.clearButton}>
160
160
  <NetworkIcons_1.TrashIcon size={14}color={AppColors_1.AppColors.errorColor}/>
161
161
  </TouchableScale_1.default>
162
162
  </react_native_1.View>
@@ -166,9 +166,9 @@
166
166
 
167
167
  <react_native_1.View style={{flexDirection:"row",alignItems:"center",marginBottom:8,paddingHorizontal:12,gap:6}}>
168
168
  <react_native_1.ScrollView horizontal showsHorizontalScrollIndicator={!1}style={{flex:1}}contentContainerStyle={{flexDirection:"row",alignItems:"center",gap:6,paddingRight:6}}>
169
- {[{key:"all",label:t("crash.filterAll"),Icon:NetworkIcons_1.LayersIcon,count:g.total,themeColor:AppColors_1.AppColors.purple},{key:"fatal",label:t("crash.filterFatal"),Icon:NetworkIcons_1.SkullIcon,count:g.fatalCount,themeColor:AppColors_1.AppColors.errorColor},{key:"js",label:t("crash.filterJsError"),Icon:NetworkIcons_1.JsIcon,count:g.jsCount,themeColor:AppColors_1.AppColors.amber600},{key:"promise",label:t("crash.filterPromise"),Icon:NetworkIcons_1.HourglassIcon,count:g.promiseCount,themeColor:AppColors_1.AppColors.orange600},{key:"render",label:t("crash.filterRender"),Icon:NetworkIcons_1.LayoutIcon,count:g.renderCount,themeColor:AppColors_1.AppColors.violet600},{key:"native",label:t("crash.filterNative"),Icon:NetworkIcons_1.ChipIcon,count:g.nativeCount,themeColor:AppColors_1.AppColors.cyan600}].map(e=>{const r=y===e.key,a=e.themeColor||AppColors_1.AppColors.purple,h=r?AppColors_1.AppColors.white:a,C=e.Icon;return<TouchableScale_1.default key={e.key}onPress={()=>v(e.key)}>
169
+ {[{key:"all",label:t("crash.filterAll"),Icon:NetworkIcons_1.LayersIcon,count:g.total,themeColor:AppColors_1.AppColors.purple},{key:"fatal",label:t("crash.filterFatal"),Icon:NetworkIcons_1.SkullIcon,count:g.fatalCount,themeColor:AppColors_1.AppColors.errorColor},{key:"js",label:t("crash.filterJsError"),Icon:NetworkIcons_1.JsIcon,count:g.jsCount,themeColor:AppColors_1.AppColors.amber600},{key:"promise",label:t("crash.filterPromise"),Icon:NetworkIcons_1.HourglassIcon,count:g.promiseCount,themeColor:AppColors_1.AppColors.orange600},{key:"render",label:t("crash.filterRender"),Icon:NetworkIcons_1.LayoutIcon,count:g.renderCount,themeColor:AppColors_1.AppColors.violet600},{key:"native",label:t("crash.filterNative"),Icon:NetworkIcons_1.ChipIcon,count:g.nativeCount,themeColor:AppColors_1.AppColors.cyan600}].map(e=>{const r=h===e.key,a=e.themeColor||AppColors_1.AppColors.purple,y=r?AppColors_1.AppColors.white:a,C=e.Icon;return<TouchableScale_1.default key={e.key}onPress={()=>S(e.key)}>
170
170
  <react_native_1.View style={{flexDirection:"row",alignItems:"center",paddingHorizontal:9,paddingVertical:4.5,borderRadius:8,backgroundColor:r?a:`${a}12`,borderWidth:1,borderColor:r?a:`${a}30`,gap:5}}>
171
- <C size={11}color={h}/>
171
+ <C size={11}color={y}/>
172
172
  <react_native_1.Text style={{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:10.5,color:r?AppColors_1.AppColors.white:AppColors_1.AppColors.primaryBlack}}>
173
173
  {e.label}
174
174
  </react_native_1.Text>
@@ -190,20 +190,22 @@
190
190
  <NetworkIcons_1.ShieldAlertIcon size={38}color={AppColors_1.AppColors.greenColor}/>
191
191
  </react_native_1.View>
192
192
  <react_native_1.Text style={localStyles.emptyTitle}>
193
- {f.length>0?"No matching crash entries":y!=="all"||!(0,CrashFilterModal_1.isCrashFiltersDefault)(l)?"No crashes match filters":t("crash.emptyTitle")}
193
+ {f.length>0?"No matching crash entries":h!=="all"||!(0,CrashFilterModal_1.isCrashFiltersDefault)(l)?"No crashes match filters":t("crash.emptyTitle")}
194
194
  </react_native_1.Text>
195
195
  <react_native_1.Text style={localStyles.emptySub}>
196
- {f?`No crash entries matched "${f}"`:y!=="all"||!(0,CrashFilterModal_1.isCrashFiltersDefault)(l)?"Try adjusting your filters or search keywords.":t("crash.emptySubtitle")}
196
+ {f?`No crash entries matched "${f}"`:h!=="all"||!(0,CrashFilterModal_1.isCrashFiltersDefault)(l)?"Try adjusting your filters or search keywords.":t("crash.emptySubtitle")}
197
197
  </react_native_1.Text>
198
- {(f.length>0||y!=="all"||!(0,CrashFilterModal_1.isCrashFiltersDefault)(l))&&<TouchableScale_1.default onPress={()=>{A(""),v("all"),S(CrashFilterModal_1.DEFAULT_CRASH_FILTERS)}}style={{marginTop:10,paddingHorizontal:14,paddingVertical:7,borderRadius:8,backgroundColor:AppColors_1.AppColors.purple}}>
198
+ {(f.length>0||h!=="all"||!(0,CrashFilterModal_1.isCrashFiltersDefault)(l))&&<TouchableScale_1.default onPress={()=>{A(""),S("all"),V(CrashFilterModal_1.DEFAULT_CRASH_FILTERS)}}style={{marginTop:10,paddingHorizontal:14,paddingVertical:7,borderRadius:8,backgroundColor:AppColors_1.AppColors.purple}}>
199
199
  <react_native_1.Text style={{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:11.5,color:AppColors_1.AppColors.white}}>
200
200
  Clear Search & Filters
201
201
  </react_native_1.Text>
202
202
  </TouchableScale_1.default>}
203
203
  </react_native_1.ScrollView>:<>
204
- <react_native_1.FlatList ref={T}data={_.slice(0,x)}keyExtractor={e=>e.id}renderItem={B}initialNumToRender={12}maxToRenderPerBatch={8}windowSize={5}removeClippedSubviews={react_native_1.Platform.OS==="android"}renderToHardwareTextureAndroid={!0}contentContainerStyle={localStyles.listContent}showsVerticalScrollIndicator={!1}ListFooterComponent={_.length>0?<EndOfListFooter_1.default count={Math.min(x,_.length)}totalCount={_.length}label="crashes"loadMoreStep={LOAD_MORE_STEP}hasMore={_.length>x}onLoadMore={()=>b(e=>e+LOAD_MORE_STEP)}/>:null}/>
204
+ <react_native_1.FlatList ref={T}data={_.slice(0,w)}keyExtractor={e=>e.id}renderItem={z}initialNumToRender={10}maxToRenderPerBatch={8}windowSize={5}updateCellsBatchingPeriod={40}removeClippedSubviews={!0}renderToHardwareTextureAndroid={!0}contentContainerStyle={localStyles.listContent}showsVerticalScrollIndicator={!1}ListFooterComponent={_.length>0?<EndOfListFooter_1.default count={Math.min(w,_.length)}totalCount={_.length}label="crashes"loadMoreStep={LOAD_MORE_STEP}hasMore={_.length>w}onLoadMore={()=>v(e=>e+LOAD_MORE_STEP)}/>:null}/>
205
205
  </>}
206
206
 
207
207
 
208
- <CrashFilterModal_1.default visible={F}onClose={()=>V(!1)}filters={l}onApply={S}searchQuery={f}/>
208
+ <CrashFilterModal_1.default visible={I}onClose={()=>F(!1)}filters={l}onApply={V}searchQuery={f}/>
209
+
210
+ <ConfirmationModal_1.ConfirmationModal visible={B}title={t("crash.clearTitle","Clear Crash Records")}message={t("crash.clearMessage","Are you sure you want to clear all intercepted crash records?")}confirmText={t("crash.clearConfirm","Clear All")}cancelText={t("crash.clearCancel","Cancel")}isDestructive={!0}icon="trash"onConfirm={()=>{b(!1),(0,crashHandler_1.clearCrashRecords)()}}onCancel={()=>b(!1)}/>
209
211
  </react_native_1.View>});exports.default=CrashTab;const localStyles=react_native_1.StyleSheet.create({container:{flex:1,backgroundColor:AppColors_1.AppColors.grayBackground},statsBar:{backgroundColor:AppColors_1.AppColors.primaryLight,borderBottomWidth:1,borderBottomColor:AppColors_1.AppColors.grayBorderSecondary,paddingVertical:10},statsScrollContent:{paddingHorizontal:16,gap:8},statChip:{flexDirection:"row",alignItems:"center",gap:6,paddingHorizontal:10,paddingVertical:5,borderRadius:8,backgroundColor:AppColors_1.AppColors.purpleShade50,borderWidth:1,borderColor:`${AppColors_1.AppColors.purple}14`},statChipActive:{backgroundColor:`${AppColors_1.AppColors.purple}14`,borderColor:`${AppColors_1.AppColors.purple}33`},statChipValue:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:13,color:AppColors_1.AppColors.primaryBlack},statChipLabel:{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:11,color:AppColors_1.AppColors.grayText},controlsContainer:{paddingHorizontal:16,paddingTop:12,paddingBottom:6,backgroundColor:AppColors_1.AppColors.grayBackground},searchRow:{flexDirection:"row",alignItems:"center",gap:8},searchInputWrapper:{flex:1,flexDirection:"row",alignItems:"center",backgroundColor:AppColors_1.AppColors.primaryLight,borderWidth:1,borderColor:AppColors_1.AppColors.grayBorderSecondary,borderRadius:10,paddingHorizontal:10,height:38,gap:8},searchInput:{flex:1,fontFamily:AppFonts_1.AppFonts.interRegular,fontSize:13,color:AppColors_1.AppColors.primaryBlack,paddingVertical:0},clearButton:{width:38,height:38,borderRadius:10,backgroundColor:`${AppColors_1.AppColors.errorColor}14`,borderWidth:1,borderColor:`${AppColors_1.AppColors.errorColor}22`,alignItems:"center",justifyContent:"center"},filterButton:{width:38,height:38,borderRadius:10,backgroundColor:`${AppColors_1.AppColors.brandPurple}0F`,borderWidth:1,borderColor:`${AppColors_1.AppColors.brandPurple}30`,alignItems:"center",justifyContent:"center"},filterScrollContent:{paddingVertical:10,gap:6},filterChip:{flexDirection:"row",alignItems:"center",gap:5,paddingHorizontal:12,paddingVertical:6,borderRadius:8,backgroundColor:AppColors_1.AppColors.primaryLight,borderWidth:1,borderColor:AppColors_1.AppColors.grayBorderSecondary},filterChipActive:{backgroundColor:AppColors_1.AppColors.purple,borderColor:AppColors_1.AppColors.purple},filterChipText:{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:12,color:AppColors_1.AppColors.grayText},filterChipTextActive:{fontFamily:AppFonts_1.AppFonts.interBold,color:AppColors_1.AppColors.white},listContent:{paddingHorizontal:16,paddingTop:4,paddingBottom:24,gap:10},cardContainer:{backgroundColor:AppColors_1.AppColors.primaryLight,borderRadius:12,borderWidth:1,borderColor:AppColors_1.AppColors.grayBorderSecondary,padding:14,shadowColor:AppColors_1.AppColors.shadowColorString,shadowOffset:{width:0,height:1},shadowOpacity:.05,shadowRadius:3,elevation:2},fatalCardBorder:{borderColor:`${AppColors_1.AppColors.errorColor}44`},cardHeader:{flexDirection:"row",alignItems:"center",justifyContent:"space-between"},badgeRow:{flexDirection:"row",alignItems:"center",gap:6,flexShrink:1},sNoBadge:{backgroundColor:AppColors_1.AppColors.grayBackground,borderWidth:1,borderColor:AppColors_1.AppColors.grayBorderSecondary,paddingHorizontal:6,paddingVertical:3,borderRadius:5},sNoBadgeText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:9.5,color:AppColors_1.AppColors.grayText,letterSpacing:.3},fatalBadge:{flexDirection:"row",alignItems:"center",gap:4,backgroundColor:AppColors_1.AppColors.errorColor,paddingHorizontal:6,paddingVertical:3,borderRadius:5},fatalBadgeText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:9.5,color:AppColors_1.AppColors.white,letterSpacing:.5},caughtBadge:{backgroundColor:`${AppColors_1.AppColors.greenColor}1F`,paddingHorizontal:6,paddingVertical:3,borderRadius:5},caughtBadgeText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:9.5,color:AppColors_1.AppColors.greenColor,letterSpacing:.5},typeBadge:{paddingHorizontal:6,paddingVertical:3,borderRadius:5},typeBadgeText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:9.5,letterSpacing:.5},timeRow:{flexDirection:"row",alignItems:"center",gap:4,flexShrink:1},timestampText:{fontFamily:AppFonts_1.AppFonts.interRegular,fontSize:11,color:AppColors_1.AppColors.grayTextWeak},relativeTimeText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:10,color:AppColors_1.AppColors.grayTextWeak,backgroundColor:AppColors_1.AppColors.grayBackground,paddingHorizontal:5,paddingVertical:1,borderRadius:4,overflow:"hidden"},errorMessageText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:13.5,color:AppColors_1.AppColors.primaryBlack,lineHeight:18},locationRow:{flexDirection:"row",alignItems:"center",gap:6,marginTop:2,marginBottom:6,backgroundColor:AppColors_1.AppColors.purpleShade50,paddingHorizontal:8,paddingVertical:4,borderRadius:6},locationText:{fontFamily:AppFonts_1.AppFonts.interRegular,fontSize:11,color:AppColors_1.AppColors.grayText,flex:1},cardFooter:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",marginTop:6,paddingTop:8,borderTopWidth:1,borderTopColor:AppColors_1.AppColors.dividerColor},metaPill:{flexDirection:"row",alignItems:"center",gap:4,backgroundColor:AppColors_1.AppColors.purpleShade50,paddingHorizontal:6,paddingVertical:2,borderRadius:4},metaPillText:{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:10,color:AppColors_1.AppColors.grayTextWeak},emptyContainer:{flexGrow:1,alignItems:"center",justifyContent:"center",padding:32,paddingBottom:80},emptyIconCircle:{width:72,height:72,borderRadius:36,backgroundColor:`${AppColors_1.AppColors.greenColor}1F`,alignItems:"center",justifyContent:"center",marginBottom:16},emptyTitle:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:17,color:AppColors_1.AppColors.primaryBlack,marginBottom:6},emptySub:{fontFamily:AppFonts_1.AppFonts.interRegular,fontSize:13,color:AppColors_1.AppColors.grayText,textAlign:"center",lineHeight:18,maxWidth:280}});