You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					67 lines
				
				1.8 KiB
			
		
		
			
		
	
	
					67 lines
				
				1.8 KiB
			| 
								 
											4 years ago
										 
									 | 
							
								'use strict';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Object.defineProperty(exports, "__esModule", {
							 | 
						||
| 
								 | 
							
								    value: true
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								exports.default = normalizeBoxShadow;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var _postcssValueParser = require('postcss-value-parser');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var _cssnanoUtilGetArguments = require('cssnano-util-get-arguments');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var _cssnanoUtilGetArguments2 = _interopRequireDefault(_cssnanoUtilGetArguments);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var _addSpace = require('../lib/addSpace');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var _addSpace2 = _interopRequireDefault(_addSpace);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var _getValue = require('../lib/getValue');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var _getValue2 = _interopRequireDefault(_getValue);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// box-shadow: inset? && <length>{2,4} && <color>?
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function normalizeBoxShadow(parsed) {
							 | 
						||
| 
								 | 
							
								    let args = (0, _cssnanoUtilGetArguments2.default)(parsed);
							 | 
						||
| 
								 | 
							
								    let abort = false;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    let values = args.reduce((list, arg) => {
							 | 
						||
| 
								 | 
							
								        let val = [];
							 | 
						||
| 
								 | 
							
								        let state = {
							 | 
						||
| 
								 | 
							
								            inset: [],
							 | 
						||
| 
								 | 
							
								            color: []
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        arg.forEach(node => {
							 | 
						||
| 
								 | 
							
								            const { type, value } = node;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            if (type === 'function' && ~value.toLowerCase().indexOf('calc')) {
							 | 
						||
| 
								 | 
							
								                abort = true;
							 | 
						||
| 
								 | 
							
								                return;
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            if (type === 'space') {
							 | 
						||
| 
								 | 
							
								                return;
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            if ((0, _postcssValueParser.unit)(value)) {
							 | 
						||
| 
								 | 
							
								                val = [...val, node, (0, _addSpace2.default)()];
							 | 
						||
| 
								 | 
							
								            } else if (value.toLowerCase() === 'inset') {
							 | 
						||
| 
								 | 
							
								                state.inset = [...state.inset, node, (0, _addSpace2.default)()];
							 | 
						||
| 
								 | 
							
								            } else {
							 | 
						||
| 
								 | 
							
								                state.color = [...state.color, node, (0, _addSpace2.default)()];
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        return [...list, [...state.inset, ...val, ...state.color]];
							 | 
						||
| 
								 | 
							
								    }, []);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    if (abort) {
							 | 
						||
| 
								 | 
							
								        return parsed.toString();
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    return (0, _getValue2.default)(values);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								module.exports = exports['default'];
							 |