react-native-inapp-inspector 2.3.25 → 2.4.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.
Files changed (123) hide show
  1. package/README.md +26 -5
  2. package/dist/commonjs/components/AnalyticsDetail.js +9 -6
  3. package/dist/commonjs/components/AppHeaderLogo.js +4 -6
  4. package/dist/commonjs/components/Inspector/AnalyticsFilterModal.js +1 -1
  5. package/dist/commonjs/components/Inspector/AnalyticsTab.js +11 -15
  6. package/dist/commonjs/components/Inspector/ConsoleTab.js +11 -14
  7. package/dist/commonjs/components/Inspector/CrashDetail.js +7 -6
  8. package/dist/commonjs/components/Inspector/CrashTab.js +14 -14
  9. package/dist/commonjs/components/Inspector/DebuggingTab.js +6 -6
  10. package/dist/commonjs/components/Inspector/DeviceInfoTab.js +77 -43
  11. package/dist/commonjs/components/Inspector/FabLauncher.js +8 -9
  12. package/dist/commonjs/components/Inspector/InspectorHeader.js +93 -70
  13. package/dist/commonjs/components/Inspector/LogDetail.js +10 -7
  14. package/dist/commonjs/components/Inspector/MainScreen.js +67 -29
  15. package/dist/commonjs/components/Inspector/NetworkDetail.js +29 -28
  16. package/dist/commonjs/components/Inspector/NetworkFilterModal.js +1 -1
  17. package/dist/commonjs/components/Inspector/NetworkTab.js +87 -85
  18. package/dist/commonjs/components/Inspector/PushCard.d.ts +4 -0
  19. package/dist/commonjs/components/Inspector/PushCard.js +89 -0
  20. package/dist/commonjs/components/Inspector/PushDetail.d.ts +4 -0
  21. package/dist/commonjs/components/Inspector/PushDetail.js +190 -0
  22. package/dist/commonjs/components/Inspector/PushTab.d.ts +3 -0
  23. package/dist/commonjs/components/Inspector/PushTab.js +45 -0
  24. package/dist/commonjs/components/Inspector/ReduxDetail.js +16 -13
  25. package/dist/commonjs/components/Inspector/ReduxTab.js +13 -23
  26. package/dist/commonjs/components/Inspector/SettingsPanel.js +253 -105
  27. package/dist/commonjs/components/Inspector/StorageTab.js +35 -35
  28. package/dist/commonjs/components/Inspector/TabBar.js +9 -8
  29. package/dist/commonjs/components/Inspector/UpdateAvailableModal.js +2 -2
  30. package/dist/commonjs/components/JsonViewer.js +77 -90
  31. package/dist/commonjs/components/ModuleErrorBoundary.d.ts +24 -0
  32. package/dist/commonjs/components/ModuleErrorBoundary.js +33 -0
  33. package/dist/commonjs/components/NetworkIcons.d.ts +3 -3
  34. package/dist/commonjs/components/NetworkIcons.js +10 -6
  35. package/dist/commonjs/components/SegmentedTabs.d.ts +4 -1
  36. package/dist/commonjs/components/SegmentedTabs.js +12 -8
  37. package/dist/commonjs/components/ShareButton.d.ts +11 -0
  38. package/dist/commonjs/components/ShareButton.js +6 -0
  39. package/dist/commonjs/constants/version.d.ts +1 -1
  40. package/dist/commonjs/constants/version.js +1 -1
  41. package/dist/commonjs/customHooks/crashHandler.js +4 -4
  42. package/dist/commonjs/customHooks/networkLogger.js +1 -1
  43. package/dist/commonjs/customHooks/pushNotificationLogger.d.ts +19 -0
  44. package/dist/commonjs/customHooks/pushNotificationLogger.js +1 -0
  45. package/dist/commonjs/helpers/memoryManager.d.ts +2 -1
  46. package/dist/commonjs/helpers/memoryManager.js +1 -1
  47. package/dist/commonjs/helpers/settingsStore.d.ts +1 -0
  48. package/dist/commonjs/helpers/settingsStore.js +1 -1
  49. package/dist/commonjs/helpers/shareFormatter.d.ts +13 -0
  50. package/dist/commonjs/helpers/shareFormatter.js +7 -0
  51. package/dist/commonjs/i18n/locales/en.json +1 -1
  52. package/dist/commonjs/index.d.ts +5 -2
  53. package/dist/commonjs/index.js +4 -4
  54. package/dist/commonjs/push.d.ts +4 -0
  55. package/dist/commonjs/push.js +1 -0
  56. package/dist/commonjs/types/enums.d.ts +30 -0
  57. package/dist/commonjs/types/enums.js +1 -1
  58. package/dist/commonjs/types/index.d.ts +10 -0
  59. package/dist/commonjs/types/interfaces.d.ts +63 -7
  60. package/dist/esm/components/AnalyticsDetail.js +28 -25
  61. package/dist/esm/components/AppHeaderLogo.js +5 -7
  62. package/dist/esm/components/Inspector/AnalyticsFilterModal.js +14 -14
  63. package/dist/esm/components/Inspector/AnalyticsTab.js +35 -39
  64. package/dist/esm/components/Inspector/ConsoleTab.js +50 -53
  65. package/dist/esm/components/Inspector/CrashDetail.js +11 -10
  66. package/dist/esm/components/Inspector/CrashTab.js +14 -14
  67. package/dist/esm/components/Inspector/DebuggingTab.js +10 -10
  68. package/dist/esm/components/Inspector/DeviceInfoTab.js +208 -174
  69. package/dist/esm/components/Inspector/FabLauncher.js +41 -42
  70. package/dist/esm/components/Inspector/InspectorHeader.js +138 -115
  71. package/dist/esm/components/Inspector/LogDetail.js +24 -21
  72. package/dist/esm/components/Inspector/MainScreen.js +100 -62
  73. package/dist/esm/components/Inspector/NetworkDetail.js +88 -87
  74. package/dist/esm/components/Inspector/NetworkFilterModal.js +8 -8
  75. package/dist/esm/components/Inspector/NetworkTab.js +136 -134
  76. package/dist/esm/components/Inspector/PushCard.d.ts +4 -0
  77. package/dist/esm/components/Inspector/PushCard.js +89 -0
  78. package/dist/esm/components/Inspector/PushDetail.d.ts +4 -0
  79. package/dist/esm/components/Inspector/PushDetail.js +190 -0
  80. package/dist/esm/components/Inspector/PushTab.d.ts +3 -0
  81. package/dist/esm/components/Inspector/PushTab.js +45 -0
  82. package/dist/esm/components/Inspector/ReduxDetail.js +40 -37
  83. package/dist/esm/components/Inspector/ReduxTab.js +103 -113
  84. package/dist/esm/components/Inspector/SettingsPanel.js +406 -258
  85. package/dist/esm/components/Inspector/StorageTab.js +158 -158
  86. package/dist/esm/components/Inspector/TabBar.js +28 -27
  87. package/dist/esm/components/Inspector/UpdateAvailableModal.js +1 -1
  88. package/dist/esm/components/JsonViewer.js +101 -114
  89. package/dist/esm/components/ModuleErrorBoundary.d.ts +24 -0
  90. package/dist/esm/components/ModuleErrorBoundary.js +33 -0
  91. package/dist/esm/components/NetworkIcons.d.ts +3 -3
  92. package/dist/esm/components/NetworkIcons.js +7 -3
  93. package/dist/esm/components/SegmentedTabs.d.ts +4 -1
  94. package/dist/esm/components/SegmentedTabs.js +12 -8
  95. package/dist/esm/components/ShareButton.d.ts +11 -0
  96. package/dist/esm/components/ShareButton.js +6 -0
  97. package/dist/esm/constants/version.d.ts +1 -1
  98. package/dist/esm/constants/version.js +1 -1
  99. package/dist/esm/customHooks/crashHandler.js +6 -6
  100. package/dist/esm/customHooks/networkLogger.js +1 -1
  101. package/dist/esm/customHooks/pushNotificationLogger.d.ts +19 -0
  102. package/dist/esm/customHooks/pushNotificationLogger.js +1 -0
  103. package/dist/esm/helpers/memoryManager.d.ts +2 -1
  104. package/dist/esm/helpers/memoryManager.js +1 -1
  105. package/dist/esm/helpers/settingsStore.d.ts +1 -0
  106. package/dist/esm/helpers/settingsStore.js +1 -1
  107. package/dist/esm/helpers/shareFormatter.d.ts +13 -0
  108. package/dist/esm/helpers/shareFormatter.js +7 -0
  109. package/dist/esm/i18n/locales/en.json +1 -1
  110. package/dist/esm/index.d.ts +5 -2
  111. package/dist/esm/index.js +7 -7
  112. package/dist/esm/push.d.ts +4 -0
  113. package/dist/esm/push.js +1 -0
  114. package/dist/esm/types/enums.d.ts +30 -0
  115. package/dist/esm/types/enums.js +1 -1
  116. package/dist/esm/types/index.d.ts +10 -0
  117. package/dist/esm/types/interfaces.d.ts +63 -7
  118. package/package.json +53 -10
  119. package/src/native/NativeInspector.ts +0 -1
  120. package/dist/commonjs/components/BrandSquareIcon.d.ts +0 -5
  121. package/dist/commonjs/components/BrandSquareIcon.js +0 -112
  122. package/dist/esm/components/BrandSquareIcon.d.ts +0 -5
  123. package/dist/esm/components/BrandSquareIcon.js +0 -112
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ declare const PushTab: React.MemoExoticComponent<() => React.JSX.Element>;
3
+ export default PushTab;
@@ -0,0 +1,45 @@
1
+ "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(l,e,r,n){n===void 0&&(n=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||("get"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(l,n,a)}):(function(l,e,r,n){n===void 0&&(n=r),l[n]=e[r]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(l,e){Object.defineProperty(l,"default",{enumerable:!0,value:e})}):function(l,e){l.default=e}),__importStar=this&&this.__importStar||(function(){var l=function(e){return l=Object.getOwnPropertyNames||function(r){var n=[];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(n[n.length]=a);return n},l(e)};return function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var n=l(e),a=0;a<n.length;a++)n[a]!=="default"&&__createBinding(r,e,n[a]);return __setModuleDefault(r,e),r}})(),__importDefault=this&&this.__importDefault||function(l){return l&&l.__esModule?l:{default:l}};Object.defineProperty(exports,"__esModule",{value:!0});const react_1=__importStar(require("react")),react_native_1=require("react-native"),InspectorContext_1=require("./InspectorContext"),PushCard_1=__importDefault(require("./PushCard")),TouchableScale_1=__importDefault(require("../TouchableScale")),AnimatedEntrance_1=__importDefault(require("../AnimatedEntrance")),EmptyState_1=__importDefault(require("../EmptyState")),EndOfListFooter_1=__importDefault(require("../EndOfListFooter")),styles_1=__importDefault(require("../../styles")),AppColors_1=require("../../styles/AppColors"),AppFonts_1=require("../../styles/AppFonts"),NetworkIcons_1=require("../NetworkIcons"),PushTab=react_1.default.memo(()=>{const{pushRecords:l,filteredPushRecords:e,pushSearch:r,setPushSearch:n,pushQuickFilter:a,setPushQuickFilter:u,setSelectedPush:d,clearAllPushLogs:g,simulatePush:p}=(0,InspectorContext_1.useInspector)(),y=(0,react_1.useRef)(null),[f,m]=(0,react_1.useState)(0),h=["salesforce","fcm","apns","deeplink","rich_media"],S=(0,react_1.useCallback)(()=>{const o=h[f%h.length];p(o),m(t=>t+1)},[f,p]),C=(0,react_1.useMemo)(()=>{let o=0,t=0,s=0;const i={};return l.forEach(c=>{const b=(c.appState||"").toLowerCase();b==="foreground"&&o++,b==="background"&&t++,c.action==="opened"&&s++;const _=(c.source||"other").toLowerCase();i[_]=(i[_]||0)+1}),{all:l.length,foreground:o,background:t,opened:s,sources:i}},[l]),w=(0,react_1.useMemo)(()=>{const o=[{id:"all",label:"All",color:AppColors_1.AppColors.purple,icon:t=><NetworkIcons_1.BellIcon size={12}color={t}/>},{id:"foreground",label:"Foreground",color:AppColors_1.AppColors.greenColor,icon:t=><NetworkIcons_1.SunIcon size={12}color={t}/>},{id:"background",label:"Background",color:AppColors_1.AppColors.darkOrange,icon:t=><NetworkIcons_1.MoonIcon size={12}color={t}/>},{id:"opened",label:"Opened",color:AppColors_1.AppColors.brandPurple,icon:t=><NetworkIcons_1.ExternalLinkIcon size={12}color={t}/>}];return Object.entries(C.sources).forEach(([t,s])=>{s>0&&t!=="all"&&o.push({id:`source:${t}`,label:t.toUpperCase(),color:t==="salesforce"?AppColors_1.AppColors.sky600:AppColors_1.AppColors.brandPurple,icon:i=><NetworkIcons_1.CloudPushIcon size={12}color={i}/>})}),o},[C]),P=(0,react_1.useCallback)(({item:o,index:t})=><AnimatedEntrance_1.default index={t}distance={8}>
2
+ <PushCard_1.default item={o}searchStr={r}onPress={()=>d(o)}/>
3
+ </AnimatedEntrance_1.default>,[r,d]),A=(0,react_1.useCallback)(o=>o.id||`push_${o.timestamp}`,[]);return<react_native_1.View style={{flex:1}}>
4
+
5
+ <react_native_1.View style={{marginTop:6}}>
6
+ <react_native_1.View style={styles_1.default.toolbarRow}>
7
+ <react_native_1.View style={[styles_1.default.searchContainer,{flex:1,marginRight:8,height:38}]}>
8
+ <react_native_1.View style={styles_1.default.searchIcon}>
9
+ <NetworkIcons_1.SearchIcon color={AppColors_1.AppColors.grayTextWeak}size={15}/>
10
+ </react_native_1.View>
11
+ <react_native_1.TextInput style={[styles_1.default.searchInput,{paddingVertical:0}]}placeholder="Search notifications..."placeholderTextColor={AppColors_1.AppColors.grayTextWeak}value={r}onChangeText={n}autoCapitalize="none"autoCorrect={!1}returnKeyType="search"clearButtonMode="while-editing"/>
12
+ {r.length>0&&react_native_1.Platform.OS==="android"&&<react_native_1.View style={{position:"absolute",right:8,top:0,bottom:0,justifyContent:"center"}}>
13
+ <react_native_1.Pressable onPress={()=>n("")}hitSlop={10}style={styles_1.default.clearBtn}>
14
+ <NetworkIcons_1.ClearIcon color={AppColors_1.AppColors.grayTextWeak}size={13}/>
15
+ </react_native_1.Pressable>
16
+ </react_native_1.View>}
17
+ </react_native_1.View>
18
+
19
+ <react_native_1.View style={styles_1.default.toolbarRight}>
20
+ <TouchableScale_1.default style={[styles_1.default.toolbarBtn,{backgroundColor:`${AppColors_1.AppColors.brandPurple}14`,borderColor:`${AppColors_1.AppColors.brandPurple}30`}]}onPress={S}hitSlop={6}accessibilityRole="button"accessibilityLabel="Simulate incoming push notification">
21
+ <NetworkIcons_1.BoltIcon color={AppColors_1.AppColors.brandPurple}size={15}/>
22
+ </TouchableScale_1.default>
23
+
24
+ {l.length>0&&<TouchableScale_1.default style={[styles_1.default.toolbarBtn,{borderColor:`${AppColors_1.AppColors.errorColor}38`,backgroundColor:`${AppColors_1.AppColors.errorColor}0F`}]}onPress={g}hitSlop={6}accessibilityRole="button"accessibilityLabel="Clear all push notification history">
25
+ <NetworkIcons_1.TrashIcon color={AppColors_1.AppColors.errorColor}size={15}/>
26
+ </TouchableScale_1.default>}
27
+ </react_native_1.View>
28
+ </react_native_1.View>
29
+ </react_native_1.View>
30
+
31
+
32
+ <react_native_1.View style={pushTabStyles.carouselWrapper}>
33
+ <react_native_1.ScrollView horizontal showsHorizontalScrollIndicator={!1}contentContainerStyle={pushTabStyles.carouselContent}>
34
+ {w.map(o=>{const t=a===o.id;return<TouchableScale_1.default key={o.id}onPress={()=>u(o.id)}style={[pushTabStyles.filterPill,t&&{backgroundColor:o.color,borderColor:o.color}]}>
35
+ {o.icon?o.icon(t?AppColors_1.AppColors.white:o.color):null}
36
+ <react_native_1.Text style={[pushTabStyles.filterPillText,t&&{color:AppColors_1.AppColors.white}]}>
37
+ {o.label}
38
+ </react_native_1.Text>
39
+ </TouchableScale_1.default>})}
40
+ </react_native_1.ScrollView>
41
+ </react_native_1.View>
42
+
43
+
44
+ <react_native_1.FlatList ref={y}data={e}renderItem={P}keyExtractor={A}contentContainerStyle={pushTabStyles.listContent}initialNumToRender={15}maxToRenderPerBatch={20}windowSize={11}removeClippedSubviews={react_native_1.Platform.OS==="android"}ListEmptyComponent={<EmptyState_1.default isSearch={!!(r||a!=="all")}searchQuery={r}customTitle={r||a!=="all"?"No matching push notifications":"No push notifications captured yet"}customSub={r||a!=="all"?"Try adjusting your search query or filter chips.":"Incoming or opened push payloads from any domain (Salesforce, FCM, APNs, etc.) will appear here automatically."}onClearSearch={()=>{n(""),u("all")}}showReload={!1}/>}ListFooterComponent={e.length>0?<EndOfListFooter_1.default totalCount={e.length}label="End of push notification history"/>:null}/>
45
+ </react_native_1.View>}),pushTabStyles=react_native_1.StyleSheet.create({carouselWrapper:{paddingVertical:6,borderBottomWidth:1,borderBottomColor:AppColors_1.AppColors.dividerColor,backgroundColor:AppColors_1.AppColors.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:AppColors_1.AppColors.grayBackground,borderWidth:1,borderColor:AppColors_1.AppColors.dividerColor},filterPillText:{fontSize:11,fontFamily:AppFonts_1.AppFonts.interMedium,color:AppColors_1.AppColors.primaryBlack},countBadge:{paddingHorizontal:5,paddingVertical:1,borderRadius:10},countBadgeText:{fontSize:9.5,fontFamily:AppFonts_1.AppFonts.interBold},listContent:{padding:8,paddingBottom:24}});PushTab.displayName="PushTab",exports.default=PushTab;
@@ -1,4 +1,4 @@
1
- "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(e,i,l,r){r===void 0&&(r=l);var t=Object.getOwnPropertyDescriptor(i,l);(!t||("get"in t?!i.__esModule:t.writable||t.configurable))&&(t={enumerable:!0,get:function(){return i[l]}}),Object.defineProperty(e,r,t)}):(function(e,i,l,r){r===void 0&&(r=l),e[r]=i[l]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(e,i){Object.defineProperty(e,"default",{enumerable:!0,value:i})}):function(e,i){e.default=i}),__importStar=this&&this.__importStar||(function(){var e=function(i){return e=Object.getOwnPropertyNames||function(l){var r=[];for(var t in l)Object.prototype.hasOwnProperty.call(l,t)&&(r[r.length]=t);return r},e(i)};return function(i){if(i&&i.__esModule)return i;var l={};if(i!=null)for(var r=e(i),t=0;t<r.length;t++)r[t]!=="default"&&__createBinding(l,i,r[t]);return __setModuleDefault(l,i),l}})(),__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const react_1=__importStar(require("react")),react_native_1=require("react-native"),i18n_1=require("../../i18n"),InspectorContext_1=require("./InspectorContext"),SegmentedTabs_1=__importDefault(require("../SegmentedTabs")),JsonViewer_1=__importDefault(require("../JsonViewer")),DiffViewer_1=__importDefault(require("../DiffViewer")),CopyButton_1=__importDefault(require("../CopyButton")),TouchableScale_1=__importDefault(require("../TouchableScale")),HighlightText_1=__importDefault(require("../HighlightText")),AnimatedEntrance_1=__importDefault(require("../AnimatedEntrance")),reduxLogger_1=require("../../customHooks/reduxLogger"),helpers_1=require("../../helpers"),settingsStore_1=require("../../helpers/settingsStore"),AppColors_1=require("../../styles/AppColors"),AppFonts_1=require("../../styles/AppFonts"),NetworkIcons_1=require("../NetworkIcons"),getOriginBadge=e=>{switch(e){case"saga":return{label:"SAGA",renderIcon:(i,l=9)=><NetworkIcons_1.BoltIcon color={i}size={l}/>,bg:AppColors_1.AppColors.purple100,text:AppColors_1.AppColors.brandPurple,border:AppColors_1.AppColors.purple200};case"thunk":return{label:"THUNK",renderIcon:(i,l=9)=><NetworkIcons_1.AtomIcon color={i}size={l}/>,bg:AppColors_1.AppColors.amber100,text:AppColors_1.AppColors.amber800Warm,border:AppColors_1.AppColors.amber200};case"ui":return{label:"UI",renderIcon:(i,l=9)=><NetworkIcons_1.ScreenIcon color={i}size={l}/>,bg:AppColors_1.AppColors.sky100,text:AppColors_1.AppColors.sky600,border:AppColors_1.AppColors.sky400};case"listener":return{label:"LISTENER",renderIcon:(i,l=9)=><NetworkIcons_1.ListenerIcon color={i}size={l}/>,bg:AppColors_1.AppColors.teal100,text:AppColors_1.AppColors.teal700,border:AppColors_1.AppColors.teal400};default:return{label:"DIRECT",renderIcon:(i,l=9)=><NetworkIcons_1.BoltIcon color={i}size={l}/>,bg:AppColors_1.AppColors.slate100,text:AppColors_1.AppColors.slate700,border:AppColors_1.AppColors.slate200}}},ReduxDetail=react_1.default.memo(()=>{const{t:e}=(0,i18n_1.useTranslation)(),{reduxState:i,reduxLastActionMap:l,selectedReduxSlice:r,selectedReduxAction:t,setSelectedReduxSlice:R}=(0,InspectorContext_1.useInspector)(),[d,S]=(0,react_1.useState)(""),[y,V]=(0,react_1.useState)("live"),[b,F]=(0,react_1.useState)("payload"),[k,B]=(0,react_1.useState)("raw"),[P,W]=(0,react_1.useState)(null),[_,T]=(0,react_1.useState)(!1),[A,g]=(0,react_1.useState)(null),h=(0,react_1.useMemo)(()=>(0,reduxLogger_1.getActionHistory)(),[l]),x=(0,react_1.useMemo)(()=>r?h.filter(a=>!a.affectedSlices||a.affectedSlices.length===0?!0:a.affectedSlices.includes(r)):h,[h,r]),I=(0,react_1.useMemo)(()=>{if(!d.trim())return x;const a=d.toLowerCase();return x.filter(p=>p.type.toLowerCase().includes(a)||p.callerFile&&p.callerFile.toLowerCase().includes(a)||p.payload&&JSON.stringify(p.payload).toLowerCase().includes(a))},[x,d]);(0,react_1.useEffect)(()=>{if(!r)return;async function a(){try{const p=(0,settingsStore_1.getCustomStorage)();if(!p){T(!1),g(null);return}let c=await p.getItem(`persist:${r}`);if(c){try{g(JSON.parse(c))}catch{g(c)}T(!0);return}let n=await p.getItem("persist:root");if(n){const o=JSON.parse(n);if(o&&o[r]!==void 0){const s=o[r];try{g(typeof s=="string"?JSON.parse(s):s)}catch{g(s)}T(!0);return}}}catch{}T(!1),g(null)}a()},[r]);const z=()=>{r&&react_native_1.Alert.alert("Clear Persisted State",`Are you sure you want to delete persisted storage for slice "${r}"?`,[{text:"Cancel",style:"cancel"},{text:"Delete",style:"destructive",onPress:async()=>{try{const a=(0,settingsStore_1.getCustomStorage)();if(!a)return;typeof a.removeItem=="function"?await a.removeItem(`persist:${r}`):await a.setItem(`persist:${r}`,""),T(!1),g(null),V("live"),react_native_1.Platform.OS==="android"?react_native_1.ToastAndroid.show("Persisted state cleared",react_native_1.ToastAndroid.SHORT):react_native_1.Alert.alert("Cleared","Persisted state has been cleared.")}catch{react_native_1.Alert.alert("Error","Failed to clear persisted state.")}}}])};if(r!=null){const a=i?.[r],p=a&&typeof a=="object"?Object.keys(a).length:typeof a<"u"?1:0,c=l[r],n=[{key:"live",label:e("redux.liveState","Live State"),icon:o=><NetworkIcons_1.LiveStateIcon color={o?AppColors_1.AppColors.white:AppColors_1.AppColors.grayText}size={12}/>},{key:"timeline",label:`${e("redux.timeline","Timeline")} (${x.length})`,icon:o=><NetworkIcons_1.TimelineIcon color={o?AppColors_1.AppColors.white:AppColors_1.AppColors.grayText}size={12}/>},{key:"persisted",label:_?e("redux.persisted","Persisted"):e("redux.storage","Storage"),icon:o=><NetworkIcons_1.StorageIcon color={o?AppColors_1.AppColors.white:AppColors_1.AppColors.grayText}size={12}/>},{key:"metadata",label:e("redux.metadata","Metadata"),icon:o=><NetworkIcons_1.MetadataIcon color={o?AppColors_1.AppColors.white:AppColors_1.AppColors.grayText}size={12}/>}];return<react_native_1.View style={{flex:1,backgroundColor:AppColors_1.AppColors.grayBackground}}>
1
+ "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(e,i,l,r){r===void 0&&(r=l);var t=Object.getOwnPropertyDescriptor(i,l);(!t||("get"in t?!i.__esModule:t.writable||t.configurable))&&(t={enumerable:!0,get:function(){return i[l]}}),Object.defineProperty(e,r,t)}):(function(e,i,l,r){r===void 0&&(r=l),e[r]=i[l]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(e,i){Object.defineProperty(e,"default",{enumerable:!0,value:i})}):function(e,i){e.default=i}),__importStar=this&&this.__importStar||(function(){var e=function(i){return e=Object.getOwnPropertyNames||function(l){var r=[];for(var t in l)Object.prototype.hasOwnProperty.call(l,t)&&(r[r.length]=t);return r},e(i)};return function(i){if(i&&i.__esModule)return i;var l={};if(i!=null)for(var r=e(i),t=0;t<r.length;t++)r[t]!=="default"&&__createBinding(l,i,r[t]);return __setModuleDefault(l,i),l}})(),__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0});const react_1=__importStar(require("react")),react_native_1=require("react-native"),i18n_1=require("../../i18n"),InspectorContext_1=require("./InspectorContext"),SegmentedTabs_1=__importDefault(require("../SegmentedTabs")),JsonViewer_1=__importDefault(require("../JsonViewer")),DiffViewer_1=__importDefault(require("../DiffViewer")),CopyButton_1=__importDefault(require("../CopyButton")),ShareButton_1=__importDefault(require("../ShareButton")),TouchableScale_1=__importDefault(require("../TouchableScale")),HighlightText_1=__importDefault(require("../HighlightText")),AnimatedEntrance_1=__importDefault(require("../AnimatedEntrance")),reduxLogger_1=require("../../customHooks/reduxLogger"),helpers_1=require("../../helpers"),shareFormatter_1=require("../../helpers/shareFormatter"),settingsStore_1=require("../../helpers/settingsStore"),AppColors_1=require("../../styles/AppColors"),AppFonts_1=require("../../styles/AppFonts"),NetworkIcons_1=require("../NetworkIcons"),getOriginBadge=e=>{switch(e){case"saga":return{label:"SAGA",renderIcon:(i,l=9)=><NetworkIcons_1.AtomIcon color={i}size={l}/>,bg:AppColors_1.AppColors.purple100,text:AppColors_1.AppColors.brandPurple,border:AppColors_1.AppColors.purple200};case"thunk":return{label:"THUNK",renderIcon:(i,l=9)=><NetworkIcons_1.BoltIcon color={i}size={l}/>,bg:AppColors_1.AppColors.amber100,text:AppColors_1.AppColors.amber800Warm,border:AppColors_1.AppColors.amber200};case"epic":return{label:"EPIC",renderIcon:(i,l=9)=><NetworkIcons_1.TerminalIcon color={i}size={l}/>,bg:AppColors_1.AppColors.sky100,text:AppColors_1.AppColors.sky600,border:AppColors_1.AppColors.sky400};case"listener":return{label:"LISTENER",renderIcon:(i,l=9)=><NetworkIcons_1.ListenerIcon color={i}size={l}/>,bg:AppColors_1.AppColors.teal100,text:AppColors_1.AppColors.teal700,border:AppColors_1.AppColors.teal400};case"component":return{label:"UI DISPATCH",renderIcon:(i,l=9)=><NetworkIcons_1.ScreenIcon color={i}size={l}/>,bg:AppColors_1.AppColors.sky100,text:AppColors_1.AppColors.sky600,border:AppColors_1.AppColors.sky400};default:return{label:"DISPATCH",renderIcon:(i,l=9)=><NetworkIcons_1.BoltIcon color={i}size={l}/>,bg:AppColors_1.AppColors.slate100,text:AppColors_1.AppColors.slate700,border:AppColors_1.AppColors.slate200}}},ReduxDetail=react_1.default.memo(()=>{const{t:e}=(0,i18n_1.useTranslation)(),{reduxState:i,reduxLastActionMap:l,selectedReduxSlice:r,selectedReduxAction:t}=(0,InspectorContext_1.useInspector)(),[d,S]=(0,react_1.useState)(""),[y,V]=(0,react_1.useState)("live"),[b,F]=(0,react_1.useState)("payload"),[k,B]=(0,react_1.useState)("raw"),[P,W]=(0,react_1.useState)(null),[_,A]=(0,react_1.useState)(!1),[T,g]=(0,react_1.useState)(null),h=(0,react_1.useMemo)(()=>(0,reduxLogger_1.getActionHistory)(),[l]),f=(0,react_1.useMemo)(()=>r?h.filter(a=>!a.affectedSlices||a.affectedSlices.length===0?!0:a.affectedSlices.includes(r)):h,[h,r]),I=(0,react_1.useMemo)(()=>{if(!d.trim())return f;const a=d.toLowerCase();return f.filter(p=>p.type.toLowerCase().includes(a)||p.callerFile&&p.callerFile.toLowerCase().includes(a)||p.payload&&JSON.stringify(p.payload).toLowerCase().includes(a))},[f,d]);(0,react_1.useEffect)(()=>{if(!r)return;async function a(){try{const p=(0,settingsStore_1.getCustomStorage)();if(!p){A(!1),g(null);return}let c=await p.getItem(`persist:${r}`);if(c){try{g(JSON.parse(c))}catch{g(c)}A(!0);return}let n=await p.getItem("persist:root");if(n){const o=JSON.parse(n);if(o&&o[r]!==void 0){const s=o[r];try{g(typeof s=="string"?JSON.parse(s):s)}catch{g(s)}A(!0);return}}}catch{}A(!1),g(null)}a()},[r]);const z=()=>{r&&react_native_1.Alert.alert("Clear Persisted State",`Are you sure you want to delete persisted storage for slice "${r}"?`,[{text:"Cancel",style:"cancel"},{text:"Delete",style:"destructive",onPress:async()=>{try{const a=(0,settingsStore_1.getCustomStorage)();if(!a)return;typeof a.removeItem=="function"?await a.removeItem(`persist:${r}`):await a.setItem(`persist:${r}`,""),A(!1),g(null),V("live"),react_native_1.Platform.OS==="android"?react_native_1.ToastAndroid.show("Persisted state cleared",react_native_1.ToastAndroid.SHORT):react_native_1.Alert.alert("Cleared","Persisted state has been cleared.")}catch{react_native_1.Alert.alert("Error","Failed to clear persisted state.")}}}])};if(r!=null){const a=i?.[r],p=a&&typeof a=="object"?Object.keys(a).length:typeof a<"u"?1:0,c=l[r],n=[{key:"live",label:e("redux.liveState","Live State"),icon:o=><NetworkIcons_1.LiveStateIcon color={o?AppColors_1.AppColors.white:AppColors_1.AppColors.grayText}size={12}/>},{key:"timeline",label:`${e("redux.timeline","Timeline")} (${f.length})`,icon:o=><NetworkIcons_1.TimelineIcon color={o?AppColors_1.AppColors.white:AppColors_1.AppColors.grayText}size={12}/>},{key:"persisted",label:_?e("redux.persisted","Persisted"):e("redux.storage","Storage"),icon:o=><NetworkIcons_1.StorageIcon color={o?AppColors_1.AppColors.white:AppColors_1.AppColors.grayText}size={12}/>},{key:"metadata",label:e("redux.metadata","Metadata"),icon:o=><NetworkIcons_1.MetadataIcon color={o?AppColors_1.AppColors.white:AppColors_1.AppColors.grayText}size={12}/>}];return<react_native_1.View style={{flex:1,backgroundColor:AppColors_1.AppColors.grayBackground}}>
2
2
 
