@thi.ng/color 5.6.3 → 5.6.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/README.md +1 -1
  3. package/alpha.js +6 -10
  4. package/analog.js +35 -67
  5. package/api/constants.js +128 -156
  6. package/api/gradients.js +0 -1
  7. package/api/names.js +154 -151
  8. package/api/ranges.js +0 -1
  9. package/api/system.js +21 -26
  10. package/api.js +27 -32
  11. package/clamp.js +18 -29
  12. package/closest-hue.js +6 -12
  13. package/color-range.js +159 -228
  14. package/color.js +29 -28
  15. package/contrast.js +7 -17
  16. package/convert.js +19 -40
  17. package/cosine-gradients.js +177 -229
  18. package/css/css.js +27 -53
  19. package/css/parse-css.js +94 -160
  20. package/defcolor.js +97 -108
  21. package/distance.js +96 -187
  22. package/gradients.js +29 -37
  23. package/hcy/hcy-rgb.js +20 -13
  24. package/hcy/hcy.js +9 -11
  25. package/hsi/hsi-rgb.js +32 -30
  26. package/hsi/hsi.js +9 -11
  27. package/hsl/hsl-css.js +9 -10
  28. package/hsl/hsl-hsv.js +12 -9
  29. package/hsl/hsl-rgb.js +14 -6
  30. package/hsl/hsl.js +14 -16
  31. package/hsv/hsv-css.js +4 -1
  32. package/hsv/hsv-hsl.js +11 -8
  33. package/hsv/hsv-rgb.js +14 -6
  34. package/hsv/hsv.js +14 -16
  35. package/hue.js +12 -12
  36. package/int/int-css.js +10 -6
  37. package/int/int-int.js +6 -10
  38. package/int/int-rgb.js +16 -5
  39. package/int/int-srgb.js +22 -4
  40. package/int/int.js +136 -142
  41. package/internal/css.js +16 -12
  42. package/internal/dispatch.js +6 -2
  43. package/internal/ensure.js +18 -16
  44. package/internal/matrix-ops.js +39 -41
  45. package/internal/scale.js +4 -2
  46. package/invert.js +46 -39
  47. package/is-black.js +12 -5
  48. package/is-gamut.js +8 -13
  49. package/is-gray.js +12 -5
  50. package/is-white.js +14 -7
  51. package/lab/lab-css.js +4 -9
  52. package/lab/lab-lab.js +6 -2
  53. package/lab/lab-lch.js +18 -10
  54. package/lab/lab-rgb.js +6 -14
  55. package/lab/lab-xyz.js +16 -20
  56. package/lab/lab50.js +18 -15
  57. package/lab/lab65.js +18 -15
  58. package/lch/lch-css.js +4 -9
  59. package/lch/lch.js +18 -23
  60. package/lighten.js +13 -17
  61. package/linear.js +6 -16
  62. package/luminance-rgb.js +14 -22
  63. package/luminance.js +16 -14
  64. package/max-chroma.js +1340 -227
  65. package/mix.js +34 -82
  66. package/oklab/oklab-css.js +4 -9
  67. package/oklab/oklab-rgb.js +17 -23
  68. package/oklab/oklab-xyz.js +22 -9
  69. package/oklab/oklab.js +19 -22
  70. package/oklch/oklab-oklch.js +10 -11
  71. package/oklch/oklch-css.js +4 -9
  72. package/oklch/oklch-oklab.js +9 -9
  73. package/oklch/oklch.js +14 -20
  74. package/package.json +19 -16
  75. package/rgb/hue-rgb.js +14 -11
  76. package/rgb/kelvin-rgba.js +23 -22
  77. package/rgb/rgb-css.js +4 -1
  78. package/rgb/rgb-hcv.js +14 -15
  79. package/rgb/rgb-hcy.js +10 -14
  80. package/rgb/rgb-hsi.js +13 -8
  81. package/rgb/rgb-hsl.js +8 -5
  82. package/rgb/rgb-hsv.js +7 -4
  83. package/rgb/rgb-lab.js +6 -18
  84. package/rgb/rgb-oklab.js +13 -19
  85. package/rgb/rgb-srgb.js +18 -8
  86. package/rgb/rgb-xyz.js +6 -19
  87. package/rgb/rgb-ycc.js +12 -17
  88. package/rgb/rgb.js +25 -22
  89. package/rotate.js +25 -38
  90. package/sort.js +24 -72
  91. package/srgb/srgb-css.js +9 -9
  92. package/srgb/srgb-int.js +6 -10
  93. package/srgb/srgb-rgb.js +18 -8
  94. package/srgb/srgb.js +16 -13
  95. package/strategies.js +42 -112
  96. package/swatches.js +28 -5
  97. package/tint.js +27 -53
  98. package/transform.js +274 -149
  99. package/variations.js +10 -9
  100. package/xyy/xyy-xyz.js +12 -11
  101. package/xyy/xyy.js +16 -13
  102. package/xyz/wavelength-xyz.js +14 -28
  103. package/xyz/xyz-lab.js +17 -26
  104. package/xyz/xyz-oklab.js +4 -1
  105. package/xyz/xyz-rgb.js +6 -18
  106. package/xyz/xyz-xyy.js +13 -12
  107. package/xyz/xyz-xyz.js +6 -2
  108. package/xyz/xyz50.js +20 -17
  109. package/xyz/xyz65.js +20 -17
  110. package/ycc/ycc-rgb.js +14 -19
  111. package/ycc/ycc.js +12 -9
