0
0
Fork 0
mirror of https://github.com/salesagility/SuiteCRM.git synced 2025-02-16 02:52:07 +00:00
salesagility_SuiteCRM/modules/Calendar/fullcalendar/gcal.js
Matt Lorimer e0382c1a6c Update FullCalendar JS Library to v3.10.2
Fixes compatibility with JQuery 3.5
Remove unused lang and jquery files
Update tpl to use min css files

(cherry picked from commit 611bbcaa89)
2021-05-17 14:59:18 +01:00

330 lines
No EOL
12 KiB
JavaScript

/*!
* FullCalendar v3.10.2
* Docs & License: https://fullcalendar.io/
* (c) 2019 Adam Shaw
*/
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory(require("fullcalendar"), require("jquery"));
else if(typeof define === 'function' && define.amd)
define(["fullcalendar", "jquery"], factory);
else if(typeof exports === 'object')
factory(require("fullcalendar"), require("jquery"));
else
factory(root["FullCalendar"], root["jQuery"]);
})(typeof self !== 'undefined' ? self : this, function(__WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_3__) {
return /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, {
/******/ configurable: false,
/******/ enumerable: true,
/******/ get: getter
/******/ });
/******/ }
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 270);
/******/ })
/************************************************************************/
/******/ ({
/***/ 1:
/***/ (function(module, exports) {
module.exports = __WEBPACK_EXTERNAL_MODULE_1__;
/***/ }),
/***/ 2:
/***/ (function(module, exports) {
/*
derived from:
https://github.com/Microsoft/tslib/blob/v1.6.0/tslib.js
only include the helpers we need, to keep down filesize
*/
var extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b)
if (b.hasOwnProperty(p))
d[p] = b[p]; };
exports.__extends = function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
/***/ }),
/***/ 270:
/***/ (function(module, exports, __webpack_require__) {
Object.defineProperty(exports, "__esModule", { value: true });
var exportHooks = __webpack_require__(1);
var GcalEventSource_1 = __webpack_require__(271);
exportHooks.EventSourceParser.registerClass(GcalEventSource_1.default);
exportHooks.GcalEventSource = GcalEventSource_1.default;
/***/ }),
/***/ 271:
/***/ (function(module, exports, __webpack_require__) {
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = __webpack_require__(2);
var $ = __webpack_require__(3);
var fullcalendar_1 = __webpack_require__(1);
var GcalEventSource = /** @class */ (function (_super) {
tslib_1.__extends(GcalEventSource, _super);
function GcalEventSource() {
return _super !== null && _super.apply(this, arguments) || this;
}
GcalEventSource.parse = function (rawInput, calendar) {
var rawProps;
if (typeof rawInput === 'object') { // long form. might fail in applyManualStandardProps
rawProps = rawInput;
}
else if (typeof rawInput === 'string') { // short form
rawProps = { url: rawInput }; // url will be parsed with parseGoogleCalendarId
}
if (rawProps) {
return fullcalendar_1.EventSource.parse.call(this, rawProps, calendar);
}
return false;
};
GcalEventSource.prototype.fetch = function (start, end, timezone) {
var _this = this;
var url = this.buildUrl();
var requestParams = this.buildRequestParams(start, end, timezone);
var ajaxSettings = this.ajaxSettings || {};
var onSuccess = ajaxSettings.success;
if (!requestParams) { // could have failed
return fullcalendar_1.Promise.reject();
}
this.calendar.pushLoading();
return fullcalendar_1.Promise.construct(function (onResolve, onReject) {
$.ajax($.extend({}, // destination
fullcalendar_1.JsonFeedEventSource.AJAX_DEFAULTS, ajaxSettings, {
url: url,
data: requestParams,
success: function (responseData, status, xhr) {
var rawEventDefs;
var successRes;
_this.calendar.popLoading();
if (responseData.error) {
_this.reportError('Google Calendar API: ' + responseData.error.message, responseData.error.errors);
onReject();
}
else if (responseData.items) {
rawEventDefs = _this.gcalItemsToRawEventDefs(responseData.items, requestParams.timeZone);
successRes = fullcalendar_1.applyAll(onSuccess, _this, [responseData, status, xhr]); // passthru
if ($.isArray(successRes)) {
rawEventDefs = successRes;
}
onResolve(_this.parseEventDefs(rawEventDefs));
}
},
error: function (xhr, statusText, errorThrown) {
_this.reportError('Google Calendar network failure: ' + statusText, [xhr, errorThrown]);
_this.calendar.popLoading();
onReject();
}
}));
});
};
GcalEventSource.prototype.gcalItemsToRawEventDefs = function (items, gcalTimezone) {
var _this = this;
return items.map(function (item) {
return _this.gcalItemToRawEventDef(item, gcalTimezone);
});
};
GcalEventSource.prototype.gcalItemToRawEventDef = function (item, gcalTimezone) {
var url = item.htmlLink || null;
// make the URLs for each event show times in the correct timezone
if (url && gcalTimezone) {
url = injectQsComponent(url, 'ctz=' + gcalTimezone);
}
var extendedProperties = {};
if (typeof item.extendedProperties === 'object' &&
typeof item.extendedProperties.shared === 'object') {
extendedProperties = item.extendedProperties.shared;
}
return {
id: item.id,
title: item.summary,
start: item.start.dateTime || item.start.date,
end: item.end.dateTime || item.end.date,
url: url,
location: item.location,
description: item.description,
extendedProperties: extendedProperties
};
};
GcalEventSource.prototype.buildUrl = function () {
return GcalEventSource.API_BASE + '/' +
encodeURIComponent(this.googleCalendarId) +
'/events?callback=?'; // jsonp
};
GcalEventSource.prototype.buildRequestParams = function (start, end, timezone) {
var apiKey = this.googleCalendarApiKey || this.calendar.opt('googleCalendarApiKey');
var params;
if (!apiKey) {
this.reportError('Specify a googleCalendarApiKey. See http://fullcalendar.io/docs/google_calendar/');
return null;
}
// The API expects an ISO8601 datetime with a time and timezone part.
// Since the calendar's timezone offset isn't always known, request the date in UTC and pad it by a day on each
// side, guaranteeing we will receive all events in the desired range, albeit a superset.
// .utc() will set a zone and give it a 00:00:00 time.
if (!start.hasZone()) {
start = start.clone().utc().add(-1, 'day');
}
if (!end.hasZone()) {
end = end.clone().utc().add(1, 'day');
}
params = $.extend(this.ajaxSettings.data || {}, {
key: apiKey,
timeMin: start.format(),
timeMax: end.format(),
singleEvents: true,
maxResults: 9999
});
if (timezone && timezone !== 'local') {
// when sending timezone names to Google, only accepts underscores, not spaces
params.timeZone = timezone.replace(' ', '_');
}
return params;
};
GcalEventSource.prototype.reportError = function (message, apiErrorObjs) {
var calendar = this.calendar;
var calendarOnError = calendar.opt('googleCalendarError');
var errorObjs = apiErrorObjs || [{ message: message }]; // to be passed into error handlers
if (this.googleCalendarError) {
this.googleCalendarError.apply(calendar, errorObjs);
}
if (calendarOnError) {
calendarOnError.apply(calendar, errorObjs);
}
// print error to debug console
fullcalendar_1.warn.apply(null, [message].concat(apiErrorObjs || []));
};
GcalEventSource.prototype.getPrimitive = function () {
return this.googleCalendarId;
};
GcalEventSource.prototype.applyManualStandardProps = function (rawProps) {
var superSuccess = fullcalendar_1.EventSource.prototype.applyManualStandardProps.apply(this, arguments);
var googleCalendarId = rawProps.googleCalendarId;
if (googleCalendarId == null && rawProps.url) {
googleCalendarId = parseGoogleCalendarId(rawProps.url);
}
if (googleCalendarId != null) {
this.googleCalendarId = googleCalendarId;
return superSuccess;
}
return false;
};
GcalEventSource.prototype.applyMiscProps = function (rawProps) {
if (!this.ajaxSettings) {
this.ajaxSettings = {};
}
$.extend(this.ajaxSettings, rawProps);
};
GcalEventSource.API_BASE = 'https://www.googleapis.com/calendar/v3/calendars';
return GcalEventSource;
}(fullcalendar_1.EventSource));
exports.default = GcalEventSource;
GcalEventSource.defineStandardProps({
// manually process...
url: false,
googleCalendarId: false,
// automatically transfer...
googleCalendarApiKey: true,
googleCalendarError: true
});
function parseGoogleCalendarId(url) {
var match;
// detect if the ID was specified as a single string.
// will match calendars like "asdf1234@calendar.google.com" in addition to person email calendars.
if (/^[^\/]+@([^\/\.]+\.)*(google|googlemail|gmail)\.com$/.test(url)) {
return url;
}
else if ((match = /^https:\/\/www.googleapis.com\/calendar\/v3\/calendars\/([^\/]*)/.exec(url)) ||
(match = /^https?:\/\/www.google.com\/calendar\/feeds\/([^\/]*)/.exec(url))) {
return decodeURIComponent(match[1]);
}
}
// Injects a string like "arg=value" into the querystring of a URL
function injectQsComponent(url, component) {
// inject it after the querystring but before the fragment
return url.replace(/(\?.*?)?(#|$)/, function (whole, qs, hash) {
return (qs ? qs + '&' : '?') + component + hash;
});
}
/***/ }),
/***/ 3:
/***/ (function(module, exports) {
module.exports = __WEBPACK_EXTERNAL_MODULE_3__;
/***/ })
/******/ });
});