react-native-inapp-inspector 2.4.2 → 2.5.0
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/src/main/java/com/inappinspector/NetworkInspectorModule.kt +523 -2
- package/dist/commonjs/capture.d.ts +2 -0
- package/dist/commonjs/capture.js +1 -1
- package/dist/commonjs/components/AnalyticsDetail.js +23 -23
- package/dist/commonjs/components/AnalyticsEventCard.js +1 -1
- package/dist/commonjs/components/AnalyticsGraph.js +44 -44
- package/dist/commonjs/components/AnimatedBrandOwl.js +32 -32
- package/dist/commonjs/components/AppHeaderLogo.js +6 -6
- package/dist/commonjs/components/BrandCircleIcon.js +28 -28
- package/dist/commonjs/components/BrandSquareIcon.js +33 -33
- package/dist/commonjs/components/ConsoleLogCard.js +1 -1
- package/dist/commonjs/components/Inspector/AnalyticsTab.js +2 -2
- package/dist/commonjs/components/Inspector/ConfirmationModal.js +23 -25
- package/dist/commonjs/components/Inspector/ConsoleTab.js +5 -5
- package/dist/commonjs/components/Inspector/CrashTab.js +44 -11
- package/dist/commonjs/components/Inspector/DeviceInfoTab.js +1 -1
- package/dist/commonjs/components/Inspector/FabLauncher.js +30 -25
- package/dist/commonjs/components/Inspector/FloatingCaptureWidget.d.ts +3 -0
- package/dist/commonjs/components/Inspector/FloatingCaptureWidget.js +54 -0
- package/dist/commonjs/components/Inspector/GlobalCrashScreenModal.d.ts +11 -0
- package/dist/commonjs/components/Inspector/GlobalCrashScreenModal.js +234 -0
- package/dist/commonjs/components/Inspector/InspectorHeader.js +137 -127
- package/dist/commonjs/components/Inspector/LanguageSelectorModal.d.ts +1 -1
- package/dist/commonjs/components/Inspector/LanguageSelectorModal.js +114 -32
- package/dist/commonjs/components/Inspector/MainScreen.js +26 -19
- package/dist/commonjs/components/Inspector/MediaGalleryTab.js +38 -35
- package/dist/commonjs/components/Inspector/MediaPreviewModal.d.ts +36 -0
- package/dist/commonjs/components/Inspector/MediaPreviewModal.js +345 -123
- package/dist/commonjs/components/Inspector/NetworkTab.js +14 -14
- package/dist/commonjs/components/Inspector/PushCard.js +1 -1
- package/dist/commonjs/components/Inspector/PushDetail.js +9 -9
- package/dist/commonjs/components/Inspector/PushTab.js +3 -3
- package/dist/commonjs/components/Inspector/ReduxTab.js +9 -7
- package/dist/commonjs/components/Inspector/SecondaryTelemetryStrip.d.ts +2 -0
- package/dist/commonjs/components/Inspector/SecondaryTelemetryStrip.js +43 -0
- package/dist/commonjs/components/Inspector/SettingsPanel.js +102 -73
- package/dist/commonjs/components/Inspector/SocketCard.js +1 -1
- package/dist/commonjs/components/Inspector/SocketDetail.js +73 -63
- package/dist/commonjs/components/Inspector/SocketTab.js +4 -4
- package/dist/commonjs/components/Inspector/StorageTab.js +10 -10
- package/dist/commonjs/components/Inspector/SupportModal.js +2 -2
- package/dist/commonjs/components/Inspector/SupportPage.js +1 -1
- package/dist/commonjs/components/JsonViewer.js +47 -45
- package/dist/commonjs/components/LogCard.js +22 -20
- package/dist/commonjs/components/ModuleErrorBoundary.js +5 -5
- package/dist/commonjs/components/NetworkIcons.d.ts +27 -0
- package/dist/commonjs/components/NetworkIcons.js +103 -5
- package/dist/commonjs/constants/version.d.ts +1 -1
- package/dist/commonjs/constants/version.js +1 -1
- package/dist/commonjs/crash.d.ts +1 -1
- package/dist/commonjs/crash.js +1 -1
- package/dist/commonjs/customHooks/crashHandler.d.ts +2 -1
- package/dist/commonjs/customHooks/crashHandler.js +7 -7
- package/dist/commonjs/editor.d.ts +13 -0
- package/dist/commonjs/editor.js +1 -0
- package/dist/commonjs/helpers/index.d.ts +1 -0
- package/dist/commonjs/helpers/index.js +1 -1
- package/dist/commonjs/helpers/settingsStore.js +1 -1
- package/dist/commonjs/helpers/telemetry.js +1 -1
- package/dist/commonjs/i18n/index.js +1 -1
- 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 +4 -1
- package/dist/commonjs/index.js +3 -3
- package/dist/commonjs/native/NativeInspector.d.ts +3 -0
- package/dist/commonjs/native/NativeInspector.js +1 -1
- package/dist/commonjs/native/NativeNetworkInspector.d.ts +4 -0
- package/dist/commonjs/styles/AppColors.d.ts +42 -2
- package/dist/commonjs/styles/AppColors.js +1 -1
- package/dist/commonjs/styles/common.js +1 -1
- package/dist/commonjs/styles/index.d.ts +7 -0
- package/dist/commonjs/styles/index.js +1 -1
- package/dist/commonjs/types/editor.d.ts +96 -0
- package/dist/commonjs/types/editor.js +1 -0
- package/dist/commonjs/types/interfaces.d.ts +21 -0
- package/dist/esm/capture.d.ts +2 -0
- package/dist/esm/capture.js +1 -1
- package/dist/esm/components/AnalyticsDetail.js +31 -31
- package/dist/esm/components/AnalyticsEventCard.js +1 -1
- package/dist/esm/components/AnalyticsGraph.js +74 -74
- package/dist/esm/components/AnimatedBrandOwl.js +114 -114
- package/dist/esm/components/AppHeaderLogo.js +7 -7
- package/dist/esm/components/BrandCircleIcon.js +70 -70
- package/dist/esm/components/BrandSquareIcon.js +61 -61
- package/dist/esm/components/ConsoleLogCard.js +1 -1
- package/dist/esm/components/Inspector/AnalyticsTab.js +14 -14
- package/dist/esm/components/Inspector/ConfirmationModal.js +23 -25
- package/dist/esm/components/Inspector/ConsoleTab.js +17 -17
- package/dist/esm/components/Inspector/CrashTab.js +202 -169
- package/dist/esm/components/Inspector/DeviceInfoTab.js +75 -75
- package/dist/esm/components/Inspector/FabLauncher.js +56 -51
- package/dist/esm/components/Inspector/FloatingCaptureWidget.d.ts +3 -0
- package/dist/esm/components/Inspector/FloatingCaptureWidget.js +54 -0
- package/dist/esm/components/Inspector/GlobalCrashScreenModal.d.ts +11 -0
- package/dist/esm/components/Inspector/GlobalCrashScreenModal.js +234 -0
- package/dist/esm/components/Inspector/InspectorHeader.js +162 -152
- package/dist/esm/components/Inspector/LanguageSelectorModal.d.ts +1 -1
- package/dist/esm/components/Inspector/LanguageSelectorModal.js +140 -58
- package/dist/esm/components/Inspector/MainScreen.js +61 -54
- package/dist/esm/components/Inspector/MediaGalleryTab.js +55 -52
- package/dist/esm/components/Inspector/MediaPreviewModal.d.ts +36 -0
- package/dist/esm/components/Inspector/MediaPreviewModal.js +345 -123
- package/dist/esm/components/Inspector/NetworkTab.js +74 -74
- package/dist/esm/components/Inspector/PushCard.js +1 -1
- package/dist/esm/components/Inspector/PushDetail.js +18 -18
- package/dist/esm/components/Inspector/PushTab.js +1 -1
- package/dist/esm/components/Inspector/ReduxTab.js +18 -16
- package/dist/esm/components/Inspector/SecondaryTelemetryStrip.d.ts +2 -0
- package/dist/esm/components/Inspector/SecondaryTelemetryStrip.js +43 -0
- package/dist/esm/components/Inspector/SettingsPanel.js +224 -195
- package/dist/esm/components/Inspector/SocketCard.js +8 -8
- package/dist/esm/components/Inspector/SocketDetail.js +106 -96
- package/dist/esm/components/Inspector/SocketTab.js +18 -18
- package/dist/esm/components/Inspector/StorageTab.js +47 -47
- package/dist/esm/components/Inspector/SupportModal.js +64 -64
- package/dist/esm/components/Inspector/SupportPage.js +5 -5
- package/dist/esm/components/JsonViewer.js +51 -49
- package/dist/esm/components/LogCard.js +41 -39
- package/dist/esm/components/ModuleErrorBoundary.js +10 -10
- package/dist/esm/components/NetworkIcons.d.ts +27 -0
- package/dist/esm/components/NetworkIcons.js +101 -3
- package/dist/esm/constants/version.d.ts +1 -1
- package/dist/esm/constants/version.js +1 -1
- package/dist/esm/crash.d.ts +1 -1
- package/dist/esm/crash.js +1 -1
- package/dist/esm/customHooks/crashHandler.d.ts +2 -1
- package/dist/esm/customHooks/crashHandler.js +7 -7
- package/dist/esm/editor.d.ts +13 -0
- package/dist/esm/editor.js +1 -0
- package/dist/esm/helpers/index.d.ts +1 -0
- package/dist/esm/helpers/index.js +4 -4
- package/dist/esm/helpers/settingsStore.js +1 -1
- package/dist/esm/helpers/telemetry.js +1 -1
- package/dist/esm/i18n/index.js +1 -1
- 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 +4 -1
- package/dist/esm/index.js +5 -5
- package/dist/esm/native/NativeInspector.d.ts +3 -0
- package/dist/esm/native/NativeInspector.js +1 -1
- package/dist/esm/native/NativeNetworkInspector.d.ts +4 -0
- package/dist/esm/styles/AppColors.d.ts +42 -2
- package/dist/esm/styles/AppColors.js +1 -1
- package/dist/esm/styles/common.js +1 -1
- package/dist/esm/styles/index.d.ts +7 -0
- package/dist/esm/styles/index.js +1 -1
- package/dist/esm/types/editor.d.ts +96 -0
- package/dist/esm/types/editor.js +1 -0
- package/dist/esm/types/interfaces.d.ts +21 -0
- package/editor.d.ts +1 -0
- package/editor.js +1 -0
- package/ios/NetworkInspectorModule.mm +429 -0
- package/package.json +10 -1
- package/react-native-inapp-inspector.podspec +1 -1
- package/src/native/NativeInspector.ts +57 -4
- package/src/native/NativeNetworkInspector.ts +4 -0
|
@@ -1,104 +1,104 @@
|
|
|
1
|
-
import j,{useCallback as se,useMemo as H,useRef as qe}from"react";import{FlatList as De,Pressable as He,ScrollView as We,Text as V,TextInput as Ge,View as
|
|
1
|
+
import j,{useCallback as se,useMemo as H,useRef as qe}from"react";import{FlatList as De,Pressable as He,ScrollView as We,Text as V,TextInput as Ge,View as S}from"react-native";import{useInspector as _e}from"./InspectorContext";import O from"../TouchableScale";import Te from"../AnimatedEntrance";import Qe from"../DomainHeader";import Ue from"../LogCard";import Ke from"../EmptyState";import Xe from"../EndOfListFooter";import Je from"./NetworkFilterModal";import b from"../../styles";import{AppColors as o}from"../../styles/AppColors";import{AppFonts as I}from"../../styles/AppFonts";import{METHOD_COLORS as ze}from"../../constants";import{useTranslation as Ye}from"../../i18n";import{SearchIcon as Ze,ClearIcon as So,TrashIcon as Co,SortArrowIcon as To,FilterIcon as Vo,ChevronIcon as Io,CheckIcon as Fo,CircleCheckIcon as Ro,CircleXIcon as Lo,LayersIcon as Ve,ClockIcon as Bo,RequestIcon as Po,ResponseIcon as Eo,AtomIcon as Mo}from"../NetworkIcons";const No=j.memo(()=>{const{groupedData:Q,loadMoreSection:ne,search:F,setSearch:U,setSearchScope:de,quickFilter:K,setQuickFilter:le,handleDelete:Ie,isGroupByPageEnabled:k,setIsGroupByPageEnabled:ke,selectedLogs:X,sortOrder:Fe,setSortOrder:J,statusFilters:R,setStatusFilters:v,methodFilters:L,setMethodFilters:W,latencyFilter:$,setLatencyFilter:Y,protocolFilter:A,setProtocolFilter:Z,networkSortBy:q,setNetworkSortBy:ee,filteredLogs:E,logs:G,toggleSectionFilter:ce,toggleSectionCollapse:ue,minStart:ge,totalRange:pe,newLogIds:he,toggleSelect:me,setSelected:ye,maxNetworkLogs:ae}=_e(),{t:oe}=Ye(),Re=qe(null),[Le,fe]=j.useState(!1),[we,Se]=j.useState(!1),[te,Ce]=j.useState(ae||50);j.useEffect(()=>{Ce(ae||50)},[F,K,ae]);const Be=H(()=>k?Q:Q.slice(0,te),[k,Q,te]),Pe=se(e=>e?.id?String(e.id):"",[]),M=H(()=>R.size>0&&!R.has("all")||L.size>0&&!L.has("all")||$!=="all"||A!=="all"||q!=="time_desc",[R,L,$,A,q]),Ee=H(()=>{let e=0;return R.size>0&&!R.has("all")&&(e+=R.size),L.size>0&&!L.has("all")&&(e+=L.size),$!=="all"&&e++,A!=="all"&&e++,q!=="time_desc"&&e++,e},[R,L,$,A,q]),Me=H(()=>({statusCodes:R.size>0?new Set(R):new Set(["all"]),methods:L.size>0?new Set(L):new Set(["all"]),latency:$,protocol:A,sortBy:q}),[R,L,$,A,q]),Ne=se(e=>{e.statusCodes.has("all")||e.statusCodes.size===0?v(new Set):v(new Set(e.statusCodes)),e.methods.has("all")||e.methods.size===0?W(new Set):W(new Set([...e.methods].map(T=>T))),Y(e.latency||"all"),Z(e.protocol||"all"),ee(e.sortBy||"time_desc"),e.sortBy==="time_asc"?J("oldest"):J("newest")},[v,W,Y,Z,ee,J]),B=H(()=>{let e=0,T=0,z=0,x=0,_=0,re=0;return G.forEach(C=>{const N=typeof C.status=="number"?C.status:parseInt(String(C.status),10);C.status===0||C.status==null||!isNaN(N)&&N>=400?e++:!isNaN(N)&&N>=200&&N<400&&T++,(C.duration||0)>=500&&z++;const P=(C.method||"").toUpperCase();P==="POST"&&x++,P==="GET"&&_++;const ie=(C.url||"").toLowerCase(),D=(C.client||"").toLowerCase();(ie.includes("graphql")||D.includes("graphql")||D.includes("apollo"))&&re++}),{all:G.length,errors:e,success:T,slow:z,post:x,get:_,graphql:re}},[G]),Oe=H(()=>[{id:"all",label:"All",count:B.all,color:o.purple},{id:"errors",label:"Errors",count:B.errors,color:o.errorColor},{id:"success",label:"2xx OK",count:B.success,color:o.greenColor},{id:"slow",label:"Slow >500ms",count:B.slow,color:o.warningIconGold},{id:"POST",label:"POST",count:B.post,color:ze.POST||o.blue500},{id:"GET",label:"GET",count:B.get,color:ze.GET||o.emerald500},{id:"graphql",label:"GraphQL",count:B.graphql,color:o.graphqlPink}],[B]),$e=se(({item:e,index:T})=>{if(e.type==="header")return<Te index={T}distance={8}>
|
|
2
2
|
<Qe pageName={e.pageName}color={e.color}stats={e.stats}activeFilters={e.activeFilters}onToggleFilter={ce}isCollapsed={e.isCollapsed}onToggleCollapse={ue}isFirst={e.isFirst}timestamp={e.timestamp}/>
|
|
3
|
-
</Te>;if(e.type==="loadMore"){const{pageName:re,color:
|
|
4
|
-
<
|
|
5
|
-
<
|
|
6
|
-
</
|
|
7
|
-
<
|
|
8
|
-
{Ae?<O onPress={()=>ne(re,D||10)}hitSlop={6}style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingVertical:9,paddingHorizontal:12,marginVertical:3,marginRight:2,borderRadius:10,backgroundColor:`${
|
|
9
|
-
<
|
|
10
|
-
<
|
|
3
|
+
</Te>;if(e.type==="loadMore"){const{pageName:re,color:C,remainingCount:N,totalCount:P,loadedCount:ie,loadMoreStep:D,hasMore:Ae}=e;return<S style={[b.treeNodeRow,b.treeNodeRowLast]}>
|
|
4
|
+
<S style={b.treeLines}>
|
|
5
|
+
<S style={[b.modernTreeLine,{borderColor:C},b.modernTreeLineLast]}/>
|
|
6
|
+
</S>
|
|
7
|
+
<S style={b.treeCardWrapper}>
|
|
8
|
+
{Ae?<O onPress={()=>ne(re,D||10)}hitSlop={6}style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingVertical:9,paddingHorizontal:12,marginVertical:3,marginRight:2,borderRadius:10,backgroundColor:`${C}14`,borderWidth:1.5,borderColor:`${C}40`,shadowColor:C,shadowOffset:{width:0,height:1.5},shadowOpacity:.1,shadowRadius:3,elevation:2}}>
|
|
9
|
+
<S style={{flexDirection:"row",alignItems:"center",gap:8}}>
|
|
10
|
+
<S style={{width:22,height:22,borderRadius:11,backgroundColor:C,alignItems:"center",justifyContent:"center",shadowColor:C,shadowOffset:{width:0,height:1},shadowOpacity:.25,shadowRadius:2,elevation:1}}>
|
|
11
11
|
<Io color={o.white}size={9}direction="down"/>
|
|
12
|
-
</
|
|
13
|
-
<
|
|
14
|
-
<V style={{fontFamily:I.interBold,fontSize:12,color:
|
|
12
|
+
</S>
|
|
13
|
+
<S>
|
|
14
|
+
<V style={{fontFamily:I.interBold,fontSize:12,color:C}}>
|
|
15
15
|
{oe("footer.loadMoreRequests",{count:D,defaultValue:`Load ${D} More Requests`})}
|
|
16
16
|
</V>
|
|
17
17
|
<V style={{fontFamily:I.interRegular,fontSize:9.5,color:o.grayTextWeak,marginTop:1}}>
|
|
18
|
-
Showing {ie} of {
|
|
18
|
+
Showing {ie} of {P} requests
|
|
19
19
|
</V>
|
|
20
|
-
</
|
|
21
|
-
</
|
|
20
|
+
</S>
|
|
21
|
+
</S>
|
|
22
22
|
|
|
23
|
-
<
|
|
24
|
-
<V style={{fontFamily:I.interBold,fontSize:10.5,color:
|
|
23
|
+
<S style={{flexDirection:"row",alignItems:"center",backgroundColor:`${C}25`,paddingHorizontal:8,paddingVertical:4,borderRadius:8,borderWidth:1,borderColor:`${C}40`,gap:3}}>
|
|
24
|
+
<V style={{fontFamily:I.interBold,fontSize:10.5,color:C}}>
|
|
25
25
|
+{N}
|
|
26
26
|
</V>
|
|
27
|
-
<V style={{fontFamily:I.interRegular,fontSize:9,color:
|
|
27
|
+
<V style={{fontFamily:I.interRegular,fontSize:9,color:C}}>
|
|
28
28
|
more
|
|
29
29
|
</V>
|
|
30
|
-
</
|
|
31
|
-
</O>:<
|
|
32
|
-
<
|
|
33
|
-
<
|
|
34
|
-
<Fo color={
|
|
35
|
-
</
|
|
30
|
+
</S>
|
|
31
|
+
</O>:<S style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingVertical:7,paddingHorizontal:11,marginVertical:3,marginRight:2,borderRadius:9,backgroundColor:`${C}0A`,borderWidth:1,borderColor:`${C}25`}}>
|
|
32
|
+
<S style={{flexDirection:"row",alignItems:"center",gap:7}}>
|
|
33
|
+
<S style={{width:17,height:17,borderRadius:8.5,backgroundColor:`${C}25`,alignItems:"center",justifyContent:"center"}}>
|
|
34
|
+
<Fo color={C}size={8}/>
|
|
35
|
+
</S>
|
|
36
36
|
<V style={{fontFamily:I.interMedium,fontSize:11,color:o.grayTextStrong}}>
|
|
37
|
-
{oe("footer.allLoaded",{count:
|
|
37
|
+
{oe("footer.allLoaded",{count:P,defaultValue:`All ${P} requests loaded`})}
|
|
38
38
|
</V>
|
|
39
|
-
</
|
|
39
|
+
</S>
|
|
40
40
|
|
|
41
|
-
<
|
|
42
|
-
<V style={{fontFamily:I.interBold,fontSize:9.5,color:
|
|
43
|
-
{
|
|
41
|
+
<S style={{backgroundColor:`${C}18`,paddingHorizontal:7,paddingVertical:2,borderRadius:6}}>
|
|
42
|
+
<V style={{fontFamily:I.interBold,fontSize:9.5,color:C}}>
|
|
43
|
+
{P}/{P}
|
|
44
44
|
</V>
|
|
45
|
-
</
|
|
46
|
-
</
|
|
47
|
-
</
|
|
48
|
-
</
|
|
49
|
-
{k&&<
|
|
50
|
-
<
|
|
51
|
-
{!x&&<
|
|
52
|
-
</
|
|
53
|
-
<
|
|
45
|
+
</S>
|
|
46
|
+
</S>}
|
|
47
|
+
</S>
|
|
48
|
+
</S>}const{log:z,isLast:x,color:_}=e;return<Te index={T}distance={8}style={k?[b.treeNodeRow,x&&b.treeNodeRowLast]:{marginBottom:5,marginHorizontal:5}}>
|
|
49
|
+
{k&&<S style={b.treeLines}>
|
|
50
|
+
<S style={[b.modernTreeLine,{borderColor:_},x&&b.modernTreeLineLast]}/>
|
|
51
|
+
{!x&&<S style={[b.modernTreeBranch,{borderColor:_}]}/>}
|
|
52
|
+
</S>}
|
|
53
|
+
<S style={k?b.treeCardWrapper:{flex:1}}>
|
|
54
54
|
<Ue item={z}isSelected={X.has(z.id)}onToggleSelect={me}onPress={()=>{ye(z)}}timelineMinStart={ge}timelineTotalRange={pe}isNew={he.has(z.id)}searchStr={F}/>
|
|
55
|
-
</
|
|
56
|
-
</Te>},[k,ge,pe,he,X,me,F,ce,ue,ne,ye,oe]);return<
|
|
57
|
-
<
|
|
55
|
+
</S>
|
|
56
|
+
</Te>},[k,ge,pe,he,X,me,F,ce,ue,ne,ye,oe]);return<S style={{flex:1}}>
|
|
57
|
+
<S style={{marginTop:6}}>
|
|
58
58
|
|
|
59
|
-
<
|
|
60
|
-
<
|
|
59
|
+
<S style={b.toolbarRow}>
|
|
60
|
+
<S style={[b.searchContainer,we&&{borderColor:o.purple,borderWidth:1.5}]}>
|
|
61
61
|
<Ze color={we?o.purple:o.grayTextWeak}size={15}/>
|
|
62
|
-
<Ge placeholder="Search URL, status, method, headers, body..."placeholderTextColor={o.grayTextWeak}value={F}onChangeText={U}onFocus={()=>
|
|
62
|
+
<Ge placeholder="Search URL, status, method, headers, body..."placeholderTextColor={o.grayTextWeak}value={F}onChangeText={U}onFocus={()=>Se(!0)}onBlur={()=>Se(!1)}style={b.searchInput}autoCorrect={!1}autoCapitalize="none"/>
|
|
63
63
|
|
|
64
|
-
{F.length>0&&<
|
|
65
|
-
<
|
|
64
|
+
{F.length>0&&<S style={{flexDirection:"row",alignItems:"center",gap:4}}>
|
|
65
|
+
<S style={{backgroundColor:`${o.purple}20`,borderRadius:10,paddingHorizontal:6,paddingVertical:1.5}}>
|
|
66
66
|
<V style={{color:o.purple,fontSize:9.5,fontFamily:I.interBold}}>
|
|
67
|
-
{
|
|
67
|
+
{E.length}
|
|
68
68
|
</V>
|
|
69
|
-
</
|
|
69
|
+
</S>
|
|
70
70
|
<He onPress={()=>U("")}hitSlop={10}style={b.clearBtn}>
|
|
71
|
-
<
|
|
71
|
+
<So color={o.grayTextWeak}size={13}/>
|
|
72
72
|
</He>
|
|
73
|
-
</
|
|
74
|
-
</
|
|
73
|
+
</S>}
|
|
74
|
+
</S>
|
|
75
75
|
|
|
76
|
-
<
|
|
76
|
+
<S style={b.toolbarRight}>
|
|
77
77
|
<O style={[b.toolbarBtn,{borderColor:`${o.errorColor}38`,backgroundColor:`${o.errorColor}0F`}]}onPress={Ie}hitSlop={6}>
|
|
78
|
-
<
|
|
79
|
-
{X.size>0&&<
|
|
78
|
+
<Co color={o.errorColor}size={15}/>
|
|
79
|
+
{X.size>0&&<S style={b.trashBadge}>
|
|
80
80
|
<V style={b.trashBadgeText}>
|
|
81
81
|
{X.size}
|
|
82
82
|
</V>
|
|
83
|
-
</
|
|
83
|
+
</S>}
|
|
84
84
|
</O>
|
|
85
85
|
|
|
86
86
|
<O style={[b.toolbarBtn,k&&{borderColor:o.purple,backgroundColor:`${o.purple}15`}]}onPress={()=>ke(e=>!e)}hitSlop={6}accessibilityLabel={k?"Page Accordion Grouping Enabled (Tap for Plain List)":"Plain List Enabled (Tap for Page Accordion)"}accessibilityRole="button">
|
|
87
87
|
<Ve color={k?o.purple:o.grayTextStrong}size={16}/>
|
|
88
|
-
{k&&<
|
|
88
|
+
{k&&<S style={b.activeFilterDot}/>}
|
|
89
89
|
</O>
|
|
90
90
|
|
|
91
91
|
<O style={b.toolbarBtn}onPress={()=>J(e=>e==="newest"?"oldest":"newest")}hitSlop={10}>
|
|
92
92
|
<To direction={Fe==="newest"?"down":"up"}color={o.grayTextStrong}size={18}/>
|
|
93
93
|
</O>
|
|
94
|
-
</
|
|
95
|
-
</
|
|
94
|
+
</S>
|
|
95
|
+
</S>
|
|
96
96
|
|
|
97
97
|
|
|
98
|
-
<
|
|
98
|
+
<S style={{flexDirection:"row",alignItems:"center",marginBottom:8,paddingHorizontal:8,gap:6}}>
|
|
99
99
|
<We horizontal showsHorizontalScrollIndicator={!1}style={{flex:1}}contentContainerStyle={{flexDirection:"row",alignItems:"center",gap:6,paddingRight:6}}>
|
|
100
100
|
{Oe.map(e=>{const T=K===e.id,z=e.color||o.purple,x=T?o.white:z;return<O key={e.id}onPress={()=>{le(T?"all":e.id)}}>
|
|
101
|
-
<
|
|
101
|
+
<S style={{flexDirection:"row",alignItems:"center",paddingHorizontal:9,paddingVertical:4.5,borderRadius:8,backgroundColor:T?z:`${z}12`,borderWidth:1,borderColor:T?z:`${z}30`,gap:5}}>
|
|
102
102
|
{e.id==="all"&&<Ve size={11}color={x}/>}
|
|
103
103
|
{e.id==="errors"&&<Lo size={11}color={x}/>}
|
|
104
104
|
{e.id==="success"&&<Ro size={11}color={x}/>}
|
|
@@ -109,45 +109,45 @@ import j,{useCallback as se,useMemo as H,useRef as qe}from"react";import{FlatLis
|
|
|
109
109
|
<V style={{fontFamily:I.interBold,fontSize:10.5,color:T?o.white:o.primaryBlack}}>
|
|
110
110
|
{e.label}
|
|
111
111
|
</V>
|
|
112
|
-
<
|
|
112
|
+
<S style={{backgroundColor:T?"rgba(255,255,255,0.25)":`${z}20`,paddingHorizontal:5,paddingVertical:1,borderRadius:8}}>
|
|
113
113
|
<V style={{fontFamily:I.interBold,fontSize:9,color:T?o.white:z}}>
|
|
114
114
|
{e.count}
|
|
115
115
|
</V>
|
|
116
|
-
</
|
|
117
|
-
</
|
|
116
|
+
</S>
|
|
117
|
+
</S>
|
|
118
118
|
</O>})}
|
|
119
119
|
</We>
|
|
120
120
|
|
|
121
121
|
<O onPress={()=>fe(!0)}style={{flexShrink:0}}>
|
|
122
|
-
<
|
|
122
|
+
<S style={{flexDirection:"row",alignItems:"center",paddingHorizontal:10,paddingVertical:4.5,borderRadius:8,backgroundColor:M?`${o.purple}20`:o.grayBackground,borderWidth:1,borderColor:M?o.purple:o.grayBorderSecondary,gap:5,shadowColor:o.black,shadowOpacity:.04,shadowRadius:2,shadowOffset:{width:0,height:1},elevation:1}}>
|
|
123
123
|
<Vo size={11}color={M?o.purple:o.grayText}/>
|
|
124
124
|
<V style={{fontFamily:I.interBold,fontSize:10.5,color:M?o.purple:o.grayText}}>
|
|
125
125
|
{oe("network.moreFilters","More Filters")}
|
|
126
126
|
</V>
|
|
127
|
-
{M&&<
|
|
127
|
+
{M&&<S style={{backgroundColor:o.purple,paddingHorizontal:4.5,paddingVertical:1,borderRadius:6}}>
|
|
128
128
|
<V style={{fontFamily:I.interBold,fontSize:8.5,color:o.white}}>
|
|
129
129
|
{Ee}
|
|
130
130
|
</V>
|
|
131
|
-
</
|
|
132
|
-
</
|
|
131
|
+
</S>}
|
|
132
|
+
</S>
|
|
133
133
|
</O>
|
|
134
|
-
</
|
|
134
|
+
</S>
|
|
135
135
|
|
|
136
136
|
|
|
137
|
-
{(K!=="all"||F.trim().length>0||M||
|
|
137
|
+
{(K!=="all"||F.trim().length>0||M||E.length!==G.length)&&<S style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",marginHorizontal:8,marginBottom:8,paddingHorizontal:8,paddingVertical:5.5,backgroundColor:`${o.purple}10`,borderRadius:8,borderWidth:1,borderColor:`${o.purple}25`}}>
|
|
138
138
|
<V style={{fontFamily:I.interMedium,fontSize:10.5,color:o.purple}}>
|
|
139
|
-
Showing {
|
|
139
|
+
Showing {E.length} of {G.length} requests
|
|
140
140
|
</V>
|
|
141
141
|
<O onPress={()=>{U(""),le("all"),v(new Set),W(new Set),Y("all"),Z("all"),ee("time_desc"),de("all")}}>
|
|
142
142
|
<V style={{fontFamily:I.interBold,fontSize:10.5,color:o.errorColor}}>
|
|
143
143
|
Clear All Filters
|
|
144
144
|
</V>
|
|
145
145
|
</O>
|
|
146
|
-
</
|
|
147
|
-
</
|
|
146
|
+
</S>}
|
|
147
|
+
</S>
|
|
148
148
|
|
|
149
|
-
<De ref={Re}data={Be}keyExtractor={Pe}renderItem={$e}initialNumToRender={10}maxToRenderPerBatch={8}windowSize={5}updateCellsBatchingPeriod={40}removeClippedSubviews={!0}renderToHardwareTextureAndroid={!0}showsVerticalScrollIndicator={!1}ListEmptyComponent={<Ke isSearch={F.length>0||M||K!=="all"}searchQuery={F}customTitle={F.length>0?"No matching API requests":"No network activity"}onClearSearch={()=>{U(""),v(new Set),W(new Set),Y("all"),Z("all"),ee("time_desc"),le("all"),de("all")}}/>}ListFooterComponent={Q.length>0?<Xe count={k?
|
|
149
|
+
<De ref={Re}data={Be}keyExtractor={Pe}renderItem={$e}initialNumToRender={10}maxToRenderPerBatch={8}windowSize={5}updateCellsBatchingPeriod={40}removeClippedSubviews={!0}renderToHardwareTextureAndroid={!0}showsVerticalScrollIndicator={!1}nestedScrollEnabled={!0}ListEmptyComponent={<Ke isSearch={F.length>0||M||K!=="all"}searchQuery={F}customTitle={F.length>0?"No matching API requests":"No network activity"}onClearSearch={()=>{U(""),v(new Set),W(new Set),Y("all"),Z("all"),ee("time_desc"),le("all"),de("all")}}/>}ListFooterComponent={Q.length>0?<Xe count={k?E.length:Math.min(te,E.length)}totalCount={E.length}label="requests"hasMore={!k&&E.length>te}loadMoreStep={30}onLoadMore={()=>Ce(e=>e+30)}/>:null}style={{flex:1}}contentContainerStyle={[b.listContent,{flexGrow:1}]}keyboardShouldPersistTaps="handled"/>
|
|
150
150
|
|
|
151
151
|
|
|
152
152
|
<Je visible={Le}onClose={()=>fe(!1)}filters={Me}onApply={Ne}searchQuery={F}/>
|
|
153
|
-
</
|
|
153
|
+
</S>});export default No;
|
|
@@ -87,4 +87,4 @@ import O,{useMemo as R}from"react";import{StyleSheet as F,Text as T,View as C}fr
|
|
|
87
87
|
</C>
|
|
88
88
|
</C>
|
|
89
89
|
</C>
|
|
90
|
-
</J>}const o=F.create({card:{height:140,alignSelf:"stretch",borderRadius:10,overflow:"hidden",borderWidth:1,borderColor:e.dividerColor,shadowColor:e.shadowColorString,marginBottom:6},cardBody:{height:"100%",paddingHorizontal:
|
|
90
|
+
</J>}const o=F.create({card:{height:140,alignSelf:"stretch",borderRadius:10,overflow:"hidden",borderWidth:1,borderColor:e.dividerColor,shadowColor:e.shadowColorString,marginBottom:6},cardBody:{height:"100%",paddingHorizontal:8,paddingTop:8,paddingBottom:6,justifyContent:"space-between"},cardHeaderRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",height:22,minHeight:22,maxHeight:22},cardHeaderLeft:{flexDirection:"row",alignItems:"center",flex:1,marginRight:4,gap:4.5,minWidth:0,overflow:"hidden"},cardHeaderRight:{flexDirection:"row",alignItems:"center",gap:4,flexShrink:0},serialNumber:{fontFamily:S.interBold,color:e.grayTextWeak,fontSize:10},methodBadge:{paddingHorizontal:6,paddingVertical:2,borderRadius:5,alignItems:"center",justifyContent:"center"},methodBadgeText:{fontFamily:S.interBold,fontSize:9.5,lineHeight:12,letterSpacing:.5,color:e.white},chip:{paddingHorizontal:5.5,paddingVertical:1.5,borderRadius:4,borderWidth:1},chipText:{fontFamily:S.interBold,fontSize:9,lineHeight:12},statusPill:{flexDirection:"row",alignItems:"center",gap:3.5,paddingHorizontal:6,paddingVertical:2,borderRadius:6,borderWidth:1,flexShrink:0},statusPillText:{fontFamily:S.interBold,fontSize:9.5,lineHeight:12},messageBox:{backgroundColor:e.grayBackground,borderRadius:7,borderWidth:1,borderColor:e.dividerColor,paddingHorizontal:7,paddingVertical:5,height:68,minHeight:68,maxHeight:68,justifyContent:"center",gap:2,overflow:"hidden"},messageTitle:{fontFamily:S.interBold,fontSize:12,color:e.primaryBlack,lineHeight:16},messageBody:{fontFamily:S.interRegular,fontSize:11,color:e.grayText,lineHeight:15},highlight:{backgroundColor:e.yellowHighlight,color:e.primaryBlack,borderRadius:2},cardFooterRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",height:18,minHeight:18,maxHeight:18,gap:4},footerLeft:{flexDirection:"row",alignItems:"center",gap:4.5,flex:1,minWidth:0,overflow:"hidden"},footerRight:{flexDirection:"row",alignItems:"center",gap:4,flexShrink:0},cardDateRow:{flexDirection:"row",alignItems:"center",gap:3.5},cardDateText:{fontFamily:S.interRegular,fontSize:10,lineHeight:13,color:e.slate400},callerChip:{flexDirection:"row",alignItems:"center",gap:3,backgroundColor:e.skySoftBg,borderColor:e.skySoftBorder,borderWidth:1,paddingHorizontal:5,paddingVertical:1.5,borderRadius:4,flexShrink:1,minWidth:0},callerChipText:{color:e.skySoftText,fontSize:9,lineHeight:12,fontFamily:S.interBold},metaStatChip:{flexDirection:"row",alignItems:"center",gap:3,backgroundColor:`${e.purple}14`,borderColor:`${e.purple}2B`,borderWidth:1,paddingHorizontal:5,paddingVertical:1.5,borderRadius:4},metaStatText:{color:e.purple,fontSize:9,lineHeight:12,fontFamily:S.interBold}});function ee(r,t){return r.item===t.item&&r.searchStr===t.searchStr&&r.onPress===t.onPress}export default O.memo(Z,ee);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import U,{useMemo as j,useState as J}from"react";import{Image as K,ScrollView as P,StyleSheet as E,Text as T,View as C}from"react-native";import I from"../../styles";import{AppColors as e}from"../../styles/AppColors";import{AppFonts as V}from"../../styles/AppFonts";import{useTranslation as _}from"../../i18n";import{formatDateTime as Y}from"../../helpers";import{sharePushReport as q}from"../../helpers/shareFormatter";import G from"../ShareButton";import R from"../CopyButton";import F from"../JsonViewer";import Q from"../SegmentedTabs";import{BellIcon as X,ClockIcon as Z,CloudPushIcon as Te,EyeIcon as Ce,LayersIcon as Ve,MetadataIcon as Se,RawJsonIcon as Be,LinkChainIcon as Ie,VolumeIcon as De,BoltIcon as Pe,BuildingIcon as Re,SettingsIcon as Fe}from"../NetworkIcons";const A=U.memo(function({item:o}){const{t:
|
|
1
|
+
import U,{useMemo as j,useState as J}from"react";import{Image as K,ScrollView as P,StyleSheet as E,Text as T,View as C}from"react-native";import I from"../../styles";import{AppColors as e}from"../../styles/AppColors";import{AppFonts as V}from"../../styles/AppFonts";import{useTranslation as _}from"../../i18n";import{formatDateTime as Y}from"../../helpers";import{sharePushReport as q}from"../../helpers/shareFormatter";import G from"../ShareButton";import R from"../CopyButton";import F from"../JsonViewer";import Q from"../SegmentedTabs";import{BellIcon as X,ClockIcon as Z,CloudPushIcon as Te,EyeIcon as Ce,LayersIcon as Ve,MetadataIcon as Se,RawJsonIcon as Be,LinkChainIcon as Ie,VolumeIcon as De,BoltIcon as Pe,BuildingIcon as Re,SettingsIcon as Fe}from"../NetworkIcons";const A=U.memo(function({item:o}){const{t:S}=_(),[z,N]=J("preview"),v=j(()=>o?Y(o.timestamp):"",[o]);if(!o)return null;const W=async()=>{await q(o)},H=[{key:"preview",label:S("push.preview","Preview"),themeColor:e.brandPurple,icon:B=><Ce size={12}color={B?e.white:e.grayText}/>},{key:"payload",label:S("push.payload","Custom Payload"),themeColor:e.violet600,icon:B=><Ve size={12}color={B?e.white:e.grayText}/>},{key:"headers",label:S("push.deliveryMetadata","Delivery Metadata"),themeColor:e.teal600,icon:B=><Se size={12}color={B?e.white:e.grayText}/>},{key:"raw",label:S("push.rawPayload","Raw Payload"),themeColor:e.sky600,icon:B=><Be size={12}color={B?e.white:e.grayText}/>}],O=(o.source||"PUSH").toUpperCase(),L=(o.appState||"STATE").toUpperCase(),$=!!(o.data?.deepLink||o.data?.openDirectUrl||o.data?._od||o.customDomainAttributes?.openDirectUrl),M=o.data?.deepLink||o.data?.openDirectUrl||o.data?._od||o.customDomainAttributes?.openDirectUrl||"";return<C style={{flex:1}}>
|
|
2
2
|
|
|
3
3
|
<C style={{paddingHorizontal:8,paddingTop:4}}>
|
|
4
4
|
<C style={I.detailInfoBar}>
|
|
@@ -66,7 +66,7 @@ import U,{useMemo as j,useState as J}from"react";import{Image as K,ScrollView as
|
|
|
66
66
|
{$?<C style={{flexDirection:"row",alignItems:"center",gap:4,marginTop:2}}>
|
|
67
67
|
<Ie size={11}color={e.brandPurple}/>
|
|
68
68
|
<T style={{fontSize:10,fontFamily:V.interBold,color:e.brandPurple}}>
|
|
69
|
-
{
|
|
69
|
+
{S("push.link","LINK")}:
|
|
70
70
|
</T>
|
|
71
71
|
<T style={{fontSize:10.5,fontFamily:V.interRegular,color:e.sky600}}numberOfLines={1}>
|
|
72
72
|
{M}
|
|
@@ -79,7 +79,7 @@ import U,{useMemo as j,useState as J}from"react";import{Image as K,ScrollView as
|
|
|
79
79
|
|
|
80
80
|
|
|
81
81
|
<C style={{paddingHorizontal:8,paddingVertical:6}}>
|
|
82
|
-
<Q tabs={H}activeKey={z}onChange={
|
|
82
|
+
<Q tabs={H}activeKey={z}onChange={B=>N(B)}scrollable={!0}/>
|
|
83
83
|
</C>
|
|
84
84
|
|
|
85
85
|
|
|
@@ -92,9 +92,9 @@ import U,{useMemo as j,useState as J}from"react";import{Image as K,ScrollView as
|
|
|
92
92
|
<X size={12}color={e.white}/>
|
|
93
93
|
</C>
|
|
94
94
|
<T style={t.mockupAppName}>
|
|
95
|
-
{o.domain||
|
|
95
|
+
{o.domain||S("push.appNotification","App Notification")}
|
|
96
96
|
</T>
|
|
97
|
-
<T style={t.mockupTime}>• {
|
|
97
|
+
<T style={t.mockupTime}>• {S("push.now","now")}</T>
|
|
98
98
|
</C>
|
|
99
99
|
|
|
100
100
|
|
|
@@ -136,10 +136,10 @@ import U,{useMemo as j,useState as J}from"react";import{Image as K,ScrollView as
|
|
|
136
136
|
{o.customDomainAttributes&&Object.keys(o.customDomainAttributes).length>0&&<C style={t.sectionCard}>
|
|
137
137
|
<C style={{flexDirection:"row",alignItems:"center",gap:6,marginBottom:8}}>
|
|
138
138
|
<Re size={13}color={e.blue600}/>
|
|
139
|
-
<T style={t.sectionTitle}>{
|
|
139
|
+
<T style={t.sectionTitle}>{S("push.domainFields","Domain Specific Fields")}</T>
|
|
140
140
|
</C>
|
|
141
|
-
{Object.entries(o.customDomainAttributes).map(([
|
|
142
|
-
<T style={t.keyText}>{
|
|
141
|
+
{Object.entries(o.customDomainAttributes).map(([B,D])=><C key={B}style={t.keyValRow}>
|
|
142
|
+
<T style={t.keyText}>{B}:</T>
|
|
143
143
|
<T style={t.valText}numberOfLines={2}>
|
|
144
144
|
{typeof D=="object"?JSON.stringify(D):String(D)}
|
|
145
145
|
</T>
|
|
@@ -153,42 +153,42 @@ import U,{useMemo as j,useState as J}from"react";import{Image as K,ScrollView as
|
|
|
153
153
|
<C style={t.sectionCard}>
|
|
154
154
|
<C style={{flexDirection:"row",alignItems:"center",gap:6,marginBottom:8}}>
|
|
155
155
|
<Fe size={13}color={e.slate600}/>
|
|
156
|
-
<T style={t.sectionTitle}>{
|
|
156
|
+
<T style={t.sectionTitle}>{S("push.deliveryMetadata","Delivery & Message Metadata")}</T>
|
|
157
157
|
</C>
|
|
158
158
|
<C style={t.keyValRow}>
|
|
159
|
-
<T style={t.keyText}>Message ID
|
|
159
|
+
<T style={t.keyText}>{S("push.messageId","Message ID:")}</T>
|
|
160
160
|
<T style={t.valText}selectable>{o.id||"N/A"}</T>
|
|
161
161
|
</C>
|
|
162
162
|
<C style={t.keyValRow}>
|
|
163
|
-
<T style={t.keyText}>Source / Domain
|
|
163
|
+
<T style={t.keyText}>{S("push.sourceDomain","Source / Domain:")}</T>
|
|
164
164
|
<T style={t.valText}>{o.domain||o.source||"N/A"}</T>
|
|
165
165
|
</C>
|
|
166
166
|
<C style={t.keyValRow}>
|
|
167
|
-
<T style={t.keyText}>App State
|
|
167
|
+
<T style={t.keyText}>{S("push.appState","App State:")}</T>
|
|
168
168
|
<T style={t.valText}>{o.appState}</T>
|
|
169
169
|
</C>
|
|
170
170
|
<C style={t.keyValRow}>
|
|
171
|
-
<T style={t.keyText}>Action Type
|
|
171
|
+
<T style={t.keyText}>{S("push.actionType","Action Type:")}</T>
|
|
172
172
|
<T style={t.valText}>{o.action}</T>
|
|
173
173
|
</C>
|
|
174
174
|
<C style={t.keyValRow}>
|
|
175
|
-
<T style={t.keyText}>Timestamp
|
|
175
|
+
<T style={t.keyText}>{S("push.timestamp","Timestamp:")}</T>
|
|
176
176
|
<T style={t.valText}>{v}</T>
|
|
177
177
|
</C>
|
|
178
178
|
<C style={t.keyValRow}>
|
|
179
|
-
<T style={t.keyText}>Channel ID
|
|
179
|
+
<T style={t.keyText}>{S("push.channelId","Channel ID:")}</T>
|
|
180
180
|
<T style={t.valText}>{o.channelId||"default"}</T>
|
|
181
181
|
</C>
|
|
182
182
|
<C style={t.keyValRow}>
|
|
183
|
-
<T style={t.keyText}>Sound
|
|
183
|
+
<T style={t.keyText}>{S("push.sound","Sound:")}</T>
|
|
184
184
|
<T style={t.valText}>{o.sound||"default"}</T>
|
|
185
185
|
</C>
|
|
186
186
|
<C style={t.keyValRow}>
|
|
187
|
-
<T style={t.keyText}>Badge Count
|
|
187
|
+
<T style={t.keyText}>{S("push.badgeCount","Badge Count:")}</T>
|
|
188
188
|
<T style={t.valText}>{o.badge!=null?o.badge:"None"}</T>
|
|
189
189
|
</C>
|
|
190
190
|
<C style={t.keyValRow}>
|
|
191
|
-
<T style={t.keyText}>Collapse Key
|
|
191
|
+
<T style={t.keyText}>{S("push.collapseKey","Collapse Key:")}</T>
|
|
192
192
|
<T style={t.valText}>{o.collapseKey||"None"}</T>
|
|
193
193
|
</C>
|
|
194
194
|
</C>
|
|
@@ -41,5 +41,5 @@ import K,{useCallback as B,useMemo as F,useRef as ne,useState as U}from"react";i
|
|
|
41
41
|
</C>
|
|
42
42
|
|
|
43
43
|
|
|
44
|
-
<Ce ref={W}data={V}renderItem={re}keyExtractor={le}contentContainerStyle={k.listContent}initialNumToRender={10}maxToRenderPerBatch={8}windowSize={5}updateCellsBatchingPeriod={40}removeClippedSubviews={!0}renderToHardwareTextureAndroid={!0}showsVerticalScrollIndicator={!1}ListEmptyComponent={<Ee isSearch={!!(r||T!=="all")}searchQuery={r}customTitle={r||T!=="all"?x("push.noMatching","No matching push notifications"):x("push.noNotifications","No push notifications captured yet")}customSub={r||T!=="all"?x("push.adjustSearchFilter","Try adjusting your search query or filter chips."):x("push.noNotificationsDesc","Incoming or opened push payloads from any domain (Salesforce, FCM, APNs, etc.) will appear here automatically.")}onClearSearch={()=>{R(""),M("all")}}showReload={!1}/>}ListFooterComponent={P.length>0?<Fe count={V.length}totalCount={P.length}label="push notifications"loadMoreStep={J}hasMore={V.length<P.length}onLoadMore={()=>$(e=>e+J)}/>:null}/>
|
|
44
|
+
<Ce ref={W}data={V}renderItem={re}keyExtractor={le}style={{flex:1}}contentContainerStyle={[k.listContent,{flexGrow:1}]}initialNumToRender={10}maxToRenderPerBatch={8}windowSize={5}updateCellsBatchingPeriod={40}removeClippedSubviews={!0}renderToHardwareTextureAndroid={!0}showsVerticalScrollIndicator={!1}nestedScrollEnabled={!0}keyboardShouldPersistTaps="handled"ListEmptyComponent={<Ee isSearch={!!(r||T!=="all")}searchQuery={r}customTitle={r||T!=="all"?x("push.noMatching","No matching push notifications"):x("push.noNotifications","No push notifications captured yet")}customSub={r||T!=="all"?x("push.adjustSearchFilter","Try adjusting your search query or filter chips."):x("push.noNotificationsDesc","Incoming or opened push payloads from any domain (Salesforce, FCM, APNs, etc.) will appear here automatically.")}onClearSearch={()=>{R(""),M("all")}}showReload={!1}/>}ListFooterComponent={P.length>0?<Fe count={V.length}totalCount={P.length}label="push notifications"loadMoreStep={J}hasMore={V.length<P.length}onLoadMore={()=>$(e=>e+J)}/>:null}/>
|
|
45
45
|
</C>}),k=we.create({carouselWrapper:{paddingVertical:6,borderBottomWidth:1,borderBottomColor:t.dividerColor,backgroundColor:t.white},carouselContent:{paddingHorizontal:8,gap:6,flexDirection:"row",alignItems:"center"},filterPill:{flexDirection:"row",alignItems:"center",gap:5,paddingHorizontal:9,paddingVertical:4.5,borderRadius:20,backgroundColor:t.grayBackground,borderWidth:1,borderColor:t.dividerColor},filterPillText:{fontSize:11,fontFamily:G.interMedium,color:t.primaryBlack},countBadge:{paddingHorizontal:5,paddingVertical:1,borderRadius:10},countBadgeText:{fontSize:9.5,fontFamily:G.interBold},listContent:{padding:8,paddingBottom:24}});X.displayName="PushTab";export default X;
|
|
@@ -1,13 +1,15 @@
|
|
|
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 Ie,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 It,ScreenIcon as At,ListenerIcon as Rt,DocIcon as Vt,LoadingSpinnerIcon as Bt,CircleAlertIcon as Ht,TextAaIcon as Lt}from"../NetworkIcons";const Ae=
|
|
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 Ie,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 It,ScreenIcon as At,ListenerIcon as Rt,DocIcon as Vt,LoadingSpinnerIcon as Bt,CircleAlertIcon as Ht,TextAaIcon as Lt}from"../NetworkIcons";const Ae=B=>{switch(B){case"saga":return{label:"SAGA",renderIcon:(A,z=9)=><U color={A}size={z}/>,bg:e.purple100,text:e.brandPurple,border:e.purple200};case"thunk":return{label:"THUNK",renderIcon:(A,z=9)=><It color={A}size={z}/>,bg:e.amber100,text:e.amber800Warm,border:e.amber200};case"ui":return{label:"UI",renderIcon:(A,z=9)=><At color={A}size={z}/>,bg:e.sky100,text:e.sky600,border:e.sky400};case"listener":return{label:"LISTENER",renderIcon:(A,z=9)=><Rt color={A}size={z}/>,bg:e.teal100,text:e.teal700,border:e.teal400};default:return{label:"DIRECT",renderIcon:(A,z=9)=><U color={A}size={z}/>,bg:e.slate100,text:e.slate700,border:e.slate200}}},Re=50,ze=10,Pt=ee.memo(()=>{const{t:B}=Me(),{reduxState:A,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(A),[A]),Q=N(()=>Ke(),[z]),$=N(()=>!A||typeof A!="object"?[]:Object.keys(A).map(I=>{const T=A[I],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[I],Be=V?.updatedAt||0,He=Q.filter(W=>!W.affectedSlices||W.affectedSlices.length===0?!0:W.affectedSlices.includes(I)).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-${I}`,name:I,keysCount:L,sizeStr:Se(T),typeLabel:D,status:E,statusMessage:v,timelineCount:He,lastAction:X,updatedAt:Be}}),[A,z,Q]),F=N(()=>{let t=$;if(k&&k.trim().length>0){const I=k.trim().toLowerCase().split(/\s+/).filter(Boolean);t=t.filter(T=>{const H=A?A[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 I.every(D=>j.includes(D))})}return[...t].sort((I,T)=>P==="latest"&&T.updatedAt!==I.updatedAt?T.updatedAt-I.updatedAt:I.name.localeCompare(T.name))},[$,k,P,A]),_=N(()=>F.slice(0,q),[F,q]),M=N(()=>{const t=Object.values(z);return t.length===0?null:t.reduce((I,T)=>I?(T.updatedAt||0)>(I.updatedAt||0)?T:I:T,null)},[z]),ve=Le(({item:t,index:I})=>{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={I}distance={8}>
|
|
2
2
|
<C style={o.cardContainer}>
|
|
3
|
-
<Ne onPress={()=>{Z(t.name)}}style={[o.card,{borderLeftWidth:3.5,borderLeftColor:
|
|
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
8
|
<S style={o.serialNumber}>#{I+1}</S>
|
|
9
9
|
<C style={[o.methodBadge,{backgroundColor:e.violet600}]}>
|
|
10
|
-
<S style={o.methodBadgeText}>
|
|
10
|
+
<S style={o.methodBadgeText}>
|
|
11
|
+
{B("redux.title","REDUX").toUpperCase()}
|
|
12
|
+
</S>
|
|
11
13
|
</C>
|
|
12
14
|
<C style={[o.chip,{backgroundColor:`${e.violet600}14`,borderColor:`${e.violet600}2E`}]}>
|
|
13
15
|
<S style={[o.chipText,{color:e.violet600}]}>
|
|
@@ -24,9 +26,9 @@ import ee,{useCallback as Le,useMemo as N,useRef as Pe,useState as te}from"react
|
|
|
24
26
|
</C>
|
|
25
27
|
|
|
26
28
|
<C style={o.cardHeaderRight}>
|
|
27
|
-
<C style={[o.statusPill,{backgroundColor:j,borderColor:
|
|
29
|
+
<C style={[o.statusPill,{backgroundColor:j,borderColor:D}]}>
|
|
28
30
|
{t.status==="loading"?<Bt color={e.amber800Warm}size={10}/>:t.status==="error"?<Ht color={e.red600}size={10}/>:t.status==="empty"?null:<C style={o.liveDot}/>}
|
|
29
|
-
<S style={[o.statusPillText,{color:
|
|
31
|
+
<S style={[o.statusPillText,{color:L}]}>
|
|
30
32
|
{t.status==="loading"?"Loading":t.status==="error"?t.statusMessage||"Error":t.status==="empty"?"Empty":"Live"}
|
|
31
33
|
</S>
|
|
32
34
|
</C>
|
|
@@ -87,7 +89,7 @@ import ee,{useCallback as Le,useMemo as N,useRef as Pe,useState as te}from"react
|
|
|
87
89
|
|
|
88
90
|
|
|
89
91
|
<C style={o.waterfallContainer}>
|
|
90
|
-
<C style={[o.waterfallBar,{backgroundColor:
|
|
92
|
+
<C style={[o.waterfallBar,{backgroundColor:H,width:T?"100%":"35%"}]}/>
|
|
91
93
|
</C>
|
|
92
94
|
</Ne>
|
|
93
95
|
</C>
|
|
@@ -95,18 +97,18 @@ import ee,{useCallback as Le,useMemo as N,useRef as Pe,useState as te}from"react
|
|
|
95
97
|
|
|
96
98
|
<C style={o.overviewCard}>
|
|
97
99
|
<C style={o.statCol}>
|
|
98
|
-
<S style={o.statHeading}>{
|
|
100
|
+
<S style={o.statHeading}>{B("redux.activeSlices","ACTIVE SLICES")}</S>
|
|
99
101
|
<S style={o.statBigVal}>{$.length}</S>
|
|
100
102
|
</C>
|
|
101
103
|
<C style={o.statDivider}/>
|
|
102
104
|
<C style={o.statCol}>
|
|
103
|
-
<S style={o.statHeading}>{
|
|
105
|
+
<S style={o.statHeading}>{B("redux.totalState","TOTAL STATE")}</S>
|
|
104
106
|
<S style={o.statBigVal}>{Ve}</S>
|
|
105
107
|
</C>
|
|
106
108
|
<C style={o.statDivider}/>
|
|
107
109
|
<C style={[o.statCol,{flex:1.6}]}>
|
|
108
110
|
<C style={{flexDirection:"row",alignItems:"center",gap:4}}>
|
|
109
|
-
<S style={o.statHeading}>{
|
|
111
|
+
<S style={o.statHeading}>{B("redux.lastActionHeader","LAST ACTION")}</S>
|
|
110
112
|
{M?.originType&&(()=>{const t=Ae(M.originType);return<C style={{flexDirection:"row",alignItems:"center",gap:2,backgroundColor:t.bg,paddingHorizontal:4,paddingVertical:1,borderRadius:3}}>
|
|
111
113
|
{t.renderIcon(t.text,8)}
|
|
112
114
|
<S style={{fontFamily:R.interBold,fontSize:7.5,color:t.text}}>
|
|
@@ -128,11 +130,11 @@ import ee,{useCallback as Le,useMemo as N,useRef as Pe,useState as te}from"react
|
|
|
128
130
|
<C style={o.searchRow}>
|
|
129
131
|
<C style={O.searchContainer}>
|
|
130
132
|
<Je color={e.grayTextWeak}size={15}/>
|
|
131
|
-
<We accessible={!0}accessibilityRole="search"accessibilityLabel="Search Redux slices or actions"accessibilityHint="Type to filter state slices in real time"placeholder={
|
|
133
|
+
<We accessible={!0}accessibilityRole="search"accessibilityLabel="Search Redux slices or actions"accessibilityHint="Type to filter state slices in real time"placeholder={B("redux.searchPlaceholder","Search state or actions...")}placeholderTextColor={e.grayTextWeak}value={k}onChangeText={G}style={O.searchInput}autoCorrect={!1}autoCapitalize="none"/>
|
|
132
134
|
{k.length>0&&<C style={{flexDirection:"row",alignItems:"center",gap:4}}>
|
|
133
135
|
<C style={{backgroundColor:`${e.purple}20`,borderRadius:10,paddingHorizontal:6,paddingVertical:1.5}}>
|
|
134
136
|
<S style={{color:e.purple,fontSize:9.5,fontFamily:R.interBold}}>
|
|
135
|
-
{
|
|
137
|
+
{F.length}
|
|
136
138
|
</S>
|
|
137
139
|
</C>
|
|
138
140
|
<Ce accessible={!0}accessibilityRole="button"accessibilityLabel="Clear search input"onPress={()=>G("")}hitSlop={10}>
|
|
@@ -149,7 +151,7 @@ import ee,{useCallback as Le,useMemo as N,useRef as Pe,useState as te}from"react
|
|
|
149
151
|
|
|
150
152
|
<C style={o.headerSubRow}>
|
|
151
153
|
<S style={o.resultCount}>
|
|
152
|
-
Showing {
|
|
154
|
+
Showing {F.length} of {$.length} state slices
|
|
153
155
|
</S>
|
|
154
156
|
<C style={{flexDirection:"row",alignItems:"center",gap:4}}>
|
|
155
157
|
{P==="latest"?<U color={e.brandPurple}size={11}/>:<Lt color={e.brandPurple}size={11}/>}
|
|
@@ -161,13 +163,13 @@ import ee,{useCallback as Le,useMemo as N,useRef as Pe,useState as te}from"react
|
|
|
161
163
|
</C>
|
|
162
164
|
|
|
163
165
|
|
|
164
|
-
<De ref={K}data={_}keyExtractor={t=>t.id}renderItem={ve}getItemLayout={(t,I)=>({length:126,offset:126*I,index:I})}initialNumToRender={10}maxToRenderPerBatch={8}windowSize={5}updateCellsBatchingPeriod={40}removeClippedSubviews={!0}renderToHardwareTextureAndroid={!0}showsVerticalScrollIndicator={!1}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={
|
|
166
|
+
<De ref={K}data={_}keyExtractor={t=>t.id}renderItem={ve}getItemLayout={(t,I)=>({length:126,offset:126*I,index:I})}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"/>
|
|
165
167
|
</C>:<C style={O.emptyContainer}>
|
|
166
168
|
<C style={O.emptyIconWrap}>
|
|
167
169
|
<Ie color={e.purple}size={32}/>
|
|
168
170
|
</C>
|
|
169
|
-
<S style={O.emptyTitle}>{
|
|
171
|
+
<S style={O.emptyTitle}>{B("redux.noStoreConnected","No Redux Store Connected")}</S>
|
|
170
172
|
<S style={O.emptySub}>
|
|
171
|
-
{
|
|
173
|
+
{B("redux.connectStoreTip","Call connectReduxStore(store) or use inspectorReduxMiddleware at app initialization.")}
|
|
172
174
|
</S>
|
|
173
|
-
</C>}),o=Ee.create({overviewCard:{flexDirection:"row",alignItems:"center",backgroundColor:e.white,marginHorizontal:
|
|
175
|
+
</C>}),o=Ee.create({overviewCard:{flexDirection:"row",alignItems:"center",backgroundColor:e.white,marginHorizontal:8,marginTop:8,borderRadius:12,padding:10,borderWidth:1,borderColor:e.dividerColor,shadowColor:e.primaryBlack,shadowOffset:{width:0,height:1},shadowOpacity:.03,shadowRadius:3,elevation:1},statCol:{flex:1},statDivider:{width:1,height:28,backgroundColor:e.dividerColor,marginHorizontal:6},statHeading:{fontFamily:R.interBold,fontSize:9,color:e.grayTextWeak,letterSpacing:.5},statBigVal:{fontFamily:R.interBold,fontSize:14,color:e.primaryBlack,marginTop:2},statLastAction:{fontFamily:R.interBold,fontSize:11,color:e.purple,marginTop:2},statLastTime:{fontFamily:R.interRegular,fontSize:9.5,color:e.grayTextWeak},toolbarContainer:{backgroundColor:e.white,borderBottomWidth:1,borderBottomColor:e.dividerColor,paddingHorizontal:8,paddingTop:8,paddingBottom:6,marginTop:8},searchRow:{flexDirection:"row",alignItems:"center",gap:8},headerSubRow:{flexDirection:"row",justifyContent:"space-between",alignItems:"center",marginTop:6,paddingHorizontal:2},resultCount:{fontFamily:R.interMedium,fontSize:11,color:e.grayTextWeak},sortLabel:{fontFamily:R.interMedium,fontSize:10.5,color:e.brandPurple},listContent:{paddingVertical:8,paddingBottom:36},cardContainer:{paddingHorizontal:5,paddingVertical:4,height:126},card:{backgroundColor:e.white,borderRadius:10,borderWidth:1,borderColor:e.grayBorderSecondary,shadowColor:e.shadowColorString,shadowOffset:{width:0,height:1},shadowOpacity:.05,shadowRadius:2.5,elevation:1.5,height:118,overflow:"hidden"},cardRecentlyUpdated:{borderColor:`${e.brandPurple}66`,backgroundColor:e.purpleTintBg},cardBody:{paddingHorizontal:8,paddingTop:8,paddingBottom:6,flex:1,justifyContent:"space-between"},cardHeaderRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",height:22,minHeight:22,maxHeight:22,gap:4.5},cardHeaderLeft:{flexDirection:"row",alignItems:"center",gap:4.5,flex:1,minWidth:0},cardHeaderRight:{flexDirection:"row",alignItems:"center",gap:6,flexShrink:0},serialNumber:{fontFamily:R.interBold,fontSize:10.5,lineHeight:13,color:e.grayTextWeak},methodBadge:{paddingHorizontal:5.5,paddingVertical:2,borderRadius:4,alignItems:"center",justifyContent:"center"},methodBadgeText:{fontFamily:R.interBold,color:e.white,fontSize:9,lineHeight:12,letterSpacing:.4},chip:{flexDirection:"row",alignItems:"center",gap:3,paddingHorizontal:5,paddingVertical:1.5,borderRadius:4,borderWidth:1},chipText:{fontFamily:R.interBold,fontSize:8.5,lineHeight:11,letterSpacing:.3},statusPill:{flexDirection:"row",alignItems:"center",gap:3.5,paddingHorizontal:6,paddingVertical:2,borderRadius:4,borderWidth:1},liveDot:{width:6,height:6,borderRadius:3,backgroundColor:e.emerald500},statusPillText:{fontFamily:R.interBold,fontSize:9.5,lineHeight:12},cardMainRow:{height:48,minHeight:48,maxHeight:48,justifyContent:"space-between",gap:3},sliceNameRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",gap:6},sliceNameText:{fontFamily:R.interBold,fontSize:12.5,lineHeight:16,color:e.primaryBlack,flex:1},actionCountChip:{flexDirection:"row",alignItems:"center",gap:2.5,backgroundColor:`${e.violet600}14`,borderColor:`${e.violet600}2E`,borderWidth:1,paddingHorizontal:4.5,paddingVertical:1,borderRadius:3.5},actionCountChipText:{fontFamily:R.interBold,fontSize:8.5,lineHeight:11,color:e.violet600},actionPreviewRow:{flexDirection:"row",alignItems:"center",gap:4.5,minHeight:15},actionPreviewText:{fontFamily:Fe.select({ios:"Menlo",default:"monospace"}),fontSize:10,lineHeight:13,color:e.grayTextWeak,flex:1},actionPreviewEmptyText:{fontFamily:R.interRegular,fontSize:10,lineHeight:13,color:e.slate400,fontStyle:"italic",flex:1},cardFooterRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",height:18,minHeight:18,maxHeight:18,gap:6},footerLeft:{flexDirection:"row",alignItems:"center",gap:5,flex:1,minWidth:0,overflow:"hidden"},footerRight:{flexDirection:"row",alignItems:"center",gap:5,flexShrink:0},footerTimestampText:{fontFamily:R.interRegular,fontSize:10,lineHeight:13,color:e.slate400},callerChip:{flexDirection:"row",alignItems:"center",gap:2.5,backgroundColor:e.sky100,paddingHorizontal:4.5,paddingVertical:1,borderRadius:3,borderWidth:.5,borderColor:e.sky400,marginLeft:4},callerChipText:{fontFamily:R.interMedium,fontSize:8.5,lineHeight:11,color:e.sky600},metaStatChip:{flexDirection:"row",alignItems:"center",gap:3,backgroundColor:e.violetSoftBg,borderColor:e.violetSoftBorder,borderWidth:1,paddingHorizontal:5.5,paddingVertical:1.5,borderRadius:4},metaStatText:{fontFamily:R.interBold,color:e.violetSoftText,fontSize:9,lineHeight:12},waterfallContainer:{height:2.5,width:"100%",backgroundColor:e.graySurface,borderRadius:1.5,overflow:"hidden"},waterfallBar:{height:"100%",borderRadius:1.5},highlight:{backgroundColor:e.yellowHighlight,color:e.primaryBlack,borderRadius:2}});export default Pt;
|