react-native-inapp-inspector 2.4.0 → 2.4.1

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.
@@ -1,6 +1,6 @@
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}>
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}}},DEFAULT_PAGE_SIZE=50,LOAD_MORE_STEP=10,ReduxTab=react_1.default.memo(()=>{const{t:i}=(0,i18n_1.useTranslation)(),{reduxState:t,reduxLastActionMap:a,reduxSearch:r,setReduxSearch:n,setSelectedReduxSlice:b}=(0,InspectorContext_1.useInspector)(),x=(0,react_1.useRef)(null),[T,m]=(0,react_1.useState)(DEFAULT_PAGE_SIZE),[u,I]=(0,react_1.useState)("latest");react_1.default.useEffect(()=>{m(DEFAULT_PAGE_SIZE),x.current?.scrollToOffset({offset:0,animated:!1})},[r,u]);const R=(0,react_1.useMemo)(()=>(0,helpers_1.getSize)(t),[t]),v=(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),A=o&&typeof o=="object";let y="Primitive",d=0;p?(d=o.length,y=`Array [${d}]`):A?(d=Object.keys(o).length,y=`Object {${d}}`):typeof o<"u"&&(d=1,y=typeof o);let f="live",c;A&&(o.loading===!0||o.isLoading===!0||o.status==="loading"||o.status==="pending"?(f="loading",c="Loading"):o.error||o.hasError||o.status==="error"||o.status==="failed"?(f="error",c=typeof o.error=="string"?o.error:"Error"):d===0&&(f="empty",c="Empty"));const s=a[l],B=s?.updatedAt||0,F=v.filter(C=>!C.affectedSlices||C.affectedSlices.length===0?!0:C.affectedSlices.includes(l)).length;let S;if(s){let C;if(s.payload!==void 0&&s.payload!==null)try{if(typeof s.payload=="object"){const V=Object.keys(s.payload);C=`{ ${V.slice(0,3).join(", ")}${V.length>3?"...":""} }`}else C=String(s.payload)}catch{}S={type:s.type,timestamp:s.timestamp,updatedAt:s.updatedAt,payloadPreview:C,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:y,status:f,statusMessage:c,timelineCount:F,lastAction:S,updatedAt:B}}),[t,a,v]),g=(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,A=[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(y=>A.includes(y))})}return[...e].sort((l,o)=>u==="latest"&&o.updatedAt!==l.updatedAt?o.updatedAt-l.updatedAt:l.name.localeCompare(o.name))},[w,r,u,t]),_=(0,react_1.useMemo)(()=>g.slice(0,T),[g,T]),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]),z=(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,A=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,y=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,f=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
- <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]}>
3
+ <TouchableScale_1.default onPress={()=>{b(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}>
5
5
 
6
6
  <react_native_1.View style={reduxTabStyles.cardHeaderRow}>
@@ -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:w,borderColor:g}]}>
27
+ <react_native_1.View style={[reduxTabStyles.statusPill,{backgroundColor:A,borderColor:y}]}>
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"}
@@ -60,10 +60,10 @@
60
60
  <react_native_1.Text style={reduxTabStyles.footerTimestampText}numberOfLines={1}>
61
61
  {e.lastAction?.timestamp||"Initial state"}
62
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}>
63
+ {f&&<react_native_1.Pressable onPress={()=>(0,helpers_1.openInVSCode)(e.lastAction.callerFile,e.lastAction.callerLine,e.lastAction.callerCol)}hitSlop={6}style={reduxTabStyles.callerChip}>
64
64
  <NetworkIcons_1.DocIcon color={AppColors_1.AppColors.sky600}size={9}/>
65
65
  <react_native_1.Text style={reduxTabStyles.callerChipText}>
66
- {C.display}
66
+ {f.display}
67
67
  </react_native_1.Text>
68
68
  </react_native_1.Pressable>}
69
69
  </react_native_1.View>
@@ -91,17 +91,17 @@
91
91
  </react_native_1.View>
92
92
  </TouchableScale_1.default>
93
93
  </react_native_1.View>
94
- </AnimatedEntrance_1.default>},[r,_]);return t?<react_native_1.View style={{flex:1,backgroundColor:AppColors_1.AppColors.grayBackground}}>
94
+ </AnimatedEntrance_1.default>},[r,b]);return t?<react_native_1.View style={{flex:1,backgroundColor:AppColors_1.AppColors.grayBackground}}>
95
95
 
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}>{A.length}</react_native_1.Text>
99
+ <react_native_1.Text style={reduxTabStyles.statBigVal}>{w.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}>{z}</react_native_1.Text>
104
+ <react_native_1.Text style={reduxTabStyles.statBigVal}>{R}</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}]}>
@@ -132,7 +132,7 @@
132
132
  {r.length>0&&<react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:4}}>
133
133
  <react_native_1.View style={{backgroundColor:`${AppColors_1.AppColors.purple}20`,borderRadius:10,paddingHorizontal:6,paddingVertical:1.5}}>
134
134
  <react_native_1.Text style={{color:AppColors_1.AppColors.purple,fontSize:9.5,fontFamily:AppFonts_1.AppFonts.interBold}}>
135
- {u.length}
135
+ {g.length}
136
136
  </react_native_1.Text>
137
137
  </react_native_1.View>
138
138
  <react_native_1.Pressable accessible={!0}accessibilityRole="button"accessibilityLabel="Clear search input"onPress={()=>n("")}hitSlop={10}>
@@ -142,26 +142,26 @@
142
142
  </react_native_1.View>
143
143
 
144
144
 
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}>
146
- <NetworkIcons_1.SortArrowIcon color={y==="latest"?AppColors_1.AppColors.brandPurple:AppColors_1.AppColors.grayTextStrong}size={16}/>
145
+ <react_native_1.TouchableOpacity accessible={!0}accessibilityRole="button"accessibilityLabel={`Sort order: ${u==="latest"?"Recently updated first":"Alphabetical A to Z"}`}accessibilityHint="Switches sorting between recently updated and alphabetical"style={[styles_1.default.toolbarBtn,u==="latest"&&{backgroundColor:`${AppColors_1.AppColors.brandPurple}1F`,borderColor:AppColors_1.AppColors.brandPurple}]}onPress={()=>I(e=>e==="latest"?"alpha":"latest")}hitSlop={6}>
146
+ <NetworkIcons_1.SortArrowIcon color={u==="latest"?AppColors_1.AppColors.brandPurple:AppColors_1.AppColors.grayTextStrong}size={16}/>
147
147
  </react_native_1.TouchableOpacity>
148
148
  </react_native_1.View>
149
149
 
150
150
  <react_native_1.View style={reduxTabStyles.headerSubRow}>
151
151
  <react_native_1.Text style={reduxTabStyles.resultCount}>
152
- Showing {u.length} of {A.length} state slices
152
+ Showing {g.length} of {w.length} state slices
153
153
  </react_native_1.Text>
154
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}/>}
155
+ {u==="latest"?<NetworkIcons_1.BoltIcon color={AppColors_1.AppColors.brandPurple}size={11}/>:<NetworkIcons_1.TextAaIcon color={AppColors_1.AppColors.brandPurple}size={11}/>}
156
156
  <react_native_1.Text style={reduxTabStyles.sortLabel}>
157
- {y==="latest"?"Newest Updates First":"Alphabetical (A-Z)"}
157
+ {u==="latest"?"Newest Updates First":"Alphabetical (A-Z)"}
158
158
  </react_native_1.Text>
159
159
  </react_native_1.View>
160
160
  </react_native_1.View>
161
161
  </react_native_1.View>
162
162
 
163
163
 
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"/>
164
+ <react_native_1.FlatList ref={x}data={_}keyExtractor={e=>e.id}renderItem={z}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={g.length>0?<EndOfListFooter_1.default count={_.length}totalCount={g.length}label="slices"loadMoreStep={LOAD_MORE_STEP}hasMore={_.length<g.length}onLoadMore={()=>m(e=>e+LOAD_MORE_STEP)}/>:null}contentContainerStyle={[reduxTabStyles.listContent,g.length===0&&{flexGrow:1}]}keyboardShouldPersistTaps="handled"/>
165
165
  </react_native_1.View>:<react_native_1.View style={styles_1.default.emptyContainer}>
166
166
  <react_native_1.View style={styles_1.default.emptyIconWrap}>
167
167
  <NetworkIcons_1.TerminalIcon color={AppColors_1.AppColors.purple}size={32}/>
@@ -1,4 +1,4 @@
1
- "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(r,o,t,l){l===void 0&&(l=t);var a=Object.getOwnPropertyDescriptor(o,t);(!a||("get"in a?!o.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return o[t]}}),Object.defineProperty(r,l,a)}):(function(r,o,t,l){l===void 0&&(l=t),r[l]=o[t]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(r,o){Object.defineProperty(r,"default",{enumerable:!0,value:o})}):function(r,o){r.default=o}),__importStar=this&&this.__importStar||(function(){var r=function(o){return r=Object.getOwnPropertyNames||function(t){var l=[];for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&(l[l.length]=a);return l},r(o)};return function(o){if(o&&o.__esModule)return o;var t={};if(o!=null)for(var l=r(o),a=0;a<l.length;a++)l[a]!=="default"&&__createBinding(t,o,l[a]);return __setModuleDefault(t,o),t}})(),__importDefault=this&&this.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.StorageTab=void 0;const react_1=__importStar(require("react")),react_native_1=require("react-native"),TouchableScale_1=__importDefault(require("../TouchableScale")),EndOfListFooter_1=__importDefault(require("../EndOfListFooter")),AppColors_1=require("../../styles/AppColors"),AppFonts_1=require("../../styles/AppFonts"),i18n_1=require("../../i18n"),NetworkIcons_1=require("../NetworkIcons"),storageInspector_1=require("../../customHooks/storageInspector"),helpers_1=require("../../helpers"),toast_1=require("../../helpers/toast"),getTypeBadge=r=>{switch(r){case"json":return{label:"JSON",color:AppColors_1.AppColors.purple,bg:`${AppColors_1.AppColors.purple}16`};case"number":return{label:"NUM",color:AppColors_1.AppColors.warningIconGold,bg:`${AppColors_1.AppColors.warningIconGold}16`};case"boolean":return{label:"BOOL",color:AppColors_1.AppColors.emerald500,bg:`${AppColors_1.AppColors.emerald500}16`};case"null":return{label:"NULL",color:AppColors_1.AppColors.grayTextWeak,bg:`${AppColors_1.AppColors.grayTextWeak}16`};default:return{label:"STR",color:AppColors_1.AppColors.blue500,bg:`${AppColors_1.AppColors.blue500}16`}}},StorageEntryCard=react_1.default.memo(function({entry:o,isExpanded:t,onToggleExpand:l,onCopy:a,onEdit:v,onDelete:n,badge:d}){const S=(0,react_1.useMemo)(()=>o.byteSize<1024?`${o.byteSize.toLocaleString()} B`:`${(o.byteSize/1024).toLocaleString(void 0,{minimumFractionDigits:1,maximumFractionDigits:1})} KB`,[o.byteSize]),A=(0,react_1.useMemo)(()=>{if(!t)return o.value.length>250?o.value.slice(0,250)+"...":o.value;if(o.type==="json")try{const s=o.parsedValue??JSON.parse(o.value);return JSON.stringify(s,null,2)}catch{return o.value}return o.value},[t,o.value,o.type,o.parsedValue]);return<react_native_1.View style={styles.entryCard}>
1
+ "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(r,o,t,l){l===void 0&&(l=t);var a=Object.getOwnPropertyDescriptor(o,t);(!a||("get"in a?!o.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return o[t]}}),Object.defineProperty(r,l,a)}):(function(r,o,t,l){l===void 0&&(l=t),r[l]=o[t]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(r,o){Object.defineProperty(r,"default",{enumerable:!0,value:o})}):function(r,o){r.default=o}),__importStar=this&&this.__importStar||(function(){var r=function(o){return r=Object.getOwnPropertyNames||function(t){var l=[];for(var a in t)Object.prototype.hasOwnProperty.call(t,a)&&(l[l.length]=a);return l},r(o)};return function(o){if(o&&o.__esModule)return o;var t={};if(o!=null)for(var l=r(o),a=0;a<l.length;a++)l[a]!=="default"&&__createBinding(t,o,l[a]);return __setModuleDefault(t,o),t}})(),__importDefault=this&&this.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.StorageTab=void 0;const react_1=__importStar(require("react")),react_native_1=require("react-native"),TouchableScale_1=__importDefault(require("../TouchableScale")),EndOfListFooter_1=__importDefault(require("../EndOfListFooter")),AppColors_1=require("../../styles/AppColors"),AppFonts_1=require("../../styles/AppFonts"),i18n_1=require("../../i18n"),NetworkIcons_1=require("../NetworkIcons"),storageInspector_1=require("../../customHooks/storageInspector"),helpers_1=require("../../helpers"),toast_1=require("../../helpers/toast"),getTypeBadge=r=>{switch(r){case"json":return{label:"JSON",color:AppColors_1.AppColors.purple,bg:`${AppColors_1.AppColors.purple}16`};case"number":return{label:"NUM",color:AppColors_1.AppColors.warningIconGold,bg:`${AppColors_1.AppColors.warningIconGold}16`};case"boolean":return{label:"BOOL",color:AppColors_1.AppColors.emerald500,bg:`${AppColors_1.AppColors.emerald500}16`};case"null":return{label:"NULL",color:AppColors_1.AppColors.grayTextWeak,bg:`${AppColors_1.AppColors.grayTextWeak}16`};default:return{label:"STR",color:AppColors_1.AppColors.blue500,bg:`${AppColors_1.AppColors.blue500}16`}}},StorageEntryCard=react_1.default.memo(function({entry:o,isExpanded:t,onToggleExpand:l,onCopy:a,onEdit:v,onDelete:n,badge:d}){const S=(0,react_1.useMemo)(()=>o.byteSize<1024?`${o.byteSize.toLocaleString()} B`:`${(o.byteSize/1024).toLocaleString(void 0,{minimumFractionDigits:1,maximumFractionDigits:1})} KB`,[o.byteSize]),A=(0,react_1.useMemo)(()=>{if(!t)return o.value.length>250?o.value.slice(0,250)+"...":o.value;if(o.type==="json")try{const i=o.parsedValue??JSON.parse(o.value);return JSON.stringify(i,null,2)}catch{return o.value}return o.value},[t,o.value,o.type,o.parsedValue]);return<react_native_1.View style={styles.entryCard}>
2
2
 
3
3
  <react_native_1.View style={styles.entryHeader}>
4
4
  <react_native_1.View style={{flex:1,marginRight:8}}>
@@ -43,7 +43,7 @@
43
43
  <NetworkIcons_1.ChevronIcon direction={t?"up":"down"}size={10}color={AppColors_1.AppColors.purple}/>
44
44
  </react_native_1.View>}
45
45
  </TouchableScale_1.default>
