@xivdyetools/core 1.12.4 → 1.12.6

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.
@@ -20,7 +20,7 @@ export { NoOpLogger, ConsoleLogger } from '@xivdyetools/logger/library';
20
20
  /**
21
21
  * @deprecated Removed in v2.0.0. Import directly from '@xivdyetools/types' instead.
22
22
  */
23
- export type { RGB, HSV, LAB, HexColor, DyeId, Hue, Saturation } from '@xivdyetools/types';
23
+ export type { RGB, HSV, LAB, OKLAB, OKLCH, LCH, HSL, HexColor, DyeId, Hue, Saturation, } from '@xivdyetools/types';
24
24
  /**
25
25
  * @deprecated Removed in v2.0.0. Import directly from '@xivdyetools/types' instead.
26
26
  */
@@ -70,4 +70,65 @@ export type { Result, AsyncResult, Nullable, Optional } from '@xivdyetools/types
70
70
  * @deprecated Removed in v2.0.0. Import directly from '@xivdyetools/types' instead.
71
71
  */
72
72
  export { isOk, isErr } from '@xivdyetools/types';
73
+ /**
74
+ * Available color matching algorithms for finding closest dyes.
75
+ *
76
+ * - rgb: RGB Euclidean distance (fastest, least accurate)
77
+ * - cie76: CIE76 LAB Euclidean (fast, fair accuracy)
78
+ * - ciede2000: CIEDE2000 (industry standard, accurate)
79
+ * - oklab: OKLAB Euclidean (modern, simpler than ciede2000, CSS standard)
80
+ * - hyab: HyAB hybrid (best for large color differences/palette matching)
81
+ * - oklch-weighted: OKLCH with custom L/C/H weights (advanced)
82
+ */
83
+ export type MatchingMethod = 'rgb' | 'cie76' | 'ciede2000' | 'oklab' | 'hyab' | 'oklch-weighted';
84
+ /**
85
+ * Configuration for OKLCH weighted matching.
86
+ * Allows users to prioritize different color attributes.
87
+ */
88
+ export interface OklchWeights {
89
+ /** Lightness weight (default 1.0). Higher = prioritize brightness matching */
90
+ kL: number;
91
+ /** Chroma weight (default 1.0). Higher = prioritize saturation matching */
92
+ kC: number;
93
+ /** Hue weight (default 1.0). Higher = prioritize hue matching */
94
+ kH: number;
95
+ }
96
+ /**
97
+ * Color matching configuration options.
98
+ */
99
+ export interface MatchingConfig {
100
+ /** The matching algorithm to use */
101
+ method: MatchingMethod;
102
+ /** Custom weights for oklch-weighted method (ignored for other methods) */
103
+ weights?: OklchWeights;
104
+ }
105
+ /**
106
+ * Default OKLCH weights for common matching presets.
107
+ */
108
+ export declare const MATCHING_PRESETS: {
109
+ /** Equal weight to all attributes (default) */
110
+ readonly balanced: {
111
+ readonly kL: 1;
112
+ readonly kC: 1;
113
+ readonly kH: 1;
114
+ };
115
+ /** Prioritize matching the hue (color), tolerate brightness differences */
116
+ readonly matchHue: {
117
+ readonly kL: 0.5;
118
+ readonly kC: 0.8;
119
+ readonly kH: 2;
120
+ };
121
+ /** Prioritize matching brightness (for armor visibility) */
122
+ readonly matchBrightness: {
123
+ readonly kL: 2;
124
+ readonly kC: 1;
125
+ readonly kH: 0.5;
126
+ };
127
+ /** Prioritize matching saturation (find vibrant alternatives) */
128
+ readonly matchSaturation: {
129
+ readonly kL: 0.5;
130
+ readonly kC: 2;
131
+ readonly kH: 0.8;
132
+ };
133
+ };
73
134
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;GAEG;AACH,YAAY,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAC1D;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAMxE;;GAEG;AACH,YAAY,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC1F;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC9F;;GAEG;AACH,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAEpF;;GAEG;AACH,YAAY,EAAE,GAAG,EAAE,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAE1F;;GAEG;AACH,YAAY,EACV,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,EACzB,sBAAsB,EACtB,OAAO,EACP,MAAM,EACN,IAAI,GACL,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3F;;GAEG;AACH,YAAY,EACV,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,cAAc,EACd,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,6BAA6B,EAC7B,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,YAAY,EACZ,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAE5B;;GAEG;AACH,YAAY,EACV,YAAY,EACZ,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,oBAAoB,EACpB,WAAW,EACX,oBAAoB,EACpB,gBAAgB,EAChB,4BAA4B,EAC5B,qBAAqB,EACrB,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAE5B;;GAEG;AACH,YAAY,EACV,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,SAAS,EACT,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAE5B;;GAEG;AACH,YAAY,EACV,UAAU,EACV,cAAc,EACd,cAAc,EACd,MAAM,EACN,eAAe,EACf,OAAO,EACP,OAAO,EACP,UAAU,EACV,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAE5B;;GAEG;AACH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACzD;;GAEG;AACH,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD;;GAEG;AACH,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAClF;;GAEG;AACH,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -26,4 +26,17 @@ export { ErrorCode, AppError } from '@xivdyetools/types';
26
26
  * @deprecated Removed in v2.0.0. Import directly from '@xivdyetools/types' instead.
