_buildWeeks(localeData) {
      if (this._hidden) {
        return; // Optimization to not do any work unless the current picker
      }

      this._weeks = [];
      const firstDayOfWeek = this._getFirstDayOfWeek();
      const monthsNames = localeData.getMonths("wide", this._primaryCalendarType);
      const secondaryMonthsNames = this.hasSecondaryCalendarType ? localeData.getMonths("wide", this.secondaryCalendarType) : [];
      const nonWorkingDayLabel = DayPicker_1.i18nBundle.getText(_i18nDefaults.DAY_PICKER_NON_WORKING_DAY);
      const todayLabel = DayPicker_1.i18nBundle.getText(_i18nDefaults.DAY_PICKER_TODAY);
      const tempDate = this._getFirstDay(); // date that will be changed by 1 day 42 times
      const todayDate = _CalendarDate.default.fromLocalJSDate(new Date(), this._primaryCalendarType); // current day date - calculate once
      const calendarDate = this._calendarDate; // store the _calendarDate value as this getter is expensive and degrades IE11 perf
      const minDate = this._minDate; // store the _minDate (expensive getter)
      const maxDate = this._maxDate; // store the _maxDate (expensive getter)
      const tempSecondDate = this.hasSecondaryCalendarType ? this._getSecondaryDay(tempDate) : undefined;
      let week = [];
      for (let i = 0; i < DAYS_IN_WEEK * 6; i++) {
        // always show 6 weeks total, 42 days to avoid jumping
        const timestamp = tempDate.valueOf() / 1000; // no need to round because CalendarDate does it
        let dayOfTheWeek = tempDate.getDay() - firstDayOfWeek;
        if (dayOfTheWeek < 0) {
          dayOfTheWeek += DAYS_IN_WEEK;
        }
        const isFocused = tempDate.getMonth() === calendarDate.getMonth() && tempDate.getDate() === calendarDate.getDate();
        const isSelected = this._isDaySelected(timestamp);
        const isSelectedBetween = this._isDayInsideSelectionRange(timestamp);
        const isOtherMonth = tempDate.getMonth() !== calendarDate.getMonth();
        const isWeekend = this._isWeekend(tempDate);
        const isDisabled = tempDate.valueOf() < minDate.valueOf() || tempDate.valueOf() > maxDate.valueOf();
        const isToday = tempDate.isSame(todayDate);
        const isFirstDayOfWeek = tempDate.getDay() === firstDayOfWeek;
        const nonWorkingAriaLabel = isWeekend ? `${nonWorkingDayLabel} ` : "";
        const todayAriaLabel = isToday ? `${todayLabel} ` : "";
        const tempSecondDateNumber = tempSecondDate ? tempSecondDate.getDate() : "";
        const tempSecondYearNumber = tempSecondDate ? tempSecondDate.getYear() : "";
        const secondaryMonthsNamesString = secondaryMonthsNames.length > 0 ? secondaryMonthsNames[tempSecondDate.getMonth()] : "";
        const ariaLabel = this.hasSecondaryCalendarType ? `${todayAriaLabel}${nonWorkingAriaLabel}${monthsNames[tempDate.getMonth()]} ${tempDate.getDate()}, ${tempDate.getYear()}; ${secondaryMonthsNamesString} ${tempSecondDateNumber}, ${tempSecondYearNumber}` : `${todayAriaLabel}${nonWorkingAriaLabel}${monthsNames[tempDate.getMonth()]} ${tempDate.getDate()}, ${tempDate.getYear()}`;
        const day = {
          timestamp: timestamp.toString(),
          focusRef: isFocused,
          _tabIndex: isFocused ? "0" : "-1",
          selected: isSelected,
          day: tempDate.getDate(),
          secondDay: this.hasSecondaryCalendarType ? tempSecondDate.getDate() : undefined,
          _isSecondaryCalendarType: this.hasSecondaryCalendarType,
          classes: `ui5-dp-item ui5-dp-wday${dayOfTheWeek}`,
          ariaLabel,
          ariaSelected: isSelected ? "true" : "false",
          ariaDisabled: isOtherMonth ? "true" : undefined,
          disabled: isDisabled
        };
        if (isFirstDayOfWeek) {
          day.classes += " ui5-dp-firstday";
        }
        if (isSelected) {
          day.classes += " ui5-dp-item--selected";
        }
        if (isSelectedBetween) {
          day.classes += " ui5-dp-item--selected-between";
        }
        if (isToday) {
          day.classes += " ui5-dp-item--now";
        }
        if (isOtherMonth) {
          day.classes += " ui5-dp-item--othermonth";
        }
        if (isWeekend) {
          day.classes += " ui5-dp-item--weeekend";
        }
        if (isDisabled) {
          day.classes += " ui5-dp-item--disabled";
        }
        if (this.hasSecondaryCalendarType) {
          day.classes += " ui5-dp-item--withsecondtype";
        }
        week.push(day);
        if (dayOfTheWeek === DAYS_IN_WEEK - 1) {
          // 0-indexed so 6 is the last day of the week
          week.unshift({
            weekNum: (0, _calculateWeekNumber.default)((0, _FormatSettings.getFirstDayOfWeek)(), tempDate.toUTCJSDate(), tempDate.getYear(), (0, _getLocale.default)(), localeData),
            isHidden: this.shouldHideWeekNumbers
          });
        }
        if (week.length === DAYS_IN_WEEK + 1) {
          // 7 entries for each day + 1 for the week numbers
          this._weeks.push(week);
          week = [];
        }
        tempDate.setDate(tempDate.getDate() + 1);
        if (this.hasSecondaryCalendarType && tempSecondDate) {
          tempSecondDate.setDate(tempSecondDate.getDate() + 1);
        }
      }
    }
Builds the "_weeks" object that represents the month.
@param { LocaleData }localeData
@private