react-native-inapp-inspector 2.3.5 → 2.3.7

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 (226) hide show
  1. package/dist/commonjs/analytics.d.ts +0 -4
  2. package/dist/commonjs/analytics.js +0 -4
  3. package/dist/commonjs/bundle.d.ts +0 -4
  4. package/dist/commonjs/bundle.js +0 -4
  5. package/dist/commonjs/components/AnalyticsDetail.js +18 -27
  6. package/dist/commonjs/components/AnalyticsEventCard.js +9 -12
  7. package/dist/commonjs/components/AnalyticsGraph.js +10 -15
  8. package/dist/commonjs/components/AppHeaderLogo.js +0 -3
  9. package/dist/commonjs/components/BrandCircleIcon.js +15 -15
  10. package/dist/commonjs/components/BrandSquareIcon.js +20 -20
  11. package/dist/commonjs/components/CodeSnippet.js +6 -19
  12. package/dist/commonjs/components/ConsoleLogCard.js +0 -1
  13. package/dist/commonjs/components/CopyButton.js +0 -4
  14. package/dist/commonjs/components/DiffViewer.js +0 -2
  15. package/dist/commonjs/components/DomainHeader.js +0 -4
  16. package/dist/commonjs/components/EmptyState.js +0 -3
  17. package/dist/commonjs/components/ErrorBoundary.js +5 -10
  18. package/dist/commonjs/components/HeadersSection.js +0 -5
  19. package/dist/commonjs/components/HighlightText.js +1 -4
  20. package/dist/commonjs/components/Inspector/AnalyticsFilterModal.js +11 -26
  21. package/dist/commonjs/components/Inspector/AnalyticsTab.js +34 -40
  22. package/dist/commonjs/components/Inspector/BundleTab.js +56 -84
  23. package/dist/commonjs/components/Inspector/ConsoleTab.js +7 -7
  24. package/dist/commonjs/components/Inspector/CrashDetail.js +18 -20
  25. package/dist/commonjs/components/Inspector/CrashFilterModal.js +0 -1
  26. package/dist/commonjs/components/Inspector/CrashTab.js +11 -20
  27. package/dist/commonjs/components/Inspector/DeviceInfoTab.js +12 -24
  28. package/dist/commonjs/components/Inspector/FabLauncher.js +1 -1
  29. package/dist/commonjs/components/Inspector/InspectorContext.js +0 -2
  30. package/dist/commonjs/components/Inspector/InspectorHeader.js +7 -8
  31. package/dist/commonjs/components/Inspector/LogDetail.js +27 -29
  32. package/dist/commonjs/components/Inspector/MainScreen.js +9 -10
  33. package/dist/commonjs/components/Inspector/NetworkDetail.js +10 -11
  34. package/dist/commonjs/components/Inspector/NetworkTab.js +14 -14
  35. package/dist/commonjs/components/Inspector/NpmUpdateToast.js +6 -9
  36. package/dist/commonjs/components/Inspector/PerformanceTab.js +30 -43
  37. package/dist/commonjs/components/Inspector/ReduxDetail.js +18 -34
  38. package/dist/commonjs/components/Inspector/ReduxTab.js +11 -20
  39. package/dist/commonjs/components/Inspector/SettingsPanel.js +32 -36
  40. package/dist/commonjs/components/Inspector/SkeletonPlaceholder.js +6 -6
  41. package/dist/commonjs/components/Inspector/StorageTab.js +14 -26
  42. package/dist/commonjs/components/Inspector/UpdateAvailableModal.js +5 -6
  43. package/dist/commonjs/components/JsonViewer.js +3 -10
  44. package/dist/commonjs/components/LogCard.js +7 -7
  45. package/dist/commonjs/components/MetaAccordion.js +1 -7
  46. package/dist/commonjs/components/NetworkIcons.js +12 -16
  47. package/dist/commonjs/components/SectionHeader.js +0 -4
  48. package/dist/commonjs/components/SkeletonPlaceholder.js +6 -6
  49. package/dist/commonjs/components/Slider.js +6 -6
  50. package/dist/commonjs/components/SourcePageCard.js +0 -4
  51. package/dist/commonjs/components/TreeNode.js +0 -4
  52. package/dist/commonjs/console.d.ts +0 -4
  53. package/dist/commonjs/console.js +0 -4
  54. package/dist/commonjs/constants/index.js +6 -9
  55. package/dist/commonjs/constants/telemetryConfig.d.ts +3 -0
  56. package/dist/commonjs/constants/telemetryConfig.js +6 -0
  57. package/dist/commonjs/constants/version.d.ts +1 -1
  58. package/dist/commonjs/constants/version.js +1 -3
  59. package/dist/commonjs/crash.d.ts +0 -4
  60. package/dist/commonjs/crash.js +0 -4
  61. package/dist/commonjs/customHooks/analyticsLogger.d.ts +0 -7
  62. package/dist/commonjs/customHooks/analyticsLogger.js +3 -59
  63. package/dist/commonjs/customHooks/bundleAnalyzer.d.ts +0 -9
  64. package/dist/commonjs/customHooks/bundleAnalyzer.js +3 -86
  65. package/dist/commonjs/customHooks/consoleLogger.js +0 -16
  66. package/dist/commonjs/customHooks/crashHandler.d.ts +0 -28
  67. package/dist/commonjs/customHooks/crashHandler.js +0 -55
  68. package/dist/commonjs/customHooks/logFilters.d.ts +0 -4
  69. package/dist/commonjs/customHooks/logFilters.js +0 -11
  70. package/dist/commonjs/customHooks/networkLogger.js +2 -13
  71. package/dist/commonjs/customHooks/performanceTracker.d.ts +0 -27
  72. package/dist/commonjs/customHooks/performanceTracker.js +0 -31
  73. package/dist/commonjs/customHooks/reduxLogger.d.ts +0 -12
  74. package/dist/commonjs/customHooks/reduxLogger.js +0 -51
  75. package/dist/commonjs/customHooks/storageInspector.d.ts +0 -40
  76. package/dist/commonjs/customHooks/storageInspector.js +1 -56
  77. package/dist/commonjs/decorators/index.d.ts +0 -37
  78. package/dist/commonjs/decorators/index.js +0 -42
  79. package/dist/commonjs/helpers/gaAnalyticsRegistry.d.ts +0 -10
  80. package/dist/commonjs/helpers/gaAnalyticsRegistry.js +0 -26
  81. package/dist/commonjs/helpers/index.d.ts +0 -7
  82. package/dist/commonjs/helpers/index.js +1 -42
  83. package/dist/commonjs/helpers/memoryManager.d.ts +0 -11
  84. package/dist/commonjs/helpers/memoryManager.js +0 -13
  85. package/dist/commonjs/helpers/searchQueryParser.d.ts +0 -4
  86. package/dist/commonjs/helpers/searchQueryParser.js +0 -18
  87. package/dist/commonjs/helpers/settingsStore.js +0 -8
  88. package/dist/commonjs/helpers/telemetry.d.ts +2 -0
  89. package/dist/commonjs/helpers/telemetry.js +136 -0
  90. package/dist/commonjs/i18n/index.d.ts +0 -9
  91. package/dist/commonjs/i18n/index.js +0 -15
  92. package/dist/commonjs/index.js +15 -97
  93. package/dist/commonjs/native/NativeInspector.d.ts +0 -54
  94. package/dist/commonjs/native/NativeInspector.js +0 -56
  95. package/dist/commonjs/network.d.ts +0 -4
  96. package/dist/commonjs/network.js +0 -4
  97. package/dist/commonjs/performance.d.ts +0 -4
  98. package/dist/commonjs/performance.js +0 -4
  99. package/dist/commonjs/redux.d.ts +0 -4
  100. package/dist/commonjs/redux.js +0 -4
  101. package/dist/commonjs/storage.d.ts +0 -4
  102. package/dist/commonjs/storage.js +0 -4
  103. package/dist/commonjs/styles/AppColors.d.ts +0 -3
  104. package/dist/commonjs/styles/AppColors.js +15 -30
  105. package/dist/commonjs/styles/AppFonts.d.ts +0 -4
  106. package/dist/commonjs/styles/AppFonts.js +0 -4
  107. package/dist/commonjs/styles/common.js +0 -11
  108. package/dist/commonjs/styles/index.js +0 -8
  109. package/dist/commonjs/types/enums.js +0 -3
  110. package/dist/commonjs/types/interfaces.d.ts +3 -3
  111. package/dist/esm/analytics.d.ts +0 -4
  112. package/dist/esm/analytics.js +0 -4
  113. package/dist/esm/bundle.d.ts +0 -4
  114. package/dist/esm/bundle.js +0 -4
  115. package/dist/esm/components/AnalyticsDetail.js +18 -27
  116. package/dist/esm/components/AnalyticsEventCard.js +9 -12
  117. package/dist/esm/components/AnalyticsGraph.js +10 -15
  118. package/dist/esm/components/AppHeaderLogo.js +0 -3
  119. package/dist/esm/components/BrandCircleIcon.js +15 -15
  120. package/dist/esm/components/BrandSquareIcon.js +20 -20
  121. package/dist/esm/components/CodeSnippet.js +6 -19
  122. package/dist/esm/components/ConsoleLogCard.js +0 -1
  123. package/dist/esm/components/CopyButton.js +0 -4
  124. package/dist/esm/components/DiffViewer.js +0 -2
  125. package/dist/esm/components/DomainHeader.js +0 -4
  126. package/dist/esm/components/EmptyState.js +0 -3
  127. package/dist/esm/components/ErrorBoundary.js +5 -10
  128. package/dist/esm/components/HeadersSection.js +0 -5
  129. package/dist/esm/components/HighlightText.js +1 -4
  130. package/dist/esm/components/Inspector/AnalyticsFilterModal.js +11 -26
  131. package/dist/esm/components/Inspector/AnalyticsTab.js +34 -40
  132. package/dist/esm/components/Inspector/BundleTab.js +56 -84
  133. package/dist/esm/components/Inspector/ConsoleTab.js +7 -7
  134. package/dist/esm/components/Inspector/CrashDetail.js +18 -20
  135. package/dist/esm/components/Inspector/CrashFilterModal.js +0 -1
  136. package/dist/esm/components/Inspector/CrashTab.js +11 -20
  137. package/dist/esm/components/Inspector/DeviceInfoTab.js +12 -24
  138. package/dist/esm/components/Inspector/FabLauncher.js +1 -1
  139. package/dist/esm/components/Inspector/InspectorContext.js +0 -2
  140. package/dist/esm/components/Inspector/InspectorHeader.js +7 -8
  141. package/dist/esm/components/Inspector/LogDetail.js +27 -29
  142. package/dist/esm/components/Inspector/MainScreen.js +9 -10
  143. package/dist/esm/components/Inspector/NetworkDetail.js +10 -11
  144. package/dist/esm/components/Inspector/NetworkTab.js +14 -14
  145. package/dist/esm/components/Inspector/NpmUpdateToast.js +6 -9
  146. package/dist/esm/components/Inspector/PerformanceTab.js +30 -43
  147. package/dist/esm/components/Inspector/ReduxDetail.js +18 -34
  148. package/dist/esm/components/Inspector/ReduxTab.js +11 -20
  149. package/dist/esm/components/Inspector/SettingsPanel.js +32 -36
  150. package/dist/esm/components/Inspector/SkeletonPlaceholder.js +6 -6
  151. package/dist/esm/components/Inspector/StorageTab.js +14 -26
  152. package/dist/esm/components/Inspector/UpdateAvailableModal.js +5 -6
  153. package/dist/esm/components/JsonViewer.js +3 -10
  154. package/dist/esm/components/LogCard.js +7 -7
  155. package/dist/esm/components/MetaAccordion.js +1 -7
  156. package/dist/esm/components/NetworkIcons.js +12 -16
  157. package/dist/esm/components/SectionHeader.js +0 -4
  158. package/dist/esm/components/SkeletonPlaceholder.js +6 -6
  159. package/dist/esm/components/Slider.js +6 -6
  160. package/dist/esm/components/SourcePageCard.js +0 -4
  161. package/dist/esm/components/TreeNode.js +0 -4
  162. package/dist/esm/console.d.ts +0 -4
  163. package/dist/esm/console.js +0 -4
  164. package/dist/esm/constants/index.js +6 -9
  165. package/dist/esm/constants/telemetryConfig.d.ts +3 -0
  166. package/dist/esm/constants/telemetryConfig.js +3 -0
  167. package/dist/esm/constants/version.d.ts +1 -1
  168. package/dist/esm/constants/version.js +1 -3
  169. package/dist/esm/crash.d.ts +0 -4
  170. package/dist/esm/crash.js +0 -4
  171. package/dist/esm/customHooks/analyticsLogger.d.ts +0 -7
  172. package/dist/esm/customHooks/analyticsLogger.js +3 -59
  173. package/dist/esm/customHooks/bundleAnalyzer.d.ts +0 -9
  174. package/dist/esm/customHooks/bundleAnalyzer.js +3 -86
  175. package/dist/esm/customHooks/consoleLogger.js +0 -16
  176. package/dist/esm/customHooks/crashHandler.d.ts +0 -28
  177. package/dist/esm/customHooks/crashHandler.js +0 -55
  178. package/dist/esm/customHooks/logFilters.d.ts +0 -4
  179. package/dist/esm/customHooks/logFilters.js +0 -11
  180. package/dist/esm/customHooks/networkLogger.js +2 -13
  181. package/dist/esm/customHooks/performanceTracker.d.ts +0 -27
  182. package/dist/esm/customHooks/performanceTracker.js +0 -31
  183. package/dist/esm/customHooks/reduxLogger.d.ts +0 -12
  184. package/dist/esm/customHooks/reduxLogger.js +0 -51
  185. package/dist/esm/customHooks/storageInspector.d.ts +0 -40
  186. package/dist/esm/customHooks/storageInspector.js +1 -56
  187. package/dist/esm/decorators/index.d.ts +0 -37
  188. package/dist/esm/decorators/index.js +0 -42
  189. package/dist/esm/helpers/gaAnalyticsRegistry.d.ts +0 -10
  190. package/dist/esm/helpers/gaAnalyticsRegistry.js +0 -26
  191. package/dist/esm/helpers/index.d.ts +0 -7
  192. package/dist/esm/helpers/index.js +1 -42
  193. package/dist/esm/helpers/memoryManager.d.ts +0 -11
  194. package/dist/esm/helpers/memoryManager.js +0 -13
  195. package/dist/esm/helpers/searchQueryParser.d.ts +0 -4
  196. package/dist/esm/helpers/searchQueryParser.js +0 -18
  197. package/dist/esm/helpers/settingsStore.js +0 -8
  198. package/dist/esm/helpers/telemetry.d.ts +2 -0
  199. package/dist/esm/helpers/telemetry.js +132 -0
  200. package/dist/esm/i18n/index.d.ts +0 -9
  201. package/dist/esm/i18n/index.js +0 -15
  202. package/dist/esm/index.js +15 -97
  203. package/dist/esm/native/NativeInspector.d.ts +0 -54
  204. package/dist/esm/native/NativeInspector.js +0 -56
  205. package/dist/esm/network.d.ts +0 -4
  206. package/dist/esm/network.js +0 -4
  207. package/dist/esm/performance.d.ts +0 -4
  208. package/dist/esm/performance.js +0 -4
  209. package/dist/esm/redux.d.ts +0 -4
  210. package/dist/esm/redux.js +0 -4
  211. package/dist/esm/storage.d.ts +0 -4
  212. package/dist/esm/storage.js +0 -4
  213. package/dist/esm/styles/AppColors.d.ts +0 -3
  214. package/dist/esm/styles/AppColors.js +15 -30
  215. package/dist/esm/styles/AppFonts.d.ts +0 -4
  216. package/dist/esm/styles/AppFonts.js +0 -4
  217. package/dist/esm/styles/common.js +0 -11
  218. package/dist/esm/styles/index.js +0 -8
  219. package/dist/esm/types/enums.js +0 -3
  220. package/dist/esm/types/interfaces.d.ts +3 -3
  221. package/package.json +2 -2
  222. package/src/constants/telemetryConfig.ts +6 -0
  223. package/src/constants/version.ts +1 -1
  224. package/src/helpers/telemetry.ts +161 -0
  225. package/src/index.tsx +15 -1
  226. package/src/types/interfaces.ts +3 -0
