-
Notifications
You must be signed in to change notification settings - Fork 66
/
calendar-link.js
85 lines (85 loc) 路 3.41 KB
/
calendar-link.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
(function (factory) {
if (typeof module === "object" && typeof module.exports === "object") {
var v = factory(require, exports);
if (v !== undefined) module.exports = v;
}
else if (typeof define === "function" && define.amd) {
define(["require", "exports", "dayjs", "object-to-querystring"], factory);
}
})(function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var dayjs_1 = require("dayjs");
var object_to_querystring_1 = require("object-to-querystring");
function sanitizeEvent(event) {
event.start = dayjs_1.default(event.start).toDate();
if (event.duration && event.duration.length && !event.end) {
var duration = +event.duration[0];
var unit = event.duration[0];
event.end = dayjs_1.default(event.start)
.add(duration, unit)
.toDate();
}
return event;
}
var CalendarLink = /** @class */ (function () {
function CalendarLink() {
}
CalendarLink.prototype.google = function (event) {
event = sanitizeEvent(event);
var startDate = dayjs_1.default(event.start)
.toISOString()
.replace(/-/g, '')
.replace(/:/g, '')
.replace(/\./g, '');
var endDate = dayjs_1.default(event.end)
.toISOString()
.replace(/-/g, '')
.replace(/:/g, '')
.replace(/\./g, '');
var details = {
action: 'TEMPLATE',
text: event.title,
details: event.description,
location: event.location,
trp: event.busy,
dates: startDate.substring(0, startDate.length - 4) +
'Z/' +
endDate.substring(0, endDate.length - 4) +
'Z'
};
if (event.guests && event.guests.length) {
details.add = event.guests.join();
}
return 'https://calendar.google.com/calendar/render' + object_to_querystring_1.default(details);
};
CalendarLink.prototype.outlook = function (event) {
event = sanitizeEvent(event);
var details = {
path: '/calendar/action/compose',
rru: 'addevent',
startdt: dayjs_1.default(event.start).format('YYYYMMDD[T]HHmmss'),
enddt: dayjs_1.default(event.end).format('YYYYMMDD[T]HHmmss'),
subject: event.title,
body: event.description,
location: event.location
};
return 'https://outlook.live.com/owa/' + object_to_querystring_1.default(details);
};
CalendarLink.prototype.yahoo = function (event) {
event = sanitizeEvent(event);
var details = {
v: 60,
title: event.title,
st: dayjs_1.default(event.start).format('YYYYMMDD[T]HHmmss'),
et: dayjs_1.default(event.end).format('YYYYMMDD[T]HHmmss'),
desc: event.description,
in_loc: event.location
};
return 'https://calendar.yahoo.com/' + object_to_querystring_1.default(details);
};
return CalendarLink;
}());
exports.default = CalendarLink;
});
//# sourceMappingURL=calendar-link.js.map