all files / src/Actions/actions/ ExpandShorthand.js

85.19% Statements 23/27
50% Branches 2/4
40% Functions 2/5
88.46% Lines 23/26
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43                15× 15× 13× 13× 13× 13× 13× 13×                        
"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