summaryrefslogtreecommitdiff
path: root/public/js/fullcalendar/packages/luxon1
diff options
context:
space:
mode:
Diffstat (limited to 'public/js/fullcalendar/packages/luxon1')
-rw-r--r--public/js/fullcalendar/packages/luxon1/index.global.js128
-rw-r--r--public/js/fullcalendar/packages/luxon1/index.global.min.js6
2 files changed, 134 insertions, 0 deletions
diff --git a/public/js/fullcalendar/packages/luxon1/index.global.js b/public/js/fullcalendar/packages/luxon1/index.global.js
new file mode 100644
index 0000000..1b3ac69
--- /dev/null
+++ b/public/js/fullcalendar/packages/luxon1/index.global.js
@@ -0,0 +1,128 @@
1/*!
2FullCalendar Luxon 1 Plugin v6.1.17
3Docs & License: https://fullcalendar.io/docs/luxon1
4(c) 2024 Adam Shaw
5*/
6FullCalendar.Luxon = (function (exports, core, luxon, internal) {
7 'use strict';
8
9 function toLuxonDateTime(date, calendar) {
10 if (!(calendar instanceof internal.CalendarImpl)) {
11 throw new Error('must supply a CalendarApi instance');
12 }
13 let { dateEnv } = calendar.getCurrentData();
14 return luxon.DateTime.fromJSDate(date, {
15 zone: dateEnv.timeZone,
16 locale: dateEnv.locale.codes[0],
17 });
18 }
19 function toLuxonDuration(duration, calendar) {
20 if (!(calendar instanceof internal.CalendarImpl)) {
21 throw new Error('must supply a CalendarApi instance');
22 }
23 let { dateEnv } = calendar.getCurrentData();
24 return luxon.Duration.fromObject(Object.assign(Object.assign({}, duration), { locale: dateEnv.locale.codes[0] }));
25 }
26 // Internal Utils
27 function luxonToArray(datetime) {
28 return [
29 datetime.year,
30 datetime.month - 1,
31 datetime.day,
32 datetime.hour,
33 datetime.minute,
34 datetime.second,
35 datetime.millisecond,
36 ];
37 }
38 function arrayToLuxon(arr, timeZone, locale) {
39 return luxon.DateTime.fromObject({
40 zone: timeZone,
41 locale,
42 year: arr[0],
43 month: arr[1] + 1,
44 day: arr[2],
45 hour: arr[3],
46 minute: arr[4],
47 second: arr[5],
48 millisecond: arr[6],
49 });
50 }
51
52 class LuxonNamedTimeZone extends internal.NamedTimeZoneImpl {
53 offsetForArray(a) {
54 return arrayToLuxon(a, this.timeZoneName).offset;
55 }
56 timestampToArray(ms) {
57 return luxonToArray(luxon.DateTime.fromMillis(ms, {
58 zone: this.timeZoneName,
59 }));
60 }
61 }
62
63 function formatWithCmdStr(cmdStr, arg) {
64 let cmd = parseCmdStr(cmdStr);
65 if (arg.end) {
66 let start = arrayToLuxon(arg.start.array, arg.timeZone, arg.localeCodes[0]);
67 let end = arrayToLuxon(arg.end.array, arg.timeZone, arg.localeCodes[0]);
68 return formatRange(cmd, start.toFormat.bind(start), end.toFormat.bind(end), arg.defaultSeparator);
69 }
70 return arrayToLuxon(arg.date.array, arg.timeZone, arg.localeCodes[0]).toFormat(cmd.whole);
71 }
72 function parseCmdStr(cmdStr) {
73 let parts = cmdStr.match(/^(.*?)\{(.*)\}(.*)$/); // TODO: lookbehinds for escape characters
74 if (parts) {
75 let middle = parseCmdStr(parts[2]);
76 return {
77 head: parts[1],
78 middle,
79 tail: parts[3],
80 whole: parts[1] + middle.whole + parts[3],
81 };
82 }
83 return {
84 head: null,
85 middle: null,
86 tail: null,
87 whole: cmdStr,
88 };
89 }
90 function formatRange(cmd, formatStart, formatEnd, separator) {
91 if (cmd.middle) {
92 let startHead = formatStart(cmd.head);
93 let startMiddle = formatRange(cmd.middle, formatStart, formatEnd, separator);
94 let startTail = formatStart(cmd.tail);
95 let endHead = formatEnd(cmd.head);
96 let endMiddle = formatRange(cmd.middle, formatStart, formatEnd, separator);
97 let endTail = formatEnd(cmd.tail);
98 if (startHead === endHead && startTail === endTail) {
99 return startHead +
100 (startMiddle === endMiddle ? startMiddle : startMiddle + separator + endMiddle) +
101 startTail;
102 }
103 }
104 let startWhole = formatStart(cmd.whole);
105 let endWhole = formatEnd(cmd.whole);
106 if (startWhole === endWhole) {
107 return startWhole;
108 }
109 return startWhole + separator + endWhole;
110 }
111
112 var plugin = core.createPlugin({
113 name: '@fullcalendar/luxon',
114 cmdFormatter: formatWithCmdStr,
115 namedTimeZonedImpl: LuxonNamedTimeZone,
116 });
117
118 core.globalPlugins.push(plugin);
119
120 exports["default"] = plugin;
121 exports.toLuxonDateTime = toLuxonDateTime;
122 exports.toLuxonDuration = toLuxonDuration;
123
124 Object.defineProperty(exports, '__esModule', { value: true });
125
126 return exports;
127
128})({}, FullCalendar, luxon, FullCalendar.Internal);
diff --git a/public/js/fullcalendar/packages/luxon1/index.global.min.js b/public/js/fullcalendar/packages/luxon1/index.global.min.js
new file mode 100644
index 0000000..66a6558
--- /dev/null
+++ b/public/js/fullcalendar/packages/luxon1/index.global.min.js
@@ -0,0 +1,6 @@
1/*!
2FullCalendar Luxon 1 Plugin v6.1.17
3Docs & License: https://fullcalendar.io/docs/luxon1
4(c) 2024 Adam Shaw
5*/
6FullCalendar.Luxon=function(e,t,n,a){"use strict";function l(e,t,a){return n.DateTime.fromObject({zone:t,locale:a,year:e[0],month:e[1]+1,day:e[2],hour:e[3],minute:e[4],second:e[5],millisecond:e[6]})}class r extends a.NamedTimeZoneImpl{offsetForArray(e){return l(e,this.timeZoneName).offset}timestampToArray(e){return[(t=n.DateTime.fromMillis(e,{zone:this.timeZoneName})).year,t.month-1,t.day,t.hour,t.minute,t.second,t.millisecond];var t}}var o=t.createPlugin({name:"@fullcalendar/luxon",cmdFormatter:function(e,t){let n=function e(t){let n=t.match(/^(.*?)\{(.*)\}(.*)$/);if(n){let t=e(n[2]);return{head:n[1],middle:t,tail:n[3],whole:n[1]+t.whole+n[3]}}return{head:null,middle:null,tail:null,whole:t}}(e);if(t.end){let e=l(t.start.array,t.timeZone,t.localeCodes[0]),a=l(t.end.array,t.timeZone,t.localeCodes[0]);return function e(t,n,a,l){if(t.middle){let r=n(t.head),o=e(t.middle,n,a,l),i=n(t.tail),u=a(t.head),d=e(t.middle,n,a,l),m=a(t.tail);if(r===u&&i===m)return r+(o===d?o:o+l+d)+i}let r=n(t.whole),o=a(t.whole);if(r===o)return r;return r+l+o}(n,e.toFormat.bind(e),a.toFormat.bind(a),t.defaultSeparator)}return l(t.date.array,t.timeZone,t.localeCodes[0]).toFormat(n.whole)},namedTimeZonedImpl:r});return t.globalPlugins.push(o),e.default=o,e.toLuxonDateTime=function(e,t){if(!(t instanceof a.CalendarImpl))throw new Error("must supply a CalendarApi instance");let{dateEnv:l}=t.getCurrentData();return n.DateTime.fromJSDate(e,{zone:l.timeZone,locale:l.locale.codes[0]})},e.toLuxonDuration=function(e,t){if(!(t instanceof a.CalendarImpl))throw new Error("must supply a CalendarApi instance");let{dateEnv:l}=t.getCurrentData();return n.Duration.fromObject(Object.assign(Object.assign({},e),{locale:l.locale.codes[0]}))},Object.defineProperty(e,"__esModule",{value:!0}),e}({},FullCalendar,luxon,FullCalendar.Internal); \ No newline at end of file