All files / hocs/prepareComponent index.js

0% Statements 0/6
100% Branches 0/0
0% Functions 0/3
0% Lines 0/6

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32                                                               
// @flow
 
import React from "react"
 
type GetProps<Props, ComponentProps> = (props: Props) => ComponentProps
 
type Prepare<Props, ComponentProps> = (
  Component: React$AbstractComponent<ComponentProps, any>
) => React$AbstractComponent<Props, any>
 
/*
 * Receive Props, transform them in ComponentProps and return
 * Component with ComponentProps
 */
const prepareComponent =
  <Props, ComponentProps>(
    usePrepareComponent: GetProps<Props, ComponentProps>
  ): Prepare<Props, ComponentProps> =>
    (
      Component: React$AbstractComponent<ComponentProps, any>
    ): React$AbstractComponent<Props, any> => {
      const PrepareComponent = (props: Props) => {
        const newProps: ComponentProps = usePrepareComponent(props)
 
        return <Component {...newProps} />
      }
 
      return PrepareComponent
    }
 
export default prepareComponent