react-native-inapp-inspector 2.3.24 → 2.3.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/dist/commonjs/components/AnalyticsDetail.js +8 -8
  2. package/dist/commonjs/components/AnalyticsEventCard.js +11 -8
  3. package/dist/commonjs/components/AppHeaderLogo.js +1 -1
  4. package/dist/commonjs/components/BrandSquareIcon.js +12 -12
  5. package/dist/commonjs/components/ConsoleLogCard.d.ts +1 -0
  6. package/dist/commonjs/components/ConsoleLogCard.js +92 -80
  7. package/dist/commonjs/components/EndOfListFooter.d.ts +5 -1
  8. package/dist/commonjs/components/EndOfListFooter.js +27 -5
  9. package/dist/commonjs/components/Inspector/AnalyticsTab.js +30 -298
  10. package/dist/commonjs/components/Inspector/ConsoleTab.js +38 -93
  11. package/dist/commonjs/components/Inspector/CrashDetail.js +12 -12
  12. package/dist/commonjs/components/Inspector/CrashTab.js +43 -33
  13. package/dist/commonjs/components/Inspector/DebuggingTab.js +9 -9
  14. package/dist/commonjs/components/Inspector/DeviceInfoTab.js +54 -52
  15. package/dist/commonjs/components/Inspector/InspectorHeader.js +1 -1
  16. package/dist/commonjs/components/Inspector/MainScreen.js +23 -25
  17. package/dist/commonjs/components/Inspector/MediaGalleryTab.js +1 -1
  18. package/dist/commonjs/components/Inspector/MediaPreviewModal.js +3 -3
  19. package/dist/commonjs/components/Inspector/NetworkTab.js +31 -31
  20. package/dist/commonjs/components/Inspector/NpmStarPrompt.js +3 -3
  21. package/dist/commonjs/components/Inspector/NpmUpdateToast.js +21 -22
  22. package/dist/commonjs/components/Inspector/ReduxTab.js +110 -97
  23. package/dist/commonjs/components/Inspector/SettingsPanel.js +48 -100
  24. package/dist/commonjs/components/Inspector/StorageTab.js +56 -52
  25. package/dist/commonjs/components/Inspector/TabBar.js +29 -26
  26. package/dist/commonjs/components/JsonViewer.js +169 -164
  27. package/dist/commonjs/components/LogCard.js +34 -38
  28. package/dist/commonjs/components/LogSyntaxHighlighter.js +3 -3
  29. package/dist/commonjs/components/SegmentedTabs.d.ts +4 -1
  30. package/dist/commonjs/components/SegmentedTabs.js +8 -8
  31. package/dist/commonjs/constants/index.js +1 -1
  32. package/dist/commonjs/constants/version.d.ts +1 -1
  33. package/dist/commonjs/constants/version.js +1 -1
  34. package/dist/commonjs/customHooks/networkLogger.js +1 -2
  35. package/dist/commonjs/helpers/index.d.ts +6 -0
  36. package/dist/commonjs/helpers/index.js +4 -4
  37. package/dist/commonjs/helpers/memoryManager.d.ts +0 -1
  38. package/dist/commonjs/helpers/memoryManager.js +1 -1
  39. package/dist/commonjs/helpers/remoteConfig.js +1 -1
  40. package/dist/commonjs/helpers/settingsStore.js +1 -1
  41. package/dist/commonjs/i18n/index.d.ts +35 -0
  42. package/dist/commonjs/i18n/index.js +1 -1
  43. package/dist/commonjs/i18n/locales/ar.json +1 -0
  44. package/dist/commonjs/i18n/locales/de.json +1 -0
  45. package/dist/commonjs/i18n/locales/en.json +1 -1
  46. package/dist/commonjs/i18n/locales/es.json +1 -0
  47. package/dist/commonjs/i18n/locales/fr.json +1 -0
  48. package/dist/commonjs/i18n/locales/hi.json +1 -0
  49. package/dist/commonjs/i18n/locales/ja.json +1 -0
  50. package/dist/commonjs/i18n/locales/ko.json +1 -0
  51. package/dist/commonjs/i18n/locales/pt.json +1 -0
  52. package/dist/commonjs/i18n/locales/ru.json +1 -0
  53. package/dist/commonjs/i18n/locales/zh.json +1 -0
  54. package/dist/commonjs/index.d.ts +2 -4
  55. package/dist/commonjs/index.js +2 -2
  56. package/dist/commonjs/styles/AppColors.d.ts +40 -0
  57. package/dist/commonjs/styles/AppColors.js +1 -1
  58. package/dist/commonjs/styles/index.js +1 -1
  59. package/dist/commonjs/types/enums.d.ts +0 -20
  60. package/dist/commonjs/types/enums.js +1 -1
  61. package/dist/esm/components/AnalyticsDetail.js +75 -75
  62. package/dist/esm/components/AnalyticsEventCard.js +20 -17
  63. package/dist/esm/components/AppHeaderLogo.js +5 -5
  64. package/dist/esm/components/BrandSquareIcon.js +39 -39
  65. package/dist/esm/components/ConsoleLogCard.d.ts +1 -0
  66. package/dist/esm/components/ConsoleLogCard.js +98 -86
  67. package/dist/esm/components/EndOfListFooter.d.ts +5 -1
  68. package/dist/esm/components/EndOfListFooter.js +36 -14
  69. package/dist/esm/components/Inspector/AnalyticsTab.js +47 -315
  70. package/dist/esm/components/Inspector/ConsoleTab.js +61 -116
  71. package/dist/esm/components/Inspector/CrashDetail.js +49 -49
  72. package/dist/esm/components/Inspector/CrashTab.js +75 -65
  73. package/dist/esm/components/Inspector/DebuggingTab.js +31 -31
  74. package/dist/esm/components/Inspector/DeviceInfoTab.js +146 -144
  75. package/dist/esm/components/Inspector/InspectorHeader.js +5 -5
  76. package/dist/esm/components/Inspector/MainScreen.js +51 -53
  77. package/dist/esm/components/Inspector/MediaGalleryTab.js +1 -1
  78. package/dist/esm/components/Inspector/MediaPreviewModal.js +31 -31
  79. package/dist/esm/components/Inspector/NetworkTab.js +63 -63
  80. package/dist/esm/components/Inspector/NpmStarPrompt.js +42 -42
  81. package/dist/esm/components/Inspector/NpmUpdateToast.js +45 -46
  82. package/dist/esm/components/Inspector/ReduxTab.js +163 -150
  83. package/dist/esm/components/Inspector/SettingsPanel.js +136 -188
  84. package/dist/esm/components/Inspector/StorageTab.js +88 -84
  85. package/dist/esm/components/Inspector/TabBar.js +37 -34
  86. package/dist/esm/components/JsonViewer.js +173 -168
  87. package/dist/esm/components/LogCard.js +38 -42
  88. package/dist/esm/components/LogSyntaxHighlighter.js +1 -1
  89. package/dist/esm/components/SegmentedTabs.d.ts +4 -1
  90. package/dist/esm/components/SegmentedTabs.js +8 -8
  91. package/dist/esm/constants/index.js +1 -1
  92. package/dist/esm/constants/version.d.ts +1 -1
  93. package/dist/esm/constants/version.js +1 -1
  94. package/dist/esm/customHooks/networkLogger.js +1 -2
  95. package/dist/esm/helpers/index.d.ts +6 -0
  96. package/dist/esm/helpers/index.js +4 -4
  97. package/dist/esm/helpers/memoryManager.d.ts +0 -1
  98. package/dist/esm/helpers/memoryManager.js +1 -1
  99. package/dist/esm/helpers/remoteConfig.js +1 -1
  100. package/dist/esm/helpers/settingsStore.js +1 -1
  101. package/dist/esm/i18n/index.d.ts +35 -0
  102. package/dist/esm/i18n/index.js +1 -1
  103. package/dist/esm/i18n/locales/ar.json +1 -0
  104. package/dist/esm/i18n/locales/de.json +1 -0
  105. package/dist/esm/i18n/locales/en.json +1 -1
  106. package/dist/esm/i18n/locales/es.json +1 -0
  107. package/dist/esm/i18n/locales/fr.json +1 -0
  108. package/dist/esm/i18n/locales/hi.json +1 -0
  109. package/dist/esm/i18n/locales/ja.json +1 -0
  110. package/dist/esm/i18n/locales/ko.json +1 -0
  111. package/dist/esm/i18n/locales/pt.json +1 -0
  112. package/dist/esm/i18n/locales/ru.json +1 -0
  113. package/dist/esm/i18n/locales/zh.json +1 -0
  114. package/dist/esm/index.d.ts +2 -4
  115. package/dist/esm/index.js +5 -5
  116. package/dist/esm/styles/AppColors.d.ts +40 -0
  117. package/dist/esm/styles/AppColors.js +1 -1
  118. package/dist/esm/styles/index.js +1 -1
  119. package/dist/esm/types/enums.d.ts +0 -20
  120. package/dist/esm/types/enums.js +1 -1
  121. package/package.json +1 -15
  122. package/dist/commonjs/bundle.d.ts +0 -2
  123. package/dist/commonjs/bundle.js +0 -1
  124. package/dist/commonjs/components/Inspector/BundleTab.d.ts +0 -48
  125. package/dist/commonjs/components/Inspector/BundleTab.js +0 -1297
  126. package/dist/commonjs/components/Inspector/PerformanceTab.d.ts +0 -27
  127. package/dist/commonjs/components/Inspector/PerformanceTab.js +0 -454
  128. package/dist/commonjs/customHooks/bundleAnalyzer.d.ts +0 -115
  129. package/dist/commonjs/customHooks/bundleAnalyzer.js +0 -1
  130. package/dist/commonjs/customHooks/performanceTracker.d.ts +0 -144
  131. package/dist/commonjs/customHooks/performanceTracker.js +0 -63
  132. package/dist/commonjs/performance.d.ts +0 -2
  133. package/dist/commonjs/performance.js +0 -1
  134. package/dist/esm/bundle.d.ts +0 -2
  135. package/dist/esm/bundle.js +0 -1
  136. package/dist/esm/components/Inspector/BundleTab.d.ts +0 -48
  137. package/dist/esm/components/Inspector/BundleTab.js +0 -1297
  138. package/dist/esm/components/Inspector/PerformanceTab.d.ts +0 -27
  139. package/dist/esm/components/Inspector/PerformanceTab.js +0 -454
  140. package/dist/esm/customHooks/bundleAnalyzer.d.ts +0 -115
  141. package/dist/esm/customHooks/bundleAnalyzer.js +0 -1
  142. package/dist/esm/customHooks/performanceTracker.d.ts +0 -144
  143. package/dist/esm/customHooks/performanceTracker.js +0 -63
  144. package/dist/esm/performance.d.ts +0 -2
  145. package/dist/esm/performance.js +0 -1
