chartjs-plugin-autocolors 0.4.3 → 0.5.1

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,5 +1,5 @@
1
1
  /*!
2
- * chartjs-plugin-autocolors v0.4.3
2
+ * chartjs-plugin-autocolors v0.5.1
3
3
  * https://github.com/kurkle/chartjs-plugin-autocolors#readme
4
4
  * (c) 2026 Jukka Kurkela <jukka.kurkela@gmail.com>
5
5
  * Released under the MIT license
@@ -79,7 +79,7 @@ function* colorGen(repeat = 1) {
79
79
  function setColors(dataset, background, border, mode) {
80
80
  if (mode === 'data') {
81
81
  dataset.backgroundColor = background;
82
- dataset.border = border;
82
+ dataset.borderColor = border;
83
83
  } else {
84
84
  dataset.backgroundColor = dataset.backgroundColor || background;
85
85
  dataset.borderColor = dataset.borderColor || border;
@@ -1 +1 @@
1
- {"version":3,"file":"chartjs-plugin-autocolors.cjs","sources":["../node_modules/@kurkle/color/dist/color.esm.js","../src/index.js"],"sourcesContent":["/*!\n * @kurkle/color v0.0.0-development\n * https://github.com/kurkle/color#readme\n * (c) 2026 Jukka Kurkela\n * Released under the MIT License\n */\n\n// src/byte.ts\nfunction round(v) {\n return v + 0.5 | 0;\n}\nvar lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n return lim(round(v * 2.55), 0, 255);\n}\nfunction b2p(v) {\n return lim(round(v / 2.55), 0, 100);\n}\nfunction n2b(v) {\n return lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n return lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n return lim(round(v * 100), 0, 100);\n}\n\n// src/hex.ts\nvar map = {\n 0: 0,\n 1: 1,\n 2: 2,\n 3: 3,\n 4: 4,\n 5: 5,\n 6: 6,\n 7: 7,\n 8: 8,\n 9: 9,\n A: 10,\n a: 10,\n B: 11,\n b: 11,\n C: 12,\n c: 12,\n D: 13,\n d: 13,\n E: 14,\n e: 14,\n F: 15,\n f: 15\n};\nvar hex = [...\"0123456789ABCDEF\"];\nvar h1 = (b) => hex[b & 15];\nvar h2 = (b) => hex[(b & 240) >> 4] + hex[b & 15];\nvar eq = (b) => (b & 240) >> 4 === (b & 15);\nvar isShort = (v) => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n if (str[0] !== \"#\") {\n return;\n }\n const len = str.length;\n if (len === 4 || len === 5) {\n return {\n a: len === 5 ? map[str[4]] << 4 | map[str[4]] : 255,\n b: map[str[3]] << 4 | map[str[3]],\n g: map[str[2]] << 4 | map[str[2]],\n r: map[str[1]] << 4 | map[str[1]]\n };\n }\n if (len === 7 || len === 9) {\n return {\n a: len === 9 ? map[str[7]] << 4 | map[str[8]] : 255,\n b: map[str[5]] << 4 | map[str[6]],\n g: map[str[3]] << 4 | map[str[4]],\n r: map[str[1]] << 4 | map[str[2]]\n };\n }\n}\nvar alpha = (a, f) => a < 255 ? f(a) : \"\";\nfunction hexString(v) {\n const f = v && isShort(v) ? h1 : h2;\n return v ? `#${f(v.r)}${f(v.g)}${f(v.b)}${alpha(v.a, f)}` : void 0;\n}\n\n// src/hue.ts\nvar HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n return [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n return [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n const rgb = hsl2rgbn(h, 1, 0.5);\n let i;\n if (w + b > 1) {\n i = 1 / (w + b);\n w *= i;\n b *= i;\n }\n for (i = 0; i < 3; i++) {\n rgb[i] *= 1 - w - b;\n rgb[i] += w;\n }\n return rgb;\n}\nfunction hueValue(r, g, b, d, max) {\n if (r === max) {\n return (g - b) / d + (g < b ? 6 : 0);\n }\n if (g === max) {\n return (b - r) / d + 2;\n }\n return (r - g) / d + 4;\n}\nfunction rgb2hsl(v) {\n const range = 255;\n const r = v.r / range;\n const g = v.g / range;\n const b = v.b / range;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n let h = 0;\n let s = 0;\n let d;\n if (max !== min) {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = hueValue(r, g, b, d, max);\n h = h * 60 + 0.5;\n }\n return [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n return (Array.isArray(a) ? f(a[0], a[1], a[2]) : f(a, b, c)).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n return calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n return calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n return calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n return (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n const m = HUE_RE.exec(str);\n let a = 255;\n let v;\n if (!m) {\n return void 0;\n }\n if (m[5] !== void 0) {\n a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n }\n const h = hue(+m[2]);\n const p1 = +m[3] / 100;\n const p2 = +m[4] / 100;\n if (m[1] === \"hwb\") {\n v = hwb2rgb(h, p1, p2);\n } else if (m[1] === \"hsv\") {\n v = hsv2rgb(h, p1, p2);\n } else {\n v = hsl2rgb(h, p1, p2);\n }\n return {\n a,\n b: v[2],\n g: v[1],\n r: v[0]\n };\n}\nfunction rotate(v, deg) {\n const h = rgb2hsl(v);\n h[0] = hue(h[0] + deg);\n const rgb = hsl2rgb(h);\n v.r = rgb[0];\n v.g = rgb[1];\n v.b = rgb[2];\n}\nfunction hslString(v) {\n if (!v) {\n return void 0;\n }\n const a = rgb2hsl(v);\n const h = a[0];\n const s = n2p(a[1]);\n const l = n2p(a[2]);\n return v.a < 255 ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})` : `hsl(${h}, ${s}%, ${l}%)`;\n}\n\n// src/packed.ts\nvar map2 = {\n x: \"dark\",\n Z: \"light\",\n Y: \"re\",\n X: \"blu\",\n W: \"gr\",\n V: \"medium\",\n U: \"slate\",\n A: \"ee\",\n T: \"ol\",\n S: \"or\",\n B: \"ra\",\n C: \"lateg\",\n D: \"ights\",\n R: \"in\",\n Q: \"turquois\",\n E: \"hi\",\n P: \"ro\",\n O: \"al\",\n N: \"le\",\n M: \"de\",\n L: \"yello\",\n F: \"en\",\n K: \"ch\",\n G: \"arks\",\n H: \"ea\",\n I: \"ightg\",\n J: \"wh\"\n};\nvar names = {\n OiceXe: \"f0f8ff\",\n antiquewEte: \"faebd7\",\n aqua: \"ffff\",\n aquamarRe: \"7fffd4\",\n azuY: \"f0ffff\",\n beige: \"f5f5dc\",\n bisque: \"ffe4c4\",\n black: \"0\",\n blanKedOmond: \"ffebcd\",\n Xe: \"ff\",\n XeviTet: \"8a2be2\",\n bPwn: \"a52a2a\",\n burlywood: \"deb887\",\n caMtXe: \"5f9ea0\",\n KartYuse: \"7fff00\",\n KocTate: \"d2691e\",\n cSO: \"ff7f50\",\n cSnflowerXe: \"6495ed\",\n cSnsilk: \"fff8dc\",\n crimson: \"dc143c\",\n cyan: \"ffff\",\n xXe: \"8b\",\n xcyan: \"8b8b\",\n xgTMnPd: \"b8860b\",\n xWay: \"a9a9a9\",\n xgYF: \"6400\",\n xgYy: \"a9a9a9\",\n xkhaki: \"bdb76b\",\n xmagFta: \"8b008b\",\n xTivegYF: \"556b2f\",\n xSange: \"ff8c00\",\n xScEd: \"9932cc\",\n xYd: \"8b0000\",\n xsOmon: \"e9967a\",\n xsHgYF: \"8fbc8f\",\n xUXe: \"483d8b\",\n xUWay: \"2f4f4f\",\n xUgYy: \"2f4f4f\",\n xQe: \"ced1\",\n xviTet: \"9400d3\",\n dAppRk: \"ff1493\",\n dApskyXe: \"bfff\",\n dimWay: \"696969\",\n dimgYy: \"696969\",\n dodgerXe: \"1e90ff\",\n fiYbrick: \"b22222\",\n flSOwEte: \"fffaf0\",\n foYstWAn: \"228b22\",\n fuKsia: \"ff00ff\",\n gaRsbSo: \"dcdcdc\",\n ghostwEte: \"f8f8ff\",\n gTd: \"ffd700\",\n gTMnPd: \"daa520\",\n Way: \"808080\",\n gYF: \"8000\",\n gYFLw: \"adff2f\",\n gYy: \"808080\",\n honeyMw: \"f0fff0\",\n hotpRk: \"ff69b4\",\n RdianYd: \"cd5c5c\",\n Rdigo: \"4b0082\",\n ivSy: \"fffff0\",\n khaki: \"f0e68c\",\n lavFMr: \"e6e6fa\",\n lavFMrXsh: \"fff0f5\",\n lawngYF: \"7cfc00\",\n NmoncEffon: \"fffacd\",\n ZXe: \"add8e6\",\n ZcSO: \"f08080\",\n Zcyan: \"e0ffff\",\n ZgTMnPdLw: \"fafad2\",\n ZWay: \"d3d3d3\",\n ZgYF: \"90ee90\",\n ZgYy: \"d3d3d3\",\n ZpRk: \"ffb6c1\",\n ZsOmon: \"ffa07a\",\n ZsHgYF: \"20b2aa\",\n ZskyXe: \"87cefa\",\n ZUWay: \"778899\",\n ZUgYy: \"778899\",\n ZstAlXe: \"b0c4de\",\n ZLw: \"ffffe0\",\n lime: \"ff00\",\n limegYF: \"32cd32\",\n lRF: \"faf0e6\",\n magFta: \"ff00ff\",\n maPon: \"800000\",\n VaquamarRe: \"66cdaa\",\n VXe: \"cd\",\n VScEd: \"ba55d3\",\n VpurpN: \"9370db\",\n VsHgYF: \"3cb371\",\n VUXe: \"7b68ee\",\n VsprRggYF: \"fa9a\",\n VQe: \"48d1cc\",\n VviTetYd: \"c71585\",\n midnightXe: \"191970\",\n mRtcYam: \"f5fffa\",\n mistyPse: \"ffe4e1\",\n moccasR: \"ffe4b5\",\n navajowEte: \"ffdead\",\n navy: \"80\",\n Tdlace: \"fdf5e6\",\n Tive: \"808000\",\n TivedBb: \"6b8e23\",\n Sange: \"ffa500\",\n SangeYd: \"ff4500\",\n ScEd: \"da70d6\",\n pOegTMnPd: \"eee8aa\",\n pOegYF: \"98fb98\",\n pOeQe: \"afeeee\",\n pOeviTetYd: \"db7093\",\n papayawEp: \"ffefd5\",\n pHKpuff: \"ffdab9\",\n peru: \"cd853f\",\n pRk: \"ffc0cb\",\n plum: \"dda0dd\",\n powMrXe: \"b0e0e6\",\n purpN: \"800080\",\n YbeccapurpN: \"663399\",\n Yd: \"ff0000\",\n Psybrown: \"bc8f8f\",\n PyOXe: \"4169e1\",\n saddNbPwn: \"8b4513\",\n sOmon: \"fa8072\",\n sandybPwn: \"f4a460\",\n sHgYF: \"2e8b57\",\n sHshell: \"fff5ee\",\n siFna: \"a0522d\",\n silver: \"c0c0c0\",\n skyXe: \"87ceeb\",\n UXe: \"6a5acd\",\n UWay: \"708090\",\n UgYy: \"708090\",\n snow: \"fffafa\",\n sprRggYF: \"ff7f\",\n stAlXe: \"4682b4\",\n tan: \"d2b48c\",\n teO: \"8080\",\n tEstN: \"d8bfd8\",\n tomato: \"ff6347\",\n Qe: \"40e0d0\",\n viTet: \"ee82ee\",\n JHt: \"f5deb3\",\n wEte: \"ffffff\",\n wEtesmoke: \"f5f5f5\",\n Lw: \"ffff00\",\n LwgYF: \"9acd32\"\n};\nfunction unpack() {\n const unpacked = {};\n const keys = Object.keys(names);\n const tkeys = Object.keys(map2);\n let i, j, k, ok, nk;\n for (i = 0; i < keys.length; i++) {\n ok = nk = keys[i];\n for (j = 0; j < tkeys.length; j++) {\n k = tkeys[j];\n nk = nk.replace(k, map2[k]);\n }\n k = parseInt(names[ok], 16);\n unpacked[nk] = [k >> 16 & 255, k >> 8 & 255, k & 255];\n }\n return unpacked;\n}\n\n// src/names.ts\nvar names2;\nfunction nameParse(str) {\n if (!names2) {\n names2 = unpack();\n names2.transparent = [0, 0, 0, 0];\n }\n const a = names2[str.toLowerCase()];\n return a && {\n a: a.length === 4 ? a[3] : 255,\n b: a[2],\n g: a[1],\n r: a[0]\n };\n}\n\n// src/rgb.ts\nvar RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n const m = RGB_RE.exec(str);\n let a = 255;\n let r, g, b;\n if (!m) {\n return void 0;\n }\n if (m[7] !== void 0) {\n const v = +m[7];\n a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\n }\n r = +m[1];\n g = +m[3];\n b = +m[5];\n r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));\n g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));\n b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));\n return {\n a,\n b,\n g,\n r\n };\n}\nfunction rgbString(v) {\n return v && (v.a < 255 ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})` : `rgb(${v.r}, ${v.g}, ${v.b})`);\n}\n\n// src/srgb.ts\nvar to = (v) => v <= 31308e-7 ? v * 12.92 : v ** (1 / 2.4) * 1.055 - 0.055;\nvar from = (v) => v <= 0.04045 ? v / 12.92 : ((v + 0.055) / 1.055) ** 2.4;\nfunction interpolate(rgb1, rgb2, t) {\n const r = from(b2n(rgb1.r));\n const g = from(b2n(rgb1.g));\n const b = from(b2n(rgb1.b));\n return {\n a: rgb1.a + t * (rgb2.a - rgb1.a),\n b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n r: n2b(to(r + t * (from(b2n(rgb2.r)) - r)))\n };\n}\n\n// src/color.ts\nvar COMMENT_REGEXP = /\\/\\*[\\s\\S]*?\\*\\//g;\nfunction modHSL(v, i, ratio) {\n if (v) {\n let tmp = rgb2hsl(v);\n tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n tmp = hsl2rgb(tmp);\n v.r = tmp[0];\n v.g = tmp[1];\n v.b = tmp[2];\n }\n}\nfunction clone(v, proto) {\n return v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n let v = { a: 255, b: 0, g: 0, r: 0 };\n if (Array.isArray(input)) {\n if (input.length >= 3) {\n v = { a: 255, b: input[2], g: input[1], r: input[0] };\n if (input.length > 3) {\n v.a = n2b(input[3]);\n }\n }\n } else {\n v = clone(input, { a: 1, b: 0, g: 0, r: 0 });\n v.a = n2b(v.a);\n }\n return v;\n}\nfunction functionParse(str) {\n const clean = str.replace(COMMENT_REGEXP, \"\").trim();\n if (clean.charAt(0) === \"r\") {\n return rgbParse(clean);\n }\n return hueParse(clean);\n}\nvar Color = class _Color {\n /**\n * constructor\n * @param input\n */\n constructor(input) {\n if (input instanceof _Color) {\n return input;\n }\n const type = typeof input;\n let v;\n if (type === \"object\") {\n v = fromObject(input);\n } else if (type === \"string\") {\n v = hexParse(input) || nameParse(input) || functionParse(input);\n }\n this._rgb = v;\n this._valid = !!v;\n }\n /**\n * `true` if this is a valid color\n * @returns {boolean}\n */\n get valid() {\n return this._valid;\n }\n /**\n * @returns {RGBA} - the color\n */\n get rgb() {\n const v = clone(this._rgb);\n if (v) {\n v.a = b2n(v.a);\n }\n return v;\n }\n /**\n * @param obj - the color\n */\n set rgb(obj) {\n this._rgb = fromObject(obj);\n }\n /**\n * rgb(a) string\n * @return {string|undefined}\n */\n rgbString() {\n return this._valid ? rgbString(this._rgb) : void 0;\n }\n /**\n * hex string\n * @return {string|undefined}\n */\n hexString() {\n return this._valid ? hexString(this._rgb) : void 0;\n }\n /**\n * hsl(a) string\n * @return {string|undefined}\n */\n hslString() {\n return this._valid ? hslString(this._rgb) : void 0;\n }\n /**\n * Mix another color to this color.\n * @param color - Color to mix in\n * @param weight - 0..1\n * @returns {Color}\n */\n mix(color, weight = 0.5) {\n if (color) {\n const c1 = this.rgb;\n const c2 = color.rgb;\n const w = 2 * weight - 1;\n const a = c1.a - c2.a;\n const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2;\n const w2 = 1 - w1;\n c1.r = 255 & w1 * c1.r + w2 * c2.r + 0.5;\n c1.g = 255 & w1 * c1.g + w2 * c2.g + 0.5;\n c1.b = 255 & w1 * c1.b + w2 * c2.b + 0.5;\n c1.a = weight * c1.a + (1 - weight) * c2.a;\n this.rgb = c1;\n }\n return this;\n }\n /**\n * Interpolate a color value between this and `color`\n * @param color\n * @param t - 0..1\n * @returns {Color}\n */\n interpolate(color, t) {\n if (color) {\n this._rgb = interpolate(this._rgb, color._rgb, t);\n }\n return this;\n }\n /**\n * Clone\n * @returns {Color}\n */\n clone() {\n return new _Color(this.rgb);\n }\n /**\n * Set alpha\n * @param a - the alpha [0..1]\n * @returns {Color}\n */\n alpha(a) {\n this._rgb.a = n2b(a);\n return this;\n }\n /**\n * Make clearer\n * @param ratio - ratio [0..1]\n * @returns {Color}\n */\n clearer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 - ratio;\n return this;\n }\n /**\n * Convert to grayscale\n * @returns {Color}\n */\n greyscale() {\n const rgb = this._rgb;\n const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n rgb.r = rgb.g = rgb.b = val;\n return this;\n }\n /**\n * Opaquer\n * @param ratio - ratio [0..1]\n * @returns {Color}\n */\n opaquer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 + ratio;\n return this;\n }\n /**\n * Negates the rgb value\n * @returns {Color}\n */\n negate() {\n const v = this._rgb;\n v.r = 255 - v.r;\n v.g = 255 - v.g;\n v.b = 255 - v.b;\n return this;\n }\n /**\n * Lighten\n * @param ratio - ratio [0..1]\n * @returns {Color}\n */\n lighten(ratio) {\n modHSL(this._rgb, 2, ratio);\n return this;\n }\n /**\n * Darken\n * @param ratio - ratio [0..1]\n * @returns {Color}\n */\n darken(ratio) {\n modHSL(this._rgb, 2, -ratio);\n return this;\n }\n /**\n * Saturate\n * @param ratio - ratio [0..1]\n * @returns {Color}\n */\n saturate(ratio) {\n modHSL(this._rgb, 1, ratio);\n return this;\n }\n /**\n * Desaturate\n * @param ratio - ratio [0..1]\n * @returns {Color}\n */\n desaturate(ratio) {\n modHSL(this._rgb, 1, -ratio);\n return this;\n }\n /**\n * Rotate\n * @param deg - degrees to rotate\n * @returns {Color}\n */\n rotate(deg) {\n rotate(this._rgb, deg);\n return this;\n }\n};\n\n// src/index.esm.ts\nfunction index_esm_default(input) {\n return new Color(input);\n}\nexport {\n Color,\n b2n,\n b2p,\n index_esm_default as default,\n hexParse,\n hexString,\n hsl2rgb,\n hslString,\n hsv2rgb,\n hueParse,\n hwb2rgb,\n interpolate,\n lim,\n n2b,\n n2p,\n nameParse,\n p2b,\n rgb2hsl,\n rgbParse,\n rgbString,\n rotate,\n round\n};\n//# sourceMappingURL=color.esm.js.map\n","import { hsv2rgb, rgbString } from '@kurkle/color'\n\nfunction* hueGen() {\n yield 0\n while (true) {\n for (let i = 1; i < 10; i++) {\n const d = 1 << i\n for (let j = 1; j <= d; j += 2) {\n yield j / d\n }\n }\n }\n}\n\nfunction* colorGen(repeat = 1) {\n const hue = hueGen()\n let h = hue.next()\n while (!h.done) {\n let rgb = hsv2rgb(Math.round(h.value * 360), 0.6, 0.8)\n for (let i = 0; i < repeat; i++) {\n yield {\n background: rgbString({ a: 192, b: rgb[2], g: rgb[1], r: rgb[0] }),\n border: rgbString({ a: 144, b: rgb[2], g: rgb[1], r: rgb[0] }),\n }\n }\n rgb = hsv2rgb(Math.round(h.value * 360), 0.6, 0.5)\n for (let i = 0; i < repeat; i++) {\n yield {\n background: rgbString({ a: 192, b: rgb[2], g: rgb[1], r: rgb[0] }),\n border: rgbString({ a: 144, b: rgb[2], g: rgb[1], r: rgb[0] }),\n }\n }\n h = hue.next()\n }\n}\n\nfunction setColors(dataset, background, border, mode) {\n if (mode === 'data') {\n dataset.backgroundColor = background\n dataset.border = border\n } else {\n dataset.backgroundColor = dataset.backgroundColor || background\n dataset.borderColor = dataset.borderColor || border\n }\n return dataset.backgroundColor === background && dataset.borderColor === border\n}\n\nfunction getNext(color, customize, context) {\n const c = color.next().value\n if (typeof customize === 'function') {\n return customize(Object.assign({ colors: c }, context))\n }\n return c\n}\n\nfunction defaultMode(chart, gen, customize, mode) {\n const datasetMode = mode === 'dataset'\n\n let c = getNext(gen, customize, {\n chart,\n dataIndex: datasetMode ? undefined : 0,\n datasetIndex: 0,\n })\n for (const dataset of chart.data.datasets) {\n if (datasetMode) {\n if (setColors(dataset, c.background, c.border, mode)) {\n c = getNext(gen, customize, { chart, datasetIndex: dataset.index })\n }\n } else {\n const background = []\n const border = []\n for (let i = 0; i < dataset.data.length; i++) {\n background.push(c.background)\n border.push(c.border)\n c = getNext(gen, customize, { chart, dataIndex: i, datasetIndex: dataset.index })\n }\n setColors(dataset, background, border, mode)\n }\n }\n}\n\nfunction labelMode(chart, gen, customize, mode) {\n const colors = {}\n for (const dataset of chart.data.datasets) {\n const label = dataset.label ?? ''\n if (!colors[label]) {\n colors[label] = getNext(gen, customize, {\n chart,\n dataIndex: undefined,\n datasetIndex: 0,\n label,\n })\n }\n const c = colors[label]\n setColors(dataset, c.background, c.border, mode)\n }\n}\n\nconst autocolorPlugin = {\n beforeUpdate(chart, args, options) {\n const { mode = 'dataset', enabled = true, customize, repeat } = options\n\n if (!enabled) {\n return\n }\n\n const gen = colorGen(repeat)\n\n if (options.offset) {\n // offset the color generation by n colors\n for (let i = 0; i < options.offset; i++) {\n gen.next()\n }\n }\n\n if (mode === 'label') {\n return labelMode(chart, gen, customize, mode)\n }\n return defaultMode(chart, gen, customize, mode)\n },\n id: 'autocolors',\n}\n\nexport { autocolorPlugin as default }\n"],"names":[],"mappings":";;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS,KAAK,CAAC,CAAC,EAAE;AAClB,EAAE,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;AACpB;AACA,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAOlD,SAAS,GAAG,CAAC,CAAC,EAAE;AAChB,EAAE,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;AACpC;AACA,SAAS,GAAG,CAAC,CAAC,EAAE;AAChB,EAAE,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AACzC;AAsEA,SAAS,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC3B,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AACvF,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3B;AA2CA,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC3B,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC;AACvE;AAOA,SAAS,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC1B,EAAE,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACjC;AAiSA,SAAS,SAAS,CAAC,CAAC,EAAE;AACtB,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvG;;ACvbA,UAAU,MAAM,GAAG;AACnB,EAAE,MAAM;AACR,EAAE,OAAO,IAAI,EAAE;AACf,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AACjC,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI;AACrB,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AACtC,QAAQ,MAAM,CAAC,GAAG;AAClB,MAAM;AACN,IAAI;AACJ,EAAE;AACF;;AAEA,UAAU,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,EAAE,MAAM,GAAG,GAAG,MAAM;AACpB,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI;AAClB,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE;AAClB,IAAI,IAAI,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG;AACzD,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AACrC,MAAM,MAAM;AACZ,QAAQ,UAAU,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1E,QAAQ,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AACtE;AACA,IAAI;AACJ,IAAI,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG;AACrD,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AACrC,MAAM,MAAM;AACZ,QAAQ,UAAU,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1E,QAAQ,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AACtE;AACA,IAAI;AACJ,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI;AAChB,EAAE;AACF;;AAEA,SAAS,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE;AACtD,EAAE,IAAI,IAAI,KAAK,MAAM,EAAE;AACvB,IAAI,OAAO,CAAC,eAAe,GAAG;AAC9B,IAAI,OAAO,CAAC,MAAM,GAAG;AACrB,EAAE,CAAC,MAAM;AACT,IAAI,OAAO,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI;AACzD,IAAI,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI;AACjD,EAAE;AACF,EAAE,OAAO,OAAO,CAAC,eAAe,KAAK,UAAU,IAAI,OAAO,CAAC,WAAW,KAAK;AAC3E;;AAEA,SAAS,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE;AAC5C,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;AACzB,EAAE,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE;AACvC,IAAI,OAAO,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC;AAC1D,EAAE;AACF,EAAE,OAAO;AACT;;AAEA,SAAS,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE;AAClD,EAAE,MAAM,WAAW,GAAG,IAAI,KAAK;;AAE/B,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE;AAClC,IAAI,KAAK;AACT,IAAI,SAAS,EAAE,WAAW,GAAG,SAAS,GAAG,CAAC;AAC1C,IAAI,YAAY,EAAE,CAAC;AACnB,GAAG;AACH,EAAE,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC7C,IAAI,IAAI,WAAW,EAAE;AACrB,MAAM,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;AAC5D,QAAQ,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC,KAAK,EAAE;AAC1E,MAAM;AACN,IAAI,CAAC,MAAM;AACX,MAAM,MAAM,UAAU,GAAG;AACzB,MAAM,MAAM,MAAM,GAAG;AACrB,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpD,QAAQ,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU;AACpC,QAAQ,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM;AAC5B,QAAQ,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,KAAK,EAAE;AACxF,MAAM;AACN,MAAM,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI;AACjD,IAAI;AACJ,EAAE;AACF;;AAEA,SAAS,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE;AAChD,EAAE,MAAM,MAAM,GAAG;AACjB,EAAE,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC7C,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI;AACnC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AACxB,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE;AAC9C,QAAQ,KAAK;AACb,QAAQ,SAAS,EAAE,SAAS;AAC5B,QAAQ,YAAY,EAAE,CAAC;AACvB,QAAQ,KAAK;AACb,OAAO;AACP,IAAI;AACJ,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK;AAC1B,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI;AACnD,EAAE;AACF;;AAEK,MAAC,eAAe,GAAG;AACxB,EAAE,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE;AACrC,IAAI,MAAM,EAAE,IAAI,GAAG,SAAS,EAAE,OAAO,GAAG,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG;;AAEpE,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB,MAAM;AACN,IAAI;;AAEJ,IAAI,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM;;AAE/B,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE;AACxB;AACA,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/C,QAAQ,GAAG,CAAC,IAAI;AAChB,MAAM;AACN,IAAI;;AAEJ,IAAI,IAAI,IAAI,KAAK,OAAO,EAAE;AAC1B,MAAM,OAAO,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI;AAClD,IAAI;AACJ,IAAI,OAAO,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI;AAClD,EAAE,CAAC;AACH,EAAE,EAAE,EAAE,YAAY;AAClB;;;;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"chartjs-plugin-autocolors.cjs","sources":["../node_modules/@kurkle/color/dist/color.esm.js","../src/index.js"],"sourcesContent":["/*!\n * @kurkle/color v0.0.0-development\n * https://github.com/kurkle/color#readme\n * (c) 2026 Jukka Kurkela\n * Released under the MIT License\n */\n\n// src/byte.ts\nfunction round(v) {\n return v + 0.5 | 0;\n}\nvar lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n return lim(round(v * 2.55), 0, 255);\n}\nfunction b2p(v) {\n return lim(round(v / 2.55), 0, 100);\n}\nfunction n2b(v) {\n return lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n return lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n return lim(round(v * 100), 0, 100);\n}\n\n// src/hex.ts\nvar map = {\n 0: 0,\n 1: 1,\n 2: 2,\n 3: 3,\n 4: 4,\n 5: 5,\n 6: 6,\n 7: 7,\n 8: 8,\n 9: 9,\n A: 10,\n a: 10,\n B: 11,\n b: 11,\n C: 12,\n c: 12,\n D: 13,\n d: 13,\n E: 14,\n e: 14,\n F: 15,\n f: 15\n};\nvar hex = [...\"0123456789ABCDEF\"];\nvar h1 = (b) => hex[b & 15];\nvar h2 = (b) => hex[(b & 240) >> 4] + hex[b & 15];\nvar eq = (b) => (b & 240) >> 4 === (b & 15);\nvar isShort = (v) => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n if (str[0] !== \"#\") {\n return;\n }\n const len = str.length;\n if (len === 4 || len === 5) {\n return {\n a: len === 5 ? map[str[4]] << 4 | map[str[4]] : 255,\n b: map[str[3]] << 4 | map[str[3]],\n g: map[str[2]] << 4 | map[str[2]],\n r: map[str[1]] << 4 | map[str[1]]\n };\n }\n if (len === 7 || len === 9) {\n return {\n a: len === 9 ? map[str[7]] << 4 | map[str[8]] : 255,\n b: map[str[5]] << 4 | map[str[6]],\n g: map[str[3]] << 4 | map[str[4]],\n r: map[str[1]] << 4 | map[str[2]]\n };\n }\n}\nvar alpha = (a, f) => a < 255 ? f(a) : \"\";\nfunction hexString(v) {\n const f = v && isShort(v) ? h1 : h2;\n return v ? `#${f(v.r)}${f(v.g)}${f(v.b)}${alpha(v.a, f)}` : void 0;\n}\n\n// src/hue.ts\nvar HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n return [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n return [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n const rgb = hsl2rgbn(h, 1, 0.5);\n let i;\n if (w + b > 1) {\n i = 1 / (w + b);\n w *= i;\n b *= i;\n }\n for (i = 0; i < 3; i++) {\n rgb[i] *= 1 - w - b;\n rgb[i] += w;\n }\n return rgb;\n}\nfunction hueValue(r, g, b, d, max) {\n if (r === max) {\n return (g - b) / d + (g < b ? 6 : 0);\n }\n if (g === max) {\n return (b - r) / d + 2;\n }\n return (r - g) / d + 4;\n}\nfunction rgb2hsl(v) {\n const range = 255;\n const r = v.r / range;\n const g = v.g / range;\n const b = v.b / range;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n let h = 0;\n let s = 0;\n let d;\n if (max !== min) {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = hueValue(r, g, b, d, max);\n h = h * 60 + 0.5;\n }\n return [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n return (Array.isArray(a) ? f(a[0], a[1], a[2]) : f(a, b, c)).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n return calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n return calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n return calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n return (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n const m = HUE_RE.exec(str);\n let a = 255;\n let v;\n if (!m) {\n return void 0;\n }\n if (m[5] !== void 0) {\n a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n }\n const h = hue(+m[2]);\n const p1 = +m[3] / 100;\n const p2 = +m[4] / 100;\n if (m[1] === \"hwb\") {\n v = hwb2rgb(h, p1, p2);\n } else if (m[1] === \"hsv\") {\n v = hsv2rgb(h, p1, p2);\n } else {\n v = hsl2rgb(h, p1, p2);\n }\n return {\n a,\n b: v[2],\n g: v[1],\n r: v[0]\n };\n}\nfunction rotate(v, deg) {\n const h = rgb2hsl(v);\n h[0] = hue(h[0] + deg);\n const rgb = hsl2rgb(h);\n v.r = rgb[0];\n v.g = rgb[1];\n v.b = rgb[2];\n}\nfunction hslString(v) {\n if (!v) {\n return void 0;\n }\n const a = rgb2hsl(v);\n const h = a[0];\n const s = n2p(a[1]);\n const l = n2p(a[2]);\n return v.a < 255 ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})` : `hsl(${h}, ${s}%, ${l}%)`;\n}\n\n// src/packed.ts\nvar map2 = {\n x: \"dark\",\n Z: \"light\",\n Y: \"re\",\n X: \"blu\",\n W: \"gr\",\n V: \"medium\",\n U: \"slate\",\n A: \"ee\",\n T: \"ol\",\n S: \"or\",\n B: \"ra\",\n C: \"lateg\",\n D: \"ights\",\n R: \"in\",\n Q: \"turquois\",\n E: \"hi\",\n P: \"ro\",\n O: \"al\",\n N: \"le\",\n M: \"de\",\n L: \"yello\",\n F: \"en\",\n K: \"ch\",\n G: \"arks\",\n H: \"ea\",\n I: \"ightg\",\n J: \"wh\"\n};\nvar names = {\n OiceXe: \"f0f8ff\",\n antiquewEte: \"faebd7\",\n aqua: \"ffff\",\n aquamarRe: \"7fffd4\",\n azuY: \"f0ffff\",\n beige: \"f5f5dc\",\n bisque: \"ffe4c4\",\n black: \"0\",\n blanKedOmond: \"ffebcd\",\n Xe: \"ff\",\n XeviTet: \"8a2be2\",\n bPwn: \"a52a2a\",\n burlywood: \"deb887\",\n caMtXe: \"5f9ea0\",\n KartYuse: \"7fff00\",\n KocTate: \"d2691e\",\n cSO: \"ff7f50\",\n cSnflowerXe: \"6495ed\",\n cSnsilk: \"fff8dc\",\n crimson: \"dc143c\",\n cyan: \"ffff\",\n xXe: \"8b\",\n xcyan: \"8b8b\",\n xgTMnPd: \"b8860b\",\n xWay: \"a9a9a9\",\n xgYF: \"6400\",\n xgYy: \"a9a9a9\",\n xkhaki: \"bdb76b\",\n xmagFta: \"8b008b\",\n xTivegYF: \"556b2f\",\n xSange: \"ff8c00\",\n xScEd: \"9932cc\",\n xYd: \"8b0000\",\n xsOmon: \"e9967a\",\n xsHgYF: \"8fbc8f\",\n xUXe: \"483d8b\",\n xUWay: \"2f4f4f\",\n xUgYy: \"2f4f4f\",\n xQe: \"ced1\",\n xviTet: \"9400d3\",\n dAppRk: \"ff1493\",\n dApskyXe: \"bfff\",\n dimWay: \"696969\",\n dimgYy: \"696969\",\n dodgerXe: \"1e90ff\",\n fiYbrick: \"b22222\",\n flSOwEte: \"fffaf0\",\n foYstWAn: \"228b22\",\n fuKsia: \"ff00ff\",\n gaRsbSo: \"dcdcdc\",\n ghostwEte: \"f8f8ff\",\n gTd: \"ffd700\",\n gTMnPd: \"daa520\",\n Way: \"808080\",\n gYF: \"8000\",\n gYFLw: \"adff2f\",\n gYy: \"808080\",\n honeyMw: \"f0fff0\",\n hotpRk: \"ff69b4\",\n RdianYd: \"cd5c5c\",\n Rdigo: \"4b0082\",\n ivSy: \"fffff0\",\n khaki: \"f0e68c\",\n lavFMr: \"e6e6fa\",\n lavFMrXsh: \"fff0f5\",\n lawngYF: \"7cfc00\",\n NmoncEffon: \"fffacd\",\n ZXe: \"add8e6\",\n ZcSO: \"f08080\",\n Zcyan: \"e0ffff\",\n ZgTMnPdLw: \"fafad2\",\n ZWay: \"d3d3d3\",\n ZgYF: \"90ee90\",\n ZgYy: \"d3d3d3\",\n ZpRk: \"ffb6c1\",\n ZsOmon: \"ffa07a\",\n ZsHgYF: \"20b2aa\",\n ZskyXe: \"87cefa\",\n ZUWay: \"778899\",\n ZUgYy: \"778899\",\n ZstAlXe: \"b0c4de\",\n ZLw: \"ffffe0\",\n lime: \"ff00\",\n limegYF: \"32cd32\",\n lRF: \"faf0e6\",\n magFta: \"ff00ff\",\n maPon: \"800000\",\n VaquamarRe: \"66cdaa\",\n VXe: \"cd\",\n VScEd: \"ba55d3\",\n VpurpN: \"9370db\",\n VsHgYF: \"3cb371\",\n VUXe: \"7b68ee\",\n VsprRggYF: \"fa9a\",\n VQe: \"48d1cc\",\n VviTetYd: \"c71585\",\n midnightXe: \"191970\",\n mRtcYam: \"f5fffa\",\n mistyPse: \"ffe4e1\",\n moccasR: \"ffe4b5\",\n navajowEte: \"ffdead\",\n navy: \"80\",\n Tdlace: \"fdf5e6\",\n Tive: \"808000\",\n TivedBb: \"6b8e23\",\n Sange: \"ffa500\",\n SangeYd: \"ff4500\",\n ScEd: \"da70d6\",\n pOegTMnPd: \"eee8aa\",\n pOegYF: \"98fb98\",\n pOeQe: \"afeeee\",\n pOeviTetYd: \"db7093\",\n papayawEp: \"ffefd5\",\n pHKpuff: \"ffdab9\",\n peru: \"cd853f\",\n pRk: \"ffc0cb\",\n plum: \"dda0dd\",\n powMrXe: \"b0e0e6\",\n purpN: \"800080\",\n YbeccapurpN: \"663399\",\n Yd: \"ff0000\",\n Psybrown: \"bc8f8f\",\n PyOXe: \"4169e1\",\n saddNbPwn: \"8b4513\",\n sOmon: \"fa8072\",\n sandybPwn: \"f4a460\",\n sHgYF: \"2e8b57\",\n sHshell: \"fff5ee\",\n siFna: \"a0522d\",\n silver: \"c0c0c0\",\n skyXe: \"87ceeb\",\n UXe: \"6a5acd\",\n UWay: \"708090\",\n UgYy: \"708090\",\n snow: \"fffafa\",\n sprRggYF: \"ff7f\",\n stAlXe: \"4682b4\",\n tan: \"d2b48c\",\n teO: \"8080\",\n tEstN: \"d8bfd8\",\n tomato: \"ff6347\",\n Qe: \"40e0d0\",\n viTet: \"ee82ee\",\n JHt: \"f5deb3\",\n wEte: \"ffffff\",\n wEtesmoke: \"f5f5f5\",\n Lw: \"ffff00\",\n LwgYF: \"9acd32\"\n};\nfunction unpack() {\n const unpacked = {};\n const keys = Object.keys(names);\n const tkeys = Object.keys(map2);\n let i, j, k, ok, nk;\n for (i = 0; i < keys.length; i++) {\n ok = nk = keys[i];\n for (j = 0; j < tkeys.length; j++) {\n k = tkeys[j];\n nk = nk.replace(k, map2[k]);\n }\n k = parseInt(names[ok], 16);\n unpacked[nk] = [k >> 16 & 255, k >> 8 & 255, k & 255];\n }\n return unpacked;\n}\n\n// src/names.ts\nvar names2;\nfunction nameParse(str) {\n if (!names2) {\n names2 = unpack();\n names2.transparent = [0, 0, 0, 0];\n }\n const a = names2[str.toLowerCase()];\n return a && {\n a: a.length === 4 ? a[3] : 255,\n b: a[2],\n g: a[1],\n r: a[0]\n };\n}\n\n// src/rgb.ts\nvar RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n const m = RGB_RE.exec(str);\n let a = 255;\n let r, g, b;\n if (!m) {\n return void 0;\n }\n if (m[7] !== void 0) {\n const v = +m[7];\n a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\n }\n r = +m[1];\n g = +m[3];\n b = +m[5];\n r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));\n g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));\n b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));\n return {\n a,\n b,\n g,\n r\n };\n}\nfunction rgbString(v) {\n return v && (v.a < 255 ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})` : `rgb(${v.r}, ${v.g}, ${v.b})`);\n}\n\n// src/srgb.ts\nvar to = (v) => v <= 31308e-7 ? v * 12.92 : v ** (1 / 2.4) * 1.055 - 0.055;\nvar from = (v) => v <= 0.04045 ? v / 12.92 : ((v + 0.055) / 1.055) ** 2.4;\nfunction interpolate(rgb1, rgb2, t) {\n const r = from(b2n(rgb1.r));\n const g = from(b2n(rgb1.g));\n const b = from(b2n(rgb1.b));\n return {\n a: rgb1.a + t * (rgb2.a - rgb1.a),\n b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n r: n2b(to(r + t * (from(b2n(rgb2.r)) - r)))\n };\n}\n\n// src/color.ts\nvar COMMENT_REGEXP = /\\/\\*[\\s\\S]*?\\*\\//g;\nfunction modHSL(v, i, ratio) {\n if (v) {\n let tmp = rgb2hsl(v);\n tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n tmp = hsl2rgb(tmp);\n v.r = tmp[0];\n v.g = tmp[1];\n v.b = tmp[2];\n }\n}\nfunction clone(v, proto) {\n return v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n let v = { a: 255, b: 0, g: 0, r: 0 };\n if (Array.isArray(input)) {\n if (input.length >= 3) {\n v = { a: 255, b: input[2], g: input[1], r: input[0] };\n if (input.length > 3) {\n v.a = n2b(input[3]);\n }\n }\n } else {\n v = clone(input, { a: 1, b: 0, g: 0, r: 0 });\n v.a = n2b(v.a);\n }\n return v;\n}\nfunction functionParse(str) {\n const clean = str.replace(COMMENT_REGEXP, \"\").trim();\n if (clean.charAt(0) === \"r\") {\n return rgbParse(clean);\n }\n return hueParse(clean);\n}\nvar Color = class _Color {\n /**\n * constructor\n * @param input\n */\n constructor(input) {\n if (input instanceof _Color) {\n return input;\n }\n const type = typeof input;\n let v;\n if (type === \"object\") {\n v = fromObject(input);\n } else if (type === \"string\") {\n v = hexParse(input) || nameParse(input) || functionParse(input);\n }\n this._rgb = v;\n this._valid = !!v;\n }\n /**\n * `true` if this is a valid color\n * @returns {boolean}\n */\n get valid() {\n return this._valid;\n }\n /**\n * @returns {RGBA} - the color\n */\n get rgb() {\n const v = clone(this._rgb);\n if (v) {\n v.a = b2n(v.a);\n }\n return v;\n }\n /**\n * @param obj - the color\n */\n set rgb(obj) {\n this._rgb = fromObject(obj);\n }\n /**\n * rgb(a) string\n * @return {string|undefined}\n */\n rgbString() {\n return this._valid ? rgbString(this._rgb) : void 0;\n }\n /**\n * hex string\n * @return {string|undefined}\n */\n hexString() {\n return this._valid ? hexString(this._rgb) : void 0;\n }\n /**\n * hsl(a) string\n * @return {string|undefined}\n */\n hslString() {\n return this._valid ? hslString(this._rgb) : void 0;\n }\n /**\n * Mix another color to this color.\n * @param color - Color to mix in\n * @param weight - 0..1\n * @returns {Color}\n */\n mix(color, weight = 0.5) {\n if (color) {\n const c1 = this.rgb;\n const c2 = color.rgb;\n const w = 2 * weight - 1;\n const a = c1.a - c2.a;\n const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2;\n const w2 = 1 - w1;\n c1.r = 255 & w1 * c1.r + w2 * c2.r + 0.5;\n c1.g = 255 & w1 * c1.g + w2 * c2.g + 0.5;\n c1.b = 255 & w1 * c1.b + w2 * c2.b + 0.5;\n c1.a = weight * c1.a + (1 - weight) * c2.a;\n this.rgb = c1;\n }\n return this;\n }\n /**\n * Interpolate a color value between this and `color`\n * @param color\n * @param t - 0..1\n * @returns {Color}\n */\n interpolate(color, t) {\n if (color) {\n this._rgb = interpolate(this._rgb, color._rgb, t);\n }\n return this;\n }\n /**\n * Clone\n * @returns {Color}\n */\n clone() {\n return new _Color(this.rgb);\n }\n /**\n * Set alpha\n * @param a - the alpha [0..1]\n * @returns {Color}\n */\n alpha(a) {\n this._rgb.a = n2b(a);\n return this;\n }\n /**\n * Make clearer\n * @param ratio - ratio [0..1]\n * @returns {Color}\n */\n clearer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 - ratio;\n return this;\n }\n /**\n * Convert to grayscale\n * @returns {Color}\n */\n greyscale() {\n const rgb = this._rgb;\n const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n rgb.r = rgb.g = rgb.b = val;\n return this;\n }\n /**\n * Opaquer\n * @param ratio - ratio [0..1]\n * @returns {Color}\n */\n opaquer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 + ratio;\n return this;\n }\n /**\n * Negates the rgb value\n * @returns {Color}\n */\n negate() {\n const v = this._rgb;\n v.r = 255 - v.r;\n v.g = 255 - v.g;\n v.b = 255 - v.b;\n return this;\n }\n /**\n * Lighten\n * @param ratio - ratio [0..1]\n * @returns {Color}\n */\n lighten(ratio) {\n modHSL(this._rgb, 2, ratio);\n return this;\n }\n /**\n * Darken\n * @param ratio - ratio [0..1]\n * @returns {Color}\n */\n darken(ratio) {\n modHSL(this._rgb, 2, -ratio);\n return this;\n }\n /**\n * Saturate\n * @param ratio - ratio [0..1]\n * @returns {Color}\n */\n saturate(ratio) {\n modHSL(this._rgb, 1, ratio);\n return this;\n }\n /**\n * Desaturate\n * @param ratio - ratio [0..1]\n * @returns {Color}\n */\n desaturate(ratio) {\n modHSL(this._rgb, 1, -ratio);\n return this;\n }\n /**\n * Rotate\n * @param deg - degrees to rotate\n * @returns {Color}\n */\n rotate(deg) {\n rotate(this._rgb, deg);\n return this;\n }\n};\n\n// src/index.esm.ts\nfunction index_esm_default(input) {\n return new Color(input);\n}\nexport {\n Color,\n b2n,\n b2p,\n index_esm_default as default,\n hexParse,\n hexString,\n hsl2rgb,\n hslString,\n hsv2rgb,\n hueParse,\n hwb2rgb,\n interpolate,\n lim,\n n2b,\n n2p,\n nameParse,\n p2b,\n rgb2hsl,\n rgbParse,\n rgbString,\n rotate,\n round\n};\n//# sourceMappingURL=color.esm.js.map\n","import { hsv2rgb, rgbString } from '@kurkle/color'\n\nfunction* hueGen() {\n yield 0\n while (true) {\n for (let i = 1; i < 10; i++) {\n const d = 1 << i\n for (let j = 1; j <= d; j += 2) {\n yield j / d\n }\n }\n }\n}\n\nfunction* colorGen(repeat = 1) {\n const hue = hueGen()\n let h = hue.next()\n while (!h.done) {\n let rgb = hsv2rgb(Math.round(h.value * 360), 0.6, 0.8)\n for (let i = 0; i < repeat; i++) {\n yield {\n background: rgbString({ a: 192, b: rgb[2], g: rgb[1], r: rgb[0] }),\n border: rgbString({ a: 144, b: rgb[2], g: rgb[1], r: rgb[0] }),\n }\n }\n rgb = hsv2rgb(Math.round(h.value * 360), 0.6, 0.5)\n for (let i = 0; i < repeat; i++) {\n yield {\n background: rgbString({ a: 192, b: rgb[2], g: rgb[1], r: rgb[0] }),\n border: rgbString({ a: 144, b: rgb[2], g: rgb[1], r: rgb[0] }),\n }\n }\n h = hue.next()\n }\n}\n\nfunction setColors(dataset, background, border, mode) {\n if (mode === 'data') {\n dataset.backgroundColor = background\n dataset.borderColor = border\n } else {\n dataset.backgroundColor = dataset.backgroundColor || background\n dataset.borderColor = dataset.borderColor || border\n }\n return dataset.backgroundColor === background && dataset.borderColor === border\n}\n\nfunction getNext(color, customize, context) {\n const c = color.next().value\n if (typeof customize === 'function') {\n return customize(Object.assign({ colors: c }, context))\n }\n return c\n}\n\nfunction defaultMode(chart, gen, customize, mode) {\n const datasetMode = mode === 'dataset'\n\n let c = getNext(gen, customize, {\n chart,\n dataIndex: datasetMode ? undefined : 0,\n datasetIndex: 0,\n })\n for (const dataset of chart.data.datasets) {\n if (datasetMode) {\n if (setColors(dataset, c.background, c.border, mode)) {\n c = getNext(gen, customize, { chart, datasetIndex: dataset.index })\n }\n } else {\n const background = []\n const border = []\n for (let i = 0; i < dataset.data.length; i++) {\n background.push(c.background)\n border.push(c.border)\n c = getNext(gen, customize, { chart, dataIndex: i, datasetIndex: dataset.index })\n }\n setColors(dataset, background, border, mode)\n }\n }\n}\n\nfunction labelMode(chart, gen, customize, mode) {\n const colors = {}\n for (const dataset of chart.data.datasets) {\n const label = dataset.label ?? ''\n if (!colors[label]) {\n colors[label] = getNext(gen, customize, {\n chart,\n dataIndex: undefined,\n datasetIndex: 0,\n label,\n })\n }\n const c = colors[label]\n setColors(dataset, c.background, c.border, mode)\n }\n}\n\nconst autocolorPlugin = {\n beforeUpdate(chart, args, options) {\n const { mode = 'dataset', enabled = true, customize, repeat } = options\n\n if (!enabled) {\n return\n }\n\n const gen = colorGen(repeat)\n\n if (options.offset) {\n // offset the color generation by n colors\n for (let i = 0; i < options.offset; i++) {\n gen.next()\n }\n }\n\n if (mode === 'label') {\n return labelMode(chart, gen, customize, mode)\n }\n return defaultMode(chart, gen, customize, mode)\n },\n id: 'autocolors',\n}\n\nexport { autocolorPlugin as default }\n"],"names":[],"mappings":"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","x_google_ignoreList":[0]}
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * chartjs-plugin-autocolors v0.4.3
2
+ * chartjs-plugin-autocolors v0.5.1
3
3
  * https://github.com/kurkle/chartjs-plugin-autocolors#readme
