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 / atoms / Placeholder / FigurePlaceholder / FigurePlaceholder.tsx
Size: Mime:
import React from 'react'
import { omit } from '@skava/utils'
import { FigurePlaceholderProps, FigurePlaceholderState } from './typings'
import {
  renderCaption as defaultRenderCaption,
  renderFigureImage as defaultRenderFigureImage,
  renderWrapper as defaultRenderWrapper,
} from './renderProps'

class FigurePlaceholder extends React.PureComponent<
  FigurePlaceholderProps,
  FigurePlaceholderState
> {
  static defaultProps = {
    width: '300px',
    height: '300px',

    renderCaption: defaultRenderCaption,
    renderFigureImage: defaultRenderFigureImage,
    renderWrapper: defaultRenderWrapper,
  }
  render() {
    const {
      renderCaption,
      renderFigureImage,
      renderWrapper,

      ...remainingProps
    } = this.props

    const imageWrapper = renderFigureImage(remainingProps)
    const figCaption = renderCaption(remainingProps)
    const wrapperProps = omit(remainingProps, ['width', 'height'])

    const children = (
      <React.Fragment>
        {imageWrapper}
        {figCaption}
      </React.Fragment>
    )
    const view = renderWrapper({ ...wrapperProps, children })
    return view
  }
}

export { FigurePlaceholder }
export default FigurePlaceholder