react-native-inapp-inspector 2.5.12 → 2.5.14

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 (392) hide show
  1. package/README.md +0 -8
  2. package/android/.gradle/8.9/checksums/checksums.lock +0 -0
  3. package/android/.gradle/8.9/dependencies-accessors/gc.properties +0 -0
  4. package/android/.gradle/8.9/executionHistory/executionHistory.lock +0 -0
  5. package/android/.gradle/8.9/fileChanges/last-build.bin +0 -0
  6. package/android/.gradle/8.9/fileHashes/fileHashes.lock +0 -0
  7. package/android/.gradle/8.9/gc.properties +0 -0
  8. package/android/.gradle/9.2.0/checksums/checksums.lock +0 -0
  9. package/android/.gradle/9.2.0/fileChanges/last-build.bin +0 -0
  10. package/android/.gradle/9.2.0/fileHashes/fileHashes.bin +0 -0
  11. package/android/.gradle/9.2.0/fileHashes/fileHashes.lock +0 -0
  12. package/android/.gradle/9.2.0/gc.properties +0 -0
  13. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  14. package/android/.gradle/buildOutputCleanup/cache.properties +2 -0
  15. package/android/.gradle/vcs-1/gc.properties +0 -0
  16. package/android/.settings/org.eclipse.buildship.core.prefs +13 -0
  17. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/results.bin +1 -0
  18. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/BuildConfig.dex +0 -0
  19. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/InAppInspectorFloatingView$iconView$1.dex +0 -0
  20. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/InAppInspectorFloatingView.dex +0 -0
  21. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NativeNetworkInspectorSpec.dex +0 -0
  22. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorModule$Companion.dex +0 -0
  23. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorModule$activityEventListener$1.dex +0 -0
  24. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorModule$frameCallback$1.dex +0 -0
  25. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorModule$getCapturedMedia$lambda$62$$inlined$sortedByDescending$1.dex +0 -0
  26. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorModule$shakeListener$1.dex +0 -0
  27. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorModule$startVideoRecording$2$1.dex +0 -0
  28. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorModule.dex +0 -0
  29. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorPackage.dex +0 -0
  30. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/desugar_graph.bin +0 -0
  31. package/android/build/.transforms/c93e459e24d856bde563ebb048265732/results.bin +1 -0
  32. package/android/build/.transforms/c93e459e24d856bde563ebb048265732/transformed/classes/classes_dex/classes.dex +0 -0
  33. package/android/build/generated/source/buildConfig/debug/com/inappinspector/BuildConfig.java +10 -0
  34. package/android/build/generated/source/codegen/java/com/inappinspector/NativeNetworkInspectorSpec.java +176 -0
  35. package/android/build/generated/source/codegen/jni/CMakeLists.txt +28 -0
  36. package/android/build/generated/source/codegen/jni/RNInAppInspectorSpec-generated.cpp +236 -0
  37. package/android/build/generated/source/codegen/jni/RNInAppInspectorSpec.h +31 -0
  38. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/ComponentDescriptors.cpp +22 -0
  39. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/ComponentDescriptors.h +24 -0
  40. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/EventEmitters.cpp +16 -0
  41. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/EventEmitters.h +17 -0
  42. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/Props.cpp +19 -0
  43. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/Props.h +18 -0
  44. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/RNInAppInspectorSpecJSI.h +337 -0
  45. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/ShadowNodes.cpp +17 -0
  46. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/ShadowNodes.h +23 -0
  47. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/States.cpp +16 -0
  48. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/States.h +20 -0
  49. package/android/build/generated/source/codegen/schema.json +1 -0
  50. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml +19 -0
  51. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json +18 -0
  52. package/android/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties +6 -0
  53. package/android/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json +1 -0
  54. package/android/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar +0 -0
  55. package/android/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar +0 -0
  56. package/android/build/intermediates/compile_symbol_list/debug/generateDebugRFile/R.txt +1 -0
  57. package/android/build/intermediates/compiled_local_resources/debug/compileDebugLibraryResources/out/xml_inappinspector_file_paths.xml.flat +0 -0
  58. package/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +2 -0
  59. package/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml +2 -0
  60. package/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +2 -0
  61. package/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +2 -0
  62. package/android/build/intermediates/incremental/packageDebugAssets/merger.xml +2 -0
  63. package/android/build/intermediates/java_res/debug/processDebugJavaRes/out/META-INF/react-native-inapp-inspector_debug.kotlin_module +0 -0
  64. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/inappinspector/BuildConfig.class +0 -0
  65. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/inappinspector/NativeNetworkInspectorSpec.class +0 -0
  66. package/android/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt +3 -0
  67. package/android/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt +28 -0
  68. package/android/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml +19 -0
  69. package/android/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json +1 -0
  70. package/android/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt +1 -0
  71. package/android/build/intermediates/packaged_res/debug/packageDebugResources/xml/inappinspector_file_paths.xml +7 -0
  72. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/META-INF/react-native-inapp-inspector_debug.kotlin_module +0 -0
  73. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/BuildConfig.class +0 -0
  74. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/InAppInspectorFloatingView$iconView$1.class +0 -0
  75. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/InAppInspectorFloatingView.class +0 -0
  76. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NativeNetworkInspectorSpec.class +0 -0
  77. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorModule$Companion.class +0 -0
  78. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorModule$activityEventListener$1.class +0 -0
  79. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorModule$frameCallback$1.class +0 -0
  80. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorModule$getCapturedMedia$lambda$62$$inlined$sortedByDescending$1.class +0 -0
  81. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorModule$shakeListener$1.class +0 -0
  82. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorModule$startVideoRecording$2$1.class +0 -0
  83. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorModule.class +0 -0
  84. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorPackage.class +0 -0
  85. package/android/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar +0 -0
  86. package/android/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt +2 -0
  87. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab +0 -0
  88. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream +0 -0
  89. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len +0 -0
  90. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len +0 -0
  91. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at +0 -0
  92. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i +0 -0
  93. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i.len +0 -0
  94. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab +0 -0
  95. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream +0 -0
  96. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len +0 -0
  97. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len +0 -0
  98. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at +0 -0
  99. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i +0 -0
  100. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i.len +0 -0
  101. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab +0 -0
  102. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream +0 -0
  103. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len +0 -0
  104. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len +0 -0
  105. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at +0 -0
  106. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i +0 -0
  107. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len +0 -0
  108. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab +0 -0
  109. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream +0 -0
  110. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream.len +0 -0
  111. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.len +0 -0
  112. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.values.at +0 -0
  113. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i +0 -0
  114. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i.len +0 -0
  115. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab +0 -0
  116. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream +0 -0
  117. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len +0 -0
  118. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len +0 -0
  119. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at +0 -0
  120. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i +0 -0
  121. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len +0 -0
  122. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab +0 -0
  123. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream +0 -0
  124. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len +0 -0
  125. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len +0 -0
  126. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at +0 -0
  127. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i +0 -0
  128. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len +0 -0
  129. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab +0 -0
  130. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream +0 -0
  131. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len +0 -0
  132. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len +0 -0
  133. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at +0 -0
  134. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i +0 -0
  135. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len +0 -0
  136. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab +0 -0
  137. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream +0 -0
  138. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len +0 -0
  139. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len +0 -0
  140. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at +0 -0
  141. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i +0 -0
  142. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i.len +0 -0
  143. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab +0 -0
  144. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream +0 -0
  145. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len +0 -0
  146. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len +0 -0
  147. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at +0 -0
  148. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i +0 -0
  149. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i.len +0 -0
  150. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/counters.tab +2 -0
  151. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab +0 -0
  152. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream +0 -0
  153. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len +0 -0
  154. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len +0 -0
  155. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at +0 -0
  156. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i +0 -0
  157. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len +0 -0
  158. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab +0 -0
  159. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream +0 -0
  160. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len +0 -0
  161. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len +0 -0
  162. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at +0 -0
  163. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i +0 -0
  164. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len +0 -0
  165. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab +0 -0
  166. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream +0 -0
  167. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len +0 -0
  168. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.len +0 -0
  169. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at +0 -0
  170. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i +0 -0
  171. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len +0 -0
  172. package/android/build/kotlin/compileDebugKotlin/cacheable/last-build.bin +0 -0
  173. package/android/build/kotlin/compileDebugKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin +0 -0
  174. package/android/build/kotlin/compileDebugKotlin/local-state/build-history.bin +0 -0
  175. package/android/build/outputs/logs/manifest-merger-debug-report.txt +35 -0
  176. package/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
  177. package/android/build/tmp/kotlin-classes/debug/META-INF/react-native-inapp-inspector_debug.kotlin_module +0 -0
  178. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/InAppInspectorFloatingView$iconView$1.class +0 -0
  179. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/InAppInspectorFloatingView.class +0 -0
  180. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorModule$Companion.class +0 -0
  181. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorModule$activityEventListener$1.class +0 -0
  182. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorModule$frameCallback$1.class +0 -0
  183. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorModule$getCapturedMedia$lambda$62$$inlined$sortedByDescending$1.class +0 -0
  184. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorModule$shakeListener$1.class +0 -0
  185. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorModule$startVideoRecording$2$1.class +0 -0
  186. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorModule.class +0 -0
  187. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorPackage.class +0 -0
  188. package/android/src/main/AndroidManifest.xml +11 -0
  189. package/android/src/main/java/com/inappinspector/NetworkInspectorModule.kt +492 -45
  190. package/android/src/main/res/xml/inappinspector_file_paths.xml +7 -0
  191. package/dist/commonjs/components/Inspector/AnalyticsFilterModal.js +47 -49
  192. package/dist/commonjs/components/Inspector/BoxModelVisualizer.d.ts +8 -0
  193. package/dist/commonjs/components/Inspector/BoxModelVisualizer.js +76 -0
  194. package/dist/commonjs/components/Inspector/ConsoleExportModal.js +51 -51
  195. package/dist/commonjs/components/Inspector/ConsoleTab.js +7 -7
  196. package/dist/commonjs/components/Inspector/CrashTab.js +17 -17
  197. package/dist/commonjs/components/Inspector/DebuggingTab.js +37 -37
  198. package/dist/commonjs/components/Inspector/DeviceInfoTab.js +2 -2
  199. package/dist/commonjs/components/Inspector/FabLauncher.js +4 -4
  200. package/dist/commonjs/components/Inspector/FloatingCaptureWidget.js +2 -2
  201. package/dist/commonjs/components/Inspector/InspectorHeader.js +36 -36
  202. package/dist/commonjs/components/Inspector/MainScreen.js +38 -75
  203. package/dist/commonjs/components/Inspector/MediaGalleryTab.js +10 -10
  204. package/dist/commonjs/components/Inspector/MediaPreviewModal.d.ts +1 -0
  205. package/dist/commonjs/components/Inspector/MediaPreviewModal.js +222 -222
  206. package/dist/commonjs/components/Inspector/NetworkExportModal.d.ts +10 -0
  207. package/dist/commonjs/components/Inspector/NetworkExportModal.js +333 -0
  208. package/dist/commonjs/components/Inspector/NetworkTab.js +60 -53
  209. package/dist/commonjs/components/Inspector/NpmStarPrompt.js +11 -12
  210. package/dist/commonjs/components/Inspector/ReduxDetail.js +17 -19
  211. package/dist/commonjs/components/Inspector/ReduxTab.js +5 -5
  212. package/dist/commonjs/components/Inspector/SecondaryTelemetryStrip.d.ts +1 -0
  213. package/dist/commonjs/components/Inspector/SecondaryTelemetryStrip.js +17 -16
  214. package/dist/commonjs/components/Inspector/SettingsPanel.js +43 -47
  215. package/dist/commonjs/components/Inspector/SkeletonPlaceholder.d.ts +3 -0
  216. package/dist/commonjs/components/Inspector/SkeletonPlaceholder.js +34 -3
  217. package/dist/commonjs/components/Inspector/SocketCard.js +2 -2
  218. package/dist/commonjs/components/Inspector/SupportPage.js +5 -5
  219. package/dist/commonjs/components/Inspector/TabBar.js +9 -15
  220. package/dist/commonjs/components/Inspector/UiA11yAuditPanel.d.ts +7 -0
  221. package/dist/commonjs/components/Inspector/UiA11yAuditPanel.js +97 -0
  222. package/dist/commonjs/components/Inspector/UiInspectorDetail.d.ts +2 -0
  223. package/dist/commonjs/components/Inspector/UiInspectorDetail.js +485 -0
  224. package/dist/commonjs/components/Inspector/UiInspectorOverlay.d.ts +2 -0
  225. package/dist/commonjs/components/Inspector/UiInspectorOverlay.js +199 -0
  226. package/dist/commonjs/components/Inspector/UiInspectorTab.d.ts +2 -0
  227. package/dist/commonjs/components/Inspector/UiInspectorTab.js +117 -0
  228. package/dist/commonjs/components/Inspector/UiLiveStyleTweaker.d.ts +10 -0
  229. package/dist/commonjs/components/Inspector/UiLiveStyleTweaker.js +148 -0
  230. package/dist/commonjs/components/Inspector/index.d.ts +28 -0
  231. package/dist/commonjs/components/Inspector/index.js +1 -0
  232. package/dist/commonjs/components/LogCard.js +12 -10
  233. package/dist/commonjs/components/SkeletonPlaceholder.d.ts +3 -0
  234. package/dist/commonjs/components/SkeletonPlaceholder.js +34 -3
  235. package/dist/commonjs/constants/index.js +1 -1
  236. package/dist/commonjs/constants/telemetryConfig.d.ts +3 -3
  237. package/dist/commonjs/constants/telemetryConfig.js +1 -1
  238. package/dist/commonjs/constants/version.d.ts +1 -1
  239. package/dist/commonjs/constants/version.js +1 -1
  240. package/dist/commonjs/customHooks/crashHandler.d.ts +1 -1
  241. package/dist/commonjs/customHooks/crashHandler.js +6 -6
  242. package/dist/commonjs/customHooks/uiInspectorManager.d.ts +22 -0
  243. package/dist/commonjs/customHooks/uiInspectorManager.js +1 -0
  244. package/dist/commonjs/helpers/index.js +1 -3
  245. package/dist/commonjs/helpers/remoteConfig.js +1 -1
  246. package/dist/commonjs/helpers/searchQueryParser.d.ts +1 -0
  247. package/dist/commonjs/helpers/searchQueryParser.js +7 -5
  248. package/dist/commonjs/helpers/shareFormatter.d.ts +16 -0
  249. package/dist/commonjs/helpers/shareFormatter.js +16 -9
  250. package/dist/commonjs/helpers/uiInspectorEngine.d.ts +62 -0
  251. package/dist/commonjs/helpers/uiInspectorEngine.js +19 -0
  252. package/dist/commonjs/i18n/locales/ar.json +1 -1
  253. package/dist/commonjs/i18n/locales/bn.json +1 -1
  254. package/dist/commonjs/i18n/locales/de.json +1 -1
  255. package/dist/commonjs/i18n/locales/en.json +1 -1
  256. package/dist/commonjs/i18n/locales/es.json +1 -1
  257. package/dist/commonjs/i18n/locales/fr.json +1 -1
  258. package/dist/commonjs/i18n/locales/gu.json +1 -1
  259. package/dist/commonjs/i18n/locales/hi.json +1 -1
  260. package/dist/commonjs/i18n/locales/id.json +1 -1
  261. package/dist/commonjs/i18n/locales/it.json +1 -1
  262. package/dist/commonjs/i18n/locales/ja.json +1 -1
  263. package/dist/commonjs/i18n/locales/kn.json +1 -1
  264. package/dist/commonjs/i18n/locales/ko.json +1 -1
  265. package/dist/commonjs/i18n/locales/ml.json +1 -1
  266. package/dist/commonjs/i18n/locales/mr.json +1 -1
  267. package/dist/commonjs/i18n/locales/nl.json +1 -1
  268. package/dist/commonjs/i18n/locales/pa.json +1 -1
  269. package/dist/commonjs/i18n/locales/pl.json +1 -1
  270. package/dist/commonjs/i18n/locales/pt.json +1 -1
  271. package/dist/commonjs/i18n/locales/ru.json +1 -1
  272. package/dist/commonjs/i18n/locales/ta.json +1 -1
  273. package/dist/commonjs/i18n/locales/te.json +1 -1
  274. package/dist/commonjs/i18n/locales/tr.json +1 -1
  275. package/dist/commonjs/i18n/locales/vi.json +1 -1
  276. package/dist/commonjs/i18n/locales/zh.json +1 -1
  277. package/dist/commonjs/index.d.ts +4 -2
  278. package/dist/commonjs/index.js +3 -3
  279. package/dist/commonjs/native/NativeInspector.d.ts +4 -0
  280. package/dist/commonjs/native/NativeInspector.js +1 -1
  281. package/dist/commonjs/native/NativeNetworkInspector.d.ts +4 -0
  282. package/dist/commonjs/styles/AppFonts.d.ts +4 -0
  283. package/dist/commonjs/styles/AppFonts.js +1 -1
  284. package/dist/commonjs/styles/index.d.ts +2 -0
  285. package/dist/commonjs/styles/index.js +1 -1
  286. package/dist/commonjs/types/editor.d.ts +31 -0
  287. package/dist/commonjs/types/enums.d.ts +0 -2
  288. package/dist/commonjs/types/enums.js +1 -1
  289. package/dist/commonjs/types/interfaces.d.ts +1 -1
  290. package/dist/esm/components/Inspector/AnalyticsFilterModal.js +73 -75
  291. package/dist/esm/components/Inspector/BoxModelVisualizer.d.ts +8 -0
  292. package/dist/esm/components/Inspector/BoxModelVisualizer.js +76 -0
  293. package/dist/esm/components/Inspector/ConsoleExportModal.js +67 -67
  294. package/dist/esm/components/Inspector/ConsoleTab.js +48 -48
  295. package/dist/esm/components/Inspector/CrashTab.js +58 -58
  296. package/dist/esm/components/Inspector/DebuggingTab.js +105 -105
  297. package/dist/esm/components/Inspector/DeviceInfoTab.js +2 -2
  298. package/dist/esm/components/Inspector/FabLauncher.js +50 -50
  299. package/dist/esm/components/Inspector/FloatingCaptureWidget.js +23 -23
  300. package/dist/esm/components/Inspector/InspectorHeader.js +64 -64
  301. package/dist/esm/components/Inspector/MainScreen.js +87 -124
  302. package/dist/esm/components/Inspector/MediaGalleryTab.js +151 -151
  303. package/dist/esm/components/Inspector/MediaPreviewModal.d.ts +1 -0
  304. package/dist/esm/components/Inspector/MediaPreviewModal.js +468 -468
  305. package/dist/esm/components/Inspector/NetworkExportModal.d.ts +10 -0
  306. package/dist/esm/components/Inspector/NetworkExportModal.js +333 -0
  307. package/dist/esm/components/Inspector/NetworkTab.js +143 -136
  308. package/dist/esm/components/Inspector/NpmStarPrompt.js +32 -33
  309. package/dist/esm/components/Inspector/ReduxDetail.js +54 -56
  310. package/dist/esm/components/Inspector/ReduxTab.js +9 -9
  311. package/dist/esm/components/Inspector/SecondaryTelemetryStrip.d.ts +1 -0
  312. package/dist/esm/components/Inspector/SecondaryTelemetryStrip.js +23 -22
  313. package/dist/esm/components/Inspector/SettingsPanel.js +109 -113
  314. package/dist/esm/components/Inspector/SkeletonPlaceholder.d.ts +3 -0
  315. package/dist/esm/components/Inspector/SkeletonPlaceholder.js +42 -11
  316. package/dist/esm/components/Inspector/SocketCard.js +13 -13
  317. package/dist/esm/components/Inspector/SupportPage.js +5 -5
  318. package/dist/esm/components/Inspector/TabBar.js +35 -41
  319. package/dist/esm/components/Inspector/UiA11yAuditPanel.d.ts +7 -0
  320. package/dist/esm/components/Inspector/UiA11yAuditPanel.js +97 -0
  321. package/dist/esm/components/Inspector/UiInspectorDetail.d.ts +2 -0
  322. package/dist/esm/components/Inspector/UiInspectorDetail.js +422 -0
  323. package/dist/esm/components/Inspector/UiInspectorOverlay.d.ts +2 -0
  324. package/dist/esm/components/Inspector/UiInspectorOverlay.js +138 -0
  325. package/dist/esm/components/Inspector/UiInspectorTab.d.ts +2 -0
  326. package/dist/esm/components/Inspector/UiInspectorTab.js +117 -0
  327. package/dist/esm/components/Inspector/UiLiveStyleTweaker.d.ts +10 -0
  328. package/dist/esm/components/Inspector/UiLiveStyleTweaker.js +148 -0
  329. package/dist/esm/components/Inspector/index.d.ts +28 -0
  330. package/dist/esm/components/Inspector/index.js +1 -0
  331. package/dist/esm/components/LogCard.js +24 -22
  332. package/dist/esm/components/SkeletonPlaceholder.d.ts +3 -0
  333. package/dist/esm/components/SkeletonPlaceholder.js +42 -11
  334. package/dist/esm/constants/index.js +1 -1
  335. package/dist/esm/constants/telemetryConfig.d.ts +3 -3
  336. package/dist/esm/constants/telemetryConfig.js +1 -1
  337. package/dist/esm/constants/version.d.ts +1 -1
  338. package/dist/esm/constants/version.js +1 -1
  339. package/dist/esm/customHooks/crashHandler.d.ts +1 -1
  340. package/dist/esm/customHooks/crashHandler.js +6 -6
  341. package/dist/esm/customHooks/uiInspectorManager.d.ts +22 -0
  342. package/dist/esm/customHooks/uiInspectorManager.js +1 -0
  343. package/dist/esm/helpers/index.js +4 -6
  344. package/dist/esm/helpers/remoteConfig.js +1 -1
  345. package/dist/esm/helpers/searchQueryParser.d.ts +1 -0
  346. package/dist/esm/helpers/searchQueryParser.js +7 -5
  347. package/dist/esm/helpers/shareFormatter.d.ts +16 -0
  348. package/dist/esm/helpers/shareFormatter.js +20 -13
  349. package/dist/esm/helpers/uiInspectorEngine.d.ts +48 -0
  350. package/dist/esm/helpers/uiInspectorEngine.js +19 -0
  351. package/dist/esm/i18n/locales/ar.json +1 -1
  352. package/dist/esm/i18n/locales/bn.json +1 -1
  353. package/dist/esm/i18n/locales/de.json +1 -1
  354. package/dist/esm/i18n/locales/en.json +1 -1
  355. package/dist/esm/i18n/locales/es.json +1 -1
  356. package/dist/esm/i18n/locales/fr.json +1 -1
  357. package/dist/esm/i18n/locales/gu.json +1 -1
  358. package/dist/esm/i18n/locales/hi.json +1 -1
  359. package/dist/esm/i18n/locales/id.json +1 -1
  360. package/dist/esm/i18n/locales/it.json +1 -1
  361. package/dist/esm/i18n/locales/ja.json +1 -1
  362. package/dist/esm/i18n/locales/kn.json +1 -1
  363. package/dist/esm/i18n/locales/ko.json +1 -1
  364. package/dist/esm/i18n/locales/ml.json +1 -1
  365. package/dist/esm/i18n/locales/mr.json +1 -1
  366. package/dist/esm/i18n/locales/nl.json +1 -1
  367. package/dist/esm/i18n/locales/pa.json +1 -1
  368. package/dist/esm/i18n/locales/pl.json +1 -1
  369. package/dist/esm/i18n/locales/pt.json +1 -1
  370. package/dist/esm/i18n/locales/ru.json +1 -1
  371. package/dist/esm/i18n/locales/ta.json +1 -1
  372. package/dist/esm/i18n/locales/te.json +1 -1
  373. package/dist/esm/i18n/locales/tr.json +1 -1
  374. package/dist/esm/i18n/locales/vi.json +1 -1
  375. package/dist/esm/i18n/locales/zh.json +1 -1
  376. package/dist/esm/index.d.ts +4 -2
  377. package/dist/esm/index.js +8 -8
  378. package/dist/esm/native/NativeInspector.d.ts +4 -0
  379. package/dist/esm/native/NativeInspector.js +1 -1
  380. package/dist/esm/native/NativeNetworkInspector.d.ts +4 -0
  381. package/dist/esm/styles/AppFonts.d.ts +4 -0
  382. package/dist/esm/styles/AppFonts.js +1 -1
  383. package/dist/esm/styles/index.d.ts +2 -0
  384. package/dist/esm/styles/index.js +1 -1
  385. package/dist/esm/types/editor.d.ts +31 -0
  386. package/dist/esm/types/enums.d.ts +0 -2
  387. package/dist/esm/types/enums.js +1 -1
  388. package/dist/esm/types/interfaces.d.ts +1 -1
  389. package/ios/NetworkInspectorModule.mm +597 -336
  390. package/package.json +1 -1
  391. package/src/native/NativeInspector.ts +67 -0
  392. package/src/native/NativeNetworkInspector.ts +4 -0
