import type React from 'react'; import { Animated, StyleSheet } from 'react-native'; import type { TouchAction, UserSelect, } from '../../handlers/gestureHandlerCommon'; import type { GestureDetectorProps as LegacyDetectorProps } from '../../handlers/gestures/GestureDetector'; import type { Gesture } from '../types'; import HostGestureDetector, { type RNGestureHandlerDetectorNativeComponentProps, } from './HostGestureDetector'; export enum GestureDetectorType { Native, Virtual, Intercepting, } interface CommonGestureDetectorProps { children?: React.ReactNode; userSelect?: UserSelect | undefined; touchAction?: TouchAction | undefined; enableContextMenu?: boolean | undefined; } export interface NativeDetectorProps< TConfig, THandlerData, TExtendedHandlerData extends THandlerData, > extends CommonGestureDetectorProps { gesture: Gesture; } export interface InterceptingGestureDetectorProps< TConfig, THandlerData, TExtendedHandlerData extends THandlerData, > extends CommonGestureDetectorProps { gesture?: Gesture; } export interface VirtualDetectorProps< TConfig, THandlerData, TExtendedHandlerData extends THandlerData, > extends CommonGestureDetectorProps { gesture: Gesture; } export type GestureDetectorProps< TConfig, THandlerData, TExtendedHandlerData extends THandlerData, > = | NativeDetectorProps | InterceptingGestureDetectorProps< TConfig, THandlerData, TExtendedHandlerData > | LegacyDetectorProps; export const AnimatedNativeDetector: React.ComponentType = Animated.createAnimatedComponent(HostGestureDetector); export const nativeDetectorStyles = StyleSheet.create({ detector: { display: 'contents', }, });