@@ -98,9 +98,7 @@ const getOriginBadge = (originType) => {
98
98
  const ReduxTab = react_1.default.memo(() => {
99
99
  const { t } = (0, i18n_1.useTranslation)();
100
100
  const { reduxState, reduxLastActionMap, reduxSearch, setReduxSearch, setSelectedReduxSlice, } = (0, InspectorContext_1.useInspector)();
101
- // Sort mode: 'latest' (newest updated first) vs 'alpha' (A-Z)
102
101
  const [sortMode, setSortMode] = (0, react_1.useState)('latest');
103
- // Pause / Live Auto-Refresh State
104
102
  const [isReduxPaused, setIsReduxPaused] = (0, react_1.useState)(!(0, reduxLogger_1.getReduxAutoRefresh)());
105
103
  const handleTogglePause = (0, react_1.useCallback)(() => {
106
104
  setIsReduxPaused(prev => {
@@ -109,15 +107,12 @@ const ReduxTab = react_1.default.memo(() => {
109
107
  return next;
110
108
  });
111
109
  }, []);
112
- // Total state size calculation
113
110
  const totalStateSize = (0, react_1.useMemo)(() => {
114
111
  return (0, helpers_1.getSize)(reduxState);
115
112
  }, [reduxState]);
116
- // Fetch full action history for timeline counts
117
113
  const allActions = (0, react_1.useMemo)(() => {
118
114
  return (0, reduxLogger_1.getActionHistory)();
119
115
  }, [reduxLastActionMap]);
120
- // Compute slice items with exact timestamps & rich details
121
116
  const sliceItems = (0, react_1.useMemo)(() => {
122
117
  if (!reduxState || typeof reduxState !== 'object')
123
118
  return [];
@@ -140,7 +135,6 @@ const ReduxTab = react_1.default.memo(() => {
140
135
  keysCount = 1;
141
136
  typeLabel = typeof sliceVal;
142
137
  }
143
- // Determine state status
144
138
  let status = 'live';
145
139
  let statusMessage;
146
140
  if (isObject) {
@@ -165,7 +159,6 @@ const ReduxTab = react_1.default.memo(() => {
165
159
  }
166
160
  const lastActionRaw = reduxLastActionMap[key];
167
161
  const updatedAt = lastActionRaw?.updatedAt || 0;
168
- // Count actions affecting this slice in timeline
169
162
  const timelineCount = allActions.filter(action => {
170
163
  if (!action.affectedSlices || action.affectedSlices.length === 0)
171
164
  return true;
@@ -211,7 +204,6 @@ const ReduxTab = react_1.default.memo(() => {
211
204
  };
212
205
  });
213
206
  }, [reduxState, reduxLastActionMap, allActions]);
214
- // Filter & Sort slices: by default, the most recently updated item is at the FIRST position
215
207
  const filteredSlices = (0, react_1.useMemo)(() => {
216
208
  let list = sliceItems;
217
209
  if (reduxSearch && reduxSearch.trim().length > 0) {
@@ -232,7 +224,6 @@ const ReduxTab = react_1.default.memo(() => {
232
224
  }
233
225
  return [...list].sort((a, b) => {
234
226
  if (sortMode === 'latest') {
235
- // Most recently updated item first
236
227
  if (b.updatedAt !== a.updatedAt) {
237
228
  return b.updatedAt - a.updatedAt;
238
229
  }
@@ -258,7 +249,7 @@ const ReduxTab = react_1.default.memo(() => {
258
249
  reduxTabStyles.card,
259
250
  isRecentlyUpdated && reduxTabStyles.cardRecentlyUpdated,
260
251
  ]}>
261
- {/* Top row: Badge + Slice Name + Status + Timestamp + Chevron */}
252
+
262
253
  <react_native_1.View style={reduxTabStyles.cardHeader}>
263
254
  <react_native_1.View style={reduxTabStyles.sliceBadge}>
264
255
  <react_native_1.Text style={reduxTabStyles.sliceBadgeText}>SLICE</react_native_1.Text>
@@ -266,7 +257,7 @@ const ReduxTab = react_1.default.memo(() => {
266
257
 
267
258
  <HighlightText_1.default text={item.name} search={reduxSearch} style={reduxTabStyles.sliceName} highlightStyle={reduxTabStyles.highlight}/>
268
259
 
269
- {/* Status Badge */}
260
+
270
261
  {item.status === 'loading' ? (<react_native_1.View style={reduxTabStyles.loadingPill}>
271
262
  <NetworkIcons_1.LoadingSpinnerIcon color={AppColors_1.AppColors.amber800Warm} size={10}/>
272
263
  <react_native_1.Text style={reduxTabStyles.loadingPillText}>Loading</react_native_1.Text>
@@ -290,7 +281,7 @@ const ReduxTab = react_1.default.memo(() => {
290
281
  <NetworkIcons_1.ForwardChevronIcon color={AppColors_1.AppColors.grayTextWeak} size={13}/>
291
282
  </react_native_1.View>
292
283
 
293
- {/* Middle row: Stats pills */}
284
+
294
285
  <react_native_1.View style={reduxTabStyles.statsRow}>
295
286
  <react_native_1.View style={reduxTabStyles.pill}>
296
287
  <NetworkIcons_1.LayersIcon color={AppColors_1.AppColors.grayTextWeak} size={11}/>
@@ -306,13 +297,13 @@ const ReduxTab = react_1.default.memo(() => {
306
297
  </react_native_1.View>)}
307
298
  </react_native_1.View>
308
299
 
309
- {/* Bottom row: Last Dispatched Action with Origin & Trigger Line */}
300
+
310
301
  {item.lastAction && (<react_native_1.View style={reduxTabStyles.lastActionRow}>
311
302
  <react_native_1.View style={{ flexDirection: 'row', alignItems: 'center', gap: 5, flex: 1, minWidth: 0, flexWrap: 'wrap' }}>
312
303
  <NetworkIcons_1.BoltIcon color={AppColors_1.AppColors.brandPurple} size={12}/>
313
304
  <react_native_1.Text style={reduxTabStyles.lastActionLabel}>{t('redux.last', 'Last')}:</react_native_1.Text>
314
305
 
315
- {/* Origin Badge */}
306
+
316
307
  {item.lastAction.originType && (() => {
317
308
  const origin = getOriginBadge(item.lastAction.originType);
318
309
  return (<react_native_1.View style={{
@@ -340,7 +331,7 @@ const ReduxTab = react_1.default.memo(() => {
340
331
 
341
332
  <HighlightText_1.default text={item.lastAction.type} search={reduxSearch} style={reduxTabStyles.lastActionValue} highlightStyle={reduxTabStyles.highlight} numberOfLines={1}/>
342
333
 
343
- {/* Triggered from file preview */}
334
+
344
335
  {item.lastAction.callerFile && (<react_native_1.Pressable onPress={() => (0, helpers_1.openInVSCode)(item.lastAction.callerFile, item.lastAction.callerLine, item.lastAction.callerCol)} hitSlop={6} style={{
345
336
  flexDirection: 'row',
346
337
  alignItems: 'center',
@@ -382,7 +373,7 @@ const ReduxTab = react_1.default.memo(() => {
382
373
  </react_native_1.View>);
383
374
  }
384
375
  return (<react_native_1.View style={{ flex: 1, backgroundColor: AppColors_1.AppColors.grayBackground }}>
385
- {/* ─── Top Stats Overview Card ─── */}
376
+
386
377
  <react_native_1.View style={reduxTabStyles.overviewCard}>
387
378
  <react_native_1.View style={reduxTabStyles.statCol}>
388
379
  <react_native_1.Text style={reduxTabStyles.statHeading}>ACTIVE SLICES</react_native_1.Text>
@@ -428,7 +419,7 @@ const ReduxTab = react_1.default.memo(() => {
428
419
  </react_native_1.View>
429
420
  </react_native_1.View>
430
421
 
431
- {/* ─── Search & Sort Bar ─── */}
422
+
432
423
  <react_native_1.View style={reduxTabStyles.toolbarContainer}>
433
424
  <react_native_1.View style={reduxTabStyles.searchRow}>
434
425
  <react_native_1.View style={styles_1.default.searchContainer}>
@@ -455,7 +446,7 @@ const ReduxTab = react_1.default.memo(() => {
455
446
  </react_native_1.View>)}
456
447
  </react_native_1.View>
457
448
 
458
- {/* Pause / Resume Live Updates Button */}
449
+
459
450
  <react_native_1.TouchableOpacity accessible={true} accessibilityRole="button" accessibilityLabel={isReduxPaused
460
451
  ? 'Resume live Redux updates'
461
452
  : 'Pause live Redux updates'} accessibilityHint="Toggles automatic recording of Redux state updates" style={[
@@ -470,7 +461,7 @@ const ReduxTab = react_1.default.memo(() => {
470
461
  : AppColors_1.AppColors.grayTextStrong} size={16}/>
471
462
  </react_native_1.TouchableOpacity>
472
463
 
473
- {/* Sort Button */}
464
+
474
465
  <react_native_1.TouchableOpacity accessible={true} accessibilityRole="button" accessibilityLabel={`Sort order: ${sortMode === 'latest'
475
466
  ? 'Recently updated first'
476
467
  : 'Alphabetical A to Z'}`} accessibilityHint="Switches sorting between recently updated and alphabetical" style={[
@@ -499,7 +490,7 @@ const ReduxTab = react_1.default.memo(() => {
499
490
  </react_native_1.View>
500
491
  </react_native_1.View>
501
492
 
502
- {/* ─── FlatList of Slices ─── */}
493
+
503
494
  <react_native_1.FlatList data={filteredSlices} keyExtractor={item => item.id} renderItem={renderSliceItem} initialNumToRender={12} maxToRenderPerBatch={8} windowSize={5} removeClippedSubviews={true} renderToHardwareTextureAndroid={true} ListEmptyComponent={<EmptyState_1.default isSearch={reduxSearch.length > 0}/>} ListFooterComponent={filteredSlices.length > 0 ? (<EndOfListFooter_1.default count={filteredSlices.length} label="slices"/>) : null} contentContainerStyle={[
504
495
  reduxTabStyles.listContent,
505
496
  filteredSlices.length === 0 && { flexGrow: 1 },
@@ -69,7 +69,6 @@ const SettingsPanel = () => {
69
69
  }, [modalHeightPercent]);
70
70
  const autoRamProfile = (0, settingsStore_1.calculateRamBasedLimits)(deviceFreeRamMb);
71
71
  const isPersistent = (0, settingsStore_1.isPersistentStorageAvailable)();
72
- // Safe Area & Status Bar Padding for All Device Form Factors
73
72
  const statusBarHeight = react_native_1.Platform.OS === 'android' ? react_native_1.StatusBar.currentHeight || 24 : 44;
74
73
  const headerTopPadding = modalHeightPercent >= 95 ? statusBarHeight : 0;
75
74
  const allModules = [
@@ -137,7 +136,6 @@ const SettingsPanel = () => {
137
136
  desc: 'AsyncStorage & MMKV key-value store viewer with full CRUD support',
138
137
  },
139
138
  ];
140
- // Staged selection state for checkboxes before clicking "Save Changes"
141
139
  const [stagedTabVisibility, setStagedTabVisibility] = (0, react_1.useState)(() => ({
142
140
  apis: true,
143
141
  logs: Boolean(tabVisibility?.logs),
@@ -149,7 +147,6 @@ const SettingsPanel = () => {
149
147
  device: Boolean(tabVisibility?.device),
150
148
  storage: Boolean(tabVisibility?.storage),
151
149
  }));
152
- // Synchronize staged state with tabVisibility when tabVisibility updates
153
150
  (0, react_1.useEffect)(() => {
154
151
  setStagedTabVisibility({
155
152
  apis: true,
@@ -186,7 +183,6 @@ const SettingsPanel = () => {
186
183
  (0, InspectorContext_1.animateNextLayout)();
187
184
  setSettingsPage('main');
188
185
  };
189
- // Helper: settings row with icon + label + optional description
190
186
  const renderSettingRow = (opts) => {
191
187
  return (<react_native_1.View style={{
192
188
  paddingVertical: 12,
@@ -316,7 +312,7 @@ const SettingsPanel = () => {
316
312
  backgroundColor: AppColors_1.AppColors.grayBackground,
317
313
  }}>
318
314
  <react_native_1.ScrollView style={{ flex: 1 }} contentContainerStyle={{ padding: 16, paddingBottom: 100, gap: 14 }} showsVerticalScrollIndicator={false}>
319
- {/* Segmented Top Navigation Sub-Tabs */}
315
+
320
316
  <react_native_1.View style={{
321
317
  flexDirection: 'row',
322
318
  backgroundColor: AppColors_1.AppColors.primaryLight,
@@ -421,7 +417,7 @@ const SettingsPanel = () => {
421
417
  </react_native_1.View>
422
418
 
423
419
  {settingsActiveSubTab === 'module' && (<react_native_1.View style={{ gap: 12 }}>
424
- {/* Individual Module Cards with Left Checkboxes */}
420
+
425
421
  <react_native_1.View style={{ gap: 10 }}>
426
422
  {allModules.map(moduleItem => {
427
423
  const isReduxAvail = (0, reduxLogger_1.isReduxConnected)();
@@ -461,13 +457,13 @@ const SettingsPanel = () => {
461
457
  shadowRadius: 5,
462
458
  shadowOffset: { width: 0, height: 2 },
463
459
  }}>
464
- {/* Top Row: [Checkbox] -> [Icon Tile] -> [Title & Subtitle] */}
460
+
465
461
  <react_native_1.View style={{
466
462
  flexDirection: 'row',
467
463
  alignItems: 'flex-start',
468
464
  gap: 10,
469
465
  }}>
470
- {/* 1. Checkbox on the Left */}
466
+
471
467
  <TouchableScale_1.default accessible={true} accessibilityRole="checkbox" accessibilityLabel={`Select ${moduleItem.label}`} accessibilityState={{
472
468
  checked: isChecked,
473
469
  disabled: isLocked,
@@ -507,7 +503,7 @@ const SettingsPanel = () => {
507
503
  </react_native_svg_1.default>) : null}
508
504
  </TouchableScale_1.default>
509
505
 
510
- {/* 2. Middle Tap Zone: Icon + Title & Desc */}
506
+
511
507
  <TouchableScale_1.default accessible={true} accessibilityRole="button" accessibilityLabel={`${moduleItem.label} settings`} disabled={isUnavailable} onPress={() => {
512
508
  (0, InspectorContext_1.animateNextLayout)();
513
509
  setSettingsPage(moduleItem.key);
@@ -517,7 +513,7 @@ const SettingsPanel = () => {
517
513
  alignItems: 'flex-start',
518
514
  gap: 10,
519
515
  }}>
520
- {/* Icon Tile */}
516
+
521
517
  <react_native_1.View style={{
522
518
  width: 36,
523
519
  height: 36,
@@ -566,7 +562,7 @@ const SettingsPanel = () => {
566
562
  : AppColors_1.AppColors.grayTextWeak} size={16}/>)}
567
563
  </react_native_1.View>
568
564
 
569
- {/* Titles & Status Pill */}
565
+
570
566
  <react_native_1.View style={{ flex: 1, gap: 2 }}>
571
567
  <react_native_1.View style={{
572
568
  flexDirection: 'row',
@@ -585,7 +581,7 @@ const SettingsPanel = () => {
585
581
  {moduleItem.label}
586
582
  </react_native_1.Text>
587
583
 
588
- {/* Default Startup Tab Badge */}
584
+
589
585
  {moduleItem.key === defaultTab &&
590
586
  !isUnavailable && (<react_native_1.View style={{
591
587
  flexDirection: 'row',
@@ -615,7 +611,7 @@ const SettingsPanel = () => {
615
611
  </react_native_1.Text>
616
612
  </react_native_1.View>)}
617
613
 
618
- {/* Status Pill */}
614
+
619
615
  {moduleItem.key === 'apis' ? (<react_native_1.View style={{
620
616
  backgroundColor: `${AppColors_1.AppColors.blue500}14`,
621
617
  borderRadius: 4,
@@ -702,7 +698,7 @@ const SettingsPanel = () => {
702
698
  </TouchableScale_1.default>
703
699
  </react_native_1.View>
704
700
 
705
- {/* Card Footer: Live Stats + Configure Button */}
701
+
706
702
  {!isUnavailable && (<react_native_1.View style={{
707
703
  flexDirection: 'row',
708
704
  alignItems: 'center',
@@ -711,7 +707,7 @@ const SettingsPanel = () => {
711
707
  borderTopWidth: 1,
712
708
  borderTopColor: AppColors_1.AppColors.dividerColor,
713
709
  }}>
714
- {/* Live Info Pill */}
710
+
715
711
  <react_native_1.View style={{
716
712
  flexDirection: 'row',
717
713
  alignItems: 'center',
@@ -736,7 +732,7 @@ const SettingsPanel = () => {
736
732
  </react_native_1.Text>
737
733
  </react_native_1.View>
738
734
 
739
- {/* Sleek Configure Button */}
735
+
740
736
  <TouchableScale_1.default accessible={true} accessibilityRole="button" accessibilityLabel={`Configure ${moduleItem.label} settings`} onPress={() => {
741
737
  (0, InspectorContext_1.animateNextLayout)();
742
738
  setSettingsPage(moduleItem.key);
@@ -769,7 +765,7 @@ const SettingsPanel = () => {
769
765
  </react_native_1.View>)}
770
766
 
771
767
  {settingsActiveSubTab === 'ui' && (<react_native_1.View style={{ gap: 14 }}>
772
- {/* Section 1: Appearance */}
768
+
773
769
  <react_native_1.View style={{
774
770
  backgroundColor: AppColors_1.AppColors.primaryLight,
775
771
  borderRadius: 14,
@@ -860,7 +856,7 @@ const SettingsPanel = () => {
860
856
  </react_native_1.View>
861
857
  </react_native_1.View>
862
858
 
863
- {/* Section 2: Window & Layout */}
859
+
864
860
  <react_native_1.View style={{
865
861
  backgroundColor: AppColors_1.AppColors.primaryLight,
866
862
  borderRadius: 14,
@@ -880,7 +876,7 @@ const SettingsPanel = () => {
880
876
  {t('settings.windowLayout')}
881
877
  </react_native_1.Text>
882
878
 
883
- {/* Modal Height */}
879
+
884
880
  <react_native_1.View style={{ gap: 8 }}>
885
881
  <react_native_1.View style={{
886
882
  flexDirection: 'row',
@@ -959,7 +955,7 @@ const SettingsPanel = () => {
959
955
 
960
956
  <react_native_1.View style={{ height: 1, backgroundColor: AppColors_1.AppColors.dividerColor }}/>
961
957
 
962
- {/* Modal Animation */}
958
+
963
959
  <react_native_1.View style={{ gap: 8 }}>
964
960
  <react_native_1.View style={{
965
961
  flexDirection: 'row',
@@ -1036,7 +1032,7 @@ const SettingsPanel = () => {
1036
1032
  </react_native_1.View>
1037
1033
  </react_native_1.View>
1038
1034
 
1039
- {/* Section 3: Default Startup Tab */}
1035
+
1040
1036
  <react_native_1.View style={{
1041
1037
  backgroundColor: AppColors_1.AppColors.primaryLight,
1042
1038
  borderRadius: 14,
@@ -1092,7 +1088,7 @@ const SettingsPanel = () => {
1092
1088
  </react_native_1.View>
1093
1089
  </react_native_1.View>
1094
1090
 
1095
- {/* Sleek Interactive Dropdown Picker */}
1091
+
1096
1092
  <react_native_1.View style={{ marginTop: 6, gap: 6 }}>
1097
1093
  <TouchableScale_1.default accessible={true} accessibilityRole="button" accessibilityLabel={`Default opening tab: ${allModules.find(m => m.key === defaultTab)?.label || 'APIs'}`} onPress={() => setIsDefaultTabDropdownOpen(prev => !prev)} style={{
1098
1094
  flexDirection: 'row',
@@ -1153,7 +1149,7 @@ const SettingsPanel = () => {
1153
1149
  </react_native_1.View>
1154
1150
  </TouchableScale_1.default>
1155
1151
 
1156
- {/* Dropdown Options List */}
1152
+
1157
1153
  {isDefaultTabDropdownOpen && (<react_native_1.View style={{
1158
1154
  backgroundColor: AppColors_1.AppColors.primaryLight,
1159
1155
  borderRadius: 10,
@@ -1220,7 +1216,7 @@ const SettingsPanel = () => {
1220
1216
  </react_native_1.View>
1221
1217
  </react_native_1.View>
1222
1218
 
1223
- {/* Section 4: Notifications & Toasts */}
1219
+
1224
1220
  <react_native_1.View style={{
1225
1221
  backgroundColor: AppColors_1.AppColors.primaryLight,
1226
1222
  borderRadius: 14,
@@ -1309,7 +1305,7 @@ const SettingsPanel = () => {
1309
1305
  </react_native_1.View>
1310
1306
  </react_native_1.View>
1311
1307
 
1312
- {/* Section 5: NPM Package & Updates */}
1308
+
1313
1309
  <react_native_1.View style={{
1314
1310
  backgroundColor: AppColors_1.AppColors.primaryLight,
1315
1311
  borderRadius: 14,
@@ -1437,7 +1433,7 @@ const SettingsPanel = () => {
1437
1433
  </react_native_1.View>)}
1438
1434
 
1439
1435
  {settingsActiveSubTab === 'limits' && (<react_native_1.View style={{ gap: 14 }}>
1440
- {/* Section 1: Device RAM & Auto Profile */}
1436
+
1441
1437
  <react_native_1.View style={{
1442
1438
  backgroundColor: AppColors_1.AppColors.primaryLight,
1443
1439
  borderRadius: 14,
@@ -1457,7 +1453,7 @@ const SettingsPanel = () => {
1457
1453
  DEVICE MEMORY & AUTO PROFILES
1458
1454
  </react_native_1.Text>
1459
1455
 
1460
- {/* Auto RAM Limit Toggle */}
1456
+
1461
1457
  <react_native_1.View style={{
1462
1458
  flexDirection: 'row',
1463
1459
  alignItems: 'center',
@@ -1528,7 +1524,7 @@ const SettingsPanel = () => {
1528
1524
 
1529
1525
  <react_native_1.View style={{ height: 1, backgroundColor: AppColors_1.AppColors.dividerColor }}/>
1530
1526
 
1531
- {/* Device Free RAM Display */}
1527
+
1532
1528
  <react_native_1.View style={{ flexDirection: 'row', alignItems: 'center', gap: 10 }}>
1533
1529
  <react_native_1.View style={{
1534
1530
  width: 32,
@@ -1590,7 +1586,7 @@ const SettingsPanel = () => {
1590
1586
  </react_native_1.View>
1591
1587
  </react_native_1.View>
1592
1588
 
1593
- {/* Profile Overview */}
1589
+
1594
1590
  <react_native_1.View style={{
1595
1591
  marginTop: 4,
1596
1592
  paddingTop: 8,
@@ -1693,7 +1689,7 @@ const SettingsPanel = () => {
1693
1689
  </react_native_1.View>
1694
1690
  </react_native_1.View>
1695
1691
 
1696
- {/* Section 2: Memory-Safe OS Pruning Shield */}
1692
+
1697
1693
  <react_native_1.View style={{
1698
1694
  backgroundColor: AppColors_1.AppColors.primaryLight,
1699
1695
  borderRadius: 14,
@@ -1761,7 +1757,7 @@ const SettingsPanel = () => {
1761
1757
 
1762
1758
  <react_native_1.View style={{ height: 1, backgroundColor: AppColors_1.AppColors.dividerColor }}/>
1763
1759
 
1764
- {/* Instant Prune Button */}
1760
+
1765
1761
  <react_native_1.View style={{
1766
1762
  flexDirection: 'row',
1767
1763
  alignItems: 'center',
@@ -1812,7 +1808,7 @@ const SettingsPanel = () => {
1812
1808
  <react_native_1.View style={{ height: 48 }}/>
1813
1809
  </react_native_1.ScrollView>
1814
1810
 
1815
- {/* Bottom Sticky Action Bar for Save Changes */}
1811
+
1816
1812
  {settingsActiveSubTab === 'module' && (<react_native_1.View style={{
1817
1813
  paddingHorizontal: 16,
1818
1814
  paddingTop: 12,
@@ -2034,7 +2030,7 @@ const SettingsPanel = () => {
2034
2030
  })}
2035
2031
  </react_native_1.View>
2036
2032
 
2037
- {/* Log Deduplication Card */}
2033
+
2038
2034
  <react_native_1.View style={{
2039
2035
  backgroundColor: AppColors_1.AppColors.primaryLight,
2040
2036
  borderRadius: 14,
@@ -2054,7 +2050,7 @@ const SettingsPanel = () => {
2054
2050
  {t('settings.logFiltersDeduplication')}
2055
2051
  </react_native_1.Text>
2056
2052
 
2057
- {/* Show Duplicate Logs */}
2053
+
2058
2054
  <react_native_1.View style={{
2059
2055
  flexDirection: 'row',
2060
2056
  alignItems: 'center',
@@ -2593,7 +2589,7 @@ const SettingsPanel = () => {
2593
2589
  flex: 1,
2594
2590
  backgroundColor: AppColors_1.AppColors.grayBackground,
2595
2591
  }}>
2596
- {/* ─── Persistent Main Settings (Retains 100% scroll position) ─── */}
2592
+
2597
2593
  <react_native_1.View style={[
2598
2594
  react_native_1.StyleSheet.absoluteFill,
2599
2595
  settingsPage !== 'main' && { pointerEvents: 'none' },
@@ -2601,7 +2597,7 @@ const SettingsPanel = () => {
2601
2597
  {renderMainSettingsContent()}
2602
2598
  </react_native_1.View>
2603
2599
 
2604
- {/* ─── Sub-module Settings Overlay (Smooth Animated Slide) ─── */}
2600
+
2605
2601
  {settingsPage !== 'main' && (<react_native_1.Animated.View style={[
2606
2602
  react_native_1.StyleSheet.absoluteFill,
2607
2603
  {
@@ -56,7 +56,7 @@ exports.SkeletonPlaceholder = react_1.default.memo(function SkeletonPlaceholder(
56
56
  return () => animation.stop();
57
57
  }, [shimmerAnim]);
58
58
  return (<react_native_1.View style={skeletonStyles.container}>
59
- {/* ─── Search & Scope Toolbar Skeleton ─── */}
59
+
60
60
  <react_native_1.View style={skeletonStyles.toolbarSkeleton}>
61
61
  <react_native_1.Animated.View style={[
62
62
  skeletonStyles.searchBarSkeleton,
@@ -68,7 +68,7 @@ exports.SkeletonPlaceholder = react_1.default.memo(function SkeletonPlaceholder(
68
68
  </react_native_1.View>
69
69
  </react_native_1.View>
70
70
 
71
- {/* ─── Quick Filter Chips Skeleton Strip ─── */}
71
+
72
72
  <react_native_1.View style={skeletonStyles.chipStripSkeleton}>
73
73
  <react_native_1.Animated.View style={[skeletonStyles.chipSkeleton, { width: 48, opacity: shimmerAnim }]}/>
74
74
  <react_native_1.Animated.View style={[skeletonStyles.chipSkeleton, { width: 68, opacity: shimmerAnim }]}/>
@@ -76,9 +76,9 @@ exports.SkeletonPlaceholder = react_1.default.memo(function SkeletonPlaceholder(
76
76
  <react_native_1.Animated.View style={[skeletonStyles.chipSkeleton, { width: 58, opacity: shimmerAnim }]}/>
77
77
  </react_native_1.View>
78
78
 
79
- {/* ─── List Cards Skeleton ─── */}
79
+
80
80
  {Array.from({ length: cardCount }).map((_, i) => (<react_native_1.Animated.View key={`skeleton_card_${i}`} style={[skeletonStyles.cardSkeleton, { opacity: shimmerAnim }]}>
81
- {/* Top row: Status pill + Method + Time */}
81
+
82
82
  <react_native_1.View style={skeletonStyles.cardTopRow}>
83
83
  <react_native_1.View style={skeletonStyles.badgeGroup}>
84
84
  <react_native_1.View style={skeletonStyles.statusBadgeSkeleton}/>
@@ -87,11 +87,11 @@ exports.SkeletonPlaceholder = react_1.default.memo(function SkeletonPlaceholder(
87
87
  <react_native_1.View style={skeletonStyles.timeSkeleton}/>
88
88
  </react_native_1.View>
89
89
 
90
- {/* Middle row: URL lines */}
90
+
91
91
  <react_native_1.View style={skeletonStyles.urlLineLong}/>
92
92
  <react_native_1.View style={skeletonStyles.urlLineShort}/>
93
93
 
94
- {/* Bottom row: Latency & Size */}
94
+
95
95
  <react_native_1.View style={skeletonStyles.cardBottomRow}>
96
96
  <react_native_1.View style={skeletonStyles.metaPillSkeleton}/>
97
97
  <react_native_1.View style={skeletonStyles.metaPillSkeleton}/>