@zag-js/color-utils 0.69.0 → 0.71.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,33 +1,10 @@
1
- "use strict";
1
+ 'use strict';
2
+
3
+ var numericRange = require('@zag-js/numeric-range');
4
+
2
5
  var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
6
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
7
- var __export = (target, all) => {
8
- for (var name in all)
9
- __defProp(target, name, { get: all[name], enumerable: true });
10
- };
11
- var __copyProps = (to, from, except, desc) => {
12
- if (from && typeof from === "object" || typeof from === "function") {
13
- for (let key of __getOwnPropNames(from))
14
- if (!__hasOwnProp.call(to, key) && key !== except)
15
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
- }
17
- return to;
18
- };
19
- var __toCommonJS = (mod3) => __copyProps(__defProp({}, "__esModule", { value: true }), mod3);
20
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
21
-
22
- // src/index.ts
23
- var src_exports = {};
24
- __export(src_exports, {
25
- Color: () => Color,
26
- getColorAreaGradient: () => getColorAreaGradient,
27
- normalizeColor: () => normalizeColor,
28
- parseColor: () => parseColor
29
- });
30
- module.exports = __toCommonJS(src_exports);
7
+ var __publicField = (obj, key, value) => __defNormalProp(obj, key + "" , value);
31
8
 
32
9
  // src/color-format-gradient.ts
33
10
  var generateRGB_R = (orientation, dir, zValue) => {
@@ -208,9 +185,6 @@ function getColorAreaGradient(color, options) {
208
185
  }
209
186
  return background;
210
187
  }