@@ -1,14 +1,14 @@
1
- import ot,{useState as $,useEffect as oe,useMemo as re,useCallback as X}from"react";import{Dimensions as rt,FlatList as Tt,Image as Pe,RefreshControl as Ct,Share as De,StyleSheet as wt,Text as C,TouchableOpacity as B,View as T}from"react-native";import{AppColors as t}from"../../styles/AppColors";import{AppFonts as S}from"../../styles/AppFonts";import G from"../TouchableScale";import{CameraIcon as Fe,CameraRollIcon as We,CheckIcon as Ae,CloseWhite as St,CopyIcon as Te,FilmIcon as $e,GridIcon as Bt,ImageIcon as Ge,ListIcon as It,PlayIcon as He,ScreencastIcon as Oe,ShareIcon as Le,TrashIcon as Ce,VideoCameraIcon as Ue,WhiteBackNavigation as Rt}from"../NetworkIcons";import{MediaPreviewModal as Vt}from"./MediaPreviewModal";import{ScreenCapture as D,generateCaptureId as qe}from"../../capture";import{copyImageOrMediaToClipboard as Mt,copyToClipboard as Pt,formatBytes as E}from"../../helpers";import{triggerNativeHaptic as k}from"../../native/NativeInspector";import{showToast as I}from"../../helpers/toast";import{useTranslation as Dt}from"../../i18n";import{useInspector as Ft}from"./InspectorContext";import{ConfirmationModal as Wt}from"./ConfirmationModal";export const MediaGalleryTab=()=>{const{t:w}=Dt(),{refreshMediaCount:R,switchActiveTab:we,previewMediaItem:xe,setPreviewMediaItem:W}=Ft(),[z,Se]=$([]),[Ee,Be]=$(!1),[V,Ne]=$("all"),[M,N]=$(new Set),[A,ke]=$("grid"),[F,Y]=$(!1),[Ie,Z]=$(0),O=ot.useRef(null),[L,U]=$({visible:!1,title:"",message:"",onConfirm:()=>{}}),v=X(async()=>{try{const e=await D.getMediaList();Se(e),R?.().catch(()=>{})}catch{Se([])}},[R]);oe(()=>{v()},[v]),oe(()=>{D.isRecording().then(e=>Y(e)).catch(()=>{})},[]),oe(()=>(F?(Z(0),O.current=setInterval(()=>{Z(e=>e+1)},1e3)):(O.current&&(clearInterval(O.current),O.current=null),Z(0)),()=>{O.current&&clearInterval(O.current)}),[F]);const Ye=async()=>{Be(!0),await v(),Be(!1)},j=re(()=>{let e=0,r=0,x=0;return z.forEach(P=>{P.type==="image"?e++:P.type==="video"?r++:P.type==="gif"&&x++}),{all:z.length,image:e,video:r,gif:x}},[z]),_=re(()=>V==="all"?z:z.filter(e=>e.type===V),[z,V]),J=re(()=>z.reduce((e,r)=>e+(r.sizeBytes||0),0),[z]),ze=X(async()=>{try{k("light");const e=await D.takeScreenshot({format:"png",quality:.9,hideInspector:!0});if(e){k("success");const r=qe("screenshot",e.format||"png"),x={id:r,type:"image",format:e.format,uri:e.uri,filename:e.uri.split("/").pop()||r,sizeBytes:e.sizeBytes,timestamp:e.timestamp,width:e.width,height:e.height};W(x),await v(),R?.().catch(()=>{}),I(w("header.screenshotCaptured","Screenshot captured & saved"))}else I(w("header.screenshotFailed","Failed to capture screenshot"))}catch{I(w("header.screenshotError","Error capturing screenshot"))}},[v,R,W,w]),K=X(async()=>{try{if(F){k("medium");const e=await D.stopRecording();if(Y(!1),e){k("success");const r=qe("video",e.format),x={id:r,type:e.format==="gif"?"gif":"video",format:e.format,uri:e.uri,filename:e.uri.split("/").pop()||r,sizeBytes:e.sizeBytes,timestamp:e.timestamp,durationMs:e.durationMs,width:e.width,height:e.height,hasAudio:e.hasAudio};W(x),await v(),R?.().catch(()=>{}),I(w("header.recordingSaved",{duration:(e.durationMs/1e3).toFixed(1),defaultValue:`Recording saved (${(e.durationMs/1e3).toFixed(1)}s)`}))}}else k("medium"),await D.startRecording({fps:24,audioSource:"none"})?(Y(!0),I(w("header.recordingStarted","Screen recording started"))):I(w("header.recordingStartFailed","Failed to start screen recording"))}catch{I(w("header.recordingError","Screen recording error")),Y(!1)}},[F,v,R,W,w]),ve=async()=>{try{k("light");const e=V==="image"?"image":V==="video"?"video":"any",r=await D.pickMedia({mediaType:e});r&&(k("success"),await v(),R?.().catch(()=>{}),I(r.type==="video"?w("mediaGallery.importedVideo","Video imported from Camera Roll"):w("mediaGallery.importedPhoto","Photo imported from Camera Roll")),W(r))}catch{I(w("mediaGallery.importFailed","Failed to import media"))}},Re=X(e=>{k("light"),N(r=>{const x=new Set(r);return x.has(e)?x.delete(e):x.add(e),x})},[]),Ve=async e=>{k("medium"),await D.deleteMedia(e.uri),N(r=>{const x=new Set(r);return x.delete(e.id),x}),await v(),await R?.(),I(w("mediaGallery.deleted","Media deleted"))},Me=e=>{e?.uri&&(k("light"),Mt(e.uri,e.type==="image"?"Image":"Media"))},_e=()=>{const e=z.filter(x=>M.has(x.id));if(e.length===0)return;k("light");const r=e.map(x=>x.uri).join(`
2
- `);Pt(r,`${e.length} Media URIs`),I(`${e.length} file URIs copied to clipboard`)},Xe=async e=>{try{k("light");const r=e.uri.startsWith("file://")||e.uri.startsWith("content://")||e.uri.startsWith("http")?e.uri:`file://${e.uri}`;await De.share({url:r,title:e.filename,message:e.filename})}catch{I(w("mediaGallery.shareUnavailable","Sharing not available on this device"))}},Ze=async()=>{const e=z.filter(r=>M.has(r.id));if(e.length!==0)try{k("light");const r=e[0],x=r.uri.startsWith("file://")||r.uri.startsWith("content://")||r.uri.startsWith("http")?r.uri:`file://${r.uri}`;await De.share({url:x,title:r.filename,message:e.length===1?r.filename:`${e.length} items: ${e.map(P=>P.filename).join(", ")}`})}catch{I(w("mediaGallery.shareUnavailable","Sharing not available on this device"))}},Je=()=>{const e=M.size;e!==0&&U({visible:!0,title:w("mediaGallery.deleteSelectedTitle","Delete Selected Media"),message:w("mediaGallery.deleteSelectedMessage",{count:e,defaultValue:`Are you sure you want to permanently delete ${e} media items?`}),confirmText:w("mediaGallery.delete","Delete"),cancelText:w("common.cancel","Cancel"),onConfirm:async()=>{U(x=>({...x,visible:!1}));const r=z.filter(x=>M.has(x.id));for(const x of r)await D.deleteMedia(x.uri);N(new Set),await v(),await R?.(),I(w("mediaGallery.deletedCount",{count:r.length,defaultValue:`Deleted ${r.length} items`}))}})},Ke=()=>{U({visible:!0,title:w("mediaGallery.purgeTitle","Purge Gallery"),message:w("mediaGallery.purgeMessage",{count:z.length,size:E(J),defaultValue:`Are you sure you want to delete all ${z.length} media files (${E(J)})? This cannot be undone.`}),confirmText:w("common.clearAll","Clear All"),cancelText:w("common.cancel","Cancel"),onConfirm:async()=>{U(e=>({...e,visible:!1})),await D.clearAllMedia(),N(new Set),await v(),await R?.(),I(w("mediaGallery.allPurged","All screencast files deleted"))}})},Qe=async e=>{await D.convertToGif(e.uri,{fps:12,width:480})&&(await v(),R?.().catch(()=>{}))},Q=e=>{const r=Math.floor(e/60),x=e%60;return`${r.toString().padStart(2,"0")}:${x.toString().padStart(2,"0")}`},et=({item:e})=>{if(!e)return null;const r=e.type==="video",x=e.type==="gif",P=r&&e.thumbnailUri||e.uri,H=!!(e.id&&M.has(e.id)),ee=(e.format||(r?"mp4":x?"gif":"png")).toUpperCase(),te=e.filename||(e.uri?e.uri.split("/").pop():"")||"Capture",q=e.timestamp?new Date(e.timestamp).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}):"";return<G onPress={()=>W(e)}style={[o.card,H&&o.cardSelected]}>
1
+ import ot,{useState as H,useEffect as ie,useMemo as ae,useCallback as J}from"react";import{Dimensions as rt,FlatList as Tt,Image as Pe,RefreshControl as Ct,Share as De,StyleSheet as wt,Text as S,TouchableOpacity as I,View as T}from"react-native";import{AppColors as t}from"../../styles/AppColors";import{AppFonts as k}from"../../styles/AppFonts";import O from"../TouchableScale";import{CameraIcon as Ae,CameraRollIcon as Fe,CheckIcon as We,CloseWhite as St,CopyIcon as Te,FilmIcon as $e,GridIcon as Bt,ImageIcon as Ge,ListIcon as It,PlayIcon as He,ScreencastIcon as Oe,ShareIcon as Le,TrashIcon as Ce,VideoCameraIcon as Ue,WhiteBackNavigation as Rt}from"../NetworkIcons";import{MediaPreviewModal as Vt}from"./MediaPreviewModal";import{ScreenCapture as F,generateCaptureId as qe}from"../../capture";import{copyImageOrMediaToClipboard as Mt,copyToClipboard as Pt,formatBytes as Y}from"../../helpers";import{triggerNativeHaptic as z}from"../../native/NativeInspector";import{showToast as v}from"../../helpers/toast";import{useTranslation as Dt}from"../../i18n";import{useInspector as At}from"./InspectorContext";import{ConfirmationModal as Ft}from"./ConfirmationModal";export const MediaGalleryTab=()=>{const{t:C}=Dt(),{refreshMediaCount:M,switchActiveTab:we,previewMediaItem:xe,setPreviewMediaItem:W}=At(),[R,Se]=H([]),[Ee,Be]=H(!1),[P,Ne]=H("all"),[D,_]=H(new Set),[G,ke]=H("grid"),[$,X]=H(!1),[Ie,K]=H(0),j=ot.useRef(null),[U,E]=H({visible:!1,title:"",message:"",onConfirm:()=>{}}),V=J(async()=>{try{const e=await F.getMediaList();Se(e),M?.().catch(()=>{})}catch{Se([])}},[M]);ie(()=>{V()},[V]),ie(()=>{F.isRecording().then(e=>X(e)).catch(()=>{})},[]),ie(()=>($?(K(0),j.current=setInterval(()=>{K(e=>e+1)},1e3)):(j.current&&(clearInterval(j.current),j.current=null),K(0)),()=>{j.current&&clearInterval(j.current)}),[$]);const Ye=async()=>{Be(!0),await V(),Be(!1)},q=ae(()=>{let e=0,r=0,B=0;return R.forEach(A=>{A.type==="image"?e++:A.type==="video"?r++:A.type==="gif"&&B++}),{all:R.length,image:e,video:r,gif:B}},[R]),Z=ae(()=>P==="all"?R:R.filter(e=>e.type===P),[R,P]),Q=ae(()=>R.reduce((e,r)=>e+(r.sizeBytes||0),0),[R]),ze=J(async()=>{try{z("light");const e=await F.takeScreenshot({format:"png",quality:.9,hideInspector:!0});if(e){z("success");const r=qe("screenshot",e.format||"png"),B={id:r,type:"image",format:e.format,uri:e.uri,filename:e.uri.split("/").pop()||r,sizeBytes:e.sizeBytes,timestamp:e.timestamp,width:e.width,height:e.height};W(B),await V(),M?.().catch(()=>{}),v(C("header.screenshotCaptured","Screenshot captured & saved"))}else v(C("header.screenshotFailed","Failed to capture screenshot"))}catch{v(C("header.screenshotError","Error capturing screenshot"))}},[V,M,W,C]),ee=J(async()=>{try{if($){z("medium");const e=await F.stopRecording();if(X(!1),e){z("success");const r=qe("video",e.format),B={id:r,type:e.format==="gif"?"gif":"video",format:e.format,uri:e.uri,filename:e.uri.split("/").pop()||r,sizeBytes:e.sizeBytes,timestamp:e.timestamp,durationMs:e.durationMs,width:e.width,height:e.height,hasAudio:e.hasAudio};W(B),await V(),M?.().catch(()=>{}),v(C("header.recordingSaved",{duration:(e.durationMs/1e3).toFixed(1),defaultValue:`Recording saved (${(e.durationMs/1e3).toFixed(1)}s)`}))}}else z("medium"),await F.startRecording({fps:24,audioSource:"none"})?(X(!0),v(C("header.recordingStarted","Screen recording started"))):v(C("header.recordingStartFailed","Failed to start screen recording"))}catch{v(C("header.recordingError","Screen recording error")),X(!1)}},[$,V,M,W,C]),ve=async()=>{try{z("light");const e=P==="image"?"image":P==="video"?"video":"any",r=await F.pickMedia({mediaType:e});r&&(z("success"),await V(),M?.().catch(()=>{}),v(r.type==="video"?C("mediaGallery.importedVideo","Video imported from Camera Roll"):C("mediaGallery.importedPhoto","Photo imported from Camera Roll")),W(r))}catch{v(C("mediaGallery.importFailed","Failed to import media"))}},Re=J(e=>{z("light"),_(r=>{const B=new Set(r);return B.has(e)?B.delete(e):B.add(e),B})},[]),Ve=async e=>{z("medium"),await F.deleteMedia(e.uri),_(r=>{const B=new Set(r);return B.delete(e.id),B}),await V(),await M?.(),v(C("mediaGallery.deleted","Media deleted"))},Me=e=>{e?.uri&&(z("light"),Mt(e.uri,e.type==="image"?"Image":"Media"))},_e=()=>{const e=R.filter(B=>D.has(B.id));if(e.length===0)return;z("light");const r=e.map(B=>B.uri).join(`
2
+ `);Pt(r,`${e.length} Media URIs`),v(`${e.length} file URIs copied to clipboard`)},Xe=async e=>{try{z("light");const r=e.uri.startsWith("file://")||e.uri.startsWith("content://")||e.uri.startsWith("http")?e.uri:`file://${e.uri}`;await De.share({url:r,title:e.filename,message:e.filename})}catch{v(C("mediaGallery.shareUnavailable","Sharing not available on this device"))}},Ze=async()=>{const e=R.filter(r=>D.has(r.id));if(e.length!==0)try{z("light");const r=e[0],B=r.uri.startsWith("file://")||r.uri.startsWith("content://")||r.uri.startsWith("http")?r.uri:`file://${r.uri}`;await De.share({url:B,title:r.filename,message:e.length===1?r.filename:`${e.length} items: ${e.map(A=>A.filename).join(", ")}`})}catch{v(C("mediaGallery.shareUnavailable","Sharing not available on this device"))}},Je=()=>{const e=D.size;e!==0&&E({visible:!0,title:C("mediaGallery.deleteSelectedTitle","Delete Selected Media"),message:C("mediaGallery.deleteSelectedMessage",{count:e,defaultValue:`Are you sure you want to permanently delete ${e} media items?`}),confirmText:C("mediaGallery.delete","Delete"),cancelText:C("common.cancel","Cancel"),onConfirm:async()=>{E(B=>({...B,visible:!1}));const r=R.filter(B=>D.has(B.id));for(const B of r)await F.deleteMedia(B.uri);_(new Set),await V(),await M?.(),v(C("mediaGallery.deletedCount",{count:r.length,defaultValue:`Deleted ${r.length} items`}))}})},Ke=()=>{E({visible:!0,title:C("mediaGallery.purgeTitle","Purge Gallery"),message:C("mediaGallery.purgeMessage",{count:R.length,size:Y(Q),defaultValue:`Are you sure you want to delete all ${R.length} media files (${Y(Q)})? This cannot be undone.`}),confirmText:C("common.clearAll","Clear All"),cancelText:C("common.cancel","Cancel"),onConfirm:async()=>{E(e=>({...e,visible:!1})),await F.clearAllMedia(),_(new Set),await V(),await M?.(),v(C("mediaGallery.allPurged","All screencast files deleted"))}})},Qe=async e=>{await F.convertToGif(e.uri,{fps:12,width:480})&&(await V(),M?.().catch(()=>{}))},te=e=>{const r=Math.floor(e/60),B=e%60;return`${r.toString().padStart(2,"0")}:${B.toString().padStart(2,"0")}`},et=({item:e})=>{if(!e)return null;const r=e.type==="video",B=e.type==="gif",A=r&&e.thumbnailUri||e.uri,L=!!(e.id&&D.has(e.id)),oe=(e.format||(r?"mp4":B?"gif":"png")).toUpperCase(),re=e.filename||(e.uri?e.uri.split("/").pop():"")||"Capture",N=e.timestamp?new Date(e.timestamp).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"}):"";return<O onPress={()=>W(e)}style={[o.card,L&&o.cardSelected]}>
3
3
  <T style={o.thumbnailContainer}>
4
- {P?<Pe source={{uri:P}}style={o.thumbnail}resizeMode="cover"/>:<T style={o.thumbnailFallback}>
4
+ {A?<Pe source={{uri:A}}style={o.thumbnail}resizeMode="cover"/>:<T style={o.thumbnailFallback}>
5
5
  {r?<$e size={28}color={t.sky500}/>:<Ge size={28}color={t.grayTextWeak}/>}
6
6
  </T>}
7
7
 
8
8
 
9
- <B onPress={()=>e.id&&Re(e.id)}style={[o.checkbox,H&&o.checkboxSelected]}hitSlop={{top:8,bottom:8,left:8,right:8}}>
10
- {H&&<Ae size={11}color={t.white}/>}
11
- </B>
9
+ <I onPress={()=>e.id&&Re(e.id)}style={[o.checkbox,L&&o.checkboxSelected]}hitSlop={{top:8,bottom:8,left:8,right:8}}>
10
+ {L&&<We size={11}color={t.white}/>}
11
+ </I>
12
12
 
13
13
 
14
14
  {r&&<T style={o.miniPlayCircle}>
@@ -16,50 +16,50 @@ import ot,{useState as $,useEffect as oe,useMemo as re,useCallback as X}from"rea
16
16
  </T>}
17
17
 
18
18
 
19
- <T style={[o.typeBadge,{backgroundColor:r?"rgba(14, 165, 233, 0.88)":x?"rgba(245, 158, 11, 0.88)":"rgba(16, 185, 129, 0.88)"}]}>
20
- <C style={o.typeBadgeText}>
21
- {ee}
22
- </C>
19
+ <T style={[o.typeBadge,{backgroundColor:r?"rgba(14, 165, 233, 0.88)":B?"rgba(245, 158, 11, 0.88)":"rgba(16, 185, 129, 0.88)"}]}>
20
+ <S style={o.typeBadgeText}>
21
+ {oe}
22
+ </S>
23
23
  </T>
24
24
 
25
25
 
26
26
  {r&&e.durationMs?<T style={o.durationBadge}>
27
- <C style={o.durationBadgeText}>
28
- {Q(Math.round(e.durationMs/1e3))}
29
- </C>
27
+ <S style={o.durationBadgeText}>
28
+ {te(Math.round(e.durationMs/1e3))}
29
+ </S>
30
30
  </T>:null}
31
31
  </T>
32
32
 
33
33
  <T style={o.cardInfo}>
34
- <C style={o.cardTitle}numberOfLines={1}>
35
- {te}
36
- </C>
34
+ <S style={o.cardTitle}numberOfLines={1}>
35
+ {re}
36
+ </S>
37
37
  <T style={o.cardMetaRow}>
38
38
  <T style={{flexDirection:"row",alignItems:"center",gap:4,flex:1,minWidth:0}}>
39
- <C style={o.cardMeta}numberOfLines={1}>
40
- {E(e.sizeBytes||0)}
41
- </C>
42
- {q?<>
43
- <C style={o.cardMetaDot}>•</C>
44
- <C style={o.cardMeta}numberOfLines={1}>
45
- {q}
46
- </C>
39
+ <S style={o.cardMeta}numberOfLines={1}>
40
+ {Y(e.sizeBytes||0)}
41
+ </S>
42
+ {N?<>
43
+ <S style={o.cardMetaDot}>•</S>
44
+ <S style={o.cardMeta}numberOfLines={1}>
45
+ {N}
46
+ </S>
47
47
  </>:null}
48
48
  </T>
49
- <B onPress={()=>Me(e)}style={o.gridCopyBtn}hitSlop={{top:6,bottom:6,left:6,right:6}}>
49
+ <I onPress={()=>Me(e)}style={o.gridCopyBtn}hitSlop={{top:6,bottom:6,left:6,right:6}}>
50
50
  <Te size={11}color={t.grayText}/>
51
- </B>
51
+ </I>
52
52
  </T>
53
53
  </T>
54
- </G>},tt=({item:e})=>{if(!e)return null;const r=e.type==="video",x=e.type==="gif",P=r&&e.thumbnailUri||e.uri,H=!!(e.id&&M.has(e.id)),ee=(e.format||(r?"mp4":x?"gif":"png")).toUpperCase(),te=e.filename||(e.uri?e.uri.split("/").pop():"")||"Capture",q=e.timestamp?`${new Date(e.timestamp).toLocaleDateString([],{month:"short",day:"numeric"})} ${new Date(e.timestamp).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}`:"";return<G onPress={()=>W(e)}style={[o.listRow,H&&o.listRowSelected]}>
54
+ </O>},tt=({item:e})=>{if(!e)return null;const r=e.type==="video",B=e.type==="gif",A=r&&e.thumbnailUri||e.uri,L=!!(e.id&&D.has(e.id)),oe=(e.format||(r?"mp4":B?"gif":"png")).toUpperCase(),re=e.filename||(e.uri?e.uri.split("/").pop():"")||"Capture",N=e.timestamp?`${new Date(e.timestamp).toLocaleDateString([],{month:"short",day:"numeric"})} ${new Date(e.timestamp).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}`:"";return<O onPress={()=>W(e)}style={[o.listRow,L&&o.listRowSelected]}>
55
55
 
56
- <B onPress={()=>e.id&&Re(e.id)}style={[o.listCheckbox,H&&o.checkboxSelected]}hitSlop={{top:8,bottom:8,left:8,right:8}}>
57
- {H&&<Ae size={11}color={t.white}/>}
58
- </B>
56
+ <I onPress={()=>e.id&&Re(e.id)}style={[o.listCheckbox,L&&o.checkboxSelected]}hitSlop={{top:8,bottom:8,left:8,right:8}}>
57
+ {L&&<We size={11}color={t.white}/>}
58
+ </I>
59
59
 
60
60
 
61
61
  <T style={o.listThumbContainer}>
62
- {P?<Pe source={{uri:P}}style={o.listThumb}resizeMode="cover"/>:<T style={o.listThumbFallback}>
62
+ {A?<Pe source={{uri:A}}style={o.listThumb}resizeMode="cover"/>:<T style={o.listThumbFallback}>
63
63
  {r?<$e size={18}color={t.sky500}/>:<Ge size={18}color={t.grayTextWeak}/>}
64
64
  </T>}
65
65
  {r&&<T style={o.listMiniPlay}>
@@ -69,231 +69,231 @@ import ot,{useState as $,useEffect as oe,useMemo as re,useCallback as X}from"rea
69
69
 
70
70
 
71
71
  <T style={o.listInfo}>
72
- <C style={o.listTitle}numberOfLines={1}>
73
- {te}
74
- </C>
72
+ <S style={o.listTitle}numberOfLines={1}>
73
+ {re}
74
+ </S>
75
75
  <T style={o.listMetaRow}>
76
- <T style={[o.listBadge,{backgroundColor:r?`${t.sky500}18`:x?`${t.amber500}18`:`${t.green600}18`}]}>
77
- <C style={[o.listBadgeText,{color:r?t.sky600:x?t.amber500:t.green600}]}>
78
- {ee}
79
- </C>
76
+ <T style={[o.listBadge,{backgroundColor:r?`${t.sky500}18`:B?`${t.amber500}18`:`${t.green600}18`}]}>
77
+ <S style={[o.listBadgeText,{color:r?t.sky600:B?t.amber500:t.green600}]}>
78
+ {oe}
79
+ </S>
80
80
  </T>
81
- <C style={o.cardMeta}>
82
- {E(e.sizeBytes||0)}
83
- </C>
84
- {q?<>
85
- <C style={o.cardMetaDot}>•</C>
86
- <C style={o.cardMeta}>
87
- {q}
88
- </C>
81
+ <S style={o.cardMeta}>
82
+ {Y(e.sizeBytes||0)}
83
+ </S>
84
+ {N?<>
85
+ <S style={o.cardMetaDot}>•</S>
86
+ <S style={o.cardMeta}>
87
+ {N}
88
+ </S>
89
89
  </>:null}
90
90
  </T>
91
91
  </T>
92
92
 
93
93
 
94
94
  <T style={o.listActionsRow}>
95
- <B onPress={()=>Me(e)}style={o.listActionBtn}hitSlop={{top:8,bottom:8,left:8,right:8}}>
95
+ <I onPress={()=>Me(e)}style={o.listActionBtn}hitSlop={{top:8,bottom:8,left:8,right:8}}>
96
96
  <Te size={13}color={t.grayText}/>
97
- </B>
97
+ </I>
98
98
 
99
- <B onPress={()=>Xe(e)}style={o.listActionBtn}hitSlop={{top:8,bottom:8,left:8,right:8}}>
99
+ <I onPress={()=>Xe(e)}style={o.listActionBtn}hitSlop={{top:8,bottom:8,left:8,right:8}}>
100
100
  <Le size={13}color={t.sky600}/>
101
- </B>
101
+ </I>
102
102
 
103
- <B onPress={()=>Ve(e)}style={o.listActionBtn}hitSlop={{top:8,bottom:8,left:8,right:8}}>
103
+ <I onPress={()=>Ve(e)}style={o.listActionBtn}hitSlop={{top:8,bottom:8,left:8,right:8}}>
104
104
  <Ce size={13}color={t.red500}/>
105
- </B>
105
+ </I>
106
106
  </T>
107
- </G>};return<T style={o.container}>
107
+ </O>};return<T style={o.container}>
108
108
 
109
109
  <T style={o.topHeaderBar}>
110
- <B onPress={()=>we("apis")}style={o.backToTabBtn}accessibilityLabel="Back to Inspector"hitSlop={{top:8,bottom:8,left:8,right:8}}>
110
+ <I onPress={()=>we("apis")}style={o.backToTabBtn}accessibilityLabel="Back to Inspector"hitSlop={{top:8,bottom:8,left:8,right:8}}>
111
111
  <Rt size={14}color={t.purple}/>
112
- <C style={o.backToTabText}>
113
- {w("common.back","Back")}
114
- </C>
115
- </B>
112
+ <S style={o.backToTabText}>
113
+ {C("common.back","Back")}
114
+ </S>
115
+ </I>
116
116
 
117
117
  <T style={o.headerCenterTitle}>
118
118
  <Oe size={15}color={t.purple}/>
119
- <C style={o.headerStudioTitle}>
120
- {w("tabs.media","Screencast")}
121
- </C>
122
- {j.all>0&&<T style={o.headerBadge}>
123
- <C style={o.headerBadgeText}>{j.all}</C>
119
+ <S style={o.headerStudioTitle}>
120
+ {C("tabs.media","Screencast")}
121
+ </S>
122
+ {q.all>0&&<T style={o.headerBadge}>
123
+ <S style={o.headerBadgeText}>{q.all}</S>
124
124
  </T>}
125
125
  </T>
126
126
 
127
- <B onPress={()=>we("apis")}style={o.closeCircleBtn}accessibilityLabel="Close Screencast"hitSlop={{top:8,bottom:8,left:8,right:8}}>
127
+ <I onPress={()=>we("apis")}style={o.closeCircleBtn}accessibilityLabel="Close Screencast"hitSlop={{top:8,bottom:8,left:8,right:8}}>
128
128
  <St size={12}color={t.grayTextStrong}/>
129
- </B>
129
+ </I>
130
130
  </T>
131
131
 
132
132
 
133
- {F&&<T style={o.recordingBanner}>
133
+ {$&&<T style={o.recordingBanner}>
134
134
  <T style={o.recordingDot}/>
135
- <C style={o.recordingBannerText}>
136
- {w("header.recordingScreen","Screen Recording Active")} • {Q(Ie)}
137
- </C>
138
- <B onPress={K}style={o.stopRecordBtn}activeOpacity={.8}>
135
+ <S style={o.recordingBannerText}>
136
+ {C("header.recordingScreen","Screen Recording Active")} • {te(Ie)}
137
+ </S>
138
+ <I onPress={ee}style={o.stopRecordBtn}activeOpacity={.8}>
139
139
  <T style={o.stopSquare}/>
140
- <C style={o.stopRecordBtnText}>Stop & Save</C>
141
- </B>
140
+ <S style={o.stopRecordBtnText}>{C("media.stopAndSave","Stop & Save")}</S>
141
+ </I>
142
142
  </T>}
143
143
 
144
144
 
145
145
  <T style={o.quickActionsBar}>
146
- <G onPress={ze}style={[o.quickBtn,{backgroundColor:`${t.purple}10`,borderColor:`${t.purple}30`}]}>
147
- <Fe size={14}color={t.purple}/>
148
- <C style={[o.quickBtnText,{color:t.purple}]}>
149
- {w("header.screenshot","Screenshot")}
150
- </C>
151
- </G>
146
+ <O onPress={ze}style={[o.quickBtn,{backgroundColor:`${t.purple}10`,borderColor:`${t.purple}30`}]}>
147
+ <Ae size={14}color={t.purple}/>
148
+ <S style={[o.quickBtnText,{color:t.purple}]}>
149
+ {C("header.screenshot","Screenshot")}
150
+ </S>
151
+ </O>
152
152
 
153
- <G onPress={K}style={[o.quickBtn,F?{backgroundColor:`${t.red500}18`,borderColor:t.red500}:{backgroundColor:`${t.sky600}10`,borderColor:`${t.sky600}30`}]}>
154
- <Ue size={14}color={F?t.red500:t.sky600}/>
155
- <C style={[o.quickBtnText,{color:F?t.red500:t.sky600}]}>
156
- {F?`Stop (${Q(Ie)})`:w("header.videoRecord","Record Video")}
157
- </C>
158
- </G>
153
+ <O onPress={ee}style={[o.quickBtn,$?{backgroundColor:`${t.red500}18`,borderColor:t.red500}:{backgroundColor:`${t.sky600}10`,borderColor:`${t.sky600}30`}]}>
154
+ <Ue size={14}color={$?t.red500:t.sky600}/>
155
+ <S style={[o.quickBtnText,{color:$?t.red500:t.sky600}]}>
156
+ {$?`Stop (${te(Ie)})`:C("header.videoRecord","Record Video")}
157
+ </S>
158
+ </O>
159
159
 
160
- <G onPress={ve}style={[o.quickBtn,{backgroundColor:`${t.emerald500}10`,borderColor:`${t.emerald500}30`}]}>
161
- <We size={14}color={t.green600}/>
162
- <C style={[o.quickBtnText,{color:t.green600}]}>
163
- {w("common.import","Import")}
164
- </C>
165
- </G>
160
+ <O onPress={ve}style={[o.quickBtn,{backgroundColor:`${t.emerald500}10`,borderColor:`${t.emerald500}30`}]}>
161
+ <Fe size={14}color={t.green600}/>
162
+ <S style={[o.quickBtnText,{color:t.green600}]}>
163
+ {C("common.import","Import")}
164
+ </S>
165
+ </O>
166
166
  </T>
167
167
 
168
168
 
169
169
  <T style={o.filterBar}>
170
170
  <T style={o.chipGroup}>
171
- {[{key:"all",label:w("common.all","All"),count:j.all},{key:"image",label:w("mediaGallery.photos","Photos"),count:j.image},{key:"video",label:w("mediaGallery.videos","Videos"),count:j.video},{key:"gif",label:w("mediaGallery.gifs","GIFs"),count:j.gif}].map(e=>{const r=V===e.key;return<B key={e.key}onPress={()=>{k("light"),Ne(e.key)}}style={[o.chip,r&&o.chipActive]}>
172
- <C style={[o.chipText,r&&o.chipTextActive]}>
171
+ {[{key:"all",label:C("common.all","All"),count:q.all},{key:"image",label:C("mediaGallery.photos","Photos"),count:q.image},{key:"video",label:C("mediaGallery.videos","Videos"),count:q.video},{key:"gif",label:C("mediaGallery.gifs","GIFs"),count:q.gif}].map(e=>{const r=P===e.key;return<I key={e.key}onPress={()=>{z("light"),Ne(e.key)}}style={[o.chip,r&&o.chipActive]}>
172
+ <S style={[o.chipText,r&&o.chipTextActive]}>
173
173
  {e.label}
174
- </C>
174
+ </S>
175
175
  <T style={[o.chipBadge,r&&o.chipBadgeActive]}>
176
- <C style={[o.chipBadgeText,r&&o.chipBadgeTextActive]}>
176
+ <S style={[o.chipBadgeText,r&&o.chipBadgeTextActive]}>
177
177
  {e.count}
178
- </C>
178
+ </S>
179
179
  </T>
180
- </B>})}
180
+ </I>})}
181
181
  </T>
182
182
 
183
183
 
184
184
  <T style={o.viewToggleContainer}>
185
- <B onPress={()=>{k("light"),ke("grid")}}style={[o.viewToggleBtn,A==="grid"&&o.viewToggleBtnActive]}>
186
- <Bt size={13}color={A==="grid"?t.white:t.grayText}/>
187
- </B>
188
- <B onPress={()=>{k("light"),ke("list")}}style={[o.viewToggleBtn,A==="list"&&o.viewToggleBtnActive]}>
189
- <It size={13}color={A==="list"?t.white:t.grayText}/>
190
- </B>
185
+ <I onPress={()=>{z("light"),ke("grid")}}style={[o.viewToggleBtn,G==="grid"&&o.viewToggleBtnActive]}>
186
+ <Bt size={13}color={G==="grid"?t.white:t.grayText}/>
187
+ </I>
188
+ <I onPress={()=>{z("light"),ke("list")}}style={[o.viewToggleBtn,G==="list"&&o.viewToggleBtnActive]}>
189
+ <It size={13}color={G==="list"?t.white:t.grayText}/>
190
+ </I>
191
191
  </T>
192
192
  </T>
193
193
 
194
194
 
195
- {z.length>0&&<T style={o.subBar}>
195
+ {R.length>0&&<T style={o.subBar}>
196
196
  <T style={o.resultCountWrapper}>
197
- <C style={[o.resultCountText,M.size>0&&o.resultCountTextSelected]}>
198
- {M.size>0?`${M.size} of ${_.length} selected`:`${_.length} ${_.length===1?"item":"items"} \u2022 ${E(J)}`}
199
- </C>
197
+ <S style={[o.resultCountText,D.size>0&&o.resultCountTextSelected]}>
198
+ {D.size>0?`${D.size} of ${Z.length} selected`:`${Z.length} ${Z.length===1?"item":"items"} \u2022 ${Y(Q)}`}
199
+ </S>
200
200
  </T>
201
201
 
202
202
  <T style={o.actionsGroup}>
203
- {M.size>0?<>
204
- <B onPress={_e}style={o.copySelectedBtn}hitSlop={{top:8,bottom:8,left:8,right:8}}>
203
+ {D.size>0?<>
204
+ <I onPress={_e}style={o.copySelectedBtn}hitSlop={{top:8,bottom:8,left:8,right:8}}>
205
205
  <Te size={11}color={t.grayTextStrong}/>
206
- <C style={o.copySelectedBtnText}>
206
+ <S style={o.copySelectedBtnText}>
207
207
  Copy
208
- </C>
209
- </B>
208
+ </S>
209
+ </I>
210
210
 
211
- <B onPress={Ze}style={o.shareSelectedBtn}hitSlop={{top:8,bottom:8,left:8,right:8}}>
211
+ <I onPress={Ze}style={o.shareSelectedBtn}hitSlop={{top:8,bottom:8,left:8,right:8}}>
212
212
  <Le size={11}color={t.sky600}/>
213
- <C style={o.shareSelectedBtnText}>
213
+ <S style={o.shareSelectedBtnText}>
214
214
  Share
215
- </C>
216
- </B>
215
+ </S>
216
+ </I>
217
217
 
218
- <B onPress={Je}style={o.deleteBtn}hitSlop={{top:8,bottom:8,left:8,right:8}}>
218
+ <I onPress={Je}style={o.deleteBtn}hitSlop={{top:8,bottom:8,left:8,right:8}}>
219
219
  <Ce size={11}color={t.red500}/>
220
- <C style={o.deleteBtnText}>
221
- Delete ({M.size})
222
- </C>
223
- </B>
224
- </>:<B onPress={Ke}style={o.clearBtn}hitSlop={{top:8,bottom:8,left:8,right:8}}>
220
+ <S style={o.deleteBtnText}>
221
+ Delete ({D.size})
222
+ </S>
223
+ </I>
224
+ </>:<I onPress={Ke}style={o.clearBtn}hitSlop={{top:8,bottom:8,left:8,right:8}}>
225
225
  <Ce size={11}color={t.red500}/>
226
- <C style={o.clearBtnText}>
226
+ <S style={o.clearBtnText}>
227
227
  Purge All
228
- </C>
229
- </B>}
228
+ </S>
229
+ </I>}
230
230
  </T>
231
231
  </T>}
232
232
 
233
233
 
234
- <Tt key={A}data={_}keyExtractor={e=>e.id}renderItem={A==="grid"?et:tt}numColumns={A==="grid"?2:1}columnWrapperStyle={A==="grid"?o.columnWrapper:void 0}style={{flex:1}}contentContainerStyle={[o.listContent,{flexGrow:1}]}nestedScrollEnabled={!0}keyboardShouldPersistTaps="handled"refreshControl={<Ct refreshing={Ee}onRefresh={Ye}tintColor={t.purple}/>}ListEmptyComponent={<T style={o.emptyHeroCard}>
234
+ <Tt key={G}data={Z}keyExtractor={e=>e.id}renderItem={G==="grid"?et:tt}numColumns={G==="grid"?2:1}columnWrapperStyle={G==="grid"?o.columnWrapper:void 0}style={{flex:1}}contentContainerStyle={[o.listContent,{flexGrow:1}]}nestedScrollEnabled={!0}keyboardShouldPersistTaps="handled"refreshControl={<Ct refreshing={Ee}onRefresh={Ye}tintColor={t.purple}/>}ListEmptyComponent={<T style={o.emptyHeroCard}>
235
235
  <T style={o.emptyIconCircle}>
236
236
  <Oe size={32}color={t.purple}/>
237
237
  </T>
238
238
 
239
- <C style={o.emptyHeroTitle}>
240
- {V==="image"?"No Screenshots Yet":V==="video"?"No Screen Recordings Yet":V==="gif"?"No Animated GIFs Yet":"Screencast & Media Studio"}
241
- </C>
239
+ <S style={o.emptyHeroTitle}>
240
+ {P==="image"?"No Screenshots Yet":P==="video"?"No Screen Recordings Yet":P==="gif"?"No Animated GIFs Yet":"Screencast & Media Studio"}
241
+ </S>
242
242
 
243
- <C style={o.emptyHeroSubtitle}>
244
- {V==="image"?"Take a full-screen application snapshot or import photos from your device library.":V==="video"?"Record high-FPS screen videos with audio narration to reproduce and debug issues.":"Capture pixel-perfect screenshots, record 60fps screen videos, and export GIF animations with zero background overhead."}
245
- </C>
243
+ <S style={o.emptyHeroSubtitle}>
244
+ {P==="image"?"Take a full-screen application snapshot or import photos from your device library.":P==="video"?"Record high-FPS screen videos with audio narration to reproduce and debug issues.":"Capture pixel-perfect screenshots, record 60fps screen videos, and export GIF animations with zero background overhead."}
245
+ </S>
246
246
 
247
247
 
248
248
  <T style={o.emptyActionsGrid}>
249
- <G onPress={ze}style={o.emptyActionCard}>
249
+ <O onPress={ze}style={o.emptyActionCard}>
250
250
  <T style={[o.actionCardIconBox,{backgroundColor:`${t.purple}14`}]}>
251
- <Fe size={18}color={t.purple}/>
251
+ <Ae size={18}color={t.purple}/>
252
252
  </T>
253
253
  <T style={o.actionCardTextBox}>
254
- <C style={o.actionCardTitle}>Take Screenshot</C>
255
- <C style={o.actionCardDesc}>Full-window lossless PNG</C>
254
+ <S style={o.actionCardTitle}>Take Screenshot</S>
255
+ <S style={o.actionCardDesc}>Full-window lossless PNG</S>
256
256
  </T>
257
- </G>
257
+ </O>
258
258
 
259
- <G onPress={K}style={o.emptyActionCard}>
259
+ <O onPress={ee}style={o.emptyActionCard}>
260
260
  <T style={[o.actionCardIconBox,{backgroundColor:`${t.sky600}14`}]}>
261
261
  <Ue size={18}color={t.sky600}/>
262
262
  </T>
263
263
  <T style={o.actionCardTextBox}>
264
- <C style={o.actionCardTitle}>Record Screen Video</C>
265
- <C style={o.actionCardDesc}>High-FPS MP4 with audio</C>
264
+ <S style={o.actionCardTitle}>Record Screen Video</S>
265
+ <S style={o.actionCardDesc}>High-FPS MP4 with audio</S>
266
266
  </T>
267
- </G>
267
+ </O>
268
268
 
269
- <G onPress={ve}style={o.emptyActionCard}>
269
+ <O onPress={ve}style={o.emptyActionCard}>
270
270
  <T style={[o.actionCardIconBox,{backgroundColor:`${t.emerald500}14`}]}>
271
- <We size={18}color={t.green600}/>
271
+ <Fe size={18}color={t.green600}/>
272
272
  </T>
273
273
  <T style={o.actionCardTextBox}>
274
- <C style={o.actionCardTitle}>Import from Camera Roll</C>
275
- <C style={o.actionCardDesc}>Device photos & videos</C>
274
+ <S style={o.actionCardTitle}>Import from Camera Roll</S>
275
+ <S style={o.actionCardDesc}>Device photos & videos</S>
276
276
  </T>
277
- </G>
277
+ </O>
278
278
  </T>
279
279
 
280
280
 
281
281
  <T style={o.featurePillsRow}>
282
282
  <T style={o.featurePill}>
283
- <C style={o.featurePillText}>⚡ Zero Overhead</C>
283
+ <S style={o.featurePillText}>{C("media.zeroOverhead","\u26A1 Zero Overhead")}</S>
284
284
  </T>
285
285
  <T style={o.featurePill}>
286
- <C style={o.featurePillText}>✂️ Crop & Annotate</C>
286
+ <S style={o.featurePillText}>{C("media.cropAndAnnotate","\u2702\uFE0F Crop & Annotate")}</S>
287
287
  </T>
288
288
  <T style={o.featurePill}>
289
- <C style={o.featurePillText}>🎞️ Convert to GIF</C>
289
+ <S style={o.featurePillText}>{C("media.convertToGif","\u{1F39E}\uFE0F Convert to GIF")}</S>
290
290
  </T>
291
291
  </T>
292
292
  </T>}/>
293
293
 
294
294
 
295
- <Vt item={xe}visible={!!xe}onClose={()=>W(null)}onDelete={Ve}onConvertToGif={Qe}/>
295
+ <Vt item={xe}visible={!!xe}onClose={()=>W(null)}onDelete={Ve}onConvertToGif={Qe}onSave={e=>{W(e),V()}}/>
296
296
 
297
297
 
298
- <Wt visible={L.visible}title={L.title}message={L.message}confirmText={L.confirmText}cancelText={L.cancelText}isDestructive={!0}icon="trash"onConfirm={L.onConfirm}onCancel={()=>U(e=>({...e,visible:!1}))}/>
299
- </T>};const{width:At}=rt.get("window"),$t=(At-36)/2,o=wt.create({container:{flex:1,backgroundColor:t.grayBackground},topHeaderBar:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingHorizontal:12,paddingVertical:10,backgroundColor:t.primaryLight,borderBottomWidth:1,borderBottomColor:t.grayBorderSecondary},backToTabBtn:{flexDirection:"row",alignItems:"center",gap:4,paddingVertical:4,paddingHorizontal:8,borderRadius:8,backgroundColor:`${t.purple}12`},backToTabText:{fontFamily:S.interBold,fontSize:11.5,color:t.purple},headerCenterTitle:{flexDirection:"row",alignItems:"center",gap:6},headerStudioTitle:{fontFamily:S.interBold,fontSize:13.5,color:t.grayTextStrong},headerBadge:{backgroundColor:`${t.purple}1A`,paddingHorizontal:6,paddingVertical:1.5,borderRadius:10},headerBadgeText:{fontFamily:S.interBold,fontSize:9.5,color:t.purple},closeCircleBtn:{width:26,height:26,borderRadius:13,backgroundColor:t.grayBackground,borderWidth:1,borderColor:t.grayBorderSecondary,alignItems:"center",justifyContent:"center"},recordingBanner:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",backgroundColor:`${t.red500}15`,borderBottomWidth:1,borderBottomColor:`${t.red500}30`,paddingHorizontal:14,paddingVertical:8},recordingDot:{width:8,height:8,borderRadius:4,backgroundColor:t.red500,marginRight:6},recordingBannerText:{fontFamily:S.interBold,fontSize:12,color:t.red500,flex:1},stopRecordBtn:{flexDirection:"row",alignItems:"center",gap:5,backgroundColor:t.red500,paddingHorizontal:10,paddingVertical:4.5,borderRadius:6},stopSquare:{width:8,height:8,backgroundColor:t.white,borderRadius:1},stopRecordBtnText:{fontFamily:S.interBold,fontSize:11,color:t.white},quickActionsBar:{flexDirection:"row",alignItems:"center",gap:8,paddingHorizontal:12,paddingTop:10,paddingBottom:6},quickBtn:{flex:1,flexDirection:"row",alignItems:"center",justifyContent:"center",gap:5,paddingVertical:7,paddingHorizontal:4,borderRadius:8,borderWidth:1},quickBtnText:{fontFamily:S.interBold,fontSize:11},filterBar:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingHorizontal:12,paddingVertical:8,borderBottomWidth:1,borderBottomColor:t.grayBorderSecondary,gap:8},chipGroup:{flexDirection:"row",alignItems:"center",gap:6,flexShrink:1},chip:{flexDirection:"row",alignItems:"center",gap:4,paddingHorizontal:8,paddingVertical:4.5,borderRadius:8,backgroundColor:t.primaryLight,borderWidth:1,borderColor:t.grayBorderSecondary},chipActive:{backgroundColor:`${t.purple}14`,borderColor:t.purple},chipText:{fontFamily:S.interMedium,fontSize:11,color:t.grayText},chipTextActive:{fontFamily:S.interBold,color:t.purple},chipBadge:{backgroundColor:t.grayBackground,paddingHorizontal:4.5,paddingVertical:1,borderRadius:6},chipBadgeActive:{backgroundColor:t.purple},chipBadgeText:{fontFamily:S.interBold,fontSize:9,color:t.grayTextWeak},chipBadgeTextActive:{color:t.white},viewToggleContainer:{flexDirection:"row",backgroundColor:t.primaryLight,borderRadius:8,borderWidth:1,borderColor:t.grayBorderSecondary,padding:2},viewToggleBtn:{paddingHorizontal:7,paddingVertical:4,borderRadius:6},viewToggleBtnActive:{backgroundColor:t.purple},subBar:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingHorizontal:12,paddingVertical:6.5,backgroundColor:t.primaryLight,borderBottomWidth:1,borderBottomColor:t.grayBorderSecondary},resultCountWrapper:{flex:1},resultCountText:{fontFamily:S.interMedium,fontSize:11,color:t.grayTextWeak},resultCountTextSelected:{fontFamily:S.interBold,color:t.purple},actionsGroup:{flexDirection:"row",alignItems:"center",gap:6},copySelectedBtn:{flexDirection:"row",alignItems:"center",gap:3.5,paddingHorizontal:7,paddingVertical:3.5,borderRadius:6,backgroundColor:t.grayBackground,borderWidth:1,borderColor:t.grayBorderSecondary},copySelectedBtnText:{fontFamily:S.interBold,fontSize:10,color:t.grayTextStrong},shareSelectedBtn:{flexDirection:"row",alignItems:"center",gap:3.5,paddingHorizontal:7,paddingVertical:3.5,borderRadius:6,backgroundColor:`${t.sky600}14`,borderWidth:1,borderColor:`${t.sky600}30`},shareSelectedBtnText:{fontFamily:S.interBold,fontSize:10,color:t.sky600},deleteBtn:{flexDirection:"row",alignItems:"center",gap:3.5,paddingHorizontal:7,paddingVertical:3.5,borderRadius:6,backgroundColor:`${t.red500}14`,borderWidth:1,borderColor:`${t.red500}30`},deleteBtnText:{fontFamily:S.interBold,fontSize:10,color:t.red500},clearBtn:{flexDirection:"row",alignItems:"center",gap:3.5,paddingHorizontal:7,paddingVertical:3.5,borderRadius:6,backgroundColor:`${t.red500}10`},clearBtnText:{fontFamily:S.interBold,fontSize:10,color:t.red500},listContent:{padding:12,paddingBottom:40},columnWrapper:{justifyContent:"space-between",marginBottom:10},card:{width:$t,backgroundColor:t.primaryLight,borderRadius:12,borderWidth:1,borderColor:t.grayBorderSecondary,overflow:"hidden",shadowColor:t.black,shadowOffset:{width:0,height:2},shadowOpacity:.04,shadowRadius:4,elevation:2},cardSelected:{borderColor:t.purple,borderWidth:2},thumbnailContainer:{width:"100%",height:110,backgroundColor:t.grayBackground,position:"relative"},thumbnail:{width:"100%",height:"100%"},thumbnailFallback:{flex:1,alignItems:"center",justifyContent:"center"},checkbox:{position:"absolute",top:7,left:7,width:19,height:19,borderRadius:5,backgroundColor:"rgba(0, 0, 0, 0.45)",borderWidth:1.5,borderColor:t.white,alignItems:"center",justifyContent:"center",zIndex:5},checkboxSelected:{backgroundColor:t.purple,borderColor:t.purple},miniPlayCircle:{position:"absolute",top:"50%",left:"50%",transform:[{translateX:-16},{translateY:-16}],width:32,height:32,borderRadius:16,backgroundColor:"rgba(0, 0, 0, 0.65)",alignItems:"center",justifyContent:"center"},typeBadge:{position:"absolute",top:7,right:7,paddingHorizontal:5,paddingVertical:2,borderRadius:4},typeBadgeText:{fontFamily:S.interBold,fontSize:8.5,color:t.white,letterSpacing:.3},durationBadge:{position:"absolute",bottom:6,right:6,backgroundColor:"rgba(0, 0, 0, 0.72)",paddingHorizontal:5,paddingVertical:1.5,borderRadius:4},durationBadgeText:{fontFamily:S.interBold,fontSize:9,color:t.white},cardInfo:{padding:8,gap:4},cardTitle:{fontFamily:S.interSemiBold,fontSize:11,color:t.grayTextStrong},cardMetaRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between"},cardMeta:{fontFamily:S.interRegular,fontSize:10,color:t.grayTextWeak},cardMetaDot:{fontSize:9,color:t.grayTextWeak},gridCopyBtn:{padding:2},listRow:{flexDirection:"row",alignItems:"center",backgroundColor:t.primaryLight,borderRadius:10,borderWidth:1,borderColor:t.grayBorderSecondary,padding:8,marginBottom:8,gap:10},listRowSelected:{borderColor:t.purple,borderWidth:1.5},listCheckbox:{width:18,height:18,borderRadius:4,borderWidth:1.5,borderColor:t.grayBorderSecondary,alignItems:"center",justifyContent:"center"},listThumbContainer:{width:48,height:48,borderRadius:8,backgroundColor:t.grayBackground,overflow:"hidden",position:"relative"},listThumb:{width:"100%",height:"100%"},listThumbFallback:{flex:1,alignItems:"center",justifyContent:"center"},listMiniPlay:{position:"absolute",bottom:2,right:2,backgroundColor:"rgba(0, 0, 0, 0.65)",borderRadius:3,padding:1.5},listInfo:{flex:1,gap:3},listTitle:{fontFamily:S.interSemiBold,fontSize:12,color:t.grayTextStrong},listMetaRow:{flexDirection:"row",alignItems:"center",gap:5},listBadge:{paddingHorizontal:4.5,paddingVertical:1,borderRadius:4},listBadgeText:{fontFamily:S.interBold,fontSize:9,letterSpacing:.3},listActionsRow:{flexDirection:"row",alignItems:"center",gap:4},listActionBtn:{padding:5,borderRadius:6,backgroundColor:t.grayBackground},emptyHeroCard:{backgroundColor:t.primaryLight,borderRadius:16,borderWidth:1,borderColor:t.grayBorderSecondary,padding:20,alignItems:"center",marginTop:8,shadowColor:t.black,shadowOffset:{width:0,height:2},shadowOpacity:.03,shadowRadius:6,elevation:2},emptyIconCircle:{width:64,height:64,borderRadius:32,backgroundColor:`${t.purple}14`,borderWidth:1,borderColor:`${t.purple}25`,alignItems:"center",justifyContent:"center",marginBottom:12},emptyHeroTitle:{fontFamily:S.interBold,fontSize:16,color:t.grayTextStrong,textAlign:"center",marginBottom:6},emptyHeroSubtitle:{fontFamily:S.interRegular,fontSize:12,lineHeight:17,color:t.grayText,textAlign:"center",marginBottom:18,paddingHorizontal:8},emptyActionsGrid:{width:"100%",gap:8,marginBottom:16},emptyActionCard:{flexDirection:"row",alignItems:"center",backgroundColor:t.grayBackground,borderRadius:10,borderWidth:1,borderColor:t.grayBorderSecondary,padding:10,gap:12},actionCardIconBox:{width:38,height:38,borderRadius:8,alignItems:"center",justifyContent:"center"},actionCardTextBox:{flex:1,gap:1.5},actionCardTitle:{fontFamily:S.interBold,fontSize:12.5,color:t.grayTextStrong},actionCardDesc:{fontFamily:S.interRegular,fontSize:10.5,color:t.grayTextWeak},featurePillsRow:{flexDirection:"row",alignItems:"center",justifyContent:"center",gap:6,flexWrap:"wrap",paddingTop:4},featurePill:{backgroundColor:t.grayBackground,paddingHorizontal:8,paddingVertical:3.5,borderRadius:12,borderWidth:1,borderColor:t.grayBorderSecondary},featurePillText:{fontFamily:S.interMedium,fontSize:9.5,color:t.grayTextWeak}});
298
+ <Ft visible={U.visible}title={U.title}message={U.message}confirmText={U.confirmText}cancelText={U.cancelText}isDestructive={!0}icon="trash"onConfirm={U.onConfirm}onCancel={()=>E(e=>({...e,visible:!1}))}/>
299
+ </T>};const{width:Wt}=rt.get("window"),$t=(Wt-36)/2,o=wt.create({container:{flex:1,backgroundColor:t.grayBackground},topHeaderBar:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingHorizontal:12,paddingVertical:10,backgroundColor:t.primaryLight,borderBottomWidth:1,borderBottomColor:t.grayBorderSecondary},backToTabBtn:{flexDirection:"row",alignItems:"center",gap:4,paddingVertical:4,paddingHorizontal:8,borderRadius:8,backgroundColor:`${t.purple}12`},backToTabText:{fontFamily:k.interBold,fontSize:11.5,color:t.purple},headerCenterTitle:{flexDirection:"row",alignItems:"center",gap:6},headerStudioTitle:{fontFamily:k.interBold,fontSize:13.5,color:t.grayTextStrong},headerBadge:{backgroundColor:`${t.purple}1A`,paddingHorizontal:6,paddingVertical:1.5,borderRadius:10},headerBadgeText:{fontFamily:k.interBold,fontSize:9.5,color:t.purple},closeCircleBtn:{width:26,height:26,borderRadius:13,backgroundColor:t.grayBackground,borderWidth:1,borderColor:t.grayBorderSecondary,alignItems:"center",justifyContent:"center"},recordingBanner:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",backgroundColor:`${t.red500}15`,borderBottomWidth:1,borderBottomColor:`${t.red500}30`,paddingHorizontal:14,paddingVertical:8},recordingDot:{width:8,height:8,borderRadius:4,backgroundColor:t.red500,marginRight:6},recordingBannerText:{fontFamily:k.interBold,fontSize:12,color:t.red500,flex:1},stopRecordBtn:{flexDirection:"row",alignItems:"center",gap:5,backgroundColor:t.red500,paddingHorizontal:10,paddingVertical:4.5,borderRadius:6},stopSquare:{width:8,height:8,backgroundColor:t.white,borderRadius:1},stopRecordBtnText:{fontFamily:k.interBold,fontSize:11,color:t.white},quickActionsBar:{flexDirection:"row",alignItems:"center",gap:8,paddingHorizontal:12,paddingTop:10,paddingBottom:6},quickBtn:{flex:1,flexDirection:"row",alignItems:"center",justifyContent:"center",gap:5,paddingVertical:7,paddingHorizontal:4,borderRadius:8,borderWidth:1},quickBtnText:{fontFamily:k.interBold,fontSize:11},filterBar:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingHorizontal:12,paddingVertical:8,borderBottomWidth:1,borderBottomColor:t.grayBorderSecondary,gap:8},chipGroup:{flexDirection:"row",alignItems:"center",gap:6,flexShrink:1},chip:{flexDirection:"row",alignItems:"center",gap:4,paddingHorizontal:8,paddingVertical:4.5,borderRadius:8,backgroundColor:t.primaryLight,borderWidth:1,borderColor:t.grayBorderSecondary},chipActive:{backgroundColor:`${t.purple}14`,borderColor:t.purple},chipText:{fontFamily:k.interMedium,fontSize:11,color:t.grayText},chipTextActive:{fontFamily:k.interBold,color:t.purple},chipBadge:{backgroundColor:t.grayBackground,paddingHorizontal:4.5,paddingVertical:1,borderRadius:6},chipBadgeActive:{backgroundColor:t.purple},chipBadgeText:{fontFamily:k.interBold,fontSize:9,color:t.grayTextWeak},chipBadgeTextActive:{color:t.white},viewToggleContainer:{flexDirection:"row",backgroundColor:t.primaryLight,borderRadius:8,borderWidth:1,borderColor:t.grayBorderSecondary,padding:2},viewToggleBtn:{paddingHorizontal:7,paddingVertical:4,borderRadius:6},viewToggleBtnActive:{backgroundColor:t.purple},subBar:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingHorizontal:12,paddingVertical:6.5,backgroundColor:t.primaryLight,borderBottomWidth:1,borderBottomColor:t.grayBorderSecondary},resultCountWrapper:{flex:1},resultCountText:{fontFamily:k.interMedium,fontSize:11,color:t.grayTextWeak},resultCountTextSelected:{fontFamily:k.interBold,color:t.purple},actionsGroup:{flexDirection:"row",alignItems:"center",gap:6},copySelectedBtn:{flexDirection:"row",alignItems:"center",gap:3.5,paddingHorizontal:7,paddingVertical:3.5,borderRadius:6,backgroundColor:t.grayBackground,borderWidth:1,borderColor:t.grayBorderSecondary},copySelectedBtnText:{fontFamily:k.interBold,fontSize:10,color:t.grayTextStrong},shareSelectedBtn:{flexDirection:"row",alignItems:"center",gap:3.5,paddingHorizontal:7,paddingVertical:3.5,borderRadius:6,backgroundColor:`${t.sky600}14`,borderWidth:1,borderColor:`${t.sky600}30`},shareSelectedBtnText:{fontFamily:k.interBold,fontSize:10,color:t.sky600},deleteBtn:{flexDirection:"row",alignItems:"center",gap:3.5,paddingHorizontal:7,paddingVertical:3.5,borderRadius:6,backgroundColor:`${t.red500}14`,borderWidth:1,borderColor:`${t.red500}30`},deleteBtnText:{fontFamily:k.interBold,fontSize:10,color:t.red500},clearBtn:{flexDirection:"row",alignItems:"center",gap:3.5,paddingHorizontal:7,paddingVertical:3.5,borderRadius:6,backgroundColor:`${t.red500}10`},clearBtnText:{fontFamily:k.interBold,fontSize:10,color:t.red500},listContent:{padding:12,paddingBottom:40},columnWrapper:{justifyContent:"space-between",marginBottom:10},card:{width:$t,backgroundColor:t.primaryLight,borderRadius:12,borderWidth:1,borderColor:t.grayBorderSecondary,overflow:"hidden",shadowColor:t.black,shadowOffset:{width:0,height:2},shadowOpacity:.04,shadowRadius:4,elevation:2},cardSelected:{borderColor:t.purple,borderWidth:2},thumbnailContainer:{width:"100%",height:110,backgroundColor:t.grayBackground,position:"relative"},thumbnail:{width:"100%",height:"100%"},thumbnailFallback:{flex:1,alignItems:"center",justifyContent:"center"},checkbox:{position:"absolute",top:7,left:7,width:19,height:19,borderRadius:5,backgroundColor:"rgba(0, 0, 0, 0.45)",borderWidth:1.5,borderColor:t.white,alignItems:"center",justifyContent:"center",zIndex:5},checkboxSelected:{backgroundColor:t.purple,borderColor:t.purple},miniPlayCircle:{position:"absolute",top:"50%",left:"50%",transform:[{translateX:-16},{translateY:-16}],width:32,height:32,borderRadius:16,backgroundColor:"rgba(0, 0, 0, 0.65)",alignItems:"center",justifyContent:"center"},typeBadge:{position:"absolute",top:7,right:7,paddingHorizontal:5,paddingVertical:2,borderRadius:4},typeBadgeText:{fontFamily:k.interBold,fontSize:8.5,color:t.white,letterSpacing:.3},durationBadge:{position:"absolute",bottom:6,right:6,backgroundColor:"rgba(0, 0, 0, 0.72)",paddingHorizontal:5,paddingVertical:1.5,borderRadius:4},durationBadgeText:{fontFamily:k.interBold,fontSize:9,color:t.white},cardInfo:{padding:8,gap:4},cardTitle:{fontFamily:k.interSemiBold,fontSize:11,color:t.grayTextStrong},cardMetaRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between"},cardMeta:{fontFamily:k.interRegular,fontSize:10,color:t.grayTextWeak},cardMetaDot:{fontSize:9,color:t.grayTextWeak},gridCopyBtn:{padding:2},listRow:{flexDirection:"row",alignItems:"center",backgroundColor:t.primaryLight,borderRadius:10,borderWidth:1,borderColor:t.grayBorderSecondary,padding:8,marginBottom:8,gap:10},listRowSelected:{borderColor:t.purple,borderWidth:1.5},listCheckbox:{width:18,height:18,borderRadius:4,borderWidth:1.5,borderColor:t.grayBorderSecondary,alignItems:"center",justifyContent:"center"},listThumbContainer:{width:48,height:48,borderRadius:8,backgroundColor:t.grayBackground,overflow:"hidden",position:"relative"},listThumb:{width:"100%",height:"100%"},listThumbFallback:{flex:1,alignItems:"center",justifyContent:"center"},listMiniPlay:{position:"absolute",bottom:2,right:2,backgroundColor:"rgba(0, 0, 0, 0.65)",borderRadius:3,padding:1.5},listInfo:{flex:1,gap:3},listTitle:{fontFamily:k.interSemiBold,fontSize:12,color:t.grayTextStrong},listMetaRow:{flexDirection:"row",alignItems:"center",gap:5},listBadge:{paddingHorizontal:4.5,paddingVertical:1,borderRadius:4},listBadgeText:{fontFamily:k.interBold,fontSize:9,letterSpacing:.3},listActionsRow:{flexDirection:"row",alignItems:"center",gap:4},listActionBtn:{padding:5,borderRadius:6,backgroundColor:t.grayBackground},emptyHeroCard:{backgroundColor:t.primaryLight,borderRadius:16,borderWidth:1,borderColor:t.grayBorderSecondary,padding:20,alignItems:"center",marginTop:8,shadowColor:t.black,shadowOffset:{width:0,height:2},shadowOpacity:.03,shadowRadius:6,elevation:2},emptyIconCircle:{width:64,height:64,borderRadius:32,backgroundColor:`${t.purple}14`,borderWidth:1,borderColor:`${t.purple}25`,alignItems:"center",justifyContent:"center",marginBottom:12},emptyHeroTitle:{fontFamily:k.interBold,fontSize:16,color:t.grayTextStrong,textAlign:"center",marginBottom:6},emptyHeroSubtitle:{fontFamily:k.interRegular,fontSize:12,lineHeight:17,color:t.grayText,textAlign:"center",marginBottom:18,paddingHorizontal:8},emptyActionsGrid:{width:"100%",gap:8,marginBottom:16},emptyActionCard:{flexDirection:"row",alignItems:"center",backgroundColor:t.grayBackground,borderRadius:10,borderWidth:1,borderColor:t.grayBorderSecondary,padding:10,gap:12},actionCardIconBox:{width:38,height:38,borderRadius:8,alignItems:"center",justifyContent:"center"},actionCardTextBox:{flex:1,gap:1.5},actionCardTitle:{fontFamily:k.interBold,fontSize:12.5,color:t.grayTextStrong},actionCardDesc:{fontFamily:k.interRegular,fontSize:10.5,color:t.grayTextWeak},featurePillsRow:{flexDirection:"row",alignItems:"center",justifyContent:"center",gap:6,flexWrap:"wrap",paddingTop:4},featurePill:{backgroundColor:t.grayBackground,paddingHorizontal:8,paddingVertical:3.5,borderRadius:12,borderWidth:1,borderColor:t.grayBorderSecondary},featurePillText:{fontFamily:k.interMedium,fontSize:9.5,color:t.grayTextWeak}});
@@ -44,6 +44,7 @@ interface MediaPreviewModalProps {
44
44
  onClose: () => void;
45
45
  onDelete: (item: CapturedMediaItem) => void;
46
46
  onConvertToGif?: (item: CapturedMediaItem) => void;
47
+ onSave?: (savedItem: CapturedMediaItem) => void;
47
48
  }
48
49
  export declare const MediaPreviewModal: React.FC<MediaPreviewModalProps>;
49
50
  export {};