@web-atoms/core
Version:
76 lines (75 loc) • 2.28 kB
JavaScript
System.register(["../../style/StyleRule"], function (_export, _context) {
"use strict";
var AtomStyleRules, styleId;
function fromCamelToHyphen(input) {
return input.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
}
function createStyleText(name, styles) {
const styleList = [];
const subclasses = [];
for (const key in styles) {
if (styles.hasOwnProperty(key)) {
if (/^(\_\$\_|className$|toString$)/i.test(key)) {
continue;
}
const element = styles[key];
if (element === undefined || element === null) {
continue;
}
const keyName = fromCamelToHyphen(key);
if (key === "subclasses") {
const n = name;
for (const subclassKey in element) {
if (element.hasOwnProperty(subclassKey)) {
const ve = element[subclassKey];
subclasses.push(...createStyleText(`${n}${subclassKey}`, ve));
}
}
} else {
if (element.url) {
styleList.push(`${keyName}: url(${element})`);
} else {
styleList.push(`${keyName}: ${element}`);
}
}
}
}
const cname = fromCamelToHyphen(name);
const styleClassName = `${cname}`;
if (styleList.length) {
return [`${styleClassName} {\r\n${styleList.join(";\r\n")}; }`, ...subclasses];
}
return subclasses;
}
function CSS(style, selectorName) {
let styleName = "";
if (style instanceof AtomStyleRules) {
styleName = style.name || "";
if (styleName) {
styleName = "-" + styleName;
}
style = style.style;
}
let className = selectorName;
if (!selectorName) {
className = `wa-style-${styleId++}${styleName}`;
selectorName = `.${className}`;
}
const s = document.createElement("style");
s.id = selectorName;
const list = createStyleText(selectorName, style);
s.textContent = list.join("\r\n");
document.head.appendChild(s);
return className;
}
_export("default", CSS);
return {
setters: [function (_styleStyleRule) {
AtomStyleRules = _styleStyleRule.AtomStyleRules;
}],
execute: function () {
styleId = 1;
}
};
});
//# sourceMappingURL=CSS.js.map