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,155 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Performance monitoring for camera operations
5
+ */
6
+
7
+ import { devLog } from "./logger.js";
8
+ export class PerformanceMonitor {
9
+ metrics = [];
10
+ maxMetrics = 1000;
11
+ performanceThresholds = {
12
+ slowOperationMs: 1000,
13
+ verySlowOperationMs: 3000,
14
+ highMemoryMb: 200,
15
+ veryHighMemoryMb: 400
16
+ };
17
+ performanceWarnings = [];
18
+ constructor() {
19
+ // Start periodic reporting
20
+ setInterval(() => this.reportMetrics(), 60000);
21
+ }
22
+ static getInstance() {
23
+ if (!PerformanceMonitor.instance) {
24
+ PerformanceMonitor.instance = new PerformanceMonitor();
25
+ }
26
+ return PerformanceMonitor.instance;
27
+ }
28
+ trackMetric(metric) {
29
+ this.metrics.push(metric);
30
+ this.checkPerformanceWarnings(metric);
31
+
32
+ // Limit metrics count
33
+ if (this.metrics.length > this.maxMetrics) {
34
+ this.metrics = this.metrics.slice(-this.maxMetrics);
35
+ }
36
+ }
37
+ getMetrics() {
38
+ return [...this.metrics];
39
+ }
40
+ getPerformanceWarnings() {
41
+ return [...this.performanceWarnings];
42
+ }
43
+ clearMetrics() {
44
+ this.metrics = [];
45
+ }
46
+ clearWarnings() {
47
+ this.performanceWarnings = [];
48
+ }
49
+ setThresholds(thresholds) {
50
+ this.performanceThresholds = {
51
+ ...this.performanceThresholds,
52
+ ...thresholds
53
+ };
54
+ }
55
+ checkPerformanceWarnings(metric) {
56
+ if (metric.durationMs > this.performanceThresholds.verySlowOperationMs) {
57
+ this.performanceWarnings.push({
58
+ metric,
59
+ reason: `Very slow operation: ${metric.durationMs}ms`
60
+ });
61
+ } else if (metric.durationMs > this.performanceThresholds.slowOperationMs) {
62
+ this.performanceWarnings.push({
63
+ metric,
64
+ reason: `Slow operation: ${metric.durationMs}ms`
65
+ });
66
+ }
67
+ if (metric.memoryUsageMb && metric.memoryUsageMb > this.performanceThresholds.veryHighMemoryMb) {
68
+ this.performanceWarnings.push({
69
+ metric,
70
+ reason: `Very high memory usage: ${metric.memoryUsageMb}MB`
71
+ });
72
+ } else if (metric.memoryUsageMb && metric.memoryUsageMb > this.performanceThresholds.highMemoryMb) {
73
+ this.performanceWarnings.push({
74
+ metric,
75
+ reason: `High memory usage: ${metric.memoryUsageMb}MB`
76
+ });
77
+ }
78
+ }
79
+ reportMetrics() {
80
+ if (this.metrics.length === 0) return;
81
+ const slowOperations = this.metrics.filter(m => m.durationMs > this.performanceThresholds.slowOperationMs);
82
+ const verySlowOperations = this.metrics.filter(m => m.durationMs > this.performanceThresholds.verySlowOperationMs);
83
+ const highMemory = this.metrics.filter(m => (m.memoryUsageMb || 0) > this.performanceThresholds.highMemoryMb);
84
+ const veryHighMemory = this.metrics.filter(m => (m.memoryUsageMb || 0) > this.performanceThresholds.veryHighMemoryMb);
85
+ if (__DEV__) {
86
+ devLog('Performance Report:');
87
+ devLog(`- Total operations: ${this.metrics.length}`);
88
+ devLog(`- Slow operations (>${this.performanceThresholds.slowOperationMs}ms): ${slowOperations.length}`);
89
+ devLog(`- Very slow operations (>${this.performanceThresholds.verySlowOperationMs}ms): ${verySlowOperations.length}`);
90
+ devLog(`- High memory (>${this.performanceThresholds.highMemoryMb}MB): ${highMemory.length}`);
91
+ devLog(`- Very high memory (>${this.performanceThresholds.veryHighMemoryMb}MB): ${veryHighMemory.length}`);
92
+ if (this.performanceWarnings.length > 0) {
93
+ devLog(`\nPerformance Warnings (${this.performanceWarnings.length}):`);
94
+ this.performanceWarnings.slice(0, 5).forEach((warning, index) => {
95
+ devLog(` ${index + 1}. ${warning.metric.operation}: ${warning.reason}`);
96
+ });
97
+ }
98
+ }
99
+ this.clearMetrics();
100
+ this.clearWarnings();
101
+ }
102
+ }
103
+
104
+ /**
105
+ * Measure operation performance
106
+ */
107
+ export async function measurePerformance(operationName, operation) {
108
+ const startTime = performance.now();
109
+ const startMemory = getMemoryUsage();
110
+ try {
111
+ const result = await operation();
112
+ const endTime = performance.now();
113
+ const endMemory = getMemoryUsage();
114
+ const metrics = {
115
+ operation: operationName,
116
+ durationMs: endTime - startTime,
117
+ memoryUsageMb: endMemory - startMemory,
118
+ timestamp: Date.now()
119
+ };
120
+ PerformanceMonitor.getInstance().trackMetric(metrics);
121
+ logPerformanceMetrics(metrics);
122
+ return {
123
+ result,
124
+ metrics
125
+ };
126
+ } catch (error) {
127
+ const endTime = performance.now();
128
+ const metrics = {
129
+ operation: operationName,
130
+ durationMs: endTime - startTime,
131
+ timestamp: Date.now()
132
+ };
133
+ PerformanceMonitor.getInstance().trackMetric(metrics);
134
+ logPerformanceMetrics(metrics);
135
+ throw error;
136
+ }
137
+ }
138
+
139
+ /**
140
+ * Get current memory usage (approximate)
141
+ */
142
+ export function getMemoryUsage() {
143
+ const perf = global.performance;
144
+ return perf?.memory?.usedJSHeapSize ? perf.memory.usedJSHeapSize / (1024 * 1024) : 0;
145
+ }
146
+
147
+ /**
148
+ * Log performance metrics
149
+ */
150
+ export function logPerformanceMetrics(metrics) {
151
+ if (__DEV__) {
152
+ devLog('[PERF]', JSON.stringify(metrics, null, 2));
153
+ }
154
+ }
155
+ //# sourceMappingURL=performanceMonitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["devLog","PerformanceMonitor","metrics","maxMetrics","performanceThresholds","slowOperationMs","verySlowOperationMs","highMemoryMb","veryHighMemoryMb","performanceWarnings","constructor","setInterval","reportMetrics","getInstance","instance","trackMetric","metric","push","checkPerformanceWarnings","length","slice","getMetrics","getPerformanceWarnings","clearMetrics","clearWarnings","setThresholds","thresholds","durationMs","reason","memoryUsageMb","slowOperations","filter","m","verySlowOperations","highMemory","veryHighMemory","__DEV__","forEach","warning","index","operation","measurePerformance","operationName","startTime","performance","now","startMemory","getMemoryUsage","result","endTime","endMemory","timestamp","Date","logPerformanceMetrics","error","perf","global","memory","usedJSHeapSize","JSON","stringify"],"sourceRoot":"..\\..\\src","sources":["performanceMonitor.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,370 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Permission utilities for the camera plugin.
5
+ *
6
+ * PERMISSIONS ARE REQUESTED JUST-IN-TIME — by the feature that needs them, at the
7
+ * moment it is first used, never as an up-front batch:
8
+ *
9
+ * - CAMERA → when the camera opens (openCamera / openCameraPicker).
10
+ * - Gallery/media → when the user opens the gallery inside the camera (the
11
+ * bottom-left thumbnail or the swipe-up gesture).
12
+ * - RECORD_AUDIO → when the first video recording starts, and when the in-app
13
+ * audio recorder opens.
14
+ * - POST_NOTIFICATIONS → when an upload with visible progress starts.
15
+ *
16
+ * CustomCameraActivity drives all of the in-camera ones itself, so an app does not
17
+ * need to pre-request anything. The functions below exist for apps that want to
18
+ * CHECK state ahead of time, or to request a single permission before the feature
19
+ * that owns it runs — request only what the next action actually needs.
20
+ *
21
+ * On Android, permissions persist across app restarts and device reboots.
22
+ * The app should only re-request permissions when:
23
+ * - The user has explicitly revoked them from device Settings
24
+ * - The user selected "Don't ask again" on a previous denial
25
+ *
26
+ * On iOS, permissions can be checked but must be requested through the native UI.
27
+ */
28
+
29
+ import { Platform, PermissionsAndroid } from 'react-native';
30
+ import { LocalizationManager } from "./localization.js";
31
+ // No module-level "required permissions" list: there is no such set. Each request below owns
32
+ // exactly one feature, and the SDK level is resolved inside it (Android 13+ uses the granular
33
+ // media permissions — https://developer.android.com/about/versions/13/reference/media-permissions).
34
+
35
+ /**
36
+ * Convert Android permission result to our status type
37
+ */
38
+ function toPermissionStatus(granted) {
39
+ if (granted === true) return 'granted';
40
+ if (granted === false) return 'denied';
41
+ return 'unavailable';
42
+ }
43
+
44
+ /**
45
+ * Check if a single permission is granted.
46
+ * For Android 6+ (API 23+), this uses the runtime permission system.
47
+ * For earlier versions, it returns 'granted' if the permission is in the manifest.
48
+ */
49
+ async function checkPermission(permission) {
50
+ if (Platform.OS !== 'android') {
51
+ // iOS doesn't use this permission system for camera
52
+ return 'granted';
53
+ }
54
+ try {
55
+ const result = await PermissionsAndroid.check(permission);
56
+ return toPermissionStatus(result);
57
+ } catch (error) {
58
+ console.warn('Error checking permission:', permission, error);
59
+ return 'unavailable';
60
+ }
61
+ }
62
+
63
+ /**
64
+ * Request a single permission from the user.
65
+ * Returns the final status after the user responds.
66
+ */
67
+ async function requestPermission(permission, rationale) {
68
+ if (Platform.OS !== 'android') {
69
+ return 'granted';
70
+ }
71
+ try {
72
+ const currentStatus = await checkPermission(permission);
73
+ if (currentStatus === 'granted') {
74
+ return 'granted';
75
+ }
76
+ if (currentStatus === 'never_ask_again' || currentStatus === 'unavailable') {
77
+ return currentStatus;
78
+ }
79
+ const result = await PermissionsAndroid.request(permission, rationale);
80
+ if (result === PermissionsAndroid.RESULTS.GRANTED) {
81
+ return 'granted';
82
+ } else if (result === PermissionsAndroid.RESULTS.NEVER_ASK_AGAIN) {
83
+ return 'never_ask_again';
84
+ }
85
+ return 'denied';
86
+ } catch (error) {
87
+ console.warn('Error requesting permission:', permission, error);
88
+ return 'unavailable';
89
+ }
90
+ }
91
+
92
+ /**
93
+ * Check if the device supports camera.
94
+ * Returns false if there's no camera hardware.
95
+ */
96
+ export async function checkCameraPermission() {
97
+ const status = await checkCameraPermissionStatus();
98
+ return status === 'granted';
99
+ }
100
+
101
+ /**
102
+ * Get detailed camera permission status.
103
+ */
104
+ export async function checkCameraPermissionStatus() {
105
+ return checkPermission('android.permission.CAMERA');
106
+ }
107
+
108
+ /**
109
+ * Request camera permission.
110
+ * If the user previously selected "Don't ask again", returns 'never_ask_again'
111
+ * and you should direct them to device Settings.
112
+ */
113
+ export async function requestCameraPermission(rationale) {
114
+ return requestPermission('android.permission.CAMERA', rationale ?? getDefaultPermissionRationale('camera'));
115
+ }
116
+
117
+ /**
118
+ * Check if storage/media permissions are granted.
119
+ * For Android 13+, this checks READ_MEDIA_IMAGES and READ_MEDIA_VIDEO.
120
+ * For earlier versions, this checks READ_EXTERNAL_STORAGE.
121
+ */
122
+ export async function checkStoragePermission() {
123
+ if (Platform.OS !== 'android') {
124
+ return true;
125
+ }
126
+
127
+ // On Android 13+, we need specific media permissions
128
+ const majorVersion = Platform.Version;
129
+ if (majorVersion >= 33) {
130
+ const images = await checkPermission('android.permission.READ_MEDIA_IMAGES');
131
+ const videos = await checkPermission('android.permission.READ_MEDIA_VIDEO');
132
+ return images === 'granted' && videos === 'granted';
133
+ }
134
+
135
+ // On Android 12 and below, check READ_EXTERNAL_STORAGE
136
+ const status = await checkPermission('android.permission.READ_EXTERNAL_STORAGE');
137
+ return status === 'granted';
138
+ }
139
+
140
+ /**
141
+ * Get detailed storage permission status.
142
+ */
143
+ export async function checkStoragePermissionStatus() {
144
+ if (Platform.OS !== 'android') {
145
+ return {
146
+ images: 'granted',
147
+ videos: 'granted'
148
+ };
149
+ }
150
+ const majorVersion = Platform.Version;
151
+ if (majorVersion >= 33) {
152
+ const images = await checkPermission('android.permission.READ_MEDIA_IMAGES');
153
+ const videos = await checkPermission('android.permission.READ_MEDIA_VIDEO');
154
+ return {
155
+ images,
156
+ videos
157
+ };
158
+ }
159
+ const storage = await checkPermission('android.permission.READ_EXTERNAL_STORAGE');
160
+ return {
161
+ images: storage,
162
+ videos: storage
163
+ };
164
+ }
165
+
166
+ /**
167
+ * Request several permissions in ONE system dialog rather than a chain of them.
168
+ *
169
+ * `PermissionsAndroid.request` shows a separate dialog per call, so awaiting it in a
170
+ * loop makes the user dismiss N prompts in a row. `requestMultiple` hands the whole
171
+ * set to the platform at once, which presents them as a single grouped flow.
172
+ * Returns the strictest outcome across the set.
173
+ */
174
+ async function requestPermissions(permissions) {
175
+ if (Platform.OS !== 'android' || permissions.length === 0) {
176
+ return 'granted';
177
+ }
178
+ try {
179
+ const pendingPermissions = [];
180
+ for (const permission of permissions) {
181
+ const currentStatus = await checkPermission(permission);
182
+ if (currentStatus === 'granted') {
183
+ continue;
184
+ }
185
+ if (currentStatus === 'never_ask_again') {
186
+ return 'never_ask_again';
187
+ }
188
+ pendingPermissions.push(permission);
189
+ }
190
+ if (pendingPermissions.length === 0) {
191
+ return 'granted';
192
+ }
193
+ const results = await PermissionsAndroid.requestMultiple(pendingPermissions);
194
+ const values = pendingPermissions.map(permission => results[permission]);
195
+ if (values.some(value => value === PermissionsAndroid.RESULTS.NEVER_ASK_AGAIN)) {
196
+ return 'never_ask_again';
197
+ }
198
+ if (values.every(value => value === PermissionsAndroid.RESULTS.GRANTED)) {
199
+ return 'granted';
200
+ }
201
+ return 'denied';
202
+ } catch (error) {
203
+ console.warn('Error requesting permissions:', permissions, error);
204
+ return 'unavailable';
205
+ }
206
+ }
207
+
208
+ /**
209
+ * Request gallery (storage/media) permissions.
210
+ * For Android 13+, requests READ_MEDIA_IMAGES and READ_MEDIA_VIDEO.
211
+ * For earlier versions, requests READ_EXTERNAL_STORAGE and WRITE_EXTERNAL_STORAGE.
212
+ *
213
+ * Call this only when the user reaches for their media — the camera itself does not
214
+ * need it, and CustomCameraActivity asks for it on its own when the in-camera gallery
215
+ * is opened.
216
+ *
217
+ * `rationale` is accepted for API compatibility but is not shown: the whole set is
218
+ * requested in one grouped system flow (see [requestPermissions]), and Android's
219
+ * multi-permission API has no per-permission rationale dialog. Show your own
220
+ * explanation before calling if you need one.
221
+ */
222
+ export async function requestStoragePermission(_rationale) {
223
+ if (Platform.OS !== 'android') {
224
+ return 'granted';
225
+ }
226
+ const majorVersion = Platform.Version;
227
+ if (majorVersion >= 33) {
228
+ return requestPermissions(['android.permission.READ_MEDIA_IMAGES', 'android.permission.READ_MEDIA_VIDEO']);
229
+ }
230
+ const permissions = ['android.permission.READ_EXTERNAL_STORAGE'];
231
+ if (majorVersion <= 28) {
232
+ // Need WRITE_EXTERNAL_STORAGE for Android 9 and below
233
+ permissions.push('android.permission.WRITE_EXTERNAL_STORAGE');
234
+ }
235
+ return requestPermissions(permissions);
236
+ }
237
+
238
+ /**
239
+ * Check microphone permission (for video recording).
240
+ */
241
+ export async function checkMicrophonePermission() {
242
+ const status = await checkMicrophonePermissionStatus();
243
+ return status === 'granted';
244
+ }
245
+
246
+ /**
247
+ * Get detailed microphone permission status.
248
+ */
249
+ export async function checkMicrophonePermissionStatus() {
250
+ if (Platform.OS !== 'android') {
251
+ return 'granted';
252
+ }
253
+ return checkPermission('android.permission.RECORD_AUDIO');
254
+ }
255
+
256
+ /**
257
+ * Request microphone permission.
258
+ */
259
+ export async function requestMicrophonePermission(rationale) {
260
+ if (Platform.OS !== 'android') {
261
+ return 'granted';
262
+ }
263
+ return requestPermission('android.permission.RECORD_AUDIO', rationale ?? getDefaultPermissionRationale('microphone'));
264
+ }
265
+
266
+ /**
267
+ * Check all permissions required to OPEN the camera — that is the camera permission
268
+ * and nothing else. Media/storage and microphone access are not required to open the
269
+ * camera; they belong to the gallery and to video recording, which request them
270
+ * themselves when first used.
271
+ */
272
+ export async function checkAllPermissions() {
273
+ return checkCameraPermission();
274
+ }
275
+
276
+ /**
277
+ * Request the permissions needed to OPEN the camera: the camera permission, only.
278
+ *
279
+ * This deliberately does NOT request gallery or microphone access. Those are asked
280
+ * for by the feature that needs them — the in-camera gallery and the first video
281
+ * recording — so the user is never prompted for access they have not reached for yet.
282
+ */
283
+ export async function requestAllPermissions(rationale) {
284
+ const camera = await requestCameraPermission(rationale);
285
+ return {
286
+ camera
287
+ };
288
+ }
289
+
290
+ /**
291
+ * Check if the app should show a rationale for a permission.
292
+ * A rationale should be shown when the user has previously denied the permission
293
+ * but hasn't selected "Don't ask again" yet.
294
+ */
295
+ export async function shouldShowRationale(_permission) {
296
+ if (Platform.OS !== 'android') {
297
+ return false;
298
+ }
299
+ // Note: PermissionsAndroid.shouldShowRequestPermissionRationale is not
300
+ // directly accessible in RN 0.60+. This is a limitation of the current API.
301
+ // In practice, you can call requestPermission() which will show the system dialog,
302
+ // and the system will handle showing a rationale if shouldShowRequestPermissionRationale
303
+ // returns true.
304
+ return false;
305
+ }
306
+
307
+ /**
308
+ * Open the device's app settings page.
309
+ * Use this when the user has permanently denied a permission ("Don't ask again").
310
+ */
311
+ export async function openSettings() {
312
+ if (Platform.OS === 'android') {
313
+ const {
314
+ default: Linking
315
+ } = await import('react-native').then(m => {
316
+ // Handle both named and default exports
317
+ const linking = m.default?.Linking || m.Linking;
318
+ return {
319
+ default: linking
320
+ };
321
+ });
322
+ await Linking.openSettings();
323
+ }
324
+ }
325
+
326
+ /**
327
+ * Default rationale messages for permission requests, read through the plugin's
328
+ * centralized translation registry so they follow the host app's current
329
+ * language (live, on switch) and fall back to English when untranslated.
330
+ */
331
+
332
+ const RATIONALE_TITLE_KEYS = {
333
+ camera: 'permissionRationaleCameraTitle',
334
+ storage: 'permissionRationaleStorageTitle',
335
+ microphone: 'permissionRationaleMicrophoneTitle'
336
+ };
337
+ const RATIONALE_MESSAGE_KEYS = {
338
+ camera: 'permissionRationaleCameraMessage',
339
+ storage: 'permissionRationaleStorageMessage',
340
+ microphone: 'permissionRationaleMicrophoneMessage'
341
+ };
342
+
343
+ /**
344
+ * Build the currently-localized default rationale for a single permission.
345
+ *
346
+ * Text comes from the `permissionRationale*` / `permissionGrant` /
347
+ * `permissionDeny` translation keys, so whatever language the host app is
348
+ * currently using is what the system dialog shows — and a mid-session language
349
+ * switch is picked up automatically.
350
+ */
351
+ export function getDefaultPermissionRationale(feature) {
352
+ return {
353
+ title: LocalizationManager.getString(RATIONALE_TITLE_KEYS[feature]),
354
+ message: LocalizationManager.getString(RATIONALE_MESSAGE_KEYS[feature]),
355
+ buttonPositive: LocalizationManager.getString('permissionGrant'),
356
+ buttonNegative: LocalizationManager.getString('permissionDeny')
357
+ };
358
+ }
359
+
360
+ /**
361
+ * Static English rationale snapshots, kept for callers that need a fixed object
362
+ * shape (e.g. memoized). For live, language-aware copies use
363
+ * {@link getDefaultPermissionRationale} instead.
364
+ */
365
+ export const DEFAULT_RATIONALE = {
366
+ camera: getDefaultPermissionRationale('camera'),
367
+ storage: getDefaultPermissionRationale('storage'),
368
+ microphone: getDefaultPermissionRationale('microphone')
369
+ };
370
+ //# sourceMappingURL=permissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Platform","PermissionsAndroid","LocalizationManager","toPermissionStatus","granted","checkPermission","permission","OS","result","check","error","console","warn","requestPermission","rationale","currentStatus","request","RESULTS","GRANTED","NEVER_ASK_AGAIN","checkCameraPermission","status","checkCameraPermissionStatus","requestCameraPermission","getDefaultPermissionRationale","checkStoragePermission","majorVersion","Version","images","videos","checkStoragePermissionStatus","storage","requestPermissions","permissions","length","pendingPermissions","push","results","requestMultiple","values","map","some","value","every","requestStoragePermission","_rationale","checkMicrophonePermission","checkMicrophonePermissionStatus","requestMicrophonePermission","checkAllPermissions","requestAllPermissions","camera","shouldShowRationale","_permission","openSettings","default","Linking","then","m","linking","RATIONALE_TITLE_KEYS","microphone","RATIONALE_MESSAGE_KEYS","feature","title","getString","message","buttonPositive","buttonNegative","DEFAULT_RATIONALE"],"sourceRoot":"..\\..\\src","sources":["permissions.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+
3
+ export function runAfterInteractions(callback) {
4
+ setTimeout(callback, 0);
5
+ }
6
+ export function createOptimizedListData(items) {
7
+ return items;
8
+ }
9
+ export function createMemoizer(fn) {
10
+ const cache = new Map();
11
+ return (...args) => {
12
+ const key = JSON.stringify(args);
13
+ const cached = cache.get(key);
14
+ if (cached !== undefined) {
15
+ return cached;
16
+ }
17
+ const result = fn(...args);
18
+ cache.set(key, result);
19
+ return result;
20
+ };
21
+ }
22
+ export function createThrottledRenderer(fn, wait = 0) {
23
+ let lastCall = 0;
24
+ return (...args) => {
25
+ const now = Date.now();
26
+ if (now - lastCall >= wait) {
27
+ lastCall = now;
28
+ fn(...args);
29
+ }
30
+ };
31
+ }
32
+ export function optimizeListRenderItem(item) {
33
+ return item;
34
+ }
35
+ export function createOptimizedImageSource(uri) {
36
+ return {
37
+ uri
38
+ };
39
+ }
40
+ //# sourceMappingURL=rendering.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["runAfterInteractions","callback","setTimeout","createOptimizedListData","items","createMemoizer","fn","cache","Map","args","key","JSON","stringify","cached","get","undefined","result","set","createThrottledRenderer","wait","lastCall","now","Date","optimizeListRenderItem","item","createOptimizedImageSource","uri"],"sourceRoot":"..\\..\\src","sources":["rendering.ts"],"mappings":";;AAAA,OAAO,SAASA,oBAAoBA,CAACC,QAAoB,EAAQ;EAC/DC,UAAU,CAACD,QAAQ,EAAE,CAAC,CAAC;AACzB;AAEA,OAAO,SAASE,uBAAuBA,CAAIC,KAAU,EAAO;EAC1D,OAAOA,KAAK;AACd;AAEA,OAAO,SAASC,cAAcA,CAC5BC,EAAK,EACF;EACH,MAAMC,KAAK,GAAG,IAAIC,GAAG,CAAwB,CAAC;EAE9C,OAAQ,CAAC,GAAGC,IAAmB,KAAoB;IACjD,MAAMC,GAAG,GAAGC,IAAI,CAACC,SAAS,CAACH,IAAI,CAAC;IAChC,MAAMI,MAAM,GAAGN,KAAK,CAACO,GAAG,CAACJ,GAAG,CAAC;IAC7B,IAAIG,MAAM,KAAKE,SAAS,EAAE;MACxB,OAAOF,MAAM;IACf;IAEA,MAAMG,MAAM,GAAGV,EAAE,CAAC,GAAGG,IAAI,CAAkB;IAC3CF,KAAK,CAACU,GAAG,CAACP,GAAG,EAAEM,MAAM,CAAC;IACtB,OAAOA,MAAM;EACf,CAAC;AACH;AAEA,OAAO,SAASE,uBAAuBA,CAErCZ,EAAK,EAAEa,IAAI,GAAG,CAAC,EAAK;EACpB,IAAIC,QAAQ,GAAG,CAAC;EAEhB,OAAQ,CAAC,GAAGX,IAAmB,KAAW;IACxC,MAAMY,GAAG,GAAGC,IAAI,CAACD,GAAG,CAAC,CAAC;IACtB,IAAIA,GAAG,GAAGD,QAAQ,IAAID,IAAI,EAAE;MAC1BC,QAAQ,GAAGC,GAAG;MACdf,EAAE,CAAC,GAAGG,IAAI,CAAC;IACb;EACF,CAAC;AACH;AAEA,OAAO,SAASc,sBAAsBA,CAAIC,IAAO,EAAK;EACpD,OAAOA,IAAI;AACb;AAEA,OAAO,SAASC,0BAA0BA,CAACC,GAAW,EAAmB;EACvE,OAAO;IAAEA;EAAI,CAAC;AAChB","ignoreList":[]}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ export function validateSecureUri(uri) {
4
+ return typeof uri === 'string' && uri.length > 0;
5
+ }
6
+ export function sanitizeFileName(name) {
7
+ return name.replace(/[^\w.-]/g, '_');
8
+ }
9
+ export function validateFileContentType(type) {
10
+ return typeof type === 'string' && type.length > 0;
11
+ }
12
+ export function validateSecureFileSize(size) {
13
+ return typeof size === 'number' && size >= 0;
14
+ }
15
+ export function validateBatchOperation(items) {
16
+ return Array.isArray(items) && items.length > 0;
17
+ }
18
+ //# sourceMappingURL=security.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["validateSecureUri","uri","length","sanitizeFileName","name","replace","validateFileContentType","type","validateSecureFileSize","size","validateBatchOperation","items","Array","isArray"],"sourceRoot":"..\\..\\src","sources":["security.ts"],"mappings":";;AAAA,OAAO,SAASA,iBAAiBA,CAACC,GAAW,EAAW;EACtD,OAAO,OAAOA,GAAG,KAAK,QAAQ,IAAIA,GAAG,CAACC,MAAM,GAAG,CAAC;AAClD;AAEA,OAAO,SAASC,gBAAgBA,CAACC,IAAY,EAAU;EACrD,OAAOA,IAAI,CAACC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC;AACtC;AAEA,OAAO,SAASC,uBAAuBA,CAACC,IAAa,EAAW;EAC9D,OAAO,OAAOA,IAAI,KAAK,QAAQ,IAAIA,IAAI,CAACL,MAAM,GAAG,CAAC;AACpD;AAEA,OAAO,SAASM,sBAAsBA,CAACC,IAAa,EAAW;EAC7D,OAAO,OAAOA,IAAI,KAAK,QAAQ,IAAIA,IAAI,IAAI,CAAC;AAC9C;AAEA,OAAO,SAASC,sBAAsBA,CAACC,KAAgB,EAAW;EAChE,OAAOC,KAAK,CAACC,OAAO,CAACF,KAAK,CAAC,IAAIA,KAAK,CAACT,MAAM,GAAG,CAAC;AACjD","ignoreList":[]}