1/*! 2 * FullCalendar v3.8.1 3 * Docs & License: https://fullcalendar.io/ 4 * (c) 2017 Adam Shaw 5 */ 6(function webpackUniversalModuleDefinition(root, factory) { 7 if(typeof exports === 'object' && typeof module === 'object') 8 module.exports = factory(require("fullcalendar"), require("jquery")); 9 else if(typeof define === 'function' && define.amd) 10 define(["fullcalendar", "jquery"], factory); 11 else if(typeof exports === 'object') 12 factory(require("fullcalendar"), require("jquery")); 13 else 14 factory(root["FullCalendar"], root["jQuery"]); 15})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_3__) { 16return /******/ (function(modules) { // webpackBootstrap 17/******/ // The module cache 18/******/ var installedModules = {}; 19/******/ 20/******/ // The require function 21/******/ function __webpack_require__(moduleId) { 22/******/ 23/******/ // Check if module is in cache 24/******/ if(installedModules[moduleId]) { 25/******/ return installedModules[moduleId].exports; 26/******/ } 27/******/ // Create a new module (and put it into the cache) 28/******/ var module = installedModules[moduleId] = { 29/******/ i: moduleId, 30/******/ l: false, 31/******/ exports: {} 32/******/ }; 33/******/ 34/******/ // Execute the module function 35/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 36/******/ 37/******/ // Flag the module as loaded 38/******/ module.l = true; 39/******/ 40/******/ // Return the exports of the module 41/******/ return module.exports; 42/******/ } 43/******/ 44/******/ 45/******/ // expose the modules object (__webpack_modules__) 46/******/ __webpack_require__.m = modules; 47/******/ 48/******/ // expose the module cache 49/******/ __webpack_require__.c = installedModules; 50/******/ 51/******/ // define getter function for harmony exports 52/******/ __webpack_require__.d = function(exports, name, getter) { 53/******/ if(!__webpack_require__.o(exports, name)) { 54/******/ Object.defineProperty(exports, name, { 55/******/ configurable: false, 56/******/ enumerable: true, 57/******/ get: getter 58/******/ }); 59/******/ } 60/******/ }; 61/******/ 62/******/ // getDefaultExport function for compatibility with non-harmony modules 63/******/ __webpack_require__.n = function(module) { 64/******/ var getter = module && module.__esModule ? 65/******/ function getDefault() { return module['default']; } : 66/******/ function getModuleExports() { return module; }; 67/******/ __webpack_require__.d(getter, 'a', getter); 68/******/ return getter; 69/******/ }; 70/******/ 71/******/ // Object.prototype.hasOwnProperty.call 72/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; 73/******/ 74/******/ // __webpack_public_path__ 75/******/ __webpack_require__.p = ""; 76/******/ 77/******/ // Load entry module and return exports 78/******/ return __webpack_require__(__webpack_require__.s = 265); 79/******/ }) 80/************************************************************************/ 81/******/ ({ 82 83/***/ 1: 84/***/ (function(module, exports) { 85 86module.exports = __WEBPACK_EXTERNAL_MODULE_1__; 87 88/***/ }), 89 90/***/ 2: 91/***/ (function(module, exports) { 92 93/* 94derived from: 95https://github.com/Microsoft/tslib/blob/v1.6.0/tslib.js 96 97only include the helpers we need, to keep down filesize 98*/ 99var extendStatics = Object.setPrototypeOf || 100 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || 101 function (d, b) { for (var p in b) 102 if (b.hasOwnProperty(p)) 103 d[p] = b[p]; }; 104exports.__extends = function (d, b) { 105 extendStatics(d, b); 106 function __() { this.constructor = d; } 107 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); 108}; 109 110 111/***/ }), 112 113/***/ 265: 114/***/ (function(module, exports, __webpack_require__) { 115 116Object.defineProperty(exports, "__esModule", { value: true }); 117var exportHooks = __webpack_require__(1); 118var GcalEventSource_1 = __webpack_require__(266); 119exportHooks.EventSourceParser.registerClass(GcalEventSource_1.default); 120exportHooks.GcalEventSource = GcalEventSource_1.default; 121 122 123/***/ }), 124 125/***/ 266: 126/***/ (function(module, exports, __webpack_require__) { 127 128Object.defineProperty(exports, "__esModule", { value: true });
129var tslib_1 = __webpack_require__(2); 130var $ = __webpack_require__(3); 131var fullcalendar_1 = __webpack_require__(1); 132var GcalEventSource = /** @class */ (function (_super) { 133 tslib_1.__extends(GcalEventSource, _super); 134 function GcalEventSource() { 135 return _super !== null && _super.apply(this, arguments) || this; 136 } 137 GcalEventSource.parse = function (rawInput, calendar) { 138 var rawProps; 139 if (typeof rawInput === 'object') { 140 rawProps = rawInput; 141 } 142 else if (typeof rawInput === 'string') { 143 rawProps = { url: rawInput }; // url will be parsed with parseGoogleCalendarId 144 } 145 if (rawProps) { 146 return fullcalendar_1.EventSource.parse.call(this, rawProps, calendar); 147 } 148 return false; 149 }; 150 GcalEventSource.prototype.fetch = function (start, end, timezone) { 151 var _this = this; 152 var url = this.buildUrl(); 153 var requestParams = this.buildRequestParams(start, end, timezone); 154 var ajaxSettings = this.ajaxSettings || {}; 155 var onSuccess = ajaxSettings.success; 156 if (!requestParams) { 157 return fullcalendar_1.Promise.reject(); 158 } 159 this.calendar.pushLoading(); 160 return fullcalendar_1.Promise.construct(function (onResolve, onReject) { 161 $.ajax($.extend({}, // destination 162 fullcalendar_1.JsonFeedEventSource.AJAX_DEFAULTS, ajaxSettings, { 163 url: url, 164 data: requestParams, 165 success: function (responseData, status, xhr) { 166 var rawEventDefs; 167 var successRes; 168 _this.calendar.popLoading(); 169 if (responseData.error) { 170 _this.reportError('Google Calendar API: ' + responseData.error.message, responseData.error.errors); 171 onReject(); 172 } 173 else if (responseData.items) { 174 rawEventDefs = _this.gcalItemsToRawEventDefs(responseData.items, requestParams.timeZone); 175 successRes = fullcalendar_1.applyAll(onSuccess, _this, [responseData, status, xhr]); // passthru 176 if ($.isArray(successRes)) { 177 rawEventDefs = successRes; 178 } 179 onResolve(_this.parseEventDefs(rawEventDefs)); 180 } 181 }, 182 error: function (xhr, statusText, errorThrown) { 183 _this.reportError('Google Calendar network failure: ' + statusText, [xhr, errorThrown]); 184 _this.calendar.popLoading(); 185 onReject(); 186 } 187 })); 188 }); 189 }; 190 GcalEventSource.prototype.gcalItemsToRawEventDefs = function (items, gcalTimezone) { 191 var _this = this; 192 return items.map(function (item) { 193 return _this.gcalItemToRawEventDef(item, gcalTimezone); 194 }); 195 }; 196 GcalEventSource.prototype.gcalItemToRawEventDef = function (item, gcalTimezone) { 197 var url = item.htmlLink || null; 198 // make the URLs for each event show times in the correct timezone 199 if (url && gcalTimezone) { 200 url = injectQsComponent(url, 'ctz=' + gcalTimezone); 201 } 202 return { 203 id: item.id, 204 title: item.summary, 205 start: item.start.dateTime || item.start.date, 206 end: item.end.dateTime || item.end.date, 207 url: url, 208 location: item.location, 209 description: item.description 210 }; 211 }; 212 GcalEventSource.prototype.buildUrl = function () { 213 return GcalEventSource.API_BASE + '/' + 214 encodeURIComponent(this.googleCalendarId) + 215 '/events?callback=?'; // jsonp 216 }; 217 GcalEventSource.prototype.buildRequestParams = function (start, end, timezone) { 218 var apiKey = this.googleCalendarApiKey || this.calendar.opt('googleCalendarApiKey'); 219 var params; 220 if (!apiKey) { 221 this.reportError('Specify a googleCalendarApiKey. See http://fullcalendar.io/docs/google_calendar/'); 222 return null; 223 } 224 // The API expects an ISO8601 datetime with a time and timezone part. 225 // Since the calendar's timezone offset isn't always known, request the date in UTC and pad it by a day on each 226 // side, guaranteeing we will receive all events in the desired range, albeit a superset. 227 // .utc() will set a zone and give it a 00:00:00 time. 228 if (!start.hasZone()) { 229 start = start.clone().utc().add(-1, 'day'); 230 } 231 if (!end.hasZone()) { 232 end = end.clone().utc().add(1, 'day'); 233 } 234 params = $.extend(this.ajaxSettings.data || {}, { 235 key: apiKey, 236 timeMin: start.format(), 237 timeMax: end.format(), 238 singleEvents: true, 239 maxResults: 9999 240 }); 241 if (timezone && timezone !== 'local') { 242 // when sending timezone names to Google, only accepts underscores, not spaces 243 params.timeZone = timezone.replace(' ', '_'); 244 } 245 return params; 246 }; 247 GcalEventSource.prototype.reportError = function (message, apiErrorObjs) { 248 var calendar = this.calendar; 249 var calendarOnError = calendar.opt('googleCalendarError'); 250 var errorObjs = apiErrorObjs || [{ message: message }]; // to be passed into error handlers 251 if (this.googleCalendarError) { 252 this.googleCalendarError.apply(calendar, errorObjs); 253 } 254 if (calendarOnError) { 255 calendarOnError.apply(calendar, errorObjs); 256 } 257 // print error to debug console 258 fullcalendar_1.warn.apply(null, [message].concat(apiErrorObjs || [])); 259 }; 260 GcalEventSource.prototype.getPrimitive = function () { 261 return this.googleCalendarId; 262 };
263 GcalEventSource.prototype.applyManualStandardProps = function (rawProps) { 264 var superSuccess = fullcalendar_1.EventSource.prototype.applyManualStandardProps.apply(this, arguments); 265 var googleCalendarId = rawProps.googleCalendarId; 266 if (googleCalendarId == null && rawProps.url) { 267 googleCalendarId = parseGoogleCalendarId(rawProps.url); 268 } 269 if (googleCalendarId != null) { 270 this.googleCalendarId = googleCalendarId; 271 return superSuccess; 272 } 273 return false; 274 }; 275 GcalEventSource.prototype.applyMiscProps = function (rawProps) { 276 if (!this.ajaxSettings) { 277 this.ajaxSettings = {}; 278 } 279 $.extend(this.ajaxSettings, rawProps); 280 }; 281 GcalEventSource.API_BASE = 'https://www.googleapis.com/calendar/v3/calendars'; 282 return GcalEventSource; 283}(fullcalendar_1.EventSource)); 284exports.default = GcalEventSource; 285GcalEventSource.defineStandardProps({ 286 // manually process... 287 url: false, 288 googleCalendarId: false, 289 // automatically transfer... 290 googleCalendarApiKey: true, 291 googleCalendarError: true 292}); 293function parseGoogleCalendarId(url) { 294 var match; 295 // detect if the ID was specified as a single string. 296 // will match calendars like "[email protected]" in addition to person email calendars. 297 if (/^[^\/]+@([^\/\.]+\.)*(google|googlemail|gmail)\.com$/.test(url)) { 298 return url; 299 } 300 else if ((match = /^https:\/\/www.googleapis.com\/calendar\/v3\/calendars\/([^\/]*)/.exec(url)) || 301 (match = /^https?:\/\/www.google.com\/calendar\/feeds\/([^\/]*)/.exec(url))) { 302 return decodeURIComponent(match[1]); 303 } 304} 305// Injects a string like "arg=value" into the querystring of a URL 306function injectQsComponent(url, component) { 307 // inject it after the querystring but before the fragment 308 return url.replace(/(\?.*?)?(#|$)/, function (whole, qs, hash) { 309 return (qs ? qs + '&' : '?') + component + hash; 310 }); 311} 312 313 314/***/ }), 315 316/***/ 3: 317/***/ (function(module, exports) { 318 319module.exports = __WEBPACK_EXTERNAL_MODULE_3__; 320 321/***/ }) 322 323/******/ }); 324});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.