@christianriedl/utils 1.0.164 → 1.0.166

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.
@@ -0,0 +1,78 @@
1
+ export type RGB = {
2
+ r: number;
3
+ g: number;
4
+ b: number;
5
+ };
6
+ export type OKLab = {
7
+ L: number;
8
+ a: number;
9
+ b: number;
10
+ };
11
+ type Dictionary<T> = {
12
+ [key: string]: T;
13
+ };
14
+ /** Eine Palettenfarbe in der urspr�nglichen Form (HEX + Anzeigename) */
15
+ export type PaletteColor = {
16
+ name: string;
17
+ hex: string;
18
+ };
19
+ /** Eine Palettenfarbe mit vorab berechnetem OKLab-Wert (f�r Performance) */
20
+ export type PaletteColorOK = PaletteColor & {
21
+ rgb: RGB;
22
+ oklab: OKLab;
23
+ };
24
+ /**
25
+ * Pr�ft, ob der String im Format '#rrggbb' oder 'rrggbb' ist.
26
+ * Erlaubt Gro�/Kleinschreibung. Leert Zeichen werden getrimmt.
27
+ */
28
+ export declare function isHex6(input: string): boolean;
29
+ /**
30
+ * Pr�ft, ob der String im Format '#rgb' ist.
31
+ * Erlaubt Gro�/Kleinschreibung. Leert Zeichen werden getrimmt.
32
+ */
33
+ export declare function isHex3(input: string): boolean;
34
+ /**
35
+ * Wandelt '#rrggbb' oder 'rrggbb' in RGB (0..255) um.
36
+ * Wirft bei ung�ltigem Format einen Error.
37
+ */
38
+ export declare function hexToRgb(hex: string): RGB;
39
+ /** sRGB (0..255) -> linear (0..1) mit korrekter Gamma-Entzerrung */
40
+ export declare function srgbToLinear(c: number): number;
41
+ /** sRGB (0..255) -> OKLab */
42
+ export declare function rgbToOKLab(r: number, g: number, b: number): OKLab;
43
+ /** HEX '#rrggbb' -> OKLab */
44
+ export declare function hexToOKLab(hex: string): OKLab;
45
+ /** Quadrat der euklidischen Distanz im OKLab-Raum */
46
+ export declare function oklabDistance2(x: OKLab, y: OKLab): number;
47
+ /** Euklidische Distanz im OKLab-Raum (Falls du den Wert darstellen willst) */
48
+ export declare function oklabDistance(x: OKLab, y: OKLab): number;
49
+ /**
50
+ * Precompute: Wandelt eine Palette aus HEX-Strings in OKLab,
51
+ * damit die Suche nach dem n�chsten Farbwert schnell bleibt.
52
+ */
53
+ export declare function precomputeOKLabPalette(palette: PaletteColor[]): PaletteColorOK[];
54
+ /**
55
+ * Precompute: Wandelt Material Colors aus HEX-Strings in OKLab,
56
+ * damit die Suche nach dem n�chsten Farbwert schnell bleibt.
57
+ */
58
+ export declare function precomputeOKLabColors(colors: Dictionary<Dictionary<string>>): PaletteColorOK[];
59
+ export type NearestResult = PaletteColorOK & {
60
+ /** euklidische Distanz (OKLab). F�r Vergleiche reicht auch distance2. */
61
+ distance: number;
62
+ /** quadratische Distanz (OKLab). Effizienter f�r reine Vergleiche. */
63
+ distance2: number;
64
+ };
65
+ /**
66
+ * Sucht die n�chstgelegene Palettefarbe (OKLab) zu einem Ziel-HEX '#rrggbb'.
67
+ * Nutzt die quadratische Distanz f�r den Vergleich und berechnet am Ende
68
+ * optional die Wurzel f�r 'distance'.
69
+ */
70
+ export declare function nearestColorOKLab(paletteOK: PaletteColorOK[], targetHex: string): NearestResult;
71
+ /**
72
+ * Komfortfunktion, wenn du die Palette als [{name, hex}] hast und nicht extra
73
+ * precomputen willst: Intern wird einmalig OKLab berechnet und dann gesucht.
74
+ * F�r wiederholte Suchen empfehlen wir `precomputeOKLabPalette`.
75
+ */
76
+ export declare function nearestColorOKLabFromHexPalette(palette: PaletteColor[], targetHex: string): NearestResult;
77
+ export declare function nearestColorOKLabFromMaterial(colors: Dictionary<Dictionary<string>>, targetHex: string): NearestResult;
78
+ export {};
@@ -0,0 +1,172 @@
1
+ /* ============================================================================
2
+ * OKLab-basierte Farbsuche: N�chstgelegene Palettefarbe zu einem Ziel-HEX
3
+ * ----------------------------------------------------------------------------
4
+ * - Eingabe: Palette mit Hex-Farben im Format '#rrggbb'
5
+ * - Vorgehen: Hex -> sRGB -> linear RGB -> OKLab, Distanz im OKLab-Raum
6
+ * - Ausgabe: die beste Palettefarbe + Distanz
7
+ * ========================================================================== */
8
+ /* -----------------------------
9
+ * 1) HEX-Parsing und Validierung
10
+ * ----------------------------- */
11
+ /**
12
+ * Pr�ft, ob der String im Format '#rrggbb' oder 'rrggbb' ist.
13
+ * Erlaubt Gro�/Kleinschreibung. Leert Zeichen werden getrimmt.
14
+ */
15
+ export function isHex6(input) {
16
+ const s = input.trim();
17
+ return /^#?[0-9a-fA-F]{6}$/.test(s);
18
+ }
19
+ /**
20
+ * Pr�ft, ob der String im Format '#rgb' ist.
21
+ * Erlaubt Gro�/Kleinschreibung. Leert Zeichen werden getrimmt.
22
+ */
23
+ export function isHex3(input) {
24
+ const s = input.trim();
25
+ return /^#?[0-9a-fA-F]{3}$/.test(s);
26
+ }
27
+ /**
28
+ * Wandelt '#rrggbb' oder 'rrggbb' in RGB (0..255) um.
29
+ * Wirft bei ung�ltigem Format einen Error.
30
+ */
31
+ export function hexToRgb(hex) {
32
+ const s = hex.trim();
33
+ if (isHex3(s)) {
34
+ const h = s.slice(1);
35
+ let r = parseInt(h.slice(0, 1), 16);
36
+ let g = parseInt(h.slice(1, 2), 16);
37
+ let b = parseInt(h.slice(2, 3), 16);
38
+ r = r * 16 + r;
39
+ g = g * 16 + g;
40
+ b = b * 16 + b;
41
+ return { r, g, b };
42
+ }
43
+ if (!isHex6(s)) {
44
+ throw new Error(`Ung�ltiges HEX-Format: "${hex}". Erwartet '#rrggbb' oder 'rrggbb'.`);
45
+ }
46
+ const h = s.startsWith('#') ? s.slice(1) : s;
47
+ const r = parseInt(h.slice(0, 2), 16);
48
+ const g = parseInt(h.slice(2, 4), 16);
49
+ const b = parseInt(h.slice(4, 6), 16);
50
+ return { r, g, b };
51
+ }
52
+ /* ------------------------------------
53
+ * 2) sRGB -> linear RGB -> OKLab
54
+ * ------------------------------------ */
55
+ /** sRGB (0..255) -> linear (0..1) mit korrekter Gamma-Entzerrung */
56
+ export function srgbToLinear(c) {
57
+ const cs = c / 255;
58
+ return cs <= 0.04045 ? cs / 12.92 : Math.pow((cs + 0.055) / 1.055, 2.4);
59
+ }
60
+ /** sRGB (0..255) -> OKLab */
61
+ export function rgbToOKLab(r, g, b) {
62
+ // linear RGB
63
+ const rl = srgbToLinear(r);
64
+ const gl = srgbToLinear(g);
65
+ const bl = srgbToLinear(b);
66
+ // RGB -> LMS (OKLab-Definition, Konstanten aus der OKLab-Spezifikation)
67
+ const l = 0.4122214708 * rl + 0.5363325363 * gl + 0.0514459929 * bl;
68
+ const m = 0.2119034982 * rl + 0.6806995451 * gl + 0.1073969566 * bl;
69
+ const s = 0.0883024619 * rl + 0.2817188376 * gl + 0.6299787005 * bl;
70
+ const l_ = Math.cbrt(l);
71
+ const m_ = Math.cbrt(m);
72
+ const s_ = Math.cbrt(s);
73
+ const L = 0.2104542553 * l_ + 0.7936177850 * m_ - 0.0040720468 * s_;
74
+ const a = 1.9779984951 * l_ - 2.4285922050 * m_ + 0.4505937099 * s_;
75
+ const b2 = 0.0259040371 * l_ + 0.7827717662 * m_ - 0.8086757660 * s_;
76
+ return { L, a, b: b2 };
77
+ }
78
+ /** HEX '#rrggbb' -> OKLab */
79
+ export function hexToOKLab(hex) {
80
+ const { r, g, b } = hexToRgb(hex);
81
+ return rgbToOKLab(r, g, b);
82
+ }
83
+ /* ------------------------------------
84
+ * 3) Distanzfunktionen im OKLab-Raum
85
+ * ------------------------------------ */
86
+ /** Quadrat der euklidischen Distanz im OKLab-Raum */
87
+ export function oklabDistance2(x, y) {
88
+ const dL = x.L - y.L;
89
+ const da = x.a - y.a;
90
+ const db = x.b - y.b;
91
+ return dL * dL + da * da + db * db;
92
+ }
93
+ /** Euklidische Distanz im OKLab-Raum (Falls du den Wert darstellen willst) */
94
+ export function oklabDistance(x, y) {
95
+ return Math.sqrt(oklabDistance2(x, y));
96
+ }
97
+ /* ------------------------------------
98
+ * 4) Palette vorab in OKLab umrechnen
99
+ * ------------------------------------ */
100
+ /**
101
+ * Precompute: Wandelt eine Palette aus HEX-Strings in OKLab,
102
+ * damit die Suche nach dem n�chsten Farbwert schnell bleibt.
103
+ */
104
+ export function precomputeOKLabPalette(palette) {
105
+ return palette.map((p) => {
106
+ const rgb = hexToRgb(p.hex);
107
+ const oklab = rgbToOKLab(rgb.r, rgb.g, rgb.b);
108
+ return { ...p, rgb, oklab };
109
+ });
110
+ }
111
+ /**
112
+ * Precompute: Wandelt Material Colors aus HEX-Strings in OKLab,
113
+ * damit die Suche nach dem n�chsten Farbwert schnell bleibt.
114
+ */
115
+ export function precomputeOKLabColors(colors) {
116
+ const palette = [];
117
+ for (const basecol in colors) {
118
+ if (basecol != 'shades') {
119
+ const col = colors[basecol];
120
+ for (const c in col) {
121
+ if (c != 'base') {
122
+ const rgb = hexToRgb(col[c]);
123
+ palette.push({ name: basecol + "." + c, hex: col[c], rgb: rgb, oklab: rgbToOKLab(rgb.r, rgb.g, rgb.b) });
124
+ }
125
+ }
126
+ }
127
+ }
128
+ return palette;
129
+ }
130
+ /**
131
+ * Sucht die n�chstgelegene Palettefarbe (OKLab) zu einem Ziel-HEX '#rrggbb'.
132
+ * Nutzt die quadratische Distanz f�r den Vergleich und berechnet am Ende
133
+ * optional die Wurzel f�r 'distance'.
134
+ */
135
+ export function nearestColorOKLab(paletteOK, targetHex) {
136
+ const targetOK = hexToOKLab(targetHex);
137
+ let best = null;
138
+ for (const c of paletteOK) {
139
+ const d2 = oklabDistance2(c.oklab, targetOK);
140
+ if (best === null || d2 < best.distance2) {
141
+ // distance wird erst (einmal) berechnet, wenn wir den finalen Treffer kennen
142
+ best = {
143
+ ...c,
144
+ distance2: d2,
145
+ distance: 0, // Placeholder
146
+ };
147
+ }
148
+ }
149
+ if (!best) {
150
+ throw new Error('Palette ist leer. Bitte mindestens eine Farbe bereitstellen.');
151
+ }
152
+ // F�r Anzeigezwecke die Wurzel (euklidische Distanz) berechnen
153
+ best.distance = Math.sqrt(best.distance2);
154
+ return best;
155
+ }
156
+ /* ------------------------------------
157
+ * 6) Komfort-API: Palette (HEX) + Ziel (HEX)
158
+ * ------------------------------------ */
159
+ /**
160
+ * Komfortfunktion, wenn du die Palette als [{name, hex}] hast und nicht extra
161
+ * precomputen willst: Intern wird einmalig OKLab berechnet und dann gesucht.
162
+ * F�r wiederholte Suchen empfehlen wir `precomputeOKLabPalette`.
163
+ */
164
+ export function nearestColorOKLabFromHexPalette(palette, targetHex) {
165
+ const paletteOK = precomputeOKLabPalette(palette);
166
+ return nearestColorOKLab(paletteOK, targetHex);
167
+ }
168
+ export function nearestColorOKLabFromMaterial(colors, targetHex) {
169
+ const paletteOK = precomputeOKLabColors(colors);
170
+ return nearestColorOKLab(paletteOK, targetHex);
171
+ }
172
+ //# sourceMappingURL=colorNearestOKLab.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colorNearestOKLab.js","sourceRoot":"","sources":["../src/colorNearestOKLab.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -17,4 +17,5 @@ export * from './statistics';
17
17
  export * from './marshalBE';
