@visulima/colorize 1.4.0 → 1.4.2
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 +53 -0
- package/README.md +1 -0
- package/dist/gradient.cjs.map +1 -1
- package/dist/gradient.js.map +1 -1
- package/dist/index.server.cjs.map +1 -1
- package/dist/index.server.js.map +1 -1
- package/dist/template.cjs.map +1 -1
- package/dist/template.js.map +1 -1
- package/dist/utils.cjs.map +1 -1
- package/dist/utils.js.map +1 -1
- package/package.json +242 -242
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,56 @@
|
|
|
1
|
+
## @visulima/colorize [1.4.2](https://github.com/visulima/visulima/compare/@visulima/colorize@1.4.1...@visulima/colorize@1.4.2) (2024-06-06)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* allow node v22 ([890d457](https://github.com/visulima/visulima/commit/890d4570f18428e2463944813c0c638b3f142803))
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Miscellaneous Chores
|
|
10
|
+
|
|
11
|
+
* updated dev dependencies ([a2e0504](https://github.com/visulima/visulima/commit/a2e0504dc239049434c2482756ff15bdbaac9b54))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### Dependencies
|
|
16
|
+
|
|
17
|
+
* **@visulima/is-ansi-color-supported:** upgraded to 2.2.1
|
|
18
|
+
* **@visulima/path:** upgraded to 1.0.2
|
|
19
|
+
|
|
20
|
+
## @visulima/colorize [1.4.1](https://github.com/visulima/visulima/compare/@visulima/colorize@1.4.0...@visulima/colorize@1.4.1) (2024-05-24)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
### Bug Fixes
|
|
24
|
+
|
|
25
|
+
* changed pathe to @visulima/path ([#410](https://github.com/visulima/visulima/issues/410)) ([bfe1287](https://github.com/visulima/visulima/commit/bfe1287aff6d28d5dca302fd4d58c1f6234ce0bb))
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
### Styles
|
|
29
|
+
|
|
30
|
+
* cs fixes ([7bf5b91](https://github.com/visulima/visulima/commit/7bf5b91383b612598d955fe23505c94f22a8d277))
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
### Miscellaneous Chores
|
|
34
|
+
|
|
35
|
+
* changed semantic-release-npm to pnpm ([b6d100a](https://github.com/visulima/visulima/commit/b6d100a2bf3fd026577be48726a37754947f0973))
|
|
36
|
+
* **deps:** updated dev deps ([d91ac38](https://github.com/visulima/visulima/commit/d91ac389cea85a6c6bdc8de97905252a6c467abc))
|
|
37
|
+
* fixed wrong named folders to integration, added TEST_PROD_BUILD ([1b826f5](https://github.com/visulima/visulima/commit/1b826f5baf8285847199de9ede8fbdbadf201ad6))
|
|
38
|
+
* update bench dependencies ([d03bf14](https://github.com/visulima/visulima/commit/d03bf14a137074d980e3e56c72d12662751a4ec6))
|
|
39
|
+
* update dev dependencies ([068bdbf](https://github.com/visulima/visulima/commit/068bdbfe0b371b5cc7e5ac071dc3310a3b8cea98))
|
|
40
|
+
* update dev dependencies ([09c4854](https://github.com/visulima/visulima/commit/09c4854e221fa8b808dfe66d7196d8db2a39b366))
|
|
41
|
+
* updated dev dependencies ([2e08f23](https://github.com/visulima/visulima/commit/2e08f23ba4f23ff4c64a36807b53242e9497c073))
|
|
42
|
+
* updated dev dependencies ([abd319c](https://github.com/visulima/visulima/commit/abd319c23576aa1dc751ac874e806bddbc977d51))
|
|
43
|
+
* updated dev dependencies ([0767afe](https://github.com/visulima/visulima/commit/0767afe9be83da6698c1343724400171f952599e))
|
|
44
|
+
* updated dev dependencies ([d7791e3](https://github.com/visulima/visulima/commit/d7791e327917e438757636573b1e5549a97bba7b))
|
|
45
|
+
* updated dev dependencies ([6005345](https://github.com/visulima/visulima/commit/60053456717a3889fc77b4fb5b05d50a662475b2))
|
|
46
|
+
* updated devDependencies ([e5f936c](https://github.com/visulima/visulima/commit/e5f936c24ce8dd1f04f7ea53736f53165f6bb780))
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
### Dependencies
|
|
51
|
+
|
|
52
|
+
* **@visulima/path:** upgraded to 1.0.1
|
|
53
|
+
|
|
1
54
|
## @visulima/colorize [1.4.0](https://github.com/visulima/visulima/compare/@visulima/colorize@1.3.3...@visulima/colorize@1.4.0) (2024-04-10)
|
|
2
55
|
|
|
3
56
|
|
package/README.md
CHANGED
package/dist/gradient.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../node_modules/.pnpm/ansi-regex@6.0.1/node_modules/ansi-regex/index.js","../src/ansi-codes.ts","../src/util/clamp.ts","../src/util/convert-hex-to-rgb.ts","../src/util/convert-rgb-to-ansi.ts","../src/util/string-replace-all.ts","../src/colorize.server.ts","../src/gradient/util/color-names.ts","../src/gradient/util/compute.ts","../src/gradient/util/hsv-to-rgb.ts","../src/gradient/util/rgb-to-hsv.ts","../src/gradient/util/interpolate.ts","../src/gradient/gradient-builder.ts","../src/gradient.ts"],"names":["ansiRegex","onlyFirst","pattern","isStdoutColorSupported","clamp","number_","min","max","convertHexToRgb","hex","color","length_","rgbToAnsi256","g","b","ansi256To16","code","r","remainder","value","code16","rgbToAnsi16","closeCode","bgCloseCode","supportedColor","mono","esc","open","close","createRgbFunction","function_","createHexFunction","createAnsi256","createBgAnsi256","createRgb","createBgRgb","baseStyles","baseColors","styleMethods","stringReplaceAll","string_","searchValue","replaceValue","pos","substringLength","lastPos","result","styles","stylePrototype","wrapText","strings","values","properties","string","currentProperties","createStyle","props","openStack","closeStack","style","Colorize","self","name","arguments_","colorize_server_default","colorNames","computeSubSteps","stops","steps","l","substeps","index","step","totalSubsteps","n","hsvToRgb","h","s","v","f","p","q","t","rgbToHsv","rdif","gdif","bdif","diff","diffc","c","RGBA_MAX","HSV_MAX","calculateStepSize","start","end","k","interpolate","interpolateRgb","stop1","stop2","gradient","interpolateHsv","mode","trigonometric","trigShortest","GradientBuilder","_GradientBuilder","#colorize","colorize","havingPositions","lastColorLess","stop_","stop","hasPosition","stopInput","hasColor","stops1","stops2","subSteps","rgbs","rgb","forbiddenChars","options","hsvSpin","interpolation","builder","colorsCount","colors","multilineGradient","lines","results","line","lineColors","lineResult"],"mappings":"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","sourcesContent":["export default function ansiRegex({onlyFirst = false} = {}) {\n\tconst pattern = [\n\t '[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)',\n\t\t'(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-ntqry=><~]))'\n\t].join('|');\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n}\n","/**\n * Modified copy of https://github.com/webdiscus/ansis/blob/master/src/ansi-codes.js\n *\n * ISC License\n *\n * Copyright (c) 2023, webdiscus\n */\n\nimport type { ColorSupportLevel } from \"@visulima/is-ansi-color-supported\";\nimport { isStdoutColorSupported } from \"@visulima/is-ansi-color-supported\";\n\nimport type { AnsiColors, AnsiStyles, ColorData, ColorValueHex } from \"./types\";\nimport { clamp } from \"./util/clamp\";\nimport { convertHexToRgb } from \"./util/convert-hex-to-rgb\";\nimport { ansi256To16, rgbToAnsi16, rgbToAnsi256 } from \"./util/convert-rgb-to-ansi\";\n\nconst closeCode = 39;\nconst bgCloseCode = 49;\n\nconst supportedColor: ColorSupportLevel = isStdoutColorSupported();\n\nconst mono = { close: \"\", open: \"\" };\n\nconst esc: (open: number | string, close: number | string) => ColorData =\n supportedColor > 0\n ? (open: number | string, close: number | string): ColorData => {\n return { close: \"\\u001B[\" + close + \"m\", open: \"\\u001B[\" + open + \"m\" };\n }\n : (): ColorData => mono;\n\nconst createRgbFunction = (function_: (code: number | string) => ColorData) => (r: number | string, g: number | string, b: number | string) =>\n function_(rgbToAnsi256(Number(r), Number(g), Number(b)));\n\nconst createHexFunction = (function_: (r: number | string, g: number | string, b: number | string) => ColorData) => (hex: ColorValueHex) => {\n const [r, g, b] = convertHexToRgb(hex);\n\n return function_(r, g, b);\n};\n\nlet createAnsi256 = (code: number | string): ColorData => esc(\"38;5;\" + code, closeCode);\n\nlet createBgAnsi256 = (code: number | string): ColorData => esc(\"48;5;\" + code, bgCloseCode);\n\nlet createRgb = (r: number | string, g: number | string, b: number | string): ColorData => esc(\"38;2;\" + r + \";\" + g + \";\" + b, closeCode);\n\nlet createBgRgb = (r: number | string, g: number | string, b: number | string): ColorData => esc(\"48;2;\" + r + \";\" + g + \";\" + b, bgCloseCode);\n\nif (supportedColor === 1) {\n // ANSI 16 colors\n createAnsi256 = (code: number | string) => esc(ansi256To16(Number(code)), closeCode);\n createBgAnsi256 = (code: number | string) => esc(ansi256To16(Number(code)) + 10, bgCloseCode);\n createRgb = (r: number | string, g: number | string, b: number | string) => esc(rgbToAnsi16(Number(r), Number(g), Number(b)), closeCode);\n createBgRgb = (r: number | string, g: number | string, b: number | string) => esc(rgbToAnsi16(Number(r), Number(g), Number(b)) + 10, bgCloseCode);\n} else if (supportedColor === 2) {\n // ANSI 256 colors\n createRgb = createRgbFunction(createAnsi256);\n createBgRgb = createRgbFunction(createBgAnsi256);\n}\n\nexport const baseStyles: Required<Record<AnsiStyles, ColorData>> = {\n // 21 isn't widely supported and 22 does the same thing\n bold: esc(1, 22),\n dim: esc(2, 22),\n hidden: esc(8, 28),\n inverse: esc(7, 27),\n italic: esc(3, 23),\n overline: esc(53, 55),\n reset: esc(0, 0),\n strike: esc(9, 29), // alias for strikethrough\n strikethrough: esc(9, 29),\n underline: esc(4, 24),\n visible: mono,\n};\n\nexport const baseColors: Required<Record<AnsiColors, ColorData>> = {\n bgBlack: esc(40, bgCloseCode),\n bgBlackBright: esc(100, bgCloseCode),\n bgBlue: esc(44, bgCloseCode),\n bgBlueBright: esc(104, bgCloseCode),\n bgCyan: esc(46, bgCloseCode),\n bgCyanBright: esc(106, bgCloseCode),\n bgGray: esc(100, bgCloseCode), // US spelling alias for bgBlackBright\n bgGreen: esc(42, bgCloseCode),\n bgGreenBright: esc(102, bgCloseCode),\n bgGrey: esc(100, bgCloseCode), // UK spelling alias for bgBlackBright\n bgMagenta: esc(45, bgCloseCode),\n bgMagentaBright: esc(105, bgCloseCode),\n bgRed: esc(41, bgCloseCode),\n bgRedBright: esc(101, bgCloseCode),\n bgWhite: esc(47, bgCloseCode),\n bgWhiteBright: esc(107, bgCloseCode),\n bgYellow: esc(43, bgCloseCode),\n bgYellowBright: esc(103, bgCloseCode),\n black: esc(30, closeCode),\n blackBright: esc(90, closeCode),\n blue: esc(34, closeCode),\n blueBright: esc(94, closeCode),\n cyan: esc(36, closeCode),\n cyanBright: esc(96, closeCode),\n gray: esc(90, closeCode), // US spelling alias for blackBright\n green: esc(32, closeCode),\n greenBright: esc(92, closeCode),\n grey: esc(90, closeCode), // UK spelling alias for blackBright\n magenta: esc(35, closeCode),\n magentaBright: esc(95, closeCode),\n red: esc(31, closeCode),\n redBright: esc(91, closeCode),\n white: esc(37, closeCode),\n whiteBright: esc(97, closeCode),\n yellow: esc(33, closeCode),\n yellowBright: esc(93, closeCode),\n};\n\nexport const styleMethods: {\n bg: (code: number) => ColorData;\n bgHex: (hex: ColorValueHex) => ColorData;\n bgRgb: (r: number, g: number, b: number) => ColorData;\n fg: (code: number) => ColorData;\n hex: (hex: ColorValueHex) => ColorData;\n rgb: (r: number, g: number, b: number) => ColorData;\n} = {\n bg: (code) => createBgAnsi256(clamp(code, 0, 255)),\n\n bgHex: createHexFunction(createBgRgb),\n\n bgRgb: (r, g, b) => createBgRgb(clamp(r, 0, 255), clamp(g, 0, 255), clamp(b, 0, 255)),\n\n fg: (code) => createAnsi256(clamp(code, 0, 255)),\n\n hex: createHexFunction(createRgb),\n\n rgb: (r, g, b) => createRgb(clamp(r, 0, 255), clamp(g, 0, 255), clamp(b, 0, 255)),\n};\n","/**\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\n/**\n * Clamp a number within the inclusive range specified by min and max.\n * @note: The ternary operator is a tick quicker than Math.min(Math.max(num, min), max).\n */\n\nexport const clamp = (number_: number, min: number, max: number): number => (min > number_ ? min : number_ > max ? max : number_);\n","/**\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","/**\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\n/**\n * Replace all matched strings.\n * Note: this implementation is over 30% faster than String.replaceAll().\n */\nexport const stringReplaceAll = (string_: string, searchValue: string, replaceValue: string): string => {\n // visible style has empty open/close props\n if (searchValue === \"\") {\n return string_;\n }\n\n let pos = string_.indexOf(searchValue);\n if (pos < 0) {\n return string_;\n }\n\n const substringLength = searchValue.length;\n let lastPos = 0;\n let result = \"\";\n\n // eslint-disable-next-line no-loops/no-loops,no-bitwise\n while (~pos) {\n result += string_.slice(lastPos, pos) + replaceValue;\n lastPos = pos + substringLength;\n pos = string_.indexOf(searchValue, lastPos);\n }\n\n return result + string_.slice(lastPos);\n};\n","/**\n * Modified copy of https://github.com/webdiscus/ansis/blob/master/src/index.js\n *\n * ISC License\n *\n * Copyright (c) 2023, webdiscus\n */\n\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport ansiRegex from \"ansi-regex\";\n\nimport { baseColors, baseStyles, styleMethods } from \"./ansi-codes\";\nimport type { ColorData, ColorizeType } from \"./types\";\nimport { stringReplaceAll } from \"./util/string-replace-all\";\n\nconst styles: Record<string, object> = {};\n\nlet stylePrototype: object | null = null;\n\nconst wrapText = (\n strings: ArrayLike<string> | ReadonlyArray<string> | number | string | { raw: ArrayLike<string> | ReadonlyArray<string> },\n values: string[],\n properties: ColorizeProperties,\n) => {\n if (!strings) {\n return \"\";\n }\n\n let string =\n (strings as { raw?: ArrayLike<string> | ReadonlyArray<string> | null }).raw == null\n ? (((strings as number | string) + \"\") as string)\n : String.raw(strings as { raw: ArrayLike<string> | ReadonlyArray<string> }, ...values);\n\n if (string.includes(\"\\u001B\")) {\n // eslint-disable-next-line no-loops/no-loops,@typescript-eslint/no-unnecessary-condition\n for (let currentProperties = properties; currentProperties; currentProperties = currentProperties.props) {\n string = stringReplaceAll(string, currentProperties.close, currentProperties.open);\n }\n }\n\n if (string.includes(\"\\n\")) {\n // eslint-disable-next-line unicorn/prefer-string-replace-all\n string = string.replace(/(\\r*\\n)/g, properties.closeStack + \"$1\" + properties.openStack);\n }\n\n return properties.openStack + string + properties.closeStack;\n};\n\ntype ColorizeProperties = { close: string; closeStack: string; open: string; openStack: string; props: ColorizeProperties };\n\nconst createStyle = (\n { props }: { props?: ColorizeProperties },\n { close, open }: ColorData,\n): {\n (strings: ArrayLike<string> | ReadonlyArray<string> | string, ...values: string[]): string;\n close: string;\n open: string;\n props: { close: string; closeStack: string; open: string; openStack: string; props?: ColorizeProperties };\n} => {\n const openStack: string = (props?.openStack ?? \"\") + open;\n const closeStack: string = close + (props?.closeStack ?? \"\");\n\n const style = (strings: ArrayLike<string> | ReadonlyArray<string> | string, ...values: string[]) => wrapText(strings, values, style.props);\n\n Object.setPrototypeOf(style, stylePrototype);\n\n style.props = { close, closeStack, open, openStack, props } as ColorizeProperties;\n style.open = openStack;\n style.close = closeStack;\n\n return style;\n};\n\n// eslint-disable-next-line func-names\nconst Colorize = function () {\n const self = (string_: number | string) => string_ + \"\";\n\n self.strip = (value: string): string => value.replaceAll(ansiRegex(), \"\");\n\n // eslint-disable-next-line guard-for-in,no-loops/no-loops,no-restricted-syntax\n for (const name in baseColors) {\n // eslint-disable-next-line security/detect-object-injection\n styles[name] = {\n get() {\n const style = createStyle(this, baseColors[name as keyof typeof baseColors]);\n\n Object.defineProperty(this, name, { value: style });\n\n return style;\n },\n };\n }\n\n // eslint-disable-next-line guard-for-in,no-loops/no-loops,no-restricted-syntax\n for (const name in baseStyles) {\n // eslint-disable-next-line security/detect-object-injection\n styles[name] = {\n get() {\n const style = createStyle(this, baseStyles[name as keyof typeof baseStyles]);\n\n Object.defineProperty(this, name, { value: style });\n\n return style;\n },\n };\n }\n\n // This needs to be the last thing we do, so that the prototype is fully populated.\n stylePrototype = Object.defineProperties({}, styles);\n\n Object.setPrototypeOf(self, stylePrototype);\n\n return self;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n} as any as new () => ColorizeType;\n\n// eslint-disable-next-line guard-for-in,no-loops/no-loops,no-restricted-syntax\nfor (const name in styleMethods) {\n styles[name as keyof typeof styleMethods] = {\n get() {\n return (...arguments_: (number | string)[]) =>\n // @ts-expect-error: TODO: fix typing of `arguments_`\n createStyle(this, styleMethods[name as keyof typeof styleMethods](...arguments_));\n },\n };\n}\n\nstyles.ansi256 = styles.fg as object;\nstyles.bgAnsi256 = styles.bg as object;\n\n// eslint-disable-next-line import/no-default-export\nexport default Colorize;\n","// A JSON with color names and its values. Based on http://dev.w3.org/csswg/css-color/#named-colors.\nimport type { CssColorCodes } from \"../../types\";\n\nexport const colorNames: CssColorCodes = {\n aliceblue: [240, 248, 255],\n antiquewhite: [250, 235, 215],\n aqua: [0, 255, 255],\n aquamarine: [127, 255, 212],\n azure: [240, 255, 255],\n beige: [245, 245, 220],\n bisque: [255, 228, 196],\n black: [0, 0, 0],\n blanchedalmond: [255, 235, 205],\n blue: [0, 0, 255],\n blueviolet: [138, 43, 226],\n brown: [165, 42, 42],\n burlywood: [222, 184, 135],\n cadetblue: [95, 158, 160],\n chartreuse: [127, 255, 0],\n chocolate: [210, 105, 30],\n coral: [255, 127, 80],\n cornflowerblue: [100, 149, 237],\n cornsilk: [255, 248, 220],\n crimson: [220, 20, 60],\n cyan: [0, 255, 255],\n darkblue: [0, 0, 139],\n darkcyan: [0, 139, 139],\n darkgoldenrod: [184, 134, 11],\n darkgray: [169, 169, 169],\n darkgreen: [0, 100, 0],\n darkgrey: [169, 169, 169],\n darkkhaki: [189, 183, 107],\n darkmagenta: [139, 0, 139],\n darkolivegreen: [85, 107, 47],\n darkorange: [255, 140, 0],\n darkorchid: [153, 50, 204],\n darkred: [139, 0, 0],\n darksalmon: [233, 150, 122],\n darkseagreen: [143, 188, 143],\n darkslateblue: [72, 61, 139],\n darkslategray: [47, 79, 79],\n darkslategrey: [47, 79, 79],\n darkturquoise: [0, 206, 209],\n darkviolet: [148, 0, 211],\n deeppink: [255, 20, 147],\n deepskyblue: [0, 191, 255],\n dimgray: [105, 105, 105],\n dimgrey: [105, 105, 105],\n dodgerblue: [30, 144, 255],\n firebrick: [178, 34, 34],\n floralwhite: [255, 250, 240],\n forestgreen: [34, 139, 34],\n fuchsia: [255, 0, 255],\n gainsboro: [220, 220, 220],\n ghostwhite: [248, 248, 255],\n gold: [255, 215, 0],\n goldenrod: [218, 165, 32],\n gray: [128, 128, 128],\n green: [0, 128, 0],\n greenyellow: [173, 255, 47],\n grey: [128, 128, 128],\n honeydew: [240, 255, 240],\n hotpink: [255, 105, 180],\n indianred: [205, 92, 92],\n indigo: [75, 0, 130],\n ivory: [255, 255, 240],\n khaki: [240, 230, 140],\n lavender: [230, 230, 250],\n lavenderblush: [255, 240, 245],\n lawngreen: [124, 252, 0],\n lemonchiffon: [255, 250, 205],\n lightblue: [173, 216, 230],\n lightcoral: [240, 128, 128],\n lightcyan: [224, 255, 255],\n lightgoldenrodyellow: [250, 250, 210],\n lightgray: [211, 211, 211],\n lightgreen: [144, 238, 144],\n lightgrey: [211, 211, 211],\n lightpink: [255, 182, 193],\n lightsalmon: [255, 160, 122],\n lightseagreen: [32, 178, 170],\n lightskyblue: [135, 206, 250],\n lightslategray: [119, 136, 153],\n lightslategrey: [119, 136, 153],\n lightsteelblue: [176, 196, 222],\n lightyellow: [255, 255, 224],\n lime: [0, 255, 0],\n limegreen: [50, 205, 50],\n linen: [250, 240, 230],\n magenta: [255, 0, 255],\n maroon: [128, 0, 0],\n mediumaquamarine: [102, 205, 170],\n mediumblue: [0, 0, 205],\n mediumorchid: [186, 85, 211],\n mediumpurple: [147, 112, 219],\n mediumseagreen: [60, 179, 113],\n mediumslateblue: [123, 104, 238],\n mediumspringgreen: [0, 250, 154],\n mediumturquoise: [72, 209, 204],\n mediumvioletred: [199, 21, 133],\n midnightblue: [25, 25, 112],\n mintcream: [245, 255, 250],\n mistyrose: [255, 228, 225],\n moccasin: [255, 228, 181],\n navajowhite: [255, 222, 173],\n navy: [0, 0, 128],\n oldlace: [253, 245, 230],\n olive: [128, 128, 0],\n olivedrab: [107, 142, 35],\n orange: [255, 165, 0],\n orangered: [255, 69, 0],\n orchid: [218, 112, 214],\n palegoldenrod: [238, 232, 170],\n palegreen: [152, 251, 152],\n paleturquoise: [175, 238, 238],\n palevioletred: [219, 112, 147],\n papayawhip: [255, 239, 213],\n peachpuff: [255, 218, 185],\n peru: [205, 133, 63],\n pink: [255, 192, 203],\n plum: [221, 160, 221],\n powderblue: [176, 224, 230],\n purple: [128, 0, 128],\n rebeccapurple: [102, 51, 153],\n red: [255, 0, 0],\n rosybrown: [188, 143, 143],\n royalblue: [65, 105, 225],\n saddlebrown: [139, 69, 19],\n salmon: [250, 128, 114],\n sandybrown: [244, 164, 96],\n seagreen: [46, 139, 87],\n seashell: [255, 245, 238],\n sienna: [160, 82, 45],\n silver: [192, 192, 192],\n skyblue: [135, 206, 235],\n slateblue: [106, 90, 205],\n slategray: [112, 128, 144],\n slategrey: [112, 128, 144],\n snow: [255, 250, 250],\n springgreen: [0, 255, 127],\n steelblue: [70, 130, 180],\n tan: [210, 180, 140],\n teal: [0, 128, 128],\n thistle: [216, 191, 216],\n tomato: [255, 99, 71],\n turquoise: [64, 224, 208],\n violet: [238, 130, 238],\n wheat: [245, 222, 179],\n white: [255, 255, 255],\n whitesmoke: [245, 245, 245],\n yellow: [255, 255, 0],\n yellowgreen: [154, 205, 50],\n};\n","import type { StopOutput } from \"../../types\";\n\nexport const computeSubSteps = (stops: StopOutput[], steps: number): number[] => {\n const l = stops.length;\n\n // eslint-disable-next-line no-param-reassign\n steps = Number.parseInt(steps.toString(), 10);\n\n if (Number.isNaN(steps) || steps < 2) {\n throw new Error(\"Invalid number of steps (< 2)\");\n }\n\n if (steps < l) {\n throw new Error(\"Number of steps cannot be inferior to number of stops\");\n }\n\n const substeps: number[] = [];\n\n // eslint-disable-next-line no-loops/no-loops,no-plusplus\n for (let index = 1; index < l; index++) {\n // eslint-disable-next-line security/detect-object-injection\n const step = (steps - 1) * ((stops[index] as StopOutput).position - (stops[index - 1] as StopOutput).position);\n\n substeps.push(Math.max(1, Math.round(step)));\n }\n\n let totalSubsteps = 1;\n\n // eslint-disable-next-line no-loops/no-loops,no-plusplus\n for (let n = l - 1; n--; ) {\n // eslint-disable-next-line security/detect-object-injection\n totalSubsteps += substeps[n] as number;\n }\n\n // eslint-disable-next-line no-loops/no-loops\n while (totalSubsteps !== steps) {\n if (totalSubsteps < steps) {\n const min = Math.min(...substeps);\n\n // eslint-disable-next-line no-plusplus\n substeps[substeps.indexOf(min)]++;\n // eslint-disable-next-line no-plusplus\n totalSubsteps++;\n } else {\n const max = Math.max(...substeps);\n\n // eslint-disable-next-line no-plusplus\n substeps[substeps.indexOf(max)]--;\n // eslint-disable-next-line no-plusplus\n totalSubsteps--;\n }\n }\n\n return substeps;\n};\n","export const hsvToRgb = (h: number, s: number, v: number): { b: number; g: number; r: number } => {\n let r = 0;\n let g = 0;\n let b = 0;\n\n const index = Math.floor(h / 60);\n const f = h / 60 - index;\n const p = v * (1 - s);\n const q = v * (1 - f * s);\n const t = v * (1 - (1 - f) * s);\n\n if (index % 6 === 0) {\n r = v;\n g = t;\n b = p;\n } else if (index % 6 === 1) {\n r = q;\n g = v;\n b = p;\n } else if (index % 6 === 2) {\n r = p;\n g = v;\n b = t;\n } else if (index % 6 === 3) {\n r = p;\n g = q;\n b = v;\n } else if (index % 6 === 4) {\n r = t;\n g = p;\n b = v;\n } else if (index % 6 === 5) {\n r = v;\n g = p;\n b = q;\n }\n\n return { b: Math.round(b * 255), g: Math.round(g * 255), r: Math.round(r * 255) };\n};\n","export const rgbToHsv = ({ b, g, r }: { b: number; g: number; r: number }): { h: number; s: number; v: number } => {\n let rdif;\n let gdif;\n let bdif;\n let h = 0;\n let s = 0;\n\n // eslint-disable-next-line no-param-reassign\n r /= 255;\n // eslint-disable-next-line no-param-reassign\n g /= 255;\n // eslint-disable-next-line no-param-reassign\n b /= 255;\n\n const v = Math.max(r, g, b);\n const diff = v - Math.min(r, g, b);\n const diffc = (c: number) => (v - c) / 6 / diff + 1 / 2;\n\n if (diff !== 0) {\n s = diff / v;\n rdif = diffc(r);\n gdif = diffc(g);\n bdif = diffc(b);\n\n // eslint-disable-next-line unicorn/prefer-switch\n if (v === r) {\n h = bdif - gdif;\n } else if (v === g) {\n h = 1 / 3 + rdif - bdif;\n } else if (v === b) {\n h = 2 / 3 + gdif - rdif;\n }\n\n if (h < 0) {\n h += 1;\n } else if (h > 1) {\n h -= 1;\n }\n }\n\n return {\n h: h * 360,\n s,\n v,\n };\n};\n","import type { HSVA, RGB, StopOutput } from \"../../types\";\nimport { hsvToRgb } from \"./hsv-to-rgb\";\nimport { rgbToHsv } from \"./rgb-to-hsv\";\n\nconst RGBA_MAX: RGB = { b: 256, g: 256, r: 256 };\nconst HSV_MAX: HSVA = { h: 360, s: 1, v: 1 };\n\nconst calculateStepSize = <T extends Record<string, number>>(start: T, end: T, steps: number): T => {\n const step: T = {} as T;\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const k in start) {\n if (Object.prototype.hasOwnProperty.call(start, k)) {\n // @TODO: Fix this any type\n // eslint-disable-next-line security/detect-object-injection,@typescript-eslint/no-explicit-any\n (step as any)[k] = steps === 0 ? 0 : ((end[k] as number) - (start[k] as number)) / steps;\n }\n }\n\n return step;\n};\n\nconst interpolate = <T extends Record<string, number>>(step: T, start: T, index: number, max: T): T => {\n const color: T = {} as T;\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const k in start) {\n if (Object.prototype.hasOwnProperty.call(start, k)) {\n // @TODO: Fix this any type\n // eslint-disable-next-line security/detect-object-injection,@typescript-eslint/no-explicit-any\n (color as any)[k] = (step[k] as number) * index + (start[k] as number);\n // @TODO: Fix this any type\n // eslint-disable-next-line security/detect-object-injection,@typescript-eslint/no-explicit-any,sonarjs/no-element-overwrite\n (color as any)[k] =\n // eslint-disable-next-line security/detect-object-injection\n (color[k] as number) < 0\n ? // eslint-disable-next-line security/detect-object-injection\n (color[k] as number) + (max[k] as number)\n : // eslint-disable-next-line security/detect-object-injection\n max[k] === 1\n ? // eslint-disable-next-line security/detect-object-injection\n (color[k] as number)\n : // eslint-disable-next-line security/detect-object-injection\n (color[k] as number) % (max[k] as number);\n }\n }\n\n return color;\n};\n\nexport const interpolateRgb = (stop1: StopOutput, stop2: StopOutput, steps: number): RGB[] => {\n const start: RGB = { b: (stop1.color as number[])[2] as number, g: (stop1.color as number[])[1] as number, r: (stop1.color as number[])[0] as number };\n const end: RGB = { b: (stop2.color as number[])[2] as number, g: (stop2.color as number[])[1] as number, r: (stop2.color as number[])[0] as number };\n\n const step = calculateStepSize<RGB>(start, end, steps);\n\n const gradient: RGB[] = [{ ...start }];\n\n // eslint-disable-next-line no-loops/no-loops,no-plusplus\n for (let index = 1; index < steps; index++) {\n const color = interpolate<RGB>(step, start, index, RGBA_MAX);\n\n gradient.push({\n b: Math.floor(color.b as number),\n g: Math.floor(color.g as number),\n r: Math.floor(color.r as number),\n });\n }\n\n return gradient;\n};\n\nexport const interpolateHsv = (\n stop1: StopOutput,\n stop2: StopOutput,\n steps: number,\n mode: boolean | \"long\" | \"short\",\n // eslint-disable-next-line sonarjs/cognitive-complexity\n): RGB[] => {\n const start = rgbToHsv({ b: (stop1.color as number[])[2] as number, g: (stop1.color as number[])[1] as number, r: (stop1.color as number[])[0] as number });\n const end = rgbToHsv({ b: (stop2.color as number[])[2] as number, g: (stop2.color as number[])[1] as number, r: (stop2.color as number[])[0] as number });\n\n if (start.s === 0 || end.s === 0) {\n return interpolateRgb(stop1, stop2, steps);\n }\n\n let trigonometric: boolean;\n\n if (typeof mode === \"boolean\") {\n trigonometric = mode;\n } else {\n const trigShortest = (start.h < end.h && end.h - start.h < 180) || (start.h > end.h && start.h - end.h > 180);\n\n trigonometric = (mode === \"long\" && trigShortest) || (mode === \"short\" && !trigShortest);\n }\n\n const step = calculateStepSize(start, end, steps);\n const gradient: RGB[] = [\n {\n b: (stop1.color as [number, number, number])[2],\n g: (stop1.color as [number, number, number])[1],\n r: (stop1.color as [number, number, number])[0],\n },\n ];\n\n let diff: number;\n\n if ((start.h <= end.h && !trigonometric) || (start.h >= end.h && trigonometric)) {\n diff = end.h - start.h;\n } else if (trigonometric) {\n diff = 360 - end.h + start.h;\n } else {\n diff = 360 - start.h + end.h;\n }\n\n step.h = ((-1) ** (trigonometric ? 1 : 0) * Math.abs(diff)) / steps;\n\n // eslint-disable-next-line no-plusplus,no-loops/no-loops\n for (let index = 1; index < steps; index++) {\n const color = interpolate<HSVA>(step, start, index, HSV_MAX);\n\n gradient.push(hsvToRgb(color.h, color.s, color.v));\n }\n\n return gradient;\n};\n","import type { ColorizeType, ColorValueHex, CssColorName, RGB, StopInput, StopOutput } from \"../types\";\nimport { convertHexToRgb } from \"../util/convert-hex-to-rgb\";\nimport { colorNames } from \"./util/color-names\";\nimport { computeSubSteps } from \"./util/compute\";\nimport { interpolateHsv, interpolateRgb } from \"./util/interpolate\";\n\nexport class GradientBuilder {\n readonly #colorize: ColorizeType;\n\n public readonly stops: StopOutput[];\n\n // eslint-disable-next-line sonarjs/cognitive-complexity\n public constructor(colorize: ColorizeType, stops: (ColorValueHex | CssColorName | RGB | StopInput | [number, number, number])[]) {\n this.#colorize = colorize;\n this.stops = [];\n\n if (stops.length < 2) {\n throw new Error(\"Invalid number of stops (< 2)\");\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n const havingPositions = (stops[0] as StopInput).position !== undefined;\n\n let l = stops.length;\n let p = -1;\n let lastColorLess = false;\n\n // eslint-disable-next-line no-loops/no-loops,@typescript-eslint/naming-convention,no-restricted-syntax\n for (const [index, stop_] of stops.entries()) {\n let stop = {} as StopOutput;\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n const hasPosition = (stop_ as StopInput).position !== undefined;\n\n if (havingPositions !== hasPosition) {\n throw new Error(\"Cannot mix positioned and non-positioned color stops\");\n }\n\n if (hasPosition) {\n const stopInput = stop_ as StopInput;\n\n const hasColor = stopInput.color !== undefined;\n\n if (!hasColor && (lastColorLess || index === 0 || index === l - 1)) {\n throw new Error(\"Cannot define two consecutive position-only stops\");\n }\n\n lastColorLess = !hasColor;\n\n let color: [number, number, number] | undefined;\n\n if (hasColor) {\n if (Array.isArray(stopInput.color)) {\n color = stopInput.color as [number, number, number];\n } else if (typeof stopInput.color === \"string\") {\n color = stopInput.color.includes(\"#\") ? convertHexToRgb(stopInput.color as ColorValueHex) : colorNames[stopInput.color as CssColorName];\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n } else if ((stopInput.color as RGB).r !== undefined && (stopInput.color as RGB).g !== undefined && (stopInput.color as RGB).b) {\n color = [(stopInput.color as RGB).r, (stopInput.color as RGB).g, (stopInput.color as RGB).b];\n }\n }\n\n stop = {\n color,\n colorLess: !hasColor,\n position: stopInput.position,\n };\n\n if (stop.position < 0 || stop.position > 1) {\n throw new Error(\"Color stops positions must be between 0 and 1\");\n } else if (stop.position < p) {\n throw new Error(\"Color stops positions are not ordered\");\n }\n\n p = stop.position;\n } else if (Array.isArray(stop_)) {\n stop = {\n color: stop_ as [number, number, number],\n position: index / (l - 1),\n };\n } else if (typeof stop_ === \"string\") {\n stop = {\n color: stop_.includes(\"#\") ? convertHexToRgb(stop_ as ColorValueHex) : colorNames[stop_ as CssColorName],\n position: index / (l - 1),\n };\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n } else if ((stop_ as RGB).r !== undefined && (stop_ as RGB).g !== undefined && (stop_ as RGB).b !== undefined) {\n stop = {\n color: [(stop_ as RGB).r, (stop_ as RGB).g, (stop_ as RGB).b],\n position: index / (l - 1),\n };\n } else {\n throw new Error(\"Invalid color stop\");\n }\n\n this.stops.push(stop);\n }\n\n if ((this.stops[0] as StopOutput).position !== 0) {\n this.stops.unshift({\n color: (this.stops[0] as StopOutput).color,\n position: 0,\n });\n\n // eslint-disable-next-line no-plusplus\n l++;\n }\n\n if ((this.stops[l - 1] as StopOutput).position !== 1) {\n this.stops.push({\n color: (this.stops[l - 1] as StopOutput).color,\n position: 1,\n });\n }\n }\n\n public reverse(): GradientBuilder {\n const stops: StopInput[] = [];\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const stop of this.stops) {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const stop_ = { ...stop };\n\n stop_.position = 1 - stop.position;\n\n stops.push(stop_ as StopInput);\n }\n\n // eslint-disable-next-line etc/no-assign-mutated-array\n return new GradientBuilder(this.#colorize, stops.reverse());\n }\n\n public loop(): GradientBuilder {\n const stops1: StopInput[] = [];\n const stops2: StopInput[] = [];\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const stop of this.stops) {\n stops1.push({\n color: stop.color,\n position: (stop.position || 0) / 2,\n } as StopInput);\n }\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const stop of this.stops.slice(0, -1)) {\n stops2.push({\n color: stop.color,\n position: 1 - (stop.position || 0) / 2,\n } as StopInput);\n }\n\n // eslint-disable-next-line etc/no-assign-mutated-array\n return new GradientBuilder(this.#colorize, [...stops1, ...stops2.reverse()]);\n }\n\n public rgb(steps: number): ColorizeType[] {\n const subSteps = computeSubSteps(this.stops, steps);\n const gradient: ColorizeType[] = [];\n\n this.stops.forEach((stop, index) => {\n if (stop.colorLess) {\n const rgbs = interpolateRgb(this.stops[index - 1] as StopOutput, this.stops[index + 1] as StopOutput, 2);\n // eslint-disable-next-line no-param-reassign\n stop.color = [(rgbs[1] as RGB).r, (rgbs[1] as RGB).g, (rgbs[1] as RGB).b];\n }\n });\n\n // eslint-disable-next-line no-loops/no-loops,no-plusplus\n for (let index = 0, l = this.stops.length; index < l - 1; index++) {\n // eslint-disable-next-line security/detect-object-injection\n const rgbs = interpolateRgb(this.stops[index] as StopOutput, this.stops[index + 1] as StopOutput, subSteps[index] as number);\n\n gradient.splice(gradient.length, 0, ...rgbs.map((rgb) => this.#colorize.rgb(rgb.r, rgb.g, rgb.b)));\n }\n\n gradient.push(this.#colorize.rgb(...((this.stops.at(-1) as StopOutput).color as [number, number, number])));\n\n return gradient;\n }\n\n public hsv(steps: number, mode: boolean | \"long\" | \"short\" = false): ColorizeType[] {\n const subSteps = computeSubSteps(this.stops, steps);\n const gradient: ColorizeType[] = [];\n\n this.stops.forEach((stop, index) => {\n if (stop.colorLess) {\n const rgbs = interpolateHsv(this.stops[index - 1] as StopOutput, this.stops[index + 1] as StopOutput, 2, mode);\n // eslint-disable-next-line no-param-reassign\n stop.color = [(rgbs[1] as RGB).r, (rgbs[1] as RGB).g, (rgbs[1] as RGB).b];\n }\n });\n\n // eslint-disable-next-line no-plusplus,no-loops/no-loops\n for (let index = 0, l = this.stops.length; index < l - 1; index++) {\n // eslint-disable-next-line security/detect-object-injection\n const rgbs = interpolateHsv(this.stops[index] as StopOutput, this.stops[index + 1] as StopOutput, subSteps[index] as number, mode);\n\n gradient.splice(gradient.length, 0, ...rgbs.map((rgb) => this.#colorize.rgb(rgb.r, rgb.g, rgb.b)));\n }\n\n gradient.push(this.#colorize.rgb(...((this.stops.at(-1) as StopOutput).color as [number, number, number])));\n\n return gradient;\n }\n}\n","import ColorizeImpl from \"./colorize.server\";\nimport { GradientBuilder } from \"./gradient/gradient-builder\";\nimport type { ColorizeType, ColorValueHex, CssColorName, RGB, StopInput } from \"./types\";\n\nconst colorize: ColorizeType = new ColorizeImpl() as ColorizeType;\n\nconst forbiddenChars = /\\s/g;\n\nexport const gradient = (\n stops: (ColorValueHex | CssColorName | RGB | StopInput | [number, number, number])[],\n options?: {\n hsvSpin?: \"long\" | \"short\";\n interpolation?: \"hsv\" | \"rgb\";\n loop?: boolean;\n reverse?: boolean;\n },\n): ((string_: string) => string) => {\n const { hsvSpin = \"short\", interpolation = \"rgb\" } = options ?? {};\n\n let builder = new GradientBuilder(colorize, stops);\n\n if (options?.loop) {\n builder = builder.loop();\n } else if (options?.reverse) {\n builder = builder.reverse();\n }\n\n return (string_: string): string => {\n const colorsCount = Math.max(string_.replaceAll(forbiddenChars, \"\").length, builder.stops.length);\n const colors = interpolation === \"rgb\" ? builder.rgb(colorsCount) : builder.hsv(colorsCount, hsvSpin);\n\n let result = \"\";\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const s of string_) {\n if (forbiddenChars.test(s)) {\n result += s;\n } else {\n const color = colors.shift();\n\n result += (color as ColorizeType)(s);\n }\n }\n\n return result;\n };\n};\n\n// eslint-disable-next-line import/no-unused-modules\nexport const multilineGradient = (\n stops: (ColorValueHex | CssColorName | RGB | StopInput | [number, number, number])[],\n options?: {\n hsvSpin?: \"long\" | \"short\";\n interpolation?: \"hsv\" | \"rgb\";\n loop?: boolean;\n reverse?: boolean;\n },\n): ((string_: string) => string) => {\n const { hsvSpin = \"short\", interpolation = \"rgb\" } = options ?? {};\n\n let builder = new GradientBuilder(colorize, stops);\n\n if (options?.loop) {\n builder = builder.loop();\n } else if (options?.reverse) {\n builder = builder.reverse();\n }\n\n return (string_: string): string => {\n const lines = string_.split(\"\\n\");\n\n const colorsCount = Reflect.apply(Math.max, null, [...lines.map((l) => l.length), builder.stops.length]);\n const colors = interpolation === \"rgb\" ? builder.rgb(colorsCount) : builder.hsv(colorsCount, hsvSpin);\n\n const results: string[] = [];\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const line of lines) {\n const lineColors = [...colors];\n\n let lineResult = \"\";\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const l of line) {\n lineResult += forbiddenChars.test(l) ? l : (lineColors.shift() as ColorizeType)(l);\n }\n\n results.push(lineResult);\n }\n\n return results.join(\"\\n\");\n };\n};\n\n// eslint-disable-next-line import/no-unused-modules\nexport { GradientBuilder } from \"./gradient/gradient-builder\";\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/.pnpm/ansi-regex@6.0.1/node_modules/ansi-regex/index.js","../src/ansi-codes.ts","../src/util/clamp.ts","../src/util/convert-hex-to-rgb.ts","../src/util/convert-rgb-to-ansi.ts","../src/util/string-replace-all.ts","../src/colorize.server.ts","../src/gradient/util/color-names.ts","../src/gradient/util/compute.ts","../src/gradient/util/hsv-to-rgb.ts","../src/gradient/util/rgb-to-hsv.ts","../src/gradient/util/interpolate.ts","../src/gradient/gradient-builder.ts","../src/gradient.ts"],"names":["ansiRegex","onlyFirst","pattern","isStdoutColorSupported","clamp","number_","min","max","convertHexToRgb","hex","color","length_","rgbToAnsi256","g","b","ansi256To16","code","r","remainder","value","code16","rgbToAnsi16","closeCode","bgCloseCode","supportedColor","mono","esc","open","close","createRgbFunction","function_","createHexFunction","createAnsi256","createBgAnsi256","createRgb","createBgRgb","baseStyles","baseColors","styleMethods","stringReplaceAll","string_","searchValue","replaceValue","pos","substringLength","lastPos","result","styles","stylePrototype","wrapText","strings","values","properties","string","currentProperties","createStyle","props","openStack","closeStack","style","Colorize","self","name","arguments_","colorize_server_default","colorNames","computeSubSteps","stops","steps","l","substeps","index","step","totalSubsteps","n","hsvToRgb","h","s","v","f","p","q","t","rgbToHsv","rdif","gdif","bdif","diff","diffc","c","RGBA_MAX","HSV_MAX","calculateStepSize","start","end","k","interpolate","interpolateRgb","stop1","stop2","gradient","interpolateHsv","mode","trigonometric","trigShortest","GradientBuilder","_GradientBuilder","#colorize","colorize","havingPositions","lastColorLess","stop_","stop","hasPosition","stopInput","hasColor","stops1","stops2","subSteps","rgbs","rgb","forbiddenChars","options","hsvSpin","interpolation","builder","colorsCount","colors","multilineGradient","lines","results","line","lineColors","lineResult"],"mappings":"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","sourcesContent":["export default function ansiRegex({onlyFirst = false} = {}) {\n\tconst pattern = [\n\t '[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)',\n\t\t'(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-ntqry=><~]))'\n\t].join('|');\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n}\n","/**\n * Modified copy of https://github.com/webdiscus/ansis/blob/master/src/ansi-codes.js\n *\n * ISC License\n *\n * Copyright (c) 2023, webdiscus\n */\n\nimport type { ColorSupportLevel } from \"@visulima/is-ansi-color-supported\";\nimport { isStdoutColorSupported } from \"@visulima/is-ansi-color-supported\";\n\nimport type { AnsiColors, AnsiStyles, ColorData, ColorValueHex } from \"./types\";\nimport { clamp } from \"./util/clamp\";\nimport { convertHexToRgb } from \"./util/convert-hex-to-rgb\";\nimport { ansi256To16, rgbToAnsi16, rgbToAnsi256 } from \"./util/convert-rgb-to-ansi\";\n\nconst closeCode = 39;\nconst bgCloseCode = 49;\n\nconst supportedColor: ColorSupportLevel = isStdoutColorSupported();\n\nconst mono = { close: \"\", open: \"\" };\n\nconst esc: (open: number | string, close: number | string) => ColorData =\n supportedColor > 0\n ? (open: number | string, close: number | string): ColorData => {\n return { close: \"\\u001B[\" + close + \"m\", open: \"\\u001B[\" + open + \"m\" };\n }\n : (): ColorData => mono;\n\nconst createRgbFunction = (function_: (code: number | string) => ColorData) => (r: number | string, g: number | string, b: number | string) =>\n function_(rgbToAnsi256(Number(r), Number(g), Number(b)));\n\nconst createHexFunction = (function_: (r: number | string, g: number | string, b: number | string) => ColorData) => (hex: ColorValueHex) => {\n const [r, g, b] = convertHexToRgb(hex);\n\n return function_(r, g, b);\n};\n\nlet createAnsi256 = (code: number | string): ColorData => esc(\"38;5;\" + code, closeCode);\n\nlet createBgAnsi256 = (code: number | string): ColorData => esc(\"48;5;\" + code, bgCloseCode);\n\nlet createRgb = (r: number | string, g: number | string, b: number | string): ColorData => esc(\"38;2;\" + r + \";\" + g + \";\" + b, closeCode);\n\nlet createBgRgb = (r: number | string, g: number | string, b: number | string): ColorData => esc(\"48;2;\" + r + \";\" + g + \";\" + b, bgCloseCode);\n\nif (supportedColor === 1) {\n // ANSI 16 colors\n createAnsi256 = (code: number | string) => esc(ansi256To16(Number(code)), closeCode);\n createBgAnsi256 = (code: number | string) => esc(ansi256To16(Number(code)) + 10, bgCloseCode);\n createRgb = (r: number | string, g: number | string, b: number | string) => esc(rgbToAnsi16(Number(r), Number(g), Number(b)), closeCode);\n createBgRgb = (r: number | string, g: number | string, b: number | string) => esc(rgbToAnsi16(Number(r), Number(g), Number(b)) + 10, bgCloseCode);\n} else if (supportedColor === 2) {\n // ANSI 256 colors\n createRgb = createRgbFunction(createAnsi256);\n createBgRgb = createRgbFunction(createBgAnsi256);\n}\n\nexport const baseStyles: Required<Record<AnsiStyles, ColorData>> = {\n // 21 isn't widely supported and 22 does the same thing\n bold: esc(1, 22),\n dim: esc(2, 22),\n hidden: esc(8, 28),\n inverse: esc(7, 27),\n italic: esc(3, 23),\n overline: esc(53, 55),\n reset: esc(0, 0),\n strike: esc(9, 29), // alias for strikethrough\n strikethrough: esc(9, 29),\n underline: esc(4, 24),\n visible: mono,\n};\n\nexport const baseColors: Required<Record<AnsiColors, ColorData>> = {\n bgBlack: esc(40, bgCloseCode),\n bgBlackBright: esc(100, bgCloseCode),\n bgBlue: esc(44, bgCloseCode),\n bgBlueBright: esc(104, bgCloseCode),\n bgCyan: esc(46, bgCloseCode),\n bgCyanBright: esc(106, bgCloseCode),\n bgGray: esc(100, bgCloseCode), // US spelling alias for bgBlackBright\n bgGreen: esc(42, bgCloseCode),\n bgGreenBright: esc(102, bgCloseCode),\n bgGrey: esc(100, bgCloseCode), // UK spelling alias for bgBlackBright\n bgMagenta: esc(45, bgCloseCode),\n bgMagentaBright: esc(105, bgCloseCode),\n bgRed: esc(41, bgCloseCode),\n bgRedBright: esc(101, bgCloseCode),\n bgWhite: esc(47, bgCloseCode),\n bgWhiteBright: esc(107, bgCloseCode),\n bgYellow: esc(43, bgCloseCode),\n bgYellowBright: esc(103, bgCloseCode),\n black: esc(30, closeCode),\n blackBright: esc(90, closeCode),\n blue: esc(34, closeCode),\n blueBright: esc(94, closeCode),\n cyan: esc(36, closeCode),\n cyanBright: esc(96, closeCode),\n gray: esc(90, closeCode), // US spelling alias for blackBright\n green: esc(32, closeCode),\n greenBright: esc(92, closeCode),\n grey: esc(90, closeCode), // UK spelling alias for blackBright\n magenta: esc(35, closeCode),\n magentaBright: esc(95, closeCode),\n red: esc(31, closeCode),\n redBright: esc(91, closeCode),\n white: esc(37, closeCode),\n whiteBright: esc(97, closeCode),\n yellow: esc(33, closeCode),\n yellowBright: esc(93, closeCode),\n};\n\nexport const styleMethods: {\n bg: (code: number) => ColorData;\n bgHex: (hex: ColorValueHex) => ColorData;\n bgRgb: (r: number, g: number, b: number) => ColorData;\n fg: (code: number) => ColorData;\n hex: (hex: ColorValueHex) => ColorData;\n rgb: (r: number, g: number, b: number) => ColorData;\n} = {\n bg: (code) => createBgAnsi256(clamp(code, 0, 255)),\n\n bgHex: createHexFunction(createBgRgb),\n\n bgRgb: (r, g, b) => createBgRgb(clamp(r, 0, 255), clamp(g, 0, 255), clamp(b, 0, 255)),\n\n fg: (code) => createAnsi256(clamp(code, 0, 255)),\n\n hex: createHexFunction(createRgb),\n\n rgb: (r, g, b) => createRgb(clamp(r, 0, 255), clamp(g, 0, 255), clamp(b, 0, 255)),\n};\n","/**\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\n/**\n * Clamp a number within the inclusive range specified by min and max.\n * @note: The ternary operator is a tick quicker than Math.min(Math.max(num, min), max).\n */\n\nexport const clamp = (number_: number, min: number, max: number): number => (min > number_ ? min : number_ > max ? max : number_);\n","/**\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;\n let g;\n 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","/**\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\n/**\n * Replace all matched strings.\n * Note: this implementation is over 30% faster than String.replaceAll().\n */\nexport const stringReplaceAll = (string_: string, searchValue: string, replaceValue: string): string => {\n // visible style has empty open/close props\n if (searchValue === \"\") {\n return string_;\n }\n\n let pos = string_.indexOf(searchValue);\n if (pos < 0) {\n return string_;\n }\n\n const substringLength = searchValue.length;\n let lastPos = 0;\n let result = \"\";\n\n // eslint-disable-next-line no-loops/no-loops,no-bitwise\n while (~pos) {\n result += string_.slice(lastPos, pos) + replaceValue;\n lastPos = pos + substringLength;\n pos = string_.indexOf(searchValue, lastPos);\n }\n\n return result + string_.slice(lastPos);\n};\n","/**\n * Modified copy of https://github.com/webdiscus/ansis/blob/master/src/index.js\n *\n * ISC License\n *\n * Copyright (c) 2023, webdiscus\n */\n\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport ansiRegex from \"ansi-regex\";\n\nimport { baseColors, baseStyles, styleMethods } from \"./ansi-codes\";\nimport type { ColorData, ColorizeType } from \"./types\";\nimport { stringReplaceAll } from \"./util/string-replace-all\";\n\nconst styles: Record<string, object> = {};\n\nlet stylePrototype: object | null = null;\n\nconst wrapText = (\n strings: ArrayLike<string> | ReadonlyArray<string> | number | string | { raw: ArrayLike<string> | ReadonlyArray<string> },\n values: string[],\n properties: ColorizeProperties,\n) => {\n if (!strings) {\n return \"\";\n }\n\n let string =\n (strings as { raw?: ArrayLike<string> | ReadonlyArray<string> | null }).raw == null\n ? (((strings as number | string) + \"\") as string)\n : String.raw(strings as { raw: ArrayLike<string> | ReadonlyArray<string> }, ...values);\n\n if (string.includes(\"\\u001B\")) {\n // eslint-disable-next-line no-loops/no-loops,@typescript-eslint/no-unnecessary-condition\n for (let currentProperties = properties; currentProperties; currentProperties = currentProperties.props) {\n string = stringReplaceAll(string, currentProperties.close, currentProperties.open);\n }\n }\n\n if (string.includes(\"\\n\")) {\n // eslint-disable-next-line unicorn/prefer-string-replace-all\n string = string.replace(/(\\r*\\n)/g, properties.closeStack + \"$1\" + properties.openStack);\n }\n\n return properties.openStack + string + properties.closeStack;\n};\n\ntype ColorizeProperties = { close: string; closeStack: string; open: string; openStack: string; props: ColorizeProperties };\n\nconst createStyle = (\n { props }: { props?: ColorizeProperties },\n { close, open }: ColorData,\n): {\n (strings: ArrayLike<string> | ReadonlyArray<string> | string, ...values: string[]): string;\n close: string;\n open: string;\n props: { close: string; closeStack: string; open: string; openStack: string; props?: ColorizeProperties };\n} => {\n const openStack: string = (props?.openStack ?? \"\") + open;\n const closeStack: string = close + (props?.closeStack ?? \"\");\n\n const style = (strings: ArrayLike<string> | ReadonlyArray<string> | string, ...values: string[]) => wrapText(strings, values, style.props);\n\n Object.setPrototypeOf(style, stylePrototype);\n\n style.props = { close, closeStack, open, openStack, props } as ColorizeProperties;\n style.open = openStack;\n style.close = closeStack;\n\n return style;\n};\n\n// eslint-disable-next-line func-names\nconst Colorize = function () {\n const self = (string_: number | string) => string_ + \"\";\n\n self.strip = (value: string): string => value.replaceAll(ansiRegex(), \"\");\n\n // eslint-disable-next-line guard-for-in,no-loops/no-loops,no-restricted-syntax\n for (const name in baseColors) {\n // eslint-disable-next-line security/detect-object-injection\n styles[name] = {\n get() {\n const style = createStyle(this, baseColors[name as keyof typeof baseColors]);\n\n Object.defineProperty(this, name, { value: style });\n\n return style;\n },\n };\n }\n\n // eslint-disable-next-line guard-for-in,no-loops/no-loops,no-restricted-syntax\n for (const name in baseStyles) {\n // eslint-disable-next-line security/detect-object-injection\n styles[name] = {\n get() {\n const style = createStyle(this, baseStyles[name as keyof typeof baseStyles]);\n\n Object.defineProperty(this, name, { value: style });\n\n return style;\n },\n };\n }\n\n // This needs to be the last thing we do, so that the prototype is fully populated.\n stylePrototype = Object.defineProperties({}, styles);\n\n Object.setPrototypeOf(self, stylePrototype);\n\n return self;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n} as any as new () => ColorizeType;\n\n// eslint-disable-next-line guard-for-in,no-loops/no-loops,no-restricted-syntax\nfor (const name in styleMethods) {\n styles[name as keyof typeof styleMethods] = {\n get() {\n return (...arguments_: (number | string)[]) =>\n // @ts-expect-error: TODO: fix typing of `arguments_`\n createStyle(this, styleMethods[name as keyof typeof styleMethods](...arguments_));\n },\n };\n}\n\nstyles.ansi256 = styles.fg as object;\nstyles.bgAnsi256 = styles.bg as object;\n\n// eslint-disable-next-line import/no-default-export\nexport default Colorize;\n","// A JSON with color names and its values. Based on http://dev.w3.org/csswg/css-color/#named-colors.\nimport type { CssColorCodes } from \"../../types\";\n\nexport const colorNames: CssColorCodes = {\n aliceblue: [240, 248, 255],\n antiquewhite: [250, 235, 215],\n aqua: [0, 255, 255],\n aquamarine: [127, 255, 212],\n azure: [240, 255, 255],\n beige: [245, 245, 220],\n bisque: [255, 228, 196],\n black: [0, 0, 0],\n blanchedalmond: [255, 235, 205],\n blue: [0, 0, 255],\n blueviolet: [138, 43, 226],\n brown: [165, 42, 42],\n burlywood: [222, 184, 135],\n cadetblue: [95, 158, 160],\n chartreuse: [127, 255, 0],\n chocolate: [210, 105, 30],\n coral: [255, 127, 80],\n cornflowerblue: [100, 149, 237],\n cornsilk: [255, 248, 220],\n crimson: [220, 20, 60],\n cyan: [0, 255, 255],\n darkblue: [0, 0, 139],\n darkcyan: [0, 139, 139],\n darkgoldenrod: [184, 134, 11],\n darkgray: [169, 169, 169],\n darkgreen: [0, 100, 0],\n darkgrey: [169, 169, 169],\n darkkhaki: [189, 183, 107],\n darkmagenta: [139, 0, 139],\n darkolivegreen: [85, 107, 47],\n darkorange: [255, 140, 0],\n darkorchid: [153, 50, 204],\n darkred: [139, 0, 0],\n darksalmon: [233, 150, 122],\n darkseagreen: [143, 188, 143],\n darkslateblue: [72, 61, 139],\n darkslategray: [47, 79, 79],\n darkslategrey: [47, 79, 79],\n darkturquoise: [0, 206, 209],\n darkviolet: [148, 0, 211],\n deeppink: [255, 20, 147],\n deepskyblue: [0, 191, 255],\n dimgray: [105, 105, 105],\n dimgrey: [105, 105, 105],\n dodgerblue: [30, 144, 255],\n firebrick: [178, 34, 34],\n floralwhite: [255, 250, 240],\n forestgreen: [34, 139, 34],\n fuchsia: [255, 0, 255],\n gainsboro: [220, 220, 220],\n ghostwhite: [248, 248, 255],\n gold: [255, 215, 0],\n goldenrod: [218, 165, 32],\n gray: [128, 128, 128],\n green: [0, 128, 0],\n greenyellow: [173, 255, 47],\n grey: [128, 128, 128],\n honeydew: [240, 255, 240],\n hotpink: [255, 105, 180],\n indianred: [205, 92, 92],\n indigo: [75, 0, 130],\n ivory: [255, 255, 240],\n khaki: [240, 230, 140],\n lavender: [230, 230, 250],\n lavenderblush: [255, 240, 245],\n lawngreen: [124, 252, 0],\n lemonchiffon: [255, 250, 205],\n lightblue: [173, 216, 230],\n lightcoral: [240, 128, 128],\n lightcyan: [224, 255, 255],\n lightgoldenrodyellow: [250, 250, 210],\n lightgray: [211, 211, 211],\n lightgreen: [144, 238, 144],\n lightgrey: [211, 211, 211],\n lightpink: [255, 182, 193],\n lightsalmon: [255, 160, 122],\n lightseagreen: [32, 178, 170],\n lightskyblue: [135, 206, 250],\n lightslategray: [119, 136, 153],\n lightslategrey: [119, 136, 153],\n lightsteelblue: [176, 196, 222],\n lightyellow: [255, 255, 224],\n lime: [0, 255, 0],\n limegreen: [50, 205, 50],\n linen: [250, 240, 230],\n magenta: [255, 0, 255],\n maroon: [128, 0, 0],\n mediumaquamarine: [102, 205, 170],\n mediumblue: [0, 0, 205],\n mediumorchid: [186, 85, 211],\n mediumpurple: [147, 112, 219],\n mediumseagreen: [60, 179, 113],\n mediumslateblue: [123, 104, 238],\n mediumspringgreen: [0, 250, 154],\n mediumturquoise: [72, 209, 204],\n mediumvioletred: [199, 21, 133],\n midnightblue: [25, 25, 112],\n mintcream: [245, 255, 250],\n mistyrose: [255, 228, 225],\n moccasin: [255, 228, 181],\n navajowhite: [255, 222, 173],\n navy: [0, 0, 128],\n oldlace: [253, 245, 230],\n olive: [128, 128, 0],\n olivedrab: [107, 142, 35],\n orange: [255, 165, 0],\n orangered: [255, 69, 0],\n orchid: [218, 112, 214],\n palegoldenrod: [238, 232, 170],\n palegreen: [152, 251, 152],\n paleturquoise: [175, 238, 238],\n palevioletred: [219, 112, 147],\n papayawhip: [255, 239, 213],\n peachpuff: [255, 218, 185],\n peru: [205, 133, 63],\n pink: [255, 192, 203],\n plum: [221, 160, 221],\n powderblue: [176, 224, 230],\n purple: [128, 0, 128],\n rebeccapurple: [102, 51, 153],\n red: [255, 0, 0],\n rosybrown: [188, 143, 143],\n royalblue: [65, 105, 225],\n saddlebrown: [139, 69, 19],\n salmon: [250, 128, 114],\n sandybrown: [244, 164, 96],\n seagreen: [46, 139, 87],\n seashell: [255, 245, 238],\n sienna: [160, 82, 45],\n silver: [192, 192, 192],\n skyblue: [135, 206, 235],\n slateblue: [106, 90, 205],\n slategray: [112, 128, 144],\n slategrey: [112, 128, 144],\n snow: [255, 250, 250],\n springgreen: [0, 255, 127],\n steelblue: [70, 130, 180],\n tan: [210, 180, 140],\n teal: [0, 128, 128],\n thistle: [216, 191, 216],\n tomato: [255, 99, 71],\n turquoise: [64, 224, 208],\n violet: [238, 130, 238],\n wheat: [245, 222, 179],\n white: [255, 255, 255],\n whitesmoke: [245, 245, 245],\n yellow: [255, 255, 0],\n yellowgreen: [154, 205, 50],\n};\n","import type { StopOutput } from \"../../types\";\n\nexport const computeSubSteps = (stops: StopOutput[], steps: number): number[] => {\n const l = stops.length;\n\n // eslint-disable-next-line no-param-reassign\n steps = Number.parseInt(steps.toString(), 10);\n\n if (Number.isNaN(steps) || steps < 2) {\n throw new Error(\"Invalid number of steps (< 2)\");\n }\n\n if (steps < l) {\n throw new Error(\"Number of steps cannot be inferior to number of stops\");\n }\n\n const substeps: number[] = [];\n\n // eslint-disable-next-line no-loops/no-loops,no-plusplus\n for (let index = 1; index < l; index++) {\n // eslint-disable-next-line security/detect-object-injection\n const step = (steps - 1) * ((stops[index] as StopOutput).position - (stops[index - 1] as StopOutput).position);\n\n substeps.push(Math.max(1, Math.round(step)));\n }\n\n let totalSubsteps = 1;\n\n // eslint-disable-next-line no-loops/no-loops,no-plusplus\n for (let n = l - 1; n--; ) {\n // eslint-disable-next-line security/detect-object-injection\n totalSubsteps += substeps[n] as number;\n }\n\n // eslint-disable-next-line no-loops/no-loops\n while (totalSubsteps !== steps) {\n if (totalSubsteps < steps) {\n const min = Math.min(...substeps);\n\n // eslint-disable-next-line no-plusplus\n substeps[substeps.indexOf(min)]++;\n // eslint-disable-next-line no-plusplus\n totalSubsteps++;\n } else {\n const max = Math.max(...substeps);\n\n // eslint-disable-next-line no-plusplus\n substeps[substeps.indexOf(max)]--;\n // eslint-disable-next-line no-plusplus\n totalSubsteps--;\n }\n }\n\n return substeps;\n};\n","export const hsvToRgb = (h: number, s: number, v: number): { b: number; g: number; r: number } => {\n let r = 0;\n let g = 0;\n let b = 0;\n\n const index = Math.floor(h / 60);\n const f = h / 60 - index;\n const p = v * (1 - s);\n const q = v * (1 - f * s);\n const t = v * (1 - (1 - f) * s);\n\n if (index % 6 === 0) {\n r = v;\n g = t;\n b = p;\n } else if (index % 6 === 1) {\n r = q;\n g = v;\n b = p;\n } else if (index % 6 === 2) {\n r = p;\n g = v;\n b = t;\n } else if (index % 6 === 3) {\n r = p;\n g = q;\n b = v;\n } else if (index % 6 === 4) {\n r = t;\n g = p;\n b = v;\n } else if (index % 6 === 5) {\n r = v;\n g = p;\n b = q;\n }\n\n return { b: Math.round(b * 255), g: Math.round(g * 255), r: Math.round(r * 255) };\n};\n","export const rgbToHsv = ({ b, g, r }: { b: number; g: number; r: number }): { h: number; s: number; v: number } => {\n let rdif;\n let gdif;\n let bdif;\n let h = 0;\n let s = 0;\n\n // eslint-disable-next-line no-param-reassign\n r /= 255;\n // eslint-disable-next-line no-param-reassign\n g /= 255;\n // eslint-disable-next-line no-param-reassign\n b /= 255;\n\n const v = Math.max(r, g, b);\n const diff = v - Math.min(r, g, b);\n const diffc = (c: number) => (v - c) / 6 / diff + 1 / 2;\n\n if (diff !== 0) {\n s = diff / v;\n rdif = diffc(r);\n gdif = diffc(g);\n bdif = diffc(b);\n\n // eslint-disable-next-line unicorn/prefer-switch\n if (v === r) {\n h = bdif - gdif;\n } else if (v === g) {\n h = 1 / 3 + rdif - bdif;\n } else if (v === b) {\n h = 2 / 3 + gdif - rdif;\n }\n\n if (h < 0) {\n h += 1;\n } else if (h > 1) {\n h -= 1;\n }\n }\n\n return {\n h: h * 360,\n s,\n v,\n };\n};\n","import type { HSVA, RGB, StopOutput } from \"../../types\";\nimport { hsvToRgb } from \"./hsv-to-rgb\";\nimport { rgbToHsv } from \"./rgb-to-hsv\";\n\nconst RGBA_MAX: RGB = { b: 256, g: 256, r: 256 };\nconst HSV_MAX: HSVA = { h: 360, s: 1, v: 1 };\n\nconst calculateStepSize = <T extends Record<string, number>>(start: T, end: T, steps: number): T => {\n const step: T = {} as T;\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const k in start) {\n if (Object.prototype.hasOwnProperty.call(start, k)) {\n // @TODO: Fix this any type\n // eslint-disable-next-line security/detect-object-injection,@typescript-eslint/no-explicit-any\n (step as any)[k] = steps === 0 ? 0 : ((end[k] as number) - (start[k] as number)) / steps;\n }\n }\n\n return step;\n};\n\nconst interpolate = <T extends Record<string, number>>(step: T, start: T, index: number, max: T): T => {\n const color: T = {} as T;\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const k in start) {\n if (Object.prototype.hasOwnProperty.call(start, k)) {\n // @TODO: Fix this any type\n // eslint-disable-next-line security/detect-object-injection,@typescript-eslint/no-explicit-any\n (color as any)[k] = (step[k] as number) * index + (start[k] as number);\n // @TODO: Fix this any type\n // eslint-disable-next-line security/detect-object-injection,@typescript-eslint/no-explicit-any,sonarjs/no-element-overwrite\n (color as any)[k] =\n // eslint-disable-next-line security/detect-object-injection\n (color[k] as number) < 0\n ? // eslint-disable-next-line security/detect-object-injection\n (color[k] as number) + (max[k] as number)\n : // eslint-disable-next-line security/detect-object-injection\n max[k] === 1\n ? // eslint-disable-next-line security/detect-object-injection\n (color[k] as number)\n : // eslint-disable-next-line security/detect-object-injection\n (color[k] as number) % (max[k] as number);\n }\n }\n\n return color;\n};\n\nexport const interpolateRgb = (stop1: StopOutput, stop2: StopOutput, steps: number): RGB[] => {\n const start: RGB = { b: (stop1.color as number[])[2] as number, g: (stop1.color as number[])[1] as number, r: (stop1.color as number[])[0] as number };\n const end: RGB = { b: (stop2.color as number[])[2] as number, g: (stop2.color as number[])[1] as number, r: (stop2.color as number[])[0] as number };\n\n const step = calculateStepSize<RGB>(start, end, steps);\n\n const gradient: RGB[] = [{ ...start }];\n\n // eslint-disable-next-line no-loops/no-loops,no-plusplus\n for (let index = 1; index < steps; index++) {\n const color = interpolate<RGB>(step, start, index, RGBA_MAX);\n\n gradient.push({\n b: Math.floor(color.b as number),\n g: Math.floor(color.g as number),\n r: Math.floor(color.r as number),\n });\n }\n\n return gradient;\n};\n\nexport const interpolateHsv = (\n stop1: StopOutput,\n stop2: StopOutput,\n steps: number,\n mode: boolean | \"long\" | \"short\",\n // eslint-disable-next-line sonarjs/cognitive-complexity\n): RGB[] => {\n const start = rgbToHsv({ b: (stop1.color as number[])[2] as number, g: (stop1.color as number[])[1] as number, r: (stop1.color as number[])[0] as number });\n const end = rgbToHsv({ b: (stop2.color as number[])[2] as number, g: (stop2.color as number[])[1] as number, r: (stop2.color as number[])[0] as number });\n\n if (start.s === 0 || end.s === 0) {\n return interpolateRgb(stop1, stop2, steps);\n }\n\n let trigonometric: boolean;\n\n if (typeof mode === \"boolean\") {\n trigonometric = mode;\n } else {\n const trigShortest = (start.h < end.h && end.h - start.h < 180) || (start.h > end.h && start.h - end.h > 180);\n\n trigonometric = (mode === \"long\" && trigShortest) || (mode === \"short\" && !trigShortest);\n }\n\n const step = calculateStepSize(start, end, steps);\n const gradient: RGB[] = [\n {\n b: (stop1.color as [number, number, number])[2],\n g: (stop1.color as [number, number, number])[1],\n r: (stop1.color as [number, number, number])[0],\n },\n ];\n\n let diff: number;\n\n if ((start.h <= end.h && !trigonometric) || (start.h >= end.h && trigonometric)) {\n diff = end.h - start.h;\n } else if (trigonometric) {\n diff = 360 - end.h + start.h;\n } else {\n diff = 360 - start.h + end.h;\n }\n\n step.h = ((-1) ** (trigonometric ? 1 : 0) * Math.abs(diff)) / steps;\n\n // eslint-disable-next-line no-plusplus,no-loops/no-loops\n for (let index = 1; index < steps; index++) {\n const color = interpolate<HSVA>(step, start, index, HSV_MAX);\n\n gradient.push(hsvToRgb(color.h, color.s, color.v));\n }\n\n return gradient;\n};\n","import type { ColorizeType, ColorValueHex, CssColorName, RGB, StopInput, StopOutput } from \"../types\";\nimport { convertHexToRgb } from \"../util/convert-hex-to-rgb\";\nimport { colorNames } from \"./util/color-names\";\nimport { computeSubSteps } from \"./util/compute\";\nimport { interpolateHsv, interpolateRgb } from \"./util/interpolate\";\n\nexport class GradientBuilder {\n readonly #colorize: ColorizeType;\n\n public readonly stops: StopOutput[];\n\n // eslint-disable-next-line sonarjs/cognitive-complexity\n public constructor(colorize: ColorizeType, stops: (ColorValueHex | CssColorName | RGB | StopInput | [number, number, number])[]) {\n this.#colorize = colorize;\n this.stops = [];\n\n if (stops.length < 2) {\n throw new Error(\"Invalid number of stops (< 2)\");\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n const havingPositions = (stops[0] as StopInput).position !== undefined;\n\n let l = stops.length;\n let p = -1;\n let lastColorLess = false;\n\n // eslint-disable-next-line no-loops/no-loops,@typescript-eslint/naming-convention,no-restricted-syntax\n for (const [index, stop_] of stops.entries()) {\n let stop = {} as StopOutput;\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n const hasPosition = (stop_ as StopInput).position !== undefined;\n\n if (havingPositions !== hasPosition) {\n throw new Error(\"Cannot mix positioned and non-positioned color stops\");\n }\n\n if (hasPosition) {\n const stopInput = stop_ as StopInput;\n\n const hasColor = stopInput.color !== undefined;\n\n if (!hasColor && (lastColorLess || index === 0 || index === l - 1)) {\n throw new Error(\"Cannot define two consecutive position-only stops\");\n }\n\n lastColorLess = !hasColor;\n\n let color: [number, number, number] | undefined;\n\n if (hasColor) {\n if (Array.isArray(stopInput.color)) {\n color = stopInput.color as [number, number, number];\n } else if (typeof stopInput.color === \"string\") {\n color = stopInput.color.includes(\"#\") ? convertHexToRgb(stopInput.color as ColorValueHex) : colorNames[stopInput.color as CssColorName];\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n } else if ((stopInput.color as RGB).r !== undefined && (stopInput.color as RGB).g !== undefined && (stopInput.color as RGB).b) {\n color = [(stopInput.color as RGB).r, (stopInput.color as RGB).g, (stopInput.color as RGB).b];\n }\n }\n\n stop = {\n color,\n colorLess: !hasColor,\n position: stopInput.position,\n };\n\n if (stop.position < 0 || stop.position > 1) {\n throw new Error(\"Color stops positions must be between 0 and 1\");\n } else if (stop.position < p) {\n throw new Error(\"Color stops positions are not ordered\");\n }\n\n p = stop.position;\n } else if (Array.isArray(stop_)) {\n stop = {\n color: stop_ as [number, number, number],\n position: index / (l - 1),\n };\n } else if (typeof stop_ === \"string\") {\n stop = {\n color: stop_.includes(\"#\") ? convertHexToRgb(stop_ as ColorValueHex) : colorNames[stop_ as CssColorName],\n position: index / (l - 1),\n };\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n } else if ((stop_ as RGB).r !== undefined && (stop_ as RGB).g !== undefined && (stop_ as RGB).b !== undefined) {\n stop = {\n color: [(stop_ as RGB).r, (stop_ as RGB).g, (stop_ as RGB).b],\n position: index / (l - 1),\n };\n } else {\n throw new Error(\"Invalid color stop\");\n }\n\n this.stops.push(stop);\n }\n\n if ((this.stops[0] as StopOutput).position !== 0) {\n this.stops.unshift({\n color: (this.stops[0] as StopOutput).color,\n position: 0,\n });\n\n // eslint-disable-next-line no-plusplus\n l++;\n }\n\n if ((this.stops[l - 1] as StopOutput).position !== 1) {\n this.stops.push({\n color: (this.stops[l - 1] as StopOutput).color,\n position: 1,\n });\n }\n }\n\n public reverse(): GradientBuilder {\n const stops: StopInput[] = [];\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const stop of this.stops) {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const stop_ = { ...stop };\n\n stop_.position = 1 - stop.position;\n\n stops.push(stop_ as StopInput);\n }\n\n // eslint-disable-next-line etc/no-assign-mutated-array\n return new GradientBuilder(this.#colorize, stops.reverse());\n }\n\n public loop(): GradientBuilder {\n const stops1: StopInput[] = [];\n const stops2: StopInput[] = [];\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const stop of this.stops) {\n stops1.push({\n color: stop.color,\n position: (stop.position || 0) / 2,\n } as StopInput);\n }\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const stop of this.stops.slice(0, -1)) {\n stops2.push({\n color: stop.color,\n position: 1 - (stop.position || 0) / 2,\n } as StopInput);\n }\n\n // eslint-disable-next-line etc/no-assign-mutated-array\n return new GradientBuilder(this.#colorize, [...stops1, ...stops2.reverse()]);\n }\n\n public rgb(steps: number): ColorizeType[] {\n const subSteps = computeSubSteps(this.stops, steps);\n const gradient: ColorizeType[] = [];\n\n this.stops.forEach((stop, index) => {\n if (stop.colorLess) {\n const rgbs = interpolateRgb(this.stops[index - 1] as StopOutput, this.stops[index + 1] as StopOutput, 2);\n // eslint-disable-next-line no-param-reassign\n stop.color = [(rgbs[1] as RGB).r, (rgbs[1] as RGB).g, (rgbs[1] as RGB).b];\n }\n });\n\n // eslint-disable-next-line no-loops/no-loops,no-plusplus\n for (let index = 0, l = this.stops.length; index < l - 1; index++) {\n // eslint-disable-next-line security/detect-object-injection\n const rgbs = interpolateRgb(this.stops[index] as StopOutput, this.stops[index + 1] as StopOutput, subSteps[index] as number);\n\n gradient.splice(gradient.length, 0, ...rgbs.map((rgb) => this.#colorize.rgb(rgb.r, rgb.g, rgb.b)));\n }\n\n gradient.push(this.#colorize.rgb(...((this.stops.at(-1) as StopOutput).color as [number, number, number])));\n\n return gradient;\n }\n\n public hsv(steps: number, mode: boolean | \"long\" | \"short\" = false): ColorizeType[] {\n const subSteps = computeSubSteps(this.stops, steps);\n const gradient: ColorizeType[] = [];\n\n this.stops.forEach((stop, index) => {\n if (stop.colorLess) {\n const rgbs = interpolateHsv(this.stops[index - 1] as StopOutput, this.stops[index + 1] as StopOutput, 2, mode);\n // eslint-disable-next-line no-param-reassign\n stop.color = [(rgbs[1] as RGB).r, (rgbs[1] as RGB).g, (rgbs[1] as RGB).b];\n }\n });\n\n // eslint-disable-next-line no-plusplus,no-loops/no-loops\n for (let index = 0, l = this.stops.length; index < l - 1; index++) {\n // eslint-disable-next-line security/detect-object-injection\n const rgbs = interpolateHsv(this.stops[index] as StopOutput, this.stops[index + 1] as StopOutput, subSteps[index] as number, mode);\n\n gradient.splice(gradient.length, 0, ...rgbs.map((rgb) => this.#colorize.rgb(rgb.r, rgb.g, rgb.b)));\n }\n\n gradient.push(this.#colorize.rgb(...((this.stops.at(-1) as StopOutput).color as [number, number, number])));\n\n return gradient;\n }\n}\n","import ColorizeImpl from \"./colorize.server\";\nimport { GradientBuilder } from \"./gradient/gradient-builder\";\nimport type { ColorizeType, ColorValueHex, CssColorName, RGB, StopInput } from \"./types\";\n\nconst colorize: ColorizeType = new ColorizeImpl() as ColorizeType;\n\nconst forbiddenChars = /\\s/g;\n\nexport const gradient = (\n stops: (ColorValueHex | CssColorName | RGB | StopInput | [number, number, number])[],\n options?: {\n hsvSpin?: \"long\" | \"short\";\n interpolation?: \"hsv\" | \"rgb\";\n loop?: boolean;\n reverse?: boolean;\n },\n): ((string_: string) => string) => {\n const { hsvSpin = \"short\", interpolation = \"rgb\" } = options ?? {};\n\n let builder = new GradientBuilder(colorize, stops);\n\n if (options?.loop) {\n builder = builder.loop();\n } else if (options?.reverse) {\n builder = builder.reverse();\n }\n\n return (string_: string): string => {\n const colorsCount = Math.max(string_.replaceAll(forbiddenChars, \"\").length, builder.stops.length);\n const colors = interpolation === \"rgb\" ? builder.rgb(colorsCount) : builder.hsv(colorsCount, hsvSpin);\n\n let result = \"\";\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const s of string_) {\n if (forbiddenChars.test(s)) {\n result += s;\n } else {\n const color = colors.shift();\n\n result += (color as ColorizeType)(s);\n }\n }\n\n return result;\n };\n};\n\n// eslint-disable-next-line import/no-unused-modules\nexport const multilineGradient = (\n stops: (ColorValueHex | CssColorName | RGB | StopInput | [number, number, number])[],\n options?: {\n hsvSpin?: \"long\" | \"short\";\n interpolation?: \"hsv\" | \"rgb\";\n loop?: boolean;\n reverse?: boolean;\n },\n): ((string_: string) => string) => {\n const { hsvSpin = \"short\", interpolation = \"rgb\" } = options ?? {};\n\n let builder = new GradientBuilder(colorize, stops);\n\n if (options?.loop) {\n builder = builder.loop();\n } else if (options?.reverse) {\n builder = builder.reverse();\n }\n\n return (string_: string): string => {\n const lines = string_.split(\"\\n\");\n\n const colorsCount = Reflect.apply(Math.max, null, [...lines.map((l) => l.length), builder.stops.length]);\n const colors = interpolation === \"rgb\" ? builder.rgb(colorsCount) : builder.hsv(colorsCount, hsvSpin);\n\n const results: string[] = [];\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const line of lines) {\n const lineColors = [...colors];\n\n let lineResult = \"\";\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const l of line) {\n lineResult += forbiddenChars.test(l) ? l : (lineColors.shift() as ColorizeType)(l);\n }\n\n results.push(lineResult);\n }\n\n return results.join(\"\\n\");\n };\n};\n\n// eslint-disable-next-line import/no-unused-modules\nexport { GradientBuilder } from \"./gradient/gradient-builder\";\n"]}
|