@daeun2351/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
108 lines (101 loc) • 3.35 kB
TypeScript
declare module "@daeun2351/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;
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;
pageTransitionThreshold: number;
estimatedItemSize: number;
drawDistance: number;
enableFlashList?: boolean;
};
export default class GallerySwiper extends Component<GallerySwiperProps> {}
}