"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const postcss = require("postcss");
const Action_1 = require("../Action");
/**
* Merges duplicate declarations from multiple rule sets into a new rule set.
*/
class ExpandShorthand extends Action_1.Action {
constructor(decl, decls, optimization, reason) {
super(optimization);
this.reason = reason;
this.decl = decl;
this.rule = decl.parent;
this.decls = decls;
this.newDecls = [];
}
perform() {
let expanded = new Set();
for (let decl of this.decls) {
decl.expanded = true;
if (expanded.has(decl.prop))
continue;
expanded.add(decl.prop);
let declNode = postcss.decl(decl);
declNode.raws = { before: " ", after: " " };
this.rule.insertBefore(this.decl, declNode);
let newDecl = this.decl.prev();
this.newDecls.push(newDecl);
}
return this;
}
logString() {
return this.annotateLogMessage(`Expanded ${declString(this.decl)} into ${this.newDecls.map(d => declString(d)).join(" ")}. ${this.reason}`);
}
get sourcePosition() {
return this.nodeSourcePosition(this.decl);
}
}
exports.ExpandShorthand = ExpandShorthand;
function declString(decl) {
return `${decl.prop}: ${decl.value}${decl.important ? " !important" : ""};`;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXhwYW5kU2hvcnRoYW5kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL0FjdGlvbnMvYWN0aW9ucy9FeHBhbmRTaG9ydGhhbmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSxtQ0FBbUM7QUFJbkMsc0NBQW1DO0FBRW5DOztHQUVHO0FBQ0gscUJBQTZCLFNBQVEsZUFBTTtJQU16QyxZQUNFLElBQXlCLEVBQ3pCLEtBQTZCLEVBQzdCLFlBQWlDLEVBQ2pDLE1BQWM7UUFFZCxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLElBQUksR0FBaUIsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUN0QyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksUUFBUSxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7UUFDakMsS0FBSyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUFFLFNBQVM7WUFDdEMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDeEIsSUFBSSxRQUFRLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsQyxRQUFRLENBQUMsSUFBSSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFDLENBQUM7WUFDM0MsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztZQUM1QyxJQUFJLE9BQU8sR0FBd0IsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNwRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUM3QjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDOUksQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUMsQ0FBQztDQUNGO0FBMUNELDBDQTBDQztBQUVELG9CQUFvQixJQUF1RDtJQUN6RSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUM7QUFDOUUsQ0FBQyJ9 |