4
4
  * (c) 2026 Jukka Kurkela <jukka.kurkela@gmail.com>
5
5
  * Released under the MIT license
@@ -43,7 +43,7 @@ function* colorGen(repeat = 1) {
43
43
  function setColors(dataset, background, border, mode) {
44
44
  if (mode === 'data') {
45
45
  dataset.backgroundColor = background;
46
- dataset.border = border;
46
+ dataset.borderColor = border;
47
47
  } else {
48
48
  dataset.backgroundColor = dataset.backgroundColor || background;
49
49
  dataset.borderColor = dataset.borderColor || border;
@@ -1 +1 @@
1
- {"version":3,"file":"chartjs-plugin-autocolors.esm.js","sources":["../src/index.js"],"sourcesContent":["import { hsv2rgb, rgbString } from '@kurkle/color'\n\nfunction* hueGen() {\n yield 0\n while (true) {\n for (let i = 1; i < 10; i++) {\n const d = 1 << i\n for (let j = 1; j <= d; j += 2) {\n yield j / d\n }\n }\n }\n}\n\nfunction* colorGen(repeat = 1) {\n const hue = hueGen()\n let h = hue.next()\n while (!h.done) {\n let rgb = hsv2rgb(Math.round(h.value * 360), 0.6, 0.8)\n for (let i = 0; i < repeat; i++) {\n yield {\n background: rgbString({ a: 192, b: rgb[2], g: rgb[1], r: rgb[0] }),\n border: rgbString({ a: 144, b: rgb[2], g: rgb[1], r: rgb[0] }),\n }\n }\n rgb = hsv2rgb(Math.round(h.value * 360), 0.6, 0.5)\n for (let i = 0; i < repeat; i++) {\n yield {\n background: rgbString({ a: 192, b: rgb[2], g: rgb[1], r: rgb[0] }),\n border: rgbString({ a: 144, b: rgb[2], g: rgb[1], r: rgb[0] }),\n }\n }\n h = hue.next()\n }\n}\n\nfunction setColors(dataset, background, border, mode) {\n if (mode === 'data') {\n dataset.backgroundColor = background\n dataset.border = border\n } else {\n dataset.backgroundColor = dataset.backgroundColor || background\n dataset.borderColor = dataset.borderColor || border\n }\n return dataset.backgroundColor === background && dataset.borderColor === border\n}\n\nfunction getNext(color, customize, context) {\n const c = color.next().value\n if (typeof customize === 'function') {\n return customize(Object.assign({ colors: c }, context))\n }\n return c\n}\n\nfunction defaultMode(chart, gen, customize, mode) {\n const datasetMode = mode === 'dataset'\n\n let c = getNext(gen, customize, {\n chart,\n dataIndex: datasetMode ? undefined : 0,\n datasetIndex: 0,\n })\n for (const dataset of chart.data.datasets) {\n if (datasetMode) {\n if (setColors(dataset, c.background, c.border, mode)) {\n c = getNext(gen, customize, { chart, datasetIndex: dataset.index })\n }\n } else {\n const background = []\n const border = []\n for (let i = 0; i < dataset.data.length; i++) {\n background.push(c.background)\n border.push(c.border)\n c = getNext(gen, customize, { chart, dataIndex: i, datasetIndex: dataset.index })\n }\n setColors(dataset, background, border, mode)\n }\n }\n}\n\nfunction labelMode(chart, gen, customize, mode) {\n const colors = {}\n for (const dataset of chart.data.datasets) {\n const label = dataset.label ?? ''\n if (!colors[label]) {\n colors[label] = getNext(gen, customize, {\n chart,\n dataIndex: undefined,\n datasetIndex: 0,\n label,\n })\n }\n const c = colors[label]\n setColors(dataset, c.background, c.border, mode)\n }\n}\n\nconst autocolorPlugin = {\n beforeUpdate(chart, args, options) {\n const { mode = 'dataset', enabled = true, customize, repeat } = options\n\n if (!enabled) {\n return\n }\n\n const gen = colorGen(repeat)\n\n if (options.offset) {\n // offset the color generation by n colors\n for (let i = 0; i < options.offset; i++) {\n gen.next()\n }\n }\n\n if (mode === 'label') {\n return labelMode(chart, gen, customize, mode)\n }\n return defaultMode(chart, gen, customize, mode)\n },\n id: 'autocolors',\n}\n\nexport { autocolorPlugin as default }\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chartjs-plugin-autocolors.esm.js","sources":["../src/index.js"],"sourcesContent":["import { hsv2rgb, rgbString } from '@kurkle/color'\n\nfunction* hueGen() {\n yield 0\n while (true) {\n for (let i = 1; i < 10; i++) {\n const d = 1 << i\n for (let j = 1; j <= d; j += 2) {\n yield j / d\n }\n }\n }\n}\n\nfunction* colorGen(repeat = 1) {\n const hue = hueGen()\n let h = hue.next()\n while (!h.done) {\n let rgb = hsv2rgb(Math.round(h.value * 360), 0.6, 0.8)\n for (let i = 0; i < repeat; i++) {\n yield {\n background: rgbString({ a: 192, b: rgb[2], g: rgb[1], r: rgb[0] }),\n border: rgbString({ a: 144, b: rgb[2], g: rgb[1], r: rgb[0] }),\n }\n }\n rgb = hsv2rgb(Math.round(h.value * 360), 0.6, 0.5)\n for (let i = 0; i < repeat; i++) {\n yield {\n background: rgbString({ a: 192, b: rgb[2], g: rgb[1], r: rgb[0] }),\n border: rgbString({ a: 144, b: rgb[2], g: rgb[1], r: rgb[0] }),\n }\n }\n h = hue.next()\n }\n}\n\nfunction setColors(dataset, background, border, mode) {\n if (mode === 'data') {\n dataset.backgroundColor = background\n dataset.borderColor = border\n } else {\n dataset.backgroundColor = dataset.backgroundColor || background\n dataset.borderColor = dataset.borderColor || border\n }\n return dataset.backgroundColor === background && dataset.borderColor === border\n}\n\nfunction getNext(color, customize, context) {\n const c = color.next().value\n if (typeof customize === 'function') {\n return customize(Object.assign({ colors: c }, context))\n }\n return c\n}\n\nfunction defaultMode(chart, gen, customize, mode) {\n const datasetMode = mode === 'dataset'\n\n let c = getNext(gen, customize, {\n chart,\n dataIndex: datasetMode ? undefined : 0,\n datasetIndex: 0,\n })\n for (const dataset of chart.data.datasets) {\n if (datasetMode) {\n if (setColors(dataset, c.background, c.border, mode)) {\n c = getNext(gen, customize, { chart, datasetIndex: dataset.index })\n }\n } else {\n const background = []\n const border = []\n for (let i = 0; i < dataset.data.length; i++) {\n background.push(c.background)\n border.push(c.border)\n c = getNext(gen, customize, { chart, dataIndex: i, datasetIndex: dataset.index })\n }\n setColors(dataset, background, border, mode)\n }\n }\n}\n\nfunction labelMode(chart, gen, customize, mode) {\n const colors = {}\n for (const dataset of chart.data.datasets) {\n const label = dataset.label ?? ''\n if (!colors[label]) {\n colors[label] = getNext(gen, customize, {\n chart,\n dataIndex: undefined,\n datasetIndex: 0,\n label,\n })\n }\n const c = colors[label]\n setColors(dataset, c.background, c.border, mode)\n }\n}\n\nconst autocolorPlugin = {\n beforeUpdate(chart, args, options) {\n const { mode = 'dataset', enabled = true, customize, repeat } = options\n\n if (!enabled) {\n return\n }\n\n const gen = colorGen(repeat)\n\n if (options.offset) {\n // offset the color generation by n colors\n for (let i = 0; i < options.offset; i++) {\n gen.next()\n }\n }\n\n if (mode === 'label') {\n return labelMode(chart, gen, customize, mode)\n }\n return defaultMode(chart, gen, customize, mode)\n },\n id: 'autocolors',\n}\n\nexport { autocolorPlugin as default }\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * chartjs-plugin-autocolors v0.4.3
2
+ * chartjs-plugin-autocolors v0.5.1
3
3
  * https://github.com/kurkle/chartjs-plugin-autocolors#readme
4
4
  * (c) 2026 Jukka Kurkela <jukka.kurkela@gmail.com>
5
5
  * Released under the MIT license
@@ -10,5 +10,5 @@
10
10
  * https://github.com/kurkle/color#readme
11
11
  * (c) 2026 Jukka Kurkela
12
12
  * Released under the MIT License
13
- */function t(t){return t+.5|0}var o=(t,o,e)=>Math.max(Math.min(t,e),o);function e(e){return o(t(255*e),0,255)}function r(t,o,e){const r=(r,n=(r+t/60)%6)=>e-e*o*Math.max(Math.min(n,4-n,1),0);return[r(5),r(3),r(1)]}function n(t,o,n){return a=r,d=t,u=o,c=n,(Array.isArray(d)?a(d[0],d[1],d[2]):a(d,u,c)).map(e);var a,d,u,c}function a(e){return e&&(e.a<255?`rgba(${e.r}, ${e.g}, ${e.b}, ${function(e){return o(t(e/2.55)/100,0,1)}(e.a)})`:`rgb(${e.r}, ${e.g}, ${e.b})`)}function d(t,o,e,r){return"data"===r?(t.backgroundColor=o,t.border=e):(t.backgroundColor=t.backgroundColor||o,t.borderColor=t.borderColor||e),t.backgroundColor===o&&t.borderColor===e}function u(t,o,e){const r=t.next().value;return"function"==typeof o?o(Object.assign({colors:r},e)):r}return{beforeUpdate(t,o,e){const{mode:r="dataset",enabled:c=!0,customize:f,repeat:s}=e;if(!c)return;const i=function*(t=1){const o=function*(){for(yield 0;;)for(let t=1;t<10;t++){const o=1<<t;for(let t=1;t<=o;t+=2)yield t/o}}();let e=o.next();for(;!e.done;){let r=n(Math.round(360*e.value),.6,.8);for(let o=0;o<t;o++)yield{background:a({a:192,b:r[2],g:r[1],r:r[0]}),border:a({a:144,b:r[2],g:r[1],r:r[0]})};r=n(Math.round(360*e.value),.6,.5);for(let o=0;o<t;o++)yield{background:a({a:192,b:r[2],g:r[1],r:r[0]}),border:a({a:144,b:r[2],g:r[1],r:r[0]})};e=o.next()}}(s);if(e.offset)for(let t=0;t<e.offset;t++)i.next();return"label"===r?function(t,o,e,r){const n={};for(const a of t.data.datasets){const c=a.label??"";n[c]||(n[c]=u(o,e,{chart:t,dataIndex:void 0,datasetIndex:0,label:c}));const f=n[c];d(a,f.background,f.border,r)}}(t,i,f,r):function(t,o,e,r){const n="dataset"===r;let a=u(o,e,{chart:t,dataIndex:n?void 0:0,datasetIndex:0});for(const c of t.data.datasets)if(n)d(c,a.background,a.border,r)&&(a=u(o,e,{chart:t,datasetIndex:c.index}));else{const n=[],f=[];for(let r=0;r<c.data.length;r++)n.push(a.background),f.push(a.border),a=u(o,e,{chart:t,dataIndex:r,datasetIndex:c.index});d(c,n,f,r)}}(t,i,f,r)},id:"autocolors"}});
13
+ */function t(t){return t+.5|0}var o=(t,o,e)=>Math.max(Math.min(t,e),o);function e(e){return o(t(255*e),0,255)}function r(t,o,e){const r=(r,n=(r+t/60)%6)=>e-e*o*Math.max(Math.min(n,4-n,1),0);return[r(5),r(3),r(1)]}function n(t,o,n){return a=r,d=t,u=o,c=n,(Array.isArray(d)?a(d[0],d[1],d[2]):a(d,u,c)).map(e);var a,d,u,c}function a(e){return e&&(e.a<255?`rgba(${e.r}, ${e.g}, ${e.b}, ${function(e){return o(t(e/2.55)/100,0,1)}(e.a)})`:`rgb(${e.r}, ${e.g}, ${e.b})`)}function d(t,o,e,r){return"data"===r?(t.backgroundColor=o,t.borderColor=e):(t.backgroundColor=t.backgroundColor||o,t.borderColor=t.borderColor||e),t.backgroundColor===o&&t.borderColor===e}function u(t,o,e){const r=t.next().value;return"function"==typeof o?o(Object.assign({colors:r},e)):r}return{beforeUpdate(t,o,e){const{mode:r="dataset",enabled:c=!0,customize:f,repeat:l}=e;if(!c)return;const s=function*(t=1){const o=function*(){for(yield 0;;)for(let t=1;t<10;t++){const o=1<<t;for(let t=1;t<=o;t+=2)yield t/o}}();let e=o.next();for(;!e.done;){let r=n(Math.round(360*e.value),.6,.8);for(let o=0;o<t;o++)yield{background:a({a:192,b:r[2],g:r[1],r:r[0]}),border:a({a:144,b:r[2],g:r[1],r:r[0]})};r=n(Math.round(360*e.value),.6,.5);for(let o=0;o<t;o++)yield{background:a({a:192,b:r[2],g:r[1],r:r[0]}),border:a({a:144,b:r[2],g:r[1],r:r[0]})};e=o.next()}}(l);if(e.offset)for(let t=0;t<e.offset;t++)s.next();return"label"===r?function(t,o,e,r){const n={};for(const a of t.data.datasets){const c=a.label??"";n[c]||(n[c]=u(o,e,{chart:t,dataIndex:void 0,datasetIndex:0,label:c}));const f=n[c];d(a,f.background,f.border,r)}}(t,s,f,r):function(t,o,e,r){const n="dataset"===r;let a=u(o,e,{chart:t,dataIndex:n?void 0:0,datasetIndex:0});for(const c of t.data.datasets)if(n)d(c,a.background,a.border,r)&&(a=u(o,e,{chart:t,datasetIndex:c.index}));else{const n=[],f=[];for(let r=0;r<c.data.length;r++)n.push(a.background),f.push(a.border),a=u(o,e,{chart:t,dataIndex:r,datasetIndex:c.index});d(c,n,f,r)}}(t,s,f,r)},id:"autocolors"}});
14
14
  //# sourceMappingURL=chartjs-plugin-autocolors.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chartjs-plugin-autocolors.min.js","sources":["../node_modules/@kurkle/color/dist/color.esm.js","../src/index.js"],"sourcesContent":["/*!\n * @kurkle/color v0.0.0-development\n * https://github.com/kurkle/color#readme\n * (c) 2026 Jukka Kurkela\n * Released under the MIT License\n */\n\n// src/byte.ts\nfunction round(v) {\n return v + 0.5 | 0;\n}\nvar lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n return lim(round(v * 2.55), 0, 255);\n}\nfunction b2p(v) {\n return lim(round(v / 2.55), 0, 100);\n}\nfunction n2b(v) {\n return lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n return lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n return lim(round(v * 100), 0, 100);\n}\n\n// src/hex.ts\nvar map = {\n 0: 0,\n 1: 1,\n 2: 2,\n 3: 3,\n 4: 4,\n 5: 5,\n 6: 6,\n 7: 7,\n 8: 8,\n 9: 9,\n A: 10,\n a: 10,\n B: 11,\n b: 11,\n C: 12,\n c: 12,\n D: 13,\n d: 13,\n E: 14,\n e: 14,\n F: 15,\n f: 15\n};\nvar hex = [...\"0123456789ABCDEF\"];\nvar h1 = (b) => hex[b & 15];\nvar h2 = (b) => hex[(b & 240) >> 4] + hex[b & 15];\nvar eq = (b) => (b & 240) >> 4 === (b & 15);\nvar isShort = (v) => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n if (str[0] !== \"#\") {\n return;\n }\n const len = str.length;\n if (len === 4 || len === 5) {\n return {\n a: len === 5 ? map[str[4]] << 4 | map[str[4]] : 255,\n b: map[str[3]] << 4 | map[str[3]],\n g: map[str[2]] << 4 | map[str[2]],\n r: map[str[1]] << 4 | map[str[1]]\n };\n }\n if (len === 7 || len === 9) {\n return {\n a: len === 9 ? map[str[7]] << 4 | map[str[8]] : 255,\n b: map[str[5]] << 4 | map[str[6]],\n g: map[str[3]] << 4 | map[str[4]],\n r: map[str[1]] << 4 | map[str[2]]\n };\n }\n}\nvar alpha = (a, f) => a < 255 ? f(a) : \"\";\nfunction hexString(v) {\n const f = v && isShort(v) ? h1 : h2;\n return v ? `#${f(v.r)}${f(v.g)}${f(v.b)}${alpha(v.a, f)}` : void 0;\n}\n\n// src/hue.ts\nvar HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n return [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n return [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n const rgb = hsl2rgbn(h, 1, 0.5);\n let i;\n if (w + b > 1) {\n i = 1 / (w + b);\n w *= i;\n b *= i;\n }\n for (i = 0; i < 3; i++) {\n rgb[i] *= 1 - w - b;\n rgb[i] += w;\n }\n return rgb;\n}\nfunction hueValue(r, g, b, d, max) {\n if (r === max) {\n return (g - b) / d + (g < b ? 6 : 0);\n }\n if (g === max) {\n return (b - r) / d + 2;\n }\n return (r - g) / d + 4;\n}\nfunction rgb2hsl(v) {\n const range = 255;\n const r = v.r / range;\n const g = v.g / range;\n const b = v.b / range;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n let h = 0;\n let s = 0;\n let d;\n if (max !== min) {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = hueValue(r, g, b, d, max);\n h = h * 60 + 0.5;\n }\n return [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n return (Array.isArray(a) ? f(a[0], a[1], a[2]) : f(a, b, c)).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n return calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n return calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n return calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n return (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n const m = HUE_RE.exec(str);\n let a = 255;\n let v;\n if (!m) {\n return void 0;\n }\n if (m[5] !== void 0) {\n a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n }\n const h = hue(+m[2]);\n const p1 = +m[3] / 100;\n const p2 = +m[4] / 100;\n if (m[1] === \"hwb\") {\n v = hwb2rgb(h, p1, p2);\n } else if (m[1] === \"hsv\") {\n v = hsv2rgb(h, p1, p2);\n } else {\n v = hsl2rgb(h, p1, p2);\n }\n return {\n a,\n b: v[2],\n g: v[1],\n r: v[0]\n };\n}\nfunction rotate(v, deg) {\n const h = rgb2hsl(v);\n h[0] = hue(h[0] + deg);\n const rgb = hsl2rgb(h);\n v.r = rgb[0];\n v.g = rgb[1];\n v.b = rgb[2];\n}\nfunction hslString(v) {\n if (!v) {\n return void 0;\n }\n const a = rgb2hsl(v);\n const h = a[0];\n const s = n2p(a[1]);\n const l = n2p(a[2]);\n return v.a < 255 ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})` : `hsl(${h}, ${s}%, ${l}%)`;\n}\n\n// src/packed.ts\nvar map2 = {\n x: \"dark\",\n Z: \"light\",\n Y: \"re\",\n X: \"blu\",\n W: \"gr\",\n V: \"medium\",\n U: \"slate\",\n A: \"ee\",\n T: \"ol\",\n S: \"or\",\n B: \"ra\",\n C: \"lateg\",\n D: \"ights\",\n R: \"in\",\n Q: \"turquois\",\n E: \"hi\",\n P: \"ro\",\n O: \"al\",\n N: \"le\",\n M: \"de\",\n L: \"yello\",\n F: \"en\",\n K: \"ch\",\n G: \"arks\",\n H: \"ea\",\n I: \"ightg\",\n J: \"wh\"\n};\nvar names = {\n OiceXe: \"f0f8ff\",\n antiquewEte: \"faebd7\",\n aqua: \"ffff\",\n aquamarRe: \"7fffd4\",\n azuY: \"f0ffff\",\n beige: \"f5f5dc\",\n bisque: \"ffe4c4\",\n black: \"0\",\n blanKedOmond: \"ffebcd\",\n Xe: \"ff\",\n XeviTet: \"8a2be2\",\n bPwn: \"a52a2a\",\n burlywood: \"deb887\",\n caMtXe: \"5f9ea0\",\n KartYuse: \"7fff00\",\n KocTate: \"d2691e\",\n cSO: \"ff7f50\",\n cSnflowerXe: \"6495ed\",\n cSnsilk: \"fff8dc\",\n crimson: \"dc143c\",\n cyan: \"ffff\",\n xXe: \"8b\",\n xcyan: \"8b8b\",\n xgTMnPd: \"b8860b\",\n xWay: \"a9a9a9\",\n xgYF: \"6400\",\n xgYy: \"a9a9a9\",\n xkhaki: \"bdb76b\",\n xmagFta: \"8b008b\",\n xTivegYF: \"556b2f\",\n xSange: \"ff8c00\",\n xScEd: \"9932cc\",\n xYd: \"8b0000\",\n xsOmon: \"e9967a\",\n xsHgYF: \"8fbc8f\",\n xUXe: \"483d8b\",\n xUWay: \"2f4f4f\",\n xUgYy: \"2f4f4f\",\n xQe: \"ced1\",\n xviTet: \"9400d3\",\n dAppRk: \"ff1493\",\n dApskyXe: \"bfff\",\n dimWay: \"696969\",\n dimgYy: \"696969\",\n dodgerXe: \"1e90ff\",\n fiYbrick: \"b22222\",\n flSOwEte: \"fffaf0\",\n foYstWAn: \"228b22\",\n fuKsia: \"ff00ff\",\n gaRsbSo: \"dcdcdc\",\n ghostwEte: \"f8f8ff\",\n gTd: \"ffd700\",\n gTMnPd: \"daa520\",\n Way: \"808080\",\n gYF: \"8000\",\n gYFLw: \"adff2f\",\n gYy: \"808080\",\n honeyMw: \"f0fff0\",\n hotpRk: \"ff69b4\",\n RdianYd: \"cd5c5c\",\n Rdigo: \"4b0082\",\n ivSy: \"fffff0\",\n khaki: \"f0e68c\",\n lavFMr: \"e6e6fa\",\n lavFMrXsh: \"fff0f5\",\n lawngYF: \"7cfc00\",\n NmoncEffon: \"fffacd\",\n ZXe: \"add8e6\",\n ZcSO: \"f08080\",\n Zcyan: \"e0ffff\",\n ZgTMnPdLw: \"fafad2\",\n ZWay: \"d3d3d3\",\n ZgYF: \"90ee90\",\n ZgYy: \"d3d3d3\",\n ZpRk: \"ffb6c1\",\n ZsOmon: \"ffa07a\",\n ZsHgYF: \"20b2aa\",\n ZskyXe: \"87cefa\",\n ZUWay: \"778899\",\n ZUgYy: \"778899\",\n ZstAlXe: \"b0c4de\",\n ZLw: \"ffffe0\",\n lime: \"ff00\",\n limegYF: \"32cd32\",\n lRF: \"faf0e6\",\n magFta: \"ff00ff\",\n maPon: \"800000\",\n VaquamarRe: \"66cdaa\",\n VXe: \"cd\",\n VScEd: \"ba55d3\",\n VpurpN: \"9370db\",\n VsHgYF: \"3cb371\",\n VUXe: \"7b68ee\",\n VsprRggYF: \"fa9a\",\n VQe: \"48d1cc\",\n VviTetYd: \"c71585\",\n midnightXe: \"191970\",\n mRtcYam: \"f5fffa\",\n mistyPse: \"ffe4e1\",\n moccasR: \"ffe4b5\",\n navajowEte: \"ffdead\",\n navy: \"80\",\n Tdlace: \"fdf5e6\",\n Tive: \"808000\",\n TivedBb: \"6b8e23\",\n Sange: \"ffa500\",\n SangeYd: \"ff4500\",\n ScEd: \"da70d6\",\n pOegTMnPd: \"eee8aa\",\n pOegYF: \"98fb98\",\n pOeQe: \"afeeee\",\n pOeviTetYd: \"db7093\",\n papayawEp: \"ffefd5\",\n pHKpuff: \"ffdab9\",\n peru: \"cd853f\",\n pRk: \"ffc0cb\",\n plum: \"dda0dd\",\n powMrXe: \"b0e0e6\",\n purpN: \"800080\",\n YbeccapurpN: \"663399\",\n Yd: \"ff0000\",\n Psybrown: \"bc8f8f\",\n PyOXe: \"4169e1\",\n saddNbPwn: \"8b4513\",\n sOmon: \"fa8072\",\n sandybPwn: \"f4a460\",\n sHgYF: \"2e8b57\",\n sHshell: \"fff5ee\",\n siFna: \"a0522d\",\n silver: \"c0c0c0\",\n skyXe: \"87ceeb\",\n UXe: \"6a5acd\",\n UWay: \"708090\",\n UgYy: \"708090\",\n snow: \"fffafa\",\n sprRggYF: \"ff7f\",\n stAlXe: \"4682b4\",\n tan: \"d2b48c\",\n teO: \"8080\",\n tEstN: \"d8bfd8\",\n tomato: \"ff6347\",\n Qe: \"40e0d0\",\n viTet: \"ee82ee\",\n JHt: \"f5deb3\",\n wEte: \"ffffff\",\n wEtesmoke: \"f5f5f5\",\n Lw: \"ffff00\",\n LwgYF: \"9acd32\"\n};\nfunction unpack() {\n const unpacked = {};\n const keys = Object.keys(names);\n const tkeys = Object.keys(map2);\n let i, j, k, ok, nk;\n for (i = 0; i < keys.length; i++) {\n ok = nk = keys[i];\n for (j = 0; j < tkeys.length; j++) {\n k = tkeys[j];\n nk = nk.replace(k, map2[k]);\n }\n k = parseInt(names[ok], 16);\n unpacked[nk] = [k >> 16 & 255, k >> 8 & 255, k & 255];\n }\n return unpacked;\n}\n\n// src/names.ts\nvar names2;\nfunction nameParse(str) {\n if (!names2) {\n names2 = unpack();\n names2.transparent = [0, 0, 0, 0];\n }\n const a = names2[str.toLowerCase()];\n return a && {\n a: a.length === 4 ? a[3] : 255,\n b: a[2],\n g: a[1],\n r: a[0]\n };\n}\n\n// src/rgb.ts\nvar RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n const m = RGB_RE.exec(str);\n let a = 255;\n let r, g, b;\n if (!m) {\n return void 0;\n }\n if (m[7] !== void 0) {\n const v = +m[7];\n a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\n }\n r = +m[1];\n g = +m[3];\n b = +m[5];\n r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));\n g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));\n b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));\n return {\n a,\n b,\n g,\n r\n };\n}\nfunction rgbString(v) {\n return v && (v.a < 255 ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})` : `rgb(${v.r}, ${v.g}, ${v.b})`);\n}\n\n// src/srgb.ts\nvar to = (v) => v <= 31308e-7 ? v * 12.92 : v ** (1 / 2.4) * 1.055 - 0.055;\nvar from = (v) => v <= 0.04045 ? v / 12.92 : ((v + 0.055) / 1.055) ** 2.4;\nfunction interpolate(rgb1, rgb2, t) {\n const r = from(b2n(rgb1.r));\n const g = from(b2n(rgb1.g));\n const b = from(b2n(rgb1.b));\n return {\n a: rgb1.a + t * (rgb2.a - rgb1.a),\n b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n r: n2b(to(r + t * (from(b2n(rgb2.r)) - r)))\n };\n}\n\n// src/color.ts\nvar COMMENT_REGEXP = /\\/\\*[\\s\\S]*?\\*\\//g;\nfunction modHSL(v, i, ratio) {\n if (v) {\n let tmp = rgb2hsl(v);\n tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n tmp = hsl2rgb(tmp);\n v.r = tmp[0];\n v.g = tmp[1];\n v.b = tmp[2];\n }\n}\nfunction clone(v, proto) {\n return v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n let v = { a: 255, b: 0, g: 0, r: 0 };\n if (Array.isArray(input)) {\n if (input.length >= 3) {\n v = { a: 255, b: input[2], g: input[1], r: input[0] };\n if (input.length > 3) {\n v.a = n2b(input[3]);\n }\n }\n } else {\n v = clone(input, { a: 1, b: 0, g: 0, r: 0 });\n v.a = n2b(v.a);\n }\n return v;\n}\nfunction functionParse(str) {\n const clean = str.replace(COMMENT_REGEXP, \"\").trim();\n if (clean.charAt(0) === \"r\") {\n return rgbParse(clean);\n }\n return hueParse(clean);\n}\nvar Color = class _Color {\n /**\n * constructor\n * @param input\n */\n constructor(input) {\n if (input instanceof _Color) {\n return input;\n }\n const type = typeof input;\n let v;\n if (type === \"object\") {\n v = fromObject(input);\n } else if (type === \"string\") {\n v = hexParse(input) || nameParse(input) || functionParse(input);\n }\n this._rgb = v;\n this._valid = !!v;\n }\n /**\n * `true` if this is a valid color\n * @returns {boolean}\n */\n get valid() {\n return this._valid;\n }\n /**\n * @returns {RGBA} - the color\n */\n get rgb() {\n const v = clone(this._rgb);\n if (v) {\n v.a = b2n(v.a);\n }\n return v;\n }\n /**\n * @param obj - the color\n */\n set rgb(obj) {\n this._rgb = fromObject(obj);\n }\n /**\n * rgb(a) string\n * @return {string|undefined}\n */\n rgbString() {\n return this._valid ? rgbString(this._rgb) : void 0;\n }\n /**\n * hex string\n * @return {string|undefined}\n */\n hexString() {\n return this._valid ? hexString(this._rgb) : void 0;\n }\n /**\n * hsl(a) string\n * @return {string|undefined}\n */\n hslString() {\n return this._valid ? hslString(this._rgb) : void 0;\n }\n /**\n * Mix another color to this color.\n * @param color - Color to mix in\n * @param weight - 0..1\n * @returns {Color}\n */\n mix(color, weight = 0.5) {\n if (color) {\n const c1 = this.rgb;\n const c2 = color.rgb;\n const w = 2 * weight - 1;\n const a = c1.a - c2.a;\n const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2;\n const w2 = 1 - w1;\n c1.r = 255 & w1 * c1.r + w2 * c2.r + 0.5;\n c1.g = 255 & w1 * c1.g + w2 * c2.g + 0.5;\n c1.b = 255 & w1 * c1.b + w2 * c2.b + 0.5;\n c1.a = weight * c1.a + (1 - weight) * c2.a;\n this.rgb = c1;\n }\n return this;\n }\n /**\n * Interpolate a color value between this and `color`\n * @param color\n * @param t - 0..1\n * @returns {Color}\n */\n interpolate(color, t) {\n if (color) {\n this._rgb = interpolate(this._rgb, color._rgb, t);\n }\n return this;\n }\n /**\n * Clone\n * @returns {Color}\n */\n clone() {\n return new _Color(this.rgb);\n }\n /**\n * Set alpha\n * @param a - the alpha [0..1]\n * @returns {Color}\n */\n alpha(a) {\n this._rgb.a = n2b(a);\n return this;\n }\n /**\n * Make clearer\n * @param ratio - ratio [0..1]\n * @returns {Color}\n */\n clearer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 - ratio;\n return this;\n }\n /**\n * Convert to grayscale\n * @returns {Color}\n */\n greyscale() {\n const rgb = this._rgb;\n const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n rgb.r = rgb.g = rgb.b = val;\n return this;\n }\n /**\n * Opaquer\n * @param ratio - ratio [0..1]\n * @returns {Color}\n */\n opaquer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 + ratio;\n return this;\n }\n /**\n * Negates the rgb value\n * @returns {Color}\n */\n negate() {\n const v = this._rgb;\n v.r = 255 - v.r;\n v.g = 255 - v.g;\n v.b = 255 - v.b;\n return this;\n }\n /**\n * Lighten\n * @param ratio - ratio [0..1]\n * @returns {Color}\n */\n lighten(ratio) {\n modHSL(this._rgb, 2, ratio);\n return this;\n }\n /**\n * Darken\n * @param ratio - ratio [0..1]\n * @returns {Color}\n */\n darken(ratio) {\n modHSL(this._rgb, 2, -ratio);\n return this;\n }\n /**\n * Saturate\n * @param ratio - ratio [0..1]\n * @returns {Color}\n */\n saturate(ratio) {\n modHSL(this._rgb, 1, ratio);\n return this;\n }\n /**\n * Desaturate\n * @param ratio - ratio [0..1]\n * @returns {Color}\n */\n desaturate(ratio) {\n modHSL(this._rgb, 1, -ratio);\n return this;\n }\n /**\n * Rotate\n * @param deg - degrees to rotate\n * @returns {Color}\n */\n rotate(deg) {\n rotate(this._rgb, deg);\n return this;\n }\n};\n\n// src/index.esm.ts\nfunction index_esm_default(input) {\n return new Color(input);\n}\nexport {\n Color,\n b2n,\n b2p,\n index_esm_default as default,\n hexParse,\n hexString,\n hsl2rgb,\n hslString,\n hsv2rgb,\n hueParse,\n hwb2rgb,\n interpolate,\n lim,\n n2b,\n n2p,\n nameParse,\n p2b,\n rgb2hsl,\n rgbParse,\n rgbString,\n rotate,\n round\n};\n//# sourceMappingURL=color.esm.js.map\n","import { hsv2rgb, rgbString } from '@kurkle/color'\n\nfunction* hueGen() {\n yield 0\n while (true) {\n for (let i = 1; i < 10; i++) {\n const d = 1 << i\n for (let j = 1; j <= d; j += 2) {\n yield j / d\n }\n }\n }\n}\n\nfunction* colorGen(repeat = 1) {\n const hue = hueGen()\n let h = hue.next()\n while (!h.done) {\n let rgb = hsv2rgb(Math.round(h.value * 360), 0.6, 0.8)\n for (let i = 0; i < repeat; i++) {\n yield {\n background: rgbString({ a: 192, b: rgb[2], g: rgb[1], r: rgb[0] }),\n border: rgbString({ a: 144, b: rgb[2], g: rgb[1], r: rgb[0] }),\n }\n }\n rgb = hsv2rgb(Math.round(h.value * 360), 0.6, 0.5)\n for (let i = 0; i < repeat; i++) {\n yield {\n background: rgbString({ a: 192, b: rgb[2], g: rgb[1], r: rgb[0] }),\n border: rgbString({ a: 144, b: rgb[2], g: rgb[1], r: rgb[0] }),\n }\n }\n h = hue.next()\n }\n}\n\nfunction setColors(dataset, background, border, mode) {\n if (mode === 'data') {\n dataset.backgroundColor = background\n dataset.border = border\n } else {\n dataset.backgroundColor = dataset.backgroundColor || background\n dataset.borderColor = dataset.borderColor || border\n }\n return dataset.backgroundColor === background && dataset.borderColor === border\n}\n\nfunction getNext(color, customize, context) {\n const c = color.next().value\n if (typeof customize === 'function') {\n return customize(Object.assign({ colors: c }, context))\n }\n return c\n}\n\nfunction defaultMode(chart, gen, customize, mode) {\n const datasetMode = mode === 'dataset'\n\n let c = getNext(gen, customize, {\n chart,\n dataIndex: datasetMode ? undefined : 0,\n datasetIndex: 0,\n })\n for (const dataset of chart.data.datasets) {\n if (datasetMode) {\n if (setColors(dataset, c.background, c.border, mode)) {\n c = getNext(gen, customize, { chart, datasetIndex: dataset.index })\n }\n } else {\n const background = []\n const border = []\n for (let i = 0; i < dataset.data.length; i++) {\n background.push(c.background)\n border.push(c.border)\n c = getNext(gen, customize, { chart, dataIndex: i, datasetIndex: dataset.index })\n }\n setColors(dataset, background, border, mode)\n }\n }\n}\n\nfunction labelMode(chart, gen, customize, mode) {\n const colors = {}\n for (const dataset of chart.data.datasets) {\n const label = dataset.label ?? ''\n if (!colors[label]) {\n colors[label] = getNext(gen, customize, {\n chart,\n dataIndex: undefined,\n datasetIndex: 0,\n label,\n })\n }\n const c = colors[label]\n setColors(dataset, c.background, c.border, mode)\n }\n}\n\nconst autocolorPlugin = {\n beforeUpdate(chart, args, options) {\n const { mode = 'dataset', enabled = true, customize, repeat } = options\n\n if (!enabled) {\n return\n }\n\n const gen = colorGen(repeat)\n\n if (options.offset) {\n // offset the color generation by n colors\n for (let i = 0; i < options.offset; i++) {\n gen.next()\n }\n }\n\n if (mode === 'label') {\n return labelMode(chart, gen, customize, mode)\n }\n return defaultMode(chart, gen, customize, mode)\n },\n id: 'autocolors',\n}\n\nexport { autocolorPlugin as default }\n"],"names":["round","v","lim","l","h","Math","max","min","n2b","hsv2rgbn","s","f","n","k","hsv2rgb","a","b","c","Array","isArray","map","rgbString","r","g","b2n","setColors","dataset","background","border","mode","backgroundColor","borderColor","getNext","color","customize","context","next","value","Object","assign","colors","beforeUpdate","chart","args","options","enabled","repeat","gen","hue","i","d","j","hueGen","done","rgb","colorGen","offset","data","datasets","label","dataIndex","undefined","datasetIndex","labelMode","datasetMode","index","length","push","defaultMode","id"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"chartjs-plugin-autocolors.min.js","sources":["../node_modules/@kurkle/color/dist/color.esm.js","../src/index.js"],"sourcesContent":["/*!\n * @kurkle/color v0.0.0-development\n * https://github.com/kurkle/color#readme\n * (c) 2026 Jukka Kurkela\n * Released under the MIT License\n */\n\n// src/byte.ts\nfunction round(v) {\n return v + 0.5 | 0;\n}\nvar lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n return lim(round(v * 2.55), 0, 255);\n}\nfunction b2p(v) {\n return lim(round(v / 2.55), 0, 100);\n}\nfunction n2b(v) {\n return lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n return lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n return lim(round(v * 100), 0, 100);\n}\n\n// src/hex.ts\nvar map = {\n 0: 0,\n 1: 1,\n 2: 2,\n 3: 3,\n 4: 4,\n 5: 5,\n 6: 6,\n 7: 7,\n 8: 8,\n 9: 9,\n A: 10,\n a: 10,\n B: 11,\n b: 11,\n C: 12,\n c: 12,\n D: 13,\n d: 13,\n E: 14,\n e: 14,\n F: 15,\n f: 15\n};\nvar hex = [...\"0123456789ABCDEF\"];\nvar h1 = (b) => hex[b & 15];\nvar h2 = (b) => hex[(b & 240) >> 4] + hex[b & 15];\nvar eq = (b) => (b & 240) >> 4 === (b & 15);\nvar isShort = (v) => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n if (str[0] !== \"#\") {\n return;\n }\n const len = str.length;\n if (len === 4 || len === 5) {\n return {\n a: len === 5 ? map[str[4]] << 4 | map[str[4]] : 255,\n b: map[str[3]] << 4 | map[str[3]],\n g: map[str[2]] << 4 | map[str[2]],\n r: map[str[1]] << 4 | map[str[1]]\n };\n }\n if (len === 7 || len === 9) {\n return {\n a: len === 9 ? map[str[7]] << 4 | map[str[8]] : 255,\n b: map[str[5]] << 4 | map[str[6]],\n g: map[str[3]] << 4 | map[str[4]],\n r: map[str[1]] << 4 | map[str[2]]\n };\n }\n}\nvar alpha = (a, f) => a < 255 ? f(a) : \"\";\nfunction hexString(v) {\n const f = v && isShort(v) ? h1 : h2;\n return v ? `#${f(v.r)}${f(v.g)}${f(v.b)}${alpha(v.a, f)}` : void 0;\n}\n\n// src/hue.ts\nvar HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n return [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n return [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n const rgb = hsl2rgbn(h, 1, 0.5);\n let i;\n if (w + b > 1) {\n i = 1 / (w + b);\n w *= i;\n b *= i;\n }\n for (i = 0; i < 3; i++) {\n rgb[i] *= 1 - w - b;\n rgb[i] += w;\n }\n return rgb;\n}\nfunction hueValue(r, g, b, d, max) {\n if (r === max) {\n return (g - b) / d + (g < b ? 6 : 0);\n }\n if (g === max) {\n return (b - r) / d + 2;\n }\n return (r - g) / d + 4;\n}\nfunction rgb2hsl(v) {\n const range = 255;\n const r = v.r / range;\n const g = v.g / range;\n const b = v.b / range;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n let h = 0;\n let s = 0;\n let d;\n if (max !== min) {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = hueValue(r, g, b, d, max);\n h = h * 60 + 0.5;\n }\n return [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n return (Array.isArray(a) ? f(a[0], a[1], a[2]) : f(a, b, c)).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n return calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n return calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n return calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n return (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n const m = HUE_RE.exec(str);\n let a = 255;\n let v;\n if (!m) {\n return void 0;\n }\n if (m[5] !== void 0) {\n a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n }\n const h = hue(+m[2]);\n const p1 = +m[3] / 100;\n const p2 = +m[4] / 100;\n if (m[1] === \"hwb\") {\n v = hwb2rgb(h, p1, p2);\n } else if (m[1] === \"hsv\") {\n v = hsv2rgb(h, p1, p2);\n } else {\n v = hsl2rgb(h, p1, p2);\n }\n return {\n a,\n b: v[2],\n g: v[1],\n r: v[0]\n };\n}\nfunction rotate(v, deg) {\n const h = rgb2hsl(v);\n h[0] = hue(h[0] + deg);\n const rgb = hsl2rgb(h);\n v.r = rgb[0];\n v.g = rgb[1];\n v.b = rgb[2];\n}\nfunction hslString(v) {\n if (!v) {\n return void 0;\n }\n const a = rgb2hsl(v);\n const h = a[0];\n const s = n2p(a[1]);\n const l = n2p(a[2]);\n return v.a < 255 ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})` : `hsl(${h}, ${s}%, ${l}%)`;\n}\n\n// src/packed.ts\nvar map2 = {\n x: \"dark\",\n Z: \"light\",\n Y: \"re\",\n X: \"blu\",\n W: \"gr\",\n V: \"medium\",\n U: \"slate\",\n A: \"ee\",\n T: \"ol\",\n S: \"or\",\n B: \"ra\",\n C: \"lateg\",\n D: \"ights\",\n R: \"in\",\n Q: \"turquois\",\n E: \"hi\",\n P: \"ro\",\n O: \"al\",\n N: \"le\",\n M: \"de\",\n L: \"yello\",\n F: \"en\",\n K: \"ch\",\n G: \"arks\",\n H: \"ea\",\n I: \"ightg\",\n J: \"wh\"\n};\nvar names = {\n OiceXe: \"f0f8ff\",\n antiquewEte: \"faebd7\",\n aqua: \"ffff\",\n aquamarRe: \"7fffd4\",\n azuY: \"f0ffff\",\n beige: \"f5f5dc\",\n bisque: \"ffe4c4\",\n black: \"0\",\n blanKedOmond: \"ffebcd\",\n Xe: \"ff\",\n XeviTet: \"8a2be2\",\n bPwn: \"a52a2a\",\n burlywood: \"deb887\",\n caMtXe: \"5f9ea0\",\n KartYuse: \"7fff00\",\n KocTate: \"d2691e\",\n cSO: \"ff7f50\",\n cSnflowerXe: \"6495ed\",\n cSnsilk: \"fff8dc\",\n crimson: \"dc143c\",\n cyan: \"ffff\",\n xXe: \"8b\",\n xcyan: \"8b8b\",\n xgTMnPd: \"b8860b\",\n xWay: \"a9a9a9\",\n xgYF: \"6400\",\n xgYy: \"a9a9a9\",\n xkhaki: \"bdb76b\",\n xmagFta: \"8b008b\",\n xTivegYF: \"556b2f\",\n xSange: \"ff8c00\",\n xScEd: \"9932cc\",\n xYd: \"8b0000\",\n xsOmon: \"e9967a\",\n xsHgYF: \"8fbc8f\",\n xUXe: \"483d8b\",\n xUWay: \"2f4f4f\",\n xUgYy: \"2f4f4f\",\n xQe: \"ced1\",\n xviTet: \"9400d3\",\n dAppRk: \"ff1493\",\n dApskyXe: \"bfff\",\n dimWay: \"696969\",\n dimgYy: \"696969\",\n dodgerXe: \"1e90ff\",\n fiYbrick: \"b22222\",\n flSOwEte: \"fffaf0\",\n foYstWAn: \"228b22\",\n fuKsia: \"ff00ff\",\n gaRsbSo: \"dcdcdc\",\n ghostwEte: \"f8f8ff\",\n gTd: \"ffd700\",\n gTMnPd: \"daa520\",\n Way: \"808080\",\n gYF: \"8000\",\n gYFLw: \"adff2f\",\n gYy: \"808080\",\n honeyMw: \"f0fff0\",\n hotpRk: \"ff69b4\",\n RdianYd: \"cd5c5c\",\n Rdigo: \"4b0082\",\n ivSy: \"fffff0\",\n khaki: \"f0e68c\",\n lavFMr: \"e6e6fa\",\n lavFMrXsh: \"fff0f5\",\n lawngYF: \"7cfc00\",\n NmoncEffon: \"fffacd\",\n ZXe: \"add8e6\",\n ZcSO: \"f08080\",\n Zcyan: \"e0ffff\",\n ZgTMnPdLw: \"fafad2\",\n ZWay: \"d3d3d3\",\n ZgYF: \"90ee90\",\n ZgYy: \"d3d3d3\",\n ZpRk: \"ffb6c1\",\n ZsOmon: \"ffa07a\",\n ZsHgYF: \"20b2aa\",\n ZskyXe: \"87cefa\",\n ZUWay: \"778899\",\n ZUgYy: \"778899\",\n ZstAlXe: \"b0c4de\",\n ZLw: \"ffffe0\",\n lime: \"ff00\",\n limegYF: \"32cd32\",\n lRF: \"faf0e6\",\n magFta: \"ff00ff\",\n maPon: \"800000\",\n VaquamarRe: \"66cdaa\",\n VXe: \"cd\",\n VScEd: \"ba55d3\",\n VpurpN: \"9370db\",\n VsHgYF: \"3cb371\",\n VUXe: \"7b68ee\",\n VsprRggYF: \"fa9a\",\n VQe: \"48d1cc\",\n VviTetYd: \"c71585\",\n midnightXe: \"191970\",\n mRtcYam: \"f5fffa\",\n mistyPse: \"ffe4e1\",\n moccasR: \"ffe4b5\",\n navajowEte: \"ffdead\",\n navy: \"80\",\n Tdlace: \"fdf5e6\",\n Tive: \"808000\",\n TivedBb: \"6b8e23\",\n Sange: \"ffa500\",\n SangeYd: \"ff4500\",\n ScEd: \"da70d6\",\n pOegTMnPd: \"eee8aa\",\n pOegYF: \"98fb98\",\n pOeQe: \"afeeee\",\n pOeviTetYd: \"db7093\",\n papayawEp: \"ffefd5\",\n pHKpuff: \"ffdab9\",\n peru: \"cd853f\",\n pRk: \"ffc0cb\",\n plum: \"dda0dd\",\n powMrXe: \"b0e0e6\",\n purpN: \"800080\",\n YbeccapurpN: \"663399\",\n Yd: \"ff0000\",\n Psybrown: \"bc8f8f\",\n PyOXe: \"4169e1\",\n saddNbPwn: \"8b4513\",\n sOmon: \"fa8072\",\n sandybPwn: \"f4a460\",\n sHgYF: \"2e8b57\",\n sHshell: \"fff5ee\",\n siFna: \"a0522d\",\n silver: \"c0c0c0\",\n skyXe: \"87ceeb\",\n UXe: \"6a5acd\",\n UWay: \"708090\",\n UgYy: \"708090\",\n snow: \"fffafa\",\n sprRggYF: \"ff7f\",\n stAlXe: \"4682b4\",\n tan: \"d2b48c\",\n teO: \"8080\",\n tEstN: \"d8bfd8\",\n tomato: \"ff6347\",\n Qe: \"40e0d0\",\n viTet: \"ee82ee\",\n JHt: \"f5deb3\",\n wEte: \"ffffff\",\n wEtesmoke: \"f5f5f5\",\n Lw: \"ffff00\",\n LwgYF: \"9acd32\"\n};\nfunction unpack() {\n const unpacked = {};\n const keys = Object.keys(names);\n const tkeys = Object.keys(map2);\n let i, j, k, ok, nk;\n for (i = 0; i < keys.length; i++) {\n ok = nk = keys[i];\n for (j = 0; j < tkeys.length; j++) {\n k = tkeys[j];\n nk = nk.replace(k, map2[k]);\n }\n k = parseInt(names[ok], 16);\n unpacked[nk] = [k >> 16 & 255, k >> 8 & 255, k & 255];\n }\n return unpacked;\n}\n\n// src/names.ts\nvar names2;\nfunction nameParse(str) {\n if (!names2) {\n names2 = unpack();\n names2.transparent = [0, 0, 0, 0];\n }\n const a = names2[str.toLowerCase()];\n return a && {\n a: a.length === 4 ? a[3] : 255,\n b: a[2],\n g: a[1],\n r: a[0]\n };\n}\n\n// src/rgb.ts\nvar RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n const m = RGB_RE.exec(str);\n let a = 255;\n let r, g, b;\n if (!m) {\n return void 0;\n }\n if (m[7] !== void 0) {\n const v = +m[7];\n a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\n }\n r = +m[1];\n g = +m[3];\n b = +m[5];\n r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));\n g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));\n b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));\n return {\n a,\n b,\n g,\n r\n };\n}\nfunction rgbString(v) {\n return v && (v.a < 255 ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})` : `rgb(${v.r}, ${v.g}, ${v.b})`);\n}\n\n// src/srgb.ts\nvar to = (v) => v <= 31308e-7 ? v * 12.92 : v ** (1 / 2.4) * 1.055 - 0.055;\nvar from = (v) => v <= 0.04045 ? v / 12.92 : ((v + 0.055) / 1.055) ** 2.4;\nfunction interpolate(rgb1, rgb2, t) {\n const r = from(b2n(rgb1.r));\n const g = from(b2n(rgb1.g));\n const b = from(b2n(rgb1.b));\n return {\n a: rgb1.a + t * (rgb2.a - rgb1.a),\n b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n r: n2b(to(r + t * (from(b2n(rgb2.r)) - r)))\n };\n}\n\n// src/color.ts\nvar COMMENT_REGEXP = /\\/\\*[\\s\\S]*?\\*\\//g;\nfunction modHSL(v, i, ratio) {\n if (v) {\n let tmp = rgb2hsl(v);\n tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n tmp = hsl2rgb(tmp);\n v.r = tmp[0];\n v.g = tmp[1];\n v.b = tmp[2];\n }\n}\nfunction clone(v, proto) {\n return v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n let v = { a: 255, b: 0, g: 0, r: 0 };\n if (Array.isArray(input)) {\n if (input.length >= 3) {\n v = { a: 255, b: input[2], g: input[1], r: input[0] };\n if (input.length > 3) {\n v.a = n2b(input[3]);\n }\n }\n } else {\n v = clone(input, { a: 1, b: 0, g: 0, r: 0 });\n v.a = n2b(v.a);\n }\n return v;\n}\nfunction functionParse(str) {\n const clean = str.replace(COMMENT_REGEXP, \"\").trim();\n if (clean.charAt(0) === \"r\") {\n return rgbParse(clean);\n }\n return hueParse(clean);\n}\nvar Color = class _Color {\n /**\n * constructor\n * @param input\n */\n constructor(input) {\n if (input instanceof _Color) {\n return input;\n }\n const type = typeof input;\n let v;\n if (type === \"object\") {\n v = fromObject(input);\n } else if (type === \"string\") {\n v = hexParse(input) || nameParse(input) || functionParse(input);\n }\n this._rgb = v;\n this._valid = !!v;\n }\n /**\n * `true` if this is a valid color\n * @returns {boolean}\n */\n get valid() {\n return this._valid;\n }\n /**\n * @returns {RGBA} - the color\n */\n get rgb() {\n const v = clone(this._rgb);\n if (v) {\n v.a = b2n(v.a);\n }\n return v;\n }\n /**\n * @param obj - the color\n */\n set rgb(obj) {\n this._rgb = fromObject(obj);\n }\n /**\n * rgb(a) string\n * @return {string|undefined}\n */\n rgbString() {\n return this._valid ? rgbString(this._rgb) : void 0;\n }\n /**\n * hex string\n * @return {string|undefined}\n */\n hexString() {\n return this._valid ? hexString(this._rgb) : void 0;\n }\n /**\n * hsl(a) string\n * @return {string|undefined}\n */\n hslString() {\n return this._valid ? hslString(this._rgb) : void 0;\n }\n /**\n * Mix another color to this color.\n * @param color - Color to mix in\n * @param weight - 0..1\n * @returns {Color}\n */\n mix(color, weight = 0.5) {\n if (color) {\n const c1 = this.rgb;\n const c2 = color.rgb;\n const w = 2 * weight - 1;\n const a = c1.a - c2.a;\n const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2;\n const w2 = 1 - w1;\n c1.r = 255 & w1 * c1.r + w2 * c2.r + 0.5;\n c1.g = 255 & w1 * c1.g + w2 * c2.g + 0.5;\n c1.b = 255 & w1 * c1.b + w2 * c2.b + 0.5;\n c1.a = weight * c1.a + (1 - weight) * c2.a;\n this.rgb = c1;\n }\n return this;\n }\n /**\n * Interpolate a color value between this and `color`\n * @param color\n * @param t - 0..1\n * @returns {Color}\n */\n interpolate(color, t) {\n if (color) {\n this._rgb = interpolate(this._rgb, color._rgb, t);\n }\n return this;\n }\n /**\n * Clone\n * @returns {Color}\n */\n clone() {\n return new _Color(this.rgb);\n }\n /**\n * Set alpha\n * @param a - the alpha [0..1]\n * @returns {Color}\n */\n alpha(a) {\n this._rgb.a = n2b(a);\n return this;\n }\n /**\n * Make clearer\n * @param ratio - ratio [0..1]\n * @returns {Color}\n */\n clearer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 - ratio;\n return this;\n }\n /**\n * Convert to grayscale\n * @returns {Color}\n */\n greyscale() {\n const rgb = this._rgb;\n const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n rgb.r = rgb.g = rgb.b = val;\n return this;\n }\n /**\n * Opaquer\n * @param ratio - ratio [0..1]\n * @returns {Color}\n */\n opaquer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 + ratio;\n return this;\n }\n /**\n * Negates the rgb value\n * @returns {Color}\n */\n negate() {\n const v = this._rgb;\n v.r = 255 - v.r;\n v.g = 255 - v.g;\n v.b = 255 - v.b;\n return this;\n }\n /**\n * Lighten\n * @param ratio - ratio [0..1]\n * @returns {Color}\n */\n lighten(ratio) {\n modHSL(this._rgb, 2, ratio);\n return this;\n }\n /**\n * Darken\n * @param ratio - ratio [0..1]\n * @returns {Color}\n */\n darken(ratio) {\n modHSL(this._rgb, 2, -ratio);\n return this;\n }\n /**\n * Saturate\n * @param ratio - ratio [0..1]\n * @returns {Color}\n */\n saturate(ratio) {\n modHSL(this._rgb, 1, ratio);\n return this;\n }\n /**\n * Desaturate\n * @param ratio - ratio [0..1]\n * @returns {Color}\n */\n desaturate(ratio) {\n modHSL(this._rgb, 1, -ratio);\n return this;\n }\n /**\n * Rotate\n * @param deg - degrees to rotate\n * @returns {Color}\n */\n rotate(deg) {\n rotate(this._rgb, deg);\n return this;\n }\n};\n\n// src/index.esm.ts\nfunction index_esm_default(input) {\n return new Color(input);\n}\nexport {\n Color,\n b2n,\n b2p,\n index_esm_default as default,\n hexParse,\n hexString,\n hsl2rgb,\n hslString,\n hsv2rgb,\n hueParse,\n hwb2rgb,\n interpolate,\n lim,\n n2b,\n n2p,\n nameParse,\n p2b,\n rgb2hsl,\n rgbParse,\n rgbString,\n rotate,\n round\n};\n//# sourceMappingURL=color.esm.js.map\n","import { hsv2rgb, rgbString } from '@kurkle/color'\n\nfunction* hueGen() {\n yield 0\n while (true) {\n for (let i = 1; i < 10; i++) {\n const d = 1 << i\n for (let j = 1; j <= d; j += 2) {\n yield j / d\n }\n }\n }\n}\n\nfunction* colorGen(repeat = 1) {\n const hue = hueGen()\n let h = hue.next()\n while (!h.done) {\n let rgb = hsv2rgb(Math.round(h.value * 360), 0.6, 0.8)\n for (let i = 0; i < repeat; i++) {\n yield {\n background: rgbString({ a: 192, b: rgb[2], g: rgb[1], r: rgb[0] }),\n border: rgbString({ a: 144, b: rgb[2], g: rgb[1], r: rgb[0] }),\n }\n }\n rgb = hsv2rgb(Math.round(h.value * 360), 0.6, 0.5)\n for (let i = 0; i < repeat; i++) {\n yield {\n background: rgbString({ a: 192, b: rgb[2], g: rgb[1], r: rgb[0] }),\n border: rgbString({ a: 144, b: rgb[2], g: rgb[1], r: rgb[0] }),\n }\n }\n h = hue.next()\n }\n}\n\nfunction setColors(dataset, background, border, mode) {\n if (mode === 'data') {\n dataset.backgroundColor = background\n dataset.borderColor = border\n } else {\n dataset.backgroundColor = dataset.backgroundColor || background\n dataset.borderColor = dataset.borderColor || border\n }\n return dataset.backgroundColor === background && dataset.borderColor === border\n}\n\nfunction getNext(color, customize, context) {\n const c = color.next().value\n if (typeof customize === 'function') {\n return customize(Object.assign({ colors: c }, context))\n }\n return c\n}\n\nfunction defaultMode(chart, gen, customize, mode) {\n const datasetMode = mode === 'dataset'\n\n let c = getNext(gen, customize, {\n chart,\n dataIndex: datasetMode ? undefined : 0,\n datasetIndex: 0,\n })\n for (const dataset of chart.data.datasets) {\n if (datasetMode) {\n if (setColors(dataset, c.background, c.border, mode)) {\n c = getNext(gen, customize, { chart, datasetIndex: dataset.index })\n }\n } else {\n const background = []\n const border = []\n for (let i = 0; i < dataset.data.length; i++) {\n background.push(c.background)\n border.push(c.border)\n c = getNext(gen, customize, { chart, dataIndex: i, datasetIndex: dataset.index })\n }\n setColors(dataset, background, border, mode)\n }\n }\n}\n\nfunction labelMode(chart, gen, customize, mode) {\n const colors = {}\n for (const dataset of chart.data.datasets) {\n const label = dataset.label ?? ''\n if (!colors[label]) {\n colors[label] = getNext(gen, customize, {\n chart,\n dataIndex: undefined,\n datasetIndex: 0,\n label,\n })\n }\n const c = colors[label]\n setColors(dataset, c.background, c.border, mode)\n }\n}\n\nconst autocolorPlugin = {\n beforeUpdate(chart, args, options) {\n const { mode = 'dataset', enabled = true, customize, repeat } = options\n\n if (!enabled) {\n return\n }\n\n const gen = colorGen(repeat)\n\n if (options.offset) {\n // offset the color generation by n colors\n for (let i = 0; i < options.offset; i++) {\n gen.next()\n }\n }\n\n if (mode === 'label') {\n return labelMode(chart, gen, customize, mode)\n }\n return defaultMode(chart, gen, customize, mode)\n },\n id: 'autocolors',\n}\n\nexport { autocolorPlugin as default }\n"],"names":["round","v","lim","l","h","Math","max","min","n2b","hsv2rgbn","s","f","n","k","hsv2rgb","a","b","c","Array","isArray","map","rgbString","r","g","b2n","setColors","dataset","background","border","mode","backgroundColor","borderColor","getNext","color","customize","context","next","value","Object","assign","colors","beforeUpdate","chart","args","options","enabled","repeat","gen","hue","i","d","j","hueGen","done","rgb","colorGen","offset","data","datasets","label","dataIndex","undefined","datasetIndex","labelMode","datasetMode","index","length","push","defaultMode","id"],"mappings":"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","x_google_ignoreList":[0]}
package/package.json CHANGED
@@ -12,41 +12,43 @@
12
12
  "@kurkle/astro-chartjs-editor": "^1.0.0",
13
13
  "@kurkle/color": "^0.5.1",
14
14
  "@kurkle/configs": "^1.5.1",
15
- "@rollup/plugin-json": "^6.0.0",
16
15
  "@rollup/plugin-node-resolve": "^16.0.0",
17
16
  "@rollup/plugin-terser": "^1.0.0",
17
+ "@types/node": "^26.0.0",
18
+ "@vitest/browser": "^5.0.0",
19
+ "@vitest/browser-playwright": "^5.0.0",
20
+ "@vitest/coverage-istanbul": "^5.0.0",
18
21
  "astro": "^7.0.6",
19
22
  "chart.js": "^4.4.5",
20
- "chartjs-test-utils": "^0.5.0",
21
- "concurrently": "^10.0.5",
22
23
  "cookie": "^2.0.1",
23
- "cross-env": "^10.1.0",
24
- "jasmine-core": "^7.0.2",
25
- "karma": "^6.4.1",
26
- "karma-chrome-launcher": "^3.1.1",
27
- "karma-coverage": "^2.2.0",
28
- "karma-firefox-launcher": "^2.1.2",
29
- "karma-jasmine": "^5.1.0",
30
- "karma-jasmine-html-reporter": "^2.0.0",
31
- "karma-rollup-preprocessor": "7.0.8",
32
- "karma-spec-reporter": "^0.0.37",
24
+ "pixelmatch": "^7.1.0",
25
+ "playwright": "^1.63.0",
33
26
  "png-to-ico": "^3.0.2",
34
27
  "rollup": "^4.21.2",
35
- "rollup-plugin-istanbul": "^5.0.0",
36
28
  "semantic-release": "^25.0.3",
37
29
  "sharp": "^0.35.4",
38
- "typescript": "^6.0.3"
30
+ "typescript": "^6.0.3",
31
+ "vitest": "^5.0.0"
39
32
  },
40
33
  "exports": {
41
- "import": "./dist/chartjs-plugin-autocolors.esm.js",
42
- "require": "./dist/chartjs-plugin-autocolors.cjs",
43
- "script": "./dist/chartjs-plugin-autocolors.min.js",
44
- "types": "./types/index.esm.d.ts"
34
+ ".": {
35
+ "import": {
36
+ "types": "./types/index.esm.d.ts",
37
+ "default": "./dist/chartjs-plugin-autocolors.esm.js"
38
+ },
39
+ "require": {
40
+ "types": "./types/index.esm.d.cts",
41
+ "default": "./dist/chartjs-plugin-autocolors.cjs"
42
+ },
43
+ "script": "./dist/chartjs-plugin-autocolors.min.js"
44
+ },
45
+ "./package.json": "./package.json"
45
46
  },
46
47
  "files": [
47
48
  "dist/*",
48
49
  "!dist/docs/**",
49
- "types/index.esm.d.ts"
50
+ "types/index.esm.d.ts",
51
+ "types/index.esm.d.cts"
50
52
  ],
51
53
  "homepage": "https://github.com/kurkle/chartjs-plugin-autocolors#readme",
52
54
  "jsdelivr": "dist/chartjs-plugin-autocolors.min.js",
@@ -72,11 +74,12 @@
72
74
  },
