@lusito/require-libs
Version:
Some libraries to setup require hooks
36 lines (35 loc) • 1.37 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.addScopes = addScopes;
const regex_1 = require("./regex");
function addScopes(css, generateScopedName) {
const result = { css, keyframes: {}, classes: {} };
result.css = result.css
.replace(regex_1.classRegex, (_, prefix, name) => {
const scopedName = generateScopedName(name);
result.classes[name] = scopedName;
return prefix + scopedName;
})
.replace(regex_1.keyframesRegex, (_, prefix, name) => {
if (prefix.startsWith("@-global-")) {
return prefix.replace("@-global-", "@") + name;
}
const scopedName = generateScopedName(name);
result.keyframes[name] = scopedName;
return prefix + scopedName;
});
return replaceAnimations(result);
}
function replaceAnimations(result) {
const unscoped = Object.keys(result.keyframes);
if (!unscoped.length)
return result;
const regexStr = `((?:animation|animation-name)\\s*:[^};]*)(${unscoped.join("|")})([;\\s])${regex_1.ignoreComments}`;
const regex = new RegExp(regexStr, "g");
const css = result.css.replace(regex, (_, preamble, name, ending) => `${preamble}${result.keyframes[name]}${ending}`);
return {
css,
keyframes: result.keyframes,
classes: result.classes,
};
}