@terrazzo/plugin-vanilla-extract 0.0.2 → 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 +8 -0
- package/dist/index.js +13 -1710
- 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 = [
|
|
@@ -1770,9 +73,9 @@ const VE = {
|
|
|
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 }) {
|
|
@@ -1790,9 +93,9 @@ function generateThemeContract({ tokens, globalThemeContract }) {
|
|
|
1790
93
|
if ("." in token.value) node[name] = globalThemeContract ? cssName : null;
|
|
1791
94
|
else {
|
|
1792
95
|
node[name] = {};
|
|
1793
|
-
for (const k
|
|
1794
|
-
if (k
|
|
1795
|
-
node[name][camelCase(k
|
|
96
|
+
for (const k of Object.keys(token.value)) {
|
|
97
|
+
if (k === "__cssName") continue;
|
|
98
|
+
node[name][camelCase(k)] = globalThemeContract ? `${cssName}-${k}` : null;
|
|
1796
99
|
}
|
|
1797
100
|
}
|
|
1798
101
|
}
|
|
@@ -1812,17 +115,17 @@ function generateTheme({ name, namingPattern, tokens, selector, globalTheme = fa
|
|
|
1812
115
|
if (token.type === "MULTI_VALUE") if ("." in token.value) node[name$1] = serializeValue(token.value["."], tokens);
|
|
1813
116
|
else {
|
|
1814
117
|
node[name$1] = {};
|
|
1815
|
-
for (const [k
|
|
1816
|
-
if (k
|
|
1817
|
-
node[name$1][camelCase(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);
|
|
1818
121
|
}
|
|
1819
122
|
}
|
|
1820
123
|
else node[name$1] = serializeValue(token.value, tokens);
|
|
1821
124
|
}
|
|
1822
|
-
const ident
|
|
125
|
+
const ident = globalTheme ? `${name}` : `[${namingPattern(name)[0]}, ${namingPattern(name)[1]}]`;
|
|
1823
126
|
const prefix = globalTheme ? `${VE.createGlobalTheme}(${JSON.stringify(selector)}, ${THEME_EXPORT}, ` : `${VE.createTheme}(${THEME_EXPORT}, `;
|
|
1824
127
|
const rawTokens = JSON.stringify(tokensObj, void 0, 2);
|
|
1825
|
-
return `export const ${ident
|
|
128
|
+
return `export const ${ident} = ${prefix}${deserializeAllValues(rawTokens)});\n`;
|
|
1826
129
|
}
|
|
1827
130
|
const IDENT_ESCAPE = "__ident__";
|
|
1828
131
|
/** Encode an alias to a Vanilla Extract token inside a JSON array */
|
|
@@ -1861,7 +164,7 @@ function vanillaExtractPlugin(options) {
|
|
|
1861
164
|
...options.globalThemes
|
|
1862
165
|
};
|
|
1863
166
|
if (!Object.keys(allThemes).length) throw new Error("Must generate at least one theme in \"themes\" or \"globalThemes\".");
|
|
1864
|
-
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.`);
|
|
1865
168
|
},
|
|
1866
169
|
async transform({ getTransforms, setTransform }) {
|
|
1867
170
|
for (const token of getTransforms({ format: FORMAT_ID$1 })) {
|