@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.
@@ -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/hex-to-rgb.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","hexToRgb","hex","color","esc","open","close","createAnsi256","code","createBgAnsi256","createRgb","g","b","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","value","name","arguments_","colorize_server_default","colorNames","computeSubSteps","stops","steps","l","substeps","index","step","totalSubsteps","n","hsvToRgb","h","s","v","r","f","p","q","t","rgbToHsv","rdif","gdif","bdif","diff","diffc","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 { isStdoutColorSupported } from \"@visulima/is-ansi-color-supported\";\n\nimport type { AnsiColors, AnsiStyles, ColorData, ColorValueHex } from \"./types\";\nimport { clamp } from \"./util/clamp\";\nimport { hexToRgb } from \"./util/hex-to-rgb\";\n\nconst esc: (open: number | string, close: number | string) => ColorData =\n isStdoutColorSupported() > 0\n ? (open: number | string, close: number | string): ColorData => {\n return { close: \"\\u001B[\" + close + \"m\", open: \"\\u001B[\" + open + \"m\" };\n }\n : (): ColorData => {\n return { close: \"\", open: \"\" };\n };\n\nconst createAnsi256 = (code: number | string): ColorData => esc(\"38;5;\" + code, 39);\n\nconst createBgAnsi256 = (code: number | string): ColorData => esc(\"48;5;\" + code, 49);\n\nconst createRgb = (r: number | string, g: number | string, b: number | string): ColorData => esc(\"38;2;\" + r + \";\" + g + \";\" + b, 39);\n\nconst createBgRgb = (r: number | string, g: number | string, b: number | string): ColorData => esc(\"48;2;\" + r + \";\" + g + \";\" + b, 49);\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: { close: \"\", open: \"\" },\n};\n\nexport const baseColors: Required<Record<AnsiColors, ColorData>> = {\n bgBlack: esc(40, 49),\n bgBlackBright: esc(100, 49),\n bgBlue: esc(44, 49),\n bgBlueBright: esc(104, 49),\n bgCyan: esc(46, 49),\n bgCyanBright: esc(106, 49),\n bgGray: esc(100, 49), // US spelling alias for bgBlackBright\n bgGreen: esc(42, 49),\n bgGreenBright: esc(102, 49),\n bgGrey: esc(100, 49), // UK spelling alias for bgBlackBright\n bgMagenta: esc(45, 49),\n bgMagentaBright: esc(105, 49),\n bgRed: esc(41, 49),\n bgRedBright: esc(101, 49),\n bgWhite: esc(47, 49),\n bgWhiteBright: esc(107, 49),\n bgYellow: esc(43, 49),\n bgYellowBright: esc(103, 49),\n black: esc(30, 39),\n blackBright: esc(90, 39),\n blue: esc(34, 39),\n blueBright: esc(94, 39),\n cyan: esc(36, 39),\n cyanBright: esc(96, 39),\n gray: esc(90, 39), // US spelling alias for blackBright\n green: esc(32, 39),\n greenBright: esc(92, 39),\n grey: esc(90, 39), // UK spelling alias for blackBright\n magenta: esc(35, 39),\n magentaBright: esc(95, 39),\n red: esc(31, 39),\n redBright: esc(91, 39),\n white: esc(37, 39),\n whiteBright: esc(97, 39),\n yellow: esc(33, 39),\n yellowBright: esc(93, 39),\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: (hex) => createBgRgb(...hexToRgb(hex)),\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: (hex) => createRgb(...hexToRgb(hex)),\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 */\nexport const hexToRgb = (hex: ColorValueHex): [number, number, number] => {\n let color: string = hex.replace(\"#\", \"\");\n\n if (color.length === 3) {\n color = (color[0] as string) + (color[0] as string) + (color[1] as string) + (color[1] as string) + (color[2] as string) + (color[2] as string);\n } else if (color.length !== 6) {\n return [0, 0, 0];\n }\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const number_ = Number.parseInt(color, 16);\n\n // eslint-disable-next-line no-bitwise\n return [(number_ >> 16) & 255, (number_ >> 8) & 255, number_ & 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 * 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\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 { hexToRgb } from \"../util/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(\"#\") ? hexToRgb(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(\"#\") ? hexToRgb(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; 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"]}
package/dist/gradient.js CHANGED
@@ -1,10 +1,10 @@
1
1
  import { isStdoutColorSupported } from '@visulima/is-ansi-color-supported';
