chartjs-plugin-autocolors 0.4.1 → 0.4.3
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 +34 -137
- package/dist/chartjs-plugin-autocolors.cjs +8 -14
- package/dist/chartjs-plugin-autocolors.cjs.map +1 -1
- package/dist/chartjs-plugin-autocolors.esm.js +1 -1
- package/dist/chartjs-plugin-autocolors.esm.js.map +1 -1
- package/dist/chartjs-plugin-autocolors.min.js +4 -4
- package/dist/chartjs-plugin-autocolors.min.js.map +1 -1
- package/package.json +27 -10
package/README.md
CHANGED
|
@@ -1,19 +1,15 @@
|
|
|
1
1
|
# chartjs-plugin-autocolors
|
|
2
2
|
|
|
3
|
-
*Automatic color generation for [Chart.js](https://www.chartjs.org)*
|
|
4
|
-
|
|
5
3
|
[](https://www.npmjs.com/package/chartjs-plugin-autocolors)
|
|
6
4
|
[](https://github.com/kurkle/chartjs-plugin-autocolors/releases/latest)
|
|
7
5
|

|
|
8
6
|
[](https://sonarcloud.io/summary/new_code?id=kurkle_chartjs-plugin-autocolors)
|
|
9
|
-
[](https://chartjs-plugin-autocolors.pages.dev)
|
|
10
8
|

|
|
11
9
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
**NOTE** the plugin does not automatically register.
|
|
10
|
+
[Chart.js](https://www.chartjs.org/) plugin that automatically assigns a color to each dataset, data point, or
|
|
11
|
+
label — no more picking colors by hand or reusing the same few colors across every chart, for anyone already
|
|
12
|
+
charting with Chart.js.
|
|
17
13
|
|
|
18
14
|
## Example
|
|
19
15
|
|
|
@@ -21,159 +17,60 @@ This plugin requires Chart.js 3.0.0 or later. Could work with v2, but it is not
|
|
|
21
17
|
|
|
22
18
|
## Installation
|
|
23
19
|
|
|
24
|
-
NPM:
|
|
25
|
-
|
|
26
20
|
```bash
|
|
27
|
-
npm
|
|
21
|
+
npm install chart.js chartjs-plugin-autocolors
|
|
28
22
|
```
|
|
29
23
|
|
|
30
|
-
CDN:
|
|
24
|
+
Or via CDN:
|
|
31
25
|
|
|
32
26
|
```html
|
|
27
|
+
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
|
|
33
28
|
<script src="https://cdn.jsdelivr.net/npm/chartjs-plugin-autocolors"></script>
|
|
34
29
|
```
|
|
35
30
|
|
|
36
|
-
##
|
|
37
|
-
|
|
38
|
-
### loading
|
|
39
|
-
|
|
40
|
-
ESM
|
|
31
|
+
## Quickstart
|
|
41
32
|
|
|
42
33
|
```js
|
|
34
|
+
import { Chart, registerables } from 'chart.js';
|
|
43
35
|
import autocolors from 'chartjs-plugin-autocolors';
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
CDN
|
|
47
|
-
|
|
48
|
-
```js
|
|
49
|
-
const autocolors = window['chartjs-plugin-autocolors'];
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
### Registering
|
|
53
36
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
plugins: [
|
|
66
|
-
autocolors
|
|
67
|
-
]
|
|
37
|
+
Chart.register(...registerables, autocolors);
|
|
38
|
+
|
|
39
|
+
new Chart(document.getElementById('chart'), {
|
|
40
|
+
type: 'bar',
|
|
41
|
+
data: {
|
|
42
|
+
labels: ['Q1', 'Q2', 'Q3', 'Q4'],
|
|
43
|
+
datasets: [
|
|
44
|
+
{ label: 'Dataset 1', data: [12, 19, 8, 15] },
|
|
45
|
+
{ label: 'Dataset 2', data: [6, 11, 14, 9] },
|
|
46
|
+
],
|
|
47
|
+
},
|
|
68
48
|
});
|
|
69
49
|
```
|
|
70
50
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
If registered globally, it might be desirable to disable the autocolors for some charts
|
|
74
|
-
|
|
75
|
-
```js
|
|
76
|
-
const chart = new Chart(ctx, {
|
|
77
|
-
// ...
|
|
78
|
-
options: {
|
|
79
|
-
plugins: {
|
|
80
|
-
autocolors: {
|
|
81
|
-
enabled: false
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
});
|
|
86
|
-
```
|
|
51
|
+
See more integration options (script tag, other module loaders) in the [documentation](https://chartjs-plugin-autocolors.pages.dev/integration/).
|
|
87
52
|
|
|
88
|
-
|
|
53
|
+
## Documentation
|
|
89
54
|
|
|
90
|
-
|
|
55
|
+
You can find documentation for chartjs-plugin-autocolors at [https://chartjs-plugin-autocolors.pages.dev/](https://chartjs-plugin-autocolors.pages.dev/). Modes, customization, offset, repeat, and browser compatibility are all covered there, not in this README — this file stays a quickstart.
|
|
91
56
|
|
|
92
|
-
|
|
57
|
+
## Development
|
|
93
58
|
|
|
94
|
-
|
|
95
|
-
- In `'data'` mode, an array of colors, equivalent to the length of data is provided for each dataset.
|
|
96
|
-
- In `'label'` mode, color is picked for each different dataset label.
|
|
59
|
+
You first need to install node dependencies (requires [Node.js](https://nodejs.org/)):
|
|
97
60
|
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
// ...
|
|
101
|
-
options: {
|
|
102
|
-
plugins: {
|
|
103
|
-
autocolors: {
|
|
104
|
-
mode: 'data'
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
});
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
### Customize
|
|
112
|
-
|
|
113
|
-
A `customize` function can be provided to customize the generated colors.
|
|
114
|
-
The function is expected to return object containing `background` and `border` properties,
|
|
115
|
-
with values acceptable as colors by Chart.js.
|
|
116
|
-
|
|
117
|
-
```js
|
|
118
|
-
const lighten = (color, value) => Chart.helpers.color(color).lighten(value).rgbString();
|
|
119
|
-
|
|
120
|
-
const chart = new Chart(ctx, {
|
|
121
|
-
// ...
|
|
122
|
-
options: {
|
|
123
|
-
plugins: {
|
|
124
|
-
autocolors: {
|
|
125
|
-
customize(context) {
|
|
126
|
-
const colors = context.colors;
|
|
127
|
-
return {
|
|
128
|
-
background: lighten(colors.background, 0.5),
|
|
129
|
-
border: lighten(colors.border, 0.5)
|
|
130
|
-
};
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
});
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
### Offset
|
|
139
|
-
|
|
140
|
-
`offset` option can be used to offset the color generation by a number of colors.
|
|
141
|
-
|
|
142
|
-
```js
|
|
143
|
-
const chart = new Chart(ctx, {
|
|
144
|
-
// ...
|
|
145
|
-
options: {
|
|
146
|
-
plugins: {
|
|
147
|
-
autocolors: {
|
|
148
|
-
offset: 5
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
});
|
|
61
|
+
```bash
|
|
62
|
+
> npm install
|
|
153
63
|
```
|
|
154
64
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
Sometimes you might need to color multiple adjacent datasets with same color. The `repeat` option is for that use case.
|
|
158
|
-
|
|
65
|
+
The following commands will then be available from the repository root:
|
|
159
66
|
|
|
160
|
-
```
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
autocolors: {
|
|
166
|
-
repeat: 2
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
});
|
|
67
|
+
```bash
|
|
68
|
+
> npm run build // build dist files
|
|
69
|
+
> npm run autobuild // build and watch for changes
|
|
70
|
+
> npm test // run all tests
|
|
71
|
+
> npm run lint // perform code linting
|
|
171
72
|
```
|
|
172
73
|
|
|
173
|
-
## Browser compatibility
|
|
174
|
-
|
|
175
|
-
This plugin uses a generator function, so it is not compatible with Internet Explorer.
|
|
176
|
-
|
|
177
74
|
## License
|
|
178
75
|
|
|
179
|
-
|
|
76
|
+
chartjs-plugin-autocolors is available under the [MIT license](https://opensource.org/licenses/MIT).
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* chartjs-plugin-autocolors v0.
|
|
2
|
+
* chartjs-plugin-autocolors v0.4.3
|
|
3
3
|
* https://github.com/kurkle/chartjs-plugin-autocolors#readme
|
|
4
4
|
* (c) 2026 Jukka Kurkela <jukka.kurkela@gmail.com>
|
|
5
5
|
* Released under the MIT license
|
|
@@ -11,15 +11,17 @@ typeof define === 'function' && define.amd ? define(factory) :
|
|
|
11
11
|
})(this, (function () { 'use strict';
|
|
12
12
|
|
|
13
13
|
/*!
|
|
14
|
-
* @kurkle/color v0.
|
|
14
|
+
* @kurkle/color v0.0.0-development
|
|
15
15
|
* https://github.com/kurkle/color#readme
|
|
16
|
-
* (c)
|
|
16
|
+
* (c) 2026 Jukka Kurkela
|
|
17
17
|
* Released under the MIT License
|
|
18
18
|
*/
|
|
19
|
+
|
|
20
|
+
// src/byte.ts
|
|
19
21
|
function round(v) {
|
|
20
22
|
return v + 0.5 | 0;
|
|
21
23
|
}
|
|
22
|
-
|
|
24
|
+
var lim = (v, l, h) => Math.max(Math.min(v, h), l);
|
|
23
25
|
function n2b(v) {
|
|
24
26
|
return lim(round(v * 255), 0, 255);
|
|
25
27
|
}
|
|
@@ -31,21 +33,13 @@ function hsv2rgbn(h, s, v) {
|
|
|
31
33
|
return [f(5), f(3), f(1)];
|
|
32
34
|
}
|
|
33
35
|
function calln(f, a, b, c) {
|
|
34
|
-
return (
|
|
35
|
-
Array.isArray(a)
|
|
36
|
-
? f(a[0], a[1], a[2])
|
|
37
|
-
: f(a, b, c)
|
|
38
|
-
).map(n2b);
|
|
36
|
+
return (Array.isArray(a) ? f(a[0], a[1], a[2]) : f(a, b, c)).map(n2b);
|
|
39
37
|
}
|
|
40
38
|
function hsv2rgb(h, s, v) {
|
|
41
39
|
return calln(hsv2rgbn, h, s, v);
|
|
42
40
|
}
|
|
43
41
|
function rgbString(v) {
|
|
44
|
-
return v && (
|
|
45
|
-
v.a < 255
|
|
46
|
-
? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`
|
|
47
|
-
: `rgb(${v.r}, ${v.g}, ${v.b})`
|
|
48
|
-
);
|
|
42
|
+
return v && (v.a < 255 ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})` : `rgb(${v.r}, ${v.g}, ${v.b})`);
|
|
49
43
|
}
|
|
50
44
|
|
|
51
45
|
function* hueGen() {
|
|
@@ -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.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":";;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,KAAK,CAAC,CAAC,EAAE;AAClB,EAAE,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;AACpB;AACA,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AAOpD,SAAS,GAAG,CAAC,CAAC,EAAE;AAChB,EAAE,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;AACpC;AACA,SAAS,GAAG,CAAC,CAAC,EAAE;AAChB,EAAE,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AACzC;AA+CA,SAAS,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC3B,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AACvF,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3B;AAyCA,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC3B,EAAE,OAAO;AACT,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;AACnB,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1B,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AACjB,IAAI,GAAG,CAAC,GAAG,CAAC;AACZ;AAOA,SAAS,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AAC1B,EAAE,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACjC;AAgSA,SAAS,SAAS,CAAC,CAAC,EAAE;AACtB,EAAE,OAAO,CAAC;AACV,IAAI,CAAC,CAAC,CAAC,GAAG;AACV,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,GAAG;AACH;;ACnaA,UAAU,MAAM,GAAG;AACnB,EAAE,MAAM;AACR,EAAE,OAAO,IAAI,EAAE;AACf,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AACjC,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI;AACrB,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AACtC,QAAQ,MAAM,CAAC,GAAG;AAClB,MAAM;AACN,IAAI;AACJ,EAAE;AACF;;AAEA,UAAU,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,EAAE,MAAM,GAAG,GAAG,MAAM;AACpB,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI;AAClB,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE;AAClB,IAAI,IAAI,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG;AACzD,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AACrC,MAAM,MAAM;AACZ,QAAQ,UAAU,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1E,QAAQ,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AACtE;AACA,IAAI;AACJ,IAAI,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG;AACrD,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AACrC,MAAM,MAAM;AACZ,QAAQ,UAAU,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1E,QAAQ,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AACtE;AACA,IAAI;AACJ,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI;AAChB,EAAE;AACF;;AAEA,SAAS,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE;AACtD,EAAE,IAAI,IAAI,KAAK,MAAM,EAAE;AACvB,IAAI,OAAO,CAAC,eAAe,GAAG;AAC9B,IAAI,OAAO,CAAC,MAAM,GAAG;AACrB,EAAE,CAAC,MAAM;AACT,IAAI,OAAO,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI;AACzD,IAAI,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI;AACjD,EAAE;AACF,EAAE,OAAO,OAAO,CAAC,eAAe,KAAK,UAAU,IAAI,OAAO,CAAC,WAAW,KAAK;AAC3E;;AAEA,SAAS,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE;AAC5C,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;AACzB,EAAE,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE;AACvC,IAAI,OAAO,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC;AAC1D,EAAE;AACF,EAAE,OAAO;AACT;;AAEA,SAAS,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE;AAClD,EAAE,MAAM,WAAW,GAAG,IAAI,KAAK;;AAE/B,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE;AAClC,IAAI,KAAK;AACT,IAAI,SAAS,EAAE,WAAW,GAAG,SAAS,GAAG,CAAC;AAC1C,IAAI,YAAY,EAAE,CAAC;AACnB,GAAG;AACH,EAAE,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC7C,IAAI,IAAI,WAAW,EAAE;AACrB,MAAM,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;AAC5D,QAAQ,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC,KAAK,EAAE;AAC1E,MAAM;AACN,IAAI,CAAC,MAAM;AACX,MAAM,MAAM,UAAU,GAAG;AACzB,MAAM,MAAM,MAAM,GAAG;AACrB,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpD,QAAQ,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU;AACpC,QAAQ,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM;AAC5B,QAAQ,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,KAAK,EAAE;AACxF,MAAM;AACN,MAAM,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI;AACjD,IAAI;AACJ,EAAE;AACF;;AAEA,SAAS,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE;AAChD,EAAE,MAAM,MAAM,GAAG;AACjB,EAAE,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC7C,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI;AACnC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AACxB,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE;AAC9C,QAAQ,KAAK;AACb,QAAQ,SAAS,EAAE,SAAS;AAC5B,QAAQ,YAAY,EAAE,CAAC;AACvB,QAAQ,KAAK;AACb,OAAO;AACP,IAAI;AACJ,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK;AAC1B,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI;AACnD,EAAE;AACF;;AAEK,MAAC,eAAe,GAAG;AACxB,EAAE,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE;AACrC,IAAI,MAAM,EAAE,IAAI,GAAG,SAAS,EAAE,OAAO,GAAG,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG;;AAEpE,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB,MAAM;AACN,IAAI;;AAEJ,IAAI,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM;;AAE/B,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE;AACxB;AACA,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/C,QAAQ,GAAG,CAAC,IAAI;AAChB,MAAM;AACN,IAAI;;AAEJ,IAAI,IAAI,IAAI,KAAK,OAAO,EAAE;AAC1B,MAAM,OAAO,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI;AAClD,IAAI;AACJ,IAAI,OAAO,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI;AAClD,EAAE,CAAC;AACH,EAAE,EAAE,EAAE,YAAY;AAClB;;;;;;;;","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"chartjs-plugin-autocolors.cjs","sources":["../node_modules/@kurkle/color/dist/color.esm.js","../src/index.js"],"sourcesContent":["/*!\n * @kurkle/color v0.0.0-development\n * https://github.com/kurkle/color#readme\n * (c) 2026 Jukka Kurkela\n * Released under the MIT License\n */\n\n// src/byte.ts\nfunction round(v) {\n return v + 0.5 | 0;\n}\nvar lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n return lim(round(v * 2.55), 0, 255);\n}\nfunction b2p(v) {\n return lim(round(v / 2.55), 0, 100);\n}\nfunction n2b(v) {\n return lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n return lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n return lim(round(v * 100), 0, 100);\n}\n\n// src/hex.ts\nvar map = {\n 0: 0,\n 1: 1,\n 2: 2,\n 3: 3,\n 4: 4,\n 5: 5,\n 6: 6,\n 7: 7,\n 8: 8,\n 9: 9,\n A: 10,\n a: 10,\n B: 11,\n b: 11,\n C: 12,\n c: 12,\n D: 13,\n d: 13,\n E: 14,\n e: 14,\n F: 15,\n f: 15\n};\nvar hex = [...\"0123456789ABCDEF\"];\nvar h1 = (b) => hex[b & 15];\nvar h2 = (b) => hex[(b & 240) >> 4] + hex[b & 15];\nvar eq = (b) => (b & 240) >> 4 === (b & 15);\nvar isShort = (v) => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n if (str[0] !== \"#\") {\n return;\n }\n const len = str.length;\n if (len === 4 || len === 5) {\n return {\n a: len === 5 ? map[str[4]] << 4 | map[str[4]] : 255,\n b: map[str[3]] << 4 | map[str[3]],\n g: map[str[2]] << 4 | map[str[2]],\n r: map[str[1]] << 4 | map[str[1]]\n };\n }\n if (len === 7 || len === 9) {\n return {\n a: len === 9 ? map[str[7]] << 4 | map[str[8]] : 255,\n b: map[str[5]] << 4 | map[str[6]],\n g: map[str[3]] << 4 | map[str[4]],\n r: map[str[1]] << 4 | map[str[2]]\n };\n }\n}\nvar alpha = (a, f) => a < 255 ? f(a) : \"\";\nfunction hexString(v) {\n const f = v && isShort(v) ? h1 : h2;\n return v ? `#${f(v.r)}${f(v.g)}${f(v.b)}${alpha(v.a, f)}` : void 0;\n}\n\n// src/hue.ts\nvar HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n return [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n return [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n const rgb = hsl2rgbn(h, 1, 0.5);\n let i;\n if (w + b > 1) {\n i = 1 / (w + b);\n w *= i;\n b *= i;\n }\n for (i = 0; i < 3; i++) {\n rgb[i] *= 1 - w - b;\n rgb[i] += w;\n }\n return rgb;\n}\nfunction hueValue(r, g, b, d, max) {\n if (r === max) {\n return (g - b) / d + (g < b ? 6 : 0);\n }\n if (g === max) {\n return (b - r) / d + 2;\n }\n return (r - g) / d + 4;\n}\nfunction rgb2hsl(v) {\n const range = 255;\n const r = v.r / range;\n const g = v.g / range;\n const b = v.b / range;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n let h = 0;\n let s = 0;\n let d;\n if (max !== min) {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = hueValue(r, g, b, d, max);\n h = h * 60 + 0.5;\n }\n return [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n return (Array.isArray(a) ? f(a[0], a[1], a[2]) : f(a, b, c)).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n return calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n return calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n return calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n return (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n const m = HUE_RE.exec(str);\n let a = 255;\n let v;\n if (!m) {\n return void 0;\n }\n if (m[5] !== void 0) {\n a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n }\n const h = hue(+m[2]);\n const p1 = +m[3] / 100;\n const p2 = +m[4] / 100;\n if (m[1] === \"hwb\") {\n v = hwb2rgb(h, p1, p2);\n } else if (m[1] === \"hsv\") {\n v = hsv2rgb(h, p1, p2);\n } else {\n v = hsl2rgb(h, p1, p2);\n }\n return {\n a,\n b: v[2],\n g: v[1],\n r: v[0]\n };\n}\nfunction rotate(v, deg) {\n const h = rgb2hsl(v);\n h[0] = hue(h[0] + deg);\n const rgb = hsl2rgb(h);\n v.r = rgb[0];\n v.g = rgb[1];\n v.b = rgb[2];\n}\nfunction hslString(v) {\n if (!v) {\n return void 0;\n }\n const a = rgb2hsl(v);\n const h = a[0];\n const s = n2p(a[1]);\n const l = n2p(a[2]);\n return v.a < 255 ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})` : `hsl(${h}, ${s}%, ${l}%)`;\n}\n\n// src/packed.ts\nvar map2 = {\n x: \"dark\",\n Z: \"light\",\n Y: \"re\",\n X: \"blu\",\n W: \"gr\",\n V: \"medium\",\n U: \"slate\",\n A: \"ee\",\n T: \"ol\",\n S: \"or\",\n B: \"ra\",\n C: \"lateg\",\n D: \"ights\",\n R: \"in\",\n Q: \"turquois\",\n E: \"hi\",\n P: \"ro\",\n O: \"al\",\n N: \"le\",\n M: \"de\",\n L: \"yello\",\n F: \"en\",\n K: \"ch\",\n G: \"arks\",\n H: \"ea\",\n I: \"ightg\",\n J: \"wh\"\n};\nvar names = {\n OiceXe: \"f0f8ff\",\n antiquewEte: \"faebd7\",\n aqua: \"ffff\",\n aquamarRe: \"7fffd4\",\n azuY: \"f0ffff\",\n beige: \"f5f5dc\",\n bisque: \"ffe4c4\",\n black: \"0\",\n blanKedOmond: \"ffebcd\",\n Xe: \"ff\",\n XeviTet: \"8a2be2\",\n bPwn: \"a52a2a\",\n burlywood: \"deb887\",\n caMtXe: \"5f9ea0\",\n KartYuse: \"7fff00\",\n KocTate: \"d2691e\",\n cSO: \"ff7f50\",\n cSnflowerXe: \"6495ed\",\n cSnsilk: \"fff8dc\",\n crimson: \"dc143c\",\n cyan: \"ffff\",\n xXe: \"8b\",\n xcyan: \"8b8b\",\n xgTMnPd: \"b8860b\",\n xWay: \"a9a9a9\",\n xgYF: \"6400\",\n xgYy: \"a9a9a9\",\n xkhaki: \"bdb76b\",\n xmagFta: \"8b008b\",\n xTivegYF: \"556b2f\",\n xSange: \"ff8c00\",\n xScEd: \"9932cc\",\n xYd: \"8b0000\",\n xsOmon: \"e9967a\",\n xsHgYF: \"8fbc8f\",\n xUXe: \"483d8b\",\n xUWay: \"2f4f4f\",\n xUgYy: \"2f4f4f\",\n xQe: \"ced1\",\n xviTet: \"9400d3\",\n dAppRk: \"ff1493\",\n dApskyXe: \"bfff\",\n dimWay: \"696969\",\n dimgYy: \"696969\",\n dodgerXe: \"1e90ff\",\n fiYbrick: \"b22222\",\n flSOwEte: \"fffaf0\",\n foYstWAn: \"228b22\",\n fuKsia: \"ff00ff\",\n gaRsbSo: \"dcdcdc\",\n ghostwEte: \"f8f8ff\",\n gTd: \"ffd700\",\n gTMnPd: \"daa520\",\n Way: \"808080\",\n gYF: \"8000\",\n gYFLw: \"adff2f\",\n gYy: \"808080\",\n honeyMw: \"f0fff0\",\n hotpRk: \"ff69b4\",\n RdianYd: \"cd5c5c\",\n Rdigo: \"4b0082\",\n ivSy: \"fffff0\",\n khaki: \"f0e68c\",\n lavFMr: \"e6e6fa\",\n lavFMrXsh: \"fff0f5\",\n lawngYF: \"7cfc00\",\n NmoncEffon: \"fffacd\",\n ZXe: \"add8e6\",\n ZcSO: \"f08080\",\n Zcyan: \"e0ffff\",\n ZgTMnPdLw: \"fafad2\",\n ZWay: \"d3d3d3\",\n ZgYF: \"90ee90\",\n ZgYy: \"d3d3d3\",\n ZpRk: \"ffb6c1\",\n ZsOmon: \"ffa07a\",\n ZsHgYF: \"20b2aa\",\n ZskyXe: \"87cefa\",\n ZUWay: \"778899\",\n ZUgYy: \"778899\",\n ZstAlXe: \"b0c4de\",\n ZLw: \"ffffe0\",\n lime: \"ff00\",\n limegYF: \"32cd32\",\n lRF: \"faf0e6\",\n magFta: \"ff00ff\",\n maPon: \"800000\",\n VaquamarRe: \"66cdaa\",\n VXe: \"cd\",\n VScEd: \"ba55d3\",\n VpurpN: \"9370db\",\n VsHgYF: \"3cb371\",\n VUXe: \"7b68ee\",\n VsprRggYF: \"fa9a\",\n VQe: \"48d1cc\",\n VviTetYd: \"c71585\",\n midnightXe: \"191970\",\n mRtcYam: \"f5fffa\",\n mistyPse: \"ffe4e1\",\n moccasR: \"ffe4b5\",\n navajowEte: \"ffdead\",\n navy: \"80\",\n Tdlace: \"fdf5e6\",\n Tive: \"808000\",\n TivedBb: \"6b8e23\",\n Sange: \"ffa500\",\n SangeYd: \"ff4500\",\n ScEd: \"da70d6\",\n pOegTMnPd: \"eee8aa\",\n pOegYF: \"98fb98\",\n pOeQe: \"afeeee\",\n pOeviTetYd: \"db7093\",\n papayawEp: \"ffefd5\",\n pHKpuff: \"ffdab9\",\n peru: \"cd853f\",\n pRk: \"ffc0cb\",\n plum: \"dda0dd\",\n powMrXe: \"b0e0e6\",\n purpN: \"800080\",\n YbeccapurpN: \"663399\",\n Yd: \"ff0000\",\n Psybrown: \"bc8f8f\",\n PyOXe: \"4169e1\",\n saddNbPwn: \"8b4513\",\n sOmon: \"fa8072\",\n sandybPwn: \"f4a460\",\n sHgYF: \"2e8b57\",\n sHshell: \"fff5ee\",\n siFna: \"a0522d\",\n silver: \"c0c0c0\",\n skyXe: \"87ceeb\",\n UXe: \"6a5acd\",\n UWay: \"708090\",\n UgYy: \"708090\",\n snow: \"fffafa\",\n sprRggYF: \"ff7f\",\n stAlXe: \"4682b4\",\n tan: \"d2b48c\",\n teO: \"8080\",\n tEstN: \"d8bfd8\",\n tomato: \"ff6347\",\n Qe: \"40e0d0\",\n viTet: \"ee82ee\",\n JHt: \"f5deb3\",\n wEte: \"ffffff\",\n wEtesmoke: \"f5f5f5\",\n Lw: \"ffff00\",\n LwgYF: \"9acd32\"\n};\nfunction unpack() {\n const unpacked = {};\n const keys = Object.keys(names);\n const tkeys = Object.keys(map2);\n let i, j, k, ok, nk;\n for (i = 0; i < keys.length; i++) {\n ok = nk = keys[i];\n for (j = 0; j < tkeys.length; j++) {\n k = tkeys[j];\n nk = nk.replace(k, map2[k]);\n }\n k = parseInt(names[ok], 16);\n unpacked[nk] = [k >> 16 & 255, k >> 8 & 255, k & 255];\n }\n return unpacked;\n}\n\n// src/names.ts\nvar names2;\nfunction nameParse(str) {\n if (!names2) {\n names2 = unpack();\n names2.transparent = [0, 0, 0, 0];\n }\n const a = names2[str.toLowerCase()];\n return a && {\n a: a.length === 4 ? a[3] : 255,\n b: a[2],\n g: a[1],\n r: a[0]\n };\n}\n\n// src/rgb.ts\nvar RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n const m = RGB_RE.exec(str);\n let a = 255;\n let r, g, b;\n if (!m) {\n return void 0;\n }\n if (m[7] !== void 0) {\n const v = +m[7];\n a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\n }\n r = +m[1];\n g = +m[3];\n b = +m[5];\n r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));\n g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));\n b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));\n return {\n a,\n b,\n g,\n r\n };\n}\nfunction rgbString(v) {\n return v && (v.a < 255 ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})` : `rgb(${v.r}, ${v.g}, ${v.b})`);\n}\n\n// src/srgb.ts\nvar to = (v) => v <= 31308e-7 ? v * 12.92 : v ** (1 / 2.4) * 1.055 - 0.055;\nvar from = (v) => v <= 0.04045 ? v / 12.92 : ((v + 0.055) / 1.055) ** 2.4;\nfunction interpolate(rgb1, rgb2, t) {\n const r = from(b2n(rgb1.r));\n const g = from(b2n(rgb1.g));\n const b = from(b2n(rgb1.b));\n return {\n a: rgb1.a + t * (rgb2.a - rgb1.a),\n b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n r: n2b(to(r + t * (from(b2n(rgb2.r)) - r)))\n };\n}\n\n// src/color.ts\nvar COMMENT_REGEXP = /\\/\\*[\\s\\S]*?\\*\\//g;\nfunction modHSL(v, i, ratio) {\n if (v) {\n let tmp = rgb2hsl(v);\n tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n tmp = hsl2rgb(tmp);\n v.r = tmp[0];\n v.g = tmp[1];\n v.b = tmp[2];\n }\n}\nfunction clone(v, proto) {\n return v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n let v = { a: 255, b: 0, g: 0, r: 0 };\n if (Array.isArray(input)) {\n if (input.length >= 3) {\n v = { a: 255, b: input[2], g: input[1], r: input[0] };\n if (input.length > 3) {\n v.a = n2b(input[3]);\n }\n }\n } else {\n v = clone(input, { a: 1, b: 0, g: 0, r: 0 });\n v.a = n2b(v.a);\n }\n return v;\n}\nfunction functionParse(str) {\n const clean = str.replace(COMMENT_REGEXP, \"\").trim();\n if (clean.charAt(0) === \"r\") {\n return rgbParse(clean);\n }\n return hueParse(clean);\n}\nvar Color = class _Color {\n /**\n * constructor\n * @param input\n */\n constructor(input) {\n if (input instanceof _Color) {\n return input;\n }\n const type = typeof input;\n let v;\n if (type === \"object\") {\n v = fromObject(input);\n } else if (type === \"string\") {\n v = hexParse(input) || nameParse(input) || functionParse(input);\n }\n this._rgb = v;\n this._valid = !!v;\n }\n /**\n * `true` if this is a valid color\n * @returns {boolean}\n */\n get valid() {\n return this._valid;\n }\n /**\n * @returns {RGBA} - the color\n */\n get rgb() {\n const v = clone(this._rgb);\n if (v) {\n v.a = b2n(v.a);\n }\n return v;\n }\n /**\n * @param obj - the color\n */\n set rgb(obj) {\n this._rgb = fromObject(obj);\n }\n /**\n * rgb(a) string\n * @return {string|undefined}\n */\n rgbString() {\n return this._valid ? rgbString(this._rgb) : void 0;\n }\n /**\n * hex string\n * @return {string|undefined}\n */\n hexString() {\n return this._valid ? hexString(this._rgb) : void 0;\n }\n /**\n * hsl(a) string\n * @return {string|undefined}\n */\n hslString() {\n return this._valid ? hslString(this._rgb) : void 0;\n }\n /**\n * Mix another color to this color.\n * @param color - Color to mix in\n * @param weight - 0..1\n * @returns {Color}\n */\n mix(color, weight = 0.5) {\n if (color) {\n const c1 = this.rgb;\n const c2 = color.rgb;\n const w = 2 * weight - 1;\n const a = c1.a - c2.a;\n const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2;\n const w2 = 1 - w1;\n c1.r = 255 & w1 * c1.r + w2 * c2.r + 0.5;\n c1.g = 255 & w1 * c1.g + w2 * c2.g + 0.5;\n c1.b = 255 & w1 * c1.b + w2 * c2.b + 0.5;\n c1.a = weight * c1.a + (1 - weight) * c2.a;\n this.rgb = c1;\n }\n return this;\n }\n /**\n * Interpolate a color value between this and `color`\n * @param color\n * @param t - 0..1\n * @returns {Color}\n */\n interpolate(color, t) {\n if (color) {\n this._rgb = interpolate(this._rgb, color._rgb, t);\n }\n return this;\n }\n /**\n * Clone\n * @returns {Color}\n */\n clone() {\n return new _Color(this.rgb);\n }\n /**\n * Set alpha\n * @param a - the alpha [0..1]\n * @returns {Color}\n */\n alpha(a) {\n this._rgb.a = n2b(a);\n return this;\n }\n /**\n * Make clearer\n * @param ratio - ratio [0..1]\n * @returns {Color}\n */\n clearer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 - ratio;\n return this;\n }\n /**\n * Convert to grayscale\n * @returns {Color}\n */\n greyscale() {\n const rgb = this._rgb;\n const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n rgb.r = rgb.g = rgb.b = val;\n return this;\n }\n /**\n * Opaquer\n * @param ratio - ratio [0..1]\n * @returns {Color}\n */\n opaquer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 + ratio;\n return this;\n }\n /**\n * Negates the rgb value\n * @returns {Color}\n */\n negate() {\n const v = this._rgb;\n v.r = 255 - v.r;\n v.g = 255 - v.g;\n v.b = 255 - v.b;\n return this;\n }\n /**\n * Lighten\n * @param ratio - ratio [0..1]\n * @returns {Color}\n */\n lighten(ratio) {\n modHSL(this._rgb, 2, ratio);\n return this;\n }\n /**\n * Darken\n * @param ratio - ratio [0..1]\n * @returns {Color}\n */\n darken(ratio) {\n modHSL(this._rgb, 2, -ratio);\n return this;\n }\n /**\n * Saturate\n * @param ratio - ratio [0..1]\n * @returns {Color}\n */\n saturate(ratio) {\n modHSL(this._rgb, 1, ratio);\n return this;\n }\n /**\n * Desaturate\n * @param ratio - ratio [0..1]\n * @returns {Color}\n */\n desaturate(ratio) {\n modHSL(this._rgb, 1, -ratio);\n return this;\n }\n /**\n * Rotate\n * @param deg - degrees to rotate\n * @returns {Color}\n */\n rotate(deg) {\n rotate(this._rgb, deg);\n return this;\n }\n};\n\n// src/index.esm.ts\nfunction index_esm_default(input) {\n return new Color(input);\n}\nexport {\n Color,\n b2n,\n b2p,\n index_esm_default as default,\n hexParse,\n hexString,\n hsl2rgb,\n hslString,\n hsv2rgb,\n hueParse,\n hwb2rgb,\n interpolate,\n lim,\n n2b,\n n2p,\n nameParse,\n p2b,\n rgb2hsl,\n rgbParse,\n rgbString,\n rotate,\n round\n};\n//# sourceMappingURL=color.esm.js.map\n","import { hsv2rgb, rgbString } from '@kurkle/color'\n\nfunction* hueGen() {\n yield 0\n while (true) {\n for (let i = 1; i < 10; i++) {\n const d = 1 << i\n for (let j = 1; j <= d; j += 2) {\n yield j / d\n }\n }\n }\n}\n\nfunction* colorGen(repeat = 1) {\n const hue = hueGen()\n let h = hue.next()\n while (!h.done) {\n let rgb = hsv2rgb(Math.round(h.value * 360), 0.6, 0.8)\n for (let i = 0; i < repeat; i++) {\n yield {\n background: rgbString({ a: 192, b: rgb[2], g: rgb[1], r: rgb[0] }),\n border: rgbString({ a: 144, b: rgb[2], g: rgb[1], r: rgb[0] }),\n }\n }\n rgb = hsv2rgb(Math.round(h.value * 360), 0.6, 0.5)\n for (let i = 0; i < repeat; i++) {\n yield {\n background: rgbString({ a: 192, b: rgb[2], g: rgb[1], r: rgb[0] }),\n border: rgbString({ a: 144, b: rgb[2], g: rgb[1], r: rgb[0] }),\n }\n }\n h = hue.next()\n }\n}\n\nfunction setColors(dataset, background, border, mode) {\n if (mode === 'data') {\n dataset.backgroundColor = background\n dataset.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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chartjs-plugin-autocolors.esm.js","sources":["../src/index.js"],"sourcesContent":["import { hsv2rgb, rgbString } from '@kurkle/color'\n\nfunction* hueGen() {\n yield 0\n while (true) {\n for (let i = 1; i < 10; i++) {\n const d = 1 << i\n for (let j = 1; j <= d; j += 2) {\n yield j / d\n }\n }\n }\n}\n\nfunction* colorGen(repeat = 1) {\n const hue = hueGen()\n let h = hue.next()\n while (!h.done) {\n let rgb = hsv2rgb(Math.round(h.value * 360), 0.6, 0.8)\n for (let i = 0; i < repeat; i++) {\n yield {\n background: rgbString({ a: 192, b: rgb[2], g: rgb[1], r: rgb[0] }),\n border: rgbString({ a: 144, b: rgb[2], g: rgb[1], r: rgb[0] }),\n }\n }\n rgb = hsv2rgb(Math.round(h.value * 360), 0.6, 0.5)\n for (let i = 0; i < repeat; i++) {\n yield {\n background: rgbString({ a: 192, b: rgb[2], g: rgb[1], r: rgb[0] }),\n border: rgbString({ a: 144, b: rgb[2], g: rgb[1], r: rgb[0] }),\n }\n }\n h = hue.next()\n }\n}\n\nfunction setColors(dataset, background, border, mode) {\n if (mode === 'data') {\n dataset.backgroundColor = background\n dataset.border = border\n } else {\n dataset.backgroundColor = dataset.backgroundColor || background\n dataset.borderColor = dataset.borderColor || border\n }\n return dataset.backgroundColor === background && dataset.borderColor === border\n}\n\nfunction getNext(color, customize, context) {\n const c = color.next().value\n if (typeof customize === 'function') {\n return customize(Object.assign({ colors: c }, context))\n }\n return c\n}\n\nfunction defaultMode(chart, gen, customize, mode) {\n const datasetMode = mode === 'dataset'\n\n let c = getNext(gen, customize, {\n chart,\n dataIndex: datasetMode ? undefined : 0,\n datasetIndex: 0,\n })\n for (const dataset of chart.data.datasets) {\n if (datasetMode) {\n if (setColors(dataset, c.background, c.border, mode)) {\n c = getNext(gen, customize, { chart, datasetIndex: dataset.index })\n }\n } else {\n const background = []\n const border = []\n for (let i = 0; i < dataset.data.length; i++) {\n background.push(c.background)\n border.push(c.border)\n c = getNext(gen, customize, { chart, dataIndex: i, datasetIndex: dataset.index })\n }\n setColors(dataset, background, border, mode)\n }\n }\n}\n\nfunction labelMode(chart, gen, customize, mode) {\n const colors = {}\n for (const dataset of chart.data.datasets) {\n const label = dataset.label ?? ''\n if (!colors[label]) {\n colors[label] = getNext(gen, customize, {\n chart,\n dataIndex: undefined,\n datasetIndex: 0,\n label,\n })\n }\n const c = colors[label]\n setColors(dataset, c.background, c.border, mode)\n }\n}\n\nconst autocolorPlugin = {\n beforeUpdate(chart, args, options) {\n const { mode = 'dataset', enabled = true, customize, repeat } = options\n\n if (!enabled) {\n return\n }\n\n const gen = colorGen(repeat)\n\n if (options.offset) {\n // offset the color generation by n colors\n for (let i = 0; i < options.offset; i++) {\n gen.next()\n }\n }\n\n if (mode === 'label') {\n return labelMode(chart, gen, customize, mode)\n }\n return defaultMode(chart, gen, customize, mode)\n },\n id: 'autocolors',\n}\n\nexport { autocolorPlugin as default }\n"],"names":[],"mappings":";;;;;;;;AAEA,UAAU,MAAM,GAAG;AACnB,EAAE,MAAM;AACR,EAAE,OAAO,IAAI,EAAE;AACf,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;AACjC,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI;AACrB,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AACtC,QAAQ,MAAM,CAAC,GAAG;AAClB,MAAM;AACN,IAAI;AACJ,EAAE;AACF;;AAEA,UAAU,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,EAAE,MAAM,GAAG,GAAG,MAAM;AACpB,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI;AAClB,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE;AAClB,IAAI,IAAI,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG;AACzD,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AACrC,MAAM,MAAM;AACZ,QAAQ,UAAU,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1E,QAAQ,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AACtE;AACA,IAAI;AACJ,IAAI,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG;AACrD,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;AACrC,MAAM,MAAM;AACZ,QAAQ,UAAU,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1E,QAAQ,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AACtE;AACA,IAAI;AACJ,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI;AAChB,EAAE;AACF;;AAEA,SAAS,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE;AACtD,EAAE,IAAI,IAAI,KAAK,MAAM,EAAE;AACvB,IAAI,OAAO,CAAC,eAAe,GAAG;AAC9B,IAAI,OAAO,CAAC,MAAM,GAAG;AACrB,EAAE,CAAC,MAAM;AACT,IAAI,OAAO,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI;AACzD,IAAI,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI;AACjD,EAAE;AACF,EAAE,OAAO,OAAO,CAAC,eAAe,KAAK,UAAU,IAAI,OAAO,CAAC,WAAW,KAAK;AAC3E;;AAEA,SAAS,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE;AAC5C,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;AACzB,EAAE,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE;AACvC,IAAI,OAAO,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC;AAC1D,EAAE;AACF,EAAE,OAAO;AACT;;AAEA,SAAS,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE;AAClD,EAAE,MAAM,WAAW,GAAG,IAAI,KAAK;;AAE/B,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE;AAClC,IAAI,KAAK;AACT,IAAI,SAAS,EAAE,WAAW,GAAG,SAAS,GAAG,CAAC;AAC1C,IAAI,YAAY,EAAE,CAAC;AACnB,GAAG;AACH,EAAE,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC7C,IAAI,IAAI,WAAW,EAAE;AACrB,MAAM,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;AAC5D,QAAQ,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC,KAAK,EAAE;AAC1E,MAAM;AACN,IAAI,CAAC,MAAM;AACX,MAAM,MAAM,UAAU,GAAG;AACzB,MAAM,MAAM,MAAM,GAAG;AACrB,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpD,QAAQ,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU;AACpC,QAAQ,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM;AAC5B,QAAQ,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,KAAK,EAAE;AACxF,MAAM;AACN,MAAM,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI;AACjD,IAAI;AACJ,EAAE;AACF;;AAEA,SAAS,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE;AAChD,EAAE,MAAM,MAAM,GAAG;AACjB,EAAE,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC7C,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI;AACnC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AACxB,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE;AAC9C,QAAQ,KAAK;AACb,QAAQ,SAAS,EAAE,SAAS;AAC5B,QAAQ,YAAY,EAAE,CAAC;AACvB,QAAQ,KAAK;AACb,OAAO;AACP,IAAI;AACJ,IAAI,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK;AAC1B,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI;AACnD,EAAE;AACF;;AAEK,MAAC,eAAe,GAAG;AACxB,EAAE,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE;AACrC,IAAI,MAAM,EAAE,IAAI,GAAG,SAAS,EAAE,OAAO,GAAG,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG;;AAEpE,IAAI,IAAI,CAAC,OAAO,EAAE;AAClB,MAAM;AACN,IAAI;;AAEJ,IAAI,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM;;AAE/B,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE;AACxB;AACA,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/C,QAAQ,GAAG,CAAC,IAAI;AAChB,MAAM;AACN,IAAI;;AAEJ,IAAI,IAAI,IAAI,KAAK,OAAO,EAAE;AAC1B,MAAM,OAAO,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI;AAClD,IAAI;AACJ,IAAI,OAAO,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI;AAClD,EAAE,CAAC;AACH,EAAE,EAAE,EAAE,YAAY;AAClB
|
|
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.
|
|
2
|
+
* chartjs-plugin-autocolors v0.4.3
|
|
3
3
|
* https://github.com/kurkle/chartjs-plugin-autocolors#readme
|
|
4
4
|
* (c) 2026 Jukka Kurkela <jukka.kurkela@gmail.com>
|
|
5
5
|
* Released under the MIT license
|
|
6
6
|
*/
|
|
7
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.
|
|
9
|
+
* @kurkle/color v0.0.0-development
|
|
10
10
|
* https://github.com/kurkle/color#readme
|
|
11
|
-
* (c)
|
|
11
|
+
* (c) 2026 Jukka Kurkela
|
|
12
12
|
* Released under the MIT License
|
|
13
|
-
*/function t(t){return t+.5|0}
|
|
13
|
+
*/function t(t){return t+.5|0}var o=(t,o,e)=>Math.max(Math.min(t,e),o);function e(e){return o(t(255*e),0,255)}function r(t,o,e){const r=(r,n=(r+t/60)%6)=>e-e*o*Math.max(Math.min(n,4-n,1),0);return[r(5),r(3),r(1)]}function n(t,o,n){return a=r,d=t,u=o,c=n,(Array.isArray(d)?a(d[0],d[1],d[2]):a(d,u,c)).map(e);var a,d,u,c}function a(e){return e&&(e.a<255?`rgba(${e.r}, ${e.g}, ${e.b}, ${function(e){return o(t(e/2.55)/100,0,1)}(e.a)})`:`rgb(${e.r}, ${e.g}, ${e.b})`)}function d(t,o,e,r){return"data"===r?(t.backgroundColor=o,t.border=e):(t.backgroundColor=t.backgroundColor||o,t.borderColor=t.borderColor||e),t.backgroundColor===o&&t.borderColor===e}function u(t,o,e){const r=t.next().value;return"function"==typeof o?o(Object.assign({colors:r},e)):r}return{beforeUpdate(t,o,e){const{mode:r="dataset",enabled:c=!0,customize:f,repeat:s}=e;if(!c)return;const i=function*(t=1){const o=function*(){for(yield 0;;)for(let t=1;t<10;t++){const o=1<<t;for(let t=1;t<=o;t+=2)yield t/o}}();let e=o.next();for(;!e.done;){let r=n(Math.round(360*e.value),.6,.8);for(let o=0;o<t;o++)yield{background:a({a:192,b:r[2],g:r[1],r:r[0]}),border:a({a:144,b:r[2],g:r[1],r:r[0]})};r=n(Math.round(360*e.value),.6,.5);for(let o=0;o<t;o++)yield{background:a({a:192,b:r[2],g:r[1],r:r[0]}),border:a({a:144,b:r[2],g:r[1],r:r[0]})};e=o.next()}}(s);if(e.offset)for(let t=0;t<e.offset;t++)i.next();return"label"===r?function(t,o,e,r){const n={};for(const a of t.data.datasets){const c=a.label??"";n[c]||(n[c]=u(o,e,{chart:t,dataIndex:void 0,datasetIndex:0,label:c}));const f=n[c];d(a,f.background,f.border,r)}}(t,i,f,r):function(t,o,e,r){const n="dataset"===r;let a=u(o,e,{chart:t,dataIndex:n?void 0:0,datasetIndex:0});for(const c of t.data.datasets)if(n)d(c,a.background,a.border,r)&&(a=u(o,e,{chart:t,datasetIndex:c.index}));else{const n=[],f=[];for(let r=0;r<c.data.length;r++)n.push(a.background),f.push(a.border),a=u(o,e,{chart:t,dataIndex:r,datasetIndex:c.index});d(c,n,f,r)}}(t,i,f,r)},id:"autocolors"}});
|
|
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.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]}
|
|
1
|
+
{"version":3,"file":"chartjs-plugin-autocolors.min.js","sources":["../node_modules/@kurkle/color/dist/color.esm.js","../src/index.js"],"sourcesContent":["/*!\n * @kurkle/color v0.0.0-development\n * https://github.com/kurkle/color#readme\n * (c) 2026 Jukka Kurkela\n * Released under the MIT License\n */\n\n// src/byte.ts\nfunction round(v) {\n return v + 0.5 | 0;\n}\nvar lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n return lim(round(v * 2.55), 0, 255);\n}\nfunction b2p(v) {\n return lim(round(v / 2.55), 0, 100);\n}\nfunction n2b(v) {\n return lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n return lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n return lim(round(v * 100), 0, 100);\n}\n\n// src/hex.ts\nvar map = {\n 0: 0,\n 1: 1,\n 2: 2,\n 3: 3,\n 4: 4,\n 5: 5,\n 6: 6,\n 7: 7,\n 8: 8,\n 9: 9,\n A: 10,\n a: 10,\n B: 11,\n b: 11,\n C: 12,\n c: 12,\n D: 13,\n d: 13,\n E: 14,\n e: 14,\n F: 15,\n f: 15\n};\nvar hex = [...\"0123456789ABCDEF\"];\nvar h1 = (b) => hex[b & 15];\nvar h2 = (b) => hex[(b & 240) >> 4] + hex[b & 15];\nvar eq = (b) => (b & 240) >> 4 === (b & 15);\nvar isShort = (v) => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n if (str[0] !== \"#\") {\n return;\n }\n const len = str.length;\n if (len === 4 || len === 5) {\n return {\n a: len === 5 ? map[str[4]] << 4 | map[str[4]] : 255,\n b: map[str[3]] << 4 | map[str[3]],\n g: map[str[2]] << 4 | map[str[2]],\n r: map[str[1]] << 4 | map[str[1]]\n };\n }\n if (len === 7 || len === 9) {\n return {\n a: len === 9 ? map[str[7]] << 4 | map[str[8]] : 255,\n b: map[str[5]] << 4 | map[str[6]],\n g: map[str[3]] << 4 | map[str[4]],\n r: map[str[1]] << 4 | map[str[2]]\n };\n }\n}\nvar alpha = (a, f) => a < 255 ? f(a) : \"\";\nfunction hexString(v) {\n const f = v && isShort(v) ? h1 : h2;\n return v ? `#${f(v.r)}${f(v.g)}${f(v.b)}${alpha(v.a, f)}` : void 0;\n}\n\n// src/hue.ts\nvar HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n return [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n return [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n const rgb = hsl2rgbn(h, 1, 0.5);\n let i;\n if (w + b > 1) {\n i = 1 / (w + b);\n w *= i;\n b *= i;\n }\n for (i = 0; i < 3; i++) {\n rgb[i] *= 1 - w - b;\n rgb[i] += w;\n }\n return rgb;\n}\nfunction hueValue(r, g, b, d, max) {\n if (r === max) {\n return (g - b) / d + (g < b ? 6 : 0);\n }\n if (g === max) {\n return (b - r) / d + 2;\n }\n return (r - g) / d + 4;\n}\nfunction rgb2hsl(v) {\n const range = 255;\n const r = v.r / range;\n const g = v.g / range;\n const b = v.b / range;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n let h = 0;\n let s = 0;\n let d;\n if (max !== min) {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = hueValue(r, g, b, d, max);\n h = h * 60 + 0.5;\n }\n return [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n return (Array.isArray(a) ? f(a[0], a[1], a[2]) : f(a, b, c)).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n return calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n return calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n return calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n return (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n const m = HUE_RE.exec(str);\n let a = 255;\n let v;\n if (!m) {\n return void 0;\n }\n if (m[5] !== void 0) {\n a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n }\n const h = hue(+m[2]);\n const p1 = +m[3] / 100;\n const p2 = +m[4] / 100;\n if (m[1] === \"hwb\") {\n v = hwb2rgb(h, p1, p2);\n } else if (m[1] === \"hsv\") {\n v = hsv2rgb(h, p1, p2);\n } else {\n v = hsl2rgb(h, p1, p2);\n }\n return {\n a,\n b: v[2],\n g: v[1],\n r: v[0]\n };\n}\nfunction rotate(v, deg) {\n const h = rgb2hsl(v);\n h[0] = hue(h[0] + deg);\n const rgb = hsl2rgb(h);\n v.r = rgb[0];\n v.g = rgb[1];\n v.b = rgb[2];\n}\nfunction hslString(v) {\n if (!v) {\n return void 0;\n }\n const a = rgb2hsl(v);\n const h = a[0];\n const s = n2p(a[1]);\n const l = n2p(a[2]);\n return v.a < 255 ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})` : `hsl(${h}, ${s}%, ${l}%)`;\n}\n\n// src/packed.ts\nvar map2 = {\n x: \"dark\",\n Z: \"light\",\n Y: \"re\",\n X: \"blu\",\n W: \"gr\",\n V: \"medium\",\n U: \"slate\",\n A: \"ee\",\n T: \"ol\",\n S: \"or\",\n B: \"ra\",\n C: \"lateg\",\n D: \"ights\",\n R: \"in\",\n Q: \"turquois\",\n E: \"hi\",\n P: \"ro\",\n O: \"al\",\n N: \"le\",\n M: \"de\",\n L: \"yello\",\n F: \"en\",\n K: \"ch\",\n G: \"arks\",\n H: \"ea\",\n I: \"ightg\",\n J: \"wh\"\n};\nvar names = {\n OiceXe: \"f0f8ff\",\n antiquewEte: \"faebd7\",\n aqua: \"ffff\",\n aquamarRe: \"7fffd4\",\n azuY: \"f0ffff\",\n beige: \"f5f5dc\",\n bisque: \"ffe4c4\",\n black: \"0\",\n blanKedOmond: \"ffebcd\",\n Xe: \"ff\",\n XeviTet: \"8a2be2\",\n bPwn: \"a52a2a\",\n burlywood: \"deb887\",\n caMtXe: \"5f9ea0\",\n KartYuse: \"7fff00\",\n KocTate: \"d2691e\",\n cSO: \"ff7f50\",\n cSnflowerXe: \"6495ed\",\n cSnsilk: \"fff8dc\",\n crimson: \"dc143c\",\n cyan: \"ffff\",\n xXe: \"8b\",\n xcyan: \"8b8b\",\n xgTMnPd: \"b8860b\",\n xWay: \"a9a9a9\",\n xgYF: \"6400\",\n xgYy: \"a9a9a9\",\n xkhaki: \"bdb76b\",\n xmagFta: \"8b008b\",\n xTivegYF: \"556b2f\",\n xSange: \"ff8c00\",\n xScEd: \"9932cc\",\n xYd: \"8b0000\",\n xsOmon: \"e9967a\",\n xsHgYF: \"8fbc8f\",\n xUXe: \"483d8b\",\n xUWay: \"2f4f4f\",\n xUgYy: \"2f4f4f\",\n xQe: \"ced1\",\n xviTet: \"9400d3\",\n dAppRk: \"ff1493\",\n dApskyXe: \"bfff\",\n dimWay: \"696969\",\n dimgYy: \"696969\",\n dodgerXe: \"1e90ff\",\n fiYbrick: \"b22222\",\n flSOwEte: \"fffaf0\",\n foYstWAn: \"228b22\",\n fuKsia: \"ff00ff\",\n gaRsbSo: \"dcdcdc\",\n ghostwEte: \"f8f8ff\",\n gTd: \"ffd700\",\n gTMnPd: \"daa520\",\n Way: \"808080\",\n gYF: \"8000\",\n gYFLw: \"adff2f\",\n gYy: \"808080\",\n honeyMw: \"f0fff0\",\n hotpRk: \"ff69b4\",\n RdianYd: \"cd5c5c\",\n Rdigo: \"4b0082\",\n ivSy: \"fffff0\",\n khaki: \"f0e68c\",\n lavFMr: \"e6e6fa\",\n lavFMrXsh: \"fff0f5\",\n lawngYF: \"7cfc00\",\n NmoncEffon: \"fffacd\",\n ZXe: \"add8e6\",\n ZcSO: \"f08080\",\n Zcyan: \"e0ffff\",\n ZgTMnPdLw: \"fafad2\",\n ZWay: \"d3d3d3\",\n ZgYF: \"90ee90\",\n ZgYy: \"d3d3d3\",\n ZpRk: \"ffb6c1\",\n ZsOmon: \"ffa07a\",\n ZsHgYF: \"20b2aa\",\n ZskyXe: \"87cefa\",\n ZUWay: \"778899\",\n ZUgYy: \"778899\",\n ZstAlXe: \"b0c4de\",\n ZLw: \"ffffe0\",\n lime: \"ff00\",\n limegYF: \"32cd32\",\n lRF: \"faf0e6\",\n magFta: \"ff00ff\",\n maPon: \"800000\",\n VaquamarRe: \"66cdaa\",\n VXe: \"cd\",\n VScEd: \"ba55d3\",\n VpurpN: \"9370db\",\n VsHgYF: \"3cb371\",\n VUXe: \"7b68ee\",\n VsprRggYF: \"fa9a\",\n VQe: \"48d1cc\",\n VviTetYd: \"c71585\",\n midnightXe: \"191970\",\n mRtcYam: \"f5fffa\",\n mistyPse: \"ffe4e1\",\n moccasR: \"ffe4b5\",\n navajowEte: \"ffdead\",\n navy: \"80\",\n Tdlace: \"fdf5e6\",\n Tive: \"808000\",\n TivedBb: \"6b8e23\",\n Sange: \"ffa500\",\n SangeYd: \"ff4500\",\n ScEd: \"da70d6\",\n pOegTMnPd: \"eee8aa\",\n pOegYF: \"98fb98\",\n pOeQe: \"afeeee\",\n pOeviTetYd: \"db7093\",\n papayawEp: \"ffefd5\",\n pHKpuff: \"ffdab9\",\n peru: \"cd853f\",\n pRk: \"ffc0cb\",\n plum: \"dda0dd\",\n powMrXe: \"b0e0e6\",\n purpN: \"800080\",\n YbeccapurpN: \"663399\",\n Yd: \"ff0000\",\n Psybrown: \"bc8f8f\",\n PyOXe: \"4169e1\",\n saddNbPwn: \"8b4513\",\n sOmon: \"fa8072\",\n sandybPwn: \"f4a460\",\n sHgYF: \"2e8b57\",\n sHshell: \"fff5ee\",\n siFna: \"a0522d\",\n silver: \"c0c0c0\",\n skyXe: \"87ceeb\",\n UXe: \"6a5acd\",\n UWay: \"708090\",\n UgYy: \"708090\",\n snow: \"fffafa\",\n sprRggYF: \"ff7f\",\n stAlXe: \"4682b4\",\n tan: \"d2b48c\",\n teO: \"8080\",\n tEstN: \"d8bfd8\",\n tomato: \"ff6347\",\n Qe: \"40e0d0\",\n viTet: \"ee82ee\",\n JHt: \"f5deb3\",\n wEte: \"ffffff\",\n wEtesmoke: \"f5f5f5\",\n Lw: \"ffff00\",\n LwgYF: \"9acd32\"\n};\nfunction unpack() {\n const unpacked = {};\n const keys = Object.keys(names);\n const tkeys = Object.keys(map2);\n let i, j, k, ok, nk;\n for (i = 0; i < keys.length; i++) {\n ok = nk = keys[i];\n for (j = 0; j < tkeys.length; j++) {\n k = tkeys[j];\n nk = nk.replace(k, map2[k]);\n }\n k = parseInt(names[ok], 16);\n unpacked[nk] = [k >> 16 & 255, k >> 8 & 255, k & 255];\n }\n return unpacked;\n}\n\n// src/names.ts\nvar names2;\nfunction nameParse(str) {\n if (!names2) {\n names2 = unpack();\n names2.transparent = [0, 0, 0, 0];\n }\n const a = names2[str.toLowerCase()];\n return a && {\n a: a.length === 4 ? a[3] : 255,\n b: a[2],\n g: a[1],\n r: a[0]\n };\n}\n\n// src/rgb.ts\nvar RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n const m = RGB_RE.exec(str);\n let a = 255;\n let r, g, b;\n if (!m) {\n return void 0;\n }\n if (m[7] !== void 0) {\n const v = +m[7];\n a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\n }\n r = +m[1];\n g = +m[3];\n b = +m[5];\n r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));\n g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));\n b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));\n return {\n a,\n b,\n g,\n r\n };\n}\nfunction rgbString(v) {\n return v && (v.a < 255 ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})` : `rgb(${v.r}, ${v.g}, ${v.b})`);\n}\n\n// src/srgb.ts\nvar to = (v) => v <= 31308e-7 ? v * 12.92 : v ** (1 / 2.4) * 1.055 - 0.055;\nvar from = (v) => v <= 0.04045 ? v / 12.92 : ((v + 0.055) / 1.055) ** 2.4;\nfunction interpolate(rgb1, rgb2, t) {\n const r = from(b2n(rgb1.r));\n const g = from(b2n(rgb1.g));\n const b = from(b2n(rgb1.b));\n return {\n a: rgb1.a + t * (rgb2.a - rgb1.a),\n b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n r: n2b(to(r + t * (from(b2n(rgb2.r)) - r)))\n };\n}\n\n// src/color.ts\nvar COMMENT_REGEXP = /\\/\\*[\\s\\S]*?\\*\\//g;\nfunction modHSL(v, i, ratio) {\n if (v) {\n let tmp = rgb2hsl(v);\n tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n tmp = hsl2rgb(tmp);\n v.r = tmp[0];\n v.g = tmp[1];\n v.b = tmp[2];\n }\n}\nfunction clone(v, proto) {\n return v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n let v = { a: 255, b: 0, g: 0, r: 0 };\n if (Array.isArray(input)) {\n if (input.length >= 3) {\n v = { a: 255, b: input[2], g: input[1], r: input[0] };\n if (input.length > 3) {\n v.a = n2b(input[3]);\n }\n }\n } else {\n v = clone(input, { a: 1, b: 0, g: 0, r: 0 });\n v.a = n2b(v.a);\n }\n return v;\n}\nfunction functionParse(str) {\n const clean = str.replace(COMMENT_REGEXP, \"\").trim();\n if (clean.charAt(0) === \"r\") {\n return rgbParse(clean);\n }\n return hueParse(clean);\n}\nvar Color = class _Color {\n /**\n * constructor\n * @param input\n */\n constructor(input) {\n if (input instanceof _Color) {\n return input;\n }\n const type = typeof input;\n let v;\n if (type === \"object\") {\n v = fromObject(input);\n } else if (type === \"string\") {\n v = hexParse(input) || nameParse(input) || functionParse(input);\n }\n this._rgb = v;\n this._valid = !!v;\n }\n /**\n * `true` if this is a valid color\n * @returns {boolean}\n */\n get valid() {\n return this._valid;\n }\n /**\n * @returns {RGBA} - the color\n */\n get rgb() {\n const v = clone(this._rgb);\n if (v) {\n v.a = b2n(v.a);\n }\n return v;\n }\n /**\n * @param obj - the color\n */\n set rgb(obj) {\n this._rgb = fromObject(obj);\n }\n /**\n * rgb(a) string\n * @return {string|undefined}\n */\n rgbString() {\n return this._valid ? rgbString(this._rgb) : void 0;\n }\n /**\n * hex string\n * @return {string|undefined}\n */\n hexString() {\n return this._valid ? hexString(this._rgb) : void 0;\n }\n /**\n * hsl(a) string\n * @return {string|undefined}\n */\n hslString() {\n return this._valid ? hslString(this._rgb) : void 0;\n }\n /**\n * Mix another color to this color.\n * @param color - Color to mix in\n * @param weight - 0..1\n * @returns {Color}\n */\n mix(color, weight = 0.5) {\n if (color) {\n const c1 = this.rgb;\n const c2 = color.rgb;\n const w = 2 * weight - 1;\n const a = c1.a - c2.a;\n const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2;\n const w2 = 1 - w1;\n c1.r = 255 & w1 * c1.r + w2 * c2.r + 0.5;\n c1.g = 255 & w1 * c1.g + w2 * c2.g + 0.5;\n c1.b = 255 & w1 * c1.b + w2 * c2.b + 0.5;\n c1.a = weight * c1.a + (1 - weight) * c2.a;\n this.rgb = c1;\n }\n return this;\n }\n /**\n * Interpolate a color value between this and `color`\n * @param color\n * @param t - 0..1\n * @returns {Color}\n */\n interpolate(color, t) {\n if (color) {\n this._rgb = interpolate(this._rgb, color._rgb, t);\n }\n return this;\n }\n /**\n * Clone\n * @returns {Color}\n */\n clone() {\n return new _Color(this.rgb);\n }\n /**\n * Set alpha\n * @param a - the alpha [0..1]\n * @returns {Color}\n */\n alpha(a) {\n this._rgb.a = n2b(a);\n return this;\n }\n /**\n * Make clearer\n * @param ratio - ratio [0..1]\n * @returns {Color}\n */\n clearer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 - ratio;\n return this;\n }\n /**\n * Convert to grayscale\n * @returns {Color}\n */\n greyscale() {\n const rgb = this._rgb;\n const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n rgb.r = rgb.g = rgb.b = val;\n return this;\n }\n /**\n * Opaquer\n * @param ratio - ratio [0..1]\n * @returns {Color}\n */\n opaquer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 + ratio;\n return this;\n }\n /**\n * Negates the rgb value\n * @returns {Color}\n */\n negate() {\n const v = this._rgb;\n v.r = 255 - v.r;\n v.g = 255 - v.g;\n v.b = 255 - v.b;\n return this;\n }\n /**\n * Lighten\n * @param ratio - ratio [0..1]\n * @returns {Color}\n */\n lighten(ratio) {\n modHSL(this._rgb, 2, ratio);\n return this;\n }\n /**\n * Darken\n * @param ratio - ratio [0..1]\n * @returns {Color}\n */\n darken(ratio) {\n modHSL(this._rgb, 2, -ratio);\n return this;\n }\n /**\n * Saturate\n * @param ratio - ratio [0..1]\n * @returns {Color}\n */\n saturate(ratio) {\n modHSL(this._rgb, 1, ratio);\n return this;\n }\n /**\n * Desaturate\n * @param ratio - ratio [0..1]\n * @returns {Color}\n */\n desaturate(ratio) {\n modHSL(this._rgb, 1, -ratio);\n return this;\n }\n /**\n * Rotate\n * @param deg - degrees to rotate\n * @returns {Color}\n */\n rotate(deg) {\n rotate(this._rgb, deg);\n return this;\n }\n};\n\n// src/index.esm.ts\nfunction index_esm_default(input) {\n return new Color(input);\n}\nexport {\n Color,\n b2n,\n b2p,\n index_esm_default as default,\n hexParse,\n hexString,\n hsl2rgb,\n hslString,\n hsv2rgb,\n hueParse,\n hwb2rgb,\n interpolate,\n lim,\n n2b,\n n2p,\n nameParse,\n p2b,\n rgb2hsl,\n rgbParse,\n rgbString,\n rotate,\n round\n};\n//# sourceMappingURL=color.esm.js.map\n","import { hsv2rgb, rgbString } from '@kurkle/color'\n\nfunction* hueGen() {\n yield 0\n while (true) {\n for (let i = 1; i < 10; i++) {\n const d = 1 << i\n for (let j = 1; j <= d; j += 2) {\n yield j / d\n }\n }\n }\n}\n\nfunction* colorGen(repeat = 1) {\n const hue = hueGen()\n let h = hue.next()\n while (!h.done) {\n let rgb = hsv2rgb(Math.round(h.value * 360), 0.6, 0.8)\n for (let i = 0; i < repeat; i++) {\n yield {\n background: rgbString({ a: 192, b: rgb[2], g: rgb[1], r: rgb[0] }),\n border: rgbString({ a: 144, b: rgb[2], g: rgb[1], r: rgb[0] }),\n }\n }\n rgb = hsv2rgb(Math.round(h.value * 360), 0.6, 0.5)\n for (let i = 0; i < repeat; i++) {\n yield {\n background: rgbString({ a: 192, b: rgb[2], g: rgb[1], r: rgb[0] }),\n border: rgbString({ a: 144, b: rgb[2], g: rgb[1], r: rgb[0] }),\n }\n }\n h = hue.next()\n }\n}\n\nfunction setColors(dataset, background, border, mode) {\n if (mode === 'data') {\n dataset.backgroundColor = background\n dataset.border = border\n } else {\n dataset.backgroundColor = dataset.backgroundColor || background\n dataset.borderColor = dataset.borderColor || border\n }\n return dataset.backgroundColor === background && dataset.borderColor === border\n}\n\nfunction getNext(color, customize, context) {\n const c = color.next().value\n if (typeof customize === 'function') {\n return customize(Object.assign({ colors: c }, context))\n }\n return c\n}\n\nfunction defaultMode(chart, gen, customize, mode) {\n const datasetMode = mode === 'dataset'\n\n let c = getNext(gen, customize, {\n chart,\n dataIndex: datasetMode ? undefined : 0,\n datasetIndex: 0,\n })\n for (const dataset of chart.data.datasets) {\n if (datasetMode) {\n if (setColors(dataset, c.background, c.border, mode)) {\n c = getNext(gen, customize, { chart, datasetIndex: dataset.index })\n }\n } else {\n const background = []\n const border = []\n for (let i = 0; i < dataset.data.length; i++) {\n background.push(c.background)\n border.push(c.border)\n c = getNext(gen, customize, { chart, dataIndex: i, datasetIndex: dataset.index })\n }\n setColors(dataset, background, border, mode)\n }\n }\n}\n\nfunction labelMode(chart, gen, customize, mode) {\n const colors = {}\n for (const dataset of chart.data.datasets) {\n const label = dataset.label ?? ''\n if (!colors[label]) {\n colors[label] = getNext(gen, customize, {\n chart,\n dataIndex: undefined,\n datasetIndex: 0,\n label,\n })\n }\n const c = colors[label]\n setColors(dataset, c.background, c.border, mode)\n }\n}\n\nconst autocolorPlugin = {\n beforeUpdate(chart, args, options) {\n const { mode = 'dataset', enabled = true, customize, repeat } = options\n\n if (!enabled) {\n return\n }\n\n const gen = colorGen(repeat)\n\n if (options.offset) {\n // offset the color generation by n colors\n for (let i = 0; i < options.offset; i++) {\n gen.next()\n }\n }\n\n if (mode === 'label') {\n return labelMode(chart, gen, customize, mode)\n }\n return defaultMode(chart, gen, customize, mode)\n },\n id: 'autocolors',\n}\n\nexport { autocolorPlugin as default }\n"],"names":["round","v","lim","l","h","Math","max","min","n2b","hsv2rgbn","s","f","n","k","hsv2rgb","a","b","c","Array","isArray","map","rgbString","r","g","b2n","setColors","dataset","background","border","mode","backgroundColor","borderColor","getNext","color","customize","context","next","value","Object","assign","colors","beforeUpdate","chart","args","options","enabled","repeat","gen","hue","i","d","j","hueGen","done","rgb","colorGen","offset","data","datasets","label","dataIndex","undefined","datasetIndex","labelMode","datasetMode","index","length","push","defaultMode","id"],"mappings":"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","x_google_ignoreList":[0]}
|
package/package.json
CHANGED
|
@@ -5,29 +5,37 @@
|
|
|
5
5
|
},
|
|
6
6
|
"description": "Automatic color generation for Chart.js",
|
|
7
7
|
"devDependencies": {
|
|
8
|
+
"@astrojs/check": "^0.9.9",
|
|
9
|
+
"@astrojs/mdx": "^8.0.0",
|
|
10
|
+
"@astrojs/starlight": "^0.42.0",
|
|
8
11
|
"@biomejs/biome": "^2.5.12",
|
|
9
|
-
"@kurkle/
|
|
10
|
-
"@kurkle/
|
|
12
|
+
"@kurkle/astro-chartjs-editor": "^1.0.0",
|
|
13
|
+
"@kurkle/color": "^0.5.1",
|
|
14
|
+
"@kurkle/configs": "^1.5.1",
|
|
11
15
|
"@rollup/plugin-json": "^6.0.0",
|
|
12
16
|
"@rollup/plugin-node-resolve": "^16.0.0",
|
|
13
17
|
"@rollup/plugin-terser": "^1.0.0",
|
|
18
|
+
"astro": "^7.0.6",
|
|
14
19
|
"chart.js": "^4.4.5",
|
|
15
20
|
"chartjs-test-utils": "^0.5.0",
|
|
16
|
-
"concurrently": "^
|
|
21
|
+
"concurrently": "^10.0.5",
|
|
22
|
+
"cookie": "^2.0.1",
|
|
17
23
|
"cross-env": "^10.1.0",
|
|
18
|
-
"jasmine-core": "^
|
|
24
|
+
"jasmine-core": "^7.0.2",
|
|
19
25
|
"karma": "^6.4.1",
|
|
20
26
|
"karma-chrome-launcher": "^3.1.1",
|
|
21
27
|
"karma-coverage": "^2.2.0",
|
|
22
28
|
"karma-firefox-launcher": "^2.1.2",
|
|
23
29
|
"karma-jasmine": "^5.1.0",
|
|
24
30
|
"karma-jasmine-html-reporter": "^2.0.0",
|
|
25
|
-
"karma-rollup-preprocessor": "7.0.
|
|
26
|
-
"karma-spec-reporter": "^0.0.
|
|
31
|
+
"karma-rollup-preprocessor": "7.0.8",
|
|
32
|
+
"karma-spec-reporter": "^0.0.37",
|
|
33
|
+
"png-to-ico": "^3.0.2",
|
|
27
34
|
"rollup": "^4.21.2",
|
|
28
35
|
"rollup-plugin-istanbul": "^5.0.0",
|
|
29
36
|
"semantic-release": "^25.0.3",
|
|
30
|
-
"
|
|
37
|
+
"sharp": "^0.35.4",
|
|
38
|
+
"typescript": "^6.0.3"
|
|
31
39
|
},
|
|
32
40
|
"exports": {
|
|
33
41
|
"import": "./dist/chartjs-plugin-autocolors.esm.js",
|
|
@@ -37,6 +45,7 @@
|
|
|
37
45
|
},
|
|
38
46
|
"files": [
|
|
39
47
|
"dist/*",
|
|
48
|
+
"!dist/docs/**",
|
|
40
49
|
"types/index.esm.d.ts"
|
|
41
50
|
],
|
|
42
51
|
"homepage": "https://github.com/kurkle/chartjs-plugin-autocolors#readme",
|
|
@@ -54,7 +63,7 @@
|
|
|
54
63
|
"module": "dist/chartjs-plugin-autocolors.esm.js",
|
|
55
64
|
"name": "chartjs-plugin-autocolors",
|
|
56
65
|
"peerDependencies": {
|
|
57
|
-
"@kurkle/color": "
|
|
66
|
+
"@kurkle/color": ">=0.3.0",
|
|
58
67
|
"chart.js": ">=2"
|
|
59
68
|
},
|
|
60
69
|
"repository": {
|
|
@@ -65,16 +74,24 @@
|
|
|
65
74
|
"autobuild": "rollup -c -w",
|
|
66
75
|
"build": "rollup -c",
|
|
67
76
|
"dev": "karma start ./karma.conf.cjs --no-single-run --auto-watch --browsers chrome",
|
|
77
|
+
"docs": "npm run build && astro build",
|
|
78
|
+
"docs:dev": "npm run build && astro dev",
|
|
79
|
+
"docs:version": "node ./docs/scripts/write-docs-version.cjs",
|
|
68
80
|
"format": "biome check --write",
|
|
81
|
+
"icons": "kurkle-generate-icons",
|
|
69
82
|
"lint": "biome check",
|
|
83
|
+
"predocs": "npm run docs:version",
|
|
84
|
+
"predocs:dev": "npm run docs:version",
|
|
85
|
+
"prepack": "npm run build",
|
|
70
86
|
"prepare": "git config core.hooksPath .githooks || true",
|
|
71
87
|
"test": "cross-env NODE_ENV=test concurrently \"npm:test-*\"",
|
|
72
88
|
"test-karma": "karma start ./karma.conf.cjs --no-auto-watch --single-run",
|
|
73
|
-
"typecheck": "tsc -p types/tests/"
|
|
89
|
+
"typecheck": "tsc -p types/tests/",
|
|
90
|
+
"typecheck:docs": "astro check"
|
|
74
91
|
},
|
|
75
92
|
"sideEffects": false,
|
|
76
93
|
"type": "module",
|
|
77
94
|
"types": "types/index.esm.d.ts",
|
|
78
95
|
"unpkg": "dist/chartjs-plugin-autocolors.min.js",
|
|
79
|
-
"version": "0.4.
|
|
96
|
+
"version": "0.4.3"
|
|
80
97
|
}
|