react-native-web-headroom
Version:
React Native Web Headroom
33 lines (27 loc) • 905 B
JavaScript
/* @flow */
import appendPxIfNeeded from './append-px-if-needed';
import camelCasePropsToDashCase from './camel-case-props-to-dash-case';
import mapObject from './map-object';
import {getPrefixedStyle} from './prefixer';
function createMarkupForStyles(style: Object): string {
return Object.keys(style)
.map(property => {
return property + ': ' + style[property] + ';';
})
.join('\n');
}
export default function cssRuleSetToString(
selector: string,
rules: Object,
userAgent: ?string,
): string {
if (!rules) {
return '';
}
const rulesWithPx = mapObject(rules, (value, key) =>
appendPxIfNeeded(key, value));
const prefixedRules = getPrefixedStyle(rulesWithPx, userAgent);
const cssPrefixedRules = camelCasePropsToDashCase(prefixedRules);
const serializedRules = createMarkupForStyles(cssPrefixedRules);
return selector + '{' + serializedRules + '}';
}