react-native-inapp-inspector 2.3.16 → 2.3.17

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 (346) hide show
  1. package/android/src/main/java/com/inappinspector/NetworkInspectorModule.kt +438 -7
  2. package/bin/cli.js +0 -0
  3. package/dist/commonjs/capture.d.ts +26 -0
  4. package/dist/commonjs/capture.js +32 -0
  5. package/dist/commonjs/components/AnalyticsEventCard.js +11 -11
  6. package/dist/commonjs/components/AnimatedEntrance.js +6 -70
  7. package/dist/commonjs/components/DomainHeader.js +3 -48
  8. package/dist/commonjs/components/EmptyState.js +2 -2
  9. package/dist/commonjs/components/HeadersSection.js +14 -34
  10. package/dist/commonjs/components/Inspector/AnalyticsTab.js +1 -2
  11. package/dist/commonjs/components/Inspector/ConsoleTab.js +1 -1
  12. package/dist/commonjs/components/Inspector/CrashTab.js +4 -2
  13. package/dist/commonjs/components/Inspector/DebuggingTab.js +2 -2
  14. package/dist/commonjs/components/Inspector/InspectorHeader.js +651 -313
  15. package/dist/commonjs/components/Inspector/MainScreen.js +25 -70
  16. package/dist/commonjs/components/Inspector/MediaGalleryTab.d.ts +2 -0
  17. package/dist/commonjs/components/Inspector/MediaGalleryTab.js +307 -0
  18. package/dist/commonjs/components/Inspector/MediaPreviewModal.d.ts +11 -0
  19. package/dist/commonjs/components/Inspector/MediaPreviewModal.js +393 -0
  20. package/dist/commonjs/components/Inspector/NetworkTab.js +183 -182
  21. package/dist/commonjs/components/Inspector/NpmUpdateToast.js +4 -9
  22. package/dist/commonjs/components/Inspector/ReduxTab.js +4 -2
  23. package/dist/commonjs/components/Inspector/SettingsPanel.js +245 -0
  24. package/dist/commonjs/components/Inspector/SkeletonPlaceholder.js +2 -2
  25. package/dist/commonjs/components/Inspector/StorageTab.js +3 -3
  26. package/dist/commonjs/components/Inspector/TabBar.js +5 -10
  27. package/dist/commonjs/components/Inspector/UpdateAvailableModal.js +5 -10
  28. package/dist/commonjs/components/JsonViewer.js +43 -20
  29. package/dist/commonjs/components/LogCard.js +5 -5
  30. package/dist/commonjs/components/MetaAccordion.js +78 -80
  31. package/dist/commonjs/components/NetworkIcons.d.ts +8 -0
  32. package/dist/commonjs/components/NetworkIcons.js +51 -1
  33. package/dist/commonjs/components/SectionHeader.js +3 -48
  34. package/dist/commonjs/components/SkeletonPlaceholder.js +2 -2
  35. package/dist/commonjs/components/SourcePageCard.js +43 -45
  36. package/dist/commonjs/components/Toast.js +4 -4
  37. package/dist/commonjs/components/TouchableScale.js +9 -65
  38. package/dist/commonjs/components/TreeNode.js +2 -14
  39. package/dist/commonjs/constants/telemetryConfig.d.ts +3 -3
  40. package/dist/commonjs/constants/telemetryConfig.js +3 -3
  41. package/dist/commonjs/constants/version.d.ts +1 -1
  42. package/dist/commonjs/constants/version.js +1 -1
  43. package/dist/commonjs/customHooks/useAccordion.d.ts +3 -8
  44. package/dist/commonjs/customHooks/useAccordion.js +6 -36
  45. package/dist/commonjs/helpers/index.d.ts +2 -1
  46. package/dist/commonjs/helpers/index.js +10 -1
  47. package/dist/commonjs/i18n/locales/en.json +66 -2
  48. package/dist/commonjs/index.d.ts +1 -0
  49. package/dist/commonjs/index.js +39 -22
  50. package/dist/commonjs/native/NativeInspector.d.ts +60 -0
  51. package/dist/commonjs/native/NativeInspector.js +109 -2
  52. package/dist/commonjs/native/NativeNetworkInspector.d.ts +8 -0
  53. package/dist/commonjs/styles/AppColors.d.ts +36 -0
  54. package/dist/commonjs/styles/AppColors.js +36 -0
  55. package/dist/commonjs/styles/index.d.ts +3 -1
  56. package/dist/commonjs/styles/index.js +3 -1
  57. package/dist/commonjs/types/enums.d.ts +1 -0
  58. package/dist/commonjs/types/enums.js +1 -0
  59. package/dist/commonjs/types/index.d.ts +2 -2
  60. package/dist/esm/capture.d.ts +26 -0
  61. package/dist/esm/capture.js +29 -0
  62. package/dist/esm/components/AnalyticsEventCard.js +11 -11
  63. package/dist/esm/components/AnimatedEntrance.js +4 -38
  64. package/dist/esm/components/DomainHeader.js +4 -16
  65. package/dist/esm/components/EmptyState.js +2 -2
  66. package/dist/esm/components/HeadersSection.js +16 -36
  67. package/dist/esm/components/Inspector/AnalyticsTab.js +2 -3
  68. package/dist/esm/components/Inspector/ConsoleTab.js +2 -2
  69. package/dist/esm/components/Inspector/CrashTab.js +5 -3
  70. package/dist/esm/components/Inspector/DebuggingTab.js +3 -3
  71. package/dist/esm/components/Inspector/InspectorHeader.js +654 -316
  72. package/dist/esm/components/Inspector/MainScreen.js +25 -70
  73. package/dist/esm/components/Inspector/MediaGalleryTab.d.ts +2 -0
  74. package/dist/esm/components/Inspector/MediaGalleryTab.js +267 -0
  75. package/dist/esm/components/Inspector/MediaPreviewModal.d.ts +11 -0
  76. package/dist/esm/components/Inspector/MediaPreviewModal.js +353 -0
  77. package/dist/esm/components/Inspector/NetworkTab.js +185 -184
  78. package/dist/esm/components/Inspector/NpmUpdateToast.js +5 -10
  79. package/dist/esm/components/Inspector/ReduxTab.js +5 -3
  80. package/dist/esm/components/Inspector/SettingsPanel.js +246 -1
  81. package/dist/esm/components/Inspector/SkeletonPlaceholder.js +2 -2
  82. package/dist/esm/components/Inspector/StorageTab.js +3 -3
  83. package/dist/esm/components/Inspector/TabBar.js +6 -11
  84. package/dist/esm/components/Inspector/UpdateAvailableModal.js +6 -11
  85. package/dist/esm/components/JsonViewer.js +43 -20
  86. package/dist/esm/components/LogCard.js +5 -5
  87. package/dist/esm/components/MetaAccordion.js +79 -81
  88. package/dist/esm/components/NetworkIcons.d.ts +8 -0
  89. package/dist/esm/components/NetworkIcons.js +42 -0
  90. package/dist/esm/components/SectionHeader.js +4 -16
  91. package/dist/esm/components/SkeletonPlaceholder.js +2 -2
  92. package/dist/esm/components/SourcePageCard.js +44 -46
  93. package/dist/esm/components/Toast.js +4 -4
  94. package/dist/esm/components/TouchableScale.js +7 -33
  95. package/dist/esm/components/TreeNode.js +4 -16
  96. package/dist/esm/constants/telemetryConfig.d.ts +3 -3
  97. package/dist/esm/constants/telemetryConfig.js +3 -3
  98. package/dist/esm/constants/version.d.ts +1 -1
  99. package/dist/esm/constants/version.js +1 -1
  100. package/dist/esm/customHooks/useAccordion.d.ts +3 -8
  101. package/dist/esm/customHooks/useAccordion.js +7 -37
  102. package/dist/esm/helpers/index.d.ts +2 -1
  103. package/dist/esm/helpers/index.js +8 -0
  104. package/dist/esm/i18n/locales/en.json +66 -2
  105. package/dist/esm/index.d.ts +1 -0
  106. package/dist/esm/index.js +36 -21
  107. package/dist/esm/native/NativeInspector.d.ts +60 -0
  108. package/dist/esm/native/NativeInspector.js +100 -1
  109. package/dist/esm/native/NativeNetworkInspector.d.ts +8 -0
  110. package/dist/esm/styles/AppColors.d.ts +36 -0
  111. package/dist/esm/styles/AppColors.js +36 -0
  112. package/dist/esm/styles/index.d.ts +3 -1
  113. package/dist/esm/styles/index.js +3 -1
  114. package/dist/esm/types/enums.d.ts +1 -0
  115. package/dist/esm/types/enums.js +1 -0
  116. package/dist/esm/types/index.d.ts +2 -2
  117. package/ios/NetworkInspectorModule.h +1 -0
  118. package/ios/NetworkInspectorModule.mm +736 -7
  119. package/package.json +10 -2
  120. package/react-native-inapp-inspector.podspec +1 -0
  121. package/src/capture.ts +101 -0
  122. package/src/components/AnalyticsEventCard.tsx +15 -13
  123. package/src/components/AnimatedEntrance.tsx +3 -47
  124. package/src/components/DomainHeader.tsx +4 -17
  125. package/src/components/EmptyState.tsx +2 -2
  126. package/src/components/HeadersSection.tsx +31 -56
  127. package/src/components/Inspector/AnalyticsTab.tsx +2 -2
  128. package/src/components/Inspector/ConsoleTab.tsx +2 -1
  129. package/src/components/Inspector/CrashTab.tsx +4 -2
  130. package/src/components/Inspector/DebuggingTab.tsx +2 -2
  131. package/src/components/Inspector/InspectorHeader.tsx +1215 -789
  132. package/src/components/Inspector/MainScreen.tsx +44 -85
  133. package/src/components/Inspector/MediaGalleryTab.tsx +355 -0
  134. package/src/components/Inspector/MediaPreviewModal.tsx +435 -0
  135. package/src/components/Inspector/NetworkTab.tsx +14 -15
  136. package/src/components/Inspector/NpmUpdateToast.tsx +4 -9
  137. package/src/components/Inspector/ReduxTab.tsx +5 -2
  138. package/src/components/Inspector/SettingsPanel.tsx +303 -0
  139. package/src/components/Inspector/SkeletonPlaceholder.tsx +2 -2
  140. package/src/components/Inspector/StorageTab.tsx +3 -3
  141. package/src/components/Inspector/TabBar.tsx +6 -12
  142. package/src/components/Inspector/UpdateAvailableModal.tsx +6 -10
  143. package/src/components/JsonViewer.tsx +101 -60
  144. package/src/components/LogCard.tsx +10 -8
  145. package/src/components/MetaAccordion.tsx +6 -6
  146. package/src/components/NetworkIcons.tsx +150 -0
  147. package/src/components/SectionHeader.tsx +4 -16
  148. package/src/components/SkeletonPlaceholder.tsx +2 -2
  149. package/src/components/SourcePageCard.tsx +57 -55
  150. package/src/components/Toast.tsx +4 -4
  151. package/src/components/TouchableScale.tsx +8 -38
  152. package/src/components/TreeNode.tsx +5 -20
  153. package/src/constants/telemetryConfig.ts +3 -5
  154. package/src/constants/version.ts +1 -1
  155. package/src/customHooks/useAccordion.tsx +10 -43
  156. package/src/helpers/index.ts +10 -1
  157. package/src/i18n/locales/en.json +69 -2
  158. package/src/index.tsx +51 -23
  159. package/src/native/NativeInspector.ts +186 -1
  160. package/src/native/NativeNetworkInspector.ts +9 -0
  161. package/src/styles/AppColors.ts +38 -0
  162. package/src/styles/index.ts +3 -1
  163. package/src/types/enums.ts +3 -0
  164. package/src/types/index.ts +2 -2
  165. package/android/.gradle/8.9/checksums/checksums.lock +0 -0
  166. package/android/.gradle/8.9/checksums/md5-checksums.bin +0 -0
  167. package/android/.gradle/8.9/checksums/sha1-checksums.bin +0 -0
  168. package/android/.gradle/8.9/dependencies-accessors/gc.properties +0 -0
  169. package/android/.gradle/8.9/executionHistory/executionHistory.lock +0 -0
  170. package/android/.gradle/8.9/fileChanges/last-build.bin +0 -0
  171. package/android/.gradle/8.9/fileHashes/fileHashes.lock +0 -0
  172. package/android/.gradle/8.9/gc.properties +0 -0
  173. package/android/.gradle/9.2.0/checksums/checksums.lock +0 -0
  174. package/android/.gradle/9.2.0/fileChanges/last-build.bin +0 -0
  175. package/android/.gradle/9.2.0/fileHashes/fileHashes.bin +0 -0
  176. package/android/.gradle/9.2.0/fileHashes/fileHashes.lock +0 -0
  177. package/android/.gradle/9.2.0/gc.properties +0 -0
  178. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  179. package/android/.gradle/buildOutputCleanup/cache.properties +0 -2
  180. package/android/.gradle/vcs-1/gc.properties +0 -0
  181. package/android/build/.transforms/6683d6eeaa3e1dfa689c3385111a0386/results.bin +0 -1
  182. package/android/build/.transforms/6683d6eeaa3e1dfa689c3385111a0386/transformed/classes/classes_dex/classes.dex +0 -0
  183. package/android/build/.transforms/9d2a3e5e0f0ea07cafb0c0bf290630ee/results.bin +0 -1
  184. package/android/build/.transforms/9d2a3e5e0f0ea07cafb0c0bf290630ee/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/BuildConfig.dex +0 -0
  185. package/android/build/.transforms/9d2a3e5e0f0ea07cafb0c0bf290630ee/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/InAppInspectorFloatingView$iconView$1.dex +0 -0
  186. package/android/build/.transforms/9d2a3e5e0f0ea07cafb0c0bf290630ee/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/InAppInspectorFloatingView.dex +0 -0
  187. package/android/build/.transforms/9d2a3e5e0f0ea07cafb0c0bf290630ee/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NativeNetworkInspectorSpec.dex +0 -0
  188. package/android/build/.transforms/9d2a3e5e0f0ea07cafb0c0bf290630ee/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorModule$Companion.dex +0 -0
  189. package/android/build/.transforms/9d2a3e5e0f0ea07cafb0c0bf290630ee/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorModule$frameCallback$1.dex +0 -0
  190. package/android/build/.transforms/9d2a3e5e0f0ea07cafb0c0bf290630ee/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorModule$shakeListener$1.dex +0 -0
  191. package/android/build/.transforms/9d2a3e5e0f0ea07cafb0c0bf290630ee/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorModule.dex +0 -0
  192. package/android/build/.transforms/9d2a3e5e0f0ea07cafb0c0bf290630ee/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorPackage.dex +0 -0
  193. package/android/build/.transforms/9d2a3e5e0f0ea07cafb0c0bf290630ee/transformed/bundleLibRuntimeToDirDebug/desugar_graph.bin +0 -0
  194. package/android/build/generated/source/buildConfig/debug/com/inappinspector/BuildConfig.java +0 -10
  195. package/android/build/generated/source/codegen/java/com/inappinspector/NativeNetworkInspectorSpec.java +0 -104
  196. package/android/build/generated/source/codegen/jni/CMakeLists.txt +0 -28
  197. package/android/build/generated/source/codegen/jni/RNInAppInspectorSpec-generated.cpp +0 -128
  198. package/android/build/generated/source/codegen/jni/RNInAppInspectorSpec.h +0 -31
  199. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/ComponentDescriptors.cpp +0 -22
  200. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/ComponentDescriptors.h +0 -24
  201. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/EventEmitters.cpp +0 -16
  202. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/EventEmitters.h +0 -17
  203. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/Props.cpp +0 -19
  204. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/Props.h +0 -18
  205. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/RNInAppInspectorSpecJSI.h +0 -177
  206. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/ShadowNodes.cpp +0 -17
  207. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/ShadowNodes.h +0 -23
  208. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/States.cpp +0 -16
  209. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/States.h +0 -20
  210. package/android/build/generated/source/codegen/schema.json +0 -1
  211. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml +0 -7
  212. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json +0 -18
  213. package/android/build/intermediates/aar_main_jar/debug/syncDebugLibJars/classes.jar +0 -0
  214. package/android/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties +0 -6
  215. package/android/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json +0 -1
  216. package/android/build/intermediates/annotations_typedef_file/debug/extractDebugAnnotations/typedefs.txt +0 -0
  217. package/android/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar +0 -0
  218. package/android/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar +0 -0
  219. package/android/build/intermediates/compile_symbol_list/debug/generateDebugRFile/R.txt +0 -0
  220. package/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +0 -1
  221. package/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml +0 -2
  222. package/android/build/intermediates/incremental/debug-mergeJavaRes/merge-state +0 -0
  223. package/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +0 -2
  224. package/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +0 -2
  225. package/android/build/intermediates/incremental/packageDebugAssets/merger.xml +0 -2
  226. package/android/build/intermediates/java_res/debug/processDebugJavaRes/out/META-INF/react-native-inapp-inspector_debug.kotlin_module +0 -0
  227. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/inappinspector/BuildConfig.class +0 -0
  228. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/inappinspector/NativeNetworkInspectorSpec.class +0 -0
  229. package/android/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt +0 -2
  230. package/android/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt +0 -7
  231. package/android/build/intermediates/merged_java_res/debug/mergeDebugJavaResource/feature-react-native-inapp-inspector.jar +0 -0
  232. package/android/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml +0 -7
  233. package/android/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json +0 -1
  234. package/android/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt +0 -1
  235. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/META-INF/react-native-inapp-inspector_debug.kotlin_module +0 -0
  236. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/BuildConfig.class +0 -0
  237. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/InAppInspectorFloatingView$iconView$1.class +0 -0
  238. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/InAppInspectorFloatingView.class +0 -0
  239. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NativeNetworkInspectorSpec.class +0 -0
  240. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorModule$Companion.class +0 -0
  241. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorModule$frameCallback$1.class +0 -0
  242. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorModule$shakeListener$1.class +0 -0
  243. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorModule.class +0 -0
  244. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorPackage.class +0 -0
  245. package/android/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar +0 -0
  246. package/android/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt +0 -1
  247. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab +0 -0
  248. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream +0 -0
  249. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len +0 -0
  250. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len +0 -0
  251. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at +0 -0
  252. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i +0 -0
  253. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i.len +0 -0
  254. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab +0 -0
  255. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream +0 -0
  256. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len +0 -0
  257. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len +0 -0
  258. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at +0 -0
  259. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i +0 -0
  260. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i.len +0 -0
  261. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab +0 -0
  262. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream +0 -0
  263. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len +0 -0
  264. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len +0 -0
  265. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at +0 -0
  266. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i +0 -0
  267. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len +0 -0
  268. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab +0 -0
  269. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream +0 -0
  270. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream.len +0 -0
  271. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.len +0 -0
  272. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.values.at +0 -0
  273. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i +0 -0
  274. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i.len +0 -0
  275. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab +0 -0
  276. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream +0 -0
  277. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len +0 -0
  278. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len +0 -0
  279. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at +0 -0
  280. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i +0 -0
  281. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len +0 -0
  282. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab +0 -0
  283. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream +0 -0
  284. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len +0 -0
  285. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len +0 -0
  286. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at +0 -0
  287. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i +0 -0
  288. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len +0 -0
  289. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab +0 -0
  290. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream +0 -0
  291. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len +0 -0
  292. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len +0 -0
  293. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at +0 -0
  294. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i +0 -0
  295. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len +0 -0
  296. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab +0 -0
  297. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream +0 -0
  298. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len +0 -0
  299. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len +0 -0
  300. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at +0 -0
  301. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i +0 -0
  302. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i.len +0 -0
  303. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab +0 -0
  304. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream +0 -0
  305. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len +0 -0
  306. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len +0 -0
  307. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at +0 -0
  308. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i +0 -0
  309. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i.len +0 -0
  310. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/counters.tab +0 -2
  311. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab +0 -0
  312. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream +0 -0
  313. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len +0 -0
  314. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len +0 -0
  315. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at +0 -0
  316. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i +0 -0
  317. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len +0 -0
  318. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab +0 -0
  319. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream +0 -0
  320. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len +0 -0
  321. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len +0 -0
  322. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at +0 -0
  323. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i +0 -0
  324. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len +0 -0
  325. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab +0 -0
  326. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream +0 -0
  327. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len +0 -0
  328. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.len +0 -0
  329. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at +0 -0
  330. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i +0 -0
  331. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len +0 -0
  332. package/android/build/kotlin/compileDebugKotlin/cacheable/last-build.bin +0 -0
  333. package/android/build/kotlin/compileDebugKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin +0 -0
  334. package/android/build/kotlin/compileDebugKotlin/local-state/build-history.bin +0 -0
  335. package/android/build/outputs/aar/react-native-inapp-inspector-debug.aar +0 -0
  336. package/android/build/outputs/logs/manifest-merger-debug-report.txt +0 -17
  337. package/android/build/reports/problems/problems-report.html +0 -659
  338. package/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
  339. package/android/build/tmp/kotlin-classes/debug/META-INF/react-native-inapp-inspector_debug.kotlin_module +0 -0
  340. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/InAppInspectorFloatingView$iconView$1.class +0 -0
  341. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/InAppInspectorFloatingView.class +0 -0
  342. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorModule$Companion.class +0 -0
  343. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorModule$frameCallback$1.class +0 -0
  344. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorModule$shakeListener$1.class +0 -0
  345. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorModule.class +0 -0
  346. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorPackage.class +0 -0
