react-native-inapp-inspector 2.3.24 → 2.3.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commonjs/components/AnalyticsDetail.js +8 -8
- package/dist/commonjs/components/AnalyticsEventCard.js +11 -8
- package/dist/commonjs/components/AppHeaderLogo.js +1 -1
- package/dist/commonjs/components/BrandSquareIcon.js +12 -12
- package/dist/commonjs/components/ConsoleLogCard.d.ts +1 -0
- package/dist/commonjs/components/ConsoleLogCard.js +92 -80
- package/dist/commonjs/components/EndOfListFooter.d.ts +5 -1
- package/dist/commonjs/components/EndOfListFooter.js +27 -5
- package/dist/commonjs/components/Inspector/AnalyticsTab.js +30 -298
- package/dist/commonjs/components/Inspector/ConsoleTab.js +38 -93
- package/dist/commonjs/components/Inspector/CrashDetail.js +12 -12
- package/dist/commonjs/components/Inspector/CrashTab.js +43 -33
- package/dist/commonjs/components/Inspector/DebuggingTab.js +9 -9
- package/dist/commonjs/components/Inspector/DeviceInfoTab.js +54 -52
- package/dist/commonjs/components/Inspector/InspectorHeader.js +1 -1
- package/dist/commonjs/components/Inspector/MainScreen.js +23 -25
- package/dist/commonjs/components/Inspector/MediaGalleryTab.js +1 -1
- package/dist/commonjs/components/Inspector/MediaPreviewModal.js +3 -3
- package/dist/commonjs/components/Inspector/NetworkTab.js +31 -31
- package/dist/commonjs/components/Inspector/NpmStarPrompt.js +3 -3
- package/dist/commonjs/components/Inspector/NpmUpdateToast.js +21 -22
- package/dist/commonjs/components/Inspector/ReduxTab.js +110 -97
- package/dist/commonjs/components/Inspector/SettingsPanel.js +48 -100
- package/dist/commonjs/components/Inspector/StorageTab.js +56 -52
- package/dist/commonjs/components/Inspector/TabBar.js +29 -26
- package/dist/commonjs/components/JsonViewer.js +169 -164
- package/dist/commonjs/components/LogCard.js +34 -38
- package/dist/commonjs/components/LogSyntaxHighlighter.js +3 -3
- package/dist/commonjs/components/SegmentedTabs.d.ts +4 -1
- package/dist/commonjs/components/SegmentedTabs.js +8 -8
- package/dist/commonjs/constants/index.js +1 -1
- package/dist/commonjs/constants/version.d.ts +1 -1
- package/dist/commonjs/constants/version.js +1 -1
- package/dist/commonjs/customHooks/networkLogger.js +1 -2
- package/dist/commonjs/helpers/index.d.ts +6 -0
- package/dist/commonjs/helpers/index.js +4 -4
- package/dist/commonjs/helpers/memoryManager.d.ts +0 -1
- package/dist/commonjs/helpers/memoryManager.js +1 -1
- package/dist/commonjs/helpers/remoteConfig.js +1 -1
- package/dist/commonjs/helpers/settingsStore.js +1 -1
- package/dist/commonjs/i18n/index.d.ts +35 -0
- package/dist/commonjs/i18n/index.js +1 -1
- package/dist/commonjs/i18n/locales/ar.json +1 -0
- package/dist/commonjs/i18n/locales/de.json +1 -0
- package/dist/commonjs/i18n/locales/en.json +1 -1
- package/dist/commonjs/i18n/locales/es.json +1 -0
- package/dist/commonjs/i18n/locales/fr.json +1 -0
- package/dist/commonjs/i18n/locales/hi.json +1 -0
- package/dist/commonjs/i18n/locales/ja.json +1 -0
- package/dist/commonjs/i18n/locales/ko.json +1 -0
- package/dist/commonjs/i18n/locales/pt.json +1 -0
- package/dist/commonjs/i18n/locales/ru.json +1 -0
- package/dist/commonjs/i18n/locales/zh.json +1 -0
- package/dist/commonjs/index.d.ts +2 -4
- package/dist/commonjs/index.js +2 -2
- package/dist/commonjs/styles/AppColors.d.ts +40 -0
- package/dist/commonjs/styles/AppColors.js +1 -1
- package/dist/commonjs/styles/index.js +1 -1
- package/dist/commonjs/types/enums.d.ts +0 -20
- package/dist/commonjs/types/enums.js +1 -1
- package/dist/esm/components/AnalyticsDetail.js +75 -75
- package/dist/esm/components/AnalyticsEventCard.js +20 -17
- package/dist/esm/components/AppHeaderLogo.js +5 -5
- package/dist/esm/components/BrandSquareIcon.js +39 -39
- package/dist/esm/components/ConsoleLogCard.d.ts +1 -0
- package/dist/esm/components/ConsoleLogCard.js +98 -86
- package/dist/esm/components/EndOfListFooter.d.ts +5 -1
- package/dist/esm/components/EndOfListFooter.js +36 -14
- package/dist/esm/components/Inspector/AnalyticsTab.js +47 -315
- package/dist/esm/components/Inspector/ConsoleTab.js +61 -116
- package/dist/esm/components/Inspector/CrashDetail.js +49 -49
- package/dist/esm/components/Inspector/CrashTab.js +75 -65
- package/dist/esm/components/Inspector/DebuggingTab.js +31 -31
- package/dist/esm/components/Inspector/DeviceInfoTab.js +146 -144
- package/dist/esm/components/Inspector/InspectorHeader.js +5 -5
- package/dist/esm/components/Inspector/MainScreen.js +51 -53
- package/dist/esm/components/Inspector/MediaGalleryTab.js +1 -1
- package/dist/esm/components/Inspector/MediaPreviewModal.js +31 -31
- package/dist/esm/components/Inspector/NetworkTab.js +63 -63
- package/dist/esm/components/Inspector/NpmStarPrompt.js +42 -42
- package/dist/esm/components/Inspector/NpmUpdateToast.js +45 -46
- package/dist/esm/components/Inspector/ReduxTab.js +163 -150
- package/dist/esm/components/Inspector/SettingsPanel.js +136 -188
- package/dist/esm/components/Inspector/StorageTab.js +88 -84
- package/dist/esm/components/Inspector/TabBar.js +37 -34
- package/dist/esm/components/JsonViewer.js +173 -168
- package/dist/esm/components/LogCard.js +38 -42
- package/dist/esm/components/LogSyntaxHighlighter.js +1 -1
- package/dist/esm/components/SegmentedTabs.d.ts +4 -1
- package/dist/esm/components/SegmentedTabs.js +8 -8
- package/dist/esm/constants/index.js +1 -1
- package/dist/esm/constants/version.d.ts +1 -1
- package/dist/esm/constants/version.js +1 -1
- package/dist/esm/customHooks/networkLogger.js +1 -2
- package/dist/esm/helpers/index.d.ts +6 -0
- package/dist/esm/helpers/index.js +4 -4
- package/dist/esm/helpers/memoryManager.d.ts +0 -1
- package/dist/esm/helpers/memoryManager.js +1 -1
- package/dist/esm/helpers/remoteConfig.js +1 -1
- package/dist/esm/helpers/settingsStore.js +1 -1
- package/dist/esm/i18n/index.d.ts +35 -0
- package/dist/esm/i18n/index.js +1 -1
- package/dist/esm/i18n/locales/ar.json +1 -0
- package/dist/esm/i18n/locales/de.json +1 -0
- package/dist/esm/i18n/locales/en.json +1 -1
- package/dist/esm/i18n/locales/es.json +1 -0
- package/dist/esm/i18n/locales/fr.json +1 -0
- package/dist/esm/i18n/locales/hi.json +1 -0
- package/dist/esm/i18n/locales/ja.json +1 -0
- package/dist/esm/i18n/locales/ko.json +1 -0
- package/dist/esm/i18n/locales/pt.json +1 -0
- package/dist/esm/i18n/locales/ru.json +1 -0
- package/dist/esm/i18n/locales/zh.json +1 -0
- package/dist/esm/index.d.ts +2 -4
- package/dist/esm/index.js +5 -5
- package/dist/esm/styles/AppColors.d.ts +40 -0
- package/dist/esm/styles/AppColors.js +1 -1
- package/dist/esm/styles/index.js +1 -1
- package/dist/esm/types/enums.d.ts +0 -20
- package/dist/esm/types/enums.js +1 -1
- package/package.json +1 -15
- package/dist/commonjs/bundle.d.ts +0 -2
- package/dist/commonjs/bundle.js +0 -1
- package/dist/commonjs/components/Inspector/BundleTab.d.ts +0 -48
- package/dist/commonjs/components/Inspector/BundleTab.js +0 -1297
- package/dist/commonjs/components/Inspector/PerformanceTab.d.ts +0 -27
- package/dist/commonjs/components/Inspector/PerformanceTab.js +0 -454
- package/dist/commonjs/customHooks/bundleAnalyzer.d.ts +0 -115
- package/dist/commonjs/customHooks/bundleAnalyzer.js +0 -1
- package/dist/commonjs/customHooks/performanceTracker.d.ts +0 -144
- package/dist/commonjs/customHooks/performanceTracker.js +0 -63
- package/dist/commonjs/performance.d.ts +0 -2
- package/dist/commonjs/performance.js +0 -1
- package/dist/esm/bundle.d.ts +0 -2
- package/dist/esm/bundle.js +0 -1
- package/dist/esm/components/Inspector/BundleTab.d.ts +0 -48
- package/dist/esm/components/Inspector/BundleTab.js +0 -1297
- package/dist/esm/components/Inspector/PerformanceTab.d.ts +0 -27
- package/dist/esm/components/Inspector/PerformanceTab.js +0 -454
- package/dist/esm/customHooks/bundleAnalyzer.d.ts +0 -115
- package/dist/esm/customHooks/bundleAnalyzer.js +0 -1
- package/dist/esm/customHooks/performanceTracker.d.ts +0 -144
- package/dist/esm/customHooks/performanceTracker.js +0 -63
- package/dist/esm/performance.d.ts +0 -2
- package/dist/esm/performance.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import Be,{useState as k,useEffect as je,useMemo as L,useCallback as Z,useRef as Je}from"react";import{View as T,Text as S,ScrollView as Ge,FlatList as Ue,TextInput as Te,Modal as Ye,Alert as ve,StyleSheet as _e,ActivityIndicator as Qe,Platform as ke}from"react-native";import B from"../TouchableScale";import Xe from"../EndOfListFooter";import{AppColors as e}from"../../styles/AppColors";import{AppFonts as a}from"../../styles/AppFonts";import{useTranslation as Ze}from"../../i18n";import{DatabaseIcon as Ve,SearchIcon as Tt,ClearIcon as Ie,PlusIcon as St,PencilIcon as Ct,TrashIcon as Pe,CopyIcon as Bt,CheckIcon as Vt,LayersIcon as It,ResetIcon as Pt,ChevronIcon as At,WarningTriangleIcon as Mt}from"../NetworkIcons";import{fetchStorageEntries as Ft,setStorageEntry as $t,removeStorageEntry as Rt,clearStorageDriver as Kt,isAsyncStorageConnected as Wt,isMMKVConnected as Dt,getRegisteredMMKVInstanceIds as Lt,subscribeToStorageChanges as Ot}from"../../customHooks/storageInspector";import{copyToClipboard as Et}from"../../helpers";import{showToast as A}from"../../helpers/toast";const Nt=x=>{switch(x){case"json":return{label:"JSON",color:e.purple,bg:`${e.purple}16`};case"number":return{label:"NUM",color:e.warningIconGold,bg:`${e.warningIconGold}16`};case"boolean":return{label:"BOOL",color:e.emerald500,bg:`${e.emerald500}16`};case"null":return{label:"NULL",color:e.grayTextWeak,bg:`${e.grayTextWeak}16`};default:return{label:"STR",color:e.blue500,bg:`${e.blue500}16`}}},Ht=Be.memo(function({entry:C,isExpanded:r,onToggleExpand:N,onCopy:I,onEdit:U,onDelete:v,badge:M}){const Y=L(()=>C.byteSize<1024?`${C.byteSize} B`:`${(C.byteSize/1024).toFixed(1)} KB`,[C.byteSize]),H=L(()=>{if(!r)return C.value.length>250?C.value.slice(0,250)+"...":C.value;if(C.type==="json")try{const z=C.parsedValue??JSON.parse(C.value);return JSON.stringify(z,null,2)}catch{return C.value}return C.value},[r,C.value,C.type,C.parsedValue]);return<T style={t.entryCard}>
|
|
2
2
|
|
|
3
3
|
<T style={t.entryHeader}>
|
|
4
4
|
<T style={{flex:1,marginRight:8}}>
|
|
@@ -6,174 +6,178 @@ import ae,{useState as k,useEffect as Re,useMemo as K,useCallback as X,useRef as
|
|
|
6
6
|
<S style={t.entryKey}numberOfLines={1}selectable>
|
|
7
7
|
{C.key}
|
|
8
8
|
</S>
|
|
9
|
-
<T style={[t.typeBadge,{backgroundColor:
|
|
10
|
-
<S style={[t.typeBadgeText,{color:
|
|
11
|
-
{
|
|
9
|
+
<T style={[t.typeBadge,{backgroundColor:M.bg,borderColor:`${M.color}33`}]}>
|
|
10
|
+
<S style={[t.typeBadgeText,{color:M.color}]}>
|
|
11
|
+
{M.label}
|
|
12
12
|
</S>
|
|
13
13
|
</T>
|
|
14
|
-
<S style={t.sizeText}>{
|
|
14
|
+
<S style={t.sizeText}>{Y}</S>
|
|
15
15
|
</T>
|
|
16
16
|
</T>
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
<T style={t.entryActions}>
|
|
20
|
-
<B hitSlop={6}onPress={()=>
|
|
21
|
-
<
|
|
20
|
+
<B hitSlop={6}onPress={()=>I(C)}style={t.entryActionBtn}>
|
|
21
|
+
<Bt size={12}color={e.grayText}/>
|
|
22
22
|
</B>
|
|
23
23
|
|
|
24
|
-
<B hitSlop={6}onPress={()=>
|
|
25
|
-
<
|
|
24
|
+
<B hitSlop={6}onPress={()=>U(C)}style={t.entryActionBtn}>
|
|
25
|
+
<Ct size={12}color={e.purple}/>
|
|
26
26
|
</B>
|
|
27
27
|
|
|
28
28
|
<B hitSlop={6}onPress={()=>v(C.key)}style={[t.entryActionBtn,{backgroundColor:`${e.errorColor}12`}]}>
|
|
29
|
-
<
|
|
29
|
+
<Pe size={12}color={e.errorColor}/>
|
|
30
30
|
</B>
|
|
31
31
|
</T>
|
|
32
32
|
</T>
|
|
33
33
|
|
|
34
34
|
|
|
35
|
-
<B onPress={()=>
|
|
36
|
-
<S style={t.valuePreviewText}numberOfLines={
|
|
37
|
-
{
|
|
35
|
+
<B onPress={()=>N(C.key)}style={t.valuePreviewBox}>
|
|
36
|
+
<S style={t.valuePreviewText}numberOfLines={r?void 0:3}selectable={r}>
|
|
37
|
+
{H}
|
|
38
38
|
</S>
|
|
39
39
|
{C.value.length>80&&<T style={{flexDirection:"row",alignItems:"center",gap:4,marginTop:4}}>
|
|
40
40
|
<S style={t.expandHint}>
|
|
41
|
-
{
|
|
41
|
+
{r?"Collapse":"Expand"}
|
|
42
42
|
</S>
|
|
43
|
-
<
|
|
43
|
+
<At direction={r?"up":"down"}size={10}color={e.purple}/>
|
|
44
44
|
</T>}
|
|
45
45
|
</B>
|
|
46
|
-
</T>});export const StorageTab=
|
|
46
|
+
</T>});export const StorageTab=Be.memo(()=>{const{t:x}=Ze(),C=Je(null),[r,N]=k("asyncStorage"),[I,U]=k("default"),[v,M]=k([]),[Y,H]=k(!0),[z,_]=k(""),[q,Ae]=k(100),[Se,Me]=k({}),[Fe,K]=k(!1),[j,Ce]=k("create"),[W,Q]=k(""),[O,J]=k(""),[F,G]=k("string"),[X,P]=k(null),xe=L(()=>Lt(),[]),$=Z(async()=>{H(!0);try{const o=await Ft(r,r==="mmkv"?I:void 0);M(o)}catch{M([])}finally{H(!1)}},[r,I]);je(()=>($(),Ot($)),[$]);const $e=o=>{Me(V=>({...V,[o]:!V[o]}))},Re=()=>{Ce("create"),Q(""),J(""),G("string"),P(null),K(!0)},Ke=o=>{Ce("edit"),Q(o.key),J(o.value),G(o.type==="json"?"json":o.type==="number"?"number":o.type==="boolean"?"boolean":"string"),P(null),K(!0)},We=o=>{ve.alert(x("storage.deleteKeyTitle","Delete Key"),x("storage.deleteKeyMessage",{key:o,defaultValue:`Are you sure you want to delete key "${o}"?`}),[{text:x("common.cancel","Cancel"),style:"cancel"},{text:x("common.clear","Delete"),style:"destructive",onPress:async()=>{await Rt(r,o,r==="mmkv"?I:void 0)?(A(`Deleted "${o}"`),$()):A(`Failed to delete "${o}"`)}}])},De=()=>{ve.alert(x("storage.clearTitle","Clear Storage Driver"),x("storage.clearMessage",{driver:r==="asyncStorage"?"AsyncStorage":"MMKV",defaultValue:`Are you sure you want to delete all keys in ${r==="asyncStorage"?"AsyncStorage":"MMKV"}?`}),[{text:x("common.cancel","Cancel"),style:"cancel"},{text:x("storage.clearConfirm","Clear All"),style:"destructive",onPress:async()=>{await Kt(r,r==="mmkv"?I:void 0)&&(A("All storage keys wiped"),$())}}])},Le=async()=>{if(!W.trim()){A("Key name cannot be empty");return}let o=O;if(F==="json")try{const E=JSON.parse(O);o=JSON.stringify(E)}catch(E){P("Invalid JSON: "+E.message);return}else if(F==="number"&&isNaN(Number(O))){P("Value must be a valid number");return}await $t(r,W.trim(),o,r==="mmkv"?I:void 0)?(A(j==="create"?`Added "${W.trim()}"`:`Updated "${W.trim()}"`),K(!1),$()):A("Error saving storage key")},Oe=()=>{try{const o=JSON.parse(O);J(JSON.stringify(o,null,2)),P(null),G("json"),A("Formatted JSON")}catch{P("Cannot format: invalid JSON syntax")}},R=L(()=>{if(!z.trim())return v;const o=z.toLowerCase().trim().split(/\s+/).filter(Boolean);return v.filter(V=>{const E=`${V.key} ${V.value}`.toLowerCase();return o.every(He=>E.includes(He))})},[v,z]),D=L(()=>v.reduce((o,V)=>o+V.byteSize,0),[v]),Ee=L(()=>D<1024?`${D} B`:D<1024*1024?`${(D/1024).toFixed(1)} KB`:`${(D/(1024*1024)).toFixed(2)} MB`,[D]),we=Z(o=>{Et(o.value,o.key),A(`Copied value of "${o.key}"`)},[]),Ne=Z(({item:o})=><Ht entry={o}isExpanded={!!Se[o.key]}onToggleExpand={$e}onCopy={we}onEdit={Ke}onDelete={We}badge={Nt(o.type)}/>,[Se,we]),jt=r==="asyncStorage"?Wt():Dt();return<T style={t.container}>
|
|
47
47
|
|
|
48
48
|
<T style={t.driverTabsWrapper}>
|
|
49
|
-
<
|
|
50
|
-
<B onPress={()=>
|
|
51
|
-
<
|
|
52
|
-
<S style={[t.driverTabText,
|
|
53
|
-
AsyncStorage
|
|
49
|
+
<Ge horizontal showsHorizontalScrollIndicator={!1}contentContainerStyle={t.driverTabsContainer}>
|
|
50
|
+
<B onPress={()=>N("asyncStorage")}style={[t.driverTabPill,{backgroundColor:r==="asyncStorage"?e.brandPurple:`${e.brandPurple}0D`,borderColor:r==="asyncStorage"?e.brandPurple:`${e.brandPurple}2B`},r==="asyncStorage"&&{shadowColor:e.brandPurple,shadowOffset:{width:0,height:1.5},shadowOpacity:.25,shadowRadius:3,elevation:3}]}>
|
|
51
|
+
<Ve size={13}color={r==="asyncStorage"?e.white:e.brandPurple}/>
|
|
52
|
+
<S style={[t.driverTabText,{color:r==="asyncStorage"?e.white:e.brandPurple,fontFamily:r==="asyncStorage"?a.interBold:a.interSemiBold}]}>
|
|
53
|
+
{x("storage.subTabs.asyncStorage","AsyncStorage")}
|
|
54
54
|
</S>
|
|
55
|
-
{
|
|
56
|
-
<S style={t.driverCountText
|
|
55
|
+
{v.length>0&&r==="asyncStorage"&&<T style={[t.driverCountBadge,{backgroundColor:"rgba(255,255,255,0.25)",borderColor:"rgba(255,255,255,0.45)"}]}>
|
|
56
|
+
<S style={[t.driverCountText,{color:e.white}]}>
|
|
57
|
+
{v.length}
|
|
58
|
+
</S>
|
|
57
59
|
</T>}
|
|
58
60
|
</B>
|
|
59
61
|
|
|
60
|
-
<B onPress={()=>
|
|
61
|
-
<
|
|
62
|
-
<S style={[t.driverTabText,
|
|
63
|
-
MMKV
|
|
62
|
+
<B onPress={()=>N("mmkv")}style={[t.driverTabPill,{backgroundColor:r==="mmkv"?e.teal600:`${e.teal600}0D`,borderColor:r==="mmkv"?e.teal600:`${e.teal600}2B`},r==="mmkv"&&{shadowColor:e.teal600,shadowOffset:{width:0,height:1.5},shadowOpacity:.25,shadowRadius:3,elevation:3}]}>
|
|
63
|
+
<It size={13}color={r==="mmkv"?e.white:e.teal600}/>
|
|
64
|
+
<S style={[t.driverTabText,{color:r==="mmkv"?e.white:e.teal600,fontFamily:r==="mmkv"?a.interBold:a.interSemiBold}]}>
|
|
65
|
+
{x("storage.subTabs.mmkv","MMKV")}
|
|
64
66
|
</S>
|
|
65
|
-
{
|
|
66
|
-
<S style={t.driverCountText
|
|
67
|
+
{v.length>0&&r==="mmkv"&&<T style={[t.driverCountBadge,{backgroundColor:"rgba(255,255,255,0.25)",borderColor:"rgba(255,255,255,0.45)"}]}>
|
|
68
|
+
<S style={[t.driverCountText,{color:e.white}]}>
|
|
69
|
+
{v.length}
|
|
70
|
+
</S>
|
|
67
71
|
</T>}
|
|
68
72
|
</B>
|
|
69
73
|
|
|
70
74
|
|
|
71
|
-
{
|
|
72
|
-
{
|
|
73
|
-
<S style={[t.instancePillText,
|
|
74
|
-
{
|
|
75
|
+
{r==="mmkv"&&xe.length>1&&<T style={{flexDirection:"row",alignItems:"center",gap:4,marginLeft:6}}>
|
|
76
|
+
{xe.map(o=><B key={o}onPress={()=>U(o)}style={[t.instancePill,I===o&&t.instancePillActive]}>
|
|
77
|
+
<S style={[t.instancePillText,I===o&&t.instancePillTextActive]}>
|
|
78
|
+
{o}
|
|
75
79
|
</S>
|
|
76
80
|
</B>)}
|
|
77
81
|
</T>}
|
|
78
|
-
</
|
|
82
|
+
</Ge>
|
|
79
83
|
</T>
|
|
80
84
|
|
|
81
85
|
|
|
82
86
|
<T style={t.actionBar}>
|
|
83
87
|
<T style={t.searchBar}>
|
|
84
|
-
<
|
|
85
|
-
<
|
|
86
|
-
{
|
|
88
|
+
<Tt size={14}color={e.grayTextWeak}/>
|
|
89
|
+
<Te value={z}onChangeText={_}placeholder={x("storage.searchPlaceholder","Search keys, values, types...")}placeholderTextColor={e.grayTextWeak}style={t.searchInput}clearButtonMode="while-editing"/>
|
|
90
|
+
{z.length>0&&<T style={{flexDirection:"row",alignItems:"center",gap:4}}>
|
|
87
91
|
<T style={{backgroundColor:`${e.purple}20`,borderRadius:10,paddingHorizontal:6,paddingVertical:1.5}}>
|
|
88
|
-
<S style={{color:e.purple,fontSize:9.5,fontFamily:
|
|
89
|
-
{
|
|
92
|
+
<S style={{color:e.purple,fontSize:9.5,fontFamily:a.interBold}}>
|
|
93
|
+
{R.length}
|
|
90
94
|
</S>
|
|
91
95
|
</T>
|
|
92
|
-
<B onPress={()=>
|
|
93
|
-
<
|
|
96
|
+
<B onPress={()=>_("")}hitSlop={8}>
|
|
97
|
+
<Ie size={13}color={e.grayTextWeak}/>
|
|
94
98
|
</B>
|
|
95
99
|
</T>}
|
|
96
100
|
</T>
|
|
97
101
|
|
|
98
102
|
|
|
99
|
-
<B onPress={
|
|
100
|
-
<
|
|
101
|
-
<S style={t.addKeyBtnText}>Add</S>
|
|
103
|
+
<B onPress={Re}style={t.addKeyBtn}hitSlop={6}>
|
|
104
|
+
<St size={13}color={e.white}/>
|
|
105
|
+
<S style={t.addKeyBtnText}>{x("storage.add","Add")}</S>
|
|
102
106
|
</B>
|
|
103
107
|
|
|
104
|
-
<B onPress={
|
|
105
|
-
<
|
|
108
|
+
<B onPress={$}style={t.actionIconBtn}hitSlop={6}>
|
|
109
|
+
<Pt size={13}color={e.grayText}/>
|
|
106
110
|
</B>
|
|
107
111
|
|
|
108
|
-
{v.length>0&&<B onPress={
|
|
109
|
-
<
|
|
112
|
+
{v.length>0&&<B onPress={De}style={[t.actionIconBtn,{borderColor:`${e.errorColor}33`,backgroundColor:`${e.errorColor}12`}]}hitSlop={6}>
|
|
113
|
+
<Pe size={13}color={e.errorColor}/>
|
|
110
114
|
</B>}
|
|
111
115
|
</T>
|
|
112
116
|
|
|
113
117
|
|
|
114
118
|
<T style={t.statsStrip}>
|
|
115
119
|
<S style={t.statsText}>
|
|
116
|
-
{
|
|
120
|
+
{R.length} of {v.length} Keys • {Ee}
|
|
117
121
|
</S>
|
|
118
122
|
<S style={t.statsSubtext}>
|
|
119
|
-
{
|
|
123
|
+
{r==="asyncStorage"?"SQLite Key-Value":`MMKV (${I})`}
|
|
120
124
|
</S>
|
|
121
125
|
</T>
|
|
122
126
|
|
|
123
127
|
|
|
124
|
-
{
|
|
125
|
-
<
|
|
126
|
-
<S style={t.loadingText}>Loading storage entries
|
|
128
|
+
{Y?<T style={t.loadingContainer}>
|
|
129
|
+
<Qe size="small"color={e.purple}/>
|
|
130
|
+
<S style={t.loadingText}>{x("storage.loading","Loading storage entries...")}</S>
|
|
127
131
|
</T>:<>
|
|
128
|
-
<
|
|
132
|
+
<Ue ref={C}data={R.slice(0,q)}keyExtractor={o=>o.key}renderItem={Ne}initialNumToRender={10}maxToRenderPerBatch={10}windowSize={5}removeClippedSubviews={ke.OS==="android"}style={t.scrollArea}contentContainerStyle={t.scrollContent}showsVerticalScrollIndicator={!1}ListEmptyComponent={<T style={t.emptyContainer}>
|
|
129
133
|
<T style={t.emptyIconWrap}>
|
|
130
|
-
<
|
|
134
|
+
<Ve size={28}color={e.grayTextWeak}/>
|
|
131
135
|
</T>
|
|
132
136
|
<S style={t.emptyTitle}>
|
|
133
|
-
{
|
|
137
|
+
{z.trim().length>0?"No matching keys found":`No ${r==="asyncStorage"?"AsyncStorage":"MMKV"} Keys`}
|
|
134
138
|
</S>
|
|
135
139
|
<S style={t.emptySubtitle}>
|
|
136
|
-
{
|
|
140
|
+
{z.trim().length>0?`No keys or values match "${z}"`:`Storage is auto-detected. Tap "+ Add" above to create your first ${r==="asyncStorage"?"AsyncStorage":"MMKV"} key!`}
|
|
137
141
|
</S>
|
|
138
|
-
{
|
|
139
|
-
<S style={{color:e.brandPurple,fontSize:12,fontFamily:
|
|
142
|
+
{z.trim().length>0&&<B onPress={()=>_("")}style={{marginTop:12,paddingHorizontal:14,paddingVertical:6,borderRadius:8,backgroundColor:e.grayBackground,borderWidth:1,borderColor:e.grayBorderSecondary}}>
|
|
143
|
+
<S style={{color:e.brandPurple,fontSize:12,fontFamily:a.interBold}}>
|
|
140
144
|
Clear Search
|
|
141
145
|
</S>
|
|
142
146
|
</B>}
|
|
143
|
-
</T>}ListFooterComponent={
|
|
147
|
+
</T>}ListFooterComponent={R.length>0?<Xe count={Math.min(q,R.length)}totalCount={R.length}label="keys"hasMore={R.length>q}onLoadMore={()=>Ae(o=>o+10)}/>:<T style={{height:60}}/>}/>
|
|
144
148
|
</>}
|
|
145
149
|
|
|
146
150
|
|
|
147
|
-
<
|
|
151
|
+
<Ye visible={Fe}transparent animationType="fade"onRequestClose={()=>K(!1)}>
|
|
148
152
|
<T style={t.modalOverlay}>
|
|
149
153
|
<T style={t.modalCard}>
|
|
150
154
|
<T style={t.modalHeader}>
|
|
151
155
|
<S style={t.modalTitle}>
|
|
152
|
-
{
|
|
156
|
+
{j==="create"?"Add Storage Key":`Edit: ${W}`}
|
|
153
157
|
</S>
|
|
154
|
-
<B onPress={()=>
|
|
155
|
-
<
|
|
158
|
+
<B onPress={()=>K(!1)}hitSlop={8}>
|
|
159
|
+
<Ie size={16}color={e.grayText}/>
|
|
156
160
|
</B>
|
|
157
161
|
</T>
|
|
158
162
|
|
|
159
163
|
|
|
160
164
|
<T style={t.inputGroup}>
|
|
161
|
-
<S style={t.inputLabel}>KEY NAME</S>
|
|
162
|
-
<
|
|
165
|
+
<S style={t.inputLabel}>{x("storage.keyName","KEY NAME").toUpperCase()}</S>
|
|
166
|
+
<Te value={W}onChangeText={Q}placeholder="e.g. user_session, auth_token"placeholderTextColor={e.grayTextWeak}editable={j==="create"}style={[t.textInput,j==="edit"&&t.textInputDisabled]}autoCapitalize="none"/>
|
|
163
167
|
</T>
|
|
164
168
|
|
|
165
169
|
|
|
166
170
|
<T style={t.inputGroup}>
|
|
167
171
|
<T style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",marginBottom:4}}>
|
|
168
|
-
<S style={t.inputLabel}>VALUE TYPE</S>
|
|
169
|
-
{
|
|
170
|
-
<S style={t.formatJsonBtn}>Beautify JSON</S>
|
|
172
|
+
<S style={t.inputLabel}>{x("storage.type","VALUE TYPE").toUpperCase()}</S>
|
|
173
|
+
{F==="json"&&<B onPress={Oe}hitSlop={6}>
|
|
174
|
+
<S style={t.formatJsonBtn}>{x("storage.beautifyJson","Beautify JSON")}</S>
|
|
171
175
|
</B>}
|
|
172
176
|
</T>
|
|
173
177
|
<T style={t.typeSelectorStrip}>
|
|
174
|
-
{["string","json","number","boolean"].map(
|
|
175
|
-
<S style={[t.typePillText,
|
|
176
|
-
{
|
|
178
|
+
{["string","json","number","boolean"].map(o=>{const V=F===o;return<B key={o}onPress={()=>{G(o),P(null)}}style={[t.typePill,V&&t.typePillActive]}>
|
|
179
|
+
<S style={[t.typePillText,V&&t.typePillTextActive]}>
|
|
180
|
+
{o.toUpperCase()}
|
|
177
181
|
</S>
|
|
178
182
|
</B>})}
|
|
179
183
|
</T>
|
|
@@ -181,25 +185,25 @@ import ae,{useState as k,useEffect as Re,useMemo as K,useCallback as X,useRef as
|
|
|
181
185
|
|
|
182
186
|
|
|
183
187
|
<T style={t.inputGroup}>
|
|
184
|
-
<S style={t.inputLabel}>VALUE CONTENT</S>
|
|
185
|
-
<
|
|
186
|
-
{
|
|
187
|
-
<
|
|
188
|
-
<S style={t.errorText}>{
|
|
188
|
+
<S style={t.inputLabel}>{x("storage.valueContent","VALUE CONTENT").toUpperCase()}</S>
|
|
189
|
+
<Te value={O}onChangeText={o=>{J(o),X&&P(null)}}placeholder={F==="json"?'{"userId": 123, "isLoggedIn": true}':F==="number"?"42":F==="boolean"?"true":"String value..."}placeholderTextColor={e.grayTextWeak}style={[t.textInput,t.textAreaInput]}multiline textAlignVertical="top"autoCapitalize="none"/>
|
|
190
|
+
{X&&<T style={{flexDirection:"row",alignItems:"center",gap:5,marginTop:4}}>
|
|
191
|
+
<Mt size={12}color={e.errorColor}/>
|
|
192
|
+
<S style={t.errorText}>{X}</S>
|
|
189
193
|
</T>}
|
|
190
194
|
</T>
|
|
191
195
|
|
|
192
196
|
|
|
193
197
|
<T style={t.modalActions}>
|
|
194
|
-
<B onPress={()=>
|
|
195
|
-
<S style={t.cancelBtnText}>Cancel</S>
|
|
198
|
+
<B onPress={()=>K(!1)}style={t.cancelBtn}>
|
|
199
|
+
<S style={t.cancelBtnText}>{x("common.cancel","Cancel")}</S>
|
|
196
200
|
</B>
|
|
197
|
-
<B onPress={
|
|
198
|
-
<
|
|
199
|
-
<S style={t.saveBtnText}>Save Key</S>
|
|
201
|
+
<B onPress={Le}style={t.saveBtn}>
|
|
202
|
+
<Vt size={14}color={e.white}/>
|
|
203
|
+
<S style={t.saveBtnText}>{x("storage.saveKey","Save Key")}</S>
|
|
200
204
|
</B>
|
|
201
205
|
</T>
|
|
202
206
|
</T>
|
|
203
207
|
</T>
|
|
204
|
-
</
|
|
205
|
-
</T>});const t=
|
|
208
|
+
</Ye>
|
|
209
|
+
</T>});const t=_e.create({container:{flex:1,backgroundColor:e.grayBackground},driverTabsWrapper:{backgroundColor:e.primaryLight,borderBottomWidth:1,borderBottomColor:e.dividerColor,paddingVertical:8},driverTabsContainer:{paddingHorizontal:12,flexDirection:"row",alignItems:"center",gap:6},driverTabPill:{flexDirection:"row",alignItems:"center",gap:5,paddingHorizontal:9,paddingVertical:4.5,borderRadius:8,backgroundColor:e.grayBackground,borderWidth:1,borderColor:e.grayBorderSecondary},driverTabPillActive:{backgroundColor:e.purple,borderColor:e.purple},driverTabText:{fontFamily:a.interBold,fontSize:10.5,color:e.grayText},driverTabTextActive:{color:e.white},driverCountBadge:{backgroundColor:"rgba(255, 255, 255, 0.25)",paddingHorizontal:5,paddingVertical:1,borderRadius:8},driverCountText:{fontFamily:a.interBold,fontSize:9.5,color:e.white},instancePill:{paddingHorizontal:7,paddingVertical:3,borderRadius:6,backgroundColor:`${e.purple}14`,borderWidth:1,borderColor:`${e.purple}30`},instancePillActive:{backgroundColor:e.purple,borderColor:e.purple},instancePillText:{fontFamily:a.interBold,fontSize:10,color:e.purple},instancePillTextActive:{color:e.white},actionBar:{flexDirection:"row",alignItems:"center",paddingHorizontal:12,paddingVertical:8,backgroundColor:e.primaryLight,borderBottomWidth:1,borderBottomColor:e.dividerColor,gap:6},searchBar:{flex:1,flexDirection:"row",alignItems:"center",backgroundColor:e.grayBackground,borderRadius:8,paddingHorizontal:9,paddingVertical:ke.OS==="ios"?6:2,borderWidth:1,borderColor:e.grayBorderSecondary,gap:6},searchInput:{flex:1,fontFamily:a.interMedium,fontSize:12,color:e.primaryBlack,padding:0},addKeyBtn:{flexDirection:"row",alignItems:"center",gap:4,paddingHorizontal:10,paddingVertical:6,borderRadius:8,backgroundColor:e.purple},addKeyBtnText:{fontFamily:a.interBold,fontSize:11,color:e.white},actionIconBtn:{width:30,height:30,borderRadius:8,alignItems:"center",justifyContent:"center",backgroundColor:e.grayBackground,borderWidth:1,borderColor:e.grayBorderSecondary},statsStrip:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingHorizontal:12,paddingVertical:5,backgroundColor:`${e.grayBorderSecondary}40`},statsText:{fontFamily:a.interMedium,fontSize:10,color:e.grayText},statsSubtext:{fontFamily:a.interBold,fontSize:9.5,color:e.grayTextWeak},scrollArea:{flex:1},scrollContent:{padding:12,gap:10,paddingBottom:100},entryCard:{backgroundColor:e.primaryLight,borderRadius:10,borderWidth:1,borderColor:e.grayBorderSecondary,padding:10,gap:8,shadowColor:e.black,shadowOpacity:.02,shadowRadius:3,shadowOffset:{width:0,height:1},elevation:1},entryHeader:{flexDirection:"row",alignItems:"center",justifyContent:"space-between"},entryKey:{fontFamily:a.interBold,fontSize:12.5,color:e.primaryBlack},typeBadge:{paddingHorizontal:5,paddingVertical:1,borderRadius:4,borderWidth:1},typeBadgeText:{fontFamily:a.interBold,fontSize:8.5},sizeText:{fontFamily:a.interRegular,fontSize:10,color:e.grayTextWeak},entryActions:{flexDirection:"row",alignItems:"center",gap:5},entryActionBtn:{padding:5,borderRadius:5,backgroundColor:e.grayBackground},valuePreviewBox:{backgroundColor:e.grayBackground,borderRadius:6,padding:8,borderWidth:1,borderColor:`${e.grayBorderSecondary}80`},valuePreviewText:{fontFamily:a.interRegular,fontSize:11,color:e.primaryBlack,lineHeight:16},expandHint:{fontFamily:a.interBold,fontSize:9.5,color:e.purple,marginTop:4},loadingContainer:{flex:1,alignItems:"center",justifyContent:"center",gap:8},loadingText:{fontFamily:a.interMedium,fontSize:12,color:e.grayText},emptyContainer:{padding:24,alignItems:"center",justifyContent:"center"},emptyIconWrap:{width:56,height:56,borderRadius:28,backgroundColor:`${e.grayBorderSecondary}40`,alignItems:"center",justifyContent:"center",marginBottom:12},emptyTitle:{fontFamily:a.interBold,fontSize:14,color:e.primaryBlack,marginBottom:4},emptySubtitle:{fontFamily:a.interRegular,fontSize:11.5,color:e.grayText,textAlign:"center",maxWidth:280},connectGuideCard:{marginTop:20,width:"100%",backgroundColor:e.primaryLight,borderRadius:10,borderWidth:1,borderColor:e.grayBorderSecondary,padding:12,gap:6},connectGuideTitle:{fontFamily:a.interBold,fontSize:11,color:e.purple},connectGuideCode:{fontFamily:a.interRegular,fontSize:10,color:e.grayText,lineHeight:15},modalOverlay:{flex:1,backgroundColor:"rgba(0, 0, 0, 0.5)",justifyContent:"center",alignItems:"center",padding:16},modalCard:{width:"100%",maxWidth:400,backgroundColor:e.primaryLight,borderRadius:14,padding:16,gap:12,shadowColor:e.black,shadowOpacity:.2,shadowRadius:10,shadowOffset:{width:0,height:4},elevation:5},modalHeader:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",borderBottomWidth:1,borderBottomColor:e.dividerColor,paddingBottom:10},modalTitle:{fontFamily:a.interBold,fontSize:14,color:e.primaryBlack},inputGroup:{gap:4},inputLabel:{fontFamily:a.interBold,fontSize:9.5,color:e.grayTextWeak,letterSpacing:.5},textInput:{backgroundColor:e.grayBackground,borderRadius:8,paddingHorizontal:10,paddingVertical:8,fontFamily:a.interMedium,fontSize:12,color:e.primaryBlack,borderWidth:1,borderColor:e.grayBorderSecondary},textInputDisabled:{backgroundColor:`${e.grayBorderSecondary}40`,color:e.grayText},textAreaInput:{minHeight:90,maxHeight:160,fontFamily:a.interRegular,fontSize:11},typeSelectorStrip:{flexDirection:"row",alignItems:"center",gap:6},typePill:{flex:1,alignItems:"center",paddingVertical:6,borderRadius:6,backgroundColor:e.grayBackground,borderWidth:1,borderColor:e.grayBorderSecondary},typePillActive:{backgroundColor:e.purple,borderColor:e.purple},typePillText:{fontFamily:a.interBold,fontSize:10,color:e.grayText},typePillTextActive:{color:e.white},formatJsonBtn:{fontFamily:a.interBold,fontSize:10,color:e.purple},errorText:{fontFamily:a.interMedium,fontSize:10,color:e.errorColor,marginTop:2},modalActions:{flexDirection:"row",alignItems:"center",gap:10,marginTop:4},cancelBtn:{flex:1,alignItems:"center",paddingVertical:10,borderRadius:8,backgroundColor:e.grayBackground,borderWidth:1,borderColor:e.grayBorderSecondary},cancelBtnText:{fontFamily:a.interBold,fontSize:12,color:e.grayText},saveBtn:{flex:1.5,flexDirection:"row",alignItems:"center",justifyContent:"center",gap:5,paddingVertical:10,borderRadius:8,backgroundColor:e.purple},saveBtnText:{fontFamily:a.interBold,fontSize:12,color:e.white}});export default StorageTab;
|
|
@@ -1,52 +1,55 @@
|
|
|
1
|
-
import
|
|
1
|
+
import ie,{useRef as W,useState as F}from"react";import{Platform as re,ScrollView as Ce,Text as L,TouchableOpacity as U,View as C}from"react-native";import{useInspector as we}from"./InspectorContext";import B from"../../styles";import{AppColors as e}from"../../styles/AppColors";import{AppFonts as I}from"../../styles/AppFonts";import _ from"../TouchableScale";import{SignalIcon as Se,TerminalIcon as Re,AnalyticsIcon as Te,ReduxIcon as Be,CrashIcon as Ie,SmartphoneIcon as Pe,DatabaseIcon as Le,QrCodeIcon as Ae,ScreencastIcon as Oe,ChevronIcon as G}from"../NetworkIcons";import{isReduxConnected as Ve}from"../../customHooks/reduxLogger";import{isAnalyticsConnected as De}from"../../customHooks/analyticsLogger";import{isLocalDebugEnvironment as Ee}from"../../helpers";const w={themeColor:e.brandPurple,bgInactive:`${e.brandPurple}0D`,borderInactive:`${e.brandPurple}2B`,iconInactive:e.brandPurple,idBadgeBg:`${e.brandPurple}1C`,idBadgeBorder:`${e.brandPurple}3D`,idBadgeText:e.brandPurple},Q={apis:w,logs:w,analytics:w,redux:w,storage:w,device:w,crash:w,debugging:w,media:w},He=ie.memo(()=>{const{activeTab:R,switchActiveTab:A,tabVisibility:x,logs:O,consoleLogs:V,analyticsEvents:q,crashRecords:D,lastReadApisCount:J,lastReadLogsCount:K,lastReadCrashesCount:N,mediaCount:E}=we(),X=Ve(),Y=De(),S=R==="media",z=(x?.media??!0)&&E>0,H=W(null),[P,Z]=F(!1),[j,ee]=F(!0),M=W(0),oe=o=>{const{contentOffset:t,layoutMeasurement:i,contentSize:r}=o.nativeEvent,T=t.x;M.current=T;const k=T>8,v=T<r.width-i.width-8;P!==k&&Z(k),j!==v&&ee(v)},$=o=>{H.current?.scrollTo({x:Math.max(0,M.current+o),animated:!0})};return<C style={[B.tabBarContainer,{flexDirection:"row",alignItems:"center",paddingHorizontal:0}]}>
|
|
2
2
|
|
|
3
|
-
{
|
|
4
|
-
<C style={{width:22,height:22,borderRadius:11,backgroundColor:
|
|
5
|
-
<
|
|
3
|
+
{P&&<U onPress={()=>$(-160)}hitSlop={{top:6,bottom:6,left:6,right:6}}activeOpacity={.7}style={{paddingLeft:6,paddingRight:2,justifyContent:"center",alignItems:"center"}}>
|
|
4
|
+
<C style={{width:22,height:22,borderRadius:11,backgroundColor:e.grayBorderSecondary,alignItems:"center",justifyContent:"center"}}>
|
|
5
|
+
<G direction="left"size={13}color={e.grayTextStrong}/>
|
|
6
6
|
</C>
|
|
7
7
|
</U>}
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
<Ce ref={
|
|
11
|
-
{[{id:1,key:"apis",label:"APIs",count:
|
|
10
|
+
<Ce ref={H}horizontal showsHorizontalScrollIndicator={!1}onScroll={oe}scrollEventThrottle={16}style={{flex:1}}contentContainerStyle={{paddingLeft:P?4:12,paddingRight:z?6:12}}>
|
|
11
|
+
{[{id:1,key:"apis",label:"APIs",count:O.length,icon:"apis"},{id:2,key:"logs",label:"Logs",count:V.length,icon:"logs"},{id:3,key:"analytics",label:"Analytics",count:q.length,icon:"analytics"},{id:4,key:"redux",label:"Redux",count:0,icon:"redux"},{id:5,key:"storage",label:"Storage",count:0,icon:"storage"},{id:6,key:"device",label:"Device",count:0,icon:"device"},{id:7,key:"crash",label:"Crash",count:D?.length||0,icon:"crash"},{id:8,key:"debugging",label:"Debugging",count:0,icon:"debugging"}].filter(o=>o.key==="debugging"?re.OS==="android"&&Ee()&&!!x?.debugging:!(!x?.[o.key]||o.key==="redux"&&!X||o.key==="analytics"&&!Y)).map(o=>{const t=R===o.key,i=Q[o.key]||Q.apis,r=t?e.white:i.iconInactive,T=o.count>99?"99+":String(o.count),k=R!=="apis"&&O.length>J,v=R!=="logs"&&V.length>K,te=R!=="crash"&&(D?.length||0)>(N||0);return<_ key={o.key}onPress={()=>{A(o.key)}}style={[B.contentTabButton,{backgroundColor:t?i.themeColor:i.bgInactive,borderColor:t?i.themeColor:i.borderInactive},t&&{shadowColor:i.themeColor,shadowOffset:{width:0,height:2},shadowOpacity:.28,shadowRadius:3.5,elevation:3}]}>
|
|
12
12
|
<C style={{flexDirection:"row",alignItems:"center",gap:6}}>
|
|
13
|
-
{
|
|
14
|
-
{
|
|
15
|
-
{
|
|
16
|
-
{
|
|
17
|
-
{
|
|
18
|
-
{
|
|
19
|
-
{
|
|
20
|
-
{
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
#{e.id}
|
|
26
|
-
</F>
|
|
13
|
+
{o.icon==="apis"&&<Se color={r}size={14}/>}
|
|
14
|
+
{o.icon==="logs"&&<Re color={r}size={14}/>}
|
|
15
|
+
{o.icon==="analytics"&&<Te color={r}size={14}/>}
|
|
16
|
+
{o.icon==="redux"&&<Be color={r}size={14}/>}
|
|
17
|
+
{o.icon==="storage"&&<Le color={r}size={14}/>}
|
|
18
|
+
{o.icon==="device"&&<Pe color={r}size={14}/>}
|
|
19
|
+
{o.icon==="crash"&&<Ie color={r}size={14}/>}
|
|
20
|
+
{o.icon==="debugging"&&<Ae color={r}size={14}/>}
|
|
21
|
+
<C style={{minWidth:20,height:20,paddingHorizontal:4,borderRadius:10,backgroundColor:t?`${e.white}33`:i.idBadgeBg,borderWidth:1,borderColor:t?`${e.white}66`:i.idBadgeBorder,alignItems:"center",justifyContent:"center"}}>
|
|
22
|
+
<L style={{fontFamily:I.interBold,fontSize:9.5,lineHeight:12,color:t?e.white:i.idBadgeText}}>
|
|
23
|
+
#{o.id}
|
|
24
|
+
</L>
|
|
27
25
|
</C>
|
|
28
|
-
<
|
|
29
|
-
{
|
|
30
|
-
</
|
|
31
|
-
{
|
|
26
|
+
<L numberOfLines={1}ellipsizeMode="tail"style={[B.contentTabButtonText,{color:t?e.white:e.grayTextStrong,fontFamily:t?I.interBold:I.interSemiBold}]}>
|
|
27
|
+
{o.label}
|
|
28
|
+
</L>
|
|
29
|
+
{o.count>0&&<C style={{paddingHorizontal:5,paddingVertical:1,borderRadius:8,backgroundColor:t?"rgba(255,255,255,0.25)":i.idBadgeBg,borderWidth:.5,borderColor:t?"rgba(255,255,255,0.45)":i.idBadgeBorder,marginLeft:1,alignItems:"center",justifyContent:"center"}}>
|
|
30
|
+
<L style={{fontFamily:I.interBold,fontSize:9.5,lineHeight:12,color:t?e.white:i.themeColor}}>
|
|
31
|
+
{T}
|
|
32
|
+
</L>
|
|
33
|
+
</C>}
|
|
34
|
+
{(o.key==="apis"&&k||o.key==="logs"&&v||o.key==="crash"&&te)&&<C style={{width:6,height:6,borderRadius:3,backgroundColor:e.errorColor,marginLeft:4,alignSelf:"center"}}/>}
|
|
32
35
|
</C>
|
|
33
|
-
</
|
|
36
|
+
</_>})}
|
|
34
37
|
</Ce>
|
|
35
38
|
|
|
36
39
|
|
|
37
|
-
{
|
|
38
|
-
<C style={{width:22,height:22,borderRadius:11,backgroundColor:
|
|
39
|
-
<
|
|
40
|
+
{j&&<U onPress={()=>$(160)}hitSlop={{top:6,bottom:6,left:6,right:6}}activeOpacity={.7}style={{paddingLeft:2,paddingRight:z?4:8,justifyContent:"center",alignItems:"center"}}>
|
|
41
|
+
<C style={{width:22,height:22,borderRadius:11,backgroundColor:e.grayBorderSecondary,alignItems:"center",justifyContent:"center"}}>
|
|
42
|
+
<G direction="right"size={13}color={e.grayTextStrong}/>
|
|
40
43
|
</C>
|
|
41
44
|
</U>}
|
|
42
45
|
|
|
43
46
|
|
|
44
|
-
{z&&<C style={{paddingLeft:6,paddingRight:10,borderLeftWidth:1,borderLeftColor:
|
|
45
|
-
<
|
|
47
|
+
{z&&<C style={{paddingLeft:6,paddingRight:10,borderLeftWidth:1,borderLeftColor:e.dividerColor,backgroundColor:e.primaryLight,justifyContent:"center",shadowColor:e.shadowColorString,shadowOffset:{width:-3,height:0},shadowOpacity:.12,shadowRadius:4,elevation:4,zIndex:10}}>
|
|
48
|
+
<_ key="media"onPress={()=>{A("media")}}accessibilityRole="button"accessibilityLabel="Media Gallery"style={[B.contentTabButton,{marginRight:0,borderRadius:8,backgroundColor:S?e.brandPurple:`${e.brandPurple}0D`,borderColor:S?e.brandPurple:`${e.brandPurple}2B`,borderWidth:1,paddingHorizontal:10,paddingVertical:7,alignItems:"center",justifyContent:"center"},S&&{shadowColor:e.brandPurple,shadowOffset:{width:0,height:2},shadowOpacity:.28,shadowRadius:3.5,elevation:3}]}>
|
|
46
49
|
<C style={{position:"relative",alignItems:"center",justifyContent:"center"}}>
|
|
47
|
-
<
|
|
48
|
-
{
|
|
50
|
+
<Oe color={S?e.white:e.brandPurple}size={15}/>
|
|
51
|
+
{E>0&&<C style={{position:"absolute",top:-3,right:-4,width:7,height:7,borderRadius:3.5,backgroundColor:S?e.white:e.brandPurple,borderWidth:1.2,borderColor:S?e.brandPurple:e.white}}/>}
|
|
49
52
|
</C>
|
|
50
|
-
</
|
|
53
|
+
</_>
|
|
51
54
|
</C>}
|
|
52
|
-
</C>});export default
|
|
55
|
+
</C>});export default He;
|