[6a3a178] | 1 | "use strict";
|
---|
| 2 |
|
---|
| 3 | Object.defineProperty(exports, "__esModule", {
|
---|
| 4 | value: true
|
---|
| 5 | });
|
---|
| 6 | exports.default = normalizeBorder;
|
---|
| 7 |
|
---|
| 8 | var _postcssValueParser = require("postcss-value-parser");
|
---|
| 9 |
|
---|
| 10 | // border: <line-width> || <line-style> || <color>
|
---|
| 11 | // outline: <outline-color> || <outline-style> || <outline-width>
|
---|
| 12 | const borderWidths = ['thin', 'medium', 'thick'];
|
---|
| 13 | const borderStyles = ['none', 'auto', // only in outline-style
|
---|
| 14 | 'hidden', 'dotted', 'dashed', 'solid', 'double', 'groove', 'ridge', 'inset', 'outset'];
|
---|
| 15 |
|
---|
| 16 | function normalizeBorder(border) {
|
---|
| 17 | const order = {
|
---|
| 18 | width: '',
|
---|
| 19 | style: '',
|
---|
| 20 | color: ''
|
---|
| 21 | };
|
---|
| 22 | border.walk(node => {
|
---|
| 23 | const {
|
---|
| 24 | type,
|
---|
| 25 | value
|
---|
| 26 | } = node;
|
---|
| 27 |
|
---|
| 28 | if (type === 'word') {
|
---|
| 29 | if (~borderStyles.indexOf(value.toLowerCase())) {
|
---|
| 30 | order.style = value;
|
---|
| 31 | return false;
|
---|
| 32 | }
|
---|
| 33 |
|
---|
| 34 | if (~borderWidths.indexOf(value.toLowerCase()) || (0, _postcssValueParser.unit)(value.toLowerCase())) {
|
---|
| 35 | if (order.width !== '') {
|
---|
| 36 | order.width = `${order.width} ${value}`;
|
---|
| 37 | return false;
|
---|
| 38 | }
|
---|
| 39 |
|
---|
| 40 | order.width = value;
|
---|
| 41 | return false;
|
---|
| 42 | }
|
---|
| 43 |
|
---|
| 44 | order.color = value;
|
---|
| 45 | return false;
|
---|
| 46 | }
|
---|
| 47 |
|
---|
| 48 | if (type === 'function') {
|
---|
| 49 | if (value.toLowerCase() === 'calc') {
|
---|
| 50 | order.width = (0, _postcssValueParser.stringify)(node);
|
---|
| 51 | } else {
|
---|
| 52 | order.color = (0, _postcssValueParser.stringify)(node);
|
---|
| 53 | }
|
---|
| 54 |
|
---|
| 55 | return false;
|
---|
| 56 | }
|
---|
| 57 | });
|
---|
| 58 | return `${order.width} ${order.style} ${order.color}`.trim();
|
---|
| 59 | }
|
---|
| 60 |
|
---|
| 61 | module.exports = exports.default; |
---|