react-native-inapp-inspector 2.5.2 → 2.5.3

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 (242) hide show
  1. package/android/.gradle/8.9/checksums/checksums.lock +0 -0
  2. package/android/.gradle/8.9/dependencies-accessors/gc.properties +0 -0
  3. package/android/.gradle/8.9/executionHistory/executionHistory.lock +0 -0
  4. package/android/.gradle/8.9/fileChanges/last-build.bin +0 -0
  5. package/android/.gradle/8.9/fileHashes/fileHashes.lock +0 -0
  6. package/android/.gradle/8.9/gc.properties +0 -0
  7. package/android/.gradle/9.2.0/checksums/checksums.lock +0 -0
  8. package/android/.gradle/9.2.0/fileChanges/last-build.bin +0 -0
  9. package/android/.gradle/9.2.0/fileHashes/fileHashes.bin +0 -0
  10. package/android/.gradle/9.2.0/fileHashes/fileHashes.lock +0 -0
  11. package/android/.gradle/9.2.0/gc.properties +0 -0
  12. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  13. package/android/.gradle/buildOutputCleanup/cache.properties +2 -0
  14. package/android/.gradle/vcs-1/gc.properties +0 -0
  15. package/android/.settings/org.eclipse.buildship.core.prefs +13 -0
  16. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/results.bin +1 -0
  17. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/BuildConfig.dex +0 -0
  18. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/InAppInspectorFloatingView$iconView$1.dex +0 -0
  19. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/InAppInspectorFloatingView.dex +0 -0
  20. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NativeNetworkInspectorSpec.dex +0 -0
  21. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorModule$Companion.dex +0 -0
  22. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorModule$activityEventListener$1.dex +0 -0
  23. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorModule$frameCallback$1.dex +0 -0
  24. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorModule$getCapturedMedia$lambda$57$$inlined$sortedByDescending$1.dex +0 -0
  25. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorModule$shakeListener$1.dex +0 -0
  26. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorModule$startVideoRecording$2$1.dex +0 -0
  27. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorModule.dex +0 -0
  28. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/inappinspector/NetworkInspectorPackage.dex +0 -0
  29. package/android/build/.transforms/ad628164ecef2a7cc593f0fd2f4050ce/transformed/bundleLibRuntimeToDirDebug/desugar_graph.bin +0 -0
  30. package/android/build/.transforms/c93e459e24d856bde563ebb048265732/results.bin +1 -0
  31. package/android/build/.transforms/c93e459e24d856bde563ebb048265732/transformed/classes/classes_dex/classes.dex +0 -0
  32. package/android/build/generated/source/buildConfig/debug/com/inappinspector/BuildConfig.java +10 -0
  33. package/android/build/generated/source/codegen/java/com/inappinspector/NativeNetworkInspectorSpec.java +160 -0
  34. package/android/build/generated/source/codegen/jni/CMakeLists.txt +28 -0
  35. package/android/build/generated/source/codegen/jni/RNInAppInspectorSpec-generated.cpp +212 -0
  36. package/android/build/generated/source/codegen/jni/RNInAppInspectorSpec.h +31 -0
  37. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/ComponentDescriptors.cpp +22 -0
  38. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/ComponentDescriptors.h +24 -0
  39. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/EventEmitters.cpp +16 -0
  40. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/EventEmitters.h +17 -0
  41. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/Props.cpp +19 -0
  42. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/Props.h +18 -0
  43. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/RNInAppInspectorSpecJSI.h +300 -0
  44. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/ShadowNodes.cpp +17 -0
  45. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/ShadowNodes.h +23 -0
  46. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/States.cpp +16 -0
  47. package/android/build/generated/source/codegen/jni/react/renderer/components/RNInAppInspectorSpec/States.h +20 -0
  48. package/android/build/generated/source/codegen/schema.json +1 -0
  49. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml +7 -0
  50. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json +18 -0
  51. package/android/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties +6 -0
  52. package/android/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json +1 -0
  53. package/android/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar +0 -0
  54. package/android/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar +0 -0
  55. package/android/build/intermediates/compile_symbol_list/debug/generateDebugRFile/R.txt +0 -0
  56. package/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +1 -0
  57. package/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml +2 -0
  58. package/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +2 -0
  59. package/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +2 -0
  60. package/android/build/intermediates/incremental/packageDebugAssets/merger.xml +2 -0
  61. package/android/build/intermediates/java_res/debug/processDebugJavaRes/out/META-INF/react-native-inapp-inspector_debug.kotlin_module +0 -0
  62. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/inappinspector/BuildConfig.class +0 -0
  63. package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/inappinspector/NativeNetworkInspectorSpec.class +0 -0
  64. package/android/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt +2 -0
  65. package/android/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt +7 -0
  66. package/android/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml +7 -0
  67. package/android/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json +1 -0
  68. package/android/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt +1 -0
  69. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/META-INF/react-native-inapp-inspector_debug.kotlin_module +0 -0
  70. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/BuildConfig.class +0 -0
  71. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/InAppInspectorFloatingView$iconView$1.class +0 -0
  72. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/InAppInspectorFloatingView.class +0 -0
  73. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NativeNetworkInspectorSpec.class +0 -0
  74. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorModule$Companion.class +0 -0
  75. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorModule$activityEventListener$1.class +0 -0
  76. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorModule$frameCallback$1.class +0 -0
  77. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorModule$getCapturedMedia$lambda$57$$inlined$sortedByDescending$1.class +0 -0
  78. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorModule$shakeListener$1.class +0 -0
  79. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorModule$startVideoRecording$2$1.class +0 -0
  80. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorModule.class +0 -0
  81. package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/inappinspector/NetworkInspectorPackage.class +0 -0
  82. package/android/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar +0 -0
  83. package/android/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt +1 -0
  84. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab +0 -0
  85. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream +0 -0
  86. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len +0 -0
  87. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len +0 -0
  88. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at +0 -0
  89. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i +0 -0
  90. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i.len +0 -0
  91. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab +0 -0
  92. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream +0 -0
  93. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len +0 -0
  94. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len +0 -0
  95. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at +0 -0
  96. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i +0 -0
  97. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i.len +0 -0
  98. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab +0 -0
  99. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream +0 -0
  100. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len +0 -0
  101. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len +0 -0
  102. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at +0 -0
  103. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i +0 -0
  104. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len +0 -0
  105. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab +0 -0
  106. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream +0 -0
  107. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream.len +0 -0
  108. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.len +0 -0
  109. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.values.at +0 -0
  110. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i +0 -0
  111. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i.len +0 -0
  112. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab +0 -0
  113. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream +0 -0
  114. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len +0 -0
  115. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len +0 -0
  116. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at +0 -0
  117. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i +0 -0
  118. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len +0 -0
  119. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab +0 -0
  120. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream +0 -0
  121. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len +0 -0
  122. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len +0 -0
  123. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at +0 -0
  124. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i +0 -0
  125. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len +0 -0
  126. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab +0 -0
  127. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream +0 -0
  128. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len +0 -0
  129. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len +0 -0
  130. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at +0 -0
  131. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i +0 -0
  132. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len +0 -0
  133. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab +0 -0
  134. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream +0 -0
  135. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len +0 -0
  136. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len +0 -0
  137. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at +0 -0
  138. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i +0 -0
  139. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i.len +0 -0
  140. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab +0 -0
  141. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream +0 -0
  142. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len +0 -0
  143. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len +0 -0
  144. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at +0 -0
  145. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i +0 -0
  146. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i.len +0 -0
  147. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/counters.tab +2 -0
  148. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab +0 -0
  149. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream +0 -0
  150. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len +0 -0
  151. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len +0 -0
  152. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at +0 -0
  153. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i +0 -0
  154. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len +0 -0
  155. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab +0 -0
  156. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream +0 -0
  157. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len +0 -0
  158. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len +0 -0
  159. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at +0 -0
  160. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i +0 -0
  161. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len +0 -0
  162. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab +0 -0
  163. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream +0 -0
  164. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len +0 -0
  165. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.len +0 -0
  166. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at +0 -0
  167. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i +0 -0
  168. package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len +0 -0
  169. package/android/build/kotlin/compileDebugKotlin/cacheable/last-build.bin +0 -0
  170. package/android/build/kotlin/compileDebugKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin +0 -0
  171. package/android/build/kotlin/compileDebugKotlin/local-state/build-history.bin +0 -0
  172. package/android/build/outputs/logs/manifest-merger-debug-report.txt +17 -0
  173. package/android/build/reports/problems/problems-report.html +659 -0
  174. package/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
  175. package/android/build/tmp/kotlin-classes/debug/META-INF/react-native-inapp-inspector_debug.kotlin_module +0 -0
  176. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/InAppInspectorFloatingView$iconView$1.class +0 -0
  177. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/InAppInspectorFloatingView.class +0 -0
  178. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorModule$Companion.class +0 -0
  179. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorModule$activityEventListener$1.class +0 -0
  180. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorModule$frameCallback$1.class +0 -0
  181. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorModule$getCapturedMedia$lambda$57$$inlined$sortedByDescending$1.class +0 -0
  182. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorModule$shakeListener$1.class +0 -0
  183. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorModule$startVideoRecording$2$1.class +0 -0
  184. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorModule.class +0 -0
  185. package/android/build/tmp/kotlin-classes/debug/com/inappinspector/NetworkInspectorPackage.class +0 -0
  186. package/dist/commonjs/components/CountryFlag.d.ts +10 -0
  187. package/dist/commonjs/components/CountryFlag.js +140 -0
  188. package/dist/commonjs/components/EmptyState.js +6 -6
  189. package/dist/commonjs/components/Inspector/DeviceInfoTab.js +36 -36
  190. package/dist/commonjs/components/Inspector/FloatingCaptureWidget.js +10 -10
  191. package/dist/commonjs/components/Inspector/GlobalCrashScreenModal.js +24 -24
  192. package/dist/commonjs/components/Inspector/InspectorHeader.js +6 -8
  193. package/dist/commonjs/components/Inspector/LanguageSelectorModal.js +23 -18
  194. package/dist/commonjs/components/Inspector/MainScreen.js +9 -9
  195. package/dist/commonjs/components/Inspector/MediaPreviewModal.js +268 -270
  196. package/dist/commonjs/components/Inspector/NetworkFilterModal.js +21 -21
  197. package/dist/commonjs/components/Inspector/SecondaryTelemetryStrip.js +6 -6
  198. package/dist/commonjs/components/Inspector/SocketFilterModal.js +12 -12
  199. package/dist/commonjs/components/Inspector/TabBar.js +3 -3
  200. package/dist/commonjs/components/Inspector/UpdateAvailableModal.js +2 -2
  201. package/dist/commonjs/components/MetaAccordion.js +17 -17
  202. package/dist/commonjs/components/ModuleErrorBoundary.js +4 -4
  203. package/dist/commonjs/components/NetworkIcons.d.ts +7 -0
  204. package/dist/commonjs/components/NetworkIcons.js +33 -2
  205. package/dist/commonjs/components/SourcePageCard.js +9 -9
  206. package/dist/commonjs/constants/telemetryConfig.d.ts +3 -3
  207. package/dist/commonjs/constants/telemetryConfig.js +1 -1
  208. package/dist/commonjs/constants/version.d.ts +1 -1
  209. package/dist/commonjs/constants/version.js +1 -1
  210. package/dist/commonjs/i18n/locales/en.json +1 -1
  211. package/dist/commonjs/index.js +1 -1
  212. package/dist/commonjs/styles/AppColors.d.ts +76 -0
  213. package/dist/commonjs/styles/AppColors.js +1 -1
  214. package/dist/esm/components/CountryFlag.d.ts +10 -0
  215. package/dist/esm/components/CountryFlag.js +140 -0
  216. package/dist/esm/components/EmptyState.js +13 -13
  217. package/dist/esm/components/Inspector/DeviceInfoTab.js +176 -176
  218. package/dist/esm/components/Inspector/FloatingCaptureWidget.js +29 -29
  219. package/dist/esm/components/Inspector/GlobalCrashScreenModal.js +9 -9
  220. package/dist/esm/components/Inspector/InspectorHeader.js +16 -18
  221. package/dist/esm/components/Inspector/LanguageSelectorModal.js +107 -102
  222. package/dist/esm/components/Inspector/MainScreen.js +16 -16
  223. package/dist/esm/components/Inspector/MediaPreviewModal.js +577 -579
  224. package/dist/esm/components/Inspector/NetworkFilterModal.js +37 -37
  225. package/dist/esm/components/Inspector/SecondaryTelemetryStrip.js +20 -20
  226. package/dist/esm/components/Inspector/SocketFilterModal.js +32 -32
  227. package/dist/esm/components/Inspector/TabBar.js +12 -12
  228. package/dist/esm/components/Inspector/UpdateAvailableModal.js +11 -11
  229. package/dist/esm/components/MetaAccordion.js +24 -24
  230. package/dist/esm/components/ModuleErrorBoundary.js +20 -20
  231. package/dist/esm/components/NetworkIcons.d.ts +7 -0
  232. package/dist/esm/components/NetworkIcons.js +243 -212
  233. package/dist/esm/components/SourcePageCard.js +21 -21
  234. package/dist/esm/constants/telemetryConfig.d.ts +3 -3
  235. package/dist/esm/constants/telemetryConfig.js +1 -1
  236. package/dist/esm/constants/version.d.ts +1 -1
  237. package/dist/esm/constants/version.js +1 -1
  238. package/dist/esm/i18n/locales/en.json +1 -1
  239. package/dist/esm/index.js +1 -1
  240. package/dist/esm/styles/AppColors.d.ts +76 -0
  241. package/dist/esm/styles/AppColors.js +1 -1
  242. package/package.json +1 -1
