* Finds the closest colors to a given hex code from the color map. * Returns an array of color names sorted by distance (closest first).
( targetRgb: [number, number, number], colorHexMap: Record<string, [number, number, number]>, maxResults = 10 )
| 86 | * Returns an array of color names sorted by distance (closest first). |
| 87 | */ |
| 88 | function findClosestColors( |
| 89 | targetRgb: [number, number, number], |
| 90 | colorHexMap: Record<string, [number, number, number]>, |
| 91 | maxResults = 10 |
| 92 | ): Array<{name: string; distance: number}> { |
| 93 | const results: Array<{name: string; distance: number}> = []; |
| 94 | |
| 95 | for (const [name, rgb] of Object.entries(colorHexMap)) { |
| 96 | const distance = colorDistance(targetRgb, rgb as [number, number, number]); |
| 97 | results.push({name, distance}); |
| 98 | } |
| 99 | |
| 100 | // Sort by distance and return top results |
| 101 | return results.sort((a, b) => a.distance - b.distance).slice(0, maxResults); |
| 102 | } |
| 103 | |
| 104 | export interface SearchableItem { |
| 105 | name: string; |
no test coverage detected