aboutsummaryrefslogtreecommitdiffstats
path: root/library/fullcalendar/packages/luxon/main.js
diff options
context:
space:
mode:
Diffstat (limited to 'library/fullcalendar/packages/luxon/main.js')
-rw-r--r--library/fullcalendar/packages/luxon/main.js162
1 files changed, 162 insertions, 0 deletions
diff --git a/library/fullcalendar/packages/luxon/main.js b/library/fullcalendar/packages/luxon/main.js
new file mode 100644
index 000000000..ff5fc19a1
--- /dev/null
+++ b/library/fullcalendar/packages/luxon/main.js
@@ -0,0 +1,162 @@
+/*!
+FullCalendar Luxon Plugin v4.0.2
+Docs & License: https://fullcalendar.io/
+(c) 2019 Adam Shaw
+*/
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('luxon'), require('@fullcalendar/core')) :
+ typeof define === 'function' && define.amd ? define(['exports', 'luxon', '@fullcalendar/core'], factory) :
+ (global = global || self, factory(global.FullCalendarLuxon = {}, global.luxon, global.FullCalendar));
+}(this, function (exports, luxon, core) { 'use strict';
+
+ /*! *****************************************************************************
+ Copyright (c) Microsoft Corporation. All rights reserved.
+ Licensed under the Apache License, Version 2.0 (the "License"); you may not use
+ this file except in compliance with the License. You may obtain a copy of the
+ License at http://www.apache.org/licenses/LICENSE-2.0
+
+ THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
+ WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
+ MERCHANTABLITY OR NON-INFRINGEMENT.
+
+ See the Apache Version 2.0 License for specific language governing permissions
+ and limitations under the License.
+ ***************************************************************************** */
+ /* global Reflect, Promise */
+
+ var extendStatics = function(d, b) {
+ extendStatics = Object.setPrototypeOf ||
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
+ function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
+ return extendStatics(d, b);
+ };
+
+ function __extends(d, b) {
+ extendStatics(d, b);
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ }
+
+ var __assign = function() {
+ __assign = Object.assign || function __assign(t) {
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
+ s = arguments[i];
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+ }
+ return t;
+ };
+ return __assign.apply(this, arguments);
+ };
+
+ function toDateTime(date, calendar) {
+ if (!(calendar instanceof core.Calendar)) {
+ throw new Error('must supply a Calendar instance');
+ }
+ return luxon.DateTime.fromJSDate(date, {
+ zone: calendar.dateEnv.timeZone,
+ locale: calendar.dateEnv.locale.codes[0]
+ });
+ }
+ function toDuration(duration, calendar) {
+ if (!(calendar instanceof core.Calendar)) {
+ throw new Error('must supply a Calendar instance');
+ }
+ return luxon.Duration.fromObject(__assign({}, duration, { locale: calendar.dateEnv.locale.codes[0] }));
+ }
+ var LuxonNamedTimeZone = /** @class */ (function (_super) {
+ __extends(LuxonNamedTimeZone, _super);
+ function LuxonNamedTimeZone() {
+ return _super !== null && _super.apply(this, arguments) || this;
+ }
+ LuxonNamedTimeZone.prototype.offsetForArray = function (a) {
+ return arrayToLuxon(a, this.timeZoneName).offset;
+ };
+ LuxonNamedTimeZone.prototype.timestampToArray = function (ms) {
+ return luxonToArray(luxon.DateTime.fromMillis(ms, {
+ zone: this.timeZoneName
+ }));
+ };
+ return LuxonNamedTimeZone;
+ }(core.NamedTimeZoneImpl));
+ function formatWithCmdStr(cmdStr, arg) {
+ var cmd = parseCmdStr(cmdStr);
+ if (arg.end) {
+ var start = arrayToLuxon(arg.start.array, arg.timeZone, arg.localeCodes[0]);
+ var end = arrayToLuxon(arg.end.array, arg.timeZone, arg.localeCodes[0]);
+ return formatRange(cmd, start.toFormat.bind(start), end.toFormat.bind(end), arg.separator);
+ }
+ return arrayToLuxon(arg.date.array, arg.timeZone, arg.localeCodes[0]).toFormat(cmd.whole);
+ }
+ var main = core.createPlugin({
+ cmdFormatter: formatWithCmdStr,
+ namedTimeZonedImpl: LuxonNamedTimeZone
+ });
+ function luxonToArray(datetime) {
+ return [
+ datetime.year,
+ datetime.month - 1,
+ datetime.day,
+ datetime.hour,
+ datetime.minute,
+ datetime.second,
+ datetime.millisecond
+ ];
+ }
+ function arrayToLuxon(arr, timeZone, locale) {
+ return luxon.DateTime.fromObject({
+ zone: timeZone,
+ locale: locale,
+ year: arr[0],
+ month: arr[1] + 1,
+ day: arr[2],
+ hour: arr[3],
+ minute: arr[4],
+ second: arr[5],
+ millisecond: arr[6]
+ });
+ }
+ function parseCmdStr(cmdStr) {
+ var parts = cmdStr.match(/^(.*?)\{(.*)\}(.*)$/); // TODO: lookbehinds for escape characters
+ if (parts) {
+ var middle = parseCmdStr(parts[2]);
+ return {
+ head: parts[1],
+ middle: middle,
+ tail: parts[3],
+ whole: parts[1] + middle.whole + parts[3]
+ };
+ }
+ else {
+ return {
+ head: null,
+ middle: null,
+ tail: null,
+ whole: cmdStr
+ };
+ }
+ }
+ function formatRange(cmd, formatStart, formatEnd, separator) {
+ if (cmd.middle) {
+ var startHead = formatStart(cmd.head);
+ var startMiddle = formatRange(cmd.middle, formatStart, formatEnd, separator);
+ var startTail = formatStart(cmd.tail);
+ var endHead = formatEnd(cmd.head);
+ var endMiddle = formatRange(cmd.middle, formatStart, formatEnd, separator);
+ var endTail = formatEnd(cmd.tail);
+ if (startHead === endHead && startTail === endTail) {
+ return startHead +
+ (startMiddle === endMiddle ? startMiddle : startMiddle + separator + endMiddle) +
+ startTail;
+ }
+ }
+ return formatStart(cmd.whole) + separator + formatEnd(cmd.whole);
+ }
+
+ exports.default = main;
+ exports.toDateTime = toDateTime;
+ exports.toDuration = toDuration;
+
+ Object.defineProperty(exports, '__esModule', { value: true });
+
+}));