postcss-reduce-transforms
Advanced tools
Comparing version 1.0.3 to 1.0.4
@@ -0,1 +1,6 @@ | ||
# 1.0.4 | ||
* Refactor the main module, slight performance tweak and ±0.9K less file size | ||
on disk. | ||
# 1.0.3 | ||
@@ -2,0 +7,0 @@ |
'use strict'; | ||
Object.defineProperty(exports, '__esModule', { | ||
value: true | ||
}); | ||
exports.__esModule = true; | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } | ||
var _has = require('has'); | ||
var _has2 = _interopRequireDefault(_has); | ||
var _postcss = require('postcss'); | ||
@@ -17,117 +17,175 @@ | ||
function reduce(node) { | ||
if (!node.type === 'function') { | ||
return false; | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
function getValues(list, _ref, index) { | ||
var value = _ref.value; | ||
if (index % 2 === 0) { | ||
return [].concat(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 (node.value === 'matrix3d') { | ||
if (node.nodes[30] && parseFloat(node.nodes[4].value) === 0 && parseFloat(node.nodes[6].value) === 0 && parseFloat(node.nodes[12].value) === 0 && parseFloat(node.nodes[14].value) === 0 && parseFloat(node.nodes[16].value) === 0 && parseFloat(node.nodes[18].value) === 0 && parseFloat(node.nodes[20].value) === 1 && parseFloat(node.nodes[22].value) === 0 && parseFloat(node.nodes[28].value) === 0 && parseFloat(node.nodes[30].value) === 1) { | ||
node.value = 'matrix'; | ||
node.nodes = [node.nodes[0], node.nodes[1], node.nodes[2], node.nodes[3], node.nodes[8], node.nodes[9], node.nodes[10], node.nodes[11], node.nodes[24], node.nodes[25], node.nodes[26]]; | ||
} | ||
return false; | ||
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) { | ||
var nodes = node.nodes; | ||
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]]; | ||
} | ||
if (node.value === 'rotate3d') { | ||
if (node.nodes[6]) { | ||
var first = parseFloat(node.nodes[0].value); | ||
var second = parseFloat(node.nodes[2].value); | ||
var third = parseFloat(node.nodes[4].value); | ||
// rotate3d(0, 1, 0, a) => rotateY(a) | ||
if (first === 1 && second === 0 && third === 0) { | ||
node.value = 'rotateX'; | ||
node.nodes = [node.nodes[6]]; | ||
return false; | ||
} | ||
// rotate3d(0, 1, 0, a) => rotateY(a) | ||
if (first === 0 && second === 1 && third === 0) { | ||
node.value = 'rotateY'; | ||
node.nodes = [node.nodes[6]]; | ||
return false; | ||
} | ||
// rotate3d(0, 0, 1, a) => rotate(a) (or rotateZ(a)) | ||
if (first === 0 && second === 0 && third === 1) { | ||
node.value = 'rotate'; | ||
node.nodes = [node.nodes[6]]; | ||
return false; | ||
} | ||
} | ||
return false; | ||
} | ||
var 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]]]; | ||
function rotate3dMatch(values) { | ||
return values.reduce(function (list, arg, i) { | ||
return list.filter(function (value) { | ||
return value[1][i] === arg; | ||
}); | ||
}, rotate3dMappings); | ||
} | ||
function rotate3d(node, values) { | ||
var nodes = node.nodes; | ||
if (!nodes[6]) { | ||
return; | ||
} | ||
var match = rotate3dMatch(values.slice(0, 3)); | ||
if (match.length) { | ||
node.value = match[0][0]; | ||
node.nodes = [nodes[6]]; | ||
} | ||
} | ||
function rotateZ(node) { | ||
// rotateZ(rz) => rotate(rz) | ||
if (node.value === 'rotateZ') { | ||
node.value = 'rotate'; | ||
return false; | ||
node.value = 'rotate'; | ||
} | ||
function scale(node, values) { | ||
var nodes = node.nodes; | ||
if (!nodes[2]) { | ||
return; | ||
} | ||
if (node.value === 'scale' || node.value === 'translate') { | ||
if (node.value === 'scale' && node.nodes[2]) { | ||
// scale(sx, sy) => scale(sx) | ||
if (node.nodes[0].value === node.nodes[2].value) { | ||
node.nodes = [node.nodes[0]]; | ||
return false; | ||
} | ||
// scale(sx, 1) => scaleX(sx) | ||
if (parseFloat(node.nodes[2].value) === 1) { | ||
node.value = 'scaleX'; | ||
node.nodes = [node.nodes[0]]; | ||
return false; | ||
} | ||
// scale(1, sy) => scaleY(sy) | ||
if (parseFloat(node.nodes[0].value) === 1) { | ||
node.value = 'scaleY'; | ||
node.nodes = [node.nodes[2]]; | ||
return false; | ||
} | ||
return false; | ||
} | ||
if (node.value === 'translate' && node.nodes[2]) { | ||
// translate(tx, 0) => translate(tx) | ||
if (parseFloat(node.nodes[2].value) === 0) { | ||
node.value = 'translate', node.nodes = [node.nodes[0]]; | ||
return false; | ||
} | ||
// translate(0, ty) => translateY(ty) | ||
if (parseFloat(node.nodes[0].value) === 0) { | ||
node.value = 'translateY', node.nodes = [node.nodes[2]]; | ||
return false; | ||
} | ||
return false; | ||
} | ||
return false; | ||
var first = values[0]; | ||
var second = values[1]; | ||
// scale(sx, sy) => scale(sx) | ||
if (first === second) { | ||
node.nodes = [nodes[0]]; | ||
return; | ||
} | ||
if (node.value === 'scale3d') { | ||
if (node.nodes[4]) { | ||
var first = parseFloat(node.nodes[0].value); | ||
var second = parseFloat(node.nodes[2].value); | ||
var third = parseFloat(node.nodes[4].value); | ||
// scale3d(sx, 1, 1) => scaleX(sx) | ||
if (second === 1 && third === 1) { | ||
node.value = 'scaleX', node.nodes = [node.nodes[0]]; | ||
return false; | ||
} | ||
// scale3d(1, sy, 1) => scaleY(sy) | ||
if (first === 1 && third === 1) { | ||
node.value = 'scaleY', node.nodes = [node.nodes[2]]; | ||
return false; | ||
} | ||
// scale3d(1, 1, sz) => scaleZ(sz) | ||
if (first === 1 && second === 1) { | ||
node.value = 'scaleZ', node.nodes = [node.nodes[4]]; | ||
return false; | ||
} | ||
} | ||
return false; | ||
// 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) { | ||
var nodes = node.nodes; | ||
if (!nodes[4]) { | ||
return; | ||
} | ||
var first = values[0]; | ||
var second = values[1]; | ||
var third = values[2]; | ||
// 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) { | ||
var nodes = node.nodes; | ||
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) { | ||
var nodes = node.nodes; | ||
// translate3d(0, 0, tz) => translateZ(tz) | ||
if (node.value === 'translate3d') { | ||
if (node.nodes[4] && parseFloat(node.nodes[0].value) === 0 && parseFloat(node.nodes[2].value) === 0) { | ||
node.value = 'translateZ', node.nodes = [node.nodes[4]]; | ||
} | ||
return false; | ||
if (nodes[4] && values[0] === 0 && values[1] === 0) { | ||
node.value = 'translateZ'; | ||
node.nodes = [nodes[4]]; | ||
} | ||
} | ||
exports['default'] = _postcss2['default'].plugin('postcss-reduce-transforms', function () { | ||
var reducers = { | ||
matrix3d: matrix3d, | ||
rotate3d: rotate3d, | ||
rotateZ: rotateZ, | ||
scale: scale, | ||
scale3d: scale3d, | ||
translate: translate, | ||
translate3d: translate3d | ||
}; | ||
function reduce(node) { | ||
var nodes = node.nodes; | ||
var type = node.type; | ||
var value = node.value; | ||
if (type === 'function' && (0, _has2.default)(reducers, value)) { | ||
reducers[value](node, nodes.reduce(getValues, [])); | ||
} | ||
return false; | ||
} | ||
exports.default = _postcss2.default.plugin('postcss-reduce-transforms', function () { | ||
return function (css) { | ||
css.walkDecls(/transform$/, function (decl) { | ||
decl.value = (0, _postcssValueParser2['default'])(decl.value).walk(reduce).toString(); | ||
decl.value = (0, _postcssValueParser2.default)(decl.value).walk(reduce).toString(); | ||
}); | ||
@@ -134,0 +192,0 @@ }; |
{ | ||
"name": "postcss-reduce-transforms", | ||
"version": "1.0.3", | ||
"version": "1.0.4", | ||
"description": "Reduce transform functions with PostCSS.", | ||
"main": "dist/index.js", | ||
"scripts": { | ||
"lint": "eslint src", | ||
"prepublish": "babel src --out-dir dist --ignore /__tests__/", | ||
"test": "npm run lint && babel-tape-runner \"src/**/__tests__/*.js\" | tap-spec" | ||
"pretest": "eslint src", | ||
"prepublish": "del-cli dist && BABEL_ENV=publish babel src --out-dir dist --ignore /__tests__/", | ||
"test": "ava src/__tests__", | ||
"test-012": "ava src/__tests__" | ||
}, | ||
@@ -17,7 +18,15 @@ "files": [ | ||
"devDependencies": { | ||
"babel": "^5.8.23", | ||
"babel-tape-runner": "^1.2.0", | ||
"eslint": "^1.6.0", | ||
"tap-spec": "^4.1.0", | ||
"tape": "^4.2.1" | ||
"ava": "^0.16.0", | ||
"babel-cli": "^6.3.17", | ||
"babel-core": "^6.3.26", | ||
"babel-plugin-add-module-exports": "^0.2.1", | ||
"babel-preset-es2015": "^6.3.13", | ||
"babel-preset-es2015-loose": "^7.0.0", | ||
"babel-preset-stage-0": "^6.3.13", | ||
"babel-register": "^6.9.0", | ||
"del-cli": "^0.2.0", | ||
"eslint": "^3.0.0", | ||
"eslint-config-cssnano": "^3.0.0", | ||
"eslint-plugin-babel": "^3.3.0", | ||
"eslint-plugin-import": "^2.0.1" | ||
}, | ||
@@ -32,5 +41,12 @@ "homepage": "https://github.com/ben-eb/postcss-reduce-transforms", | ||
"dependencies": { | ||
"has": "^1.0.1", | ||
"postcss": "^5.0.8", | ||
"postcss-value-parser": "^3.0.1" | ||
}, | ||
"ava": { | ||
"require": "babel-register" | ||
}, | ||
"eslintConfig": { | ||
"extends": "cssnano" | ||
} | ||
} |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
161
8767
3
13
1
+ Addedhas@^1.0.1
+ Addedhas@1.0.4(transitive)