react-native-inapp-inspector 2.3.24 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (207) hide show
  1. package/README.md +26 -5
  2. package/dist/commonjs/components/AnalyticsDetail.js +15 -12
  3. package/dist/commonjs/components/AnalyticsEventCard.js +11 -8
  4. package/dist/commonjs/components/AppHeaderLogo.js +4 -6
  5. package/dist/commonjs/components/ConsoleLogCard.d.ts +1 -0
  6. package/dist/commonjs/components/ConsoleLogCard.js +92 -80
  7. package/dist/commonjs/components/EndOfListFooter.d.ts +5 -1
  8. package/dist/commonjs/components/EndOfListFooter.js +27 -5
  9. package/dist/commonjs/components/Inspector/AnalyticsFilterModal.js +1 -1
  10. package/dist/commonjs/components/Inspector/AnalyticsTab.js +27 -299
  11. package/dist/commonjs/components/Inspector/ConsoleTab.js +36 -94
  12. package/dist/commonjs/components/Inspector/CrashDetail.js +11 -10
  13. package/dist/commonjs/components/Inspector/CrashTab.js +43 -33
  14. package/dist/commonjs/components/Inspector/DebuggingTab.js +13 -13
  15. package/dist/commonjs/components/Inspector/DeviceInfoTab.js +107 -71
  16. package/dist/commonjs/components/Inspector/FabLauncher.js +8 -9
  17. package/dist/commonjs/components/Inspector/InspectorHeader.js +93 -70
  18. package/dist/commonjs/components/Inspector/LogDetail.js +10 -7
  19. package/dist/commonjs/components/Inspector/MainScreen.js +66 -30
  20. package/dist/commonjs/components/Inspector/MediaGalleryTab.js +1 -1
  21. package/dist/commonjs/components/Inspector/MediaPreviewModal.js +3 -3
  22. package/dist/commonjs/components/Inspector/NetworkDetail.js +29 -28
  23. package/dist/commonjs/components/Inspector/NetworkFilterModal.js +1 -1
  24. package/dist/commonjs/components/Inspector/NetworkTab.js +87 -85
  25. package/dist/commonjs/components/Inspector/NpmStarPrompt.js +3 -3
  26. package/dist/commonjs/components/Inspector/NpmUpdateToast.js +21 -22
  27. package/dist/commonjs/components/Inspector/PushCard.d.ts +4 -0
  28. package/dist/commonjs/components/Inspector/PushCard.js +89 -0
  29. package/dist/commonjs/components/Inspector/PushDetail.d.ts +4 -0
  30. package/dist/commonjs/components/Inspector/PushDetail.js +190 -0
  31. package/dist/commonjs/components/Inspector/PushTab.d.ts +3 -0
  32. package/dist/commonjs/components/Inspector/PushTab.js +45 -0
  33. package/dist/commonjs/components/Inspector/ReduxDetail.js +16 -13
  34. package/dist/commonjs/components/Inspector/ReduxTab.js +109 -106
  35. package/dist/commonjs/components/Inspector/SettingsPanel.js +230 -134
  36. package/dist/commonjs/components/Inspector/StorageTab.js +55 -51
  37. package/dist/commonjs/components/Inspector/TabBar.js +30 -26
  38. package/dist/commonjs/components/Inspector/UpdateAvailableModal.js +2 -2
  39. package/dist/commonjs/components/JsonViewer.js +151 -159
  40. package/dist/commonjs/components/LogCard.js +34 -38
  41. package/dist/commonjs/components/LogSyntaxHighlighter.js +3 -3
  42. package/dist/commonjs/components/ModuleErrorBoundary.d.ts +24 -0
  43. package/dist/commonjs/components/ModuleErrorBoundary.js +33 -0
  44. package/dist/commonjs/components/NetworkIcons.d.ts +3 -3
  45. package/dist/commonjs/components/NetworkIcons.js +10 -6
  46. package/dist/commonjs/components/SegmentedTabs.d.ts +8 -2
  47. package/dist/commonjs/components/SegmentedTabs.js +11 -7
  48. package/dist/commonjs/components/ShareButton.d.ts +11 -0
  49. package/dist/commonjs/components/ShareButton.js +6 -0
  50. package/dist/commonjs/constants/index.js +1 -1
  51. package/dist/commonjs/constants/version.d.ts +1 -1
  52. package/dist/commonjs/constants/version.js +1 -1
  53. package/dist/commonjs/customHooks/crashHandler.js +4 -4
  54. package/dist/commonjs/customHooks/networkLogger.js +1 -2
  55. package/dist/commonjs/customHooks/pushNotificationLogger.d.ts +19 -0
  56. package/dist/commonjs/customHooks/pushNotificationLogger.js +1 -0
  57. package/dist/commonjs/helpers/index.d.ts +6 -0
  58. package/dist/commonjs/helpers/index.js +4 -4
  59. package/dist/commonjs/helpers/memoryManager.d.ts +2 -2
  60. package/dist/commonjs/helpers/memoryManager.js +1 -1
  61. package/dist/commonjs/helpers/remoteConfig.js +1 -1
  62. package/dist/commonjs/helpers/settingsStore.d.ts +1 -0
  63. package/dist/commonjs/helpers/settingsStore.js +1 -1
  64. package/dist/commonjs/helpers/shareFormatter.d.ts +13 -0
  65. package/dist/commonjs/helpers/shareFormatter.js +7 -0
  66. package/dist/commonjs/i18n/index.d.ts +35 -0
  67. package/dist/commonjs/i18n/index.js +1 -1
  68. package/dist/commonjs/i18n/locales/ar.json +1 -0
  69. package/dist/commonjs/i18n/locales/de.json +1 -0
  70. package/dist/commonjs/i18n/locales/en.json +1 -1
  71. package/dist/commonjs/i18n/locales/es.json +1 -0
  72. package/dist/commonjs/i18n/locales/fr.json +1 -0
  73. package/dist/commonjs/i18n/locales/hi.json +1 -0
  74. package/dist/commonjs/i18n/locales/ja.json +1 -0
  75. package/dist/commonjs/i18n/locales/ko.json +1 -0
  76. package/dist/commonjs/i18n/locales/pt.json +1 -0
  77. package/dist/commonjs/i18n/locales/ru.json +1 -0
  78. package/dist/commonjs/i18n/locales/zh.json +1 -0
  79. package/dist/commonjs/index.d.ts +6 -5
  80. package/dist/commonjs/index.js +4 -4
  81. package/dist/commonjs/push.d.ts +4 -0
  82. package/dist/commonjs/push.js +1 -0
  83. package/dist/commonjs/styles/AppColors.d.ts +40 -0
  84. package/dist/commonjs/styles/AppColors.js +1 -1
  85. package/dist/commonjs/styles/index.js +1 -1
  86. package/dist/commonjs/types/enums.d.ts +30 -20
  87. package/dist/commonjs/types/enums.js +1 -1
  88. package/dist/commonjs/types/index.d.ts +10 -0
  89. package/dist/commonjs/types/interfaces.d.ts +63 -7
  90. package/dist/esm/components/AnalyticsDetail.js +84 -81
  91. package/dist/esm/components/AnalyticsEventCard.js +20 -17
  92. package/dist/esm/components/AppHeaderLogo.js +5 -7
  93. package/dist/esm/components/ConsoleLogCard.d.ts +1 -0
  94. package/dist/esm/components/ConsoleLogCard.js +98 -86
  95. package/dist/esm/components/EndOfListFooter.d.ts +5 -1
  96. package/dist/esm/components/EndOfListFooter.js +36 -14
  97. package/dist/esm/components/Inspector/AnalyticsFilterModal.js +14 -14
  98. package/dist/esm/components/Inspector/AnalyticsTab.js +44 -316
  99. package/dist/esm/components/Inspector/ConsoleTab.js +55 -113
  100. package/dist/esm/components/Inspector/CrashDetail.js +53 -52
  101. package/dist/esm/components/Inspector/CrashTab.js +74 -64
  102. package/dist/esm/components/Inspector/DebuggingTab.js +33 -33
  103. package/dist/esm/components/Inspector/DeviceInfoTab.js +174 -138
  104. package/dist/esm/components/Inspector/FabLauncher.js +41 -42
  105. package/dist/esm/components/Inspector/InspectorHeader.js +138 -115
  106. package/dist/esm/components/Inspector/LogDetail.js +24 -21
  107. package/dist/esm/components/Inspector/MainScreen.js +98 -62
  108. package/dist/esm/components/Inspector/MediaGalleryTab.js +1 -1
  109. package/dist/esm/components/Inspector/MediaPreviewModal.js +31 -31
  110. package/dist/esm/components/Inspector/NetworkDetail.js +88 -87
  111. package/dist/esm/components/Inspector/NetworkFilterModal.js +8 -8
  112. package/dist/esm/components/Inspector/NetworkTab.js +132 -130
  113. package/dist/esm/components/Inspector/NpmStarPrompt.js +42 -42
  114. package/dist/esm/components/Inspector/NpmUpdateToast.js +45 -46
  115. package/dist/esm/components/Inspector/PushCard.d.ts +4 -0
  116. package/dist/esm/components/Inspector/PushCard.js +89 -0
  117. package/dist/esm/components/Inspector/PushDetail.d.ts +4 -0
  118. package/dist/esm/components/Inspector/PushDetail.js +190 -0
  119. package/dist/esm/components/Inspector/PushTab.d.ts +3 -0
  120. package/dist/esm/components/Inspector/PushTab.js +45 -0
  121. package/dist/esm/components/Inspector/ReduxDetail.js +40 -37
  122. package/dist/esm/components/Inspector/ReduxTab.js +155 -152
  123. package/dist/esm/components/Inspector/SettingsPanel.js +380 -284
  124. package/dist/esm/components/Inspector/StorageTab.js +177 -173
  125. package/dist/esm/components/Inspector/TabBar.js +38 -34
  126. package/dist/esm/components/Inspector/UpdateAvailableModal.js +1 -1
  127. package/dist/esm/components/JsonViewer.js +161 -169
  128. package/dist/esm/components/LogCard.js +38 -42
  129. package/dist/esm/components/LogSyntaxHighlighter.js +1 -1
  130. package/dist/esm/components/ModuleErrorBoundary.d.ts +24 -0
  131. package/dist/esm/components/ModuleErrorBoundary.js +33 -0
  132. package/dist/esm/components/NetworkIcons.d.ts +3 -3
  133. package/dist/esm/components/NetworkIcons.js +7 -3
  134. package/dist/esm/components/SegmentedTabs.d.ts +8 -2
  135. package/dist/esm/components/SegmentedTabs.js +12 -8
  136. package/dist/esm/components/ShareButton.d.ts +11 -0
  137. package/dist/esm/components/ShareButton.js +6 -0
  138. package/dist/esm/constants/index.js +1 -1
  139. package/dist/esm/constants/version.d.ts +1 -1
  140. package/dist/esm/constants/version.js +1 -1
  141. package/dist/esm/customHooks/crashHandler.js +6 -6
  142. package/dist/esm/customHooks/networkLogger.js +1 -2
  143. package/dist/esm/customHooks/pushNotificationLogger.d.ts +19 -0
  144. package/dist/esm/customHooks/pushNotificationLogger.js +1 -0
  145. package/dist/esm/helpers/index.d.ts +6 -0
  146. package/dist/esm/helpers/index.js +4 -4
  147. package/dist/esm/helpers/memoryManager.d.ts +2 -2
  148. package/dist/esm/helpers/memoryManager.js +1 -1
  149. package/dist/esm/helpers/remoteConfig.js +1 -1
  150. package/dist/esm/helpers/settingsStore.d.ts +1 -0
  151. package/dist/esm/helpers/settingsStore.js +1 -1
  152. package/dist/esm/helpers/shareFormatter.d.ts +13 -0
  153. package/dist/esm/helpers/shareFormatter.js +7 -0
  154. package/dist/esm/i18n/index.d.ts +35 -0
  155. package/dist/esm/i18n/index.js +1 -1
  156. package/dist/esm/i18n/locales/ar.json +1 -0
  157. package/dist/esm/i18n/locales/de.json +1 -0
  158. package/dist/esm/i18n/locales/en.json +1 -1
  159. package/dist/esm/i18n/locales/es.json +1 -0
  160. package/dist/esm/i18n/locales/fr.json +1 -0
  161. package/dist/esm/i18n/locales/hi.json +1 -0
  162. package/dist/esm/i18n/locales/ja.json +1 -0
  163. package/dist/esm/i18n/locales/ko.json +1 -0
  164. package/dist/esm/i18n/locales/pt.json +1 -0
  165. package/dist/esm/i18n/locales/ru.json +1 -0
  166. package/dist/esm/i18n/locales/zh.json +1 -0
  167. package/dist/esm/index.d.ts +6 -5
  168. package/dist/esm/index.js +7 -7
  169. package/dist/esm/push.d.ts +4 -0
  170. package/dist/esm/push.js +1 -0
  171. package/dist/esm/styles/AppColors.d.ts +40 -0
  172. package/dist/esm/styles/AppColors.js +1 -1
  173. package/dist/esm/styles/index.js +1 -1
  174. package/dist/esm/types/enums.d.ts +30 -20
  175. package/dist/esm/types/enums.js +1 -1
  176. package/dist/esm/types/index.d.ts +10 -0
  177. package/dist/esm/types/interfaces.d.ts +63 -7
  178. package/package.json +53 -24
  179. package/src/native/NativeInspector.ts +0 -1
  180. package/dist/commonjs/bundle.d.ts +0 -2
  181. package/dist/commonjs/bundle.js +0 -1
  182. package/dist/commonjs/components/BrandSquareIcon.d.ts +0 -5
  183. package/dist/commonjs/components/BrandSquareIcon.js +0 -112
  184. package/dist/commonjs/components/Inspector/BundleTab.d.ts +0 -48
  185. package/dist/commonjs/components/Inspector/BundleTab.js +0 -1297
  186. package/dist/commonjs/components/Inspector/PerformanceTab.d.ts +0 -27
  187. package/dist/commonjs/components/Inspector/PerformanceTab.js +0 -454
  188. package/dist/commonjs/customHooks/bundleAnalyzer.d.ts +0 -115
  189. package/dist/commonjs/customHooks/bundleAnalyzer.js +0 -1
  190. package/dist/commonjs/customHooks/performanceTracker.d.ts +0 -144
  191. package/dist/commonjs/customHooks/performanceTracker.js +0 -63
  192. package/dist/commonjs/performance.d.ts +0 -2
  193. package/dist/commonjs/performance.js +0 -1
  194. package/dist/esm/bundle.d.ts +0 -2
  195. package/dist/esm/bundle.js +0 -1
  196. package/dist/esm/components/BrandSquareIcon.d.ts +0 -5
  197. package/dist/esm/components/BrandSquareIcon.js +0 -112
  198. package/dist/esm/components/Inspector/BundleTab.d.ts +0 -48
  199. package/dist/esm/components/Inspector/BundleTab.js +0 -1297
  200. package/dist/esm/components/Inspector/PerformanceTab.d.ts +0 -27
  201. package/dist/esm/components/Inspector/PerformanceTab.js +0 -454
  202. package/dist/esm/customHooks/bundleAnalyzer.d.ts +0 -115
  203. package/dist/esm/customHooks/bundleAnalyzer.js +0 -1
  204. package/dist/esm/customHooks/performanceTracker.d.ts +0 -144
  205. package/dist/esm/customHooks/performanceTracker.js +0 -63
  206. package/dist/esm/performance.d.ts +0 -2
  207. package/dist/esm/performance.js +0 -1
