render() {
    let style = {
      ...defaultStyle.style,
      ...this.props.style,
    };
    if (this.props.readOnly) {
      style = {
        ...style,
        ...defaultStyle.readOnlyStyle,
        ...this.props.readOnlyStyle,
      };
    }

    if (this.props.disabled) {
      style = {
        ...style,
        ...defaultStyle.disabledStyle,
        ...this.props.disabledStyle,
      };
    }

    if (this.preventFocusStyleForTouchAndClick && this.state.isFocused) {
      style = {
        ...style,
        ...defaultStyle.focusStyle,
        ...this.props.focusStyle,
      };
    }

    if (this.state.isActive) {
      style = {
        ...style,
        ...defaultStyle.activeStyle,
        ...this.props.activeStyle,
      };
    }

    const weekArray = getWeekArrayForMonth(this.state.month, this.state.year, this.localeData.firstDay);

    const tabIndex = !this.props.disabled ? this.props.tabIndex : false;

    return (
      <div
        tabIndex={ tabIndex }
        onFocus={ this._onFocus }
        onBlur={ this._onBlur }
        onKeyDown={ this._onKeyDown }
        onMouseDown={ this._onMouseDown }
        onMouseUp={ this._onMouseUp }
        onTouchStart={ this._onTouchStart }
        onTouchEnd={ this._onTouchEnd }
        onTouchCancel={ this._onTouchCancel }
        aria-label={ this.props['aria-label'] }
        aria-disabled={ this.props.disabled }
        aria-readonly={ this.props.readOnly }
        style={ style }
        className={
         unionClassNames(this.props.className, this.pseudoStyleIds.styleId)
        }
        {...this.wrapperProps}
      >
        { this._renderNavBar() }
        <div
          role="grid"
          style={ defaultStyle.weekGridStyle }
          { ...this.weekGridProps }
        >
          { this._renderWeekHeader() }
          {
            map(weekArray, (week) => {
              const weekDays = this.localeData.isRTL ? reverse(week) : week;
              return map(weekDays, (day, dayIndex) => this._renderDay(day, dayIndex));
            })
          }
        </div>
      </div>
    );
  }
Function will render:
- main calendar component
- call methods to render navBar and week header
- get array of weeks in a month and for each day in the week call method to render day

It will apply styles sequentially according to Wrapper according to following rules:
1. If component is readOnly apply readOnlyStyle
2. If component is disabled apply disabledStyle
   - If disabled component is hovered apply disabledHoverStyle
3. If component is not disabled:
   - If component is hovered apply hover style
   - If component is hovered and active apply hover + active styles
   - If component is hovered and focused but not active and preventFocusStyleForTouchAndClick is true apply focusStyles