27
27
  */
28
28
  export { isOk, isErr } from '@xivdyetools/types';
29
+ /**
30
+ * Default OKLCH weights for common matching presets.
31
+ */
32
+ export const MATCHING_PRESETS = {
33
+ /** Equal weight to all attributes (default) */
34
+ balanced: { kL: 1.0, kC: 1.0, kH: 1.0 },
35
+ /** Prioritize matching the hue (color), tolerate brightness differences */
36
+ matchHue: { kL: 0.5, kC: 0.8, kH: 2.0 },
37
+ /** Prioritize matching brightness (for armor visibility) */
38
+ matchBrightness: { kL: 2.0, kC: 1.0, kH: 0.5 },
39
+ /** Prioritize matching saturation (find vibrant alternatives) */
40
+ matchSaturation: { kL: 0.5, kC: 2.0, kH: 0.8 },
41
+ };
29
42
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAUxE;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAwB9F,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AA6E3F;;GAEG;AACH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAUzD;;GAEG;AACH,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAsBxE;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAwB9F,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AA6E3F;;GAEG;AACH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAUzD;;GAEG;AACH,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AA+CjD;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,+CAA+C;IAC/C,QAAQ,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE;IACvC,2EAA2E;IAC3E,QAAQ,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE;IACvC,4DAA4D;IAC5D,eAAe,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE;IAC9C,iEAAiE;IACjE,eAAe,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE;CACtC,CAAC"}
package/dist/version.d.ts CHANGED
@@ -7,5 +7,5 @@
7
7
  * Current library version
8
8
  * Automatically synced with package.json version
9
9
  */
10
- export declare const VERSION = "1.12.4";
10
+ export declare const VERSION = "1.12.6";
11
11
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -7,5 +7,5 @@
7
7
  * Current library version
8
8
  * Automatically synced with package.json version
9
9
  */
10
- export const VERSION = '1.12.4';
10
+ export const VERSION = '1.12.6';
11
11
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xivdyetools/core",
3
- "version": "1.12.4",
3
+ "version": "1.12.6",
4
4
  "description": "Core color algorithms and dye database for XIV Dye Tools",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -77,7 +77,8 @@
77
77
  },
78
78
  "dependencies": {
79
79
  "@xivdyetools/logger": "^1.0.2",
80
- "@xivdyetools/types": "^1.6.1"
80
+ "@xivdyetools/types": "^1.6.1",
81
+ "spectral.js": "^3.0.0"
81
82
  },
82
83
  "lint-staged": {
83
84
  "*.ts": [
@@ -85,4 +86,4 @@
85
86
  "prettier --write"
86
87
  ]
87
88
  }
88
- }
89
+ }