react-native-inapp-inspector 2.5.0 → 2.5.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 (103) hide show
  1. package/README.ar.md +151 -53
  2. package/README.de.md +150 -52
  3. package/README.es.md +139 -42
  4. package/README.fr.md +151 -53
  5. package/README.hi.md +141 -43
  6. package/README.ja.md +150 -69
  7. package/README.ko.md +153 -55
  8. package/README.md +73 -14
  9. package/README.pt-BR.md +152 -54
  10. package/README.ru.md +153 -55
  11. package/README.zh-CN.md +95 -219
  12. package/android/src/main/java/com/inappinspector/NetworkInspectorModule.kt +154 -9
  13. package/dist/commonjs/capture.d.ts +5 -2
  14. package/dist/commonjs/capture.js +1 -1
  15. package/dist/commonjs/components/Inspector/FabLauncher.js +12 -12
  16. package/dist/commonjs/components/Inspector/FloatingCaptureWidget.js +17 -17
  17. package/dist/commonjs/components/Inspector/InspectorHeader.js +41 -41
  18. package/dist/commonjs/components/Inspector/MainScreen.js +15 -15
  19. package/dist/commonjs/components/Inspector/MediaGalleryTab.js +52 -34
  20. package/dist/commonjs/components/Inspector/MediaPreviewModal.d.ts +20 -18
  21. package/dist/commonjs/components/Inspector/MediaPreviewModal.js +744 -304
  22. package/dist/commonjs/components/NetworkIcons.d.ts +12 -0
  23. package/dist/commonjs/components/NetworkIcons.js +56 -3
  24. package/dist/commonjs/constants/version.d.ts +1 -1
  25. package/dist/commonjs/constants/version.js +1 -1
  26. package/dist/commonjs/i18n/locales/ar.json +1 -1
  27. package/dist/commonjs/i18n/locales/bn.json +1 -1
  28. package/dist/commonjs/i18n/locales/de.json +1 -1
  29. package/dist/commonjs/i18n/locales/en.json +1 -1
  30. package/dist/commonjs/i18n/locales/es.json +1 -1
  31. package/dist/commonjs/i18n/locales/fr.json +1 -1
  32. package/dist/commonjs/i18n/locales/gu.json +1 -1
  33. package/dist/commonjs/i18n/locales/hi.json +1 -1
  34. package/dist/commonjs/i18n/locales/id.json +1 -1
  35. package/dist/commonjs/i18n/locales/it.json +1 -1
  36. package/dist/commonjs/i18n/locales/ja.json +1 -1
  37. package/dist/commonjs/i18n/locales/kn.json +1 -1
  38. package/dist/commonjs/i18n/locales/ko.json +1 -1
  39. package/dist/commonjs/i18n/locales/ml.json +1 -1
  40. package/dist/commonjs/i18n/locales/mr.json +1 -1
  41. package/dist/commonjs/i18n/locales/nl.json +1 -1
  42. package/dist/commonjs/i18n/locales/pa.json +1 -1
  43. package/dist/commonjs/i18n/locales/pl.json +1 -1
  44. package/dist/commonjs/i18n/locales/pt.json +1 -1
  45. package/dist/commonjs/i18n/locales/ru.json +1 -1
  46. package/dist/commonjs/i18n/locales/ta.json +1 -1
  47. package/dist/commonjs/i18n/locales/te.json +1 -1
  48. package/dist/commonjs/i18n/locales/tr.json +1 -1
  49. package/dist/commonjs/i18n/locales/vi.json +1 -1
  50. package/dist/commonjs/i18n/locales/zh.json +1 -1
  51. package/dist/commonjs/index.js +1 -1
  52. package/dist/commonjs/native/NativeInspector.d.ts +4 -0
  53. package/dist/commonjs/native/NativeInspector.js +1 -1
  54. package/dist/commonjs/native/NativeNetworkInspector.d.ts +1 -0
  55. package/dist/commonjs/types/interfaces.d.ts +2 -0
  56. package/dist/esm/capture.d.ts +5 -2
  57. package/dist/esm/capture.js +1 -1
  58. package/dist/esm/components/Inspector/FabLauncher.js +37 -37
  59. package/dist/esm/components/Inspector/FloatingCaptureWidget.js +30 -30
  60. package/dist/esm/components/Inspector/InspectorHeader.js +34 -34
  61. package/dist/esm/components/Inspector/MainScreen.js +51 -51
  62. package/dist/esm/components/Inspector/MediaGalleryTab.js +100 -82
  63. package/dist/esm/components/Inspector/MediaPreviewModal.d.ts +20 -18
  64. package/dist/esm/components/Inspector/MediaPreviewModal.js +774 -334
  65. package/dist/esm/components/NetworkIcons.d.ts +12 -0
  66. package/dist/esm/components/NetworkIcons.js +256 -203
  67. package/dist/esm/constants/version.d.ts +1 -1
  68. package/dist/esm/constants/version.js +1 -1
  69. package/dist/esm/i18n/locales/ar.json +1 -1
  70. package/dist/esm/i18n/locales/bn.json +1 -1
  71. package/dist/esm/i18n/locales/de.json +1 -1
  72. package/dist/esm/i18n/locales/en.json +1 -1
  73. package/dist/esm/i18n/locales/es.json +1 -1
  74. package/dist/esm/i18n/locales/fr.json +1 -1
  75. package/dist/esm/i18n/locales/gu.json +1 -1
  76. package/dist/esm/i18n/locales/hi.json +1 -1
  77. package/dist/esm/i18n/locales/id.json +1 -1
  78. package/dist/esm/i18n/locales/it.json +1 -1
  79. package/dist/esm/i18n/locales/ja.json +1 -1
  80. package/dist/esm/i18n/locales/kn.json +1 -1
  81. package/dist/esm/i18n/locales/ko.json +1 -1
  82. package/dist/esm/i18n/locales/ml.json +1 -1
  83. package/dist/esm/i18n/locales/mr.json +1 -1
  84. package/dist/esm/i18n/locales/nl.json +1 -1
  85. package/dist/esm/i18n/locales/pa.json +1 -1
  86. package/dist/esm/i18n/locales/pl.json +1 -1
  87. package/dist/esm/i18n/locales/pt.json +1 -1
  88. package/dist/esm/i18n/locales/ru.json +1 -1
  89. package/dist/esm/i18n/locales/ta.json +1 -1
  90. package/dist/esm/i18n/locales/te.json +1 -1
  91. package/dist/esm/i18n/locales/tr.json +1 -1
  92. package/dist/esm/i18n/locales/vi.json +1 -1
  93. package/dist/esm/i18n/locales/zh.json +1 -1
  94. package/dist/esm/index.js +3 -3
  95. package/dist/esm/native/NativeInspector.d.ts +4 -0
  96. package/dist/esm/native/NativeInspector.js +1 -1
  97. package/dist/esm/native/NativeNetworkInspector.d.ts +1 -0
  98. package/dist/esm/types/interfaces.d.ts +2 -0
  99. package/ios/NetworkInspectorModule.mm +487 -224
  100. package/package.json +1 -1
  101. package/react-native-inapp-inspector.podspec +1 -1
  102. package/src/native/NativeInspector.ts +22 -0
  103. package/src/native/NativeNetworkInspector.ts +1 -1
