@thi.ng/color 5.6.2 → 5.6.4

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 -17
  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/hsv/hsv-css.js CHANGED
@@ -1,3 +1,6 @@
1
1
  import { hslCss } from "../hsl/hsl-css.js";
2
2
  import { hsvHsl } from "./hsv-hsl.js";
3
- export const hsvCss = (src) => hslCss(hsvHsl([], src));
3
+ const hsvCss = (src) => hslCss(hsvHsl([], src));
4
+ export {
5
+ hsvCss
6
+ };
package/hsv/hsv-hsl.js CHANGED
@@ -1,10 +1,13 @@
1
1
  import { clampH } from "../clamp.js";
2
- export const hsvHsl = (out, src) => {
3
- out = clampH(out || src, src);
4
- const s = out[1];
5
- const v = out[2];
6
- const l = ((2 - s) * v) / 2;
7
- out[2] = l;
8
- out[1] = l && l < 1 ? (s * v) / (l < 0.5 ? l * 2 : 2 - l * 2) : s;
9
- return out;
2
+ const hsvHsl = (out, src) => {
3
+ out = clampH(out || src, src);
4
+ const s = out[1];
5
+ const v = out[2];
6
+ const l = (2 - s) * v / 2;
7
+ out[2] = l;
8
+ out[1] = l && l < 1 ? s * v / (l < 0.5 ? l * 2 : 2 - l * 2) : s;
9
+ return out;
10
+ };
11
+ export {
12
+ hsvHsl
10
13
  };
package/hsv/hsv-rgb.js CHANGED
@@ -1,10 +1,18 @@
1
1
  import { setC3 } from "@thi.ng/vectors/setc";
2
2
  import { clampH } from "../clamp.js";
3
3
  import { hueRgb } from "../rgb/hue-rgb.js";
4
- export const hsvRgb = (out, src) => {
5
- out = clampH(out || src, src);
6
- const s = out[1];
7
- const v = out[2];
8
- hueRgb(out, src[0], out[3]);
9
- return setC3(out, ((out[0] - 1) * s + 1) * v, ((out[1] - 1) * s + 1) * v, ((out[2] - 1) * s + 1) * v);
4
+ const hsvRgb = (out, src) => {
5
+ out = clampH(out || src, src);
6
+ const s = out[1];
7
+ const v = out[2];
8
+ hueRgb(out, src[0], out[3]);
9
+ return setC3(
10
+ out,
11
+ ((out[0] - 1) * s + 1) * v,
12
+ ((out[1] - 1) * s + 1) * v,
13
+ ((out[2] - 1) * s + 1) * v
14
+ );
15
+ };
16
+ export {
17
+ hsvRgb
10
18
  };
package/hsv/hsv.js CHANGED
@@ -5,20 +5,18 @@ import { labRgb } from "../lab/lab-rgb.js";
5
5
  import { rgbHsv } from "../rgb/rgb-hsv.js";
6
6
  import { rgbSrgb } from "../rgb/rgb-srgb.js";
7
7
  import { hsvRgb } from "./hsv-rgb.js";
8
- /**
9
- * @remarks
10
- * Note: As with other hue-based color modes in this package, the hue is stored
11
- * normalized (in [0..1] interval) and NOT as degrees.
12
- */
13
- export const hsv = defColor({
14
- mode: "hsv",
15
- channels: { h: { hue: true } },
16
- order: ["h", "s", "v", "alpha"],
17
- from: {
18
- rgb: rgbHsv,
19
- srgb: rgbHsv,
20
- hsl: hslHsv,
21
- lch: [lchLab, labRgb, rgbSrgb, rgbHsv],
22
- },
23
- toRgb: hsvRgb,
8
+ const hsv = defColor({
9
+ mode: "hsv",
10
+ channels: { h: { hue: true } },
11
+ order: ["h", "s", "v", "alpha"],
12
+ from: {
13
+ rgb: rgbHsv,
14
+ srgb: rgbHsv,
15
+ hsl: hslHsv,
16
+ lch: [lchLab, labRgb, rgbSrgb, rgbHsv]
17
+ },
18
+ toRgb: hsvRgb
24
19
  });
20
+ export {
21
+ hsv
22
+ };
package/hue.js CHANGED
@@ -1,18 +1,18 @@
1
1
  import { DEFAULT, defmulti } from "@thi.ng/defmulti/defmulti";
2
2
  import { hsv } from "./hsv/hsv.js";
3
3
  import { __dispatch0 } from "./internal/dispatch.js";
4
- /**
5
- * Returns the (normalized) hue of given color.
6
- *
7
- * @remarks
8
- * Since LCH uses different hue values than the more familiar HSV/HSL color
9
- * wheel, LCH colors will be first converted to HSV to ensure uniform results.
10
- */
11
- export const hue = defmulti(__dispatch0, {
4
+ const hue = defmulti(
5
+ __dispatch0,
6
+ {
12
7
  hcy: "hsv",
13
8
  hsi: "hsv",
14
- hsl: "hsv",
15
- }, {
9
+ hsl: "hsv"
10
+ },
11
+ {
16
12
  [DEFAULT]: (col) => hsv(col)[0],
17
- hsv: (col) => col[0],
18
- });
13
+ hsv: (col) => col[0]
14
+ }
15
+ );
16
+ export {
17
+ hue
18
+ };
package/int/int-css.js CHANGED
@@ -1,9 +1,13 @@
1
1
  import { U24 } from "@thi.ng/strings/radix";
2
2
  import { FF, INV8BIT } from "../api/constants.js";
3
- export const intArgb32Css = (src) => {
4
- const a = src >>> 24;
5
- return a < 255
6
- ? `rgba(${(src >> 16) & 0xff},${(src >> 8) & 0xff},${src & 0xff},${FF(a * INV8BIT)})`
7
- : `#${U24(src & 0xffffff)}`;
3
+ const intArgb32Css = (src) => {
4
+ const a = src >>> 24;
5
+ return a < 255 ? `rgba(${src >> 16 & 255},${src >> 8 & 255},${src & 255},${FF(
6
+ a * INV8BIT
7
+ )})` : `#${U24(src & 16777215)}`;
8
+ };
9
+ const intRgb24Css = (src) => `#${U24(src & 16777215)}`;
10
+ export {
11
+ intArgb32Css,
12
+ intRgb24Css
8
13
  };
9
- export const intRgb24Css = (src) => `#${U24(src & 0xffffff)}`;
package/int/int-int.js CHANGED
@@ -1,11 +1,7 @@
1
1
  import { swapLane13 } from "@thi.ng/binary/swizzle";
2
- /**
3
- * Convert ARGB int to ABGR and vice versa.
4
- *
5
- * @param x -
6
- */
7
- export const intArgb32Abgr32 = swapLane13;
8
- /**
9
- * Alias for {@link intArgbAbgr}.
10
- */
11
- export const intAbgr32Argb32 = swapLane13;
2
+ const intArgb32Abgr32 = swapLane13;
3
+ const intAbgr32Argb32 = swapLane13;
4
+ export {
5
+ intAbgr32Argb32,
6
+ intArgb32Abgr32
7
+ };
package/int/int-rgb.js CHANGED
@@ -1,6 +1,17 @@
1
1
  import { srgbRgb } from "../srgb/srgb-rgb.js";
2
- import { intAbgr32Srgb, intArgb32Srgb, intBgr24Srgb, intRgb24Srgb, } from "./int-srgb.js";
3
- export const intArgb32Rgb = (out, src) => srgbRgb(null, intArgb32Srgb(out, src));
4
- export const intRgb24Rgb = (out, src) => srgbRgb(null, intRgb24Srgb(out, src));
5
- export const intAbgr32Rgb = (out, src) => srgbRgb(null, intAbgr32Srgb(out, src));
6
- export const intBgr24Rgb = (out, src) => srgbRgb(null, intBgr24Srgb(out, src));
2
+ import {
3
+ intAbgr32Srgb,
4
+ intArgb32Srgb,
5
+ intBgr24Srgb,
6
+ intRgb24Srgb
7
+ } from "./int-srgb.js";
8
+ const intArgb32Rgb = (out, src) => srgbRgb(null, intArgb32Srgb(out, src));
9
+ const intRgb24Rgb = (out, src) => srgbRgb(null, intRgb24Srgb(out, src));
10
+ const intAbgr32Rgb = (out, src) => srgbRgb(null, intAbgr32Srgb(out, src));
11
+ const intBgr24Rgb = (out, src) => srgbRgb(null, intBgr24Srgb(out, src));
12
+ export {
13
+ intAbgr32Rgb,
14
+ intArgb32Rgb,
15
+ intBgr24Rgb,
16
+ intRgb24Rgb
17
+ };
package/int/int-srgb.js CHANGED
@@ -1,6 +1,24 @@
1
1
  import { setC4 } from "@thi.ng/vectors/setc";
2
2
  import { INV8BIT } from "../api/constants.js";
3
- export const intArgb32Srgb = (out, src) => setC4(out || [], ((src >>> 16) & 0xff) * INV8BIT, ((src >>> 8) & 0xff) * INV8BIT, (src & 0xff) * INV8BIT, (src >>> 24) * INV8BIT);
4
- export const intAbgr32Srgb = (out, src) => setC4(out || [], (src & 0xff) * INV8BIT, ((src >>> 8) & 0xff) * INV8BIT, ((src >>> 16) & 0xff) * INV8BIT, (src >>> 24) * INV8BIT);
5
- export const intRgb24Srgb = (out, src) => intArgb32Srgb(out, src | 0xff000000);
6
- export const intBgr24Srgb = (out, src) => intAbgr32Srgb(out, src | 0xff000000);
3
+ const intArgb32Srgb = (out, src) => setC4(
4
+ out || [],
5
+ (src >>> 16 & 255) * INV8BIT,
6
+ (src >>> 8 & 255) * INV8BIT,
7
+ (src & 255) * INV8BIT,
8
+ (src >>> 24) * INV8BIT
9
+ );
10
+ const intAbgr32Srgb = (out, src) => setC4(
11
+ out || [],
12
+ (src & 255) * INV8BIT,
13
+ (src >>> 8 & 255) * INV8BIT,
14
+ (src >>> 16 & 255) * INV8BIT,
15
+ (src >>> 24) * INV8BIT
16
+ );
17
+ const intRgb24Srgb = (out, src) => intArgb32Srgb(out, src | 4278190080);
18
+ const intBgr24Srgb = (out, src) => intAbgr32Srgb(out, src | 4278190080);
19
+ export {
20
+ intAbgr32Srgb,
21
+ intArgb32Srgb,
22
+ intBgr24Srgb,
23
+ intRgb24Srgb
24
+ };
package/int/int.js CHANGED
@@ -12,152 +12,146 @@ import { __scale8bit } from "../internal/scale.js";
12
12
  import { srgb } from "../srgb/srgb.js";
13
13
  import { srgbIntAbgr32, srgbIntArgb32 } from "../srgb/srgb-int.js";
14
14
  import { intArgb32Srgb } from "./int-srgb.js";
15
- export class Int32 {
16
- offset;
17
- stride;
18
- buf;
19
- value;
20
- constructor(buf, offset = 0, stride = 1) {
21
- this.offset = offset;
22
- this.stride = stride;
23
- this.buf = buf || [0];
24
- }
25
- eqDelta(o, eps) {
26
- return eqDelta4(
27
- // channel order irrelevant here...
28
- intArgb32Srgb([], this[0]), intArgb32Srgb([], o[0]), eps);
29
- }
30
- get length() {
31
- return 1;
32
- }
33
- get range() {
34
- return [[0], [0xffffffff]];
35
- }
36
- get alpha() {
37
- return (this[0] >>> 24) / 255;
38
- }
39
- set alpha(x) {
40
- this[0] = (this[0] & 0xffffff) | __scale8bit(x, 24);
41
- }
42
- get xyz() {
43
- const val = this[0];
44
- return [
45
- ((val >> 16) & 0xff) / 0xff,
46
- ((val >> 8) & 0xff) / 0xff,
47
- (val & 0xff) / 0xff,
48
- ];
49
- }
50
- *[Symbol.iterator]() {
51
- yield this[0];
52
- }
53
- deref() {
54
- return [this[0]];
55
- }
56
- randomize(rnd = SYSTEM) {
57
- const x = this[0];
58
- this[0] = (x & 0xff000000) | (rnd.int() & 0xffffff);
59
- return this;
60
- }
61
- clamp() {
62
- return this;
63
- }
64
- set(src) {
65
- this[0] = src[0];
66
- return this;
67
- }
68
- toJSON() {
69
- return [this[0]];
70
- }
15
+ class Int32 {
16
+ constructor(buf, offset = 0, stride = 1) {
17
+ this.offset = offset;
18
+ this.stride = stride;
19
+ this.buf = buf || [0];
20
+ }
21
+ buf;
22
+ value;
23
+ eqDelta(o, eps) {
24
+ return eqDelta4(
25
+ // channel order irrelevant here...
26
+ intArgb32Srgb([], this[0]),
27
+ intArgb32Srgb([], o[0]),
28
+ eps
29
+ );
30
+ }
31
+ get length() {
32
+ return 1;
33
+ }
34
+ get range() {
35
+ return [[0], [4294967295]];
36
+ }
37
+ get alpha() {
38
+ return (this[0] >>> 24) / 255;
39
+ }
40
+ set alpha(x) {
41
+ this[0] = this[0] & 16777215 | __scale8bit(x, 24);
42
+ }
43
+ get xyz() {
44
+ const val = this[0];
45
+ return [
46
+ (val >> 16 & 255) / 255,
47
+ (val >> 8 & 255) / 255,
48
+ (val & 255) / 255
49
+ ];
50
+ }
51
+ *[Symbol.iterator]() {
52
+ yield this[0];
53
+ }
54
+ deref() {
55
+ return [this[0]];
56
+ }
57
+ randomize(rnd = SYSTEM) {
58
+ const x = this[0];
59
+ this[0] = x & 4278190080 | rnd.int() & 16777215;
60
+ return this;
61
+ }
62
+ clamp() {
63
+ return this;
64
+ }
65
+ set(src) {
66
+ this[0] = src[0];
67
+ return this;
68
+ }
69
+ toJSON() {
70
+ return [this[0]];
71
+ }
71
72
  }
72
- export class ARGB extends Int32 {
73
- get mode() {
74
- return "argb32";
75
- }
76
- get r() {
77
- return ((this[0] >> 16) & 0xff) / 255;
78
- }
79
- set r(x) {
80
- this[0] = (this[0] & 0xff00ffff) | __scale8bit(x, 16);
81
- }
82
- get g() {
83
- return ((this[0] >> 8) & 0xff) / 255;
84
- }
85
- set g(x) {
86
- this[0] = (this[0] & 0xffff00ff) | __scale8bit(x, 8);
87
- }
88
- get b() {
89
- return (this[0] & 0xff) / 255;
90
- }
91
- set b(x) {
92
- this[0] = (this[0] & 0xffffff00) | __scale8bit(x);
93
- }
94
- copy() {
95
- return new ARGB([this[0]]);
96
- }
97
- copyView() {
98
- return new ARGB(this.buf, this.offset, this.stride);
99
- }
100
- empty() {
101
- return new ARGB();
102
- }
73
+ class ARGB extends Int32 {
74
+ get mode() {
75
+ return "argb32";
76
+ }
77
+ get r() {
78
+ return (this[0] >> 16 & 255) / 255;
79
+ }
80
+ set r(x) {
81
+ this[0] = this[0] & 4278255615 | __scale8bit(x, 16);
82
+ }
83
+ get g() {
84
+ return (this[0] >> 8 & 255) / 255;
85
+ }
86
+ set g(x) {
87
+ this[0] = this[0] & 4294902015 | __scale8bit(x, 8);
88
+ }
89
+ get b() {
90
+ return (this[0] & 255) / 255;
91
+ }
92
+ set b(x) {
93
+ this[0] = this[0] & 4294967040 | __scale8bit(x);
94
+ }
95
+ copy() {
96
+ return new ARGB([this[0]]);
97
+ }
98
+ copyView() {
99
+ return new ARGB(this.buf, this.offset, this.stride);
100
+ }
101
+ empty() {
102
+ return new ARGB();
103
+ }
103
104
  }
104
105
  declareIndex(ARGB.prototype, "value", 0);
105
- export class ABGR extends Int32 {
106
- get mode() {
107
- return "abgr32";
108
- }
109
- get r() {
110
- return (this[0] & 0xff) / 255;
111
- }
112
- set r(x) {
113
- this[0] = (this[0] & 0xffffff00) | __scale8bit(x);
114
- }
115
- get g() {
116
- return ((this[0] >> 8) & 0xff) / 255;
117
- }
118
- set g(x) {
119
- this[0] = (this[0] & 0xffff00ff) | __scale8bit(x, 8);
120
- }
121
- get b() {
122
- return ((this[0] >> 16) & 0xff) / 255;
123
- }
124
- set b(x) {
125
- this[0] = (this[0] & 0xff00ffff) | __scale8bit(x, 16);
126
- }
127
- copy() {
128
- return new ABGR([this[0]]);
129
- }
130
- copyView() {
131
- return new ABGR(this.buf, this.offset, this.stride);
132
- }
133
- empty() {
134
- return new ABGR();
135
- }
106
+ class ABGR extends Int32 {
107
+ get mode() {
108
+ return "abgr32";
109
+ }
110
+ get r() {
111
+ return (this[0] & 255) / 255;
112
+ }
113
+ set r(x) {
114
+ this[0] = this[0] & 4294967040 | __scale8bit(x);
115
+ }
116
+ get g() {
117
+ return (this[0] >> 8 & 255) / 255;
118
+ }
119
+ set g(x) {
120
+ this[0] = this[0] & 4294902015 | __scale8bit(x, 8);
121
+ }
122
+ get b() {
123
+ return (this[0] >> 16 & 255) / 255;
124
+ }
125
+ set b(x) {
126
+ this[0] = this[0] & 4278255615 | __scale8bit(x, 16);
127
+ }
128
+ copy() {
129
+ return new ABGR([this[0]]);
130
+ }
131
+ copyView() {
132
+ return new ABGR(this.buf, this.offset, this.stride);
133
+ }
134
+ empty() {
135
+ return new ABGR();
136
+ }
136
137
  }
137
138
  declareIndex(ABGR.prototype, "value", 0);
138
139
  const defInt = (ctor, fromSrgb) => {
139
- const factory = (src, ...xs) => src == null
140
- ? new ctor()
141
- : isNumber(src)
142
- ? xs.length && xs.every(isNumber)
143
- ? new ctor([srgbIntArgb32([src, ...xs])])
144
- : new ctor([src], ...xs)
145
- : isString(src)
146
- ? factory(parseCss(src))
147
- : isArrayLike(src)
148
- ? isString(src.mode)
149
- ? new ctor([fromSrgb(srgb(src))], ...xs)
150
- : new ctor(src, ...xs)
151
- : implementsFunction(src, "deref")
152
- ? new ctor([fromSrgb(srgb(src))], ...xs)
153
- : illegalArgs(`can't create a ARGB32 color from: ${src}`);
154
- factory.class = ctor;
155
- factory.range = [[0], [0xffffffff]];
156
- factory.random = (rnd = SYSTEM, buf, idx, stride) => (new ctor(buf, idx, stride).set([
157
- (rnd.int() & 0xffffff) | 0xff000000,
158
- ]));
159
- factory.mapBuffer = (buf, num = buf.length, start = 0, cstride = 1, estride = 1) => mapStridedBuffer(ctor, buf, num, start, cstride, estride);
160
- return factory;
140
+ const factory = (src, ...xs) => src == null ? new ctor() : isNumber(src) ? xs.length && xs.every(isNumber) ? new ctor([srgbIntArgb32([src, ...xs])]) : new ctor([src], ...xs) : isString(src) ? factory(parseCss(src)) : isArrayLike(src) ? isString(src.mode) ? new ctor([fromSrgb(srgb(src))], ...xs) : new ctor(src, ...xs) : implementsFunction(src, "deref") ? new ctor([fromSrgb(srgb(src))], ...xs) : illegalArgs(`can't create a ARGB32 color from: ${src}`);
141
+ factory.class = ctor;
142
+ factory.range = [[0], [4294967295]];
143
+ factory.random = (rnd = SYSTEM, buf, idx, stride) => new ctor(buf, idx, stride).set([
144
+ rnd.int() & 16777215 | 4278190080
145
+ ]);
146
+ factory.mapBuffer = (buf, num = buf.length, start = 0, cstride = 1, estride = 1) => mapStridedBuffer(ctor, buf, num, start, cstride, estride);
147
+ return factory;
148
+ };
149
+ const argb32 = defInt(ARGB, srgbIntArgb32);
150
+ const abgr32 = defInt(ABGR, srgbIntAbgr32);
151
+ export {
152
+ ABGR,
153
+ ARGB,
154
+ Int32,
155
+ abgr32,
156
+ argb32
161
157
  };
162
- export const argb32 = defInt(ARGB, srgbIntArgb32);
163
- export const abgr32 = defInt(ABGR, srgbIntAbgr32);
package/internal/css.js CHANGED
@@ -2,17 +2,21 @@ import { clamp0 } from "@thi.ng/math/interval";
2
2
  import { fract } from "@thi.ng/math/prec";
3
3
  import { FF, PC } from "../api/constants.js";
4
4
  import { __ensureAlpha } from "./ensure.js";
5
- export const __labCss = (mode, src, scale) => {
6
- const l = PC(clamp0(src[0]));
7
- const a = FF(src[1] * scale);
8
- const b = FF(src[2] * scale);
9
- const alpha = __ensureAlpha(src[3]);
10
- return `${mode}(${l} ${a} ${b}` + (alpha < 1 ? `/${FF(alpha)})` : ")");
5
+ const __labCss = (mode, src, scale) => {
6
+ const l = PC(clamp0(src[0]));
7
+ const a = FF(src[1] * scale);
8
+ const b = FF(src[2] * scale);
9
+ const alpha = __ensureAlpha(src[3]);
10
+ return `${mode}(${l} ${a} ${b}` + (alpha < 1 ? `/${FF(alpha)})` : ")");
11
11
  };
12
- export const __lchCss = (mode, src, scaleC) => {
13
- const l = PC(clamp0(src[0]));
14
- const c = FF(clamp0(src[1]) * scaleC);
15
- const h = FF(fract(src[2]) * 360);
16
- const a = __ensureAlpha(src[3]);
17
- return `${mode}(${l} ${c} ${h}` + (a < 1 ? `/${FF(a)})` : ")");
12
+ const __lchCss = (mode, src, scaleC) => {
13
+ const l = PC(clamp0(src[0]));
14
+ const c = FF(clamp0(src[1]) * scaleC);
15
+ const h = FF(fract(src[2]) * 360);
16
+ const a = __ensureAlpha(src[3]);
17
+ return `${mode}(${l} ${c} ${h}` + (a < 1 ? `/${FF(a)})` : ")");
18
+ };
19
+ export {
20
+ __labCss,
21
+ __lchCss
18
22
  };
@@ -1,2 +1,6 @@
1
- export const __dispatch0 = (src) => src.mode;
2
- export const __dispatch1 = (_, src) => src.mode;
1
+ const __dispatch0 = (src) => src.mode;
2
+ const __dispatch1 = (_, src) => src.mode;
3
+ export {
4
+ __dispatch0,
5
+ __dispatch1
6
+ };
@@ -1,19 +1,21 @@
1
1
  import { clamp01 } from "@thi.ng/math/interval";
2
- /** @internal */
3
- export const __ensureAlpha = (x, def = 1) => x != undefined ? clamp01(x) : def;
4
- /** @internal */
5
- export const __ensureArgs = (args) => {
6
- if (typeof args[0] === "number") {
7
- switch (args.length) {
8
- case 1:
9
- return args.push(0, 0, 1), [args];
10
- case 2:
11
- return args.push(0, 1), [args];
12
- case 3:
13
- return args.push(1), [args];
14
- default:
15
- return [args];
16
- }
2
+ const __ensureAlpha = (x, def = 1) => x != void 0 ? clamp01(x) : def;
3
+ const __ensureArgs = (args) => {
4
+ if (typeof args[0] === "number") {
5
+ switch (args.length) {
6
+ case 1:
7
+ return args.push(0, 0, 1), [args];
8
+ case 2:
9
+ return args.push(0, 1), [args];
10
+ case 3:
11
+ return args.push(1), [args];
12
+ default:
13
+ return [args];
17
14
  }
18
- return args;
15
+ }
16
+ return args;
17
+ };
18
+ export {
19
+ __ensureAlpha,
20
+ __ensureArgs
19
21
  };