import React from 'react'; import { FlatList as RNFlatList, FlatListProps, ViewStyle } from 'react-native'; import { PanGestureHandler, PanGestureHandlerGestureEvent, State as GestureState } from 'react-native-gesture-handler'; import Animated from 'react-native-reanimated'; declare const defaultProps: { autoscrollThreshold: number; autoscrollSpeed: number; animationConfig: Animated.SpringConfig; scrollEnabled: boolean; dragHitSlop: number; activationDistance: number; dragItemOverflow: boolean; }; declare type DefaultProps = Readonly; declare type AnimatedFlatListType = { getNode: () => RNFlatList; }; export declare type DragEndParams = { data: T[]; from: number; to: number; }; export declare type RenderItemParams = { item: T; index?: number; drag: () => void; isActive: boolean; }; declare type Modify = Omit & R; declare type Props = Modify, { autoscrollSpeed?: number; autoscrollThreshold?: number; data: T[]; onRef?: (ref: React.RefObject>) => void; onDragBegin?: (index: number) => void; onRelease?: (index: number) => void; onDragEnd?: (params: DragEndParams) => void; renderItem: (params: RenderItemParams) => React.ReactNode; renderPlaceholder?: (params: { item: T; index: number; }) => React.ReactNode; animationConfig: Partial; activationDistance?: number; debug?: boolean; layoutInvalidationKey?: string; onScrollOffsetChange?: (scrollOffset: number) => void; onPlaceholderIndexChange?: (placeholderIndex: number) => void; dragItemOverflow?: boolean; setCoordinates?: (y: number, x: number) => void; thisArg?: any; } & Partial>; declare type State = { activeKey: string | null; hoverComponent: React.ReactNode | null; }; declare type CellData = { size: Animated.Value; offset: Animated.Value; measurements: { size: number; offset: number; }; style: Animated.AnimateProps; currentIndex: Animated.Value; onLayout: () => void; onUnmount: () => void; }; declare class DraggableFlatList extends React.Component, State> { state: State; containerRef: React.RefObject; flatlistRef: React.RefObject>; panGestureHandlerRef: React.RefObject; containerSize: Animated.Value; activationDistance: Animated.Value; touchAbsolute: Animated.Value; touchCellOffset: Animated.Value; panGestureState: Animated.Value; isPressedIn: { native: Animated.Value; js: boolean; }; hasMoved: Animated.Value; disabled: Animated.Value<0>; activeIndex: Animated.Value; isHovering: Animated.Node<0 | 1>; spacerIndex: Animated.Value; activeCellSize: Animated.Value; scrollOffset: Animated.Value; scrollViewSize: Animated.Value; isScrolledUp: Animated.Node<0 | 1>; isScrolledDown: Animated.Node<0 | 1>; hoverAnimUnconstrained: Animated.Node; hoverAnimConstrained: Animated.Node; hoverAnim: Animated.Node; hoverMid: Animated.Node; hoverOffset: Animated.Node; placeholderOffset: Animated.Value<0>; placeholderPos: Animated.Node; hoverTo: Animated.Value<0>; hoverClock: Animated.Clock; hoverAnimState: { finished: Animated.Value<0>; velocity: Animated.Value<0>; position: Animated.Value<0>; time: Animated.Value<0>; }; hoverAnimConfig: { toValue: Animated.Value<0>; damping: number | Animated.Node | readonly (number | Animated.Node | readonly (number | Animated.Node)[])[] | (number & Animated.Node) | (number & readonly (number | Animated.Node | readonly (number | Animated.Node)[])[]) | (Animated.Node & number) | (Animated.Node & readonly (number | Animated.Node | readonly (number | Animated.Node)[])[]) | (readonly (number | Animated.Node | readonly (number | Animated.Node)[])[] & number) | (readonly (number | Animated.Node | readonly (number | Animated.Node)[])[] & Animated.Node); mass: number | Animated.Node | readonly (number | Animated.Node | readonly (number | Animated.Node)[])[] | (number & Animated.Node) | (number & readonly (number | Animated.Node | readonly (number | Animated.Node)[])[]) | (Animated.Node & number) | (Animated.Node & readonly (number | Animated.Node | readonly (number | Animated.Node)[])[]) | (readonly (number | Animated.Node | readonly (number | Animated.Node)[])[] & number) | (readonly (number | Animated.Node | readonly (number | Animated.Node)[])[] & Animated.Node); stiffness: number | Animated.Node | readonly (number | Animated.Node | readonly (number | Animated.Node)[])[] | (number & Animated.Node) | (number & readonly (number | Animated.Node | readonly (number | Animated.Node)[])[]) | (Animated.Node & number) | (Animated.Node & readonly (number | Animated.Node | readonly (number | Animated.Node)[])[]) | (readonly (number | Animated.Node | readonly (number | Animated.Node)[])[] & number) | (readonly (number | Animated.Node | readonly (number | Animated.Node)[])[] & Animated.Node); overshootClamping: number | boolean | Animated.Node | readonly (number | Animated.Node | readonly (number | Animated.Node)[])[] | (number & Animated.Node) | (number & readonly (number | Animated.Node | readonly (number | Animated.Node)[])[]) | (Animated.Node & number) | (Animated.Node & readonly (number | Animated.Node | readonly (number | Animated.Node)[])[]) | (readonly (number | Animated.Node | readonly (number | Animated.Node)[])[] & number) | (readonly (number | Animated.Node | readonly (number | Animated.Node)[])[] & Animated.Node) | (false & Animated.Node) | (false & readonly (number | Animated.Node | readonly (number | Animated.Node)[])[]) | (true & Animated.Node) | (true & readonly (number | Animated.Node | readonly (number | Animated.Node)[])[]) | (Animated.Node & false) | (Animated.Node & true) | (readonly (number | Animated.Node | readonly (number | Animated.Node)[])[] & false) | (readonly (number | Animated.Node | readonly (number | Animated.Node)[])[] & true); restSpeedThreshold: number | Animated.Node | readonly (number | Animated.Node | readonly (number | Animated.Node)[])[] | (number & Animated.Node) | (number & readonly (number | Animated.Node | readonly (number | Animated.Node)[])[]) | (Animated.Node & number) | (Animated.Node & readonly (number | Animated.Node | readonly (number | Animated.Node)[])[]) | (readonly (number | Animated.Node | readonly (number | Animated.Node)[])[] & number) | (readonly (number | Animated.Node | readonly (number | Animated.Node)[])[] & Animated.Node); restDisplacementThreshold: number | Animated.Node | readonly (number | Animated.Node | readonly (number | Animated.Node)[])[] | (number & Animated.Node) | (number & readonly (number | Animated.Node | readonly (number | Animated.Node)[])[]) | (Animated.Node & number) | (Animated.Node & readonly (number | Animated.Node | readonly (number | Animated.Node)[])[]) | (readonly (number | Animated.Node | readonly (number | Animated.Node)[])[] & number) | (readonly (number | Animated.Node | readonly (number | Animated.Node)[])[] & Animated.Node); }; distToTopEdge: Animated.Node; distToBottomEdge: Animated.Node; cellAnim: Map; cellData: Map; cellRefs: Map>; moveEndParams: Animated.Value[]; resetHoverSpring: Animated.Node[]; keyToIndex: Map; /** Whether we've sent an incomplete call to the FlatList to do a scroll */ isAutoscrolling: { native: Animated.Value; js: boolean; }; queue: (() => void | Promise)[]; static getDerivedStateFromProps(props: Props): { extraData: any; }; static defaultProps: { autoscrollThreshold: number; autoscrollSpeed: number; animationConfig: Animated.SpringConfig; scrollEnabled: boolean; dragHitSlop: number; activationDistance: number; dragItemOverflow: boolean; }; constructor(props: Props); dataKeysHaveChanged: (a: T[], b: T[]) => boolean; componentDidUpdate: (prevProps: Modify, { autoscrollSpeed?: number | undefined; autoscrollThreshold?: number | undefined; data: T[]; onRef?: ((ref: React.RefObject>) => void) | undefined; onDragBegin?: ((index: number) => void) | undefined; onRelease?: ((index: number) => void) | undefined; onDragEnd?: ((params: DragEndParams) => void) | undefined; renderItem: (params: RenderItemParams) => React.ReactNode; renderPlaceholder?: ((params: { item: T; index: number; }) => React.ReactNode) | undefined; animationConfig: Partial; activationDistance?: number | undefined; debug?: boolean | undefined; layoutInvalidationKey?: string | undefined; onScrollOffsetChange?: ((scrollOffset: number) => void) | undefined; onPlaceholderIndexChange?: ((placeholderIndex: number) => void) | undefined; dragItemOverflow?: boolean | undefined; setCoordinates?: ((y: number, x: number) => void) | undefined; thisArg?: any; } & Partial>>, prevState: State) => Promise; flushQueue: () => Promise; resetHoverState: () => void; drag: (hoverComponent: React.ReactNode, activeKey: string) => void; onRelease: ([index]: readonly number[]) => void; onDragEnd: ([from, to]: readonly number[]) => void; updateCellData: (data?: T[]) => void; setCellData: (key: string, index: number) => void; measureAll: (data: T[]) => void; measureCell: (key: string) => Promise; keyExtractor: (item: T, index: number) => string; onContainerLayout: () => void; onListContentSizeChange: (w: number, h: number) => void; targetScrollOffset: Animated.Value; resolveAutoscroll?: (scrollParams: readonly number[]) => void; onAutoscrollComplete: (params: readonly number[]) => void; scrollToAsync: (offset: number) => Promise; getScrollTargetOffset: (distFromTop: number, distFromBottom: number, scrollOffset: number, isScrolledUp: boolean, isScrolledDown: boolean) => number; /** Ensure that only 1 call to autoscroll is active at a time */ autoscrollLooping: boolean; autoscroll: (params: readonly number[]) => Promise; isAtTopEdge: Animated.Node<0 | 1>; isAtBottomEdge: Animated.Node<0 | 1>; isAtEdge: Animated.Node<0 | 1>; autoscrollParams: Animated.Node[]; checkAutoscroll: Animated.Node; onScroll: (...args: any[]) => void; onGestureRelease: Animated.Node[]; onPanStateChange: (...args: any[]) => void; onPanGestureEvent: (notFuncEvent: PanGestureHandlerGestureEvent) => void; hoverComponentTranslate: Animated.Node; hoverComponentOpacity: Animated.Node<0 | 1>; renderHoverComponent: () => JSX.Element; renderItem: ({ item, index }: { item: T; index: number; }) => JSX.Element; renderOnPlaceholderIndexChange: () => JSX.Element; renderPlaceholder: () => JSX.Element | null; CellRendererComponent: (cellProps: any) => JSX.Element | null; renderDebug(): JSX.Element; onContainerTouchEnd: () => void; render(): JSX.Element; } export default DraggableFlatList;