@@ -1,100 +1,113 @@
1
- "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(a,t,l,o){o===void 0&&(o=l);var n=Object.getOwnPropertyDescriptor(t,l);(!n||("get"in n?!t.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return t[l]}}),Object.defineProperty(a,o,n)}):(function(a,t,l,o){o===void 0&&(o=l),a[o]=t[l]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(a,t){Object.defineProperty(a,"default",{enumerable:!0,value:t})}):function(a,t){a.default=t}),__importStar=this&&this.__importStar||(function(){var a=function(t){return a=Object.getOwnPropertyNames||function(l){var o=[];for(var n in l)Object.prototype.hasOwnProperty.call(l,n)&&(o[o.length]=n);return o},a(t)};return function(t){if(t&&t.__esModule)return t;var l={};if(t!=null)for(var o=a(t),n=0;n<o.length;n++)o[n]!=="default"&&__createBinding(l,t,o[n]);return __setModuleDefault(l,t),l}})(),__importDefault=this&&this.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};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=a=>{switch(a){case"saga":return{label:"SAGA",renderIcon:(t,l=9)=><NetworkIcons_1.BoltIcon color={t}size={l}/>,bg:AppColors_1.AppColors.purple100,text:AppColors_1.AppColors.brandPurple,border:AppColors_1.AppColors.purple200};case"thunk":return{label:"THUNK",renderIcon:(t,l=9)=><NetworkIcons_1.AtomIcon color={t}size={l}/>,bg:AppColors_1.AppColors.amber100,text:AppColors_1.AppColors.amber800Warm,border:AppColors_1.AppColors.amber200};case"ui":return{label:"UI",renderIcon:(t,l=9)=><NetworkIcons_1.ScreenIcon color={t}size={l}/>,bg:AppColors_1.AppColors.sky100,text:AppColors_1.AppColors.sky600,border:AppColors_1.AppColors.sky400};case"listener":return{label:"LISTENER",renderIcon:(t,l=9)=><NetworkIcons_1.ListenerIcon color={t}size={l}/>,bg:AppColors_1.AppColors.teal100,text:AppColors_1.AppColors.teal700,border:AppColors_1.AppColors.teal400};default:return{label:"DIRECT",renderIcon:(t,l=9)=><NetworkIcons_1.BoltIcon color={t}size={l}/>,bg:AppColors_1.AppColors.slate100,text:AppColors_1.AppColors.slate700,border:AppColors_1.AppColors.slate200}}},ReduxTab=react_1.default.memo(()=>{const{t:a}=(0,i18n_1.useTranslation)(),{reduxState:t,reduxLastActionMap:l,reduxSearch:o,setReduxSearch:n,setSelectedReduxSlice:m}=(0,InspectorContext_1.useInspector)(),v=(0,react_1.useRef)(null),[p,S]=(0,react_1.useState)("latest"),[b,V]=(0,react_1.useState)(!(0,reduxLogger_1.getReduxAutoRefresh)()),z=(0,react_1.useCallback)(()=>{V(e=>{const i=!e;return(0,reduxLogger_1.setReduxAutoRefresh)(!i),i})},[]),I=(0,react_1.useMemo)(()=>(0,helpers_1.getSize)(t),[t]),h=(0,react_1.useMemo)(()=>(0,reduxLogger_1.getActionHistory)(),[l]),A=(0,react_1.useMemo)(()=>!t||typeof t!="object"?[]:Object.keys(t).map(i=>{const r=t[i],c=Array.isArray(r),f=r&&typeof r=="object";let C="Primitive",d=0;c?(d=r.length,C=`Array [${d}]`):f?(d=Object.keys(r).length,C=`Object {${d}}`):typeof r<"u"&&(d=1,C=typeof r);let _="live",x;f&&(r.loading===!0||r.isLoading===!0||r.status==="loading"||r.status==="pending"?(_="loading",x="Loading"):r.error||r.hasError||r.status==="error"||r.status==="failed"?(_="error",x=typeof r.error=="string"?r.error:"Error"):d===0&&(_="empty",x="Empty"));const s=l[i],F=s?.updatedAt||0,P=h.filter(u=>!u.affectedSlices||u.affectedSlices.length===0?!0:u.affectedSlices.includes(i)).length;let w;if(s){let u;if(s.payload!==void 0&&s.payload!==null)try{if(typeof s.payload=="object"){const T=Object.keys(s.payload);u=`{ ${T.slice(0,3).join(", ")}${T.length>3?"...":""} }`}else u=String(s.payload)}catch{}w={type:s.type,timestamp:s.timestamp,updatedAt:s.updatedAt,payloadPreview:u,originType:s.originType,callerFile:s.callerFile,callerLine:s.callerLine,callerCol:s.callerCol}}return{id:`slice-${i}`,name:i,keysCount:d,sizeStr:(0,helpers_1.getSize)(r),typeLabel:C,status:_,statusMessage:x,timelineCount:P,lastAction:w,updatedAt:F}}),[t,l,h]),g=(0,react_1.useMemo)(()=>{let e=A;if(o&&o.trim().length>0){const i=o.trim().toLowerCase().split(/\s+/).filter(Boolean);e=e.filter(r=>{const c=t?t[r.name]:null,f=[r.name||"",r.lastAction?.type||"",r.lastAction?.payloadPreview||"",r.lastAction?.originType||"",r.status||"",r.statusMessage||"",c?typeof c=="string"?c:JSON.stringify(c):""].join(" ").toLowerCase();return i.every(C=>f.includes(C))})}return[...e].sort((i,r)=>p==="latest"&&r.updatedAt!==i.updatedAt?r.updatedAt-i.updatedAt:i.name.localeCompare(r.name))},[A,o,p,t]),y=(0,react_1.useMemo)(()=>{const e=Object.values(l);return e.length===0?null:e.reduce((i,r)=>i?(r.updatedAt||0)>(i.updatedAt||0)?r:i:r,null)},[l]),R=(0,react_1.useCallback)(({item:e,index:i})=>{const r=e.updatedAt>0&&Date.now()-e.updatedAt<5e3;return<AnimatedEntrance_1.default index={i}distance={8}>
2
- <TouchableScale_1.default onPress={()=>{m(e.name)}}style={[reduxTabStyles.card,r&&reduxTabStyles.cardRecentlyUpdated]}>
3
-
4
- <react_native_1.View style={reduxTabStyles.cardHeader}>
5
- <react_native_1.View style={reduxTabStyles.sliceBadge}>
6
- <react_native_1.Text style={reduxTabStyles.sliceBadgeText}>SLICE</react_native_1.Text>
7
- </react_native_1.View>
8
-
9
- <HighlightText_1.default text={e.name}search={o}style={reduxTabStyles.sliceName}highlightStyle={reduxTabStyles.highlight}/>
10
-
11
-
12
- {e.status==="loading"?<react_native_1.View style={reduxTabStyles.loadingPill}>
13
- <NetworkIcons_1.LoadingSpinnerIcon color={AppColors_1.AppColors.amber800Warm}size={10}/>
14
- <react_native_1.Text style={reduxTabStyles.loadingPillText}>Loading</react_native_1.Text>
15
- </react_native_1.View>:e.status==="error"?<react_native_1.View style={reduxTabStyles.errorPill}>
16
- <NetworkIcons_1.CircleAlertIcon color={AppColors_1.AppColors.red600}size={10}/>
17
- <react_native_1.Text style={reduxTabStyles.errorPillText}>Error</react_native_1.Text>
18
- </react_native_1.View>:e.status==="empty"?<react_native_1.View style={reduxTabStyles.emptyPill}>
19
- <react_native_1.Text style={reduxTabStyles.emptyPillText}>Empty</react_native_1.Text>
20
- </react_native_1.View>:<react_native_1.View style={reduxTabStyles.livePill}>
21
- <react_native_1.View style={reduxTabStyles.liveDot}/>
22
- <react_native_1.Text style={reduxTabStyles.livePillText}>Live</react_native_1.Text>
23
- </react_native_1.View>}
24
-
25
- {e.lastAction?.timestamp&&<react_native_1.View style={reduxTabStyles.timePill}>
26
- <NetworkIcons_1.ClockIcon color={AppColors_1.AppColors.purple}size={10}/>
27
- <react_native_1.Text style={reduxTabStyles.timeText}>
28
- {e.lastAction.timestamp}
29
- </react_native_1.Text>
30
- </react_native_1.View>}
31
-
32
- <NetworkIcons_1.ForwardChevronIcon color={AppColors_1.AppColors.grayTextWeak}size={13}/>
33
- </react_native_1.View>
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}>
2
+ <react_native_1.View style={reduxTabStyles.cardContainer}>
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
+ <react_native_1.View style={reduxTabStyles.cardBody}>
5
+
6
+ <react_native_1.View style={reduxTabStyles.cardHeaderRow}>
7
+ <react_native_1.View style={reduxTabStyles.cardHeaderLeft}>
8
+ <react_native_1.Text style={reduxTabStyles.serialNumber}>#{l+1}</react_native_1.Text>
9
+ <react_native_1.View style={[reduxTabStyles.methodBadge,{backgroundColor:AppColors_1.AppColors.violet600}]}>
10
+ <react_native_1.Text style={reduxTabStyles.methodBadgeText}>REDUX</react_native_1.Text>
11
+ </react_native_1.View>
12
+ <react_native_1.View style={[reduxTabStyles.chip,{backgroundColor:`${AppColors_1.AppColors.violet600}14`,borderColor:`${AppColors_1.AppColors.violet600}2E`}]}>
13
+ <react_native_1.Text style={[reduxTabStyles.chipText,{color:AppColors_1.AppColors.violet600}]}>
14
+ {e.typeLabel.toUpperCase()}
15
+ </react_native_1.Text>
16
+ </react_native_1.View>
34
17
 