73
75
  "scripts": {
74
76
  "autobuild": "rollup -c -w",
75
- "build": "rollup -c",
76
- "dev": "karma start ./karma.conf.cjs --no-single-run --auto-watch --browsers chrome",
77
+ "build": "rollup -c && kurkle-build-cjs-types --dir types",
78
+ "dev": "vitest --config vitest.browser.config.ts",
77
79
  "docs": "npm run build && astro build",
78
80
  "docs:dev": "npm run build && astro dev",
79
81
  "docs:version": "node ./docs/scripts/write-docs-version.cjs",
82
+ "fixtures:update": "node scripts/update-fixtures.mjs",
80
83
  "format": "biome check --write",
81
84
  "icons": "kurkle-generate-icons",
82
85
  "lint": "biome check",
@@ -84,14 +87,15 @@
84
87
  "predocs:dev": "npm run docs:version",
85
88
  "prepack": "npm run build",
86
89
  "prepare": "git config core.hooksPath .githooks || true",
87
- "test": "cross-env NODE_ENV=test concurrently \"npm:test-*\"",
88
- "test-karma": "karma start ./karma.conf.cjs --no-auto-watch --single-run",
89
- "typecheck": "tsc -p types/tests/",
90
+ "test": "npm run test:fixture && npm run test:pack",
91
+ "test:fixture": "vitest run --config vitest.browser.config.ts --coverage",
92
+ "test:pack": "kurkle-check-package",
93
+ "typecheck": "tsc -p types/tests/ && tsc --noEmit -p tsconfig.tooling.json",
90
94
  "typecheck:docs": "astro check"
91
95
  },