@@ -1,17 +1,12 @@
1
- import { Animated } from 'react-native';
2
- declare const useAccordion: (initialOpen?: boolean, maxBodyHeight?: number, duration?: number) => {
1
+ declare const useAccordion: (initialOpen?: boolean, _maxBodyHeight?: number, _duration?: number) => {
3
2
  isOpen: boolean;
4
3
  toggleOpen: () => void;
5
4
  forceOpen: (open: boolean) => void;
6
5
  chevronStyle: {
7
6
  transform: {
8
- rotate: Animated.AnimatedInterpolation<string | number>;
7
+ rotate: string;
9
8
  }[];
10
9
  };
11
- bodyStyle: {
12
- maxHeight: Animated.AnimatedInterpolation<string | number>;
13
- overflow: "hidden";
14
- opacity: Animated.AnimatedInterpolation<string | number>;
15
- };
10
+ bodyStyle: {};
16
11
  };
17
12
  export default useAccordion;
@@ -1,46 +1,16 @@
1
- import { useCallback, useRef, useState } from 'react';
2
- import { Animated } from 'react-native';
3
- const useAccordion = (initialOpen = false, maxBodyHeight = 1200, duration = 280) => {
1
+ import { useCallback, useState } from 'react';
2
+ const useAccordion = (initialOpen = false, _maxBodyHeight = 1200, _duration = 280) => {
4
3
  const [isOpen, setIsOpen] = useState(initialOpen);
5
- const animVal = useRef(new Animated.Value(initialOpen ? 1 : 0)).current;
6
4
  const toggleOpen = useCallback(() => {
7
- const next = !isOpen;
8
- setIsOpen(next);
9
- Animated.timing(animVal, {
10
- toValue: next ? 1 : 0,
11
- duration,
12
- useNativeDriver: false,
13
- }).start();
14
- }, [isOpen, animVal, duration]);
5
+ setIsOpen(prev => !prev);
6
+ }, []);
15
7
  const forceOpen = useCallback((open) => {
16
8
  setIsOpen(open);
17
- Animated.timing(animVal, {
18
- toValue: open ? 1 : 0,
19
- duration,
20
- useNativeDriver: false,
21
- }).start();
22
- }, [animVal, duration]);
9
+ }, []);
23
10
  const chevronStyle = {
24
- transform: [
25
- {
26
- rotate: animVal.interpolate({
27
- inputRange: [0, 1],
28
- outputRange: ['0deg', '180deg'],
29
- }),
30
- },
31
- ],
32
- };
33
- const bodyStyle = {
34
- maxHeight: animVal.interpolate({
35
- inputRange: [0, 1],
36
- outputRange: [0, maxBodyHeight],
37
- }),
38
- overflow: 'hidden',
39
- opacity: animVal.interpolate({
40
- inputRange: [0, 0.4, 1],
41
- outputRange: [0, 0.7, 1],
42
- }),
11
+ transform: [{ rotate: isOpen ? '180deg' : '0deg' }],
43
12
  };
