'use strict';
Object.defineProperty(exports, '__esModule', {
value: true
});
// istanbul ignore next
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { Eif (protoProps) defineProperties(Constructor.prototype, protoProps); Iif (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
// istanbul ignore next
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
// istanbul ignore next
function _classCallCheck(instance, Constructor) { Iif (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
var _moment = require('moment');
var _moment2 = _interopRequireDefault(_moment);
var _Event = require('../Event');
var _Event2 = _interopRequireDefault(_Event);
var invalidRangeError = new ReferenceError("Invalid range of dates");
var Calendar = (function () {
function Calendar() {
var _ref = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
var _ref$startTime = _ref.startTime;
var startTime = _ref$startTime === undefined ? (0, _moment2['default'])() : _ref$startTime;
var _ref$endTime = _ref.endTime;
var endTime = _ref$endTime === undefined ? (0, _moment2['default'])().add(1, 'year') : _ref$endTime;
_classCallCheck(this, Calendar);
if (startTime.isAfter(endTime)) {
throw invalidRangeError;
} else {
this._startTime = startTime;
this._endTime = endTime;
this._events = new Array();
}
}
_createClass(Calendar, [{
key: 'isValidEvent',
value: function isValidEvent(event) {
var isValid = event.isBetween(this._startTime, this._endTime);
for (var i = 0; i < this._events.length && isValid; i++) {
var e = this._events[i];
isValid = !e.collide(event);
}
return isValid;
}
}, {
key: 'addEvent',
value: function addEvent(event) {
if (this.isValidEvent(event)) {
this._events.push(event);
}
}
}, {
key: 'startTime',
get: function get() {
return this._startTime.calendar();
}
}, {
key: 'endTime',
get: function get() {
return this._endTime.calendar();
}
}, {
key: 'events',
get: function get() {
return this._events;
}
}]);
return Calendar;
})();
exports['default'] = Calendar;
module.exports = exports['default'];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3RyYXZpcy9idWlsZC9yb2RvbGZvMjQ4OC9ib29raW5nL3NyYy9tb2RlbHMvQ2FsZW5kYXIvaW5kZXguanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7c0JBQ21CLFFBQVE7Ozs7cUJBQ1IsVUFBVTs7OztBQUU3QixJQUFNLGlCQUFpQixHQUFHLElBQUksY0FBYyxDQUFDLHdCQUF3QixDQUFDLENBQUM7O0lBRWpFLFFBQVE7QUFFRCxXQUZQLFFBQVEsR0FFa0U7cUVBQUosRUFBRTs7OEJBQTlELFNBQVM7UUFBVCxTQUFTLGtDQUFHLDBCQUFROzRCQUFFLE9BQU87UUFBUCxPQUFPLGdDQUFHLDBCQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUM7OzBCQUZqRSxRQUFROztBQUlWLFFBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTs7QUFFOUIsWUFBTSxpQkFBaUIsQ0FBQztLQUV6QixNQUFNOztBQUVMLFVBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO0FBQzVCLFVBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO0FBQ3hCLFVBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztLQUM1QjtHQUNGOztlQWRHLFFBQVE7O1dBZ0JBLHNCQUFDLEtBQUssRUFBRTtBQUNsQixVQUFJLE9BQU8sR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDOztBQUU5RCxXQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3ZELFlBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEIsZUFBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztPQUM3Qjs7QUFFRCxhQUFPLE9BQU8sQ0FBQztLQUNoQjs7O1dBRU8sa0JBQUMsS0FBSyxFQUFFO0FBQ2QsVUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQzVCLFlBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO09BQzFCO0tBQ0Y7OztTQUVZLGVBQUc7QUFDZCxhQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7S0FDbkM7OztTQUVVLGVBQUc7QUFDWixhQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7S0FDakM7OztTQUVTLGVBQUc7QUFDWCxhQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7S0FDckI7OztTQTNDRyxRQUFROzs7cUJBOENDLFFBQVEiLCJmaWxlIjoiL2hvbWUvdHJhdmlzL2J1aWxkL3JvZG9sZm8yNDg4L2Jvb2tpbmcvc3JjL21vZGVscy9DYWxlbmRhci9pbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IEV2ZW50ICBmcm9tICcuLi9FdmVudCc7XG5cbmNvbnN0IGludmFsaWRSYW5nZUVycm9yID0gbmV3IFJlZmVyZW5jZUVycm9yKFwiSW52YWxpZCByYW5nZSBvZiBkYXRlc1wiKTtcblxuY2xhc3MgQ2FsZW5kYXIge1xuXG4gIGNvbnN0cnVjdG9yKHsgc3RhcnRUaW1lID0gbW9tZW50KCksIGVuZFRpbWUgPSBtb21lbnQoKS5hZGQoMSwgJ3llYXInKSB9ID0ge30pIHtcblxuICAgIGlmIChzdGFydFRpbWUuaXNBZnRlcihlbmRUaW1lKSkge1xuXG4gICAgICB0aHJvdyBpbnZhbGlkUmFuZ2VFcnJvcjtcblxuICAgIH0gZWxzZSB7XG5cbiAgICAgIHRoaXMuX3N0YXJ0VGltZSA9IHN0YXJ0VGltZTtcbiAgICAgIHRoaXMuX2VuZFRpbWUgPSBlbmRUaW1lO1xuICAgICAgdGhpcy5fZXZlbnRzID0gbmV3IEFycmF5KCk7XG4gICAgfVxuICB9XG5cbiAgaXNWYWxpZEV2ZW50KGV2ZW50KSB7XG4gICAgbGV0IGlzVmFsaWQgPSBldmVudC5pc0JldHdlZW4odGhpcy5fc3RhcnRUaW1lLCB0aGlzLl9lbmRUaW1lKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fZXZlbnRzLmxlbmd0aCAmJiBpc1ZhbGlkOyBpKyspIHtcbiAgICAgIGxldCBlID0gdGhpcy5fZXZlbnRzW2ldO1xuICAgICAgaXNWYWxpZCA9ICFlLmNvbGxpZGUoZXZlbnQpO1xuICAgIH1cblxuICAgIHJldHVybiBpc1ZhbGlkO1xuICB9XG5cbiAgYWRkRXZlbnQoZXZlbnQpIHtcbiAgICBpZiAodGhpcy5pc1ZhbGlkRXZlbnQoZXZlbnQpKSB7XG4gICAgICB0aGlzLl9ldmVudHMucHVzaChldmVudCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHN0YXJ0VGltZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhcnRUaW1lLmNhbGVuZGFyKCk7XG4gIH1cblxuICBnZXQgZW5kVGltZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZW5kVGltZS5jYWxlbmRhcigpO1xuICB9XG5cbiAgZ2V0IGV2ZW50cygpIHtcbiAgICByZXR1cm4gdGhpcy5fZXZlbnRzO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IENhbGVuZGFyO1xuIl19 |