chromonym 1.1.0 → 1.3.0

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.
Files changed (73) hide show
  1. package/NOTICE.md +39 -0
  2. package/README.md +93 -8
  3. package/dist/colorspaces/registry.d.ts +26 -0
  4. package/dist/colorspaces/registry.d.ts.map +1 -0
  5. package/dist/colorspaces/registry.js +36 -0
  6. package/dist/colorspaces/registry.js.map +1 -0
  7. package/dist/conversions/hex.d.ts.map +1 -1
  8. package/dist/conversions/hex.js +6 -5
  9. package/dist/conversions/hex.js.map +1 -1
  10. package/dist/conversions/hsl.d.ts.map +1 -1
  11. package/dist/conversions/hsl.js +34 -52
  12. package/dist/conversions/hsl.js.map +1 -1
  13. package/dist/conversions/hsv.d.ts.map +1 -1
  14. package/dist/conversions/hsv.js +30 -48
  15. package/dist/conversions/hsv.js.map +1 -1
  16. package/dist/conversions/pantone.d.ts +5 -2
  17. package/dist/conversions/pantone.d.ts.map +1 -1
  18. package/dist/conversions/pantone.js +8 -44
  19. package/dist/conversions/pantone.js.map +1 -1
  20. package/dist/conversions/rgb.d.ts +4 -2
  21. package/dist/conversions/rgb.d.ts.map +1 -1
  22. package/dist/conversions/rgb.js +28 -17
  23. package/dist/conversions/rgb.js.map +1 -1
  24. package/dist/convert.d.ts +12 -1
  25. package/dist/convert.d.ts.map +1 -1
  26. package/dist/convert.js +24 -6
  27. package/dist/convert.js.map +1 -1
  28. package/dist/detectFormat.d.ts +8 -0
  29. package/dist/detectFormat.d.ts.map +1 -1
  30. package/dist/detectFormat.js +17 -5
  31. package/dist/detectFormat.js.map +1 -1
  32. package/dist/identify.d.ts +13 -5
  33. package/dist/identify.d.ts.map +1 -1
  34. package/dist/identify.js +20 -35
  35. package/dist/identify.js.map +1 -1
  36. package/dist/index.d.ts +2 -2
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +2 -2
  39. package/dist/index.js.map +1 -1
  40. package/dist/indexing.d.ts +44 -0
  41. package/dist/indexing.d.ts.map +1 -0
  42. package/dist/indexing.js +140 -0
  43. package/dist/indexing.js.map +1 -0
  44. package/dist/math/clamp.d.ts +11 -0
  45. package/dist/math/clamp.d.ts.map +1 -0
  46. package/dist/math/clamp.js +18 -0
  47. package/dist/math/clamp.js.map +1 -0
  48. package/dist/math/colorSpace.d.ts +55 -0
  49. package/dist/math/colorSpace.d.ts.map +1 -0
  50. package/dist/math/colorSpace.js +111 -0
  51. package/dist/math/colorSpace.js.map +1 -0
  52. package/dist/math/deltaE.d.ts +52 -0
  53. package/dist/math/deltaE.d.ts.map +1 -0
  54. package/dist/math/deltaE.js +190 -0
  55. package/dist/math/deltaE.js.map +1 -0
  56. package/dist/math/euclideanDistance.d.ts +7 -0
  57. package/dist/math/euclideanDistance.d.ts.map +1 -1
  58. package/dist/math/euclideanDistance.js +13 -4
  59. package/dist/math/euclideanDistance.js.map +1 -1
  60. package/dist/math/hueSector.d.ts +15 -0
  61. package/dist/math/hueSector.d.ts.map +1 -0
  62. package/dist/math/hueSector.js +27 -0
  63. package/dist/math/hueSector.js.map +1 -0
  64. package/dist/resolve.d.ts.map +1 -1
  65. package/dist/resolve.js +11 -34
  66. package/dist/resolve.js.map +1 -1
  67. package/dist/types.d.ts +1 -0
  68. package/dist/types.d.ts.map +1 -1
  69. package/package.json +72 -8
  70. package/dist/math/index.d.ts +0 -2
  71. package/dist/math/index.d.ts.map +0 -1
  72. package/dist/math/index.js +0 -4
  73. package/dist/math/index.js.map +0 -1