3
3
  <react_native_1.View style={reduxDetailStyles.infoBar}>
4
4
  <react_native_1.View style={reduxDetailStyles.infoTopRow}>
@@ -30,7 +30,7 @@
30
30
  </react_native_1.View>
31
31
 
32
32
 
33
- <CopyButton_1.default value={()=>y==="live"?a:A}label={e("redux.sliceJson","Slice JSON")}/>
33
+ <CopyButton_1.default value={()=>y==="live"?a:T}label={e("redux.sliceJson","Slice JSON")}/>
34
34
  </react_native_1.View>
35
35
 
36
36
 
@@ -58,7 +58,7 @@
58
58
  {e("redux.timeline","Timeline")}:
59
59
  </react_native_1.Text>
60
60
  <react_native_1.Text style={[reduxDetailStyles.statValue,{color:AppColors_1.AppColors.brandPurple}]}>
61
- {x.length}
61
+ {f.length}
62
62
  </react_native_1.Text>
63
63
  </react_native_1.View>
64
64
  {c&&<react_native_1.View style={[reduxDetailStyles.statPill,{backgroundColor:AppColors_1.AppColors.amber100,borderColor:AppColors_1.AppColors.amber200,flexShrink:1,maxWidth:160}]}>
@@ -92,7 +92,7 @@
92
92
  <react_native_1.Text style={reduxDetailStyles.emptyBoxText}>
93
93
  {d.trim()?"No actions matching your search query.":"No dispatched actions recorded for this slice yet."}
94
94
  </react_native_1.Text>
95
- </react_native_1.View>:I.map((o,s)=>{const C=P===o.id,m=getOriginBadge(o.originType),D=o.callerFile?o.callerFile.split("/").pop():null;return<AnimatedEntrance_1.default key={o.id}index={s}distance={6}>
95
+ </react_native_1.View>:I.map((o,s)=>{const C=P===o.id,x=getOriginBadge(o.originType),D=o.callerFile?o.callerFile.split("/").pop():null;return<AnimatedEntrance_1.default key={o.id}index={s}distance={6}>
96
96
  <TouchableScale_1.default onPress={()=>W(C?null:o.id)}style={reduxDetailStyles.timelineCard}>
97
97
  <react_native_1.View style={reduxDetailStyles.timelineHeader}>
98
98
  <react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:6,flex:1,minWidth:0,flexWrap:"wrap"}}>
@@ -102,10 +102,10 @@
102
102
  </react_native_1.Text>
103
103
  </react_native_1.View>
104
104
 
105
- <react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:3,backgroundColor:m.bg,paddingHorizontal:5,paddingVertical:2,borderRadius:4,borderWidth:1,borderColor:m.border}}>
106
- {m.renderIcon(m.text,8.5)}
107
- <react_native_1.Text style={{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:8.5,color:m.text,letterSpacing:.3}}>
108
- {m.label}
105
+ <react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:3,backgroundColor:x.bg,paddingHorizontal:5,paddingVertical:2,borderRadius:4,borderWidth:1,borderColor:x.border}}>
106
+ {x.renderIcon(x.text,8.5)}
107
+ <react_native_1.Text style={{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:8.5,color:x.text,letterSpacing:.3}}>
108
+ {x.label}
109
109
  </react_native_1.Text>
