@ericedouard/react-native-gallery-swiper
Version:
An easy and simple to use React Native component to render a high performant and easily customizable image gallery with common gestures like pan, pinch and double tap. Supporting both iOS and Android. Free and made possible along with costly maintenance
80 lines (74 loc) • 3.12 kB
TypeScript
declare module '@ericedouard/react-native-gallery-swiper' {
import { Component } from "react";
import { FlatListProps, ImageProps, ImageURISource, ViewStyle, ImageResizeMode } from "react-native";
import PageList from 'react-native-page-list';
export type PageState = "idle" | "settling" | "dragging"
export type GestureState = {
moveX, moveY, x0, y0, dx, dy, vx, vy: number
numberActiveTouches: number
_accountsForMovesUpTo: number
previousMoveX, previousMoveY: number
pinch?: number
previousPinch?: number
singleTapUp: boolean
doubleTapUp: boolean
_singleTabFailed: boolean
}
export type Transform = {
scale: number,
translateX: number,
translateY: number
}
export type ImageObj = {
source?: string | ImageURISource
uri?: string
url?: string
URI?: string
URL?: string
dimensions?: { width: number, height: number }
}
type GallerySwiperProps = {
images: ImageObj[],
style?: ViewStyle,
initialPage?: number,
resizeMode?: ImageResizeMode,
initialNumToRender?: number,
scrollViewStyle?: ViewStyle,
pageMargin?: number,
sensitiveScroll?: boolean,
backgroundColor?: string,
renderOverlay?: () => void,
onPageSelected?: (page: number) => void,
onPageScrollStateChanged?: (state: PageState) => void,
onPageScroll?: (event: { position: number, offset: number, fraction: number }) => void,
onPinchTransforming?: (transform: Transform, pageId: number) => void,
onPinchStartReached?: (transform: Transform, pageId: number) => void,
onPinchEndReached?: (transform: Transform, pageId: number) => void,
onDoubleTapStartReached?: (transform: Transform, pageId: number) => void,
onDoubleTapEndReached?: (transform: Transform, pageId: number) => void,
onDoubleTapConfirmed?: (currentPage: number) => void,
onSingleTapConfirmed?: (currentPage: number) => void,
onGalleryStateChanged?: (idle: boolean) => void,
onLongPress?: (gestureState: GestureState, currentPage: number) => void,
onViewTransformed?: (transform: Transform, pageId: number) => void,
onTransformGestureReleased?: (transform: Transform, pageId: number) => void,
onSwipeUpReleased?: (transform: Transform, pageId: number) => void,
onSwipeDownReleased?: (transform: Transform, pageId: number) => void,
onEndReached?: () => void,
onEndReachedThreshold?: number,
enableScale?: boolean,
maxScale?: number,
enableTranslate?: boolean,
enableResistance?: boolean,
resistantStrHorizontal?: ((dx: number) => number | string) | number | string,
resistantStrVertical?: ((dy: number) => number | string) | number | string,
maxOverScrollDistance?: number,
removeClippedSubviews?: boolean,
imageComponent?: (imageProps: ImageProps, imageDimensions: {width: number, height: number}, index: number) => JSX.Element,
errorComponent?: () => JSX.Element,
flatListProps?: FlatListProps<any>,
refPage?: (galleryViewPager: PageList) => void
};
export default class GallerySwiper extends Component<GallerySwiperProps> {
}
}