UNPKG

react-scoped-styles

Version:
29 lines (28 loc) 1.26 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const dirhash_1 = require("./lib/dirhash"); const include_hash_1 = require("./lib/include-hash"); const parsers_1 = require("./lib/parsers"); const classDeclarationRegex = /className:/g; const classExprRegex = /classname:\s["'].*?["']/gi; const classRegex = /["'](.*?)["']/g; function scriptLoader(source) { const includeHash = (0, include_hash_1.getInclude)(this); if (!source.match(classDeclarationRegex)) { return source; } const dirHash = (0, dirhash_1.createDirHash)(this.context); const newSource = source.replace(classExprRegex, classExpr => { return classExpr.replace(classRegex, (_match, classNames) => { const uniqueClassNames = classNames.split(' ') .filter(Boolean) .map((className) => includeHash(className, dirHash)) .join(' '); const prefix = /^\s/.test(classNames) ? "' " : "'"; const suffix = /\s$/.test(classNames) ? " '" : "'"; return prefix + uniqueClassNames + suffix; }); }); return (0, parsers_1.replaceConditionals)(newSource, className => includeHash(className, dirHash)); } exports.default = scriptLoader;