123456789101112131415161718192021222324252627282930313233343536373839 |
- '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();
- });
- };
- });
|