UNPKG

11.9 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
5Object.defineProperty(exports, "__esModule", {
6 value: true
7});
8exports["default"] = void 0;
9
10var _moment = _interopRequireDefault(require("moment"));
11
12var _isMobileBrowser = _interopRequireDefault(require("@lskjs/utils/isMobileBrowser"));
13
14var _toQs = _interopRequireDefault(require("@lskjs/utils/toQs"));
15
16var _isCrappyIEBrowser = _interopRequireDefault(require("@lskjs/utils/isCrappyIEBrowser"));
17
18var getRandomId = function getRandomId() {
19 return "".concat(new Date().getTime().toString(), "_").concat(Math.floor(Math.random() * 1000).toString());
20};
21
22var formatTime = function formatTime(date) {
23 var formattedDate = _moment["default"].utc(date).format('YYYYMMDDTHHmmssZ');
24
25 return formattedDate.replace('+00:00', 'Z');
26};
27
28var 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
42var _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
90exports["default"] = _default;
91//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jcmVhdGVDYWxlbmRhclVybC5qcyJdLCJuYW1lcyI6WyJnZXRSYW5kb21JZCIsIkRhdGUiLCJnZXRUaW1lIiwidG9TdHJpbmciLCJNYXRoIiwiZmxvb3IiLCJyYW5kb20iLCJmb3JtYXRUaW1lIiwiZGF0ZSIsImZvcm1hdHRlZERhdGUiLCJtb21lbnQiLCJ1dGMiLCJmb3JtYXQiLCJyZXBsYWNlIiwiY2FsY3VsYXRlRHVyYXRpb24iLCJzdGFydFRpbWUiLCJmaW5pc2hUaW1lIiwic3RhcnQiLCJlbmQiLCJkaWZmZXJlbmNlIiwiZGlmZiIsImR1cmF0aW9uIiwiYXNIb3VycyIsImV2ZW50IiwidHlwZSIsImFjdGlvbiIsImRhdGVzIiwiZmluaXNoIiwibG9jYXRpb24iLCJlbmNvZGVVUklDb21wb25lbnQiLCJ0ZXh0IiwidGl0bGUiLCJkZXRhaWxzIiwiZGVzY3JpcHRpb24iLCJ2IiwidmlldyIsInN0IiwiZHVyIiwiZGVzYyIsImluX2xvYyIsInJydSIsInN0YXJ0ZHQiLCJlbmRkdCIsInN1YmplY3QiLCJib2R5IiwiYWxsZGF5IiwidWlkIiwicGF0aCIsImljcyIsInVybCIsImVuY29kZVVSSSIsImpvaW4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLElBQU1BLFdBQVcsR0FBRyxTQUFkQSxXQUFjLEdBQU07QUFDeEIsbUJBQVUsSUFBSUMsSUFBSixHQUFXQyxPQUFYLEdBQXFCQyxRQUFyQixFQUFWLGNBQTZDQyxJQUFJLENBQUNDLEtBQUwsQ0FBV0QsSUFBSSxDQUFDRSxNQUFMLEtBQWdCLElBQTNCLEVBQWlDSCxRQUFqQyxFQUE3QztBQUNELENBRkQ7O0FBSUEsSUFBTUksVUFBVSxHQUFHLFNBQWJBLFVBQWEsQ0FBQ0MsSUFBRCxFQUFVO0FBQzNCLE1BQU1DLGFBQWEsR0FBR0MsbUJBQU9DLEdBQVAsQ0FBV0gsSUFBWCxFQUFpQkksTUFBakIsQ0FBd0Isa0JBQXhCLENBQXRCOztBQUNBLFNB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QUFNM0NnQixNQUFBQSxJQUFJLEVBQUVmLGtCQUFrQixDQUFDTixLQUFLLENBQUNVLFdBQVAsQ0FObUI7QUFPM0NZLE1BQUFBLE1BQU0sRUFBRSxPQVBtQztBQVEzQ0MsTUFBQUEsR0FBRyxFQUFFOUMsV0FBVyxFQVIyQjtBQVMzQytDLE1BQUFBLElBQUksRUFBRTtBQVRxQyxLQUFMLENBQXhDO0FBV0Q7O0FBQ0QsTUFBTUMsR0FBRyxHQUFHLENBQ1YsaUJBRFUsRUFFVixhQUZVLEVBR1YsY0FIVSxnQkFJSHpCLEtBQUssQ0FBQzBCLEdBSkgscUJBS0MxQyxVQUFVLENBQUNnQixLQUFLLENBQUNOLEtBQVAsQ0FMWCxtQkFNRFYsVUFBVSxDQUFDZ0IsS0FBSyxDQUFDSSxNQUFQLENBTlQscUJBT0NKLEtBQUssQ0FBQ1EsS0FQUCx5QkFRS1IsS0FBSyxDQUFDVSxXQVJYLHNCQVNFVixLQUFLLENBQUNLLFFBVFIsR0FVVixZQVZVLEVBV1YsZUFYVSxDQUFaOztBQWNBLE1BQUksc0NBQXFCLENBQUMsb0NBQTFCLEVBQStDO0FBQzdDLFdBQU9zQixTQUFTLDJDQUFvQ0YsR0FBRyxDQUFDRyxJQUFKLENBQVMsSUFBVCxDQUFwQyxFQUFoQjtBQUNEOztBQUNELG1CQUFVSCxHQUFHLENBQUNHLElBQUosQ0FBUyxJQUFULENBQVY7QUFDRCxDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IGlzTW9iaWxlQnJvd3NlciBmcm9tICdAbHNranMvdXRpbHMvaXNNb2JpbGVCcm93c2VyJztcbmltcG9ydCB0b1FzIGZyb20gJ0Bsc2tqcy91dGlscy90b1FzJztcbmltcG9ydCBpc0NyYXBweUlFQnJvd3NlciBmcm9tICdAbHNranMvdXRpbHMvaXNDcmFwcHlJRUJyb3dzZXInO1xuXG5jb25zdCBnZXRSYW5kb21JZCA9ICgpID0+IHtcbiAgcmV0dXJuIGAke25ldyBEYXRlKCkuZ2V0VGltZSgpLnRvU3RyaW5nKCl9XyR7TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTAwMCkudG9TdHJpbmcoKX1gO1xufTtcblxuY29uc3QgZm9ybWF0VGltZSA9IChkYXRlKSA9PiB7XG4gIGNvbnN0IGZvcm1hdHRlZERhdGUgPSBtb21lbnQudXRjKGRhdGUpLmZvcm1hdCgnWVlZWU1NRERUSEhtbXNzWicpO1xuICByZXR1cm4gZm9ybWF0dGVkRGF0ZS5yZXBsYWNlKCcrMDA6MDAnLCAnWicpO1xufTtcblxuY29uc3QgY2FsY3VsYXRlRHVyYXRpb24gPSAoc3RhcnRUaW1lLCBmaW5pc2hUaW1lKSA9PiB7XG4gIC8vIHNuYWcgcGFyYW1ldGVycyBhbmQgZm9ybWF0IHByb3Blcmx5IGluIFVUQ1xuICBjb25zdCBzdGFydCA9IG1vbWVudC51dGMoc3RhcnRUaW1lKS5mb3JtYXQoJ0REL01NL1lZWVkgSEg6bW06c3MnKTtcbiAgY29uc3QgZW5kID0gbW9tZW50LnV0YyhmaW5pc2hUaW1lKS5mb3JtYXQoJ0REL01NL1lZWVkgSEg6bW06c3MnKTtcblxuICAvLyBjYWxjdWxhdGUgdGhlIGRpZmZlcmVuY2UgaW4gbWlsbGlzZWNvbmRzIGJldHdlZW4gdGhlIHN0YXJ0IGFuZCBlbmQgdGltZXNcbiAgY29uc3QgZGlmZmVyZW5jZSA9IG1vbWVudChlbmQsICdERC9NTS9ZWVlZIEhIOm1tOnNzJykuZGlmZihtb21lbnQoc3RhcnQsICdERC9NTS9ZWVlZIEhIOm1tOnNzJykpO1xuXG4gIC8vIGNvbnZlcnQgZGlmZmVyZW5jZSBmcm9tIGFib3ZlIHRvIGEgcHJvcGVyIG1vbWVudEpzIGR1cmF0aW9uIG9iamVjdFxuICBjb25zdCBkdXJhdGlvbiA9IG1vbWVudC5kdXJhdGlvbihkaWZmZXJlbmNlKTtcblxuICByZXR1cm4gTWF0aC5mbG9vcihkdXJhdGlvbi5hc0hvdXJzKCkpICsgbW9tZW50LnV0YyhkaWZmZXJlbmNlKS5mb3JtYXQoJzptbScpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgKGV2ZW50LCB0eXBlKSA9PiB7XG4gIGlmICh0eXBlID09PSAnZ29vZ2xlJykge1xuICAgIHJldHVybiBgaHR0cHM6Ly9jYWxlbmRhci5nb29nbGUuY29tL2NhbGVuZGFyL3JlbmRlcj8ke3RvUXMoe1xuICAgICAgYWN0aW9uOiAnVEVNUExBVEUnLFxuICAgICAgZGF0ZXM6IGAke2Zvcm1hdFRpbWUoZXZlbnQuc3RhcnQpfS8ke2Zvcm1hdFRpbWUoZXZlbnQuZmluaXNoKX1gLFxuICAgICAgbG9jYXRpb246IGVuY29kZVVSSUNvbXBvbmVudChldmVudC5sb2NhdGlvbiksXG4gICAgICB0ZXh0OiBlbmNvZGVVUklDb21wb25lbnQoZXZlbnQudGl0bGUpLFxuICAgICAgZGV0YWlsczogZW5jb2RlVVJJQ29tcG9uZW50KGV2ZW50LmRlc2NyaXB0aW9uKSxcbiAgICB9KX1gO1xuICB9XG4gIGlmICh0eXBlID09PSAneWFob28nKSB7XG4gICAgLy8geWFob28gZG9lc24ndCB1dGlsaXplIGZpbmlzaCBzbyB3ZSBuZWVkIHRvIGNhbHVsYXRlIGR1cmF0aW9uXG4gICAgcmV0dXJuIGBodHRwczovL2NhbGVuZGFyLnlhaG9vLmNvbT8ke3RvUXMoe1xuICAgICAgdjogNjAsXG4gICAgICB2aWV3OiAnZCcsXG4gICAgICB0eXBlOiAyMCxcbiAgICAgIHRpdGxlOiBlbmNvZGVVUklDb21wb25lbnQoZXZlbnQudGl0bGUpLFxuICAgICAgc3Q6IGZvcm1hdFRpbWUoZXZlbnQuc3RhcnQpLFxuICAgICAgZHVyOiBjYWxjdWxhdGVEdXJhdGlvbihldmVudC5zdGFydCwgZXZlbnQuZmluaXNoKSxcbiAgICAgIGRlc2M6IGVuY29kZVVSSUNvbXBvbmVudChldmVudC5kZXNjcmlwdGlvbiksXG4gICAgICBpbl9sb2M6IGVuY29kZVVSSUNvbXBvbmVudChldmVudC5sb2NhdGlvbiksXG4gICAgfSl9YDtcbiAgfVxuICBpZiAodHlwZSA9PT0gJ291dGxvb2tjb20nKSB7XG4gICAgcmV0dXJuIGBodHRwczovL291dGxvb2subGl2ZS5jb20vb3dhLz8ke3RvUXMoe1xuICAgICAgcnJ1OiAnYWRkZXZlbnQnLFxuICAgICAgc3RhcnRkdDogZm9ybWF0VGltZShldmVudC5zdGFydCksXG4gICAgICBlbmRkdDogZm9ybWF0VGltZShldmVudC5maW5pc2gpLFxuICAgICAgc3ViamVjdDogZW5jb2RlVVJJQ29tcG9uZW50KGV2ZW50LnRpdGxlKSxcbiAgICAgIGxvY2F0aW9uOiBlbmNvZGVVUklDb21wb25lbnQoZXZlbnQubG9jYXRpb24pLFxuICAgICAgYm9keTogZW5jb2RlVVJJQ29tcG9uZW50KGV2ZW50LmRlc2NyaXB0aW9uKSxcbiAgICAgIGFsbGRheTogJ2ZhbHNlJyxcbiAgICAgIHVpZDogZ2V0UmFuZG9tSWQoKSxcbiAgICAgIHBhdGg6ICcvY2FsZW5kYXIvdmlldy9Nb250aCcsXG4gICAgfSl9YDtcbiAgfVxuICBjb25zdCBpY3MgPSBbXG4gICAgJ0JFR0lOOlZDQUxFTkRBUicsXG4gICAgJ1ZFUlNJT046Mi4wJyxcbiAgICAnQkVHSU46VkVWRU5UJyxcbiAgICBgVVJMOiR7ZXZlbnQudXJsfWAsXG4gICAgYERUU1RBUlQ6JHtmb3JtYXRUaW1lKGV2ZW50LnN0YXJ0KX1gLFxuICAgIGBEVEVORDoke2Zvcm1hdFRpbWUoZXZlbnQuZmluaXNoKX1gLFxuICAgIGBTVU1NQVJZOiR7ZXZlbnQudGl0bGV9YCxcbiAgICBgREVTQ1JJUFRJT046JHtldmVudC5kZXNjcmlwdGlvbn1gLFxuICAgIGBMT0NBVElPTjoke2V2ZW50LmxvY2F0aW9ufWAsXG4gICAgJ0VORDpWRVZFTlQnLFxuICAgICdFTkQ6VkNBTEVOREFSJyxcbiAgXTtcblxuICBpZiAoaXNNb2JpbGVCcm93c2VyKCkgJiYgIWlzQ3JhcHB5SUVCcm93c2VyKCkpIHtcbiAgICByZXR1cm4gZW5jb2RlVVJJKGBkYXRhOnRleHQvY2FsZW5kYXI7Y2hhcnNldD11dGY4LCR7aWNzLmpvaW4oJ1xcbicpfWApO1xuICB9XG4gIHJldHVybiBgJHtpY3Muam9pbignXFxuJyl9YDtcbn07XG4iXX0=
92//# sourceMappingURL=createCalendarUrl.js.map
\No newline at end of file