import { zappPipesDataConnector } from "./ZappPipesDataConnector";
import * as R from "ramda";

import { withNavigator } from "./Navigator";

const decoratorsMap: { [key: string]: ZappDecorator } = {
  zappPipes: zappPipesDataConnector,
  withNavigator,
};

const defaultDecorators = R.keys(decoratorsMap);

export function applyDecorators(
  Component: ZappComponent,
  decorators: Array<string> = defaultDecorators
): ZappComponent {
  // $FlowFixMe
  return R.compose(...R.map(R.prop(R.__, decoratorsMap), decorators))(
    Component
  );
}
