"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const template_api_1 = require("@opticss/template-api");
const RewriteRuleIdents_1 = require("../Actions/actions/RewriteRuleIdents");
const cssIntrospection_1 = require("../util/cssIntrospection");
class RewriteIdents {
constructor(options, templateOptions) {
this.name = "rewriteIdents";
this.initializers = ["initKnownIdents"];
this.rewriteOptions = template_api_1.rewriteOptions(options.rewriteIdents, templateOptions.rewriteIdents);
}
optimizeAllFiles(pass, _analyses, files) {
let allIdents = new Array();
let currentIdents = undefined;
cssIntrospection_1.eachFileIdent(files, pass.cache, this.rewriteOptions, (node, rule, selector) => {
if (currentIdents && (currentIdents.rule !== rule) || !currentIdents) {
if (currentIdents) {
allIdents.push(currentIdents);
}
currentIdents = {
rule,
selectors: [selector],
idents: [node],
};
}
else {
let lastSelector = currentIdents.selectors[currentIdents.selectors.length - 1];
Iif (lastSelector !== selector) {
currentIdents.selectors.push(selector);
}
currentIdents.idents.push(node);
}
});
Eif (currentIdents) {
allIdents.push(currentIdents);
}
allIdents.forEach(ident => {
pass.actions.perform(new RewriteRuleIdents_1.RewriteRuleIdents(pass, ident));
});
}
}
exports.RewriteIdents = RewriteIdents;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmV3cml0ZUlkZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9vcHRpbWl6YXRpb25zL1Jld3JpdGVJZGVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx3REFBOEk7QUFFOUksNEVBQXFGO0FBS3JGLCtEQUF5RDtBQUl6RDtJQUtFLFlBQVksT0FBdUIsRUFBRSxlQUEyQztRQUpoRixTQUFJLEdBQUcsZUFBZSxDQUFDO1FBQ3ZCLGlCQUFZLEdBQThCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUk1RCxJQUFJLENBQUMsY0FBYyxHQUFHLDZCQUFjLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxlQUFlLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDN0YsQ0FBQztJQUNELGdCQUFnQixDQUNkLElBQXNCLEVBQ3RCLFNBQXVELEVBQ3ZELEtBQXNCO1FBR3RCLElBQUksU0FBUyxHQUFHLElBQUksS0FBSyxFQUFjLENBQUM7UUFDeEMsSUFBSSxhQUFhLEdBQTJCLFNBQVMsQ0FBQztRQUN0RCxnQ0FBYSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFO1lBQzdFLElBQUksYUFBYSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtnQkFDcEUsSUFBSSxhQUFhLEVBQUU7b0JBQ2pCLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7aUJBQy9CO2dCQUNELGFBQWEsR0FBRztvQkFDZCxJQUFJO29CQUNKLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztvQkFDckIsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDO2lCQUNmLENBQUM7YUFDSDtpQkFBTTtnQkFDTCxJQUFJLFlBQVksR0FDZCxhQUFhLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUM5RCxJQUFJLFlBQVksS0FBSyxRQUFRLEVBQUU7b0JBQzdCLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2lCQUN4QztnQkFDRCxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUNqQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxhQUFhLEVBQUU7WUFDakIsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUMvQjtRQUVELFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxxQ0FBaUIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMzRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQTNDRCxzQ0EyQ0MifQ== |