35
-
36
- <react_native_1.View style={reduxTabStyles.statsRow}>
37
- <react_native_1.View style={reduxTabStyles.pill}>
38
- <NetworkIcons_1.LayersIcon color={AppColors_1.AppColors.grayTextWeak}size={11}/>
39
- <react_native_1.Text style={reduxTabStyles.pillValue}>{e.typeLabel}</react_native_1.Text>
40
- </react_native_1.View>
41
- <react_native_1.View style={reduxTabStyles.pill}>
42
- <react_native_1.Text style={reduxTabStyles.pillLabel}>Size:</react_native_1.Text>
43
- <react_native_1.Text style={reduxTabStyles.pillValue}>{e.sizeStr}</react_native_1.Text>
44
- </react_native_1.View>
45
- {e.timelineCount>0&&<react_native_1.View style={reduxTabStyles.pill}>
46
- <react_native_1.Text style={reduxTabStyles.pillLabel}>Actions:</react_native_1.Text>
47
- <react_native_1.Text style={reduxTabStyles.pillValue}>{e.timelineCount}</react_native_1.Text>
48
- </react_native_1.View>}
49
- </react_native_1.View>
18
+ {e.lastAction?.originType&&(()=>{const c=getOriginBadge(e.lastAction.originType);return<react_native_1.View style={[reduxTabStyles.chip,{backgroundColor:c.bg,borderColor:c.border}]}>
19
+ {c.renderIcon(c.text,8.5)}
20
+ <react_native_1.Text style={[reduxTabStyles.chipText,{color:c.text}]}>
21
+ {c.label}
22
+ </react_native_1.Text>
23
+ </react_native_1.View>})()}
24
+ </react_native_1.View>
50
25
 
