@maskedeng-tom/ssrsx
Version:
server side renderer with tsx
62 lines • 2.54 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.nestedStyleToString = void 0;
const cssTypes_1 = require("./cssTypes");
const changeCase_1 = require("./changeCase");
////////////////////////////////////////////////////////////////////////////////
const convertToCssValue = (selector, value) => {
if (typeof value === 'number') {
const enableAppendPx = (cssTypes_1.ignorePixelStyle.indexOf((0, changeCase_1.kebabu2Camel)(selector)) < 0) && (cssTypes_1.ignorePixelStyle.indexOf(selector) < 0);
return enableAppendPx ? `${value}px` : String(value);
}
return value;
};
////////////////////////////////////////////////////////////////////////////////
const convertToCss = (selector, value) => {
if (typeof value === 'string' || typeof value === 'number') {
return `${(0, changeCase_1.camel2Kebabu)(selector)}:${convertToCssValue(selector, value)};`;
}
const styleValue = value.map(v => convertToCssValue(selector, v)).join((' '));
return `${(0, changeCase_1.camel2Kebabu)(selector)}:${styleValue};`;
};
////////////////////////////////////////////////////////////////////////////////
const nestedStyleToStringCore = (sass) => {
//
if (typeof sass === 'string') {
return sass;
}
const result = [];
for (const key in sass) {
const value = sass[key];
if (typeof value === 'boolean' || value === undefined || value === null) {
continue;
}
if (Array.isArray(value)) {
const values = [];
for (const item of value) {
if (item) {
values.push(convertToCssValue(key, item));
}
}
result.push(convertToCss(key, values.join(' ')));
}
else if (typeof value === 'object') {
result.push(`${key}{${nestedStyleToStringCore(value)}}`);
}
else if (typeof value === 'number') {
result.push(convertToCss(key, value));
}
else if (typeof value === 'string') {
result.push(convertToCss(key, value));
}
}
//
return result.join('');
};
////////////////////////////////////////////////////////////////////////////////
const nestedStyleToString = (sass, scope) => {
const result = nestedStyleToStringCore(sass);
return result.replace(/::v-scope/g, `[${scope}]`).replace(/::v-deep/g, `[${scope}]`);
};
exports.nestedStyleToString = nestedStyleToString;
//# sourceMappingURL=nestedStyleToString.js.map