Skip to content

Commit d86aff4

Browse files
authored
🤖 Merge PR DefinitelyTyped#73447 [@types/gradient-parser] support HSL, HSLA, CSS variable, calc() expression by @t-hamano
1 parent 3468ac1 commit d86aff4

3 files changed

Lines changed: 89 additions & 9 deletions

File tree

‎types/gradient-parser/gradient-parser-tests.ts‎

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -321,6 +321,63 @@ ast = [
321321
],
322322
},
323323
];
324+
ast = [
325+
{
326+
type: "linear-gradient",
327+
colorStops: [
328+
{
329+
type: "hsl",
330+
value: ["120", "100%", "50%"],
331+
},
332+
{
333+
type: "hsla",
334+
value: ["240", "100%", "50%", "0.5"],
335+
},
336+
],
337+
},
338+
];
339+
ast = [
340+
{
341+
type: "linear-gradient",
342+
colorStops: [
343+
{
344+
type: "var",
345+
value: "var(--red)",
346+
},
347+
{
348+
type: "var",
349+
value: "var(--blue)",
350+
},
351+
],
352+
},
353+
];
354+
ast = [
355+
{
356+
type: "linear-gradient",
357+
orientation: {
358+
type: "angular",
359+
value: "90",
360+
},
361+
colorStops: [
362+
{
363+
type: "literal",
364+
value: "yellow",
365+
length: {
366+
type: "calc",
367+
value: "100% - 50px",
368+
},
369+
},
370+
{
371+
type: "literal",
372+
value: "green",
373+
length: {
374+
type: "calc",
375+
value: "100% - 20px",
376+
},
377+
},
378+
],
379+
},
380+
];
324381
ast = [
325382
{
326383
type: "radial-gradient",

‎types/gradient-parser/index.d.ts‎

Lines changed: 31 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -47,30 +47,48 @@ export interface AngularNode {
4747
export interface LiteralNode {
4848
type: "literal";
4949
value: string;
50-
length?: PxNode | EmNode | PercentNode | undefined;
50+
length?: PxNode | EmNode | PercentNode | CalcNode | undefined;
5151
}
5252

5353
export interface HexNode {
5454
type: "hex";
5555
value: string;
56-
length?: PxNode | EmNode | PercentNode | undefined;
56+
length?: PxNode | EmNode | PercentNode | CalcNode | undefined;
5757
}
5858

5959
export interface RgbNode {
6060
type: "rgb";
6161
value: [string, string, string];
62-
length?: PxNode | EmNode | PercentNode | undefined;
62+
length?: PxNode | EmNode | PercentNode | CalcNode | undefined;
6363
}
6464

6565
export interface RgbaNode {
6666
type: "rgba";
6767
value: [string, string, string, string?];
68-
length?: PxNode | EmNode | PercentNode | undefined;
68+
length?: PxNode | EmNode | PercentNode | CalcNode | undefined;
69+
}
70+
71+
export interface HslNode {
72+
type: "hsl";
73+
value: [string, string, string];
74+
length?: PxNode | EmNode | PercentNode | CalcNode | undefined;
75+
}
76+
77+
export interface HslaNode {
78+
type: "hsla";
79+
value: [string, string, string, string?];
80+
length?: PxNode | EmNode | PercentNode | CalcNode | undefined;
81+
}
82+
83+
export interface VarNode {
84+
type: "var";
85+
value: string;
86+
length?: PxNode | EmNode | PercentNode | CalcNode | undefined;
6987
}
7088

7189
export interface ShapeNode {
7290
type: "shape";
73-
style?: ExtentKeywordNode | PxNode | EmNode | PercentNode | PositionKeywordNode | undefined;
91+
style?: ExtentKeywordNode | PxNode | EmNode | PercentNode | PositionKeywordNode | CalcNode | undefined;
7492
value: "ellipse" | "circle";
7593
at?: PositionNode | undefined;
7694
}
@@ -88,8 +106,8 @@ export interface PositionKeywordNode {
88106
export interface PositionNode {
89107
type: "position";
90108
value: {
91-
x: ExtentKeywordNode | PxNode | EmNode | PercentNode | PositionKeywordNode;
92-
y: ExtentKeywordNode | PxNode | EmNode | PercentNode | PositionKeywordNode;
109+
x: ExtentKeywordNode | PxNode | EmNode | PercentNode | PositionKeywordNode | CalcNode;
110+
y: ExtentKeywordNode | PxNode | EmNode | PercentNode | PositionKeywordNode | CalcNode;
93111
};
94112
}
95113

@@ -114,7 +132,12 @@ export interface PercentNode {
114132
value: string;
115133
}
116134

117-
export type ColorStop = LiteralNode | HexNode | RgbNode | RgbaNode;
135+
export interface CalcNode {
136+
type: "calc";
137+
value: string;
138+
}
139+
140+
export type ColorStop = LiteralNode | HexNode | RgbNode | RgbaNode | HslNode | HslaNode | VarNode;
118141

119142
export type GradientNode =
120143
| LinearGradientNode

‎types/gradient-parser/package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"private": true,
33
"name": "@types/gradient-parser",
4-
"version": "0.1.9999",
4+
"version": "1.1.9999",
55
"projects": [
66
"https://github.com/rafaelcaricio/gradient-parser"
77
],

0 commit comments

Comments
 (0)