@@ -1,54 +1,54 @@
1
- import{useCallback as Z,useEffect as G,useRef as x,useState as E}from"react";import{Animated as o,Dimensions as Be,PanResponder as De,Platform as _,StyleSheet as ee,Text as W,View as S}from"react-native";import Se from"react-native-linear-gradient";import{useInspector as ze}from"./InspectorContext";import N from"../TouchableScale";import{GripVerticalIcon as Ee,ScreenshotCaptureIcon as Fe,ScreenRecordIcon as $e}from"../NetworkIcons";import{ScreenCapture as V}from"../../capture";import{triggerNativeHaptic as B}from"../../native/NativeInspector";import{showToast as v}from"../../helpers/toast";import{AppColors as s}from"../../styles/AppColors";import{AppFonts as xe}from"../../styles/AppFonts";import{useTranslation as Ae}from"../../i18n";import{MediaPreviewModal as Le}from"./MediaPreviewModal";export const FloatingCaptureWidget=()=>{const{refreshMediaCount:R,captureFps:X,captureScale:Y,captureBitrate:F,captureMaxDurationSeconds:j,captureAudioMode:q,activeTab:ve,settingsPage:Re,peekMode:Oe}=ze(),{t:n}=Ae(),[M,D]=E(!1),[Ie,$]=E(!1),[Ce,A]=E(0),I=x(null),[H,T]=E(null),k=x(new o.Value(1)).current,z=x(new o.Value(0)).current,i=x(new o.ValueXY({x:0,y:0})).current,C=x({x:0,y:0});G(()=>{const e=i.x.addListener(a=>C.current.x=a.value),t=i.y.addListener(a=>C.current.y=a.value);return()=>{i.x.removeListener(e),i.y.removeListener(t)}},[i]);const P=x(!1),Ve=x(De.create({onStartShouldSetPanResponder:()=>!1,onStartShouldSetPanResponderCapture:()=>!1,onMoveShouldSetPanResponder:(e,t)=>Math.abs(t.dx)>2||Math.abs(t.dy)>2,onMoveShouldSetPanResponderCapture:(e,t)=>Math.abs(t.dx)>2||Math.abs(t.dy)>2,onPanResponderGrant:()=>{P.current=!0,i.setOffset({x:C.current.x,y:C.current.y}),i.setValue({x:0,y:0})},onPanResponderMove:(e,t)=>{i.setValue({x:t.dx,y:t.dy})},onPanResponderTerminationRequest:()=>!1,onShouldBlockNativeResponder:()=>!0,onPanResponderRelease:()=>{i.flattenOffset(),setTimeout(()=>{P.current=!1},150);const{width:e,height:t}=Be.get("window"),a=e/2-30,J=-a,K=20,Q=-(t-120),L=C.current.x,O=C.current.y;if(L<J||L>a||O<Q||O>K){const ke=Math.min(Math.max(L,J),a),Pe=Math.min(Math.max(O,Q),K);o.spring(i,{toValue:{x:ke,y:Pe},friction:7,tension:50,useNativeDriver:!1}).start()}},onPanResponderTerminate:()=>{i.flattenOffset(),P.current=!1}})).current;G(()=>{V.isRecording().then(e=>{D(e)}).catch(()=>{})},[]),G(()=>{let e=null;return M?(A(0),I.current=setInterval(()=>{A(t=>t+1)},1e3),e=o.loop(o.sequence([o.timing(k,{toValue:1.15,duration:500,useNativeDriver:!0}),o.timing(k,{toValue:1,duration:500,useNativeDriver:!0})])),e.start()):(I.current&&(clearInterval(I.current),I.current=null),A(0),k.setValue(1)),()=>{I.current&&clearInterval(I.current),e&&e.stop()}},[M,k]);const Me=Z(async()=>{if(!P.current)try{B("light"),$(!0),await new Promise(t=>setTimeout(t,60));const e=await V.takeScreenshot({format:"png",quality:.9,hideInspector:!1});if($(!1),o.sequence([o.timing(z,{toValue:.65,duration:70,useNativeDriver:!0}),o.timing(z,{toValue:0,duration:200,useNativeDriver:!0})]).start(),e){B("success");const t={id:`screenshot_${e.timestamp}.png`,type:"image",format:e.format,uri:e.uri,filename:e.uri.split("/").pop()||`screenshot_${e.timestamp}.png`,sizeBytes:e.sizeBytes,timestamp:e.timestamp,width:e.width,height:e.height};T(t),R?.().catch(()=>{}),v(n("header.screenshotCaptured","Screenshot captured"))}else v(n("header.screenshotFailed","Failed to capture screenshot"))}catch{$(!1),v(n("header.screenshotError","Error capturing screenshot"))}},[R,z,n]),U=Z(async()=>{if(!P.current)try{if(M){B("medium");const e=await V.stopRecording();if(D(!1),e){B("success");const t={id:`video_${e.timestamp}.${e.format}`,type:e.format==="gif"?"gif":"video",format:e.format,uri:e.uri,filename:e.uri.split("/").pop()||`video_${e.timestamp}.${e.format}`,sizeBytes:e.sizeBytes,timestamp:e.timestamp,durationMs:e.durationMs,width:e.width,height:e.height,hasAudio:e.hasAudio,thumbnailUri:e.thumbnailUri};T(t),R?.().catch(()=>{}),v(n("header.recordingSaved",{duration:(e.durationMs/1e3).toFixed(1),defaultValue:`Recording saved (${(e.durationMs/1e3).toFixed(1)}s)`}))}}else B("medium"),await V.startRecording({fps:X,scale:Y,audioSource:q,bitrate:F>0?F:void 0,maxDurationSeconds:j})?(D(!0),v(n("header.recordingStarted","Recording started"))):v(n("header.recordingStartFailed","Failed to start recording"))}catch{v(n("header.recordingError","Error during screen recording")),D(!1)}},[M,X,Y,F,j,q,R,n]),Te=e=>{const t=Math.floor(e/60),a=e%60;return`${t<10?"0":""}${t}:${a<10?"0":""}${a}`};return ve==="media"||Re==="media"?null:<>
1
+ import{useCallback as te,useEffect as N,useRef as v,useState as W}from"react";import{Animated as n,Dimensions as De,PanResponder as Fe,Platform as q,StyleSheet as re,Text as X,View as S}from"react-native";import Se from"react-native-linear-gradient";import{useInspector as Be}from"./InspectorContext";import Y from"../TouchableScale";import{GripVerticalIcon as Ee,ScreenshotCaptureIcon as Ae,ScreenRecordIcon as Le}from"../NetworkIcons";import{ScreenCapture as M,generateCaptureId as $}from"../../capture";import{triggerNativeHaptic as B}from"../../native/NativeInspector";import{showToast as x}from"../../helpers/toast";import{AppColors as I}from"../../styles/AppColors";import{AppFonts as ve}from"../../styles/AppFonts";import{useTranslation as Oe}from"../../i18n";import{MediaPreviewModal as Ge}from"./MediaPreviewModal";export const FloatingCaptureWidget=()=>{const{refreshMediaCount:R,captureFps:H,captureScale:U,captureBitrate:E,captureMaxDurationSeconds:_,captureAudioMode:J,activeTab:xe,settingsPage:Ie,peekMode:je,previewMediaItem:A,setPreviewMediaItem:V}=Be(),{t:a}=Oe(),[k,P]=W(!1),[Re,L]=W(!1),[Ce,O]=W(0),C=v(null),D=v(new n.Value(1)).current,z=v(new n.Value(0)).current,i=v(new n.ValueXY({x:0,y:0})).current,T=v({x:0,y:0});N(()=>{const e=i.x.addListener(o=>T.current.x=o.value),t=i.y.addListener(o=>T.current.y=o.value);return()=>{i.x.removeListener(e),i.y.removeListener(t)}},[i]);const F=v(!1),Te=v(Fe.create({onStartShouldSetPanResponder:()=>!0,onStartShouldSetPanResponderCapture:()=>!1,onMoveShouldSetPanResponder:(e,t)=>Math.abs(t.dx)>2||Math.abs(t.dy)>2,onMoveShouldSetPanResponderCapture:(e,t)=>Math.abs(t.dx)>4||Math.abs(t.dy)>4,onPanResponderGrant:()=>{F.current=!0,i.setOffset({x:T.current.x,y:T.current.y}),i.setValue({x:0,y:0})},onPanResponderMove:n.event([null,{dx:i.x,dy:i.y}],{useNativeDriver:!1}),onPanResponderTerminationRequest:()=>!1,onShouldBlockNativeResponder:()=>!0,onPanResponderRelease:()=>{i.flattenOffset(),setTimeout(()=>{F.current=!1},100);const{width:e,height:t}=De.get("window"),o=e/2-20,Q=-o,Z=20,ee=-(t-140),G=T.current.x,j=T.current.y;if(G<Q||G>o||j<ee||j>Z){const ke=Math.min(Math.max(G,Q),o),Pe=Math.min(Math.max(j,ee),Z);n.spring(i,{toValue:{x:ke,y:Pe},friction:7,tension:50,useNativeDriver:!1}).start()}},onPanResponderTerminate:()=>{i.flattenOffset(),F.current=!1}})).current;N(()=>{M.isRecording().then(e=>{P(e)}).catch(()=>{})},[]),N(()=>{let e=null;return k?(O(0),C.current=setInterval(()=>{O(t=>t+1)},1e3),e=n.loop(n.sequence([n.timing(D,{toValue:1.15,duration:500,useNativeDriver:!0}),n.timing(D,{toValue:1,duration:500,useNativeDriver:!0})])),e.start()):(C.current&&(clearInterval(C.current),C.current=null),O(0),D.setValue(1)),()=>{C.current&&clearInterval(C.current),e&&e.stop()}},[k,D]);const Me=te(async()=>{if(!F.current)try{B("light"),L(!0),await new Promise(t=>setTimeout(t,60));const e=await M.takeScreenshot({format:"png",quality:.9,hideInspector:!1});if(L(!1),n.sequence([n.timing(z,{toValue:.65,duration:70,useNativeDriver:!0}),n.timing(z,{toValue:0,duration:200,useNativeDriver:!0})]).start(),e){B("success");const t=$("screenshot",e.format||"png"),o={id:t,type:"image",format:e.format,uri:e.uri,filename:e.uri.split("/").pop()||t,sizeBytes:e.sizeBytes,timestamp:e.timestamp,width:e.width,height:e.height};V(o),R?.().catch(()=>{}),x(a("header.screenshotCaptured","Screenshot captured"))}else x(a("header.screenshotFailed","Failed to capture screenshot"))}catch{L(!1),x(a("header.screenshotError","Error capturing screenshot"))}},[R,z,a]),K=te(async()=>{if(!F.current)try{if(k){B("medium");const e=await M.stopRecording();if(P(!1),e){B("success");const t=$("video",e.format),o={id:t,type:e.format==="gif"?"gif":"video",format:e.format,uri:e.uri,filename:e.uri.split("/").pop()||t,sizeBytes:e.sizeBytes,timestamp:e.timestamp,durationMs:e.durationMs,width:e.width,height:e.height,hasAudio:e.hasAudio,thumbnailUri:e.thumbnailUri};V(o),R?.().catch(()=>{}),x(a("header.recordingSaved",{duration:(e.durationMs/1e3).toFixed(1),defaultValue:`Recording saved (${(e.durationMs/1e3).toFixed(1)}s)`}))}}else B("medium"),P(!0),await M.startRecording({fps:H,scale:U,audioSource:J,bitrate:E>0?E:void 0,maxDurationSeconds:_})?x(a("header.recordingStarted","Recording started")):(P(!1),x(a("header.recordingStartFailed","Failed to start recording")))}catch{x(a("header.recordingError","Error during screen recording")),P(!1)}},[k,H,U,E,_,J,R,a]),Ve=e=>{const t=Math.floor(e/60),o=e%60;return`${t<10?"0":""}${t}:${o<10?"0":""}${o}`};return xe==="media"||Ie==="media"?null:<>
2
2
 
3
- <o.View pointerEvents="none"style={[r.flashOverlay,{opacity:z}]}/>
3
+ <n.View pointerEvents="none"style={[r.flashOverlay,{opacity:z}]}/>
4
4
 
5
- {!Ie&&<o.View{...Ve.panHandlers}style={[r.container,{transform:[{translateX:i.x},{translateY:i.y}]}]}>
5
+ {!Re&&!A&&<n.View{...Te.panHandlers}style={[r.container,{transform:i.getTranslateTransform()}]}>
6
6
 
7
- {M?<S style={r.recordingShadowWrapper}>
8
- <N onPress={U}style={r.recordingPillWrapper}>
7
+ {k?<S style={r.recordingShadowWrapper}>
8
+ <Y onPress={K}style={r.recordingPillWrapper}>
9
9
  <Se colors={["#E11D48","#BE123C"]}start={{x:0,y:0}}end={{x:1,y:0}}style={r.recordingPill}>
10
- <o.View style={[r.recordingDot,{transform:[{scale:k}]}]}/>
11
- <W style={r.recordingText}>
12
- REC {Te(Ce)}
13
- </W>
10
+ <n.View style={[r.recordingDot,{transform:[{scale:D}]}]}/>
11
+ <X style={r.recordingText}>
12
+ REC {Ve(Ce)}
13
+ </X>
14
14
  <S style={r.stopIconBadge}>
15
15
  <S style={r.stopIconSquare}/>
16
16
  </S>
17
17
  </Se>
18
- </N>
18
+ </Y>
19
19
  </S>:<S style={r.dockShadowWrapper}>
20
20
  <Se colors={["#0E1326","#1A1E38","#0E1326"]}start={{x:0,y:0}}end={{x:1,y:0}}style={r.dockBar}>
21
21
 
22
- <S style={r.dragGripArea}pointerEvents="none">
23
- <Ee size={13}color="rgba(255, 255, 255, 0.45)"/>
24
- </S>
25
-
26
-
27
- <N onPress={Me}style={r.menuItemBtn}accessible={!0}accessibilityLabel="Take Screenshot">
22
+ <Y onPress={Me}style={r.menuItemBtn}accessible={!0}accessibilityLabel="Take Screenshot">
28
23
  <S style={[r.menuItemIconCircle,{backgroundColor:"rgba(56, 189, 248, 0.22)"}]}>
29
- <Fe size={14}color={s.sky400}/>
24
+ <Ae size={14}color={I.sky400}/>
30
25
  </S>
31
- <W style={r.menuItemText}>
32
- {n("header.screenshot","Screenshot")}
33
- </W>
34
- </N>
26
+ <X style={r.menuItemText}>
27
+ {a("header.screenshot","Screenshot")}
28
+ </X>
29
+ </Y>
35
30
 
36
31
 
37
32
  <S style={r.dockDivider}/>
38
33
 
39
34
 
40
- <N onPress={U}style={r.menuItemBtn}accessible={!0}accessibilityLabel={n("header.recordScreen","Record Screen")}>
35
+ <Y onPress={K}style={r.menuItemBtn}accessible={!0}accessibilityLabel={a("header.recordScreen","Record Screen")}>
41
36
  <S style={[r.menuItemIconCircle,{backgroundColor:"rgba(244, 63, 94, 0.24)"}]}>
42
- <$e size={14}color={s.rose400||"#FB7185"}/>
37
+ <Le size={14}color={I.rose400||"#FB7185"}/>
43
38
  </S>
44
- <W style={r.menuItemText}>
45
- {n("header.record","Record")}
46
- </W>
47
- </N>
39
+ <X style={r.menuItemText}>
40
+ {a("header.record","Record")}
41
+ </X>
42
+ </Y>
43
+
44
+
45
+ <S style={r.dragGripArea}>
46
+ <Ee size={14}color="rgba(255, 255, 255, 0.55)"/>
47
+ </S>
48
48
  </Se>
49
49
  </S>}
50
- </o.View>}
50
+ </n.View>}
51
51
 
52
52
 
53
- <Le item={H}visible={!!H}onClose={()=>T(null)}onDelete={async e=>{await V.deleteMedia(e.uri),R?.().catch(()=>{}),T(null)}}onConvertToGif={async e=>{const t=await V.convertToGif(e.uri,{fps:12,width:480});t&&(R?.().catch(()=>{}),T({id:`anim_${t.timestamp}.gif`,type:"gif",format:"gif",uri:t.uri,filename:t.uri.split("/").pop()||`anim_${t.timestamp}.gif`,sizeBytes:t.sizeBytes,timestamp:t.timestamp,durationMs:t.durationMs}))}}/>
54
- </>};const r=ee.create({flashOverlay:{...ee.absoluteFillObject,backgroundColor:s.white,zIndex:999999},container:{position:"absolute",bottom:_.OS==="ios"?22:16,alignSelf:"center",alignItems:"center",justifyContent:"center",zIndex:999999,elevation:999999},dockShadowWrapper:{borderRadius:24,backgroundColor:"#0D1120",..._.select({ios:{shadowColor:s.black,shadowOffset:{width:0,height:6},shadowOpacity:.45,shadowRadius:14},android:{elevation:16}})},dockBar:{flexDirection:"row",alignItems:"center",borderRadius:24,width:272,paddingVertical:0,paddingHorizontal:0,overflow:"hidden"},dragGripArea:{paddingLeft:10,paddingRight:2,paddingVertical:10,alignItems:"center",justifyContent:"center"},dockDivider:{width:1,height:20,backgroundColor:"rgba(255, 255, 255, 0.12)"},menuItemBtn:{flex:1,flexDirection:"row",alignItems:"center",justifyContent:"center",gap:7,paddingVertical:9,paddingHorizontal:10},menuItemIconCircle:{width:24,height:24,borderRadius:12,alignItems:"center",justifyContent:"center"},menuItemText:{fontFamily:xe.interSemiBold,fontSize:12,color:s.white,letterSpacing:.1},recordingShadowWrapper:{borderRadius:20,..._.select({ios:{shadowColor:s.black,shadowOffset:{width:0,height:4},shadowOpacity:.4,shadowRadius:10},android:{elevation:12}})},recordingPillWrapper:{borderRadius:20,overflow:"hidden"},recordingPill:{flexDirection:"row",alignItems:"center",gap:7,paddingVertical:6.5,paddingHorizontal:12,borderRadius:20,borderWidth:1.5,borderColor:"rgba(255, 255, 255, 0.35)"},recordingDot:{width:7,height:7,borderRadius:3.5,backgroundColor:s.white},recordingText:{fontFamily:xe.interBold,fontSize:11,color:s.white,letterSpacing:.3},stopIconBadge:{width:16,height:16,borderRadius:8,backgroundColor:"rgba(255, 255, 255, 0.28)",alignItems:"center",justifyContent:"center",marginLeft:2},stopIconSquare:{width:5.5,height:5.5,borderRadius:1,backgroundColor:s.white}});export default FloatingCaptureWidget;
53
+ <Ge item={A}visible={!!A}onClose={()=>V(null)}onDelete={async e=>{await M.deleteMedia(e.uri),R?.().catch(()=>{}),V(null)}}onConvertToGif={async e=>{const t=await M.convertToGif(e.uri,{fps:12,width:480});if(t){R?.().catch(()=>{});const o=$("anim","gif");V({id:o,type:"gif",format:"gif",uri:t.uri,filename:t.uri.split("/").pop()||o,sizeBytes:t.sizeBytes,timestamp:t.timestamp,durationMs:t.durationMs})}}}/>
54
+ </>};const r=re.create({flashOverlay:{...re.absoluteFillObject,backgroundColor:I.white,zIndex:999999},container:{position:"absolute",bottom:q.OS==="ios"?22:16,alignSelf:"center",alignItems:"center",justifyContent:"center",zIndex:999999,elevation:999999},dockShadowWrapper:{borderRadius:24,backgroundColor:"#0D1120",...q.select({ios:{shadowColor:I.black,shadowOffset:{width:0,height:6},shadowOpacity:.45,shadowRadius:14},android:{elevation:16}})},dockBar:{flexDirection:"row",alignItems:"center",borderRadius:24,overflow:"hidden"},dragGripArea:{paddingLeft:6,paddingRight:12,paddingVertical:10,alignItems:"center",justifyContent:"center"},dockDivider:{width:1,height:18,backgroundColor:"rgba(255, 255, 255, 0.14)"},menuItemBtn:{flexDirection:"row",alignItems:"center",justifyContent:"center",gap:7,paddingVertical:8.5,paddingHorizontal:12},menuItemIconCircle:{width:24,height:24,borderRadius:12,alignItems:"center",justifyContent:"center"},menuItemText:{fontFamily:ve.interSemiBold,fontSize:12,color:I.white,letterSpacing:.1},recordingShadowWrapper:{borderRadius:22,alignItems:"center",justifyContent:"center",...q.select({ios:{shadowColor:"#E11D48",shadowOffset:{width:0,height:4},shadowOpacity:.5,shadowRadius:12},android:{elevation:14}})},recordingPillWrapper:{borderRadius:22,overflow:"hidden"},recordingPill:{flexDirection:"row",alignItems:"center",justifyContent:"center",gap:8,height:38,paddingHorizontal:14,borderRadius:22,borderWidth:1.5,borderColor:"rgba(255, 255, 255, 0.45)"},recordingDot:{width:8,height:8,borderRadius:4,backgroundColor:"#FFFFFF"},recordingText:{fontFamily:ve.interBold,fontSize:12,color:I.white,letterSpacing:.4},stopIconBadge:{width:18,height:18,borderRadius:9,backgroundColor:"rgba(255, 255, 255, 0.28)",alignItems:"center",justifyContent:"center",marginLeft:3},stopIconSquare:{width:6,height:6,borderRadius:1.5,backgroundColor:I.white}});export default FloatingCaptureWidget;
@@ -1,14 +1,14 @@
1
- import $,{useMemo as Z}from"react";import{Alert as Ke,Animated as Xe,Linking as Ye,Platform as de,Pressable as Se,StatusBar as Ze,Text as C,TouchableOpacity as Te,useWindowDimensions as et,View as S}from"react-native";import St from"react-native-linear-gradient";import{useInspector as Tt}from"./InspectorContext";import _ from"../TouchableScale";import{BrandCircleIcon as Ct}from"../BrandCircleIcon";import i from"../../styles";import{AppColors as t}from"../../styles/AppColors";import{AppFonts as D}from"../../styles/AppFonts";import{METHOD_COLORS as xt}from"../../constants";import{LIB_VERSION as ce}from"../../constants";import{getStatusColor as ue,formatTime as zt,formatTimeShort as Ce,getSize as xe,formatByteSize as Vt,getAppVersionAndBuild as Dt,showToast as H}from"../../helpers";import{triggerNativeHaptic as A}from"../../native/NativeInspector";import{ScreenCapture as E}from"../../capture";import{UpdateAvailableModal as Rt}from"./UpdateAvailableModal";import{MediaPreviewModal as It}from"./MediaPreviewModal";import{LanguageSelectorModal as Mt}from"./LanguageSelectorModal";import{WhiteBackNavigation as $t,SettingsIcon as Bt,CloseWhite as Lt,ChevronDownIcon as Ve,ClockIcon as G,SizeIcon as De,AppleIcon as Ht,AndroidIcon as At,NpmIcon as Ot,ResetIcon as Pt,BoltIcon as Et,EyeIcon as Wt}from"../NetworkIcons";import{useTranslation as Ft,SUPPORTED_LANGUAGES as ke,getLanguage as Ut}from"../../i18n";const Nt=$.memo(()=>{const{t:I,language:ge}=Ft(),{modalHeightPercent:ee,appIcon:_t,selected:R,setSelected:Re,selectedEvent:B,setSelectedEvent:Ie,selectedLog:L,setSelectedLog:Me,selectedReduxSlice:W,setSelectedReduxSlice:$e,selectedReduxAction:q,setSelectedReduxAction:Be,reduxState:Le,reduxLastActionMap:ve,updateAvailable:te,latestNpmVersion:He,clearAnim:jt,activePulseAnim:Ae,unreadPulseAnim:Oe,runClearAllWithAnimation:Gt,settingsPage:O,setSettingsPage:ie,isAboutOpen:re,setIsAboutOpen:Pe,resetToDefaults:Ee,closeModal:he,minimizeInspector:We,detailTitle:Fe,activeTab:V,environment:pe,selectedCrash:M,setSelectedCrash:Ue,selectedPush:k,setSelectedPush:Ne,selectedSocket:z,setSelectedSocket:_e,refreshMediaCount:F,peekMode:oe,setPeekMode:je}=Tt(),{width:Q}=et(),e=Q<360,U=Q<400,[Ge,ae]=$.useState(!1),[qe,me]=$.useState(!1),[Qe]=$.useState(()=>Dt().formatted),fe=Z(()=>{const T=ge||Ut();return ke.find(x=>x.code===T)||ke[0]},[ge]),[J,K]=$.useState(!1),[qt,le]=$.useState(0),P=$.useRef(null);$.useEffect(()=>{E.isRecording().then(T=>{K(T)}).catch(()=>{})},[]),$.useEffect(()=>(J?(le(0),P.current=setInterval(()=>{le(T=>T+1)},1e3)):(P.current&&(clearInterval(P.current),P.current=null),le(0)),()=>{P.current&&clearInterval(P.current)}),[J]);const[be,N]=$.useState(null),Qt=$.useCallback(async()=>{try{A("light");const T=await E.takeScreenshot({format:"png",quality:.9,hideInspector:!0});if(T){A("success");const x={id:`screenshot_${T.timestamp}.png`,type:"image",format:T.format,uri:T.uri,filename:T.uri.split("/").pop()||`screenshot_${T.timestamp}.png`,sizeBytes:T.sizeBytes,timestamp:T.timestamp,width:T.width,height:T.height};N(x),F?.().catch(()=>{}),H(I("header.screenshotCaptured"))}else H(I("header.screenshotFailed"))}catch{H(I("header.screenshotError"))}},[F,I]),Jt=$.useCallback(async()=>{try{if(J){A("medium");const T=await E.stopRecording();if(K(!1),T){A("success");const x={id:`video_${T.timestamp}.${T.format}`,type:T.format==="gif"?"gif":"video",format:T.format,uri:T.uri,filename:T.uri.split("/").pop()||`video_${T.timestamp}.${T.format}`,sizeBytes:T.sizeBytes,timestamp:T.timestamp,durationMs:T.durationMs,width:T.width,height:T.height,hasAudio:T.hasAudio};N(x),F?.().catch(()=>{}),H(I("header.recordingSaved",{duration:(T.durationMs/1e3).toFixed(1)}))}}else A("medium"),await E.startRecording({fps:24,audioSource:"none"})?(K(!0),H(I("header.recordingStarted"))):H(I("header.recordingStartFailed"))}catch{H(I("header.recordingError")),K(!1)}},[J,I]),Kt=T=>{const x=Math.floor(T/60),se=T%60;return`${x.toString().padStart(2,"0")}:${se.toString().padStart(2,"0")}`},Xt=Z(()=>{const T=(pe||(__DEV__?"DEV":"PROD")).trim(),x=T.toUpperCase();return x==="DEV"||x.includes("DEV")||x==="LOCAL"?{label:T,bg:`${t.emerald500}40`,border:`${t.emerald400}8C`,text:t.mintGreenBorder}:x==="UAT"||x==="QA"||x==="TEST"?{label:T,bg:`${t.amber500}47`,border:`${t.amber400}99`,text:t.amberWarmBorder}:x==="PREPROD"||x==="STAGE"||x==="STAGING"?{label:T,bg:`${t.purple500}47`,border:`${t.purple400}99`,text:t.violetSoftBorder}:{label:T,bg:`${t.rose500}40`,border:`${t.roseBorder}8C`,text:t.errorBorder}},[pe]),X=V==="apis"&&R!=null||V==="analytics"&&B!=null||V==="logs"&&L!=null||V==="redux"&&(W!=null||q!=null)||V==="crash"&&M!=null||V==="push"&&k!=null||V==="socket"&&z!=null,Y=O!==null,ne=X||Y||re,Je=Z(()=>{switch(O){case"apis":return"APIs (Network)";case"logs":return"Console Logs";case"crash":return"Crash Protection";case"analytics":return"Analytics Logger";case"redux":return"Redux Inspector";case"media":return"Screencast (Media)";case"push":return"Push Notifications";default:return"Settings & Modules"}},[O]),ye=Z(()=>de.OS==="ios"?ee>=98?Q>=390?50:44:0:de.OS==="android"&&ee>=98?Ze.currentHeight||24:0,[ee,Q]),v=e?25:U?26.5:27,Yt=e?36:U?38:40;return<>
1
+ import $,{useMemo as Z}from"react";import{Alert as Ke,Animated as Xe,Linking as Ye,Platform as se,Pressable as Se,StatusBar as Ze,Text as C,TouchableOpacity as Te,useWindowDimensions as et,View as S}from"react-native";import St from"react-native-linear-gradient";import{useInspector as Tt}from"./InspectorContext";import G from"../TouchableScale";import{BrandCircleIcon as Ct}from"../BrandCircleIcon";import i from"../../styles";import{AppColors as t}from"../../styles/AppColors";import{AppFonts as D}from"../../styles/AppFonts";import{METHOD_COLORS as xt}from"../../constants";import{LIB_VERSION as de}from"../../constants";import{getStatusColor as ce,formatTime as zt,formatTimeShort as Ce,getSize as xe,formatByteSize as Vt,getAppVersionAndBuild as Dt,showToast as A}from"../../helpers";import{triggerNativeHaptic as O}from"../../native/NativeInspector";import{ScreenCapture as W,generateCaptureId as ue}from"../../capture";import{UpdateAvailableModal as Rt}from"./UpdateAvailableModal";import{MediaPreviewModal as It}from"./MediaPreviewModal";import{LanguageSelectorModal as Mt}from"./LanguageSelectorModal";import{WhiteBackNavigation as $t,SettingsIcon as Bt,CloseWhite as Lt,ChevronDownIcon as Ve,ClockIcon as _,SizeIcon as De,AppleIcon as Ht,AndroidIcon as At,NpmIcon as Ot,ResetIcon as Pt,BoltIcon as Et,EyeIcon as Wt}from"../NetworkIcons";import{useTranslation as Ft,SUPPORTED_LANGUAGES as ke,getLanguage as Ut}from"../../i18n";const Nt=$.memo(()=>{const{t:I,language:ge}=Ft(),{modalHeightPercent:ee,appIcon:jt,selected:R,setSelected:Re,selectedEvent:B,setSelectedEvent:Ie,selectedLog:L,setSelectedLog:Me,selectedReduxSlice:F,setSelectedReduxSlice:$e,selectedReduxAction:q,setSelectedReduxAction:Be,reduxState:Le,reduxLastActionMap:ve,updateAvailable:te,latestNpmVersion:He,clearAnim:Gt,activePulseAnim:Ae,unreadPulseAnim:Oe,runClearAllWithAnimation:_t,settingsPage:P,setSettingsPage:ie,isAboutOpen:re,setIsAboutOpen:Pe,resetToDefaults:Ee,closeModal:he,minimizeInspector:We,detailTitle:Fe,activeTab:V,environment:pe,selectedCrash:M,setSelectedCrash:Ue,selectedPush:k,setSelectedPush:Ne,selectedSocket:z,setSelectedSocket:je,refreshMediaCount:U,peekMode:oe,setPeekMode:Ge,previewMediaItem:me,setPreviewMediaItem:N}=Tt(),{width:Q}=et(),e=Q<360,j=Q<400,[_e,ae]=$.useState(!1),[qt,Qt]=$.useState(!1),[qe,fe]=$.useState(!1),[Qe]=$.useState(()=>Dt().formatted),be=Z(()=>{const T=ge||Ut();return ke.find(x=>x.code===T)||ke[0]},[ge]),[J,K]=$.useState(!1),[Jt,le]=$.useState(0),E=$.useRef(null);$.useEffect(()=>{W.isRecording().then(T=>{K(T)}).catch(()=>{})},[]),$.useEffect(()=>(J?(le(0),E.current=setInterval(()=>{le(T=>T+1)},1e3)):(E.current&&(clearInterval(E.current),E.current=null),le(0)),()=>{E.current&&clearInterval(E.current)}),[J]);const Kt=$.useCallback(async()=>{try{O("light");const T=await W.takeScreenshot({format:"png",quality:.9,hideInspector:!0});if(T){O("success");const x=ue("screenshot",T.format||"png"),H={id:x,type:"image",format:T.format,uri:T.uri,filename:T.uri.split("/").pop()||x,sizeBytes:T.sizeBytes,timestamp:T.timestamp,width:T.width,height:T.height};N(H),U?.().catch(()=>{}),A(I("header.screenshotCaptured"))}else A(I("header.screenshotFailed"))}catch{A(I("header.screenshotError"))}},[U,I]),Xt=$.useCallback(async()=>{try{if(J){O("medium");const T=await W.stopRecording();if(K(!1),T){O("success");const x=ue("video",T.format),H={id:x,type:T.format==="gif"?"gif":"video",format:T.format,uri:T.uri,filename:T.uri.split("/").pop()||x,sizeBytes:T.sizeBytes,timestamp:T.timestamp,durationMs:T.durationMs,width:T.width,height:T.height,hasAudio:T.hasAudio};N(H),U?.().catch(()=>{}),A(I("header.recordingSaved",{duration:(T.durationMs/1e3).toFixed(1)}))}}else O("medium"),await W.startRecording({fps:24,audioSource:"none"})?(K(!0),A(I("header.recordingStarted"))):A(I("header.recordingStartFailed"))}catch{A(I("header.recordingError")),K(!1)}},[J,I]),Yt=T=>{const x=Math.floor(T/60),H=T%60;return`${x.toString().padStart(2,"0")}:${H.toString().padStart(2,"0")}`},Zt=Z(()=>{const T=(pe||(__DEV__?"DEV":"PROD")).trim(),x=T.toUpperCase();return x==="DEV"||x.includes("DEV")||x==="LOCAL"?{label:T,bg:`${t.emerald500}40`,border:`${t.emerald400}8C`,text:t.mintGreenBorder}:x==="UAT"||x==="QA"||x==="TEST"?{label:T,bg:`${t.amber500}47`,border:`${t.amber400}99`,text:t.amberWarmBorder}:x==="PREPROD"||x==="STAGE"||x==="STAGING"?{label:T,bg:`${t.purple500}47`,border:`${t.purple400}99`,text:t.violetSoftBorder}:{label:T,bg:`${t.rose500}40`,border:`${t.roseBorder}8C`,text:t.errorBorder}},[pe]),X=V==="apis"&&R!=null||V==="analytics"&&B!=null||V==="logs"&&L!=null||V==="redux"&&(F!=null||q!=null)||V==="crash"&&M!=null||V==="push"&&k!=null||V==="socket"&&z!=null,Y=P!==null,ne=X||Y||re,Je=Z(()=>{switch(P){case"apis":return"APIs (Network)";case"logs":return"Console Logs";case"crash":return"Crash Protection";case"analytics":return"Analytics Logger";case"redux":return"Redux Inspector";case"media":return"Screencast (Media)";case"push":return"Push Notifications";default:return"Settings & Modules"}},[P]),ye=Z(()=>se.OS==="ios"?ee>=98?Q>=390?50:44:0:se.OS==="android"&&ee>=98?Ze.currentHeight||24:0,[ee,Q]),v=e?25:j?26.5:27,ei=e?36:j?38:40;return<>
2
2
  <S style={[i.headerGradient,{minHeight:(e?44:48)+ye}]}>
3
3
 
4
4
  <St colors={[t.indigo600,t.violet600]}start={{x:0,y:0}}end={{x:1,y:1}}style={{position:"absolute",top:0,left:0,right:0,bottom:0,borderTopLeftRadius:20,borderTopRightRadius:20}}pointerEvents="none"/>
5
5
  <S style={{paddingTop:ye,width:"100%"}}>
6
6
  <S style={[i.header,{width:"100%",justifyContent:"space-between",paddingHorizontal:e?10:12,paddingVertical:5.5,minHeight:e?44:48}]}>
7
7
  <S style={{flexDirection:"row",alignItems:"center",gap:e?7:8,flex:X?void 0:1,flexShrink:X?0:1,minWidth:0}}>
8
- {ne&&<_ onPress={()=>{if(re){Pe(!1);return}if(Y){ie(O==="main"?null:"main");return}Re(null),Ie(null),Me(null),$e(null),Be(null),Ue(null),Ne(null),_e(null)}}hitSlop={15}style={{width:e?32:36,height:e?32:36,borderRadius:e?16:18,alignItems:"center",justifyContent:"center",backgroundColor:`${t.white}2E`,borderWidth:1,borderColor:`${t.white}4D`}}>
8
+ {ne&&<G onPress={()=>{if(re){Pe(!1);return}if(Y){ie(P==="main"?null:"main");return}Re(null),Ie(null),Me(null),$e(null),Be(null),Ue(null),Ne(null),je(null)}}hitSlop={15}style={{width:e?32:36,height:e?32:36,borderRadius:e?16:18,alignItems:"center",justifyContent:"center",backgroundColor:`${t.white}2E`,borderWidth:1,borderColor:`${t.white}4D`}}>
9
9
  <S style={{position:"absolute",width:e?40:44,height:e?40:44,borderRadius:22,backgroundColor:`${t.white}1A`}}/>
10
10
  <$t/>
11
- </_>}
11
+ </G>}
12
12
 
13
13
  {re?<S style={{gap:3,flex:1,minWidth:0,justifyContent:"center"}}>
14
14
  <S style={{flexDirection:"row",alignItems:"center",gap:6}}>
@@ -17,7 +17,7 @@ import $,{useMemo as Z}from"react";import{Alert as Ke,Animated as Xe,Linking as
17
17
  </C>
18
18
  <S style={{backgroundColor:`${t.white}26`,paddingHorizontal:e?5:6,paddingVertical:2,borderRadius:8,borderWidth:1,borderColor:`${t.white}20`}}>
19
19
  <C style={{fontFamily:D.interBold,fontSize:e?8.5:9.5,lineHeight:12,color:t.white}}>
20
- v{ce}
20
+ v{de}
21
21
  </C>
22
22
  </S>
23
23
  </S>
@@ -29,39 +29,39 @@ import $,{useMemo as Z}from"react";import{Alert as Ke,Animated as Xe,Linking as
29
29
  <C style={{fontFamily:D.interBold,fontSize:e?15:16.5,lineHeight:e?19:21,color:t.white,letterSpacing:-.2}}numberOfLines={1}>
30
30
  {Je}
31
31
  </C>
32
- {O==="main"&&<S style={{backgroundColor:`${t.white}26`,paddingHorizontal:e?5:6,paddingVertical:2,borderRadius:8,borderWidth:1,borderColor:`${t.white}20`}}>
32
+ {P==="main"&&<S style={{backgroundColor:`${t.white}26`,paddingHorizontal:e?5:6,paddingVertical:2,borderRadius:8,borderWidth:1,borderColor:`${t.white}20`}}>
33
33
  <C style={{fontFamily:D.interBold,fontSize:e?8.5:9.5,lineHeight:12,color:t.white}}>
34
- v{ce}
34
+ v{de}
35
35
  </C>
36
36
  </S>}
37
37
  </S>
38
38
  <C style={{fontFamily:D.interRegular,fontSize:e?10:11,lineHeight:e?14:15,color:`${t.white}CC`,marginTop:1}}numberOfLines={1}>
39
- {O==="main"?"Manage modules and preferences":"Configure module parameters"}
39
+ {P==="main"?"Manage modules and preferences":"Configure module parameters"}
40
40
  </C>
41
41
  </S>:ne?null:<S style={{flexDirection:"row",alignItems:"center",gap:e?8:10,flex:1,minWidth:0,marginRight:4}}>
42
- <Ct size={e?44:U?46:48}/>
42
+ <Ct size={e?44:j?46:48}/>
43
43
  <S style={{gap:3,flex:1,minWidth:0,justifyContent:"center"}}>
44
44
 
45
- <C style={[i.headerTitle,{fontFamily:D.interBold,fontWeight:"700",fontSize:e?13:U?13.5:14.5,lineHeight:e?17:U?18:19.5,color:t.white,letterSpacing:-.2,paddingBottom:0}]}numberOfLines={1}ellipsizeMode="tail">
45
+ <C style={[i.headerTitle,{fontFamily:D.interBold,fontWeight:"700",fontSize:e?13:j?13.5:14.5,lineHeight:e?17:j?18:19.5,color:t.white,letterSpacing:-.2,paddingBottom:0}]}numberOfLines={1}ellipsizeMode="tail">
46
46
  react-native-inapp-inspector
47
47
  </C>
48
48
 
49
49
 
50
50
  <S style={{flexDirection:"row",alignItems:"center",gap:4.5,minWidth:0,marginTop:1.5}}>
51
51
 
52
- <_ onPress={()=>{A("light"),me(!0)}}hitSlop={6}accessible={!0}accessibilityRole="button"accessibilityLabel={I("settings.general.selectLanguage","Select Language")}style={{flexDirection:"row",alignItems:"center",backgroundColor:`${t.white}24`,borderRadius:5,paddingHorizontal:5.5,paddingVertical:2,gap:3.5,borderWidth:1,borderColor:`${t.white}38`,flexShrink:0}}>
52
+ <G onPress={()=>{O("light"),fe(!0)}}hitSlop={6}accessible={!0}accessibilityRole="button"accessibilityLabel={I("settings.general.selectLanguage","Select Language")}style={{flexDirection:"row",alignItems:"center",backgroundColor:`${t.white}24`,borderRadius:5,paddingHorizontal:5.5,paddingVertical:2,gap:3.5,borderWidth:1,borderColor:`${t.white}38`,flexShrink:0}}>
53
53
  <C style={{fontSize:9,lineHeight:11}}>
54
- {fe?.flag||"\u{1F310}"}
54
+ {be?.flag||"\u{1F310}"}
55
55
  </C>
56
56
  <C style={{fontFamily:D.interBold,fontSize:8.5,lineHeight:11,color:t.white,letterSpacing:.2}}numberOfLines={1}>
57
- {fe?.code?.toUpperCase()||"EN"}
57
+ {be?.code?.toUpperCase()||"EN"}
58
58
  </C>
59
59
  <Ve size={6.5}color={`${t.white}CC`}/>
60
- </_>
60
+ </G>
61
61
 
62
62
 
63
63
  <S style={{flexDirection:"row",alignItems:"center",backgroundColor:`${t.white}1F`,borderRadius:5,paddingHorizontal:5.5,paddingVertical:2,gap:3.5,borderWidth:1,borderColor:`${t.white}2E`,flexShrink:1,minWidth:0}}>
64
- {de.OS==="ios"?<Ht color={`${t.white}E6`}size={9}/>:<At color={`${t.white}E6`}size={9}/>}
64
+ {se.OS==="ios"?<Ht color={`${t.white}E6`}size={9}/>:<At color={`${t.white}E6`}size={9}/>}
65
65
  <C style={{fontFamily:D.interMedium,fontSize:8.5,lineHeight:11,color:`${t.white}EB`,letterSpacing:.1}}numberOfLines={1}ellipsizeMode="tail">
66
66
  {Qe}
67
67
  </C>
@@ -71,7 +71,7 @@ import $,{useMemo as Z}from"react";import{Alert as Ke,Animated as Xe,Linking as
71
71
  <Se onPress={()=>{te?ae(!0):Ye.openURL("https://www.npmjs.com/package/react-native-inapp-inspector").catch(()=>{})}}style={{flexDirection:"row",alignItems:"center",backgroundColor:`${t.white}1F`,borderRadius:5,paddingHorizontal:6,paddingVertical:2,gap:3.5,borderWidth:1,borderColor:`${t.white}2E`,flexShrink:0}}>
72
72
  <Ot size={9}color={t.npmRedLight}/>
73
73
  <C style={{fontFamily:D.interMedium,fontSize:8.5,lineHeight:11,color:`${t.white}EB`,letterSpacing:.1}}>
74
- v{ce}
74
+ v{de}
75
75
  </C>
76
76
  {te&&<C style={{fontFamily:D.interBold,fontSize:8,color:t.warningAmber}}>
77
77
  ●
@@ -104,14 +104,14 @@ import $,{useMemo as Z}from"react";import{Alert as Ke,Animated as Xe,Linking as
104
104
  </C>
105
105
  </S>
106
106
  <S style={{flexDirection:"row",alignItems:"center",gap:e?4:6,marginTop:3,paddingVertical:1}}>
107
- <S style={{flexDirection:"row",alignItems:"center",gap:4,paddingHorizontal:e?6:8,paddingVertical:2.5,borderRadius:20,backgroundColor:`${ue(R.status)}26`,borderWidth:1,borderColor:`${ue(R.status)}55`}}>
108
- <S style={[i.headerStatusDot,{backgroundColor:ue(R.status),width:e?6:7,height:e?6:7}]}/>
107
+ <S style={{flexDirection:"row",alignItems:"center",gap:4,paddingHorizontal:e?6:8,paddingVertical:2.5,borderRadius:20,backgroundColor:`${ce(R.status)}26`,borderWidth:1,borderColor:`${ce(R.status)}55`}}>
108
+ <S style={[i.headerStatusDot,{backgroundColor:ce(R.status),width:e?6:7,height:e?6:7}]}/>
109
109
  <C style={[i.headerSubTitle,{fontFamily:D.interBold,fontSize:e?10:11}]}>
110
110
  {R.status===0?"Failed":R.status??"Pending"}
111
111
  </C>
112
112
  </S>
113
113
  <S style={{flexDirection:"row",alignItems:"center",gap:4,paddingHorizontal:e?6:8,paddingVertical:2.5,borderRadius:20,backgroundColor:`${t.white}29`}}>
114
- <G color={t.white}size={e?10:11}/>
114
+ <_ color={t.white}size={e?10:11}/>
115
115
  <C style={[i.headerSubTitle,{fontSize:e?10:11}]}>
116
116
  {R.duration!=null?`${R.duration}ms`:"\u2014"}
117
117
  </C>
@@ -159,13 +159,13 @@ import $,{useMemo as Z}from"react";import{Alert as Ke,Animated as Xe,Linking as
159
159
  </S>
160
160
  <S style={{flexDirection:"row",alignItems:"center",gap:e?4:6,marginTop:3,paddingVertical:1}}>
161
161
  <S style={{flexDirection:"row",alignItems:"center",gap:4,paddingHorizontal:e?6:8,paddingVertical:2.5,borderRadius:20,backgroundColor:`${t.white}29`}}>
162
- <G color={t.white}size={e?10:11}/>
162
+ <_ color={t.white}size={e?10:11}/>
163
163
  <C style={[i.headerSubTitle,{fontSize:e?10:11}]}>
164
164
  {zt(L.timestamp)}
165
165
  </C>
166
166
  </S>
167
167
  </S>
168
- </S>:V==="redux"&&W!=null?(()=>{const T=Le?.[W],x=T&&typeof T=="object"?Object.keys(T).length:typeof T<"u"?1:0,se=xe(T),we=ve[W];return<S style={i.headerDetailCenter}>
168
+ </S>:V==="redux"&&F!=null?(()=>{const T=Le?.[F],x=T&&typeof T=="object"?Object.keys(T).length:typeof T<"u"?1:0,H=xe(T),we=ve[F];return<S style={i.headerDetailCenter}>
169
169
  <S style={i.headerDetailRow}>
170
170
  <S style={[i.headerMethodBadge,{backgroundColor:`${t.purple}4D`,paddingHorizontal:e?5:6,paddingVertical:e?2:3}]}>
171
171
  <C style={[i.headerMethodText,{fontSize:e?9:10}]}>
@@ -173,7 +173,7 @@ import $,{useMemo as Z}from"react";import{Alert as Ke,Animated as Xe,Linking as
173
173
  </C>
174
174
  </S>
175
175
  <C style={[i.headerDetailTitle,{fontSize:e?13.5:15}]}numberOfLines={1}ellipsizeMode="middle">
176
- {W}
176
+ {F}
177
177
  </C>
178
178
  </S>
179
179
  <S style={{flexDirection:"row",alignItems:"center",gap:e?4:6,marginTop:3,paddingVertical:1}}>
@@ -191,14 +191,14 @@ import $,{useMemo as Z}from"react";import{Alert as Ke,Animated as Xe,Linking as
191
191
  •
192
192
  </C>
193
193
  <C style={[i.headerSubTitle,{fontSize:e?10:11}]}>
194
- {se}
194
+ {H}
195
195
  </C>
196
196
  {we?.timestamp&&<>
197
197
  <C style={[i.headerSubTitle,{opacity:.6,fontSize:e?10:11}]}>
198
198
  •
199
199
  </C>
200
200
  <S style={{flexDirection:"row",alignItems:"center",gap:3}}>
201
- <G color={t.white}size={e?9:10}/>
201
+ <_ color={t.white}size={e?9:10}/>
202
202
  <C style={[i.headerSubTitle,{fontSize:e?10:11}]}>
203
203
  {we.timestamp}
204
204
  </C>
@@ -266,7 +266,7 @@ import $,{useMemo as Z}from"react";import{Alert as Ke,Animated as Xe,Linking as
266
266
  </C>
267
267
  </S>
268
268
  <S style={{flexDirection:"row",alignItems:"center",gap:4,paddingHorizontal:e?6:8,paddingVertical:2,borderRadius:20,backgroundColor:`${t.white}29`}}>
269
- <G color={t.white}size={e?9.5:10.5}/>
269
+ <_ color={t.white}size={e?9.5:10.5}/>
270
270
  <C style={[i.headerSubTitle,{fontSize:e?9.5:10.5}]}>
271
271
  {Ce(k.timestamp)}
272
272
  </C>
@@ -291,7 +291,7 @@ import $,{useMemo as Z}from"react";import{Alert as Ke,Animated as Xe,Linking as
291
291
  </C>
292
292
  </S>
293
293
  <S style={{flexDirection:"row",alignItems:"center",gap:4,paddingHorizontal:e?6:8,paddingVertical:2.5,borderRadius:20,backgroundColor:`${t.white}29`}}>
294
- <G color={t.white}size={e?10:11}/>
294
+ <_ color={t.white}size={e?10:11}/>
295
295
  <C style={[i.headerSubTitle,{fontSize:e?10:11}]}>
296
296
  {z.duration!=null?`${z.duration}ms`:Ce(z.startTime)}
297
297
  </C>
@@ -308,18 +308,18 @@ import $,{useMemo as Z}from"react";import{Alert as Ke,Animated as Xe,Linking as
308
308
 
309
309
  <S style={[i.headerRight,{flexDirection:"row",alignItems:"center",justifyContent:"flex-end",flexShrink:0,gap:e?4:5}]}>
310
310
 
311
- {Y?<_ onPress={()=>{Ke.alert("Reset All Settings","This restores all module visibility and UI preferences to defaults. Continue?",[{text:"Cancel",style:"cancel"},{text:"Reset",style:"destructive",onPress:Ee}])}}hitSlop={15}style={[i.closeButtonSquare,{width:v,height:v,borderRadius:e?6:7,backgroundColor:"rgba(245, 158, 11, 0.26)",borderColor:"rgba(252, 211, 77, 0.45)",borderWidth:1}]}>
311
+ {Y?<G onPress={()=>{Ke.alert("Reset All Settings","This restores all module visibility and UI preferences to defaults. Continue?",[{text:"Cancel",style:"cancel"},{text:"Reset",style:"destructive",onPress:Ee}])}}hitSlop={15}style={[i.closeButtonSquare,{width:v,height:v,borderRadius:e?6:7,backgroundColor:"rgba(245, 158, 11, 0.26)",borderColor:"rgba(252, 211, 77, 0.45)",borderWidth:1}]}>
312
312
  <Pt color={t.white}size={e?12:14}/>
313
- </_>:ne?null:<>
313
+ </G>:ne?null:<>
314
314
 
315
- <_ accessible={!0}accessibilityRole="button"accessibilityLabel={oe?"Disable peek-through":"Enable peek-through"}onPress={()=>{A("light"),je(T=>!T)}}hitSlop={15}style={[i.closeButtonSquare,{width:v,height:v,borderRadius:e?6:7,backgroundColor:oe?"rgba(6, 182, 212, 0.38)":"rgba(6, 182, 212, 0.18)",borderColor:oe?"rgba(103, 232, 249, 0.65)":"rgba(103, 232, 249, 0.35)",borderWidth:1}]}>
315
+ <G accessible={!0}accessibilityRole="button"accessibilityLabel={oe?"Disable peek-through":"Enable peek-through"}onPress={()=>{O("light"),Ge(T=>!T)}}hitSlop={15}style={[i.closeButtonSquare,{width:v,height:v,borderRadius:e?6:7,backgroundColor:oe?"rgba(6, 182, 212, 0.38)":"rgba(6, 182, 212, 0.18)",borderColor:oe?"rgba(103, 232, 249, 0.65)":"rgba(103, 232, 249, 0.35)",borderWidth:1}]}>
316
316
  <Wt color={t.white}size={e?12:14}/>
317
- </_>
317
+ </G>
318
318
 
319
319
 
320
- <_ accessible={!0}accessibilityRole="button"accessibilityLabel="Settings"onPress={()=>ie("main")}hitSlop={15}style={[i.closeButtonSquare,{width:v,height:v,borderRadius:e?6:7,backgroundColor:"rgba(168, 85, 247, 0.28)",borderColor:"rgba(216, 180, 254, 0.45)",borderWidth:1}]}>
320
+ <G accessible={!0}accessibilityRole="button"accessibilityLabel="Settings"onPress={()=>ie("main")}hitSlop={15}style={[i.closeButtonSquare,{width:v,height:v,borderRadius:e?6:7,backgroundColor:"rgba(168, 85, 247, 0.28)",borderColor:"rgba(216, 180, 254, 0.45)",borderWidth:1}]}>
321
321
  <Bt color={t.white}size={e?12:14}/>
322
- </_>
322
+ </G>
323
323
  </>}
324
324
 
325
325
 
@@ -337,11 +337,11 @@ import $,{useMemo as Z}from"react";import{Alert as Ke,Animated as Xe,Linking as
337
337
  </S>
338
338
 
339
339
 
340
- <Rt visible={Ge}latestVersion={He}onClose={()=>ae(!1)}/>
340
+ <Rt visible={_e}latestVersion={He}onClose={()=>ae(!1)}/>
341
341
 
342
342
 
343
- <Mt visible={qe}onClose={()=>me(!1)}/>
343
+ <Mt visible={qe}onClose={()=>fe(!1)}/>
344
344
 
345
345
 
346
- <It item={be}visible={!!be}onClose={()=>N(null)}onDelete={async T=>{await E.deleteMedia(T.uri),F?.().catch(()=>{}),N(null)}}onConvertToGif={async T=>{const x=await E.convertToGif(T.uri,{fps:12,width:480});x&&(F?.().catch(()=>{}),N({id:`anim_${x.timestamp}.gif`,type:"gif",format:"gif",uri:x.uri,filename:x.uri.split("/").pop()||`anim_${x.timestamp}.gif`,sizeBytes:x.sizeBytes,timestamp:x.timestamp,durationMs:x.durationMs}))}}/>
346
+ <It item={me}visible={!!me}onClose={()=>N(null)}onDelete={async T=>{await W.deleteMedia(T.uri),U?.().catch(()=>{}),N(null)}}onConvertToGif={async T=>{const x=await W.convertToGif(T.uri,{fps:12,width:480});if(x){U?.().catch(()=>{});const H=ue("anim","gif");N({id:H,type:"gif",format:"gif",uri:x.uri,filename:x.uri.split("/").pop()||H,sizeBytes:x.sizeBytes,timestamp:x.timestamp,durationMs:x.durationMs})}}}/>
347
347
  </>});export default Nt;
@@ -1,20 +1,20 @@
1
- import ne,{useEffect as A,useRef as P}from"react";import{Animated as o,Modal as Se,Platform as z,Pressable as Be,StatusBar as Ce,StyleSheet as v,View as B}from"react-native";import{useInspector as Ve}from"./InspectorContext";import Me from"../ErrorBoundary";import S from"../ModuleErrorBoundary";import Ne from"./FabLauncher";import Re from"./InspectorHeader";import{SecondaryTelemetryStrip as De}from"./SecondaryTelemetryStrip";import Te from"./TabBar";import Ee from"./NetworkTab";import Ae from"./NetworkDetail";import Pe from"./LogDetail";import Le from"./ConsoleTab";import Ie from"./AnalyticsTab";import Oe from"../AnalyticsDetail";import We from"./ReduxTab";import Fe from"./ReduxDetail";import Ge from"./CrashTab";import He from"./CrashDetail";import Ye from"./PushTab";import Ue from"./PushDetail";import _e from"./SocketTab";import $e from"./SocketDetail";import Je from"./DeviceInfoTab";import Ke from"./StorageTab";import Qe from"./DebuggingTab";import{MediaGalleryTab as Xe}from"./MediaGalleryTab";import Ze from"./SettingsPanel";import So from"./AboutModal";import{SupportPage as Bo}from"./SupportPage";import{ConfirmationModal as Co}from"./ConfirmationModal";import{FloatingCaptureWidget as Vo}from"./FloatingCaptureWidget";import Mo from"./NpmUpdateToast";import No from"./NpmStarPrompt";import Ro from"../Toast";import G from"../../styles";import{AppColors as k}from"../../styles/AppColors";import Do from"./NavigationTracker";import{isLocalDebugEnvironment as To}from"../../helpers";const xo=()=>{const{visible:L,modalAnimationType:C,closeModal:V,modalHeightPercent:I,selected:q,selectedEvent:O,selectedLog:H,selectedReduxSlice:_,selectedReduxAction:$,selectedCrash:Y,selectedPush:W,setSelectedPush:j,selectedSocket:F,setSelectedSocket:J,settingsPage:N,isAboutOpen:R,setIsAboutOpen:K,isSupportOpen:D,setIsSupportOpen:Q,activeTab:e,isReady:X,enabled:Z,isDismissed:ee,hasNavigationContext:oe,setNavState:re,confirmModal:M,setConfirmModal:te,peekMode:ae,peekOpacity:ie}=Ve(),U=e==="apis"&&q!=null||e==="analytics"&&O!=null||e==="logs"&&H!=null||e==="redux"&&(_!=null||$!=null)||e==="crash"&&Y!=null||e==="push"&&W!=null||e==="socket"&&F!=null,T=P(new o.Value(0)).current;A(()=>{N!==null&&(T.setValue(0),o.spring(T,{toValue:1,friction:8,tension:65,useNativeDriver:!1}).start())},[N!==null]);const x=P(new o.Value(0)).current;A(()=>{R&&(x.setValue(0),o.spring(x,{toValue:1,friction:8,tension:65,useNativeDriver:!1}).start())},[R]);const E=P(new o.Value(0)).current;return A(()=>{D&&(E.setValue(0),o.spring(E,{toValue:1,friction:8,tension:65,useNativeDriver:!1}).start())},[D]),<>
2
- {(z.OS==="ios"||z.OS==="android")&&Z&&!ee&&!L&&<Ne/>}
3
- <Se visible={L}animationType={C}transparent statusBarTranslucent={!0}onRequestClose={V}>
4
- <Me onClose={V}>
5
- <B style={[G.modalBackdrop,{zIndex:999999,elevation:999999}]}>
6
- <Be style={G.modalBackdropPressable}onPress={V}/>
7
- <B style={[G.modalContentCard,{height:`${I}%`,borderTopLeftRadius:I>=100?0:20,borderTopRightRadius:I>=100?0:20,backgroundColor:k.contentBg||k.grayBackground,opacity:ae?Math.max(ie||.75,.7):1,zIndex:9999999,elevation:999999}]}>
1
+ import se,{useEffect as P,useRef as L}from"react";import{Animated as o,Modal as Se,Platform as G,Pressable as Be,StatusBar as Ce,StyleSheet as N,View as B}from"react-native";import{useInspector as Ve}from"./InspectorContext";import Me from"../ErrorBoundary";import S from"../ModuleErrorBoundary";import Ne from"./FabLauncher";import Re from"./InspectorHeader";import{SecondaryTelemetryStrip as De}from"./SecondaryTelemetryStrip";import Te from"./TabBar";import Ee from"./NetworkTab";import Ae from"./NetworkDetail";import Pe from"./LogDetail";import Le from"./ConsoleTab";import Ie from"./AnalyticsTab";import Oe from"../AnalyticsDetail";import We from"./ReduxTab";import Fe from"./ReduxDetail";import Ge from"./CrashTab";import He from"./CrashDetail";import Ye from"./PushTab";import Ue from"./PushDetail";import _e from"./SocketTab";import $e from"./SocketDetail";import Je from"./DeviceInfoTab";import Ke from"./StorageTab";import Qe from"./DebuggingTab";import{MediaGalleryTab as Xe}from"./MediaGalleryTab";import Ze from"./SettingsPanel";import So from"./AboutModal";import{SupportPage as Bo}from"./SupportPage";import{ConfirmationModal as Co}from"./ConfirmationModal";import{FloatingCaptureWidget as Vo}from"./FloatingCaptureWidget";import Mo from"./NpmUpdateToast";import No from"./NpmStarPrompt";import Ro from"../Toast";import q from"../../styles";import{AppColors as C}from"../../styles/AppColors";import Do from"./NavigationTracker";import{isLocalDebugEnvironment as To}from"../../helpers";const xo=()=>{const{visible:I,modalAnimationType:V,closeModal:M,modalHeightPercent:O,selected:H,selectedEvent:W,selectedLog:Y,selectedReduxSlice:j,selectedReduxAction:J,selectedCrash:U,selectedPush:F,setSelectedPush:K,selectedSocket:z,setSelectedSocket:Q,settingsPage:R,isAboutOpen:D,setIsAboutOpen:X,isSupportOpen:T,setIsSupportOpen:Z,activeTab:e,isReady:ee,enabled:oe,isDismissed:te,hasNavigationContext:re,setNavState:ae,confirmModal:v,setConfirmModal:ie,peekMode:le,peekOpacity:_}=Ve(),$=e==="apis"&&H!=null||e==="analytics"&&W!=null||e==="logs"&&Y!=null||e==="redux"&&(j!=null||J!=null)||e==="crash"&&U!=null||e==="push"&&F!=null||e==="socket"&&z!=null,x=L(new o.Value(0)).current;P(()=>{R!==null&&(x.setValue(0),o.spring(x,{toValue:1,friction:8,tension:65,useNativeDriver:!1}).start())},[R!==null]);const E=L(new o.Value(0)).current;P(()=>{D&&(E.setValue(0),o.spring(E,{toValue:1,friction:8,tension:65,useNativeDriver:!1}).start())},[D]);const A=L(new o.Value(0)).current;return P(()=>{T&&(A.setValue(0),o.spring(A,{toValue:1,friction:8,tension:65,useNativeDriver:!1}).start())},[T]),<>
2
+ {(G.OS==="ios"||G.OS==="android")&&oe&&!te&&!I&&<Ne/>}
3
+ <Se visible={I}animationType={V}transparent statusBarTranslucent={!0}onRequestClose={M}>
4
+ <Me onClose={M}>
5
+ <B style={[q.modalBackdrop,{zIndex:999999,elevation:999999}]}>
6
+ <Be style={q.modalBackdropPressable}onPress={M}/>
7
+ <B style={[q.modalContentCard,{height:`${O}%`,borderTopLeftRadius:O>=100?0:20,borderTopRightRadius:O>=100?0:20,opacity:le?Math.max(.05,Math.min(1,typeof _=="number"?_:.75)):1,zIndex:9999999,elevation:999999}]}>
8
8
  <Ce translucent backgroundColor="transparent"barStyle="light-content"/>
9
9
 
10
10
  <Re/>
11
11
  <De/>
12
12
 
13
- <B style={{flex:1,overflow:"hidden",backgroundColor:k.grayBackground}}>
13
+ <B style={{flex:1,overflow:"hidden",backgroundColor:C.grayBackground}}>
14
14
 
15
- <B style={{flex:1}}pointerEvents={U||N!==null||R||D?"none":"auto"}>
15
+ <B style={{flex:1}}pointerEvents={$||R!==null||D||T?"none":"auto"}>
16
16
  <Te/>
17
- {X?<B style={{flex:1}}>
17
+ {ee?<B style={{flex:1}}>
18
18
  {e==="apis"&&<S moduleName="Network API Monitor">
19
19
  <Ee/>
20
20
  </S>}
@@ -45,55 +45,55 @@ import ne,{useEffect as A,useRef as P}from"react";import{Animated as o,Modal as
45
45
  {e==="media"&&<S moduleName="Media Gallery">
46
46
  <Xe/>
47
47
  </S>}
48
- {z.OS==="android"&&To()&&e==="debugging"&&<S moduleName="Debugging Utilities">
48
+ {G.OS==="android"&&To()&&e==="debugging"&&<S moduleName="Debugging Utilities">
49
49
  <Qe/>
50
50
  </S>}
51
51
  </B>:<Eo/>}
52
52
  </B>
53
53
 
54
54
 
55
- {U&&<B style={[v.absoluteFill,{backgroundColor:k.contentBg,zIndex:10}]}>
56
- {e==="apis"&&q!=null&&<S moduleName="Network Request Details">
55
+ {$&&<B style={[N.absoluteFill,{backgroundColor:C.contentBg,zIndex:10}]}>
56
+ {e==="apis"&&H!=null&&<S moduleName="Network Request Details">
57
57
  <Ae/>
58
58
  </S>}
59
- {e==="analytics"&&O!=null&&<S moduleName="Analytics Event Details">
60
- <Oe event={O}/>
59
+ {e==="analytics"&&W!=null&&<S moduleName="Analytics Event Details">
60
+ <Oe event={W}/>
61
61
  </S>}
62
- {e==="logs"&&H!=null&&<S moduleName="Console Log Details">
62
+ {e==="logs"&&Y!=null&&<S moduleName="Console Log Details">
63
63
  <Pe/>
64
64
  </S>}
65
65
  {e==="redux"&&<S moduleName="Redux Action & State Details">
66
66
  <Fe/>
67
67
  </S>}
68
- {e==="crash"&&Y!=null&&<S moduleName="Crash Log Details">
68
+ {e==="crash"&&U!=null&&<S moduleName="Crash Log Details">
69
69
  <He/>
70
70
  </S>}
71
- {e==="push"&&W!=null&&<S moduleName="Push Notification Details">
72
- <Ue item={W}onClose={()=>j(null)}/>
71
+ {e==="push"&&F!=null&&<S moduleName="Push Notification Details">
72
+ <Ue item={F}onClose={()=>K(null)}/>
73
73
  </S>}
74
- {e==="socket"&&F!=null&&<S moduleName="WebSocket & Socket.IO Details">
75
- <$e item={F}onClose={()=>J(null)}/>
74
+ {e==="socket"&&z!=null&&<S moduleName="WebSocket & Socket.IO Details">
75
+ <$e item={z}onClose={()=>Q(null)}/>
76
76
  </S>}
77
77
  </B>}
78
78
 
79
79
 
80
- {N!==null&&<o.View style={[v.absoluteFill,{backgroundColor:k.grayBackground,opacity:T,transform:[{translateY:T.interpolate({inputRange:[0,1],outputRange:[24,0]})}]}]}>
80
+ {R!==null&&<o.View style={[N.absoluteFill,{backgroundColor:C.grayBackground,opacity:x,transform:[{translateY:x.interpolate({inputRange:[0,1],outputRange:[24,0]})}]}]}>
81
81
  <S moduleName="Settings Panel">
82
82
  <Ze/>
83
83
  </S>
84
84
  </o.View>}
85
85
 
86
86
 
87
- {R&&<o.View style={[v.absoluteFill,{backgroundColor:k.primaryLight,opacity:x,transform:[{translateY:x.interpolate({inputRange:[0,1],outputRange:[24,0]})}]}]}>
87
+ {D&&<o.View style={[N.absoluteFill,{backgroundColor:C.primaryLight,opacity:E,transform:[{translateY:E.interpolate({inputRange:[0,1],outputRange:[24,0]})}]}]}>
88
88
  <S moduleName="About & Diagnostics">
89
- <So onClose={()=>K(!1)}/>
89
+ <So onClose={()=>X(!1)}/>
90
90
  </S>
91
91
  </o.View>}
92
92
 
93
93
 
94
- {D&&<o.View style={[v.absoluteFill,{backgroundColor:k.primaryLight,opacity:E,transform:[{translateY:E.interpolate({inputRange:[0,1],outputRange:[24,0]})}]}]}>
94
+ {T&&<o.View style={[N.absoluteFill,{backgroundColor:C.primaryLight,opacity:A,transform:[{translateY:A.interpolate({inputRange:[0,1],outputRange:[24,0]})}]}]}>
95
95
  <S moduleName="Support & Community">
96
- <Bo onClose={()=>Q(!1)}/>
96
+ <Bo onClose={()=>Z(!1)}/>
97
97
  </S>
98
98
  </o.View>}
99
99
  </B>
@@ -111,44 +111,44 @@ import ne,{useEffect as A,useRef as P}from"react";import{Animated as o,Modal as
111
111
  <Vo/>
112
112
 
113
113
 
114
- <Co visible={M.visible}title={M.title}message={M.message}confirmText={M.confirmText}cancelText={M.cancelText}isDestructive={!0}icon="trash"onConfirm={M.onConfirm}onCancel={()=>te(le=>({...le,visible:!1}))}/>
114
+ <Co visible={v.visible}title={v.title}message={v.message}confirmText={v.confirmText}cancelText={v.cancelText}isDestructive={!0}icon="trash"onConfirm={v.onConfirm}onCancel={()=>ie(ne=>({...ne,visible:!1}))}/>
115
115
  </B>
116
116
  </B>
117
117
  </Me>
118
- {oe&&<Do onStateChange={re}/>}
118
+ {re&&<Do onStateChange={ae}/>}
119
119
  </Se>
120
- </>},Eo=ne.memo(function(){const C=P(new o.Value(.35)).current;return A(()=>{const V=o.loop(o.sequence([o.timing(C,{toValue:.85,duration:750,useNativeDriver:!1}),o.timing(C,{toValue:.35,duration:750,useNativeDriver:!1})]));return V.start(),()=>V.stop()},[C]),<B style={r.container}>
120
+ </>},Eo=se.memo(function(){const V=L(new o.Value(.35)).current;return P(()=>{const M=o.loop(o.sequence([o.timing(V,{toValue:.85,duration:750,useNativeDriver:!1}),o.timing(V,{toValue:.35,duration:750,useNativeDriver:!1})]));return M.start(),()=>M.stop()},[V]),<B style={t.container}>
121
121
 
122
- <B style={r.toolbarSkeleton}>
123
- <o.View style={[r.searchBarSkeleton,{opacity:C}]}/>
124
- <B style={r.actionButtonsRow}>
125
- <o.View style={[r.iconButtonSkeleton,{opacity:C}]}/>
126
- <o.View style={[r.iconButtonSkeleton,{opacity:C}]}/>
122
+ <B style={t.toolbarSkeleton}>
123
+ <o.View style={[t.searchBarSkeleton,{opacity:V}]}/>
124
+ <B style={t.actionButtonsRow}>
125
+ <o.View style={[t.iconButtonSkeleton,{opacity:V}]}/>
126
+ <o.View style={[t.iconButtonSkeleton,{opacity:V}]}/>
127
127
  </B>
128
128
  </B>
129
129
 
130
130
 
131
- <B style={r.chipStripSkeleton}>
132
- <o.View style={[r.chipSkeleton,{width:48,opacity:C}]}/>
133
- <o.View style={[r.chipSkeleton,{width:68,opacity:C}]}/>
134
- <o.View style={[r.chipSkeleton,{width:76,opacity:C}]}/>
135
- <o.View style={[r.chipSkeleton,{width:58,opacity:C}]}/>
131
+ <B style={t.chipStripSkeleton}>
132
+ <o.View style={[t.chipSkeleton,{width:48,opacity:V}]}/>
133
+ <o.View style={[t.chipSkeleton,{width:68,opacity:V}]}/>
134
+ <o.View style={[t.chipSkeleton,{width:76,opacity:V}]}/>
135
+ <o.View style={[t.chipSkeleton,{width:58,opacity:V}]}/>
136
136
  </B>
137
137
 
138
138
 
139
- {[0,1,2,3].map(V=><o.View key={`skeleton_card_${V}`}style={[r.cardSkeleton,{opacity:C}]}>
140
- <B style={r.cardTopRow}>
141
- <B style={r.badgeGroup}>
142
- <B style={r.statusBadgeSkeleton}/>
143
- <B style={r.methodBadgeSkeleton}/>
139
+ {[0,1,2,3].map(M=><o.View key={`skeleton_card_${M}`}style={[t.cardSkeleton,{opacity:V}]}>
140
+ <B style={t.cardTopRow}>
141
+ <B style={t.badgeGroup}>
142
+ <B style={t.statusBadgeSkeleton}/>
143
+ <B style={t.methodBadgeSkeleton}/>
144
144
  </B>
145
- <B style={r.timeSkeleton}/>
145
+ <B style={t.timeSkeleton}/>
146
146
  </B>
147
- <B style={r.urlLineLong}/>
148
- <B style={r.urlLineShort}/>
149
- <B style={r.cardBottomRow}>
150
- <B style={r.metaPillSkeleton}/>
151
- <B style={r.metaPillSkeleton}/>
147
+ <B style={t.urlLineLong}/>
148
+ <B style={t.urlLineShort}/>
149
+ <B style={t.cardBottomRow}>
150
+ <B style={t.metaPillSkeleton}/>
151
+ <B style={t.metaPillSkeleton}/>
152
152
  </B>
153
153
  </o.View>)}
154
- </B>}),r=v.create({container:{flex:1,paddingHorizontal:12,paddingTop:8},toolbarSkeleton:{flexDirection:"row",alignItems:"center",gap:8,marginBottom:8},searchBarSkeleton:{flex:1,height:36,borderRadius:8,backgroundColor:k.graySurface,borderWidth:1,borderColor:k.dividerColor},actionButtonsRow:{flexDirection:"row",gap:6},iconButtonSkeleton:{width:36,height:36,borderRadius:8,backgroundColor:k.graySurface,borderWidth:1,borderColor:k.dividerColor},chipStripSkeleton:{flexDirection:"row",gap:6,marginBottom:10},chipSkeleton:{height:24,borderRadius:6,backgroundColor:k.graySurface,borderWidth:1,borderColor:k.dividerColor},cardSkeleton:{backgroundColor:k.primaryLight,borderRadius:10,padding:12,marginBottom:8,borderWidth:1,borderColor:k.dividerColor},cardTopRow:{flexDirection:"row",justifyContent:"space-between",alignItems:"center",marginBottom:8},badgeGroup:{flexDirection:"row",alignItems:"center",gap:6},statusBadgeSkeleton:{width:38,height:18,borderRadius:4,backgroundColor:k.graySurface},methodBadgeSkeleton:{width:44,height:18,borderRadius:4,backgroundColor:k.graySurface},timeSkeleton:{width:48,height:12,borderRadius:4,backgroundColor:k.graySurface},urlLineLong:{height:13,borderRadius:4,backgroundColor:k.graySurface,marginBottom:5,width:"90%"},urlLineShort:{height:11,borderRadius:4,backgroundColor:k.graySurface,marginBottom:8,width:"55%"},cardBottomRow:{flexDirection:"row",gap:8,marginTop:2},metaPillSkeleton:{width:52,height:14,borderRadius:4,backgroundColor:k.graySurface}});export default xo;
154
+ </B>}),t=N.create({container:{flex:1,paddingHorizontal:12,paddingTop:8},toolbarSkeleton:{flexDirection:"row",alignItems:"center",gap:8,marginBottom:8},searchBarSkeleton:{flex:1,height:36,borderRadius:8,backgroundColor:C.graySurface,borderWidth:1,borderColor:C.dividerColor},actionButtonsRow:{flexDirection:"row",gap:6},iconButtonSkeleton:{width:36,height:36,borderRadius:8,backgroundColor:C.graySurface,borderWidth:1,borderColor:C.dividerColor},chipStripSkeleton:{flexDirection:"row",gap:6,marginBottom:10},chipSkeleton:{height:24,borderRadius:6,backgroundColor:C.graySurface,borderWidth:1,borderColor:C.dividerColor},cardSkeleton:{backgroundColor:C.primaryLight,borderRadius:10,padding:12,marginBottom:8,borderWidth:1,borderColor:C.dividerColor},cardTopRow:{flexDirection:"row",justifyContent:"space-between",alignItems:"center",marginBottom:8},badgeGroup:{flexDirection:"row",alignItems:"center",gap:6},statusBadgeSkeleton:{width:38,height:18,borderRadius:4,backgroundColor:C.graySurface},methodBadgeSkeleton:{width:44,height:18,borderRadius:4,backgroundColor:C.graySurface},timeSkeleton:{width:48,height:12,borderRadius:4,backgroundColor:C.graySurface},urlLineLong:{height:13,borderRadius:4,backgroundColor:C.graySurface,marginBottom:5,width:"90%"},urlLineShort:{height:11,borderRadius:4,backgroundColor:C.graySurface,marginBottom:8,width:"55%"},cardBottomRow:{flexDirection:"row",gap:8,marginTop:2},metaPillSkeleton:{width:52,height:14,borderRadius:4,backgroundColor:C.graySurface}});export default xo;