react-native-inapp-inspector 1.1.13 → 1.1.15

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 (250) hide show
  1. package/README.md +9 -34
  2. package/dist/commonjs/assets/svgAssets.d.ts +3 -0
  3. package/dist/commonjs/assets/svgAssets.js +17 -0
  4. package/dist/commonjs/components/AnalyticsEventCard.d.ts +1 -14
  5. package/dist/commonjs/components/AnalyticsEventCard.js +120 -50
  6. package/dist/commonjs/components/AnalyticsGraph.d.ts +2 -6
  7. package/dist/commonjs/components/AnalyticsGraph.js +8 -8
  8. package/dist/commonjs/components/AnalyticsTabView.d.ts +15 -0
  9. package/dist/commonjs/components/AnalyticsTabView.js +157 -0
  10. package/dist/commonjs/components/AnimatedEntrance.d.ts +1 -1
  11. package/dist/commonjs/components/AnimatedEntrance.js +2 -2
  12. package/dist/commonjs/components/ApiDetailView.d.ts +22 -0
  13. package/dist/commonjs/components/ApiDetailView.js +304 -0
  14. package/dist/commonjs/components/ApisTabView.d.ts +33 -0
  15. package/dist/commonjs/components/ApisTabView.js +235 -0
  16. package/dist/commonjs/components/CodeSnippet.d.ts +1 -5
  17. package/dist/commonjs/components/CodeSnippet.js +34 -34
  18. package/dist/commonjs/components/ConsoleLogCard.d.ts +1 -8
  19. package/dist/commonjs/components/ConsoleLogCard.js +262 -442
  20. package/dist/commonjs/components/ConsoleLogDetailView.d.ts +9 -0
  21. package/dist/commonjs/components/ConsoleLogDetailView.js +278 -0
  22. package/dist/commonjs/components/ConsoleLogsTabView.d.ts +24 -0
  23. package/dist/commonjs/components/ConsoleLogsTabView.js +354 -0
  24. package/dist/commonjs/components/DiffViewer.js +4 -2
  25. package/dist/commonjs/components/DomainHeader.js +66 -41
  26. package/dist/commonjs/components/EmptyState.d.ts +2 -2
  27. package/dist/commonjs/components/EmptyState.js +2 -2
  28. package/dist/commonjs/components/EndOfListFooter.d.ts +8 -0
  29. package/dist/commonjs/components/EndOfListFooter.js +90 -0
  30. package/dist/commonjs/components/ErrorBoundary.d.ts +5 -14
  31. package/dist/commonjs/components/ErrorBoundary.js +28 -28
  32. package/dist/commonjs/components/FloatingBubble.d.ts +14 -0
  33. package/dist/commonjs/components/FloatingBubble.js +75 -0
  34. package/dist/commonjs/components/HeadersSection.js +5 -3
  35. package/dist/commonjs/components/HighlightText.d.ts +1 -1
  36. package/dist/commonjs/components/HighlightText.js +5 -7
  37. package/dist/commonjs/components/Inspector/AnalyticsTab.d.ts +3 -0
  38. package/dist/commonjs/components/Inspector/AnalyticsTab.js +232 -0
  39. package/dist/commonjs/components/Inspector/ConsoleTab.d.ts +3 -0
  40. package/dist/commonjs/components/Inspector/ConsoleTab.js +410 -0
  41. package/dist/commonjs/components/Inspector/FabLauncher.d.ts +3 -0
  42. package/dist/commonjs/components/Inspector/FabLauncher.js +54 -0
  43. package/dist/commonjs/components/Inspector/InsightsDashboard.d.ts +3 -0
  44. package/dist/commonjs/components/Inspector/InsightsDashboard.js +619 -0
  45. package/dist/commonjs/components/Inspector/InspectorContext.d.ts +5 -0
  46. package/dist/commonjs/components/Inspector/InspectorContext.js +18 -0
  47. package/dist/commonjs/components/Inspector/InspectorHeader.d.ts +3 -0
  48. package/dist/commonjs/components/Inspector/InspectorHeader.js +452 -0
  49. package/dist/commonjs/components/Inspector/LogDetail.d.ts +3 -0
  50. package/dist/commonjs/components/Inspector/LogDetail.js +963 -0
  51. package/dist/commonjs/components/Inspector/MainScreen.d.ts +3 -0
  52. package/dist/commonjs/components/Inspector/MainScreen.js +68 -0
  53. package/dist/commonjs/components/Inspector/NavigationTracker.d.ts +3 -0
  54. package/dist/commonjs/components/Inspector/NavigationTracker.js +12 -0
  55. package/dist/commonjs/components/Inspector/NetworkDetail.d.ts +3 -0
  56. package/dist/commonjs/components/Inspector/NetworkDetail.js +405 -0
  57. package/dist/commonjs/components/Inspector/NetworkTab.d.ts +3 -0
  58. package/dist/commonjs/components/Inspector/NetworkTab.js +281 -0
  59. package/dist/commonjs/components/Inspector/ReduxTab.d.ts +3 -0
  60. package/dist/commonjs/components/Inspector/ReduxTab.js +75 -0
  61. package/dist/commonjs/components/Inspector/SettingsPanel.d.ts +3 -0
  62. package/dist/commonjs/components/Inspector/SettingsPanel.js +1476 -0
  63. package/dist/commonjs/components/Inspector/TabBar.d.ts +3 -0
  64. package/dist/commonjs/components/Inspector/TabBar.js +95 -0
  65. package/dist/commonjs/components/Inspector/WebViewTab.d.ts +3 -0
  66. package/dist/commonjs/components/Inspector/WebViewTab.js +757 -0
  67. package/dist/commonjs/components/InspectorHeader.d.ts +19 -0
  68. package/dist/commonjs/components/InspectorHeader.js +329 -0
  69. package/dist/commonjs/components/InspectorTabBar.d.ts +16 -0
  70. package/dist/commonjs/components/InspectorTabBar.js +90 -0
  71. package/dist/commonjs/components/JsonViewer.d.ts +4 -1
  72. package/dist/commonjs/components/JsonViewer.js +110 -171
  73. package/dist/commonjs/components/LogCard.js +109 -86
  74. package/dist/commonjs/components/MetaAccordion.d.ts +1 -10
  75. package/dist/commonjs/components/MetaAccordion.js +23 -21
  76. package/dist/commonjs/components/NavigationTracker.d.ts +7 -0
  77. package/dist/commonjs/components/NavigationTracker.js +76 -0
  78. package/dist/commonjs/components/NetworkIcons.d.ts +6 -0
  79. package/dist/commonjs/components/NetworkIcons.js +54 -8
  80. package/dist/commonjs/components/ReduxTabView.d.ts +9 -0
  81. package/dist/commonjs/components/ReduxTabView.js +56 -0
  82. package/dist/commonjs/components/ReduxTreeView.js +241 -200
  83. package/dist/commonjs/components/SegmentedTabs.d.ts +15 -0
  84. package/dist/commonjs/components/SegmentedTabs.js +52 -0
  85. package/dist/commonjs/components/SettingsView.d.ts +13 -0
  86. package/dist/commonjs/components/SettingsView.js +328 -0
  87. package/dist/commonjs/components/TouchableScale.d.ts +2 -2
  88. package/dist/commonjs/components/TouchableScale.js +2 -2
  89. package/dist/commonjs/components/TreeNode.js +2 -2
  90. package/dist/commonjs/constants/index.js +1 -12
  91. package/dist/commonjs/constants/version.d.ts +1 -1
  92. package/dist/commonjs/constants/version.js +1 -1
  93. package/dist/commonjs/customHooks/analyticsLogger.d.ts +8 -0
  94. package/dist/commonjs/customHooks/analyticsLogger.js +42 -1
  95. package/dist/commonjs/customHooks/consoleLogger.js +137 -13
  96. package/dist/commonjs/customHooks/networkLogger.d.ts +0 -1
  97. package/dist/commonjs/customHooks/networkLogger.js +0 -1
  98. package/dist/commonjs/customHooks/reduxLogger.d.ts +2 -9
  99. package/dist/commonjs/enums/index.d.ts +39 -0
  100. package/dist/commonjs/enums/index.js +50 -0
  101. package/dist/commonjs/helpers/index.d.ts +27 -1
  102. package/dist/commonjs/helpers/index.js +187 -12
  103. package/dist/commonjs/helpers/settingsStore.d.ts +2 -24
  104. package/dist/commonjs/i18n/en.json +144 -0
  105. package/dist/commonjs/i18n/index.d.ts +2 -0
  106. package/dist/commonjs/i18n/index.js +27 -0
  107. package/dist/commonjs/i18n/locales/en.json +314 -0
  108. package/dist/commonjs/index.d.ts +2 -3
  109. package/dist/commonjs/index.js +207 -4927
  110. package/dist/commonjs/styles/AppColors.d.ts +148 -0
  111. package/dist/commonjs/styles/AppColors.js +176 -0
  112. package/dist/commonjs/styles/common.d.ts +3 -0
  113. package/dist/commonjs/styles/common.js +201 -0
  114. package/dist/commonjs/styles/index.d.ts +219 -435
  115. package/dist/commonjs/styles/index.js +312 -488
  116. package/dist/commonjs/types/enums.d.ts +9 -0
  117. package/dist/commonjs/types/enums.js +4 -0
  118. package/dist/commonjs/types/index.d.ts +4 -111
  119. package/dist/commonjs/types/index.js +16 -0
  120. package/dist/commonjs/types/interfaces.d.ts +337 -0
  121. package/dist/commonjs/types/interfaces.js +2 -0
  122. package/dist/esm/assets/svgAssets.d.ts +3 -0
  123. package/dist/esm/assets/svgAssets.js +14 -0
  124. package/dist/esm/components/AnalyticsEventCard.d.ts +1 -14
  125. package/dist/esm/components/AnalyticsEventCard.js +118 -48
  126. package/dist/esm/components/AnalyticsGraph.d.ts +2 -6
  127. package/dist/esm/components/AnalyticsGraph.js +8 -8
  128. package/dist/esm/components/AnalyticsTabView.d.ts +15 -0
  129. package/dist/esm/components/AnalyticsTabView.js +151 -0
  130. package/dist/esm/components/AnimatedEntrance.d.ts +1 -1
  131. package/dist/esm/components/AnimatedEntrance.js +2 -2
  132. package/dist/esm/components/ApiDetailView.d.ts +22 -0
  133. package/dist/esm/components/ApiDetailView.js +264 -0
  134. package/dist/esm/components/ApisTabView.d.ts +33 -0
  135. package/dist/esm/components/ApisTabView.js +196 -0
  136. package/dist/esm/components/CodeSnippet.d.ts +1 -5
  137. package/dist/esm/components/CodeSnippet.js +34 -34
  138. package/dist/esm/components/ConsoleLogCard.d.ts +1 -8
  139. package/dist/esm/components/ConsoleLogCard.js +262 -409
  140. package/dist/esm/components/ConsoleLogDetailView.d.ts +9 -0
  141. package/dist/esm/components/ConsoleLogDetailView.js +271 -0
  142. package/dist/esm/components/ConsoleLogsTabView.d.ts +24 -0
  143. package/dist/esm/components/ConsoleLogsTabView.js +348 -0
  144. package/dist/esm/components/DiffViewer.js +4 -2
  145. package/dist/esm/components/DomainHeader.js +66 -41
  146. package/dist/esm/components/EmptyState.d.ts +2 -2
  147. package/dist/esm/components/EmptyState.js +2 -2
  148. package/dist/esm/components/EndOfListFooter.d.ts +8 -0
  149. package/dist/esm/components/EndOfListFooter.js +83 -0
  150. package/dist/esm/components/ErrorBoundary.d.ts +5 -14
  151. package/dist/esm/components/ErrorBoundary.js +29 -29
  152. package/dist/esm/components/FloatingBubble.d.ts +14 -0
  153. package/dist/esm/components/FloatingBubble.js +68 -0
  154. package/dist/esm/components/HeadersSection.js +5 -3
  155. package/dist/esm/components/HighlightText.d.ts +1 -1
  156. package/dist/esm/components/HighlightText.js +5 -7
  157. package/dist/esm/components/Inspector/AnalyticsTab.d.ts +3 -0
  158. package/dist/esm/components/Inspector/AnalyticsTab.js +194 -0
  159. package/dist/esm/components/Inspector/ConsoleTab.d.ts +3 -0
  160. package/dist/esm/components/Inspector/ConsoleTab.js +372 -0
  161. package/dist/esm/components/Inspector/FabLauncher.d.ts +3 -0
  162. package/dist/esm/components/Inspector/FabLauncher.js +49 -0
  163. package/dist/esm/components/Inspector/InsightsDashboard.d.ts +3 -0
  164. package/dist/esm/components/Inspector/InsightsDashboard.js +614 -0
  165. package/dist/esm/components/Inspector/InspectorContext.d.ts +5 -0
  166. package/dist/esm/components/Inspector/InspectorContext.js +13 -0
  167. package/dist/esm/components/Inspector/InspectorHeader.d.ts +3 -0
  168. package/dist/esm/components/Inspector/InspectorHeader.js +447 -0
  169. package/dist/esm/components/Inspector/LogDetail.d.ts +3 -0
  170. package/dist/esm/components/Inspector/LogDetail.js +925 -0
  171. package/dist/esm/components/Inspector/MainScreen.d.ts +3 -0
  172. package/dist/esm/components/Inspector/MainScreen.js +63 -0
  173. package/dist/esm/components/Inspector/NavigationTracker.d.ts +3 -0
  174. package/dist/esm/components/Inspector/NavigationTracker.js +10 -0
  175. package/dist/esm/components/Inspector/NetworkDetail.d.ts +3 -0
  176. package/dist/esm/components/Inspector/NetworkDetail.js +367 -0
  177. package/dist/esm/components/Inspector/NetworkTab.d.ts +3 -0
  178. package/dist/esm/components/Inspector/NetworkTab.js +243 -0
  179. package/dist/esm/components/Inspector/ReduxTab.d.ts +3 -0
  180. package/dist/esm/components/Inspector/ReduxTab.js +70 -0
  181. package/dist/esm/components/Inspector/SettingsPanel.d.ts +3 -0
  182. package/dist/esm/components/Inspector/SettingsPanel.js +1438 -0
  183. package/dist/esm/components/Inspector/TabBar.d.ts +3 -0
  184. package/dist/esm/components/Inspector/TabBar.js +90 -0
  185. package/dist/esm/components/Inspector/WebViewTab.d.ts +3 -0
  186. package/dist/esm/components/Inspector/WebViewTab.js +752 -0
  187. package/dist/esm/components/InspectorHeader.d.ts +19 -0
  188. package/dist/esm/components/InspectorHeader.js +323 -0
  189. package/dist/esm/components/InspectorTabBar.d.ts +16 -0
  190. package/dist/esm/components/InspectorTabBar.js +84 -0
  191. package/dist/esm/components/JsonViewer.d.ts +4 -1
  192. package/dist/esm/components/JsonViewer.js +111 -172
  193. package/dist/esm/components/LogCard.js +111 -88
  194. package/dist/esm/components/MetaAccordion.d.ts +1 -10
  195. package/dist/esm/components/MetaAccordion.js +23 -21
  196. package/dist/esm/components/NavigationTracker.d.ts +7 -0
  197. package/dist/esm/components/NavigationTracker.js +39 -0
  198. package/dist/esm/components/NetworkIcons.d.ts +6 -0
  199. package/dist/esm/components/NetworkIcons.js +46 -6
  200. package/dist/esm/components/ReduxTabView.d.ts +9 -0
  201. package/dist/esm/components/ReduxTabView.js +50 -0
  202. package/dist/esm/components/ReduxTreeView.js +243 -202
  203. package/dist/esm/components/SegmentedTabs.d.ts +15 -0
  204. package/dist/esm/components/SegmentedTabs.js +47 -0
  205. package/dist/esm/components/SettingsView.d.ts +13 -0
  206. package/dist/esm/components/SettingsView.js +321 -0
  207. package/dist/esm/components/TouchableScale.d.ts +2 -2
  208. package/dist/esm/components/TouchableScale.js +2 -2
  209. package/dist/esm/components/TreeNode.js +2 -2
  210. package/dist/esm/constants/index.js +1 -12
  211. package/dist/esm/constants/version.d.ts +1 -1
  212. package/dist/esm/constants/version.js +1 -1
  213. package/dist/esm/customHooks/analyticsLogger.d.ts +8 -0
  214. package/dist/esm/customHooks/analyticsLogger.js +37 -0
  215. package/dist/esm/customHooks/consoleLogger.js +137 -13
  216. package/dist/esm/customHooks/networkLogger.d.ts +0 -1
  217. package/dist/esm/customHooks/networkLogger.js +0 -1
  218. package/dist/esm/customHooks/reduxLogger.d.ts +2 -9
  219. package/dist/esm/enums/index.d.ts +39 -0
  220. package/dist/esm/enums/index.js +47 -0
  221. package/dist/esm/helpers/index.d.ts +27 -1
  222. package/dist/esm/helpers/index.js +180 -11
  223. package/dist/esm/helpers/settingsStore.d.ts +2 -24
  224. package/dist/esm/i18n/en.json +144 -0
  225. package/dist/esm/i18n/index.d.ts +2 -0
  226. package/dist/esm/i18n/index.js +22 -0
  227. package/dist/esm/i18n/locales/en.json +314 -0
  228. package/dist/esm/index.d.ts +2 -3
  229. package/dist/esm/index.js +207 -4923
  230. package/dist/esm/styles/AppColors.d.ts +148 -0
  231. package/dist/esm/styles/AppColors.js +176 -0
  232. package/dist/esm/styles/common.d.ts +3 -0
  233. package/dist/esm/styles/common.js +197 -0
  234. package/dist/esm/styles/index.d.ts +219 -435
  235. package/dist/esm/styles/index.js +312 -488
  236. package/dist/esm/types/enums.d.ts +9 -0
  237. package/dist/esm/types/enums.js +3 -0
  238. package/dist/esm/types/index.d.ts +4 -111
  239. package/dist/esm/types/index.js +2 -1
  240. package/dist/esm/types/interfaces.d.ts +337 -0
  241. package/dist/esm/types/interfaces.js +1 -0
  242. package/example/App.tsx +88 -1
  243. package/example/android/app/build.gradle +29 -1
  244. package/example/android/app/src/main/java/com/example/MainApplication.kt +25 -0
  245. package/example/android/build.gradle +31 -4
  246. package/example/android/gradle/wrapper/gradle-wrapper.properties +1 -1
  247. package/example/android/gradle.properties +1 -0
  248. package/example/android/settings.gradle +20 -1
  249. package/example/package-lock.json +1 -1
  250. package/package.json +3 -1