51
-
52
- {e.lastAction&&<react_native_1.View style={reduxTabStyles.lastActionRow}>
53
- <react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:5,flex:1,minWidth:0,flexWrap:"wrap"}}>
54
- <NetworkIcons_1.BoltIcon color={AppColors_1.AppColors.brandPurple}size={12}/>
55
- <react_native_1.Text style={reduxTabStyles.lastActionLabel}>{a("redux.last","Last")}:</react_native_1.Text>
26
+ <react_native_1.View style={reduxTabStyles.cardHeaderRight}>
27
+ <react_native_1.View style={[reduxTabStyles.statusPill,{backgroundColor:b,borderColor:g}]}>
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
+ <react_native_1.Text style={[reduxTabStyles.statusPillText,{color:d}]}>
30
+ {e.status==="loading"?"Loading":e.status==="error"?e.statusMessage||"Error":e.status==="empty"?"Empty":"Live"}
31
+ </react_native_1.Text>
32
+ </react_native_1.View>
33
+ <NetworkIcons_1.ForwardChevronIcon color={AppColors_1.AppColors.grayTextWeak}size={13}/>
34
+ </react_native_1.View>
35
+ </react_native_1.View>
56
36
 
57
-
58
- {e.lastAction.originType&&(()=>{const c=getOriginBadge(e.lastAction.originType);return<react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:2.5,backgroundColor:c.bg,paddingHorizontal:4.5,paddingVertical:1.5,borderRadius:3.5,borderWidth:1,borderColor:c.border}}>
59
- {c.renderIcon(c.text,8.5)}
60
- <react_native_1.Text style={{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:8,color:c.text,letterSpacing:.3}}>
61
- {c.label}
37
+
38
+ <react_native_1.View style={reduxTabStyles.cardMainRow}>
39
+ <react_native_1.View style={reduxTabStyles.sliceNameRow}>
40
+ <HighlightText_1.default text={e.name}search={r}style={reduxTabStyles.sliceNameText}highlightStyle={reduxTabStyles.highlight}numberOfLines={1}/>
41
+ {e.timelineCount>0&&<react_native_1.View style={reduxTabStyles.actionCountChip}>
42
+ <NetworkIcons_1.BoltIcon color={AppColors_1.AppColors.violet600}size={9}/>
43
+ <react_native_1.Text style={reduxTabStyles.actionCountChipText}>
44
+ {e.timelineCount}
62
45
  </react_native_1.Text>
63
- </react_native_1.View>})()}
46
+ </react_native_1.View>}
47
+ </react_native_1.View>
48
+ <react_native_1.View style={reduxTabStyles.actionPreviewRow}>
49
+ <NetworkIcons_1.TerminalIcon color={AppColors_1.AppColors.grayTextWeak}size={10}/>
50
+ {e.lastAction?<HighlightText_1.default text={e.lastAction.type+(e.lastAction.payloadPreview?` \xB7 ${e.lastAction.payloadPreview}`:"")}search={r}style={reduxTabStyles.actionPreviewText}highlightStyle={reduxTabStyles.highlight}numberOfLines={1}/>:<react_native_1.Text style={reduxTabStyles.actionPreviewEmptyText}numberOfLines={1}>
51
+ Initial state (no actions dispatched yet)
52
+ </react_native_1.Text>}
53
+ </react_native_1.View>
54
+ </react_native_1.View>
64
55
 
