JSFiddle - React, Tailwind, and code Playground

JavaScript

out = function(p)
{
    document.write(p);
    document.write("<br/>");
}

var months = ["January","February","March","April","May","June","July","August","September","October","November","December"];
var days = ["M","T","W","T","F","S","S"];
function printCalendar(m,y)
{
    document.write("<pre>");
    var d;
    if(m===undefined)
    {
        d = new Date();
    }
    else
    {
        if(y===undefined)
            y = new Date().getFullYear();
        if(m.constructor == Number)
            d = new Date(months[m]+" "+y);
        else
            d = new Date(m+" "+y);
    }
    var carLen = days.length*4-1;
    var separator = "+";
    {
        for(var i=0;i<carLen;i++)
        {
            separator += "-";
        }
        separator += "+";
    }
    out(separator);
    var m = months[d.getMonth()]+" "+d.getFullYear();
    var spaces = (carLen)-m.length;
    var month = "|";
    {
        for(var i=0;i<Math.floor(spaces/2);i++)
        {
            month += " ";
        }
        month += m;
        
        for(var i=0;i<spaces-(spaces/2);i++)
        {
            month += " ";
        }
        month += "|";
    }
    out(month);
    out(separator);
    var dayLine = "| ";
    {
        for(var i=0;i<days.length;i++)
        {
            dayLine += days[i];
            dayLine += " | ";
        }
    }
    out(dayLine);
    out(separator);
    var numDays = new Date(d.getFullYear(),d.getMonth()+1);
    numDays.setDate(0);
    numDays = numDays.getDate();
    var firstDay = new Date(d.getFullYear(),d.getMonth(),1).getDay()-1;
    while(firstDay<0)
        firstDay += 7;
        
    {
        var curDay = 0;
        while(curDay-firstDay<=numDays)
        {
            var curLine = "|";
            for(var j=0;j<7;j++)
            {
                curDay++;
                if(curDay-firstDay>0&&curDay-firstDay<=numDays)
                {
                    if(curDay-firstDay>=10)
                        curLine +=" "+(curDay-firstDay)+"|";
     ...