@a_ng_d/utils-ui-color-palette 1.7.0 → 1.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -184,6 +184,52 @@ dominantColors.updateOptions({
184
184
  const options = dominantColors.getOptions()
185
185
  ```
186
186
 
187
+ #### Working with File Uploads (ArrayBuffer)
188
+
189
+ For modern web applications that need to extract colors from uploaded image files:
190
+
191
+ ```typescript
192
+ import { DominantColors } from '@a_ng_d/utils-ui-color-palette'
193
+
194
+ // Handle file upload from user input
195
+ const handleImageUpload = async (event: Event) => {
196
+ const file = (event.target as HTMLInputElement).files?.[0]
197
+ if (!file) return
198
+
199
+ // Convert file to ArrayBuffer
200
+ const arrayBuffer = await file.arrayBuffer()
201
+
202
+ try {
203
+ // Simple usage: extract 5 dominant colors
204
+ const colors = await DominantColors.extract(arrayBuffer, 5)
205
+
206
+ console.log('Extracted colors:', colors)
207
+ // Each color object contains: { color, hex, percentage, count }
208
+
209
+ } catch (error) {
210
+ console.error('Error extracting colors:', error)
211
+ }
212
+ }
213
+
214
+ // Advanced usage with custom options
215
+ const extractColorsAdvanced = async (arrayBuffer: ArrayBuffer) => {
216
+ const colors = await DominantColors.fromArrayBuffer(arrayBuffer, {
217
+ colorCount: 8,
218
+ maxIterations: 100,
219
+ tolerance: 0.005,
220
+ skipTransparent: true,
221
+ maxImageSize: 300, // Resize large images for faster processing
222
+ })
223
+
224
+ return colors
225
+ }
226
+
227
+ // HTML file input example
228
+ // <input type="file" accept="image/*" onChange={handleImageUpload} />
229
+ ```
230
+
231
+ **Note**: ArrayBuffer extraction requires a browser environment with Canvas API support.
232
+
187
233
  ### Color Harmony Generation
188
234
 
189
235
  ```typescript
@@ -1,15 +1,25 @@
1
1
  import { ImageData, DominantColorResult, DominantColorsOptions } from '../../types/color.types';
2
2
 
3
+ interface DominantColorsInput extends DominantColorsOptions {
4
+ imageData?: ImageData;
5
+ arrayBuffer?: ArrayBuffer;
6
+ maxImageSize?: number;
7
+ }
3
8
  export default class DominantColors {
4
9
  private imageData;
5
10
  private colorCount;
6
11
  private maxIterations;
7
12
  private tolerance;
8
13
  private skipTransparent;
9
- constructor({ imageData, colorCount, maxIterations, tolerance, skipTransparent, }: {
10
- imageData: ImageData;
11
- } & DominantColorsOptions);
14
+ private maxImageSize;
15
+ constructor({ imageData, arrayBuffer, colorCount, maxIterations, tolerance, skipTransparent, maxImageSize, }: DominantColorsInput);
16
+ private arrayBuffer?;
17
+ private ensureImageData;
18
+ private decodeImageFromArrayBuffer;
19
+ /** Synchronous extraction for ImageData (backward compatibility) */
12
20
  extractDominantColors: () => DominantColorResult[];
21
+ /** Asynchronous extraction for ArrayBuffer */
22
+ extractDominantColorsAsync: () => Promise<DominantColorResult[]>;
13
23
  private extractPixels;
14
24
  private performKMeans;
15
25
  private initializeCentroids;
@@ -21,5 +31,10 @@ export default class DominantColors {
21
31
  setColorCount: (count: number) => void;
22
32
  updateOptions: (options: Partial<DominantColorsOptions>) => void;
23
33
  getOptions: () => DominantColorsOptions;
34
+ /** Static method for simplified ArrayBuffer usage */
35
+ static fromArrayBuffer(arrayBuffer: ArrayBuffer, options?: Omit<DominantColorsInput, 'arrayBuffer' | 'imageData'>): Promise<DominantColorResult[]>;
36
+ /** Simplified static method for quick color extraction */
37
+ static extract(arrayBuffer: ArrayBuffer, colorCount?: number): Promise<DominantColorResult[]>;
24
38
  }
39
+ export {};
25
40
  //# sourceMappingURL=dominant-colors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dominant-colors.d.ts","sourceRoot":"","sources":["../../../src/modules/dominant-colors/dominant-colors.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,SAAS,EACT,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,kBAAkB,CAAA;AAEzB,MAAM,CAAC,OAAO,OAAO,cAAc;IACjC,OAAO,CAAC,SAAS,CAAW;IAC5B,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,eAAe,CAAS;gBAEpB,EACV,SAAS,EACT,UAAc,EACd,aAAkB,EAClB,SAAgB,EAChB,eAAsB,GACvB,EAAE;QACD,SAAS,EAAE,SAAS,CAAA;KACrB,GAAG,qBAAqB;IAQzB,qBAAqB,QAAO,mBAAmB,EAAE,CAQhD;IAED,OAAO,CAAC,aAAa,CAgBpB;IAED,OAAO,CAAC,aAAa,CA+BpB;IAED,OAAO,CAAC,mBAAmB,CA8B1B;IAED,OAAO,CAAC,mBAAmB,CAgB1B;IAED,OAAO,CAAC,iBAAiB,CAOxB;IAED,OAAO,CAAC,iBAAiB,CAWxB;IAED,OAAO,CAAC,YAAY,CAUnB;IAED,OAAO,CAAC,yBAAyB,CAmBhC;IAED,aAAa,UAAW,MAAM,KAAG,IAAI,CAEpC;IAED,aAAa,YAAa,OAAO,CAAC,qBAAqB,CAAC,KAAG,IAAI,CAO9D;IAED,UAAU,QAAO,qBAAqB,CAKpC;CACH"}
1
+ {"version":3,"file":"dominant-colors.d.ts","sourceRoot":"","sources":["../../../src/modules/dominant-colors/dominant-colors.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,SAAS,EACT,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,kBAAkB,CAAA;AAEzB,UAAU,mBAAoB,SAAQ,qBAAqB;IACzD,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,CAAC,OAAO,OAAO,cAAc;IACjC,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,YAAY,CAAQ;gBAEhB,EACV,SAAS,EACT,WAAW,EACX,UAAc,EACd,aAAkB,EAClB,SAAgB,EAChB,eAAsB,EACtB,YAAkB,GACnB,EAAE,mBAAmB;IAiBtB,OAAO,CAAC,WAAW,CAAC,CAAa;YAEnB,eAAe;YAMf,0BAA0B;IA2ExC,oEAAoE;IACpE,qBAAqB,QAAO,mBAAmB,EAAE,CAchD;IAED,8CAA8C;IAC9C,0BAA0B,QAAa,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAgBpE;IAED,OAAO,CAAC,aAAa,CAoBpB;IAED,OAAO,CAAC,aAAa,CA+BpB;IAED,OAAO,CAAC,mBAAmB,CA8B1B;IAED,OAAO,CAAC,mBAAmB,CAgB1B;IAED,OAAO,CAAC,iBAAiB,CAOxB;IAED,OAAO,CAAC,iBAAiB,CAWxB;IAED,OAAO,CAAC,YAAY,CAUnB;IAED,OAAO,CAAC,yBAAyB,CAmBhC;IAED,aAAa,UAAW,MAAM,KAAG,IAAI,CAEpC;IAED,aAAa,YAAa,OAAO,CAAC,qBAAqB,CAAC,KAAG,IAAI,CAO9D;IAED,UAAU,QAAO,qBAAqB,CAKpC;IAEF,qDAAqD;WACxC,eAAe,CAC1B,WAAW,EAAE,WAAW,EACxB,OAAO,GAAE,IAAI,CAAC,mBAAmB,EAAE,aAAa,GAAG,WAAW,CAAM,GACnE,OAAO,CAAC,mBAAmB,EAAE,CAAC;IASjC,0DAA0D;WAC7C,OAAO,CAClB,WAAW,EAAE,WAAW,EACxB,UAAU,GAAE,MAAU,GACrB,OAAO,CAAC,mBAAmB,EAAE,CAAC;CAGlC"}
@@ -1,86 +1,108 @@
1
- var d = Object.defineProperty;
2
- var m = (l, t, e) => t in l ? d(l, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : l[t] = e;
3
- var o = (l, t, e) => m(l, typeof t != "symbol" ? t + "" : t, e);
4
- import { c as f } from "../../index-Beb8qoyd.js";
5
- class p {
1
+ var C = Object.defineProperty;
2
+ var x = (l, t, e) => t in l ? C(l, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : l[t] = e;
3
+ var i = (l, t, e) => x(l, typeof t != "symbol" ? t + "" : t, e);
4
+ import { c as p } from "../../index-Beb8qoyd.js";
5
+ class f {
6
6
  constructor({
7
7
  imageData: t,
8
- colorCount: e = 5,
9
- maxIterations: n = 50,
10
- tolerance: a = 0.01,
11
- skipTransparent: r = !0
8
+ arrayBuffer: e,
9
+ colorCount: a = 5,
10
+ maxIterations: r = 50,
11
+ tolerance: s = 0.01,
12
+ skipTransparent: n = !0,
13
+ maxImageSize: o = 200
12
14
  }) {
13
- o(this, "imageData");
14
- o(this, "colorCount");
15
- o(this, "maxIterations");
16
- o(this, "tolerance");
17
- o(this, "skipTransparent");
18
- o(this, "extractDominantColors", () => {
15
+ i(this, "imageData", null);
16
+ i(this, "colorCount");
17
+ i(this, "maxIterations");
18
+ i(this, "tolerance");
19
+ i(this, "skipTransparent");
20
+ i(this, "maxImageSize");
21
+ i(this, "arrayBuffer");
22
+ /** Synchronous extraction for ImageData (backward compatibility) */
23
+ i(this, "extractDominantColors", () => {
24
+ if (!this.imageData)
25
+ throw new Error(
26
+ "No image data available. Use extractDominantColorsAsync() for ArrayBuffer."
27
+ );
28
+ const t = this.extractPixels();
29
+ if (t.length === 0) return [];
30
+ const e = this.performKMeans(t);
31
+ return this.calculateColorFrequencies(t, e).sort((r, s) => s.percentage - r.percentage);
32
+ });
33
+ /** Asynchronous extraction for ArrayBuffer */
34
+ i(this, "extractDominantColorsAsync", async () => {
35
+ if (await this.ensureImageData(), !this.imageData)
36
+ throw new Error(
37
+ "No image data available. Ensure ArrayBuffer was successfully decoded."
38
+ );
19
39
  const t = this.extractPixels();
20
40
  if (t.length === 0) return [];
21
41
  const e = this.performKMeans(t);
22
- return this.calculateColorFrequencies(t, e).sort((a, r) => r.percentage - a.percentage);
42
+ return this.calculateColorFrequencies(t, e).sort((r, s) => s.percentage - r.percentage);
23
43
  });
24
- o(this, "extractPixels", () => {
44
+ i(this, "extractPixels", () => {
45
+ if (!this.imageData)
46
+ throw new Error("No image data available");
25
47
  const t = [], e = this.imageData.data;
26
- for (let n = 0; n < e.length; n += 4) {
27
- const a = e[n], r = e[n + 1], s = e[n + 2], i = e[n + 3];
28
- this.skipTransparent && i < 128 || t.push([a, r, s]);
48
+ for (let a = 0; a < e.length; a += 4) {
49
+ const r = e[a], s = e[a + 1], n = e[a + 2], o = e[a + 3];
50
+ this.skipTransparent && o < 128 || t.push([r, s, n]);
29
51
  }
30
52
  return t;
31
53
  });
32
- o(this, "performKMeans", (t) => {
33
- let e = this.initializeCentroids(t), n = [], a = 0;
34
- for (; a < this.maxIterations && !this.hasConverged(e, n); ) {
35
- n = e.map((s) => [...s]);
36
- const r = Array.from(
54
+ i(this, "performKMeans", (t) => {
55
+ let e = this.initializeCentroids(t), a = [], r = 0;
56
+ for (; r < this.maxIterations && !this.hasConverged(e, a); ) {
57
+ a = e.map((n) => [...n]);
58
+ const s = Array.from(
37
59
  { length: this.colorCount },
38
60
  () => []
39
61
  );
40
- t.forEach((s) => {
41
- const i = this.findClosestCentroid(s, e);
42
- r[i].push(s);
43
- }), e = r.map((s) => s.length === 0 ? n[e.indexOf(e[0])] : this.calculateCentroid(s)), a++;
62
+ t.forEach((n) => {
63
+ const o = this.findClosestCentroid(n, e);
64
+ s[o].push(n);
65
+ }), e = s.map((n) => n.length === 0 ? a[e.indexOf(e[0])] : this.calculateCentroid(n)), r++;
44
66
  }
45
67
  return e;
46
68
  });
47
- o(this, "initializeCentroids", (t) => {
69
+ i(this, "initializeCentroids", (t) => {
48
70
  const e = [];
49
71
  e.push(t[Math.floor(Math.random() * t.length)]);
50
- for (let n = 1; n < this.colorCount; n++) {
51
- const a = t.map((c) => {
72
+ for (let a = 1; a < this.colorCount; a++) {
73
+ const r = t.map((c) => {
52
74
  const h = Math.min(
53
75
  ...e.map(
54
- (u) => this.calculateDistance(c, u)
76
+ (d) => this.calculateDistance(c, d)
55
77
  )
56
78
  );
57
79
  return h * h;
58
- }), r = a.reduce((c, h) => c + h, 0), s = Math.random() * r;
59
- let i = 0;
80
+ }), s = r.reduce((c, h) => c + h, 0), n = Math.random() * s;
81
+ let o = 0;
60
82
  for (let c = 0; c < t.length; c++)
61
- if (i += a[c], i >= s) {
83
+ if (o += r[c], o >= n) {
62
84
  e.push(t[c]);
63
85
  break;
64
86
  }
65
87
  }
66
88
  return e;
67
89
  });
68
- o(this, "findClosestCentroid", (t, e) => {
69
- let n = 1 / 0, a = 0;
70
- return e.forEach((r, s) => {
71
- const i = this.calculateDistance(t, r);
72
- i < n && (n = i, a = s);
73
- }), a;
90
+ i(this, "findClosestCentroid", (t, e) => {
91
+ let a = 1 / 0, r = 0;
92
+ return e.forEach((s, n) => {
93
+ const o = this.calculateDistance(t, s);
94
+ o < a && (a = o, r = n);
95
+ }), r;
74
96
  });
75
- o(this, "calculateDistance", (t, e) => {
76
- const [n, a, r] = t, [s, i, c] = e;
97
+ i(this, "calculateDistance", (t, e) => {
98
+ const [a, r, s] = t, [n, o, c] = e;
77
99
  return Math.sqrt(
78
- Math.pow(n - s, 2) + Math.pow(a - i, 2) + Math.pow(r - c, 2)
100
+ Math.pow(a - n, 2) + Math.pow(r - o, 2) + Math.pow(s - c, 2)
79
101
  );
80
102
  });
81
- o(this, "calculateCentroid", (t) => {
103
+ i(this, "calculateCentroid", (t) => {
82
104
  const e = t.reduce(
83
- (n, a) => [n[0] + a[0], n[1] + a[1], n[2] + a[2]],
105
+ (a, r) => [a[0] + r[0], a[1] + r[1], a[2] + r[2]],
84
106
  [0, 0, 0]
85
107
  );
86
108
  return [
@@ -89,37 +111,88 @@ class p {
89
111
  Math.round(e[2] / t.length)
90
112
  ];
91
113
  });
92
- o(this, "hasConverged", (t, e) => e.length === 0 ? !1 : t.every((n, a) => this.calculateDistance(n, e[a]) < this.tolerance));
93
- o(this, "calculateColorFrequencies", (t, e) => {
94
- const n = new Array(e.length).fill(0);
95
- t.forEach((r) => {
96
- const s = this.findClosestCentroid(r, e);
97
- n[s]++;
114
+ i(this, "hasConverged", (t, e) => e.length === 0 ? !1 : t.every((a, r) => this.calculateDistance(a, e[r]) < this.tolerance));
115
+ i(this, "calculateColorFrequencies", (t, e) => {
116
+ const a = new Array(e.length).fill(0);
117
+ t.forEach((s) => {
118
+ const n = this.findClosestCentroid(s, e);
119
+ a[n]++;
98
120
  });
99
- const a = t.length;
100
- return e.map((r, s) => ({
101
- color: r,
102
- hex: f.rgb(r[0], r[1], r[2]).hex(),
103
- count: n[s],
104
- percentage: parseFloat((n[s] / a * 100).toFixed(2))
121
+ const r = t.length;
122
+ return e.map((s, n) => ({
123
+ color: s,
124
+ hex: p.rgb(s[0], s[1], s[2]).hex(),
125
+ count: a[n],
126
+ percentage: parseFloat((a[n] / r * 100).toFixed(2))
105
127
  }));
106
128
  });
107
- o(this, "setColorCount", (t) => {
129
+ i(this, "setColorCount", (t) => {
108
130
  this.colorCount = Math.max(1, Math.min(t, 20));
109
131
  });
110
- o(this, "updateOptions", (t) => {
132
+ i(this, "updateOptions", (t) => {
111
133
  t.colorCount !== void 0 && this.setColorCount(t.colorCount), t.maxIterations !== void 0 && (this.maxIterations = t.maxIterations), t.tolerance !== void 0 && (this.tolerance = t.tolerance), t.skipTransparent !== void 0 && (this.skipTransparent = t.skipTransparent);
112
134
  });
113
- o(this, "getOptions", () => ({
135
+ i(this, "getOptions", () => ({
114
136
  colorCount: this.colorCount,
115
137
  maxIterations: this.maxIterations,
116
138
  tolerance: this.tolerance,
117
139
  skipTransparent: this.skipTransparent
118
140
  }));
119
- this.imageData = t, this.colorCount = e, this.maxIterations = n, this.tolerance = a, this.skipTransparent = r;
141
+ if (!t && !e)
142
+ throw new Error("Either imageData or arrayBuffer must be provided");
143
+ this.imageData = t || null, this.colorCount = a, this.maxIterations = r, this.tolerance = s, this.skipTransparent = n, this.maxImageSize = o, e && !t && (this.arrayBuffer = e);
144
+ }
145
+ async ensureImageData() {
146
+ !this.imageData && this.arrayBuffer && (this.imageData = await this.decodeImageFromArrayBuffer(this.arrayBuffer));
147
+ }
148
+ async decodeImageFromArrayBuffer(t) {
149
+ return new Promise((e, a) => {
150
+ const r = globalThis;
151
+ if (!r.document || !r.Image || !r.URL) {
152
+ a(new Error("Browser environment with Canvas API required"));
153
+ return;
154
+ }
155
+ const s = new r.Blob([t]), n = r.URL.createObjectURL(s), o = new r.Image();
156
+ o.onload = () => {
157
+ try {
158
+ const c = r.document.createElement("canvas"), h = c.getContext("2d");
159
+ if (!h)
160
+ throw new Error("Failed to create canvas context");
161
+ const d = o.width / o.height;
162
+ let u = o.width, m = o.height;
163
+ Math.max(o.width, o.height) > this.maxImageSize && (o.width > o.height ? (u = this.maxImageSize, m = Math.round(this.maxImageSize / d)) : (m = this.maxImageSize, u = Math.round(this.maxImageSize * d))), c.width = u, c.height = m, h.drawImage(o, 0, 0, u, m);
164
+ const g = h.getImageData(
165
+ 0,
166
+ 0,
167
+ u,
168
+ m
169
+ ), w = {
170
+ data: new Uint8ClampedArray(g.data),
171
+ width: g.width,
172
+ height: g.height
173
+ };
174
+ r.URL.revokeObjectURL(n), e(w);
175
+ } catch (c) {
176
+ r.URL.revokeObjectURL(n), a(c);
177
+ }
178
+ }, o.onerror = () => {
179
+ r.URL.revokeObjectURL(n), a(new Error("Failed to load image"));
180
+ }, o.src = n;
181
+ });
182
+ }
183
+ /** Static method for simplified ArrayBuffer usage */
184
+ static async fromArrayBuffer(t, e = {}) {
185
+ return new f({
186
+ arrayBuffer: t,
187
+ ...e
188
+ }).extractDominantColorsAsync();
189
+ }
190
+ /** Simplified static method for quick color extraction */
191
+ static async extract(t, e = 5) {
192
+ return this.fromArrayBuffer(t, { colorCount: e });
120
193
  }
121
194
  }
122
195
  export {
123
- p as default
196
+ f as default
124
197
  };
125
198
  //# sourceMappingURL=dominant-colors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dominant-colors.js","sources":["../../../src/modules/dominant-colors/dominant-colors.ts"],"sourcesContent":["import chroma from 'chroma-js'\nimport {\n Channel,\n HexModel,\n ImageData,\n DominantColorResult,\n DominantColorsOptions,\n} from '@tps/color.types'\n\nexport default class DominantColors {\n private imageData: ImageData\n private colorCount: number\n private maxIterations: number\n private tolerance: number\n private skipTransparent: boolean\n\n constructor({\n imageData,\n colorCount = 5,\n maxIterations = 50,\n tolerance = 0.01,\n skipTransparent = true,\n }: {\n imageData: ImageData\n } & DominantColorsOptions) {\n this.imageData = imageData\n this.colorCount = colorCount\n this.maxIterations = maxIterations\n this.tolerance = tolerance\n this.skipTransparent = skipTransparent\n }\n\n extractDominantColors = (): DominantColorResult[] => {\n const pixels = this.extractPixels()\n if (pixels.length === 0) return []\n\n const clusters = this.performKMeans(pixels)\n const results = this.calculateColorFrequencies(pixels, clusters)\n\n return results.sort((a, b) => b.percentage - a.percentage)\n }\n\n private extractPixels = (): Channel[] => {\n const pixels: Channel[] = []\n const data = this.imageData.data\n\n for (let i = 0; i < data.length; i += 4) {\n const r = data[i]\n const g = data[i + 1]\n const b = data[i + 2]\n const a = data[i + 3]\n\n if (this.skipTransparent && a < 128) continue\n\n pixels.push([r, g, b])\n }\n\n return pixels\n }\n\n private performKMeans = (pixels: Channel[]): Channel[] => {\n let centroids = this.initializeCentroids(pixels)\n let prevCentroids: Channel[] = []\n let iteration = 0\n\n while (\n iteration < this.maxIterations &&\n !this.hasConverged(centroids, prevCentroids)\n ) {\n prevCentroids = centroids.map((c) => [...c] as Channel)\n\n const clusters: Channel[][] = Array.from(\n { length: this.colorCount },\n () => []\n )\n\n pixels.forEach((pixel) => {\n const closestIndex = this.findClosestCentroid(pixel, centroids)\n clusters[closestIndex].push(pixel)\n })\n\n centroids = clusters.map((cluster) => {\n if (cluster.length === 0)\n return prevCentroids[centroids.indexOf(centroids[0])]\n return this.calculateCentroid(cluster)\n })\n\n iteration++\n }\n\n return centroids\n }\n\n private initializeCentroids = (pixels: Channel[]): Channel[] => {\n const centroids: Channel[] = []\n\n // K-means++ initialization\n centroids.push(pixels[Math.floor(Math.random() * pixels.length)])\n\n for (let i = 1; i < this.colorCount; i++) {\n const distances = pixels.map((pixel) => {\n const minDistance = Math.min(\n ...centroids.map((centroid) =>\n this.calculateDistance(pixel, centroid)\n )\n )\n return minDistance * minDistance\n })\n\n const totalDistance = distances.reduce((sum, d) => sum + d, 0)\n const threshold = Math.random() * totalDistance\n\n let cumulative = 0\n for (let j = 0; j < pixels.length; j++) {\n cumulative += distances[j]\n if (cumulative >= threshold) {\n centroids.push(pixels[j])\n break\n }\n }\n }\n\n return centroids\n }\n\n private findClosestCentroid = (\n pixel: Channel,\n centroids: Channel[]\n ): number => {\n let minDistance = Infinity\n let closestIndex = 0\n\n centroids.forEach((centroid, index) => {\n const distance = this.calculateDistance(pixel, centroid)\n if (distance < minDistance) {\n minDistance = distance\n closestIndex = index\n }\n })\n\n return closestIndex\n }\n\n private calculateDistance = (color1: Channel, color2: Channel): number => {\n const [r1, g1, b1] = color1\n const [r2, g2, b2] = color2\n\n return Math.sqrt(\n Math.pow(r1 - r2, 2) + Math.pow(g1 - g2, 2) + Math.pow(b1 - b2, 2)\n )\n }\n\n private calculateCentroid = (cluster: Channel[]): Channel => {\n const sum = cluster.reduce(\n (acc, pixel) => [acc[0] + pixel[0], acc[1] + pixel[1], acc[2] + pixel[2]],\n [0, 0, 0] as Channel\n )\n\n return [\n Math.round(sum[0] / cluster.length),\n Math.round(sum[1] / cluster.length),\n Math.round(sum[2] / cluster.length),\n ]\n }\n\n private hasConverged = (\n centroids: Channel[],\n prevCentroids: Channel[]\n ): boolean => {\n if (prevCentroids.length === 0) return false\n\n return centroids.every((centroid, index) => {\n const distance = this.calculateDistance(centroid, prevCentroids[index])\n return distance < this.tolerance\n })\n }\n\n private calculateColorFrequencies = (\n pixels: Channel[],\n centroids: Channel[]\n ): DominantColorResult[] => {\n const counts = new Array(centroids.length).fill(0)\n\n pixels.forEach((pixel) => {\n const closestIndex = this.findClosestCentroid(pixel, centroids)\n counts[closestIndex]++\n })\n\n const totalPixels = pixels.length\n\n return centroids.map((centroid, index) => ({\n color: centroid,\n hex: chroma.rgb(centroid[0], centroid[1], centroid[2]).hex() as HexModel,\n count: counts[index],\n percentage: parseFloat(((counts[index] / totalPixels) * 100).toFixed(2)),\n }))\n }\n\n setColorCount = (count: number): void => {\n this.colorCount = Math.max(1, Math.min(count, 20))\n }\n\n updateOptions = (options: Partial<DominantColorsOptions>): void => {\n if (options.colorCount !== undefined) this.setColorCount(options.colorCount)\n if (options.maxIterations !== undefined)\n this.maxIterations = options.maxIterations\n if (options.tolerance !== undefined) this.tolerance = options.tolerance\n if (options.skipTransparent !== undefined)\n this.skipTransparent = options.skipTransparent\n }\n\n getOptions = (): DominantColorsOptions => ({\n colorCount: this.colorCount,\n maxIterations: this.maxIterations,\n tolerance: this.tolerance,\n skipTransparent: this.skipTransparent,\n })\n}\n"],"names":["DominantColors","imageData","colorCount","maxIterations","tolerance","skipTransparent","__publicField","pixels","clusters","b","data","i","r","g","a","centroids","prevCentroids","iteration","c","pixel","closestIndex","cluster","distances","minDistance","centroid","totalDistance","sum","d","threshold","cumulative","j","index","distance","color1","color2","r1","g1","b1","r2","g2","b2","acc","counts","totalPixels","chroma","count","options"],"mappings":"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"}
1
+ {"version":3,"file":"dominant-colors.js","sources":["../../../src/modules/dominant-colors/dominant-colors.ts"],"sourcesContent":["import chroma from 'chroma-js'\nimport {\n Channel,\n HexModel,\n ImageData,\n DominantColorResult,\n DominantColorsOptions,\n} from '@tps/color.types'\n\ninterface DominantColorsInput extends DominantColorsOptions {\n imageData?: ImageData\n arrayBuffer?: ArrayBuffer\n maxImageSize?: number\n}\n\nexport default class DominantColors {\n private imageData: ImageData | null = null\n private colorCount: number\n private maxIterations: number\n private tolerance: number\n private skipTransparent: boolean\n private maxImageSize: number\n\n constructor({\n imageData,\n arrayBuffer,\n colorCount = 5,\n maxIterations = 50,\n tolerance = 0.01,\n skipTransparent = true,\n maxImageSize = 200,\n }: DominantColorsInput) {\n if (!imageData && !arrayBuffer) {\n throw new Error('Either imageData or arrayBuffer must be provided')\n }\n\n this.imageData = imageData || null\n this.colorCount = colorCount\n this.maxIterations = maxIterations\n this.tolerance = tolerance\n this.skipTransparent = skipTransparent\n this.maxImageSize = maxImageSize\n\n if (arrayBuffer && !imageData) {\n this.arrayBuffer = arrayBuffer\n }\n }\n\n private arrayBuffer?: ArrayBuffer\n\n private async ensureImageData(): Promise<void> {\n if (!this.imageData && this.arrayBuffer) {\n this.imageData = await this.decodeImageFromArrayBuffer(this.arrayBuffer)\n }\n }\n\n private async decodeImageFromArrayBuffer(\n arrayBuffer: ArrayBuffer\n ): Promise<ImageData> {\n return new Promise((resolve, reject) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const globalWindow = globalThis as any\n\n if (!globalWindow.document || !globalWindow.Image || !globalWindow.URL) {\n reject(new Error('Browser environment with Canvas API required'))\n return\n }\n\n const blob = new globalWindow.Blob([arrayBuffer])\n const url = globalWindow.URL.createObjectURL(blob)\n const img = new globalWindow.Image()\n\n img.onload = () => {\n try {\n const canvas = globalWindow.document.createElement('canvas')\n const ctx = canvas.getContext('2d')\n\n if (!ctx) {\n throw new Error('Failed to create canvas context')\n }\n\n // Resize image if needed\n const aspectRatio = img.width / img.height\n let targetWidth = img.width\n let targetHeight = img.height\n\n if (Math.max(img.width, img.height) > this.maxImageSize) {\n if (img.width > img.height) {\n targetWidth = this.maxImageSize\n targetHeight = Math.round(this.maxImageSize / aspectRatio)\n } else {\n targetHeight = this.maxImageSize\n targetWidth = Math.round(this.maxImageSize * aspectRatio)\n }\n }\n\n canvas.width = targetWidth\n canvas.height = targetHeight\n\n ctx.drawImage(img, 0, 0, targetWidth, targetHeight)\n\n const browserImageData = ctx.getImageData(\n 0,\n 0,\n targetWidth,\n targetHeight\n )\n\n const imageData: ImageData = {\n data: new Uint8ClampedArray(browserImageData.data),\n width: browserImageData.width,\n height: browserImageData.height,\n }\n\n globalWindow.URL.revokeObjectURL(url)\n resolve(imageData)\n } catch (error) {\n globalWindow.URL.revokeObjectURL(url)\n reject(error)\n }\n }\n\n img.onerror = () => {\n globalWindow.URL.revokeObjectURL(url)\n reject(new Error('Failed to load image'))\n }\n\n img.src = url\n })\n }\n\n /** Synchronous extraction for ImageData (backward compatibility) */\n extractDominantColors = (): DominantColorResult[] => {\n if (!this.imageData) {\n throw new Error(\n 'No image data available. Use extractDominantColorsAsync() for ArrayBuffer.'\n )\n }\n\n const pixels = this.extractPixels()\n if (pixels.length === 0) return []\n\n const clusters = this.performKMeans(pixels)\n const results = this.calculateColorFrequencies(pixels, clusters)\n\n return results.sort((a, b) => b.percentage - a.percentage)\n }\n\n /** Asynchronous extraction for ArrayBuffer */\n extractDominantColorsAsync = async (): Promise<DominantColorResult[]> => {\n await this.ensureImageData()\n\n if (!this.imageData) {\n throw new Error(\n 'No image data available. Ensure ArrayBuffer was successfully decoded.'\n )\n }\n\n const pixels = this.extractPixels()\n if (pixels.length === 0) return []\n\n const clusters = this.performKMeans(pixels)\n const results = this.calculateColorFrequencies(pixels, clusters)\n\n return results.sort((a, b) => b.percentage - a.percentage)\n }\n\n private extractPixels = (): Channel[] => {\n if (!this.imageData) {\n throw new Error('No image data available')\n }\n\n const pixels: Channel[] = []\n const data = this.imageData.data\n\n for (let i = 0; i < data.length; i += 4) {\n const r = data[i]\n const g = data[i + 1]\n const b = data[i + 2]\n const a = data[i + 3]\n\n if (this.skipTransparent && a < 128) continue\n\n pixels.push([r, g, b])\n }\n\n return pixels\n }\n\n private performKMeans = (pixels: Channel[]): Channel[] => {\n let centroids = this.initializeCentroids(pixels)\n let prevCentroids: Channel[] = []\n let iteration = 0\n\n while (\n iteration < this.maxIterations &&\n !this.hasConverged(centroids, prevCentroids)\n ) {\n prevCentroids = centroids.map((c) => [...c] as Channel)\n\n const clusters: Channel[][] = Array.from(\n { length: this.colorCount },\n () => []\n )\n\n pixels.forEach((pixel) => {\n const closestIndex = this.findClosestCentroid(pixel, centroids)\n clusters[closestIndex].push(pixel)\n })\n\n centroids = clusters.map((cluster) => {\n if (cluster.length === 0)\n return prevCentroids[centroids.indexOf(centroids[0])]\n return this.calculateCentroid(cluster)\n })\n\n iteration++\n }\n\n return centroids\n }\n\n private initializeCentroids = (pixels: Channel[]): Channel[] => {\n const centroids: Channel[] = []\n\n // K-means++ initialization\n centroids.push(pixels[Math.floor(Math.random() * pixels.length)])\n\n for (let i = 1; i < this.colorCount; i++) {\n const distances = pixels.map((pixel) => {\n const minDistance = Math.min(\n ...centroids.map((centroid) =>\n this.calculateDistance(pixel, centroid)\n )\n )\n return minDistance * minDistance\n })\n\n const totalDistance = distances.reduce((sum, d) => sum + d, 0)\n const threshold = Math.random() * totalDistance\n\n let cumulative = 0\n for (let j = 0; j < pixels.length; j++) {\n cumulative += distances[j]\n if (cumulative >= threshold) {\n centroids.push(pixels[j])\n break\n }\n }\n }\n\n return centroids\n }\n\n private findClosestCentroid = (\n pixel: Channel,\n centroids: Channel[]\n ): number => {\n let minDistance = Infinity\n let closestIndex = 0\n\n centroids.forEach((centroid, index) => {\n const distance = this.calculateDistance(pixel, centroid)\n if (distance < minDistance) {\n minDistance = distance\n closestIndex = index\n }\n })\n\n return closestIndex\n }\n\n private calculateDistance = (color1: Channel, color2: Channel): number => {\n const [r1, g1, b1] = color1\n const [r2, g2, b2] = color2\n\n return Math.sqrt(\n Math.pow(r1 - r2, 2) + Math.pow(g1 - g2, 2) + Math.pow(b1 - b2, 2)\n )\n }\n\n private calculateCentroid = (cluster: Channel[]): Channel => {\n const sum = cluster.reduce(\n (acc, pixel) => [acc[0] + pixel[0], acc[1] + pixel[1], acc[2] + pixel[2]],\n [0, 0, 0] as Channel\n )\n\n return [\n Math.round(sum[0] / cluster.length),\n Math.round(sum[1] / cluster.length),\n Math.round(sum[2] / cluster.length),\n ]\n }\n\n private hasConverged = (\n centroids: Channel[],\n prevCentroids: Channel[]\n ): boolean => {\n if (prevCentroids.length === 0) return false\n\n return centroids.every((centroid, index) => {\n const distance = this.calculateDistance(centroid, prevCentroids[index])\n return distance < this.tolerance\n })\n }\n\n private calculateColorFrequencies = (\n pixels: Channel[],\n centroids: Channel[]\n ): DominantColorResult[] => {\n const counts = new Array(centroids.length).fill(0)\n\n pixels.forEach((pixel) => {\n const closestIndex = this.findClosestCentroid(pixel, centroids)\n counts[closestIndex]++\n })\n\n const totalPixels = pixels.length\n\n return centroids.map((centroid, index) => ({\n color: centroid,\n hex: chroma.rgb(centroid[0], centroid[1], centroid[2]).hex() as HexModel,\n count: counts[index],\n percentage: parseFloat(((counts[index] / totalPixels) * 100).toFixed(2)),\n }))\n }\n\n setColorCount = (count: number): void => {\n this.colorCount = Math.max(1, Math.min(count, 20))\n }\n\n updateOptions = (options: Partial<DominantColorsOptions>): void => {\n if (options.colorCount !== undefined) this.setColorCount(options.colorCount)\n if (options.maxIterations !== undefined)\n this.maxIterations = options.maxIterations\n if (options.tolerance !== undefined) this.tolerance = options.tolerance\n if (options.skipTransparent !== undefined)\n this.skipTransparent = options.skipTransparent\n }\n\n getOptions = (): DominantColorsOptions => ({\n colorCount: this.colorCount,\n maxIterations: this.maxIterations,\n tolerance: this.tolerance,\n skipTransparent: this.skipTransparent,\n })\n\n /** Static method for simplified ArrayBuffer usage */\n static async fromArrayBuffer(\n arrayBuffer: ArrayBuffer,\n options: Omit<DominantColorsInput, 'arrayBuffer' | 'imageData'> = {}\n ): Promise<DominantColorResult[]> {\n const decoder = new DominantColors({\n arrayBuffer,\n ...options,\n })\n\n return decoder.extractDominantColorsAsync()\n }\n\n /** Simplified static method for quick color extraction */\n static async extract(\n arrayBuffer: ArrayBuffer,\n colorCount: number = 5\n ): Promise<DominantColorResult[]> {\n return this.fromArrayBuffer(arrayBuffer, { colorCount })\n }\n}\n"],"names":["DominantColors","imageData","arrayBuffer","colorCount","maxIterations","tolerance","skipTransparent","maxImageSize","__publicField","pixels","clusters","a","b","data","i","g","centroids","prevCentroids","iteration","c","pixel","closestIndex","cluster","distances","minDistance","centroid","totalDistance","sum","d","threshold","cumulative","j","index","distance","color1","color2","r1","g1","b1","r2","g2","b2","acc","counts","totalPixels","chroma","count","options","resolve","reject","globalWindow","blob","url","img","canvas","ctx","aspectRatio","targetWidth","targetHeight","browserImageData","error"],"mappings":";;;;AAeA,MAAqBA,EAAe;AAAA,EAQlC,YAAY;AAAA,IACV,WAAAC;AAAA,IACA,aAAAC;AAAA,IACA,YAAAC,IAAa;AAAA,IACb,eAAAC,IAAgB;AAAA,IAChB,WAAAC,IAAY;AAAA,IACZ,iBAAAC,IAAkB;AAAA,IAClB,cAAAC,IAAe;AAAA,EAAA,GACO;AAfhB,IAAAC,EAAA,mBAA8B;AAC9B,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AA2BA,IAAAA,EAAA;AAoFR;AAAA,IAAAA,EAAA,+BAAwB,MAA6B;AAC/C,UAAA,CAAC,KAAK;AACR,cAAM,IAAI;AAAA,UACR;AAAA,QACF;AAGI,YAAAC,IAAS,KAAK,cAAc;AAClC,UAAIA,EAAO,WAAW,EAAG,QAAO,CAAC;AAE3B,YAAAC,IAAW,KAAK,cAAcD,CAAM;AAGnC,aAFS,KAAK,0BAA0BA,GAAQC,CAAQ,EAEhD,KAAK,CAACC,GAAGC,MAAMA,EAAE,aAAaD,EAAE,UAAU;AAAA,IAC3D;AAGA;AAAA,IAAAH,EAAA,oCAA6B,YAA4C;AAGnE,UAFJ,MAAM,KAAK,gBAAgB,GAEvB,CAAC,KAAK;AACR,cAAM,IAAI;AAAA,UACR;AAAA,QACF;AAGI,YAAAC,IAAS,KAAK,cAAc;AAClC,UAAIA,EAAO,WAAW,EAAG,QAAO,CAAC;AAE3B,YAAAC,IAAW,KAAK,cAAcD,CAAM;AAGnC,aAFS,KAAK,0BAA0BA,GAAQC,CAAQ,EAEhD,KAAK,CAACC,GAAGC,MAAMA,EAAE,aAAaD,EAAE,UAAU;AAAA,IAC3D;AAEQ,IAAAH,EAAA,uBAAgB,MAAiB;AACnC,UAAA,CAAC,KAAK;AACF,cAAA,IAAI,MAAM,yBAAyB;AAG3C,YAAMC,IAAoB,CAAC,GACrBI,IAAO,KAAK,UAAU;AAE5B,eAASC,IAAI,GAAGA,IAAID,EAAK,QAAQC,KAAK,GAAG;AACjC,cAAA,IAAID,EAAKC,CAAC,GACVC,IAAIF,EAAKC,IAAI,CAAC,GACdF,IAAIC,EAAKC,IAAI,CAAC,GACdH,IAAIE,EAAKC,IAAI,CAAC;AAEhB,QAAA,KAAK,mBAAmBH,IAAI,OAEhCF,EAAO,KAAK,CAAC,GAAGM,GAAGH,CAAC,CAAC;AAAA,MAAA;AAGhB,aAAAH;AAAA,IACT;AAEQ,IAAAD,EAAA,uBAAgB,CAACC,MAAiC;AACpD,UAAAO,IAAY,KAAK,oBAAoBP,CAAM,GAC3CQ,IAA2B,CAAC,GAC5BC,IAAY;AAGd,aAAAA,IAAY,KAAK,iBACjB,CAAC,KAAK,aAAaF,GAAWC,CAAa,KAC3C;AACA,QAAAA,IAAgBD,EAAU,IAAI,CAACG,MAAM,CAAC,GAAGA,CAAC,CAAY;AAEtD,cAAMT,IAAwB,MAAM;AAAA,UAClC,EAAE,QAAQ,KAAK,WAAW;AAAA,UAC1B,MAAM,CAAA;AAAA,QACR;AAEO,QAAAD,EAAA,QAAQ,CAACW,MAAU;AACxB,gBAAMC,IAAe,KAAK,oBAAoBD,GAAOJ,CAAS;AACrD,UAAAN,EAAAW,CAAY,EAAE,KAAKD,CAAK;AAAA,QAAA,CAClC,GAEWJ,IAAAN,EAAS,IAAI,CAACY,MACpBA,EAAQ,WAAW,IACdL,EAAcD,EAAU,QAAQA,EAAU,CAAC,CAAC,CAAC,IAC/C,KAAK,kBAAkBM,CAAO,CACtC,GAEDJ;AAAA,MAAA;AAGK,aAAAF;AAAA,IACT;AAEQ,IAAAR,EAAA,6BAAsB,CAACC,MAAiC;AAC9D,YAAMO,IAAuB,CAAC;AAGpB,MAAAA,EAAA,KAAKP,EAAO,KAAK,MAAM,KAAK,WAAWA,EAAO,MAAM,CAAC,CAAC;AAEhE,eAASK,IAAI,GAAGA,IAAI,KAAK,YAAYA,KAAK;AACxC,cAAMS,IAAYd,EAAO,IAAI,CAACW,MAAU;AACtC,gBAAMI,IAAc,KAAK;AAAA,YACvB,GAAGR,EAAU;AAAA,cAAI,CAACS,MAChB,KAAK,kBAAkBL,GAAOK,CAAQ;AAAA,YAAA;AAAA,UAE1C;AACA,iBAAOD,IAAcA;AAAA,QAAA,CACtB,GAEKE,IAAgBH,EAAU,OAAO,CAACI,GAAKC,MAAMD,IAAMC,GAAG,CAAC,GACvDC,IAAY,KAAK,OAAA,IAAWH;AAElC,YAAII,IAAa;AACjB,iBAASC,IAAI,GAAGA,IAAItB,EAAO,QAAQsB;AAEjC,cADAD,KAAcP,EAAUQ,CAAC,GACrBD,KAAcD,GAAW;AACjB,YAAAb,EAAA,KAAKP,EAAOsB,CAAC,CAAC;AACxB;AAAA,UAAA;AAAA,MAEJ;AAGK,aAAAf;AAAA,IACT;AAEQ,IAAAR,EAAA,6BAAsB,CAC5BY,GACAJ,MACW;AACX,UAAIQ,IAAc,OACdH,IAAe;AAET,aAAAL,EAAA,QAAQ,CAACS,GAAUO,MAAU;AACrC,cAAMC,IAAW,KAAK,kBAAkBb,GAAOK,CAAQ;AACvD,QAAIQ,IAAWT,MACCA,IAAAS,GACCZ,IAAAW;AAAA,MACjB,CACD,GAEMX;AAAA,IACT;AAEQ,IAAAb,EAAA,2BAAoB,CAAC0B,GAAiBC,MAA4B;AACxE,YAAM,CAACC,GAAIC,GAAIC,CAAE,IAAIJ,GACf,CAACK,GAAIC,GAAIC,CAAE,IAAIN;AAErB,aAAO,KAAK;AAAA,QACV,KAAK,IAAIC,IAAKG,GAAI,CAAC,IAAI,KAAK,IAAIF,IAAKG,GAAI,CAAC,IAAI,KAAK,IAAIF,IAAKG,GAAI,CAAC;AAAA,MACnE;AAAA,IACF;AAEQ,IAAAjC,EAAA,2BAAoB,CAACc,MAAgC;AAC3D,YAAMK,IAAML,EAAQ;AAAA,QAClB,CAACoB,GAAKtB,MAAU,CAACsB,EAAI,CAAC,IAAItB,EAAM,CAAC,GAAGsB,EAAI,CAAC,IAAItB,EAAM,CAAC,GAAGsB,EAAI,CAAC,IAAItB,EAAM,CAAC,CAAC;AAAA,QACxE,CAAC,GAAG,GAAG,CAAC;AAAA,MACV;AAEO,aAAA;AAAA,QACL,KAAK,MAAMO,EAAI,CAAC,IAAIL,EAAQ,MAAM;AAAA,QAClC,KAAK,MAAMK,EAAI,CAAC,IAAIL,EAAQ,MAAM;AAAA,QAClC,KAAK,MAAMK,EAAI,CAAC,IAAIL,EAAQ,MAAM;AAAA,MACpC;AAAA,IACF;AAEQ,IAAAd,EAAA,sBAAe,CACrBQ,GACAC,MAEIA,EAAc,WAAW,IAAU,KAEhCD,EAAU,MAAM,CAACS,GAAUO,MACf,KAAK,kBAAkBP,GAAUR,EAAce,CAAK,CAAC,IACpD,KAAK,SACxB;AAGK,IAAAxB,EAAA,mCAA4B,CAClCC,GACAO,MAC0B;AAC1B,YAAM2B,IAAS,IAAI,MAAM3B,EAAU,MAAM,EAAE,KAAK,CAAC;AAE1C,MAAAP,EAAA,QAAQ,CAACW,MAAU;AACxB,cAAMC,IAAe,KAAK,oBAAoBD,GAAOJ,CAAS;AAC9D,QAAA2B,EAAOtB,CAAY;AAAA,MAAA,CACpB;AAED,YAAMuB,IAAcnC,EAAO;AAE3B,aAAOO,EAAU,IAAI,CAACS,GAAUO,OAAW;AAAA,QACzC,OAAOP;AAAA,QACP,KAAKoB,EAAO,IAAIpB,EAAS,CAAC,GAAGA,EAAS,CAAC,GAAGA,EAAS,CAAC,CAAC,EAAE,IAAI;AAAA,QAC3D,OAAOkB,EAAOX,CAAK;AAAA,QACnB,YAAY,YAAaW,EAAOX,CAAK,IAAIY,IAAe,KAAK,QAAQ,CAAC,CAAC;AAAA,MAAA,EACvE;AAAA,IACJ;AAEA,IAAApC,EAAA,uBAAgB,CAACsC,MAAwB;AAClC,WAAA,aAAa,KAAK,IAAI,GAAG,KAAK,IAAIA,GAAO,EAAE,CAAC;AAAA,IACnD;AAEA,IAAAtC,EAAA,uBAAgB,CAACuC,MAAkD;AACjE,MAAIA,EAAQ,eAAe,UAAgB,KAAA,cAAcA,EAAQ,UAAU,GACvEA,EAAQ,kBAAkB,WAC5B,KAAK,gBAAgBA,EAAQ,gBAC3BA,EAAQ,cAAc,WAAW,KAAK,YAAYA,EAAQ,YAC1DA,EAAQ,oBAAoB,WAC9B,KAAK,kBAAkBA,EAAQ;AAAA,IACnC;AAEA,IAAAvC,EAAA,oBAAa,OAA8B;AAAA,MACzC,YAAY,KAAK;AAAA,MACjB,eAAe,KAAK;AAAA,MACpB,WAAW,KAAK;AAAA,MAChB,iBAAiB,KAAK;AAAA,IAAA;AAxTlB,QAAA,CAACP,KAAa,CAACC;AACX,YAAA,IAAI,MAAM,kDAAkD;AAGpE,SAAK,YAAYD,KAAa,MAC9B,KAAK,aAAaE,GAClB,KAAK,gBAAgBC,GACrB,KAAK,YAAYC,GACjB,KAAK,kBAAkBC,GACvB,KAAK,eAAeC,GAEhBL,KAAe,CAACD,MAClB,KAAK,cAAcC;AAAA,EACrB;AAAA,EAKF,MAAc,kBAAiC;AAC7C,IAAI,CAAC,KAAK,aAAa,KAAK,gBAC1B,KAAK,YAAY,MAAM,KAAK,2BAA2B,KAAK,WAAW;AAAA,EACzE;AAAA,EAGF,MAAc,2BACZA,GACoB;AACpB,WAAO,IAAI,QAAQ,CAAC8C,GAASC,MAAW;AAEtC,YAAMC,IAAe;AAEjB,UAAA,CAACA,EAAa,YAAY,CAACA,EAAa,SAAS,CAACA,EAAa,KAAK;AAC/D,QAAAD,EAAA,IAAI,MAAM,8CAA8C,CAAC;AAChE;AAAA,MAAA;AAGF,YAAME,IAAO,IAAID,EAAa,KAAK,CAAChD,CAAW,CAAC,GAC1CkD,IAAMF,EAAa,IAAI,gBAAgBC,CAAI,GAC3CE,IAAM,IAAIH,EAAa,MAAM;AAEnC,MAAAG,EAAI,SAAS,MAAM;AACb,YAAA;AACF,gBAAMC,IAASJ,EAAa,SAAS,cAAc,QAAQ,GACrDK,IAAMD,EAAO,WAAW,IAAI;AAElC,cAAI,CAACC;AACG,kBAAA,IAAI,MAAM,iCAAiC;AAI7C,gBAAAC,IAAcH,EAAI,QAAQA,EAAI;AACpC,cAAII,IAAcJ,EAAI,OAClBK,IAAeL,EAAI;AAEnB,UAAA,KAAK,IAAIA,EAAI,OAAOA,EAAI,MAAM,IAAI,KAAK,iBACrCA,EAAI,QAAQA,EAAI,UAClBI,IAAc,KAAK,cACnBC,IAAe,KAAK,MAAM,KAAK,eAAeF,CAAW,MAEzDE,IAAe,KAAK,cACpBD,IAAc,KAAK,MAAM,KAAK,eAAeD,CAAW,KAI5DF,EAAO,QAAQG,GACfH,EAAO,SAASI,GAEhBH,EAAI,UAAUF,GAAK,GAAG,GAAGI,GAAaC,CAAY;AAElD,gBAAMC,IAAmBJ,EAAI;AAAA,YAC3B;AAAA,YACA;AAAA,YACAE;AAAA,YACAC;AAAA,UACF,GAEMzD,IAAuB;AAAA,YAC3B,MAAM,IAAI,kBAAkB0D,EAAiB,IAAI;AAAA,YACjD,OAAOA,EAAiB;AAAA,YACxB,QAAQA,EAAiB;AAAA,UAC3B;AAEa,UAAAT,EAAA,IAAI,gBAAgBE,CAAG,GACpCJ,EAAQ/C,CAAS;AAAA,iBACV2D,GAAO;AACD,UAAAV,EAAA,IAAI,gBAAgBE,CAAG,GACpCH,EAAOW,CAAK;AAAA,QAAA;AAAA,MAEhB,GAEAP,EAAI,UAAU,MAAM;AACL,QAAAH,EAAA,IAAI,gBAAgBE,CAAG,GAC7BH,EAAA,IAAI,MAAM,sBAAsB,CAAC;AAAA,MAC1C,GAEAI,EAAI,MAAMD;AAAA,IAAA,CACX;AAAA,EAAA;AAAA;AAAA,EA4NH,aAAa,gBACXlD,GACA6C,IAAkE,IAClC;AAMhC,WALgB,IAAI/C,EAAe;AAAA,MACjC,aAAAE;AAAA,MACA,GAAG6C;AAAA,IAAA,CACJ,EAEc,2BAA2B;AAAA,EAAA;AAAA;AAAA,EAI5C,aAAa,QACX7C,GACAC,IAAqB,GACW;AAChC,WAAO,KAAK,gBAAgBD,GAAa,EAAE,YAAAC,GAAY;AAAA,EAAA;AAE3D;"}
@@ -26,7 +26,7 @@ export interface BaseConfiguration {
26
26
  export interface SourceColorConfiguration {
27
27
  name: string;
28
28
  rgb: RgbModel;
29
- source: 'CANVAS' | 'REMOTE' | ThirdParty;
29
+ source: 'CANVAS' | 'REMOTE' | 'DEFAULT' | 'IMAGE' | 'HARMONY' | ThirdParty;
30
30
  id: string;
31
31
  isRemovable: boolean;
32
32
  hue?: {
@@ -1 +1 @@
1
- {"version":3,"file":"configuration.types.d.ts","sourceRoot":"","sources":["../../src/types/configuration.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"configuration.types.d.ts","sourceRoot":"","sources":["../../src/types/configuration.types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@a_ng_d/utils-ui-color-palette",
3
3
  "private": false,
4
- "version": "1.7.0",
4
+ "version": "1.7.2",
5
5
  "description": "Core utilities library for UI Color Palette - a color management plugin for design tools. This library provides the foundational color manipulation, contrast calculation, and palette generation features used in the plugin.",
6
6
  "repository": "https://github.com/a-ng-d/utils-ui-color-palette",
7
7
  "keywords": [
@@ -58,4 +58,4 @@
58
58
  "chroma-js": "^2.4.2",
59
59
  "hsluv": "^1.0.1"
60
60
  }
61
- }
61
+ }