react-native-inapp-inspector 2.3.20 → 2.3.22

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 (61) hide show
  1. package/README.md +14 -14
  2. package/android/src/main/java/com/inappinspector/NetworkInspectorModule.kt +58 -1
  3. package/dist/commonjs/components/AppHeaderLogo.js +2 -2
  4. package/dist/commonjs/components/ConsoleLogCard.js +1 -1
  5. package/dist/commonjs/components/HighlightText.js +13 -13
  6. package/dist/commonjs/components/Inspector/AboutModal.js +143 -251
  7. package/dist/commonjs/components/Inspector/DebuggingTab.js +19 -13
  8. package/dist/commonjs/components/Inspector/InspectorHeader.js +54 -80
  9. package/dist/commonjs/components/Inspector/MainScreen.js +13 -23
  10. package/dist/commonjs/components/Inspector/MediaGalleryTab.js +4 -4
  11. package/dist/commonjs/components/Inspector/MediaPreviewModal.js +1 -1
  12. package/dist/commonjs/components/Inspector/NpmStarPrompt.js +1 -1
  13. package/dist/commonjs/components/Inspector/TabBar.js +7 -7
  14. package/dist/commonjs/components/Inspector/UpdateAvailableModal.js +23 -24
  15. package/dist/commonjs/components/LogCard.js +16 -16
  16. package/dist/commonjs/components/NetworkIcons.d.ts +10 -0
  17. package/dist/commonjs/components/NetworkIcons.js +46 -4
  18. package/dist/commonjs/components/QRCodeView.js +2 -2
  19. package/dist/commonjs/components/TreeNode.js +16 -16
  20. package/dist/commonjs/constants/version.d.ts +1 -1
  21. package/dist/commonjs/constants/version.js +1 -1
  22. package/dist/commonjs/customHooks/bundleAnalyzer.js +1 -1
  23. package/dist/commonjs/helpers/index.d.ts +1 -0
  24. package/dist/commonjs/helpers/index.js +2 -2
  25. package/dist/commonjs/index.js +1 -1
  26. package/dist/commonjs/native/NativeInspector.d.ts +1 -0
  27. package/dist/commonjs/native/NativeInspector.js +1 -1
  28. package/dist/commonjs/types/interfaces.d.ts +0 -2
  29. package/dist/esm/components/AppHeaderLogo.js +6 -6
  30. package/dist/esm/components/ConsoleLogCard.js +6 -6
  31. package/dist/esm/components/HighlightText.js +17 -17
  32. package/dist/esm/components/Inspector/AboutModal.js +205 -313
  33. package/dist/esm/components/Inspector/DebuggingTab.js +32 -26
  34. package/dist/esm/components/Inspector/InspectorHeader.js +96 -122
  35. package/dist/esm/components/Inspector/MainScreen.js +66 -76
  36. package/dist/esm/components/Inspector/MediaGalleryTab.js +19 -19
  37. package/dist/esm/components/Inspector/MediaPreviewModal.js +18 -18
  38. package/dist/esm/components/Inspector/NpmStarPrompt.js +1 -1
  39. package/dist/esm/components/Inspector/TabBar.js +21 -21
  40. package/dist/esm/components/Inspector/UpdateAvailableModal.js +65 -66
  41. package/dist/esm/components/LogCard.js +43 -43
  42. package/dist/esm/components/NetworkIcons.d.ts +10 -0
  43. package/dist/esm/components/NetworkIcons.js +191 -149
  44. package/dist/esm/components/QRCodeView.js +4 -4
  45. package/dist/esm/components/TreeNode.js +53 -53
  46. package/dist/esm/constants/version.d.ts +1 -1
  47. package/dist/esm/constants/version.js +1 -1
  48. package/dist/esm/customHooks/bundleAnalyzer.js +1 -1
  49. package/dist/esm/helpers/index.d.ts +1 -0
  50. package/dist/esm/helpers/index.js +4 -4
  51. package/dist/esm/index.js +7 -7
  52. package/dist/esm/native/NativeInspector.d.ts +1 -0
  53. package/dist/esm/native/NativeInspector.js +1 -1
  54. package/dist/esm/types/interfaces.d.ts +0 -2
  55. package/ios/NetworkInspectorModule.mm +39 -3
  56. package/package.json +1 -1
  57. package/src/native/NativeInspector.ts +18 -0
  58. package/dist/commonjs/components/Inspector/FeedbackModal.d.ts +0 -16
  59. package/dist/commonjs/components/Inspector/FeedbackModal.js +0 -198
  60. package/dist/esm/components/Inspector/FeedbackModal.d.ts +0 -16
  61. package/dist/esm/components/Inspector/FeedbackModal.js +0 -198
