nearest-palette
Version: 
A search tool to search color palettes by color.
73 lines (65 loc) • 2 kB
JavaScript
const { expect } = require("@jest/globals");
import {
  nearestPalette,
  nearestColor,
  distanceToColor,
} from "./nearestPalette.js";
const target = "#FFFFFF";
const k = 2;
const palettes = [
  ["#69d2e7", "#a7dbd8", "#e0e4cc", "#f38630", "#fa6900"],
  [target, "#cbe86b", "#f2e9e1", "#1c140d", "#cbe86b"],
  ["#fe4365", "#fc9d9a", "#f9cdad", "#c8c8a9", "#83af9b"],
];
import nearestPalettes from "./nearestPalette";
var colors = require("nice-color-palettes/1000");
test("Check max palettes", () => {
  const getPalettes = nearestPalettes("#ffddff", colors, 40);
  const res = getPalettes.length;
  expect(res).toBe(40);
});
test("TEST Distance", () => {
  const res = distanceToColor(target, "#f2e9e1");
  const er = 39.408120990476064;
  expect(res).toBe(er);
});
test("TEST nearest Palettes", () => {
  const res = nearestPalette(target, palettes, k);
  let er = [
    {
      distance: 0,
      palette: ["#FFFFFF", "#cbe86b", "#f2e9e1", "#1c140d", "#cbe86b"],
    },
    {
      distance: 65.50572494064927,
      palette: ["#69d2e7", "#a7dbd8", "#e0e4cc", "#f38630", "#fa6900"],
    },
  ];
  expect(res).toEqual(expect.arrayContaining(er));
});
test("TEST Nearest Colors", () => {
  let res = nearestColor(target, palettes, k);
  let er = [
    {
      distance: 65.50572494064927,
      colors: [
        { color: "#e0e4cc", distance: 65.50572494064927 },
        { color: "#a7dbd8", distance: 102.76672613253767 },
        { color: "#69d2e7", distance: 158.43295111813072 },
        { color: "#f38630", distance: 240.0708228835816 },
        { color: "#fa6900", distance: 295.8884925102698 },
      ],
    },
    {
      distance: 0,
      colors: [
        { color: "#FFFFFF", distance: 0 },
        { color: "#f2e9e1", distance: 39.408120990476064 },
        { color: "#cbe86b", distance: 158.54652314068574 },
        { color: "#cbe86b", distance: 158.54652314068574 },
        { color: "#1c140d", distance: 406.59316275608967 },
      ],
    },
  ];
  expect(res).toEqual(er);
});