react-native-inapp-inspector 2.3.24 → 2.3.25

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 (145) hide show
  1. package/dist/commonjs/components/AnalyticsDetail.js +8 -8
  2. package/dist/commonjs/components/AnalyticsEventCard.js +11 -8
  3. package/dist/commonjs/components/AppHeaderLogo.js +1 -1
  4. package/dist/commonjs/components/BrandSquareIcon.js +12 -12
  5. package/dist/commonjs/components/ConsoleLogCard.d.ts +1 -0
  6. package/dist/commonjs/components/ConsoleLogCard.js +92 -80
  7. package/dist/commonjs/components/EndOfListFooter.d.ts +5 -1
  8. package/dist/commonjs/components/EndOfListFooter.js +27 -5
  9. package/dist/commonjs/components/Inspector/AnalyticsTab.js +30 -298
  10. package/dist/commonjs/components/Inspector/ConsoleTab.js +38 -93
  11. package/dist/commonjs/components/Inspector/CrashDetail.js +12 -12
  12. package/dist/commonjs/components/Inspector/CrashTab.js +43 -33
  13. package/dist/commonjs/components/Inspector/DebuggingTab.js +9 -9
  14. package/dist/commonjs/components/Inspector/DeviceInfoTab.js +54 -52
  15. package/dist/commonjs/components/Inspector/InspectorHeader.js +1 -1
  16. package/dist/commonjs/components/Inspector/MainScreen.js +23 -25
  17. package/dist/commonjs/components/Inspector/MediaGalleryTab.js +1 -1
  18. package/dist/commonjs/components/Inspector/MediaPreviewModal.js +3 -3
  19. package/dist/commonjs/components/Inspector/NetworkTab.js +31 -31
  20. package/dist/commonjs/components/Inspector/NpmStarPrompt.js +3 -3
  21. package/dist/commonjs/components/Inspector/NpmUpdateToast.js +21 -22
  22. package/dist/commonjs/components/Inspector/ReduxTab.js +110 -97
  23. package/dist/commonjs/components/Inspector/SettingsPanel.js +48 -100
  24. package/dist/commonjs/components/Inspector/StorageTab.js +56 -52
  25. package/dist/commonjs/components/Inspector/TabBar.js +29 -26
  26. package/dist/commonjs/components/JsonViewer.js +169 -164
  27. package/dist/commonjs/components/LogCard.js +34 -38
  28. package/dist/commonjs/components/LogSyntaxHighlighter.js +3 -3
  29. package/dist/commonjs/components/SegmentedTabs.d.ts +4 -1
  30. package/dist/commonjs/components/SegmentedTabs.js +8 -8
  31. package/dist/commonjs/constants/index.js +1 -1
  32. package/dist/commonjs/constants/version.d.ts +1 -1
  33. package/dist/commonjs/constants/version.js +1 -1
  34. package/dist/commonjs/customHooks/networkLogger.js +1 -2
  35. package/dist/commonjs/helpers/index.d.ts +6 -0
  36. package/dist/commonjs/helpers/index.js +4 -4
  37. package/dist/commonjs/helpers/memoryManager.d.ts +0 -1
  38. package/dist/commonjs/helpers/memoryManager.js +1 -1
  39. package/dist/commonjs/helpers/remoteConfig.js +1 -1
  40. package/dist/commonjs/helpers/settingsStore.js +1 -1
  41. package/dist/commonjs/i18n/index.d.ts +35 -0
  42. package/dist/commonjs/i18n/index.js +1 -1
  43. package/dist/commonjs/i18n/locales/ar.json +1 -0
  44. package/dist/commonjs/i18n/locales/de.json +1 -0
  45. package/dist/commonjs/i18n/locales/en.json +1 -1
  46. package/dist/commonjs/i18n/locales/es.json +1 -0
  47. package/dist/commonjs/i18n/locales/fr.json +1 -0
  48. package/dist/commonjs/i18n/locales/hi.json +1 -0
  49. package/dist/commonjs/i18n/locales/ja.json +1 -0
  50. package/dist/commonjs/i18n/locales/ko.json +1 -0
  51. package/dist/commonjs/i18n/locales/pt.json +1 -0
  52. package/dist/commonjs/i18n/locales/ru.json +1 -0
  53. package/dist/commonjs/i18n/locales/zh.json +1 -0
  54. package/dist/commonjs/index.d.ts +2 -4
  55. package/dist/commonjs/index.js +2 -2
  56. package/dist/commonjs/styles/AppColors.d.ts +40 -0
  57. package/dist/commonjs/styles/AppColors.js +1 -1
  58. package/dist/commonjs/styles/index.js +1 -1
  59. package/dist/commonjs/types/enums.d.ts +0 -20
  60. package/dist/commonjs/types/enums.js +1 -1
  61. package/dist/esm/components/AnalyticsDetail.js +75 -75
  62. package/dist/esm/components/AnalyticsEventCard.js +20 -17
  63. package/dist/esm/components/AppHeaderLogo.js +5 -5
  64. package/dist/esm/components/BrandSquareIcon.js +39 -39
  65. package/dist/esm/components/ConsoleLogCard.d.ts +1 -0
  66. package/dist/esm/components/ConsoleLogCard.js +98 -86
  67. package/dist/esm/components/EndOfListFooter.d.ts +5 -1
  68. package/dist/esm/components/EndOfListFooter.js +36 -14
  69. package/dist/esm/components/Inspector/AnalyticsTab.js +47 -315
  70. package/dist/esm/components/Inspector/ConsoleTab.js +61 -116
  71. package/dist/esm/components/Inspector/CrashDetail.js +49 -49
  72. package/dist/esm/components/Inspector/CrashTab.js +75 -65
  73. package/dist/esm/components/Inspector/DebuggingTab.js +31 -31
  74. package/dist/esm/components/Inspector/DeviceInfoTab.js +146 -144
  75. package/dist/esm/components/Inspector/InspectorHeader.js +5 -5
  76. package/dist/esm/components/Inspector/MainScreen.js +51 -53
  77. package/dist/esm/components/Inspector/MediaGalleryTab.js +1 -1
  78. package/dist/esm/components/Inspector/MediaPreviewModal.js +31 -31
  79. package/dist/esm/components/Inspector/NetworkTab.js +63 -63
  80. package/dist/esm/components/Inspector/NpmStarPrompt.js +42 -42
  81. package/dist/esm/components/Inspector/NpmUpdateToast.js +45 -46
  82. package/dist/esm/components/Inspector/ReduxTab.js +163 -150
  83. package/dist/esm/components/Inspector/SettingsPanel.js +136 -188
  84. package/dist/esm/components/Inspector/StorageTab.js +88 -84
  85. package/dist/esm/components/Inspector/TabBar.js +37 -34
  86. package/dist/esm/components/JsonViewer.js +173 -168
  87. package/dist/esm/components/LogCard.js +38 -42
  88. package/dist/esm/components/LogSyntaxHighlighter.js +1 -1
  89. package/dist/esm/components/SegmentedTabs.d.ts +4 -1
  90. package/dist/esm/components/SegmentedTabs.js +8 -8
  91. package/dist/esm/constants/index.js +1 -1
  92. package/dist/esm/constants/version.d.ts +1 -1
  93. package/dist/esm/constants/version.js +1 -1
  94. package/dist/esm/customHooks/networkLogger.js +1 -2
  95. package/dist/esm/helpers/index.d.ts +6 -0
  96. package/dist/esm/helpers/index.js +4 -4
  97. package/dist/esm/helpers/memoryManager.d.ts +0 -1
  98. package/dist/esm/helpers/memoryManager.js +1 -1
  99. package/dist/esm/helpers/remoteConfig.js +1 -1
  100. package/dist/esm/helpers/settingsStore.js +1 -1
  101. package/dist/esm/i18n/index.d.ts +35 -0
  102. package/dist/esm/i18n/index.js +1 -1
  103. package/dist/esm/i18n/locales/ar.json +1 -0
  104. package/dist/esm/i18n/locales/de.json +1 -0
  105. package/dist/esm/i18n/locales/en.json +1 -1
  106. package/dist/esm/i18n/locales/es.json +1 -0
  107. package/dist/esm/i18n/locales/fr.json +1 -0
  108. package/dist/esm/i18n/locales/hi.json +1 -0
  109. package/dist/esm/i18n/locales/ja.json +1 -0
  110. package/dist/esm/i18n/locales/ko.json +1 -0
  111. package/dist/esm/i18n/locales/pt.json +1 -0
  112. package/dist/esm/i18n/locales/ru.json +1 -0
  113. package/dist/esm/i18n/locales/zh.json +1 -0
  114. package/dist/esm/index.d.ts +2 -4
  115. package/dist/esm/index.js +5 -5
  116. package/dist/esm/styles/AppColors.d.ts +40 -0
  117. package/dist/esm/styles/AppColors.js +1 -1
  118. package/dist/esm/styles/index.js +1 -1
  119. package/dist/esm/types/enums.d.ts +0 -20
  120. package/dist/esm/types/enums.js +1 -1
  121. package/package.json +1 -15
  122. package/dist/commonjs/bundle.d.ts +0 -2
  123. package/dist/commonjs/bundle.js +0 -1
  124. package/dist/commonjs/components/Inspector/BundleTab.d.ts +0 -48
  125. package/dist/commonjs/components/Inspector/BundleTab.js +0 -1297
  126. package/dist/commonjs/components/Inspector/PerformanceTab.d.ts +0 -27
  127. package/dist/commonjs/components/Inspector/PerformanceTab.js +0 -454
  128. package/dist/commonjs/customHooks/bundleAnalyzer.d.ts +0 -115
  129. package/dist/commonjs/customHooks/bundleAnalyzer.js +0 -1
  130. package/dist/commonjs/customHooks/performanceTracker.d.ts +0 -144
  131. package/dist/commonjs/customHooks/performanceTracker.js +0 -63
  132. package/dist/commonjs/performance.d.ts +0 -2
  133. package/dist/commonjs/performance.js +0 -1
  134. package/dist/esm/bundle.d.ts +0 -2
  135. package/dist/esm/bundle.js +0 -1
  136. package/dist/esm/components/Inspector/BundleTab.d.ts +0 -48
  137. package/dist/esm/components/Inspector/BundleTab.js +0 -1297
  138. package/dist/esm/components/Inspector/PerformanceTab.d.ts +0 -27
  139. package/dist/esm/components/Inspector/PerformanceTab.js +0 -454
  140. package/dist/esm/customHooks/bundleAnalyzer.d.ts +0 -115
  141. package/dist/esm/customHooks/bundleAnalyzer.js +0 -1
  142. package/dist/esm/customHooks/performanceTracker.d.ts +0 -144
  143. package/dist/esm/customHooks/performanceTracker.js +0 -63
  144. package/dist/esm/performance.d.ts +0 -2
  145. package/dist/esm/performance.js +0 -1
