chartjs-plugin-autocolors 0.3.1 → 0.4.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.
package/README.md CHANGED
@@ -2,7 +2,12 @@
2
2
 
3
3
  *Automatic color generation for [Chart.js](https://www.chartjs.org)*
4
4
 
5
- ![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/kurkle/chartjs-plugin-autocolors/ci.yml)
5
+ [![npm](https://img.shields.io/npm/v/chartjs-plugin-autocolors.svg)](https://www.npmjs.com/package/chartjs-plugin-autocolors)
6
+ [![release](https://img.shields.io/github/release/kurkle/chartjs-plugin-autocolors.svg?style=flat-square)](https://github.com/kurkle/chartjs-plugin-autocolors/releases/latest)
7
+ ![npm bundle size](https://img.shields.io/bundlephobia/min/chartjs-plugin-autocolors.svg)
8
+ [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=kurkle_chartjs-plugin-autocolors&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=kurkle_chartjs-plugin-autocolors)
9
+ [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=kurkle_chartjs-plugin-autocolors&metric=coverage)](https://sonarcloud.io/summary/new_code?id=kurkle_chartjs-plugin-autocolors)
10
+ ![GitHub](https://img.shields.io/github/license/kurkle/chartjs-plugin-autocolors.svg)
6
11
 
7
12
  The generation is based on Janus Troelsen's answer at [Stack Overflow](https://stackoverflow.com/a/13781114/10359775).
8
13
 
@@ -1,7 +1,7 @@
1
1
  /*!
2
- * chartjs-plugin-autocolors v0.3.1
2
+ * chartjs-plugin-autocolors v0.0.0-development
3
3
  * https://github.com/kurkle/chartjs-plugin-autocolors#readme
4
- * (c) 2024 Jukka Kurkela <jukka.kurkela@gmail.com>
4
+ * (c) 2026 Jukka Kurkela <jukka.kurkela@gmail.com>
5
5
  * Released under the MIT license
6
6
  */
7
7
  (function (global, factory) {
@@ -11,9 +11,9 @@ typeof define === 'function' && define.amd ? define(factory) :
11
11
  })(this, (function () { 'use strict';
12
12
 
13
13
  /*!
14
- * @kurkle/color v0.3.2
14
+ * @kurkle/color v0.4.0
15
15
  * https://github.com/kurkle/color#readme
16
- * (c) 2023 Jukka Kurkela
16
+ * (c) 2025 Jukka Kurkela
17
17
  * Released under the MIT License
18
18
  */
19
19
  function round(v) {
@@ -66,11 +66,17 @@ function* colorGen(repeat = 1) {
66
66
  while (!h.done) {
67
67
  let rgb = hsv2rgb(Math.round(h.value * 360), 0.6, 0.8);
68
68
  for (let i = 0; i < repeat; i++) {
69
- yield {background: rgbString({r: rgb[0], g: rgb[1], b: rgb[2], a: 192}), border: rgbString({r: rgb[0], g: rgb[1], b: rgb[2], a: 144})};
69
+ yield {
70
+ background: rgbString({ a: 192, b: rgb[2], g: rgb[1], r: rgb[0] }),
71
+ border: rgbString({ a: 144, b: rgb[2], g: rgb[1], r: rgb[0] }),
72
+ };
70
73
  }
71
74
  rgb = hsv2rgb(Math.round(h.value * 360), 0.6, 0.5);
72
75
  for (let i = 0; i < repeat; i++) {
73
- yield {background: rgbString({r: rgb[0], g: rgb[1], b: rgb[2], a: 192}), border: rgbString({r: rgb[0], g: rgb[1], b: rgb[2], a: 144})};
76
+ yield {
77
+ background: rgbString({ a: 192, b: rgb[2], g: rgb[1], r: rgb[0] }),
78
+ border: rgbString({ a: 144, b: rgb[2], g: rgb[1], r: rgb[0] }),
79
+ };
74
80
  }
75
81
  h = hue.next();
76
82
  }
@@ -84,25 +90,29 @@ function setColors(dataset, background, border, mode) {
84
90
  dataset.backgroundColor = dataset.backgroundColor || background;
85
91
  dataset.borderColor = dataset.borderColor || border;
86
92
  }
87
- return dataset.backgroundColor === background && dataset.borderColor === border;
93
+ return dataset.backgroundColor === background && dataset.borderColor === border
88
94
  }
89
95
 
90
96
  function getNext(color, customize, context) {
91
97
  const c = color.next().value;
92
98
  if (typeof customize === 'function') {
93
- return customize(Object.assign({colors: c}, context));
99
+ return customize(Object.assign({ colors: c }, context))
94
100
  }
95
- return c;
101
+ return c
96
102
  }
97
103
 
98
104
  function defaultMode(chart, gen, customize, mode) {
99
105
  const datasetMode = mode === 'dataset';
100
106
 
101
- let c = getNext(gen, customize, {chart, datasetIndex: 0, dataIndex: datasetMode ? undefined : 0});
107
+ let c = getNext(gen, customize, {
108
+ chart,
109
+ dataIndex: datasetMode ? undefined : 0,
110
+ datasetIndex: 0,
111
+ });
102
112
  for (const dataset of chart.data.datasets) {
103
113
  if (datasetMode) {
104
114
  if (setColors(dataset, c.background, c.border, mode)) {
105
- c = getNext(gen, customize, {chart, datasetIndex: dataset.index});
115
+ c = getNext(gen, customize, { chart, datasetIndex: dataset.index });
106
116
  }
107
117
  } else {
108
118
  const background = [];
@@ -110,12 +120,11 @@ function defaultMode(chart, gen, customize, mode) {
110
120
  for (let i = 0; i < dataset.data.length; i++) {
111
121
  background.push(c.background);
112
122
  border.push(c.border);
113
- c = getNext(gen, customize, {chart, datasetIndex: dataset.index, dataIndex: i});
123
+ c = getNext(gen, customize, { chart, dataIndex: i, datasetIndex: dataset.index });
114
124
  }
115
125
  setColors(dataset, background, border, mode);
116
126
  }
117
127
  }
118
-
119
128
  }
120
129
 
121
130
  function labelMode(chart, gen, customize, mode) {
@@ -123,7 +132,12 @@ function labelMode(chart, gen, customize, mode) {
123
132
  for (const dataset of chart.data.datasets) {
124
133
  const label = dataset.label ?? '';
125
134
  if (!colors[label]) {
126
- colors[label] = getNext(gen, customize, {chart, datasetIndex: 0, dataIndex: undefined, label});
135
+ colors[label] = getNext(gen, customize, {
136
+ chart,
137
+ dataIndex: undefined,
138
+ datasetIndex: 0,
139
+ label,
140
+ });
127
141
  }
128
142
  const c = colors[label];
129
143
  setColors(dataset, c.background, c.border, mode);
@@ -131,12 +145,11 @@ function labelMode(chart, gen, customize, mode) {
131
145
  }
132
146
 
133
147
  const autocolorPlugin = {
134
- id: 'autocolors',
135
148
  beforeUpdate(chart, args, options) {
136
- const {mode = 'dataset', enabled = true, customize, repeat} = options;
149
+ const { mode = 'dataset', enabled = true, customize, repeat } = options;
137
150
 
138
151
  if (!enabled) {
139
- return;
152
+ return
140
153
  }
141
154
 
142
155
  const gen = colorGen(repeat);
@@ -149,10 +162,11 @@ const autocolorPlugin = {
149
162
  }
150
163
 
151
164
  if (mode === 'label') {
152
- return labelMode(chart, gen, customize, mode);
165
+ return labelMode(chart, gen, customize, mode)
153
166
  }
154
- return defaultMode(chart, gen, customize, mode);
167
+ return defaultMode(chart, gen, customize, mode)
155
168
  },
169
+ id: 'autocolors',
156
170
  };
157
171
 
158
172
  return autocolorPlugin;
@@ -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.3.2\n * https://github.com/kurkle/color#readme\n * (c) 2023 Jukka Kurkela\n * Released under the MIT License\n */\nfunction round(v) {\n return v + 0.5 | 0;\n}\nconst 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\nconst map$1 = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15};\nconst hex = [...'0123456789ABCDEF'];\nconst h1 = b => hex[b & 0xF];\nconst h2 = b => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = b => ((b & 0xF0) >> 4) === (b & 0xF);\nconst isShort = v => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n var len = str.length;\n var ret;\n if (str[0] === '#') {\n if (len === 4 || len === 5) {\n ret = {\n r: 255 & map$1[str[1]] * 17,\n g: 255 & map$1[str[2]] * 17,\n b: 255 & map$1[str[3]] * 17,\n a: len === 5 ? map$1[str[4]] * 17 : 255\n };\n } else if (len === 7 || len === 9) {\n ret = {\n r: map$1[str[1]] << 4 | map$1[str[2]],\n g: map$1[str[3]] << 4 | map$1[str[4]],\n b: map$1[str[5]] << 4 | map$1[str[6]],\n a: len === 9 ? (map$1[str[7]] << 4 | map$1[str[8]]) : 255\n };\n }\n }\n return ret;\n}\nconst alpha = (a, f) => a < 255 ? f(a) : '';\nfunction hexString(v) {\n var f = isShort(v) ? h1 : h2;\n return v\n ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f)\n : undefined;\n}\n\nconst 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, s, 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 (\n Array.isArray(a)\n ? f(a[0], a[1], a[2])\n : f(a, b, c)\n ).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;\n }\n if (m[5] !== v) {\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 r: v[0],\n g: v[1],\n b: v[2],\n a: a\n };\n}\nfunction rotate(v, deg) {\n var h = rgb2hsl(v);\n h[0] = hue(h[0] + deg);\n h = hsl2rgb(h);\n v.r = h[0];\n v.g = h[1];\n v.b = h[2];\n}\nfunction hslString(v) {\n if (!v) {\n return;\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\n ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n : `hsl(${h}, ${s}%, ${l}%)`;\n}\n\nconst map = {\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};\nconst names$1 = {\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$1);\n const tkeys = Object.keys(map);\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, map[k]);\n }\n k = parseInt(names$1[ok], 16);\n unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n }\n return unpacked;\n}\n\nlet names;\nfunction nameParse(str) {\n if (!names) {\n names = unpack();\n names.transparent = [0, 0, 0, 0];\n }\n const a = names[str.toLowerCase()];\n return a && {\n r: a[0],\n g: a[1],\n b: a[2],\n a: a.length === 4 ? a[3] : 255\n };\n}\n\nconst 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;\n }\n if (m[7] !== r) {\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 r: r,\n g: g,\n b: b,\n a: a\n };\n}\nfunction rgbString(v) {\n return v && (\n v.a < 255\n ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n : `rgb(${v.r}, ${v.g}, ${v.b})`\n );\n}\n\nconst to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;\nconst from = v => v <= 0.04045 ? v / 12.92 : Math.pow((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 r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),\n g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n a: rgb1.a + t * (rgb2.a - rgb1.a)\n };\n}\n\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 var v = {r: 0, g: 0, b: 0, a: 255};\n if (Array.isArray(input)) {\n if (input.length >= 3) {\n v = {r: input[0], g: input[1], b: input[2], a: 255};\n if (input.length > 3) {\n v.a = n2b(input[3]);\n }\n }\n } else {\n v = clone(input, {r: 0, g: 0, b: 0, a: 1});\n v.a = n2b(v.a);\n }\n return v;\n}\nfunction functionParse(str) {\n if (str.charAt(0) === 'r') {\n return rgbParse(str);\n }\n return hueParse(str);\n}\nclass Color {\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 get valid() {\n return this._valid;\n }\n get rgb() {\n var v = clone(this._rgb);\n if (v) {\n v.a = b2n(v.a);\n }\n return v;\n }\n set rgb(obj) {\n this._rgb = fromObject(obj);\n }\n rgbString() {\n return this._valid ? rgbString(this._rgb) : undefined;\n }\n hexString() {\n return this._valid ? hexString(this._rgb) : undefined;\n }\n hslString() {\n return this._valid ? hslString(this._rgb) : undefined;\n }\n mix(color, weight) {\n if (color) {\n const c1 = this.rgb;\n const c2 = color.rgb;\n let w2;\n const p = weight === w2 ? 0.5 : weight;\n const w = 2 * p - 1;\n const a = c1.a - c2.a;\n const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n w2 = 1 - w1;\n c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n c1.a = p * c1.a + (1 - p) * c2.a;\n this.rgb = c1;\n }\n return this;\n }\n interpolate(color, t) {\n if (color) {\n this._rgb = interpolate(this._rgb, color._rgb, t);\n }\n return this;\n }\n clone() {\n return new Color(this.rgb);\n }\n alpha(a) {\n this._rgb.a = n2b(a);\n return this;\n }\n clearer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 - ratio;\n return this;\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 opaquer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 + ratio;\n return this;\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 lighten(ratio) {\n modHSL(this._rgb, 2, ratio);\n return this;\n }\n darken(ratio) {\n modHSL(this._rgb, 2, -ratio);\n return this;\n }\n saturate(ratio) {\n modHSL(this._rgb, 1, ratio);\n return this;\n }\n desaturate(ratio) {\n modHSL(this._rgb, 1, -ratio);\n return this;\n }\n rotate(deg) {\n rotate(this._rgb, deg);\n return this;\n }\n}\n\nfunction index_esm(input) {\n return new Color(input);\n}\n\nexport { Color, b2n, b2p, index_esm as default, hexParse, hexString, hsl2rgb, hslString, hsv2rgb, hueParse, hwb2rgb, lim, n2b, n2p, nameParse, p2b, rgb2hsl, rgbParse, rgbString, rotate, round };\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 {background: rgbString({r: rgb[0], g: rgb[1], b: rgb[2], a: 192}), border: rgbString({r: rgb[0], g: rgb[1], b: rgb[2], a: 144})};\n }\n rgb = hsv2rgb(Math.round(h.value * 360), 0.6, 0.5);\n for (let i = 0; i < repeat; i++) {\n yield {background: rgbString({r: rgb[0], g: rgb[1], b: rgb[2], a: 192}), border: rgbString({r: rgb[0], g: rgb[1], b: rgb[2], a: 144})};\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, {chart, datasetIndex: 0, dataIndex: datasetMode ? undefined : 0});\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, datasetIndex: dataset.index, dataIndex: i});\n }\n setColors(dataset, background, border, mode);\n }\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, {chart, datasetIndex: 0, dataIndex: undefined, label});\n }\n const c = colors[label];\n setColors(dataset, c.background, c.border, mode);\n }\n}\n\nconst autocolorPlugin = {\n id: 'autocolors',\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};\n\nexport {autocolorPlugin as default};\n"],"names":[],"mappings":"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","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.4.0\n * https://github.com/kurkle/color#readme\n * (c) 2025 Jukka Kurkela\n * Released under the MIT License\n */\nfunction round(v) {\n return v + 0.5 | 0;\n}\nconst 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\nconst map$1 = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15};\nconst hex = [...'0123456789ABCDEF'];\nconst h1 = b => hex[b & 0xF];\nconst h2 = b => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = b => ((b & 0xF0) >> 4) === (b & 0xF);\nconst isShort = v => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n var len = str.length;\n var ret;\n if (str[0] === '#') {\n if (len === 4 || len === 5) {\n ret = {\n r: 255 & map$1[str[1]] * 17,\n g: 255 & map$1[str[2]] * 17,\n b: 255 & map$1[str[3]] * 17,\n a: len === 5 ? map$1[str[4]] * 17 : 255\n };\n } else if (len === 7 || len === 9) {\n ret = {\n r: map$1[str[1]] << 4 | map$1[str[2]],\n g: map$1[str[3]] << 4 | map$1[str[4]],\n b: map$1[str[5]] << 4 | map$1[str[6]],\n a: len === 9 ? (map$1[str[7]] << 4 | map$1[str[8]]) : 255\n };\n }\n }\n return ret;\n}\nconst alpha = (a, f) => a < 255 ? f(a) : '';\nfunction hexString(v) {\n var f = isShort(v) ? h1 : h2;\n return v\n ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f)\n : undefined;\n}\n\nconst 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, s, 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 (\n Array.isArray(a)\n ? f(a[0], a[1], a[2])\n : f(a, b, c)\n ).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;\n }\n if (m[5] !== v) {\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 r: v[0],\n g: v[1],\n b: v[2],\n a: a\n };\n}\nfunction rotate(v, deg) {\n var h = rgb2hsl(v);\n h[0] = hue(h[0] + deg);\n h = hsl2rgb(h);\n v.r = h[0];\n v.g = h[1];\n v.b = h[2];\n}\nfunction hslString(v) {\n if (!v) {\n return;\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\n ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n : `hsl(${h}, ${s}%, ${l}%)`;\n}\n\nconst map = {\n\tx: 'dark',\n\tZ: 'light',\n\tY: 're',\n\tX: 'blu',\n\tW: 'gr',\n\tV: 'medium',\n\tU: 'slate',\n\tA: 'ee',\n\tT: 'ol',\n\tS: 'or',\n\tB: 'ra',\n\tC: 'lateg',\n\tD: 'ights',\n\tR: 'in',\n\tQ: 'turquois',\n\tE: 'hi',\n\tP: 'ro',\n\tO: 'al',\n\tN: 'le',\n\tM: 'de',\n\tL: 'yello',\n\tF: 'en',\n\tK: 'ch',\n\tG: 'arks',\n\tH: 'ea',\n\tI: 'ightg',\n\tJ: 'wh'\n};\nconst names$1 = {\n\tOiceXe: 'f0f8ff',\n\tantiquewEte: 'faebd7',\n\taqua: 'ffff',\n\taquamarRe: '7fffd4',\n\tazuY: 'f0ffff',\n\tbeige: 'f5f5dc',\n\tbisque: 'ffe4c4',\n\tblack: '0',\n\tblanKedOmond: 'ffebcd',\n\tXe: 'ff',\n\tXeviTet: '8a2be2',\n\tbPwn: 'a52a2a',\n\tburlywood: 'deb887',\n\tcaMtXe: '5f9ea0',\n\tKartYuse: '7fff00',\n\tKocTate: 'd2691e',\n\tcSO: 'ff7f50',\n\tcSnflowerXe: '6495ed',\n\tcSnsilk: 'fff8dc',\n\tcrimson: 'dc143c',\n\tcyan: 'ffff',\n\txXe: '8b',\n\txcyan: '8b8b',\n\txgTMnPd: 'b8860b',\n\txWay: 'a9a9a9',\n\txgYF: '6400',\n\txgYy: 'a9a9a9',\n\txkhaki: 'bdb76b',\n\txmagFta: '8b008b',\n\txTivegYF: '556b2f',\n\txSange: 'ff8c00',\n\txScEd: '9932cc',\n\txYd: '8b0000',\n\txsOmon: 'e9967a',\n\txsHgYF: '8fbc8f',\n\txUXe: '483d8b',\n\txUWay: '2f4f4f',\n\txUgYy: '2f4f4f',\n\txQe: 'ced1',\n\txviTet: '9400d3',\n\tdAppRk: 'ff1493',\n\tdApskyXe: 'bfff',\n\tdimWay: '696969',\n\tdimgYy: '696969',\n\tdodgerXe: '1e90ff',\n\tfiYbrick: 'b22222',\n\tflSOwEte: 'fffaf0',\n\tfoYstWAn: '228b22',\n\tfuKsia: 'ff00ff',\n\tgaRsbSo: 'dcdcdc',\n\tghostwEte: 'f8f8ff',\n\tgTd: 'ffd700',\n\tgTMnPd: 'daa520',\n\tWay: '808080',\n\tgYF: '8000',\n\tgYFLw: 'adff2f',\n\tgYy: '808080',\n\thoneyMw: 'f0fff0',\n\thotpRk: 'ff69b4',\n\tRdianYd: 'cd5c5c',\n\tRdigo: '4b0082',\n\tivSy: 'fffff0',\n\tkhaki: 'f0e68c',\n\tlavFMr: 'e6e6fa',\n\tlavFMrXsh: 'fff0f5',\n\tlawngYF: '7cfc00',\n\tNmoncEffon: 'fffacd',\n\tZXe: 'add8e6',\n\tZcSO: 'f08080',\n\tZcyan: 'e0ffff',\n\tZgTMnPdLw: 'fafad2',\n\tZWay: 'd3d3d3',\n\tZgYF: '90ee90',\n\tZgYy: 'd3d3d3',\n\tZpRk: 'ffb6c1',\n\tZsOmon: 'ffa07a',\n\tZsHgYF: '20b2aa',\n\tZskyXe: '87cefa',\n\tZUWay: '778899',\n\tZUgYy: '778899',\n\tZstAlXe: 'b0c4de',\n\tZLw: 'ffffe0',\n\tlime: 'ff00',\n\tlimegYF: '32cd32',\n\tlRF: 'faf0e6',\n\tmagFta: 'ff00ff',\n\tmaPon: '800000',\n\tVaquamarRe: '66cdaa',\n\tVXe: 'cd',\n\tVScEd: 'ba55d3',\n\tVpurpN: '9370db',\n\tVsHgYF: '3cb371',\n\tVUXe: '7b68ee',\n\tVsprRggYF: 'fa9a',\n\tVQe: '48d1cc',\n\tVviTetYd: 'c71585',\n\tmidnightXe: '191970',\n\tmRtcYam: 'f5fffa',\n\tmistyPse: 'ffe4e1',\n\tmoccasR: 'ffe4b5',\n\tnavajowEte: 'ffdead',\n\tnavy: '80',\n\tTdlace: 'fdf5e6',\n\tTive: '808000',\n\tTivedBb: '6b8e23',\n\tSange: 'ffa500',\n\tSangeYd: 'ff4500',\n\tScEd: 'da70d6',\n\tpOegTMnPd: 'eee8aa',\n\tpOegYF: '98fb98',\n\tpOeQe: 'afeeee',\n\tpOeviTetYd: 'db7093',\n\tpapayawEp: 'ffefd5',\n\tpHKpuff: 'ffdab9',\n\tperu: 'cd853f',\n\tpRk: 'ffc0cb',\n\tplum: 'dda0dd',\n\tpowMrXe: 'b0e0e6',\n\tpurpN: '800080',\n\tYbeccapurpN: '663399',\n\tYd: 'ff0000',\n\tPsybrown: 'bc8f8f',\n\tPyOXe: '4169e1',\n\tsaddNbPwn: '8b4513',\n\tsOmon: 'fa8072',\n\tsandybPwn: 'f4a460',\n\tsHgYF: '2e8b57',\n\tsHshell: 'fff5ee',\n\tsiFna: 'a0522d',\n\tsilver: 'c0c0c0',\n\tskyXe: '87ceeb',\n\tUXe: '6a5acd',\n\tUWay: '708090',\n\tUgYy: '708090',\n\tsnow: 'fffafa',\n\tsprRggYF: 'ff7f',\n\tstAlXe: '4682b4',\n\ttan: 'd2b48c',\n\tteO: '8080',\n\ttEstN: 'd8bfd8',\n\ttomato: 'ff6347',\n\tQe: '40e0d0',\n\tviTet: 'ee82ee',\n\tJHt: 'f5deb3',\n\twEte: 'ffffff',\n\twEtesmoke: 'f5f5f5',\n\tLw: 'ffff00',\n\tLwgYF: '9acd32'\n};\nfunction unpack() {\n const unpacked = {};\n const keys = Object.keys(names$1);\n const tkeys = Object.keys(map);\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, map[k]);\n }\n k = parseInt(names$1[ok], 16);\n unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n }\n return unpacked;\n}\n\nlet names;\nfunction nameParse(str) {\n if (!names) {\n names = unpack();\n names.transparent = [0, 0, 0, 0];\n }\n const a = names[str.toLowerCase()];\n return a && {\n r: a[0],\n g: a[1],\n b: a[2],\n a: a.length === 4 ? a[3] : 255\n };\n}\n\nconst 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;\n }\n if (m[7] !== r) {\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 r: r,\n g: g,\n b: b,\n a: a\n };\n}\nfunction rgbString(v) {\n return v && (\n v.a < 255\n ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n : `rgb(${v.r}, ${v.g}, ${v.b})`\n );\n}\n\nconst to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;\nconst from = v => v <= 0.04045 ? v / 12.92 : Math.pow((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 r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),\n g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n a: rgb1.a + t * (rgb2.a - rgb1.a)\n };\n}\n\nconst COMMENT_REGEXP = /\\/\\*[^]*?\\*\\//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 var v = {r: 0, g: 0, b: 0, a: 255};\n if (Array.isArray(input)) {\n if (input.length >= 3) {\n v = {r: input[0], g: input[1], b: input[2], a: 255};\n if (input.length > 3) {\n v.a = n2b(input[3]);\n }\n }\n } else {\n v = clone(input, {r: 0, g: 0, b: 0, a: 1});\n v.a = n2b(v.a);\n }\n return v;\n}\nfunction functionParse(str) {\n if (str.charAt(0) === 'r') {\n return rgbParse(str);\n }\n return hueParse(str);\n}\nclass Color {\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 const clean = input.replace(COMMENT_REGEXP, '');\n v = hexParse(clean) || nameParse(clean) || functionParse(clean);\n }\n this._rgb = v;\n this._valid = !!v;\n }\n get valid() {\n return this._valid;\n }\n get rgb() {\n var v = clone(this._rgb);\n if (v) {\n v.a = b2n(v.a);\n }\n return v;\n }\n set rgb(obj) {\n this._rgb = fromObject(obj);\n }\n rgbString() {\n return this._valid ? rgbString(this._rgb) : undefined;\n }\n hexString() {\n return this._valid ? hexString(this._rgb) : undefined;\n }\n hslString() {\n return this._valid ? hslString(this._rgb) : undefined;\n }\n mix(color, weight) {\n if (color) {\n const c1 = this.rgb;\n const c2 = color.rgb;\n let w2;\n const p = weight === w2 ? 0.5 : weight;\n const w = 2 * p - 1;\n const a = c1.a - c2.a;\n const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n w2 = 1 - w1;\n c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n c1.a = p * c1.a + (1 - p) * c2.a;\n this.rgb = c1;\n }\n return this;\n }\n interpolate(color, t) {\n if (color) {\n this._rgb = interpolate(this._rgb, color._rgb, t);\n }\n return this;\n }\n clone() {\n return new Color(this.rgb);\n }\n alpha(a) {\n this._rgb.a = n2b(a);\n return this;\n }\n clearer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 - ratio;\n return this;\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 opaquer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 + ratio;\n return this;\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 lighten(ratio) {\n modHSL(this._rgb, 2, ratio);\n return this;\n }\n darken(ratio) {\n modHSL(this._rgb, 2, -ratio);\n return this;\n }\n saturate(ratio) {\n modHSL(this._rgb, 1, ratio);\n return this;\n }\n desaturate(ratio) {\n modHSL(this._rgb, 1, -ratio);\n return this;\n }\n rotate(deg) {\n rotate(this._rgb, deg);\n return this;\n }\n}\n\nfunction index_esm(input) {\n return new Color(input);\n}\n\nexport { Color, b2n, b2p, index_esm as default, hexParse, hexString, hsl2rgb, hslString, hsv2rgb, hueParse, hwb2rgb, lim, n2b, n2p, nameParse, p2b, rgb2hsl, rgbParse, rgbString, rotate, round };\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":"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","x_google_ignoreList":[0]}
@@ -1,7 +1,7 @@
1
1
  /*!
2
- * chartjs-plugin-autocolors v0.3.1
2
+ * chartjs-plugin-autocolors v0.0.0-development
3
3
  * https://github.com/kurkle/chartjs-plugin-autocolors#readme
4
- * (c) 2024 Jukka Kurkela <jukka.kurkela@gmail.com>
4
+ * (c) 2026 Jukka Kurkela <jukka.kurkela@gmail.com>
5
5
  * Released under the MIT license
6
6
  */
7
7
  import { hsv2rgb, rgbString } from '@kurkle/color';
@@ -24,11 +24,17 @@ function* colorGen(repeat = 1) {
24
24
  while (!h.done) {
25
25
  let rgb = hsv2rgb(Math.round(h.value * 360), 0.6, 0.8);
26
26
  for (let i = 0; i < repeat; i++) {
27
- yield {background: rgbString({r: rgb[0], g: rgb[1], b: rgb[2], a: 192}), border: rgbString({r: rgb[0], g: rgb[1], b: rgb[2], a: 144})};
27
+ yield {
28
+ background: rgbString({ a: 192, b: rgb[2], g: rgb[1], r: rgb[0] }),
29
+ border: rgbString({ a: 144, b: rgb[2], g: rgb[1], r: rgb[0] }),
30
+ };
28
31
  }
29
32
  rgb = hsv2rgb(Math.round(h.value * 360), 0.6, 0.5);
30
33
  for (let i = 0; i < repeat; i++) {
31
- yield {background: rgbString({r: rgb[0], g: rgb[1], b: rgb[2], a: 192}), border: rgbString({r: rgb[0], g: rgb[1], b: rgb[2], a: 144})};
34
+ yield {
35
+ background: rgbString({ a: 192, b: rgb[2], g: rgb[1], r: rgb[0] }),
36
+ border: rgbString({ a: 144, b: rgb[2], g: rgb[1], r: rgb[0] }),
37
+ };
32
38
  }
33
39
  h = hue.next();
34
40
  }
@@ -42,25 +48,29 @@ function setColors(dataset, background, border, mode) {
42
48
  dataset.backgroundColor = dataset.backgroundColor || background;
43
49
  dataset.borderColor = dataset.borderColor || border;
44
50
  }
45
- return dataset.backgroundColor === background && dataset.borderColor === border;
51
+ return dataset.backgroundColor === background && dataset.borderColor === border
46
52
  }
47
53
 
48
54
  function getNext(color, customize, context) {
49
55
  const c = color.next().value;
50
56
  if (typeof customize === 'function') {
51
- return customize(Object.assign({colors: c}, context));
57
+ return customize(Object.assign({ colors: c }, context))
52
58
  }
53
- return c;
59
+ return c
54
60
  }
55
61
 
56
62
  function defaultMode(chart, gen, customize, mode) {
57
63
  const datasetMode = mode === 'dataset';
58
64
 
59
- let c = getNext(gen, customize, {chart, datasetIndex: 0, dataIndex: datasetMode ? undefined : 0});
65
+ let c = getNext(gen, customize, {
66
+ chart,
67
+ dataIndex: datasetMode ? undefined : 0,
68
+ datasetIndex: 0,
69
+ });
60
70
  for (const dataset of chart.data.datasets) {
61
71
  if (datasetMode) {
62
72
  if (setColors(dataset, c.background, c.border, mode)) {
63
- c = getNext(gen, customize, {chart, datasetIndex: dataset.index});
73
+ c = getNext(gen, customize, { chart, datasetIndex: dataset.index });
64
74
  }
65
75
  } else {
66
76
  const background = [];
@@ -68,12 +78,11 @@ function defaultMode(chart, gen, customize, mode) {
68
78
  for (let i = 0; i < dataset.data.length; i++) {
69
79
  background.push(c.background);
70
80
  border.push(c.border);
71
- c = getNext(gen, customize, {chart, datasetIndex: dataset.index, dataIndex: i});
81
+ c = getNext(gen, customize, { chart, dataIndex: i, datasetIndex: dataset.index });
72
82
  }
73
83
  setColors(dataset, background, border, mode);
74
84
  }
75
85
  }
76
-
77
86
  }
78
87
 
79
88
  function labelMode(chart, gen, customize, mode) {
@@ -81,7 +90,12 @@ function labelMode(chart, gen, customize, mode) {
81
90
  for (const dataset of chart.data.datasets) {
82
91
  const label = dataset.label ?? '';
83
92
  if (!colors[label]) {
84
- colors[label] = getNext(gen, customize, {chart, datasetIndex: 0, dataIndex: undefined, label});
93
+ colors[label] = getNext(gen, customize, {
94
+ chart,
95
+ dataIndex: undefined,
96
+ datasetIndex: 0,
97
+ label,
98
+ });
85
99
  }
86
100
  const c = colors[label];
87
101
  setColors(dataset, c.background, c.border, mode);
@@ -89,12 +103,11 @@ function labelMode(chart, gen, customize, mode) {
89
103
  }
90
104
 
91
105
  const autocolorPlugin = {
92
- id: 'autocolors',
93
106
  beforeUpdate(chart, args, options) {
94
- const {mode = 'dataset', enabled = true, customize, repeat} = options;
107
+ const { mode = 'dataset', enabled = true, customize, repeat } = options;
95
108
 
96
109
  if (!enabled) {
97
- return;
110
+ return
98
111
  }
99
112
 
100
113
  const gen = colorGen(repeat);
@@ -107,10 +120,11 @@ const autocolorPlugin = {
107
120
  }
108
121
 
109
122
  if (mode === 'label') {
110
- return labelMode(chart, gen, customize, mode);
123
+ return labelMode(chart, gen, customize, mode)
111
124
  }
112
- return defaultMode(chart, gen, customize, mode);
125
+ return defaultMode(chart, gen, customize, mode)
113
126
  },
127
+ id: 'autocolors',
114
128
  };
115
129
 
116
130
  export { autocolorPlugin as default };
@@ -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 {background: rgbString({r: rgb[0], g: rgb[1], b: rgb[2], a: 192}), border: rgbString({r: rgb[0], g: rgb[1], b: rgb[2], a: 144})};\n }\n rgb = hsv2rgb(Math.round(h.value * 360), 0.6, 0.5);\n for (let i = 0; i < repeat; i++) {\n yield {background: rgbString({r: rgb[0], g: rgb[1], b: rgb[2], a: 192}), border: rgbString({r: rgb[0], g: rgb[1], b: rgb[2], a: 144})};\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, {chart, datasetIndex: 0, dataIndex: datasetMode ? undefined : 0});\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, datasetIndex: dataset.index, dataIndex: i});\n }\n setColors(dataset, background, border, mode);\n }\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, {chart, datasetIndex: 0, dataIndex: undefined, label});\n }\n const c = colors[label];\n setColors(dataset, c.background, c.border, mode);\n }\n}\n\nconst autocolorPlugin = {\n id: 'autocolors',\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};\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.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,14 +1,14 @@
1
1
  /*!
2
- * chartjs-plugin-autocolors v0.3.1
2
+ * chartjs-plugin-autocolors v0.0.0-development
3
3
  * https://github.com/kurkle/chartjs-plugin-autocolors#readme
4
- * (c) 2024 Jukka Kurkela <jukka.kurkela@gmail.com>
4
+ * (c) 2026 Jukka Kurkela <jukka.kurkela@gmail.com>
5
5
  * Released under the MIT license
6
6
  */
7
- !function(t,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o():"function"==typeof define&&define.amd?define(o):(t="undefined"!=typeof globalThis?globalThis:t||self)["chartjs-plugin-autocolors"]=o()}(this,(function(){"use strict";
7
+ !function(t,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o():"function"==typeof define&&define.amd?define(o):(t="undefined"!=typeof globalThis?globalThis:t||self)["chartjs-plugin-autocolors"]=o()}(this,function(){"use strict";
8
8
  /*!
9
- * @kurkle/color v0.3.2
9
+ * @kurkle/color v0.4.0
10
10
  * https://github.com/kurkle/color#readme
11
- * (c) 2023 Jukka Kurkela
11
+ * (c) 2025 Jukka Kurkela
12
12
  * Released under the MIT License
13
- */function t(t){return t+.5|0}const o=(t,o,e)=>Math.max(Math.min(t,e),o);function e(e){return o(t(255*e),0,255)}function n(t,o,e){const n=(n,r=(n+t/60)%6)=>e-e*o*Math.max(Math.min(r,4-r,1),0);return[n(5),n(3),n(1)]}function r(t,o,r){return a=n,d=t,u=o,c=r,(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,n){return"data"===n?(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 n=t.next().value;return"function"==typeof o?o(Object.assign({colors:n},e)):n}return{id:"autocolors",beforeUpdate(t,o,e){const{mode:n="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 n=r(Math.round(360*e.value),.6,.8);for(let o=0;o<t;o++)yield{background:a({r:n[0],g:n[1],b:n[2],a:192}),border:a({r:n[0],g:n[1],b:n[2],a:144})};n=r(Math.round(360*e.value),.6,.5);for(let o=0;o<t;o++)yield{background:a({r:n[0],g:n[1],b:n[2],a:192}),border:a({r:n[0],g:n[1],b:n[2],a:144})};e=o.next()}}(s);if(e.offset)for(let t=0;t<e.offset;t++)i.next();return"label"===n?function(t,o,e,n){const r={};for(const a of t.data.datasets){const c=a.label??"";r[c]||(r[c]=u(o,e,{chart:t,datasetIndex:0,dataIndex:void 0,label:c}));const f=r[c];d(a,f.background,f.border,n)}}(t,i,f,n):function(t,o,e,n){const r="dataset"===n;let a=u(o,e,{chart:t,datasetIndex:0,dataIndex:r?void 0:0});for(const c of t.data.datasets)if(r)d(c,a.background,a.border,n)&&(a=u(o,e,{chart:t,datasetIndex:c.index}));else{const r=[],f=[];for(let n=0;n<c.data.length;n++)r.push(a.background),f.push(a.border),a=u(o,e,{chart:t,datasetIndex:c.index,dataIndex:n});d(c,r,f,n)}}(t,i,f,n)}}}));
13
+ */function t(t){return t+.5|0}const o=(t,o,e)=>Math.max(Math.min(t,e),o);function e(e){return o(t(255*e),0,255)}function n(t,o,e){const n=(n,r=(n+t/60)%6)=>e-e*o*Math.max(Math.min(r,4-r,1),0);return[n(5),n(3),n(1)]}function r(t,o,r){return a=n,d=t,u=o,c=r,(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,n){return"data"===n?(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 n=t.next().value;return"function"==typeof o?o(Object.assign({colors:n},e)):n}return{beforeUpdate(t,o,e){const{mode:n="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 n=r(Math.round(360*e.value),.6,.8);for(let o=0;o<t;o++)yield{background:a({a:192,b:n[2],g:n[1],r:n[0]}),border:a({a:144,b:n[2],g:n[1],r:n[0]})};n=r(Math.round(360*e.value),.6,.5);for(let o=0;o<t;o++)yield{background:a({a:192,b:n[2],g:n[1],r:n[0]}),border:a({a:144,b:n[2],g:n[1],r:n[0]})};e=o.next()}}(s);if(e.offset)for(let t=0;t<e.offset;t++)i.next();return"label"===n?function(t,o,e,n){const r={};for(const a of t.data.datasets){const c=a.label??"";r[c]||(r[c]=u(o,e,{chart:t,dataIndex:void 0,datasetIndex:0,label:c}));const f=r[c];d(a,f.background,f.border,n)}}(t,i,f,n):function(t,o,e,n){const r="dataset"===n;let a=u(o,e,{chart:t,dataIndex:r?void 0:0,datasetIndex:0});for(const c of t.data.datasets)if(r)d(c,a.background,a.border,n)&&(a=u(o,e,{chart:t,datasetIndex:c.index}));else{const r=[],f=[];for(let n=0;n<c.data.length;n++)r.push(a.background),f.push(a.border),a=u(o,e,{chart:t,dataIndex:n,datasetIndex:c.index});d(c,r,f,n)}}(t,i,f,n)},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.3.2\n * https://github.com/kurkle/color#readme\n * (c) 2023 Jukka Kurkela\n * Released under the MIT License\n */\nfunction round(v) {\n return v + 0.5 | 0;\n}\nconst 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\nconst map$1 = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15};\nconst hex = [...'0123456789ABCDEF'];\nconst h1 = b => hex[b & 0xF];\nconst h2 = b => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = b => ((b & 0xF0) >> 4) === (b & 0xF);\nconst isShort = v => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n var len = str.length;\n var ret;\n if (str[0] === '#') {\n if (len === 4 || len === 5) {\n ret = {\n r: 255 & map$1[str[1]] * 17,\n g: 255 & map$1[str[2]] * 17,\n b: 255 & map$1[str[3]] * 17,\n a: len === 5 ? map$1[str[4]] * 17 : 255\n };\n } else if (len === 7 || len === 9) {\n ret = {\n r: map$1[str[1]] << 4 | map$1[str[2]],\n g: map$1[str[3]] << 4 | map$1[str[4]],\n b: map$1[str[5]] << 4 | map$1[str[6]],\n a: len === 9 ? (map$1[str[7]] << 4 | map$1[str[8]]) : 255\n };\n }\n }\n return ret;\n}\nconst alpha = (a, f) => a < 255 ? f(a) : '';\nfunction hexString(v) {\n var f = isShort(v) ? h1 : h2;\n return v\n ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f)\n : undefined;\n}\n\nconst 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, s, 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 (\n Array.isArray(a)\n ? f(a[0], a[1], a[2])\n : f(a, b, c)\n ).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;\n }\n if (m[5] !== v) {\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 r: v[0],\n g: v[1],\n b: v[2],\n a: a\n };\n}\nfunction rotate(v, deg) {\n var h = rgb2hsl(v);\n h[0] = hue(h[0] + deg);\n h = hsl2rgb(h);\n v.r = h[0];\n v.g = h[1];\n v.b = h[2];\n}\nfunction hslString(v) {\n if (!v) {\n return;\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\n ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n : `hsl(${h}, ${s}%, ${l}%)`;\n}\n\nconst map = {\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};\nconst names$1 = {\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$1);\n const tkeys = Object.keys(map);\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, map[k]);\n }\n k = parseInt(names$1[ok], 16);\n unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n }\n return unpacked;\n}\n\nlet names;\nfunction nameParse(str) {\n if (!names) {\n names = unpack();\n names.transparent = [0, 0, 0, 0];\n }\n const a = names[str.toLowerCase()];\n return a && {\n r: a[0],\n g: a[1],\n b: a[2],\n a: a.length === 4 ? a[3] : 255\n };\n}\n\nconst 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;\n }\n if (m[7] !== r) {\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 r: r,\n g: g,\n b: b,\n a: a\n };\n}\nfunction rgbString(v) {\n return v && (\n v.a < 255\n ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n : `rgb(${v.r}, ${v.g}, ${v.b})`\n );\n}\n\nconst to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;\nconst from = v => v <= 0.04045 ? v / 12.92 : Math.pow((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 r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),\n g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n a: rgb1.a + t * (rgb2.a - rgb1.a)\n };\n}\n\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 var v = {r: 0, g: 0, b: 0, a: 255};\n if (Array.isArray(input)) {\n if (input.length >= 3) {\n v = {r: input[0], g: input[1], b: input[2], a: 255};\n if (input.length > 3) {\n v.a = n2b(input[3]);\n }\n }\n } else {\n v = clone(input, {r: 0, g: 0, b: 0, a: 1});\n v.a = n2b(v.a);\n }\n return v;\n}\nfunction functionParse(str) {\n if (str.charAt(0) === 'r') {\n return rgbParse(str);\n }\n return hueParse(str);\n}\nclass Color {\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 get valid() {\n return this._valid;\n }\n get rgb() {\n var v = clone(this._rgb);\n if (v) {\n v.a = b2n(v.a);\n }\n return v;\n }\n set rgb(obj) {\n this._rgb = fromObject(obj);\n }\n rgbString() {\n return this._valid ? rgbString(this._rgb) : undefined;\n }\n hexString() {\n return this._valid ? hexString(this._rgb) : undefined;\n }\n hslString() {\n return this._valid ? hslString(this._rgb) : undefined;\n }\n mix(color, weight) {\n if (color) {\n const c1 = this.rgb;\n const c2 = color.rgb;\n let w2;\n const p = weight === w2 ? 0.5 : weight;\n const w = 2 * p - 1;\n const a = c1.a - c2.a;\n const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n w2 = 1 - w1;\n c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n c1.a = p * c1.a + (1 - p) * c2.a;\n this.rgb = c1;\n }\n return this;\n }\n interpolate(color, t) {\n if (color) {\n this._rgb = interpolate(this._rgb, color._rgb, t);\n }\n return this;\n }\n clone() {\n return new Color(this.rgb);\n }\n alpha(a) {\n this._rgb.a = n2b(a);\n return this;\n }\n clearer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 - ratio;\n return this;\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 opaquer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 + ratio;\n return this;\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 lighten(ratio) {\n modHSL(this._rgb, 2, ratio);\n return this;\n }\n darken(ratio) {\n modHSL(this._rgb, 2, -ratio);\n return this;\n }\n saturate(ratio) {\n modHSL(this._rgb, 1, ratio);\n return this;\n }\n desaturate(ratio) {\n modHSL(this._rgb, 1, -ratio);\n return this;\n }\n rotate(deg) {\n rotate(this._rgb, deg);\n return this;\n }\n}\n\nfunction index_esm(input) {\n return new Color(input);\n}\n\nexport { Color, b2n, b2p, index_esm as default, hexParse, hexString, hsl2rgb, hslString, hsv2rgb, hueParse, hwb2rgb, lim, n2b, n2p, nameParse, p2b, rgb2hsl, rgbParse, rgbString, rotate, round };\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 {background: rgbString({r: rgb[0], g: rgb[1], b: rgb[2], a: 192}), border: rgbString({r: rgb[0], g: rgb[1], b: rgb[2], a: 144})};\n }\n rgb = hsv2rgb(Math.round(h.value * 360), 0.6, 0.5);\n for (let i = 0; i < repeat; i++) {\n yield {background: rgbString({r: rgb[0], g: rgb[1], b: rgb[2], a: 192}), border: rgbString({r: rgb[0], g: rgb[1], b: rgb[2], a: 144})};\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, {chart, datasetIndex: 0, dataIndex: datasetMode ? undefined : 0});\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, datasetIndex: dataset.index, dataIndex: i});\n }\n setColors(dataset, background, border, mode);\n }\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, {chart, datasetIndex: 0, dataIndex: undefined, label});\n }\n const c = colors[label];\n setColors(dataset, c.background, c.border, mode);\n }\n}\n\nconst autocolorPlugin = {\n id: 'autocolors',\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};\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","id","beforeUpdate","chart","args","options","enabled","repeat","gen","hue","i","d","j","hueGen","done","rgb","colorGen","offset","data","datasets","label","datasetIndex","dataIndex","undefined","labelMode","datasetMode","index","length","push","defaultMode"],"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.4.0\n * https://github.com/kurkle/color#readme\n * (c) 2025 Jukka Kurkela\n * Released under the MIT License\n */\nfunction round(v) {\n return v + 0.5 | 0;\n}\nconst 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\nconst map$1 = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15};\nconst hex = [...'0123456789ABCDEF'];\nconst h1 = b => hex[b & 0xF];\nconst h2 = b => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = b => ((b & 0xF0) >> 4) === (b & 0xF);\nconst isShort = v => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n var len = str.length;\n var ret;\n if (str[0] === '#') {\n if (len === 4 || len === 5) {\n ret = {\n r: 255 & map$1[str[1]] * 17,\n g: 255 & map$1[str[2]] * 17,\n b: 255 & map$1[str[3]] * 17,\n a: len === 5 ? map$1[str[4]] * 17 : 255\n };\n } else if (len === 7 || len === 9) {\n ret = {\n r: map$1[str[1]] << 4 | map$1[str[2]],\n g: map$1[str[3]] << 4 | map$1[str[4]],\n b: map$1[str[5]] << 4 | map$1[str[6]],\n a: len === 9 ? (map$1[str[7]] << 4 | map$1[str[8]]) : 255\n };\n }\n }\n return ret;\n}\nconst alpha = (a, f) => a < 255 ? f(a) : '';\nfunction hexString(v) {\n var f = isShort(v) ? h1 : h2;\n return v\n ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f)\n : undefined;\n}\n\nconst 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, s, 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 (\n Array.isArray(a)\n ? f(a[0], a[1], a[2])\n : f(a, b, c)\n ).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;\n }\n if (m[5] !== v) {\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 r: v[0],\n g: v[1],\n b: v[2],\n a: a\n };\n}\nfunction rotate(v, deg) {\n var h = rgb2hsl(v);\n h[0] = hue(h[0] + deg);\n h = hsl2rgb(h);\n v.r = h[0];\n v.g = h[1];\n v.b = h[2];\n}\nfunction hslString(v) {\n if (!v) {\n return;\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\n ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n : `hsl(${h}, ${s}%, ${l}%)`;\n}\n\nconst map = {\n\tx: 'dark',\n\tZ: 'light',\n\tY: 're',\n\tX: 'blu',\n\tW: 'gr',\n\tV: 'medium',\n\tU: 'slate',\n\tA: 'ee',\n\tT: 'ol',\n\tS: 'or',\n\tB: 'ra',\n\tC: 'lateg',\n\tD: 'ights',\n\tR: 'in',\n\tQ: 'turquois',\n\tE: 'hi',\n\tP: 'ro',\n\tO: 'al',\n\tN: 'le',\n\tM: 'de',\n\tL: 'yello',\n\tF: 'en',\n\tK: 'ch',\n\tG: 'arks',\n\tH: 'ea',\n\tI: 'ightg',\n\tJ: 'wh'\n};\nconst names$1 = {\n\tOiceXe: 'f0f8ff',\n\tantiquewEte: 'faebd7',\n\taqua: 'ffff',\n\taquamarRe: '7fffd4',\n\tazuY: 'f0ffff',\n\tbeige: 'f5f5dc',\n\tbisque: 'ffe4c4',\n\tblack: '0',\n\tblanKedOmond: 'ffebcd',\n\tXe: 'ff',\n\tXeviTet: '8a2be2',\n\tbPwn: 'a52a2a',\n\tburlywood: 'deb887',\n\tcaMtXe: '5f9ea0',\n\tKartYuse: '7fff00',\n\tKocTate: 'd2691e',\n\tcSO: 'ff7f50',\n\tcSnflowerXe: '6495ed',\n\tcSnsilk: 'fff8dc',\n\tcrimson: 'dc143c',\n\tcyan: 'ffff',\n\txXe: '8b',\n\txcyan: '8b8b',\n\txgTMnPd: 'b8860b',\n\txWay: 'a9a9a9',\n\txgYF: '6400',\n\txgYy: 'a9a9a9',\n\txkhaki: 'bdb76b',\n\txmagFta: '8b008b',\n\txTivegYF: '556b2f',\n\txSange: 'ff8c00',\n\txScEd: '9932cc',\n\txYd: '8b0000',\n\txsOmon: 'e9967a',\n\txsHgYF: '8fbc8f',\n\txUXe: '483d8b',\n\txUWay: '2f4f4f',\n\txUgYy: '2f4f4f',\n\txQe: 'ced1',\n\txviTet: '9400d3',\n\tdAppRk: 'ff1493',\n\tdApskyXe: 'bfff',\n\tdimWay: '696969',\n\tdimgYy: '696969',\n\tdodgerXe: '1e90ff',\n\tfiYbrick: 'b22222',\n\tflSOwEte: 'fffaf0',\n\tfoYstWAn: '228b22',\n\tfuKsia: 'ff00ff',\n\tgaRsbSo: 'dcdcdc',\n\tghostwEte: 'f8f8ff',\n\tgTd: 'ffd700',\n\tgTMnPd: 'daa520',\n\tWay: '808080',\n\tgYF: '8000',\n\tgYFLw: 'adff2f',\n\tgYy: '808080',\n\thoneyMw: 'f0fff0',\n\thotpRk: 'ff69b4',\n\tRdianYd: 'cd5c5c',\n\tRdigo: '4b0082',\n\tivSy: 'fffff0',\n\tkhaki: 'f0e68c',\n\tlavFMr: 'e6e6fa',\n\tlavFMrXsh: 'fff0f5',\n\tlawngYF: '7cfc00',\n\tNmoncEffon: 'fffacd',\n\tZXe: 'add8e6',\n\tZcSO: 'f08080',\n\tZcyan: 'e0ffff',\n\tZgTMnPdLw: 'fafad2',\n\tZWay: 'd3d3d3',\n\tZgYF: '90ee90',\n\tZgYy: 'd3d3d3',\n\tZpRk: 'ffb6c1',\n\tZsOmon: 'ffa07a',\n\tZsHgYF: '20b2aa',\n\tZskyXe: '87cefa',\n\tZUWay: '778899',\n\tZUgYy: '778899',\n\tZstAlXe: 'b0c4de',\n\tZLw: 'ffffe0',\n\tlime: 'ff00',\n\tlimegYF: '32cd32',\n\tlRF: 'faf0e6',\n\tmagFta: 'ff00ff',\n\tmaPon: '800000',\n\tVaquamarRe: '66cdaa',\n\tVXe: 'cd',\n\tVScEd: 'ba55d3',\n\tVpurpN: '9370db',\n\tVsHgYF: '3cb371',\n\tVUXe: '7b68ee',\n\tVsprRggYF: 'fa9a',\n\tVQe: '48d1cc',\n\tVviTetYd: 'c71585',\n\tmidnightXe: '191970',\n\tmRtcYam: 'f5fffa',\n\tmistyPse: 'ffe4e1',\n\tmoccasR: 'ffe4b5',\n\tnavajowEte: 'ffdead',\n\tnavy: '80',\n\tTdlace: 'fdf5e6',\n\tTive: '808000',\n\tTivedBb: '6b8e23',\n\tSange: 'ffa500',\n\tSangeYd: 'ff4500',\n\tScEd: 'da70d6',\n\tpOegTMnPd: 'eee8aa',\n\tpOegYF: '98fb98',\n\tpOeQe: 'afeeee',\n\tpOeviTetYd: 'db7093',\n\tpapayawEp: 'ffefd5',\n\tpHKpuff: 'ffdab9',\n\tperu: 'cd853f',\n\tpRk: 'ffc0cb',\n\tplum: 'dda0dd',\n\tpowMrXe: 'b0e0e6',\n\tpurpN: '800080',\n\tYbeccapurpN: '663399',\n\tYd: 'ff0000',\n\tPsybrown: 'bc8f8f',\n\tPyOXe: '4169e1',\n\tsaddNbPwn: '8b4513',\n\tsOmon: 'fa8072',\n\tsandybPwn: 'f4a460',\n\tsHgYF: '2e8b57',\n\tsHshell: 'fff5ee',\n\tsiFna: 'a0522d',\n\tsilver: 'c0c0c0',\n\tskyXe: '87ceeb',\n\tUXe: '6a5acd',\n\tUWay: '708090',\n\tUgYy: '708090',\n\tsnow: 'fffafa',\n\tsprRggYF: 'ff7f',\n\tstAlXe: '4682b4',\n\ttan: 'd2b48c',\n\tteO: '8080',\n\ttEstN: 'd8bfd8',\n\ttomato: 'ff6347',\n\tQe: '40e0d0',\n\tviTet: 'ee82ee',\n\tJHt: 'f5deb3',\n\twEte: 'ffffff',\n\twEtesmoke: 'f5f5f5',\n\tLw: 'ffff00',\n\tLwgYF: '9acd32'\n};\nfunction unpack() {\n const unpacked = {};\n const keys = Object.keys(names$1);\n const tkeys = Object.keys(map);\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, map[k]);\n }\n k = parseInt(names$1[ok], 16);\n unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n }\n return unpacked;\n}\n\nlet names;\nfunction nameParse(str) {\n if (!names) {\n names = unpack();\n names.transparent = [0, 0, 0, 0];\n }\n const a = names[str.toLowerCase()];\n return a && {\n r: a[0],\n g: a[1],\n b: a[2],\n a: a.length === 4 ? a[3] : 255\n };\n}\n\nconst 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;\n }\n if (m[7] !== r) {\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 r: r,\n g: g,\n b: b,\n a: a\n };\n}\nfunction rgbString(v) {\n return v && (\n v.a < 255\n ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n : `rgb(${v.r}, ${v.g}, ${v.b})`\n );\n}\n\nconst to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;\nconst from = v => v <= 0.04045 ? v / 12.92 : Math.pow((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 r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),\n g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n a: rgb1.a + t * (rgb2.a - rgb1.a)\n };\n}\n\nconst COMMENT_REGEXP = /\\/\\*[^]*?\\*\\//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 var v = {r: 0, g: 0, b: 0, a: 255};\n if (Array.isArray(input)) {\n if (input.length >= 3) {\n v = {r: input[0], g: input[1], b: input[2], a: 255};\n if (input.length > 3) {\n v.a = n2b(input[3]);\n }\n }\n } else {\n v = clone(input, {r: 0, g: 0, b: 0, a: 1});\n v.a = n2b(v.a);\n }\n return v;\n}\nfunction functionParse(str) {\n if (str.charAt(0) === 'r') {\n return rgbParse(str);\n }\n return hueParse(str);\n}\nclass Color {\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 const clean = input.replace(COMMENT_REGEXP, '');\n v = hexParse(clean) || nameParse(clean) || functionParse(clean);\n }\n this._rgb = v;\n this._valid = !!v;\n }\n get valid() {\n return this._valid;\n }\n get rgb() {\n var v = clone(this._rgb);\n if (v) {\n v.a = b2n(v.a);\n }\n return v;\n }\n set rgb(obj) {\n this._rgb = fromObject(obj);\n }\n rgbString() {\n return this._valid ? rgbString(this._rgb) : undefined;\n }\n hexString() {\n return this._valid ? hexString(this._rgb) : undefined;\n }\n hslString() {\n return this._valid ? hslString(this._rgb) : undefined;\n }\n mix(color, weight) {\n if (color) {\n const c1 = this.rgb;\n const c2 = color.rgb;\n let w2;\n const p = weight === w2 ? 0.5 : weight;\n const w = 2 * p - 1;\n const a = c1.a - c2.a;\n const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n w2 = 1 - w1;\n c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n c1.a = p * c1.a + (1 - p) * c2.a;\n this.rgb = c1;\n }\n return this;\n }\n interpolate(color, t) {\n if (color) {\n this._rgb = interpolate(this._rgb, color._rgb, t);\n }\n return this;\n }\n clone() {\n return new Color(this.rgb);\n }\n alpha(a) {\n this._rgb.a = n2b(a);\n return this;\n }\n clearer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 - ratio;\n return this;\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 opaquer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 + ratio;\n return this;\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 lighten(ratio) {\n modHSL(this._rgb, 2, ratio);\n return this;\n }\n darken(ratio) {\n modHSL(this._rgb, 2, -ratio);\n return this;\n }\n saturate(ratio) {\n modHSL(this._rgb, 1, ratio);\n return this;\n }\n desaturate(ratio) {\n modHSL(this._rgb, 1, -ratio);\n return this;\n }\n rotate(deg) {\n rotate(this._rgb, deg);\n return this;\n }\n}\n\nfunction index_esm(input) {\n return new Color(input);\n}\n\nexport { Color, b2n, b2p, index_esm as default, hexParse, hexString, hsl2rgb, hslString, hsv2rgb, hueParse, hwb2rgb, lim, n2b, n2p, nameParse, p2b, rgb2hsl, rgbParse, rgbString, rotate, round };\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]}
package/package.json CHANGED
@@ -1,41 +1,46 @@
1
1
  {
2
- "name": "chartjs-plugin-autocolors",
3
- "version": "0.3.1",
2
+ "author": "Jukka Kurkela <jukka.kurkela@gmail.com>",
3
+ "bugs": {
4
+ "url": "https://github.com/kurkle/chartjs-plugin-autocolors/issues"
5
+ },
4
6
  "description": "Automatic color generation for Chart.js",
5
- "type": "module",
6
- "main": "dist/chartjs-plugin-autocolors.cjs",
7
- "module": "dist/chartjs-plugin-autocolors.esm.js",
8
- "types": "types/index.esm.d.ts",
9
- "jsdelivr": "dist/chartjs-plugin-autocolors.min.js",
10
- "unpkg": "dist/chartjs-plugin-autocolors.min.js",
7
+ "devDependencies": {
8
+ "@biomejs/biome": "^2.5.12",
9
+ "@kurkle/color": "^0.4.0",
10
+ "@kurkle/configs": "^1.0.1",
11
+ "@rollup/plugin-json": "^6.0.0",
12
+ "@rollup/plugin-node-resolve": "^16.0.0",
13
+ "@rollup/plugin-terser": "^1.0.0",
14
+ "chart.js": "^4.4.5",
15
+ "chartjs-test-utils": "^0.5.0",
16
+ "concurrently": "^9.0.0",
17
+ "cross-env": "^10.1.0",
18
+ "jasmine-core": "^6.3.0",
19
+ "karma": "^6.4.1",
20
+ "karma-chrome-launcher": "^3.1.1",
21
+ "karma-coverage": "^2.2.0",
22
+ "karma-firefox-launcher": "^2.1.2",
23
+ "karma-jasmine": "^5.1.0",
24
+ "karma-jasmine-html-reporter": "^2.0.0",
25
+ "karma-rollup-preprocessor": "7.0.7",
26
+ "karma-spec-reporter": "^0.0.36",
27
+ "rollup": "^4.21.2",
28
+ "rollup-plugin-istanbul": "^5.0.0",
29
+ "semantic-release": "^25.0.3",
30
+ "typescript": "^5.6.2"
31
+ },
11
32
  "exports": {
12
- "types": "./types/index.esm.d.ts",
13
33
  "import": "./dist/chartjs-plugin-autocolors.esm.js",
14
34
  "require": "./dist/chartjs-plugin-autocolors.cjs",
15
- "script": "./dist/chartjs-plugin-autocolors.min.js"
16
- },
17
- "sideEffects": false,
18
- "scripts": {
19
- "autobuild": "rollup -c -w",
20
- "build": "rollup -c",
21
- "dev": "karma start ./karma.conf.cjs --no-single-run --auto-watch --browsers chrome",
22
- "lint": "concurrently -r \"npm:lint-*\"",
23
- "lint-js": "eslint \"src/**/*.js\"",
24
- "lint-md": "eslint \"**/*.md\"",
25
- "lint-types": "eslint \"types/**/*.ts\" && tsc -p types/tests/",
26
- "lint-html": "eslint \"samples/**/*.html\"",
27
- "test": "cross-env NODE_ENV=test concurrently \"npm:test-*\"",
28
- "test-lint": "npm run lint",
29
- "test-karma": "karma start ./karma.conf.cjs --no-auto-watch --single-run"
30
- },
31
- "repository": {
32
- "type": "git",
33
- "url": "git+https://github.com/kurkle/chartjs-plugin-autocolors.git"
35
+ "script": "./dist/chartjs-plugin-autocolors.min.js",
36
+ "types": "./types/index.esm.d.ts"
34
37
  },
35
38
  "files": [
36
39
  "dist/*",
37
40
  "types/index.esm.d.ts"
38
41
  ],
42
+ "homepage": "https://github.com/kurkle/chartjs-plugin-autocolors#readme",
43
+ "jsdelivr": "dist/chartjs-plugin-autocolors.min.js",
39
44
  "keywords": [
40
45
  "chart.js",
41
46
  "plugin",
@@ -44,40 +49,32 @@
44
49
  "generator",
45
50
  "auto"
46
51
  ],
47
- "author": "Jukka Kurkela <jukka.kurkela@gmail.com>",
48
52
  "license": "MIT",
49
- "bugs": {
50
- "url": "https://github.com/kurkle/chartjs-plugin-autocolors/issues"
51
- },
52
- "homepage": "https://github.com/kurkle/chartjs-plugin-autocolors#readme",
53
- "devDependencies": {
54
- "@kurkle/color": "^0.3.1",
55
- "@rollup/plugin-json": "^6.0.0",
56
- "@rollup/plugin-node-resolve": "^15.0.1",
57
- "@rollup/plugin-terser": "^0.4.0",
58
- "@typescript-eslint/eslint-plugin": "^5.46.0",
59
- "chartjs-test-utils": "^0.5.0",
60
- "concurrently": "^7.6.0",
61
- "cross-env": "^7.0.3",
62
- "eslint": "^8.29.0",
63
- "eslint-config-chartjs": "^0.3.0",
64
- "eslint-plugin-es": "^4.1.0",
65
- "eslint-plugin-html": "^7.1.0",
66
- "eslint-plugin-markdown": "^3.0.0",
67
- "karma": "^6.4.1",
68
- "karma-chrome-launcher": "^3.1.1",
69
- "karma-coverage": "^2.2.0",
70
- "karma-firefox-launcher": "^2.1.2",
71
- "karma-jasmine": "^5.1.0",
72
- "karma-jasmine-html-reporter": "^2.0.0",
73
- "karma-rollup-preprocessor": "7.0.7",
74
- "karma-spec-reporter": "^0.0.36",
75
- "rollup": "^3.7.0",
76
- "rollup-plugin-istanbul": "^4.0.0",
77
- "typescript": "^4.9.4"
78
- },
53
+ "main": "dist/chartjs-plugin-autocolors.cjs",
54
+ "module": "dist/chartjs-plugin-autocolors.esm.js",
55
+ "name": "chartjs-plugin-autocolors",
79
56
  "peerDependencies": {
80
- "@kurkle/color": "^0.3.1",
57
+ "@kurkle/color": "^0.4.0",
81
58
  "chart.js": ">=2"
82
- }
59
+ },
60
+ "repository": {
61
+ "type": "git",
62
+ "url": "git+https://github.com/kurkle/chartjs-plugin-autocolors.git"
63
+ },
64
+ "scripts": {
65
+ "autobuild": "rollup -c -w",
66
+ "build": "rollup -c",
67
+ "dev": "karma start ./karma.conf.cjs --no-single-run --auto-watch --browsers chrome",
68
+ "format": "biome check --write",
69
+ "lint": "biome check",
70
+ "prepare": "git config core.hooksPath .githooks || true",
71
+ "test": "cross-env NODE_ENV=test concurrently \"npm:test-*\"",
72
+ "test-karma": "karma start ./karma.conf.cjs --no-auto-watch --single-run",
73
+ "typecheck": "tsc -p types/tests/"
74
+ },
75
+ "sideEffects": false,
76
+ "type": "module",
77
+ "types": "types/index.esm.d.ts",
78
+ "unpkg": "dist/chartjs-plugin-autocolors.min.js",
79
+ "version": "0.4.1"
83
80
  }
@@ -1,4 +1,4 @@
1
- import { Chart, ChartType } from 'chart.js';
1
+ import { Chart, ChartType } from 'chart.js'
2
2
 
3
3
  declare module 'chart.js' {
4
4
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -13,10 +13,10 @@ export interface ColorsDescriptor {
13
13
  }
14
14
 
15
15
  export interface AutocolorsOptions {
16
- enabled?: boolean,
17
- mode?: 'dataset' | 'data' | 'label',
18
- offset?: number,
19
- repeat?: number,
16
+ enabled?: boolean
17
+ mode?: 'dataset' | 'data' | 'label'
18
+ offset?: number
19
+ repeat?: number
20
20
  customize?: (ctx: AutocolorsContext, options: AutocolorsOptions) => ColorsDescriptor
21
21
  }
22
22
 
@@ -31,4 +31,4 @@ export interface AutocolorsContext {
31
31
  * Exports the plugin class as default
32
32
  */
33
33
  // eslint-disable-next-line @typescript-eslint/no-use-before-define
34
- export { autocolorPlugin as default };
34
+ export { autocolorPlugin as default }