import { getColorPaletteFamily } from './palette'; import { getColorName } from './name'; import type { ColorPalette, ColorPaletteFamily, ColorPaletteItem, ColorPaletteNumber } from './type'; import defaultPalettes from './json/palette.json'; /** * Get color palette by provided color and color name * * @param color The provided color * @param colorName Color name */ export function getColorPalette(color: string, colorName: string) { const colorPaletteFamily = getColorPaletteFamily(color, colorName); const colorMap = new Map(); colorPaletteFamily.palettes.forEach(palette => { colorMap.set(palette.number, palette); }); const mainColor = colorMap.get(500) as ColorPaletteItem; const matchColor = colorPaletteFamily.palettes.find(palette => palette.hexcode === color) as ColorPaletteItem; const colorPalette: ColorPalette = { ...colorPaletteFamily, colorMap, main: mainColor, match: matchColor }; return colorPalette; } /** * Get color by color palette number * * @param color Color * @param num Color palette number * @returns Color hexcode */ export function getColorByColorPaletteNumber(color: string, num: ColorPaletteNumber) { const colorPalette = getColorPalette(color, color); const colorItem = colorPalette.colorMap.get(num) as ColorPaletteItem; return colorItem.hexcode; } export default getColorPalette; /** The builtin color palettes */ const colorPalettes = defaultPalettes as ColorPaletteFamily[]; export { getColorName, colorPalettes }; export type { ColorPalette, ColorPaletteNumber, ColorPaletteItem, ColorPaletteFamily };