65
- <HighlightText_1.default text={e.lastAction.type}search={o}style={reduxTabStyles.lastActionValue}highlightStyle={reduxTabStyles.highlight}numberOfLines={1}/>
56
+
57
+ <react_native_1.View style={reduxTabStyles.cardFooterRow}>
58
+ <react_native_1.View style={reduxTabStyles.footerLeft}>
59
+ <NetworkIcons_1.ClockIcon color={AppColors_1.AppColors.grayTextWeak}size={10}/>
60
+ <react_native_1.Text style={reduxTabStyles.footerTimestampText}numberOfLines={1}>
61
+ {e.lastAction?.timestamp||"Initial state"}
62
+ </react_native_1.Text>
63
+ {C&&<react_native_1.Pressable onPress={()=>(0,helpers_1.openInVSCode)(e.lastAction.callerFile,e.lastAction.callerLine,e.lastAction.callerCol)}hitSlop={6}style={reduxTabStyles.callerChip}>
64
+ <NetworkIcons_1.DocIcon color={AppColors_1.AppColors.sky600}size={9}/>
65
+ <react_native_1.Text style={reduxTabStyles.callerChipText}>
66
+ {C.display}
67
+ </react_native_1.Text>
68
+ </react_native_1.Pressable>}
69
+ </react_native_1.View>
66
70
 
