Skip to content

Commit e9c5d5c

Browse files
committed
convert color to any supported format #94
1 parent d8b16a0 commit e9c5d5c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+5097
-107
lines changed

dist/index-umd-web.js

Lines changed: 88 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1139,7 +1139,10 @@
11391139
{ typ: exports.EnumToken.NumberTokenType, val: String(values[2]) },
11401140
];
11411141
if (values.length == 4) {
1142-
chi.push({ typ: exports.EnumToken.LiteralTokenType, val: '/' }, { typ: exports.EnumToken.PercentageTokenType, val: (values[3] * 100).toFixed() });
1142+
chi.push({ typ: exports.EnumToken.LiteralTokenType, val: '/' }, {
1143+
typ: exports.EnumToken.PercentageTokenType,
1144+
val: (values[3] * 100).toFixed()
1145+
});
11431146
}
11441147
return {
11451148
typ: exports.EnumToken.ColorTokenType,
@@ -1173,8 +1176,12 @@
11731176
return srgb2labvalues(...values);
11741177
}
11751178
function hwb2labvalues(token) {
1179+
const values = hwb2srgbvalues(token);
1180+
if (values == null) {
1181+
return null;
1182+
}
11761183
// @ts-ignore
1177-
return srgb2labvalues(...hwb2srgbvalues(token));
1184+
return srgb2labvalues(...values);
11781185
}
11791186
function lch2labvalues(token) {
11801187
const values = getLCHComponents(token);
@@ -1254,7 +1261,7 @@
12541261
}
12551262
for (let i = 0; i < components.length; i++) {
12561263
if (![exports.EnumToken.NumberTokenType, exports.EnumToken.PercentageTokenType, exports.EnumToken.AngleTokenType, exports.EnumToken.IdenTokenType].includes(components[i].typ)) {
1257-
return [];
1264+
return null;
12581265
}
12591266
}
12601267
// @ts-ignore
@@ -1286,10 +1293,7 @@
12861293
// @ts-ignore
12871294
const xyz_d65 = XYZ_D50_to_D65(...xyz_d50);
12881295
// @ts-ignore
1289-
const lin_srgb = XYZ_to_lin_sRGB(...xyz_d65);
1290-
lin_srgb.map((value, i) => value > 0.0031308 ? 1.055 * Math.pow(value, 1 / 2.4) - 0.055 : 12.92 * value);
1291-
// @ts-ignore
1292-
return xyzd502srgb(...Lab_to_XYZ(l, a, b));
1296+
return xyz2srgb(...xyz_d65);
12931297
}
12941298
// from https://www.w3.org/TR/css-color-4/#color-conversion-code
12951299
function Lab_to_XYZ(l, a, b) {
@@ -1781,7 +1785,7 @@
17811785
function okLabDistance(okLab1, okLab2) {
17821786
return Math.sqrt(Math.pow(okLab1[0] - okLab2[0], 2) + Math.pow(okLab1[1] - okLab2[1], 2) + Math.pow(okLab1[2] - okLab2[2], 2));
17831787
}
1784-
function isOkLabClose(color1, color2, threshold = 2.3) {
1788+
function isOkLabClose(color1, color2, threshold = .01) {
17851789
color1 = convertColor(color1, exports.ColorType.OKLAB);
17861790
color2 = convertColor(color2, exports.ColorType.OKLAB);
17871791
// console.error(JSON.stringify({color1, color2}, null, 1));
@@ -3820,6 +3824,14 @@
38203824
case exports.ColorType.LCH:
38213825
return lch2HslToken(token);
38223826
case exports.ColorType.COLOR:
3827+
case exports.ColorType.XYZ:
3828+
case exports.ColorType.SRGB:
3829+
case exports.ColorType.REC2020:
3830+
case exports.ColorType.XYZ_D50:
3831+
case exports.ColorType.A98_RGB:
3832+
case exports.ColorType.DISPLAY_P3:
3833+
case exports.ColorType.SRGB_LINEAR:
3834+
case exports.ColorType.PROPHOTO_RGB:
38233835
return color2HslToken(token);
38243836
}
38253837
}
@@ -3830,7 +3842,6 @@
38303842
return rgb2hwbToken(token);
38313843
case exports.ColorType.HEX:
38323844
case exports.ColorType.LIT:
3833-
// @ts-ignore
38343845
return rgb2hwbToken(token);
38353846
case exports.ColorType.HSL:
38363847
case exports.ColorType.HSLA:
@@ -3846,6 +3857,14 @@
38463857
case exports.ColorType.DEVICE_CMYK:
38473858
return cmyk2hwbToken(token);
38483859
case exports.ColorType.COLOR:
3860+
case exports.ColorType.XYZ:
3861+
case exports.ColorType.SRGB:
3862+
case exports.ColorType.REC2020:
3863+
case exports.ColorType.XYZ_D50:
3864+
case exports.ColorType.A98_RGB:
3865+
case exports.ColorType.DISPLAY_P3:
3866+
case exports.ColorType.SRGB_LINEAR:
3867+
case exports.ColorType.PROPHOTO_RGB:
38493868
return color2hwbToken(token);
38503869
}
38513870
}
@@ -3872,6 +3891,14 @@
38723891
case exports.ColorType.LCH:
38733892
return lch2cmykToken(token);
38743893
case exports.ColorType.COLOR:
3894+
case exports.ColorType.XYZ:
3895+
case exports.ColorType.SRGB:
3896+
case exports.ColorType.REC2020:
3897+
case exports.ColorType.XYZ_D50:
3898+
case exports.ColorType.A98_RGB:
3899+
case exports.ColorType.DISPLAY_P3:
3900+
case exports.ColorType.SRGB_LINEAR:
3901+
case exports.ColorType.PROPHOTO_RGB:
38753902
return color2cmykToken(token);
38763903
}
38773904
}
@@ -3901,6 +3928,14 @@
39013928
case exports.ColorType.LCH:
39023929
return lch2HexToken(token);
39033930
case exports.ColorType.COLOR:
3931+
case exports.ColorType.XYZ:
3932+
case exports.ColorType.SRGB:
3933+
case exports.ColorType.REC2020:
3934+
case exports.ColorType.XYZ_D50:
3935+
case exports.ColorType.A98_RGB:
3936+
case exports.ColorType.DISPLAY_P3:
3937+
case exports.ColorType.SRGB_LINEAR:
3938+
case exports.ColorType.PROPHOTO_RGB:
39043939
return color2HexToken(token);
39053940
case exports.ColorType.RGB:
39063941
case exports.ColorType.RGBA:
@@ -3927,6 +3962,14 @@
39273962
case exports.ColorType.LCH:
39283963
return lch2RgbToken(token);
39293964
case exports.ColorType.COLOR:
3965+
case exports.ColorType.XYZ:
3966+
case exports.ColorType.SRGB:
3967+
case exports.ColorType.REC2020:
3968+
case exports.ColorType.XYZ_D50:
3969+
case exports.ColorType.A98_RGB:
3970+
case exports.ColorType.DISPLAY_P3:
3971+
case exports.ColorType.SRGB_LINEAR:
3972+
case exports.ColorType.PROPHOTO_RGB:
39303973
return color2RgbToken(token);
39313974
}
39323975
}
@@ -3952,6 +3995,14 @@
39523995
case exports.ColorType.OKLCH:
39533996
return oklch2labToken(token);
39543997
case exports.ColorType.COLOR:
3998+
case exports.ColorType.XYZ:
3999+
case exports.ColorType.SRGB:
4000+
case exports.ColorType.REC2020:
4001+
case exports.ColorType.XYZ_D50:
4002+
case exports.ColorType.A98_RGB:
4003+
case exports.ColorType.DISPLAY_P3:
4004+
case exports.ColorType.SRGB_LINEAR:
4005+
case exports.ColorType.PROPHOTO_RGB:
39554006
return color2labToken(token);
39564007
}
39574008
}
@@ -3977,6 +4028,14 @@
39774028
case exports.ColorType.OKLCH:
39784029
return oklch2lchToken(token);
39794030
case exports.ColorType.COLOR:
4031+
case exports.ColorType.XYZ:
4032+
case exports.ColorType.SRGB:
4033+
case exports.ColorType.REC2020:
4034+
case exports.ColorType.XYZ_D50:
4035+
case exports.ColorType.A98_RGB:
4036+
case exports.ColorType.DISPLAY_P3:
4037+
case exports.ColorType.SRGB_LINEAR:
4038+
case exports.ColorType.PROPHOTO_RGB:
39804039
return color2lchToken(token);
39814040
}
39824041
}
@@ -4002,6 +4061,14 @@
40024061
case exports.ColorType.OKLCH:
40034062
return oklch2oklabToken(token);
40044063
case exports.ColorType.COLOR:
4064+
case exports.ColorType.XYZ:
4065+
case exports.ColorType.SRGB:
4066+
case exports.ColorType.REC2020:
4067+
case exports.ColorType.XYZ_D50:
4068+
case exports.ColorType.A98_RGB:
4069+
case exports.ColorType.DISPLAY_P3:
4070+
case exports.ColorType.SRGB_LINEAR:
4071+
case exports.ColorType.PROPHOTO_RGB:
40054072
return color2oklabToken(token);
40064073
}
40074074
}
@@ -4027,11 +4094,18 @@
40274094
case exports.ColorType.LCH:
40284095
return lch2oklchToken(token);
40294096
case exports.ColorType.COLOR:
4097+
case exports.ColorType.XYZ:
4098+
case exports.ColorType.SRGB:
4099+
case exports.ColorType.REC2020:
4100+
case exports.ColorType.XYZ_D50:
4101+
case exports.ColorType.A98_RGB:
4102+
case exports.ColorType.DISPLAY_P3:
4103+
case exports.ColorType.SRGB_LINEAR:
4104+
case exports.ColorType.PROPHOTO_RGB:
40304105
return color2oklchToken(token);
40314106
}
40324107
}
40334108
else if (colorFuncColorSpace.includes(exports.ColorType[to].toLowerCase().replaceAll('_', '-').toLowerCase().replaceAll('_', '-'))) {
4034-
console.error(exports.ColorType[token.kin]);
40354109
switch (token.kin) {
40364110
case exports.ColorType.HEX:
40374111
case exports.ColorType.LIT:
@@ -4136,7 +4210,6 @@
41364210
if (values == null) {
41374211
return null;
41384212
}
4139-
console.error({ srgb: values });
41404213
return values2colortoken(values, to);
41414214
}
41424215
function srgb2srgbcolorspace(val, to) {
@@ -4237,7 +4310,10 @@
42374310
{ typ: exports.EnumToken.NumberTokenType, val: String(values[2]) },
42384311
];
42394312
if (values.length == 4) {
4240-
chi.push({ typ: exports.EnumToken.PercentageTokenType, val: (values[3] * 100).toFixed() });
4313+
chi.push({ typ: exports.EnumToken.LiteralTokenType, val: "/" }, {
4314+
typ: exports.EnumToken.PercentageTokenType,
4315+
val: (values[3] * 100).toFixed()
4316+
});
42414317
}
42424318
const colorSpace = exports.ColorType[to].toLowerCase().replaceAll('_', '-');
42434319
return colorFuncColorSpace.includes(colorSpace) ? {

0 commit comments

Comments
 (0)