@terrazzo/plugin-tailwind 0.3.1 → 0.3.3

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/dist/index.js CHANGED
@@ -29,7 +29,7 @@ const parseNumber = (color, len) => {
29
29
  };
30
30
  };
31
31
  var parseNumber_default = parseNumber;
32
- const named = {
32
+ var named_default = {
33
33
  aliceblue: 15792383,
34
34
  antiquewhite: 16444375,
35
35
  aqua: 65535,
@@ -179,7 +179,6 @@ const named = {
179
179
  yellow: 16776960,
180
180
  yellowgreen: 10145074
181
181
  };
182
- var named_default = named;
183
182
  const parseNamed = (color) => {
184
183
  return parseNumber_default(named_default[color.toLowerCase()], 6);
185
184
  };
@@ -191,17 +190,17 @@ const parseHex = (color) => {
191
190
  };
192
191
  var parseHex_default = parseHex;
193
192
  const num$1 = "([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)";
194
- const num_none = `(?:${num$1}|none)`;
193
+ `${num$1}`;
195
194
  const per = `${num$1}%`;
196
- const per_none = `(?:${num$1}%|none)`;
195
+ `${num$1}`;
197
196
  const num_per = `(?:${num$1}%|${num$1})`;
198
197
  const num_per_none = `(?:${num$1}%|${num$1}|none)`;
199
198
  const hue$1 = `(?:${num$1}(deg|grad|rad|turn)|${num$1})`;
200
- const hue_none = `(?:${num$1}(deg|grad|rad|turn)|${num$1}|none)`;
199
+ `${num$1}${num$1}`;
201
200
  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*)?\\)$`);
201
+ "" + num_per_none;
202
+ const rgb_num_old = /* @__PURE__ */ new RegExp(`^rgba?\\(\\s*${num$1}${c}${num$1}${c}${num$1}\\s*(?:,\\s*${num_per}\\s*)?\\)$`);
203
+ const rgb_per_old = /* @__PURE__ */ new RegExp(`^rgba?\\(\\s*${per}${c}${per}${c}${per}\\s*(?:,\\s*${num_per}\\s*)?\\)$`);
205
204
  const parseRgbLegacy = (color) => {
206
205
  let res = { mode: "rgb" };
207
206
  let match;
@@ -213,7 +212,7 @@ const parseRgbLegacy = (color) => {
213
212
  if (match[1] !== void 0) res.r = match[1] / 100;
214
213
  if (match[2] !== void 0) res.g = match[2] / 100;
215
214
  if (match[3] !== void 0) res.b = match[3] / 100;
216
- } else return void 0;
215
+ } else return;
217
216
  if (match[4] !== void 0) res.alpha = Math.max(0, Math.min(1, match[4] / 100));
218
217
  else if (match[5] !== void 0) res.alpha = Math.max(0, Math.min(1, +match[5]));
219
218
  return res;
@@ -231,28 +230,28 @@ const modes = {};
231
230
  const parsers = [];
232
231
  const colorProfiles = {};
233
232
  const identity = (v) => v;
234
- const useMode = (definition$16) => {
235
- converters$1[definition$16.mode] = {
236
- ...converters$1[definition$16.mode],
237
- ...definition$16.toMode
233
+ const useMode = (definition$28) => {
234
+ converters$1[definition$28.mode] = {
235
+ ...converters$1[definition$28.mode],
236
+ ...definition$28.toMode
238
237
  };
239
- Object.keys(definition$16.fromMode || {}).forEach((k$3) => {
238
+ Object.keys(definition$28.fromMode || {}).forEach((k$3) => {
240
239
  if (!converters$1[k$3]) converters$1[k$3] = {};
241
- converters$1[k$3][definition$16.mode] = definition$16.fromMode[k$3];
240
+ converters$1[k$3][definition$28.mode] = definition$28.fromMode[k$3];
242
241
  });
243
- if (!definition$16.ranges) definition$16.ranges = {};
244
- if (!definition$16.difference) definition$16.difference = {};
245
- definition$16.channels.forEach((channel) => {
246
- if (definition$16.ranges[channel] === void 0) definition$16.ranges[channel] = [0, 1];
247
- if (!definition$16.interpolate[channel]) throw new Error(`Missing interpolator for: ${channel}`);
248
- if (typeof definition$16.interpolate[channel] === "function") definition$16.interpolate[channel] = { use: definition$16.interpolate[channel] };
249
- if (!definition$16.interpolate[channel].fixup) definition$16.interpolate[channel].fixup = identity;
242
+ if (!definition$28.ranges) definition$28.ranges = {};
243
+ if (!definition$28.difference) definition$28.difference = {};
244
+ definition$28.channels.forEach((channel) => {
245
+ if (definition$28.ranges[channel] === void 0) definition$28.ranges[channel] = [0, 1];
246
+ if (!definition$28.interpolate[channel]) throw new Error(`Missing interpolator for: ${channel}`);
247
+ if (typeof definition$28.interpolate[channel] === "function") definition$28.interpolate[channel] = { use: definition$28.interpolate[channel] };
248
+ if (!definition$28.interpolate[channel].fixup) definition$28.interpolate[channel].fixup = identity;
250
249
  });
251
- modes[definition$16.mode] = definition$16;
252
- (definition$16.parse || []).forEach((parser) => {
253
- useParser(parser, definition$16.mode);
250
+ modes[definition$28.mode] = definition$28;
251
+ (definition$28.parse || []).forEach((parser) => {
252
+ useParser(parser, definition$28.mode);
254
253
  });
255
- return converter_default(definition$16.mode);
254
+ return converter_default(definition$28.mode);
256
255
  };
257
256
  const getMode = (mode) => modes[mode];
258
257
  const useParser = (parser, mode) => {
@@ -316,7 +315,7 @@ function num(chars) {
316
315
  type: Tok.Hue,
317
316
  value: value * huenits[id]
318
317
  };
319
- return void 0;
318
+ return;
320
319
  }
321
320
  if (chars[_i] === "%") {
322
321
  _i++;
@@ -369,7 +368,7 @@ function tokenize(str = "") {
369
368
  while (_i < chars.length && (chars[_i] === "\n" || chars[_i] === " " || chars[_i] === " ")) _i++;
370
369
  continue;
371
370
  }
372
- if (ch === ",") return void 0;
371
+ if (ch === ",") return;
373
372
  if (ch === ")") {
374
373
  tokens.push({ type: Tok.ParenClose });
375
374
  continue;
@@ -380,7 +379,7 @@ function tokenize(str = "") {
380
379
  tokens.push(num(chars));
381
380
  continue;
382
381
  }
383
- return void 0;
382
+ return;
384
383
  }
385
384
  if (ch === "-") {
386
385
  _i--;
@@ -395,7 +394,7 @@ function tokenize(str = "") {
395
394
  });
396
395
  continue;
397
396
  }
398
- return void 0;
397
+ return;
399
398
  }
400
399
  if (ch === ".") {
401
400
  _i--;
@@ -403,7 +402,7 @@ function tokenize(str = "") {
403
402
  tokens.push(num(chars));
404
403
  continue;
405
404
  }
406
- return void 0;
405
+ return;
407
406
  }
408
407
  if (ch === "/") {
409
408
  while (_i < chars.length && (chars[_i] === "\n" || chars[_i] === " " || chars[_i] === " ")) _i++;
@@ -430,7 +429,7 @@ function tokenize(str = "") {
430
429
  continue;
431
430
  }
432
431
  }
433
- return void 0;
432
+ return;
434
433
  }
435
434
  if (/\d/.test(ch)) {
436
435
  _i--;
@@ -442,21 +441,21 @@ function tokenize(str = "") {
442
441
  tokens.push(identlike(chars));
443
442
  continue;
444
443
  }
445
- return void 0;
444
+ return;
446
445
  }
447
446
  return tokens;
448
447
  }
449
448
  function parseColorSyntax(tokens) {
450
449
  tokens._i = 0;
451
450
  let token = tokens[tokens._i++];
452
- if (!token || token.type !== Tok.Function || token.value !== "color") return void 0;
451
+ if (!token || token.type !== Tok.Function || token.value !== "color") return;
453
452
  token = tokens[tokens._i++];
454
- if (token.type !== Tok.Ident) return void 0;
453
+ if (token.type !== Tok.Ident) return;
455
454
  const mode = colorProfiles[token.value];
456
- if (!mode) return void 0;
455
+ if (!mode) return;
457
456
  const res = { mode };
458
457
  const coords = consumeCoords(tokens, false);
459
- if (!coords) return void 0;
458
+ if (!coords) return;
460
459
  const channels = getMode(mode).channels;
461
460
  for (let ii = 0, c$1, ch; ii < channels.length; ii++) {
462
461
  c$1 = coords[ii];
@@ -478,14 +477,14 @@ function consumeCoords(tokens, includeHue) {
478
477
  continue;
479
478
  }
480
479
  if (token.type === Tok.ParenClose) {
481
- if (tokens._i < tokens.length) return void 0;
480
+ if (tokens._i < tokens.length) return;
482
481
  continue;
483
482
  }
484
- return void 0;
483
+ return;
485
484
  }
486
- if (coords.length < 3 || coords.length > 4) return void 0;
485
+ if (coords.length < 3 || coords.length > 4) return;
487
486
  if (coords.length === 4) {
488
- if (coords[3].type !== Tok.Alpha) return void 0;
487
+ if (coords[3].type !== Tok.Alpha) return;
489
488
  coords[3] = coords[3].value;
490
489
  }
491
490
  if (coords.length === 3) coords.push({
@@ -497,14 +496,14 @@ function consumeCoords(tokens, includeHue) {
497
496
  function parseModernSyntax(tokens, includeHue) {
498
497
  tokens._i = 0;
499
498
  let token = tokens[tokens._i++];
500
- if (!token || token.type !== Tok.Function) return void 0;
499
+ if (!token || token.type !== Tok.Function) return;
501
500
  let coords = consumeCoords(tokens, includeHue);
502
- if (!coords) return void 0;
501
+ if (!coords) return;
503
502
  coords.unshift(token.value);
504
503
  return coords;
505
504
  }
506
505
  const parse = (color) => {
507
- if (typeof color !== "string") return void 0;
506
+ if (typeof color !== "string") return;
508
507
  const tokens = tokenize(color);
509
508
  const parsed = tokens ? parseModernSyntax(tokens, true) : void 0;
510
509
  let result = void 0;
@@ -515,10 +514,10 @@ const parse = (color) => {
515
514
  };
516
515
  var parse_default = parse;
517
516
  function parseRgb(color, parsed) {
518
- if (!parsed || parsed[0] !== "rgb" && parsed[0] !== "rgba") return void 0;
517
+ if (!parsed || parsed[0] !== "rgb" && parsed[0] !== "rgba") return;
519
518
  const res = { mode: "rgb" };
520
519
  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;
520
+ if (r$1.type === Tok.Hue || g.type === Tok.Hue || b.type === Tok.Hue) return;
522
521
  if (r$1.type !== Tok.None) res.r = r$1.type === Tok.Number ? r$1.value / 255 : r$1.value / 100;
523
522
  if (g.type !== Tok.None) res.g = g.type === Tok.Number ? g.value / 255 : g.value / 100;
524
523
  if (b.type !== Tok.None) res.b = b.type === Tok.Number ? b.value / 255 : b.value / 100;
@@ -567,7 +566,7 @@ const fixupAlpha = (arr) => {
567
566
  });
568
567
  return some_defined ? res : arr;
569
568
  };
570
- const definition$15 = {
569
+ var definition_default$12 = {
571
570
  mode: "rgb",
572
571
  channels: [
573
572
  "r",
@@ -605,19 +604,18 @@ const definition$15 = {
605
604
  b: 0
606
605
  }
607
606
  };
608
- var definition_default$12 = definition$15;
609
607
  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);
608
+ const convertA98ToXyz65 = (a98$2) => {
609
+ let r$1 = linearize$2(a98$2.r);
610
+ let g = linearize$2(a98$2.g);
611
+ let b = linearize$2(a98$2.b);
614
612
  let res = {
615
613
  mode: "xyz65",
616
614
  x: .5766690429101305 * r$1 + .1855582379065463 * g + .1882286462349947 * b,
617
615
  y: .297344975250536 * r$1 + .6273635662554661 * g + .0752914584939979 * b,
618
616
  z: .0270313613864123 * r$1 + .0706888525358272 * g + .9913375368376386 * b
619
617
  };
620
- if (a98.alpha !== void 0) res.alpha = a98.alpha;
618
+ if (a98$2.alpha !== void 0) res.alpha = a98$2.alpha;
621
619
  return res;
622
620
  };
623
621
  var convertA98ToXyz65_default = convertA98ToXyz65;
@@ -637,9 +635,9 @@ const convertXyz65ToA98 = ({ x, y, z, alpha }) => {
637
635
  };
638
636
  var convertXyz65ToA98_default = convertXyz65ToA98;
639
637
  const fn$3 = (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);
638
+ const abs$1 = Math.abs(c$1);
639
+ if (abs$1 <= .04045) return c$1 / 12.92;
640
+ return (Math.sign(c$1) || 1) * Math.pow((abs$1 + .055) / 1.055, 2.4);
643
641
  };
644
642
  const convertRgbToLrgb = ({ r: r$1, g, b, alpha }) => {
645
643
  let res = {
@@ -652,8 +650,8 @@ const convertRgbToLrgb = ({ r: r$1, g, b, alpha }) => {
652
650
  return res;
653
651
  };
654
652
  var convertRgbToLrgb_default = convertRgbToLrgb;
655
- const convertRgbToXyz65 = (rgb$2) => {
656
- let { r: r$1, g, b, alpha } = convertRgbToLrgb_default(rgb$2);
653
+ const convertRgbToXyz65 = (rgb$4) => {
654
+ let { r: r$1, g, b, alpha } = convertRgbToLrgb_default(rgb$4);
657
655
  let res = {
658
656
  mode: "xyz65",
659
657
  x: .4123907992659593 * r$1 + .357584339383878 * g + .1804807884018343 * b,
@@ -665,8 +663,8 @@ const convertRgbToXyz65 = (rgb$2) => {
665
663
  };
666
664
  var convertRgbToXyz65_default = convertRgbToXyz65;
667
665
  const fn$2 = (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);
666
+ const abs$1 = Math.abs(c$1);
667
+ if (abs$1 > .0031308) return (Math.sign(c$1) || 1) * (1.055 * Math.pow(abs$1, 1 / 2.4) - .055);
670
668
  return c$1 * 12.92;
671
669
  };
672
670
  const convertLrgbToRgb = ({ r: r$1, g, b, alpha }, mode = "rgb") => {
@@ -693,7 +691,7 @@ const convertXyz65ToRgb = ({ x, y, z, alpha }) => {
693
691
  return res;
694
692
  };
695
693
  var convertXyz65ToRgb_default = convertXyz65ToRgb;
696
- const definition$14 = {
694
+ var definition_default = {
697
695
  ...definition_default$12,
698
696
  mode: "a98",
699
697
  parse: ["a98-rgb"],
@@ -707,7 +705,6 @@ const definition$14 = {
707
705
  xyz65: convertA98ToXyz65_default
708
706
  }
709
707
  };
710
- var definition_default = definition$14;
711
708
  const normalizeHue = (hue$2) => (hue$2 = hue$2 % 360) < 0 ? hue$2 + 360 : hue$2;
712
709
  var normalizeHue_default = normalizeHue;
713
710
  function convertHslToRgb({ h, s, l, alpha }) {
@@ -774,13 +771,13 @@ function convertRgbToHsl({ r: r$1, g, b, alpha }) {
774
771
  if (r$1 === void 0) r$1 = 0;
775
772
  if (g === void 0) g = 0;
776
773
  if (b === void 0) b = 0;
777
- let M = Math.max(r$1, g, b), m = Math.min(r$1, g, b);
774
+ let M$1 = Math.max(r$1, g, b), m = Math.min(r$1, g, b);
778
775
  let res = {
779
776
  mode: "hsl",
780
- s: M === m ? 0 : (M - m) / (1 - Math.abs(M + m - 1)),
781
- l: .5 * (M + m)
777
+ s: M$1 === m ? 0 : (M$1 - m) / (1 - Math.abs(M$1 + m - 1)),
778
+ l: .5 * (M$1 + m)
782
779
  };
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;
780
+ if (M$1 - m !== 0) res.h = (M$1 === r$1 ? (g - b) / (M$1 - m) + (g < b) * 6 : M$1 === g ? (b - r$1) / (M$1 - m) + 2 : (r$1 - g) / (M$1 - m) + 4) * 60;
784
781
  if (alpha !== void 0) res.alpha = alpha;
785
782
  return res;
786
783
  }
@@ -793,7 +790,7 @@ const hueToDeg = (val, unit) => {
793
790
  }
794
791
  };
795
792
  var hue_default = hueToDeg;
796
- const hsl_old = new RegExp(`^hsla?\\(\\s*${hue$1}${c}${per}${c}${per}\\s*(?:,\\s*${num_per}\\s*)?\\)$`);
793
+ const hsl_old = /* @__PURE__ */ new RegExp(`^hsla?\\(\\s*${hue$1}${c}${per}${c}${per}\\s*(?:,\\s*${num_per}\\s*)?\\)$`);
797
794
  const parseHslLegacy = (color) => {
798
795
  let match = color.match(hsl_old);
799
796
  if (!match) return;
@@ -808,19 +805,19 @@ const parseHslLegacy = (color) => {
808
805
  };
809
806
  var parseHslLegacy_default = parseHslLegacy;
810
807
  function parseHsl(color, parsed) {
811
- if (!parsed || parsed[0] !== "hsl" && parsed[0] !== "hsla") return void 0;
808
+ if (!parsed || parsed[0] !== "hsl" && parsed[0] !== "hsla") return;
812
809
  const res = { mode: "hsl" };
813
810
  const [, h, s, l, alpha] = parsed;
814
811
  if (h.type !== Tok.None) {
815
- if (h.type === Tok.Percentage) return void 0;
812
+ if (h.type === Tok.Percentage) return;
816
813
  res.h = h.value;
817
814
  }
818
815
  if (s.type !== Tok.None) {
819
- if (s.type === Tok.Hue) return void 0;
816
+ if (s.type === Tok.Hue) return;
820
817
  res.s = s.value / 100;
821
818
  }
822
819
  if (l.type !== Tok.None) {
823
- if (l.type === Tok.Hue) return void 0;
820
+ if (l.type === Tok.Hue) return;
824
821
  res.l = l.value / 100;
825
822
  }
826
823
  if (alpha.type !== Tok.None) res.alpha = Math.min(1, Math.max(0, alpha.type === Tok.Number ? alpha.value : alpha.value / 100));
@@ -879,7 +876,7 @@ const averageAngle = (val) => {
879
876
  let angle = Math.atan2(sum.sin, sum.cos) * 180 / Math.PI;
880
877
  return angle < 0 ? 360 + angle : angle;
881
878
  };
882
- const definition$13 = {
879
+ var definition_default$1 = {
883
880
  mode: "hsl",
884
881
  toMode: { rgb: convertHslToRgb },
885
882
  fromMode: { rgb: convertRgbToHsl },
@@ -908,7 +905,6 @@ const definition$13 = {
908
905
  difference: { h: differenceHueSaturation },
909
906
  average: { h: averageAngle }
910
907
  };
911
- var definition_default$1 = definition$13;
912
908
  function convertHsvToRgb({ h, s, v, alpha }) {
913
909
  h = normalizeHue_default(h !== void 0 ? h : 0);
914
910
  if (s === void 0) s = 0;
@@ -972,17 +968,17 @@ function convertRgbToHsv({ r: r$1, g, b, alpha }) {
972
968
  if (r$1 === void 0) r$1 = 0;
973
969
  if (g === void 0) g = 0;
974
970
  if (b === void 0) b = 0;
975
- let M = Math.max(r$1, g, b), m = Math.min(r$1, g, b);
971
+ let M$1 = Math.max(r$1, g, b), m = Math.min(r$1, g, b);
976
972
  let res = {
977
973
  mode: "hsv",
978
- s: M === 0 ? 0 : 1 - m / M,
979
- v: M
974
+ s: M$1 === 0 ? 0 : 1 - m / M$1,
975
+ v: M$1
980
976
  };
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;
977
+ if (M$1 - m !== 0) res.h = (M$1 === r$1 ? (g - b) / (M$1 - m) + (g < b) * 6 : M$1 === g ? (b - r$1) / (M$1 - m) + 2 : (r$1 - g) / (M$1 - m) + 4) * 60;
982
978
  if (alpha !== void 0) res.alpha = alpha;
983
979
  return res;
984
980
  }
985
- const definition$12 = {
981
+ var definition_default$19 = {
986
982
  mode: "hsv",
987
983
  toMode: { rgb: convertHsvToRgb },
988
984
  parse: ["--hsv"],
@@ -1011,7 +1007,6 @@ const definition$12 = {
1011
1007
  difference: { h: differenceHueSaturation },
1012
1008
  average: { h: averageAngle }
1013
1009
  };
1014
- var definition_default$15 = definition$12;
1015
1010
  function convertHwbToRgb({ h, w, b, alpha }) {
1016
1011
  if (w === void 0) w = 0;
1017
1012
  if (b === void 0) b = 0;
@@ -1028,40 +1023,39 @@ function convertHwbToRgb({ h, w, b, alpha }) {
1028
1023
  });
1029
1024
  }
1030
1025
  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;
1026
+ let hsv$2 = convertRgbToHsv(rgba);
1027
+ if (hsv$2 === void 0) return void 0;
1028
+ let s = hsv$2.s !== void 0 ? hsv$2.s : 0;
1029
+ let v = hsv$2.v !== void 0 ? hsv$2.v : 0;
1035
1030
  let res = {
1036
1031
  mode: "hwb",
1037
1032
  w: (1 - s) * v,
1038
1033
  b: 1 - v
1039
1034
  };
1040
- if (hsv.h !== void 0) res.h = hsv.h;
1041
- if (hsv.alpha !== void 0) res.alpha = hsv.alpha;
1035
+ if (hsv$2.h !== void 0) res.h = hsv$2.h;
1036
+ if (hsv$2.alpha !== void 0) res.alpha = hsv$2.alpha;
1042
1037
  return res;
1043
1038
  }
1044
1039
  function ParseHwb(color, parsed) {
1045
- if (!parsed || parsed[0] !== "hwb") return void 0;
1040
+ if (!parsed || parsed[0] !== "hwb") return;
1046
1041
  const res = { mode: "hwb" };
1047
1042
  const [, h, w, b, alpha] = parsed;
1048
1043
  if (h.type !== Tok.None) {
1049
- if (h.type === Tok.Percentage) return void 0;
1044
+ if (h.type === Tok.Percentage) return;
1050
1045
  res.h = h.value;
1051
1046
  }
1052
1047
  if (w.type !== Tok.None) {
1053
- if (w.type === Tok.Hue) return void 0;
1048
+ if (w.type === Tok.Hue) return;
1054
1049
  res.w = w.value / 100;
1055
1050
  }
1056
1051
  if (b.type !== Tok.None) {
1057
- if (b.type === Tok.Hue) return void 0;
1052
+ if (b.type === Tok.Hue) return;
1058
1053
  res.b = b.value / 100;
1059
1054
  }
1060
1055
  if (alpha.type !== Tok.None) res.alpha = Math.min(1, Math.max(0, alpha.type === Tok.Number ? alpha.value : alpha.value / 100));
1061
1056
  return res;
1062
1057
  }
1063
- var parseHwb_default = ParseHwb;
1064
- const definition$11 = {
1058
+ var definition_default$2 = {
1065
1059
  mode: "hwb",
1066
1060
  toMode: { rgb: convertHwbToRgb },
1067
1061
  fromMode: { rgb: convertRgbToHwb },
@@ -1073,7 +1067,7 @@ const definition$11 = {
1073
1067
  ],
1074
1068
  ranges: { h: [0, 360] },
1075
1069
  gamut: "rgb",
1076
- parse: [parseHwb_default],
1070
+ parse: [ParseHwb],
1077
1071
  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
1072
  interpolate: {
1079
1073
  h: {
@@ -1090,9 +1084,8 @@ const definition$11 = {
1090
1084
  difference: { h: differenceHueNaive },
1091
1085
  average: { h: averageAngle }
1092
1086
  };
1093
- var definition_default$2 = definition$11;
1094
- const k$1 = Math.pow(29, 3) / Math.pow(3, 3);
1095
- const e$1 = Math.pow(6, 3) / Math.pow(29, 3);
1087
+ const k = Math.pow(29, 3) / Math.pow(3, 3);
1088
+ const e = Math.pow(6, 3) / Math.pow(29, 3);
1096
1089
  const D50 = {
1097
1090
  X: .3457 / .3585,
1098
1091
  Y: 1,
@@ -1103,9 +1096,9 @@ const D65 = {
1103
1096
  Y: 1,
1104
1097
  Z: .3583 / .329
1105
1098
  };
1106
- const k$2 = Math.pow(29, 3) / Math.pow(3, 3);
1107
- const e$2 = Math.pow(6, 3) / Math.pow(29, 3);
1108
- let fn$1 = (v) => Math.pow(v, 3) > e$1 ? Math.pow(v, 3) : (116 * v - 16) / k$1;
1099
+ Math.pow(29, 3) / Math.pow(3, 3);
1100
+ Math.pow(6, 3) / Math.pow(29, 3);
1101
+ let fn$1 = (v) => Math.pow(v, 3) > e ? Math.pow(v, 3) : (116 * v - 16) / k;
1109
1102
  const convertLabToXyz50 = ({ l, a, b, alpha }) => {
1110
1103
  if (l === void 0) l = 0;
1111
1104
  if (a === void 0) a = 0;
@@ -1136,10 +1129,10 @@ const convertXyz50ToRgb = ({ x, y, z, alpha }) => {
1136
1129
  return res;
1137
1130
  };
1138
1131
  var convertXyz50ToRgb_default = convertXyz50ToRgb;
1139
- const convertLabToRgb = (lab) => convertXyz50ToRgb_default(convertLabToXyz50_default(lab));
1132
+ const convertLabToRgb = (lab$2) => convertXyz50ToRgb_default(convertLabToXyz50_default(lab$2));
1140
1133
  var convertLabToRgb_default = convertLabToRgb;
1141
- const convertRgbToXyz50 = (rgb$2) => {
1142
- let { r: r$1, g, b, alpha } = convertRgbToLrgb_default(rgb$2);
1134
+ const convertRgbToXyz50 = (rgb$4) => {
1135
+ let { r: r$1, g, b, alpha } = convertRgbToLrgb_default(rgb$4);
1143
1136
  let res = {
1144
1137
  mode: "xyz50",
1145
1138
  x: .436065742824811 * r$1 + .3851514688337912 * g + .14307845442264197 * b,
@@ -1150,7 +1143,7 @@ const convertRgbToXyz50 = (rgb$2) => {
1150
1143
  return res;
1151
1144
  };
1152
1145
  var convertRgbToXyz50_default = convertRgbToXyz50;
1153
- const f$1 = (value) => value > e$1 ? Math.cbrt(value) : (k$1 * value + 16) / 116;
1146
+ const f$1 = (value) => value > e ? Math.cbrt(value) : (k * value + 16) / 116;
1154
1147
  const convertXyz50ToLab = ({ x, y, z, alpha }) => {
1155
1148
  if (x === void 0) x = 0;
1156
1149
  if (y === void 0) y = 0;
@@ -1168,25 +1161,24 @@ const convertXyz50ToLab = ({ x, y, z, alpha }) => {
1168
1161
  return res;
1169
1162
  };
1170
1163
  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;
1164
+ const convertRgbToLab = (rgb$4) => {
1165
+ let res = convertXyz50ToLab_default(convertRgbToXyz50_default(rgb$4));
1166
+ if (rgb$4.r === rgb$4.b && rgb$4.b === rgb$4.g) res.a = res.b = 0;
1174
1167
  return res;
1175
1168
  };
1176
1169
  var convertRgbToLab_default = convertRgbToLab;
1177
1170
  function parseLab(color, parsed) {
1178
- if (!parsed || parsed[0] !== "lab") return void 0;
1171
+ if (!parsed || parsed[0] !== "lab") return;
1179
1172
  const res = { mode: "lab" };
1180
1173
  const [, l, a, b, alpha] = parsed;
1181
- if (l.type === Tok.Hue || a.type === Tok.Hue || b.type === Tok.Hue) return void 0;
1174
+ if (l.type === Tok.Hue || a.type === Tok.Hue || b.type === Tok.Hue) return;
1182
1175
  if (l.type !== Tok.None) res.l = Math.min(Math.max(0, l.value), 100);
1183
1176
  if (a.type !== Tok.None) res.a = a.type === Tok.Number ? a.value : a.value * 125 / 100;
1184
1177
  if (b.type !== Tok.None) res.b = b.type === Tok.Number ? b.value : b.value * 125 / 100;
1185
1178
  if (alpha.type !== Tok.None) res.alpha = Math.min(1, Math.max(0, alpha.type === Tok.Number ? alpha.value : alpha.value / 100));
1186
1179
  return res;
1187
1180
  }
1188
- var parseLab_default = parseLab;
1189
- const definition$10 = {
1181
+ var definition_default$3 = {
1190
1182
  mode: "lab",
1191
1183
  toMode: {
1192
1184
  xyz50: convertLabToXyz50_default,
@@ -1207,7 +1199,7 @@ const definition$10 = {
1207
1199
  a: [-125, 125],
1208
1200
  b: [-125, 125]
1209
1201
  },
1210
- parse: [parseLab_default],
1202
+ parse: [parseLab],
1211
1203
  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
1204
  interpolate: {
1213
1205
  l: interpolatorLinear,
@@ -1219,10 +1211,9 @@ const definition$10 = {
1219
1211
  }
1220
1212
  }
1221
1213
  };
1222
- var definition_default$3 = definition$10;
1223
- const k = Math.pow(29, 3) / Math.pow(3, 3);
1224
- const e = Math.pow(6, 3) / Math.pow(29, 3);
1225
- let fn = (v) => Math.pow(v, 3) > e ? Math.pow(v, 3) : (116 * v - 16) / k;
1214
+ const k$1 = Math.pow(29, 3) / Math.pow(3, 3);
1215
+ const e$1 = Math.pow(6, 3) / Math.pow(29, 3);
1216
+ let fn = (v) => Math.pow(v, 3) > e$1 ? Math.pow(v, 3) : (116 * v - 16) / k$1;
1226
1217
  const convertLab65ToXyz65 = ({ l, a, b, alpha }) => {
1227
1218
  if (l === void 0) l = 0;
1228
1219
  if (a === void 0) a = 0;
@@ -1240,9 +1231,9 @@ const convertLab65ToXyz65 = ({ l, a, b, alpha }) => {
1240
1231
  return res;
1241
1232
  };
1242
1233
  var convertLab65ToXyz65_default = convertLab65ToXyz65;
1243
- const convertLab65ToRgb = (lab) => convertXyz65ToRgb_default(convertLab65ToXyz65_default(lab));
1234
+ const convertLab65ToRgb = (lab$2) => convertXyz65ToRgb_default(convertLab65ToXyz65_default(lab$2));
1244
1235
  var convertLab65ToRgb_default = convertLab65ToRgb;
1245
- const f = (value) => value > e ? Math.cbrt(value) : (k * value + 16) / 116;
1236
+ const f = (value) => value > e$1 ? Math.cbrt(value) : (k$1 * value + 16) / 116;
1246
1237
  const convertXyz65ToLab65 = ({ x, y, z, alpha }) => {
1247
1238
  if (x === void 0) x = 0;
1248
1239
  if (y === void 0) y = 0;
@@ -1260,13 +1251,13 @@ const convertXyz65ToLab65 = ({ x, y, z, alpha }) => {
1260
1251
  return res;
1261
1252
  };
1262
1253
  var convertXyz65ToLab65_default = convertXyz65ToLab65;
1263
- const convertRgbToLab65 = (rgb$2) => {
1264
- let res = convertXyz65ToLab65_default(convertRgbToXyz65_default(rgb$2));
1265
- if (rgb$2.r === rgb$2.b && rgb$2.b === rgb$2.g) res.a = res.b = 0;
1254
+ const convertRgbToLab65 = (rgb$4) => {
1255
+ let res = convertXyz65ToLab65_default(convertRgbToXyz65_default(rgb$4));
1256
+ if (rgb$4.r === rgb$4.b && rgb$4.b === rgb$4.g) res.a = res.b = 0;
1266
1257
  return res;
1267
1258
  };
1268
1259
  var convertRgbToLab65_default = convertRgbToLab65;
1269
- const definition$9 = {
1260
+ var definition_default$4 = {
1270
1261
  ...definition_default$3,
1271
1262
  mode: "lab65",
1272
1263
  parse: ["--lab-d65"],
@@ -1285,7 +1276,6 @@ const definition$9 = {
1285
1276
  b: [-125, 125]
1286
1277
  }
1287
1278
  };
1288
- var definition_default$4 = definition$9;
1289
1279
  const convertLabToLch = ({ l, a, b, alpha }, mode = "lch") => {
1290
1280
  if (a === void 0) a = 0;
1291
1281
  if (b === void 0) b = 0;
@@ -1313,23 +1303,22 @@ const convertLchToLab = ({ l, c: c$1, h, alpha }, mode = "lab") => {
1313
1303
  };
1314
1304
  var convertLchToLab_default = convertLchToLab;
1315
1305
  function parseLch(color, parsed) {
1316
- if (!parsed || parsed[0] !== "lch") return void 0;
1306
+ if (!parsed || parsed[0] !== "lch") return;
1317
1307
  const res = { mode: "lch" };
1318
1308
  const [, l, c$1, h, alpha] = parsed;
1319
1309
  if (l.type !== Tok.None) {
1320
- if (l.type === Tok.Hue) return void 0;
1310
+ if (l.type === Tok.Hue) return;
1321
1311
  res.l = Math.min(Math.max(0, l.value), 100);
1322
1312
  }
1323
1313
  if (c$1.type !== Tok.None) res.c = Math.max(0, c$1.type === Tok.Number ? c$1.value : c$1.value * 150 / 100);
1324
1314
  if (h.type !== Tok.None) {
1325
- if (h.type === Tok.Percentage) return void 0;
1315
+ if (h.type === Tok.Percentage) return;
1326
1316
  res.h = h.value;
1327
1317
  }
1328
1318
  if (alpha.type !== Tok.None) res.alpha = Math.min(1, Math.max(0, alpha.type === Tok.Number ? alpha.value : alpha.value / 100));
1329
1319
  return res;
1330
1320
  }
1331
- var parseLch_default = parseLch;
1332
- const definition$8 = {
1321
+ var definition_default$5 = {
1333
1322
  mode: "lch",
1334
1323
  toMode: {
1335
1324
  lab: convertLchToLab_default,
@@ -1350,7 +1339,7 @@ const definition$8 = {
1350
1339
  c: [0, 150],
1351
1340
  h: [0, 360]
1352
1341
  },
1353
- parse: [parseLch_default],
1342
+ parse: [parseLch],
1354
1343
  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}` : ""})`,
1355
1344
  interpolate: {
1356
1345
  h: {
@@ -1367,8 +1356,26 @@ const definition$8 = {
1367
1356
  difference: { h: differenceHueChroma },
1368
1357
  average: { h: averageAngle }
1369
1358
  };
1370
- var definition_default$5 = definition$8;
1371
- const definition$7 = {
1359
+ var definition_default$23 = {
1360
+ ...definition_default$5,
1361
+ mode: "lch65",
1362
+ parse: ["--lch-d65"],
1363
+ serialize: "--lch-d65",
1364
+ toMode: {
1365
+ lab65: (c$1) => convertLchToLab_default(c$1, "lab65"),
1366
+ rgb: (c$1) => convertLab65ToRgb_default(convertLchToLab_default(c$1, "lab65"))
1367
+ },
1368
+ fromMode: {
1369
+ rgb: (c$1) => convertLabToLch_default(convertRgbToLab65_default(c$1), "lch65"),
1370
+ lab65: (c$1) => convertLabToLch_default(c$1, "lch65")
1371
+ },
1372
+ ranges: {
1373
+ l: [0, 100],
1374
+ c: [0, 150],
1375
+ h: [0, 360]
1376
+ }
1377
+ };
1378
+ var definition_default$6 = {
1372
1379
  ...definition_default$12,
1373
1380
  mode: "lrgb",
1374
1381
  toMode: { rgb: convertLrgbToRgb_default },
@@ -1376,19 +1383,18 @@ const definition$7 = {
1376
1383
  parse: ["srgb-linear"],
1377
1384
  serialize: "srgb-linear"
1378
1385
  };
1379
- var definition_default$6 = definition$7;
1380
1386
  const convertOklabToLrgb = ({ l, a, b, alpha }) => {
1381
1387
  if (l === void 0) l = 0;
1382
1388
  if (a === void 0) a = 0;
1383
1389
  if (b === void 0) b = 0;
1384
1390
  let L = Math.pow(l + .3963377773761749 * a + .2158037573099136 * b, 3);
1385
- let M = Math.pow(l - .1055613458156586 * a - .0638541728258133 * b, 3);
1391
+ let M$1 = Math.pow(l - .1055613458156586 * a - .0638541728258133 * b, 3);
1386
1392
  let S = Math.pow(l - .0894841775298119 * a - 1.2914855480194092 * b, 3);
1387
1393
  let res = {
1388
1394
  mode: "lrgb",
1389
- r: 4.076741636075957 * L - 3.3077115392580616 * M + .2309699031821044 * S,
1390
- g: -1.2684379732850317 * L + 2.6097573492876887 * M - .3413193760026573 * S,
1391
- b: -.0041960761386756 * L - .7034186179359362 * M + 1.7076146940746117 * S
1395
+ r: 4.076741636075957 * L - 3.3077115392580616 * M$1 + .2309699031821044 * S,
1396
+ g: -1.2684379732850317 * L + 2.6097573492876887 * M$1 - .3413193760026573 * S,
1397
+ b: -.0041960761386756 * L - .7034186179359362 * M$1 + 1.7076146940746117 * S
1392
1398
  };
1393
1399
  if (alpha !== void 0) res.alpha = alpha;
1394
1400
  return res;
@@ -1399,31 +1405,31 @@ const convertLrgbToOklab = ({ r: r$1, g, b, alpha }) => {
1399
1405
  if (g === void 0) g = 0;
1400
1406
  if (b === void 0) b = 0;
1401
1407
  let L = Math.cbrt(.412221469470763 * r$1 + .5363325372617348 * g + .0514459932675022 * b);
1402
- let M = Math.cbrt(.2119034958178252 * r$1 + .6806995506452344 * g + .1073969535369406 * b);
1408
+ let M$1 = Math.cbrt(.2119034958178252 * r$1 + .6806995506452344 * g + .1073969535369406 * b);
1403
1409
  let S = Math.cbrt(.0883024591900564 * r$1 + .2817188391361215 * g + .6299787016738222 * b);
1404
1410
  let res = {
1405
1411
  mode: "oklab",
1406
- l: .210454268309314 * L + .7936177747023054 * M - .0040720430116193 * S,
1407
- a: 1.9779985324311684 * L - 2.42859224204858 * M + .450593709617411 * S,
1408
- b: .0259040424655478 * L + .7827717124575296 * M - .8086757549230774 * S
1412
+ l: .210454268309314 * L + .7936177747023054 * M$1 - .0040720430116193 * S,
1413
+ a: 1.9779985324311684 * L - 2.42859224204858 * M$1 + .450593709617411 * S,
1414
+ b: .0259040424655478 * L + .7827717124575296 * M$1 - .8086757549230774 * S
1409
1415
  };
1410
1416
  if (alpha !== void 0) res.alpha = alpha;
1411
1417
  return res;
1412
1418
  };
1413
1419
  var convertLrgbToOklab_default = convertLrgbToOklab;
1414
- const convertRgbToOklab = (rgb$2) => {
1415
- let res = convertLrgbToOklab_default(convertRgbToLrgb_default(rgb$2));
1416
- if (rgb$2.r === rgb$2.b && rgb$2.b === rgb$2.g) res.a = res.b = 0;
1420
+ const convertRgbToOklab = (rgb$4) => {
1421
+ let res = convertLrgbToOklab_default(convertRgbToLrgb_default(rgb$4));
1422
+ if (rgb$4.r === rgb$4.b && rgb$4.b === rgb$4.g) res.a = res.b = 0;
1417
1423
  return res;
1418
1424
  };
1419
1425
  var convertRgbToOklab_default = convertRgbToOklab;
1420
1426
  const convertOklabToRgb = (c$1) => convertLrgbToRgb_default(convertOklabToLrgb_default(c$1));
1421
1427
  var convertOklabToRgb_default = convertOklabToRgb;
1422
1428
  function parseOklab(color, parsed) {
1423
- if (!parsed || parsed[0] !== "oklab") return void 0;
1429
+ if (!parsed || parsed[0] !== "oklab") return;
1424
1430
  const res = { mode: "oklab" };
1425
1431
  const [, l, a, b, alpha] = parsed;
1426
- if (l.type === Tok.Hue || a.type === Tok.Hue || b.type === Tok.Hue) return void 0;
1432
+ if (l.type === Tok.Hue || a.type === Tok.Hue || b.type === Tok.Hue) return;
1427
1433
  if (l.type !== Tok.None) res.l = Math.min(Math.max(0, l.type === Tok.Number ? l.value : l.value / 100), 1);
1428
1434
  if (a.type !== Tok.None) res.a = a.type === Tok.Number ? a.value : a.value * .4 / 100;
1429
1435
  if (b.type !== Tok.None) res.b = b.type === Tok.Number ? b.value : b.value * .4 / 100;
@@ -1431,7 +1437,7 @@ function parseOklab(color, parsed) {
1431
1437
  return res;
1432
1438
  }
1433
1439
  var parseOklab_default = parseOklab;
1434
- const definition$6 = {
1440
+ var definition_default$7 = {
1435
1441
  ...definition_default$3,
1436
1442
  mode: "oklab",
1437
1443
  toMode: {
@@ -1450,25 +1456,24 @@ const definition$6 = {
1450
1456
  parse: [parseOklab_default],
1451
1457
  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}` : ""})`
1452
1458
  };
1453
- var definition_default$7 = definition$6;
1454
1459
  function parseOklch(color, parsed) {
1455
- if (!parsed || parsed[0] !== "oklch") return void 0;
1460
+ if (!parsed || parsed[0] !== "oklch") return;
1456
1461
  const res = { mode: "oklch" };
1457
1462
  const [, l, c$1, h, alpha] = parsed;
1458
1463
  if (l.type !== Tok.None) {
1459
- if (l.type === Tok.Hue) return void 0;
1464
+ if (l.type === Tok.Hue) return;
1460
1465
  res.l = Math.min(Math.max(0, l.type === Tok.Number ? l.value : l.value / 100), 1);
1461
1466
  }
1462
1467
  if (c$1.type !== Tok.None) res.c = Math.max(0, c$1.type === Tok.Number ? c$1.value : c$1.value * .4 / 100);
1463
1468
  if (h.type !== Tok.None) {
1464
- if (h.type === Tok.Percentage) return void 0;
1469
+ if (h.type === Tok.Percentage) return;
1465
1470
  res.h = h.value;
1466
1471
  }
1467
1472
  if (alpha.type !== Tok.None) res.alpha = Math.min(1, Math.max(0, alpha.type === Tok.Number ? alpha.value : alpha.value / 100));
1468
1473
  return res;
1469
1474
  }
1470
1475
  var parseOklch_default = parseOklch;
1471
- const definition$5 = {
1476
+ var definition_default$8 = {
1472
1477
  ...definition_default$5,
1473
1478
  mode: "oklch",
1474
1479
  toMode: {
@@ -1487,9 +1492,8 @@ const definition$5 = {
1487
1492
  h: [0, 360]
1488
1493
  }
1489
1494
  };
1490
- var definition_default$8 = definition$5;
1491
- const convertP3ToXyz65 = (rgb$2) => {
1492
- let { r: r$1, g, b, alpha } = convertRgbToLrgb_default(rgb$2);
1495
+ const convertP3ToXyz65 = (rgb$4) => {
1496
+ let { r: r$1, g, b, alpha } = convertRgbToLrgb_default(rgb$4);
1493
1497
  let res = {
1494
1498
  mode: "xyz65",
1495
1499
  x: .486570948648216 * r$1 + .265667693169093 * g + .1982172852343625 * b,
@@ -1513,7 +1517,7 @@ const convertXyz65ToP3 = ({ x, y, z, alpha }) => {
1513
1517
  return res;
1514
1518
  };
1515
1519
  var convertXyz65ToP3_default = convertXyz65ToP3;
1516
- const definition$4 = {
1520
+ var definition_default$9 = {
1517
1521
  ...definition_default$12,
1518
1522
  mode: "p3",
1519
1523
  parse: ["display-p3"],
@@ -1527,10 +1531,9 @@ const definition$4 = {
1527
1531
  xyz65: convertP3ToXyz65_default
1528
1532
  }
1529
1533
  };
1530
- var definition_default$9 = definition$4;
1531
1534
  const gamma$1 = (v) => {
1532
- let abs = Math.abs(v);
1533
- if (abs >= 1 / 512) return Math.sign(v) * Math.pow(abs, 1 / 1.8);
1535
+ let abs$1 = Math.abs(v);
1536
+ if (abs$1 >= 1 / 512) return Math.sign(v) * Math.pow(abs$1, 1 / 1.8);
1534
1537
  return 16 * v;
1535
1538
  };
1536
1539
  const convertXyz50ToProphoto = ({ x, y, z, alpha }) => {
@@ -1548,25 +1551,25 @@ const convertXyz50ToProphoto = ({ x, y, z, alpha }) => {
1548
1551
  };
1549
1552
  var convertXyz50ToProphoto_default = convertXyz50ToProphoto;
1550
1553
  const linearize$1 = (v = 0) => {
1551
- let abs = Math.abs(v);
1552
- if (abs >= 16 / 512) return Math.sign(v) * Math.pow(abs, 1.8);
1554
+ let abs$1 = Math.abs(v);
1555
+ if (abs$1 >= 16 / 512) return Math.sign(v) * Math.pow(abs$1, 1.8);
1553
1556
  return v / 16;
1554
1557
  };
1555
- const convertProphotoToXyz50 = (prophoto) => {
1556
- let r$1 = linearize$1(prophoto.r);
1557
- let g = linearize$1(prophoto.g);
1558
- let b = linearize$1(prophoto.b);
1558
+ const convertProphotoToXyz50 = (prophoto$2) => {
1559
+ let r$1 = linearize$1(prophoto$2.r);
1560
+ let g = linearize$1(prophoto$2.g);
1561
+ let b = linearize$1(prophoto$2.b);
1559
1562
  let res = {
1560
1563
  mode: "xyz50",
1561
1564
  x: .7977666449006423 * r$1 + .1351812974005331 * g + .0313477341283922 * b,
1562
1565
  y: .2880748288194013 * r$1 + .7118352342418731 * g + 899369387256e-16 * b,
1563
1566
  z: 0 * r$1 + 0 * g + .8251046025104602 * b
1564
1567
  };
1565
- if (prophoto.alpha !== void 0) res.alpha = prophoto.alpha;
1568
+ if (prophoto$2.alpha !== void 0) res.alpha = prophoto$2.alpha;
1566
1569
  return res;
1567
1570
  };
1568
1571
  var convertProphotoToXyz50_default = convertProphotoToXyz50;
1569
- const definition$3 = {
1572
+ var definition_default$10 = {
1570
1573
  ...definition_default$12,
1571
1574
  mode: "prophoto",
1572
1575
  parse: ["prophoto-rgb"],
@@ -1580,12 +1583,11 @@ const definition$3 = {
1580
1583
  rgb: (color) => convertXyz50ToRgb_default(convertProphotoToXyz50_default(color))
1581
1584
  }
1582
1585
  };
1583
- var definition_default$10 = definition$3;
1584
1586
  const α$1 = 1.09929682680944;
1585
1587
  const β$1 = .018053968510807;
1586
1588
  const gamma = (v) => {
1587
- const abs = Math.abs(v);
1588
- if (abs > β$1) return (Math.sign(v) || 1) * (α$1 * Math.pow(abs, .45) - (α$1 - 1));
1589
+ const abs$1 = Math.abs(v);
1590
+ if (abs$1 > β$1) return (Math.sign(v) || 1) * (α$1 * Math.pow(abs$1, .45) - (α$1 - 1));
1589
1591
  return 4.5 * v;
1590
1592
  };
1591
1593
  const convertXyz65ToRec2020 = ({ x, y, z, alpha }) => {
@@ -1605,25 +1607,25 @@ var convertXyz65ToRec2020_default = convertXyz65ToRec2020;
1605
1607
  const α = 1.09929682680944;
1606
1608
  const β = .018053968510807;
1607
1609
  const linearize = (v = 0) => {
1608
- let abs = Math.abs(v);
1609
- if (abs < β * 4.5) return v / 4.5;
1610
- return (Math.sign(v) || 1) * Math.pow((abs + α - 1) / α, 1 / .45);
1611
- };
1612
- const convertRec2020ToXyz65 = (rec2020) => {
1613
- let r$1 = linearize(rec2020.r);
1614
- let g = linearize(rec2020.g);
1615
- let b = linearize(rec2020.b);
1610
+ let abs$1 = Math.abs(v);
1611
+ if (abs$1 < β * 4.5) return v / 4.5;
1612
+ return (Math.sign(v) || 1) * Math.pow((abs$1 + α - 1) / α, 1 / .45);
1613
+ };
1614
+ const convertRec2020ToXyz65 = (rec2020$2) => {
1615
+ let r$1 = linearize(rec2020$2.r);
1616
+ let g = linearize(rec2020$2.g);
1617
+ let b = linearize(rec2020$2.b);
1616
1618
  let res = {
1617
1619
  mode: "xyz65",
1618
1620
  x: .6369580483012911 * r$1 + .1446169035862083 * g + .1688809751641721 * b,
1619
1621
  y: .262700212011267 * r$1 + .6779980715188708 * g + .059301716469862 * b,
1620
1622
  z: 0 * r$1 + .0280726930490874 * g + 1.0609850577107909 * b
1621
1623
  };
1622
- if (rec2020.alpha !== void 0) res.alpha = rec2020.alpha;
1624
+ if (rec2020$2.alpha !== void 0) res.alpha = rec2020$2.alpha;
1623
1625
  return res;
1624
1626
  };
1625
1627
  var convertRec2020ToXyz65_default = convertRec2020ToXyz65;
1626
- const definition$2 = {
1628
+ var definition_default$11 = {
1627
1629
  ...definition_default$12,
1628
1630
  mode: "rec2020",
1629
1631
  fromMode: {
@@ -1637,8 +1639,7 @@ const definition$2 = {
1637
1639
  parse: ["rec2020"],
1638
1640
  serialize: "rec2020"
1639
1641
  };
1640
- var definition_default$11 = definition$2;
1641
- const definition$1 = {
1642
+ var definition_default$13 = {
1642
1643
  mode: "xyz50",
1643
1644
  parse: ["xyz-d50"],
1644
1645
  serialize: "xyz-d50",
@@ -1671,9 +1672,8 @@ const definition$1 = {
1671
1672
  }
1672
1673
  }
1673
1674
  };
1674
- var definition_default$13 = definition$1;
1675
- const convertXyz65ToXyz50 = (xyz65) => {
1676
- let { x, y, z, alpha } = xyz65;
1675
+ const convertXyz65ToXyz50 = (xyz65$2) => {
1676
+ let { x, y, z, alpha } = xyz65$2;
1677
1677
  if (x === void 0) x = 0;
1678
1678
  if (y === void 0) y = 0;
1679
1679
  if (z === void 0) z = 0;
@@ -1687,8 +1687,8 @@ const convertXyz65ToXyz50 = (xyz65) => {
1687
1687
  return res;
1688
1688
  };
1689
1689
  var convertXyz65ToXyz50_default = convertXyz65ToXyz50;
1690
- const convertXyz50ToXyz65 = (xyz50) => {
1691
- let { x, y, z, alpha } = xyz50;
1690
+ const convertXyz50ToXyz65 = (xyz50$2) => {
1691
+ let { x, y, z, alpha } = xyz50$2;
1692
1692
  if (x === void 0) x = 0;
1693
1693
  if (y === void 0) y = 0;
1694
1694
  if (z === void 0) z = 0;
@@ -1701,8 +1701,7 @@ const convertXyz50ToXyz65 = (xyz50) => {
1701
1701
  if (alpha !== void 0) res.alpha = alpha;
1702
1702
  return res;
1703
1703
  };
1704
- var convertXyz50ToXyz65_default = convertXyz50ToXyz65;
1705
- const definition = {
1704
+ var definition_default$14 = {
1706
1705
  mode: "xyz65",
1707
1706
  toMode: {
1708
1707
  rgb: convertXyz65ToRgb_default,
@@ -1710,7 +1709,7 @@ const definition = {
1710
1709
  },
1711
1710
  fromMode: {
1712
1711
  rgb: convertRgbToXyz65_default,
1713
- xyz50: convertXyz50ToXyz65_default
1712
+ xyz50: convertXyz50ToXyz65
1714
1713
  },
1715
1714
  ranges: {
1716
1715
  x: [0, .95],
@@ -1735,7 +1734,717 @@ const definition = {
1735
1734
  }
1736
1735
  }
1737
1736
  };
1738
- var definition_default$14 = definition;
1737
+ useMode(definition_default);
1738
+ useMode(definition_default$1);
1739
+ useMode(definition_default$19);
1740
+ useMode(definition_default$2);
1741
+ useMode(definition_default$3);
1742
+ useMode(definition_default$4);
1743
+ useMode(definition_default$5);
1744
+ useMode(definition_default$23);
1745
+ useMode(definition_default$6);
1746
+ useMode(definition_default$7);
1747
+ useMode(definition_default$8);
1748
+ useMode(definition_default$9);
1749
+ useMode(definition_default$10);
1750
+ useMode(definition_default$11);
1751
+ useMode(definition_default$12);
1752
+ useMode(definition_default$13);
1753
+ useMode(definition_default$14);
1754
+ const M = [
1755
+ -.14861,
1756
+ 1.78277,
1757
+ -.29227,
1758
+ -.90649,
1759
+ 1.97294,
1760
+ 0
1761
+ ];
1762
+ const degToRad = Math.PI / 180;
1763
+ const radToDeg = 180 / Math.PI;
1764
+ let DE = M[3] * M[4];
1765
+ let BE = M[1] * M[4];
1766
+ let BCAD = M[1] * M[2] - M[0] * M[3];
1767
+ const convertRgbToCubehelix = ({ r: r$1, g, b, alpha }) => {
1768
+ if (r$1 === void 0) r$1 = 0;
1769
+ if (g === void 0) g = 0;
1770
+ if (b === void 0) b = 0;
1771
+ let l = (BCAD * b + r$1 * DE - g * BE) / (BCAD + DE - BE);
1772
+ let x = b - l;
1773
+ let y = (M[4] * (g - l) - M[2] * x) / M[3];
1774
+ let res = {
1775
+ mode: "cubehelix",
1776
+ l,
1777
+ s: l === 0 || l === 1 ? void 0 : Math.sqrt(x * x + y * y) / (M[4] * l * (1 - l))
1778
+ };
1779
+ if (res.s) res.h = Math.atan2(y, x) * radToDeg - 120;
1780
+ if (alpha !== void 0) res.alpha = alpha;
1781
+ return res;
1782
+ };
1783
+ var convertRgbToCubehelix_default = convertRgbToCubehelix;
1784
+ const convertCubehelixToRgb = ({ h, s, l, alpha }) => {
1785
+ let res = { mode: "rgb" };
1786
+ h = (h === void 0 ? 0 : h + 120) * degToRad;
1787
+ if (l === void 0) l = 0;
1788
+ let amp = s === void 0 ? 0 : s * l * (1 - l);
1789
+ let cosh = Math.cos(h);
1790
+ let sinh = Math.sin(h);
1791
+ res.r = l + amp * (M[0] * cosh + M[1] * sinh);
1792
+ res.g = l + amp * (M[2] * cosh + M[3] * sinh);
1793
+ res.b = l + amp * (M[4] * cosh + M[5] * sinh);
1794
+ if (alpha !== void 0) res.alpha = alpha;
1795
+ return res;
1796
+ };
1797
+ var definition_default$15 = {
1798
+ mode: "cubehelix",
1799
+ channels: [
1800
+ "h",
1801
+ "s",
1802
+ "l",
1803
+ "alpha"
1804
+ ],
1805
+ parse: ["--cubehelix"],
1806
+ serialize: "--cubehelix",
1807
+ ranges: {
1808
+ h: [0, 360],
1809
+ s: [0, 4.614],
1810
+ l: [0, 1]
1811
+ },
1812
+ fromMode: { rgb: convertRgbToCubehelix_default },
1813
+ toMode: { rgb: convertCubehelixToRgb },
1814
+ interpolate: {
1815
+ h: {
1816
+ use: interpolatorLinear,
1817
+ fixup: fixupHueShorter
1818
+ },
1819
+ s: interpolatorLinear,
1820
+ l: interpolatorLinear,
1821
+ alpha: {
1822
+ use: interpolatorLinear,
1823
+ fixup: fixupAlpha
1824
+ }
1825
+ },
1826
+ difference: { h: differenceHueSaturation },
1827
+ average: { h: averageAngle }
1828
+ };
1829
+ const kE = 1;
1830
+ const kCH = 1;
1831
+ const θ = 26 / 180 * Math.PI;
1832
+ const cosθ = Math.cos(θ);
1833
+ const sinθ = Math.sin(θ);
1834
+ const factor = 100 / Math.log(139 / 100);
1835
+ const convertDlchToLab65 = ({ l, c: c$1, h, alpha }) => {
1836
+ if (l === void 0) l = 0;
1837
+ if (c$1 === void 0) c$1 = 0;
1838
+ if (h === void 0) h = 0;
1839
+ let res = {
1840
+ mode: "lab65",
1841
+ l: (Math.exp(l * kE / factor) - 1) / .0039
1842
+ };
1843
+ let G = (Math.exp(.0435 * c$1 * kCH * kE) - 1) / .075;
1844
+ let e$3 = G * Math.cos(h / 180 * Math.PI - θ);
1845
+ let f$2 = G * Math.sin(h / 180 * Math.PI - θ);
1846
+ res.a = e$3 * cosθ - f$2 / .83 * sinθ;
1847
+ res.b = e$3 * sinθ + f$2 / .83 * cosθ;
1848
+ if (alpha !== void 0) res.alpha = alpha;
1849
+ return res;
1850
+ };
1851
+ var convertDlchToLab65_default = convertDlchToLab65;
1852
+ const convertLab65ToDlch = ({ l, a, b, alpha }) => {
1853
+ if (l === void 0) l = 0;
1854
+ if (a === void 0) a = 0;
1855
+ if (b === void 0) b = 0;
1856
+ let e$3 = a * cosθ + b * sinθ;
1857
+ let f$2 = .83 * (b * cosθ - a * sinθ);
1858
+ let G = Math.sqrt(e$3 * e$3 + f$2 * f$2);
1859
+ let res = {
1860
+ mode: "dlch",
1861
+ l: factor / kE * Math.log(1 + .0039 * l),
1862
+ c: Math.log(1 + .075 * G) / (.0435 * kCH * kE)
1863
+ };
1864
+ if (res.c) res.h = normalizeHue_default((Math.atan2(f$2, e$3) + θ) / Math.PI * 180);
1865
+ if (alpha !== void 0) res.alpha = alpha;
1866
+ return res;
1867
+ };
1868
+ var convertLab65ToDlch_default = convertLab65ToDlch;
1869
+ const convertDlabToLab65 = (c$1) => convertDlchToLab65_default(convertLabToLch_default(c$1, "dlch"));
1870
+ const convertLab65ToDlab = (c$1) => convertLchToLab_default(convertLab65ToDlch_default(c$1), "dlab");
1871
+ var definition_default$16 = {
1872
+ mode: "dlab",
1873
+ parse: ["--din99o-lab"],
1874
+ serialize: "--din99o-lab",
1875
+ toMode: {
1876
+ lab65: convertDlabToLab65,
1877
+ rgb: (c$1) => convertLab65ToRgb_default(convertDlabToLab65(c$1))
1878
+ },
1879
+ fromMode: {
1880
+ lab65: convertLab65ToDlab,
1881
+ rgb: (c$1) => convertLab65ToDlab(convertRgbToLab65_default(c$1))
1882
+ },
1883
+ channels: [
1884
+ "l",
1885
+ "a",
1886
+ "b",
1887
+ "alpha"
1888
+ ],
1889
+ ranges: {
1890
+ l: [0, 100],
1891
+ a: [-40.09, 45.501],
1892
+ b: [-40.469, 44.344]
1893
+ },
1894
+ interpolate: {
1895
+ l: interpolatorLinear,
1896
+ a: interpolatorLinear,
1897
+ b: interpolatorLinear,
1898
+ alpha: {
1899
+ use: interpolatorLinear,
1900
+ fixup: fixupAlpha
1901
+ }
1902
+ }
1903
+ };
1904
+ var definition_default$17 = {
1905
+ mode: "dlch",
1906
+ parse: ["--din99o-lch"],
1907
+ serialize: "--din99o-lch",
1908
+ toMode: {
1909
+ lab65: convertDlchToLab65_default,
1910
+ dlab: (c$1) => convertLchToLab_default(c$1, "dlab"),
1911
+ rgb: (c$1) => convertLab65ToRgb_default(convertDlchToLab65_default(c$1))
1912
+ },
1913
+ fromMode: {
1914
+ lab65: convertLab65ToDlch_default,
1915
+ dlab: (c$1) => convertLabToLch_default(c$1, "dlch"),
1916
+ rgb: (c$1) => convertLab65ToDlch_default(convertRgbToLab65_default(c$1))
1917
+ },
1918
+ channels: [
1919
+ "l",
1920
+ "c",
1921
+ "h",
1922
+ "alpha"
1923
+ ],
1924
+ ranges: {
1925
+ l: [0, 100],
1926
+ c: [0, 51.484],
1927
+ h: [0, 360]
1928
+ },
1929
+ interpolate: {
1930
+ l: interpolatorLinear,
1931
+ c: interpolatorLinear,
1932
+ h: {
1933
+ use: interpolatorLinear,
1934
+ fixup: fixupHueShorter
1935
+ },
1936
+ alpha: {
1937
+ use: interpolatorLinear,
1938
+ fixup: fixupAlpha
1939
+ }
1940
+ },
1941
+ difference: { h: differenceHueChroma },
1942
+ average: { h: averageAngle }
1943
+ };
1944
+ function convertHsiToRgb({ h, s, i, alpha }) {
1945
+ h = normalizeHue_default(h !== void 0 ? h : 0);
1946
+ if (s === void 0) s = 0;
1947
+ if (i === void 0) i = 0;
1948
+ let f$2 = Math.abs(h / 60 % 2 - 1);
1949
+ let res;
1950
+ switch (Math.floor(h / 60)) {
1951
+ case 0:
1952
+ res = {
1953
+ r: i * (1 + s * (3 / (2 - f$2) - 1)),
1954
+ g: i * (1 + s * (3 * (1 - f$2) / (2 - f$2) - 1)),
1955
+ b: i * (1 - s)
1956
+ };
1957
+ break;
1958
+ case 1:
1959
+ res = {
1960
+ r: i * (1 + s * (3 * (1 - f$2) / (2 - f$2) - 1)),
1961
+ g: i * (1 + s * (3 / (2 - f$2) - 1)),
1962
+ b: i * (1 - s)
1963
+ };
1964
+ break;
1965
+ case 2:
1966
+ res = {
1967
+ r: i * (1 - s),
1968
+ g: i * (1 + s * (3 / (2 - f$2) - 1)),
1969
+ b: i * (1 + s * (3 * (1 - f$2) / (2 - f$2) - 1))
1970
+ };
1971
+ break;
1972
+ case 3:
1973
+ res = {
1974
+ r: i * (1 - s),
1975
+ g: i * (1 + s * (3 * (1 - f$2) / (2 - f$2) - 1)),
1976
+ b: i * (1 + s * (3 / (2 - f$2) - 1))
1977
+ };
1978
+ break;
1979
+ case 4:
1980
+ res = {
1981
+ r: i * (1 + s * (3 * (1 - f$2) / (2 - f$2) - 1)),
1982
+ g: i * (1 - s),
1983
+ b: i * (1 + s * (3 / (2 - f$2) - 1))
1984
+ };
1985
+ break;
1986
+ case 5:
1987
+ res = {
1988
+ r: i * (1 + s * (3 / (2 - f$2) - 1)),
1989
+ g: i * (1 - s),
1990
+ b: i * (1 + s * (3 * (1 - f$2) / (2 - f$2) - 1))
1991
+ };
1992
+ break;
1993
+ default: res = {
1994
+ r: i * (1 - s),
1995
+ g: i * (1 - s),
1996
+ b: i * (1 - s)
1997
+ };
1998
+ }
1999
+ res.mode = "rgb";
2000
+ if (alpha !== void 0) res.alpha = alpha;
2001
+ return res;
2002
+ }
2003
+ function convertRgbToHsi({ r: r$1, g, b, alpha }) {
2004
+ if (r$1 === void 0) r$1 = 0;
2005
+ if (g === void 0) g = 0;
2006
+ if (b === void 0) b = 0;
2007
+ let M$1 = Math.max(r$1, g, b), m = Math.min(r$1, g, b);
2008
+ let res = {
2009
+ mode: "hsi",
2010
+ s: r$1 + g + b === 0 ? 0 : 1 - 3 * m / (r$1 + g + b),
2011
+ i: (r$1 + g + b) / 3
2012
+ };
2013
+ if (M$1 - m !== 0) res.h = (M$1 === r$1 ? (g - b) / (M$1 - m) + (g < b) * 6 : M$1 === g ? (b - r$1) / (M$1 - m) + 2 : (r$1 - g) / (M$1 - m) + 4) * 60;
2014
+ if (alpha !== void 0) res.alpha = alpha;
2015
+ return res;
2016
+ }
2017
+ var definition_default$18 = {
2018
+ mode: "hsi",
2019
+ toMode: { rgb: convertHsiToRgb },
2020
+ parse: ["--hsi"],
2021
+ serialize: "--hsi",
2022
+ fromMode: { rgb: convertRgbToHsi },
2023
+ channels: [
2024
+ "h",
2025
+ "s",
2026
+ "i",
2027
+ "alpha"
2028
+ ],
2029
+ ranges: { h: [0, 360] },
2030
+ gamut: "rgb",
2031
+ interpolate: {
2032
+ h: {
2033
+ use: interpolatorLinear,
2034
+ fixup: fixupHueShorter
2035
+ },
2036
+ s: interpolatorLinear,
2037
+ i: interpolatorLinear,
2038
+ alpha: {
2039
+ use: interpolatorLinear,
2040
+ fixup: fixupAlpha
2041
+ }
2042
+ },
2043
+ difference: { h: differenceHueSaturation },
2044
+ average: { h: averageAngle }
2045
+ };
2046
+ const YW = 203;
2047
+ const M1 = .1593017578125;
2048
+ const M2 = 78.84375;
2049
+ const C1 = .8359375;
2050
+ const C2 = 18.8515625;
2051
+ const C3 = 18.6875;
2052
+ function transferPqDecode(v) {
2053
+ if (v < 0) return 0;
2054
+ const c$1 = Math.pow(v, 1 / M2);
2055
+ return 1e4 * Math.pow(Math.max(0, c$1 - C1) / (C2 - C3 * c$1), 1 / M1);
2056
+ }
2057
+ function transferPqEncode(v) {
2058
+ if (v < 0) return 0;
2059
+ const c$1 = Math.pow(v / 1e4, M1);
2060
+ return Math.pow((C1 + C2 * c$1) / (1 + C3 * c$1), M2);
2061
+ }
2062
+ const toRel = (c$1) => Math.max(c$1 / YW, 0);
2063
+ const convertItpToXyz65 = ({ i, t, p: p$2, alpha }) => {
2064
+ if (i === void 0) i = 0;
2065
+ if (t === void 0) t = 0;
2066
+ if (p$2 === void 0) p$2 = 0;
2067
+ const l = transferPqDecode(i + .008609037037932761 * t + .11102962500302593 * p$2);
2068
+ const m = transferPqDecode(i - .00860903703793275 * t - .11102962500302599 * p$2);
2069
+ const s = transferPqDecode(i + .5600313357106791 * t - .32062717498731885 * p$2);
2070
+ const res = {
2071
+ mode: "xyz65",
2072
+ x: toRel(2.070152218389422 * l - 1.3263473389671556 * m + .2066510476294051 * s),
2073
+ y: toRel(.3647385209748074 * l + .680566024947227 * m - .0453045459220346 * s),
2074
+ z: toRel(-.049747207535812 * l - .0492609666966138 * m + 1.1880659249923042 * s)
2075
+ };
2076
+ if (alpha !== void 0) res.alpha = alpha;
2077
+ return res;
2078
+ };
2079
+ var convertItpToXyz65_default = convertItpToXyz65;
2080
+ const toAbs = (c$1 = 0) => Math.max(c$1 * YW, 0);
2081
+ const convertXyz65ToItp = ({ x, y, z, alpha }) => {
2082
+ const absX = toAbs(x);
2083
+ const absY = toAbs(y);
2084
+ const absZ = toAbs(z);
2085
+ const l = transferPqEncode(.3592832590121217 * absX + .6976051147779502 * absY - .0358915932320289 * absZ);
2086
+ const m = transferPqEncode(-.1920808463704995 * absX + 1.1004767970374323 * absY + .0753748658519118 * absZ);
2087
+ const s = transferPqEncode(.0070797844607477 * absX + .0748396662186366 * absY + .8433265453898765 * absZ);
2088
+ const i = .5 * l + .5 * m;
2089
+ const t = 1.61376953125 * l - 3.323486328125 * m + 1.709716796875 * s;
2090
+ const p$2 = 4.378173828125 * l - 4.24560546875 * m - .132568359375 * s;
2091
+ const res = {
2092
+ mode: "itp",
2093
+ i,
2094
+ t,
2095
+ p: p$2
2096
+ };
2097
+ if (alpha !== void 0) res.alpha = alpha;
2098
+ return res;
2099
+ };
2100
+ var convertXyz65ToItp_default = convertXyz65ToItp;
2101
+ var definition_default$20 = {
2102
+ mode: "itp",
2103
+ channels: [
2104
+ "i",
2105
+ "t",
2106
+ "p",
2107
+ "alpha"
2108
+ ],
2109
+ parse: ["--ictcp"],
2110
+ serialize: "--ictcp",
2111
+ toMode: {
2112
+ xyz65: convertItpToXyz65_default,
2113
+ rgb: (color) => convertXyz65ToRgb_default(convertItpToXyz65_default(color))
2114
+ },
2115
+ fromMode: {
2116
+ xyz65: convertXyz65ToItp_default,
2117
+ rgb: (color) => convertXyz65ToItp_default(convertRgbToXyz65_default(color))
2118
+ },
2119
+ ranges: {
2120
+ i: [0, .581],
2121
+ t: [-.369, .272],
2122
+ p: [-.164, .331]
2123
+ },
2124
+ interpolate: {
2125
+ i: interpolatorLinear,
2126
+ t: interpolatorLinear,
2127
+ p: interpolatorLinear,
2128
+ alpha: {
2129
+ use: interpolatorLinear,
2130
+ fixup: fixupAlpha
2131
+ }
2132
+ }
2133
+ };
2134
+ const p$1 = 134.03437499999998;
2135
+ const d0$1 = 16295499532821565e-27;
2136
+ const jabPqEncode = (v) => {
2137
+ if (v < 0) return 0;
2138
+ let vn$2 = Math.pow(v / 1e4, M1);
2139
+ return Math.pow((C1 + C2 * vn$2) / (1 + C3 * vn$2), p$1);
2140
+ };
2141
+ const abs = (v = 0) => Math.max(v * 203, 0);
2142
+ const convertXyz65ToJab = ({ x, y, z, alpha }) => {
2143
+ x = abs(x);
2144
+ y = abs(y);
2145
+ z = abs(z);
2146
+ let xp = 1.15 * x - .15 * z;
2147
+ let yp = .66 * y + .34 * x;
2148
+ let l = jabPqEncode(.41478972 * xp + .579999 * yp + .014648 * z);
2149
+ let m = jabPqEncode(-.20151 * xp + 1.120649 * yp + .0531008 * z);
2150
+ let s = jabPqEncode(-.0166008 * xp + .2648 * yp + .6684799 * z);
2151
+ let i = (l + m) / 2;
2152
+ let res = {
2153
+ mode: "jab",
2154
+ j: .44 * i / (1 - .56 * i) - d0$1,
2155
+ a: 3.524 * l - 4.066708 * m + .542708 * s,
2156
+ b: .199076 * l + 1.096799 * m - 1.295875 * s
2157
+ };
2158
+ if (alpha !== void 0) res.alpha = alpha;
2159
+ return res;
2160
+ };
2161
+ var convertXyz65ToJab_default = convertXyz65ToJab;
2162
+ const p = 134.03437499999998;
2163
+ const d0 = 16295499532821565e-27;
2164
+ const jabPqDecode = (v) => {
2165
+ if (v < 0) return 0;
2166
+ let vp = Math.pow(v, 1 / p);
2167
+ return 1e4 * Math.pow((C1 - vp) / (C3 * vp - C2), 1 / M1);
2168
+ };
2169
+ const rel = (v) => v / 203;
2170
+ const convertJabToXyz65 = ({ j, a, b, alpha }) => {
2171
+ if (j === void 0) j = 0;
2172
+ if (a === void 0) a = 0;
2173
+ if (b === void 0) b = 0;
2174
+ let i = (j + d0) / (.44 + .56 * (j + d0));
2175
+ let l = jabPqDecode(i + .13860504 * a + .058047316 * b);
2176
+ let m = jabPqDecode(i - .13860504 * a - .058047316 * b);
2177
+ let s = jabPqDecode(i - .096019242 * a - .8118919 * b);
2178
+ let res = {
2179
+ mode: "xyz65",
2180
+ x: rel(1.661373024652174 * l - .914523081304348 * m + .23136208173913045 * s),
2181
+ y: rel(-.3250758611844533 * l + 1.571847026732543 * m - .21825383453227928 * s),
2182
+ z: rel(-.090982811 * l - .31272829 * m + 1.5227666 * s)
2183
+ };
2184
+ if (alpha !== void 0) res.alpha = alpha;
2185
+ return res;
2186
+ };
2187
+ var convertJabToXyz65_default = convertJabToXyz65;
2188
+ const convertRgbToJab = (rgb$4) => {
2189
+ let res = convertXyz65ToJab_default(convertRgbToXyz65_default(rgb$4));
2190
+ if (rgb$4.r === rgb$4.b && rgb$4.b === rgb$4.g) res.a = res.b = 0;
2191
+ return res;
2192
+ };
2193
+ var convertRgbToJab_default = convertRgbToJab;
2194
+ const convertJabToRgb = (color) => convertXyz65ToRgb_default(convertJabToXyz65_default(color));
2195
+ var convertJabToRgb_default = convertJabToRgb;
2196
+ var definition_default$21 = {
2197
+ mode: "jab",
2198
+ channels: [
2199
+ "j",
2200
+ "a",
2201
+ "b",
2202
+ "alpha"
2203
+ ],
2204
+ parse: ["--jzazbz"],
2205
+ serialize: "--jzazbz",
2206
+ fromMode: {
2207
+ rgb: convertRgbToJab_default,
2208
+ xyz65: convertXyz65ToJab_default
2209
+ },
2210
+ toMode: {
2211
+ rgb: convertJabToRgb_default,
2212
+ xyz65: convertJabToXyz65_default
2213
+ },
2214
+ ranges: {
2215
+ j: [0, .222],
2216
+ a: [-.109, .129],
2217
+ b: [-.185, .134]
2218
+ },
2219
+ interpolate: {
2220
+ j: interpolatorLinear,
2221
+ a: interpolatorLinear,
2222
+ b: interpolatorLinear,
2223
+ alpha: {
2224
+ use: interpolatorLinear,
2225
+ fixup: fixupAlpha
2226
+ }
2227
+ }
2228
+ };
2229
+ const convertJabToJch = ({ j, a, b, alpha }) => {
2230
+ if (a === void 0) a = 0;
2231
+ if (b === void 0) b = 0;
2232
+ let c$1 = Math.sqrt(a * a + b * b);
2233
+ let res = {
2234
+ mode: "jch",
2235
+ j,
2236
+ c: c$1
2237
+ };
2238
+ if (c$1) res.h = normalizeHue_default(Math.atan2(b, a) * 180 / Math.PI);
2239
+ if (alpha !== void 0) res.alpha = alpha;
2240
+ return res;
2241
+ };
2242
+ var convertJabToJch_default = convertJabToJch;
2243
+ const convertJchToJab = ({ j, c: c$1, h, alpha }) => {
2244
+ if (h === void 0) h = 0;
2245
+ let res = {
2246
+ mode: "jab",
2247
+ j,
2248
+ a: c$1 ? c$1 * Math.cos(h / 180 * Math.PI) : 0,
2249
+ b: c$1 ? c$1 * Math.sin(h / 180 * Math.PI) : 0
2250
+ };
2251
+ if (alpha !== void 0) res.alpha = alpha;
2252
+ return res;
2253
+ };
2254
+ var convertJchToJab_default = convertJchToJab;
2255
+ var definition_default$22 = {
2256
+ mode: "jch",
2257
+ parse: ["--jzczhz"],
2258
+ serialize: "--jzczhz",
2259
+ toMode: {
2260
+ jab: convertJchToJab_default,
2261
+ rgb: (c$1) => convertJabToRgb_default(convertJchToJab_default(c$1))
2262
+ },
2263
+ fromMode: {
2264
+ rgb: (c$1) => convertJabToJch_default(convertRgbToJab_default(c$1)),
2265
+ jab: convertJabToJch_default
2266
+ },
2267
+ channels: [
2268
+ "j",
2269
+ "c",
2270
+ "h",
2271
+ "alpha"
2272
+ ],
2273
+ ranges: {
2274
+ j: [0, .221],
2275
+ c: [0, .19],
2276
+ h: [0, 360]
2277
+ },
2278
+ interpolate: {
2279
+ h: {
2280
+ use: interpolatorLinear,
2281
+ fixup: fixupHueShorter
2282
+ },
2283
+ c: interpolatorLinear,
2284
+ j: interpolatorLinear,
2285
+ alpha: {
2286
+ use: interpolatorLinear,
2287
+ fixup: fixupAlpha
2288
+ }
2289
+ },
2290
+ difference: { h: differenceHueChroma },
2291
+ average: { h: averageAngle }
2292
+ };
2293
+ const convertLuvToLchuv = ({ l, u, v, alpha }) => {
2294
+ if (u === void 0) u = 0;
2295
+ if (v === void 0) v = 0;
2296
+ let c$1 = Math.sqrt(u * u + v * v);
2297
+ let res = {
2298
+ mode: "lchuv",
2299
+ l,
2300
+ c: c$1
2301
+ };
2302
+ if (c$1) res.h = normalizeHue_default(Math.atan2(v, u) * 180 / Math.PI);
2303
+ if (alpha !== void 0) res.alpha = alpha;
2304
+ return res;
2305
+ };
2306
+ var convertLuvToLchuv_default = convertLuvToLchuv;
2307
+ const convertLchuvToLuv = ({ l, c: c$1, h, alpha }) => {
2308
+ if (h === void 0) h = 0;
2309
+ let res = {
2310
+ mode: "luv",
2311
+ l,
2312
+ u: c$1 ? c$1 * Math.cos(h / 180 * Math.PI) : 0,
2313
+ v: c$1 ? c$1 * Math.sin(h / 180 * Math.PI) : 0
2314
+ };
2315
+ if (alpha !== void 0) res.alpha = alpha;
2316
+ return res;
2317
+ };
2318
+ var convertLchuvToLuv_default = convertLchuvToLuv;
2319
+ const u_fn$1 = (x, y, z) => 4 * x / (x + 15 * y + 3 * z);
2320
+ const v_fn$1 = (x, y, z) => 9 * y / (x + 15 * y + 3 * z);
2321
+ const un$1 = u_fn$1(D50.X, D50.Y, D50.Z);
2322
+ const vn$1 = v_fn$1(D50.X, D50.Y, D50.Z);
2323
+ const l_fn = (value) => value <= e ? k * value : 116 * Math.cbrt(value) - 16;
2324
+ const convertXyz50ToLuv = ({ x, y, z, alpha }) => {
2325
+ if (x === void 0) x = 0;
2326
+ if (y === void 0) y = 0;
2327
+ if (z === void 0) z = 0;
2328
+ let l = l_fn(y / D50.Y);
2329
+ let u = u_fn$1(x, y, z);
2330
+ let v = v_fn$1(x, y, z);
2331
+ if (!isFinite(u) || !isFinite(v)) l = u = v = 0;
2332
+ else {
2333
+ u = 13 * l * (u - un$1);
2334
+ v = 13 * l * (v - vn$1);
2335
+ }
2336
+ let res = {
2337
+ mode: "luv",
2338
+ l,
2339
+ u,
2340
+ v
2341
+ };
2342
+ if (alpha !== void 0) res.alpha = alpha;
2343
+ return res;
2344
+ };
2345
+ var convertXyz50ToLuv_default = convertXyz50ToLuv;
2346
+ const u_fn = (x, y, z) => 4 * x / (x + 15 * y + 3 * z);
2347
+ const v_fn = (x, y, z) => 9 * y / (x + 15 * y + 3 * z);
2348
+ const un = u_fn(D50.X, D50.Y, D50.Z);
2349
+ const vn = v_fn(D50.X, D50.Y, D50.Z);
2350
+ const convertLuvToXyz50 = ({ l, u, v, alpha }) => {
2351
+ if (l === void 0) l = 0;
2352
+ if (l === 0) return {
2353
+ mode: "xyz50",
2354
+ x: 0,
2355
+ y: 0,
2356
+ z: 0
2357
+ };
2358
+ if (u === void 0) u = 0;
2359
+ if (v === void 0) v = 0;
2360
+ let up = u / (13 * l) + un;
2361
+ let vp = v / (13 * l) + vn;
2362
+ let y = D50.Y * (l <= 8 ? l / k : Math.pow((l + 16) / 116, 3));
2363
+ let x = y * (9 * up) / (4 * vp);
2364
+ let z = y * (12 - 3 * up - 20 * vp) / (4 * vp);
2365
+ let res = {
2366
+ mode: "xyz50",
2367
+ x,
2368
+ y,
2369
+ z
2370
+ };
2371
+ if (alpha !== void 0) res.alpha = alpha;
2372
+ return res;
2373
+ };
2374
+ var convertLuvToXyz50_default = convertLuvToXyz50;
2375
+ const convertRgbToLchuv = (rgb$4) => convertLuvToLchuv_default(convertXyz50ToLuv_default(convertRgbToXyz50_default(rgb$4)));
2376
+ const convertLchuvToRgb = (lchuv$1) => convertXyz50ToRgb_default(convertLuvToXyz50_default(convertLchuvToLuv_default(lchuv$1)));
2377
+ var definition_default$24 = {
2378
+ mode: "lchuv",
2379
+ toMode: {
2380
+ luv: convertLchuvToLuv_default,
2381
+ rgb: convertLchuvToRgb
2382
+ },
2383
+ fromMode: {
2384
+ rgb: convertRgbToLchuv,
2385
+ luv: convertLuvToLchuv_default
2386
+ },
2387
+ channels: [
2388
+ "l",
2389
+ "c",
2390
+ "h",
2391
+ "alpha"
2392
+ ],
2393
+ parse: ["--lchuv"],
2394
+ serialize: "--lchuv",
2395
+ ranges: {
2396
+ l: [0, 100],
2397
+ c: [0, 176.956],
2398
+ h: [0, 360]
2399
+ },
2400
+ interpolate: {
2401
+ h: {
2402
+ use: interpolatorLinear,
2403
+ fixup: fixupHueShorter
2404
+ },
2405
+ c: interpolatorLinear,
2406
+ l: interpolatorLinear,
2407
+ alpha: {
2408
+ use: interpolatorLinear,
2409
+ fixup: fixupAlpha
2410
+ }
2411
+ },
2412
+ difference: { h: differenceHueChroma },
2413
+ average: { h: averageAngle }
2414
+ };
2415
+ var definition_default$25 = {
2416
+ mode: "luv",
2417
+ toMode: {
2418
+ xyz50: convertLuvToXyz50_default,
2419
+ rgb: (luv$1) => convertXyz50ToRgb_default(convertLuvToXyz50_default(luv$1))
2420
+ },
2421
+ fromMode: {
2422
+ xyz50: convertXyz50ToLuv_default,
2423
+ rgb: (rgb$4) => convertXyz50ToLuv_default(convertRgbToXyz50_default(rgb$4))
2424
+ },
2425
+ channels: [
2426
+ "l",
2427
+ "u",
2428
+ "v",
2429
+ "alpha"
2430
+ ],
2431
+ parse: ["--luv"],
2432
+ serialize: "--luv",
2433
+ ranges: {
2434
+ l: [0, 100],
2435
+ u: [-84.936, 175.042],
2436
+ v: [-125.882, 87.243]
2437
+ },
2438
+ interpolate: {
2439
+ l: interpolatorLinear,
2440
+ u: interpolatorLinear,
2441
+ v: interpolatorLinear,
2442
+ alpha: {
2443
+ use: interpolatorLinear,
2444
+ fixup: fixupAlpha
2445
+ }
2446
+ }
2447
+ };
1739
2448
  function toe(x) {
1740
2449
  const k_1 = .206;
1741
2450
  const k_2 = .03;
@@ -1804,25 +2513,183 @@ function compute_max_saturation(a, b) {
1804
2513
  }
1805
2514
  function find_cusp(a, b) {
1806
2515
  let S_cusp = compute_max_saturation(a, b);
1807
- let rgb$2 = convertOklabToLrgb_default({
2516
+ let rgb$4 = convertOklabToLrgb_default({
1808
2517
  l: 1,
1809
2518
  a: S_cusp * a,
1810
2519
  b: S_cusp * b
1811
2520
  });
1812
- let L_cusp = Math.cbrt(1 / Math.max(rgb$2.r, rgb$2.g, rgb$2.b));
2521
+ let L_cusp = Math.cbrt(1 / Math.max(rgb$4.r, rgb$4.g, rgb$4.b));
1813
2522
  let C_cusp = L_cusp * S_cusp;
1814
2523
  return [L_cusp, C_cusp];
1815
2524
  }
2525
+ function find_gamut_intersection(a, b, L1, C1$1, L0, cusp = null) {
2526
+ if (!cusp) cusp = find_cusp(a, b);
2527
+ let t;
2528
+ if ((L1 - L0) * cusp[1] - (cusp[0] - L0) * C1$1 <= 0) t = cusp[1] * L0 / (C1$1 * cusp[0] + cusp[1] * (L0 - L1));
2529
+ else {
2530
+ t = cusp[1] * (L0 - 1) / (C1$1 * (cusp[0] - 1) + cusp[1] * (L0 - L1));
2531
+ {
2532
+ let dL = L1 - L0;
2533
+ let dC = C1$1;
2534
+ let k_l = .3963377774 * a + .2158037573 * b;
2535
+ let k_m = -.1055613458 * a - .0638541728 * b;
2536
+ let k_s = -.0894841775 * a - 1.291485548 * b;
2537
+ let l_dt = dL + dC * k_l;
2538
+ let m_dt = dL + dC * k_m;
2539
+ let s_dt = dL + dC * k_s;
2540
+ {
2541
+ let L = L0 * (1 - t) + t * L1;
2542
+ let C = t * C1$1;
2543
+ let l_ = L + C * k_l;
2544
+ let m_ = L + C * k_m;
2545
+ let s_ = L + C * k_s;
2546
+ let l = l_ * l_ * l_;
2547
+ let m = m_ * m_ * m_;
2548
+ let s = s_ * s_ * s_;
2549
+ let ldt = 3 * l_dt * l_ * l_;
2550
+ let mdt = 3 * m_dt * m_ * m_;
2551
+ let sdt = 3 * s_dt * s_ * s_;
2552
+ let ldt2 = 6 * l_dt * l_dt * l_;
2553
+ let mdt2 = 6 * m_dt * m_dt * m_;
2554
+ let sdt2 = 6 * s_dt * s_dt * s_;
2555
+ let r$1 = 4.0767416621 * l - 3.3077115913 * m + .2309699292 * s - 1;
2556
+ let r1 = 4.0767416621 * ldt - 3.3077115913 * mdt + .2309699292 * sdt;
2557
+ let r2 = 4.0767416621 * ldt2 - 3.3077115913 * mdt2 + .2309699292 * sdt2;
2558
+ let u_r = r1 / (r1 * r1 - .5 * r$1 * r2);
2559
+ let t_r = -r$1 * u_r;
2560
+ let g = -1.2684380046 * l + 2.6097574011 * m - .3413193965 * s - 1;
2561
+ let g1 = -1.2684380046 * ldt + 2.6097574011 * mdt - .3413193965 * sdt;
2562
+ let g2 = -1.2684380046 * ldt2 + 2.6097574011 * mdt2 - .3413193965 * sdt2;
2563
+ let u_g = g1 / (g1 * g1 - .5 * g * g2);
2564
+ let t_g = -g * u_g;
2565
+ let b$1 = -.0041960863 * l - .7034186147 * m + 1.707614701 * s - 1;
2566
+ let b1 = -.0041960863 * ldt - .7034186147 * mdt + 1.707614701 * sdt;
2567
+ let b2 = -.0041960863 * ldt2 - .7034186147 * mdt2 + 1.707614701 * sdt2;
2568
+ let u_b = b1 / (b1 * b1 - .5 * b$1 * b2);
2569
+ let t_b = -b$1 * u_b;
2570
+ t_r = u_r >= 0 ? t_r : 1e6;
2571
+ t_g = u_g >= 0 ? t_g : 1e6;
2572
+ t_b = u_b >= 0 ? t_b : 1e6;
2573
+ t += Math.min(t_r, Math.min(t_g, t_b));
2574
+ }
2575
+ }
2576
+ }
2577
+ return t;
2578
+ }
1816
2579
  function get_ST_max(a_, b_, cusp = null) {
1817
2580
  if (!cusp) cusp = find_cusp(a_, b_);
1818
2581
  let L = cusp[0];
1819
2582
  let C = cusp[1];
1820
2583
  return [C / L, C / (1 - L)];
1821
2584
  }
1822
- function convertOklabToOkhsv(lab) {
1823
- let l = lab.l !== void 0 ? lab.l : 0;
1824
- let a = lab.a !== void 0 ? lab.a : 0;
1825
- let b = lab.b !== void 0 ? lab.b : 0;
2585
+ function get_Cs(L, a_, b_) {
2586
+ let cusp = find_cusp(a_, b_);
2587
+ let C_max = find_gamut_intersection(a_, b_, L, 1, L, cusp);
2588
+ let ST_max = get_ST_max(a_, b_, cusp);
2589
+ let S_mid = .11516993 + 1 / (7.4477897 + 4.1590124 * b_ + a_ * (-2.19557347 + 1.75198401 * b_ + a_ * (-2.13704948 - 10.02301043 * b_ + a_ * (-4.24894561 + 5.38770819 * b_ + 4.69891013 * a_))));
2590
+ let T_mid = .11239642 + 1 / (1.6132032 - .68124379 * b_ + a_ * (.40370612 + .90148123 * b_ + a_ * (-.27087943 + .6122399 * b_ + a_ * (.00299215 - .45399568 * b_ - .14661872 * a_))));
2591
+ let k$3 = C_max / Math.min(L * ST_max[0], (1 - L) * ST_max[1]);
2592
+ let C_a = L * S_mid;
2593
+ let C_b = (1 - L) * T_mid;
2594
+ let C_mid = .9 * k$3 * Math.sqrt(Math.sqrt(1 / (1 / (C_a * C_a * C_a * C_a) + 1 / (C_b * C_b * C_b * C_b))));
2595
+ C_a = L * .4;
2596
+ C_b = (1 - L) * .8;
2597
+ return [
2598
+ Math.sqrt(1 / (1 / (C_a * C_a) + 1 / (C_b * C_b))),
2599
+ C_mid,
2600
+ C_max
2601
+ ];
2602
+ }
2603
+ function convertOklabToOkhsl(lab$2) {
2604
+ const l = lab$2.l !== void 0 ? lab$2.l : 0;
2605
+ const a = lab$2.a !== void 0 ? lab$2.a : 0;
2606
+ const b = lab$2.b !== void 0 ? lab$2.b : 0;
2607
+ const ret = {
2608
+ mode: "okhsl",
2609
+ l: toe(l)
2610
+ };
2611
+ if (lab$2.alpha !== void 0) ret.alpha = lab$2.alpha;
2612
+ let c$1 = Math.sqrt(a * a + b * b);
2613
+ if (!c$1) {
2614
+ ret.s = 0;
2615
+ return ret;
2616
+ }
2617
+ let [C_0, C_mid, C_max] = get_Cs(l, a / c$1, b / c$1);
2618
+ let s;
2619
+ if (c$1 < C_mid) {
2620
+ let k_0 = 0;
2621
+ let k_1 = .8 * C_0;
2622
+ let k_2 = 1 - k_1 / C_mid;
2623
+ s = (c$1 - k_0) / (k_1 + k_2 * (c$1 - k_0)) * .8;
2624
+ } else {
2625
+ let k_0 = C_mid;
2626
+ let k_1 = .2 * C_mid * C_mid * 1.25 * 1.25 / C_0;
2627
+ let k_2 = 1 - k_1 / (C_max - C_mid);
2628
+ s = .8 + .2 * ((c$1 - k_0) / (k_1 + k_2 * (c$1 - k_0)));
2629
+ }
2630
+ if (s) {
2631
+ ret.s = s;
2632
+ ret.h = normalizeHue_default(Math.atan2(b, a) * 180 / Math.PI);
2633
+ }
2634
+ return ret;
2635
+ }
2636
+ function convertOkhslToOklab(hsl$3) {
2637
+ let h = hsl$3.h !== void 0 ? hsl$3.h : 0;
2638
+ let s = hsl$3.s !== void 0 ? hsl$3.s : 0;
2639
+ let l = hsl$3.l !== void 0 ? hsl$3.l : 0;
2640
+ const ret = {
2641
+ mode: "oklab",
2642
+ l: toe_inv(l)
2643
+ };
2644
+ if (hsl$3.alpha !== void 0) ret.alpha = hsl$3.alpha;
2645
+ if (!s || l === 1) {
2646
+ ret.a = ret.b = 0;
2647
+ return ret;
2648
+ }
2649
+ let a_ = Math.cos(h / 180 * Math.PI);
2650
+ let b_ = Math.sin(h / 180 * Math.PI);
2651
+ let [C_0, C_mid, C_max] = get_Cs(ret.l, a_, b_);
2652
+ let t, k_0, k_1, k_2;
2653
+ if (s < .8) {
2654
+ t = 1.25 * s;
2655
+ k_0 = 0;
2656
+ k_1 = .8 * C_0;
2657
+ k_2 = 1 - k_1 / C_mid;
2658
+ } else {
2659
+ t = 5 * (s - .8);
2660
+ k_0 = C_mid;
2661
+ k_1 = .2 * C_mid * C_mid * 1.25 * 1.25 / C_0;
2662
+ k_2 = 1 - k_1 / (C_max - C_mid);
2663
+ }
2664
+ let C = k_0 + t * k_1 / (1 - k_2 * t);
2665
+ ret.a = C * a_;
2666
+ ret.b = C * b_;
2667
+ return ret;
2668
+ }
2669
+ var modeOkhsl_default = {
2670
+ ...definition_default$1,
2671
+ mode: "okhsl",
2672
+ channels: [
2673
+ "h",
2674
+ "s",
2675
+ "l",
2676
+ "alpha"
2677
+ ],
2678
+ parse: ["--okhsl"],
2679
+ serialize: "--okhsl",
2680
+ fromMode: {
2681
+ oklab: convertOklabToOkhsl,
2682
+ rgb: (c$1) => convertOklabToOkhsl(convertRgbToOklab_default(c$1))
2683
+ },
2684
+ toMode: {
2685
+ oklab: convertOkhslToOklab,
2686
+ rgb: (c$1) => convertOklabToRgb_default(convertOkhslToOklab(c$1))
2687
+ }
2688
+ };
2689
+ function convertOklabToOkhsv(lab$2) {
2690
+ let l = lab$2.l !== void 0 ? lab$2.l : 0;
2691
+ let a = lab$2.a !== void 0 ? lab$2.a : 0;
2692
+ let b = lab$2.b !== void 0 ? lab$2.b : 0;
1826
2693
  let c$1 = Math.sqrt(a * a + b * b);
1827
2694
  let a_ = c$1 ? a / c$1 : 1;
1828
2695
  let b_ = c$1 ? b / c$1 : 1;
@@ -1849,15 +2716,15 @@ function convertOklabToOkhsv(lab) {
1849
2716
  v: l ? l / L_v : 0
1850
2717
  };
1851
2718
  if (ret.s) ret.h = normalizeHue_default(Math.atan2(b, a) * 180 / Math.PI);
1852
- if (lab.alpha !== void 0) ret.alpha = lab.alpha;
2719
+ if (lab$2.alpha !== void 0) ret.alpha = lab$2.alpha;
1853
2720
  return ret;
1854
2721
  }
1855
- function convertOkhsvToOklab(hsv) {
2722
+ function convertOkhsvToOklab(hsv$2) {
1856
2723
  const ret = { mode: "oklab" };
1857
- if (hsv.alpha !== void 0) ret.alpha = hsv.alpha;
1858
- const h = hsv.h !== void 0 ? hsv.h : 0;
1859
- const s = hsv.s !== void 0 ? hsv.s : 0;
1860
- const v = hsv.v !== void 0 ? hsv.v : 0;
2724
+ if (hsv$2.alpha !== void 0) ret.alpha = hsv$2.alpha;
2725
+ const h = hsv$2.h !== void 0 ? hsv$2.h : 0;
2726
+ const s = hsv$2.s !== void 0 ? hsv$2.s : 0;
2727
+ const v = hsv$2.v !== void 0 ? hsv$2.v : 0;
1861
2728
  const a_ = Math.cos(h / 180 * Math.PI);
1862
2729
  const b_ = Math.sin(h / 180 * Math.PI);
1863
2730
  const [S_max, T] = get_ST_max(a_, b_);
@@ -1880,8 +2747,8 @@ function convertOkhsvToOklab(hsv) {
1880
2747
  ret.b = C * b_ * scale_L;
1881
2748
  return ret;
1882
2749
  }
1883
- const modeOkhsv = {
1884
- ...definition_default$15,
2750
+ var modeOkhsv_default = {
2751
+ ...definition_default$19,
1885
2752
  mode: "okhsv",
1886
2753
  channels: [
1887
2754
  "h",
@@ -1900,14 +2767,157 @@ const modeOkhsv = {
1900
2767
  rgb: (c$1) => convertOklabToRgb_default(convertOkhsvToOklab(c$1))
1901
2768
  }
1902
2769
  };
1903
- var modeOkhsv_default = modeOkhsv;
2770
+ const bias = .0037930732552754493;
2771
+ const bias_cbrt = Math.cbrt(bias);
2772
+ const transfer$1 = (v) => Math.cbrt(v) - bias_cbrt;
2773
+ const convertRgbToXyb = (color) => {
2774
+ const { r: r$1, g, b, alpha } = convertRgbToLrgb_default(color);
2775
+ const l = transfer$1(.3 * r$1 + .622 * g + .078 * b + bias);
2776
+ const m = transfer$1(.23 * r$1 + .692 * g + .078 * b + bias);
2777
+ const s = transfer$1(.2434226892454782 * r$1 + .2047674442449682 * g + .5518098665095535 * b + bias);
2778
+ const res = {
2779
+ mode: "xyb",
2780
+ x: (l - m) / 2,
2781
+ y: (l + m) / 2,
2782
+ b: s - (l + m) / 2
2783
+ };
2784
+ if (alpha !== void 0) res.alpha = alpha;
2785
+ return res;
2786
+ };
2787
+ var convertRgbToXyb_default = convertRgbToXyb;
2788
+ const transfer = (v) => Math.pow(v + bias_cbrt, 3);
2789
+ const convertXybToRgb = ({ x, y, b, alpha }) => {
2790
+ if (x === void 0) x = 0;
2791
+ if (y === void 0) y = 0;
2792
+ if (b === void 0) b = 0;
2793
+ const l = transfer(x + y) - bias;
2794
+ const m = transfer(y - x) - bias;
2795
+ const s = transfer(b + y) - bias;
2796
+ const res = convertLrgbToRgb_default({
2797
+ r: 11.031566904639861 * l - 9.866943908131562 * m - .16462299650829934 * s,
2798
+ g: -3.2541473810744237 * l + 4.418770377582723 * m - .16462299650829934 * s,
2799
+ b: -3.6588512867136815 * l + 2.7129230459360922 * m + 1.9459282407775895 * s
2800
+ });
2801
+ if (alpha !== void 0) res.alpha = alpha;
2802
+ return res;
2803
+ };
2804
+ var definition_default$26 = {
2805
+ mode: "xyb",
2806
+ channels: [
2807
+ "x",
2808
+ "y",
2809
+ "b",
2810
+ "alpha"
2811
+ ],
2812
+ parse: ["--xyb"],
2813
+ serialize: "--xyb",
2814
+ toMode: { rgb: convertXybToRgb },
2815
+ fromMode: { rgb: convertRgbToXyb_default },
2816
+ ranges: {
2817
+ x: [-.0154, .0281],
2818
+ y: [0, .8453],
2819
+ b: [-.2778, .388]
2820
+ },
2821
+ interpolate: {
2822
+ x: interpolatorLinear,
2823
+ y: interpolatorLinear,
2824
+ b: interpolatorLinear,
2825
+ alpha: {
2826
+ use: interpolatorLinear,
2827
+ fixup: fixupAlpha
2828
+ }
2829
+ }
2830
+ };
2831
+ const convertRgbToYiq = ({ r: r$1, g, b, alpha }) => {
2832
+ if (r$1 === void 0) r$1 = 0;
2833
+ if (g === void 0) g = 0;
2834
+ if (b === void 0) b = 0;
2835
+ const res = {
2836
+ mode: "yiq",
2837
+ y: .29889531 * r$1 + .58662247 * g + .11448223 * b,
2838
+ i: .59597799 * r$1 - .2741761 * g - .32180189 * b,
2839
+ q: .21147017 * r$1 - .52261711 * g + .31114694 * b
2840
+ };
2841
+ if (alpha !== void 0) res.alpha = alpha;
2842
+ return res;
2843
+ };
2844
+ var convertRgbToYiq_default = convertRgbToYiq;
2845
+ const convertYiqToRgb = ({ y, i, q, alpha }) => {
2846
+ if (y === void 0) y = 0;
2847
+ if (i === void 0) i = 0;
2848
+ if (q === void 0) q = 0;
2849
+ const res = {
2850
+ mode: "rgb",
2851
+ r: y + .95608445 * i + .6208885 * q,
2852
+ g: y - .27137664 * i - .6486059 * q,
2853
+ b: y - 1.10561724 * i + 1.70250126 * q
2854
+ };
2855
+ if (alpha !== void 0) res.alpha = alpha;
2856
+ return res;
2857
+ };
2858
+ var definition_default$27 = {
2859
+ mode: "yiq",
2860
+ toMode: { rgb: convertYiqToRgb },
2861
+ fromMode: { rgb: convertRgbToYiq_default },
2862
+ channels: [
2863
+ "y",
2864
+ "i",
2865
+ "q",
2866
+ "alpha"
2867
+ ],
2868
+ parse: ["--yiq"],
2869
+ serialize: "--yiq",
2870
+ ranges: {
2871
+ i: [-.595, .595],
2872
+ q: [-.522, .522]
2873
+ },
2874
+ interpolate: {
2875
+ y: interpolatorLinear,
2876
+ i: interpolatorLinear,
2877
+ q: interpolatorLinear,
2878
+ alpha: {
2879
+ use: interpolatorLinear,
2880
+ fixup: fixupAlpha
2881
+ }
2882
+ }
2883
+ };
1904
2884
  const r = (value, precision) => Math.round(value * (precision = Math.pow(10, precision))) / precision;
1905
2885
  const round = (precision = 4) => (value) => typeof value === "number" ? r(value, precision) : value;
1906
2886
  var round_default = round;
1907
- let twoDecimals = round_default(2);
2887
+ round_default(2);
2888
+ const rgb$2 = converter_default("rgb");
2889
+ converter_default("hsl");
1908
2890
  const rgb$1 = converter_default("rgb");
1909
- const hsl = converter_default("hsl");
1910
- const rgb = converter_default("rgb");
2891
+ useMode(definition_default);
2892
+ useMode(definition_default$15);
2893
+ useMode(definition_default$16);
2894
+ useMode(definition_default$17);
2895
+ useMode(definition_default$18);
2896
+ useMode(definition_default$1);
2897
+ useMode(definition_default$19);
2898
+ useMode(definition_default$2);
2899
+ useMode(definition_default$20);
2900
+ useMode(definition_default$21);
2901
+ useMode(definition_default$22);
2902
+ useMode(definition_default$3);
2903
+ useMode(definition_default$4);
2904
+ useMode(definition_default$5);
2905
+ useMode(definition_default$23);
2906
+ useMode(definition_default$24);
2907
+ useMode(definition_default$6);
2908
+ useMode(definition_default$25);
2909
+ useMode(modeOkhsl_default);
2910
+ useMode(modeOkhsv_default);
2911
+ useMode(definition_default$7);
2912
+ useMode(definition_default$8);
2913
+ useMode(definition_default$9);
2914
+ useMode(definition_default$10);
2915
+ useMode(definition_default$11);
2916
+ useMode(definition_default$12);
2917
+ useMode(definition_default$26);
2918
+ useMode(definition_default$13);
2919
+ useMode(definition_default$14);
2920
+ useMode(definition_default$27);
1911
2921
  const converters = {
1912
2922
  a98: useMode(definition_default),
1913
2923
  hsl: useMode(definition_default$1),
@@ -1964,7 +2974,7 @@ function pluginTailwind(options) {
1964
2974
  name: "@terrazzo/plugin-tailwind",
1965
2975
  enforce: "post",
1966
2976
  config(config) {
1967
- if (!config.plugins.some((p) => p.name === "@terrazzo/plugin-css")) throw new Error("@terrazzo/plugin-css missing! Please install and add to the plugins array to use the Tailwind plugin.");
2977
+ if (!config.plugins.some((p$2) => p$2.name === "@terrazzo/plugin-css")) throw new Error("@terrazzo/plugin-css missing! Please install and add to the plugins array to use the Tailwind plugin.");
1968
2978
  if (!options || !options.theme) throw new Error("Missing Tailwind `theme` option.");
1969
2979
  },
1970
2980
  async transform({ getTransforms, setTransform }) {
@@ -1997,7 +3007,7 @@ function pluginTailwind(options) {
1997
3007
  }
1998
3008
  },
1999
3009
  async build({ getTransforms, outputFile }) {
2000
- const output = ["@import \"tailwind\";", ""];
3010
+ const output = ["@import \"tailwindcss\";", ""];
2001
3011
  const variants = { ".": [] };
2002
3012
  for (const token of getTransforms({ format: FORMAT_ID })) {
2003
3013
  const { localID, value, mode } = token;