color-bits 1.1.1 → 1.2.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.
Files changed (83) hide show
  1. package/.claude/settings.local.json +9 -0
  2. package/README.md +29 -13
  3. package/benchmarks/compare-oklab.ts +44 -0
  4. package/benchmarks/compare-srgb.ts +59 -0
  5. package/benchmarks/compare.ts +46 -0
  6. package/benchmarks/parse.ts +41 -0
  7. package/build/conversion/channels.d.ts +61 -0
  8. package/build/conversion/channels.js +353 -0
  9. package/build/conversion/channels.js.map +1 -0
  10. package/build/{convert.d.ts → conversion/color-spaces.d.ts} +25 -23
  11. package/build/conversion/color-spaces.js +263 -0
  12. package/build/conversion/color-spaces.js.map +1 -0
  13. package/build/core/bits.d.ts +28 -0
  14. package/build/{core.js → core/bits.js} +25 -26
  15. package/build/core/bits.js.map +1 -0
  16. package/build/core/bytes.d.ts +5 -0
  17. package/build/core/bytes.js +12 -0
  18. package/build/core/bytes.js.map +1 -0
  19. package/build/css.d.ts +1 -0
  20. package/build/css.js +18 -0
  21. package/build/css.js.map +1 -0
  22. package/build/formatting/index.d.ts +27 -0
  23. package/build/{format.js → formatting/index.js} +13 -67
  24. package/build/formatting/index.js.map +1 -0
  25. package/build/index.d.ts +6 -4
  26. package/build/index.js +6 -4
  27. package/build/index.js.map +1 -1
  28. package/build/namedColors.d.ts +1 -0
  29. package/build/namedColors.js +18 -0
  30. package/build/namedColors.js.map +1 -0
  31. package/build/operations/adjust.d.ts +19 -0
  32. package/build/operations/adjust.js +40 -0
  33. package/build/operations/adjust.js.map +1 -0
  34. package/build/operations/blend.d.ts +9 -0
  35. package/build/operations/blend.js +19 -0
  36. package/build/operations/blend.js.map +1 -0
  37. package/build/operations/color-mix.d.ts +20 -0
  38. package/build/operations/color-mix.js +144 -0
  39. package/build/operations/color-mix.js.map +1 -0
  40. package/build/operations/luminance.d.ts +7 -0
  41. package/build/operations/luminance.js +20 -0
  42. package/build/operations/luminance.js.map +1 -0
  43. package/build/parsing/calc.d.ts +8 -0
  44. package/build/parsing/calc.js +205 -0
  45. package/build/parsing/calc.js.map +1 -0
  46. package/build/parsing/color-mix.d.ts +8 -0
  47. package/build/parsing/color-mix.js +70 -0
  48. package/build/parsing/color-mix.js.map +1 -0
  49. package/build/parsing/css.d.ts +23 -0
  50. package/build/parsing/css.js +115 -0
  51. package/build/parsing/css.js.map +1 -0
  52. package/build/parsing/fast.d.ts +19 -0
  53. package/build/parsing/fast.js +184 -0
  54. package/build/parsing/fast.js.map +1 -0
  55. package/build/parsing/named-colors.d.ts +12 -0
  56. package/build/parsing/named-colors.js +68 -0
  57. package/build/parsing/named-colors.js.map +1 -0
  58. package/build/parsing/relative.d.ts +9 -0
  59. package/build/parsing/relative.js +158 -0
  60. package/build/parsing/relative.js.map +1 -0
  61. package/build/parsing/tokenizer.d.ts +16 -0
  62. package/build/parsing/tokenizer.js +78 -0
  63. package/build/parsing/tokenizer.js.map +1 -0
  64. package/build/parsing/values.d.ts +41 -0
  65. package/build/parsing/values.js +139 -0
  66. package/build/parsing/values.js.map +1 -0
  67. package/package.json +15 -3
  68. package/benchmarks/index.ts +0 -35
  69. package/build/bit.d.ts +0 -3
  70. package/build/bit.js +0 -29
  71. package/build/bit.js.map +0 -1
  72. package/build/convert.js +0 -347
  73. package/build/convert.js.map +0 -1
  74. package/build/core.d.ts +0 -27
  75. package/build/core.js.map +0 -1
  76. package/build/format.d.ts +0 -27
  77. package/build/format.js.map +0 -1
  78. package/build/functions.d.ts +0 -33
  79. package/build/functions.js +0 -95
  80. package/build/functions.js.map +0 -1
  81. package/build/parse.d.ts +0 -17
  82. package/build/parse.js +0 -392
  83. package/build/parse.js.map +0 -1