@@ -1,24 +1,24 @@
1
- "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(l,a,u,r){r===void 0&&(r=u);var n=Object.getOwnPropertyDescriptor(a,u);(!n||("get"in n?!a.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return a[u]}}),Object.defineProperty(l,r,n)}):(function(l,a,u,r){r===void 0&&(r=u),l[r]=a[u]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(l,a){Object.defineProperty(l,"default",{enumerable:!0,value:a})}):function(l,a){l.default=a}),__importStar=this&&this.__importStar||(function(){var l=function(a){return l=Object.getOwnPropertyNames||function(u){var r=[];for(var n in u)Object.prototype.hasOwnProperty.call(u,n)&&(r[r.length]=n);return r},l(a)};return function(a){if(a&&a.__esModule)return a;var u={};if(a!=null)for(var r=l(a),n=0;n<r.length;n++)r[n]!=="default"&&__createBinding(u,a,r[n]);return __setModuleDefault(u,a),u}})(),__importDefault=this&&this.__importDefault||function(l){return l&&l.__esModule?l:{default:l}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.DeviceInfoTab=void 0;const react_1=__importStar(require("react")),react_native_1=require("react-native"),TouchableScale_1=__importDefault(require("../TouchableScale")),AppColors_1=require("../../styles/AppColors"),AppFonts_1=require("../../styles/AppFonts"),i18n_1=require("../../i18n"),NetworkIcons_1=require("../NetworkIcons"),NativeInspector_1=require("../../native/NativeInspector"),helpers_1=require("../../helpers"),toast_1=require("../../helpers/toast"),constants_1=require("../../constants"),InfoRow=react_1.default.memo(({label:l,value:a,copyable:u=!0,badge:r,subtext:n,isLast:U=!1})=>{const P=a==null?"\u2014":typeof a=="boolean"?a?"Yes":"No":String(a);return<react_native_1.View style={[styles.infoRow,U&&{borderBottomWidth:0}]}>
1
+ "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(i,a,g,o){o===void 0&&(o=g);var s=Object.getOwnPropertyDescriptor(a,g);(!s||("get"in s?!a.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return a[g]}}),Object.defineProperty(i,o,s)}):(function(i,a,g,o){o===void 0&&(o=g),i[o]=a[g]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(i,a){Object.defineProperty(i,"default",{enumerable:!0,value:a})}):function(i,a){i.default=a}),__importStar=this&&this.__importStar||(function(){var i=function(a){return i=Object.getOwnPropertyNames||function(g){var o=[];for(var s in g)Object.prototype.hasOwnProperty.call(g,s)&&(o[o.length]=s);return o},i(a)};return function(a){if(a&&a.__esModule)return a;var g={};if(a!=null)for(var o=i(a),s=0;s<o.length;s++)o[s]!=="default"&&__createBinding(g,a,o[s]);return __setModuleDefault(g,a),g}})(),__importDefault=this&&this.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.DeviceInfoTab=void 0;const react_1=__importStar(require("react")),react_native_1=require("react-native"),TouchableScale_1=__importDefault(require("../TouchableScale")),AppColors_1=require("../../styles/AppColors"),AppFonts_1=require("../../styles/AppFonts"),i18n_1=require("../../i18n"),NetworkIcons_1=require("../NetworkIcons"),NativeInspector_1=require("../../native/NativeInspector"),helpers_1=require("../../helpers"),toast_1=require("../../helpers/toast"),constants_1=require("../../constants"),InfoRow=react_1.default.memo(({label:i,value:a,copyable:g=!0,badge:o,subtext:s,isLast:l=!1})=>{const P=a==null?"\u2014":typeof a=="boolean"?a?"Yes":"No":typeof a=="number"?a.toLocaleString():String(a);return<react_native_1.View style={[styles.infoRow,l&&{borderBottomWidth:0}]}>
2
2
  <react_native_1.View style={{flex:1,paddingRight:8,minWidth:0}}>
3
3
  <react_native_1.View style={{flexDirection:"row",alignItems:"center",flexWrap:"wrap",gap:6}}>
4
- <react_native_1.Text style={styles.infoLabel}numberOfLines={2}>{l}</react_native_1.Text>
5
- {r&&<react_native_1.View style={[styles.infoBadge,{backgroundColor:r.bg,borderColor:`${r.color}33`}]}>
6
- <react_native_1.Text style={[styles.infoBadgeText,{color:r.color}]}>
7
- {r.text}
4
+ <react_native_1.Text style={styles.infoLabel}numberOfLines={2}>{i}</react_native_1.Text>
5
+ {o&&<react_native_1.View style={[styles.infoBadge,{backgroundColor:o.bg,borderColor:`${o.color}33`}]}>
6
+ <react_native_1.Text style={[styles.infoBadgeText,{color:o.color}]}>
7
+ {o.text}
8
8
  </react_native_1.Text>
9
9
  </react_native_1.View>}
10
10
  </react_native_1.View>
11
- {n&&<react_native_1.Text style={styles.infoSubtext}numberOfLines={2}>{n}</react_native_1.Text>}
11
+ {s&&<react_native_1.Text style={styles.infoSubtext}numberOfLines={2}>{s}</react_native_1.Text>}
12
12
  </react_native_1.View>
13
13
  <react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:6,flexShrink:0,maxWidth:"58%",justifyContent:"flex-end"}}>
14
14
  <react_native_1.Text style={[styles.infoValue,typeof a=="boolean"&&{color:a?AppColors_1.AppColors.emerald500:AppColors_1.AppColors.errorColor}]}numberOfLines={3}selectable>
15
15
  {P}
16
16
  </react_native_1.Text>
