react-native-inapp-inspector 2.4.0 → 2.4.2

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 (231) hide show
  1. package/README.ar.md +163 -0
  2. package/README.de.md +163 -0
  3. package/README.es.md +164 -0
  4. package/README.fr.md +163 -0
  5. package/README.hi.md +163 -0
  6. package/README.ja.md +180 -0
  7. package/README.ko.md +163 -0
  8. package/README.md +340 -243
  9. package/README.pt-BR.md +163 -0
  10. package/README.ru.md +163 -0
  11. package/README.zh-CN.md +387 -0
  12. package/android/src/main/java/com/inappinspector/NetworkInspectorModule.kt +82 -21
  13. package/assets/banner_dark.svg +186 -0
  14. package/assets/banner_light.svg +186 -0
  15. package/assets/icon_circle.svg +148 -0
  16. package/assets/icon_square.svg +369 -0
  17. package/assets/inapp_inspector_icon.gif +0 -0
  18. package/assets/inapp_inspector_icon_original.gif +0 -0
  19. package/assets/social_preview.png +0 -0
  20. package/assets/walkthrough.gif +0 -0
  21. package/dist/commonjs/components/AnimatedBrandOwl.d.ts +7 -0
  22. package/dist/commonjs/components/AnimatedBrandOwl.js +175 -0
  23. package/dist/commonjs/components/AppHeaderLogo.d.ts +1 -0
  24. package/dist/commonjs/components/AppHeaderLogo.js +7 -5
  25. package/dist/commonjs/components/BrandSquareIcon.d.ts +5 -0
  26. package/dist/commonjs/components/BrandSquareIcon.js +139 -0
  27. package/dist/commonjs/components/ConsoleLogCard.d.ts +2 -1
  28. package/dist/commonjs/components/ConsoleLogCard.js +23 -39
  29. package/dist/commonjs/components/Inspector/AboutModal.js +44 -54
  30. package/dist/commonjs/components/Inspector/AnalyticsTab.js +16 -16
  31. package/dist/commonjs/components/Inspector/ConfirmationModal.d.ts +13 -0
  32. package/dist/commonjs/components/Inspector/ConfirmationModal.js +32 -0
  33. package/dist/commonjs/components/Inspector/ConsoleTab.js +15 -15
  34. package/dist/commonjs/components/Inspector/CrashTab.js +25 -23
  35. package/dist/commonjs/components/Inspector/DebuggingTab.js +17 -17
  36. package/dist/commonjs/components/Inspector/FabLauncher.js +22 -30
  37. package/dist/commonjs/components/Inspector/FeatureUnderDevNotice.js +2 -2
  38. package/dist/commonjs/components/Inspector/LanguageSelectorModal.d.ts +15 -0
  39. package/dist/commonjs/components/Inspector/LanguageSelectorModal.js +90 -0
  40. package/dist/commonjs/components/Inspector/MainScreen.js +46 -33
  41. package/dist/commonjs/components/Inspector/MediaGalleryTab.js +21 -19
  42. package/dist/commonjs/components/Inspector/MediaPreviewModal.js +85 -101
  43. package/dist/commonjs/components/Inspector/NetworkTab.js +50 -50
  44. package/dist/commonjs/components/Inspector/NpmUpdateToast.js +1 -1
  45. package/dist/commonjs/components/Inspector/PushCard.d.ts +3 -2
  46. package/dist/commonjs/components/Inspector/PushCard.js +5 -4
  47. package/dist/commonjs/components/Inspector/PushDetail.js +32 -23
  48. package/dist/commonjs/components/Inspector/PushTab.js +13 -13
  49. package/dist/commonjs/components/Inspector/ReduxDetail.js +32 -32
  50. package/dist/commonjs/components/Inspector/ReduxTab.js +14 -14
  51. package/dist/commonjs/components/Inspector/SettingsPanel.js +258 -139
  52. package/dist/commonjs/components/Inspector/SocketCard.d.ts +5 -0
  53. package/dist/commonjs/components/Inspector/SocketCard.js +116 -0
  54. package/dist/commonjs/components/Inspector/SocketDetail.d.ts +4 -0
  55. package/dist/commonjs/components/Inspector/SocketDetail.js +317 -0
  56. package/dist/commonjs/components/Inspector/SocketFilterModal.d.ts +13 -0
  57. package/dist/commonjs/components/Inspector/SocketFilterModal.js +69 -0
  58. package/dist/commonjs/components/Inspector/SocketTab.d.ts +3 -0
  59. package/dist/commonjs/components/Inspector/SocketTab.js +112 -0
  60. package/dist/commonjs/components/Inspector/StorageTab.js +34 -32
  61. package/dist/commonjs/components/Inspector/SupportModal.d.ts +7 -0
  62. package/dist/commonjs/components/Inspector/SupportModal.js +125 -0
  63. package/dist/commonjs/components/Inspector/SupportPage.d.ts +5 -0
  64. package/dist/commonjs/components/Inspector/SupportPage.js +227 -0
  65. package/dist/commonjs/components/Inspector/TabBar.js +24 -23
  66. package/dist/commonjs/components/Inspector/UpdateAvailableModal.js +24 -24
  67. package/dist/commonjs/components/JsonViewer.js +7 -7
  68. package/dist/commonjs/components/LogCard.d.ts +3 -2
  69. package/dist/commonjs/components/LogCard.js +17 -14
  70. package/dist/commonjs/components/LogSyntaxHighlighter.js +5 -5
  71. package/dist/commonjs/components/ModuleErrorBoundary.js +2 -2
  72. package/dist/commonjs/components/NetworkIcons.d.ts +15 -0
  73. package/dist/commonjs/components/NetworkIcons.js +38 -3
  74. package/dist/commonjs/components/SegmentedTabs.js +1 -1
  75. package/dist/commonjs/constants/version.d.ts +1 -1
  76. package/dist/commonjs/constants/version.js +1 -1
  77. package/dist/commonjs/customHooks/socketLogger.d.ts +26 -0
  78. package/dist/commonjs/customHooks/socketLogger.js +2 -0
  79. package/dist/commonjs/helpers/index.js +3 -3
  80. package/dist/commonjs/helpers/memoryManager.d.ts +1 -0
  81. package/dist/commonjs/helpers/memoryManager.js +1 -1
  82. package/dist/commonjs/helpers/searchQueryParser.d.ts +1 -1
  83. package/dist/commonjs/helpers/searchQueryParser.js +5 -1
  84. package/dist/commonjs/helpers/settingsStore.d.ts +1 -0
  85. package/dist/commonjs/helpers/settingsStore.js +1 -1
  86. package/dist/commonjs/helpers/shareFormatter.d.ts +3 -1
  87. package/dist/commonjs/helpers/shareFormatter.js +8 -7
  88. package/dist/commonjs/i18n/index.d.ts +99 -1
  89. package/dist/commonjs/i18n/index.js +1 -1
  90. package/dist/commonjs/i18n/locales/ar.json +1 -1
  91. package/dist/commonjs/i18n/locales/bn.json +1 -0
  92. package/dist/commonjs/i18n/locales/de.json +1 -1
  93. package/dist/commonjs/i18n/locales/en.json +1 -1
  94. package/dist/commonjs/i18n/locales/es.json +1 -1
  95. package/dist/commonjs/i18n/locales/fr.json +1 -1
  96. package/dist/commonjs/i18n/locales/gu.json +1 -0
  97. package/dist/commonjs/i18n/locales/hi.json +1 -1
  98. package/dist/commonjs/i18n/locales/id.json +1 -0
  99. package/dist/commonjs/i18n/locales/it.json +1 -0
  100. package/dist/commonjs/i18n/locales/ja.json +1 -1
  101. package/dist/commonjs/i18n/locales/kn.json +1 -0
  102. package/dist/commonjs/i18n/locales/ko.json +1 -1
  103. package/dist/commonjs/i18n/locales/ml.json +1 -0
  104. package/dist/commonjs/i18n/locales/mr.json +1 -0
  105. package/dist/commonjs/i18n/locales/nl.json +1 -0
  106. package/dist/commonjs/i18n/locales/pa.json +1 -0
  107. package/dist/commonjs/i18n/locales/pl.json +1 -0
  108. package/dist/commonjs/i18n/locales/pt.json +1 -1
  109. package/dist/commonjs/i18n/locales/ru.json +1 -1
  110. package/dist/commonjs/i18n/locales/ta.json +1 -0
  111. package/dist/commonjs/i18n/locales/te.json +1 -0
  112. package/dist/commonjs/i18n/locales/tr.json +1 -0
  113. package/dist/commonjs/i18n/locales/vi.json +1 -0
  114. package/dist/commonjs/i18n/locales/zh.json +1 -1
  115. package/dist/commonjs/index.d.ts +13 -13
  116. package/dist/commonjs/index.js +5 -4
  117. package/dist/commonjs/native/NativeInspector.d.ts +1 -0
  118. package/dist/commonjs/socket.d.ts +4 -0
  119. package/dist/commonjs/socket.js +1 -0
  120. package/dist/commonjs/styles/index.d.ts +23 -0
  121. package/dist/commonjs/styles/index.js +1 -1
  122. package/dist/commonjs/types/enums.d.ts +40 -0
  123. package/dist/commonjs/types/enums.js +1 -1
  124. package/dist/commonjs/types/interfaces.d.ts +122 -1
  125. package/dist/esm/components/AnimatedBrandOwl.d.ts +7 -0
  126. package/dist/esm/components/AnimatedBrandOwl.js +175 -0
  127. package/dist/esm/components/AppHeaderLogo.d.ts +1 -0
  128. package/dist/esm/components/AppHeaderLogo.js +7 -5
  129. package/dist/esm/components/BrandSquareIcon.d.ts +5 -0
  130. package/dist/esm/components/BrandSquareIcon.js +139 -0
  131. package/dist/esm/components/ConsoleLogCard.d.ts +2 -1
  132. package/dist/esm/components/ConsoleLogCard.js +61 -77
  133. package/dist/esm/components/Inspector/AboutModal.js +85 -95
  134. package/dist/esm/components/Inspector/AnalyticsTab.js +31 -31
  135. package/dist/esm/components/Inspector/ConfirmationModal.d.ts +13 -0
  136. package/dist/esm/components/Inspector/ConfirmationModal.js +32 -0
  137. package/dist/esm/components/Inspector/ConsoleTab.js +49 -49
  138. package/dist/esm/components/Inspector/CrashTab.js +40 -38
  139. package/dist/esm/components/Inspector/DebuggingTab.js +29 -29
  140. package/dist/esm/components/Inspector/FabLauncher.js +50 -58
  141. package/dist/esm/components/Inspector/FeatureUnderDevNotice.js +7 -7
  142. package/dist/esm/components/Inspector/LanguageSelectorModal.d.ts +15 -0
  143. package/dist/esm/components/Inspector/LanguageSelectorModal.js +90 -0
  144. package/dist/esm/components/Inspector/MainScreen.js +123 -110
  145. package/dist/esm/components/Inspector/MediaGalleryTab.js +64 -62
  146. package/dist/esm/components/Inspector/MediaPreviewModal.js +107 -123
  147. package/dist/esm/components/Inspector/NetworkTab.js +90 -90
  148. package/dist/esm/components/Inspector/NpmUpdateToast.js +1 -1
  149. package/dist/esm/components/Inspector/PushCard.d.ts +3 -2
  150. package/dist/esm/components/Inspector/PushCard.js +23 -22
  151. package/dist/esm/components/Inspector/PushDetail.js +34 -25
  152. package/dist/esm/components/Inspector/PushTab.js +25 -25
  153. package/dist/esm/components/Inspector/ReduxDetail.js +42 -42
  154. package/dist/esm/components/Inspector/ReduxTab.js +35 -35
  155. package/dist/esm/components/Inspector/SettingsPanel.js +495 -376
  156. package/dist/esm/components/Inspector/SocketCard.d.ts +5 -0
  157. package/dist/esm/components/Inspector/SocketCard.js +116 -0
  158. package/dist/esm/components/Inspector/SocketDetail.d.ts +4 -0
  159. package/dist/esm/components/Inspector/SocketDetail.js +317 -0
  160. package/dist/esm/components/Inspector/SocketFilterModal.d.ts +13 -0
  161. package/dist/esm/components/Inspector/SocketFilterModal.js +69 -0
  162. package/dist/esm/components/Inspector/SocketTab.d.ts +3 -0
  163. package/dist/esm/components/Inspector/SocketTab.js +112 -0
  164. package/dist/esm/components/Inspector/StorageTab.js +136 -134
  165. package/dist/esm/components/Inspector/SupportModal.d.ts +7 -0
  166. package/dist/esm/components/Inspector/SupportModal.js +125 -0
  167. package/dist/esm/components/Inspector/SupportPage.d.ts +5 -0
  168. package/dist/esm/components/Inspector/SupportPage.js +227 -0
  169. package/dist/esm/components/Inspector/TabBar.js +36 -35
  170. package/dist/esm/components/Inspector/UpdateAvailableModal.js +22 -22
  171. package/dist/esm/components/JsonViewer.js +55 -55
  172. package/dist/esm/components/LogCard.d.ts +3 -2
  173. package/dist/esm/components/LogCard.js +61 -58
  174. package/dist/esm/components/LogSyntaxHighlighter.js +5 -5
  175. package/dist/esm/components/ModuleErrorBoundary.js +23 -23
  176. package/dist/esm/components/NetworkIcons.d.ts +15 -0
  177. package/dist/esm/components/NetworkIcons.js +38 -3
  178. package/dist/esm/components/SegmentedTabs.js +7 -7
  179. package/dist/esm/constants/version.d.ts +1 -1
  180. package/dist/esm/constants/version.js +1 -1
  181. package/dist/esm/customHooks/socketLogger.d.ts +26 -0
  182. package/dist/esm/customHooks/socketLogger.js +2 -0
  183. package/dist/esm/helpers/index.js +3 -3
  184. package/dist/esm/helpers/memoryManager.d.ts +1 -0
  185. package/dist/esm/helpers/memoryManager.js +1 -1
  186. package/dist/esm/helpers/searchQueryParser.d.ts +1 -1
  187. package/dist/esm/helpers/searchQueryParser.js +5 -1
  188. package/dist/esm/helpers/settingsStore.d.ts +1 -0
  189. package/dist/esm/helpers/settingsStore.js +1 -1
  190. package/dist/esm/helpers/shareFormatter.d.ts +3 -1
  191. package/dist/esm/helpers/shareFormatter.js +8 -7
  192. package/dist/esm/i18n/index.d.ts +99 -1
  193. package/dist/esm/i18n/index.js +1 -1
  194. package/dist/esm/i18n/locales/ar.json +1 -1
  195. package/dist/esm/i18n/locales/bn.json +1 -0
  196. package/dist/esm/i18n/locales/de.json +1 -1
  197. package/dist/esm/i18n/locales/en.json +1 -1
  198. package/dist/esm/i18n/locales/es.json +1 -1
  199. package/dist/esm/i18n/locales/fr.json +1 -1
  200. package/dist/esm/i18n/locales/gu.json +1 -0
  201. package/dist/esm/i18n/locales/hi.json +1 -1
  202. package/dist/esm/i18n/locales/id.json +1 -0
  203. package/dist/esm/i18n/locales/it.json +1 -0
  204. package/dist/esm/i18n/locales/ja.json +1 -1
  205. package/dist/esm/i18n/locales/kn.json +1 -0
  206. package/dist/esm/i18n/locales/ko.json +1 -1
  207. package/dist/esm/i18n/locales/ml.json +1 -0
  208. package/dist/esm/i18n/locales/mr.json +1 -0
  209. package/dist/esm/i18n/locales/nl.json +1 -0
  210. package/dist/esm/i18n/locales/pa.json +1 -0
  211. package/dist/esm/i18n/locales/pl.json +1 -0
  212. package/dist/esm/i18n/locales/pt.json +1 -1
  213. package/dist/esm/i18n/locales/ru.json +1 -1
  214. package/dist/esm/i18n/locales/ta.json +1 -0
  215. package/dist/esm/i18n/locales/te.json +1 -0
  216. package/dist/esm/i18n/locales/tr.json +1 -0
  217. package/dist/esm/i18n/locales/vi.json +1 -0
  218. package/dist/esm/i18n/locales/zh.json +1 -1
  219. package/dist/esm/index.d.ts +13 -13
  220. package/dist/esm/index.js +8 -7
  221. package/dist/esm/native/NativeInspector.d.ts +1 -0
  222. package/dist/esm/socket.d.ts +4 -0
  223. package/dist/esm/socket.js +1 -0
  224. package/dist/esm/styles/index.d.ts +23 -0
  225. package/dist/esm/styles/index.js +1 -1
  226. package/dist/esm/types/enums.d.ts +40 -0
  227. package/dist/esm/types/enums.js +1 -1
  228. package/dist/esm/types/interfaces.d.ts +122 -1
  229. package/ios/NetworkInspectorModule.mm +102 -12
  230. package/package.json +204 -2
  231. package/src/native/NativeInspector.ts +8 -0
