cssstyle 5.3.5 → 5.3.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/CSSStyleDeclaration.js +6 -5
- package/lib/generated/implementedProperties.js +1 -1
- package/lib/generated/properties.js +2034 -2348
- package/lib/generated/propertyDefinitions.js +13033 -0
- package/lib/normalize.js +1252 -1095
- package/lib/parsers.js +589 -253
- package/lib/properties/background.js +90 -80
- package/lib/properties/backgroundAttachment.js +12 -15
- package/lib/properties/backgroundClip.js +12 -15
- package/lib/properties/backgroundColor.js +9 -14
- package/lib/properties/backgroundImage.js +12 -27
- package/lib/properties/backgroundOrigin.js +12 -15
- package/lib/properties/backgroundPosition.js +30 -19
- package/lib/properties/backgroundRepeat.js +12 -8
- package/lib/properties/backgroundSize.js +23 -17
- package/lib/properties/border.js +31 -88
- package/lib/properties/borderBottom.js +31 -87
- package/lib/properties/borderBottomColor.js +9 -15
- package/lib/properties/borderBottomStyle.js +9 -14
- package/lib/properties/borderBottomWidth.js +12 -24
- package/lib/properties/borderCollapse.js +5 -10
- package/lib/properties/borderColor.js +18 -24
- package/lib/properties/borderLeft.js +31 -87
- package/lib/properties/borderLeftColor.js +9 -15
- package/lib/properties/borderLeftStyle.js +9 -14
- package/lib/properties/borderLeftWidth.js +12 -24
- package/lib/properties/borderRight.js +31 -87
- package/lib/properties/borderRightColor.js +9 -15
- package/lib/properties/borderRightStyle.js +9 -14
- package/lib/properties/borderRightWidth.js +12 -24
- package/lib/properties/borderSpacing.js +13 -10
- package/lib/properties/borderStyle.js +18 -24
- package/lib/properties/borderTop.js +31 -87
- package/lib/properties/borderTopColor.js +9 -15
- package/lib/properties/borderTopStyle.js +9 -14
- package/lib/properties/borderTopWidth.js +12 -24
- package/lib/properties/borderWidth.js +19 -37
- package/lib/properties/bottom.js +7 -18
- package/lib/properties/clear.js +5 -10
- package/lib/properties/clip.js +11 -6
- package/lib/properties/color.js +5 -11
- package/lib/properties/display.js +12 -9
- package/lib/properties/flex.js +56 -54
- package/lib/properties/flexBasis.js +11 -21
- package/lib/properties/flexGrow.js +11 -20
- package/lib/properties/flexShrink.js +11 -20
- package/lib/properties/float.js +5 -10
- package/lib/properties/floodColor.js +5 -11
- package/lib/properties/font.js +47 -34
- package/lib/properties/fontFamily.js +17 -13
- package/lib/properties/fontSize.js +12 -23
- package/lib/properties/fontStyle.js +15 -9
- package/lib/properties/fontVariant.js +12 -19
- package/lib/properties/fontWeight.js +15 -26
- package/lib/properties/height.js +8 -18
- package/lib/properties/left.js +7 -18
- package/lib/properties/lightingColor.js +5 -11
- package/lib/properties/lineHeight.js +11 -25
- package/lib/properties/margin.js +15 -33
- package/lib/properties/marginBottom.js +11 -21
- package/lib/properties/marginLeft.js +11 -21
- package/lib/properties/marginRight.js +11 -21
- package/lib/properties/marginTop.js +11 -21
- package/lib/properties/opacity.js +7 -19
- package/lib/properties/outlineColor.js +5 -11
- package/lib/properties/padding.js +16 -31
- package/lib/properties/paddingBottom.js +12 -22
- package/lib/properties/paddingLeft.js +12 -22
- package/lib/properties/paddingRight.js +12 -22
- package/lib/properties/paddingTop.js +12 -22
- package/lib/properties/right.js +7 -18
- package/lib/properties/stopColor.js +5 -11
- package/lib/properties/top.js +7 -18
- package/lib/properties/webkitBorderAfterColor.js +5 -11
- package/lib/properties/webkitBorderBeforeColor.js +5 -11
- package/lib/properties/webkitBorderEndColor.js +5 -11
- package/lib/properties/webkitBorderStartColor.js +5 -11
- package/lib/properties/webkitColumnRuleColor.js +5 -11
- package/lib/properties/webkitTapHighlightColor.js +5 -11
- package/lib/properties/webkitTextEmphasisColor.js +5 -11
- package/lib/properties/webkitTextFillColor.js +5 -11
- package/lib/properties/webkitTextStrokeColor.js +5 -11
- package/lib/properties/width.js +8 -18
- package/lib/utils/propertyDescriptors.js +49 -13
- package/lib/utils/strings.js +6 -0
- package/package.json +8 -27
|
@@ -10,11 +10,12 @@ const keywordsX = ["center", ...keyX];
|
|
|
10
10
|
const keywordsY = ["center", ...keyY];
|
|
11
11
|
const keywords = ["center", ...keyX, ...keyY];
|
|
12
12
|
|
|
13
|
-
module.exports.parse =
|
|
13
|
+
module.exports.parse = (v, opt = {}) => {
|
|
14
14
|
const { globalObject } = opt;
|
|
15
15
|
if (v === "") {
|
|
16
16
|
return v;
|
|
17
17
|
}
|
|
18
|
+
const { AST_TYPES } = parsers;
|
|
18
19
|
const values = parsers.splitValue(v, {
|
|
19
20
|
delimiter: ","
|
|
20
21
|
});
|
|
@@ -25,12 +26,14 @@ module.exports.parse = function parse(v, opt = {}) {
|
|
|
25
26
|
inArray: true
|
|
26
27
|
});
|
|
27
28
|
if (Array.isArray(value) && value.length) {
|
|
29
|
+
const [part1, part2, part3, part4] = value;
|
|
28
30
|
let parsedValue = "";
|
|
29
31
|
switch (value.length) {
|
|
30
32
|
case 1: {
|
|
31
|
-
const [part1] = value;
|
|
32
33
|
const val1 =
|
|
33
|
-
part1.type ===
|
|
34
|
+
part1.type === AST_TYPES.IDENTIFIER
|
|
35
|
+
? part1.name
|
|
36
|
+
: parsers.resolveNumericValue([part1], { type: "length" });
|
|
34
37
|
if (val1) {
|
|
35
38
|
if (val1 === "center") {
|
|
36
39
|
parsedValue = `${val1} ${val1}`;
|
|
@@ -43,11 +46,14 @@ module.exports.parse = function parse(v, opt = {}) {
|
|
|
43
46
|
break;
|
|
44
47
|
}
|
|
45
48
|
case 2: {
|
|
46
|
-
const [part1, part2] = value;
|
|
47
49
|
const val1 =
|
|
48
|
-
part1.type ===
|
|
50
|
+
part1.type === AST_TYPES.IDENTIFIER
|
|
51
|
+
? part1.name
|
|
52
|
+
: parsers.resolveNumericValue([part1], { type: "length" });
|
|
49
53
|
const val2 =
|
|
50
|
-
part2.type ===
|
|
54
|
+
part2.type === AST_TYPES.IDENTIFIER
|
|
55
|
+
? part2.name
|
|
56
|
+
: parsers.resolveNumericValue([part2], { type: "length" });
|
|
51
57
|
if (val1 && val2) {
|
|
52
58
|
if (keywordsX.includes(val1) && keywordsY.includes(val2)) {
|
|
53
59
|
parsedValue = `${val1} ${val2}`;
|
|
@@ -68,12 +74,15 @@ module.exports.parse = function parse(v, opt = {}) {
|
|
|
68
74
|
break;
|
|
69
75
|
}
|
|
70
76
|
case 3: {
|
|
71
|
-
const
|
|
72
|
-
const val1 = part1.type === "Identifier" && part1.name;
|
|
77
|
+
const val1 = part1.type === AST_TYPES.IDENTIFIER && part1.name;
|
|
73
78
|
const val2 =
|
|
74
|
-
part2.type ===
|
|
79
|
+
part2.type === AST_TYPES.IDENTIFIER
|
|
80
|
+
? part2.name
|
|
81
|
+
: parsers.resolveNumericValue([part2], { type: "length" });
|
|
75
82
|
const val3 =
|
|
76
|
-
part3.type ===
|
|
83
|
+
part3.type === AST_TYPES.IDENTIFIER
|
|
84
|
+
? part3.name
|
|
85
|
+
: parsers.resolveNumericValue([part3], { type: "length" });
|
|
77
86
|
if (val1 && val2 && val3) {
|
|
78
87
|
let posX = "";
|
|
79
88
|
let offX = "";
|
|
@@ -119,11 +128,10 @@ module.exports.parse = function parse(v, opt = {}) {
|
|
|
119
128
|
break;
|
|
120
129
|
}
|
|
121
130
|
case 4: {
|
|
122
|
-
const
|
|
123
|
-
const
|
|
124
|
-
const
|
|
125
|
-
const
|
|
126
|
-
const val4 = parsers.parseLengthPercentage([part4]);
|
|
131
|
+
const val1 = part1.type === AST_TYPES.IDENTIFIER && part1.name;
|
|
132
|
+
const val2 = parsers.resolveNumericValue([part2], { type: "length" });
|
|
133
|
+
const val3 = part3.type === AST_TYPES.IDENTIFIER && part3.name;
|
|
134
|
+
const val4 = parsers.resolveNumericValue([part4], { type: "length" });
|
|
127
135
|
if (val1 && val2 && val3 && val4) {
|
|
128
136
|
let posX = "";
|
|
129
137
|
let offX = "";
|
|
@@ -169,7 +177,7 @@ module.exports.parse = function parse(v, opt = {}) {
|
|
|
169
177
|
|
|
170
178
|
module.exports.definition = {
|
|
171
179
|
set(v) {
|
|
172
|
-
v = parsers.prepareValue(v
|
|
180
|
+
v = parsers.prepareValue(v);
|
|
173
181
|
if (parsers.hasVarFunc(v)) {
|
|
174
182
|
this._setProperty(shorthand, "");
|
|
175
183
|
this._setProperty(property, v);
|
|
@@ -178,9 +186,10 @@ module.exports.definition = {
|
|
|
178
186
|
globalObject: this._global
|
|
179
187
|
});
|
|
180
188
|
if (typeof val === "string") {
|
|
181
|
-
const
|
|
182
|
-
|
|
183
|
-
|
|
189
|
+
const priority =
|
|
190
|
+
!this._priorities.get(shorthand) && this._priorities.has(property)
|
|
191
|
+
? this._priorities.get(property)
|
|
192
|
+
: "";
|
|
184
193
|
this._setProperty(property, val, priority);
|
|
185
194
|
}
|
|
186
195
|
}
|
|
@@ -191,3 +200,5 @@ module.exports.definition = {
|
|
|
191
200
|
enumerable: true,
|
|
192
201
|
configurable: true
|
|
193
202
|
};
|
|
203
|
+
|
|
204
|
+
module.exports.property = property;
|
|
@@ -5,11 +5,12 @@ const parsers = require("../parsers");
|
|
|
5
5
|
const property = "background-repeat";
|
|
6
6
|
const shorthand = "background";
|
|
7
7
|
|
|
8
|
-
module.exports.parse =
|
|
8
|
+
module.exports.parse = (v, opt = {}) => {
|
|
9
9
|
const { globalObject } = opt;
|
|
10
10
|
if (v === "") {
|
|
11
11
|
return v;
|
|
12
12
|
}
|
|
13
|
+
const { AST_TYPES } = parsers;
|
|
13
14
|
const values = parsers.splitValue(v, {
|
|
14
15
|
delimiter: ","
|
|
15
16
|
});
|
|
@@ -24,7 +25,7 @@ module.exports.parse = function parse(v, opt = {}) {
|
|
|
24
25
|
switch (value.length) {
|
|
25
26
|
case 1: {
|
|
26
27
|
const [part1] = value;
|
|
27
|
-
const val1 = part1.type ===
|
|
28
|
+
const val1 = part1.type === AST_TYPES.IDENTIFIER && part1.name;
|
|
28
29
|
if (val1) {
|
|
29
30
|
parsedValue = val1;
|
|
30
31
|
}
|
|
@@ -32,8 +33,8 @@ module.exports.parse = function parse(v, opt = {}) {
|
|
|
32
33
|
}
|
|
33
34
|
case 2: {
|
|
34
35
|
const [part1, part2] = value;
|
|
35
|
-
const val1 = part1.type ===
|
|
36
|
-
const val2 = part2.type ===
|
|
36
|
+
const val1 = part1.type === AST_TYPES.IDENTIFIER && part1.name;
|
|
37
|
+
const val2 = part2.type === AST_TYPES.IDENTIFIER && part2.name;
|
|
37
38
|
if (val1 && val2) {
|
|
38
39
|
if (val1 === "repeat" && val2 === "no-repeat") {
|
|
39
40
|
parsedValue = "repeat-x";
|
|
@@ -65,7 +66,7 @@ module.exports.parse = function parse(v, opt = {}) {
|
|
|
65
66
|
|
|
66
67
|
module.exports.definition = {
|
|
67
68
|
set(v) {
|
|
68
|
-
v = parsers.prepareValue(v
|
|
69
|
+
v = parsers.prepareValue(v);
|
|
69
70
|
if (parsers.hasVarFunc(v)) {
|
|
70
71
|
this._setProperty(shorthand, "");
|
|
71
72
|
this._setProperty(property, v);
|
|
@@ -74,9 +75,10 @@ module.exports.definition = {
|
|
|
74
75
|
globalObject: this._global
|
|
75
76
|
});
|
|
76
77
|
if (typeof val === "string") {
|
|
77
|
-
const
|
|
78
|
-
|
|
79
|
-
|
|
78
|
+
const priority =
|
|
79
|
+
!this._priorities.get(shorthand) && this._priorities.has(property)
|
|
80
|
+
? this._priorities.get(property)
|
|
81
|
+
: "";
|
|
80
82
|
this._setProperty(property, val, priority);
|
|
81
83
|
}
|
|
82
84
|
}
|
|
@@ -87,3 +89,5 @@ module.exports.definition = {
|
|
|
87
89
|
enumerable: true,
|
|
88
90
|
configurable: true
|
|
89
91
|
};
|
|
92
|
+
|
|
93
|
+
module.exports.property = property;
|
|
@@ -5,11 +5,12 @@ const parsers = require("../parsers");
|
|
|
5
5
|
const property = "background-size";
|
|
6
6
|
const shorthand = "background";
|
|
7
7
|
|
|
8
|
-
module.exports.parse =
|
|
8
|
+
module.exports.parse = (v, opt = {}) => {
|
|
9
9
|
const { globalObject } = opt;
|
|
10
10
|
if (v === "") {
|
|
11
11
|
return v;
|
|
12
12
|
}
|
|
13
|
+
const { AST_TYPES } = parsers;
|
|
13
14
|
const values = parsers.splitValue(v, {
|
|
14
15
|
delimiter: ","
|
|
15
16
|
});
|
|
@@ -23,20 +24,22 @@ module.exports.parse = function parse(v, opt = {}) {
|
|
|
23
24
|
if (value.length === 1) {
|
|
24
25
|
const [{ isNumber, name, type, value: itemValue }] = value;
|
|
25
26
|
switch (type) {
|
|
26
|
-
case
|
|
27
|
+
case AST_TYPES.CALC: {
|
|
27
28
|
if (isNumber) {
|
|
28
29
|
return;
|
|
29
30
|
}
|
|
30
31
|
parsedValues.push(`${name}(${itemValue})`);
|
|
31
32
|
break;
|
|
32
33
|
}
|
|
33
|
-
case
|
|
34
|
-
case
|
|
34
|
+
case AST_TYPES.GLOBAL_KEYWORD:
|
|
35
|
+
case AST_TYPES.IDENTIFIER: {
|
|
35
36
|
parsedValues.push(name);
|
|
36
37
|
break;
|
|
37
38
|
}
|
|
38
39
|
default: {
|
|
39
|
-
const parsedValue = parsers.
|
|
40
|
+
const parsedValue = parsers.resolveNumericValue(value, {
|
|
41
|
+
type: "length"
|
|
42
|
+
});
|
|
40
43
|
if (!parsedValue) {
|
|
41
44
|
return;
|
|
42
45
|
}
|
|
@@ -46,36 +49,36 @@ module.exports.parse = function parse(v, opt = {}) {
|
|
|
46
49
|
} else {
|
|
47
50
|
const [val1, val2] = value;
|
|
48
51
|
const parts = [];
|
|
49
|
-
if (val1.type ===
|
|
52
|
+
if (val1.type === AST_TYPES.CALC && !val1.isNumber) {
|
|
50
53
|
parts.push(`${val1.name}(${val1.value})`);
|
|
51
|
-
} else if (val1.type ===
|
|
54
|
+
} else if (val1.type === AST_TYPES.IDENTIFIER) {
|
|
52
55
|
parts.push(val1.name);
|
|
53
|
-
} else if (val1.type ===
|
|
56
|
+
} else if (val1.type === AST_TYPES.DIMENSION) {
|
|
54
57
|
parts.push(`${val1.value}${val1.unit}`);
|
|
55
|
-
} else if (val1.type ===
|
|
58
|
+
} else if (val1.type === AST_TYPES.PERCENTAGE) {
|
|
56
59
|
parts.push(`${val1.value}%`);
|
|
57
60
|
} else {
|
|
58
61
|
return;
|
|
59
62
|
}
|
|
60
63
|
switch (val2.type) {
|
|
61
|
-
case
|
|
64
|
+
case AST_TYPES.CALC: {
|
|
62
65
|
if (val2.isNumber) {
|
|
63
66
|
return;
|
|
64
67
|
}
|
|
65
68
|
parts.push(`${val2.name}(${val2.value})`);
|
|
66
69
|
break;
|
|
67
70
|
}
|
|
68
|
-
case
|
|
71
|
+
case AST_TYPES.DIMENSION: {
|
|
69
72
|
parts.push(`${val2.value}${val2.unit}`);
|
|
70
73
|
break;
|
|
71
74
|
}
|
|
72
|
-
case
|
|
75
|
+
case AST_TYPES.IDENTIFIER: {
|
|
73
76
|
if (val2.name !== "auto") {
|
|
74
77
|
parts.push(val2.name);
|
|
75
78
|
}
|
|
76
79
|
break;
|
|
77
80
|
}
|
|
78
|
-
case
|
|
81
|
+
case AST_TYPES.PERCENTAGE: {
|
|
79
82
|
parts.push(`${val2.value}%`);
|
|
80
83
|
break;
|
|
81
84
|
}
|
|
@@ -96,7 +99,7 @@ module.exports.parse = function parse(v, opt = {}) {
|
|
|
96
99
|
|
|
97
100
|
module.exports.definition = {
|
|
98
101
|
set(v) {
|
|
99
|
-
v = parsers.prepareValue(v
|
|
102
|
+
v = parsers.prepareValue(v);
|
|
100
103
|
if (parsers.hasVarFunc(v)) {
|
|
101
104
|
this._setProperty(shorthand, "");
|
|
102
105
|
this._setProperty(property, v);
|
|
@@ -105,9 +108,10 @@ module.exports.definition = {
|
|
|
105
108
|
globalObject: this._global
|
|
106
109
|
});
|
|
107
110
|
if (typeof val === "string") {
|
|
108
|
-
const
|
|
109
|
-
|
|
110
|
-
|
|
111
|
+
const priority =
|
|
112
|
+
!this._priorities.get(shorthand) && this._priorities.has(property)
|
|
113
|
+
? this._priorities.get(property)
|
|
114
|
+
: "";
|
|
111
115
|
this._setProperty(property, val, priority);
|
|
112
116
|
}
|
|
113
117
|
}
|
|
@@ -118,3 +122,5 @@ module.exports.definition = {
|
|
|
118
122
|
enumerable: true,
|
|
119
123
|
configurable: true
|
|
120
124
|
};
|
|
125
|
+
|
|
126
|
+
module.exports.property = property;
|
package/lib/properties/border.js
CHANGED
|
@@ -11,26 +11,32 @@ const borderLeft = require("./borderLeft");
|
|
|
11
11
|
|
|
12
12
|
const property = "border";
|
|
13
13
|
|
|
14
|
+
const subProps = {
|
|
15
|
+
width: borderWidth.property,
|
|
16
|
+
style: borderStyle.property,
|
|
17
|
+
color: borderColor.property
|
|
18
|
+
};
|
|
19
|
+
|
|
14
20
|
module.exports.initialValues = new Map([
|
|
15
|
-
[
|
|
16
|
-
[
|
|
17
|
-
[
|
|
21
|
+
[borderWidth.property, "medium"],
|
|
22
|
+
[borderStyle.property, "none"],
|
|
23
|
+
[borderColor.property, "currentcolor"]
|
|
18
24
|
]);
|
|
19
25
|
|
|
20
26
|
module.exports.shorthandFor = new Map([
|
|
21
|
-
[
|
|
22
|
-
[
|
|
23
|
-
[
|
|
27
|
+
[borderWidth.property, borderWidth],
|
|
28
|
+
[borderStyle.property, borderStyle],
|
|
29
|
+
[borderColor.property, borderColor]
|
|
24
30
|
]);
|
|
25
31
|
|
|
26
32
|
module.exports.positionShorthandFor = new Map([
|
|
27
|
-
[
|
|
28
|
-
[
|
|
29
|
-
[
|
|
30
|
-
[
|
|
33
|
+
[borderTop.property, borderTop],
|
|
34
|
+
[borderRight.property, borderRight],
|
|
35
|
+
[borderBottom.property, borderBottom],
|
|
36
|
+
[borderLeft.property, borderLeft]
|
|
31
37
|
]);
|
|
32
38
|
|
|
33
|
-
module.exports.parse =
|
|
39
|
+
module.exports.parse = (v, opt = {}) => {
|
|
34
40
|
const { globalObject } = opt;
|
|
35
41
|
if (v === "" || parsers.hasVarFunc(v)) {
|
|
36
42
|
return v;
|
|
@@ -43,79 +49,14 @@ module.exports.parse = function parse(v, opt = {}) {
|
|
|
43
49
|
inArray: true
|
|
44
50
|
});
|
|
45
51
|
if (Array.isArray(value) && value.length === 1) {
|
|
46
|
-
const
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
}
|
|
55
|
-
case "Dimension":
|
|
56
|
-
case "Number": {
|
|
57
|
-
if (parsedValues.has("border-width")) {
|
|
58
|
-
return;
|
|
59
|
-
}
|
|
60
|
-
const parsedValue = parsers.parseLength(value, {
|
|
61
|
-
min: 0
|
|
62
|
-
});
|
|
63
|
-
if (!parsedValue) {
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
|
-
parsedValues.set("border-width", parsedValue);
|
|
67
|
-
break;
|
|
68
|
-
}
|
|
69
|
-
case "Function": {
|
|
70
|
-
if (parsedValues.has("border-color")) {
|
|
71
|
-
return;
|
|
72
|
-
}
|
|
73
|
-
const parsedValue = parsers.parseColor(value);
|
|
74
|
-
if (!parsedValue) {
|
|
75
|
-
return;
|
|
76
|
-
}
|
|
77
|
-
parsedValues.set("border-color", parsedValue);
|
|
78
|
-
break;
|
|
79
|
-
}
|
|
80
|
-
case "GlobalKeyword": {
|
|
81
|
-
return name;
|
|
82
|
-
}
|
|
83
|
-
case "Hash": {
|
|
84
|
-
if (parsedValues.has("border-color")) {
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
|
-
const parsedValue = parsers.parseColor(value);
|
|
88
|
-
if (!parsedValue) {
|
|
89
|
-
return;
|
|
90
|
-
}
|
|
91
|
-
parsedValues.set("border-color", parsedValue);
|
|
92
|
-
break;
|
|
93
|
-
}
|
|
94
|
-
case "Identifier": {
|
|
95
|
-
if (parsers.isValidPropertyValue("border-width", name)) {
|
|
96
|
-
if (parsedValues.has("border-width")) {
|
|
97
|
-
return;
|
|
98
|
-
}
|
|
99
|
-
parsedValues.set("border-width", name);
|
|
100
|
-
break;
|
|
101
|
-
} else if (parsers.isValidPropertyValue("border-style", name)) {
|
|
102
|
-
if (parsedValues.has("border-style")) {
|
|
103
|
-
return;
|
|
104
|
-
}
|
|
105
|
-
parsedValues.set("border-style", name);
|
|
106
|
-
break;
|
|
107
|
-
} else if (parsers.isValidPropertyValue("border-color", name)) {
|
|
108
|
-
if (parsedValues.has("border-color")) {
|
|
109
|
-
return;
|
|
110
|
-
}
|
|
111
|
-
parsedValues.set("border-color", name);
|
|
112
|
-
break;
|
|
113
|
-
}
|
|
114
|
-
return;
|
|
115
|
-
}
|
|
116
|
-
default: {
|
|
117
|
-
return;
|
|
118
|
-
}
|
|
52
|
+
const parsedValue = parsers.resolveBorderShorthandValue(value, subProps, parsedValues);
|
|
53
|
+
if (typeof parsedValue === "string") {
|
|
54
|
+
return parsedValue;
|
|
55
|
+
} else if (Array.isArray(parsedValue)) {
|
|
56
|
+
const [key, resolvedVal] = parsedValue;
|
|
57
|
+
parsedValues.set(key, resolvedVal);
|
|
58
|
+
} else {
|
|
59
|
+
return;
|
|
119
60
|
}
|
|
120
61
|
} else {
|
|
121
62
|
return;
|
|
@@ -124,15 +65,15 @@ module.exports.parse = function parse(v, opt = {}) {
|
|
|
124
65
|
if (parsedValues.size) {
|
|
125
66
|
const keys = module.exports.shorthandFor.keys();
|
|
126
67
|
const obj = {
|
|
127
|
-
|
|
68
|
+
[borderWidth.property]: "medium"
|
|
128
69
|
};
|
|
129
70
|
for (const key of keys) {
|
|
130
71
|
if (parsedValues.has(key)) {
|
|
131
72
|
const parsedValue = parsedValues.get(key);
|
|
132
73
|
if (parsedValue !== module.exports.initialValues.get(key)) {
|
|
133
74
|
obj[key] = parsedValues.get(key);
|
|
134
|
-
if (obj[
|
|
135
|
-
delete obj[
|
|
75
|
+
if (obj[borderWidth.property] && obj[borderWidth.property] === "medium") {
|
|
76
|
+
delete obj[borderWidth.property];
|
|
136
77
|
}
|
|
137
78
|
}
|
|
138
79
|
}
|
|
@@ -143,7 +84,7 @@ module.exports.parse = function parse(v, opt = {}) {
|
|
|
143
84
|
|
|
144
85
|
module.exports.definition = {
|
|
145
86
|
set(v) {
|
|
146
|
-
v = parsers.prepareValue(v
|
|
87
|
+
v = parsers.prepareValue(v);
|
|
147
88
|
if (parsers.hasVarFunc(v)) {
|
|
148
89
|
this._borderSetter(property, v, "");
|
|
149
90
|
} else {
|
|
@@ -162,3 +103,5 @@ module.exports.definition = {
|
|
|
162
103
|
enumerable: true,
|
|
163
104
|
configurable: true
|
|
164
105
|
};
|
|
106
|
+
|
|
107
|
+
module.exports.property = property;
|
|
@@ -8,19 +8,25 @@ const borderBottomColor = require("./borderBottomColor");
|
|
|
8
8
|
const property = "border-bottom";
|
|
9
9
|
const shorthand = "border";
|
|
10
10
|
|
|
11
|
+
const subProps = {
|
|
12
|
+
width: borderBottomWidth.property,
|
|
13
|
+
style: borderBottomStyle.property,
|
|
14
|
+
color: borderBottomColor.property
|
|
15
|
+
};
|
|
16
|
+
|
|
11
17
|
module.exports.initialValues = new Map([
|
|
12
|
-
[
|
|
13
|
-
[
|
|
14
|
-
[
|
|
18
|
+
[borderBottomWidth.property, "medium"],
|
|
19
|
+
[borderBottomStyle.property, "none"],
|
|
20
|
+
[borderBottomColor.property, "currentcolor"]
|
|
15
21
|
]);
|
|
16
22
|
|
|
17
23
|
module.exports.shorthandFor = new Map([
|
|
18
|
-
[
|
|
19
|
-
[
|
|
20
|
-
[
|
|
24
|
+
[borderBottomWidth.property, borderBottomWidth],
|
|
25
|
+
[borderBottomStyle.property, borderBottomStyle],
|
|
26
|
+
[borderBottomColor.property, borderBottomColor]
|
|
21
27
|
]);
|
|
22
28
|
|
|
23
|
-
module.exports.parse =
|
|
29
|
+
module.exports.parse = (v, opt = {}) => {
|
|
24
30
|
const { globalObject } = opt;
|
|
25
31
|
if (v === "") {
|
|
26
32
|
return v;
|
|
@@ -33,79 +39,14 @@ module.exports.parse = function parse(v, opt = {}) {
|
|
|
33
39
|
inArray: true
|
|
34
40
|
});
|
|
35
41
|
if (Array.isArray(value) && value.length === 1) {
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}
|
|
45
|
-
case "Dimension":
|
|
46
|
-
case "Number": {
|
|
47
|
-
if (parsedValues.has("border-bottom-width")) {
|
|
48
|
-
return;
|
|
49
|
-
}
|
|
50
|
-
const parsedValue = parsers.parseLength(value, {
|
|
51
|
-
min: 0
|
|
52
|
-
});
|
|
53
|
-
if (!parsedValue) {
|
|
54
|
-
return;
|
|
55
|
-
}
|
|
56
|
-
parsedValues.set("border-bottom-width", parsedValue);
|
|
57
|
-
break;
|
|
58
|
-
}
|
|
59
|
-
case "Function": {
|
|
60
|
-
if (parsedValues.has("border-bottom-color")) {
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
const parsedValue = parsers.parseColor(value);
|
|
64
|
-
if (!parsedValue) {
|
|
65
|
-
return;
|
|
66
|
-
}
|
|
67
|
-
parsedValues.set("border-bottom-color", parsedValue);
|
|
68
|
-
break;
|
|
69
|
-
}
|
|
70
|
-
case "GlobalKeyword": {
|
|
71
|
-
return name;
|
|
72
|
-
}
|
|
73
|
-
case "Hash": {
|
|
74
|
-
if (parsedValues.has("border-bottom-color")) {
|
|
75
|
-
return;
|
|
76
|
-
}
|
|
77
|
-
const parsedValue = parsers.parseColor(value);
|
|
78
|
-
if (!parsedValue) {
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
|
-
parsedValues.set("border-bottom-color", parsedValue);
|
|
82
|
-
break;
|
|
83
|
-
}
|
|
84
|
-
case "Identifier": {
|
|
85
|
-
if (parsers.isValidPropertyValue("border-bottom-width", name)) {
|
|
86
|
-
if (parsedValues.has("border-bottom-width")) {
|
|
87
|
-
return;
|
|
88
|
-
}
|
|
89
|
-
parsedValues.set("border-bottom-width", name);
|
|
90
|
-
break;
|
|
91
|
-
} else if (parsers.isValidPropertyValue("border-bottom-style", name)) {
|
|
92
|
-
if (parsedValues.has("border-bottom-style")) {
|
|
93
|
-
return;
|
|
94
|
-
}
|
|
95
|
-
parsedValues.set("border-bottom-style", name);
|
|
96
|
-
break;
|
|
97
|
-
} else if (parsers.isValidPropertyValue("border-bottom-color", name)) {
|
|
98
|
-
if (parsedValues.has("border-bottom-color")) {
|
|
99
|
-
return;
|
|
100
|
-
}
|
|
101
|
-
parsedValues.set("border-bottom-color", name);
|
|
102
|
-
break;
|
|
103
|
-
}
|
|
104
|
-
return;
|
|
105
|
-
}
|
|
106
|
-
default: {
|
|
107
|
-
return;
|
|
108
|
-
}
|
|
42
|
+
const parsedValue = parsers.resolveBorderShorthandValue(value, subProps, parsedValues);
|
|
43
|
+
if (typeof parsedValue === "string") {
|
|
44
|
+
return parsedValue;
|
|
45
|
+
} else if (Array.isArray(parsedValue)) {
|
|
46
|
+
const [key, resolvedVal] = parsedValue;
|
|
47
|
+
parsedValues.set(key, resolvedVal);
|
|
48
|
+
} else {
|
|
49
|
+
return;
|
|
109
50
|
}
|
|
110
51
|
} else {
|
|
111
52
|
return;
|
|
@@ -114,15 +55,15 @@ module.exports.parse = function parse(v, opt = {}) {
|
|
|
114
55
|
if (parsedValues.size) {
|
|
115
56
|
const keys = module.exports.shorthandFor.keys();
|
|
116
57
|
const obj = {
|
|
117
|
-
|
|
58
|
+
[borderBottomWidth.property]: "medium"
|
|
118
59
|
};
|
|
119
60
|
for (const key of keys) {
|
|
120
61
|
if (parsedValues.has(key)) {
|
|
121
62
|
const parsedValue = parsedValues.get(key);
|
|
122
63
|
if (parsedValue !== module.exports.initialValues.get(key)) {
|
|
123
64
|
obj[key] = parsedValues.get(key);
|
|
124
|
-
if (obj[
|
|
125
|
-
delete obj[
|
|
65
|
+
if (obj[borderBottomWidth.property] && obj[borderBottomWidth.property] === "medium") {
|
|
66
|
+
delete obj[borderBottomWidth.property];
|
|
126
67
|
}
|
|
127
68
|
}
|
|
128
69
|
}
|
|
@@ -133,7 +74,7 @@ module.exports.parse = function parse(v, opt = {}) {
|
|
|
133
74
|
|
|
134
75
|
module.exports.definition = {
|
|
135
76
|
set(v) {
|
|
136
|
-
v = parsers.prepareValue(v
|
|
77
|
+
v = parsers.prepareValue(v);
|
|
137
78
|
if (parsers.hasVarFunc(v)) {
|
|
138
79
|
this._borderSetter(property, v, "");
|
|
139
80
|
} else {
|
|
@@ -141,9 +82,10 @@ module.exports.definition = {
|
|
|
141
82
|
globalObject: this._global
|
|
142
83
|
});
|
|
143
84
|
if (val || typeof val === "string") {
|
|
144
|
-
const
|
|
145
|
-
|
|
146
|
-
|
|
85
|
+
const priority =
|
|
86
|
+
!this._priorities.get(shorthand) && this._priorities.has(property)
|
|
87
|
+
? this._priorities.get(property)
|
|
88
|
+
: "";
|
|
147
89
|
this._borderSetter(property, val, priority);
|
|
148
90
|
}
|
|
149
91
|
}
|
|
@@ -154,3 +96,5 @@ module.exports.definition = {
|
|
|
154
96
|
enumerable: true,
|
|
155
97
|
configurable: true
|
|
156
98
|
};
|
|
99
|
+
|
|
100
|
+
module.exports.property = property;
|
|
@@ -7,7 +7,7 @@ const lineShorthand = "border-color";
|
|
|
7
7
|
const positionShorthand = "border-bottom";
|
|
8
8
|
const shorthand = "border";
|
|
9
9
|
|
|
10
|
-
module.exports.parse =
|
|
10
|
+
module.exports.parse = (v, opt = {}) => {
|
|
11
11
|
const { globalObject } = opt;
|
|
12
12
|
if (v === "") {
|
|
13
13
|
return v;
|
|
@@ -17,15 +17,7 @@ module.exports.parse = function parse(v, opt = {}) {
|
|
|
17
17
|
inArray: true
|
|
18
18
|
});
|
|
19
19
|
if (Array.isArray(value) && value.length === 1) {
|
|
20
|
-
|
|
21
|
-
switch (type) {
|
|
22
|
-
case "GlobalKeyword": {
|
|
23
|
-
return name;
|
|
24
|
-
}
|
|
25
|
-
default: {
|
|
26
|
-
return parsers.parseColor(value);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
20
|
+
return parsers.resolveColorValue(value);
|
|
29
21
|
} else if (typeof value === "string") {
|
|
30
22
|
return value;
|
|
31
23
|
}
|
|
@@ -33,7 +25,7 @@ module.exports.parse = function parse(v, opt = {}) {
|
|
|
33
25
|
|
|
34
26
|
module.exports.definition = {
|
|
35
27
|
set(v) {
|
|
36
|
-
v = parsers.prepareValue(v
|
|
28
|
+
v = parsers.prepareValue(v);
|
|
37
29
|
if (parsers.hasVarFunc(v)) {
|
|
38
30
|
this._borderSetter(property, v, "");
|
|
39
31
|
} else {
|
|
@@ -44,10 +36,10 @@ module.exports.definition = {
|
|
|
44
36
|
const shorthandPriority = this._priorities.get(shorthand);
|
|
45
37
|
const linePriority = this._priorities.get(lineShorthand);
|
|
46
38
|
const positionPriority = this._priorities.get(positionShorthand);
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
39
|
+
const priority =
|
|
40
|
+
!(shorthandPriority || linePriority || positionPriority) && this._priorities.has(property)
|
|
41
|
+
? this._priorities.get(property)
|
|
42
|
+
: "";
|
|
51
43
|
this._borderSetter(property, val, priority);
|
|
52
44
|
}
|
|
53
45
|
}
|
|
@@ -58,3 +50,5 @@ module.exports.definition = {
|
|
|
58
50
|
enumerable: true,
|
|
59
51
|
configurable: true
|
|
60
52
|
};
|
|
53
|
+
|
|
54
|
+
module.exports.property = property;
|