Press n or j to go to the next uncovered block, b, p or k for the previous block.
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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x | var postcss = require('postcss') var selectorParser = require('postcss-selector-parser') var LRU = require("lru-cache") cache = new LRU(100) var assign = require('object-assign') // https://github.com/abbr/deasync var deasync = require('deasync') var currentId var addId = postcss.plugin('add-id', function () { return function (root) { root.each(function rewriteSelector (node) { if (!node.selector) { // handle media queries if (node.type === 'atrule' && node.name === 'media') { node.each(rewriteSelector) } return } node.selector = selectorParser(function (selectors) { selectors.each(function (selector) { var node = null selector.each(function (n) { if (n.type !== 'pseudo') node = n }) selector.insertAfter(node, selectorParser.attribute({ attribute: currentId })) }) }).process(node.selector).result }) } }) /** * Add attribute selector to css * * @param {String} id * @param {String} css * @param {Boolean} scoped * @param {Object} options * @return {Promise} */ module.exports = deasync(function (id, css, scoped, options, cbk) { var key = id + '!!' + scoped + '!!' + css var val = cache.get(key) Iif (val) { cbk(null, val) } else { var plugins = [] var opts = {} // // do not support post plugins here, use fis3 style plugins // if (options.postcss instanceof Array) { // plugins = options.postcss.slice() // } else if (options.postcss instanceof Object) { // plugins = options.postcss.plugins || [] // opts = options.postcss.options // } // scoped css rewrite // make sure the addId plugin is only pushed once Iif (scoped && plugins.indexOf(addId) === -1) { plugins.push(addId) } // remove the addId plugin if the style block is not scoped Iif (!scoped && plugins.indexOf(addId) !== -1) { plugins.splice(plugins.indexOf(addId), 1) } // // do not support cssnano minification here, use fis3 style plugins // // minification // if (process.env.NODE_ENV === 'production') { // plugins.push(require('cssnano')(assign({ // safe: true // }, options.cssnano))) // } currentId = id postcss(plugins) .process(css, opts) .then(function (res) { cache.set(key, res.css) cbk(null, res.css) }) } }) |