chromonym 3.5.0 → 3.5.1
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 +11 -5
- package/dist/conversions/hex.d.ts.map +1 -1
- package/dist/conversions/hsl.d.ts.map +1 -1
- package/dist/conversions/hsv.d.ts.map +1 -1
- package/dist/conversions/pantone.d.ts.map +1 -1
- package/dist/conversions/rgb.d.ts.map +1 -1
- package/dist/convert.d.ts.map +1 -1
- package/dist/defineColorPalette.d.ts.map +1 -1
- package/dist/detectFormat.d.ts.map +1 -1
- package/dist/identify.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/indexing.d.ts.map +1 -1
- package/dist/math/clamp.d.ts.map +1 -1
- package/dist/math/colorSpace.d.ts.map +1 -1
- package/dist/math/deltaE.d.ts.map +1 -1
- package/dist/math/editDistance.d.ts.map +1 -1
- package/dist/math/euclideanDistance.d.ts.map +1 -1
- package/dist/math/hueSector.d.ts.map +1 -1
- package/dist/palettes/crayola.d.ts.map +1 -1
- package/dist/palettes/fs595b.d.ts.map +1 -1
- package/dist/palettes/fs595c.d.ts.map +1 -1
- package/dist/palettes/isccNbs.d.ts.map +1 -1
- package/dist/palettes/nbs.d.ts.map +1 -1
- package/dist/palettes/ncs.d.ts.map +1 -1
- package/dist/palettes/normalize.d.ts.map +1 -1
- package/dist/palettes/ntc.d.ts.map +1 -1
- package/dist/palettes/pantone.d.ts.map +1 -1
- package/dist/palettes/pokemon.d.ts.map +1 -1
- package/dist/palettes/ral.d.ts.map +1 -1
- package/dist/palettes/resene.d.ts.map +1 -1
- package/dist/palettes/tailwind.d.ts.map +1 -1
- package/dist/palettes/web.d.ts.map +1 -1
- package/dist/palettes/werner.d.ts.map +1 -1
- package/dist/palettes/x11.d.ts.map +1 -1
- package/dist/palettes/xkcd.d.ts.map +1 -1
- package/dist/resolve.d.ts.map +1 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +21 -18
package/README.md
CHANGED
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
<code>identify</code> • <code>resolve</code> • <code>convert</code>
|
|
22
22
|
</p>
|
|
23
23
|
|
|
24
|
-
**The last color-naming library you'll ever need.** One API — `identify`, `resolve`, `convert` — works against any palette you throw at it. Ships
|
|
24
|
+
**The last color-naming library you'll ever need.** Give it any hex, RGB, HSL, or HSV value and get back the nearest named color; give it a color name and get back the value. One API — `identify`, `resolve`, `convert` — works against any palette you throw at it. Ships sixteen palettes out of the box (CSS, X11, Pantone, Crayola, NTC, XKCD, RAL, Tailwind, Resene, NCS, ISCC-NBS, NBS, FS 595 B, FS 595 C, Werner, Pokémon); bring your own (brand colors, paint chips, game factions, chart themes) with full TypeScript inference and zero registration. Six distance metrics — from fast Euclidean to industry-standard CIEDE2000 and OKLAB. Tree-shakes to the bone — you only pay for palettes you import.
|
|
25
25
|
|
|
26
26
|
<sub>*chromonym* (n.): a name for a color; *chroma* + *-onym*. Also the library.</sub>
|
|
27
27
|
|
|
@@ -74,7 +74,7 @@ convert('#e4002b', { palette: pantone, format: 'NAME' }) // '185 C' (exact mat
|
|
|
74
74
|
convert('acme red', { palette: brand, format: 'RGB' }) // 'rgb(255, 42, 59)'
|
|
75
75
|
```
|
|
76
76
|
|
|
77
|
-
The identification machinery is palette-agnostic —
|
|
77
|
+
The identification machinery is palette-agnostic — HKS, Munsell, or a bespoke in-house set are the same amount of work (a small file each, or a single object literal). PRs welcome; meanwhile, BYO lets you ship today.
|
|
78
78
|
|
|
79
79
|
## Install
|
|
80
80
|
|
|
@@ -296,7 +296,7 @@ Unparseable values are dropped with a `console.warn` naming the palette, the off
|
|
|
296
296
|
|
|
297
297
|
If you prefer zero runtime and already have hex-only values, the `as const satisfies Palette<'A' | 'B' | ...>` pattern still works — list the key union once in the generic and it narrows identically.
|
|
298
298
|
|
|
299
|
-
### The
|
|
299
|
+
### The sixteen we ship
|
|
300
300
|
|
|
301
301
|
| Name | Entries | Source |
|
|
302
302
|
|---|---|---|
|
|
@@ -312,6 +312,10 @@ If you prefer zero runtime and already have hex-only values, the `as const satis
|
|
|
312
312
|
| `nbs` | 267 | Second digitization of the same 1955 standard; different sRGB (matches 1955 chip book; covers the 7 blocks `isccNbs` leaves as gaps) |
|
|
313
313
|
| `resene` | 1378 | Resene Paints (NZ) catalog; te reo Māori and NZ place-names in the naming |
|
|
314
314
|
| `ncs` | 1950 | Natural Colour System (Sweden) — perceptual, structured notation (`2030-R80B`), not NCS-licensed |
|
|
315
|
+
| `ral` | 216 | RAL Classic, the European industrial coatings standard (community sRGB values; not a licensed RAL product) |
|
|
316
|
+
| `tailwind` | 242 | Tailwind CSS v4 default theme (22 families × 11 shades, computed from the OKLCH spec) |
|
|
317
|
+
| `werner` | 110 | Werner's Nomenclature of Colours (1821, Patrick Syme; the field reference Darwin carried aboard the Beagle) |
|
|
318
|
+
| `pokemon` | 18 | Pokémon type-badge colors (community approximations; not an official asset set) |
|
|
315
319
|
|
|
316
320
|
Importable directly, or via subpath exports for stricter tree-shaking:
|
|
317
321
|
|
|
@@ -454,7 +458,7 @@ const tryConvert = (input: ColorInput, opts = {}) => {
|
|
|
454
458
|
|
|
455
459
|
**Install size and bundle size are not the same number.** Install size is what lands in your `node_modules/` after `npm install`; bundle size is what ships to your users after tree-shaking, minification, and gzip. For chromonym the gap is roughly two orders of magnitude.
|
|
456
460
|
|
|
457
|
-
The published tarball is **~2.
|
|
461
|
+
The published tarball is **~2.7 MB unpacked / ~600 kB gzipped** because it carries sixteen palettes and ~9500 named-color entries; that's the install-size figure `packagephobia` reports. Your **production bundle** pays only for what you actually import, measured with `esbuild --minify`:
|
|
458
462
|
|
|
459
463
|
| Import | min | gzip |
|
|
460
464
|
|---|---|---|
|
|
@@ -484,7 +488,7 @@ Re-exported from the root barrel — `import type { ... } from 'chromonym'`:
|
|
|
484
488
|
```sh
|
|
485
489
|
bun install
|
|
486
490
|
bun run lint # biome
|
|
487
|
-
bun run typecheck #
|
|
491
|
+
bun run typecheck # tsc (TypeScript 7, native)
|
|
488
492
|
bun test
|
|
489
493
|
bun run build
|
|
490
494
|
```
|
|
@@ -501,6 +505,8 @@ chromonym deliberately limits its scope to color *naming* (resolving and identif
|
|
|
501
505
|
|
|
502
506
|
MIT © [the-simian](https://github.com/the-simian)
|
|
503
507
|
|
|
508
|
+
<sub>Looking for this package and landed here another way? Common misspellings: *chromanym*, *chromonim*. The package name is **chromonym**.</sub>
|
|
509
|
+
|
|
504
510
|
<p align="center"><sub>Crafted with care by <a href="https://simiancraft.com">Simiancraft</a>.</sub></p>
|
|
505
511
|
|
|
506
512
|
<p align="center"><sub>Pantone® and Crayola® are trademarks of their respective owners; Chromonym is not affiliated. Palette values are community approximations. Demo typeface <a href="https://www.dafont.com/bauhaus-modern.font">Bauhaus Modern</a> © Nils Kähler. Full attributions: <a href="./NOTICE.md">NOTICE.md</a>.</sub></p>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hex.d.ts","sourceRoot":"","sources":["../../src/conversions/hex.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAElD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI,CAsB7C;AAMD;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,QAAQ,CAE9C"
|
|
1
|
+
{"version":3,"file":"hex.d.ts","sourceRoot":"","sources":["../../src/conversions/hex.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAElD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI,CAsB7C;AAMD;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,QAAQ,CAE9C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hsl.d.ts","sourceRoot":"","sources":["../../src/conversions/hsl.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAK7D;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAqC/C;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,CAyB/C"
|
|
1
|
+
{"version":3,"file":"hsl.d.ts","sourceRoot":"","sources":["../../src/conversions/hsl.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAK7D;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAqC/C;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,CAyB/C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hsv.d.ts","sourceRoot":"","sources":["../../src/conversions/hsv.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAK7D;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CA+B/C;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,CAuB/C"
|
|
1
|
+
{"version":3,"file":"hsv.d.ts","sourceRoot":"","sources":["../../src/conversions/hsv.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAK7D;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CA+B/C;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,CAuB/C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pantone.d.ts","sourceRoot":"","sources":["../../src/conversions/pantone.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,gBAAgB,EAAW,MAAM,wBAAwB,CAAC;AACxE,OAAO,KAAK,EAAY,IAAI,EAAE,MAAM,aAAa,CAAC;AAGlD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAKhD;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,gBAAgB,CAE1D"
|
|
1
|
+
{"version":3,"file":"pantone.d.ts","sourceRoot":"","sources":["../../src/conversions/pantone.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,gBAAgB,EAAW,MAAM,wBAAwB,CAAC;AACxE,OAAO,KAAK,EAAY,IAAI,EAAE,MAAM,aAAa,CAAC;AAGlD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAKhD;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,gBAAgB,CAE1D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rgb.d.ts","sourceRoot":"","sources":["../../src/conversions/rgb.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAa,SAAS,EAAE,MAAM,aAAa,CAAC;AAgBnF;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,GAAG,IAAI,CA+B3D;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,CAK/C"
|
|
1
|
+
{"version":3,"file":"rgb.d.ts","sourceRoot":"","sources":["../../src/conversions/rgb.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAa,SAAS,EAAE,MAAM,aAAa,CAAC;AAgBnF;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,GAAG,IAAI,CA+B3D;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,CAK/C"}
|
package/dist/convert.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../src/convert.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,cAAc,EAAgB,MAAM,mBAAmB,CAAC;AAEtE,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,UAAU,EAIV,OAAO,EACP,UAAU,EACV,IAAI,EAGL,MAAM,YAAY,CAAC;AAYpB;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,CAAC,EAAE,cAAc,GAAG,IAAI,CAgB5E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,GAAE,WAAmB,GAAG,UAAU,CAqB5E;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH;;;;;;GAMG;AACH,MAAM,MAAM,wBAAwB,GAAG;IACrC;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,OAAO,IAAI;IAClD;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,OAAO,IAAI;IACrD;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B,CAAC;AAGF,wBAAgB,OAAO,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,wBAAwB,GAAG,UAAU,CAAC;AAGxF,wBAAgB,OAAO,CAAC,CAAC,SAAS,OAAO,EACvC,KAAK,EAAE,UAAU,GAAG,MAAM,EAC1B,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAC1B,UAAU,CAAC,CAAC,CAAC,CAAC;AAGjB,wBAAgB,OAAO,CAAC,CAAC,SAAS,OAAO,EACvC,KAAK,EAAE,UAAU,GAAG,MAAM,EAC1B,IAAI,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAC7B,UAAU,CAAC","sourcesContent":["import { hexToRgba, rgbaToHex } from './conversions/hex.js';\nimport { hslToRgba, rgbaToHsl } from './conversions/hsl.js';\nimport { hsvToRgba, rgbaToHsv } from './conversions/hsv.js';\nimport { rgbaToRgb, rgbToRgba } from './conversions/rgb.js';\nimport { type DetectedFormat, detectFormat } from './detectFormat.js';\nimport { getNameIndex, getReverseNameIndex } from './indexing.js';\nimport type {\n ColorFormat,\n ColorInput,\n ColorValue,\n HexColor,\n HslInput,\n HsvInput,\n Palette,\n PaletteKey,\n Rgba,\n RgbaInput,\n RgbInput,\n} from './types.js';\n\nfunction safeStringify(x: unknown): string {\n if (x === undefined) return 'undefined';\n try {\n const s = JSON.stringify(x);\n return s === undefined ? String(x) : s;\n } catch {\n return Object.prototype.toString.call(x);\n }\n}\n\n/**\n * Normalize any recognized color input to canonical `Rgba`.\n * Pass `knownFormat` when the caller has already run `detectFormat` to skip\n * the redundant detection. Throws on `UNKNOWN` input.\n *\n * Palette names (Pantone codes, BYO keys) are not accepted here; they\n * require palette data to parse. Use `convert(name, { palette })` or\n * `resolve(name, { palette })` at the higher level.\n *\n * @example\n * toRgba('#ff0000'); // { r: 255, g: 0, b: 0, a: 1 }\n * toRgba('rgb(255, 0, 0)'); // { r: 255, g: 0, b: 0, a: 1 }\n * toRgba([255, 0, 0]); // { r: 255, g: 0, b: 0, a: 1 }\n * toRgba({ h: 0, s: 100, l: 50 }); // { r: 255, g: 0, b: 0, a: 1 }\n */\nexport function toRgba(input: ColorInput, knownFormat?: DetectedFormat): Rgba {\n const format = knownFormat ?? detectFormat(input);\n switch (format) {\n case 'HEX':\n return hexToRgba(input as HexColor);\n case 'RGB':\n return rgbToRgba(input as RgbInput);\n case 'RGBA':\n return rgbToRgba(input as RgbaInput);\n case 'HSL':\n return hslToRgba(input as HslInput);\n case 'HSV':\n return hsvToRgba(input as HsvInput);\n default:\n throw new Error(`Unrecognized color input: ${safeStringify(input)}`);\n }\n}\n\n/**\n * Emit a canonical `Rgba` in the target structural format. Palette-independent.\n *\n * For palette-key output (e.g. nearest Pantone code, brand name), use\n * `convert(rgba, { format: 'NAME', palette })`; or `identify` for fuzzy,\n * `rgbaToPantone` for the low-level Pantone-only path.\n *\n * @example\n * fromRgba({ r: 255, g: 0, b: 0, a: 1 }); // '#ff0000'\n * fromRgba({ r: 255, g: 0, b: 0, a: 1 }, 'HSL'); // 'hsl(0, 100%, 50%)'\n * fromRgba({ r: 255, g: 0, b: 0, a: 0.5 }, 'RGB'); // 'rgb(255, 0, 0)' (alpha dropped)\n */\nexport function fromRgba(rgba: Rgba, format: ColorFormat = 'HEX'): ColorValue {\n switch (format) {\n case 'HEX':\n return rgbaToHex(rgba);\n case 'RGB':\n return rgbaToRgb(rgba);\n case 'RGBA':\n return rgba;\n case 'HSL':\n return rgbaToHsl(rgba);\n case 'HSV':\n return rgbaToHsv(rgba);\n default: {\n // Runtime safety for JS callers bypassing the ColorFormat union.\n const hint =\n format === ('PANTONE' as unknown)\n ? ` — use convert(rgba, { palette: pantone, format: 'NAME' }) or rgbaToPantone from 'chromonym/conversions/pantone'`\n : '';\n throw new Error(`Unsupported format: ${safeStringify(format)}${hint}`);\n }\n }\n}\n\n/**\n * Detect the input color format, normalize to Rgba, and emit the result\n * in the requested output format.\n *\n * Without a `palette` option, `convert` is strictly structural —\n * HEX ↔ RGB ↔ RGBA ↔ HSL ↔ HSV, no palette data ever touched, tree-shakes\n * to the bone.\n *\n * With a `palette` option, `convert` understands the palette's naming\n * scheme both ways:\n * - Input can be a palette name (`'185 C'`, `'Acme Red'`) — parsed via\n * `palette.normalize` and looked up in `palette.colors`.\n * - Output can be `format: 'NAME'` — the exact canonical key from\n * `palette.colors`, throws if the color isn't a pixel-exact match (use\n * `identify` for nearest-match).\n *\n * The palette data comes from the caller's own import, so tree-shaking\n * is preserved: callers who don't pass `palette` never pull a palette.\n *\n * Throws on unrecognized input (parser-flavored — `identify`/`resolve`\n * are the `null`-returning alternatives).\n */\n\n/**\n * Options for the structural (palette-free) variant of {@link convert}.\n * Use when you only need to translate between HEX / RGB / RGBA / HSL / HSV.\n *\n * @example\n * convert('#ff0000', { format: 'HSL' }); // 'hsl(0, 100%, 50%)'\n */\nexport type ConvertStructuralOptions = {\n /**\n * Target output format. Defaults to `'HEX'`.\n */\n readonly format?: ColorFormat;\n};\n\n/**\n * Options for {@link convert} when reverse-looking-up a palette name\n * from an exact color value. Generic so the return narrows to the\n * palette's literal-key union.\n *\n * Throws at runtime if the input isn't a pixel-exact match in the\n * palette; use `identify` for nearest-match semantics.\n *\n * @example\n * convert('#e4002b', { palette: pantone, format: 'NAME' }); // '185 C'\n * convert('#663399', { palette: web, format: 'NAME' }); // 'rebeccapurple'\n */\nexport type ConvertNameOptions<P extends Palette> = {\n /**\n * Palette to reverse-look-up against. Required when `format` is `'NAME'`.\n */\n readonly palette: P;\n /**\n * Output discriminator. `'NAME'` returns the palette's canonical key\n * for the input color.\n */\n readonly format: 'NAME';\n};\n\n/**\n * Options for {@link convert} when a palette is provided but the output\n * is a structural format (HEX / RGB / HSL / HSV). Unlocks palette-name\n * *input*: the `input` may be `'185 C'`, `'Acme Red'`, etc., which is\n * resolved through `palette.normalize` before conversion.\n *\n * @example\n * convert('185 C', { palette: pantone }); // '#e4002b'\n * convert('185 C', { palette: pantone, format: 'HSL' }); // 'hsl(349, 100%, 45%)'\n */\nexport type ConvertPaletteOptions<P extends Palette> = {\n /**\n * Palette used to parse name-shaped inputs.\n */\n readonly palette: P;\n /**\n * Target output format. Defaults to `'HEX'`.\n */\n readonly format?: ColorFormat;\n};\n\n// Overload 1: no palette — structural only. Input is strictly ColorInput.\nexport function convert(input: ColorInput, opts?: ConvertStructuralOptions): ColorValue;\n\n// Overload 2: palette present, format 'NAME' — returns a palette key.\nexport function convert<P extends Palette>(\n input: ColorInput | string,\n opts: ConvertNameOptions<P>,\n): PaletteKey<P>;\n\n// Overload 3: palette present, structural format — returns ColorValue.\nexport function convert<P extends Palette>(\n input: ColorInput | string,\n opts: ConvertPaletteOptions<P>,\n): ColorValue;\n\n// Implementation\nexport function convert(\n input: ColorInput | string,\n opts: { format?: ColorFormat | 'NAME'; palette?: Palette } = {},\n): ColorValue | string {\n const { format = 'HEX', palette } = opts;\n\n // --- Parse input → Rgba ---\n // Structural detection first; palette lookup only as a fallback. This\n // way `convert('#ff0000', { palette: brand })` always means \"parse hex,\"\n // even if the brand palette happens to have a key that normalizes to\n // \"ff0000\".\n const detected = detectFormat(input as ColorInput);\n let rgba: Rgba;\n if (detected !== 'UNKNOWN') {\n rgba = toRgba(input as ColorInput, detected);\n } else if (palette !== undefined && typeof input === 'string') {\n const canonical = getNameIndex(palette).get(palette.normalize(input));\n if (canonical === undefined) {\n throw new Error(\n `Unrecognized color input: ${safeStringify(input)} (not structural, and not found in palette '${palette.name}')`,\n );\n }\n const hex = (palette.colors as Record<string, HexColor>)[canonical];\n if (hex === undefined) {\n throw new Error(`Unrecognized color input: ${safeStringify(input)}`);\n }\n rgba = hexToRgba(hex);\n } else {\n throw new Error(`Unrecognized color input: ${safeStringify(input)}`);\n }\n\n // --- Emit ---\n if (format === 'NAME') {\n if (palette === undefined) {\n throw new Error(`convert(_, { format: 'NAME' }) requires a 'palette' option`);\n }\n // Palette colors are alpha = 1 by construction; a partially-transparent\n // input isn't \"that named color\" in the strict-convert sense. Reject\n // here rather than silently drop alpha during the reverse lookup.\n if (rgba.a !== 1) {\n throw new Error(\n `format: 'NAME' requires fully-opaque input (a === 1). Got a=${rgba.a}. ` +\n `Strip alpha first or use identify() for fuzzy matching.`,\n );\n }\n const hex = rgbaToHex(rgba).toLowerCase();\n const name = getReverseNameIndex(palette).get(hex);\n if (name === undefined) {\n throw new Error(\n `No exact match for ${hex} in palette '${palette.name}'. Use identify() for nearest-match semantics.`,\n );\n }\n return name;\n }\n return fromRgba(rgba, format);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../src/convert.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,cAAc,EAAgB,MAAM,mBAAmB,CAAC;AAEtE,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,UAAU,EAIV,OAAO,EACP,UAAU,EACV,IAAI,EAGL,MAAM,YAAY,CAAC;AAYpB;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,CAAC,EAAE,cAAc,GAAG,IAAI,CAgB5E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,GAAE,WAAmB,GAAG,UAAU,CAqB5E;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH;;;;;;GAMG;AACH,MAAM,MAAM,wBAAwB,GAAG;IACrC;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,OAAO,IAAI;IAClD;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,OAAO,IAAI;IACrD;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B,CAAC;AAGF,wBAAgB,OAAO,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,wBAAwB,GAAG,UAAU,CAAC;AAGxF,wBAAgB,OAAO,CAAC,CAAC,SAAS,OAAO,EACvC,KAAK,EAAE,UAAU,GAAG,MAAM,EAC1B,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAC1B,UAAU,CAAC,CAAC,CAAC,CAAC;AAGjB,wBAAgB,OAAO,CAAC,CAAC,SAAS,OAAO,EACvC,KAAK,EAAE,UAAU,GAAG,MAAM,EAC1B,IAAI,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAC7B,UAAU,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defineColorPalette.d.ts","sourceRoot":"","sources":["../src/defineColorPalette.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAY,WAAW,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE7F;;;;;GAKG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;IACtD,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC;IAChC,QAAQ,CAAC,aAAa,EAAE,cAAc,CAAC;CACxC,CAAC;AAaF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,CAAC,CAAC,SAAS,uBAAuB,EACxE,CAAC,EAAE,CAAC,GACH,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC,CAgC7C"
|
|
1
|
+
{"version":3,"file":"defineColorPalette.d.ts","sourceRoot":"","sources":["../src/defineColorPalette.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAY,WAAW,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE7F;;;;;GAKG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;IACtD,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC;IAChC,QAAQ,CAAC,aAAa,EAAE,cAAc,CAAC;CACxC,CAAC;AAaF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,CAAC,CAAC,SAAS,uBAAuB,EACxE,CAAC,EAAE,CAAC,GACH,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC,CAgC7C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detectFormat.d.ts","sourceRoot":"","sources":["../src/detectFormat.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE1D;;;;;;;GAOG;AACH,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,SAAS,CAAC;AAErD,kGAAkG;AAClG,eAAO,MAAM,MAAM,QAA8C,CAAC;AAMlE;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,UAAU,CAE3D;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,cAAc,CA8B9D"
|
|
1
|
+
{"version":3,"file":"detectFormat.d.ts","sourceRoot":"","sources":["../src/detectFormat.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE1D;;;;;;;GAOG;AACH,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,SAAS,CAAC;AAErD,kGAAkG;AAClG,eAAO,MAAM,MAAM,QAA8C,CAAC;AAMlE;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,UAAU,CAE3D;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,cAAc,CA8B9D"}
|
package/dist/identify.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identify.d.ts","sourceRoot":"","sources":["../src/identify.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAQ,MAAM,YAAY,CAAC;AAElG;;;;;GAKG;AACH,MAAM,MAAM,aAAa,CAAC,IAAI,SAAS,MAAM,IAAI;IAC/C,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,GAAG,IAAI;IAC5D;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACrB;;;;;;;;;OASG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC;CAClC,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,GAAG,IAAI,eAAe,CAAC,CAAC,CAAC,GAAG;IACvF;;;OAGG;IACH,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAmBF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAYH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,GAAG,EACrD,KAAK,EAAE,UAAU,GAAG,MAAM,EAC1B,IAAI,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,GACxB,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AAGxB,wBAAgB,QAAQ,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,GAAG,EACrD,KAAK,EAAE,UAAU,GAAG,MAAM,EAC1B,IAAI,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAC7B,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC"
|
|
1
|
+
{"version":3,"file":"identify.d.ts","sourceRoot":"","sources":["../src/identify.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAQ,MAAM,YAAY,CAAC;AAElG;;;;;GAKG;AACH,MAAM,MAAM,aAAa,CAAC,IAAI,SAAS,MAAM,IAAI;IAC/C,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,GAAG,IAAI;IAC5D;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACrB;;;;;;;;;OASG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC;CAClC,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,GAAG,IAAI,eAAe,CAAC,CAAC,CAAC,GAAG;IACvF;;;OAGG;IACH,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAmBF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAYH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,GAAG,EACrD,KAAK,EAAE,UAAU,GAAG,MAAM,EAC1B,IAAI,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,GACxB,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AAGxB,wBAAgB,QAAQ,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,GAAG,EACrD,KAAK,EAAE,UAAU,GAAG,MAAM,EAC1B,IAAI,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAC7B,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,OAAO,EAAE,MAAoB,CAAC;AAE3C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC7B,OAAO,EACP,QAAQ,EACR,MAAM,GACP,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,KAAK,uBAAuB,EAC5B,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,KAAK,cAAc,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,QAAQ,GACT,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,KAAK,gBAAgB,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,KAAK,gBAAgB,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,KAAK,YAAY,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,KAAK,YAAY,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,KAAK,YAAY,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,KAAK,gBAAgB,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,KAAK,gBAAgB,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,KAAK,YAAY,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,KAAK,iBAAiB,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,KAAK,YAAY,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,KAAK,YAAY,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,KAAK,aAAa,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,OAAO,GACR,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,WAAW,EACX,UAAU,EACV,UAAU,EACV,cAAc,EACd,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,SAAS,EACT,QAAQ,EACR,SAAS,EACT,SAAS,EACT,WAAW,EACX,OAAO,EACP,UAAU,EACV,IAAI,EACJ,SAAS,EACT,UAAU,EACV,SAAS,EACT,QAAQ,EACR,SAAS,EACT,SAAS,EACT,QAAQ,GACT,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,OAAO,EAAE,MAAoB,CAAC;AAE3C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC7B,OAAO,EACP,QAAQ,EACR,MAAM,GACP,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,KAAK,uBAAuB,EAC5B,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,KAAK,cAAc,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,QAAQ,GACT,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,KAAK,gBAAgB,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,KAAK,gBAAgB,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,KAAK,YAAY,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,KAAK,YAAY,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,KAAK,YAAY,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,KAAK,gBAAgB,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,KAAK,gBAAgB,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,KAAK,YAAY,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,KAAK,iBAAiB,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,KAAK,YAAY,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,KAAK,YAAY,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,KAAK,aAAa,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,OAAO,GACR,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,WAAW,EACX,UAAU,EACV,UAAU,EACV,cAAc,EACd,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,SAAS,EACT,QAAQ,EACR,SAAS,EACT,SAAS,EACT,WAAW,EACX,OAAO,EACP,UAAU,EACV,IAAI,EACJ,SAAS,EACT,UAAU,EACV,SAAS,EACT,QAAQ,EACR,SAAS,EACT,SAAS,EACT,QAAQ,GACT,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/indexing.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indexing.d.ts","sourceRoot":"","sources":["../src/indexing.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEhE;;;;;;GAMG;AAEH,KAAK,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAKlC;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAWnE;AAID;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAU1E;AAsGD;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,GAAG,MAAM,CAavF;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,IAAI,EACZ,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,cAAc,EACtB,CAAC,CAAC,EAAE,MAAM,GACT,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAkF3C","sourcesContent":["import { hexToRgba } from './conversions/hex.js';\nimport { rgbaToLab, rgbaToLinearRgb, rgbaToOklab } from './math/colorSpace.js';\nimport { deltaE76Squared, deltaE94, deltaE2000, deltaEokSquared } from './math/deltaE.js';\nimport { squaredDistanceRgb } from './math/euclideanDistance.js';\nimport type { DistanceMetric, Palette, Rgba } from './types.js';\n\n/**\n * Per-palette lookup indexes for name resolution and nearest-match.\n *\n * Caches are keyed by the Palette wrapper (WeakMap), so each palette's\n * indexes are built once per process and reused by every caller —\n * including BYO palettes the user supplies.\n */\n\ntype AnyPalette = Palette<string>;\n\nconst nameIndexCache = new WeakMap<AnyPalette, Map<string, string>>();\nconst rgbaIndexCache = new WeakMap<AnyPalette, Array<readonly [string, Rgba]>>();\n\n/**\n * Normalized-name → canonical-key map for a given palette. Built once\n * per palette using its own `normalize` function.\n */\nexport function getNameIndex(space: AnyPalette): Map<string, string> {\n let idx = nameIndexCache.get(space);\n if (idx === undefined) {\n idx = new Map();\n const { normalize } = space;\n for (const key of Object.keys(space.colors)) {\n idx.set(normalize(key), key);\n }\n nameIndexCache.set(space, idx);\n }\n return idx;\n}\n\nconst reverseIndexCache = new WeakMap<AnyPalette, Map<string, string>>();\n\n/**\n * Hex → canonical-key map (reverse of `palette.colors`). Built once per\n * palette. Used by `convert(color, { palette, format: 'NAME' })` for\n * O(1) exact reverse lookup. Returns `undefined` on miss — the caller\n * decides whether that's an error (convert throws; use `identify` for\n * nearest-match semantics).\n *\n * Hex values are lowercased for the key so callers can normalize their\n * input with `rgbaToHex(...).toLowerCase()` before lookup.\n */\nexport function getReverseNameIndex(space: AnyPalette): Map<string, string> {\n let idx = reverseIndexCache.get(space);\n if (idx === undefined) {\n idx = new Map();\n for (const [name, hex] of Object.entries(space.colors)) {\n idx.set((hex as string).toLowerCase(), name);\n }\n reverseIndexCache.set(space, idx);\n }\n return idx;\n}\n\n/**\n * Canonical-key → Rgba entries for a given palette, built by parsing\n * each hex value once. Used by nearest-match lookups (identify, rgbaToPantone).\n */\nfunction getRgbaIndex(space: AnyPalette): Array<readonly [string, Rgba]> {\n let idx = rgbaIndexCache.get(space);\n if (idx === undefined) {\n idx = Object.entries(space.colors).map(([name, hex]) => [name, hexToRgba(hex)] as const);\n rgbaIndexCache.set(space, idx);\n }\n return idx;\n}\n\n/**\n * Find the nearest-named entry in a palette to the given Rgba, using\n * squared Euclidean distance in sRGB (alpha ignored). Used by `identify`\n * and `rgbaToPantone` when metric === 'euclidean-srgb'.\n */\nfunction nearestByRgb(target: Rgba, space: AnyPalette): string {\n const entries = getRgbaIndex(space);\n let bestName = entries[0]?.[0] ?? '';\n let bestDistance = Number.POSITIVE_INFINITY;\n for (const [name, candidate] of entries) {\n const d = squaredDistanceRgb(target, candidate);\n if (d < bestDistance) {\n bestDistance = d;\n bestName = name;\n }\n }\n return bestName;\n}\n\n// Precomputed Lab entries for delta-E metrics. Same shape as rgba index.\ntype LabTriple = readonly [number, number, number];\nconst labIndexCache = new WeakMap<AnyPalette, Array<readonly [string, LabTriple]>>();\n\nfunction getLabIndex(space: AnyPalette): Array<readonly [string, LabTriple]> {\n let idx = labIndexCache.get(space);\n if (idx === undefined) {\n idx = getRgbaIndex(space).map(([name, rgba]) => [name, rgbaToLab(rgba)] as const);\n labIndexCache.set(space, idx);\n }\n return idx;\n}\n\n// Precomputed linear-RGB entries for euclidean-linear metric.\nconst linearIndexCache = new WeakMap<AnyPalette, Array<readonly [string, LabTriple]>>();\n\nfunction getLinearIndex(space: AnyPalette): Array<readonly [string, LabTriple]> {\n let idx = linearIndexCache.get(space);\n if (idx === undefined) {\n idx = getRgbaIndex(space).map(([name, rgba]) => [name, rgbaToLinearRgb(rgba)] as const);\n linearIndexCache.set(space, idx);\n }\n return idx;\n}\n\n// Precomputed OKLAB entries for deltaEok metric.\nconst oklabIndexCache = new WeakMap<AnyPalette, Array<readonly [string, LabTriple]>>();\n\nfunction getOklabIndex(space: AnyPalette): Array<readonly [string, LabTriple]> {\n let idx = oklabIndexCache.get(space);\n if (idx === undefined) {\n idx = getRgbaIndex(space).map(([name, rgba]) => [name, rgbaToOklab(rgba)] as const);\n oklabIndexCache.set(space, idx);\n }\n return idx;\n}\n\n/**\n * Generic argmin over an `[name, value]` entries array with a custom\n * distance function. Factored so the three metric branches in `nearest`\n * share one loop body instead of duplicating it three times.\n */\nfunction argminBy<T>(\n entries: Array<readonly [string, T]>,\n target: T,\n dist: (a: T, b: T) => number,\n): string {\n let bestName = entries[0]?.[0] ?? '';\n let bestDistance = Number.POSITIVE_INFINITY;\n for (const [name, candidate] of entries) {\n const d = dist(target, candidate);\n if (d < bestDistance) {\n bestDistance = d;\n bestName = name;\n }\n }\n return bestName;\n}\n\n// Squared Euclidean on a [number, number, number] triple. Used for the\n// linear-RGB metric (sharing shape with Lab but different meaning).\nfunction squaredDistanceTriple(a: LabTriple, b: LabTriple): number {\n const d0 = a[0] - b[0];\n const d1 = a[1] - b[1];\n const d2 = a[2] - b[2];\n return d0 * d0 + d1 * d1 + d2 * d2;\n}\n\n/**\n * Find the nearest-named entry in a palette under the specified distance\n * metric. Dispatches to the right index (rgba / linear-rgb / Lab) and\n * the right distance function. See `DistanceMetric` in types.ts for how\n * to pick a metric.\n *\n * `metric` is required — callers should pass `space.defaultMetric` if\n * they want the palette's declared preference. A silent default would\n * hide the distance-metric choice from the hot path.\n */\nexport function nearest(target: Rgba, space: AnyPalette, metric: DistanceMetric): string {\n if (metric === 'euclidean-srgb') return nearestByRgb(target, space);\n if (metric === 'euclidean-linear') {\n return argminBy(getLinearIndex(space), rgbaToLinearRgb(target), squaredDistanceTriple);\n }\n if (metric === 'deltaEok') {\n return argminBy(getOklabIndex(space), rgbaToOklab(target), deltaEokSquared);\n }\n const labTarget = rgbaToLab(target);\n const labIndex = getLabIndex(space);\n if (metric === 'deltaE76') return argminBy(labIndex, labTarget, deltaE76Squared);\n if (metric === 'deltaE94') return argminBy(labIndex, labTarget, deltaE94);\n return argminBy(labIndex, labTarget, deltaE2000);\n}\n\n/**\n * Rank every palette entry by distance to `target`. Returns an array of\n * `{ name, distance }` sorted ascending (nearest first). Optional `k`\n * truncates to the top-k matches.\n *\n * Distances are **real** metric values (not squared) — ΔE76 / ΔE94 /\n * ΔE2000 / ΔE-OK are in standard ΔE units (≈1 = just-noticeable for\n * most of the gamut on ΔE76/2000); `euclidean-srgb` / `euclidean-linear`\n * are in their respective channel-unit Euclidean distances.\n *\n * Cost:\n * - `k < n`: O(n · k) via bounded insertion-sort; much faster than a\n * full sort for small k on cheap metrics where allocation dominates.\n * - `k >= n` or `k === undefined`: O(n log n) via full push-and-sort,\n * returning every entry ranked.\n *\n * Tie-breaking: on exact-distance ties, the first-declared entry in\n * the palette's `colors` object wins. Matches the single-match\n * `nearest` contract.\n *\n * `k` normalization is forgiving: fractional values are rounded,\n * negatives clamp to 0, and `NaN` / `±Infinity` collapse to 0\n * (empty result). No throws.\n */\nexport function nearestAll(\n target: Rgba,\n space: AnyPalette,\n metric: DistanceMetric,\n k?: number,\n): Array<{ name: string; distance: number }> {\n const rgbaIndex = getRgbaIndex(space);\n const n = rgbaIndex.length;\n\n // k normalization. Forgiving by design: fractional values are rounded,\n // negatives clamp to 0, NaN / ±Infinity collapse to 0 (empty result).\n // A previous version crashed with `RangeError: Invalid array length`\n // on NaN / fractional k because `new Array(NaN)` throws; the\n // `Number.isFinite` guard eliminates that class of bug.\n const safeK = k === undefined ? n : Number.isFinite(k) ? Math.max(0, Math.round(k)) : 0;\n if (safeK === 0) return [];\n\n // When the caller wants at least every entry ranked, the bounded\n // insertion-sort gives no benefit — it degenerates to O(n^2) on a\n // full result set. Use the plain push-and-sort path instead.\n // When safeK < n, the bounded insertion-sort keeps only the top k\n // entries seen so far, cutting work from O(n log n) to O(n · k)\n // with a much smaller constant; the win is dramatic for cheap\n // metrics (deltaEok at k=5 / 1950-entry ncs measured ~50x) where\n // the full sort's allocation dominates the distance math.\n const useBounded = safeK < n;\n\n const best: Array<{ name: string; distance: number }> = [];\n\n // Single per-candidate branch, chosen once up front. `offer` either\n // pushes unconditionally (full-sort path) or inserts into a bounded\n // sorted window (bounded path). Splitting the switch and the merge\n // strategy into a closure avoids a 6-way metric switch × 2 modes\n // duplication.\n const offer = useBounded\n ? (name: string, dist: number): void => {\n if (best.length < safeK) {\n let j = best.length;\n while (j > 0 && (best[j - 1] as { distance: number }).distance > dist) j--;\n best.splice(j, 0, { name, distance: dist });\n } else if (dist < (best[safeK - 1] as { distance: number }).distance) {\n let j = safeK - 1;\n while (j > 0 && (best[j - 1] as { distance: number }).distance > dist) j--;\n best.splice(j, 0, { name, distance: dist });\n best.pop();\n }\n }\n : (name: string, dist: number): void => {\n best.push({ name, distance: dist });\n };\n\n if (metric === 'euclidean-srgb') {\n for (const [name, candidate] of rgbaIndex) {\n offer(name, Math.sqrt(squaredDistanceRgb(target, candidate)));\n }\n } else if (metric === 'euclidean-linear') {\n const tgt = rgbaToLinearRgb(target);\n for (const [name, candidate] of getLinearIndex(space)) {\n offer(name, Math.sqrt(squaredDistanceTriple(tgt, candidate)));\n }\n } else if (metric === 'deltaEok') {\n const tgt = rgbaToOklab(target);\n for (const [name, candidate] of getOklabIndex(space)) {\n offer(name, Math.sqrt(deltaEokSquared(tgt, candidate)));\n }\n } else {\n const tgt = rgbaToLab(target);\n const labIndex = getLabIndex(space);\n if (metric === 'deltaE76') {\n for (const [name, candidate] of labIndex) {\n offer(name, Math.sqrt(deltaE76Squared(tgt, candidate)));\n }\n } else if (metric === 'deltaE94') {\n for (const [name, candidate] of labIndex) {\n offer(name, deltaE94(tgt, candidate));\n }\n } else {\n for (const [name, candidate] of labIndex) {\n offer(name, deltaE2000(tgt, candidate));\n }\n }\n }\n\n if (!useBounded) {\n best.sort((a, b) => a.distance - b.distance);\n }\n return best;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"indexing.d.ts","sourceRoot":"","sources":["../src/indexing.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEhE;;;;;;GAMG;AAEH,KAAK,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAKlC;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAWnE;AAID;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAU1E;AAsGD;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,GAAG,MAAM,CAavF;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,IAAI,EACZ,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,cAAc,EACtB,CAAC,CAAC,EAAE,MAAM,GACT,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAkF3C"}
|
package/dist/math/clamp.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clamp.d.ts","sourceRoot":"","sources":["../../src/math/clamp.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAK/D"
|
|
1
|
+
{"version":3,"file":"clamp.d.ts","sourceRoot":"","sources":["../../src/math/clamp.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAK/D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"colorSpace.d.ts","sourceRoot":"","sources":["../../src/math/colorSpace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAExC;;;;;;;;;;;;GAYG;AAEH,sEAAsE;AACtE,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGpD;AAED,6FAA6F;AAC7F,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,0DAA0D;AAC1D,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAEpE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAKxF;AAaD,6FAA6F;AAC7F,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAQlF;AAED,iFAAiF;AACjF,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAI9D;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAa1F;AAED,mCAAmC;AACnC,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAGhE;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAItF;AAED,gDAAgD;AAChD,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAGtF;AAED,yDAAyD;AACzD,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAGhE"
|
|
1
|
+
{"version":3,"file":"colorSpace.d.ts","sourceRoot":"","sources":["../../src/math/colorSpace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAExC;;;;;;;;;;;;GAYG;AAEH,sEAAsE;AACtE,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGpD;AAED,6FAA6F;AAC7F,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,0DAA0D;AAC1D,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAEpE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAKxF;AAaD,6FAA6F;AAC7F,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAQlF;AAED,iFAAiF;AACjF,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAI9D;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAa1F;AAED,mCAAmC;AACnC,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAGhE;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAItF;AAED,gDAAgD;AAChD,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAGtF;AAED,yDAAyD;AACzD,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAGhE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deltaE.d.ts","sourceRoot":"","sources":["../../src/math/deltaE.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AAE7D;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,MAAM,CAKtD;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,MAAM,CAE/C;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,MAAM,CAwB/C;AAgCD,wBAAgB,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,SAAI,EAAE,EAAE,SAAI,EAAE,EAAE,SAAI,GAAG,MAAM,CAoFzE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,MAAM,CAKtD;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,MAAM,CAE/C"
|
|
1
|
+
{"version":3,"file":"deltaE.d.ts","sourceRoot":"","sources":["../../src/math/deltaE.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AAE7D;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,MAAM,CAKtD;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,MAAM,CAE/C;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,MAAM,CAwB/C;AAgCD,wBAAgB,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,SAAI,EAAE,EAAE,SAAI,EAAE,EAAE,SAAI,GAAG,MAAM,CAoFzE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,MAAM,CAKtD;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,GAAG,MAAM,CAE/C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editDistance.d.ts","sourceRoot":"","sources":["../../src/math/editDistance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CA8BxD"
|
|
1
|
+
{"version":3,"file":"editDistance.d.ts","sourceRoot":"","sources":["../../src/math/editDistance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CA8BxD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"euclideanDistance.d.ts","sourceRoot":"","sources":["../../src/math/euclideanDistance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAExC;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,MAAM,CAK3D;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,MAAM,CAE1D"
|
|
1
|
+
{"version":3,"file":"euclideanDistance.d.ts","sourceRoot":"","sources":["../../src/math/euclideanDistance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAExC;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,MAAM,CAK3D;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,MAAM,CAE1D"}
|
|
@@ -1 +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"
|
|
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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crayola.d.ts","sourceRoot":"","sources":["../../src/palettes/crayola.ts"],"names":[],"mappings":"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"
|
|
1
|
+
{"version":3,"file":"crayola.d.ts","sourceRoot":"","sources":["../../src/palettes/crayola.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs595b.d.ts","sourceRoot":"","sources":["../../src/palettes/fs595b.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,QAAA,MAAM,YAAY;aAChB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;CACb,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,MAAM,OAAO,YAAY,CAAC;AAExD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,MAAM;mBACX,QAAQ;;6BAnOF,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;;;4BAsBN,YAAY;CACgB,CAAC","sourcesContent":["import type { Palette } from '../types.js';\nimport { standardNormalize } from './normalize.js';\n\n/**\n * Federal Standard 595B (FS595B) palette: the 1989 revision of the\n * US Federal Government paint-color specification. Superseded by\n * FS595C in 2008 but still referenced by modelers and restorers\n * for equipment documented against the B revision. 209 entries.\n *\n * Source: upstream dataset is Color::Names::FS595B from\n * @thundergnat/Color-Names (Raku module), which digitizes the\n * published Federal Standard paint chips. See NOTICE.md.\n *\n * Keys are the 5-digit FS codes prefixed with 'FS ' (e.g.\n * 'FS 11136'), matching the FS595C palette's convention. Common\n * names (\"Brown Special\", \"Insignia Red\", etc.) are captured as\n * trailing comments for human readers but are NOT unique (the\n * spec reuses many across different chips) so they are not used\n * as lookup keys. 209 of 209 entries carry\n * a common name in the upstream data.\n *\n * Same-coded chips can differ in hex between the B and C\n * revisions; for example 'FS 11136' ('Insignia Red') is\n * #9b2f25 in this palette versus a slightly different\n * value in FS595C. Pick whichever matches your reference\n * documentation.\n */\nconst fs595bColors = {\n 'FS 10140': '#532f15', // Brown Special\n 'FS 11136': '#9b2f25', // Insignia Red\n 'FS 11630': '#ecb2a6', // Pink\n 'FS 12197': '#ba160c', // International Orange\n 'FS 13538': '#f5ab30', // Orange Yellow\n 'FS 13591': '#f7d100', // Yellow\n 'FS 13655': '#fdd31d', // Blue Angels Yellow\n 'FS 13670': '#dbe568', // Lime Yellow\n 'FS 14052': '#373d2f', // Green\n 'FS 14062': '#3d6e3f', // Dark Green\n 'FS 14087': '#3c341f', // Olive Drab\n 'FS 14115': '#006845', // Green\n 'FS 14258': '#515e32', // Green\n 'FS 15042': '#070d09', // Sea Blue\n 'FS 15044': '#2a3141', // Insignia Blue\n 'FS 15050': '#070d1b', // \"Blue Angels\" Blue\n 'FS 15056': '#001068', // Blue\n 'FS 15102': '#023457', // Dark Blue\n 'FS 15183': '#0e5a8b', // Bright Blue\n 'FS 15200': '#7cbce0', // Sky Blue\n 'FS 15450': '#72a0c1', // Air Superiority Blue\n 'FS 16076': '#353736', // Engine Gray\n 'FS 16081': '#3b3f42', // Engine Gray\n 'FS 16440': '#8a8685', // Light Gull Gray\n 'FS 16473': '#9ea2a3', // Aircraft Gray\n 'FS 16515': '#b8b7a3', // Canadian Voodoo Gray\n 'FS 17038': '#03120f', // Black\n 'FS 17043': '#826a3a', // Gold\n 'FS 17100': '#794b7c', // Purple\n 'FS 17178': '#b2babc', // Aluminum / Silver\n 'FS 17875': '#edf2f8', // Insignia White\n 'FS 17925': '#f8f9f3', // Insignia White\n 'FS 18913': '#fc4827', // Fluorescent Red Orange\n 'FS 20061': '#531f23', // Maroon\n 'FS 20062': '#4a3733', // Brown\n 'FS 20100': '#93400a', // Brown Yellow\n 'FS 20109': '#83321f', // Red Brown\n 'FS 20140': '#694024', // Brown Special\n 'FS 20252': '#bc7756', // Tan\n 'FS 20260': '#af8d50', // Tan\n 'FS 20266': '#a28744', // Yellow Sand\n 'FS 20400': '#b9845c', // Tan\n 'FS 20450': '#ab967b', // Night Tan\n 'FS 21105': '#b51f11', // Red\n 'FS 21310': '#e43301', // Red\n 'FS 21400': '#e94400', // Red\n 'FS 22190': '#e43301', // Red\n 'FS 22516': '#e09f69', // Tan\n 'FS 23275': '#ce981a', // Earth Yellow\n 'FS 23578': '#dbcca5', // Cream\n 'FS 23594': '#dec26e', // Beige\n 'FS 23655': '#fcce16', // Yellow\n 'FS 23697': '#facc7f', // Yellow Sand\n 'FS 23722': '#eeddaf', // Sand\n 'FS 24052': '#373d2f', // Green\n 'FS 24079': '#41402c', // Forest Green\n 'FS 24190': '#4ea04e', // Green\n 'FS 24272': '#6d9477', // Green\n 'FS 24410': '#91a395', // Green\n 'FS 25095': '#2758b5', // Blue\n 'FS 25352': '#96abac', // Blue\n 'FS 25550': '#cfd8dd', // Light Blue\n 'FS 26008': '#343a48', // Dark Gray\n 'FS 26044': '#172339', // Gray\n 'FS 26081': '#3b3f42', // Seaplane Gray\n 'FS 26118': '#3f4952', // Medium Gunship Gray\n 'FS 26152': '#6a737a', // Gray\n 'FS 26270': '#797f7f', // Medium Gray\n 'FS 26320': '#808c8c', // Dark Compass Ghost Gray\n 'FS 26375': '#9598a1', // Light Campers Ghost Gray\n 'FS 26440': '#878684', // Light Gull Gray\n 'FS 27038': '#051111', // Black\n 'FS 27780': '#fbfeeb', // White\n 'FS 27875': '#edf2f8', // Insignia White\n 'FS 28913': '#fe4728', // Fluorescent Red Orange\n 'FS 28915': '#fb2b11', // Fluorescent Red\n 'FS 30045': '#543b34', // Brown\n 'FS 30051': '#443724', // Leather Brown\n 'FS 30075': '#4d140b', // Hull Red\n 'FS 30091': '#612f24', // Red Brown\n 'FS 30097': '#564032', // Brown\n 'FS 30099': '#473622', // Brown\n 'FS 30108': '#3c1e16', // Red Brown\n 'FS 30111': '#4c2a21', // Brown\n 'FS 30117': '#704437', // Earth Red\n 'FS 30118': '#5b462b', // Field Drab\n 'FS 30140': '#532f17', // Brown Special\n 'FS 30160': '#6b433b', // Brown\n 'FS 30215': '#70472b', // Brown\n 'FS 30219': '#715540', // Tan\n 'FS 30227': '#8d7a69', // Tan\n 'FS 30257': '#b48e5d', // Tan\n 'FS 30266': '#a28744', // Yellow Sand\n 'FS 30277': '#948b6c', // Sand Brown\n 'FS 30279': '#a58e7e', // Sand\n 'FS 30372': '#b2a68c', // Sand\n 'FS 30400': '#b58159', // Yellow Sand\n 'FS 31090': '#694223', // Brown\n 'FS 31136': '#9a2e24', // Insignia Red\n 'FS 31302': '#d32200', // Red\n 'FS 31350': '#c41d0a', // Red\n 'FS 31400': '#e94400', // Red\n 'FS 32473': '#ef6c00', // Orange\n 'FS 32648': '#e2c293', // Sand\n 'FS 33105': '#5d4b33', // Brown\n 'FS 33245': '#8f693a', // Tan\n 'FS 33303': '#957f56', // Sand\n 'FS 33434': '#bd8846', // Ochre\n 'FS 33440': '#9f9059', // Tan\n 'FS 33446': '#a38c6c', // Dessert Tan\n 'FS 33448': '#a59272', // Dark Yellow\n 'FS 33531': '#c7ab84', // Middlestone\n 'FS 33538': '#fec110', // Orange Yellow\n 'FS 33613': '#f1c7a1', // Radome Tan\n 'FS 33617': '#c6b490', // Sand\n 'FS 33690': '#e3cfb7', // Sand\n 'FS 33695': '#f5ca86', // Yellow Sand\n 'FS 33711': '#dfcba8', // Sand\n 'FS 33717': '#f0d6b1', // Sand\n 'FS 34031': '#2a2c1f', // Dark Green\n 'FS 34052': '#373d31', // USMC Green\n 'FS 34058': '#46696f', // Sea Blue\n 'FS 34064': '#373828', // Dark Green\n 'FS 34077': '#344034', // Green\n 'FS 34079': '#423f2c', // Forest Green\n 'FS 34082': '#44503a', // Green\n 'FS 34083': '#3a4630', // Green\n 'FS 34084': '#282a1d', // Green\n 'FS 34086': '#404034', // I. R. Dark Green\n 'FS 34087': '#3c3421', // Olive Drab\n 'FS 34088': '#3c341f', // Olive Drab\n 'FS 34092': '#364a41', // Dark Green\n 'FS 34094': '#3e3d29', // Green\n 'FS 34095': '#3b482c', // Field Green\n 'FS 34096': '#454d42', // Dark Green\n 'FS 34097': '#4a4c34', // Field Green\n 'FS 34098': '#4f5338', // Green\n 'FS 34102': '#454932', // Light Green\n 'FS 34108': '#1b4b21', // Medium Green\n 'FS 34127': '#455238', // Green\n 'FS 34128': '#4b654a', // Deep Green\n 'FS 34138': '#19481e', // Green\n 'FS 34151': '#536437', // Interior Green\n 'FS 34159': '#585e50', // Green\n 'FS 34201': '#685d47', // Tan Green\n 'FS 34227': '#4d6b53', // Medium Gray Green\n 'FS 34230': '#2f6031', // Green\n 'FS 34258': '#6f8054', // Green\n 'FS 34259': '#51680e', // Yellow Green\n 'FS 34414': '#a8b693', // Green\n 'FS 34417': '#9fad8c', // Light Gray Green\n 'FS 34424': '#a0b29a', // Light Gray Green\n 'FS 34552': '#c4da99', // Light Green\n 'FS 34554': '#c7c9a4', // Sky\n 'FS 34666': '#d8efab', // Green\n 'FS 35042': '#151b17', // Sea Blue\n 'FS 35044': '#323c48', // Insignia Blue\n 'FS 35045': '#355061', // Dark Blue\n 'FS 35052': '#263a75', // Blue\n 'FS 35109': '#273d55', // Dark Blue\n 'FS 35164': '#56626e', // Intermediate Blue\n 'FS 35177': '#436f94', // Medium Blue\n 'FS 35189': '#687681', // Blue Gray\n 'FS 35190': '#6a85a2', // Dark Blue\n 'FS 35231': '#757fa3', // Azure Blue\n 'FS 35237': '#67757e', // Gray Blue\n 'FS 35240': '#7882a5', // Blue\n 'FS 35250': '#3592bd', // Blue\n 'FS 35352': '#8fabae', // Blue\n 'FS 35414': '#789b9d', // Blue\n 'FS 35450': '#7499ac', // Air Superiority Blue\n 'FS 35526': '#9db4c6', // Light Sky Blue\n 'FS 35622': '#c9d5d1', // Light Blue\n 'FS 36076': '#3b3e51', // Gray\n 'FS 36081': '#3b3f42', // Dark Gunship Gray\n 'FS 36099': '#474d49', // Dark Gray\n 'FS 36118': '#414a53', // Medium Gunship Gray\n 'FS 36152': '#545e56', // Gray\n 'FS 36165': '#7a755f', // Gray\n 'FS 36173': '#606666', // Neutral Gray\n 'FS 36176': '#40474d', // Dark Gull Gray\n 'FS 36231': '#6f7571', // Dark Gull Gray\n 'FS 36251': '#6a6c6b', // Gray\n 'FS 36270': '#7a7f82', // Medium Gray\n 'FS 36280': '#7f8581', // Dark Gray\n 'FS 36300': '#939498', // Aircraft Exterior Gray\n 'FS 36307': '#95928d', // Gray\n 'FS 36314': '#8b8c84', // Flint Gray\n 'FS 36320': '#818b8d', // Dark Compass Ghost Gray\n 'FS 36329': '#819490', // Light Gray\n 'FS 36373': '#8a8e8d', // Light Gray\n 'FS 36375': '#9598a1', // Light Compass Ghost Gray\n 'FS 36424': '#bab2a5', // Medium Gray\n 'FS 36440': '#acaca4', // Light Gull Gray\n 'FS 36463': '#a7b6b9', // Gray\n 'FS 36473': '#98a6a7', // Sky Gray\n 'FS 36492': '#b7b4ab', // Gray\n 'FS 36495': '#c6c5ca', // Light Gray\n 'FS 36521': '#b9b19c', // Tan\n 'FS 36555': '#a3947d', // Tan\n 'FS 36559': '#bfbbb2', // Gray\n 'FS 36622': '#c8c1b1', // Gray\n 'FS 36628': '#cfd5cb', // Flat Aluminum\n 'FS 37031': '#24272e', // Black Gray\n 'FS 37038': '#051111', // Black\n 'FS 37100': '#794b7a', // Purple\n 'FS 37855': '#fdfbd2', // White\n 'FS 37875': '#edf2f8', // Insignia White\n 'FS 37925': '#f8f9f3', // Insignia White\n} as const;\n\nexport type Fs595bColorName = keyof typeof fs595bColors;\n\n/**\n * Federal Standard 595B paint chips (209 entries),\n * the 1989 revision later superseded by FS595C in 2008. Same\n * `'FS {code}'` key format as fs595c; different hex on many\n * shared codes. Pick whichever revision matches the piece of\n * equipment or documentation you're working from. Default\n * metric CIEDE2000.\n *\n * @example\n * identify('#9b2f25', { palette: fs595b }); // 'FS 11136' (aka \"Insignia Red\")\n * resolve('FS 11136', { palette: fs595b }); // '#9b2f25'\n * fs595b.colors['FS 10140']; // '#532f15' (aka \"Brown Special\")\n */\nexport const fs595b = {\n name: 'fs595b',\n colors: fs595bColors,\n normalize: standardNormalize,\n defaultMetric: 'deltaE2000',\n} as const satisfies Palette<Fs595bColorName>;\n"]}
|
|
1
|
+
{"version":3,"file":"fs595b.d.ts","sourceRoot":"","sources":["../../src/palettes/fs595b.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,QAAA,MAAM,YAAY;aAChB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;aACrB,UAAU,EAAE,SAAS;CACb,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,MAAM,OAAO,YAAY,CAAC;AAExD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,MAAM;mBACX,QAAQ;;6BAnOF,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;6BACT,SAAS;;;4BAsBN,YAAY;CACgB,CAAC"}
|