@@ -0,0 +1,619 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = __importDefault(require("react"));
7
+ const react_native_1 = require("react-native");
8
+ const InspectorContext_1 = require("./InspectorContext");
9
+ const TouchableScale_1 = __importDefault(require("../TouchableScale"));
10
+ const styles_1 = __importDefault(require("../../styles"));
11
+ const AppColors_1 = require("../../styles/AppColors");
12
+ const AppFonts_1 = require("../../styles/AppFonts");
13
+ const helpers_1 = require("../../helpers");
14
+ const NetworkIcons_1 = require("../NetworkIcons");
15
+ const InsightsDashboard = () => {
16
+ const { logs, visibleConsoleLogs, analyticsEvents, webViewNavHistory, tabVisibility, slowRequestThreshold, insightsActiveSubTab, setInsightsActiveSubTab, switchActiveTab, reduxState, } = (0, InspectorContext_1.useInspector)();
17
+ const apiTotal = logs.length;
18
+ const apiErrors = logs.filter(l => (l.status != null && l.status >= 400) ||
19
+ l.status === 0 ||
20
+ l.status == null).length;
21
+ const apiSuccess = apiTotal - apiErrors;
22
+ const apiSuccessRate = apiTotal > 0 ? Math.round((apiSuccess / apiTotal) * 100) : 100;
23
+ const durations = logs
24
+ .filter(l => l.duration != null)
25
+ .map(l => l.duration);
26
+ const avgTime = durations.length > 0
27
+ ? Math.round(durations.reduce((a, b) => a + b, 0) / durations.length)
28
+ : null;
29
+ const logTotal = visibleConsoleLogs.length;
30
+ const logErrors = visibleConsoleLogs.filter(l => l.type === 'error').length;
31
+ const logWarns = visibleConsoleLogs.filter(l => l.type === 'warn').length;
32
+ const logInfos = visibleConsoleLogs.filter(l => l.type === 'info').length;
33
+ const analyticsTotal = analyticsEvents.length;
34
+ const uniqueEvents = new Set(analyticsEvents.map(e => e.name)).size;
35
+ const screenViews = analyticsEvents.filter(e => e.name === 'screen_view' ||
36
+ e.name === 'page_view' ||
37
+ e.name === 'firebase_screen_class').length;
38
+ const webviewTotal = webViewNavHistory.length;
39
+ // --- Richer insights metrics ---
40
+ const slowestTime = durations.length > 0 ? Math.max(...durations) : null;
41
+ const fastestTime = durations.length > 0 ? Math.min(...durations) : null;
42
+ const slowCount = durations.filter(d => d >= slowRequestThreshold).length;
43
+ const status2xx = logs.filter(l => l.status != null && l.status >= 200 && l.status < 300).length;
44
+ const status3xx = logs.filter(l => l.status != null && l.status >= 300 && l.status < 400).length;
45
+ const status4xx = logs.filter(l => l.status != null && l.status >= 400 && l.status < 500).length;
46
+ const status5xx = logs.filter(l => l.status != null && l.status >= 500).length;
47
+ const totalSignals = apiTotal + logTotal + analyticsTotal + webviewTotal;
48
+ const totalIssues = apiErrors + logErrors;
49
+ const activeModules = [
50
+ tabVisibility?.apis,
51
+ tabVisibility?.logs,
52
+ tabVisibility?.analytics,
53
+ tabVisibility?.webview,
54
+ tabVisibility?.redux,
55
+ ].filter(Boolean).length;
56
+ // Composite health score: success rate penalised by error volume and slow requests.
57
+ const healthScore = totalSignals === 0
58
+ ? 100
59
+ : Math.max(0, Math.min(100, Math.round(apiSuccessRate -
60
+ (logErrors > 0 ? Math.min(15, logErrors * 3) : 0) -
61
+ (slowCount > 0 ? Math.min(10, slowCount * 2) : 0))));
62
+ const healthColor = healthScore >= 90
63
+ ? AppColors_1.AppColors.greenColor
64
+ : healthScore >= 70
65
+ ? AppColors_1.AppColors.warningIconGold
66
+ : AppColors_1.AppColors.errorColor;
67
+ const healthLabel = healthScore >= 90
68
+ ? 'Healthy'
69
+ : healthScore >= 70
70
+ ? 'Needs attention'
71
+ : 'Degraded';
72
+ return (<react_native_1.View style={styles_1.default.dashboardContainer}>
73
+ {/* Overview hero card */}
74
+ <react_native_1.View style={{
75
+ backgroundColor: AppColors_1.AppColors.primaryLight,
76
+ borderRadius: 14,
77
+ borderWidth: 1,
78
+ borderColor: AppColors_1.AppColors.grayBorderSecondary,
79
+ padding: 16,
80
+ marginBottom: 12,
81
+ }}>
82
+ <react_native_1.View style={{
83
+ flexDirection: 'row',
84
+ alignItems: 'center',
85
+ gap: 14,
86
+ }}>
87
+ {/* Health ring stand-in */}
88
+ <react_native_1.View style={{
89
+ width: 64,
90
+ height: 64,
91
+ borderRadius: 32,
92
+ borderWidth: 4,
93
+ borderColor: healthColor,
94
+ alignItems: 'center',
95
+ justifyContent: 'center',
96
+ backgroundColor: AppColors_1.AppColors.purpleShade50,
97
+ }}>
98
+ <react_native_1.Text style={{
99
+ fontFamily: AppFonts_1.AppFonts.interBold,
100
+ fontSize: 18,
101
+ color: healthColor,
102
+ }}>
103
+ {healthScore}
104
+ </react_native_1.Text>
105
+ <react_native_1.Text style={{
106
+ fontFamily: AppFonts_1.AppFonts.interMedium,
107
+ fontSize: 7.5,
108
+ color: AppColors_1.AppColors.grayTextWeak,
109
+ letterSpacing: 0.4,
110
+ }}>
111
+ HEALTH
112
+ </react_native_1.Text>
113
+ </react_native_1.View>
114
+ <react_native_1.View style={{ flex: 1 }}>
115
+ <react_native_1.Text style={{
116
+ fontFamily: AppFonts_1.AppFonts.interBold,
117
+ fontSize: 15,
118
+ color: AppColors_1.AppColors.primaryBlack,
119
+ }}>
120
+ Session Overview
121
+ </react_native_1.Text>
122
+ <react_native_1.View style={{
123
+ flexDirection: 'row',
124
+ alignItems: 'center',
125
+ gap: 6,
126
+ marginTop: 3,
127
+ }}>
128
+ <react_native_1.View style={{
129
+ width: 7,
130
+ height: 7,
131
+ borderRadius: 3.5,
132
+ backgroundColor: healthColor,
133
+ }}/>
134
+ <react_native_1.Text style={{
135
+ fontFamily: AppFonts_1.AppFonts.interMedium,
136
+ fontSize: 11.5,
137
+ color: healthColor,
138
+ }}>
139
+ {healthLabel}
140
+ </react_native_1.Text>
141
+ <react_native_1.Text style={{
142
+ fontFamily: AppFonts_1.AppFonts.interRegular,
143
+ fontSize: 11.5,
144
+ color: AppColors_1.AppColors.grayTextWeak,
145
+ }}>
146
+ • {activeModules} modules active
147
+ </react_native_1.Text>
148
+ </react_native_1.View>
149
+ </react_native_1.View>
150
+ </react_native_1.View>
151
+
152
+ {/* Quick totals strip */}
153
+ <react_native_1.View style={{
154
+ flexDirection: 'row',
155
+ marginTop: 14,
156
+ borderTopWidth: 1,
157
+ borderTopColor: AppColors_1.AppColors.dividerColor,
158
+ paddingTop: 12,
159
+ }}>
160
+ <react_native_1.View style={{ flex: 1, alignItems: 'center' }}>
161
+ <react_native_1.Text style={{
162
+ fontFamily: AppFonts_1.AppFonts.interBold,
163
+ fontSize: 16,
164
+ color: AppColors_1.AppColors.primaryBlack,
165
+ }}>
166
+ {totalSignals}
167
+ </react_native_1.Text>
168
+ <react_native_1.Text style={{
169
+ fontFamily: AppFonts_1.AppFonts.interRegular,
170
+ fontSize: 10,
171
+ color: AppColors_1.AppColors.grayTextWeak,
172
+ marginTop: 1,
173
+ }}>
174
+ Signals
175
+ </react_native_1.Text>
176
+ </react_native_1.View>
177
+ <react_native_1.View style={{ width: 1, backgroundColor: AppColors_1.AppColors.dividerColor }}/>
178
+ <react_native_1.View style={{ flex: 1, alignItems: 'center' }}>
179
+ <react_native_1.Text style={{
180
+ fontFamily: AppFonts_1.AppFonts.interBold,
181
+ fontSize: 16,
182
+ color: totalIssues > 0
183
+ ? AppColors_1.AppColors.errorColor
184
+ : AppColors_1.AppColors.primaryBlack,
185
+ }}>
186
+ {totalIssues}
187
+ </react_native_1.Text>
188
+ <react_native_1.Text style={{
189
+ fontFamily: AppFonts_1.AppFonts.interRegular,
190
+ fontSize: 10,
191
+ color: AppColors_1.AppColors.grayTextWeak,
192
+ marginTop: 1,
193
+ }}>
194
+ Issues
195
+ </react_native_1.Text>
196
+ </react_native_1.View>
197
+ <react_native_1.View style={{ width: 1, backgroundColor: AppColors_1.AppColors.dividerColor }}/>
198
+ <react_native_1.View style={{ flex: 1, alignItems: 'center' }}>
199
+ <react_native_1.Text style={{
200
+ fontFamily: AppFonts_1.AppFonts.interBold,
201
+ fontSize: 16,
202
+ color: slowCount > 0
203
+ ? AppColors_1.AppColors.warningIconGold
204
+ : AppColors_1.AppColors.primaryBlack,
205
+ }}>
206
+ {slowCount}
207
+ </react_native_1.Text>
208
+ <react_native_1.Text style={{
209
+ fontFamily: AppFonts_1.AppFonts.interRegular,
210
+ fontSize: 10,
211
+ color: AppColors_1.AppColors.grayTextWeak,
212
+ marginTop: 1,
213
+ }}>
214
+ Slow ({slowRequestThreshold}ms+)
215
+ </react_native_1.Text>
216
+ </react_native_1.View>
217
+ </react_native_1.View>
218
+ </react_native_1.View>
219
+
220
+ {/* ── Insights Sub-Tab Selector ── */}
221
+ {(() => {
222
+ const insightTabs = [
223
+ {
224
+ key: 'apis',
225
+ label: 'APIs',
226
+ icon: (c, s) => <NetworkIcons_1.SignalIcon color={c} size={s}/>,
227
+ color: AppColors_1.AppColors.purple,
228
+ count: apiTotal,
229
+ visible: !!tabVisibility?.apis,
230
+ },
231
+ {
232
+ key: 'logs',
233
+ label: 'Logs',
234
+ icon: (c, s) => <NetworkIcons_1.TerminalIcon color={c} size={s}/>,
235
+ color: '#0D9488',
236
+ count: logTotal,
237
+ visible: !!tabVisibility?.logs,
238
+ },
239
+ {
240
+ key: 'analytics',
241
+ label: 'Analytics',
242
+ icon: (c, s) => <NetworkIcons_1.AnalyticsIcon color={c} size={s}/>,
243
+ color: '#EA580C',
244
+ count: analyticsTotal,
245
+ visible: !!tabVisibility?.analytics,
246
+ },
247
+ {
248
+ key: 'webview',
249
+ label: 'WebView',
250
+ icon: (c, s) => <NetworkIcons_1.GlobeIcon color={c} size={s}/>,
251
+ color: '#2563EB',
252
+ count: webviewTotal,
253
+ visible: !!tabVisibility?.webview,
254
+ },
255
+ {
256
+ key: 'redux',
257
+ label: 'Redux',
258
+ icon: (c, s) => <NetworkIcons_1.TerminalIcon color={c} size={s}/>,
259
+ color: AppColors_1.AppColors.purple,
260
+ count: reduxState ? Object.keys(reduxState).length : 0,
261
+ visible: !!tabVisibility?.redux,
262
+ },
263
+ ];
264
+ const visibleTabs = insightTabs.filter(t => t.visible);
265
+ if (visibleTabs.length === 0)
266
+ return null;
267
+ return (<>
268
+ <react_native_1.ScrollView horizontal showsHorizontalScrollIndicator={false} contentContainerStyle={{
269
+ paddingHorizontal: 2,
270
+ paddingVertical: 2,
271
+ gap: 8,
272
+ }} style={{
273
+ marginBottom: 12,
274
+ flexGrow: 0,
275
+ }}>
276
+ {visibleTabs.map(tab => {
277
+ const isActive = insightsActiveSubTab === tab.key;
278
+ return (<react_native_1.TouchableOpacity key={tab.key} onPress={() => {
279
+ (0, InspectorContext_1.animateNextLayout)();
280
+ setInsightsActiveSubTab(tab.key);
281
+ }} activeOpacity={0.7} style={{
282
+ flexDirection: 'row',
283
+ alignItems: 'center',
284
+ gap: 6,
285
+ paddingHorizontal: 14,
286
+ paddingVertical: 8,
287
+ borderRadius: 20,
288
+ backgroundColor: isActive
289
+ ? tab.color
290
+ : AppColors_1.AppColors.primaryLight,
291
+ borderWidth: 1,
292
+ borderColor: isActive
293
+ ? tab.color
294
+ : AppColors_1.AppColors.grayBorderSecondary,
295
+ }}>
296
+ {tab.icon(isActive ? '#FFFFFF' : tab.color, 14)}
297
+ <react_native_1.Text style={{
298
+ fontFamily: AppFonts_1.AppFonts.interBold,
299
+ fontSize: 11.5,
300
+ color: isActive ? '#FFFFFF' : AppColors_1.AppColors.grayTextStrong,
301
+ }}>
302
+ {tab.label}
303
+ </react_native_1.Text>
304
+ <react_native_1.View style={{
305
+ minWidth: 20,
306
+ height: 18,
307
+ borderRadius: 9,
308
+ paddingHorizontal: 5,
309
+ alignItems: 'center',
310
+ justifyContent: 'center',
311
+ backgroundColor: isActive
312
+ ? 'rgba(255,255,255,0.25)'
313
+ : AppColors_1.AppColors.grayBackground,
314
+ }}>
315
+ <react_native_1.Text style={{
316
+ fontFamily: AppFonts_1.AppFonts.interBold,
317
+ fontSize: 9.5,
318
+ color: isActive ? '#FFFFFF' : AppColors_1.AppColors.grayTextWeak,
319
+ }}>
320
+ {tab.count}
321
+ </react_native_1.Text>
322
+ </react_native_1.View>
323
+ </react_native_1.TouchableOpacity>);
324
+ })}
325
+ </react_native_1.ScrollView>
326
+
327
+ {/* ── Active Module Card ── */}
328
+ {insightsActiveSubTab === 'apis' && tabVisibility?.apis && (<TouchableScale_1.default style={styles_1.default.dashboardModuleCard} onPress={() => switchActiveTab('apis')}>
329
+ <react_native_1.View style={styles_1.default.dashboardModuleHeader}>
330
+ <react_native_1.View style={{ flexDirection: 'row', alignItems: 'center', gap: 8 }}>
331
+ <NetworkIcons_1.SignalIcon color={AppColors_1.AppColors.purple} size={18}/>
332
+ <react_native_1.Text style={styles_1.default.dashboardModuleTitle}>APIs & Network</react_native_1.Text>
333
+ </react_native_1.View>
334
+ <react_native_1.Text style={styles_1.default.dashboardModuleGoText}>View Details →</react_native_1.Text>
335
+ </react_native_1.View>
336
+ <react_native_1.View style={styles_1.default.dashboardModuleGrid}>
337
+ <react_native_1.View style={styles_1.default.dashboardGridItem}>
338
+ <react_native_1.Text style={styles_1.default.dashboardGridVal}>{apiTotal}</react_native_1.Text>
339
+ <react_native_1.Text style={styles_1.default.dashboardGridLbl}>Requests</react_native_1.Text>
340
+ </react_native_1.View>
341
+ <react_native_1.View style={styles_1.default.dashboardGridItem}>
342
+ <react_native_1.Text style={[
343
+ styles_1.default.dashboardGridVal,
344
+ apiSuccessRate < 90 && { color: AppColors_1.AppColors.warningIconGold },
345
+ ]}>
346
+ {apiSuccessRate}%
347
+ </react_native_1.Text>
348
+ <react_native_1.Text style={styles_1.default.dashboardGridLbl}>Success Rate</react_native_1.Text>
349
+ </react_native_1.View>
350
+ <react_native_1.View style={styles_1.default.dashboardGridItem}>
351
+ <react_native_1.Text style={[
352
+ styles_1.default.dashboardGridVal,
353
+ apiErrors > 0 && { color: AppColors_1.AppColors.errorColor },
354
+ ]}>
355
+ {apiErrors}
356
+ </react_native_1.Text>
357
+ <react_native_1.Text style={styles_1.default.dashboardGridLbl}>Errors</react_native_1.Text>
358
+ </react_native_1.View>
359
+ <react_native_1.View style={styles_1.default.dashboardGridItem}>
360
+ <react_native_1.Text style={styles_1.default.dashboardGridVal}>
361
+ {avgTime != null ? `${avgTime}ms` : '—'}
362
+ </react_native_1.Text>
363
+ <react_native_1.Text style={styles_1.default.dashboardGridLbl}>Avg Latency</react_native_1.Text>
364
+ </react_native_1.View>
365
+ </react_native_1.View>
366
+
367
+ {/* Status-class breakdown + latency range */}
368
+ <react_native_1.View style={{
369
+ marginTop: 10,
370
+ paddingTop: 10,
371
+ borderTopWidth: 1,
372
+ borderTopColor: AppColors_1.AppColors.dividerColor,
373
+ flexDirection: 'row',
374
+ alignItems: 'center',
375
+ flexWrap: 'wrap',
376
+ gap: 6,
377
+ }}>
378
+ {[
379
+ { label: '2xx', value: status2xx, color: AppColors_1.AppColors.greenColor },
380
+ { label: '3xx', value: status3xx, color: AppColors_1.AppColors.skyBlue },
381
+ {
382
+ label: '4xx',
383
+ value: status4xx,
384
+ color: AppColors_1.AppColors.warningIconGold,
385
+ },
386
+ { label: '5xx', value: status5xx, color: AppColors_1.AppColors.errorColor },
387
+ ].map(s => (<react_native_1.View key={s.label} style={{
388
+ flexDirection: 'row',
389
+ alignItems: 'center',
390
+ gap: 4,
391
+ backgroundColor: AppColors_1.AppColors.grayBackground,
392
+ borderRadius: 6,
393
+ borderWidth: 1,
394
+ borderColor: AppColors_1.AppColors.dividerColor,
395
+ paddingHorizontal: 7,
396
+ paddingVertical: 3,
397
+ }}>
398
+ <react_native_1.View style={{
399
+ width: 6,
400
+ height: 6,
401
+ borderRadius: 3,
402
+ backgroundColor: s.color,
403
+ }}/>
404
+ <react_native_1.Text style={{
405
+ fontFamily: AppFonts_1.AppFonts.interBold,
406
+ fontSize: 10,
407
+ color: AppColors_1.AppColors.grayTextStrong,
408
+ }}>
409
+ {s.label} {s.value}
410
+ </react_native_1.Text>
411
+ </react_native_1.View>))}
412
+ {slowestTime != null && (<react_native_1.View style={{
413
+ marginLeft: 'auto',
414
+ flexDirection: 'row',
415
+ alignItems: 'center',
416
+ gap: 4,
417
+ }}>
418
+ <react_native_1.Text style={{
419
+ fontFamily: AppFonts_1.AppFonts.interRegular,
420
+ fontSize: 10,
421
+ color: AppColors_1.AppColors.grayTextWeak,
422
+ }}>
423
+ Range
424
+ </react_native_1.Text>
425
+ <react_native_1.Text style={{
426
+ fontFamily: AppFonts_1.AppFonts.interBold,
427
+ fontSize: 10,
428
+ color: AppColors_1.AppColors.grayTextStrong,
429
+ }}>
430
+ {fastestTime}–{slowestTime}ms
431
+ </react_native_1.Text>
432
+ </react_native_1.View>)}
433
+ </react_native_1.View>
434
+ </TouchableScale_1.default>)}
435
+
436
+ {insightsActiveSubTab === 'logs' && tabVisibility?.logs && (<TouchableScale_1.default style={styles_1.default.dashboardModuleCard} onPress={() => switchActiveTab('logs')}>
437
+ <react_native_1.View style={styles_1.default.dashboardModuleHeader}>
438
+ <react_native_1.View style={{ flexDirection: 'row', alignItems: 'center', gap: 8 }}>
439
+ <NetworkIcons_1.TerminalIcon color="#0D9488" size={18}/>
440
+ <react_native_1.Text style={styles_1.default.dashboardModuleTitle}>Console Logs</react_native_1.Text>
441
+ </react_native_1.View>
442
+ <react_native_1.Text style={styles_1.default.dashboardModuleGoText}>View Details →</react_native_1.Text>
443
+ </react_native_1.View>
444
+ <react_native_1.View style={styles_1.default.dashboardModuleGrid}>
445
+ <react_native_1.View style={styles_1.default.dashboardGridItem}>
446
+ <react_native_1.Text style={styles_1.default.dashboardGridVal}>{logTotal}</react_native_1.Text>
447
+ <react_native_1.Text style={styles_1.default.dashboardGridLbl}>Total Logs</react_native_1.Text>
448
+ </react_native_1.View>
449
+ <react_native_1.View style={styles_1.default.dashboardGridItem}>
450
+ <react_native_1.Text style={[styles_1.default.dashboardGridVal, { color: '#0D9488' }]}>
451
+ {logInfos}
452
+ </react_native_1.Text>
453
+ <react_native_1.Text style={styles_1.default.dashboardGridLbl}>Info</react_native_1.Text>
454
+ </react_native_1.View>
455
+ <react_native_1.View style={styles_1.default.dashboardGridItem}>
456
+ <react_native_1.Text style={[
457
+ styles_1.default.dashboardGridVal,
458
+ logWarns > 0 && { color: AppColors_1.AppColors.warningIconGold },
459
+ ]}>
460
+ {logWarns}
461
+ </react_native_1.Text>
462
+ <react_native_1.Text style={styles_1.default.dashboardGridLbl}>Warnings</react_native_1.Text>
463
+ </react_native_1.View>
464
+ <react_native_1.View style={styles_1.default.dashboardGridItem}>
465
+ <react_native_1.Text style={[
466
+ styles_1.default.dashboardGridVal,
467
+ logErrors > 0 && { color: AppColors_1.AppColors.errorColor },
468
+ ]}>
469
+ {logErrors}
470
+ </react_native_1.Text>
471
+ <react_native_1.Text style={styles_1.default.dashboardGridLbl}>Errors</react_native_1.Text>
472
+ </react_native_1.View>
473
+ </react_native_1.View>
474
+ </TouchableScale_1.default>)}
475
+
476
+ {insightsActiveSubTab === 'analytics' && tabVisibility?.analytics && (<TouchableScale_1.default style={styles_1.default.dashboardModuleCard} onPress={() => switchActiveTab('analytics')}>
477
+ <react_native_1.View style={styles_1.default.dashboardModuleHeader}>
478
+ <react_native_1.View style={{ flexDirection: 'row', alignItems: 'center', gap: 8 }}>
479
+ <NetworkIcons_1.AnalyticsIcon color="#EA580C" size={18}/>
480
+ <react_native_1.Text style={styles_1.default.dashboardModuleTitle}>
481
+ Analytics Events
482
+ </react_native_1.Text>
483
+ </react_native_1.View>
484
+ <react_native_1.Text style={styles_1.default.dashboardModuleGoText}>View Details →</react_native_1.Text>
485
+ </react_native_1.View>
486
+ <react_native_1.View style={styles_1.default.dashboardModuleGrid}>
487
+ <react_native_1.View style={styles_1.default.dashboardGridItem}>
488
+ <react_native_1.Text style={styles_1.default.dashboardGridVal}>{analyticsTotal}</react_native_1.Text>
489
+ <react_native_1.Text style={styles_1.default.dashboardGridLbl}>Total Events</react_native_1.Text>
490
+ </react_native_1.View>
491
+ <react_native_1.View style={styles_1.default.dashboardGridItem}>
492
+ <react_native_1.Text style={[styles_1.default.dashboardGridVal, { color: '#EA580C' }]}>
493
+ {uniqueEvents}
494
+ </react_native_1.Text>
495
+ <react_native_1.Text style={styles_1.default.dashboardGridLbl}>Unique Names</react_native_1.Text>
496
+ </react_native_1.View>
497
+ <react_native_1.View style={styles_1.default.dashboardGridItem}>
498
+ <react_native_1.Text style={styles_1.default.dashboardGridVal}>{screenViews}</react_native_1.Text>
499
+ <react_native_1.Text style={styles_1.default.dashboardGridLbl}>Screen Views</react_native_1.Text>
500
+ </react_native_1.View>
501
+ <react_native_1.View style={styles_1.default.dashboardGridItem}>
502
+ <react_native_1.Text style={styles_1.default.dashboardGridVal}>
503
+ {analyticsTotal > 0
504
+ ? Math.round(analyticsTotal / Math.max(1, logs.length / 5))
505
+ : 0}
506
+ </react_native_1.Text>
507
+ <react_native_1.Text style={styles_1.default.dashboardGridLbl}>Events Ratio</react_native_1.Text>
508
+ </react_native_1.View>
509
+ </react_native_1.View>
510
+ </TouchableScale_1.default>)}
511
+
512
+ {insightsActiveSubTab === 'webview' && tabVisibility?.webview && (<TouchableScale_1.default style={styles_1.default.dashboardModuleCard} onPress={() => switchActiveTab('webview')}>
513
+ <react_native_1.View style={styles_1.default.dashboardModuleHeader}>
514
+ <react_native_1.View style={{ flexDirection: 'row', alignItems: 'center', gap: 8 }}>
515
+ <NetworkIcons_1.GlobeIcon color="#2563EB" size={18}/>
516
+ <react_native_1.Text style={styles_1.default.dashboardModuleTitle}>
517
+ WebView Captures
518
+ </react_native_1.Text>
519
+ </react_native_1.View>
520
+ <react_native_1.Text style={styles_1.default.dashboardModuleGoText}>View Details →</react_native_1.Text>
521
+ </react_native_1.View>
522
+ <react_native_1.View style={styles_1.default.dashboardModuleGrid}>
523
+ <react_native_1.View style={styles_1.default.dashboardGridItem}>
524
+ <react_native_1.Text style={styles_1.default.dashboardGridVal}>{webviewTotal}</react_native_1.Text>
525
+ <react_native_1.Text style={styles_1.default.dashboardGridLbl}>History Size</react_native_1.Text>
526
+ </react_native_1.View>
527
+ <react_native_1.View style={styles_1.default.dashboardGridItem}>
528
+ <react_native_1.Text style={[styles_1.default.dashboardGridVal, { color: '#16A34A' }]}>
529
+ Active
530
+ </react_native_1.Text>
531
+ <react_native_1.Text style={styles_1.default.dashboardGridLbl}>Status</react_native_1.Text>
532
+ </react_native_1.View>
533
+ <react_native_1.View style={styles_1.default.dashboardGridItem}>
534
+ <react_native_1.Text numberOfLines={1} style={styles_1.default.dashboardGridVal}>
535
+ {webviewTotal > 0
536
+ ? `${webViewNavHistory[0]?.title?.substring(0, 10) ?? ''}...`
537
+ : '—'}
538
+ </react_native_1.Text>
539
+ <react_native_1.Text style={styles_1.default.dashboardGridLbl}>Last URL</react_native_1.Text>
540
+ </react_native_1.View>
541
+ </react_native_1.View>
542
+ </TouchableScale_1.default>)}
543
+
544
+ {insightsActiveSubTab === 'redux' && tabVisibility?.redux && (<TouchableScale_1.default style={styles_1.default.dashboardModuleCard} onPress={() => switchActiveTab('redux')}>
545
+ <react_native_1.View style={styles_1.default.dashboardModuleHeader}>
546
+ <react_native_1.View style={{ flexDirection: 'row', alignItems: 'center', gap: 8 }}>
547
+ <NetworkIcons_1.TerminalIcon color={AppColors_1.AppColors.purple} size={18}/>
548
+ <react_native_1.Text style={styles_1.default.dashboardModuleTitle}>
549
+ Redux Store State
550
+ </react_native_1.Text>
551
+ </react_native_1.View>
552
+ <react_native_1.Text style={styles_1.default.dashboardModuleGoText}>View Details →</react_native_1.Text>
553
+ </react_native_1.View>
554
+ {reduxState ? (<react_native_1.View style={{ paddingHorizontal: 12, paddingBottom: 12, gap: 6 }}>
555
+ <react_native_1.View style={{
556
+ flexDirection: 'row',
557
+ justifyContent: 'space-between',
558
+ marginBottom: 4,
559
+ }}>
560
+ <react_native_1.Text style={{
561
+ fontFamily: AppFonts_1.AppFonts.interBold,
562
+ fontSize: 10,
563
+ color: AppColors_1.AppColors.grayTextWeak,
564
+ letterSpacing: 0.5,
565
+ }}>
566
+ REDUCER NAME
567
+ </react_native_1.Text>
568
+ <react_native_1.Text style={{
569
+ fontFamily: AppFonts_1.AppFonts.interBold,
570
+ fontSize: 10,
571
+ color: AppColors_1.AppColors.grayTextWeak,
572
+ letterSpacing: 0.5,
573
+ }}>
574
+ SIZE / FIELDS
575
+ </react_native_1.Text>
576
+ </react_native_1.View>
577
+ {Object.keys(reduxState).map(key => {
578
+ const val = reduxState[key];
579
+ const fieldsCount = typeof val === 'object' && val !== null
580
+ ? Object.keys(val).length
581
+ : 0;
582
+ const sizeStr = (0, helpers_1.getSize)(val);
583
+ return (<react_native_1.View key={key} style={{
584
+ flexDirection: 'row',
585
+ justifyContent: 'space-between',
586
+ alignItems: 'center',
587
+ paddingVertical: 2,
588
+ }}>
589
+ <react_native_1.Text style={{
590
+ fontFamily: AppFonts_1.AppFonts.interMedium,
591
+ fontSize: 12,
592
+ color: AppColors_1.AppColors.grayTextStrong,
593
+ }}>
594
+ {key}
595
+ </react_native_1.Text>
596
+ <react_native_1.Text style={{
597
+ fontFamily: AppFonts_1.AppFonts.interRegular,
598
+ fontSize: 11,
599
+ color: AppColors_1.AppColors.grayTextWeak,
600
+ }}>
601
+ {sizeStr} ({fieldsCount} fields)
602
+ </react_native_1.Text>
603
+ </react_native_1.View>);
604
+ })}
605
+ </react_native_1.View>) : (<react_native_1.View style={{ padding: 12, alignItems: 'center' }}>
606
+ <react_native_1.Text style={{
607
+ fontFamily: AppFonts_1.AppFonts.interRegular,
608
+ fontSize: 12,
609
+ color: AppColors_1.AppColors.grayTextWeak,
610
+ }}>
611
+ No connected Redux store.
612
+ </react_native_1.Text>
613
+ </react_native_1.View>)}
614
+ </TouchableScale_1.default>)}
615
+ </>);
616
+ })()}
617
+ </react_native_1.View>);
618
+ };
619
+ exports.default = InsightsDashboard;
@@ -0,0 +1,5 @@
1
+ import { InspectorContextValue } from '../../types';
2
+ export { InspectorContextValue, InspectorStorage, ModalAnimationType, SettingsPage, SettingsSubTab, LogFilter, } from '../../types';
3
+ export declare const InspectorContext: import("react").Context<InspectorContextValue>;
4
+ export declare const useInspector: () => InspectorContextValue;
5
+ export declare const animateNextLayout: () => void;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.animateNextLayout = exports.useInspector = exports.InspectorContext = void 0;
4
+ const react_1 = require("react");
5
+ exports.InspectorContext = (0, react_1.createContext)(null);
6
+ const useInspector = () => {
7
+ const ctx = (0, react_1.useContext)(exports.InspectorContext);
8
+ if (!ctx) {
9
+ throw new Error('useInspector must be used within <InspectorContext.Provider>');
10
+ }
11
+ return ctx;
12
+ };
13
+ exports.useInspector = useInspector;
14
+ const animateNextLayout = () => {
15
+ // Disabled LayoutAnimation to prevent iOS NSRangeException crashes under Fabric
16
+ // and Android rendering performance freezes.
17
+ };
18
+ exports.animateNextLayout = animateNextLayout;
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ declare const InspectorHeader: () => React.JSX.Element;
3
+ export default InspectorHeader;