13
+ const bodyStyle = {};
44
14
  return { isOpen, toggleOpen, forceOpen, chevronStyle, bodyStyle };
45
15
  };
46
16
  export default useAccordion;
@@ -9,7 +9,8 @@ export declare const formatTimestamp: (timestamp: number) => string;
9
9
  export declare const getStatusColor: (status: number | null) => string;
10
10
  export declare const getDurationColor: (duration: number | null) => string;
11
11
  export declare const getSize: (data: unknown) => string;
12
- export declare const copyToClipboard: (value: unknown, label: string) => void;
12
+ export declare const formatBytes: (bytes: number) => string;
13
+ export declare const copyToClipboard: (value: unknown, label?: string) => void;
13
14
  export declare const getPath: (url: string) => string;
14
15
  export declare const getBaseUrl: (url: string) => string;
15
16
  export declare const getCurlCommand: (log: NetworkLog) => string;
@@ -77,6 +77,14 @@ export const getSize = (data) => {
77
77
  return '—';
78
78
  }
79
79
  };
80
+ export const formatBytes = (bytes) => {
81
+ if (bytes === 0 || !bytes || isNaN(bytes))
82
+ return '0 B';
83
+ const k = 1024;
84
+ const sizes = ['B', 'KB', 'MB', 'GB'];
85
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
86
+ return `${parseFloat((bytes / Math.pow(k, i)).toFixed(1))} ${sizes[i] || 'B'}`;
87
+ };
80
88
  export const copyToClipboard = (value, label) => {
81
89
  const resolved = typeof value === 'function' ? value() : value;
82
90
  let textToCopy = '';
@@ -24,7 +24,19 @@
24
24
  "updateAvailableTitle": "Update Available",
25
25
  "updateAvailableMessage": "react-native-inapp-inspector v{{version}} is available on NPM (installed: v{{installed}}).",
26
26
  "clearEverythingTitle": "Clear Everything",
27
- "clearEverythingMessage": "This clears all tabs — APIs, Logs, Analytics and Redux timeline. Continue?",
27
+ "clearEverythingMessage": "This clears all tabs — APIs, Logs, Analytics, Redux timeline and Crash history. Continue?",
28
+ "photo": "Photo",
29
+ "record": "Record",
30
+ "rec": "REC",
31
+ "clear": "Clear",
32
+ "about": "About",
33
+ "screenshotCaptured": "📸 Screenshot captured & saved",
34
+ "screenshotFailed": "Failed to capture screenshot",
35
+ "screenshotError": "Error taking screenshot",
36
+ "recordingStarted": "🔴 Video recording started",
37
+ "recordingSaved": "🎥 Recording saved ({{duration}}s)",
38
+ "recordingError": "Recording error",
39
+ "recordingStartFailed": "Failed to start recording",
28
40
  "paramCount": "{{count}} param",
29
41
  "paramCount_plural": "{{count}} params",
30
42
  "sourceFirebase": "FB",
@@ -41,7 +53,8 @@
41
53
  "performance": "Performance",
42
54
  "crash": "Crash",
43
55
  "device": "Device",
44
- "storage": "Storage"
56
+ "storage": "Storage",
57
+ "media": "Media"
45
58
  },
