react-native-ensys-camera-x 1.0.7

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 (506) hide show
  1. package/CustomCamera.podspec +20 -0
  2. package/LICENSE +20 -0
  3. package/README.md +833 -0
  4. package/android/build.gradle +135 -0
  5. package/android/consumer-rules.pro +47 -0
  6. package/android/src/main/AndroidManifest.xml +72 -0
  7. package/android/src/main/java/android/print/PdfPrint.java +51 -0
  8. package/android/src/main/java/com/customcamera/AnimatedImageViewManager.kt +199 -0
  9. package/android/src/main/java/com/customcamera/AudioPlayerView.kt +322 -0
  10. package/android/src/main/java/com/customcamera/AudioRecorder.kt +506 -0
  11. package/android/src/main/java/com/customcamera/BarcodeScannerActivity.kt +361 -0
  12. package/android/src/main/java/com/customcamera/BlurBackgroundView.kt +199 -0
  13. package/android/src/main/java/com/customcamera/CacheCleanupManager.kt +386 -0
  14. package/android/src/main/java/com/customcamera/CameraAspectRatioMode.kt +77 -0
  15. package/android/src/main/java/com/customcamera/CameraAsset.kt +211 -0
  16. package/android/src/main/java/com/customcamera/CameraTheme.kt +479 -0
  17. package/android/src/main/java/com/customcamera/CompressionCacheStore.kt +504 -0
  18. package/android/src/main/java/com/customcamera/CompressionFileNameUtils.kt +7 -0
  19. package/android/src/main/java/com/customcamera/CompressionProfile.kt +195 -0
  20. package/android/src/main/java/com/customcamera/CustomCameraActivity.kt +7291 -0
  21. package/android/src/main/java/com/customcamera/CustomCameraFileProvider.kt +9 -0
  22. package/android/src/main/java/com/customcamera/CustomCameraModule.kt +2479 -0
  23. package/android/src/main/java/com/customcamera/CustomCameraPackage.kt +53 -0
  24. package/android/src/main/java/com/customcamera/DisplayUtils.kt +9 -0
  25. package/android/src/main/java/com/customcamera/DocumentPreviewView.kt +846 -0
  26. package/android/src/main/java/com/customcamera/DrawingView.kt +214 -0
  27. package/android/src/main/java/com/customcamera/EmojiPickerData.kt +228 -0
  28. package/android/src/main/java/com/customcamera/FilterStripAdapter.kt +158 -0
  29. package/android/src/main/java/com/customcamera/GifSupport.kt +215 -0
  30. package/android/src/main/java/com/customcamera/GlobalAudioPlayer.kt +320 -0
  31. package/android/src/main/java/com/customcamera/ImageExporter.kt +1394 -0
  32. package/android/src/main/java/com/customcamera/ImageFormatSupport.kt +163 -0
  33. package/android/src/main/java/com/customcamera/Localization.kt +206 -0
  34. package/android/src/main/java/com/customcamera/MediaAdapters.kt +758 -0
  35. package/android/src/main/java/com/customcamera/MediaCacheManager.kt +782 -0
  36. package/android/src/main/java/com/customcamera/MediaExportFormats.kt +201 -0
  37. package/android/src/main/java/com/customcamera/MediaFileIo.kt +310 -0
  38. package/android/src/main/java/com/customcamera/MediaMetadataStore.kt +494 -0
  39. package/android/src/main/java/com/customcamera/MediaPreviewEditor.kt +14865 -0
  40. package/android/src/main/java/com/customcamera/MediaPublisher.kt +423 -0
  41. package/android/src/main/java/com/customcamera/MediaStorageWorkflow.kt +722 -0
  42. package/android/src/main/java/com/customcamera/MediaStoreRepository.kt +378 -0
  43. package/android/src/main/java/com/customcamera/MediaThumbnailView.kt +286 -0
  44. package/android/src/main/java/com/customcamera/MediaUtils.kt +37 -0
  45. package/android/src/main/java/com/customcamera/NativeVideoViewManager.kt +845 -0
  46. package/android/src/main/java/com/customcamera/OfficeDocumentConverter.kt +2791 -0
  47. package/android/src/main/java/com/customcamera/PendingCaptureCrops.kt +88 -0
  48. package/android/src/main/java/com/customcamera/PowerPointPreview.kt +4077 -0
  49. package/android/src/main/java/com/customcamera/RecentPickerStore.kt +74 -0
  50. package/android/src/main/java/com/customcamera/SecureFileEraser.kt +411 -0
  51. package/android/src/main/java/com/customcamera/SecureKeyModule.kt +88 -0
  52. package/android/src/main/java/com/customcamera/SecureMediaDeleter.kt +493 -0
  53. package/android/src/main/java/com/customcamera/StickerPickerData.kt +107 -0
  54. package/android/src/main/java/com/customcamera/SvgDrawable.kt +175 -0
  55. package/android/src/main/java/com/customcamera/SvgIconViewManager.kt +77 -0
  56. package/android/src/main/java/com/customcamera/TextEntryController.kt +553 -0
  57. package/android/src/main/java/com/customcamera/ThumbnailLoader.kt +455 -0
  58. package/android/src/main/java/com/customcamera/UploadService.kt +909 -0
  59. package/android/src/main/java/com/customcamera/VideoEditUtils.kt +210 -0
  60. package/android/src/main/java/com/customcamera/VideoRotationTranscoder.kt +1992 -0
  61. package/android/src/main/java/com/customcamera/gif/AnimatedGifEncoder.kt +473 -0
  62. package/android/src/main/java/com/customcamera/gif/GifDecoder.kt +690 -0
  63. package/android/src/main/java/com/customcamera/gif/GifFramesDrawable.kt +160 -0
  64. package/android/src/main/java/com/customcamera/gif/GifHttp.kt +112 -0
  65. package/android/src/main/java/com/customcamera/gif/GifImageLoader.kt +186 -0
  66. package/android/src/main/java/com/customcamera/gif/GifModels.kt +74 -0
  67. package/android/src/main/java/com/customcamera/gif/GifProvider.kt +49 -0
  68. package/android/src/main/java/com/customcamera/gif/GifProviders.kt +27 -0
  69. package/android/src/main/java/com/customcamera/gif/GifRepository.kt +124 -0
  70. package/android/src/main/java/com/customcamera/gif/GifSafety.kt +33 -0
  71. package/android/src/main/java/com/customcamera/gif/GiphyGifProvider.kt +146 -0
  72. package/android/src/main/java/com/customcamera/gif/LZWEncoder.kt +258 -0
  73. package/android/src/main/java/com/customcamera/gif/NeuQuant.kt +435 -0
  74. package/android/src/main/java/com/customcamera/gif/TenorGifProvider.kt +147 -0
  75. package/android/src/main/res/drawable/bg_brush_selected.xml +5 -0
  76. package/android/src/main/res/drawable/bg_color_swatch.xml +5 -0
  77. package/android/src/main/res/drawable/bg_editor_toolbar.xml +6 -0
  78. package/android/src/main/res/drawable/bg_icon_circle.xml +5 -0
  79. package/android/src/main/res/drawable/bg_icon_circle_light.xml +5 -0
  80. package/android/src/main/res/drawable/bg_mode_tab_active.xml +6 -0
  81. package/android/src/main/res/drawable/bg_pill.xml +6 -0
  82. package/android/src/main/res/drawable/bg_recording_dot.xml +6 -0
  83. package/android/src/main/res/drawable/bg_selection_badge.xml +8 -0
  84. package/android/src/main/res/drawable/bg_send_button.xml +5 -0
  85. package/android/src/main/res/drawable/bg_shutter_inner.xml +5 -0
  86. package/android/src/main/res/drawable/bg_shutter_recording.xml +6 -0
  87. package/android/src/main/res/drawable/bg_shutter_ring.xml +8 -0
  88. package/android/src/main/res/drawable/bg_shutter_video_idle.xml +5 -0
  89. package/android/src/main/res/drawable/bg_thumbnail.xml +9 -0
  90. package/android/src/main/res/drawable/ic_aspect_ratio.xml +17 -0
  91. package/android/src/main/res/drawable/ic_audio.xml +10 -0
  92. package/android/src/main/res/drawable/ic_back.xml +10 -0
  93. package/android/src/main/res/drawable/ic_brush_medium.xml +12 -0
  94. package/android/src/main/res/drawable/ic_brush_thick.xml +12 -0
  95. package/android/src/main/res/drawable/ic_brush_thin.xml +12 -0
  96. package/android/src/main/res/drawable/ic_check.xml +17 -0
  97. package/android/src/main/res/drawable/ic_chevron_down.xml +10 -0
  98. package/android/src/main/res/drawable/ic_chevron_up.xml +13 -0
  99. package/android/src/main/res/drawable/ic_clear_drawing.xml +10 -0
  100. package/android/src/main/res/drawable/ic_close.xml +10 -0
  101. package/android/src/main/res/drawable/ic_cover.xml +9 -0
  102. package/android/src/main/res/drawable/ic_crop.xml +10 -0
  103. package/android/src/main/res/drawable/ic_delete.xml +9 -0
  104. package/android/src/main/res/drawable/ic_document.xml +10 -0
  105. package/android/src/main/res/drawable/ic_done.xml +10 -0
  106. package/android/src/main/res/drawable/ic_download.xml +10 -0
  107. package/android/src/main/res/drawable/ic_emoji.xml +10 -0
  108. package/android/src/main/res/drawable/ic_filter.xml +10 -0
  109. package/android/src/main/res/drawable/ic_flash_auto.xml +7 -0
  110. package/android/src/main/res/drawable/ic_flash_off.xml +23 -0
  111. package/android/src/main/res/drawable/ic_flash_on.xml +16 -0
  112. package/android/src/main/res/drawable/ic_flip.xml +15 -0
  113. package/android/src/main/res/drawable/ic_gallery.xml +10 -0
  114. package/android/src/main/res/drawable/ic_gif.xml +24 -0
  115. package/android/src/main/res/drawable/ic_lock.xml +19 -0
  116. package/android/src/main/res/drawable/ic_lock_open.xml +22 -0
  117. package/android/src/main/res/drawable/ic_marker.xml +10 -0
  118. package/android/src/main/res/drawable/ic_more_vert.xml +18 -0
  119. package/android/src/main/res/drawable/ic_overlay_close.xml +19 -0
  120. package/android/src/main/res/drawable/ic_overlay_resize.xml +18 -0
  121. package/android/src/main/res/drawable/ic_pause.xml +10 -0
  122. package/android/src/main/res/drawable/ic_photo_mode.xml +10 -0
  123. package/android/src/main/res/drawable/ic_play.xml +10 -0
  124. package/android/src/main/res/drawable/ic_redo.xml +10 -0
  125. package/android/src/main/res/drawable/ic_rotate.xml +9 -0
  126. package/android/src/main/res/drawable/ic_send.xml +10 -0
  127. package/android/src/main/res/drawable/ic_share.xml +10 -0
  128. package/android/src/main/res/drawable/ic_stat_upload.xml +10 -0
  129. package/android/src/main/res/drawable/ic_sticker.xml +24 -0
  130. package/android/src/main/res/drawable/ic_text.xml +10 -0
  131. package/android/src/main/res/drawable/ic_text_align_center.xml +11 -0
  132. package/android/src/main/res/drawable/ic_text_align_left.xml +11 -0
  133. package/android/src/main/res/drawable/ic_text_align_right.xml +11 -0
  134. package/android/src/main/res/drawable/ic_text_bg.xml +11 -0
  135. package/android/src/main/res/drawable/ic_trim.xml +23 -0
  136. package/android/src/main/res/drawable/ic_undo.xml +10 -0
  137. package/android/src/main/res/drawable/ic_video_mode.xml +10 -0
  138. package/android/src/main/res/drawable/ic_video_note.xml +13 -0
  139. package/android/src/main/res/drawable/ic_volume_off.xml +9 -0
  140. package/android/src/main/res/drawable/ic_volume_on.xml +9 -0
  141. package/android/src/main/res/drawable/sticker_heart.xml +9 -0
  142. package/android/src/main/res/drawable/sticker_smile.xml +9 -0
  143. package/android/src/main/res/drawable/sticker_star.xml +9 -0
  144. package/android/src/main/res/drawable/sticker_thumbsup.xml +9 -0
  145. package/android/src/main/res/values/colors.xml +34 -0
  146. package/android/src/main/res/values/ids.xml +15 -0
  147. package/android/src/main/res/values/strings.xml +15 -0
  148. package/android/src/main/res/values/styles.xml +20 -0
  149. package/android/src/main/res/xml/file_paths.xml +34 -0
  150. package/ios/CustomCamera.h +5 -0
  151. package/ios/CustomCamera.mm +214 -0
  152. package/lib/module/AudioPlayerContext.js +233 -0
  153. package/lib/module/AudioPlayerContext.js.map +1 -0
  154. package/lib/module/CameraPreview.js +304 -0
  155. package/lib/module/CameraPreview.js.map +1 -0
  156. package/lib/module/NativeAnimatedImageView.js +41 -0
  157. package/lib/module/NativeAnimatedImageView.js.map +1 -0
  158. package/lib/module/NativeAudioPlayerView.js +33 -0
  159. package/lib/module/NativeAudioPlayerView.js.map +1 -0
  160. package/lib/module/NativeBlurView.js +35 -0
  161. package/lib/module/NativeBlurView.js.map +1 -0
  162. package/lib/module/NativeCustomCamera.js +128 -0
  163. package/lib/module/NativeCustomCamera.js.map +1 -0
  164. package/lib/module/NativeCustomCamera.web.js +143 -0
  165. package/lib/module/NativeCustomCamera.web.js.map +1 -0
  166. package/lib/module/NativeCustomVideoView.js +5 -0
  167. package/lib/module/NativeCustomVideoView.js.map +1 -0
  168. package/lib/module/NativeDocumentPreviewView.js +156 -0
  169. package/lib/module/NativeDocumentPreviewView.js.map +1 -0
  170. package/lib/module/NativeMediaThumbnailView.js +110 -0
  171. package/lib/module/NativeMediaThumbnailView.js.map +1 -0
  172. package/lib/module/NativeSvgIcon.js +32 -0
  173. package/lib/module/NativeSvgIcon.js.map +1 -0
  174. package/lib/module/ResponsivePreviewContainer.js +171 -0
  175. package/lib/module/ResponsivePreviewContainer.js.map +1 -0
  176. package/lib/module/accessibility.js +61 -0
  177. package/lib/module/accessibility.js.map +1 -0
  178. package/lib/module/config.js +352 -0
  179. package/lib/module/config.js.map +1 -0
  180. package/lib/module/cpuOptimization.js +296 -0
  181. package/lib/module/cpuOptimization.js.map +1 -0
  182. package/lib/module/db/DatabaseManager.js +191 -0
  183. package/lib/module/db/DatabaseManager.js.map +1 -0
  184. package/lib/module/db/MediaMapper.js +284 -0
  185. package/lib/module/db/MediaMapper.js.map +1 -0
  186. package/lib/module/db/MediaRepository.js +242 -0
  187. package/lib/module/db/MediaRepository.js.map +1 -0
  188. package/lib/module/db/index.js +41 -0
  189. package/lib/module/db/index.js.map +1 -0
  190. package/lib/module/db/migrations.js +180 -0
  191. package/lib/module/db/migrations.js.map +1 -0
  192. package/lib/module/db/react-native-sqlcipher.d.js +2 -0
  193. package/lib/module/db/react-native-sqlcipher.d.js.map +1 -0
  194. package/lib/module/db/secureKey.js +87 -0
  195. package/lib/module/db/secureKey.js.map +1 -0
  196. package/lib/module/db/types.js +57 -0
  197. package/lib/module/db/types.js.map +1 -0
  198. package/lib/module/db/useMediaDatabase.js +123 -0
  199. package/lib/module/db/useMediaDatabase.js.map +1 -0
  200. package/lib/module/defaultIcons.js +2259 -0
  201. package/lib/module/defaultIcons.js.map +1 -0
  202. package/lib/module/deviceCapabilities.js +408 -0
  203. package/lib/module/deviceCapabilities.js.map +1 -0
  204. package/lib/module/errors.js +267 -0
  205. package/lib/module/errors.js.map +1 -0
  206. package/lib/module/iconConfig.js +796 -0
  207. package/lib/module/iconConfig.js.map +1 -0
  208. package/lib/module/icons.js +514 -0
  209. package/lib/module/icons.js.map +1 -0
  210. package/lib/module/index.js +251 -0
  211. package/lib/module/index.js.map +1 -0
  212. package/lib/module/jest-globals.d.js +2 -0
  213. package/lib/module/jest-globals.d.js.map +1 -0
  214. package/lib/module/library/MediaLibrary.js +107 -0
  215. package/lib/module/library/MediaLibrary.js.map +1 -0
  216. package/lib/module/library/MediaLibraryScreen.js +2597 -0
  217. package/lib/module/library/MediaLibraryScreen.js.map +1 -0
  218. package/lib/module/library/components/AudioPreview.js +74 -0
  219. package/lib/module/library/components/AudioPreview.js.map +1 -0
  220. package/lib/module/library/components/DocumentPreview.js +331 -0
  221. package/lib/module/library/components/DocumentPreview.js.map +1 -0
  222. package/lib/module/library/components/ExpandableFab.js +343 -0
  223. package/lib/module/library/components/ExpandableFab.js.map +1 -0
  224. package/lib/module/library/components/FileTiles.js +251 -0
  225. package/lib/module/library/components/FileTiles.js.map +1 -0
  226. package/lib/module/library/components/ImagePreview.js +70 -0
  227. package/lib/module/library/components/ImagePreview.js.map +1 -0
  228. package/lib/module/library/components/MediaMetadataHeader.js +175 -0
  229. package/lib/module/library/components/MediaMetadataHeader.js.map +1 -0
  230. package/lib/module/library/components/RecordAudioScreen.js +816 -0
  231. package/lib/module/library/components/RecordAudioScreen.js.map +1 -0
  232. package/lib/module/library/components/VideoPreview.js +453 -0
  233. package/lib/module/library/components/VideoPreview.js.map +1 -0
  234. package/lib/module/library/components/ViewerCounter.js +55 -0
  235. package/lib/module/library/components/ViewerCounter.js.map +1 -0
  236. package/lib/module/library/compressionEstimate.js +507 -0
  237. package/lib/module/library/compressionEstimate.js.map +1 -0
  238. package/lib/module/library/fileMetadata.js +196 -0
  239. package/lib/module/library/fileMetadata.js.map +1 -0
  240. package/lib/module/library/index.js +42 -0
  241. package/lib/module/library/index.js.map +1 -0
  242. package/lib/module/library/libraryIconRegistry.js +69 -0
  243. package/lib/module/library/libraryIconRegistry.js.map +1 -0
  244. package/lib/module/library/libraryIcons.js +858 -0
  245. package/lib/module/library/libraryIcons.js.map +1 -0
  246. package/lib/module/library/localizedFormat.js +181 -0
  247. package/lib/module/library/localizedFormat.js.map +1 -0
  248. package/lib/module/library/palette.js +225 -0
  249. package/lib/module/library/palette.js.map +1 -0
  250. package/lib/module/library/responsive.js +53 -0
  251. package/lib/module/library/responsive.js.map +1 -0
  252. package/lib/module/locales.js +416 -0
  253. package/lib/module/locales.js.map +1 -0
  254. package/lib/module/localization.js +1064 -0
  255. package/lib/module/localization.js.map +1 -0
  256. package/lib/module/logger.js +20 -0
  257. package/lib/module/logger.js.map +1 -0
  258. package/lib/module/lowMemoryCache.js +206 -0
  259. package/lib/module/lowMemoryCache.js.map +1 -0
  260. package/lib/module/mediaHistory.js +33 -0
  261. package/lib/module/mediaHistory.js.map +1 -0
  262. package/lib/module/mediaStorageService.js +402 -0
  263. package/lib/module/mediaStorageService.js.map +1 -0
  264. package/lib/module/memory.js +79 -0
  265. package/lib/module/memory.js.map +1 -0
  266. package/lib/module/nativeActions.js +307 -0
  267. package/lib/module/nativeActions.js.map +1 -0
  268. package/lib/module/nativeComponentSupport.js +61 -0
  269. package/lib/module/nativeComponentSupport.js.map +1 -0
  270. package/lib/module/networkPerformance.js +24 -0
  271. package/lib/module/networkPerformance.js.map +1 -0
  272. package/lib/module/package.json +1 -0
  273. package/lib/module/performance.js +104 -0
  274. package/lib/module/performance.js.map +1 -0
  275. package/lib/module/performanceMonitor.js +155 -0
  276. package/lib/module/performanceMonitor.js.map +1 -0
  277. package/lib/module/permissions.js +370 -0
  278. package/lib/module/permissions.js.map +1 -0
  279. package/lib/module/rendering.js +40 -0
  280. package/lib/module/rendering.js.map +1 -0
  281. package/lib/module/security.js +18 -0
  282. package/lib/module/security.js.map +1 -0
  283. package/lib/module/state.js +266 -0
  284. package/lib/module/state.js.map +1 -0
  285. package/lib/module/storage.js +400 -0
  286. package/lib/module/storage.js.map +1 -0
  287. package/lib/module/theme.js +390 -0
  288. package/lib/module/theme.js.map +1 -0
  289. package/lib/module/types.js +4 -0
  290. package/lib/module/types.js.map +1 -0
  291. package/lib/module/utils.js +115 -0
  292. package/lib/module/utils.js.map +1 -0
  293. package/lib/module/validation.js +288 -0
  294. package/lib/module/validation.js.map +1 -0
  295. package/lib/typescript/package.json +1 -0
  296. package/lib/typescript/src/AudioPlayerContext.d.ts +27 -0
  297. package/lib/typescript/src/AudioPlayerContext.d.ts.map +1 -0
  298. package/lib/typescript/src/CameraPreview.d.ts +13 -0
  299. package/lib/typescript/src/CameraPreview.d.ts.map +1 -0
  300. package/lib/typescript/src/NativeAnimatedImageView.d.ts +33 -0
  301. package/lib/typescript/src/NativeAnimatedImageView.d.ts.map +1 -0
  302. package/lib/typescript/src/NativeAudioPlayerView.d.ts +12 -0
  303. package/lib/typescript/src/NativeAudioPlayerView.d.ts.map +1 -0
  304. package/lib/typescript/src/NativeBlurView.d.ts +12 -0
  305. package/lib/typescript/src/NativeBlurView.d.ts.map +1 -0
  306. package/lib/typescript/src/NativeCustomCamera.d.ts +167 -0
  307. package/lib/typescript/src/NativeCustomCamera.d.ts.map +1 -0
  308. package/lib/typescript/src/NativeCustomCamera.web.d.ts +47 -0
  309. package/lib/typescript/src/NativeCustomCamera.web.d.ts.map +1 -0
  310. package/lib/typescript/src/NativeCustomVideoView.d.ts +30 -0
  311. package/lib/typescript/src/NativeCustomVideoView.d.ts.map +1 -0
  312. package/lib/typescript/src/NativeDocumentPreviewView.d.ts +48 -0
  313. package/lib/typescript/src/NativeDocumentPreviewView.d.ts.map +1 -0
  314. package/lib/typescript/src/NativeMediaThumbnailView.d.ts +54 -0
  315. package/lib/typescript/src/NativeMediaThumbnailView.d.ts.map +1 -0
  316. package/lib/typescript/src/NativeSvgIcon.d.ts +25 -0
  317. package/lib/typescript/src/NativeSvgIcon.d.ts.map +1 -0
  318. package/lib/typescript/src/ResponsivePreviewContainer.d.ts +92 -0
  319. package/lib/typescript/src/ResponsivePreviewContainer.d.ts.map +1 -0
  320. package/lib/typescript/src/accessibility.d.ts +20 -0
  321. package/lib/typescript/src/accessibility.d.ts.map +1 -0
  322. package/lib/typescript/src/config.d.ts +145 -0
  323. package/lib/typescript/src/config.d.ts.map +1 -0
  324. package/lib/typescript/src/cpuOptimization.d.ts +63 -0
  325. package/lib/typescript/src/cpuOptimization.d.ts.map +1 -0
  326. package/lib/typescript/src/db/DatabaseManager.d.ts +48 -0
  327. package/lib/typescript/src/db/DatabaseManager.d.ts.map +1 -0
  328. package/lib/typescript/src/db/MediaMapper.d.ts +77 -0
  329. package/lib/typescript/src/db/MediaMapper.d.ts.map +1 -0
  330. package/lib/typescript/src/db/MediaRepository.d.ts +66 -0
  331. package/lib/typescript/src/db/MediaRepository.d.ts.map +1 -0
  332. package/lib/typescript/src/db/index.d.ts +23 -0
  333. package/lib/typescript/src/db/index.d.ts.map +1 -0
  334. package/lib/typescript/src/db/migrations.d.ts +31 -0
  335. package/lib/typescript/src/db/migrations.d.ts.map +1 -0
  336. package/lib/typescript/src/db/secureKey.d.ts +10 -0
  337. package/lib/typescript/src/db/secureKey.d.ts.map +1 -0
  338. package/lib/typescript/src/db/types.d.ts +115 -0
  339. package/lib/typescript/src/db/types.d.ts.map +1 -0
  340. package/lib/typescript/src/db/useMediaDatabase.d.ts +41 -0
  341. package/lib/typescript/src/db/useMediaDatabase.d.ts.map +1 -0
  342. package/lib/typescript/src/defaultIcons.d.ts +139 -0
  343. package/lib/typescript/src/defaultIcons.d.ts.map +1 -0
  344. package/lib/typescript/src/deviceCapabilities.d.ts +92 -0
  345. package/lib/typescript/src/deviceCapabilities.d.ts.map +1 -0
  346. package/lib/typescript/src/errors.d.ts +95 -0
  347. package/lib/typescript/src/errors.d.ts.map +1 -0
  348. package/lib/typescript/src/iconConfig.d.ts +176 -0
  349. package/lib/typescript/src/iconConfig.d.ts.map +1 -0
  350. package/lib/typescript/src/icons.d.ts +217 -0
  351. package/lib/typescript/src/icons.d.ts.map +1 -0
  352. package/lib/typescript/src/index.d.ts +104 -0
  353. package/lib/typescript/src/index.d.ts.map +1 -0
  354. package/lib/typescript/src/library/MediaLibrary.d.ts +57 -0
  355. package/lib/typescript/src/library/MediaLibrary.d.ts.map +1 -0
  356. package/lib/typescript/src/library/MediaLibraryScreen.d.ts +51 -0
  357. package/lib/typescript/src/library/MediaLibraryScreen.d.ts.map +1 -0
  358. package/lib/typescript/src/library/components/AudioPreview.d.ts +6 -0
  359. package/lib/typescript/src/library/components/AudioPreview.d.ts.map +1 -0
  360. package/lib/typescript/src/library/components/DocumentPreview.d.ts +10 -0
  361. package/lib/typescript/src/library/components/DocumentPreview.d.ts.map +1 -0
  362. package/lib/typescript/src/library/components/ExpandableFab.d.ts +39 -0
  363. package/lib/typescript/src/library/components/ExpandableFab.d.ts.map +1 -0
  364. package/lib/typescript/src/library/components/FileTiles.d.ts +8 -0
  365. package/lib/typescript/src/library/components/FileTiles.d.ts.map +1 -0
  366. package/lib/typescript/src/library/components/ImagePreview.d.ts +5 -0
  367. package/lib/typescript/src/library/components/ImagePreview.d.ts.map +1 -0
  368. package/lib/typescript/src/library/components/MediaMetadataHeader.d.ts +16 -0
  369. package/lib/typescript/src/library/components/MediaMetadataHeader.d.ts.map +1 -0
  370. package/lib/typescript/src/library/components/RecordAudioScreen.d.ts +8 -0
  371. package/lib/typescript/src/library/components/RecordAudioScreen.d.ts.map +1 -0
  372. package/lib/typescript/src/library/components/VideoPreview.d.ts +20 -0
  373. package/lib/typescript/src/library/components/VideoPreview.d.ts.map +1 -0
  374. package/lib/typescript/src/library/components/ViewerCounter.d.ts +13 -0
  375. package/lib/typescript/src/library/components/ViewerCounter.d.ts.map +1 -0
  376. package/lib/typescript/src/library/compressionEstimate.d.ts +313 -0
  377. package/lib/typescript/src/library/compressionEstimate.d.ts.map +1 -0
  378. package/lib/typescript/src/library/fileMetadata.d.ts +33 -0
  379. package/lib/typescript/src/library/fileMetadata.d.ts.map +1 -0
  380. package/lib/typescript/src/library/index.d.ts +40 -0
  381. package/lib/typescript/src/library/index.d.ts.map +1 -0
  382. package/lib/typescript/src/library/libraryIconRegistry.d.ts +35 -0
  383. package/lib/typescript/src/library/libraryIconRegistry.d.ts.map +1 -0
  384. package/lib/typescript/src/library/libraryIcons.d.ts +85 -0
  385. package/lib/typescript/src/library/libraryIcons.d.ts.map +1 -0
  386. package/lib/typescript/src/library/localizedFormat.d.ts +49 -0
  387. package/lib/typescript/src/library/localizedFormat.d.ts.map +1 -0
  388. package/lib/typescript/src/library/palette.d.ts +104 -0
  389. package/lib/typescript/src/library/palette.d.ts.map +1 -0
  390. package/lib/typescript/src/library/responsive.d.ts +15 -0
  391. package/lib/typescript/src/library/responsive.d.ts.map +1 -0
  392. package/lib/typescript/src/locales.d.ts +103 -0
  393. package/lib/typescript/src/locales.d.ts.map +1 -0
  394. package/lib/typescript/src/localization.d.ts +1051 -0
  395. package/lib/typescript/src/localization.d.ts.map +1 -0
  396. package/lib/typescript/src/logger.d.ts +4 -0
  397. package/lib/typescript/src/logger.d.ts.map +1 -0
  398. package/lib/typescript/src/lowMemoryCache.d.ts +64 -0
  399. package/lib/typescript/src/lowMemoryCache.d.ts.map +1 -0
  400. package/lib/typescript/src/mediaHistory.d.ts +3 -0
  401. package/lib/typescript/src/mediaHistory.d.ts.map +1 -0
  402. package/lib/typescript/src/mediaStorageService.d.ts +155 -0
  403. package/lib/typescript/src/mediaStorageService.d.ts.map +1 -0
  404. package/lib/typescript/src/memory.d.ts +21 -0
  405. package/lib/typescript/src/memory.d.ts.map +1 -0
  406. package/lib/typescript/src/nativeActions.d.ts +174 -0
  407. package/lib/typescript/src/nativeActions.d.ts.map +1 -0
  408. package/lib/typescript/src/nativeComponentSupport.d.ts +30 -0
  409. package/lib/typescript/src/nativeComponentSupport.d.ts.map +1 -0
  410. package/lib/typescript/src/networkPerformance.d.ts +12 -0
  411. package/lib/typescript/src/networkPerformance.d.ts.map +1 -0
  412. package/lib/typescript/src/performance.d.ts +32 -0
  413. package/lib/typescript/src/performance.d.ts.map +1 -0
  414. package/lib/typescript/src/performanceMonitor.d.ts +45 -0
  415. package/lib/typescript/src/performanceMonitor.d.ts.map +1 -0
  416. package/lib/typescript/src/permissions.d.ts +132 -0
  417. package/lib/typescript/src/permissions.d.ts.map +1 -0
  418. package/lib/typescript/src/rendering.d.ts +9 -0
  419. package/lib/typescript/src/rendering.d.ts.map +1 -0
  420. package/lib/typescript/src/security.d.ts +6 -0
  421. package/lib/typescript/src/security.d.ts.map +1 -0
  422. package/lib/typescript/src/state.d.ts +102 -0
  423. package/lib/typescript/src/state.d.ts.map +1 -0
  424. package/lib/typescript/src/storage.d.ts +117 -0
  425. package/lib/typescript/src/storage.d.ts.map +1 -0
  426. package/lib/typescript/src/theme.d.ts +15 -0
  427. package/lib/typescript/src/theme.d.ts.map +1 -0
  428. package/lib/typescript/src/types.d.ts +802 -0
  429. package/lib/typescript/src/types.d.ts.map +1 -0
  430. package/lib/typescript/src/utils.d.ts +50 -0
  431. package/lib/typescript/src/utils.d.ts.map +1 -0
  432. package/lib/typescript/src/validation.d.ts +52 -0
  433. package/lib/typescript/src/validation.d.ts.map +1 -0
  434. package/package.json +204 -0
  435. package/react-native.config.js +17 -0
  436. package/src/AudioPlayerContext.tsx +220 -0
  437. package/src/CameraPreview.tsx +352 -0
  438. package/src/NativeAnimatedImageView.tsx +71 -0
  439. package/src/NativeAudioPlayerView.tsx +39 -0
  440. package/src/NativeBlurView.tsx +40 -0
  441. package/src/NativeCustomCamera.ts +305 -0
  442. package/src/NativeCustomCamera.web.ts +192 -0
  443. package/src/NativeCustomVideoView.ts +30 -0
  444. package/src/NativeDocumentPreviewView.tsx +196 -0
  445. package/src/NativeMediaThumbnailView.tsx +167 -0
  446. package/src/NativeSvgIcon.tsx +46 -0
  447. package/src/ResponsivePreviewContainer.tsx +227 -0
  448. package/src/accessibility.ts +80 -0
  449. package/src/config.ts +406 -0
  450. package/src/cpuOptimization.ts +365 -0
  451. package/src/db/DatabaseManager.ts +212 -0
  452. package/src/db/MediaMapper.ts +377 -0
  453. package/src/db/MediaRepository.ts +313 -0
  454. package/src/db/index.ts +73 -0
  455. package/src/db/migrations.ts +222 -0
  456. package/src/db/react-native-sqlcipher.d.ts +76 -0
  457. package/src/db/secureKey.ts +100 -0
  458. package/src/db/types.ts +123 -0
  459. package/src/db/useMediaDatabase.ts +191 -0
  460. package/src/defaultIcons.tsx +2390 -0
  461. package/src/deviceCapabilities.ts +438 -0
  462. package/src/errors.ts +350 -0
  463. package/src/iconConfig.tsx +962 -0
  464. package/src/icons.tsx +788 -0
  465. package/src/index.tsx +763 -0
  466. package/src/jest-globals.d.ts +9 -0
  467. package/src/library/MediaLibrary.tsx +141 -0
  468. package/src/library/MediaLibraryScreen.tsx +3003 -0
  469. package/src/library/components/AudioPreview.tsx +73 -0
  470. package/src/library/components/DocumentPreview.tsx +361 -0
  471. package/src/library/components/ExpandableFab.tsx +342 -0
  472. package/src/library/components/FileTiles.tsx +252 -0
  473. package/src/library/components/ImagePreview.tsx +72 -0
  474. package/src/library/components/MediaMetadataHeader.tsx +208 -0
  475. package/src/library/components/RecordAudioScreen.tsx +845 -0
  476. package/src/library/components/VideoPreview.tsx +478 -0
  477. package/src/library/components/ViewerCounter.tsx +71 -0
  478. package/src/library/compressionEstimate.ts +662 -0
  479. package/src/library/fileMetadata.ts +212 -0
  480. package/src/library/index.ts +66 -0
  481. package/src/library/libraryIconRegistry.tsx +86 -0
  482. package/src/library/libraryIcons.tsx +928 -0
  483. package/src/library/localizedFormat.ts +207 -0
  484. package/src/library/palette.ts +281 -0
  485. package/src/library/responsive.ts +49 -0
  486. package/src/locales.ts +381 -0
  487. package/src/localization.ts +1947 -0
  488. package/src/logger.ts +20 -0
  489. package/src/lowMemoryCache.ts +218 -0
  490. package/src/mediaHistory.ts +42 -0
  491. package/src/mediaStorageService.ts +546 -0
  492. package/src/memory.ts +102 -0
  493. package/src/nativeActions.ts +422 -0
  494. package/src/nativeComponentSupport.ts +60 -0
  495. package/src/networkPerformance.ts +30 -0
  496. package/src/performance.ts +137 -0
  497. package/src/performanceMonitor.ts +219 -0
  498. package/src/permissions.ts +403 -0
  499. package/src/rendering.ts +47 -0
  500. package/src/security.ts +19 -0
  501. package/src/state.ts +333 -0
  502. package/src/storage.ts +453 -0
  503. package/src/theme.tsx +467 -0
  504. package/src/types.ts +946 -0
  505. package/src/utils.ts +177 -0
  506. package/src/validation.ts +372 -0
