JSFiddle - React, Tailwind, and code Playground

by Nicolas PUJOL

JavaScript

var line = "(0.56,0.94,0.21,0.02)";

function hex2Rgb(h) {
    var r = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(h);
    return [parseInt(r[1], 16), parseInt(r[2], 16), parseInt(r[3], 16)];
}

function hsl2Rgb(h) {
    var m = /HSL\(([0-9]{1,3}),([0-9]{1,3}),([0-9]{1,3})\)/i.exec(h);
    var r, g, b;
    if (m[2] == 0) {
        r = g = b = m[3];
    } else {
        var q = m[3] < 0.5 ? m[3] * (1 + m[2]) : m[3] + m[2] - m[3] * m[2];
        var p = 2 * m[3] - q;
        r = hue2rgb(p, q, m[1] + 1 / 3);
        g = hue2rgb(p, q, m[1]);
        b = hue2rgb(p, q, m[1] - 1 / 3);
    }
    return [r * 255, g * 255, b * 255];
}

function hue2rgb(p, q, t) {
    if (t < 0) t += 1;
    if (t > 1) t -= 1;
    if (t < 1 / 6) return p + (q - p) * 6 * t;
    if (t < 1 / 2) return q;
    if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;
    return p;
}

function cmyk2rgb(h) {
    var r = /\(([0-9.]+),([0-9.]+),([0-9.]+),([0-9.]+)\)/i.exec(h);
    var n = (1 - r[4]*1);
    return [Math.round(255 * (1 - (r[1] * n + r[4]*1))), Math.round(255 * (1 - (r[2] * n + r[4]*1))), Math.round(255 * (1 - (r[3] * n + r[4]*1)))];
}

function hsv2Rgb(h) {
    var m = /HSV\(([0-9]{1,3}),([0-9]{1,3}),([0-9]{1,3})\)/i.exec(h);
    var h = m[1]/100;
    var s = m[2]/100;
    var v = m[3]/100;
    var r, g, b, i, f, p, q, t;
    i = Math.floor(h * 6);
    f = h * 6 - i;
    p = v * (1 - s);
    q = v * (1 - f * s);
    t = v * (1 - (1 - f) * s);
    switch (i % 6) {
        case 0: r = v, g = t, b = p; break;
        case 1: r = q, g = v, b = p; break;
        case 2: r = p, g = v, b = t; break;
        case 3: r = p, g = q, b = v; break;
        case 4: r = t, g = p, b = v; break;
        case 5: r = v, g = p, b = q; break;
    }
    return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];
}
var r = "";
switch(/(\(|HSL|HSV|#)/.exec(line)[1]) {
    case "#":
        r = hex2Rgb(line);
        break;
    case "HSL":
        r = cmyk2rgb(line);
        break;
    case "HSV":
...