"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const selectorParser = require("postcss-selector-parser");
const Action_1 = require("../Action");
const { isClassName, isIdentifier } = selectorParser;
/**
* Changes a Rule's selector's idents to make them more compressible.
*/
class RewriteRuleIdents extends Action_1.Action {
constructor(pass, ident, reason = "rewriteIdents") {
super(reason);
this.pass = pass;
this.ident = ident;
this.oldSelector = undefined;
}
get sourcePosition() {
if (this.ident.rule && this.ident.rule.source && this.ident.rule.source.start) {
return {
filename: this.ident.rule.source.input.file,
line: this.ident.rule.source.start.line,
column: this.ident.rule.source.start.column,
};
}
else {
return undefined;
}
}
perform() {
this.pass.cache.reset(this.ident.rule);
this.oldSelector = this.ident.rule.selector;
this.ident.idents.forEach(node => {
if (isClassName(node)) {
this.rewriteNode("class", node);
}
else Eif (isIdentifier(node)) {
this.rewriteNode("id", node);
}
});
this.newSelector = this.ident.rule.selectors.map(s => {
s = s.trim();
for (let newSelector of this.ident.selectors) {
if (s === newSelector.source.trim()) {
return newSelector.toString();
}
}
return s;
}).join(", ");
this.ident.rule.selector = this.newSelector;
return this;
}
rewriteNode(type, node) {
let oldValue = node.value;
let fromAttr = { name: type, value: oldValue };
let toAttr = this.pass.styleMapping.getRewriteOf(fromAttr);
if (!toAttr) {
toAttr = {
name: type,
value: this.pass.identGenerators.nextIdent(type),
};
this.pass.styleMapping.rewriteAttribute(fromAttr, toAttr);
}
node.value = toAttr.value;
}
logString() {
return this.annotateLogMessage(`Rewrote selector's idents from "${Action_1.stripNL(this.oldSelector)}" to "${Action_1.stripNL(this.newSelector)}".`);
}
}
exports.RewriteRuleIdents = RewriteRuleIdents;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmV3cml0ZVJ1bGVJZGVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvQWN0aW9ucy9hY3Rpb25zL1Jld3JpdGVSdWxlSWRlbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBRUEsMERBQTBEO0FBSzFELHNDQUE0QztBQUU1QyxNQUFNLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxHQUFHLGNBQWMsQ0FBQztBQWFyRDs7R0FFRztBQUNILHVCQUErQixTQUFRLGVBQU07SUFPM0MsWUFDRSxJQUFzQixFQUN0QixLQUFpQixFQUNqQixNQUFNLEdBQUcsZUFBZTtRQUd4QixLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDZCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQztJQUMvQixDQUFDO0lBQ0QsSUFBSSxjQUFjO1FBQ2hCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7WUFDN0UsT0FBTztnQkFDTCxRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJO2dCQUMzQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJO2dCQUN2QyxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNO2FBQzVDLENBQUM7U0FDSDthQUFNO1lBQ0wsT0FBTyxTQUFTLENBQUM7U0FDbEI7SUFDSCxDQUFDO0lBQ0QsT0FBTztR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 |