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.
		
		
		
		
		
			
		
			
				
					
					
						
							159 lines
						
					
					
						
							3.9 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							159 lines
						
					
					
						
							3.9 KiB
						
					
					
				
								"use strict";
							 | 
						|
								
							 | 
						|
								Object.defineProperty(exports, "__esModule", {
							 | 
						|
								  value: true
							 | 
						|
								});
							 | 
						|
								exports.default = void 0;
							 | 
						|
								
							 | 
						|
								var _postcssValueParser = _interopRequireDefault(require("postcss-value-parser"));
							 | 
						|
								
							 | 
						|
								var _animation = _interopRequireDefault(require("./rules/animation"));
							 | 
						|
								
							 | 
						|
								var _border = _interopRequireDefault(require("./rules/border"));
							 | 
						|
								
							 | 
						|
								var _boxShadow = _interopRequireDefault(require("./rules/boxShadow"));
							 | 
						|
								
							 | 
						|
								var _flexFlow = _interopRequireDefault(require("./rules/flexFlow"));
							 | 
						|
								
							 | 
						|
								var _transition = _interopRequireDefault(require("./rules/transition"));
							 | 
						|
								
							 | 
						|
								var _grid = require("./rules/grid");
							 | 
						|
								
							 | 
						|
								var _listStyle = _interopRequireDefault(require("./rules/listStyle"));
							 | 
						|
								
							 | 
						|
								var _columns = require("./rules/columns");
							 | 
						|
								
							 | 
						|
								function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
							 | 
						|
								
							 | 
						|
								// rules
							 | 
						|
								const borderRules = {
							 | 
						|
								  border: _border.default,
							 | 
						|
								  'border-block': _border.default,
							 | 
						|
								  'border-inline': _border.default,
							 | 
						|
								  'border-block-end': _border.default,
							 | 
						|
								  'border-block-start': _border.default,
							 | 
						|
								  'border-inline-end': _border.default,
							 | 
						|
								  'border-inline-start': _border.default,
							 | 
						|
								  'border-top': _border.default,
							 | 
						|
								  'border-right': _border.default,
							 | 
						|
								  'border-bottom': _border.default,
							 | 
						|
								  'border-left': _border.default
							 | 
						|
								};
							 | 
						|
								const grid = {
							 | 
						|
								  'grid-auto-flow': _grid.normalizeGridAutoFlow,
							 | 
						|
								  'grid-column-gap': _grid.normalizeGridColumnRowGap,
							 | 
						|
								  // normal | <length-percentage>
							 | 
						|
								  'grid-row-gap': _grid.normalizeGridColumnRowGap,
							 | 
						|
								  // normal | <length-percentage>
							 | 
						|
								  'grid-column': _grid.normalizeGridColumnRow,
							 | 
						|
								  // <grid-line>+
							 | 
						|
								  'grid-row': _grid.normalizeGridColumnRow,
							 | 
						|
								  // <grid-line>+
							 | 
						|
								  'grid-row-start': _grid.normalizeGridColumnRow,
							 | 
						|
								  // <grid-line>
							 | 
						|
								  'grid-row-end': _grid.normalizeGridColumnRow,
							 | 
						|
								  // <grid-line>
							 | 
						|
								  'grid-column-start': _grid.normalizeGridColumnRow,
							 | 
						|
								  // <grid-line>
							 | 
						|
								  'grid-column-end': _grid.normalizeGridColumnRow // <grid-line>
							 | 
						|
								
							 | 
						|
								};
							 | 
						|
								const columnRules = {
							 | 
						|
								  'column-rule': _columns.columnsRule,
							 | 
						|
								  columns: _columns.column
							 | 
						|
								};
							 | 
						|
								const rules = {
							 | 
						|
								  animation: _animation.default,
							 | 
						|
								  outline: _border.default,
							 | 
						|
								  'box-shadow': _boxShadow.default,
							 | 
						|
								  'flex-flow': _flexFlow.default,
							 | 
						|
								  'list-style': _listStyle.default,
							 | 
						|
								  transition: _transition.default,
							 | 
						|
								  ...borderRules,
							 | 
						|
								  ...grid,
							 | 
						|
								  ...columnRules
							 | 
						|
								};
							 | 
						|
								
							 | 
						|
								function vendorUnprefixed(prop) {
							 | 
						|
								  return prop.replace(/^-\w+-/, '');
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								function isVariableFunctionNode(node) {
							 | 
						|
								  if (node.type !== 'function') {
							 | 
						|
								    return false;
							 | 
						|
								  }
							 | 
						|
								
							 | 
						|
								  return ['var', 'env'].includes(node.value.toLowerCase());
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								function shouldAbort(parsed) {
							 | 
						|
								  let abort = false;
							 | 
						|
								  parsed.walk(node => {
							 | 
						|
								    if (node.type === 'comment' || isVariableFunctionNode(node) || node.type === 'word' && ~node.value.indexOf(`___CSS_LOADER_IMPORT___`)) {
							 | 
						|
								      abort = true;
							 | 
						|
								      return false;
							 | 
						|
								    }
							 | 
						|
								  });
							 | 
						|
								  return abort;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								function getValue(decl) {
							 | 
						|
								  let {
							 | 
						|
								    value,
							 | 
						|
								    raws
							 | 
						|
								  } = decl;
							 | 
						|
								
							 | 
						|
								  if (raws && raws.value && raws.value.raw) {
							 | 
						|
								    value = raws.value.raw;
							 | 
						|
								  }
							 | 
						|
								
							 | 
						|
								  return value;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								function pluginCreator() {
							 | 
						|
								  return {
							 | 
						|
								    postcssPlugin: 'postcss-ordered-values',
							 | 
						|
								
							 | 
						|
								    prepare() {
							 | 
						|
								      const cache = {};
							 | 
						|
								      return {
							 | 
						|
								        OnceExit(css) {
							 | 
						|
								          css.walkDecls(decl => {
							 | 
						|
								            const lowerCasedProp = decl.prop.toLowerCase();
							 | 
						|
								            const normalizedProp = vendorUnprefixed(lowerCasedProp);
							 | 
						|
								            const processor = rules[normalizedProp];
							 | 
						|
								
							 | 
						|
								            if (!processor) {
							 | 
						|
								              return;
							 | 
						|
								            }
							 | 
						|
								
							 | 
						|
								            const value = getValue(decl);
							 | 
						|
								
							 | 
						|
								            if (cache[value]) {
							 | 
						|
								              decl.value = cache[value];
							 | 
						|
								              return;
							 | 
						|
								            }
							 | 
						|
								
							 | 
						|
								            const parsed = (0, _postcssValueParser.default)(value);
							 | 
						|
								
							 | 
						|
								            if (parsed.nodes.length < 2 || shouldAbort(parsed)) {
							 | 
						|
								              cache[value] = value;
							 | 
						|
								              return;
							 | 
						|
								            }
							 | 
						|
								
							 | 
						|
								            const result = processor(parsed);
							 | 
						|
								            decl.value = result.toString();
							 | 
						|
								            cache[value] = result.toString();
							 | 
						|
								          });
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								      };
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								  };
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								pluginCreator.postcss = true;
							 | 
						|
								var _default = pluginCreator;
							 | 
						|
								exports.default = _default;
							 | 
						|
								module.exports = exports.default;
							 |