46
59
  "settings": {
47
60
  "mainTitle": "Settings & Modules",
@@ -58,6 +71,7 @@
58
71
  "modulesAndTools": "Modules & Tools",
59
72
  "uiPreferences": "UI & Display",
60
73
  "ramLimits": "RAM & Limits",
74
+ "screenVideoCapture": "Screen & Video Capture",
61
75
  "zeroOverheadTitle": "Zero Background Overhead",
62
76
  "zeroOverheadDesc": "Check the modules you wish to activate. Disabled modules consume 0% CPU & memory until saved.",
63
77
  "unsavedPending": "● Unsaved selections pending",
@@ -161,6 +175,32 @@
161
175
  "clearHistoryDesc": "{{count}} crash logs stored",
162
176
  "historyCleared": "Crash logs cleared."
163
177
  },
178
+ "media": {
179
+ "title": "Screen & Video Capture",
180
+ "badge": "Native H.264 / GIF",
181
+ "desc": "Configure screenshot formats, quality, video FPS, audio narration, GIF recording & storage",
182
+ "screenshotCardTitle": "Screenshot Formats & Quality",
183
+ "screenshotCardDesc": "High-resolution full-window snapshot configuration",
184
+ "imageFormat": "Image Format",
185
+ "imageFormatDesc": "PNG (lossless), JPEG (compact), or WEBP",
186
+ "autoHide": "Auto-Hide Inspector Overlay",
187
+ "autoHideDesc": "Excludes inspector UI from screenshots",
188
+ "enabled": "ENABLED",
189
+ "videoCardTitle": "Video & GIF Recording",
190
+ "videoCardDesc": "H.264 MP4 recording & animated GIF export",
191
+ "audioMode": "Audio Narration Mode",
192
+ "audioModeDesc": "Muted, App Audio, or Voice Narration",
193
+ "frameRate": "Frame Rate",
194
+ "frameRateDesc": "Higher FPS yields smoother recordings",
195
+ "gifAutoOpt": "GIF Auto-Optimization",
196
+ "gifAutoOptDesc": "Converts video recordings for GitHub PRs & Slack",
197
+ "purgeAll": "Purge All Captured Media",
198
+ "purgeAllDesc": "Deletes all stored screenshots, videos, and GIFs",
199
+ "purgeCacheBtn": "Purge Cache",
200
+ "purgeConfirmTitle": "Purge Media Storage",
201
+ "purgeConfirmMessage": "This deletes all captured media files from local cache. Continue?",
202
+ "purgedSuccess": "Media storage purged"
203
+ },
164
204
  "general": {
165
205
  "darkMode": "Dark Mode Theme",
166
206
  "darkModeDescription": "Toggle sleek dark aesthetic or light contrast",
@@ -1054,5 +1094,29 @@
1054
1094
  "frameCopy": "Copy",
1055
1095
  "frameCopied": "Copied",
1056
1096
  "componentHierarchy": "Component Hierarchy"
1097
+ },
1098
+ "mediaGallery": {
1099
+ "all": "All ({{count}})",
1100
+ "photos": "Photos",
1101
+ "videos": "Videos",
1102
+ "gifs": "GIFs",
1103
+ "purge": "Purge ({{size}})",
1104
+ "purgeTitle": "Purge All Media",
1105
+ "purgeMessage": "This will permanently delete all {{count}} captured screenshots, videos, and GIFs ({{size}}). Continue?",
1106
+ "noMediaTitle": "No Captured Media",
1107
+ "noMediaDesc": "Use the Photo or Video Record button in the toolbar to capture whole-app screenshots, screen recordings, or GIFs.",
1108
+ "deleted": "Deleted media item",
1109
+ "allPurged": "All captured media purged",
1110
+ "converting": "Converting...",
1111
+ "convertToGif": "Convert to GIF",
1112
+ "convertedSuccess": "Converted to Animated GIF successfully!",
1113
+ "convertFailed": "Failed to convert to GIF",
1114
+ "share": "Share",
1115
+ "copyUri": "Copy URI",
1116
+ "uriCopied": "File URI copied to clipboard",
1117
+ "delete": "Delete",
1118
+ "deleteTitle": "Delete Media",
1119
+ "deleteMessage": "Are you sure you want to delete {{filename}}?",
1120
+ "shareUnavailable": "Sharing not available on this device"
1057
1121
  }
