@tbela99/css-parser 1.1.1 → 1.3.0
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/CHANGELOG.md +11 -0
- package/README.md +53 -6
- package/dist/index-umd-web.js +5503 -5037
- package/dist/index.cjs +5510 -5044
- package/dist/index.d.ts +148 -41
- package/dist/lib/ast/expand.js +81 -65
- package/dist/lib/ast/features/calc.js +14 -36
- package/dist/lib/ast/features/inlinecssvariables.js +6 -17
- package/dist/lib/ast/features/prefix.js +22 -19
- package/dist/lib/ast/features/shorthand.js +1 -1
- package/dist/lib/ast/features/transform.js +17 -2
- package/dist/lib/ast/math/expression.js +74 -172
- package/dist/lib/ast/math/math.js +24 -22
- package/dist/lib/ast/minify.js +249 -199
- package/dist/lib/ast/transform/compute.js +18 -41
- package/dist/lib/ast/transform/matrix.js +36 -36
- package/dist/lib/ast/transform/minify.js +37 -59
- package/dist/lib/ast/transform/perspective.js +1 -1
- package/dist/lib/ast/transform/rotate.js +13 -13
- package/dist/lib/ast/transform/scale.js +8 -8
- package/dist/lib/ast/transform/skew.js +4 -4
- package/dist/lib/ast/transform/translate.js +8 -8
- package/dist/lib/ast/transform/utils.js +80 -28
- package/dist/lib/ast/types.js +122 -2
- package/dist/lib/fs/resolve.js +1 -14
- package/dist/lib/parser/declaration/list.js +1 -1
- package/dist/lib/parser/declaration/map.js +1 -1
- package/dist/lib/parser/declaration/set.js +3 -3
- package/dist/lib/parser/parse.js +53 -107
- package/dist/lib/parser/tokenize.js +29 -53
- package/dist/lib/parser/utils/declaration.js +1 -1
- package/dist/lib/parser/utils/type.js +2 -2
- package/dist/lib/renderer/render.js +79 -194
- package/dist/lib/{renderer → syntax}/color/a98rgb.js +2 -2
- package/dist/lib/syntax/color/cmyk.js +104 -0
- package/dist/lib/{renderer → syntax}/color/color-mix.js +31 -33
- package/dist/lib/syntax/color/color.js +581 -0
- package/dist/lib/syntax/color/hex.js +179 -0
- package/dist/lib/syntax/color/hsl.js +201 -0
- package/dist/lib/syntax/color/hwb.js +204 -0
- package/dist/lib/syntax/color/lab.js +262 -0
- package/dist/lib/syntax/color/lch.js +194 -0
- package/dist/lib/syntax/color/oklab.js +237 -0
- package/dist/lib/syntax/color/oklch.js +166 -0
- package/dist/lib/{renderer → syntax}/color/p3.js +3 -3
- package/dist/lib/{renderer → syntax}/color/rec2020.js +11 -11
- package/dist/lib/{renderer → syntax}/color/relativecolor.js +54 -41
- package/dist/lib/syntax/color/rgb.js +140 -0
- package/dist/lib/{renderer → syntax}/color/srgb.js +58 -46
- package/dist/lib/syntax/color/utils/components.js +46 -0
- package/dist/lib/{renderer → syntax}/color/utils/constants.js +6 -33
- package/dist/lib/syntax/color/utils/distance.js +40 -0
- package/dist/lib/{renderer → syntax}/color/xyz.js +27 -14
- package/dist/lib/{renderer → syntax}/color/xyzd50.js +8 -8
- package/dist/lib/syntax/syntax.js +78 -77
- package/dist/lib/syntax/utils.js +70 -0
- package/dist/lib/validation/at-rules/container.js +1 -1
- package/dist/lib/validation/at-rules/counter-style.js +1 -1
- package/dist/lib/validation/at-rules/custom-media.js +1 -1
- package/dist/lib/validation/at-rules/document.js +2 -2
- package/dist/lib/validation/at-rules/font-feature-values.js +2 -2
- package/dist/lib/validation/at-rules/import.js +5 -5
- package/dist/lib/validation/at-rules/keyframes.js +3 -13
- package/dist/lib/validation/at-rules/layer.js +1 -1
- package/dist/lib/validation/at-rules/media.js +1 -1
- package/dist/lib/validation/at-rules/namespace.js +1 -1
- package/dist/lib/validation/at-rules/page-margin-box.js +1 -1
- package/dist/lib/validation/at-rules/page.js +1 -1
- package/dist/lib/validation/at-rules/supports.js +7 -7
- package/dist/lib/validation/at-rules/when.js +1 -1
- package/dist/lib/validation/atrule.js +2 -2
- package/dist/lib/validation/config.js +0 -3
- package/dist/lib/validation/config.json.js +1 -1
- package/dist/lib/validation/parser/parse.js +8 -11
- package/dist/lib/validation/selector.js +1 -9
- package/dist/lib/validation/syntax.js +67 -137
- package/dist/lib/validation/syntaxes/complex-selector-list.js +2 -19
- package/dist/lib/validation/syntaxes/complex-selector.js +1 -1
- package/dist/lib/validation/syntaxes/compound-selector.js +5 -24
- package/dist/lib/validation/syntaxes/family-name.js +5 -40
- package/dist/lib/validation/syntaxes/keyframe-selector.js +3 -22
- package/dist/lib/validation/syntaxes/layer-name.js +1 -1
- package/dist/lib/validation/syntaxes/relative-selector-list.js +1 -25
- package/dist/lib/validation/syntaxes/relative-selector.js +1 -1
- package/dist/lib/validation/syntaxes/url.js +3 -34
- package/dist/lib/validation/utils/list.js +2 -9
- package/dist/lib/validation/utils/whitespace.js +1 -1
- package/dist/node/index.js +4 -2
- package/dist/web/index.js +4 -2
- package/package.json +4 -4
- package/.editorconfig +0 -484
- package/dist/lib/ast/transform/convert.js +0 -33
- package/dist/lib/ast/utils/utils.js +0 -104
- package/dist/lib/renderer/color/color.js +0 -654
- package/dist/lib/renderer/color/hex.js +0 -105
- package/dist/lib/renderer/color/hsl.js +0 -125
- package/dist/lib/renderer/color/hwb.js +0 -103
- package/dist/lib/renderer/color/lab.js +0 -148
- package/dist/lib/renderer/color/lch.js +0 -90
- package/dist/lib/renderer/color/oklab.js +0 -131
- package/dist/lib/renderer/color/oklch.js +0 -75
- package/dist/lib/renderer/color/rgb.js +0 -50
- package/dist/lib/renderer/color/utils/components.js +0 -34
- package/dist/lib/validation/syntaxes/keyframe-block-list.js +0 -28
- package/dist/lib/{renderer → syntax}/color/hsv.js +0 -0
- package/dist/lib/{renderer → syntax}/color/prophotorgb.js +1 -1
- /package/dist/lib/{renderer → syntax}/color/utils/matrix.js +0 -0
|
@@ -1,28 +1,27 @@
|
|
|
1
|
-
import { EnumToken } from '../../ast/types.js';
|
|
1
|
+
import { EnumToken, ColorType } from '../../ast/types.js';
|
|
2
2
|
import '../../ast/minify.js';
|
|
3
3
|
import '../../ast/walk.js';
|
|
4
4
|
import '../../parser/parse.js';
|
|
5
5
|
import '../../parser/tokenize.js';
|
|
6
6
|
import '../../parser/utils/config.js';
|
|
7
|
-
import { isRectangularOrthogonalColorspace, isPolarColorspace } from '
|
|
7
|
+
import { isRectangularOrthogonalColorspace, isPolarColorspace } from '../syntax.js';
|
|
8
8
|
import { getNumber } from './color.js';
|
|
9
9
|
import { srgb2rgb } from './rgb.js';
|
|
10
|
-
import
|
|
10
|
+
import './utils/constants.js';
|
|
11
11
|
import { getComponents } from './utils/components.js';
|
|
12
|
-
import {
|
|
13
|
-
import { srgb2hsl } from './hsl.js';
|
|
12
|
+
import { srgb2oklab } from './oklab.js';
|
|
14
13
|
import { srgbvalues, srgb2lsrgbvalues } from './srgb.js';
|
|
14
|
+
import { srgb2hwb } from './hwb.js';
|
|
15
|
+
import { srgb2hslvalues } from './hsl.js';
|
|
15
16
|
import { srgb2lch, xyz2lchvalues } from './lch.js';
|
|
16
|
-
import {
|
|
17
|
+
import { srgb2labvalues } from './lab.js';
|
|
17
18
|
import { srgb2p3values } from './p3.js';
|
|
18
19
|
import { srgb2oklch } from './oklch.js';
|
|
19
|
-
import { srgb2oklab } from './oklab.js';
|
|
20
|
-
import { srgb2a98values } from './a98rgb.js';
|
|
21
20
|
import { srgb2prophotorgbvalues } from './prophotorgb.js';
|
|
22
|
-
import {
|
|
21
|
+
import { srgb2xyz_d50 } from './xyz.js';
|
|
23
22
|
import { XYZ_D65_to_D50, xyzd502lch } from './xyzd50.js';
|
|
24
23
|
import { srgb2rec2020values } from './rec2020.js';
|
|
25
|
-
import '
|
|
24
|
+
import '../../renderer/sourcemap/lib/encode.js';
|
|
26
25
|
|
|
27
26
|
function interpolateHue(interpolationMethod, h1, h2) {
|
|
28
27
|
switch (interpolationMethod.val) {
|
|
@@ -58,7 +57,7 @@ function interpolateHue(interpolationMethod, h1, h2) {
|
|
|
58
57
|
return [h1, h2];
|
|
59
58
|
}
|
|
60
59
|
function colorMix(colorSpace, hueInterpolationMethod, color1, percentage1, color2, percentage2) {
|
|
61
|
-
if (color1.val == 'currentcolor' || color2.val == 'currentcolor') {
|
|
60
|
+
if (color1.val.toLowerCase() == 'currentcolor' || color2.val == 'currentcolor'.toLowerCase()) {
|
|
62
61
|
return null;
|
|
63
62
|
}
|
|
64
63
|
if (hueInterpolationMethod != null && isRectangularOrthogonalColorspace(colorSpace)) {
|
|
@@ -70,20 +69,19 @@ function colorMix(colorSpace, hueInterpolationMethod, color1, percentage1, color
|
|
|
70
69
|
if (percentage1 == null) {
|
|
71
70
|
if (percentage2 == null) {
|
|
72
71
|
// @ts-ignore
|
|
73
|
-
percentage1 = { typ: EnumToken.NumberTokenType, val:
|
|
72
|
+
percentage1 = { typ: EnumToken.NumberTokenType, val: .5 };
|
|
74
73
|
// @ts-ignore
|
|
75
|
-
percentage2 = { typ: EnumToken.NumberTokenType, val:
|
|
74
|
+
percentage2 = { typ: EnumToken.NumberTokenType, val: .5 };
|
|
76
75
|
}
|
|
77
76
|
else {
|
|
78
77
|
if (+percentage2.val <= 0) {
|
|
79
78
|
return null;
|
|
80
79
|
}
|
|
81
80
|
if (+percentage2.val >= 100) {
|
|
82
|
-
|
|
83
|
-
percentage2 = { typ: EnumToken.NumberTokenType, val: '1' };
|
|
81
|
+
percentage2 = { typ: EnumToken.NumberTokenType, val: 1 };
|
|
84
82
|
}
|
|
85
83
|
// @ts-ignore
|
|
86
|
-
percentage1 = { typ: EnumToken.NumberTokenType, val:
|
|
84
|
+
percentage1 = { typ: EnumToken.NumberTokenType, val: 1 - percentage2.val / 100 };
|
|
87
85
|
}
|
|
88
86
|
}
|
|
89
87
|
else {
|
|
@@ -95,10 +93,10 @@ function colorMix(colorSpace, hueInterpolationMethod, color1, percentage1, color
|
|
|
95
93
|
// @ts-ignore
|
|
96
94
|
if (percentage1.val >= 100) {
|
|
97
95
|
// @ts-ignore
|
|
98
|
-
percentage1 = { typ: EnumToken.NumberTokenType, val:
|
|
96
|
+
percentage1 = { typ: EnumToken.NumberTokenType, val: 1 };
|
|
99
97
|
}
|
|
100
98
|
// @ts-ignore
|
|
101
|
-
percentage2 = { typ: EnumToken.NumberTokenType, val:
|
|
99
|
+
percentage2 = { typ: EnumToken.NumberTokenType, val: 1 - percentage1.val / 100 };
|
|
102
100
|
}
|
|
103
101
|
else {
|
|
104
102
|
// @ts-ignore
|
|
@@ -174,9 +172,9 @@ function colorMix(colorSpace, hueInterpolationMethod, color1, percentage1, color
|
|
|
174
172
|
case 'xyz-d65':
|
|
175
173
|
case 'xyz-d50':
|
|
176
174
|
// @ts-ignore
|
|
177
|
-
values1 =
|
|
175
|
+
values1 = srgb2xyz_d50(...values1);
|
|
178
176
|
// @ts-ignore
|
|
179
|
-
values2 =
|
|
177
|
+
values2 = srgb2xyz_d50(...values2);
|
|
180
178
|
if (colorSpace.val == 'xyz-d50') {
|
|
181
179
|
// @ts-ignore
|
|
182
180
|
values1 = XYZ_D65_to_D50(...values1);
|
|
@@ -192,9 +190,9 @@ function colorMix(colorSpace, hueInterpolationMethod, color1, percentage1, color
|
|
|
192
190
|
break;
|
|
193
191
|
case 'hsl':
|
|
194
192
|
// @ts-ignore
|
|
195
|
-
values1 =
|
|
193
|
+
values1 = srgb2hslvalues(...values1);
|
|
196
194
|
// @ts-ignore
|
|
197
|
-
values2 =
|
|
195
|
+
values2 = srgb2hslvalues(...values2);
|
|
198
196
|
break;
|
|
199
197
|
case 'hwb':
|
|
200
198
|
// @ts-ignore
|
|
@@ -204,9 +202,9 @@ function colorMix(colorSpace, hueInterpolationMethod, color1, percentage1, color
|
|
|
204
202
|
break;
|
|
205
203
|
case 'lab':
|
|
206
204
|
// @ts-ignore
|
|
207
|
-
values1 =
|
|
205
|
+
values1 = srgb2labvalues(...values1);
|
|
208
206
|
// @ts-ignore
|
|
209
|
-
values2 =
|
|
207
|
+
values2 = srgb2labvalues(...values2);
|
|
210
208
|
break;
|
|
211
209
|
case 'lch':
|
|
212
210
|
// @ts-ignore
|
|
@@ -230,8 +228,8 @@ function colorMix(colorSpace, hueInterpolationMethod, color1, percentage1, color
|
|
|
230
228
|
return null;
|
|
231
229
|
}
|
|
232
230
|
const lchSpaces = ['lch', 'oklch'];
|
|
233
|
-
const colorSpace1 =
|
|
234
|
-
const colorSpace2 =
|
|
231
|
+
const colorSpace1 = ColorType[color1.kin].toLowerCase().replaceAll('_', '-');
|
|
232
|
+
const colorSpace2 = ColorType[color2.kin].toLowerCase().replaceAll('_', '-');
|
|
235
233
|
// powerless
|
|
236
234
|
if (lchSpaces.includes(colorSpace1) || lchSpaces.includes(colorSpace.val)) {
|
|
237
235
|
if ((components1[2].typ == EnumToken.IdenTokenType && components1[2].val == 'none') || values1[2] == 0) {
|
|
@@ -276,10 +274,10 @@ function colorMix(colorSpace, hueInterpolationMethod, color1, percentage1, color
|
|
|
276
274
|
chi: values.map(v => {
|
|
277
275
|
return {
|
|
278
276
|
typ: EnumToken.NumberTokenType,
|
|
279
|
-
val:
|
|
277
|
+
val: v
|
|
280
278
|
};
|
|
281
279
|
}),
|
|
282
|
-
kin:
|
|
280
|
+
kin: ColorType.LCH
|
|
283
281
|
};
|
|
284
282
|
case 'srgb':
|
|
285
283
|
case 'srgb-linear':
|
|
@@ -290,7 +288,7 @@ function colorMix(colorSpace, hueInterpolationMethod, color1, percentage1, color
|
|
|
290
288
|
typ: EnumToken.ColorTokenType,
|
|
291
289
|
val: 'color',
|
|
292
290
|
chi: calculate(),
|
|
293
|
-
kin:
|
|
291
|
+
kin: ColorType.COLOR,
|
|
294
292
|
cal: 'col'
|
|
295
293
|
};
|
|
296
294
|
case 'rgb':
|
|
@@ -329,15 +327,15 @@ function colorMix(colorSpace, hueInterpolationMethod, color1, percentage1, color
|
|
|
329
327
|
typ: EnumToken.ColorTokenType,
|
|
330
328
|
val: colorSpace.val,
|
|
331
329
|
chi: calculate().slice(1),
|
|
332
|
-
kin:
|
|
330
|
+
kin: ColorType[colorSpace.val.toUpperCase().replaceAll('-', '_')]
|
|
333
331
|
};
|
|
334
332
|
if (colorSpace.val == 'hsl' || colorSpace.val == 'hwb') {
|
|
335
333
|
// @ts-ignore
|
|
336
|
-
result.chi[0] = { typ: EnumToken.AngleTokenType, val:
|
|
334
|
+
result.chi[0] = { typ: EnumToken.AngleTokenType, val: result.chi[0].val * 360 };
|
|
337
335
|
// @ts-ignore
|
|
338
|
-
result.chi[1] = { typ: EnumToken.PercentageTokenType, val:
|
|
336
|
+
result.chi[1] = { typ: EnumToken.PercentageTokenType, val: result.chi[1].val * 100 };
|
|
339
337
|
// @ts-ignore
|
|
340
|
-
result.chi[2] = { typ: EnumToken.PercentageTokenType, val:
|
|
338
|
+
result.chi[2] = { typ: EnumToken.PercentageTokenType, val: result.chi[2].val * 100 };
|
|
341
339
|
}
|
|
342
340
|
return result;
|
|
343
341
|
}
|