@@ -1,14 +1,14 @@
1
- import J,{useCallback as de,useMemo as Q,useRef as Oe}from"react";import{FlatList as Ne,Platform as De,Pressable as Ee,ScrollView as He,Text as I,TextInput as Ae,View as S}from"react-native";import{useInspector as Me}from"./InspectorContext";import D from"../TouchableScale";import Se from"../AnimatedEntrance";import We from"../DomainHeader";import $e from"../LogCard";import Ge from"../EmptyState";import Qe from"../EndOfListFooter";import _e from"./NetworkFilterModal";import w from"../../styles";import{AppColors as e}from"../../styles/AppColors";import{AppFonts as B}from"../../styles/AppFonts";import{METHOD_COLORS as we}from"../../constants";import{useTranslation as Ue}from"../../i18n";import{SearchIcon as Ke,ClearIcon as Xe,TrashIcon as Je,SortArrowIcon as Ye,FilterIcon as Ce,CircleCheckIcon as Ze,CircleXIcon as So,LayersIcon as Co,HeaderPauseIcon as To,ClockIcon as Te,RequestIcon as Io,ResponseIcon as Fo,AtomIcon as Ro}from"../NetworkIcons";const Bo=J.memo(()=>{const{groupedData:Y,search:L,setSearch:q,searchScope:Vo,setSearchScope:xe,isRegexSearch:Po,setIsRegexSearch:Lo,isCaseSensitive:Oo,setIsCaseSensitive:vo,quickFilter:_,setQuickFilter:U,handleDelete:ke,selectedLogs:W,sortOrder:j,setSortOrder:$,statusFilters:T,setStatusFilters:H,methodFilters:x,setMethodFilters:A,availableMethods:No,filteredLogs:M,logs:P,toggleSectionFilter:Z,toggleSectionCollapse:ee,minStart:oe,totalRange:te,newLogIds:re,toggleSelect:le,setSelected:se,isNetworkPaused:K,setIsNetworkPaused:Ie}=Me(),{t:ae}=Ue(),Fe=Oe(null),[Re,X]=J.useState(!1),[ie,ne]=J.useState(!1),Be=Q(()=>({statusCodes:T.size>0?new Set(T):new Set(["all"]),methods:x.size>0?new Set(x):new Set(["all"]),latency:"all",protocol:"all",sortBy:j==="newest"?"time_desc":"time_asc"}),[T,x,j]),Ve=de(o=>{o.statusCodes.has("all")||o.statusCodes.size===0?H(new Set):H(new Set(o.statusCodes)),o.methods.has("all")||o.methods.size===0?A(new Set):A(new Set([...o.methods].map(C=>C))),o.sortBy==="time_asc"?$("oldest"):$("newest")},[H,A,$]),O=Q(()=>{let o=0,C=0,b=0,z=0,F=0,G=0;return P.forEach(V=>{const E=typeof V.status=="number"?V.status:parseInt(String(V.status),10);V.status===0||V.status==null||!isNaN(E)&&E>=400?o++:!isNaN(E)&&E>=200&&E<400&&C++,(V.duration||0)>=500&&b++;const R=(V.method||"").toUpperCase();R==="POST"&&z++,R==="GET"&&F++;const N=(V.url||"").toLowerCase(),ce=(V.client||"").toLowerCase();(N.includes("graphql")||ce.includes("graphql")||ce.includes("apollo"))&&G++}),{all:P.length,errors:o,success:C,slow:b,post:z,get:F,graphql:G}},[P]),Pe=Q(()=>[{id:"all",label:"All",count:O.all,color:e.purple},{id:"errors",label:"Errors",count:O.errors,color:e.errorColor},{id:"success",label:"2xx OK",count:O.success,color:e.greenColor},{id:"slow",label:"Slow >500ms",count:O.slow,color:e.warningIconGold},{id:"POST",label:"POST",count:O.post,color:we.POST||"#3B82F6"},{id:"GET",label:"GET",count:O.get,color:we.GET||"#10B981"},{id:"graphql",label:"GraphQL",count:O.graphql,color:"#E10098"}],[O]),v=Q(()=>{if(!P||P.length===0)return null;let o=0,C=0,b=0,z=0;const F=[];P.forEach(R=>{if(R.status!=null){C++;const N=typeof R.status=="number"?R.status:parseInt(String(R.status),10);isNaN(N)||N>=200&&N<400&&o++}typeof R.duration=="number"&&R.duration>0&&(F.push(R.duration),b+=R.duration)}),F.sort((R,N)=>R-N);const G=F.length>0?Math.round(b/F.length):0,V=F.length>0?F[Math.floor(F.length*.95)]:0;return{successRate:C>0?Math.round(o/C*100):100,avgDuration:G,p95:V,totalCount:P.length}},[P]),Le=de(({item:o,index:C})=>{if(o.type==="header")return<Se index={C}distance={8}>
2
- <We pageName={o.pageName}color={o.color}stats={o.stats}activeFilters={o.activeFilters}onToggleFilter={Z}isCollapsed={o.isCollapsed}onToggleCollapse={ee}isFirst={o.isFirst}timestamp={o.timestamp}/>
3
- </Se>;const{log:b,isLast:z,color:F}=o;return<Se index={C}distance={8}style={[w.treeNodeRow,z&&w.treeNodeRowLast]}>
4
- <S style={w.treeLines}>
5
- <S style={[w.modernTreeLine,{borderColor:F},z&&w.modernTreeLineLast]}/>
6
- {!z&&<S style={[w.modernTreeBranch,{borderColor:F}]}/>}
1
+ import U,{useCallback as ue,useMemo as A,useRef as Ee}from"react";import{FlatList as He,Platform as qe,Pressable as Ae,ScrollView as We,Text as I,TextInput as $e,View as S}from"react-native";import{useInspector as Ge}from"./InspectorContext";import M from"../TouchableScale";import Se from"../AnimatedEntrance";import Qe from"../DomainHeader";import _e from"../LogCard";import Ue from"../EmptyState";import Ke from"../EndOfListFooter";import Xe from"./NetworkFilterModal";import b from"../../styles";import{AppColors as e}from"../../styles/AppColors";import{AppFonts as B}from"../../styles/AppFonts";import{METHOD_COLORS as Ce}from"../../constants";import{useTranslation as Je}from"../../i18n";import{SearchIcon as Ye,ClearIcon as Ze,TrashIcon as St,SortArrowIcon as Ct,FilterIcon as Te,CircleCheckIcon as Tt,CircleXIcon as It,LayersIcon as Ft,HeaderPauseIcon as Rt,ClockIcon as Ie,RequestIcon as Bt,ResponseIcon as Vt,AtomIcon as Pt}from"../NetworkIcons";const Lt=U.memo(()=>{const{groupedData:j,search:L,setSearch:W,searchScope:Dt,setSearchScope:Fe,isRegexSearch:Ot,setIsRegexSearch:vt,isCaseSensitive:Nt,setIsCaseSensitive:Mt,quickFilter:K,setQuickFilter:X,handleDelete:Re,selectedLogs:$,sortOrder:J,setSortOrder:G,statusFilters:T,setStatusFilters:H,methodFilters:x,setMethodFilters:q,availableMethods:Et,filteredLogs:O,logs:P,toggleSectionFilter:ee,toggleSectionCollapse:te,minStart:oe,totalRange:re,newLogIds:le,toggleSelect:se,setSelected:ae,isNetworkPaused:Y,setIsNetworkPaused:Be}=Ge(),{t:ie}=Je(),Ve=Ee(null),[Q,Pe]=U.useState(100),Le=A(()=>{let t=0;const C=[];for(const w of j)w.type==="header"?C.push(w):w.type==="log"&&t<Q&&(C.push(w),t++);return C},[j,Q]),[De,Z]=U.useState(!1),[ne,ce]=U.useState(!1),Oe=A(()=>({statusCodes:T.size>0?new Set(T):new Set(["all"]),methods:x.size>0?new Set(x):new Set(["all"]),latency:"all",protocol:"all",sortBy:J==="newest"?"time_desc":"time_asc"}),[T,x,J]),ve=ue(t=>{t.statusCodes.has("all")||t.statusCodes.size===0?H(new Set):H(new Set(t.statusCodes)),t.methods.has("all")||t.methods.size===0?q(new Set):q(new Set([...t.methods].map(C=>C))),t.sortBy==="time_asc"?G("oldest"):G("newest")},[H,q,G]),D=A(()=>{let t=0,C=0,w=0,z=0,F=0,_=0;return P.forEach(V=>{const E=typeof V.status=="number"?V.status:parseInt(String(V.status),10);V.status===0||V.status==null||!isNaN(E)&&E>=400?t++:!isNaN(E)&&E>=200&&E<400&&C++,(V.duration||0)>=500&&w++;const R=(V.method||"").toUpperCase();R==="POST"&&z++,R==="GET"&&F++;const N=(V.url||"").toLowerCase(),de=(V.client||"").toLowerCase();(N.includes("graphql")||de.includes("graphql")||de.includes("apollo"))&&_++}),{all:P.length,errors:t,success:C,slow:w,post:z,get:F,graphql:_}},[P]),Ne=A(()=>[{id:"all",label:"All",count:D.all,color:e.purple},{id:"errors",label:"Errors",count:D.errors,color:e.errorColor},{id:"success",label:"2xx OK",count:D.success,color:e.greenColor},{id:"slow",label:"Slow >500ms",count:D.slow,color:e.warningIconGold},{id:"POST",label:"POST",count:D.post,color:Ce.POST||"#3B82F6"},{id:"GET",label:"GET",count:D.get,color:Ce.GET||"#10B981"},{id:"graphql",label:"GraphQL",count:D.graphql,color:e.graphqlPink}],[D]),v=A(()=>{if(!P||P.length===0)return null;let t=0,C=0,w=0,z=0;const F=[];P.forEach(R=>{if(R.status!=null){C++;const N=typeof R.status=="number"?R.status:parseInt(String(R.status),10);isNaN(N)||N>=200&&N<400&&t++}typeof R.duration=="number"&&R.duration>0&&(F.push(R.duration),w+=R.duration)}),F.sort((R,N)=>R-N);const _=F.length>0?Math.round(w/F.length):0,V=F.length>0?F[Math.floor(F.length*.95)]:0;return{successRate:C>0?Math.round(t/C*100):100,avgDuration:_,p95:V,totalCount:P.length}},[P]),Me=ue(({item:t,index:C})=>{if(t.type==="header")return<Se index={C}distance={8}>
2
+ <Qe pageName={t.pageName}color={t.color}stats={t.stats}activeFilters={t.activeFilters}onToggleFilter={ee}isCollapsed={t.isCollapsed}onToggleCollapse={te}isFirst={t.isFirst}timestamp={t.timestamp}/>
3
+ </Se>;const{log:w,isLast:z,color:F}=t;return<Se index={C}distance={8}style={[b.treeNodeRow,z&&b.treeNodeRowLast]}>
4
+ <S style={b.treeLines}>
5
+ <S style={[b.modernTreeLine,{borderColor:F},z&&b.modernTreeLineLast]}/>
6
+ {!z&&<S style={[b.modernTreeBranch,{borderColor:F}]}/>}
7
7
  </S>
8
- <S style={w.treeCardWrapper}>
9
- <$e item={b}isSelected={W.has(b.id)}onToggleSelect={le}onPress={()=>{se(b)}}timelineMinStart={oe}timelineTotalRange={te}isNew={re.has(b.id)}searchStr={L}/>
8
+ <S style={b.treeCardWrapper}>
9
+ <_e item={w}isSelected={$.has(w.id)}onToggleSelect={se}onPress={()=>{ae(w)}}timelineMinStart={oe}timelineTotalRange={re}isNew={le.has(w.id)}searchStr={L}/>
10
10
  </S>
11
- </Se>},[oe,te,re,W,le,L,Z,ee,se]);return<S style={{flex:1}}>
11
+ </Se>},[oe,re,le,$,se,L,ee,te,ae]);return<S style={{flex:1}}>
12
12
  <S style={{marginTop:6}}>
13
13
 
14
14
  {v!=null&&v.totalCount>0&&<S style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",backgroundColor:e.grayBackground,borderRadius:8,paddingHorizontal:10,paddingVertical:5.5,marginHorizontal:12,marginBottom:6,borderWidth:1,borderColor:e.dividerColor}}>
@@ -19,7 +19,7 @@ import J,{useCallback as de,useMemo as Q,useRef as Oe}from"react";import{FlatLis
19
19
  {v.successRate}%
20
20
  </I>
21
21
  <I style={{fontFamily:B.interRegular,fontSize:10,color:e.grayTextWeak}}>
22
- {ae("network.successRate")}
22
+ {ie("network.successRate")}
23
23
  </I>
24
24
  </S>
25
25
 
@@ -27,12 +27,12 @@ import J,{useCallback as de,useMemo as Q,useRef as Oe}from"react";import{FlatLis
27
27
 
28
28
 
29
29
  <S style={{flexDirection:"row",alignItems:"center",gap:4}}>
30
- <Te color={e.purple}size={10}/>
30
+ <Ie color={e.purple}size={10}/>
31
31
  <I style={{fontFamily:B.interBold,fontSize:10.5,color:e.purple}}>
32
32
  {v.avgDuration}ms
33
33
  </I>
34
34
  <I style={{fontFamily:B.interRegular,fontSize:10,color:e.grayTextWeak}}>
35
- {ae("network.avgLatency")}
35
+ {ie("network.avgLatency")}
36
36
  </I>
37
37
  </S>
38
38
 
@@ -50,75 +50,75 @@ import J,{useCallback as de,useMemo as Q,useRef as Oe}from"react";import{FlatLis
50
50
  </S>}
51
51
 
52
52
 
53
- <S style={w.toolbarRow}>
54
- <S style={[w.searchContainer,ie&&{borderColor:e.purple,borderWidth:1.5}]}>
55
- <Ke color={ie?e.purple:e.grayTextWeak}size={15}/>
56
- <Ae placeholder="Search URL, status, method, headers, body..."placeholderTextColor={e.grayTextWeak}value={L}onChangeText={q}onFocus={()=>ne(!0)}onBlur={()=>ne(!1)}style={w.searchInput}autoCorrect={!1}autoCapitalize="none"/>
53
+ <S style={b.toolbarRow}>
54
+ <S style={[b.searchContainer,ne&&{borderColor:e.purple,borderWidth:1.5}]}>
55
+ <Ye color={ne?e.purple:e.grayTextWeak}size={15}/>
56
+ <$e placeholder="Search URL, status, method, headers, body..."placeholderTextColor={e.grayTextWeak}value={L}onChangeText={W}onFocus={()=>ce(!0)}onBlur={()=>ce(!1)}style={b.searchInput}autoCorrect={!1}autoCapitalize="none"/>
57
57
 
58
58
  {L.length>0&&<S style={{flexDirection:"row",alignItems:"center",gap:4}}>
59
59
  <S style={{backgroundColor:`${e.purple}20`,borderRadius:10,paddingHorizontal:6,paddingVertical:1.5}}>
60
60
  <I style={{color:e.purple,fontSize:9.5,fontFamily:B.interBold}}>
61
- {M.length}
61
+ {O.length}
62
62
  </I>
63
63
  </S>
64
- <Ee onPress={()=>q("")}hitSlop={10}style={w.clearBtn}>
65
- <Xe color={e.grayTextWeak}size={13}/>
66
- </Ee>
64
+ <Ae onPress={()=>W("")}hitSlop={10}style={b.clearBtn}>
65
+ <Ze color={e.grayTextWeak}size={13}/>
66
+ </Ae>
67
67
  </S>}
68
68
  </S>
69
69
 
70
- <S style={w.toolbarRight}>
71
- <D style={[w.toolbarBtn,K&&{borderColor:`${e.darkOrange}50`,backgroundColor:`${e.darkOrange}18`}]}onPress={()=>Ie(o=>!o)}hitSlop={6}>
72
- <To isPaused={K}color={K?e.darkOrange:e.grayTextStrong}size={16}/>
73
- </D>
70
+ <S style={b.toolbarRight}>
71
+ <M style={[b.toolbarBtn,Y&&{borderColor:`${e.darkOrange}50`,backgroundColor:`${e.darkOrange}18`}]}onPress={()=>Be(t=>!t)}hitSlop={6}>
72
+ <Rt isPaused={Y}color={Y?e.darkOrange:e.grayTextStrong}size={16}/>
73
+ </M>
74
74
 
75
- <D style={[w.toolbarBtn,{borderColor:`${e.errorColor}38`,backgroundColor:`${e.errorColor}0F`}]}onPress={ke}hitSlop={6}>
76
- <Je color={e.errorColor}size={15}/>
77
- {W.size>0&&<S style={w.trashBadge}>
78
- <I style={w.trashBadgeText}>
79
- {W.size}
75
+ <M style={[b.toolbarBtn,{borderColor:`${e.errorColor}38`,backgroundColor:`${e.errorColor}0F`}]}onPress={Re}hitSlop={6}>
76
+ <St color={e.errorColor}size={15}/>
77
+ {$.size>0&&<S style={b.trashBadge}>
78
+ <I style={b.trashBadgeText}>
79
+ {$.size}
80
80
  </I>
81
81
  </S>}
82
- </D>
82
+ </M>
83
83
 
84
- <D style={w.toolbarBtn}onPress={()=>$(o=>o==="newest"?"oldest":"newest")}hitSlop={10}>
85
- <Ye direction={j==="newest"?"down":"up"}color={e.grayTextStrong}size={18}/>
86
- </D>
84
+ <M style={b.toolbarBtn}onPress={()=>G(t=>t==="newest"?"oldest":"newest")}hitSlop={10}>
85
+ <Ct direction={J==="newest"?"down":"up"}color={e.grayTextStrong}size={18}/>
86
+ </M>
87
87
 
88
- <D style={[w.toolbarBtn,(T.size>0||x.size>0)&&{borderColor:e.purple,backgroundColor:`${e.purple}15`}]}onPress={()=>X(!0)}hitSlop={6}>
89
- <Ce color={T.size>0||x.size>0?e.purple:e.grayTextStrong}size={16}/>
90
- {(T.size>0||x.size>0)&&<S style={w.activeFilterDot}/>}
91
- </D>
88
+ <M style={[b.toolbarBtn,(T.size>0||x.size>0)&&{borderColor:e.purple,backgroundColor:`${e.purple}15`}]}onPress={()=>Z(!0)}hitSlop={6}>
89
+ <Te color={T.size>0||x.size>0?e.purple:e.grayTextStrong}size={16}/>
90
+ {(T.size>0||x.size>0)&&<S style={b.activeFilterDot}/>}
91
+ </M>
92
92
  </S>
93
93
  </S>
94
94
 
95
95
 
96
96
  <S style={{flexDirection:"row",alignItems:"center",marginBottom:8,paddingHorizontal:12,gap:6}}>
97
- <He horizontal showsHorizontalScrollIndicator={!1}style={{flex:1}}contentContainerStyle={{flexDirection:"row",alignItems:"center",gap:6,paddingRight:6}}>
98
- {Pe.map(o=>{const C=_===o.id,b=o.color||e.purple,z=C?e.white:b;return<D key={o.id}onPress={()=>{U(C?"all":o.id)}}>
99
- <S style={{flexDirection:"row",alignItems:"center",paddingHorizontal:9,paddingVertical:4.5,borderRadius:8,backgroundColor:C?b:`${b}12`,borderWidth:1,borderColor:C?b:`${b}30`,gap:5}}>
100
- {o.id==="all"&&<Co size={11}color={z}/>}
101
- {o.id==="errors"&&<So size={11}color={z}/>}
102
- {o.id==="success"&&<Ze size={11}color={z}/>}
103
- {o.id==="slow"&&<Te size={11}color={z}/>}
104
- {o.id==="POST"&&<Io size={11}color={z}/>}
105
- {o.id==="GET"&&<Fo size={11}color={z}/>}
106
- {o.id==="graphql"&&<Ro size={11}color={z}/>}
97
+ <We horizontal showsHorizontalScrollIndicator={!1}style={{flex:1}}contentContainerStyle={{flexDirection:"row",alignItems:"center",gap:6,paddingRight:6}}>
98
+ {Ne.map(t=>{const C=K===t.id,w=t.color||e.purple,z=C?e.white:w;return<M key={t.id}onPress={()=>{X(C?"all":t.id)}}>
99
+ <S style={{flexDirection:"row",alignItems:"center",paddingHorizontal:9,paddingVertical:4.5,borderRadius:8,backgroundColor:C?w:`${w}12`,borderWidth:1,borderColor:C?w:`${w}30`,gap:5}}>
100
+ {t.id==="all"&&<Ft size={11}color={z}/>}
101
+ {t.id==="errors"&&<It size={11}color={z}/>}
102
+ {t.id==="success"&&<Tt size={11}color={z}/>}
103
+ {t.id==="slow"&&<Ie size={11}color={z}/>}
104
+ {t.id==="POST"&&<Bt size={11}color={z}/>}
105
+ {t.id==="GET"&&<Vt size={11}color={z}/>}
106
+ {t.id==="graphql"&&<Pt size={11}color={z}/>}
107
107
  <I style={{fontFamily:B.interBold,fontSize:10.5,color:C?e.white:e.primaryBlack}}>
108
- {o.label}
108
+ {t.label}
109
109
  </I>
110
- <S style={{backgroundColor:C?"rgba(255,255,255,0.25)":`${b}20`,paddingHorizontal:5,paddingVertical:1,borderRadius:8}}>
111
- <I style={{fontFamily:B.interBold,fontSize:9,color:C?e.white:b}}>
112
- {o.count}
110
+ <S style={{backgroundColor:C?"rgba(255,255,255,0.25)":`${w}20`,paddingHorizontal:5,paddingVertical:1,borderRadius:8}}>
111
+ <I style={{fontFamily:B.interBold,fontSize:9,color:C?e.white:w}}>
112
+ {t.count}
113
113
  </I>
114
114
  </S>
115
115
  </S>
116
- </D>})}
117
- </He>
116
+ </M>})}
117
+ </We>
118
118
 
119
- <D onPress={()=>X(!0)}style={{flexShrink:0}}>
119
+ <M onPress={()=>Z(!0)}style={{flexShrink:0}}>
120
120
  <S style={{flexDirection:"row",alignItems:"center",paddingHorizontal:10,paddingVertical:4.5,borderRadius:8,backgroundColor:T.size>0||x.size>0?`${e.purple}20`:e.grayBackground,borderWidth:1,borderColor:T.size>0||x.size>0?e.purple:e.grayBorderSecondary,gap:5,shadowColor:e.black,shadowOpacity:.04,shadowRadius:2,shadowOffset:{width:0,height:1},elevation:1}}>
121
- <Ce size={11}color={T.size>0||x.size>0?e.purple:e.grayText}/>
121
+ <Te size={11}color={T.size>0||x.size>0?e.purple:e.grayText}/>
122
122
  <I style={{fontFamily:B.interBold,fontSize:10.5,color:T.size>0||x.size>0?e.purple:e.grayText}}>
123
123
  More Filters
124
124
  </I>
@@ -128,24 +128,24 @@ import J,{useCallback as de,useMemo as Q,useRef as Oe}from"react";import{FlatLis
128
128
  </I>
129
129
  </S>}
130
130
  </S>
131
- </D>
131
+ </M>
132
132
  </S>
133
133
 
134
134
 
135
- {(_!=="all"||L.trim().length>0||T.size>0||x.size>0||M.length!==P.length)&&<S style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",marginHorizontal:12,marginBottom:8,paddingHorizontal:10,paddingVertical:5.5,backgroundColor:`${e.purple}10`,borderRadius:8,borderWidth:1,borderColor:`${e.purple}25`}}>
135
+ {(K!=="all"||L.trim().length>0||T.size>0||x.size>0||O.length!==P.length)&&<S style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",marginHorizontal:12,marginBottom:8,paddingHorizontal:10,paddingVertical:5.5,backgroundColor:`${e.purple}10`,borderRadius:8,borderWidth:1,borderColor:`${e.purple}25`}}>
136
136
  <I style={{fontFamily:B.interMedium,fontSize:10.5,color:e.purple}}>
137
- Showing {M.length} of {P.length} requests
137
+ Showing {O.length} of {P.length} requests
138
138
  </I>
139
- <D onPress={()=>{q(""),U("all"),H(new Set),A(new Set)}}>
139
+ <M onPress={()=>{W(""),X("all"),H(new Set),q(new Set)}}>
140
140
  <I style={{fontFamily:B.interBold,fontSize:10.5,color:e.errorColor}}>
141
141
  Clear All Filters
142
142
  </I>
143
- </D>
143
+ </M>
144
144
  </S>}
145
145
  </S>
146
146
 
147
- <Ne ref={Fe}data={Y}keyExtractor={o=>o?.id?.toString()}renderItem={Le}initialNumToRender={12}maxToRenderPerBatch={8}windowSize={5}removeClippedSubviews={De.OS==="android"}renderToHardwareTextureAndroid={!0}ListEmptyComponent={<Ge isSearch={L.length>0||T.size>0||x.size>0||_!=="all"}searchQuery={L}customTitle={L.length>0?"No matching API requests":"No network activity"}onClearSearch={()=>{q(""),H(new Set),A(new Set),U("all"),xe("all")}}/>}ListFooterComponent={Y.length>0?<Qe count={M.length}label="requests"/>:null}contentContainerStyle={[w.listContent,M.length===0&&{flexGrow:1}]}keyboardShouldPersistTaps="handled"/>
147
+ <He ref={Ve}data={Le}keyExtractor={t=>t?.id?.toString()}renderItem={Me}initialNumToRender={15}maxToRenderPerBatch={10}windowSize={9}removeClippedSubviews={qe.OS==="android"}renderToHardwareTextureAndroid={!0}ListEmptyComponent={<Ue isSearch={L.length>0||T.size>0||x.size>0||K!=="all"}searchQuery={L}customTitle={L.length>0?"No matching API requests":"No network activity"}onClearSearch={()=>{W(""),H(new Set),q(new Set),X("all"),Fe("all")}}/>}ListFooterComponent={j.length>0?<Ke count={Math.min(Q,O.length)}totalCount={O.length}label="requests"hasMore={O.length>Q}onLoadMore={()=>Pe(t=>t+10)}/>:null}contentContainerStyle={[b.listContent,O.length===0&&{flexGrow:1}]}keyboardShouldPersistTaps="handled"/>
148
148
 
149
149
 
150
- <_e visible={Re}onClose={()=>X(!1)}filters={Be}onApply={Ve}searchQuery={L}/>
151
- </S>});export default Bo;
150
+ <Xe visible={De}onClose={()=>Z(!1)}filters={Oe}onApply={ve}searchQuery={L}/>
151
+ </S>});export default Lt;
@@ -1,78 +1,78 @@
1
- import{useEffect as J,useRef as O,useState as Q}from"react";import{Animated as r,Linking as H,Modal as X,Platform as I,StyleSheet as z,Text as C,TouchableOpacity as P,View as S}from"react-native";import{AppColors as e}from"../../styles/AppColors";import{AppFonts as T}from"../../styles/AppFonts";import M from"../TouchableScale";import{loadSettings as x,saveSettings as B}from"../../helpers/settingsStore";import{trackTelemetryEvent as V}from"../../helpers/telemetry";import{StarIcon as N,CloseWhite as Z,CheckIcon as St,GitHubIcon as Ct,NpmIcon as Tt}from"../NetworkIcons";const xt=7200*60*1e3,Bt="https://github.com/vengatmacuser/react-native-inapp-inspector",kt="https://www.npmjs.com/package/react-native-inapp-inspector";export const NpmStarPrompt=()=>{const[L,E]=Q(!1),_=O(new r.Value(200)).current,A=O(new r.Value(0)).current,D=O(new r.Value(1)).current;J(()=>{let o=!0;async function Y(){try{const k=await x();if(k.starPromptActioned)return;const F=Date.now(),q=k.starPromptFirstSeen||F;k.starPromptFirstSeen||await B({...k,starPromptFirstSeen:F});const K=k.starPromptLastShown||q;F-K>=xt&&Math.random()<.65&&o&&setTimeout(()=>{o&&G()},1800)}catch{}}return Y(),()=>{o=!1}},[]);const G=async()=>{E(!0);try{const o=await x();await B({...o,starPromptLastShown:Date.now()}),V("npm_star_prompt_shown",{trigger:"5_day_interval",platform:I.OS})}catch{}r.parallel([r.spring(_,{toValue:0,friction:8,tension:50,useNativeDriver:!0}),r.timing(A,{toValue:1,duration:250,useNativeDriver:!0})]).start(),r.loop(r.sequence([r.timing(D,{toValue:1.15,duration:900,useNativeDriver:!0}),r.timing(D,{toValue:1,duration:900,useNativeDriver:!0})])).start()},R=o=>{r.parallel([r.timing(A,{toValue:0,duration:180,useNativeDriver:!0}),r.timing(_,{toValue:200,duration:180,useNativeDriver:!0})]).start(()=>{E(!1),o&&o()})},W=async()=>{try{const o=await x();await B({...o,starPromptActioned:!0}),V("npm_star_prompt_action",{action:"starred",platform:I.OS})}catch{}R(()=>{H.openURL(Bt).catch(()=>{H.openURL(kt).catch(()=>{})})})},U=async()=>{try{const o=await x();await B({...o,starPromptActioned:!0}),V("npm_star_prompt_action",{action:"already_starred",platform:I.OS})}catch{}R()},v=async()=>{try{const o=await x();await B({...o,starPromptLastShown:Date.now()}),V("npm_star_prompt_action",{action:"remind_later",platform:I.OS})}catch{}R()},$=async()=>{try{const o=await x();await B({...o,starPromptActioned:!0}),V("npm_star_prompt_action",{action:"dont_ask_again",platform:I.OS})}catch{}R()};return L?<X transparent visible={L}animationType="none"onRequestClose={v}>
2
- <r.View style={[t.backdrop,{opacity:A}]}>
3
- <P style={z.absoluteFill}activeOpacity={1}onPress={v}/>
1
+ import{useEffect as K,useRef as z,useState as J}from"react";import{Animated as r,Linking as j,Modal as Q,Platform as I,StyleSheet as F,Text as T,TouchableOpacity as P,View as S}from"react-native";import{AppColors as t}from"../../styles/AppColors";import{AppFonts as x}from"../../styles/AppFonts";import E from"../TouchableScale";import{loadSettings as C,saveSettings as B}from"../../helpers/settingsStore";import{trackTelemetryEvent as R}from"../../helpers/telemetry";import{StarIcon as M,CloseWhite as X,CheckIcon as Z,GitHubIcon as St,NpmIcon as Tt}from"../NetworkIcons";const xt=7200*60*1e3,Ct="https://github.com/vengatmacuser/react-native-inapp-inspector",Bt="https://www.npmjs.com/package/react-native-inapp-inspector";export const NpmStarPrompt=()=>{const[L,H]=J(!1),_=z(new r.Value(200)).current,A=z(new r.Value(0)).current,O=z(new r.Value(1)).current;K(()=>{let o=!0;async function $(){try{const k=await C();if(k.starPromptActioned)return;const D=Date.now(),Y=k.starPromptFirstSeen||D;k.starPromptFirstSeen||await B({...k,starPromptFirstSeen:D});const q=k.starPromptLastShown||Y;D-q>=xt&&Math.random()<.65&&o&&setTimeout(()=>{o&&N()},1800)}catch{}}return $(),()=>{o=!1}},[]);const N=async()=>{H(!0);try{const o=await C();await B({...o,starPromptLastShown:Date.now()}),R("npm_star_prompt_shown",{trigger:"5_day_interval",platform:I.OS})}catch{}r.parallel([r.spring(_,{toValue:0,friction:8,tension:50,useNativeDriver:!0}),r.timing(A,{toValue:1,duration:250,useNativeDriver:!0})]).start(),r.loop(r.sequence([r.timing(O,{toValue:1.15,duration:900,useNativeDriver:!0}),r.timing(O,{toValue:1,duration:900,useNativeDriver:!0})])).start()},V=o=>{r.parallel([r.timing(A,{toValue:0,duration:180,useNativeDriver:!0}),r.timing(_,{toValue:200,duration:180,useNativeDriver:!0})]).start(()=>{H(!1),o&&o()})},G=async()=>{try{const o=await C();await B({...o,starPromptActioned:!0}),R("npm_star_prompt_action",{action:"starred",platform:I.OS})}catch{}V(()=>{j.openURL(Ct).catch(()=>{j.openURL(Bt).catch(()=>{})})})},W=async()=>{try{const o=await C();await B({...o,starPromptActioned:!0}),R("npm_star_prompt_action",{action:"already_starred",platform:I.OS})}catch{}V()},v=async()=>{try{const o=await C();await B({...o,starPromptLastShown:Date.now()}),R("npm_star_prompt_action",{action:"remind_later",platform:I.OS})}catch{}V()},U=async()=>{try{const o=await C();await B({...o,starPromptActioned:!0}),R("npm_star_prompt_action",{action:"dont_ask_again",platform:I.OS})}catch{}V()};return L?<Q transparent visible={L}animationType="none"onRequestClose={v}>
2
+ <r.View style={[e.backdrop,{opacity:A}]}>
3
+ <P style={F.absoluteFill}activeOpacity={1}onPress={v}/>
4
4
 
5
- <r.View style={[t.cardContainer,{transform:[{translateY:_}]}]}>
5
+ <r.View style={[e.cardContainer,{transform:[{translateY:_}]}]}>
6
6
 
7
- <S style={t.headerIconWrapper}>
8
- <r.View style={[t.iconGlow,{transform:[{scale:D}]}]}/>
9
- <S style={t.iconCircle}>
10
- <N size={26}color="#F59E0B"/>
7
+ <S style={e.headerIconWrapper}>
8
+ <r.View style={[e.iconGlow,{transform:[{scale:O}]}]}/>
9
+ <S style={e.iconCircle}>
10
+ <M size={26}color={t.amber500}/>
11
11
  </S>
12
12
  </S>
13
13
 
14
14
 
15
- <P onPress={v}hitSlop={{top:10,bottom:10,left:10,right:10}}style={t.closeBtn}>
16
- <Z size={12}color={e.grayText}/>
15
+ <P onPress={v}hitSlop={{top:10,bottom:10,left:10,right:10}}style={e.closeBtn}>
16
+ <X size={12}color={t.grayText}/>
17
17
  </P>
18
18
 
19
19
 
20
- <S style={t.pillBadge}>
21
- <C style={t.pillBadgeText}>SUPPORT OPEN SOURCE</C>
20
+ <S style={e.pillBadge}>
21
+ <T style={e.pillBadgeText}>SUPPORT OPEN SOURCE</T>
22
22
  </S>
23
23
 
24
24
 
25
- <C style={t.title}>Enjoying In-App Inspector?</C>
26
- <C style={t.description}>
25
+ <T style={e.title}>Enjoying In-App Inspector?</T>
26
+ <T style={e.description}>
27
27
  If this debugging tool saves you time, please consider giving us a
28
28
  star on GitHub & npm. Your support helps us build more features!
29
- </C>
29
+ </T>
30
30
 
31
31
 
32
- <S style={t.metricsBar}>
33
- <S style={t.metricItem}>
34
- <Ct size={13}color={e.grayText}/>
35
- <C style={t.metricText}>GitHub Star</C>
32
+ <S style={e.metricsBar}>
33
+ <S style={e.metricItem}>
34
+ <St size={13}color={t.grayText}/>
35
+ <T style={e.metricText}>GitHub Star</T>
36
36
  </S>
37
- <S style={t.metricDot}/>
38
- <S style={t.metricItem}>
39
- <Tt size={13}color="#CB3837"/>
40
- <C style={t.metricText}>npm Package</C>
37
+ <S style={e.metricDot}/>
38
+ <S style={e.metricItem}>
39
+ <Tt size={13}color={t.npmRed}/>
40
+ <T style={e.metricText}>npm Package</T>
41
41
  </S>
42
- <S style={t.metricDot}/>
43
- <S style={t.metricItem}>
44
- <C style={t.metricText}>100% Free</C>
42
+ <S style={e.metricDot}/>
43
+ <S style={e.metricItem}>
44
+ <T style={e.metricText}>100% Free</T>
45
45
  </S>
46
46
  </S>
47
47
 
48
48
 
49
- <M accessible={!0}accessibilityRole="button"accessibilityLabel="Star on GitHub"onPress={W}style={t.primaryButton}>
50
- <S style={t.primaryButtonContent}>
51
- <N size={16}color={e.white}/>
52
- <C style={t.primaryButtonText}>Star on GitHub & npm</C>
49
+ <E accessible={!0}accessibilityRole="button"accessibilityLabel="Star on GitHub"onPress={G}style={e.primaryButton}>
50
+ <S style={e.primaryButtonContent}>
51
+ <M size={16}color={t.white}/>
52
+ <T style={e.primaryButtonText}>Star on GitHub & npm</T>
53
53
  </S>
54
- </M>
54
+ </E>
55
55
 
56
56
 
57
- <M accessible={!0}accessibilityRole="button"accessibilityLabel="I already starred"onPress={U}style={t.secondaryButton}>
58
- <S style={t.secondaryButtonContent}>
59
- <St size={13}color={e.purple}/>
60
- <C style={t.secondaryButtonText}>I Already Starred</C>
57
+ <E accessible={!0}accessibilityRole="button"accessibilityLabel="I already starred"onPress={W}style={e.secondaryButton}>
58
+ <S style={e.secondaryButtonContent}>
59
+ <Z size={13}color={t.purple}/>
60
+ <T style={e.secondaryButtonText}>I Already Starred</T>
61
61
  </S>
62
- </M>
62
+ </E>
63
63
 
64
64
 
65
- <S style={t.footerRow}>
65
+ <S style={e.footerRow}>
66
66
  <P onPress={v}hitSlop={{top:8,bottom:8,left:8,right:8}}>
67
- <C style={t.footerLinkText}>Remind Me Later</C>
67
+ <T style={e.footerLinkText}>Remind Me Later</T>
68
68
  </P>
69
69
 
70
- <S style={t.footerSeparator}/>
70
+ <S style={e.footerSeparator}/>
71
71
 
72
- <P onPress={$}hitSlop={{top:8,bottom:8,left:8,right:8}}>
73
- <C style={t.footerLinkTextMuted}>Don't Ask Again</C>
72
+ <P onPress={U}hitSlop={{top:8,bottom:8,left:8,right:8}}>
73
+ <T style={e.footerLinkTextMuted}>Don't Ask Again</T>
74
74
  </P>
75
75
  </S>
76
76
  </r.View>
77
77
  </r.View>
78
- </X>:null};const t=z.create({backdrop:{...z.absoluteFillObject,backgroundColor:"rgba(15, 23, 42, 0.65)",justifyContent:"center",alignItems:"center",paddingHorizontal:20,zIndex:99999},cardContainer:{width:"100%",maxWidth:380,backgroundColor:e.white,borderRadius:22,padding:22,alignItems:"center",shadowColor:e.black,shadowOffset:{width:0,height:8},shadowOpacity:.22,shadowRadius:20,elevation:12,borderWidth:1.5,borderColor:`${e.purple}25`},headerIconWrapper:{position:"relative",alignItems:"center",justifyContent:"center",marginBottom:12},iconGlow:{position:"absolute",width:68,height:68,borderRadius:34,backgroundColor:"#F59E0B22"},iconCircle:{width:54,height:54,borderRadius:27,backgroundColor:"#FEF3C7",borderWidth:2,borderColor:"#FDE68A",alignItems:"center",justifyContent:"center"},closeBtn:{position:"absolute",top:14,right:14,width:28,height:28,borderRadius:14,backgroundColor:e.grayBackground,alignItems:"center",justifyContent:"center"},pillBadge:{backgroundColor:`${e.purple}14`,paddingHorizontal:9,paddingVertical:3,borderRadius:10,marginBottom:8},pillBadgeText:{fontFamily:T.interBold,fontSize:9.5,color:e.purple,letterSpacing:.6},title:{fontFamily:T.interBold,fontSize:18,lineHeight:23,color:e.primaryBlack,textAlign:"center",marginBottom:6},description:{fontFamily:T.interRegular,fontSize:12.5,lineHeight:18,color:e.grayText,textAlign:"center",marginBottom:14,paddingHorizontal:8},metricsBar:{flexDirection:"row",alignItems:"center",justifyContent:"center",backgroundColor:e.grayBackground,paddingVertical:7,paddingHorizontal:14,borderRadius:10,marginBottom:16,gap:8},metricItem:{flexDirection:"row",alignItems:"center",gap:4},metricText:{fontFamily:T.interMedium,fontSize:11,color:e.primaryBlack},metricDot:{width:3.5,height:3.5,borderRadius:2,backgroundColor:e.dividerColor},primaryButton:{width:"100%",backgroundColor:e.purple,borderRadius:12,paddingVertical:12,alignItems:"center",justifyContent:"center",marginBottom:8,shadowColor:e.purple,shadowOffset:{width:0,height:4},shadowOpacity:.3,shadowRadius:8,elevation:4},primaryButtonContent:{flexDirection:"row",alignItems:"center",gap:7},primaryButtonText:{fontFamily:T.interBold,fontSize:14,color:e.white},secondaryButton:{width:"100%",backgroundColor:`${e.purple}10`,borderWidth:1,borderColor:`${e.purple}30`,borderRadius:12,paddingVertical:10,alignItems:"center",justifyContent:"center",marginBottom:14},secondaryButtonContent:{flexDirection:"row",alignItems:"center",gap:6},secondaryButtonText:{fontFamily:T.interBold,fontSize:13,color:e.purple},footerRow:{flexDirection:"row",alignItems:"center",justifyContent:"center",gap:12},footerLinkText:{fontFamily:T.interMedium,fontSize:11.5,color:e.grayText},footerSeparator:{width:1,height:12,backgroundColor:e.dividerColor},footerLinkTextMuted:{fontFamily:T.interRegular,fontSize:11.5,color:e.grayTextWeak}});export default NpmStarPrompt;
78
+ </Q>:null};const e=F.create({backdrop:{...F.absoluteFillObject,backgroundColor:"rgba(15, 23, 42, 0.65)",justifyContent:"center",alignItems:"center",paddingHorizontal:20,zIndex:99999},cardContainer:{width:"100%",maxWidth:380,backgroundColor:t.white,borderRadius:22,padding:22,alignItems:"center",shadowColor:t.black,shadowOffset:{width:0,height:8},shadowOpacity:.22,shadowRadius:20,elevation:12,borderWidth:1.5,borderColor:`${t.purple}25`},headerIconWrapper:{position:"relative",alignItems:"center",justifyContent:"center",marginBottom:12},iconGlow:{position:"absolute",width:68,height:68,borderRadius:34,backgroundColor:`${t.amber500}22`},iconCircle:{width:54,height:54,borderRadius:27,backgroundColor:t.amber100,borderWidth:2,borderColor:t.amber200,alignItems:"center",justifyContent:"center"},closeBtn:{position:"absolute",top:14,right:14,width:28,height:28,borderRadius:14,backgroundColor:t.grayBackground,alignItems:"center",justifyContent:"center"},pillBadge:{backgroundColor:`${t.purple}14`,paddingHorizontal:9,paddingVertical:3,borderRadius:10,marginBottom:8},pillBadgeText:{fontFamily:x.interBold,fontSize:9.5,color:t.purple,letterSpacing:.6},title:{fontFamily:x.interBold,fontSize:18,lineHeight:23,color:t.primaryBlack,textAlign:"center",marginBottom:6},description:{fontFamily:x.interRegular,fontSize:12.5,lineHeight:18,color:t.grayText,textAlign:"center",marginBottom:14,paddingHorizontal:8},metricsBar:{flexDirection:"row",alignItems:"center",justifyContent:"center",backgroundColor:t.grayBackground,paddingVertical:7,paddingHorizontal:14,borderRadius:10,marginBottom:16,gap:8},metricItem:{flexDirection:"row",alignItems:"center",gap:4},metricText:{fontFamily:x.interMedium,fontSize:11,color:t.primaryBlack},metricDot:{width:3.5,height:3.5,borderRadius:2,backgroundColor:t.dividerColor},primaryButton:{width:"100%",backgroundColor:t.purple,borderRadius:12,paddingVertical:12,alignItems:"center",justifyContent:"center",marginBottom:8,shadowColor:t.purple,shadowOffset:{width:0,height:4},shadowOpacity:.3,shadowRadius:8,elevation:4},primaryButtonContent:{flexDirection:"row",alignItems:"center",gap:7},primaryButtonText:{fontFamily:x.interBold,fontSize:14,color:t.white},secondaryButton:{width:"100%",backgroundColor:`${t.purple}10`,borderWidth:1,borderColor:`${t.purple}30`,borderRadius:12,paddingVertical:10,alignItems:"center",justifyContent:"center",marginBottom:14},secondaryButtonContent:{flexDirection:"row",alignItems:"center",gap:6},secondaryButtonText:{fontFamily:x.interBold,fontSize:13,color:t.purple},footerRow:{flexDirection:"row",alignItems:"center",justifyContent:"center",gap:12},footerLinkText:{fontFamily:x.interMedium,fontSize:11.5,color:t.grayText},footerSeparator:{width:1,height:12,backgroundColor:t.dividerColor},footerLinkTextMuted:{fontFamily:x.interRegular,fontSize:11.5,color:t.grayTextWeak}});export default NpmStarPrompt;
@@ -1,56 +1,55 @@
1
- import{useState as E,useEffect as J,useRef as V}from"react";import{Animated as i,Linking as K,StyleSheet as Q,Text as B,TouchableOpacity as N,View as F}from"react-native";import S,{Path as C}from"react-native-svg";import{useInspector as X}from"./InspectorContext";import{LIB_VERSION as Z}from"../../constants";import{NpmIcon as $}from"../NetworkIcons";import{copyToClipboard as tt}from"../../helpers";import{showToast as et}from"../../helpers/toast";import{AppFonts as ot}from"../../styles/AppFonts";const Ct=({size:e=13,color:o="#94A3B8"})=><S width={e}height={e}viewBox="0 0 24 24"fill="none">
2
- <C d="M18 6L6 18M6 6l12 12"stroke={o}strokeWidth="2.4"strokeLinecap="round"strokeLinejoin="round"/>
3
- </S>,Ft=({size:e=11,color:o="#94A3B8"})=><S width={e}height={e}viewBox="0 0 24 24"fill="none">
4
- <C d="M8 4v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2h-8a2 2 0 0 0-2 2z"stroke={o}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
5
- <C d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"stroke={o}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
6
- </S>,Bt=({size:e=11,color:o="#10B981"})=><S width={e}height={e}viewBox="0 0 24 24"fill="none">
7
- <C d="M20 6L9 17l-5-5"stroke={o}strokeWidth="2.4"strokeLinecap="round"strokeLinejoin="round"/>
8
- </S>,Tt=({size:e=11,color:o="#FFFFFF"})=><S width={e}height={e}viewBox="0 0 24 24"fill="none">
9
- <C d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"stroke={o}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
10
- <C d="M15 3h6v6"stroke={o}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
11
- <C d="M10 14L21 3"stroke={o}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
12
- </S>,P=7e3;export const NpmUpdateToast=()=>{const{updateAvailable:e,latestNpmVersion:o,showUpdateToast:L}=X(),[_,H]=E(!1),[U,j]=E(!1),[R,M]=E(!1),A=V(new i.Value(60)).current,O=V(new i.Value(0)).current,D=V(new i.Value(1)).current,W=V(null);J(()=>(L&&e&&o&&!_&&(j(!0),i.parallel([i.spring(A,{toValue:0,friction:8,tension:40,useNativeDriver:!0}),i.timing(O,{toValue:1,duration:250,useNativeDriver:!0})]).start(),D.setValue(1),i.timing(D,{toValue:0,duration:P,useNativeDriver:!1}).start(),W.current=setTimeout(()=>{I()},P)),()=>{W.current&&clearTimeout(W.current)}),[L,e,o,_]);const I=()=>{i.parallel([i.timing(O,{toValue:0,duration:180,useNativeDriver:!0}),i.timing(A,{toValue:60,duration:180,useNativeDriver:!0})]).start(()=>{j(!1),H(!0)})},Y=()=>{tt("npm install react-native-inapp-inspector@latest","Install Command"),M(!0),et("Copied npm install command!"),setTimeout(()=>{M(!1)},2e3)},q=()=>{K.openURL("https://www.npmjs.com/package/react-native-inapp-inspector").catch(()=>{}),I()};if(typeof __DEV__>"u"||!__DEV__||!L||!U||!e||!o)return null;const G=D.interpolate({inputRange:[0,1],outputRange:["0%","100%"]});return<i.View style={[t.container,{opacity:O,transform:[{translateY:A}]}]}>
13
- <F style={t.contentRow}>
1
+ import{useState as N,useEffect as G,useRef as R}from"react";import{Animated as r,Linking as J,StyleSheet as K,Text as S,TouchableOpacity as P,View as T}from"react-native";import B,{Path as C}from"react-native-svg";import{useInspector as Q}from"./InspectorContext";import{LIB_VERSION as X}from"../../constants";import{NpmIcon as Z}from"../NetworkIcons";import{copyToClipboard as ee}from"../../helpers";import{showToast as te}from"../../helpers/toast";import{AppColors as e}from"../../styles/AppColors";import{AppFonts as oe}from"../../styles/AppFonts";import{useTranslation as ie}from"../../i18n";const Ce=({size:t=13,color:i=e.slate400})=><B width={t}height={t}viewBox="0 0 24 24"fill="none">
2
+ <C d="M18 6L6 18M6 6l12 12"stroke={i}strokeWidth="2.4"strokeLinecap="round"strokeLinejoin="round"/>
3
+ </B>,Ve=({size:t=11,color:i=e.slate400})=><B width={t}height={t}viewBox="0 0 24 24"fill="none">
4
+ <C d="M8 4v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2h-8a2 2 0 0 0-2 2z"stroke={i}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
5
+ <C d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"stroke={i}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
6
+ </B>,Te=({size:t=11,color:i=e.greenColor})=><B width={t}height={t}viewBox="0 0 24 24"fill="none">
7
+ <C d="M20 6L9 17l-5-5"stroke={i}strokeWidth="2.4"strokeLinecap="round"strokeLinejoin="round"/>
8
+ </B>,Se=({size:t=11,color:i=e.white})=><B width={t}height={t}viewBox="0 0 24 24"fill="none">
9
+ <C d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"stroke={i}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
10
+ <C d="M15 3h6v6"stroke={i}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
11
+ <C d="M10 14L21 3"stroke={i}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
12
+ </B>,H=7e3;export const NpmUpdateToast=()=>{const{t}=ie(),{updateAvailable:i,latestNpmVersion:V,showUpdateToast:O}=Q(),[_,U]=N(!1),[F,j]=N(!1),[W,E]=N(!1),I=R(new r.Value(60)).current,D=R(new r.Value(0)).current,z=R(new r.Value(1)).current,A=R(null);G(()=>(O&&i&&V&&!_&&(j(!0),r.parallel([r.spring(I,{toValue:0,friction:8,tension:40,useNativeDriver:!0}),r.timing(D,{toValue:1,duration:250,useNativeDriver:!0})]).start(),z.setValue(1),r.timing(z,{toValue:0,duration:H,useNativeDriver:!1}).start(),A.current=setTimeout(()=>{M()},H)),()=>{A.current&&clearTimeout(A.current)}),[O,i,V,_]);const M=()=>{r.parallel([r.timing(D,{toValue:0,duration:180,useNativeDriver:!0}),r.timing(I,{toValue:60,duration:180,useNativeDriver:!0})]).start(()=>{j(!1),U(!0)})},$=()=>{ee("npm install react-native-inapp-inspector@latest","Install Command"),E(!0),te("Copied npm install command!"),setTimeout(()=>{E(!1)},2e3)},Y=()=>{J.openURL("https://www.npmjs.com/package/react-native-inapp-inspector").catch(()=>{}),M()};if(typeof __DEV__>"u"||!__DEV__||!O||!F||!i||!V)return null;const q=z.interpolate({inputRange:[0,1],outputRange:["0%","100%"]});return<r.View style={[o.container,{opacity:D,transform:[{translateY:I}]}]}>
13
+ <T style={o.contentRow}>
14
14
 
15
- <F style={t.npmIconContainer}>
16
- <$ size={15}color="#CB3837"/>
17
- </F>
15
+ <T style={o.npmIconContainer}>
16
+ <Z size={15}color={e.npmRed}/>
17
+ </T>
18
18
 
19
-
20
- <F style={t.textContainer}>
21
- <F style={t.titleRow}>
22
- <B style={t.titleText}>Update Available</B>
23
- <F style={t.versionPill}>
24
- <B style={t.versionPillText}>v{o}</B>
25
- </F>
26
- </F>
27
- <B style={t.subtitleText}numberOfLines={1}>
28
- Installed: v{Z} • New version is ready
29
- </B>
30
- </F>
19
+ <T style={o.textContainer}>
20
+ <T style={o.titleRow}>
21
+ <S style={o.titleText}>{t("header.newVersionAvailable","Update Available")}</S>
22
+ <T style={o.versionPill}>
23
+ <S style={o.versionPillText}>v{V}</S>
24
+ </T>
25
+ </T>
26
+ <S style={o.subtitleText}>
27
+ {t("header.updateAvailable",{latestVersion:V,currentVersion:X,defaultValue:`react-native-inapp-inspector v${V} is available on NPM.`})}
28
+ </S>
29
+ </T>
31
30
 
32
31
 
33
- <N style={t.copyButton}onPress={Y}hitSlop={6}activeOpacity={.75}>
34
- {R?<Bt size={11}color="#10B981"/>:<Ft size={11}color="#94A3B8"/>}
35
- <B style={[t.copyButtonText,R&&{color:"#10B981"}]}>
36
- {R?"Copied":"Copy"}
37
- </B>
38
- </N>
32
+ <P style={o.copyButton}onPress={$}activeOpacity={.7}hitSlop={{top:8,bottom:8,left:4,right:4}}>
33
+ {W?<Te size={11}color={e.greenColor}/>:<Ve size={11}color={e.slate400}/>}
34
+ <S style={[o.copyButtonText,W&&{color:e.greenColor}]}>
35
+ {W?t("common.copied","Copied"):t("header.copyCommand","Copy")}
36
+ </S>
37
+ </P>
39
38
 
40
39
 
41
- <N style={t.actionButton}onPress={q}activeOpacity={.8}>
42
- <B style={t.actionButtonText}>View</B>
43
- <Tt size={10}color="#FFFFFF"/>
44
- </N>
40
+ <P style={o.actionButton}onPress={Y}activeOpacity={.8}hitSlop={{top:8,bottom:8,left:4,right:4}}>
41
+ <S style={o.actionButtonText}>{t("header.viewNpm","View")}</S>
42
+ <Se size={10}color={e.white}/>
43
+ </P>
45
44
 
46
45
 
47
- <N style={t.closeButton}onPress={I}hitSlop={8}activeOpacity={.7}>
48
- <Ct size={12}color="#94A3B8"/>
49
- </N>
50
- </F>
46
+ <P style={o.closeButton}onPress={M}activeOpacity={.7}hitSlop={{top:10,bottom:10,left:10,right:10}}>
47
+ <Ce size={12}color={e.slate400}/>
48
+ </P>
49
+ </T>
51
50
 
52
51
 
53
- <F style={t.progressBarTrack}>
54
- <i.View style={[t.progressBarFill,{width:G}]}/>
55
- </F>
56
- </i.View>};const T={fontFamily:ot.interRegular},t=Q.create({container:{position:"absolute",bottom:24,left:14,right:14,backgroundColor:"#0F172A",borderRadius:16,borderWidth:1,borderColor:"#334155",shadowColor:"#000000",shadowOffset:{width:0,height:12},shadowOpacity:.4,shadowRadius:24,elevation:24,overflow:"hidden",zIndex:99999},contentRow:{flexDirection:"row",alignItems:"center",paddingVertical:11,paddingHorizontal:12,gap:8},npmIconContainer:{width:32,height:32,borderRadius:9,backgroundColor:"#FFFFFF",justifyContent:"center",alignItems:"center",borderWidth:1,borderColor:"#E2E8F0",flexShrink:0,shadowColor:"#000000",shadowOffset:{width:0,height:1},shadowOpacity:.15,shadowRadius:2,elevation:2},textContainer:{flex:1,minWidth:0},titleRow:{flexDirection:"row",alignItems:"center",gap:5},titleText:{fontSize:12.5,fontWeight:"700",color:"#F8FAFC",letterSpacing:-.2,...T},versionPill:{backgroundColor:"#7C3AED33",paddingHorizontal:5.5,paddingVertical:1.5,borderRadius:5,borderWidth:1,borderColor:"#8B5CF680"},versionPillText:{fontSize:10,fontWeight:"700",color:"#C4B5FD",...T},subtitleText:{fontSize:10.5,color:"#94A3B8",marginTop:1,...T},copyButton:{flexDirection:"row",alignItems:"center",gap:3.5,backgroundColor:"#1E293B",paddingVertical:5.5,paddingHorizontal:8,borderRadius:7,borderWidth:1,borderColor:"#334155",flexShrink:0},copyButtonText:{fontSize:10.5,fontWeight:"600",color:"#94A3B8",...T},actionButton:{flexDirection:"row",alignItems:"center",gap:3.5,backgroundColor:"#7C3AED",paddingVertical:5.5,paddingHorizontal:9,borderRadius:7,flexShrink:0,shadowColor:"#7C3AED",shadowOffset:{width:0,height:2},shadowOpacity:.35,shadowRadius:4,elevation:3},actionButtonText:{fontSize:11,fontWeight:"700",color:"#FFFFFF",...T},closeButton:{width:22,height:22,borderRadius:11,backgroundColor:"#1E293B",justifyContent:"center",alignItems:"center",flexShrink:0},progressBarTrack:{height:2.5,width:"100%",backgroundColor:"#1E293B"},progressBarFill:{height:"100%",backgroundColor:"#8B5CF6"}});export default NpmUpdateToast;
52
+ <T style={o.progressBarTrack}>
53
+ <r.View style={[o.progressBarFill,{width:q}]}/>
54
+ </T>
55
+ </r.View>};const L={fontFamily:oe.interRegular},o=K.create({container:{position:"absolute",bottom:24,left:14,right:14,backgroundColor:e.slate900,borderRadius:16,borderWidth:1,borderColor:e.slate700,shadowColor:e.black,shadowOffset:{width:0,height:12},shadowOpacity:.4,shadowRadius:24,elevation:24,overflow:"hidden",zIndex:99999},contentRow:{flexDirection:"row",alignItems:"center",paddingVertical:11,paddingHorizontal:12,gap:8},npmIconContainer:{width:32,height:32,borderRadius:9,backgroundColor:e.white,justifyContent:"center",alignItems:"center",borderWidth:1,borderColor:e.slate200,flexShrink:0,shadowColor:e.black,shadowOffset:{width:0,height:1},shadowOpacity:.15,shadowRadius:2,elevation:2},textContainer:{flex:1,minWidth:0},titleRow:{flexDirection:"row",alignItems:"center",gap:5},titleText:{fontSize:12.5,fontWeight:"700",color:e.slate50,letterSpacing:-.2,...L},versionPill:{backgroundColor:`${e.offerPurple}33`,paddingHorizontal:5.5,paddingVertical:1.5,borderRadius:5,borderWidth:1,borderColor:`${e.violet500}80`},versionPillText:{fontSize:10,fontWeight:"700",color:e.purpleLightMuted,...L},subtitleText:{fontSize:10.5,color:e.slate400,marginTop:1,...L},copyButton:{flexDirection:"row",alignItems:"center",gap:3.5,backgroundColor:e.slate800,paddingVertical:5.5,paddingHorizontal:8,borderRadius:7,borderWidth:1,borderColor:e.slate700,flexShrink:0},copyButtonText:{fontSize:10.5,fontWeight:"600",color:e.slate400,...L},actionButton:{flexDirection:"row",alignItems:"center",gap:3.5,backgroundColor:e.offerPurple,paddingVertical:5.5,paddingHorizontal:9,borderRadius:7,flexShrink:0,shadowColor:e.offerPurple,shadowOffset:{width:0,height:2},shadowOpacity:.35,shadowRadius:4,elevation:3},actionButtonText:{fontSize:11,fontWeight:"700",color:e.white,...L},closeButton:{width:22,height:22,borderRadius:11,backgroundColor:e.slate800,justifyContent:"center",alignItems:"center",flexShrink:0},progressBarTrack:{height:2.5,width:"100%",backgroundColor:e.slate800},progressBarFill:{height:"100%",backgroundColor:e.violet500}});export default NpmUpdateToast;