react-native-gesture-handler
Version:
Declarative API exposing native platform touch and gesture system to React Native
52 lines (48 loc) • 1.25 kB
text/typescript
import { useMemo } from 'react';
import type { ReanimatedContext } from '../../../handlers/gestures/reanimatedWrapper';
import type {
BaseGestureConfig,
GestureCallbacks,
GestureHandlerEventWithHandlerData,
} from '../../types';
import { eventHandler } from './eventHandler';
export function useGestureEventHandler<
TConfig,
THandlerData,
TExtendedHandlerData extends THandlerData,
>(
handlerTag: number,
handlers: GestureCallbacks<THandlerData, TExtendedHandlerData>,
config: BaseGestureConfig<TConfig, THandlerData, TExtendedHandlerData>
) {
const jsContext: ReanimatedContext<TExtendedHandlerData> = useMemo(() => {
return {
lastUpdateEvent: undefined,
};
}, []);
return useMemo(() => {
return (
event: GestureHandlerEventWithHandlerData<
THandlerData,
TExtendedHandlerData
>
) => {
eventHandler(
handlerTag,
event,
handlers,
config.changeEventCalculator,
jsContext,
!!config.dispatchesAnimatedEvents,
config.fillInDefaultValues
);
};
}, [
handlerTag,
handlers,
config.changeEventCalculator,
config.dispatchesAnimatedEvents,
config.fillInDefaultValues,
jsContext,
]);
}