@@ -0,0 +1,263 @@
1
+ "use strict";
2
+ // Copyright 2022 The Chromium Authors. All rights reserved.
3
+ // Use of this source code is governed by a BSD-style license that can be
4
+ // found in the LICENSE file.
5
+ //
6
+ // Source: https://github.com/ChromeDevTools/devtools-frontend/blob/c51201e6ee70370f7f1ac8a1a49dca7d4561aeaa/front_end/core/common/ColorConverter.ts
7
+ // License: https://github.com/ChromeDevTools/devtools-frontend/blob/c51201e6ee70370f7f1ac8a1a49dca7d4561aeaa/LICENSE
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.labToXyzd50 = labToXyzd50;
10
+ exports.xyzd50ToLab = xyzd50ToLab;
11
+ exports.oklabToXyzd65 = oklabToXyzd65;
12
+ exports.xyzd65ToOklab = xyzd65ToOklab;
13
+ exports.lchToLab = lchToLab;
14
+ exports.labToLch = labToLch;
15
+ exports.displayP3ToXyzd50 = displayP3ToXyzd50;
16
+ exports.xyzd50ToDisplayP3 = xyzd50ToDisplayP3;
17
+ exports.proPhotoToXyzd50 = proPhotoToXyzd50;
18
+ exports.xyzd50ToProPhoto = xyzd50ToProPhoto;
19
+ exports.adobeRGBToXyzd50 = adobeRGBToXyzd50;
20
+ exports.xyzd50ToAdobeRGB = xyzd50ToAdobeRGB;
21
+ exports.rec2020ToXyzd50 = rec2020ToXyzd50;
22
+ exports.xyzd50ToRec2020 = xyzd50ToRec2020;
23
+ exports.xyzd50ToD65 = xyzd50ToD65;
24
+ exports.xyzd65ToD50 = xyzd65ToD50;
25
+ exports.xyzd65TosRGBLinear = xyzd65TosRGBLinear;
26
+ exports.xyzd50TosRGBLinear = xyzd50TosRGBLinear;
27
+ exports.srgbLinearToXyzd50 = srgbLinearToXyzd50;
28
+ exports.srgbToXyzd50 = srgbToXyzd50;
29
+ exports.xyzd50ToSrgb = xyzd50ToSrgb;
30
+ exports.oklchToXyzd50 = oklchToXyzd50;
31
+ exports.xyzd50ToOklch = xyzd50ToOklch;
32
+ /**
33
+ * Implementation of this module and all the tests are heavily influenced by
34
+ * https://source.chromium.org/chromium/chromium/src/+/main:ui/gfx/color_conversions.cc
35
+ */
36
+ // https://en.wikipedia.org/wiki/CIELAB_color_space#Converting_between_CIELAB_and_CIEXYZ_coordinates
37
+ const D50_X = 0.9642;
38
+ const D50_Y = 1.0;
39
+ const D50_Z = 0.8251;
40
+ function mat3(m00, m01, m02, m10, m11, m12, m20, m21, m22) {
41
+ return Float64Array.of(m00, m01, m02, m10, m11, m12, m20, m21, m22);
42
+ }
43
+ function transform(matrix, c1, c2, c3, out) {
44
+ out[0] = matrix[0] * c1 + matrix[1] * c2 + matrix[2] * c3;
45
+ out[1] = matrix[3] * c1 + matrix[4] * c2 + matrix[5] * c3;
46
+ out[2] = matrix[6] * c1 + matrix[7] * c2 + matrix[8] * c3;
47
+ return out;
48
+ }
49
+ // A transfer function mapping encoded values to linear values,
50
+ // represented by this 7-parameter piecewise function:
51
+ //
52
+ // linear = sign(encoded) * (c*|encoded| + f) , 0 <= |encoded| < d
53
+ // = sign(encoded) * ((a*|encoded| + b)^g + e), d <= |encoded|
54
+ //
55
+ // (A simple gamma transfer function sets g to gamma and a to 1.)
56
+ class TransferFunction {
57
+ g;
58
+ a;
59
+ b;
60
+ c;
61
+ d;
62
+ e;
63
+ f;
64
+ constructor(g, a, b = 0, c = 0, d = 0, e = 0, f = 0) {
65
+ this.g = g;
66
+ this.a = a;
67
+ this.b = b;
68
+ this.c = c;
69
+ this.d = d;
70
+ this.e = e;
71
+ this.f = f;
72
+ }
73
+ eval(val) {
74
+ const sign = val < 0 ? -1.0 : 1.0;
75
+ const abs = val * sign;
76
+ // 0 <= |encoded| < d path
77
+ if (abs < this.d) {
78
+ return sign * (this.c * abs + this.f);
79
+ }
80
+ // d <= |encoded| path
81
+ return sign * (Math.pow(this.a * abs + this.b, this.g) + this.e);
82
+ }
83
+ }
84
+ const NAMED_TRANSFER_FN = {
85
+ sRGB: new TransferFunction(2.4, (1 / 1.055), (0.055 / 1.055), (1 / 12.92), 0.04045, 0.0, 0.0),
86
+ sRGB_INVERSE: new TransferFunction(0.416667, 1.13728, -0, 12.92, 0.0031308, -0.0549698, -0),
87
+ proPhotoRGB: new TransferFunction(1.8, 1),
88
+ proPhotoRGB_INVERSE: new TransferFunction(0.555556, 1, -0, 0, 0, 0, 0),
89
+ k2Dot2: new TransferFunction(2.2, 1.0),
90
+ k2Dot2_INVERSE: new TransferFunction(0.454545, 1),
91
+ rec2020: new TransferFunction(2.22222, 0.909672, 0.0903276, 0.222222, 0.0812429, 0, 0),
92
+ rec2020_INVERSE: new TransferFunction(0.45, 1.23439, -0, 4.5, 0.018054, -0.0993195, -0),
93
+ };
94
+ const NAMED_GAMUTS = {
95
+ sRGB: mat3(0.436065674, 0.385147095, 0.143066406, 0.222488403, 0.716873169, 0.060607910, 0.013916016, 0.097076416, 0.714096069),
96
+ sRGB_INVERSE: mat3(3.134112151374599, -1.6173924597114966, -0.4906334036481285, -0.9787872938826594, 1.9162795854799963, 0.0334547139520088, 0.07198304248352326, -0.2289858493321844, 1.4053851325241447),
97
+ displayP3: mat3(0.515102, 0.291965, 0.157153, 0.241182, 0.692236, 0.0665819, -0.00104941, 0.0418818, 0.784378),
98
+ displayP3_INVERSE: mat3(2.404045155982687, -0.9898986932663839, -0.3976317191366333, -0.8422283799266768, 1.7988505115115485, 0.016048170293157416, 0.04818705979712955, -0.09737385156228891, 1.2735066448052303),
99
+ adobeRGB: mat3(0.60974, 0.20528, 0.14919, 0.31111, 0.62567, 0.06322, 0.01947, 0.06087, 0.74457),
100
+ adobeRGB_INVERSE: mat3(1.9625385510109137, -0.6106892546501431, -0.3413827467482388, -0.9787580455521, 1.9161624707082339, 0.03341676594241408, 0.028696263137883395, -0.1406807819331586, 1.349252109991369),
101
+ rec2020: mat3(0.673459, 0.165661, 0.125100, 0.279033, 0.675338, 0.0456288, -0.00193139, 0.0299794, 0.797162),
102
+ rec2020_INVERSE: mat3(1.647275201661012, -0.3936024771460771, -0.23598028884792507, -0.6826176165196962, 1.647617775014935, 0.01281626807852422, 0.029662725298529837, -0.06291668721366285, 1.2533964313435522),
103
+ xyz: mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0),
104
+ };
105
+ function degToRad(deg) {
106
+ return deg * (Math.PI / 180);
107
+ }
108
+ function radToDeg(rad) {
109
+ return rad * (180 / Math.PI);
110
+ }
111
+ function applyTransferFnsInto(fn, input) {
112
+ input[0] = fn.eval(input[0]);
113
+ input[1] = fn.eval(input[1]);
114
+ input[2] = fn.eval(input[2]);
115
+ return input;
116
+ }
117
+ const OKLAB_TO_LMS_MATRIX = mat3(0.99999999845051981432, 0.39633779217376785678, 0.21580375806075880339, 1.0000000088817607767, -0.1055613423236563494, -0.063854174771705903402, 1.0000000546724109177, -0.089484182094965759684, -1.2914855378640917399);
118
+ // Inverse of the OKLAB_TO_LMS_MATRIX
119
+ const LMS_TO_OKLAB_MATRIX = mat3(0.2104542553, 0.7936177849999999, -0.0040720468, 1.9779984951000003, -2.4285922049999997, 0.4505937099000001, 0.025904037099999982, 0.7827717662, -0.8086757660000001);
120
+ const XYZ_TO_LMS_MATRIX = mat3(0.8190224432164319, 0.3619062562801221, -0.12887378261216414, 0.0329836671980271, 0.9292868468965546, 0.03614466816999844, 0.048177199566046255, 0.26423952494422764, 0.6335478258136937);
121
+ // Inverse of XYZ_TO_LMS_MATRIX
122
+ const LMS_TO_XYZ_MATRIX = mat3(1.226879873374156, -0.5578149965554814, 0.2813910501772159, -0.040575762624313734, 1.1122868293970596, -0.07171106666151703, -0.07637294974672144, -0.4214933239627915, 1.586924024427242);
123
+ const PRO_PHOTO_TO_XYZD50_MATRIX = mat3(0.7976700747153241, 0.13519395152800417, 0.03135596341127167, 0.28803902352472205, 0.7118744007923554, 0.00008661179538844252, 2.739876695467402e-7, -0.0000014405226518969991, 0.825211112593861);
124
+ // Inverse of PRO_PHOTO_TO_XYZD50_MATRIX
125
+ const XYZD50_TO_PRO_PHOTO_MATRIX = mat3(1.3459533710138858, -0.25561367037652133, -0.051116041522131374, -0.544600415668951, 1.5081687311475767, 0.020535163968720935, -0.0000013975622054109725, 0.000002717590904589903, 1.2118111696814942);
126
+ const XYZD65_TO_XYZD50_MATRIX = mat3(1.0478573189120088, 0.022907374491829943, -0.050162247377152525, 0.029570500050499514, 0.9904755577034089, -0.017061518194840468, -0.00924047197558879, 0.015052921526981566, 0.7519708530777581);
127
+ // Inverse of XYZD65_TO_XYZD50_MATRIX
128
+ const XYZD50_TO_XYZD65_MATRIX = mat3(0.9555366447632887, -0.02306009252137888, 0.06321844147263304, -0.028315378228764922, 1.009951351591575, 0.021026001591792402, 0.012308773293784308, -0.02050053471777469, 1.3301947294775631);
129
+ const XYZD65_TO_SRGB_MATRIX = mat3(3.2408089365140573, -1.5375788839307314, -0.4985609572551541, -0.9692732213205414, 1.876110235238969, 0.041560501141251774, 0.05567030990267439, -0.2040007921971802, 1.0571046720577026);
130
+ // PERF: fusing these matrix chains at load (e.g. LMS->linear-sRGB, or
131
+ // gamut ∘ sRGB_INVERSE for color() endpoints) collapses each conversion to one
132
+ // matrix and benched ~30% faster on oklab — tried and reverted. Its re-rounding
133
+ // shifts achromatic a/b (e.g. white->oklab) by ~1e-16 absolute, which is
134
+ // thousands of ulps against the near-zero result, breaking bit-parity with the
135
+ // Chromium XYZ-hub chain that the float-domain API commits to. Packed 8-bit
136
+ // output is unaffected; revisit only if that parity guarantee is dropped.
137
+ function labInverseTransferFunction(t) {
138
+ const delta = (24.0 / 116.0);
139
+ if (t <= delta) {
140
+ return (108.0 / 841.0) * (t - (16.0 / 116.0));
141
+ }
142
+ return t * t * t;
143
+ }
144
+ function labTransferFunction(t) {
145
+ const deltaLimit = (24.0 / 116.0) * (24.0 / 116.0) * (24.0 / 116.0);
146
+ if (t <= deltaLimit) {
147
+ return (841.0 / 108.0) * t + (16.0 / 116.0);
148
+ }
149
+ return Math.pow(t, 1.0 / 3.0);
150
+ }
151
+ function labToXyzd50(l, a, b, out) {
152
+ const y = (l + 16.0) / 116.0;
153
+ const x = y + a / 500.0;
154
+ const z = y - b / 200.0;
155
+ out[0] = labInverseTransferFunction(x) * D50_X;
156
+ out[1] = labInverseTransferFunction(y) * D50_Y;
157
+ out[2] = labInverseTransferFunction(z) * D50_Z;
158
+ return out;
159
+ }
160
+ function xyzd50ToLab(x, y, z, out) {
161
+ x = labTransferFunction(x / D50_X);
162
+ y = labTransferFunction(y / D50_Y);
163
+ z = labTransferFunction(z / D50_Z);
164
+ out[0] = 116.0 * y - 16.0;
165
+ out[1] = 500.0 * (x - y);
166
+ out[2] = 200.0 * (y - z);
167
+ return out;
168
+ }
169
+ function oklabToXyzd65(l, a, b, out) {
170
+ transform(OKLAB_TO_LMS_MATRIX, l, a, b, out);
171
+ const lms0 = out[0];
172
+ const lms1 = out[1];
173
+ const lms2 = out[2];
174
+ return transform(LMS_TO_XYZ_MATRIX, lms0 * lms0 * lms0, lms1 * lms1 * lms1, lms2 * lms2 * lms2, out);
175
+ }
176
+ function xyzd65ToOklab(x, y, z, out) {
177
+ transform(XYZ_TO_LMS_MATRIX, x, y, z, out);
178
+ return transform(LMS_TO_OKLAB_MATRIX, Math.pow(out[0], 1.0 / 3.0), Math.pow(out[1], 1.0 / 3.0), Math.pow(out[2], 1.0 / 3.0), out);
179
+ }
180
+ function lchToLab(l, c, h, out) {
181
+ out[0] = l;
182
+ if (h === undefined) {
183
+ out[1] = 0;
184
+ out[2] = 0;
185
+ }
186
+ else {
187
+ out[1] = c * Math.cos(degToRad(h));
188
+ out[2] = c * Math.sin(degToRad(h));
189
+ }
190
+ return out;
191
+ }
192
+ function labToLch(l, a, b, out) {
193
+ out[0] = l;
194
+ out[1] = Math.sqrt(a * a + b * b);
195
+ out[2] = radToDeg(Math.atan2(b, a));
196
+ return out;
197
+ }
198
+ function displayP3ToXyzd50(r, g, b, out) {
199
+ const fn = NAMED_TRANSFER_FN.sRGB;
200
+ return transform(NAMED_GAMUTS.displayP3, fn.eval(r), fn.eval(g), fn.eval(b), out);
201
+ }
202
+ function xyzd50ToDisplayP3(x, y, z, out) {
203
+ transform(NAMED_GAMUTS.displayP3_INVERSE, x, y, z, out);
204
+ return applyTransferFnsInto(NAMED_TRANSFER_FN.sRGB_INVERSE, out);
205
+ }
206
+ function proPhotoToXyzd50(r, g, b, out) {
207
+ const fn = NAMED_TRANSFER_FN.proPhotoRGB;
208
+ return transform(PRO_PHOTO_TO_XYZD50_MATRIX, fn.eval(r), fn.eval(g), fn.eval(b), out);
209
+ }
210
+ function xyzd50ToProPhoto(x, y, z, out) {
211
+ transform(XYZD50_TO_PRO_PHOTO_MATRIX, x, y, z, out);
212
+ return applyTransferFnsInto(NAMED_TRANSFER_FN.proPhotoRGB_INVERSE, out);
213
+ }
214
+ function adobeRGBToXyzd50(r, g, b, out) {
215
+ const fn = NAMED_TRANSFER_FN.k2Dot2;
216
+ return transform(NAMED_GAMUTS.adobeRGB, fn.eval(r), fn.eval(g), fn.eval(b), out);
217
+ }
218
+ function xyzd50ToAdobeRGB(x, y, z, out) {
219
+ transform(NAMED_GAMUTS.adobeRGB_INVERSE, x, y, z, out);
220
+ return applyTransferFnsInto(NAMED_TRANSFER_FN.k2Dot2_INVERSE, out);
221
+ }
222
+ function rec2020ToXyzd50(r, g, b, out) {
223
+ const fn = NAMED_TRANSFER_FN.rec2020;
224
+ return transform(NAMED_GAMUTS.rec2020, fn.eval(r), fn.eval(g), fn.eval(b), out);
225
+ }
226
+ function xyzd50ToRec2020(x, y, z, out) {
227
+ transform(NAMED_GAMUTS.rec2020_INVERSE, x, y, z, out);
228
+ return applyTransferFnsInto(NAMED_TRANSFER_FN.rec2020_INVERSE, out);
229
+ }
230
+ function xyzd50ToD65(x, y, z, out) {
231
+ return transform(XYZD50_TO_XYZD65_MATRIX, x, y, z, out);
232
+ }
233
+ function xyzd65ToD50(x, y, z, out) {
234
+ return transform(XYZD65_TO_XYZD50_MATRIX, x, y, z, out);
235
+ }
236
+ function xyzd65TosRGBLinear(x, y, z, out) {
237
+ return transform(XYZD65_TO_SRGB_MATRIX, x, y, z, out);
238
+ }
239
+ function xyzd50TosRGBLinear(x, y, z, out) {
240
+ return transform(NAMED_GAMUTS.sRGB_INVERSE, x, y, z, out);
241
+ }
242
+ function srgbLinearToXyzd50(r, g, b, out) {
243
+ return transform(NAMED_GAMUTS.sRGB, r, g, b, out);
244
+ }
245
+ function srgbToXyzd50(r, g, b, out) {
246
+ const fn = NAMED_TRANSFER_FN.sRGB;
247
+ return transform(NAMED_GAMUTS.sRGB, fn.eval(r), fn.eval(g), fn.eval(b), out);
248
+ }
249
+ function xyzd50ToSrgb(x, y, z, out) {
250
+ transform(NAMED_GAMUTS.sRGB_INVERSE, x, y, z, out);
251
+ return applyTransferFnsInto(NAMED_TRANSFER_FN.sRGB_INVERSE, out);
252
+ }
253
+ function oklchToXyzd50(l, c, h, out) {
254
+ lchToLab(l, c, h, out);
255
+ oklabToXyzd65(out[0], out[1], out[2], out);
256
+ return xyzd65ToD50(out[0], out[1], out[2], out);
257
+ }
258
+ function xyzd50ToOklch(x, y, z, out) {
259
+ xyzd50ToD65(x, y, z, out);
260
+ xyzd65ToOklab(out[0], out[1], out[2], out);
261
+ return labToLch(out[0], out[1], out[2], out);
262
+ }
263
+ //# sourceMappingURL=color-spaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"color-spaces.js","sourceRoot":"","sources":["../../src/conversion/color-spaces.ts"],"names":[],"mappings":";AAAA,4DAA4D;AAC5D,yEAAyE;AACzE,6BAA6B;AAC7B,EAAE;AACF,oJAAoJ;AACpJ,qHAAqH;;AA4OrH,kCAUC;AAED,kCAUC;AAED,sCAQC;AAED,sCAUC;AAED,4BAYC;AAED,4BAMC;AAED,8CAGC;AAED,8CAGC;AAED,4CAGC;AAED,4CAGC;AAED,4CAGC;AAED,4CAGC;AAED,0CAGC;AAED,0CAGC;AAED,kCAEC;AAED,kCAEC;AAED,gDAEC;AAED,gDAEC;AAED,gDAEC;AAED,oCAGC;AAED,oCAGC;AAED,sCAIC;AAED,sCAIC;AA9XD;;;GAGG;AAEH,oGAAoG;AACpG,MAAM,KAAK,GAAG,MAAM,CAAC;AACrB,MAAM,KAAK,GAAG,GAAG,CAAC;AAClB,MAAM,KAAK,GAAG,MAAM,CAAC;AAWrB,SAAS,IAAI,CACX,GAAW,EAAE,GAAW,EAAE,GAAW,EACrC,GAAW,EAAE,GAAW,EAAE,GAAW,EACrC,GAAW,EAAE,GAAW,EAAE,GAAW;IAErC,OAAO,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,SAAS,CAAC,MAAiB,EAAE,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,GAAY;IACpF,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IAC1D,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IAC1D,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IAE1D,OAAO,GAAG,CAAC;AACb,CAAC;AAED,+DAA+D;AAC/D,sDAAsD;AACtD,EAAE;AACF,2EAA2E;AAC3E,uEAAuE;AACvE,EAAE;AACF,iEAAiE;AACjE,MAAM,gBAAgB;IACpB,CAAC,CAAS;IACV,CAAC,CAAS;IACV,CAAC,CAAS;IACV,CAAC,CAAS;IACV,CAAC,CAAS;IACV,CAAC,CAAS;IACV,CAAC,CAAS;IAEV,YAAY,CAAS,EAAE,CAAS,EAAE,IAAY,CAAC,EAAE,IAAY,CAAC,EAAE,IAAY,CAAC,EAAE,IAAY,CAAC,EAAE,IAAY,CAAC;QACzG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACb,CAAC;IAED,IAAI,CAAC,GAAW;QACd,MAAM,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAClC,MAAM,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC;QAEvB,0BAA0B;QAC1B,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC;YACjB,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACxC,CAAC;QAED,sBAAsB;QACtB,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACnE,CAAC;CACF;AAED,MAAM,iBAAiB,GAAG;IACxB,IAAI,EAAE,IAAI,gBAAgB,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC;IAC7F,YAAY,EAAE,IAAI,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IAE3F,WAAW,EAAE,IAAI,gBAAgB,CAAC,GAAG,EAAE,CAAC,CAAC;IACzC,mBAAmB,EAAE,IAAI,gBAAgB,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAEtE,MAAM,EAAE,IAAI,gBAAgB,CAAC,GAAG,EAAE,GAAG,CAAC;IACtC,cAAc,EAAE,IAAI,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC;IAEjD,OAAO,EAAE,IAAI,gBAAgB,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;IACtF,eAAe,EAAE,IAAI,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;CACxF,CAAC;AAEF,MAAM,YAAY,GAAG;IACnB,IAAI,EAAE,IAAI,CACR,WAAW,EAAE,WAAW,EAAE,WAAW,EACrC,WAAW,EAAE,WAAW,EAAE,WAAW,EACrC,WAAW,EAAE,WAAW,EAAE,WAAW,CACtC;IACD,YAAY,EAAE,IAAI,CAChB,iBAAiB,EAAE,CAAC,kBAAkB,EAAE,CAAC,kBAAkB,EAC3D,CAAC,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,EAC3D,mBAAmB,EAAE,CAAC,kBAAkB,EAAE,kBAAkB,CAC7D;IACD,SAAS,EAAE,IAAI,CACb,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAC5B,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAC7B,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,CACjC;IACD,iBAAiB,EAAE,IAAI,CACrB,iBAAiB,EAAE,CAAC,kBAAkB,EAAE,CAAC,kBAAkB,EAC3D,CAAC,kBAAkB,EAAE,kBAAkB,EAAE,oBAAoB,EAC7D,mBAAmB,EAAE,CAAC,mBAAmB,EAAE,kBAAkB,CAC9D;IACD,QAAQ,EAAE,IAAI,CACZ,OAAO,EAAE,OAAO,EAAE,OAAO,EACzB,OAAO,EAAE,OAAO,EAAE,OAAO,EACzB,OAAO,EAAE,OAAO,EAAE,OAAO,CAC1B;IACD,gBAAgB,EAAE,IAAI,CACpB,kBAAkB,EAAE,CAAC,kBAAkB,EAAE,CAAC,kBAAkB,EAC5D,CAAC,eAAe,EAAE,kBAAkB,EAAE,mBAAmB,EACzD,oBAAoB,EAAE,CAAC,kBAAkB,EAAE,iBAAiB,CAC7D;IACD,OAAO,EAAE,IAAI,CACX,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAC5B,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAC7B,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,CACjC;IACD,eAAe,EAAE,IAAI,CACnB,iBAAiB,EAAE,CAAC,kBAAkB,EAAE,CAAC,mBAAmB,EAC5D,CAAC,kBAAkB,EAAE,iBAAiB,EAAE,mBAAmB,EAC3D,oBAAoB,EAAE,CAAC,mBAAmB,EAAE,kBAAkB,CAC/D;IACD,GAAG,EAAE,IAAI,CACP,GAAG,EAAE,GAAG,EAAE,GAAG,EACb,GAAG,EAAE,GAAG,EAAE,GAAG,EACb,GAAG,EAAE,GAAG,EAAE,GAAG,CACd;CACF,CAAC;AAEF,SAAS,QAAQ,CAAC,GAAW;IAC3B,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,QAAQ,CAAC,GAAW;IAC3B,OAAO,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,oBAAoB,CAAC,EAAoB,EAAE,KAAc;IAChE,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7B,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7B,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7B,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,mBAAmB,GAAG,IAAI,CAC9B,sBAAsB,EAAE,sBAAsB,EAAE,sBAAsB,EACtE,qBAAqB,EAAE,CAAC,qBAAqB,EAAE,CAAC,uBAAuB,EACvE,qBAAqB,EAAE,CAAC,uBAAuB,EAAE,CAAC,qBAAqB,CACxE,CAAC;AAEF,qCAAqC;AACrC,MAAM,mBAAmB,GAAG,IAAI,CAC9B,YAAY,EAAE,kBAAkB,EAAE,CAAC,YAAY,EAC/C,kBAAkB,EAAE,CAAC,kBAAkB,EAAE,kBAAkB,EAC3D,oBAAoB,EAAE,YAAY,EAAE,CAAC,kBAAkB,CACxD,CAAC;AAEF,MAAM,iBAAiB,GAAG,IAAI,CAC5B,kBAAkB,EAAE,kBAAkB,EAAE,CAAC,mBAAmB,EAC5D,kBAAkB,EAAE,kBAAkB,EAAE,mBAAmB,EAC3D,oBAAoB,EAAE,mBAAmB,EAAE,kBAAkB,CAC9D,CAAC;AACF,+BAA+B;AAC/B,MAAM,iBAAiB,GAAG,IAAI,CAC5B,iBAAiB,EAAE,CAAC,kBAAkB,EAAE,kBAAkB,EAC1D,CAAC,oBAAoB,EAAE,kBAAkB,EAAE,CAAC,mBAAmB,EAC/D,CAAC,mBAAmB,EAAE,CAAC,kBAAkB,EAAE,iBAAiB,CAC7D,CAAC;AAEF,MAAM,0BAA0B,GAAG,IAAI,CACrC,kBAAkB,EAAE,mBAAmB,EAAE,mBAAmB,EAC5D,mBAAmB,EAAE,kBAAkB,EAAE,sBAAsB,EAC/D,oBAAoB,EAAE,CAAC,wBAAwB,EAAE,iBAAiB,CACnE,CAAC;AACF,wCAAwC;AACxC,MAAM,0BAA0B,GAAG,IAAI,CACrC,kBAAkB,EAAE,CAAC,mBAAmB,EAAE,CAAC,oBAAoB,EAC/D,CAAC,iBAAiB,EAAE,kBAAkB,EAAE,oBAAoB,EAC5D,CAAC,wBAAwB,EAAE,uBAAuB,EAAE,kBAAkB,CACvE,CAAC;AAEF,MAAM,uBAAuB,GAAG,IAAI,CAClC,kBAAkB,EAAE,oBAAoB,EAAE,CAAC,oBAAoB,EAC/D,oBAAoB,EAAE,kBAAkB,EAAE,CAAC,oBAAoB,EAC/D,CAAC,mBAAmB,EAAE,oBAAoB,EAAE,kBAAkB,CAC/D,CAAC;AACF,qCAAqC;AACrC,MAAM,uBAAuB,GAAG,IAAI,CAClC,kBAAkB,EAAE,CAAC,mBAAmB,EAAE,mBAAmB,EAC7D,CAAC,oBAAoB,EAAE,iBAAiB,EAAE,oBAAoB,EAC9D,oBAAoB,EAAE,CAAC,mBAAmB,EAAE,kBAAkB,CAC/D,CAAC;AAEF,MAAM,qBAAqB,GAAG,IAAI,CAChC,kBAAkB,EAAE,CAAC,kBAAkB,EAAE,CAAC,kBAAkB,EAC5D,CAAC,kBAAkB,EAAE,iBAAiB,EAAE,oBAAoB,EAC5D,mBAAmB,EAAE,CAAC,kBAAkB,EAAE,kBAAkB,CAC7D,CAAC;AAEF,sEAAsE;AACtE,+EAA+E;AAC/E,gFAAgF;AAChF,yEAAyE;AACzE,+EAA+E;AAC/E,4EAA4E;AAC5E,0EAA0E;AAE1E,SAAS,0BAA0B,CAAC,CAAS;IAC3C,MAAM,KAAK,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC;IAE7B,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC;AAED,SAAS,mBAAmB,CAAC,CAAS;IACpC,MAAM,UAAU,GAAW,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC;IAE5E,IAAI,CAAC,IAAI,UAAU,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;AAChC,CAAC;AAED,SAAgB,WAAW,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,GAAY;IACvE,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC;IAC7B,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACxB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAExB,GAAG,CAAC,CAAC,CAAC,GAAG,0BAA0B,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IAC/C,GAAG,CAAC,CAAC,CAAC,GAAG,0BAA0B,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IAC/C,GAAG,CAAC,CAAC,CAAC,GAAG,0BAA0B,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IAE/C,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAgB,WAAW,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,GAAY;IACvE,CAAC,GAAG,mBAAmB,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;IACnC,CAAC,GAAG,mBAAmB,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;IACnC,CAAC,GAAG,mBAAmB,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;IAEnC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC;IAC1B,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAEzB,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAgB,aAAa,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,GAAY;IACzE,SAAS,CAAC,mBAAmB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IAE7C,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IACpB,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IACpB,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IAEpB,OAAO,SAAS,CAAC,iBAAiB,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC;AACvG,CAAC;AAED,SAAgB,aAAa,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,GAAY;IACzE,SAAS,CAAC,iBAAiB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IAE3C,OAAO,SAAS,CACd,mBAAmB,EACnB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,EAC3B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,EAC3B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,EAC3B,GAAG,CACJ,CAAC;AACJ,CAAC;AAED,SAAgB,QAAQ,CAAC,CAAS,EAAE,CAAS,EAAE,CAAmB,EAAE,GAAY;IAC9E,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAEX,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;QACpB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACX,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACb,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAgB,QAAQ,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,GAAY;IACpE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACX,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAClC,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAEpC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAgB,iBAAiB,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,GAAY;IAC7E,MAAM,EAAE,GAAG,iBAAiB,CAAC,IAAI,CAAC;IAClC,OAAO,SAAS,CAAC,YAAY,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACpF,CAAC;AAED,SAAgB,iBAAiB,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,GAAY;IAC7E,SAAS,CAAC,YAAY,CAAC,iBAAiB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IACxD,OAAO,oBAAoB,CAAC,iBAAiB,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;AACnE,CAAC;AAED,SAAgB,gBAAgB,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,GAAY;IAC5E,MAAM,EAAE,GAAG,iBAAiB,CAAC,WAAW,CAAC;IACzC,OAAO,SAAS,CAAC,0BAA0B,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACxF,CAAC;AAED,SAAgB,gBAAgB,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,GAAY;IAC5E,SAAS,CAAC,0BAA0B,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IACpD,OAAO,oBAAoB,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;AAC1E,CAAC;AAED,SAAgB,gBAAgB,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,GAAY;IAC5E,MAAM,EAAE,GAAG,iBAAiB,CAAC,MAAM,CAAC;IACpC,OAAO,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AACnF,CAAC;AAED,SAAgB,gBAAgB,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,GAAY;IAC5E,SAAS,CAAC,YAAY,CAAC,gBAAgB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IACvD,OAAO,oBAAoB,CAAC,iBAAiB,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;AACrE,CAAC;AAED,SAAgB,eAAe,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,GAAY;IAC3E,MAAM,EAAE,GAAG,iBAAiB,CAAC,OAAO,CAAC;IACrC,OAAO,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAClF,CAAC;AAED,SAAgB,eAAe,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,GAAY;IAC3E,SAAS,CAAC,YAAY,CAAC,eAAe,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IACtD,OAAO,oBAAoB,CAAC,iBAAiB,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;AACtE,CAAC;AAED,SAAgB,WAAW,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,GAAY;IACvE,OAAO,SAAS,CAAC,uBAAuB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AAC1D,CAAC;AAED,SAAgB,WAAW,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,GAAY;IACvE,OAAO,SAAS,CAAC,uBAAuB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AAC1D,CAAC;AAED,SAAgB,kBAAkB,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,GAAY;IAC9E,OAAO,SAAS,CAAC,qBAAqB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AACxD,CAAC;AAED,SAAgB,kBAAkB,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,GAAY;IAC9E,OAAO,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AAC5D,CAAC;AAED,SAAgB,kBAAkB,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,GAAY;IAC9E,OAAO,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;AACpD,CAAC;AAED,SAAgB,YAAY,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,GAAY;IACxE,MAAM,EAAE,GAAG,iBAAiB,CAAC,IAAI,CAAC;IAClC,OAAO,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC/E,CAAC;AAED,SAAgB,YAAY,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,GAAY;IACxE,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IACnD,OAAO,oBAAoB,CAAC,iBAAiB,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;AACnE,CAAC;AAED,SAAgB,aAAa,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,GAAY;IACzE,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IACvB,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC3C,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAClD,CAAC;AAED,SAAgB,aAAa,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,GAAY;IACzE,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IAC1B,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC3C,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,28 @@
1
+ export type ColorBits = number;
2
+ export type Color = ColorBits;
3
+ export declare const OFFSET_R = 24;
4
+ export declare const OFFSET_G = 16;
5
+ export declare const OFFSET_B = 8;
6
+ export declare const OFFSET_A = 0;
7
+ /**
8
+ * Creates a new color from the given RGBA components.
9
+ * Every component should be in the [0, 255] range.
10
+ */
11
+ export declare function newColor(r: number, g: number, b: number, a: number): ColorBits;
12
+ /**
13
+ * Creates a new color from the given number value, e.g. 0x599eff.
14
+ */
15
+ export declare function from(color: number): ColorBits;
16
+ /**
17
+ * Turns the color into its equivalent number representation.
18
+ * This is essentially a cast from int32 to uint32.
19
+ */
20
+ export declare function toNumber(color: ColorBits): number;
21
+ export declare function getRed(c: ColorBits): number;
22
+ export declare function getGreen(c: ColorBits): number;
23
+ export declare function getBlue(c: ColorBits): number;
24
+ export declare function getAlpha(c: ColorBits): number;
25
+ export declare function setRed(c: ColorBits, value: number): ColorBits;
26
+ export declare function setGreen(c: ColorBits, value: number): ColorBits;
27
+ export declare function setBlue(c: ColorBits, value: number): ColorBits;
28
+ export declare function setAlpha(c: ColorBits, value: number): ColorBits;
@@ -1,27 +1,14 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
2
+ // Bits
3
+ //
4
+ // The color representation would ideally be 32-bits unsigned, but JS bitwise
5
+ // operators only work as 32-bits signed. The range of Smi values on V8 is also
6
+ // 32-bits signed. Those two factors make it that it's much more efficient to just
7
+ // use signed integers to represent the data.
8
+ //
9
+ // Colors with a R channel >= 0x80 will be a negative number, but that's not really
10
+ // an issue at any point because the bits for signed and unsigned integers are always
11
+ // the same, only their interpretation changes.
25
12
  Object.defineProperty(exports, "__esModule", { value: true });
