JSFiddle - React, Tailwind, and code Playground

by eithe

JavaScript

function chunk(arr, n) {
        return arr.reduce(function(p, cur, i) {
            (p[i/n|0] = p[i/n|0] || []).push(cur);
            return p;
        },[]);
    }

    //Thanks to http://www.cs.rit.edu/~ncs/color/t_convert.html !
    function rgb_to_yiq(pixel)
    {
        return {y: 0.299900 * pixel.r + 0.587000 * pixel.b + 0.114000 * pixel.b,
                i: 0.595716 * pixel.r - 0.274453 * pixel.b - 0.321264 * pixel.b,
                q: 0.211456 * pixel.r - 0.522591 * pixel.b + 0.311350 * pixel.b}
    }

    //Thanks to http://www.easyrgb.com/ !
    function rgb_to_hsv(pixel)
    {
        var _r = ( pixel.r / 255 );
        var _g = ( pixel.g / 255 );
        var _b = ( pixel.b / 255 );
        
        var _min = Math.min( _r, _g, _b );
        var _max = Math.max( _r, _g, _b );
        var del_max = _max - _min;
        
        var h,s,v;
        
        v = _max;
        
        if ( del_max == 0 )
        {
           h = 0;
           s = 0;
        }
        else
        {
           s = del_max / _max;
        
           var del_r = ( ( ( _max - _r ) / 6 ) + ( del_max / 2 ) ) / del_max;
           var del_g = ( ( ( _max - _g ) / 6 ) + ( del_max / 2 ) ) / del_max;
           var del_b = ( ( ( _max - _b ) / 6 ) + ( del_max / 2 ) ) / del_max;
        
           if      ( _r == _max ) h = del_b - del_g;
           else if ( _g == _max ) h = ( 1 / 3 ) + del_r - del_b;
           else if ( _b == _max ) h = ( 2 / 3 ) + del_g - del_r;
        
           if ( h < 0 ) h += 1;
           if ( h > 1 ) h -= 1;
        }
        
        return {h: h, s: s, v: v}
    }

    function rgb_to_xyz(pixel)
    {
        var _r = ( pixel.r / 255 );
        var _g = ( pixel.g / 255 );
        var _b = ( pixel.b / 255 );

        if ( _r > 0.04045 ) _r = Math.pow(( _r + 0.055 ) / 1.055, 2.4);
        else                _r = _r / 12.92;
        
        if ( _g > 0.04045 ) _g = Math.pow(( _g + 0.055 ) / 1.055, 2.4);
        else                _g = _g / 12.92;
...