import {ColorValue} from "../models/Colors"; import iro from "@jaames/iro"; export function kelvinToColorValue(rawKelvin: number): ColorValue { const kelvin = normalizeKelvin(rawKelvin); return kelvinTable[kelvin]; } export function kelvinToRgbHex(rawKelvin: number): string { const kelvin = normalizeKelvin(rawKelvin); const c = new iro.Color(); c.kelvin = kelvin; return c.hexString; } function normalizeKelvin(kelvin: number): number { if (kelvin < 1000) { return 1000; } else if (kelvin > 10000) { return 10000; } else { return kelvin - (kelvin % 100); } } const kelvinTable: {[key: number]: ColorValue} = {}; for (let kelvin = 1000; kelvin <= 10000; kelvin += 100) { const c = new iro.Color(); c.kelvin = kelvin; const [h, s] = [c.hsv.h, (c.hsv.s as number) / 100]; kelvinTable[kelvin] = {h, s, kelvin}; }