@@ -1,3 +1,15 @@
1
+ /**
2
+ * Squared Euclidean distance between two colors in RGB space.
3
+ * Alpha channel is ignored. Faster than `euclideanDistance` — use this
4
+ * when you only need to compare or minimize (sqrt is monotonic, so
5
+ * argmin(d) === argmin(d²)).
6
+ */
7
+ export function squaredDistanceRgb(a, b) {
8
+ const dr = a.r - b.r;
9
+ const dg = a.g - b.g;
10
+ const db = a.b - b.b;
11
+ return dr * dr + dg * dg + db * db;
12
+ }
1
13
  /**
2
14
  * Euclidean distance between two colors in RGB space.
3
15
  * Alpha channel is ignored (matches classic `detect-color` behavior).
@@ -5,9 +17,6 @@
5
17
  * where perceptual uniformity matters.
6
18
  */
7
19
  export function euclideanDistance(a, b) {
8
- const dr = a.r - b.r;
9
- const dg = a.g - b.g;
10
- const db = a.b - b.b;
11
- return Math.sqrt(dr * dr + dg * dg + db * db);
20
+ return Math.sqrt(squaredDistanceRgb(a, b));
12
21
  }
13
22
  //# sourceMappingURL=euclideanDistance.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"euclideanDistance.js","sourceRoot":"","sources":["../../src/math/euclideanDistance.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,CAAO,EAAE,CAAO;IAChD,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACrB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACrB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACrB,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AAChD,CAAC"}