67
-
68
- {e.lastAction.callerFile&&<react_native_1.Pressable onPress={()=>(0,helpers_1.openInVSCode)(e.lastAction.callerFile,e.lastAction.callerLine,e.lastAction.callerCol)}hitSlop={6}style={{flexDirection:"row",alignItems:"center",gap:2.5,backgroundColor:AppColors_1.AppColors.sky100,paddingHorizontal:4.5,paddingVertical:1.5,borderRadius:3,borderWidth:.5,borderColor:AppColors_1.AppColors.sky400}}>
69
- <NetworkIcons_1.DocIcon color={AppColors_1.AppColors.sky600}size={9}/>
70
- <react_native_1.Text style={{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:8.5,color:AppColors_1.AppColors.sky600}}>
71
- {e.lastAction.callerFile.split("/").pop()}:{e.lastAction.callerLine||1}
71
+ <react_native_1.View style={reduxTabStyles.footerRight}>
72
+ <react_native_1.View style={reduxTabStyles.metaStatChip}>
73
+ <NetworkIcons_1.SizeIcon color={AppColors_1.AppColors.violet600}size={9.5}/>
74
+ <react_native_1.Text style={reduxTabStyles.metaStatText}>
75
+ {e.sizeStr}
72
76
  </react_native_1.Text>
73
- </react_native_1.Pressable>}
74
-
75
- {e.lastAction.payloadPreview&&<react_native_1.Text style={reduxTabStyles.payloadPreviewText}numberOfLines={1}>
76
- {e.lastAction.payloadPreview}
77
- </react_native_1.Text>}
77
+ </react_native_1.View>
78
+ <react_native_1.View style={reduxTabStyles.metaStatChip}>
79
+ <NetworkIcons_1.LayersIcon color={AppColors_1.AppColors.violet600}size={9.5}/>
80
+ <react_native_1.Text style={reduxTabStyles.metaStatText}>
81
+ {e.keysCount} keys
82
+ </react_native_1.Text>
83
+ </react_native_1.View>
84
+ </react_native_1.View>
78
85
  </react_native_1.View>
79
- </react_native_1.View>}
80
- </TouchableScale_1.default>
81
- </AnimatedEntrance_1.default>},[o,m,a]);return t?<react_native_1.View style={{flex:1,backgroundColor:AppColors_1.AppColors.grayBackground}}>
86
+ </react_native_1.View>
87
+
88
+
89
+ <react_native_1.View style={reduxTabStyles.waterfallContainer}>
90
+ <react_native_1.View style={[reduxTabStyles.waterfallBar,{backgroundColor:p,width:o?"100%":"35%"}]}/>
91
+ </react_native_1.View>
92
+ </TouchableScale_1.default>
93
+ </react_native_1.View>
94
+ </AnimatedEntrance_1.default>},[r,_]);return t?<react_native_1.View style={{flex:1,backgroundColor:AppColors_1.AppColors.grayBackground}}>
82
95
 
83
96
  <react_native_1.View style={reduxTabStyles.overviewCard}>
84
97
  <react_native_1.View style={reduxTabStyles.statCol}>
85
- <react_native_1.Text style={reduxTabStyles.statHeading}>ACTIVE SLICES</react_native_1.Text>
86
- <react_native_1.Text style={reduxTabStyles.statBigVal}>{A.length}</react_native_1.Text>
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>
87
100
  </react_native_1.View>
88
101
  <react_native_1.View style={reduxTabStyles.statDivider}/>
89
102
  <react_native_1.View style={reduxTabStyles.statCol}>
90
- <react_native_1.Text style={reduxTabStyles.statHeading}>TOTAL STATE</react_native_1.Text>
91
- <react_native_1.Text style={reduxTabStyles.statBigVal}>{I}</react_native_1.Text>
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>
92
105
  </react_native_1.View>
93
106
  <react_native_1.View style={reduxTabStyles.statDivider}/>
94
107
  <react_native_1.View style={[reduxTabStyles.statCol,{flex:1.6}]}>
95
108
  <react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:4}}>
96
- <react_native_1.Text style={reduxTabStyles.statHeading}>LAST ACTION</react_native_1.Text>
97
- {y?.originType&&(()=>{const e=getOriginBadge(y.originType);return<react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:2,backgroundColor:e.bg,paddingHorizontal:4,paddingVertical:1,borderRadius:3}}>
109
+ <react_native_1.Text style={reduxTabStyles.statHeading}>{i("redux.lastActionHeader","LAST ACTION")}</react_native_1.Text>
110
+ {h?.originType&&(()=>{const e=getOriginBadge(h.originType);return<react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:2,backgroundColor:e.bg,paddingHorizontal:4,paddingVertical:1,borderRadius:3}}>
98
111
  {e.renderIcon(e.text,8)}
99
112
  <react_native_1.Text style={{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:7.5,color:e.text}}>
100
113
  {e.label}
@@ -102,10 +115,10 @@
102
115
  </react_native_1.View>})()}
103
116
  </react_native_1.View>
104
117
  <react_native_1.Text style={reduxTabStyles.statLastAction}numberOfLines={1}>
105
- {y?y.type:"Initial"}
118
+ {h?h.type:"Initial"}
106
119
  </react_native_1.Text>
107
- {y?.timestamp&&<react_native_1.Text style={reduxTabStyles.statLastTime}>
108
- {y.timestamp}
120
+ {h?.timestamp&&<react_native_1.Text style={reduxTabStyles.statLastTime}>
121
+ {h.timestamp}
109
122
  </react_native_1.Text>}
110
123
  </react_native_1.View>
111
124
  </react_native_1.View>
@@ -115,11 +128,11 @@
115
128
  <react_native_1.View style={reduxTabStyles.searchRow}>
116
129
  <react_native_1.View style={styles_1.default.searchContainer}>
117
130
  <NetworkIcons_1.SearchIcon color={AppColors_1.AppColors.grayTextWeak}size={15}/>
118
- <react_native_1.TextInput accessible={!0}accessibilityRole="search"accessibilityLabel="Search Redux slices or actions"accessibilityHint="Type to filter state slices in real time"placeholder="Search Redux slices or actions..."placeholderTextColor={AppColors_1.AppColors.grayTextWeak}value={o}onChangeText={n}style={styles_1.default.searchInput}autoCorrect={!1}autoCapitalize="none"/>
119
- {o.length>0&&<react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:4}}>
131
+ <react_native_1.TextInput accessible={!0}accessibilityRole="search"accessibilityLabel="Search Redux slices or actions"accessibilityHint="Type to filter state slices in real time"placeholder={i("redux.searchPlaceholder","Search state or actions...")}placeholderTextColor={AppColors_1.AppColors.grayTextWeak}value={r}onChangeText={n}style={styles_1.default.searchInput}autoCorrect={!1}autoCapitalize="none"/>
132
+ {r.length>0&&<react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:4}}>
120
133
  <react_native_1.View style={{backgroundColor:`${AppColors_1.AppColors.purple}20`,borderRadius:10,paddingHorizontal:6,paddingVertical:1.5}}>