18
18
  export * from './marshalLE';
19
19
  export * from './audio';
20
+ export * from './colorNearestOKLab';
20
21
  export { InjectionKey, Ref, ref, reactive, toRaw, isRef, watchEffect } from 'vue';
package/dist/index.js CHANGED
@@ -17,5 +17,6 @@ export * from './statistics';
17
17
  export * from './marshalBE';
18
18
  export * from './marshalLE';
19
19
  export * from './audio';
20
+ export * from './colorNearestOKLab';
20
21
  export { ref, reactive, toRaw, isRef, watchEffect } from 'vue';
21
22
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,OAAO,EAAqB,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,KAAK,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAqB,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,KAAK,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@christianriedl/utils",
3
- "version": "1.0.164",
3
+ "version": "1.0.166",
4
4
  "description": "Interfaces, local storage, service worker, configuration, application state",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -3,7 +3,7 @@
3
3
  import { useTheme, ThemeInstance } from 'vuetify';
4
4
  //import { argbFromHex, hexFromArgb, themeFromSourceColor, applyTheme, CustomColor, CustomColorGroup, Theme, Scheme } from "@material/material-color-utilities";
5
5
  import { Dictionary, appConfigSymbol } from '@christianriedl/utils';
6
- import { precomputeOKLabColors, PaletteColorOK, nearestColorOKLab } from '../../../../../src/colorNearestOKLab';
6
+ import { precomputeOKLabColors, PaletteColorOK, nearestColorOKLab } from '@christianriedl/utils';
7
7
 
8
8
  const props = defineProps<{ theme: ThemeInstance, materialColors: Dictionary<Dictionary<string>> }>();
9
9