@visulima/colorize 1.3.2 → 1.4.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/CHANGELOG.md +15 -0
- package/README.md +93 -42
- package/dist/gradient.cjs +6 -6
- package/dist/gradient.cjs.map +1 -1
- package/dist/gradient.js +4 -4
- package/dist/gradient.js.map +1 -1
- package/dist/index.server.cjs +4 -4
- package/dist/index.server.cjs.map +1 -1
- package/dist/index.server.js +3 -3
- package/dist/index.server.js.map +1 -1
- package/dist/template.cjs +6 -6
- package/dist/template.cjs.map +1 -1
- package/dist/template.js +4 -4
- package/dist/template.js.map +1 -1
- package/dist/utils.cjs +10 -0
- package/dist/utils.cjs.map +1 -0
- package/dist/utils.d.cts +9 -0
- package/dist/utils.d.ts +9 -0
- package/dist/utils.js +5 -0
- package/dist/utils.js.map +1 -0
- package/package.json +20 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/util/convert-hex-to-rgb.ts","../src/util/convert-rgb-to-ansi.ts"],"names":["convertHexToRgb","hex","color","length_","number_","rgbToAnsi256","r","g","b","ansi256To16","code","remainder","value","code16","rgbToAnsi16"],"mappings":"AAyBO,IAAMA,EAAmBC,GAA0D,CACtF,GAAI,CAAC,CAAEC,CAAK,EAAI,kBAAkB,KAAKD,CAAG,GAAK,CAAC,EAG1CE,EAAUD,EAAQA,EAAM,OAAS,EAEvC,GAAIC,IAAY,EACZD,EACMA,EAAiB,CAAC,EAClBA,EAAiB,CAAC,EAClBA,EAAiB,CAAC,EAClBA,EAAiB,CAAC,EAClBA,EAAiB,CAAC,EAClBA,EAAiB,CAAC,UACjBC,IAAY,EACnB,MAAO,CAAC,EAAG,EAAG,CAAC,EAInB,IAAMC,EAAU,OAAO,SAASF,EAAiB,EAAE,EAGnD,MAAO,CAAEE,GAAW,GAAM,IAAMA,GAAW,EAAK,IAAKA,EAAU,GAAG,CACtE,ECnCO,IAAMC,EAAe,CAACC,EAAWC,EAAWC,IAE3CF,IAAMC,GAAKA,IAAMC,EACbF,EAAI,EACG,GAGPA,EAAI,IACG,IAGJ,KAAK,OAAQA,EAAI,GAAK,IAAO,EAAE,EAAI,IAI1C,GAEA,GAAK,KAAK,MAAMA,EAAI,EAAE,EACtB,EAAI,KAAK,MAAMC,EAAI,EAAE,EACrB,KAAK,MAAMC,EAAI,EAAE,EAOZC,EAAeC,GAAyB,CACjD,IAAI,EAAOH,EAAOC,EAElB,GAAIE,EAAO,EACP,MAAO,IAAKA,EAGhB,GAAIA,EAAO,GACP,MAAO,KAAMA,EAAO,GAGxB,GAAIA,GAAQ,IAGR,EAAIH,EAAIC,IAAME,EAAO,KAAO,GAAK,GAAK,QACnC,CAEHA,GAAQ,GAER,IAAMC,EAAYD,EAAO,GAEzB,EAAI,KAAK,MAAMA,EAAO,EAAE,EAAI,EAC5BH,EAAI,KAAK,MAAMI,EAAY,CAAC,EAAI,EAChCH,EAAKG,EAAY,EAAK,CAC1B,CAEA,IAAMC,EAAQ,KAAK,IAAI,EAAGL,EAAGC,CAAC,EAAI,EAElC,GAAII,IAAU,EACV,MAAO,IAIX,IAAMC,EAAS,IAAO,KAAK,MAAML,CAAC,GAAK,EAAM,KAAK,MAAMD,CAAC,GAAK,EAAK,KAAK,MAAM,CAAC,GAE/E,OAAOK,IAAU,EAAIC,EAAS,GAAKA,CACvC,EAEaC,EAAc,CAACR,EAAWC,EAAWC,IAAsBC,EAAYJ,EAAaC,EAAGC,EAAGC,CAAC,CAAC","sourcesContent":["/**\n * Modified copy of https://github.com/webdiscus/ansis/blob/master/src/utils.js\n *\n * ISC License\n *\n * Copyright (c) 2023, webdiscus\n */\n\nimport type { ColorValueHex } from \"../types\";\n\n/**\n * Convert hex color string to RGB values.\n *\n * A hexadecimal color code can be 3 or 6 digits with an optional \"#\" prefix.\n *\n * The 3 digits specifies an RGB doublet data as a fully opaque color.\n * For example, \"#123\" specifies the color that is represented by \"#112233\".\n *\n * The 6 digits specifies a fully opaque color.\n * For example, \"#112233\".\n *\n * @param {string} hex A string that contains the hexadecimal RGB color representation.\n * @return {[number, number, number]} The red, green, blue values in range [0, 255] .\n */\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nexport const convertHexToRgb = (hex: ColorValueHex | string): [number, number, number] => {\n let [, color] = /([a-f\\d]{3,6})/i.exec(hex) ?? [];\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const length_ = color ? color.length : 0;\n\n if (length_ === 3) {\n color =\n ((color as string)[0] as string) +\n ((color as string)[0] as string) +\n ((color as string)[1] as string) +\n ((color as string)[1] as string) +\n ((color as string)[2] as string) +\n ((color as string)[2] as string);\n } else if (length_ !== 6) {\n return [0, 0, 0];\n }\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const number_ = Number.parseInt(color as string, 16);\n\n // eslint-disable-next-line no-bitwise\n return [(number_ >> 16) & 255, (number_ >> 8) & 255, number_ & 255];\n};\n","/**\n * Copy of https://github.com/Qix-/color-convert/blob/master/conversions.js#L551\n *\n * MIT License\n *\n * Copyright (c) 2011-2016 Heather Arthur <fayearthur@gmail.com>.\n * Copyright (c) 2016-2021 Josh Junon <josh@junon.me>.\n */\n\n/**\n * Convert RGB values to approximate code of ANSI 256 colors.\n *\n */\nexport const rgbToAnsi256 = (r: number, g: number, b: number): number => {\n // greyscale\n if (r === g && g === b) {\n if (r < 8) {\n return 16;\n }\n\n if (r > 248) {\n return 231;\n }\n\n return Math.round(((r - 8) / 247) * 24) + 232;\n }\n\n return (\n 16 +\n // r / 255 * 5 => r / 51\n 36 * Math.round(r / 51) +\n 6 * Math.round(g / 51) +\n Math.round(b / 51)\n );\n};\n\n/**\n * Convert ANSI 256 color code to approximate code of ANSI 16 colors.\n */\nexport const ansi256To16 = (code: number): number => {\n let r; let g; let b;\n\n if (code < 8) {\n return 30 + code;\n }\n\n if (code < 16) {\n return 90 + (code - 8);\n }\n\n if (code >= 232) {\n // greyscale\n // eslint-disable-next-line no-multi-assign\n r = g = b = ((code - 232) * 10 + 8) / 255;\n } else {\n // eslint-disable-next-line no-param-reassign\n code -= 16;\n\n const remainder = code % 36;\n\n r = Math.floor(code / 36) / 5;\n g = Math.floor(remainder / 6) / 5;\n b = (remainder % 6) / 5;\n }\n\n const value = Math.max(r, g, b) * 2;\n\n if (value === 0) {\n return 30;\n }\n\n // eslint-disable-next-line no-bitwise\n const code16 = 30 + ((Math.round(b) << 2) | (Math.round(g) << 1) | Math.round(r));\n\n return value === 2 ? code16 + 60 : code16;\n};\n\nexport const rgbToAnsi16 = (r: number, g: number, b: number): number => ansi256To16(rgbToAnsi256(r, g, b));\n"]}
|
package/dist/utils.d.cts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
type ColorValueHex = `#${string}`;
|
|
2
|
+
|
|
3
|
+
declare const convertHexToRgb: (hex: ColorValueHex | string) => [number, number, number];
|
|
4
|
+
|
|
5
|
+
declare const rgbToAnsi256: (r: number, g: number, b: number) => number;
|
|
6
|
+
declare const ansi256To16: (code: number) => number;
|
|
7
|
+
declare const rgbToAnsi16: (r: number, g: number, b: number) => number;
|
|
8
|
+
|
|
9
|
+
export { ansi256To16, convertHexToRgb, rgbToAnsi16, rgbToAnsi256 };
|
package/dist/utils.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
type ColorValueHex = `#${string}`;
|
|
2
|
+
|
|
3
|
+
declare const convertHexToRgb: (hex: ColorValueHex | string) => [number, number, number];
|
|
4
|
+
|
|
5
|
+
declare const rgbToAnsi256: (r: number, g: number, b: number) => number;
|
|
6
|
+
declare const ansi256To16: (code: number) => number;
|
|
7
|
+
declare const rgbToAnsi16: (r: number, g: number, b: number) => number;
|
|
8
|
+
|
|
9
|
+
export { ansi256To16, convertHexToRgb, rgbToAnsi16, rgbToAnsi256 };
|
package/dist/utils.js
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
var b=n=>{let[,r]=/([a-f\d]{3,6})/i.exec(n)??[],t=r?r.length:0;if(t===3)r=r[0]+r[0]+r[1]+r[1]+r[2]+r[2];else if(t!==6)return [0,0,0];let e=Number.parseInt(r,16);return [e>>16&255,e>>8&255,e&255]};var a=(n,r,t)=>n===r&&r===t?n<8?16:n>248?231:Math.round((n-8)/247*24)+232:16+36*Math.round(n/51)+6*Math.round(r/51)+Math.round(t/51),i=n=>{let r,t,e;if(n<8)return 30+n;if(n<16)return 90+(n-8);if(n>=232)r=t=e=((n-232)*10+8)/255;else {n-=16;let u=n%36;r=Math.floor(n/36)/5,t=Math.floor(u/6)/5,e=u%6/5;}let s=Math.max(r,t,e)*2;if(s===0)return 30;let o=30+(Math.round(e)<<2|Math.round(t)<<1|Math.round(r));return s===2?o+60:o},g=(n,r,t)=>i(a(n,r,t));
|
|
2
|
+
|
|
3
|
+
export { i as ansi256To16, b as convertHexToRgb, g as rgbToAnsi16, a as rgbToAnsi256 };
|
|
4
|
+
//# sourceMappingURL=out.js.map
|
|
5
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/util/convert-hex-to-rgb.ts","../src/util/convert-rgb-to-ansi.ts"],"names":["convertHexToRgb","hex","color","length_","number_","rgbToAnsi256","r","g","b","ansi256To16","code","remainder","value","code16","rgbToAnsi16"],"mappings":"AAyBO,IAAMA,EAAmBC,GAA0D,CACtF,GAAI,CAAC,CAAEC,CAAK,EAAI,kBAAkB,KAAKD,CAAG,GAAK,CAAC,EAG1CE,EAAUD,EAAQA,EAAM,OAAS,EAEvC,GAAIC,IAAY,EACZD,EACMA,EAAiB,CAAC,EAClBA,EAAiB,CAAC,EAClBA,EAAiB,CAAC,EAClBA,EAAiB,CAAC,EAClBA,EAAiB,CAAC,EAClBA,EAAiB,CAAC,UACjBC,IAAY,EACnB,MAAO,CAAC,EAAG,EAAG,CAAC,EAInB,IAAMC,EAAU,OAAO,SAASF,EAAiB,EAAE,EAGnD,MAAO,CAAEE,GAAW,GAAM,IAAMA,GAAW,EAAK,IAAKA,EAAU,GAAG,CACtE,ECnCO,IAAMC,EAAe,CAACC,EAAWC,EAAWC,IAE3CF,IAAMC,GAAKA,IAAMC,EACbF,EAAI,EACG,GAGPA,EAAI,IACG,IAGJ,KAAK,OAAQA,EAAI,GAAK,IAAO,EAAE,EAAI,IAI1C,GAEA,GAAK,KAAK,MAAMA,EAAI,EAAE,EACtB,EAAI,KAAK,MAAMC,EAAI,EAAE,EACrB,KAAK,MAAMC,EAAI,EAAE,EAOZC,EAAeC,GAAyB,CACjD,IAAI,EAAOH,EAAOC,EAElB,GAAIE,EAAO,EACP,MAAO,IAAKA,EAGhB,GAAIA,EAAO,GACP,MAAO,KAAMA,EAAO,GAGxB,GAAIA,GAAQ,IAGR,EAAIH,EAAIC,IAAME,EAAO,KAAO,GAAK,GAAK,QACnC,CAEHA,GAAQ,GAER,IAAMC,EAAYD,EAAO,GAEzB,EAAI,KAAK,MAAMA,EAAO,EAAE,EAAI,EAC5BH,EAAI,KAAK,MAAMI,EAAY,CAAC,EAAI,EAChCH,EAAKG,EAAY,EAAK,CAC1B,CAEA,IAAMC,EAAQ,KAAK,IAAI,EAAGL,EAAGC,CAAC,EAAI,EAElC,GAAII,IAAU,EACV,MAAO,IAIX,IAAMC,EAAS,IAAO,KAAK,MAAML,CAAC,GAAK,EAAM,KAAK,MAAMD,CAAC,GAAK,EAAK,KAAK,MAAM,CAAC,GAE/E,OAAOK,IAAU,EAAIC,EAAS,GAAKA,CACvC,EAEaC,EAAc,CAACR,EAAWC,EAAWC,IAAsBC,EAAYJ,EAAaC,EAAGC,EAAGC,CAAC,CAAC","sourcesContent":["/**\n * Modified copy of https://github.com/webdiscus/ansis/blob/master/src/utils.js\n *\n * ISC License\n *\n * Copyright (c) 2023, webdiscus\n */\n\nimport type { ColorValueHex } from \"../types\";\n\n/**\n * Convert hex color string to RGB values.\n *\n * A hexadecimal color code can be 3 or 6 digits with an optional \"#\" prefix.\n *\n * The 3 digits specifies an RGB doublet data as a fully opaque color.\n * For example, \"#123\" specifies the color that is represented by \"#112233\".\n *\n * The 6 digits specifies a fully opaque color.\n * For example, \"#112233\".\n *\n * @param {string} hex A string that contains the hexadecimal RGB color representation.\n * @return {[number, number, number]} The red, green, blue values in range [0, 255] .\n */\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nexport const convertHexToRgb = (hex: ColorValueHex | string): [number, number, number] => {\n let [, color] = /([a-f\\d]{3,6})/i.exec(hex) ?? [];\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const length_ = color ? color.length : 0;\n\n if (length_ === 3) {\n color =\n ((color as string)[0] as string) +\n ((color as string)[0] as string) +\n ((color as string)[1] as string) +\n ((color as string)[1] as string) +\n ((color as string)[2] as string) +\n ((color as string)[2] as string);\n } else if (length_ !== 6) {\n return [0, 0, 0];\n }\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const number_ = Number.parseInt(color as string, 16);\n\n // eslint-disable-next-line no-bitwise\n return [(number_ >> 16) & 255, (number_ >> 8) & 255, number_ & 255];\n};\n","/**\n * Copy of https://github.com/Qix-/color-convert/blob/master/conversions.js#L551\n *\n * MIT License\n *\n * Copyright (c) 2011-2016 Heather Arthur <fayearthur@gmail.com>.\n * Copyright (c) 2016-2021 Josh Junon <josh@junon.me>.\n */\n\n/**\n * Convert RGB values to approximate code of ANSI 256 colors.\n *\n */\nexport const rgbToAnsi256 = (r: number, g: number, b: number): number => {\n // greyscale\n if (r === g && g === b) {\n if (r < 8) {\n return 16;\n }\n\n if (r > 248) {\n return 231;\n }\n\n return Math.round(((r - 8) / 247) * 24) + 232;\n }\n\n return (\n 16 +\n // r / 255 * 5 => r / 51\n 36 * Math.round(r / 51) +\n 6 * Math.round(g / 51) +\n Math.round(b / 51)\n );\n};\n\n/**\n * Convert ANSI 256 color code to approximate code of ANSI 16 colors.\n */\nexport const ansi256To16 = (code: number): number => {\n let r; let g; let b;\n\n if (code < 8) {\n return 30 + code;\n }\n\n if (code < 16) {\n return 90 + (code - 8);\n }\n\n if (code >= 232) {\n // greyscale\n // eslint-disable-next-line no-multi-assign\n r = g = b = ((code - 232) * 10 + 8) / 255;\n } else {\n // eslint-disable-next-line no-param-reassign\n code -= 16;\n\n const remainder = code % 36;\n\n r = Math.floor(code / 36) / 5;\n g = Math.floor(remainder / 6) / 5;\n b = (remainder % 6) / 5;\n }\n\n const value = Math.max(r, g, b) * 2;\n\n if (value === 0) {\n return 30;\n }\n\n // eslint-disable-next-line no-bitwise\n const code16 = 30 + ((Math.round(b) << 2) | (Math.round(g) << 1) | Math.round(r));\n\n return value === 2 ? code16 + 60 : code16;\n};\n\nexport const rgbToAnsi16 = (r: number, g: number, b: number): number => ansi256To16(rgbToAnsi256(r, g, b));\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@visulima/colorize",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"description": "Terminal and Console string styling done right.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"256",
|
|
@@ -116,6 +116,16 @@
|
|
|
116
116
|
"default": "./dist/gradient.js"
|
|
117
117
|
}
|
|
118
118
|
},
|
|
119
|
+
"./utils": {
|
|
120
|
+
"require": {
|
|
121
|
+
"types": "./dist/utils.d.cts",
|
|
122
|
+
"default": "./dist/utils.cjs"
|
|
123
|
+
},
|
|
124
|
+
"import": {
|
|
125
|
+
"types": "./dist/utils.d.ts",
|
|
126
|
+
"default": "./dist/utils.js"
|
|
127
|
+
}
|
|
128
|
+
},
|
|
119
129
|
"./package.json": "./package.json"
|
|
120
130
|
},
|
|
121
131
|
"main": "dist/index.server.cjs",
|
|
@@ -144,7 +154,7 @@
|
|
|
144
154
|
"test:watch": "vitest"
|
|
145
155
|
},
|
|
146
156
|
"dependencies": {
|
|
147
|
-
"@visulima/is-ansi-color-supported": "2.
|
|
157
|
+
"@visulima/is-ansi-color-supported": "2.2.0"
|
|
148
158
|
},
|
|
149
159
|
"devDependencies": {
|
|
150
160
|
"@anolilab/eslint-config": "^15.0.3",
|
|
@@ -229,6 +239,14 @@
|
|
|
229
239
|
{
|
|
230
240
|
"source": "src/gradient.ts",
|
|
231
241
|
"format": "cjs"
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
"source": "src/utils.ts",
|
|
245
|
+
"format": "esm"
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
"source": "src/utils.ts",
|
|
249
|
+
"format": "cjs"
|
|
232
250
|
}
|
|
233
251
|
]
|
|
234
252
|
}
|