211
-
212
- // src/color.ts
213
- var import_numeric_range = require("@zag-js/numeric-range");
214
188
  var isEqualObject = (a, b) => {
215
189
  if (Object.keys(a).length !== Object.keys(b).length) return false;
216
190
  for (let key in a) if (a[key] !== b[key]) return false;
@@ -227,18 +201,18 @@ var Color = class {
227
201
  getChannelValuePercent(channel, valueToCheck) {
228
202
  const value = valueToCheck ?? this.getChannelValue(channel);
229
203
  const { minValue, maxValue } = this.getChannelRange(channel);
230
- return (0, import_numeric_range.getValuePercent)(value, minValue, maxValue);
204
+ return numericRange.getValuePercent(value, minValue, maxValue);
231
205
  }
232
206
  getChannelPercentValue(channel, percentToCheck) {
233
207
  const { minValue, maxValue, step } = this.getChannelRange(channel);
234
- const percentValue = (0, import_numeric_range.getPercentValue)(percentToCheck, minValue, maxValue, step);
235
- return (0, import_numeric_range.snapValueToStep)(percentValue, minValue, maxValue, step);
208
+ const percentValue = numericRange.getPercentValue(percentToCheck, minValue, maxValue, step);
209
+ return numericRange.snapValueToStep(percentValue, minValue, maxValue, step);
236
210
  }
237
211
  withChannelValue(channel, value) {
238
212
  const { minValue, maxValue } = this.getChannelRange(channel);
239
213
  if (channel in this) {
240
214
  let clone = this.clone();
241
- clone[channel] = (0, import_numeric_range.clampValue)(value, minValue, maxValue);
215
+ clone[channel] = numericRange.clampValue(value, minValue, maxValue);
242
216
  return clone;
243
217
  }
244
218
  throw new Error("Unsupported color channel: " + channel);
@@ -252,8 +226,8 @@ var Color = class {
252
226
  }
253
227
  incrementChannel(channel, stepSize) {
254
228
  const { minValue, maxValue, step } = this.getChannelRange(channel);
255
- const value = (0, import_numeric_range.snapValueToStep)(
256
- (0, import_numeric_range.clampValue)(this.getChannelValue(channel) + stepSize, minValue, maxValue),
229
+ const value = numericRange.snapValueToStep(
230
+ numericRange.clampValue(this.getChannelValue(channel) + stepSize, minValue, maxValue),
257
231
  minValue,
258
232
  maxValue,
259
233
  step
@@ -268,15 +242,6 @@ var Color = class {
268
242
  return isSame && this.getChannelValue("alpha") === color.getChannelValue("alpha");
269
243
  }
270
244
  };
271
-
272
- // src/hsb-color.ts
273
- var import_numeric_range4 = require("@zag-js/numeric-range");
274
-
275
- // src/hsl-color.ts
276
- var import_numeric_range3 = require("@zag-js/numeric-range");
277
-
278
- // src/rgb-color.ts
279
- var import_numeric_range2 = require("@zag-js/numeric-range");
280
245
  var _RGBColor = class _RGBColor extends Color {
281
246
  constructor(red, green, blue, alpha) {
282
247
  super();
@@ -296,7 +261,7 @@ var _RGBColor = class _RGBColor extends Color {
296
261
  }
297
262
  const match = value.match(/^rgba?\((.*)\)$/);
298
263
  if (match?.[1]) {
299
- colors = match[1].split(",").map((value2) => Number(value2.trim())).map((num, i) => (0, import_numeric_range2.clampValue)(num, 0, i < 3 ? 255 : 1));
264
+ colors = match[1].split(",").map((value2) => Number(value2.trim())).map((num, i) => numericRange.clampValue(num, 0, i < 3 ? 255 : 1));
300
265
  }
301
266
  return colors.length < 3 ? void 0 : new _RGBColor(colors[0], colors[1], colors[2], colors[3] ?? 1);
302
267
  }
@@ -363,10 +328,10 @@ var _RGBColor = class _RGBColor extends Color {
363
328
  hue /= 6;
364
329
  }
365
330
  return new HSBColor(
366
- (0, import_numeric_range2.toFixedNumber)(hue * 360, 2),
367
- (0, import_numeric_range2.toFixedNumber)(saturation * 100, 2),
368
- (0, import_numeric_range2.toFixedNumber)(brightness * 100, 2),
369
- (0, import_numeric_range2.toFixedNumber)(this.alpha, 2)
331
+ numericRange.toFixedNumber(hue * 360, 2),
332
+ numericRange.toFixedNumber(saturation * 100, 2),
333
+ numericRange.toFixedNumber(brightness * 100, 2),
334
+ numericRange.toFixedNumber(this.alpha, 2)
370
335
  );
371
336
  }
372
337
  /**
@@ -402,10 +367,10 @@ var _RGBColor = class _RGBColor extends Color {
402
367
  hue /= 6;
403
368
  }
404
369
  return new HSLColor(
405
- (0, import_numeric_range2.toFixedNumber)(hue * 360, 2),
406
- (0, import_numeric_range2.toFixedNumber)(saturation * 100, 2),
407
- (0, import_numeric_range2.toFixedNumber)(lightness * 100, 2),
408
- (0, import_numeric_range2.toFixedNumber)(this.alpha, 2)
370
+ numericRange.toFixedNumber(hue * 360, 2),
371
+ numericRange.toFixedNumber(saturation * 100, 2),
372
+ numericRange.toFixedNumber(lightness * 100, 2),
373
+ numericRange.toFixedNumber(this.alpha, 2)
409
374
  );
410
375
  }
411
376
  clone() {
@@ -467,7 +432,7 @@ var _HSLColor = class _HSLColor extends Color {
467
432
  let m;
468
433
  if (m = value.match(HSL_REGEX)) {
469
434
  const [h, s, l, a] = (m[1] ?? m[2]).split(",").map((n) => Number(n.trim().replace("%", "")));
470
- return new _HSLColor((0, import_numeric_range3.mod)(h, 360), (0, import_numeric_range3.clampValue)(s, 0, 100), (0, import_numeric_range3.clampValue)(l, 0, 100), (0, import_numeric_range3.clampValue)(a ?? 1, 0, 1));
435
+ return new _HSLColor(numericRange.mod(h, 360), numericRange.clampValue(s, 0, 100), numericRange.clampValue(l, 0, 100), numericRange.clampValue(a ?? 1, 0, 1));
471
436
  }
472
437
  }
473
438
  toString(format) {
@@ -477,10 +442,10 @@ var _HSLColor = class _HSLColor extends Color {
477
442
  case "hexa":
478
443
  return this.toRGB().toString("hexa");
479
444
  case "hsl":
480
- return `hsl(${this.hue}, ${(0, import_numeric_range3.toFixedNumber)(this.saturation, 2)}%, ${(0, import_numeric_range3.toFixedNumber)(this.lightness, 2)}%)`;
445
+ return `hsl(${this.hue}, ${numericRange.toFixedNumber(this.saturation, 2)}%, ${numericRange.toFixedNumber(this.lightness, 2)}%)`;
481
446
  case "css":
482
447
  case "hsla":
483
- return `hsla(${this.hue}, ${(0, import_numeric_range3.toFixedNumber)(this.saturation, 2)}%, ${(0, import_numeric_range3.toFixedNumber)(this.lightness, 2)}%, ${this.alpha})`;
448
+ return `hsla(${this.hue}, ${numericRange.toFixedNumber(this.saturation, 2)}%, ${numericRange.toFixedNumber(this.lightness, 2)}%, ${this.alpha})`;
484
449
  case "hsb":
485
450
  return this.toHSB().toString("hsb");
486
451
  case "rgb":
@@ -512,10 +477,10 @@ var _HSLColor = class _HSLColor extends Color {
512
477
  let brightness = lightness + saturation * Math.min(lightness, 1 - lightness);
513
478
  saturation = brightness === 0 ? 0 : 2 * (1 - lightness / brightness);
514
479
  return new HSBColor(
515
- (0, import_numeric_range3.toFixedNumber)(this.hue, 2),
516
- (0, import_numeric_range3.toFixedNumber)(saturation * 100, 2),
517
- (0, import_numeric_range3.toFixedNumber)(brightness * 100, 2),
518
- (0, import_numeric_range3.toFixedNumber)(this.alpha, 2)
480
+ numericRange.toFixedNumber(this.hue, 2),
481
+ numericRange.toFixedNumber(saturation * 100, 2),
482
+ numericRange.toFixedNumber(brightness * 100, 2),
483
+ numericRange.toFixedNumber(this.alpha, 2)
519
484
  );
520
485
  }
521
486
  /**
@@ -533,7 +498,7 @@ var _HSLColor = class _HSLColor extends Color {
533
498
  Math.round(fn(0) * 255),
534
499
  Math.round(fn(8) * 255),
535
500
  Math.round(fn(4) * 255),
536
- (0, import_numeric_range3.toFixedNumber)(this.alpha, 2)
501
+ numericRange.toFixedNumber(this.alpha, 2)
537
502
  );
538
503
  }
539
504
  clone() {
@@ -599,7 +564,7 @@ var _HSBColor = class _HSBColor extends Color {
599
564
  let m;
600
565
  if (m = value.match(HSB_REGEX)) {
601
566
  const [h, s, b, a] = (m[1] ?? m[2]).split(",").map((n) => Number(n.trim().replace("%", "")));
602
- return new _HSBColor((0, import_numeric_range4.mod)(h, 360), (0, import_numeric_range4.clampValue)(s, 0, 100), (0, import_numeric_range4.clampValue)(b, 0, 100), (0, import_numeric_range4.clampValue)(a ?? 1, 0, 1));
567
+ return new _HSBColor(numericRange.mod(h, 360), numericRange.clampValue(s, 0, 100), numericRange.clampValue(b, 0, 100), numericRange.clampValue(a ?? 1, 0, 1));
603
568
  }
604
569
  }
605
570
  toString(format) {
@@ -611,9 +576,9 @@ var _HSBColor = class _HSBColor extends Color {
611
576
  case "hexa":
612
577
  return this.toRGB().toString("hexa");
613
578
  case "hsb":
614
- return `hsb(${this.hue}, ${(0, import_numeric_range4.toFixedNumber)(this.saturation, 2)}%, ${(0, import_numeric_range4.toFixedNumber)(this.brightness, 2)}%)`;
579
+ return `hsb(${this.hue}, ${numericRange.toFixedNumber(this.saturation, 2)}%, ${numericRange.toFixedNumber(this.brightness, 2)}%)`;
615
580
  case "hsba":
616
- return `hsba(${this.hue}, ${(0, import_numeric_range4.toFixedNumber)(this.saturation, 2)}%, ${(0, import_numeric_range4.toFixedNumber)(this.brightness, 2)}%, ${this.alpha})`;
581
+ return `hsba(${this.hue}, ${numericRange.toFixedNumber(this.saturation, 2)}%, ${numericRange.toFixedNumber(this.brightness, 2)}%, ${this.alpha})`;
617
582
  case "hsl":
618
583
  return this.toHSL().toString("hsl");
619
584
  case "rgb":
@@ -645,10 +610,10 @@ var _HSBColor = class _HSBColor extends Color {
645
610
  let lightness = brightness * (1 - saturation / 2);
646
611
  saturation = lightness === 0 || lightness === 1 ? 0 : (brightness - lightness) / Math.min(lightness, 1 - lightness);
647
612
  return new HSLColor(
648
- (0, import_numeric_range4.toFixedNumber)(this.hue, 2),
649
- (0, import_numeric_range4.toFixedNumber)(saturation * 100, 2),
650
- (0, import_numeric_range4.toFixedNumber)(lightness * 100, 2),
651
- (0, import_numeric_range4.toFixedNumber)(this.alpha, 2)
613
+ numericRange.toFixedNumber(this.hue, 2),
614
+ numericRange.toFixedNumber(saturation * 100, 2),
615
+ numericRange.toFixedNumber(lightness * 100, 2),
616
+ numericRange.toFixedNumber(this.alpha, 2)
652
617
  );
653
618
  }
654
619
  /**
@@ -665,7 +630,7 @@ var _HSBColor = class _HSBColor extends Color {
665
630
  Math.round(fn(5) * 255),
666
631
  Math.round(fn(3) * 255),
667
632
  Math.round(fn(1) * 255),
668
- (0, import_numeric_range4.toFixedNumber)(this.alpha, 2)
633
+ numericRange.toFixedNumber(this.alpha, 2)
669
634
  );
670
635
  }
671
636
  clone() {
@@ -746,11 +711,8 @@ var parseColor = (value) => {
746
711
  var normalizeColor = (v) => {
747
712
  return typeof v === "string" ? parseColor(v) : v;
748
713
  };
749
- // Annotate the CommonJS export names for ESM import in node:
750
- 0 && (module.exports = {
751
- Color,
752
- getColorAreaGradient,
753
- normalizeColor,
754
- parseColor
755
- });
756
- //# sourceMappingURL=index.js.map
714
+
715
+ exports.Color = Color;
716
+ exports.getColorAreaGradient = getColorAreaGradient;
717
+ exports.normalizeColor = normalizeColor;
718
+ exports.parseColor = parseColor;
package/dist/index.mjs CHANGED
@@ -1,6 +1,8 @@
1
+ import { getValuePercent, getPercentValue, snapValueToStep, clampValue, toFixedNumber, mod } from '@zag-js/numeric-range';
2
+
1
3
  var __defProp = Object.defineProperty;
2
4
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
+ var __publicField = (obj, key, value) => __defNormalProp(obj, key + "" , value);
4
6
 
5
7
  // src/color-format-gradient.ts
6
8
  var generateRGB_R = (orientation, dir, zValue) => {
@@ -181,9 +183,6 @@ function getColorAreaGradient(color, options) {
181
183
  }
182
184
  return background;
183
185
  }
184
-
185
- // src/color.ts
186
- import { clampValue, getPercentValue, getValuePercent, snapValueToStep } from "@zag-js/numeric-range";
187
186
  var isEqualObject = (a, b) => {
188
187
  if (Object.keys(a).length !== Object.keys(b).length) return false;
189
188
  for (let key in a) if (a[key] !== b[key]) return false;
@@ -241,15 +240,6 @@ var Color = class {
241
240
  return isSame && this.getChannelValue("alpha") === color.getChannelValue("alpha");
242
241
  }
243
242
  };
244
-
245
- // src/hsb-color.ts
246
- import { clampValue as clampValue4, mod as mod2, toFixedNumber as toFixedNumber3 } from "@zag-js/numeric-range";
247
-
248
- // src/hsl-color.ts
249
- import { clampValue as clampValue3, mod, toFixedNumber as toFixedNumber2 } from "@zag-js/numeric-range";
250
-
251
- // src/rgb-color.ts
252
- import { clampValue as clampValue2, toFixedNumber } from "@zag-js/numeric-range";
253
243
  var _RGBColor = class _RGBColor extends Color {
254
244
  constructor(red, green, blue, alpha) {
255
245
  super();
@@ -269,7 +259,7 @@ var _RGBColor = class _RGBColor extends Color {
269
259
  }
270
260
  const match = value.match(/^rgba?\((.*)\)$/);
271
261
  if (match?.[1]) {
272
- colors = match[1].split(",").map((value2) => Number(value2.trim())).map((num, i) => clampValue2(num, 0, i < 3 ? 255 : 1));
262
+ colors = match[1].split(",").map((value2) => Number(value2.trim())).map((num, i) => clampValue(num, 0, i < 3 ? 255 : 1));
273
263
  }
274
264
  return colors.length < 3 ? void 0 : new _RGBColor(colors[0], colors[1], colors[2], colors[3] ?? 1);
275
265
  }
@@ -440,7 +430,7 @@ var _HSLColor = class _HSLColor extends Color {
440
430
  let m;
441
431
  if (m = value.match(HSL_REGEX)) {
442
432
  const [h, s, l, a] = (m[1] ?? m[2]).split(",").map((n) => Number(n.trim().replace("%", "")));
443
- return new _HSLColor(mod(h, 360), clampValue3(s, 0, 100), clampValue3(l, 0, 100), clampValue3(a ?? 1, 0, 1));
433
+ return new _HSLColor(mod(h, 360), clampValue(s, 0, 100), clampValue(l, 0, 100), clampValue(a ?? 1, 0, 1));
444
434
  }
445
435
  }
446
436
  toString(format) {
@@ -450,10 +440,10 @@ var _HSLColor = class _HSLColor extends Color {
450
440
  case "hexa":
451
441
  return this.toRGB().toString("hexa");
452
442
  case "hsl":
453
- return `hsl(${this.hue}, ${toFixedNumber2(this.saturation, 2)}%, ${toFixedNumber2(this.lightness, 2)}%)`;
443
+ return `hsl(${this.hue}, ${toFixedNumber(this.saturation, 2)}%, ${toFixedNumber(this.lightness, 2)}%)`;
454
444
  case "css":
455
445
  case "hsla":
456
- return `hsla(${this.hue}, ${toFixedNumber2(this.saturation, 2)}%, ${toFixedNumber2(this.lightness, 2)}%, ${this.alpha})`;
446
+ return `hsla(${this.hue}, ${toFixedNumber(this.saturation, 2)}%, ${toFixedNumber(this.lightness, 2)}%, ${this.alpha})`;
457
447
  case "hsb":
458
448
  return this.toHSB().toString("hsb");
459
449
  case "rgb":
@@ -485,10 +475,10 @@ var _HSLColor = class _HSLColor extends Color {
485
475
  let brightness = lightness + saturation * Math.min(lightness, 1 - lightness);
486
476
  saturation = brightness === 0 ? 0 : 2 * (1 - lightness / brightness);
487
477
  return new HSBColor(
488
- toFixedNumber2(this.hue, 2),
489
- toFixedNumber2(saturation * 100, 2),
490
- toFixedNumber2(brightness * 100, 2),
491
- toFixedNumber2(this.alpha, 2)
478
+ toFixedNumber(this.hue, 2),
479
+ toFixedNumber(saturation * 100, 2),
480
+ toFixedNumber(brightness * 100, 2),
481
+ toFixedNumber(this.alpha, 2)
492
482
  );
493
483
  }
494
484
  /**
@@ -506,7 +496,7 @@ var _HSLColor = class _HSLColor extends Color {
506
496
  Math.round(fn(0) * 255),
507
497
  Math.round(fn(8) * 255),
508
498
  Math.round(fn(4) * 255),
509
- toFixedNumber2(this.alpha, 2)
499
+ toFixedNumber(this.alpha, 2)
510
500
  );
511
501
  }
512
502
  clone() {
@@ -572,7 +562,7 @@ var _HSBColor = class _HSBColor extends Color {
572
562
  let m;
573
563
  if (m = value.match(HSB_REGEX)) {
574
564
  const [h, s, b, a] = (m[1] ?? m[2]).split(",").map((n) => Number(n.trim().replace("%", "")));
575
- return new _HSBColor(mod2(h, 360), clampValue4(s, 0, 100), clampValue4(b, 0, 100), clampValue4(a ?? 1, 0, 1));
565
+ return new _HSBColor(mod(h, 360), clampValue(s, 0, 100), clampValue(b, 0, 100), clampValue(a ?? 1, 0, 1));
576
566
  }
577
567
  }
578
568
  toString(format) {
@@ -584,9 +574,9 @@ var _HSBColor = class _HSBColor extends Color {
584
574
  case "hexa":
585
575
  return this.toRGB().toString("hexa");
586
576
  case "hsb":
587
- return `hsb(${this.hue}, ${toFixedNumber3(this.saturation, 2)}%, ${toFixedNumber3(this.brightness, 2)}%)`;
577
+ return `hsb(${this.hue}, ${toFixedNumber(this.saturation, 2)}%, ${toFixedNumber(this.brightness, 2)}%)`;
588
578
  case "hsba":
589
- return `hsba(${this.hue}, ${toFixedNumber3(this.saturation, 2)}%, ${toFixedNumber3(this.brightness, 2)}%, ${this.alpha})`;
579
+ return `hsba(${this.hue}, ${toFixedNumber(this.saturation, 2)}%, ${toFixedNumber(this.brightness, 2)}%, ${this.alpha})`;
590
580
  case "hsl":
591
581
  return this.toHSL().toString("hsl");
592
582
  case "rgb":
@@ -618,10 +608,10 @@ var _HSBColor = class _HSBColor extends Color {
618
608
  let lightness = brightness * (1 - saturation / 2);
619
609
  saturation = lightness === 0 || lightness === 1 ? 0 : (brightness - lightness) / Math.min(lightness, 1 - lightness);
620
610
  return new HSLColor(
621
- toFixedNumber3(this.hue, 2),
622
- toFixedNumber3(saturation * 100, 2),
623
- toFixedNumber3(lightness * 100, 2),
624
- toFixedNumber3(this.alpha, 2)
611
+ toFixedNumber(this.hue, 2),
612
+ toFixedNumber(saturation * 100, 2),
613
+ toFixedNumber(lightness * 100, 2),
614
+ toFixedNumber(this.alpha, 2)
625
615
  );
626
616
  }
627
617
  /**
@@ -638,7 +628,7 @@ var _HSBColor = class _HSBColor extends Color {
638
628
  Math.round(fn(5) * 255),
639
629
  Math.round(fn(3) * 255),
640
630
  Math.round(fn(1) * 255),
641
- toFixedNumber3(this.alpha, 2)
631
+ toFixedNumber(this.alpha, 2)
642
632
  );
643
633
  }
644
634
  clone() {
@@ -719,10 +709,5 @@ var parseColor = (value) => {
719
709
  var normalizeColor = (v) => {
720
710
  return typeof v === "string" ? parseColor(v) : v;
721
711
  };
722
- export {
723
- Color,
724
- getColorAreaGradient,
725
- normalizeColor,
726
- parseColor
727
- };
728
- //# sourceMappingURL=index.mjs.map
712
+
713
+ export { Color, getColorAreaGradient, normalizeColor, parseColor };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zag-js/color-utils",
3
- "version": "0.69.0",
3
+ "version": "0.71.0",
4
4
  "description": "Color utilities for zag.js",
5
5
  "keywords": [
6
6
  "js",
@@ -14,8 +14,7 @@
14
14
  "repository": "https://github.com/chakra-ui/zag/tree/main/packages/utilities/color-utils",
15
15
  "sideEffects": false,
16
16
  "files": [
17
- "dist",
18
- "src"
17
+ "dist"
19
18
  ],
20
19
  "publishConfig": {
21
20
  "access": "public"
@@ -25,7 +24,7 @@
25
24
  },
26
25
  "clean-package": "../../../clean-package.config.json",
27
26
  "dependencies": {
28
- "@zag-js/numeric-range": "0.69.0"
27
+ "@zag-js/numeric-range": "0.71.0"
29
28
  },
30
29
  "devDependencies": {
31
30
  "clean-package": "2.2.0"
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/index.ts","../src/color-format-gradient.ts","../src/area-gradient.ts","../src/color.ts","../src/hsb-color.ts","../src/hsl-color.ts","../src/rgb-color.ts","../src/native-color.ts","../src/parse-color.ts"],"sourcesContent":["export { getColorAreaGradient } from \"./area-gradient\"\nexport { Color } from \"./color\"\nexport { normalizeColor, parseColor } from \"./parse-color\"\nexport type { ColorAxes, ColorChannel, ColorChannelRange, ColorFormat, ColorType } from \"./types\"\n","export const generateRGB_R = (orientation: [string, string], dir: boolean, zValue: number) => {\n const maskImage = `linear-gradient(to ${orientation[Number(!dir)]}, transparent, #000)`\n const result = {\n areaStyles: {\n backgroundImage: `linear-gradient(to ${orientation[Number(dir)]},rgb(${zValue},0,0),rgb(${zValue},255,0))`,\n },\n areaGradientStyles: {\n backgroundImage: `linear-gradient(to ${orientation[Number(dir)]},rgb(${zValue},0,255),rgb(${zValue},255,255))`,\n WebkitMaskImage: maskImage,\n maskImage,\n },\n }\n return result\n}\n\nexport const generateRGB_G = (orientation: [string, string], dir: boolean, zValue: number) => {\n const maskImage = `linear-gradient(to ${orientation[Number(!dir)]}, transparent, #000)`\n const result = {\n areaStyles: {\n backgroundImage: `linear-gradient(to ${orientation[Number(dir)]},rgb(0,${zValue},0),rgb(255,${zValue},0))`,\n },\n areaGradientStyles: {\n backgroundImage: `linear-gradient(to ${orientation[Number(dir)]},rgb(0,${zValue},255),rgb(255,${zValue},255))`,\n WebkitMaskImage: maskImage,\n maskImage,\n },\n }\n return result\n}\n\nexport const generateRGB_B = (orientation: [string, string], dir: boolean, zValue: number) => {\n const maskImage = `linear-gradient(to ${orientation[Number(!dir)]}, transparent, #000)`\n const result = {\n areaStyles: {\n backgroundImage: `linear-gradient(to ${orientation[Number(dir)]},rgb(0,0,${zValue}),rgb(255,0,${zValue}))`,\n },\n areaGradientStyles: {\n backgroundImage: `linear-gradient(to ${orientation[Number(dir)]},rgb(0,255,${zValue}),rgb(255,255,${zValue}))`,\n WebkitMaskImage: maskImage,\n maskImage,\n },\n }\n return result\n}\n\nexport const generateHSL_H = (orientation: [string, string], dir: boolean, zValue: number) => {\n const result = {\n areaStyles: {},\n areaGradientStyles: {\n background: [\n `linear-gradient(to ${\n orientation[Number(dir)]\n }, hsla(0,0%,0%,1) 0%, hsla(0,0%,0%,0) 50%, hsla(0,0%,100%,0) 50%, hsla(0,0%,100%,1) 100%)`,\n `linear-gradient(to ${orientation[Number(!dir)]},hsl(0,0%,50%),hsla(0,0%,50%,0))`,\n `hsl(${zValue}, 100%, 50%)`,\n ].join(\",\"),\n },\n }\n return result\n}\n\nexport const generateHSL_S = (orientation: [string, string], dir: boolean, alphaValue: number) => {\n const result = {\n areaStyles: {},\n areaGradientStyles: {\n background: [\n `linear-gradient(to ${\n orientation[Number(!dir)]\n }, hsla(0,0%,0%,${alphaValue}) 0%, hsla(0,0%,0%,0) 50%, hsla(0,0%,100%,0) 50%, hsla(0,0%,100%,${alphaValue}) 100%)`,\n `linear-gradient(to ${\n orientation[Number(dir)]\n },hsla(0,100%,50%,${alphaValue}),hsla(60,100%,50%,${alphaValue}),hsla(120,100%,50%,${alphaValue}),hsla(180,100%,50%,${alphaValue}),hsla(240,100%,50%,${alphaValue}),hsla(300,100%,50%,${alphaValue}),hsla(359,100%,50%,${alphaValue}))`,\n \"hsl(0, 0%, 50%)\",\n ].join(\",\"),\n },\n }\n return result\n}\n\nexport const generateHSL_L = (orientation: [string, string], dir: boolean, zValue: number) => {\n const result = {\n areaStyles: {},\n areaGradientStyles: {\n backgroundImage: [\n `linear-gradient(to ${orientation[Number(!dir)]},hsl(0,0%,${zValue}%),hsla(0,0%,${zValue}%,0))`,\n `linear-gradient(to ${\n orientation[Number(dir)]\n },hsl(0,100%,${zValue}%),hsl(60,100%,${zValue}%),hsl(120,100%,${zValue}%),hsl(180,100%,${zValue}%),hsl(240,100%,${zValue}%),hsl(300,100%,${zValue}%),hsl(360,100%,${zValue}%))`,\n ].join(\",\"),\n },\n }\n return result\n}\n\nexport const generateHSB_H = (orientation: [string, string], dir: boolean, zValue: number) => {\n const result = {\n areaStyles: {},\n areaGradientStyles: {\n background: [\n `linear-gradient(to ${orientation[Number(dir)]},hsl(0,0%,0%),hsla(0,0%,0%,0))`,\n `linear-gradient(to ${orientation[Number(!dir)]},hsl(0,0%,100%),hsla(0,0%,100%,0))`,\n `hsl(${zValue}, 100%, 50%)`,\n ].join(\",\"),\n },\n }\n return result\n}\n\nexport const generateHSB_S = (orientation: [string, string], dir: boolean, alphaValue: number) => {\n const result = {\n areaStyles: {},\n areaGradientStyles: {\n background: [\n `linear-gradient(to ${orientation[Number(!dir)]},hsla(0,0%,0%,${alphaValue}),hsla(0,0%,0%,0))`,\n `linear-gradient(to ${\n orientation[Number(dir)]\n },hsla(0,100%,50%,${alphaValue}),hsla(60,100%,50%,${alphaValue}),hsla(120,100%,50%,${alphaValue}),hsla(180,100%,50%,${alphaValue}),hsla(240,100%,50%,${alphaValue}),hsla(300,100%,50%,${alphaValue}),hsla(359,100%,50%,${alphaValue}))`,\n `linear-gradient(to ${orientation[Number(!dir)]},hsl(0,0%,0%),hsl(0,0%,100%))`,\n ].join(\",\"),\n },\n }\n return result\n}\n\nexport const generateHSB_B = (orientation: [string, string], dir: boolean, alphaValue: number) => {\n const result = {\n areaStyles: {},\n areaGradientStyles: {\n background: [\n `linear-gradient(to ${orientation[Number(!dir)]},hsla(0,0%,100%,${alphaValue}),hsla(0,0%,100%,0))`,\n `linear-gradient(to ${\n orientation[Number(dir)]\n },hsla(0,100%,50%,${alphaValue}),hsla(60,100%,50%,${alphaValue}),hsla(120,100%,50%,${alphaValue}),hsla(180,100%,50%,${alphaValue}),hsla(240,100%,50%,${alphaValue}),hsla(300,100%,50%,${alphaValue}),hsla(359,100%,50%,${alphaValue}))`,\n \"#000\",\n ].join(\",\"),\n },\n }\n return result\n}\n","import type { Color } from \"./color\"\nimport {\n generateRGB_R,\n generateRGB_G,\n generateRGB_B,\n generateHSL_H,\n generateHSB_H,\n generateHSL_S,\n generateHSB_S,\n generateHSB_B,\n generateHSL_L,\n} from \"./color-format-gradient\"\nimport type { ColorChannel } from \"./types\"\n\ninterface GradientOptions {\n xChannel: ColorChannel\n yChannel: ColorChannel\n dir?: \"rtl\" | \"ltr\"\n}\n\ninterface GradientStyles {\n areaStyles: Record<string, string>\n areaGradientStyles: Record<string, string>\n}\n\nexport function getColorAreaGradient(color: Color, options: GradientOptions): GradientStyles {\n const { xChannel, yChannel, dir: dirProp = \"ltr\" } = options\n\n const { zChannel } = color.getColorAxes({ xChannel, yChannel })\n const zValue = color.getChannelValue(zChannel)\n\n const { minValue: zMin, maxValue: zMax } = color.getChannelRange(zChannel)\n const orientation: [string, string] = [\"top\", dirProp === \"rtl\" ? \"left\" : \"right\"]\n\n let dir = false\n\n let background = { areaStyles: {}, areaGradientStyles: {} }\n\n let alphaValue = (zValue - zMin) / (zMax - zMin)\n let isHSL = color.getFormat() === \"hsla\"\n\n switch (zChannel) {\n case \"red\": {\n dir = xChannel === \"green\"\n background = generateRGB_R(orientation, dir, zValue)\n break\n }\n\n case \"green\": {\n dir = xChannel === \"red\"\n background = generateRGB_G(orientation, dir, zValue)\n break\n }\n\n case \"blue\": {\n dir = xChannel === \"red\"\n background = generateRGB_B(orientation, dir, zValue)\n break\n }\n\n case \"hue\": {\n dir = xChannel !== \"saturation\"\n if (isHSL) {\n background = generateHSL_H(orientation, dir, zValue)\n } else {\n background = generateHSB_H(orientation, dir, zValue)\n }\n break\n }\n\n case \"saturation\": {\n dir = xChannel === \"hue\"\n if (isHSL) {\n background = generateHSL_S(orientation, dir, alphaValue)\n } else {\n background = generateHSB_S(orientation, dir, alphaValue)\n }\n break\n }\n\n case \"brightness\": {\n dir = xChannel === \"hue\"\n background = generateHSB_B(orientation, dir, alphaValue)\n break\n }\n\n case \"lightness\": {\n dir = xChannel === \"hue\"\n background = generateHSL_L(orientation, dir, zValue)\n break\n }\n }\n\n return background\n}\n","import { clampValue, getPercentValue, getValuePercent, snapValueToStep } from \"@zag-js/numeric-range\"\nimport type {\n Color2DAxes,\n ColorAxes,\n ColorChannel,\n ColorChannelRange,\n ColorFormat,\n ColorStringFormat,\n ColorType,\n} from \"./types\"\n\nconst isEqualObject = (a: Record<string, number>, b: Record<string, number>): boolean => {\n if (Object.keys(a).length !== Object.keys(b).length) return false\n for (let key in a) if (a[key] !== b[key]) return false\n return true\n}\n\nexport abstract class Color implements ColorType {\n abstract toFormat(format: ColorFormat): ColorType\n abstract toJSON(): Record<string, number>\n abstract toString(format: ColorStringFormat): string\n abstract clone(): ColorType\n abstract getChannelRange(channel: ColorChannel): ColorChannelRange\n abstract getFormat(): ColorFormat\n abstract getChannels(): [ColorChannel, ColorChannel, ColorChannel]\n abstract formatChannelValue(channel: ColorChannel, locale: string): string\n\n toHexInt(): number {\n return this.toFormat(\"rgba\").toHexInt()\n }\n\n getChannelValue(channel: ColorChannel): number {\n // @ts-ignore\n if (channel in this) return this[channel]\n throw new Error(\"Unsupported color channel: \" + channel)\n }\n\n getChannelValuePercent(channel: ColorChannel, valueToCheck?: number): number {\n const value = valueToCheck ?? this.getChannelValue(channel)\n const { minValue, maxValue } = this.getChannelRange(channel)\n return getValuePercent(value, minValue, maxValue)\n }\n\n getChannelPercentValue(channel: ColorChannel, percentToCheck: number): number {\n const { minValue, maxValue, step } = this.getChannelRange(channel)\n const percentValue = getPercentValue(percentToCheck, minValue, maxValue, step)\n return snapValueToStep(percentValue, minValue, maxValue, step)\n }\n\n withChannelValue(channel: ColorChannel, value: number): ColorType {\n const { minValue, maxValue } = this.getChannelRange(channel)\n if (channel in this) {\n let clone = this.clone()\n // @ts-ignore\n clone[channel] = clampValue(value, minValue, maxValue)\n return clone\n }\n\n throw new Error(\"Unsupported color channel: \" + channel)\n }\n\n getColorAxes(xyChannels: Color2DAxes): ColorAxes {\n let { xChannel, yChannel } = xyChannels\n let xCh = xChannel || this.getChannels().find((c) => c !== yChannel)\n let yCh = yChannel || this.getChannels().find((c) => c !== xCh)\n let zCh = this.getChannels().find((c) => c !== xCh && c !== yCh)\n return { xChannel: xCh!, yChannel: yCh!, zChannel: zCh! }\n }\n\n incrementChannel(channel: ColorChannel, stepSize: number): ColorType {\n const { minValue, maxValue, step } = this.getChannelRange(channel)\n const value = snapValueToStep(\n clampValue(this.getChannelValue(channel) + stepSize, minValue, maxValue),\n minValue,\n maxValue,\n step,\n )\n return this.withChannelValue(channel, value)\n }\n\n decrementChannel(channel: ColorChannel, stepSize: number): ColorType {\n return this.incrementChannel(channel, -stepSize)\n }\n\n isEqual(color: ColorType): boolean {\n const isSame = isEqualObject(this.toJSON(), color.toJSON())\n return isSame && this.getChannelValue(\"alpha\") === color.getChannelValue(\"alpha\")\n }\n}\n","import { clampValue, mod, toFixedNumber } from \"@zag-js/numeric-range\"\nimport { Color } from \"./color\"\nimport { HSLColor } from \"./hsl-color\"\nimport { RGBColor } from \"./rgb-color\"\nimport type { ColorChannel, ColorChannelRange, ColorFormat, ColorStringFormat, ColorType } from \"./types\"\n\nconst HSB_REGEX =\n /hsb\\(([-+]?\\d+(?:.\\d+)?\\s*,\\s*[-+]?\\d+(?:.\\d+)?%\\s*,\\s*[-+]?\\d+(?:.\\d+)?%)\\)|hsba\\(([-+]?\\d+(?:.\\d+)?\\s*,\\s*[-+]?\\d+(?:.\\d+)?%\\s*,\\s*[-+]?\\d+(?:.\\d+)?%\\s*,\\s*[-+]?\\d(.\\d+)?)\\)/\n\nexport class HSBColor extends Color {\n constructor(\n private hue: number,\n private saturation: number,\n private brightness: number,\n private alpha: number,\n ) {\n super()\n }\n\n static parse(value: string): HSBColor | void {\n let m: RegExpMatchArray | null\n if ((m = value.match(HSB_REGEX))) {\n const [h, s, b, a] = (m[1] ?? m[2]).split(\",\").map((n) => Number(n.trim().replace(\"%\", \"\")))\n return new HSBColor(mod(h, 360), clampValue(s, 0, 100), clampValue(b, 0, 100), clampValue(a ?? 1, 0, 1))\n }\n }\n\n toString(format: ColorStringFormat) {\n switch (format) {\n case \"css\":\n return this.toHSL().toString(\"css\")\n case \"hex\":\n return this.toRGB().toString(\"hex\")\n case \"hexa\":\n return this.toRGB().toString(\"hexa\")\n case \"hsb\":\n return `hsb(${this.hue}, ${toFixedNumber(this.saturation, 2)}%, ${toFixedNumber(this.brightness, 2)}%)`\n case \"hsba\":\n return `hsba(${this.hue}, ${toFixedNumber(this.saturation, 2)}%, ${toFixedNumber(this.brightness, 2)}%, ${\n this.alpha\n })`\n case \"hsl\":\n return this.toHSL().toString(\"hsl\")\n case \"rgb\":\n return this.toRGB().toString(\"rgb\")\n default:\n return this.toFormat(format).toString(format)\n }\n }\n\n toFormat(format: ColorFormat): ColorType {\n switch (format) {\n case \"hsba\":\n return this\n case \"hsla\":\n return this.toHSL()\n case \"rgba\":\n return this.toRGB()\n default:\n throw new Error(\"Unsupported color conversion: hsb -> \" + format)\n }\n }\n\n /**\n * Converts a HSB color to HSL.\n * Conversion formula adapted from https://en.wikipedia.org/wiki/HSL_and_HSV#HSV_to_HSL.\n * @returns An HSLColor object.\n */\n private toHSL(): ColorType {\n let saturation = this.saturation / 100\n let brightness = this.brightness / 100\n let lightness = brightness * (1 - saturation / 2)\n saturation = lightness === 0 || lightness === 1 ? 0 : (brightness - lightness) / Math.min(lightness, 1 - lightness)\n\n return new HSLColor(\n toFixedNumber(this.hue, 2),\n toFixedNumber(saturation * 100, 2),\n toFixedNumber(lightness * 100, 2),\n toFixedNumber(this.alpha, 2),\n )\n }\n\n /**\n * Converts a HSV color value to RGB.\n * Conversion formula adapted from https://en.wikipedia.org/wiki/HSL_and_HSV#HSV_to_RGB_alternative.\n * @returns An RGBColor object.\n */\n private toRGB(): ColorType {\n let hue = this.hue\n let saturation = this.saturation / 100\n let brightness = this.brightness / 100\n\n let fn = (n: number, k = (n + hue / 60) % 6) =>\n brightness - saturation * brightness * Math.max(Math.min(k, 4 - k, 1), 0)\n\n return new RGBColor(\n Math.round(fn(5) * 255),\n Math.round(fn(3) * 255),\n Math.round(fn(1) * 255),\n toFixedNumber(this.alpha, 2),\n )\n }\n\n clone(): ColorType {\n return new HSBColor(this.hue, this.saturation, this.brightness, this.alpha)\n }\n\n getChannelFormatOptions(channel: ColorChannel): Intl.NumberFormatOptions {\n switch (channel) {\n case \"hue\":\n return { style: \"unit\", unit: \"degree\", unitDisplay: \"narrow\" }\n case \"saturation\":\n case \"brightness\":\n case \"alpha\":\n return { style: \"percent\" }\n default:\n throw new Error(\"Unknown color channel: \" + channel)\n }\n }\n\n formatChannelValue(channel: ColorChannel, locale: string) {\n let options = this.getChannelFormatOptions(channel)\n let value = this.getChannelValue(channel)\n if (channel === \"saturation\" || channel === \"brightness\") {\n value /= 100\n }\n return new Intl.NumberFormat(locale, options).format(value)\n }\n\n getChannelRange(channel: ColorChannel): ColorChannelRange {\n switch (channel) {\n case \"hue\":\n return { minValue: 0, maxValue: 360, step: 1, pageSize: 15 }\n case \"saturation\":\n case \"brightness\":\n return { minValue: 0, maxValue: 100, step: 1, pageSize: 10 }\n case \"alpha\":\n return { minValue: 0, maxValue: 1, step: 0.01, pageSize: 0.1 }\n default:\n throw new Error(\"Unknown color channel: \" + channel)\n }\n }\n\n toJSON(): Record<\"h\" | \"s\" | \"b\" | \"a\", number> {\n return { h: this.hue, s: this.saturation, b: this.brightness, a: this.alpha }\n }\n\n getFormat(): ColorFormat {\n return \"hsba\"\n }\n\n private static colorChannels: [ColorChannel, ColorChannel, ColorChannel] = [\"hue\", \"saturation\", \"brightness\"]\n\n getChannels(): [ColorChannel, ColorChannel, ColorChannel] {\n return HSBColor.colorChannels\n }\n}\n","import { clampValue, mod, toFixedNumber } from \"@zag-js/numeric-range\"\nimport { Color } from \"./color\"\nimport { HSBColor } from \"./hsb-color\"\nimport { RGBColor } from \"./rgb-color\"\nimport type { ColorChannel, ColorChannelRange, ColorFormat, ColorStringFormat, ColorType } from \"./types\"\n\nexport const HSL_REGEX =\n /hsl\\(([-+]?\\d+(?:.\\d+)?\\s*,\\s*[-+]?\\d+(?:.\\d+)?%\\s*,\\s*[-+]?\\d+(?:.\\d+)?%)\\)|hsla\\(([-+]?\\d+(?:.\\d+)?\\s*,\\s*[-+]?\\d+(?:.\\d+)?%\\s*,\\s*[-+]?\\d+(?:.\\d+)?%\\s*,\\s*[-+]?\\d(.\\d+)?)\\)/\n\nexport class HSLColor extends Color {\n constructor(\n private hue: number,\n private saturation: number,\n private lightness: number,\n private alpha: number,\n ) {\n super()\n }\n\n static parse(value: string): HSLColor | void {\n let m: RegExpMatchArray | null\n if ((m = value.match(HSL_REGEX))) {\n const [h, s, l, a] = (m[1] ?? m[2]).split(\",\").map((n) => Number(n.trim().replace(\"%\", \"\")))\n return new HSLColor(mod(h, 360), clampValue(s, 0, 100), clampValue(l, 0, 100), clampValue(a ?? 1, 0, 1))\n }\n }\n\n toString(format: ColorStringFormat) {\n switch (format) {\n case \"hex\":\n return this.toRGB().toString(\"hex\")\n case \"hexa\":\n return this.toRGB().toString(\"hexa\")\n case \"hsl\":\n return `hsl(${this.hue}, ${toFixedNumber(this.saturation, 2)}%, ${toFixedNumber(this.lightness, 2)}%)`\n case \"css\":\n case \"hsla\":\n return `hsla(${this.hue}, ${toFixedNumber(this.saturation, 2)}%, ${toFixedNumber(this.lightness, 2)}%, ${\n this.alpha\n })`\n case \"hsb\":\n return this.toHSB().toString(\"hsb\")\n case \"rgb\":\n return this.toRGB().toString(\"rgb\")\n default:\n return this.toFormat(format).toString(format)\n }\n }\n\n toFormat(format: ColorFormat): ColorType {\n switch (format) {\n case \"hsla\":\n return this\n case \"hsba\":\n return this.toHSB()\n case \"rgba\":\n return this.toRGB()\n default:\n throw new Error(\"Unsupported color conversion: hsl -> \" + format)\n }\n }\n\n /**\n * Converts a HSL color to HSB.\n * Conversion formula adapted from https://en.wikipedia.org/wiki/HSL_and_HSV#HSL_to_HSV.\n * @returns An HSBColor object.\n */\n private toHSB(): ColorType {\n let saturation = this.saturation / 100\n let lightness = this.lightness / 100\n let brightness = lightness + saturation * Math.min(lightness, 1 - lightness)\n saturation = brightness === 0 ? 0 : 2 * (1 - lightness / brightness)\n return new HSBColor(\n toFixedNumber(this.hue, 2),\n toFixedNumber(saturation * 100, 2),\n toFixedNumber(brightness * 100, 2),\n toFixedNumber(this.alpha, 2),\n )\n }\n\n /**\n * Converts a HSL color to RGB.\n * Conversion formula adapted from https://en.wikipedia.org/wiki/HSL_and_HSV#HSL_to_RGB_alternative.\n * @returns An RGBColor object.\n */\n private toRGB(): ColorType {\n let hue = this.hue\n let saturation = this.saturation / 100\n let lightness = this.lightness / 100\n let a = saturation * Math.min(lightness, 1 - lightness)\n let fn = (n: number, k = (n + hue / 30) % 12) => lightness - a * Math.max(Math.min(k - 3, 9 - k, 1), -1)\n return new RGBColor(\n Math.round(fn(0) * 255),\n Math.round(fn(8) * 255),\n Math.round(fn(4) * 255),\n toFixedNumber(this.alpha, 2),\n )\n }\n\n clone(): ColorType {\n return new HSLColor(this.hue, this.saturation, this.lightness, this.alpha)\n }\n\n getChannelFormatOptions(channel: ColorChannel): Intl.NumberFormatOptions {\n switch (channel) {\n case \"hue\":\n return { style: \"unit\", unit: \"degree\", unitDisplay: \"narrow\" }\n case \"saturation\":\n case \"lightness\":\n case \"alpha\":\n return { style: \"percent\" }\n default:\n throw new Error(\"Unknown color channel: \" + channel)\n }\n }\n\n formatChannelValue(channel: ColorChannel, locale: string) {\n let options = this.getChannelFormatOptions(channel)\n let value = this.getChannelValue(channel)\n if (channel === \"saturation\" || channel === \"lightness\") {\n value /= 100\n }\n return new Intl.NumberFormat(locale, options).format(value)\n }\n\n getChannelRange(channel: ColorChannel): ColorChannelRange {\n switch (channel) {\n case \"hue\":\n return { minValue: 0, maxValue: 360, step: 1, pageSize: 15 }\n case \"saturation\":\n case \"lightness\":\n return { minValue: 0, maxValue: 100, step: 1, pageSize: 10 }\n case \"alpha\":\n return { minValue: 0, maxValue: 1, step: 0.01, pageSize: 0.1 }\n default:\n throw new Error(\"Unknown color channel: \" + channel)\n }\n }\n\n toJSON(): Record<\"h\" | \"s\" | \"l\" | \"a\", number> {\n return { h: this.hue, s: this.saturation, l: this.lightness, a: this.alpha }\n }\n\n getFormat(): ColorFormat {\n return \"hsla\"\n }\n\n private static colorChannels: [ColorChannel, ColorChannel, ColorChannel] = [\"hue\", \"saturation\", \"lightness\"]\n\n getChannels(): [ColorChannel, ColorChannel, ColorChannel] {\n return HSLColor.colorChannels\n }\n}\n","import { clampValue, toFixedNumber } from \"@zag-js/numeric-range\"\nimport { Color } from \"./color\"\nimport { HSBColor } from \"./hsb-color\"\nimport { HSLColor } from \"./hsl-color\"\nimport type { ColorChannel, ColorChannelRange, ColorFormat, ColorStringFormat, ColorType } from \"./types\"\n\nexport class RGBColor extends Color {\n constructor(\n private red: number,\n private green: number,\n private blue: number,\n private alpha: number,\n ) {\n super()\n }\n\n static parse(value: string) {\n let colors: (number | undefined)[] = []\n\n // matching #rgb, #rgba, #rrggbb, #rrggbbaa\n if (/^#[\\da-f]+$/i.test(value) && [4, 5, 7, 9].includes(value.length)) {\n const values = (value.length < 6 ? value.replace(/[^#]/gi, \"$&$&\") : value).slice(1).split(\"\")\n while (values.length > 0) {\n colors.push(parseInt(values.splice(0, 2).join(\"\"), 16))\n }\n colors[3] = colors[3] !== undefined ? colors[3] / 255 : undefined\n }\n\n // matching rgb(rrr, ggg, bbb), rgba(rrr, ggg, bbb, 0.a)\n const match = value.match(/^rgba?\\((.*)\\)$/)\n\n if (match?.[1]) {\n colors = match[1]\n .split(\",\")\n .map((value) => Number(value.trim()))\n .map((num, i) => clampValue(num, 0, i < 3 ? 255 : 1))\n }\n\n //@ts-expect-error\n return colors.length < 3 ? undefined : new RGBColor(colors[0], colors[1], colors[2], colors[3] ?? 1)\n }\n\n toString(format: ColorStringFormat) {\n switch (format) {\n case \"hex\":\n return (\n \"#\" +\n (\n this.red.toString(16).padStart(2, \"0\") +\n this.green.toString(16).padStart(2, \"0\") +\n this.blue.toString(16).padStart(2, \"0\")\n ).toUpperCase()\n )\n case \"hexa\":\n return (\n \"#\" +\n (\n this.red.toString(16).padStart(2, \"0\") +\n this.green.toString(16).padStart(2, \"0\") +\n this.blue.toString(16).padStart(2, \"0\") +\n Math.round(this.alpha * 255)\n .toString(16)\n .padStart(2, \"0\")\n ).toUpperCase()\n )\n case \"rgb\":\n return `rgb(${this.red}, ${this.green}, ${this.blue})`\n case \"css\":\n case \"rgba\":\n return `rgba(${this.red}, ${this.green}, ${this.blue}, ${this.alpha})`\n case \"hsl\":\n return this.toHSL().toString(\"hsl\")\n case \"hsb\":\n return this.toHSB().toString(\"hsb\")\n default:\n return this.toFormat(format).toString(format)\n }\n }\n\n toFormat(format: ColorFormat): ColorType {\n switch (format) {\n case \"rgba\":\n return this\n case \"hsba\":\n return this.toHSB()\n case \"hsla\":\n return this.toHSL()\n default:\n throw new Error(\"Unsupported color conversion: rgb -> \" + format)\n }\n }\n\n toHexInt(): number {\n return (this.red << 16) | (this.green << 8) | this.blue\n }\n\n /**\n * Converts an RGB color value to HSB.\n * Conversion formula adapted from https://en.wikipedia.org/wiki/HSL_and_HSV#From_RGB.\n * @returns An HSBColor object.\n */\n private toHSB(): ColorType {\n const red = this.red / 255\n const green = this.green / 255\n const blue = this.blue / 255\n const min = Math.min(red, green, blue)\n const brightness = Math.max(red, green, blue)\n const chroma = brightness - min\n const saturation = brightness === 0 ? 0 : chroma / brightness\n let hue = 0 // achromatic\n\n if (chroma !== 0) {\n switch (brightness) {\n case red:\n hue = (green - blue) / chroma + (green < blue ? 6 : 0)\n break\n case green:\n hue = (blue - red) / chroma + 2\n break\n case blue:\n hue = (red - green) / chroma + 4\n break\n }\n\n hue /= 6\n }\n\n return new HSBColor(\n toFixedNumber(hue * 360, 2),\n toFixedNumber(saturation * 100, 2),\n toFixedNumber(brightness * 100, 2),\n toFixedNumber(this.alpha, 2),\n )\n }\n\n /**\n * Converts an RGB color value to HSL.\n * Conversion formula adapted from https://en.wikipedia.org/wiki/HSL_and_HSV#From_RGB.\n * @returns An HSLColor object.\n */\n private toHSL(): ColorType {\n const red = this.red / 255\n const green = this.green / 255\n const blue = this.blue / 255\n const min = Math.min(red, green, blue)\n const max = Math.max(red, green, blue)\n const lightness = (max + min) / 2\n const chroma = max - min\n\n let hue = -1\n let saturation = -1\n\n if (chroma === 0) {\n hue = saturation = 0 // achromatic\n } else {\n saturation = chroma / (lightness < 0.5 ? max + min : 2 - max - min)\n\n switch (max) {\n case red:\n hue = (green - blue) / chroma + (green < blue ? 6 : 0)\n break\n case green:\n hue = (blue - red) / chroma + 2\n break\n case blue:\n hue = (red - green) / chroma + 4\n break\n }\n\n hue /= 6\n }\n\n return new HSLColor(\n toFixedNumber(hue * 360, 2),\n toFixedNumber(saturation * 100, 2),\n toFixedNumber(lightness * 100, 2),\n toFixedNumber(this.alpha, 2),\n )\n }\n\n clone(): ColorType {\n return new RGBColor(this.red, this.green, this.blue, this.alpha)\n }\n\n getChannelFormatOptions(channel: ColorChannel): Intl.NumberFormatOptions {\n switch (channel) {\n case \"red\":\n case \"green\":\n case \"blue\":\n return { style: \"decimal\" }\n case \"alpha\":\n return { style: \"percent\" }\n default:\n throw new Error(\"Unknown color channel: \" + channel)\n }\n }\n\n formatChannelValue(channel: ColorChannel, locale: string) {\n let options = this.getChannelFormatOptions(channel)\n let value = this.getChannelValue(channel)\n return new Intl.NumberFormat(locale, options).format(value)\n }\n\n getChannelRange(channel: ColorChannel): ColorChannelRange {\n switch (channel) {\n case \"red\":\n case \"green\":\n case \"blue\":\n return { minValue: 0x0, maxValue: 0xff, step: 0x1, pageSize: 0x11 }\n case \"alpha\":\n return { minValue: 0, maxValue: 1, step: 0.01, pageSize: 0.1 }\n default:\n throw new Error(\"Unknown color channel: \" + channel)\n }\n }\n\n toJSON(): Record<\"r\" | \"g\" | \"b\" | \"a\", number> {\n return { r: this.red, g: this.green, b: this.blue, a: this.alpha }\n }\n\n getFormat(): ColorFormat {\n return \"rgba\"\n }\n\n private static colorChannels: [ColorChannel, ColorChannel, ColorChannel] = [\"red\", \"green\", \"blue\"]\n\n getChannels(): [ColorChannel, ColorChannel, ColorChannel] {\n return RGBColor.colorChannels\n }\n}\n","const nativeColors /* @__PURE__ */ =\n \"aliceblue:f0f8ff,antiquewhite:faebd7,aqua:00ffff,aquamarine:7fffd4,azure:f0ffff,beige:f5f5dc,bisque:ffe4c4,black:000000,blanchedalmond:ffebcd,blue:0000ff,blueviolet:8a2be2,brown:a52a2a,burlywood:deb887,cadetblue:5f9ea0,chartreuse:7fff00,chocolate:d2691e,coral:ff7f50,cornflowerblue:6495ed,cornsilk:fff8dc,crimson:dc143c,cyan:00ffff,darkblue:00008b,darkcyan:008b8b,darkgoldenrod:b8860b,darkgray:a9a9a9,darkgreen:006400,darkkhaki:bdb76b,darkmagenta:8b008b,darkolivegreen:556b2f,darkorange:ff8c00,darkorchid:9932cc,darkred:8b0000,darksalmon:e9967a,darkseagreen:8fbc8f,darkslateblue:483d8b,darkslategray:2f4f4f,darkturquoise:00ced1,darkviolet:9400d3,deeppink:ff1493,deepskyblue:00bfff,dimgray:696969,dodgerblue:1e90ff,firebrick:b22222,floralwhite:fffaf0,forestgreen:228b22,fuchsia:ff00ff,gainsboro:dcdcdc,ghostwhite:f8f8ff,gold:ffd700,goldenrod:daa520,gray:808080,green:008000,greenyellow:adff2f,honeydew:f0fff0,hotpink:ff69b4,indianred:cd5c5c,indigo:4b0082,ivory:fffff0,khaki:f0e68c,lavender:e6e6fa,lavenderblush:fff0f5,lawngreen:7cfc00,lemonchiffon:fffacd,lightblue:add8e6,lightcoral:f08080,lightcyan:e0ffff,lightgoldenrodyellow:fafad2,lightgrey:d3d3d3,lightgreen:90ee90,lightpink:ffb6c1,lightsalmon:ffa07a,lightseagreen:20b2aa,lightskyblue:87cefa,lightslategray:778899,lightsteelblue:b0c4de,lightyellow:ffffe0,lime:00ff00,limegreen:32cd32,linen:faf0e6,magenta:ff00ff,maroon:800000,mediumaquamarine:66cdaa,mediumblue:0000cd,mediumorchid:ba55d3,mediumpurple:9370d8,mediumseagreen:3cb371,mediumslateblue:7b68ee,mediumspringgreen:00fa9a,mediumturquoise:48d1cc,mediumvioletred:c71585,midnightblue:191970,mintcream:f5fffa,mistyrose:ffe4e1,moccasin:ffe4b5,navajowhite:ffdead,navy:000080,oldlace:fdf5e6,olive:808000,olivedrab:6b8e23,orange:ffa500,orangered:ff4500,orchid:da70d6,palegoldenrod:eee8aa,palegreen:98fb98,paleturquoise:afeeee,palevioletred:d87093,papayawhip:ffefd5,peachpuff:ffdab9,peru:cd853f,pink:ffc0cb,plum:dda0dd,powderblue:b0e0e6,purple:800080,red:ff0000,rosybrown:bc8f8f,royalblue:4169e1,saddlebrown:8b4513,salmon:fa8072,sandybrown:f4a460,seagreen:2e8b57,seashell:fff5ee,sienna:a0522d,silver:c0c0c0,skyblue:87ceeb,slateblue:6a5acd,slategray:708090,snow:fffafa,springgreen:00ff7f,steelblue:4682b4,tan:d2b48c,teal:008080,thistle:d8bfd8,tomato:ff6347,turquoise:40e0d0,violet:ee82ee,wheat:f5deb3,white:ffffff,whitesmoke:f5f5f5,yellow:ffff00,yellowgreen:9acd32\"\n\nconst makeMap = (str: string) => {\n const map = new Map<string, string>()\n const list = str.split(\",\")\n for (let i = 0; i < list.length; i++) {\n const [key, val] = list[i].split(\":\")\n map.set(key, `#${val}`)\n }\n return map\n}\n\nexport const nativeColorMap /* @__PURE__ */ = makeMap(nativeColors)\n","import { HSBColor } from \"./hsb-color\"\nimport { HSLColor } from \"./hsl-color\"\nimport { nativeColorMap } from \"./native-color\"\nimport { RGBColor } from \"./rgb-color\"\nimport type { ColorType } from \"./types\"\n\nexport const parseColor = (value: string): ColorType => {\n if (nativeColorMap.has(value)) {\n return parseColor(nativeColorMap.get(value)!)\n }\n\n const result = RGBColor.parse(value) || HSBColor.parse(value) || HSLColor.parse(value)\n\n if (!result) {\n const error = new Error(\"Invalid color value: \" + value)\n Error.captureStackTrace?.(error, parseColor)\n throw error\n }\n\n return result\n}\n\nexport const normalizeColor = (v: string | ColorType) => {\n return typeof v === \"string\" ? parseColor(v) : v\n}\n"],"mappings":"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","names":["import_numeric_range","import_numeric_range","import_numeric_range","value"]}