2
2
 
3
- function S({onlyFirst:r=!1}={}){let e=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(e,r?void 0:"g")}var g=(r,e,t)=>e>r?e:r>t?t:r;var f=r=>{let e=r.replace("#","");if(e.length===3)e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2];else if(e.length!==6)return [0,0,0];let t=Number.parseInt(e,16);return [t>>16&255,t>>8&255,t&255]};var l=isStdoutColorSupported()>0?(r,e)=>({close:"\x1B["+e+"m",open:"\x1B["+r+"m"}):()=>({close:"",open:""}),V=r=>l("38;5;"+r,39),E=r=>l("48;5;"+r,49),z=(r,e,t)=>l("38;2;"+r+";"+e+";"+t,39),M=(r,e,t)=>l("48;2;"+r+";"+e+";"+t,49),R={bold:l(1,22),dim:l(2,22),hidden:l(8,28),inverse:l(7,27),italic:l(3,23),overline:l(53,55),reset:l(0,0),strike:l(9,29),strikethrough:l(9,29),underline:l(4,24),visible:{close:"",open:""}},k={bgBlack:l(40,49),bgBlackBright:l(100,49),bgBlue:l(44,49),bgBlueBright:l(104,49),bgCyan:l(46,49),bgCyanBright:l(106,49),bgGray:l(100,49),bgGreen:l(42,49),bgGreenBright:l(102,49),bgGrey:l(100,49),bgMagenta:l(45,49),bgMagentaBright:l(105,49),bgRed:l(41,49),bgRedBright:l(101,49),bgWhite:l(47,49),bgWhiteBright:l(107,49),bgYellow:l(43,49),bgYellowBright:l(103,49),black:l(30,39),blackBright:l(90,39),blue:l(34,39),blueBright:l(94,39),cyan:l(36,39),cyanBright:l(96,39),gray:l(90,39),green:l(32,39),greenBright:l(92,39),grey:l(90,39),magenta:l(35,39),magentaBright:l(95,39),red:l(31,39),redBright:l(91,39),white:l(37,39),whiteBright:l(97,39),yellow:l(33,39),yellowBright:l(93,39)},w={bg:r=>E(g(r,0,255)),bgHex:r=>M(...f(r)),bgRgb:(r,e,t)=>M(g(r,0,255),g(e,0,255),g(t,0,255)),fg:r=>V(g(r,0,255)),hex:r=>z(...f(r)),rgb:(r,e,t)=>z(g(r,0,255),g(e,0,255),g(t,0,255))};var H=(r,e,t)=>{if(e==="")return r;let n=r.indexOf(e);if(n<0)return r;let o=e.length,s=0,i="";for(;~n;)i+=r.slice(s,n)+t,s=n+o,n=r.indexOf(e,s);return i+r.slice(s)};var h={},B=null,L=(r,e,t)=>{if(!r)return "";let n=r.raw==null?r+"":String.raw(r,...e);if(n.includes("\x1B"))for(let o=t;o;o=o.props)n=H(n,o.close,o.open);return n.includes(`
4
- `)&&(n=n.replace(/(\r*\n)/g,t.closeStack+"$1"+t.openStack)),t.openStack+n+t.closeStack},x=({props:r},{close:e,open:t})=>{let n=(r?.openStack??"")+t,o=e+(r?.closeStack??""),s=(i,...u)=>L(i,u,s.props);return Object.setPrototypeOf(s,B),s.props={close:e,closeStack:o,open:t,openStack:n,props:r},s.open=n,s.close=o,s},Z=function(){let r=e=>e+"";r.strip=e=>e.replaceAll(S(),"");for(let e in k)h[e]={get(){let t=x(this,k[e]);return Object.defineProperty(this,e,{value:t}),t}};for(let e in R)h[e]={get(){let t=x(this,R[e]);return Object.defineProperty(this,e,{value:t}),t}};return B=Object.defineProperties({},h),Object.setPrototypeOf(r,B),r};for(let r in w)h[r]={get(){return (...e)=>x(this,w[r](...e))}};h.ansi256=h.fg;h.bgAnsi256=h.bg;var I=Z;var v={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};var G=(r,e)=>{let t=r.length;if(e=Number.parseInt(e.toString(),10),Number.isNaN(e)||e<2)throw new Error("Invalid number of steps (< 2)");if(e<t)throw new Error("Number of steps cannot be inferior to number of stops");let n=[];for(let s=1;s<t;s++){let i=(e-1)*(r[s].position-r[s-1].position);n.push(Math.max(1,Math.round(i)));}let o=1;for(let s=t-1;s--;)o+=n[s];for(;o!==e;)if(o<e){let s=Math.min(...n);n[n.indexOf(s)]++,o++;}else {let s=Math.max(...n);n[n.indexOf(s)]--,o--;}return n};var P=(r,e,t)=>{let n=0,o=0,s=0,i=Math.floor(r/60),u=r/60-i,a=t*(1-e),p=t*(1-u*e),b=t*(1-(1-u)*e);return i%6===0?(n=t,o=b,s=a):i%6===1?(n=p,o=t,s=a):i%6===2?(n=a,o=t,s=b):i%6===3?(n=a,o=p,s=t):i%6===4?(n=b,o=a,s=t):i%6===5&&(n=t,o=a,s=p),{b:Math.round(s*255),g:Math.round(o*255),r:Math.round(n*255)}};var O=({b:r,g:e,r:t})=>{let n,o,s,i=0,u=0;t/=255,e/=255,r/=255;let a=Math.max(t,e,r),p=a-Math.min(t,e,r),b=c=>(a-c)/6/p+1/2;return p!==0&&(u=p/a,n=b(t),o=b(e),s=b(r),a===t?i=s-o:a===e?i=.3333333333333333+n-s:a===r&&(i=.6666666666666666+o-n),i<0?i+=1:i>1&&(i-=1)),{h:i*360,s:u,v:a}};var W={b:256,g:256,r:256},X={h:360,s:1,v:1},D=(r,e,t)=>{let n={};for(let o in r)Object.prototype.hasOwnProperty.call(r,o)&&(n[o]=t===0?0:(e[o]-r[o])/t);return n},N=(r,e,t,n)=>{let o={};for(let s in e)Object.prototype.hasOwnProperty.call(e,s)&&(o[s]=r[s]*t+e[s],o[s]=o[s]<0?o[s]+n[s]:n[s]===1?o[s]:o[s]%n[s]);return o},C=(r,e,t)=>{let n={b:r.color[2],g:r.color[1],r:r.color[0]},o={b:e.color[2],g:e.color[1],r:e.color[0]},s=D(n,o,t),i=[{...n}];for(let u=1;u<t;u++){let a=N(s,n,u,W);i.push({b:Math.floor(a.b),g:Math.floor(a.g),r:Math.floor(a.r)});}return i},A=(r,e,t,n)=>{let o=O({b:r.color[2],g:r.color[1],r:r.color[0]}),s=O({b:e.color[2],g:e.color[1],r:e.color[0]});if(o.s===0||s.s===0)return C(r,e,t);let i;if(typeof n=="boolean")i=n;else {let b=o.h<s.h&&s.h-o.h<180||o.h>s.h&&o.h-s.h>180;i=n==="long"&&b||n==="short"&&!b;}let u=D(o,s,t),a=[{b:r.color[2],g:r.color[1],r:r.color[0]}],p;o.h<=s.h&&!i||o.h>=s.h&&i?p=s.h-o.h:i?p=360-s.h+o.h:p=360-o.h+s.h,u.h=(-1)**(i?1:0)*Math.abs(p)/t;for(let b=1;b<t;b++){let c=N(u,o,b,X);a.push(P(c.h,c.s,c.v));}return a};var y=class r{#e;stops;constructor(e,t){if(this.#e=e,this.stops=[],t.length<2)throw new Error("Invalid number of stops (< 2)");let n=t[0].position!==void 0,o=t.length,s=-1,i=!1;for(let[u,a]of t.entries()){let p={},b=a.position!==void 0;if(n!==b)throw new Error("Cannot mix positioned and non-positioned color stops");if(b){let c=a,d=c.color!==void 0;if(!d&&(i||u===0||u===o-1))throw new Error("Cannot define two consecutive position-only stops");i=!d;let m;if(d&&(Array.isArray(c.color)?m=c.color:typeof c.color=="string"?m=c.color.includes("#")?f(c.color):v[c.color]:c.color.r!==void 0&&c.color.g!==void 0&&c.color.b&&(m=[c.color.r,c.color.g,c.color.b])),p={color:m,colorLess:!d,position:c.position},p.position<0||p.position>1)throw new Error("Color stops positions must be between 0 and 1");if(p.position<s)throw new Error("Color stops positions are not ordered");s=p.position;}else if(Array.isArray(a))p={color:a,position:u/(o-1)};else if(typeof a=="string")p={color:a.includes("#")?f(a):v[a],position:u/(o-1)};else if(a.r!==void 0&&a.g!==void 0&&a.b!==void 0)p={color:[a.r,a.g,a.b],position:u/(o-1)};else throw new Error("Invalid color stop");this.stops.push(p);}this.stops[0].position!==0&&(this.stops.unshift({color:this.stops[0].color,position:0}),o++),this.stops[o-1].position!==1&&this.stops.push({color:this.stops[o-1].color,position:1});}reverse(){let e=[];for(let t of this.stops){let n={...t};n.position=1-t.position,e.push(n);}return new r(this.#e,e.reverse())}loop(){let e=[],t=[];for(let n of this.stops)e.push({color:n.color,position:(n.position||0)/2});for(let n of this.stops.slice(0,-1))t.push({color:n.color,position:1-(n.position||0)/2});return new r(this.#e,[...e,...t.reverse()])}rgb(e){let t=G(this.stops,e),n=[];this.stops.forEach((o,s)=>{if(o.colorLess){let i=C(this.stops[s-1],this.stops[s+1],2);o.color=[i[1].r,i[1].g,i[1].b];}});for(let o=0,s=this.stops.length;o<s-1;o++){let i=C(this.stops[o],this.stops[o+1],t[o]);n.splice(n.length,0,...i.map(u=>this.#e.rgb(u.r,u.g,u.b)));}return n.push(this.#e.rgb(...this.stops.at(-1).color)),n}hsv(e,t=!1){let n=G(this.stops,e),o=[];this.stops.forEach((s,i)=>{if(s.colorLess){let u=A(this.stops[i-1],this.stops[i+1],2,t);s.color=[u[1].r,u[1].g,u[1].b];}});for(let s=0,i=this.stops.length;s<i-1;s++){let u=A(this.stops[s],this.stops[s+1],n[s],t);o.splice(o.length,0,...u.map(a=>this.#e.rgb(a.r,a.g,a.b)));}return o.push(this.#e.rgb(...this.stops.at(-1).color)),o}};var j=new I,T=/\s/g,ye=(r,e)=>{let{hsvSpin:t="short",interpolation:n="rgb"}=e??{},o=new y(j,r);return e?.loop?o=o.loop():e?.reverse&&(o=o.reverse()),s=>{let i=Math.max(s.replaceAll(T,"").length,o.stops.length),u=n==="rgb"?o.rgb(i):o.hsv(i,t),a="";for(let p of s)if(T.test(p))a+=p;else {let b=u.shift();a+=b(p);}return a}},Ce=(r,e)=>{let{hsvSpin:t="short",interpolation:n="rgb"}=e??{},o=new y(j,r);return e?.loop?o=o.loop():e?.reverse&&(o=o.reverse()),s=>{let i=s.split(`
5
- `),u=Reflect.apply(Math.max,null,[...i.map(b=>b.length),o.stops.length]),a=n==="rgb"?o.rgb(u):o.hsv(u,t),p=[];for(let b of i){let c=[...a],d="";for(let m of b)d+=T.test(m)?m:c.shift()(m);p.push(d);}return p.join(`
3
+ function B({onlyFirst:r=!1}={}){let e=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(e,r?void 0:"g")}var h=(r,e,o)=>e>r?e:r>o?o:r;var S=r=>{let[,e]=/([a-f\d]{3,6})/i.exec(r)??[],o=e?e.length:0;if(o===3)e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2];else if(o!==6)return [0,0,0];let n=Number.parseInt(e,16);return [n>>16&255,n>>8&255,n&255]};var v=(r,e,o)=>r===e&&e===o?r<8?16:r>248?231:Math.round((r-8)/247*24)+232:16+36*Math.round(r/51)+6*Math.round(e/51)+Math.round(o/51),R=r=>{let e,o,n;if(r<8)return 30+r;if(r<16)return 90+(r-8);if(r>=232)e=o=n=((r-232)*10+8)/255;else {r-=16;let i=r%36;e=Math.floor(r/36)/5,o=Math.floor(i/6)/5,n=i%6/5;}let t=Math.max(e,o,n)*2;if(t===0)return 30;let s=30+(Math.round(n)<<2|Math.round(o)<<1|Math.round(e));return t===2?s+60:s},G=(r,e,o)=>R(v(r,e,o));var c=39,m=49,T=isStdoutColorSupported(),Z={close:"",open:""},l=T>0?(r,e)=>({close:"\x1B["+e+"m",open:"\x1B["+r+"m"}):()=>Z,L=r=>(e,o,n)=>r(v(Number(e),Number(o),Number(n))),E=r=>e=>{let[o,n,t]=S(e);return r(o,n,t)},A=r=>l("38;5;"+r,c),O=r=>l("48;5;"+r,m),x=(r,e,o)=>l("38;2;"+r+";"+e+";"+o,c),k=(r,e,o)=>l("48;2;"+r+";"+e+";"+o,m);T===1?(A=r=>l(R(Number(r)),c),O=r=>l(R(Number(r))+10,m),x=(r,e,o)=>l(G(Number(r),Number(e),Number(o)),c),k=(r,e,o)=>l(G(Number(r),Number(e),Number(o))+10,m)):T===2&&(x=L(A),k=L(O));var M={bold:l(1,22),dim:l(2,22),hidden:l(8,28),inverse:l(7,27),italic:l(3,23),overline:l(53,55),reset:l(0,0),strike:l(9,29),strikethrough:l(9,29),underline:l(4,24),visible:Z},z={bgBlack:l(40,m),bgBlackBright:l(100,m),bgBlue:l(44,m),bgBlueBright:l(104,m),bgCyan:l(46,m),bgCyanBright:l(106,m),bgGray:l(100,m),bgGreen:l(42,m),bgGreenBright:l(102,m),bgGrey:l(100,m),bgMagenta:l(45,m),bgMagentaBright:l(105,m),bgRed:l(41,m),bgRedBright:l(101,m),bgWhite:l(47,m),bgWhiteBright:l(107,m),bgYellow:l(43,m),bgYellowBright:l(103,m),black:l(30,c),blackBright:l(90,c),blue:l(34,c),blueBright:l(94,c),cyan:l(36,c),cyanBright:l(96,c),gray:l(90,c),green:l(32,c),greenBright:l(92,c),grey:l(90,c),magenta:l(35,c),magentaBright:l(95,c),red:l(31,c),redBright:l(91,c),white:l(37,c),whiteBright:l(97,c),yellow:l(33,c),yellowBright:l(93,c)},H={bg:r=>O(h(r,0,255)),bgHex:E(k),bgRgb:(r,e,o)=>k(h(r,0,255),h(e,0,255),h(o,0,255)),fg:r=>A(h(r,0,255)),hex:E(x),rgb:(r,e,o)=>x(h(r,0,255),h(e,0,255),h(o,0,255))};var F=(r,e,o)=>{if(e==="")return r;let n=r.indexOf(e);if(n<0)return r;let t=e.length,s=0,i="";for(;~n;)i+=r.slice(s,n)+o,s=n+t,n=r.indexOf(e,s);return i+r.slice(s)};var d={},N=null,Q=(r,e,o)=>{if(!r)return "";let n=r.raw==null?r+"":String.raw(r,...e);if(n.includes("\x1B"))for(let t=o;t;t=t.props)n=F(n,t.close,t.open);return n.includes(`
4
+ `)&&(n=n.replace(/(\r*\n)/g,o.closeStack+"$1"+o.openStack)),o.openStack+n+o.closeStack},I=({props:r},{close:e,open:o})=>{let n=(r?.openStack??"")+o,t=e+(r?.closeStack??""),s=(i,...u)=>Q(i,u,s.props);return Object.setPrototypeOf(s,N),s.props={close:e,closeStack:t,open:o,openStack:n,props:r},s.open=n,s.close=t,s},U=function(){let r=e=>e+"";r.strip=e=>e.replaceAll(B(),"");for(let e in z)d[e]={get(){let o=I(this,z[e]);return Object.defineProperty(this,e,{value:o}),o}};for(let e in M)d[e]={get(){let o=I(this,M[e]);return Object.defineProperty(this,e,{value:o}),o}};return N=Object.defineProperties({},d),Object.setPrototypeOf(r,N),r};for(let r in H)d[r]={get(){return (...e)=>I(this,H[r](...e))}};d.ansi256=d.fg;d.bgAnsi256=d.bg;var W=U;var D={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};var P=(r,e)=>{let o=r.length;if(e=Number.parseInt(e.toString(),10),Number.isNaN(e)||e<2)throw new Error("Invalid number of steps (< 2)");if(e<o)throw new Error("Number of steps cannot be inferior to number of stops");let n=[];for(let s=1;s<o;s++){let i=(e-1)*(r[s].position-r[s-1].position);n.push(Math.max(1,Math.round(i)));}let t=1;for(let s=o-1;s--;)t+=n[s];for(;t!==e;)if(t<e){let s=Math.min(...n);n[n.indexOf(s)]++,t++;}else {let s=Math.max(...n);n[n.indexOf(s)]--,t--;}return n};var X=(r,e,o)=>{let n=0,t=0,s=0,i=Math.floor(r/60),u=r/60-i,a=o*(1-e),p=o*(1-u*e),b=o*(1-(1-u)*e);return i%6===0?(n=o,t=b,s=a):i%6===1?(n=p,t=o,s=a):i%6===2?(n=a,t=o,s=b):i%6===3?(n=a,t=p,s=o):i%6===4?(n=b,t=a,s=o):i%6===5&&(n=o,t=a,s=p),{b:Math.round(s*255),g:Math.round(t*255),r:Math.round(n*255)}};var j=({b:r,g:e,r:o})=>{let n,t,s,i=0,u=0;o/=255,e/=255,r/=255;let a=Math.max(o,e,r),p=a-Math.min(o,e,r),b=g=>(a-g)/6/p+1/2;return p!==0&&(u=p/a,n=b(o),t=b(e),s=b(r),a===o?i=s-t:a===e?i=.3333333333333333+n-s:a===r&&(i=.6666666666666666+t-n),i<0?i+=1:i>1&&(i-=1)),{h:i*360,s:u,v:a}};var _={b:256,g:256,r:256},ee={h:360,s:1,v:1},Y=(r,e,o)=>{let n={};for(let t in r)Object.prototype.hasOwnProperty.call(r,t)&&(n[t]=o===0?0:(e[t]-r[t])/o);return n},$=(r,e,o,n)=>{let t={};for(let s in e)Object.prototype.hasOwnProperty.call(e,s)&&(t[s]=r[s]*o+e[s],t[s]=t[s]<0?t[s]+n[s]:n[s]===1?t[s]:t[s]%n[s]);return t},w=(r,e,o)=>{let n={b:r.color[2],g:r.color[1],r:r.color[0]},t={b:e.color[2],g:e.color[1],r:e.color[0]},s=Y(n,t,o),i=[{...n}];for(let u=1;u<o;u++){let a=$(s,n,u,_);i.push({b:Math.floor(a.b),g:Math.floor(a.g),r:Math.floor(a.r)});}return i},V=(r,e,o,n)=>{let t=j({b:r.color[2],g:r.color[1],r:r.color[0]}),s=j({b:e.color[2],g:e.color[1],r:e.color[0]});if(t.s===0||s.s===0)return w(r,e,o);let i;if(typeof n=="boolean")i=n;else {let b=t.h<s.h&&s.h-t.h<180||t.h>s.h&&t.h-s.h>180;i=n==="long"&&b||n==="short"&&!b;}let u=Y(t,s,o),a=[{b:r.color[2],g:r.color[1],r:r.color[0]}],p;t.h<=s.h&&!i||t.h>=s.h&&i?p=s.h-t.h:i?p=360-s.h+t.h:p=360-t.h+s.h,u.h=(-1)**(i?1:0)*Math.abs(p)/o;for(let b=1;b<o;b++){let g=$(u,t,b,ee);a.push(X(g.h,g.s,g.v));}return a};var C=class r{#e;stops;constructor(e,o){if(this.#e=e,this.stops=[],o.length<2)throw new Error("Invalid number of stops (< 2)");let n=o[0].position!==void 0,t=o.length,s=-1,i=!1;for(let[u,a]of o.entries()){let p={},b=a.position!==void 0;if(n!==b)throw new Error("Cannot mix positioned and non-positioned color stops");if(b){let g=a,y=g.color!==void 0;if(!y&&(i||u===0||u===t-1))throw new Error("Cannot define two consecutive position-only stops");i=!y;let f;if(y&&(Array.isArray(g.color)?f=g.color:typeof g.color=="string"?f=g.color.includes("#")?S(g.color):D[g.color]:g.color.r!==void 0&&g.color.g!==void 0&&g.color.b&&(f=[g.color.r,g.color.g,g.color.b])),p={color:f,colorLess:!y,position:g.position},p.position<0||p.position>1)throw new Error("Color stops positions must be between 0 and 1");if(p.position<s)throw new Error("Color stops positions are not ordered");s=p.position;}else if(Array.isArray(a))p={color:a,position:u/(t-1)};else if(typeof a=="string")p={color:a.includes("#")?S(a):D[a],position:u/(t-1)};else if(a.r!==void 0&&a.g!==void 0&&a.b!==void 0)p={color:[a.r,a.g,a.b],position:u/(t-1)};else throw new Error("Invalid color stop");this.stops.push(p);}this.stops[0].position!==0&&(this.stops.unshift({color:this.stops[0].color,position:0}),t++),this.stops[t-1].position!==1&&this.stops.push({color:this.stops[t-1].color,position:1});}reverse(){let e=[];for(let o of this.stops){let n={...o};n.position=1-o.position,e.push(n);}return new r(this.#e,e.reverse())}loop(){let e=[],o=[];for(let n of this.stops)e.push({color:n.color,position:(n.position||0)/2});for(let n of this.stops.slice(0,-1))o.push({color:n.color,position:1-(n.position||0)/2});return new r(this.#e,[...e,...o.reverse()])}rgb(e){let o=P(this.stops,e),n=[];this.stops.forEach((t,s)=>{if(t.colorLess){let i=w(this.stops[s-1],this.stops[s+1],2);t.color=[i[1].r,i[1].g,i[1].b];}});for(let t=0,s=this.stops.length;t<s-1;t++){let i=w(this.stops[t],this.stops[t+1],o[t]);n.splice(n.length,0,...i.map(u=>this.#e.rgb(u.r,u.g,u.b)));}return n.push(this.#e.rgb(...this.stops.at(-1).color)),n}hsv(e,o=!1){let n=P(this.stops,e),t=[];this.stops.forEach((s,i)=>{if(s.colorLess){let u=V(this.stops[i-1],this.stops[i+1],2,o);s.color=[u[1].r,u[1].g,u[1].b];}});for(let s=0,i=this.stops.length;s<i-1;s++){let u=V(this.stops[s],this.stops[s+1],n[s],o);t.splice(t.length,0,...u.map(a=>this.#e.rgb(a.r,a.g,a.b)));}return t.push(this.#e.rgb(...this.stops.at(-1).color)),t}};var J=new W,q=/\s/g,Ae=(r,e)=>{let{hsvSpin:o="short",interpolation:n="rgb"}=e??{},t=new C(J,r);return e?.loop?t=t.loop():e?.reverse&&(t=t.reverse()),s=>{let i=Math.max(s.replaceAll(q,"").length,t.stops.length),u=n==="rgb"?t.rgb(i):t.hsv(i,o),a="";for(let p of s)if(q.test(p))a+=p;else {let b=u.shift();a+=b(p);}return a}},Oe=(r,e)=>{let{hsvSpin:o="short",interpolation:n="rgb"}=e??{},t=new C(J,r);return e?.loop?t=t.loop():e?.reverse&&(t=t.reverse()),s=>{let i=s.split(`
5
+ `),u=Reflect.apply(Math.max,null,[...i.map(b=>b.length),t.stops.length]),a=n==="rgb"?t.rgb(u):t.hsv(u,o),p=[];for(let b of i){let g=[...a],y="";for(let f of b)y+=q.test(f)?f:g.shift()(f);p.push(y);}return p.join(`
6
6
  `)}};
7
7
 
8
- export { y as GradientBuilder, ye as gradient, Ce as multilineGradient };
8
+ export { C as GradientBuilder, Ae as gradient, Oe as multilineGradient };
9
9
  //# sourceMappingURL=out.js.map
10
10
  //# sourceMappingURL=gradient.js.map