121
134
  <react_native_1.Text style={{color:AppColors_1.AppColors.purple,fontSize:9.5,fontFamily:AppFonts_1.AppFonts.interBold}}>
122
- {g.length}
135
+ {u.length}
123
136
  </react_native_1.Text>
124
137
  </react_native_1.View>
125
138
  <react_native_1.Pressable accessible={!0}accessibilityRole="button"accessibilityLabel="Clear search input"onPress={()=>n("")}hitSlop={10}>
@@ -129,28 +142,28 @@
129
142
  </react_native_1.View>
130
143
 
131
144
 
132
- <react_native_1.TouchableOpacity accessible={!0}accessibilityRole="button"accessibilityLabel={b?"Resume live Redux updates":"Pause live Redux updates"}accessibilityHint="Toggles automatic recording of Redux state updates"style={[styles_1.default.toolbarBtn,b&&{backgroundColor:`${AppColors_1.AppColors.darkOrange}1F`,borderColor:AppColors_1.AppColors.darkOrange}]}onPress={z}hitSlop={6}>
133
- <NetworkIcons_1.HeaderPauseIcon isPaused={b}color={b?AppColors_1.AppColors.darkOrange:AppColors_1.AppColors.grayTextStrong}size={16}/>
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}/>
134
147
  </react_native_1.TouchableOpacity>
135
148
 
136
149
 
137
- <react_native_1.TouchableOpacity accessible={!0}accessibilityRole="button"accessibilityLabel={`Sort order: ${p==="latest"?"Recently updated first":"Alphabetical A to Z"}`}accessibilityHint="Switches sorting between recently updated and alphabetical"style={[styles_1.default.toolbarBtn,p==="latest"&&{backgroundColor:`${AppColors_1.AppColors.brandPurple}1F`,borderColor:AppColors_1.AppColors.brandPurple}]}onPress={()=>S(e=>e==="latest"?"alpha":"latest")}hitSlop={6}>
138
- <NetworkIcons_1.SortArrowIcon color={p==="latest"?AppColors_1.AppColors.brandPurple:AppColors_1.AppColors.grayTextStrong}size={16}/>
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}>
151
+ <NetworkIcons_1.SortArrowIcon color={y==="latest"?AppColors_1.AppColors.brandPurple:AppColors_1.AppColors.grayTextStrong}size={16}/>
139
152
  </react_native_1.TouchableOpacity>
140
153
  </react_native_1.View>
141
154
 
142
155
  <react_native_1.View style={reduxTabStyles.headerSubRow}>
143
156
  <react_native_1.Text style={reduxTabStyles.resultCount}>
144
- Showing {g.length} of {A.length} state slices
157
+ Showing {u.length} of {w.length} state slices
145
158
  </react_native_1.Text>
146
159
  <react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:8}}>
147
- {b&&<react_native_1.View style={reduxTabStyles.pausedBannerPill}>
160
+ {A&&<react_native_1.View style={reduxTabStyles.pausedBannerPill}>
148
161
  <react_native_1.Text style={reduxTabStyles.pausedBannerText}>PAUSED</react_native_1.Text>
149
162
  </react_native_1.View>}
150
163
  <react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:4}}>
151
- {p==="latest"?<NetworkIcons_1.BoltIcon color={AppColors_1.AppColors.brandPurple}size={11}/>:<NetworkIcons_1.TextAaIcon color={AppColors_1.AppColors.brandPurple}size={11}/>}
164
+ {y==="latest"?<NetworkIcons_1.BoltIcon color={AppColors_1.AppColors.brandPurple}size={11}/>:<NetworkIcons_1.TextAaIcon color={AppColors_1.AppColors.brandPurple}size={11}/>}
152
165
  <react_native_1.Text style={reduxTabStyles.sortLabel}>
153
- {p==="latest"?"Newest Updates First":"Alphabetical (A-Z)"}
166
+ {y==="latest"?"Newest Updates First":"Alphabetical (A-Z)"}
154
167
  </react_native_1.Text>
155
168
  </react_native_1.View>
156
169
  </react_native_1.View>
@@ -158,13 +171,13 @@
158
171
  </react_native_1.View>
159
172
 
160
173
 
161
- <react_native_1.FlatList ref={v}data={g}keyExtractor={e=>e.id}renderItem={R}initialNumToRender={12}maxToRenderPerBatch={8}windowSize={5}removeClippedSubviews={react_native_1.Platform.OS==="android"}renderToHardwareTextureAndroid={!0}ListEmptyComponent={<EmptyState_1.default isSearch={o.trim().length>0}searchQuery={o}onClearSearch={()=>n("")}customTitle={o.trim().length>0?"No Matching Slices":"No Redux State Detected"}customSub={o.trim().length>0?`No Redux slices match "${o}"`:"Attach the Redux store or dispatch actions to see state slices."}/>}ListFooterComponent={g.length>0?<EndOfListFooter_1.default count={g.length}label="slices"/>:null}contentContainerStyle={[reduxTabStyles.listContent,g.length===0&&{flexGrow:1}]}keyboardShouldPersistTaps="handled"/>
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"/>
162
175
  </react_native_1.View>:<react_native_1.View style={styles_1.default.emptyContainer}>
