react-scoped-styles
Version:
Scoped styles for React components
24 lines (23 loc) • 945 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const include_hash_1 = require("./lib/include-hash");
const dirhash_1 = require("./lib/dirhash");
const classRegex = /(?<=\.)[_a-zA-Z]+[_a-zA-Z0-9-]*/g;
const ruleBodyRegex = /\{.*?\}/g;
function styleLoader(source) {
var _a;
const includeHash = (0, include_hash_1.getInclude)(this);
const strippedSrc = source.replace(ruleBodyRegex, '');
const dirHash = (0, dirhash_1.createDirHash)(this.context);
const classes = (_a = strippedSrc
.match(classRegex)) === null || _a === void 0 ? void 0 : _a.reduce((acc, curr) => {
return acc.includes(curr) ? acc : acc.concat(curr);
}, []);
let ret = source;
classes === null || classes === void 0 ? void 0 : classes.forEach(className => {
ret = ret.replace(new RegExp(className, 'g'), c => includeHash(c, dirHash));
});
return ret;
}
exports.default = styleLoader;
;