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,9 @@
1
+ import React from 'react';
2
+ import { ConsoleLog } from '../types';
3
+ interface ConsoleLogDetailViewProps {
4
+ selectedConsoleLog: ConsoleLog;
5
+ detailSearch: string;
6
+ onSetDetailSearch: (search: string) => void;
7
+ }
8
+ export declare const ConsoleLogDetailView: React.FC<ConsoleLogDetailViewProps>;
9
+ export default ConsoleLogDetailView;
@@ -0,0 +1,278 @@
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
+ exports.ConsoleLogDetailView = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ const react_native_1 = require("react-native");
9
+ const react_i18next_1 = require("react-i18next");
10
+ const CopyButton_1 = __importDefault(require("./CopyButton"));
11
+ const HighlightText_1 = __importDefault(require("./HighlightText"));
12
+ const JsonViewer_1 = __importDefault(require("./JsonViewer"));
13
+ const NetworkIcons_1 = require("./NetworkIcons");
14
+ const AppColors_1 = require("../styles/AppColors");
15
+ const AppFonts_1 = require("../styles/AppFonts");
16
+ const styles_1 = __importDefault(require("../styles"));
17
+ const helpers_1 = require("../helpers");
18
+ const ConsoleLogDetailView = ({ selectedConsoleLog, detailSearch, onSetDetailSearch, }) => {
19
+ const { t } = (0, react_i18next_1.useTranslation)();
20
+ const jsonContent = (0, helpers_1.getJsonContent)(selectedConsoleLog.message);
21
+ const isAnalyticsError = selectedConsoleLog.message
22
+ .toLowerCase()
23
+ .includes('[analytics error]');
24
+ const isUserLog = selectedConsoleLog.sourceMethod === 'log';
25
+ const getLogColors = () => {
26
+ if (isAnalyticsError) {
27
+ return {
28
+ badgeBg: `${AppColors_1.AppColors.skyBlue}15`,
29
+ badgeText: AppColors_1.AppColors.skyBlue,
30
+ label: 'ERROR',
31
+ };
32
+ }
33
+ switch (selectedConsoleLog.type) {
34
+ case 'error':
35
+ return {
36
+ badgeBg: `${AppColors_1.AppColors.errorColor}15`,
37
+ badgeText: AppColors_1.AppColors.errorColor,
38
+ label: 'ERROR',
39
+ };
40
+ case 'warn':
41
+ return {
42
+ badgeBg: `${AppColors_1.AppColors.lightOrange}15`,
43
+ badgeText: AppColors_1.AppColors.darkOrange || AppColors_1.AppColors.lightOrange,
44
+ label: 'WARN',
45
+ };
46
+ default:
47
+ if (isUserLog) {
48
+ return {
49
+ badgeBg: AppColors_1.AppColors.slateBorder,
50
+ badgeText: AppColors_1.AppColors.slateText,
51
+ label: 'INFO',
52
+ };
53
+ }
54
+ return {
55
+ badgeBg: `${AppColors_1.AppColors.purple}15`,
56
+ badgeText: AppColors_1.AppColors.purple,
57
+ label: 'INFO',
58
+ };
59
+ }
60
+ };
61
+ const colors = getLogColors();
62
+ return (<react_native_1.ScrollView style={{ flex: 1, backgroundColor: AppColors_1.AppColors.grayBackground }} contentContainerStyle={{ padding: 16, gap: 12 }} nestedScrollEnabled={true}>
63
+ {/* 1. Header Info Card */}
64
+ <react_native_1.View style={{
65
+ backgroundColor: AppColors_1.AppColors.primaryLight,
66
+ borderRadius: 12,
67
+ borderWidth: 1,
68
+ borderColor: AppColors_1.AppColors.grayBorderSecondary,
69
+ padding: 14,
70
+ gap: 12,
71
+ }}>
72
+ <react_native_1.View style={{
73
+ flexDirection: 'row',
74
+ justifyContent: 'space-between',
75
+ alignItems: 'center',
76
+ flexWrap: 'wrap',
77
+ gap: 8,
78
+ }}>
79
+ <react_native_1.View style={{ flexDirection: 'row', alignItems: 'center', gap: 6 }}>
80
+ <react_native_1.View style={[styles_1.default.badge, { backgroundColor: colors.badgeBg }]}>
81
+ <react_native_1.Text style={[styles_1.default.badgeText, { color: colors.badgeText }]}>
82
+ {colors.label}
83
+ </react_native_1.Text>
84
+ </react_native_1.View>
85
+ <react_native_1.View style={[
86
+ styles_1.default.badge,
87
+ {
88
+ backgroundColor: 'rgba(107, 78, 255, 0.08)',
89
+ borderColor: 'rgba(107, 78, 255, 0.2)',
90
+ borderWidth: 1,
91
+ },
92
+ ]}>
93
+ <react_native_1.Text style={[styles_1.default.badgeText, { color: AppColors_1.AppColors.indigoAccent }]}>
94
+ console.
95
+ {selectedConsoleLog.sourceMethod ||
96
+ selectedConsoleLog.type ||
97
+ 'log'}
98
+ </react_native_1.Text>
99
+ </react_native_1.View>
100
+ {jsonContent && (<react_native_1.View style={[
101
+ styles_1.default.badge,
102
+ {
103
+ backgroundColor: 'rgba(13, 148, 136, 0.08)',
104
+ borderColor: 'rgba(13, 148, 136, 0.18)',
105
+ borderWidth: 1,
106
+ },
107
+ ]}>
108
+ <react_native_1.Text style={[styles_1.default.badgeText, { color: AppColors_1.AppColors.teal }]}>
109
+ {Array.isArray(jsonContent.data)
110
+ ? `Array[${jsonContent.data.length}]`
111
+ : `Object{${Object.keys(jsonContent.data ?? {}).length}}`}
112
+ </react_native_1.Text>
113
+ </react_native_1.View>)}
114
+ {selectedConsoleLog.duplicateCount != null &&
115
+ selectedConsoleLog.duplicateCount > 1 && (<react_native_1.View style={[
116
+ styles_1.default.badge,
117
+ {
118
+ backgroundColor: 'rgba(104, 75, 155, 0.1)',
119
+ borderColor: 'rgba(104, 75, 155, 0.25)',
120
+ borderWidth: 1,
121
+ },
122
+ ]}>
123
+ <react_native_1.Text style={[
124
+ styles_1.default.badgeText,
125
+ { color: AppColors_1.AppColors.purple, fontWeight: '700' },
126
+ ]}>
127
+ ×{selectedConsoleLog.duplicateCount}
128
+ </react_native_1.Text>
129
+ </react_native_1.View>)}
130
+ </react_native_1.View>
131
+
132
+ <react_native_1.View style={{ flexDirection: 'row', alignItems: 'center', gap: 8 }}>
133
+ <react_native_1.Text style={{
134
+ fontFamily: AppFonts_1.AppFonts.interBold,
135
+ fontSize: 12,
136
+ color: AppColors_1.AppColors.grayTextWeak,
137
+ }}>
138
+ #{selectedConsoleLog.id + 1}
139
+ </react_native_1.Text>
140
+ <CopyButton_1.default value={selectedConsoleLog.message} label="Log message"/>
141
+ </react_native_1.View>
142
+ </react_native_1.View>
143
+
144
+ <react_native_1.View style={{
145
+ flexDirection: 'row',
146
+ justifyContent: 'space-between',
147
+ alignItems: 'center',
148
+ borderTopWidth: 1,
149
+ borderTopColor: AppColors_1.AppColors.dividerColor,
150
+ paddingTop: 10,
151
+ }}>
152
+ <react_native_1.Text style={{
153
+ fontFamily: AppFonts_1.AppFonts.interMedium,
154
+ fontSize: 12,
155
+ color: AppColors_1.AppColors.grayText,
156
+ }}>
157
+ {t('details.captured_at')}
158
+ <react_native_1.Text style={{
159
+ fontFamily: AppFonts_1.AppFonts.interBold,
160
+ color: AppColors_1.AppColors.primaryBlack,
161
+ }}>
162
+ {new Date(selectedConsoleLog.timestamp).toLocaleTimeString()}
163
+ </react_native_1.Text>
164
+ </react_native_1.Text>
165
+ <react_native_1.Text style={{
166
+ fontFamily: AppFonts_1.AppFonts.interRegular,
167
+ fontSize: 11,
168
+ color: AppColors_1.AppColors.grayTextWeak,
169
+ }}>
170
+ {selectedConsoleLog.message.length} {t('details.chars')}
171
+ </react_native_1.Text>
172
+ </react_native_1.View>
173
+ </react_native_1.View>
174
+
175
+ {/* 2. Caller Stack Frame Card (if available) */}
176
+ {selectedConsoleLog.caller &&
177
+ selectedConsoleLog.caller !== 'Unknown' && (<react_native_1.View style={{
178
+ backgroundColor: AppColors_1.AppColors.primaryLight,
179
+ borderRadius: 12,
180
+ borderWidth: 1,
181
+ borderColor: AppColors_1.AppColors.grayBorderSecondary,
182
+ padding: 14,
183
+ gap: 8,
184
+ }}>
185
+ <react_native_1.View style={{
186
+ flexDirection: 'row',
187
+ justifyContent: 'space-between',
188
+ alignItems: 'center',
189
+ }}>
190
+ <react_native_1.Text style={{
191
+ fontFamily: AppFonts_1.AppFonts.interBold,
192
+ fontSize: 11,
193
+ color: AppColors_1.AppColors.grayTextWeak,
194
+ letterSpacing: 0.5,
195
+ }}>
196
+ {t('details.caller_location')}
197
+ </react_native_1.Text>
198
+ <CopyButton_1.default value={selectedConsoleLog.caller} label="Caller location"/>
199
+ </react_native_1.View>
200
+ <react_native_1.View style={{
201
+ backgroundColor: AppColors_1.AppColors.grayBackground,
202
+ padding: 10,
203
+ borderRadius: 8,
204
+ borderWidth: 1,
205
+ borderColor: AppColors_1.AppColors.dividerColor,
206
+ }}>
207
+ <react_native_1.Text style={{
208
+ fontFamily: AppFonts_1.AppFonts.interRegular,
209
+ fontSize: 11.5,
210
+ color: AppColors_1.AppColors.primaryBlack,
211
+ }} selectable>
212
+ {selectedConsoleLog.caller}
213
+ </react_native_1.Text>
214
+ </react_native_1.View>
215
+ </react_native_1.View>)}
216
+
217
+ {/* 3. Search Bar for detail page */}
218
+ <react_native_1.View style={styles_1.default.searchContainer}>
219
+ <NetworkIcons_1.SearchIcon color={AppColors_1.AppColors.grayTextWeak} size={16}/>
220
+ <react_native_1.TextInput placeholder={t('search.log_details_placeholder')} placeholderTextColor={AppColors_1.AppColors.grayTextWeak} value={detailSearch} onChangeText={onSetDetailSearch} style={styles_1.default.searchInput} autoCorrect={false} autoCapitalize="none"/>
221
+ {detailSearch.length > 0 && (<react_native_1.Pressable onPress={() => onSetDetailSearch('')} hitSlop={10} style={styles_1.default.clearBtn}>
222
+ <NetworkIcons_1.ClearIcon color={AppColors_1.AppColors.grayTextWeak} size={14}/>
223
+ </react_native_1.Pressable>)}
224
+ </react_native_1.View>
225
+
226
+ {/* 4. Log Content Card */}
227
+ <react_native_1.View style={{
228
+ backgroundColor: AppColors_1.AppColors.primaryLight,
229
+ borderRadius: 12,
230
+ borderWidth: 1,
231
+ borderColor: AppColors_1.AppColors.grayBorderSecondary,
232
+ padding: 14,
233
+ gap: 10,
234
+ }}>
235
+ <react_native_1.Text style={{
236
+ fontFamily: AppFonts_1.AppFonts.interBold,
237
+ fontSize: 11,
238
+ color: AppColors_1.AppColors.grayTextWeak,
239
+ letterSpacing: 0.5,
240
+ }}>
241
+ {t('details.log_payload')}
242
+ </react_native_1.Text>
243
+
244
+ {jsonContent ? (<>
245
+ {jsonContent.header ? (<react_native_1.View style={{
246
+ padding: 10,
247
+ backgroundColor: AppColors_1.AppColors.grayBackground,
248
+ borderRadius: 8,
249
+ borderWidth: 1,
250
+ borderColor: AppColors_1.AppColors.dividerColor,
251
+ marginBottom: 6,
252
+ }}>
253
+ <HighlightText_1.default text={jsonContent.header} search={detailSearch} style={{
254
+ fontFamily: AppFonts_1.AppFonts.interMedium,
255
+ fontSize: 12,
256
+ color: AppColors_1.AppColors.primaryBlack,
257
+ }} highlightStyle={styles_1.default.highlight} detectLinks={true} selectable={true}/>
258
+ </react_native_1.View>) : null}
259
+ <JsonViewer_1.default data={jsonContent.data} search={detailSearch} wrap={true}/>
260
+ </>) : (<react_native_1.View style={{
261
+ padding: 12,
262
+ backgroundColor: AppColors_1.AppColors.grayBackground,
263
+ borderRadius: 8,
264
+ borderWidth: 1,
265
+ borderColor: AppColors_1.AppColors.dividerColor,
266
+ }}>
267
+ <HighlightText_1.default text={selectedConsoleLog.message} search={detailSearch} style={{
268
+ fontFamily: AppFonts_1.AppFonts.interRegular,
269
+ fontSize: 12,
270
+ color: AppColors_1.AppColors.primaryBlack,
271
+ lineHeight: 18,
272
+ }} highlightStyle={styles_1.default.highlight} detectLinks={true} selectable={true}/>
273
+ </react_native_1.View>)}
274
+ </react_native_1.View>
275
+ </react_native_1.ScrollView>);
276
+ };
277
+ exports.ConsoleLogDetailView = ConsoleLogDetailView;
278
+ exports.default = exports.ConsoleLogDetailView;
@@ -0,0 +1,24 @@
1
+ import React from 'react';
2
+ import { ConsoleLog, LocalFilter, SortOrder } from '../types';
3
+ interface ConsoleLogsTabViewProps {
4
+ logSearch: string;
5
+ onSetLogSearch: (val: string) => void;
6
+ logSortOrder: SortOrder;
7
+ onToggleSortOrder: () => void;
8
+ onDeleteLogs: () => void;
9
+ logFilters: Set<LocalFilter>;
10
+ onSetLogFilters: React.Dispatch<React.SetStateAction<Set<LocalFilter>>>;
11
+ logCounts: {
12
+ all: string;
13
+ info: string;
14
+ warn: string;
15
+ error: string;
16
+ 'user-log': string;
17
+ analytics: string;
18
+ };
19
+ visibleConsoleLogs: ConsoleLog[];
20
+ filteredConsoleLogs: ConsoleLog[];
21
+ onSelectConsoleLog: (item: ConsoleLog) => void;
22
+ }
23
+ export declare const ConsoleLogsTabView: React.FC<ConsoleLogsTabViewProps>;
24
+ export default ConsoleLogsTabView;
@@ -0,0 +1,354 @@
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
+ exports.ConsoleLogsTabView = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ const react_native_1 = require("react-native");
9
+ const react_i18next_1 = require("react-i18next");
10
+ const TouchableScale_1 = __importDefault(require("./TouchableScale"));
11
+ const ConsoleLogCard_1 = require("./ConsoleLogCard");
12
+ const EmptyState_1 = __importDefault(require("./EmptyState"));
13
+ const AnimatedEntrance_1 = __importDefault(require("./AnimatedEntrance"));
14
+ const NetworkIcons_1 = require("./NetworkIcons");
15
+ const AppColors_1 = require("../styles/AppColors");
16
+ const AppFonts_1 = require("../styles/AppFonts");
17
+ const styles_1 = __importDefault(require("../styles"));
18
+ exports.ConsoleLogsTabView = react_1.default.memo(({ logSearch, onSetLogSearch, logSortOrder, onToggleSortOrder, onDeleteLogs, logFilters, onSetLogFilters, logCounts, visibleConsoleLogs, filteredConsoleLogs, onSelectConsoleLog, }) => {
19
+ const { t } = (0, react_i18next_1.useTranslation)();
20
+ const renderItem = react_1.default.useCallback(({ item, index }) => (<AnimatedEntrance_1.default index={index} distance={8}>
21
+ <ConsoleLogCard_1.ConsoleLogCard item={item} searchStr={logSearch} onPress={() => onSelectConsoleLog(item)}/>
22
+ </AnimatedEntrance_1.default>), [logSearch, onSelectConsoleLog]);
23
+ const keyExtractor = react_1.default.useCallback((item) => String(item.id), []);
24
+ return (<react_native_1.View style={{ flex: 1 }}>
25
+ <react_native_1.View style={{
26
+ backgroundColor: AppColors_1.AppColors.white,
27
+ borderBottomWidth: 1,
28
+ borderBottomColor: AppColors_1.AppColors.dividerColor,
29
+ paddingBottom: 6,
30
+ }}>
31
+ <react_native_1.View style={[
32
+ styles_1.default.toolbarRow,
33
+ { marginTop: 12, marginBottom: 8 },
34
+ ]}>
35
+ <react_native_1.View style={styles_1.default.searchContainer}>
36
+ <NetworkIcons_1.SearchIcon color={AppColors_1.AppColors.grayTextWeak} size={16}/>
37
+ <react_native_1.TextInput placeholder={t('search.logs_placeholder')} placeholderTextColor={AppColors_1.AppColors.grayTextWeak} value={logSearch} onChangeText={onSetLogSearch} style={styles_1.default.searchInput} autoCorrect={false} autoCapitalize="none"/>
38
+ {logSearch.length > 0 && (<react_native_1.Pressable onPress={() => onSetLogSearch('')} hitSlop={10} style={styles_1.default.clearBtn}>
39
+ <NetworkIcons_1.ClearIcon color={AppColors_1.AppColors.grayTextWeak} size={14}/>
40
+ </react_native_1.Pressable>)}
41
+ </react_native_1.View>
42
+
43
+ <react_native_1.View style={styles_1.default.toolbarRight}>
44
+ <TouchableScale_1.default style={styles_1.default.toolbarBtn} onPress={onToggleSortOrder} hitSlop={10}>
45
+ <NetworkIcons_1.SortArrowIcon color={AppColors_1.AppColors.grayTextStrong} size={18} direction={logSortOrder === 'newest' ? 'down' : 'up'}/>
46
+ </TouchableScale_1.default>
47
+ <TouchableScale_1.default style={[
48
+ styles_1.default.toolbarBtn,
49
+ {
50
+ borderColor: 'rgba(255,46,87,0.22)',
51
+ backgroundColor: 'rgba(255,46,87,0.06)',
52
+ },
53
+ ]} onPress={onDeleteLogs} hitSlop={6}>
54
+ <NetworkIcons_1.WipeIcon color={AppColors_1.AppColors.errorColor} size={15}/>
55
+ </TouchableScale_1.default>
56
+ </react_native_1.View>
57
+ </react_native_1.View>
58
+
59
+ <react_native_1.ScrollView horizontal showsHorizontalScrollIndicator={false} style={{ marginVertical: 4, maxHeight: 46 }} contentContainerStyle={{
60
+ paddingHorizontal: 16,
61
+ paddingBottom: 4,
62
+ flexDirection: 'row',
63
+ alignItems: 'center',
64
+ gap: 8,
65
+ }}>
66
+ {(() => {
67
+ const active = logFilters.has('all');
68
+ return (<TouchableScale_1.default onPress={() => onSetLogFilters(new Set(['all']))}>
69
+ <react_native_1.View style={[
70
+ styles_1.default.statusFilterChip,
71
+ active && {
72
+ borderColor: AppColors_1.AppColors.purpleShade700,
73
+ backgroundColor: AppColors_1.AppColors.purpleShade50,
74
+ },
75
+ ]}>
76
+ <react_native_1.View style={{
77
+ flexDirection: 'row',
78
+ alignItems: 'center',
79
+ gap: 5,
80
+ }}>
81
+ <NetworkIcons_1.LayersIcon size={12} color={active
82
+ ? AppColors_1.AppColors.purpleShade700
83
+ : AppColors_1.AppColors.grayTextStrong}/>
84
+ <react_native_1.Text numberOfLines={1} style={[
85
+ styles_1.default.statusFilterText,
86
+ active && {
87
+ color: AppColors_1.AppColors.purpleShade700,
88
+ fontFamily: AppFonts_1.AppFonts.interBold,
89
+ },
90
+ ]}>
91
+ {t('filters.all')} ({logCounts.all})
92
+ </react_native_1.Text>
93
+ </react_native_1.View>
94
+ </react_native_1.View>
95
+ </TouchableScale_1.default>);
96
+ })()}
97
+
98
+ {(() => {
99
+ const active = logFilters.has('user-log');
100
+ return (<TouchableScale_1.default onPress={() => {
101
+ onSetLogFilters(prev => {
102
+ const next = new Set(prev);
103
+ next.delete('all');
104
+ next.has('user-log')
105
+ ? next.delete('user-log')
106
+ : next.add('user-log');
107
+ if (next.size === 0)
108
+ next.add('all');
109
+ return next;
110
+ });
111
+ }}>
112
+ <react_native_1.View style={[
113
+ styles_1.default.statusFilterChip,
114
+ active && {
115
+ borderColor: AppColors_1.AppColors.slateSubtle,
116
+ backgroundColor: AppColors_1.AppColors.slateLight,
117
+ },
118
+ ]}>
119
+ <react_native_1.View style={{
120
+ flexDirection: 'row',
121
+ alignItems: 'center',
122
+ gap: 5,
123
+ }}>
124
+ <NetworkIcons_1.UserIcon size={12} color={active ? AppColors_1.AppColors.slateText : AppColors_1.AppColors.grayTextStrong}/>
125
+ <react_native_1.Text numberOfLines={1} style={[
126
+ styles_1.default.statusFilterText,
127
+ active && {
128
+ color: AppColors_1.AppColors.slateText,
129
+ fontFamily: AppFonts_1.AppFonts.interBold,
130
+ },
131
+ ]}>
132
+ {t('filters.user_log')} ({logCounts['user-log']})
133
+ </react_native_1.Text>
134
+ </react_native_1.View>
135
+ </react_native_1.View>
136
+ </TouchableScale_1.default>);
137
+ })()}
138
+
139
+ {(() => {
140
+ const active = logFilters.has('info');
141
+ return (<TouchableScale_1.default onPress={() => {
142
+ onSetLogFilters(prev => {
143
+ const next = new Set(prev);
144
+ next.delete('all');
145
+ next.has('info')
146
+ ? next.delete('info')
147
+ : next.add('info');
148
+ if (next.size === 0)
149
+ next.add('all');
150
+ return next;
151
+ });
152
+ }}>
153
+ <react_native_1.View style={[
154
+ styles_1.default.statusFilterChip,
155
+ active && {
156
+ borderColor: AppColors_1.AppColors.skyBlue,
157
+ backgroundColor: `${AppColors_1.AppColors.skyBlue}15`,
158
+ },
159
+ ]}>
160
+ <react_native_1.View style={{
161
+ flexDirection: 'row',
162
+ alignItems: 'center',
163
+ gap: 5,
164
+ }}>
165
+ <NetworkIcons_1.InfoCircleIcon size={12} color={active
166
+ ? AppColors_1.AppColors.skyBlue
167
+ : AppColors_1.AppColors.grayTextStrong}/>
168
+ <react_native_1.Text numberOfLines={1} style={[
169
+ styles_1.default.statusFilterText,
170
+ active && {
171
+ color: AppColors_1.AppColors.skyBlue,
172
+ fontFamily: AppFonts_1.AppFonts.interBold,
173
+ },
174
+ ]}>
175
+ {t('filters.info')} ({logCounts.info})
176
+ </react_native_1.Text>
177
+ </react_native_1.View>
178
+ </react_native_1.View>
179
+ </TouchableScale_1.default>);
180
+ })()}
181
+
182
+ {(() => {
183
+ const active = logFilters.has('warn');
184
+ return (<TouchableScale_1.default onPress={() => {
185
+ onSetLogFilters(prev => {
186
+ const next = new Set(prev);
187
+ next.delete('all');
188
+ next.has('warn')
189
+ ? next.delete('warn')
190
+ : next.add('warn');
191
+ if (next.size === 0)
192
+ next.add('all');
193
+ return next;
194
+ });
195
+ }}>
196
+ <react_native_1.View style={[
197
+ styles_1.default.statusFilterChip,
198
+ active && {
199
+ borderColor: AppColors_1.AppColors.lightOrange,
200
+ backgroundColor: `${AppColors_1.AppColors.lightOrange}15`,
201
+ },
202
+ ]}>
203
+ <react_native_1.View style={{
204
+ flexDirection: 'row',
205
+ alignItems: 'center',
206
+ gap: 5,
207
+ }}>
208
+ <NetworkIcons_1.WarningTriangleIcon size={12} color={active
209
+ ? AppColors_1.AppColors.darkOrange
210
+ : AppColors_1.AppColors.grayTextStrong}/>
211
+ <react_native_1.Text numberOfLines={1} style={[
212
+ styles_1.default.statusFilterText,
213
+ active && {
214
+ color: AppColors_1.AppColors.darkOrange,
215
+ fontFamily: AppFonts_1.AppFonts.interBold,
216
+ },
217
+ ]}>
218
+ {t('filters.warn')} ({logCounts.warn})
219
+ </react_native_1.Text>
220
+ </react_native_1.View>
221
+ </react_native_1.View>
222
+ </TouchableScale_1.default>);
223
+ })()}
224
+
225
+ {(() => {
226
+ const active = logFilters.has('error');
227
+ return (<TouchableScale_1.default onPress={() => {
228
+ onSetLogFilters(prev => {
229
+ const next = new Set(prev);
230
+ next.delete('all');
231
+ next.has('error')
232
+ ? next.delete('error')
233
+ : next.add('error');
234
+ if (next.size === 0)
235
+ next.add('all');
236
+ return next;
237
+ });
238
+ }}>
239
+ <react_native_1.View style={[
240
+ styles_1.default.statusFilterChip,
241
+ active && {
242
+ borderColor: AppColors_1.AppColors.errorColor,
243
+ backgroundColor: `${AppColors_1.AppColors.errorColor}15`,
244
+ },
245
+ ]}>
246
+ <react_native_1.View style={{
247
+ flexDirection: 'row',
248
+ alignItems: 'center',
249
+ gap: 5,
250
+ }}>
251
+ <NetworkIcons_1.ErrorCircleIcon size={12} color={active
252
+ ? AppColors_1.AppColors.errorColor
253
+ : AppColors_1.AppColors.grayTextStrong}/>
254
+ <react_native_1.Text numberOfLines={1} style={[
255
+ styles_1.default.statusFilterText,
256
+ active && {
257
+ color: AppColors_1.AppColors.errorColor,
258
+ fontFamily: AppFonts_1.AppFonts.interBold,
259
+ },
260
+ ]}>
261
+ {t('filters.error')} ({logCounts.error})
262
+ </react_native_1.Text>
263
+ </react_native_1.View>
264
+ </react_native_1.View>
265
+ </TouchableScale_1.default>);
266
+ })()}
267
+
268
+ {(() => {
269
+ const active = logFilters.has('analytics');
270
+ return (<TouchableScale_1.default onPress={() => {
271
+ onSetLogFilters(prev => {
272
+ const next = new Set(prev);
273
+ next.delete('all');
274
+ next.has('analytics')
275
+ ? next.delete('analytics')
276
+ : next.add('analytics');
277
+ if (next.size === 0)
278
+ next.add('all');
279
+ return next;
280
+ });
281
+ }}>
282
+ <react_native_1.View style={[
283
+ styles_1.default.statusFilterChip,
284
+ active && {
285
+ borderColor: AppColors_1.AppColors.purple,
286
+ backgroundColor: `${AppColors_1.AppColors.purple}15`,
287
+ },
288
+ ]}>
289
+ <react_native_1.View style={{
290
+ flexDirection: 'row',
291
+ alignItems: 'center',
292
+ gap: 5,
293
+ }}>
294
+ <NetworkIcons_1.AnalyticsIcon size={12} color={active
295
+ ? AppColors_1.AppColors.purple
296
+ : AppColors_1.AppColors.grayTextStrong}/>
297
+ <react_native_1.Text numberOfLines={1} style={[
298
+ styles_1.default.statusFilterText,
299
+ active && {
300
+ color: AppColors_1.AppColors.purple,
301
+ fontFamily: AppFonts_1.AppFonts.interBold,
302
+ },
303
+ ]}>
304
+ {t('filters.analytics')} ({logCounts.analytics})
305
+ </react_native_1.Text>
306
+ </react_native_1.View>
307
+ </react_native_1.View>
308
+ </TouchableScale_1.default>);
309
+ })()}
310
+ </react_native_1.ScrollView>
311
+ </react_native_1.View>
312
+
313
+ <react_native_1.FlatList data={filteredConsoleLogs} ListHeaderComponent={(() => {
314
+ const total = visibleConsoleLogs.length;
315
+ const filtered = filteredConsoleLogs.length;
316
+ const isAllSelected = logFilters.has('all') ||
317
+ !Array.from(logFilters).some(f => f !== 'all');
318
+ if (isAllSelected) {
319
+ return (<react_native_1.Text style={[
320
+ styles_1.default.resultCount,
321
+ { marginBottom: 4, marginTop: 12 },
322
+ ]}>
323
+ {t('filters.showing_logs', { filtered, total })}
324
+ </react_native_1.Text>);
325
+ }
326
+ else {
327
+ const activeFilterNames = Array.from(logFilters)
328
+ .filter(f => f !== 'all')
329
+ .map(f => {
330
+ if (f === 'user-log')
331
+ return t('filters.user_log');
332
+ if (f === 'analytics')
333
+ return t('filters.analytics');
334
+ return (f.charAt(0).toUpperCase() +
335
+ f.slice(1));
336
+ });
337
+ return (<react_native_1.Text style={[
338
+ styles_1.default.resultCount,
339
+ { marginBottom: 4, marginTop: 12 },
340
+ ]}>
341
+ {t('filters.filtering_logs', {
342
+ filters: activeFilterNames.join(', '),
343
+ filtered,
344
+ total,
345
+ })}
346
+ </react_native_1.Text>);
347
+ }
348
+ })()} renderItem={renderItem} keyExtractor={keyExtractor} initialNumToRender={15} maxToRenderPerBatch={15} windowSize={7} removeClippedSubviews={true} ListEmptyComponent={<EmptyState_1.default isSearch={logSearch.length > 0 || logFilters.size > 0}/>} contentContainerStyle={[
349
+ styles_1.default.listContent,
350
+ filteredConsoleLogs.length === 0 && { flexGrow: 1 },
351
+ ]} keyboardShouldPersistTaps="handled"/>
352
+ </react_native_1.View>);
353
+ });
354
+ exports.default = exports.ConsoleLogsTabView;