react-native-inapp-inspector 2.5.12 → 2.5.13
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.
- package/android/.gradle/8.9/checksums/checksums.lock +0 -0
- package/android/.gradle/8.9/dependencies-accessors/gc.properties +0 -0
- package/android/.gradle/8.9/executionHistory/executionHistory.lock +0 -0
- package/android/.gradle/8.9/fileChanges/last-build.bin +0 -0
- package/android/.gradle/8.9/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/8.9/gc.properties +0 -0
- package/android/.gradle/9.2.0/checksums/checksums.lock +0 -0
- package/android/.gradle/9.2.0/fileChanges/last-build.bin +0 -0
- package/android/.gradle/9.2.0/fileHashes/fileHashes.bin +0 -0
- package/android/.gradle/9.2.0/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/9.2.0/gc.properties +0 -0
- package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
- package/android/.gradle/buildOutputCleanup/cache.properties +2 -0
- package/android/.gradle/vcs-1/gc.properties +0 -0
- package/android/.settings/org.eclipse.buildship.core.prefs +13 -0
- package/android/src/main/AndroidManifest.xml +11 -0
- package/android/src/main/java/com/inappinspector/NetworkInspectorModule.kt +379 -19
- package/android/src/main/res/xml/inappinspector_file_paths.xml +7 -0
- package/dist/commonjs/components/Inspector/AnalyticsFilterModal.js +47 -49
- package/dist/commonjs/components/Inspector/BoxModelVisualizer.d.ts +8 -0
- package/dist/commonjs/components/Inspector/BoxModelVisualizer.js +76 -0
- package/dist/commonjs/components/Inspector/ConsoleExportModal.js +51 -51
- package/dist/commonjs/components/Inspector/CrashTab.js +17 -17
- package/dist/commonjs/components/Inspector/DebuggingTab.js +24 -24
- package/dist/commonjs/components/Inspector/DeviceInfoTab.js +2 -2
- package/dist/commonjs/components/Inspector/FabLauncher.js +2 -2
- package/dist/commonjs/components/Inspector/FloatingCaptureWidget.js +2 -2
- package/dist/commonjs/components/Inspector/InspectorHeader.js +10 -10
- package/dist/commonjs/components/Inspector/MediaGalleryTab.js +10 -10
- package/dist/commonjs/components/Inspector/MediaPreviewModal.d.ts +1 -0
- package/dist/commonjs/components/Inspector/MediaPreviewModal.js +222 -222
- package/dist/commonjs/components/Inspector/NetworkExportModal.d.ts +10 -0
- package/dist/commonjs/components/Inspector/NetworkExportModal.js +333 -0
- package/dist/commonjs/components/Inspector/NetworkTab.js +48 -41
- package/dist/commonjs/components/Inspector/NpmStarPrompt.js +11 -12
- package/dist/commonjs/components/Inspector/ReduxDetail.js +17 -19
- package/dist/commonjs/components/Inspector/ReduxTab.js +5 -5
- package/dist/commonjs/components/Inspector/SettingsPanel.js +3 -6
- package/dist/commonjs/components/Inspector/SocketCard.js +2 -2
- package/dist/commonjs/components/Inspector/SupportPage.js +5 -5
- package/dist/commonjs/components/Inspector/UiA11yAuditPanel.d.ts +7 -0
- package/dist/commonjs/components/Inspector/UiA11yAuditPanel.js +97 -0
- package/dist/commonjs/components/Inspector/UiInspectorDetail.d.ts +2 -0
- package/dist/commonjs/components/Inspector/UiInspectorDetail.js +485 -0
- package/dist/commonjs/components/Inspector/UiInspectorOverlay.d.ts +2 -0
- package/dist/commonjs/components/Inspector/UiInspectorOverlay.js +199 -0
- package/dist/commonjs/components/Inspector/UiInspectorTab.d.ts +2 -0
- package/dist/commonjs/components/Inspector/UiInspectorTab.js +117 -0
- package/dist/commonjs/components/Inspector/UiLiveStyleTweaker.d.ts +10 -0
- package/dist/commonjs/components/Inspector/UiLiveStyleTweaker.js +148 -0
- package/dist/commonjs/components/Inspector/index.d.ts +28 -0
- package/dist/commonjs/components/Inspector/index.js +1 -0
- package/dist/commonjs/components/LogCard.js +9 -7
- package/dist/commonjs/constants/index.js +1 -1
- package/dist/commonjs/constants/telemetryConfig.d.ts +3 -3
- package/dist/commonjs/constants/telemetryConfig.js +1 -1
- package/dist/commonjs/constants/version.d.ts +1 -1
- package/dist/commonjs/constants/version.js +1 -1
- package/dist/commonjs/customHooks/crashHandler.d.ts +1 -1
- package/dist/commonjs/customHooks/crashHandler.js +6 -6
- package/dist/commonjs/customHooks/uiInspectorManager.d.ts +22 -0
- package/dist/commonjs/customHooks/uiInspectorManager.js +1 -0
- package/dist/commonjs/helpers/index.js +1 -3
- package/dist/commonjs/helpers/searchQueryParser.d.ts +1 -0
- package/dist/commonjs/helpers/searchQueryParser.js +7 -5
- package/dist/commonjs/helpers/shareFormatter.d.ts +16 -0
- package/dist/commonjs/helpers/shareFormatter.js +16 -9
- package/dist/commonjs/helpers/uiInspectorEngine.d.ts +62 -0
- package/dist/commonjs/helpers/uiInspectorEngine.js +19 -0
- package/dist/commonjs/i18n/locales/ar.json +1 -1
- package/dist/commonjs/i18n/locales/bn.json +1 -1
- package/dist/commonjs/i18n/locales/de.json +1 -1
- package/dist/commonjs/i18n/locales/en.json +1 -1
- package/dist/commonjs/i18n/locales/es.json +1 -1
- package/dist/commonjs/i18n/locales/fr.json +1 -1
- package/dist/commonjs/i18n/locales/gu.json +1 -1
- package/dist/commonjs/i18n/locales/hi.json +1 -1
- package/dist/commonjs/i18n/locales/id.json +1 -1
- package/dist/commonjs/i18n/locales/it.json +1 -1
- package/dist/commonjs/i18n/locales/ja.json +1 -1
- package/dist/commonjs/i18n/locales/kn.json +1 -1
- package/dist/commonjs/i18n/locales/ko.json +1 -1
- package/dist/commonjs/i18n/locales/ml.json +1 -1
- package/dist/commonjs/i18n/locales/mr.json +1 -1
- package/dist/commonjs/i18n/locales/nl.json +1 -1
- package/dist/commonjs/i18n/locales/pa.json +1 -1
- package/dist/commonjs/i18n/locales/pl.json +1 -1
- package/dist/commonjs/i18n/locales/pt.json +1 -1
- package/dist/commonjs/i18n/locales/ru.json +1 -1
- package/dist/commonjs/i18n/locales/ta.json +1 -1
- package/dist/commonjs/i18n/locales/te.json +1 -1
- package/dist/commonjs/i18n/locales/tr.json +1 -1
- package/dist/commonjs/i18n/locales/vi.json +1 -1
- package/dist/commonjs/i18n/locales/zh.json +1 -1
- package/dist/commonjs/index.d.ts +3 -1
- package/dist/commonjs/index.js +3 -3
- package/dist/commonjs/native/NativeInspector.d.ts +2 -0
- package/dist/commonjs/native/NativeInspector.js +1 -1
- package/dist/commonjs/native/NativeNetworkInspector.d.ts +2 -0
- package/dist/commonjs/types/editor.d.ts +31 -0
- package/dist/esm/components/Inspector/AnalyticsFilterModal.js +73 -75
- package/dist/esm/components/Inspector/BoxModelVisualizer.d.ts +8 -0
- package/dist/esm/components/Inspector/BoxModelVisualizer.js +76 -0
- package/dist/esm/components/Inspector/ConsoleExportModal.js +67 -67
- package/dist/esm/components/Inspector/CrashTab.js +58 -58
- package/dist/esm/components/Inspector/DebuggingTab.js +89 -89
- package/dist/esm/components/Inspector/DeviceInfoTab.js +2 -2
- package/dist/esm/components/Inspector/FabLauncher.js +21 -21
- package/dist/esm/components/Inspector/FloatingCaptureWidget.js +23 -23
- package/dist/esm/components/Inspector/InspectorHeader.js +26 -26
- package/dist/esm/components/Inspector/MediaGalleryTab.js +151 -151
- package/dist/esm/components/Inspector/MediaPreviewModal.d.ts +1 -0
- package/dist/esm/components/Inspector/MediaPreviewModal.js +468 -468
- package/dist/esm/components/Inspector/NetworkExportModal.d.ts +10 -0
- package/dist/esm/components/Inspector/NetworkExportModal.js +333 -0
- package/dist/esm/components/Inspector/NetworkTab.js +118 -111
- package/dist/esm/components/Inspector/NpmStarPrompt.js +32 -33
- package/dist/esm/components/Inspector/ReduxDetail.js +54 -56
- package/dist/esm/components/Inspector/ReduxTab.js +9 -9
- package/dist/esm/components/Inspector/SettingsPanel.js +3 -6
- package/dist/esm/components/Inspector/SocketCard.js +13 -13
- package/dist/esm/components/Inspector/SupportPage.js +5 -5
- package/dist/esm/components/Inspector/UiA11yAuditPanel.d.ts +7 -0
- package/dist/esm/components/Inspector/UiA11yAuditPanel.js +97 -0
- package/dist/esm/components/Inspector/UiInspectorDetail.d.ts +2 -0
- package/dist/esm/components/Inspector/UiInspectorDetail.js +422 -0
- package/dist/esm/components/Inspector/UiInspectorOverlay.d.ts +2 -0
- package/dist/esm/components/Inspector/UiInspectorOverlay.js +138 -0
- package/dist/esm/components/Inspector/UiInspectorTab.d.ts +2 -0
- package/dist/esm/components/Inspector/UiInspectorTab.js +117 -0
- package/dist/esm/components/Inspector/UiLiveStyleTweaker.d.ts +10 -0
- package/dist/esm/components/Inspector/UiLiveStyleTweaker.js +148 -0
- package/dist/esm/components/Inspector/index.d.ts +28 -0
- package/dist/esm/components/Inspector/index.js +1 -0
- package/dist/esm/components/LogCard.js +57 -55
- package/dist/esm/constants/index.js +1 -1
- package/dist/esm/constants/telemetryConfig.d.ts +3 -3
- package/dist/esm/constants/telemetryConfig.js +1 -1
- package/dist/esm/constants/version.d.ts +1 -1
- package/dist/esm/constants/version.js +1 -1
- package/dist/esm/customHooks/crashHandler.d.ts +1 -1
- package/dist/esm/customHooks/crashHandler.js +6 -6
- package/dist/esm/customHooks/uiInspectorManager.d.ts +22 -0
- package/dist/esm/customHooks/uiInspectorManager.js +1 -0
- package/dist/esm/helpers/index.js +4 -6
- package/dist/esm/helpers/searchQueryParser.d.ts +1 -0
- package/dist/esm/helpers/searchQueryParser.js +7 -5
- package/dist/esm/helpers/shareFormatter.d.ts +16 -0
- package/dist/esm/helpers/shareFormatter.js +20 -13
- package/dist/esm/helpers/uiInspectorEngine.d.ts +48 -0
- package/dist/esm/helpers/uiInspectorEngine.js +19 -0
- package/dist/esm/i18n/locales/ar.json +1 -1
- package/dist/esm/i18n/locales/bn.json +1 -1
- package/dist/esm/i18n/locales/de.json +1 -1
- package/dist/esm/i18n/locales/en.json +1 -1
- package/dist/esm/i18n/locales/es.json +1 -1
- package/dist/esm/i18n/locales/fr.json +1 -1
- package/dist/esm/i18n/locales/gu.json +1 -1
- package/dist/esm/i18n/locales/hi.json +1 -1
- package/dist/esm/i18n/locales/id.json +1 -1
- package/dist/esm/i18n/locales/it.json +1 -1
- package/dist/esm/i18n/locales/ja.json +1 -1
- package/dist/esm/i18n/locales/kn.json +1 -1
- package/dist/esm/i18n/locales/ko.json +1 -1
- package/dist/esm/i18n/locales/ml.json +1 -1
- package/dist/esm/i18n/locales/mr.json +1 -1
- package/dist/esm/i18n/locales/nl.json +1 -1
- package/dist/esm/i18n/locales/pa.json +1 -1
- package/dist/esm/i18n/locales/pl.json +1 -1
- package/dist/esm/i18n/locales/pt.json +1 -1
- package/dist/esm/i18n/locales/ru.json +1 -1
- package/dist/esm/i18n/locales/ta.json +1 -1
- package/dist/esm/i18n/locales/te.json +1 -1
- package/dist/esm/i18n/locales/tr.json +1 -1
- package/dist/esm/i18n/locales/vi.json +1 -1
- package/dist/esm/i18n/locales/zh.json +1 -1
- package/dist/esm/index.d.ts +3 -1
- package/dist/esm/index.js +7 -7
- package/dist/esm/native/NativeInspector.d.ts +2 -0
- package/dist/esm/native/NativeInspector.js +1 -1
- package/dist/esm/native/NativeNetworkInspector.d.ts +2 -0
- package/dist/esm/types/editor.d.ts +31 -0
- package/ios/NetworkInspectorModule.mm +314 -16
- package/package.json +1 -1
- package/src/native/NativeInspector.ts +37 -0
- package/src/native/NativeNetworkInspector.ts +2 -0
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import _e,{useState as E,useMemo as Ve,useEffect as et}from"react";import{Alert as ze,Platform as tt,Pressable as U,ScrollView as Z,StyleSheet as rt,Text as C,TextInput as Tt,ToastAndroid as
|
|
1
|
+
import _e,{useState as E,useMemo as Ve,useEffect as et}from"react";import{Alert as ze,Platform as tt,Pressable as U,ScrollView as Z,StyleSheet as rt,Text as C,TextInput as Tt,ToastAndroid as Ne,TouchableOpacity as Oe,View as T}from"react-native";import{useTranslation as ht}from"../../i18n";import{useInspector as wt}from"./InspectorContext";import He from"../SegmentedTabs";import K from"../JsonViewer";import Me from"../DiffViewer";import Ee from"../CopyButton";import Ct from"../ShareButton";import St from"../TouchableScale";import Bt from"../HighlightText";import Vt from"../AnimatedEntrance";import{getActionHistory as zt}from"../../customHooks/reduxLogger";import{getSize as q,openInVSCode as _,parseStackLine as je}from"../../helpers";import{shareReduxReport as It}from"../../helpers/shareFormatter";import{getCustomStorage as $e}from"../../helpers/settingsStore";import{AppColors as e}from"../../styles/AppColors";import{AppFonts as B}from"../../styles/AppFonts";import{TerminalIcon as Je,SearchIcon as Pt,ClearIcon as Wt,ClockIcon as Ie,LayersIcon as Ge,TrashIcon as Ue,ForwardChevronIcon as Rt,LiveStateIcon as Ke,TimelineIcon as Te,StorageIcon as Ce,MetadataIcon as Ft,BoltIcon as Pe,AtomIcon as Dt,ScreenIcon as At,ListenerIcon as Lt,DocIcon as We,ExternalLinkIcon as Se,CodeBracketsIcon as Nt}from"../NetworkIcons";const qe=k=>{switch(k){case"saga":return{label:"SAGA",renderIcon:(D,F=9)=><Dt color={D}size={F}/>,bg:e.purple100,text:e.brandPurple,border:e.purple200};case"thunk":return{label:"THUNK",renderIcon:(D,F=9)=><Pe color={D}size={F}/>,bg:e.amber100,text:e.amber800Warm,border:e.amber200};case"epic":return{label:"EPIC",renderIcon:(D,F=9)=><Je color={D}size={F}/>,bg:e.sky100,text:e.sky600,border:e.sky400};case"listener":return{label:"LISTENER",renderIcon:(D,F=9)=><Lt color={D}size={F}/>,bg:e.teal100,text:e.teal700,border:e.teal400};case"component":return{label:"UI DISPATCH",renderIcon:(D,F=9)=><At color={D}size={F}/>,bg:e.sky100,text:e.sky600,border:e.sky400};default:return{label:"DISPATCH",renderIcon:(D,F=9)=><Pe color={D}size={F}/>,bg:e.slate100,text:e.slate700,border:e.slate200}}},Ot=_e.memo(()=>{const{t:k}=ht(),{reduxState:D,reduxLastActionMap:F,selectedReduxSlice:W,selectedReduxAction:z}=wt(),[A,Re]=E(""),[N,Fe]=E("live"),[Q,Qe]=E("payload"),[ve,De]=E("raw"),[Xe,Ye]=E(null),[J,G]=E(!1),[X,O]=E(null),ke=Ve(()=>zt(),[F]),j=Ve(()=>W?ke.filter(V=>!V.affectedSlices||V.affectedSlices.length===0?!0:V.affectedSlices.includes(W)):ke,[ke,W]),Ae=Ve(()=>{if(!A.trim())return j;const V=A.toLowerCase();return j.filter(R=>R.type.toLowerCase().includes(V)||R.callerFile&&R.callerFile.toLowerCase().includes(V)||R.payload&&JSON.stringify(R.payload).toLowerCase().includes(V))},[j,A]);et(()=>{if(!W)return;async function V(){try{const R=$e();if(!R){G(!1),O(null);return}let v=await R.getItem(`persist:${W}`);if(v){try{O(JSON.parse(v))}catch{O(v)}G(!0);return}let I=await R.getItem("persist:root");if(I){const S=JSON.parse(I);if(S&&S[W]!==void 0){const P=S[W];try{O(typeof P=="string"?JSON.parse(P):P)}catch{O(P)}G(!0);return}}}catch{}G(!1),O(null)}V()},[W]);const Le=()=>{W&&ze.alert(k("redux.clearPersistedTitle","Clear Persisted State"),k("redux.clearPersistedMessage",'Are you sure you want to delete persisted storage for slice "{{slice}}"?').replace("{{slice}}",W||""),[{text:k("common.cancel","Cancel"),style:"cancel"},{text:"Delete",style:"destructive",onPress:async()=>{try{const V=$e();if(!V)return;typeof V.removeItem=="function"?await V.removeItem(`persist:${W}`):await V.setItem(`persist:${W}`,""),G(!1),O(null),Fe("live"),tt.OS==="android"?Ne.show("Persisted state cleared",Ne.SHORT):ze.alert(k("redux.clearedPersisted","Persisted state has been cleared."))}catch{ze.alert(k("common.failed","Failed"),k("redux.clearPersistedError","Failed to clear persisted state."))}}}])};if(W!=null){const V=D?.[W],R=V&&typeof V=="object"?Object.keys(V).length:typeof V<"u"?1:0,v=F[W],I=[{key:"live",label:k("redux.liveState","Live State"),icon:S=><Ke color={S?e.white:e.grayText}size={12}/>},{key:"timeline",label:`${k("redux.timeline","Timeline")} (${j.length})`,icon:S=><Te color={S?e.white:e.grayText}size={12}/>},{key:"persisted",label:J?k("redux.persisted","Persisted"):k("redux.storage","Storage"),icon:S=><Ce color={S?e.white:e.grayText}size={12}/>},{key:"metadata",label:k("redux.metadata","Metadata"),icon:S=><Ft color={S?e.white:e.grayText}size={12}/>}];return<T style={{flex:1,backgroundColor:e.grayBackground}}>
|
|
2
2
|
|
|
3
3
|
<T style={t.infoBar}>
|
|
4
4
|
<T style={t.infoTopRow}>
|
|
5
5
|
<T style={{flexDirection:"row",alignItems:"center",gap:6,flexWrap:"wrap",flex:1,minWidth:0}}>
|
|
6
6
|
<T style={[t.methodBadge,{backgroundColor:e.indigo600Alt}]}>
|
|
7
7
|
<C style={t.methodBadgeText}>
|
|
8
|
-
{
|
|
8
|
+
{k("redux.slice","SLICE")}
|
|
9
9
|
</C>
|
|
10
10
|
</T>
|
|
11
11
|
<C style={t.sliceNameText}numberOfLines={1}>
|
|
@@ -14,11 +14,11 @@ import _e,{useState as E,useMemo as Ve,useEffect as et}from"react";import{Alert
|
|
|
14
14
|
{J?<T style={t.persistedChip}>
|
|
15
15
|
<Ce color={e.emerald700}size={10}/>
|
|
16
16
|
<C style={t.persistedChipText}>
|
|
17
|
-
{
|
|
17
|
+
{k("redux.persisted","Persisted").toUpperCase()}
|
|
18
18
|
</C>
|
|
19
19
|
</T>:<T style={t.inMemoryChip}>
|
|
20
20
|
<C style={t.inMemoryChipText}>
|
|
21
|
-
{
|
|
21
|
+
{k("redux.inMemory","In-Memory").toUpperCase()}
|
|
22
22
|
</C>
|
|
23
23
|
</T>}
|
|
24
24
|
{v?.timestamp&&<T style={t.timePill}>
|
|
@@ -30,7 +30,7 @@ import _e,{useState as E,useMemo as Ve,useEffect as et}from"react";import{Alert
|
|
|
30
30
|
</T>
|
|
31
31
|
|
|
32
32
|
|
|
33
|
-
<Ee value={()=>
|
|
33
|
+
<Ee value={()=>N==="live"?V:X}label={k("redux.sliceJson","Slice JSON")}/>
|
|
34
34
|
</T>
|
|
35
35
|
|
|
36
36
|
|
|
@@ -38,7 +38,7 @@ import _e,{useState as E,useMemo as Ve,useEffect as et}from"react";import{Alert
|
|
|
38
38
|
<T style={[t.statPill,{backgroundColor:e.indigo50,borderColor:e.indigo400}]}>
|
|
39
39
|
<Ge color={e.indigo600Alt}size={11}/>
|
|
40
40
|
<C style={[t.statLabel,{color:e.indigo600Alt}]}>
|
|
41
|
-
{
|
|
41
|
+
{k("redux.keys","Keys")}:
|
|
42
42
|
</C>
|
|
43
43
|
<C style={[t.statValue,{color:e.indigo600Alt}]}>
|
|
44
44
|
{R}
|
|
@@ -46,16 +46,16 @@ import _e,{useState as E,useMemo as Ve,useEffect as et}from"react";import{Alert
|
|
|
46
46
|
</T>
|
|
47
47
|
<T style={[t.statPill,{backgroundColor:e.sky100,borderColor:e.sky400}]}>
|
|
48
48
|
<C style={[t.statLabel,{color:e.sky600}]}>
|
|
49
|
-
{
|
|
49
|
+
{k("redux.size","Size")}:
|
|
50
50
|
</C>
|
|
51
51
|
<C style={[t.statValue,{color:e.sky600}]}>
|
|
52
|
-
{q(
|
|
52
|
+
{q(V)}
|
|
53
53
|
</C>
|
|
54
54
|
</T>
|
|
55
55
|
<T style={[t.statPill,{backgroundColor:e.purple100,borderColor:e.purple200}]}>
|
|
56
56
|
<Te color={e.violet600}size={11}/>
|
|
57
57
|
<C style={[t.statLabel,{color:e.brandPurple}]}>
|
|
58
|
-
{
|
|
58
|
+
{k("redux.timeline","Timeline")}:
|
|
59
59
|
</C>
|
|
60
60
|
<C style={[t.statValue,{color:e.brandPurple}]}>
|
|
61
61
|
{j.length}
|
|
@@ -64,7 +64,7 @@ import _e,{useState as E,useMemo as Ve,useEffect as et}from"react";import{Alert
|
|
|
64
64
|
{v&&<T style={[t.statPill,{backgroundColor:e.amber100,borderColor:e.amber200,flexShrink:1,maxWidth:160}]}>
|
|
65
65
|
<Pe color={e.amber800Warm}size={11}/>
|
|
66
66
|
<C style={[t.statLabel,{color:e.amber800Warm}]}>
|
|
67
|
-
{
|
|
67
|
+
{k("redux.last","Last")}:
|
|
68
68
|
</C>
|
|
69
69
|
<C style={[t.statValue,{color:e.amber800Warm,flexShrink:1}]}numberOfLines={1}>
|
|
70
70
|
{v.type}
|
|
@@ -73,20 +73,20 @@ import _e,{useState as E,useMemo as Ve,useEffect as et}from"react";import{Alert
|
|
|
73
73
|
</T>
|
|
74
74
|
|
|
75
75
|
|
|
76
|
-
<He tabs={I}activeKey={
|
|
76
|
+
<He tabs={I}activeKey={N}onChange={S=>Fe(S)}style={{marginTop:10}}/>
|
|
77
77
|
</T>
|
|
78
78
|
|
|
79
79
|
|
|
80
|
-
{
|
|
80
|
+
{N!=="metadata"&&<T style={t.searchContainer}>
|
|
81
81
|
<Pt color={e.grayTextWeak}size={14}/>
|
|
82
|
-
<Tt placeholder={
|
|
82
|
+
<Tt placeholder={N==="timeline"?"Search action type, file, or payload...":"Search keys or values..."}placeholderTextColor={e.grayTextWeak}value={A}onChangeText={Re}style={t.searchInput}autoCorrect={!1}autoCapitalize="none"/>
|
|
83
83
|
{A.length>0&&<U onPress={()=>Re("")}hitSlop={10}>
|
|
84
84
|
<Wt color={e.grayTextWeak}size={14}/>
|
|
85
85
|
</U>}
|
|
86
86
|
</T>}
|
|
87
87
|
|
|
88
88
|
|
|
89
|
-
{
|
|
89
|
+
{N==="timeline"?<Z style={{flex:1}}contentContainerStyle={{padding:12,paddingBottom:40}}keyboardShouldPersistTaps="handled">
|
|
90
90
|
{Ae.length===0?<T style={t.emptyBox}>
|
|
91
91
|
<Te color={e.grayTextWeak}size={28}/>
|
|
92
92
|
<C style={t.emptyBoxText}>
|
|
@@ -104,7 +104,7 @@ import _e,{useState as E,useMemo as Ve,useEffect as et}from"react";import{Alert
|
|
|
104
104
|
|
|
105
105
|
<T style={{flexDirection:"row",alignItems:"center",gap:3,backgroundColor:$.bg,paddingHorizontal:5,paddingVertical:2,borderRadius:4,borderWidth:1,borderColor:$.border}}>
|
|
106
106
|
{$.renderIcon($.text,8.5)}
|
|
107
|
-
<C style={{fontFamily:
|
|
107
|
+
<C style={{fontFamily:B.interBold,fontSize:8.5,color:$.text,letterSpacing:.3}}>
|
|
108
108
|
{$.label}
|
|
109
109
|
</C>
|
|
110
110
|
</T>
|
|
@@ -124,18 +124,18 @@ import _e,{useState as E,useMemo as Ve,useEffect as et}from"react";import{Alert
|
|
|
124
124
|
{S.callerFile&&<T style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",marginTop:6,marginBottom:2,paddingHorizontal:8,paddingVertical:4,backgroundColor:e.grayBackground,borderRadius:6,borderWidth:1,borderColor:e.dividerColor}}>
|
|
125
125
|
<T style={{flexDirection:"row",alignItems:"center",gap:5,flex:1,minWidth:0}}>
|
|
126
126
|
<We color={e.sky600}size={10}/>
|
|
127
|
-
<C style={{fontFamily:
|
|
128
|
-
{
|
|
127
|
+
<C style={{fontFamily:B.interMedium,fontSize:9.5,color:e.grayTextWeak}}>
|
|
128
|
+
{k("redux.triggeredFrom","Triggered From:")}
|
|
129
129
|
</C>
|
|
130
|
-
<C style={{fontFamily:
|
|
130
|
+
<C style={{fontFamily:B.interBold,fontSize:9.5,color:e.sky600}}numberOfLines={1}>
|
|
131
131
|
{Ze}:{S.callerLine||1}
|
|
132
132
|
</C>
|
|
133
133
|
</T>
|
|
134
134
|
|
|
135
135
|
<U onPress={()=>_(S.callerFile,S.callerLine,S.callerCol)}hitSlop={8}style={{flexDirection:"row",alignItems:"center",gap:3,backgroundColor:e.sky100,paddingHorizontal:5,paddingVertical:2,borderRadius:4}}>
|
|
136
136
|
<Se color={e.sky600}size={9}/>
|
|
137
|
-
<C style={{fontFamily:
|
|
138
|
-
{
|
|
137
|
+
<C style={{fontFamily:B.interBold,fontSize:8.5,color:e.sky600}}>
|
|
138
|
+
{k("redux.openInEditor","Open in Editor")}
|
|
139
139
|
</C>
|
|
140
140
|
</U>
|
|
141
141
|
</T>}
|
|
@@ -145,16 +145,16 @@ import _e,{useState as E,useMemo as Ve,useEffect as et}from"react";import{Alert
|
|
|
145
145
|
|
|
146
146
|
{S.stack?<T style={{marginBottom:12}}>
|
|
147
147
|
<C style={t.expandedSectionTitle}>
|
|
148
|
-
{
|
|
148
|
+
{k("redux.callStack","Call Stack Trace")}:
|
|
149
149
|
</C>
|
|
150
150
|
<T style={{backgroundColor:e.grayBackground,borderRadius:8,padding:8,borderWidth:1,borderColor:e.dividerColor,gap:4}}>
|
|
151
151
|
{S.stack.split(`
|
|
152
152
|
`).map(M=>M.trim()).filter(M=>M.length>0&&!M.includes("reduxLogger")&&!M.includes("inspectorReduxMiddleware")).slice(0,8).map((M,Be)=>{const L=je(M,Be===0),Y=L.frameType==="app";return<U key={Be}onPress={()=>{L.fileName!=="Unknown"&&_(L.fullPath||L.fileName,L.lineNumber,L.columnNumber)}}style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingVertical:3,borderBottomWidth:Be<7?.5:0,borderBottomColor:e.dividerColor}}>
|
|
153
153
|
<T style={{flex:1,minWidth:0}}>
|
|
154
|
-
<C style={{fontFamily:Y?
|
|
154
|
+
<C style={{fontFamily:Y?B.interBold:B.interRegular,fontSize:9.5,color:Y?e.primaryBlack:e.grayTextWeak}}numberOfLines={1}>
|
|
155
155
|
{L.functionName||"anonymous"}
|
|
156
156
|
</C>
|
|
157
|
-
<C style={{fontFamily:
|
|
157
|
+
<C style={{fontFamily:B.interRegular,fontSize:8.5,color:Y?e.sky600:e.grayTextWeak}}numberOfLines={1}>
|
|
158
158
|
{L.fileName}:
|
|
159
159
|
{L.lineNumber||1}:
|
|
160
160
|
{L.columnNumber||1}
|
|
@@ -167,40 +167,40 @@ import _e,{useState as E,useMemo as Ve,useEffect as et}from"react";import{Alert
|
|
|
167
167
|
|
|
168
168
|
{S.payload!==void 0&&<T style={{marginBottom:12}}>
|
|
169
169
|
<C style={t.expandedSectionTitle}>
|
|
170
|
-
{
|
|
170
|
+
{k("redux.actionPayload","Action Payload:")}
|
|
171
171
|
</C>
|
|
172
172
|
<K data={S.payload}search={A}forceOpen={!0}wrap={!0}/>
|
|
173
173
|
</T>}
|
|
174
174
|
|
|
175
175
|
<C style={t.expandedSectionTitle}>
|
|
176
|
-
{
|
|
176
|
+
{k("redux.stateChangesDiff","State Changes (Diff):")}
|
|
177
177
|
</C>
|
|
178
178
|
<Me oldData={S.prevState?.[W]||{}}newData={S.nextState?.[W]||{}}forceOpen={!0}/>
|
|
179
179
|
</T>:<T style={t.collapsedPrompt}>
|
|
180
180
|
<C style={t.collapsedPromptText}>
|
|
181
|
-
{
|
|
181
|
+
{k("redux.tapToInspectAction","Tap to inspect action payload & diff changes")}
|
|
182
182
|
</C>
|
|
183
183
|
<Rt color={e.grayTextWeak}size={12}/>
|
|
184
184
|
</T>}
|
|
185
185
|
</St>
|
|
186
186
|
</Vt>})}
|
|
187
|
-
</Z>:
|
|
187
|
+
</Z>:N==="metadata"?<Z style={{flex:1}}contentContainerStyle={{padding:12,paddingBottom:40}}keyboardShouldPersistTaps="handled">
|
|
188
188
|
<T style={t.metadataCard}>
|
|
189
|
-
{[{label:"Slice Name",value:W},{label:"Root Keys Count",value:`${R} keys`},{label:"In-Memory State Size",value:q(
|
|
189
|
+
{[{label:"Slice Name",value:W},{label:"Root Keys Count",value:`${R} keys`},{label:"In-Memory State Size",value:q(V)},{label:"Persistence Status",value:J?`Persisted (${q(X)})`:"Not Persisted (In-Memory)"},{label:"Dispatched Actions History",value:`${j.length} recorded actions`},{label:"Last Dispatched Action",value:v?v.type:"None"},{label:"Last Action Timestamp",value:v?v.timestamp:"Initial"}].map((S,P)=><T key={P}style={[t.metaRow,P===6&&{borderBottomWidth:0}]}>
|
|
190
190
|
<C style={t.metaLabel}>{S.label}</C>
|
|
191
191
|
<C style={t.metaValue}selectable numberOfLines={2}>
|
|
192
192
|
{S.value}
|
|
193
193
|
</C>
|
|
194
194
|
</T>)}
|
|
195
195
|
|
|
196
|
-
{J&&<
|
|
196
|
+
{J&&<Oe style={t.clearPersistBtn}onPress={Le}>
|
|
197
197
|
<Ue color={e.errorColor}size={14}/>
|
|
198
198
|
<C style={t.clearPersistText}>
|
|
199
|
-
Clear Persisted Storage For This Slice
|
|
199
|
+
{k("redux.clearPersistedStorageSlice","Clear Persisted Storage For This Slice")}
|
|
200
200
|
</C>
|
|
201
|
-
</
|
|
201
|
+
</Oe>}
|
|
202
202
|
</T>
|
|
203
|
-
</Z>:
|
|
203
|
+
</Z>:N==="persisted"?<T style={{flex:1,padding:10}}>
|
|
204
204
|
{J?<T style={{flex:1}}>
|
|
205
205
|
<T style={t.persistedInfoCard}>
|
|
206
206
|
<T style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between"}}>
|
|
@@ -210,12 +210,12 @@ import _e,{useState as E,useMemo as Ve,useEffect as et}from"react";import{Alert
|
|
|
210
210
|
Stored in persistent storage ({q(X)})
|
|
211
211
|
</C>
|
|
212
212
|
</T>
|
|
213
|
-
<
|
|
213
|
+
<Oe style={t.clearPersistMiniBtn}onPress={Le}>
|
|
214
214
|
<Ue color={e.errorColor}size={12}/>
|
|
215
215
|
<C style={t.clearPersistMiniText}>
|
|
216
216
|
Clear
|
|
217
217
|
</C>
|
|
218
|
-
</
|
|
218
|
+
</Oe>
|
|
219
219
|
</T>
|
|
220
220
|
</T>
|
|
221
221
|
<T style={{flex:1,marginTop:8}}>
|
|
@@ -224,17 +224,16 @@ import _e,{useState as E,useMemo as Ve,useEffect as et}from"react";import{Alert
|
|
|
224
224
|
</T>:<T style={t.emptyBox}>
|
|
225
225
|
<Ce color={e.grayTextWeak}size={32}/>
|
|
226
226
|
<C style={t.emptyBoxTitle}>
|
|
227
|
-
Not Persisted in Storage
|
|
227
|
+
{k("redux.notPersistedInStorage","Not Persisted in Storage")}
|
|
228
228
|
</C>
|
|
229
229
|
<C style={t.emptyBoxText}>
|
|
230
|
-
This slice is not stored in AsyncStorage or redux-persist.
|
|
231
|
-
State exists purely in active JavaScript memory.
|
|
230
|
+
{k("redux.notPersistedDesc","This slice is not stored in AsyncStorage or redux-persist. State exists purely in active JavaScript memory.")}
|
|
232
231
|
</C>
|
|
233
232
|
</T>}
|
|
234
233
|
</T>:<T style={{flex:1,padding:10}}>
|
|
235
|
-
<K data={
|
|
234
|
+
<K data={V}search={A}forceOpen={A.length>0?!0:void 0}mode={ve}onModeChange={De}fullHeight={!0}wrap={!0}/>
|
|
236
235
|
</T>}
|
|
237
|
-
</T>}if(z!=null){const
|
|
236
|
+
</T>}if(z!=null){const V=qe(z.originType),R=z.callerFile?z.callerFile.split("/").pop():null,v=[{key:"payload",label:k("redux.payload","Payload"),icon:I=><Nt color={I?e.white:e.grayText}size={12}/>},{key:"diff",label:k("redux.diff","State Diff"),icon:I=><Te color={I?e.white:e.grayText}size={12}/>},{key:"stack",label:k("redux.callStack","Call Stack"),icon:I=><We color={I?e.white:e.grayText}size={12}/>},{key:"raw",label:"Raw Action",icon:I=><Ke color={I?e.white:e.grayText}size={12}/>}];return<T style={{flex:1,backgroundColor:e.grayBackground}}>
|
|
238
237
|
|
|
239
238
|
<T style={t.infoBar}>
|
|
240
239
|
<T style={t.infoTopRow}>
|
|
@@ -245,10 +244,10 @@ import _e,{useState as E,useMemo as Ve,useEffect as et}from"react";import{Alert
|
|
|
245
244
|
</C>
|
|
246
245
|
</T>
|
|
247
246
|
|
|
248
|
-
<T style={{flexDirection:"row",alignItems:"center",gap:3,backgroundColor:
|
|
249
|
-
{
|
|
250
|
-
<C style={{fontFamily:
|
|
251
|
-
{
|
|
247
|
+
<T style={{flexDirection:"row",alignItems:"center",gap:3,backgroundColor:V.bg,paddingHorizontal:5,paddingVertical:2,borderRadius:4,borderWidth:1,borderColor:V.border}}>
|
|
248
|
+
{V.renderIcon(V.text,8.5)}
|
|
249
|
+
<C style={{fontFamily:B.interBold,fontSize:8.5,color:V.text,letterSpacing:.3}}>
|
|
250
|
+
{V.label}
|
|
252
251
|
</C>
|
|
253
252
|
</T>
|
|
254
253
|
<C style={t.sliceNameText}numberOfLines={1}>
|
|
@@ -294,18 +293,18 @@ import _e,{useState as E,useMemo as Ve,useEffect as et}from"react";import{Alert
|
|
|
294
293
|
{z.callerFile&&<T style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",marginTop:8,paddingHorizontal:8,paddingVertical:4,backgroundColor:e.grayBackground,borderRadius:6,borderWidth:1,borderColor:e.dividerColor}}>
|
|
295
294
|
<T style={{flexDirection:"row",alignItems:"center",gap:5,flex:1,minWidth:0}}>
|
|
296
295
|
<We color={e.sky600}size={10}/>
|
|
297
|
-
<C style={{fontFamily:
|
|
296
|
+
<C style={{fontFamily:B.interMedium,fontSize:9.5,color:e.grayTextWeak}}>
|
|
298
297
|
Triggered from:
|
|
299
298
|
</C>
|
|
300
|
-
<C style={{fontFamily:
|
|
299
|
+
<C style={{fontFamily:B.interBold,fontSize:9.5,color:e.sky600}}numberOfLines={1}>
|
|
301
300
|
{R}:{z.callerLine||1}
|
|
302
301
|
</C>
|
|
303
302
|
</T>
|
|
304
303
|
|
|
305
304
|
<U onPress={()=>_(z.callerFile,z.callerLine,z.callerCol)}hitSlop={8}style={{flexDirection:"row",alignItems:"center",gap:3,backgroundColor:e.sky100,paddingHorizontal:5,paddingVertical:2,borderRadius:4}}>
|
|
306
305
|
<Se color={e.sky600}size={9}/>
|
|
307
|
-
<C style={{fontFamily:
|
|
308
|
-
Open in Editor
|
|
306
|
+
<C style={{fontFamily:B.interBold,fontSize:8.5,color:e.sky600}}>
|
|
307
|
+
{k("redux.openInEditor","Open in Editor")}
|
|
309
308
|
</C>
|
|
310
309
|
</U>
|
|
311
310
|
</T>}
|
|
@@ -318,7 +317,7 @@ import _e,{useState as E,useMemo as Ve,useEffect as et}from"react";import{Alert
|
|
|
318
317
|
{Q==="payload"?<T style={{flex:1,padding:10}}>
|
|
319
318
|
{z.payload!==void 0?<K data={z.payload}search={A}forceOpen={!0}fullHeight={!0}wrap={!0}/>:<T style={t.emptyBox}>
|
|
320
319
|
<C style={t.emptyBoxText}>
|
|
321
|
-
This action has no payload dispatched.
|
|
320
|
+
{k("redux.actionNoPayload","This action has no payload dispatched.")}
|
|
322
321
|
</C>
|
|
323
322
|
</T>}
|
|
324
323
|
</T>:Q==="diff"?<Z style={{flex:1}}contentContainerStyle={{padding:12,paddingBottom:40}}keyboardShouldPersistTaps="handled">
|
|
@@ -326,15 +325,15 @@ import _e,{useState as E,useMemo as Ve,useEffect as et}from"react";import{Alert
|
|
|
326
325
|
</Z>:Q==="stack"?<Z style={{flex:1}}contentContainerStyle={{padding:12,paddingBottom:40}}keyboardShouldPersistTaps="handled">
|
|
327
326
|
{z.stack?<T style={{backgroundColor:e.white,borderRadius:10,padding:10,borderWidth:1,borderColor:e.dividerColor}}>
|
|
328
327
|
<C style={t.expandedSectionTitle}>
|
|
329
|
-
Dispatched from call stack:
|
|
328
|
+
{k("redux.dispatchedFromCallStack","Dispatched from call stack:")}
|
|
330
329
|
</C>
|
|
331
330
|
{z.stack.split(`
|
|
332
331
|
`).map(I=>I.trim()).filter(I=>I.length>0&&!I.includes("reduxLogger")&&!I.includes("inspectorReduxMiddleware")).map((I,S)=>{const P=je(I,S===0),H=P.frameType==="app";return<U key={S}onPress={()=>{P.fileName!=="Unknown"&&_(P.fullPath||P.fileName,P.lineNumber,P.columnNumber)}}style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingVertical:5,borderBottomWidth:.5,borderBottomColor:e.dividerColor}}>
|
|
333
332
|
<T style={{flex:1,minWidth:0}}>
|
|
334
|
-
<C style={{fontFamily:H?
|
|
333
|
+
<C style={{fontFamily:H?B.interBold:B.interRegular,fontSize:10.5,color:H?e.primaryBlack:e.grayTextWeak}}numberOfLines={1}>
|
|
335
334
|
{P.functionName||"anonymous"}
|
|
336
335
|
</C>
|
|
337
|
-
<C style={{fontFamily:
|
|
336
|
+
<C style={{fontFamily:B.interRegular,fontSize:9,color:H?e.sky600:e.grayTextWeak}}numberOfLines={1}>
|
|
338
337
|
{P.fileName}:{P.lineNumber||1}:
|
|
339
338
|
{P.columnNumber||1}
|
|
340
339
|
</C>
|
|
@@ -343,7 +342,7 @@ import _e,{useState as E,useMemo as Ve,useEffect as et}from"react";import{Alert
|
|
|
343
342
|
</U>})}
|
|
344
343
|
</T>:<T style={t.emptyBox}>
|
|
345
344
|
<C style={t.emptyBoxText}>
|
|
346
|
-
No call stack trace captured for this action.
|
|
345
|
+
{k("redux.noCallStackCaptured","No call stack trace captured for this action.")}
|
|
347
346
|
</C>
|
|
348
347
|
</T>}
|
|
349
348
|
</Z>:<T style={{flex:1,padding:10}}>
|
|
@@ -352,10 +351,9 @@ import _e,{useState as E,useMemo as Ve,useEffect as et}from"react";import{Alert
|
|
|
352
351
|
</T>}return<T style={t.emptyBox}>
|
|
353
352
|
<Je color={e.purple}size={32}/>
|
|
354
353
|
<C style={t.emptyBoxTitle}>
|
|
355
|
-
No Redux Slice Selected
|
|
354
|
+
{k("redux.noSliceSelected","No Redux Slice Selected")}
|
|
356
355
|
</C>
|
|
357
356
|
<C style={t.emptyBoxText}>
|
|
358
|
-
Select a slice from the Redux tab to inspect its state and dispatched
|
|
359
|
-
actions.
|
|
357
|
+
{k("redux.selectSlicePrompt","Select a slice from the Redux tab to inspect its state and dispatched actions.")}
|
|
360
358
|
</C>
|
|
361
|
-
</T>}),t=rt.create({infoBar:{backgroundColor:e.white,padding:12,borderBottomWidth:1,borderBottomColor:e.dividerColor},infoTopRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",marginBottom:8},methodBadge:{paddingHorizontal:7,paddingVertical:2.5,borderRadius:5},methodBadgeText:{fontFamily:
|
|
359
|
+
</T>}),t=rt.create({infoBar:{backgroundColor:e.white,padding:12,borderBottomWidth:1,borderBottomColor:e.dividerColor},infoTopRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",marginBottom:8},methodBadge:{paddingHorizontal:7,paddingVertical:2.5,borderRadius:5},methodBadgeText:{fontFamily:B.interBold,fontSize:9.5,color:e.white,letterSpacing:.4},sliceNameText:{fontFamily:B.interBold,fontSize:14,color:e.primaryBlack,flexShrink:1},persistedChip:{flexDirection:"row",alignItems:"center",gap:3.5,backgroundColor:e.mintGreenBg,paddingHorizontal:6,paddingVertical:2,borderRadius:4,borderWidth:1,borderColor:e.mintGreenBorder},persistedChipText:{fontFamily:B.interBold,fontSize:9,color:e.mintGreenText},inMemoryChip:{backgroundColor:e.indigo50,paddingHorizontal:6,paddingVertical:2,borderRadius:4,borderWidth:1,borderColor:e.blueBorder},inMemoryChipText:{fontFamily:B.interBold,fontSize:9,color:e.indigo600Alt},subStatsRow:{flexDirection:"row",alignItems:"center",gap:6,flexWrap:"wrap"},statPill:{flexDirection:"row",alignItems:"center",gap:4,backgroundColor:e.grayBackground,paddingHorizontal:6,paddingVertical:2.5,borderRadius:5,borderWidth:1,borderColor:e.dividerColor},statPillText:{fontFamily:B.interMedium,fontSize:10,color:e.grayText},statLabel:{fontFamily:B.interBold,fontSize:10,color:e.grayTextWeak},statValue:{fontFamily:B.interBold,fontSize:10.5,color:e.primaryBlack},searchContainer:{flexDirection:"row",alignItems:"center",backgroundColor:e.white,borderRadius:8,marginHorizontal:12,marginTop:10,paddingHorizontal:10,borderWidth:1,borderColor:e.dividerColor,height:36,gap:8},searchInput:{flex:1,fontFamily:B.interRegular,fontSize:12,color:e.primaryBlack,padding:0},timelineCard:{backgroundColor:e.white,borderRadius:10,padding:12,marginBottom:8,borderWidth:1,borderColor:e.dividerColor,shadowColor:e.primaryBlack,shadowOffset:{width:0,height:1},shadowOpacity:.03,shadowRadius:3,elevation:1},timelineHeader:{flexDirection:"row",alignItems:"center",gap:8},actionBadge:{backgroundColor:e.indigo50,paddingHorizontal:6,paddingVertical:2,borderRadius:4,borderWidth:1,borderColor:e.blueBorder},actionBadgeText:{fontFamily:B.interBold,fontSize:9.5,color:e.indigo600Alt},actionTitle:{flex:1,fontFamily:B.interBold,fontSize:12.5,color:e.primaryBlack},timePill:{flexDirection:"row",alignItems:"center",gap:3,backgroundColor:`${e.purple}14`,paddingHorizontal:6,paddingVertical:2,borderRadius:4},timeText:{fontFamily:B.interMedium,fontSize:10,color:e.purple},collapsedPrompt:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",marginTop:8,paddingTop:6,borderTopWidth:1,borderTopColor:e.dividerColor},collapsedPromptText:{fontFamily:B.interRegular,fontSize:10.5,color:e.grayTextWeak},expandedContent:{marginTop:10,paddingTop:10,borderTopWidth:1,borderTopColor:e.dividerColor},expandedSectionTitle:{fontFamily:B.interBold,fontSize:11,color:e.grayTextStrong,marginBottom:6},metadataCard:{backgroundColor:e.white,borderRadius:12,padding:12,borderWidth:1,borderColor:e.dividerColor,shadowColor:e.primaryBlack,shadowOffset:{width:0,height:1},shadowOpacity:.03,shadowRadius:3,elevation:1},metaRow:{flexDirection:"row",justifyContent:"space-between",alignItems:"center",paddingVertical:10,borderBottomWidth:1,borderBottomColor:e.dividerColor},metaLabel:{fontFamily:B.interMedium,fontSize:12,color:e.grayTextWeak},metaValue:{fontFamily:B.interBold,fontSize:12,color:e.primaryBlack,maxWidth:"60%",textAlign:"right"},persistedInfoCard:{backgroundColor:e.mintGreenBg,borderRadius:8,borderWidth:1,borderColor:e.mintGreenBorder,padding:10},persistedInfoTitle:{fontFamily:B.interBold,fontSize:11,color:e.mintGreenText},clearPersistMiniBtn:{flexDirection:"row",alignItems:"center",gap:3,backgroundColor:e.errorCardBg,paddingHorizontal:6,paddingVertical:2.5,borderRadius:4},clearPersistMiniText:{fontFamily:B.interBold,fontSize:9.5,color:e.errorColor},clearPersistBtn:{flexDirection:"row",alignItems:"center",justifyContent:"center",gap:6,backgroundColor:e.errorCardBg,borderWidth:1,borderColor:e.errorBorder,borderRadius:8,paddingVertical:10,marginTop:14},clearPersistText:{fontFamily:B.interBold,fontSize:12,color:e.errorColor},emptyBox:{backgroundColor:e.white,borderRadius:12,padding:24,alignItems:"center",justifyContent:"center",borderWidth:1,borderColor:e.dividerColor,margin:12,gap:8},emptyBoxTitle:{fontFamily:B.interBold,fontSize:14,color:e.primaryBlack},emptyBoxText:{fontFamily:B.interMedium,fontSize:12,color:e.grayTextWeak,textAlign:"center",lineHeight:18},highlight:{backgroundColor:e.yellowHighlight,color:e.amber800Warm,fontFamily:B.interBold}});export default Ot;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import ee,{useCallback as Le,useMemo as N,useRef as Pe,useState as te}from"react";import{FlatList as De,Platform as Fe,Pressable as Ce,StyleSheet as Ee,Text as S,TextInput as We,TouchableOpacity as Oe,View as C}from"react-native";import{useTranslation as Me}from"../../i18n";import{useInspector as je}from"./InspectorContext";import Ne from"../TouchableScale";import $e from"../AnimatedEntrance";import Ue from"../EmptyState";import Ge from"../EndOfListFooter";import Te from"../HighlightText";import{getSize as Se,openInVSCode as _e,getCleanCallerDisplay as Ze}from"../../helpers";import O from"../../styles";import{AppColors as e}from"../../styles/AppColors";import{AppFonts as R}from"../../styles/AppFonts";import{getActionHistory as Ke}from"../../customHooks/reduxLogger";import{TerminalIcon as
|
|
1
|
+
import ee,{useCallback as Le,useMemo as N,useRef as Pe,useState as te}from"react";import{FlatList as De,Platform as Fe,Pressable as Ce,StyleSheet as Ee,Text as S,TextInput as We,TouchableOpacity as Oe,View as C}from"react-native";import{useTranslation as Me}from"../../i18n";import{useInspector as je}from"./InspectorContext";import Ne from"../TouchableScale";import $e from"../AnimatedEntrance";import Ue from"../EmptyState";import Ge from"../EndOfListFooter";import Te from"../HighlightText";import{getSize as Se,openInVSCode as _e,getCleanCallerDisplay as Ze}from"../../helpers";import O from"../../styles";import{AppColors as e}from"../../styles/AppColors";import{AppFonts as R}from"../../styles/AppFonts";import{getActionHistory as Ke}from"../../customHooks/reduxLogger";import{TerminalIcon as Ae,SearchIcon as Je,ClearIcon as Qe,LayersIcon as Xe,ClockIcon as Ye,SizeIcon as Ct,ForwardChevronIcon as Tt,SortArrowIcon as St,BoltIcon as U,AtomIcon as At,ScreenIcon as It,ListenerIcon as Rt,DocIcon as Vt,LoadingSpinnerIcon as Bt,CircleAlertIcon as Ht,TextAaIcon as Lt}from"../NetworkIcons";const Ie=B=>{switch(B){case"saga":return{label:"SAGA",renderIcon:(I,z=9)=><U color={I}size={z}/>,bg:e.purple100,text:e.brandPurple,border:e.purple200};case"thunk":return{label:"THUNK",renderIcon:(I,z=9)=><At color={I}size={z}/>,bg:e.amber100,text:e.amber800Warm,border:e.amber200};case"ui":return{label:"UI",renderIcon:(I,z=9)=><It color={I}size={z}/>,bg:e.sky100,text:e.sky600,border:e.sky400};case"listener":return{label:"LISTENER",renderIcon:(I,z=9)=><Rt color={I}size={z}/>,bg:e.teal100,text:e.teal700,border:e.teal400};default:return{label:"DIRECT",renderIcon:(I,z=9)=><U color={I}size={z}/>,bg:e.slate100,text:e.slate700,border:e.slate200}}},Re=50,ze=10,Pt=ee.memo(()=>{const{t:B}=Me(),{reduxState:I,reduxLastActionMap:z,reduxSearch:k,setReduxSearch:G,setSelectedReduxSlice:Z}=je(),K=Pe(null),[q,J]=te(Re),[P,ke]=te("latest");ee.useEffect(()=>{J(Re),K.current?.scrollToOffset({offset:0,animated:!1})},[k,P]);const Ve=N(()=>Se(I),[I]),Q=N(()=>Ke(),[z]),$=N(()=>!I||typeof I!="object"?[]:Object.keys(I).map(A=>{const T=I[A],H=Array.isArray(T),j=T&&typeof T=="object";let D="Primitive",L=0;H?(L=T.length,D=`Array [${L}]`):j?(L=Object.keys(T).length,D=`Object {${L}}`):typeof T<"u"&&(L=1,D=typeof T);let E="live",v;j&&(T.loading===!0||T.isLoading===!0||T.status==="loading"||T.status==="pending"?(E="loading",v="Loading"):T.error||T.hasError||T.status==="error"||T.status==="failed"?(E="error",v=typeof T.error=="string"?T.error:"Error"):L===0&&(E="empty",v="Empty"));const V=z[A],Be=V?.updatedAt||0,He=Q.filter(W=>!W.affectedSlices||W.affectedSlices.length===0?!0:W.affectedSlices.includes(A)).length;let X;if(V){let W;if(V.payload!==void 0&&V.payload!==null)try{if(typeof V.payload=="object"){const Y=Object.keys(V.payload);W=`{ ${Y.slice(0,3).join(", ")}${Y.length>3?"...":""} }`}else W=String(V.payload)}catch{}X={type:V.type,timestamp:V.timestamp,updatedAt:V.updatedAt,payloadPreview:W,originType:V.originType,callerFile:V.callerFile,callerLine:V.callerLine,callerCol:V.callerCol}}return{id:`slice-${A}`,name:A,keysCount:L,sizeStr:Se(T),typeLabel:D,status:E,statusMessage:v,timelineCount:He,lastAction:X,updatedAt:Be}}),[I,z,Q]),F=N(()=>{let t=$;if(k&&k.trim().length>0){const A=k.trim().toLowerCase().split(/\s+/).filter(Boolean);t=t.filter(T=>{const H=I?I[T.name]:null,j=[T.name||"",T.lastAction?.type||"",T.lastAction?.payloadPreview||"",T.lastAction?.originType||"",T.status||"",T.statusMessage||"",H?typeof H=="string"?H:JSON.stringify(H):""].join(" ").toLowerCase();return A.every(D=>j.includes(D))})}return[...t].sort((A,T)=>P==="latest"&&T.updatedAt!==A.updatedAt?T.updatedAt-A.updatedAt:A.name.localeCompare(T.name))},[$,k,P,I]),_=N(()=>F.slice(0,q),[F,q]),M=N(()=>{const t=Object.values(z);return t.length===0?null:t.reduce((A,T)=>A?(T.updatedAt||0)>(A.updatedAt||0)?T:A:T,null)},[z]),ve=Le(({item:t,index:A})=>{const T=t.updatedAt>0&&Date.now()-t.updatedAt<5e3,H=t.status==="error"?e.errorColor:t.status==="loading"?e.warningIconGold:t.status==="empty"?e.grayTextWeak:e.greenColor,j=t.status==="error"?e.red100:t.status==="loading"?e.amber100:t.status==="empty"?e.grayBackground:e.emeraldBg,D=t.status==="error"?e.errorBorder:t.status==="loading"?e.amber200:t.status==="empty"?e.dividerColor:e.emeraldBorder,L=t.status==="error"?e.red600:t.status==="loading"?e.amber800Warm:t.status==="empty"?e.grayTextWeak:e.emerald700,E=t.lastAction?.callerFile?Ze(t.lastAction.callerFile):null;return<$e index={A}distance={8}>
|
|
2
2
|
<C style={o.cardContainer}>
|
|
3
3
|
<Ne onPress={()=>{Z(t.name)}}style={[o.card,{borderLeftWidth:3.5,borderLeftColor:H,backgroundColor:t.status==="error"?e.errorCardBg:e.white},T&&o.cardRecentlyUpdated]}>
|
|
4
4
|
<C style={o.cardBody}>
|
|
5
5
|
|
|
6
6
|
<C style={o.cardHeaderRow}>
|
|
7
7
|
<C style={o.cardHeaderLeft}>
|
|
8
|
-
<S style={o.serialNumber}>#{
|
|
8
|
+
<S style={o.serialNumber}>#{A+1}</S>
|
|
9
9
|
<C style={[o.methodBadge,{backgroundColor:e.violet600}]}>
|
|
10
10
|
<S style={o.methodBadgeText}>
|
|
11
11
|
{B("redux.title","REDUX").toUpperCase()}
|
|
@@ -17,7 +17,7 @@ import ee,{useCallback as Le,useMemo as N,useRef as Pe,useState as te}from"react
|
|
|
17
17
|
</S>
|
|
18
18
|
</C>
|
|
19
19
|
|
|
20
|
-
{t.lastAction?.originType&&(()=>{const v=
|
|
20
|
+
{t.lastAction?.originType&&(()=>{const v=Ie(t.lastAction.originType);return<C style={[o.chip,{backgroundColor:v.bg,borderColor:v.border}]}>
|
|
21
21
|
{v.renderIcon(v.text,8.5)}
|
|
22
22
|
<S style={[o.chipText,{color:v.text}]}>
|
|
23
23
|
{v.label}
|
|
@@ -48,9 +48,9 @@ import ee,{useCallback as Le,useMemo as N,useRef as Pe,useState as te}from"react
|
|
|
48
48
|
</C>}
|
|
49
49
|
</C>
|
|
50
50
|
<C style={o.actionPreviewRow}>
|
|
51
|
-
<
|
|
51
|
+
<Ae color={e.grayTextWeak}size={10}/>
|
|
52
52
|
{t.lastAction?<Te text={t.lastAction.type+(t.lastAction.payloadPreview?` \xB7 ${t.lastAction.payloadPreview}`:"")}search={k}style={o.actionPreviewText}highlightStyle={o.highlight}numberOfLines={1}/>:<S style={o.actionPreviewEmptyText}numberOfLines={1}>
|
|
53
|
-
Initial state (no actions dispatched yet)
|
|
53
|
+
{B("redux.initialStateNoActions","Initial state (no actions dispatched yet)")}
|
|
54
54
|
</S>}
|
|
55
55
|
</C>
|
|
56
56
|
</C>
|
|
@@ -93,7 +93,7 @@ import ee,{useCallback as Le,useMemo as N,useRef as Pe,useState as te}from"react
|
|
|
93
93
|
</C>
|
|
94
94
|
</Ne>
|
|
95
95
|
</C>
|
|
96
|
-
</$e>},[k,Z]);return
|
|
96
|
+
</$e>},[k,Z]);return I?<C style={{flex:1,backgroundColor:e.grayBackground}}>
|
|
97
97
|
|
|
98
98
|
<C style={o.overviewCard}>
|
|
99
99
|
<C style={o.statCol}>
|
|
@@ -109,7 +109,7 @@ import ee,{useCallback as Le,useMemo as N,useRef as Pe,useState as te}from"react
|
|
|
109
109
|
<C style={[o.statCol,{flex:1.6}]}>
|
|
110
110
|
<C style={{flexDirection:"row",alignItems:"center",gap:4}}>
|
|
111
111
|
<S style={o.statHeading}>{B("redux.lastActionHeader","LAST ACTION")}</S>
|
|
112
|
-
{M?.originType&&(()=>{const t=
|
|
112
|
+
{M?.originType&&(()=>{const t=Ie(M.originType);return<C style={{flexDirection:"row",alignItems:"center",gap:2,backgroundColor:t.bg,paddingHorizontal:4,paddingVertical:1,borderRadius:3}}>
|
|
113
113
|
{t.renderIcon(t.text,8)}
|
|
114
114
|
<S style={{fontFamily:R.interBold,fontSize:7.5,color:t.text}}>
|
|
115
115
|
{t.label}
|
|
@@ -163,10 +163,10 @@ import ee,{useCallback as Le,useMemo as N,useRef as Pe,useState as te}from"react
|
|
|
163
163
|
</C>
|
|
164
164
|
|
|
165
165
|
|
|
166
|
-
<De ref={K}data={_}keyExtractor={t=>t.id}renderItem={ve}getItemLayout={(t,
|
|
166
|
+
<De ref={K}data={_}keyExtractor={t=>t.id}renderItem={ve}getItemLayout={(t,A)=>({length:126,offset:126*A,index:A})}initialNumToRender={10}maxToRenderPerBatch={8}windowSize={5}updateCellsBatchingPeriod={40}removeClippedSubviews={!0}renderToHardwareTextureAndroid={!0}showsVerticalScrollIndicator={!1}nestedScrollEnabled={!0}ListEmptyComponent={<Ue isSearch={k.trim().length>0}searchQuery={k}onClearSearch={()=>G("")}customTitle={k.trim().length>0?"No Matching Slices":"No Redux State Detected"}customSub={k.trim().length>0?`No Redux slices match "${k}"`:"Attach the Redux store or dispatch actions to see state slices."}/>}ListFooterComponent={F.length>0?<Ge count={_.length}totalCount={F.length}label="slices"loadMoreStep={ze}hasMore={_.length<F.length}onLoadMore={()=>J(t=>t+ze)}/>:null}style={{flex:1}}contentContainerStyle={[o.listContent,{flexGrow:1}]}keyboardShouldPersistTaps="handled"/>
|
|
167
167
|
</C>:<C style={O.emptyContainer}>
|
|
168
168
|
<C style={O.emptyIconWrap}>
|
|
169
|
-
<
|
|
169
|
+
<Ae color={e.purple}size={32}/>
|
|
170
170
|
</C>
|
|
171
171
|
<S style={O.emptyTitle}>{B("redux.noStoreConnected","No Redux Store Connected")}</S>
|
|
172
172
|
<S style={O.emptySub}>
|
|
@@ -368,8 +368,7 @@ import{useMemo as Xe,useState as Me,useEffect as Ze,useRef as jr}from"react";imp
|
|
|
368
368
|
NPM Update Toast
|
|
369
369
|
</T>
|
|
370
370
|
<T style={{fontFamily:S.interRegular,fontSize:11,lineHeight:15,color:e.grayText,marginTop:1}}>
|
|
371
|
-
Show a floating toast banner with countdown progress when
|
|
372
|
-
a newer release is published on npm.
|
|
371
|
+
{w("settings.npmUpdateToastDesc","Show a floating toast banner with countdown progress when a newer release is published on npm.")}
|
|
373
372
|
</T>
|
|
374
373
|
</C>
|
|
375
374
|
</C>
|
|
@@ -399,8 +398,7 @@ import{useMemo as Xe,useState as Me,useEffect as Ze,useRef as jr}from"react";imp
|
|
|
399
398
|
Auto-Calculate Limits from RAM
|
|
400
399
|
</T>
|
|
401
400
|
<T style={{fontFamily:S.interRegular,fontSize:11,lineHeight:15,color:e.grayText,marginTop:1}}>
|
|
402
|
-
Dynamically sets log limits according to available device
|
|
403
|
-
memory
|
|
401
|
+
{w("settings.autoCalculateLimitsRamDesc","Dynamically sets log limits according to available device memory")}
|
|
404
402
|
</T>
|
|
405
403
|
</C>
|
|
406
404
|
</C>
|
|
@@ -473,8 +471,7 @@ import{useMemo as Xe,useState as Me,useEffect as Ze,useRef as jr}from"react";imp
|
|
|
473
471
|
OS Memory Warning Guard
|
|
474
472
|
</T>
|
|
475
473
|
<T style={{fontFamily:S.interRegular,fontSize:11,lineHeight:15,color:e.grayText,marginTop:1}}>
|
|
476
|
-
Automatically prunes in-memory buffers by 50% when the OS
|
|
477
|
-
signals low memory
|
|
474
|
+
{w("settings.osMemoryWarningGuardDesc","Automatically prunes in-memory buffers by 50% when the OS signals low memory")}
|
|
478
475
|
</T>
|
|
479
476
|
</C>
|
|
480
477
|
<C style={{paddingHorizontal:8,paddingVertical:3,borderRadius:6,backgroundColor:`${e.emerald500}18`}}>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import te,{useMemo as O,useRef as le,useEffect as
|
|
1
|
+
import te,{useMemo as O,useRef as le,useEffect as ie}from"react";import{Alert as ae,Animated as K,Linking as E,Pressable as X,StyleSheet as ne,Text as S,View as C}from"react-native";import Ce,{Path as Se}from"react-native-svg";import{AppColors as e}from"../../styles/AppColors";import{AppFonts as B}from"../../styles/AppFonts";import{formatDateTime as Te,formatTime as ke}from"../../helpers";import{CalendarIcon as Be,ClockIcon as J,CircleCheckIcon as $e,CircleXIcon as Re,ForwardChevronIcon as Ie,GlobeIcon as Q,LockIcon as We,ReceiveFrameIcon as Ve,SendFrameIcon as Pe,SizeIcon as De}from"../NetworkIcons";import Le from"../HighlightText";import Oe from"../TouchableScale";import{useTranslation as Fe}from"../../i18n";function He(o){return!o||o<=0?"0 B":o<1024?`${o} B`:o<1024*1024?`${(o/1024).toFixed(1)} KB`:`${(o/(1024*1024)).toFixed(2)} MB`}function ve({item:o,onPress:T,searchStr:Y,isNew:V,isSelected:M,onToggleSelect:N,serialNumber:A}){const{t:P}=Fe(),R=o.url.startsWith("wss://")||o.url.startsWith("https://"),F=o.client==="socket.io"||o.url.includes("/socket.io"),D=O(()=>F?{label:"SIO",color:e.violet600,bg:`${e.violet600}14`,border:`${e.violet600}35`}:R?{label:"WSS",color:e.emerald600,bg:`${e.emerald600}14`,border:`${e.emerald600}35`}:{label:"WS",color:e.blue600,bg:`${e.blue600}14`,border:`${e.blue600}35`},[F,R]),H=o.status||"open",k=H==="open",W=H==="connecting",z=H==="error",Z=O(()=>k?e.greenColor:W?e.amber600:z?e.errorColor:e.slate400,[k,W,z]),L=O(()=>k?{label:"OPEN",color:e.greenColor,bg:`${e.greenColor}15`,border:`${e.greenColor}40`}:W?{label:"CONNECTING",color:e.amber600,bg:`${e.amber600}15`,border:`${e.amber600}40`}:z?{label:o.closeCode?`ERR ${o.closeCode}`:"ERROR",color:e.errorColor,bg:`${e.errorColor}15`,border:`${e.errorColor}40`}:{label:o.closeCode?`CLOSED (${o.closeCode})`:"CLOSED",color:e.slate500,bg:`${e.slate500}15`,border:`${e.slate500}40`},[k,W,z,o.closeCode]),j=O(()=>{try{const I=o.url.replace(/^(wss?|https?):\/\//,""),$=I.indexOf("/");if($>=0){const v=I.substring(0,$),re=I.substring($);return{host:v,path:re}}return{host:I,path:"/"}}catch{return{host:o.url,path:"/"}}},[o.url]),_=I=>{I?.stopPropagation?.();const $=o.url.replace(/^wss:\/\//i,"https://").replace(/^ws:\/\//i,"http://");ae.alert(P("common.openInBrowser","Open in Browser"),`${P("common.openInBrowserPrompt","Are you sure you want to open this URL in your external browser?")}
|
|
2
2
|
|
|
3
|
-
${
|
|
4
|
-
<Oe onPress={T}style={[r.card,{borderLeftWidth:3.5,borderLeftColor:Z,backgroundColor:z?e.errorCardBg:e.white},
|
|
3
|
+
${$}`,[{text:P("common.cancel","Cancel"),style:"cancel"},{text:P("common.open","Open"),onPress:()=>{E.canOpenURL($).then(v=>{v?E.openURL($):E.openURL($).catch(()=>{})}).catch(()=>{})}}])},U=le(new K.Value(V?.35:0)).current;ie(()=>{V&&K.timing(U,{toValue:0,duration:1200,useNativeDriver:!1}).start()},[V,U]);const G=(o.totalBytesSent||0)+(o.totalBytesReceived||0),ee=o.duration!=null?`${o.duration}ms`:"Active",oe=Te(o.startTime);return<C style={r.container}>
|
|
4
|
+
<Oe onPress={T}style={[r.card,{borderLeftWidth:3.5,borderLeftColor:Z,backgroundColor:z?e.errorCardBg:e.white},V&&r.cardNew]}>
|
|
5
5
|
<C style={r.cardBody}>
|
|
6
6
|
|
|
7
7
|
<C style={r.cardHeaderRow}>
|
|
@@ -32,13 +32,13 @@ ${R}`,[{text:P("common.cancel","Cancel"),style:"cancel"},{text:P("common.open","
|
|
|
32
32
|
<C style={r.cardHeaderRight}>
|
|
33
33
|
|
|
34
34
|
<C style={[r.statusPill,{backgroundColor:L.bg,borderColor:L.border}]}>
|
|
35
|
-
{k?<C style={r.pulsingDot}/>:
|
|
35
|
+
{k?<C style={r.pulsingDot}/>:W?<J color={e.amber600}size={9}/>:z?<Re color={e.errorColor}size={9}/>:<$e color={e.slate500}size={9}/>}
|
|
36
36
|
<S style={[r.statusPillText,{color:L.color}]}>
|
|
37
37
|
{L.label}
|
|
38
38
|
</S>
|
|
39
39
|
</C>
|
|
40
40
|
|
|
41
|
-
<X onPress={_}hitSlop={
|
|
41
|
+
<X onPress={_}hitSlop={{top:6,bottom:6,left:3,right:3}}style={r.globeBtn}accessibilityRole="button"accessibilityLabel="Open in Browser">
|
|
42
42
|
<Q color={e.grayTextWeak}size={12}/>
|
|
43
43
|
</X>
|
|
44
44
|
|
|
@@ -49,19 +49,19 @@ ${R}`,[{text:P("common.cancel","Cancel"),style:"cancel"},{text:P("common.open","
|
|
|
49
49
|
|
|
50
50
|
<C style={r.urlBox}>
|
|
51
51
|
<C style={r.urlMainRow}>
|
|
52
|
-
<Le text={
|
|
52
|
+
<Le text={j.path}search={Y}style={r.pathText}highlightStyle={r.highlight}numberOfLines={1}ellipsizeMode="middle"/>
|
|
53
53
|
</C>
|
|
54
54
|
|
|
55
55
|
<C style={r.hostRow}>
|
|
56
|
-
<C style={[r.protoBadge,{backgroundColor
|
|
57
|
-
{
|
|
58
|
-
<S style={[r.protoBadgeText,{color
|
|
59
|
-
{
|
|
56
|
+
<C style={[r.protoBadge,{backgroundColor:R?`${e.emerald600}12`:`${e.blue600}12`,borderColor:R?`${e.emerald600}2B`:`${e.blue600}2B`}]}>
|
|
57
|
+
{R?<We size={9}color={e.emerald600}/>:<Q size={9}color={e.blue600}/>}
|
|
58
|
+
<S style={[r.protoBadgeText,{color:R?e.emerald600:e.blue600}]}>
|
|
59
|
+
{R?"WSS":"WS"}
|
|
60
60
|
</S>
|
|
61
61
|
</C>
|
|
62
62
|
|
|
63
63
|
<S style={r.hostText}numberOfLines={1}ellipsizeMode="tail">
|
|
64
|
-
{
|
|
64
|
+
{j.host}
|
|
65
65
|
</S>
|
|
66
66
|
</C>
|
|
67
67
|
</C>
|
|
@@ -88,7 +88,7 @@ ${R}`,[{text:P("common.cancel","Cancel"),style:"cancel"},{text:P("common.open","
|
|
|
88
88
|
|
|
89
89
|
|
|
90
90
|
<C style={[r.metaStatChip,{backgroundColor:`${e.emerald600}10`,borderColor:`${e.emerald600}26`}]}>
|
|
91
|
-
<
|
|
91
|
+
<Ve size={9}color={e.emerald600}/>
|
|
92
92
|
<S style={[r.metaStatText,{color:e.emerald600}]}>
|
|
93
93
|
{o.receivedCount||0}
|
|
94
94
|
</S>
|
|
@@ -113,4 +113,4 @@ ${R}`,[{text:P("common.cancel","Cancel"),style:"cancel"},{text:P("common.open","
|
|
|
113
113
|
</C>
|
|
114
114
|
</C>
|
|
115
115
|
</Oe>
|
|
116
|
-
</C>}const r=ne.create({container:{marginHorizontal:4,marginBottom:6},card:{borderRadius:12,borderWidth:1,borderColor:e.dividerColor,shadowColor:e.shadowColorString,shadowOffset:{width:0,height:1},shadowOpacity:.05,shadowRadius:2,elevation:1,overflow:"hidden"},cardNew:{borderColor:`${e.brandPurple}66`,backgroundColor:`${e.brandPurple}05`},cardBody:{paddingHorizontal:8,paddingVertical:8},cardHeaderRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",marginBottom:5},cardHeaderLeft:{flexDirection:"row",alignItems:"center",gap:4.5,flex:1,minWidth:0},smallCheckbox:{width:15,height:15,borderRadius:3.5,borderWidth:1.2,borderColor:e.grayTextWeak,alignItems:"center",justifyContent:"center",backgroundColor:e.white,marginRight:2},smallCheckboxChecked:{backgroundColor:e.purple,borderColor:e.purple},serialNumber:{fontFamily:B.interSemiBold,fontSize:10.5,color:e.grayTextWeak},protocolBadge:{paddingHorizontal:5.5,paddingVertical:1.5,borderRadius:5,borderWidth:1},protocolBadgeText:{fontFamily:B.interBold,fontSize:9.5,letterSpacing:.3},chip:{paddingHorizontal:5,paddingVertical:1.5,borderRadius:4,borderWidth:1},chipText:{fontFamily:B.interBold,fontSize:9,letterSpacing:.2},cardHeaderRight:{flexDirection:"row",alignItems:"center",gap:
|
|
116
|
+
</C>}const r=ne.create({container:{marginHorizontal:4,marginBottom:6},card:{borderRadius:12,borderWidth:1,borderColor:e.dividerColor,shadowColor:e.shadowColorString,shadowOffset:{width:0,height:1},shadowOpacity:.05,shadowRadius:2,elevation:1,overflow:"hidden"},cardNew:{borderColor:`${e.brandPurple}66`,backgroundColor:`${e.brandPurple}05`},cardBody:{paddingHorizontal:8,paddingVertical:8},cardHeaderRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",marginBottom:5},cardHeaderLeft:{flexDirection:"row",alignItems:"center",gap:4.5,flex:1,minWidth:0},smallCheckbox:{width:15,height:15,borderRadius:3.5,borderWidth:1.2,borderColor:e.grayTextWeak,alignItems:"center",justifyContent:"center",backgroundColor:e.white,marginRight:2},smallCheckboxChecked:{backgroundColor:e.purple,borderColor:e.purple},serialNumber:{fontFamily:B.interSemiBold,fontSize:10.5,color:e.grayTextWeak},protocolBadge:{paddingHorizontal:5.5,paddingVertical:1.5,borderRadius:5,borderWidth:1},protocolBadgeText:{fontFamily:B.interBold,fontSize:9.5,letterSpacing:.3},chip:{paddingHorizontal:5,paddingVertical:1.5,borderRadius:4,borderWidth:1},chipText:{fontFamily:B.interBold,fontSize:9,letterSpacing:.2},cardHeaderRight:{flexDirection:"row",alignItems:"center",gap:7},statusPill:{flexDirection:"row",alignItems:"center",gap:4,paddingHorizontal:6,paddingVertical:2,borderRadius:5,borderWidth:1},statusPillText:{fontFamily:B.interBold,fontSize:9.5,letterSpacing:.3},pulsingDot:{width:6,height:6,borderRadius:3,backgroundColor:e.greenColor},globeBtn:{width:26,height:22,borderRadius:5,backgroundColor:`${e.grayTextWeak}14`,borderWidth:1,borderColor:`${e.grayTextWeak}28`,alignItems:"center",justifyContent:"center"},urlBox:{marginBottom:8},urlMainRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",gap:6,marginBottom:3},pathText:{flex:1,fontFamily:B.interBold,fontSize:12.5,color:e.grayTextStrong,lineHeight:17},highlight:{backgroundColor:"rgba(250, 204, 21, 0.40)",color:e.grayTextStrong,borderRadius:2},hostRow:{flexDirection:"row",alignItems:"center",gap:5},protoBadge:{flexDirection:"row",alignItems:"center",gap:3,paddingHorizontal:4.5,paddingVertical:1,borderRadius:4,borderWidth:1},protoBadgeText:{fontFamily:B.interBold,fontSize:8.5,letterSpacing:.2},hostText:{flex:1,fontFamily:B.interMedium,fontSize:11,color:e.grayTextWeak},cardFooterRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingTop:6,borderTopWidth:1,borderTopColor:e.dividerColor},footerLeft:{flexDirection:"row",alignItems:"center",flex:1,minWidth:0,marginRight:6},cardDateRow:{flexDirection:"row",alignItems:"center",gap:4},cardDateText:{fontFamily:B.interMedium,fontSize:10,color:e.grayTextWeak},footerRight:{flexDirection:"row",alignItems:"center",gap:4},metaStatChip:{flexDirection:"row",alignItems:"center",gap:3,paddingHorizontal:5,paddingVertical:2,borderRadius:4,borderWidth:1},metaStatText:{fontFamily:B.interSemiBold,fontSize:9.5}});function Ee(o,T){return o.item===T.item&&o.isSelected===T.isSelected&&o.isNew===T.isNew&&o.searchStr===T.searchStr&&o.serialNumber===T.serialNumber&&o.onPress===T.onPress&&o.onToggleSelect===T.onToggleSelect}export default te.memo(ve,Ee);
|