@zag-js/color-utils 0.70.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 +41 -79
- package/dist/index.mjs +22 -37
- package/package.json +3 -4
- package/dist/index.js.map +0 -1
- package/dist/index.mjs.map +0 -1
- package/src/area-gradient.ts +0 -95
- package/src/color-format-gradient.ts +0 -139
- package/src/color.ts +0 -89
- package/src/hsb-color.ts +0 -157
- package/src/hsl-color.ts +0 -153
- package/src/index.ts +0 -4
- package/src/native-color.ts +0 -14
- package/src/parse-color.ts +0 -25
- package/src/rgb-color.ts +0 -230
- package/src/types.ts +0 -94
package/dist/index.js
CHANGED
|
@@ -1,33 +1,10 @@
|
|
|
1
|
-
|
|
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
|
|
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
|
|
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 =
|
|
235
|
-
return
|
|
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] =
|
|
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 =
|
|
256
|
-
|
|
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) =>
|
|
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
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
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
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
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(
|
|
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}, ${
|
|
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}, ${
|
|
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
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
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
|
-
|
|
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(
|
|
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}, ${
|
|
579
|
+
return `hsb(${this.hue}, ${numericRange.toFixedNumber(this.saturation, 2)}%, ${numericRange.toFixedNumber(this.brightness, 2)}%)`;
|
|
615
580
|
case "hsba":
|
|
616
|
-
return `hsba(${this.hue}, ${
|
|
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
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
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
|
-
|
|
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
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
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,
|
|
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) =>
|
|
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),
|
|
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}, ${
|
|
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}, ${
|
|
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
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
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
|
-
|
|
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(
|
|
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}, ${
|
|
577
|
+
return `hsb(${this.hue}, ${toFixedNumber(this.saturation, 2)}%, ${toFixedNumber(this.brightness, 2)}%)`;
|
|
588
578
|
case "hsba":
|
|
589
|
-
return `hsba(${this.hue}, ${
|
|
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
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
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
|
-
|
|
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
|
-
|
|
723
|
-
|
|
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.
|
|
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.
|
|
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"]}
|