import { useRef } from "react"; import { TapGestureHandler, State as GestureState, } from "react-native-gesture-handler"; import { Button, GetProps, styled, View, ViewStyle } from "tamagui"; const StyledPressable = styled(Button, { unstyled: true, backgroundColor: "$colorTransparent", borderWidth: 0, padding: 0, cursor: "pointer", }); export type PressableProps = GetProps & { $hover?: ViewStyle; $pressed?: ViewStyle; }; const Pressable = ({ $hover, $pressed = { opacity: 0.5 }, ...props }: PressableProps) => { return ( ); }; type MultiTapPressableProps = GetProps & { numberOfTaps: number; onTap?: () => void; onMultiTap?: () => void; }; export const MultiTapPressable = ({ numberOfTaps, onTap, onMultiTap, ...props }: MultiTapPressableProps) => { const tapRef = useRef(); return ( { if (e.nativeEvent.state === GestureState.ACTIVE) { onTap?.(); } }} waitFor={tapRef} > { if (e.nativeEvent.state === GestureState.ACTIVE) { onMultiTap?.(); } }} numberOfTaps={numberOfTaps} ref={tapRef} > ); }; export default Pressable;