import React from 'react'; import { BallIndicator, BarIndicator, DotIndicator, MaterialIndicator, PacmanIndicator, PulseIndicator, SkypeIndicator, UIActivityIndicator, WaveIndicator, } from 'react-native-indicators'; import { ActivityIndicator, Platform } from 'react-native'; import type { ColorValue } from 'react-native'; import { DEFAULT_COLOR_WHITE, getWaveFactorAndMode } from '../../utils'; import type { SpinnerComponentProp } from './SpinnerComponentTypes'; const SpinnerComponent: React.FC = ({ height, size, spinnerColor, spinnerType, indicatorCount, spinnerOptions, }: SpinnerComponentProp) => { const spinnerColors: ColorValue = ( spinnerColor || DEFAULT_COLOR_WHITE ).toString(); switch (spinnerType?.trim()?.toLowerCase()) { case 'barindicator': return ( ); case 'dotindicator': return ( ); case 'materialindicator': // Note: To overcome https://github.com/n4kz/react-native-indicators/issues/11 and // https://github.com/n4kz/react-native-indicators/issues/6 ActivityIndicator is used in android if (Platform.OS === 'android') { return ; } return ; case 'pacmanindicator': return ; case 'pulseindicator': return ; case 'skypeindicator': return ( ); case 'uiactivityindicator': return ( ); case 'waveindicator': const { waveFactor, waveMode } = getWaveFactorAndMode(spinnerOptions); return ( ); default: return ( ); } }; export default SpinnerComponent;