diff options
| author | ruki <waruqi@gmail.com> | 2018-11-08 00:38:48 +0800 |
|---|---|---|
| committer | ruki <waruqi@gmail.com> | 2018-11-07 21:53:09 +0800 |
| commit | 26105034da4fcce7ac883c899d781f016559310d (patch) | |
| tree | c459a5dc4e3aa0972d9919033ece511ce76dd129 /node_modules/cssnano/dist/lib/reduceBackgroundRepeat.js | |
| parent | 2c77f00f1a7ecb6c8192f9c16d3b2001b254a107 (diff) | |
| download | xmake-docs-26105034da4fcce7ac883c899d781f016559310d.tar.gz xmake-docs-26105034da4fcce7ac883c899d781f016559310d.zip | |
switch to vuepress
Diffstat (limited to 'node_modules/cssnano/dist/lib/reduceBackgroundRepeat.js')
| -rw-r--r-- | node_modules/cssnano/dist/lib/reduceBackgroundRepeat.js | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/node_modules/cssnano/dist/lib/reduceBackgroundRepeat.js b/node_modules/cssnano/dist/lib/reduceBackgroundRepeat.js new file mode 100644 index 00000000..50709c5c --- /dev/null +++ b/node_modules/cssnano/dist/lib/reduceBackgroundRepeat.js @@ -0,0 +1,93 @@ +'use strict'; + +exports.__esModule = true; + +var _postcss = require('postcss'); + +var _postcss2 = _interopRequireDefault(_postcss); + +var _postcssValueParser = require('postcss-value-parser'); + +var _postcssValueParser2 = _interopRequireDefault(_postcssValueParser); + +var _evenValues = require('./evenValues'); + +var _evenValues2 = _interopRequireDefault(_evenValues); + +var _getArguments = require('./getArguments'); + +var _getArguments2 = _interopRequireDefault(_getArguments); + +var _getMatch = require('./getMatch'); + +var _getMatch2 = _interopRequireDefault(_getMatch); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var mappings = [['repeat-x', ['repeat', 'no-repeat']], ['repeat-y', ['no-repeat', 'repeat']], ['repeat', ['repeat', 'repeat']], ['space', ['space', 'space']], ['round', ['round', 'round']], ['no-repeat', ['no-repeat', 'no-repeat']]]; + +var repeat = [mappings[0][0], mappings[1][0], mappings[2][0], mappings[3][0], mappings[4][0], mappings[5][0]]; + +var getMatch = (0, _getMatch2.default)(mappings); + +function transform(decl) { + var values = (0, _postcssValueParser2.default)(decl.value); + if (values.nodes.length === 1) { + return; + } + var args = (0, _getArguments2.default)(values); + var relevant = []; + args.forEach(function (arg) { + relevant.push({ + start: null, + end: null + }); + arg.forEach(function (part, index) { + var isRepeat = ~repeat.indexOf(part.value); + var len = relevant.length - 1; + if (relevant[len].start === null && isRepeat) { + relevant[len].start = index; + relevant[len].end = index; + return; + } + if (relevant[len].start !== null) { + if (part.type === 'space') { + return; + } else if (isRepeat) { + relevant[len].end = index; + return; + } + return; + } + }); + }); + relevant.forEach(function (range, index) { + if (range.start === null) { + return; + } + var val = args[index].slice(range.start, range.end + 1); + if (val.length !== 3) { + return; + } + var match = getMatch(val.filter(_evenValues2.default).map(function (n) { + return n.value; + })); + if (match.length) { + args[index][range.start].value = match[0][0]; + args[index][range.start + 1].value = ''; + args[index][range.end].value = ''; + } + }); + decl.value = values.toString(); +} + +var plugin = _postcss2.default.plugin('cssnano-reduce-background-repeat', function () { + return function (css) { + return css.walkDecls(/background(-repeat|$)/, transform); + }; +}); + +plugin.mappings = mappings; + +exports.default = plugin; +module.exports = exports['default'];
\ No newline at end of file |
