diff options
Diffstat (limited to 'node_modules/postcss-zindex/index.js')
| -rw-r--r-- | node_modules/postcss-zindex/index.js | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/node_modules/postcss-zindex/index.js b/node_modules/postcss-zindex/index.js new file mode 100644 index 00000000..aa118363 --- /dev/null +++ b/node_modules/postcss-zindex/index.js @@ -0,0 +1,39 @@ +'use strict'; + +var postcss = require('postcss'); + +module.exports = postcss.plugin('postcss-zindex', function (opts) { + opts = opts || {}; + return function (css) { + var cache = require('./lib/layerCache')(opts); + var nodes = []; + var abort = false; + // First pass; cache all z indexes + css.walkDecls('z-index', function (decl) { + // Check that no negative values exist. Rebasing is only + // safe if all indices are positive numbers. + if (decl.value[0] === '-') { + abort = true; + // Stop PostCSS iterating through the rest of the decls + return false; + } + nodes.push(decl); + cache.addValue(decl.value); + }); + + // Abort if we found any negative values + // or there are no z-index declarations + if (abort || !nodes.length) { + return; + } + + cache.optimizeValues(); + + // Second pass; optimize + nodes.forEach(function (decl) { + // Need to coerce to string so that the + // AST is updated correctly + decl.value = cache.getValue(decl.value).toString(); + }); + }; +}); |