17
- {u&&a!==null&&a!==void 0&&<TouchableScale_1.default hitSlop={8}onPress={()=>{(0,helpers_1.copyToClipboard)(P,l),(0,toast_1.showToast)(`Copied ${l}`)}}style={styles.rowCopyBtn}>
17
+ {g&&a!==null&&a!==void 0&&<TouchableScale_1.default hitSlop={8}onPress={()=>{(0,helpers_1.copyToClipboard)(P,i),(0,toast_1.showToast)(`Copied ${i}`)}}style={styles.rowCopyBtn}>
18
18
  <NetworkIcons_1.CopyIcon size={11}color={AppColors_1.AppColors.grayTextWeak}/>
19
19
  </TouchableScale_1.default>}
20
20
  </react_native_1.View>
21
- </react_native_1.View>});exports.DeviceInfoTab=react_1.default.memo(()=>{const{t:l}=(0,i18n_1.useTranslation)(),[a,u]=(0,react_1.useState)("overview"),[r,n]=(0,react_1.useState)(""),[U,P]=(0,react_1.useState)(!0),[i,J]=(0,react_1.useState)(null),[G,j]=(0,react_1.useState)(null),[f,R]=(0,react_1.useState)("Detecting..."),[S,E]=(0,react_1.useState)("0s"),q=react_1.default.useRef(Date.now()),F=(0,react_1.useCallback)(async()=>{try{const[o,c]=await Promise.all([(0,NativeInspector_1.getNativeDeviceMetrics)(),(0,NativeInspector_1.getNativeSystemMetrics)()]);J(o),j(c)}catch{}finally{P(!1)}},[]);(0,react_1.useEffect)(()=>{F();const o=setInterval(F,3e3);return()=>clearInterval(o)},[F]),(0,react_1.useEffect)(()=>{let o=!0;return(async()=>{try{const d=react_native_1.NativeModules?.PlatformConstants?.serverHost||react_native_1.NativeModules?.AndroidConstants?.serverHost||react_native_1.NativeModules?.DevSettings?.serverHost;if(d&&typeof d=="string"){const m=d.split(":")[0].replace(/https?:\/\//,"");if(m&&m!=="localhost"&&m!=="127.0.0.1"){o&&R(m);return}}}catch{}try{const d=new AbortController,m=setTimeout(()=>d.abort(),1200),M=await fetch("https://api.ipify.org?format=json",{signal:d.signal});if(clearTimeout(m),M.ok){const x=await M.json();if(x&&x.ip&&o){R(x.ip);return}}}catch{}o&&R(react_native_1.Platform.OS==="android"?"10.0.2.15 (Local)":"127.0.0.1 (Local)")})(),()=>{o=!1}},[]),(0,react_1.useEffect)(()=>{const o=()=>{const d=Math.floor((Date.now()-q.current)/1e3),m=Math.floor(d/3600),M=Math.floor(d%3600/60),x=d%60;m>0?E(`${m}h ${M}m ${x}s`):M>0?E(`${M}m ${x}s`):E(`${x}s`)},c=setInterval(o,1e3);return o(),()=>clearInterval(c)},[]);const h=react_native_1.Dimensions.get("window"),b=react_native_1.Dimensions.get("screen"),s=react_native_1.PixelRatio.get(),I=react_native_1.PixelRatio.getFontScale(),_=h.width>=600||h.height>=1e3,$=h.width>h.height,B=react_native_1.Platform.OS==="android"?react_native_1.StatusBar.currentHeight||24:h.height>=812?44:20,y=(0,react_1.useMemo)(()=>{const o=`${react_native_1.Platform.OS}-${react_native_1.Platform.Version}-${b.width}x${b.height}-${s}-${react_native_1.Platform.constants?.Brand||"generic"}`;let c=0;for(let m=0;m<o.length;m++)c=(c<<5)-c+o.charCodeAt(m),c|=0;const d=Math.abs(c).toString(16).padStart(8,"0");return`UDID-${react_native_1.Platform.OS.toUpperCase()}-${d.slice(0,4)}-${d.slice(4,8)}-${Date.now().toString(16).slice(-4)}`.toUpperCase()},[b.width,b.height,s]),g=!!global?.HermesInternal,w=!!globalThis?.__turboModuleProxy,V=(0,react_1.useMemo)(()=>{const o=react_native_1.Platform.constants?.reactNativeVersion;return o?`${o.major}.${o.minor}.${o.patch}${o.prerelease!=null?`-${o.prerelease}`:""}`:"0.74+"},[]),p=i?.totalRAM?Math.round(i.totalRAM/(1024*1024)):G?.totalPhysicalRamMb||4096,C=i?.freeRAM?Math.round(i.freeRAM/(1024*1024)):Math.max(0,p-(G?.residentRamMb||1200)),T=Math.max(0,p-C),D=p>0?Math.round(T/p*100):45,A=i?.totalStorage?(i.totalStorage/(1024*1024*1024)).toFixed(1):"128.0",v=i?.freeStorage?(i.freeStorage/(1024*1024*1024)).toFixed(1):"64.2",Y=(0,react_1.useMemo)(()=>[{key:"overview",label:"Overview",icon:o=><NetworkIcons_1.LayersIcon size={12}color={o}/>},{key:"hardware",label:"Hardware",icon:o=><NetworkIcons_1.CpuIcon size={12}color={o}/>},{key:"network",label:"Network & IP",icon:o=><NetworkIcons_1.WifiIcon size={12}color={o}/>},{key:"display",label:"Display",icon:o=><NetworkIcons_1.ScreenIcon size={12}color={o}/>},{key:"runtime",label:"Runtime & App",icon:o=><NetworkIcons_1.BoltIcon size={12}color={o}/>},{key:"security",label:"Security & IDs",icon:o=><NetworkIcons_1.KeyIcon size={12}color={o}/>}],[]),t=(0,react_1.useMemo)(()=>({identifiers:{pseudoUDID:y,bundleId:i?.appBundleId||i?.appPackageName||"com.app.inspector"},hardware:{model:i?.deviceModel||react_native_1.Platform.constants?.Model||"Unknown Device",brand:i?.deviceBrand||react_native_1.Platform.constants?.Brand||(react_native_1.Platform.OS==="ios"?"Apple":"Android"),osVersion:`${react_native_1.Platform.OS} ${react_native_1.Platform.Version}`,apiLevel:i?.apiLevel||react_native_1.Platform.constants?.Version||null,cpuAbi:i?.cpuAbi||react_native_1.Platform.constants?.ServerHost||"arm64-v8a",totalRamMb:p,freeRamMb:C,usedRamMb:T,totalStorageGb:`${A} GB`,freeStorageGb:`${v} GB`,batteryPercent:i?.batteryPercent??100,isCharging:i?.isCharging??!1},network:{ipAddress:f,isWifi:!0,reachability:"Online"},display:{windowWidth:h.width,windowHeight:h.height,screenWidth:b.width,screenHeight:b.height,pixelRatio:s,fontScale:I,statusBarHeight:B,isTablet:_,orientation:$?"Landscape":"Portrait"},runtime:{appName:(0,helpers_1.getAppName)(),appVersion:i?.appVersion||"1.0.0",appBuild:i?.appBuild||"1",reactNativeVersion:V,inspectorVersion:constants_1.LIB_VERSION,isHermes:g,isTurboModule:w,isDev:__DEV__,jsEngine:g?"Hermes":"JSC",timezone:Intl.DateTimeFormat().resolvedOptions().timeZone,locale:Intl.DateTimeFormat().resolvedOptions().locale,sessionUptime:S}}),[y,i,p,C,T,A,v,f,h,b,s,I,B,_,$,V,g,w,S]),K=()=>{(0,helpers_1.copyToClipboard)(JSON.stringify(t,null,2),"Device Full Report"),(0,toast_1.showToast)("Copied Full Device JSON Report!")},X=()=>{const o=`# Device Information Report
21
+ </react_native_1.View>});exports.DeviceInfoTab=react_1.default.memo(()=>{const{t:i}=(0,i18n_1.useTranslation)(),[a,g]=(0,react_1.useState)("overview"),[o,s]=(0,react_1.useState)(""),[l,P]=(0,react_1.useState)(null),[J,j]=(0,react_1.useState)(null),[y,R]=(0,react_1.useState)("Detecting..."),[_,E]=(0,react_1.useState)("0s"),q=react_1.default.useRef(Date.now()),k=(0,react_1.useCallback)(async()=>{try{const[r,d]=await Promise.all([(0,NativeInspector_1.getNativeDeviceMetrics)(),(0,NativeInspector_1.getNativeSystemMetrics)()]);P(r),j(d)}catch{}},[]);(0,react_1.useEffect)(()=>{k();const r=setInterval(k,3e3);return()=>clearInterval(r)},[k]),(0,react_1.useEffect)(()=>{let r=!0;return(async()=>{try{const n=react_native_1.NativeModules?.PlatformConstants?.serverHost||react_native_1.NativeModules?.AndroidConstants?.serverHost||react_native_1.NativeModules?.DevSettings?.serverHost;if(n&&typeof n=="string"){const c=n.split(":")[0].replace(/https?:\/\//,"");if(c&&c!=="localhost"&&c!=="127.0.0.1"){r&&R(c);return}}}catch{}try{const n=new AbortController,c=setTimeout(()=>n.abort(),1200),S=await fetch("https://api.ipify.org?format=json",{signal:n.signal});if(clearTimeout(c),S.ok){const w=await S.json();if(w&&w.ip&&r){R(w.ip);return}}}catch{}r&&R(react_native_1.Platform.OS==="android"?"10.0.2.15 (Local)":"127.0.0.1 (Local)")})(),()=>{r=!1}},[]),(0,react_1.useEffect)(()=>{const r=()=>{const n=Math.floor((Date.now()-q.current)/1e3),c=Math.floor(n/3600),S=Math.floor(n%3600/60),w=n%60;c>0?E(`${c}h ${S}m ${w}s`):S>0?E(`${S}m ${w}s`):E(`${w}s`)},d=setInterval(r,1e3);return r(),()=>clearInterval(d)},[]);const f=react_native_1.Dimensions.get("window"),h=react_native_1.Dimensions.get("screen"),p=react_native_1.PixelRatio.get(),M=react_native_1.PixelRatio.getFontScale(),T=f.width>=600||f.height>=1e3,$=f.width>f.height,B=react_native_1.Platform.OS==="android"?react_native_1.StatusBar.currentHeight||24:f.height>=812?44:20,b=(0,react_1.useMemo)(()=>{const r=`${react_native_1.Platform.OS}-${react_native_1.Platform.Version}-${h.width}x${h.height}-${p}-${react_native_1.Platform.constants?.Brand||"generic"}-${react_native_1.Platform.constants?.Model||"device"}`;let d=3735928559,n=1103547991,c=305419896,S=2271560481;for(let G=0;G<r.length;G++){const L=r.charCodeAt(G);d=Math.imul(d^L,2654435761)>>>0,n=Math.imul(n^L,1597334677)>>>0,c=Math.imul(c^L,374761393)>>>0,S=Math.imul(S^L,668265263)>>>0}const w=d.toString(16).padStart(8,"0").toUpperCase(),Q=(n&65535).toString(16).padStart(4,"0").toUpperCase(),ee=(n>>>16&4095|16384).toString(16).padStart(4,"0").toUpperCase(),te=(c>>>16&16383|32768).toString(16).padStart(4,"0").toUpperCase(),oe=(c.toString(16).padStart(8,"0")+(S&65535).toString(16).padStart(4,"0")).slice(0,12).toUpperCase();return`${w}-${Q}-${ee}-${te}-${oe}`},[h.width,h.height,p]),m=!!global?.HermesInternal,x=!!globalThis?.__turboModuleProxy,V=(0,react_1.useMemo)(()=>{const r=react_native_1.Platform.constants?.reactNativeVersion;return r?`${r.major}.${r.minor}.${r.patch}${r.prerelease!=null?`-${r.prerelease}`:""}`:"0.74+"},[]),u=l?.totalRAM?Math.round(l.totalRAM/(1024*1024)):J?.totalPhysicalRamMb||4096,C=l?.freeRAM?Math.round(l.freeRAM/(1024*1024)):Math.max(0,u-(J?.residentRamMb||1200)),I=Math.max(0,u-C),D=u>0?Math.round(I/u*100):45,v=l?.totalStorage?(l.totalStorage/(1024*1024*1024)).toFixed(1):"128.0",A=l?.freeStorage?(l.freeStorage/(1024*1024*1024)).toFixed(1):"64.2",Y=(0,react_1.useMemo)(()=>[{key:"overview",label:i("device.subTabs.overview","Overview"),themeColor:AppColors_1.AppColors.sky600,icon:r=><NetworkIcons_1.LayersIcon size={12}color={r}/>},{key:"hardware",label:i("device.subTabs.hardware","Hardware"),themeColor:AppColors_1.AppColors.orange600,icon:r=><NetworkIcons_1.CpuIcon size={12}color={r}/>},{key:"network",label:i("device.subTabs.network","Network & IP"),themeColor:AppColors_1.AppColors.teal600,icon:r=><NetworkIcons_1.WifiIcon size={12}color={r}/>},{key:"display",label:i("device.subTabs.display","Display"),themeColor:AppColors_1.AppColors.pink600,icon:r=><NetworkIcons_1.ScreenIcon size={12}color={r}/>},{key:"runtime",label:i("device.subTabs.runtime","Runtime & App"),themeColor:AppColors_1.AppColors.amber600,icon:r=><NetworkIcons_1.BoltIcon size={12}color={r}/>},{key:"security",label:i("device.subTabs.security","Security & IDs"),themeColor:AppColors_1.AppColors.errorColor,icon:r=><NetworkIcons_1.KeyIcon size={12}color={r}/>}],[i]),t=(0,react_1.useMemo)(()=>({identifiers:{pseudoUDID:b,bundleId:l?.appBundleId||l?.appPackageName||"com.app.inspector"},hardware:{model:l?.deviceModel||react_native_1.Platform.constants?.Model||"Unknown Device",brand:l?.deviceBrand||react_native_1.Platform.constants?.Brand||(react_native_1.Platform.OS==="ios"?"Apple":"Android"),osVersion:`${react_native_1.Platform.OS} ${react_native_1.Platform.Version}`,apiLevel:l?.apiLevel||react_native_1.Platform.constants?.Version||null,cpuAbi:l?.cpuAbi||react_native_1.Platform.constants?.ServerHost||"arm64-v8a",totalRamMb:u,freeRamMb:C,usedRamMb:I,totalStorageGb:`${v} GB`,freeStorageGb:`${A} GB`,batteryPercent:l?.batteryPercent??100,isCharging:l?.isCharging??!1},network:{ipAddress:y,isWifi:!0,reachability:"Online"},display:{windowWidth:f.width,windowHeight:f.height,screenWidth:h.width,screenHeight:h.height,pixelRatio:p,fontScale:M,statusBarHeight:B,isTablet:T,orientation:$?"Landscape":"Portrait"},runtime:{appName:(0,helpers_1.getAppName)(),appVersion:l?.appVersion||"1.0.0",appBuild:l?.appBuild||"1",reactNativeVersion:V,inspectorVersion:constants_1.LIB_VERSION,isHermes:m,isTurboModule:x,isDev:__DEV__,jsEngine:m?"Hermes":"JSC",timezone:Intl.DateTimeFormat().resolvedOptions().timeZone,locale:Intl.DateTimeFormat().resolvedOptions().locale,sessionUptime:_}}),[b,l,u,C,I,v,A,y,f,h,p,M,B,T,$,V,m,x,_]),K=()=>{(0,helpers_1.copyToClipboard)(JSON.stringify(t,null,2),"Device Full Report"),(0,toast_1.showToast)(i("device.copiedJson","Copied Full Device JSON Report!"))},X=()=>{const r=`# Device Information Report
22
22
  **Generated by React Native In-App Inspector v${constants_1.LIB_VERSION}**
23
23
 
24
24
  ## \u{1F4F1} Hardware & System
@@ -26,50 +26,38 @@
26
26
  - **Brand / Manufacturer:** ${t.hardware.brand}
27
27
  - **OS Version:** ${t.hardware.osVersion}
28
28
  - **CPU Architecture:** ${t.hardware.cpuAbi}
29
- - **Total RAM:** ${p} MB (Free: ${C} MB)
30
- - **Total Storage:** ${A} GB (Free: ${v} GB)
29
+ - **Total RAM:** ${u} MB (Free: ${C} MB)
30
+ - **Total Storage:** ${v} GB (Free: ${A} GB)
31
31
  - **Battery:** ${t.hardware.batteryPercent}% (${t.hardware.isCharging?"Charging":"Unplugged"})
32
32
 
33
33
  ## \u{1F310} Network & Connectivity
34
- - **IP Address:** ${f}
34
+ - **IP Address:** ${y}
35
35
  - **Status:** Online
36
36
 
37
37
  ## \u{1F5A5} Display & Geometry
38
- - **Resolution:** ${b.width} \xD7 ${b.height} pt (@${s}x)
39
- - **Form Factor:** ${_?"Tablet":"Phone"} (${$?"Landscape":"Portrait"})
38
+ - **Resolution:** ${h.width} \xD7 ${h.height} pt (@${p}x)
39
+ - **Form Factor:** ${T?"Tablet":"Phone"} (${$?"Landscape":"Portrait"})
40
40
  - **Status Bar Height:** ${B} pt
41
41
 
42
42
  ## \u2699\uFE0F Runtime & App
43
43
  - **App Name:** ${t.runtime.appName}
44
44
  - **App Version:** ${t.runtime.appVersion} (${t.runtime.appBuild})
45
45
  - **React Native:** v${V}
46
- - **JS Engine:** ${g?"Hermes":"JSC"} (Bridgeless TurboModule: ${w?"Yes":"No"})
46
+ - **JS Engine:** ${m?"Hermes":"JSC"} (Bridgeless TurboModule: ${x?"Yes":"No"})
47
47
  - **Environment:** ${__DEV__?"Development (__DEV__)":"Production (Release)"}
48
48
  - **Timezone:** ${t.runtime.timezone}
49
- - **Session Uptime:** ${S}
49
+ - **Session Uptime:** ${_}
50
50
 
51
51
  ## \u{1F511} Identifiers & Security
52
- - **Pseudo-UDID:** \`${y}\`
52
+ - **Pseudo-UDID:** \`${b}\`
53
53
  - **Bundle ID:** \`${t.identifiers.bundleId}\`
54
- `;(0,helpers_1.copyToClipboard)(o,"Device Markdown Report"),(0,toast_1.showToast)("Copied Markdown Report to Clipboard!")},e=(0,react_1.useCallback)((o,c,d)=>{if(!r.trim())return!0;const m=r.toLowerCase().trim(),M=c!=null?typeof c=="object"?JSON.stringify(c):String(c):"",x=d!=null?String(d):"";return o.toLowerCase().includes(m)||M.toLowerCase().includes(m)||x.toLowerCase().includes(m)},[r]),L=(0,react_1.useMemo)(()=>r.trim()?e("Model",i?.deviceModel||react_native_1.Platform.constants?.Model)||e("OS",react_native_1.Platform.OS)||e("IP Address",f)||e("RAM",`${T}/${p}`)||e("Uptime",S):!0,[r,e,i,f,T,p,S]),O=(0,react_1.useMemo)(()=>r.trim()?e("Device Model",t.hardware.model)||e("Manufacturer",t.hardware.brand)||e("Operating System",t.hardware.osVersion)||e("IP Address",f)||e("RAM Memory",`${T} MB / ${p} MB (${D}%)`,`Free Memory: ${C} MB`)||e("Storage Capacity",`${v} GB Free / ${A} GB Total`)||e("App Version",`v${t.runtime.appVersion} (${t.runtime.appBuild})`)||e("JavaScript Engine",g?"Hermes Bytecode Engine":"JavaScriptCore (JSC)")||e("UDID Identifier",y):!0,[r,e,t,f,T,p,D,C,v,A,g,y]),k=(0,react_1.useMemo)(()=>r.trim()?e("CPU Architecture",t.hardware.cpuAbi)||e("Total RAM",`${p} MB`)||e("Free RAM",`${C} MB`)||e("Storage Capacity",`${A} GB`)||e("Available Storage",`${v} GB`)||e("Battery",`${i?.batteryPercent??100}%`)||e("API Level",`API ${i?.apiLevel||react_native_1.Platform.Version}`)||e("Thermal State","Nominal (Cool)"):!0,[r,e,t,p,C,A,v,i]),N=(0,react_1.useMemo)(()=>r.trim()?e("IP Address",f)||e("Internet Reachability","Connected")||e("Connection Type","Wi-Fi / Local Area Network")||e("Metro Dev Server",react_native_1.NativeModules?.PlatformConstants?.serverHost||react_native_1.NativeModules?.AndroidConstants?.serverHost||"localhost:8081")||e("WebSocket Protocol","Active & Enabled")||e("Network Inspector Interceptor","Intercepting XHR & Fetch"):!0,[r,e,f]),z=(0,react_1.useMemo)(()=>r.trim()?e("Window Resolution",`${h.width.toFixed(0)} \xD7 ${h.height.toFixed(0)} pt`)||e("Screen Physical Size",`${(b.width*s).toFixed(0)} \xD7 ${(b.height*s).toFixed(0)} px`)||e("Pixel Density",`@${s}x (${Math.round(s*160)} dpi)`)||e("Font Scale",`${I}x`)||e("Form Factor",_?"Tablet":"Smartphone")||e("Orientation",$?"Landscape":"Portrait")||e("Status Bar Height",`${B} pt`):!0,[r,e,h,b,s,I,_,$,B]),H=(0,react_1.useMemo)(()=>r.trim()?e("App Name",t.runtime.appName)||e("Bundle ID",t.identifiers.bundleId)||e("App Version",`v${t.runtime.appVersion} (${t.runtime.appBuild})`)||e("React Native",`v${V}`)||e("In-App Inspector Version",`v${constants_1.LIB_VERSION}`)||e("Hermes Engine",g?"Enabled (AOT Bytecode)":"Disabled (JSC)")||e("New Architecture",w?"Enabled":"Legacy Bridge")||e("Build Type",__DEV__?"Debug (__DEV__ = true)":"Release / Production")||e("Timezone",t.runtime.timezone)||e("Locale",t.runtime.locale)||e("Session Uptime",S):!0,[r,e,t,V,g,w,S]),W=(0,react_1.useMemo)(()=>r.trim()?e("Pseudo-UDID",y)||e("Bundle ID",t.identifiers.bundleId)||e("Root / Jailbreak","Clean (Standard Sandbox)")||e("Simulator / Emulator",react_native_1.Platform.constants?.Model?.includes?.("sdk")||react_native_1.Platform.constants?.Model?.includes?.("Emulator")||react_native_1.Platform.constants?.Model?.includes?.("Simulator")?"Virtual Simulator":"Physical Device")||e("Sandbox Integrity","Enforced by OS Kernel"):!0,[r,e,y,t]),Z=(0,react_1.useMemo)(()=>r.trim()?L||O||k||N||z||H||W:!0,[r,L,O,k,N,z,H,W]);return<react_native_1.View style={styles.container}>
55
-
56
- <react_native_1.View style={styles.subTabsWrapper}>
57
- <react_native_1.ScrollView horizontal showsHorizontalScrollIndicator={!1}contentContainerStyle={styles.subTabsContainer}>
58
- {Y.map(o=>{const c=a===o.key,d=c?AppColors_1.AppColors.white:AppColors_1.AppColors.grayText;return<TouchableScale_1.default key={o.key}onPress={()=>u(o.key)}style={[styles.subTabPill,c&&styles.subTabPillActive]}>
59
- {o.icon(d)}
60
- <react_native_1.Text style={[styles.subTabPillText,c&&styles.subTabPillTextActive]}>
61
- {o.label}
62
- </react_native_1.Text>
63
- </TouchableScale_1.default>})}
64
- </react_native_1.ScrollView>
65
- </react_native_1.View>
66
-
54
+ `;(0,helpers_1.copyToClipboard)(r,"Device Markdown Report"),(0,toast_1.showToast)(i("device.copiedMarkdown","Copied Markdown Report to Clipboard!"))},e=(0,react_1.useCallback)((r,d,n)=>{if(!o.trim())return!0;const c=o.toLowerCase().trim(),S=d!=null?typeof d=="object"?JSON.stringify(d):String(d):"",w=n!=null?String(n):"";return r.toLowerCase().includes(c)||S.toLowerCase().includes(c)||w.toLowerCase().includes(c)},[o]),O=(0,react_1.useMemo)(()=>o.trim()?e("Model",l?.deviceModel||react_native_1.Platform.constants?.Model)||e("OS",react_native_1.Platform.OS)||e("IP Address",y)||e("RAM",`${I.toLocaleString()}/${u.toLocaleString()}`)||e("Uptime",_):!0,[o,e,l,y,I,u,_]),F=(0,react_1.useMemo)(()=>o.trim()?e("Device Model",t.hardware.model)||e("Manufacturer",t.hardware.brand)||e("Operating System",t.hardware.osVersion)||e("IP Address",y)||e("RAM Memory",`${I.toLocaleString()} MB / ${u.toLocaleString()} MB (${D}%)`,`Free Memory: ${C.toLocaleString()} MB`)||e("Storage Capacity",`${A} GB Free / ${v} GB Total`)||e("App Version",`v${t.runtime.appVersion} (${t.runtime.appBuild})`)||e("JavaScript Engine",m?"Hermes Bytecode Engine":"JavaScriptCore (JSC)")||e("UDID Identifier",b):!0,[o,e,t,y,I,u,D,C,A,v,m,b]),N=(0,react_1.useMemo)(()=>o.trim()?e("CPU Architecture",t.hardware.cpuAbi)||e("Total RAM",`${u.toLocaleString()} MB`)||e("Free RAM",`${C.toLocaleString()} MB`)||e("Storage Capacity",`${v} GB`)||e("Available Storage",`${A} GB`)||e("Battery",`${l?.batteryPercent??100}%`)||e("API Level",`API ${l?.apiLevel||react_native_1.Platform.Version}`)||e("Thermal State","Nominal (Cool)"):!0,[o,e,t,u,C,v,A,l]),U=(0,react_1.useMemo)(()=>o.trim()?e("IP Address",y)||e("Internet Reachability","Connected")||e("Connection Type","Wi-Fi / Local Area Network")||e("Metro Dev Server",react_native_1.NativeModules?.PlatformConstants?.serverHost||react_native_1.NativeModules?.AndroidConstants?.serverHost||"localhost:8081")||e("WebSocket Protocol","Active & Enabled")||e("Network Inspector Interceptor","Intercepting XHR & Fetch"):!0,[o,e,y]),z=(0,react_1.useMemo)(()=>o.trim()?e("Window Resolution",`${Math.round(f.width).toLocaleString()} \xD7 ${Math.round(f.height).toLocaleString()} pt`)||e("Screen Physical Size",`${Math.round(h.width*p).toLocaleString()} \xD7 ${Math.round(h.height*p).toLocaleString()} px`)||e("Pixel Density",`@${p}x (${Math.round(p*160).toLocaleString()} dpi)`)||e("Font Scale",`${M}x`)||e("Form Factor",T?"Tablet":"Smartphone")||e("Orientation",$?"Landscape":"Portrait")||e("Status Bar Height",`${B} pt`):!0,[o,e,f,h,p,M,T,$,B]),H=(0,react_1.useMemo)(()=>o.trim()?e("App Name",t.runtime.appName)||e("Bundle ID",t.identifiers.bundleId)||e("App Version",`v${t.runtime.appVersion} (${t.runtime.appBuild})`)||e("React Native",`v${V}`)||e("In-App Inspector Version",`v${constants_1.LIB_VERSION}`)||e("Hermes Engine",m?"Enabled (AOT Bytecode)":"Disabled (JSC)")||e("New Architecture",x?"Enabled":"Legacy Bridge")||e("Build Type",__DEV__?"Debug (__DEV__ = true)":"Release / Production")||e("Timezone",t.runtime.timezone)||e("Locale",t.runtime.locale)||e("Session Uptime",_):!0,[o,e,t,V,m,x,_]),W=(0,react_1.useMemo)(()=>o.trim()?e("Pseudo-UDID",b)||e("Bundle ID",t.identifiers.bundleId)||e("Root / Jailbreak","Clean (Standard Sandbox)")||e("Simulator / Emulator",react_native_1.Platform.constants?.Model?.includes?.("sdk")||react_native_1.Platform.constants?.Model?.includes?.("Emulator")||react_native_1.Platform.constants?.Model?.includes?.("Simulator")?"Virtual Simulator":"Physical Device")||e("Sandbox Integrity","Enforced by OS Kernel"):!0,[o,e,b,t]),Z=(0,react_1.useMemo)(()=>o.trim()?O||F||N||U||z||H||W:!0,[o,O,F,N,U,z,H,W]);return<react_native_1.View style={styles.container}>
67
55
 
68
56
  <react_native_1.View style={styles.actionBar}>
69
57
  <react_native_1.View style={styles.searchBar}>
70
58
  <NetworkIcons_1.SearchIcon size={14}color={AppColors_1.AppColors.grayTextWeak}/>
71
- <react_native_1.TextInput value={r}onChangeText={n}placeholder="Search specs, UDID, IP, screen..."placeholderTextColor={AppColors_1.AppColors.grayTextWeak}style={styles.searchInput}clearButtonMode="while-editing"/>
72
- {r.length>0&&<TouchableScale_1.default onPress={()=>n("")}hitSlop={8}>
59
+ <react_native_1.TextInput value={o}onChangeText={s}placeholder={i("device.searchPlaceholder","Search specs, UDID, IP, screen...")}placeholderTextColor={AppColors_1.AppColors.grayTextWeak}style={styles.searchInput}clearButtonMode="while-editing"/>
60
+ {o.length>0&&<TouchableScale_1.default onPress={()=>s("")}hitSlop={8}>
73
61
  <NetworkIcons_1.ClearIcon size={13}color={AppColors_1.AppColors.grayTextWeak}/>
74
62
  </TouchableScale_1.default>}
75
63
  </react_native_1.View>
@@ -86,19 +74,67 @@
86
74
  </react_native_1.View>
87
75
 
88
76
 
77
+ <react_native_1.View style={styles.subTabsWrapper}>
78
+ <react_native_1.ScrollView horizontal showsHorizontalScrollIndicator={!1}contentContainerStyle={styles.subTabsContainer}>
79
+ {Y.map(r=>{const d=a===r.key,n=r.themeColor||AppColors_1.AppColors.purple,c=d?AppColors_1.AppColors.white:n;return<TouchableScale_1.default key={r.key}onPress={()=>g(r.key)}>
80
+ <react_native_1.View style={[styles.subTabPill,d&&{backgroundColor:n,borderColor:n},!d&&{backgroundColor:`${n}12`,borderColor:`${n}30`}]}>
81
+ {r.icon(c)}
82
+ <react_native_1.Text style={[styles.subTabPillText,d&&{color:AppColors_1.AppColors.white},!d&&{color:AppColors_1.AppColors.primaryBlack}]}>
83
+ {r.label}
84
+ </react_native_1.Text>
85
+ </react_native_1.View>
86
+ </TouchableScale_1.default>})}
87
+ </react_native_1.ScrollView>
88
+ </react_native_1.View>
89
+
90
+
89
91
  <react_native_1.ScrollView style={styles.scrollArea}contentContainerStyle={styles.scrollContent}showsVerticalScrollIndicator={!1}>
90
92
 
91
- {(!r.trim()||L)&&<react_native_1.View style={styles.heroCard}>
93
+ {(!o.trim()||e("UDID Identifier",b)||e("UUID",b)||e("Device UUID",b))&&<react_native_1.View style={styles.featuredUuidCard}>
94
+ <react_native_1.View style={styles.featuredUuidHeader}>
95
+ <react_native_1.View style={styles.featuredUuidTitleRow}>
96
+ <react_native_1.View style={styles.featuredUuidIconWrap}>
97
+ <NetworkIcons_1.KeyIcon size={14}color={AppColors_1.AppColors.white}/>
98
+ </react_native_1.View>
99
+ <react_native_1.View style={{flex:1,minWidth:0}}>
100
+ <react_native_1.View style={{flexDirection:"row",alignItems:"center",gap:6}}>
101
+ <react_native_1.Text style={styles.featuredUuidLabel}>DEVICE UUID</react_native_1.Text>
102
+ <react_native_1.View style={styles.featuredBadge}>
103
+ <react_native_1.Text style={styles.featuredBadgeText}>FEATURED</react_native_1.Text>
104
+ </react_native_1.View>
105
+ </react_native_1.View>
106
+ <react_native_1.Text style={styles.featuredUuidSubtext}>
107
+ Deterministic hardware pseudo-identifier
108
+ </react_native_1.Text>
109
+ </react_native_1.View>
110
+ </react_native_1.View>
111
+
112
+ <TouchableScale_1.default onPress={()=>{(0,helpers_1.copyToClipboard)(b,"Device UUID"),(0,toast_1.showToast)(i("device.copiedUuid","Copied Device UUID to clipboard!"))}}style={styles.featuredCopyBtn}hitSlop={6}accessibilityRole="button"accessibilityLabel="Copy Device UUID">
113
+ <NetworkIcons_1.CopyIcon size={11}color={AppColors_1.AppColors.white}/>
114
+ <react_native_1.Text style={styles.featuredCopyBtnText}>Copy</react_native_1.Text>
115
+ </TouchableScale_1.default>
116
+ </react_native_1.View>
117
+
118
+ <TouchableScale_1.default onPress={()=>{(0,helpers_1.copyToClipboard)(b,"Device UUID"),(0,toast_1.showToast)(i("device.copiedUuid","Copied Device UUID to clipboard!"))}}style={styles.featuredUuidValueBox}hitSlop={4}accessibilityRole="button"accessibilityLabel="Tap to copy UUID">
119
+ <react_native_1.Text style={styles.featuredUuidValueText}numberOfLines={1}ellipsizeMode="middle"selectable>
120
+ {b}
121
+ </react_native_1.Text>
122
+ <NetworkIcons_1.CopyIcon size={12}color={AppColors_1.AppColors.brandPurple}/>
123
+ </TouchableScale_1.default>
124
+ </react_native_1.View>}
125
+
126
+
127
+ {(!o.trim()||O)&&<react_native_1.View style={styles.heroCard}>
92
128
  <react_native_1.View style={styles.heroHeader}>
93
129
  <react_native_1.View style={styles.heroIconWrap}>
94
130
  {react_native_1.Platform.OS==="ios"?<NetworkIcons_1.AppleIcon size={20}color={AppColors_1.AppColors.white}/>:<NetworkIcons_1.AndroidIcon size={20}color={AppColors_1.AppColors.white}/>}
95
131
  </react_native_1.View>
96
132
  <react_native_1.View style={{flex:1,minWidth:0}}>
97
133
  <react_native_1.Text style={styles.heroTitle}numberOfLines={1}ellipsizeMode="tail">
98
- {i?.deviceModel||react_native_1.Platform.constants?.Model||(react_native_1.Platform.OS==="ios"?"Apple iPhone":"Android Device")}
134
+ {l?.deviceModel||react_native_1.Platform.constants?.Model||(react_native_1.Platform.OS==="ios"?"Apple iPhone":"Android Device")}
99
135
  </react_native_1.Text>
100
136
  <react_native_1.Text style={styles.heroSubtitle}numberOfLines={1}ellipsizeMode="tail">
101
- {react_native_1.Platform.OS==="ios"?`iOS ${react_native_1.Platform.Version}`:`Android ${react_native_1.Platform.Version} (API ${i?.apiLevel||react_native_1.Platform.Version})`}
137
+ {react_native_1.Platform.OS==="ios"?`iOS ${react_native_1.Platform.Version}`:`Android ${react_native_1.Platform.Version} (API ${l?.apiLevel||react_native_1.Platform.Version})`}
102
138
  </react_native_1.Text>
103
139
  </react_native_1.View>
104
140
  <react_native_1.View style={styles.heroBadge}>
@@ -110,57 +146,57 @@
110
146
 
111
147
  <react_native_1.View style={styles.heroMetricsStrip}>
112
148
  <react_native_1.View style={styles.heroMetricItem}>
113
- <react_native_1.Text style={styles.heroMetricLabel}numberOfLines={1}ellipsizeMode="tail">IP ADDRESS</react_native_1.Text>
149
+ <react_native_1.Text style={styles.heroMetricLabel}numberOfLines={1}ellipsizeMode="tail">{i("device.ipAddress","IP ADDRESS")}</react_native_1.Text>
114
150
  <react_native_1.Text style={styles.heroMetricValue}numberOfLines={1}ellipsizeMode="tail">
115
- {f}
151
+ {y}
116
152
  </react_native_1.Text>
117
153
  </react_native_1.View>
118
154
  <react_native_1.View style={styles.heroMetricDivider}/>
119
155
  <react_native_1.View style={styles.heroMetricItem}>
120
- <react_native_1.Text style={styles.heroMetricLabel}numberOfLines={1}ellipsizeMode="tail">RAM (USED/TOTAL)</react_native_1.Text>
156
+ <react_native_1.Text style={styles.heroMetricLabel}numberOfLines={1}ellipsizeMode="tail">{i("device.ramUsedTotal","RAM (USED/TOTAL)")}</react_native_1.Text>
121
157
  <react_native_1.Text style={styles.heroMetricValue}numberOfLines={1}ellipsizeMode="tail">
122
- {T}/{p} MB
158
+ {I.toLocaleString()}/{u.toLocaleString()} MB
123
159
  </react_native_1.Text>
124
160
  </react_native_1.View>
125
161
  <react_native_1.View style={styles.heroMetricDivider}/>
126
162
  <react_native_1.View style={styles.heroMetricItem}>
127
- <react_native_1.Text style={styles.heroMetricLabel}numberOfLines={1}ellipsizeMode="tail">UPTIME</react_native_1.Text>
128
- <react_native_1.Text style={styles.heroMetricValue}numberOfLines={1}ellipsizeMode="tail">{S}</react_native_1.Text>
163
+ <react_native_1.Text style={styles.heroMetricLabel}numberOfLines={1}ellipsizeMode="tail">{i("device.uptime","UPTIME")}</react_native_1.Text>
164
+ <react_native_1.Text style={styles.heroMetricValue}numberOfLines={1}ellipsizeMode="tail">{_}</react_native_1.Text>
129
165
  </react_native_1.View>
130
166
  </react_native_1.View>
131
167
  </react_native_1.View>}
132
168
 
133
169
 
134
- {(a==="overview"||r.length>0)&&O&&<react_native_1.View style={styles.sectionCard}>
170
+ {(a==="overview"||o.length>0)&&F&&<react_native_1.View style={styles.sectionCard}>
135
171
  <react_native_1.Text style={styles.sectionTitle}>DEVICE OVERVIEW</react_native_1.Text>
136
172
  {e("Device Model",t.hardware.model)&&<InfoRow label="Device Model"value={t.hardware.model}/>}
137
173
  {e("Manufacturer",t.hardware.brand)&&<InfoRow label="Manufacturer / Brand"value={t.hardware.brand}/>}
138
174
  {e("Operating System",t.hardware.osVersion)&&<InfoRow label="Operating System"value={t.hardware.osVersion}badge={{text:react_native_1.Platform.OS.toUpperCase(),color:AppColors_1.AppColors.blue500,bg:`${AppColors_1.AppColors.blue500}18`}}/>}
139
- {e("IP Address",f)&&<InfoRow label="Local IP Address"value={f}badge={{text:"ONLINE",color:AppColors_1.AppColors.emerald500,bg:`${AppColors_1.AppColors.emerald500}18`}}/>}
140
- {e("RAM Memory",`${T} MB / ${p} MB (${D}%)`,`Free Memory: ${C} MB`)&&<InfoRow label="RAM Memory"value={`${T} MB / ${p} MB (${D}%)`}subtext={`Free Memory: ${C} MB`}/>}
141
- {e("Storage Capacity",`${v} GB Free / ${A} GB Total`)&&<InfoRow label="Internal Storage"value={`${v} GB Free / ${A} GB Total`}/>}
175
+ {e("IP Address",y)&&<InfoRow label="Local IP Address"value={y}badge={{text:"ONLINE",color:AppColors_1.AppColors.emerald500,bg:`${AppColors_1.AppColors.emerald500}18`}}/>}
176
+ {e("RAM Memory",`${I.toLocaleString()} MB / ${u.toLocaleString()} MB (${D}%)`,`Free Memory: ${C.toLocaleString()} MB`)&&<InfoRow label="RAM Memory"value={`${I.toLocaleString()} MB / ${u.toLocaleString()} MB (${D}%)`}subtext={`Free Memory: ${C.toLocaleString()} MB`}/>}
177
+ {e("Storage Capacity",`${A} GB Free / ${v} GB Total`)&&<InfoRow label="Internal Storage"value={`${A} GB Free / ${v} GB Total`}/>}
142
178
  {e("App Version",`v${t.runtime.appVersion} (${t.runtime.appBuild})`)&&<InfoRow label="Host App Version"value={`v${t.runtime.appVersion} (${t.runtime.appBuild})`}/>}
143
- {e("JavaScript Engine",g?"Hermes Bytecode Engine":"JavaScriptCore (JSC)")&&<InfoRow label="JS Runtime Engine"value={g?"Hermes Bytecode Engine":"JavaScriptCore (JSC)"}badge={g?{text:"HERMES",color:AppColors_1.AppColors.purple,bg:`${AppColors_1.AppColors.purple}18`}:{text:"JSC",color:AppColors_1.AppColors.sky500,bg:`${AppColors_1.AppColors.sky500}18`}}/>}
144
- {e("UDID Identifier",y)&&<InfoRow label="Pseudo-UDID"value={y}isLast/>}
179
+ {e("JavaScript Engine",m?"Hermes Bytecode Engine":"JavaScriptCore (JSC)")&&<InfoRow label="JS Runtime Engine"value={m?"Hermes Bytecode Engine":"JavaScriptCore (JSC)"}badge={m?{text:"HERMES",color:AppColors_1.AppColors.purple,bg:`${AppColors_1.AppColors.purple}18`}:{text:"JSC",color:AppColors_1.AppColors.sky500,bg:`${AppColors_1.AppColors.sky500}18`}}/>}
180
+ {e("UDID Identifier",b)&&<InfoRow label="Pseudo-UDID"value={b}isLast/>}
145
181
  </react_native_1.View>}
146
182
 
147
183
 
148
- {(a==="hardware"||r.length>0)&&k&&<react_native_1.View style={styles.sectionCard}>
184
+ {(a==="hardware"||o.length>0)&&N&&<react_native_1.View style={styles.sectionCard}>
149
185
  <react_native_1.Text style={styles.sectionTitle}>HARDWARE & SYSTEM SPECIFICATIONS</react_native_1.Text>
150
186
  {e("CPU Architecture",t.hardware.cpuAbi)&&<InfoRow label="CPU Architecture / ABI"value={t.hardware.cpuAbi}badge={{text:"64-BIT",color:AppColors_1.AppColors.purple,bg:`${AppColors_1.AppColors.purple}18`}}/>}
151
- {e("Total RAM",`${p} MB`)&&<InfoRow label="Total Physical RAM"value={`${p} MB`}/>}
152
- {e("Free RAM",`${C} MB`)&&<InfoRow label="Available Free RAM"value={`${C} MB`}badge={{text:C<500?"LOW":"HEALTHY",color:C<500?AppColors_1.AppColors.errorColor:AppColors_1.AppColors.emerald500,bg:C<500?`${AppColors_1.AppColors.errorColor}18`:`${AppColors_1.AppColors.emerald500}18`}}/>}
153
- {e("Storage Capacity",`${A} GB`)&&<InfoRow label="Disk Storage Total"value={`${A} GB`}/>}
154
- {e("Available Storage",`${v} GB`)&&<InfoRow label="Disk Storage Available"value={`${v} GB`}/>}
155
- {e("Battery",`${i?.batteryPercent??100}%`)&&<InfoRow label="Battery Level"value={`${i?.batteryPercent??100}%`}badge={{text:i?.isCharging?"CHARGING":"DISCHARGING",color:i?.isCharging?AppColors_1.AppColors.emerald500:AppColors_1.AppColors.grayText,bg:i?.isCharging?`${AppColors_1.AppColors.emerald500}18`:`${AppColors_1.AppColors.grayText}18`}}/>}
156
- {e("API Level",`API ${i?.apiLevel||react_native_1.Platform.Version}`)&&react_native_1.Platform.OS==="android"&&<InfoRow label="Android API SDK Level"value={`API ${i?.apiLevel||react_native_1.Platform.Version}`}/>}
187
+ {e("Total RAM",`${u.toLocaleString()} MB`)&&<InfoRow label="Total Physical RAM"value={`${u.toLocaleString()} MB`}/>}
188
+ {e("Free RAM",`${C.toLocaleString()} MB`)&&<InfoRow label="Available Free RAM"value={`${C.toLocaleString()} MB`}badge={{text:C<500?"LOW":"HEALTHY",color:C<500?AppColors_1.AppColors.errorColor:AppColors_1.AppColors.emerald500,bg:C<500?`${AppColors_1.AppColors.errorColor}18`:`${AppColors_1.AppColors.emerald500}18`}}/>}
189
+ {e("Storage Capacity",`${v} GB`)&&<InfoRow label="Disk Storage Total"value={`${v} GB`}/>}
190
+ {e("Available Storage",`${A} GB`)&&<InfoRow label="Disk Storage Available"value={`${A} GB`}/>}
191
+ {e("Battery",`${l?.batteryPercent??100}%`)&&<InfoRow label="Battery Level"value={`${l?.batteryPercent??100}%`}badge={{text:l?.isCharging?"CHARGING":"DISCHARGING",color:l?.isCharging?AppColors_1.AppColors.emerald500:AppColors_1.AppColors.grayText,bg:l?.isCharging?`${AppColors_1.AppColors.emerald500}18`:`${AppColors_1.AppColors.grayText}18`}}/>}
192
+ {e("API Level",`API ${l?.apiLevel||react_native_1.Platform.Version}`)&&react_native_1.Platform.OS==="android"&&<InfoRow label="Android API SDK Level"value={`API ${l?.apiLevel||react_native_1.Platform.Version}`}/>}
157
193
  {e("Thermal State","Nominal (Cool)")&&<InfoRow label="Thermal State"value="Nominal (Cool)"badge={{text:"OPTIMAL",color:AppColors_1.AppColors.emerald500,bg:`${AppColors_1.AppColors.emerald500}18`}}isLast/>}
158
194
  </react_native_1.View>}
159
195
 
160
196
 
161
- {(a==="network"||r.length>0)&&N&&<react_native_1.View style={styles.sectionCard}>
197
+ {(a==="network"||o.length>0)&&U&&<react_native_1.View style={styles.sectionCard}>
162
198
  <react_native_1.Text style={styles.sectionTitle}>NETWORK & CONNECTIVITY</react_native_1.Text>
163
- {e("IP Address",f)&&<InfoRow label="Local Device IP"value={f}badge={{text:"IPV4",color:AppColors_1.AppColors.blue500,bg:`${AppColors_1.AppColors.blue500}18`}}/>}
199
+ {e("IP Address",y)&&<InfoRow label="Local Device IP"value={y}badge={{text:"IPV4",color:AppColors_1.AppColors.blue500,bg:`${AppColors_1.AppColors.blue500}18`}}/>}
164
200
  {e("Internet Reachability","Connected")&&<InfoRow label="Internet Reachability"value="Connected"badge={{text:"ONLINE",color:AppColors_1.AppColors.emerald500,bg:`${AppColors_1.AppColors.emerald500}18`}}/>}
165
201
  {e("Connection Type","Wi-Fi / Local Area Network")&&<InfoRow label="Active Connection Type"value="Wi-Fi / Local Area Network"/>}
166
202
  {e("Metro Dev Server",react_native_1.NativeModules?.PlatformConstants?.serverHost||react_native_1.NativeModules?.AndroidConstants?.serverHost||"localhost:8081")&&<InfoRow label="Metro Packager Host"value={react_native_1.NativeModules?.PlatformConstants?.serverHost||react_native_1.NativeModules?.AndroidConstants?.serverHost||"localhost:8081"}/>}
@@ -169,37 +205,37 @@
169
205
  </react_native_1.View>}
170
206
 
171
207
 
172
- {(a==="display"||r.length>0)&&z&&<react_native_1.View style={styles.sectionCard}>
208
+ {(a==="display"||o.length>0)&&z&&<react_native_1.View style={styles.sectionCard}>
173
209
  <react_native_1.Text style={styles.sectionTitle}>DISPLAY & SCREEN GEOMETRY</react_native_1.Text>
174
- {e("Window Resolution",`${h.width.toFixed(0)} \xD7 ${h.height.toFixed(0)} pt`)&&<InfoRow label="Window Logical Size"value={`${h.width.toFixed(0)} \xD7 ${h.height.toFixed(0)} pt`}/>}
175
- {e("Screen Physical Size",`${(b.width*s).toFixed(0)} \xD7 ${(b.height*s).toFixed(0)} px`)&&<InfoRow label="Physical Screen Size"value={`${(b.width*s).toFixed(0)} \xD7 ${(b.height*s).toFixed(0)} px`}/>}
176
- {e("Pixel Density",`@${s}x (${Math.round(s*160)} dpi)`)&&<InfoRow label="Pixel Ratio (DPI Scale)"value={`@${s}x (${Math.round(s*160)} dpi)`}badge={{text:`@${s}x`,color:AppColors_1.AppColors.purple,bg:`${AppColors_1.AppColors.purple}18`}}/>}
177
- {e("Font Scale",`${I}x`)&&<InfoRow label="User Font Scale"value={`${I}x (${I===1?"Default":I>1?"Enlarged":"Compact"})`}/>}
178
- {e("Form Factor",_?"Tablet":"Smartphone")&&<InfoRow label="Device Form Factor"value={_?"Tablet":"Smartphone"}badge={{text:_?"TABLET":"PHONE",color:_?AppColors_1.AppColors.blue500:AppColors_1.AppColors.purple,bg:_?`${AppColors_1.AppColors.blue500}18`:`${AppColors_1.AppColors.purple}18`}}/>}
210
+ {e("Window Resolution",`${Math.round(f.width).toLocaleString()} \xD7 ${Math.round(f.height).toLocaleString()} pt`)&&<InfoRow label="Window Logical Size"value={`${Math.round(f.width).toLocaleString()} \xD7 ${Math.round(f.height).toLocaleString()} pt`}/>}
211
+ {e("Screen Physical Size",`${Math.round(h.width*p).toLocaleString()} \xD7 ${Math.round(h.height*p).toLocaleString()} px`)&&<InfoRow label="Physical Screen Size"value={`${Math.round(h.width*p).toLocaleString()} \xD7 ${Math.round(h.height*p).toLocaleString()} px`}/>}
212
+ {e("Pixel Density",`@${p}x (${Math.round(p*160).toLocaleString()} dpi)`)&&<InfoRow label="Pixel Ratio (DPI Scale)"value={`@${p}x (${Math.round(p*160).toLocaleString()} dpi)`}badge={{text:`@${p}x`,color:AppColors_1.AppColors.purple,bg:`${AppColors_1.AppColors.purple}18`}}/>}
213
+ {e("Font Scale",`${M}x`)&&<InfoRow label="User Font Scale"value={`${M}x (${M===1?"Default":M>1?"Enlarged":"Compact"})`}/>}
214
+ {e("Form Factor",T?"Tablet":"Smartphone")&&<InfoRow label="Device Form Factor"value={T?"Tablet":"Smartphone"}badge={{text:T?"TABLET":"PHONE",color:T?AppColors_1.AppColors.blue500:AppColors_1.AppColors.purple,bg:T?`${AppColors_1.AppColors.blue500}18`:`${AppColors_1.AppColors.purple}18`}}/>}
179
215
  {e("Orientation",$?"Landscape":"Portrait")&&<InfoRow label="Screen Orientation"value={$?"Landscape":"Portrait"}/>}
180
216
  {e("Status Bar Height",`${B} pt`)&&<InfoRow label="Status Bar Inset"value={`${B} pt`}isLast/>}
181
217
  </react_native_1.View>}
182
218
 
183
219
 
184
- {(a==="runtime"||r.length>0)&&H&&<react_native_1.View style={styles.sectionCard}>
220
+ {(a==="runtime"||o.length>0)&&H&&<react_native_1.View style={styles.sectionCard}>
185
221
  <react_native_1.Text style={styles.sectionTitle}>RUNTIME & APPLICATION</react_native_1.Text>
186
222
  {e("App Name",t.runtime.appName)&&<InfoRow label="Application Name"value={t.runtime.appName}/>}
187
223
  {e("Bundle ID",t.identifiers.bundleId)&&<InfoRow label="Bundle Identifier / Package"value={t.identifiers.bundleId}/>}
188
224
  {e("App Version",`v${t.runtime.appVersion} (${t.runtime.appBuild})`)&&<InfoRow label="Application Version"value={`v${t.runtime.appVersion} (${t.runtime.appBuild})`}/>}
189
225
  {e("React Native",`v${V}`)&&<InfoRow label="React Native Framework"value={`v${V}`}badge={{text:"RN",color:AppColors_1.AppColors.sky500,bg:`${AppColors_1.AppColors.sky500}18`}}/>}
190
226
  {e("In-App Inspector Version",`v${constants_1.LIB_VERSION}`)&&<InfoRow label="In-App Inspector Library"value={`v${constants_1.LIB_VERSION}`}badge={{text:"LATEST",color:AppColors_1.AppColors.purple,bg:`${AppColors_1.AppColors.purple}18`}}/>}
191
- {e("Hermes Engine",g?"Enabled (AOT Bytecode)":"Disabled (JSC)")&&<InfoRow label="Hermes JavaScript Engine"value={g?"Enabled (AOT Bytecode)":"Disabled (JSC)"}badge={{text:g?"HERMES":"JSC",color:g?AppColors_1.AppColors.purple:AppColors_1.AppColors.grayText,bg:g?`${AppColors_1.AppColors.purple}18`:`${AppColors_1.AppColors.grayText}18`}}/>}
192
- {e("New Architecture",w?"Enabled":"Legacy Bridge")&&<InfoRow label="Bridgeless TurboModules (New Arch)"value={w?"Enabled":"Legacy Bridge"}badge={{text:w?"NEW ARCH":"LEGACY",color:w?AppColors_1.AppColors.emerald500:AppColors_1.AppColors.blue500,bg:w?`${AppColors_1.AppColors.emerald500}18`:`${AppColors_1.AppColors.blue500}18`}}/>}
227
+ {e("Hermes Engine",m?"Enabled (AOT Bytecode)":"Disabled (JSC)")&&<InfoRow label="Hermes JavaScript Engine"value={m?"Enabled (AOT Bytecode)":"Disabled (JSC)"}badge={{text:m?"HERMES":"JSC",color:m?AppColors_1.AppColors.purple:AppColors_1.AppColors.grayText,bg:m?`${AppColors_1.AppColors.purple}18`:`${AppColors_1.AppColors.grayText}18`}}/>}
228
+ {e("New Architecture",x?"Enabled":"Legacy Bridge")&&<InfoRow label="Bridgeless TurboModules (New Arch)"value={x?"Enabled":"Legacy Bridge"}badge={{text:x?"NEW ARCH":"LEGACY",color:x?AppColors_1.AppColors.emerald500:AppColors_1.AppColors.blue500,bg:x?`${AppColors_1.AppColors.emerald500}18`:`${AppColors_1.AppColors.blue500}18`}}/>}
193
229
  {e("Build Type",__DEV__?"Debug (__DEV__ = true)":"Release / Production")&&<InfoRow label="Build Configuration"value={__DEV__?"Debug (__DEV__ = true)":"Release / Production"}badge={{text:__DEV__?"DEBUG":"RELEASE",color:__DEV__?AppColors_1.AppColors.warningIconGold:AppColors_1.AppColors.emerald500,bg:__DEV__?`${AppColors_1.AppColors.warningIconGold}18`:`${AppColors_1.AppColors.emerald500}18`}}/>}
194
230
  {e("Timezone",t.runtime.timezone)&&<InfoRow label="System Timezone"value={t.runtime.timezone}/>}
195
231
  {e("Locale",t.runtime.locale)&&<InfoRow label="System Language & Locale"value={t.runtime.locale}/>}
196
- {e("Session Uptime",S)&&<InfoRow label="Inspector Session Uptime"value={S}isLast/>}
232
+ {e("Session Uptime",_)&&<InfoRow label="Inspector Session Uptime"value={_}isLast/>}
197
233
  </react_native_1.View>}
198
234
 
199
235
 
200
- {(a==="security"||r.length>0)&&W&&<react_native_1.View style={styles.sectionCard}>
236
+ {(a==="security"||o.length>0)&&W&&<react_native_1.View style={styles.sectionCard}>
201
237
  <react_native_1.Text style={styles.sectionTitle}>DEVICE IDENTIFIERS & SECURITY</react_native_1.Text>
202
- {e("Pseudo-UDID",y)&&<InfoRow label="Deterministic Pseudo-UDID"value={y}subtext="Stable hardware signature hash for testing & diagnostics"badge={{text:"PERSISTENT",color:AppColors_1.AppColors.purple,bg:`${AppColors_1.AppColors.purple}18`}}/>}
238
+ {e("Pseudo-UDID",b)&&<InfoRow label="Deterministic Pseudo-UDID"value={b}subtext="Stable hardware signature hash for testing & diagnostics"badge={{text:"PERSISTENT",color:AppColors_1.AppColors.purple,bg:`${AppColors_1.AppColors.purple}18`}}/>}
203
239
  {e("Bundle ID",t.identifiers.bundleId)&&<InfoRow label="Application Bundle ID"value={t.identifiers.bundleId}/>}
204
240
  {e("Root / Jailbreak","Clean (Standard Sandbox)")&&<InfoRow label="Root / Jailbreak Heuristic"value="Clean (Standard Sandbox)"badge={{text:"SECURE",color:AppColors_1.AppColors.emerald500,bg:`${AppColors_1.AppColors.emerald500}18`}}/>}
205
241
  {e("Simulator / Emulator",react_native_1.Platform.constants?.Model?.includes?.("sdk")||react_native_1.Platform.constants?.Model?.includes?.("Emulator")||react_native_1.Platform.constants?.Model?.includes?.("Simulator")?"Virtual Simulator":"Physical Device")&&<InfoRow label="Emulator / Physical Device"value={react_native_1.Platform.constants?.Model?.includes?.("sdk")||react_native_1.Platform.constants?.Model?.includes?.("Emulator")||react_native_1.Platform.constants?.Model?.includes?.("Simulator")?"Virtual Simulator":"Physical Device"}/>}
@@ -207,17 +243,17 @@
207
243
  </react_native_1.View>}
208
244
 
209
245
 
210
- {r.trim().length>0&&!Z&&<react_native_1.View style={styles.emptySearchCard}>
246
+ {o.trim().length>0&&!Z&&<react_native_1.View style={styles.emptySearchCard}>
211
247
  <NetworkIcons_1.SearchIcon size={26}color={AppColors_1.AppColors.grayTextWeak}/>
212
248
  <react_native_1.Text style={styles.emptySearchTitle}>No matching device specifications</react_native_1.Text>
213
249
  <react_native_1.Text style={styles.emptySearchSubtitle}>
214
- No properties matched &ldquo;{r}&rdquo;
250
+ No properties matched &ldquo;{o}&rdquo;
215
251
  </react_native_1.Text>
216
- <TouchableScale_1.default onPress={()=>n("")}style={styles.clearSearchBtn}>
252
+ <TouchableScale_1.default onPress={()=>s("")}style={styles.clearSearchBtn}>
217
253
  <react_native_1.Text style={styles.clearSearchBtnText}>Clear Search</react_native_1.Text>
218
254
  </TouchableScale_1.default>
219
255
  </react_native_1.View>}
220
256
 
221
257
  <react_native_1.View style={{height:48}}/>
222
258
  </react_native_1.ScrollView>
223
- </react_native_1.View>});const styles=react_native_1.StyleSheet.create({container:{flex:1,backgroundColor:AppColors_1.AppColors.grayBackground},subTabsWrapper:{backgroundColor:AppColors_1.AppColors.primaryLight,borderBottomWidth:1,borderBottomColor:AppColors_1.AppColors.dividerColor,paddingVertical:8},subTabsContainer:{paddingHorizontal:12,flexDirection:"row",alignItems:"center",gap:6},subTabPill:{flexDirection:"row",alignItems:"center",gap:5,paddingHorizontal:10,paddingVertical:5.5,borderRadius:8,backgroundColor:AppColors_1.AppColors.grayBackground,borderWidth:1,borderColor:AppColors_1.AppColors.grayBorderSecondary},subTabPillActive:{backgroundColor:AppColors_1.AppColors.purple,borderColor:AppColors_1.AppColors.purple},subTabPillText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:11,color:AppColors_1.AppColors.grayText},subTabPillTextActive:{color:AppColors_1.AppColors.white},actionBar:{flexDirection:"row",alignItems:"center",paddingHorizontal:12,paddingVertical:8,backgroundColor:AppColors_1.AppColors.primaryLight,borderBottomWidth:1,borderBottomColor:AppColors_1.AppColors.dividerColor,gap:8},searchBar:{flex:1,flexDirection:"row",alignItems:"center",backgroundColor:AppColors_1.AppColors.grayBackground,borderRadius:8,paddingHorizontal:9,paddingVertical:react_native_1.Platform.OS==="ios"?6:2,borderWidth:1,borderColor:AppColors_1.AppColors.grayBorderSecondary,gap:6},searchInput:{flex:1,fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:12,color:AppColors_1.AppColors.primaryBlack,padding:0},exportButton:{flexDirection:"row",alignItems:"center",gap:4,paddingHorizontal:9,paddingVertical:6,borderRadius:8,backgroundColor:`${AppColors_1.AppColors.purple}14`,borderWidth:1,borderColor:`${AppColors_1.AppColors.purple}33`},exportButtonText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:11,color:AppColors_1.AppColors.purple},scrollArea:{flex:1},scrollContent:{padding:12,gap:12,paddingBottom:100},heroCard:{backgroundColor:AppColors_1.AppColors.primaryLight,borderRadius:14,borderWidth:1,borderColor:AppColors_1.AppColors.grayBorderSecondary,padding:14,shadowColor:AppColors_1.AppColors.black,shadowOpacity:.04,shadowRadius:4,shadowOffset:{width:0,height:2},elevation:1,gap:12},heroHeader:{flexDirection:"row",alignItems:"center",gap:10},heroIconWrap:{width:38,height:38,borderRadius:10,backgroundColor:AppColors_1.AppColors.purple,alignItems:"center",justifyContent:"center",shadowColor:AppColors_1.AppColors.purple,shadowOpacity:.25,shadowRadius:4,shadowOffset:{width:0,height:2},elevation:2},heroTitle:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:15,color:AppColors_1.AppColors.primaryBlack,letterSpacing:-.2},heroSubtitle:{fontFamily:AppFonts_1.AppFonts.interRegular,fontSize:11.5,color:AppColors_1.AppColors.grayText,marginTop:1},heroBadge:{flexDirection:"row",alignItems:"center",gap:4,backgroundColor:`${AppColors_1.AppColors.emerald500}18`,paddingHorizontal:7,paddingVertical:3,borderRadius:6},pulseDot:{width:6,height:6,borderRadius:3,backgroundColor:AppColors_1.AppColors.emerald500},heroBadgeText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:9.5,color:AppColors_1.AppColors.emerald500},heroMetricsStrip:{flexDirection:"row",alignItems:"center",backgroundColor:AppColors_1.AppColors.grayBackground,borderRadius:10,paddingVertical:8,paddingHorizontal:10},heroMetricItem:{flex:1,alignItems:"center",paddingHorizontal:2,minWidth:0},heroMetricLabel:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:8.5,color:AppColors_1.AppColors.grayTextWeak,letterSpacing:.4},heroMetricValue:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:11,color:AppColors_1.AppColors.primaryBlack,marginTop:2},heroMetricDivider:{width:1,height:20,backgroundColor:AppColors_1.AppColors.dividerColor},sectionCard:{backgroundColor:AppColors_1.AppColors.primaryLight,borderRadius:14,borderWidth:1,borderColor:AppColors_1.AppColors.grayBorderSecondary,padding:14,shadowColor:AppColors_1.AppColors.black,shadowOpacity:.03,shadowRadius:3,shadowOffset:{width:0,height:1},elevation:1},sectionTitle:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:10.5,color:AppColors_1.AppColors.grayTextWeak,letterSpacing:.8,marginBottom:8,textTransform:"uppercase"},infoRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingVertical:9,borderBottomWidth:1,borderBottomColor:AppColors_1.AppColors.dividerColor},infoLabel:{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:12.5,color:AppColors_1.AppColors.primaryBlack},infoSubtext:{fontFamily:AppFonts_1.AppFonts.interRegular,fontSize:10,color:AppColors_1.AppColors.grayTextWeak,marginTop:1},infoBadge:{paddingHorizontal:5,paddingVertical:1,borderRadius:4,borderWidth:1},infoBadgeText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:8.5},infoValue:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:12,color:AppColors_1.AppColors.primaryBlack,flexShrink:1,textAlign:"right"},rowCopyBtn:{padding:4,borderRadius:4,backgroundColor:AppColors_1.AppColors.grayBackground},emptySearchCard:{backgroundColor:AppColors_1.AppColors.primaryLight,borderRadius:14,borderWidth:1,borderColor:AppColors_1.AppColors.grayBorderSecondary,padding:24,alignItems:"center",justifyContent:"center",gap:8,marginTop:8},emptySearchTitle:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:13.5,color:AppColors_1.AppColors.primaryBlack,textAlign:"center"},emptySearchSubtitle:{fontFamily:AppFonts_1.AppFonts.interRegular,fontSize:11.5,color:AppColors_1.AppColors.grayTextWeak,textAlign:"center"},clearSearchBtn:{marginTop:6,paddingHorizontal:14,paddingVertical:6.5,borderRadius:8,backgroundColor:AppColors_1.AppColors.purple},clearSearchBtnText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:11,color:AppColors_1.AppColors.white}});exports.default=exports.DeviceInfoTab;
259
+ </react_native_1.View>});const styles=react_native_1.StyleSheet.create({container:{flex:1,backgroundColor:AppColors_1.AppColors.grayBackground},subTabsWrapper:{backgroundColor:AppColors_1.AppColors.primaryLight,borderBottomWidth:1,borderBottomColor:AppColors_1.AppColors.dividerColor,paddingVertical:6},subTabsContainer:{paddingHorizontal:12,flexDirection:"row",alignItems:"center",gap:6},subTabPill:{flexDirection:"row",alignItems:"center",gap:5,paddingHorizontal:9,paddingVertical:4.5,borderRadius:8,borderWidth:1},subTabPillText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:10.5},featuredUuidCard:{backgroundColor:AppColors_1.AppColors.primaryLight,borderRadius:14,borderWidth:1.5,borderColor:`${AppColors_1.AppColors.brandPurple}40`,padding:12,gap:10,shadowColor:AppColors_1.AppColors.brandPurple,shadowOpacity:.08,shadowRadius:6,shadowOffset:{width:0,height:2},elevation:2},featuredUuidHeader:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",gap:8},featuredUuidTitleRow:{flexDirection:"row",alignItems:"center",gap:8,flex:1,minWidth:0},featuredUuidIconWrap:{width:28,height:28,borderRadius:7,backgroundColor:AppColors_1.AppColors.brandPurple,alignItems:"center",justifyContent:"center"},featuredUuidLabel:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:11,color:AppColors_1.AppColors.primaryBlack,letterSpacing:.3},featuredUuidSubtext:{fontFamily:AppFonts_1.AppFonts.interRegular,fontSize:9.5,color:AppColors_1.AppColors.grayTextWeak,marginTop:.5},featuredBadge:{backgroundColor:`${AppColors_1.AppColors.brandPurple}18`,paddingHorizontal:5,paddingVertical:1.5,borderRadius:4,borderWidth:1,borderColor:`${AppColors_1.AppColors.brandPurple}30`},featuredBadgeText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:8,color:AppColors_1.AppColors.brandPurple,letterSpacing:.4},featuredCopyBtn:{flexDirection:"row",alignItems:"center",gap:4,backgroundColor:AppColors_1.AppColors.brandPurple,paddingHorizontal:10,paddingVertical:5.5,borderRadius:7,shadowColor:AppColors_1.AppColors.brandPurple,shadowOpacity:.25,shadowRadius:3,shadowOffset:{width:0,height:1},elevation:1},featuredCopyBtnText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:10.5,color:AppColors_1.AppColors.white},featuredUuidValueBox:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",backgroundColor:`${AppColors_1.AppColors.brandPurple}0C`,borderRadius:8,borderWidth:1,borderColor:`${AppColors_1.AppColors.brandPurple}28`,paddingHorizontal:10,paddingVertical:7,gap:8},featuredUuidValueText:{flex:1,fontFamily:react_native_1.Platform.select({ios:"Menlo",android:"monospace",default:"monospace"}),fontSize:11.5,color:AppColors_1.AppColors.brandPurple,letterSpacing:.5},actionBar:{flexDirection:"row",alignItems:"center",paddingHorizontal:12,paddingVertical:8,backgroundColor:AppColors_1.AppColors.primaryLight,borderBottomWidth:1,borderBottomColor:AppColors_1.AppColors.dividerColor,gap:8},searchBar:{flex:1,flexDirection:"row",alignItems:"center",backgroundColor:AppColors_1.AppColors.grayBackground,borderRadius:8,paddingHorizontal:9,paddingVertical:react_native_1.Platform.OS==="ios"?6:2,borderWidth:1,borderColor:AppColors_1.AppColors.grayBorderSecondary,gap:6},searchInput:{flex:1,fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:12,color:AppColors_1.AppColors.primaryBlack,padding:0},exportButton:{flexDirection:"row",alignItems:"center",gap:4,paddingHorizontal:9,paddingVertical:6,borderRadius:8,backgroundColor:`${AppColors_1.AppColors.purple}14`,borderWidth:1,borderColor:`${AppColors_1.AppColors.purple}33`},exportButtonText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:11,color:AppColors_1.AppColors.purple},scrollArea:{flex:1},scrollContent:{padding:12,gap:12,paddingBottom:100},heroCard:{backgroundColor:AppColors_1.AppColors.primaryLight,borderRadius:14,borderWidth:1,borderColor:AppColors_1.AppColors.grayBorderSecondary,padding:14,shadowColor:AppColors_1.AppColors.black,shadowOpacity:.04,shadowRadius:4,shadowOffset:{width:0,height:2},elevation:1,gap:12},heroHeader:{flexDirection:"row",alignItems:"center",gap:10},heroIconWrap:{width:38,height:38,borderRadius:10,backgroundColor:AppColors_1.AppColors.purple,alignItems:"center",justifyContent:"center",shadowColor:AppColors_1.AppColors.purple,shadowOpacity:.25,shadowRadius:4,shadowOffset:{width:0,height:2},elevation:2},heroTitle:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:15,color:AppColors_1.AppColors.primaryBlack,letterSpacing:-.2},heroSubtitle:{fontFamily:AppFonts_1.AppFonts.interRegular,fontSize:11.5,color:AppColors_1.AppColors.grayText,marginTop:1},heroBadge:{flexDirection:"row",alignItems:"center",gap:4,backgroundColor:`${AppColors_1.AppColors.emerald500}18`,paddingHorizontal:7,paddingVertical:3,borderRadius:6},pulseDot:{width:6,height:6,borderRadius:3,backgroundColor:AppColors_1.AppColors.emerald500},heroBadgeText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:9.5,color:AppColors_1.AppColors.emerald500},heroMetricsStrip:{flexDirection:"row",alignItems:"center",backgroundColor:AppColors_1.AppColors.grayBackground,borderRadius:10,paddingVertical:8,paddingHorizontal:10},heroMetricItem:{flex:1,alignItems:"center",paddingHorizontal:2,minWidth:0},heroMetricLabel:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:8.5,color:AppColors_1.AppColors.grayTextWeak,letterSpacing:.4},heroMetricValue:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:11,color:AppColors_1.AppColors.primaryBlack,marginTop:2},heroMetricDivider:{width:1,height:20,backgroundColor:AppColors_1.AppColors.dividerColor},sectionCard:{backgroundColor:AppColors_1.AppColors.primaryLight,borderRadius:14,borderWidth:1,borderColor:AppColors_1.AppColors.grayBorderSecondary,padding:14,shadowColor:AppColors_1.AppColors.black,shadowOpacity:.03,shadowRadius:3,shadowOffset:{width:0,height:1},elevation:1},sectionTitle:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:10.5,color:AppColors_1.AppColors.grayTextWeak,letterSpacing:.8,marginBottom:8,textTransform:"uppercase"},infoRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingVertical:9,borderBottomWidth:1,borderBottomColor:AppColors_1.AppColors.dividerColor},infoLabel:{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:12.5,color:AppColors_1.AppColors.primaryBlack},infoSubtext:{fontFamily:AppFonts_1.AppFonts.interRegular,fontSize:10,color:AppColors_1.AppColors.grayTextWeak,marginTop:1},infoBadge:{paddingHorizontal:5,paddingVertical:1,borderRadius:4,borderWidth:1},infoBadgeText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:8.5},infoValue:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:12,color:AppColors_1.AppColors.primaryBlack,flexShrink:1,textAlign:"right"},rowCopyBtn:{padding:4,borderRadius:4,backgroundColor:AppColors_1.AppColors.grayBackground},emptySearchCard:{backgroundColor:AppColors_1.AppColors.primaryLight,borderRadius:14,borderWidth:1,borderColor:AppColors_1.AppColors.grayBorderSecondary,padding:24,alignItems:"center",justifyContent:"center",gap:8,marginTop:8},emptySearchTitle:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:13.5,color:AppColors_1.AppColors.primaryBlack,textAlign:"center"},emptySearchSubtitle:{fontFamily:AppFonts_1.AppFonts.interRegular,fontSize:11.5,color:AppColors_1.AppColors.grayTextWeak,textAlign:"center"},clearSearchBtn:{marginTop:6,paddingHorizontal:14,paddingVertical:6.5,borderRadius:8,backgroundColor:AppColors_1.AppColors.purple},clearSearchBtnText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:11,color:AppColors_1.AppColors.white}});exports.default=exports.DeviceInfoTab;
@@ -1,12 +1,12 @@
1
- "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(t,r,a,n){n===void 0&&(n=a);var o=Object.getOwnPropertyDescriptor(r,a);(!o||("get"in o?!r.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return r[a]}}),Object.defineProperty(t,n,o)}):(function(t,r,a,n){n===void 0&&(n=a),t[n]=r[a]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(t,r){Object.defineProperty(t,"default",{enumerable:!0,value:r})}):function(t,r){t.default=r}),__importStar=this&&this.__importStar||(function(){var t=function(r){return t=Object.getOwnPropertyNames||function(a){var n=[];for(var o in a)Object.prototype.hasOwnProperty.call(a,o)&&(n[n.length]=o);return n},t(r)};return function(r){if(r&&r.__esModule)return r;var a={};if(r!=null)for(var n=t(r),o=0;o<n.length;o++)n[o]!=="default"&&__createBinding(a,r,n[o]);return __setModuleDefault(a,r),a}})(),__importDefault=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0});const react_1=__importStar(require("react")),react_native_1=require("react-native"),react_native_linear_gradient_1=__importDefault(require("react-native-linear-gradient")),InspectorContext_1=require("./InspectorContext"),TouchableScale_1=__importDefault(require("../TouchableScale")),AppHeaderLogo_1=__importDefault(require("../AppHeaderLogo")),BrandCircleIcon_1=__importDefault(require("../BrandCircleIcon")),NetworkIcons_1=require("../NetworkIcons"),capture_1=require("../../capture"),NativeInspector_1=require("../../native/NativeInspector"),toast_1=require("../../helpers/toast"),helpers_1=require("../../helpers"),constants_1=require("../../constants"),AppColors_1=require("../../styles/AppColors"),AppFonts_1=require("../../styles/AppFonts"),styles_1=__importDefault(require("../../styles")),i18n_1=require("../../i18n"),MediaPreviewModal_1=require("./MediaPreviewModal"),FabLauncher=()=>{const{setVisible:t,isMinimized:r,setIsMinimized:a,appIcon:n,fabPan:o,fabPanResponder:v,fabDraggedRef:C,pulseAnim:S,fabShineAnim:y,unreadPulseAnim:x,logs:R,analyticsEvents:A,refreshMediaCount:u}=(0,InspectorContext_1.useInspector)(),{width:T}=(0,react_native_1.useWindowDimensions)(),{t:s}=(0,i18n_1.useTranslation)(),[I]=(0,react_1.useState)(()=>(0,helpers_1.getAppVersionAndBuild)().formatted),[c,g]=(0,react_1.useState)(!1),[V,b]=(0,react_1.useState)(0),p=(0,react_1.useRef)(null),[_,h]=(0,react_1.useState)(null),l=(0,react_1.useRef)(new react_native_1.Animated.ValueXY({x:0,y:0})).current,m=(0,react_1.useRef)({x:0,y:0});(0,react_1.useEffect)(()=>{const e=l.x.addListener(f=>m.current.x=f.value),i=l.y.addListener(f=>m.current.y=f.value);return()=>{l.x.removeListener(e),l.y.removeListener(i)}},[l]);const d=(0,react_1.useRef)(!1),P=(0,react_1.useRef)(react_native_1.PanResponder.create({onStartShouldSetPanResponder:()=>!1,onMoveShouldSetPanResponder:(e,i)=>Math.abs(i.dx)>4||Math.abs(i.dy)>4,onPanResponderGrant:()=>{d.current=!0,l.setOffset({x:m.current.x,y:m.current.y}),l.setValue({x:0,y:0})},onPanResponderMove:react_native_1.Animated.event([null,{dx:l.x,dy:l.y}],{useNativeDriver:!1}),onPanResponderRelease:()=>{l.flattenOffset(),setTimeout(()=>{d.current=!1},50)},onPanResponderTerminate:()=>{l.flattenOffset(),d.current=!1}})).current;(0,react_1.useEffect)(()=>{capture_1.ScreenCapture.isRecording().then(e=>{g(!!e)}).catch(()=>{})},[]),(0,react_1.useEffect)(()=>(c?(b(0),p.current=setInterval(()=>{b(e=>e+1)},1e3)):(p.current&&(clearInterval(p.current),p.current=null),b(0)),()=>{p.current&&clearInterval(p.current)}),[c]);const M=(0,react_1.useCallback)(async()=>{if(!d.current)try{(0,NativeInspector_1.triggerNativeHaptic)("light");const e=await capture_1.ScreenCapture.takeScreenshot({format:"png",quality:.9,hideInspector:!0});if(e){(0,NativeInspector_1.triggerNativeHaptic)("success");const i={id:`screenshot_${e.timestamp}.png`,type:"image",format:e.format,uri:e.uri,filename:e.uri.split("/").pop()||`screenshot_${e.timestamp}.png`,sizeBytes:e.sizeBytes,timestamp:e.timestamp,width:e.width,height:e.height};h(i),u?.().catch(()=>{}),(0,toast_1.showToast)(s("header.screenshotCaptured","Screenshot captured"))}else(0,toast_1.showToast)(s("header.screenshotFailed","Failed to capture screenshot"))}catch{(0,toast_1.showToast)(s("header.screenshotError","Error capturing screenshot"))}},[u,s]),B=(0,react_1.useCallback)(async()=>{if(!d.current)try{if(c){(0,NativeInspector_1.triggerNativeHaptic)("medium");const e=await capture_1.ScreenCapture.stopRecording();if(g(!1),e){(0,NativeInspector_1.triggerNativeHaptic)("success");const i={id:`video_${e.timestamp}.${e.format}`,type:e.format==="gif"?"gif":"video",format:e.format,uri:e.uri,filename:e.uri.split("/").pop()||`video_${e.timestamp}.${e.format}`,sizeBytes:e.sizeBytes,timestamp:e.timestamp,durationMs:e.durationMs,width:e.width,height:e.height,hasAudio:e.hasAudio};h(i),u?.().catch(()=>{}),(0,toast_1.showToast)(s("header.recordingSaved",{duration:(e.durationMs/1e3).toFixed(1),defaultValue:`Recording saved (${(e.durationMs/1e3).toFixed(1)}s)`}))}}else(0,NativeInspector_1.triggerNativeHaptic)("medium"),await capture_1.ScreenCapture.startRecording({fps:24,audioSource:"none"})?(g(!0),(0,toast_1.showToast)(s("header.recordingStarted","Recording started"))):(0,toast_1.showToast)(s("header.recordingStartFailed","Failed to start recording"))}catch{(0,toast_1.showToast)(s("header.recordingError","Error during screen recording")),g(!1)}},[c,u,s]),w=(0,react_1.useCallback)(()=>{d.current||((0,NativeInspector_1.triggerNativeHaptic)("light"),a?.(!1),t(!0))},[a,t]),z=(0,react_1.useCallback)(()=>{d.current||((0,NativeInspector_1.triggerNativeHaptic)("light"),a?.(!1),t(!1))},[a,t]),O=e=>{const i=Math.floor(e/60),f=e%60;return`${i}:${f<10?"0":""}${f}`};return<>
1
+ "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(t,r,a,n){n===void 0&&(n=a);var o=Object.getOwnPropertyDescriptor(r,a);(!o||("get"in o?!r.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return r[a]}}),Object.defineProperty(t,n,o)}):(function(t,r,a,n){n===void 0&&(n=a),t[n]=r[a]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(t,r){Object.defineProperty(t,"default",{enumerable:!0,value:r})}):function(t,r){t.default=r}),__importStar=this&&this.__importStar||(function(){var t=function(r){return t=Object.getOwnPropertyNames||function(a){var n=[];for(var o in a)Object.prototype.hasOwnProperty.call(a,o)&&(n[n.length]=o);return n},t(r)};return function(r){if(r&&r.__esModule)return r;var a={};if(r!=null)for(var n=t(r),o=0;o<n.length;o++)n[o]!=="default"&&__createBinding(a,r,n[o]);return __setModuleDefault(a,r),a}})(),__importDefault=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0});const react_1=__importStar(require("react")),react_native_1=require("react-native"),react_native_linear_gradient_1=__importDefault(require("react-native-linear-gradient")),InspectorContext_1=require("./InspectorContext"),TouchableScale_1=__importDefault(require("../TouchableScale")),AppHeaderLogo_1=__importDefault(require("../AppHeaderLogo")),BrandCircleIcon_1=__importDefault(require("../BrandCircleIcon")),NetworkIcons_1=require("../NetworkIcons"),capture_1=require("../../capture"),NativeInspector_1=require("../../native/NativeInspector"),toast_1=require("../../helpers/toast"),helpers_1=require("../../helpers"),constants_1=require("../../constants"),AppColors_1=require("../../styles/AppColors"),AppFonts_1=require("../../styles/AppFonts"),styles_1=__importDefault(require("../../styles")),i18n_1=require("../../i18n"),MediaPreviewModal_1=require("./MediaPreviewModal"),FabLauncher=()=>{const{setVisible:t,isMinimized:r,setIsMinimized:a,appIcon:n,fabPan:o,fabPanResponder:v,fabDraggedRef:C,pulseAnim:S,fabShineAnim:y,refreshMediaCount:u}=(0,InspectorContext_1.useInspector)(),{width:x}=(0,react_native_1.useWindowDimensions)(),{t:s}=(0,i18n_1.useTranslation)(),[R]=(0,react_1.useState)(()=>(0,helpers_1.getAppVersionAndBuild)().formatted),[c,g]=(0,react_1.useState)(!1),[A,b]=(0,react_1.useState)(0),p=(0,react_1.useRef)(null),[_,h]=(0,react_1.useState)(null),l=(0,react_1.useRef)(new react_native_1.Animated.ValueXY({x:0,y:0})).current,m=(0,react_1.useRef)({x:0,y:0});(0,react_1.useEffect)(()=>{const e=l.x.addListener(f=>m.current.x=f.value),i=l.y.addListener(f=>m.current.y=f.value);return()=>{l.x.removeListener(e),l.y.removeListener(i)}},[l]);const d=(0,react_1.useRef)(!1),T=(0,react_1.useRef)(react_native_1.PanResponder.create({onStartShouldSetPanResponder:()=>!1,onMoveShouldSetPanResponder:(e,i)=>Math.abs(i.dx)>4||Math.abs(i.dy)>4,onPanResponderGrant:()=>{d.current=!0,l.setOffset({x:m.current.x,y:m.current.y}),l.setValue({x:0,y:0})},onPanResponderMove:react_native_1.Animated.event([null,{dx:l.x,dy:l.y}],{useNativeDriver:!1}),onPanResponderRelease:()=>{l.flattenOffset(),setTimeout(()=>{d.current=!1},50)},onPanResponderTerminate:()=>{l.flattenOffset(),d.current=!1}})).current;(0,react_1.useEffect)(()=>{capture_1.ScreenCapture.isRecording().then(e=>{g(!!e)}).catch(()=>{})},[]),(0,react_1.useEffect)(()=>(c?(b(0),p.current=setInterval(()=>{b(e=>e+1)},1e3)):(p.current&&(clearInterval(p.current),p.current=null),b(0)),()=>{p.current&&clearInterval(p.current)}),[c]);const I=(0,react_1.useCallback)(async()=>{if(!d.current)try{(0,NativeInspector_1.triggerNativeHaptic)("light");const e=await capture_1.ScreenCapture.takeScreenshot({format:"png",quality:.9,hideInspector:!0});if(e){(0,NativeInspector_1.triggerNativeHaptic)("success");const i={id:`screenshot_${e.timestamp}.png`,type:"image",format:e.format,uri:e.uri,filename:e.uri.split("/").pop()||`screenshot_${e.timestamp}.png`,sizeBytes:e.sizeBytes,timestamp:e.timestamp,width:e.width,height:e.height};h(i),u?.().catch(()=>{}),(0,toast_1.showToast)(s("header.screenshotCaptured","Screenshot captured"))}else(0,toast_1.showToast)(s("header.screenshotFailed","Failed to capture screenshot"))}catch{(0,toast_1.showToast)(s("header.screenshotError","Error capturing screenshot"))}},[u,s]),V=(0,react_1.useCallback)(async()=>{if(!d.current)try{if(c){(0,NativeInspector_1.triggerNativeHaptic)("medium");const e=await capture_1.ScreenCapture.stopRecording();if(g(!1),e){(0,NativeInspector_1.triggerNativeHaptic)("success");const i={id:`video_${e.timestamp}.${e.format}`,type:e.format==="gif"?"gif":"video",format:e.format,uri:e.uri,filename:e.uri.split("/").pop()||`video_${e.timestamp}.${e.format}`,sizeBytes:e.sizeBytes,timestamp:e.timestamp,durationMs:e.durationMs,width:e.width,height:e.height,hasAudio:e.hasAudio};h(i),u?.().catch(()=>{}),(0,toast_1.showToast)(s("header.recordingSaved",{duration:(e.durationMs/1e3).toFixed(1),defaultValue:`Recording saved (${(e.durationMs/1e3).toFixed(1)}s)`}))}}else(0,NativeInspector_1.triggerNativeHaptic)("medium"),await capture_1.ScreenCapture.startRecording({fps:24,audioSource:"none"})?(g(!0),(0,toast_1.showToast)(s("header.recordingStarted","Recording started"))):(0,toast_1.showToast)(s("header.recordingStartFailed","Failed to start recording"))}catch{(0,toast_1.showToast)(s("header.recordingError","Error during screen recording")),g(!1)}},[c,u,s]),w=(0,react_1.useCallback)(()=>{d.current||((0,NativeInspector_1.triggerNativeHaptic)("light"),a?.(!1),t(!0))},[a,t]),P=(0,react_1.useCallback)(()=>{d.current||((0,NativeInspector_1.triggerNativeHaptic)("light"),a?.(!1),t(!1))},[a,t]),M=e=>{const i=Math.floor(e/60),f=e%60;return`${i}:${f<10?"0":""}${f}`};return<>
2
2
 
3
- {r?<react_native_1.Animated.View style={[fabStyles.playerContainer,{transform:l.getTranslateTransform()}]}{...P.panHandlers}>
3
+ {r?<react_native_1.Animated.View style={[fabStyles.playerContainer,{transform:l.getTranslateTransform()}]}{...T.panHandlers}>
4
4
 
5
5
  <react_native_linear_gradient_1.default colors={[AppColors_1.AppColors.indigo600,AppColors_1.AppColors.violet600]}start={{x:0,y:0}}end={{x:1,y:1}}style={fabStyles.gradientBg}pointerEvents="none"/>
6
6
 
7
7
 
8
8
  <react_native_1.View pointerEvents="none"style={fabStyles.playerShineClip}>
9
- <react_native_1.Animated.View style={[fabStyles.playerShineStreak,{transform:[{translateX:y.interpolate({inputRange:[0,1],outputRange:[-80,T+80]})},{rotate:"28deg"}]}]}>
9
+ <react_native_1.Animated.View style={[fabStyles.playerShineStreak,{transform:[{translateX:y.interpolate({inputRange:[0,1],outputRange:[-80,x+80]})},{rotate:"28deg"}]}]}>
10
10
  <react_native_linear_gradient_1.default colors={["rgba(255, 255, 255, 0)","rgba(255, 255, 255, 0.18)","rgba(255, 255, 255, 0.70)","rgba(255, 255, 255, 1)","rgba(255, 255, 255, 0.70)","rgba(255, 255, 255, 0.18)","rgba(255, 255, 255, 0)"]}locations={[0,.22,.44,.5,.56,.78,1]}start={{x:0,y:.5}}end={{x:1,y:.5}}style={{flex:1}}/>
11
11
  </react_native_1.Animated.View>
12
12
  </react_native_1.View>
@@ -23,7 +23,7 @@
23
23
  <react_native_1.View style={fabStyles.versionChip}>
24
24
  {react_native_1.Platform.OS==="ios"?<NetworkIcons_1.AppleIcon color={`${AppColors_1.AppColors.white}E6`}size={9}/>:<NetworkIcons_1.AndroidIcon color={`${AppColors_1.AppColors.white}E6`}size={9}/>}
25
25
  <react_native_1.Text style={fabStyles.versionChipText}numberOfLines={1}>
26
- {I}
26
+ {R}
27
27
  </react_native_1.Text>
28
28
  </react_native_1.View>
29
29
 
@@ -41,7 +41,7 @@
41
41
 
42
42
  <react_native_1.View style={fabStyles.actionsRow}>
43
43
 
44
- <TouchableScale_1.default onPress={M}hitSlop={{top:6,bottom:6,left:4,right:4}}style={fabStyles.actionBtn}>
44
+ <TouchableScale_1.default onPress={I}hitSlop={{top:6,bottom:6,left:4,right:4}}style={fabStyles.actionBtn}>
45
45
  <NetworkIcons_1.CameraIcon size={12}color={AppColors_1.AppColors.white}/>
46
46
  <react_native_1.Text style={fabStyles.actionText}>
47
47
  {s("header.photo","Photo")}
@@ -49,10 +49,10 @@
49
49
  </TouchableScale_1.default>
50
50
 
51
51
 
52
- <TouchableScale_1.default onPress={B}hitSlop={{top:6,bottom:6,left:4,right:4}}style={[fabStyles.actionBtn,c&&fabStyles.recordingBtnActive]}>
52
+ <TouchableScale_1.default onPress={V}hitSlop={{top:6,bottom:6,left:4,right:4}}style={[fabStyles.actionBtn,c&&fabStyles.recordingBtnActive]}>
53
53
  {c?<react_native_1.View style={fabStyles.recordingDot}/>:<NetworkIcons_1.VideoCameraIcon size={12}color={AppColors_1.AppColors.white}/>}
54
54
  <react_native_1.Text style={[fabStyles.actionText,c&&{color:AppColors_1.AppColors.red300}]}>
55
- {c?`${s("header.rec","REC")} ${O(V)}`:s("header.record","Record")}
55
+ {c?`${s("header.rec","REC")} ${M(A)}`:s("header.record","Record")}
56
56
  </react_native_1.Text>
57
57
  </TouchableScale_1.default>
58
58
 
@@ -62,7 +62,7 @@
62
62
  </TouchableScale_1.default>
63
63
 
64
64
 
65
- <TouchableScale_1.default onPress={z}hitSlop={{top:6,bottom:6,left:4,right:6}}accessibilityRole="button"accessibilityLabel={s("common.close","Close")}style={fabStyles.actionBtnSquare}>
65
+ <TouchableScale_1.default onPress={P}hitSlop={{top:6,bottom:6,left:4,right:6}}accessibilityRole="button"accessibilityLabel={s("common.close","Close")}style={fabStyles.actionBtnSquare}>
66
66
  <NetworkIcons_1.CloseWhite size={10}color={AppColors_1.AppColors.white}/>
67
67
  </TouchableScale_1.default>
68
68
  </react_native_1.View>
@@ -76,7 +76,6 @@
76
76
  <react_native_linear_gradient_1.default colors={["rgba(255, 255, 255, 0)","rgba(255, 255, 255, 0.25)","rgba(255, 255, 255, 0.95)","rgba(255, 255, 255, 0.25)","rgba(255, 255, 255, 0)"]}locations={[0,.25,.5,.75,1]}start={{x:0,y:.5}}end={{x:1,y:.5}}style={{flex:1}}/>
77
77
  </react_native_1.Animated.View>
78
78
  </react_native_1.View>
79
- {(R.length>0||A.length>0)&&<react_native_1.Animated.View style={[styles_1.default.fabGreenDot,{transform:[{scale:x}]}]}/>}
80
79
  </TouchableScale_1.default>
81
80
  </react_native_1.Animated.View>}
82
81