@@ -1,166 +1,150 @@
1
- import{useState as z}from"react";import{Alert as Ve,Image as _,Modal as Me,Platform as V,Share as ee,StyleSheet as oe,Text as T,TouchableOpacity as A,View as C}from"react-native";import{AppColors as e}from"../../styles/AppColors";import{AppFonts as S}from"../../styles/AppFonts";import R from"../TouchableScale";import{ChevronDownIcon as De,CopyIcon as L,ExpandCollapseIcon as We,FilmIcon as E,GifIcon as H,ImageIcon as Le,PauseIcon as Ee,PlayIcon as Ce,RepeatIcon as He,ShareIcon as Te,TrashIcon as Ue}from"../NetworkIcons";import{ScreenCapture as Ne}from"../../capture";import{copyImageOrMediaToClipboard as qe,formatBytes as Se}from"../../helpers";import{showToast as G}from"../../helpers/toast";import{useTranslation as Je}from"../../i18n";export const MediaPreviewModal=({item:t,visible:ve,onClose:M,onDelete:Ie,onConvertToGif:D})=>{const{t:r}=Je(),[U,N]=z(!1),[Ae,q]=z(!1),[P,Pe]=z(!1),[J,K]=z(!1),[Q,ze]=z("1.0x"),[$,Be]=z(!0),[W,Re]=z(.4);if(!t)return null;const O=()=>{t?.uri&&qe(t.uri,t.type==="image"?"Image":"Media")},X=async()=>{try{K(!0),await Ne.playVideo(t.uri)}catch{G(r("mediaGallery.playError","Unable to play video"))}finally{K(!1)}},$e=()=>{Ve.alert(r("mediaGallery.deleteTitle"),r("mediaGallery.deleteMessage",{filename:t.filename}),[{text:r("common.cancel"),style:"cancel"},{text:r("mediaGallery.delete"),style:"destructive",onPress:()=>{Ie(t),M()}}])},Fe=async()=>{if(D){N(!0);try{await D(t),G(r("mediaGallery.convertedSuccess"))}catch{G(r("mediaGallery.convertFailed"))}finally{N(!1)}}},Y=async()=>{try{const v=t.uri.startsWith("file://")||t.uri.startsWith("content://")||t.uri.startsWith("http")?t.uri:`file://${t.uri}`,Oe=V.select({ios:{url:v,title:t.filename},default:{title:t.filename,message:t.filename,url:v}});(await ee.share(Oe)).action===ee.sharedAction&&G(r("mediaGallery.shareSuccess","Shared successfully"))}catch(v){v?.message!=="User did not share"&&G(r("mediaGallery.shareUnavailable","Sharing not available on this device"))}},I=t.type==="video",F=t.type==="gif",B=t.durationMs?(t.durationMs/1e3).toFixed(1):null,Ge=B?`00:${Number(B)<10?"0":""}${B}`:"00:05.0",Z=!0;return<Me visible={ve}transparent={!0}animationType="fade"onRequestClose={M}>
2
- <C style={o.overlay}>
1
+ import{useState as B}from"react";import{Image as Z,Modal as Oe,Platform as k,Share as _,StatusBar as W,StyleSheet as M,Text as T,TouchableOpacity as R,View as C}from"react-native";import Fe from"react-native-linear-gradient";import{AppColors as t}from"../../styles/AppColors";import{AppFonts as S}from"../../styles/AppFonts";import P from"../TouchableScale";import{ConfirmationModal as De}from"./ConfirmationModal";import{ChevronDownIcon as Ee,CopyIcon as H,ExpandCollapseIcon as We,FilmIcon as L,GifIcon as U,ImageIcon as Me,PlayIcon as Ce,ShareIcon as Te,TrashIcon as Se}from"../NetworkIcons";import{ScreenCapture as He}from"../../capture";import{copyImageOrMediaToClipboard as Le,formatBytes as $}from"../../helpers";import{showToast as V}from"../../helpers/toast";import{useTranslation as je}from"../../i18n";import{triggerNativeHaptic as Ue}from"../../native/NativeInspector";export const MediaPreviewModal=({item:o,visible:ve,onClose:F,onDelete:Pe,onConvertToGif:D})=>{const{t:r}=je(),[A,N]=B(!1),[Ie,q]=B(!1),[z,ze]=B(!1),[Be,J]=B(!1),[ke,E]=B(!1);if(!o)return null;const G=()=>{o?.uri&&Le(o.uri,o.type==="image"?"Image":"Media")},K=async()=>{try{J(!0),await He.playVideo(o.uri)}catch{V(r("mediaGallery.playError","Unable to play video"))}finally{J(!1)}},Q=()=>{Ue("medium"),E(!0)},Re=async()=>{if(D){N(!0);try{await D(o),V(r("mediaGallery.convertedSuccess"))}catch{V(r("mediaGallery.convertFailed"))}finally{N(!1)}}},X=async()=>{try{const O=o.uri.startsWith("file://")||o.uri.startsWith("content://")||o.uri.startsWith("http")?o.uri:`file://${o.uri}`,Ge=k.select({ios:{url:O,title:o.filename},default:{title:o.filename,message:o.filename,url:O}});(await _.share(Ge)).action===_.sharedAction&&V(r("mediaGallery.shareSuccess","Shared successfully"))}catch(O){O?.message!=="User did not share"&&V(r("mediaGallery.shareUnavailable","Sharing not available on this device"))}},v=o.type==="video",Y=o.type==="gif",I=o.durationMs?(o.durationMs/1e3).toFixed(1):null,Ve=I?`00:${Number(I)<10?"0":""}${I}`:null;return<Oe visible={ve}transparent={!0}animationType="fade"statusBarTranslucent={!0}onRequestClose={F}>
2
+ <W translucent backgroundColor="transparent"barStyle="light-content"/>
3
+ <C style={e.overlay}>
3
4
 
4
- <C style={o.header}>
5
- <A activeOpacity={.8}onPress={O}style={o.headerLeft}>
6
- <C style={[o.badge,{borderColor:I?`${e.sky400}80`:F?`${e.warningAmber}80`:`${e.emerald500}80`,backgroundColor:I?`${e.sky400}20`:F?`${e.warningAmber}20`:`${e.emerald500}20`}]}>
7
- {I?<E size={13}color={e.sky400}/>:F?<H size={13}color={e.warningAmber}/>:<Le size={13}color={e.emerald500}/>}
8
- <T style={[o.badgeText,{color:I?e.sky400:F?e.warningAmber:e.emerald500}]}>
9
- {t.format.toUpperCase()}
5
+ <Fe colors={[t.indigo600,t.violet600]}start={{x:0,y:0}}end={{x:1,y:1}}style={e.header}>
6
+ <R activeOpacity={.8}onPress={G}style={e.headerLeft}>
7
+ <C style={e.badge}>
8
+ {v?<L size={12}color={t.white}/>:Y?<U size={12}color={t.white}/>:<Me size={12}color={t.white}/>}
9
+ <T style={e.badgeText}>
10
+ {o.format.toUpperCase()}
10
11
  </T>
11
12
  </C>
12
- <C style={{flex:1,minWidth:0}}>
13
- <T style={o.title}numberOfLines={1}>
14
- {t.filename}
13
+ <C style={e.headerTextCol}>
14
+ <T style={e.title}numberOfLines={1}>
15
+ {o.filename}
15
16
  </T>
16
- <T style={o.subtitle}>
17
- {Se(t.sizeBytes)} • {new Date(t.timestamp).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"})}
17
+ <T style={e.subtitle}>
18
+ {$(o.sizeBytes)} • {new Date(o.timestamp).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"})}
18
19
  </T>
19
20
  </C>
20
- </A>
21
+ </R>
21
22
 
22
23
 
23
- <C style={o.headerRight}>
24
- <R accessible={!0}accessibilityRole="button"accessibilityLabel={r("mediaGallery.copyUri","Copy URI")}onPress={O}style={o.headerActionBtn}hitSlop={{top:10,bottom:10,left:10,right:10}}>
25
- <L size={14}color={e.slate200}/>
26
- </R>
24
+ <C style={e.headerRight}>
25
+ <P accessible={!0}accessibilityRole="button"accessibilityLabel={r("mediaGallery.copyUri","Copy URI")}onPress={G}style={e.headerActionBtn}hitSlop={{top:10,bottom:10,left:10,right:10}}>
26
+ <H size={13}color={t.white}/>
27
+ </P>
27
28
 
28
- <R accessible={!0}accessibilityRole="button"accessibilityLabel={r("mediaGallery.share","Share")}onPress={Y}style={[o.headerActionBtn,{backgroundColor:`${e.sky400}20`,borderColor:`${e.sky400}60`}]}hitSlop={{top:10,bottom:10,left:10,right:10}}>
29
- <Te size={14}color={e.sky400}/>
30
- </R>
29
+ <P accessible={!0}accessibilityRole="button"accessibilityLabel={r("mediaGallery.share","Share")}onPress={X}style={e.headerActionBtn}hitSlop={{top:10,bottom:10,left:10,right:10}}>
30
+ <Te size={13}color={t.white}/>
31
+ </P>
31
32
 
32
- <R accessible={!0}accessibilityRole="button"accessibilityLabel={r("mediaGallery.delete")}onPress={$e}style={o.headerDeleteBtn}hitSlop={{top:10,bottom:10,left:10,right:10}}>
33
- <Ue size={14}color={e.red500}/>
34
- </R>
33
+ <P accessible={!0}accessibilityRole="button"accessibilityLabel={r("mediaGallery.delete")}onPress={Q}style={e.headerDeleteBtn}hitSlop={{top:10,bottom:10,left:10,right:10}}>
34
+ <Se size={13}color={t.white}/>
35
+ </P>
35
36
 
36
- <A accessible={!0}accessibilityRole="button"accessibilityLabel={P?r("mediaGallery.collapse","Exit Fullscreen"):r("mediaGallery.expand","Expand Fullscreen")}onPress={()=>Pe(!P)}style={[o.headerIconBtn,P&&{backgroundColor:`${e.sky400}30`,borderColor:`${e.sky400}70`}]}hitSlop={{top:10,bottom:10,left:10,right:10}}>
37
- <We size={14}isExpanded={P}color={P?e.sky400:e.white}/>
38
- </A>
37
+ <R accessible={!0}accessibilityRole="button"accessibilityLabel={z?r("mediaGallery.collapse","Exit Fullscreen"):r("mediaGallery.expand","Expand Fullscreen")}onPress={()=>ze(!z)}style={e.headerIconBtn}hitSlop={{top:10,bottom:10,left:10,right:10}}>
38
+ <We size={13}isExpanded={z}color={t.white}/>
39
+ </R>
39
40
 
40
- <A accessible={!0}accessibilityRole="button"accessibilityLabel={r("mediaGallery.minimize","Minimize")}onPress={M}style={o.headerIconBtn}hitSlop={{top:10,bottom:10,left:10,right:10}}>
41
- <De size={15}color={e.white}/>
42
- </A>
41
+ <R accessible={!0}accessibilityRole="button"accessibilityLabel={r("mediaGallery.minimize","Minimize")}onPress={F}style={e.headerIconBtn}hitSlop={{top:10,bottom:10,left:10,right:10}}>
42
+ <Ee size={14}color={t.white}/>
43
+ </R>
43
44
  </C>
44
- </C>
45
+ </Fe>
45
46
 
46
47
 
47
- <C style={[o.stage,P&&o.stageExpanded,!Z&&{paddingBottom:V.OS==="ios"?34:16}]}>
48
- <A activeOpacity={I?.9:1}onPress={I?X:void 0}style={[o.previewCard,P&&o.previewCardExpanded]}>
49
- {I?t.thumbnailUri&&!Ae?<>
50
- <_ source={{uri:t.thumbnailUri}}style={o.image}resizeMode="contain"onError={()=>q(!0)}/>
51
- <C style={o.videoImageOverlay}/>
52
- </>:<C style={o.videoFallbackBackdrop}>
53
- <C style={o.videoFallbackGlow}/>
54
- <E size={44}color={e.sky400}/>
55
- <T style={o.videoFallbackSubtitle}>
56
- {t.width&&t.height?`${t.width} \xD7 ${t.height}`:"HD Video"} • MP4
48
+ <C style={[e.stage,z&&e.stageExpanded]}>
49
+ <R activeOpacity={v?.92:1}onPress={v?K:void 0}style={[e.previewCard,z&&e.previewCardExpanded]}>
50
+ {v?o.thumbnailUri&&!Ie?<>
51
+ <Z source={{uri:o.thumbnailUri}}style={e.image}resizeMode="contain"onError={()=>q(!0)}/>
52
+ <C style={e.videoImageOverlay}/>
53
+ </>:<C style={e.videoFallbackBackdrop}>
54
+ <C style={e.videoFallbackGlow}/>
55
+ <L size={52}color={t.sky400}/>
56
+ <T style={e.videoFallbackTitle}>
57
+ {o.width&&o.height?`${o.width} \xD7 ${o.height}`:"HD Video Recording"}
57
58
  </T>
58
- </C>:<_ source={{uri:t.uri}}style={o.image}resizeMode="contain"onError={()=>q(!0)}/>}
59
+ <T style={e.videoFallbackSubtitle}>
60
+ {I?`${I}s duration`:"MP4 Video"} • {$(o.sizeBytes)}
61
+ </T>
62
+ </C>:<Z source={{uri:o.uri}}style={e.image}resizeMode="contain"onError={()=>q(!0)}/>}
59
63
 
60
64
 
61
- {I&&<C style={o.centerPlayOverlay}>
62
- <C style={o.centerPlayCircle}>
63
- <Ce size={28}color={e.white}/>
65
+ {v&&<C style={e.centerPlayContainer}pointerEvents="box-none">
66
+ <C style={e.centerPlayGlow}/>
67
+ <C style={e.centerPlayCircle}>
68
+ <Ce size={28}color={t.white}/>
69
+ </C>
70
+ <C style={e.centerPlayPill}>
71
+ <T style={e.centerPlayText}>
72
+ {r("mediaGallery.playVideo","Play Video")}
73
+ </T>
64
74
  </C>
65
- <T style={o.centerPlayText}>
66
- {r("mediaGallery.playVideo","Play Video")}
67
- </T>
68
75
  </C>}
69
76
 
70
77
 
71
- {I&&<C style={o.videoBadgeOverlay}>
72
- <C style={o.playPill}>
73
- <E size={12}color={e.sky400}/>
74
- <T style={o.playPillText}>
75
- {B?`${B}s`:"VIDEO"}
78
+ {v&&<C style={e.topLeftBadgeOverlay}pointerEvents="none">
79
+ <C style={e.metaPill}>
80
+ <L size={11}color={t.sky400}/>
81
+ <T style={e.metaPillText}>
82
+ {Ve||(I?`${I}s`:"VIDEO")}
76
83
  </T>
77
84
  </C>
78
85
  </C>}
79
86
 
80
-
81
- {F&&<C style={o.videoBadgeOverlay}>
82
- <C style={[o.playPill,{backgroundColor:`${e.warningAmber}CC`}]}>
83
- <H size={12}color={e.white}/>
84
- <T style={o.playPillText}>ANIMATED GIF</T>
87
+ {Y&&<C style={e.topLeftBadgeOverlay}pointerEvents="none">
88
+ <C style={[e.metaPill,{backgroundColor:"rgba(245, 158, 11, 0.85)"}]}>
89
+ <U size={11}color={t.white}/>
90
+ <T style={e.metaPillText}>ANIMATED GIF</T>
85
91
  </C>
86
92
  </C>}
87
93
 
88
94
 
89
- <A activeOpacity={.8}onPress={O}style={o.floatingMetaBadge}>
90
- <L size={11}color={e.sky400}/>
91
- <T style={o.floatingMetaText}>
92
- {t.width&&t.height?`${t.width} \xD7 ${t.height} \u2022 `:""}
93
- {Se(t.sizeBytes)}
94
- </T>
95
- </A>
96
- </A>
95
+ <R activeOpacity={.8}onPress={G}style={e.bottomRightBadgeOverlay}>
96
+ <C style={e.metaPill}>
97
+ <H size={10}color={t.sky400}/>
98
+ <T style={e.metaPillText}>
99
+ {o.width&&o.height?`${o.width} \xD7 ${o.height} \u2022 `:""}
100
+ {$(o.sizeBytes)}
101
+ </T>
102
+ </C>
103
+ </R>
104
+ </R>
97
105
  </C>
98
106
 
99
107
 
100
- {I&&<C style={o.videoControlsPanel}>
101
-
102
- <C style={o.progressSection}>
103
- <T style={o.timeLabel}>
104
- 00:0{Math.floor(W*(Number(B)||5))}
108
+ <C style={e.footer}>
109
+ {v&&<P onPress={K}style={e.primaryPlayBtn}>
110
+ <Ce size={16}color={t.white}/>
111
+ <T style={e.primaryPlayText}>
112
+ {Be?r("mediaGallery.playing","Playing Video..."):r("mediaGallery.playInPlayer","Play Fullscreen Video")}
105
113
  </T>
106
- <A activeOpacity={.8}onPress={()=>Re(v=>v>=.9?.1:v+.3)}style={o.progressTrack}>
107
- <C style={[o.progressFill,{width:`${Math.max(10,Math.min(100,W*100))}%`}]}/>
108
- <C style={[o.scrubberThumb,{left:`${Math.max(8,Math.min(96,W*100))}%`}]}/>
109
- </A>
110
- <T style={o.timeLabel}>{Ge}</T>
111
- </C>
112
-
113
-
114
- <C style={o.controlsRow}>
115
-
116
- <A onPress={X}style={o.controlActionPill}>
117
- {J?<Ee size={14}color={e.sky400}/>:<Ce size={14}color={e.sky400}/>}
118
- <T style={[o.controlActionText,{color:e.sky400}]}>
119
- {J?r("mediaGallery.pause","Pause"):r("mediaGallery.play","Play")}
120
- </T>
121
- </A>
122
-
123
-
124
- <C style={o.speedGroup}>
125
- {["1.0x","1.5x","2.0x"].map(v=><A key={v}onPress={()=>ze(v)}style={[o.speedBtn,Q===v&&o.speedBtnActive]}>
126
- <T style={[o.speedText,Q===v&&o.speedTextActive]}>
127
- {v}
128
- </T>
129
- </A>)}
130
- </C>
131
-
132
-
133
- <A onPress={()=>Be(!$)}style={[o.loopPill,$&&o.loopPillActive]}>
134
- <He size={12}color={$?e.sky400:e.whiteAlpha60}/>
135
- <T style={[o.loopText,$&&o.loopTextActive]}>
136
- {$?"Loop: ON":"Loop: OFF"}
137
- </T>
138
- </A>
139
- </C>
140
- </C>}
114
+ </P>}
141
115
 
142
-
143
- {Z&&<C style={o.footer}>
144
- <R onPress={O}style={[o.actionBtn,{backgroundColor:e.whiteAlpha08,borderColor:e.whiteAlpha15}]}>
145
- <L size={14}color={e.slate200}/>
146
- <T style={[o.actionText,{color:e.slate200}]}>
116
+ <C style={e.actionsRow}>
117
+ <P onPress={G}style={e.actionBtn}>
118
+ <H size={14}color={t.grayText}/>
119
+ <T style={e.actionText}>
147
120
  {r("mediaGallery.copyUri","Copy URI")}
148
121
  </T>
149
- </R>
122
+ </P>
150
123
 
151
- {D&&I&&<R onPress={Fe}disabled={U}style={[o.actionBtn,{backgroundColor:`${e.warningAmber}22`,borderColor:`${e.warningAmber}70`}]}>
152
- <H size={15}color={e.warningAmber}/>
153
- <T style={[o.actionText,{color:e.warningAmber}]}>
154
- {r(U?"mediaGallery.converting":"mediaGallery.convertToGif")}
124
+ {D&&v&&<P onPress={Re}disabled={A}style={[e.actionBtn,{backgroundColor:t.amber100,borderColor:t.amber200}]}>
125
+ <U size={15}color={t.amber600}/>
126
+ <T style={[e.actionText,{color:t.amber600,fontFamily:S.interBold}]}>
127
+ {r(A?"mediaGallery.converting":"mediaGallery.convertToGif")}
155
128
  </T>
156
- </R>}
129
+ </P>}
157
130
 
158
- <R onPress={Y}style={[o.actionBtn,{backgroundColor:`${e.sky400}22`,borderColor:`${e.sky400}70`}]}>
159
- <Te size={14}color={e.sky400}/>
160
- <T style={[o.actionText,{color:e.sky400,fontFamily:S.interSemiBold}]}>
131
+ <P onPress={X}style={[e.actionBtn,{backgroundColor:t.indigo600,borderColor:t.indigo600}]}>
132
+ <Te size={14}color={t.white}/>
133
+ <T style={[e.actionText,{color:t.white,fontFamily:S.interBold}]}>
161
134
  {r("mediaGallery.share","Share")}
162
135
  </T>
163
- </R>
164
- </C>}
136
+ </P>
137
+
138
+ {!v&&<P onPress={Q}style={[e.actionBtn,{backgroundColor:t.red100,borderColor:`${t.red500}4D`}]}>
139
+ <Se size={14}color={t.red500}/>
140
+ <T style={[e.actionText,{color:t.red500,fontFamily:S.interBold}]}>
141
+ {r("mediaGallery.delete","Delete")}
142
+ </T>
143
+ </P>}
144
+ </C>
145
+ </C>
165
146
  </C>
166
- </Me>};const o=oe.create({overlay:{flex:1,backgroundColor:e.mediaModalBg,justifyContent:"space-between"},header:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingHorizontal:16,paddingTop:V.OS==="ios"?52:20,paddingBottom:14,borderBottomWidth:1,borderBottomColor:e.borderGlassLight,backgroundColor:e.headerGlassDark},headerLeft:{flexDirection:"row",alignItems:"center",gap:10,flex:1,minWidth:0,marginRight:10},headerRight:{flexDirection:"row",alignItems:"center",gap:8},badge:{flexDirection:"row",alignItems:"center",gap:4,paddingHorizontal:8,paddingVertical:4,borderRadius:6,borderWidth:1},badgeText:{fontFamily:S.interBold,fontSize:10.5,letterSpacing:.4},title:{fontFamily:S.interSemiBold,fontSize:13.5,color:e.white},subtitle:{fontFamily:S.interRegular,fontSize:11,color:e.whiteAlpha60,marginTop:1},headerActionBtn:{width:32,height:32,borderRadius:16,backgroundColor:e.whiteAlpha12,borderWidth:1,borderColor:e.whiteAlpha20,alignItems:"center",justifyContent:"center"},headerShareBtn:{width:32,height:32,borderRadius:16,backgroundColor:`${e.sky400}20`,borderWidth:1,borderColor:`${e.sky400}60`,alignItems:"center",justifyContent:"center"},headerDeleteBtn:{width:32,height:32,borderRadius:16,backgroundColor:`${e.red500}20`,borderWidth:1,borderColor:`${e.red500}60`,alignItems:"center",justifyContent:"center"},headerIconBtn:{width:32,height:32,borderRadius:16,backgroundColor:e.whiteAlpha12,borderWidth:1,borderColor:e.whiteAlpha20,alignItems:"center",justifyContent:"center"},stage:{flex:1,alignItems:"center",justifyContent:"center",paddingHorizontal:10,paddingTop:10,paddingBottom:10},stageExpanded:{paddingHorizontal:0,paddingTop:0,paddingBottom:0},previewCard:{flex:1,width:"100%",borderRadius:14,overflow:"hidden",backgroundColor:e.mediaDarkTile,borderWidth:1,borderColor:e.borderGlassLight,alignItems:"center",justifyContent:"center",position:"relative"},previewCardExpanded:{borderRadius:0,borderWidth:0},image:{width:"100%",height:"100%"},videoImageOverlay:{...oe.absoluteFillObject,backgroundColor:"rgba(5, 7, 13, 0.25)"},videoFallbackBackdrop:{flex:1,width:"100%",backgroundColor:e.mediaPlayerBg,alignItems:"center",justifyContent:"center",gap:8},videoFallbackGlow:{position:"absolute",width:140,height:140,borderRadius:70,backgroundColor:`${e.sky400}18`},videoFallbackTitle:{fontFamily:S.interSemiBold,fontSize:15,color:e.white,marginTop:8},videoFallbackSubtitle:{fontFamily:S.interRegular,fontSize:12,color:e.whiteAlpha60},centerPlayOverlay:{position:"absolute",alignItems:"center",justifyContent:"center",gap:8},centerPlayCircle:{width:64,height:64,borderRadius:32,backgroundColor:`${e.sky400}E0`,alignItems:"center",justifyContent:"center",paddingLeft:3,shadowColor:e.sky400,shadowOffset:{width:0,height:4},shadowOpacity:.5,shadowRadius:10,elevation:8},centerPlayText:{fontFamily:S.interSemiBold,fontSize:13,color:e.white,letterSpacing:.3,textShadowColor:"rgba(0,0,0,0.7)",textShadowOffset:{width:0,height:1},textShadowRadius:3},videoBadgeOverlay:{position:"absolute",bottom:12,left:12},playPill:{flexDirection:"row",alignItems:"center",gap:6,backgroundColor:`${e.slate900}D9`,paddingHorizontal:10,paddingVertical:5,borderRadius:16,borderWidth:1,borderColor:e.whiteAlpha20},playPillText:{fontFamily:S.interSemiBold,fontSize:11,color:e.white,letterSpacing:.3},floatingMetaBadge:{position:"absolute",bottom:10,backgroundColor:`${e.slate900}D9`,paddingHorizontal:10,paddingVertical:4.5,borderRadius:8,borderWidth:1,borderColor:e.whiteAlpha15,alignItems:"center",justifyContent:"center"},floatingMetaText:{fontFamily:S.interMedium,fontSize:10.5,color:e.slate200,letterSpacing:.2},videoControlsPanel:{paddingHorizontal:16,paddingTop:8,paddingBottom:6,backgroundColor:e.headerGlassDark,borderTopWidth:1,borderTopColor:e.borderGlassLight,gap:8},progressSection:{flexDirection:"row",alignItems:"center",gap:10},timeLabel:{fontFamily:S.interMedium,fontSize:11,color:e.whiteAlpha60,minWidth:42},progressTrack:{flex:1,height:6,borderRadius:3,backgroundColor:e.whiteAlpha15,justifyContent:"center",position:"relative"},progressFill:{height:"100%",borderRadius:3,backgroundColor:e.sky400},scrubberThumb:{position:"absolute",width:12,height:12,borderRadius:6,backgroundColor:e.white,borderWidth:2,borderColor:e.sky400,top:-3,marginLeft:-6},controlsRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingVertical:2},controlActionPill:{flexDirection:"row",alignItems:"center",gap:5,paddingHorizontal:10,paddingVertical:5,borderRadius:6,backgroundColor:`${e.sky400}18`,borderWidth:1,borderColor:`${e.sky400}50`},controlActionText:{fontFamily:S.interSemiBold,fontSize:11.5},speedGroup:{flexDirection:"row",alignItems:"center",backgroundColor:e.whiteAlpha08,borderRadius:6,borderWidth:1,borderColor:e.whiteAlpha12,padding:2,gap:2},speedBtn:{paddingHorizontal:7,paddingVertical:3,borderRadius:4},speedBtnActive:{backgroundColor:`${e.sky400}30`},speedText:{fontFamily:S.interMedium,fontSize:10.5,color:e.whiteAlpha60},speedTextActive:{color:e.sky400,fontFamily:S.interBold},loopPill:{flexDirection:"row",alignItems:"center",gap:4,paddingHorizontal:8,paddingVertical:5,borderRadius:6,backgroundColor:e.whiteAlpha08,borderWidth:1,borderColor:e.whiteAlpha12},loopPillActive:{backgroundColor:`${e.sky400}18`,borderColor:`${e.sky400}50`},loopText:{fontFamily:S.interMedium,fontSize:10.5,color:e.whiteAlpha60},loopTextActive:{color:e.sky400,fontFamily:S.interSemiBold},footer:{flexDirection:"row",alignItems:"center",justifyContent:"center",flexWrap:"wrap",gap:8,paddingHorizontal:16,paddingTop:8,paddingBottom:V.OS==="ios"?34:16,borderTopWidth:1,borderTopColor:e.borderGlassLight,backgroundColor:e.headerGlassDark},actionBtn:{flexDirection:"row",alignItems:"center",gap:6,paddingHorizontal:16,paddingVertical:9,borderRadius:8,backgroundColor:e.whiteAlpha08,borderWidth:1,borderColor:e.whiteAlpha15},actionText:{fontFamily:S.interMedium,fontSize:12,color:e.white}});
147
+
148
+
149
+ <De visible={ke}title={r("mediaGallery.deleteTitle","Delete Media?")}message={r("mediaGallery.deleteMessage",{filename:o.filename})}confirmText={r("mediaGallery.delete","Delete")}cancelText={r("common.cancel","Cancel")}isDestructive={!0}icon="trash"onConfirm={()=>{E(!1),Pe(o),F()}}onCancel={()=>E(!1)}/>
150
+ </Oe>};const e=M.create({overlay:{flex:1,backgroundColor:t.slate900,justifyContent:"space-between"},header:{flexShrink:0,minHeight:k.OS==="ios"?96:66,flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingHorizontal:16,paddingTop:k.OS==="ios"?48:W.currentHeight?W.currentHeight+8:18,paddingBottom:14,borderBottomWidth:M.hairlineWidth,borderBottomColor:"rgba(255, 255, 255, 0.25)",zIndex:10},headerLeft:{flexDirection:"row",alignItems:"center",gap:10,flex:1,minWidth:0,marginRight:8},headerTextCol:{flex:1,minWidth:0},headerRight:{flexDirection:"row",alignItems:"center",gap:7},badge:{flexDirection:"row",alignItems:"center",gap:4,paddingHorizontal:7,paddingVertical:3.5,borderRadius:6,backgroundColor:"rgba(255, 255, 255, 0.22)",borderWidth:1,borderColor:"rgba(255, 255, 255, 0.38)"},badgeText:{fontFamily:S.interBold,fontSize:10,letterSpacing:.4,color:t.white},title:{fontFamily:S.interSemiBold,fontSize:13,color:t.white},subtitle:{fontFamily:S.interRegular,fontSize:11,color:"rgba(255, 255, 255, 0.6)",marginTop:1},headerActionBtn:{width:30,height:30,borderRadius:8,backgroundColor:"rgba(255, 255, 255, 0.22)",borderWidth:1,borderColor:"rgba(255, 255, 255, 0.38)",alignItems:"center",justifyContent:"center"},headerDeleteBtn:{width:30,height:30,borderRadius:8,backgroundColor:"rgba(239, 68, 68, 0.35)",borderWidth:1,borderColor:"rgba(252, 165, 165, 0.55)",alignItems:"center",justifyContent:"center"},headerIconBtn:{width:30,height:30,borderRadius:8,backgroundColor:"rgba(255, 255, 255, 0.22)",borderWidth:1,borderColor:"rgba(255, 255, 255, 0.38)",alignItems:"center",justifyContent:"center"},stage:{flex:1,minHeight:0,alignItems:"center",justifyContent:"center",paddingHorizontal:14,paddingVertical:12,overflow:"hidden"},stageExpanded:{paddingHorizontal:0,paddingVertical:0},previewCard:{flex:1,width:"100%",minHeight:0,borderRadius:16,overflow:"hidden",backgroundColor:t.slate900,borderWidth:1,borderColor:"rgba(255, 255, 255, 0.1)",alignItems:"center",justifyContent:"center",position:"relative"},previewCardExpanded:{borderRadius:0,borderWidth:0},image:{width:"100%",height:"100%"},videoImageOverlay:{...M.absoluteFillObject,backgroundColor:"rgba(10, 13, 20, 0.28)"},videoFallbackBackdrop:{flex:1,width:"100%",backgroundColor:t.slate900,alignItems:"center",justifyContent:"center",padding:24},videoFallbackGlow:{position:"absolute",width:150,height:150,borderRadius:75,backgroundColor:"rgba(56, 189, 248, 0.08)"},videoFallbackTitle:{fontFamily:S.interSemiBold,fontSize:15,color:t.white,marginTop:12},videoFallbackSubtitle:{fontFamily:S.interRegular,fontSize:12,color:"rgba(255, 255, 255, 0.6)",marginTop:4},centerPlayContainer:{position:"absolute",alignItems:"center",justifyContent:"center",gap:8},centerPlayGlow:{position:"absolute",width:80,height:80,borderRadius:40,backgroundColor:"rgba(56, 189, 248, 0.22)"},centerPlayCircle:{width:62,height:62,borderRadius:31,backgroundColor:t.sky500,alignItems:"center",justifyContent:"center",paddingLeft:3,shadowColor:t.sky500,shadowOffset:{width:0,height:4},shadowOpacity:.5,shadowRadius:10,elevation:8},centerPlayPill:{backgroundColor:"rgba(15, 23, 42, 0.90)",paddingHorizontal:12,paddingVertical:4,borderRadius:12,borderWidth:1,borderColor:"rgba(255, 255, 255, 0.15)"},centerPlayText:{fontFamily:S.interBold,fontSize:11.5,color:t.white,letterSpacing:.3},topLeftBadgeOverlay:{position:"absolute",top:12,left:12},bottomRightBadgeOverlay:{position:"absolute",bottom:12,right:12},metaPill:{flexDirection:"row",alignItems:"center",gap:5,backgroundColor:"rgba(15, 23, 42, 0.90)",paddingHorizontal:10,paddingVertical:5,borderRadius:12,borderWidth:1,borderColor:"rgba(255, 255, 255, 0.15)"},metaPillText:{fontFamily:S.interSemiBold,fontSize:11,color:t.white,letterSpacing:.2},footer:{flexShrink:0,paddingHorizontal:16,paddingTop:12,paddingBottom:k.OS==="ios"?34:16,borderTopWidth:1,borderTopColor:t.grayBorderSecondary,backgroundColor:t.white,gap:10,zIndex:10,...k.select({ios:{shadowColor:t.slate900,shadowOffset:{width:0,height:-3},shadowOpacity:.08,shadowRadius:8},android:{elevation:6}})},primaryPlayBtn:{flexDirection:"row",alignItems:"center",justifyContent:"center",gap:8,width:"100%",paddingVertical:12,borderRadius:12,backgroundColor:t.indigo600,shadowColor:t.indigo600,shadowOffset:{width:0,height:3},shadowOpacity:.35,shadowRadius:6,elevation:4},primaryPlayText:{fontFamily:S.interBold,fontSize:13.5,color:t.white,letterSpacing:.3},actionsRow:{flexDirection:"row",alignItems:"center",justifyContent:"center",gap:8},actionBtn:{flex:1,flexDirection:"row",alignItems:"center",justifyContent:"center",gap:6,paddingVertical:10,paddingHorizontal:12,borderRadius:10,backgroundColor:t.graySurface,borderWidth:1,borderColor:t.grayBorderSecondary},actionText:{fontFamily:S.interSemiBold,fontSize:12,color:t.grayText}});
@@ -1,153 +1,153 @@
1
- import X,{useCallback as de,useMemo as J,useRef as Oe}from"react";import{FlatList as $e,Platform as qe,Pressable as Ne,ScrollView as He,Text as R,TextInput as Ae,View as C}from"react-native";import{useInspector as De}from"./InspectorContext";import O from"../TouchableScale";import Ce from"../AnimatedEntrance";import Me from"../DomainHeader";import Ee from"../LogCard";import We from"../EmptyState";import Ge from"../EndOfListFooter";import Qe from"./NetworkFilterModal";import b from"../../styles";import{AppColors as e}from"../../styles/AppColors";import{AppFonts as k}from"../../styles/AppFonts";import{METHOD_COLORS as Se}from"../../constants";import{useTranslation as _e}from"../../i18n";import{SearchIcon as Ue,ClearIcon as Ke,TrashIcon as Xe,SortArrowIcon as Je,FilterIcon as Te,ChevronIcon as Ye,CheckIcon as Ze,CircleCheckIcon as Co,CircleXIcon as So,LayersIcon as To,ClockIcon as Vo,RequestIcon as Io,ResponseIcon as Ro,AtomIcon as Fo}from"../NetworkIcons";const Lo=X.memo(()=>{const{groupedData:Y,loadMoreSection:Z,search:F,setSearch:M,setSearchScope:xe,quickFilter:G,setQuickFilter:j,handleDelete:Ve,selectedLogs:E,sortOrder:Q,setSortOrder:v,statusFilters:x,setStatusFilters:q,methodFilters:V,setMethodFilters:N,filteredLogs:$,logs:H,toggleSectionFilter:ee,toggleSectionCollapse:oe,minStart:te,totalRange:re,newLogIds:le,toggleSelect:ie,setSelected:se}=De(),{t:_}=_e(),Ie=Oe(null),[Re,U]=X.useState(!1),[ae,ne]=X.useState(!1),ke=J(()=>({statusCodes:x.size>0?new Set(x):new Set(["all"]),methods:V.size>0?new Set(V):new Set(["all"]),latency:"all",protocol:"all",sortBy:Q==="newest"?"time_desc":"time_asc"}),[x,V,Q]),Fe=de(o=>{o.statusCodes.has("all")||o.statusCodes.size===0?q(new Set):q(new Set(o.statusCodes)),o.methods.has("all")||o.methods.size===0?N(new Set):N(new Set([...o.methods].map(z=>z))),o.sortBy==="time_asc"?v("oldest"):v("newest")},[q,N,v]),L=J(()=>{let o=0,z=0,T=0,I=0,A=0,W=0;return H.forEach(S=>{const P=typeof S.status=="number"?S.status:parseInt(String(S.status),10);S.status===0||S.status==null||!isNaN(P)&&P>=400?o++:!isNaN(P)&&P>=200&&P<400&&z++,(S.duration||0)>=500&&T++;const B=(S.method||"").toUpperCase();B==="POST"&&I++,B==="GET"&&A++;const K=(S.url||"").toLowerCase(),D=(S.client||"").toLowerCase();(K.includes("graphql")||D.includes("graphql")||D.includes("apollo"))&&W++}),{all:H.length,errors:o,success:z,slow:T,post:I,get:A,graphql:W}},[H]),Le=J(()=>[{id:"all",label:"All",count:L.all,color:e.purple},{id:"errors",label:"Errors",count:L.errors,color:e.errorColor},{id:"success",label:"2xx OK",count:L.success,color:e.greenColor},{id:"slow",label:"Slow >500ms",count:L.slow,color:e.warningIconGold},{id:"POST",label:"POST",count:L.post,color:Se.POST||"#3B82F6"},{id:"GET",label:"GET",count:L.get,color:Se.GET||"#10B981"},{id:"graphql",label:"GraphQL",count:L.graphql,color:e.graphqlPink}],[L]),Be=de(({item:o,index:z})=>{if(o.type==="header")return<Ce index={z}distance={8}>
2
- <Me pageName={o.pageName}color={o.color}stats={o.stats}activeFilters={o.activeFilters}onToggleFilter={ee}isCollapsed={o.isCollapsed}onToggleCollapse={oe}isFirst={o.isFirst}timestamp={o.timestamp}/>
3
- </Ce>;if(o.type==="loadMore"){const{pageName:W,color:S,remainingCount:P,totalCount:B,loadedCount:K,loadMoreStep:D,hasMore:Pe}=o;return<C style={[b.treeNodeRow,b.treeNodeRowLast]}>
1
+ import j,{useCallback as se,useMemo as H,useRef as qe}from"react";import{FlatList as De,Pressable as He,ScrollView as We,Text as V,TextInput as Ge,View as C}from"react-native";import{useInspector as _e}from"./InspectorContext";import O from"../TouchableScale";import Te from"../AnimatedEntrance";import Qe from"../DomainHeader";import Ue from"../LogCard";import Ke from"../EmptyState";import Xe from"../EndOfListFooter";import Je from"./NetworkFilterModal";import b from"../../styles";import{AppColors as o}from"../../styles/AppColors";import{AppFonts as I}from"../../styles/AppFonts";import{METHOD_COLORS as ze}from"../../constants";import{useTranslation as Ye}from"../../i18n";import{SearchIcon as Ze,ClearIcon as Co,TrashIcon as So,SortArrowIcon as To,FilterIcon as Vo,ChevronIcon as Io,CheckIcon as Fo,CircleCheckIcon as Ro,CircleXIcon as Lo,LayersIcon as Ve,ClockIcon as Bo,RequestIcon as Po,ResponseIcon as Eo,AtomIcon as Mo}from"../NetworkIcons";const No=j.memo(()=>{const{groupedData:Q,loadMoreSection:ne,search:F,setSearch:U,setSearchScope:de,quickFilter:K,setQuickFilter:le,handleDelete:Ie,isGroupByPageEnabled:k,setIsGroupByPageEnabled:ke,selectedLogs:X,sortOrder:Fe,setSortOrder:J,statusFilters:R,setStatusFilters:v,methodFilters:L,setMethodFilters:W,latencyFilter:$,setLatencyFilter:Y,protocolFilter:A,setProtocolFilter:Z,networkSortBy:q,setNetworkSortBy:ee,filteredLogs:B,logs:G,toggleSectionFilter:ce,toggleSectionCollapse:ue,minStart:ge,totalRange:pe,newLogIds:he,toggleSelect:me,setSelected:ye,maxNetworkLogs:ae}=_e(),{t:oe}=Ye(),Re=qe(null),[Le,fe]=j.useState(!1),[we,Ce]=j.useState(!1),[te,Se]=j.useState(ae||50);j.useEffect(()=>{Se(ae||50)},[F,K,ae]);const Be=H(()=>k?Q:Q.slice(0,te),[k,Q,te]),Pe=se(e=>e?.id?String(e.id):"",[]),M=H(()=>R.size>0&&!R.has("all")||L.size>0&&!L.has("all")||$!=="all"||A!=="all"||q!=="time_desc",[R,L,$,A,q]),Ee=H(()=>{let e=0;return R.size>0&&!R.has("all")&&(e+=R.size),L.size>0&&!L.has("all")&&(e+=L.size),$!=="all"&&e++,A!=="all"&&e++,q!=="time_desc"&&e++,e},[R,L,$,A,q]),Me=H(()=>({statusCodes:R.size>0?new Set(R):new Set(["all"]),methods:L.size>0?new Set(L):new Set(["all"]),latency:$,protocol:A,sortBy:q}),[R,L,$,A,q]),Ne=se(e=>{e.statusCodes.has("all")||e.statusCodes.size===0?v(new Set):v(new Set(e.statusCodes)),e.methods.has("all")||e.methods.size===0?W(new Set):W(new Set([...e.methods].map(T=>T))),Y(e.latency||"all"),Z(e.protocol||"all"),ee(e.sortBy||"time_desc"),e.sortBy==="time_asc"?J("oldest"):J("newest")},[v,W,Y,Z,ee,J]),P=H(()=>{let e=0,T=0,z=0,x=0,_=0,re=0;return G.forEach(S=>{const N=typeof S.status=="number"?S.status:parseInt(String(S.status),10);S.status===0||S.status==null||!isNaN(N)&&N>=400?e++:!isNaN(N)&&N>=200&&N<400&&T++,(S.duration||0)>=500&&z++;const E=(S.method||"").toUpperCase();E==="POST"&&x++,E==="GET"&&_++;const ie=(S.url||"").toLowerCase(),D=(S.client||"").toLowerCase();(ie.includes("graphql")||D.includes("graphql")||D.includes("apollo"))&&re++}),{all:G.length,errors:e,success:T,slow:z,post:x,get:_,graphql:re}},[G]),Oe=H(()=>[{id:"all",label:"All",count:P.all,color:o.purple},{id:"errors",label:"Errors",count:P.errors,color:o.errorColor},{id:"success",label:"2xx OK",count:P.success,color:o.greenColor},{id:"slow",label:"Slow >500ms",count:P.slow,color:o.warningIconGold},{id:"POST",label:"POST",count:P.post,color:ze.POST||o.blue500},{id:"GET",label:"GET",count:P.get,color:ze.GET||o.emerald500},{id:"graphql",label:"GraphQL",count:P.graphql,color:o.graphqlPink}],[P]),$e=se(({item:e,index:T})=>{if(e.type==="header")return<Te index={T}distance={8}>
2
+ <Qe pageName={e.pageName}color={e.color}stats={e.stats}activeFilters={e.activeFilters}onToggleFilter={ce}isCollapsed={e.isCollapsed}onToggleCollapse={ue}isFirst={e.isFirst}timestamp={e.timestamp}/>
3
+ </Te>;if(e.type==="loadMore"){const{pageName:re,color:S,remainingCount:N,totalCount:E,loadedCount:ie,loadMoreStep:D,hasMore:Ae}=e;return<C style={[b.treeNodeRow,b.treeNodeRowLast]}>
4
4
  <C style={b.treeLines}>
5
5
  <C style={[b.modernTreeLine,{borderColor:S},b.modernTreeLineLast]}/>
6
6
  </C>
7
7
  <C style={b.treeCardWrapper}>
8
- {Pe?<O onPress={()=>Z(W,50)}hitSlop={6}style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingVertical:9,paddingHorizontal:12,marginVertical:3,marginRight:2,borderRadius:10,backgroundColor:`${S}14`,borderWidth:1.5,borderColor:`${S}40`,shadowColor:S,shadowOffset:{width:0,height:1.5},shadowOpacity:.1,shadowRadius:3,elevation:2}}>
8
+ {Ae?<O onPress={()=>ne(re,D||10)}hitSlop={6}style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingVertical:9,paddingHorizontal:12,marginVertical:3,marginRight:2,borderRadius:10,backgroundColor:`${S}14`,borderWidth:1.5,borderColor:`${S}40`,shadowColor:S,shadowOffset:{width:0,height:1.5},shadowOpacity:.1,shadowRadius:3,elevation:2}}>
9
9
  <C style={{flexDirection:"row",alignItems:"center",gap:8}}>
10
10
  <C style={{width:22,height:22,borderRadius:11,backgroundColor:S,alignItems:"center",justifyContent:"center",shadowColor:S,shadowOffset:{width:0,height:1},shadowOpacity:.25,shadowRadius:2,elevation:1}}>
11
- <Ye color={e.white}size={9}direction="down"/>
11
+ <Io color={o.white}size={9}direction="down"/>
12
12
  </C>
13
13
  <C>
14
- <R style={{fontFamily:k.interBold,fontSize:12,color:S}}>
15
- {_("footer.loadMoreRequests",{count:D,defaultValue:`Load ${D} More Requests`})}
16
- </R>
17
- <R style={{fontFamily:k.interRegular,fontSize:9.5,color:e.grayTextWeak,marginTop:1}}>
18
- Showing {K} of {B} requests
19
- </R>
14
+ <V style={{fontFamily:I.interBold,fontSize:12,color:S}}>
15
+ {oe("footer.loadMoreRequests",{count:D,defaultValue:`Load ${D} More Requests`})}
16
+ </V>
17
+ <V style={{fontFamily:I.interRegular,fontSize:9.5,color:o.grayTextWeak,marginTop:1}}>
18
+ Showing {ie} of {E} requests
19
+ </V>
20
20
  </C>
21
21
  </C>
22
22
 
23
23
  <C style={{flexDirection:"row",alignItems:"center",backgroundColor:`${S}25`,paddingHorizontal:8,paddingVertical:4,borderRadius:8,borderWidth:1,borderColor:`${S}40`,gap:3}}>
24
- <R style={{fontFamily:k.interBold,fontSize:10.5,color:S}}>
25
- +{P}
26
- </R>
27
- <R style={{fontFamily:k.interRegular,fontSize:9,color:S}}>
24
+ <V style={{fontFamily:I.interBold,fontSize:10.5,color:S}}>
25
+ +{N}
26
+ </V>
27
+ <V style={{fontFamily:I.interRegular,fontSize:9,color:S}}>
28
28
  more
29
- </R>
29
+ </V>
30
30
  </C>
31
31
  </O>:<C style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingVertical:7,paddingHorizontal:11,marginVertical:3,marginRight:2,borderRadius:9,backgroundColor:`${S}0A`,borderWidth:1,borderColor:`${S}25`}}>
32
32
  <C style={{flexDirection:"row",alignItems:"center",gap:7}}>
33
33
  <C style={{width:17,height:17,borderRadius:8.5,backgroundColor:`${S}25`,alignItems:"center",justifyContent:"center"}}>
34
- <Ze color={S}size={8}/>
34
+ <Fo color={S}size={8}/>
35
35
  </C>
36
- <R style={{fontFamily:k.interMedium,fontSize:11,color:e.grayTextStrong}}>
37
- {_("footer.allLoaded",{count:B,defaultValue:`All ${B} requests loaded`})}
38
- </R>
36
+ <V style={{fontFamily:I.interMedium,fontSize:11,color:o.grayTextStrong}}>
37
+ {oe("footer.allLoaded",{count:E,defaultValue:`All ${E} requests loaded`})}
38
+ </V>
39
39
  </C>
40
40
 
41
41
  <C style={{backgroundColor:`${S}18`,paddingHorizontal:7,paddingVertical:2,borderRadius:6}}>
42
- <R style={{fontFamily:k.interBold,fontSize:9.5,color:S}}>
43
- {B}/{B}
44
- </R>
42
+ <V style={{fontFamily:I.interBold,fontSize:9.5,color:S}}>
43
+ {E}/{E}
44
+ </V>
45
45
  </C>
46
46
  </C>}
47
47
  </C>
48
- </C>}const{log:T,isLast:I,color:A}=o;return<Ce index={z}distance={8}style={[b.treeNodeRow,I&&b.treeNodeRowLast]}>
49
- <C style={b.treeLines}>
50
- <C style={[b.modernTreeLine,{borderColor:A},I&&b.modernTreeLineLast]}/>
51
- {!I&&<C style={[b.modernTreeBranch,{borderColor:A}]}/>}
48
+ </C>}const{log:z,isLast:x,color:_}=e;return<Te index={T}distance={8}style={k?[b.treeNodeRow,x&&b.treeNodeRowLast]:{marginBottom:6,marginHorizontal:2}}>
49
+ {k&&<C style={b.treeLines}>
50
+ <C style={[b.modernTreeLine,{borderColor:_},x&&b.modernTreeLineLast]}/>
51
+ {!x&&<C style={[b.modernTreeBranch,{borderColor:_}]}/>}
52
+ </C>}
53
+ <C style={k?b.treeCardWrapper:{flex:1}}>
54
+ <Ue item={z}isSelected={X.has(z.id)}onToggleSelect={me}onPress={()=>{ye(z)}}timelineMinStart={ge}timelineTotalRange={pe}isNew={he.has(z.id)}searchStr={F}/>
52
55
  </C>
53
- <C style={b.treeCardWrapper}>
54
- <Ee item={T}isSelected={E.has(T.id)}onToggleSelect={ie}onPress={()=>{se(T)}}timelineMinStart={te}timelineTotalRange={re}isNew={le.has(T.id)}searchStr={F}/>
55
- </C>
56
- </Ce>},[te,re,le,E,ie,F,ee,oe,Z,se,_]);return<C style={{flex:1}}>
56
+ </Te>},[k,ge,pe,he,X,me,F,ce,ue,ne,ye,oe]);return<C style={{flex:1}}>
57
57
  <C style={{marginTop:6}}>
58
58
 
59
59
  <C style={b.toolbarRow}>
60
- <C style={[b.searchContainer,ae&&{borderColor:e.purple,borderWidth:1.5}]}>
61
- <Ue color={ae?e.purple:e.grayTextWeak}size={15}/>
62
- <Ae placeholder="Search URL, status, method, headers, body..."placeholderTextColor={e.grayTextWeak}value={F}onChangeText={M}onFocus={()=>ne(!0)}onBlur={()=>ne(!1)}style={b.searchInput}autoCorrect={!1}autoCapitalize="none"/>
60
+ <C style={[b.searchContainer,we&&{borderColor:o.purple,borderWidth:1.5}]}>
61
+ <Ze color={we?o.purple:o.grayTextWeak}size={15}/>
62
+ <Ge placeholder="Search URL, status, method, headers, body..."placeholderTextColor={o.grayTextWeak}value={F}onChangeText={U}onFocus={()=>Ce(!0)}onBlur={()=>Ce(!1)}style={b.searchInput}autoCorrect={!1}autoCapitalize="none"/>
63
63
 
64
64
  {F.length>0&&<C style={{flexDirection:"row",alignItems:"center",gap:4}}>
65
- <C style={{backgroundColor:`${e.purple}20`,borderRadius:10,paddingHorizontal:6,paddingVertical:1.5}}>
66
- <R style={{color:e.purple,fontSize:9.5,fontFamily:k.interBold}}>
67
- {$.length}
68
- </R>
65
+ <C style={{backgroundColor:`${o.purple}20`,borderRadius:10,paddingHorizontal:6,paddingVertical:1.5}}>
66
+ <V style={{color:o.purple,fontSize:9.5,fontFamily:I.interBold}}>
67
+ {B.length}
68
+ </V>
69
69
  </C>
70
- <Ne onPress={()=>M("")}hitSlop={10}style={b.clearBtn}>
71
- <Ke color={e.grayTextWeak}size={13}/>
72
- </Ne>
70
+ <He onPress={()=>U("")}hitSlop={10}style={b.clearBtn}>
71
+ <Co color={o.grayTextWeak}size={13}/>
72
+ </He>
73
73
  </C>}
74
74
  </C>
75
75
 
76
76
  <C style={b.toolbarRight}>
77
- <O style={[b.toolbarBtn,{borderColor:`${e.errorColor}38`,backgroundColor:`${e.errorColor}0F`}]}onPress={Ve}hitSlop={6}>
78
- <Xe color={e.errorColor}size={15}/>
79
- {E.size>0&&<C style={b.trashBadge}>
80
- <R style={b.trashBadgeText}>
81
- {E.size}
82
- </R>
77
+ <O style={[b.toolbarBtn,{borderColor:`${o.errorColor}38`,backgroundColor:`${o.errorColor}0F`}]}onPress={Ie}hitSlop={6}>
78
+ <So color={o.errorColor}size={15}/>
79
+ {X.size>0&&<C style={b.trashBadge}>
80
+ <V style={b.trashBadgeText}>
81
+ {X.size}
82
+ </V>
83
83
  </C>}
84
84
  </O>
85
85
 
86
- <O style={b.toolbarBtn}onPress={()=>v(o=>o==="newest"?"oldest":"newest")}hitSlop={10}>
87
- <Je direction={Q==="newest"?"down":"up"}color={e.grayTextStrong}size={18}/>
86
+ <O style={[b.toolbarBtn,k&&{borderColor:o.purple,backgroundColor:`${o.purple}15`}]}onPress={()=>ke(e=>!e)}hitSlop={6}accessibilityLabel={k?"Page Accordion Grouping Enabled (Tap for Plain List)":"Plain List Enabled (Tap for Page Accordion)"}accessibilityRole="button">
87
+ <Ve color={k?o.purple:o.grayTextStrong}size={16}/>
88
+ {k&&<C style={b.activeFilterDot}/>}
88
89
  </O>
89
90
 
90
- <O style={[b.toolbarBtn,(x.size>0||V.size>0)&&{borderColor:e.purple,backgroundColor:`${e.purple}15`}]}onPress={()=>U(!0)}hitSlop={6}>
91
- <Te color={x.size>0||V.size>0?e.purple:e.grayTextStrong}size={16}/>
92
- {(x.size>0||V.size>0)&&<C style={b.activeFilterDot}/>}
91
+ <O style={b.toolbarBtn}onPress={()=>J(e=>e==="newest"?"oldest":"newest")}hitSlop={10}>
92
+ <To direction={Fe==="newest"?"down":"up"}color={o.grayTextStrong}size={18}/>
93
93
  </O>
94
94
  </C>
95
95
  </C>
96
96
 
97
97
 
98
98
  <C style={{flexDirection:"row",alignItems:"center",marginBottom:8,paddingHorizontal:12,gap:6}}>
99
- <He horizontal showsHorizontalScrollIndicator={!1}style={{flex:1}}contentContainerStyle={{flexDirection:"row",alignItems:"center",gap:6,paddingRight:6}}>
100
- {Le.map(o=>{const z=G===o.id,T=o.color||e.purple,I=z?e.white:T;return<O key={o.id}onPress={()=>{j(z?"all":o.id)}}>
101
- <C style={{flexDirection:"row",alignItems:"center",paddingHorizontal:9,paddingVertical:4.5,borderRadius:8,backgroundColor:z?T:`${T}12`,borderWidth:1,borderColor:z?T:`${T}30`,gap:5}}>
102
- {o.id==="all"&&<To size={11}color={I}/>}
103
- {o.id==="errors"&&<So size={11}color={I}/>}
104
- {o.id==="success"&&<Co size={11}color={I}/>}
105
- {o.id==="slow"&&<Vo size={11}color={I}/>}
106
- {o.id==="POST"&&<Io size={11}color={I}/>}
107
- {o.id==="GET"&&<Ro size={11}color={I}/>}
108
- {o.id==="graphql"&&<Fo size={11}color={I}/>}
109
- <R style={{fontFamily:k.interBold,fontSize:10.5,color:z?e.white:e.primaryBlack}}>
110
- {o.label}
111
- </R>
112
- <C style={{backgroundColor:z?"rgba(255,255,255,0.25)":`${T}20`,paddingHorizontal:5,paddingVertical:1,borderRadius:8}}>
113
- <R style={{fontFamily:k.interBold,fontSize:9,color:z?e.white:T}}>
114
- {o.count}
115
- </R>
99
+ <We horizontal showsHorizontalScrollIndicator={!1}style={{flex:1}}contentContainerStyle={{flexDirection:"row",alignItems:"center",gap:6,paddingRight:6}}>
100
+ {Oe.map(e=>{const T=K===e.id,z=e.color||o.purple,x=T?o.white:z;return<O key={e.id}onPress={()=>{le(T?"all":e.id)}}>
101
+ <C style={{flexDirection:"row",alignItems:"center",paddingHorizontal:9,paddingVertical:4.5,borderRadius:8,backgroundColor:T?z:`${z}12`,borderWidth:1,borderColor:T?z:`${z}30`,gap:5}}>
102
+ {e.id==="all"&&<Ve size={11}color={x}/>}
103
+ {e.id==="errors"&&<Lo size={11}color={x}/>}
104
+ {e.id==="success"&&<Ro size={11}color={x}/>}
105
+ {e.id==="slow"&&<Bo size={11}color={x}/>}
106
+ {e.id==="POST"&&<Po size={11}color={x}/>}
107
+ {e.id==="GET"&&<Eo size={11}color={x}/>}
108
+ {e.id==="graphql"&&<Mo size={11}color={x}/>}
109
+ <V style={{fontFamily:I.interBold,fontSize:10.5,color:T?o.white:o.primaryBlack}}>
110
+ {e.label}
111
+ </V>
112
+ <C style={{backgroundColor:T?"rgba(255,255,255,0.25)":`${z}20`,paddingHorizontal:5,paddingVertical:1,borderRadius:8}}>
113
+ <V style={{fontFamily:I.interBold,fontSize:9,color:T?o.white:z}}>
114
+ {e.count}
115
+ </V>
116
116
  </C>
117
117
  </C>
118
118
  </O>})}
119
- </He>
119
+ </We>
120
120
 
121
- <O onPress={()=>U(!0)}style={{flexShrink:0}}>
122
- <C style={{flexDirection:"row",alignItems:"center",paddingHorizontal:10,paddingVertical:4.5,borderRadius:8,backgroundColor:x.size>0||V.size>0?`${e.purple}20`:e.grayBackground,borderWidth:1,borderColor:x.size>0||V.size>0?e.purple:e.grayBorderSecondary,gap:5,shadowColor:e.black,shadowOpacity:.04,shadowRadius:2,shadowOffset:{width:0,height:1},elevation:1}}>
123
- <Te size={11}color={x.size>0||V.size>0?e.purple:e.grayText}/>
124
- <R style={{fontFamily:k.interBold,fontSize:10.5,color:x.size>0||V.size>0?e.purple:e.grayText}}>
125
- More Filters
126
- </R>
127
- {(x.size>0||V.size>0)&&<C style={{backgroundColor:e.purple,paddingHorizontal:4.5,paddingVertical:1,borderRadius:6}}>
128
- <R style={{fontFamily:k.interBold,fontSize:8.5,color:e.white}}>
129
- {x.size+V.size}
130
- </R>
121
+ <O onPress={()=>fe(!0)}style={{flexShrink:0}}>
122
+ <C style={{flexDirection:"row",alignItems:"center",paddingHorizontal:10,paddingVertical:4.5,borderRadius:8,backgroundColor:M?`${o.purple}20`:o.grayBackground,borderWidth:1,borderColor:M?o.purple:o.grayBorderSecondary,gap:5,shadowColor:o.black,shadowOpacity:.04,shadowRadius:2,shadowOffset:{width:0,height:1},elevation:1}}>
123
+ <Vo size={11}color={M?o.purple:o.grayText}/>
124
+ <V style={{fontFamily:I.interBold,fontSize:10.5,color:M?o.purple:o.grayText}}>
125
+ {oe("network.moreFilters","More Filters")}
126
+ </V>
127
+ {M&&<C style={{backgroundColor:o.purple,paddingHorizontal:4.5,paddingVertical:1,borderRadius:6}}>
128
+ <V style={{fontFamily:I.interBold,fontSize:8.5,color:o.white}}>
129
+ {Ee}
130
+ </V>
131
131
  </C>}
132
132
  </C>
133
133
  </O>
134
134
  </C>
135
135
 
136
136
 
137
- {(G!=="all"||F.trim().length>0||x.size>0||V.size>0||$.length!==H.length)&&<C 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`}}>
138
- <R style={{fontFamily:k.interMedium,fontSize:10.5,color:e.purple}}>
139
- Showing {$.length} of {H.length} requests
140
- </R>
141
- <O onPress={()=>{M(""),j("all"),q(new Set),N(new Set)}}>
142
- <R style={{fontFamily:k.interBold,fontSize:10.5,color:e.errorColor}}>
137
+ {(K!=="all"||F.trim().length>0||M||B.length!==G.length)&&<C style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",marginHorizontal:12,marginBottom:8,paddingHorizontal:10,paddingVertical:5.5,backgroundColor:`${o.purple}10`,borderRadius:8,borderWidth:1,borderColor:`${o.purple}25`}}>
138
+ <V style={{fontFamily:I.interMedium,fontSize:10.5,color:o.purple}}>
139
+ Showing {B.length} of {G.length} requests
140
+ </V>
141
+ <O onPress={()=>{U(""),le("all"),v(new Set),W(new Set),Y("all"),Z("all"),ee("time_desc"),de("all")}}>
142
+ <V style={{fontFamily:I.interBold,fontSize:10.5,color:o.errorColor}}>
143
143
  Clear All Filters
144
- </R>
144
+ </V>
145
145
  </O>
146
146
  </C>}
147
147
  </C>
148
148
 
149
- <$e ref={Ie}data={Y}keyExtractor={o=>o?.id?.toString()}renderItem={Be}initialNumToRender={15}maxToRenderPerBatch={10}windowSize={9}removeClippedSubviews={qe.OS==="android"}renderToHardwareTextureAndroid={!0}ListEmptyComponent={<We isSearch={F.length>0||x.size>0||V.size>0||G!=="all"}searchQuery={F}customTitle={F.length>0?"No matching API requests":"No network activity"}onClearSearch={()=>{M(""),q(new Set),N(new Set),j("all"),xe("all")}}/>}ListFooterComponent={Y.length>0?<Ge count={$.length}totalCount={$.length}label="requests"/>:null}contentContainerStyle={[b.listContent,$.length===0&&{flexGrow:1}]}keyboardShouldPersistTaps="handled"/>
149
+ <De ref={Re}data={Be}keyExtractor={Pe}renderItem={$e}initialNumToRender={10}maxToRenderPerBatch={8}windowSize={5}updateCellsBatchingPeriod={40}removeClippedSubviews={!0}renderToHardwareTextureAndroid={!0}showsVerticalScrollIndicator={!1}ListEmptyComponent={<Ke isSearch={F.length>0||M||K!=="all"}searchQuery={F}customTitle={F.length>0?"No matching API requests":"No network activity"}onClearSearch={()=>{U(""),v(new Set),W(new Set),Y("all"),Z("all"),ee("time_desc"),le("all"),de("all")}}/>}ListFooterComponent={Q.length>0?<Xe count={k?B.length:Math.min(te,B.length)}totalCount={B.length}label="requests"hasMore={!k&&B.length>te}loadMoreStep={30}onLoadMore={()=>Se(e=>e+30)}/>:null}contentContainerStyle={[b.listContent,B.length===0&&{flexGrow:1}]}keyboardShouldPersistTaps="handled"/>
150
150
 
151
151
 
152
- <Qe visible={Re}onClose={()=>U(!1)}filters={ke}onApply={Fe}searchQuery={F}/>
153
- </C>});export default Lo;
152
+ <Je visible={Le}onClose={()=>fe(!1)}filters={Me}onApply={Ne}searchQuery={F}/>
153
+ </C>});export default No;