1
+ {"version":3,"file":"euclideanDistance.js","sourceRoot":"","sources":["../../src/math/euclideanDistance.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,CAAO,EAAE,CAAO;IACjD,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACrB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACrB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACrB,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AACrC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,CAAO,EAAE,CAAO;IAChD,OAAO,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Map a normalized hue sector value (range [0, 6)) plus chroma and its
3
+ * secondary into the primary-color tuple `[r', g', b']` used by the
4
+ * standard HSL→RGB and HSV→RGB algorithms. Each component is in [0, chroma].
5
+ *
6
+ * Shared by `hslToRgba` and `hsvToRgba`: same six-sector table, different
7
+ * formulas for chroma and the offset. The caller adds the offset and
8
+ * scales by 255.
9
+ *
10
+ * hueSector = h / 60 (h wrapped to [0, 360))
11
+ * chroma = HSL: (1 − |2l − 1|)·s ; HSV: v·s
12
+ * secondary = chroma · (1 − |hueSector mod 2 − 1|)
13
+ */
14
+ export declare function hueSectorToPrime(hueSector: number, chroma: number, secondary: number): [number, number, number];
15
+ //# sourceMappingURL=hueSector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hueSector.d.ts","sourceRoot":"","sources":["../../src/math/hueSector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAO1B"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Map a normalized hue sector value (range [0, 6)) plus chroma and its
3
+ * secondary into the primary-color tuple `[r', g', b']` used by the
4
+ * standard HSL→RGB and HSV→RGB algorithms. Each component is in [0, chroma].
5
+ *
6
+ * Shared by `hslToRgba` and `hsvToRgba`: same six-sector table, different
7
+ * formulas for chroma and the offset. The caller adds the offset and
8
+ * scales by 255.
9
+ *
10
+ * hueSector = h / 60 (h wrapped to [0, 360))
11
+ * chroma = HSL: (1 − |2l − 1|)·s ; HSV: v·s
12
+ * secondary = chroma · (1 − |hueSector mod 2 − 1|)
13
+ */
14
+ export function hueSectorToPrime(hueSector, chroma, secondary) {
15
+ if (hueSector < 1)
16
+ return [chroma, secondary, 0];
17
+ if (hueSector < 2)
18
+ return [secondary, chroma, 0];
19
+ if (hueSector < 3)
20
+ return [0, chroma, secondary];
21
+ if (hueSector < 4)
22
+ return [0, secondary, chroma];
23
+ if (hueSector < 5)
24
+ return [secondary, 0, chroma];
25
+ return [chroma, 0, secondary];
26
+ }
27
+ //# sourceMappingURL=hueSector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hueSector.js","sourceRoot":"","sources":["../../src/math/hueSector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,gBAAgB,CAC9B,SAAiB,EACjB,MAAc,EACd,SAAiB;IAEjB,IAAI,SAAS,GAAG,CAAC;QAAE,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;IACjD,IAAI,SAAS,GAAG,CAAC;QAAE,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACjD,IAAI,SAAS,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IACjD,IAAI,SAAS,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IACjD,IAAI,SAAS,GAAG,CAAC;QAAE,OAAO,CAAC,SAAS,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IACjD,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;AAChC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAc,cAAc,EAAE,UAAU,EAAY,MAAM,SAAS,CAAC;AAiC7F;;;;;;;GAOG;AACH,wBAAgB,OAAO,CACrB,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE;IAAE,UAAU,CAAC,EAAE,cAAc,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAO,GAC/D,UAAU,GAAG,IAAI,CAQnB"}
1
+ {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,EAAY,MAAM,SAAS,CAAC;AAEjF;;;;;;;GAOG;AACH,wBAAgB,OAAO,CACrB,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE;IAAE,UAAU,CAAC,EAAE,cAAc,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAO,GAC/D,UAAU,GAAG,IAAI,CAUnB"}
package/dist/resolve.js CHANGED
@@ -1,33 +1,7 @@
1
- import { pantone } from './colorspaces/pantone';
2
- import { web } from './colorspaces/web';
3
- import { x11 } from './colorspaces/x11';
4
- import { convert } from './convert';
5
- const COLORSPACES = { web, x11, pantone };
6
- function normalize(s) {
7
- return s.toLowerCase().replace(/[^a-z0-9]/g, '');
8
- }
9
- // Pantone-specific: also strip leading "Pantone" / "PMS" prefix so that
10
- // "Pantone 185 C" and "PMS 185C" both resolve to "185C".
11
- function normalizeForPantone(s) {
12
- return s
13
- .toLowerCase()
14
- .replace(/^(pantone|pms)\s*/, '')
15
- .replace(/[^a-z0-9]/g, '');
16
- }
17
- const indexes = new Map();
18
- function getIndex(colorspace) {
19
- let idx = indexes.get(colorspace);
20
- if (idx === undefined) {
21
- idx = new Map();
22
- const space = COLORSPACES[colorspace];
23
- const normFn = colorspace === 'pantone' ? normalizeForPantone : normalize;
24
- for (const key of Object.keys(space)) {
25
- idx.set(normFn(key), key);
26
- }
27
- indexes.set(colorspace, idx);
28
- }
29
- return idx;
30
- }
1
+ import { COLORSPACE_NAMES, COLORSPACES, NORMALIZERS } from './colorspaces/registry';
2
+ import { hexToRgba } from './conversions/hex';
3
+ import { fromRgba } from './convert';
4
+ import { getNameIndex } from './indexing';
31
5
  /**
32
6
  * Resolve a human-readable name to a color. Normalizes the input
33
7
  * (lowercases, strips non-alphanumeric characters, and for the pantone
@@ -38,12 +12,15 @@ function getIndex(colorspace) {
38
12
  */
39
13
  export function resolve(name, opts = {}) {
40
14
  const { colorspace = 'web', format = 'HEX' } = opts;
41
- const normFn = colorspace === 'pantone' ? normalizeForPantone : normalize;
42
- const canonical = getIndex(colorspace).get(normFn(name));
43
- if (canonical === undefined)
15
+ if (!COLORSPACE_NAMES.has(colorspace))
44
16
  return null;
45
17
  const space = COLORSPACES[colorspace];
18
+ const normalize = NORMALIZERS[colorspace];
19
+ const canonical = getNameIndex(space, normalize).get(normalize(name));
20
+ if (canonical === undefined)
21
+ return null;
46
22
  const hex = space[canonical];
47
- return convert(hex, { format });
23
+ // Skip detectFormat — we already know this is HEX (read from colorspace data).
24
+ return fromRgba(hexToRgba(hex), format);
48
25
  }
49
26
  //# sourceMappingURL=resolve.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,MAAM,WAAW,GAAuC,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;AAE9E,SAAS,SAAS,CAAC,CAAS;IAC1B,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,wEAAwE;AACxE,yDAAyD;AACzD,SAAS,mBAAmB,CAAC,CAAS;IACpC,OAAO,CAAC;SACL,WAAW,EAAE;SACb,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC;SAChC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,GAAG,EAAuC,CAAC;AAE/D,SAAS,QAAQ,CAAC,UAA0B;IAC1C,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAClC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;QAChB,MAAM,KAAK,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1E,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACrC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;QAC5B,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,OAAO,CACrB,IAAY,EACZ,IAAI,GAA0D,EAAE;IAEhE,MAAM,EAAE,UAAU,GAAG,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;IACpD,MAAM,MAAM,GAAG,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1E,MAAM,SAAS,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IACzD,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACzC,MAAM,KAAK,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAa,CAAC;IACzC,OAAO,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../src/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACpF,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1C;;;;;;;GAOG;AACH,MAAM,UAAU,OAAO,CACrB,IAAY,EACZ,IAAI,GAA0D,EAAE;IAEhE,MAAM,EAAE,UAAU,GAAG,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;IACpD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IACnD,MAAM,KAAK,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;IACtC,MAAM,SAAS,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;IAC1C,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IACtE,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACzC,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAa,CAAC;IACzC,+EAA+E;IAC/E,OAAO,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;AAC1C,CAAC"}
package/dist/types.d.ts CHANGED
@@ -38,5 +38,6 @@ export declare const COLOR_FORMATS: ReadonlySet<ColorFormat>;
38
38
  export type ColorValue = HexColor | RgbString | Rgba | HslString | HsvString | PantoneCode;
39
39
  export type Colorspace = Record<string, HexColor>;
40
40
  export type ColorspaceName = 'web' | 'x11' | 'pantone';
41
+ export type DistanceMetric = 'euclidean-srgb' | 'euclidean-linear' | 'deltaE76' | 'deltaE94' | 'deltaE2000' | 'deltaEok';
41
42
  export {};
42
43
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,QAAQ,GAAG,IAAI,MAAM,EAAE,CAAC;AAGpC,MAAM,MAAM,SAAS,GACjB,OAAO,MAAM,IAAI,MAAM,IAAI,MAAM,GAAG,GACpC,OAAO,MAAM,KAAK,MAAM,KAAK,MAAM,GAAG,CAAC;AAC3C,MAAM,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AAClE,MAAM,MAAM,SAAS,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAC5D,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAGxD,MAAM,MAAM,UAAU,GAClB,QAAQ,MAAM,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,GAAG,GAC/C,QAAQ,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,GAAG,CAAC;AACvD,MAAM,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AAC9E,MAAM,MAAM,IAAI,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAClE,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC;AAGtD,MAAM,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,MAAM,MAAM,MAAM,IAAI,CAAC;AACjE,MAAM,MAAM,SAAS,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAC5D,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;AAG7C,MAAM,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,MAAM,MAAM,MAAM,IAAI,CAAC;AACjE,MAAM,MAAM,SAAS,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAC5D,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;AAI7C,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC;AAGjC,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC;AAG7F,QAAA,MAAM,aAAa,YAAI,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,CAAU,CAAC;AAC/E,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AACzD,eAAO,MAAM,aAAa,EAAE,WAAW,CAAC,WAAW,CAA0B,CAAC;AAG9E,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;AAG3F,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAClD,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,QAAQ,GAAG,IAAI,MAAM,EAAE,CAAC;AAGpC,MAAM,MAAM,SAAS,GACjB,OAAO,MAAM,IAAI,MAAM,IAAI,MAAM,GAAG,GACpC,OAAO,MAAM,KAAK,MAAM,KAAK,MAAM,GAAG,CAAC;AAC3C,MAAM,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AAClE,MAAM,MAAM,SAAS,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAC5D,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAGxD,MAAM,MAAM,UAAU,GAClB,QAAQ,MAAM,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,GAAG,GAC/C,QAAQ,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,GAAG,CAAC;AACvD,MAAM,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AAC9E,MAAM,MAAM,IAAI,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAClE,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC;AAGtD,MAAM,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,MAAM,MAAM,MAAM,IAAI,CAAC;AACjE,MAAM,MAAM,SAAS,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAC5D,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;AAG7C,MAAM,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,MAAM,MAAM,MAAM,IAAI,CAAC;AACjE,MAAM,MAAM,SAAS,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAC5D,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;AAI7C,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC;AAGjC,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAC;AAG7F,QAAA,MAAM,aAAa,YAAI,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,CAAU,CAAC;AAC/E,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AACzD,eAAO,MAAM,aAAa,EAAE,WAAW,CAAC,WAAW,CAA0B,CAAC;AAG9E,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;AAG3F,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAClD,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC;AAWvD,MAAM,MAAM,cAAc,GACtB,gBAAgB,GAChB,kBAAkB,GAClB,UAAU,GACV,UAAU,GACV,YAAY,GACZ,UAAU,CAAC"}
package/package.json CHANGED
@@ -1,12 +1,30 @@
1
1
  {
2
2
  "name": "chromonym",
3
- "version": "1.1.0",
4
- "description": "Color naming tool — resolve RGB or Hex color input to a human-readable name.",
3
+ "version": "1.3.0",
4
+ "description": "Tree-shakeable color-naming primitive for TypeScript. Identify, resolve, and convert colors across CSS, X11, and Pantone colorspaces — with perceptual distance metrics (CIEDE2000).",
5
5
  "keywords": [
6
6
  "color",
7
- "naming",
8
- "rgb",
7
+ "color-name",
8
+ "color-naming",
9
+ "color-identify",
10
+ "color-resolve",
11
+ "color-convert",
12
+ "nearest-color",
13
+ "css-colors",
14
+ "x11-colors",
15
+ "pantone",
16
+ "deltaE",
17
+ "ciede2000",
18
+ "lab",
19
+ "oklab",
20
+ "perceptual",
21
+ "typescript",
22
+ "tree-shakeable",
23
+ "tree-shaking",
9
24
  "hex",
25
+ "rgb",
26
+ "hsl",
27
+ "hsv",
10
28
  "palette",
11
29
  "chromonym"
12
30
  ],
@@ -29,12 +47,58 @@
29
47
  ".": {
30
48
  "types": "./dist/index.d.ts",
31
49
  "import": "./dist/index.js"
32
- }
50
+ },
51
+ "./web": {
52
+ "types": "./dist/colorspaces/web.d.ts",
53
+ "import": "./dist/colorspaces/web.js"
54
+ },
55
+ "./x11": {
56
+ "types": "./dist/colorspaces/x11.d.ts",
57
+ "import": "./dist/colorspaces/x11.js"
58
+ },
59
+ "./pantone": {
60
+ "types": "./dist/colorspaces/pantone.d.ts",
61
+ "import": "./dist/colorspaces/pantone.js"
62
+ },
63
+ "./conversions/hex": {
64
+ "types": "./dist/conversions/hex.d.ts",
65
+ "import": "./dist/conversions/hex.js"
66
+ },
67
+ "./conversions/rgb": {
68
+ "types": "./dist/conversions/rgb.d.ts",
69
+ "import": "./dist/conversions/rgb.js"
70
+ },
71
+ "./conversions/hsl": {
72
+ "types": "./dist/conversions/hsl.d.ts",
73
+ "import": "./dist/conversions/hsl.js"
74
+ },
75
+ "./conversions/hsv": {
76
+ "types": "./dist/conversions/hsv.d.ts",
77
+ "import": "./dist/conversions/hsv.js"
78
+ },
79
+ "./conversions/pantone": {
80
+ "types": "./dist/conversions/pantone.d.ts",
81
+ "import": "./dist/conversions/pantone.js"
82
+ },
83
+ "./math/deltaE": {
84
+ "types": "./dist/math/deltaE.d.ts",
85
+ "import": "./dist/math/deltaE.js"
86
+ },
87
+ "./math/colorSpace": {
88
+ "types": "./dist/math/colorSpace.d.ts",
89
+ "import": "./dist/math/colorSpace.js"
90
+ },
91
+ "./types": {
92
+ "types": "./dist/types.d.ts",
93
+ "import": "./dist/types.js"
94
+ },
95
+ "./package.json": "./package.json"
33
96
  },
34
97
  "files": [
35
98
  "dist",
36
99
  "README.md",
37
- "LICENSE"
100
+ "LICENSE",
101
+ "NOTICE.md"
38
102
  ],
39
103
  "scripts": {
40
104
  "build": "tsgo",
@@ -50,8 +114,8 @@
50
114
  "@semantic-release/changelog": "^6.0.3",
51
115
  "@semantic-release/git": "^10.0.1",
52
116
  "@semantic-release/npm": "^13.1.5",
53
- "@types/bun": "latest",
54
- "@typescript/native-preview": "latest",
117
+ "@types/bun": "^1.3.12",
118
+ "@typescript/native-preview": "7.0.0-dev.20260417.1",
55
119
  "semantic-release": "^25.0.3"
56
120
  },
57
121
  "publishConfig": {
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/math/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC"}
@@ -1,4 +0,0 @@
1
- // Math barrel — populated with explicit named re-exports as
2
- // distance/color-math files (euclideanDistance.ts, etc.) land.
3
- export {};
4
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/math/index.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,+DAA+D;AAC/D,OAAO,EAAE,CAAC"}