1 | ;
|
2 |
|
3 | var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4 |
|
5 | Object.defineProperty(exports, "__esModule", {
|
6 | value: true
|
7 | });
|
8 | exports["default"] = void 0;
|
9 |
|
10 | var _moment = _interopRequireDefault(require("moment"));
|
11 |
|
12 | var _isMobileBrowser = _interopRequireDefault(require("@lskjs/utils/isMobileBrowser"));
|
13 |
|
14 | var _toQs = _interopRequireDefault(require("@lskjs/utils/toQs"));
|
15 |
|
16 | var _isCrappyIEBrowser = _interopRequireDefault(require("@lskjs/utils/isCrappyIEBrowser"));
|
17 |
|
18 | var getRandomId = function getRandomId() {
|
19 | return "".concat(new Date().getTime().toString(), "_").concat(Math.floor(Math.random() * 1000).toString());
|
20 | };
|
21 |
|
22 | var formatTime = function formatTime(date) {
|
23 | var formattedDate = _moment["default"].utc(date).format('YYYYMMDDTHHmmssZ');
|
24 |
|
25 | return formattedDate.replace('+00:00', 'Z');
|
26 | };
|
27 |
|
28 | var calculateDuration = function calculateDuration(startTime, finishTime) {
|
29 | // snag parameters and format properly in UTC
|
30 | var start = _moment["default"].utc(startTime).format('DD/MM/YYYY HH:mm:ss');
|
31 |
|
32 | var end = _moment["default"].utc(finishTime).format('DD/MM/YYYY HH:mm:ss'); // calculate the difference in milliseconds between the start and end times
|
33 |
|
34 |
|
35 | var difference = (0, _moment["default"])(end, 'DD/MM/YYYY HH:mm:ss').diff((0, _moment["default"])(start, 'DD/MM/YYYY HH:mm:ss')); // convert difference from above to a proper momentJs duration object
|
36 |
|
37 | var duration = _moment["default"].duration(difference);
|
38 |
|
39 | return Math.floor(duration.asHours()) + _moment["default"].utc(difference).format(':mm');
|
40 | };
|
41 |
|
42 | var _default = function _default(event, type) {
|
43 | if (type === 'google') {
|
44 | return "https://calendar.google.com/calendar/render?".concat((0, _toQs["default"])({
|
45 | action: 'TEMPLATE',
|
46 | dates: "".concat(formatTime(event.start), "/").concat(formatTime(event.finish)),
|
47 | location: encodeURIComponent(event.location),
|
48 | text: encodeURIComponent(event.title),
|
49 | details: encodeURIComponent(event.description)
|
50 | }));
|
51 | }
|
52 |
|
53 | if (type === 'yahoo') {
|
54 | // yahoo doesn't utilize finish so we need to calulate duration
|
55 | return "https://calendar.yahoo.com?".concat((0, _toQs["default"])({
|
56 | v: 60,
|
57 | view: 'd',
|
58 | type: 20,
|
59 | title: encodeURIComponent(event.title),
|
60 | st: formatTime(event.start),
|
61 | dur: calculateDuration(event.start, event.finish),
|
62 | desc: encodeURIComponent(event.description),
|
63 | in_loc: encodeURIComponent(event.location)
|
64 | }));
|
65 | }
|
66 |
|
67 | if (type === 'outlookcom') {
|
68 | return "https://outlook.live.com/owa/?".concat((0, _toQs["default"])({
|
69 | rru: 'addevent',
|
70 | startdt: formatTime(event.start),
|
71 | enddt: formatTime(event.finish),
|
72 | subject: encodeURIComponent(event.title),
|
73 | location: encodeURIComponent(event.location),
|
74 | body: encodeURIComponent(event.description),
|
75 | allday: 'false',
|
76 | uid: getRandomId(),
|
77 | path: '/calendar/view/Month'
|
78 | }));
|
79 | }
|
80 |
|
81 | var ics = ['BEGIN:VCALENDAR', 'VERSION:2.0', 'BEGIN:VEVENT', "URL:".concat(event.url), "DTSTART:".concat(formatTime(event.start)), "DTEND:".concat(formatTime(event.finish)), "SUMMARY:".concat(event.title), "DESCRIPTION:".concat(event.description), "LOCATION:".concat(event.location), 'END:VEVENT', 'END:VCALENDAR'];
|
82 |
|
83 | if ((0, _isMobileBrowser["default"])() && !(0, _isCrappyIEBrowser["default"])()) {
|
84 | return encodeURI("data:text/calendar;charset=utf8,".concat(ics.join('\n')));
|
85 | }
|
86 |
|
87 | return "".concat(ics.join('\n'));
|
88 | };
|
89 |
|
90 | exports["default"] = _default;
|
91 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jcmVhdGVDYWxlbmRhclVybC5qcyJdLCJuYW1lcyI6WyJnZXRSYW5kb21JZCIsIkRhdGUiLCJnZXRUaW1lIiwidG9TdHJpbmciLCJNYXRoIiwiZmxvb3IiLCJyYW5kb20iLCJmb3JtYXRUaW1lIiwiZGF0ZSIsImZvcm1hdHRlZERhdGUiLCJtb21lbnQiLCJ1dGMiLCJmb3JtYXQiLCJyZXBsYWNlIiwiY2FsY3VsYXRlRHVyYXRpb24iLCJzdGFydFRpbWUiLCJmaW5pc2hUaW1lIiwic3RhcnQiLCJlbmQiLCJkaWZmZXJlbmNlIiwiZGlmZiIsImR1cmF0aW9uIiwiYXNIb3VycyIsImV2ZW50IiwidHlwZSIsImFjdGlvbiIsImRhdGVzIiwiZmluaXNoIiwibG9jYXRpb24iLCJlbmNvZGVVUklDb21wb25lbnQiLCJ0ZXh0IiwidGl0bGUiLCJkZXRhaWxzIiwiZGVzY3JpcHRpb24iLCJ2IiwidmlldyIsInN0IiwiZHVyIiwiZGVzYyIsImluX2xvYyIsInJydSIsInN0YXJ0ZHQiLCJlbmRkdCIsInN1YmplY3QiLCJib2R5IiwiYWxsZGF5IiwidWlkIiwicGF0aCIsImljcyIsInVybCIsImVuY29kZVVSSSIsImpvaW4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLElBQU1BLFdBQVcsR0FBRyxTQUFkQSxXQUFjLEdBQU07QUFDeEIsbUJBQVUsSUFBSUMsSUFBSixHQUFXQyxPQUFYLEdBQXFCQyxRQUFyQixFQUFWLGNBQTZDQyxJQUFJLENBQUNDLEtBQUwsQ0FBV0QsSUFBSSxDQUFDRSxNQUFMLEtBQWdCLElBQTNCLEVBQWlDSCxRQUFqQyxFQUE3QztBQUNELENBRkQ7O0FBSUEsSUFBTUksVUFBVSxHQUFHLFNBQWJBLFVBQWEsQ0FBQ0MsSUFBRCxFQUFVO0FBQzNCLE1BQU1DLGFBQWEsR0FBR0MsbUJBQU9DLEdBQVAsQ0FBV0gsSUFBWCxFQUFpQkksTUFBakIsQ0FBd0Isa0JBQXhCLENBQXRCOztBQUNBLFNBQU9ILGFBQWEsQ0FBQ0ksT0FBZCxDQUFzQixRQUF0QixFQUFnQyxHQUFoQyxDQUFQO0FBQ0QsQ0FIRDs7QUFLQSxJQUFNQyxpQkFBaUIsR0FBRyxTQUFwQkEsaUJBQW9CLENBQUNDLFNBQUQsRUFBWUMsVUFBWixFQUEyQjtBQUNuRDtBQUNBLE1BQU1DLEtBQUssR0FBR1AsbUJBQU9DLEdBQVAsQ0FBV0ksU0FBWCxFQUFzQkgsTUFBdEIsQ0FBNkIscUJBQTdCLENBQWQ7O0FBQ0EsTUFBTU0sR0FBRyxHQUFHUixtQkFBT0MsR0FBUCxDQUFXSyxVQUFYLEVBQXVCSixNQUF2QixDQUE4QixxQkFBOUIsQ0FBWixDQUhtRCxDQUtuRDs7O0FBQ0EsTUFBTU8sVUFBVSxHQUFHLHdCQUFPRCxHQUFQLEVBQVkscUJBQVosRUFBbUNFLElBQW5DLENBQXdDLHdCQUFPSCxLQUFQLEVBQWMscUJBQWQsQ0FBeEMsQ0FBbkIsQ0FObUQsQ0FRbkQ7O0FBQ0EsTUFBTUksUUFBUSxHQUFHWCxtQkFBT1csUUFBUCxDQUFnQkYsVUFBaEIsQ0FBakI7O0FBRUEsU0FBT2YsSUFBSSxDQUFDQyxLQUFMLENBQVdnQixRQUFRLENBQUNDLE9BQVQsRUFBWCxJQUFpQ1osbUJBQU9DLEdBQVAsQ0FBV1EsVUFBWCxFQUF1QlAsTUFBdkIsQ0FBOEIsS0FBOUIsQ0FBeEM7QUFDRCxDQVpEOztlQWNlLGtCQUFDVyxLQUFELEVBQVFDLElBQVIsRUFBaUI7QUFDOUIsTUFBSUEsSUFBSSxLQUFLLFFBQWIsRUFBdUI7QUFDckIsaUVBQXNELHNCQUFLO0FBQ3pEQyxNQUFBQSxNQUFNLEVBQUUsVUFEaUQ7QUFFekRDLE1BQUFBLEtBQUssWUFBS25CLFVBQVUsQ0FBQ2dCLEtBQUssQ0FBQ04sS0FBUCxDQUFmLGNBQWdDVixVQUFVLENBQUNnQixLQUFLLENBQUNJLE1BQVAsQ0FBMUMsQ0FGb0Q7QUFHekRDLE1BQUFBLFFBQVEsRUFBRUMsa0JBQWtCLENBQUNOLEtBQUssQ0FBQ0ssUUFBUCxDQUg2QjtBQUl6REUsTUFBQUEsSUFBSSxFQUFFRCxrQkFBa0IsQ0FBQ04sS0FBSyxDQUFDUSxLQUFQLENBSmlDO0FBS3pEQyxNQUFBQSxPQUFPLEVBQUVILGtCQUFrQixDQUFDTixLQUFLLENBQUNVLFdBQVA7QUFMOEIsS0FBTCxDQUF0RDtBQU9EOztBQUNELE1BQUlULElBQUksS0FBSyxPQUFiLEVBQXNCO0FBQ3BCO0FBQ0EsZ0RBQXFDLHNCQUFLO0FBQ3hDVSxNQUFBQSxDQUFDLEVBQUUsRUFEcUM7QUFFeENDLE1BQUFBLElBQUksRUFBRSxHQUZrQztBQUd4Q1gsTUFBQUEsSUFBSSxFQUFFLEVBSGtDO0FBSXhDTyxNQUFBQSxLQUFLLEVBQUVGLGtCQUFrQixDQUFDTixLQUFLLENBQUNRLEtBQVAsQ0FKZTtBQUt4Q0ssTUFBQUEsRUFBRSxFQUFFN0IsVUFBVSxDQUFDZ0IsS0FBSyxDQUFDTixLQUFQLENBTDBCO0FBTXhDb0IsTUFBQUEsR0FBRyxFQUFFdkIsaUJBQWlCLENBQUNTLEtBQUssQ0FBQ04sS0FBUCxFQUFjTSxLQUFLLENBQUNJLE1BQXBCLENBTmtCO0FBT3hDVyxNQUFBQSxJQUFJLEVBQUVULGtCQUFrQixDQUFDTixLQUFLLENBQUNVLFdBQVAsQ0FQZ0I7QUFReENNLE1BQUFBLE1BQU0sRUFBRVYsa0JBQWtCLENBQUNOLEtBQUssQ0FBQ0ssUUFBUDtBQVJjLEtBQUwsQ0FBckM7QUFVRDs7QUFDRCxNQUFJSixJQUFJLEtBQUssWUFBYixFQUEyQjtBQUN6QixtREFBd0Msc0JBQUs7QUFDM0NnQixNQUFBQSxHQUFHLEVBQUUsVUFEc0M7QUFFM0NDLE1BQUFBLE9BQU8sRUFBRWxDLFVBQVUsQ0FBQ2dCLEtBQUssQ0FBQ04sS0FBUCxDQUZ3QjtBQUczQ3lCLE1BQUFBLEtBQUssRUFBRW5DLFVBQVUsQ0FBQ2dCLEtBQUssQ0FBQ0ksTUFBUCxDQUgwQjtBQUkzQ2dCLE1BQUFBLE9BQU8sRUFBRWQsa0JBQWtCLENBQUNOLEtBQUssQ0FBQ1EsS0FBUCxDQUpnQjtBQUszQ0gsTUFBQUEsUUFBUSxFQUFFQyxrQkFBa0IsQ0FBQ04sS0FBSyxDQUFDSyxRQUFQLENBTGU7QUFNM0NnQixNQUFBQSxJQUFJLEVBQUVmLGtCQUFrQixDQUFDTixLQUFLLENBQUNVLFdBQVAsQ0FObUI7QUFPM0NZLE1BQUFBLE1BQU0sRUFBRSxPQVBtQztBQVEzQ0MsTUFBQUEsR0FBRyxFQUFFOUMsV0FBVyxFQVIyQjtBQVMzQytDLE1BQUFBLElBQUksRUFBRTtBQVRxQyxLQUFMLENBQXhDO0FBV0Q7O0FBQ0QsTUFBTUMsR0FBRyxHQUFHLENBQ1YsaUJBRFUsRUFFVixhQUZVLEVBR1YsY0FIVSxnQkFJSHpCLEtBQUssQ0FBQzBCLEdBSkgscUJBS0MxQyxVQUFVLENBQUNnQixLQUFLLENBQUNOLEtBQVAsQ0FMWCxtQkFNRFYsVUFBVSxDQUFDZ0IsS0FBSyxDQUFDSSxNQUFQLENBTlQscUJBT0NKLEtBQUssQ0FBQ1EsS0FQUCx5QkFRS1IsS0FBSyxDQUFDVSxXQVJYLHNCQVNFVixLQUFLLENBQUNLLFFBVFIsR0FVVixZQVZVLEVBV1YsZUFYVSxDQUFaOztBQWNBLE1BQUksc0NBQXFCLENBQUMsb0NBQTFCLEVBQStDO0FBQzdDLFdBQU9zQixTQUFTLDJDQUFvQ0YsR0FBRyxDQUFDRyxJQUFKLENBQVMsSUFBVCxDQUFwQyxFQUFoQjtBQUNEOztBQUNELG1CQUFVSCxHQUFHLENBQUNHLElBQUosQ0FBUyxJQUFULENBQVY7QUFDRCxDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IGlzTW9iaWxlQnJvd3NlciBmcm9tICdAbHNranMvdXRpbHMvaXNNb2JpbGVCcm93c2VyJztcbmltcG9ydCB0b1FzIGZyb20gJ0Bsc2tqcy91dGlscy90b1FzJztcbmltcG9ydCBpc0NyYXBweUlFQnJvd3NlciBmcm9tICdAbHNranMvdXRpbHMvaXNDcmFwcHlJRUJyb3dzZXInO1xuXG5jb25zdCBnZXRSYW5kb21JZCA9ICgpID0+IHtcbiAgcmV0dXJuIGAke25ldyBEYXRlKCkuZ2V0VGltZSgpLnRvU3RyaW5nKCl9XyR7TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTAwMCkudG9TdHJpbmcoKX1gO1xufTtcblxuY29uc3QgZm9ybWF0VGltZSA9IChkYXRlKSA9PiB7XG4gIGNvbnN0IGZvcm1hdHRlZERhdGUgPSBtb21lbnQudXRjKGRhdGUpLmZvcm1hdCgnWVlZWU1NRERUSEhtbXNzWicpO1xuICByZXR1cm4gZm9ybWF0dGVkRGF0ZS5yZXBsYWNlKCcrMDA6MDAnLCAnWicpO1xufTtcblxuY29uc3QgY2FsY3VsYXRlRHVyYXRpb24gPSAoc3RhcnRUaW1lLCBmaW5pc2hUaW1lKSA9PiB7XG4gIC8vIHNuYWcgcGFyYW1ldGVycyBhbmQgZm9ybWF0IHByb3Blcmx5IGluIFVUQ1xuICBjb25zdCBzdGFydCA9IG1vbWVudC51dGMoc3RhcnRUaW1lKS5mb3JtYXQoJ0REL01NL1lZWVkgSEg6bW06c3MnKTtcbiAgY29uc3QgZW5kID0gbW9tZW50LnV0YyhmaW5pc2hUaW1lKS5mb3JtYXQoJ0REL01NL1lZWVkgSEg6bW06c3MnKTtcblxuICAvLyBjYWxjdWxhdGUgdGhlIGRpZmZlcmVuY2UgaW4gbWlsbGlzZWNvbmRzIGJldHdlZW4gdGhlIHN0YXJ0IGFuZCBlbmQgdGltZXNcbiAgY29uc3QgZGlmZmVyZW5jZSA9IG1vbWVudChlbmQsICdERC9NTS9ZWVlZIEhIOm1tOnNzJykuZGlmZihtb21lbnQoc3RhcnQsICdERC9NTS9ZWVlZIEhIOm1tOnNzJykpO1xuXG4gIC8vIGNvbnZlcnQgZGlmZmVyZW5jZSBmcm9tIGFib3ZlIHRvIGEgcHJvcGVyIG1vbWVudEpzIGR1cmF0aW9uIG9iamVjdFxuICBjb25zdCBkdXJhdGlvbiA9IG1vbWVudC5kdXJhdGlvbihkaWZmZXJlbmNlKTtcblxuICByZXR1cm4gTWF0aC5mbG9vcihkdXJhdGlvbi5hc0hvdXJzKCkpICsgbW9tZW50LnV0YyhkaWZmZXJlbmNlKS5mb3JtYXQoJzptbScpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgKGV2ZW50LCB0eXBlKSA9PiB7XG4gIGlmICh0eXBlID09PSAnZ29vZ2xlJykge1xuICAgIHJldHVybiBgaHR0cHM6Ly9jYWxlbmRhci5nb29nbGUuY29tL2NhbGVuZGFyL3JlbmRlcj8ke3RvUXMoe1xuICAgICAgYWN0aW9uOiAnVEVNUExBVEUnLFxuICAgICAgZGF0ZXM6IGAke2Zvcm1hdFRpbWUoZXZlbnQuc3RhcnQpfS8ke2Zvcm1hdFRpbWUoZXZlbnQuZmluaXNoKX1gLFxuICAgICAgbG9jYXRpb246IGVuY29kZVVSSUNvbXBvbmVudChldmVudC5sb2NhdGlvbiksXG4gICAgICB0ZXh0OiBlbmNvZGVVUklDb21wb25lbnQoZXZlbnQudGl0bGUpLFxuICAgICAgZGV0YWlsczogZW5jb2RlVVJJQ29tcG9uZW50KGV2ZW50LmRlc2NyaXB0aW9uKSxcbiAgICB9KX1gO1xuICB9XG4gIGlmICh0eXBlID09PSAneWFob28nKSB7XG4gICAgLy8geWFob28gZG9lc24ndCB1dGlsaXplIGZpbmlzaCBzbyB3ZSBuZWVkIHRvIGNhbHVsYXRlIGR1cmF0aW9uXG4gICAgcmV0dXJuIGBodHRwczovL2NhbGVuZGFyLnlhaG9vLmNvbT8ke3RvUXMoe1xuICAgICAgdjogNjAsXG4gICAgICB2aWV3OiAnZCcsXG4gICAgICB0eXBlOiAyMCxcbiAgICAgIHRpdGxlOiBlbmNvZGVVUklDb21wb25lbnQoZXZlbnQudGl0bGUpLFxuICAgICAgc3Q6IGZvcm1hdFRpbWUoZXZlbnQuc3RhcnQpLFxuICAgICAgZHVyOiBjYWxjdWxhdGVEdXJhdGlvbihldmVudC5zdGFydCwgZXZlbnQuZmluaXNoKSxcbiAgICAgIGRlc2M6IGVuY29kZVVSSUNvbXBvbmVudChldmVudC5kZXNjcmlwdGlvbiksXG4gICAgICBpbl9sb2M6IGVuY29kZVVSSUNvbXBvbmVudChldmVudC5sb2NhdGlvbiksXG4gICAgfSl9YDtcbiAgfVxuICBpZiAodHlwZSA9PT0gJ291dGxvb2tjb20nKSB7XG4gICAgcmV0dXJuIGBodHRwczovL291dGxvb2subGl2ZS5jb20vb3dhLz8ke3RvUXMoe1xuICAgICAgcnJ1OiAnYWRkZXZlbnQnLFxuICAgICAgc3RhcnRkdDogZm9ybWF0VGltZShldmVudC5zdGFydCksXG4gICAgICBlbmRkdDogZm9ybWF0VGltZShldmVudC5maW5pc2gpLFxuICAgICAgc3ViamVjdDogZW5jb2RlVVJJQ29tcG9uZW50KGV2ZW50LnRpdGxlKSxcbiAgICAgIGxvY2F0aW9uOiBlbmNvZGVVUklDb21wb25lbnQoZXZlbnQubG9jYXRpb24pLFxuICAgICAgYm9keTogZW5jb2RlVVJJQ29tcG9uZW50KGV2ZW50LmRlc2NyaXB0aW9uKSxcbiAgICAgIGFsbGRheTogJ2ZhbHNlJyxcbiAgICAgIHVpZDogZ2V0UmFuZG9tSWQoKSxcbiAgICAgIHBhdGg6ICcvY2FsZW5kYXIvdmlldy9Nb250aCcsXG4gICAgfSl9YDtcbiAgfVxuICBjb25zdCBpY3MgPSBbXG4gICAgJ0JFR0lOOlZDQUxFTkRBUicsXG4gICAgJ1ZFUlNJT046Mi4wJyxcbiAgICAnQkVHSU46VkVWRU5UJyxcbiAgICBgVVJMOiR7ZXZlbnQudXJsfWAsXG4gICAgYERUU1RBUlQ6JHtmb3JtYXRUaW1lKGV2ZW50LnN0YXJ0KX1gLFxuICAgIGBEVEVORDoke2Zvcm1hdFRpbWUoZXZlbnQuZmluaXNoKX1gLFxuICAgIGBTVU1NQVJZOiR7ZXZlbnQudGl0bGV9YCxcbiAgICBgREVTQ1JJUFRJT046JHtldmVudC5kZXNjcmlwdGlvbn1gLFxuICAgIGBMT0NBVElPTjoke2V2ZW50LmxvY2F0aW9ufWAsXG4gICAgJ0VORDpWRVZFTlQnLFxuICAgICdFTkQ6VkNBTEVOREFSJyxcbiAgXTtcblxuICBpZiAoaXNNb2JpbGVCcm93c2VyKCkgJiYgIWlzQ3JhcHB5SUVCcm93c2VyKCkpIHtcbiAgICByZXR1cm4gZW5jb2RlVVJJKGBkYXRhOnRleHQvY2FsZW5kYXI7Y2hhcnNldD11dGY4LCR7aWNzLmpvaW4oJ1xcbicpfWApO1xuICB9XG4gIHJldHVybiBgJHtpY3Muam9pbignXFxuJyl9YDtcbn07XG4iXX0=
|
92 | //# sourceMappingURL=createCalendarUrl.js.map |
\ | No newline at end of file |