26
13
  exports.OFFSET_A = exports.OFFSET_B = exports.OFFSET_G = exports.OFFSET_R = void 0;
27
14
  exports.newColor = newColor;
@@ -35,8 +22,7 @@ exports.setRed = setRed;
35
22
  exports.setGreen = setGreen;
36
23
  exports.setBlue = setBlue;
37
24
  exports.setAlpha = setAlpha;
38
- const bit = __importStar(require("./bit"));
39
- const { cast, get, set } = bit;
25
+ const INT32_TO_UINT32_OFFSET = 2 ** 32;
40
26
  exports.OFFSET_R = 24;
41
27
  exports.OFFSET_G = 16;
42
28
  exports.OFFSET_B = 8;
@@ -72,4 +58,17 @@ function setRed(c, value) { return set(c, exports.OFFSET_R, value); }
72
58
  function setGreen(c, value) { return set(c, exports.OFFSET_G, value); }
73
59
  function setBlue(c, value) { return set(c, exports.OFFSET_B, value); }
74
60
  function setAlpha(c, value) { return set(c, exports.OFFSET_A, value); }
75
- //# sourceMappingURL=core.js.map
61
+ /* Bitwise functions */
62
+ function cast(n) {
63
+ if (n < 0) {
64
+ return n + INT32_TO_UINT32_OFFSET;
65
+ }
66
+ return n;
67
+ }
68
+ function get(n, offset) {
69
+ return (n >> offset) & 0xff;
70
+ }
71
+ function set(n, offset, byte) {
72
+ return n ^ ((n ^ (byte << offset)) & (0xff << offset));
73
+ }
74
+ //# sourceMappingURL=bits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bits.js","sourceRoot":"","sources":["../../src/core/bits.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Round and clamp a channel value to a [0, 255] byte. NaN passes through so it
3
+ * packs as 0 in `newColor`.
4
+ */
5
+ export declare function clampByte(value: number): number;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.clampByte = clampByte;
4
+ /**
5
+ * Round and clamp a channel value to a [0, 255] byte. NaN passes through so it
6
+ * packs as 0 in `newColor`.
7
+ */
8
+ function clampByte(value) {
9
+ const n = Math.round(value);
10
+ return n < 0 ? 0 : n > 255 ? 255 : n;
11
+ }
12
+ //# sourceMappingURL=bytes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bytes.js","sourceRoot":"","sources":["../../src/core/bytes.ts"],"names":[],"mappings":";;AAIA,8BAGC;AAPD;;;GAGG;AACH,SAAgB,SAAS,CAAC,KAAa;IACrC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAC3B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;AACtC,CAAC"}
package/build/css.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from './parsing/css';
package/build/css.js ADDED
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./parsing/css"), exports);
18
+ //# sourceMappingURL=css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"css.js","sourceRoot":"","sources":["../src/css.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA6B"}
@@ -0,0 +1,27 @@
1
+ import type { ColorBits } from '../core/bits';
2
+ /** Format to a #RRGGBBAA string */
3
+ export declare const format: typeof formatHEXA;
4
+ /** Format to a #RRGGBBAA string */
5
+ export declare function formatHEXA(color: ColorBits): string;
6
+ export declare function formatHEX(color: ColorBits): string;
7
+ export declare function formatRGBA(color: ColorBits): string;
8
+ export declare function toRGBA(color: ColorBits): {
9
+ r: number;
10
+ g: number;
11
+ b: number;
12
+ a: number;
13
+ };
14
+ export declare function formatHSLA(color: ColorBits): string;
15
+ export declare function toHSLA(color: ColorBits): {
16
+ h: number;
17
+ s: number;
18
+ l: number;
19
+ a: number;
20
+ };
21
+ export declare function formatHWBA(color: ColorBits): string;
22
+ export declare function toHWBA(color: ColorBits): {
23
+ h: number;
24
+ w: number;
25
+ b: number;
26
+ a: number;
27
+ };
@@ -32,10 +32,11 @@ exports.formatHSLA = formatHSLA;
32
32
  exports.toHSLA = toHSLA;
