react-native-reanimated
Version:
More powerful alternative to Animated library for React Native.
34 lines (33 loc) • 1.38 kB
TypeScript
import type { Context, WorkletFunction, NativeEvent } from '../commonTypes';
import type { DependencyList } from './commonTypes';
interface Handler<T, TContext extends Context> extends WorkletFunction {
(event: T, context: TContext, isCanceledOrFailed?: boolean): void;
}
export interface GestureHandlers<T, TContext extends Context> {
[key: string]: Handler<T, TContext> | undefined;
onStart?: Handler<T, TContext>;
onActive?: Handler<T, TContext>;
onEnd?: Handler<T, TContext>;
onFail?: Handler<T, TContext>;
onCancel?: Handler<T, TContext>;
onFinish?: Handler<T, TContext>;
}
declare const EventType: {
UNDETERMINED: number;
FAILED: number;
BEGAN: number;
CANCELLED: number;
ACTIVE: number;
END: number;
};
interface GestureHandlerNativeEvent {
handlerTag: number;
numberOfPointers: number;
state: (typeof EventType)[keyof typeof EventType];
}
export interface GestureHandlerEvent<T> extends NativeEvent<T> {
nativeEvent: T;
}
type InferArgument<T> = T extends GestureHandlerEvent<infer E> ? E extends GestureHandlerNativeEvent ? E : never : never;
export declare function useAnimatedGestureHandler<T extends GestureHandlerEvent<any>, TContext extends Context = Context, Payload = InferArgument<T>>(handlers: GestureHandlers<Payload, TContext>, dependencies?: DependencyList): (e: T) => void;
export {};