ezcss
Version:
Super lite CSS-in-JS
50 lines (49 loc) • 1.7 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var util_1 = require("./util");
var atoms_1 = require("./atoms");
var interpolateSelectors_1 = require("./interpolateSelectors");
/**
* Converts external POJSO IStyles style description into internal stylesheet AST representation.
* @param {TStyles} pojso
* @returns {Array}
*/
var toStyleSheet = function (pojso) {
var stylesheet = [];
for (var selector in pojso) {
var values = pojso[selector];
// Atrule: @media, @keyframe, ...
if (selector[0] === '@') {
stylesheet.push({
type: 'Atrule',
prelude: selector,
rules: toStyleSheet(values),
});
continue;
}
var selectors = selector.split(',');
var styles = values;
var declarations = [];
var rule = [selector, declarations];
for (var prop in styles) {
var value = styles[prop];
switch (typeof value) {
case 'string':
case 'number':
prop = atoms_1.default[prop] || util_1.kebabCase(prop);
declarations.push([prop, value]);
break;
case 'object': {
var selectorsInterpolated = interpolateSelectors_1.default(selectors, prop);
stylesheet = stylesheet.concat(toStyleSheet((_a = {}, _a[selectorsInterpolated] = value, _a)));
break;
}
}
}
if (declarations.length)
stylesheet.push(rule);
}
return stylesheet;
var _a;
};
exports.default = toStyleSheet;