92
96
  "sideEffects": false,
93
97
  "type": "module",
94
- "types": "types/index.esm.d.ts",
98
+ "types": "types/index.esm.d.cts",
95
99
  "unpkg": "dist/chartjs-plugin-autocolors.min.js",
96
- "version": "0.4.3"
100
+ "version": "0.5.1"
97
101
  }
@@ -0,0 +1,33 @@
1
+ import type {} from './index.esm.js' with { 'resolution-mode': 'import' };
2
+ import type { Chart, ChartType, Plugin } from 'chart.js' with { 'resolution-mode': 'import' };
3
+
4
+ interface ColorsDescriptor {
5
+ background: string
6
+ border: string
7
+ }
8
+
9
+ interface AutocolorsOptions {
10
+ enabled?: boolean
11
+ mode?: 'dataset' | 'data' | 'label'
12
+ offset?: number
13
+ repeat?: number
14
+ customize?: (ctx: AutocolorsContext, options: AutocolorsOptions) => ColorsDescriptor
15
+ }
16
+
17
+ interface AutocolorsContext {
18
+ chart: Chart
19
+ colors: ColorsDescriptor
20
+ dataIndex?: number
21
+ datasetIndex: number
22
+ }
23
+
24
+ declare const autocolorPlugin: Plugin
25
+
26
+ /**
27
+ * Exports the plugin class as default
28
+ */
29
+ declare namespace autocolorPlugin {
30
+ export { AutocolorsContext, AutocolorsOptions, ColorsDescriptor }
31
+ }
32
+
33
+ export = autocolorPlugin
@@ -1,4 +1,4 @@
1
- import { Chart, ChartType } from 'chart.js'
1
+ import { Chart, ChartType, Plugin } from 'chart.js'
2
2
 
3
3
  declare module 'chart.js' {
4
4
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -27,8 +27,9 @@ export interface AutocolorsContext {
27
27
  datasetIndex: number
28
28
  }
29
29
 
30
+ declare const autocolorPlugin: Plugin
31
+
30
32
  /**
31
33
  * Exports the plugin class as default
32
34
  */
33
- // eslint-disable-next-line @typescript-eslint/no-use-before-define
34
35
  export { autocolorPlugin as default }