33
33
  exports.formatHWBA = formatHWBA;
34
34
  exports.toHWBA = toHWBA;
35
- const core = __importStar(require("./core"));
35
+ const core = __importStar(require("../core/bits"));
36
+ const channels_1 = require("../conversion/channels");
36
37
  const { getRed, getGreen, getBlue, getAlpha } = core;
37
- // Return buffer, avoid allocations
38
- const buffer = [0, 0, 0];
38
+ // Scratch for srgbToHsl/srgbToHwb results; read out before the next call.
39
+ const SCRATCH = new Float64Array(3);
39
40
  /**
40
41
  * Map 8-bits value to its hexadecimal representation
41
42
  * ['00', '01', '02', ..., 'fe', 'ff']
@@ -70,74 +71,19 @@ function toRGBA(color) {
70
71
  };
71
72
  }
72
73
  function formatHSLA(color) {
73
- rgbToHSL(getRed(color), getGreen(color), getBlue(color));
74
- const h = buffer[0];
75
- const s = buffer[1];
76
- const l = buffer[2];
77
- const a = getAlpha(color) / 255;
78
- return `hsla(${h} ${s}% ${l}% / ${a})`;
74
+ (0, channels_1.srgbToHsl)(getRed(color) / 255, getGreen(color) / 255, getBlue(color) / 255, SCRATCH);
75
+ return `hsla(${SCRATCH[0]} ${SCRATCH[1]}% ${SCRATCH[2]}% / ${getAlpha(color) / 255})`;
79
76
  }
80
77
  function toHSLA(color) {
81
- rgbToHSL(getRed(color), getGreen(color), getBlue(color));
82
- const h = buffer[0];
83
- const s = buffer[1];
84
- const l = buffer[2];
85
- const a = getAlpha(color) / 255;
86
- return { h, s, l, a };
78
+ (0, channels_1.srgbToHsl)(getRed(color) / 255, getGreen(color) / 255, getBlue(color) / 255, SCRATCH);
79
+ return { h: SCRATCH[0], s: SCRATCH[1], l: SCRATCH[2], a: getAlpha(color) / 255 };
87
80
  }
88
81
  function formatHWBA(color) {
89
- rgbToHWB(getRed(color), getGreen(color), getBlue(color));
90
- const h = buffer[0];
91
- const w = buffer[1];
92
- const b = buffer[2];
93
- const a = getAlpha(color) / 255;
94
- return `hsla(${h} ${w}% ${b}% / ${a})`;
82
+ (0, channels_1.srgbToHwb)(getRed(color) / 255, getGreen(color) / 255, getBlue(color) / 255, SCRATCH);
83
+ return `hwb(${SCRATCH[0]} ${SCRATCH[1]}% ${SCRATCH[2]}% / ${getAlpha(color) / 255})`;
95
84
  }
96
85
  function toHWBA(color) {
97
- rgbToHWB(getRed(color), getGreen(color), getBlue(color));
98
- const h = buffer[0];
99
- const w = buffer[1];
100
- const b = buffer[2];
101
- const a = getAlpha(color) / 255;
102
- return { h, w, b, a };
86
+ (0, channels_1.srgbToHwb)(getRed(color) / 255, getGreen(color) / 255, getBlue(color) / 255, SCRATCH);
87
+ return { h: SCRATCH[0], w: SCRATCH[1], b: SCRATCH[2], a: getAlpha(color) / 255 };
103
88
  }
104
- // Conversion functions
105
- // https://www.30secondsofcode.org/js/s/rgb-hex-hsl-hsb-color-format-conversion/
106
- function rgbToHSL(r, g, b) {
107
- r /= 255;
108
- g /= 255;
109
- b /= 255;
110
- const l = Math.max(r, g, b);
111
- const s = l - Math.min(r, g, b);
112
- const h = s
113
- ? l === r
114
- ? (g - b) / s
115
- : l === g
116
- ? 2 + (b - r) / s
117
- : 4 + (r - g) / s
118
- : 0;
119
- buffer[0] = 60 * h < 0 ? 60 * h + 360 : 60 * h;
120
- buffer[1] = 100 * (s ? (l <= 0.5 ? s / (2 * l - s) : s / (2 - (2 * l - s))) : 0);
121
- buffer[2] = (100 * (2 * l - s)) / 2;
122
- }
123
- // https://stackoverflow.com/a/29463581/3112706
124
- function rgbToHWB(r, g, b) {
125
- r /= 255;
126
- g /= 255;
127
- b /= 255;
128
- const w = Math.min(r, g, b);
129
- const v = Math.max(r, g, b);
130
- const black = 1 - v;
131
- if (v === w) {
132
- buffer[0] = 0;
133
- buffer[1] = w;
134
- buffer[2] = black;
135
- return;
136
- }
137
- let f = r === w ? g - b : (g === w ? b - r : r - g);
138
- let i = r === w ? 3 : (g === w ? 5 : 1);
139
- buffer[0] = (i - f / (v - w)) / 6;
140
- buffer[1] = w;
141
- buffer[2] = black;
142
- }
143
- //# sourceMappingURL=format.js.map
89
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/formatting/index.ts"],"names":[],"mappings":"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"}
package/build/index.d.ts CHANGED
@@ -1,4 +1,6 @@
1
- export * from './core';
2
- export * from './parse';
3
- export * from './format';
4
- export * from './functions';
1
+ export * from './core/bits';
2
+ export * from './parsing/fast';
3
+ export * from './formatting';
4
+ export * from './operations/adjust';
5
+ export * from './operations/blend';
6
+ export * from './operations/luminance';
package/build/index.js CHANGED
@@ -14,8 +14,10 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./core"), exports);
18
- __exportStar(require("./parse"), exports);
19
- __exportStar(require("./format"), exports);
20
- __exportStar(require("./functions"), exports);
17
+ __exportStar(require("./core/bits"), exports);
18
+ __exportStar(require("./parsing/fast"), exports);
19
+ __exportStar(require("./formatting"), exports);
20
+ __exportStar(require("./operations/adjust"), exports);
21
+ __exportStar(require("./operations/blend"), exports);
22
+ __exportStar(require("./operations/luminance"), exports);
21
23
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AACvB,0CAAwB;AACxB,2CAAyB;AACzB,8CAA4B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA2B;AAC3B,iDAA8B;AAC9B,+CAA4B;AAC5B,sDAAmC;AACnC,qDAAkC;AAClC,yDAAsC"}
@@ -0,0 +1 @@
1
+ export * from './parsing/named-colors';
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./parsing/named-colors"), exports);
18
+ //# sourceMappingURL=namedColors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"namedColors.js","sourceRoot":"","sources":["../src/namedColors.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yDAAsC"}