| "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 = _interopRequireDefault(require("./rules/columns")); |
| |
| var _vendorUnprefixed = _interopRequireDefault(require("./lib/vendorUnprefixed.js")); |
| |
| 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': _border.default, |
| columns: _columns.default |
| }; |
| 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 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 = new Map(); |
| return { |
| OnceExit(css) { |
| css.walkDecls(decl => { |
| const lowerCasedProp = decl.prop.toLowerCase(); |
| const normalizedProp = (0, _vendorUnprefixed.default)(lowerCasedProp); |
| const processor = rules[normalizedProp]; |
| |
| if (!processor) { |
| return; |
| } |
| |
| const value = getValue(decl); |
| |
| if (cache.has(value)) { |
| decl.value = cache.get(value); |
| return; |
| } |
| |
| const parsed = (0, _postcssValueParser.default)(value); |
| |
| if (parsed.nodes.length < 2 || shouldAbort(parsed)) { |
| cache.set(value, value); |
| return; |
| } |
| |
| const result = processor(parsed); |
| decl.value = result.toString(); |
| cache.set(value, result.toString()); |
| }); |
| } |
| |
| }; |
| } |
| |
| }; |
| } |
| |
| pluginCreator.postcss = true; |
| var _default = pluginCreator; |
| exports.default = _default; |
| module.exports = exports.default; |