Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@skava/ui / src / components / features / Animations / Preloader / Preloader.tsx
Size: Mime:
import React from 'react'
import { renderWrapper as defaultRenderWrapper } from '../renderProps'
import { PreloaderProps } from './typings'
import AudioLoader from './AudioLoader'
import BoxLoader from './BoxLoader'
import CircleLoader from './CircleLoader'
import CubeLoader from './CubeLoader'
import DotLoader from './DotLoader'
import MaterialCircleLoader from './MaterialCircleLoader'
import MaterialProgressLoader from './MaterialProgressLoader'
import DominoLoader from './DominoLoader'
import WaveLoader from './WaveLoader'

// returning breed based on the breedType
function fromBreedToComponent(breedType: string) {
  switch (breedType) {
    case 'audio':
      return AudioLoader
    case 'box':
      return BoxLoader
    case 'circle':
      return CircleLoader
    case 'cube':
      return CubeLoader
    case 'domino':
      return DominoLoader
    case 'material-circle':
      return MaterialCircleLoader
    case 'material-progress':
      return MaterialProgressLoader
    case 'wave':
      return WaveLoader
    case 'dots':
    default:
      return DotLoader
  }
}

// main component class object
class Preloader extends React.PureComponent<PreloaderProps> {
  static defaultProps = {
    breedType: 'dots',
    renderWrapper: defaultRenderWrapper,
  }
  render() {
    const { breedType, renderWrapper, ...remainingProps } = this.props
    const Component = fromBreedToComponent(breedType)
    const componentView = <Component {...remainingProps} />
    return renderWrapper(componentView)
  }
}

export {
  Preloader,
  AudioLoader,
  BoxLoader,
  CircleLoader,
  CubeLoader,
  DotLoader,
  MaterialCircleLoader,
  MaterialProgressLoader,
  DominoLoader,
  WaveLoader,
}

export default Preloader