@@ -1,176 +1,162 @@
1
- import B,{useMemo as de}from"react";import{Alert as ke,Animated as Z,Linking as at,Platform as ce,Pressable as He,StatusBar as nt,Text as C,TouchableOpacity as Ae,useWindowDimensions as st,View as S}from"react-native";import St from"react-native-linear-gradient";import{useInspector as Tt}from"./InspectorContext";import O from"../TouchableScale";import Ct from"../AppHeaderLogo";import i from"../../styles";import{AppColors as t}from"../../styles/AppColors";import{AppFonts as D}from"../../styles/AppFonts";import{METHOD_COLORS as Vt}from"../../constants";import{LIB_VERSION as ee}from"../../constants";import{getStatusColor as he,getAppName as Rt,formatTime as Dt,getSize as Be,getAppVersionAndBuild as It}from"../../helpers";import{triggerNativeHaptic as G}from"../../native/NativeInspector";import{ScreenCapture as E}from"../../capture";import{showToast as L}from"../../helpers/toast";import{UpdateAvailableModal as $t}from"./UpdateAvailableModal";import{MediaPreviewModal as Ht}from"./MediaPreviewModal";import{WhiteBackNavigation as At,TrashIcon as Bt,SettingsIcon as Mt,CloseWhite as Ot,ChevronDownIcon as Lt,ClockIcon as Se,SizeIcon as Pt,AppleIcon as Ft,AndroidIcon as Et,NpmIcon as Wt,ResetIcon as _t,BoltIcon as Nt,InfoCircleIcon as Ut,CameraIcon as Me,VideoCameraIcon as Oe}from"../NetworkIcons";import{useTranslation as Gt}from"../../i18n";const qt=B.memo(()=>{const{t:R}=Gt(),{modalHeightPercent:te,appIcon:Le,selected:I,setSelected:Pe,selectedEvent:v,setSelectedEvent:Fe,selectedLog:M,setSelectedLog:Ee,selectedReduxSlice:W,setSelectedReduxSlice:We,selectedReduxAction:q,setSelectedReduxAction:je,reduxState:_e,reduxLastActionMap:Ne,showHeaderInfo:Qt,setShowHeaderInfo:Jt,updateAvailable:ie,latestNpmVersion:Ue,clearAnim:Te,activePulseAnim:Ge,unreadPulseAnim:qe,runClearAllWithAnimation:Qe,settingsPage:P,setSettingsPage:re,isFeedbackOpen:oe,setIsFeedbackOpen:Je,isAboutOpen:le,setIsAboutOpen:xe,resetToDefaults:Ke,closeModal:ze,minimizeInspector:Xe,detailTitle:Ye,activeTab:A,environment:Ce,visible:Kt,selectedCrash:$,setSelectedCrash:Ze,refreshMediaCount:j}=Tt(),{width:_}=st(),e=_<360,Q=_<400,Xt=_>=600,[et,ae]=B.useState(!1),[tt,Yt]=B.useState(()=>It().formatted),[k,J]=B.useState(!1),[it,ne]=B.useState(0),F=B.useRef(null);B.useEffect(()=>{E.isRecording().then(T=>{J(T)}).catch(()=>{})},[]),B.useEffect(()=>(k?(ne(0),F.current=setInterval(()=>{ne(T=>T+1)},1e3)):(F.current&&(clearInterval(F.current),F.current=null),ne(0)),()=>{F.current&&clearInterval(F.current)}),[k]);const[Ve,N]=B.useState(null),Re=B.useCallback(async()=>{try{G("light");const T=await E.takeScreenshot({format:"png",quality:.9,hideInspector:!0});if(T){G("success");const V={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(V),j?.().catch(()=>{}),L(R("header.screenshotCaptured"))}else L(R("header.screenshotFailed"))}catch{L(R("header.screenshotError"))}},[j,R]),De=B.useCallback(async()=>{try{if(k){G("medium");const T=await E.stopRecording();if(J(!1),T){G("success");const V={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(V),j?.().catch(()=>{}),L(R("header.recordingSaved",{duration:(T.durationMs/1e3).toFixed(1)}))}}else G("medium"),await E.startRecording({fps:24,audioSource:"none"})?(J(!0),L(R("header.recordingStarted"))):L(R("header.recordingStartFailed"))}catch{L(R("header.recordingError")),J(!1)}},[k,R]),rt=T=>{const V=Math.floor(T/60),se=T%60;return`${V.toString().padStart(2,"0")}:${se.toString().padStart(2,"0")}`},K=de(()=>{const T=(Ce||(__DEV__?"DEV":"PROD")).trim(),V=T.toUpperCase();return V==="DEV"||V.includes("DEV")||V==="LOCAL"?{label:T,bg:`${t.emerald500}40`,border:`${t.emerald400}8C`,text:t.mintGreenBorder}:V==="UAT"||V==="QA"||V==="TEST"?{label:T,bg:`${t.amber500}47`,border:`${t.amber400}99`,text:t.amberWarmBorder}:V==="PREPROD"||V==="STAGE"||V==="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}},[Ce]),X=A==="apis"&&I!=null||A==="analytics"&&v!=null||A==="logs"&&M!=null||A==="redux"&&(W!=null||q!=null)||A==="crash"&&$!=null,Y=P!==null,U=X||Y||oe||le,ot=de(()=>{switch(P){case"apis":return"APIs (Network)";case"logs":return"Console Logs";case"performance":return"Performance Tracker";case"bundle":return"Bundle Analyzer";case"crash":return"Crash Protection";case"analytics":return"Analytics Logger";case"redux":return"Redux Inspector";default:return"Settings & Modules"}},[P]),Ie=de(()=>ce.OS==="ios"?te>=98?_>=390?50:44:0:ce.OS==="android"&&te>=98?nt.currentHeight||24:0,[te,_]),H=e?28:Q?30:32,lt=e?42:Q?46:50;return<>
2
- <S style={[i.headerGradient,{minHeight:(e?58:62)+Ie}]}>
1
+ import v,{useMemo as ne}from"react";import{Alert as Re,Animated as le,Linking as rt,Platform as se,Pressable as $e,StatusBar as ot,Text as C,TouchableOpacity as Ae,useWindowDimensions as at,View as S}from"react-native";import St from"react-native-linear-gradient";import{useInspector as Tt}from"./InspectorContext";import O from"../TouchableScale";import Ct from"../AppHeaderLogo";import i from"../../styles";import{AppColors as t}from"../../styles/AppColors";import{AppFonts as I}from"../../styles/AppFonts";import{METHOD_COLORS as Vt}from"../../constants";import{LIB_VERSION as de}from"../../constants";import{getStatusColor as ce,getAppName as Dt,formatTime as It,getSize as ve,getAppVersionAndBuild as Rt}from"../../helpers";import{triggerNativeHaptic as U}from"../../native/NativeInspector";import{ScreenCapture as F}from"../../capture";import{showToast as L}from"../../helpers/toast";import{UpdateAvailableModal as $t}from"./UpdateAvailableModal";import{MediaPreviewModal as At}from"./MediaPreviewModal";import{WhiteBackNavigation as Ht,TrashIcon as Mt,SettingsIcon as Bt,CloseWhite as Ot,ChevronDownIcon as Lt,ClockIcon as Se,SizeIcon as Pt,AppleIcon as Et,AndroidIcon as Ft,NpmIcon as Wt,ResetIcon as _t,BoltIcon as Nt,InfoCircleIcon as Ut,CameraIcon as Gt,VideoCameraIcon as Qt}from"../NetworkIcons";import{useTranslation as Jt}from"../../i18n";const Kt=v.memo(()=>{const{t:D}=Jt(),{modalHeightPercent:Z,appIcon:He,selected:R,setSelected:Me,selectedEvent:k,setSelectedEvent:Be,selectedLog:H,setSelectedLog:Oe,selectedReduxSlice:W,setSelectedReduxSlice:Le,selectedReduxAction:G,setSelectedReduxAction:Pe,reduxState:Ee,reduxLastActionMap:Fe,showHeaderInfo:Xt,setShowHeaderInfo:Yt,updateAvailable:ee,latestNpmVersion:We,clearAnim:Te,activePulseAnim:je,unreadPulseAnim:_e,runClearAllWithAnimation:Ne,settingsPage:P,setSettingsPage:te,isAboutOpen:ie,setIsAboutOpen:xe,resetToDefaults:Ue,closeModal:ze,minimizeInspector:Ge,detailTitle:qe,activeTab:A,environment:Ce,visible:Zt,selectedCrash:$,setSelectedCrash:Qe,refreshMediaCount:j}=Tt(),{width:_}=at(),e=_<360,q=_<400,ei=_>=600,[Je,re]=v.useState(!1),[Ke,ti]=v.useState(()=>Rt().formatted),[M,Q]=v.useState(!1),[Xe,oe]=v.useState(0),E=v.useRef(null);v.useEffect(()=>{F.isRecording().then(T=>{Q(T)}).catch(()=>{})},[]),v.useEffect(()=>(M?(oe(0),E.current=setInterval(()=>{oe(T=>T+1)},1e3)):(E.current&&(clearInterval(E.current),E.current=null),oe(0)),()=>{E.current&&clearInterval(E.current)}),[M]);const[Ve,N]=v.useState(null),Ye=v.useCallback(async()=>{try{U("light");const T=await F.takeScreenshot({format:"png",quality:.9,hideInspector:!0});if(T){U("success");const V={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(V),j?.().catch(()=>{}),L(D("header.screenshotCaptured"))}else L(D("header.screenshotFailed"))}catch{L(D("header.screenshotError"))}},[j,D]),Ze=v.useCallback(async()=>{try{if(M){U("medium");const T=await F.stopRecording();if(Q(!1),T){U("success");const V={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(V),j?.().catch(()=>{}),L(D("header.recordingSaved",{duration:(T.durationMs/1e3).toFixed(1)}))}}else U("medium"),await F.startRecording({fps:24,audioSource:"none"})?(Q(!0),L(D("header.recordingStarted"))):L(D("header.recordingStartFailed"))}catch{L(D("header.recordingError")),Q(!1)}},[M,D]),et=T=>{const V=Math.floor(T/60),ae=T%60;return`${V.toString().padStart(2,"0")}:${ae.toString().padStart(2,"0")}`},J=ne(()=>{const T=(Ce||(__DEV__?"DEV":"PROD")).trim(),V=T.toUpperCase();return V==="DEV"||V.includes("DEV")||V==="LOCAL"?{label:T,bg:`${t.emerald500}40`,border:`${t.emerald400}8C`,text:t.mintGreenBorder}:V==="UAT"||V==="QA"||V==="TEST"?{label:T,bg:`${t.amber500}47`,border:`${t.amber400}99`,text:t.amberWarmBorder}:V==="PREPROD"||V==="STAGE"||V==="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}},[Ce]),K=A==="apis"&&R!=null||A==="analytics"&&k!=null||A==="logs"&&H!=null||A==="redux"&&(W!=null||G!=null)||A==="crash"&&$!=null,X=P!==null,Y=K||X||ie,tt=ne(()=>{switch(P){case"apis":return"APIs (Network)";case"logs":return"Console Logs";case"performance":return"Performance Tracker";case"bundle":return"Bundle Analyzer";case"crash":return"Crash Protection";case"analytics":return"Analytics Logger";case"redux":return"Redux Inspector";default:return"Settings & Modules"}},[P]),De=ne(()=>se.OS==="ios"?Z>=98?_>=390?50:44:0:se.OS==="android"&&Z>=98?ot.currentHeight||24:0,[Z,_]),B=e?28:q?30:32,it=e?42:q?46:50;return<>
2
+ <S style={[i.headerGradient,{minHeight:(e?58:62)+De}]}>
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
- <S style={{paddingTop:Ie,width:"100%"}}>
5
+ <S style={{paddingTop:De,width:"100%"}}>
6
6
  <S style={[i.header,{width:"100%",justifyContent:"space-between",paddingHorizontal:e?12:16,paddingVertical:e?8:10,minHeight:e?52:56}]}>
7
- <S style={{flexDirection:"row",alignItems:"center",gap:e?8:10,flex:X?void 0:1,flexShrink:X?0:1,minWidth:0}}>
8
- {U&&<O onPress={()=>{if(le){xe(!1);return}if(oe){Je(!1);return}if(Y){re(P==="main"?null:"main");return}Pe(null),Fe(null),Ee(null),We(null),je(null),Ze(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`}}>
7
+ <S style={{flexDirection:"row",alignItems:"center",gap:e?8:10,flex:K?void 0:1,flexShrink:K?0:1,minWidth:0}}>
8
+ {Y&&<O onPress={()=>{if(ie){xe(!1);return}if(X){te(P==="main"?null:"main");return}Me(null),Be(null),Oe(null),Le(null),Pe(null),Qe(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
- <At/>
10
+ <Ht/>
11
11
  </O>}
12
12
 
13
- {le?<S style={{gap:3,flex:1,minWidth:0,justifyContent:"center"}}>
13
+ {ie?<S style={{gap:3,flex:1,minWidth:0,justifyContent:"center"}}>
14
14
  <S style={{flexDirection:"row",alignItems:"center",gap:6}}>
15
- <C style={{fontFamily:D.interBold,fontSize:e?15:16.5,lineHeight:e?19:21,color:t.white,letterSpacing:-.2}}numberOfLines={1}>
15
+ <C style={{fontFamily:I.interBold,fontSize:e?15:16.5,lineHeight:e?19:21,color:t.white,letterSpacing:-.2}}numberOfLines={1}>
16
16
  About & Specs
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
- <C style={{fontFamily:D.interBold,fontSize:e?8.5:9.5,lineHeight:12,color:t.white}}>
20
- v{ee}
19
+ <C style={{fontFamily:I.interBold,fontSize:e?8.5:9.5,lineHeight:12,color:t.white}}>
20
+ v{de}
21
21
  </C>
22
22
  </S>
23
23
  </S>
24
- <C style={{fontFamily:D.interRegular,fontSize:e?10:11,lineHeight:e?14:15,color:`${t.white}CC`,marginTop:1}}numberOfLines={1}>
24
+ <C style={{fontFamily:I.interRegular,fontSize:e?10:11,lineHeight:e?14:15,color:`${t.white}CC`,marginTop:1}}numberOfLines={1}>
25
25
  Package info, runtime specs & diagnostic payload
26
26
  </C>
27
- </S>:oe?<S style={{gap:3,flex:1,minWidth:0,justifyContent:"center"}}>
27
+ </S>:X?<S style={{gap:3,flex:1,minWidth:0,justifyContent:"center"}}>
28
28
  <S style={{flexDirection:"row",alignItems:"center",gap:6}}>
29
- <C style={{fontFamily:D.interBold,fontSize:e?15:16.5,lineHeight:e?19:21,color:t.white,letterSpacing:-.2}}numberOfLines={1}>
30
- Support & Feedback
31
- </C>
32
- <S style={{backgroundColor:`${t.white}26`,paddingHorizontal:e?5:6,paddingVertical:2,borderRadius:8,borderWidth:1,borderColor:`${t.white}20`}}>
33
- <C style={{fontFamily:D.interBold,fontSize:e?8.5:9.5,lineHeight:12,color:t.white}}>
34
- v{ee}
35
- </C>
36
- </S>
37
- </S>
38
- <C style={{fontFamily:D.interRegular,fontSize:e?10:11,lineHeight:e?14:15,color:`${t.white}CC`,marginTop:1}}numberOfLines={1}>
39
- Direct line to maintainers & developers
40
- </C>
41
- </S>:Y?<S style={{gap:3,flex:1,minWidth:0,justifyContent:"center"}}>
42
- <S style={{flexDirection:"row",alignItems:"center",gap:6}}>
43
- <C style={{fontFamily:D.interBold,fontSize:e?15:16.5,lineHeight:e?19:21,color:t.white,letterSpacing:-.2}}numberOfLines={1}>
44
- {ot}
29
+ <C style={{fontFamily:I.interBold,fontSize:e?15:16.5,lineHeight:e?19:21,color:t.white,letterSpacing:-.2}}numberOfLines={1}>
30
+ {tt}
45
31
  </C>
46
32
  {P==="main"&&<S style={{backgroundColor:`${t.white}26`,paddingHorizontal:e?5:6,paddingVertical:2,borderRadius:8,borderWidth:1,borderColor:`${t.white}20`}}>
47
- <C style={{fontFamily:D.interBold,fontSize:e?8.5:9.5,lineHeight:12,color:t.white}}>
48
- v{ee}
33
+ <C style={{fontFamily:I.interBold,fontSize:e?8.5:9.5,lineHeight:12,color:t.white}}>
34
+ v{de}
49
35
  </C>
50
36
  </S>}
51
37
  </S>
52
- <C style={{fontFamily:D.interRegular,fontSize:e?10:11,lineHeight:e?14:15,color:`${t.white}CC`,marginTop:1}}numberOfLines={1}>
38
+ <C style={{fontFamily:I.interRegular,fontSize:e?10:11,lineHeight:e?14:15,color:`${t.white}CC`,marginTop:1}}numberOfLines={1}>
53
39
  {P==="main"?"Manage modules and preferences":"Configure module parameters"}
54
40
  </C>
55
- </S>:U?null:<S style={{flexDirection:"row",alignItems:"center",gap:e?10:12,flex:1,minWidth:0,marginRight:4}}>
56
- <Ct size={lt}customIcon={Le}/>
41
+ </S>:Y?null:<S style={{flexDirection:"row",alignItems:"center",gap:e?10:12,flex:1,minWidth:0,marginRight:4}}>
42
+ <Ct size={it}customIcon={He}/>
57
43
  <S style={{gap:4,flex:1,minWidth:0,justifyContent:"center"}}>
58
44
  <S style={{flexDirection:"row",alignItems:"center",gap:e?6:7,minWidth:0}}>
59
- <C style={[i.headerTitle,{fontSize:e?15:Q?16:17,lineHeight:e?20:Q?22:23,flexShrink:1,paddingBottom:0}]}numberOfLines={1}ellipsizeMode="tail">
60
- {Rt()}
45
+ <C style={[i.headerTitle,{fontSize:e?15:q?16:17,lineHeight:e?20:q?22:23,flexShrink:1,paddingBottom:0}]}numberOfLines={1}ellipsizeMode="tail">
46
+ {Dt()}
61
47
  </C>
62
- <S style={[i.envBadge,{backgroundColor:K.bg,borderColor:K.border,flexShrink:0,paddingHorizontal:e?6:7,paddingVertical:2.5,borderRadius:6,marginBottom:0}]}>
63
- <C style={[i.envBadgeText,{color:K.text,fontSize:e?9:10,lineHeight:13}]}>
64
- {K.label}
48
+ <S style={[i.envBadge,{backgroundColor:J.bg,borderColor:J.border,flexShrink:0,paddingHorizontal:e?6:7,paddingVertical:2.5,borderRadius:6,marginBottom:0}]}>
49
+ <C style={[i.envBadgeText,{color:J.text,fontSize:e?9:10,lineHeight:13}]}>
50
+ {J.label}
65
51
  </C>
66
52
  </S>
67
- {ie&&<He hitSlop={10}onPress={()=>ae(!0)}style={{flexDirection:"row",alignItems:"center",backgroundColor:t.warningAmber,borderRadius:6,paddingHorizontal:e?5:6.5,paddingVertical:2.5,gap:3.5,shadowColor:t.warningAmber,shadowOffset:{width:0,height:1.5},shadowOpacity:.35,shadowRadius:3,elevation:3,flexShrink:0}}>
68
- <Z.View style={{width:5,height:5,borderRadius:2.5,backgroundColor:t.white,opacity:Ge,transform:[{scale:qe}]}}/>
69
- {!e&&<C style={{fontFamily:D.interBold,fontSize:8.5,lineHeight:11,color:t.white,letterSpacing:.3}}>
53
+ {ee&&<$e hitSlop={10}onPress={()=>re(!0)}style={{flexDirection:"row",alignItems:"center",backgroundColor:t.warningAmber,borderRadius:6,paddingHorizontal:e?5:6.5,paddingVertical:2.5,gap:3.5,shadowColor:t.warningAmber,shadowOffset:{width:0,height:1.5},shadowOpacity:.35,shadowRadius:3,elevation:3,flexShrink:0}}>
54
+ <le.View style={{width:5,height:5,borderRadius:2.5,backgroundColor:t.white,opacity:je,transform:[{scale:_e}]}}/>
55
+ {!e&&<C style={{fontFamily:I.interBold,fontSize:8.5,lineHeight:11,color:t.white,letterSpacing:.3}}>
70
56
  UPDATE
71
57
  </C>}
72
58
  <Nt size={e?8:9}color={t.white}/>
73
- </He>}
59
+ </$e>}
74
60
  </S>
75
61
 
76
62
 
77
63
  <S style={{flexDirection:"row",alignItems:"center",gap:e?5:6,minWidth:0,marginTop:2}}>
78
64
  <S style={{flexDirection:"row",alignItems:"center",backgroundColor:`${t.white}1F`,borderRadius:6,paddingHorizontal:e?6:7,paddingVertical:3,gap:4,borderWidth:1,borderColor:`${t.white}2E`,flexShrink:1,minWidth:0}}>
79
- {ce.OS==="ios"?<Ft color={`${t.white}E6`}size={e?9.5:10.5}/>:<Et color={`${t.white}E6`}size={e?9.5:10.5}/>}
80
- <C style={{fontFamily:D.interMedium,fontSize:e?9:10,lineHeight:13,color:`${t.white}EB`,letterSpacing:.1}}numberOfLines={1}ellipsizeMode="tail">
81
- {tt}
65
+ {se.OS==="ios"?<Et color={`${t.white}E6`}size={e?9.5:10.5}/>:<Ft color={`${t.white}E6`}size={e?9.5:10.5}/>}
66
+ <C style={{fontFamily:I.interMedium,fontSize:e?9:10,lineHeight:13,color:`${t.white}EB`,letterSpacing:.1}}numberOfLines={1}ellipsizeMode="tail">
67
+ {Ke}
82
68
  </C>
83
69
  </S>
84
70
 
85
- <He onPress={()=>{ie?ae(!0):at.openURL("https://www.npmjs.com/package/react-native-inapp-inspector").catch(()=>{})}}style={{flexDirection:"row",alignItems:"center",backgroundColor:`${t.white}1F`,borderRadius:6,paddingHorizontal:e?6:7,paddingVertical:3,gap:4,borderWidth:1,borderColor:`${t.white}2E`,flexShrink:0}}>
71
+ <$e onPress={()=>{ee?re(!0):rt.openURL("https://www.npmjs.com/package/react-native-inapp-inspector").catch(()=>{})}}style={{flexDirection:"row",alignItems:"center",backgroundColor:`${t.white}1F`,borderRadius:6,paddingHorizontal:e?6:7,paddingVertical:3,gap:4,borderWidth:1,borderColor:`${t.white}2E`,flexShrink:0}}>
86
72
  <Wt size={e?9.5:10.5}color={t.npmRedLight}/>
87
- <C style={{fontFamily:D.interMedium,fontSize:e?9:10,lineHeight:13,color:`${t.white}EB`,letterSpacing:.1}}numberOfLines={1}>
88
- v{ee}
73
+ <C style={{fontFamily:I.interMedium,fontSize:e?9:10,lineHeight:13,color:`${t.white}EB`,letterSpacing:.1}}numberOfLines={1}>
74
+ v{de}
89
75
  </C>
90
- {ie&&<C style={{fontFamily:D.interBold,fontSize:8.5,color:t.warningAmber}}>
76
+ {ee&&<C style={{fontFamily:I.interBold,fontSize:8.5,color:t.warningAmber}}>
91
77
  ●
92
78
  </C>}
93
- </He>
79
+ </$e>
94
80
  </S>
95
81
  </S>
96
82
  </S>}
97
83
  </S>
98
84
 
99
- {X&&<S style={[i.headerCenter,{paddingHorizontal:e?2:6}]}>
100
- {A==="apis"&&I!=null?<S style={i.headerDetailCenter}>
85
+ {K&&<S style={[i.headerCenter,{paddingHorizontal:e?2:6}]}>
86
+ {A==="apis"&&R!=null?<S style={i.headerDetailCenter}>
101
87
  <S style={i.headerDetailRow}>
102
- <S style={[i.headerMethodBadge,{backgroundColor:Vt[I.method]??t.grayText,paddingHorizontal:e?5:6,paddingVertical:e?2:3}]}>
88
+ <S style={[i.headerMethodBadge,{backgroundColor:Vt[R.method]??t.grayText,paddingHorizontal:e?5:6,paddingVertical:e?2:3}]}>
103
89
  <C style={[i.headerMethodText,{fontSize:e?9:10}]}>
104
- {I.method}
90
+ {R.method}
105
91
  </C>
106
92
  </S>
107
93
  <C style={[i.headerDetailTitle,{fontSize:e?13.5:15}]}numberOfLines={1}ellipsizeMode="middle">
108
- {Ye}
94
+ {qe}
109
95
  </C>
110
96
  </S>
111
97
  <S style={{flexDirection:"row",alignItems:"center",gap:e?4:6,marginTop:3,paddingVertical:1}}>
112
- <S style={{flexDirection:"row",alignItems:"center",gap:4,paddingHorizontal:e?6:8,paddingVertical:2.5,borderRadius:20,backgroundColor:`${he(I.status)}26`,borderWidth:1,borderColor:`${he(I.status)}55`}}>
113
- <S style={[i.headerStatusDot,{backgroundColor:he(I.status),width:e?6:7,height:e?6:7}]}/>
114
- <C style={[i.headerSubTitle,{fontFamily:D.interBold,fontSize:e?10:11}]}>
115
- {I.status===0?"Failed":I.status??"Pending"}
98
+ <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`}}>
99
+ <S style={[i.headerStatusDot,{backgroundColor:ce(R.status),width:e?6:7,height:e?6:7}]}/>
100
+ <C style={[i.headerSubTitle,{fontFamily:I.interBold,fontSize:e?10:11}]}>
101
+ {R.status===0?"Failed":R.status??"Pending"}
116
102
  </C>
117
103
  </S>
118
104
  <S style={{flexDirection:"row",alignItems:"center",gap:4,paddingHorizontal:e?6:8,paddingVertical:2.5,borderRadius:20,backgroundColor:`${t.white}29`}}>
119
105
  <Se color={t.white}size={e?10:11}/>
120
106
  <C style={[i.headerSubTitle,{fontSize:e?10:11}]}>
121
- {I.duration!=null?`${I.duration}ms`:"\u2014"}
107
+ {R.duration!=null?`${R.duration}ms`:"\u2014"}
122
108
  </C>
123
109
  </S>
124
- {I.response!=null&&<S style={{flexDirection:"row",alignItems:"center",gap:4,paddingHorizontal:e?6:8,paddingVertical:2.5,borderRadius:20,backgroundColor:`${t.white}29`}}>
110
+ {R.response!=null&&<S style={{flexDirection:"row",alignItems:"center",gap:4,paddingHorizontal:e?6:8,paddingVertical:2.5,borderRadius:20,backgroundColor:`${t.white}29`}}>
125
111
  <Pt color={t.white}size={e?10:11}/>
126
112
  <C style={[i.headerSubTitle,{fontSize:e?10:11}]}>
127
- {Be(I.response)}
113
+ {ve(R.response)}
128
114
  </C>
129
115
  </S>}
130
116
  </S>
131
- </S>:A==="analytics"&&v!=null?<S style={i.headerDetailCenter}>
117
+ </S>:A==="analytics"&&k!=null?<S style={i.headerDetailCenter}>
132
118
  <S style={i.headerDetailRow}>
133
- <S style={[i.headerMethodBadge,{backgroundColor:v.source==="firebase"?`${t.firebaseOrange}4D`:`${t.purple}4D`,paddingHorizontal:e?5:6,paddingVertical:e?2:3}]}>
119
+ <S style={[i.headerMethodBadge,{backgroundColor:k.source==="firebase"?`${t.firebaseOrange}4D`:`${t.purple}4D`,paddingHorizontal:e?5:6,paddingVertical:e?2:3}]}>
134
120
  <C style={[i.headerMethodText,{fontSize:e?9:10}]}>
135
- {v.source==="firebase"?"FB":"MAN"}
121
+ {k.source==="firebase"?"FB":"MAN"}
136
122
  </C>
137
123
  </S>
138
124
  <C style={[i.headerDetailTitle,{fontSize:e?13.5:15}]}numberOfLines={1}ellipsizeMode="middle">
139
- #{v.id!=null?v.id+1:1}{" "}
140
- {v.name}
125
+ #{k.id!=null?k.id+1:1}{" "}
126
+ {k.name}
141
127
  </C>
142
128
  </S>
143
129
  <S style={{flexDirection:"row",alignItems:"center",gap:e?4:6,marginTop:3,paddingVertical:1}}>
144
- <S style={[i.headerStatusDot,{backgroundColor:v.source==="firebase"?t.firebaseOrange:t.purple,width:e?6:7,height:e?6:7}]}/>
130
+ <S style={[i.headerStatusDot,{backgroundColor:k.source==="firebase"?t.firebaseOrange:t.purple,width:e?6:7,height:e?6:7}]}/>
145
131
  <C style={[i.headerSubTitle,{fontSize:e?10:11}]}>
146
- {Object.keys(v.params).length} param
147
- {Object.keys(v.params).length!==1?"s":""}
132
+ {Object.keys(k.params).length} param
133
+ {Object.keys(k.params).length!==1?"s":""}
148
134
  {" \xB7 "}
149
- {v.source}
135
+ {k.source}
150
136
  </C>
151
137
  </S>
152
- </S>:A==="logs"&&M!=null?<S style={i.headerDetailCenter}>
138
+ </S>:A==="logs"&&H!=null?<S style={i.headerDetailCenter}>
153
139
  <S style={i.headerDetailRow}>
154
- <S style={[i.headerMethodBadge,{backgroundColor:M.type==="error"?`${t.errorColor}4D`:M.type==="warn"?`${t.lightOrange}4D`:`${t.purple}4D`,paddingHorizontal:e?5:6,paddingVertical:e?2:3}]}>
140
+ <S style={[i.headerMethodBadge,{backgroundColor:H.type==="error"?`${t.errorColor}4D`:H.type==="warn"?`${t.lightOrange}4D`:`${t.purple}4D`,paddingHorizontal:e?5:6,paddingVertical:e?2:3}]}>
155
141
  <C style={[i.headerMethodText,{fontSize:e?9:10}]}>
156
- {M.type.toUpperCase()}
142
+ {H.type.toUpperCase()}
157
143
  </C>
158
144
  </S>
159
145
  <C style={[i.headerDetailTitle,{fontSize:e?13.5:15}]}numberOfLines={1}ellipsizeMode="middle">
160
- #{M.id!=null?M.id+1:1}{" "}
146
+ #{H.id!=null?H.id+1:1}{" "}
161
147
  console.
162
- {M.sourceMethod||M.type||"log"}
148
+ {H.sourceMethod||H.type||"log"}
163
149
  </C>
164
150
  </S>
165
151
  <S style={{flexDirection:"row",alignItems:"center",gap:e?4:6,marginTop:3,paddingVertical:1}}>
166
152
  <S style={{flexDirection:"row",alignItems:"center",gap:4,paddingHorizontal:e?6:8,paddingVertical:2.5,borderRadius:20,backgroundColor:`${t.white}29`}}>
167
153
  <Se color={t.white}size={e?10:11}/>
168
154
  <C style={[i.headerSubTitle,{fontSize:e?10:11}]}>
169
- {Dt(M.timestamp)}
155
+ {It(H.timestamp)}
170
156
  </C>
171
157
  </S>
172
158
  </S>
173
- </S>:A==="redux"&&W!=null?(()=>{const T=_e?.[W],V=T&&typeof T=="object"?Object.keys(T).length:typeof T<"u"?1:0,se=Be(T),$e=Ne[W];return<S style={i.headerDetailCenter}>
159
+ </S>:A==="redux"&&W!=null?(()=>{const T=Ee?.[W],V=T&&typeof T=="object"?Object.keys(T).length:typeof T<"u"?1:0,ae=ve(T),Ie=Fe[W];return<S style={i.headerDetailCenter}>
174
160
  <S style={i.headerDetailRow}>
175
161
  <S style={[i.headerMethodBadge,{backgroundColor:`${t.purple}4D`,paddingHorizontal:e?5:6,paddingVertical:e?2:3}]}>
176
162
  <C style={[i.headerMethodText,{fontSize:e?9:10}]}>
@@ -196,21 +182,21 @@ import B,{useMemo as de}from"react";import{Alert as ke,Animated as Z,Linking as
196
182
  •
197
183
  </C>
198
184
  <C style={[i.headerSubTitle,{fontSize:e?10:11}]}>
199
- {se}
185
+ {ae}
200
186
  </C>
201
- {$e?.timestamp&&<>
187
+ {Ie?.timestamp&&<>
202
188
  <C style={[i.headerSubTitle,{opacity:.6,fontSize:e?10:11}]}>
203
189
  •
204
190
  </C>
205
191
  <S style={{flexDirection:"row",alignItems:"center",gap:3}}>
206
192
  <Se color={t.white}size={e?9:10}/>
207
193
  <C style={[i.headerSubTitle,{fontSize:e?10:11}]}>
208
- {$e.timestamp}
194
+ {Ie.timestamp}
209
195
  </C>
210
196
  </S>
211
197
  </>}
212
198
  </S>
213
- </S>})():A==="redux"&&q!=null?<S style={i.headerDetailCenter}>
199
+ </S>})():A==="redux"&&G!=null?<S style={i.headerDetailCenter}>
214
200
  <S style={i.headerDetailRow}>
215
201
  <S style={[i.headerMethodBadge,{backgroundColor:`${t.brandPurple}4D`,paddingHorizontal:e?5:6,paddingVertical:e?2:3}]}>
216
202
  <C style={[i.headerMethodText,{fontSize:e?9:10}]}>
@@ -218,13 +204,13 @@ import B,{useMemo as de}from"react";import{Alert as ke,Animated as Z,Linking as
218
204
  </C>
219
205
  </S>
220
206
  <C style={[i.headerDetailTitle,{fontSize:e?13.5:15}]}numberOfLines={1}ellipsizeMode="middle">
221
- {q.type}
207
+ {G.type}
222
208
  </C>
223
209
  </S>
224
210
  <S style={{flexDirection:"row",alignItems:"center",gap:e?4:6,marginTop:3,paddingVertical:1}}>
225
211
  <S style={[i.headerStatusDot,{backgroundColor:t.purple,width:e?6:7,height:e?6:7}]}/>
226
212
  <C style={[i.headerSubTitle,{fontSize:e?10:11}]}>
227
- {q.timestamp||"Dispatched"}
213
+ {G.timestamp||"Dispatched"}
228
214
  </C>
229
215
  </S>
230
216
  </S>:A==="crash"&&$!=null?<S style={i.headerDetailCenter}>
@@ -256,75 +242,63 @@ import B,{useMemo as de}from"react";import{Alert as ke,Animated as Z,Linking as
256
242
  </S>}
257
243
 
258
244
  <S style={[i.headerRight,{flexDirection:"row",alignItems:"center",justifyContent:"flex-end",flexShrink:0,gap:e?4:5}]}>
259
-
260
- {U&&<>
261
-
262
- <O accessible={!0}accessibilityRole="button"accessibilityLabel={R("header.photo","Photo")}onPress={Re}hitSlop={10}style={[i.closeButtonSquare,{width:H,height:H,borderRadius:e?6:7}]}>
263
- <Me size={e?12:13}color={t.white}/>
264
- </O>
265
-
266
-
267
- <O accessible={!0}accessibilityRole="button"accessibilityLabel={R("header.record","Record")}onPress={De}hitSlop={10}style={[i.closeButtonSquare,{width:H,height:H,borderRadius:e?6:7,backgroundColor:k?`${t.red500}40`:`${t.white}24`,borderColor:k?t.red500:`${t.white}33`}]}>
268
- {k?<Z.View style={{width:6,height:6,borderRadius:3,backgroundColor:t.red500}}/>:<Oe size={e?12:13}color={t.white}/>}
269
- </O>
270
- </>}
271
245
 
272
- {Y&&<O 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:Ke}])}}hitSlop={15}style={[i.closeButtonSquare,{width:H,height:H,borderRadius:e?6:7}]}>
246
+ {X&&<O onPress={()=>{Re.alert("Reset All Settings","This restores all module visibility and UI preferences to defaults. Continue?",[{text:"Cancel",style:"cancel"},{text:"Reset",style:"destructive",onPress:Ue}])}}hitSlop={15}style={[i.closeButtonSquare,{width:B,height:B,borderRadius:e?6:7}]}>
273
247
  <_t color={t.white}size={e?12:14}/>
274
248
  </O>}
275
249
 
276
- {!U&&<O accessible={!0}accessibilityRole="button"accessibilityLabel="Settings"onPress={()=>re("main")}hitSlop={15}style={[i.closeButtonSquare,{width:H,height:H,borderRadius:e?6:7}]}>
277
- <Mt color={t.white}size={e?12:14}/>
250
+ {!Y&&<O accessible={!0}accessibilityRole="button"accessibilityLabel="Settings"onPress={()=>te("main")}hitSlop={15}style={[i.closeButtonSquare,{width:B,height:B,borderRadius:e?6:7}]}>
251
+ <Bt color={t.white}size={e?12:14}/>
278
252
  </O>}
279
253
 
280
254
 
281
- <Ae onPress={Xe||ze}hitSlop={{top:12,bottom:12,left:12,right:12}}activeOpacity={.6}accessibilityRole="button"accessibilityLabel={R("common.minimize","Minimize")}style={[i.closeButtonSquare,{width:H,height:H,borderRadius:e?6:7}]}>
255
+ <Ae onPress={Ge||ze}hitSlop={{top:12,bottom:12,left:12,right:12}}activeOpacity={.6}accessibilityRole="button"accessibilityLabel={D("common.minimize","Minimize")}style={[i.closeButtonSquare,{width:B,height:B,borderRadius:e?6:7}]}>
282
256
  <Lt size={e?14:16}color={t.white}/>
283
257
  </Ae>
284
258
 
285
259
 
286
- <Ae onPress={ze}hitSlop={{top:12,bottom:12,left:12,right:12}}activeOpacity={.6}accessibilityRole="button"accessibilityLabel={R("common.close","Close")}style={[i.closeButtonSquare,{width:H,height:H,borderRadius:e?6:7}]}>
260
+ <Ae onPress={ze}hitSlop={{top:12,bottom:12,left:12,right:12}}activeOpacity={.6}accessibilityRole="button"accessibilityLabel={D("common.close","Close")}style={[i.closeButtonSquare,{width:B,height:B,borderRadius:e?6:7}]}>
287
261
  <Ot size={e?12:14}/>
288
262
  </Ae>
289
263
  </S>
290
264
  </S>
291
265
 
292
266
 
293
- {!U&&<S style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingHorizontal:e?10:14,paddingBottom:e?8:10,paddingTop:2,gap:6}}>
267
+ {!Y&&<S style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingHorizontal:e?10:14,paddingBottom:e?8:10,paddingTop:2,gap:6}}>
294
268
  <S style={{flexDirection:"row",alignItems:"center",gap:6}}>
295
269
 
296
- <O onPress={Re}style={{flexDirection:"row",alignItems:"center",gap:5,backgroundColor:`${t.white}24`,paddingHorizontal:e?9:11,paddingVertical:e?5:6,borderRadius:7,borderWidth:1,borderColor:`${t.white}33`}}>
297
- <Me size={e?12:13}color={t.white}/>
298
- <C style={{fontFamily:D.interSemiBold,fontSize:e?10.5:11.5,lineHeight:e?13:14,color:t.white}}>
299
- {R("header.photo")}
270
+ <O onPress={Ye}style={{flexDirection:"row",alignItems:"center",gap:5,backgroundColor:`${t.white}24`,paddingHorizontal:e?9:11,paddingVertical:e?5:6,borderRadius:7,borderWidth:1,borderColor:`${t.white}33`}}>
271
+ <Gt size={e?12:13}color={t.white}/>
272
+ <C style={{fontFamily:I.interSemiBold,fontSize:e?10.5:11.5,lineHeight:e?13:14,color:t.white}}>
273
+ {D("header.photo")}
300
274
  </C>
301
275
  </O>
302
276
 
303
277
 
304
- <O onPress={De}style={{flexDirection:"row",alignItems:"center",gap:5,backgroundColor:k?`${t.red500}33`:`${t.white}24`,paddingHorizontal:e?9:11,paddingVertical:e?5:6,borderRadius:7,borderWidth:1,borderColor:k?t.red500:`${t.white}33`}}>
305
- {k?<Z.View style={{width:6,height:6,borderRadius:3,backgroundColor:t.red500}}/>:<Oe size={e?12:13}color={t.white}/>}
306
- <C style={{fontFamily:D.interSemiBold,fontSize:e?10.5:11.5,lineHeight:e?13:14,color:k?t.red300:t.white}}>
307
- {k?`${R("header.rec")} ${rt(it)}`:R("header.record")}
278
+ <O onPress={Ze}style={{flexDirection:"row",alignItems:"center",gap:5,backgroundColor:M?`${t.red500}33`:`${t.white}24`,paddingHorizontal:e?9:11,paddingVertical:e?5:6,borderRadius:7,borderWidth:1,borderColor:M?t.red500:`${t.white}33`}}>
279
+ {M?<le.View style={{width:6,height:6,borderRadius:3,backgroundColor:t.red500}}/>:<Qt size={e?12:13}color={t.white}/>}
280
+ <C style={{fontFamily:I.interSemiBold,fontSize:e?10.5:11.5,lineHeight:e?13:14,color:M?t.red300:t.white}}>
281
+ {M?`${D("header.rec")} ${et(Xe)}`:D("header.record")}
308
282
  </C>
309
283
  </O>
310
284
  </S>
311
285
 
312
286
  <S style={{flexDirection:"row",alignItems:"center",gap:6}}>
313
287
 
314
- <O accessible={!0}accessibilityRole="button"accessibilityLabel={R("common.clearAll")}onPress={()=>{ke.alert(R("header.clearEverythingTitle"),R("header.clearEverythingMessage"),[{text:R("common.cancel"),style:"cancel"},{text:R("common.clearAll"),onPress:Qe,style:"destructive"}])}}hitSlop={10}style={{flexDirection:"row",alignItems:"center",gap:5,backgroundColor:`${t.white}24`,paddingHorizontal:e?9:11,paddingVertical:e?5:6,borderRadius:7,borderWidth:1,borderColor:`${t.white}33`}}>
315
- <Z.View style={{transform:[{rotate:Te.interpolate({inputRange:[0,1],outputRange:["0deg","-25deg"]})},{scale:Te.interpolate({inputRange:[0,.5,1],outputRange:[1,1.25,1]})}]}}>
316
- <Bt color={t.white}size={e?12:13}/>
317
- </Z.View>
318
- <C style={{fontFamily:D.interSemiBold,fontSize:e?10.5:11.5,lineHeight:e?13:14,color:t.white}}>
319
- {R("common.clearAll")}
288
+ <O accessible={!0}accessibilityRole="button"accessibilityLabel={D("common.clearAll")}onPress={()=>{Re.alert(D("header.clearEverythingTitle"),D("header.clearEverythingMessage"),[{text:D("common.cancel"),style:"cancel"},{text:D("common.clearAll"),onPress:Ne,style:"destructive"}])}}hitSlop={10}style={{flexDirection:"row",alignItems:"center",gap:5,backgroundColor:`${t.white}24`,paddingHorizontal:e?9:11,paddingVertical:e?5:6,borderRadius:7,borderWidth:1,borderColor:`${t.white}33`}}>
289
+ <le.View style={{transform:[{rotate:Te.interpolate({inputRange:[0,1],outputRange:["0deg","-25deg"]})},{scale:Te.interpolate({inputRange:[0,.5,1],outputRange:[1,1.25,1]})}]}}>
290
+ <Mt color={t.white}size={e?12:13}/>
291
+ </le.View>
292
+ <C style={{fontFamily:I.interSemiBold,fontSize:e?10.5:11.5,lineHeight:e?13:14,color:t.white}}>
293
+ {D("common.clearAll")}
320
294
  </C>
321
295
  </O>
322
296
 
323
297
 
324
- <O accessible={!0}accessibilityRole="button"accessibilityLabel={R("header.about")}onPress={()=>{xe(!0)}}hitSlop={10}style={{flexDirection:"row",alignItems:"center",gap:5,backgroundColor:`${t.white}24`,paddingHorizontal:e?9:11,paddingVertical:e?5:6,borderRadius:7,borderWidth:1,borderColor:`${t.white}33`}}>
298
+ <O accessible={!0}accessibilityRole="button"accessibilityLabel={D("header.about")}onPress={()=>{xe(!0)}}hitSlop={10}style={{flexDirection:"row",alignItems:"center",gap:5,backgroundColor:`${t.white}24`,paddingHorizontal:e?9:11,paddingVertical:e?5:6,borderRadius:7,borderWidth:1,borderColor:`${t.white}33`}}>
325
299
  <Ut color={t.white}size={e?12:13}/>
326
- <C style={{fontFamily:D.interSemiBold,fontSize:e?10.5:11.5,lineHeight:e?13:14,color:t.white}}>
327
- {R("header.about")}
300
+ <C style={{fontFamily:I.interSemiBold,fontSize:e?10.5:11.5,lineHeight:e?13:14,color:t.white}}>
301
+ {D("header.about")}
328
302
  </C>
329
303
  </O>
330
304
  </S>
@@ -333,8 +307,8 @@ import B,{useMemo as de}from"react";import{Alert as ke,Animated as Z,Linking as
333
307
  </S>
334
308
 
335
309
 
336
- <$t visible={et}latestVersion={Ue}onClose={()=>ae(!1)}/>
310
+ <$t visible={Je}latestVersion={We}onClose={()=>re(!1)}/>
337
311
 
338
312
 
339
- <Ht item={Ve}visible={!!Ve}onClose={()=>N(null)}onDelete={async T=>{await E.deleteMedia(T.uri),j?.().catch(()=>{}),N(null)}}onConvertToGif={async T=>{const V=await E.convertToGif(T.uri,{fps:12,width:480});V&&(j?.().catch(()=>{}),N({id:`anim_${V.timestamp}.gif`,type:"gif",format:"gif",uri:V.uri,filename:V.uri.split("/").pop()||`anim_${V.timestamp}.gif`,sizeBytes:V.sizeBytes,timestamp:V.timestamp,durationMs:V.durationMs}))}}/>
340
- </>});export default qt;
313
+ <At item={Ve}visible={!!Ve}onClose={()=>N(null)}onDelete={async T=>{await F.deleteMedia(T.uri),j?.().catch(()=>{}),N(null)}}onConvertToGif={async T=>{const V=await F.convertToGif(T.uri,{fps:12,width:480});V&&(j?.().catch(()=>{}),N({id:`anim_${V.timestamp}.gif`,type:"gif",format:"gif",uri:V.uri,filename:V.uri.split("/").pop()||`anim_${V.timestamp}.gif`,sizeBytes:V.sizeBytes,timestamp:V.timestamp,durationMs:V.durationMs}))}}/>
314
+ </>});export default Kt;