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,343 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * ExpandableFab — a bottom-right Floating Action Button that expands into a stack of labelled
5
+ * action rows (Camera / Document / Audio).
6
+ *
7
+ * Constraints honoured:
8
+ * • All icons are hand-authored from RN primitives (see ../icons/CustomIcons) — no icon library,
9
+ * no react-native-svg, no external assets.
10
+ * • All motion uses ONLY React Native's built-in Animated API (no reanimated / animatable / moti /
11
+ * lottie). A single Animated.Value drives everything, so there is one source of truth and the
12
+ * expand/collapse reverse is exact.
13
+ * • Transforms + opacity run on the native driver, so it stays smooth on low-end devices.
14
+ *
15
+ * State model: `open` (React state) is the source of truth; an effect animates `progress` toward
16
+ * it. Rapid taps just flip `open`; Animated.timing redirects from the current value, so there are
17
+ * no glitches or half-open states. The menu auto-collapses when an action is picked, when the
18
+ * backdrop is tapped, and whenever the FAB is disabled (e.g. a capture is in flight).
19
+ */
20
+ import { useEffect, useMemo, useRef, useState, useCallback } from 'react';
21
+ import { View, Text, Pressable, TouchableOpacity, Animated, Easing, StyleSheet, ActivityIndicator } from 'react-native';
22
+ import { NativeBlurView } from "../../NativeBlurView.js";
23
+ import { useCameraLocalization } from "../../localization.js";
24
+ import { RenderIcon } from "../../icons.js";
25
+
26
+ // ── Responsive scaling — shared with the whole app (portrait-normalized + clamped) ──
27
+ import { wp, hp, ms, fs } from "../responsive.js";
28
+ import { useLibraryPalette } from "../palette.js";
29
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
30
+ const ANIM_IN = 240;
31
+ const ANIM_OUT = 200;
32
+ const ICON_SIZE = ms(22);
33
+ const ICON_STROKE = 2;
34
+ export const ExpandableFab = ({
35
+ onCamera,
36
+ onImageVideo,
37
+ onDocument,
38
+ onAudio,
39
+ onRecordAudio,
40
+ busy = false,
41
+ disabled = false,
42
+ right = wp(16),
43
+ bottom = hp(80),
44
+ accentColor
45
+ }) => {
46
+ const {
47
+ t
48
+ } = useCameraLocalization();
49
+ const palette = useLibraryPalette();
50
+ const styles = useMemo(() => makeStyles(palette), [palette]);
51
+ const resolvedAccent = accentColor ?? palette.accentTeal;
52
+ const [open, setOpen] = useState(false);
53
+ // Keeps the frosted backdrop mounted/active through the collapse animation so the
54
+ // blur fades out with the menu instead of snapping away the instant `open` flips.
55
+ const [backdropVisible, setBackdropVisible] = useState(false);
56
+ const progress = useRef(new Animated.Value(0)).current;
57
+
58
+ // Follows the host-driven plugin theme (not the device setting), so the menu matches the
59
+ // rest of the shell: dark cards + light text in dark mode, white cards + dark text in light.
60
+ const isDark = palette.isDark;
61
+ const cardBgColor = isDark ? palette.chromeSystem : palette.white;
62
+ const cardPressedBgColor = isDark ? palette.chromeSystemAlt : palette.surfaceMuted;
63
+ const textColor = isDark ? palette.white : palette.black;
64
+
65
+ // Actions are declared top-of-menu → bottom-of-menu is handled by column-reverse below, so the
66
+ // FIRST entry (Camera) ends up nearest the FAB and reveals first.
67
+ const actions = [{
68
+ key: 'camera',
69
+ label: t('camera'),
70
+ iconName: 'camera',
71
+ color: palette.accentBlue,
72
+ onPress: onCamera
73
+ }, {
74
+ key: 'imagevideo',
75
+ label: t('gallery'),
76
+ iconName: 'image_video',
77
+ color: palette.accentIndigo,
78
+ onPress: onImageVideo
79
+ }, {
80
+ key: 'document',
81
+ label: t('document'),
82
+ iconName: 'document',
83
+ color: palette.accentPurple,
84
+ onPress: onDocument
85
+ }, {
86
+ key: 'recordAudio',
87
+ label: t('recordAudio'),
88
+ iconName: 'mic',
89
+ color: palette.accentOrange,
90
+ onPress: onRecordAudio
91
+ }, {
92
+ key: 'audio',
93
+ label: t('browseAudio'),
94
+ iconName: 'browse_audio',
95
+ color: palette.accentOrange,
96
+ onPress: onAudio
97
+ }];
98
+
99
+ // Single source of truth: animate `progress` toward the `open` state. Interrupting taps simply
100
+ // change `open`; the timing restarts from the live value → no glitches, exact reverse.
101
+ useEffect(() => {
102
+ const animation = Animated.timing(progress, {
103
+ toValue: open ? 1 : 0,
104
+ duration: open ? ANIM_IN : ANIM_OUT,
105
+ easing: open ? Easing.out(Easing.cubic) : Easing.in(Easing.cubic),
106
+ useNativeDriver: true
107
+ });
108
+ animation.start();
109
+ return () => animation.stop();
110
+ }, [open, progress]);
111
+
112
+ // A disabled FAB (e.g. capture in progress) must never stay expanded.
113
+ useEffect(() => {
114
+ if (disabled) setOpen(false);
115
+ }, [disabled]);
116
+
117
+ // Snapshot-blur the background as soon as the menu opens; keep it active until the
118
+ // collapse animation has finished so it fades out smoothly rather than popping.
119
+ useEffect(() => {
120
+ if (open) {
121
+ setBackdropVisible(true);
122
+ return;
123
+ }
124
+ const timeout = setTimeout(() => setBackdropVisible(false), ANIM_OUT + 40);
125
+ return () => clearTimeout(timeout);
126
+ }, [open]);
127
+ const toggle = useCallback(() => {
128
+ if (disabled) return;
129
+ setOpen(prev => !prev);
130
+ }, [disabled]);
131
+ const handleSelect = useCallback(action => {
132
+ // Collapse immediately, then run the existing flow — the menu animates away while the
133
+ // native picker/flow opens.
134
+ setOpen(false);
135
+ action.onPress();
136
+ }, []);
137
+ const backdropOpacity = progress.interpolate({
138
+ inputRange: [0, 1],
139
+ outputRange: [0, 1]
140
+ });
141
+ return /*#__PURE__*/_jsxs(View, {
142
+ style: [StyleSheet.absoluteFill, styles.overlay],
143
+ pointerEvents: "box-none",
144
+ children: [/*#__PURE__*/_jsxs(Animated.View, {
145
+ pointerEvents: open ? 'auto' : 'none',
146
+ style: [styles.backdrop, {
147
+ opacity: backdropOpacity
148
+ }],
149
+ children: [/*#__PURE__*/_jsx(NativeBlurView, {
150
+ active: backdropVisible,
151
+ blurRadius: 6,
152
+ downsampleFactor: 7,
153
+ style: StyleSheet.absoluteFill
154
+ }), /*#__PURE__*/_jsx(View, {
155
+ style: styles.backdropTint,
156
+ pointerEvents: "none"
157
+ }), /*#__PURE__*/_jsx(Pressable, {
158
+ style: StyleSheet.absoluteFill,
159
+ onPress: () => setOpen(false),
160
+ accessibilityLabel: t('closeActionsMenu')
161
+ })]
162
+ }), /*#__PURE__*/_jsxs(View, {
163
+ style: [styles.anchor, {
164
+ right,
165
+ bottom
166
+ }],
167
+ pointerEvents: "box-none",
168
+ children: [/*#__PURE__*/_jsx(View, {
169
+ style: styles.menu,
170
+ pointerEvents: open ? 'auto' : 'none',
171
+ children: actions.map((action, index) => {
172
+ // Stagger each row's reveal by its position; clamp keeps every item fully hidden
173
+ // before its window starts and fully shown after it ends.
174
+ const start = index * 0.16;
175
+ const end = Math.min(start + 0.6, 1);
176
+ const itemOpacity = progress.interpolate({
177
+ inputRange: [start, end],
178
+ outputRange: [0, 1],
179
+ extrapolate: 'clamp'
180
+ });
181
+ const translateY = progress.interpolate({
182
+ inputRange: [start, end],
183
+ outputRange: [ms(18), 0],
184
+ extrapolate: 'clamp'
185
+ });
186
+ const scale = progress.interpolate({
187
+ inputRange: [start, end],
188
+ outputRange: [0.9, 1],
189
+ extrapolate: 'clamp'
190
+ });
191
+ return /*#__PURE__*/_jsx(Animated.View, {
192
+ style: {
193
+ opacity: itemOpacity,
194
+ transform: [{
195
+ translateY
196
+ }, {
197
+ scale
198
+ }]
199
+ },
200
+ children: /*#__PURE__*/_jsxs(Pressable, {
201
+ style: ({
202
+ pressed
203
+ }) => [styles.row, {
204
+ backgroundColor: pressed ? cardPressedBgColor : cardBgColor
205
+ }],
206
+ onPress: () => handleSelect(action),
207
+ accessibilityRole: "button",
208
+ accessibilityLabel: action.label,
209
+ children: [/*#__PURE__*/_jsx(View, {
210
+ style: [styles.iconWrap, {
211
+ backgroundColor: action.color
212
+ }],
213
+ children: /*#__PURE__*/_jsx(RenderIcon, {
214
+ name: action.iconName,
215
+ size: ICON_SIZE,
216
+ color: palette.white,
217
+ strokeWidth: ICON_STROKE
218
+ })
219
+ }), /*#__PURE__*/_jsx(Text, {
220
+ style: [styles.label, {
221
+ color: textColor
222
+ }],
223
+ numberOfLines: 1,
224
+ children: action.label
225
+ })]
226
+ })
227
+ }, action.key);
228
+ })
229
+ }), /*#__PURE__*/_jsx(TouchableOpacity, {
230
+ activeOpacity: 0.85,
231
+ onPress: toggle,
232
+ disabled: disabled,
233
+ accessibilityRole: "button",
234
+ accessibilityState: {
235
+ expanded: open,
236
+ disabled
237
+ },
238
+ accessibilityLabel: open ? t('closeActionsMenu') : t('openActionsMenu'),
239
+ style: [styles.fab, {
240
+ backgroundColor: resolvedAccent
241
+ }],
242
+ children: busy ? /*#__PURE__*/_jsx(ActivityIndicator, {
243
+ color: palette.white,
244
+ size: "small"
245
+ }) : /*#__PURE__*/_jsx(RenderIcon, {
246
+ name: "plus_close",
247
+ size: ms(24),
248
+ color: palette.white,
249
+ strokeWidth: 2.4,
250
+ progress: progress
251
+ })
252
+ })]
253
+ })]
254
+ });
255
+ };
256
+ const ROW_HEIGHT = ms(46);
257
+ // Fixed width sized to accommodate the longest label ("Browse Audio") so all
258
+ // five menu options share one uniform width.
259
+ const ROW_WIDTH = ms(160);
260
+ const makeStyles = palette => StyleSheet.create({
261
+ backdrop: {
262
+ // Transparent container: the native blur layer paints the frosted background and
263
+ // `backdropTint` adds the darkening, so the two compose into a frosted scrim.
264
+ ...StyleSheet.absoluteFill,
265
+ backgroundColor: 'transparent',
266
+ zIndex: 1,
267
+ elevation: 16
268
+ },
269
+ backdropTint: {
270
+ ...StyleSheet.absoluteFill,
271
+ backgroundColor: palette.scrimA22
272
+ },
273
+ anchor: {
274
+ position: 'absolute',
275
+ alignItems: 'flex-end',
276
+ zIndex: 2,
277
+ elevation: 17
278
+ },
279
+ overlay: {
280
+ zIndex: 100,
281
+ elevation: 16
282
+ },
283
+ menu: {
284
+ flexDirection: 'column-reverse',
285
+ alignItems: 'flex-end',
286
+ gap: ms(12),
287
+ marginBottom: ms(14),
288
+ // Reserve space on the right so menu rows never overlap the FAB or overflow
289
+ // the screen edge. The FAB is ms(56) wide + ms(14) gap below the menu.
290
+ paddingRight: ms(20)
291
+ },
292
+ // Fixed row width so every icon shares one left edge and every label shares one left edge —
293
+ // the whole menu reads as one perfectly aligned column.
294
+ row: {
295
+ flexDirection: 'row',
296
+ alignItems: 'center',
297
+ width: ROW_WIDTH,
298
+ height: ROW_HEIGHT,
299
+ borderRadius: Math.round(ROW_HEIGHT / 2),
300
+ paddingLeft: ms(8),
301
+ paddingRight: ms(10),
302
+ // Subtle lift so the pills sit above the media library.
303
+ shadowColor: palette.blackShort,
304
+ shadowOffset: {
305
+ width: 0,
306
+ height: hp(2)
307
+ },
308
+ shadowOpacity: 0.12,
309
+ shadowRadius: ms(6),
310
+ elevation: 4
311
+ },
312
+ iconWrap: {
313
+ width: ms(34),
314
+ height: ms(34),
315
+ borderRadius: ms(17),
316
+ alignItems: 'center',
317
+ justifyContent: 'center'
318
+ },
319
+ label: {
320
+ flex: 1,
321
+ fontSize: fs(15),
322
+ fontWeight: '600',
323
+ textAlign: 'center',
324
+ includeFontPadding: false
325
+ },
326
+ fab: {
327
+ width: ms(56),
328
+ height: ms(56),
329
+ borderRadius: ms(20),
330
+ alignItems: 'center',
331
+ justifyContent: 'center',
332
+ overflow: 'hidden',
333
+ shadowColor: palette.blackShort,
334
+ shadowOffset: {
335
+ width: 0,
336
+ height: hp(4)
337
+ },
338
+ shadowOpacity: 0.3,
339
+ shadowRadius: ms(6),
340
+ elevation: 8
341
+ }
342
+ });
343
+ //# sourceMappingURL=ExpandableFab.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","useMemo","useRef","useState","useCallback","View","Text","Pressable","TouchableOpacity","Animated","Easing","StyleSheet","ActivityIndicator","NativeBlurView","useCameraLocalization","RenderIcon","wp","hp","ms","fs","useLibraryPalette","jsx","_jsx","jsxs","_jsxs","ANIM_IN","ANIM_OUT","ICON_SIZE","ICON_STROKE","ExpandableFab","onCamera","onImageVideo","onDocument","onAudio","onRecordAudio","busy","disabled","right","bottom","accentColor","t","palette","styles","makeStyles","resolvedAccent","accentTeal","open","setOpen","backdropVisible","setBackdropVisible","progress","Value","current","isDark","cardBgColor","chromeSystem","white","cardPressedBgColor","chromeSystemAlt","surfaceMuted","textColor","black","actions","key","label","iconName","color","accentBlue","onPress","accentIndigo","accentPurple","accentOrange","animation","timing","toValue","duration","easing","out","cubic","in","useNativeDriver","start","stop","timeout","setTimeout","clearTimeout","toggle","prev","handleSelect","action","backdropOpacity","interpolate","inputRange","outputRange","style","absoluteFill","overlay","pointerEvents","children","backdrop","opacity","active","blurRadius","downsampleFactor","backdropTint","accessibilityLabel","anchor","menu","map","index","end","Math","min","itemOpacity","extrapolate","translateY","scale","transform","pressed","row","backgroundColor","accessibilityRole","iconWrap","name","size","strokeWidth","numberOfLines","activeOpacity","accessibilityState","expanded","fab","ROW_HEIGHT","ROW_WIDTH","create","zIndex","elevation","scrimA22","position","alignItems","flexDirection","gap","marginBottom","paddingRight","width","height","borderRadius","round","paddingLeft","shadowColor","blackShort","shadowOffset","shadowOpacity","shadowRadius","justifyContent","flex","fontSize","fontWeight","textAlign","includeFontPadding","overflow"],"sourceRoot":"..\\..\\..\\..\\src","sources":["library/components/ExpandableFab.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,251 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * FileTiles — modern, informative list thumbnails for media without a pixel frame
5
+ * (documents and audio) on the Media List screen.
6
+ *
7
+ * • DocumentTile — a colour-coded mini page with a folded corner and a solid
8
+ * file-type badge. The palette is keyed by file family (PDF red, Word blue,
9
+ * spreadsheet green, slides amber, archive violet), so a row is identifiable
10
+ * at a glance without reading the file name.
11
+ * • AudioTile — a waveform seeded deterministically from the asset id (stable
12
+ * across re-renders, unique per file) with the same style of format badge.
13
+ *
14
+ * Both are drawn purely from RN primitives — no icon library, no react-native-svg,
15
+ * no image assets — and degrade gracefully: an unknown or missing extension falls
16
+ * back to a neutral dark-theme palette and a generic FILE / AUD badge.
17
+ */
18
+ import { useMemo } from 'react';
19
+ import { View, Text, StyleSheet } from 'react-native';
20
+ import { RenderIcon } from "../../icons.js";
21
+ import { useCameraLocalization } from "../../localization.js";
22
+
23
+ // ── Responsive scaling — shared with the whole app (portrait-normalized + clamped) ──
24
+ import { ms, fs } from "../responsive.js";
25
+ import { useLibraryPalette } from "../palette.js";
26
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
27
+ // Built from the LIVE shell palette so every tile tint flips with the theme
28
+ // (deep navy shades in dark, soft pastels in light) — the neutral fallback keeps
29
+ // the hue of the old placeholder tile so unknown types still sit naturally.
30
+ const makeTilePalettes = palette => ({
31
+ default: {
32
+ bg: palette.surfaceRaised,
33
+ accent: palette.isDark ? palette.accentPeriwinkle : palette.accentIndigo
34
+ },
35
+ families: [{
36
+ exts: ['pdf'],
37
+ palette: {
38
+ bg: palette.surfaceRoseTint,
39
+ accent: palette.accentRose
40
+ }
41
+ }, {
42
+ exts: ['doc', 'docx', 'rtf', 'odt', 'txt'],
43
+ palette: {
44
+ bg: palette.surfaceNavy,
45
+ accent: palette.accentSky
46
+ }
47
+ }, {
48
+ exts: ['xls', 'xlsx', 'csv', 'ods'],
49
+ palette: {
50
+ bg: palette.surfaceGreenTint,
51
+ accent: palette.accentMint
52
+ }
53
+ }, {
54
+ exts: ['ppt', 'pptx', 'odp'],
55
+ palette: {
56
+ bg: palette.surfaceAmberTint,
57
+ accent: palette.accentAmber
58
+ }
59
+ }, {
60
+ exts: ['zip', 'rar', '7z', 'tar', 'gz'],
61
+ palette: {
62
+ bg: palette.surfacePlum,
63
+ accent: palette.accentLavender
64
+ }
65
+ }],
66
+ audio: {
67
+ bg: palette.surfaceViolet,
68
+ accent: palette.accentViolet
69
+ },
70
+ audioBarSoft: palette.accentPurpleMuted
71
+ });
72
+ const paletteForExtension = (palettes, ext) => palettes.families.find(family => family.exts.includes(ext.toLowerCase()))?.palette ?? palettes.default;
73
+
74
+ // MIME subtypes whose uppercase form would mislead as a badge (audio/mpeg is an
75
+ // .mp3, audio/x-wav a .wav, …). Applied only when no file extension is available.
76
+ const MIME_SUBTYPE_FIXUPS = {
77
+ MPEG: 'MP3',
78
+ MP4: 'M4A',
79
+ 'X-M4A': 'M4A',
80
+ 'X-WAV': 'WAV',
81
+ WAVE: 'WAV',
82
+ 'X-FLAC': 'FLAC',
83
+ 'X-OGG': 'OGG'
84
+ };
85
+
86
+ /** Uppercase extension from the file name, then the MIME subtype, else fallback. */
87
+ function extensionOf(fileName, mimeType, fallback) {
88
+ if (fileName) {
89
+ const dot = fileName.lastIndexOf('.');
90
+ if (dot >= 0 && dot < fileName.length - 1) {
91
+ return fileName.slice(dot + 1).toUpperCase();
92
+ }
93
+ }
94
+ if (mimeType) {
95
+ const slash = mimeType.lastIndexOf('/');
96
+ if (slash >= 0 && slash < mimeType.length - 1) {
97
+ const subtype = mimeType.slice(slash + 1).toUpperCase();
98
+ return MIME_SUBTYPE_FIXUPS[subtype] ?? subtype;
99
+ }
100
+ }
101
+ return fallback;
102
+ }
103
+
104
+ /**
105
+ * Deterministic pseudo-waveform: heights (0..1) derived from the asset key via a
106
+ * tiny LCG, so every audio file gets its own bar pattern that never changes
107
+ * between renders or app launches — no Math.random, no re-render flicker.
108
+ */
109
+ function waveformFor(key, count = 7) {
110
+ let seed = 0;
111
+ for (let i = 0; i < key.length; i++) {
112
+ seed = seed * 31 + key.charCodeAt(i) >>> 0;
113
+ }
114
+ const heights = [];
115
+ for (let i = 0; i < count; i++) {
116
+ seed = seed * 1664525 + 1013904223 >>> 0;
117
+ heights.push(0.25 + (seed >>> 8) % 1000 / 1000 * 0.75);
118
+ }
119
+ return heights;
120
+ }
121
+
122
+ /** Solid extension chip anchored to the tile's bottom edge. */
123
+ const TypeBadge = ({
124
+ label,
125
+ accent
126
+ }) => {
127
+ const palette = useLibraryPalette();
128
+ const styles = useMemo(() => makeStyles(palette), [palette]);
129
+ return /*#__PURE__*/_jsx(View, {
130
+ style: [styles.badge, {
131
+ backgroundColor: accent
132
+ }],
133
+ children: /*#__PURE__*/_jsx(Text, {
134
+ style: styles.badgeText,
135
+ numberOfLines: 1,
136
+ children: label.slice(0, 4)
137
+ })
138
+ });
139
+ };
140
+
141
+ /** The name the published file actually has on disk, when the path carries one. */
142
+ function fileNameFromUri(asset) {
143
+ const uri = asset.documentUri || asset.uri;
144
+ if (!uri) return undefined;
145
+ const segment = (uri.split(/[?#]/)[0] ?? '').split(/[\\/]/).pop();
146
+ if (!segment) return undefined;
147
+ const dot = segment.lastIndexOf('.');
148
+ return dot > 0 && dot < segment.length - 1 ? segment : undefined;
149
+ }
150
+ export const DocumentTile = ({
151
+ asset
152
+ }) => {
153
+ const {
154
+ t
155
+ } = useCameraLocalization();
156
+ const palette = useLibraryPalette();
157
+ const styles = useMemo(() => makeStyles(palette), [palette]);
158
+ const palettes = useMemo(() => makeTilePalettes(palette), [palette]);
159
+ // The FILE names the badge, ahead of `fileName`/`mimeType`: an image exported to PDF can still
160
+ // carry its source photo's name and type, and a PDF badged "JPG" describes the wrong file.
161
+ const ext = extensionOf(fileNameFromUri(asset) ?? asset.fileName, asset.mimeType, t('fileTypeGeneric'));
162
+ const tile = paletteForExtension(palettes, ext);
163
+ return /*#__PURE__*/_jsxs(View, {
164
+ style: [styles.tile, {
165
+ backgroundColor: tile.bg
166
+ }],
167
+ children: [/*#__PURE__*/_jsx(View, {
168
+ style: styles.glyphWrap,
169
+ children: /*#__PURE__*/_jsx(RenderIcon, {
170
+ name: "document",
171
+ size: ms(26),
172
+ color: tile.accent,
173
+ strokeWidth: STROKE
174
+ })
175
+ }), /*#__PURE__*/_jsx(TypeBadge, {
176
+ label: ext,
177
+ accent: tile.accent
178
+ })]
179
+ });
180
+ };
181
+ export const AudioTile = ({
182
+ asset
183
+ }) => {
184
+ const {
185
+ t
186
+ } = useCameraLocalization();
187
+ const palette = useLibraryPalette();
188
+ const styles = useMemo(() => makeStyles(palette), [palette]);
189
+ const palettes = useMemo(() => makeTilePalettes(palette), [palette]);
190
+ const audio = palettes.audio;
191
+ const ext = extensionOf(asset.fileName, asset.mimeType, t('audioTypeGeneric'));
192
+ const bars = waveformFor(asset.id || asset.fileName || 'audio');
193
+ return /*#__PURE__*/_jsxs(View, {
194
+ style: [styles.tile, {
195
+ backgroundColor: audio.bg
196
+ }],
197
+ children: [/*#__PURE__*/_jsx(View, {
198
+ style: styles.waveRow,
199
+ children: bars.map((height, index) => /*#__PURE__*/_jsx(View, {
200
+ style: [styles.waveBar, {
201
+ height: ms(7) + Math.round(height * ms(18)),
202
+ backgroundColor: index % 2 === 0 ? audio.accent : palettes.audioBarSoft
203
+ }]
204
+ }, index))
205
+ }), /*#__PURE__*/_jsx(TypeBadge, {
206
+ label: ext,
207
+ accent: audio.accent
208
+ })]
209
+ });
210
+ };
211
+ const STROKE = 1.5;
212
+ const makeStyles = palette => StyleSheet.create({
213
+ // Fills the list's fixed thumbnailWrapper (which clips to its own radius).
214
+ tile: {
215
+ flex: 1,
216
+ width: '100%',
217
+ alignItems: 'center',
218
+ justifyContent: 'center'
219
+ },
220
+ // Lifts the registry glyph so it + the bottom badge read balanced.
221
+ glyphWrap: {
222
+ marginBottom: ms(12)
223
+ },
224
+ waveRow: {
225
+ flexDirection: 'row',
226
+ alignItems: 'center',
227
+ gap: ms(3),
228
+ marginBottom: ms(12)
229
+ },
230
+ waveBar: {
231
+ width: ms(3),
232
+ borderRadius: ms(2)
233
+ },
234
+ badge: {
235
+ position: 'absolute',
236
+ bottom: ms(5),
237
+ paddingHorizontal: ms(5),
238
+ paddingVertical: ms(1.5),
239
+ borderRadius: ms(4)
240
+ },
241
+ badgeText: {
242
+ // Dark glyph on the bright accent chip in BOTH themes: the accent fills are light
243
+ // pastels, so a light label (appBackground in light mode) would wash out on them.
244
+ color: palette.isDark ? palette.appBackground : palette.inkDark,
245
+ fontSize: fs(8),
246
+ fontWeight: '800',
247
+ letterSpacing: 0.4,
248
+ includeFontPadding: false
249
+ }
250
+ });
251
+ //# sourceMappingURL=FileTiles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useMemo","View","Text","StyleSheet","RenderIcon","useCameraLocalization","ms","fs","useLibraryPalette","jsx","_jsx","jsxs","_jsxs","makeTilePalettes","palette","default","bg","surfaceRaised","accent","isDark","accentPeriwinkle","accentIndigo","families","exts","surfaceRoseTint","accentRose","surfaceNavy","accentSky","surfaceGreenTint","accentMint","surfaceAmberTint","accentAmber","surfacePlum","accentLavender","audio","surfaceViolet","accentViolet","audioBarSoft","accentPurpleMuted","paletteForExtension","palettes","ext","find","family","includes","toLowerCase","MIME_SUBTYPE_FIXUPS","MPEG","MP4","WAVE","extensionOf","fileName","mimeType","fallback","dot","lastIndexOf","length","slice","toUpperCase","slash","subtype","waveformFor","key","count","seed","i","charCodeAt","heights","push","TypeBadge","label","styles","makeStyles","style","badge","backgroundColor","children","badgeText","numberOfLines","fileNameFromUri","asset","uri","documentUri","undefined","segment","split","pop","DocumentTile","t","tile","glyphWrap","name","size","color","strokeWidth","STROKE","AudioTile","bars","id","waveRow","map","height","index","waveBar","Math","round","create","flex","width","alignItems","justifyContent","marginBottom","flexDirection","gap","borderRadius","position","bottom","paddingHorizontal","paddingVertical","appBackground","inkDark","fontSize","fontWeight","letterSpacing","includeFontPadding"],"sourceRoot":"..\\..\\..\\..\\src","sources":["library/components/FileTiles.tsx"],"mappings":"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","ignoreList":[]}