@visulima/colorize 2.0.0-alpha.10 → 2.0.0-alpha.12

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 (99) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/dist/gradient.cjs +3 -62
  3. package/dist/gradient.d.cts +21 -12
  4. package/dist/gradient.d.mts +21 -12
  5. package/dist/gradient.d.ts +21 -12
  6. package/dist/gradient.mjs +3 -56
  7. package/dist/index.browser.d.mts +203 -60
  8. package/dist/index.browser.d.ts +204 -0
  9. package/dist/index.browser.mjs +1 -61
  10. package/dist/index.server.cjs +2 -255
  11. package/dist/index.server.d.cts +12 -6
  12. package/dist/index.server.d.mts +203 -60
  13. package/dist/index.server.d.ts +12 -6
  14. package/dist/index.server.mjs +1 -61
  15. package/dist/packem_shared/Colorize-BUAQi0t0.js +2 -0
  16. package/dist/packem_shared/Colorize-i0NybjSp.js +1 -0
  17. package/dist/packem_shared/GradientBuilder-CudosKb8.cjs +1 -0
  18. package/dist/packem_shared/GradientBuilder-Du8WSL23.mjs +1 -0
  19. package/dist/packem_shared/colorize.server-BkQZGeaS.mjs +2 -0
  20. package/dist/packem_shared/colorize.server-Dn-gV0MN.cjs +2 -0
  21. package/dist/packem_shared/convertHexToRgb-CJNE3k_E.mjs +1 -0
  22. package/dist/packem_shared/convertHexToRgb-Dvalc5FD.cjs +1 -0
  23. package/dist/packem_shared/rgbToAnsi256--f09kvlF.cjs +1 -0
  24. package/dist/packem_shared/rgbToAnsi256-YETEPW8R.mjs +1 -0
  25. package/dist/packem_shared/types.d-bhP-2hCu.d.cts +154 -0
  26. package/dist/packem_shared/types.d-bhP-2hCu.d.mts +154 -0
  27. package/dist/packem_shared/types.d-bhP-2hCu.d.ts +154 -0
  28. package/dist/template.cjs +2 -152
  29. package/dist/template.d.cts +10 -4
  30. package/dist/template.d.mts +4 -4
  31. package/dist/template.d.ts +10 -4
  32. package/dist/template.mjs +2 -146
  33. package/dist/utils.cjs +1 -13
  34. package/dist/utils.d.cts +13 -2
  35. package/dist/utils.d.mts +13 -2
  36. package/dist/utils.d.ts +13 -2
  37. package/dist/utils.mjs +1 -2
  38. package/package.json +13 -13
  39. package/dist/ansi-codes.d.cts +0 -18
  40. package/dist/ansi-codes.d.mts +0 -18
  41. package/dist/ansi-codes.d.ts +0 -18
  42. package/dist/colorize.browser.d.mts +0 -3
  43. package/dist/colorize.server.d.cts +0 -10
  44. package/dist/colorize.server.d.mts +0 -10
  45. package/dist/colorize.server.d.ts +0 -10
  46. package/dist/css-code.d.mts +0 -11
  47. package/dist/gradient/gradient-builder.d.cts +0 -10
  48. package/dist/gradient/gradient-builder.d.mts +0 -10
  49. package/dist/gradient/gradient-builder.d.ts +0 -10
  50. package/dist/gradient/util/color-names.d.cts +0 -2
  51. package/dist/gradient/util/color-names.d.mts +0 -2
  52. package/dist/gradient/util/color-names.d.ts +0 -2
  53. package/dist/gradient/util/compute.d.cts +0 -2
  54. package/dist/gradient/util/compute.d.mts +0 -2
  55. package/dist/gradient/util/compute.d.ts +0 -2
  56. package/dist/gradient/util/hsv-to-rgb.d.cts +0 -5
  57. package/dist/gradient/util/hsv-to-rgb.d.mts +0 -5
  58. package/dist/gradient/util/hsv-to-rgb.d.ts +0 -5
  59. package/dist/gradient/util/interpolate.d.cts +0 -3
  60. package/dist/gradient/util/interpolate.d.mts +0 -3
  61. package/dist/gradient/util/interpolate.d.ts +0 -3
  62. package/dist/gradient/util/rgb-to-hsv.d.cts +0 -9
  63. package/dist/gradient/util/rgb-to-hsv.d.mts +0 -9
  64. package/dist/gradient/util/rgb-to-hsv.d.ts +0 -9
  65. package/dist/packem_shared/Colorize-BQ-Wlgs0.js +0 -409
  66. package/dist/packem_shared/Colorize-rJUN0RFg.js +0 -250
  67. package/dist/packem_shared/GradientBuilder-CkX4Imo9.mjs +0 -483
  68. package/dist/packem_shared/GradientBuilder-DRrwebdU.cjs +0 -487
  69. package/dist/packem_shared/colorize.server-CwTmhs0e.cjs +0 -198
  70. package/dist/packem_shared/colorize.server-YxoHIDUp.mjs +0 -196
  71. package/dist/packem_shared/convertHexToRgb-51-edHxE.cjs +0 -21
  72. package/dist/packem_shared/convertHexToRgb-BZwJEiMZ.mjs +0 -17
  73. package/dist/packem_shared/rgbToAnsi256-BdS0fomP.mjs +0 -41
  74. package/dist/packem_shared/rgbToAnsi256-DL8eajTz.cjs +0 -47
  75. package/dist/template/make-colorize-template.d.cts +0 -9
  76. package/dist/template/make-colorize-template.d.mts +0 -9
  77. package/dist/template/make-colorize-template.d.ts +0 -9
  78. package/dist/template/make-template.d.cts +0 -10
  79. package/dist/template/make-template.d.mts +0 -10
  80. package/dist/template/make-template.d.ts +0 -10
  81. package/dist/types.d.cts +0 -174
  82. package/dist/types.d.mts +0 -174
  83. package/dist/types.d.ts +0 -174
  84. package/dist/util/ansi-code-hex-map.d.mts +0 -8
  85. package/dist/util/clamp.d.cts +0 -12
  86. package/dist/util/clamp.d.mts +0 -12
  87. package/dist/util/clamp.d.ts +0 -12
  88. package/dist/util/convert-hex-to-rgb.d.cts +0 -8
  89. package/dist/util/convert-hex-to-rgb.d.mts +0 -8
  90. package/dist/util/convert-hex-to-rgb.d.ts +0 -8
  91. package/dist/util/convert-rgb-to-ansi.d.cts +0 -18
  92. package/dist/util/convert-rgb-to-ansi.d.mts +0 -18
  93. package/dist/util/convert-rgb-to-ansi.d.ts +0 -18
  94. package/dist/util/string-replace-all.d.cts +0 -12
  95. package/dist/util/string-replace-all.d.mts +0 -12
  96. package/dist/util/string-replace-all.d.ts +0 -12
  97. package/dist/util/unescape.d.cts +0 -9
  98. package/dist/util/unescape.d.mts +0 -9
  99. package/dist/util/unescape.d.ts +0 -9
