import React from 'react'; import { ActivityIndicator } from 'react-native'; import type { ActivityIndicator as ActivityIndicatorType } from 'react-native'; import styled from 'styled-components/native'; import { color, space, position } from 'styled-system'; import { useToken, useThemeProps } from '../../../hooks'; import type { ISpinnerProps } from './types'; import { useSpinner } from './useSpinner'; // import type { IBoxProps } from '../Box'; // import { customLayout, customPosition } from '../../../utils/customProps'; // import { // Default, // Dotted, // MultiColorDotted, // Stroked, // SquareDotted, // } from './variants'; // const StyleAnimatedView = styled(Animated.View)( // color, // border, // position, // customPosition, // customLayout // ); const StyledSpinner = styled(ActivityIndicator)( color, space, position ); const Spinner: any = ({ ...props }: ISpinnerProps, ref: any) => { const newProps = useThemeProps('Spinner', props); const spinnerColor = useToken('colors', newProps.color); const { spinnerProps } = useSpinner(props); // const iconSize: any = { sm: 10, lg: 20 }; // const degree: any = new Animated.Value(0); // Animated.loop( // Animated.timing(degree, { // toValue: 1, // duration: newProps.duration ?? 1900, // easing: Easing.linear, // useNativeDriver: false, // }) // ).start(); // const styles = StyleSheet.create({ // animateStyle: { // transform: [ // { // rotateZ: degree.interpolate({ // inputRange: [0, 1], // outputRange: ['0deg', '360deg'], // }), // }, // ], // }, // }); // if (!newProps.variant) { return ( ); // } else { // if (newProps.variant === 'custom' && renderProp) { // return ( // // {renderProp} // // ); // } else { // let SpinnerVariant = null; // switch (newProps.variant) { // case 'dotted': // SpinnerVariant = ( // // ); // break; // case 'multiColorDotted': // SpinnerVariant = ( // // ); // break; // case 'stroked': // SpinnerVariant = ( // // ); // break; // case 'squareDotted': // SpinnerVariant = ( // // ); // break; // default: // SpinnerVariant = ( // // ); // } // return ( // // {SpinnerVariant} // // ); // } // } }; export default React.memo( React.forwardRef(Spinner) ); export type { ISpinnerProps };