React Calender

by Kevin Mwangi

Babel + JSX

var calendar, endDay, firstDay, firstWeekDay, headerRow, i, j, lastWeekDay, len, len1, month, monthRange, row, startDate, week, weekRange, weeks, year,
    indexOf = [].indexOf || function (item) {
            for (var i = 0, l = this.length; i < l; i++) {
                if (i in this && this[i] === item) return i;
            }
            return -1;
        };

function get_calendar(year, month) {

    startDate = moment([year, month]);
    firstDay = moment(startDate).startOf('month');
    endDay = moment(startDate).endOf('month');
    monthRange = moment.range(firstDay, endDay);

    weeks = [];

    monthRange.by('days', function (moment) {
        var ref;
        if (ref = moment.week(), indexOf.call(weeks, ref) < 0) {
            return weeks.push(moment.week());
        }
    });

    // console.log('weeks', JSON.stringify(weeks))

    calendar = [];

    for (i = 0, len = weeks.length; i < len; i++) {
        week = weeks[i];
        if (i > 0 && week < weeks[i - 1]) {
            // We have switched to the next year

            firstWeekDay = moment([year, month]).add(1, "year").week(week).day(1);
            lastWeekDay = moment([year, month]).add(1, "year").week(week).day(7);
        }
        else {
            firstWeekDay = moment([year, month]).week(week).day(1);
            lastWeekDay = moment([year, month]).week(week).day(7);
        }
        weekRange = moment.range(firstWeekDay, lastWeekDay);
        calendar.push(weekRange);
    }

    return calendar;
}

var Calendar = React.createClass({

    getDefaultProps: function () {
        return {
            date: moment()
        }
    },

    getInitialState: function () {
        // month = moment().month();
        // year = moment().year();
        return {
            date: this.props.date,
            month: moment().month(),
            year: moment().year(),
            calendar: this.getCalendar()
        }
    },

    getCalendar: function () {

        let month =...