@@ -1,487 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
4
-
5
- const convertHexToRgb = require('./convertHexToRgb-51-edHxE.cjs');
6
-
7
- const colorNames = {
8
- aliceblue: [240, 248, 255],
9
- antiquewhite: [250, 235, 215],
10
- aqua: [0, 255, 255],
11
- aquamarine: [127, 255, 212],
12
- azure: [240, 255, 255],
13
- beige: [245, 245, 220],
14
- bisque: [255, 228, 196],
15
- black: [0, 0, 0],
16
- blanchedalmond: [255, 235, 205],
17
- blue: [0, 0, 255],
18
- blueviolet: [138, 43, 226],
19
- brown: [165, 42, 42],
20
- burlywood: [222, 184, 135],
21
- cadetblue: [95, 158, 160],
22
- chartreuse: [127, 255, 0],
23
- chocolate: [210, 105, 30],
24
- coral: [255, 127, 80],
25
- cornflowerblue: [100, 149, 237],
26
- cornsilk: [255, 248, 220],
27
- crimson: [220, 20, 60],
28
- cyan: [0, 255, 255],
29
- darkblue: [0, 0, 139],
30
- darkcyan: [0, 139, 139],
31
- darkgoldenrod: [184, 134, 11],
32
- darkgray: [169, 169, 169],
33
- darkgreen: [0, 100, 0],
34
- darkgrey: [169, 169, 169],
35
- darkkhaki: [189, 183, 107],
36
- darkmagenta: [139, 0, 139],
37
- darkolivegreen: [85, 107, 47],
38
- darkorange: [255, 140, 0],
39
- darkorchid: [153, 50, 204],
40
- darkred: [139, 0, 0],
41
- darksalmon: [233, 150, 122],
42
- darkseagreen: [143, 188, 143],
43
- darkslateblue: [72, 61, 139],
44
- darkslategray: [47, 79, 79],
45
- darkslategrey: [47, 79, 79],
46
- darkturquoise: [0, 206, 209],
47
- darkviolet: [148, 0, 211],
48
- deeppink: [255, 20, 147],
49
- deepskyblue: [0, 191, 255],
50
- dimgray: [105, 105, 105],
51
- dimgrey: [105, 105, 105],
52
- dodgerblue: [30, 144, 255],
53
- firebrick: [178, 34, 34],
54
- floralwhite: [255, 250, 240],
55
- forestgreen: [34, 139, 34],
56
- fuchsia: [255, 0, 255],
57
- gainsboro: [220, 220, 220],
58
- ghostwhite: [248, 248, 255],
59
- gold: [255, 215, 0],
60
- goldenrod: [218, 165, 32],
61
- gray: [128, 128, 128],
62
- green: [0, 128, 0],
63
- greenyellow: [173, 255, 47],
64
- grey: [128, 128, 128],
65
- honeydew: [240, 255, 240],
66
- hotpink: [255, 105, 180],
67
- indianred: [205, 92, 92],
68
- indigo: [75, 0, 130],
69
- ivory: [255, 255, 240],
70
- khaki: [240, 230, 140],
71
- lavender: [230, 230, 250],
72
- lavenderblush: [255, 240, 245],
73
- lawngreen: [124, 252, 0],
74
- lemonchiffon: [255, 250, 205],
75
- lightblue: [173, 216, 230],
76
- lightcoral: [240, 128, 128],
77
- lightcyan: [224, 255, 255],
78
- lightgoldenrodyellow: [250, 250, 210],
79
- lightgray: [211, 211, 211],
80
- lightgreen: [144, 238, 144],
81
- lightgrey: [211, 211, 211],
82
- lightpink: [255, 182, 193],
83
- lightsalmon: [255, 160, 122],
84
- lightseagreen: [32, 178, 170],
85
- lightskyblue: [135, 206, 250],
86
- lightslategray: [119, 136, 153],
87
- lightslategrey: [119, 136, 153],
88
- lightsteelblue: [176, 196, 222],
89
- lightyellow: [255, 255, 224],
90
- lime: [0, 255, 0],
91
- limegreen: [50, 205, 50],
92
- linen: [250, 240, 230],
93
- magenta: [255, 0, 255],
94
- maroon: [128, 0, 0],
95
- mediumaquamarine: [102, 205, 170],
96
- mediumblue: [0, 0, 205],
97
- mediumorchid: [186, 85, 211],
98
- mediumpurple: [147, 112, 219],
99
- mediumseagreen: [60, 179, 113],
100
- mediumslateblue: [123, 104, 238],
101
- mediumspringgreen: [0, 250, 154],
102
- mediumturquoise: [72, 209, 204],
103
- mediumvioletred: [199, 21, 133],
104
- midnightblue: [25, 25, 112],
105
- mintcream: [245, 255, 250],
106
- mistyrose: [255, 228, 225],
107
- moccasin: [255, 228, 181],
108
- navajowhite: [255, 222, 173],
109
- navy: [0, 0, 128],
110
- oldlace: [253, 245, 230],
111
- olive: [128, 128, 0],
112
- olivedrab: [107, 142, 35],
113
- orange: [255, 165, 0],
114
- orangered: [255, 69, 0],
115
- orchid: [218, 112, 214],
116
- palegoldenrod: [238, 232, 170],
117
- palegreen: [152, 251, 152],
118
- paleturquoise: [175, 238, 238],
119
- palevioletred: [219, 112, 147],
120
- papayawhip: [255, 239, 213],
121
- peachpuff: [255, 218, 185],
122
- peru: [205, 133, 63],
123
- pink: [255, 192, 203],
124
- plum: [221, 160, 221],
125
- powderblue: [176, 224, 230],
126
- purple: [128, 0, 128],
127
- rebeccapurple: [102, 51, 153],
128
- red: [255, 0, 0],
129
- rosybrown: [188, 143, 143],
130
- royalblue: [65, 105, 225],
131
- saddlebrown: [139, 69, 19],
132
- salmon: [250, 128, 114],
133
- sandybrown: [244, 164, 96],
134
- seagreen: [46, 139, 87],
135
- seashell: [255, 245, 238],
136
- sienna: [160, 82, 45],
137
- silver: [192, 192, 192],
138
- skyblue: [135, 206, 235],
139
- slateblue: [106, 90, 205],
140
- slategray: [112, 128, 144],
141
- slategrey: [112, 128, 144],
142
- snow: [255, 250, 250],
143
- springgreen: [0, 255, 127],
144
- steelblue: [70, 130, 180],
145
- tan: [210, 180, 140],
146
- teal: [0, 128, 128],
147
- thistle: [216, 191, 216],
148
- tomato: [255, 99, 71],
149
- turquoise: [64, 224, 208],
150
- violet: [238, 130, 238],
151
- wheat: [245, 222, 179],
152
- white: [255, 255, 255],
153
- whitesmoke: [245, 245, 245],
154
- yellow: [255, 255, 0],
155
- yellowgreen: [154, 205, 50]
156
- };
157
-
158
- const computeSubSteps = (stops, steps) => {
159
- const l = stops.length;
160
- steps = Number.parseInt(steps.toString(), 10);
161
- if (Number.isNaN(steps) || steps < 2) {
162
- throw new Error("Invalid number of steps (< 2)");
163
- }
164
- if (steps < l) {
165
- throw new Error("Number of steps cannot be inferior to number of stops");
166
- }
167
- const substeps = [];
168
- for (let index = 1; index < l; index += 1) {
169
- const step = (steps - 1) * (stops[index].position - stops[index - 1].position);
170
- substeps.push(Math.max(1, Math.round(step)));
171
- }
172
- let totalSubsteps = 1;
173
- for (let n = l - 2; n >= 0; n -= 1) {
174
- totalSubsteps += substeps[n];
175
- }
176
- while (totalSubsteps !== steps) {
177
- if (totalSubsteps < steps) {
178
- const min = Math.min(...substeps);
179
- const minIndex = substeps.indexOf(min);
180
- substeps[minIndex] = substeps[minIndex] + 1;
181
- totalSubsteps += 1;
182
- } else {
183
- const max = Math.max(...substeps);
184
- const maxIndex = substeps.indexOf(max);
185
- substeps[maxIndex] = substeps[maxIndex] - 1;
186
- totalSubsteps -= 1;
187
- }
188
- }
189
- return substeps;
190
- };
191
-
192
- const hsvToRgb = (h, s, v) => {
193
- let r = 0;
194
- let g = 0;
195
- let b = 0;
196
- const index = Math.floor(h / 60);
197
- const f = h / 60 - index;
198
- const p = v * (1 - s);
199
- const q = v * (1 - f * s);
200
- const t = v * (1 - (1 - f) * s);
201
- if (index % 6 === 0) {
202
- r = v;
203
- g = t;
204
- b = p;
205
- } else if (index % 6 === 1) {
206
- r = q;
207
- g = v;
208
- b = p;
209
- } else if (index % 6 === 2) {
210
- r = p;
211
- g = v;
212
- b = t;
213
- } else if (index % 6 === 3) {
214
- r = p;
215
- g = q;
216
- b = v;
217
- } else if (index % 6 === 4) {
218
- r = t;
219
- g = p;
220
- b = v;
221
- } else if (index % 6 === 5) {
222
- r = v;
223
- g = p;
224
- b = q;
225
- }
226
- return { b: Math.round(b * 255), g: Math.round(g * 255), r: Math.round(r * 255) };
227
- };
228
-
229
- const rgbToHsv = ({ b, g, r }) => {
230
- let rdif;
231
- let gdif;
232
- let bdif;
233
- let h = 0;
234
- let s = 0;
235
- r /= 255;
236
- g /= 255;
237
- b /= 255;
238
- const v = Math.max(r, g, b);
239
- const diff = v - Math.min(r, g, b);
240
- const diffc = (c) => (v - c) / 6 / diff + 1 / 2;
241
- if (diff !== 0) {
242
- s = diff / v;
243
- rdif = diffc(r);
244
- gdif = diffc(g);
245
- bdif = diffc(b);
246
- if (v === r) {
247
- h = bdif - gdif;
248
- } else if (v === g) {
249
- h = 1 / 3 + rdif - bdif;
250
- } else if (v === b) {
251
- h = 2 / 3 + gdif - rdif;
252
- }
253
- if (h < 0) {
254
- h += 1;
255
- } else if (h > 1) {
256
- h -= 1;
257
- }
258
- }
259
- return {
260
- h: h * 360,
261
- s,
262
- v
263
- };
264
- };
265
-
266
- const RGBA_MAX = { b: 256, g: 256, r: 256 };
267
- const HSV_MAX = { h: 360, s: 1, v: 1 };
268
- const calculateStepSize = (start, end, steps) => {
269
- const step = {};
270
- for (const k in start) {
271
- if (Object.hasOwn(start, k)) {
272
- step[k] = steps === 0 ? 0 : (end[k] - start[k]) / steps;
273
- }
274
- }
275
- return step;
276
- };
277
- const interpolate = (step, start, index, max) => {
278
- const color = {};
279
- for (const k in start) {
280
- if (Object.hasOwn(start, k)) {
281
- let value = step[k] * index + start[k];
282
- if (value < 0) {
283
- value += max[k];
284
- } else if (max[k] !== 1) {
285
- value %= max[k];
286
- }
287
- color[k] = value;
288
- }
289
- }
290
- return color;
291
- };
292
- const interpolateRgb = (stop1, stop2, steps) => {
293
- const start = { b: stop1.color[2], g: stop1.color[1], r: stop1.color[0] };
294
- const end = { b: stop2.color[2], g: stop2.color[1], r: stop2.color[0] };
295
- const step = calculateStepSize(start, end, steps);
296
- const gradient = [{ ...start }];
297
- for (let index = 1; index < steps; index += 1) {
298
- const color = interpolate(step, start, index, RGBA_MAX);
299
- gradient.push({
300
- b: Math.floor(color.b),
301
- g: Math.floor(color.g),
302
- r: Math.floor(color.r)
303
- });
304
- }
305
- return gradient;
306
- };
307
- const interpolateHsv = (stop1, stop2, steps, mode) => {
308
- const start = rgbToHsv({ b: stop1.color[2], g: stop1.color[1], r: stop1.color[0] });
309
- const end = rgbToHsv({ b: stop2.color[2], g: stop2.color[1], r: stop2.color[0] });
310
- if (start.s === 0 || end.s === 0) {
311
- return interpolateRgb(stop1, stop2, steps);
312
- }
313
- let trigonometric;
314
- if (typeof mode === "boolean") {
315
- trigonometric = mode;
316
- } else {
317
- const trigShortest = start.h < end.h && end.h - start.h < 180 || start.h > end.h && start.h - end.h > 180;
318
- trigonometric = mode === "long" && trigShortest || mode === "short" && !trigShortest;
319
- }
320
- const step = calculateStepSize(start, end, steps);
321
- const gradient = [
322
- {
323
- b: stop1.color[2],
324
- g: stop1.color[1],
325
- r: stop1.color[0]
326
- }
327
- ];
328
- let diff;
329
- if (start.h <= end.h && !trigonometric || start.h >= end.h && trigonometric) {
330
- diff = end.h - start.h;
331
- } else if (trigonometric) {
332
- diff = 360 - end.h + start.h;
333
- } else {
334
- diff = 360 - start.h + end.h;
335
- }
336
- step.h = (-1) ** (trigonometric ? 1 : 0) * Math.abs(diff) / steps;
337
- for (let index = 1; index < steps; index += 1) {
338
- const color = interpolate(step, start, index, HSV_MAX);
339
- gradient.push(hsvToRgb(color.h, color.s, color.v));
340
- }
341
- return gradient;
342
- };
343
-
344
- class GradientBuilder {
345
- #colorize;
346
- stops;
347
- // eslint-disable-next-line sonarjs/cognitive-complexity
348
- constructor(colorize, stops) {
349
- this.#colorize = colorize;
350
- this.stops = [];
351
- if (stops.length < 2) {
352
- throw new Error("Invalid number of stops (< 2)");
353
- }
354
- const havingPositions = stops[0].position !== void 0;
355
- let l = stops.length;
356
- let p = -1;
357
- let lastColorLess = false;
358
- for (const [index, stop_] of stops.entries()) {
359
- let stop;
360
- const hasPosition = stop_.position !== void 0;
361
- if (havingPositions !== hasPosition) {
362
- throw new Error("Cannot mix positioned and non-positioned color stops");
363
- }
364
- if (hasPosition) {
365
- const stopInput = stop_;
366
- const hasColor = stopInput.color !== void 0;
367
- if (!hasColor && (lastColorLess || index === 0 || index === l - 1)) {
368
- throw new Error("Cannot define two consecutive position-only stops");
369
- }
370
- lastColorLess = !hasColor;
371
- let color;
372
- if (hasColor) {
373
- if (Array.isArray(stopInput.color)) {
374
- color = stopInput.color;
375
- } else if (typeof stopInput.color === "string") {
376
- color = stopInput.color.includes("#") ? convertHexToRgb.convertHexToRgb(stopInput.color) : colorNames[stopInput.color];
377
- } else if (stopInput.color && "r" in stopInput.color && "g" in stopInput.color && "b" in stopInput.color) {
378
- color = [stopInput.color.r, stopInput.color.g, stopInput.color.b];
379
- }
380
- }
381
- stop = {
382
- color,
383
- colorLess: !hasColor,
384
- position: stopInput.position
385
- };
386
- if (stop.position < 0 || stop.position > 1) {
387
- throw new Error("Color stops positions must be between 0 and 1");
388
- } else if (stop.position < p) {
389
- throw new Error("Color stops positions are not ordered");
390
- }
391
- p = stop.position;
392
- } else if (Array.isArray(stop_)) {
393
- stop = {
394
- color: stop_,
395
- position: index / (l - 1)
396
- };
397
- } else if (typeof stop_ === "string") {
398
- stop = {
399
- color: stop_.includes("#") ? convertHexToRgb.convertHexToRgb(stop_) : colorNames[stop_],
400
- position: index / (l - 1)
401
- };
402
- } else if (stop_?.r !== void 0 && stop_?.g !== void 0 && stop_?.b !== void 0) {
403
- stop = {
404
- color: [stop_.r, stop_.g, stop_.b],
405
- position: index / (l - 1)
406
- };
407
- } else {
408
- throw new Error("Invalid color stop");
409
- }
410
- this.stops.push(stop);
411
- }
412
- const firstStop = this.stops[0];
413
- if (firstStop.position !== 0) {
414
- this.stops.unshift({
415
- color: firstStop.color,
416
- position: 0
417
- });
418
- l += 1;
419
- }
420
- const lastStop = this.stops[l - 1];
421
- if (lastStop.position !== 1) {
422
- this.stops.push({
423
- color: lastStop.color,
424
- position: 1
425
- });
426
- }
427
- }
428
- reverse() {
429
- const stops = [];
430
- for (const stop of this.stops) {
431
- const reversedStop = { ...stop, position: 1 - stop.position };
432
- stops.push(reversedStop);
433
- }
434
- return new GradientBuilder(this.#colorize, stops.toReversed());
435
- }
436
- loop() {
437
- const stops1 = [];
438
- const stops2 = [];
439
- for (const stop of this.stops) {
440
- stops1.push({
441
- color: stop.color,
442
- position: (stop.position || 0) / 2
443
- });
444
- }
445
- for (const stop of this.stops.slice(0, -1)) {
446
- stops2.push({
447
- color: stop.color,
448
- position: 1 - (stop.position || 0) / 2
449
- });
450
- }
451
- return new GradientBuilder(this.#colorize, [...stops1, ...stops2.toReversed()]);
452
- }
453
- rgb(steps) {
454
- const subSteps = computeSubSteps(this.stops, steps);
455
- const gradient = [];
456
- this.stops.forEach((stop, index) => {
457
- if (stop.colorLess) {
458
- const rgbs = interpolateRgb(this.stops[index - 1], this.stops[index + 1], 2);
459
- stop.color = [rgbs[1].r, rgbs[1].g, rgbs[1].b];
460
- }
461
- });
462
- for (let index = 0, l = this.stops.length; index < l - 1; index += 1) {
463
- const rgbs = interpolateRgb(this.stops[index], this.stops[index + 1], subSteps[index]);
464
- gradient.splice(gradient.length, 0, ...rgbs.map((rgb) => this.#colorize.rgb(rgb.r, rgb.g, rgb.b)));
465
- }
466
- gradient.push(this.#colorize.rgb(...this.stops.at(-1).color));
467
- return gradient;
468
- }
469
- hsv(steps, mode = false) {
470
- const subSteps = computeSubSteps(this.stops, steps);
471
- const gradient = [];
472
- this.stops.forEach((stop, index) => {
473
- if (stop.colorLess) {
474
- const rgbs = interpolateHsv(this.stops[index - 1], this.stops[index + 1], 2, mode);
475
- stop.color = [rgbs[1].r, rgbs[1].g, rgbs[1].b];
476
- }
477
- });
478
- for (let index = 0, l = this.stops.length; index < l - 1; index += 1) {
479
- const rgbs = interpolateHsv(this.stops[index], this.stops[index + 1], subSteps[index], mode);
480
- gradient.splice(gradient.length, 0, ...rgbs.map((rgb) => this.#colorize.rgb(rgb.r, rgb.g, rgb.b)));
481
- }
482
- gradient.push(this.#colorize.rgb(...this.stops.at(-1).color));
483
- return gradient;
484
- }
485
- }
486
-
487
- exports.GradientBuilder = GradientBuilder;
@@ -1,198 +0,0 @@
1
- 'use strict';
2
-
3
- const isAnsiColorSupported = require('@visulima/is-ansi-color-supported');
4
- const convertHexToRgb = require('./convertHexToRgb-51-edHxE.cjs');
5
- const rgbToAnsi256 = require('./rgbToAnsi256-DL8eajTz.cjs');
6
-
7
- function ansiRegex({ onlyFirst = false } = {}) {
8
- const ST = "(?:\\u0007|\\u001B\\u005C|\\u009C)";
9
- const osc = `(?:\\u001B\\][\\s\\S]*?${ST})`;
10
- const csi = "[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]";
11
- const pattern = `${osc}|${csi}`;
12
- return new RegExp(pattern, onlyFirst ? void 0 : "g");
13
- }
14
-
15
- const clamp = (number_, min, max) => {
16
- if (min > number_) {
17
- return min;
18
- }
19
- return Math.min(number_, max);
20
- };
21
-
22
- const closeCode = 39;
23
- const bgCloseCode = 49;
24
- const bgOffset = 10;
25
- const supportedColor = isAnsiColorSupported.isStdoutColorSupported();
26
- const mono = { close: "", open: "" };
27
- const esc = supportedColor > 0 ? (open, close) => {
28
- return { close: `\x1B[${String(close)}m`, open: `\x1B[${String(open)}m` };
29
- } : () => mono;
30
- const createRgbFunction = (function_) => (r, g, b) => function_(rgbToAnsi256.rgbToAnsi256(Number(r), Number(g), Number(b)));
31
- const createHexFunction = (function_) => (hex) => {
32
- const [r, g, b] = convertHexToRgb.convertHexToRgb(hex);
33
- return function_(r, g, b);
34
- };
35
- let createAnsi256 = (code) => esc(`38;5;${String(code)}`, closeCode);
36
- let createBgAnsi256 = (code) => esc(`48;5;${String(code)}`, bgCloseCode);
37
- let createRgb = (r, g, b) => esc(`38;2;${String(r)};${String(g)};${String(b)}`, closeCode);
38
- let createBgRgb = (r, g, b) => esc(`48;2;${String(r)};${String(g)};${String(b)}`, bgCloseCode);
39
- if (supportedColor === 1) {
40
- createAnsi256 = (code) => esc(rgbToAnsi256.ansi256To16(Number(code)), closeCode);
41
- createBgAnsi256 = (code) => esc(rgbToAnsi256.ansi256To16(Number(code)) + bgOffset, bgCloseCode);
42
- createRgb = (r, g, b) => esc(rgbToAnsi256.rgbToAnsi16(Number(r), Number(g), Number(b)), closeCode);
43
- createBgRgb = (r, g, b) => esc(rgbToAnsi256.rgbToAnsi16(Number(r), Number(g), Number(b)) + bgOffset, bgCloseCode);
44
- } else if (supportedColor === 2) {
45
- createRgb = createRgbFunction(createAnsi256);
46
- createBgRgb = createRgbFunction(createBgAnsi256);
47
- }
48
- const baseStyles = {
49
- // 21 isn't widely supported and 22 does the same thing
50
- bold: esc(1, 22),
51
- dim: esc(2, 22),
52
- hidden: esc(8, 28),
53
- inverse: esc(7, 27),
54
- italic: esc(3, 23),
55
- overline: esc(53, 55),
56
- reset: esc(0, 0),
57
- strike: esc(9, 29),
58
- // alias for strikethrough
59
- strikethrough: esc(9, 29),
60
- underline: esc(4, 24),
61
- visible: mono
62
- };
63
- const baseColors = {
64
- bgBlack: esc(40, bgCloseCode),
65
- bgBlackBright: esc(100, bgCloseCode),
66
- bgBlue: esc(44, bgCloseCode),
67
- bgBlueBright: esc(104, bgCloseCode),
68
- bgCyan: esc(46, bgCloseCode),
69
- bgCyanBright: esc(106, bgCloseCode),
70
- bgGray: esc(100, bgCloseCode),
71
- // US spelling alias for bgBlackBright
72
- bgGreen: esc(42, bgCloseCode),
73
- bgGreenBright: esc(102, bgCloseCode),
74
- bgGrey: esc(100, bgCloseCode),
75
- // UK spelling alias for bgBlackBright
76
- bgMagenta: esc(45, bgCloseCode),
77
- bgMagentaBright: esc(105, bgCloseCode),
78
- bgRed: esc(41, bgCloseCode),
79
- bgRedBright: esc(101, bgCloseCode),
80
- bgWhite: esc(47, bgCloseCode),
81
- bgWhiteBright: esc(107, bgCloseCode),
82
- bgYellow: esc(43, bgCloseCode),
83
- bgYellowBright: esc(103, bgCloseCode),
84
- black: esc(30, closeCode),
85
- blackBright: esc(90, closeCode),
86
- blue: esc(34, closeCode),
87
- blueBright: esc(94, closeCode),
88
- cyan: esc(36, closeCode),
89
- cyanBright: esc(96, closeCode),
90
- gray: esc(90, closeCode),
91
- // US spelling alias for blackBright
92
- green: esc(32, closeCode),
93
- greenBright: esc(92, closeCode),
94
- grey: esc(90, closeCode),
95
- // UK spelling alias for blackBright
96
- magenta: esc(35, closeCode),
97
- magentaBright: esc(95, closeCode),
98
- red: esc(31, closeCode),
99
- redBright: esc(91, closeCode),
100
- white: esc(37, closeCode),
101
- whiteBright: esc(97, closeCode),
102
- yellow: esc(33, closeCode),
103
- yellowBright: esc(93, closeCode)
104
- };
105
- const styleMethods = {
106
- bg: (code) => createBgAnsi256(clamp(code, 0, 255)),
107
- bgHex: createHexFunction(createBgRgb),
108
- bgRgb: (r, g, b) => createBgRgb(clamp(r, 0, 255), clamp(g, 0, 255), clamp(b, 0, 255)),
109
- fg: (code) => createAnsi256(clamp(code, 0, 255)),
110
- hex: createHexFunction(createRgb),
111
- rgb: (r, g, b) => createRgb(clamp(r, 0, 255), clamp(g, 0, 255), clamp(b, 0, 255))
112
- };
113
-
114
- const stringReplaceAll = (string_, searchValue, replaceValue) => {
115
- if (searchValue === "") {
116
- return string_;
117
- }
118
- let pos = string_.indexOf(searchValue);
119
- if (pos < 0) {
120
- return string_;
121
- }
122
- const substringLength = searchValue.length;
123
- let lastPos = 0;
124
- let result = "";
125
- while (~pos) {
126
- result += string_.slice(lastPos, pos) + replaceValue;
127
- lastPos = pos + substringLength;
128
- pos = string_.indexOf(searchValue, lastPos);
129
- }
130
- return result + string_.slice(lastPos);
131
- };
132
-
133
- const styles = {};
134
- let stylePrototype = null;
135
- const wrapText = (strings, values, properties) => {
136
- if (!strings) {
137
- return "";
138
- }
139
- let string = strings.raw === void 0 ? String(strings) : String.raw(strings, ...values);
140
- if (string.includes("\x1B")) {
141
- for (let currentProperties = properties; currentProperties; currentProperties = currentProperties.props) {
142
- string = stringReplaceAll(string, currentProperties.close, currentProperties.open);
143
- }
144
- }
145
- if (string.includes("\n")) {
146
- string = string.replace(/(\r*\n)/g, `${properties.closeStack}$1${properties.openStack}`);
147
- }
148
- return properties.openStack + string + properties.closeStack;
149
- };
150
- const createStyle = ({ props }, { close, open }) => {
151
- const openStack = (props?.openStack ?? "") + open;
152
- const closeStack = close + (props?.closeStack ?? "");
153
- const style = (strings, ...values) => wrapText(strings, values, style.props);
154
- Object.setPrototypeOf(style, stylePrototype);
155
- style.props = { close, closeStack, open, openStack, props };
156
- style.open = openStack;
157
- style.close = closeStack;
158
- return style;
159
- };
160
- const Colorize = function() {
161
- const self = (string_) => String(string_);
162
- self.strip = (value) => value.replaceAll(ansiRegex(), "");
163
- for (const name in baseColors) {
164
- styles[name] = {
165
- get() {
166
- const style = createStyle(this, baseColors[name]);
167
- Object.defineProperty(this, name, { value: style });
168
- return style;
169
- }
170
- };
171
- }
172
- for (const name in baseStyles) {
173
- styles[name] = {
174
- get() {
175
- const style = createStyle(this, baseStyles[name]);
176
- Object.defineProperty(this, name, { value: style });
177
- return style;
178
- }
179
- };
180
- }
181
- stylePrototype = Object.defineProperties({}, styles);
182
- Object.setPrototypeOf(self, stylePrototype);
183
- return self;
184
- };
185
- for (const name in styleMethods) {
186
- styles[name] = {
187
- get() {
188
- return (...arguments_) => (
189
- // @ts-expect-error: TODO: fix typing of `arguments_`
190
- createStyle(this, styleMethods[name](...arguments_))
191
- );
192
- }
193
- };
194
- }
195
- styles.ansi256 = styles.fg;
196
- styles.bgAnsi256 = styles.bg;
197
-
198
- exports.Colorize = Colorize;