| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220 | 'use strict';Object.defineProperty(exports, "__esModule", {    value: true});var _has = require('has');var _has2 = _interopRequireDefault(_has);var _postcss = require('postcss');var _postcss2 = _interopRequireDefault(_postcss);var _postcssValueParser = require('postcss-value-parser');var _postcssValueParser2 = _interopRequireDefault(_postcssValueParser);var _cssnanoUtilGetMatch = require('cssnano-util-get-match');var _cssnanoUtilGetMatch2 = _interopRequireDefault(_cssnanoUtilGetMatch);function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }function getValues(list, { value }, index) {    if (index % 2 === 0) {        return [...list, parseFloat(value)];    }    return list;}function matrix3d(node, values) {    // matrix3d(a, b, 0, 0, c, d, 0, 0, 0, 0, 1, 0, tx, ty, 0, 1) => matrix(a, b, c, d, tx, ty)    if (values[15] && values[2] === 0 && values[3] === 0 && values[6] === 0 && values[7] === 0 && values[8] === 0 && values[9] === 0 && values[10] === 1 && values[11] === 0 && values[14] === 0 && values[15] === 1) {        const { nodes } = node;        node.value = 'matrix';        node.nodes = [nodes[0], // a        nodes[1], // ,        nodes[2], // b        nodes[3], // ,        nodes[8], // c        nodes[9], // ,        nodes[10], // d        nodes[11], // ,        nodes[24], // tx        nodes[25], // ,        nodes[26]];    }}const rotate3dMappings = [['rotateX', [1, 0, 0]], // rotate3d(1, 0, 0, a) => rotateX(a)['rotateY', [0, 1, 0]], // rotate3d(0, 1, 0, a) => rotateY(a)['rotate', [0, 0, 1]]];const rotate3dMatch = (0, _cssnanoUtilGetMatch2.default)(rotate3dMappings);function rotate3d(node, values) {    const { nodes } = node;    const match = rotate3dMatch(values.slice(0, 3));    if (match.length) {        node.value = match;        node.nodes = [nodes[6]];    }}function rotateZ(node) {    // rotateZ(rz) => rotate(rz)    node.value = 'rotate';}function scale(node, values) {    const { nodes } = node;    if (!nodes[2]) {        return;    }    const [first, second] = values;    // scale(sx, sy) => scale(sx)    if (first === second) {        node.nodes = [nodes[0]];        return;    }    // scale(sx, 1) => scaleX(sx)    if (second === 1) {        node.value = 'scaleX';        node.nodes = [nodes[0]];        return;    }    // scale(1, sy) => scaleY(sy)    if (first === 1) {        node.value = 'scaleY';        node.nodes = [nodes[2]];        return;    }}function scale3d(node, values) {    const { nodes } = node;    const [first, second, third] = values;    // scale3d(sx, 1, 1) => scaleX(sx)    if (second === 1 && third === 1) {        node.value = 'scaleX';        node.nodes = [nodes[0]];        return;    }    // scale3d(1, sy, 1) => scaleY(sy)    if (first === 1 && third === 1) {        node.value = 'scaleY';        node.nodes = [nodes[2]];        return;    }    // scale3d(1, 1, sz) => scaleZ(sz)    if (first === 1 && second === 1) {        node.value = 'scaleZ';        node.nodes = [nodes[4]];        return;    }}function translate(node, values) {    const { nodes } = node;    if (!nodes[2]) {        return;    }    // translate(tx, 0) => translate(tx)    if (values[1] === 0) {        node.nodes = [nodes[0]];        return;    }    // translate(0, ty) => translateY(ty)    if (values[0] === 0) {        node.value = 'translateY';        node.nodes = [nodes[2]];        return;    }}function translate3d(node, values) {    const { nodes } = node;    // translate3d(0, 0, tz) => translateZ(tz)    if (values[0] === 0 && values[1] === 0) {        node.value = 'translateZ';        node.nodes = [nodes[4]];    }}const reducers = {    matrix3d,    rotate3d,    rotateZ,    scale,    scale3d,    translate,    translate3d};function normalizeReducerName(name) {    const lowerCasedName = name.toLowerCase();    if (lowerCasedName === 'rotatez') {        return 'rotateZ';    }    return lowerCasedName;}function reduce(node) {    const { nodes, type, value } = node;    const normalizedReducerName = normalizeReducerName(value);    if (type === 'function' && (0, _has2.default)(reducers, normalizedReducerName)) {        reducers[normalizedReducerName](node, nodes.reduce(getValues, []));    }    return false;}exports.default = _postcss2.default.plugin('postcss-reduce-transforms', () => {    return css => {        const cache = {};        css.walkDecls(/transform$/i, decl => {            const value = decl.value;            if (cache[value]) {                decl.value = cache[value];                return;            }            const result = (0, _postcssValueParser2.default)(value).walk(reduce).toString();            decl.value = result;            cache[value] = result;        });    };});module.exports = exports['default'];
 |