import { PressableProps as RNPressableProps } from 'react-native'; import { createComponent, createElement, createHook } from 'bumbag/utils'; import { Box, BoxProps } from '../Box'; import { throttle } from '../utils'; import * as styles from './Pressable.styles'; export type LocalPressableProps = { throttle?: boolean | number; }; export type PressableProps = BoxProps & RNPressableProps & LocalPressableProps; const useProps = createHook( (props) => { const boxProps = Box.useProps(props); return { ...boxProps, onPress: throttle(props.onPress, props.throttle) }; }, { themeKey: 'native.Pressable' } ); export const Pressable = createComponent( (props) => { const boxProps = useProps(props); return createElement({ children: props.children, component: styles.StyledPressable, htmlProps: boxProps, }); }, { attach: { useProps, displayName: 'native.Pressable', }, themeKey: 'native.Pressable', } );