163
176
  <react_native_1.View style={styles_1.default.emptyIconWrap}>
164
177
  <NetworkIcons_1.TerminalIcon color={AppColors_1.AppColors.purple}size={32}/>
165
178
  </react_native_1.View>
166
- <react_native_1.Text style={styles_1.default.emptyTitle}>No Redux Store Connected</react_native_1.Text>
179
+ <react_native_1.Text style={styles_1.default.emptyTitle}>{i("redux.noStoreConnected","No Redux Store Connected")}</react_native_1.Text>
167
180
  <react_native_1.Text style={styles_1.default.emptySub}>
168
- Call connectReduxStore(store) or use inspectorReduxMiddleware at app initialization.
181
+ {i("redux.connectStoreTip","Call connectReduxStore(store) or use inspectorReduxMiddleware at app initialization.")}
169
182
  </react_native_1.Text>
170
- </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:{padding:12,paddingBottom:36},card:{backgroundColor:AppColors_1.AppColors.white,borderRadius:12,padding:12,marginBottom:10,borderWidth:1,borderColor:AppColors_1.AppColors.dividerColor,shadowColor:AppColors_1.AppColors.primaryBlack,shadowOffset:{width:0,height:1},shadowOpacity:.04,shadowRadius:4,elevation:2},cardRecentlyUpdated:{borderColor:`${AppColors_1.AppColors.brandPurple}66`,backgroundColor:AppColors_1.AppColors.purpleTintBg},cardHeader:{flexDirection:"row",alignItems:"center",gap:8,marginBottom:8},sliceBadge:{backgroundColor:AppColors_1.AppColors.violetSoftBg,paddingHorizontal:6,paddingVertical:3,borderRadius:5,borderWidth:1,borderColor:AppColors_1.AppColors.violetSoftBorder},sliceBadgeText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:9.5,color:AppColors_1.AppColors.purple700,letterSpacing:.4},sliceName:{flex:1,fontFamily:AppFonts_1.AppFonts.interBold,fontSize:13.5,color:AppColors_1.AppColors.primaryBlack},timePill:{flexDirection:"row",alignItems:"center",gap:3,backgroundColor:`${AppColors_1.AppColors.purple}14`,paddingHorizontal:6,paddingVertical:2,borderRadius:4,borderWidth:1,borderColor:`${AppColors_1.AppColors.purple}2E`},timeText:{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:10,color:AppColors_1.AppColors.purple},statsRow:{flexDirection:"row",alignItems:"center",gap:6,flexWrap:"wrap",marginBottom:6},pill:{flexDirection:"row",alignItems:"center",gap:4,backgroundColor:AppColors_1.AppColors.grayBackground,paddingHorizontal:7,paddingVertical:3,borderRadius:5,borderWidth:1,borderColor:AppColors_1.AppColors.dividerColor},pillLabel:{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:10.5,color:AppColors_1.AppColors.grayTextWeak},pillValue:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:10.5,color:AppColors_1.AppColors.primaryBlack},livePill:{flexDirection:"row",alignItems:"center",gap:4,backgroundColor:AppColors_1.AppColors.emeraldBg,paddingHorizontal:6,paddingVertical:3,borderRadius:5,borderWidth:1,borderColor:AppColors_1.AppColors.emeraldBorder},liveDot:{width:6,height:6,borderRadius:3,backgroundColor:AppColors_1.AppColors.emerald500},livePillText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:10,color:AppColors_1.AppColors.emerald700},loadingPill:{backgroundColor:AppColors_1.AppColors.amber100,paddingHorizontal:6,paddingVertical:3,borderRadius:5,borderWidth:1,borderColor:AppColors_1.AppColors.amber200},loadingPillText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:9.5,color:AppColors_1.AppColors.amber800Warm},errorPill:{backgroundColor:AppColors_1.AppColors.red100,paddingHorizontal:6,paddingVertical:3,borderRadius:5,borderWidth:1,borderColor:AppColors_1.AppColors.errorBorder},errorPillText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:9.5,color:AppColors_1.AppColors.red600},emptyPill:{backgroundColor:AppColors_1.AppColors.grayBackground,paddingHorizontal:6,paddingVertical:3,borderRadius:5,borderWidth:1,borderColor:AppColors_1.AppColors.dividerColor},emptyPillText:{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:9.5,color:AppColors_1.AppColors.grayTextWeak},lastActionRow:{flexDirection:"row",alignItems:"center",gap:5,backgroundColor:AppColors_1.AppColors.grayBackground,borderRadius:6,paddingHorizontal:8,paddingVertical:5,marginTop:4,borderWidth:1,borderColor:AppColors_1.AppColors.dividerColor},lastActionLabel:{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:10.5,color:AppColors_1.AppColors.grayTextWeak},lastActionValue:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:11,color:AppColors_1.AppColors.primaryBlack},payloadPreviewText:{flex:1,fontFamily:AppFonts_1.AppFonts.interRegular,fontSize:10,color:AppColors_1.AppColors.grayTextWeak,marginLeft:4},highlight:{backgroundColor:AppColors_1.AppColors.yellow200,color:AppColors_1.AppColors.yellow800,fontFamily:AppFonts_1.AppFonts.interBold},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;
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;