{"version":3,"sources":["../src/utils/hex.ts","../src/conversions.ts","../src/deltaE.ts","../src/colorsList.ts","../src/finder.ts"],"names":["normalizeHex","hex","normalized","hexToRgb","validHex","bigint","rgbToXyz","r","g","b","mapped","v","nr","ng","nb","x","y","z","xyzToLab","xyz","divisors","i","f","t","fx","fy","fz","rgbToLab","rgb","deltaE76","lab1","lab2","default94Options","deltaE94","options","kL","K1","K2","kC","kH","dL","da","db","C1","C2","dC","dH","SL","SC","SH","radToDeg","rad","degToRad","deg","deltaE2000","L1","a1","b1","L2","a2","b2","C_bar","G","a1_prime","a2_prime","C1_prime","C2_prime","C_bar_prime","dC_prime","h1_prime","h2_prime","dh_prime","dH_prime","L_bar_prime","dL_prime","H_bar_prime","T","RT","ColorList","_colorListWithLab","getColorListWithLab","color","deltaEFormulas","findNearestColor","inputHex","formula","colorList","normalizedHex","list","exact","c","targetLab","nearest","minDiff","deltaE","diff","findAllClosestColors","count","threshold","allMatches","a","match"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Normalize and validate a HEX string.\n * Ensures:\n *  - Leading \"#\" is present\n *  - Exactly 6 hex digits (strips alpha channel if present)\n * Throws if invalid.\n */\nexport const normalizeHex = (hex: string): string => {\n  if (!hex) {\n    throw new Error(\"Empty hex color\");\n  }\n\n  let normalized = hex.startsWith(\"#\") ? hex : `#${hex}`;\n  normalized = normalized.toUpperCase();\n\n  // Handle 8-digit hex with alpha channel by stripping it\n  if (/^#[0-9A-F]{8}$/.test(normalized)) {\n    return normalized.slice(0, 7);\n  }\n\n  if (!/^#[0-9A-F]{6}$/.test(normalized)) {\n    throw new Error(`Invalid hex color: ${hex}`);\n  }\n\n  return normalized;\n};","import { normalizeHex } from \"./utils/hex.js\";  \n\nexport interface RGB {\n    r: number;\n    g: number;\n    b: number;\n}\n\nexport interface Lab {\n    l: number;\n    a: number;\n    b: number;\n}\n\n// HEX → RGB\nexport const hexToRgb = (hex: string): RGB => {\n    const validHex = normalizeHex(hex).replace(\"#\", \"\");\n    const bigint = parseInt(validHex, 16);\n\n    return {\n        r: (bigint >> 16) & 255,\n        g: (bigint >> 8) & 255,\n        b: bigint & 255,\n    };\n};\n\n// RGB → XYZ\nexport const rgbToXyz = ({ r, g, b }: RGB): [number, number, number] => {\n    const mapped = [r, g, b].map(v => {\n        v /= 255;\n        return v > 0.04045\n            ? Math.pow((v + 0.055) / 1.055, 2.4)\n            : v / 12.92;\n    });\n    const [nr, ng, nb] = mapped as [number, number, number];\n\n    const x = nr * 0.4124564 + ng * 0.3575761 + nb * 0.1804375;\n    const y = nr * 0.2126729 + ng * 0.7151522 + nb * 0.0721750;\n    const z = nr * 0.0193339 + ng * 0.1191920 + nb * 0.9503041;\n\n    return [x, y, z];\n};\n\n// XYZ → Lab\nexport const xyzToLab = (xyz: [number, number, number]): Lab => {\n    const divisors = [0.95047, 1.0, 1.08883];\n    const [x, y, z] = xyz.map((v, i) =>\n        v / (divisors[i] !== undefined ? divisors[i]! : 1)\n    ) as [number, number, number];\n\n    const f = (t: number) =>\n        t > 0.008856 ? Math.cbrt(t) : (7.787 * t) + (16 / 116);\n\n    const fx = f(x);\n    const fy = f(y);\n    const fz = f(z);\n\n    return {\n        l: (116 * fy) - 16,\n        a: 500 * (fx - fy),\n        b: 200 * (fy - fz),\n    };\n};\n\n// RGB → Lab\nexport const rgbToLab = (rgb: RGB): Lab => xyzToLab(rgbToXyz(rgb));\n","import type { Lab } from \"./conversions.js\";\n\n/**\n * Calculates the CIE76 color difference between two Lab colors.\n * This is the most basic delta-E formula, based on Euclidean distance.\n * @param lab1 - The first Lab color object.\n * @param lab2 - The second Lab color object.\n * @returns The CIE76 delta-E value.\n */\nexport const deltaE76 = (lab1: Lab, lab2: Lab): number =>\n\tMath.sqrt(\n\t\tMath.pow(lab1.l - lab2.l, 2) +\n\t\tMath.pow(lab1.a - lab2.a, 2) +\n\t\tMath.pow(lab1.b - lab2.b, 2)\n\t);\n\ninterface DeltaE94Options {\n\tkL?: number;\n\tK1?: number;\n\tK2?: number;\n}\n\n// Default weighting factors for \"graphic arts\"\nconst default94Options: Required<DeltaE94Options> = {\n\tkL: 1,\n\tK1: 0.045,\n\tK2: 0.015,\n};\n\n/**\n * Calculates the CIE94 color difference between two Lab colors.\n * It provides more perceptually uniform results than CIE76 by introducing\n * application-specific weighting factors.\n *\n * The implementation defaults to \"graphic arts\" standards.\n * For \"textiles\", use: `{ kL: 2, K1: 0.048, K2: 0.014 }`\n * @param lab1 - The first Lab color object.\n * @param lab2 - The second Lab color object.\n * @param options - Optional weighting factors for kL, K1, and K2.\n * @returns The CIE94 delta-E value.\n */\nexport const deltaE94 = (\n\tlab1: Lab,\n\tlab2: Lab,\n\toptions: DeltaE94Options = {}\n): number => {\n\tconst { kL, K1, K2 } = { ...default94Options, ...options };\n\tconst kC = 1;\n\tconst kH = 1;\n\n\tconst dL = lab1.l - lab2.l;\n\tconst da = lab1.a - lab2.a;\n\tconst db = lab1.b - lab2.b;\n\n\tconst C1 = Math.sqrt(lab1.a * lab1.a + lab1.b * lab1.b);\n\tconst C2 = Math.sqrt(lab2.a * lab2.a + lab2.b * lab2.b);\n\tconst dC = C1 - C2;\n\n\tlet dH = da * da + db * db - dC * dC;\n\tdH = dH < 0 ? 0 : Math.sqrt(dH);\n\n\tconst SL = 1;\n\tconst SC = 1 + K1 * C1;\n\tconst SH = 1 + K2 * C1;\n\n\treturn Math.sqrt(\n\t\tMath.pow(dL / (kL * SL), 2) +\n\t\tMath.pow(dC / (kC * SC), 2) +\n\t\tMath.pow(dH / (kH * SH), 2)\n\t);\n};\n\nconst radToDeg = (rad: number): number => (rad * 180) / Math.PI;\nconst degToRad = (deg: number): number => (deg * Math.PI) / 180;\n\n/**\n * Calculates the CIEDE2000 color difference between two Lab colors.\n * This is the most accurate and complex formula, providing the best\n * correlation with human perception. It is recommended for most applications.\n * @param lab1 - The first Lab color object.\n * @param lab2 - The second Lab color object.\n * @returns The CIEDE2000 delta-E value.\n */\nexport const deltaE2000 = (lab1: Lab, lab2: Lab): number => {\n\tconst kL = 1, kC = 1, kH = 1;\n\n\tconst L1 = lab1.l, a1 = lab1.a, b1 = lab1.b;\n\tconst L2 = lab2.l, a2 = lab2.a, b2 = lab2.b;\n\n\tconst C1 = Math.sqrt(a1 * a1 + b1 * b1);\n\tconst C2 = Math.sqrt(a2 * a2 + b2 * b2);\n\tconst C_bar = (C1 + C2) / 2;\n\tconst G = 0.5 * (1 - Math.sqrt(Math.pow(C_bar, 7) / (Math.pow(C_bar, 7) + Math.pow(25, 7))));\n\tconst a1_prime = (1 + G) * a1;\n\tconst a2_prime = (1 + G) * a2;\n\tconst C1_prime = Math.sqrt(a1_prime * a1_prime + b1 * b1);\n\tconst C2_prime = Math.sqrt(a2_prime * a2_prime + b2 * b2);\n\tconst C_bar_prime = (C1_prime + C2_prime) / 2;\n\tconst dC_prime = C2_prime - C1_prime;\n\tlet h1_prime = C1_prime === 0 ? 0 : radToDeg(Math.atan2(b1, a1_prime));\n\tif (h1_prime < 0) h1_prime += 360;\n\tlet h2_prime = C2_prime === 0 ? 0 : radToDeg(Math.atan2(b2, a2_prime));\n\tif (h2_prime < 0) h2_prime += 360;\n\tconst dh_prime = (C1_prime === 0 || C2_prime === 0) ? 0 : Math.abs(h1_prime - h2_prime) <= 180 ? h2_prime - h1_prime : (h2_prime <= h1_prime ? h2_prime - h1_prime + 360 : h2_prime - h1_prime - 360);\n\tconst dH_prime = 2 * Math.sqrt(C1_prime * C2_prime) * Math.sin(degToRad(dh_prime / 2));\n\tconst L_bar_prime = (L1 + L2) / 2;\n\tconst dL_prime = L2 - L1;\n\tconst SL = 1 + (0.015 * Math.pow(L_bar_prime - 50, 2)) / Math.sqrt(20 + Math.pow(L_bar_prime - 50, 2));\n\tconst SC = 1 + 0.045 * C_bar_prime;\n\tconst H_bar_prime = (C1_prime === 0 || C2_prime === 0) ? h1_prime + h2_prime : Math.abs(h1_prime - h2_prime) > 180 ? (h1_prime + h2_prime + 360) / 2 : (h1_prime + h2_prime) / 2;\n\tconst T = 1 - 0.17 * Math.cos(degToRad(H_bar_prime - 30)) + 0.24 * Math.cos(degToRad(2 * H_bar_prime)) + 0.32 * Math.cos(degToRad(3 * H_bar_prime + 6)) - 0.20 * Math.cos(degToRad(4 * H_bar_prime - 63));\n\tconst SH = 1 + 0.015 * C_bar_prime * T;\n\tconst RT = -2 * Math.sqrt(Math.pow(C_bar_prime, 7) / (Math.pow(C_bar_prime, 7) + Math.pow(25, 7))) * Math.sin(degToRad(60 * Math.exp(-Math.pow((H_bar_prime - 275) / 25, 2))));\n\n\treturn Math.sqrt(\n\t\tMath.pow(dL_prime / (kL * SL), 2) +\n\t\tMath.pow(dC_prime / (kC * SC), 2) +\n\t\tMath.pow(dH_prime / (kH * SH), 2) +\n\t\tRT * (dC_prime / (kC * SC)) * (dH_prime / (kH * SH))\n\t);\n};\n","import { hexToRgb, rgbToLab } from \"./conversions.js\";\nimport type { Lab } from \"./conversions.js\";\n\nexport interface Color {\n  hex: string;\n  name: string;\n}\n\nexport interface ColorWithLab extends Color {\n  lab: Lab;\n}\n\nexport const ColorList: Color[] = [\n    // A\n    { hex: \"#5D8AA8\", name: \"Air Force Blue\" }, \n    { hex: \"#F0F8FF\", name: \"Alice Blue\" },\n    //B\n    { hex: \"#89CFF0\", name: \"Baby Blue\" }, \n    { hex: \"#F5F5DC\", name: \"Beige\" },\n    { hex: \"#000000\", name: \"Black\" },\n    { hex: \"#318CE7\", name: \"Bleu de France\" }, \n    { hex: \"#FFEBCD\", name: \"Blanched Almond\" },\n    { hex: \"#0000FF\", name: \"Blue\" },\n    { hex: \"#7393B3\", name: \"Blue Gray\" }, \n    { hex: \"#8A2BE2\", name: \"Blue Violet\" },\n    { hex: \"#A52A2A\", name: \"Brown\" },\n    { hex: \"#964B00\", name: \"Brownie\" },\n    { hex: \"#DEB887\", name: \"Burly Wood\" },\n\n    // C\n    { hex: \"#5F9EA0\", name: \"Cadet Blue\" },\n    { hex: \"#006B3C\", name: \"Cadmium Green\" },\n    { hex: \"#D27D46\", name: \"Camel\" }, \n    { hex: \"#7CFC00\", name: \"Chartreuse\" },\n    { hex: \"#6F4E37\", name: \"Coffee\" }, \n    { hex: \"#FF7F50\", name: \"Coral\" },\n    { hex: \"#6495ED\", name: \"Cornflower Blue\" },\n    { hex: \"#FFF8DC\", name: \"Cornsilk\" },\n    { hex: \"#DC143C\", name: \"Crimson\" },\n    { hex: \"#990000\", name: \"Crimson Red\" },\n\n    // D\n    { hex: \"#00008B\", name: \"Dark Blue\" },\n    { hex: \"#008B8B\", name: \"Dark Cyan\" },\n    { hex: \"#B8860B\", name: \"Dark Goldenrod\" },\n    { hex: \"#A9A9A9\", name: \"Dark Grey\" },\n    { hex: \"#006400\", name: \"Dark Green\" },\n    { hex: \"#BDB76B\", name: \"Dark Khaki\" },\n    { hex: \"#8B008B\", name: \"Dark Magenta\" },\n    { hex: \"#556B2F\", name: \"Dark Olive Green\" },\n    { hex: \"#9932CC\", name: \"Dark Orchid\" },\n    { hex: \"#8B0000\", name: \"Dark Red\" },\n    { hex: \"#E9967A\", name: \"Dark Salmon\" },\n    { hex: \"#8FBC8F\", name: \"Dark Sea Green\" },\n    { hex: \"#483D8B\", name: \"Dark Slate Blue\" },\n    { hex: \"#2F4F4F\", name: \"Dark Slate Gray\" },\n    { hex: \"#9400D3\", name: \"Dark Violet\" },\n    { hex: \"#FF1493\", name: \"Deep Pink\" },\n    { hex: \"#00BFFF\", name: \"Deep Sky Blue\" },\n    { hex: \"#0E4D92\", name: \"Denim\" },\n    { hex: \"#1E90FF\", name: \"Dodger Blue\" },\n    { hex: \"#D70A53\", name: \"Dogwood Rose\" },\n    { hex: \"#F5F5F5\", name: \"Dust Storm\" },\n    \n    // E\n    { hex: \"#1C1C1C\", name: \"Eerie Black\" },\n    { hex: \"#7DF9FF\", name: \"Electric Blue\" },\n    { hex: \"#BF00FF\", name: \"Electric Indigo\" },\n    { hex: \"#CCFF00\", name: \"Electric Lime\" },\n    { hex: \"#F4BBFF\", name: \"Electric Purple\" },\n    { hex: \"#FFFF33\", name: \"Electric Yellow\" },\n    { hex: \"#50C878\", name: \"Emerald\" },\n\n    // F\n    { hex: \"#228B22\", name: \"Forest Green\" },\n    { hex: \"#B22222\", name: \"Fire Brick\" },\n    { hex: \"#FFFAF0\", name: \"Floral White\" },\n    { hex: \"#C19A6B\", name: \"Fallow\" },\n    { hex: \"#B53389\", name: \"Fandango\" },\n\n    // G\n    { hex: \"#DCDCDC\", name: \"Gainsboro\" },\n    { hex: \"#F8F8FF\", name: \"Ghost White\" },\n    { hex: \"#FFD700\", name: \"Gold\" },\n    { hex: \"#DAA520\", name: \"Goldenrod\" },\n    { hex: \"#996515\", name: \"Golden Brown\" }, \n    { hex: \"#808080\", name: \"Gray\" },\n    { hex: \"#008000\", name: \"Green\" },\n    { hex: \"#ADFF2F\", name: \"Green Yellow\" },\n\n\n    // H\n    { hex: \"#F0FFF0\", name: \"Honeydew\" },\n    { hex: \"#FF69B4\", name: \"Hot Pink\" },\n    { hex: \"#355E3B\", name: \"Hunter Green\" },\n\n    // I\n    { hex: \"#72A0C1\", name: \"Iceberg\" },\n    { hex: \"#CD5C5C\", name: \"Indian Red\" },\n    { hex: \"#4B0082\", name: \"Indigo\" },\n    { hex: \"#FFFFF0\", name: \"Ivory\" },\n\n    // J\n    { hex: \"#29AB87\", name: \"Jade\" },\n    { hex: \"#F8DE7E\", name: \"Jasmine\" },\n    { hex: \"#F4CA16\", name: \"Jonquil\" },\n    { hex: \"#D73B3E\", name: \"Jordy Blue\" },\n    { hex: \"#A50B5E\", name: \"Jazzberry Jam\" },\n    { hex: \"#F2F3F4\", name: \"Jungle Mist\" },\n    { hex: \"#343434\", name: \"Jet Black\" },\n\n    // K\n    { hex: \"#F0E68C\", name: \"Khaki\" },\n    { hex: \"#C3B091\", name: \"Khaki Gray\" },\n    { hex: \"#8E7618\", name: \"Kobe\" },\n    { hex: \"#E79FC4\", name: \"Kobi\" },\n    { hex: \"#3D2B1F\", name: \"Kona Coffee\" },\n    { hex: \"#E6F2EA\", name: \"Kokoda\" },\n    { hex: \"#FAD6A5\", name: \"Koromiko\" },\n    \n\n    // L\n    { hex: \"#E6E6FA\", name: \"Lavender\" },\n    { hex: \"#FFF0F5\", name: \"Lavender Blush\" },\n    { hex: \"#FFFACD\", name: \"Lemon Chiffon\" },\n    { hex: \"#FAFAD2\", name: \"Light Goldenrod Yellow\" },\n    { hex: \"#D3D3D3\", name: \"Light Grey\" },\n    { hex: \"#FFB347\", name: \"Light Orange\" },\n    { hex : \"#FAF0BE\", name: \"Laser Lemon\" },\n    { hex: \"#FFF700\", name: \"Lemon\" },\n    { hex: \"#C8A2C8\", name: \"Lilac\" },\n    { hex: \"#BFFF00\", name: \"Lime\" },\n    { hex: \"#32CD99\", name: \"Lime Green (Web)\" },\n    { hex: \"#E3F988\", name: \"Light Lime\" },\n    { hex: \"#B5651D\", name: \"Light Brown\" },\n    { hex: \"#6D9BC3\", name: \"Light Cornflower Blue\" },\n    { hex: \"#E0FFFF\", name: \"Light Cyan (Web)\" },\n    { hex: \"#F08080\", name: \"Light Coral (Web)\" },\n    { hex: \"#93CCEA\", name: \"Light Sky Blue\" },\n    { hex: \"#FFA07A\", name: \"Light Salmon (Web)\" },\n    { hex: \"#20B2AA\", name: \"Light Sea Green (Web)\" },\n    { hex: \"#D3D3D3\", name: \"Light Gray (Web)\" },\n    { hex: \"#90EE90\", name: \"Light Green (Web)\" },\n    { hex: \"#FFB6C1\", name: \"Light Pink (Web)\" },\n    { hex: \"#FFFFE0\", name: \"Light Yellow (Web)\" },\n    { hex: \"#ADD8E6\", name: \"Light Blue (Web)\" },\n    { hex: \"#FDF5E6\", name: \"Linen\" },\n\n    // M\n    { hex: \"#800000\", name: \"Maroon\" },\n    { hex: \"#FF00FF\", name: \"Magenta\" },\n    { hex: \"#66CDAA\", name: \"Medium Aquamarine\" },\n    { hex: \"#0000CD\", name: \"Medium Blue\" },\n    { hex: \"#BA55D3\", name: \"Medium Orchid\" },\n    { hex: \"#9370DB\", name: \"Medium Purple\" },\n    { hex: \"#3CB371\", name: \"Medium Sea Green\" },\n    { hex: \"#7B68EE\", name: \"Medium Slate Blue\" },\n    { hex: \"#00FA9A\", name: \"Medium Spring Green\" },\n    { hex: \"#48D1CC\", name: \"Medium Turquoise\" },\n    { hex: \"#C71585\", name: \"Medium Violet Red\" },\n    { hex: \"#191970\", name: \"Midnight Blue\" },\n    { hex: \"#F5FFFA\", name: \"Mint Cream\" },\n    { hex: \"#FFE4E1\", name: \"Misty Rose\" },\n    { hex: \"#FFE4B5\", name: \"Moccasin\" },\n\n    // N\n    { hex: \"#000080\", name: \"Navy Blue\" },\n\n    // O\n    { hex: \"#FFD700\", name: \"Old Gold\" },\n    { hex: \"#DAA520\", name: \"Old Lace\" },\n    { hex: \"#808000\", name: \"Olive\" },\n    { hex: \"#6B8E23\", name: \"Olive Drab\" },\n    { hex: \"#FFA500\", name: \"Orange\" },\n    { hex: \"#FF4500\", name: \"Orange Red\" },\n    { hex: \"#DA70D6\", name: \"Orchid\" },\n    \n\n    // P\n    { hex: \"#AFEEEE\", name: \"Pale Turquoise\" },\n    { hex: \"#DB7093\", name: \"Pale Violet Red\" },\n    { hex: \"#FFEFD5\", name: \"Papaya Whip\" },\n    { hex: \"#FFDAB9\", name: \"Peach Puff\" },\n    { hex: \"#CD853F\", name: \"Peru\" },\n    { hex: \"#FFC0CB\", name: \"Pink\" },\n    { hex: \"#DDA0DD\", name: \"Plum\" },\n    { hex: \"#B0E0E6\", name: \"Powder Blue\" },\n    { hex: \"#800080\", name: \"Purple\" },\n    { hex: \"#A020F0\", name: \"Purple (Web)\" },\n    { hex: \"#716B56\", name: \"Peat\" },\n\n    // Q\n    { hex: \"#8A496B\", name: \"Quinacridone Magenta\" },\n    { hex: \"#3C3B6E\", name: \"Queen Blue\" },\n    { hex: \"#E8CCD7\", name: \"Quill Gray\" },\n    { hex: \"#A57C00\", name: \"Quinoline Yellow\" },\n    { hex: \"#86608E\", name: \"Quinacridone Violet\" },\n    { hex: \"#5B92E5\", name: \"Queen Pink\" },\n    { hex: \"#D6CADD\", name: \"Quartz Gray\" },\n    { hex: \"#E3E4FA\", name: \"Quartz\" },\n    { hex: \"#6C6961\", name: \"Quill Gray\" },\n\n    // R\n    { hex: \"#FF00FF\", name: \"Red\" },\n    { hex: \"#BC8F8F\", name: \"Rosy Brown\" },\n    { hex: \"#4169E1\", name: \"Royal Blue\" },\n    { hex: \"#80461B\", name: \"Russet\" },\n    { hex: \"#B7410E\", name: \"Rust\" },\n    { hex: \"#FF0000\", name: \"Red (Web)\" },\n    { hex: \"#E30B17\", name: \"Red Devil\" },\n    { hex: \"#C72C48\", name: \"Raspberry\" },\n    { hex: \"#E0115F\", name: \"Ruby\" },\n    { hex: \"#9B111E\", name: \"Ruby Red\" },\n    { hex: \"#A52A2A\", name: \"Red Brown\" },\n\n    // S\n    { hex: \"#8B4513\", name: \"Saddle Brown\" },\n    { hex: \"#FA8072\", name: \"Salmon\" },\n    { hex: \"#F4A460\", name: \"Sandy Brown\" },\n    { hex: \"#2E8B57\", name: \"Sea Green\" },\n    { hex: \"#FFF5EE\", name: \"Seashell\" },\n    { hex: \"#A0522D\", name: \"Sienna\" },\n    { hex: \"#C0C0C0\", name: \"Silver\" },\n    { hex: \"#87CEEB\", name: \"Sky Blue\" },\n    { hex: \"#6A5ACD\", name: \"Slate Blue\" },\n    { hex: \"#708090\", name: \"Slate Gray\" },\n    { hex: \"#4DD21D\", name: \"Sport Green\" },\n    { hex: \"#00FF7F\", name: \"Spring Green\" },\n    { hex: \"#4682B4\", name: \"Steel Blue\" },\n    { hex: \"#E4D96F\", name: \"Straw\" }, \n\n    // T\n    { hex: \"#D2B48C\", name: \"Tan\" },\n    { hex: \"#008080\", name: \"Teal\" },\n    { hex: \"#FF6347\", name: \"Tomato\" },\n    { hex: \"#40E0D0\", name: \"Turquoise\" },\n\n    // U\n    { hex: \"#3F00FF\", name: \"Ultramarine\" },\n\n\n    // V\n    { hex: \"#EE82EE\", name: \"Violet\" },\n    { hex: \"#00FA9A\", name: \"Viridian\" },\n\n    // W\n    { hex: \"#F5DEB3\", name: \"Wheat\" },\n    { hex: \"#FFFFFF\", name: \"White\" },\n    { hex: \"#F5F5F5\", name: \"White Smoke\" },\n    { hex: \"#722F37\", name: \"Wine\" },\n\n    //X \n    { hex: \"#1E272C\", name: \"Xiketic\" },\n    { hex: \"#4B0082\", name: \"Xanadu\" },\n\n    // Y\n    { hex: \"#0F4D92\", name: \"Yale Blue\" }, \n    { hex: \"#FFFF00\", name: \"Yellow\" },\n    { hex: \"#9ACD32\", name: \"Yellow Green\" },\n\n    // Z\n    { hex: \"#EAE0C8\", name: \"Zinc\" },\n\n];\n\nlet _colorListWithLab: ColorWithLab[] | null = null;\n\n/**\n * A list of colors with their Lab values pre-calculated.\n * The calculation is memoized for performance.\n */\nexport function getColorListWithLab(): ColorWithLab[] {\n  if (_colorListWithLab) {\n    return _colorListWithLab;\n  }\n  _colorListWithLab = ColorList.map((color) => ({\n    ...color,\n    lab: rgbToLab(hexToRgb(color.hex)),\n  }));\n  return _colorListWithLab;\n}\n","import { getColorListWithLab } from \"./colorsList.js\";\nimport type { Color, ColorWithLab } from \"./colorsList.js\";\nimport { hexToRgb, rgbToLab } from \"./conversions.js\";\nimport type { Lab } from \"./conversions.js\";\nimport { deltaE76, deltaE94, deltaE2000 } from \"./deltaE.js\";\nimport { normalizeHex } from \"./utils/hex.js\";\n\nexport interface ColorMatch extends Color {\n  distance: number;\n}\n\nexport interface FindNearestColorOptions {\n  formula?: \"76\" | \"94\" | \"2000\";\n  colorList?: readonly ColorWithLab[];\n}\n\nconst deltaEFormulas = {\n  \"76\": deltaE76,\n  \"94\": deltaE94,\n  \"2000\": deltaE2000,\n};\n\nexport const findNearestColor = (\n  inputHex: string,\n  options: FindNearestColorOptions = {}\n): ColorMatch | null => {\n  const { formula = \"76\", colorList } = options;\n  let normalizedHex: string;\n  try {\n    normalizedHex = normalizeHex(inputHex);\n  } catch (e) {\n    throw new Error(`Invalid color format. Please provide a valid hex color.`);\n  }\n\n  const list = colorList ?? getColorListWithLab();\n\n  // Exact match first\n  const exact = list.find((c) => c.hex === normalizedHex);\n  if (exact) {\n    return {\n      name: exact.name,\n      hex: exact.hex,\n      distance: 0,\n    };\n  }\n\n  const targetLab: Lab = rgbToLab(hexToRgb(normalizedHex));\n\n  let nearest: ColorWithLab | null = null;\n  let minDiff = Infinity;\n\n  const deltaE = deltaEFormulas[formula];\n\n  for (const color of list) {\n    const diff = deltaE(targetLab, color.lab);\n    if (diff < minDiff) {\n      minDiff = diff;\n      nearest = color;\n    }\n  }\n\n  if (!nearest) {\n    return null;\n  }\n\n  return {\n    name: nearest.name,\n    hex: nearest.hex,\n    distance: minDiff,\n  };\n};\n\nexport interface FindAllClosestColorsOptions extends FindNearestColorOptions {\n  /**\n   * The number of closest colors to return. Defaults to 5.\n   * This option is ignored if `threshold` is set.\n   */\n  count?: number;\n  /**\n   * The maximum distance for a color to be considered \"close\".\n   * If set, this option takes precedence over `count`.\n   */\n  threshold?: number;\n}\n\n/**\n * Finds a list of the closest human-readable color names for a given hex color.\n *\n * @param inputHex The color to match, as a hex string (e.g., `#RRGGBB`).\n * @param options Options to control the matching logic.\n * @returns An array of `ColorMatch` objects, sorted by distance.\n */\nexport const findAllClosestColors = (\n  inputHex: string,\n  options: FindAllClosestColorsOptions = {}\n): ColorMatch[] => {\n  const { formula = \"76\", colorList, count = 5, threshold } = options;\n\n  let normalizedHex: string;\n  try {\n    normalizedHex = normalizeHex(inputHex);\n  } catch (e) {\n    throw new Error(`Invalid color format. Please provide a valid hex color.`);\n  }\n\n  const list = colorList ?? getColorListWithLab();\n  const deltaE = deltaEFormulas[formula];\n\n  const targetLab = rgbToLab(hexToRgb(normalizedHex));\n\n  const allMatches: ColorMatch[] = list.map((color) => ({\n    name: color.name,\n    hex: color.hex,\n    distance: deltaE(targetLab, color.lab),\n  }));\n\n  allMatches.sort((a, b) => a.distance - b.distance);\n\n  if (threshold !== undefined) {\n    return allMatches.filter((match) => match.distance <= threshold);\n  }\n\n  return allMatches.slice(0, count);\n};"]}