UNPKG

expo-image-multiple-picker

Version:

Fully customizable image picker for react native

132 lines (131 loc) 3.99 kB
import * as MediaLibrary from 'expo-media-library'; import { Component, RefObject } from 'react'; import { FlatList, ViewProps, ViewStyle } from 'react-native'; export declare type Views = 'album' | 'gallery'; export declare type Page = MediaLibrary.PagedInfo<MediaLibrary.Asset>; export declare type Asset = MediaLibrary.Asset; export declare type Album = MediaLibrary.Album; export declare type AssetsOptions = MediaLibrary.AssetsOptions; interface SelectedAsset { asset: Asset; uncheck: () => void; } interface Size { width: number; height: number; } interface ImagePickerCarouselState { page?: Page; selectedAssets: Map<string, SelectedAsset>; data: ImageBoxItem[]; currentIndex: number; } interface ImagePickerCarouselProps { columns: number; multiple?: boolean; onSelect?: (images: Asset[]) => void; albumID?: string; check?: () => JSX.Element; selected?: Asset[]; max?: number; timeSlider?: boolean; timeSliderHeight?: number; slider?: (data: SliderData) => JSX.Element; video?: boolean; image?: boolean; videoComponent?: (asset: Asset) => JSX.Element; } export interface ImageBoxItem { asset: Asset; size: Size; onCheck: (checked: boolean, asset: SelectedAsset) => boolean; isChecked: () => boolean; check?: () => JSX.Element; video?: (asset: Asset) => JSX.Element; } export interface HeaderData { view: Views; goToAlbum?: () => void; imagesPicked: number; multiple: boolean; picked: boolean; album?: Album; noAlbums: boolean; save?: () => void; } export interface AlbumData { thumb: Asset; album: Album; goToGallery: (album: Album) => void; } export interface SliderItem { date: Date; top: number; styles?: ViewStyle; } export interface SliderBalloon extends SliderItem { quantity: number; } export interface SliderData { balloons: SliderBalloon[]; button?: SliderItem; height: number; isMoving: boolean; buttonProps?: ViewProps; } export interface ScrollTimeData { selected: Map<string, SelectedAsset>; data: ImageBoxItem[]; flatList: RefObject<FlatList<ImageBoxItem>> | null; galleryColumns: number; currentIndex: number; height?: number; customSlider?: (data: SliderData) => JSX.Element; } export interface ImagePickerTheme { header?: (props: HeaderData) => JSX.Element; album?: (props: AlbumData) => JSX.Element; check?: () => JSX.Element; slider?: (props: SliderData) => JSX.Element; video?: (asset: Asset) => JSX.Element; } export interface ImagePickerProps { galleryColumns?: number; albumColumns?: number; theme?: ImagePickerTheme; noAlbums?: boolean; multiple?: boolean; onSave?: (images: Asset[]) => void; onCancel?: () => void; selected?: Asset[]; selectedAlbum?: Album; onSelectAlbum?: (album: Album | undefined) => void; limit?: number; timeSlider?: boolean; timeSliderHeight?: number; video?: boolean; image?: boolean; } export declare class ImagePickerCarousel extends Component<ImagePickerCarouselProps> { private flatListRef; _unmounted: boolean; state: ImagePickerCarouselState; getColumns(): number; isMultiple(): boolean; getImageSize(): { width: number; height: number; }; getItemsPerScreen(): number; selectedImage(checked: boolean, selected: SelectedAsset): boolean; exists(asset_id: string): ImageBoxItem | undefined; isChecked(asset_id: string): boolean; fetchNextPage(stack: number): Promise<boolean>; fillStartImages(): Promise<void>; selectPropsImages(): void; componentDidMount(): Promise<void>; componentWillUnmount(): void; render(): JSX.Element; } export declare function ImagePicker(props: ImagePickerProps): JSX.Element; export {};