@@ -0,0 +1,802 @@
1
+ import type { CameraLanguageProvider, CameraTranslationBundles, CameraTranslationMap } from './localization';
2
+ import type { CameraIconsConfig } from './iconConfig';
3
+ export type CameraPickerOptions = {
4
+ mediaTypes?: 'all' | 'photo' | 'video';
5
+ /** Maximum selectable items. 0 or omitted = unlimited. */
6
+ selectionLimit?: number;
7
+ initialCamera?: 'back' | 'front';
8
+ enableVideo?: boolean;
9
+ enableVideoNotes?: boolean;
10
+ enableFilter?: boolean;
11
+ /**
12
+ * Press and hold the shutter to record video, release to stop (WhatsApp-style). Works in both
13
+ * photo and video mode; a plain tap keeps its usual meaning (photo, or start/stop in video
14
+ * mode). Ignored when video is unavailable (`enableVideo: false` or `mediaTypes: 'photo'`).
15
+ *
16
+ * @default true
17
+ */
18
+ enableHoldToRecord?: boolean;
19
+ /**
20
+ * How long (ms) the shutter must be held before recording starts. Omit or pass 0 to use the
21
+ * platform long-press timeout (500 ms on most devices), which matches every other
22
+ * press-and-hold on the phone. Clamped to 120–2000 ms.
23
+ */
24
+ holdToRecordDelayMs?: number;
25
+ /**
26
+ * Hold-recordings shorter than this (ms) are discarded instead of published — releasing a
27
+ * moment after the hold threshold otherwise produces a useless fragment. Pass 0 to keep every
28
+ * clip. Clamped to 0–5000 ms.
29
+ *
30
+ * @default 1000
31
+ */
32
+ minRecordDurationMs?: number;
33
+ /**
34
+ * Allow sliding up from the shutter onto the lock rail to keep recording hands-free after the
35
+ * finger is lifted. Requires {@link enableHoldToRecord}.
36
+ *
37
+ * @default true
38
+ */
39
+ enableRecordLock?: boolean;
40
+ /**
41
+ * Allow sliding sideways from the shutter onto the cancel pill to abort a hold-recording and
42
+ * discard the clip. Requires {@link enableHoldToRecord}.
43
+ *
44
+ * @default true
45
+ */
46
+ enableRecordCancel?: boolean;
47
+ };
48
+ /**
49
+ * Options for the document and audio pickers (Storage Access Framework on Android).
50
+ */
51
+ export type FilePickerOptions = {
52
+ /** Maximum selectable items. 0 or omitted = unlimited (enables multi-select). */
53
+ selectionLimit?: number;
54
+ /**
55
+ * MIME types to accept, e.g. `['application/pdf']` or `['audio/mpeg']`. Omit to use the
56
+ * picker's sensible defaults (common document formats for the document picker, `audio/*`
57
+ * for the audio picker).
58
+ */
59
+ mimeTypes?: string[];
60
+ };
61
+ /** One photo/video handed to {@link openMediaEditor}. */
62
+ export type MediaEditorItem = {
63
+ /** content:// or file:// uri of the media to edit. Required. */
64
+ uri: string;
65
+ /**
66
+ * Media kind. Omit to let the native side type the uri from its content provider — pass it
67
+ * explicitly when the caller already knows (e.g. straight from a picker result).
68
+ */
69
+ type?: 'photo' | 'video';
70
+ /** Display name, used when the provider doesn't expose one. */
71
+ fileName?: string;
72
+ /** MIME type, used when the content resolver can't type the uri. */
73
+ mimeType?: string;
74
+ };
75
+ /**
76
+ * Options for {@link openMediaEditor} — opening EXISTING photos/videos (typically ones the user
77
+ * just picked from the device gallery) on the camera's own preview/editor screens.
78
+ *
79
+ * Pass a single item inline (`uri`, plus the optional hints) or several through {@link items}, in
80
+ * the order they were picked. One item opens the single-asset image/video editor; several open the
81
+ * multi-media Add More + Send preview — the same rule the capture flow follows.
82
+ */
83
+ export type MediaEditorOptions = (MediaEditorItem & {
84
+ items?: never;
85
+ /** Show the filter tool in the editor. @default true */
86
+ enableFilter?: boolean;
87
+ }) | {
88
+ /** One or more items, in pick order. */
89
+ items: MediaEditorItem[];
90
+ /** Show the filter tool in the editor. @default true */
91
+ enableFilter?: boolean;
92
+ };
93
+ /**
94
+ * Options for {@link openGalleryEditor} — the device-gallery pick that flows straight into the
95
+ * editor. Everything except the picker itself is forwarded to {@link openMediaEditor}.
96
+ */
97
+ export type GalleryEditorOptions = {
98
+ /** Show the filter tool in the editor. @default true */
99
+ enableFilter?: boolean;
100
+ };
101
+ export type CameraAsset = {
102
+ id: string;
103
+ uri: string;
104
+ type: 'photo' | 'video' | 'document' | 'audio';
105
+ fileName?: string;
106
+ mimeType?: string;
107
+ caption?: string;
108
+ width?: number;
109
+ height?: number;
110
+ duration?: number;
111
+ size?: number;
112
+ dateTaken?: number;
113
+ location?: {
114
+ latitude?: number;
115
+ longitude?: number;
116
+ };
117
+ cachePath?: string;
118
+ documentUri?: string;
119
+ isCached?: boolean;
120
+ cacheCreatedAt?: number;
121
+ cacheLastModified?: number;
122
+ originalUri?: string;
123
+ storageLocation?: MediaStorageLocation;
124
+ storageStatus?: MediaStorageStatus;
125
+ publishedAt?: number;
126
+ filteredFrom?: string;
127
+ croppedFrom?: string;
128
+ rotatedFrom?: string;
129
+ needsThumbnail?: boolean;
130
+ previewAspectRatio?: number;
131
+ coverUri?: string;
132
+ captureContainerWidth?: number;
133
+ captureContainerHeight?: number;
134
+ /**
135
+ * True when {@link size} is a DISPLAY convention rather than the exact bytes on disk. Set by the
136
+ * native editor for a compressed video: `size` then holds the proportional figure the compression
137
+ * dropdown and completion toast quote (`original × (1 − percent/100)`), not the produced file's
138
+ * own bytes. {@link refreshAssetMetadata} keeps `size` as-is for such a clip instead of re-statting
139
+ * the file, so the preview / Info panel reads as the proportion the user picked. Everything else
140
+ * (originals, muted/trimmed clips, stills, gallery imports) leaves this unset and re-stats normally.
141
+ */
142
+ sizeIsDisplayEstimate?: boolean;
143
+ };
144
+ export type CameraPickerResult = {
145
+ cancelled: boolean;
146
+ assets: CameraAsset[];
147
+ };
148
+ export type ImageCropOptions = {
149
+ width?: number;
150
+ height?: number;
151
+ x?: number;
152
+ y?: number;
153
+ };
154
+ export type FilterType = 'none' | 'grayscale' | 'sepia' | 'vintage' | 'blur';
155
+ export type FlashMode = 'off' | 'on' | 'auto' | 'torch';
156
+ export type FaceEffect = 'none' | 'dog' | 'cat' | 'glasses' | 'hat';
157
+ export type CameraTheme = 'default' | 'dark' | 'light' | 'minimal';
158
+ export type CameraThemePreset = CameraTheme;
159
+ export type CameraThemePalette = {
160
+ background: string;
161
+ surface: string;
162
+ surfaceMuted: string;
163
+ surfaceElevated: string;
164
+ primary: string;
165
+ primaryMuted: string;
166
+ primaryContrast: string;
167
+ text: string;
168
+ textMuted: string;
169
+ textSecondary: string;
170
+ border: string;
171
+ borderStrong: string;
172
+ overlay: string;
173
+ overlayStrong: string;
174
+ accent: string;
175
+ success: string;
176
+ error: string;
177
+ warning: string;
178
+ };
179
+ /**
180
+ * Named font weights. Every text style in the plugin reads its `fontWeight`
181
+ * from these tokens — components never hardcode a weight string.
182
+ */
183
+ export type CameraFontWeight = 'normal' | 'bold' | '100' | '200' | '300' | '400' | '500' | '600' | '700' | '800' | '900';
184
+ export type CameraThemeTypography = {
185
+ fontFamily: string;
186
+ headingSize: number;
187
+ bodySize: number;
188
+ captionSize: number;
189
+ buttonSize: number;
190
+ /** Named font weights — the single source of truth for `fontWeight` styles. */
191
+ fontWeights: {
192
+ regular: CameraFontWeight;
193
+ medium: CameraFontWeight;
194
+ semibold: CameraFontWeight;
195
+ bold: CameraFontWeight;
196
+ };
197
+ };
198
+ export type CameraThemeSpacing = {
199
+ xs: number;
200
+ sm: number;
201
+ md: number;
202
+ lg: number;
203
+ xl: number;
204
+ xxl: number;
205
+ };
206
+ export type CameraThemeBorderRadius = {
207
+ sm: number;
208
+ md: number;
209
+ lg: number;
210
+ xl: number;
211
+ pill: number;
212
+ circle: number;
213
+ };
214
+ export type CameraThemeShadow = {
215
+ color: string;
216
+ opacity: number;
217
+ radius: number;
218
+ offset: {
219
+ width: number;
220
+ height: number;
221
+ };
222
+ };
223
+ export type CameraThemeCameraPreviewStyles = {
224
+ background: string;
225
+ overlay: string;
226
+ placeholderText: string;
227
+ loadingText: string;
228
+ controlButtonBackground: string;
229
+ controlButtonText: string;
230
+ captureButtonBackground: string;
231
+ captureButtonInnerBorder: string;
232
+ closeButtonBackground: string;
233
+ closeButtonText: string;
234
+ modeIndicatorBackground: string;
235
+ modeIndicatorText: string;
236
+ controlButtonSize: number;
237
+ controlIconSize: number;
238
+ controlButtonTextSize: number;
239
+ captureButtonSize: number;
240
+ captureButtonInnerSize: number;
241
+ captureButtonBorderWidth: number;
242
+ closeButtonSize: number;
243
+ closeIconSize: number;
244
+ closeButtonTextSize: number;
245
+ modeIndicatorRadius: number;
246
+ modeIndicatorPaddingVertical: number;
247
+ modeIndicatorPaddingHorizontal: number;
248
+ modeIndicatorIconSize: number;
249
+ modeIndicatorTextSize: number;
250
+ controlsBottomInset: number;
251
+ controlsPaddingHorizontal: number;
252
+ topInset: number;
253
+ sideInset: number;
254
+ placeholderTextSize: number;
255
+ loadingTextSize: number;
256
+ disabledOpacity: number;
257
+ };
258
+ export type CameraThemeResponsivePreviewStyles = {
259
+ background: string;
260
+ borderRadius: number;
261
+ /** Fraction of screen width used for the preview container (stock 0.96). */
262
+ widthRatio: number;
263
+ /** Maximum preview width in logical pixels (stock 720). */
264
+ maxWidth: number;
265
+ /** Maximum fraction of screen height the preview may occupy (stock 0.92). */
266
+ maxHeightRatio: number;
267
+ };
268
+ export type CameraThemeAudioPlayerStyles = {
269
+ containerBackground: string;
270
+ borderColor: string;
271
+ borderRadius: number;
272
+ shadow: CameraThemeShadow;
273
+ progressTrackBackground: string;
274
+ progressFillBackground: string;
275
+ iconButtonBackground: string;
276
+ iconColor: string;
277
+ titleColor: string;
278
+ textColor: string;
279
+ containerBorderWidth: number;
280
+ containerElevation: number;
281
+ progressTrackHeight: number;
282
+ contentPaddingHorizontal: number;
283
+ contentPaddingVertical: number;
284
+ iconButtonSize: number;
285
+ iconButtonRadius: number;
286
+ playIconSize: number;
287
+ closeIconSize: number;
288
+ titleFontSize: number;
289
+ titleFontWeight: CameraFontWeight;
290
+ titleMarginHorizontal: number;
291
+ iconTextSize: number;
292
+ iconTextWeight: CameraFontWeight;
293
+ /** Pressable opacity when the mini-player is touched. */
294
+ activeOpacity: number;
295
+ };
296
+ export type CameraThemeComponentStyles = {
297
+ cameraPreview: CameraThemeCameraPreviewStyles;
298
+ responsivePreviewContainer: CameraThemeResponsivePreviewStyles;
299
+ audioPlayer: CameraThemeAudioPlayerStyles;
300
+ };
301
+ export type CameraThemeComponentStyle = CameraThemeCameraPreviewStyles | CameraThemeResponsivePreviewStyles | CameraThemeAudioPlayerStyles;
302
+ export type CameraThemeConfig = {
303
+ name: CameraThemePreset;
304
+ colors: CameraThemePalette;
305
+ typography: CameraThemeTypography;
306
+ spacing: CameraThemeSpacing;
307
+ borderRadius: CameraThemeBorderRadius;
308
+ shadows: {
309
+ small: CameraThemeShadow;
310
+ medium: CameraThemeShadow;
311
+ };
312
+ components: CameraThemeComponentStyles;
313
+ };
314
+ export type CameraThemeInput = CameraThemePreset | Partial<CameraThemeConfig>;
315
+ /**
316
+ * NATIVE icon layer (low-level).
317
+ *
318
+ * The types in this section ({@link CameraIconName} / {@link CameraIconStyle} /
319
+ * {@link CameraIconConfig}) configure the icons rendered by the NATIVE camera
320
+ * Activity, which is Kotlin UI and physically cannot render React components.
321
+ * They describe Android vector drawables or inline SVG (per-icon tint / size,
322
+ * an optional host `resourceName`, and Android resource-merging).
323
+ *
324
+ * This is a SEPARATE, independent layer from the RN React-component icon
325
+ * registry in `src/icons.tsx` (`CameraIconKey` / `IconComponent` /
326
+ * `CameraIconRegistryConfig`), which renders the icons used by the JS/TS UI
327
+ * surface. The two never share state and are intentionally named to avoid
328
+ * collision — do not conflate `CameraIconName` (native drawables) with
329
+ * `CameraIconKey` (RN registry keys).
330
+ *
331
+ * HOST APPS SHOULD NOT NEED EITHER OF THEM: `src/iconConfig.tsx` puts one
332
+ * catalog of unique `CameraIconId` keys in front of both layers, and
333
+ * `CameraPluginConfig.customIcons` / `setCameraIcons()` is the single documented
334
+ * way to replace an icon. The types here remain public for the low-level escape
335
+ * hatch and for backwards compatibility.
336
+ *
337
+ * Canonical names of every native icon the plugin renders. Each maps 1:1 to a
338
+ * vector drawable in the plugin's Android `res/drawable` folder (`ic_close`,
339
+ * `ic_flip`, …) — except `selectionCheck`, which draws `ic_check`. Host apps can
340
+ * replace any of them via Android resource merging (ship a same-named drawable)
341
+ * and/or tint & size them from JS via {@link CameraIconConfig}.
342
+ */
343
+ export type CameraIconName = 'close' | 'back' | 'done' | 'flip' | 'flash_on' | 'flash_off' | 'flash_auto' | 'gallery' | 'photo_mode' | 'video_mode' | 'video_note' | 'send' | 'crop' | 'rotate' | 'aspect_ratio' | 'filter' | 'sticker' | 'emoji' | 'gif' | 'text' | 'text_bg' | 'text_align_left' | 'text_align_center' | 'text_align_right' | 'marker' | 'brush_thin' | 'brush_medium' | 'brush_thick' | 'undo' | 'redo' | 'clear_drawing' | 'overlay_close' | 'overlay_resize' | 'play' | 'pause' | 'lock' | 'lock_open' | 'chevron_up' | 'chevron_down' | 'more_vert' | 'delete' | 'selectionCheck' | 'document' | 'audio' | 'trim' | 'cover' | 'volume_on' | 'volume_off' | 'download' | 'share' | 'stat_upload';
344
+ /** Per-icon appearance override. Omitted fields keep the built-in defaults. */
345
+ export type CameraIconStyle = {
346
+ /** Tint color applied to the vector drawable (any CSS color string). */
347
+ tintColor?: string;
348
+ /** Rendered size in dp (icons are square). */
349
+ size?: number;
350
+ /**
351
+ * Name of a drawable resource in the HOST app to render instead of the
352
+ * built-in icon (resolved with `Resources.getIdentifier`; falls back to the
353
+ * built-in drawable when not found). Prefer plain resource-merging (shipping
354
+ * a drawable with the plugin's own name) — this is the escape hatch for apps
355
+ * that cannot shadow resource names.
356
+ */
357
+ resourceName?: string;
358
+ /** Inline SVG markup parsed by the native Android icon renderer. */
359
+ svg?: string;
360
+ };
361
+ /**
362
+ * Icon configuration: a global tint applied to every icon plus per-icon
363
+ * overrides. Defaults reproduce the current build exactly (white icons at
364
+ * their existing sizes).
365
+ */
366
+ export type CameraIconConfig = {
367
+ /** Tint applied to all icons unless overridden per icon. */
368
+ tintColor?: string;
369
+ /** Per-icon overrides keyed by {@link CameraIconName}. */
370
+ overrides?: Partial<Record<CameraIconName, CameraIconStyle>>;
371
+ };
372
+ /**
373
+ * Durations (ms) of every animation the native UI runs. Defaults equal the
374
+ * values currently hardcoded in the native views, so leaving this out changes
375
+ * nothing.
376
+ */
377
+ export type CameraAnimationConfig = {
378
+ /** Master switch — `true` sets every duration to 0 (reduced motion). */
379
+ disableAnimations?: boolean;
380
+ /** Shutter press-down/up scale feedback (default 80). */
381
+ shutterPress?: number;
382
+ /** Mode/tab and control fade transitions in the camera screen (default 180). */
383
+ controlsFade?: number;
384
+ /** Gallery strip slide in/out (default 260 in / 220 out). */
385
+ stripSlideIn?: number;
386
+ stripSlideOut?: number;
387
+ /** Selection badge / remove button fades in grids (default 150). */
388
+ selectionFade?: number;
389
+ /** Video poster crossfade when playback starts (default 120). */
390
+ posterFade?: number;
391
+ /** Play/pause glyph flash on tap (default 200 show, 600 fade after 400 delay). */
392
+ playPauseFlash?: number;
393
+ playPauseFadeOut?: number;
394
+ playPauseFadeDelay?: number;
395
+ /** Editor overlay/panel fades (default 250 in / 200 out). */
396
+ overlayFadeIn?: number;
397
+ overlayFadeOut?: number;
398
+ /** Editor sheet/panel slide animations (default 350 / 300). */
399
+ panelSlideIn?: number;
400
+ panelSlideOut?: number;
401
+ /** Toolbar icon state transitions in the editor (default 180). */
402
+ editorIconFade?: number;
403
+ /** Generic small fades (thumb press states etc., default 150). */
404
+ quickFade?: number;
405
+ };
406
+ /**
407
+ * Structural metrics (dp unless noted) of the native UI. Defaults equal the
408
+ * currently hardcoded layout values.
409
+ */
410
+ export type CameraDimensionConfig = {
411
+ /** Camera-screen circular control button diameter. */
412
+ controlButtonSize?: number;
413
+ /** Icon size inside camera-screen control buttons. */
414
+ controlIconSize?: number;
415
+ /** Shutter button outer diameter. */
416
+ shutterSize?: number;
417
+ /** Bottom mode-tab bar height. */
418
+ modeTabHeight?: number;
419
+ /** Recent-media strip thumbnail edge length. */
420
+ stripThumbnailSize?: number;
421
+ /** Gallery grid column count. */
422
+ galleryColumns?: number;
423
+ /** Gallery grid cell spacing. */
424
+ gridSpacing?: number;
425
+ /** Editor toolbar height. */
426
+ editorToolbarHeight?: number;
427
+ /** Editor toolbar icon size. */
428
+ editorIconSize?: number;
429
+ /** Send button diameter in the editor. */
430
+ sendButtonSize?: number;
431
+ /** Selected-media tray thumbnail edge length in the editor. */
432
+ trayThumbnailSize?: number;
433
+ };
434
+ /**
435
+ * Upload notification appearance/wording. Defaults equal the current
436
+ * hardcoded channel ids, names, and texts, so omitting this changes nothing.
437
+ * Channel ids are only applied on first creation (Android caches channels).
438
+ */
439
+ export type UploadNotificationConfig = {
440
+ /** Progress channel id (default `UploadServiceChannel`). */
441
+ progressChannelId?: string;
442
+ /** Progress channel user-visible name. */
443
+ progressChannelName?: string;
444
+ /** Result channel id (default `UploadResultChannel`). */
445
+ resultChannelId?: string;
446
+ /** Result channel user-visible name. */
447
+ resultChannelName?: string;
448
+ /** Accent color for the notification (any CSS color string). */
449
+ accentColor?: string;
450
+ /**
451
+ * Host-app drawable name for the small status icon (must be a plain
452
+ * monochrome vector — adaptive/launcher icons are silently dropped by
453
+ * Android). Falls back to the built-in `ic_stat_upload`.
454
+ */
455
+ smallIconResourceName?: string;
456
+ /** Title while uploading; `{0}` = current file index, `{1}` = total. */
457
+ progressTitle?: string;
458
+ /** Title when every file uploaded successfully. */
459
+ successTitle?: string;
460
+ /** Body when every file uploaded successfully; `{0}` = file count. */
461
+ successText?: string;
462
+ /** Title when one or more uploads failed. */
463
+ failureTitle?: string;
464
+ /** Body when one or more uploads failed; `{0}` = failed count. */
465
+ failureText?: string;
466
+ };
467
+ /**
468
+ * GIF picker configuration for the in-editor "Add GIF" tool.
469
+ *
470
+ * The API key is delivered here (via `setCameraConfig`) rather than as a
471
+ * per-launch option so the secret is set once at app startup and never rides
472
+ * in Intent extras. When `apiKey` is omitted the "Add GIF" button still shows
473
+ * but the picker renders a "not configured" state instead of calling out.
474
+ */
475
+ export type GifPickerConfig = {
476
+ /**
477
+ * Which GIF service to use. `giphy` (default) or `tenor`. GIPHY is the
478
+ * default because Google has announced the Tenor API is being discontinued.
479
+ */
480
+ provider?: 'giphy' | 'tenor';
481
+ /** API key for the selected provider. Required for the picker to fetch GIFs. */
482
+ apiKey?: string;
483
+ };
484
+ /**
485
+ * The full white-label configuration. Every section is optional and
486
+ * deep-merged over built-in defaults that reproduce the current UI exactly.
487
+ */
488
+ export type CameraPluginConfig = {
489
+ theme?: CameraThemeInput;
490
+ /**
491
+ * THE centralized language setting: the host app's currently active language
492
+ * as a BCP-47 tag — `'en'`, `'fr'`, `'pt-BR'`, `'zh-Hans'`, `'ar'` — or a
493
+ * {@link CameraLanguageProvider} that reports it live.
494
+ *
495
+ * The plugin has no language selector of its own; it displays whatever the
496
+ * host is displaying. Set this to the host's active language and pass the
497
+ * matching text through {@link CameraPluginConfig.translations} (or a
498
+ * translate callback via `setCameraLocalization`). Right-to-left layout is
499
+ * derived from the tag, so Arabic and Persian need no extra flag.
500
+ *
501
+ * Pass a provider — `{ get, subscribe }` — to configure this **once**: the
502
+ * plugin then follows every later host language change on its own, across both
503
+ * the React Native screens and the native camera. Pass a plain tag instead and
504
+ * call `configureCameraPlugin({ language })` again (or the lighter
505
+ * `setCameraLanguage(tag)`) on each switch. Either way open plugin screens and
506
+ * the native camera update immediately, with no restart.
507
+ *
508
+ * ```ts
509
+ * configureCameraPlugin({
510
+ * translations: myBundles,
511
+ * language: {
512
+ * get: () => i18n.language,
513
+ * subscribe: (onChange) => {
514
+ * i18n.on('languageChanged', onChange);
515
+ * return () => i18n.off('languageChanged', onChange);
516
+ * },
517
+ * },
518
+ * });
519
+ * ```
520
+ */
521
+ language?: string | CameraLanguageProvider;
522
+ /**
523
+ * Translations for every language the host supports, keyed by language tag:
524
+ * `{ fr: { send: 'Envoyer' }, ar: { send: 'إرسال' } }`.
525
+ *
526
+ * Register these once; switching {@link CameraPluginConfig.language} then
527
+ * picks the right one. Any key a language is missing falls back to
528
+ * {@link CameraPluginConfig.fallbackLanguage}, and then to English.
529
+ */
530
+ translations?: CameraTranslationBundles;
531
+ /** Language used to fill gaps in the active one. Defaults to `'en'`. */
532
+ fallbackLanguage?: string;
533
+ /**
534
+ * Translation overrides for the active language only. Wins over everything in
535
+ * {@link CameraPluginConfig.translations}.
536
+ */
537
+ strings?: CameraTranslationMap;
538
+ /**
539
+ * Force right-to-left layout for native screens.
540
+ *
541
+ * Normally leave this unset: direction follows
542
+ * {@link CameraPluginConfig.language} automatically.
543
+ */
544
+ rtl?: boolean;
545
+ /**
546
+ * THE centralized icon configuration: icon id → your replacement icon.
547
+ *
548
+ * This is the section to customize icons with — one flat map of unique keys
549
+ * that covers both the React Native components and the native camera screen.
550
+ * Any id you leave out keeps the icon the plugin ships. See
551
+ * `CAMERA_ICON_CATALOG` for every available key.
552
+ */
553
+ customIcons?: CameraIconsConfig;
554
+ /**
555
+ * Low-level native drawable settings (global tint plus per-drawable
556
+ * overrides). Prefer {@link CameraPluginConfig.customIcons}, which covers the
557
+ * same ground with unique keys and also reaches the React Native surface;
558
+ * per-icon values set there win over anything set here.
559
+ */
560
+ icons?: CameraIconConfig;
561
+ animations?: CameraAnimationConfig;
562
+ dimensions?: CameraDimensionConfig;
563
+ notifications?: UploadNotificationConfig;
564
+ /** GIF picker provider + API key for the editor's "Add GIF" tool. */
565
+ gif?: GifPickerConfig;
566
+ };
567
+ export type MediaMetadata = {
568
+ uri: string;
569
+ type: 'photo' | 'video';
570
+ width?: number;
571
+ height?: number;
572
+ duration?: number;
573
+ size?: number;
574
+ dateTaken?: number;
575
+ fileName?: string;
576
+ mimeType?: string;
577
+ location?: {
578
+ latitude?: number;
579
+ longitude?: number;
580
+ };
581
+ caption?: string;
582
+ };
583
+ export type PerformanceMetrics = {
584
+ operation: string;
585
+ durationMs: number;
586
+ memoryUsageMb?: number;
587
+ timestamp: number;
588
+ };
589
+ /**
590
+ * Options for starting an audio recording via native MediaRecorder.
591
+ * All fields are optional; sensible defaults are used server-side.
592
+ */
593
+ export type AudioRecordingOptions = {
594
+ /**
595
+ * Output container format.
596
+ * - `'mpeg4'` (default) — AAC in MP4 container (.m4a)
597
+ * - `'aac_adts'` — raw AAC stream (.aac)
598
+ * - `'amr_nb'` — AMR narrow-band (.amr)
599
+ * - `'amr_wb'` — AMR wide-band (.amr)
600
+ * - `'three_gpp'` — AMR/WB in 3GPP container (.3gp)
601
+ */
602
+ outputFormat?: 'mpeg4' | 'aac_adts' | 'amr_nb' | 'amr_wb' | 'three_gpp';
603
+ /**
604
+ * Audio encoder.
605
+ * - `'aac'` (default) — Advanced Audio Coding
606
+ * - `'amr_nb'` — AMR narrow-band
607
+ * - `'amr_wb'` — AMR wide-band
608
+ * - `'he_aac'` — High-Efficiency AAC
609
+ */
610
+ audioEncoder?: 'aac' | 'amr_nb' | 'amr_wb' | 'he_aac';
611
+ /**
612
+ * Audio source for the recording.
613
+ * - `'mic'` (default) — Built-in microphone
614
+ * - `'camcorder'` — Same as camcorder (usually same as mic)
615
+ * - `'voice_recognition'` — Optimised for speech recognition
616
+ * - `'voice_communication'` — Optimised for VoIP
617
+ */
618
+ audioSource?: 'mic' | 'camcorder' | 'voice_recognition' | 'voice_communication';
619
+ /** Encoding bitrate in bits per second (default 128000). */
620
+ bitRate?: number;
621
+ /** Sampling rate in Hz (default 44100). */
622
+ sampleRate?: number;
623
+ /**
624
+ * Custom output file name (without directory). If omitted, a timestamp-based
625
+ * name like `"recording_1234567890.m4a"` is auto-generated.
626
+ */
627
+ fileName?: string;
628
+ /**
629
+ * Interval in milliseconds between amplitude callbacks.
630
+ * 0 (default) = disabled. When >0, the native side emits `onAudioAmplitude`
631
+ * DeviceEvent events at this interval.
632
+ */
633
+ meteringIntervalMs?: number;
634
+ };
635
+ /**
636
+ * Result returned from [startAudioRecording] on success.
637
+ */
638
+ export type AudioRecordingResult = {
639
+ /** Absolute file path to the recording on disk. */
640
+ filePath: string;
641
+ /** MIME type of the recorded file (e.g. `"audio/mp4"`). */
642
+ mimeType: string;
643
+ };
644
+ /**
645
+ * Extended result returned from [stopAudioRecording].
646
+ */
647
+ export type AudioRecordingStopResult = AudioRecordingResult & {
648
+ /** Effective recording duration in milliseconds (excluding pauses). */
649
+ durationMs: number;
650
+ /** Size of the final audio file in bytes. */
651
+ fileSizeBytes: number;
652
+ };
653
+ /**
654
+ * Snapshot of the recorder's state, returned by [getAudioRecordingState].
655
+ */
656
+ export type AudioRecordingState = {
657
+ /** Current state: `'idle'`, `'recording'`, `'paused'`, or `'error'`. */
658
+ state: 'idle' | 'recording' | 'paused' | 'error';
659
+ /** Absolute path to the current output file (empty string when idle). */
660
+ filePath: string;
661
+ /** Elapsed recording time in milliseconds (excluding pauses). */
662
+ durationMs: number;
663
+ /** Whether pause/resume is supported on this device (API 24+). */
664
+ isPauseSupported: boolean;
665
+ };
666
+ /**
667
+ * Storage locations for media files
668
+ */
669
+ export type MediaStorageLocation = 'cache' | 'document' | 'gallery';
670
+ /**
671
+ * Media storage status
672
+ */
673
+ export type MediaStorageStatus = 'cached' | 'moved' | 'published' | 'pending' | 'error';
674
+ /**
675
+ * Extended metadata for stored media
676
+ */
677
+ export type StoredMediaMetadata = MediaMetadata & {
678
+ id: string;
679
+ storageLocation: MediaStorageLocation;
680
+ storageStatus: MediaStorageStatus;
681
+ cacheCreatedAt: number;
682
+ cacheLastModified: number;
683
+ publishedAt?: number;
684
+ documentUri?: string;
685
+ cachePath?: string;
686
+ originalUri?: string;
687
+ fileHash?: string;
688
+ isDuplicate?: boolean;
689
+ duplicateOf?: string;
690
+ isEdited: boolean;
691
+ edits?: {
692
+ cropped?: boolean;
693
+ filtered?: boolean;
694
+ rotated?: boolean;
695
+ degree?: number;
696
+ };
697
+ };
698
+ /**
699
+ * Media storage configuration
700
+ */
701
+ export type MediaStorageConfig = {
702
+ maxCacheSizeMB: number;
703
+ autoCleanupEnabled: boolean;
704
+ autoCleanupIntervalMs: number;
705
+ duplicateDetection: boolean;
706
+ persistMetadata: boolean;
707
+ compressionQuality: number;
708
+ };
709
+ /**
710
+ * Extra identity hints for {@link secureDeleteMedia}.
711
+ *
712
+ * All optional, but `assetId` should be supplied whenever it is known: derived
713
+ * copies of the same media (compressed / exported / edited variants and video
714
+ * cover frames) are named after the asset id, not after the primary file, so
715
+ * without it those copies are not found and survive the deletion.
716
+ */
717
+ export type SecureDeleteOptions = {
718
+ /** The asset's id — how derived variants of it are named on disk. */
719
+ assetId?: string;
720
+ /** Base file name, used as a secondary match key for derived copies. */
721
+ fileName?: string;
722
+ /** A video's cover-frame URI: a real JPEG of the media, erased alongside it. */
723
+ coverUri?: string;
724
+ /**
725
+ * Additional copies to erase with the same guarantees — typically the asset's
726
+ * `cachePath` when its published document is the primary URI. Both are complete
727
+ * copies of the media, so erasing only one leaves the other recoverable.
728
+ */
729
+ extraUris?: string[];
730
+ };
731
+ /**
732
+ * Outcome of a native secure deletion.
733
+ *
734
+ * `deleted` and `securelyOverwritten` are deliberately separate: a file can be
735
+ * gone while the overwrite that was supposed to destroy its bytes failed, and
736
+ * the two must never be presented to the user the same way.
737
+ */
738
+ export type SecureDeleteResult = {
739
+ /** The primary file is no longer on the filesystem. */
740
+ deleted: boolean;
741
+ /** Its bytes were overwritten AND flushed to storage before it was unlinked. */
742
+ securelyOverwritten: boolean;
743
+ /**
744
+ * Everything found was overwritten and nothing was left behind — the only
745
+ * flag that justifies reporting a secure deletion to the user.
746
+ */
747
+ fullySecure: boolean;
748
+ /** Exact size of the file before the overwrite, in bytes. */
749
+ originalBytes: number;
750
+ /** Bytes of garbage written over it, including the 2 MB past its end. */
751
+ overwrittenBytes: number;
752
+ /** Cached copies / derived variants also securely erased. */
753
+ derivedFilesErased: number;
754
+ /** Copies that could NOT be erased; non-zero means media may remain. */
755
+ derivedFilesFailed: number;
756
+ /** Present whenever any part of the operation fell short. */
757
+ error?: string;
758
+ };
759
+ /**
760
+ * Media move/copy result
761
+ */
762
+ export type MediaPublishResult = {
763
+ success: boolean;
764
+ mediaId: string;
765
+ sourceLocation: MediaStorageLocation;
766
+ targetLocation: MediaStorageLocation;
767
+ sourceUri: string;
768
+ targetUri?: string;
769
+ fileHash?: string;
770
+ movedAt: number;
771
+ error?: {
772
+ code: string;
773
+ message: string;
774
+ };
775
+ };
776
+ /**
777
+ * Cleanup operation result
778
+ */
779
+ export type CleanupResult = {
780
+ success: boolean;
781
+ filesRemoved: number;
782
+ spaceFreedMB: number;
783
+ erroredFiles: Array<{
784
+ path: string;
785
+ error: string;
786
+ }>;
787
+ timestamp: number;
788
+ };
789
+ /**
790
+ * Storage statistics
791
+ */
792
+ export type StorageStats = {
793
+ cacheUsedMB: number;
794
+ documentUsedMB: number;
795
+ totalAvailableMB: number;
796
+ cachedItemsCount: number;
797
+ publishedItemsCount: number;
798
+ duplicateItemsCount: number;
799
+ oldestCacheItemAge: number;
800
+ newestCacheItemAge: number;
801
+ };
802
+ //# sourceMappingURL=types.d.ts.map