react-native-inapp-inspector 2.5.11 → 2.5.13

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 (412) hide show
  1. package/README.ar.md +0 -8
  2. package/README.de.md +0 -8
  3. package/README.es.md +0 -8
  4. package/README.fr.md +0 -8
  5. package/README.hi.md +0 -8
  6. package/README.ja.md +0 -8
  7. package/README.ko.md +0 -8
  8. package/README.md +54 -26
  9. package/README.pt-BR.md +0 -8
  10. package/README.ru.md +0 -8
  11. package/README.zh-CN.md +0 -8
  12. package/android/.gradle/9.2.0/fileHashes/fileHashes.bin +0 -0
  13. package/android/.gradle/9.2.0/fileHashes/fileHashes.lock +0 -0
  14. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  15. package/android/.gradle/buildOutputCleanup/cache.properties +2 -2
  16. package/android/src/main/AndroidManifest.xml +11 -0
  17. package/android/src/main/java/com/inappinspector/NetworkInspectorModule.kt +379 -19
  18. package/android/src/main/res/xml/inappinspector_file_paths.xml +7 -0
  19. package/dist/commonjs/components/ConsoleLogCard.js +32 -26
  20. package/dist/commonjs/components/Inspector/AboutModal.js +1 -4
  21. package/dist/commonjs/components/Inspector/AnalyticsFilterModal.js +47 -49
  22. package/dist/commonjs/components/Inspector/BoxModelVisualizer.d.ts +8 -0
  23. package/dist/commonjs/components/Inspector/BoxModelVisualizer.js +76 -0
  24. package/dist/commonjs/components/Inspector/ConsoleExportModal.js +51 -51
  25. package/dist/commonjs/components/Inspector/ConsoleTab.js +19 -14
  26. package/dist/commonjs/components/Inspector/CrashTab.js +17 -17
  27. package/dist/commonjs/components/Inspector/DebuggingTab.js +24 -24
  28. package/dist/commonjs/components/Inspector/DeviceInfoTab.js +2 -2
  29. package/dist/commonjs/components/Inspector/FabLauncher.js +2 -2
  30. package/dist/commonjs/components/Inspector/FloatingCaptureWidget.js +2 -2
  31. package/dist/commonjs/components/Inspector/InspectorHeader.js +15 -15
  32. package/dist/commonjs/components/Inspector/MainScreen.js +9 -6
  33. package/dist/commonjs/components/Inspector/MediaGalleryTab.js +187 -90
  34. package/dist/commonjs/components/Inspector/MediaPreviewModal.d.ts +1 -0
  35. package/dist/commonjs/components/Inspector/MediaPreviewModal.js +222 -222
  36. package/dist/commonjs/components/Inspector/NetworkDetail.js +11 -8
  37. package/dist/commonjs/components/Inspector/NetworkExportModal.d.ts +10 -0
  38. package/dist/commonjs/components/Inspector/NetworkExportModal.js +333 -0
  39. package/dist/commonjs/components/Inspector/NetworkTab.js +48 -42
  40. package/dist/commonjs/components/Inspector/NpmStarPrompt.js +11 -12
  41. package/dist/commonjs/components/Inspector/PerformanceTab.d.ts +2 -0
  42. package/dist/commonjs/components/Inspector/PerformanceTab.js +652 -0
  43. package/dist/commonjs/components/Inspector/ReduxDetail.js +17 -19
  44. package/dist/commonjs/components/Inspector/ReduxTab.js +5 -5
  45. package/dist/commonjs/components/Inspector/SettingsPanel.js +259 -255
  46. package/dist/commonjs/components/Inspector/SocketCard.js +2 -2
  47. package/dist/commonjs/components/Inspector/SupportPage.js +5 -5
  48. package/dist/commonjs/components/Inspector/TabBar.js +17 -16
  49. package/dist/commonjs/components/Inspector/UiA11yAuditPanel.d.ts +7 -0
  50. package/dist/commonjs/components/Inspector/UiA11yAuditPanel.js +97 -0
  51. package/dist/commonjs/components/Inspector/UiInspectorDetail.d.ts +2 -0
  52. package/dist/commonjs/components/Inspector/UiInspectorDetail.js +485 -0
  53. package/dist/commonjs/components/Inspector/UiInspectorOverlay.d.ts +2 -0
  54. package/dist/commonjs/components/Inspector/UiInspectorOverlay.js +199 -0
  55. package/dist/commonjs/components/Inspector/UiInspectorTab.d.ts +2 -0
  56. package/dist/commonjs/components/Inspector/UiInspectorTab.js +117 -0
  57. package/dist/commonjs/components/Inspector/UiLiveStyleTweaker.d.ts +10 -0
  58. package/dist/commonjs/components/Inspector/UiLiveStyleTweaker.js +148 -0
  59. package/dist/commonjs/components/Inspector/index.d.ts +28 -0
  60. package/dist/commonjs/components/Inspector/index.js +1 -0
  61. package/dist/commonjs/components/LogCard.js +15 -10
  62. package/dist/commonjs/components/NetworkIcons.d.ts +6 -0
  63. package/dist/commonjs/components/NetworkIcons.js +35 -3
  64. package/dist/commonjs/constants/index.d.ts +1 -0
  65. package/dist/commonjs/constants/index.js +1 -1
  66. package/dist/commonjs/constants/version.d.ts +1 -1
  67. package/dist/commonjs/constants/version.js +1 -1
  68. package/dist/commonjs/customHooks/crashHandler.d.ts +1 -1
  69. package/dist/commonjs/customHooks/crashHandler.js +6 -6
  70. package/dist/commonjs/customHooks/uiInspectorManager.d.ts +22 -0
  71. package/dist/commonjs/customHooks/uiInspectorManager.js +1 -0
  72. package/dist/commonjs/helpers/index.d.ts +3 -0
  73. package/dist/commonjs/helpers/index.js +6 -6
  74. package/dist/commonjs/helpers/performanceSampler.d.ts +88 -0
  75. package/dist/commonjs/helpers/performanceSampler.js +1 -0
  76. package/dist/commonjs/helpers/remoteConfig.d.ts +0 -2
  77. package/dist/commonjs/helpers/remoteConfig.js +1 -1
  78. package/dist/commonjs/helpers/searchQueryParser.d.ts +1 -0
  79. package/dist/commonjs/helpers/searchQueryParser.js +7 -5
  80. package/dist/commonjs/helpers/shareFormatter.d.ts +16 -0
  81. package/dist/commonjs/helpers/shareFormatter.js +16 -9
  82. package/dist/commonjs/helpers/uiInspectorEngine.d.ts +62 -0
  83. package/dist/commonjs/helpers/uiInspectorEngine.js +19 -0
  84. package/dist/commonjs/i18n/locales/ar.json +1 -1
  85. package/dist/commonjs/i18n/locales/bn.json +1 -1
  86. package/dist/commonjs/i18n/locales/de.json +1 -1
  87. package/dist/commonjs/i18n/locales/en.json +1 -1
  88. package/dist/commonjs/i18n/locales/es.json +1 -1
  89. package/dist/commonjs/i18n/locales/fr.json +1 -1
  90. package/dist/commonjs/i18n/locales/gu.json +1 -1
  91. package/dist/commonjs/i18n/locales/hi.json +1 -1
  92. package/dist/commonjs/i18n/locales/id.json +1 -1
  93. package/dist/commonjs/i18n/locales/it.json +1 -1
  94. package/dist/commonjs/i18n/locales/ja.json +1 -1
  95. package/dist/commonjs/i18n/locales/kn.json +1 -1
  96. package/dist/commonjs/i18n/locales/ko.json +1 -1
  97. package/dist/commonjs/i18n/locales/ml.json +1 -1
  98. package/dist/commonjs/i18n/locales/mr.json +1 -1
  99. package/dist/commonjs/i18n/locales/nl.json +1 -1
  100. package/dist/commonjs/i18n/locales/pa.json +1 -1
  101. package/dist/commonjs/i18n/locales/pl.json +1 -1
  102. package/dist/commonjs/i18n/locales/pt.json +1 -1
  103. package/dist/commonjs/i18n/locales/ru.json +1 -1
  104. package/dist/commonjs/i18n/locales/ta.json +1 -1
  105. package/dist/commonjs/i18n/locales/te.json +1 -1
  106. package/dist/commonjs/i18n/locales/tr.json +1 -1
  107. package/dist/commonjs/i18n/locales/vi.json +1 -1
  108. package/dist/commonjs/i18n/locales/zh.json +1 -1
  109. package/dist/commonjs/index.d.ts +6 -4
  110. package/dist/commonjs/index.js +3 -3
  111. package/dist/commonjs/native/NativeInspector.d.ts +2 -0
  112. package/dist/commonjs/native/NativeInspector.js +1 -1
  113. package/dist/commonjs/native/NativeNetworkInspector.d.ts +2 -0
  114. package/dist/commonjs/styles/index.js +1 -1
  115. package/dist/commonjs/types/editor.d.ts +31 -0
  116. package/dist/commonjs/types/enums.d.ts +1 -0
  117. package/dist/commonjs/types/enums.js +1 -1
  118. package/dist/commonjs/types/interfaces.d.ts +8 -0
  119. package/dist/esm/components/ConsoleLogCard.js +67 -61
  120. package/dist/esm/components/Inspector/AboutModal.js +14 -17
  121. package/dist/esm/components/Inspector/AnalyticsFilterModal.js +73 -75
  122. package/dist/esm/components/Inspector/BoxModelVisualizer.d.ts +8 -0
  123. package/dist/esm/components/Inspector/BoxModelVisualizer.js +76 -0
  124. package/dist/esm/components/Inspector/ConsoleExportModal.js +67 -67
  125. package/dist/esm/components/Inspector/ConsoleTab.js +33 -28
  126. package/dist/esm/components/Inspector/CrashTab.js +58 -58
  127. package/dist/esm/components/Inspector/DebuggingTab.js +89 -89
  128. package/dist/esm/components/Inspector/DeviceInfoTab.js +2 -2
  129. package/dist/esm/components/Inspector/FabLauncher.js +21 -21
  130. package/dist/esm/components/Inspector/FloatingCaptureWidget.js +23 -23
  131. package/dist/esm/components/Inspector/InspectorHeader.js +31 -31
  132. package/dist/esm/components/Inspector/MainScreen.js +61 -58
  133. package/dist/esm/components/Inspector/MediaGalleryTab.js +244 -147
  134. package/dist/esm/components/Inspector/MediaPreviewModal.d.ts +1 -0
  135. package/dist/esm/components/Inspector/MediaPreviewModal.js +468 -468
  136. package/dist/esm/components/Inspector/NetworkDetail.js +62 -59
  137. package/dist/esm/components/Inspector/NetworkExportModal.d.ts +10 -0
  138. package/dist/esm/components/Inspector/NetworkExportModal.js +333 -0
  139. package/dist/esm/components/Inspector/NetworkTab.js +76 -70
  140. package/dist/esm/components/Inspector/NpmStarPrompt.js +32 -33
  141. package/dist/esm/components/Inspector/PerformanceTab.d.ts +2 -0
  142. package/dist/esm/components/Inspector/PerformanceTab.js +652 -0
  143. package/dist/esm/components/Inspector/ReduxDetail.js +54 -56
  144. package/dist/esm/components/Inspector/ReduxTab.js +9 -9
  145. package/dist/esm/components/Inspector/SettingsPanel.js +302 -298
  146. package/dist/esm/components/Inspector/SocketCard.js +13 -13
  147. package/dist/esm/components/Inspector/SupportPage.js +5 -5
  148. package/dist/esm/components/Inspector/TabBar.js +4 -3
  149. package/dist/esm/components/Inspector/UiA11yAuditPanel.d.ts +7 -0
  150. package/dist/esm/components/Inspector/UiA11yAuditPanel.js +97 -0
  151. package/dist/esm/components/Inspector/UiInspectorDetail.d.ts +2 -0
  152. package/dist/esm/components/Inspector/UiInspectorDetail.js +422 -0
  153. package/dist/esm/components/Inspector/UiInspectorOverlay.d.ts +2 -0
  154. package/dist/esm/components/Inspector/UiInspectorOverlay.js +138 -0
  155. package/dist/esm/components/Inspector/UiInspectorTab.d.ts +2 -0
  156. package/dist/esm/components/Inspector/UiInspectorTab.js +117 -0
  157. package/dist/esm/components/Inspector/UiLiveStyleTweaker.d.ts +10 -0
  158. package/dist/esm/components/Inspector/UiLiveStyleTweaker.js +148 -0
  159. package/dist/esm/components/Inspector/index.d.ts +28 -0
  160. package/dist/esm/components/Inspector/index.js +1 -0
  161. package/dist/esm/components/LogCard.js +60 -55
  162. package/dist/esm/components/NetworkIcons.d.ts +6 -0
  163. package/dist/esm/components/NetworkIcons.js +32 -0
  164. package/dist/esm/constants/index.d.ts +1 -0
  165. package/dist/esm/constants/index.js +1 -1
  166. package/dist/esm/constants/version.d.ts +1 -1
  167. package/dist/esm/constants/version.js +1 -1
  168. package/dist/esm/customHooks/crashHandler.d.ts +1 -1
  169. package/dist/esm/customHooks/crashHandler.js +6 -6
  170. package/dist/esm/customHooks/uiInspectorManager.d.ts +22 -0
  171. package/dist/esm/customHooks/uiInspectorManager.js +1 -0
  172. package/dist/esm/helpers/index.d.ts +3 -0
  173. package/dist/esm/helpers/index.js +6 -6
  174. package/dist/esm/helpers/performanceSampler.d.ts +88 -0
  175. package/dist/esm/helpers/performanceSampler.js +1 -0
  176. package/dist/esm/helpers/remoteConfig.d.ts +0 -2
  177. package/dist/esm/helpers/remoteConfig.js +1 -1
  178. package/dist/esm/helpers/searchQueryParser.d.ts +1 -0
  179. package/dist/esm/helpers/searchQueryParser.js +7 -5
  180. package/dist/esm/helpers/shareFormatter.d.ts +16 -0
  181. package/dist/esm/helpers/shareFormatter.js +20 -13
  182. package/dist/esm/helpers/uiInspectorEngine.d.ts +48 -0
  183. package/dist/esm/helpers/uiInspectorEngine.js +19 -0
  184. package/dist/esm/i18n/locales/ar.json +1 -1
  185. package/dist/esm/i18n/locales/bn.json +1 -1
  186. package/dist/esm/i18n/locales/de.json +1 -1
  187. package/dist/esm/i18n/locales/en.json +1 -1
  188. package/dist/esm/i18n/locales/es.json +1 -1
  189. package/dist/esm/i18n/locales/fr.json +1 -1
  190. package/dist/esm/i18n/locales/gu.json +1 -1
  191. package/dist/esm/i18n/locales/hi.json +1 -1
  192. package/dist/esm/i18n/locales/id.json +1 -1
  193. package/dist/esm/i18n/locales/it.json +1 -1
  194. package/dist/esm/i18n/locales/ja.json +1 -1
  195. package/dist/esm/i18n/locales/kn.json +1 -1
  196. package/dist/esm/i18n/locales/ko.json +1 -1
  197. package/dist/esm/i18n/locales/ml.json +1 -1
  198. package/dist/esm/i18n/locales/mr.json +1 -1
  199. package/dist/esm/i18n/locales/nl.json +1 -1
  200. package/dist/esm/i18n/locales/pa.json +1 -1
  201. package/dist/esm/i18n/locales/pl.json +1 -1
  202. package/dist/esm/i18n/locales/pt.json +1 -1
  203. package/dist/esm/i18n/locales/ru.json +1 -1
  204. package/dist/esm/i18n/locales/ta.json +1 -1
  205. package/dist/esm/i18n/locales/te.json +1 -1
  206. package/dist/esm/i18n/locales/tr.json +1 -1
  207. package/dist/esm/i18n/locales/vi.json +1 -1
  208. package/dist/esm/i18n/locales/zh.json +1 -1
  209. package/dist/esm/index.d.ts +6 -4
  210. package/dist/esm/index.js +8 -8
  211. package/dist/esm/native/NativeInspector.d.ts +2 -0
  212. package/dist/esm/native/NativeInspector.js +1 -1
  213. package/dist/esm/native/NativeNetworkInspector.d.ts +2 -0
  214. package/dist/esm/styles/index.js +1 -1
  215. package/dist/esm/types/editor.d.ts +31 -0
  216. package/dist/esm/types/enums.d.ts +1 -0
  217. package/dist/esm/types/enums.js +1 -1
  218. package/dist/esm/types/interfaces.d.ts +8 -0
  219. package/ios/NetworkInspectorModule.mm +314 -16
  220. package/package.json +24 -1
  221. package/src/native/NativeInspector.ts +37 -0
  222. package/src/native/NativeNetworkInspector.ts +2 -0
  223. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/results.bin +0 -1
  224. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/BuildConfig.dex +0 -0
  225. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/InAppInspectorFloatingView$iconView$1.dex +0 -0
  226. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/InAppInspectorFloatingView.dex +0 -0
  227. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NativeNetworkInspectorSpec.dex +0 -0
  228. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorModule$Companion.dex +0 -0
  229. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorModule$activityEventListener$1.dex +0 -0
  230. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorModule$frameCallback$1.dex +0 -0
  231. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorModule$getCapturedMedia$lambda$57$$inlined$sortedByDescending$1.dex +0 -0
  232. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorModule$shakeListener$1.dex +0 -0
  233. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorModule$startVideoRecording$2$1.dex +0 -0
  234. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorModule.dex +0 -0
  235. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorPackage.dex +0 -0
  236. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/desugar_graph.bin +0 -0
  237. package/android/build/.transforms/c93e459e24d856bde563ebb048265732/results.bin +0 -1
  238. package/android/build/.transforms/c93e459e24d856bde563ebb048265732/transformed/classes/classes_dex/classes.dex +0 -0
  239. package/android/build/generated/source/buildConfig/debug/com/inappinspector/BuildConfig.java +0 -10
  240. package/android/build/generated/source/codegen/java/com/inappinspector/NativeNetworkInspectorSpec.java +0 -160
  241. package/android/build/generated/source/codegen/jni/CMakeLists.txt +0 -28
  242. package/android/build/generated/source/codegen/jni/RNInAppInspectorSpec-generated.cpp +0 -212
  243. package/android/build/generated/source/codegen/jni/RNInAppInspectorSpec.h +0 -31
  244. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/ComponentDescriptors.cpp +0 -22
  245. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/ComponentDescriptors.h +0 -24
  246. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/EventEmitters.cpp +0 -16
  247. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/EventEmitters.h +0 -17
  248. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/Props.cpp +0 -19
  249. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/Props.h +0 -18
  250. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/RNInAppInspectorSpecJSI.h +0 -300
  251. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/ShadowNodes.cpp +0 -17
  252. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/ShadowNodes.h +0 -23
  253. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/States.cpp +0 -16
  254. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/States.h +0 -20
  255. package/android/build/generated/source/codegen/schema.json +0 -1
  256. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml +0 -7
  257. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json +0 -18
  258. package/android/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties +0 -6
  259. package/android/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json +0 -1
  260. package/android/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar +0 -0
  261. package/android/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar +0 -0
  262. package/android/build/intermediates/compile_symbol_list/debug/generateDebugRFile/R.txt +0 -0
  263. package/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +0 -1
  264. package/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml +0 -2
  265. package/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +0 -2
  266. package/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +0 -2
  267. package/android/build/intermediates/incremental/packageDebugAssets/merger.xml +0 -2
  268. package/android/build/intermediates/java_res/debug/processDebugJavaRes/out/META-INF/react-native-inapp-inspector_debug.kotlin_module +0 -0
  269. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/inappinspector/BuildConfig.class +0 -0
  270. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/inappinspector/NativeNetworkInspectorSpec.class +0 -0
  271. package/android/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt +0 -2
  272. package/android/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt +0 -7
  273. package/android/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml +0 -7
  274. package/android/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json +0 -1
  275. package/android/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt +0 -1
  276. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/META-INF/react-native-inapp-inspector_debug.kotlin_module +0 -0
  277. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/BuildConfig.class +0 -0
  278. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/InAppInspectorFloatingView$iconView$1.class +0 -0
  279. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/InAppInspectorFloatingView.class +0 -0
  280. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NativeNetworkInspectorSpec.class +0 -0
  281. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorModule$Companion.class +0 -0
  282. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorModule$activityEventListener$1.class +0 -0
  283. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorModule$frameCallback$1.class +0 -0
  284. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorModule$getCapturedMedia$lambda$57$$inlined$sortedByDescending$1.class +0 -0
  285. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorModule$shakeListener$1.class +0 -0
  286. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorModule$startVideoRecording$2$1.class +0 -0
  287. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorModule.class +0 -0
  288. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorPackage.class +0 -0
  289. package/android/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar +0 -0
  290. package/android/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt +0 -1
  291. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab +0 -0
  292. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream +0 -0
  293. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len +0 -0
  294. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len +0 -0
  295. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at +0 -0
  296. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i +0 -0
  297. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i.len +0 -0
  298. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab +0 -0
  299. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream +0 -0
  300. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len +0 -0
  301. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len +0 -0
  302. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at +0 -0
  303. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i +0 -0
  304. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i.len +0 -0
  305. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab +0 -0
  306. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream +0 -0
  307. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len +0 -0
  308. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len +0 -0
  309. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at +0 -0
  310. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i +0 -0
  311. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len +0 -0
  312. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab +0 -0
  313. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream +0 -0
  314. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream.len +0 -0
  315. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.len +0 -0
  316. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.values.at +0 -0
  317. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i +0 -0
  318. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i.len +0 -0
  319. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab +0 -0
  320. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream +0 -0
  321. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len +0 -0
  322. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len +0 -0
  323. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at +0 -0
  324. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i +0 -0
  325. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len +0 -0
  326. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab +0 -0
  327. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream +0 -0
  328. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len +0 -0
  329. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len +0 -0
  330. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at +0 -0
  331. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i +0 -0
  332. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len +0 -0
  333. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab +0 -0
  334. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream +0 -0
  335. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len +0 -0
  336. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len +0 -0
  337. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at +0 -0
  338. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i +0 -0
  339. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len +0 -0
  340. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab +0 -0
  341. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream +0 -0
  342. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len +0 -0
  343. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len +0 -0
  344. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at +0 -0
  345. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i +0 -0
  346. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i.len +0 -0
  347. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab +0 -0
  348. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream +0 -0
  349. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len +0 -0
  350. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len +0 -0
  351. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at +0 -0
  352. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i +0 -0
  353. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i.len +0 -0
  354. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/counters.tab +0 -2
  355. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab +0 -0
  356. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream +0 -0
  357. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len +0 -0
  358. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len +0 -0
  359. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at +0 -0
  360. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i +0 -0
  361. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len +0 -0
  362. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab +0 -0
  363. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream +0 -0
  364. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len +0 -0
  365. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len +0 -0
  366. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at +0 -0
  367. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i +0 -0
  368. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len +0 -0
  369. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab +0 -0
  370. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream +0 -0
  371. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len +0 -0
  372. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.len +0 -0
  373. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at +0 -0
  374. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i +0 -0
  375. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len +0 -0
  376. package/android/build/kotlin/compileDebugKotlin/cacheable/last-build.bin +0 -0
  377. package/android/build/kotlin/compileDebugKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin +0 -0
  378. package/android/build/kotlin/compileDebugKotlin/local-state/build-history.bin +0 -0
  379. package/android/build/outputs/logs/manifest-merger-debug-report.txt +0 -17
  380. package/android/build/reports/problems/problems-report.html +0 -659
  381. package/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
  382. package/android/build/tmp/kotlin-classes/debug/META-INF/react-native-inapp-inspector_debug.kotlin_module +0 -0
  383. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/InAppInspectorFloatingView$iconView$1.class +0 -0
  384. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/InAppInspectorFloatingView.class +0 -0
  385. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorModule$Companion.class +0 -0
  386. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorModule$activityEventListener$1.class +0 -0
  387. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorModule$frameCallback$1.class +0 -0
  388. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorModule$getCapturedMedia$lambda$57$$inlined$sortedByDescending$1.class +0 -0
  389. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorModule$shakeListener$1.class +0 -0
  390. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorModule$startVideoRecording$2$1.class +0 -0
  391. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorModule.class +0 -0
  392. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorPackage.class +0 -0
  393. package/dist/commonjs/a11y.d.ts +0 -2
  394. package/dist/commonjs/a11y.js +0 -1
  395. package/dist/commonjs/components/Inspector/A11yTab.d.ts +0 -2
  396. package/dist/commonjs/components/Inspector/A11yTab.js +0 -268
  397. package/dist/commonjs/components/Inspector/DeveloperSponsorCard.d.ts +0 -9
  398. package/dist/commonjs/components/Inspector/DeveloperSponsorCard.js +0 -52
  399. package/dist/commonjs/customHooks/a11yAdapter.d.ts +0 -11
  400. package/dist/commonjs/customHooks/a11yAdapter.js +0 -1
  401. package/dist/commonjs/helpers/sponsorService.d.ts +0 -20
  402. package/dist/commonjs/helpers/sponsorService.js +0 -1
  403. package/dist/esm/a11y.d.ts +0 -2
  404. package/dist/esm/a11y.js +0 -1
  405. package/dist/esm/components/Inspector/A11yTab.d.ts +0 -2
  406. package/dist/esm/components/Inspector/A11yTab.js +0 -268
  407. package/dist/esm/components/Inspector/DeveloperSponsorCard.d.ts +0 -9
  408. package/dist/esm/components/Inspector/DeveloperSponsorCard.js +0 -52
  409. package/dist/esm/customHooks/a11yAdapter.d.ts +0 -11
  410. package/dist/esm/customHooks/a11yAdapter.js +0 -1
  411. package/dist/esm/helpers/sponsorService.d.ts +0 -20
  412. package/dist/esm/helpers/sponsorService.js +0 -1