110
110
  </react_native_1.View>
111
111
 
@@ -149,7 +149,7 @@
149
149
  </react_native_1.Text>
150
150
  <react_native_1.View style={{backgroundColor:AppColors_1.AppColors.grayBackground,borderRadius:8,padding:8,borderWidth:1,borderColor:AppColors_1.AppColors.dividerColor,gap:4}}>
151
151
  {o.stack.split(`
152
- `).map(f=>f.trim()).filter(f=>f.length>0&&!f.includes("reduxLogger")&&!f.includes("inspectorReduxMiddleware")).slice(0,8).map((f,v)=>{const u=(0,helpers_1.parseStackLine)(f,v===0),w=u.frameType==="app";return<react_native_1.Pressable key={v}onPress={()=>{u.fileName!=="Unknown"&&(0,helpers_1.openInVSCode)(u.fullPath||u.fileName,u.lineNumber,u.columnNumber)}}style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingVertical:3,borderBottomWidth:v<7?.5:0,borderBottomColor:AppColors_1.AppColors.dividerColor}}>
152
+ `).map(m=>m.trim()).filter(m=>m.length>0&&!m.includes("reduxLogger")&&!m.includes("inspectorReduxMiddleware")).slice(0,8).map((m,v)=>{const u=(0,helpers_1.parseStackLine)(m,v===0),w=u.frameType==="app";return<react_native_1.Pressable key={v}onPress={()=>{u.fileName!=="Unknown"&&(0,helpers_1.openInVSCode)(u.fullPath||u.fileName,u.lineNumber,u.columnNumber)}}style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingVertical:3,borderBottomWidth:v<7?.5:0,borderBottomColor:AppColors_1.AppColors.dividerColor}}>
153
153
  <react_native_1.View style={{flex:1,minWidth:0}}>
154
154
  <react_native_1.Text style={{fontFamily:w?AppFonts_1.AppFonts.interBold:AppFonts_1.AppFonts.interRegular,fontSize:9.5,color:w?AppColors_1.AppColors.primaryBlack:AppColors_1.AppColors.grayTextWeak}}numberOfLines={1}>
155
155
  {u.functionName||"anonymous"}
@@ -186,7 +186,7 @@
186
186
  </AnimatedEntrance_1.default>})}
187
187
  </react_native_1.ScrollView>:y==="metadata"?<react_native_1.ScrollView style={{flex:1}}contentContainerStyle={{padding:12,paddingBottom:40}}keyboardShouldPersistTaps="handled">
188
188
  <react_native_1.View style={reduxDetailStyles.metadataCard}>
189
- {[{label:"Slice Name",value:r},{label:"Root Keys Count",value:`${p} keys`},{label:"In-Memory State Size",value:(0,helpers_1.getSize)(a)},{label:"Persistence Status",value:_?`Persisted (${(0,helpers_1.getSize)(A)})`:"Not Persisted (In-Memory)"},{label:"Dispatched Actions History",value:`${x.length} recorded actions`},{label:"Last Dispatched Action",value:c?c.type:"None"},{label:"Last Action Timestamp",value:c?c.timestamp:"Initial"}].map((o,s)=><react_native_1.View key={s}style={[reduxDetailStyles.metaRow,s===6&&{borderBottomWidth:0}]}>
189
+ {[{label:"Slice Name",value:r},{label:"Root Keys Count",value:`${p} keys`},{label:"In-Memory State Size",value:(0,helpers_1.getSize)(a)},{label:"Persistence Status",value:_?`Persisted (${(0,helpers_1.getSize)(T)})`:"Not Persisted (In-Memory)"},{label:"Dispatched Actions History",value:`${f.length} recorded actions`},{label:"Last Dispatched Action",value:c?c.type:"None"},{label:"Last Action Timestamp",value:c?c.timestamp:"Initial"}].map((o,s)=><react_native_1.View key={s}style={[reduxDetailStyles.metaRow,s===6&&{borderBottomWidth:0}]}>
190
190
  <react_native_1.Text style={reduxDetailStyles.metaLabel}>{o.label}</react_native_1.Text>
191
191
  <react_native_1.Text style={reduxDetailStyles.metaValue}selectable numberOfLines={2}>
192
192
  {o.value}
@@ -207,7 +207,7 @@
207
207
  <react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:6}}>
208
208
  <NetworkIcons_1.StorageIcon color={AppColors_1.AppColors.emerald700}size={14}/>
209
209
  <react_native_1.Text style={reduxDetailStyles.persistedInfoTitle}>
210
- Stored in persistent storage ({(0,helpers_1.getSize)(A)})
210
+ Stored in persistent storage ({(0,helpers_1.getSize)(T)})
211
211
  </react_native_1.Text>
212
212
  </react_native_1.View>
213
213
  <react_native_1.TouchableOpacity style={reduxDetailStyles.clearPersistMiniBtn}onPress={z}>
@@ -219,7 +219,7 @@
219
219
  </react_native_1.View>
220
220
  </react_native_1.View>
221
221
  <react_native_1.View style={{flex:1,marginTop:8}}>
222
- <JsonViewer_1.default data={A}search={d}forceOpen={d.length>0?!0:void 0}mode={k}onModeChange={B}fullHeight={!0}wrap={!0}/>
222
+ <JsonViewer_1.default data={T}search={d}forceOpen={d.length>0?!0:void 0}mode={k}onModeChange={B}fullHeight={!0}wrap={!0}/>
223
223
  </react_native_1.View>
224
224
  </react_native_1.View>:<react_native_1.View style={reduxDetailStyles.emptyBox}>
225
225
  <NetworkIcons_1.StorageIcon color={AppColors_1.AppColors.grayTextWeak}size={32}/>
@@ -263,7 +263,10 @@
263
263
  </react_native_1.View>
264
264
 
265
265
 
266
- <CopyButton_1.default value={()=>t}label="Copy Action"/>
266
+ <react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:6}}>
267
+ <ShareButton_1.default onShare={()=>(0,shareFormatter_1.shareReduxReport)(t)}/>
268
+ <CopyButton_1.default value={()=>t}label="Copy Action"/>
269
+ </react_native_1.View>
267
270
  </react_native_1.View>
268
271
 
269
272
 
@@ -1,4 +1,4 @@
1
- "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(i,t,a,r){r===void 0&&(r=a);var n=Object.getOwnPropertyDescriptor(t,a);(!n||("get"in n?!t.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return t[a]}}),Object.defineProperty(i,r,n)}):(function(i,t,a,r){r===void 0&&(r=a),i[r]=t[a]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(i,t){Object.defineProperty(i,"default",{enumerable:!0,value:t})}):function(i,t){i.default=t}),__importStar=this&&this.__importStar||(function(){var i=function(t){return i=Object.getOwnPropertyNames||function(a){var r=[];for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(r[r.length]=n);return r},i(t)};return function(t){if(t&&t.__esModule)return t;var a={};if(t!=null)for(var r=i(t),n=0;n<r.length;n++)r[n]!=="default"&&__createBinding(a,t,r[n]);return __setModuleDefault(a,t),a}})(),__importDefault=this&&this.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(exports,"__esModule",{value:!0});const react_1=__importStar(require("react")),react_native_1=require("react-native"),i18n_1=require("../../i18n"),InspectorContext_1=require("./InspectorContext"),TouchableScale_1=__importDefault(require("../TouchableScale")),AnimatedEntrance_1=__importDefault(require("../AnimatedEntrance")),EmptyState_1=__importDefault(require("../EmptyState")),EndOfListFooter_1=__importDefault(require("../EndOfListFooter")),HighlightText_1=__importDefault(require("../HighlightText")),helpers_1=require("../../helpers"),styles_1=__importDefault(require("../../styles")),AppColors_1=require("../../styles/AppColors"),AppFonts_1=require("../../styles/AppFonts"),reduxLogger_1=require("../../customHooks/reduxLogger"),NetworkIcons_1=require("../NetworkIcons"),getOriginBadge=i=>{switch(i){case"saga":return{label:"SAGA",renderIcon:(t,a=9)=><NetworkIcons_1.BoltIcon color={t}size={a}/>,bg:AppColors_1.AppColors.purple100,text:AppColors_1.AppColors.brandPurple,border:AppColors_1.AppColors.purple200};case"thunk":return{label:"THUNK",renderIcon:(t,a=9)=><NetworkIcons_1.AtomIcon color={t}size={a}/>,bg:AppColors_1.AppColors.amber100,text:AppColors_1.AppColors.amber800Warm,border:AppColors_1.AppColors.amber200};case"ui":return{label:"UI",renderIcon:(t,a=9)=><NetworkIcons_1.ScreenIcon color={t}size={a}/>,bg:AppColors_1.AppColors.sky100,text:AppColors_1.AppColors.sky600,border:AppColors_1.AppColors.sky400};case"listener":return{label:"LISTENER",renderIcon:(t,a=9)=><NetworkIcons_1.ListenerIcon color={t}size={a}/>,bg:AppColors_1.AppColors.teal100,text:AppColors_1.AppColors.teal700,border:AppColors_1.AppColors.teal400};default:return{label:"DIRECT",renderIcon:(t,a=9)=><NetworkIcons_1.BoltIcon color={t}size={a}/>,bg:AppColors_1.AppColors.slate100,text:AppColors_1.AppColors.slate700,border:AppColors_1.AppColors.slate200}}},ReduxTab=react_1.default.memo(()=>{const{t:i}=(0,i18n_1.useTranslation)(),{reduxState:t,reduxLastActionMap:a,reduxSearch:r,setReduxSearch:n,setSelectedReduxSlice:_}=(0,InspectorContext_1.useInspector)(),V=(0,react_1.useRef)(null),[m,I]=(0,react_1.useState)(100),[y,R]=(0,react_1.useState)("latest"),[A,z]=(0,react_1.useState)(!(0,reduxLogger_1.getReduxAutoRefresh)()),B=(0,react_1.useCallback)(()=>{z(e=>{const l=!e;return(0,reduxLogger_1.setReduxAutoRefresh)(!l),l})},[]),k=(0,react_1.useMemo)(()=>(0,helpers_1.getSize)(t),[t]),T=(0,react_1.useMemo)(()=>(0,reduxLogger_1.getActionHistory)(),[a]),w=(0,react_1.useMemo)(()=>!t||typeof t!="object"?[]:Object.keys(t).map(l=>{const o=t[l],p=Array.isArray(o),b=o&&typeof o=="object";let g="Primitive",d=0;p?(d=o.length,g=`Array [${d}]`):b?(d=Object.keys(o).length,g=`Object {${d}}`):typeof o<"u"&&(d=1,g=typeof o);let C="live",c;b&&(o.loading===!0||o.isLoading===!0||o.status==="loading"||o.status==="pending"?(C="loading",c="Loading"):o.error||o.hasError||o.status==="error"||o.status==="failed"?(C="error",c=typeof o.error=="string"?o.error:"Error"):d===0&&(C="empty",c="Empty"));const s=a[l],H=s?.updatedAt||0,P=T.filter(f=>!f.affectedSlices||f.affectedSlices.length===0?!0:f.affectedSlices.includes(l)).length;let v;if(s){let f;if(s.payload!==void 0&&s.payload!==null)try{if(typeof s.payload=="object"){const S=Object.keys(s.payload);f=`{ ${S.slice(0,3).join(", ")}${S.length>3?"...":""} }`}else f=String(s.payload)}catch{}v={type:s.type,timestamp:s.timestamp,updatedAt:s.updatedAt,payloadPreview:f,originType:s.originType,callerFile:s.callerFile,callerLine:s.callerLine,callerCol:s.callerCol}}return{id:`slice-${l}`,name:l,keysCount:d,sizeStr:(0,helpers_1.getSize)(o),typeLabel:g,status:C,statusMessage:c,timelineCount:P,lastAction:v,updatedAt:H}}),[t,a,T]),u=(0,react_1.useMemo)(()=>{let e=w;if(r&&r.trim().length>0){const l=r.trim().toLowerCase().split(/\s+/).filter(Boolean);e=e.filter(o=>{const p=t?t[o.name]:null,b=[o.name||"",o.lastAction?.type||"",o.lastAction?.payloadPreview||"",o.lastAction?.originType||"",o.status||"",o.statusMessage||"",p?typeof p=="string"?p:JSON.stringify(p):""].join(" ").toLowerCase();return l.every(g=>b.includes(g))})}return[...e].sort((l,o)=>y==="latest"&&o.updatedAt!==l.updatedAt?o.updatedAt-l.updatedAt:l.name.localeCompare(o.name))},[w,r,y,t]),x=(0,react_1.useMemo)(()=>u.slice(0,m),[u,m]),h=(0,react_1.useMemo)(()=>{const e=Object.values(a);return e.length===0?null:e.reduce((l,o)=>l?(o.updatedAt||0)>(l.updatedAt||0)?o:l:o,null)},[a]),F=(0,react_1.useCallback)(({item:e,index:l})=>{const o=e.updatedAt>0&&Date.now()-e.updatedAt<5e3,p=e.status==="error"?AppColors_1.AppColors.errorColor:e.status==="loading"?AppColors_1.AppColors.warningIconGold:e.status==="empty"?AppColors_1.AppColors.grayTextWeak:AppColors_1.AppColors.greenColor,b=e.status==="error"?AppColors_1.AppColors.red100:e.status==="loading"?AppColors_1.AppColors.amber100:e.status==="empty"?AppColors_1.AppColors.grayBackground:AppColors_1.AppColors.emeraldBg,g=e.status==="error"?AppColors_1.AppColors.errorBorder:e.status==="loading"?AppColors_1.AppColors.amber200:e.status==="empty"?AppColors_1.AppColors.dividerColor:AppColors_1.AppColors.emeraldBorder,d=e.status==="error"?AppColors_1.AppColors.red600:e.status==="loading"?AppColors_1.AppColors.amber800Warm:e.status==="empty"?AppColors_1.AppColors.grayTextWeak:AppColors_1.AppColors.emerald700,C=e.lastAction?.callerFile?(0,helpers_1.getCleanCallerDisplay)(e.lastAction.callerFile):null;return<AnimatedEntrance_1.default index={l}distance={8}>
1
+ "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(i,t,a,r){r===void 0&&(r=a);var n=Object.getOwnPropertyDescriptor(t,a);(!n||("get"in n?!t.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return t[a]}}),Object.defineProperty(i,r,n)}):(function(i,t,a,r){r===void 0&&(r=a),i[r]=t[a]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(i,t){Object.defineProperty(i,"default",{enumerable:!0,value:t})}):function(i,t){i.default=t}),__importStar=this&&this.__importStar||(function(){var i=function(t){return i=Object.getOwnPropertyNames||function(a){var r=[];for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(r[r.length]=n);return r},i(t)};return function(t){if(t&&t.__esModule)return t;var a={};if(t!=null)for(var r=i(t),n=0;n<r.length;n++)r[n]!=="default"&&__createBinding(a,t,r[n]);return __setModuleDefault(a,t),a}})(),__importDefault=this&&this.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(exports,"__esModule",{value:!0});const react_1=__importStar(require("react")),react_native_1=require("react-native"),i18n_1=require("../../i18n"),InspectorContext_1=require("./InspectorContext"),TouchableScale_1=__importDefault(require("../TouchableScale")),AnimatedEntrance_1=__importDefault(require("../AnimatedEntrance")),EmptyState_1=__importDefault(require("../EmptyState")),EndOfListFooter_1=__importDefault(require("../EndOfListFooter")),HighlightText_1=__importDefault(require("../HighlightText")),helpers_1=require("../../helpers"),styles_1=__importDefault(require("../../styles")),AppColors_1=require("../../styles/AppColors"),AppFonts_1=require("../../styles/AppFonts"),reduxLogger_1=require("../../customHooks/reduxLogger"),NetworkIcons_1=require("../NetworkIcons"),getOriginBadge=i=>{switch(i){case"saga":return{label:"SAGA",renderIcon:(t,a=9)=><NetworkIcons_1.BoltIcon color={t}size={a}/>,bg:AppColors_1.AppColors.purple100,text:AppColors_1.AppColors.brandPurple,border:AppColors_1.AppColors.purple200};case"thunk":return{label:"THUNK",renderIcon:(t,a=9)=><NetworkIcons_1.AtomIcon color={t}size={a}/>,bg:AppColors_1.AppColors.amber100,text:AppColors_1.AppColors.amber800Warm,border:AppColors_1.AppColors.amber200};case"ui":return{label:"UI",renderIcon:(t,a=9)=><NetworkIcons_1.ScreenIcon color={t}size={a}/>,bg:AppColors_1.AppColors.sky100,text:AppColors_1.AppColors.sky600,border:AppColors_1.AppColors.sky400};case"listener":return{label:"LISTENER",renderIcon:(t,a=9)=><NetworkIcons_1.ListenerIcon color={t}size={a}/>,bg:AppColors_1.AppColors.teal100,text:AppColors_1.AppColors.teal700,border:AppColors_1.AppColors.teal400};default:return{label:"DIRECT",renderIcon:(t,a=9)=><NetworkIcons_1.BoltIcon color={t}size={a}/>,bg:AppColors_1.AppColors.slate100,text:AppColors_1.AppColors.slate700,border:AppColors_1.AppColors.slate200}}},ReduxTab=react_1.default.memo(()=>{const{t:i}=(0,i18n_1.useTranslation)(),{reduxState:t,reduxLastActionMap:a,reduxSearch:r,setReduxSearch:n,setSelectedReduxSlice:_}=(0,InspectorContext_1.useInspector)(),S=(0,react_1.useRef)(null),[x,V]=(0,react_1.useState)(100),[y,I]=(0,react_1.useState)("latest"),z=(0,react_1.useMemo)(()=>(0,helpers_1.getSize)(t),[t]),m=(0,react_1.useMemo)(()=>(0,reduxLogger_1.getActionHistory)(),[a]),A=(0,react_1.useMemo)(()=>!t||typeof t!="object"?[]:Object.keys(t).map(l=>{const o=t[l],p=Array.isArray(o),w=o&&typeof o=="object";let g="Primitive",d=0;p?(d=o.length,g=`Array [${d}]`):w?(d=Object.keys(o).length,g=`Object {${d}}`):typeof o<"u"&&(d=1,g=typeof o);let C="live",c;w&&(o.loading===!0||o.isLoading===!0||o.status==="loading"||o.status==="pending"?(C="loading",c="Loading"):o.error||o.hasError||o.status==="error"||o.status==="failed"?(C="error",c=typeof o.error=="string"?o.error:"Error"):d===0&&(C="empty",c="Empty"));const s=a[l],B=s?.updatedAt||0,F=m.filter(f=>!f.affectedSlices||f.affectedSlices.length===0?!0:f.affectedSlices.includes(l)).length;let T;if(s){let f;if(s.payload!==void 0&&s.payload!==null)try{if(typeof s.payload=="object"){const v=Object.keys(s.payload);f=`{ ${v.slice(0,3).join(", ")}${v.length>3?"...":""} }`}else f=String(s.payload)}catch{}T={type:s.type,timestamp:s.timestamp,updatedAt:s.updatedAt,payloadPreview:f,originType:s.originType,callerFile:s.callerFile,callerLine:s.callerLine,callerCol:s.callerCol}}return{id:`slice-${l}`,name:l,keysCount:d,sizeStr:(0,helpers_1.getSize)(o),typeLabel:g,status:C,statusMessage:c,timelineCount:F,lastAction:T,updatedAt:B}}),[t,a,m]),u=(0,react_1.useMemo)(()=>{let e=A;if(r&&r.trim().length>0){const l=r.trim().toLowerCase().split(/\s+/).filter(Boolean);e=e.filter(o=>{const p=t?t[o.name]:null,w=[o.name||"",o.lastAction?.type||"",o.lastAction?.payloadPreview||"",o.lastAction?.originType||"",o.status||"",o.statusMessage||"",p?typeof p=="string"?p:JSON.stringify(p):""].join(" ").toLowerCase();return l.every(g=>w.includes(g))})}return[...e].sort((l,o)=>y==="latest"&&o.updatedAt!==l.updatedAt?o.updatedAt-l.updatedAt:l.name.localeCompare(o.name))},[A,r,y,t]),b=(0,react_1.useMemo)(()=>u.slice(0,x),[u,x]),h=(0,react_1.useMemo)(()=>{const e=Object.values(a);return e.length===0?null:e.reduce((l,o)=>l?(o.updatedAt||0)>(l.updatedAt||0)?o:l:o,null)},[a]),R=(0,react_1.useCallback)(({item:e,index:l})=>{const o=e.updatedAt>0&&Date.now()-e.updatedAt<5e3,p=e.status==="error"?AppColors_1.AppColors.errorColor:e.status==="loading"?AppColors_1.AppColors.warningIconGold:e.status==="empty"?AppColors_1.AppColors.grayTextWeak:AppColors_1.AppColors.greenColor,w=e.status==="error"?AppColors_1.AppColors.red100:e.status==="loading"?AppColors_1.AppColors.amber100:e.status==="empty"?AppColors_1.AppColors.grayBackground:AppColors_1.AppColors.emeraldBg,g=e.status==="error"?AppColors_1.AppColors.errorBorder:e.status==="loading"?AppColors_1.AppColors.amber200:e.status==="empty"?AppColors_1.AppColors.dividerColor:AppColors_1.AppColors.emeraldBorder,d=e.status==="error"?AppColors_1.AppColors.red600:e.status==="loading"?AppColors_1.AppColors.amber800Warm:e.status==="empty"?AppColors_1.AppColors.grayTextWeak:AppColors_1.AppColors.emerald700,C=e.lastAction?.callerFile?(0,helpers_1.getCleanCallerDisplay)(e.lastAction.callerFile):null;return<AnimatedEntrance_1.default index={l}distance={8}>
2
2
  <react_native_1.View style={reduxTabStyles.cardContainer}>
3
3
  <TouchableScale_1.default onPress={()=>{_(e.name)}}style={[reduxTabStyles.card,{borderLeftWidth:3.5,borderLeftColor:p,backgroundColor:e.status==="error"?AppColors_1.AppColors.errorCardBg:AppColors_1.AppColors.white},o&&reduxTabStyles.cardRecentlyUpdated]}>
4
4
  <react_native_1.View style={reduxTabStyles.cardBody}>
@@ -24,7 +24,7 @@
24
24
  </react_native_1.View>
25
25
 
26
26
  <react_native_1.View style={reduxTabStyles.cardHeaderRight}>
27
- <react_native_1.View style={[reduxTabStyles.statusPill,{backgroundColor:b,borderColor:g}]}>
27
+ <react_native_1.View style={[reduxTabStyles.statusPill,{backgroundColor:w,borderColor:g}]}>
28
28
  {e.status==="loading"?<NetworkIcons_1.LoadingSpinnerIcon color={AppColors_1.AppColors.amber800Warm}size={10}/>:e.status==="error"?<NetworkIcons_1.CircleAlertIcon color={AppColors_1.AppColors.red600}size={10}/>:e.status==="empty"?null:<react_native_1.View style={reduxTabStyles.liveDot}/>}
29
29
  <react_native_1.Text style={[reduxTabStyles.statusPillText,{color:d}]}>
30
30
  {e.status==="loading"?"Loading":e.status==="error"?e.statusMessage||"Error":e.status==="empty"?"Empty":"Live"}
@@ -96,12 +96,12 @@
96
96
  <react_native_1.View style={reduxTabStyles.overviewCard}>
97
97
  <react_native_1.View style={reduxTabStyles.statCol}>
98
98
  <react_native_1.Text style={reduxTabStyles.statHeading}>{i("redux.activeSlices","ACTIVE SLICES")}</react_native_1.Text>
99
- <react_native_1.Text style={reduxTabStyles.statBigVal}>{w.length}</react_native_1.Text>
99
+ <react_native_1.Text style={reduxTabStyles.statBigVal}>{A.length}</react_native_1.Text>
100
100
  </react_native_1.View>
101
101
  <react_native_1.View style={reduxTabStyles.statDivider}/>
102
102
  <react_native_1.View style={reduxTabStyles.statCol}>
103
103
  <react_native_1.Text style={reduxTabStyles.statHeading}>{i("redux.totalState","TOTAL STATE")}</react_native_1.Text>
104
- <react_native_1.Text style={reduxTabStyles.statBigVal}>{k}</react_native_1.Text>
104
+ <react_native_1.Text style={reduxTabStyles.statBigVal}>{z}</react_native_1.Text>
105
105
  </react_native_1.View>
106
106
  <react_native_1.View style={reduxTabStyles.statDivider}/>
107
107
  <react_native_1.View style={[reduxTabStyles.statCol,{flex:1.6}]}>
@@ -142,36 +142,26 @@
142
142
  </react_native_1.View>
143
143
 
144
144
 
145
- <react_native_1.TouchableOpacity accessible={!0}accessibilityRole="button"accessibilityLabel={A?"Resume live Redux updates":"Pause live Redux updates"}accessibilityHint="Toggles automatic recording of Redux state updates"style={[styles_1.default.toolbarBtn,A&&{backgroundColor:`${AppColors_1.AppColors.darkOrange}1F`,borderColor:AppColors_1.AppColors.darkOrange}]}onPress={B}hitSlop={6}>
146
- <NetworkIcons_1.HeaderPauseIcon isPaused={A}color={A?AppColors_1.AppColors.darkOrange:AppColors_1.AppColors.grayTextStrong}size={16}/>
147
- </react_native_1.TouchableOpacity>
148
-
149
-
150
- <react_native_1.TouchableOpacity accessible={!0}accessibilityRole="button"accessibilityLabel={`Sort order: ${y==="latest"?"Recently updated first":"Alphabetical A to Z"}`}accessibilityHint="Switches sorting between recently updated and alphabetical"style={[styles_1.default.toolbarBtn,y==="latest"&&{backgroundColor:`${AppColors_1.AppColors.brandPurple}1F`,borderColor:AppColors_1.AppColors.brandPurple}]}onPress={()=>R(e=>e==="latest"?"alpha":"latest")}hitSlop={6}>
145
+ <react_native_1.TouchableOpacity accessible={!0}accessibilityRole="button"accessibilityLabel={`Sort order: ${y==="latest"?"Recently updated first":"Alphabetical A to Z"}`}accessibilityHint="Switches sorting between recently updated and alphabetical"style={[styles_1.default.toolbarBtn,y==="latest"&&{backgroundColor:`${AppColors_1.AppColors.brandPurple}1F`,borderColor:AppColors_1.AppColors.brandPurple}]}onPress={()=>I(e=>e==="latest"?"alpha":"latest")}hitSlop={6}>
151
146
  <NetworkIcons_1.SortArrowIcon color={y==="latest"?AppColors_1.AppColors.brandPurple:AppColors_1.AppColors.grayTextStrong}size={16}/>
152
147
  </react_native_1.TouchableOpacity>
153
148
  </react_native_1.View>
154
149
 
155
150
  <react_native_1.View style={reduxTabStyles.headerSubRow}>
156
151
  <react_native_1.Text style={reduxTabStyles.resultCount}>
157
- Showing {u.length} of {w.length} state slices
152
+ Showing {u.length} of {A.length} state slices
158
153
  </react_native_1.Text>
159
- <react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:8}}>
160
- {A&&<react_native_1.View style={reduxTabStyles.pausedBannerPill}>
161
- <react_native_1.Text style={reduxTabStyles.pausedBannerText}>PAUSED</react_native_1.Text>
162
- </react_native_1.View>}
163
- <react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:4}}>
164
- {y==="latest"?<NetworkIcons_1.BoltIcon color={AppColors_1.AppColors.brandPurple}size={11}/>:<NetworkIcons_1.TextAaIcon color={AppColors_1.AppColors.brandPurple}size={11}/>}
165
- <react_native_1.Text style={reduxTabStyles.sortLabel}>
166
- {y==="latest"?"Newest Updates First":"Alphabetical (A-Z)"}
167
- </react_native_1.Text>
168
- </react_native_1.View>
154
+ <react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:4}}>
155
+ {y==="latest"?<NetworkIcons_1.BoltIcon color={AppColors_1.AppColors.brandPurple}size={11}/>:<NetworkIcons_1.TextAaIcon color={AppColors_1.AppColors.brandPurple}size={11}/>}
156
+ <react_native_1.Text style={reduxTabStyles.sortLabel}>
157
+ {y==="latest"?"Newest Updates First":"Alphabetical (A-Z)"}
158
+ </react_native_1.Text>
169
159
  </react_native_1.View>
170
160
  </react_native_1.View>
171
161
  </react_native_1.View>
172
162
 
173
163
 
174
- <react_native_1.FlatList ref={V}data={x}keyExtractor={e=>e.id}renderItem={F}getItemLayout={(e,l)=>({length:126,offset:126*l,index:l})}initialNumToRender={12}maxToRenderPerBatch={8}windowSize={5}removeClippedSubviews={react_native_1.Platform.OS==="android"}renderToHardwareTextureAndroid={!0}ListEmptyComponent={<EmptyState_1.default isSearch={r.trim().length>0}searchQuery={r}onClearSearch={()=>n("")}customTitle={r.trim().length>0?"No Matching Slices":"No Redux State Detected"}customSub={r.trim().length>0?`No Redux slices match "${r}"`:"Attach the Redux store or dispatch actions to see state slices."}/>}ListFooterComponent={u.length>0?<EndOfListFooter_1.default count={x.length}totalCount={u.length}label="slices"hasMore={x.length<u.length}onLoadMore={()=>I(e=>e+10)}/>:null}contentContainerStyle={[reduxTabStyles.listContent,u.length===0&&{flexGrow:1}]}keyboardShouldPersistTaps="handled"/>
164
+ <react_native_1.FlatList ref={S}data={b}keyExtractor={e=>e.id}renderItem={R}getItemLayout={(e,l)=>({length:126,offset:126*l,index:l})}initialNumToRender={12}maxToRenderPerBatch={8}windowSize={5}removeClippedSubviews={react_native_1.Platform.OS==="android"}renderToHardwareTextureAndroid={!0}ListEmptyComponent={<EmptyState_1.default isSearch={r.trim().length>0}searchQuery={r}onClearSearch={()=>n("")}customTitle={r.trim().length>0?"No Matching Slices":"No Redux State Detected"}customSub={r.trim().length>0?`No Redux slices match "${r}"`:"Attach the Redux store or dispatch actions to see state slices."}/>}ListFooterComponent={u.length>0?<EndOfListFooter_1.default count={b.length}totalCount={u.length}label="slices"hasMore={b.length<u.length}onLoadMore={()=>V(e=>e+10)}/>:null}contentContainerStyle={[reduxTabStyles.listContent,u.length===0&&{flexGrow:1}]}keyboardShouldPersistTaps="handled"/>
175
165
  </react_native_1.View>:<react_native_1.View style={styles_1.default.emptyContainer}>
176
166
  <react_native_1.View style={styles_1.default.emptyIconWrap}>
177
167
  <NetworkIcons_1.TerminalIcon color={AppColors_1.AppColors.purple}size={32}/>
@@ -180,4 +170,4 @@
180
170
  <react_native_1.Text style={styles_1.default.emptySub}>
181
171
  {i("redux.connectStoreTip","Call connectReduxStore(store) or use inspectorReduxMiddleware at app initialization.")}
182
172
  </react_native_1.Text>
183
- </react_native_1.View>}),reduxTabStyles=react_native_1.StyleSheet.create({overviewCard:{flexDirection:"row",alignItems:"center",backgroundColor:AppColors_1.AppColors.white,marginHorizontal:12,marginTop:10,borderRadius:12,padding:12,borderWidth:1,borderColor:AppColors_1.AppColors.dividerColor,shadowColor:AppColors_1.AppColors.primaryBlack,shadowOffset:{width:0,height:1},shadowOpacity:.03,shadowRadius:3,elevation:1},statCol:{flex:1},statDivider:{width:1,height:28,backgroundColor:AppColors_1.AppColors.dividerColor,marginHorizontal:8},statHeading:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:9,color:AppColors_1.AppColors.grayTextWeak,letterSpacing:.5},statBigVal:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:14,color:AppColors_1.AppColors.primaryBlack,marginTop:2},statLastAction:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:11,color:AppColors_1.AppColors.purple,marginTop:2},statLastTime:{fontFamily:AppFonts_1.AppFonts.interRegular,fontSize:9.5,color:AppColors_1.AppColors.grayTextWeak},toolbarContainer:{backgroundColor:AppColors_1.AppColors.white,borderBottomWidth:1,borderBottomColor:AppColors_1.AppColors.dividerColor,paddingHorizontal:12,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:AppFonts_1.AppFonts.interMedium,fontSize:11,color:AppColors_1.AppColors.grayTextWeak},sortLabel:{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:10.5,color:AppColors_1.AppColors.brandPurple},listContent:{paddingVertical:8,paddingBottom:36},cardContainer:{paddingHorizontal:10,paddingVertical:4,height:126},card:{backgroundColor:AppColors_1.AppColors.white,borderRadius:10,borderWidth:1,borderColor:AppColors_1.AppColors.grayBorderSecondary,shadowColor:AppColors_1.AppColors.shadowColorString,shadowOffset:{width:0,height:1},shadowOpacity:.05,shadowRadius:2.5,elevation:1.5,height:118,overflow:"hidden"},cardRecentlyUpdated:{borderColor:`${AppColors_1.AppColors.brandPurple}66`,backgroundColor:AppColors_1.AppColors.purpleTintBg},cardBody:{paddingHorizontal:12,paddingTop:9,paddingBottom:7,flex:1,justifyContent:"space-between"},cardHeaderRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",height:22,minHeight:22,maxHeight:22,gap:6},cardHeaderLeft:{flexDirection:"row",alignItems:"center",gap:6,flex:1,minWidth:0},cardHeaderRight:{flexDirection:"row",alignItems:"center",gap:6,flexShrink:0},serialNumber:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:10.5,lineHeight:13,color:AppColors_1.AppColors.grayTextWeak},methodBadge:{paddingHorizontal:5.5,paddingVertical:2,borderRadius:4,alignItems:"center",justifyContent:"center"},methodBadgeText:{fontFamily:AppFonts_1.AppFonts.interBold,color:AppColors_1.AppColors.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:AppFonts_1.AppFonts.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:AppColors_1.AppColors.emerald500},statusPillText:{fontFamily:AppFonts_1.AppFonts.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:AppFonts_1.AppFonts.interBold,fontSize:12.5,lineHeight:16,color:AppColors_1.AppColors.primaryBlack,flex:1},actionCountChip:{flexDirection:"row",alignItems:"center",gap:2.5,backgroundColor:`${AppColors_1.AppColors.violet600}14`,borderColor:`${AppColors_1.AppColors.violet600}2E`,borderWidth:1,paddingHorizontal:4.5,paddingVertical:1,borderRadius:3.5},actionCountChipText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:8.5,lineHeight:11,color:AppColors_1.AppColors.violet600},actionPreviewRow:{flexDirection:"row",alignItems:"center",gap:4.5,minHeight:15},actionPreviewText:{fontFamily:react_native_1.Platform.select({ios:"Menlo",default:"monospace"}),fontSize:10,lineHeight:13,color:AppColors_1.AppColors.grayTextWeak,flex:1},actionPreviewEmptyText:{fontFamily:AppFonts_1.AppFonts.interRegular,fontSize:10,lineHeight:13,color:AppColors_1.AppColors.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:AppFonts_1.AppFonts.interRegular,fontSize:10,lineHeight:13,color:AppColors_1.AppColors.slate400},callerChip:{flexDirection:"row",alignItems:"center",gap:2.5,backgroundColor:AppColors_1.AppColors.sky100,paddingHorizontal:4.5,paddingVertical:1,borderRadius:3,borderWidth:.5,borderColor:AppColors_1.AppColors.sky400,marginLeft:4},callerChipText:{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:8.5,lineHeight:11,color:AppColors_1.AppColors.sky600},metaStatChip:{flexDirection:"row",alignItems:"center",gap:3,backgroundColor:AppColors_1.AppColors.violetSoftBg,borderColor:AppColors_1.AppColors.violetSoftBorder,borderWidth:1,paddingHorizontal:5.5,paddingVertical:1.5,borderRadius:4},metaStatText:{fontFamily:AppFonts_1.AppFonts.interBold,color:AppColors_1.AppColors.violetSoftText,fontSize:9,lineHeight:12},waterfallContainer:{height:2.5,width:"100%",backgroundColor:AppColors_1.AppColors.graySurface,borderRadius:1.5,overflow:"hidden"},waterfallBar:{height:"100%",borderRadius:1.5},highlight:{backgroundColor:AppColors_1.AppColors.yellowHighlight,color:AppColors_1.AppColors.primaryBlack,borderRadius:2},pausedBannerPill:{backgroundColor:AppColors_1.AppColors.amber100,paddingHorizontal:6,paddingVertical:2,borderRadius:4,borderWidth:1,borderColor:AppColors_1.AppColors.amber200},pausedBannerText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:9,color:AppColors_1.AppColors.amber800Warm,letterSpacing:.5}});exports.default=ReduxTab;
173
+ </react_native_1.View>}),reduxTabStyles=react_native_1.StyleSheet.create({overviewCard:{flexDirection:"row",alignItems:"center",backgroundColor:AppColors_1.AppColors.white,marginHorizontal:12,marginTop:10,borderRadius:12,padding:12,borderWidth:1,borderColor:AppColors_1.AppColors.dividerColor,shadowColor:AppColors_1.AppColors.primaryBlack,shadowOffset:{width:0,height:1},shadowOpacity:.03,shadowRadius:3,elevation:1},statCol:{flex:1},statDivider:{width:1,height:28,backgroundColor:AppColors_1.AppColors.dividerColor,marginHorizontal:8},statHeading:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:9,color:AppColors_1.AppColors.grayTextWeak,letterSpacing:.5},statBigVal:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:14,color:AppColors_1.AppColors.primaryBlack,marginTop:2},statLastAction:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:11,color:AppColors_1.AppColors.purple,marginTop:2},statLastTime:{fontFamily:AppFonts_1.AppFonts.interRegular,fontSize:9.5,color:AppColors_1.AppColors.grayTextWeak},toolbarContainer:{backgroundColor:AppColors_1.AppColors.white,borderBottomWidth:1,borderBottomColor:AppColors_1.AppColors.dividerColor,paddingHorizontal:12,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:AppFonts_1.AppFonts.interMedium,fontSize:11,color:AppColors_1.AppColors.grayTextWeak},sortLabel:{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:10.5,color:AppColors_1.AppColors.brandPurple},listContent:{paddingVertical:8,paddingBottom:36},cardContainer:{paddingHorizontal:10,paddingVertical:4,height:126},card:{backgroundColor:AppColors_1.AppColors.white,borderRadius:10,borderWidth:1,borderColor:AppColors_1.AppColors.grayBorderSecondary,shadowColor:AppColors_1.AppColors.shadowColorString,shadowOffset:{width:0,height:1},shadowOpacity:.05,shadowRadius:2.5,elevation:1.5,height:118,overflow:"hidden"},cardRecentlyUpdated:{borderColor:`${AppColors_1.AppColors.brandPurple}66`,backgroundColor:AppColors_1.AppColors.purpleTintBg},cardBody:{paddingHorizontal:12,paddingTop:9,paddingBottom:7,flex:1,justifyContent:"space-between"},cardHeaderRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",height:22,minHeight:22,maxHeight:22,gap:6},cardHeaderLeft:{flexDirection:"row",alignItems:"center",gap:6,flex:1,minWidth:0},cardHeaderRight:{flexDirection:"row",alignItems:"center",gap:6,flexShrink:0},serialNumber:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:10.5,lineHeight:13,color:AppColors_1.AppColors.grayTextWeak},methodBadge:{paddingHorizontal:5.5,paddingVertical:2,borderRadius:4,alignItems:"center",justifyContent:"center"},methodBadgeText:{fontFamily:AppFonts_1.AppFonts.interBold,color:AppColors_1.AppColors.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:AppFonts_1.AppFonts.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:AppColors_1.AppColors.emerald500},statusPillText:{fontFamily:AppFonts_1.AppFonts.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:AppFonts_1.AppFonts.interBold,fontSize:12.5,lineHeight:16,color:AppColors_1.AppColors.primaryBlack,flex:1},actionCountChip:{flexDirection:"row",alignItems:"center",gap:2.5,backgroundColor:`${AppColors_1.AppColors.violet600}14`,borderColor:`${AppColors_1.AppColors.violet600}2E`,borderWidth:1,paddingHorizontal:4.5,paddingVertical:1,borderRadius:3.5},actionCountChipText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:8.5,lineHeight:11,color:AppColors_1.AppColors.violet600},actionPreviewRow:{flexDirection:"row",alignItems:"center",gap:4.5,minHeight:15},actionPreviewText:{fontFamily:react_native_1.Platform.select({ios:"Menlo",default:"monospace"}),fontSize:10,lineHeight:13,color:AppColors_1.AppColors.grayTextWeak,flex:1},actionPreviewEmptyText:{fontFamily:AppFonts_1.AppFonts.interRegular,fontSize:10,lineHeight:13,color:AppColors_1.AppColors.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:AppFonts_1.AppFonts.interRegular,fontSize:10,lineHeight:13,color:AppColors_1.AppColors.slate400},callerChip:{flexDirection:"row",alignItems:"center",gap:2.5,backgroundColor:AppColors_1.AppColors.sky100,paddingHorizontal:4.5,paddingVertical:1,borderRadius:3,borderWidth:.5,borderColor:AppColors_1.AppColors.sky400,marginLeft:4},callerChipText:{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:8.5,lineHeight:11,color:AppColors_1.AppColors.sky600},metaStatChip:{flexDirection:"row",alignItems:"center",gap:3,backgroundColor:AppColors_1.AppColors.violetSoftBg,borderColor:AppColors_1.AppColors.violetSoftBorder,borderWidth:1,paddingHorizontal:5.5,paddingVertical:1.5,borderRadius:4},metaStatText:{fontFamily:AppFonts_1.AppFonts.interBold,color:AppColors_1.AppColors.violetSoftText,fontSize:9,lineHeight:12},waterfallContainer:{height:2.5,width:"100%",backgroundColor:AppColors_1.AppColors.graySurface,borderRadius:1.5,overflow:"hidden"},waterfallBar:{height:"100%",borderRadius:1.5},highlight:{backgroundColor:AppColors_1.AppColors.yellowHighlight,color:AppColors_1.AppColors.primaryBlack,borderRadius:2}});exports.default=ReduxTab;