1import * as React from 'react'; 2import { View, ViewProps } from 'react-native'; 3 4function createHandler(): React.ComponentType<React.RefAttributes<any>> { 5 class Handler extends React.Component { 6 private refHandler = (node: any) => { 7 const child = React.Children.only(this.props.children); 8 // TODO(TS) fix ref type 9 const { ref }: any = child; 10 if (ref !== null) { 11 if (typeof ref === 'function') { 12 ref(node); 13 } else { 14 ref.current = node; 15 } 16 } 17 }; 18 19 render() { 20 const child: any = React.Children.only(this.props.children); 21 22 return React.cloneElement(child, { 23 ref: this.refHandler, 24 collapsable: false, 25 }); 26 } 27 } 28 return Handler; 29} 30 31export interface GestureHandlerRootViewProps extends React.PropsWithChildren<ViewProps> {} 32 33export default function GestureHandlerRootView({ ...rest }: GestureHandlerRootViewProps) { 34 return <View {...rest} />; 35} 36 37export type PanGestureHandler = typeof PanGestureHandler; 38// eslint-disable-next-line @typescript-eslint/no-redeclare 39export const PanGestureHandler = createHandler(); 40