1058
1122
  }
@@ -27,4 +27,5 @@ export { AppFonts, setAppFonts, type AppFontConfig, } from './styles/AppFonts';
27
27
  export { AppColors, setAppColors, getThemeColors, updateAppColorsTheme, } from './styles/AppColors';
28
28
  export { t, i18n, useTranslation, setLanguage, addTranslations, setTranslations, I18nextProvider, } from './i18n';
29
29
  export { fetchRemoteConfigModuleStatus, isFirebaseRemoteConfigAvailable, } from './helpers/remoteConfig';
30
+ export { ScreenCapture, ScreenRecorder, type ScreenshotOptions, type ScreenshotResult, type RecordingOptions, type RecordingResult, type GifConversionOptions, type CapturedMediaItem, type ImageFormat, type AudioSource, type RecordingFormat, } from './capture';
30
31
  export { LIB_VERSION } from './constants/version';
package/dist/esm/index.js CHANGED
@@ -648,12 +648,12 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
648
648
  Animated.timing(clearAnim, {
649
649
  toValue: 1,
650
650
  duration: 320,
651
- useNativeDriver: true,
651
+ useNativeDriver: false,
652
652
  }),
653
653
  Animated.timing(clearAnim, {
654
654
  toValue: 0,
655
655
  duration: 0,
656
- useNativeDriver: true,
656
+ useNativeDriver: false,
657
657
  }),
