visiting-hours
Version:
An advanced, feature rich, optimised and tiny visiting-hours library.
144 lines (117 loc) • 4.37 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.VisitingHour = void 0;
var _Timezone = require("./Timezone");
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a 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); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
var VisitingHour = /*#__PURE__*/function () {
function VisitingHour(_ref) {
var timeValue = _ref.timeValue,
hours = _ref.hours,
minutes = _ref.minutes,
zone = _ref.zone,
relativeToTimestamp = _ref.relativeToTimestamp;
_classCallCheck(this, VisitingHour);
_defineProperty(this, "_date", void 0);
_defineProperty(this, "_hours", void 0);
_defineProperty(this, "_minutes", void 0);
_defineProperty(this, "_military", void 0);
_defineProperty(this, "_formatted", void 0);
_defineProperty(this, "_timeValue", void 0);
_defineProperty(this, "zone", void 0);
_defineProperty(this, "relativeToTimestamp", void 0);
if (typeof timeValue === 'number') {
this._timeValue = timeValue;
return;
}
if (typeof hours !== 'number' || typeof minutes !== 'number') {
this._timeValue = 0;
return;
}
this.relativeToTimestamp = relativeToTimestamp;
this.zone = zone;
this._hours = hours;
this._minutes = minutes;
this._timeValue = +"".concat(hours.toString().padStart(2, '0')).concat(minutes.toString().padStart(2, '0'));
}
_createClass(VisitingHour, [{
key: "setZone",
value: function setZone(zone) {
this.zone = zone;
}
}, {
key: "getZonedDate",
value: function getZonedDate(zone) {
var from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Date();
return _Timezone.Timezone.fromTimeValues(this.hours, this.minutes, zone, from);
}
}, {
key: "toString",
value: function toString() {
return this.military;
}
}, {
key: "hours",
get: function get() {
if (typeof this._hours !== 'number') {
this._hours = Math.floor(this._timeValue / 100);
}
return this._hours;
}
}, {
key: "military",
get: function get() {
if (typeof this._military !== 'string') {
this._military = "".concat(this.hours.toString().padStart(2, '0'), ":").concat(this.minutes.toString().padStart(2, '0'));
}
return this._military;
}
}, {
key: "minutes",
get: function get() {
if (typeof this._minutes !== 'number') {
this._minutes = this._timeValue % 100;
}
return this._minutes;
}
}, {
key: "date",
get: function get() {
if (!this._date) {
this._date = _Timezone.Timezone.fromTimeValues(this.hours, this.minutes, this.zone, this.relativeToTimestamp ? new Date(this.relativeToTimestamp) : new Date());
}
return this._date;
}
}, {
key: "formatted",
get: function get() {
if (typeof this._formatted !== 'string') {
this._formatted = this.date.toLocaleTimeString();
}
return this._formatted;
}
}, {
key: "timeValue",
get: function get() {
return this._timeValue;
}
}], [{
key: "withZone",
value: function withZone(zone, timeValue, hours, minutes) {
// Forced typing because it's too flexible for TypeScript's liking.
var visitingHour = new VisitingHour({
timeValue: timeValue,
hours: hours,
minutes: minutes
});
if (zone) visitingHour.setZone(zone);
return visitingHour;
}
}]);
return VisitingHour;
}();
exports.VisitingHour = VisitingHour;