46
- </react_native_1.View>});exports.StorageTab=react_1.default.memo(()=>{const{t:r}=(0,i18n_1.useTranslation)(),o=(0,react_1.useRef)(null),[t,l]=(0,react_1.useState)("asyncStorage"),[a,v]=(0,react_1.useState)("default"),[n,d]=(0,react_1.useState)([]),[S,A]=(0,react_1.useState)(!0),[s,_]=(0,react_1.useState)(""),[w,P]=(0,react_1.useState)(100),[k,M]=(0,react_1.useState)({}),[D,y]=(0,react_1.useState)(!1),[T,I]=(0,react_1.useState)("create"),[C,B]=(0,react_1.useState)(""),[m,h]=(0,react_1.useState)(""),[u,x]=(0,react_1.useState)("string"),[V,c]=(0,react_1.useState)(null),F=(0,react_1.useMemo)(()=>(0,storageInspector_1.getRegisteredMMKVInstanceIds)(),[]),g=(0,react_1.useCallback)(async()=>{A(!0);try{const e=await(0,storageInspector_1.fetchStorageEntries)(t,t==="mmkv"?a:void 0);d(e)}catch{d([])}finally{A(!1)}},[t,a]);(0,react_1.useEffect)(()=>(g(),(0,storageInspector_1.subscribeToStorageChanges)(g)),[g]);const L=e=>{M(i=>({...i,[e]:!i[e]}))},O=()=>{I("create"),B(""),h(""),x("string"),c(null),y(!0)},$=e=>{I("edit"),B(e.key),h(e.value),x(e.type==="json"?"json":e.type==="number"?"number":e.type==="boolean"?"boolean":"string"),c(null),y(!0)},R=e=>{react_native_1.Alert.alert(r("storage.deleteKeyTitle","Delete Key"),r("storage.deleteKeyMessage",{key:e,defaultValue:`Are you sure you want to delete key "${e}"?`}),[{text:r("common.cancel","Cancel"),style:"cancel"},{text:r("common.clear","Delete"),style:"destructive",onPress:async()=>{await(0,storageInspector_1.removeStorageEntry)(t,e,t==="mmkv"?a:void 0)?((0,toast_1.showToast)(`Deleted "${e}"`),g()):(0,toast_1.showToast)(`Failed to delete "${e}"`)}}])},K=()=>{react_native_1.Alert.alert(r("storage.clearTitle","Clear Storage Driver"),r("storage.clearMessage",{driver:t==="asyncStorage"?"AsyncStorage":"MMKV",defaultValue:`Are you sure you want to delete all keys in ${t==="asyncStorage"?"AsyncStorage":"MMKV"}?`}),[{text:r("common.cancel","Cancel"),style:"cancel"},{text:r("storage.clearConfirm","Clear All"),style:"destructive",onPress:async()=>{await(0,storageInspector_1.clearStorageDriver)(t,t==="mmkv"?a:void 0)&&((0,toast_1.showToast)("All storage keys wiped"),g())}}])},W=async()=>{if(!C.trim()){(0,toast_1.showToast)("Key name cannot be empty");return}let e=m;if(u==="json")try{const b=JSON.parse(m);e=JSON.stringify(b)}catch(b){c("Invalid JSON: "+b.message);return}else if(u==="number"&&isNaN(Number(m))){c("Value must be a valid number");return}await(0,storageInspector_1.setStorageEntry)(t,C.trim(),e,t==="mmkv"?a:void 0)?((0,toast_1.showToast)(T==="create"?`Added "${C.trim()}"`:`Updated "${C.trim()}"`),y(!1),g()):(0,toast_1.showToast)("Error saving storage key")},j=()=>{try{const e=JSON.parse(m);h(JSON.stringify(e,null,2)),c(null),x("json"),(0,toast_1.showToast)("Formatted JSON")}catch{c("Cannot format: invalid JSON syntax")}},p=(0,react_1.useMemo)(()=>{if(!s.trim())return n;const e=s.toLowerCase().trim().split(/\s+/).filter(Boolean);return n.filter(i=>{const b=`${i.key} ${i.value}`.toLowerCase();return e.every(H=>b.includes(H))})},[n,s]),f=(0,react_1.useMemo)(()=>n.reduce((e,i)=>e+i.byteSize,0),[n]),E=(0,react_1.useMemo)(()=>f<1024?`${f.toLocaleString()} B`:f<1024*1024?`${(f/1024).toLocaleString(void 0,{minimumFractionDigits:1,maximumFractionDigits:1})} KB`:`${(f/(1024*1024)).toLocaleString(void 0,{minimumFractionDigits:2,maximumFractionDigits:2})} MB`,[f]),z=(0,react_1.useCallback)(e=>{(0,helpers_1.copyToClipboard)(e.value,e.key),(0,toast_1.showToast)(`Copied value of "${e.key}"`)},[]),N=(0,react_1.useCallback)(({item:e})=><StorageEntryCard entry={e}isExpanded={!!k[e.key]}onToggleExpand={L}onCopy={z}onEdit={$}onDelete={R}badge={getTypeBadge(e.type)}/>,[k,z]);return<react_native_1.View style={styles.container}>
46
+ </react_native_1.View>}),DEFAULT_PAGE_SIZE=50,LOAD_MORE_STEP=10;exports.StorageTab=react_1.default.memo(()=>{const{t:r}=(0,i18n_1.useTranslation)(),o=(0,react_1.useRef)(null),[t,l]=(0,react_1.useState)("asyncStorage"),[a,v]=(0,react_1.useState)("default"),[n,d]=(0,react_1.useState)([]),[S,A]=(0,react_1.useState)(!0),[i,_]=(0,react_1.useState)(""),[w,k]=(0,react_1.useState)(DEFAULT_PAGE_SIZE),[I,M]=(0,react_1.useState)({});(0,react_1.useEffect)(()=>{k(DEFAULT_PAGE_SIZE),o.current?.scrollToOffset({offset:0,animated:!1})},[i,t,a]);const[D,y]=(0,react_1.useState)(!1),[T,F]=(0,react_1.useState)("create"),[C,B]=(0,react_1.useState)(""),[m,h]=(0,react_1.useState)(""),[u,x]=(0,react_1.useState)("string"),[V,c]=(0,react_1.useState)(null),z=(0,react_1.useMemo)(()=>(0,storageInspector_1.getRegisteredMMKVInstanceIds)(),[]),g=(0,react_1.useCallback)(async()=>{A(!0);try{const e=await(0,storageInspector_1.fetchStorageEntries)(t,t==="mmkv"?a:void 0);d(e)}catch{d([])}finally{A(!1)}},[t,a]);(0,react_1.useEffect)(()=>(g(),(0,storageInspector_1.subscribeToStorageChanges)(g)),[g]);const L=e=>{M(s=>({...s,[e]:!s[e]}))},O=()=>{F("create"),B(""),h(""),x("string"),c(null),y(!0)},$=e=>{F("edit"),B(e.key),h(e.value),x(e.type==="json"?"json":e.type==="number"?"number":e.type==="boolean"?"boolean":"string"),c(null),y(!0)},R=e=>{react_native_1.Alert.alert(r("storage.deleteKeyTitle","Delete Key"),r("storage.deleteKeyMessage",{key:e,defaultValue:`Are you sure you want to delete key "${e}"?`}),[{text:r("common.cancel","Cancel"),style:"cancel"},{text:r("common.clear","Delete"),style:"destructive",onPress:async()=>{await(0,storageInspector_1.removeStorageEntry)(t,e,t==="mmkv"?a:void 0)?((0,toast_1.showToast)(`Deleted "${e}"`),g()):(0,toast_1.showToast)(`Failed to delete "${e}"`)}}])},E=()=>{react_native_1.Alert.alert(r("storage.clearTitle","Clear Storage Driver"),r("storage.clearMessage",{driver:t==="asyncStorage"?"AsyncStorage":"MMKV",defaultValue:`Are you sure you want to delete all keys in ${t==="asyncStorage"?"AsyncStorage":"MMKV"}?`}),[{text:r("common.cancel","Cancel"),style:"cancel"},{text:r("storage.clearConfirm","Clear All"),style:"destructive",onPress:async()=>{await(0,storageInspector_1.clearStorageDriver)(t,t==="mmkv"?a:void 0)&&((0,toast_1.showToast)("All storage keys wiped"),g())}}])},K=async()=>{if(!C.trim()){(0,toast_1.showToast)("Key name cannot be empty");return}let e=m;if(u==="json")try{const b=JSON.parse(m);e=JSON.stringify(b)}catch(b){c("Invalid JSON: "+b.message);return}else if(u==="number"&&isNaN(Number(m))){c("Value must be a valid number");return}await(0,storageInspector_1.setStorageEntry)(t,C.trim(),e,t==="mmkv"?a:void 0)?((0,toast_1.showToast)(T==="create"?`Added "${C.trim()}"`:`Updated "${C.trim()}"`),y(!1),g()):(0,toast_1.showToast)("Error saving storage key")},W=()=>{try{const e=JSON.parse(m);h(JSON.stringify(e,null,2)),c(null),x("json"),(0,toast_1.showToast)("Formatted JSON")}catch{c("Cannot format: invalid JSON syntax")}},p=(0,react_1.useMemo)(()=>{if(!i.trim())return n;const e=i.toLowerCase().trim().split(/\s+/).filter(Boolean);return n.filter(s=>{const b=`${s.key} ${s.value}`.toLowerCase();return e.every(H=>b.includes(H))})},[n,i]),f=(0,react_1.useMemo)(()=>n.reduce((e,s)=>e+s.byteSize,0),[n]),j=(0,react_1.useMemo)(()=>f<1024?`${f.toLocaleString()} B`:f<1024*1024?`${(f/1024).toLocaleString(void 0,{minimumFractionDigits:1,maximumFractionDigits:1})} KB`:`${(f/(1024*1024)).toLocaleString(void 0,{minimumFractionDigits:2,maximumFractionDigits:2})} MB`,[f]),P=(0,react_1.useCallback)(e=>{(0,helpers_1.copyToClipboard)(e.value,e.key),(0,toast_1.showToast)(`Copied value of "${e.key}"`)},[]),N=(0,react_1.useCallback)(({item:e})=><StorageEntryCard entry={e}isExpanded={!!I[e.key]}onToggleExpand={L}onCopy={P}onEdit={$}onDelete={R}badge={getTypeBadge(e.type)}/>,[I,P]);return<react_native_1.View style={styles.container}>
47
47
 
48
48
  <react_native_1.View style={styles.driverTabsWrapper}>
49
49
  <react_native_1.ScrollView horizontal showsHorizontalScrollIndicator={!1}contentContainerStyle={styles.driverTabsContainer}>
@@ -72,8 +72,8 @@
72
72
  </TouchableScale_1.default>
73
73
 
74
74
 
75
- {t==="mmkv"&&F.length>1&&<react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:4,marginLeft:6}}>
76
- {F.map(e=><TouchableScale_1.default key={e}onPress={()=>v(e)}style={[styles.instancePill,a===e&&styles.instancePillActive]}>
75
+ {t==="mmkv"&&z.length>1&&<react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:4,marginLeft:6}}>
76
+ {z.map(e=><TouchableScale_1.default key={e}onPress={()=>v(e)}style={[styles.instancePill,a===e&&styles.instancePillActive]}>
77
77
  <react_native_1.Text style={[styles.instancePillText,a===e&&styles.instancePillTextActive]}>
78
78
  {e}
79
79
  </react_native_1.Text>
@@ -86,8 +86,8 @@
86
86
  <react_native_1.View style={styles.actionBar}>
87
87
  <react_native_1.View style={styles.searchBar}>
88
88
  <NetworkIcons_1.SearchIcon size={14}color={AppColors_1.AppColors.grayTextWeak}/>
89
- <react_native_1.TextInput value={s}onChangeText={_}placeholder={r("storage.searchPlaceholder","Search keys, values, types...")}placeholderTextColor={AppColors_1.AppColors.grayTextWeak}style={styles.searchInput}clearButtonMode="while-editing"/>
90
- {s.length>0&&<react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:4}}>
89
+ <react_native_1.TextInput value={i}onChangeText={_}placeholder={r("storage.searchPlaceholder","Search keys, values, types...")}placeholderTextColor={AppColors_1.AppColors.grayTextWeak}style={styles.searchInput}clearButtonMode="while-editing"/>
90
+ {i.length>0&&<react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:4}}>
91
91
  <react_native_1.View style={{backgroundColor:`${AppColors_1.AppColors.purple}20`,borderRadius:10,paddingHorizontal:6,paddingVertical:1.5}}>
92
92
  <react_native_1.Text style={{color:AppColors_1.AppColors.purple,fontSize:9.5,fontFamily:AppFonts_1.AppFonts.interBold}}>
93
93
  {p.length}
@@ -109,7 +109,7 @@
109
109
  <NetworkIcons_1.ResetIcon size={13}color={AppColors_1.AppColors.grayText}/>
110
110
  </TouchableScale_1.default>
111
111
 
112
- {n.length>0&&<TouchableScale_1.default onPress={K}style={[styles.actionIconBtn,{borderColor:`${AppColors_1.AppColors.errorColor}33`,backgroundColor:`${AppColors_1.AppColors.errorColor}12`}]}hitSlop={6}>
112
+ {n.length>0&&<TouchableScale_1.default onPress={E}style={[styles.actionIconBtn,{borderColor:`${AppColors_1.AppColors.errorColor}33`,backgroundColor:`${AppColors_1.AppColors.errorColor}12`}]}hitSlop={6}>
113
113
  <NetworkIcons_1.TrashIcon size={13}color={AppColors_1.AppColors.errorColor}/>
114
114
  </TouchableScale_1.default>}
115
115
  </react_native_1.View>
@@ -117,7 +117,7 @@
117
117
 
118
118
  <react_native_1.View style={styles.statsStrip}>
119
119
  <react_native_1.Text style={styles.statsText}>
120
- {p.length.toLocaleString()} of {n.length.toLocaleString()} Keys • {E}
120
+ {p.length.toLocaleString()} of {n.length.toLocaleString()} Keys • {j}
121
121
  </react_native_1.Text>
122
122
  <react_native_1.Text style={styles.statsSubtext}>
123
123
  {t==="asyncStorage"?"SQLite Key-Value":`MMKV (${a})`}
@@ -134,17 +134,17 @@
134
134
  <NetworkIcons_1.DatabaseIcon size={28}color={AppColors_1.AppColors.grayTextWeak}/>
135
135
  </react_native_1.View>
136
136
  <react_native_1.Text style={styles.emptyTitle}>
137
- {s.trim().length>0?"No matching keys found":`No ${t==="asyncStorage"?"AsyncStorage":"MMKV"} Keys`}
137
+ {i.trim().length>0?"No matching keys found":`No ${t==="asyncStorage"?"AsyncStorage":"MMKV"} Keys`}
138
138
  </react_native_1.Text>
139
139
  <react_native_1.Text style={styles.emptySubtitle}>
140
- {s.trim().length>0?`No keys or values match "${s}"`:`Storage is auto-detected. Tap "+ Add" above to create your first ${t==="asyncStorage"?"AsyncStorage":"MMKV"} key!`}
140
+ {i.trim().length>0?`No keys or values match "${i}"`:`Storage is auto-detected. Tap "+ Add" above to create your first ${t==="asyncStorage"?"AsyncStorage":"MMKV"} key!`}
141
141
  </react_native_1.Text>
142
- {s.trim().length>0&&<TouchableScale_1.default onPress={()=>_("")}style={{marginTop:12,paddingHorizontal:14,paddingVertical:6,borderRadius:8,backgroundColor:AppColors_1.AppColors.grayBackground,borderWidth:1,borderColor:AppColors_1.AppColors.grayBorderSecondary}}>
142
+ {i.trim().length>0&&<TouchableScale_1.default onPress={()=>_("")}style={{marginTop:12,paddingHorizontal:14,paddingVertical:6,borderRadius:8,backgroundColor:AppColors_1.AppColors.grayBackground,borderWidth:1,borderColor:AppColors_1.AppColors.grayBorderSecondary}}>
143
143
  <react_native_1.Text style={{color:AppColors_1.AppColors.brandPurple,fontSize:12,fontFamily:AppFonts_1.AppFonts.interBold}}>
144
144
  Clear Search
145
145
  </react_native_1.Text>
146
146
  </TouchableScale_1.default>}
147
- </react_native_1.View>}ListFooterComponent={p.length>0?<EndOfListFooter_1.default count={Math.min(w,p.length)}totalCount={p.length}label="keys"hasMore={p.length>w}onLoadMore={()=>P(e=>e+10)}/>:<react_native_1.View style={{height:60}}/>}/>
147
+ </react_native_1.View>}ListFooterComponent={p.length>0?<EndOfListFooter_1.default count={Math.min(w,p.length)}totalCount={p.length}label="keys"loadMoreStep={LOAD_MORE_STEP}hasMore={p.length>w}onLoadMore={()=>k(e=>e+LOAD_MORE_STEP)}/>:<react_native_1.View style={{height:60}}/>}/>
148
148
  </>}
149
149
 
150
150
 
@@ -170,13 +170,13 @@
170
170
  <react_native_1.View style={styles.inputGroup}>
171
171
  <react_native_1.View style={{flexDirection:"row",alignItems:"center",justifyContent:"space-between",marginBottom:4}}>
172
172
  <react_native_1.Text style={styles.inputLabel}>{r("storage.type","VALUE TYPE").toUpperCase()}</react_native_1.Text>
173
- {u==="json"&&<TouchableScale_1.default onPress={j}hitSlop={6}>
173
+ {u==="json"&&<TouchableScale_1.default onPress={W}hitSlop={6}>
174
174
  <react_native_1.Text style={styles.formatJsonBtn}>{r("storage.beautifyJson","Beautify JSON")}</react_native_1.Text>
175
175
  </TouchableScale_1.default>}
176
176
  </react_native_1.View>
177
177
  <react_native_1.View style={styles.typeSelectorStrip}>
178
- {["string","json","number","boolean"].map(e=>{const i=u===e;return<TouchableScale_1.default key={e}onPress={()=>{x(e),c(null)}}style={[styles.typePill,i&&styles.typePillActive]}>
179
- <react_native_1.Text style={[styles.typePillText,i&&styles.typePillTextActive]}>
178
+ {["string","json","number","boolean"].map(e=>{const s=u===e;return<TouchableScale_1.default key={e}onPress={()=>{x(e),c(null)}}style={[styles.typePill,s&&styles.typePillActive]}>
179
+ <react_native_1.Text style={[styles.typePillText,s&&styles.typePillTextActive]}>
180
180
  {e.toUpperCase()}
181
181
  </react_native_1.Text>
182
182
  </TouchableScale_1.default>})}
@@ -198,7 +198,7 @@
198
198
  <TouchableScale_1.default onPress={()=>y(!1)}style={styles.cancelBtn}>
199
199
  <react_native_1.Text style={styles.cancelBtnText}>{r("common.cancel","Cancel")}</react_native_1.Text>
200
200
  </TouchableScale_1.default>
201
- <TouchableScale_1.default onPress={W}style={styles.saveBtn}>
201
+ <TouchableScale_1.default onPress={K}style={styles.saveBtn}>
202
202
  <NetworkIcons_1.CheckIcon size={14}color={AppColors_1.AppColors.white}/>
203
203
  <react_native_1.Text style={styles.saveBtnText}>{r("storage.saveKey","Save Key")}</react_native_1.Text>
204
204
  </TouchableScale_1.default>
@@ -1,7 +1,7 @@
1
- "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(r,e,n,o){o===void 0&&(o=n);var a=Object.getOwnPropertyDescriptor(e,n);(!a||("get"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(r,o,a)}):(function(r,e,n,o){o===void 0&&(o=n),r[o]=e[n]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}):function(r,e){r.default=e}),__importStar=this&&this.__importStar||(function(){var r=function(e){return r=Object.getOwnPropertyNames||function(n){var o=[];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(o[o.length]=a);return o},r(e)};return function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var o=r(e),a=0;a<o.length;a++)o[a]!=="default"&&__createBinding(n,e,o[a]);return __setModuleDefault(n,e),n}})(),__importDefault=this&&this.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(exports,"__esModule",{value:!0});const react_1=__importStar(require("react")),react_native_1=require("react-native"),react_native_svg_1=__importStar(require("react-native-svg")),AppColors_1=require("../styles/AppColors"),constants_1=require("../constants"),helpers_1=require("../helpers"),NetworkIcons_1=require("./NetworkIcons"),AppFonts_1=require("../styles/AppFonts"),HighlightText_1=__importDefault(require("./HighlightText")),TouchableScale_1=__importDefault(require("./TouchableScale")),i18n_1=require("../i18n"),LogCard=react_1.default.memo(function({item:e,onPress:n,timelineMinStart:o,timelineTotalRange:a,isNew:u,isSelected:h,onToggleSelect:w,searchStr:b}){const{t:p}=(0,i18n_1.useTranslation)(),C=constants_1.METHOD_COLORS[e.method]??constants_1.METHOD_COLORS.ALL,i=(0,react_1.useMemo)(()=>{try{const t=new URL(e.url),d=t.host,_=t.pathname+(t.search?t.search:""),k=t.protocol==="https:";return{host:d,path:_||"/",isHttps:k}}catch{const t=e.url.toLowerCase().startsWith("https:"),d=(0,helpers_1.getPath)(e.url);return{host:(0,helpers_1.getBaseUrl)(e.url).replace(/^https?:\/\//,""),path:d||e.url,isHttps:t}}},[e.url]),x=t=>{t?.stopPropagation?.(),react_native_1.Alert.alert(p("common.openInBrowser")||"Open in Browser",`${p("common.openInBrowserPrompt")||"Are you sure you want to open this URL in your external browser?"}
1
+ "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(r,e,n,o){o===void 0&&(o=n);var a=Object.getOwnPropertyDescriptor(e,n);(!a||("get"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(r,o,a)}):(function(r,e,n,o){o===void 0&&(o=n),r[o]=e[n]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}):function(r,e){r.default=e}),__importStar=this&&this.__importStar||(function(){var r=function(e){return r=Object.getOwnPropertyNames||function(n){var o=[];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(o[o.length]=a);return o},r(e)};return function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var o=r(e),a=0;a<o.length;a++)o[a]!=="default"&&__createBinding(n,e,o[a]);return __setModuleDefault(n,e),n}})(),__importDefault=this&&this.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(exports,"__esModule",{value:!0});const react_1=__importStar(require("react")),react_native_1=require("react-native"),react_native_svg_1=__importStar(require("react-native-svg")),AppColors_1=require("../styles/AppColors"),constants_1=require("../constants"),helpers_1=require("../helpers"),NetworkIcons_1=require("./NetworkIcons"),AppFonts_1=require("../styles/AppFonts"),HighlightText_1=__importDefault(require("./HighlightText")),TouchableScale_1=__importDefault(require("./TouchableScale")),i18n_1=require("../i18n"),LogCard=react_1.default.memo(function({item:e,onPress:n,timelineMinStart:o,timelineTotalRange:a,isNew:u,isSelected:h,onToggleSelect:w,searchStr:b}){const{t:p}=(0,i18n_1.useTranslation)(),C=constants_1.METHOD_COLORS[e.method]??constants_1.METHOD_COLORS.ALL,i=(0,react_1.useMemo)(()=>{try{const t=new URL(e.url),d=t.host,_=t.pathname+(t.search?t.search:""),k=t.protocol==="https:";return{host:d,path:_||"/",isHttps:k}}catch{const t=e.url.toLowerCase().startsWith("https:"),d=(0,helpers_1.getPath)(e.url);return{host:(0,helpers_1.getBaseUrl)(e.url).replace(/^https?:\/\//,""),path:d||e.url,isHttps:t}}},[e.url]),y=t=>{t?.stopPropagation?.(),react_native_1.Alert.alert(p("common.openInBrowser")||"Open in Browser",`${p("common.openInBrowserPrompt")||"Are you sure you want to open this URL in your external browser?"}
2
2
 
3
- ${e.url}`,[{text:p("common.cancel")||"Cancel",style:"cancel"},{text:p("common.open")||"Open",onPress:()=>{react_native_1.Linking.canOpenURL(e.url).then(d=>{d?react_native_1.Linking.openURL(e.url):react_native_1.Linking.openURL(e.url).catch(()=>{})}).catch(()=>{})}}])},l=e.status===0||e.status!=null&&e.status>=400,s=e.status==null,g=(0,helpers_1.getStatusColor)(e.status),c=(0,helpers_1.getDurationColor)(e.duration),y=s?AppColors_1.AppColors.darkOrange:l?AppColors_1.AppColors.errorColor:AppColors_1.AppColors.greenColor,f=(0,react_1.useRef)(new react_native_1.Animated.Value(u?.35:0)).current;(0,react_1.useEffect)(()=>{u&&react_native_1.Animated.timing(f,{toValue:0,duration:1200,useNativeDriver:!1}).start()},[u]);const A=()=>{if(s)return"...";if(e.status===0||e.status==null)return p("network.statusFailed")||"FAILED";const t=typeof e.status=="number"?e.status:parseInt(String(e.status||0),10);return t===200?"200 OK":t===201?"201 Created":t===204?"204 No Content":t===304?"304 Not Modified":t===400?"400 Bad Req":t===401?"401 Unauth":t===403?"403 Forbidden":t===404?"404 Not Found":t===500?"500 Error":String(e.status)},v=()=>{if(s)return<NetworkIcons_1.ClockIcon color={AppColors_1.AppColors.darkOrange}size={10}/>;const t=typeof e.status=="number"?e.status:parseInt(String(e.status||0),10);return t>=200&&t<300?<NetworkIcons_1.CircleCheckIcon color={AppColors_1.AppColors.greenColor}size={10}/>:t>=300&&t<400?<NetworkIcons_1.RepeatIcon color={AppColors_1.AppColors.amber700}size={10}/>:t>=400&&t<500?<NetworkIcons_1.CircleAlertIcon color={AppColors_1.AppColors.darkOrange}size={10}/>:<NetworkIcons_1.CircleXIcon color={AppColors_1.AppColors.errorColor}size={10}/>},T=(0,helpers_1.formatDateTime)(e.startTime),V=e.url.split("?")[0].toLowerCase().endsWith(".json");return<react_native_1.View style={styles.container}>
4
- <TouchableScale_1.default onPress={n}style={[styles.card,{borderLeftWidth:3.5,borderLeftColor:y,backgroundColor:l?AppColors_1.AppColors.errorCardBg:AppColors_1.AppColors.white}]}>
3
+ ${e.url}`,[{text:p("common.cancel")||"Cancel",style:"cancel"},{text:p("common.open")||"Open",onPress:()=>{react_native_1.Linking.canOpenURL(e.url).then(d=>{d?react_native_1.Linking.openURL(e.url):react_native_1.Linking.openURL(e.url).catch(()=>{})}).catch(()=>{})}}])},l=e.status===0||e.status!=null&&e.status>=400,s=e.status==null,g=(0,helpers_1.getStatusColor)(e.status),c=(0,helpers_1.getDurationColor)(e.duration),x=s?AppColors_1.AppColors.darkOrange:l?AppColors_1.AppColors.errorColor:AppColors_1.AppColors.greenColor,f=(0,react_1.useRef)(new react_native_1.Animated.Value(u?.35:0)).current;(0,react_1.useEffect)(()=>{u&&react_native_1.Animated.timing(f,{toValue:0,duration:1200,useNativeDriver:!1}).start()},[u]);const A=()=>{if(s)return"...";if(e.status===0||e.status==null)return p("network.statusFailed")||"FAILED";const t=typeof e.status=="number"?e.status:parseInt(String(e.status||0),10);return t===200?"200 OK":t===201?"201 Created":t===204?"204 No Content":t===304?"304 Not Modified":t===400?"400 Bad Req":t===401?"401 Unauth":t===403?"403 Forbidden":t===404?"404 Not Found":t===500?"500 Error":String(e.status)},v=()=>{if(s)return<NetworkIcons_1.ClockIcon color={AppColors_1.AppColors.darkOrange}size={10}/>;const t=typeof e.status=="number"?e.status:parseInt(String(e.status||0),10);return t>=200&&t<300?<NetworkIcons_1.CircleCheckIcon color={AppColors_1.AppColors.greenColor}size={10}/>:t>=300&&t<400?<NetworkIcons_1.RepeatIcon color={AppColors_1.AppColors.amber700}size={10}/>:t>=400&&t<500?<NetworkIcons_1.CircleAlertIcon color={AppColors_1.AppColors.darkOrange}size={10}/>:<NetworkIcons_1.CircleXIcon color={AppColors_1.AppColors.errorColor}size={10}/>},T=(0,helpers_1.formatDateTime)(e.startTime),V=e.url.split("?")[0].toLowerCase().endsWith(".json");return<react_native_1.View style={styles.container}>
4
+ <TouchableScale_1.default onPress={n}style={[styles.card,{borderLeftWidth:3.5,borderLeftColor:x,backgroundColor:l?AppColors_1.AppColors.errorCardBg:AppColors_1.AppColors.white}]}>
5
5
  <react_native_1.View style={styles.cardBody}>
6
6
 
7
7
  <react_native_1.View style={styles.cardHeaderRow}>
@@ -41,12 +41,15 @@ ${e.url}`,[{text:p("common.cancel")||"Cancel",style:"cancel"},{text:p("common.op
41
41
  {A()}
42
42
  </react_native_1.Text>
43
43
  </react_native_1.View>
44
+ <react_native_1.Pressable onPress={y}hitSlop={8}style={styles.globeBtn}accessibilityRole="button"accessibilityLabel="Open in Browser">
45
+ <NetworkIcons_1.GlobeIcon color={AppColors_1.AppColors.grayTextWeak}size={12}/>
46
+ </react_native_1.Pressable>
44
47
  <NetworkIcons_1.ForwardChevronIcon color={AppColors_1.AppColors.grayTextWeak}size={13}/>
45
48
  </react_native_1.View>
46
49
  </react_native_1.View>
47
50
 
48
51
 
49
- <react_native_1.Pressable onPress={x}hitSlop={6}style={styles.urlBox}>
52
+ <react_native_1.View style={styles.urlBox}>
50
53
  <react_native_1.View style={styles.urlMainRow}>
51
54
  <HighlightText_1.default text={i.path}search={b}style={styles.pathText}highlightStyle={styles.highlight}numberOfLines={1}ellipsizeMode="middle"/>
52
55
  <react_native_1.View style={styles.urlBadgeRow}>
@@ -69,7 +72,7 @@ ${e.url}`,[{text:p("common.cancel")||"Cancel",style:"cancel"},{text:p("common.op
69
72
  {i.host||e.url}
70
73
  </react_native_1.Text>
71
74
  </react_native_1.View>
72
- </react_native_1.Pressable>
75
+ </react_native_1.View>
73
76
 
74
77
 
75
78
  <react_native_1.View style={styles.cardFooterRow}>
@@ -105,4 +108,4 @@ ${e.url}`,[{text:p("common.cancel")||"Cancel",style:"cancel"},{text:p("common.op
105
108
 
106
109
  {u&&<react_native_1.Animated.View pointerEvents="none"style={[react_native_1.StyleSheet.absoluteFill,{backgroundColor:C,opacity:f}]}/>}
107
110
  </TouchableScale_1.default>
108
- </react_native_1.View>}),styles=react_native_1.StyleSheet.create({container:{paddingHorizontal:8,paddingVertical:4,height:126,justifyContent:"center"},card:{height:118,alignSelf:"stretch",borderRadius:10,overflow:"hidden",borderWidth:1,borderColor:AppColors_1.AppColors.dividerColor,shadowColor:AppColors_1.AppColors.shadowColorString},cardBody:{height:"100%",paddingHorizontal:12,paddingTop:9,paddingBottom:7,justifyContent:"space-between"},cardHeaderRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",height:22,minHeight:22,maxHeight:22},cardHeaderLeft:{flexDirection:"row",alignItems:"center",flex:1,marginRight:8,gap:6,minWidth:0,overflow:"hidden"},cardHeaderRight:{flexDirection:"row",alignItems:"center",gap:6,flexShrink:0},smallCheckbox:{width:15,height:15,borderRadius:4,borderWidth:1.5,borderColor:AppColors_1.AppColors.grayTextWeak,alignItems:"center",justifyContent:"center",backgroundColor:AppColors_1.AppColors.white},smallCheckboxChecked:{backgroundColor:AppColors_1.AppColors.purple,borderColor:AppColors_1.AppColors.purple},serialNumber:{fontFamily:AppFonts_1.AppFonts.interBold,color:AppColors_1.AppColors.grayTextWeak,fontSize:10},methodBadge:{paddingHorizontal:7,paddingVertical:2.5,borderRadius:5,alignItems:"center",justifyContent:"center"},methodBadgeText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:9.5,lineHeight:12,letterSpacing:.5,color:AppColors_1.AppColors.white},chip:{paddingHorizontal:6,paddingVertical:2,borderRadius:4,borderWidth:1},chipText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:9,lineHeight:12},statusPill:{flexDirection:"row",alignItems:"center",gap:4,paddingHorizontal:7,paddingVertical:2.5,borderRadius:6,borderWidth:1,flexShrink:0},statusPillText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:10,lineHeight:13},urlBox:{backgroundColor:AppColors_1.AppColors.grayBackground,borderRadius:7,borderWidth:1,borderColor:AppColors_1.AppColors.dividerColor,paddingHorizontal:9,paddingVertical:5,height:48,minHeight:48,maxHeight:48,justifyContent:"center",gap:3,overflow:"hidden"},urlMainRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",gap:6},pathText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:12,lineHeight:16,color:AppColors_1.AppColors.primaryBlack,flex:1},urlBadgeRow:{flexDirection:"row",alignItems:"center",gap:4,flexShrink:0},jsonBadge:{backgroundColor:`${AppColors_1.AppColors.darkOrange}14`,borderColor:`${AppColors_1.AppColors.darkOrange}2E`,borderWidth:1,paddingHorizontal:4.5,paddingVertical:1,borderRadius:3.5},jsonBadgeText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:8.5,color:AppColors_1.AppColors.darkOrange},dupBadge:{backgroundColor:`${AppColors_1.AppColors.purple}14`,borderColor:`${AppColors_1.AppColors.purple}2E`,borderWidth:1,paddingHorizontal:4.5,paddingVertical:1,borderRadius:3.5},dupBadgeText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:8.5,color:AppColors_1.AppColors.purple},hostRow:{flexDirection:"row",alignItems:"center",gap:5,minHeight:15},protoBadge:{paddingHorizontal:4.5,paddingVertical:1,borderRadius:3.5,borderWidth:1},protoBadgeText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:8,lineHeight:10},hostText:{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:10,lineHeight:13,color:AppColors_1.AppColors.grayTextWeak,flex:1},highlight:{backgroundColor:AppColors_1.AppColors.yellowHighlight,color:AppColors_1.AppColors.primaryBlack,borderRadius:2},cardFooterRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",height:18,minHeight:18,maxHeight:18,gap:6},footerLeft:{flexDirection:"row",alignItems:"center",gap:6,flex:1,minWidth:0,overflow:"hidden"},footerRight:{flexDirection:"row",alignItems:"center",gap:5,flexShrink:0},cardDateRow:{flexDirection:"row",alignItems:"center",gap:3.5},cardDateText:{fontFamily:AppFonts_1.AppFonts.interRegular,fontSize:10,lineHeight:13,color:AppColors_1.AppColors.slate400},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",marginTop:2},waterfallBar:{height:"100%",borderRadius:1.5}});exports.default=LogCard;
111
+ </react_native_1.View>}),styles=react_native_1.StyleSheet.create({container:{paddingHorizontal:8,paddingVertical:4,height:126,justifyContent:"center"},card:{height:118,alignSelf:"stretch",borderRadius:10,overflow:"hidden",borderWidth:1,borderColor:AppColors_1.AppColors.dividerColor,shadowColor:AppColors_1.AppColors.shadowColorString},cardBody:{height:"100%",paddingHorizontal:12,paddingTop:9,paddingBottom:7,justifyContent:"space-between"},cardHeaderRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",height:22,minHeight:22,maxHeight:22},cardHeaderLeft:{flexDirection:"row",alignItems:"center",flex:1,marginRight:8,gap:6,minWidth:0,overflow:"hidden"},cardHeaderRight:{flexDirection:"row",alignItems:"center",gap:6,flexShrink:0},smallCheckbox:{width:15,height:15,borderRadius:4,borderWidth:1.5,borderColor:AppColors_1.AppColors.grayTextWeak,alignItems:"center",justifyContent:"center",backgroundColor:AppColors_1.AppColors.white},smallCheckboxChecked:{backgroundColor:AppColors_1.AppColors.purple,borderColor:AppColors_1.AppColors.purple},serialNumber:{fontFamily:AppFonts_1.AppFonts.interBold,color:AppColors_1.AppColors.grayTextWeak,fontSize:10},methodBadge:{paddingHorizontal:7,paddingVertical:2.5,borderRadius:5,alignItems:"center",justifyContent:"center"},methodBadgeText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:9.5,lineHeight:12,letterSpacing:.5,color:AppColors_1.AppColors.white},chip:{paddingHorizontal:6,paddingVertical:2,borderRadius:4,borderWidth:1},chipText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:9,lineHeight:12},statusPill:{flexDirection:"row",alignItems:"center",gap:4,paddingHorizontal:7,paddingVertical:2.5,borderRadius:6,borderWidth:1,flexShrink:0},statusPillText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:10,lineHeight:13},globeBtn:{padding:3,borderRadius:4,backgroundColor:`${AppColors_1.AppColors.grayTextWeak}12`,alignItems:"center",justifyContent:"center"},urlBox:{backgroundColor:AppColors_1.AppColors.grayBackground,borderRadius:7,borderWidth:1,borderColor:AppColors_1.AppColors.dividerColor,paddingHorizontal:9,paddingVertical:5,height:48,minHeight:48,maxHeight:48,justifyContent:"center",gap:3,overflow:"hidden"},urlMainRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",gap:6},pathText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:12,lineHeight:16,color:AppColors_1.AppColors.primaryBlack,flex:1},urlBadgeRow:{flexDirection:"row",alignItems:"center",gap:4,flexShrink:0},jsonBadge:{backgroundColor:`${AppColors_1.AppColors.darkOrange}14`,borderColor:`${AppColors_1.AppColors.darkOrange}2E`,borderWidth:1,paddingHorizontal:4.5,paddingVertical:1,borderRadius:3.5},jsonBadgeText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:8.5,color:AppColors_1.AppColors.darkOrange},dupBadge:{backgroundColor:`${AppColors_1.AppColors.purple}14`,borderColor:`${AppColors_1.AppColors.purple}2E`,borderWidth:1,paddingHorizontal:4.5,paddingVertical:1,borderRadius:3.5},dupBadgeText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:8.5,color:AppColors_1.AppColors.purple},hostRow:{flexDirection:"row",alignItems:"center",gap:5,minHeight:15},protoBadge:{paddingHorizontal:4.5,paddingVertical:1,borderRadius:3.5,borderWidth:1},protoBadgeText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:8,lineHeight:10},hostText:{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:10,lineHeight:13,color:AppColors_1.AppColors.grayTextWeak,flex:1},highlight:{backgroundColor:AppColors_1.AppColors.yellowHighlight,color:AppColors_1.AppColors.primaryBlack,borderRadius:2},cardFooterRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",height:18,minHeight:18,maxHeight:18,gap:6},footerLeft:{flexDirection:"row",alignItems:"center",gap:6,flex:1,minWidth:0,overflow:"hidden"},footerRight:{flexDirection:"row",alignItems:"center",gap:5,flexShrink:0},cardDateRow:{flexDirection:"row",alignItems:"center",gap:3.5},cardDateText:{fontFamily:AppFonts_1.AppFonts.interRegular,fontSize:10,lineHeight:13,color:AppColors_1.AppColors.slate400},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",marginTop:2},waterfallBar:{height:"100%",borderRadius:1.5}});exports.default=LogCard;
@@ -1 +1 @@
1
- export declare const LIB_VERSION = "2.4.0";
1
+ export declare const LIB_VERSION = "2.4.1";
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.LIB_VERSION=void 0,exports.LIB_VERSION="2.4.0";
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.LIB_VERSION=void 0,exports.LIB_VERSION="2.4.1";
@@ -1,4 +1,4 @@
1
- "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(u,i,l,d){d===void 0&&(d=l);var b=Object.getOwnPropertyDescriptor(i,l);(!b||("get"in b?!i.__esModule:b.writable||b.configurable))&&(b={enumerable:!0,get:function(){return i[l]}}),Object.defineProperty(u,d,b)}):(function(u,i,l,d){d===void 0&&(d=l),u[d]=i[l]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(u,i){Object.defineProperty(u,"default",{enumerable:!0,value:i})}):function(u,i){u.default=i}),__importStar=this&&this.__importStar||(function(){var u=function(i){return u=Object.getOwnPropertyNames||function(l){var d=[];for(var b in l)Object.prototype.hasOwnProperty.call(l,b)&&(d[d.length]=b);return d},u(i)};return function(i){if(i&&i.__esModule)return i;var l={};if(i!=null)for(var d=u(i),b=0;b<d.length;b++)d[b]!=="default"&&__createBinding(l,i,d[b]);return __setModuleDefault(l,i),l}})(),__importDefault=this&&this.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.setNativeFloatingButtonBadge=exports.hideNativeFloatingButton=exports.showNativeFloatingButton=exports.subscribeNativeCrashes=exports.enableNativeCrashProtection=exports.getNativeDeviceMetrics=exports.InspectCatch=exports.InspectTrackTime=exports.InspectLog=exports.registerGAPlugin=exports.getEventCategory=exports.getLastActionForReducer=exports.clearActionHistory=exports.getActionHistory=exports.subscribeReduxState=exports.getReduxState=exports.inspectorReduxMiddleware=exports.connectReduxStore=exports.ErrorBoundary=exports.CrashTab=exports.computeCrashFingerprint=exports.recordUserActionBreadcrumb=exports.recordReduxBreadcrumb=exports.recordNetworkBreadcrumb=exports.recordNavigationBreadcrumb=exports.addCrashBreadcrumb=exports.recordCustomCrash=exports.parseCrashStackTrace=exports.exportCrashReport=exports.simulateTestCrash=exports.clearCrashRecords=exports.getCrashRecords=exports.emitCrashEvent=exports.subscribeCrashEvents=exports.setupGlobalCrashHandler=exports.getCollectionEnabled=exports.getDefaultEventParameters=exports.getCurrentUserId=exports.getCurrentUserProperties=exports.clearAnalyticsEvents=exports.subscribeAnalyticsEvents=exports.logAnalyticsEvent=exports.setupAnalyticsLogger=exports.subscribeConsoleLogs=exports.clearConsoleLogs=exports.setupConsoleLogger=exports.addAxiosInterceptors=exports.subscribeNetworkLogs=exports.clearNetworkLogs=exports.setupNetworkLogger=void 0,exports.CloudPushIcon=exports.BellIcon=exports.BrandCircleIcon=exports.formatLogReport=exports.formatReduxReport=exports.formatAnalyticsReport=exports.formatCrashReport=exports.formatPushReport=exports.formatApiReport=exports.shareLogReport=exports.shareReduxReport=exports.shareAnalyticsReport=exports.shareCrashReport=exports.sharePushReport=exports.shareApiReport=exports.prunePushRecords=exports.getDiscoveredPushSources=exports.setMaxPushRecordsLimit=exports.autoSetupPushLogger=exports.simulateTestPush=exports.subscribePushEvents=exports.clearPushRecords=exports.getPushRecords=exports.recordSalesforcePush=exports.recordPushNotification=exports.pruneCrashRecords=exports.getMaxCrashLogsLimit=exports.pruneAnalyticsLogs=exports.getMaxAnalyticsLogsLimit=exports.setMaxAnalyticsLogsLimit=exports.pruneReduxHistory=exports.getMaxReduxHistoryLimit=exports.setMaxReduxHistoryLimit=exports.pruneConsoleLogs=exports.getMaxConsoleLogsLimit=exports.setMaxConsoleLogsLimit=exports.pruneNetworkLogs=exports.getMaxNetworkLogsLimit=exports.setMaxNetworkLogsLimit=exports.subscribeMemoryWarning=exports.pruneAllLogs=exports.setupMemoryWarningHandler=exports.isNativeModuleAvailable=exports.setNativeStorageItem=exports.getNativeStorageItem=exports.getNativeFpsMetrics=exports.stopNativeFpsMonitoring=exports.startNativeFpsMonitoring=exports.subscribeNativeDeviceShake=exports.subscribeNativeFloatingButtonPress=void 0,exports.isFirebaseRemoteConfigAvailable=exports.fetchRemoteConfigModuleStatus=exports.SUPPORTED_LANGUAGES=exports.I18nextProvider=exports.setTranslations=exports.addTranslations=exports.setLanguage=exports.useTranslation=exports.i18n=exports.t=exports.updateAppColorsTheme=exports.getThemeColors=exports.setAppColors=exports.AppColors=exports.setAppFonts=exports.AppFonts=exports.PushFilterType=exports.PushDetailSubTab=exports.PushActionType=exports.PushAppState=exports.BreadcrumbType=exports.CrashFilterType=exports.CrashDetailSubTab=exports.CrashExportFormat=exports.CrashType=exports.DiffResultType=exports.StackFrameType=exports.GAEventCategory=exports.AnalyticsEventSource=exports.ConsoleLogType=exports.LogFilter=exports.SettingsSubTab=exports.SettingsPage=exports.ModalAnimationType=exports.LocalFilter=exports.SortOrder=exports.StatusFilter=exports.Method=exports.ActiveTab=exports.subscribeToStorageChanges=exports.clearStorageDriver=exports.removeStorageEntry=exports.setStorageEntry=exports.fetchStorageEntries=exports.getRegisteredMMKVInstanceIds=exports.isMMKVConnected=exports.isAsyncStorageConnected=exports.connectMMKV=exports.connectAsyncStorage=exports.ModuleErrorBoundary=void 0,exports.LIB_VERSION=exports.ScreenRecorder=exports.ScreenCapture=void 0;const react_1=__importStar(require("react")),react_native_1=require("react-native"),native_1=require("@react-navigation/native"),i18n_1=require("./i18n"),ErrorBoundary_1=__importDefault(require("./components/ErrorBoundary")),MainScreen_1=__importDefault(require("./components/Inspector/MainScreen")),InspectorContext_1=require("./components/Inspector/InspectorContext"),helpers_1=require("./helpers"),settingsStore_1=require("./helpers/settingsStore"),NativeInspector_1=require("./native/NativeInspector"),networkLogger_1=require("./customHooks/networkLogger"),consoleLogger_1=require("./customHooks/consoleLogger"),logFilters_1=require("./customHooks/logFilters"),crashHandler_1=require("./customHooks/crashHandler"),pushNotificationLogger_1=require("./customHooks/pushNotificationLogger"),telemetry_1=require("./helpers/telemetry"),analyticsLogger_1=require("./customHooks/analyticsLogger"),reduxLogger_1=require("./customHooks/reduxLogger"),NativeInspector_2=require("./native/NativeInspector"),remoteConfig_1=require("./helpers/remoteConfig"),capture_1=require("./capture"),constants_1=require("./constants"),styles_1=require("./styles"),NetworkInspector=({enabled:u=!0,storage:i,navigationRef:l,appIcon:d,environment:b,initialVisible:Yr=!1,visible:xe,remoteConfig:ye})=>{(0,settingsStore_1.setCustomStorage)(i||null);const[Se,Qe]=(0,react_1.useState)(!1),[At,Ce]=(0,react_1.useState)(null),[Ot,Pe]=(0,react_1.useState)({}),[Le,Ke]=(0,react_1.useState)(90),[ve,Ye]=(0,react_1.useState)("slide"),[x,V]=(0,react_1.useState)([]),[h,W]=(0,react_1.useState)(xe??Yr??!1),[wt,Ze]=(0,react_1.useState)(!1),Zr=(0,react_1.useCallback)(()=>{Ze(!0),W(!1)},[]);(0,react_1.useEffect)(()=>{xe!==void 0&&W(xe)},[xe]);const[Mt,Nt]=(0,react_1.useState)(!1),[g,et]=(0,react_1.useState)(null),[Re,oe]=(0,react_1.useState)(new Set),[z,Et]=(0,react_1.useState)(""),[Ae,es]=(0,react_1.useState)("all"),[Oe,ts]=(0,react_1.useState)(!1),[we,rs]=(0,react_1.useState)(!1),[w,ss]=(0,react_1.useState)("all"),[jt,tt]=(0,react_1.useState)(""),[Tt,ns]=(0,react_1.useState)(""),[It,rt]=(0,react_1.useState)(null),[_t,st]=(0,react_1.useState)(null),[Ft,os]=(0,react_1.useState)("state"),[Dt,kt]=(0,react_1.useState)("response");(0,react_1.useEffect)(()=>(react_native_1.LogBox.ignoreAllLogs(u),()=>{react_native_1.LogBox.ignoreAllLogs(!1)}),[u]),(0,react_1.useEffect)(()=>{g&&(kt("response"),tt(""))},[g]);const[ae,nt]=(0,react_1.useState)(new Set),[ue,ot]=(0,react_1.useState)(new Set),[Bt,at]=(0,react_1.useState)({}),[ut,it]=(0,react_1.useState)(()=>new Map),[qt,ct]=(0,react_1.useState)({}),[Ht,as]=(0,react_1.useState)(!0),[Me,us]=(0,react_1.useState)("newest"),[Ne,is]=(0,react_1.useState)("newest"),[Vt,Gt]=(0,react_1.useState)(!0),[Ut,Wt]=(0,react_1.useState)(!0),[zt,$t]=(0,react_1.useState)(!1),[Jt,Xt]=(0,react_1.useState)(!1),[p,G]=(0,react_1.useState)("apis"),[Ee,$]=(0,react_1.useState)([]),[U,J]=(0,react_1.useState)([]),lt=(0,react_1.useRef)([]),pt=(0,react_1.useRef)([]),ft=(0,react_1.useRef)([]),[Qt,dt]=(0,react_1.useState)(null),[Kt,Yt]=(0,react_1.useState)(0),[Zt,er]=(0,react_1.useState)(0),[tr,rr]=(0,react_1.useState)(0),[sr,nr]=(0,react_1.useState)(0),je=(0,react_1.useCallback)(async()=>{try{const t=await capture_1.ScreenCapture.getMediaList(),e=t?t.length:0;return nr(e),e}catch{return nr(0),0}},[]);(0,react_1.useEffect)(()=>{h&&je()},[h,je]);const[ie,I]=(0,react_1.useState)(()=>(0,crashHandler_1.getCrashRecords)()),[or,X]=(0,react_1.useState)(null),[_,Te]=(0,react_1.useState)(50);(0,react_1.useEffect)(()=>{(0,crashHandler_1.setMaxCrashLogsLimit)(_)},[_]),(0,react_1.useEffect)(()=>{h&&(p==="apis"&&er(x.length),p==="logs"&&Yt(U.length),p==="crash"&&rr(ie.length))},[h]),(0,react_1.useEffect)(()=>{p==="apis"&&er(x.length)},[p,x.length]),(0,react_1.useEffect)(()=>{p==="logs"&&Yt(U.length)},[p,U.length]),(0,react_1.useEffect)(()=>{p==="crash"&&rr(ie.length)},[p,ie.length]);const[F,ar]=(0,react_1.useState)(()=>(0,pushNotificationLogger_1.getPushRecords)()),[ur,ir]=(0,react_1.useState)(null),[ce,cs]=(0,react_1.useState)(""),[T,ls]=(0,react_1.useState)("all"),[Ie,ps]=(0,react_1.useState)(0),[_e,gt]=(0,react_1.useState)(50);(0,react_1.useEffect)(()=>{(0,pushNotificationLogger_1.setMaxPushRecordsLimit)(_e)},[_e]),(0,react_1.useEffect)(()=>(0,pushNotificationLogger_1.subscribePushEvents)(e=>{ar(e)}),[]);const cr=(0,react_1.useMemo)(()=>p==="push"?0:Math.max(0,F.length-Ie),[p,F.length,Ie]);(0,react_1.useEffect)(()=>{h&&p==="push"&&ps(F.length)},[h,p,F.length]);const lr=(0,react_1.useMemo)(()=>{let t=F;if(T!=="all"){if(T==="foreground")t=t.filter(e=>(e.appState||"").toLowerCase()==="foreground");else if(T==="background")t=t.filter(e=>(e.appState||"").toLowerCase()==="background");else if(T==="opened")t=t.filter(e=>e.action==="opened");else if(T.startsWith("source:")){const e=T.replace("source:","").toLowerCase();t=t.filter(s=>(s.source||"").toLowerCase()===e)}}if(ce.trim()){const e=ce.trim().toLowerCase();t=t.filter(s=>!!(s.title&&s.title.toLowerCase().includes(e)||s.body&&s.body.toLowerCase().includes(e)||s.id&&s.id.toLowerCase().includes(e)||s.source&&s.source.toLowerCase().includes(e)||s.domain&&s.domain.toLowerCase().includes(e)||s.channelId&&s.channelId.toLowerCase().includes(e)||s.data&&JSON.stringify(s.data).toLowerCase().includes(e)))}return t},[F,T,ce]),[Q,Fe]=(0,react_1.useState)(300),[D,mt]=(0,react_1.useState)({info:!0,warn:!0,error:!0}),k=(0,react_1.useMemo)(()=>U.filter(e=>{const s=e.type;if(s==="info"&&!D?.info||s==="warn"&&!D?.warn||s==="error"&&!D?.error)return!1;const r=e.message||"";return![...logFilters_1.IGNORED_LOG_PREFIXES&&logFilters_1.IGNORED_LOG_PREFIXES.info||[],...logFilters_1.IGNORED_LOG_PREFIXES&&logFilters_1.IGNORED_LOG_PREFIXES.warn||[],...logFilters_1.IGNORED_LOG_PREFIXES&&logFilters_1.IGNORED_LOG_PREFIXES.error||[]].filter(f=>typeof f=="string"&&f.trim().length>0).some(f=>r.toLowerCase().trim().startsWith(f.toLowerCase().trim())||r.toLowerCase().trim().includes(f.toLowerCase().trim()))}).slice(0,Q),[U,D,Q]),[M,pr]=(0,react_1.useState)(""),[N,fr]=(0,react_1.useState)(new Set(["all"])),[dr,fs]=(0,react_1.useState)(null),[gr,ds]=(0,react_1.useState)(!1),[mr,gs]=(0,react_1.useState)("module"),[A,De]=(0,react_1.useState)({apis:!0,logs:!0,analytics:!1,redux:!1,crash:!1,push:!0,device:!1,storage:!1,debugging:!1,media:!0}),[K,ke]=(0,react_1.useState)(250),[Y,Be]=(0,react_1.useState)(150),[Z,bt]=(0,react_1.useState)(!0),[ht,ms]=(0,react_1.useState)(1800),[ee,xt]=(0,react_1.useState)(!0),[qe,yt]=(0,react_1.useState)(1),[B,He]=(0,react_1.useState)("apis"),[q,St]=(0,react_1.useState)(!1),[Ct,Pt]=(0,react_1.useState)(!0);(0,react_1.useEffect)(()=>{(0,networkLogger_1.setNetworkModuleEnabled)(!!A.apis),(0,consoleLogger_1.setConsoleModuleEnabled)(!!A.logs),(0,analyticsLogger_1.setAnalyticsModuleEnabled)(!!A.analytics),(0,reduxLogger_1.setReduxModuleEnabled)(!!A.redux),(0,crashHandler_1.setCrashModuleEnabled)(!!A.crash)},[A]),(0,react_1.useEffect)(()=>{(0,NativeInspector_1.getNativeSystemMetrics)().then(t=>{if(t){const e=t.totalPhysicalRamMb-t.residentRamMb,s=Math.max(200,Math.round(e>0?e:1500));if(ms(s),Z){const r=(0,settingsStore_1.calculateRamBasedLimits)(s);ke(r.maxNetworkLogs),Fe(r.maxConsoleLogs),Be(r.maxAnalyticsEvents),Te(r.maxCrashRecords),gt(r.maxPushRecords)}}}).catch(()=>{})},[Z]);const bs=async()=>{await(0,settingsStore_1.clearPersistedSettings)(),Qe(!1),(0,styles_1.toggleGlobalTheme)(!1),Ke(90),Ye("slide"),De({apis:!0,logs:!0,analytics:!1,redux:!1,crash:!1,push:!0,device:!1,storage:!1,debugging:!1,media:!0}),He("apis"),bt(!0);const t=(0,settingsStore_1.calculateRamBasedLimits)(ht);Te(t.maxCrashRecords),ke(t.maxNetworkLogs),Fe(t.maxConsoleLogs),Be(t.maxAnalyticsEvents),gt(t.maxPushRecords),mt({info:!0,warn:!0,error:!0}),xt(!0),yt(1),St(!1),Pt(!0),react_native_1.Alert.alert("Settings Reset","All settings have been reset to default values.")},br=(0,react_1.useRef)(!1);(0,react_1.useEffect)(()=>{let t=!1;return(0,settingsStore_1.loadSettings)().then(e=>{if(!t){if(e.isDark!=null&&(Qe(e.isDark),(0,styles_1.toggleGlobalTheme)(e.isDark)),e.modalHeightPercent!=null&&Ke(e.modalHeightPercent),e.modalAnimationType&&Ye(e.modalAnimationType),e.tabVisibility&&De(s=>({...s,...e.tabVisibility,apis:!0})),e.defaultTab&&He(e.defaultTab),e.isAutoRamLimitEnabled!=null&&bt(e.isAutoRamLimitEnabled),e.maxNetworkLogs!=null&&ke(e.maxNetworkLogs),e.maxConsoleLogs!=null&&Fe(e.maxConsoleLogs),e.maxAnalyticsEventsLimit!=null&&Be(e.maxAnalyticsEventsLimit),e.maxCrashLogs!=null&&Te(e.maxCrashLogs),e.showConsoleLevels&&mt(e.showConsoleLevels),e.reduxAutoRefresh!=null&&xt(e.reduxAutoRefresh),e.reduxExpandDepth!=null&&yt(e.reduxExpandDepth),e.showDuplicateLogs!=null&&St(e.showDuplicateLogs),e.showUpdateToast!=null&&Pt(e.showUpdateToast),e.defaultTab){const s=e.defaultTab,r={apis:!0,logs:!0,analytics:!1,redux:!1,crash:!1,device:!1,storage:!1,...e.tabVisibility||{},apis:!0};G(r[s]?s:"apis")}br.current=!0}}),()=>{t=!0}},[]),(0,react_1.useEffect)(()=>{let t=!0;if(ye!==!1)return(0,remoteConfig_1.fetchRemoteConfigModuleStatus)(typeof ye=="object"?ye:void 0).then(e=>{t&&e&&De(s=>({...s,...e,apis:e.apis??!0}))}).catch(()=>{}),()=>{t=!1}},[ye]),(0,react_1.useEffect)(()=>{br.current&&(0,settingsStore_1.saveSettings)({isDark:Se,modalHeightPercent:Le,modalAnimationType:ve,tabVisibility:A,defaultTab:B,maxNetworkLogs:K,maxConsoleLogs:Q,maxAnalyticsEventsLimit:Y,maxCrashLogs:_,isAutoRamLimitEnabled:Z,showConsoleLevels:D,reduxAutoRefresh:ee,reduxExpandDepth:qe,showDuplicateLogs:q,showUpdateToast:Ct})},[Se,Le,ve,A,B,K,Q,Y,_,Z,D,ee,qe,q]);const[le,hs]=(0,react_1.useState)(null),hr=(0,react_1.useMemo)(()=>{if(!le)return!1;const t=r=>r.replace(/^v/,"").split(".").map(n=>parseInt(n,10)||0),e=t(constants_1.LIB_VERSION),s=t(le);for(let r=0;r<3;r++){if((s[r]||0)>(e[r]||0))return!0;if((s[r]||0)<(e[r]||0))return!1}return!1},[le]);(0,react_1.useEffect)(()=>{if(typeof __DEV__>"u"||!__DEV__)return;let t=!1;return fetch("https://registry.npmjs.org/react-native-inapp-inspector/latest").then(e=>e.ok?e.json():null).then(e=>{!t&&e&&typeof e.version=="string"&&hs(e.version)}).catch(()=>{}),()=>{t=!0}},[]),(0,react_1.useEffect)(()=>{(0,reduxLogger_1.setReduxAutoRefresh)(ee)},[ee]),(0,react_1.useEffect)(()=>{p==="redux"&&!(0,reduxLogger_1.isReduxConnected)()&&G("apis"),p==="analytics"&&!(0,analyticsLogger_1.isAnalyticsConnected)()&&G("apis")},[p]);const xr=t=>{t!=="apis"&&(t==="redux"&&!(0,reduxLogger_1.isReduxConnected)()||t==="analytics"&&!(0,analyticsLogger_1.isAnalyticsConnected)()||De(e=>{const s=!e[t],r={...e,[t]:s};return!s&&p===t&&((0,InspectorContext_1.animateNextLayout)(),G("apis")),!s&&B===t&&He("apis"),r}))},Lt=(0,react_1.useCallback)(async(t,e="")=>{if(t==="apis"||t==="logs"||t==="analytics"||t==="crash"){const s=await(0,NativeInspector_1.fetchNativeCachedPage)(t,0,100,e);s&&s.items&&s.items.length>0&&(t==="apis"?V(s.items):t==="logs"?J(s.items):t==="analytics"?$(s.items):t==="crash"&&I(s.items))}},[]),yr=(0,react_1.useCallback)(t=>{t==="redux"&&!(0,reduxLogger_1.isReduxConnected)()||t==="analytics"&&!(0,analyticsLogger_1.isAnalyticsConnected)()||(et(null),Ve(null),dt(null),rt(null),st(null),X(null),typeof react_1.default.startTransition=="function"?react_1.default.startTransition(()=>{G(t),Lt(t)}):(G(t),Lt(t)),(0,telemetry_1.trackInspectorTabView)(t))},[Lt]),[Sr,Ve]=(0,react_1.useState)(null),[te,Cr]=(0,react_1.useState)(""),[o,Pr]=(0,react_1.useState)({categories:new Set(["all"]),screens:new Set,sources:new Set(["all"]),userTypes:new Set(["all"]),timeWindow:"all",payloadComplexity:"all",hasRevenue:!1,hasItems:!1,hasUserProps:!1,hasParams:!1,onlyDuplicates:!1,onlyConversions:!1,sortBy:"time_desc"}),Lr=(0,react_1.useMemo)(()=>!!(o.categories.size>0&&!o.categories.has("all")||o.screens.size>0||o.sources.size>0&&!o.sources.has("all")||o.userTypes.size>0&&!o.userTypes.has("all")||o.timeWindow!=="all"||o.payloadComplexity!=="all"||o.hasRevenue||o.hasItems||o.hasUserProps||o.hasParams||o.onlyDuplicates||o.onlyConversions||o.sortBy!=="time_desc"),[o]),vr=(0,react_1.useCallback)(()=>{Pr({categories:new Set(["all"]),screens:new Set,sources:new Set(["all"]),userTypes:new Set(["all"]),timeWindow:"all",payloadComplexity:"all",hasRevenue:!1,hasItems:!1,hasUserProps:!1,hasParams:!1,onlyDuplicates:!1,onlyConversions:!1,sortBy:"time_desc"})},[]),[Rr,xs]=(0,react_1.useState)(!1),[Ar,ys]=(0,react_1.useState)(!1),[Or,wr]=(0,react_1.useState)(new Set),pe=(0,react_1.useRef)(new Set),[Ge,vt]=(0,react_1.useState)(null),Mr=react_1.default.useContext(native_1.NavigationContext)!==void 0,E=(0,react_1.useRef)({path:"",params:null});(0,react_1.useEffect)(()=>((0,networkLogger_1.setRouteInfoProvider)(()=>E.current),()=>{(0,networkLogger_1.setRouteInfoProvider)(null)}),[]),(0,react_1.useEffect)(()=>{if(Ge){const t=(0,helpers_1.getNavigationInfo)(Ge);t?.path&&(E.current=t)}},[Ge]),(0,react_1.useEffect)(()=>{if(!l)return;const t=()=>{try{if(typeof l.isReady=="function"&&l.isReady()){const s=typeof l.getCurrentRoute=="function"?l.getCurrentRoute():null;s?.name&&(E.current={path:s.name,params:s.params||null});const r=l.getRootState();if(r){vt(r);const n=(0,helpers_1.getNavigationInfo)(r);n?.path&&(E.current=n)}}}catch{}};t();const e=typeof l.addListener=="function"?l.addListener("state",()=>{t()}):null;return()=>{e&&e()}},[l]);const P=(0,react_1.useRef)(new Map),re=(0,react_1.useRef)(new Set),[Nr,Er]=(0,react_1.useState)(new Set),fe=(0,react_1.useRef)(new react_native_1.Animated.Value(1)).current,de=(0,react_1.useRef)(new react_native_1.Animated.Value(.4)).current,ge=(0,react_1.useRef)(new react_native_1.Animated.Value(1)).current,me=(0,react_1.useRef)(new react_native_1.Animated.Value(0)).current,be=(0,react_1.useRef)(new react_native_1.Animated.Value(0)).current,S=(0,react_1.useRef)(new react_native_1.Animated.ValueXY({x:0,y:0})).current,Ue=(0,react_1.useRef)({x:0,y:0});(0,react_1.useEffect)(()=>{const t=S.x.addListener(s=>Ue.current.x=s.value),e=S.y.addListener(s=>Ue.current.y=s.value);return()=>{S.x.removeListener(t),S.y.removeListener(e)}},[S]);const We=(0,react_1.useRef)(!1),jr=(0,react_1.useRef)(react_native_1.PanResponder.create({onStartShouldSetPanResponder:()=>!1,onMoveShouldSetPanResponder:(t,e)=>Math.abs(e.dx)>4||Math.abs(e.dy)>4,onPanResponderGrant:()=>{We.current=!0,S.setOffset({x:Ue.current.x,y:Ue.current.y}),S.setValue({x:0,y:0})},onPanResponderMove:react_native_1.Animated.event([null,{dx:S.x,dy:S.y}],{useNativeDriver:!1}),onPanResponderRelease:()=>{S.flattenOffset(),setTimeout(()=>{We.current=!1},50)},onPanResponderTerminate:()=>{S.flattenOffset(),We.current=!1}})).current,Tr=(0,react_1.useCallback)(()=>{react_native_1.Animated.sequence([react_native_1.Animated.timing(be,{toValue:1,duration:320,useNativeDriver:!1}),react_native_1.Animated.timing(be,{toValue:0,duration:0,useNativeDriver:!1})]).start(),Cs()},[be]);(0,react_1.useEffect)(()=>{react_native_1.Platform.OS==="android"&&react_native_1.UIManager.setLayoutAnimationEnabledExperimental?.(!0)},[]),(0,react_1.useEffect)(()=>{if(h)return;const t=react_native_1.Animated.loop(react_native_1.Animated.sequence([react_native_1.Animated.timing(fe,{toValue:1.2,duration:800,useNativeDriver:!1}),react_native_1.Animated.timing(fe,{toValue:1,duration:800,useNativeDriver:!1})]));return t.start(),()=>t.stop()},[fe,h]),(0,react_1.useEffect)(()=>{if(h)return;const t=react_native_1.Animated.loop(react_native_1.Animated.sequence([react_native_1.Animated.timing(me,{toValue:1,duration:3200,easing:react_native_1.Easing.inOut(react_native_1.Easing.ease),useNativeDriver:!1}),react_native_1.Animated.delay(3500),react_native_1.Animated.timing(me,{toValue:0,duration:0,useNativeDriver:!1})]));return t.start(),()=>t.stop()},[me,h]),(0,react_1.useEffect)(()=>{const t=react_native_1.Animated.loop(react_native_1.Animated.sequence([react_native_1.Animated.timing(de,{toValue:1,duration:1200,useNativeDriver:!1}),react_native_1.Animated.timing(de,{toValue:.4,duration:1200,useNativeDriver:!1})]));return t.start(),()=>t.stop()},[de]),(0,react_1.useEffect)(()=>{const t=react_native_1.Animated.loop(react_native_1.Animated.sequence([react_native_1.Animated.timing(ge,{toValue:1.3,duration:800,useNativeDriver:!1}),react_native_1.Animated.timing(ge,{toValue:.8,duration:800,useNativeDriver:!1})]));return t.start(),()=>t.stop()},[ge]);const Ss=(0,react_1.useMemo)(()=>(0,NativeInspector_2.isNativeModuleAvailable)(),[]),H=(react_native_1.Platform.OS==="ios"||react_native_1.Platform.OS==="android")&&Ss;(0,react_1.useEffect)(()=>{H&&(0,NativeInspector_2.hideNativeFloatingButton)().catch(()=>{})},[H,h]),(0,react_1.useEffect)(()=>{if(!H)return;const t=(0,NativeInspector_2.subscribeNativeFloatingButtonPress)(()=>{(0,NativeInspector_2.hideNativeFloatingButton)().catch(()=>{}),W(!0)});return()=>{t()}},[H]),(0,react_1.useEffect)(()=>{if(!H)return;const t=(0,NativeInspector_2.subscribeNativeDeviceShake)(()=>{W(e=>{const s=!e;return s&&(0,NativeInspector_2.hideNativeFloatingButton)().catch(()=>{}),s})});return()=>{t()}},[H]);const Ir=(0,react_1.useRef)(h);(0,react_1.useEffect)(()=>{if(Ir.current=h,h){(0,telemetry_1.trackInspectorScreenView)("InspectorModal");const t=B==="apis"||A?.[B]?B:"apis";if(G(t),(0,telemetry_1.trackInspectorTabView)(t),lt.current.length>0){const n=(0,helpers_1.deduplicateLogs)(lt.current),c=new Set(n.map(f=>f.id));re.current=c,V(n)}pt.current.length>0&&J(pt.current),ft.current.length>0&&$(ft.current);const e=(0,reduxLogger_1.getReduxState)();e&&(Ce(typeof e=="object"?{...e}:e),Pe({...(0,reduxLogger_1.getLastActionForReducer)()}));const s=(0,crashHandler_1.getCrashRecords)();s.length>0&&I(s);const r=requestAnimationFrame(()=>{Nt(!0)});return()=>{cancelAnimationFrame(r)}}else Nt(!1),oe(new Set)},[h]),(0,react_1.useEffect)(()=>{(0,networkLogger_1.setupNetworkLogger)(),(0,networkLogger_1.clearNetworkLogs)(),(0,consoleLogger_1.setupConsoleLogger)(),(0,analyticsLogger_1.autoSetupAnalyticsLogger)(),(0,crashHandler_1.setupGlobalCrashHandler)();const t=(0,helpers_1.setupMemoryWarningHandler)(),e=Ir,s=(0,crashHandler_1.subscribeCrashEvents)(a=>{if(a.message==="__CLEARED__"){I([]),X(null);return}const y=(0,crashHandler_1.getCrashRecords)();y.length>0&&(0,NativeInspector_1.pushNativeLogRecord)("crash",JSON.stringify(y[0])),e.current&&I(y)}),r=(0,crashHandler_1.getCrashRecords)();r.length>0&&(r.forEach(a=>(0,NativeInspector_1.pushNativeLogRecord)("crash",JSON.stringify(a))),I(r));let n,c=!0;const f=(0,networkLogger_1.subscribeNetworkLogs)(a=>{if(lt.current=a,a.length>0&&(0,NativeInspector_1.pushNativeLogRecord)("apis",JSON.stringify(a[0])),!e.current)return;clearTimeout(n);const y=()=>{const R=(0,helpers_1.deduplicateLogs)(a),O=new Set(R.map(j=>j.id)),m=new Set;O.forEach(j=>{re.current.has(j)||m.add(j)}),re.current=O,m.size>0&&(m.forEach(j=>{if(!P.current.has(j)){const vs=R.find(Rs=>Rs.id===j)?.routeInfo||E.current;P.current.set(j,vs)}}),Er(m),setTimeout(()=>Er(new Set),1200)),V(R)};if(c){c=!1;const R=(0,helpers_1.deduplicateLogs)(a),O=new Set(R.map(m=>m.id));re.current=O,R.forEach(m=>{if(!P.current.has(m.id)){const j=m?.routeInfo||E.current;P.current.set(m.id,j)}}),V(R)}else n=setTimeout(y,250)});let C,he=!0;const Rt=(0,analyticsLogger_1.subscribeAnalyticsEvents)(a=>{if(ft.current=a,a.length>0&&(0,NativeInspector_1.pushNativeLogRecord)("analytics",JSON.stringify(a[0])),!e.current)return;clearTimeout(C);const y=()=>{const R=new Set(a.map(m=>m.id)),O=new Set;R.forEach(m=>{pe.current.has(m)||O.add(m)}),pe.current=R,O.size>0&&(O.forEach(m=>{P.current.has(m+1e6)||P.current.set(m+1e6,E.current)}),wr(O),setTimeout(()=>wr(new Set),1200)),$(a)};if(he){he=!1;const R=new Set(a.map(O=>O.id));pe.current=R,$(a)}else C=setTimeout(y,200)});let v,se=!0;const Je=(0,consoleLogger_1.subscribeConsoleLogs)(a=>{pt.current=a,a.length>0&&(0,NativeInspector_1.pushNativeLogRecord)("logs",JSON.stringify(a[0])),e.current&&(clearTimeout(v),se?(se=!1,J(a)):v=setTimeout(()=>{J(a)},200))}),ne=(0,reduxLogger_1.getReduxState)();ne&&(Ce(typeof ne=="object"?{...ne}:ne),Pe({...(0,reduxLogger_1.getLastActionForReducer)()}));const Xe=(0,reduxLogger_1.subscribeReduxState)(()=>{if(!e.current)return;const a=(0,reduxLogger_1.getReduxState)();Ce(a&&typeof a=="object"?{...a}:a),Pe({...(0,reduxLogger_1.getLastActionForReducer)()})});return()=>{f(),clearTimeout(n),Rt(),clearTimeout(C),Je(),clearTimeout(v),Xe(),s(),t()}},[]),(0,react_1.useEffect)(()=>{(0,networkLogger_1.setMaxNetworkLogsLimit)(K)},[K]),(0,react_1.useEffect)(()=>{(0,crashHandler_1.setMaxCrashLogsLimit)(_)},[_]),(0,react_1.useEffect)(()=>{Gt(!0),Wt(!0),$t(!1),Xt(!1),tt("")},[g]);const L=(0,react_1.useMemo)(()=>{let t=x.filter(e=>{if(w&&w!=="all"){if(w==="errors"){if(!(e.status===0||e.status==null||typeof e.status=="number"&&e.status>=400))return!1}else if(w==="success"){if(!(typeof e.status=="number"&&e.status>=200&&e.status<400))return!1}else if(w==="slow"){if((e.duration||0)<500)return!1}else if(w==="graphql"){if(!((e.url||"").toLowerCase().includes("graphql")||(e.client||"").toLowerCase().includes("graphql")||(e.client||"").toLowerCase().includes("apollo")))return!1}else if(e.method?.toUpperCase()!==w.toUpperCase())return!1}if(ae.size>0&&![...ae].some(r=>{if(r==="ALL")return!0;if(r==="Failed")return e.status===0||e.status==null;const n=parseInt(r,10);return isNaN(n)?String(e.status)[0]===r[0]:Number(e.status)===n})||ue.size>0&&![...ue].some(r=>r==="ALL"?!0:e.method?.toUpperCase()===r))return!1;if(z&&z.trim().length>0){const s=P.current.get(e.id)?.path||"";if(!(0,helpers_1.matchNetworkLogQuery)(e,z,s,{scope:Ae,isRegex:Oe,isCaseSensitive:we}))return!1}return!0});if(Me==="oldest"&&(t=[...t].reverse()),!q){const e=[];for(const s of t){const r=e[e.length-1];r&&r.method===s.method&&r.url===s.url&&r.status===s.status?e[e.length-1]={...r,duplicateCount:(r.duplicateCount||1)+1}:e.push({...s,duplicateCount:1})}t=e}return t},[x,z,Ae,Oe,we,w,ae,ue,Me,q]),_r=(0,react_1.useMemo)(()=>{const t=new Set;return x.forEach(e=>{e.method&&t.add(e.method.toUpperCase())}),["ALL",...Array.from(t)]},[x]),Fr=(0,react_1.useCallback)((t,e)=>{at(s=>{const r=s[t]||new Set(["success","failed","loading"]),n=new Set(r);return n.has(e)?n.delete(e):n.add(e),{...s,[t]:n}})},[]),ze=(0,react_1.useMemo)(()=>{if(E.current?.path){const t=E.current.path.split(" \u2794 ").map(e=>e.trim()).filter(Boolean);return t.length>0?t[t.length-1]:E.current.path}if(L.length>0){const t=L[0],e=P.current.get(t.id)||t?.routeInfo;return(0,helpers_1.getLogPageName)(t,e)}return""},[L,Ge]),Dr=(0,react_1.useCallback)(t=>{it(e=>{const s=new Map(e),r=s.has(t)?s.get(t):t===ze;return s.set(t,!r),s})},[ze]),kr=(0,react_1.useCallback)((t,e=50)=>{ct(s=>({...s,[t]:(s[t]||50)+e}))},[]),Br=(0,react_1.useMemo)(()=>{const t=[],e=new Map;for(let r=0;r<L.length;r++){const n=L[r],c=P.current.get(n.id)||n?.routeInfo,f=(0,helpers_1.getLogPageName)(n,c);let C=e.get(f);C||(C={pageName:f,color:(0,helpers_1.getDomainColor)(f),logs:[]},e.set(f,C)),C.logs.push(n)}let s=0;return e.forEach(r=>{let n=0,c=0,f=0;r.logs.forEach(v=>{v.status==null?f++:v.status===0||v.status>=400?c++:n++});const C=Bt[r.pageName]||new Set(["success","failed","loading"]),he=ut.has(r.pageName)?!ut.get(r.pageName):r.pageName!==ze,Rt=r.logs[0]?.startTime||0;if(t.push({type:"header",id:`hdr-${r.pageName}`,pageName:r.pageName,color:r.color,stats:{success:n,failed:c,loading:f},timestamp:Rt,activeFilters:C,isCollapsed:he,isFirst:s===0}),s++,!he){const v=r.logs.filter(y=>y.status==null?C.has("loading"):y.status===0||y.status>=400?C.has("failed"):C.has("success")),se=qt[r.pageName]||50,Je=v.slice(0,se),ne=v.length>se;Je.forEach(y=>{t.push({type:"log",id:`log-${y.id}`,log:y,isLast:!1,color:r.color})});const Xe=Math.max(0,v.length-se),a=Math.min(Xe||50,50);t.push({type:"loadMore",id:`loadmore-${r.pageName}`,pageName:r.pageName,color:r.color,remainingCount:Xe,totalCount:v.length,loadedCount:Je.length,loadMoreStep:a,hasMore:ne})}}),t},[L,x,Bt,ut,ze,qt]),{minStart:qr,totalRange:Hr}=(0,react_1.useMemo)(()=>{if(L.length===0)return{minStart:0,totalRange:0};const t=Math.min(...L.map(s=>s.startTime)),e=Math.max(...L.map(s=>s.startTime+(s.duration||10)));return{minStart:t,totalRange:e-t}},[L]),$e=(0,react_1.useMemo)(()=>{if(!g)return null;const t=x.findIndex(e=>e.id===g.id);if(t===-1)return null;for(let e=t+1;e<x.length;e++){const s=x[e];if(s.url===g.url&&s.method===g.method)return s}return null},[g,x]),Vr=$e?$e.request:null,Gr=$e?$e.response:null,Ur=(0,react_1.useMemo)(()=>{let t=Ee;if(te&&te.trim().length>0){const r=te.trim().toLowerCase().split(/\s+/).filter(Boolean);t=t.filter(n=>{const c=[n.name||"",JSON.stringify(n.params||""),JSON.stringify(n.userProperties||""),n.screenName||"",n.pageTitle||"",n.userId||"",n.source||""].join(" ").toLowerCase();return r.every(f=>c.includes(f))})}if(o.categories.size>0&&!o.categories.has("all")&&(t=t.filter(r=>{const n=(0,helpers_1.getEventCategory)(r.name);return o.categories.has(n)})),o.timeWindow!=="all"){const r=Date.now(),n=o.timeWindow==="1m"?r-60*1e3:o.timeWindow==="5m"?r-300*1e3:o.timeWindow==="15m"?r-900*1e3:r-3600*1e3;t=t.filter(c=>c.timestamp>=n)}if(o.sources.size>0&&!o.sources.has("all")&&(t=t.filter(r=>o.sources.has(r.source||"manual"))),o.userTypes.size>0&&!o.userTypes.has("all")&&(t=t.filter(r=>{const n=!!(r.userId&&r.userId.trim()!=="");return!!(o.userTypes.has("identified")&&n||o.userTypes.has("anonymous")&&!n)})),o.payloadComplexity!=="all"&&(o.payloadComplexity==="none"?t=t.filter(r=>!r.params||Object.keys(r.params).length===0):o.payloadComplexity==="simple"?t=t.filter(r=>r.params&&Object.keys(r.params).length<=3):o.payloadComplexity==="heavy"&&(t=t.filter(r=>r.params&&Object.keys(r.params).length>3))),o.onlyConversions){const r=["purchase","item_purchase","ecommerce_purchase","sign_up","login","lead","generate_lead","tutorial_complete","add_payment_info","begin_checkout","spend_virtual_currency"];t=t.filter(n=>r.some(c=>n.name.toLowerCase().includes(c)))}o.screens.size>0&&(t=t.filter(r=>{const n=r.screenName||r.params?.firebase_screen||r.params?.screen_name||r.params?.firebase_screen_class||r.screenClass||"";return o.screens.has(n)})),o.hasRevenue&&(t=t.filter(r=>r.params?.value!=null&&!isNaN(Number(r.params.value))||r.params?.price!=null&&!isNaN(Number(r.params.price)))),o.hasItems&&(t=t.filter(r=>Array.isArray(r.params?.items)&&r.params.items.length>0)),o.hasUserProps&&(t=t.filter(r=>r.userProperties&&Object.keys(r.userProperties).length>0)),o.hasParams&&(t=t.filter(r=>r.params&&Object.keys(r.params).length>0));const e=[];for(const r of t){if(e.length===0){e.push({...r,count:1});continue}const n=e[e.length-1];n.name===r.name&&JSON.stringify(n.params)===JSON.stringify(r.params)&&JSON.stringify(n.userProperties)===JSON.stringify(r.userProperties)?(n.count=(n.count||1)+1,n.timestamp=r.timestamp,n.id=r.id):e.push({...r,count:1})}let s=e;return o.onlyDuplicates&&(s=s.filter(r=>(r.count||1)>1)),o.sortBy==="time_asc"?s=[...s].sort((r,n)=>r.timestamp-n.timestamp):o.sortBy==="revenue_desc"?s=[...s].sort((r,n)=>{const c=Number(r.params?.value??r.params?.price??0);return Number(n.params?.value??n.params?.price??0)-c}):o.sortBy==="count_desc"&&(s=[...s].sort((r,n)=>(n.count||1)-(r.count||1))),s.slice(0,Y)},[Ee,te,o,Y]),Wr=(0,react_1.useMemo)(()=>{let t=k;if(N.size>0&&!N.has("all")&&(t=t.filter(e=>!!(N.has("user-log")&&e.sourceMethod==="log"||N.has("info")&&(e.sourceMethod==="info"||e.type==="info"&&e.sourceMethod!=="log")||N.has("warn")&&(e.type==="warn"||e.sourceMethod==="warn")||N.has("error")&&(e.type==="error"||e.sourceMethod==="error")||N.has("analytics")&&e.message?.toLowerCase().includes("[analytics error]")))),M&&M.trim().length>0){const e=M.trim().toLowerCase().split(/\s+/).filter(Boolean);t=t.filter(s=>{const r=[s.message||"",s.caller||"",s.type||"",s.sourceMethod||"",s.stack||""].join(" ").toLowerCase();return e.every(n=>n==="error"||n==="err"?s.type==="error"||r.includes(n):n==="warn"||n==="warning"?s.type==="warn"||r.includes(n):n==="info"&&s.type==="info"||r.includes(n))})}if(t=[...t].sort((e,s)=>Ne==="newest"?s.timestamp-e.timestamp:e.timestamp-s.timestamp),!q){const e=[];for(const s of t){const r=e[e.length-1];r&&r.type===s.type&&r.sourceMethod===s.sourceMethod&&r.message===s.message?e[e.length-1]={...r,duplicateCount:(r.duplicateCount||1)+1}:e.push({...s,duplicateCount:1})}t=e}return t},[k,N,M,Ne,q]),zr=(0,react_1.useMemo)(()=>{let t=k;if(M&&M.trim().length>0){const s=M.trim().toLowerCase().split(/\s+/).filter(Boolean);t=k.filter(r=>{const n=[r.message||"",r.caller||"",r.type||"",r.sourceMethod||"",r.stack||""].join(" ").toLowerCase();return s.every(c=>c==="error"||c==="err"?r.type==="error"||n.includes(c):c==="warn"||c==="warning"?r.type==="warn"||n.includes(c):c==="info"&&r.type==="info"||n.includes(c))})}const e=k.length;return{all:`${t.length}/${e}`,info:`${t.filter(s=>s.sourceMethod==="info"||s.type==="info"&&s.sourceMethod!=="log").length}/${e}`,warn:`${t.filter(s=>s.type==="warn"||s.sourceMethod==="warn").length}/${e}`,error:`${t.filter(s=>s.type==="error"||s.sourceMethod==="error").length}/${e}`,"user-log":`${t.filter(s=>s.sourceMethod==="log").length}/${e}`,analytics:`${t.filter(s=>s.message.toLowerCase().includes("[analytics error]")).length}/${e}`}},[k,M]),$r=(0,react_1.useCallback)(()=>{W(!1),Ze(!1),setTimeout(()=>{et(null),Ve(null),dt(null),rt(null),st(null),X(null)},300)},[]);function Cs(){(0,networkLogger_1.clearNetworkLogs)(),V([]),oe(new Set),at({}),it(new Map),ct({}),nt(new Set),ot(new Set),Et(""),re.current=new Set,P.current=new Map,(0,analyticsLogger_1.clearAnalyticsEvents)(),$([]),Cr(""),pe.current=new Set,(0,consoleLogger_1.clearConsoleLogs)(),J([]),fr(new Set(["all"])),pr("")}function Jr(){if(p==="logs"){react_native_1.Alert.alert("Clear Logs","Are you sure you want to clear all console logs?",[{text:"Cancel",style:"cancel"},{text:"Clear All",onPress:()=>{(0,consoleLogger_1.clearConsoleLogs)(),J([])},style:"destructive"}]);return}if(p==="analytics"){react_native_1.Alert.alert("Clear Analytics","Are you sure you want to clear all analytics events?",[{text:"Cancel",style:"cancel"},{text:"Clear All",onPress:()=>{(0,analyticsLogger_1.clearAnalyticsEvents)(),$([]),Ve(null),pe.current=new Set},style:"destructive"}]);return}if(p==="redux"){react_native_1.Alert.alert("Clear Redux Timeline","Are you sure you want to clear the dispatched action history?",[{text:"Cancel",style:"cancel"},{text:"Clear All",onPress:()=>{(0,reduxLogger_1.clearActionHistory)(),Pe({})},style:"destructive"}]);return}if(p==="crash"){react_native_1.Alert.alert("Clear Crash History","Are you sure you want to clear all intercepted crash records?",[{text:"Cancel",style:"cancel"},{text:"Clear All",onPress:()=>{(0,crashHandler_1.clearCrashRecords)(),I([]),X(null)},style:"destructive"}]);return}Re.size>0?(V(t=>t.filter(e=>!Re.has(e.id))),oe(new Set)):react_native_1.Alert.alert("Clear Logs","Are you sure you want to clear all network logs?",[{text:"Cancel",style:"cancel"},{text:"Clear All",onPress:Ps,style:"destructive"}])}function Ps(){(0,networkLogger_1.clearNetworkLogs)(),V([]),oe(new Set),at({}),it(new Map),ct({}),nt(new Set),ot(new Set),re.current=new Set,P.current=new Map}const Xr=(0,react_1.useMemo)(()=>{if(!g)return"";try{const e=new URL(g.url).pathname.split("/").filter(Boolean);return e.length>0?`/${e.slice(-2).join("/")}`:"/"}catch{const t=g.url.split("/").filter(Boolean);return t.length>0?`/${t.slice(-2).join("/")}`:g.url}},[g]),Qr=(0,react_1.useMemo)(()=>g?(0,helpers_1.formatDisplayUrl)(g.url):"",[g]),Kr=(0,react_1.useCallback)(t=>{oe(e=>{const s=new Set(e);return s.has(t)?s.delete(t):s.add(t),s})},[]),Ls=(0,react_1.useMemo)(()=>({visible:h,setVisible:W,closeModal:$r,isMinimized:wt,setIsMinimized:Ze,minimizeInspector:Zr,isReady:Mt,enabled:u,isEnabled:u,appIcon:d,environment:b,modalHeightPercent:Le,setModalHeightPercent:Ke,modalAnimationType:ve,setModalAnimationType:Ye,hasNavigationContext:Mr,setNavState:vt,activeTab:p,switchActiveTab:yr,tabVisibility:A,toggleTabVisibility:xr,lastReadApisCount:Zt,lastReadLogsCount:Kt,mediaCount:sr,refreshMediaCount:je,selected:g,setSelected:et,selectedEvent:Sr,setSelectedEvent:Ve,selectedLog:Qt,setSelectedLog:dt,showHeaderInfo:Ht,setShowHeaderInfo:as,settingsPage:dr,setSettingsPage:fs,isAboutOpen:gr,setIsAboutOpen:ds,updateAvailable:hr,latestNpmVersion:le,clearAnim:be,activePulseAnim:de,unreadPulseAnim:ge,runClearAllWithAnimation:Tr,useNativeFab:H,fabPan:S,fabPanResponder:jr,fabDraggedRef:We,pulseAnim:fe,fabShineAnim:me,logs:x,filteredLogs:L,groupedData:Br,search:z,setSearch:Et,searchScope:Ae,setSearchScope:es,isRegexSearch:Oe,setIsRegexSearch:ts,isCaseSensitive:we,setIsCaseSensitive:rs,quickFilter:w,setQuickFilter:ss,statusFilters:ae,setStatusFilters:nt,methodFilters:ue,setMethodFilters:ot,availableMethods:_r,sortOrder:Me,setSortOrder:us,selectedLogs:Re,toggleSelect:Kr,minStart:qr,totalRange:Hr,newLogIds:Nr,toggleSectionFilter:Fr,toggleSectionCollapse:Dr,loadMoreSection:kr,handleDelete:Jr,detailTitle:Xr,detailDisplayUrl:Qr,apiDetailActiveTab:Dt,setApiDetailActiveTab:kt,detailSearch:jt,setDetailSearch:tt,reqExpanded:Vt,setReqExpanded:Gt,resExpanded:Ut,setResExpanded:Wt,showReqDiff:zt,setShowReqDiff:$t,showResDiff:Jt,setShowResDiff:Xt,prevRequestData:Vr,prevResponseData:Gr,logRouteMapRef:P,consoleLogs:U,visibleConsoleLogs:k,filteredConsoleLogs:Wr,logSearch:M,setLogSearch:pr,logFilters:N,setLogFilters:fr,logCounts:zr,logSortOrder:Ne,setLogSortOrder:is,analyticsEvents:Ee,filteredAnalyticsEvents:Ur,analyticsSearch:te,setAnalyticsSearch:Cr,analyticsFilters:o,setAnalyticsFilters:Pr,isAnalyticsFilterApplied:Lr,resetAnalyticsFilters:vr,newEventIds:Or,isAnalyticsLayoutReady:Rr,setIsAnalyticsLayoutReady:xs,analyticsHeaderExpanded:Ar,setAnalyticsHeaderExpanded:ys,reduxState:At,setReduxState:Ce,reduxLastActionMap:Ot,reduxSearch:Tt,setReduxSearch:ns,selectedReduxSlice:It,setSelectedReduxSlice:rt,selectedReduxAction:_t,setSelectedReduxAction:st,reduxActiveSubTab:Ft,setReduxActiveSubTab:os,crashRecords:ie,setCrashRecords:I,selectedCrash:or,setSelectedCrash:X,lastReadCrashesCount:tr,maxCrashLogs:_,setMaxCrashLogs:Te,clearAllCrashes:()=>{(0,crashHandler_1.clearCrashRecords)(),I([]),X(null)},pushRecords:F,filteredPushRecords:lr,selectedPush:ur,setSelectedPush:ir,pushSearch:ce,setPushSearch:cs,pushQuickFilter:T,setPushQuickFilter:ls,lastReadPushCount:Ie,unreadPushCount:cr,maxPushLogs:_e,setMaxPushLogs:gt,clearAllPushLogs:()=>{(0,pushNotificationLogger_1.clearPushRecords)(),ar([]),ir(null)},simulatePush:(t,e)=>{(0,pushNotificationLogger_1.simulateTestPush)(t,e)},settingsActiveSubTab:mr,setSettingsActiveSubTab:gs,defaultTab:B,setDefaultTab:He,isDark:Se,setIsDark:Qe,showDuplicateLogs:q,setShowDuplicateLogs:St,showUpdateToast:Ct,setShowUpdateToast:Pt,showConsoleLevels:D,setShowConsoleLevels:mt,resetToDefaults:bs,storage:i,maxNetworkLogs:K,setMaxNetworkLogs:ke,maxConsoleLogs:Q,setMaxConsoleLogs:Fe,maxAnalyticsEventsLimit:Y,setMaxAnalyticsEventsLimit:Be,isAutoRamLimitEnabled:Z,setIsAutoRamLimitEnabled:bt,deviceFreeRamMb:ht,reduxAutoRefresh:ee,setReduxAutoRefreshState:xt,reduxExpandDepth:qe,setReduxExpandDepth:yt}),[h,$r,Mt,u,d,b,Le,ve,Mr,vt,p,yr,A,xr,Zt,Kt,sr,je,g,Sr,Qt,Ht,dr,gr,hr,le,be,de,ge,Tr,H,S,jr,fe,me,x,L,Br,z,Ae,Oe,we,w,ae,ue,_r,Me,Re,Kr,qr,Hr,Nr,Fr,Dr,kr,Jr,Xr,Qr,Dt,jt,Vt,Ut,zt,Jt,Vr,Gr,U,k,Wr,M,N,zr,Ne,Ee,Ur,te,o,Lr,vr,Or,Rr,Ar,At,Ot,Tt,It,_t,Ft,ie,or,tr,_,F,lr,ur,ce,T,Ie,cr,_e,mr,B,Se,q,Ct,D,i,K,Q,Y,Z,ht,ee,qe,wt]);return<InspectorContext_1.InspectorContext.Provider value={Ls}>
1
+ "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(u,i,l,g){g===void 0&&(g=l);var h=Object.getOwnPropertyDescriptor(i,l);(!h||("get"in h?!i.__esModule:h.writable||h.configurable))&&(h={enumerable:!0,get:function(){return i[l]}}),Object.defineProperty(u,g,h)}):(function(u,i,l,g){g===void 0&&(g=l),u[g]=i[l]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(u,i){Object.defineProperty(u,"default",{enumerable:!0,value:i})}):function(u,i){u.default=i}),__importStar=this&&this.__importStar||(function(){var u=function(i){return u=Object.getOwnPropertyNames||function(l){var g=[];for(var h in l)Object.prototype.hasOwnProperty.call(l,h)&&(g[g.length]=h);return g},u(i)};return function(i){if(i&&i.__esModule)return i;var l={};if(i!=null)for(var g=u(i),h=0;h<g.length;h++)g[h]!=="default"&&__createBinding(l,i,g[h]);return __setModuleDefault(l,i),l}})(),__importDefault=this&&this.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.setNativeFloatingButtonBadge=exports.hideNativeFloatingButton=exports.showNativeFloatingButton=exports.subscribeNativeCrashes=exports.enableNativeCrashProtection=exports.getNativeDeviceMetrics=exports.InspectCatch=exports.InspectTrackTime=exports.InspectLog=exports.registerGAPlugin=exports.getEventCategory=exports.getLastActionForReducer=exports.clearActionHistory=exports.getActionHistory=exports.subscribeReduxState=exports.getReduxState=exports.inspectorReduxMiddleware=exports.connectReduxStore=exports.ErrorBoundary=exports.CrashTab=exports.computeCrashFingerprint=exports.recordUserActionBreadcrumb=exports.recordReduxBreadcrumb=exports.recordNetworkBreadcrumb=exports.recordNavigationBreadcrumb=exports.addCrashBreadcrumb=exports.recordCustomCrash=exports.parseCrashStackTrace=exports.exportCrashReport=exports.simulateTestCrash=exports.clearCrashRecords=exports.getCrashRecords=exports.emitCrashEvent=exports.subscribeCrashEvents=exports.setupGlobalCrashHandler=exports.getCollectionEnabled=exports.getDefaultEventParameters=exports.getCurrentUserId=exports.getCurrentUserProperties=exports.clearAnalyticsEvents=exports.subscribeAnalyticsEvents=exports.logAnalyticsEvent=exports.setupAnalyticsLogger=exports.subscribeConsoleLogs=exports.clearConsoleLogs=exports.setupConsoleLogger=exports.addAxiosInterceptors=exports.subscribeNetworkLogs=exports.clearNetworkLogs=exports.setupNetworkLogger=void 0,exports.CloudPushIcon=exports.BellIcon=exports.BrandCircleIcon=exports.formatLogReport=exports.formatReduxReport=exports.formatAnalyticsReport=exports.formatCrashReport=exports.formatPushReport=exports.formatApiReport=exports.shareLogReport=exports.shareReduxReport=exports.shareAnalyticsReport=exports.shareCrashReport=exports.sharePushReport=exports.shareApiReport=exports.prunePushRecords=exports.getDiscoveredPushSources=exports.setMaxPushRecordsLimit=exports.autoSetupPushLogger=exports.simulateTestPush=exports.subscribePushEvents=exports.clearPushRecords=exports.getPushRecords=exports.recordSalesforcePush=exports.recordPushNotification=exports.pruneCrashRecords=exports.getMaxCrashLogsLimit=exports.pruneAnalyticsLogs=exports.getMaxAnalyticsLogsLimit=exports.setMaxAnalyticsLogsLimit=exports.pruneReduxHistory=exports.getMaxReduxHistoryLimit=exports.setMaxReduxHistoryLimit=exports.pruneConsoleLogs=exports.getMaxConsoleLogsLimit=exports.setMaxConsoleLogsLimit=exports.pruneNetworkLogs=exports.getMaxNetworkLogsLimit=exports.setMaxNetworkLogsLimit=exports.subscribeMemoryWarning=exports.pruneAllLogs=exports.setupMemoryWarningHandler=exports.isNativeModuleAvailable=exports.setNativeStorageItem=exports.getNativeStorageItem=exports.getNativeFpsMetrics=exports.stopNativeFpsMonitoring=exports.startNativeFpsMonitoring=exports.subscribeNativeDeviceShake=exports.subscribeNativeFloatingButtonPress=void 0,exports.isFirebaseRemoteConfigAvailable=exports.fetchRemoteConfigModuleStatus=exports.SUPPORTED_LANGUAGES=exports.I18nextProvider=exports.setTranslations=exports.addTranslations=exports.setLanguage=exports.useTranslation=exports.i18n=exports.t=exports.updateAppColorsTheme=exports.getThemeColors=exports.setAppColors=exports.AppColors=exports.setAppFonts=exports.AppFonts=exports.PushFilterType=exports.PushDetailSubTab=exports.PushActionType=exports.PushAppState=exports.BreadcrumbType=exports.CrashFilterType=exports.CrashDetailSubTab=exports.CrashExportFormat=exports.CrashType=exports.DiffResultType=exports.StackFrameType=exports.GAEventCategory=exports.AnalyticsEventSource=exports.ConsoleLogType=exports.LogFilter=exports.SettingsSubTab=exports.SettingsPage=exports.ModalAnimationType=exports.LocalFilter=exports.SortOrder=exports.StatusFilter=exports.Method=exports.ActiveTab=exports.subscribeToStorageChanges=exports.clearStorageDriver=exports.removeStorageEntry=exports.setStorageEntry=exports.fetchStorageEntries=exports.getRegisteredMMKVInstanceIds=exports.isMMKVConnected=exports.isAsyncStorageConnected=exports.connectMMKV=exports.connectAsyncStorage=exports.ModuleErrorBoundary=void 0,exports.LIB_VERSION=exports.ScreenRecorder=exports.ScreenCapture=void 0;const react_1=__importStar(require("react")),react_native_1=require("react-native"),native_1=require("@react-navigation/native"),i18n_1=require("./i18n"),ErrorBoundary_1=__importDefault(require("./components/ErrorBoundary")),MainScreen_1=__importDefault(require("./components/Inspector/MainScreen")),InspectorContext_1=require("./components/Inspector/InspectorContext"),helpers_1=require("./helpers"),settingsStore_1=require("./helpers/settingsStore"),NativeInspector_1=require("./native/NativeInspector"),networkLogger_1=require("./customHooks/networkLogger"),consoleLogger_1=require("./customHooks/consoleLogger"),logFilters_1=require("./customHooks/logFilters"),crashHandler_1=require("./customHooks/crashHandler"),pushNotificationLogger_1=require("./customHooks/pushNotificationLogger"),telemetry_1=require("./helpers/telemetry"),analyticsLogger_1=require("./customHooks/analyticsLogger"),reduxLogger_1=require("./customHooks/reduxLogger"),NativeInspector_2=require("./native/NativeInspector"),remoteConfig_1=require("./helpers/remoteConfig"),capture_1=require("./capture"),constants_1=require("./constants"),styles_1=require("./styles"),NetworkInspector=({enabled:u=!0,storage:i,navigationRef:l,appIcon:g,environment:h,initialVisible:Yr=!1,visible:Ce,remoteConfig:Pe})=>{(0,settingsStore_1.setCustomStorage)(i||null);const[Le,Qe]=(0,react_1.useState)(!1),[At,ve]=(0,react_1.useState)(null),[Ot,Re]=(0,react_1.useState)({}),[Ae,Ke]=(0,react_1.useState)(90),[Oe,Ye]=(0,react_1.useState)("slide"),[y,G]=(0,react_1.useState)([]),[x,J]=(0,react_1.useState)(Ce??Yr??!1),[wt,Ze]=(0,react_1.useState)(!1),Zr=(0,react_1.useCallback)(()=>{Ze(!0),J(!1)},[]);(0,react_1.useEffect)(()=>{Ce!==void 0&&J(Ce)},[Ce]);const[Et,Mt]=(0,react_1.useState)(!1),[m,et]=(0,react_1.useState)(null),[we,ae]=(0,react_1.useState)(new Set),[U,Nt]=(0,react_1.useState)(""),[ue,es]=(0,react_1.useState)("all"),[ie,ts]=(0,react_1.useState)(!1),[ce,rs]=(0,react_1.useState)(!1),[R,ss]=(0,react_1.useState)("all"),[jt,tt]=(0,react_1.useState)(""),[Tt,ns]=(0,react_1.useState)(""),[It,rt]=(0,react_1.useState)(null),[_t,st]=(0,react_1.useState)(null),[Ft,os]=(0,react_1.useState)("state"),[Dt,kt]=(0,react_1.useState)("response");(0,react_1.useEffect)(()=>(react_native_1.LogBox.ignoreAllLogs(u),()=>{react_native_1.LogBox.ignoreAllLogs(!1)}),[u]),(0,react_1.useEffect)(()=>{m&&(kt("response"),tt(""))},[m]);const[X,nt]=(0,react_1.useState)(new Set),[Q,ot]=(0,react_1.useState)(new Set),[Bt,at]=(0,react_1.useState)({}),[ut,it]=(0,react_1.useState)(()=>new Map),[qt,Ee]=(0,react_1.useState)({}),[Ht,as]=(0,react_1.useState)(!0),[Me,us]=(0,react_1.useState)("newest"),[Ne,is]=(0,react_1.useState)("newest"),[Vt,Gt]=(0,react_1.useState)(!0),[Ut,Wt]=(0,react_1.useState)(!0),[zt,$t]=(0,react_1.useState)(!1),[Jt,Xt]=(0,react_1.useState)(!1),[p,W]=(0,react_1.useState)("apis"),[je,K]=(0,react_1.useState)([]),[z,Y]=(0,react_1.useState)([]),ct=(0,react_1.useRef)([]),lt=(0,react_1.useRef)([]),pt=(0,react_1.useRef)([]),[Qt,ft]=(0,react_1.useState)(null),[Kt,Yt]=(0,react_1.useState)(0),[Zt,er]=(0,react_1.useState)(0),[tr,rr]=(0,react_1.useState)(0),[sr,nr]=(0,react_1.useState)(0),Te=(0,react_1.useCallback)(async()=>{try{const t=await capture_1.ScreenCapture.getMediaList(),e=t?t.length:0;return nr(e),e}catch{return nr(0),0}},[]);(0,react_1.useEffect)(()=>{x&&Te()},[x,Te]);const[le,_]=(0,react_1.useState)(()=>(0,crashHandler_1.getCrashRecords)()),[or,Z]=(0,react_1.useState)(null),[F,Ie]=(0,react_1.useState)(50);(0,react_1.useEffect)(()=>{(0,crashHandler_1.setMaxCrashLogsLimit)(F)},[F]),(0,react_1.useEffect)(()=>{x&&(p==="apis"&&er(y.length),p==="logs"&&Yt(z.length),p==="crash"&&rr(le.length))},[x]),(0,react_1.useEffect)(()=>{p==="apis"&&er(y.length)},[p,y.length]),(0,react_1.useEffect)(()=>{p==="logs"&&Yt(z.length)},[p,z.length]),(0,react_1.useEffect)(()=>{p==="crash"&&rr(le.length)},[p,le.length]);const[D,ar]=(0,react_1.useState)(()=>(0,pushNotificationLogger_1.getPushRecords)()),[ur,ir]=(0,react_1.useState)(null),[pe,cs]=(0,react_1.useState)(""),[T,ls]=(0,react_1.useState)("all"),[_e,ps]=(0,react_1.useState)(0),[Fe,dt]=(0,react_1.useState)(50);(0,react_1.useEffect)(()=>{(0,pushNotificationLogger_1.setMaxPushRecordsLimit)(Fe)},[Fe]),(0,react_1.useEffect)(()=>(0,pushNotificationLogger_1.subscribePushEvents)(e=>{ar(e)}),[]);const cr=(0,react_1.useMemo)(()=>p==="push"?0:Math.max(0,D.length-_e),[p,D.length,_e]);(0,react_1.useEffect)(()=>{x&&p==="push"&&ps(D.length)},[x,p,D.length]);const lr=(0,react_1.useMemo)(()=>{let t=D;if(T!=="all"){if(T==="foreground")t=t.filter(e=>(e.appState||"").toLowerCase()==="foreground");else if(T==="background")t=t.filter(e=>(e.appState||"").toLowerCase()==="background");else if(T==="opened")t=t.filter(e=>e.action==="opened");else if(T.startsWith("source:")){const e=T.replace("source:","").toLowerCase();t=t.filter(s=>(s.source||"").toLowerCase()===e)}}if(pe.trim()){const e=pe.trim().toLowerCase();t=t.filter(s=>!!(s.title&&s.title.toLowerCase().includes(e)||s.body&&s.body.toLowerCase().includes(e)||s.id&&s.id.toLowerCase().includes(e)||s.source&&s.source.toLowerCase().includes(e)||s.domain&&s.domain.toLowerCase().includes(e)||s.channelId&&s.channelId.toLowerCase().includes(e)||s.data&&JSON.stringify(s.data).toLowerCase().includes(e)))}return t},[D,T,pe]),[ee,De]=(0,react_1.useState)(300),[k,gt]=(0,react_1.useState)({info:!0,warn:!0,error:!0}),B=(0,react_1.useMemo)(()=>z.filter(e=>{const s=e.type;if(s==="info"&&!k?.info||s==="warn"&&!k?.warn||s==="error"&&!k?.error)return!1;const r=e.message||"";return![...logFilters_1.IGNORED_LOG_PREFIXES&&logFilters_1.IGNORED_LOG_PREFIXES.info||[],...logFilters_1.IGNORED_LOG_PREFIXES&&logFilters_1.IGNORED_LOG_PREFIXES.warn||[],...logFilters_1.IGNORED_LOG_PREFIXES&&logFilters_1.IGNORED_LOG_PREFIXES.error||[]].filter(f=>typeof f=="string"&&f.trim().length>0).some(f=>r.toLowerCase().trim().startsWith(f.toLowerCase().trim())||r.toLowerCase().trim().includes(f.toLowerCase().trim()))}).slice(0,ee),[z,k,ee]),[E,pr]=(0,react_1.useState)(""),[M,fr]=(0,react_1.useState)(new Set(["all"])),[dr,fs]=(0,react_1.useState)(null),[gr,ds]=(0,react_1.useState)(!1),[mr,gs]=(0,react_1.useState)("module"),[A,ke]=(0,react_1.useState)({apis:!0,logs:!0,analytics:!1,redux:!1,crash:!1,push:!0,device:!1,storage:!1,debugging:!1,media:!0}),[O,Be]=(0,react_1.useState)(250),[te,qe]=(0,react_1.useState)(150),[re,mt]=(0,react_1.useState)(!0),[bt,ms]=(0,react_1.useState)(1800),[se,ht]=(0,react_1.useState)(!0),[He,xt]=(0,react_1.useState)(1),[q,Ve]=(0,react_1.useState)("apis"),[H,yt]=(0,react_1.useState)(!1),[St,Ct]=(0,react_1.useState)(!0);(0,react_1.useEffect)(()=>{(0,networkLogger_1.setNetworkModuleEnabled)(!!A.apis),(0,consoleLogger_1.setConsoleModuleEnabled)(!!A.logs),(0,analyticsLogger_1.setAnalyticsModuleEnabled)(!!A.analytics),(0,reduxLogger_1.setReduxModuleEnabled)(!!A.redux),(0,crashHandler_1.setCrashModuleEnabled)(!!A.crash)},[A]),(0,react_1.useEffect)(()=>{(0,NativeInspector_1.getNativeSystemMetrics)().then(t=>{if(t){const e=t.totalPhysicalRamMb-t.residentRamMb,s=Math.max(200,Math.round(e>0?e:1500));if(ms(s),re){const r=(0,settingsStore_1.calculateRamBasedLimits)(s);Be(r.maxNetworkLogs),De(r.maxConsoleLogs),qe(r.maxAnalyticsEvents),Ie(r.maxCrashRecords),dt(r.maxPushRecords)}}}).catch(()=>{})},[re]);const bs=async()=>{await(0,settingsStore_1.clearPersistedSettings)(),Qe(!1),(0,styles_1.toggleGlobalTheme)(!1),Ke(90),Ye("slide"),ke({apis:!0,logs:!0,analytics:!1,redux:!1,crash:!1,push:!0,device:!1,storage:!1,debugging:!1,media:!0}),Ve("apis"),mt(!0);const t=(0,settingsStore_1.calculateRamBasedLimits)(bt);Ie(t.maxCrashRecords),Be(t.maxNetworkLogs),De(t.maxConsoleLogs),qe(t.maxAnalyticsEvents),dt(t.maxPushRecords),gt({info:!0,warn:!0,error:!0}),ht(!0),xt(1),yt(!1),Ct(!0),react_native_1.Alert.alert("Settings Reset","All settings have been reset to default values.")},br=(0,react_1.useRef)(!1);(0,react_1.useEffect)(()=>{let t=!1;return(0,settingsStore_1.loadSettings)().then(e=>{if(!t){if(e.isDark!=null&&(Qe(e.isDark),(0,styles_1.toggleGlobalTheme)(e.isDark)),e.modalHeightPercent!=null&&Ke(e.modalHeightPercent),e.modalAnimationType&&Ye(e.modalAnimationType),e.tabVisibility&&ke(s=>({...s,...e.tabVisibility,apis:!0})),e.defaultTab&&Ve(e.defaultTab),e.isAutoRamLimitEnabled!=null&&mt(e.isAutoRamLimitEnabled),e.maxNetworkLogs!=null&&Be(e.maxNetworkLogs),e.maxConsoleLogs!=null&&De(e.maxConsoleLogs),e.maxAnalyticsEventsLimit!=null&&qe(e.maxAnalyticsEventsLimit),e.maxCrashLogs!=null&&Ie(e.maxCrashLogs),e.showConsoleLevels&&gt(e.showConsoleLevels),e.reduxAutoRefresh!=null&&ht(e.reduxAutoRefresh),e.reduxExpandDepth!=null&&xt(e.reduxExpandDepth),e.showDuplicateLogs!=null&&yt(e.showDuplicateLogs),e.showUpdateToast!=null&&Ct(e.showUpdateToast),e.defaultTab){const s=e.defaultTab,r={apis:!0,logs:!0,analytics:!1,redux:!1,crash:!1,device:!1,storage:!1,...e.tabVisibility||{},apis:!0};W(r[s]?s:"apis")}br.current=!0}}),()=>{t=!0}},[]),(0,react_1.useEffect)(()=>{let t=!0;if(Pe!==!1)return(0,remoteConfig_1.fetchRemoteConfigModuleStatus)(typeof Pe=="object"?Pe:void 0).then(e=>{t&&e&&ke(s=>({...s,...e,apis:e.apis??!0}))}).catch(()=>{}),()=>{t=!1}},[Pe]),(0,react_1.useEffect)(()=>{br.current&&(0,settingsStore_1.saveSettings)({isDark:Le,modalHeightPercent:Ae,modalAnimationType:Oe,tabVisibility:A,defaultTab:q,maxNetworkLogs:O,maxConsoleLogs:ee,maxAnalyticsEventsLimit:te,maxCrashLogs:F,isAutoRamLimitEnabled:re,showConsoleLevels:k,reduxAutoRefresh:se,reduxExpandDepth:He,showDuplicateLogs:H,showUpdateToast:St})},[Le,Ae,Oe,A,q,O,ee,te,F,re,k,se,He,H]);const[fe,hs]=(0,react_1.useState)(null),hr=(0,react_1.useMemo)(()=>{if(!fe)return!1;const t=r=>r.replace(/^v/,"").split(".").map(n=>parseInt(n,10)||0),e=t(constants_1.LIB_VERSION),s=t(fe);for(let r=0;r<3;r++){if((s[r]||0)>(e[r]||0))return!0;if((s[r]||0)<(e[r]||0))return!1}return!1},[fe]);(0,react_1.useEffect)(()=>{if(typeof __DEV__>"u"||!__DEV__)return;let t=!1;return fetch("https://registry.npmjs.org/react-native-inapp-inspector/latest").then(e=>e.ok?e.json():null).then(e=>{!t&&e&&typeof e.version=="string"&&hs(e.version)}).catch(()=>{}),()=>{t=!0}},[]),(0,react_1.useEffect)(()=>{(0,reduxLogger_1.setReduxAutoRefresh)(se)},[se]),(0,react_1.useEffect)(()=>{p==="redux"&&!(0,reduxLogger_1.isReduxConnected)()&&W("apis"),p==="analytics"&&!(0,analyticsLogger_1.isAnalyticsConnected)()&&W("apis")},[p]);const xr=t=>{t!=="apis"&&(t==="redux"&&!(0,reduxLogger_1.isReduxConnected)()||t==="analytics"&&!(0,analyticsLogger_1.isAnalyticsConnected)()||ke(e=>{const s=!e[t],r={...e,[t]:s};return!s&&p===t&&((0,InspectorContext_1.animateNextLayout)(),W("apis")),!s&&q===t&&Ve("apis"),r}))},Pt=(0,react_1.useCallback)(async(t,e="")=>{if(t==="apis"||t==="logs"||t==="analytics"||t==="crash"){const s=await(0,NativeInspector_1.fetchNativeCachedPage)(t,0,100,e);s&&s.items&&s.items.length>0&&(t==="apis"?G(s.items):t==="logs"?Y(s.items):t==="analytics"?K(s.items):t==="crash"&&_(s.items))}},[]),yr=(0,react_1.useCallback)(t=>{t==="redux"&&!(0,reduxLogger_1.isReduxConnected)()||t==="analytics"&&!(0,analyticsLogger_1.isAnalyticsConnected)()||(et(null),Ge(null),ft(null),rt(null),st(null),Z(null),typeof react_1.default.startTransition=="function"?react_1.default.startTransition(()=>{W(t),Pt(t)}):(W(t),Pt(t)),(0,telemetry_1.trackInspectorTabView)(t))},[Pt]),[Sr,Ge]=(0,react_1.useState)(null),[ne,Cr]=(0,react_1.useState)(""),[o,Pr]=(0,react_1.useState)({categories:new Set(["all"]),screens:new Set,sources:new Set(["all"]),userTypes:new Set(["all"]),timeWindow:"all",payloadComplexity:"all",hasRevenue:!1,hasItems:!1,hasUserProps:!1,hasParams:!1,onlyDuplicates:!1,onlyConversions:!1,sortBy:"time_desc"}),Lr=(0,react_1.useMemo)(()=>!!(o.categories.size>0&&!o.categories.has("all")||o.screens.size>0||o.sources.size>0&&!o.sources.has("all")||o.userTypes.size>0&&!o.userTypes.has("all")||o.timeWindow!=="all"||o.payloadComplexity!=="all"||o.hasRevenue||o.hasItems||o.hasUserProps||o.hasParams||o.onlyDuplicates||o.onlyConversions||o.sortBy!=="time_desc"),[o]),vr=(0,react_1.useCallback)(()=>{Pr({categories:new Set(["all"]),screens:new Set,sources:new Set(["all"]),userTypes:new Set(["all"]),timeWindow:"all",payloadComplexity:"all",hasRevenue:!1,hasItems:!1,hasUserProps:!1,hasParams:!1,onlyDuplicates:!1,onlyConversions:!1,sortBy:"time_desc"})},[]),[Rr,xs]=(0,react_1.useState)(!1),[Ar,ys]=(0,react_1.useState)(!1),[Or,wr]=(0,react_1.useState)(new Set),de=(0,react_1.useRef)(new Set),[Ue,Lt]=(0,react_1.useState)(null),Er=react_1.default.useContext(native_1.NavigationContext)!==void 0,N=(0,react_1.useRef)({path:"",params:null});(0,react_1.useEffect)(()=>((0,networkLogger_1.setRouteInfoProvider)(()=>N.current),()=>{(0,networkLogger_1.setRouteInfoProvider)(null)}),[]),(0,react_1.useEffect)(()=>{if(Ue){const t=(0,helpers_1.getNavigationInfo)(Ue);t?.path&&(N.current=t)}},[Ue]),(0,react_1.useEffect)(()=>{if(!l)return;const t=()=>{try{if(typeof l.isReady=="function"&&l.isReady()){const s=typeof l.getCurrentRoute=="function"?l.getCurrentRoute():null;s?.name&&(N.current={path:s.name,params:s.params||null});const r=l.getRootState();if(r){Lt(r);const n=(0,helpers_1.getNavigationInfo)(r);n?.path&&(N.current=n)}}}catch{}};t();const e=typeof l.addListener=="function"?l.addListener("state",()=>{t()}):null;return()=>{e&&e()}},[l]);const P=(0,react_1.useRef)(new Map),oe=(0,react_1.useRef)(new Set),[Mr,Nr]=(0,react_1.useState)(new Set),ge=(0,react_1.useRef)(new react_native_1.Animated.Value(1)).current,me=(0,react_1.useRef)(new react_native_1.Animated.Value(.4)).current,be=(0,react_1.useRef)(new react_native_1.Animated.Value(1)).current,he=(0,react_1.useRef)(new react_native_1.Animated.Value(0)).current,xe=(0,react_1.useRef)(new react_native_1.Animated.Value(0)).current,S=(0,react_1.useRef)(new react_native_1.Animated.ValueXY({x:0,y:0})).current,We=(0,react_1.useRef)({x:0,y:0});(0,react_1.useEffect)(()=>{const t=S.x.addListener(s=>We.current.x=s.value),e=S.y.addListener(s=>We.current.y=s.value);return()=>{S.x.removeListener(t),S.y.removeListener(e)}},[S]);const ze=(0,react_1.useRef)(!1),jr=(0,react_1.useRef)(react_native_1.PanResponder.create({onStartShouldSetPanResponder:()=>!1,onMoveShouldSetPanResponder:(t,e)=>Math.abs(e.dx)>4||Math.abs(e.dy)>4,onPanResponderGrant:()=>{ze.current=!0,S.setOffset({x:We.current.x,y:We.current.y}),S.setValue({x:0,y:0})},onPanResponderMove:react_native_1.Animated.event([null,{dx:S.x,dy:S.y}],{useNativeDriver:!1}),onPanResponderRelease:()=>{S.flattenOffset(),setTimeout(()=>{ze.current=!1},50)},onPanResponderTerminate:()=>{S.flattenOffset(),ze.current=!1}})).current,Tr=(0,react_1.useCallback)(()=>{react_native_1.Animated.sequence([react_native_1.Animated.timing(xe,{toValue:1,duration:320,useNativeDriver:!1}),react_native_1.Animated.timing(xe,{toValue:0,duration:0,useNativeDriver:!1})]).start(),Cs()},[xe]);(0,react_1.useEffect)(()=>{react_native_1.Platform.OS==="android"&&react_native_1.UIManager.setLayoutAnimationEnabledExperimental?.(!0)},[]),(0,react_1.useEffect)(()=>{if(x)return;const t=react_native_1.Animated.loop(react_native_1.Animated.sequence([react_native_1.Animated.timing(ge,{toValue:1.2,duration:800,useNativeDriver:!1}),react_native_1.Animated.timing(ge,{toValue:1,duration:800,useNativeDriver:!1})]));return t.start(),()=>t.stop()},[ge,x]),(0,react_1.useEffect)(()=>{if(x)return;const t=react_native_1.Animated.loop(react_native_1.Animated.sequence([react_native_1.Animated.timing(he,{toValue:1,duration:3200,easing:react_native_1.Easing.inOut(react_native_1.Easing.ease),useNativeDriver:!1}),react_native_1.Animated.delay(3500),react_native_1.Animated.timing(he,{toValue:0,duration:0,useNativeDriver:!1})]));return t.start(),()=>t.stop()},[he,x]),(0,react_1.useEffect)(()=>{const t=react_native_1.Animated.loop(react_native_1.Animated.sequence([react_native_1.Animated.timing(me,{toValue:1,duration:1200,useNativeDriver:!1}),react_native_1.Animated.timing(me,{toValue:.4,duration:1200,useNativeDriver:!1})]));return t.start(),()=>t.stop()},[me]),(0,react_1.useEffect)(()=>{const t=react_native_1.Animated.loop(react_native_1.Animated.sequence([react_native_1.Animated.timing(be,{toValue:1.3,duration:800,useNativeDriver:!1}),react_native_1.Animated.timing(be,{toValue:.8,duration:800,useNativeDriver:!1})]));return t.start(),()=>t.stop()},[be]);const Ss=(0,react_1.useMemo)(()=>(0,NativeInspector_2.isNativeModuleAvailable)(),[]),V=(react_native_1.Platform.OS==="ios"||react_native_1.Platform.OS==="android")&&Ss;(0,react_1.useEffect)(()=>{V&&(0,NativeInspector_2.hideNativeFloatingButton)().catch(()=>{})},[V,x]),(0,react_1.useEffect)(()=>{if(!V)return;const t=(0,NativeInspector_2.subscribeNativeFloatingButtonPress)(()=>{(0,NativeInspector_2.hideNativeFloatingButton)().catch(()=>{}),J(!0)});return()=>{t()}},[V]),(0,react_1.useEffect)(()=>{if(!V)return;const t=(0,NativeInspector_2.subscribeNativeDeviceShake)(()=>{J(e=>{const s=!e;return s&&(0,NativeInspector_2.hideNativeFloatingButton)().catch(()=>{}),s})});return()=>{t()}},[V]);const Ir=(0,react_1.useRef)(x);(0,react_1.useEffect)(()=>{if(Ir.current=x,x){(0,telemetry_1.trackInspectorScreenView)("InspectorModal");const t=q==="apis"||A?.[q]?q:"apis";if(W(t),(0,telemetry_1.trackInspectorTabView)(t),ct.current.length>0){const n=(0,helpers_1.deduplicateLogs)(ct.current),c=new Set(n.map(f=>f.id));oe.current=c,G(n)}lt.current.length>0&&Y(lt.current),pt.current.length>0&&K(pt.current);const e=(0,reduxLogger_1.getReduxState)();e&&(ve(typeof e=="object"?{...e}:e),Re({...(0,reduxLogger_1.getLastActionForReducer)()}));const s=(0,crashHandler_1.getCrashRecords)();s.length>0&&_(s);const r=requestAnimationFrame(()=>{Mt(!0)});return()=>{cancelAnimationFrame(r)}}else Mt(!1),ae(new Set)},[x]),(0,react_1.useEffect)(()=>{(0,networkLogger_1.setupNetworkLogger)(),(0,networkLogger_1.clearNetworkLogs)(),(0,consoleLogger_1.setupConsoleLogger)(),(0,analyticsLogger_1.autoSetupAnalyticsLogger)(),(0,crashHandler_1.setupGlobalCrashHandler)();const t=(0,helpers_1.setupMemoryWarningHandler)(),e=Ir,s=(0,crashHandler_1.subscribeCrashEvents)(a=>{if(a.message==="__CLEARED__"){_([]),Z(null);return}const I=(0,crashHandler_1.getCrashRecords)();I.length>0&&(0,NativeInspector_1.pushNativeLogRecord)("crash",JSON.stringify(I[0])),e.current&&_(I)}),r=(0,crashHandler_1.getCrashRecords)();r.length>0&&(r.forEach(a=>(0,NativeInspector_1.pushNativeLogRecord)("crash",JSON.stringify(a))),_(r));let n,c=!0;const f=(0,networkLogger_1.subscribeNetworkLogs)(a=>{if(ct.current=a,a.length>0&&(0,NativeInspector_1.pushNativeLogRecord)("apis",JSON.stringify(a[0])),!e.current)return;clearTimeout(n);const I=()=>{const d=(0,helpers_1.deduplicateLogs)(a),w=new Set(d.map(j=>j.id)),b=new Set;w.forEach(j=>{oe.current.has(j)||b.add(j)}),oe.current=w,b.size>0&&(b.forEach(j=>{if(!P.current.has(j)){const vs=d.find(Rs=>Rs.id===j)?.routeInfo||N.current;P.current.set(j,vs)}}),Nr(b),setTimeout(()=>Nr(new Set),1200)),G(d)};if(c){c=!1;const d=(0,helpers_1.deduplicateLogs)(a),w=new Set(d.map(b=>b.id));oe.current=w,d.forEach(b=>{if(!P.current.has(b.id)){const j=b?.routeInfo||N.current;P.current.set(b.id,j)}}),G(d)}else n=setTimeout(I,250)});let C,ye=!0;const vt=(0,analyticsLogger_1.subscribeAnalyticsEvents)(a=>{if(pt.current=a,a.length>0&&(0,NativeInspector_1.pushNativeLogRecord)("analytics",JSON.stringify(a[0])),!e.current)return;clearTimeout(C);const I=()=>{const d=new Set(a.map(b=>b.id)),w=new Set;d.forEach(b=>{de.current.has(b)||w.add(b)}),de.current=d,w.size>0&&(w.forEach(b=>{P.current.has(b+1e6)||P.current.set(b+1e6,N.current)}),wr(w),setTimeout(()=>wr(new Set),1200)),K(a)};if(ye){ye=!1;const d=new Set(a.map(w=>w.id));de.current=d,K(a)}else C=setTimeout(I,200)});let v,Xe=!0;const Se=(0,consoleLogger_1.subscribeConsoleLogs)(a=>{lt.current=a,a.length>0&&(0,NativeInspector_1.pushNativeLogRecord)("logs",JSON.stringify(a[0])),e.current&&(clearTimeout(v),Xe?(Xe=!1,Y(a)):v=setTimeout(()=>{Y(a)},200))}),$=(0,reduxLogger_1.getReduxState)();$&&(ve(typeof $=="object"?{...$}:$),Re({...(0,reduxLogger_1.getLastActionForReducer)()}));const Rt=(0,reduxLogger_1.subscribeReduxState)(()=>{if(!e.current)return;const a=(0,reduxLogger_1.getReduxState)();ve(a&&typeof a=="object"?{...a}:a),Re({...(0,reduxLogger_1.getLastActionForReducer)()})});return()=>{f(),clearTimeout(n),vt(),clearTimeout(C),Se(),clearTimeout(v),Rt(),s(),t()}},[]),(0,react_1.useEffect)(()=>{(0,networkLogger_1.setMaxNetworkLogsLimit)(O)},[O]),(0,react_1.useEffect)(()=>{(0,crashHandler_1.setMaxCrashLogsLimit)(F)},[F]),(0,react_1.useEffect)(()=>{Gt(!0),Wt(!0),$t(!1),Xt(!1),tt("")},[m]);const L=(0,react_1.useMemo)(()=>{let t=y.filter(e=>{if(R&&R!=="all"){if(R==="errors"){if(!(e.status===0||e.status==null||typeof e.status=="number"&&e.status>=400))return!1}else if(R==="success"){if(!(typeof e.status=="number"&&e.status>=200&&e.status<400))return!1}else if(R==="slow"){if((e.duration||0)<500)return!1}else if(R==="graphql"){if(!((e.url||"").toLowerCase().includes("graphql")||(e.client||"").toLowerCase().includes("graphql")||(e.client||"").toLowerCase().includes("apollo")))return!1}else if(e.method?.toUpperCase()!==R.toUpperCase())return!1}if(X.size>0&&![...X].some(r=>{if(r==="ALL")return!0;if(r==="Failed")return e.status===0||e.status==null;const n=parseInt(r,10);return isNaN(n)?String(e.status)[0]===r[0]:Number(e.status)===n})||Q.size>0&&![...Q].some(r=>r==="ALL"?!0:e.method?.toUpperCase()===r))return!1;if(U&&U.trim().length>0){const s=P.current.get(e.id)?.path||"";if(!(0,helpers_1.matchNetworkLogQuery)(e,U,s,{scope:ue,isRegex:ie,isCaseSensitive:ce}))return!1}return!0});if(Me==="oldest"&&(t=[...t].reverse()),!H){const e=[];for(const s of t){const r=e[e.length-1];r&&r.method===s.method&&r.url===s.url&&r.status===s.status?e[e.length-1]={...r,duplicateCount:(r.duplicateCount||1)+1}:e.push({...s,duplicateCount:1})}t=e}return t},[y,U,ue,ie,ce,R,X,Q,Me,H]),_r=(0,react_1.useMemo)(()=>{const t=new Set;return y.forEach(e=>{e.method&&t.add(e.method.toUpperCase())}),["ALL",...Array.from(t)]},[y]),Fr=(0,react_1.useCallback)((t,e)=>{at(s=>{const r=s[t]||new Set(["success","failed","loading"]),n=new Set(r);return n.has(e)?n.delete(e):n.add(e),{...s,[t]:n}})},[]),$e=(0,react_1.useMemo)(()=>{if(N.current?.path){const t=N.current.path.split(" \u2794 ").map(e=>e.trim()).filter(Boolean);return t.length>0?t[t.length-1]:N.current.path}if(L.length>0){const t=L[0],e=P.current.get(t.id)||t?.routeInfo;return(0,helpers_1.getLogPageName)(t,e)}return""},[L,Ue]),Dr=(0,react_1.useCallback)(t=>{it(e=>{const s=new Map(e),r=s.has(t)?s.get(t):t===$e;return s.set(t,!r),s})},[$e]);(0,react_1.useEffect)(()=>{Ee({})},[U,ue,ie,ce,R,X,Q,O]);const kr=(0,react_1.useCallback)((t,e=10)=>{Ee(s=>({...s,[t]:(s[t]||O||50)+e}))},[O]),Br=(0,react_1.useMemo)(()=>{const t=[],e=new Map;for(let r=0;r<L.length;r++){const n=L[r],c=P.current.get(n.id)||n?.routeInfo,f=(0,helpers_1.getLogPageName)(n,c);let C=e.get(f);C||(C={pageName:f,color:(0,helpers_1.getDomainColor)(f),logs:[]},e.set(f,C)),C.logs.push(n)}let s=0;return e.forEach(r=>{let n=0,c=0,f=0;r.logs.forEach(v=>{v.status==null?f++:v.status===0||v.status>=400?c++:n++});const C=Bt[r.pageName]||new Set(["success","failed","loading"]),ye=ut.has(r.pageName)?!ut.get(r.pageName):r.pageName!==$e,vt=r.logs[0]?.startTime||0;if(t.push({type:"header",id:`hdr-${r.pageName}`,pageName:r.pageName,color:r.color,stats:{success:n,failed:c,loading:f},timestamp:vt,activeFilters:C,isCollapsed:ye,isFirst:s===0}),s++,!ye){const v=r.logs.filter(d=>d.status==null?C.has("loading"):d.status===0||d.status>=400?C.has("failed"):C.has("success")),Xe=O||50,Se=qt[r.pageName]||Xe,$=v.slice(0,Se),Rt=v.length>Se;$.forEach(d=>{t.push({type:"log",id:`log-${d.id}`,log:d,isLast:!1,color:r.color})});const a=Math.max(0,v.length-Se),I=Math.min(a||10,10);t.push({type:"loadMore",id:`loadmore-${r.pageName}`,pageName:r.pageName,color:r.color,remainingCount:a,totalCount:v.length,loadedCount:$.length,loadMoreStep:I,hasMore:Rt})}}),t},[L,y,Bt,ut,$e,qt,O]),{minStart:qr,totalRange:Hr}=(0,react_1.useMemo)(()=>{if(L.length===0)return{minStart:0,totalRange:0};const t=Math.min(...L.map(s=>s.startTime)),e=Math.max(...L.map(s=>s.startTime+(s.duration||10)));return{minStart:t,totalRange:e-t}},[L]),Je=(0,react_1.useMemo)(()=>{if(!m)return null;const t=y.findIndex(e=>e.id===m.id);if(t===-1)return null;for(let e=t+1;e<y.length;e++){const s=y[e];if(s.url===m.url&&s.method===m.method)return s}return null},[m,y]),Vr=Je?Je.request:null,Gr=Je?Je.response:null,Ur=(0,react_1.useMemo)(()=>{let t=je;if(ne&&ne.trim().length>0){const r=ne.trim().toLowerCase().split(/\s+/).filter(Boolean);t=t.filter(n=>{const c=[n.name||"",JSON.stringify(n.params||""),JSON.stringify(n.userProperties||""),n.screenName||"",n.pageTitle||"",n.userId||"",n.source||""].join(" ").toLowerCase();return r.every(f=>c.includes(f))})}if(o.categories.size>0&&!o.categories.has("all")&&(t=t.filter(r=>{const n=(0,helpers_1.getEventCategory)(r.name);return o.categories.has(n)})),o.timeWindow!=="all"){const r=Date.now(),n=o.timeWindow==="1m"?r-60*1e3:o.timeWindow==="5m"?r-300*1e3:o.timeWindow==="15m"?r-900*1e3:r-3600*1e3;t=t.filter(c=>c.timestamp>=n)}if(o.sources.size>0&&!o.sources.has("all")&&(t=t.filter(r=>o.sources.has(r.source||"manual"))),o.userTypes.size>0&&!o.userTypes.has("all")&&(t=t.filter(r=>{const n=!!(r.userId&&r.userId.trim()!=="");return!!(o.userTypes.has("identified")&&n||o.userTypes.has("anonymous")&&!n)})),o.payloadComplexity!=="all"&&(o.payloadComplexity==="none"?t=t.filter(r=>!r.params||Object.keys(r.params).length===0):o.payloadComplexity==="simple"?t=t.filter(r=>r.params&&Object.keys(r.params).length<=3):o.payloadComplexity==="heavy"&&(t=t.filter(r=>r.params&&Object.keys(r.params).length>3))),o.onlyConversions){const r=["purchase","item_purchase","ecommerce_purchase","sign_up","login","lead","generate_lead","tutorial_complete","add_payment_info","begin_checkout","spend_virtual_currency"];t=t.filter(n=>r.some(c=>n.name.toLowerCase().includes(c)))}o.screens.size>0&&(t=t.filter(r=>{const n=r.screenName||r.params?.firebase_screen||r.params?.screen_name||r.params?.firebase_screen_class||r.screenClass||"";return o.screens.has(n)})),o.hasRevenue&&(t=t.filter(r=>r.params?.value!=null&&!isNaN(Number(r.params.value))||r.params?.price!=null&&!isNaN(Number(r.params.price)))),o.hasItems&&(t=t.filter(r=>Array.isArray(r.params?.items)&&r.params.items.length>0)),o.hasUserProps&&(t=t.filter(r=>r.userProperties&&Object.keys(r.userProperties).length>0)),o.hasParams&&(t=t.filter(r=>r.params&&Object.keys(r.params).length>0));const e=[];for(const r of t){if(e.length===0){e.push({...r,count:1});continue}const n=e[e.length-1];n.name===r.name&&JSON.stringify(n.params)===JSON.stringify(r.params)&&JSON.stringify(n.userProperties)===JSON.stringify(r.userProperties)?(n.count=(n.count||1)+1,n.timestamp=r.timestamp,n.id=r.id):e.push({...r,count:1})}let s=e;return o.onlyDuplicates&&(s=s.filter(r=>(r.count||1)>1)),o.sortBy==="time_asc"?s=[...s].sort((r,n)=>r.timestamp-n.timestamp):o.sortBy==="revenue_desc"?s=[...s].sort((r,n)=>{const c=Number(r.params?.value??r.params?.price??0);return Number(n.params?.value??n.params?.price??0)-c}):o.sortBy==="count_desc"&&(s=[...s].sort((r,n)=>(n.count||1)-(r.count||1))),s.slice(0,te)},[je,ne,o,te]),Wr=(0,react_1.useMemo)(()=>{let t=B;if(M.size>0&&!M.has("all")&&(t=t.filter(e=>!!(M.has("user-log")&&e.sourceMethod==="log"||M.has("info")&&(e.sourceMethod==="info"||e.type==="info"&&e.sourceMethod!=="log")||M.has("warn")&&(e.type==="warn"||e.sourceMethod==="warn")||M.has("error")&&(e.type==="error"||e.sourceMethod==="error")||M.has("analytics")&&e.message?.toLowerCase().includes("[analytics error]")))),E&&E.trim().length>0){const e=E.trim().toLowerCase().split(/\s+/).filter(Boolean);t=t.filter(s=>{const r=[s.message||"",s.caller||"",s.type||"",s.sourceMethod||"",s.stack||""].join(" ").toLowerCase();return e.every(n=>n==="error"||n==="err"?s.type==="error"||r.includes(n):n==="warn"||n==="warning"?s.type==="warn"||r.includes(n):n==="info"&&s.type==="info"||r.includes(n))})}if(t=[...t].sort((e,s)=>Ne==="newest"?s.timestamp-e.timestamp:e.timestamp-s.timestamp),!H){const e=[];for(const s of t){const r=e[e.length-1];r&&r.type===s.type&&r.sourceMethod===s.sourceMethod&&r.message===s.message?e[e.length-1]={...r,duplicateCount:(r.duplicateCount||1)+1}:e.push({...s,duplicateCount:1})}t=e}return t},[B,M,E,Ne,H]),zr=(0,react_1.useMemo)(()=>{let t=B;if(E&&E.trim().length>0){const s=E.trim().toLowerCase().split(/\s+/).filter(Boolean);t=B.filter(r=>{const n=[r.message||"",r.caller||"",r.type||"",r.sourceMethod||"",r.stack||""].join(" ").toLowerCase();return s.every(c=>c==="error"||c==="err"?r.type==="error"||n.includes(c):c==="warn"||c==="warning"?r.type==="warn"||n.includes(c):c==="info"&&r.type==="info"||n.includes(c))})}const e=B.length;return{all:`${t.length}/${e}`,info:`${t.filter(s=>s.sourceMethod==="info"||s.type==="info"&&s.sourceMethod!=="log").length}/${e}`,warn:`${t.filter(s=>s.type==="warn"||s.sourceMethod==="warn").length}/${e}`,error:`${t.filter(s=>s.type==="error"||s.sourceMethod==="error").length}/${e}`,"user-log":`${t.filter(s=>s.sourceMethod==="log").length}/${e}`,analytics:`${t.filter(s=>s.message.toLowerCase().includes("[analytics error]")).length}/${e}`}},[B,E]),$r=(0,react_1.useCallback)(()=>{J(!1),Ze(!1),setTimeout(()=>{et(null),Ge(null),ft(null),rt(null),st(null),Z(null)},300)},[]);function Cs(){(0,networkLogger_1.clearNetworkLogs)(),G([]),ae(new Set),at({}),it(new Map),Ee({}),nt(new Set),ot(new Set),Nt(""),oe.current=new Set,P.current=new Map,(0,analyticsLogger_1.clearAnalyticsEvents)(),K([]),Cr(""),de.current=new Set,(0,consoleLogger_1.clearConsoleLogs)(),Y([]),fr(new Set(["all"])),pr("")}function Jr(){if(p==="logs"){react_native_1.Alert.alert("Clear Logs","Are you sure you want to clear all console logs?",[{text:"Cancel",style:"cancel"},{text:"Clear All",onPress:()=>{(0,consoleLogger_1.clearConsoleLogs)(),Y([])},style:"destructive"}]);return}if(p==="analytics"){react_native_1.Alert.alert("Clear Analytics","Are you sure you want to clear all analytics events?",[{text:"Cancel",style:"cancel"},{text:"Clear All",onPress:()=>{(0,analyticsLogger_1.clearAnalyticsEvents)(),K([]),Ge(null),de.current=new Set},style:"destructive"}]);return}if(p==="redux"){react_native_1.Alert.alert("Clear Redux Timeline","Are you sure you want to clear the dispatched action history?",[{text:"Cancel",style:"cancel"},{text:"Clear All",onPress:()=>{(0,reduxLogger_1.clearActionHistory)(),Re({})},style:"destructive"}]);return}if(p==="crash"){react_native_1.Alert.alert("Clear Crash History","Are you sure you want to clear all intercepted crash records?",[{text:"Cancel",style:"cancel"},{text:"Clear All",onPress:()=>{(0,crashHandler_1.clearCrashRecords)(),_([]),Z(null)},style:"destructive"}]);return}we.size>0?(G(t=>t.filter(e=>!we.has(e.id))),ae(new Set)):react_native_1.Alert.alert("Clear Logs","Are you sure you want to clear all network logs?",[{text:"Cancel",style:"cancel"},{text:"Clear All",onPress:Ps,style:"destructive"}])}function Ps(){(0,networkLogger_1.clearNetworkLogs)(),G([]),ae(new Set),at({}),it(new Map),Ee({}),nt(new Set),ot(new Set),oe.current=new Set,P.current=new Map}const Xr=(0,react_1.useMemo)(()=>{if(!m)return"";try{const e=new URL(m.url).pathname.split("/").filter(Boolean);return e.length>0?`/${e.slice(-2).join("/")}`:"/"}catch{const t=m.url.split("/").filter(Boolean);return t.length>0?`/${t.slice(-2).join("/")}`:m.url}},[m]),Qr=(0,react_1.useMemo)(()=>m?(0,helpers_1.formatDisplayUrl)(m.url):"",[m]),Kr=(0,react_1.useCallback)(t=>{ae(e=>{const s=new Set(e);return s.has(t)?s.delete(t):s.add(t),s})},[]),Ls=(0,react_1.useMemo)(()=>({visible:x,setVisible:J,closeModal:$r,isMinimized:wt,setIsMinimized:Ze,minimizeInspector:Zr,isReady:Et,enabled:u,isEnabled:u,appIcon:g,environment:h,modalHeightPercent:Ae,setModalHeightPercent:Ke,modalAnimationType:Oe,setModalAnimationType:Ye,hasNavigationContext:Er,setNavState:Lt,activeTab:p,switchActiveTab:yr,tabVisibility:A,toggleTabVisibility:xr,lastReadApisCount:Zt,lastReadLogsCount:Kt,mediaCount:sr,refreshMediaCount:Te,selected:m,setSelected:et,selectedEvent:Sr,setSelectedEvent:Ge,selectedLog:Qt,setSelectedLog:ft,showHeaderInfo:Ht,setShowHeaderInfo:as,settingsPage:dr,setSettingsPage:fs,isAboutOpen:gr,setIsAboutOpen:ds,updateAvailable:hr,latestNpmVersion:fe,clearAnim:xe,activePulseAnim:me,unreadPulseAnim:be,runClearAllWithAnimation:Tr,useNativeFab:V,fabPan:S,fabPanResponder:jr,fabDraggedRef:ze,pulseAnim:ge,fabShineAnim:he,logs:y,filteredLogs:L,groupedData:Br,search:U,setSearch:Nt,searchScope:ue,setSearchScope:es,isRegexSearch:ie,setIsRegexSearch:ts,isCaseSensitive:ce,setIsCaseSensitive:rs,quickFilter:R,setQuickFilter:ss,statusFilters:X,setStatusFilters:nt,methodFilters:Q,setMethodFilters:ot,availableMethods:_r,sortOrder:Me,setSortOrder:us,selectedLogs:we,toggleSelect:Kr,minStart:qr,totalRange:Hr,newLogIds:Mr,toggleSectionFilter:Fr,toggleSectionCollapse:Dr,loadMoreSection:kr,handleDelete:Jr,detailTitle:Xr,detailDisplayUrl:Qr,apiDetailActiveTab:Dt,setApiDetailActiveTab:kt,detailSearch:jt,setDetailSearch:tt,reqExpanded:Vt,setReqExpanded:Gt,resExpanded:Ut,setResExpanded:Wt,showReqDiff:zt,setShowReqDiff:$t,showResDiff:Jt,setShowResDiff:Xt,prevRequestData:Vr,prevResponseData:Gr,logRouteMapRef:P,consoleLogs:z,visibleConsoleLogs:B,filteredConsoleLogs:Wr,logSearch:E,setLogSearch:pr,logFilters:M,setLogFilters:fr,logCounts:zr,logSortOrder:Ne,setLogSortOrder:is,analyticsEvents:je,filteredAnalyticsEvents:Ur,analyticsSearch:ne,setAnalyticsSearch:Cr,analyticsFilters:o,setAnalyticsFilters:Pr,isAnalyticsFilterApplied:Lr,resetAnalyticsFilters:vr,newEventIds:Or,isAnalyticsLayoutReady:Rr,setIsAnalyticsLayoutReady:xs,analyticsHeaderExpanded:Ar,setAnalyticsHeaderExpanded:ys,reduxState:At,setReduxState:ve,reduxLastActionMap:Ot,reduxSearch:Tt,setReduxSearch:ns,selectedReduxSlice:It,setSelectedReduxSlice:rt,selectedReduxAction:_t,setSelectedReduxAction:st,reduxActiveSubTab:Ft,setReduxActiveSubTab:os,crashRecords:le,setCrashRecords:_,selectedCrash:or,setSelectedCrash:Z,lastReadCrashesCount:tr,maxCrashLogs:F,setMaxCrashLogs:Ie,clearAllCrashes:()=>{(0,crashHandler_1.clearCrashRecords)(),_([]),Z(null)},pushRecords:D,filteredPushRecords:lr,selectedPush:ur,setSelectedPush:ir,pushSearch:pe,setPushSearch:cs,pushQuickFilter:T,setPushQuickFilter:ls,lastReadPushCount:_e,unreadPushCount:cr,maxPushLogs:Fe,setMaxPushLogs:dt,clearAllPushLogs:()=>{(0,pushNotificationLogger_1.clearPushRecords)(),ar([]),ir(null)},simulatePush:(t,e)=>{(0,pushNotificationLogger_1.simulateTestPush)(t,e)},settingsActiveSubTab:mr,setSettingsActiveSubTab:gs,defaultTab:q,setDefaultTab:Ve,isDark:Le,setIsDark:Qe,showDuplicateLogs:H,setShowDuplicateLogs:yt,showUpdateToast:St,setShowUpdateToast:Ct,showConsoleLevels:k,setShowConsoleLevels:gt,resetToDefaults:bs,storage:i,maxNetworkLogs:O,setMaxNetworkLogs:Be,maxConsoleLogs:ee,setMaxConsoleLogs:De,maxAnalyticsEventsLimit:te,setMaxAnalyticsEventsLimit:qe,isAutoRamLimitEnabled:re,setIsAutoRamLimitEnabled:mt,deviceFreeRamMb:bt,reduxAutoRefresh:se,setReduxAutoRefreshState:ht,reduxExpandDepth:He,setReduxExpandDepth:xt}),[x,$r,Et,u,g,h,Ae,Oe,Er,Lt,p,yr,A,xr,Zt,Kt,sr,Te,m,Sr,Qt,Ht,dr,gr,hr,fe,xe,me,be,Tr,V,S,jr,ge,he,y,L,Br,U,ue,ie,ce,R,X,Q,_r,Me,we,Kr,qr,Hr,Mr,Fr,Dr,kr,Jr,Xr,Qr,Dt,jt,Vt,Ut,zt,Jt,Vr,Gr,z,B,Wr,E,M,zr,Ne,je,Ur,ne,o,Lr,vr,Or,Rr,Ar,At,Ot,Tt,It,_t,Ft,le,or,tr,F,D,lr,ur,pe,T,_e,cr,Fe,mr,q,Le,H,St,k,i,O,ee,te,re,bt,se,He,wt]);return<InspectorContext_1.InspectorContext.Provider value={Ls}>
2
2
  <MainScreen_1.default/>
3
3
  </InspectorContext_1.InspectorContext.Provider>},NetworkInspectorWrapper=u=>{const i=u?.enabled??!0,l=u?.telemetry??!0;return(0,react_1.useEffect)(()=>(i?l?(0,telemetry_1.trackActiveTelemetryHeartbeat)(!0,u?.environment):(0,telemetry_1.setTelemetryEnabled)(!1):((0,NativeInspector_2.hideNativeFloatingButton)().catch(()=>{}),(0,telemetry_1.setTelemetryEnabled)(!1)),()=>{(0,NativeInspector_2.hideNativeFloatingButton)().catch(()=>{})}),[i,l,u?.environment]),i?<i18n_1.I18nextProvider i18n={i18n_1.i18n}>
4
4
  <ErrorBoundary_1.default fallbackType="inline">