JSFiddle - React, Tailwind, and code Playground

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/ocanvas/2.7.4/ocanvas.min.js"></script>

<canvas id="canvas" width="400" height="400"></canvas>

JavaScript

var canvas = oCanvas.create({
    canvas: '#canvas',
    background: '#000'
});

canvas.display.register('colorizedImage', {
    hue: '',
    path: '',
    width: 0,
    heigth: 0,
    _renderNewColor: function(tempImage) {
        if (!this._tempCanvas) {
            this._tempCanvas = document.createElement('canvas');
        }
        this._createColorizedImage(this._tempCanvas, tempImage, this.hue);
        var self = this;
        setTimeout(function() {
            self.core.redraw();
        }, 0);
    },
    _createColorizedImage: function(tempCanvas, imageElement, hue) {
        var tempContext = tempCanvas.getContext('2d');

        tempCanvas.width = imageElement.width;
        tempCanvas.height = imageElement.height;

        tempContext.drawImage(imageElement, 0, 0);
        tempContext.fillStyle = 'hsla(' + hue + ', 50%, 50%, 0.5)';
        tempContext.globalCompositeOperation = 'source-atop';
        tempContext.fillRect(0, 0, tempCanvas.width, tempCanvas.height);
    }
}, function(context) {
    if (this._tempCanvas) {
        var origin = this.getOrigin();
        var x = this.abs_x - origin.x;
        var y = this.abs_y - origin.y;
        var w = this.width || this._tempCanvas.width;
        var h = this.height || this._tempCanvas.height;
        context.drawImage(this._tempCanvas, x, y, w, h);
    }

    if (this.path !== this._lastPathBeingLoaded) {
        this._lastPathBeingLoaded = this.path;
        var tempImage = new Image();
        tempImage.src = this.path;
        var self = this;
        tempImage.onload = function() {
            if (self.path === this.src) {
                self._renderNewColor(tempImage);
            }
        };
        this._lastImageElement = tempImage;
    }

    if (this.hue !== this._lastHueBeingLoaded) {
        this._lastHueBeingLoaded = this.hue;
        this._renderNewColor(this._lastImageElement);
    }
});

var colorizedImage = canvas.display.colorizedImage({
    hue: 0,
    path:...