32 lines
1.2 KiB
JavaScript
32 lines
1.2 KiB
JavaScript
|
"use strict";
|
||
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||
|
};
|
||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
const css_1 = __importDefault(require("css"));
|
||
|
const class_name_1 = __importDefault(require("./class-name"));
|
||
|
const ID_OR_CLASS_RE = /#[a-zA-Z0-9_-]+|\.-?[a-zA-Z0-9_][a-zA-Z0-9_-]*/g;
|
||
|
const ADD_POSTFIX_REPLACEMENT = '$&' + class_name_1.default.postfix;
|
||
|
function transformSelector(selector) {
|
||
|
return selector.replace(ID_OR_CLASS_RE, ADD_POSTFIX_REPLACEMENT);
|
||
|
}
|
||
|
function addUIClassPostfix(rules) {
|
||
|
for (const node of rules) {
|
||
|
if (node.type === 'rule') {
|
||
|
const rule = node;
|
||
|
rule.selectors = rule.selectors && rule.selectors.map(transformSelector);
|
||
|
}
|
||
|
const nodeWithRules = node;
|
||
|
if (nodeWithRules.rules)
|
||
|
addUIClassPostfix(nodeWithRules.rules);
|
||
|
}
|
||
|
}
|
||
|
function createShadowStylesheet(cssCode) {
|
||
|
const ast = css_1.default.parse(cssCode, { silent: true });
|
||
|
if (ast.stylesheet)
|
||
|
addUIClassPostfix(ast.stylesheet.rules);
|
||
|
return css_1.default.stringify(ast, { compress: false });
|
||
|
}
|
||
|
exports.default = createShadowStylesheet;module.exports = exports.default;
|
||
|
|