react-native-gesture-handler
Version:
Experimental implementation of a new declarative API for gesture handling in react-native
49 lines (43 loc) • 1.29 kB
text/typescript
import { ComponentClass } from 'react';
import {
GestureUpdateEvent,
GestureStateChangeEvent,
} from '../gestureHandlerCommon';
import { tagMessage } from '../../utils';
export interface SharedValue<T> {
value: T;
}
let Reanimated: {
default: {
// Slightly modified definition copied from 'react-native-reanimated'
// eslint-disable-next-line @typescript-eslint/ban-types
createAnimatedComponent<P extends object>(
component: ComponentClass<P>,
options?: unknown
): ComponentClass<P>;
};
useEvent: (
callback: (event: GestureUpdateEvent | GestureStateChangeEvent) => void,
events: string[],
rebuild: boolean
) => unknown;
useSharedValue: <T>(value: T) => SharedValue<T>;
setGestureState: (handlerTag: number, newState: number) => void;
};
try {
Reanimated = require('react-native-reanimated');
if (!Reanimated.setGestureState) {
Reanimated.setGestureState = () => {
'worklet';
console.warn(
tagMessage(
'Please use newer version of react-native-reanimated in order to control state of the gestures.'
)
);
};
}
// When 'react-native-reanimated' is not available we want to
// quietly continue
// eslint-disable-next-line no-empty
} catch (e) {}
export { Reanimated };