UNPKG

react-native-gallery-picker-pro

Version:

A comprehensive React Native media gallery picker with smooth animations, multi-select, single-select, crop functionality, and native iOS/Android support

129 lines (113 loc) 3.17 kB
import { ReactNode } from 'react'; // MediaType export type MediaType = 'image' | 'video' | 'all'; // PhotoAsset interface export interface PhotoAsset { id: string; uri: string; filename: string; width: number; height: number; creationDate: number; mediaType: 'image' | 'video'; duration?: number; } // SelectedImage interface export interface SelectedImage { uri: string; fileName: string; fileSize: number; width: number; height: number; type: string; id: string; base64: string; } // CropParams interface export interface CropParams { x: number; y: number; width: number; height: number; scale: number; aspectRatio: number; } // MainPhotoGalleryRef interface export interface MainPhotoGalleryRef { triggerCropCapture: () => Promise<void>; } // CropValues interface export interface CropValues { scale: number; translateX: number; translateY: number; } // ImageCropperRef interface export interface ImageCropperRef { captureImage: () => Promise<string>; } // ImageCropper Props export interface ImageCropperProps { asset: PhotoAsset; containerWidth: number; containerHeight: number; cropWidth: number; cropHeight: number; initialCropValues?: CropValues; onCropChange?: (values: CropValues) => void; showOverlay?: boolean; showGrid?: boolean; enableGestures?: boolean; } // MainPhotoGallery Props export interface MainPhotoGalleryProps { mediaType?: 'image' | 'video' | 'all'; multiSelect?: boolean; maxSelectionLimit?: number; selectedAssets?: PhotoAsset[]; onAssetSelected?: (asset: PhotoAsset) => void; onSelectedAssetsChange?: (assets: PhotoAsset[]) => void; showSelectedAssetsHeader?: boolean; hideSelectionHeader?: boolean; onCropParamsChange?: (assetId: string, params: CropParams | null) => void; existingCropParams?: Map<string, CropParams>; onAspectRatioChange?: (ratio: number) => void; onCroppedImagesReady?: (images: Array<{assetId: string, dataUri: string}>) => void; onCancel?: () => void; onNext?: (assets: PhotoAsset[]) => void; renderPermissionDeniedState?: (onRequest?: () => void) => ReactNode; } // PhotoAssetImage Props export interface PhotoAssetImageProps { asset: PhotoAsset; size?: number; style?: any; } // ImagePickerModule export interface ImagePickerModule { openImagePicker: (options: { mediaType?: 'image' | 'video' | 'all'; multiSelect?: boolean; maxSelections?: number; includeBase64?: boolean; }) => Promise<SelectedImage[]>; requestPermissions: () => Promise<{ granted: boolean; message?: string; }>; } // Component exports declare const MainPhotoGallery: React.ForwardRefExoticComponent< MainPhotoGalleryProps & React.RefAttributes<{ triggerCropCapture: () => Promise<void>; }> >; declare const PhotoAssetImage: React.FC<PhotoAssetImageProps>; declare const ImageCropper: React.ForwardRefExoticComponent< ImageCropperProps & React.RefAttributes<ImageCropperRef> >; declare const ImagePickerModule: ImagePickerModule; // Named exports export { MainPhotoGallery, PhotoAssetImage, ImageCropper, ImagePickerModule }; // Default export export default MainPhotoGallery;