import React from 'react' import { AnyRecord, IJSX, StyledComponentProps } from '@codeleap/styles' import { RefreshControl as RNRefreshControl } from 'react-native' import { MobileStyleRegistry } from '../../Registry' import { RefreshControlProps } from './types' import { useStylesFor } from '../../hooks' import { ColorValue } from 'react-native' export * from './styles' export * from './types' export const RefreshControl = (props: RefreshControlProps) => { const { style, ...rest } = { ...RefreshControl.defaultProps, ...props, } const styles = useStylesFor(RefreshControl.styleRegistryName, style) /** RN's `RefreshControl` accepts spinner colors only as raw `ColorValue` props, not via `style`; the design token values are therefore extracted from the style record and forwarded as explicit props. */ const color: ColorValue = (styles?.loadingAnimation as AnyRecord)?.color const titleColor: ColorValue = (styles?.titleColor as AnyRecord)?.color const progressBackgroundColor: ColorValue = (styles?.progressBackgroundColor as AnyRecord)?.color return ( ) } RefreshControl.styleRegistryName = 'RefreshControl' RefreshControl.elements = ['loadingAnimation', 'progressBackgroundColor', 'titleColor'] RefreshControl.rootElement = 'wrapper' RefreshControl.withVariantTypes = (styles: S) => { return RefreshControl as (props: StyledComponentProps) => IJSX } RefreshControl.defaultProps = {} as Partial MobileStyleRegistry.registerComponent(RefreshControl)