658
658
  ]).start();
659
659
  handleClearAll();
@@ -664,49 +664,53 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
664
664
  }
665
665
  }, []);
666
666
  useEffect(() => {
667
+ if (visible)
668
+ return;
667
669
  const loop = Animated.loop(Animated.sequence([
668
670
  Animated.timing(pulseAnim, {
669
671
  toValue: 1.2,
670
672
  duration: 800,
671
- useNativeDriver: true,
673
+ useNativeDriver: false,
672
674
  }),
673
675
  Animated.timing(pulseAnim, {
674
676
  toValue: 1,
675
677
  duration: 800,
676
- useNativeDriver: true,
678
+ useNativeDriver: false,
677
679
  }),
678
680
  ]));
679
681
  loop.start();
680
682
  return () => loop.stop();
681
- }, [pulseAnim]);
683
+ }, [pulseAnim, visible]);
682
684
  useEffect(() => {
685
+ if (visible)
686
+ return;
683
687
  const loop = Animated.loop(Animated.sequence([
684
688
  Animated.timing(fabShineAnim, {
685
689
  toValue: 1,
686
690
  duration: 1100,
687
- useNativeDriver: true,
691
+ useNativeDriver: false,
688
692
  }),
689
693
  Animated.delay(1600),
690
694
  Animated.timing(fabShineAnim, {
691
695
  toValue: 0,
692
696
  duration: 0,
693
- useNativeDriver: true,
697
+ useNativeDriver: false,
694
698
  }),
695
699
  ]));
696
700
  loop.start();
697
701
  return () => loop.stop();
698
- }, [fabShineAnim]);
702
+ }, [fabShineAnim, visible]);
699
703
  useEffect(() => {
700
704
  const loop = Animated.loop(Animated.sequence([
701
705
  Animated.timing(activePulseAnim, {
702
706
  toValue: 1,
703
707
  duration: 1200,
704
- useNativeDriver: true,
708
+ useNativeDriver: false,
705
709
  }),
706
710
  Animated.timing(activePulseAnim, {
707
711
  toValue: 0.4,
708
712
  duration: 1200,
709
- useNativeDriver: true,
713
+ useNativeDriver: false,
710
714
  }),
711
715
  ]));
712
716
  loop.start();
@@ -717,12 +721,12 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
717
721
  Animated.timing(unreadPulseAnim, {
718
722
  toValue: 1.3,
719
723
  duration: 800,
720
- useNativeDriver: true,
724
+ useNativeDriver: false,
721
725
  }),
722
726
  Animated.timing(unreadPulseAnim, {
723
727
  toValue: 0.8,
724
728
  duration: 800,
725
- useNativeDriver: true,
729
+ useNativeDriver: false,
726
730
  }),
727
731
  ]));
728
732
  loop.start();
@@ -760,6 +764,7 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
760
764
  if (!useNativeFab)
761
765
  return;
762
766
  const unsubscribe = subscribeNativeFloatingButtonPress(() => {
767
+ hideNativeFloatingButton().catch(() => { });
763
768
  setVisible(true);
764
769
  });
765
770
  return () => {
@@ -770,7 +775,13 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
770
775
  if (!useNativeFab)
771
776
  return;
772
777
  const unsubscribe = subscribeNativeDeviceShake(() => {
773
- setVisible(prev => !prev);
778
+ setVisible(prev => {
779
+ const next = !prev;
780
+ if (next) {
781
+ hideNativeFloatingButton().catch(() => { });
782
+ }
783
+ return next;
784
+ });
774
785
  });
775
786
  return () => {
776
787
  unsubscribe();
@@ -1152,18 +1163,20 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
1152
1163
  }, []);
