@fullcalendar/moment 6.0.0-beta.1 → 6.0.0-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
File without changes
@@ -1,58 +1,39 @@
1
- /*!
2
- FullCalendar v6.0.0-beta.1
3
- Docs & License: https://fullcalendar.io/
4
- (c) 2022 Adam Shaw
5
- */
6
1
  'use strict';
7
2
 
8
3
  Object.defineProperty(exports, '__esModule', { value: true });
9
4
 
5
+ var index_cjs = require('@fullcalendar/core/index.cjs');
10
6
  var moment = require('moment');
11
- var common = require('@fullcalendar/common');
7
+ var internal_cjs = require('@fullcalendar/core/internal.cjs');
12
8
 
13
9
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
14
10
 
15
11
  var moment__default = /*#__PURE__*/_interopDefaultLegacy(moment);
16
12
 
17
13
  function toMoment(date, calendar) {
18
- if (!(calendar instanceof common.CalendarApi)) {
14
+ if (!(calendar instanceof internal_cjs.CalendarImpl)) {
19
15
  throw new Error('must supply a CalendarApi instance');
20
16
  }
21
17
  let { dateEnv } = calendar.getCurrentData();
22
18
  return convertToMoment(date, dateEnv.timeZone, null, dateEnv.locale.codes[0]);
23
19
  }
24
20
  function toMomentDuration(fcDuration) {
25
- return moment__default['default'].duration(fcDuration); // moment accepts all the props that fc.Duration already has!
26
- }
27
- function formatWithCmdStr(cmdStr, arg) {
28
- let cmd = parseCmdStr(cmdStr);
29
- if (arg.end) {
30
- let startMom = convertToMoment(arg.start.array, arg.timeZone, arg.start.timeZoneOffset, arg.localeCodes[0]);
31
- let endMom = convertToMoment(arg.end.array, arg.timeZone, arg.end.timeZoneOffset, arg.localeCodes[0]);
32
- return formatRange(cmd, createMomentFormatFunc(startMom), createMomentFormatFunc(endMom), arg.defaultSeparator);
33
- }
34
- return convertToMoment(arg.date.array, arg.timeZone, arg.date.timeZoneOffset, arg.localeCodes[0]).format(cmd.whole); // TODO: test for this
35
- }
36
- var main = common.createPlugin({
37
- cmdFormatter: formatWithCmdStr,
38
- });
39
- function createMomentFormatFunc(mom) {
40
- return (cmdStr) => (cmdStr ? mom.format(cmdStr) : '' // because calling with blank string results in ISO8601 :(
41
- );
21
+ return moment__default["default"].duration(fcDuration); // moment accepts all the props that fc.Duration already has!
42
22
  }
23
+ // Internal Utils
43
24
  function convertToMoment(input, timeZone, timeZoneOffset, locale) {
44
25
  let mom;
45
26
  if (timeZone === 'local') {
46
- mom = moment__default['default'](input);
27
+ mom = moment__default["default"](input);
47
28
  }
48
29
  else if (timeZone === 'UTC') {
49
- mom = moment__default['default'].utc(input);
30
+ mom = moment__default["default"].utc(input);
50
31
  }
51
- else if (moment__default['default'].tz) {
52
- mom = moment__default['default'].tz(input, timeZone);
32
+ else if (moment__default["default"].tz) {
33
+ mom = moment__default["default"].tz(input, timeZone);
53
34
  }
54
35
  else {
55
- mom = moment__default['default'].utc(input);
36
+ mom = moment__default["default"].utc(input);
56
37
  if (timeZoneOffset != null) {
57
38
  mom.utcOffset(timeZoneOffset);
58
39
  }
@@ -60,6 +41,20 @@ function convertToMoment(input, timeZone, timeZoneOffset, locale) {
60
41
  mom.locale(locale);
61
42
  return mom;
62
43
  }
44
+
45
+ function formatWithCmdStr(cmdStr, arg) {
46
+ let cmd = parseCmdStr(cmdStr);
47
+ if (arg.end) {
48
+ let startMom = convertToMoment(arg.start.array, arg.timeZone, arg.start.timeZoneOffset, arg.localeCodes[0]);
49
+ let endMom = convertToMoment(arg.end.array, arg.timeZone, arg.end.timeZoneOffset, arg.localeCodes[0]);
50
+ return formatRange(cmd, createMomentFormatFunc(startMom), createMomentFormatFunc(endMom), arg.defaultSeparator);
51
+ }
52
+ return convertToMoment(arg.date.array, arg.timeZone, arg.date.timeZoneOffset, arg.localeCodes[0]).format(cmd.whole); // TODO: test for this
53
+ }
54
+ function createMomentFormatFunc(mom) {
55
+ return (cmdStr) => (cmdStr ? mom.format(cmdStr) : '' // because calling with blank string results in ISO8601 :(
56
+ );
57
+ }
63
58
  function parseCmdStr(cmdStr) {
64
59
  let parts = cmdStr.match(/^(.*?)\{(.*)\}(.*)$/); // TODO: lookbehinds for escape characters
65
60
  if (parts) {
@@ -100,6 +95,11 @@ function formatRange(cmd, formatStart, formatEnd, separator) {
100
95
  return startWhole + separator + endWhole;
101
96
  }
102
97
 
103
- exports.default = main;
98
+ var index = index_cjs.createPlugin({
99
+ name: '@fullcalendar/moment',
100
+ cmdFormatter: formatWithCmdStr,
101
+ });
102
+
103
+ exports["default"] = index;
104
104
  exports.toMoment = toMoment;
105
105
  exports.toMomentDuration = toMomentDuration;
package/index.d.ts ADDED
@@ -0,0 +1,10 @@
1
+ import { CalendarApi, Duration, PluginDef } from '@fullcalendar/core';
2
+ import moment from 'moment';
3
+
4
+ declare function toMoment(date: Date, calendar: CalendarApi): moment.Moment;
5
+ declare function toMomentDuration(fcDuration: Duration): moment.Duration;
6
+
7
+ declare const _default: PluginDef;
8
+ //# sourceMappingURL=index.d.ts.map
9
+
10
+ export { _default as default, toMoment, toMomentDuration };
@@ -1,54 +1,39 @@
1
1
  /*!
2
- FullCalendar v6.0.0-beta.1
2
+ FullCalendar Moment Plugin v6.0.0-beta.3
3
3
  Docs & License: https://fullcalendar.io/
4
4
  (c) 2022 Adam Shaw
5
5
  */
6
- var FullCalendarMoment = (function (exports, common, moment) {
6
+ FullCalendar.Moment = (function (exports, internal, core, moment) {
7
7
  'use strict';
8
8
 
9
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
9
+ function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
10
10
 
11
- var moment__default = /*#__PURE__*/_interopDefaultLegacy(moment);
11
+ var moment__default = /*#__PURE__*/_interopDefault(moment);
12
12
 
13
13
  function toMoment(date, calendar) {
14
- if (!(calendar instanceof common.CalendarApi)) {
14
+ if (!(calendar instanceof internal.CalendarImpl)) {
15
15
  throw new Error('must supply a CalendarApi instance');
16
16
  }
17
17
  let { dateEnv } = calendar.getCurrentData();
18
18
  return convertToMoment(date, dateEnv.timeZone, null, dateEnv.locale.codes[0]);
19
19
  }
20
20
  function toMomentDuration(fcDuration) {
21
- return moment__default['default'].duration(fcDuration); // moment accepts all the props that fc.Duration already has!
22
- }
23
- function formatWithCmdStr(cmdStr, arg) {
24
- let cmd = parseCmdStr(cmdStr);
25
- if (arg.end) {
26
- let startMom = convertToMoment(arg.start.array, arg.timeZone, arg.start.timeZoneOffset, arg.localeCodes[0]);
27
- let endMom = convertToMoment(arg.end.array, arg.timeZone, arg.end.timeZoneOffset, arg.localeCodes[0]);
28
- return formatRange(cmd, createMomentFormatFunc(startMom), createMomentFormatFunc(endMom), arg.defaultSeparator);
29
- }
30
- return convertToMoment(arg.date.array, arg.timeZone, arg.date.timeZoneOffset, arg.localeCodes[0]).format(cmd.whole); // TODO: test for this
31
- }
32
- var plugin = common.createPlugin({
33
- cmdFormatter: formatWithCmdStr,
34
- });
35
- function createMomentFormatFunc(mom) {
36
- return (cmdStr) => (cmdStr ? mom.format(cmdStr) : '' // because calling with blank string results in ISO8601 :(
37
- );
21
+ return moment__default["default"].duration(fcDuration); // moment accepts all the props that fc.Duration already has!
38
22
  }
23
+ // Internal Utils
39
24
  function convertToMoment(input, timeZone, timeZoneOffset, locale) {
40
25
  let mom;
41
26
  if (timeZone === 'local') {
42
- mom = moment__default['default'](input);
27
+ mom = moment__default["default"](input);
43
28
  }
44
29
  else if (timeZone === 'UTC') {
45
- mom = moment__default['default'].utc(input);
30
+ mom = moment__default["default"].utc(input);
46
31
  }
47
- else if (moment__default['default'].tz) {
48
- mom = moment__default['default'].tz(input, timeZone);
32
+ else if (moment__default["default"].tz) {
33
+ mom = moment__default["default"].tz(input, timeZone);
49
34
  }
50
35
  else {
51
- mom = moment__default['default'].utc(input);
36
+ mom = moment__default["default"].utc(input);
52
37
  if (timeZoneOffset != null) {
53
38
  mom.utcOffset(timeZoneOffset);
54
39
  }
@@ -56,6 +41,20 @@ var FullCalendarMoment = (function (exports, common, moment) {
56
41
  mom.locale(locale);
57
42
  return mom;
58
43
  }
44
+
45
+ function formatWithCmdStr(cmdStr, arg) {
46
+ let cmd = parseCmdStr(cmdStr);
47
+ if (arg.end) {
48
+ let startMom = convertToMoment(arg.start.array, arg.timeZone, arg.start.timeZoneOffset, arg.localeCodes[0]);
49
+ let endMom = convertToMoment(arg.end.array, arg.timeZone, arg.end.timeZoneOffset, arg.localeCodes[0]);
50
+ return formatRange(cmd, createMomentFormatFunc(startMom), createMomentFormatFunc(endMom), arg.defaultSeparator);
51
+ }
52
+ return convertToMoment(arg.date.array, arg.timeZone, arg.date.timeZoneOffset, arg.localeCodes[0]).format(cmd.whole); // TODO: test for this
53
+ }
54
+ function createMomentFormatFunc(mom) {
55
+ return (cmdStr) => (cmdStr ? mom.format(cmdStr) : '' // because calling with blank string results in ISO8601 :(
56
+ );
57
+ }
59
58
  function parseCmdStr(cmdStr) {
60
59
  let parts = cmdStr.match(/^(.*?)\{(.*)\}(.*)$/); // TODO: lookbehinds for escape characters
61
60
  if (parts) {
@@ -96,9 +95,14 @@ var FullCalendarMoment = (function (exports, common, moment) {
96
95
  return startWhole + separator + endWhole;
97
96
  }
98
97
 
99
- common.globalPlugins.push(plugin);
98
+ var plugin = core.createPlugin({
99
+ name: '@fullcalendar/moment',
100
+ cmdFormatter: formatWithCmdStr,
101
+ });
102
+
103
+ internal.globalPlugins.push(plugin);
100
104
 
101
- exports.default = plugin;
105
+ exports["default"] = plugin;
102
106
  exports.toMoment = toMoment;
103
107
  exports.toMomentDuration = toMomentDuration;
104
108
 
@@ -106,4 +110,4 @@ var FullCalendarMoment = (function (exports, common, moment) {
106
110
 
107
111
  return exports;
108
112
 
109
- }({}, FullCalendar, moment));
113
+ })({}, FullCalendar.Internal, FullCalendar, moment);
@@ -0,0 +1,6 @@
1
+ /*!
2
+ FullCalendar Moment Plugin v6.0.0-beta.3
3
+ Docs & License: https://fullcalendar.io/
4
+ (c) 2022 Adam Shaw
5
+ */
6
+ FullCalendar.Moment=function(e,t,l,n){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}var r=a(n);function u(e,t,l,n){let a;return"local"===t?a=r.default(e):"UTC"===t?a=r.default.utc(e):r.default.tz?a=r.default.tz(e,t):(a=r.default.utc(e),null!=l&&a.utcOffset(l)),a.locale(n),a}function o(e){return t=>t?e.format(t):""}var d=l.createPlugin({name:"@fullcalendar/moment",cmdFormatter:function(e,t){let l=function e(t){let l=t.match(/^(.*?)\{(.*)\}(.*)$/);if(l){let t=e(l[2]);return{head:l[1],middle:t,tail:l[3],whole:l[1]+t.whole+l[3]}}return{head:null,middle:null,tail:null,whole:t}}(e);if(t.end){let e=u(t.start.array,t.timeZone,t.start.timeZoneOffset,t.localeCodes[0]),n=u(t.end.array,t.timeZone,t.end.timeZoneOffset,t.localeCodes[0]);return function e(t,l,n,a){if(t.middle){let r=l(t.head),u=e(t.middle,l,n,a),o=l(t.tail),d=n(t.head),i=e(t.middle,l,n,a),f=n(t.tail);if(r===d&&o===f)return r+(u===i?u:u+a+i)+o}let r=l(t.whole),u=n(t.whole);if(r===u)return r;return r+a+u}(l,o(e),o(n),t.defaultSeparator)}return u(t.date.array,t.timeZone,t.date.timeZoneOffset,t.localeCodes[0]).format(l.whole)}});return t.globalPlugins.push(d),e.default=d,e.toMoment=function(e,l){if(!(l instanceof t.CalendarImpl))throw new Error("must supply a CalendarApi instance");let{dateEnv:n}=l.getCurrentData();return u(e,n.timeZone,null,n.locale.codes[0])},e.toMomentDuration=function(e){return r.default.duration(e)},Object.defineProperty(e,"__esModule",{value:!0}),e}({},FullCalendar.Internal,FullCalendar,moment);
@@ -1,13 +1,9 @@
1
- /*!
2
- FullCalendar v6.0.0-beta.1
3
- Docs & License: https://fullcalendar.io/
4
- (c) 2022 Adam Shaw
5
- */
1
+ import { createPlugin } from '@fullcalendar/core/index.js';
6
2
  import moment from 'moment';
7
- import { createPlugin, CalendarApi } from '@fullcalendar/common';
3
+ import { CalendarImpl } from '@fullcalendar/core/internal.js';
8
4
 
9
5
  function toMoment(date, calendar) {
10
- if (!(calendar instanceof CalendarApi)) {
6
+ if (!(calendar instanceof CalendarImpl)) {
11
7
  throw new Error('must supply a CalendarApi instance');
12
8
  }
13
9
  let { dateEnv } = calendar.getCurrentData();
@@ -16,22 +12,7 @@ function toMoment(date, calendar) {
16
12
  function toMomentDuration(fcDuration) {
17
13
  return moment.duration(fcDuration); // moment accepts all the props that fc.Duration already has!
18
14
  }
19
- function formatWithCmdStr(cmdStr, arg) {
20
- let cmd = parseCmdStr(cmdStr);
21
- if (arg.end) {
22
- let startMom = convertToMoment(arg.start.array, arg.timeZone, arg.start.timeZoneOffset, arg.localeCodes[0]);
23
- let endMom = convertToMoment(arg.end.array, arg.timeZone, arg.end.timeZoneOffset, arg.localeCodes[0]);
24
- return formatRange(cmd, createMomentFormatFunc(startMom), createMomentFormatFunc(endMom), arg.defaultSeparator);
25
- }
26
- return convertToMoment(arg.date.array, arg.timeZone, arg.date.timeZoneOffset, arg.localeCodes[0]).format(cmd.whole); // TODO: test for this
27
- }
28
- var main = createPlugin({
29
- cmdFormatter: formatWithCmdStr,
30
- });
31
- function createMomentFormatFunc(mom) {
32
- return (cmdStr) => (cmdStr ? mom.format(cmdStr) : '' // because calling with blank string results in ISO8601 :(
33
- );
34
- }
15
+ // Internal Utils
35
16
  function convertToMoment(input, timeZone, timeZoneOffset, locale) {
36
17
  let mom;
37
18
  if (timeZone === 'local') {
@@ -52,6 +33,20 @@ function convertToMoment(input, timeZone, timeZoneOffset, locale) {
52
33
  mom.locale(locale);
53
34
  return mom;
54
35
  }
36
+
37
+ function formatWithCmdStr(cmdStr, arg) {
38
+ let cmd = parseCmdStr(cmdStr);
39
+ if (arg.end) {
40
+ let startMom = convertToMoment(arg.start.array, arg.timeZone, arg.start.timeZoneOffset, arg.localeCodes[0]);
41
+ let endMom = convertToMoment(arg.end.array, arg.timeZone, arg.end.timeZoneOffset, arg.localeCodes[0]);
42
+ return formatRange(cmd, createMomentFormatFunc(startMom), createMomentFormatFunc(endMom), arg.defaultSeparator);
43
+ }
44
+ return convertToMoment(arg.date.array, arg.timeZone, arg.date.timeZoneOffset, arg.localeCodes[0]).format(cmd.whole); // TODO: test for this
45
+ }
46
+ function createMomentFormatFunc(mom) {
47
+ return (cmdStr) => (cmdStr ? mom.format(cmdStr) : '' // because calling with blank string results in ISO8601 :(
48
+ );
49
+ }
55
50
  function parseCmdStr(cmdStr) {
56
51
  let parts = cmdStr.match(/^(.*?)\{(.*)\}(.*)$/); // TODO: lookbehinds for escape characters
57
52
  if (parts) {
@@ -92,6 +87,9 @@ function formatRange(cmd, formatStart, formatEnd, separator) {
92
87
  return startWhole + separator + endWhole;
93
88
  }
94
89
 
95
- export default main;
96
- export { toMoment, toMomentDuration };
97
- //# sourceMappingURL=main.js.map
90
+ var index = createPlugin({
91
+ name: '@fullcalendar/moment',
92
+ cmdFormatter: formatWithCmdStr,
93
+ });
94
+
95
+ export { index as default, toMoment, toMomentDuration };
package/package.json CHANGED
@@ -1,36 +1,48 @@
1
1
  {
2
2
  "name": "@fullcalendar/moment",
3
- "version": "6.0.0-beta.1",
4
- "title": "FullCalendar Moment Plugin",
5
- "description": "A connector to the MomentJS date library",
6
- "docs": "https://fullcalendar.io/docs/moment-plugin",
7
- "dependencies": {
8
- "@fullcalendar/common": "6.0.0-beta.1",
9
- "tslib": "^2.1.0"
10
- },
11
- "peerDependencies": {
12
- "moment": "^2.29.1"
13
- },
14
- "devDependencies": {
15
- "@fullcalendar/core-preact": "6.0.0-beta.1",
16
- "moment": "^2.29.1"
17
- },
18
- "main": "main.cjs.js",
19
- "module": "main.js",
20
- "types": "main.d.ts",
21
- "jsdelivr": "main.global.min.js",
22
- "browserGlobal": "FullCalendarMoment",
3
+ "version": "6.0.0-beta.3",
4
+ "keywords": [
5
+ "calendar",
6
+ "event",
7
+ "full-sized"
8
+ ],
23
9
  "homepage": "https://fullcalendar.io/",
10
+ "docs": "https://fullcalendar.io/docs/moment-plugin",
24
11
  "bugs": "https://fullcalendar.io/reporting-bugs",
25
12
  "repository": {
26
13
  "type": "git",
27
14
  "url": "https://github.com/fullcalendar/fullcalendar.git",
28
- "homepage": "https://github.com/fullcalendar/fullcalendar"
15
+ "homepage": "https://github.com/fullcalendar/fullcalendar",
16
+ "directory": "packages/moment"
29
17
  },
30
18
  "license": "MIT",
31
19
  "author": {
32
20
  "name": "Adam Shaw",
33
21
  "email": "arshaw@arshaw.com",
34
22
  "url": "http://arshaw.com/"
35
- }
23
+ },
24
+ "copyright": "2022 Adam Shaw",
25
+ "type": "module",
26
+ "title": "FullCalendar Moment Plugin",
27
+ "description": "A connector to the MomentJS date library",
28
+ "peerDependencies": {
29
+ "@fullcalendar/core": "6.0.0-beta.3",
30
+ "moment": "^2.29.1"
31
+ },
32
+ "main": "./index.cjs",
33
+ "module": "./index.js",
34
+ "types": "./index.d.ts",
35
+ "unpkg": "./index.global.min.js",
36
+ "jsdelvr": "./index.global.min.js",
37
+ "exports": {
38
+ "./package.json": "./package.json",
39
+ "./index.cjs": "./index.cjs",
40
+ "./index.js": "./index.js",
41
+ ".": {
42
+ "types": "./index.d.ts",
43
+ "require": "./index.cjs",
44
+ "import": "./index.js"
45
+ }
46
+ },
47
+ "sideEffects": false
36
48
  }
package/main.d.ts DELETED
@@ -1,10 +0,0 @@
1
- import * as _fullcalendar_common from '@fullcalendar/common';
2
- import { CalendarApi, Duration } from '@fullcalendar/common';
3
- import moment from 'moment';
4
-
5
- declare function toMoment(date: Date, calendar: CalendarApi): moment.Moment;
6
- declare function toMomentDuration(fcDuration: Duration): moment.Duration;
7
- declare const _default: _fullcalendar_common.PluginDef;
8
-
9
- export default _default;
10
- export { toMoment, toMomentDuration };
@@ -1,6 +0,0 @@
1
- /*!
2
- FullCalendar v6.0.0-beta.1
3
- Docs & License: https://fullcalendar.io/
4
- (c) 2022 Adam Shaw
5
- */
6
- var FullCalendarMoment=function(e,t,l){"use strict";function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=n(l);var r=t.createPlugin({cmdFormatter:function(e,t){let l=d(e);if(t.end){let e=u(t.start.array,t.timeZone,t.start.timeZoneOffset,t.localeCodes[0]),n=u(t.end.array,t.timeZone,t.end.timeZoneOffset,t.localeCodes[0]);return i(l,o(e),o(n),t.defaultSeparator)}return u(t.date.array,t.timeZone,t.date.timeZoneOffset,t.localeCodes[0]).format(l.whole)}});function o(e){return t=>t?e.format(t):""}function u(e,t,l,n){let r;return"local"===t?r=a.default(e):"UTC"===t?r=a.default.utc(e):a.default.tz?r=a.default.tz(e,t):(r=a.default.utc(e),null!=l&&r.utcOffset(l)),r.locale(n),r}function d(e){let t=e.match(/^(.*?)\{(.*)\}(.*)$/);if(t){let e=d(t[2]);return{head:t[1],middle:e,tail:t[3],whole:t[1]+e.whole+t[3]}}return{head:null,middle:null,tail:null,whole:e}}function i(e,t,l,n){if(e.middle){let a=t(e.head),r=i(e.middle,t,l,n),o=t(e.tail),u=l(e.head),d=i(e.middle,t,l,n),f=l(e.tail);if(a===u&&o===f)return a+(r===d?r:r+n+d)+o}let a=t(e.whole),r=l(e.whole);return a===r?a:a+n+r}return t.globalPlugins.push(r),e.default=r,e.toMoment=function(e,l){if(!(l instanceof t.CalendarApi))throw new Error("must supply a CalendarApi instance");let{dateEnv:n}=l.getCurrentData();return u(e,n.timeZone,null,n.locale.codes[0])},e.toMomentDuration=function(e){return a.default.duration(e)},Object.defineProperty(e,"__esModule",{value:!0}),e}({},FullCalendar,moment);
package/main.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"main.js","sources":["src/main.ts"],"sourcesContent":["import moment from 'moment'\nimport { Duration, VerboseFormattingArg, createPlugin, CalendarApi } from '@fullcalendar/common'\n\nexport function toMoment(date: Date, calendar: CalendarApi): moment.Moment {\n if (!(calendar instanceof CalendarApi)) {\n throw new Error('must supply a CalendarApi instance')\n }\n\n let { dateEnv } = calendar.getCurrentData()\n\n return convertToMoment(\n date,\n dateEnv.timeZone,\n null,\n dateEnv.locale.codes[0],\n )\n}\n\nexport function toMomentDuration(fcDuration: Duration): moment.Duration {\n return moment.duration(fcDuration) // moment accepts all the props that fc.Duration already has!\n}\n\nfunction formatWithCmdStr(cmdStr: string, arg: VerboseFormattingArg) {\n let cmd = parseCmdStr(cmdStr)\n\n if (arg.end) {\n let startMom = convertToMoment(\n arg.start.array,\n arg.timeZone,\n arg.start.timeZoneOffset,\n arg.localeCodes[0],\n )\n let endMom = convertToMoment(\n arg.end.array,\n arg.timeZone,\n arg.end.timeZoneOffset,\n arg.localeCodes[0],\n )\n return formatRange(\n cmd,\n createMomentFormatFunc(startMom),\n createMomentFormatFunc(endMom),\n arg.defaultSeparator,\n )\n }\n\n return convertToMoment(\n arg.date.array,\n arg.timeZone,\n arg.date.timeZoneOffset,\n arg.localeCodes[0],\n ).format(cmd.whole) // TODO: test for this\n}\n\nexport default createPlugin({\n cmdFormatter: formatWithCmdStr,\n})\n\nfunction createMomentFormatFunc(mom: moment.Moment) {\n return (cmdStr) => (\n cmdStr ? mom.format(cmdStr) : '' // because calling with blank string results in ISO8601 :(\n )\n}\n\nfunction convertToMoment(input: any, timeZone: string, timeZoneOffset: number | null, locale: string): moment.Moment {\n let mom: moment.Moment\n\n if (timeZone === 'local') {\n mom = moment(input)\n } else if (timeZone === 'UTC') {\n mom = moment.utc(input)\n } else if ((moment as any).tz) {\n mom = (moment as any).tz(input, timeZone)\n } else {\n mom = moment.utc(input)\n\n if (timeZoneOffset != null) {\n mom.utcOffset(timeZoneOffset)\n }\n }\n\n mom.locale(locale)\n\n return mom\n}\n\n/* Range Formatting (duplicate code as other date plugins)\n----------------------------------------------------------------------------------------------------*/\n\ninterface CmdParts {\n head: string | null\n middle: CmdParts | null\n tail: string | null\n whole: string\n}\n\nfunction parseCmdStr(cmdStr: string): CmdParts {\n let parts = cmdStr.match(/^(.*?)\\{(.*)\\}(.*)$/) // TODO: lookbehinds for escape characters\n\n if (parts) {\n let middle = parseCmdStr(parts[2])\n\n return {\n head: parts[1],\n middle,\n tail: parts[3],\n whole: parts[1] + middle.whole + parts[3],\n }\n }\n\n return {\n head: null,\n middle: null,\n tail: null,\n whole: cmdStr,\n }\n}\n\nfunction formatRange(\n cmd: CmdParts,\n formatStart: (cmdStr: string) => string,\n formatEnd: (cmdStr: string) => string,\n separator: string,\n): string {\n if (cmd.middle) {\n let startHead = formatStart(cmd.head)\n let startMiddle = formatRange(cmd.middle, formatStart, formatEnd, separator)\n let startTail = formatStart(cmd.tail)\n\n let endHead = formatEnd(cmd.head)\n let endMiddle = formatRange(cmd.middle, formatStart, formatEnd, separator)\n let endTail = formatEnd(cmd.tail)\n\n if (startHead === endHead && startTail === endTail) {\n return startHead +\n (startMiddle === endMiddle ? startMiddle : startMiddle + separator + endMiddle) +\n startTail\n }\n }\n\n let startWhole = formatStart(cmd.whole)\n let endWhole = formatEnd(cmd.whole)\n\n if (startWhole === endWhole) {\n return startWhole\n }\n\n return startWhole + separator + endWhole\n}\n"],"names":[],"mappings":"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"}