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.
- package/CustomCamera.podspec +20 -0
- package/LICENSE +20 -0
- package/README.md +833 -0
- package/android/build.gradle +135 -0
- package/android/consumer-rules.pro +47 -0
- package/android/src/main/AndroidManifest.xml +72 -0
- package/android/src/main/java/android/print/PdfPrint.java +51 -0
- package/android/src/main/java/com/customcamera/AnimatedImageViewManager.kt +199 -0
- package/android/src/main/java/com/customcamera/AudioPlayerView.kt +322 -0
- package/android/src/main/java/com/customcamera/AudioRecorder.kt +506 -0
- package/android/src/main/java/com/customcamera/BarcodeScannerActivity.kt +361 -0
- package/android/src/main/java/com/customcamera/BlurBackgroundView.kt +199 -0
- package/android/src/main/java/com/customcamera/CacheCleanupManager.kt +386 -0
- package/android/src/main/java/com/customcamera/CameraAspectRatioMode.kt +77 -0
- package/android/src/main/java/com/customcamera/CameraAsset.kt +211 -0
- package/android/src/main/java/com/customcamera/CameraTheme.kt +479 -0
- package/android/src/main/java/com/customcamera/CompressionCacheStore.kt +504 -0
- package/android/src/main/java/com/customcamera/CompressionFileNameUtils.kt +7 -0
- package/android/src/main/java/com/customcamera/CompressionProfile.kt +195 -0
- package/android/src/main/java/com/customcamera/CustomCameraActivity.kt +7291 -0
- package/android/src/main/java/com/customcamera/CustomCameraFileProvider.kt +9 -0
- package/android/src/main/java/com/customcamera/CustomCameraModule.kt +2479 -0
- package/android/src/main/java/com/customcamera/CustomCameraPackage.kt +53 -0
- package/android/src/main/java/com/customcamera/DisplayUtils.kt +9 -0
- package/android/src/main/java/com/customcamera/DocumentPreviewView.kt +846 -0
- package/android/src/main/java/com/customcamera/DrawingView.kt +214 -0
- package/android/src/main/java/com/customcamera/EmojiPickerData.kt +228 -0
- package/android/src/main/java/com/customcamera/FilterStripAdapter.kt +158 -0
- package/android/src/main/java/com/customcamera/GifSupport.kt +215 -0
- package/android/src/main/java/com/customcamera/GlobalAudioPlayer.kt +320 -0
- package/android/src/main/java/com/customcamera/ImageExporter.kt +1394 -0
- package/android/src/main/java/com/customcamera/ImageFormatSupport.kt +163 -0
- package/android/src/main/java/com/customcamera/Localization.kt +206 -0
- package/android/src/main/java/com/customcamera/MediaAdapters.kt +758 -0
- package/android/src/main/java/com/customcamera/MediaCacheManager.kt +782 -0
- package/android/src/main/java/com/customcamera/MediaExportFormats.kt +201 -0
- package/android/src/main/java/com/customcamera/MediaFileIo.kt +310 -0
- package/android/src/main/java/com/customcamera/MediaMetadataStore.kt +494 -0
- package/android/src/main/java/com/customcamera/MediaPreviewEditor.kt +14865 -0
- package/android/src/main/java/com/customcamera/MediaPublisher.kt +423 -0
- package/android/src/main/java/com/customcamera/MediaStorageWorkflow.kt +722 -0
- package/android/src/main/java/com/customcamera/MediaStoreRepository.kt +378 -0
- package/android/src/main/java/com/customcamera/MediaThumbnailView.kt +286 -0
- package/android/src/main/java/com/customcamera/MediaUtils.kt +37 -0
- package/android/src/main/java/com/customcamera/NativeVideoViewManager.kt +845 -0
- package/android/src/main/java/com/customcamera/OfficeDocumentConverter.kt +2791 -0
- package/android/src/main/java/com/customcamera/PendingCaptureCrops.kt +88 -0
- package/android/src/main/java/com/customcamera/PowerPointPreview.kt +4077 -0
- package/android/src/main/java/com/customcamera/RecentPickerStore.kt +74 -0
- package/android/src/main/java/com/customcamera/SecureFileEraser.kt +411 -0
- package/android/src/main/java/com/customcamera/SecureKeyModule.kt +88 -0
- package/android/src/main/java/com/customcamera/SecureMediaDeleter.kt +493 -0
- package/android/src/main/java/com/customcamera/StickerPickerData.kt +107 -0
- package/android/src/main/java/com/customcamera/SvgDrawable.kt +175 -0
- package/android/src/main/java/com/customcamera/SvgIconViewManager.kt +77 -0
- package/android/src/main/java/com/customcamera/TextEntryController.kt +553 -0
- package/android/src/main/java/com/customcamera/ThumbnailLoader.kt +455 -0
- package/android/src/main/java/com/customcamera/UploadService.kt +909 -0
- package/android/src/main/java/com/customcamera/VideoEditUtils.kt +210 -0
- package/android/src/main/java/com/customcamera/VideoRotationTranscoder.kt +1992 -0
- package/android/src/main/java/com/customcamera/gif/AnimatedGifEncoder.kt +473 -0
- package/android/src/main/java/com/customcamera/gif/GifDecoder.kt +690 -0
- package/android/src/main/java/com/customcamera/gif/GifFramesDrawable.kt +160 -0
- package/android/src/main/java/com/customcamera/gif/GifHttp.kt +112 -0
- package/android/src/main/java/com/customcamera/gif/GifImageLoader.kt +186 -0
- package/android/src/main/java/com/customcamera/gif/GifModels.kt +74 -0
- package/android/src/main/java/com/customcamera/gif/GifProvider.kt +49 -0
- package/android/src/main/java/com/customcamera/gif/GifProviders.kt +27 -0
- package/android/src/main/java/com/customcamera/gif/GifRepository.kt +124 -0
- package/android/src/main/java/com/customcamera/gif/GifSafety.kt +33 -0
- package/android/src/main/java/com/customcamera/gif/GiphyGifProvider.kt +146 -0
- package/android/src/main/java/com/customcamera/gif/LZWEncoder.kt +258 -0
- package/android/src/main/java/com/customcamera/gif/NeuQuant.kt +435 -0
- package/android/src/main/java/com/customcamera/gif/TenorGifProvider.kt +147 -0
- package/android/src/main/res/drawable/bg_brush_selected.xml +5 -0
- package/android/src/main/res/drawable/bg_color_swatch.xml +5 -0
- package/android/src/main/res/drawable/bg_editor_toolbar.xml +6 -0
- package/android/src/main/res/drawable/bg_icon_circle.xml +5 -0
- package/android/src/main/res/drawable/bg_icon_circle_light.xml +5 -0
- package/android/src/main/res/drawable/bg_mode_tab_active.xml +6 -0
- package/android/src/main/res/drawable/bg_pill.xml +6 -0
- package/android/src/main/res/drawable/bg_recording_dot.xml +6 -0
- package/android/src/main/res/drawable/bg_selection_badge.xml +8 -0
- package/android/src/main/res/drawable/bg_send_button.xml +5 -0
- package/android/src/main/res/drawable/bg_shutter_inner.xml +5 -0
- package/android/src/main/res/drawable/bg_shutter_recording.xml +6 -0
- package/android/src/main/res/drawable/bg_shutter_ring.xml +8 -0
- package/android/src/main/res/drawable/bg_shutter_video_idle.xml +5 -0
- package/android/src/main/res/drawable/bg_thumbnail.xml +9 -0
- package/android/src/main/res/drawable/ic_aspect_ratio.xml +17 -0
- package/android/src/main/res/drawable/ic_audio.xml +10 -0
- package/android/src/main/res/drawable/ic_back.xml +10 -0
- package/android/src/main/res/drawable/ic_brush_medium.xml +12 -0
- package/android/src/main/res/drawable/ic_brush_thick.xml +12 -0
- package/android/src/main/res/drawable/ic_brush_thin.xml +12 -0
- package/android/src/main/res/drawable/ic_check.xml +17 -0
- package/android/src/main/res/drawable/ic_chevron_down.xml +10 -0
- package/android/src/main/res/drawable/ic_chevron_up.xml +13 -0
- package/android/src/main/res/drawable/ic_clear_drawing.xml +10 -0
- package/android/src/main/res/drawable/ic_close.xml +10 -0
- package/android/src/main/res/drawable/ic_cover.xml +9 -0
- package/android/src/main/res/drawable/ic_crop.xml +10 -0
- package/android/src/main/res/drawable/ic_delete.xml +9 -0
- package/android/src/main/res/drawable/ic_document.xml +10 -0
- package/android/src/main/res/drawable/ic_done.xml +10 -0
- package/android/src/main/res/drawable/ic_download.xml +10 -0
- package/android/src/main/res/drawable/ic_emoji.xml +10 -0
- package/android/src/main/res/drawable/ic_filter.xml +10 -0
- package/android/src/main/res/drawable/ic_flash_auto.xml +7 -0
- package/android/src/main/res/drawable/ic_flash_off.xml +23 -0
- package/android/src/main/res/drawable/ic_flash_on.xml +16 -0
- package/android/src/main/res/drawable/ic_flip.xml +15 -0
- package/android/src/main/res/drawable/ic_gallery.xml +10 -0
- package/android/src/main/res/drawable/ic_gif.xml +24 -0
- package/android/src/main/res/drawable/ic_lock.xml +19 -0
- package/android/src/main/res/drawable/ic_lock_open.xml +22 -0
- package/android/src/main/res/drawable/ic_marker.xml +10 -0
- package/android/src/main/res/drawable/ic_more_vert.xml +18 -0
- package/android/src/main/res/drawable/ic_overlay_close.xml +19 -0
- package/android/src/main/res/drawable/ic_overlay_resize.xml +18 -0
- package/android/src/main/res/drawable/ic_pause.xml +10 -0
- package/android/src/main/res/drawable/ic_photo_mode.xml +10 -0
- package/android/src/main/res/drawable/ic_play.xml +10 -0
- package/android/src/main/res/drawable/ic_redo.xml +10 -0
- package/android/src/main/res/drawable/ic_rotate.xml +9 -0
- package/android/src/main/res/drawable/ic_send.xml +10 -0
- package/android/src/main/res/drawable/ic_share.xml +10 -0
- package/android/src/main/res/drawable/ic_stat_upload.xml +10 -0
- package/android/src/main/res/drawable/ic_sticker.xml +24 -0
- package/android/src/main/res/drawable/ic_text.xml +10 -0
- package/android/src/main/res/drawable/ic_text_align_center.xml +11 -0
- package/android/src/main/res/drawable/ic_text_align_left.xml +11 -0
- package/android/src/main/res/drawable/ic_text_align_right.xml +11 -0
- package/android/src/main/res/drawable/ic_text_bg.xml +11 -0
- package/android/src/main/res/drawable/ic_trim.xml +23 -0
- package/android/src/main/res/drawable/ic_undo.xml +10 -0
- package/android/src/main/res/drawable/ic_video_mode.xml +10 -0
- package/android/src/main/res/drawable/ic_video_note.xml +13 -0
- package/android/src/main/res/drawable/ic_volume_off.xml +9 -0
- package/android/src/main/res/drawable/ic_volume_on.xml +9 -0
- package/android/src/main/res/drawable/sticker_heart.xml +9 -0
- package/android/src/main/res/drawable/sticker_smile.xml +9 -0
- package/android/src/main/res/drawable/sticker_star.xml +9 -0
- package/android/src/main/res/drawable/sticker_thumbsup.xml +9 -0
- package/android/src/main/res/values/colors.xml +34 -0
- package/android/src/main/res/values/ids.xml +15 -0
- package/android/src/main/res/values/strings.xml +15 -0
- package/android/src/main/res/values/styles.xml +20 -0
- package/android/src/main/res/xml/file_paths.xml +34 -0
- package/ios/CustomCamera.h +5 -0
- package/ios/CustomCamera.mm +214 -0
- package/lib/module/AudioPlayerContext.js +233 -0
- package/lib/module/AudioPlayerContext.js.map +1 -0
- package/lib/module/CameraPreview.js +304 -0
- package/lib/module/CameraPreview.js.map +1 -0
- package/lib/module/NativeAnimatedImageView.js +41 -0
- package/lib/module/NativeAnimatedImageView.js.map +1 -0
- package/lib/module/NativeAudioPlayerView.js +33 -0
- package/lib/module/NativeAudioPlayerView.js.map +1 -0
- package/lib/module/NativeBlurView.js +35 -0
- package/lib/module/NativeBlurView.js.map +1 -0
- package/lib/module/NativeCustomCamera.js +128 -0
- package/lib/module/NativeCustomCamera.js.map +1 -0
- package/lib/module/NativeCustomCamera.web.js +143 -0
- package/lib/module/NativeCustomCamera.web.js.map +1 -0
- package/lib/module/NativeCustomVideoView.js +5 -0
- package/lib/module/NativeCustomVideoView.js.map +1 -0
- package/lib/module/NativeDocumentPreviewView.js +156 -0
- package/lib/module/NativeDocumentPreviewView.js.map +1 -0
- package/lib/module/NativeMediaThumbnailView.js +110 -0
- package/lib/module/NativeMediaThumbnailView.js.map +1 -0
- package/lib/module/NativeSvgIcon.js +32 -0
- package/lib/module/NativeSvgIcon.js.map +1 -0
- package/lib/module/ResponsivePreviewContainer.js +171 -0
- package/lib/module/ResponsivePreviewContainer.js.map +1 -0
- package/lib/module/accessibility.js +61 -0
- package/lib/module/accessibility.js.map +1 -0
- package/lib/module/config.js +352 -0
- package/lib/module/config.js.map +1 -0
- package/lib/module/cpuOptimization.js +296 -0
- package/lib/module/cpuOptimization.js.map +1 -0
- package/lib/module/db/DatabaseManager.js +191 -0
- package/lib/module/db/DatabaseManager.js.map +1 -0
- package/lib/module/db/MediaMapper.js +284 -0
- package/lib/module/db/MediaMapper.js.map +1 -0
- package/lib/module/db/MediaRepository.js +242 -0
- package/lib/module/db/MediaRepository.js.map +1 -0
- package/lib/module/db/index.js +41 -0
- package/lib/module/db/index.js.map +1 -0
- package/lib/module/db/migrations.js +180 -0
- package/lib/module/db/migrations.js.map +1 -0
- package/lib/module/db/react-native-sqlcipher.d.js +2 -0
- package/lib/module/db/react-native-sqlcipher.d.js.map +1 -0
- package/lib/module/db/secureKey.js +87 -0
- package/lib/module/db/secureKey.js.map +1 -0
- package/lib/module/db/types.js +57 -0
- package/lib/module/db/types.js.map +1 -0
- package/lib/module/db/useMediaDatabase.js +123 -0
- package/lib/module/db/useMediaDatabase.js.map +1 -0
- package/lib/module/defaultIcons.js +2259 -0
- package/lib/module/defaultIcons.js.map +1 -0
- package/lib/module/deviceCapabilities.js +408 -0
- package/lib/module/deviceCapabilities.js.map +1 -0
- package/lib/module/errors.js +267 -0
- package/lib/module/errors.js.map +1 -0
- package/lib/module/iconConfig.js +796 -0
- package/lib/module/iconConfig.js.map +1 -0
- package/lib/module/icons.js +514 -0
- package/lib/module/icons.js.map +1 -0
- package/lib/module/index.js +251 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/jest-globals.d.js +2 -0
- package/lib/module/jest-globals.d.js.map +1 -0
- package/lib/module/library/MediaLibrary.js +107 -0
- package/lib/module/library/MediaLibrary.js.map +1 -0
- package/lib/module/library/MediaLibraryScreen.js +2597 -0
- package/lib/module/library/MediaLibraryScreen.js.map +1 -0
- package/lib/module/library/components/AudioPreview.js +74 -0
- package/lib/module/library/components/AudioPreview.js.map +1 -0
- package/lib/module/library/components/DocumentPreview.js +331 -0
- package/lib/module/library/components/DocumentPreview.js.map +1 -0
- package/lib/module/library/components/ExpandableFab.js +343 -0
- package/lib/module/library/components/ExpandableFab.js.map +1 -0
- package/lib/module/library/components/FileTiles.js +251 -0
- package/lib/module/library/components/FileTiles.js.map +1 -0
- package/lib/module/library/components/ImagePreview.js +70 -0
- package/lib/module/library/components/ImagePreview.js.map +1 -0
- package/lib/module/library/components/MediaMetadataHeader.js +175 -0
- package/lib/module/library/components/MediaMetadataHeader.js.map +1 -0
- package/lib/module/library/components/RecordAudioScreen.js +816 -0
- package/lib/module/library/components/RecordAudioScreen.js.map +1 -0
- package/lib/module/library/components/VideoPreview.js +453 -0
- package/lib/module/library/components/VideoPreview.js.map +1 -0
- package/lib/module/library/components/ViewerCounter.js +55 -0
- package/lib/module/library/components/ViewerCounter.js.map +1 -0
- package/lib/module/library/compressionEstimate.js +507 -0
- package/lib/module/library/compressionEstimate.js.map +1 -0
- package/lib/module/library/fileMetadata.js +196 -0
- package/lib/module/library/fileMetadata.js.map +1 -0
- package/lib/module/library/index.js +42 -0
- package/lib/module/library/index.js.map +1 -0
- package/lib/module/library/libraryIconRegistry.js +69 -0
- package/lib/module/library/libraryIconRegistry.js.map +1 -0
- package/lib/module/library/libraryIcons.js +858 -0
- package/lib/module/library/libraryIcons.js.map +1 -0
- package/lib/module/library/localizedFormat.js +181 -0
- package/lib/module/library/localizedFormat.js.map +1 -0
- package/lib/module/library/palette.js +225 -0
- package/lib/module/library/palette.js.map +1 -0
- package/lib/module/library/responsive.js +53 -0
- package/lib/module/library/responsive.js.map +1 -0
- package/lib/module/locales.js +416 -0
- package/lib/module/locales.js.map +1 -0
- package/lib/module/localization.js +1064 -0
- package/lib/module/localization.js.map +1 -0
- package/lib/module/logger.js +20 -0
- package/lib/module/logger.js.map +1 -0
- package/lib/module/lowMemoryCache.js +206 -0
- package/lib/module/lowMemoryCache.js.map +1 -0
- package/lib/module/mediaHistory.js +33 -0
- package/lib/module/mediaHistory.js.map +1 -0
- package/lib/module/mediaStorageService.js +402 -0
- package/lib/module/mediaStorageService.js.map +1 -0
- package/lib/module/memory.js +79 -0
- package/lib/module/memory.js.map +1 -0
- package/lib/module/nativeActions.js +307 -0
- package/lib/module/nativeActions.js.map +1 -0
- package/lib/module/nativeComponentSupport.js +61 -0
- package/lib/module/nativeComponentSupport.js.map +1 -0
- package/lib/module/networkPerformance.js +24 -0
- package/lib/module/networkPerformance.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/performance.js +104 -0
- package/lib/module/performance.js.map +1 -0
- package/lib/module/performanceMonitor.js +155 -0
- package/lib/module/performanceMonitor.js.map +1 -0
- package/lib/module/permissions.js +370 -0
- package/lib/module/permissions.js.map +1 -0
- package/lib/module/rendering.js +40 -0
- package/lib/module/rendering.js.map +1 -0
- package/lib/module/security.js +18 -0
- package/lib/module/security.js.map +1 -0
- package/lib/module/state.js +266 -0
- package/lib/module/state.js.map +1 -0
- package/lib/module/storage.js +400 -0
- package/lib/module/storage.js.map +1 -0
- package/lib/module/theme.js +390 -0
- package/lib/module/theme.js.map +1 -0
- package/lib/module/types.js +4 -0
- package/lib/module/types.js.map +1 -0
- package/lib/module/utils.js +115 -0
- package/lib/module/utils.js.map +1 -0
- package/lib/module/validation.js +288 -0
- package/lib/module/validation.js.map +1 -0
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/src/AudioPlayerContext.d.ts +27 -0
- package/lib/typescript/src/AudioPlayerContext.d.ts.map +1 -0
- package/lib/typescript/src/CameraPreview.d.ts +13 -0
- package/lib/typescript/src/CameraPreview.d.ts.map +1 -0
- package/lib/typescript/src/NativeAnimatedImageView.d.ts +33 -0
- package/lib/typescript/src/NativeAnimatedImageView.d.ts.map +1 -0
- package/lib/typescript/src/NativeAudioPlayerView.d.ts +12 -0
- package/lib/typescript/src/NativeAudioPlayerView.d.ts.map +1 -0
- package/lib/typescript/src/NativeBlurView.d.ts +12 -0
- package/lib/typescript/src/NativeBlurView.d.ts.map +1 -0
- package/lib/typescript/src/NativeCustomCamera.d.ts +167 -0
- package/lib/typescript/src/NativeCustomCamera.d.ts.map +1 -0
- package/lib/typescript/src/NativeCustomCamera.web.d.ts +47 -0
- package/lib/typescript/src/NativeCustomCamera.web.d.ts.map +1 -0
- package/lib/typescript/src/NativeCustomVideoView.d.ts +30 -0
- package/lib/typescript/src/NativeCustomVideoView.d.ts.map +1 -0
- package/lib/typescript/src/NativeDocumentPreviewView.d.ts +48 -0
- package/lib/typescript/src/NativeDocumentPreviewView.d.ts.map +1 -0
- package/lib/typescript/src/NativeMediaThumbnailView.d.ts +54 -0
- package/lib/typescript/src/NativeMediaThumbnailView.d.ts.map +1 -0
- package/lib/typescript/src/NativeSvgIcon.d.ts +25 -0
- package/lib/typescript/src/NativeSvgIcon.d.ts.map +1 -0
- package/lib/typescript/src/ResponsivePreviewContainer.d.ts +92 -0
- package/lib/typescript/src/ResponsivePreviewContainer.d.ts.map +1 -0
- package/lib/typescript/src/accessibility.d.ts +20 -0
- package/lib/typescript/src/accessibility.d.ts.map +1 -0
- package/lib/typescript/src/config.d.ts +145 -0
- package/lib/typescript/src/config.d.ts.map +1 -0
- package/lib/typescript/src/cpuOptimization.d.ts +63 -0
- package/lib/typescript/src/cpuOptimization.d.ts.map +1 -0
- package/lib/typescript/src/db/DatabaseManager.d.ts +48 -0
- package/lib/typescript/src/db/DatabaseManager.d.ts.map +1 -0
- package/lib/typescript/src/db/MediaMapper.d.ts +77 -0
- package/lib/typescript/src/db/MediaMapper.d.ts.map +1 -0
- package/lib/typescript/src/db/MediaRepository.d.ts +66 -0
- package/lib/typescript/src/db/MediaRepository.d.ts.map +1 -0
- package/lib/typescript/src/db/index.d.ts +23 -0
- package/lib/typescript/src/db/index.d.ts.map +1 -0
- package/lib/typescript/src/db/migrations.d.ts +31 -0
- package/lib/typescript/src/db/migrations.d.ts.map +1 -0
- package/lib/typescript/src/db/secureKey.d.ts +10 -0
- package/lib/typescript/src/db/secureKey.d.ts.map +1 -0
- package/lib/typescript/src/db/types.d.ts +115 -0
- package/lib/typescript/src/db/types.d.ts.map +1 -0
- package/lib/typescript/src/db/useMediaDatabase.d.ts +41 -0
- package/lib/typescript/src/db/useMediaDatabase.d.ts.map +1 -0
- package/lib/typescript/src/defaultIcons.d.ts +139 -0
- package/lib/typescript/src/defaultIcons.d.ts.map +1 -0
- package/lib/typescript/src/deviceCapabilities.d.ts +92 -0
- package/lib/typescript/src/deviceCapabilities.d.ts.map +1 -0
- package/lib/typescript/src/errors.d.ts +95 -0
- package/lib/typescript/src/errors.d.ts.map +1 -0
- package/lib/typescript/src/iconConfig.d.ts +176 -0
- package/lib/typescript/src/iconConfig.d.ts.map +1 -0
- package/lib/typescript/src/icons.d.ts +217 -0
- package/lib/typescript/src/icons.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +104 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/library/MediaLibrary.d.ts +57 -0
- package/lib/typescript/src/library/MediaLibrary.d.ts.map +1 -0
- package/lib/typescript/src/library/MediaLibraryScreen.d.ts +51 -0
- package/lib/typescript/src/library/MediaLibraryScreen.d.ts.map +1 -0
- package/lib/typescript/src/library/components/AudioPreview.d.ts +6 -0
- package/lib/typescript/src/library/components/AudioPreview.d.ts.map +1 -0
- package/lib/typescript/src/library/components/DocumentPreview.d.ts +10 -0
- package/lib/typescript/src/library/components/DocumentPreview.d.ts.map +1 -0
- package/lib/typescript/src/library/components/ExpandableFab.d.ts +39 -0
- package/lib/typescript/src/library/components/ExpandableFab.d.ts.map +1 -0
- package/lib/typescript/src/library/components/FileTiles.d.ts +8 -0
- package/lib/typescript/src/library/components/FileTiles.d.ts.map +1 -0
- package/lib/typescript/src/library/components/ImagePreview.d.ts +5 -0
- package/lib/typescript/src/library/components/ImagePreview.d.ts.map +1 -0
- package/lib/typescript/src/library/components/MediaMetadataHeader.d.ts +16 -0
- package/lib/typescript/src/library/components/MediaMetadataHeader.d.ts.map +1 -0
- package/lib/typescript/src/library/components/RecordAudioScreen.d.ts +8 -0
- package/lib/typescript/src/library/components/RecordAudioScreen.d.ts.map +1 -0
- package/lib/typescript/src/library/components/VideoPreview.d.ts +20 -0
- package/lib/typescript/src/library/components/VideoPreview.d.ts.map +1 -0
- package/lib/typescript/src/library/components/ViewerCounter.d.ts +13 -0
- package/lib/typescript/src/library/components/ViewerCounter.d.ts.map +1 -0
- package/lib/typescript/src/library/compressionEstimate.d.ts +313 -0
- package/lib/typescript/src/library/compressionEstimate.d.ts.map +1 -0
- package/lib/typescript/src/library/fileMetadata.d.ts +33 -0
- package/lib/typescript/src/library/fileMetadata.d.ts.map +1 -0
- package/lib/typescript/src/library/index.d.ts +40 -0
- package/lib/typescript/src/library/index.d.ts.map +1 -0
- package/lib/typescript/src/library/libraryIconRegistry.d.ts +35 -0
- package/lib/typescript/src/library/libraryIconRegistry.d.ts.map +1 -0
- package/lib/typescript/src/library/libraryIcons.d.ts +85 -0
- package/lib/typescript/src/library/libraryIcons.d.ts.map +1 -0
- package/lib/typescript/src/library/localizedFormat.d.ts +49 -0
- package/lib/typescript/src/library/localizedFormat.d.ts.map +1 -0
- package/lib/typescript/src/library/palette.d.ts +104 -0
- package/lib/typescript/src/library/palette.d.ts.map +1 -0
- package/lib/typescript/src/library/responsive.d.ts +15 -0
- package/lib/typescript/src/library/responsive.d.ts.map +1 -0
- package/lib/typescript/src/locales.d.ts +103 -0
- package/lib/typescript/src/locales.d.ts.map +1 -0
- package/lib/typescript/src/localization.d.ts +1051 -0
- package/lib/typescript/src/localization.d.ts.map +1 -0
- package/lib/typescript/src/logger.d.ts +4 -0
- package/lib/typescript/src/logger.d.ts.map +1 -0
- package/lib/typescript/src/lowMemoryCache.d.ts +64 -0
- package/lib/typescript/src/lowMemoryCache.d.ts.map +1 -0
- package/lib/typescript/src/mediaHistory.d.ts +3 -0
- package/lib/typescript/src/mediaHistory.d.ts.map +1 -0
- package/lib/typescript/src/mediaStorageService.d.ts +155 -0
- package/lib/typescript/src/mediaStorageService.d.ts.map +1 -0
- package/lib/typescript/src/memory.d.ts +21 -0
- package/lib/typescript/src/memory.d.ts.map +1 -0
- package/lib/typescript/src/nativeActions.d.ts +174 -0
- package/lib/typescript/src/nativeActions.d.ts.map +1 -0
- package/lib/typescript/src/nativeComponentSupport.d.ts +30 -0
- package/lib/typescript/src/nativeComponentSupport.d.ts.map +1 -0
- package/lib/typescript/src/networkPerformance.d.ts +12 -0
- package/lib/typescript/src/networkPerformance.d.ts.map +1 -0
- package/lib/typescript/src/performance.d.ts +32 -0
- package/lib/typescript/src/performance.d.ts.map +1 -0
- package/lib/typescript/src/performanceMonitor.d.ts +45 -0
- package/lib/typescript/src/performanceMonitor.d.ts.map +1 -0
- package/lib/typescript/src/permissions.d.ts +132 -0
- package/lib/typescript/src/permissions.d.ts.map +1 -0
- package/lib/typescript/src/rendering.d.ts +9 -0
- package/lib/typescript/src/rendering.d.ts.map +1 -0
- package/lib/typescript/src/security.d.ts +6 -0
- package/lib/typescript/src/security.d.ts.map +1 -0
- package/lib/typescript/src/state.d.ts +102 -0
- package/lib/typescript/src/state.d.ts.map +1 -0
- package/lib/typescript/src/storage.d.ts +117 -0
- package/lib/typescript/src/storage.d.ts.map +1 -0
- package/lib/typescript/src/theme.d.ts +15 -0
- package/lib/typescript/src/theme.d.ts.map +1 -0
- package/lib/typescript/src/types.d.ts +802 -0
- package/lib/typescript/src/types.d.ts.map +1 -0
- package/lib/typescript/src/utils.d.ts +50 -0
- package/lib/typescript/src/utils.d.ts.map +1 -0
- package/lib/typescript/src/validation.d.ts +52 -0
- package/lib/typescript/src/validation.d.ts.map +1 -0
- package/package.json +204 -0
- package/react-native.config.js +17 -0
- package/src/AudioPlayerContext.tsx +220 -0
- package/src/CameraPreview.tsx +352 -0
- package/src/NativeAnimatedImageView.tsx +71 -0
- package/src/NativeAudioPlayerView.tsx +39 -0
- package/src/NativeBlurView.tsx +40 -0
- package/src/NativeCustomCamera.ts +305 -0
- package/src/NativeCustomCamera.web.ts +192 -0
- package/src/NativeCustomVideoView.ts +30 -0
- package/src/NativeDocumentPreviewView.tsx +196 -0
- package/src/NativeMediaThumbnailView.tsx +167 -0
- package/src/NativeSvgIcon.tsx +46 -0
- package/src/ResponsivePreviewContainer.tsx +227 -0
- package/src/accessibility.ts +80 -0
- package/src/config.ts +406 -0
- package/src/cpuOptimization.ts +365 -0
- package/src/db/DatabaseManager.ts +212 -0
- package/src/db/MediaMapper.ts +377 -0
- package/src/db/MediaRepository.ts +313 -0
- package/src/db/index.ts +73 -0
- package/src/db/migrations.ts +222 -0
- package/src/db/react-native-sqlcipher.d.ts +76 -0
- package/src/db/secureKey.ts +100 -0
- package/src/db/types.ts +123 -0
- package/src/db/useMediaDatabase.ts +191 -0
- package/src/defaultIcons.tsx +2390 -0
- package/src/deviceCapabilities.ts +438 -0
- package/src/errors.ts +350 -0
- package/src/iconConfig.tsx +962 -0
- package/src/icons.tsx +788 -0
- package/src/index.tsx +763 -0
- package/src/jest-globals.d.ts +9 -0
- package/src/library/MediaLibrary.tsx +141 -0
- package/src/library/MediaLibraryScreen.tsx +3003 -0
- package/src/library/components/AudioPreview.tsx +73 -0
- package/src/library/components/DocumentPreview.tsx +361 -0
- package/src/library/components/ExpandableFab.tsx +342 -0
- package/src/library/components/FileTiles.tsx +252 -0
- package/src/library/components/ImagePreview.tsx +72 -0
- package/src/library/components/MediaMetadataHeader.tsx +208 -0
- package/src/library/components/RecordAudioScreen.tsx +845 -0
- package/src/library/components/VideoPreview.tsx +478 -0
- package/src/library/components/ViewerCounter.tsx +71 -0
- package/src/library/compressionEstimate.ts +662 -0
- package/src/library/fileMetadata.ts +212 -0
- package/src/library/index.ts +66 -0
- package/src/library/libraryIconRegistry.tsx +86 -0
- package/src/library/libraryIcons.tsx +928 -0
- package/src/library/localizedFormat.ts +207 -0
- package/src/library/palette.ts +281 -0
- package/src/library/responsive.ts +49 -0
- package/src/locales.ts +381 -0
- package/src/localization.ts +1947 -0
- package/src/logger.ts +20 -0
- package/src/lowMemoryCache.ts +218 -0
- package/src/mediaHistory.ts +42 -0
- package/src/mediaStorageService.ts +546 -0
- package/src/memory.ts +102 -0
- package/src/nativeActions.ts +422 -0
- package/src/nativeComponentSupport.ts +60 -0
- package/src/networkPerformance.ts +30 -0
- package/src/performance.ts +137 -0
- package/src/performanceMonitor.ts +219 -0
- package/src/permissions.ts +403 -0
- package/src/rendering.ts +47 -0
- package/src/security.ts +19 -0
- package/src/state.ts +333 -0
- package/src/storage.ts +453 -0
- package/src/theme.tsx +467 -0
- package/src/types.ts +946 -0
- package/src/utils.ts +177 -0
- 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":[]}
|