1153
1164
  const groupedData = useMemo(() => {
1154
1165
  const result = [];
1155
- const groups = [];
1166
+ const groupMap = new Map();
1156
1167
  for (let i = 0; i < filteredLogs.length; i++) {
1157
1168
  const log = filteredLogs[i];
1158
1169
  const routeInfo = logRouteMapRef.current.get(log.id) || log?.routeInfo;
1159
1170
  const pageName = getLogPageName(log, routeInfo);
1160
- if (groups.length === 0 ||
1161
- groups[groups.length - 1].pageName !== pageName) {
1162
- groups.push({ pageName, color: getDomainColor(pageName), logs: [] });
1171
+ let group = groupMap.get(pageName);
1172
+ if (!group) {
1173
+ group = { pageName, color: getDomainColor(pageName), logs: [] };
1174
+ groupMap.set(pageName, group);
1163
1175
  }
1164
- groups[groups.length - 1].logs.push(log);
1176
+ group.logs.push(log);
1165
1177
  }
1166
- groups.forEach((g, idx) => {
1178
+ let idx = 0;
1179
+ groupMap.forEach(g => {
1167
1180
  let success = 0;
1168
1181
  let failed = 0;
1169
1182
  let loading = 0;
@@ -1180,7 +1193,7 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
1180
1193
  const timestamp = g.logs[0]?.startTime || 0;
1181
1194
  result.push({
1182
1195
  type: 'header',
1183
- id: `hdr-${g.logs[0]?.id || 'empty'}-${g.pageName}`,
1196
+ id: `hdr-${g.pageName}`,
1184
1197
  pageName: g.pageName,
1185
1198
  color: g.color,
1186
1199
  stats: { success, failed, loading },
@@ -1189,6 +1202,7 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
1189
1202
  isCollapsed,
1190
1203
  isFirst: idx === 0,
1191
1204
  });
1205
+ idx++;
1192
1206
  if (!isCollapsed) {
1193
1207
  const displayLogs = g.logs.filter(l => {
1194
1208
  if (l.status == null)
@@ -1200,7 +1214,7 @@ const NetworkInspector = ({ enabled = true, storage, navigationRef, appIcon, env
1200
1214
  displayLogs.forEach((log, index) => {
1201
1215
  result.push({
1202
1216
  type: 'log',
1203
- id: log.id,
1217
+ id: `log-${log.id}`,
1204
1218
  log,
1205
1219
  isLast: index === displayLogs.length - 1,
1206
1220
  color: g.color,
@@ -1949,4 +1963,5 @@ export { AppFonts, setAppFonts, } from './styles/AppFonts';
1949
1963
  export { AppColors, setAppColors, getThemeColors, updateAppColorsTheme, } from './styles/AppColors';
1950
1964
  export { t, i18n, useTranslation, setLanguage, addTranslations, setTranslations, I18nextProvider, } from './i18n';
1951
1965
  export { fetchRemoteConfigModuleStatus, isFirebaseRemoteConfigAvailable, } from './helpers/remoteConfig';
1966
+ export { ScreenCapture, ScreenRecorder, } from './capture';
1952
1967
  export { LIB_VERSION } from './constants/version';
@@ -74,3 +74,63 @@ export interface NativeCachedPageResult<T = any> {
74
74
  items: T[];
75
75
  }
76
76
  export declare const fetchNativeCachedPage: <T = any>(pageKey: "apis" | "logs" | "analytics" | "crash", offset?: number, limit?: number, query?: string) => Promise<NativeCachedPageResult<T> | null>;
77
+ export interface ScreenshotOptions {
78
+ format?: 'png' | 'jpeg' | 'webp';
79
+ quality?: number;
80
+ scale?: number;
81
+ hideInspector?: boolean;
82
+ includeBase64?: boolean;
83
+ }
84
+ export interface ScreenshotResult {
85
+ uri: string;
86
+ format: 'png' | 'jpeg' | 'webp';
87
+ width: number;
88
+ height: number;
89
+ sizeBytes: number;
90
+ timestamp: number;
91
+ base64?: string;
92
+ }
93
+ export interface RecordingOptions {
94
+ format?: 'mp4' | 'gif';
95
+ audioSource?: 'none' | 'app' | 'mic' | 'mixed';
96
+ fps?: number;
97
+ bitrate?: number;
98
+ maxDurationSeconds?: number;
99
+ hideInspector?: boolean;
100
+ }
101
+ export interface RecordingResult {
102
+ uri: string;
103
+ format: 'mp4' | 'gif';
104
+ durationMs: number;
105
+ hasAudio: boolean;
106
+ width: number;
107
+ height: number;
108
+ sizeBytes: number;
109
+ timestamp: number;
110
+ }
111
+ export interface GifConversionOptions {
112
+ fps?: number;
113
+ width?: number;
114
+ maxDurationSeconds?: number;
115
+ }
116
+ export interface CapturedMediaItem {
117
+ id: string;
118
+ type: 'image' | 'video' | 'gif';
119
+ format: string;
120
+ uri: string;
121
+ filename: string;
122
+ sizeBytes: number;
123
+ timestamp: number;
124
+ durationMs?: number;
125
+ hasAudio?: boolean;
126
+ width?: number;
127
+ height?: number;
128
+ }
129
+ export declare const takeNativeScreenshot: (options?: ScreenshotOptions) => Promise<ScreenshotResult | null>;
130
+ export declare const startNativeVideoRecording: (options?: RecordingOptions) => Promise<boolean>;
131
+ export declare const stopNativeVideoRecording: () => Promise<RecordingResult | null>;
132
+ export declare const isNativeRecordingActive: () => Promise<boolean>;
133
+ export declare const convertNativeVideoToGif: (videoUri: string, options?: GifConversionOptions) => Promise<RecordingResult | null>;
134
+ export declare const fetchCapturedMediaList: () => Promise<CapturedMediaItem[]>;
135
+ export declare const deleteCapturedMediaFile: (uri: string) => Promise<boolean>;
136
+ export declare const clearAllCapturedMediaFiles: () => Promise<boolean>;
@@ -32,7 +32,7 @@ export const enableNativeCrashProtection = async (options) => {
32
32
  }
33
33
  try {
34
34
  const result = await NativeModule.enableNativeCrashProtection();
35
- if (options?.showFloatingButton !== false) {
35
+ if (options?.showFloatingButton === true) {
36
36
  await showNativeFloatingButton();
37
37
  }
38
38
  return !!result;
@@ -269,3 +269,102 @@ export const fetchNativeCachedPage = async (pageKey, offset = 0, limit = 50, que
269
269
  return null;
270
270
  }
271
271
  };
272
+ export const takeNativeScreenshot = async (options) => {
273
+ if (!NativeModule || !NativeModule.takeScreenshot) {
274
+ return null;
275
+ }
276
+ try {
277
+ const result = await NativeModule.takeScreenshot(options || {});
278
+ return result;
279
+ }
280
+ catch {
281
+ return null;
282
+ }
283
+ };
284
+ export const startNativeVideoRecording = async (options) => {
285
+ if (!NativeModule || !NativeModule.startVideoRecording) {
286
+ return false;
287
+ }
288
+ try {
289
+ const result = await NativeModule.startVideoRecording(options || {});
290
+ return !!result;
291
+ }
292
+ catch {
293
+ return false;
294
+ }
295
+ };
296
+ export const stopNativeVideoRecording = async () => {
297
+ if (!NativeModule || !NativeModule.stopVideoRecording) {
298
+ return null;
299
+ }
300
+ try {
301
+ const result = await NativeModule.stopVideoRecording();
302
+ return result;
303
+ }
304
+ catch {
305
+ return null;
306
+ }
307
+ };
308
+ export const isNativeRecordingActive = async () => {
309
+ if (!NativeModule || !NativeModule.isRecording) {
310
+ return false;
311
+ }
312
+ try {
313
+ const result = await NativeModule.isRecording();
314
+ return !!result;
315
+ }
316
+ catch {
317
+ return false;
318
+ }
319
+ };
320
+ export const convertNativeVideoToGif = async (videoUri, options) => {
321
+ if (!NativeModule || !NativeModule.convertToGif) {
322
+ return null;
323
+ }
324
+ try {
325
+ const result = await NativeModule.convertToGif(videoUri, options || {});
326
+ return result;
327
+ }
328
+ catch {
329
+ return null;
330
+ }
331
+ };
332
+ export const fetchCapturedMediaList = async () => {
333
+ if (!NativeModule || !NativeModule.getCapturedMedia) {
334
+ return [];
335
+ }
336
+ try {
337
+ const jsonStr = await NativeModule.getCapturedMedia();
338
+ if (!jsonStr)
339
+ return [];
340
+ const parsed = JSON.parse(jsonStr);
341
+ return Array.isArray(parsed) ? parsed : [];
342
+ }
343
+ catch {
344
+ return [];
345
+ }
346
+ };
347
+ export const deleteCapturedMediaFile = async (uri) => {
348
+ if (!NativeModule || !NativeModule.deleteCapturedMedia) {
349
+ return false;
350
+ }
351
+ try {
352
+ const result = await NativeModule.deleteCapturedMedia(uri);
353
+ return !!result;
354
+ }
355
+ catch {
356
+ return false;
357
+ }
358
+ };
359
+ export const clearAllCapturedMediaFiles = async () => {
360
+ if (!NativeModule || !NativeModule.clearAllCapturedMedia) {
361
+ return false;
362
+ }
363
+ try {
364
+ const result = await NativeModule.clearAllCapturedMedia();
365
+ return !!result;
366
+ }
367
+ catch {
368
+ return false;
369
+ }
370
+ };
@@ -15,6 +15,14 @@ export interface Spec extends TurboModule {
15
15
  getNativeSystemMetrics(): Promise<Object>;
16
16
  pushNativeLogRecord(pageKey: string, jsonPayload: string): Promise<boolean>;
17
17
  checkFloatingButtonPress(): Promise<boolean>;
18
+ takeScreenshot(options: Object): Promise<Object>;
19
+ startVideoRecording(options: Object): Promise<boolean>;
20
+ stopVideoRecording(): Promise<Object>;
21
+ isRecording(): Promise<boolean>;
22
+ convertToGif(videoUri: string, options: Object): Promise<Object>;
23
+ getCapturedMedia(): Promise<string>;
24
+ deleteCapturedMedia(uri: string): Promise<boolean>;
25
+ clearAllCapturedMedia(): Promise<boolean>;
18
26
  addListener(eventName: string): void;
19
27
  removeListeners(count: number): void;
20
28
  }
@@ -168,6 +168,24 @@ declare const LightColors: {
168
168
  skySoftBg: string;
169
169
  skySoftBorder: string;
170
170
  skySoftText: string;
171
+ warningAmber: string;
172
+ npmRedLight: string;
173
+ red300: string;
174
+ overlayDark: string;
175
+ headerGlassDark: string;
176
+ badgeGlassDark: string;
177
+ borderGlassLight: string;
178
+ borderGlassMedium: string;
179
+ whiteAlpha06: string;
180
+ whiteAlpha08: string;
181
+ whiteAlpha10: string;
182
+ whiteAlpha12: string;
183
+ whiteAlpha15: string;
184
+ whiteAlpha20: string;
185
+ whiteAlpha24: string;
186
+ whiteAlpha30: string;
187
+ whiteAlpha33: string;
188
+ whiteAlpha60: string;
171
189
  domainColors: string[];
172
190
  };
173
191
  export declare const getThemeColors: (isDark: boolean) => {
@@ -340,6 +358,24 @@ export declare const getThemeColors: (isDark: boolean) => {
340
358
  skySoftBg: string;
341
359
  skySoftBorder: string;
342
360
  skySoftText: string;
361
+ warningAmber: string;
362
+ npmRedLight: string;
363
+ red300: string;
364
+ overlayDark: string;
365
+ headerGlassDark: string;
366
+ badgeGlassDark: string;
367
+ borderGlassLight: string;
368
+ borderGlassMedium: string;
369
+ whiteAlpha06: string;
370
+ whiteAlpha08: string;
371
+ whiteAlpha10: string;
372
+ whiteAlpha12: string;
373
+ whiteAlpha15: string;
374
+ whiteAlpha20: string;
375
+ whiteAlpha24: string;
376
+ whiteAlpha30: string;
377
+ whiteAlpha33: string;
378
+ whiteAlpha60: string;
343
379
  domainColors: string[];
344
380
  };
345
381
  export declare const AppColors: typeof LightColors;
@@ -168,6 +168,24 @@ const LightColors = {
168
168
  skySoftBg: '#E0F2FE',
169
169
  skySoftBorder: '#BAE6FD',
170
170
  skySoftText: '#0284C7',
171
+ warningAmber: '#F59E0B',
172
+ npmRedLight: '#FF6B6B',
173
+ red300: '#FCA5A5',
174
+ overlayDark: 'rgba(8, 12, 22, 0.95)',
175
+ headerGlassDark: 'rgba(15, 23, 42, 0.9)',
176
+ badgeGlassDark: 'rgba(15, 23, 42, 0.85)',
177
+ borderGlassLight: 'rgba(255, 255, 255, 0.08)',
178
+ borderGlassMedium: 'rgba(255, 255, 255, 0.15)',
179
+ whiteAlpha06: 'rgba(255, 255, 255, 0.06)',
180
+ whiteAlpha08: 'rgba(255, 255, 255, 0.08)',
181
+ whiteAlpha10: 'rgba(255, 255, 255, 0.1)',
182
+ whiteAlpha12: 'rgba(255, 255, 255, 0.12)',
183
+ whiteAlpha15: 'rgba(255, 255, 255, 0.15)',
184
+ whiteAlpha20: 'rgba(255, 255, 255, 0.2)',
185
+ whiteAlpha24: 'rgba(255, 255, 255, 0.24)',
186
+ whiteAlpha30: 'rgba(255, 255, 255, 0.3)',
187
+ whiteAlpha33: 'rgba(255, 255, 255, 0.33)',
188
+ whiteAlpha60: 'rgba(255, 255, 255, 0.6)',
171
189
  domainColors: [
172
190
  '#5C2D91',
173
191
  '#9B2677',
@@ -257,6 +275,24 @@ const DarkColors = {
257
275
  skySoftBg: '#082F4966',
258
276
  skySoftBorder: '#0284C788',
259
277
  skySoftText: '#38BDF8',
278
+ warningAmber: '#F59E0B',
279
+ npmRedLight: '#FF6B6B',
280
+ red300: '#FCA5A5',
281
+ overlayDark: 'rgba(8, 12, 22, 0.95)',
282
+ headerGlassDark: 'rgba(15, 23, 42, 0.9)',
283
+ badgeGlassDark: 'rgba(15, 23, 42, 0.85)',
284
+ borderGlassLight: 'rgba(255, 255, 255, 0.08)',
285
+ borderGlassMedium: 'rgba(255, 255, 255, 0.15)',
286
+ whiteAlpha06: 'rgba(255, 255, 255, 0.06)',
287
+ whiteAlpha08: 'rgba(255, 255, 255, 0.08)',
288
+ whiteAlpha10: 'rgba(255, 255, 255, 0.1)',
289
+ whiteAlpha12: 'rgba(255, 255, 255, 0.12)',
290
+ whiteAlpha15: 'rgba(255, 255, 255, 0.15)',
291
+ whiteAlpha20: 'rgba(255, 255, 255, 0.2)',
292
+ whiteAlpha24: 'rgba(255, 255, 255, 0.24)',
293
+ whiteAlpha30: 'rgba(255, 255, 255, 0.3)',
294
+ whiteAlpha33: 'rgba(255, 255, 255, 0.33)',
295
+ whiteAlpha60: 'rgba(255, 255, 255, 0.6)',
260
296
  green600: '#16A34A',
261
297
  green700: '#15803D',
262
298
  green800: '#166534',