2025-05-28 15:36:51 -07:00

46 lines
1.0 KiB
JavaScript

import warning from 'tiny-warning';
var semiWithNl = /;\n/;
/**
* Naive CSS parser.
* - Supports only rule body (no selectors)
* - Requires semicolon and new line after the value (except of last line)
* - No nested rules support
*/
var parse = function parse(cssText) {
var style = {};
var split = cssText.split(semiWithNl);
for (var i = 0; i < split.length; i++) {
var decl = (split[i] || '').trim();
if (!decl) continue;
var colonIndex = decl.indexOf(':');
if (colonIndex === -1) {
process.env.NODE_ENV !== "production" ? warning(false, "[JSS] Malformed CSS string \"" + decl + "\"") : void 0;
continue;
}
var prop = decl.substr(0, colonIndex).trim();
var value = decl.substr(colonIndex + 1).trim();
style[prop] = value;
}
return style;
};
var onProcessRule = function onProcessRule(rule) {
if (typeof rule.style === 'string') {
rule.style = parse(rule.style);
}
};
function templatePlugin() {
return {
onProcessRule: onProcessRule
};
}
export default templatePlugin;