@visulima/colorize 2.0.0-alpha.1 → 2.0.0-alpha.11

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 (101) hide show
  1. package/CHANGELOG.md +169 -0
  2. package/LICENSE.md +1 -1
  3. package/README.md +32 -30
  4. package/dist/gradient.cjs +3 -60
  5. package/dist/gradient.d.cts +21 -12
  6. package/dist/gradient.d.mts +21 -12
  7. package/dist/gradient.d.ts +21 -12
  8. package/dist/gradient.mjs +3 -54
  9. package/dist/index.browser.d.mts +204 -61
  10. package/dist/index.browser.d.ts +204 -0
  11. package/dist/index.browser.mjs +1 -61
  12. package/dist/index.server.cjs +2 -246
  13. package/dist/index.server.d.cts +13 -7
  14. package/dist/index.server.d.mts +204 -61
  15. package/dist/index.server.d.ts +13 -7
  16. package/dist/index.server.mjs +1 -61
  17. package/dist/packem_shared/Colorize-BUAQi0t0.js +2 -0
  18. package/dist/packem_shared/Colorize-i0NybjSp.js +1 -0
  19. package/dist/packem_shared/GradientBuilder-CudosKb8.cjs +1 -0
  20. package/dist/packem_shared/GradientBuilder-Du8WSL23.mjs +1 -0
  21. package/dist/packem_shared/colorize.server-BkQZGeaS.mjs +2 -0
  22. package/dist/packem_shared/colorize.server-Dn-gV0MN.cjs +2 -0
  23. package/dist/packem_shared/convertHexToRgb-CJNE3k_E.mjs +1 -0
  24. package/dist/packem_shared/convertHexToRgb-Dvalc5FD.cjs +1 -0
  25. package/dist/packem_shared/rgbToAnsi256--f09kvlF.cjs +1 -0
  26. package/dist/packem_shared/rgbToAnsi256-YETEPW8R.mjs +1 -0
  27. package/dist/packem_shared/types.d-bhP-2hCu.d.cts +154 -0
  28. package/dist/packem_shared/types.d-bhP-2hCu.d.mts +154 -0
  29. package/dist/packem_shared/types.d-bhP-2hCu.d.ts +154 -0
  30. package/dist/template.cjs +2 -144
  31. package/dist/template.d.cts +10 -4
  32. package/dist/template.d.mts +4 -4
  33. package/dist/template.d.ts +10 -4
  34. package/dist/template.mjs +2 -138
  35. package/dist/utils.cjs +1 -13
  36. package/dist/utils.d.cts +13 -2
  37. package/dist/utils.d.mts +13 -2
  38. package/dist/utils.d.ts +13 -2
  39. package/dist/utils.mjs +1 -2
  40. package/package.json +50 -50
  41. package/dist/ansi-codes.d.cts +0 -18
  42. package/dist/ansi-codes.d.mts +0 -18
  43. package/dist/ansi-codes.d.ts +0 -18
  44. package/dist/colorize.browser.d.mts +0 -3
  45. package/dist/colorize.server.d.cts +0 -10
  46. package/dist/colorize.server.d.mts +0 -10
  47. package/dist/colorize.server.d.ts +0 -10
  48. package/dist/css-code.d.mts +0 -11
  49. package/dist/gradient/gradient-builder.d.cts +0 -10
  50. package/dist/gradient/gradient-builder.d.mts +0 -10
  51. package/dist/gradient/gradient-builder.d.ts +0 -10
  52. package/dist/gradient/util/color-names.d.cts +0 -2
  53. package/dist/gradient/util/color-names.d.mts +0 -2
  54. package/dist/gradient/util/color-names.d.ts +0 -2
  55. package/dist/gradient/util/compute.d.cts +0 -2
  56. package/dist/gradient/util/compute.d.mts +0 -2
  57. package/dist/gradient/util/compute.d.ts +0 -2
  58. package/dist/gradient/util/hsv-to-rgb.d.cts +0 -5
  59. package/dist/gradient/util/hsv-to-rgb.d.mts +0 -5
  60. package/dist/gradient/util/hsv-to-rgb.d.ts +0 -5
  61. package/dist/gradient/util/interpolate.d.cts +0 -3
  62. package/dist/gradient/util/interpolate.d.mts +0 -3
  63. package/dist/gradient/util/interpolate.d.ts +0 -3
  64. package/dist/gradient/util/rgb-to-hsv.d.cts +0 -9
  65. package/dist/gradient/util/rgb-to-hsv.d.mts +0 -9
  66. package/dist/gradient/util/rgb-to-hsv.d.ts +0 -9
  67. package/dist/packem_shared/Colorize-BenP3bFn.mjs +0 -241
  68. package/dist/packem_shared/Colorize-Ca9CXTcj.mjs +0 -413
  69. package/dist/packem_shared/GradientBuilder-BXOgJeHi.cjs +0 -490
  70. package/dist/packem_shared/GradientBuilder-DTnSGyYW.mjs +0 -486
  71. package/dist/packem_shared/colorize.server-BA3gZZXz.cjs +0 -193
  72. package/dist/packem_shared/colorize.server-ry9FZNfG.mjs +0 -191
  73. package/dist/packem_shared/convertHexToRgb-CWdAm2kE.mjs +0 -13
  74. package/dist/packem_shared/convertHexToRgb-DvkHBM3-.cjs +0 -17
  75. package/dist/packem_shared/rgbToAnsi256-BdS0fomP.mjs +0 -41
  76. package/dist/packem_shared/rgbToAnsi256-DL8eajTz.cjs +0 -47
  77. package/dist/template/make-colorize-template.d.cts +0 -9
  78. package/dist/template/make-colorize-template.d.mts +0 -9
  79. package/dist/template/make-colorize-template.d.ts +0 -9
  80. package/dist/template/make-template.d.cts +0 -10
  81. package/dist/template/make-template.d.mts +0 -10
  82. package/dist/template/make-template.d.ts +0 -10
  83. package/dist/types.d.cts +0 -174
  84. package/dist/types.d.mts +0 -174
  85. package/dist/types.d.ts +0 -174
  86. package/dist/util/ansi-code-hex-map.d.mts +0 -8
  87. package/dist/util/clamp.d.cts +0 -12
  88. package/dist/util/clamp.d.mts +0 -12
  89. package/dist/util/clamp.d.ts +0 -12
  90. package/dist/util/convert-hex-to-rgb.d.cts +0 -22
  91. package/dist/util/convert-hex-to-rgb.d.mts +0 -22
  92. package/dist/util/convert-hex-to-rgb.d.ts +0 -22
  93. package/dist/util/convert-rgb-to-ansi.d.cts +0 -18
  94. package/dist/util/convert-rgb-to-ansi.d.mts +0 -18
  95. package/dist/util/convert-rgb-to-ansi.d.ts +0 -18
  96. package/dist/util/string-replace-all.d.cts +0 -12
  97. package/dist/util/string-replace-all.d.mts +0 -12
  98. package/dist/util/string-replace-all.d.ts +0 -12
  99. package/dist/util/unescape.d.cts +0 -9
  100. package/dist/util/unescape.d.mts +0 -9
  101. package/dist/util/unescape.d.ts +0 -9