@@ -1,50 +1,50 @@
1
- import{useState as M,useEffect as _,useMemo as We,useCallback as ie,useRef as X}from"react";import{View as T,Text as C,ScrollView as Te,StyleSheet as Pe,NativeModules as He,TouchableOpacity as G,ActivityIndicator as Ce,Animated as Z}from"react-native";import{AppColors as e}from"../../styles/AppColors";import{AppFonts as B}from"../../styles/AppFonts";import{useTranslation as $e}from"../../i18n";import Ne from"../QRCodeView";import Se from"../TouchableScale";import{showToast as J}from"../../helpers/toast";import{triggerNativeHaptic as H}from"../../native/NativeInspector";import{InfoCircleIcon as Ee,CheckIcon as Be,BoltIcon as Re,CircleXIcon as Ie,SparkleIcon as Ge,AndroidIcon as Ue,RepeatIcon as _e,WrenchIcon as Ke}from"../NetworkIcons";import Qe,{Path as Xe}from"react-native-svg";const Ze=({color:L=e.purple,size:R=13})=><Qe width={R}height={R}viewBox="0 0 24 24"fill="none">
2
- <Xe d="M4 17l6-6-6-6M12 19h8"stroke={L}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
3
- </Qe>;export const DebuggingTab=()=>{const{t:L}=$e(),R=We(()=>{const k=He.SourceCode?.scriptURL||"";let V="localhost",S=8081;try{if(k.includes("://")){const v=k.split("://")[1].split("/")[0];if(v.includes(":")){const A=v.split(":");V=A[0];const P=parseInt(A[1],10);isNaN(P)||(S=P)}else V=v}}catch{}return{host:V,port:S,scriptURL:k}},[]),[Y,Ve]=M(()=>R.host&&R.host!=="localhost"&&R.host!=="127.0.0.1"&&R.host!=="10.0.2.2"?R.host:"192.168.1.2"),[$,ze]=M(R.port||8083),[De,ee]=M("app-debug.apk"),[q,oe]=M(null),[F,te]=M("assembleRelease"),[W,ve]=M(!0),[I,U]=M({status:"idle",scheme:"assembleRelease",clean:!0,progress:0,currentTask:"",error:null,apkName:null,apkSize:null}),D=X(null),K=X(new Z.Value(0)).current,[Q,Ae]=M(!0),re=X(null);_(()=>{Z.timing(K,{toValue:Math.max(0,Math.min(100,I.progress)),duration:350,useNativeDriver:!1}).start()},[I.progress,K]),_(()=>{I.logs&&I.logs.length>0&&setTimeout(()=>{re.current?.scrollToEnd({animated:!0})},50)},[I.logs]);const E=ie(async()=>{const k=Array.from(new Set([R.host,"10.0.2.2","localhost","127.0.0.1"].filter(Boolean))),V=Array.from(new Set([R.port,8083,8081,8082].filter(Boolean)));for(const S of k)for(const O of V)try{const v=new AbortController,A=setTimeout(()=>v.abort(),1200),P=await fetch(`http://${S}:${O}/__inapp_inspector/apk-info`,{signal:v.signal});if(clearTimeout(A),P.ok){const z=await P.json();z.hostIp&&z.hostIp!=="127.0.0.1"&&z.hostIp!=="localhost"&&z.hostIp!=="10.0.2.2"&&Ve(z.hostIp),z.port&&ze(z.port),z.apkName&&ee(z.apkName),z.apkSize&&oe((z.apkSize/(1024*1024)).toFixed(1));return}}catch{}},[R.host,R.port]);_(()=>{E()},[E]),_(()=>()=>{D.current&&clearInterval(D.current)},[]);const Fe=ie(()=>{D.current&&clearInterval(D.current);const k=R.host||"10.0.2.2";D.current=setInterval(async()=>{try{const V=await fetch(`http://${k}:${$}/__inapp_inspector/build-status`);if(V.ok){const S=await V.json();U(S),S.status==="completed"?(D.current&&clearInterval(D.current),H("success"),J(L("debugging.buildSuccess","APK Build Generated Successfully!")),S.apkSize&&oe((S.apkSize/(1024*1024)).toFixed(1)),S.apkName&&ee(S.apkName),E()):S.status==="failed"&&(D.current&&clearInterval(D.current),H("error"),J(L("debugging.buildFailed",{error:S.error||"Gradle error"})))}}catch{}},1e3)},[R.host,$,E]),Oe=async()=>{H("medium"),U({status:"running",scheme:F,clean:W,progress:5,currentTask:W?"Cleaning build cache...":"Initializing build...",error:null,apkName:null,apkSize:null});const k=Array.from(new Set([R.host,"10.0.2.2","localhost","127.0.0.1"].filter(Boolean))),V=Array.from(new Set([$,8083,8081,8082].filter(Boolean)));let S=!1;for(const O of k)for(const v of V)try{const A=new AbortController,P=setTimeout(()=>A.abort(),2e3),z=await fetch(`http://${O}:${v}/__inapp_inspector/build-apk?scheme=${F}&clean=${W}`,{signal:A.signal});if(clearTimeout(P),z.ok){S=!0,Fe();return}}catch{}S||U(O=>({...O,status:"failed",error:"Cannot reach build server. Ensure npm start or npm run serve-apk is running on host."}))},Me=async()=>{H("warning"),D.current&&clearInterval(D.current);const k=Array.from(new Set([R.host,"10.0.2.2","localhost","127.0.0.1"].filter(Boolean))),V=Array.from(new Set([$,8083,8081,8082].filter(Boolean)));for(const S of k)for(const O of V)try{const v=new AbortController,A=setTimeout(()=>v.abort(),1500);await fetch(`http://${S}:${O}/__inapp_inspector/stop-build`,{signal:v.signal}),clearTimeout(A)}catch{}U(S=>({...S,status:"idle",currentTask:L("debugging.buildCancelled","Build cancelled by user"),logs:[...S.logs||[],`[Build] ${L("debugging.buildCancelled","Build cancelled by user")}.`]})),J(L("debugging.buildCancelled","Build cancelled"))},Le=`http://${Y}:${$}/${De.replace(/^\/+/,"")}`,N=I.status==="running";return<Te style={o.scrollArea}contentContainerStyle={o.scrollContent}showsVerticalScrollIndicator={!1}>
1
+ import{useState as L,useEffect as _,useMemo as We,useCallback as ie,useRef as X}from"react";import{View as T,Text as C,ScrollView as Te,StyleSheet as Pe,NativeModules as He,TouchableOpacity as G,ActivityIndicator as Ce,Animated as Z}from"react-native";import{AppColors as e}from"../../styles/AppColors";import{AppFonts as B}from"../../styles/AppFonts";import{useTranslation as $e}from"../../i18n";import Ne from"../QRCodeView";import Se from"../TouchableScale";import{showToast as J}from"../../helpers/toast";import{triggerNativeHaptic as H}from"../../native/NativeInspector";import{InfoCircleIcon as Ee,CheckIcon as Be,BoltIcon as Re,CircleXIcon as Ie,SparkleIcon as Ge,AndroidIcon as Ue,RepeatIcon as _e,WrenchIcon as Ke}from"../NetworkIcons";import Qe,{Path as Xe}from"react-native-svg";const Ze=({color:k=e.purple,size:I=13})=><Qe width={I}height={I}viewBox="0 0 24 24"fill="none">
2
+ <Xe d="M4 17l6-6-6-6M12 19h8"stroke={k}strokeWidth="2"strokeLinecap="round"strokeLinejoin="round"/>
3
+ </Qe>;export const DebuggingTab=()=>{const{t:k}=$e(),I=We(()=>{const R=He.SourceCode?.scriptURL||"";let z="localhost",S=8081;try{if(R.includes("://")){const A=R.split("://")[1].split("/")[0];if(A.includes(":")){const F=A.split(":");z=F[0];const P=parseInt(F[1],10);isNaN(P)||(S=P)}else z=A}}catch{}return{host:z,port:S,scriptURL:R}},[]),[Y,Ve]=L(()=>I.host&&I.host!=="localhost"&&I.host!=="127.0.0.1"&&I.host!=="10.0.2.2"?I.host:"192.168.1.2"),[$,ze]=L(I.port||8083),[De,ee]=L("app-debug.apk"),[q,te]=L(null),[O,oe]=L("assembleRelease"),[W,ve]=L(!0),[V,U]=L({status:"idle",scheme:"assembleRelease",clean:!0,progress:0,currentTask:"",error:null,apkName:null,apkSize:null}),v=X(null),K=X(new Z.Value(0)).current,[Q,Ae]=L(!0),re=X(null);_(()=>{Z.timing(K,{toValue:Math.max(0,Math.min(100,V.progress)),duration:350,useNativeDriver:!1}).start()},[V.progress,K]),_(()=>{V.logs&&V.logs.length>0&&setTimeout(()=>{re.current?.scrollToEnd({animated:!0})},50)},[V.logs]);const E=ie(async()=>{const R=Array.from(new Set([I.host,"10.0.2.2","localhost","127.0.0.1"].filter(Boolean))),z=Array.from(new Set([I.port,8083,8081,8082].filter(Boolean)));for(const S of R)for(const M of z)try{const A=new AbortController,F=setTimeout(()=>A.abort(),1200),P=await fetch(`http://${S}:${M}/__inapp_inspector/apk-info`,{signal:A.signal});if(clearTimeout(F),P.ok){const D=await P.json();D.hostIp&&D.hostIp!=="127.0.0.1"&&D.hostIp!=="localhost"&&D.hostIp!=="10.0.2.2"&&Ve(D.hostIp),D.port&&ze(D.port),D.apkName&&ee(D.apkName),D.apkSize&&te((D.apkSize/(1024*1024)).toFixed(1));return}}catch{}},[I.host,I.port]);_(()=>{E()},[E]),_(()=>()=>{v.current&&clearInterval(v.current)},[]);const Fe=ie(()=>{v.current&&clearInterval(v.current);const R=I.host||"10.0.2.2";v.current=setInterval(async()=>{try{const z=await fetch(`http://${R}:${$}/__inapp_inspector/build-status`);if(z.ok){const S=await z.json();U(S),S.status==="completed"?(v.current&&clearInterval(v.current),H("success"),J(k("debugging.buildSuccess","APK Build Generated Successfully!")),S.apkSize&&te((S.apkSize/(1024*1024)).toFixed(1)),S.apkName&&ee(S.apkName),E()):S.status==="failed"&&(v.current&&clearInterval(v.current),H("error"),J(k("debugging.buildFailed",{error:S.error||"Gradle error"})))}}catch{}},1e3)},[I.host,$,E]),Oe=async()=>{H("medium"),U({status:"running",scheme:O,clean:W,progress:5,currentTask:W?"Cleaning build cache...":"Initializing build...",error:null,apkName:null,apkSize:null});const R=Array.from(new Set([I.host,"10.0.2.2","localhost","127.0.0.1"].filter(Boolean))),z=Array.from(new Set([$,8083,8081,8082].filter(Boolean)));let S=!1;for(const M of R)for(const A of z)try{const F=new AbortController,P=setTimeout(()=>F.abort(),2e3),D=await fetch(`http://${M}:${A}/__inapp_inspector/build-apk?scheme=${O}&clean=${W}`,{signal:F.signal});if(clearTimeout(P),D.ok){S=!0,Fe();return}}catch{}S||U(M=>({...M,status:"failed",error:"Cannot reach build server. Ensure npm start or npm run serve-apk is running on host."}))},Me=async()=>{H("warning"),v.current&&clearInterval(v.current);const R=Array.from(new Set([I.host,"10.0.2.2","localhost","127.0.0.1"].filter(Boolean))),z=Array.from(new Set([$,8083,8081,8082].filter(Boolean)));for(const S of R)for(const M of z)try{const A=new AbortController,F=setTimeout(()=>A.abort(),1500);await fetch(`http://${S}:${M}/__inapp_inspector/stop-build`,{signal:A.signal}),clearTimeout(F)}catch{}U(S=>({...S,status:"idle",currentTask:k("debugging.buildCancelled","Build cancelled by user"),logs:[...S.logs||[],`[Build] ${k("debugging.buildCancelled","Build cancelled by user")}.`]})),J(k("debugging.buildCancelled","Build cancelled"))},Le=`http://${Y}:${$}/${De.replace(/^\/+/,"")}`,N=V.status==="running";return<Te style={t.scrollArea}contentContainerStyle={t.scrollContent}showsVerticalScrollIndicator={!1}>
4
4
 
5
- <T style={o.heroCard}>
6
- <T style={o.heroHeader}>
7
- <T style={o.heroIconWrap}>
5
+ <T style={t.heroCard}>
6
+ <T style={t.heroHeader}>
7
+ <T style={t.heroIconWrap}>
8
8
  <Ue size={20}color={e.white}/>
9
9
  </T>
10
10
  <T style={{flex:1,minWidth:0}}>
11
- <C style={o.heroTitle}numberOfLines={1}>
12
- Multi-Device APK Installer
11
+ <C style={t.heroTitle}numberOfLines={1}>
12
+ {k("debugging.apkInstallerTitle","Multi-Device APK Installer")}
13
13
  </C>
14
- <C style={o.heroSubtitle}numberOfLines={1}>
15
- Scan QR code with another Android device to download
14
+ <C style={t.heroSubtitle}numberOfLines={1}>
15
+ {k("debugging.apkInstallerSubtitle","Scan QR code with another Android device to download")}
16
16
  </C>
17
17
  </T>
18
- <T style={o.heroBadge}>
19
- <T style={o.pulseDot}/>
20
- <C style={o.heroBadgeText}>Live Metro</C>
18
+ <T style={t.heroBadge}>
19
+ <T style={t.pulseDot}/>
20
+ <C style={t.heroBadgeText}>{k("debugging.liveMetro","Live Metro")}</C>
21
21
  </T>
22
22
  </T>
23
23
 
24
24
 
25
- <T style={o.heroMetricsStrip}>
26
- <T style={o.heroMetricItem}>
27
- <C style={o.heroMetricLabel}>HOST IP</C>
28
- <C style={o.heroMetricValue}numberOfLines={1}>
25
+ <T style={t.heroMetricsStrip}>
26
+ <T style={t.heroMetricItem}>
27
+ <C style={t.heroMetricLabel}>HOST IP</C>
28
+ <C style={t.heroMetricValue}numberOfLines={1}>
29
29
  {Y}
30
30
  </C>
31
31
  </T>
32
- <T style={o.heroMetricDivider}/>
33
- <T style={o.heroMetricItem}>
34
- <C style={o.heroMetricLabel}>PORT</C>
35
- <C style={o.heroMetricValue}>{$}</C>
32
+ <T style={t.heroMetricDivider}/>
33
+ <T style={t.heroMetricItem}>
34
+ <C style={t.heroMetricLabel}>PORT</C>
35
+ <C style={t.heroMetricValue}>{$}</C>
36
36
  </T>
37
- <T style={o.heroMetricDivider}/>
38
- <T style={o.heroMetricItem}>
39
- <C style={o.heroMetricLabel}>APK SIZE</C>
40
- <C style={[o.heroMetricValue,{color:q?e.emerald500:e.grayTextWeak}]}>
37
+ <T style={t.heroMetricDivider}/>
38
+ <T style={t.heroMetricItem}>
39
+ <C style={t.heroMetricLabel}>APK SIZE</C>
40
+ <C style={[t.heroMetricValue,{color:q?e.emerald500:e.grayTextWeak}]}>
41
41
  {q?`${q} MB`:"Detected"}
42
42
  </C>
43
43
  </T>
44
- <T style={o.heroMetricDivider}/>
45
- <T style={o.heroMetricItem}>
46
- <C style={o.heroMetricLabel}>STATUS</C>
47
- <C style={[o.heroMetricValue,{color:e.emerald500}]}>
44
+ <T style={t.heroMetricDivider}/>
45
+ <T style={t.heroMetricItem}>
46
+ <C style={t.heroMetricLabel}>STATUS</C>
47
+ <C style={[t.heroMetricValue,{color:e.emerald500}]}>
48
48
  Ready
49
49
  </C>
50
50
  </T>
@@ -52,135 +52,135 @@ import{useState as M,useEffect as _,useMemo as We,useCallback as ie,useRef as X}
52
52
  </T>
53
53
 
54
54
 
55
- <T style={o.sectionCard}>
56
- <T style={o.sectionHeaderRow}>
57
- <C style={o.sectionTitle}>QR CODE & DIRECT DOWNLOAD</C>
58
- <G activeOpacity={.7}onPress={E}style={o.refreshBtn}>
55
+ <T style={t.sectionCard}>
56
+ <T style={t.sectionHeaderRow}>
57
+ <C style={t.sectionTitle}>{k("debugging.qrCodeTitle","QR CODE & DIRECT DOWNLOAD")}</C>
58
+ <G activeOpacity={.7}onPress={E}style={t.refreshBtn}>
59
59
  <_e size={12}color={e.purple}/>
60
- <C style={o.refreshBtnText}>Refresh</C>
60
+ <C style={t.refreshBtnText}>Refresh</C>
61
61
  </G>
62
62
  </T>
63
63
 
64
64
 
65
- <T style={o.qrCenteredWrapper}>
66
- <T style={o.qrInnerFrame}>
65
+ <T style={t.qrCenteredWrapper}>
66
+ <T style={t.qrInnerFrame}>
67
67
  <Ne value={Le}size={235}color={e.primaryBlack}backgroundColor={e.white}/>
68
68
  </T>
69
69
  </T>
70
70
  </T>
71
71
 
72
72
 
73
- <T style={o.sectionCard}>
74
- <T style={o.sectionHeaderRow}>
73
+ <T style={t.sectionCard}>
74
+ <T style={t.sectionHeaderRow}>
75
75
  <T style={{flexDirection:"row",alignItems:"center",gap:6}}>
76
76
  <Re size={13}color={e.purple}/>
77
- <C style={o.sectionTitle}>BUILD GENERATOR (GRADLE)</C>
77
+ <C style={t.sectionTitle}>{k("debugging.buildGeneratorTitle","BUILD GENERATOR (GRADLE)")}</C>
78
78
  </T>
79
- {I.status==="completed"&&<T style={o.completedBadge}>
79
+ {V.status==="completed"&&<T style={t.completedBadge}>
80
80
  <Be size={10}color={e.emerald500}/>
81
- <C style={o.completedBadgeText}>100% Ready</C>
81
+ <C style={t.completedBadgeText}>{k("debugging.ready100","100% Ready")}</C>
82
82
  </T>}
83
83
  </T>
84
84
 
85
85
 
86
- <T style={o.subTabStrip}>
87
- <G disabled={N}activeOpacity={.7}onPress={()=>{H("light"),te("assembleRelease")}}style={[o.subTabItem,F==="assembleRelease"&&o.subTabItemActive]}>
86
+ <T style={t.subTabStrip}>
87
+ <G disabled={N}activeOpacity={.7}onPress={()=>{H("light"),oe("assembleRelease")}}style={[t.subTabItem,O==="assembleRelease"&&t.subTabItemActive]}>
88
88
  <T style={{flexDirection:"row",alignItems:"center",gap:5}}>
89
- <Re size={12}color={F==="assembleRelease"?e.white:e.grayText}/>
90
- <C style={[o.subTabText,F==="assembleRelease"&&o.subTabTextActive]}>
91
- Release (assembleRelease)
89
+ <Re size={12}color={O==="assembleRelease"?e.white:e.grayText}/>
90
+ <C style={[t.subTabText,O==="assembleRelease"&&t.subTabTextActive]}>
91
+ {k("debugging.releaseBuild","Release (assembleRelease)")}
92
92
  </C>
93
93
  </T>
94
94
  </G>
95
95
 
96
- <G disabled={N}activeOpacity={.7}onPress={()=>{H("light"),te("assembleDebug")}}style={[o.subTabItem,F==="assembleDebug"&&o.subTabItemActive]}>
96
+ <G disabled={N}activeOpacity={.7}onPress={()=>{H("light"),oe("assembleDebug")}}style={[t.subTabItem,O==="assembleDebug"&&t.subTabItemActive]}>
97
97
  <T style={{flexDirection:"row",alignItems:"center",gap:5}}>
98
- <Ke size={12}color={F==="assembleDebug"?e.white:e.grayText}/>
99
- <C style={[o.subTabText,F==="assembleDebug"&&o.subTabTextActive]}>
100
- Debug (assembleDebug)
98
+ <Ke size={12}color={O==="assembleDebug"?e.white:e.grayText}/>
99
+ <C style={[t.subTabText,O==="assembleDebug"&&t.subTabTextActive]}>
100
+ {k("debugging.debugBuild","Debug (assembleDebug)")}
101
101
  </C>
102
102
  </T>
103
103
  </G>
104
104
  </T>
105
105
 
106
106
 
107
- <G disabled={N}activeOpacity={.7}onPress={()=>{H("light"),ve(!W)}}style={o.cleanRow}>
108
- <T style={[o.checkboxBox,W&&o.checkboxBoxActive]}>
107
+ <G disabled={N}activeOpacity={.7}onPress={()=>{H("light"),ve(!W)}}style={t.cleanRow}>
108
+ <T style={[t.checkboxBox,W&&t.checkboxBoxActive]}>
109
109
  {W&&<Be size={11}color={e.white}/>}
110
110
  </T>
111
- <C style={o.cleanLabel}>
112
- Clean build cache <C style={o.cleanCode}>(./gradlew clean)</C>
111
+ <C style={t.cleanLabel}>
112
+ Clean build cache <C style={t.cleanCode}>{k("debugging.cleanBuild","(./gradlew clean)")}</C>
113
113
  </C>
114
114
  </G>
115
115
 
116
116
 
117
- {N&&<T style={o.progressContainer}>
118
- <T style={o.progressTopRow}>
119
- <T style={o.progressTaskGroup}>
117
+ {N&&<T style={t.progressContainer}>
118
+ <T style={t.progressTopRow}>
119
+ <T style={t.progressTaskGroup}>
120
120
  <Ce size="small"color={e.purple}/>
121
- <C style={o.progressTaskText}numberOfLines={1}>
122
- {I.currentTask||"Executing Gradle tasks..."}
121
+ <C style={t.progressTaskText}numberOfLines={1}>
122
+ {V.currentTask||"Executing Gradle tasks..."}
123
123
  </C>
124
124
  </T>
125
- <C style={o.progressPercentageText}>
126
- {I.progress}%
125
+ <C style={t.progressPercentageText}>
126
+ {V.progress}%
127
127
  </C>
128
128
  </T>
129
129
 
130
130
 
131
- <T style={o.progressBarTrack}>
132
- <Z.View style={[o.progressBarFill,{width:K.interpolate({inputRange:[0,100],outputRange:["5%","100%"]})}]}/>
131
+ <T style={t.progressBarTrack}>
132
+ <Z.View style={[t.progressBarFill,{width:K.interpolate({inputRange:[0,100],outputRange:["5%","100%"]})}]}/>
133
133
  </T>
134
134
  </T>}
135
135
 
136
136
 
137
- {I.status==="failed"&&<T style={o.errorContainer}>
137
+ {V.status==="failed"&&<T style={t.errorContainer}>
138
138
  <Ie size={13}color={e.errorColor}/>
139
- <C style={o.errorText}numberOfLines={2}>
140
- {I.error||"Build execution failed."}
139
+ <C style={t.errorText}numberOfLines={2}>
140
+ {V.error||"Build execution failed."}
141
141
  </C>
142
142
  </T>}
143
143
 
144
144
 
145
- {(I.logs&&I.logs.length>0||N)&&<T style={o.consoleContainer}>
146
- <T style={o.consoleHeaderRow}>
145
+ {(V.logs&&V.logs.length>0||N)&&<T style={t.consoleContainer}>
146
+ <T style={t.consoleHeaderRow}>
147
147
  <T style={{flexDirection:"row",alignItems:"center",gap:6}}>
148
148
  <Ze color={e.sky400}size={12}/>
149
- <C style={o.consoleHeaderTitle}>GRADLE VERBOSE OUTPUT</C>
149
+ <C style={t.consoleHeaderTitle}>{k("debugging.gradleVerboseOutput","GRADLE VERBOSE OUTPUT")}</C>
150
150
  </T>
151
- <G activeOpacity={.7}onPress={()=>Ae(!Q)}style={o.consoleToggleBtn}>
152
- <C style={o.consoleToggleText}>
151
+ <G activeOpacity={.7}onPress={()=>Ae(!Q)}style={t.consoleToggleBtn}>
152
+ <C style={t.consoleToggleText}>
153
153
  {Q?"Hide Console":"Show Console"}
154
154
  </C>
155
155
  </G>
156
156
  </T>
157
157
 
158
- {Q&&<Te ref={re}style={o.consoleLogBox}contentContainerStyle={o.consoleLogContent}nestedScrollEnabled showsVerticalScrollIndicator>
159
- {I.logs&&I.logs.length>0?I.logs.map((k,V)=>{let S=e.slate400;return k.startsWith("> Task :")?S=e.sky400:k.includes("BUILD SUCCESSFUL")?S=e.buildSuccessGreen:k.includes("FAILURE")||k.includes("error:")?S=e.buildFailureRed:k.includes("UP-TO-DATE")&&(S=e.purple400),<C key={V}style={[o.consoleLogLine,{color:S}]}>
160
- {k}
161
- </C>}):<C style={o.consoleLogPlaceholder}>
162
- Waiting for Gradle daemon output...
158
+ {Q&&<Te ref={re}style={t.consoleLogBox}contentContainerStyle={t.consoleLogContent}nestedScrollEnabled showsVerticalScrollIndicator>
159
+ {V.logs&&V.logs.length>0?V.logs.map((R,z)=>{let S=e.slate400;return R.startsWith("> Task :")?S=e.sky400:R.includes("BUILD SUCCESSFUL")?S=e.buildSuccessGreen:R.includes("FAILURE")||R.includes("error:")?S=e.buildFailureRed:R.includes("UP-TO-DATE")&&(S=e.purple400),<C key={z}style={[t.consoleLogLine,{color:S}]}>
160
+ {R}
161
+ </C>}):<C style={t.consoleLogPlaceholder}>
162
+ {k("debugging.waitingForGradle","Waiting for Gradle daemon output...")}
163
163
  </C>}
164
164
  </Te>}
165
165
  </T>}
166
166
 
167
167
 
168
- {N?<T style={o.buildingActionsRow}>
169
- <T style={o.buildingStatusPill}>
168
+ {N?<T style={t.buildingActionsRow}>
169
+ <T style={t.buildingStatusPill}>
170
170
  <Ce size="small"color={e.purple}/>
171
- <C style={o.buildingStatusPillText}numberOfLines={1}>
172
- Building ({I.progress}%)
171
+ <C style={t.buildingStatusPillText}numberOfLines={1}>
172
+ Building ({V.progress}%)
173
173
  </C>
174
174
  </T>
175
175
 
176
- <Se onPress={Me}style={o.stopBtn}>
176
+ <Se onPress={Me}style={t.stopBtn}>
177
177
  <Ie size={13}color={e.white}/>
178
- <C style={o.stopBtnText}>Stop Build</C>
178
+ <C style={t.stopBtnText}>{k("debugging.stopBuild","Stop Build")}</C>
179
179
  </Se>
180
- </T>:<Se onPress={Oe}style={o.generateBtn}>
181
- <T style={o.ctaContentRow}>
180
+ </T>:<Se onPress={Oe}style={t.generateBtn}>
181
+ <T style={t.ctaContentRow}>
182
182
  <Ge size={14}color={e.white}/>
183
- <C style={o.generateBtnText}>
183
+ <C style={t.generateBtnText}>
184
184
  {W?"Clean & Generate Build":"Generate Build"}
185
185
  </C>
186
186
  </T>
@@ -188,10 +188,10 @@ import{useState as M,useEffect as _,useMemo as We,useCallback as ie,useRef as X}
188
188
  </T>
189
189
 
190
190
 
191
- <T style={o.footerNoteRow}>
191
+ <T style={t.footerNoteRow}>
192
192
  <Ee size={13}color={e.grayTextWeak}/>
193
- <C style={o.footerNoteText}>
194
- Ensure both Android devices are connected to the same Wi-Fi network.
193
+ <C style={t.footerNoteText}>
194
+ {k("debugging.sameWifiNote","Ensure both Android devices are connected to the same Wi-Fi network.")}
195
195
  </C>
196
196
  </T>
197
- </Te>};const o=Pe.create({scrollArea:{flex:1,backgroundColor:e.contentBg},scrollContent:{padding:12,gap:12,paddingBottom:100},heroCard:{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,padding:14,shadowColor:e.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:e.purple,alignItems:"center",justifyContent:"center",shadowColor:e.purple,shadowOpacity:.25,shadowRadius:4,shadowOffset:{width:0,height:2},elevation:2},heroTitle:{fontFamily:B.interBold,fontSize:15,color:e.primaryBlack,letterSpacing:-.2},heroSubtitle:{fontFamily:B.interRegular,fontSize:11.5,color:e.grayText,marginTop:1},heroBadge:{flexDirection:"row",alignItems:"center",gap:4,backgroundColor:`${e.emerald500}18`,paddingHorizontal:7,paddingVertical:3,borderRadius:6},pulseDot:{width:6,height:6,borderRadius:3,backgroundColor:e.emerald500},heroBadgeText:{fontFamily:B.interBold,fontSize:9.5,color:e.emerald500},heroMetricsStrip:{flexDirection:"row",alignItems:"center",backgroundColor:e.grayBackground,borderRadius:10,paddingVertical:8,paddingHorizontal:10},heroMetricItem:{flex:1,alignItems:"center",paddingHorizontal:2,minWidth:0},heroMetricLabel:{fontFamily:B.interBold,fontSize:8.5,color:e.grayTextWeak,letterSpacing:.4},heroMetricValue:{fontFamily:B.interBold,fontSize:11,color:e.primaryBlack,marginTop:2},heroMetricDivider:{width:1,height:20,backgroundColor:e.dividerColor},sectionCard:{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,padding:14,shadowColor:e.black,shadowOpacity:.03,shadowRadius:3,shadowOffset:{width:0,height:1},elevation:1,gap:12},sectionHeaderRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between"},sectionTitle:{fontFamily:B.interBold,fontSize:10.5,color:e.grayTextWeak,letterSpacing:.8,textTransform:"uppercase"},refreshBtn:{flexDirection:"row",alignItems:"center",gap:4,paddingHorizontal:7,paddingVertical:3,borderRadius:6,backgroundColor:`${e.purple}12`},refreshBtnText:{fontFamily:B.interBold,fontSize:10,color:e.purple},qrCenteredWrapper:{alignItems:"center",justifyContent:"center",backgroundColor:e.grayBackground,padding:12,borderRadius:12,borderWidth:1,borderColor:e.grayBorderSecondary},qrInnerFrame:{backgroundColor:e.white,padding:6,borderRadius:8},urlBox:{flexDirection:"row",alignItems:"center",backgroundColor:e.grayBackground,borderRadius:10,paddingLeft:10,paddingRight:6,paddingVertical:6,borderWidth:1,borderColor:e.grayBorderSecondary,gap:8},urlText:{flex:1,fontFamily:B.interMedium,fontSize:11.5,color:e.skyBlue},actionsRow:{flexDirection:"row",gap:10},actionBtnSecondary:{flex:1,flexDirection:"row",alignItems:"center",justifyContent:"center",gap:6,paddingVertical:9,borderRadius:10,borderWidth:1,borderColor:e.grayBorderSecondary,backgroundColor:e.grayBackground},actionBtnSecondaryText:{fontFamily:B.interBold,fontSize:12,color:e.grayTextStrong},actionBtnPrimary:{flex:1,flexDirection:"row",alignItems:"center",justifyContent:"center",gap:6,paddingVertical:9,borderRadius:10,backgroundColor:e.purple,shadowColor:e.purple,shadowOpacity:.25,shadowRadius:4,shadowOffset:{width:0,height:2},elevation:2},actionBtnPrimaryText:{fontFamily:B.interBold,fontSize:12,color:e.white},completedBadge:{flexDirection:"row",alignItems:"center",gap:3,backgroundColor:`${e.emerald500}18`,paddingHorizontal:6,paddingVertical:2,borderRadius:5},completedBadgeText:{fontFamily:B.interBold,fontSize:9.5,color:e.emerald500},subTabStrip:{flexDirection:"row",backgroundColor:e.grayBackground,borderRadius:8,padding:2,borderWidth:1,borderColor:e.grayBorderSecondary},subTabItem:{flex:1,paddingVertical:7,borderRadius:6,alignItems:"center",justifyContent:"center"},subTabItemActive:{backgroundColor:e.purple,shadowColor:e.purple,shadowOpacity:.2,shadowRadius:3,shadowOffset:{width:0,height:1},elevation:1},subTabText:{fontFamily:B.interMedium,fontSize:11,color:e.grayText},subTabTextActive:{fontFamily:B.interBold,color:e.white},cleanRow:{flexDirection:"row",alignItems:"center",gap:8,paddingVertical:2},checkboxBox:{width:18,height:18,borderRadius:4,borderWidth:1.5,borderColor:e.grayBorderSecondary,backgroundColor:e.grayBackground,alignItems:"center",justifyContent:"center"},checkboxBoxActive:{backgroundColor:e.purple,borderColor:e.purple},cleanLabel:{fontFamily:B.interMedium,fontSize:11.5,color:e.grayTextStrong},cleanCode:{fontFamily:B.interRegular,color:e.grayTextWeak,fontSize:10.5},progressContainer:{backgroundColor:e.grayBackground,borderRadius:10,padding:10,gap:6,borderWidth:1,borderColor:e.grayBorderSecondary},progressTopRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between"},progressTaskGroup:{flexDirection:"row",alignItems:"center",gap:6,flex:1,paddingRight:8},progressTaskText:{fontFamily:B.interMedium,fontSize:11,color:e.primaryBlack,flex:1},progressPercentageText:{fontFamily:B.interBold,fontSize:11.5,color:e.purple},progressBarTrack:{width:"100%",height:6,borderRadius:3,backgroundColor:e.grayBorderSecondary,overflow:"hidden"},progressBarFill:{height:"100%",backgroundColor:e.purple,borderRadius:3},errorContainer:{flexDirection:"row",alignItems:"center",gap:6,backgroundColor:`${e.errorColor}12`,padding:8,borderRadius:8,borderWidth:1,borderColor:`${e.errorColor}25`},errorText:{fontFamily:B.interRegular,fontSize:11,color:e.errorColor,flex:1},consoleContainer:{backgroundColor:e.slate900,borderRadius:10,borderWidth:1,borderColor:e.slate800,overflow:"hidden",marginTop:4},consoleHeaderRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",backgroundColor:e.slate800,paddingHorizontal:10,paddingVertical:6},consoleHeaderTitle:{fontFamily:B.interBold,fontSize:10,color:e.sky400,letterSpacing:.5},consoleToggleBtn:{paddingHorizontal:6,paddingVertical:2,borderRadius:4,backgroundColor:"rgba(255,255,255,0.1)"},consoleToggleText:{fontFamily:B.interMedium,fontSize:9.5,color:e.slate400},consoleLogBox:{maxHeight:140,paddingHorizontal:10,paddingVertical:8},consoleLogContent:{gap:3},consoleLogLine:{fontFamily:B.interRegular,fontSize:10,lineHeight:14},consoleLogPlaceholder:{fontFamily:B.interRegular,fontSize:10,color:e.slate500,fontStyle:"italic"},generateBtn:{backgroundColor:e.purple,borderRadius:10,paddingVertical:10,alignItems:"center",justifyContent:"center",shadowColor:e.purple,shadowOpacity:.25,shadowRadius:4,shadowOffset:{width:0,height:2},elevation:2},generateBtnDisabled:{opacity:.7},buildingActionsRow:{flexDirection:"row",alignItems:"center",gap:10},buildingStatusPill:{flex:1,flexDirection:"row",alignItems:"center",justifyContent:"center",gap:8,backgroundColor:`${e.purple}14`,borderRadius:10,paddingVertical:10,borderWidth:1,borderColor:`${e.purple}30`},buildingStatusPillText:{fontFamily:B.interBold,fontSize:12,color:e.purple},stopBtn:{flexDirection:"row",alignItems:"center",justifyContent:"center",gap:6,backgroundColor:e.errorColor,borderRadius:10,paddingHorizontal:16,paddingVertical:10,shadowColor:e.errorColor,shadowOpacity:.25,shadowRadius:4,shadowOffset:{width:0,height:2},elevation:2},stopBtnText:{fontFamily:B.interBold,fontSize:12,color:e.white},ctaContentRow:{flexDirection:"row",alignItems:"center",gap:6},generateBtnText:{fontFamily:B.interBold,fontSize:12.5,color:e.white},footerNoteRow:{flexDirection:"row",alignItems:"center",gap:6,paddingHorizontal:8},footerNoteText:{fontFamily:B.interRegular,fontSize:11,color:e.grayTextWeak,textAlign:"center",flex:1}});export default DebuggingTab;
197
+ </Te>};const t=Pe.create({scrollArea:{flex:1,backgroundColor:e.contentBg},scrollContent:{padding:12,gap:12,paddingBottom:100},heroCard:{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,padding:14,shadowColor:e.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:e.purple,alignItems:"center",justifyContent:"center",shadowColor:e.purple,shadowOpacity:.25,shadowRadius:4,shadowOffset:{width:0,height:2},elevation:2},heroTitle:{fontFamily:B.interBold,fontSize:15,color:e.primaryBlack,letterSpacing:-.2},heroSubtitle:{fontFamily:B.interRegular,fontSize:11.5,color:e.grayText,marginTop:1},heroBadge:{flexDirection:"row",alignItems:"center",gap:4,backgroundColor:`${e.emerald500}18`,paddingHorizontal:7,paddingVertical:3,borderRadius:6},pulseDot:{width:6,height:6,borderRadius:3,backgroundColor:e.emerald500},heroBadgeText:{fontFamily:B.interBold,fontSize:9.5,color:e.emerald500},heroMetricsStrip:{flexDirection:"row",alignItems:"center",backgroundColor:e.grayBackground,borderRadius:10,paddingVertical:8,paddingHorizontal:10},heroMetricItem:{flex:1,alignItems:"center",paddingHorizontal:2,minWidth:0},heroMetricLabel:{fontFamily:B.interBold,fontSize:8.5,color:e.grayTextWeak,letterSpacing:.4},heroMetricValue:{fontFamily:B.interBold,fontSize:11,color:e.primaryBlack,marginTop:2},heroMetricDivider:{width:1,height:20,backgroundColor:e.dividerColor},sectionCard:{backgroundColor:e.primaryLight,borderRadius:14,borderWidth:1,borderColor:e.grayBorderSecondary,padding:14,shadowColor:e.black,shadowOpacity:.03,shadowRadius:3,shadowOffset:{width:0,height:1},elevation:1,gap:12},sectionHeaderRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between"},sectionTitle:{fontFamily:B.interBold,fontSize:10.5,color:e.grayTextWeak,letterSpacing:.8,textTransform:"uppercase"},refreshBtn:{flexDirection:"row",alignItems:"center",gap:4,paddingHorizontal:7,paddingVertical:3,borderRadius:6,backgroundColor:`${e.purple}12`},refreshBtnText:{fontFamily:B.interBold,fontSize:10,color:e.purple},qrCenteredWrapper:{alignItems:"center",justifyContent:"center",backgroundColor:e.grayBackground,padding:12,borderRadius:12,borderWidth:1,borderColor:e.grayBorderSecondary},qrInnerFrame:{backgroundColor:e.white,padding:6,borderRadius:8},urlBox:{flexDirection:"row",alignItems:"center",backgroundColor:e.grayBackground,borderRadius:10,paddingLeft:10,paddingRight:6,paddingVertical:6,borderWidth:1,borderColor:e.grayBorderSecondary,gap:8},urlText:{flex:1,fontFamily:B.interMedium,fontSize:11.5,color:e.skyBlue},actionsRow:{flexDirection:"row",gap:10},actionBtnSecondary:{flex:1,flexDirection:"row",alignItems:"center",justifyContent:"center",gap:6,paddingVertical:9,borderRadius:10,borderWidth:1,borderColor:e.grayBorderSecondary,backgroundColor:e.grayBackground},actionBtnSecondaryText:{fontFamily:B.interBold,fontSize:12,color:e.grayTextStrong},actionBtnPrimary:{flex:1,flexDirection:"row",alignItems:"center",justifyContent:"center",gap:6,paddingVertical:9,borderRadius:10,backgroundColor:e.purple,shadowColor:e.purple,shadowOpacity:.25,shadowRadius:4,shadowOffset:{width:0,height:2},elevation:2},actionBtnPrimaryText:{fontFamily:B.interBold,fontSize:12,color:e.white},completedBadge:{flexDirection:"row",alignItems:"center",gap:3,backgroundColor:`${e.emerald500}18`,paddingHorizontal:6,paddingVertical:2,borderRadius:5},completedBadgeText:{fontFamily:B.interBold,fontSize:9.5,color:e.emerald500},subTabStrip:{flexDirection:"row",backgroundColor:e.grayBackground,borderRadius:8,padding:2,borderWidth:1,borderColor:e.grayBorderSecondary},subTabItem:{flex:1,paddingVertical:7,borderRadius:6,alignItems:"center",justifyContent:"center"},subTabItemActive:{backgroundColor:e.purple,shadowColor:e.purple,shadowOpacity:.2,shadowRadius:3,shadowOffset:{width:0,height:1},elevation:1},subTabText:{fontFamily:B.interMedium,fontSize:11,color:e.grayText},subTabTextActive:{fontFamily:B.interBold,color:e.white},cleanRow:{flexDirection:"row",alignItems:"center",gap:8,paddingVertical:2},checkboxBox:{width:18,height:18,borderRadius:4,borderWidth:1.5,borderColor:e.grayBorderSecondary,backgroundColor:e.grayBackground,alignItems:"center",justifyContent:"center"},checkboxBoxActive:{backgroundColor:e.purple,borderColor:e.purple},cleanLabel:{fontFamily:B.interMedium,fontSize:11.5,color:e.grayTextStrong},cleanCode:{fontFamily:B.interRegular,color:e.grayTextWeak,fontSize:10.5},progressContainer:{backgroundColor:e.grayBackground,borderRadius:10,padding:10,gap:6,borderWidth:1,borderColor:e.grayBorderSecondary},progressTopRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between"},progressTaskGroup:{flexDirection:"row",alignItems:"center",gap:6,flex:1,paddingRight:8},progressTaskText:{fontFamily:B.interMedium,fontSize:11,color:e.primaryBlack,flex:1},progressPercentageText:{fontFamily:B.interBold,fontSize:11.5,color:e.purple},progressBarTrack:{width:"100%",height:6,borderRadius:3,backgroundColor:e.grayBorderSecondary,overflow:"hidden"},progressBarFill:{height:"100%",backgroundColor:e.purple,borderRadius:3},errorContainer:{flexDirection:"row",alignItems:"center",gap:6,backgroundColor:`${e.errorColor}12`,padding:8,borderRadius:8,borderWidth:1,borderColor:`${e.errorColor}25`},errorText:{fontFamily:B.interRegular,fontSize:11,color:e.errorColor,flex:1},consoleContainer:{backgroundColor:e.slate900,borderRadius:10,borderWidth:1,borderColor:e.slate800,overflow:"hidden",marginTop:4},consoleHeaderRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",backgroundColor:e.slate800,paddingHorizontal:10,paddingVertical:6},consoleHeaderTitle:{fontFamily:B.interBold,fontSize:10,color:e.sky400,letterSpacing:.5},consoleToggleBtn:{paddingHorizontal:6,paddingVertical:2,borderRadius:4,backgroundColor:"rgba(255,255,255,0.1)"},consoleToggleText:{fontFamily:B.interMedium,fontSize:9.5,color:e.slate400},consoleLogBox:{maxHeight:140,paddingHorizontal:10,paddingVertical:8},consoleLogContent:{gap:3},consoleLogLine:{fontFamily:B.interRegular,fontSize:10,lineHeight:14},consoleLogPlaceholder:{fontFamily:B.interRegular,fontSize:10,color:e.slate500,fontStyle:"italic"},generateBtn:{backgroundColor:e.purple,borderRadius:10,paddingVertical:10,alignItems:"center",justifyContent:"center",shadowColor:e.purple,shadowOpacity:.25,shadowRadius:4,shadowOffset:{width:0,height:2},elevation:2},generateBtnDisabled:{opacity:.7},buildingActionsRow:{flexDirection:"row",alignItems:"center",gap:10},buildingStatusPill:{flex:1,flexDirection:"row",alignItems:"center",justifyContent:"center",gap:8,backgroundColor:`${e.purple}14`,borderRadius:10,paddingVertical:10,borderWidth:1,borderColor:`${e.purple}30`},buildingStatusPillText:{fontFamily:B.interBold,fontSize:12,color:e.purple},stopBtn:{flexDirection:"row",alignItems:"center",justifyContent:"center",gap:6,backgroundColor:e.errorColor,borderRadius:10,paddingHorizontal:16,paddingVertical:10,shadowColor:e.errorColor,shadowOpacity:.25,shadowRadius:4,shadowOffset:{width:0,height:2},elevation:2},stopBtnText:{fontFamily:B.interBold,fontSize:12,color:e.white},ctaContentRow:{flexDirection:"row",alignItems:"center",gap:6},generateBtnText:{fontFamily:B.interBold,fontSize:12.5,color:e.white},footerNoteRow:{flexDirection:"row",alignItems:"center",gap:6,paddingHorizontal:8},footerNoteText:{fontFamily:B.interRegular,fontSize:11,color:e.grayTextWeak,textAlign:"center",flex:1}});export default DebuggingTab;
@@ -98,13 +98,13 @@ import Ve,{useState as re,useEffect as Le,useMemo as H,useCallback as Pe}from"re
98
98
  </C>
99
99
  <C style={{flex:1,minWidth:0}}>
100
100
  <C style={{flexDirection:"row",alignItems:"center",gap:6}}>
101
- <T style={r.featuredUuidLabel}>DEVICE UUID</T>
101
+ <T style={r.featuredUuidLabel}>{$("device.deviceUuid","DEVICE UUID")}</T>
102
102
  <C style={r.featuredBadge}>
103
103
  <T style={r.featuredBadgeText}>FEATURED</T>
104
104
  </C>
105
105
  </C>
106
106
  <T style={r.featuredUuidSubtext}>
107
- Deterministic hardware pseudo-identifier
107
+ {$("device.pseudoIdentifierDesc","Deterministic hardware pseudo-identifier")}
108
108
  </T>
109
109
  </C>
110
110
  </C>
@@ -1,12 +1,12 @@
1
- import{useCallback as L,useEffect as X,useRef as d,useState as E}from"react";import{Animated as s,PanResponder as ce,Platform as b,StyleSheet as We,Text as I,TouchableOpacity as Ne,useWindowDimensions as He,View as S}from"react-native";import Ye from"react-native-linear-gradient";import{useInspector as $e}from"./InspectorContext";import F from"../TouchableScale";import Se from"../AppHeaderLogo";import{AndroidIcon as Ge,AppleIcon as Xe,ScreenshotCaptureIcon as Ze,ScreenRecordIcon as _e,CloseWhite as Re,MaximizeIcon as Ue,NpmIcon as Je}from"../NetworkIcons";import{ScreenCapture as V,generateCaptureId as K}from"../../capture";import{triggerNativeHaptic as u}from"../../native/NativeInspector";import{showToast as m}from"../../helpers/toast";import{getAppName as Ke,getAppVersionAndBuild as Qe}from"../../helpers";import{LIB_VERSION as et}from"../../constants";import{AppColors as o}from"../../styles/AppColors";import{AppFonts as W}from"../../styles/AppFonts";import Ce from"../../styles";import{useTranslation as tt}from"../../i18n";import{MediaPreviewModal as St}from"./MediaPreviewModal";const vt=()=>{const{setVisible:P,isMinimized:Te,setIsMinimized:k,dismissInspector:Ie,appIcon:Q,fabPan:a,fabPanResponder:xt,fabDraggedRef:N,pulseAnim:Ve,fabShineAnim:Rt,refreshMediaCount:v,captureFps:ee,captureScale:te,captureBitrate:Z,captureMaxDurationSeconds:re,captureAudioMode:oe,previewMediaItem:ie,setPreviewMediaItem:D}=$e(),{width:M,height:x}=He(),{t:n}=tt(),[Pe]=E(()=>Qe().formatted),[p,H]=E(!1),[De,j]=E(0),R=d(null),[Me,_]=E(!1),[q,O]=E(!1),f=d(!1),z=d(new s.Value(0)).current,Y=d(new s.Value(1)).current,C=d({x:0,y:0});X(()=>{const e=a.x.addListener(r=>C.current.x=r.value),t=a.y.addListener(r=>C.current.y=r.value);return()=>{a.x.removeListener(e),a.y.removeListener(t)}},[a]);const l=68,$=8,Oe=L(()=>{const e=C.current.x,t=C.current.y,r=20,B=180,g=M-r-l/2+e,G=x-B-l/2+t;let U=e,J=t,A=!1;g<$+l/2?(U=e+($+l/2-g),A=!0):g>M-$-l/2&&(U=e-(g-(M-$-l/2)),A=!0);const se=b.OS==="ios"?60:40,ae=b.OS==="ios"?40:24;G<se+l/2?(J=t+(se+l/2-G),A=!0):G>x-ae-l/2&&(J=t-(G-(x-ae-l/2)),A=!0),A&&s.spring(a,{toValue:{x:U,y:J},useNativeDriver:!1,tension:80,friction:8}).start()},[a,M,x]),ze=d(ce.create({onStartShouldSetPanResponder:()=>!1,onMoveShouldSetPanResponder:(e,t)=>Math.abs(t.dx)>4||Math.abs(t.dy)>4,onPanResponderGrant:()=>{N.current=!0,a.setOffset({x:C.current.x,y:C.current.y}),a.setValue({x:0,y:0}),f.current=!1,O(!1),_(!0),Y.setValue(1),s.spring(z,{toValue:1,useNativeDriver:!0,tension:80,friction:8}).start()},onPanResponderMove:(e,t)=>{a.setValue({x:t.dx,y:t.dy});const r=t.moveY,B=t.moveX,g=r>x-140&&Math.abs(B-M/2)<85;g&&!f.current?(f.current=!0,O(!0),u("medium"),s.spring(Y,{toValue:1.25,useNativeDriver:!0,tension:100,friction:6}).start()):!g&&f.current&&(f.current=!1,O(!1),s.spring(Y,{toValue:1,useNativeDriver:!0,tension:100,friction:6}).start())},onPanResponderRelease:()=>{const e=f.current;a.flattenOffset(),s.timing(z,{toValue:0,duration:180,useNativeDriver:!0}).start(()=>{_(!1),O(!1),f.current=!1}),e?(u("heavy"),Ie(),m(n("common.inspectorDismissed","In-App Inspector closed for this session"))):Oe(),setTimeout(()=>{N.current=!1},100)},onPanResponderTerminate:()=>{a.flattenOffset(),N.current=!1,s.timing(z,{toValue:0,duration:180,useNativeDriver:!0}).start(()=>{_(!1),O(!1),f.current=!1})}})).current,c=d(new s.ValueXY({x:0,y:0})).current,T=d({x:0,y:0});X(()=>{const e=c.x.addListener(r=>T.current.x=r.value),t=c.y.addListener(r=>T.current.y=r.value);return()=>{c.x.removeListener(e),c.y.removeListener(t)}},[c]);const h=d(!1),Be=d(ce.create({onStartShouldSetPanResponder:()=>!1,onMoveShouldSetPanResponder:(e,t)=>Math.abs(t.dx)>4||Math.abs(t.dy)>4,onPanResponderGrant:()=>{h.current=!0,c.setOffset({x:T.current.x,y:T.current.y}),c.setValue({x:0,y:0})},onPanResponderMove:s.event([null,{dx:c.x,dy:c.y}],{useNativeDriver:!1}),onPanResponderRelease:()=>{c.flattenOffset();const e=T.current.y,t=-(x-(b.OS==="ios"?34:18)-70),r=b.OS==="ios"?34:18;if(e<t||e>r){const B=Math.max(t,Math.min(r,e));s.spring(c,{toValue:{x:T.current.x,y:B},useNativeDriver:!1,tension:80,friction:8}).start()}setTimeout(()=>{h.current=!1},50)},onPanResponderTerminate:()=>{c.flattenOffset(),h.current=!1}})).current;X(()=>{V.isRecording().then(e=>{H(!!e)}).catch(()=>{})},[]),X(()=>(p?(j(0),R.current=setInterval(()=>{j(e=>e+1)},1e3)):(R.current&&(clearInterval(R.current),R.current=null),j(0)),()=>{R.current&&clearInterval(R.current)}),[p]);const Ae=L(async()=>{if(!h.current)try{u("light");const e=await V.takeScreenshot({format:"png",quality:.9,hideInspector:!0});if(e){u("success");const t=K("screenshot",e.format||"png"),r={id:t,type:"image",format:e.format,uri:e.uri,filename:e.uri.split("/").pop()||t,sizeBytes:e.sizeBytes,timestamp:e.timestamp,width:e.width,height:e.height};D(r),v?.().catch(()=>{}),m(n("header.screenshotCaptured","Screenshot captured"))}else m(n("header.screenshotFailed","Failed to capture screenshot"))}catch{m(n("header.screenshotError","Error capturing screenshot"))}},[v,n]),Le=L(async()=>{if(!h.current)try{if(p){u("medium");const e=await V.stopRecording();if(H(!1),e){u("success");const t=K("video",e.format),r={id:t,type:e.format==="gif"?"gif":"video",format:e.format,uri:e.uri,filename:e.uri.split("/").pop()||t,sizeBytes:e.sizeBytes,timestamp:e.timestamp,durationMs:e.durationMs,width:e.width,height:e.height,hasAudio:e.hasAudio,thumbnailUri:e.thumbnailUri};D(r),v?.().catch(()=>{}),m(n("header.recordingSaved",{duration:(e.durationMs/1e3).toFixed(1),defaultValue:`Recording saved (${(e.durationMs/1e3).toFixed(1)}s)`}))}}else u("medium"),await V.startRecording({fps:ee,scale:te,audioSource:oe,bitrate:Z>0?Z:void 0,maxDurationSeconds:re})?(H(!0),m(n("header.recordingStarted","Recording started"))):m(n("header.recordingStartFailed","Failed to start recording"))}catch{m(n("header.recordingError","Error during screen recording")),H(!1)}},[p,ee,te,Z,re,oe,v,n]),ne=L(()=>{h.current||(u("light"),k?.(!1),P(!0))},[k,P]),Ee=L(()=>{h.current||(u("light"),k?.(!1),P(!1))},[k,P]),Fe=e=>{const t=Math.floor(e/60),r=e%60;return`${t}:${r<10?"0":""}${r}`};return<>
1
+ import{useCallback as A,useEffect as G,useRef as d,useState as L}from"react";import{Animated as s,PanResponder as ae,Platform as y,StyleSheet as We,Text as I,TouchableOpacity as Ne,useWindowDimensions as He,View as S}from"react-native";import Ye from"react-native-linear-gradient";import{useInspector as $e}from"./InspectorContext";import E from"../TouchableScale";import Se from"../AppHeaderLogo";import{AndroidIcon as Ge,AppleIcon as Xe,ScreenshotCaptureIcon as Ze,ScreenRecordIcon as _e,CloseWhite as Re,MaximizeIcon as Ue,NpmIcon as Je}from"../NetworkIcons";import{ScreenCapture as V,generateCaptureId as J}from"../../capture";import{triggerNativeHaptic as u}from"../../native/NativeInspector";import{showToast as m}from"../../helpers/toast";import{getAppName as Ke,getAppVersionAndBuild as Qe}from"../../helpers";import{LIB_VERSION as et}from"../../constants";import{AppColors as o}from"../../styles/AppColors";import{AppFonts as F}from"../../styles/AppFonts";import Ce from"../../styles";import{useTranslation as tt}from"../../i18n";import{MediaPreviewModal as St}from"./MediaPreviewModal";const vt=()=>{const{setVisible:P,isMinimized:Te,setIsMinimized:W,dismissInspector:Ie,appIcon:K,fabPan:a,fabPanResponder:xt,fabDraggedRef:k,pulseAnim:Ve,fabShineAnim:Rt,refreshMediaCount:h,captureFps:Q,captureScale:ee,captureBitrate:X,captureMaxDurationSeconds:te,captureAudioMode:re,previewMediaItem:oe,setPreviewMediaItem:v}=$e(),{width:D,height:x}=He(),{t:n}=tt(),[Pe]=L(()=>Qe().formatted),[p,N]=L(!1),[De,Z]=L(0),R=d(null),[Me,j]=L(!1),[_,M]=L(!1),f=d(!1),O=d(new s.Value(0)).current,H=d(new s.Value(1)).current,C=d({x:0,y:0});G(()=>{const e=a.x.addListener(r=>C.current.x=r.value),t=a.y.addListener(r=>C.current.y=r.value);return()=>{a.x.removeListener(e),a.y.removeListener(t)}},[a]);const l=68,Y=8,Oe=A(()=>{const e=C.current.x,t=C.current.y,r=20,z=180,b=D-r-l/2+e,$=x-z-l/2+t;let q=e,U=t,B=!1;b<Y+l/2?(q=e+(Y+l/2-b),B=!0):b>D-Y-l/2&&(q=e-(b-(D-Y-l/2)),B=!0);const ne=y.OS==="ios"?60:40,se=y.OS==="ios"?40:24;$<ne+l/2?(U=t+(ne+l/2-$),B=!0):$>x-se-l/2&&(U=t-($-(x-se-l/2)),B=!0),B&&s.spring(a,{toValue:{x:q,y:U},useNativeDriver:!1,tension:80,friction:8}).start()},[a,D,x]),ze=d(ae.create({onStartShouldSetPanResponder:()=>!1,onMoveShouldSetPanResponder:(e,t)=>Math.abs(t.dx)>4||Math.abs(t.dy)>4,onPanResponderGrant:()=>{k.current=!0,a.setOffset({x:C.current.x,y:C.current.y}),a.setValue({x:0,y:0}),f.current=!1,M(!1),j(!0),H.setValue(1),s.spring(O,{toValue:1,useNativeDriver:!0,tension:80,friction:8}).start()},onPanResponderMove:(e,t)=>{a.setValue({x:t.dx,y:t.dy});const r=t.moveY,z=t.moveX,b=r>x-140&&Math.abs(z-D/2)<85;b&&!f.current?(f.current=!0,M(!0),u("medium"),s.spring(H,{toValue:1.25,useNativeDriver:!0,tension:100,friction:6}).start()):!b&&f.current&&(f.current=!1,M(!1),s.spring(H,{toValue:1,useNativeDriver:!0,tension:100,friction:6}).start())},onPanResponderRelease:()=>{const e=f.current;a.flattenOffset(),s.timing(O,{toValue:0,duration:180,useNativeDriver:!0}).start(()=>{j(!1),M(!1),f.current=!1}),e?(u("heavy"),Ie(),m(n("common.inspectorDismissed","In-App Inspector closed for this session"))):Oe(),setTimeout(()=>{k.current=!1},100)},onPanResponderTerminate:()=>{a.flattenOffset(),k.current=!1,s.timing(O,{toValue:0,duration:180,useNativeDriver:!0}).start(()=>{j(!1),M(!1),f.current=!1})}})).current,c=d(new s.ValueXY({x:0,y:0})).current,T=d({x:0,y:0});G(()=>{const e=c.x.addListener(r=>T.current.x=r.value),t=c.y.addListener(r=>T.current.y=r.value);return()=>{c.x.removeListener(e),c.y.removeListener(t)}},[c]);const g=d(!1),Be=d(ae.create({onStartShouldSetPanResponder:()=>!1,onMoveShouldSetPanResponder:(e,t)=>Math.abs(t.dx)>4||Math.abs(t.dy)>4,onPanResponderGrant:()=>{g.current=!0,c.setOffset({x:T.current.x,y:T.current.y}),c.setValue({x:0,y:0})},onPanResponderMove:s.event([null,{dx:c.x,dy:c.y}],{useNativeDriver:!1}),onPanResponderRelease:()=>{c.flattenOffset();const e=T.current.y,t=-(x-(y.OS==="ios"?34:18)-70),r=y.OS==="ios"?34:18;if(e<t||e>r){const z=Math.max(t,Math.min(r,e));s.spring(c,{toValue:{x:T.current.x,y:z},useNativeDriver:!1,tension:80,friction:8}).start()}setTimeout(()=>{g.current=!1},50)},onPanResponderTerminate:()=>{c.flattenOffset(),g.current=!1}})).current;G(()=>{V.isRecording().then(e=>{N(!!e)}).catch(()=>{})},[]),G(()=>(p?(Z(0),R.current=setInterval(()=>{Z(e=>e+1)},1e3)):(R.current&&(clearInterval(R.current),R.current=null),Z(0)),()=>{R.current&&clearInterval(R.current)}),[p]);const Ae=A(async()=>{if(!g.current)try{u("light");const e=await V.takeScreenshot({format:"png",quality:.9,hideInspector:!0});if(e){u("success");const t=J("screenshot",e.format||"png"),r={id:t,type:"image",format:e.format,uri:e.uri,filename:e.uri.split("/").pop()||t,sizeBytes:e.sizeBytes,timestamp:e.timestamp,width:e.width,height:e.height};v(r),h?.().catch(()=>{}),m(n("header.screenshotCaptured","Screenshot captured"))}else m(n("header.screenshotFailed","Failed to capture screenshot"))}catch{m(n("header.screenshotError","Error capturing screenshot"))}},[h,n]),Le=A(async()=>{if(!g.current)try{if(p){u("medium");const e=await V.stopRecording();if(N(!1),e){u("success");const t=J("video",e.format),r={id:t,type:e.format==="gif"?"gif":"video",format:e.format,uri:e.uri,filename:e.uri.split("/").pop()||t,sizeBytes:e.sizeBytes,timestamp:e.timestamp,durationMs:e.durationMs,width:e.width,height:e.height,hasAudio:e.hasAudio,thumbnailUri:e.thumbnailUri};v(r),h?.().catch(()=>{}),m(n("header.recordingSaved",{duration:(e.durationMs/1e3).toFixed(1),defaultValue:`Recording saved (${(e.durationMs/1e3).toFixed(1)}s)`}))}}else u("medium"),await V.startRecording({fps:Q,scale:ee,audioSource:re,bitrate:X>0?X:void 0,maxDurationSeconds:te})?(N(!0),m(n("header.recordingStarted","Recording started"))):m(n("header.recordingStartFailed","Failed to start recording"))}catch{m(n("header.recordingError","Error during screen recording")),N(!1)}},[p,Q,ee,X,te,re,h,n]),ie=A(()=>{g.current||(u("light"),W?.(!1),P(!0))},[W,P]),Ee=A(()=>{g.current||(u("light"),W?.(!1),P(!1))},[W,P]),Fe=e=>{const t=Math.floor(e/60),r=e%60;return`${t}:${r<10?"0":""}${r}`};return<>
2
2
 
3
3
  {Te?<s.View style={[i.playerContainer,{transform:c.getTranslateTransform()}]}{...Be.panHandlers}>
4
4
 
5
5
  <Ye colors={[o.indigo600,o.violet600]}start={{x:0,y:0}}end={{x:1,y:1}}style={i.gradientBg}pointerEvents="none"/>
6
6
 
7
7
 
8
- <Ne activeOpacity={.75}onPress={ne}style={i.brandSection}accessibilityRole="button"accessibilityLabel={n("mediaGallery.expand","Expand Inspector")}>
9
- <Se size={36}customIcon={Q}shape="circle"/>
8
+ <Ne activeOpacity={.75}onPress={ie}style={i.brandSection}accessibilityRole="button"accessibilityLabel={n("mediaGallery.expand","Expand Inspector")}>
9
+ <Se size={36}customIcon={K}shape="circle"/>
10
10
  <S style={i.titleWrapper}>
11
11
  <I style={i.appTitle}numberOfLines={1}>
12
12
  {Ke()}
@@ -14,7 +14,7 @@ import{useCallback as L,useEffect as X,useRef as d,useState as E}from"react";imp
14
14
  <S style={i.versionRow}>
15
15
 
16
16
  <S style={i.versionChip}>
17
- {b.OS==="ios"?<Xe color={`${o.white}E6`}size={9}/>:<Ge color={`${o.white}E6`}size={9}/>}
17
+ {y.OS==="ios"?<Xe color={`${o.white}E6`}size={9}/>:<Ge color={`${o.white}E6`}size={9}/>}
18
18
  <I style={i.versionChipText}numberOfLines={1}>
19
19
  {Pe}
20
20
  </I>
@@ -34,48 +34,48 @@ import{useCallback as L,useEffect as X,useRef as d,useState as E}from"react";imp
34
34
 
35
35
  <S style={i.actionsRow}>
36
36
 
37
- <F onPress={Ae}hitSlop={{top:6,bottom:6,left:4,right:4}}style={i.actionBtn}>
37
+ <E onPress={Ae}hitSlop={{top:6,bottom:6,left:4,right:4}}style={i.actionBtn}>
38
38
  <Ze size={12}color={o.white}/>
39
39
  <I style={i.actionText}>
40
40
  {n("header.photo","Photo")}
41
41
  </I>
42
- </F>
42
+ </E>
43
43
 
44
44
 
45
- <F onPress={Le}hitSlop={{top:6,bottom:6,left:4,right:4}}style={[i.actionBtn,p&&i.recordingBtnActive]}>
45
+ <E onPress={Le}hitSlop={{top:6,bottom:6,left:4,right:4}}style={[i.actionBtn,p&&i.recordingBtnActive]}>
46
46
  {p?<S style={i.recordingDot}/>:<_e size={12}color={o.white}/>}
47
47
  <I style={[i.actionText,p&&{color:o.red300}]}>
48
48
  {p?`${n("header.rec","REC")} ${Fe(De)}`:n("header.record","Record")}
49
49
  </I>
50
- </F>
50
+ </E>
51
51
 
52
52
 
53
- <F onPress={ne}hitSlop={{top:6,bottom:6,left:4,right:4}}accessibilityRole="button"accessibilityLabel={n("common.expand","Expand")}style={i.actionBtnSquare}>
53
+ <E onPress={ie}hitSlop={{top:6,bottom:6,left:4,right:4}}accessibilityRole="button"accessibilityLabel={n("common.expand","Expand")}style={i.actionBtnSquare}>
54
54
  <Ue size={12}color={o.white}/>
55
- </F>
55
+ </E>
56
56
 
57
57
 
58
- <F onPress={Ee}hitSlop={{top:6,bottom:6,left:4,right:6}}accessibilityRole="button"accessibilityLabel={n("common.close","Close")}style={i.actionBtnSquare}>
58
+ <E onPress={Ee}hitSlop={{top:6,bottom:6,left:4,right:6}}accessibilityRole="button"accessibilityLabel={n("common.close","Close")}style={i.actionBtnSquare}>
59
59
  <Re size={10}color={o.white}/>
60
- </F>
60
+ </E>
61
61
  </S>
62
62
  </s.View>:<s.View style={[Ce.fabWrapper,{transform:a.getTranslateTransform()}]}{...ze.panHandlers}>
63
- <F testID="inspector.fab.launcher"style={{width:68,height:68,borderRadius:34,alignItems:"center",justifyContent:"center"}}onPress={()=>{N.current||(u("light"),P(!0))}}hitSlop={10}>
63
+ <E testID="inspector.fab.launcher"style={{width:68,height:68,borderRadius:34,alignItems:"center",justifyContent:"center"}}onPress={()=>{k.current||(u("light"),P(!0))}}hitSlop={10}>
64
64
  <s.View style={[Ce.fabPulseRing,{transform:[{scale:Ve}]}]}/>
65
- <Se size={68}customIcon={Q}shape="circle"/>
66
- </F>
65
+ <Se size={68}customIcon={K}shape="circle"/>
66
+ </E>
67
67
  </s.View>}
68
68
 
69
69
 
70
- {Me&&<s.View pointerEvents="none"style={[i.dismissTargetContainer,{opacity:z,transform:[{translateY:z.interpolate({inputRange:[0,1],outputRange:[30,0]})},{scale:Y}]}]}>
71
- <S style={[i.dismissTargetCircle,q&&i.dismissTargetCircleActive]}>
70
+ {Me&&<s.View pointerEvents="none"style={[i.dismissTargetContainer,{opacity:O,transform:[{translateY:O.interpolate({inputRange:[0,1],outputRange:[30,0]})},{scale:H}]}]}>
71
+ <S style={[i.dismissTargetCircle,_&&i.dismissTargetCircleActive]}>
72
72
  <Re size={18}color={o.white}/>
73
73
  </S>
74
- <I style={[i.dismissTargetLabel,q&&i.dismissTargetLabelActive]}>
75
- {q?n("common.releaseToHide","Release to hide"):n("common.dragToHide","Drag here to hide")}
74
+ <I style={[i.dismissTargetLabel,_&&i.dismissTargetLabelActive]}>
75
+ {_?n("common.releaseToHide","Release to hide"):n("common.dragToHide","Drag here to hide")}
76
76
  </I>
77
77
  </s.View>}
78
78
 
79
79
 
80
- <St item={ie}visible={!!ie}onClose={()=>D(null)}onDelete={async e=>{await V.deleteMedia(e.uri),v?.().catch(()=>{}),D(null)}}onConvertToGif={async e=>{const t=await V.convertToGif(e.uri,{fps:12,width:480});if(t){v?.().catch(()=>{});const r=K("anim","gif");D({id:r,type:"gif",format:"gif",uri:t.uri,filename:t.uri.split("/").pop()||r,sizeBytes:t.sizeBytes,timestamp:t.timestamp,durationMs:t.durationMs})}}}/>
81
- </>},i=We.create({dismissTargetContainer:{position:"absolute",bottom:b.OS==="ios"?42:26,left:0,right:0,alignItems:"center",justifyContent:"center",zIndex:999998},dismissTargetCircle:{width:54,height:54,borderRadius:27,backgroundColor:"rgba(23, 23, 37, 0.82)",borderWidth:1.5,borderColor:"rgba(255, 255, 255, 0.28)",alignItems:"center",justifyContent:"center",shadowColor:o.black,shadowOffset:{width:0,height:6},shadowOpacity:.4,shadowRadius:10,elevation:16},dismissTargetCircleActive:{backgroundColor:o.red600,borderColor:o.red300,shadowColor:o.red600,shadowOpacity:.65,shadowRadius:18,transform:[{scale:1.06}]},dismissTargetLabel:{marginTop:6,fontFamily:W.interSemiBold,fontSize:11,color:"rgba(255, 255, 255, 0.85)",textShadowColor:"rgba(0, 0, 0, 0.6)",textShadowOffset:{width:0,height:1},textShadowRadius:3},dismissTargetLabelActive:{color:o.red300,fontFamily:W.interBold},playerContainer:{position:"absolute",bottom:b.OS==="ios"?34:18,left:12,right:12,minHeight:58,flexDirection:"row",alignItems:"center",justifyContent:"space-between",borderRadius:16,borderWidth:1,borderColor:"rgba(255, 255, 255, 0.28)",paddingHorizontal:12,paddingVertical:7,gap:8,zIndex:99999,elevation:25,shadowColor:o.indigo600,shadowOffset:{width:0,height:8},shadowOpacity:.45,shadowRadius:14,overflow:"hidden"},gradientBg:{position:"absolute",top:0,left:0,right:0,bottom:0,borderRadius:16},playerShineClip:{position:"absolute",top:0,left:0,right:0,bottom:0,borderRadius:16,overflow:"hidden"},playerShineStreak:{position:"absolute",top:-60,width:75,height:200},brandSection:{flexDirection:"row",alignItems:"center",gap:9,flex:1,minWidth:0,paddingVertical:2,overflow:"hidden"},titleWrapper:{flex:1,minWidth:0,justifyContent:"center",gap:2},appTitle:{fontFamily:W.interBold,fontSize:13.5,color:o.white,letterSpacing:-.2},versionRow:{flexDirection:"row",alignItems:"center",gap:4,minWidth:0},versionChip:{flexDirection:"row",alignItems:"center",backgroundColor:`${o.white}1F`,borderRadius:5,paddingHorizontal:5,paddingVertical:1.5,gap:3,borderWidth:1,borderColor:`${o.white}2E`,flexShrink:1,minWidth:0},versionChipText:{fontFamily:W.interMedium,fontSize:8.5,color:`${o.white}EB`,letterSpacing:.1},actionsRow:{flexDirection:"row",alignItems:"center",gap:4.5,flexShrink:0},actionBtn:{flexDirection:"row",alignItems:"center",gap:4,backgroundColor:"rgba(255, 255, 255, 0.22)",paddingHorizontal:8,paddingVertical:5.5,borderRadius:7,borderWidth:1,borderColor:"rgba(255, 255, 255, 0.32)"},actionBtnSquare:{alignItems:"center",justifyContent:"center",width:27,height:27,backgroundColor:"rgba(255, 255, 255, 0.22)",borderRadius:7,borderWidth:1,borderColor:"rgba(255, 255, 255, 0.32)"},recordingBtnActive:{backgroundColor:"rgba(239, 68, 68, 0.32)",borderColor:o.red500},recordingDot:{width:6,height:6,borderRadius:3,backgroundColor:o.red500},actionText:{fontFamily:W.interSemiBold,fontSize:10.5,color:o.white}});export default vt;
80
+ <St item={oe}visible={!!oe}onClose={()=>v(null)}onDelete={async e=>{await V.deleteMedia(e.uri),h?.().catch(()=>{}),v(null)}}onConvertToGif={async e=>{const t=await V.convertToGif(e.uri,{fps:12,width:480});if(t){h?.().catch(()=>{});const r=J("anim","gif");v({id:r,type:"gif",format:"gif",uri:t.uri,filename:t.uri.split("/").pop()||r,sizeBytes:t.sizeBytes,timestamp:t.timestamp,durationMs:t.durationMs})}}}onSave={e=>{v(e),h?.().catch(()=>{})}}/>
81
+ </>},i=We.create({dismissTargetContainer:{position:"absolute",bottom:y.OS==="ios"?42:26,left:0,right:0,alignItems:"center",justifyContent:"center",zIndex:999998},dismissTargetCircle:{width:54,height:54,borderRadius:27,backgroundColor:"rgba(23, 23, 37, 0.82)",borderWidth:1.5,borderColor:"rgba(255, 255, 255, 0.28)",alignItems:"center",justifyContent:"center",shadowColor:o.black,shadowOffset:{width:0,height:6},shadowOpacity:.4,shadowRadius:10,elevation:16},dismissTargetCircleActive:{backgroundColor:o.red600,borderColor:o.red300,shadowColor:o.red600,shadowOpacity:.65,shadowRadius:18,transform:[{scale:1.06}]},dismissTargetLabel:{marginTop:6,fontFamily:F.interSemiBold,fontSize:11,color:"rgba(255, 255, 255, 0.85)",textShadowColor:"rgba(0, 0, 0, 0.6)",textShadowOffset:{width:0,height:1},textShadowRadius:3},dismissTargetLabelActive:{color:o.red300,fontFamily:F.interBold},playerContainer:{position:"absolute",bottom:y.OS==="ios"?34:18,left:12,right:12,minHeight:58,flexDirection:"row",alignItems:"center",justifyContent:"space-between",borderRadius:16,borderWidth:1,borderColor:"rgba(255, 255, 255, 0.28)",paddingHorizontal:12,paddingVertical:7,gap:8,zIndex:99999,elevation:25,shadowColor:o.indigo600,shadowOffset:{width:0,height:8},shadowOpacity:.45,shadowRadius:14,overflow:"hidden"},gradientBg:{position:"absolute",top:0,left:0,right:0,bottom:0,borderRadius:16},playerShineClip:{position:"absolute",top:0,left:0,right:0,bottom:0,borderRadius:16,overflow:"hidden"},playerShineStreak:{position:"absolute",top:-60,width:75,height:200},brandSection:{flexDirection:"row",alignItems:"center",gap:9,flex:1,minWidth:0,paddingVertical:2,overflow:"hidden"},titleWrapper:{flex:1,minWidth:0,justifyContent:"center",gap:2},appTitle:{fontFamily:F.interBold,fontSize:13.5,color:o.white,letterSpacing:-.2},versionRow:{flexDirection:"row",alignItems:"center",gap:4,minWidth:0},versionChip:{flexDirection:"row",alignItems:"center",backgroundColor:`${o.white}1F`,borderRadius:5,paddingHorizontal:5,paddingVertical:1.5,gap:3,borderWidth:1,borderColor:`${o.white}2E`,flexShrink:1,minWidth:0},versionChipText:{fontFamily:F.interMedium,fontSize:8.5,color:`${o.white}EB`,letterSpacing:.1},actionsRow:{flexDirection:"row",alignItems:"center",gap:4.5,flexShrink:0},actionBtn:{flexDirection:"row",alignItems:"center",gap:4,backgroundColor:"rgba(255, 255, 255, 0.22)",paddingHorizontal:8,paddingVertical:5.5,borderRadius:7,borderWidth:1,borderColor:"rgba(255, 255, 255, 0.32)"},actionBtnSquare:{alignItems:"center",justifyContent:"center",width:27,height:27,backgroundColor:"rgba(255, 255, 255, 0.22)",borderRadius:7,borderWidth:1,borderColor:"rgba(255, 255, 255, 0.32)"},recordingBtnActive:{backgroundColor:"rgba(239, 68, 68, 0.32)",borderColor:o.red500},recordingDot:{width:6,height:6,borderRadius:3,backgroundColor:o.red500},actionText:{fontFamily:F.interSemiBold,fontSize:10.5,color:o.white}});export default vt;