UNPKG

visiting-hours

Version:

An advanced, feature rich, optimised and tiny visiting-hours library.

144 lines (117 loc) 4.37 kB
"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;