@@ -1,10 +0,0 @@
1
- /**
2
- * Modified copy of https://github.com/webdiscus/ansis/blob/master/src/index.js
3
- *
4
- * ISC License
5
- *
6
- * Copyright (c) 2023, webdiscus
7
- */
8
- import type { ColorizeType } from "./types.d.ts";
9
- declare const Colorize: new () => ColorizeType;
10
- export = Colorize;
@@ -1,11 +0,0 @@
1
- import type { AnsiColors, AnsiStyles } from "./types.d.mts";
2
- export declare const baseStyles: Required<Record<AnsiStyles, string>>;
3
- export declare const baseColors: Required<Record<AnsiColors, string>>;
4
- export declare const styleMethods: {
5
- bg: (code: number) => string;
6
- bgHex: (hex: string) => string;
7
- bgRgb: (r: number, g: number, b: number) => string;
8
- fg: (code: number) => string;
9
- hex: (hex: string) => string;
10
- rgb: (r: number, g: number, b: number) => string;
11
- };
@@ -1,10 +0,0 @@
1
- import type { ColorizeType, ColorValueHex, CssColorName, RGB, StopInput, StopOutput } from "../types.d.cts";
2
- export declare class GradientBuilder {
3
- #private;
4
- readonly stops: StopOutput[];
5
- constructor(colorize: ColorizeType, stops: (ColorValueHex | CssColorName | RGB | StopInput | [number, number, number])[]);
6
- reverse(): GradientBuilder;
7
- loop(): GradientBuilder;
8
- rgb(steps: number): ColorizeType[];
9
- hsv(steps: number, mode?: boolean | "long" | "short"): ColorizeType[];
10
- }
@@ -1,10 +0,0 @@
1
- import type { ColorizeType, ColorValueHex, CssColorName, RGB, StopInput, StopOutput } from "../types.d.mts";
2
- export declare class GradientBuilder {
3
- #private;
4
- readonly stops: StopOutput[];
5
- constructor(colorize: ColorizeType, stops: (ColorValueHex | CssColorName | RGB | StopInput | [number, number, number])[]);
6
- reverse(): GradientBuilder;
7
- loop(): GradientBuilder;
8
- rgb(steps: number): ColorizeType[];
9
- hsv(steps: number, mode?: boolean | "long" | "short"): ColorizeType[];
10
- }
@@ -1,10 +0,0 @@
1
- import type { ColorizeType, ColorValueHex, CssColorName, RGB, StopInput, StopOutput } from "../types.d.ts";
2
- export declare class GradientBuilder {
3
- #private;
4
- readonly stops: StopOutput[];
5
- constructor(colorize: ColorizeType, stops: (ColorValueHex | CssColorName | RGB | StopInput | [number, number, number])[]);
6
- reverse(): GradientBuilder;
7
- loop(): GradientBuilder;
8
- rgb(steps: number): ColorizeType[];
9
- hsv(steps: number, mode?: boolean | "long" | "short"): ColorizeType[];
10
- }
@@ -1,2 +0,0 @@
1
- import type { CssColorCodes } from "../../types.d.cts";
2
- export declare const colorNames: CssColorCodes;
@@ -1,2 +0,0 @@
1
- import type { CssColorCodes } from "../../types.d.mts";
2
- export declare const colorNames: CssColorCodes;
@@ -1,2 +0,0 @@
1
- import type { CssColorCodes } from "../../types.d.ts";
2
- export declare const colorNames: CssColorCodes;
@@ -1,2 +0,0 @@
1
- import type { StopOutput } from "../../types.d.cts";
2
- export declare const computeSubSteps: (stops: StopOutput[], steps: number) => number[];
@@ -1,2 +0,0 @@
1
- import type { StopOutput } from "../../types.d.mts";
2
- export declare const computeSubSteps: (stops: StopOutput[], steps: number) => number[];
@@ -1,2 +0,0 @@
1
- import type { StopOutput } from "../../types.d.ts";
2
- export declare const computeSubSteps: (stops: StopOutput[], steps: number) => number[];
@@ -1,5 +0,0 @@
1
- export declare const hsvToRgb: (h: number, s: number, v: number) => {
2
- b: number;
3
- g: number;
4
- r: number;
5
- };
@@ -1,5 +0,0 @@
1
- export declare const hsvToRgb: (h: number, s: number, v: number) => {
2
- b: number;
3
- g: number;
4
- r: number;
5
- };
@@ -1,5 +0,0 @@
1
- export declare const hsvToRgb: (h: number, s: number, v: number) => {
2
- b: number;
3
- g: number;
4
- r: number;
5
- };
@@ -1,3 +0,0 @@
1
- import type { RGB, StopOutput } from "../../types.d.cts";
2
- export declare const interpolateRgb: (stop1: StopOutput, stop2: StopOutput, steps: number) => RGB[];
3
- export declare const interpolateHsv: (stop1: StopOutput, stop2: StopOutput, steps: number, mode: boolean | "long" | "short") => RGB[];
@@ -1,3 +0,0 @@
1
- import type { RGB, StopOutput } from "../../types.d.mts";
2
- export declare const interpolateRgb: (stop1: StopOutput, stop2: StopOutput, steps: number) => RGB[];
3
- export declare const interpolateHsv: (stop1: StopOutput, stop2: StopOutput, steps: number, mode: boolean | "long" | "short") => RGB[];
@@ -1,3 +0,0 @@
1
- import type { RGB, StopOutput } from "../../types.d.ts";
2
- export declare const interpolateRgb: (stop1: StopOutput, stop2: StopOutput, steps: number) => RGB[];
3
- export declare const interpolateHsv: (stop1: StopOutput, stop2: StopOutput, steps: number, mode: boolean | "long" | "short") => RGB[];
@@ -1,9 +0,0 @@
1
- export declare const rgbToHsv: ({ b, g, r }: {
2
- b: number;
3
- g: number;
4
- r: number;
5
- }) => {
6
- h: number;
7
- s: number;
8
- v: number;
9
- };
@@ -1,9 +0,0 @@
1
- export declare const rgbToHsv: ({ b, g, r }: {
2
- b: number;
3
- g: number;
4
- r: number;
5
- }) => {
6
- h: number;
7
- s: number;
8
- v: number;
9
- };
@@ -1,9 +0,0 @@
1
- export declare const rgbToHsv: ({ b, g, r }: {
2
- b: number;
3
- g: number;
4
- r: number;
5
- }) => {
6
- h: number;
7
- s: number;
8
- v: number;
9
- };
@@ -1,241 +0,0 @@
1
- import { isStdoutColorSupported } from '@visulima/is-ansi-color-supported';
2
-
3
- function ansiRegex({ onlyFirst = false } = {}) {
4
- const ST = "(?:\\u0007|\\u001B\\u005C|\\u009C)";
5
- const osc = `(?:\\u001B\\][\\s\\S]*?${ST})`;
6
- const csi = "[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]";
7
- const pattern = `${osc}|${csi}`;
8
- return new RegExp(pattern, onlyFirst ? void 0 : "g");
9
- }
10
-
11
- const clamp = (number_, min, max) => min > number_ ? min : Math.min(number_, max);
12
-
13
- const convertHexToRgb = (hex) => {
14
- let [, color] = /([a-f\d]{3,6})/i.exec(hex) ?? [];
15
- const length_ = color ? color.length : 0;
16
- if (length_ === 3) {
17
- color = color[0] + color[0] + color[1] + color[1] + color[2] + color[2];
18
- } else if (length_ !== 6) {
19
- return [0, 0, 0];
20
- }
21
- const number_ = Number.parseInt(color, 16);
22
- return [number_ >> 16 & 255, number_ >> 8 & 255, number_ & 255];
23
- };
24
-
25
- const rgbToAnsi256 = (r, g, b) => {
26
- if (r === g && g === b) {
27
- if (r < 8) {
28
- return 16;
29
- }
30
- if (r > 248) {
31
- return 231;
32
- }
33
- return Math.round((r - 8) / 247 * 24) + 232;
34
- }
35
- return 16 + 36 * Math.round(r / 51) + 6 * Math.round(g / 51) + Math.round(b / 51);
36
- };
37
- const ansi256To16 = (code) => {
38
- let r;
39
- let g;
40
- let b;
41
- if (code < 8) {
42
- return 30 + code;
43
- }
44
- if (code < 16) {
45
- return 90 + (code - 8);
46
- }
47
- if (code >= 232) {
48
- r = g = b = ((code - 232) * 10 + 8) / 255;
49
- } else {
50
- code -= 16;
51
- const remainder = code % 36;
52
- r = Math.floor(code / 36) / 5;
53
- g = Math.floor(remainder / 6) / 5;
54
- b = remainder % 6 / 5;
55
- }
56
- const value = Math.max(r, g, b) * 2;
57
- if (value === 0) {
58
- return 30;
59
- }
60
- const code16 = 30 + (Math.round(b) << 2 | Math.round(g) << 1 | Math.round(r));
61
- return value === 2 ? code16 + 60 : code16;
62
- };
63
- const rgbToAnsi16 = (r, g, b) => ansi256To16(rgbToAnsi256(r, g, b));
64
-
65
- const closeCode = 39;
66
- const bgCloseCode = 49;
67
- const bgOffset = 10;
68
- const supportedColor = isStdoutColorSupported();
69
- const mono = { close: "", open: "" };
70
- const esc = supportedColor > 0 ? (open, close) => {
71
- return { close: `\x1B[${close}m`, open: `\x1B[${open}m` };
72
- } : () => mono;
73
- const createRgbFunction = (function_) => (r, g, b) => function_(rgbToAnsi256(Number(r), Number(g), Number(b)));
74
- const createHexFunction = (function_) => (hex) => {
75
- const [r, g, b] = convertHexToRgb(hex);
76
- return function_(r, g, b);
77
- };
78
- let createAnsi256 = (code) => esc(`38;5;${code}`, closeCode);
79
- let createBgAnsi256 = (code) => esc(`48;5;${code}`, bgCloseCode);
80
- let createRgb = (r, g, b) => esc(`38;2;${r};${g};${b}`, closeCode);
81
- let createBgRgb = (r, g, b) => esc(`48;2;${r};${g};${b}`, bgCloseCode);
82
- if (supportedColor === 1) {
83
- createAnsi256 = (code) => esc(ansi256To16(Number(code)), closeCode);
84
- createBgAnsi256 = (code) => esc(ansi256To16(Number(code)) + bgOffset, bgCloseCode);
85
- createRgb = (r, g, b) => esc(rgbToAnsi16(Number(r), Number(g), Number(b)), closeCode);
86
- createBgRgb = (r, g, b) => esc(rgbToAnsi16(Number(r), Number(g), Number(b)) + bgOffset, bgCloseCode);
87
- } else if (supportedColor === 2) {
88
- createRgb = createRgbFunction(createAnsi256);
89
- createBgRgb = createRgbFunction(createBgAnsi256);
90
- }
91
- const baseStyles = {
92
- // 21 isn't widely supported and 22 does the same thing
93
- bold: esc(1, 22),
94
- dim: esc(2, 22),
95
- hidden: esc(8, 28),
96
- inverse: esc(7, 27),
97
- italic: esc(3, 23),
98
- overline: esc(53, 55),
99
- reset: esc(0, 0),
100
- strike: esc(9, 29),
101
- // alias for strikethrough
102
- strikethrough: esc(9, 29),
103
- underline: esc(4, 24),
104
- visible: mono
105
- };
106
- const baseColors = {
107
- bgBlack: esc(40, bgCloseCode),
108
- bgBlackBright: esc(100, bgCloseCode),
109
- bgBlue: esc(44, bgCloseCode),
110
- bgBlueBright: esc(104, bgCloseCode),
111
- bgCyan: esc(46, bgCloseCode),
112
- bgCyanBright: esc(106, bgCloseCode),
113
- bgGray: esc(100, bgCloseCode),
114
- // US spelling alias for bgBlackBright
115
- bgGreen: esc(42, bgCloseCode),
116
- bgGreenBright: esc(102, bgCloseCode),
117
- bgGrey: esc(100, bgCloseCode),
118
- // UK spelling alias for bgBlackBright
119
- bgMagenta: esc(45, bgCloseCode),
120
- bgMagentaBright: esc(105, bgCloseCode),
121
- bgRed: esc(41, bgCloseCode),
122
- bgRedBright: esc(101, bgCloseCode),
123
- bgWhite: esc(47, bgCloseCode),
124
- bgWhiteBright: esc(107, bgCloseCode),
125
- bgYellow: esc(43, bgCloseCode),
126
- bgYellowBright: esc(103, bgCloseCode),
127
- black: esc(30, closeCode),
128
- blackBright: esc(90, closeCode),
129
- blue: esc(34, closeCode),
130
- blueBright: esc(94, closeCode),
131
- cyan: esc(36, closeCode),
132
- cyanBright: esc(96, closeCode),
133
- gray: esc(90, closeCode),
134
- // US spelling alias for blackBright
135
- green: esc(32, closeCode),
136
- greenBright: esc(92, closeCode),
137
- grey: esc(90, closeCode),
138
- // UK spelling alias for blackBright
139
- magenta: esc(35, closeCode),
140
- magentaBright: esc(95, closeCode),
141
- red: esc(31, closeCode),
142
- redBright: esc(91, closeCode),
143
- white: esc(37, closeCode),
144
- whiteBright: esc(97, closeCode),
145
- yellow: esc(33, closeCode),
146
- yellowBright: esc(93, closeCode)
147
- };
148
- const styleMethods = {
149
- bg: (code) => createBgAnsi256(clamp(code, 0, 255)),
150
- bgHex: createHexFunction(createBgRgb),
151
- bgRgb: (r, g, b) => createBgRgb(clamp(r, 0, 255), clamp(g, 0, 255), clamp(b, 0, 255)),
152
- fg: (code) => createAnsi256(clamp(code, 0, 255)),
153
- hex: createHexFunction(createRgb),
154
- rgb: (r, g, b) => createRgb(clamp(r, 0, 255), clamp(g, 0, 255), clamp(b, 0, 255))
155
- };
156
-
157
- const stringReplaceAll = (string_, searchValue, replaceValue) => {
158
- if (searchValue === "") {
159
- return string_;
160
- }
161
- let pos = string_.indexOf(searchValue);
162
- if (pos < 0) {
163
- return string_;
164
- }
165
- const substringLength = searchValue.length;
166
- let lastPos = 0;
167
- let result = "";
168
- while (~pos) {
169
- result += string_.slice(lastPos, pos) + replaceValue;
170
- lastPos = pos + substringLength;
171
- pos = string_.indexOf(searchValue, lastPos);
172
- }
173
- return result + string_.slice(lastPos);
174
- };
175
-
176
- const styles = {};
177
- let stylePrototype = null;
178
- const wrapText = (strings, values, properties) => {
179
- if (!strings) {
180
- return "";
181
- }
182
- let string = strings.raw == void 0 ? `${strings}` : String.raw(strings, ...values);
183
- if (string.includes("\x1B")) {
184
- for (let currentProperties = properties; currentProperties; currentProperties = currentProperties.props) {
185
- string = stringReplaceAll(string, currentProperties.close, currentProperties.open);
186
- }
187
- }
188
- if (string.includes("\n")) {
189
- string = string.replace(/(\r*\n)/g, `${properties.closeStack}$1${properties.openStack}`);
190
- }
191
- return properties.openStack + string + properties.closeStack;
192
- };
193
- const createStyle = ({ props }, { close, open }) => {
194
- const openStack = (props?.openStack ?? "") + open;
195
- const closeStack = close + (props?.closeStack ?? "");
196
- const style = (strings, ...values) => wrapText(strings, values, style.props);
197
- Object.setPrototypeOf(style, stylePrototype);
198
- style.props = { close, closeStack, open, openStack, props };
199
- style.open = openStack;
200
- style.close = closeStack;
201
- return style;
202
- };
203
- const Colorize = function() {
204
- const self = (string_) => `${string_}`;
205
- self.strip = (value) => value.replaceAll(ansiRegex(), "");
206
- for (const name in baseColors) {
207
- styles[name] = {
208
- get() {
209
- const style = createStyle(this, baseColors[name]);
210
- Object.defineProperty(this, name, { value: style });
211
- return style;
212
- }
213
- };
214
- }
215
- for (const name in baseStyles) {
216
- styles[name] = {
217
- get() {
218
- const style = createStyle(this, baseStyles[name]);
219
- Object.defineProperty(this, name, { value: style });
220
- return style;
221
- }
222
- };
223
- }
224
- stylePrototype = Object.defineProperties({}, styles);
225
- Object.setPrototypeOf(self, stylePrototype);
226
- return self;
227
- };
228
- for (const name in styleMethods) {
229
- styles[name] = {
230
- get() {
231
- return (...arguments_) => (
232
- // @ts-expect-error: TODO: fix typing of `arguments_`
233
- createStyle(this, styleMethods[name](...arguments_))
234
- );
235
- }
236
- };
237
- }
238
- styles.ansi256 = styles.fg;
239
- styles.bgAnsi256 = styles.bg;
240
-
241
- export { Colorize as default };