@@ -1,812 +1,810 @@
1
- import Ao,{useCallback as Je,useContext as pr,useEffect as hi,useMemo as oo,useRef as V,useState as O}from"react";import{Animated as Gt,Dimensions as ci,Image as Co,Modal as Ci,PanResponder as Lt,Platform as io,Pressable as Oo,ScrollView as Ti,Share as Mi,StatusBar as Fi,StyleSheet as L,Text as F,TextInput as Cr,TouchableOpacity as P,useWindowDimensions as Tr,View as C}from"react-native";import Mr from"react-native-linear-gradient";import Fr,{Circle as Si,Ellipse as To,G as Ct,Line as $t,Path as Mo,Polygon as Ri,Rect as Nt,Text as Pi}from"react-native-svg";import{AppColors as M}from"../../styles/AppColors";import{AppFonts as E}from"../../styles/AppFonts";import Bt from"../TouchableScale";import{InspectorContext as kr}from"./InspectorContext";import{ConfirmationModal as Sr}from"./ConfirmationModal";import{ArrowRightIcon as Rr,CameraRollIcon as Fo,CheckIcon as Pr,CloseWhite as Bi,CropIcon as Ii,EyeCompareIcon as Br,EyeIcon as Ai,FilmIcon as Ir,GifIcon as Do,GridlinesIcon as Wo,HighlighterIcon as Ar,MaximizeIcon as Or,MoreDotsIcon as Dr,PauseIcon as Oi,PenIcon as Vo,PixelateIcon as Wr,PlayIcon as Ho,RedactIcon as Vr,RedoIcon as Hr,ResetIcon as Di,RotateIcon as Er,SaveIcon as Gr,ScissorsIcon as Wi,ShareIcon as Lr,SunAdjustIcon as Vi,TrashIcon as $r,TypeIcon as Hi,UndoIcon as Ei,VolumeXIcon as So,WhiteBackNavigation as Nr,ZapIcon as Eo,ZoomInIcon as Ur,ZoomOutIcon as Xr}from"../NetworkIcons";import{ScreenCapture as Yr}from"../../capture";import{MediaEditor as Tt}from"../../editor";import{formatBytes as Gi}from"../../helpers";import{showToast as H}from"../../helpers/toast";import{useTranslation as _r}from"../../i18n";import{triggerNativeHaptic as R}from"../../native/NativeInspector";const Li=["#EF4444","#F59E0B","#38BDF8","#10B981","#A855F7","#FFFFFF","#0F172A"],Zr=({textItem:r,canvasWidth:Ae,canvasHeight:Me,scale:It,onUpdate:Mt,onDelete:z,onEdit:Oe})=>{const K=V(new Gt.ValueXY({x:0,y:0})).current,Ye=V(r);Ye.current=r;const _e=V(Ae);_e.current=Ae;const De=V(Me);De.current=Me;const Le=V(It);Le.current=It;const pe=V(Mt);pe.current=Mt;const _=V(!1),N=V(Lt.create({onStartShouldSetPanResponder:()=>!0,onStartShouldSetPanResponderCapture:()=>!1,onMoveShouldSetPanResponder:(ce,$)=>Math.abs($.dx)>3||Math.abs($.dy)>3,onMoveShouldSetPanResponderCapture:()=>!1,onPanResponderTerminationRequest:()=>!1,onShouldBlockNativeResponder:()=>!0,onPanResponderGrant:()=>{_.current=!1,K.setValue({x:0,y:0})},onPanResponderMove:(ce,$)=>{(Math.abs($.dx)>3||Math.abs($.dy)>3)&&(_.current=!0),K.setValue({x:$.dx,y:$.dy})},onPanResponderRelease:(ce,$)=>{if(!_.current){Oe(Ye.current),K.setValue({x:0,y:0});return}const ae=(_e.current||300)*(Le.current||1),se=(De.current||500)*(Le.current||1),le=$.dx/ae,ge=$.dy/se,oe=Ye.current,et=Math.max(0,Math.min(.85,oe.x+le)),Ze=Math.max(0,Math.min(.92,oe.y+ge));K.setValue({x:0,y:0}),pe.current(oe.id,{x:et,y:Ze})},onPanResponderTerminate:()=>{K.setValue({x:0,y:0}),_.current=!1}})).current;return<Gt.View{...N.panHandlers}style={[t.textAnnotationPill,{left:`${r.x*100}%`,top:`${r.y*100}%`,backgroundColor:r.bgColor,transform:K.getTranslateTransform()}]}>
2
- <F style={[t.textAnnotationText,{color:r.color}]}pointerEvents="none">
3
- {r.text}
4
- </F>
5
- <P style={t.textDeleteBtn}onPress={()=>z(r.id)}hitSlop={{top:10,bottom:10,left:10,right:10}}>
1
+ import Ao,{useCallback as ot,useContext as pr,useEffect as hi,useMemo as oo,useRef as G,useState as V}from"react";import{Animated as Gt,Dimensions as ci,Image as Co,Modal as Ci,PanResponder as Lt,Platform as io,Pressable as Oo,ScrollView as Ti,Share as Mi,StatusBar as Fi,StyleSheet as N,Text as R,TextInput as Cr,TouchableOpacity as A,useWindowDimensions as Tr,View as F}from"react-native";import Mr from"react-native-linear-gradient";import Fr,{Circle as Si,Ellipse as To,G as Ct,Line as $t,Path as Mo,Polygon as Ri,Rect as Nt,Text as Pi}from"react-native-svg";import{AppColors as S}from"../../styles/AppColors";import{AppFonts as $}from"../../styles/AppFonts";import Bt from"../TouchableScale";import{InspectorContext as kr}from"./InspectorContext";import{ConfirmationModal as Sr}from"./ConfirmationModal";import{ArrowRightIcon as Rr,CameraRollIcon as Fo,CheckIcon as Pr,CloseWhite as Bi,CropIcon as Ii,EyeCompareIcon as Br,EyeIcon as Ai,FilmIcon as Ir,GifIcon as Do,GridlinesIcon as Wo,HighlighterIcon as Ar,MaximizeIcon as Or,MoreDotsIcon as Dr,PauseIcon as Oi,PenIcon as Vo,PixelateIcon as Wr,PlayIcon as Eo,RedactIcon as Vr,RedoIcon as Er,ResetIcon as Di,RotateIcon as Hr,SaveIcon as Gr,ScissorsIcon as Wi,ShareIcon as Lr,SunAdjustIcon as Vi,TrashIcon as $r,TypeIcon as Ei,UndoIcon as Hi,VolumeXIcon as So,WhiteBackNavigation as Nr,ZoomInIcon as Ur,ZoomOutIcon as Xr,BrightnessIcon as Yr,ContrastIcon as _r,SaturationIcon as Zr,WarmthIcon as qr,ExposureIcon as Qr,VignetteIcon as Kr,ZapIcon as Ho}from"../NetworkIcons";import{ScreenCapture as Jr}from"../../capture";import{MediaEditor as Tt}from"../../editor";import{formatBytes as Gi}from"../../helpers";import{showToast as L}from"../../helpers/toast";import{useTranslation as en}from"../../i18n";import{triggerNativeHaptic as B}from"../../native/NativeInspector";const Li=["#EF4444","#F59E0B","#38BDF8","#10B981","#A855F7","#FFFFFF","#0F172A"],Cn=({textItem:M,canvasWidth:De,canvasHeight:ke,scale:It,onUpdate:Mt,onDelete:I,onEdit:We})=>{const te=G(new Gt.ValueXY({x:0,y:0})).current,qe=G(M);qe.current=M;const Qe=G(De);Qe.current=De;const Ve=G(ke);Ve.current=ke;const Ne=G(It);Ne.current=It;const me=G(Mt);me.current=Mt;const Q=G(!1),Y=G(Lt.create({onStartShouldSetPanResponder:()=>!0,onStartShouldSetPanResponderCapture:()=>!1,onMoveShouldSetPanResponder:(ge,U)=>Math.abs(U.dx)>3||Math.abs(U.dy)>3,onMoveShouldSetPanResponderCapture:()=>!1,onPanResponderTerminationRequest:()=>!1,onShouldBlockNativeResponder:()=>!0,onPanResponderGrant:()=>{Q.current=!1,te.setValue({x:0,y:0})},onPanResponderMove:(ge,U)=>{(Math.abs(U.dx)>3||Math.abs(U.dy)>3)&&(Q.current=!0),te.setValue({x:U.dx,y:U.dy})},onPanResponderRelease:(ge,U)=>{if(!Q.current){We(qe.current),te.setValue({x:0,y:0});return}const de=(Qe.current||300)*(Ne.current||1),he=(Ve.current||500)*(Ne.current||1),ce=U.dx/de,be=U.dy/he,ne=qe.current,it=Math.max(0,Math.min(.85,ne.x+ce)),Ke=Math.max(0,Math.min(.92,ne.y+be));te.setValue({x:0,y:0}),me.current(ne.id,{x:it,y:Ke})},onPanResponderTerminate:()=>{te.setValue({x:0,y:0}),Q.current=!1}})).current;return<Gt.View{...Y.panHandlers}style={[t.textAnnotationPill,{left:`${M.x*100}%`,top:`${M.y*100}%`,backgroundColor:M.bgColor,transform:te.getTranslateTransform()}]}>
2
+ <R style={[t.textAnnotationText,{color:M.color}]}pointerEvents="none">
3
+ {M.text}
4
+ </R>
5
+ <A style={t.textDeleteBtn}onPress={()=>I(M.id)}hitSlop={{top:10,bottom:10,left:10,right:10}}>
6
6
  <Bi size={8}/>
7
- </P>
8
- </Gt.View>},Qr=({cropBox:r,imageWidth:Ae,imageHeight:Me,imageOffsetX:It,imageOffsetY:Mt,scale:z,onUpdateCropBox:Oe,onApplyCrop:K,onCancelCrop:Ye})=>{const _e=Math.max(0,Math.min(.9,isFinite(r?.x)?r.x:.08)),De=Math.max(0,Math.min(.9,isFinite(r?.y)?r.y:.12)),Le=Math.max(.1,Math.min(1-_e,isFinite(r?.width)?r.width:.84)),pe=Math.max(.1,Math.min(1-De,isFinite(r?.height)?r.height:.76)),_=It+_e*Ae,N=Mt+De*Me,ce=Le*Ae,$=pe*Me,ae=V({x:_e,y:De,width:Le,height:pe});ae.current={x:_e,y:De,width:Le,height:pe};const se=V(Ae);se.current=Ae;const le=V(Me);le.current=Me;const ge=V(z);ge.current=z;const oe=V(Oe);oe.current=Oe;const et=V({origBox:{x:.08,y:.12,width:.84,height:.76}}),Ze=V(Lt.create({onStartShouldSetPanResponder:()=>!0,onMoveShouldSetPanResponder:(de,je)=>Math.abs(je.dx)>3||Math.abs(je.dy)>3,onPanResponderTerminationRequest:()=>!1,onShouldBlockNativeResponder:()=>!0,onPanResponderGrant:()=>{et.current.origBox={...ae.current}},onPanResponderMove:(de,je)=>{const Ne=se.current*(ge.current||1),qe=le.current*(ge.current||1);if(!Ne||!qe)return;const{x:B,y:U,width:ie,height:ye}=et.current.origBox,X=Math.max(0,Math.min(1-ie,B+je.dx/Ne)),ve=Math.max(0,Math.min(1-ye,U+je.dy/qe));oe.current({x:X,y:ve,width:ie,height:ye})},onPanResponderRelease:()=>{}})).current,$e=de=>Lt.create({onStartShouldSetPanResponder:()=>!0,onMoveShouldSetPanResponder:(je,Ne)=>Math.abs(Ne.dx)>2||Math.abs(Ne.dy)>2,onPanResponderTerminationRequest:()=>!1,onShouldBlockNativeResponder:()=>!0,onPanResponderGrant:()=>{et.current.origBox={...ae.current}},onPanResponderMove:(je,Ne)=>{const qe=se.current*(ge.current||1),B=le.current*(ge.current||1);if(!qe||!B)return;const U=Ne.dx/qe,ie=Ne.dy/B,{x:ye,y:X,width:ve,height:be}=et.current.origBox,tt=.1;let We=ye,vt=X,Pe=ve,At=be;(de==="tl"||de==="left"||de==="bl")&&(We=Math.max(0,Math.min(ye+ve-tt,ye+U)),Pe=ve-(We-ye)),(de==="tr"||de==="right"||de==="br")&&(Pe=Math.max(tt,Math.min(1-ye,ve+U))),(de==="tl"||de==="top"||de==="tr")&&(vt=Math.max(0,Math.min(X+be-tt,X+ie)),At=be-(vt-X)),(de==="bl"||de==="bottom"||de==="br")&&(At=Math.max(tt,Math.min(1-X,be+ie))),oe.current({x:We,y:vt,width:Pe,height:At})},onPanResponderRelease:()=>{}}),Re=V({tl:$e("tl"),tr:$e("tr"),bl:$e("bl"),br:$e("br"),top:$e("top"),bottom:$e("bottom"),left:$e("left"),right:$e("right")}).current;return Ae<20||Me<20?null:<C style={L.absoluteFill}pointerEvents="box-none">
7
+ </A>
8
+ </Gt.View>},Tn=({cropBox:M,imageWidth:De,imageHeight:ke,imageOffsetX:It,imageOffsetY:Mt,scale:I,onUpdateCropBox:We,onApplyCrop:te,onCancelCrop:qe})=>{const Qe=Math.max(0,Math.min(.9,isFinite(M?.x)?M.x:.08)),Ve=Math.max(0,Math.min(.9,isFinite(M?.y)?M.y:.12)),Ne=Math.max(.1,Math.min(1-Qe,isFinite(M?.width)?M.width:.84)),me=Math.max(.1,Math.min(1-Ve,isFinite(M?.height)?M.height:.76)),Q=It+Qe*De,Y=Mt+Ve*ke,ge=Ne*De,U=me*ke,de=G({x:Qe,y:Ve,width:Ne,height:me});de.current={x:Qe,y:Ve,width:Ne,height:me};const he=G(De);he.current=De;const ce=G(ke);ce.current=ke;const be=G(I);be.current=I;const ne=G(We);ne.current=We;const it=G({origBox:{x:.08,y:.12,width:.84,height:.76}}),Ke=G(Lt.create({onStartShouldSetPanResponder:()=>!0,onMoveShouldSetPanResponder:(ue,Xe)=>Math.abs(Xe.dx)>3||Math.abs(Xe.dy)>3,onPanResponderTerminationRequest:()=>!1,onShouldBlockNativeResponder:()=>!0,onPanResponderGrant:()=>{it.current.origBox={...de.current}},onPanResponderMove:(ue,Xe)=>{const Ye=he.current*(be.current||1),Je=ce.current*(be.current||1);if(!Ye||!Je)return;const{x:O,y:_,width:ae,height:xe}=it.current.origBox,Z=Math.max(0,Math.min(1-ae,O+Xe.dx/Ye)),Se=Math.max(0,Math.min(1-xe,_+Xe.dy/Je));ne.current({x:Z,y:Se,width:ae,height:xe})},onPanResponderRelease:()=>{}})).current,Ue=ue=>Lt.create({onStartShouldSetPanResponder:()=>!0,onMoveShouldSetPanResponder:(Xe,Ye)=>Math.abs(Ye.dx)>2||Math.abs(Ye.dy)>2,onPanResponderTerminationRequest:()=>!1,onShouldBlockNativeResponder:()=>!0,onPanResponderGrant:()=>{it.current.origBox={...de.current}},onPanResponderMove:(Xe,Ye)=>{const Je=he.current*(be.current||1),O=ce.current*(be.current||1);if(!Je||!O)return;const _=Ye.dx/Je,ae=Ye.dy/O,{x:xe,y:Z,width:Se,height:we}=it.current.origBox,rt=.1;let Ee=xe,vt=Z,Be=Se,At=we;(ue==="tl"||ue==="left"||ue==="bl")&&(Ee=Math.max(0,Math.min(xe+Se-rt,xe+_)),Be=Se-(Ee-xe)),(ue==="tr"||ue==="right"||ue==="br")&&(Be=Math.max(rt,Math.min(1-xe,Se+_))),(ue==="tl"||ue==="top"||ue==="tr")&&(vt=Math.max(0,Math.min(Z+we-rt,Z+ae)),At=we-(vt-Z)),(ue==="bl"||ue==="bottom"||ue==="br")&&(At=Math.max(rt,Math.min(1-Z,we+ae))),ne.current({x:Ee,y:vt,width:Be,height:At})},onPanResponderRelease:()=>{}}),ze=G({tl:Ue("tl"),tr:Ue("tr"),bl:Ue("bl"),br:Ue("br"),top:Ue("top"),bottom:Ue("bottom"),left:Ue("left"),right:Ue("right")}).current;return De<20||ke<20?null:<F style={N.absoluteFill}pointerEvents="box-none">
9
9
 
10
- <C style={L.absoluteFill}pointerEvents="none">
10
+ <F style={N.absoluteFill}pointerEvents="none">
11
11
 
12
- <C style={{position:"absolute",top:0,left:0,right:0,height:N,backgroundColor:"rgba(0,0,0,0.6)"}}/>
12
+ <F style={{position:"absolute",top:0,left:0,right:0,height:Y,backgroundColor:"rgba(0,0,0,0.6)"}}/>
13
13
 
14
- <C style={{position:"absolute",top:N+$,left:0,right:0,bottom:0,backgroundColor:"rgba(0,0,0,0.6)"}}/>
14
+ <F style={{position:"absolute",top:Y+U,left:0,right:0,bottom:0,backgroundColor:"rgba(0,0,0,0.6)"}}/>
15
15
 
16
- <C style={{position:"absolute",top:N,left:0,width:_,height:$,backgroundColor:"rgba(0,0,0,0.6)"}}/>
16
+ <F style={{position:"absolute",top:Y,left:0,width:Q,height:U,backgroundColor:"rgba(0,0,0,0.6)"}}/>
17
17
 
18
- <C style={{position:"absolute",top:N,left:_+ce,right:0,height:$,backgroundColor:"rgba(0,0,0,0.6)"}}/>
19
- </C>
18
+ <F style={{position:"absolute",top:Y,left:Q+ge,right:0,height:U,backgroundColor:"rgba(0,0,0,0.6)"}}/>
19
+ </F>
20
20
 
21
21
 
22
- <C style={{position:"absolute",left:_,top:N,width:ce,height:$,borderWidth:2,borderColor:"#00E5FF",backgroundColor:"transparent",zIndex:200}}pointerEvents="box-none">
22
+ <F style={{position:"absolute",left:Q,top:Y,width:ge,height:U,borderWidth:2,borderColor:"#00E5FF",backgroundColor:"transparent",zIndex:200}}pointerEvents="box-none">
23
23
 
24
24
 
25
- <C pointerEvents="none"style={{position:"absolute",left:0,right:0,top:"33.33%",height:1,backgroundColor:"rgba(0,229,255,0.35)"}}/>
26
- <C pointerEvents="none"style={{position:"absolute",left:0,right:0,top:"66.66%",height:1,backgroundColor:"rgba(0,229,255,0.35)"}}/>
27
- <C pointerEvents="none"style={{position:"absolute",top:0,bottom:0,left:"33.33%",width:1,backgroundColor:"rgba(0,229,255,0.35)"}}/>
28
- <C pointerEvents="none"style={{position:"absolute",top:0,bottom:0,left:"66.66%",width:1,backgroundColor:"rgba(0,229,255,0.35)"}}/>
25
+ <F pointerEvents="none"style={{position:"absolute",left:0,right:0,top:"33.33%",height:1,backgroundColor:"rgba(0,229,255,0.35)"}}/>
26
+ <F pointerEvents="none"style={{position:"absolute",left:0,right:0,top:"66.66%",height:1,backgroundColor:"rgba(0,229,255,0.35)"}}/>
27
+ <F pointerEvents="none"style={{position:"absolute",top:0,bottom:0,left:"33.33%",width:1,backgroundColor:"rgba(0,229,255,0.35)"}}/>
28
+ <F pointerEvents="none"style={{position:"absolute",top:0,bottom:0,left:"66.66%",width:1,backgroundColor:"rgba(0,229,255,0.35)"}}/>
29
29
 
30
30
 
31
- <C style={L.absoluteFill}{...Ze.panHandlers}/>
31
+ <F style={N.absoluteFill}{...Ke.panHandlers}/>
32
32
 
33
33
 
34
- <C pointerEvents="none"style={{position:"absolute",top:-2,left:-2,width:22,height:22,borderTopWidth:4,borderLeftWidth:4,borderColor:"#00E5FF"}}/>
35
- <C pointerEvents="none"style={{position:"absolute",top:-2,right:-2,width:22,height:22,borderTopWidth:4,borderRightWidth:4,borderColor:"#00E5FF"}}/>
36
- <C pointerEvents="none"style={{position:"absolute",bottom:-2,left:-2,width:22,height:22,borderBottomWidth:4,borderLeftWidth:4,borderColor:"#00E5FF"}}/>
37
- <C pointerEvents="none"style={{position:"absolute",bottom:-2,right:-2,width:22,height:22,borderBottomWidth:4,borderRightWidth:4,borderColor:"#00E5FF"}}/>
34
+ <F pointerEvents="none"style={{position:"absolute",top:-2,left:-2,width:22,height:22,borderTopWidth:4,borderLeftWidth:4,borderColor:"#00E5FF"}}/>
35
+ <F pointerEvents="none"style={{position:"absolute",top:-2,right:-2,width:22,height:22,borderTopWidth:4,borderRightWidth:4,borderColor:"#00E5FF"}}/>
36
+ <F pointerEvents="none"style={{position:"absolute",bottom:-2,left:-2,width:22,height:22,borderBottomWidth:4,borderLeftWidth:4,borderColor:"#00E5FF"}}/>
37
+ <F pointerEvents="none"style={{position:"absolute",bottom:-2,right:-2,width:22,height:22,borderBottomWidth:4,borderRightWidth:4,borderColor:"#00E5FF"}}/>
38
38
 
39
39
 
40
- <C pointerEvents="none"style={{position:"absolute",top:-3,left:"50%",marginLeft:-16,width:32,height:5,backgroundColor:"#00E5FF",borderRadius:3}}/>
41
- <C pointerEvents="none"style={{position:"absolute",bottom:-3,left:"50%",marginLeft:-16,width:32,height:5,backgroundColor:"#00E5FF",borderRadius:3}}/>
42
- <C pointerEvents="none"style={{position:"absolute",left:-3,top:"50%",marginTop:-16,width:5,height:32,backgroundColor:"#00E5FF",borderRadius:3}}/>
43
- <C pointerEvents="none"style={{position:"absolute",right:-3,top:"50%",marginTop:-16,width:5,height:32,backgroundColor:"#00E5FF",borderRadius:3}}/>
40
+ <F pointerEvents="none"style={{position:"absolute",top:-3,left:"50%",marginLeft:-16,width:32,height:5,backgroundColor:"#00E5FF",borderRadius:3}}/>
41
+ <F pointerEvents="none"style={{position:"absolute",bottom:-3,left:"50%",marginLeft:-16,width:32,height:5,backgroundColor:"#00E5FF",borderRadius:3}}/>
42
+ <F pointerEvents="none"style={{position:"absolute",left:-3,top:"50%",marginTop:-16,width:5,height:32,backgroundColor:"#00E5FF",borderRadius:3}}/>
43
+ <F pointerEvents="none"style={{position:"absolute",right:-3,top:"50%",marginTop:-16,width:5,height:32,backgroundColor:"#00E5FF",borderRadius:3}}/>
44
44
 
45
45
 
46
- <C style={{position:"absolute",top:-22,left:-22,width:44,height:44,zIndex:30}}{...Re.tl.panHandlers}/>
47
- <C style={{position:"absolute",top:-22,right:-22,width:44,height:44,zIndex:30}}{...Re.tr.panHandlers}/>
48
- <C style={{position:"absolute",bottom:-22,left:-22,width:44,height:44,zIndex:30}}{...Re.bl.panHandlers}/>
49
- <C style={{position:"absolute",bottom:-22,right:-22,width:44,height:44,zIndex:30}}{...Re.br.panHandlers}/>
46
+ <F style={{position:"absolute",top:-22,left:-22,width:44,height:44,zIndex:30}}{...ze.tl.panHandlers}/>
47
+ <F style={{position:"absolute",top:-22,right:-22,width:44,height:44,zIndex:30}}{...ze.tr.panHandlers}/>
48
+ <F style={{position:"absolute",bottom:-22,left:-22,width:44,height:44,zIndex:30}}{...ze.bl.panHandlers}/>
49
+ <F style={{position:"absolute",bottom:-22,right:-22,width:44,height:44,zIndex:30}}{...ze.br.panHandlers}/>
50
50
 
51
51
 
52
- <C style={{position:"absolute",top:-20,left:"25%",right:"25%",height:40,zIndex:25}}{...Re.top.panHandlers}/>
53
- <C style={{position:"absolute",bottom:-20,left:"25%",right:"25%",height:40,zIndex:25}}{...Re.bottom.panHandlers}/>
54
- <C style={{position:"absolute",left:-20,top:"25%",bottom:"25%",width:40,zIndex:25}}{...Re.left.panHandlers}/>
55
- <C style={{position:"absolute",right:-20,top:"25%",bottom:"25%",width:40,zIndex:25}}{...Re.right.panHandlers}/>
56
- </C>
52
+ <F style={{position:"absolute",top:-20,left:"25%",right:"25%",height:40,zIndex:25}}{...ze.top.panHandlers}/>
53
+ <F style={{position:"absolute",bottom:-20,left:"25%",right:"25%",height:40,zIndex:25}}{...ze.bottom.panHandlers}/>
54
+ <F style={{position:"absolute",left:-20,top:"25%",bottom:"25%",width:40,zIndex:25}}{...ze.left.panHandlers}/>
55
+ <F style={{position:"absolute",right:-20,top:"25%",bottom:"25%",width:40,zIndex:25}}{...ze.right.panHandlers}/>
56
+ </F>
57
57
 
58
58
 
59
- {Ye&&<P activeOpacity={.8}onPress={()=>{R("light"),Ye()}}style={t.cropCancelBtn}accessibilityLabel="Cancel Crop">
60
- <Bi size={14}color={M.white}/>
61
- </P>}
59
+ {qe&&<A activeOpacity={.8}onPress={()=>{B("light"),qe()}}style={t.cropCancelBtn}accessibilityLabel="Cancel Crop">
60
+ <Bi size={14}color={S.white}/>
61
+ </A>}
62
62
 
63
63
 
64
- {K&&<P activeOpacity={.8}onPress={()=>{R("medium"),K()}}style={t.cropConfirmBtn}accessibilityLabel="Apply Crop Selection">
65
- <Pr size={18}color={M.white}/>
66
- </P>}
67
- </C>};export const MediaPreviewModal=({item:r,visible:Ae,onClose:Me,onDelete:It,onConvertToGif:Mt})=>{const{t:z}=_r(),Oe=pr(kr),K=Oe?.modalHeightPercent??90,{width:Ye}=Tr(),_e=oo(()=>io.OS==="ios"?K>=98?Ye>=390?50:44:0:io.OS==="android"&&K>=98?Fi.currentHeight||24:0,[K,Ye]),[De,Le]=O(!1),[pe,_]=O(!1),[N,ce]=O(null),[$,ae]=O(r?.width),[se,le]=O(r?.height),[ge,oe]=O(r?.sizeBytes),[et,Ze]=O(r?.durationMs),[$e,Re]=O(!1),[de,je]=O(!1),[Ne,qe]=O(!1),[B,U]=O("none"),[ie,ye]=O(1),[X,ve]=O(0),[be,tt]=O([]),[We,vt]=O([]),[Pe,At]=O(!1),[$i,ot]=O(!1),[I,Ue]=O("brush"),[Ro,ji]=O(24),[Fe,Ni]=O("brightness"),[Z,Ut]=O("none"),[xe,Ot]=O(!1),[ue,Dt]=O(!1),[D,Ft]=O({brightness:0,contrast:0,saturation:0,warmth:0,exposure:0,vignette:0}),[fe,Xt]=O(!1),[we,Yt]=O(!1),[re,it]=O(0),[he,rt]=O(r?.durationMs||1e4),[Qe,ro]=O("end"),[me,_t]=O(!1),[Xe,no]=O(100),[Ve,ao]=O(1),[Zt,Go]=O(12),[Po,Ui]=O(480),[Lo,$o]=O([]),[Kr,jo]=O(!1),[Jr,Xi]=O(0),[zo,qt]=O("free"),[Qt,kt]=O({x:.08,y:.12,width:.84,height:.76}),[Ce,No]=O("#EF4444"),[ze,Yi]=O(4),[J,He]=O([]),[W,Kt]=O(null),[Te,Ee]=O([]),[_i,Jt]=O(!1),[Uo,Xo]=O(null),[so,lo]=O(""),[ho,Zi]=O({x:.3,y:.4}),te=Je(()=>{vt([]),tt(e=>[...e,{uri:N||r?.uri||null,inkPaths:[...J],texts:[...Te],adjustments:{...D},filterPreset:Z,showWatermark:xe,showGridlines:ue,rotationAngle:X,flipH:fe,flipV:we,width:$,height:se,sizeBytes:ge}])},[N,r?.uri,J,Te,D,Z,xe,ue,X,fe,we,$,se,ge]),Yo=V(te);Yo.current=te;const en=V(null),[nt,_o]=O({width:ci.get("window").width-16,height:ci.get("window").height*.72,pageX:0,pageY:0}),Ge=V(B);Ge.current=B;const co=V(I);co.current=I;const Wt=V(Ce);Wt.current=Ce;const Vt=V(ze);Vt.current=ze;const qi=V(Lt.create({onStartShouldSetPanResponder:()=>Ge.current==="draw",onMoveShouldSetPanResponder:()=>Ge.current==="draw",onPanResponderGrant:e=>{Yo.current();const{locationX:o,locationY:i}=e.nativeEvent;Kt([{x:o,y:i}])},onPanResponderMove:e=>{const{locationX:o,locationY:i}=e.nativeEvent,T=co.current;Kt(T==="brush"||T==="highlighter"?k=>k?[...k,{x:o,y:i}]:[{x:o,y:i}]:k=>[k&&k.length>0?k[0]:{x:o,y:i},{x:o,y:i}])},onPanResponderRelease:()=>{Kt(e=>{if(e&&e.length>0){const o=co.current,i=e[0],T=e[e.length-1]||i;if((o==="brush"||o==="highlighter")&&e.length>1)He(k=>[...k,{id:`stroke_${Date.now()}_${Math.random()}`,type:o,points:e,color:Wt.current,strokeWidth:Vt.current}]);else if(o==="arrow"&&e.length>1)Math.hypot(T.x-i.x,T.y-i.y)>6&&He(S=>[...S,{id:`stroke_${Date.now()}_${Math.random()}`,type:"arrow",points:[i,T],color:Wt.current,strokeWidth:Vt.current}]);else if(o==="circle"||o==="spotlight")Math.hypot(T.x-i.x,T.y-i.y)>6&&He(S=>[...S,{id:`stroke_${Date.now()}_${Math.random()}`,type:o,points:[i,T],color:Wt.current,strokeWidth:Vt.current}]);else if(o==="step"){const k=J.filter(S=>S.type==="step").length;He(S=>[...S,{id:`stroke_${Date.now()}_${Math.random()}`,type:"step",points:[i],color:Wt.current,strokeWidth:Vt.current,stepNumber:k+1}])}else if(o==="rect"||o==="redact"||o==="pixelate"){const k=Math.min(i.x,T.x),S=Math.min(i.y,T.y),A=Math.abs(T.x-i.x),j=Math.abs(T.y-i.y);A>4&&j>4&&He(q=>[...q,{id:`stroke_${Date.now()}_${Math.random()}`,type:o,points:[i,T],rect:{x:k,y:S,width:A,height:j},color:Wt.current,strokeWidth:Vt.current}])}}return null})}})).current,Ht=(e,o,i)=>{const T=o&&o>0?o:1e3,k=i&&i>0?i:1e3,S=T/k;if(e==="free")return{x:parseFloat(((1-.84)/2).toFixed(4)),y:parseFloat(((1-.76)/2).toFixed(4)),width:.84,height:.76};let A=1;e==="1:1"?A=1:e==="4:3"?A=4/3:e==="16:9"?A=16/9:e==="9:16"?A=9/16:e==="3:2"&&(A=3/2);const j=A/S;let q=.88,Q=.88;if(j>=1){if(q=.88,Q=.88/j,Q>.88){const Et=.88/Q;q*=Et,Q=.88}}else if(Q=.88,q=.88*j,q>.88){const Et=.88/q;Q*=Et,q=.88}q=Math.max(.1,Math.min(.96,parseFloat(q.toFixed(4)))),Q=Math.max(.1,Math.min(.96,parseFloat(Q.toFixed(4))));const Ke=parseFloat(((1-q)/2).toFixed(4)),Pt=parseFloat(((1-Q)/2).toFixed(4));return{x:Ke,y:Pt,width:q,height:Q}};Ao.useEffect(()=>{r?.uri&&(ce(r.uri),ae(r.width),le(r.height),oe(r.sizeBytes),Ze(r.durationMs),Re(!1),ye(1),U("none"),He([]),Kt(null),Ee([]),kt(Ht("free",r.width,r.height)),it(0),rt(r.durationMs||1e4),ro("end"),_t(!1),no(100),ao(1),Xi(0))},[r?.uri,r?.width,r?.height,r?.sizeBytes,r?.durationMs]),Ao.useEffect(()=>{if(r?.type==="video"&&r?.uri){let e=!0;return jo(!0),Tt.generateFilmstrip({uri:r.uri,count:10,targetWidth:120,targetHeight:120}).then(o=>{e&&o?.thumbnails&&$o(o.thumbnails)}).catch(()=>{}).finally(()=>{e&&jo(!1)}),()=>{e=!1}}else $o([])},[r?.type,r?.uri]),Ao.useEffect(()=>{if(N||r?.uri){const e=N||r?.uri;e&&r?.type==="image"&&(!$||!se)&&Co.getSize(e,(o,i)=>{o>0&&i>0&&(ae(o),le(i))},()=>{})}},[N,r?.uri,r?.type,$,se]);const Be=oo(()=>{const e=nt.width,o=nt.height;if(!e||!o)return{width:e,height:o};const i=$??r?.width,T=se??r?.height;if(!i||!T||i<=0||T<=0)return{width:e,height:o};const k=i/T,S=e/o;let A=e,j=o;return k>S?(A=e,j=e/k):(j=o,A=o*k),{width:Math.max(20,Math.floor(A)),height:Math.max(20,Math.floor(j))}},[nt.width,nt.height,$,se,r?.width,r?.height]),Y=N||r?.uri,ke=$??r?.width,Se=se??r?.height,Zo=ge??r?.sizeBytes,ne=et??r?.durationMs,G=r?.type==="video",tn=r?.type==="gif",ee=r?.type==="image",Ie=V(new Gt.ValueXY({x:0,y:0})).current,at=V({x:0,y:0}),eo=V({x:0,y:0});hi(()=>{const e=Ie.x.addListener(i=>at.current.x=i.value),o=Ie.y.addListener(i=>at.current.y=i.value);return()=>{Ie.x.removeListener(e),Ie.y.removeListener(o)}},[Ie]);const st=V(ie);st.current=ie;const St=V(Be);St.current=Be;const Rt=V(nt);Rt.current=nt;const qo=Je(()=>{const e=st.current;if(e<=1)return{maxX:0,maxY:0};const o=St.current.width,i=St.current.height,T=Rt.current.width,k=Rt.current.height,S=Math.max(0,(o*e-T)/2/e),A=Math.max(0,(i*e-k)/2/e);return{maxX:S,maxY:A}},[]),Qo=Je((e,o)=>{const{maxX:i,maxY:T}=qo();return{x:Math.max(-i,Math.min(i,e)),y:Math.max(-T,Math.min(T,o))}},[qo]),Qi=V(Lt.create({onStartShouldSetPanResponder:()=>st.current>1,onMoveShouldSetPanResponder:(e,o)=>st.current>1&&(Math.abs(o.dx)>4||Math.abs(o.dy)>4),onMoveShouldSetPanResponderCapture:(e,o)=>st.current>1&&(Math.abs(o.dx)>6||Math.abs(o.dy)>6),onPanResponderTerminationRequest:()=>!1,onShouldBlockNativeResponder:()=>!0,onPanResponderGrant:()=>{eo.current={...at.current}},onPanResponderMove:(e,o)=>{const i=st.current,T=eo.current.x+o.dx/i,k=eo.current.y+o.dy/i,{maxX:S,maxY:A}=(()=>{const Q=st.current;if(Q<=1)return{maxX:0,maxY:0};const Ke=St.current.width,Pt=St.current.height,Et=Rt.current.width,di=Rt.current.height;return{maxX:Math.max(0,(Ke*Q-Et)/2/Q),maxY:Math.max(0,(Pt*Q-di)/2/Q)}})(),j=Math.max(-S,Math.min(S,T)),q=Math.max(-A,Math.min(A,k));Ie.setValue({x:j,y:q})},onPanResponderRelease:()=>{const{maxX:e,maxY:o}=(()=>{const k=st.current;if(k<=1)return{maxX:0,maxY:0};const S=St.current.width,A=St.current.height,j=Rt.current.width,q=Rt.current.height;return{maxX:Math.max(0,(S*k-j)/2/k),maxY:Math.max(0,(A*k-q)/2/k)}})(),i=at.current,T={x:Math.max(-e,Math.min(e,i.x)),y:Math.max(-o,Math.min(o,i.y))};(T.x!==i.x||T.y!==i.y)&&Gt.spring(Ie,{toValue:T,friction:7,tension:60,useNativeDriver:!1}).start()},onPanResponderTerminate:()=>{}})).current;hi(()=>{if(ie<=1)Ie.setValue({x:0,y:0}),eo.current={x:0,y:0};else{const e=Qo(at.current.x,at.current.y);(e.x!==at.current.x||e.y!==at.current.y)&&Gt.spring(Ie,{toValue:e,friction:7,tension:60,useNativeDriver:!1}).start()}},[ie,Ie,Qo]);const Ki=()=>{R("light"),ye(e=>Math.min(4,parseFloat((e+.25).toFixed(2))))},Ji=()=>{R("light"),ye(e=>Math.max(1,parseFloat((e-.25).toFixed(2))))},Ko=()=>{R("medium"),ye(1),Ie.setValue({x:0,y:0}),eo.current={x:0,y:0}},Jo=V(240),ei=Je(e=>{const o=Math.max(50,Jo.current),i=Math.max(0,Math.min(1,e/o));if(Ge.current==="draw"){const T=co.current;if(T==="brush"||T==="highlighter"||T==="arrow"||T==="rect"||T==="circle"||T==="spotlight"||T==="step"){const k=Math.round(2+i*22);Yi(k)}else if(T==="pixelate"){const k=Math.round(4+i*36);ji(k)}}else if(Ge.current==="adjust")if(Fe==="vignette"){const T=Math.round(i*100);Ft(k=>({...k,vignette:T}))}else{const T=Math.round(i*100-50);Ft(k=>({...k,[Fe]:T}))}else if(Ge.current==="crop"){const T=Math.round(i*360);ve(T)}else if(Ge.current==="trim"){const k=Math.round(i*(ne||1e4));Qe==="start"?it(Math.min(he-500,k)):rt(Math.max(re+500,k))}else if(Ge.current==="audio"){const T=Math.round(i*100);no(T),_t(T===0)}else if(Ge.current==="speed"){const T=parseFloat((.5+i*1.5).toFixed(2));ao(T)}else if(Ge.current==="gif"){const T=Math.round(6+i*18);Go(T)}else if(Ge.current==="none"){const T=parseFloat((1+i*3).toFixed(2));ye(T)}},[Fe,ne,Qe,re,he]),er=V(Lt.create({onStartShouldSetPanResponder:()=>!0,onStartShouldSetPanResponderCapture:()=>!0,onMoveShouldSetPanResponder:()=>!0,onMoveShouldSetPanResponderCapture:()=>!0,onPanResponderGrant:e=>{R("light"),ei(e.nativeEvent.locationX)},onPanResponderMove:e=>{ei(e.nativeEvent.locationX)},onPanResponderRelease:()=>{R("light")}})).current,ti=oo(()=>{if(B==="draw"){if(I==="brush"||I==="highlighter"||I==="arrow"||I==="rect"||I==="circle"||I==="spotlight"||I==="step")return Math.min(100,Math.max(0,(ze-2)/22*100));if(I==="pixelate")return Math.min(100,Math.max(0,(Ro-4)/36*100));if(I==="redact")return 100}return B==="adjust"?Fe==="vignette"?Math.min(100,Math.max(0,D.vignette)):Math.min(100,Math.max(0,D[Fe]+50)):B==="crop"?Math.min(100,Math.max(0,X/360*100)):B==="trim"?Math.min(100,Math.max(0,(Qe==="start"?re:he)/(ne||1e4)*100)):B==="audio"?me?0:Xe:B==="speed"?Math.min(100,Math.max(0,(Ve-.5)/1.5*100)):B==="gif"?Math.min(100,Math.max(0,(Zt-6)/18*100)):B==="none"?Math.min(100,Math.max(0,(ie-1)/3*100)):50},[B,I,ze,Ro,Fe,D,X,ie,ne,Qe,re,he,me,Xe,Ve,Zt]),oi=Je(()=>{if(be.length===0)return;R("light");const e=be[be.length-1];vt(o=>[...o,{uri:N||r?.uri||null,inkPaths:[...J],texts:[...Te],adjustments:{...D},filterPreset:Z,showWatermark:xe,rotationAngle:X,flipH:fe,flipV:we,width:$,height:se,sizeBytes:ge}]),tt(o=>o.slice(0,o.length-1)),e&&(ce(e.uri),He(e.inkPaths),Ee(e.texts),e.adjustments&&Ft(e.adjustments),e.filterPreset&&Ut(e.filterPreset),e.showWatermark!==void 0&&Ot(e.showWatermark),e.showGridlines!==void 0&&Dt(e.showGridlines),e.rotationAngle!==void 0&&ve(e.rotationAngle),e.flipH!==void 0&&Xt(e.flipH),e.flipV!==void 0&&Yt(e.flipV),e.width&&ae(e.width),e.height&&le(e.height),e.sizeBytes&&oe(e.sizeBytes),H(z("mediaGallery.undone","Action Undone")))},[be,N,r?.uri,J,Te,D,Z,xe,ue,X,fe,we,$,se,ge,z]),tr=Je(()=>{if(We.length===0)return;R("light");const e=We[We.length-1];tt(o=>[...o,{uri:N||r?.uri||null,inkPaths:[...J],texts:[...Te],adjustments:{...D},filterPreset:Z,showWatermark:xe,showGridlines:ue,rotationAngle:X,flipH:fe,flipV:we,width:$,height:se,sizeBytes:ge}]),vt(o=>o.slice(0,o.length-1)),e&&(ce(e.uri),He(e.inkPaths),Ee(e.texts),e.adjustments&&Ft(e.adjustments),e.filterPreset&&Ut(e.filterPreset),e.showWatermark!==void 0&&Ot(e.showWatermark),e.showGridlines!==void 0&&Dt(e.showGridlines),e.rotationAngle!==void 0&&ve(e.rotationAngle),e.flipH!==void 0&&Xt(e.flipH),e.flipV!==void 0&&Yt(e.flipV),e.width&&ae(e.width),e.height&&le(e.height),e.sizeBytes&&oe(e.sizeBytes),H(z("mediaGallery.redone","Action Redone")))},[We,N,r?.uri,J,Te,D,Z,xe,ue,X,fe,we,$,se,ge,z]),or=Je(()=>{r&&(R("medium"),te(),ce(r.uri),He([]),Ee([]),Ft({brightness:0,contrast:0,saturation:0,warmth:0,exposure:0,vignette:0}),Ut("none"),Ot(!1),Dt(!1),ve(0),Xt(!1),Yt(!1),ae(r.width),le(r.height),oe(r.sizeBytes),Ze(r.durationMs),ye(1),U("none"),it(0),rt(r.durationMs||1e4),ro("end"),_t(!1),no(100),ao(1),H(z("mediaGallery.resetSuccess",r.type==="video"?"Reset to original video":"Reset to original image")))},[r,te,z]),ii=Je(async()=>{if(!(!r||!Y)){if(R("medium"),_(!0),G){try{const e=ne||r.durationMs||1e4,o=await Tt.trimVideo({uri:Y,startTimeMs:re,endTimeMs:he<e?he:void 0,muteAudio:me||Xe===0,quality:"high"});o?.uri?(ce(o.uri),o.width&&ae(o.width),o.height&&le(o.height),o.size&&oe(o.size),o.durationMs&&Ze(o.durationMs),H(z("mediaGallery.videoSaved","Video Saved Successfully")),Oe?.refreshMediaCount?.().catch(()=>{})):H(z("mediaGallery.videoSaved","Video Saved"))}catch{H(z("mediaGallery.saveFailed","Failed to save video"))}finally{_(!1)}return}try{const e=Math.max(1,ke||1e3),o=Math.max(1,Se||1e3),i=J.filter(S=>(S.type==="redact"||S.type==="pixelate")&&S.rect).map(S=>{const A=S.rect;return{x:A.x/e,y:A.y/o,width:A.width/e,height:A.height/o,style:S.type==="pixelate"?"blur":"blackout",isNormalized:!0}}),T=[...Te.map(S=>({x:S.x,y:S.y,width:.22,height:.06,color:S.bgColor||"#EF4444",label:S.text,isNormalized:!0})),...J.filter(S=>S.type==="rect"||S.type==="arrow"||S.type==="circle").map(S=>{const A=S.points[0]||{x:0,y:0},j=S.points[S.points.length-1]||A,q=Math.min(A.x,j.x),Q=Math.min(A.y,j.y),Ke=Math.max(10,Math.abs(j.x-A.x)),Pt=Math.max(10,Math.abs(j.y-A.y));return{x:q/e,y:Q/o,width:Ke/e,height:Pt/o,color:S.color||"#EF4444",isNormalized:!0}})],k=await Tt.editPhoto({uri:Y,rotation:X!==0?X:void 0,flipHorizontal:fe,flipVertical:we,adjustments:{brightness:D.brightness/50,contrast:1+D.contrast/50,saturation:1+D.saturation/50,temperature:D.warmth/50,vignette:D.vignette/100},filterPreset:Z!=="none"?Z:void 0,redactions:i.length>0?i:void 0,annotations:T.length>0?T:void 0,format:r.format==="png"?"png":"jpeg",quality:.92});k?.uri?(ce(k.uri),k.width&&ae(k.width),k.height&&le(k.height),k.size&&oe(k.size),He([]),Ee([]),Ft({brightness:0,contrast:0,saturation:0,warmth:0,exposure:0,vignette:0}),ve(0),Xt(!1),Yt(!1),H(z("mediaGallery.savedSuccess","Image Saved Successfully")),Oe?.refreshMediaCount?.().catch(()=>{})):H(z("mediaGallery.savedSuccess","Image Saved"))}catch{H(z("mediaGallery.saveFailed","Failed to save image"))}finally{_(!1)}}},[r,Y,G,ne,re,he,me,Xe,ke,Se,X,fe,we,D,Z,J,Te,Oe,z]),ri=Je(async()=>{if(!(!r||!Y||!G||pe)){R("medium"),_(!0);try{const e=await Tt.generateFilmstrip({uri:Y,count:1,targetWidth:ke||1080,targetHeight:Se||1920});e?.thumbnails&&e.thumbnails.length>0?(H(z("mediaGallery.snapshotSaved","Frame Snapshot Saved (PNG)")),Oe?.refreshMediaCount?.().catch(()=>{})):H(z("mediaGallery.snapshotFailed","Failed to snapshot frame"))}catch{H(z("mediaGallery.snapshotFailed","Failed to snapshot frame"))}finally{_(!1)}}},[r,Y,G,pe,ke,Se,Oe,z]),ir=oo(()=>{if(!G||!r)return!1;const e=r.durationMs||1e4,o=re>0||he<e,i=me||Xe<100,T=Ve!==1,k=N!=null&&N!==r.uri;return o||i||T||k},[G,r,re,he,me,Xe,Ve,N]),ni=oo(()=>{if(!r)return!1;const e=N!=null&&N!==r.uri,o=J.length>0,i=Te.length>0,T=be.length>0,k=D.brightness!==0||D.contrast!==0||D.saturation!==0||D.warmth!==0||D.exposure!==0||D.vignette!==0;return e||o||i||T||k||(X!==0||fe||we)||Z!=="none"||xe||ue},[N,r,J.length,Te.length,be.length,D,X,fe,we,Z,xe,ue]),rr=()=>{R("light"),oi()},nr=()=>{R("medium"),te(),He([])},on=e=>{R("light"),U("crop"),qt(e),kt(Ht(e,ke,Se))},ai=async()=>{if(!(!Y||!ee)){R("medium"),te(),_(!0);try{const e=await Tt.cropToDefect(Y,{x:Qt.x,y:Qt.y,width:Qt.width,height:Qt.height,isNormalized:!0});e?.uri?(ce(e.uri),e.width&&ae(e.width),e.height&&le(e.height),e.size&&oe(e.size),kt(Ht("free",e.width,e.height)),qt("free"),H(z("mediaGallery.croppedSuccess","Image Cropped")),U("none")):H(z("mediaGallery.cropFailed","Crop failed"))}catch{H(z("mediaGallery.cropFailed","Crop failed"))}finally{_(!1)}}},Bo=e=>{R("light"),e?(Xo(e),lo(e.text)):(Xo(null),lo("")),Jt(!0)},ar=e=>{R("light"),te(),Ee(o=>o.filter(i=>i.id!==e))},sr=()=>{if(!so.trim()){Jt(!1);return}if(te(),Uo)Ee(e=>e.map(o=>o.id===Uo.id?{...o,text:so.trim(),color:Ce}:o));else{const e={id:`text_${Date.now()}`,text:so.trim(),x:ho.x,y:ho.y,color:M.white,bgColor:Ce==="#FFFFFF"?"#0F172A":Ce};Ee(o=>[...o,e])}Jt(!1),lo(""),H(z("mediaGallery.textAdded","Text Added"))},rn=async e=>{if(!(!Y||!ee||pe)){R("medium"),te(),_(!0);try{const o=await Tt.editPhoto({uri:Y,quality:.85,crop:{x:0,y:0,width:1,height:1,isNormalized:!0}});if(o?.uri){ce(o.uri);const i=Math.round((ke||1080)*e),T=Math.round((Se||1920)*e);ae(i),le(T),o.size&&oe(Math.round(o.size*e*e)),H(z("mediaGallery.resizedSuccess",`Resized to ${Math.round(e*100)}% (${i}\xD7${T})`)),U("none")}}catch{H(z("mediaGallery.resizeFailed","Resize failed"))}finally{_(!1)}}},lr=async()=>{try{R("light");const e=Y.startsWith("file://")||Y.startsWith("content://")||Y.startsWith("http")?Y:`file://${Y}`,o=io.select({ios:{url:e,title:r.filename},default:{title:r.filename,message:r.filename,url:e}});(await Mi.share(o)).action===Mi.sharedAction&&H(z("mediaGallery.shareSuccess","Shared successfully"))}catch(e){e?.message!=="User did not share"&&H(z("mediaGallery.shareUnavailable","Sharing not available on this device"))}},dr=()=>{R("medium"),qe(!0)},si=async()=>{if(Mt){Le(!0);try{await Mt(r),H(z("mediaGallery.convertedSuccess","Converted to GIF!"))}catch{H(z("mediaGallery.convertFailed","Conversion failed"))}finally{Le(!1)}}},Io=async()=>{try{je(!0),await Yr.playVideo(Y)}catch{H(z("mediaGallery.playError","Unable to play video"))}finally{je(!1)}},nn=async()=>{if(!(!Y||!G||pe)){_(!0),R("light");try{const o=Math.min(ne||1e4,5e3),i=await Tt.trimReproClip(Y,0,o,{quality:"medium"});i?.uri&&(ce(i.uri),i.width&&ae(i.width),i.height&&le(i.height),i.size&&oe(i.size),i.durationMs&&Ze(i.durationMs),H(z("mediaGallery.trimmedSuccess","Trimmed to 5s Repro Clip")))}catch{H(z("mediaGallery.trimFailed","Trim failed"))}finally{_(!1)}}},hr=async()=>{if(!(!Y||!G||pe)){_(!0),R("light");try{const e=await Tt.muteVideo(Y);e?.uri&&(ce(e.uri),e.width&&ae(e.width),e.height&&le(e.height),e.size&&oe(e.size),e.durationMs&&Ze(e.durationMs),H(z("mediaGallery.mutedSuccess","Audio Stripped")))}catch{H(z("mediaGallery.muteFailed","Mute failed"))}finally{_(!1)}}},to=ne?(ne/1e3).toFixed(1):null,li=to?`00:${Number(to)<10?"0":""}${to}`:null,cr=[{key:"none",label:z("mediaGallery.preview","Preview"),themeColor:M.brandPurple,icon:e=><Ai size={16}color={e?"#38BDF8":"rgba(255,255,255,0.55)"}/>},{key:"crop",label:"Crop",themeColor:M.sky600,icon:e=><Ii size={16}color={e?"#38BDF8":"rgba(255,255,255,0.55)"}/>},{key:"adjust",label:"Adjust",themeColor:M.amber500,icon:e=><Vi size={16}color={e?"#38BDF8":"rgba(255,255,255,0.55)"}/>},{key:"draw",label:"Markup",themeColor:M.sky400,icon:e=><Vo size={16}color={e?"#38BDF8":"rgba(255,255,255,0.55)"}/>},{key:"text",label:"Text",themeColor:M.violet600,icon:e=><Hi size={16}color={e?"#38BDF8":"rgba(255,255,255,0.55)"}/>}],ur=[{key:"none",label:z("mediaGallery.preview","Player"),themeColor:M.brandPurple,icon:e=><Ai size={14}color={e?"#38BDF8":"rgba(255,255,255,0.55)"}/>},{key:"trim",label:z("media.trim","Trim"),themeColor:M.sky600,icon:e=><Wi size={14}color={e?"#38BDF8":"rgba(255,255,255,0.55)"}/>,hasBadge:re>0||he<(ne||1e4)},{key:"audio",label:z("media.audio","Audio"),themeColor:M.amber600,icon:e=><So size={14}color={e?"#38BDF8":"rgba(255,255,255,0.55)"}/>,hasBadge:me||Xe<100},{key:"speed",label:z("media.speed","Speed"),themeColor:M.violet600,icon:e=><Eo size={14}color={e?"#38BDF8":"rgba(255,255,255,0.55)"}/>,hasBadge:Ve!==1},{key:"gif",label:z("media.toGif","To GIF"),themeColor:M.emerald500,icon:e=><Do size={14}color={e?"#38BDF8":"rgba(255,255,255,0.55)"}/>},{key:"snapshot",label:z("media.snapshot","Snapshot"),themeColor:M.pink500,icon:e=><Fo size={14}color={e?"#38BDF8":"rgba(255,255,255,0.55)"}/>}];return!r||!Ae?null:<Ci visible={Ae}transparent={!0}animationType="fade"statusBarTranslucent={!0}onRequestClose={Me}>
68
- <C style={t.modalBackdrop}>
69
- <Oo style={t.modalBackdropPressable}onPress={Me}/>
70
- <C style={[t.modalContentCard,{height:`${K}%`,borderTopLeftRadius:K>=100?0:20,borderTopRightRadius:K>=100?0:20}]}>
64
+ {te&&<A activeOpacity={.8}onPress={()=>{B("medium"),te()}}style={t.cropConfirmBtn}accessibilityLabel="Apply Crop Selection">
65
+ <Pr size={18}color={S.white}/>
66
+ </A>}
67
+ </F>};export const MediaPreviewModal=({item:M,visible:De,onClose:ke,onDelete:It,onConvertToGif:Mt})=>{const{t:I}=en(),We=pr(kr),te=We?.modalHeightPercent??90,{width:qe}=Tr(),Qe=oo(()=>io.OS==="ios"?te>=98?qe>=390?50:44:0:io.OS==="android"&&te>=98?Fi.currentHeight||24:0,[te,qe]),[Ve,Ne]=V(!1),[me,Q]=V(!1),[Y,ge]=V(null),[U,de]=V(M?.width),[he,ce]=V(M?.height),[be,ne]=V(M?.sizeBytes),[it,Ke]=V(M?.durationMs),[Ue,ze]=V(!1),[ue,Xe]=V(!1),[Ye,Je]=V(!1),[O,_]=V("none"),[ae,xe]=V(1),[Z,Se]=V(0),[we,rt]=V([]),[Ee,vt]=V([]),[Be,At]=V(!1),[$i,nt]=V(!1),[D,_e]=V("brush"),[Ro,ji]=V(24),[He,Ni]=V("brightness"),[K,Ut]=V("none"),[Ce,Ot]=V(!1),[ye,Dt]=V(!1),[E,Ft]=V({brightness:0,contrast:0,saturation:0,warmth:0,exposure:0,vignette:0}),[Te,Xt]=V(!1),[Me,Yt]=V(!1),[se,at]=V(0),[pe,st]=V(M?.durationMs||1e4),[et,ro]=V("end"),[fe,_t]=V(!1),[Ze,no]=V(100),[Ge,ao]=V(1),[Zt,Go]=V(12),[Po,Ui]=V(480),[Lo,$o]=V([]),[Mn,jo]=V(!1),[vn,Xi]=V(0),[zo,qt]=V("free"),[Qt,kt]=V({x:.08,y:.12,width:.84,height:.76}),[ve,No]=V("#EF4444"),[Ie,Yi]=V(4),[oe,Le]=V([]),[H,Kt]=V(null),[Fe,$e]=V([]),[_i,Jt]=V(!1),[Uo,Xo]=V(null),[so,lo]=V(""),[ho,Zi]=V({x:.3,y:.4}),re=ot(()=>{vt([]),rt(e=>[...e,{uri:Y||M?.uri||null,inkPaths:[...oe],texts:[...Fe],adjustments:{...E},filterPreset:K,showWatermark:Ce,showGridlines:ye,rotationAngle:Z,flipH:Te,flipV:Me,width:U,height:he,sizeBytes:be}])},[Y,M?.uri,oe,Fe,E,K,Ce,ye,Z,Te,Me,U,he,be]),Yo=G(re);Yo.current=re;const Fn=G(null),[lt,_o]=V({width:ci.get("window").width-16,height:ci.get("window").height*.72,pageX:0,pageY:0}),je=G(O);je.current=O;const co=G(D);co.current=D;const Wt=G(ve);Wt.current=ve;const Vt=G(Ie);Vt.current=Ie;const qi=G(Lt.create({onStartShouldSetPanResponder:()=>je.current==="draw",onMoveShouldSetPanResponder:()=>je.current==="draw",onPanResponderGrant:e=>{Yo.current();const{locationX:C,locationY:T}=e.nativeEvent;Kt([{x:C,y:T}])},onPanResponderMove:e=>{const{locationX:C,locationY:T}=e.nativeEvent,k=co.current;Kt(k==="brush"||k==="highlighter"?P=>P?[...P,{x:C,y:T}]:[{x:C,y:T}]:P=>[P&&P.length>0?P[0]:{x:C,y:T},{x:C,y:T}])},onPanResponderRelease:()=>{Kt(e=>{if(e&&e.length>0){const C=co.current,T=e[0],k=e[e.length-1]||T;if((C==="brush"||C==="highlighter")&&e.length>1)Le(P=>[...P,{id:`stroke_${Date.now()}_${Math.random()}`,type:C,points:e,color:Wt.current,strokeWidth:Vt.current}]);else if(C==="arrow"&&e.length>1)Math.hypot(k.x-T.x,k.y-T.y)>6&&Le(z=>[...z,{id:`stroke_${Date.now()}_${Math.random()}`,type:"arrow",points:[T,k],color:Wt.current,strokeWidth:Vt.current}]);else if(C==="circle"||C==="spotlight")Math.hypot(k.x-T.x,k.y-T.y)>6&&Le(z=>[...z,{id:`stroke_${Date.now()}_${Math.random()}`,type:C,points:[T,k],color:Wt.current,strokeWidth:Vt.current}]);else if(C==="step"){const P=oe.filter(z=>z.type==="step").length;Le(z=>[...z,{id:`stroke_${Date.now()}_${Math.random()}`,type:"step",points:[T],color:Wt.current,strokeWidth:Vt.current,stepNumber:P+1}])}else if(C==="rect"||C==="redact"||C==="pixelate"){const P=Math.min(T.x,k.x),z=Math.min(T.y,k.y),W=Math.abs(k.x-T.x),X=Math.abs(k.y-T.y);W>4&&X>4&&Le(J=>[...J,{id:`stroke_${Date.now()}_${Math.random()}`,type:C,points:[T,k],rect:{x:P,y:z,width:W,height:X},color:Wt.current,strokeWidth:Vt.current}])}}return null})}})).current,Et=(e,C,T)=>{const k=C&&C>0?C:1e3,P=T&&T>0?T:1e3,z=k/P;if(e==="free")return{x:parseFloat(((1-.84)/2).toFixed(4)),y:parseFloat(((1-.76)/2).toFixed(4)),width:.84,height:.76};let W=1;e==="1:1"?W=1:e==="4:3"?W=4/3:e==="16:9"?W=16/9:e==="9:16"?W=9/16:e==="3:2"&&(W=3/2);const X=W/z;let J=.88,ee=.88;if(X>=1){if(J=.88,ee=.88/X,ee>.88){const Ht=.88/ee;J*=Ht,ee=.88}}else if(ee=.88,J=.88*X,J>.88){const Ht=.88/J;ee*=Ht,J=.88}J=Math.max(.1,Math.min(.96,parseFloat(J.toFixed(4)))),ee=Math.max(.1,Math.min(.96,parseFloat(ee.toFixed(4))));const tt=parseFloat(((1-J)/2).toFixed(4)),Pt=parseFloat(((1-ee)/2).toFixed(4));return{x:tt,y:Pt,width:J,height:ee}};Ao.useEffect(()=>{M?.uri&&(ge(M.uri),de(M.width),ce(M.height),ne(M.sizeBytes),Ke(M.durationMs),ze(!1),xe(1),_("none"),Le([]),Kt(null),$e([]),kt(Et("free",M.width,M.height)),at(0),st(M.durationMs||1e4),ro("end"),_t(!1),no(100),ao(1),Xi(0))},[M?.uri,M?.width,M?.height,M?.sizeBytes,M?.durationMs]),Ao.useEffect(()=>{if(M?.type==="video"&&M?.uri){let e=!0;return jo(!0),Tt.generateFilmstrip({uri:M.uri,count:10,targetWidth:120,targetHeight:120}).then(C=>{e&&C?.thumbnails&&$o(C.thumbnails)}).catch(()=>{}).finally(()=>{e&&jo(!1)}),()=>{e=!1}}else $o([])},[M?.type,M?.uri]),Ao.useEffect(()=>{if(Y||M?.uri){const e=Y||M?.uri;e&&M?.type==="image"&&(!U||!he)&&Co.getSize(e,(C,T)=>{C>0&&T>0&&(de(C),ce(T))},()=>{})}},[Y,M?.uri,M?.type,U,he]);const Ae=oo(()=>{const e=lt.width,C=lt.height;if(!e||!C)return{width:e,height:C};const T=U??M?.width,k=he??M?.height;if(!T||!k||T<=0||k<=0)return{width:e,height:C};const P=T/k,z=e/C;let W=e,X=C;return P>z?(W=e,X=e/P):(X=C,W=C*P),{width:Math.max(20,Math.floor(W)),height:Math.max(20,Math.floor(X))}},[lt.width,lt.height,U,he,M?.width,M?.height]),q=Y||M?.uri,Re=U??M?.width,Pe=he??M?.height,Zo=be??M?.sizeBytes,le=it??M?.durationMs,j=M?.type==="video",kn=M?.type==="gif",ie=M?.type==="image",Oe=G(new Gt.ValueXY({x:0,y:0})).current,dt=G({x:0,y:0}),eo=G({x:0,y:0});hi(()=>{const e=Oe.x.addListener(T=>dt.current.x=T.value),C=Oe.y.addListener(T=>dt.current.y=T.value);return()=>{Oe.x.removeListener(e),Oe.y.removeListener(C)}},[Oe]);const ht=G(ae);ht.current=ae;const St=G(Ae);St.current=Ae;const Rt=G(lt);Rt.current=lt;const qo=ot(()=>{const e=ht.current;if(e<=1)return{maxX:0,maxY:0};const C=St.current.width,T=St.current.height,k=Rt.current.width,P=Rt.current.height,z=Math.max(0,(C*e-k)/2/e),W=Math.max(0,(T*e-P)/2/e);return{maxX:z,maxY:W}},[]),Qo=ot((e,C)=>{const{maxX:T,maxY:k}=qo();return{x:Math.max(-T,Math.min(T,e)),y:Math.max(-k,Math.min(k,C))}},[qo]),Qi=G(Lt.create({onStartShouldSetPanResponder:()=>ht.current>1,onMoveShouldSetPanResponder:(e,C)=>ht.current>1&&(Math.abs(C.dx)>4||Math.abs(C.dy)>4),onMoveShouldSetPanResponderCapture:(e,C)=>ht.current>1&&(Math.abs(C.dx)>6||Math.abs(C.dy)>6),onPanResponderTerminationRequest:()=>!1,onShouldBlockNativeResponder:()=>!0,onPanResponderGrant:()=>{eo.current={...dt.current}},onPanResponderMove:(e,C)=>{const T=ht.current,k=eo.current.x+C.dx/T,P=eo.current.y+C.dy/T,{maxX:z,maxY:W}=(()=>{const ee=ht.current;if(ee<=1)return{maxX:0,maxY:0};const tt=St.current.width,Pt=St.current.height,Ht=Rt.current.width,di=Rt.current.height;return{maxX:Math.max(0,(tt*ee-Ht)/2/ee),maxY:Math.max(0,(Pt*ee-di)/2/ee)}})(),X=Math.max(-z,Math.min(z,k)),J=Math.max(-W,Math.min(W,P));Oe.setValue({x:X,y:J})},onPanResponderRelease:()=>{const{maxX:e,maxY:C}=(()=>{const P=ht.current;if(P<=1)return{maxX:0,maxY:0};const z=St.current.width,W=St.current.height,X=Rt.current.width,J=Rt.current.height;return{maxX:Math.max(0,(z*P-X)/2/P),maxY:Math.max(0,(W*P-J)/2/P)}})(),T=dt.current,k={x:Math.max(-e,Math.min(e,T.x)),y:Math.max(-C,Math.min(C,T.y))};(k.x!==T.x||k.y!==T.y)&&Gt.spring(Oe,{toValue:k,friction:7,tension:60,useNativeDriver:!1}).start()},onPanResponderTerminate:()=>{}})).current;hi(()=>{if(ae<=1)Oe.setValue({x:0,y:0}),eo.current={x:0,y:0};else{const e=Qo(dt.current.x,dt.current.y);(e.x!==dt.current.x||e.y!==dt.current.y)&&Gt.spring(Oe,{toValue:e,friction:7,tension:60,useNativeDriver:!1}).start()}},[ae,Oe,Qo]);const Ki=()=>{B("light"),xe(e=>Math.min(4,parseFloat((e+.25).toFixed(2))))},Ji=()=>{B("light"),xe(e=>Math.max(1,parseFloat((e-.25).toFixed(2))))},Ko=()=>{B("medium"),xe(1),Oe.setValue({x:0,y:0}),eo.current={x:0,y:0}},Jo=G(240),ei=ot(e=>{const C=Math.max(50,Jo.current),T=Math.max(0,Math.min(1,e/C));if(je.current==="draw"){const k=co.current;if(k==="brush"||k==="highlighter"||k==="arrow"||k==="rect"||k==="circle"||k==="spotlight"||k==="step"){const P=Math.round(2+T*22);Yi(P)}else if(k==="pixelate"){const P=Math.round(4+T*36);ji(P)}}else if(je.current==="adjust")if(He==="vignette"){const k=Math.round(T*100);Ft(P=>({...P,vignette:k}))}else{const k=Math.round(T*100-50);Ft(P=>({...P,[He]:k}))}else if(je.current==="crop"){const k=Math.round(T*360);Se(k)}else if(je.current==="trim"){const P=Math.round(T*(le||1e4));et==="start"?at(Math.min(pe-500,P)):st(Math.max(se+500,P))}else if(je.current==="audio"){const k=Math.round(T*100);no(k),_t(k===0)}else if(je.current==="speed"){const k=parseFloat((.5+T*1.5).toFixed(2));ao(k)}else if(je.current==="gif"){const k=Math.round(6+T*18);Go(k)}else if(je.current==="none"){const k=parseFloat((1+T*3).toFixed(2));xe(k)}},[He,le,et,se,pe]),er=G(Lt.create({onStartShouldSetPanResponder:()=>!0,onStartShouldSetPanResponderCapture:()=>!0,onMoveShouldSetPanResponder:()=>!0,onMoveShouldSetPanResponderCapture:()=>!0,onPanResponderGrant:e=>{B("light"),ei(e.nativeEvent.locationX)},onPanResponderMove:e=>{ei(e.nativeEvent.locationX)},onPanResponderRelease:()=>{B("light")}})).current,ti=oo(()=>{if(O==="draw"){if(D==="brush"||D==="highlighter"||D==="arrow"||D==="rect"||D==="circle"||D==="spotlight"||D==="step")return Math.min(100,Math.max(0,(Ie-2)/22*100));if(D==="pixelate")return Math.min(100,Math.max(0,(Ro-4)/36*100));if(D==="redact")return 100}return O==="adjust"?He==="vignette"?Math.min(100,Math.max(0,E.vignette)):Math.min(100,Math.max(0,E[He]+50)):O==="crop"?Math.min(100,Math.max(0,Z/360*100)):O==="trim"?Math.min(100,Math.max(0,(et==="start"?se:pe)/(le||1e4)*100)):O==="audio"?fe?0:Ze:O==="speed"?Math.min(100,Math.max(0,(Ge-.5)/1.5*100)):O==="gif"?Math.min(100,Math.max(0,(Zt-6)/18*100)):O==="none"?Math.min(100,Math.max(0,(ae-1)/3*100)):50},[O,D,Ie,Ro,He,E,Z,ae,le,et,se,pe,fe,Ze,Ge,Zt]),oi=ot(()=>{if(we.length===0)return;B("light");const e=we[we.length-1];vt(C=>[...C,{uri:Y||M?.uri||null,inkPaths:[...oe],texts:[...Fe],adjustments:{...E},filterPreset:K,showWatermark:Ce,rotationAngle:Z,flipH:Te,flipV:Me,width:U,height:he,sizeBytes:be}]),rt(C=>C.slice(0,C.length-1)),e&&(ge(e.uri),Le(e.inkPaths),$e(e.texts),e.adjustments&&Ft(e.adjustments),e.filterPreset&&Ut(e.filterPreset),e.showWatermark!==void 0&&Ot(e.showWatermark),e.showGridlines!==void 0&&Dt(e.showGridlines),e.rotationAngle!==void 0&&Se(e.rotationAngle),e.flipH!==void 0&&Xt(e.flipH),e.flipV!==void 0&&Yt(e.flipV),e.width&&de(e.width),e.height&&ce(e.height),e.sizeBytes&&ne(e.sizeBytes),L(I("mediaGallery.undone","Action Undone")))},[we,Y,M?.uri,oe,Fe,E,K,Ce,ye,Z,Te,Me,U,he,be,I]),tr=ot(()=>{if(Ee.length===0)return;B("light");const e=Ee[Ee.length-1];rt(C=>[...C,{uri:Y||M?.uri||null,inkPaths:[...oe],texts:[...Fe],adjustments:{...E},filterPreset:K,showWatermark:Ce,showGridlines:ye,rotationAngle:Z,flipH:Te,flipV:Me,width:U,height:he,sizeBytes:be}]),vt(C=>C.slice(0,C.length-1)),e&&(ge(e.uri),Le(e.inkPaths),$e(e.texts),e.adjustments&&Ft(e.adjustments),e.filterPreset&&Ut(e.filterPreset),e.showWatermark!==void 0&&Ot(e.showWatermark),e.showGridlines!==void 0&&Dt(e.showGridlines),e.rotationAngle!==void 0&&Se(e.rotationAngle),e.flipH!==void 0&&Xt(e.flipH),e.flipV!==void 0&&Yt(e.flipV),e.width&&de(e.width),e.height&&ce(e.height),e.sizeBytes&&ne(e.sizeBytes),L(I("mediaGallery.redone","Action Redone")))},[Ee,Y,M?.uri,oe,Fe,E,K,Ce,ye,Z,Te,Me,U,he,be,I]),or=ot(()=>{M&&(B("medium"),re(),ge(M.uri),Le([]),$e([]),Ft({brightness:0,contrast:0,saturation:0,warmth:0,exposure:0,vignette:0}),Ut("none"),Ot(!1),Dt(!1),Se(0),Xt(!1),Yt(!1),de(M.width),ce(M.height),ne(M.sizeBytes),Ke(M.durationMs),xe(1),_("none"),at(0),st(M.durationMs||1e4),ro("end"),_t(!1),no(100),ao(1),L(I("mediaGallery.resetSuccess",M.type==="video"?"Reset to original video":"Reset to original image")))},[M,re,I]),ii=ot(async()=>{if(!(!M||!q)){if(B("medium"),Q(!0),j){try{const e=le||M.durationMs||1e4,C=await Tt.trimVideo({uri:q,startTimeMs:se,endTimeMs:pe<e?pe:void 0,muteAudio:fe||Ze===0,quality:"high"});C?.uri?(ge(C.uri),C.width&&de(C.width),C.height&&ce(C.height),C.size&&ne(C.size),C.durationMs&&Ke(C.durationMs),L(I("mediaGallery.videoSaved","Video Saved Successfully")),We?.refreshMediaCount?.().catch(()=>{})):L(I("mediaGallery.videoSaved","Video Saved"))}catch{L(I("mediaGallery.saveFailed","Failed to save video"))}finally{Q(!1)}return}try{const e=Math.max(1,Re||1e3),C=Math.max(1,Pe||1e3),T=oe.filter(z=>(z.type==="redact"||z.type==="pixelate")&&z.rect).map(z=>{const W=z.rect;return{x:W.x/e,y:W.y/C,width:W.width/e,height:W.height/C,style:z.type==="pixelate"?"blur":"blackout",isNormalized:!0}}),k=[...Fe.map(z=>({x:z.x,y:z.y,width:.22,height:.06,color:z.bgColor||"#EF4444",label:z.text,isNormalized:!0})),...oe.filter(z=>z.type==="rect"||z.type==="arrow"||z.type==="circle").map(z=>{const W=z.points[0]||{x:0,y:0},X=z.points[z.points.length-1]||W,J=Math.min(W.x,X.x),ee=Math.min(W.y,X.y),tt=Math.max(10,Math.abs(X.x-W.x)),Pt=Math.max(10,Math.abs(X.y-W.y));return{x:J/e,y:ee/C,width:tt/e,height:Pt/C,color:z.color||"#EF4444",isNormalized:!0}})],P=await Tt.editPhoto({uri:q,rotation:Z!==0?Z:void 0,flipHorizontal:Te,flipVertical:Me,adjustments:{brightness:E.brightness/50,contrast:1+E.contrast/50,saturation:1+E.saturation/50,temperature:E.warmth/50,vignette:E.vignette/100},filterPreset:K!=="none"?K:void 0,redactions:T.length>0?T:void 0,annotations:k.length>0?k:void 0,format:M.format==="png"?"png":"jpeg",quality:.92});P?.uri?(ge(P.uri),P.width&&de(P.width),P.height&&ce(P.height),P.size&&ne(P.size),Le([]),$e([]),Ft({brightness:0,contrast:0,saturation:0,warmth:0,exposure:0,vignette:0}),Se(0),Xt(!1),Yt(!1),L(I("mediaGallery.savedSuccess","Image Saved Successfully")),We?.refreshMediaCount?.().catch(()=>{})):L(I("mediaGallery.savedSuccess","Image Saved"))}catch{L(I("mediaGallery.saveFailed","Failed to save image"))}finally{Q(!1)}}},[M,q,j,le,se,pe,fe,Ze,Re,Pe,Z,Te,Me,E,K,oe,Fe,We,I]),ri=ot(async()=>{if(!(!M||!q||!j||me)){B("medium"),Q(!0);try{const e=await Tt.generateFilmstrip({uri:q,count:1,targetWidth:Re||1080,targetHeight:Pe||1920});e?.thumbnails&&e.thumbnails.length>0?(L(I("mediaGallery.snapshotSaved","Frame Snapshot Saved (PNG)")),We?.refreshMediaCount?.().catch(()=>{})):L(I("mediaGallery.snapshotFailed","Failed to snapshot frame"))}catch{L(I("mediaGallery.snapshotFailed","Failed to snapshot frame"))}finally{Q(!1)}}},[M,q,j,me,Re,Pe,We,I]),ir=oo(()=>{if(!j||!M)return!1;const e=M.durationMs||1e4,C=se>0||pe<e,T=fe||Ze<100,k=Ge!==1,P=Y!=null&&Y!==M.uri;return C||T||k||P},[j,M,se,pe,fe,Ze,Ge,Y]),ni=oo(()=>{if(!M)return!1;const e=Y!=null&&Y!==M.uri,C=oe.length>0,T=Fe.length>0,k=we.length>0,P=E.brightness!==0||E.contrast!==0||E.saturation!==0||E.warmth!==0||E.exposure!==0||E.vignette!==0;return e||C||T||k||P||(Z!==0||Te||Me)||K!=="none"||Ce||ye},[Y,M,oe.length,Fe.length,we.length,E,Z,Te,Me,K,Ce,ye]),rr=()=>{B("light"),oi()},nr=()=>{B("medium"),re(),Le([])},Sn=e=>{B("light"),_("crop"),qt(e),kt(Et(e,Re,Pe))},ai=async()=>{if(!(!q||!ie)){B("medium"),re(),Q(!0);try{const e=await Tt.cropToDefect(q,{x:Qt.x,y:Qt.y,width:Qt.width,height:Qt.height,isNormalized:!0});e?.uri?(ge(e.uri),e.width&&de(e.width),e.height&&ce(e.height),e.size&&ne(e.size),kt(Et("free",e.width,e.height)),qt("free"),L(I("mediaGallery.croppedSuccess","Image Cropped")),_("none")):L(I("mediaGallery.cropFailed","Crop failed"))}catch{L(I("mediaGallery.cropFailed","Crop failed"))}finally{Q(!1)}}},Bo=e=>{B("light"),e?(Xo(e),lo(e.text)):(Xo(null),lo("")),Jt(!0)},ar=e=>{B("light"),re(),$e(C=>C.filter(T=>T.id!==e))},sr=()=>{if(!so.trim()){Jt(!1);return}if(re(),Uo)$e(e=>e.map(C=>C.id===Uo.id?{...C,text:so.trim(),color:ve}:C));else{const e={id:`text_${Date.now()}`,text:so.trim(),x:ho.x,y:ho.y,color:S.white,bgColor:ve==="#FFFFFF"?"#0F172A":ve};$e(C=>[...C,e])}Jt(!1),lo(""),L(I("mediaGallery.textAdded","Text Added"))},Rn=async e=>{if(!(!q||!ie||me)){B("medium"),re(),Q(!0);try{const C=await Tt.editPhoto({uri:q,quality:.85,crop:{x:0,y:0,width:1,height:1,isNormalized:!0}});if(C?.uri){ge(C.uri);const T=Math.round((Re||1080)*e),k=Math.round((Pe||1920)*e);de(T),ce(k),C.size&&ne(Math.round(C.size*e*e)),L(I("mediaGallery.resizedSuccess",`Resized to ${Math.round(e*100)}% (${T}\xD7${k})`)),_("none")}}catch{L(I("mediaGallery.resizeFailed","Resize failed"))}finally{Q(!1)}}},lr=async()=>{try{B("light");const e=q.startsWith("file://")||q.startsWith("content://")||q.startsWith("http")?q:`file://${q}`,C=io.select({ios:{url:e,title:M.filename},default:{title:M.filename,message:M.filename,url:e}});(await Mi.share(C)).action===Mi.sharedAction&&L(I("mediaGallery.shareSuccess","Shared successfully"))}catch(e){e?.message!=="User did not share"&&L(I("mediaGallery.shareUnavailable","Sharing not available on this device"))}},dr=()=>{B("medium"),Je(!0)},si=async()=>{if(Mt){Ne(!0);try{await Mt(M),L(I("mediaGallery.convertedSuccess","Converted to GIF!"))}catch{L(I("mediaGallery.convertFailed","Conversion failed"))}finally{Ne(!1)}}},Io=async()=>{try{Xe(!0),await Jr.playVideo(q)}catch{L(I("mediaGallery.playError","Unable to play video"))}finally{Xe(!1)}},Pn=async()=>{if(!(!q||!j||me)){Q(!0),B("light");try{const C=Math.min(le||1e4,5e3),T=await Tt.trimReproClip(q,0,C,{quality:"medium"});T?.uri&&(ge(T.uri),T.width&&de(T.width),T.height&&ce(T.height),T.size&&ne(T.size),T.durationMs&&Ke(T.durationMs),L(I("mediaGallery.trimmedSuccess","Trimmed to 5s Repro Clip")))}catch{L(I("mediaGallery.trimFailed","Trim failed"))}finally{Q(!1)}}},hr=async()=>{if(!(!q||!j||me)){Q(!0),B("light");try{const e=await Tt.muteVideo(q);e?.uri&&(ge(e.uri),e.width&&de(e.width),e.height&&ce(e.height),e.size&&ne(e.size),e.durationMs&&Ke(e.durationMs),L(I("mediaGallery.mutedSuccess","Audio Stripped")))}catch{L(I("mediaGallery.muteFailed","Mute failed"))}finally{Q(!1)}}},to=le?(le/1e3).toFixed(1):null,li=to?`00:${Number(to)<10?"0":""}${to}`:null,cr=[{key:"none",label:I("mediaGallery.preview","Preview"),themeColor:S.brandPurple,icon:e=><Ai size={16}color={e?"#38BDF8":"rgba(255,255,255,0.55)"}/>},{key:"crop",label:"Crop",themeColor:S.sky600,icon:e=><Ii size={16}color={e?"#38BDF8":"rgba(255,255,255,0.55)"}/>},{key:"adjust",label:"Adjust",themeColor:S.amber500,icon:e=><Vi size={16}color={e?"#38BDF8":"rgba(255,255,255,0.55)"}/>},{key:"draw",label:"Markup",themeColor:S.sky400,icon:e=><Vo size={16}color={e?"#38BDF8":"rgba(255,255,255,0.55)"}/>},{key:"text",label:"Text",themeColor:S.violet600,icon:e=><Ei size={16}color={e?"#38BDF8":"rgba(255,255,255,0.55)"}/>}],ur=[{key:"none",label:I("mediaGallery.preview","Player"),themeColor:S.brandPurple,icon:e=><Ai size={14}color={e?"#38BDF8":"rgba(255,255,255,0.55)"}/>},{key:"trim",label:I("media.trim","Trim"),themeColor:S.sky600,icon:e=><Wi size={14}color={e?"#38BDF8":"rgba(255,255,255,0.55)"}/>,hasBadge:se>0||pe<(le||1e4)},{key:"audio",label:I("media.audio","Audio"),themeColor:S.amber600,icon:e=><So size={14}color={e?"#38BDF8":"rgba(255,255,255,0.55)"}/>,hasBadge:fe||Ze<100},{key:"speed",label:I("media.speed","Speed"),themeColor:S.violet600,icon:e=><Ho size={14}color={e?"#38BDF8":"rgba(255,255,255,0.55)"}/>,hasBadge:Ge!==1},{key:"gif",label:I("media.toGif","To GIF"),themeColor:S.emerald500,icon:e=><Do size={14}color={e?"#38BDF8":"rgba(255,255,255,0.55)"}/>},{key:"snapshot",label:I("media.snapshot","Snapshot"),themeColor:S.pink500,icon:e=><Fo size={14}color={e?"#38BDF8":"rgba(255,255,255,0.55)"}/>}];return!M||!De?null:<Ci visible={De}transparent={!0}animationType="fade"statusBarTranslucent={!0}onRequestClose={ke}>
68
+ <F style={t.modalBackdrop}>
69
+ <Oo style={t.modalBackdropPressable}onPress={ke}/>
70
+ <F style={[t.modalContentCard,{height:`${te}%`,borderTopLeftRadius:te>=100?0:20,borderTopRightRadius:te>=100?0:20}]}>
71
71
  <Fi translucent backgroundColor="transparent"barStyle="light-content"/>
72
72
 
73
- <C style={[t.header,{paddingTop:_e,borderTopLeftRadius:K>=100?0:20,borderTopRightRadius:K>=100?0:20}]}>
74
- <Mr colors={[M.indigo600,M.violet600]}start={{x:0,y:0}}end={{x:1,y:1}}style={[L.absoluteFill,{borderTopLeftRadius:K>=100?0:20,borderTopRightRadius:K>=100?0:20}]}pointerEvents="none"/>
75
- <C style={t.headerInner}>
73
+ <F style={[t.header,{paddingTop:Qe,borderTopLeftRadius:te>=100?0:20,borderTopRightRadius:te>=100?0:20}]}>
74
+ <Mr colors={[S.indigo600,S.violet600]}start={{x:0,y:0}}end={{x:1,y:1}}style={[N.absoluteFill,{borderTopLeftRadius:te>=100?0:20,borderTopRightRadius:te>=100?0:20}]}pointerEvents="none"/>
75
+ <F style={t.headerInner}>
76
76
 
77
- <C style={t.headerLeft}>
78
- <Bt accessible={!0}accessibilityRole="button"accessibilityLabel={z("common.back","Back")}onPress={Me}hitSlop={15}style={t.headerBackBtn}>
77
+ <F style={t.headerLeft}>
78
+ <Bt accessible={!0}accessibilityRole="button"accessibilityLabel={I("common.back","Back")}onPress={ke}hitSlop={15}style={t.headerBackBtn}>
79
79
  <Nr size={17}/>
80
80
  </Bt>
81
- <C style={t.headerTextCol}>
82
- <C style={t.headerTitleRow}>
83
- <F style={t.title}numberOfLines={1}>
84
- {r.filename||(ee?"debug_session.png":"recording.mp4")}
85
- </F>
86
- <C style={t.formatBadge}>
87
- <F style={t.formatBadgeText}>
88
- {(r.filename?.split(".").pop()||(ee?"PNG":G?"MP4":"GIF")).toUpperCase()}
89
- </F>
90
- </C>
91
- </C>
92
- <C style={t.headerSubtitleRow}>
93
- <F style={t.subtitleDim}numberOfLines={1}>
94
- {ke&&Se?`${ke} \xD7 ${Se}`:ee?"1320 \xD7 2868":"1080 \xD7 1920"}
81
+ <F style={t.headerTextCol}>
82
+ <F style={t.headerTitleRow}>
83
+ <R style={t.title}numberOfLines={1}>
84
+ {M.filename||(ie?"debug_session.png":"recording.mp4")}
85
+ </R>
86
+ <F style={t.formatBadge}>
87
+ <R style={t.formatBadgeText}>
88
+ {(M.filename?.split(".").pop()||(ie?"PNG":j?"MP4":"GIF")).toUpperCase()}
89
+ </R>
95
90
  </F>
91
+ </F>
92
+ <F style={t.headerSubtitleRow}>
93
+ <R style={t.subtitleDim}numberOfLines={1}>
94
+ {Re&&Pe?`${Re} \xD7 ${Pe}`:ie?"1320 \xD7 2868":"1080 \xD7 1920"}
95
+ </R>
96
96
  {Zo?<>
97
- <F style={t.subtitleDot}>•</F>
98
- <F style={t.subtitleSize}>
97
+ <R style={t.subtitleDot}>•</R>
98
+ <R style={t.subtitleSize}>
99
99
  {Gi(Zo)}
100
- </F>
100
+ </R>
101
101
  </>:<>
102
- <F style={t.subtitleDot}>•</F>
103
- <F style={t.subtitleSize}>774 KB</F>
102
+ <R style={t.subtitleDot}>•</R>
103
+ <R style={t.subtitleSize}>774 KB</R>
104
104
  </>}
105
- </C>
106
- </C>
107
- </C>
105
+ </F>
106
+ </F>
107
+ </F>
108
108
 
109
109
 
110
- <C style={t.headerRight}>
110
+ <F style={t.headerRight}>
111
111
 
112
- {ee&&<C style={t.undoRedoGroup}>
113
- <P accessible={!0}accessibilityRole="button"accessibilityLabel={z("common.undo","Undo")}onPress={oi}disabled={be.length===0}style={[t.undoHalfBtn,be.length===0&&t.actionDisabled]}hitSlop={{top:8,bottom:8,left:6,right:4}}>
114
- <Ei size={14}color={be.length>0?M.white:"rgba(255, 255, 255, 0.35)"}/>
115
- </P>
116
- <C style={t.undoDivider}/>
117
- <P accessible={!0}accessibilityRole="button"accessibilityLabel="Redo"onPress={tr}disabled={We.length===0}style={[t.redoHalfBtn,We.length===0&&t.actionDisabled]}hitSlop={{top:8,bottom:8,left:4,right:6}}>
118
- <Hr size={14}color={We.length>0?M.white:"rgba(255, 255, 255, 0.35)"}/>
119
- </P>
120
- </C>}
112
+ {ie&&<F style={t.undoRedoGroup}>
113
+ <A accessible={!0}accessibilityRole="button"accessibilityLabel={I("common.undo","Undo")}onPress={oi}disabled={we.length===0}style={[t.undoHalfBtn,we.length===0&&t.actionDisabled]}hitSlop={{top:8,bottom:8,left:6,right:4}}>
114
+ <Hi size={14}color={we.length>0?S.white:"rgba(255, 255, 255, 0.35)"}/>
115
+ </A>
116
+ <F style={t.undoDivider}/>
117
+ <A accessible={!0}accessibilityRole="button"accessibilityLabel="Redo"onPress={tr}disabled={Ee.length===0}style={[t.redoHalfBtn,Ee.length===0&&t.actionDisabled]}hitSlop={{top:8,bottom:8,left:4,right:6}}>
118
+ <Er size={14}color={Ee.length>0?S.white:"rgba(255, 255, 255, 0.35)"}/>
119
+ </A>
120
+ </F>}
121
121
 
122
122
 
123
- <Bt accessible={!0}accessibilityRole="button"accessibilityLabel="More Options"onPress={()=>{R("light"),ot(e=>!e)}}style={t.headerMoreBtn}hitSlop={{top:8,bottom:8,left:6,right:6}}>
124
- <Dr size={16}color={M.white}/>
123
+ <Bt accessible={!0}accessibilityRole="button"accessibilityLabel="More Options"onPress={()=>{B("light"),nt(e=>!e)}}style={t.headerMoreBtn}hitSlop={{top:8,bottom:8,left:6,right:6}}>
124
+ <Dr size={16}color={S.white}/>
125
125
  </Bt>
126
126
 
127
127
 
128
- <Bt accessible={!0}accessibilityRole="button"accessibilityLabel={z("common.save","Save")}onPress={ii}disabled={pe}style={[t.headerSaveBtn,pe&&{opacity:.6}]}hitSlop={{top:8,bottom:8,left:6,right:6}}>
129
- <Gr size={14}color={M.white}/>
130
- <F style={t.headerSaveText}>{z("common.save","Save")}</F>
128
+ <Bt accessible={!0}accessibilityRole="button"accessibilityLabel={I("common.save","Save")}onPress={ii}disabled={me}style={[t.headerSaveBtn,me&&{opacity:.6}]}hitSlop={{top:8,bottom:8,left:6,right:6}}>
129
+ <Gr size={14}color={S.white}/>
130
+ <R style={t.headerSaveText}>{I("common.save","Save")}</R>
131
131
  </Bt>
132
- </C>
133
- </C>
134
- </C>
132
+ </F>
133
+ </F>
134
+ </F>
135
135
 
136
136
 
137
- {$i&&<C style={t.moreMenuDropdown}>
138
- {(ee&&ni||G&&ir)&&<P onPress={()=>{ot(!1),or()}}style={t.moreMenuItem}>
139
- <Di size={14}color={M.sky400}/>
140
- <F style={t.moreMenuItemText}>
141
- {z("common.reset","Reset to Original")}
142
- </F>
143
- </P>}
144
- {ee&&<P onPress={()=>{R("light"),Dt(e=>!e),ot(!1)}}style={t.moreMenuItem}>
145
- <Wo size={14}color={ue?M.sky400:M.white}/>
146
- <F style={t.moreMenuItemText}>
147
- {ue?z("mediaGallery.hideGridlines","Hide Instagram Grid (3\xD73)"):z("mediaGallery.showGridlines","Show Instagram Grid (3\xD73)")}
148
- </F>
149
- </P>}
150
- {ee&&<P onPress={()=>{R("light"),te(),Ot(e=>!e),ot(!1)}}style={t.moreMenuItem}>
151
- <F style={t.moreMenuItemIconText}>🛡</F>
152
- <F style={t.moreMenuItemText}>
153
- {xe?z("mediaGallery.hideWatermark","Hide QA Watermark"):z("mediaGallery.showWatermark","Show QA Watermark")}
154
- </F>
155
- </P>}
156
- {G&&<P onPress={()=>{ot(!1),si()}}style={t.moreMenuItem}>
157
- <Do size={14}color={M.violet600}/>
158
- <F style={t.moreMenuItemText}>
159
- {z("mediaGallery.exportGif","Export as Animated GIF")}
160
- </F>
161
- </P>}
162
- {G&&<P onPress={()=>{ot(!1),ri()}}style={t.moreMenuItem}>
163
- <Fo size={14}color={M.sky400}/>
164
- <F style={t.moreMenuItemText}>
165
- {z("mediaGallery.snapshotFrame","Snapshot Frame (PNG)")}
166
- </F>
167
- </P>}
168
- <P onPress={()=>{ot(!1),lr()}}style={t.moreMenuItem}>
169
- <Lr size={14}color={M.white}/>
170
- <F style={t.moreMenuItemText}>
171
- {z("mediaGallery.share",G?"Share Video":"Share Image")}
172
- </F>
173
- </P>
174
- <P onPress={()=>{ot(!1),dr()}}style={[t.moreMenuItem,t.moreMenuItemDestructive]}>
175
- <$r size={14}color={M.rose500}/>
176
- <F style={[t.moreMenuItemText,{color:M.rose500}]}>
177
- {z("mediaGallery.delete","Delete Media")}
178
- </F>
179
- </P>
180
- </C>}
137
+ {$i&&<F style={t.moreMenuDropdown}>
138
+ {(ie&&ni||j&&ir)&&<A onPress={()=>{nt(!1),or()}}style={t.moreMenuItem}>
139
+ <Di size={14}color={S.sky400}/>
140
+ <R style={t.moreMenuItemText}>
141
+ {I("common.reset","Reset to Original")}
142
+ </R>
143
+ </A>}
144
+ {ie&&<A onPress={()=>{B("light"),Dt(e=>!e),nt(!1)}}style={t.moreMenuItem}>
145
+ <Wo size={14}color={ye?S.sky400:S.white}/>
146
+ <R style={t.moreMenuItemText}>
147
+ {ye?I("mediaGallery.hideGridlines","Hide Instagram Grid (3\xD73)"):I("mediaGallery.showGridlines","Show Instagram Grid (3\xD73)")}
148
+ </R>
149
+ </A>}
150
+ {ie&&<A onPress={()=>{B("light"),re(),Ot(e=>!e),nt(!1)}}style={t.moreMenuItem}>
151
+ <R style={t.moreMenuItemIconText}>🛡</R>
152
+ <R style={t.moreMenuItemText}>
153
+ {Ce?I("mediaGallery.hideWatermark","Hide QA Watermark"):I("mediaGallery.showWatermark","Show QA Watermark")}
154
+ </R>
155
+ </A>}
156
+ {j&&<A onPress={()=>{nt(!1),si()}}style={t.moreMenuItem}>
157
+ <Do size={14}color={S.violet600}/>
158
+ <R style={t.moreMenuItemText}>
159
+ {I("mediaGallery.exportGif","Export as Animated GIF")}
160
+ </R>
161
+ </A>}
162
+ {j&&<A onPress={()=>{nt(!1),ri()}}style={t.moreMenuItem}>
163
+ <Fo size={14}color={S.sky400}/>
164
+ <R style={t.moreMenuItemText}>
165
+ {I("mediaGallery.snapshotFrame","Snapshot Frame (PNG)")}
166
+ </R>
167
+ </A>}
168
+ <A onPress={()=>{nt(!1),lr()}}style={t.moreMenuItem}>
169
+ <Lr size={14}color={S.white}/>
170
+ <R style={t.moreMenuItemText}>
171
+ {I("mediaGallery.share",j?"Share Video":"Share Image")}
172
+ </R>
173
+ </A>
174
+ <A onPress={()=>{nt(!1),dr()}}style={[t.moreMenuItem,t.moreMenuItemDestructive]}>
175
+ <$r size={14}color={S.rose500}/>
176
+ <R style={[t.moreMenuItemText,{color:S.rose500}]}>
177
+ {I("mediaGallery.delete","Delete Media")}
178
+ </R>
179
+ </A>
180
+ </F>}
181
181
 
182
182
 
183
- <C style={t.stageWrapper}>
184
- <C onLayout={e=>{const{width:o,height:i}=e.nativeEvent.layout;o>20&&i>20&&_o(T=>({...T,width:o,height:i}))}}style={t.previewCard}>
185
- {G?r.thumbnailUri&&!$e?<>
186
- <Co source={{uri:r.thumbnailUri}}style={t.image}resizeMode="contain"onError={()=>Re(!0)}/>
187
- <C style={t.videoImageOverlay}/>
188
- </>:<C style={t.videoFallbackBackdrop}>
189
- <C style={t.videoFallbackGlow}/>
190
- <Ir size={52}color={M.sky400}/>
191
- <F style={t.videoFallbackTitle}>
192
- {r.width&&r.height?`${r.width} \xD7 ${r.height}`:"HD Video Recording"}
193
- </F>
194
- <F style={t.videoFallbackSubtitle}>
183
+ <F style={t.stageWrapper}>
184
+ <F onLayout={e=>{const{width:C,height:T}=e.nativeEvent.layout;C>20&&T>20&&_o(k=>({...k,width:C,height:T}))}}style={t.previewCard}>
185
+ {j?M.thumbnailUri&&!Ue?<>
186
+ <Co source={{uri:M.thumbnailUri}}style={t.image}resizeMode="contain"onError={()=>ze(!0)}/>
187
+ <F style={t.videoImageOverlay}/>
188
+ </>:<F style={t.videoFallbackBackdrop}>
189
+ <F style={t.videoFallbackGlow}/>
190
+ <Ir size={52}color={S.sky400}/>
191
+ <R style={t.videoFallbackTitle}>
192
+ {M.width&&M.height?`${M.width} \xD7 ${M.height}`:"HD Video Recording"}
193
+ </R>
194
+ <R style={t.videoFallbackSubtitle}>
195
195
  {to?`${to}s duration`:"MP4 Video"} •{" "}
196
- {Gi(r.sizeBytes)}
197
- </F>
198
- </C>:<Gt.View onLayout={e=>{const{width:o,height:i}=e.nativeEvent.layout;o>20&&i>20&&_o(T=>({...T,width:o,height:i}))}}style={[t.canvasContainer,{transform:[...Ie.getTranslateTransform(),{scale:ie}]}]}{...B==="draw"?qi.panHandlers:B==="none"&&ie>1?Qi.panHandlers:{}}>
199
- <C style={[t.imageCanvasWrapper,{width:Be.width,height:Be.height,transform:[{rotate:`${X}deg`},{scaleX:fe?-1:1},{scaleY:we?-1:1}]}]}>
196
+ {Gi(M.sizeBytes)}
197
+ </R>
198
+ </F>:<Gt.View onLayout={e=>{const{width:C,height:T}=e.nativeEvent.layout;C>20&&T>20&&_o(k=>({...k,width:C,height:T}))}}style={[t.canvasContainer,{transform:[...Oe.getTranslateTransform(),{scale:ae}]}]}{...O==="draw"?qi.panHandlers:O==="none"&&ae>1?Qi.panHandlers:{}}>
199
+ <F style={[t.imageCanvasWrapper,{width:Ae.width,height:Ae.height,transform:[{rotate:`${Z}deg`},{scaleX:Te?-1:1},{scaleY:Me?-1:1}]}]}>
200
200
 
201
- <Co key={Pe?r?.uri:Y}source={{uri:Pe?r?.uri:Y}}style={t.image}resizeMode="cover"onError={()=>Re(!0)}/>
201
+ <Co key={Be?M?.uri:q}source={{uri:Be?M?.uri:q}}style={t.image}resizeMode="cover"onError={()=>ze(!0)}/>
202
202
 
203
203
 
204
- {!Pe&&<>
204
+ {!Be&&<>
205
205
 
206
- {D.brightness+D.exposure!==0&&<C pointerEvents="none"style={[L.absoluteFill,{backgroundColor:D.brightness+D.exposure>0?"#FFFFFF":"#000000",opacity:Math.min(.65,Math.abs(D.brightness+D.exposure)/100*.7)}]}/>}
206
+ {E.brightness+E.exposure!==0&&<F pointerEvents="none"style={[N.absoluteFill,{backgroundColor:E.brightness+E.exposure>0?"#FFFFFF":"#000000",opacity:Math.min(.65,Math.abs(E.brightness+E.exposure)/100*.7)}]}/>}
207
207
 
208
208
 
209
- {D.warmth!==0&&<C pointerEvents="none"style={[L.absoluteFill,{backgroundColor:D.warmth>0?"#F59E0B":"#0284C7",opacity:Math.min(.4,Math.abs(D.warmth)/50*.35)}]}/>}
209
+ {E.warmth!==0&&<F pointerEvents="none"style={[N.absoluteFill,{backgroundColor:E.warmth>0?"#F59E0B":"#0284C7",opacity:Math.min(.4,Math.abs(E.warmth)/50*.35)}]}/>}
210
210
 
211
211
 
212
- {D.saturation>0&&<C pointerEvents="none"style={[L.absoluteFill,{backgroundColor:"#A855F7",opacity:Math.min(.2,D.saturation/50*.15)}]}/>}
212
+ {E.saturation>0&&<F pointerEvents="none"style={[N.absoluteFill,{backgroundColor:"#A855F7",opacity:Math.min(.2,E.saturation/50*.15)}]}/>}
213
213
 
214
214
 
215
- {D.vignette>0&&<C pointerEvents="none"style={[L.absoluteFill,{borderRadius:6,borderWidth:Math.max(2,D.vignette/100*44),borderColor:`rgba(0, 0, 0, ${.85*(D.vignette/100)})`}]}/>}
215
+ {E.vignette>0&&<F pointerEvents="none"style={[N.absoluteFill,{borderRadius:6,borderWidth:Math.max(2,E.vignette/100*44),borderColor:`rgba(0, 0, 0, ${.85*(E.vignette/100)})`}]}/>}
216
216
 
217
217
 
218
- {Z==="mono"&&<C pointerEvents="none"style={[L.absoluteFill,{backgroundColor:"rgba(100, 116, 139, 0.45)"}]}/>}
219
- {Z==="noir"&&<C pointerEvents="none"style={[L.absoluteFill,{backgroundColor:"rgba(0, 0, 0, 0.48)"}]}/>}
220
- {Z==="sepia"&&<C pointerEvents="none"style={[L.absoluteFill,{backgroundColor:"rgba(120, 53, 15, 0.32)"}]}/>}
221
- {Z==="vintage"&&<C pointerEvents="none"style={[L.absoluteFill,{backgroundColor:"rgba(217, 119, 6, 0.22)"}]}/>}
222
- {Z==="vibrant"&&<C pointerEvents="none"style={[L.absoluteFill,{backgroundColor:"rgba(236, 72, 153, 0.16)"}]}/>}
223
- {Z==="cool"&&<C pointerEvents="none"style={[L.absoluteFill,{backgroundColor:"rgba(14, 165, 233, 0.22)"}]}/>}
224
- {Z==="warm"&&<C pointerEvents="none"style={[L.absoluteFill,{backgroundColor:"rgba(249, 115, 22, 0.22)"}]}/>}
225
- {Z==="fade"&&<C pointerEvents="none"style={[L.absoluteFill,{backgroundColor:"rgba(255, 255, 255, 0.18)"}]}/>}
218
+ {K==="mono"&&<F pointerEvents="none"style={[N.absoluteFill,{backgroundColor:"rgba(100, 116, 139, 0.45)"}]}/>}
219
+ {K==="noir"&&<F pointerEvents="none"style={[N.absoluteFill,{backgroundColor:"rgba(0, 0, 0, 0.48)"}]}/>}
220
+ {K==="sepia"&&<F pointerEvents="none"style={[N.absoluteFill,{backgroundColor:"rgba(120, 53, 15, 0.32)"}]}/>}
221
+ {K==="vintage"&&<F pointerEvents="none"style={[N.absoluteFill,{backgroundColor:"rgba(217, 119, 6, 0.22)"}]}/>}
222
+ {K==="vibrant"&&<F pointerEvents="none"style={[N.absoluteFill,{backgroundColor:"rgba(236, 72, 153, 0.16)"}]}/>}
223
+ {K==="cool"&&<F pointerEvents="none"style={[N.absoluteFill,{backgroundColor:"rgba(14, 165, 233, 0.22)"}]}/>}
224
+ {K==="warm"&&<F pointerEvents="none"style={[N.absoluteFill,{backgroundColor:"rgba(249, 115, 22, 0.22)"}]}/>}
225
+ {K==="fade"&&<F pointerEvents="none"style={[N.absoluteFill,{backgroundColor:"rgba(255, 255, 255, 0.18)"}]}/>}
226
226
  </>}
227
227
 
228
228
 
229
- {!Pe&&<Fr style={L.absoluteFill}pointerEvents={B==="draw"?"auto":"none"}>
229
+ {!Be&&<Fr style={N.absoluteFill}pointerEvents={O==="draw"?"auto":"none"}>
230
230
  <Ct>
231
231
 
232
- {J.map(e=>{if(e.type==="brush"){if(e.points.length<2)return null;const o=e.points.reduce((i,T,k)=>k===0?`M ${T.x} ${T.y}`:`${i} L ${T.x} ${T.y}`,"");return<Mo key={e.id}d={o}stroke={e.color}strokeWidth={e.strokeWidth}strokeLinecap="round"strokeLinejoin="round"fill="none"/>}if(e.type==="highlighter"){if(e.points.length<2)return null;const o=e.points.reduce((i,T,k)=>k===0?`M ${T.x} ${T.y}`:`${i} L ${T.x} ${T.y}`,"");return<Mo key={e.id}d={o}stroke={e.color}strokeWidth={e.strokeWidth*2.5}strokeOpacity={.4}strokeLinecap="round"strokeLinejoin="round"fill="none"/>}if(e.type==="arrow"){if(e.points.length<2)return null;const o=e.points[0],i=e.points[1],T=i.x-o.x,k=i.y-o.y,S=Math.atan2(k,T),A=Math.min(28,Math.max(14,e.strokeWidth*3.5)),j=Math.PI/6,q=i.x-A*Math.cos(S-j),Q=i.y-A*Math.sin(S-j),Ke=i.x-A*Math.cos(S+j),Pt=i.y-A*Math.sin(S+j);return<Ct key={e.id}>
233
- <$t x1={o.x}y1={o.y}x2={i.x}y2={i.y}stroke={e.color}strokeWidth={e.strokeWidth}strokeLinecap="round"/>
234
- <Ri points={`${i.x},${i.y} ${q},${Q} ${Ke},${Pt}`}fill={e.color}/>
235
- </Ct>}if(e.type==="rect"){const o=e.rect||{x:Math.min(e.points[0]?.x||0,e.points[1]?.x||0),y:Math.min(e.points[0]?.y||0,e.points[1]?.y||0),width:Math.abs((e.points[1]?.x||0)-(e.points[0]?.x||0)),height:Math.abs((e.points[1]?.y||0)-(e.points[0]?.y||0))};return<Nt key={e.id}x={o.x}y={o.y}width={o.width}height={o.height}stroke={e.color}strokeWidth={e.strokeWidth}rx={6}ry={6}fill="none"/>}if(e.type==="circle"){const o=e.points[0]||{x:0,y:0},i=e.points[1]||o,T=Math.min(o.x,i.x),k=Math.min(o.y,i.y),S=Math.max(10,Math.abs(i.x-o.x)),A=Math.max(10,Math.abs(i.y-o.y));return<To key={e.id}cx={T+S/2}cy={k+A/2}rx={S/2}ry={A/2}stroke={e.color}strokeWidth={e.strokeWidth}fill="none"/>}if(e.type==="spotlight"){const o=e.points[0]||{x:0,y:0},i=e.points[1]||o,T=Math.min(o.x,i.x),k=Math.min(o.y,i.y),S=Math.max(16,Math.abs(i.x-o.x)),A=Math.max(16,Math.abs(i.y-o.y));return<Ct key={e.id}>
236
- <To cx={T+S/2}cy={k+A/2}rx={S/2}ry={A/2}stroke="#FBBF24"strokeWidth={2.5}strokeDasharray="5,3"fill="rgba(255, 255, 255, 0.15)"/>
237
- </Ct>}if(e.type==="step"){const o=e.points[0]||{x:0,y:0},i=Math.max(12,Math.min(20,e.strokeWidth*2.2+8));return<Ct key={e.id}>
238
- <Si cx={o.x}cy={o.y}r={i}fill={e.color||"#EF4444"}stroke="#FFFFFF"strokeWidth={1.5}/>
239
- <Pi x={o.x}y={o.y+i*.35}fill="#FFFFFF"fontSize={Math.round(i*.95)}fontWeight="bold"textAnchor="middle">
232
+ {oe.map(e=>{if(e.type==="brush"){if(e.points.length<2)return null;const C=e.points.reduce((T,k,P)=>P===0?`M ${k.x} ${k.y}`:`${T} L ${k.x} ${k.y}`,"");return<Mo key={e.id}d={C}stroke={e.color}strokeWidth={e.strokeWidth}strokeLinecap="round"strokeLinejoin="round"fill="none"/>}if(e.type==="highlighter"){if(e.points.length<2)return null;const C=e.points.reduce((T,k,P)=>P===0?`M ${k.x} ${k.y}`:`${T} L ${k.x} ${k.y}`,"");return<Mo key={e.id}d={C}stroke={e.color}strokeWidth={e.strokeWidth*2.5}strokeOpacity={.4}strokeLinecap="round"strokeLinejoin="round"fill="none"/>}if(e.type==="arrow"){if(e.points.length<2)return null;const C=e.points[0],T=e.points[1],k=T.x-C.x,P=T.y-C.y,z=Math.atan2(P,k),W=Math.min(28,Math.max(14,e.strokeWidth*3.5)),X=Math.PI/6,J=T.x-W*Math.cos(z-X),ee=T.y-W*Math.sin(z-X),tt=T.x-W*Math.cos(z+X),Pt=T.y-W*Math.sin(z+X);return<Ct key={e.id}>
233
+ <$t x1={C.x}y1={C.y}x2={T.x}y2={T.y}stroke={e.color}strokeWidth={e.strokeWidth}strokeLinecap="round"/>
234
+ <Ri points={`${T.x},${T.y} ${J},${ee} ${tt},${Pt}`}fill={e.color}/>
235
+ </Ct>}if(e.type==="rect"){const C=e.rect||{x:Math.min(e.points[0]?.x||0,e.points[1]?.x||0),y:Math.min(e.points[0]?.y||0,e.points[1]?.y||0),width:Math.abs((e.points[1]?.x||0)-(e.points[0]?.x||0)),height:Math.abs((e.points[1]?.y||0)-(e.points[0]?.y||0))};return<Nt key={e.id}x={C.x}y={C.y}width={C.width}height={C.height}stroke={e.color}strokeWidth={e.strokeWidth}rx={6}ry={6}fill="none"/>}if(e.type==="circle"){const C=e.points[0]||{x:0,y:0},T=e.points[1]||C,k=Math.min(C.x,T.x),P=Math.min(C.y,T.y),z=Math.max(10,Math.abs(T.x-C.x)),W=Math.max(10,Math.abs(T.y-C.y));return<To key={e.id}cx={k+z/2}cy={P+W/2}rx={z/2}ry={W/2}stroke={e.color}strokeWidth={e.strokeWidth}fill="none"/>}if(e.type==="spotlight"){const C=e.points[0]||{x:0,y:0},T=e.points[1]||C,k=Math.min(C.x,T.x),P=Math.min(C.y,T.y),z=Math.max(16,Math.abs(T.x-C.x)),W=Math.max(16,Math.abs(T.y-C.y));return<Ct key={e.id}>
236
+ <To cx={k+z/2}cy={P+W/2}rx={z/2}ry={W/2}stroke="#FBBF24"strokeWidth={2.5}strokeDasharray="5,3"fill="rgba(255, 255, 255, 0.15)"/>
237
+ </Ct>}if(e.type==="step"){const C=e.points[0]||{x:0,y:0},T=Math.max(12,Math.min(20,e.strokeWidth*2.2+8));return<Ct key={e.id}>
238
+ <Si cx={C.x}cy={C.y}r={T}fill={e.color||"#EF4444"}stroke="#FFFFFF"strokeWidth={1.5}/>
239
+ <Pi x={C.x}y={C.y+T*.35}fill="#FFFFFF"fontSize={Math.round(T*.95)}fontWeight="bold"textAnchor="middle">
240
240
  {e.stepNumber||1}
241
241
  </Pi>
242
- </Ct>}if(e.type==="redact"){const o=e.rect||{x:Math.min(e.points[0]?.x||0,e.points[1]?.x||0),y:Math.min(e.points[0]?.y||0,e.points[1]?.y||0),width:Math.abs((e.points[1]?.x||0)-(e.points[0]?.x||0)),height:Math.abs((e.points[1]?.y||0)-(e.points[0]?.y||0))};return<Nt key={e.id}x={o.x}y={o.y}width={o.width}height={o.height}fill="#000000"rx={4}ry={4}/>}if(e.type==="pixelate"){const o=e.rect||{x:Math.min(e.points[0]?.x||0,e.points[1]?.x||0),y:Math.min(e.points[0]?.y||0,e.points[1]?.y||0),width:Math.abs((e.points[1]?.x||0)-(e.points[0]?.x||0)),height:Math.abs((e.points[1]?.y||0)-(e.points[0]?.y||0))};return<Ct key={e.id}>
243
- <Nt x={o.x}y={o.y}width={o.width}height={o.height}fill="rgba(255,255,255,0.22)"stroke="rgba(255,255,255,0.5)"strokeWidth={1.5}strokeDasharray="4,4"rx={4}ry={4}/>
244
- <$t x1={o.x}y1={o.y+o.height*.33}x2={o.x+o.width}y2={o.y+o.height*.33}stroke="rgba(255,255,255,0.35)"strokeWidth={1}/>
245
- <$t x1={o.x}y1={o.y+o.height*.66}x2={o.x+o.width}y2={o.y+o.height*.66}stroke="rgba(255,255,255,0.35)"strokeWidth={1}/>
246
- <$t x1={o.x+o.width*.33}y1={o.y}x2={o.x+o.width*.33}y2={o.y+o.height}stroke="rgba(255,255,255,0.35)"strokeWidth={1}/>
247
- <$t x1={o.x+o.width*.66}y1={o.y}x2={o.x+o.width*.66}y2={o.y+o.height}stroke="rgba(255,255,255,0.35)"strokeWidth={1}/>
242
+ </Ct>}if(e.type==="redact"){const C=e.rect||{x:Math.min(e.points[0]?.x||0,e.points[1]?.x||0),y:Math.min(e.points[0]?.y||0,e.points[1]?.y||0),width:Math.abs((e.points[1]?.x||0)-(e.points[0]?.x||0)),height:Math.abs((e.points[1]?.y||0)-(e.points[0]?.y||0))};return<Nt key={e.id}x={C.x}y={C.y}width={C.width}height={C.height}fill="#000000"rx={4}ry={4}/>}if(e.type==="pixelate"){const C=e.rect||{x:Math.min(e.points[0]?.x||0,e.points[1]?.x||0),y:Math.min(e.points[0]?.y||0,e.points[1]?.y||0),width:Math.abs((e.points[1]?.x||0)-(e.points[0]?.x||0)),height:Math.abs((e.points[1]?.y||0)-(e.points[0]?.y||0))};return<Ct key={e.id}>
243
+ <Nt x={C.x}y={C.y}width={C.width}height={C.height}fill="rgba(255,255,255,0.22)"stroke="rgba(255,255,255,0.5)"strokeWidth={1.5}strokeDasharray="4,4"rx={4}ry={4}/>
244
+ <$t x1={C.x}y1={C.y+C.height*.33}x2={C.x+C.width}y2={C.y+C.height*.33}stroke="rgba(255,255,255,0.35)"strokeWidth={1}/>
245
+ <$t x1={C.x}y1={C.y+C.height*.66}x2={C.x+C.width}y2={C.y+C.height*.66}stroke="rgba(255,255,255,0.35)"strokeWidth={1}/>
246
+ <$t x1={C.x+C.width*.33}y1={C.y}x2={C.x+C.width*.33}y2={C.y+C.height}stroke="rgba(255,255,255,0.35)"strokeWidth={1}/>
247
+ <$t x1={C.x+C.width*.66}y1={C.y}x2={C.x+C.width*.66}y2={C.y+C.height}stroke="rgba(255,255,255,0.35)"strokeWidth={1}/>
248
248
  </Ct>}return null})}
249
249
 
250
250
 
251
- {W&&W.length>0&&<>
252
- {I==="brush"&&W.length>1&&<Mo d={W.reduce((e,o,i)=>i===0?`M ${o.x} ${o.y}`:`${e} L ${o.x} ${o.y}`,"")}stroke={Ce}strokeWidth={ze}strokeLinecap="round"strokeLinejoin="round"fill="none"/>}
251
+ {H&&H.length>0&&<>
252
+ {D==="brush"&&H.length>1&&<Mo d={H.reduce((e,C,T)=>T===0?`M ${C.x} ${C.y}`:`${e} L ${C.x} ${C.y}`,"")}stroke={ve}strokeWidth={Ie}strokeLinecap="round"strokeLinejoin="round"fill="none"/>}
253
253
 
254
- {I==="highlighter"&&W.length>1&&<Mo d={W.reduce((e,o,i)=>i===0?`M ${o.x} ${o.y}`:`${e} L ${o.x} ${o.y}`,"")}stroke={Ce}strokeWidth={ze*2.5}strokeOpacity={.4}strokeLinecap="round"strokeLinejoin="round"fill="none"/>}
254
+ {D==="highlighter"&&H.length>1&&<Mo d={H.reduce((e,C,T)=>T===0?`M ${C.x} ${C.y}`:`${e} L ${C.x} ${C.y}`,"")}stroke={ve}strokeWidth={Ie*2.5}strokeOpacity={.4}strokeLinecap="round"strokeLinejoin="round"fill="none"/>}
255
255
 
256
- {I==="arrow"&&W.length>1&&(()=>{const e=W[0],o=W[W.length-1],i=o.x-e.x,T=o.y-e.y,k=Math.atan2(T,i),S=Math.min(28,Math.max(14,ze*3.5)),A=Math.PI/6,j=o.x-S*Math.cos(k-A),q=o.y-S*Math.sin(k-A),Q=o.x-S*Math.cos(k+A),Ke=o.y-S*Math.sin(k+A);return<Ct>
257
- <$t x1={e.x}y1={e.y}x2={o.x}y2={o.y}stroke={Ce}strokeWidth={ze}strokeLinecap="round"/>
258
- <Ri points={`${o.x},${o.y} ${j},${q} ${Q},${Ke}`}fill={Ce}/>
256
+ {D==="arrow"&&H.length>1&&(()=>{const e=H[0],C=H[H.length-1],T=C.x-e.x,k=C.y-e.y,P=Math.atan2(k,T),z=Math.min(28,Math.max(14,Ie*3.5)),W=Math.PI/6,X=C.x-z*Math.cos(P-W),J=C.y-z*Math.sin(P-W),ee=C.x-z*Math.cos(P+W),tt=C.y-z*Math.sin(P+W);return<Ct>
257
+ <$t x1={e.x}y1={e.y}x2={C.x}y2={C.y}stroke={ve}strokeWidth={Ie}strokeLinecap="round"/>
258
+ <Ri points={`${C.x},${C.y} ${X},${J} ${ee},${tt}`}fill={ve}/>
259
259
  </Ct>})()}
260
260
 
261
- {I==="rect"&&W.length>1&&(()=>{const e=W[0],o=W[W.length-1],i=Math.min(e.x,o.x),T=Math.min(e.y,o.y),k=Math.abs(o.x-e.x),S=Math.abs(o.y-e.y);return<Nt x={i}y={T}width={k}height={S}stroke={Ce}strokeWidth={ze}rx={6}ry={6}fill="none"/>})()}
261
+ {D==="rect"&&H.length>1&&(()=>{const e=H[0],C=H[H.length-1],T=Math.min(e.x,C.x),k=Math.min(e.y,C.y),P=Math.abs(C.x-e.x),z=Math.abs(C.y-e.y);return<Nt x={T}y={k}width={P}height={z}stroke={ve}strokeWidth={Ie}rx={6}ry={6}fill="none"/>})()}
262
262
 
263
- {I==="circle"&&W.length>1&&(()=>{const e=W[0],o=W[W.length-1],i=Math.min(e.x,o.x),T=Math.min(e.y,o.y),k=Math.max(10,Math.abs(o.x-e.x)),S=Math.max(10,Math.abs(o.y-e.y));return<To cx={i+k/2}cy={T+S/2}rx={k/2}ry={S/2}stroke={Ce}strokeWidth={ze}fill="none"/>})()}
263
+ {D==="circle"&&H.length>1&&(()=>{const e=H[0],C=H[H.length-1],T=Math.min(e.x,C.x),k=Math.min(e.y,C.y),P=Math.max(10,Math.abs(C.x-e.x)),z=Math.max(10,Math.abs(C.y-e.y));return<To cx={T+P/2}cy={k+z/2}rx={P/2}ry={z/2}stroke={ve}strokeWidth={Ie}fill="none"/>})()}
264
264
 
265
- {I==="spotlight"&&W.length>1&&(()=>{const e=W[0],o=W[W.length-1],i=Math.min(e.x,o.x),T=Math.min(e.y,o.y),k=Math.max(16,Math.abs(o.x-e.x)),S=Math.max(16,Math.abs(o.y-e.y));return<Ct>
266
- <To cx={i+k/2}cy={T+S/2}rx={k/2}ry={S/2}stroke="#FBBF24"strokeWidth={2.5}strokeDasharray="5,3"fill="rgba(255, 255, 255, 0.15)"/>
265
+ {D==="spotlight"&&H.length>1&&(()=>{const e=H[0],C=H[H.length-1],T=Math.min(e.x,C.x),k=Math.min(e.y,C.y),P=Math.max(16,Math.abs(C.x-e.x)),z=Math.max(16,Math.abs(C.y-e.y));return<Ct>
266
+ <To cx={T+P/2}cy={k+z/2}rx={P/2}ry={z/2}stroke="#FBBF24"strokeWidth={2.5}strokeDasharray="5,3"fill="rgba(255, 255, 255, 0.15)"/>
267
267
  </Ct>})()}
268
268
 
269
- {I==="step"&&W.length>0&&(()=>{const e=W[0],o=J.filter(T=>T.type==="step").length,i=Math.max(12,Math.min(20,ze*2.2+8));return<Ct>
270
- <Si cx={e.x}cy={e.y}r={i}fill={Ce||"#EF4444"}stroke="#FFFFFF"strokeWidth={1.5}/>
271
- <Pi x={e.x}y={e.y+i*.35}fill="#FFFFFF"fontSize={Math.round(i*.95)}fontWeight="bold"textAnchor="middle">
272
- {o+1}
269
+ {D==="step"&&H.length>0&&(()=>{const e=H[0],C=oe.filter(k=>k.type==="step").length,T=Math.max(12,Math.min(20,Ie*2.2+8));return<Ct>
270
+ <Si cx={e.x}cy={e.y}r={T}fill={ve||"#EF4444"}stroke="#FFFFFF"strokeWidth={1.5}/>
271
+ <Pi x={e.x}y={e.y+T*.35}fill="#FFFFFF"fontSize={Math.round(T*.95)}fontWeight="bold"textAnchor="middle">
272
+ {C+1}
273
273
  </Pi>
274
274
  </Ct>})()}
275
275
 
276
- {I==="redact"&&W.length>1&&(()=>{const e=W[0],o=W[W.length-1],i=Math.min(e.x,o.x),T=Math.min(e.y,o.y),k=Math.abs(o.x-e.x),S=Math.abs(o.y-e.y);return<Nt x={i}y={T}width={k}height={S}fill="#000000"stroke="rgba(255,255,255,0.4)"strokeWidth={1}strokeDasharray="3,3"rx={4}ry={4}/>})()}
276
+ {D==="redact"&&H.length>1&&(()=>{const e=H[0],C=H[H.length-1],T=Math.min(e.x,C.x),k=Math.min(e.y,C.y),P=Math.abs(C.x-e.x),z=Math.abs(C.y-e.y);return<Nt x={T}y={k}width={P}height={z}fill="#000000"stroke="rgba(255,255,255,0.4)"strokeWidth={1}strokeDasharray="3,3"rx={4}ry={4}/>})()}
277
277
 
278
- {I==="pixelate"&&W.length>1&&(()=>{const e=W[0],o=W[W.length-1],i=Math.min(e.x,o.x),T=Math.min(e.y,o.y),k=Math.abs(o.x-e.x),S=Math.abs(o.y-e.y);return<Nt x={i}y={T}width={k}height={S}fill="rgba(255,255,255,0.22)"stroke="rgba(255,255,255,0.6)"strokeWidth={1.5}strokeDasharray="4,4"rx={4}ry={4}/>})()}
278
+ {D==="pixelate"&&H.length>1&&(()=>{const e=H[0],C=H[H.length-1],T=Math.min(e.x,C.x),k=Math.min(e.y,C.y),P=Math.abs(C.x-e.x),z=Math.abs(C.y-e.y);return<Nt x={T}y={k}width={P}height={z}fill="rgba(255,255,255,0.22)"stroke="rgba(255,255,255,0.6)"strokeWidth={1.5}strokeDasharray="4,4"rx={4}ry={4}/>})()}
279
279
  </>}
280
280
  </Ct>
281
281
  </Fr>}
282
282
 
283
283
 
284
- {xe&&!Pe&&<C pointerEvents="none"style={t.watermarkOverlay}>
285
- <F style={t.watermarkText}>
286
- {io.OS.toUpperCase()} • {ke}×{Se} • QA DIAGNOSTIC
287
- </F>
288
- <F style={t.watermarkTime}>
284
+ {Ce&&!Be&&<F pointerEvents="none"style={t.watermarkOverlay}>
285
+ <R style={t.watermarkText}>
286
+ {io.OS.toUpperCase()} • {Re}×{Pe} • QA DIAGNOSTIC
287
+ </R>
288
+ <R style={t.watermarkTime}>
289
289
  {new Date().toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}
290
- </F>
291
- </C>}
290
+ </R>
291
+ </F>}
292
292
 
293
293
 
294
- {B==="text"&&<Oo style={L.absoluteFill}onPress={e=>{const{locationX:o,locationY:i}=e.nativeEvent,T=Math.max(1,Be.width),k=Math.max(1,Be.height),S=Math.max(.05,Math.min(.85,o/T)),A=Math.max(.05,Math.min(.85,i/k));Zi({x:S,y:A}),Bo()}}/>}
294
+ {O==="text"&&<Oo style={N.absoluteFill}onPress={e=>{const{locationX:C,locationY:T}=e.nativeEvent,k=Math.max(1,Ae.width),P=Math.max(1,Ae.height),z=Math.max(.05,Math.min(.85,C/k)),W=Math.max(.05,Math.min(.85,T/P));Zi({x:z,y:W}),Bo()}}/>}
295
295
 
296
296
 
297
- {!Pe&&Te.map(e=><Zr key={e.id}textItem={e}canvasWidth={Be.width}canvasHeight={Be.height}scale={ie}onUpdate={(o,i)=>{te(),Ee(T=>T.map(k=>k.id===o?{...k,...i}:k))}}onDelete={o=>{ar(o)}}onEdit={o=>Bo(o)}/>)}
297
+ {!Be&&Fe.map(e=><Cn key={e.id}textItem={e}canvasWidth={Ae.width}canvasHeight={Ae.height}scale={ae}onUpdate={(C,T)=>{re(),$e(k=>k.map(P=>P.id===C?{...P,...T}:P))}}onDelete={C=>{ar(C)}}onEdit={C=>Bo(C)}/>)}
298
298
 
299
299
 
300
- {(ue||B==="crop")&&!Pe&&<C pointerEvents="none"style={t.instagramGridOverlay}>
301
- <C style={[t.instagramGridHLine,{top:"33.33%"}]}/>
302
- <C style={[t.instagramGridHLine,{top:"66.67%"}]}/>
303
- <C style={[t.instagramGridVLine,{left:"33.33%"}]}/>
304
- <C style={[t.instagramGridVLine,{left:"66.67%"}]}/>
305
- </C>}
306
- </C>
300
+ {(ye||O==="crop")&&!Be&&<F pointerEvents="none"style={t.instagramGridOverlay}>
301
+ <F style={[t.instagramGridHLine,{top:"33.33%"}]}/>
302
+ <F style={[t.instagramGridHLine,{top:"66.67%"}]}/>
303
+ <F style={[t.instagramGridVLine,{left:"33.33%"}]}/>
304
+ <F style={[t.instagramGridVLine,{left:"66.67%"}]}/>
305
+ </F>}
306
+ </F>
307
307
  </Gt.View>}
308
308
 
309
309
 
310
310
 
311
311
 
312
- {ee&&ni&&<Oo onPressIn={()=>{R("light"),At(!0)}}onPressOut={()=>{R("light"),At(!1)}}style={({pressed:e})=>[t.holdCompareBtn,e&&t.holdCompareBtnPressed]}>
313
- <Br size={14}color={M.white}/>
314
- <F style={t.holdCompareText}>
315
- {Pe?"Original Image":"Hold to Compare"}
316
- </F>
312
+ {ie&&ni&&<Oo onPressIn={()=>{B("light"),At(!0)}}onPressOut={()=>{B("light"),At(!1)}}style={({pressed:e})=>[t.holdCompareBtn,e&&t.holdCompareBtnPressed]}>
313
+ <Br size={14}color={S.white}/>
314
+ <R style={t.holdCompareText}>
315
+ {Be?"Original Image":"Hold to Compare"}
316
+ </R>
317
317
  </Oo>}
318
318
 
319
319
 
320
- {G&&<P onPress={Io}activeOpacity={.85}style={t.modernCenterPlayBtn}>
321
- {de?<Oi size={24}color={M.white}/>:<C style={{marginLeft:3}}>
322
- <Ho size={24}color={M.white}/>
323
- </C>}
324
- </P>}
320
+ {j&&<A onPress={Io}activeOpacity={.85}style={t.modernCenterPlayBtn}>
321
+ {ue?<Oi size={24}color={S.white}/>:<F style={{marginLeft:3}}>
322
+ <Eo size={24}color={S.white}/>
323
+ </F>}
324
+ </A>}
325
325
 
326
326
 
327
- {G&&<C style={t.videoFloatingHud}>
328
- <P onPress={Io}hitSlop={{top:8,bottom:8,left:8,right:8}}>
329
- {de?<Oi size={13}color={M.white}/>:<Ho size={13}color={M.white}/>}
330
- </P>
331
- <C style={t.videoHudProgressBar}>
332
- <C style={[t.videoHudProgressFill,{left:`${re/(ne||1e4)*100}%`,width:`${Math.max(4,(he-re)/(ne||1e4)*100)}%`}]}/>
333
- </C>
334
- <F style={t.videoHudTimeText}>
335
- {li||"00:05"}
327
+ {j&&<F style={t.videoFloatingHud}>
328
+ <A onPress={Io}hitSlop={{top:8,bottom:8,left:8,right:8}}>
329
+ {ue?<Oi size={13}color={S.white}/>:<Eo size={13}color={S.white}/>}
330
+ </A>
331
+ <F style={t.videoHudProgressBar}>
332
+ <F style={[t.videoHudProgressFill,{left:`${se/(le||1e4)*100}%`,width:`${Math.max(4,(pe-se)/(le||1e4)*100)}%`}]}/>
336
333
  </F>
337
- {me&&<C style={t.videoHudBadge}>
334
+ <R style={t.videoHudTimeText}>
335
+ {li||"00:05"}
336
+ </R>
337
+ {fe&&<F style={t.videoHudBadge}>
338
338
  <So size={10}color="#F87171"/>
339
- </C>}
340
- {Ve!==1&&<C style={t.videoHudBadge}>
341
- <F style={t.videoHudBadgeText}>{Ve}x</F>
342
- </C>}
343
- </C>}
339
+ </F>}
340
+ {Ge!==1&&<F style={t.videoHudBadge}>
341
+ <R style={t.videoHudBadgeText}>{Ge}x</R>
342
+ </F>}
343
+ </F>}
344
344
 
345
345
 
346
- {ee&&<C style={t.floatingZoomBar}>
346
+ {ie&&<F style={t.floatingZoomBar}>
347
347
  <Bt onPress={Ki}style={t.zoomBtn}accessibilityLabel="Zoom In">
348
- <Ur size={15}color={M.white}/>
348
+ <Ur size={15}color={S.white}/>
349
349
  </Bt>
350
350
 
351
- <P onPress={Ko}activeOpacity={.8}style={t.zoomLevelBadge}>
352
- <F style={t.zoomLevelText}>
353
- {Math.round(ie*100)}%
354
- </F>
355
- </P>
351
+ <A onPress={Ko}activeOpacity={.8}style={t.zoomLevelBadge}>
352
+ <R style={t.zoomLevelText}>
353
+ {Math.round(ae*100)}%
354
+ </R>
355
+ </A>
356
356
 
357
357
  <Bt onPress={Ji}style={t.zoomBtn}accessibilityLabel="Zoom Out">
358
- <Xr size={15}color={M.white}/>
358
+ <Xr size={15}color={S.white}/>
359
359
  </Bt>
360
360
 
361
361
  <Bt onPress={Ko}style={t.zoomBtn}accessibilityLabel="Fit to Screen">
362
- <Or size={14}color={M.white}/>
362
+ <Or size={14}color={S.white}/>
363
363
  </Bt>
364
- </C>}
364
+ </F>}
365
365
 
366
366
 
367
- {ee&&B==="crop"&&<Qr cropBox={Qt}imageWidth={Be.width}imageHeight={Be.height}imageOffsetX={(nt.width-Be.width)/2}imageOffsetY={(nt.height-Be.height)/2}scale={ie}onUpdateCropBox={kt}onApplyCrop={ai}onCancelCrop={()=>U("none")}/>}
368
- </C>
369
- </C>
367
+ {ie&&O==="crop"&&<Tn cropBox={Qt}imageWidth={Ae.width}imageHeight={Ae.height}imageOffsetX={(lt.width-Ae.width)/2}imageOffsetY={(lt.height-Ae.height)/2}scale={ae}onUpdateCropBox={kt}onApplyCrop={ai}onCancelCrop={()=>_("none")}/>}
368
+ </F>
369
+ </F>
370
370
 
371
371
 
372
- <C style={t.bottomControlsContainer}>
372
+ <F style={t.bottomControlsContainer}>
373
373
 
374
- {(ee||G)&&<C style={t.contextToolPanel}>
374
+ {(ie||j)&&<F style={t.contextToolPanel}>
375
375
 
376
- <C style={t.panelHeaderRow}>
377
- <C style={t.panelHeaderLeft}>
378
- <C style={[t.panelGlowDot,ee&&B==="draw"&&{backgroundColor:"#818CF8"},ee&&B==="crop"&&{backgroundColor:"#38BDF8"},ee&&B==="adjust"&&{backgroundColor:"#F59E0B"},ee&&B==="text"&&{backgroundColor:"#A855F7"},G&&B==="trim"&&{backgroundColor:"#38BDF8"},G&&B==="audio"&&{backgroundColor:"#F59E0B"},G&&B==="speed"&&{backgroundColor:"#8B5CF6"},G&&B==="gif"&&{backgroundColor:"#10B981"},G&&B==="snapshot"&&{backgroundColor:"#EC4899"},G&&B==="none"&&{backgroundColor:"#818CF8"}]}/>
379
- <F style={t.panelHeaderTitle}>
380
- {ee?B==="draw"?I==="redact"?"BLACKOUT REDACTION":I==="pixelate"?"PIXELATE BLUR":I==="highlighter"?"HIGHLIGHTER":I==="arrow"?"ARROW CALLOUT":I==="rect"?"RECTANGLE BOX":I==="circle"?"CIRCLE / ELLIPSE":I==="spotlight"?"SPOTLIGHT FOCUS":I==="step"?"STEP NUMBER BADGE":"PEN BRUSH":B==="crop"?"CROP & ROTATE":B==="adjust"?`ADJUST: ${Fe.toUpperCase()}`:B==="text"?"TEXT & BUG BADGES":"CANVAS PREVIEW":B==="trim"?"VIDEO TRIMMER":B==="audio"?"AUDIO CONTROLS":B==="speed"?"SPEED MULTIPLIER":B==="gif"?"GIF EXPORT STUDIO":B==="snapshot"?"FRAME SNAPSHOT":"VIDEO STUDIO & PLAYER"}
381
- </F>
382
- </C>
383
- <C style={t.panelValueBadge}>
384
- <F style={t.panelValueText}>
385
- {ee?B==="draw"?I==="redact"?"100% Solid":I==="pixelate"?`+${Ro} px`:I==="step"?`Badge #${J.filter(e=>e.type==="step").length+1}`:`+${ze} px`:B==="crop"?`${zo.toUpperCase()} \u2022 ${X}\xB0`:B==="adjust"?Fe==="vignette"?`+${D.vignette}%`:`${D[Fe]>=0?"+":""}${D[Fe]}%`:B==="text"?`${Te.length} Notes`:`${Math.round(ie*100)}%`:B==="trim"?`${(re/1e3).toFixed(1)}s - ${(he/1e3).toFixed(1)}s (${((he-re)/1e3).toFixed(1)}s)`:B==="audio"?me?"Muted (0%)":`${Xe}% Vol`:B==="speed"?`${Ve}x Speed`:B==="gif"?`${Zt} FPS \u2022 ${Po}px`:B==="snapshot"?`${ke||1080}\xD7${Se||1920}`:li||"00:05"}
386
- </F>
387
- </C>
388
- </C>
376
+ <F style={t.panelHeaderRow}>
377
+ <F style={t.panelHeaderLeft}>
378
+ <F style={[t.panelGlowDot,ie&&O==="draw"&&{backgroundColor:"#818CF8"},ie&&O==="crop"&&{backgroundColor:"#38BDF8"},ie&&O==="adjust"&&{backgroundColor:"#F59E0B"},ie&&O==="text"&&{backgroundColor:"#A855F7"},j&&O==="trim"&&{backgroundColor:"#38BDF8"},j&&O==="audio"&&{backgroundColor:"#F59E0B"},j&&O==="speed"&&{backgroundColor:"#8B5CF6"},j&&O==="gif"&&{backgroundColor:"#10B981"},j&&O==="snapshot"&&{backgroundColor:"#EC4899"},j&&O==="none"&&{backgroundColor:"#818CF8"}]}/>
379
+ <R style={t.panelHeaderTitle}>
380
+ {ie?O==="draw"?D==="redact"?"BLACKOUT REDACTION":D==="pixelate"?"PIXELATE BLUR":D==="highlighter"?"HIGHLIGHTER":D==="arrow"?"ARROW CALLOUT":D==="rect"?"RECTANGLE BOX":D==="circle"?"CIRCLE / ELLIPSE":D==="spotlight"?"SPOTLIGHT FOCUS":D==="step"?"STEP NUMBER BADGE":"PEN BRUSH":O==="crop"?"CROP & ROTATE":O==="adjust"?`ADJUST: ${He.toUpperCase()}`:O==="text"?"TEXT & BUG BADGES":"CANVAS PREVIEW":O==="trim"?"VIDEO TRIMMER":O==="audio"?"AUDIO CONTROLS":O==="speed"?"SPEED MULTIPLIER":O==="gif"?"GIF EXPORT STUDIO":O==="snapshot"?"FRAME SNAPSHOT":"VIDEO STUDIO & PLAYER"}
381
+ </R>
382
+ </F>
383
+ <F style={t.panelValueBadge}>
384
+ <R style={t.panelValueText}>
385
+ {ie?O==="draw"?D==="redact"?"100% Solid":D==="pixelate"?`+${Ro} px`:D==="step"?`Badge #${oe.filter(e=>e.type==="step").length+1}`:`+${Ie} px`:O==="crop"?`${zo.toUpperCase()} \u2022 ${Z}\xB0`:O==="adjust"?He==="vignette"?`+${E.vignette}%`:`${E[He]>=0?"+":""}${E[He]}%`:O==="text"?`${Fe.length} Notes`:`${Math.round(ae*100)}%`:O==="trim"?`${(se/1e3).toFixed(1)}s - ${(pe/1e3).toFixed(1)}s (${((pe-se)/1e3).toFixed(1)}s)`:O==="audio"?fe?"Muted (0%)":`${Ze}% Vol`:O==="speed"?`${Ge}x Speed`:O==="gif"?`${Zt} FPS \u2022 ${Po}px`:O==="snapshot"?`${Re||1080}\xD7${Pe||1920}`:li||"00:05"}
386
+ </R>
387
+ </F>
388
+ </F>
389
389
 
390
390
 
391
- {G&&B==="trim"&&Lo.length>0&&<Ti horizontal showsHorizontalScrollIndicator={!1}contentContainerStyle={t.filmstripScroll}>
392
- {Lo.map(e=>{const o=e.timeMs>=re&&e.timeMs<=he;return<P key={`thumb_${e.index}_${e.timeMs}`}onPress={()=>{R("light"),Qe==="start"?it(Math.min(he-500,e.timeMs)):rt(Math.max(re+500,e.timeMs))}}style={[t.filmstripThumbItem,o&&t.filmstripThumbActive]}>
391
+ {j&&O==="trim"&&Lo.length>0&&<Ti horizontal showsHorizontalScrollIndicator={!1}contentContainerStyle={t.filmstripScroll}>
392
+ {Lo.map(e=>{const C=e.timeMs>=se&&e.timeMs<=pe;return<A key={`thumb_${e.index}_${e.timeMs}`}onPress={()=>{B("light"),et==="start"?at(Math.min(pe-500,e.timeMs)):st(Math.max(se+500,e.timeMs))}}style={[t.filmstripThumbItem,C&&t.filmstripThumbActive]}>
393
393
  <Co source={{uri:e.uri}}style={t.filmstripThumbImg}resizeMode="cover"/>
394
- <F style={t.filmstripThumbTime}>
394
+ <R style={t.filmstripThumbTime}>
395
395
  {(e.timeMs/1e3).toFixed(1)}s
396
- </F>
397
- </P>})}
396
+ </R>
397
+ </A>})}
398
398
  </Ti>}
399
399
 
400
400
 
401
- <C style={t.sliderRowContainer}>
402
- <F style={t.sliderMinIndicator}>
403
- {G&&B==="speed"?"0.5x":G&&B==="gif"?"6fps":"\u25CB"}
404
- </F>
405
- <C onLayout={e=>{const o=e.nativeEvent.layout.width;o>20&&(Jo.current=o)}}style={t.sliderTrackTouchable}{...er.panHandlers}>
406
- <C style={t.sliderTrackBg}>
407
- <C style={[t.sliderFillTrack,{width:`${ti}%`},G&&B==="trim"&&{left:`${re/(ne||1e4)*100}%`,width:`${Math.max(4,(he-re)/(ne||1e4)*100)}%`,backgroundColor:"#38BDF8"}]}/>
408
- <C pointerEvents="none"style={[t.sliderThumbHandle,{left:`${ti}%`}]}>
409
- <C style={t.sliderThumbInnerGlow}/>
410
- </C>
411
- </C>
412
- </C>
413
- <F style={t.sliderMaxIndicator}>
414
- {G&&B==="speed"?"2.0x":G&&B==="gif"?"24fps":"\u25CF"}
401
+ <F style={t.sliderRowContainer}>
402
+ <R style={t.sliderMinIndicator}>
403
+ {j&&O==="speed"?"0.5x":j&&O==="gif"?"6fps":"\u25CB"}
404
+ </R>
405
+ <F onLayout={e=>{const C=e.nativeEvent.layout.width;C>20&&(Jo.current=C)}}style={t.sliderTrackTouchable}{...er.panHandlers}>
406
+ <F style={t.sliderTrackBg}>
407
+ <F style={[t.sliderFillTrack,{width:`${ti}%`},j&&O==="trim"&&{left:`${se/(le||1e4)*100}%`,width:`${Math.max(4,(pe-se)/(le||1e4)*100)}%`,backgroundColor:"#38BDF8"}]}/>
408
+ <F pointerEvents="none"style={[t.sliderThumbHandle,{left:`${ti}%`}]}>
409
+ <F style={t.sliderThumbInnerGlow}/>
410
+ </F>
411
+ </F>
415
412
  </F>
416
- </C>
413
+ <R style={t.sliderMaxIndicator}>
414
+ {j&&O==="speed"?"2.0x":j&&O==="gif"?"24fps":"\u25CF"}
415
+ </R>
416
+ </F>
417
417
 
418
418
 
419
419
  <Ti horizontal showsHorizontalScrollIndicator={!1}contentContainerStyle={t.modeChipsScroll}>
420
- {G?B==="trim"?<>
420
+ {j?O==="trim"?<>
421
421
 
422
- <P onPress={()=>{R("light"),ro("start")}}style={[t.modeChip,Qe==="start"&&t.modeChipActive]}>
423
- <F style={[t.modeChipText,Qe==="start"&&t.modeChipTextActive]}>
424
- Start: {(re/1e3).toFixed(1)}s
425
- </F>
426
- </P>
422
+ <A onPress={()=>{B("light"),ro("start")}}style={[t.modeChip,et==="start"&&t.modeChipActive]}>
423
+ <R style={[t.modeChipText,et==="start"&&t.modeChipTextActive]}>
424
+ Start: {(se/1e3).toFixed(1)}s
425
+ </R>
426
+ </A>
427
427
 
428
- <P onPress={()=>{R("light"),ro("end")}}style={[t.modeChip,Qe==="end"&&t.modeChipActive]}>
429
- <F style={[t.modeChipText,Qe==="end"&&t.modeChipTextActive]}>
430
- End: {(he/1e3).toFixed(1)}s
431
- </F>
432
- </P>
428
+ <A onPress={()=>{B("light"),ro("end")}}style={[t.modeChip,et==="end"&&t.modeChipActive]}>
429
+ <R style={[t.modeChipText,et==="end"&&t.modeChipTextActive]}>
430
+ End: {(pe/1e3).toFixed(1)}s
431
+ </R>
432
+ </A>
433
433
 
434
- <C style={t.subDivider}/>
434
+ <F style={t.subDivider}/>
435
435
 
436
436
 
437
- <P onPress={()=>{R("light");const e=ne||1e4;it(0),rt(Math.min(e,3e3))}}style={t.modeChip}>
438
- <F style={t.modeChipText}>First 3s</F>
439
- </P>
440
-
441
- <P onPress={()=>{R("light");const e=ne||1e4;it(0),rt(Math.min(e,5e3))}}style={t.modeChip}>
442
- <F style={t.modeChipText}>First 5s</F>
443
- </P>
444
-
445
- <P onPress={()=>{R("light");const e=ne||1e4;it(0),rt(Math.min(e,1e4))}}style={t.modeChip}>
446
- <F style={t.modeChipText}>First 10s</F>
447
- </P>
448
-
449
- <C style={t.subDivider}/>
450
-
451
- <P onPress={ii}style={t.applyActionBtn}>
452
- <F style={t.applyActionText}>Apply Trim</F>
453
- </P>
454
-
455
- <P onPress={()=>{R("light"),it(0),rt(ne||1e4)}}style={t.cancelActionBtn}>
456
- <F style={t.cancelActionText}>Reset</F>
457
- </P>
458
- </>:B==="audio"?<>
459
- <P onPress={()=>{R("light"),_t(e=>!e)}}style={[t.modeChip,me&&t.modeChipActive]}>
460
- <So size={14}color={me?M.white:"rgba(255,255,255,0.7)"}/>
461
- <F style={[t.modeChipText,me&&t.modeChipTextActive]}>
462
- {me?"Muted":"Unmuted"}
463
- </F>
464
- </P>
465
-
466
- <C style={t.subDivider}/>
467
-
468
- {[100,75,50,25,0].map(e=><P key={e}onPress={()=>{R("light"),no(e),_t(e===0)}}style={[t.modeChip,!me&&Xe===e&&t.modeChipActive]}>
469
- <F style={[t.modeChipText,!me&&Xe===e&&t.modeChipTextActive]}>
437
+ <A onPress={()=>{B("light");const e=le||1e4;at(0),st(Math.min(e,3e3))}}style={t.modeChip}>
438
+ <R style={t.modeChipText}>First 3s</R>
439
+ </A>
440
+
441
+ <A onPress={()=>{B("light");const e=le||1e4;at(0),st(Math.min(e,5e3))}}style={t.modeChip}>
442
+ <R style={t.modeChipText}>First 5s</R>
443
+ </A>
444
+
445
+ <A onPress={()=>{B("light");const e=le||1e4;at(0),st(Math.min(e,1e4))}}style={t.modeChip}>
446
+ <R style={t.modeChipText}>First 10s</R>
447
+ </A>
448
+
449
+ <F style={t.subDivider}/>
450
+
451
+ <A onPress={ii}style={t.applyActionBtn}>
452
+ <R style={t.applyActionText}>Apply Trim</R>
453
+ </A>
454
+
455
+ <A onPress={()=>{B("light"),at(0),st(le||1e4)}}style={t.cancelActionBtn}>
456
+ <R style={t.cancelActionText}>Reset</R>
457
+ </A>
458
+ </>:O==="audio"?<>
459
+ <A onPress={()=>{B("light"),_t(e=>!e)}}style={[t.modeChip,fe&&t.modeChipActive]}>
460
+ <So size={14}color={fe?S.white:"rgba(255,255,255,0.7)"}/>
461
+ <R style={[t.modeChipText,fe&&t.modeChipTextActive]}>
462
+ {fe?"Muted":"Unmuted"}
463
+ </R>
464
+ </A>
465
+
466
+ <F style={t.subDivider}/>
467
+
468
+ {[100,75,50,25,0].map(e=><A key={e}onPress={()=>{B("light"),no(e),_t(e===0)}}style={[t.modeChip,!fe&&Ze===e&&t.modeChipActive]}>
469
+ <R style={[t.modeChipText,!fe&&Ze===e&&t.modeChipTextActive]}>
470
470
  {e}%
471
- </F>
472
- </P>)}
473
-
474
- <C style={t.subDivider}/>
475
-
476
- <P onPress={hr}style={t.applyActionBtn}>
477
- <F style={t.applyActionText}>Strip Audio</F>
478
- </P>
479
- </>:B==="speed"?<>
480
- {[.5,.75,1,1.25,1.5,2].map(e=><P key={e}onPress={()=>{R("light"),ao(e)}}style={[t.modeChip,Ve===e&&t.modeChipActive]}>
481
- <Eo size={13}color={Ve===e?M.white:"rgba(255,255,255,0.7)"}/>
482
- <F style={[t.modeChipText,Ve===e&&t.modeChipTextActive]}>
471
+ </R>
472
+ </A>)}
473
+
474
+ <F style={t.subDivider}/>
475
+
476
+ <A onPress={hr}style={t.applyActionBtn}>
477
+ <R style={t.applyActionText}>Strip Audio</R>
478
+ </A>
479
+ </>:O==="speed"?<>
480
+ {[.5,.75,1,1.25,1.5,2].map(e=><A key={e}onPress={()=>{B("light"),ao(e)}}style={[t.modeChip,Ge===e&&t.modeChipActive]}>
481
+ <Ho size={13}color={Ge===e?S.white:"rgba(255,255,255,0.7)"}/>
482
+ <R style={[t.modeChipText,Ge===e&&t.modeChipTextActive]}>
483
483
  {e===1?"1.0x (Normal)":`${e}x`}
484
- </F>
485
- </P>)}
486
- </>:B==="gif"?<>
484
+ </R>
485
+ </A>)}
486
+ </>:O==="gif"?<>
487
487
 
488
- {[{fps:8,label:"8 FPS (Small)"},{fps:12,label:"12 FPS (Smooth)"},{fps:20,label:"20 FPS (HD)"}].map(e=><P key={e.fps}onPress={()=>{R("light"),Go(e.fps)}}style={[t.modeChip,Zt===e.fps&&t.modeChipActive]}>
489
- <F style={[t.modeChipText,Zt===e.fps&&t.modeChipTextActive]}>
488
+ {[{fps:8,label:"8 FPS (Small)"},{fps:12,label:"12 FPS (Smooth)"},{fps:20,label:"20 FPS (HD)"}].map(e=><A key={e.fps}onPress={()=>{B("light"),Go(e.fps)}}style={[t.modeChip,Zt===e.fps&&t.modeChipActive]}>
489
+ <R style={[t.modeChipText,Zt===e.fps&&t.modeChipTextActive]}>
490
490
  {e.label}
491
- </F>
492
- </P>)}
491
+ </R>
492
+ </A>)}
493
493
 
494
- <C style={t.subDivider}/>
494
+ <F style={t.subDivider}/>
495
495
 
496
496
 
497
- {[{w:320,label:"320px"},{w:480,label:"480px"},{w:640,label:"640px"}].map(e=><P key={e.w}onPress={()=>{R("light"),Ui(e.w)}}style={[t.modeChip,Po===e.w&&t.modeChipActive]}>
498
- <F style={[t.modeChipText,Po===e.w&&t.modeChipTextActive]}>
497
+ {[{w:320,label:"320px"},{w:480,label:"480px"},{w:640,label:"640px"}].map(e=><A key={e.w}onPress={()=>{B("light"),Ui(e.w)}}style={[t.modeChip,Po===e.w&&t.modeChipActive]}>
498
+ <R style={[t.modeChipText,Po===e.w&&t.modeChipTextActive]}>
499
499
  {e.label}
500
- </F>
501
- </P>)}
502
-
503
- <C style={t.subDivider}/>
504
-
505
- <P onPress={si}disabled={De}style={[t.applyActionBtn,De&&{opacity:.6}]}>
506
- <F style={t.applyActionText}>
507
- {De?"Exporting...":"Export GIF"}
508
- </F>
509
- </P>
510
- </>:B==="snapshot"?<>
511
- <P onPress={ri}disabled={pe}style={t.applyActionBtn}>
512
- <Fo size={14}color={M.white}/>
513
- <F style={t.applyActionText}>
500
+ </R>
501
+ </A>)}
502
+
503
+ <F style={t.subDivider}/>
504
+
505
+ <A onPress={si}disabled={Ve}style={[t.applyActionBtn,Ve&&{opacity:.6}]}>
506
+ <R style={t.applyActionText}>
507
+ {Ve?"Exporting...":"Export GIF"}
508
+ </R>
509
+ </A>
510
+ </>:O==="snapshot"?<>
511
+ <A onPress={ri}disabled={me}style={t.applyActionBtn}>
512
+ <Fo size={14}color={S.white}/>
513
+ <R style={t.applyActionText}>
514
514
  Snapshot Current Frame (PNG)
515
- </F>
516
- </P>
515
+ </R>
516
+ </A>
517
517
  </>:<>
518
- <P onPress={Io}style={t.modeChipActive}>
519
- <Ho size={14}color={M.white}/>
520
- <F style={t.modeChipTextActive}>Play Video</F>
521
- </P>
522
- <P onPress={()=>{R("light"),U("trim")}}style={t.modeChip}>
518
+ <A onPress={Io}style={t.modeChipActive}>
519
+ <Eo size={14}color={S.white}/>
520
+ <R style={t.modeChipTextActive}>Play Video</R>
521
+ </A>
522
+ <A onPress={()=>{B("light"),_("trim")}}style={t.modeChip}>
523
523
  <Wi size={14}color="rgba(255,255,255,0.7)"/>
524
- <F style={t.modeChipText}>Trim Clip</F>
525
- </P>
526
- <P onPress={()=>{R("light"),U("audio")}}style={t.modeChip}>
524
+ <R style={t.modeChipText}>Trim Clip</R>
525
+ </A>
526
+ <A onPress={()=>{B("light"),_("audio")}}style={t.modeChip}>
527
527
  <So size={14}color="rgba(255,255,255,0.7)"/>
528
- <F style={t.modeChipText}>Audio</F>
529
- </P>
530
- <P onPress={()=>{R("light"),U("speed")}}style={t.modeChip}>
531
- <Eo size={14}color="rgba(255,255,255,0.7)"/>
532
- <F style={t.modeChipText}>Speed</F>
533
- </P>
534
- <P onPress={()=>{R("light"),U("gif")}}style={t.modeChip}>
528
+ <R style={t.modeChipText}>Audio</R>
529
+ </A>
530
+ <A onPress={()=>{B("light"),_("speed")}}style={t.modeChip}>
531
+ <Ho size={14}color="rgba(255,255,255,0.7)"/>
532
+ <R style={t.modeChipText}>Speed</R>
533
+ </A>
534
+ <A onPress={()=>{B("light"),_("gif")}}style={t.modeChip}>
535
535
  <Do size={14}color="rgba(255,255,255,0.7)"/>
536
- <F style={t.modeChipText}>Export GIF</F>
537
- </P>
538
- <P onPress={()=>{R("light"),U("snapshot")}}style={t.modeChip}>
536
+ <R style={t.modeChipText}>Export GIF</R>
537
+ </A>
538
+ <A onPress={()=>{B("light"),_("snapshot")}}style={t.modeChip}>
539
539
  <Fo size={14}color="rgba(255,255,255,0.7)"/>
540
- <F style={t.modeChipText}>Snapshot</F>
541
- </P>
542
- </>:B==="draw"?<>
540
+ <R style={t.modeChipText}>Snapshot</R>
541
+ </A>
542
+ </>:O==="draw"?<>
543
543
 
544
- <P onPress={()=>{R("light"),Ue("brush")}}style={[t.modeChip,I==="brush"&&t.modeChipActive]}>
545
- <Vo size={14}color={I==="brush"?M.white:"rgba(255,255,255,0.6)"}/>
546
- <F style={[t.modeChipText,I==="brush"&&t.modeChipTextActive]}>
544
+ <A onPress={()=>{B("light"),_e("brush")}}style={[t.modeChip,D==="brush"&&t.modeChipActive]}>
545
+ <Vo size={14}color={D==="brush"?S.white:"rgba(255,255,255,0.6)"}/>
546
+ <R style={[t.modeChipText,D==="brush"&&t.modeChipTextActive]}>
547
547
  Brush
548
- </F>
549
- </P>
548
+ </R>
549
+ </A>
550
550
 
551
551
 
552
- <P onPress={()=>{R("light"),Ue("highlighter")}}style={[t.modeChip,I==="highlighter"&&t.modeChipActive]}>
553
- <Ar size={14}color={I==="highlighter"?M.white:"rgba(255,255,255,0.6)"}/>
554
- <F style={[t.modeChipText,I==="highlighter"&&t.modeChipTextActive]}>
552
+ <A onPress={()=>{B("light"),_e("highlighter")}}style={[t.modeChip,D==="highlighter"&&t.modeChipActive]}>
553
+ <Ar size={14}color={D==="highlighter"?S.white:"rgba(255,255,255,0.6)"}/>
554
+ <R style={[t.modeChipText,D==="highlighter"&&t.modeChipTextActive]}>
555
555
  Highlighter
556
- </F>
557
- </P>
556
+ </R>
557
+ </A>
558
558
 
559
559
 
560
- <P onPress={()=>{R("light"),Ue("arrow")}}style={[t.modeChip,I==="arrow"&&t.modeChipActive]}>
561
- <Rr size={14}color={I==="arrow"?M.white:"rgba(255,255,255,0.6)"}/>
562
- <F style={[t.modeChipText,I==="arrow"&&t.modeChipTextActive]}>
560
+ <A onPress={()=>{B("light"),_e("arrow")}}style={[t.modeChip,D==="arrow"&&t.modeChipActive]}>
561
+ <Rr size={14}color={D==="arrow"?S.white:"rgba(255,255,255,0.6)"}/>
562
+ <R style={[t.modeChipText,D==="arrow"&&t.modeChipTextActive]}>
563
563
  Arrow
564
- </F>
565
- </P>
564
+ </R>
565
+ </A>
566
566
 
567
567
 
568
- <P onPress={()=>{R("light"),Ue("rect")}}style={[t.modeChip,I==="rect"&&t.modeChipActive]}>
569
- <F style={[t.modeChipIconText,I==="rect"&&{color:M.white}]}>
568
+ <A onPress={()=>{B("light"),_e("rect")}}style={[t.modeChip,D==="rect"&&t.modeChipActive]}>
569
+ <R style={[t.modeChipIconText,D==="rect"&&{color:S.white}]}>
570
570
  □
571
- </F>
572
- <F style={[t.modeChipText,I==="rect"&&t.modeChipTextActive]}>
571
+ </R>
572
+ <R style={[t.modeChipText,D==="rect"&&t.modeChipTextActive]}>
573
573
  Rectangle
574
- </F>
575
- </P>
574
+ </R>
575
+ </A>
576
576
 
577
577
 
578
- <P onPress={()=>{R("light"),Ue("circle")}}style={[t.modeChip,I==="circle"&&t.modeChipActive]}>
579
- <F style={[t.modeChipIconText,I==="circle"&&{color:M.white}]}>
578
+ <A onPress={()=>{B("light"),_e("circle")}}style={[t.modeChip,D==="circle"&&t.modeChipActive]}>
579
+ <R style={[t.modeChipIconText,D==="circle"&&{color:S.white}]}>
580
580
  ○
581
- </F>
582
- <F style={[t.modeChipText,I==="circle"&&t.modeChipTextActive]}>
581
+ </R>
582
+ <R style={[t.modeChipText,D==="circle"&&t.modeChipTextActive]}>
583
583
  Circle
584
- </F>
585
- </P>
584
+ </R>
585
+ </A>
586
586
 
587
587
 
588
- <P onPress={()=>{R("light"),Ue("spotlight")}}style={[t.modeChip,I==="spotlight"&&t.modeChipActive]}>
589
- <F style={[t.modeChipIconText,I==="spotlight"&&{color:M.white}]}>
588
+ <A onPress={()=>{B("light"),_e("spotlight")}}style={[t.modeChip,D==="spotlight"&&t.modeChipActive]}>
589
+ <R style={[t.modeChipIconText,D==="spotlight"&&{color:S.white}]}>
590
590
  🔦
591
- </F>
592
- <F style={[t.modeChipText,I==="spotlight"&&t.modeChipTextActive]}>
591
+ </R>
592
+ <R style={[t.modeChipText,D==="spotlight"&&t.modeChipTextActive]}>
593
593
  Spotlight
594
- </F>
595
- </P>
594
+ </R>
595
+ </A>
596
596
 
597
597
 
598
- <P onPress={()=>{R("light"),Ue("step"),H(z("mediaGallery.tapToPlaceStep","Tap or drag on image to place numbered steps \u2460 \u2461 \u2462"))}}style={[t.modeChip,I==="step"&&t.modeChipActive]}>
599
- <F style={[t.modeChipIconText,I==="step"&&{color:M.white}]}>
598
+ <A onPress={()=>{B("light"),_e("step"),L(I("mediaGallery.tapToPlaceStep","Tap or drag on image to place numbered steps \u2460 \u2461 \u2462"))}}style={[t.modeChip,D==="step"&&t.modeChipActive]}>
599
+ <R style={[t.modeChipIconText,D==="step"&&{color:S.white}]}>
600
600
  ①
601
- </F>
602
- <F style={[t.modeChipText,I==="step"&&t.modeChipTextActive]}>
603
- Step #{J.filter(e=>e.type==="step").length+1}
604
- </F>
605
- </P>
601
+ </R>
602
+ <R style={[t.modeChipText,D==="step"&&t.modeChipTextActive]}>
603
+ Step #{oe.filter(e=>e.type==="step").length+1}
604
+ </R>
605
+ </A>
606
606
 
607
607
 
608
- <P onPress={()=>{R("light"),Ue("redact")}}style={[t.modeChip,I==="redact"&&t.modeChipActive]}>
609
- <Vr size={14}color={I==="redact"?M.white:"rgba(255,255,255,0.6)"}/>
610
- <F style={[t.modeChipText,I==="redact"&&t.modeChipTextActive]}>
608
+ <A onPress={()=>{B("light"),_e("redact")}}style={[t.modeChip,D==="redact"&&t.modeChipActive]}>
609
+ <Vr size={14}color={D==="redact"?S.white:"rgba(255,255,255,0.6)"}/>
610
+ <R style={[t.modeChipText,D==="redact"&&t.modeChipTextActive]}>
611
611
  Redact
612
- </F>
613
- </P>
612
+ </R>
613
+ </A>
614
614
 
615
615
 
616
- <P onPress={()=>{R("light"),Ue("pixelate")}}style={[t.modeChip,I==="pixelate"&&t.modeChipActive]}>
617
- <Wr size={14}color={I==="pixelate"?M.white:"rgba(255,255,255,0.6)"}/>
618
- <F style={[t.modeChipText,I==="pixelate"&&t.modeChipTextActive]}>
616
+ <A onPress={()=>{B("light"),_e("pixelate")}}style={[t.modeChip,D==="pixelate"&&t.modeChipActive]}>
617
+ <Wr size={14}color={D==="pixelate"?S.white:"rgba(255,255,255,0.6)"}/>
618
+ <R style={[t.modeChipText,D==="pixelate"&&t.modeChipTextActive]}>
619
619
  Pixelate
620
- </F>
621
- </P>
620
+ </R>
621
+ </A>
622
622
 
623
- <C style={t.subDivider}/>
623
+ <F style={t.subDivider}/>
624
624
 
625
- {Li.map(e=><P key={e}onPress={()=>{R("light"),No(e)}}style={[t.colorDot,{backgroundColor:e},Ce===e&&t.colorDotActive]}/>)}
625
+ {Li.map(e=><A key={e}onPress={()=>{B("light"),No(e)}}style={[t.colorDot,{backgroundColor:e},ve===e&&t.colorDotActive]}/>)}
626
626
 
627
- <C style={t.subDivider}/>
627
+ <F style={t.subDivider}/>
628
628
 
629
- <P onPress={rr}disabled={J.length===0}style={[t.actionPillBtn,J.length===0&&{opacity:.4}]}>
630
- <Ei size={13}color={M.white}/>
631
- <F style={t.actionPillText}>Undo</F>
632
- </P>
629
+ <A onPress={rr}disabled={oe.length===0}style={[t.actionPillBtn,oe.length===0&&{opacity:.4}]}>
630
+ <Hi size={13}color={S.white}/>
631
+ <R style={t.actionPillText}>Undo</R>
632
+ </A>
633
633
 
634
- {J.length>0&&<P onPress={nr}style={[t.actionPillBtn,{backgroundColor:"rgba(239, 68, 68, 0.2)"}]}>
635
- <F style={[t.actionPillText,{color:M.rose400}]}>
636
- Clear ({J.length})
637
- </F>
638
- </P>}
639
- </>:B==="adjust"?<>
634
+ {oe.length>0&&<A onPress={nr}style={[t.actionPillBtn,{backgroundColor:"rgba(239, 68, 68, 0.2)"}]}>
635
+ <R style={[t.actionPillText,{color:S.rose400}]}>
636
+ Clear ({oe.length})
637
+ </R>
638
+ </A>}
639
+ </>:O==="adjust"?<>
640
640
 
641
- {[{key:"none",label:"Original",icon:"\u2726"},{key:"vibrant",label:"Vibrant",icon:"\u{1F308}"},{key:"mono",label:"Mono",icon:"\u25D0"},{key:"sepia",label:"Sepia",icon:"\u2615"},{key:"vintage",label:"Vintage",icon:"\u{1F39E}"},{key:"noir",label:"Noir",icon:"\u{1F311}"},{key:"cool",label:"Cool",icon:"\u2744"},{key:"warm",label:"Warm",icon:"\u2600"},{key:"fade",label:"Fade",icon:"\u{1F32B}"}].map(e=><P key={e.key}onPress={()=>{R("light"),te(),Ut(e.key)}}style={[t.modeChip,Z===e.key&&t.modeChipActive]}>
642
- <F style={[t.modeChipIconText,Z===e.key&&{color:M.white}]}>
641
+ {[{key:"none",label:"Original",icon:"\u2726"},{key:"vibrant",label:"Vibrant",icon:"\u{1F308}"},{key:"mono",label:"Mono",icon:"\u25D0"},{key:"sepia",label:"Sepia",icon:"\u2615"},{key:"vintage",label:"Vintage",icon:"\u{1F39E}"},{key:"noir",label:"Noir",icon:"\u{1F311}"},{key:"cool",label:"Cool",icon:"\u2744"},{key:"warm",label:"Warm",icon:"\u2600"},{key:"fade",label:"Fade",icon:"\u{1F32B}"}].map(e=><A key={e.key}onPress={()=>{B("light"),re(),Ut(e.key)}}style={[t.modeChip,K===e.key&&t.modeChipActive]}>
642
+ <R style={[t.modeChipIconText,K===e.key&&{color:S.white}]}>
643
643
  {e.icon}
644
- </F>
645
- <F style={[t.modeChipText,Z===e.key&&t.modeChipTextActive]}>
644
+ </R>
645
+ <R style={[t.modeChipText,K===e.key&&t.modeChipTextActive]}>
646
646
  {e.label}
647
- </F>
648
- </P>)}
647
+ </R>
648
+ </A>)}
649
649
 
650
- <C style={t.subDivider}/>
650
+ <F style={t.subDivider}/>
651
651
 
652
652
 
653
- <P onPress={()=>{R("light"),te(),Ot(e=>!e)}}style={[t.modeChip,xe&&t.modeChipActive]}>
654
- <F style={[t.modeChipIconText,xe&&{color:M.white}]}>
653
+ <A onPress={()=>{B("light"),re(),Ot(e=>!e)}}style={[t.modeChip,Ce&&t.modeChipActive]}>
654
+ <R style={[t.modeChipIconText,Ce&&{color:S.white}]}>
655
655
  🛡
656
- </F>
657
- <F style={[t.modeChipText,xe&&t.modeChipTextActive]}>
658
- QA Bar {xe?"ON":"OFF"}
659
- </F>
660
- </P>
656
+ </R>
657
+ <R style={[t.modeChipText,Ce&&t.modeChipTextActive]}>
658
+ QA Bar {Ce?"ON":"OFF"}
659
+ </R>
660
+ </A>
661
661
 
662
662
 
663
- <P onPress={()=>{R("light"),Dt(e=>!e)}}style={[t.modeChip,ue&&t.modeChipActive]}>
664
- <Wo size={13}color={ue?M.white:"rgba(255,255,255,0.8)"}/>
665
- <F style={[t.modeChipText,ue&&t.modeChipTextActive]}>
663
+ <A onPress={()=>{B("light"),Dt(e=>!e)}}style={[t.modeChip,ye&&t.modeChipActive]}>
664
+ <Wo size={13}color={ye?S.white:"rgba(255,255,255,0.8)"}/>
665
+ <R style={[t.modeChipText,ye&&t.modeChipTextActive]}>
666
666
  Grid 3×3
667
- </F>
668
- </P>
667
+ </R>
668
+ </A>
669
669
 
670
- <C style={t.subDivider}/>
670
+ <F style={t.subDivider}/>
671
671
 
672
672
 
673
- {[{key:"brightness",label:"Brightness",icon:"\u2600"},{key:"contrast",label:"Contrast",icon:"\u25D0"},{key:"saturation",label:"Saturation",icon:"\u{1F3A8}"},{key:"warmth",label:"Warmth",icon:"\u{1F525}"},{key:"exposure",label:"Exposure",icon:"\u26A1"},{key:"vignette",label:"Vignette",icon:"\u25CE"}].map(e=><P key={e.key}onPress={()=>{R("light"),Ni(e.key)}}style={[t.modeChip,Fe===e.key&&t.modeChipActive]}>
674
- <F style={[t.modeChipIconText,Fe===e.key&&{color:M.white}]}>
675
- {e.icon}
676
- </F>
677
- <F style={[t.modeChipText,Fe===e.key&&t.modeChipTextActive]}>
678
- {e.label}
679
- </F>
680
- </P>)}
681
- <C style={t.subDivider}/>
682
- <P onPress={()=>{R("medium"),te(),Ut("none"),Ot(!1),Ft({brightness:0,contrast:0,saturation:0,warmth:0,exposure:0,vignette:0}),H(z("mediaGallery.resetAdjustments","Adjustments Reset"))}}style={t.modeChip}>
673
+ {[{key:"brightness",label:I("media.brightness","Brightness"),IconComponent:Yr},{key:"contrast",label:I("media.contrast","Contrast"),IconComponent:_r},{key:"saturation",label:I("media.saturation","Saturation"),IconComponent:Zr},{key:"warmth",label:I("media.warmth","Warmth"),IconComponent:qr},{key:"exposure",label:I("media.exposure","Exposure"),IconComponent:Qr},{key:"vignette",label:I("media.vignette","Vignette"),IconComponent:Kr}].map(e=>{const C=e.IconComponent,T=He===e.key;return<A key={e.key}onPress={()=>{B("light"),Ni(e.key)}}style={[t.modeChip,T&&t.modeChipActive]}>
674
+ <C size={14}color={T?S.white:S.grayTextWeak}/>
675
+ <R style={[t.modeChipText,T&&t.modeChipTextActive]}>
676
+ {e.label}
677
+ </R>
678
+ </A>})}
679
+ <F style={t.subDivider}/>
680
+ <A onPress={()=>{B("medium"),re(),Ut("none"),Ot(!1),Ft({brightness:0,contrast:0,saturation:0,warmth:0,exposure:0,vignette:0}),L(I("mediaGallery.resetAdjustments","Adjustments Reset"))}}style={t.modeChip}>
683
681
  <Di size={12}color="rgba(255,255,255,0.7)"/>
684
- <F style={t.modeChipText}>Reset</F>
685
- </P>
686
- </>:B==="crop"?<>
687
- {["free","1:1","4:3","16:9","9:16","3:2"].map(e=><P key={e}onPress={()=>{R("light"),qt(e);const o=Ht(e,ke,Se);kt(o)}}style={[t.modeChip,zo===e&&t.modeChipActive]}>
688
- <F style={[t.modeChipText,zo===e&&t.modeChipTextActive]}>
682
+ <R style={t.modeChipText}>Reset</R>
683
+ </A>
684
+ </>:O==="crop"?<>
685
+ {["free","1:1","4:3","16:9","9:16","3:2"].map(e=><A key={e}onPress={()=>{B("light"),qt(e);const C=Et(e,Re,Pe);kt(C)}}style={[t.modeChip,zo===e&&t.modeChipActive]}>
686
+ <R style={[t.modeChipText,zo===e&&t.modeChipTextActive]}>
689
687
  {e==="free"?"Free":e}
690
- </F>
691
- </P>)}
692
- <C style={t.subDivider}/>
688
+ </R>
689
+ </A>)}
690
+ <F style={t.subDivider}/>
693
691
 
694
- <P onPress={()=>{R("light"),te(),ve(e=>(e+90)%360)}}style={t.modeChip}>
695
- <Er size={13}color="rgba(255,255,255,0.8)"/>
696
- <F style={t.modeChipText}>Rotate 90°</F>
697
- </P>
692
+ <A onPress={()=>{B("light"),re(),Se(e=>(e+90)%360)}}style={t.modeChip}>
693
+ <Hr size={13}color="rgba(255,255,255,0.8)"/>
694
+ <R style={t.modeChipText}>Rotate 90°</R>
695
+ </A>
698
696
 
699
- <P onPress={()=>{R("light"),te(),Xt(e=>!e)}}style={[t.modeChip,fe&&t.modeChipActive]}>
700
- <F style={[t.modeChipIconText,fe&&{color:M.white}]}>
697
+ <A onPress={()=>{B("light"),re(),Xt(e=>!e)}}style={[t.modeChip,Te&&t.modeChipActive]}>
698
+ <R style={[t.modeChipIconText,Te&&{color:S.white}]}>
701
699
  ⇄
702
- </F>
703
- <F style={[t.modeChipText,fe&&t.modeChipTextActive]}>
700
+ </R>
701
+ <R style={[t.modeChipText,Te&&t.modeChipTextActive]}>
704
702
  Flip H
705
- </F>
706
- </P>
703
+ </R>
704
+ </A>
707
705
 
708
- <P onPress={()=>{R("light"),te(),Yt(e=>!e)}}style={[t.modeChip,we&&t.modeChipActive]}>
709
- <F style={[t.modeChipIconText,we&&{color:M.white}]}>
706
+ <A onPress={()=>{B("light"),re(),Yt(e=>!e)}}style={[t.modeChip,Me&&t.modeChipActive]}>
707
+ <R style={[t.modeChipIconText,Me&&{color:S.white}]}>
710
708
  ⇅
711
- </F>
712
- <F style={[t.modeChipText,we&&t.modeChipTextActive]}>
709
+ </R>
710
+ <R style={[t.modeChipText,Me&&t.modeChipTextActive]}>
713
711
  Flip V
714
- </F>
715
- </P>
712
+ </R>
713
+ </A>
716
714
 
717
- <P onPress={()=>{R("light"),Dt(e=>!e)}}style={[t.modeChip,ue&&t.modeChipActive]}>
718
- <Wo size={13}color={ue?M.white:"rgba(255,255,255,0.8)"}/>
719
- <F style={[t.modeChipText,ue&&t.modeChipTextActive]}>
715
+ <A onPress={()=>{B("light"),Dt(e=>!e)}}style={[t.modeChip,ye&&t.modeChipActive]}>
716
+ <Wo size={13}color={ye?S.white:"rgba(255,255,255,0.8)"}/>
717
+ <R style={[t.modeChipText,ye&&t.modeChipTextActive]}>
720
718
  Grid 3×3
721
- </F>
722
- </P>
723
- <C style={t.subDivider}/>
724
- <P onPress={ai}style={t.applyActionBtn}>
725
- <F style={t.applyActionText}>Apply</F>
726
- </P>
727
- <P onPress={()=>U("none")}style={t.cancelActionBtn}>
728
- <F style={t.cancelActionText}>Cancel</F>
729
- </P>
730
- </>:B==="text"?<>
731
- <P onPress={()=>Bo()}style={t.modeChipActive}>
732
- <F style={t.modeChipTextActive}>+ Custom Note</F>
733
- </P>
734
-
735
- <C style={t.subDivider}/>
719
+ </R>
720
+ </A>
721
+ <F style={t.subDivider}/>
722
+ <A onPress={ai}style={t.applyActionBtn}>
723
+ <R style={t.applyActionText}>Apply</R>
724
+ </A>
725
+ <A onPress={()=>_("none")}style={t.cancelActionBtn}>
726
+ <R style={t.cancelActionText}>Cancel</R>
727
+ </A>
728
+ </>:O==="text"?<>
729
+ <A onPress={()=>Bo()}style={t.modeChipActive}>
730
+ <R style={t.modeChipTextActive}>+ Custom Note</R>
731
+ </A>
732
+
733
+ <F style={t.subDivider}/>
736
734
 
737
735
 
738
- {[{label:"\u{1F41E} BUG",color:"#EF4444"},{label:"\u26A0\uFE0F OVERFLOW",color:"#F59E0B"},{label:"\u26A1 SLOW >3s",color:"#8B5CF6"},{label:"\u{1F6AB} API 500",color:"#DC2626"},{label:"\u{1F4A5} CRASH",color:"#991B1B"}].map(e=><P key={e.label}onPress={()=>{R("light"),te(),Ee(o=>[...o,{id:`text_${Date.now()}_${Math.random()}`,text:e.label,x:ho?.x??.35,y:ho?.y??.35,color:"#FFFFFF",bgColor:e.color,fontSize:13}]),H(z("mediaGallery.tagPlaced",`Placed tag: ${e.label}`))}}style={[t.modeChip,{borderColor:e.color,backgroundColor:`${e.color}26`}]}>
739
- <F style={[t.modeChipText,{color:e.color,fontWeight:"700"}]}>
736
+ {[{label:"\u{1F41E} BUG",color:"#EF4444"},{label:"\u26A0\uFE0F OVERFLOW",color:"#F59E0B"},{label:"\u26A1 SLOW >3s",color:"#8B5CF6"},{label:"\u{1F6AB} API 500",color:"#DC2626"},{label:"\u{1F4A5} CRASH",color:"#991B1B"}].map(e=><A key={e.label}onPress={()=>{B("light"),re(),$e(C=>[...C,{id:`text_${Date.now()}_${Math.random()}`,text:e.label,x:ho?.x??.35,y:ho?.y??.35,color:"#FFFFFF",bgColor:e.color,fontSize:13}]),L(I("mediaGallery.tagPlaced",`Placed tag: ${e.label}`))}}style={[t.modeChip,{borderColor:e.color,backgroundColor:`${e.color}26`}]}>
737
+ <R style={[t.modeChipText,{color:e.color,fontWeight:"700"}]}>
740
738
  {e.label}
741
- </F>
742
- </P>)}
743
-
744
- <C style={t.subDivider}/>
745
-
746
- {Li.map(e=><P key={e}onPress={()=>{R("light"),No(e)}}style={[t.colorDot,{backgroundColor:e},Ce===e&&t.colorDotActive]}/>)}
747
- {Te.length>0&&<>
748
- <C style={t.subDivider}/>
749
- <P onPress={()=>{R("medium"),te(),Ee([])}}style={[t.modeChip,{backgroundColor:"rgba(239, 68, 68, 0.2)"}]}>
750
- <F style={[t.modeChipText,{color:M.rose500}]}>
751
- Clear All ({Te.length})
752
- </F>
753
- </P>
739
+ </R>
740
+ </A>)}
741
+
742
+ <F style={t.subDivider}/>
743
+
744
+ {Li.map(e=><A key={e}onPress={()=>{B("light"),No(e)}}style={[t.colorDot,{backgroundColor:e},ve===e&&t.colorDotActive]}/>)}
745
+ {Fe.length>0&&<>
746
+ <F style={t.subDivider}/>
747
+ <A onPress={()=>{B("medium"),re(),$e([])}}style={[t.modeChip,{backgroundColor:"rgba(239, 68, 68, 0.2)"}]}>
748
+ <R style={[t.modeChipText,{color:S.rose500}]}>
749
+ Clear All ({Fe.length})
750
+ </R>
751
+ </A>
754
752
  </>}
755
753
  </>:<>
756
- <P onPress={()=>{R("light"),U("draw"),Ue("brush")}}style={t.modeChip}>
754
+ <A onPress={()=>{B("light"),_("draw"),_e("brush")}}style={t.modeChip}>
757
755
  <Vo size={14}color="rgba(255,255,255,0.7)"/>
758
- <F style={t.modeChipText}>Markup</F>
759
- </P>
760
- <P onPress={()=>{R("light");const e=Ht("free",ke,Se);kt(e),qt("free"),U("crop")}}style={t.modeChip}>
756
+ <R style={t.modeChipText}>Markup</R>
757
+ </A>
758
+ <A onPress={()=>{B("light");const e=Et("free",Re,Pe);kt(e),qt("free"),_("crop")}}style={t.modeChip}>
761
759
  <Ii size={14}color="rgba(255,255,255,0.7)"/>
762
- <F style={t.modeChipText}>Crop</F>
763
- </P>
764
- <P onPress={()=>{R("light"),U("adjust")}}style={t.modeChip}>
760
+ <R style={t.modeChipText}>Crop</R>
761
+ </A>
762
+ <A onPress={()=>{B("light"),_("adjust")}}style={t.modeChip}>
765
763
  <Vi size={14}color="rgba(255,255,255,0.7)"/>
766
- <F style={t.modeChipText}>Adjust</F>
767
- </P>
768
- <P onPress={()=>{R("light"),U("text"),H(z("mediaGallery.tapToAddText","Tap anywhere on the image to add text"))}}style={t.modeChip}>
769
- <Hi size={14}color="rgba(255,255,255,0.7)"/>
770
- <F style={t.modeChipText}>Add Text</F>
771
- </P>
764
+ <R style={t.modeChipText}>Adjust</R>
765
+ </A>
766
+ <A onPress={()=>{B("light"),_("text"),L(I("mediaGallery.tapToAddText","Tap anywhere on the image to add text"))}}style={t.modeChip}>
767
+ <Ei size={14}color="rgba(255,255,255,0.7)"/>
768
+ <R style={t.modeChipText}>Add Text</R>
769
+ </A>
772
770
  </>}
773
771
  </Ti>
774
- </C>}
772
+ </F>}
775
773
 
776
774
 
777
- <C style={t.studioToolbar}>
778
- {(ee?cr:ur).map(e=>{const o=B===e.key;return<Bt key={e.key}onPress={()=>{if(R("light"),e.key==="crop"){const i=Ht("free",ke,Se);kt(i),qt("free"),U("crop")}else e.key==="text"?(U("text"),H(z("mediaGallery.tapToAddText","Tap anywhere on the image to add text"))):U(e.key)}}style={[t.studioToolItem,o&&t.studioToolItemActive]}>
779
- {e.icon(o)}
780
- <F style={[t.studioToolLabel,o&&t.studioToolLabelActive]}>
775
+ <F style={t.studioToolbar}>
776
+ {(ie?cr:ur).map(e=>{const C=O===e.key;return<Bt key={e.key}onPress={()=>{if(B("light"),e.key==="crop"){const T=Et("free",Re,Pe);kt(T),qt("free"),_("crop")}else e.key==="text"?(_("text"),L(I("mediaGallery.tapToAddText","Tap anywhere on the image to add text"))):_(e.key)}}style={[t.studioToolItem,C&&t.studioToolItemActive]}>
777
+ {e.icon(C)}
778
+ <R style={[t.studioToolLabel,C&&t.studioToolLabelActive]}>
781
779
  {e.label}
782
- </F>
783
- {"hasBadge"in e&&e.hasBadge&&<C style={t.studioTabBadgeDot}/>}
780
+ </R>
781
+ {"hasBadge"in e&&e.hasBadge&&<F style={t.studioTabBadgeDot}/>}
784
782
  </Bt>})}
785
- </C>
786
- </C>
787
- </C>
788
- </C>
783
+ </F>
784
+ </F>
785
+ </F>
786
+ </F>
789
787
 
790
788
 
791
789
  <Ci visible={_i}transparent={!0}animationType="fade"onRequestClose={()=>Jt(!1)}>
792
- <C style={t.textModalBackdrop}>
793
- <C style={t.textModalCard}>
794
- <F style={t.textModalTitle}>
790
+ <F style={t.textModalBackdrop}>
791
+ <F style={t.textModalCard}>
792
+ <R style={t.textModalTitle}>
795
793
  Add Text Note / Callout
796
- </F>
794
+ </R>
797
795
  <Cr style={t.textModalInput}placeholder="e.g. Defect: Button overlap"placeholderTextColor="rgba(255,255,255,0.4)"value={so}onChangeText={lo}autoFocus={!0}multiline={!0}/>
798
- <C style={t.textModalActions}>
799
- <P onPress={()=>Jt(!1)}style={t.modalCancelBtn}>
800
- <F style={t.modalCancelText}>Cancel</F>
801
- </P>
802
- <P onPress={sr}style={t.modalConfirmBtn}>
803
- <F style={t.modalConfirmText}>Place Text</F>
804
- </P>
805
- </C>
806
- </C>
807
- </C>
796
+ <F style={t.textModalActions}>
797
+ <A onPress={()=>Jt(!1)}style={t.modalCancelBtn}>
798
+ <R style={t.modalCancelText}>Cancel</R>
799
+ </A>
800
+ <A onPress={sr}style={t.modalConfirmBtn}>
801
+ <R style={t.modalConfirmText}>Place Text</R>
802
+ </A>
803
+ </F>
804
+ </F>
805
+ </F>
808
806
  </Ci>
809
807
 
810
808
 
811
- <Sr visible={Ne}title={z("mediaGallery.deleteTitle","Delete Media?")}message={z("mediaGallery.deleteMessage",{filename:r.filename})}confirmText={z("mediaGallery.delete","Delete")}cancelText={z("common.cancel","Cancel")}isDestructive={!0}icon="trash"onConfirm={()=>{qe(!1),It(r),Me()}}onCancel={()=>qe(!1)}/>
812
- </Ci>};const t=L.create({modalBackdrop:{flex:1,backgroundColor:"rgba(0, 0, 0, 0.70)",justifyContent:"flex-end",zIndex:999999,elevation:999999},modalBackdropPressable:{...L.absoluteFillObject},modalContentCard:{backgroundColor:"#070A14",borderTopLeftRadius:20,borderTopRightRadius:20,overflow:"hidden",shadowColor:M.black,shadowOffset:{width:0,height:-4},shadowOpacity:.25,shadowRadius:10,elevation:16},header:{width:"100%",zIndex:10,borderBottomWidth:L.hairlineWidth,borderBottomColor:"rgba(255, 255, 255, 0.12)"},headerInner:{width:"100%",flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingHorizontal:12,paddingTop:6,paddingBottom:8,minHeight:48},headerLeft:{flexDirection:"row",alignItems:"center",gap:8,flex:1,minWidth:0,marginRight:6},headerTextCol:{flex:1,minWidth:0,justifyContent:"center"},headerTitleRow:{flexDirection:"row",alignItems:"center",gap:6},title:{fontFamily:E.interBold,fontSize:13,color:M.white,letterSpacing:-.1,flexShrink:1},formatBadge:{backgroundColor:"rgba(255, 255, 255, 0.18)",paddingHorizontal:5,paddingVertical:1.5,borderRadius:4,borderWidth:L.hairlineWidth,borderColor:"rgba(255, 255, 255, 0.25)"},formatBadgeText:{fontFamily:E.interBold,fontSize:8.5,color:M.white,letterSpacing:.4},headerSubtitleRow:{flexDirection:"row",alignItems:"center",gap:4,marginTop:1},subtitleDim:{fontFamily:E.interMedium,fontSize:10,color:"rgba(255, 255, 255, 0.85)"},subtitleDot:{fontSize:10,color:"rgba(255, 255, 255, 0.45)"},subtitleSize:{fontFamily:E.interBold,fontSize:10,color:"#38BDF8"},headerBackBtn:{width:32,height:32,borderRadius:16,alignItems:"center",justifyContent:"center",backgroundColor:"rgba(255, 255, 255, 0.12)",borderWidth:1,borderColor:"rgba(255, 255, 255, 0.18)"},headerRight:{flexDirection:"row",alignItems:"center",gap:6,flexShrink:0},undoRedoGroup:{flexDirection:"row",alignItems:"center",backgroundColor:"rgba(255, 255, 255, 0.12)",borderRadius:8,borderWidth:1,borderColor:"rgba(255, 255, 255, 0.18)",height:30,overflow:"hidden"},undoHalfBtn:{paddingHorizontal:8,height:"100%",alignItems:"center",justifyContent:"center"},redoHalfBtn:{paddingHorizontal:8,height:"100%",alignItems:"center",justifyContent:"center"},undoDivider:{width:1,height:14,backgroundColor:"rgba(255, 255, 255, 0.2)"},actionDisabled:{opacity:.35},headerMoreBtn:{width:30,height:30,borderRadius:8,backgroundColor:"rgba(255, 255, 255, 0.12)",borderWidth:1,borderColor:"rgba(255, 255, 255, 0.18)",alignItems:"center",justifyContent:"center"},headerSaveBtn:{flexDirection:"row",alignItems:"center",gap:5,backgroundColor:"#059669",borderRadius:8,borderWidth:1,borderColor:"rgba(52, 211, 153, 0.45)",paddingHorizontal:11,height:30},headerSaveText:{fontFamily:E.interBold,fontSize:11,color:M.white},headerExportBtn:{flexDirection:"row",alignItems:"center",gap:5,backgroundColor:"#0284C7",borderRadius:8,borderWidth:1,borderColor:"rgba(56, 189, 248, 0.5)",paddingHorizontal:10,height:30},headerExportText:{fontFamily:E.interBold,fontSize:11,color:M.white},headerActionBtn:{width:30,height:30,borderRadius:8,backgroundColor:"rgba(255, 255, 255, 0.08)",borderWidth:1,borderColor:"rgba(255, 255, 255, 0.12)",alignItems:"center",justifyContent:"center"},moreMenuDropdown:{position:"absolute",top:52,right:12,backgroundColor:"#0F172A",borderRadius:12,borderWidth:1,borderColor:"rgba(255, 255, 255, 0.18)",padding:6,zIndex:100,elevation:12,shadowColor:M.black,shadowOffset:{width:0,height:4},shadowOpacity:.5,shadowRadius:8,minWidth:160},moreMenuItem:{flexDirection:"row",alignItems:"center",gap:8,paddingVertical:8,paddingHorizontal:10,borderRadius:8},moreMenuItemDestructive:{borderTopWidth:L.hairlineWidth,borderTopColor:"rgba(255, 255, 255, 0.1)",marginTop:4,paddingTop:8},moreMenuItemText:{fontFamily:E.interMedium,fontSize:12,color:M.white},stageWrapper:{flex:1,width:"100%",backgroundColor:"#03050A",paddingHorizontal:8,paddingTop:8,paddingBottom:4,minHeight:0},previewCard:{flex:1,width:"100%",borderRadius:12,overflow:"hidden",backgroundColor:"#03050A",alignItems:"center",justifyContent:"center",position:"relative"},canvasContainer:{width:"100%",height:"100%",alignItems:"center",justifyContent:"center",position:"relative"},imageCanvasWrapper:{position:"relative",alignItems:"center",justifyContent:"center"},instagramGridOverlay:{...L.absoluteFillObject,borderWidth:1,borderColor:"rgba(255, 255, 255, 0.45)",zIndex:15},instagramGridHLine:{position:"absolute",left:0,right:0,height:1,backgroundColor:"rgba(255, 255, 255, 0.45)",shadowColor:"#000000",shadowOpacity:.6,shadowRadius:1,shadowOffset:{width:0,height:.5}},instagramGridVLine:{position:"absolute",top:0,bottom:0,width:1,backgroundColor:"rgba(255, 255, 255, 0.45)",shadowColor:"#000000",shadowOpacity:.6,shadowRadius:1,shadowOffset:{width:.5,height:0}},image:{width:"100%",height:"100%"},stageTopLeftBadge:{position:"absolute",top:12,left:12,flexDirection:"row",alignItems:"center",gap:6,backgroundColor:"rgba(10, 15, 29, 0.88)",paddingHorizontal:10,paddingVertical:5,borderRadius:12,borderWidth:1,borderColor:"rgba(255, 255, 255, 0.12)",zIndex:20},badgeGlowDot:{width:7,height:7,borderRadius:3.5,backgroundColor:"#38BDF8",shadowColor:"#38BDF8",shadowOffset:{width:0,height:0},shadowOpacity:.9,shadowRadius:4},badgeGlowText:{fontFamily:E.interSemiBold,fontSize:10.5,color:"rgba(255, 255, 255, 0.92)"},holdCompareBtn:{position:"absolute",bottom:12,left:12,flexDirection:"row",alignItems:"center",gap:6,backgroundColor:"rgba(10, 15, 29, 0.90)",paddingHorizontal:12,paddingVertical:7,borderRadius:14,borderWidth:1,borderColor:"rgba(255, 255, 255, 0.15)",shadowColor:M.black,shadowOffset:{width:0,height:2},shadowOpacity:.4,shadowRadius:4,elevation:4,zIndex:20},holdCompareBtnPressed:{backgroundColor:M.indigo600,borderColor:M.indigo400},holdCompareText:{fontFamily:E.interSemiBold,fontSize:11,color:M.white},floatingZoomBar:{position:"absolute",right:12,bottom:12,backgroundColor:"rgba(10, 15, 29, 0.92)",borderRadius:22,borderWidth:1.2,borderColor:"rgba(255, 255, 255, 0.16)",paddingVertical:5,paddingHorizontal:5,alignItems:"center",gap:4,shadowColor:M.black,shadowOffset:{width:0,height:4},shadowOpacity:.5,shadowRadius:10,elevation:12,zIndex:35},zoomBtn:{width:28,height:28,borderRadius:14,backgroundColor:"rgba(255, 255, 255, 0.10)",alignItems:"center",justifyContent:"center"},zoomLevelBadge:{paddingHorizontal:4,paddingVertical:3},zoomLevelText:{fontFamily:E.interBold,fontSize:9.5,color:"#38BDF8",letterSpacing:.2},videoImageOverlay:{...L.absoluteFillObject,backgroundColor:"rgba(10, 13, 20, 0.28)"},videoFallbackBackdrop:{flex:1,width:"100%",backgroundColor:M.slate900,alignItems:"center",justifyContent:"center",padding:24},videoFallbackGlow:{position:"absolute",width:150,height:150,borderRadius:75,backgroundColor:"rgba(56, 189, 248, 0.08)"},videoFallbackTitle:{fontFamily:E.interSemiBold,fontSize:15,color:M.white,marginTop:12},videoFallbackSubtitle:{fontFamily:E.interRegular,fontSize:12,color:"rgba(255, 255, 255, 0.6)",marginTop:4},modernCenterPlayBtn:{position:"absolute",width:60,height:60,borderRadius:30,backgroundColor:"rgba(15, 23, 42, 0.78)",borderWidth:1.5,borderColor:"rgba(255, 255, 255, 0.45)",alignItems:"center",justifyContent:"center",shadowColor:M.black,shadowOffset:{width:0,height:4},shadowOpacity:.6,shadowRadius:10,elevation:12,zIndex:25},videoFloatingHud:{position:"absolute",bottom:12,left:12,right:12,backgroundColor:"rgba(10, 15, 29, 0.88)",borderRadius:14,borderWidth:1,borderColor:"rgba(255, 255, 255, 0.16)",flexDirection:"row",alignItems:"center",paddingHorizontal:12,paddingVertical:8,gap:10,shadowColor:M.black,shadowOffset:{width:0,height:2},shadowOpacity:.4,shadowRadius:6,elevation:6,zIndex:20},videoHudProgressBar:{flex:1,height:4,backgroundColor:"rgba(255, 255, 255, 0.15)",borderRadius:2,position:"relative",overflow:"hidden"},videoHudProgressFill:{position:"absolute",top:0,bottom:0,backgroundColor:"#38BDF8",borderRadius:2},videoHudTimeText:{fontFamily:E.interBold,fontSize:10.5,color:M.white,letterSpacing:.2},videoHudBadge:{backgroundColor:"rgba(255, 255, 255, 0.12)",paddingHorizontal:5,paddingVertical:2,borderRadius:6},videoHudBadgeText:{fontFamily:E.interBold,fontSize:9,color:"#C084FC"},filmstripScroll:{flexDirection:"row",alignItems:"center",gap:6,paddingVertical:2},filmstripThumbItem:{width:48,height:48,borderRadius:8,borderWidth:1.5,borderColor:"rgba(255, 255, 255, 0.2)",overflow:"hidden",position:"relative",backgroundColor:"#0F172A"},filmstripThumbActive:{borderColor:"#38BDF8",borderWidth:2,transform:[{scale:1.05}]},filmstripThumbImg:{width:"100%",height:"100%"},filmstripThumbTime:{position:"absolute",bottom:2,right:2,backgroundColor:"rgba(0, 0, 0, 0.75)",paddingHorizontal:3,paddingVertical:1,borderRadius:3,fontFamily:E.interBold,fontSize:7.5,color:M.white},bottomControlsContainer:{width:"100%",backgroundColor:"#070A14",paddingHorizontal:8,paddingTop:6,paddingBottom:io.OS==="ios"?24:12,borderTopWidth:L.hairlineWidth,borderTopColor:"rgba(255, 255, 255, 0.08)",gap:6},contextToolPanel:{width:"100%",backgroundColor:"rgba(10, 15, 29, 0.96)",borderRadius:16,paddingVertical:9,paddingHorizontal:12,borderWidth:1,borderColor:"rgba(255, 255, 255, 0.12)",gap:8},panelHeaderRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",width:"100%"},panelHeaderLeft:{flexDirection:"row",alignItems:"center",gap:7},panelGlowDot:{width:7,height:7,borderRadius:3.5,backgroundColor:"#818CF8",shadowColor:"#818CF8",shadowOffset:{width:0,height:0},shadowOpacity:.9,shadowRadius:4},panelHeaderTitle:{fontFamily:E.interBold,fontSize:11,color:M.white,letterSpacing:.6},panelValueBadge:{backgroundColor:"rgba(2, 132, 199, 0.22)",paddingHorizontal:8,paddingVertical:3,borderRadius:8,borderWidth:1,borderColor:"rgba(56, 189, 248, 0.45)"},panelValueText:{fontFamily:E.interBold,fontSize:10.5,color:"#38BDF8"},sliderRowContainer:{flexDirection:"row",alignItems:"center",width:"100%",gap:8,paddingHorizontal:2},sliderMinIndicator:{fontSize:10,color:"rgba(255, 255, 255, 0.5)"},sliderMaxIndicator:{fontSize:12,color:"rgba(255, 255, 255, 0.85)"},sliderTrackTouchable:{flex:1,height:36,justifyContent:"center"},sliderTrackBg:{width:"100%",height:4,backgroundColor:"rgba(255, 255, 255, 0.14)",borderRadius:2,position:"relative",justifyContent:"center"},sliderFillTrack:{height:4,backgroundColor:"#0284C7",borderRadius:2},sliderThumbHandle:{position:"absolute",width:20,height:20,borderRadius:10,backgroundColor:"#38BDF8",marginLeft:-10,alignItems:"center",justifyContent:"center",shadowColor:"#38BDF8",shadowOffset:{width:0,height:0},shadowOpacity:.9,shadowRadius:6,elevation:6},sliderThumbInnerGlow:{width:8,height:8,borderRadius:4,backgroundColor:M.white},modeChipsScroll:{flexDirection:"row",alignItems:"center",gap:8,paddingTop:2},modeChip:{flexDirection:"row",alignItems:"center",gap:6,paddingHorizontal:12,paddingVertical:6,borderRadius:10,backgroundColor:"rgba(255, 255, 255, 0.08)",borderWidth:1,borderColor:"rgba(255, 255, 255, 0.12)"},modeChipActive:{flexDirection:"row",alignItems:"center",gap:6,paddingHorizontal:12,paddingVertical:6,borderRadius:10,backgroundColor:"rgba(2, 132, 199, 0.28)",borderColor:"#38BDF8",borderWidth:1.2},modeChipText:{fontFamily:E.interSemiBold,fontSize:11,color:"rgba(255, 255, 255, 0.75)"},modeChipTextActive:{color:M.white,fontFamily:E.interBold,fontSize:11},modeChipIconText:{fontSize:13,color:"rgba(255, 255, 255, 0.7)",marginRight:1},subDivider:{width:1,height:18,backgroundColor:"rgba(255, 255, 255, 0.16)",marginHorizontal:4},colorDot:{width:22,height:22,borderRadius:11,borderWidth:2,borderColor:"rgba(255, 255, 255, 0.3)"},colorDotActive:{borderColor:M.white,transform:[{scale:1.25}]},actionPillBtn:{flexDirection:"row",alignItems:"center",gap:5,paddingHorizontal:10,paddingVertical:6,borderRadius:10,backgroundColor:"rgba(255, 255, 255, 0.10)"},actionPillText:{fontFamily:E.interSemiBold,fontSize:10.5,color:M.white},applyActionBtn:{backgroundColor:M.emerald600,paddingHorizontal:14,paddingVertical:6,borderRadius:10},applyActionText:{fontFamily:E.interBold,fontSize:11.5,color:M.white},cancelActionBtn:{backgroundColor:"rgba(255, 255, 255, 0.14)",paddingHorizontal:12,paddingVertical:6,borderRadius:10},cancelActionText:{fontFamily:E.interSemiBold,fontSize:11.5,color:"rgba(255, 255, 255, 0.85)"},studioToolbar:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",backgroundColor:"rgba(15, 20, 36, 0.95)",borderRadius:16,paddingVertical:4,paddingHorizontal:5,borderWidth:1,borderColor:"rgba(255, 255, 255, 0.08)",gap:4},studioToolItem:{flex:1,flexDirection:"column",alignItems:"center",justifyContent:"center",gap:3,paddingVertical:7,paddingHorizontal:4,borderRadius:12,borderWidth:1,borderColor:"transparent",position:"relative"},studioToolItemActive:{backgroundColor:"rgba(2, 132, 199, 0.22)",borderColor:"#38BDF8",borderWidth:1.2},studioToolLabel:{fontFamily:E.interSemiBold,fontSize:10,color:"rgba(255, 255, 255, 0.60)",letterSpacing:.1},studioToolLabelActive:{color:"#38BDF8",fontFamily:E.interBold},studioTabBadgeDot:{position:"absolute",top:6,right:12,width:5,height:5,borderRadius:2.5,backgroundColor:"#C084FC"},textAnnotationPill:{position:"absolute",flexDirection:"row",alignItems:"center",gap:6,paddingHorizontal:8,paddingVertical:4,borderRadius:8,borderWidth:1,borderColor:"rgba(255, 255, 255, 0.35)",shadowColor:M.black,shadowOffset:{width:0,height:2},shadowOpacity:.4,shadowRadius:4,elevation:4},textAnnotationText:{fontFamily:E.interBold,fontSize:11},textDeleteBtn:{width:14,height:14,borderRadius:7,backgroundColor:"rgba(0, 0, 0, 0.45)",alignItems:"center",justifyContent:"center"},cropOverlayMask:{...L.absoluteFillObject,zIndex:100,elevation:100},cropDimMask:{position:"absolute",backgroundColor:"rgba(0, 0, 0, 0.58)"},cropBoxFrame:{position:"absolute",borderWidth:2,borderStyle:"solid",borderColor:"#FFFFFF",backgroundColor:"rgba(56, 189, 248, 0.08)",shadowColor:M.black,shadowOffset:{width:0,height:0},shadowOpacity:.9,shadowRadius:5,elevation:10},cropGridH:{position:"absolute",left:0,right:0,height:1,backgroundColor:"rgba(255, 255, 255, 0.45)"},cropGridV:{position:"absolute",top:0,bottom:0,width:1,backgroundColor:"rgba(255, 255, 255, 0.45)"},cropCornerBracket:{position:"absolute",width:20,height:20,borderColor:"#FFFFFF",shadowColor:M.black,shadowOffset:{width:0,height:1},shadowOpacity:.8,shadowRadius:3,elevation:6},bracketTL:{top:-3,left:-3,borderTopWidth:4,borderLeftWidth:4},bracketTR:{top:-3,right:-3,borderTopWidth:4,borderRightWidth:4},bracketBL:{bottom:-3,left:-3,borderBottomWidth:4,borderLeftWidth:4},bracketBR:{bottom:-3,right:-3,borderBottomWidth:4,borderRightWidth:4},cropEdgeBarTop:{position:"absolute",top:-3,left:"50%",marginLeft:-18,width:36,height:5,backgroundColor:"#FFFFFF",borderRadius:2.5},cropEdgeBarBottom:{position:"absolute",bottom:-3,left:"50%",marginLeft:-18,width:36,height:5,backgroundColor:"#FFFFFF",borderRadius:2.5},cropEdgeBarLeft:{position:"absolute",left:-3,top:"50%",marginTop:-18,width:5,height:36,backgroundColor:"#FFFFFF",borderRadius:2.5},cropEdgeBarRight:{position:"absolute",right:-3,top:"50%",marginTop:-18,width:5,height:36,backgroundColor:"#FFFFFF",borderRadius:2.5},cropHandleTouchArea:{position:"absolute",width:44,height:44,alignItems:"center",justifyContent:"center",zIndex:30},handleAreaTL:{top:-22,left:-22},handleAreaTR:{top:-22,right:-22},handleAreaBL:{bottom:-22,left:-22},handleAreaBR:{bottom:-22,right:-22},cropEdgeTouchAreaTop:{position:"absolute",top:-20,left:"25%",right:"25%",height:40,alignItems:"center",justifyContent:"center",zIndex:25},cropEdgeTouchAreaBottom:{position:"absolute",bottom:-20,left:"25%",right:"25%",height:40,alignItems:"center",justifyContent:"center",zIndex:25},cropEdgeTouchAreaLeft:{position:"absolute",left:-20,top:"25%",bottom:"25%",width:40,alignItems:"center",justifyContent:"center",zIndex:25},cropEdgeTouchAreaRight:{position:"absolute",right:-20,top:"25%",bottom:"25%",width:40,alignItems:"center",justifyContent:"center",zIndex:25},cropCancelBtn:{position:"absolute",top:14,left:14,width:38,height:38,borderRadius:19,backgroundColor:"#DC2626",borderWidth:2,borderColor:M.white,alignItems:"center",justifyContent:"center",shadowColor:M.black,shadowOffset:{width:0,height:4},shadowOpacity:.6,shadowRadius:8,elevation:16,zIndex:200},cropConfirmBtn:{position:"absolute",top:14,right:14,width:38,height:38,borderRadius:19,backgroundColor:"#10B981",borderWidth:2,borderColor:M.white,alignItems:"center",justifyContent:"center",shadowColor:M.black,shadowOffset:{width:0,height:4},shadowOpacity:.6,shadowRadius:8,elevation:16,zIndex:200},textModalBackdrop:{flex:1,backgroundColor:"rgba(0, 0, 0, 0.70)",alignItems:"center",justifyContent:"center",padding:20},textModalCard:{width:"100%",maxWidth:360,backgroundColor:"#0F172A",borderRadius:16,borderWidth:1,borderColor:"rgba(255, 255, 255, 0.18)",padding:16,gap:12},textModalTitle:{fontFamily:E.interBold,fontSize:14,color:M.white},textModalInput:{minHeight:80,backgroundColor:"rgba(255, 255, 255, 0.08)",borderRadius:10,borderWidth:1,borderColor:"rgba(255, 255, 255, 0.15)",padding:12,fontFamily:E.interRegular,fontSize:13,color:M.white,textAlignVertical:"top"},textModalActions:{flexDirection:"row",alignItems:"center",justifyContent:"flex-end",gap:10},modalCancelBtn:{paddingHorizontal:14,paddingVertical:8,borderRadius:8,backgroundColor:"rgba(255, 255, 255, 0.1)"},modalCancelText:{fontFamily:E.interSemiBold,fontSize:12,color:"rgba(255, 255, 255, 0.7)"},modalConfirmBtn:{paddingHorizontal:16,paddingVertical:8,borderRadius:8,backgroundColor:M.indigo600},modalConfirmText:{fontFamily:E.interBold,fontSize:12,color:M.white},watermarkOverlay:{position:"absolute",bottom:0,left:0,right:0,backgroundColor:"rgba(3, 7, 18, 0.85)",paddingHorizontal:10,paddingVertical:5,flexDirection:"row",alignItems:"center",justifyContent:"space-between",borderTopWidth:L.hairlineWidth,borderTopColor:"rgba(255, 255, 255, 0.2)"},watermarkText:{fontFamily:E.interBold,fontSize:9.5,color:"#38BDF8",letterSpacing:.2},watermarkTime:{fontFamily:E.interSemiBold,fontSize:9.5,color:"#94A3B8"},moreMenuItemIconText:{fontSize:14}});
809
+ <Sr visible={Ye}title={I("mediaGallery.deleteTitle","Delete Media?")}message={I("mediaGallery.deleteMessage",{filename:M.filename})}confirmText={I("mediaGallery.delete","Delete")}cancelText={I("common.cancel","Cancel")}isDestructive={!0}icon="trash"onConfirm={()=>{Je(!1),It(M),ke()}}onCancel={()=>Je(!1)}/>
810
+ </Ci>};const t=N.create({modalBackdrop:{flex:1,backgroundColor:"rgba(0, 0, 0, 0.70)",justifyContent:"flex-end",zIndex:999999,elevation:999999},modalBackdropPressable:{...N.absoluteFillObject},modalContentCard:{backgroundColor:"#070A14",borderTopLeftRadius:20,borderTopRightRadius:20,overflow:"hidden",shadowColor:S.black,shadowOffset:{width:0,height:-4},shadowOpacity:.25,shadowRadius:10,elevation:16},header:{width:"100%",zIndex:10,borderBottomWidth:N.hairlineWidth,borderBottomColor:"rgba(255, 255, 255, 0.12)"},headerInner:{width:"100%",flexDirection:"row",alignItems:"center",justifyContent:"space-between",paddingHorizontal:12,paddingTop:6,paddingBottom:8,minHeight:48},headerLeft:{flexDirection:"row",alignItems:"center",gap:8,flex:1,minWidth:0,marginRight:6},headerTextCol:{flex:1,minWidth:0,justifyContent:"center"},headerTitleRow:{flexDirection:"row",alignItems:"center",gap:6},title:{fontFamily:$.interBold,fontSize:13,color:S.white,letterSpacing:-.1,flexShrink:1},formatBadge:{backgroundColor:"rgba(255, 255, 255, 0.18)",paddingHorizontal:5,paddingVertical:1.5,borderRadius:4,borderWidth:N.hairlineWidth,borderColor:"rgba(255, 255, 255, 0.25)"},formatBadgeText:{fontFamily:$.interBold,fontSize:8.5,color:S.white,letterSpacing:.4},headerSubtitleRow:{flexDirection:"row",alignItems:"center",gap:4,marginTop:1},subtitleDim:{fontFamily:$.interMedium,fontSize:10,color:"rgba(255, 255, 255, 0.85)"},subtitleDot:{fontSize:10,color:"rgba(255, 255, 255, 0.45)"},subtitleSize:{fontFamily:$.interBold,fontSize:10,color:"#38BDF8"},headerBackBtn:{width:32,height:32,borderRadius:16,alignItems:"center",justifyContent:"center",backgroundColor:"rgba(255, 255, 255, 0.12)",borderWidth:1,borderColor:"rgba(255, 255, 255, 0.18)"},headerRight:{flexDirection:"row",alignItems:"center",gap:6,flexShrink:0},undoRedoGroup:{flexDirection:"row",alignItems:"center",backgroundColor:"rgba(255, 255, 255, 0.12)",borderRadius:8,borderWidth:1,borderColor:"rgba(255, 255, 255, 0.18)",height:30,overflow:"hidden"},undoHalfBtn:{paddingHorizontal:8,height:"100%",alignItems:"center",justifyContent:"center"},redoHalfBtn:{paddingHorizontal:8,height:"100%",alignItems:"center",justifyContent:"center"},undoDivider:{width:1,height:14,backgroundColor:"rgba(255, 255, 255, 0.2)"},actionDisabled:{opacity:.35},headerMoreBtn:{width:30,height:30,borderRadius:8,backgroundColor:"rgba(255, 255, 255, 0.12)",borderWidth:1,borderColor:"rgba(255, 255, 255, 0.18)",alignItems:"center",justifyContent:"center"},headerSaveBtn:{flexDirection:"row",alignItems:"center",gap:5,backgroundColor:"#059669",borderRadius:8,borderWidth:1,borderColor:"rgba(52, 211, 153, 0.45)",paddingHorizontal:11,height:30},headerSaveText:{fontFamily:$.interBold,fontSize:11,color:S.white},headerExportBtn:{flexDirection:"row",alignItems:"center",gap:5,backgroundColor:"#0284C7",borderRadius:8,borderWidth:1,borderColor:"rgba(56, 189, 248, 0.5)",paddingHorizontal:10,height:30},headerExportText:{fontFamily:$.interBold,fontSize:11,color:S.white},headerActionBtn:{width:30,height:30,borderRadius:8,backgroundColor:"rgba(255, 255, 255, 0.08)",borderWidth:1,borderColor:"rgba(255, 255, 255, 0.12)",alignItems:"center",justifyContent:"center"},moreMenuDropdown:{position:"absolute",top:52,right:12,backgroundColor:"#0F172A",borderRadius:12,borderWidth:1,borderColor:"rgba(255, 255, 255, 0.18)",padding:6,zIndex:100,elevation:12,shadowColor:S.black,shadowOffset:{width:0,height:4},shadowOpacity:.5,shadowRadius:8,minWidth:160},moreMenuItem:{flexDirection:"row",alignItems:"center",gap:8,paddingVertical:8,paddingHorizontal:10,borderRadius:8},moreMenuItemDestructive:{borderTopWidth:N.hairlineWidth,borderTopColor:"rgba(255, 255, 255, 0.1)",marginTop:4,paddingTop:8},moreMenuItemText:{fontFamily:$.interMedium,fontSize:12,color:S.white},stageWrapper:{flex:1,width:"100%",backgroundColor:"#03050A",paddingHorizontal:8,paddingTop:8,paddingBottom:4,minHeight:0},previewCard:{flex:1,width:"100%",borderRadius:12,overflow:"hidden",backgroundColor:"#03050A",alignItems:"center",justifyContent:"center",position:"relative"},canvasContainer:{width:"100%",height:"100%",alignItems:"center",justifyContent:"center",position:"relative"},imageCanvasWrapper:{position:"relative",alignItems:"center",justifyContent:"center"},instagramGridOverlay:{...N.absoluteFillObject,borderWidth:1,borderColor:"rgba(255, 255, 255, 0.45)",zIndex:15},instagramGridHLine:{position:"absolute",left:0,right:0,height:1,backgroundColor:"rgba(255, 255, 255, 0.45)",shadowColor:"#000000",shadowOpacity:.6,shadowRadius:1,shadowOffset:{width:0,height:.5}},instagramGridVLine:{position:"absolute",top:0,bottom:0,width:1,backgroundColor:"rgba(255, 255, 255, 0.45)",shadowColor:"#000000",shadowOpacity:.6,shadowRadius:1,shadowOffset:{width:.5,height:0}},image:{width:"100%",height:"100%"},stageTopLeftBadge:{position:"absolute",top:12,left:12,flexDirection:"row",alignItems:"center",gap:6,backgroundColor:"rgba(10, 15, 29, 0.88)",paddingHorizontal:10,paddingVertical:5,borderRadius:12,borderWidth:1,borderColor:"rgba(255, 255, 255, 0.12)",zIndex:20},badgeGlowDot:{width:7,height:7,borderRadius:3.5,backgroundColor:"#38BDF8",shadowColor:"#38BDF8",shadowOffset:{width:0,height:0},shadowOpacity:.9,shadowRadius:4},badgeGlowText:{fontFamily:$.interSemiBold,fontSize:10.5,color:"rgba(255, 255, 255, 0.92)"},holdCompareBtn:{position:"absolute",bottom:12,left:12,flexDirection:"row",alignItems:"center",gap:6,backgroundColor:"rgba(10, 15, 29, 0.90)",paddingHorizontal:12,paddingVertical:7,borderRadius:14,borderWidth:1,borderColor:"rgba(255, 255, 255, 0.15)",shadowColor:S.black,shadowOffset:{width:0,height:2},shadowOpacity:.4,shadowRadius:4,elevation:4,zIndex:20},holdCompareBtnPressed:{backgroundColor:S.indigo600,borderColor:S.indigo400},holdCompareText:{fontFamily:$.interSemiBold,fontSize:11,color:S.white},floatingZoomBar:{position:"absolute",right:12,bottom:12,backgroundColor:"rgba(10, 15, 29, 0.92)",borderRadius:22,borderWidth:1.2,borderColor:"rgba(255, 255, 255, 0.16)",paddingVertical:5,paddingHorizontal:5,alignItems:"center",gap:4,shadowColor:S.black,shadowOffset:{width:0,height:4},shadowOpacity:.5,shadowRadius:10,elevation:12,zIndex:35},zoomBtn:{width:28,height:28,borderRadius:14,backgroundColor:"rgba(255, 255, 255, 0.10)",alignItems:"center",justifyContent:"center"},zoomLevelBadge:{paddingHorizontal:4,paddingVertical:3},zoomLevelText:{fontFamily:$.interBold,fontSize:9.5,color:"#38BDF8",letterSpacing:.2},videoImageOverlay:{...N.absoluteFillObject,backgroundColor:"rgba(10, 13, 20, 0.28)"},videoFallbackBackdrop:{flex:1,width:"100%",backgroundColor:S.slate900,alignItems:"center",justifyContent:"center",padding:24},videoFallbackGlow:{position:"absolute",width:150,height:150,borderRadius:75,backgroundColor:"rgba(56, 189, 248, 0.08)"},videoFallbackTitle:{fontFamily:$.interSemiBold,fontSize:15,color:S.white,marginTop:12},videoFallbackSubtitle:{fontFamily:$.interRegular,fontSize:12,color:"rgba(255, 255, 255, 0.6)",marginTop:4},modernCenterPlayBtn:{position:"absolute",width:60,height:60,borderRadius:30,backgroundColor:"rgba(15, 23, 42, 0.78)",borderWidth:1.5,borderColor:"rgba(255, 255, 255, 0.45)",alignItems:"center",justifyContent:"center",shadowColor:S.black,shadowOffset:{width:0,height:4},shadowOpacity:.6,shadowRadius:10,elevation:12,zIndex:25},videoFloatingHud:{position:"absolute",bottom:12,left:12,right:12,backgroundColor:"rgba(10, 15, 29, 0.88)",borderRadius:14,borderWidth:1,borderColor:"rgba(255, 255, 255, 0.16)",flexDirection:"row",alignItems:"center",paddingHorizontal:12,paddingVertical:8,gap:10,shadowColor:S.black,shadowOffset:{width:0,height:2},shadowOpacity:.4,shadowRadius:6,elevation:6,zIndex:20},videoHudProgressBar:{flex:1,height:4,backgroundColor:"rgba(255, 255, 255, 0.15)",borderRadius:2,position:"relative",overflow:"hidden"},videoHudProgressFill:{position:"absolute",top:0,bottom:0,backgroundColor:"#38BDF8",borderRadius:2},videoHudTimeText:{fontFamily:$.interBold,fontSize:10.5,color:S.white,letterSpacing:.2},videoHudBadge:{backgroundColor:"rgba(255, 255, 255, 0.12)",paddingHorizontal:5,paddingVertical:2,borderRadius:6},videoHudBadgeText:{fontFamily:$.interBold,fontSize:9,color:"#C084FC"},filmstripScroll:{flexDirection:"row",alignItems:"center",gap:6,paddingVertical:2},filmstripThumbItem:{width:48,height:48,borderRadius:8,borderWidth:1.5,borderColor:"rgba(255, 255, 255, 0.2)",overflow:"hidden",position:"relative",backgroundColor:"#0F172A"},filmstripThumbActive:{borderColor:"#38BDF8",borderWidth:2,transform:[{scale:1.05}]},filmstripThumbImg:{width:"100%",height:"100%"},filmstripThumbTime:{position:"absolute",bottom:2,right:2,backgroundColor:"rgba(0, 0, 0, 0.75)",paddingHorizontal:3,paddingVertical:1,borderRadius:3,fontFamily:$.interBold,fontSize:7.5,color:S.white},bottomControlsContainer:{width:"100%",backgroundColor:"#070A14",paddingHorizontal:8,paddingTop:6,paddingBottom:io.OS==="ios"?24:12,borderTopWidth:N.hairlineWidth,borderTopColor:"rgba(255, 255, 255, 0.08)",gap:6},contextToolPanel:{width:"100%",backgroundColor:"rgba(10, 15, 29, 0.96)",borderRadius:16,paddingVertical:9,paddingHorizontal:12,borderWidth:1,borderColor:"rgba(255, 255, 255, 0.12)",gap:8},panelHeaderRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",width:"100%"},panelHeaderLeft:{flexDirection:"row",alignItems:"center",gap:7},panelGlowDot:{width:7,height:7,borderRadius:3.5,backgroundColor:"#818CF8",shadowColor:"#818CF8",shadowOffset:{width:0,height:0},shadowOpacity:.9,shadowRadius:4},panelHeaderTitle:{fontFamily:$.interBold,fontSize:11,color:S.white,letterSpacing:.6},panelValueBadge:{backgroundColor:"rgba(2, 132, 199, 0.22)",paddingHorizontal:8,paddingVertical:3,borderRadius:8,borderWidth:1,borderColor:"rgba(56, 189, 248, 0.45)"},panelValueText:{fontFamily:$.interBold,fontSize:10.5,color:"#38BDF8"},sliderRowContainer:{flexDirection:"row",alignItems:"center",width:"100%",gap:8,paddingHorizontal:2},sliderMinIndicator:{fontSize:10,color:"rgba(255, 255, 255, 0.5)"},sliderMaxIndicator:{fontSize:12,color:"rgba(255, 255, 255, 0.85)"},sliderTrackTouchable:{flex:1,height:36,justifyContent:"center"},sliderTrackBg:{width:"100%",height:4,backgroundColor:"rgba(255, 255, 255, 0.14)",borderRadius:2,position:"relative",justifyContent:"center"},sliderFillTrack:{height:4,backgroundColor:"#0284C7",borderRadius:2},sliderThumbHandle:{position:"absolute",width:20,height:20,borderRadius:10,backgroundColor:"#38BDF8",marginLeft:-10,alignItems:"center",justifyContent:"center",shadowColor:"#38BDF8",shadowOffset:{width:0,height:0},shadowOpacity:.9,shadowRadius:6,elevation:6},sliderThumbInnerGlow:{width:8,height:8,borderRadius:4,backgroundColor:S.white},modeChipsScroll:{flexDirection:"row",alignItems:"center",gap:8,paddingTop:2},modeChip:{flexDirection:"row",alignItems:"center",gap:6,paddingHorizontal:12,paddingVertical:6,borderRadius:10,backgroundColor:"rgba(255, 255, 255, 0.08)",borderWidth:1,borderColor:"rgba(255, 255, 255, 0.12)"},modeChipActive:{flexDirection:"row",alignItems:"center",gap:6,paddingHorizontal:12,paddingVertical:6,borderRadius:10,backgroundColor:"rgba(2, 132, 199, 0.28)",borderColor:"#38BDF8",borderWidth:1.2},modeChipText:{fontFamily:$.interSemiBold,fontSize:11,color:"rgba(255, 255, 255, 0.75)"},modeChipTextActive:{color:S.white,fontFamily:$.interBold,fontSize:11},modeChipIconText:{fontSize:13,color:"rgba(255, 255, 255, 0.7)",marginRight:1},subDivider:{width:1,height:18,backgroundColor:"rgba(255, 255, 255, 0.16)",marginHorizontal:4},colorDot:{width:22,height:22,borderRadius:11,borderWidth:2,borderColor:"rgba(255, 255, 255, 0.3)"},colorDotActive:{borderColor:S.white,transform:[{scale:1.25}]},actionPillBtn:{flexDirection:"row",alignItems:"center",gap:5,paddingHorizontal:10,paddingVertical:6,borderRadius:10,backgroundColor:"rgba(255, 255, 255, 0.10)"},actionPillText:{fontFamily:$.interSemiBold,fontSize:10.5,color:S.white},applyActionBtn:{backgroundColor:S.emerald600,paddingHorizontal:14,paddingVertical:6,borderRadius:10},applyActionText:{fontFamily:$.interBold,fontSize:11.5,color:S.white},cancelActionBtn:{backgroundColor:"rgba(255, 255, 255, 0.14)",paddingHorizontal:12,paddingVertical:6,borderRadius:10},cancelActionText:{fontFamily:$.interSemiBold,fontSize:11.5,color:"rgba(255, 255, 255, 0.85)"},studioToolbar:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",backgroundColor:"rgba(15, 20, 36, 0.95)",borderRadius:16,paddingVertical:4,paddingHorizontal:5,borderWidth:1,borderColor:"rgba(255, 255, 255, 0.08)",gap:4},studioToolItem:{flex:1,flexDirection:"column",alignItems:"center",justifyContent:"center",gap:3,paddingVertical:7,paddingHorizontal:4,borderRadius:12,borderWidth:1,borderColor:"transparent",position:"relative"},studioToolItemActive:{backgroundColor:"rgba(2, 132, 199, 0.22)",borderColor:"#38BDF8",borderWidth:1.2},studioToolLabel:{fontFamily:$.interSemiBold,fontSize:10,color:"rgba(255, 255, 255, 0.60)",letterSpacing:.1},studioToolLabelActive:{color:"#38BDF8",fontFamily:$.interBold},studioTabBadgeDot:{position:"absolute",top:6,right:12,width:5,height:5,borderRadius:2.5,backgroundColor:"#C084FC"},textAnnotationPill:{position:"absolute",flexDirection:"row",alignItems:"center",gap:6,paddingHorizontal:8,paddingVertical:4,borderRadius:8,borderWidth:1,borderColor:"rgba(255, 255, 255, 0.35)",shadowColor:S.black,shadowOffset:{width:0,height:2},shadowOpacity:.4,shadowRadius:4,elevation:4},textAnnotationText:{fontFamily:$.interBold,fontSize:11},textDeleteBtn:{width:14,height:14,borderRadius:7,backgroundColor:"rgba(0, 0, 0, 0.45)",alignItems:"center",justifyContent:"center"},cropOverlayMask:{...N.absoluteFillObject,zIndex:100,elevation:100},cropDimMask:{position:"absolute",backgroundColor:"rgba(0, 0, 0, 0.58)"},cropBoxFrame:{position:"absolute",borderWidth:2,borderStyle:"solid",borderColor:"#FFFFFF",backgroundColor:"rgba(56, 189, 248, 0.08)",shadowColor:S.black,shadowOffset:{width:0,height:0},shadowOpacity:.9,shadowRadius:5,elevation:10},cropGridH:{position:"absolute",left:0,right:0,height:1,backgroundColor:"rgba(255, 255, 255, 0.45)"},cropGridV:{position:"absolute",top:0,bottom:0,width:1,backgroundColor:"rgba(255, 255, 255, 0.45)"},cropCornerBracket:{position:"absolute",width:20,height:20,borderColor:"#FFFFFF",shadowColor:S.black,shadowOffset:{width:0,height:1},shadowOpacity:.8,shadowRadius:3,elevation:6},bracketTL:{top:-3,left:-3,borderTopWidth:4,borderLeftWidth:4},bracketTR:{top:-3,right:-3,borderTopWidth:4,borderRightWidth:4},bracketBL:{bottom:-3,left:-3,borderBottomWidth:4,borderLeftWidth:4},bracketBR:{bottom:-3,right:-3,borderBottomWidth:4,borderRightWidth:4},cropEdgeBarTop:{position:"absolute",top:-3,left:"50%",marginLeft:-18,width:36,height:5,backgroundColor:"#FFFFFF",borderRadius:2.5},cropEdgeBarBottom:{position:"absolute",bottom:-3,left:"50%",marginLeft:-18,width:36,height:5,backgroundColor:"#FFFFFF",borderRadius:2.5},cropEdgeBarLeft:{position:"absolute",left:-3,top:"50%",marginTop:-18,width:5,height:36,backgroundColor:"#FFFFFF",borderRadius:2.5},cropEdgeBarRight:{position:"absolute",right:-3,top:"50%",marginTop:-18,width:5,height:36,backgroundColor:"#FFFFFF",borderRadius:2.5},cropHandleTouchArea:{position:"absolute",width:44,height:44,alignItems:"center",justifyContent:"center",zIndex:30},handleAreaTL:{top:-22,left:-22},handleAreaTR:{top:-22,right:-22},handleAreaBL:{bottom:-22,left:-22},handleAreaBR:{bottom:-22,right:-22},cropEdgeTouchAreaTop:{position:"absolute",top:-20,left:"25%",right:"25%",height:40,alignItems:"center",justifyContent:"center",zIndex:25},cropEdgeTouchAreaBottom:{position:"absolute",bottom:-20,left:"25%",right:"25%",height:40,alignItems:"center",justifyContent:"center",zIndex:25},cropEdgeTouchAreaLeft:{position:"absolute",left:-20,top:"25%",bottom:"25%",width:40,alignItems:"center",justifyContent:"center",zIndex:25},cropEdgeTouchAreaRight:{position:"absolute",right:-20,top:"25%",bottom:"25%",width:40,alignItems:"center",justifyContent:"center",zIndex:25},cropCancelBtn:{position:"absolute",top:14,left:14,width:38,height:38,borderRadius:19,backgroundColor:"#DC2626",borderWidth:2,borderColor:S.white,alignItems:"center",justifyContent:"center",shadowColor:S.black,shadowOffset:{width:0,height:4},shadowOpacity:.6,shadowRadius:8,elevation:16,zIndex:200},cropConfirmBtn:{position:"absolute",top:14,right:14,width:38,height:38,borderRadius:19,backgroundColor:"#10B981",borderWidth:2,borderColor:S.white,alignItems:"center",justifyContent:"center",shadowColor:S.black,shadowOffset:{width:0,height:4},shadowOpacity:.6,shadowRadius:8,elevation:16,zIndex:200},textModalBackdrop:{flex:1,backgroundColor:"rgba(0, 0, 0, 0.70)",alignItems:"center",justifyContent:"center",padding:20},textModalCard:{width:"100%",maxWidth:360,backgroundColor:"#0F172A",borderRadius:16,borderWidth:1,borderColor:"rgba(255, 255, 255, 0.18)",padding:16,gap:12},textModalTitle:{fontFamily:$.interBold,fontSize:14,color:S.white},textModalInput:{minHeight:80,backgroundColor:"rgba(255, 255, 255, 0.08)",borderRadius:10,borderWidth:1,borderColor:"rgba(255, 255, 255, 0.15)",padding:12,fontFamily:$.interRegular,fontSize:13,color:S.white,textAlignVertical:"top"},textModalActions:{flexDirection:"row",alignItems:"center",justifyContent:"flex-end",gap:10},modalCancelBtn:{paddingHorizontal:14,paddingVertical:8,borderRadius:8,backgroundColor:"rgba(255, 255, 255, 0.1)"},modalCancelText:{fontFamily:$.interSemiBold,fontSize:12,color:"rgba(255, 255, 255, 0.7)"},modalConfirmBtn:{paddingHorizontal:16,paddingVertical:8,borderRadius:8,backgroundColor:S.indigo600},modalConfirmText:{fontFamily:$.interBold,fontSize:12,color:S.white},watermarkOverlay:{position:"absolute",bottom:0,left:0,right:0,backgroundColor:"rgba(3, 7, 18, 0.85)",paddingHorizontal:10,paddingVertical:5,flexDirection:"row",alignItems:"center",justifyContent:"space-between",borderTopWidth:N.hairlineWidth,borderTopColor:"rgba(255, 255, 255, 0.2)"},watermarkText:{fontFamily:$.interBold,fontSize:9.5,color:"#38BDF8",letterSpacing:.2},watermarkTime:{fontFamily:$.interSemiBold,fontSize:9.5,color:"#94A3B8"},moreMenuItemIconText:{fontSize:14}});