ca-ui-react-themer-jss
Version:
Themer middleware for React JSS integration
35 lines (30 loc) • 1.04 kB
Flow
/**
* Copyright (c) 2017 CA. All rights reserved.
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
*/
// @flow
import mapProps from 'recompose/mapProps';
import objectAssign from 'object-assign';
import objectOmit from 'object.omit';
import { mapThemeProps } from 'ca-ui-themer';
/**
* Property mapper to trasform ReactJSS output props into themer props.
*
* @param {Object} props Input props from ReactJSS
* @return {Object} Output props to be passed to themed component
*/
export const mapper = (props: Object) => {
let styles;
if (props.sheet && props.sheet.classes) {
styles = props.sheet.classes;
} else if (props.classes) {
styles = props.classes;
} else {
return props;
}
const resolvedTheme = objectAssign({}, props.theme, { styles });
return mapThemeProps(objectOmit(props, ['sheet', 'classes']), resolvedTheme);
};
// react decorator based on prop-mapper function
export const mapPropsDecorator = mapProps(mapper);