function DateCalculator(_ref) {
    var year = _ref.year,
        _ref$allowSplitWeeks = _ref.allowSplitWeeks,
        allowSplitWeeks = _ref$allowSplitWeeks === void 0 ? true : _ref$allowSplitWeeks,
        _ref$hideDaysBeforeFu = _ref.hideDaysBeforeFullWeeks,
        hideDaysBeforeFullWeeks = _ref$hideDaysBeforeFu === void 0 ? false : _ref$hideDaysBeforeFu,
        _ref$hideDaysAfterFul = _ref.hideDaysAfterFullWeeks,
        hideDaysAfterFullWeeks = _ref$hideDaysAfterFul === void 0 ? false : _ref$hideDaysAfterFul;
    (0, _classCallCheck2.default)(this, DateCalculator);

    /**
     * Year to base calculations on.
     *
     * @type {Number}
     */
    this.year = year;
    /**
     * First day of the week.
     *
     * @type {String}
     */

    this.firstWeekDay = 'monday';
    /**
     * The current `allowSplitWeeks` option state.
     */

    this.allowSplitWeeks = allowSplitWeeks;
    /**
     * The current `hideDaysBeforeFullWeeks` option state.
     */

    this.hideDaysBeforeFullWeeks = hideDaysBeforeFullWeeks;
    /**
     * The current `hideDaysAfterFullWeeks` option state.
     */

    this.hideDaysAfterFullWeeks = hideDaysAfterFullWeeks;
    /**
     * Number of week sections (full weeks + incomplete week blocks in months).
     *
     * @type {Number}
     */

    this.weekSectionCount = 0;
    /**
     * Cache of lists of months and their week/day related information.
     * It's categorized by year, so month information for a certain year is stored under `this.monthListCache[year]`.
     *
     * @type {Object}
     */

    this.monthListCache = {};
    /**
     * Object containing references to the year days and their corresponding columns.
     *
     * @type {Object}
     */

    this.daysInColumns = {};
    this.calculateWeekStructure();
  }
This class handles the date-related calculations for the GanttChart plugin.

@plugin GanttChart