react-native-inapp-inspector 2.5.13 → 2.5.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 (129) hide show
  1. package/README.md +0 -8
  2. package/android/src/main/java/com/inappinspector/NetworkInspectorModule.kt +118 -31
  3. package/dist/commonjs/components/Inspector/ConsoleExportModal.js +1 -1
  4. package/dist/commonjs/components/Inspector/ConsoleTab.js +7 -7
  5. package/dist/commonjs/components/Inspector/FabLauncher.js +3 -3
  6. package/dist/commonjs/components/Inspector/InspectorHeader.js +30 -30
  7. package/dist/commonjs/components/Inspector/MainScreen.js +38 -75
  8. package/dist/commonjs/components/Inspector/NetworkExportModal.js +4 -4
  9. package/dist/commonjs/components/Inspector/NetworkTab.js +51 -51
  10. package/dist/commonjs/components/Inspector/SecondaryTelemetryStrip.d.ts +1 -0
  11. package/dist/commonjs/components/Inspector/SecondaryTelemetryStrip.js +17 -16
  12. package/dist/commonjs/components/Inspector/SettingsPanel.js +40 -41
  13. package/dist/commonjs/components/Inspector/SkeletonPlaceholder.d.ts +3 -0
  14. package/dist/commonjs/components/Inspector/SkeletonPlaceholder.js +34 -3
  15. package/dist/commonjs/components/Inspector/TabBar.js +9 -15
  16. package/dist/commonjs/components/LogCard.js +7 -7
  17. package/dist/commonjs/components/SkeletonPlaceholder.d.ts +3 -0
  18. package/dist/commonjs/components/SkeletonPlaceholder.js +34 -3
  19. package/dist/commonjs/constants/telemetryConfig.d.ts +3 -3
  20. package/dist/commonjs/constants/telemetryConfig.js +1 -1
  21. package/dist/commonjs/constants/version.d.ts +1 -1
  22. package/dist/commonjs/constants/version.js +1 -1
  23. package/dist/commonjs/helpers/remoteConfig.js +1 -1
  24. package/dist/commonjs/helpers/shareFormatter.js +14 -14
  25. package/dist/commonjs/index.d.ts +1 -1
  26. package/dist/commonjs/index.js +3 -3
  27. package/dist/commonjs/native/NativeInspector.d.ts +2 -0
  28. package/dist/commonjs/native/NativeInspector.js +1 -1
  29. package/dist/commonjs/native/NativeNetworkInspector.d.ts +2 -0
  30. package/dist/commonjs/styles/AppFonts.d.ts +4 -0
  31. package/dist/commonjs/styles/AppFonts.js +1 -1
  32. package/dist/commonjs/styles/index.d.ts +2 -0
  33. package/dist/commonjs/styles/index.js +1 -1
  34. package/dist/commonjs/types/enums.d.ts +0 -2
  35. package/dist/commonjs/types/enums.js +1 -1
  36. package/dist/commonjs/types/interfaces.d.ts +1 -1
  37. package/dist/esm/components/Inspector/ConsoleExportModal.js +1 -1
  38. package/dist/esm/components/Inspector/ConsoleTab.js +48 -48
  39. package/dist/esm/components/Inspector/FabLauncher.js +42 -42
  40. package/dist/esm/components/Inspector/InspectorHeader.js +50 -50
  41. package/dist/esm/components/Inspector/MainScreen.js +87 -124
  42. package/dist/esm/components/Inspector/NetworkExportModal.js +1 -1
  43. package/dist/esm/components/Inspector/NetworkTab.js +83 -83
  44. package/dist/esm/components/Inspector/SecondaryTelemetryStrip.d.ts +1 -0
  45. package/dist/esm/components/Inspector/SecondaryTelemetryStrip.js +23 -22
  46. package/dist/esm/components/Inspector/SettingsPanel.js +106 -107
  47. package/dist/esm/components/Inspector/SkeletonPlaceholder.d.ts +3 -0
  48. package/dist/esm/components/Inspector/SkeletonPlaceholder.js +42 -11
  49. package/dist/esm/components/Inspector/TabBar.js +35 -41
  50. package/dist/esm/components/LogCard.js +53 -53
  51. package/dist/esm/components/SkeletonPlaceholder.d.ts +3 -0
  52. package/dist/esm/components/SkeletonPlaceholder.js +42 -11
  53. package/dist/esm/constants/telemetryConfig.d.ts +3 -3
  54. package/dist/esm/constants/telemetryConfig.js +1 -1
  55. package/dist/esm/constants/version.d.ts +1 -1
  56. package/dist/esm/constants/version.js +1 -1
  57. package/dist/esm/helpers/remoteConfig.js +1 -1
  58. package/dist/esm/helpers/shareFormatter.js +14 -14
  59. package/dist/esm/index.d.ts +1 -1
  60. package/dist/esm/index.js +8 -8
  61. package/dist/esm/native/NativeInspector.d.ts +2 -0
  62. package/dist/esm/native/NativeInspector.js +1 -1
  63. package/dist/esm/native/NativeNetworkInspector.d.ts +2 -0
  64. package/dist/esm/styles/AppFonts.d.ts +4 -0
  65. package/dist/esm/styles/AppFonts.js +1 -1
  66. package/dist/esm/styles/index.d.ts +2 -0
  67. package/dist/esm/styles/index.js +1 -1
  68. package/dist/esm/types/enums.d.ts +0 -2
  69. package/dist/esm/types/enums.js +1 -1
  70. package/dist/esm/types/interfaces.d.ts +1 -1
  71. package/ios/NetworkInspectorModule.mm +288 -325
  72. package/package.json +1 -1
  73. package/src/native/NativeInspector.ts +30 -0
  74. package/src/native/NativeNetworkInspector.ts +2 -0
  75. package/android/.gradle/8.9/checksums/checksums.lock +0 -0
  76. package/android/.gradle/8.9/dependencies-accessors/gc.properties +0 -0
  77. package/android/.gradle/8.9/executionHistory/executionHistory.lock +0 -0
  78. package/android/.gradle/8.9/fileChanges/last-build.bin +0 -0
  79. package/android/.gradle/8.9/fileHashes/fileHashes.lock +0 -0
  80. package/android/.gradle/8.9/gc.properties +0 -0
  81. package/android/.gradle/9.2.0/checksums/checksums.lock +0 -0
  82. package/android/.gradle/9.2.0/fileChanges/last-build.bin +0 -0
  83. package/android/.gradle/9.2.0/fileHashes/fileHashes.bin +0 -0
  84. package/android/.gradle/9.2.0/fileHashes/fileHashes.lock +0 -0
  85. package/android/.gradle/9.2.0/gc.properties +0 -0
  86. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  87. package/android/.gradle/buildOutputCleanup/cache.properties +0 -2
  88. package/android/.gradle/vcs-1/gc.properties +0 -0
  89. package/android/.settings/org.eclipse.buildship.core.prefs +0 -13
  90. package/dist/commonjs/components/Inspector/BoxModelVisualizer.d.ts +0 -8
  91. package/dist/commonjs/components/Inspector/BoxModelVisualizer.js +0 -76
  92. package/dist/commonjs/components/Inspector/DebuggingTab.d.ts +0 -3
  93. package/dist/commonjs/components/Inspector/DebuggingTab.js +0 -197
  94. package/dist/commonjs/components/Inspector/UiA11yAuditPanel.d.ts +0 -7
  95. package/dist/commonjs/components/Inspector/UiA11yAuditPanel.js +0 -97
  96. package/dist/commonjs/components/Inspector/UiInspectorDetail.d.ts +0 -2
  97. package/dist/commonjs/components/Inspector/UiInspectorDetail.js +0 -485
  98. package/dist/commonjs/components/Inspector/UiInspectorOverlay.d.ts +0 -2
  99. package/dist/commonjs/components/Inspector/UiInspectorOverlay.js +0 -199
  100. package/dist/commonjs/components/Inspector/UiInspectorTab.d.ts +0 -2
  101. package/dist/commonjs/components/Inspector/UiInspectorTab.js +0 -117
  102. package/dist/commonjs/components/Inspector/UiLiveStyleTweaker.d.ts +0 -10
  103. package/dist/commonjs/components/Inspector/UiLiveStyleTweaker.js +0 -148
  104. package/dist/commonjs/components/Inspector/index.d.ts +0 -28
  105. package/dist/commonjs/components/Inspector/index.js +0 -1
  106. package/dist/commonjs/customHooks/uiInspectorManager.d.ts +0 -22
  107. package/dist/commonjs/customHooks/uiInspectorManager.js +0 -1
  108. package/dist/commonjs/helpers/uiInspectorEngine.d.ts +0 -62
  109. package/dist/commonjs/helpers/uiInspectorEngine.js +0 -19
  110. package/dist/esm/components/Inspector/BoxModelVisualizer.d.ts +0 -8
  111. package/dist/esm/components/Inspector/BoxModelVisualizer.js +0 -76
  112. package/dist/esm/components/Inspector/DebuggingTab.d.ts +0 -3
  113. package/dist/esm/components/Inspector/DebuggingTab.js +0 -197
  114. package/dist/esm/components/Inspector/UiA11yAuditPanel.d.ts +0 -7
  115. package/dist/esm/components/Inspector/UiA11yAuditPanel.js +0 -97
  116. package/dist/esm/components/Inspector/UiInspectorDetail.d.ts +0 -2
  117. package/dist/esm/components/Inspector/UiInspectorDetail.js +0 -422
  118. package/dist/esm/components/Inspector/UiInspectorOverlay.d.ts +0 -2
  119. package/dist/esm/components/Inspector/UiInspectorOverlay.js +0 -138
  120. package/dist/esm/components/Inspector/UiInspectorTab.d.ts +0 -2
  121. package/dist/esm/components/Inspector/UiInspectorTab.js +0 -117
  122. package/dist/esm/components/Inspector/UiLiveStyleTweaker.d.ts +0 -10
  123. package/dist/esm/components/Inspector/UiLiveStyleTweaker.js +0 -148
  124. package/dist/esm/components/Inspector/index.d.ts +0 -28
  125. package/dist/esm/components/Inspector/index.js +0 -1
  126. package/dist/esm/customHooks/uiInspectorManager.d.ts +0 -22
  127. package/dist/esm/customHooks/uiInspectorManager.js +0 -1
  128. package/dist/esm/helpers/uiInspectorEngine.d.ts +0 -48
  129. package/dist/esm/helpers/uiInspectorEngine.js +0 -19
@@ -1,5 +1,8 @@
1
1
  import React from 'react';
2
+ import { ActiveTab } from '../../types';
2
3
  export interface SkeletonPlaceholderProps {
4
+ tab?: ActiveTab;
5
+ type?: 'card' | 'detail' | 'list' | 'table';
3
6
  cardCount?: number;
4
7
  }
5
8
  export declare const SkeletonPlaceholder: React.NamedExoticComponent<SkeletonPlaceholderProps>;
