UNPKG

6.27 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../src/createCalendarUrl.js"],"names":["getRandomId","Date","getTime","toString","Math","floor","random","formatTime","date","formattedDate","moment","utc","format","replace","calculateDuration","startTime","finishTime","start","end","difference","diff","duration","asHours","event","type","action","dates","finish","location","encodeURIComponent","text","title","details","description","v","view","st","dur","desc","in_loc","rru","startdt","enddt","subject","body","allday","uid","path","ics","url","encodeURI","join"],"mappings":"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","sourcesContent":["import moment from 'moment';\nimport isMobileBrowser from '@lskjs/utils/isMobileBrowser';\nimport toQs from '@lskjs/utils/toQs';\nimport isCrappyIEBrowser from '@lskjs/utils/isCrappyIEBrowser';\n\nconst getRandomId = () => {\n return `${new Date().getTime().toString()}_${Math.floor(Math.random() * 1000).toString()}`;\n};\n\nconst formatTime = (date) => {\n const formattedDate = moment.utc(date).format('YYYYMMDDTHHmmssZ');\n return formattedDate.replace('+00:00', 'Z');\n};\n\nconst calculateDuration = (startTime, finishTime) => {\n // snag parameters and format properly in UTC\n const start = moment.utc(startTime).format('DD/MM/YYYY HH:mm:ss');\n const end = moment.utc(finishTime).format('DD/MM/YYYY HH:mm:ss');\n\n // calculate the difference in milliseconds between the start and end times\n const difference = moment(end, 'DD/MM/YYYY HH:mm:ss').diff(moment(start, 'DD/MM/YYYY HH:mm:ss'));\n\n // convert difference from above to a proper momentJs duration object\n const duration = moment.duration(difference);\n\n return Math.floor(duration.asHours()) + moment.utc(difference).format(':mm');\n};\n\nexport default (event, type) => {\n if (type === 'google') {\n return `https://calendar.google.com/calendar/render?${toQs({\n action: 'TEMPLATE',\n dates: `${formatTime(event.start)}/${formatTime(event.finish)}`,\n location: encodeURIComponent(event.location),\n text: encodeURIComponent(event.title),\n details: encodeURIComponent(event.description),\n })}`;\n }\n if (type === 'yahoo') {\n // yahoo doesn't utilize finish so we need to calulate duration\n return `https://calendar.yahoo.com?${toQs({\n v: 60,\n view: 'd',\n type: 20,\n title: encodeURIComponent(event.title),\n st: formatTime(event.start),\n dur: calculateDuration(event.start, event.finish),\n desc: encodeURIComponent(event.description),\n in_loc: encodeURIComponent(event.location),\n })}`;\n }\n if (type === 'outlookcom') {\n return `https://outlook.live.com/owa/?${toQs({\n rru: 'addevent',\n startdt: formatTime(event.start),\n enddt: formatTime(event.finish),\n subject: encodeURIComponent(event.title),\n location: encodeURIComponent(event.location),\n body: encodeURIComponent(event.description),\n allday: 'false',\n uid: getRandomId(),\n path: '/calendar/view/Month',\n })}`;\n }\n const ics = [\n 'BEGIN:VCALENDAR',\n 'VERSION:2.0',\n 'BEGIN:VEVENT',\n `URL:${event.url}`,\n `DTSTART:${formatTime(event.start)}`,\n `DTEND:${formatTime(event.finish)}`,\n `SUMMARY:${event.title}`,\n `DESCRIPTION:${event.description}`,\n `LOCATION:${event.location}`,\n 'END:VEVENT',\n 'END:VCALENDAR',\n ];\n\n if (isMobileBrowser() && !isCrappyIEBrowser()) {\n return encodeURI(`data:text/calendar;charset=utf8,${ics.join('\\n')}`);\n }\n return `${ics.join('\\n')}`;\n};\n"],"file":"createCalendarUrl.js"}
\No newline at end of file