package/xyz/xyz-xyy.js CHANGED
@@ -1,16 +1,17 @@
1
1
  import { safeDiv } from "@thi.ng/math/safe-div";
2
2
  import { setC4 } from "@thi.ng/vectors/setc";
3
3
  import { __ensureAlpha } from "../internal/ensure.js";
4
- /**
5
- * @remarks
6
- * https://en.wikipedia.org/wiki/CIE_1931_color_space#CIE_xy_chromaticity_diagram_and_the_CIE_xyY_color_space
7
- * https://gamedev.stackexchange.com/a/70049
8
- *
9
- * @param out -
10
- * @param src -
11
- */
12
- export const xyzXyy = (out, src) => {
13
- const { 0: x, 1: Y } = src;
14
- const sum = x + Y + src[2];
15
- return setC4(out || src, safeDiv(x, sum), safeDiv(Y, sum), Y, __ensureAlpha(src[3]));
4
+ const xyzXyy = (out, src) => {
5
+ const { 0: x, 1: Y } = src;
6
+ const sum = x + Y + src[2];
7
+ return setC4(
8
+ out || src,
9
+ safeDiv(x, sum),
10
+ safeDiv(Y, sum),
11
+ Y,
12
+ __ensureAlpha(src[3])
13
+ );
14
+ };
15
+ export {
16
+ xyzXyy
16
17
  };
package/xyz/xyz-xyz.js CHANGED
@@ -1,4 +1,8 @@
1
1
  import { BRADFORD_D50_D65, BRADFORD_D65_D50 } from "../api/constants.js";
2
2
  import { __mulV33 } from "../internal/matrix-ops.js";
3
- export const xyzXyzD65_50 = (out, src) => __mulV33(out, BRADFORD_D65_D50, src);
4
- export const xyzXyzD50_65 = (out, src) => __mulV33(out, BRADFORD_D50_D65, src);
3
+ const xyzXyzD65_50 = (out, src) => __mulV33(out, BRADFORD_D65_D50, src);
4
+ const xyzXyzD50_65 = (out, src) => __mulV33(out, BRADFORD_D50_D65, src);
5
+ export {
6
+ xyzXyzD50_65,
7
+ xyzXyzD65_50
8
+ };
package/xyz/xyz50.js CHANGED
@@ -7,21 +7,24 @@ import { rgbXyz } from "../rgb/rgb-xyz.js";
7
7
  import { xyyXyz } from "../xyy/xyy-xyz.js";
8
8
  import { xyzRgb } from "./xyz-rgb.js";
9
9
  import { xyzXyzD65_50 } from "./xyz-xyz.js";
10
- export const xyzD50 = defColor({
11
- mode: "xyz50",
12
- channels: {
13
- x: { range: [0, D50[0]] },
14
- y: { range: [0, D50[1]] },
15
- z: { range: [0, D50[2]] },
16
- },
17
- order: ["x", "y", "z", "alpha"],
18
- from: {
19
- rgb: rgbXyz,
20
- lab50: labXyz,
21
- lab65: [labXyzD65, xyzXyzD65_50],
22
- lch: [lchLab, labXyz],
23
- oklab: [oklabXyzD65, xyzXyzD65_50],
24
- xyy: xyyXyz,
25
- },
26
- toRgb: xyzRgb,
10
+ const xyzD50 = defColor({
11
+ mode: "xyz50",
12
+ channels: {
13
+ x: { range: [0, D50[0]] },
14
+ y: { range: [0, D50[1]] },
15
+ z: { range: [0, D50[2]] }
16
+ },
17
+ order: ["x", "y", "z", "alpha"],
18
+ from: {
19
+ rgb: rgbXyz,
20
+ lab50: labXyz,
21
+ lab65: [labXyzD65, xyzXyzD65_50],
22
+ lch: [lchLab, labXyz],
23
+ oklab: [oklabXyzD65, xyzXyzD65_50],
24
+ xyy: xyyXyz
25
+ },
26
+ toRgb: xyzRgb
27
27
  });
28
+ export {
29
+ xyzD50
30
+ };
package/xyz/xyz65.js CHANGED
@@ -7,21 +7,24 @@ import { oklabXyzD65 } from "../oklab/oklab-xyz.js";
7
7
  import { rgbXyzD65 } from "../rgb/rgb-xyz.js";
8
8
  import { xyyXyz } from "../xyy/xyy-xyz.js";
9
9
  import { xyzRgbD65 } from "./xyz-rgb.js";
10
- export const xyzD65 = defColor({
11
- mode: "xyz65",
12
- channels: {
13
- x: { range: [0, D65[0]] },
14
- y: { range: [0, D65[1]] },
15
- z: { range: [0, D65[2]] },
16
- },
17
- order: ["x", "y", "z", "alpha"],
18
- from: {
19
- rgb: rgbXyzD65,
20
- lab50: [labLabD50_65, labXyzD65],
21
- lab65: labXyzD65,
22
- lch: [lchLab, labLabD50_65, labXyzD65],
23
- oklab: oklabXyzD65,
24
- xyy: xyyXyz,
25
- },
26
- toRgb: xyzRgbD65,
10
+ const xyzD65 = defColor({
11
+ mode: "xyz65",
12
+ channels: {
13
+ x: { range: [0, D65[0]] },
14
+ y: { range: [0, D65[1]] },
15
+ z: { range: [0, D65[2]] }
16
+ },
17
+ order: ["x", "y", "z", "alpha"],
18
+ from: {
19
+ rgb: rgbXyzD65,
20
+ lab50: [labLabD50_65, labXyzD65],
21
+ lab65: labXyzD65,
22
+ lch: [lchLab, labLabD50_65, labXyzD65],
23
+ oklab: oklabXyzD65,
24
+ xyy: xyyXyz
25
+ },
26
+ toRgb: xyzRgbD65
27
27
  });
28
+ export {
29
+ xyzD65
30
+ };
package/ycc/ycc-rgb.js CHANGED
@@ -1,23 +1,18 @@
1
1
  import { setC4 } from "@thi.ng/vectors/setc";
2
2
  import { RGB_LUMINANCE_REC709 } from "../api/constants.js";
3
3
  import { __ensureAlpha } from "../internal/ensure.js";
4
- /**
5
- * @remarks
6
- * https://en.wikipedia.org/wiki/YCbCr#YCbCr
7
- *
8
- * By default uses luminance weights as per BT.709 (aka
9
- * {@link RGB_LUMINANCE_REC709}):
10
- *
11
- * - https://en.wikipedia.org/wiki/YCbCr#ITU-R_BT.709_conversion
12
- * - https://en.wikipedia.org/wiki/Rec._709
13
- *
14
- * @param out -
15
- * @param src -
16
- * @param luma -
17
- */
18
- export const yccRgb = (out, src, luma = RGB_LUMINANCE_REC709) => {
19
- const y = src[0];
20
- const bb = (2 - 2 * luma[2]) * src[1];
21
- const rr = (2 - 2 * luma[0]) * src[2];
22
- return setC4(out || src, y + rr, y - (luma[2] / luma[1]) * bb - (luma[0] / luma[1]) * rr, y + bb, __ensureAlpha(src[3]));
4
+ const yccRgb = (out, src, luma = RGB_LUMINANCE_REC709) => {
5
+ const y = src[0];
6
+ const bb = (2 - 2 * luma[2]) * src[1];
7
+ const rr = (2 - 2 * luma[0]) * src[2];
8
+ return setC4(
9
+ out || src,
10
+ y + rr,
11
+ y - luma[2] / luma[1] * bb - luma[0] / luma[1] * rr,
12
+ y + bb,
13
+ __ensureAlpha(src[3])
14
+ );
15
+ };
16
+ export {
17
+ yccRgb
23
18
  };
package/ycc/ycc.js CHANGED
@@ -1,13 +1,16 @@
1
1
  import { defColor } from "../defcolor.js";
2
2
  import { rgbYcc } from "../rgb/rgb-ycc.js";
3
3
  import { yccRgb } from "./ycc-rgb.js";
4
- export const ycc = defColor({
5
- mode: "ycc",
6
- channels: {
7
- cb: { range: [-0.5, 0.5] },
8
- cr: { range: [-0.5, 0.5] },
9
- },
10
- order: ["y", "cb", "cr", "alpha"],
11
- from: { rgb: rgbYcc },
12
- toRgb: yccRgb,
4
+ const ycc = defColor({
5
+ mode: "ycc",
6
+ channels: {
7
+ cb: { range: [-0.5, 0.5] },
8
+ cr: { range: [-0.5, 0.5] }
9
+ },
10
+ order: ["y", "cb", "cr", "alpha"],
11
+ from: { rgb: rgbYcc },
12
+ toRgb: yccRgb
13
13
  });
14
+ export {
15
+ ycc
16
+ };