@@ -1,23 +1,54 @@
1
- import x,{useEffect as v,useRef as D}from"react";import{Animated as f,StyleSheet as L,View as S}from"react-native";import{AppColors as b}from"../../styles/AppColors";export const SkeletonPlaceholder=x.memo(function({cardCount:B=4}){const C=D(new f.Value(.45)).current;return v(()=>{const V=f.loop(f.sequence([f.timing(C,{toValue:.95,duration:750,useNativeDriver:!1}),f.timing(C,{toValue:.45,duration:750,useNativeDriver:!1})]));return V.start(),()=>V.stop()},[C]),<S style={e.container}>
1
+ import x,{useEffect as A,useRef as D}from"react";import{Animated as L,StyleSheet as W,View as S}from"react-native";import{AppColors as V}from"../../styles/AppColors";export const SkeletonPlaceholder=x.memo(function({tab:R="apis",type:v="card",cardCount:T=4}){const C=D(new L.Value(.4)).current;return A(()=>{const f=L.loop(L.sequence([L.timing(C,{toValue:.95,duration:700,useNativeDriver:!0}),L.timing(C,{toValue:.4,duration:700,useNativeDriver:!0})]));return f.start(),()=>f.stop()},[C]),v==="detail"?<S style={e.container}accessible={!0}accessibilityRole="progressbar"accessibilityLabel="Loading details, please wait"accessibilityLiveRegion="polite">
2
+ <L.View style={[e.detailHeader,{opacity:C}]}/>
3
+ <S style={e.chipStripSkeleton}>
4
+ <L.View style={[e.chipSkeleton,{width:70,opacity:C}]}/>
5
+ <L.View style={[e.chipSkeleton,{width:90,opacity:C}]}/>
6
+ <L.View style={[e.chipSkeleton,{width:80,opacity:C}]}/>
7
+ </S>
8
+ <L.View style={[e.detailCodeCard,{opacity:C}]}>
9
+ <S style={[e.urlLineLong,{width:"85%"}]}/>
10
+ <S style={[e.urlLineLong,{width:"70%",marginTop:8}]}/>
11
+ <S style={[e.urlLineLong,{width:"92%",marginTop:8}]}/>
12
+ <S style={[e.urlLineLong,{width:"60%",marginTop:8}]}/>
13
+ <S style={[e.urlLineLong,{width:"78%",marginTop:8}]}/>
14
+ </L.View>
15
+ </S>:R==="media"?<S style={e.container}accessible={!0}accessibilityRole="progressbar"accessibilityLabel="Loading media gallery, please wait"accessibilityLiveRegion="polite">
16
+ <S style={e.mediaGrid}>
17
+ {Array.from({length:6}).map((f,B)=><L.View key={`skeleton_media_${B}`}style={[e.mediaTile,{opacity:C}]}/>)}
18
+ </S>
19
+ </S>:R==="perf"?<S style={e.container}accessible={!0}accessibilityRole="progressbar"accessibilityLabel="Loading performance diagnostics, please wait"accessibilityLiveRegion="polite">
20
+ <L.View style={[e.heroCard,{opacity:C}]}>
21
+ <S style={e.cardTopRow}>
22
+ <S style={e.timeSkeleton}/>
23
+ <S style={e.statusBadgeSkeleton}/>
24
+ </S>
25
+ <S style={[e.urlLineLong,{height:32,marginTop:12}]}/>
26
+ </L.View>
27
+ <L.View style={[e.cardSkeleton,{opacity:C}]}>
28
+ <S style={[e.urlLineLong,{width:"40%"}]}/>
29
+ <S style={[e.urlLineShort,{marginTop:10}]}/>
30
+ <S style={[e.urlLineLong,{marginTop:8}]}/>
31
+ </L.View>
32
+ </S>:<S style={e.container}accessible={!0}accessibilityRole="progressbar"accessibilityLabel={`Loading ${R} data, please wait`}accessibilityLiveRegion="polite">
2
33
 
3
34
  <S style={e.toolbarSkeleton}>
4
- <f.View style={[e.searchBarSkeleton,{opacity:C}]}/>
35
+ <L.View style={[e.searchBarSkeleton,{opacity:C}]}/>
5
36
  <S style={e.actionButtonsRow}>
6
- <f.View style={[e.iconButtonSkeleton,{opacity:C}]}/>
7
- <f.View style={[e.iconButtonSkeleton,{opacity:C}]}/>
37
+ <L.View style={[e.iconButtonSkeleton,{opacity:C}]}/>
38
+ <L.View style={[e.iconButtonSkeleton,{opacity:C}]}/>
8
39
  </S>
9
40
  </S>
10
41
 
11
42
 
12
43
  <S style={e.chipStripSkeleton}>
13
- <f.View style={[e.chipSkeleton,{width:48,opacity:C}]}/>
14
- <f.View style={[e.chipSkeleton,{width:68,opacity:C}]}/>
15
- <f.View style={[e.chipSkeleton,{width:76,opacity:C}]}/>
16
- <f.View style={[e.chipSkeleton,{width:58,opacity:C}]}/>
44
+ <L.View style={[e.chipSkeleton,{width:48,opacity:C}]}/>
45
+ <L.View style={[e.chipSkeleton,{width:68,opacity:C}]}/>
46
+ <L.View style={[e.chipSkeleton,{width:76,opacity:C}]}/>
47
+ <L.View style={[e.chipSkeleton,{width:58,opacity:C}]}/>
17
48
  </S>
18
49
 
19
50
 
20
- {Array.from({length:B}).map((V,R)=><f.View key={`skeleton_card_${R}`}style={[e.cardSkeleton,{opacity:C}]}>
51
+ {Array.from({length:T}).map((f,B)=><L.View key={`skeleton_card_${B}`}style={[e.cardSkeleton,{opacity:C}]}>
21
52
 
22
53
  <S style={e.cardTopRow}>
23
54
  <S style={e.badgeGroup}>
@@ -36,5 +67,5 @@ import x,{useEffect as v,useRef as D}from"react";import{Animated as f,StyleSheet
36
67
  <S style={e.metaPillSkeleton}/>
37
68
  <S style={e.metaPillSkeleton}/>
38
69
  </S>
39
- </f.View>)}
40
- </S>});const e=L.create({container:{flex:1,paddingHorizontal:12,paddingTop:8},toolbarSkeleton:{flexDirection:"row",alignItems:"center",gap:8,marginBottom:8},searchBarSkeleton:{flex:1,height:36,borderRadius:8,backgroundColor:b.graySurface,borderWidth:1,borderColor:b.dividerColor},actionButtonsRow:{flexDirection:"row",gap:6},iconButtonSkeleton:{width:36,height:36,borderRadius:8,backgroundColor:b.graySurface,borderWidth:1,borderColor:b.dividerColor},chipStripSkeleton:{flexDirection:"row",gap:6,marginBottom:10},chipSkeleton:{height:24,borderRadius:6,backgroundColor:b.graySurface,borderWidth:1,borderColor:b.dividerColor},cardSkeleton:{backgroundColor:b.primaryLight,borderRadius:10,padding:12,marginBottom:8,borderWidth:1,borderColor:b.dividerColor},cardTopRow:{flexDirection:"row",justifyContent:"space-between",alignItems:"center",marginBottom:8},badgeGroup:{flexDirection:"row",alignItems:"center",gap:6},statusBadgeSkeleton:{width:38,height:18,borderRadius:4,backgroundColor:b.slate200},methodBadgeSkeleton:{width:44,height:18,borderRadius:4,backgroundColor:b.slate200},timeSkeleton:{width:48,height:12,borderRadius:4,backgroundColor:b.slate200},urlLineLong:{height:13,borderRadius:4,backgroundColor:b.slate200,marginBottom:5,width:"90%"},urlLineShort:{height:11,borderRadius:4,backgroundColor:b.slate200,marginBottom:8,width:"55%"},cardBottomRow:{flexDirection:"row",gap:8,marginTop:2},metaPillSkeleton:{width:52,height:14,borderRadius:4,backgroundColor:b.slate200}});export default SkeletonPlaceholder;
70
+ </L.View>)}
71
+ </S>});const e=W.create({container:{flex:1,paddingHorizontal:12,paddingTop:8},toolbarSkeleton:{flexDirection:"row",alignItems:"center",gap:8,marginBottom:8},searchBarSkeleton:{flex:1,height:36,borderRadius:8,backgroundColor:V.graySurface,borderWidth:1,borderColor:V.dividerColor},actionButtonsRow:{flexDirection:"row",gap:6},iconButtonSkeleton:{width:36,height:36,borderRadius:8,backgroundColor:V.graySurface,borderWidth:1,borderColor:V.dividerColor},chipStripSkeleton:{flexDirection:"row",gap:6,marginBottom:10},chipSkeleton:{height:24,borderRadius:6,backgroundColor:V.graySurface,borderWidth:1,borderColor:V.dividerColor},cardSkeleton:{backgroundColor:V.primaryLight,borderRadius:10,padding:12,marginBottom:8,borderWidth:1,borderColor:V.dividerColor},cardTopRow:{flexDirection:"row",justifyContent:"space-between",alignItems:"center",marginBottom:8},badgeGroup:{flexDirection:"row",alignItems:"center",gap:6},statusBadgeSkeleton:{width:38,height:18,borderRadius:4,backgroundColor:V.slate200},methodBadgeSkeleton:{width:44,height:18,borderRadius:4,backgroundColor:V.slate200},timeSkeleton:{width:48,height:12,borderRadius:4,backgroundColor:V.slate200},urlLineLong:{height:13,borderRadius:4,backgroundColor:V.slate200,marginBottom:5,width:"90%"},urlLineShort:{height:11,borderRadius:4,backgroundColor:V.slate200,marginBottom:8,width:"55%"},cardBottomRow:{flexDirection:"row",gap:8,marginTop:2},metaPillSkeleton:{width:52,height:14,borderRadius:4,backgroundColor:V.slate200},heroCard:{backgroundColor:V.primaryLight,borderRadius:12,padding:16,marginBottom:12,borderWidth:1,borderColor:V.dividerColor},detailHeader:{height:48,borderRadius:8,backgroundColor:V.graySurface,marginBottom:12},detailCodeCard:{flex:1,backgroundColor:V.primaryLight,borderRadius:10,padding:14,borderWidth:1,borderColor:V.dividerColor},mediaGrid:{flexDirection:"row",flexWrap:"wrap",gap:8},mediaTile:{width:"31%",aspectRatio:1,borderRadius:8,backgroundColor:V.graySurface,borderWidth:1,borderColor:V.dividerColor}});export default SkeletonPlaceholder;
@@ -1,58 +1,52 @@
1
- import ce,{useRef as _,useState as F}from"react";import{Platform as de,ScrollView as Ce,Text as P,TouchableOpacity as U,View as C}from"react-native";import{useInspector as ke}from"./InspectorContext";import{useTranslation as we}from"../../i18n";import v from"../../styles";import{AppColors as o}from"../../styles/AppColors";import{AppFonts as T}from"../../styles/AppFonts";import G from"../TouchableScale";import{SignalIcon as Se,TerminalIcon as Ie,AnalyticsIcon as Re,ReduxIcon as Te,CrashIcon as Be,BellIcon as Pe,SmartphoneIcon as Le,DatabaseIcon as Ae,QrCodeIcon as Ve,ScreencastIcon as Oe,ChevronIcon as Q,WebsocketIcon as De,SpeedometerIcon as Ee}from"../NetworkIcons";import{isReduxConnected as He}from"../../customHooks/reduxLogger";import{isAnalyticsConnected as We}from"../../customHooks/analyticsLogger";import{isLocalDebugEnvironment as $e}from"../../helpers";const n={themeColor:o.brandPurple,bgInactive:`${o.brandPurple}0D`,borderInactive:`${o.brandPurple}2B`,iconInactive:o.brandPurple,idBadgeBg:`${o.brandPurple}1C`,idBadgeBorder:`${o.brandPurple}3D`,idBadgeText:o.brandPurple},q={apis:n,logs:n,perf:n,analytics:n,redux:n,storage:n,device:n,crash:n,push:n,socket:n,debugging:n,media:n},je=ce.memo(()=>{const{t:J}=we(),{activeTab:w,switchActiveTab:L,tabVisibility:B,logs:A,consoleLogs:V,analyticsEvents:K,crashRecords:O,pushRecords:D,socketRecords:E,unreadPushCount:N,unreadSocketCount:X,lastReadApisCount:Y,lastReadLogsCount:Z,lastReadCrashesCount:ee,lastReadSocketCount:oe,mediaCount:H}=ke(),te=He(),ie=We(),k=w==="media",x=(B?.media??!0)&&(H>0||k||__DEV__),W=_(null),[z,re]=F(!1),[$,ne]=F(!0),j=_(0),le=e=>{const{contentOffset:t,layoutMeasurement:i,contentSize:r}=e.nativeEvent,S=t.x;j.current=S;const I=S>8,R=S<r.width-i.width-8;z!==I&&re(I),$!==R&&ne(R)},M=e=>{W.current?.scrollTo({x:Math.max(0,j.current+e),animated:!0})};return<C style={[v.tabBarContainer,{flexDirection:"row",alignItems:"center",paddingHorizontal:0}]}>
1
+ import ce,{useRef as H,useState as E}from"react";import{ScrollView as Ce,Text as M,TouchableOpacity as W,View as C}from"react-native";import{useInspector as we}from"./InspectorContext";import{useTranslation as ke}from"../../i18n";import x from"../../styles";import{AppColors as t}from"../../styles/AppColors";import{AppFonts as z}from"../../styles/AppFonts";import _ from"../TouchableScale";import{SignalIcon as Se,TerminalIcon as Re,AnalyticsIcon as Ie,ReduxIcon as Te,CrashIcon as Be,BellIcon as Pe,SmartphoneIcon as Le,DatabaseIcon as Ae,ScreencastIcon as $e,ChevronIcon as F,WebsocketIcon as De,SpeedometerIcon as Oe}from"../NetworkIcons";import{isReduxConnected as Ve}from"../../customHooks/reduxLogger";import{isAnalyticsConnected as He}from"../../customHooks/analyticsLogger";const n={themeColor:t.brandPurple,bgInactive:`${t.brandPurple}0D`,borderInactive:`${t.brandPurple}2B`,iconInactive:t.brandPurple,idBadgeBg:`${t.brandPurple}1C`,idBadgeBorder:`${t.brandPurple}3D`,idBadgeText:t.brandPurple},U={apis:n,logs:n,perf:n,analytics:n,redux:n,storage:n,device:n,crash:n,push:n,socket:n,media:n},Ee=ce.memo(()=>{const{t:S}=ke(),{activeTab:k,switchActiveTab:L,tabVisibility:A,logs:q,consoleLogs:G,analyticsEvents:je,crashRecords:J,pushRecords:K,socketRecords:N,unreadPushCount:Q,unreadSocketCount:X,lastReadApisCount:Y,lastReadLogsCount:Z,lastReadCrashesCount:ee,lastReadSocketCount:te,mediaCount:I}=we(),oe=Ve(),ie=He(),w=k==="media",B=(A?.media??!0)&&(I>0||w||__DEV__),$=H(null),[P,re]=E(!1),[D,ne]=E(!0),O=H(0),se=e=>{const{contentOffset:o,layoutMeasurement:r,contentSize:i}=e.nativeEvent,R=o.x;O.current=R;const T=R>8,v=R<i.width-r.width-8;P!==T&&re(T),D!==v&&ne(v)},V=e=>{$.current?.scrollTo({x:Math.max(0,O.current+e),animated:!0})};return<C style={[x.tabBarContainer,{flexDirection:"row",alignItems:"center",paddingHorizontal:0}]}>
2
2
 
3
- {z&&<U onPress={()=>M(-160)}hitSlop={{top:6,bottom:6,left:6,right:6}}activeOpacity={.7}style={{paddingLeft:6,paddingRight:2,justifyContent:"center",alignItems:"center"}}>
4
- <C style={{width:22,height:22,borderRadius:11,backgroundColor:o.grayBorderSecondary,alignItems:"center",justifyContent:"center"}}>
5
- <Q direction="left"size={13}color={o.grayTextStrong}/>
3
+ {P&&<W onPress={()=>V(-160)}hitSlop={{top:6,bottom:6,left:6,right:6}}activeOpacity={.7}style={{paddingLeft:6,paddingRight:2,justifyContent:"center",alignItems:"center"}}>
4
+ <C style={{width:22,height:22,borderRadius:11,backgroundColor:t.grayBorderSecondary,alignItems:"center",justifyContent:"center"}}>
5
+ <F direction="left"size={13}color={t.grayTextStrong}/>
6
6
  </C>
7
- </U>}
7
+ </W>}
8
8
 
9
9
 
10
- <Ce testID="inspector.tab.scrollview"ref={W}horizontal showsHorizontalScrollIndicator={!1}onScroll={le}scrollEventThrottle={16}style={{flex:1}}contentContainerStyle={{paddingLeft:z?4:12,paddingRight:x?6:12}}>
11
- {[{id:1,key:"apis",label:"APIs",count:A.length,icon:"apis"},{id:2,key:"logs",label:"Logs",count:V.length,icon:"logs"},{id:3,key:"perf",label:"Perf / FPS",count:0,icon:"perf"},{id:4,key:"analytics",label:"Analytics",count:K.length,icon:"analytics"},{id:5,key:"redux",label:"Redux",count:0,icon:"redux"},{id:6,key:"storage",label:"Storage",count:0,icon:"storage"},{id:7,key:"device",label:"Device",count:0,icon:"device"},{id:8,key:"crash",label:"Crash",count:O?.length||0,icon:"crash"},{id:9,key:"push",label:"Push",count:D?.length||0,icon:"push"},{id:10,key:"socket",label:"WebSocket",count:E?.length||0,icon:"socket"},{id:11,key:"debugging",label:"Debugging",count:0,icon:"debugging"}].filter(e=>e.key==="debugging"?de.OS==="android"&&$e()&&!!B?.debugging:!(!B?.[e.key]||e.key==="redux"&&!te||e.key==="analytics"&&!ie)).map(e=>{const t=w===e.key,i=q[e.key]||q.apis,r=t?o.white:i.iconInactive,S=e.count>99?"99+":String(e.count),I=w!=="apis"&&A.length>Y,R=w!=="logs"&&V.length>Z,se=w!=="crash"&&(O?.length||0)>(ee||0),ae=w!=="socket"&&((E?.length||0)>(oe||0)||X>0);return<G key={e.key}testID={`inspector.tab.${e.key}`}onPress={()=>{L(e.key)}}style={[v.contentTabButton,{backgroundColor:t?i.themeColor:i.bgInactive,borderColor:t?i.themeColor:i.borderInactive},t&&{shadowColor:i.themeColor,shadowOffset:{width:0,height:2},shadowOpacity:.28,shadowRadius:3.5,elevation:3}]}>
10
+ <Ce testID="inspector.tab.scrollview"ref={$}horizontal showsHorizontalScrollIndicator={!1}onScroll={se}scrollEventThrottle={16}style={{flex:1}}contentContainerStyle={{paddingLeft:P?4:12,paddingRight:B?6:12}}>
11
+ {[{id:1,key:"apis",label:"APIs",icon:"apis"},{id:2,key:"logs",label:"Logs",icon:"logs"},{id:3,key:"perf",label:"Perf / FPS",icon:"perf"},{id:4,key:"analytics",label:"Analytics",icon:"analytics"},{id:5,key:"redux",label:"Redux",icon:"redux"},{id:6,key:"storage",label:"Storage",icon:"storage"},{id:7,key:"device",label:"Device",icon:"device"},{id:8,key:"crash",label:"Crash",icon:"crash"},{id:9,key:"push",label:"Push",icon:"push"},{id:10,key:"socket",label:"WebSocket",icon:"socket"}].filter(e=>!(!A?.[e.key]||e.key==="redux"&&!oe||e.key==="analytics"&&!ie)).map(e=>{const o=k===e.key,r=U[e.key]||U.apis,i=o?t.white:r.iconInactive,R=k!=="apis"&&q.length>Y,T=k!=="logs"&&G.length>Z,v=k!=="crash"&&(J?.length||0)>(ee||0),ae=k!=="socket"&&((N?.length||0)>(te||0)||X>0);return<_ key={e.key}testID={`inspector.tab.${e.key}`}accessible={!0}accessibilityRole="tab"accessibilityState={{selected:o}}accessibilityLabel={`${S(`tabs.${e.key}`,e.label)} tab`}accessibilityHint={S("accessibility.tabSwitchHint","Double tap to switch to this tab")}onPress={()=>{L(e.key)}}style={[x.contentTabButton,{backgroundColor:o?r.themeColor:r.bgInactive,borderColor:o?r.themeColor:r.borderInactive},o&&{shadowColor:r.themeColor,shadowOffset:{width:0,height:2},shadowOpacity:.28,shadowRadius:3.5,elevation:3}]}>
12
12
  <C style={{flexDirection:"row",alignItems:"center",gap:6}}>
13
- {e.icon==="apis"&&<Se color={r}size={14}/>}
14
- {e.icon==="logs"&&<Ie color={r}size={14}/>}
15
- {e.icon==="perf"&&<Ee color={r}size={14}/>}
16
- {e.icon==="analytics"&&<Re color={r}size={14}/>}
17
- {e.icon==="redux"&&<Te color={r}size={14}/>}
18
- {e.icon==="storage"&&<Ae color={r}size={14}/>}
19
- {e.icon==="device"&&<Le color={r}size={14}/>}
20
- {e.icon==="crash"&&<Be color={r}size={14}/>}
21
- {e.icon==="push"&&<Pe color={r}size={14}/>}
22
- {e.icon==="socket"&&<De color={r}size={14}/>}
23
- {e.icon==="debugging"&&<Ve color={r}size={14}/>}
24
- <C style={{minWidth:20,height:20,paddingHorizontal:4,borderRadius:10,backgroundColor:t?`${o.white}33`:i.idBadgeBg,borderWidth:1,borderColor:t?`${o.white}66`:i.idBadgeBorder,alignItems:"center",justifyContent:"center"}}>
25
- <P style={{fontFamily:T.interBold,fontSize:9.5,lineHeight:12,color:t?o.white:i.idBadgeText}}>
13
+ {e.icon==="apis"&&<Se color={i}size={14}/>}
14
+ {e.icon==="logs"&&<Re color={i}size={14}/>}
15
+ {e.icon==="perf"&&<Oe color={i}size={14}/>}
16
+ {e.icon==="analytics"&&<Ie color={i}size={14}/>}
17
+ {e.icon==="redux"&&<Te color={i}size={14}/>}
18
+ {e.icon==="storage"&&<Ae color={i}size={14}/>}
19
+ {e.icon==="device"&&<Le color={i}size={14}/>}
20
+ {e.icon==="crash"&&<Be color={i}size={14}/>}
21
+ {e.icon==="push"&&<Pe color={i}size={14}/>}
22
+ {e.icon==="socket"&&<De color={i}size={14}/>}
23
+ <C style={{minWidth:20,height:20,paddingHorizontal:4,borderRadius:10,backgroundColor:o?`${t.white}33`:r.idBadgeBg,borderWidth:1,borderColor:o?`${t.white}66`:r.idBadgeBorder,alignItems:"center",justifyContent:"center"}}>
24
+ <M style={{fontFamily:z.interBold,fontSize:9.5,lineHeight:12,color:o?t.white:r.idBadgeText}}>
26
25
  #{e.id}
27
- </P>
26
+ </M>
28
27
  </C>
29
- <P numberOfLines={1}ellipsizeMode="tail"style={[v.contentTabButtonText,{color:t?o.white:o.grayTextStrong,fontFamily:t?T.interBold:T.interSemiBold}]}>
30
- {J(`tabs.${e.key}`,e.label)}
31
- </P>
32
- {e.count>0&&e.key!=="push"&&<C style={{paddingHorizontal:5,paddingVertical:1,borderRadius:8,backgroundColor:t?o.overlayWhite25:i.idBadgeBg,borderWidth:.5,borderColor:t?o.overlayWhite45:i.idBadgeBorder,marginLeft:1,alignItems:"center",justifyContent:"center"}}>
33
- <P style={{fontFamily:T.interBold,fontSize:9.5,lineHeight:12,color:t?o.white:i.themeColor}}>
34
- {S}
35
- </P>
36
- </C>}
37
- {(e.key==="apis"&&I||e.key==="logs"&&R||e.key==="crash"&&se||e.key==="push"&&((D?.length||0)>0||N>0)||e.key==="socket"&&ae)&&<C style={{width:6,height:6,borderRadius:3,backgroundColor:o.errorColor,marginLeft:4,alignSelf:"center"}}/>}
28
+ <M numberOfLines={1}ellipsizeMode="tail"style={[x.contentTabButtonText,{color:o?t.white:t.grayTextStrong,fontFamily:o?z.interBold:z.interSemiBold}]}>
29
+ {S(`tabs.${e.key}`,e.label)}
30
+ </M>
31
+ {(e.key==="apis"&&R||e.key==="logs"&&T||e.key==="crash"&&v||e.key==="push"&&((K?.length||0)>0||Q>0)||e.key==="socket"&&ae)&&<C style={{width:6,height:6,borderRadius:3,backgroundColor:t.errorColor,marginLeft:4,alignSelf:"center"}}/>}
38
32
  </C>
39
- </G>})}
33
+ </_>})}
40
34
  </Ce>
41
35
 
42
36
 
43
- {$&&<U onPress={()=>M(160)}hitSlop={{top:6,bottom:6,left:6,right:6}}activeOpacity={.7}style={{paddingLeft:2,paddingRight:x?4:8,justifyContent:"center",alignItems:"center"}}>
44
- <C style={{width:22,height:22,borderRadius:11,backgroundColor:o.grayBorderSecondary,alignItems:"center",justifyContent:"center"}}>
45
- <Q direction="right"size={13}color={o.grayTextStrong}/>
37
+ {D&&<W onPress={()=>V(160)}hitSlop={{top:6,bottom:6,left:6,right:6}}activeOpacity={.7}style={{paddingLeft:2,paddingRight:B?4:8,justifyContent:"center",alignItems:"center"}}>
38
+ <C style={{width:22,height:22,borderRadius:11,backgroundColor:t.grayBorderSecondary,alignItems:"center",justifyContent:"center"}}>
39
+ <F direction="right"size={13}color={t.grayTextStrong}/>
46
40
  </C>
47
- </U>}
41
+ </W>}
48
42
 
49
43
 
50
- {x&&<C style={{paddingLeft:6,paddingRight:10,borderLeftWidth:1,borderLeftColor:o.dividerColor,backgroundColor:o.primaryLight,justifyContent:"center",shadowColor:o.shadowColorString,shadowOffset:{width:-3,height:0},shadowOpacity:.12,shadowRadius:4,elevation:4,zIndex:10}}>
51
- <G key="media"testID="inspector.tab.media"onPress={()=>{L("media")}}accessibilityRole="button"accessibilityLabel="Media Gallery"style={[v.contentTabButton,{marginRight:0,borderRadius:8,backgroundColor:k?o.brandPurple:`${o.brandPurple}0D`,borderColor:k?o.brandPurple:`${o.brandPurple}2B`,borderWidth:1,paddingHorizontal:10,paddingVertical:7,alignItems:"center",justifyContent:"center"},k&&{shadowColor:o.brandPurple,shadowOffset:{width:0,height:2},shadowOpacity:.28,shadowRadius:3.5,elevation:3}]}>
44
+ {B&&<C style={{paddingLeft:6,paddingRight:10,borderLeftWidth:1,borderLeftColor:t.dividerColor,backgroundColor:t.primaryLight,justifyContent:"center",shadowColor:t.shadowColorString,shadowOffset:{width:-3,height:0},shadowOpacity:.12,shadowRadius:4,elevation:4,zIndex:10}}>
45
+ <_ key="media"testID="inspector.tab.media"onPress={()=>{L("media")}}accessible={!0}accessibilityRole="tab"accessibilityState={{selected:w}}accessibilityLabel={`${S("tabs.media","Media")} tab${I>0?`, ${I} items`:""}`}accessibilityHint={S("accessibility.tabSwitchHint","Double tap to switch to this tab")}style={[x.contentTabButton,{marginRight:0,borderRadius:8,backgroundColor:w?t.brandPurple:`${t.brandPurple}0D`,borderColor:w?t.brandPurple:`${t.brandPurple}2B`,borderWidth:1,paddingHorizontal:10,paddingVertical:7,alignItems:"center",justifyContent:"center"},w&&{shadowColor:t.brandPurple,shadowOffset:{width:0,height:2},shadowOpacity:.28,shadowRadius:3.5,elevation:3}]}>
52
46
  <C style={{position:"relative",alignItems:"center",justifyContent:"center"}}>
53
- <Oe color={k?o.white:o.brandPurple}size={15}/>
54
- {H>0&&<C style={{position:"absolute",top:-3,right:-4,width:7,height:7,borderRadius:3.5,backgroundColor:k?o.white:o.brandPurple,borderWidth:1.2,borderColor:k?o.brandPurple:o.white}}/>}
47
+ <$e color={w?t.white:t.brandPurple}size={15}/>
48
+ {I>0&&<C style={{position:"absolute",top:-3,right:-4,width:7,height:7,borderRadius:3.5,backgroundColor:w?t.white:t.brandPurple,borderWidth:1.2,borderColor:w?t.brandPurple:t.white}}/>}
55
49
  </C>
56
- </G>
50
+ </_>
57
51
  </C>}
58
- </C>});export default je;
52
+ </C>});export default Ee;
@@ -1,118 +1,118 @@
1
- import re,{useEffect as ne,useRef as le,useMemo as ie}from"react";import{Alert as E,Animated as O,Linking as ae,View as C,Pressable as D,Text as T,StyleSheet as U}from"react-native";import Ce,{Path as Te}from"react-native-svg";import{AppColors as e}from"../styles/AppColors";import{METHOD_COLORS as A}from"../constants";import{getStatusColor as Se,getDurationColor as Be,formatDateTime as Re,getSize as He,getPath as Ve,getBaseUrl as ze,openWithPostman as q}from"../helpers";import{CalendarIcon as Ie,ClockIcon as N,SizeIcon as Le,CircleCheckIcon as Pe,CircleAlertIcon as $e,CircleXIcon as We,RepeatIcon as Oe,ForwardChevronIcon as De,GlobeIcon as Fe,PostmanIcon as Me}from"./NetworkIcons";import{AppFonts as S}from"../styles/AppFonts";import G from"./HighlightText";import Ee from"./TouchableScale";import{useTranslation as Ue}from"../i18n";function Ae({item:t,onPress:B,timelineMinStart:Ne,timelineTotalRange:Ge,isNew:L,isSelected:F,onToggleSelect:J,searchStr:j,testID:K}){const{t:R}=Ue(),M=A[t.method]??A.ALL,V=ie(()=>{try{const r=new URL(t.url),W=r.host,v=r.pathname+(r.search?r.search:""),oe=r.protocol==="https:";return{host:W,path:v||"/",isHttps:oe}}catch{const r=t.url.toLowerCase().startsWith("https:"),W=Ve(t.url);return{host:ze(t.url).replace(/^https?:\/\//,""),path:W||t.url,isHttps:r}}},[t.url]),Q=r=>{r?.stopPropagation?.(),E.alert(R("common.openInBrowser")||"Open URL",`${R("common.openInBrowserPrompt")||"Choose how you want to open or inspect this URL:"}
1
+ import E,{useEffect as le,useRef as ae,useMemo as ie}from"react";import{Alert as U,Animated as O,Linking as se,View as C,Pressable as D,Text as T,StyleSheet as A}from"react-native";import Ce,{Path as Te}from"react-native-svg";import{AppColors as e}from"../styles/AppColors";import{METHOD_COLORS as q}from"../constants";import{getStatusColor as Se,getDurationColor as Be,formatDateTime as Re,getSize as He,getPath as Ve,getBaseUrl as ze,openWithPostman as N}from"../helpers";import{CalendarIcon as Ie,ClockIcon as G,SizeIcon as Le,CircleCheckIcon as Pe,CircleAlertIcon as $e,CircleXIcon as We,RepeatIcon as Oe,ForwardChevronIcon as De,GlobeIcon as Fe,PostmanIcon as Me}from"./NetworkIcons";import{AppFonts as S}from"../styles/AppFonts";import J from"./HighlightText";import Ee from"./TouchableScale";import{useTranslation as Ue}from"../i18n";function Ae({item:o,onPress:B,timelineMinStart:Ne,timelineTotalRange:Ge,isNew:L,isSelected:F,onToggleSelect:K,searchStr:j,testID:Q}){const{t:R}=Ue(),v=q[o.method]??q.ALL,V=ie(()=>{try{const r=new URL(o.url),W=r.host,M=r.pathname+(r.search?r.search:""),ne=r.protocol==="https:";return{host:W,path:M||"/",isHttps:ne}}catch{const r=o.url.toLowerCase().startsWith("https:"),W=Ve(o.url);return{host:ze(o.url).replace(/^https?:\/\//,""),path:W||o.url,isHttps:r}}},[o.url]),X=r=>{r?.stopPropagation?.(),U.alert(R("common.openInBrowser")||"Open URL",`${R("common.openInBrowserPrompt")||"Choose how you want to open or inspect this URL:"}
2
2
 
3
- ${t.url}`,[{text:R("common.cancel")||"Cancel",style:"cancel"},{text:"Open in Postman",onPress:()=>q(t)},{text:R("common.open")||"Browser",onPress:()=>{ae.openURL(t.url).catch(()=>{E.alert(R("common.error")||"Error",R("common.cannotOpenUrl")||"Could not open URL")})}}])},X=r=>{r?.stopPropagation?.(),q(t)},H=t.status===0||t.status!=null&&t.status>=400,z=t.status==null,P=Se(t.status),I=Be(t.duration),_=z?e.darkOrange:H?e.errorColor:e.greenColor,$=le(new O.Value(L?.35:0)).current;ne(()=>{L&&O.timing($,{toValue:0,duration:1200,useNativeDriver:!0}).start()},[L,$]);const Y=()=>{if(z)return"...";if(t.status===0||t.status==null)return R("network.statusFailed")||"FAILED";const r=typeof t.status=="number"?t.status:parseInt(String(t.status||0),10);return r===200?"200 OK":r===201?"201 Created":r===204?"204 No Content":r===304?"304 Not Modified":r===400?"400 Bad Req":r===401?"401 Unauth":r===403?"403 Forbidden":r===404?"404 Not Found":r===500?"500 Error":String(t.status)},Z=()=>{if(z)return<N color={e.darkOrange}size={10}/>;const r=typeof t.status=="number"?t.status:parseInt(String(t.status||0),10);return r>=200&&r<300?<Pe color={e.greenColor}size={10}/>:r>=300&&r<400?<Oe color={e.amber700}size={10}/>:r>=400&&r<500?<$e color={e.darkOrange}size={10}/>:<We color={e.errorColor}size={10}/>},ee=Re(t.startTime),te=t.url.split("?")[0].toLowerCase().endsWith(".json");return<C style={o.container}>
4
- <Ee testID={K}onPress={B}style={[o.card,{borderLeftWidth:3.5,borderLeftColor:_,backgroundColor:H?e.errorCardBg:e.white}]}>
5
- <C style={o.cardBody}>
3
+ ${o.url}`,[{text:R("common.cancel")||"Cancel",style:"cancel"},{text:"Open in Postman",onPress:()=>N(o)},{text:R("common.open")||"Browser",onPress:()=>{se.openURL(o.url).catch(()=>{U.alert(R("common.error")||"Error",R("common.cannotOpenUrl")||"Could not open URL")})}}])},_=r=>{r?.stopPropagation?.(),N(o)},H=o.status===0||o.status!=null&&o.status>=400,z=o.status==null,P=Se(o.status),I=Be(o.duration),Y=z?e.darkOrange:H?e.errorColor:e.greenColor,$=ae(new O.Value(L?.35:0)).current;le(()=>{L&&O.timing($,{toValue:0,duration:1200,useNativeDriver:!0}).start()},[L,$]);const Z=()=>{if(z)return"...";if(o.status===0||o.status==null)return R("network.statusFailed")||"FAILED";const r=typeof o.status=="number"?o.status:parseInt(String(o.status||0),10);return r===200?"200 OK":r===201?"201 Created":r===204?"204 No Content":r===304?"304 Not Modified":r===400?"400 Bad Req":r===401?"401 Unauth":r===403?"403 Forbidden":r===404?"404 Not Found":r===500?"500 Error":String(o.status)},ee=()=>{if(z)return<G color={e.darkOrange}size={10}/>;const r=typeof o.status=="number"?o.status:parseInt(String(o.status||0),10);return r>=200&&r<300?<Pe color={e.greenColor}size={10}/>:r>=300&&r<400?<Oe color={e.amber700}size={10}/>:r>=400&&r<500?<$e color={e.darkOrange}size={10}/>:<We color={e.errorColor}size={10}/>},oe=Re(o.startTime),te=o.url.split("?")[0].toLowerCase().endsWith(".json"),re=E.useCallback(()=>{B?.(o)},[B,o]);return<C style={t.container}>
4
+ <Ee testID={Q}onPress={re}style={[t.card,{borderLeftWidth:3.5,borderLeftColor:Y,backgroundColor:H?e.errorCardBg:e.white}]}>
5
+ <C style={t.cardBody}>
6
6
 
7
- <C style={o.cardHeaderRow}>
8
- <C style={o.cardHeaderLeft}>
9
- <D onPress={()=>J(t.id)}hitSlop={12}style={[o.smallCheckbox,F&&o.smallCheckboxChecked]}>
7
+ <C style={t.cardHeaderRow}>
8
+ <C style={t.cardHeaderLeft}>
9
+ <D onPress={()=>K(o.id)}hitSlop={12}style={[t.smallCheckbox,F&&t.smallCheckboxChecked]}>
10
10
  {F&&<Ce width={9}height={9}viewBox="0 0 24 24"fill="none">
11
11
  <Te d="M20 6L9 17l-5-5"stroke={e.white}strokeWidth="4"strokeLinecap="round"strokeLinejoin="round"/>
12
12
  </Ce>}
13
13
  </D>
14
14
 
15
- <T style={o.serialNumber}>#{t.id+1}</T>
15
+ <T style={t.serialNumber}>#{o.id+1}</T>
16
16
 
17
- <C style={[o.methodBadge,{backgroundColor:M}]}>
18
- <T style={o.methodBadgeText}>
19
- {t.method}
17
+ <C style={[t.methodBadge,{backgroundColor:v}]}>
18
+ <T style={t.methodBadgeText}>
19
+ {o.method}
20
20
  </T>
21
21
  </C>
22
22
 
23
- {t.client&&<C style={[o.chip,{backgroundColor:t.client==="axios"?`${e.purple}14`:t.client==="apollo"||t.client==="graphql"?`${e.pink500}14`:t.client==="xhr"?`${e.amber500}14`:`${e.sky500}14`,borderColor:t.client==="axios"?`${e.purple}30`:t.client==="apollo"||t.client==="graphql"?`${e.pink500}30`:t.client==="xhr"?`${e.amber500}30`:`${e.sky500}30`}]}>
24
- <T style={[o.chipText,{color:t.client==="axios"?e.purple:t.client==="apollo"||t.client==="graphql"?e.pink500:t.client==="xhr"?e.amber700:e.sky600}]}>
25
- {t.client.toUpperCase()}
23
+ {o.client&&<C style={[t.chip,{backgroundColor:o.client==="axios"?`${e.purple}14`:o.client==="apollo"||o.client==="graphql"?`${e.pink500}14`:o.client==="xhr"?`${e.amber500}14`:`${e.sky500}14`,borderColor:o.client==="axios"?`${e.purple}30`:o.client==="apollo"||o.client==="graphql"?`${e.pink500}30`:o.client==="xhr"?`${e.amber500}30`:`${e.sky500}30`}]}>
24
+ <T style={[t.chipText,{color:o.client==="axios"?e.purple:o.client==="apollo"||o.client==="graphql"?e.pink500:o.client==="xhr"?e.amber700:e.sky600}]}>
25
+ {o.client.toUpperCase()}
26
26
  </T>
27
27
  </C>}
28
28
 
29
29
 
30
- {(t.url.toLowerCase().includes("graphql")||t.client==="apollo"||t.client==="graphql")&&<C style={[o.chip,{backgroundColor:e.roseBg,borderColor:e.roseBorder}]}>
31
- <T style={[o.chipText,{color:e.pink600}]}>
30
+ {(o.url.toLowerCase().includes("graphql")||o.client==="apollo"||o.client==="graphql")&&<C style={[t.chip,{backgroundColor:e.roseBg,borderColor:e.roseBorder}]}>
31
+ <T style={[t.chipText,{color:e.pink600}]}>
32
32
  GQL
33
33
  </T>
34
34
  </C>}
35
35
  </C>
36
36
 
37
- <C style={o.cardHeaderRight}>
38
- <C style={[o.statusPill,{backgroundColor:H?`${e.errorColor}14`:z?`${e.darkOrange}14`:`${P}14`,borderColor:H?`${e.errorColor}33`:z?`${e.darkOrange}33`:`${P}33`}]}>
39
- {Z()}
40
- <T style={[o.statusPillText,{color:H?e.errorColor:z?e.darkOrange:P}]}>
41
- {Y()}
37
+ <C style={t.cardHeaderRight}>
38
+ <C style={[t.statusPill,{backgroundColor:H?`${e.errorColor}14`:z?`${e.darkOrange}14`:`${P}14`,borderColor:H?`${e.errorColor}33`:z?`${e.darkOrange}33`:`${P}33`}]}>
39
+ {ee()}
40
+ <T style={[t.statusPillText,{color:H?e.errorColor:z?e.darkOrange:P}]}>
41
+ {Z()}
42
42
  </T>
43
43
  </C>
44
- <D onPress={Q}hitSlop={{top:6,bottom:6,left:3,right:3}}style={o.globeBtn}accessibilityRole="button"accessibilityLabel="Open in Browser">
44
+ <D onPress={X}hitSlop={{top:6,bottom:6,left:3,right:3}}style={t.globeBtn}accessibilityRole="button"accessibilityLabel="Open in Browser">
45
45
  <Fe color={e.grayTextWeak}size={12}/>
46
46
  </D>
47
- <D onPress={X}hitSlop={{top:6,bottom:6,left:3,right:3}}style={[o.globeBtn,{backgroundColor:"rgba(255, 108, 55, 0.12)",borderColor:"rgba(255, 108, 55, 0.28)"}]}accessibilityRole="button"accessibilityLabel="Open with Postman">
47
+ <D onPress={_}hitSlop={{top:6,bottom:6,left:3,right:3}}style={[t.globeBtn,{backgroundColor:"rgba(255, 108, 55, 0.12)",borderColor:"rgba(255, 108, 55, 0.28)"}]}accessibilityRole="button"accessibilityLabel="Open with Postman">
48
48
  <Me color="#FF6C37"size={11}/>
49
49
  </D>
50
- <C style={o.chevronWrapper}>
50
+ <C style={t.chevronWrapper}>
51
51
  <De color={e.grayTextWeak}size={13}/>
52
52
  </C>
53
53
  </C>
54
54
  </C>
55
55
 
56
56
 
57
- <C style={o.urlBox}>
57
+ <C style={t.urlBox}>
58
58
 
59
- <C style={o.urlMainRow}>
60
- <C style={o.hostRow}>
61
- <C style={[o.protoBadge,{backgroundColor:V.isHttps?`${e.emerald600}12`:`${e.amber600}12`,borderColor:V.isHttps?`${e.emerald600}2B`:`${e.amber600}2B`}]}>
62
- <T style={[o.protoBadgeText,{color:V.isHttps?e.emerald600:e.amber700}]}>
59
+ <C style={t.urlMainRow}>
60
+ <C style={t.hostRow}>
61
+ <C style={[t.protoBadge,{backgroundColor:V.isHttps?`${e.emerald600}12`:`${e.amber600}12`,borderColor:V.isHttps?`${e.emerald600}2B`:`${e.amber600}2B`}]}>
62
+ <T style={[t.protoBadgeText,{color:V.isHttps?e.emerald600:e.amber700}]}>
63
63
  {V.isHttps?"HTTPS":"HTTP"}
64
64
  </T>
65
65
  </C>
66
- <G text={V.host||t.url}search={j}style={o.hostText}highlightStyle={o.highlight}numberOfLines={1}ellipsizeMode="tail"/>
66
+ <J text={V.host||o.url}search={j}style={t.hostText}highlightStyle={t.highlight}numberOfLines={1}ellipsizeMode="tail"/>
67
67
  </C>
68
- <C style={o.urlBadgeRow}>
69
- {te&&<C style={o.jsonBadge}>
70
- <T style={o.jsonBadgeText}>.json</T>
68
+ <C style={t.urlBadgeRow}>
69
+ {te&&<C style={t.jsonBadge}>
70
+ <T style={t.jsonBadgeText}>.json</T>
71
71
  </C>}
72
- {t.duplicateCount!=null&&t.duplicateCount>1&&<C style={o.dupBadge}>
73
- <T style={o.dupBadgeText}>×{t.duplicateCount}</T>
72
+ {o.duplicateCount!=null&&o.duplicateCount>1&&<C style={t.dupBadge}>
73
+ <T style={t.dupBadgeText}>×{o.duplicateCount}</T>
74
74
  </C>}
75
75
  </C>
76
76
  </C>
77
77
 
78
78
 
79
- <C style={o.slugRow}>
80
- <G text={V.path}search={j}style={o.pathText}highlightStyle={o.highlight}numberOfLines={1}ellipsizeMode="middle"/>
79
+ <C style={t.slugRow}>
80
+ <J text={V.path}search={j}style={t.pathText}highlightStyle={t.highlight}numberOfLines={1}ellipsizeMode="middle"/>
81
81
  </C>
82
82
  </C>
83
83
 
84
84
 
85
- <C style={o.cardFooterRow}>
86
- <C style={o.footerLeft}>
87
- <C style={o.cardDateRow}>
85
+ <C style={t.cardFooterRow}>
86
+ <C style={t.footerLeft}>
87
+ <C style={t.cardDateRow}>
88
88
  <Ie color={e.grayTextWeak}size={10}/>
89
- <T style={o.cardDateText}numberOfLines={1}>{ee}</T>
89
+ <T style={t.cardDateText}numberOfLines={1}>{oe}</T>
90
90
  </C>
91
91
  </C>
92
92
 
93
- <C style={o.footerRight}>
94
- {t.response!=null&&<C style={o.metaStatChip}>
93
+ <C style={t.footerRight}>
94
+ {o.response!=null&&<C style={t.metaStatChip}>
95
95
  <Le color={e.purple}size={9}/>
96
- <T style={o.metaStatText}>
97
- {He(t.response)}
96
+ <T style={t.metaStatText}>
97
+ {He(o.response)}
98
98
  </T>
99
99
  </C>}
100
100
 
101
- {t.duration!=null&&!H&&<C style={[o.metaStatChip,{backgroundColor:`${I}12`,borderColor:`${I}2E`}]}>
102
- <N color={I}size={9}/>
103
- <T style={[o.metaStatText,{color:I}]}>
104
- {t.duration}ms
101
+ {o.duration!=null&&!H&&<C style={[t.metaStatChip,{backgroundColor:`${I}12`,borderColor:`${I}2E`}]}>
102
+ <G color={I}size={9}/>
103
+ <T style={[t.metaStatText,{color:I}]}>
104
+ {o.duration}ms
105
105
  </T>
106
106
  </C>}
107
107
  </C>
108
108
  </C>
109
109
 
110
110
 
111
- <C style={o.waterfallContainer}>
112
- {typeof t.duration=="number"&&t.duration>0&&!H&&<C style={[o.waterfallBar,{width:`${Math.min(100,Math.max(6,t.duration/1200*100))}%`,backgroundColor:I}]}/>}
111
+ <C style={t.waterfallContainer}>
112
+ {typeof o.duration=="number"&&o.duration>0&&!H&&<C style={[t.waterfallBar,{width:`${Math.min(100,Math.max(6,o.duration/1200*100))}%`,backgroundColor:I}]}/>}
113
113
  </C>
114
114
  </C>
115
115
 
116
- {L&&<O.View pointerEvents="none"style={[U.absoluteFill,{backgroundColor:M,opacity:$}]}/>}
116
+ {L&&<O.View pointerEvents="none"style={[A.absoluteFill,{backgroundColor:v,opacity:$}]}/>}
117
117
  </Ee>
118
- </C>}const o=U.create({container:{paddingHorizontal:8,paddingVertical:4,height:126,justifyContent:"center"},card:{height:118,alignSelf:"stretch",borderRadius:10,overflow:"hidden",borderWidth:1,borderColor:e.dividerColor,shadowColor:e.shadowColorString},cardBody:{height:"100%",paddingHorizontal:8,paddingTop:8,paddingBottom:6,justifyContent:"space-between"},cardHeaderRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",height:22,minHeight:22,maxHeight:22},cardHeaderLeft:{flexDirection:"row",alignItems:"center",flex:1,marginRight:4,gap:4.5,minWidth:0,overflow:"hidden"},cardHeaderRight:{flexDirection:"row",alignItems:"center",gap:7,flexShrink:0},smallCheckbox:{width:15,height:15,borderRadius:4,borderWidth:1.5,borderColor:e.grayTextWeak,alignItems:"center",justifyContent:"center",backgroundColor:e.white},smallCheckboxChecked:{backgroundColor:e.purple,borderColor:e.purple},serialNumber:{fontFamily:S.interBold,color:e.grayTextWeak,fontSize:10},methodBadge:{paddingHorizontal:6,paddingVertical:2,borderRadius:5,alignItems:"center",justifyContent:"center"},methodBadgeText:{fontFamily:S.interBold,fontSize:9.5,lineHeight:12,letterSpacing:.5,color:e.white},chip:{paddingHorizontal:5.5,paddingVertical:1.5,borderRadius:4,borderWidth:1},chipText:{fontFamily:S.interBold,fontSize:9,lineHeight:12},statusPill:{flexDirection:"row",alignItems:"center",gap:3.5,paddingHorizontal:6,paddingVertical:2,borderRadius:6,borderWidth:1,flexShrink:0},statusPillText:{fontFamily:S.interBold,fontSize:9.5,lineHeight:12},globeBtn:{width:26,height:22,borderRadius:5,backgroundColor:`${e.grayTextWeak}14`,borderWidth:1,borderColor:`${e.grayTextWeak}28`,alignItems:"center",justifyContent:"center"},chevronWrapper:{paddingLeft:2,alignItems:"center",justifyContent:"center"},urlBox:{backgroundColor:e.grayBackground,borderRadius:7,borderWidth:1,borderColor:e.dividerColor,paddingHorizontal:7,paddingVertical:4.5,height:48,minHeight:48,maxHeight:48,justifyContent:"center",gap:2.5,overflow:"hidden"},urlMainRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",gap:4,minHeight:16},hostRow:{flexDirection:"row",alignItems:"center",gap:5,flex:1,minWidth:0},protoBadge:{paddingHorizontal:4,paddingVertical:1,borderRadius:3.5,borderWidth:1},protoBadgeText:{fontFamily:S.interBold,fontSize:8,lineHeight:10},hostText:{fontFamily:S.interBold,fontSize:11.5,lineHeight:15,color:e.primaryBlack,flex:1},urlBadgeRow:{flexDirection:"row",alignItems:"center",gap:4,flexShrink:0},jsonBadge:{backgroundColor:`${e.darkOrange}14`,borderColor:`${e.darkOrange}2E`,borderWidth:1,paddingHorizontal:4.5,paddingVertical:1,borderRadius:3.5},jsonBadgeText:{fontFamily:S.interBold,fontSize:8.5,color:e.darkOrange},dupBadge:{backgroundColor:`${e.purple}14`,borderColor:`${e.purple}2E`,borderWidth:1,paddingHorizontal:4.5,paddingVertical:1,borderRadius:3.5},dupBadgeText:{fontFamily:S.interBold,fontSize:8.5,color:e.purple},slugRow:{flexDirection:"row",alignItems:"center",minHeight:15},pathText:{fontFamily:S.interMedium,fontSize:10.5,lineHeight:14,color:e.slate600||e.grayText,flex:1},highlight:{backgroundColor:e.yellowHighlight,color:e.primaryBlack,borderRadius:2},cardFooterRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",height:18,minHeight:18,maxHeight:18,gap:4},footerLeft:{flexDirection:"row",alignItems:"center",gap:4.5,flex:1,minWidth:0,overflow:"hidden"},footerRight:{flexDirection:"row",alignItems:"center",gap:4,flexShrink:0},cardDateRow:{flexDirection:"row",alignItems:"center",gap:3.5},cardDateText:{fontFamily:S.interRegular,fontSize:10,lineHeight:13,color:e.slate400},metaStatChip:{flexDirection:"row",alignItems:"center",gap:3,backgroundColor:e.violetSoftBg,borderColor:e.violetSoftBorder,borderWidth:1,paddingHorizontal:5.5,paddingVertical:1.5,borderRadius:4},metaStatText:{fontFamily:S.interBold,color:e.violetSoftText,fontSize:9,lineHeight:12},waterfallContainer:{height:2.5,width:"100%",backgroundColor:e.graySurface,borderRadius:1.5,overflow:"hidden",marginTop:2},waterfallBar:{height:"100%",borderRadius:1.5}});function qe(t,B){return t.item===B.item&&t.isSelected===B.isSelected&&t.isNew===B.isNew&&t.searchStr===B.searchStr&&t.timelineMinStart===B.timelineMinStart&&t.timelineTotalRange===B.timelineTotalRange&&t.onPress===B.onPress&&t.onToggleSelect===B.onToggleSelect}export default re.memo(Ae,qe);
118
+ </C>}const t=A.create({container:{paddingHorizontal:8,paddingVertical:4,height:126,justifyContent:"center"},card:{height:118,alignSelf:"stretch",borderRadius:10,overflow:"hidden",borderWidth:1,borderColor:e.dividerColor,shadowColor:e.shadowColorString},cardBody:{height:"100%",paddingHorizontal:8,paddingTop:8,paddingBottom:6,justifyContent:"space-between"},cardHeaderRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",height:22,minHeight:22,maxHeight:22},cardHeaderLeft:{flexDirection:"row",alignItems:"center",flex:1,marginRight:4,gap:4.5,minWidth:0,overflow:"hidden"},cardHeaderRight:{flexDirection:"row",alignItems:"center",gap:7,flexShrink:0},smallCheckbox:{width:15,height:15,borderRadius:4,borderWidth:1.5,borderColor:e.grayTextWeak,alignItems:"center",justifyContent:"center",backgroundColor:e.white},smallCheckboxChecked:{backgroundColor:e.purple,borderColor:e.purple},serialNumber:{fontFamily:S.interBold,color:e.grayTextWeak,fontSize:10},methodBadge:{paddingHorizontal:6,paddingVertical:2,borderRadius:5,alignItems:"center",justifyContent:"center"},methodBadgeText:{fontFamily:S.interBold,fontSize:9.5,lineHeight:12,letterSpacing:.5,color:e.white},chip:{paddingHorizontal:5.5,paddingVertical:1.5,borderRadius:4,borderWidth:1},chipText:{fontFamily:S.interBold,fontSize:9,lineHeight:12},statusPill:{flexDirection:"row",alignItems:"center",gap:3.5,paddingHorizontal:6,paddingVertical:2,borderRadius:6,borderWidth:1,flexShrink:0},statusPillText:{fontFamily:S.interBold,fontSize:9.5,lineHeight:12},globeBtn:{width:26,height:22,borderRadius:5,backgroundColor:`${e.grayTextWeak}14`,borderWidth:1,borderColor:`${e.grayTextWeak}28`,alignItems:"center",justifyContent:"center"},chevronWrapper:{paddingLeft:2,alignItems:"center",justifyContent:"center"},urlBox:{backgroundColor:e.grayBackground,borderRadius:7,borderWidth:1,borderColor:e.dividerColor,paddingHorizontal:7,paddingVertical:4.5,height:48,minHeight:48,maxHeight:48,justifyContent:"center",gap:2.5,overflow:"hidden"},urlMainRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",gap:4,minHeight:16},hostRow:{flexDirection:"row",alignItems:"center",gap:5,flex:1,minWidth:0},protoBadge:{paddingHorizontal:4,paddingVertical:1,borderRadius:3.5,borderWidth:1},protoBadgeText:{fontFamily:S.interBold,fontSize:8,lineHeight:10},hostText:{fontFamily:S.interBold,fontSize:11.5,lineHeight:15,color:e.primaryBlack,flex:1},urlBadgeRow:{flexDirection:"row",alignItems:"center",gap:4,flexShrink:0},jsonBadge:{backgroundColor:`${e.darkOrange}14`,borderColor:`${e.darkOrange}2E`,borderWidth:1,paddingHorizontal:4.5,paddingVertical:1,borderRadius:3.5},jsonBadgeText:{fontFamily:S.interBold,fontSize:8.5,color:e.darkOrange},dupBadge:{backgroundColor:`${e.purple}14`,borderColor:`${e.purple}2E`,borderWidth:1,paddingHorizontal:4.5,paddingVertical:1,borderRadius:3.5},dupBadgeText:{fontFamily:S.interBold,fontSize:8.5,color:e.purple},slugRow:{flexDirection:"row",alignItems:"center",minHeight:15},pathText:{fontFamily:S.interMedium,fontSize:10.5,lineHeight:14,color:e.slate600||e.grayText,flex:1},highlight:{backgroundColor:e.yellowHighlight,color:e.primaryBlack,borderRadius:2},cardFooterRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",height:18,minHeight:18,maxHeight:18,gap:4},footerLeft:{flexDirection:"row",alignItems:"center",gap:4.5,flex:1,minWidth:0,overflow:"hidden"},footerRight:{flexDirection:"row",alignItems:"center",gap:4,flexShrink:0},cardDateRow:{flexDirection:"row",alignItems:"center",gap:3.5},cardDateText:{fontFamily:S.interRegular,fontSize:10,lineHeight:13,color:e.slate400},metaStatChip:{flexDirection:"row",alignItems:"center",gap:3,backgroundColor:e.violetSoftBg,borderColor:e.violetSoftBorder,borderWidth:1,paddingHorizontal:5.5,paddingVertical:1.5,borderRadius:4},metaStatText:{fontFamily:S.interBold,color:e.violetSoftText,fontSize:9,lineHeight:12},waterfallContainer:{height:2.5,width:"100%",backgroundColor:e.graySurface,borderRadius:1.5,overflow:"hidden",marginTop:2},waterfallBar:{height:"100%",borderRadius:1.5}});function qe(o,B){return o.item===B.item&&o.isSelected===B.isSelected&&o.isNew===B.isNew&&o.searchStr===B.searchStr&&o.onPress===B.onPress&&o.onToggleSelect===B.onToggleSelect}export default E.memo(Ae,qe);
@@ -1,5 +1,8 @@
1
1
  import React from 'react';
2
+ import { ActiveTab } from '../types';
2
3
  export interface SkeletonPlaceholderProps {
4
+ tab?: ActiveTab;
5
+ type?: 'card' | 'detail' | 'list' | 'table';
3
6
  cardCount?: number;
4
7
  }
5
8
  export declare const SkeletonPlaceholder: React.NamedExoticComponent<SkeletonPlaceholderProps>;
@@ -1,23 +1,54 @@
1
- import x,{useEffect as v,useRef as D}from"react";import{Animated as f,StyleSheet as L,View as S}from"react-native";import{AppColors as b}from"../styles/AppColors";export const SkeletonPlaceholder=x.memo(function({cardCount:B=4}){const C=D(new f.Value(.45)).current;return v(()=>{const V=f.loop(f.sequence([f.timing(C,{toValue:.95,duration:750,useNativeDriver:!1}),f.timing(C,{toValue:.45,duration:750,useNativeDriver:!1})]));return V.start(),()=>V.stop()},[C]),<S style={e.container}>
1
+ import x,{useEffect as A,useRef as D}from"react";import{Animated as L,StyleSheet as W,View as S}from"react-native";import{AppColors as V}from"../styles/AppColors";export const SkeletonPlaceholder=x.memo(function({tab:R="apis",type:v="card",cardCount:T=4}){const C=D(new L.Value(.4)).current;return A(()=>{const f=L.loop(L.sequence([L.timing(C,{toValue:.95,duration:700,useNativeDriver:!0}),L.timing(C,{toValue:.4,duration:700,useNativeDriver:!0})]));return f.start(),()=>f.stop()},[C]),v==="detail"?<S style={e.container}accessible={!0}accessibilityRole="progressbar"accessibilityLabel="Loading details, please wait"accessibilityLiveRegion="polite">
2
+ <L.View style={[e.detailHeader,{opacity:C}]}/>
3
+ <S style={e.chipStripSkeleton}>
4
+ <L.View style={[e.chipSkeleton,{width:70,opacity:C}]}/>
5
+ <L.View style={[e.chipSkeleton,{width:90,opacity:C}]}/>
6
+ <L.View style={[e.chipSkeleton,{width:80,opacity:C}]}/>
7
+ </S>
8
+ <L.View style={[e.detailCodeCard,{opacity:C}]}>
9
+ <S style={[e.urlLineLong,{width:"85%"}]}/>
10
+ <S style={[e.urlLineLong,{width:"70%",marginTop:8}]}/>
11
+ <S style={[e.urlLineLong,{width:"92%",marginTop:8}]}/>
12
+ <S style={[e.urlLineLong,{width:"60%",marginTop:8}]}/>
13
+ <S style={[e.urlLineLong,{width:"78%",marginTop:8}]}/>
14
+ </L.View>
15
+ </S>:R==="media"?<S style={e.container}accessible={!0}accessibilityRole="progressbar"accessibilityLabel="Loading media gallery, please wait"accessibilityLiveRegion="polite">
16
+ <S style={e.mediaGrid}>
17
+ {Array.from({length:6}).map((f,B)=><L.View key={`skeleton_media_${B}`}style={[e.mediaTile,{opacity:C}]}/>)}
18
+ </S>
19
+ </S>:R==="perf"?<S style={e.container}accessible={!0}accessibilityRole="progressbar"accessibilityLabel="Loading performance diagnostics, please wait"accessibilityLiveRegion="polite">
20
+ <L.View style={[e.heroCard,{opacity:C}]}>
21
+ <S style={e.cardTopRow}>
22
+ <S style={e.timeSkeleton}/>
23
+ <S style={e.statusBadgeSkeleton}/>
24
+ </S>
25
+ <S style={[e.urlLineLong,{height:32,marginTop:12}]}/>
26
+ </L.View>
27
+ <L.View style={[e.cardSkeleton,{opacity:C}]}>
28
+ <S style={[e.urlLineLong,{width:"40%"}]}/>
29
+ <S style={[e.urlLineShort,{marginTop:10}]}/>
30
+ <S style={[e.urlLineLong,{marginTop:8}]}/>
31
+ </L.View>
32
+ </S>:<S style={e.container}accessible={!0}accessibilityRole="progressbar"accessibilityLabel={`Loading ${R} data, please wait`}accessibilityLiveRegion="polite">
2
33
 
3
34
  <S style={e.toolbarSkeleton}>
4
- <f.View style={[e.searchBarSkeleton,{opacity:C}]}/>
35
+ <L.View style={[e.searchBarSkeleton,{opacity:C}]}/>
5
36
  <S style={e.actionButtonsRow}>
6
- <f.View style={[e.iconButtonSkeleton,{opacity:C}]}/>
7
- <f.View style={[e.iconButtonSkeleton,{opacity:C}]}/>
37
+ <L.View style={[e.iconButtonSkeleton,{opacity:C}]}/>
38
+ <L.View style={[e.iconButtonSkeleton,{opacity:C}]}/>
8
39
  </S>
9
40
  </S>
10
41
 
11
42
 
12
43
  <S style={e.chipStripSkeleton}>
13
- <f.View style={[e.chipSkeleton,{width:48,opacity:C}]}/>
14
- <f.View style={[e.chipSkeleton,{width:68,opacity:C}]}/>
15
- <f.View style={[e.chipSkeleton,{width:76,opacity:C}]}/>
16
- <f.View style={[e.chipSkeleton,{width:58,opacity:C}]}/>
44
+ <L.View style={[e.chipSkeleton,{width:48,opacity:C}]}/>
45
+ <L.View style={[e.chipSkeleton,{width:68,opacity:C}]}/>
46
+ <L.View style={[e.chipSkeleton,{width:76,opacity:C}]}/>
47
+ <L.View style={[e.chipSkeleton,{width:58,opacity:C}]}/>
17
48
  </S>
18
49
 
19
50
 
20
- {Array.from({length:B}).map((V,R)=><f.View key={`skeleton_card_${R}`}style={[e.cardSkeleton,{opacity:C}]}>
51
+ {Array.from({length:T}).map((f,B)=><L.View key={`skeleton_card_${B}`}style={[e.cardSkeleton,{opacity:C}]}>
21
52
 
22
53
  <S style={e.cardTopRow}>
23
54
  <S style={e.badgeGroup}>
@@ -36,5 +67,5 @@ import x,{useEffect as v,useRef as D}from"react";import{Animated as f,StyleSheet
36
67
  <S style={e.metaPillSkeleton}/>
37
68
  <S style={e.metaPillSkeleton}/>
38
69
  </S>
39
- </f.View>)}
40
- </S>});const e=L.create({container:{flex:1,paddingHorizontal:12,paddingTop:8},toolbarSkeleton:{flexDirection:"row",alignItems:"center",gap:8,marginBottom:8},searchBarSkeleton:{flex:1,height:36,borderRadius:8,backgroundColor:b.graySurface,borderWidth:1,borderColor:b.dividerColor},actionButtonsRow:{flexDirection:"row",gap:6},iconButtonSkeleton:{width:36,height:36,borderRadius:8,backgroundColor:b.graySurface,borderWidth:1,borderColor:b.dividerColor},chipStripSkeleton:{flexDirection:"row",gap:6,marginBottom:10},chipSkeleton:{height:24,borderRadius:6,backgroundColor:b.graySurface,borderWidth:1,borderColor:b.dividerColor},cardSkeleton:{backgroundColor:b.primaryLight,borderRadius:10,padding:12,marginBottom:8,borderWidth:1,borderColor:b.dividerColor},cardTopRow:{flexDirection:"row",justifyContent:"space-between",alignItems:"center",marginBottom:8},badgeGroup:{flexDirection:"row",alignItems:"center",gap:6},statusBadgeSkeleton:{width:38,height:18,borderRadius:4,backgroundColor:b.slate200},methodBadgeSkeleton:{width:44,height:18,borderRadius:4,backgroundColor:b.slate200},timeSkeleton:{width:48,height:12,borderRadius:4,backgroundColor:b.slate200},urlLineLong:{height:13,borderRadius:4,backgroundColor:b.slate200,marginBottom:5,width:"90%"},urlLineShort:{height:11,borderRadius:4,backgroundColor:b.slate200,marginBottom:8,width:"55%"},cardBottomRow:{flexDirection:"row",gap:8,marginTop:2},metaPillSkeleton:{width:52,height:14,borderRadius:4,backgroundColor:b.slate200}});export default SkeletonPlaceholder;
70
+ </L.View>)}
71
+ </S>});const e=W.create({container:{flex:1,paddingHorizontal:12,paddingTop:8},toolbarSkeleton:{flexDirection:"row",alignItems:"center",gap:8,marginBottom:8},searchBarSkeleton:{flex:1,height:36,borderRadius:8,backgroundColor:V.graySurface,borderWidth:1,borderColor:V.dividerColor},actionButtonsRow:{flexDirection:"row",gap:6},iconButtonSkeleton:{width:36,height:36,borderRadius:8,backgroundColor:V.graySurface,borderWidth:1,borderColor:V.dividerColor},chipStripSkeleton:{flexDirection:"row",gap:6,marginBottom:10},chipSkeleton:{height:24,borderRadius:6,backgroundColor:V.graySurface,borderWidth:1,borderColor:V.dividerColor},cardSkeleton:{backgroundColor:V.primaryLight,borderRadius:10,padding:12,marginBottom:8,borderWidth:1,borderColor:V.dividerColor},cardTopRow:{flexDirection:"row",justifyContent:"space-between",alignItems:"center",marginBottom:8},badgeGroup:{flexDirection:"row",alignItems:"center",gap:6},statusBadgeSkeleton:{width:38,height:18,borderRadius:4,backgroundColor:V.slate200},methodBadgeSkeleton:{width:44,height:18,borderRadius:4,backgroundColor:V.slate200},timeSkeleton:{width:48,height:12,borderRadius:4,backgroundColor:V.slate200},urlLineLong:{height:13,borderRadius:4,backgroundColor:V.slate200,marginBottom:5,width:"90%"},urlLineShort:{height:11,borderRadius:4,backgroundColor:V.slate200,marginBottom:8,width:"55%"},cardBottomRow:{flexDirection:"row",gap:8,marginTop:2},metaPillSkeleton:{width:52,height:14,borderRadius:4,backgroundColor:V.slate200},heroCard:{backgroundColor:V.primaryLight,borderRadius:12,padding:16,marginBottom:12,borderWidth:1,borderColor:V.dividerColor},detailHeader:{height:48,borderRadius:8,backgroundColor:V.graySurface,marginBottom:12},detailCodeCard:{flex:1,backgroundColor:V.primaryLight,borderRadius:10,padding:14,borderWidth:1,borderColor:V.dividerColor},mediaGrid:{flexDirection:"row",flexWrap:"wrap",gap:8},mediaTile:{width:"31%",aspectRatio:1,borderRadius:8,backgroundColor:V.graySurface,borderWidth:1,borderColor:V.dividerColor}});export default SkeletonPlaceholder;
@@ -1,3 +1,3 @@
1
- export declare const ENC_MID = "df8ace0290a695bd05986213";
2
- export declare const ENC_SEC = "db93cb0186b1f7bb0ba63a0d0a64997586849455ce37";
3
- export declare const TELEMETRY_SALT = "rn-inapp-inspector-telemetry-v1";
1
+ export declare const ENC_MID = "";
2
+ export declare const ENC_SEC = "";
3
+ export declare const TELEMETRY_SALT = "";
@@ -1 +1 @@
1
- export const ENC_MID="df8ace0290a695bd05986213",ENC_SEC="db93cb0186b1f7bb0ba63a0d0a64997586849455ce37",TELEMETRY_SALT="rn-inapp-inspector-telemetry-v1";
1
+ export const ENC_MID="",ENC_SEC="",TELEMETRY_SALT="";
@@ -1 +1 @@
1
- export declare const LIB_VERSION = "2.5.13";
1
+ export declare const LIB_VERSION = "2.5.15";
@@ -1 +1 @@
1
- export const LIB_VERSION="2.5.13";
1
+ export const LIB_VERSION="2.5.15";
@@ -1 +1 @@
1
- const d=["apis","logs","perf","analytics","redux","storage","device","crash","debugging","media","socket"];let u=null;export function getFirebaseRemoteConfig(e){if(e&&typeof e=="object")return u=e,e;if(u)return u;try{const n=require("@react-native-firebase/remote-config"),t=typeof n.default=="function"?n.default():typeof n=="function"?n():n;return u=t,t}catch{return null}}export function isFirebaseRemoteConfigAvailable(e){return!!getFirebaseRemoteConfig(e)}function l(e){if(e!=null){if(typeof e=="boolean")return e;if(typeof e=="number")return e!==0;if(typeof e=="string"){const n=e.trim().toLowerCase();if(n==="true"||n==="1"||n==="enabled"||n==="on")return!0;if(n==="false"||n==="0"||n==="disabled"||n==="off")return!1;try{return JSON.parse(e)}catch{return}}if(typeof e.asBoolean=="function")return e.asBoolean();if(typeof e.asString=="function"){const n=e.asString(),t=n.trim().toLowerCase();if(t==="true"||t==="1"||t==="enabled"||t==="on")return!0;if(t==="false"||t==="0"||t==="disabled"||t==="off")return!1;try{return JSON.parse(n)}catch{return}}}}export async function fetchRemoteConfigSettings(e,n=8e3){const t=getFirebaseRemoteConfig(e);if(!t)return null;try{const y=(async()=>{typeof t.fetchAndActivate=="function"?await t.fetchAndActivate():(typeof t.fetch=="function"&&await t.fetch(),typeof t.activate=="function"&&await t.activate())})(),_=new Promise((o,r)=>setTimeout(()=>r(new Error("Remote Config fetch timeout")),n));await Promise.race([y,_]).catch(()=>{});const s=o=>{if(typeof t.getValue=="function")try{return t.getValue(o)}catch{return}return t[o]},f={},i={},b=["inspector_modules","inapp_inspector_modules","react_native_inapp_inspector_modules"];for(const o of b){const r=s(o),c=l(r);if(c&&typeof c=="object")for(const a of d)typeof c[a]=="boolean"&&(i[a]=c[a])}for(const o of d){const r=[`inspector_module_${o}`,`inapp_inspector_${o}`,`inspector_${o}`,`inapp_inspector_module_${o}`,`rn_inspector_${o}`];for(const c of r){const a=s(c),p=l(a);if(typeof p=="boolean"){i[o]=p;break}}}Object.keys(i).length>0&&(i.apis===void 0&&(i.apis=!0),f.modules=i);const g=["inspector_capture_widget_enabled","inapp_inspector_capture_widget","inspector_floating_capture_enabled"];for(const o of g){const r=l(s(o));if(typeof r=="boolean"){f.captureWidgetEnabled=r;break}}const m=["inspector_enabled","inapp_inspector_enabled"];for(const o of m){const r=l(s(o));if(typeof r=="boolean"){f.enabled=r;break}}return Object.keys(f).length>0?f:null}catch{return null}}export async function fetchRemoteConfigModuleStatus(e,n=8e3){return(await fetchRemoteConfigSettings(e,n))?.modules||null}
1
+ const d=["apis","logs","perf","analytics","redux","storage","device","crash","media","socket"];let u=null;export function getFirebaseRemoteConfig(e){if(e&&typeof e=="object")return u=e,e;if(u)return u;try{const n=require("@react-native-firebase/remote-config"),t=typeof n.default=="function"?n.default():typeof n=="function"?n():n;return u=t,t}catch{return null}}export function isFirebaseRemoteConfigAvailable(e){return!!getFirebaseRemoteConfig(e)}function l(e){if(e!=null){if(typeof e=="boolean")return e;if(typeof e=="number")return e!==0;if(typeof e=="string"){const n=e.trim().toLowerCase();if(n==="true"||n==="1"||n==="enabled"||n==="on")return!0;if(n==="false"||n==="0"||n==="disabled"||n==="off")return!1;try{return JSON.parse(e)}catch{return}}if(typeof e.asBoolean=="function")return e.asBoolean();if(typeof e.asString=="function"){const n=e.asString(),t=n.trim().toLowerCase();if(t==="true"||t==="1"||t==="enabled"||t==="on")return!0;if(t==="false"||t==="0"||t==="disabled"||t==="off")return!1;try{return JSON.parse(n)}catch{return}}}}export async function fetchRemoteConfigSettings(e,n=8e3){const t=getFirebaseRemoteConfig(e);if(!t)return null;try{const y=(async()=>{typeof t.fetchAndActivate=="function"?await t.fetchAndActivate():(typeof t.fetch=="function"&&await t.fetch(),typeof t.activate=="function"&&await t.activate())})(),_=new Promise((o,r)=>setTimeout(()=>r(new Error("Remote Config fetch timeout")),n));await Promise.race([y,_]).catch(()=>{});const s=o=>{if(typeof t.getValue=="function")try{return t.getValue(o)}catch{return}return t[o]},f={},i={},b=["inspector_modules","inapp_inspector_modules","react_native_inapp_inspector_modules"];for(const o of b){const r=s(o),c=l(r);if(c&&typeof c=="object")for(const a of d)typeof c[a]=="boolean"&&(i[a]=c[a])}for(const o of d){const r=[`inspector_module_${o}`,`inapp_inspector_${o}`,`inspector_${o}`,`inapp_inspector_module_${o}`,`rn_inspector_${o}`];for(const c of r){const a=s(c),p=l(a);if(typeof p=="boolean"){i[o]=p;break}}}Object.keys(i).length>0&&(i.apis===void 0&&(i.apis=!0),f.modules=i);const m=["inspector_capture_widget_enabled","inapp_inspector_capture_widget","inspector_floating_capture_enabled"];for(const o of m){const r=l(s(o));if(typeof r=="boolean"){f.captureWidgetEnabled=r;break}}const g=["inspector_enabled","inapp_inspector_enabled"];for(const o of g){const r=l(s(o));if(typeof r=="boolean"){f.enabled=r;break}}return Object.keys(f).length>0?f:null}catch{return null}}export async function fetchRemoteConfigModuleStatus(e,n=8e3){return(await fetchRemoteConfigSettings(e,n))?.modules||null}