JSFiddle - React, Tailwind, and code Playground

HTML

<div class="Container">
                <div id = 'left-div'>
                    <canvas class = "Blackboard" id = "blackboard-canvas" >
                        
                    </canvas>
                </div>                    
                <div id='right-div'>
                    <div id = 'tools-div'>
                        <ul>
                            <li><a href='#colorOption'>Color Options</a></li>
                            <li><a href='#toolbar-option'>Tool Bar</a></li>
                        </ul>
                        <div id='colorOption'>
                            Pick a Color
                            <canvas id='color-option-canvas' >
                                
                            </canvas>
                        </div>
                        <div id='toolbar-option'>
                            Tool bar options goes here
                        </div>
                    </div>
                </div>
                
                <br style="clear:both;"/>
            </div>            
            <script>
            $(document).ready(function(){
                //chrome seems to always show a text-selection cursor while dragging.
                //A temporary workaround
                document.onselectstart = function(){ return false; }
                var board = new Blackboard('blackboard-canvas');
            })
        </script>

CSS

body{ 
    font: 62.5% "Trebuchet MS", sans-serif;
}
.Blackboard{
    background-image: url(http://i1043.photobucket.com/albums/b438/wooxy99/blackboard.png);
    
    border-style: ridge;
    border-color: gray;
    border-width: 5px; 
    width: 96%;
    height: 96%;
    cursor: crosshair;
    position: relative;
    -webkit-border-radius: 16px;
    -webkit-box-shadow: 0px 6px 7px #0a0505;
};
.Blackboard:active{
    cursor: crosshair;
}

.Container{
    border-color: #666;
    border-width: 10px;
    border-style: inset;
    background-color: gray;
    width: 700px;
    height: 400px;
}

#right-div, #left-div{
    height: 100%;
}
#left-div{
    float: left;
    width: 60%;
}
#right-div{
    float: right;
    background-color: black;
    width: 40%;
}

JavaScript

function Blackboard(canvasId){
    this.isMouseDown = false;
    this.canvas = document.getElementById(canvasId);
    this.canvasContext = this.canvas.getContext('2d');
    this.lastMouseClickedPosition = null;
    var self = this;

    this.onMouseDown = function(e){
        self.isMouseDown = true;
        self.lastMouseClickedPosition = convertMousePositionFromMouseEvent(e);;
        self.onDraw(self.lastMouseClickedPosition);
    }
    
    this.onDraw = function(clickedPosition){
        var context = self.canvasContext;
        var x = clickedPosition.x;
        var y = clickedPosition.y;
            //temporary for testing rigth now
            if (!window.started) {
                context.beginPath();
                context.moveTo(x, y);
                window.started = true;
            } else {
                context.lineTo(x, y);
                context.stroke();
            }
    }
    
    this.onMouseUp = function(e){
        self.isMouseDown = false;
        self.lastMouseClickedPosition = convertMousePositionFromMouseEvent(e);
        window.started = false;
    }
    this.onMouseMove = function(e){
        if(self.isMouseDown) self.onMouseDown(e);
    }
    this.clearBoard = function(){
        self.canvas.width = self.canvas.width;
    }


    //add appropriate event listeners
    self.canvas.addEventListener("mousedown",this.onMouseDown,false);
    self.canvas.addEventListener('mouseup',this.onMouseUp,false);
    self.canvas.addEventListener('mousemove',this.onMouseMove,false);


}
function convertMousePositionFromMouseEvent(e)
{
    //this section is from http://www.quirksmode.org/js/events_properties.html
    var targ;
    if (!e)
        e = window.event;
    if (e.target)
        targ = e.target;
    else if (e.srcElement)
        targ = e.srcElement;
    if (targ.nodeType == 3) // defeat Safari bug
        targ = targ.parentNode;

    var x = e.pageX - $(targ).offset().left;
    var y = e.pageY - $(targ).offset().top;

    return {"x":...