@terrazzo/plugin-vanilla-extract 0.0.1 → 0.1.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 +14 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +24 -1713
- package/dist/index.js.map +1 -1
- package/package.json +5 -5
package/dist/index.js
CHANGED
|
@@ -1,1702 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
const parseNumber = (color, len) => {
|
|
3
|
-
if (typeof color !== "number") return;
|
|
4
|
-
if (len === 3) return {
|
|
5
|
-
mode: "rgb",
|
|
6
|
-
r: (color >> 8 & 15 | color >> 4 & 240) / 255,
|
|
7
|
-
g: (color >> 4 & 15 | color & 240) / 255,
|
|
8
|
-
b: (color & 15 | color << 4 & 240) / 255
|
|
9
|
-
};
|
|
10
|
-
if (len === 4) return {
|
|
11
|
-
mode: "rgb",
|
|
12
|
-
r: (color >> 12 & 15 | color >> 8 & 240) / 255,
|
|
13
|
-
g: (color >> 8 & 15 | color >> 4 & 240) / 255,
|
|
14
|
-
b: (color >> 4 & 15 | color & 240) / 255,
|
|
15
|
-
alpha: (color & 15 | color << 4 & 240) / 255
|
|
16
|
-
};
|
|
17
|
-
if (len === 6) return {
|
|
18
|
-
mode: "rgb",
|
|
19
|
-
r: (color >> 16 & 255) / 255,
|
|
20
|
-
g: (color >> 8 & 255) / 255,
|
|
21
|
-
b: (color & 255) / 255
|
|
22
|
-
};
|
|
23
|
-
if (len === 8) return {
|
|
24
|
-
mode: "rgb",
|
|
25
|
-
r: (color >> 24 & 255) / 255,
|
|
26
|
-
g: (color >> 16 & 255) / 255,
|
|
27
|
-
b: (color >> 8 & 255) / 255,
|
|
28
|
-
alpha: (color & 255) / 255
|
|
29
|
-
};
|
|
30
|
-
};
|
|
31
|
-
var parseNumber_default = parseNumber;
|
|
32
|
-
const named = {
|
|
33
|
-
aliceblue: 15792383,
|
|
34
|
-
antiquewhite: 16444375,
|
|
35
|
-
aqua: 65535,
|
|
36
|
-
aquamarine: 8388564,
|
|
37
|
-
azure: 15794175,
|
|
38
|
-
beige: 16119260,
|
|
39
|
-
bisque: 16770244,
|
|
40
|
-
black: 0,
|
|
41
|
-
blanchedalmond: 16772045,
|
|
42
|
-
blue: 255,
|
|
43
|
-
blueviolet: 9055202,
|
|
44
|
-
brown: 10824234,
|
|
45
|
-
burlywood: 14596231,
|
|
46
|
-
cadetblue: 6266528,
|
|
47
|
-
chartreuse: 8388352,
|
|
48
|
-
chocolate: 13789470,
|
|
49
|
-
coral: 16744272,
|
|
50
|
-
cornflowerblue: 6591981,
|
|
51
|
-
cornsilk: 16775388,
|
|
52
|
-
crimson: 14423100,
|
|
53
|
-
cyan: 65535,
|
|
54
|
-
darkblue: 139,
|
|
55
|
-
darkcyan: 35723,
|
|
56
|
-
darkgoldenrod: 12092939,
|
|
57
|
-
darkgray: 11119017,
|
|
58
|
-
darkgreen: 25600,
|
|
59
|
-
darkgrey: 11119017,
|
|
60
|
-
darkkhaki: 12433259,
|
|
61
|
-
darkmagenta: 9109643,
|
|
62
|
-
darkolivegreen: 5597999,
|
|
63
|
-
darkorange: 16747520,
|
|
64
|
-
darkorchid: 10040012,
|
|
65
|
-
darkred: 9109504,
|
|
66
|
-
darksalmon: 15308410,
|
|
67
|
-
darkseagreen: 9419919,
|
|
68
|
-
darkslateblue: 4734347,
|
|
69
|
-
darkslategray: 3100495,
|
|
70
|
-
darkslategrey: 3100495,
|
|
71
|
-
darkturquoise: 52945,
|
|
72
|
-
darkviolet: 9699539,
|
|
73
|
-
deeppink: 16716947,
|
|
74
|
-
deepskyblue: 49151,
|
|
75
|
-
dimgray: 6908265,
|
|
76
|
-
dimgrey: 6908265,
|
|
77
|
-
dodgerblue: 2003199,
|
|
78
|
-
firebrick: 11674146,
|
|
79
|
-
floralwhite: 16775920,
|
|
80
|
-
forestgreen: 2263842,
|
|
81
|
-
fuchsia: 16711935,
|
|
82
|
-
gainsboro: 14474460,
|
|
83
|
-
ghostwhite: 16316671,
|
|
84
|
-
gold: 16766720,
|
|
85
|
-
goldenrod: 14329120,
|
|
86
|
-
gray: 8421504,
|
|
87
|
-
green: 32768,
|
|
88
|
-
greenyellow: 11403055,
|
|
89
|
-
grey: 8421504,
|
|
90
|
-
honeydew: 15794160,
|
|
91
|
-
hotpink: 16738740,
|
|
92
|
-
indianred: 13458524,
|
|
93
|
-
indigo: 4915330,
|
|
94
|
-
ivory: 16777200,
|
|
95
|
-
khaki: 15787660,
|
|
96
|
-
lavender: 15132410,
|
|
97
|
-
lavenderblush: 16773365,
|
|
98
|
-
lawngreen: 8190976,
|
|
99
|
-
lemonchiffon: 16775885,
|
|
100
|
-
lightblue: 11393254,
|
|
101
|
-
lightcoral: 15761536,
|
|
102
|
-
lightcyan: 14745599,
|
|
103
|
-
lightgoldenrodyellow: 16448210,
|
|
104
|
-
lightgray: 13882323,
|
|
105
|
-
lightgreen: 9498256,
|
|
106
|
-
lightgrey: 13882323,
|
|
107
|
-
lightpink: 16758465,
|
|
108
|
-
lightsalmon: 16752762,
|
|
109
|
-
lightseagreen: 2142890,
|
|
110
|
-
lightskyblue: 8900346,
|
|
111
|
-
lightslategray: 7833753,
|
|
112
|
-
lightslategrey: 7833753,
|
|
113
|
-
lightsteelblue: 11584734,
|
|
114
|
-
lightyellow: 16777184,
|
|
115
|
-
lime: 65280,
|
|
116
|
-
limegreen: 3329330,
|
|
117
|
-
linen: 16445670,
|
|
118
|
-
magenta: 16711935,
|
|
119
|
-
maroon: 8388608,
|
|
120
|
-
mediumaquamarine: 6737322,
|
|
121
|
-
mediumblue: 205,
|
|
122
|
-
mediumorchid: 12211667,
|
|
123
|
-
mediumpurple: 9662683,
|
|
124
|
-
mediumseagreen: 3978097,
|
|
125
|
-
mediumslateblue: 8087790,
|
|
126
|
-
mediumspringgreen: 64154,
|
|
127
|
-
mediumturquoise: 4772300,
|
|
128
|
-
mediumvioletred: 13047173,
|
|
129
|
-
midnightblue: 1644912,
|
|
130
|
-
mintcream: 16121850,
|
|
131
|
-
mistyrose: 16770273,
|
|
132
|
-
moccasin: 16770229,
|
|
133
|
-
navajowhite: 16768685,
|
|
134
|
-
navy: 128,
|
|
135
|
-
oldlace: 16643558,
|
|
136
|
-
olive: 8421376,
|
|
137
|
-
olivedrab: 7048739,
|
|
138
|
-
orange: 16753920,
|
|
139
|
-
orangered: 16729344,
|
|
140
|
-
orchid: 14315734,
|
|
141
|
-
palegoldenrod: 15657130,
|
|
142
|
-
palegreen: 10025880,
|
|
143
|
-
paleturquoise: 11529966,
|
|
144
|
-
palevioletred: 14381203,
|
|
145
|
-
papayawhip: 16773077,
|
|
146
|
-
peachpuff: 16767673,
|
|
147
|
-
peru: 13468991,
|
|
148
|
-
pink: 16761035,
|
|
149
|
-
plum: 14524637,
|
|
150
|
-
powderblue: 11591910,
|
|
151
|
-
purple: 8388736,
|
|
152
|
-
rebeccapurple: 6697881,
|
|
153
|
-
red: 16711680,
|
|
154
|
-
rosybrown: 12357519,
|
|
155
|
-
royalblue: 4286945,
|
|
156
|
-
saddlebrown: 9127187,
|
|
157
|
-
salmon: 16416882,
|
|
158
|
-
sandybrown: 16032864,
|
|
159
|
-
seagreen: 3050327,
|
|
160
|
-
seashell: 16774638,
|
|
161
|
-
sienna: 10506797,
|
|
162
|
-
silver: 12632256,
|
|
163
|
-
skyblue: 8900331,
|
|
164
|
-
slateblue: 6970061,
|
|
165
|
-
slategray: 7372944,
|
|
166
|
-
slategrey: 7372944,
|
|
167
|
-
snow: 16775930,
|
|
168
|
-
springgreen: 65407,
|
|
169
|
-
steelblue: 4620980,
|
|
170
|
-
tan: 13808780,
|
|
171
|
-
teal: 32896,
|
|
172
|
-
thistle: 14204888,
|
|
173
|
-
tomato: 16737095,
|
|
174
|
-
turquoise: 4251856,
|
|
175
|
-
violet: 15631086,
|
|
176
|
-
wheat: 16113331,
|
|
177
|
-
white: 16777215,
|
|
178
|
-
whitesmoke: 16119285,
|
|
179
|
-
yellow: 16776960,
|
|
180
|
-
yellowgreen: 10145074
|
|
181
|
-
};
|
|
182
|
-
var named_default = named;
|
|
183
|
-
const parseNamed = (color) => {
|
|
184
|
-
return parseNumber_default(named_default[color.toLowerCase()], 6);
|
|
185
|
-
};
|
|
186
|
-
var parseNamed_default = parseNamed;
|
|
187
|
-
const hex = /^#?([0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{4}|[0-9a-f]{3})$/i;
|
|
188
|
-
const parseHex = (color) => {
|
|
189
|
-
let match;
|
|
190
|
-
return (match = color.match(hex)) ? parseNumber_default(parseInt(match[1], 16), match[1].length) : void 0;
|
|
191
|
-
};
|
|
192
|
-
var parseHex_default = parseHex;
|
|
193
|
-
const num$1 = "([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)";
|
|
194
|
-
const num_none = `(?:${num$1}|none)`;
|
|
195
|
-
const per = `${num$1}%`;
|
|
196
|
-
const per_none = `(?:${num$1}%|none)`;
|
|
197
|
-
const num_per = `(?:${num$1}%|${num$1})`;
|
|
198
|
-
const num_per_none = `(?:${num$1}%|${num$1}|none)`;
|
|
199
|
-
const hue$1 = `(?:${num$1}(deg|grad|rad|turn)|${num$1})`;
|
|
200
|
-
const hue_none = `(?:${num$1}(deg|grad|rad|turn)|${num$1}|none)`;
|
|
201
|
-
const c = `\\s*,\\s*`;
|
|
202
|
-
const rx_num_per_none = new RegExp("^" + num_per_none + "$");
|
|
203
|
-
const rgb_num_old = new RegExp(`^rgba?\\(\\s*${num$1}${c}${num$1}${c}${num$1}\\s*(?:,\\s*${num_per}\\s*)?\\)$`);
|
|
204
|
-
const rgb_per_old = new RegExp(`^rgba?\\(\\s*${per}${c}${per}${c}${per}\\s*(?:,\\s*${num_per}\\s*)?\\)$`);
|
|
205
|
-
const parseRgbLegacy = (color) => {
|
|
206
|
-
let res = { mode: "rgb" };
|
|
207
|
-
let match;
|
|
208
|
-
if (match = color.match(rgb_num_old)) {
|
|
209
|
-
if (match[1] !== void 0) res.r = match[1] / 255;
|
|
210
|
-
if (match[2] !== void 0) res.g = match[2] / 255;
|
|
211
|
-
if (match[3] !== void 0) res.b = match[3] / 255;
|
|
212
|
-
} else if (match = color.match(rgb_per_old)) {
|
|
213
|
-
if (match[1] !== void 0) res.r = match[1] / 100;
|
|
214
|
-
if (match[2] !== void 0) res.g = match[2] / 100;
|
|
215
|
-
if (match[3] !== void 0) res.b = match[3] / 100;
|
|
216
|
-
} else return void 0;
|
|
217
|
-
if (match[4] !== void 0) res.alpha = Math.max(0, Math.min(1, match[4] / 100));
|
|
218
|
-
else if (match[5] !== void 0) res.alpha = Math.max(0, Math.min(1, +match[5]));
|
|
219
|
-
return res;
|
|
220
|
-
};
|
|
221
|
-
var parseRgbLegacy_default = parseRgbLegacy;
|
|
222
|
-
const prepare = (color, mode) => color === void 0 ? void 0 : typeof color !== "object" ? parse_default(color) : color.mode !== void 0 ? color : mode ? {
|
|
223
|
-
...color,
|
|
224
|
-
mode
|
|
225
|
-
} : void 0;
|
|
226
|
-
var _prepare_default = prepare;
|
|
227
|
-
const converter = (target_mode = "rgb") => (color) => (color = _prepare_default(color, target_mode)) !== void 0 ? color.mode === target_mode ? color : converters$1[color.mode][target_mode] ? converters$1[color.mode][target_mode](color) : target_mode === "rgb" ? converters$1[color.mode].rgb(color) : converters$1.rgb[target_mode](converters$1[color.mode].rgb(color)) : void 0;
|
|
228
|
-
var converter_default = converter;
|
|
229
|
-
const converters$1 = {};
|
|
230
|
-
const modes = {};
|
|
231
|
-
const parsers = [];
|
|
232
|
-
const colorProfiles = {};
|
|
233
|
-
const identity = (v) => v;
|
|
234
|
-
const useMode = (definition$15) => {
|
|
235
|
-
converters$1[definition$15.mode] = {
|
|
236
|
-
...converters$1[definition$15.mode],
|
|
237
|
-
...definition$15.toMode
|
|
238
|
-
};
|
|
239
|
-
Object.keys(definition$15.fromMode || {}).forEach((k$2) => {
|
|
240
|
-
if (!converters$1[k$2]) converters$1[k$2] = {};
|
|
241
|
-
converters$1[k$2][definition$15.mode] = definition$15.fromMode[k$2];
|
|
242
|
-
});
|
|
243
|
-
if (!definition$15.ranges) definition$15.ranges = {};
|
|
244
|
-
if (!definition$15.difference) definition$15.difference = {};
|
|
245
|
-
definition$15.channels.forEach((channel) => {
|
|
246
|
-
if (definition$15.ranges[channel] === void 0) definition$15.ranges[channel] = [0, 1];
|
|
247
|
-
if (!definition$15.interpolate[channel]) throw new Error(`Missing interpolator for: ${channel}`);
|
|
248
|
-
if (typeof definition$15.interpolate[channel] === "function") definition$15.interpolate[channel] = { use: definition$15.interpolate[channel] };
|
|
249
|
-
if (!definition$15.interpolate[channel].fixup) definition$15.interpolate[channel].fixup = identity;
|
|
250
|
-
});
|
|
251
|
-
modes[definition$15.mode] = definition$15;
|
|
252
|
-
(definition$15.parse || []).forEach((parser) => {
|
|
253
|
-
useParser(parser, definition$15.mode);
|
|
254
|
-
});
|
|
255
|
-
return converter_default(definition$15.mode);
|
|
256
|
-
};
|
|
257
|
-
const getMode = (mode) => modes[mode];
|
|
258
|
-
const useParser = (parser, mode) => {
|
|
259
|
-
if (typeof parser === "string") {
|
|
260
|
-
if (!mode) throw new Error(`'mode' required when 'parser' is a string`);
|
|
261
|
-
colorProfiles[parser] = mode;
|
|
262
|
-
} else if (typeof parser === "function") {
|
|
263
|
-
if (parsers.indexOf(parser) < 0) parsers.push(parser);
|
|
264
|
-
}
|
|
265
|
-
};
|
|
266
|
-
const IdentStartCodePoint = /[^\x00-\x7F]|[a-zA-Z_]/;
|
|
267
|
-
const IdentCodePoint = /[^\x00-\x7F]|[-\w]/;
|
|
268
|
-
const Tok = {
|
|
269
|
-
Function: "function",
|
|
270
|
-
Ident: "ident",
|
|
271
|
-
Number: "number",
|
|
272
|
-
Percentage: "percentage",
|
|
273
|
-
ParenClose: ")",
|
|
274
|
-
None: "none",
|
|
275
|
-
Hue: "hue",
|
|
276
|
-
Alpha: "alpha"
|
|
277
|
-
};
|
|
278
|
-
let _i = 0;
|
|
279
|
-
function is_num(chars) {
|
|
280
|
-
let ch = chars[_i];
|
|
281
|
-
let ch1 = chars[_i + 1];
|
|
282
|
-
if (ch === "-" || ch === "+") return /\d/.test(ch1) || ch1 === "." && /\d/.test(chars[_i + 2]);
|
|
283
|
-
if (ch === ".") return /\d/.test(ch1);
|
|
284
|
-
return /\d/.test(ch);
|
|
285
|
-
}
|
|
286
|
-
function is_ident(chars) {
|
|
287
|
-
if (_i >= chars.length) return false;
|
|
288
|
-
let ch = chars[_i];
|
|
289
|
-
if (IdentStartCodePoint.test(ch)) return true;
|
|
290
|
-
if (ch === "-") {
|
|
291
|
-
if (chars.length - _i < 2) return false;
|
|
292
|
-
let ch1 = chars[_i + 1];
|
|
293
|
-
if (ch1 === "-" || IdentStartCodePoint.test(ch1)) return true;
|
|
294
|
-
return false;
|
|
295
|
-
}
|
|
296
|
-
return false;
|
|
297
|
-
}
|
|
298
|
-
const huenits = {
|
|
299
|
-
deg: 1,
|
|
300
|
-
rad: 180 / Math.PI,
|
|
301
|
-
grad: 9 / 10,
|
|
302
|
-
turn: 360
|
|
303
|
-
};
|
|
304
|
-
function num(chars) {
|
|
305
|
-
let value = "";
|
|
306
|
-
if (chars[_i] === "-" || chars[_i] === "+") value += chars[_i++];
|
|
307
|
-
value += digits(chars);
|
|
308
|
-
if (chars[_i] === "." && /\d/.test(chars[_i + 1])) value += chars[_i++] + digits(chars);
|
|
309
|
-
if (chars[_i] === "e" || chars[_i] === "E") {
|
|
310
|
-
if ((chars[_i + 1] === "-" || chars[_i + 1] === "+") && /\d/.test(chars[_i + 2])) value += chars[_i++] + chars[_i++] + digits(chars);
|
|
311
|
-
else if (/\d/.test(chars[_i + 1])) value += chars[_i++] + digits(chars);
|
|
312
|
-
}
|
|
313
|
-
if (is_ident(chars)) {
|
|
314
|
-
let id = ident(chars);
|
|
315
|
-
if (id === "deg" || id === "rad" || id === "turn" || id === "grad") return {
|
|
316
|
-
type: Tok.Hue,
|
|
317
|
-
value: value * huenits[id]
|
|
318
|
-
};
|
|
319
|
-
return void 0;
|
|
320
|
-
}
|
|
321
|
-
if (chars[_i] === "%") {
|
|
322
|
-
_i++;
|
|
323
|
-
return {
|
|
324
|
-
type: Tok.Percentage,
|
|
325
|
-
value: +value
|
|
326
|
-
};
|
|
327
|
-
}
|
|
328
|
-
return {
|
|
329
|
-
type: Tok.Number,
|
|
330
|
-
value: +value
|
|
331
|
-
};
|
|
332
|
-
}
|
|
333
|
-
function digits(chars) {
|
|
334
|
-
let v = "";
|
|
335
|
-
while (/\d/.test(chars[_i])) v += chars[_i++];
|
|
336
|
-
return v;
|
|
337
|
-
}
|
|
338
|
-
function ident(chars) {
|
|
339
|
-
let v = "";
|
|
340
|
-
while (_i < chars.length && IdentCodePoint.test(chars[_i])) v += chars[_i++];
|
|
341
|
-
return v;
|
|
342
|
-
}
|
|
343
|
-
function identlike(chars) {
|
|
344
|
-
let v = ident(chars);
|
|
345
|
-
if (chars[_i] === "(") {
|
|
346
|
-
_i++;
|
|
347
|
-
return {
|
|
348
|
-
type: Tok.Function,
|
|
349
|
-
value: v
|
|
350
|
-
};
|
|
351
|
-
}
|
|
352
|
-
if (v === "none") return {
|
|
353
|
-
type: Tok.None,
|
|
354
|
-
value: void 0
|
|
355
|
-
};
|
|
356
|
-
return {
|
|
357
|
-
type: Tok.Ident,
|
|
358
|
-
value: v
|
|
359
|
-
};
|
|
360
|
-
}
|
|
361
|
-
function tokenize(str = "") {
|
|
362
|
-
let chars = str.trim();
|
|
363
|
-
let tokens = [];
|
|
364
|
-
let ch;
|
|
365
|
-
_i = 0;
|
|
366
|
-
while (_i < chars.length) {
|
|
367
|
-
ch = chars[_i++];
|
|
368
|
-
if (ch === "\n" || ch === " " || ch === " ") {
|
|
369
|
-
while (_i < chars.length && (chars[_i] === "\n" || chars[_i] === " " || chars[_i] === " ")) _i++;
|
|
370
|
-
continue;
|
|
371
|
-
}
|
|
372
|
-
if (ch === ",") return void 0;
|
|
373
|
-
if (ch === ")") {
|
|
374
|
-
tokens.push({ type: Tok.ParenClose });
|
|
375
|
-
continue;
|
|
376
|
-
}
|
|
377
|
-
if (ch === "+") {
|
|
378
|
-
_i--;
|
|
379
|
-
if (is_num(chars)) {
|
|
380
|
-
tokens.push(num(chars));
|
|
381
|
-
continue;
|
|
382
|
-
}
|
|
383
|
-
return void 0;
|
|
384
|
-
}
|
|
385
|
-
if (ch === "-") {
|
|
386
|
-
_i--;
|
|
387
|
-
if (is_num(chars)) {
|
|
388
|
-
tokens.push(num(chars));
|
|
389
|
-
continue;
|
|
390
|
-
}
|
|
391
|
-
if (is_ident(chars)) {
|
|
392
|
-
tokens.push({
|
|
393
|
-
type: Tok.Ident,
|
|
394
|
-
value: ident(chars)
|
|
395
|
-
});
|
|
396
|
-
continue;
|
|
397
|
-
}
|
|
398
|
-
return void 0;
|
|
399
|
-
}
|
|
400
|
-
if (ch === ".") {
|
|
401
|
-
_i--;
|
|
402
|
-
if (is_num(chars)) {
|
|
403
|
-
tokens.push(num(chars));
|
|
404
|
-
continue;
|
|
405
|
-
}
|
|
406
|
-
return void 0;
|
|
407
|
-
}
|
|
408
|
-
if (ch === "/") {
|
|
409
|
-
while (_i < chars.length && (chars[_i] === "\n" || chars[_i] === " " || chars[_i] === " ")) _i++;
|
|
410
|
-
let alpha;
|
|
411
|
-
if (is_num(chars)) {
|
|
412
|
-
alpha = num(chars);
|
|
413
|
-
if (alpha.type !== Tok.Hue) {
|
|
414
|
-
tokens.push({
|
|
415
|
-
type: Tok.Alpha,
|
|
416
|
-
value: alpha
|
|
417
|
-
});
|
|
418
|
-
continue;
|
|
419
|
-
}
|
|
420
|
-
}
|
|
421
|
-
if (is_ident(chars)) {
|
|
422
|
-
if (ident(chars) === "none") {
|
|
423
|
-
tokens.push({
|
|
424
|
-
type: Tok.Alpha,
|
|
425
|
-
value: {
|
|
426
|
-
type: Tok.None,
|
|
427
|
-
value: void 0
|
|
428
|
-
}
|
|
429
|
-
});
|
|
430
|
-
continue;
|
|
431
|
-
}
|
|
432
|
-
}
|
|
433
|
-
return void 0;
|
|
434
|
-
}
|
|
435
|
-
if (/\d/.test(ch)) {
|
|
436
|
-
_i--;
|
|
437
|
-
tokens.push(num(chars));
|
|
438
|
-
continue;
|
|
439
|
-
}
|
|
440
|
-
if (IdentStartCodePoint.test(ch)) {
|
|
441
|
-
_i--;
|
|
442
|
-
tokens.push(identlike(chars));
|
|
443
|
-
continue;
|
|
444
|
-
}
|
|
445
|
-
return void 0;
|
|
446
|
-
}
|
|
447
|
-
return tokens;
|
|
448
|
-
}
|
|
449
|
-
function parseColorSyntax(tokens) {
|
|
450
|
-
tokens._i = 0;
|
|
451
|
-
let token = tokens[tokens._i++];
|
|
452
|
-
if (!token || token.type !== Tok.Function || token.value !== "color") return void 0;
|
|
453
|
-
token = tokens[tokens._i++];
|
|
454
|
-
if (token.type !== Tok.Ident) return void 0;
|
|
455
|
-
const mode = colorProfiles[token.value];
|
|
456
|
-
if (!mode) return void 0;
|
|
457
|
-
const res = { mode };
|
|
458
|
-
const coords = consumeCoords(tokens, false);
|
|
459
|
-
if (!coords) return void 0;
|
|
460
|
-
const channels = getMode(mode).channels;
|
|
461
|
-
for (let ii = 0, c$1, ch; ii < channels.length; ii++) {
|
|
462
|
-
c$1 = coords[ii];
|
|
463
|
-
ch = channels[ii];
|
|
464
|
-
if (c$1.type !== Tok.None) {
|
|
465
|
-
res[ch] = c$1.type === Tok.Number ? c$1.value : c$1.value / 100;
|
|
466
|
-
if (ch === "alpha") res[ch] = Math.max(0, Math.min(1, res[ch]));
|
|
467
|
-
}
|
|
468
|
-
}
|
|
469
|
-
return res;
|
|
470
|
-
}
|
|
471
|
-
function consumeCoords(tokens, includeHue) {
|
|
472
|
-
const coords = [];
|
|
473
|
-
let token;
|
|
474
|
-
while (tokens._i < tokens.length) {
|
|
475
|
-
token = tokens[tokens._i++];
|
|
476
|
-
if (token.type === Tok.None || token.type === Tok.Number || token.type === Tok.Alpha || token.type === Tok.Percentage || includeHue && token.type === Tok.Hue) {
|
|
477
|
-
coords.push(token);
|
|
478
|
-
continue;
|
|
479
|
-
}
|
|
480
|
-
if (token.type === Tok.ParenClose) {
|
|
481
|
-
if (tokens._i < tokens.length) return void 0;
|
|
482
|
-
continue;
|
|
483
|
-
}
|
|
484
|
-
return void 0;
|
|
485
|
-
}
|
|
486
|
-
if (coords.length < 3 || coords.length > 4) return void 0;
|
|
487
|
-
if (coords.length === 4) {
|
|
488
|
-
if (coords[3].type !== Tok.Alpha) return void 0;
|
|
489
|
-
coords[3] = coords[3].value;
|
|
490
|
-
}
|
|
491
|
-
if (coords.length === 3) coords.push({
|
|
492
|
-
type: Tok.None,
|
|
493
|
-
value: void 0
|
|
494
|
-
});
|
|
495
|
-
return coords.every((c$1) => c$1.type !== Tok.Alpha) ? coords : void 0;
|
|
496
|
-
}
|
|
497
|
-
function parseModernSyntax(tokens, includeHue) {
|
|
498
|
-
tokens._i = 0;
|
|
499
|
-
let token = tokens[tokens._i++];
|
|
500
|
-
if (!token || token.type !== Tok.Function) return void 0;
|
|
501
|
-
let coords = consumeCoords(tokens, includeHue);
|
|
502
|
-
if (!coords) return void 0;
|
|
503
|
-
coords.unshift(token.value);
|
|
504
|
-
return coords;
|
|
505
|
-
}
|
|
506
|
-
const parse = (color) => {
|
|
507
|
-
if (typeof color !== "string") return void 0;
|
|
508
|
-
const tokens = tokenize(color);
|
|
509
|
-
const parsed = tokens ? parseModernSyntax(tokens, true) : void 0;
|
|
510
|
-
let result = void 0;
|
|
511
|
-
let i = 0;
|
|
512
|
-
let len = parsers.length;
|
|
513
|
-
while (i < len) if ((result = parsers[i++](color, parsed)) !== void 0) return result;
|
|
514
|
-
return tokens ? parseColorSyntax(tokens) : void 0;
|
|
515
|
-
};
|
|
516
|
-
var parse_default = parse;
|
|
517
|
-
function parseRgb(color, parsed) {
|
|
518
|
-
if (!parsed || parsed[0] !== "rgb" && parsed[0] !== "rgba") return void 0;
|
|
519
|
-
const res = { mode: "rgb" };
|
|
520
|
-
const [, r$1, g, b, alpha] = parsed;
|
|
521
|
-
if (r$1.type === Tok.Hue || g.type === Tok.Hue || b.type === Tok.Hue) return void 0;
|
|
522
|
-
if (r$1.type !== Tok.None) res.r = r$1.type === Tok.Number ? r$1.value / 255 : r$1.value / 100;
|
|
523
|
-
if (g.type !== Tok.None) res.g = g.type === Tok.Number ? g.value / 255 : g.value / 100;
|
|
524
|
-
if (b.type !== Tok.None) res.b = b.type === Tok.Number ? b.value / 255 : b.value / 100;
|
|
525
|
-
if (alpha.type !== Tok.None) res.alpha = Math.min(1, Math.max(0, alpha.type === Tok.Number ? alpha.value : alpha.value / 100));
|
|
526
|
-
return res;
|
|
527
|
-
}
|
|
528
|
-
var parseRgb_default = parseRgb;
|
|
529
|
-
const parseTransparent = (c$1) => c$1 === "transparent" ? {
|
|
530
|
-
mode: "rgb",
|
|
531
|
-
r: 0,
|
|
532
|
-
g: 0,
|
|
533
|
-
b: 0,
|
|
534
|
-
alpha: 0
|
|
535
|
-
} : void 0;
|
|
536
|
-
var parseTransparent_default = parseTransparent;
|
|
537
|
-
const lerp = (a, b, t) => a + t * (b - a);
|
|
538
|
-
const get_classes = (arr) => {
|
|
539
|
-
let classes = [];
|
|
540
|
-
for (let i = 0; i < arr.length - 1; i++) {
|
|
541
|
-
let a = arr[i];
|
|
542
|
-
let b = arr[i + 1];
|
|
543
|
-
if (a === void 0 && b === void 0) classes.push(void 0);
|
|
544
|
-
else if (a !== void 0 && b !== void 0) classes.push([a, b]);
|
|
545
|
-
else classes.push(a !== void 0 ? [a, a] : [b, b]);
|
|
546
|
-
}
|
|
547
|
-
return classes;
|
|
548
|
-
};
|
|
549
|
-
const interpolatorPiecewise = (interpolator) => (arr) => {
|
|
550
|
-
let classes = get_classes(arr);
|
|
551
|
-
return (t) => {
|
|
552
|
-
let cls = t * classes.length;
|
|
553
|
-
let idx = t >= 1 ? classes.length - 1 : Math.max(Math.floor(cls), 0);
|
|
554
|
-
let pair = classes[idx];
|
|
555
|
-
return pair === void 0 ? void 0 : interpolator(pair[0], pair[1], cls - idx);
|
|
556
|
-
};
|
|
557
|
-
};
|
|
558
|
-
const interpolatorLinear = interpolatorPiecewise(lerp);
|
|
559
|
-
const fixupAlpha = (arr) => {
|
|
560
|
-
let some_defined = false;
|
|
561
|
-
let res = arr.map((v) => {
|
|
562
|
-
if (v !== void 0) {
|
|
563
|
-
some_defined = true;
|
|
564
|
-
return v;
|
|
565
|
-
}
|
|
566
|
-
return 1;
|
|
567
|
-
});
|
|
568
|
-
return some_defined ? res : arr;
|
|
569
|
-
};
|
|
570
|
-
const definition$14 = {
|
|
571
|
-
mode: "rgb",
|
|
572
|
-
channels: [
|
|
573
|
-
"r",
|
|
574
|
-
"g",
|
|
575
|
-
"b",
|
|
576
|
-
"alpha"
|
|
577
|
-
],
|
|
578
|
-
parse: [
|
|
579
|
-
parseRgb_default,
|
|
580
|
-
parseHex_default,
|
|
581
|
-
parseRgbLegacy_default,
|
|
582
|
-
parseNamed_default,
|
|
583
|
-
parseTransparent_default,
|
|
584
|
-
"srgb"
|
|
585
|
-
],
|
|
586
|
-
serialize: "srgb",
|
|
587
|
-
interpolate: {
|
|
588
|
-
r: interpolatorLinear,
|
|
589
|
-
g: interpolatorLinear,
|
|
590
|
-
b: interpolatorLinear,
|
|
591
|
-
alpha: {
|
|
592
|
-
use: interpolatorLinear,
|
|
593
|
-
fixup: fixupAlpha
|
|
594
|
-
}
|
|
595
|
-
},
|
|
596
|
-
gamut: true,
|
|
597
|
-
white: {
|
|
598
|
-
r: 1,
|
|
599
|
-
g: 1,
|
|
600
|
-
b: 1
|
|
601
|
-
},
|
|
602
|
-
black: {
|
|
603
|
-
r: 0,
|
|
604
|
-
g: 0,
|
|
605
|
-
b: 0
|
|
606
|
-
}
|
|
607
|
-
};
|
|
608
|
-
var definition_default$12 = definition$14;
|
|
609
|
-
const linearize$2 = (v = 0) => Math.pow(Math.abs(v), 563 / 256) * Math.sign(v);
|
|
610
|
-
const convertA98ToXyz65 = (a98) => {
|
|
611
|
-
let r$1 = linearize$2(a98.r);
|
|
612
|
-
let g = linearize$2(a98.g);
|
|
613
|
-
let b = linearize$2(a98.b);
|
|
614
|
-
let res = {
|
|
615
|
-
mode: "xyz65",
|
|
616
|
-
x: .5766690429101305 * r$1 + .1855582379065463 * g + .1882286462349947 * b,
|
|
617
|
-
y: .297344975250536 * r$1 + .6273635662554661 * g + .0752914584939979 * b,
|
|
618
|
-
z: .0270313613864123 * r$1 + .0706888525358272 * g + .9913375368376386 * b
|
|
619
|
-
};
|
|
620
|
-
if (a98.alpha !== void 0) res.alpha = a98.alpha;
|
|
621
|
-
return res;
|
|
622
|
-
};
|
|
623
|
-
var convertA98ToXyz65_default = convertA98ToXyz65;
|
|
624
|
-
const gamma$2 = (v) => Math.pow(Math.abs(v), 256 / 563) * Math.sign(v);
|
|
625
|
-
const convertXyz65ToA98 = ({ x, y, z, alpha }) => {
|
|
626
|
-
if (x === void 0) x = 0;
|
|
627
|
-
if (y === void 0) y = 0;
|
|
628
|
-
if (z === void 0) z = 0;
|
|
629
|
-
let res = {
|
|
630
|
-
mode: "a98",
|
|
631
|
-
r: gamma$2(x * 2.0415879038107465 - y * .5650069742788597 - .3447313507783297 * z),
|
|
632
|
-
g: gamma$2(x * -.9692436362808798 + y * 1.8759675015077206 + .0415550574071756 * z),
|
|
633
|
-
b: gamma$2(x * .0134442806320312 - y * .1183623922310184 + 1.0151749943912058 * z)
|
|
634
|
-
};
|
|
635
|
-
if (alpha !== void 0) res.alpha = alpha;
|
|
636
|
-
return res;
|
|
637
|
-
};
|
|
638
|
-
var convertXyz65ToA98_default = convertXyz65ToA98;
|
|
639
|
-
const fn$2 = (c$1 = 0) => {
|
|
640
|
-
const abs = Math.abs(c$1);
|
|
641
|
-
if (abs <= .04045) return c$1 / 12.92;
|
|
642
|
-
return (Math.sign(c$1) || 1) * Math.pow((abs + .055) / 1.055, 2.4);
|
|
643
|
-
};
|
|
644
|
-
const convertRgbToLrgb = ({ r: r$1, g, b, alpha }) => {
|
|
645
|
-
let res = {
|
|
646
|
-
mode: "lrgb",
|
|
647
|
-
r: fn$2(r$1),
|
|
648
|
-
g: fn$2(g),
|
|
649
|
-
b: fn$2(b)
|
|
650
|
-
};
|
|
651
|
-
if (alpha !== void 0) res.alpha = alpha;
|
|
652
|
-
return res;
|
|
653
|
-
};
|
|
654
|
-
var convertRgbToLrgb_default = convertRgbToLrgb;
|
|
655
|
-
const convertRgbToXyz65 = (rgb$2) => {
|
|
656
|
-
let { r: r$1, g, b, alpha } = convertRgbToLrgb_default(rgb$2);
|
|
657
|
-
let res = {
|
|
658
|
-
mode: "xyz65",
|
|
659
|
-
x: .4123907992659593 * r$1 + .357584339383878 * g + .1804807884018343 * b,
|
|
660
|
-
y: .2126390058715102 * r$1 + .715168678767756 * g + .0721923153607337 * b,
|
|
661
|
-
z: .0193308187155918 * r$1 + .119194779794626 * g + .9505321522496607 * b
|
|
662
|
-
};
|
|
663
|
-
if (alpha !== void 0) res.alpha = alpha;
|
|
664
|
-
return res;
|
|
665
|
-
};
|
|
666
|
-
var convertRgbToXyz65_default = convertRgbToXyz65;
|
|
667
|
-
const fn$1 = (c$1 = 0) => {
|
|
668
|
-
const abs = Math.abs(c$1);
|
|
669
|
-
if (abs > .0031308) return (Math.sign(c$1) || 1) * (1.055 * Math.pow(abs, 1 / 2.4) - .055);
|
|
670
|
-
return c$1 * 12.92;
|
|
671
|
-
};
|
|
672
|
-
const convertLrgbToRgb = ({ r: r$1, g, b, alpha }, mode = "rgb") => {
|
|
673
|
-
let res = {
|
|
674
|
-
mode,
|
|
675
|
-
r: fn$1(r$1),
|
|
676
|
-
g: fn$1(g),
|
|
677
|
-
b: fn$1(b)
|
|
678
|
-
};
|
|
679
|
-
if (alpha !== void 0) res.alpha = alpha;
|
|
680
|
-
return res;
|
|
681
|
-
};
|
|
682
|
-
var convertLrgbToRgb_default = convertLrgbToRgb;
|
|
683
|
-
const convertXyz65ToRgb = ({ x, y, z, alpha }) => {
|
|
684
|
-
if (x === void 0) x = 0;
|
|
685
|
-
if (y === void 0) y = 0;
|
|
686
|
-
if (z === void 0) z = 0;
|
|
687
|
-
let res = convertLrgbToRgb_default({
|
|
688
|
-
r: x * 3.2409699419045226 - y * 1.537383177570094 - .4986107602930034 * z,
|
|
689
|
-
g: x * -.9692436362808796 + y * 1.8759675015077204 + .0415550574071756 * z,
|
|
690
|
-
b: x * .0556300796969936 - y * .2039769588889765 + 1.0569715142428784 * z
|
|
691
|
-
});
|
|
692
|
-
if (alpha !== void 0) res.alpha = alpha;
|
|
693
|
-
return res;
|
|
694
|
-
};
|
|
695
|
-
var convertXyz65ToRgb_default = convertXyz65ToRgb;
|
|
696
|
-
const definition$13 = {
|
|
697
|
-
...definition_default$12,
|
|
698
|
-
mode: "a98",
|
|
699
|
-
parse: ["a98-rgb"],
|
|
700
|
-
serialize: "a98-rgb",
|
|
701
|
-
fromMode: {
|
|
702
|
-
rgb: (color) => convertXyz65ToA98_default(convertRgbToXyz65_default(color)),
|
|
703
|
-
xyz65: convertXyz65ToA98_default
|
|
704
|
-
},
|
|
705
|
-
toMode: {
|
|
706
|
-
rgb: (color) => convertXyz65ToRgb_default(convertA98ToXyz65_default(color)),
|
|
707
|
-
xyz65: convertA98ToXyz65_default
|
|
708
|
-
}
|
|
709
|
-
};
|
|
710
|
-
var definition_default = definition$13;
|
|
711
|
-
const normalizeHue = (hue$2) => (hue$2 = hue$2 % 360) < 0 ? hue$2 + 360 : hue$2;
|
|
712
|
-
var normalizeHue_default = normalizeHue;
|
|
713
|
-
function convertHslToRgb({ h, s, l, alpha }) {
|
|
714
|
-
h = normalizeHue_default(h !== void 0 ? h : 0);
|
|
715
|
-
if (s === void 0) s = 0;
|
|
716
|
-
if (l === void 0) l = 0;
|
|
717
|
-
let m1 = l + s * (l < .5 ? l : 1 - l);
|
|
718
|
-
let m2 = m1 - (m1 - l) * 2 * Math.abs(h / 60 % 2 - 1);
|
|
719
|
-
let res;
|
|
720
|
-
switch (Math.floor(h / 60)) {
|
|
721
|
-
case 0:
|
|
722
|
-
res = {
|
|
723
|
-
r: m1,
|
|
724
|
-
g: m2,
|
|
725
|
-
b: 2 * l - m1
|
|
726
|
-
};
|
|
727
|
-
break;
|
|
728
|
-
case 1:
|
|
729
|
-
res = {
|
|
730
|
-
r: m2,
|
|
731
|
-
g: m1,
|
|
732
|
-
b: 2 * l - m1
|
|
733
|
-
};
|
|
734
|
-
break;
|
|
735
|
-
case 2:
|
|
736
|
-
res = {
|
|
737
|
-
r: 2 * l - m1,
|
|
738
|
-
g: m1,
|
|
739
|
-
b: m2
|
|
740
|
-
};
|
|
741
|
-
break;
|
|
742
|
-
case 3:
|
|
743
|
-
res = {
|
|
744
|
-
r: 2 * l - m1,
|
|
745
|
-
g: m2,
|
|
746
|
-
b: m1
|
|
747
|
-
};
|
|
748
|
-
break;
|
|
749
|
-
case 4:
|
|
750
|
-
res = {
|
|
751
|
-
r: m2,
|
|
752
|
-
g: 2 * l - m1,
|
|
753
|
-
b: m1
|
|
754
|
-
};
|
|
755
|
-
break;
|
|
756
|
-
case 5:
|
|
757
|
-
res = {
|
|
758
|
-
r: m1,
|
|
759
|
-
g: 2 * l - m1,
|
|
760
|
-
b: m2
|
|
761
|
-
};
|
|
762
|
-
break;
|
|
763
|
-
default: res = {
|
|
764
|
-
r: 2 * l - m1,
|
|
765
|
-
g: 2 * l - m1,
|
|
766
|
-
b: 2 * l - m1
|
|
767
|
-
};
|
|
768
|
-
}
|
|
769
|
-
res.mode = "rgb";
|
|
770
|
-
if (alpha !== void 0) res.alpha = alpha;
|
|
771
|
-
return res;
|
|
772
|
-
}
|
|
773
|
-
function convertRgbToHsl({ r: r$1, g, b, alpha }) {
|
|
774
|
-
if (r$1 === void 0) r$1 = 0;
|
|
775
|
-
if (g === void 0) g = 0;
|
|
776
|
-
if (b === void 0) b = 0;
|
|
777
|
-
let M = Math.max(r$1, g, b), m = Math.min(r$1, g, b);
|
|
778
|
-
let res = {
|
|
779
|
-
mode: "hsl",
|
|
780
|
-
s: M === m ? 0 : (M - m) / (1 - Math.abs(M + m - 1)),
|
|
781
|
-
l: .5 * (M + m)
|
|
782
|
-
};
|
|
783
|
-
if (M - m !== 0) res.h = (M === r$1 ? (g - b) / (M - m) + (g < b) * 6 : M === g ? (b - r$1) / (M - m) + 2 : (r$1 - g) / (M - m) + 4) * 60;
|
|
784
|
-
if (alpha !== void 0) res.alpha = alpha;
|
|
785
|
-
return res;
|
|
786
|
-
}
|
|
787
|
-
const hueToDeg = (val, unit) => {
|
|
788
|
-
switch (unit) {
|
|
789
|
-
case "deg": return +val;
|
|
790
|
-
case "rad": return val / Math.PI * 180;
|
|
791
|
-
case "grad": return val / 10 * 9;
|
|
792
|
-
case "turn": return val * 360;
|
|
793
|
-
}
|
|
794
|
-
};
|
|
795
|
-
var hue_default = hueToDeg;
|
|
796
|
-
const hsl_old = new RegExp(`^hsla?\\(\\s*${hue$1}${c}${per}${c}${per}\\s*(?:,\\s*${num_per}\\s*)?\\)$`);
|
|
797
|
-
const parseHslLegacy = (color) => {
|
|
798
|
-
let match = color.match(hsl_old);
|
|
799
|
-
if (!match) return;
|
|
800
|
-
let res = { mode: "hsl" };
|
|
801
|
-
if (match[3] !== void 0) res.h = +match[3];
|
|
802
|
-
else if (match[1] !== void 0 && match[2] !== void 0) res.h = hue_default(match[1], match[2]);
|
|
803
|
-
if (match[4] !== void 0) res.s = Math.min(Math.max(0, match[4] / 100), 1);
|
|
804
|
-
if (match[5] !== void 0) res.l = Math.min(Math.max(0, match[5] / 100), 1);
|
|
805
|
-
if (match[6] !== void 0) res.alpha = Math.max(0, Math.min(1, match[6] / 100));
|
|
806
|
-
else if (match[7] !== void 0) res.alpha = Math.max(0, Math.min(1, +match[7]));
|
|
807
|
-
return res;
|
|
808
|
-
};
|
|
809
|
-
var parseHslLegacy_default = parseHslLegacy;
|
|
810
|
-
function parseHsl(color, parsed) {
|
|
811
|
-
if (!parsed || parsed[0] !== "hsl" && parsed[0] !== "hsla") return void 0;
|
|
812
|
-
const res = { mode: "hsl" };
|
|
813
|
-
const [, h, s, l, alpha] = parsed;
|
|
814
|
-
if (h.type !== Tok.None) {
|
|
815
|
-
if (h.type === Tok.Percentage) return void 0;
|
|
816
|
-
res.h = h.value;
|
|
817
|
-
}
|
|
818
|
-
if (s.type !== Tok.None) {
|
|
819
|
-
if (s.type === Tok.Hue) return void 0;
|
|
820
|
-
res.s = s.value / 100;
|
|
821
|
-
}
|
|
822
|
-
if (l.type !== Tok.None) {
|
|
823
|
-
if (l.type === Tok.Hue) return void 0;
|
|
824
|
-
res.l = l.value / 100;
|
|
825
|
-
}
|
|
826
|
-
if (alpha.type !== Tok.None) res.alpha = Math.min(1, Math.max(0, alpha.type === Tok.Number ? alpha.value : alpha.value / 100));
|
|
827
|
-
return res;
|
|
828
|
-
}
|
|
829
|
-
var parseHsl_default = parseHsl;
|
|
830
|
-
const hue = (hues, fn$3) => {
|
|
831
|
-
return hues.map((hue$2, idx, arr) => {
|
|
832
|
-
if (hue$2 === void 0) return hue$2;
|
|
833
|
-
let normalized = normalizeHue_default(hue$2);
|
|
834
|
-
if (idx === 0 || hues[idx - 1] === void 0) return normalized;
|
|
835
|
-
return fn$3(normalized - normalizeHue_default(arr[idx - 1]));
|
|
836
|
-
}).reduce((acc, curr) => {
|
|
837
|
-
if (!acc.length || curr === void 0 || acc[acc.length - 1] === void 0) {
|
|
838
|
-
acc.push(curr);
|
|
839
|
-
return acc;
|
|
840
|
-
}
|
|
841
|
-
acc.push(curr + acc[acc.length - 1]);
|
|
842
|
-
return acc;
|
|
843
|
-
}, []);
|
|
844
|
-
};
|
|
845
|
-
const fixupHueShorter = (arr) => hue(arr, (d) => Math.abs(d) <= 180 ? d : d - 360 * Math.sign(d));
|
|
846
|
-
const differenceHueSaturation = (std, smp) => {
|
|
847
|
-
if (std.h === void 0 || smp.h === void 0 || !std.s || !smp.s) return 0;
|
|
848
|
-
let std_h = normalizeHue_default(std.h);
|
|
849
|
-
let smp_h = normalizeHue_default(smp.h);
|
|
850
|
-
let dH = Math.sin((smp_h - std_h + 360) / 2 * Math.PI / 180);
|
|
851
|
-
return 2 * Math.sqrt(std.s * smp.s) * dH;
|
|
852
|
-
};
|
|
853
|
-
const differenceHueNaive = (std, smp) => {
|
|
854
|
-
if (std.h === void 0 || smp.h === void 0) return 0;
|
|
855
|
-
let std_h = normalizeHue_default(std.h);
|
|
856
|
-
let smp_h = normalizeHue_default(smp.h);
|
|
857
|
-
if (Math.abs(smp_h - std_h) > 180) return std_h - (smp_h - 360 * Math.sign(smp_h - std_h));
|
|
858
|
-
return smp_h - std_h;
|
|
859
|
-
};
|
|
860
|
-
const differenceHueChroma = (std, smp) => {
|
|
861
|
-
if (std.h === void 0 || smp.h === void 0 || !std.c || !smp.c) return 0;
|
|
862
|
-
let std_h = normalizeHue_default(std.h);
|
|
863
|
-
let smp_h = normalizeHue_default(smp.h);
|
|
864
|
-
let dH = Math.sin((smp_h - std_h + 360) / 2 * Math.PI / 180);
|
|
865
|
-
return 2 * Math.sqrt(std.c * smp.c) * dH;
|
|
866
|
-
};
|
|
867
|
-
const averageAngle = (val) => {
|
|
868
|
-
let sum = val.reduce((sum$1, val$1) => {
|
|
869
|
-
if (val$1 !== void 0) {
|
|
870
|
-
let rad = val$1 * Math.PI / 180;
|
|
871
|
-
sum$1.sin += Math.sin(rad);
|
|
872
|
-
sum$1.cos += Math.cos(rad);
|
|
873
|
-
}
|
|
874
|
-
return sum$1;
|
|
875
|
-
}, {
|
|
876
|
-
sin: 0,
|
|
877
|
-
cos: 0
|
|
878
|
-
});
|
|
879
|
-
let angle = Math.atan2(sum.sin, sum.cos) * 180 / Math.PI;
|
|
880
|
-
return angle < 0 ? 360 + angle : angle;
|
|
881
|
-
};
|
|
882
|
-
const definition$12 = {
|
|
883
|
-
mode: "hsl",
|
|
884
|
-
toMode: { rgb: convertHslToRgb },
|
|
885
|
-
fromMode: { rgb: convertRgbToHsl },
|
|
886
|
-
channels: [
|
|
887
|
-
"h",
|
|
888
|
-
"s",
|
|
889
|
-
"l",
|
|
890
|
-
"alpha"
|
|
891
|
-
],
|
|
892
|
-
ranges: { h: [0, 360] },
|
|
893
|
-
gamut: "rgb",
|
|
894
|
-
parse: [parseHsl_default, parseHslLegacy_default],
|
|
895
|
-
serialize: (c$1) => `hsl(${c$1.h !== void 0 ? c$1.h : "none"} ${c$1.s !== void 0 ? c$1.s * 100 + "%" : "none"} ${c$1.l !== void 0 ? c$1.l * 100 + "%" : "none"}${c$1.alpha < 1 ? ` / ${c$1.alpha}` : ""})`,
|
|
896
|
-
interpolate: {
|
|
897
|
-
h: {
|
|
898
|
-
use: interpolatorLinear,
|
|
899
|
-
fixup: fixupHueShorter
|
|
900
|
-
},
|
|
901
|
-
s: interpolatorLinear,
|
|
902
|
-
l: interpolatorLinear,
|
|
903
|
-
alpha: {
|
|
904
|
-
use: interpolatorLinear,
|
|
905
|
-
fixup: fixupAlpha
|
|
906
|
-
}
|
|
907
|
-
},
|
|
908
|
-
difference: { h: differenceHueSaturation },
|
|
909
|
-
average: { h: averageAngle }
|
|
910
|
-
};
|
|
911
|
-
var definition_default$1 = definition$12;
|
|
912
|
-
function convertHsvToRgb({ h, s, v, alpha }) {
|
|
913
|
-
h = normalizeHue_default(h !== void 0 ? h : 0);
|
|
914
|
-
if (s === void 0) s = 0;
|
|
915
|
-
if (v === void 0) v = 0;
|
|
916
|
-
let f$1 = Math.abs(h / 60 % 2 - 1);
|
|
917
|
-
let res;
|
|
918
|
-
switch (Math.floor(h / 60)) {
|
|
919
|
-
case 0:
|
|
920
|
-
res = {
|
|
921
|
-
r: v,
|
|
922
|
-
g: v * (1 - s * f$1),
|
|
923
|
-
b: v * (1 - s)
|
|
924
|
-
};
|
|
925
|
-
break;
|
|
926
|
-
case 1:
|
|
927
|
-
res = {
|
|
928
|
-
r: v * (1 - s * f$1),
|
|
929
|
-
g: v,
|
|
930
|
-
b: v * (1 - s)
|
|
931
|
-
};
|
|
932
|
-
break;
|
|
933
|
-
case 2:
|
|
934
|
-
res = {
|
|
935
|
-
r: v * (1 - s),
|
|
936
|
-
g: v,
|
|
937
|
-
b: v * (1 - s * f$1)
|
|
938
|
-
};
|
|
939
|
-
break;
|
|
940
|
-
case 3:
|
|
941
|
-
res = {
|
|
942
|
-
r: v * (1 - s),
|
|
943
|
-
g: v * (1 - s * f$1),
|
|
944
|
-
b: v
|
|
945
|
-
};
|
|
946
|
-
break;
|
|
947
|
-
case 4:
|
|
948
|
-
res = {
|
|
949
|
-
r: v * (1 - s * f$1),
|
|
950
|
-
g: v * (1 - s),
|
|
951
|
-
b: v
|
|
952
|
-
};
|
|
953
|
-
break;
|
|
954
|
-
case 5:
|
|
955
|
-
res = {
|
|
956
|
-
r: v,
|
|
957
|
-
g: v * (1 - s),
|
|
958
|
-
b: v * (1 - s * f$1)
|
|
959
|
-
};
|
|
960
|
-
break;
|
|
961
|
-
default: res = {
|
|
962
|
-
r: v * (1 - s),
|
|
963
|
-
g: v * (1 - s),
|
|
964
|
-
b: v * (1 - s)
|
|
965
|
-
};
|
|
966
|
-
}
|
|
967
|
-
res.mode = "rgb";
|
|
968
|
-
if (alpha !== void 0) res.alpha = alpha;
|
|
969
|
-
return res;
|
|
970
|
-
}
|
|
971
|
-
function convertRgbToHsv({ r: r$1, g, b, alpha }) {
|
|
972
|
-
if (r$1 === void 0) r$1 = 0;
|
|
973
|
-
if (g === void 0) g = 0;
|
|
974
|
-
if (b === void 0) b = 0;
|
|
975
|
-
let M = Math.max(r$1, g, b), m = Math.min(r$1, g, b);
|
|
976
|
-
let res = {
|
|
977
|
-
mode: "hsv",
|
|
978
|
-
s: M === 0 ? 0 : 1 - m / M,
|
|
979
|
-
v: M
|
|
980
|
-
};
|
|
981
|
-
if (M - m !== 0) res.h = (M === r$1 ? (g - b) / (M - m) + (g < b) * 6 : M === g ? (b - r$1) / (M - m) + 2 : (r$1 - g) / (M - m) + 4) * 60;
|
|
982
|
-
if (alpha !== void 0) res.alpha = alpha;
|
|
983
|
-
return res;
|
|
984
|
-
}
|
|
985
|
-
const definition$11 = {
|
|
986
|
-
mode: "hsv",
|
|
987
|
-
toMode: { rgb: convertHsvToRgb },
|
|
988
|
-
parse: ["--hsv"],
|
|
989
|
-
serialize: "--hsv",
|
|
990
|
-
fromMode: { rgb: convertRgbToHsv },
|
|
991
|
-
channels: [
|
|
992
|
-
"h",
|
|
993
|
-
"s",
|
|
994
|
-
"v",
|
|
995
|
-
"alpha"
|
|
996
|
-
],
|
|
997
|
-
ranges: { h: [0, 360] },
|
|
998
|
-
gamut: "rgb",
|
|
999
|
-
interpolate: {
|
|
1000
|
-
h: {
|
|
1001
|
-
use: interpolatorLinear,
|
|
1002
|
-
fixup: fixupHueShorter
|
|
1003
|
-
},
|
|
1004
|
-
s: interpolatorLinear,
|
|
1005
|
-
v: interpolatorLinear,
|
|
1006
|
-
alpha: {
|
|
1007
|
-
use: interpolatorLinear,
|
|
1008
|
-
fixup: fixupAlpha
|
|
1009
|
-
}
|
|
1010
|
-
},
|
|
1011
|
-
difference: { h: differenceHueSaturation },
|
|
1012
|
-
average: { h: averageAngle }
|
|
1013
|
-
};
|
|
1014
|
-
var definition_default$2 = definition$11;
|
|
1015
|
-
function convertHwbToRgb({ h, w, b, alpha }) {
|
|
1016
|
-
if (w === void 0) w = 0;
|
|
1017
|
-
if (b === void 0) b = 0;
|
|
1018
|
-
if (w + b > 1) {
|
|
1019
|
-
let s = w + b;
|
|
1020
|
-
w /= s;
|
|
1021
|
-
b /= s;
|
|
1022
|
-
}
|
|
1023
|
-
return convertHsvToRgb({
|
|
1024
|
-
h,
|
|
1025
|
-
s: b === 1 ? 1 : 1 - w / (1 - b),
|
|
1026
|
-
v: 1 - b,
|
|
1027
|
-
alpha
|
|
1028
|
-
});
|
|
1029
|
-
}
|
|
1030
|
-
function convertRgbToHwb(rgba) {
|
|
1031
|
-
let hsv = convertRgbToHsv(rgba);
|
|
1032
|
-
if (hsv === void 0) return void 0;
|
|
1033
|
-
let s = hsv.s !== void 0 ? hsv.s : 0;
|
|
1034
|
-
let v = hsv.v !== void 0 ? hsv.v : 0;
|
|
1035
|
-
let res = {
|
|
1036
|
-
mode: "hwb",
|
|
1037
|
-
w: (1 - s) * v,
|
|
1038
|
-
b: 1 - v
|
|
1039
|
-
};
|
|
1040
|
-
if (hsv.h !== void 0) res.h = hsv.h;
|
|
1041
|
-
if (hsv.alpha !== void 0) res.alpha = hsv.alpha;
|
|
1042
|
-
return res;
|
|
1043
|
-
}
|
|
1044
|
-
function ParseHwb(color, parsed) {
|
|
1045
|
-
if (!parsed || parsed[0] !== "hwb") return void 0;
|
|
1046
|
-
const res = { mode: "hwb" };
|
|
1047
|
-
const [, h, w, b, alpha] = parsed;
|
|
1048
|
-
if (h.type !== Tok.None) {
|
|
1049
|
-
if (h.type === Tok.Percentage) return void 0;
|
|
1050
|
-
res.h = h.value;
|
|
1051
|
-
}
|
|
1052
|
-
if (w.type !== Tok.None) {
|
|
1053
|
-
if (w.type === Tok.Hue) return void 0;
|
|
1054
|
-
res.w = w.value / 100;
|
|
1055
|
-
}
|
|
1056
|
-
if (b.type !== Tok.None) {
|
|
1057
|
-
if (b.type === Tok.Hue) return void 0;
|
|
1058
|
-
res.b = b.value / 100;
|
|
1059
|
-
}
|
|
1060
|
-
if (alpha.type !== Tok.None) res.alpha = Math.min(1, Math.max(0, alpha.type === Tok.Number ? alpha.value : alpha.value / 100));
|
|
1061
|
-
return res;
|
|
1062
|
-
}
|
|
1063
|
-
var parseHwb_default = ParseHwb;
|
|
1064
|
-
const definition$10 = {
|
|
1065
|
-
mode: "hwb",
|
|
1066
|
-
toMode: { rgb: convertHwbToRgb },
|
|
1067
|
-
fromMode: { rgb: convertRgbToHwb },
|
|
1068
|
-
channels: [
|
|
1069
|
-
"h",
|
|
1070
|
-
"w",
|
|
1071
|
-
"b",
|
|
1072
|
-
"alpha"
|
|
1073
|
-
],
|
|
1074
|
-
ranges: { h: [0, 360] },
|
|
1075
|
-
gamut: "rgb",
|
|
1076
|
-
parse: [parseHwb_default],
|
|
1077
|
-
serialize: (c$1) => `hwb(${c$1.h !== void 0 ? c$1.h : "none"} ${c$1.w !== void 0 ? c$1.w * 100 + "%" : "none"} ${c$1.b !== void 0 ? c$1.b * 100 + "%" : "none"}${c$1.alpha < 1 ? ` / ${c$1.alpha}` : ""})`,
|
|
1078
|
-
interpolate: {
|
|
1079
|
-
h: {
|
|
1080
|
-
use: interpolatorLinear,
|
|
1081
|
-
fixup: fixupHueShorter
|
|
1082
|
-
},
|
|
1083
|
-
w: interpolatorLinear,
|
|
1084
|
-
b: interpolatorLinear,
|
|
1085
|
-
alpha: {
|
|
1086
|
-
use: interpolatorLinear,
|
|
1087
|
-
fixup: fixupAlpha
|
|
1088
|
-
}
|
|
1089
|
-
},
|
|
1090
|
-
difference: { h: differenceHueNaive },
|
|
1091
|
-
average: { h: averageAngle }
|
|
1092
|
-
};
|
|
1093
|
-
var definition_default$3 = definition$10;
|
|
1094
|
-
const k = Math.pow(29, 3) / Math.pow(3, 3);
|
|
1095
|
-
const e = Math.pow(6, 3) / Math.pow(29, 3);
|
|
1096
|
-
const D50 = {
|
|
1097
|
-
X: .3457 / .3585,
|
|
1098
|
-
Y: 1,
|
|
1099
|
-
Z: .2958 / .3585
|
|
1100
|
-
};
|
|
1101
|
-
const D65 = {
|
|
1102
|
-
X: .3127 / .329,
|
|
1103
|
-
Y: 1,
|
|
1104
|
-
Z: .3583 / .329
|
|
1105
|
-
};
|
|
1106
|
-
const k$1 = Math.pow(29, 3) / Math.pow(3, 3);
|
|
1107
|
-
const e$1 = Math.pow(6, 3) / Math.pow(29, 3);
|
|
1108
|
-
let fn = (v) => Math.pow(v, 3) > e ? Math.pow(v, 3) : (116 * v - 16) / k;
|
|
1109
|
-
const convertLabToXyz50 = ({ l, a, b, alpha }) => {
|
|
1110
|
-
if (l === void 0) l = 0;
|
|
1111
|
-
if (a === void 0) a = 0;
|
|
1112
|
-
if (b === void 0) b = 0;
|
|
1113
|
-
let fy = (l + 16) / 116;
|
|
1114
|
-
let fx = a / 500 + fy;
|
|
1115
|
-
let fz = fy - b / 200;
|
|
1116
|
-
let res = {
|
|
1117
|
-
mode: "xyz50",
|
|
1118
|
-
x: fn(fx) * D50.X,
|
|
1119
|
-
y: fn(fy) * D50.Y,
|
|
1120
|
-
z: fn(fz) * D50.Z
|
|
1121
|
-
};
|
|
1122
|
-
if (alpha !== void 0) res.alpha = alpha;
|
|
1123
|
-
return res;
|
|
1124
|
-
};
|
|
1125
|
-
var convertLabToXyz50_default = convertLabToXyz50;
|
|
1126
|
-
const convertXyz50ToRgb = ({ x, y, z, alpha }) => {
|
|
1127
|
-
if (x === void 0) x = 0;
|
|
1128
|
-
if (y === void 0) y = 0;
|
|
1129
|
-
if (z === void 0) z = 0;
|
|
1130
|
-
let res = convertLrgbToRgb_default({
|
|
1131
|
-
r: x * 3.1341359569958707 - y * 1.6173863321612538 - .4906619460083532 * z,
|
|
1132
|
-
g: x * -.978795502912089 + y * 1.916254567259524 + .03344273116131949 * z,
|
|
1133
|
-
b: x * .07195537988411677 - y * .2289768264158322 + 1.405386058324125 * z
|
|
1134
|
-
});
|
|
1135
|
-
if (alpha !== void 0) res.alpha = alpha;
|
|
1136
|
-
return res;
|
|
1137
|
-
};
|
|
1138
|
-
var convertXyz50ToRgb_default = convertXyz50ToRgb;
|
|
1139
|
-
const convertLabToRgb = (lab) => convertXyz50ToRgb_default(convertLabToXyz50_default(lab));
|
|
1140
|
-
var convertLabToRgb_default = convertLabToRgb;
|
|
1141
|
-
const convertRgbToXyz50 = (rgb$2) => {
|
|
1142
|
-
let { r: r$1, g, b, alpha } = convertRgbToLrgb_default(rgb$2);
|
|
1143
|
-
let res = {
|
|
1144
|
-
mode: "xyz50",
|
|
1145
|
-
x: .436065742824811 * r$1 + .3851514688337912 * g + .14307845442264197 * b,
|
|
1146
|
-
y: .22249319175623702 * r$1 + .7168870538238823 * g + .06061979053616537 * b,
|
|
1147
|
-
z: .013923904500943465 * r$1 + .09708128566574634 * g + .7140993584005155 * b
|
|
1148
|
-
};
|
|
1149
|
-
if (alpha !== void 0) res.alpha = alpha;
|
|
1150
|
-
return res;
|
|
1151
|
-
};
|
|
1152
|
-
var convertRgbToXyz50_default = convertRgbToXyz50;
|
|
1153
|
-
const f = (value) => value > e ? Math.cbrt(value) : (k * value + 16) / 116;
|
|
1154
|
-
const convertXyz50ToLab = ({ x, y, z, alpha }) => {
|
|
1155
|
-
if (x === void 0) x = 0;
|
|
1156
|
-
if (y === void 0) y = 0;
|
|
1157
|
-
if (z === void 0) z = 0;
|
|
1158
|
-
let f0 = f(x / D50.X);
|
|
1159
|
-
let f1 = f(y / D50.Y);
|
|
1160
|
-
let f2 = f(z / D50.Z);
|
|
1161
|
-
let res = {
|
|
1162
|
-
mode: "lab",
|
|
1163
|
-
l: 116 * f1 - 16,
|
|
1164
|
-
a: 500 * (f0 - f1),
|
|
1165
|
-
b: 200 * (f1 - f2)
|
|
1166
|
-
};
|
|
1167
|
-
if (alpha !== void 0) res.alpha = alpha;
|
|
1168
|
-
return res;
|
|
1169
|
-
};
|
|
1170
|
-
var convertXyz50ToLab_default = convertXyz50ToLab;
|
|
1171
|
-
const convertRgbToLab = (rgb$2) => {
|
|
1172
|
-
let res = convertXyz50ToLab_default(convertRgbToXyz50_default(rgb$2));
|
|
1173
|
-
if (rgb$2.r === rgb$2.b && rgb$2.b === rgb$2.g) res.a = res.b = 0;
|
|
1174
|
-
return res;
|
|
1175
|
-
};
|
|
1176
|
-
var convertRgbToLab_default = convertRgbToLab;
|
|
1177
|
-
function parseLab(color, parsed) {
|
|
1178
|
-
if (!parsed || parsed[0] !== "lab") return void 0;
|
|
1179
|
-
const res = { mode: "lab" };
|
|
1180
|
-
const [, l, a, b, alpha] = parsed;
|
|
1181
|
-
if (l.type === Tok.Hue || a.type === Tok.Hue || b.type === Tok.Hue) return void 0;
|
|
1182
|
-
if (l.type !== Tok.None) res.l = Math.min(Math.max(0, l.value), 100);
|
|
1183
|
-
if (a.type !== Tok.None) res.a = a.type === Tok.Number ? a.value : a.value * 125 / 100;
|
|
1184
|
-
if (b.type !== Tok.None) res.b = b.type === Tok.Number ? b.value : b.value * 125 / 100;
|
|
1185
|
-
if (alpha.type !== Tok.None) res.alpha = Math.min(1, Math.max(0, alpha.type === Tok.Number ? alpha.value : alpha.value / 100));
|
|
1186
|
-
return res;
|
|
1187
|
-
}
|
|
1188
|
-
var parseLab_default = parseLab;
|
|
1189
|
-
const definition$9 = {
|
|
1190
|
-
mode: "lab",
|
|
1191
|
-
toMode: {
|
|
1192
|
-
xyz50: convertLabToXyz50_default,
|
|
1193
|
-
rgb: convertLabToRgb_default
|
|
1194
|
-
},
|
|
1195
|
-
fromMode: {
|
|
1196
|
-
xyz50: convertXyz50ToLab_default,
|
|
1197
|
-
rgb: convertRgbToLab_default
|
|
1198
|
-
},
|
|
1199
|
-
channels: [
|
|
1200
|
-
"l",
|
|
1201
|
-
"a",
|
|
1202
|
-
"b",
|
|
1203
|
-
"alpha"
|
|
1204
|
-
],
|
|
1205
|
-
ranges: {
|
|
1206
|
-
l: [0, 100],
|
|
1207
|
-
a: [-100, 100],
|
|
1208
|
-
b: [-100, 100]
|
|
1209
|
-
},
|
|
1210
|
-
parse: [parseLab_default],
|
|
1211
|
-
serialize: (c$1) => `lab(${c$1.l !== void 0 ? c$1.l : "none"} ${c$1.a !== void 0 ? c$1.a : "none"} ${c$1.b !== void 0 ? c$1.b : "none"}${c$1.alpha < 1 ? ` / ${c$1.alpha}` : ""})`,
|
|
1212
|
-
interpolate: {
|
|
1213
|
-
l: interpolatorLinear,
|
|
1214
|
-
a: interpolatorLinear,
|
|
1215
|
-
b: interpolatorLinear,
|
|
1216
|
-
alpha: {
|
|
1217
|
-
use: interpolatorLinear,
|
|
1218
|
-
fixup: fixupAlpha
|
|
1219
|
-
}
|
|
1220
|
-
}
|
|
1221
|
-
};
|
|
1222
|
-
var definition_default$4 = definition$9;
|
|
1223
|
-
const convertLabToLch = ({ l, a, b, alpha }, mode = "lch") => {
|
|
1224
|
-
if (a === void 0) a = 0;
|
|
1225
|
-
if (b === void 0) b = 0;
|
|
1226
|
-
let c$1 = Math.sqrt(a * a + b * b);
|
|
1227
|
-
let res = {
|
|
1228
|
-
mode,
|
|
1229
|
-
l,
|
|
1230
|
-
c: c$1
|
|
1231
|
-
};
|
|
1232
|
-
if (c$1) res.h = normalizeHue_default(Math.atan2(b, a) * 180 / Math.PI);
|
|
1233
|
-
if (alpha !== void 0) res.alpha = alpha;
|
|
1234
|
-
return res;
|
|
1235
|
-
};
|
|
1236
|
-
var convertLabToLch_default = convertLabToLch;
|
|
1237
|
-
const convertLchToLab = ({ l, c: c$1, h, alpha }, mode = "lab") => {
|
|
1238
|
-
if (h === void 0) h = 0;
|
|
1239
|
-
let res = {
|
|
1240
|
-
mode,
|
|
1241
|
-
l,
|
|
1242
|
-
a: c$1 ? c$1 * Math.cos(h / 180 * Math.PI) : 0,
|
|
1243
|
-
b: c$1 ? c$1 * Math.sin(h / 180 * Math.PI) : 0
|
|
1244
|
-
};
|
|
1245
|
-
if (alpha !== void 0) res.alpha = alpha;
|
|
1246
|
-
return res;
|
|
1247
|
-
};
|
|
1248
|
-
var convertLchToLab_default = convertLchToLab;
|
|
1249
|
-
function parseLch(color, parsed) {
|
|
1250
|
-
if (!parsed || parsed[0] !== "lch") return void 0;
|
|
1251
|
-
const res = { mode: "lch" };
|
|
1252
|
-
const [, l, c$1, h, alpha] = parsed;
|
|
1253
|
-
if (l.type !== Tok.None) {
|
|
1254
|
-
if (l.type === Tok.Hue) return void 0;
|
|
1255
|
-
res.l = Math.min(Math.max(0, l.value), 100);
|
|
1256
|
-
}
|
|
1257
|
-
if (c$1.type !== Tok.None) res.c = Math.max(0, c$1.type === Tok.Number ? c$1.value : c$1.value * 150 / 100);
|
|
1258
|
-
if (h.type !== Tok.None) {
|
|
1259
|
-
if (h.type === Tok.Percentage) return void 0;
|
|
1260
|
-
res.h = h.value;
|
|
1261
|
-
}
|
|
1262
|
-
if (alpha.type !== Tok.None) res.alpha = Math.min(1, Math.max(0, alpha.type === Tok.Number ? alpha.value : alpha.value / 100));
|
|
1263
|
-
return res;
|
|
1264
|
-
}
|
|
1265
|
-
var parseLch_default = parseLch;
|
|
1266
|
-
const definition$8 = {
|
|
1267
|
-
mode: "lch",
|
|
1268
|
-
toMode: {
|
|
1269
|
-
lab: convertLchToLab_default,
|
|
1270
|
-
rgb: (c$1) => convertLabToRgb_default(convertLchToLab_default(c$1))
|
|
1271
|
-
},
|
|
1272
|
-
fromMode: {
|
|
1273
|
-
rgb: (c$1) => convertLabToLch_default(convertRgbToLab_default(c$1)),
|
|
1274
|
-
lab: convertLabToLch_default
|
|
1275
|
-
},
|
|
1276
|
-
channels: [
|
|
1277
|
-
"l",
|
|
1278
|
-
"c",
|
|
1279
|
-
"h",
|
|
1280
|
-
"alpha"
|
|
1281
|
-
],
|
|
1282
|
-
ranges: {
|
|
1283
|
-
l: [0, 100],
|
|
1284
|
-
c: [0, 150],
|
|
1285
|
-
h: [0, 360]
|
|
1286
|
-
},
|
|
1287
|
-
parse: [parseLch_default],
|
|
1288
|
-
serialize: (c$1) => `lch(${c$1.l !== void 0 ? c$1.l : "none"} ${c$1.c !== void 0 ? c$1.c : "none"} ${c$1.h !== void 0 ? c$1.h : "none"}${c$1.alpha < 1 ? ` / ${c$1.alpha}` : ""})`,
|
|
1289
|
-
interpolate: {
|
|
1290
|
-
h: {
|
|
1291
|
-
use: interpolatorLinear,
|
|
1292
|
-
fixup: fixupHueShorter
|
|
1293
|
-
},
|
|
1294
|
-
c: interpolatorLinear,
|
|
1295
|
-
l: interpolatorLinear,
|
|
1296
|
-
alpha: {
|
|
1297
|
-
use: interpolatorLinear,
|
|
1298
|
-
fixup: fixupAlpha
|
|
1299
|
-
}
|
|
1300
|
-
},
|
|
1301
|
-
difference: { h: differenceHueChroma },
|
|
1302
|
-
average: { h: averageAngle }
|
|
1303
|
-
};
|
|
1304
|
-
var definition_default$5 = definition$8;
|
|
1305
|
-
const definition$7 = {
|
|
1306
|
-
...definition_default$12,
|
|
1307
|
-
mode: "lrgb",
|
|
1308
|
-
toMode: { rgb: convertLrgbToRgb_default },
|
|
1309
|
-
fromMode: { rgb: convertRgbToLrgb_default },
|
|
1310
|
-
parse: ["srgb-linear"],
|
|
1311
|
-
serialize: "srgb-linear"
|
|
1312
|
-
};
|
|
1313
|
-
var definition_default$6 = definition$7;
|
|
1314
|
-
const convertOklabToLrgb = ({ l, a, b, alpha }) => {
|
|
1315
|
-
if (l === void 0) l = 0;
|
|
1316
|
-
if (a === void 0) a = 0;
|
|
1317
|
-
if (b === void 0) b = 0;
|
|
1318
|
-
let L = Math.pow(l * .9999999984505198 + .39633779217376786 * a + .2158037580607588 * b, 3);
|
|
1319
|
-
let M = Math.pow(l * 1.0000000088817609 - .10556134232365635 * a - .06385417477170591 * b, 3);
|
|
1320
|
-
let S = Math.pow(l * 1.0000000546724108 - .08948418209496575 * a - 1.2914855378640917 * b, 3);
|
|
1321
|
-
let res = {
|
|
1322
|
-
mode: "lrgb",
|
|
1323
|
-
r: 4.076741661347994 * L - 3.307711590408193 * M + .230969928729428 * S,
|
|
1324
|
-
g: -1.2684380040921763 * L + 2.6097574006633715 * M - .3413193963102197 * S,
|
|
1325
|
-
b: -.004196086541837188 * L - .7034186144594493 * M + 1.7076147009309444 * S
|
|
1326
|
-
};
|
|
1327
|
-
if (alpha !== void 0) res.alpha = alpha;
|
|
1328
|
-
return res;
|
|
1329
|
-
};
|
|
1330
|
-
var convertOklabToLrgb_default = convertOklabToLrgb;
|
|
1331
|
-
const convertLrgbToOklab = ({ r: r$1, g, b, alpha }) => {
|
|
1332
|
-
if (r$1 === void 0) r$1 = 0;
|
|
1333
|
-
if (g === void 0) g = 0;
|
|
1334
|
-
if (b === void 0) b = 0;
|
|
1335
|
-
let L = Math.cbrt(.41222147079999993 * r$1 + .5363325363 * g + .0514459929 * b);
|
|
1336
|
-
let M = Math.cbrt(.2119034981999999 * r$1 + .6806995450999999 * g + .1073969566 * b);
|
|
1337
|
-
let S = Math.cbrt(.08830246189999998 * r$1 + .2817188376 * g + .6299787005000002 * b);
|
|
1338
|
-
let res = {
|
|
1339
|
-
mode: "oklab",
|
|
1340
|
-
l: .2104542553 * L + .793617785 * M - .0040720468 * S,
|
|
1341
|
-
a: 1.9779984951 * L - 2.428592205 * M + .4505937099 * S,
|
|
1342
|
-
b: .0259040371 * L + .7827717662 * M - .808675766 * S
|
|
1343
|
-
};
|
|
1344
|
-
if (alpha !== void 0) res.alpha = alpha;
|
|
1345
|
-
return res;
|
|
1346
|
-
};
|
|
1347
|
-
var convertLrgbToOklab_default = convertLrgbToOklab;
|
|
1348
|
-
const convertRgbToOklab = (rgb$2) => {
|
|
1349
|
-
let res = convertLrgbToOklab_default(convertRgbToLrgb_default(rgb$2));
|
|
1350
|
-
if (rgb$2.r === rgb$2.b && rgb$2.b === rgb$2.g) res.a = res.b = 0;
|
|
1351
|
-
return res;
|
|
1352
|
-
};
|
|
1353
|
-
var convertRgbToOklab_default = convertRgbToOklab;
|
|
1354
|
-
const convertOklabToRgb = (c$1) => convertLrgbToRgb_default(convertOklabToLrgb_default(c$1));
|
|
1355
|
-
var convertOklabToRgb_default = convertOklabToRgb;
|
|
1356
|
-
function parseOklab(color, parsed) {
|
|
1357
|
-
if (!parsed || parsed[0] !== "oklab") return void 0;
|
|
1358
|
-
const res = { mode: "oklab" };
|
|
1359
|
-
const [, l, a, b, alpha] = parsed;
|
|
1360
|
-
if (l.type === Tok.Hue || a.type === Tok.Hue || b.type === Tok.Hue) return void 0;
|
|
1361
|
-
if (l.type !== Tok.None) res.l = Math.min(Math.max(0, l.type === Tok.Number ? l.value : l.value / 100), 1);
|
|
1362
|
-
if (a.type !== Tok.None) res.a = a.type === Tok.Number ? a.value : a.value * .4 / 100;
|
|
1363
|
-
if (b.type !== Tok.None) res.b = b.type === Tok.Number ? b.value : b.value * .4 / 100;
|
|
1364
|
-
if (alpha.type !== Tok.None) res.alpha = Math.min(1, Math.max(0, alpha.type === Tok.Number ? alpha.value : alpha.value / 100));
|
|
1365
|
-
return res;
|
|
1366
|
-
}
|
|
1367
|
-
var parseOklab_default = parseOklab;
|
|
1368
|
-
const definition$6 = {
|
|
1369
|
-
...definition_default$4,
|
|
1370
|
-
mode: "oklab",
|
|
1371
|
-
toMode: {
|
|
1372
|
-
lrgb: convertOklabToLrgb_default,
|
|
1373
|
-
rgb: convertOklabToRgb_default
|
|
1374
|
-
},
|
|
1375
|
-
fromMode: {
|
|
1376
|
-
lrgb: convertLrgbToOklab_default,
|
|
1377
|
-
rgb: convertRgbToOklab_default
|
|
1378
|
-
},
|
|
1379
|
-
ranges: {
|
|
1380
|
-
l: [0, 1],
|
|
1381
|
-
a: [-.4, .4],
|
|
1382
|
-
b: [-.4, .4]
|
|
1383
|
-
},
|
|
1384
|
-
parse: [parseOklab_default],
|
|
1385
|
-
serialize: (c$1) => `oklab(${c$1.l !== void 0 ? c$1.l : "none"} ${c$1.a !== void 0 ? c$1.a : "none"} ${c$1.b !== void 0 ? c$1.b : "none"}${c$1.alpha < 1 ? ` / ${c$1.alpha}` : ""})`
|
|
1386
|
-
};
|
|
1387
|
-
var definition_default$7 = definition$6;
|
|
1388
|
-
function parseOklch(color, parsed) {
|
|
1389
|
-
if (!parsed || parsed[0] !== "oklch") return void 0;
|
|
1390
|
-
const res = { mode: "oklch" };
|
|
1391
|
-
const [, l, c$1, h, alpha] = parsed;
|
|
1392
|
-
if (l.type !== Tok.None) {
|
|
1393
|
-
if (l.type === Tok.Hue) return void 0;
|
|
1394
|
-
res.l = Math.min(Math.max(0, l.type === Tok.Number ? l.value : l.value / 100), 1);
|
|
1395
|
-
}
|
|
1396
|
-
if (c$1.type !== Tok.None) res.c = Math.max(0, c$1.type === Tok.Number ? c$1.value : c$1.value * .4 / 100);
|
|
1397
|
-
if (h.type !== Tok.None) {
|
|
1398
|
-
if (h.type === Tok.Percentage) return void 0;
|
|
1399
|
-
res.h = h.value;
|
|
1400
|
-
}
|
|
1401
|
-
if (alpha.type !== Tok.None) res.alpha = Math.min(1, Math.max(0, alpha.type === Tok.Number ? alpha.value : alpha.value / 100));
|
|
1402
|
-
return res;
|
|
1403
|
-
}
|
|
1404
|
-
var parseOklch_default = parseOklch;
|
|
1405
|
-
const definition$5 = {
|
|
1406
|
-
...definition_default$5,
|
|
1407
|
-
mode: "oklch",
|
|
1408
|
-
toMode: {
|
|
1409
|
-
oklab: (c$1) => convertLchToLab_default(c$1, "oklab"),
|
|
1410
|
-
rgb: (c$1) => convertOklabToRgb_default(convertLchToLab_default(c$1, "oklab"))
|
|
1411
|
-
},
|
|
1412
|
-
fromMode: {
|
|
1413
|
-
rgb: (c$1) => convertLabToLch_default(convertRgbToOklab_default(c$1), "oklch"),
|
|
1414
|
-
oklab: (c$1) => convertLabToLch_default(c$1, "oklch")
|
|
1415
|
-
},
|
|
1416
|
-
parse: [parseOklch_default],
|
|
1417
|
-
serialize: (c$1) => `oklch(${c$1.l !== void 0 ? c$1.l : "none"} ${c$1.c !== void 0 ? c$1.c : "none"} ${c$1.h !== void 0 ? c$1.h : "none"}${c$1.alpha < 1 ? ` / ${c$1.alpha}` : ""})`,
|
|
1418
|
-
ranges: {
|
|
1419
|
-
l: [0, 1],
|
|
1420
|
-
c: [0, .4],
|
|
1421
|
-
h: [0, 360]
|
|
1422
|
-
}
|
|
1423
|
-
};
|
|
1424
|
-
var definition_default$8 = definition$5;
|
|
1425
|
-
const convertP3ToXyz65 = (rgb$2) => {
|
|
1426
|
-
let { r: r$1, g, b, alpha } = convertRgbToLrgb_default(rgb$2);
|
|
1427
|
-
let res = {
|
|
1428
|
-
mode: "xyz65",
|
|
1429
|
-
x: .486570948648216 * r$1 + .265667693169093 * g + .1982172852343625 * b,
|
|
1430
|
-
y: .2289745640697487 * r$1 + .6917385218365062 * g + .079286914093745 * b,
|
|
1431
|
-
z: 0 * r$1 + .0451133818589026 * g + 1.043944368900976 * b
|
|
1432
|
-
};
|
|
1433
|
-
if (alpha !== void 0) res.alpha = alpha;
|
|
1434
|
-
return res;
|
|
1435
|
-
};
|
|
1436
|
-
var convertP3ToXyz65_default = convertP3ToXyz65;
|
|
1437
|
-
const convertXyz65ToP3 = ({ x, y, z, alpha }) => {
|
|
1438
|
-
if (x === void 0) x = 0;
|
|
1439
|
-
if (y === void 0) y = 0;
|
|
1440
|
-
if (z === void 0) z = 0;
|
|
1441
|
-
let res = convertLrgbToRgb_default({
|
|
1442
|
-
r: x * 2.4934969119414263 - y * .9313836179191242 - .402710784450717 * z,
|
|
1443
|
-
g: x * -.8294889695615749 + y * 1.7626640603183465 + .0236246858419436 * z,
|
|
1444
|
-
b: x * .0358458302437845 - y * .0761723892680418 + .9568845240076871 * z
|
|
1445
|
-
}, "p3");
|
|
1446
|
-
if (alpha !== void 0) res.alpha = alpha;
|
|
1447
|
-
return res;
|
|
1448
|
-
};
|
|
1449
|
-
var convertXyz65ToP3_default = convertXyz65ToP3;
|
|
1450
|
-
const definition$4 = {
|
|
1451
|
-
...definition_default$12,
|
|
1452
|
-
mode: "p3",
|
|
1453
|
-
parse: ["display-p3"],
|
|
1454
|
-
serialize: "display-p3",
|
|
1455
|
-
fromMode: {
|
|
1456
|
-
rgb: (color) => convertXyz65ToP3_default(convertRgbToXyz65_default(color)),
|
|
1457
|
-
xyz65: convertXyz65ToP3_default
|
|
1458
|
-
},
|
|
1459
|
-
toMode: {
|
|
1460
|
-
rgb: (color) => convertXyz65ToRgb_default(convertP3ToXyz65_default(color)),
|
|
1461
|
-
xyz65: convertP3ToXyz65_default
|
|
1462
|
-
}
|
|
1463
|
-
};
|
|
1464
|
-
var definition_default$9 = definition$4;
|
|
1465
|
-
const gamma$1 = (v) => {
|
|
1466
|
-
let abs = Math.abs(v);
|
|
1467
|
-
if (abs >= 1 / 512) return Math.sign(v) * Math.pow(abs, 1 / 1.8);
|
|
1468
|
-
return 16 * v;
|
|
1469
|
-
};
|
|
1470
|
-
const convertXyz50ToProphoto = ({ x, y, z, alpha }) => {
|
|
1471
|
-
if (x === void 0) x = 0;
|
|
1472
|
-
if (y === void 0) y = 0;
|
|
1473
|
-
if (z === void 0) z = 0;
|
|
1474
|
-
let res = {
|
|
1475
|
-
mode: "prophoto",
|
|
1476
|
-
r: gamma$1(x * 1.3457868816471585 - y * .2555720873797946 - .0511018649755453 * z),
|
|
1477
|
-
g: gamma$1(x * -.5446307051249019 + y * 1.5082477428451466 + .0205274474364214 * z),
|
|
1478
|
-
b: gamma$1(x * 0 + y * 0 + 1.2119675456389452 * z)
|
|
1479
|
-
};
|
|
1480
|
-
if (alpha !== void 0) res.alpha = alpha;
|
|
1481
|
-
return res;
|
|
1482
|
-
};
|
|
1483
|
-
var convertXyz50ToProphoto_default = convertXyz50ToProphoto;
|
|
1484
|
-
const linearize$1 = (v = 0) => {
|
|
1485
|
-
let abs = Math.abs(v);
|
|
1486
|
-
if (abs >= 16 / 512) return Math.sign(v) * Math.pow(abs, 1.8);
|
|
1487
|
-
return v / 16;
|
|
1488
|
-
};
|
|
1489
|
-
const convertProphotoToXyz50 = (prophoto) => {
|
|
1490
|
-
let r$1 = linearize$1(prophoto.r);
|
|
1491
|
-
let g = linearize$1(prophoto.g);
|
|
1492
|
-
let b = linearize$1(prophoto.b);
|
|
1493
|
-
let res = {
|
|
1494
|
-
mode: "xyz50",
|
|
1495
|
-
x: .7977666449006423 * r$1 + .1351812974005331 * g + .0313477341283922 * b,
|
|
1496
|
-
y: .2880748288194013 * r$1 + .7118352342418731 * g + 899369387256e-16 * b,
|
|
1497
|
-
z: 0 * r$1 + 0 * g + .8251046025104602 * b
|
|
1498
|
-
};
|
|
1499
|
-
if (prophoto.alpha !== void 0) res.alpha = prophoto.alpha;
|
|
1500
|
-
return res;
|
|
1501
|
-
};
|
|
1502
|
-
var convertProphotoToXyz50_default = convertProphotoToXyz50;
|
|
1503
|
-
const definition$3 = {
|
|
1504
|
-
...definition_default$12,
|
|
1505
|
-
mode: "prophoto",
|
|
1506
|
-
parse: ["prophoto-rgb"],
|
|
1507
|
-
serialize: "prophoto-rgb",
|
|
1508
|
-
fromMode: {
|
|
1509
|
-
xyz50: convertXyz50ToProphoto_default,
|
|
1510
|
-
rgb: (color) => convertXyz50ToProphoto_default(convertRgbToXyz50_default(color))
|
|
1511
|
-
},
|
|
1512
|
-
toMode: {
|
|
1513
|
-
xyz50: convertProphotoToXyz50_default,
|
|
1514
|
-
rgb: (color) => convertXyz50ToRgb_default(convertProphotoToXyz50_default(color))
|
|
1515
|
-
}
|
|
1516
|
-
};
|
|
1517
|
-
var definition_default$10 = definition$3;
|
|
1518
|
-
const α$1 = 1.09929682680944;
|
|
1519
|
-
const β$1 = .018053968510807;
|
|
1520
|
-
const gamma = (v) => {
|
|
1521
|
-
const abs = Math.abs(v);
|
|
1522
|
-
if (abs > β$1) return (Math.sign(v) || 1) * (α$1 * Math.pow(abs, .45) - (α$1 - 1));
|
|
1523
|
-
return 4.5 * v;
|
|
1524
|
-
};
|
|
1525
|
-
const convertXyz65ToRec2020 = ({ x, y, z, alpha }) => {
|
|
1526
|
-
if (x === void 0) x = 0;
|
|
1527
|
-
if (y === void 0) y = 0;
|
|
1528
|
-
if (z === void 0) z = 0;
|
|
1529
|
-
let res = {
|
|
1530
|
-
mode: "rec2020",
|
|
1531
|
-
r: gamma(x * 1.7166511879712683 - y * .3556707837763925 - .2533662813736599 * z),
|
|
1532
|
-
g: gamma(x * -.6666843518324893 + y * 1.6164812366349395 + .0157685458139111 * z),
|
|
1533
|
-
b: gamma(x * .0176398574453108 - y * .0427706132578085 + .9421031212354739 * z)
|
|
1534
|
-
};
|
|
1535
|
-
if (alpha !== void 0) res.alpha = alpha;
|
|
1536
|
-
return res;
|
|
1537
|
-
};
|
|
1538
|
-
var convertXyz65ToRec2020_default = convertXyz65ToRec2020;
|
|
1539
|
-
const α = 1.09929682680944;
|
|
1540
|
-
const β = .018053968510807;
|
|
1541
|
-
const linearize = (v = 0) => {
|
|
1542
|
-
let abs = Math.abs(v);
|
|
1543
|
-
if (abs < β * 4.5) return v / 4.5;
|
|
1544
|
-
return (Math.sign(v) || 1) * Math.pow((abs + α - 1) / α, 1 / .45);
|
|
1545
|
-
};
|
|
1546
|
-
const convertRec2020ToXyz65 = (rec2020) => {
|
|
1547
|
-
let r$1 = linearize(rec2020.r);
|
|
1548
|
-
let g = linearize(rec2020.g);
|
|
1549
|
-
let b = linearize(rec2020.b);
|
|
1550
|
-
let res = {
|
|
1551
|
-
mode: "xyz65",
|
|
1552
|
-
x: .6369580483012911 * r$1 + .1446169035862083 * g + .1688809751641721 * b,
|
|
1553
|
-
y: .262700212011267 * r$1 + .6779980715188708 * g + .059301716469862 * b,
|
|
1554
|
-
z: 0 * r$1 + .0280726930490874 * g + 1.0609850577107909 * b
|
|
1555
|
-
};
|
|
1556
|
-
if (rec2020.alpha !== void 0) res.alpha = rec2020.alpha;
|
|
1557
|
-
return res;
|
|
1558
|
-
};
|
|
1559
|
-
var convertRec2020ToXyz65_default = convertRec2020ToXyz65;
|
|
1560
|
-
const definition$2 = {
|
|
1561
|
-
...definition_default$12,
|
|
1562
|
-
mode: "rec2020",
|
|
1563
|
-
fromMode: {
|
|
1564
|
-
xyz65: convertXyz65ToRec2020_default,
|
|
1565
|
-
rgb: (color) => convertXyz65ToRec2020_default(convertRgbToXyz65_default(color))
|
|
1566
|
-
},
|
|
1567
|
-
toMode: {
|
|
1568
|
-
xyz65: convertRec2020ToXyz65_default,
|
|
1569
|
-
rgb: (color) => convertXyz65ToRgb_default(convertRec2020ToXyz65_default(color))
|
|
1570
|
-
},
|
|
1571
|
-
parse: ["rec2020"],
|
|
1572
|
-
serialize: "rec2020"
|
|
1573
|
-
};
|
|
1574
|
-
var definition_default$11 = definition$2;
|
|
1575
|
-
const definition$1 = {
|
|
1576
|
-
mode: "xyz50",
|
|
1577
|
-
parse: ["xyz-d50"],
|
|
1578
|
-
serialize: "xyz-d50",
|
|
1579
|
-
toMode: {
|
|
1580
|
-
rgb: convertXyz50ToRgb_default,
|
|
1581
|
-
lab: convertXyz50ToLab_default
|
|
1582
|
-
},
|
|
1583
|
-
fromMode: {
|
|
1584
|
-
rgb: convertRgbToXyz50_default,
|
|
1585
|
-
lab: convertLabToXyz50_default
|
|
1586
|
-
},
|
|
1587
|
-
channels: [
|
|
1588
|
-
"x",
|
|
1589
|
-
"y",
|
|
1590
|
-
"z",
|
|
1591
|
-
"alpha"
|
|
1592
|
-
],
|
|
1593
|
-
ranges: {
|
|
1594
|
-
x: [0, .964],
|
|
1595
|
-
y: [0, .999],
|
|
1596
|
-
z: [0, .825]
|
|
1597
|
-
},
|
|
1598
|
-
interpolate: {
|
|
1599
|
-
x: interpolatorLinear,
|
|
1600
|
-
y: interpolatorLinear,
|
|
1601
|
-
z: interpolatorLinear,
|
|
1602
|
-
alpha: {
|
|
1603
|
-
use: interpolatorLinear,
|
|
1604
|
-
fixup: fixupAlpha
|
|
1605
|
-
}
|
|
1606
|
-
}
|
|
1607
|
-
};
|
|
1608
|
-
var definition_default$13 = definition$1;
|
|
1609
|
-
const convertXyz65ToXyz50 = (xyz65) => {
|
|
1610
|
-
let { x, y, z, alpha } = xyz65;
|
|
1611
|
-
if (x === void 0) x = 0;
|
|
1612
|
-
if (y === void 0) y = 0;
|
|
1613
|
-
if (z === void 0) z = 0;
|
|
1614
|
-
let res = {
|
|
1615
|
-
mode: "xyz50",
|
|
1616
|
-
x: 1.0479298208405488 * x + .0229467933410191 * y - .0501922295431356 * z,
|
|
1617
|
-
y: .0296278156881593 * x + .990434484573249 * y - .0170738250293851 * z,
|
|
1618
|
-
z: -.0092430581525912 * x + .0150551448965779 * y + .7518742899580008 * z
|
|
1619
|
-
};
|
|
1620
|
-
if (alpha !== void 0) res.alpha = alpha;
|
|
1621
|
-
return res;
|
|
1622
|
-
};
|
|
1623
|
-
var convertXyz65ToXyz50_default = convertXyz65ToXyz50;
|
|
1624
|
-
const convertXyz50ToXyz65 = (xyz50) => {
|
|
1625
|
-
let { x, y, z, alpha } = xyz50;
|
|
1626
|
-
if (x === void 0) x = 0;
|
|
1627
|
-
if (y === void 0) y = 0;
|
|
1628
|
-
if (z === void 0) z = 0;
|
|
1629
|
-
let res = {
|
|
1630
|
-
mode: "xyz65",
|
|
1631
|
-
x: .9554734527042182 * x - .0230985368742614 * y + .0632593086610217 * z,
|
|
1632
|
-
y: -.0283697069632081 * x + 1.0099954580058226 * y + .021041398966943 * z,
|
|
1633
|
-
z: .0123140016883199 * x - .0205076964334779 * y + 1.3303659366080753 * z
|
|
1634
|
-
};
|
|
1635
|
-
if (alpha !== void 0) res.alpha = alpha;
|
|
1636
|
-
return res;
|
|
1637
|
-
};
|
|
1638
|
-
var convertXyz50ToXyz65_default = convertXyz50ToXyz65;
|
|
1639
|
-
const definition = {
|
|
1640
|
-
mode: "xyz65",
|
|
1641
|
-
toMode: {
|
|
1642
|
-
rgb: convertXyz65ToRgb_default,
|
|
1643
|
-
xyz50: convertXyz65ToXyz50_default
|
|
1644
|
-
},
|
|
1645
|
-
fromMode: {
|
|
1646
|
-
rgb: convertRgbToXyz65_default,
|
|
1647
|
-
xyz50: convertXyz50ToXyz65_default
|
|
1648
|
-
},
|
|
1649
|
-
ranges: {
|
|
1650
|
-
x: [0, .95],
|
|
1651
|
-
y: [0, 1],
|
|
1652
|
-
z: [0, 1.088]
|
|
1653
|
-
},
|
|
1654
|
-
channels: [
|
|
1655
|
-
"x",
|
|
1656
|
-
"y",
|
|
1657
|
-
"z",
|
|
1658
|
-
"alpha"
|
|
1659
|
-
],
|
|
1660
|
-
parse: ["xyz", "xyz-d65"],
|
|
1661
|
-
serialize: "xyz-d65",
|
|
1662
|
-
interpolate: {
|
|
1663
|
-
x: interpolatorLinear,
|
|
1664
|
-
y: interpolatorLinear,
|
|
1665
|
-
z: interpolatorLinear,
|
|
1666
|
-
alpha: {
|
|
1667
|
-
use: interpolatorLinear,
|
|
1668
|
-
fixup: fixupAlpha
|
|
1669
|
-
}
|
|
1670
|
-
}
|
|
1671
|
-
};
|
|
1672
|
-
var definition_default$14 = definition;
|
|
1673
|
-
const r = (value, precision) => Math.round(value * (precision = Math.pow(10, precision))) / precision;
|
|
1674
|
-
const round = (precision = 4) => (value) => typeof value === "number" ? r(value, precision) : value;
|
|
1675
|
-
var round_default = round;
|
|
1676
|
-
let twoDecimals = round_default(2);
|
|
1677
|
-
const rgb$1 = converter_default("rgb");
|
|
1678
|
-
const hsl = converter_default("hsl");
|
|
1679
|
-
const rgb = converter_default("rgb");
|
|
1680
|
-
const converters = {
|
|
1681
|
-
a98: useMode(definition_default),
|
|
1682
|
-
hsl: useMode(definition_default$1),
|
|
1683
|
-
hsv: useMode(definition_default$2),
|
|
1684
|
-
hwb: useMode(definition_default$3),
|
|
1685
|
-
lab: useMode(definition_default$4),
|
|
1686
|
-
lch: useMode(definition_default$5),
|
|
1687
|
-
lrgb: useMode(definition_default$6),
|
|
1688
|
-
oklab: useMode(definition_default$7),
|
|
1689
|
-
oklch: useMode(definition_default$8),
|
|
1690
|
-
p3: useMode(definition_default$9),
|
|
1691
|
-
prophoto: useMode(definition_default$10),
|
|
1692
|
-
rec2020: useMode(definition_default$11),
|
|
1693
|
-
rgb: useMode(definition_default$12),
|
|
1694
|
-
xyz50: useMode(definition_default$13),
|
|
1695
|
-
xyz65: useMode(definition_default$14)
|
|
1696
|
-
};
|
|
1697
|
-
const FORMAT_ID$1 = "css";
|
|
1
|
+
import { FORMAT_ID as FORMAT_ID$1 } from "@terrazzo/plugin-css";
|
|
1698
2
|
|
|
1699
|
-
//#endregion
|
|
1700
3
|
//#region ../../node_modules/.pnpm/scule@1.3.0/node_modules/scule/dist/index.mjs
|
|
1701
4
|
const NUMBER_CHAR_RE = /\d/;
|
|
1702
5
|
const STR_SPLITTERS = [
|
|
@@ -1763,16 +66,16 @@ function camelCase(str, opts) {
|
|
|
1763
66
|
//#endregion
|
|
1764
67
|
//#region src/lib.ts
|
|
1765
68
|
const FORMAT_ID = "vanilla-extract";
|
|
1766
|
-
const
|
|
69
|
+
const THEME_EXPORT = "vars";
|
|
1767
70
|
const VE = {
|
|
1768
71
|
createTheme: "createTheme",
|
|
1769
72
|
createGlobalTheme: "createGlobalTheme",
|
|
1770
73
|
createThemeContract: "createThemeContract",
|
|
1771
74
|
createGlobalThemeContract: "createGlobalThemeContract"
|
|
1772
75
|
};
|
|
1773
|
-
function isJSIdent(ident
|
|
1774
|
-
if (typeof ident
|
|
1775
|
-
return /^[A-Za-z$_][A-Za-z0-9_$]*$/.test(ident
|
|
76
|
+
function isJSIdent(ident) {
|
|
77
|
+
if (typeof ident !== "string") return false;
|
|
78
|
+
return /^[A-Za-z$_][A-Za-z0-9_$]*$/.test(ident);
|
|
1776
79
|
}
|
|
1777
80
|
/** Generate createThemeContract() or createGlobalThemeContract() */
|
|
1778
81
|
function generateThemeContract({ tokens, globalThemeContract }) {
|
|
@@ -1786,9 +89,17 @@ function generateThemeContract({ tokens, globalThemeContract }) {
|
|
|
1786
89
|
node = node[part];
|
|
1787
90
|
}
|
|
1788
91
|
if (token.type !== "MULTI_VALUE") throw new Error("Error in plugin-vanilla-extract: values didn’t generate correctly.");
|
|
1789
|
-
|
|
92
|
+
const cssName = token.value.__cssName?.replace(/^--/, "");
|
|
93
|
+
if ("." in token.value) node[name] = globalThemeContract ? cssName : null;
|
|
94
|
+
else {
|
|
95
|
+
node[name] = {};
|
|
96
|
+
for (const k of Object.keys(token.value)) {
|
|
97
|
+
if (k === "__cssName") continue;
|
|
98
|
+
node[name][camelCase(k)] = globalThemeContract ? `${cssName}-${k}` : null;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
1790
101
|
}
|
|
1791
|
-
return `export const ${
|
|
102
|
+
return `export const ${THEME_EXPORT} = ${globalThemeContract ? VE.createGlobalThemeContract : VE.createThemeContract}(${JSON.stringify(tokensObj, void 0, 2)});\n`;
|
|
1792
103
|
}
|
|
1793
104
|
/** Generate createTheme()/createGlobalTheme() */
|
|
1794
105
|
function generateTheme({ name, namingPattern, tokens, selector, globalTheme = false }) {
|
|
@@ -1804,17 +115,17 @@ function generateTheme({ name, namingPattern, tokens, selector, globalTheme = fa
|
|
|
1804
115
|
if (token.type === "MULTI_VALUE") if ("." in token.value) node[name$1] = serializeValue(token.value["."], tokens);
|
|
1805
116
|
else {
|
|
1806
117
|
node[name$1] = {};
|
|
1807
|
-
for (const [k
|
|
1808
|
-
if (k
|
|
1809
|
-
node[name$1][k
|
|
118
|
+
for (const [k, v] of Object.entries(token.value)) {
|
|
119
|
+
if (k === "__cssName") continue;
|
|
120
|
+
node[name$1][camelCase(k)] = serializeValue(v, tokens);
|
|
1810
121
|
}
|
|
1811
122
|
}
|
|
1812
123
|
else node[name$1] = serializeValue(token.value, tokens);
|
|
1813
124
|
}
|
|
1814
|
-
const ident
|
|
1815
|
-
const prefix = globalTheme ? `${VE.createGlobalTheme}(${JSON.stringify(selector)}, ` : `${VE.createTheme}(`;
|
|
125
|
+
const ident = globalTheme ? `${name}` : `[${namingPattern(name)[0]}, ${namingPattern(name)[1]}]`;
|
|
126
|
+
const prefix = globalTheme ? `${VE.createGlobalTheme}(${JSON.stringify(selector)}, ${THEME_EXPORT}, ` : `${VE.createTheme}(${THEME_EXPORT}, `;
|
|
1816
127
|
const rawTokens = JSON.stringify(tokensObj, void 0, 2);
|
|
1817
|
-
return `export const ${ident
|
|
128
|
+
return `export const ${ident} = ${prefix}${deserializeAllValues(rawTokens)});\n`;
|
|
1818
129
|
}
|
|
1819
130
|
const IDENT_ESCAPE = "__ident__";
|
|
1820
131
|
/** Encode an alias to a Vanilla Extract token inside a JSON array */
|
|
@@ -1828,7 +139,7 @@ function serializeValue(value, tokens) {
|
|
|
1828
139
|
const parts = originalToken.localID.split(".");
|
|
1829
140
|
for (const part of parts) if (!isJSIdent(part)) jsIdent += /^[1-9][0-9]*$/.test(part) ? `[${part}]` : `['${part.replace(/'/g, "\\'")}']`;
|
|
1830
141
|
else jsIdent += `.${part}`;
|
|
1831
|
-
return `${IDENT_ESCAPE}${
|
|
142
|
+
return `${IDENT_ESCAPE}${THEME_EXPORT}${jsIdent}${IDENT_ESCAPE}`;
|
|
1832
143
|
}
|
|
1833
144
|
if (/^0[A-Z]+/i.test(value)) return "0";
|
|
1834
145
|
return value;
|
|
@@ -1853,7 +164,7 @@ function vanillaExtractPlugin(options) {
|
|
|
1853
164
|
...options.globalThemes
|
|
1854
165
|
};
|
|
1855
166
|
if (!Object.keys(allThemes).length) throw new Error("Must generate at least one theme in \"themes\" or \"globalThemes\".");
|
|
1856
|
-
for (const k
|
|
167
|
+
for (const k of Object.keys(allThemes)) if (!isJSIdent(k)) throw new Error(`${JSON.stringify(k)} must be a valid JS identifier. Prefer camelCase so it may be used in JS.`);
|
|
1857
168
|
},
|
|
1858
169
|
async transform({ getTransforms, setTransform }) {
|
|
1859
170
|
for (const token of getTransforms({ format: FORMAT_ID$1 })) {
|
|
@@ -1918,5 +229,5 @@ function vanillaExtractPlugin(options) {
|
|
|
1918
229
|
}
|
|
1919
230
|
|
|
1920
231
|
//#endregion
|
|
1921
|
-
export { FORMAT_ID,
|
|
232
|
+
export { FORMAT_ID, THEME_EXPORT, VE, vanillaExtractPlugin as default, deserializeAllValues, generateTheme, generateThemeContract, isJSIdent, serializeValue };
|
|
1922
233
|
//# sourceMappingURL=index.js.map
|