/*! Copyright (C) 1998-2020 by Northwoods Software Corporation. All Rights Reserved. */
var gcs =
/******/ (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, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // 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 = 2);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var go = __webpack_require__(1);
var GoCloudStorage = (function () {
function GoCloudStorage(managedDiagrams, defaultModel, clientId, iconsRelativeDirectory) {
if (managedDiagrams instanceof go.Diagram)
managedDiagrams = [managedDiagrams];
this._managedDiagrams = managedDiagrams;
this._currentDiagramFile = { name: null, id: null, path: null };
this._isAutoSaving = true;
if (clientId)
this._clientId = clientId;
else
clientId = null;
if (defaultModel) {
var firstChar = defaultModel.trim().charAt(0);
if (defaultModel && firstChar === '{')
this._defaultModel = defaultModel;
if (firstChar !== '{' && !iconsRelativeDirectory)
this._iconsRelativeDirectory = defaultModel;
else
this._iconsRelativeDirectory = (!!iconsRelativeDirectory) ? iconsRelativeDirectory : '../goCloudStorageIcons/';
}
else {
this._defaultModel = null;
this._iconsRelativeDirectory = (!!iconsRelativeDirectory) ? iconsRelativeDirectory : '../goCloudStorageIcons/';
}
var lastChar = this._iconsRelativeDirectory.charAt(this._iconsRelativeDirectory.length - 1);
if (lastChar !== '/') {
this._iconsRelativeDirectory += '/';
}
var menu = document.createElement('div');
menu.className = 'goCustomFilepicker';
menu.style.visibility = 'hidden';
document.getElementsByTagName('body')[0].appendChild(menu);
this._ui = menu;
this._deferredPromise = { promise: this.makeDeferredPromise() };
function addAutoSave(d) {
d.addModelChangedListener(function (e) {
if (e.isTransactionFinished && storage.isAutoSaving && e.oldValue !== '') {
if (storage.currentDiagramFile.name) {
storage.save();
}
}
});
}
var d = this.managedDiagrams;
var storage = this;
if (d instanceof go.Diagram) {
addAutoSave(d);
}
else {
for (var i = 0; i < d.length; i++) {
addAutoSave(d[i]);
}
}
}
Object.defineProperty(GoCloudStorage.prototype, "managedDiagrams", {
get: function () { return this._managedDiagrams; },
set: function (value) { this._managedDiagrams = value; },
enumerable: true,
configurable: true
});
Object.defineProperty(GoCloudStorage.prototype, "defaultModel", {
get: function () { return this._defaultModel; },
set: function (value) { this._defaultModel = value; },
enumerable: true,
configurable: true
});
Object.defineProperty(GoCloudStorage.prototype, "iconsRelativeDirectory", {
get: function () { return this._iconsRelativeDirectory; },
set: function (value) { this._iconsRelativeDirectory = value; },
enumerable: true,
configurable: true
});
Object.defineProperty(GoCloudStorage.prototype, "clientId", {
get: function () { return this._clientId; },
enumerable: true,
configurable: true
});
Object.defineProperty(GoCloudStorage.prototype, "currentDiagramFile", {
get: function () { return this._currentDiagramFile; },
set: function (value) { this._currentDiagramFile = value; },
enumerable: true,
configurable: true
});
Object.defineProperty(GoCloudStorage.prototype, "isAutoSaving", {
get: function () { return this._isAutoSaving; },
set: function (value) { this._isAutoSaving = value; },
enumerable: true,
configurable: true
});
Object.defineProperty(GoCloudStorage.prototype, "serviceName", {
get: function () { return this._serviceName; },
enumerable: true,
configurable: true
});
Object.defineProperty(GoCloudStorage.prototype, "className", {
get: function () { return this._className; },
enumerable: true,
configurable: true
});
Object.defineProperty(GoCloudStorage.prototype, "ui", {
get: function () { return this._ui; },
enumerable: true,
configurable: true
});
GoCloudStorage.prototype.authorize = function (refreshToken) {
if (refreshToken === void 0) { refreshToken = false; }
return new Promise(function (resolve, reject) {
reject('authorize not implemented');
});
};
GoCloudStorage.prototype.makeDeferredPromise = function () {
var res;
var rej;
var promise = new Promise(function (resolve, reject) {
res = resolve;
rej = reject;
});
promise.resolve = res;
promise.reject = rej;
return promise;
};
GoCloudStorage.prototype.getUserInfo = function () {
return new Promise(function (resolve, reject) {
reject('getUserInfo not implemented');
});
};
GoCloudStorage.prototype.hideUI = function (isActionCanceled) {
if (isActionCanceled === void 0) { isActionCanceled = false; }
var storage = this;
storage.ui.style.visibility = 'hidden';
if (isActionCanceled) {
var action = document.getElementById('actionButton').innerHTML;
storage._deferredPromise.promise.resolve(action + ' canceled by user');
storage._deferredPromise.promise = storage.makeDeferredPromise();
}
};
GoCloudStorage.prototype.checkFileExists = function (path) {
return new Promise(function (resolve, reject) {
reject('checkFileExists not implemented');
});
};
GoCloudStorage.prototype.getFile = function (path) {
return new Promise(function (resolve, reject) {
throw Error('getFile not implemented');
});
};
GoCloudStorage.prototype.showUI = function (action) {
return new Promise(function (resolve, reject) {
throw Error('showUI not implemented');
});
};
GoCloudStorage.prototype.create = function (path, saveBefore) {
if (saveBefore === void 0) { saveBefore = false; }
var storage = this;
function makeNewDiagram(d) {
if (storage.defaultModel)
d.model = go.Model.fromJson(JSON.parse(storage.defaultModel));
else
d.model = new go.GraphLinksModel();
}
return new Promise(function (resolve, reject) {
if (saveBefore) {
storage.promptUserToSaveBeforeNew().then(function (resp) {
if (resp) {
storage.saveWithUI().then(function (diagramFile) {
storage.currentDiagramFile = { name: null, id: null, path: null };
if (storage.managedDiagrams instanceof go.Diagram) {
makeNewDiagram(storage.managedDiagrams);
}
else {
for (var i = 0; i < storage.managedDiagrams.length; i++) {
makeNewDiagram(storage.managedDiagrams[i]);
}
}
if (storage.isAutoSaving) {
if (path) {
resolve(storage.save(path));
}
else
resolve(storage.saveWithUI());
}
else
resolve('New diagram created.');
});
}
else {
storage.currentDiagramFile = { name: null, id: null, path: null };
if (storage.managedDiagrams instanceof go.Diagram) {
makeNewDiagram(storage.managedDiagrams);
}
else {
for (var i = 0; i < storage.managedDiagrams.length; i++) {
makeNewDiagram(storage.managedDiagrams[i]);
}
}
if (storage.isAutoSaving) {
if (path) {
resolve(storage.save(path));
}
else
resolve(storage.saveWithUI());
}
else
resolve('New diagram created.');
}
});
}
if (!saveBefore) {
storage.currentDiagramFile = { name: null, id: null, path: null };
if (storage.managedDiagrams instanceof go.Diagram) {
makeNewDiagram(storage.managedDiagrams);
}
else {
for (var i = 0; i < storage.managedDiagrams.length; i++) {
makeNewDiagram(storage.managedDiagrams[i]);
}
}
if (storage.isAutoSaving) {
if (path) {
resolve(storage.save(path));
}
else
resolve(storage.saveWithUI());
}
else
resolve('New diagram created.');
}
});
};
GoCloudStorage.prototype.promptUserToSaveBeforeNew = function () {
return new Promise(function (resolve, reject) {
var d = document.getElementById('gcs-save-before-new');
if (d) {
document.body.removeChild(d);
}
var div = document.createElement('div');
div.id = 'gcs-save-before-new';
var p = document.createElement('p');
p.innerText = 'Save current diagram(s) before creating a new file?';
var yb = document.createElement('button');
yb.innerText = 'Yes';
var nb = document.createElement('button');
nb.innerText = 'No';
yb.onclick = function () {
document.body.removeChild(div);
resolve(true);
};
nb.onclick = function () {
document.body.removeChild(div);
resolve(false);
};
nb.style['float'] = 'right';
div.style['font-family'] = 'Arial, Helvetica, sans-serif';
div.style['width'] = '400px';
div.style['top'] = '25%';
div.style['left'] = '40%';
div.style['position'] = 'absolute';
div.style['border'] = '1px solid black';
div.style['padding'] = '10px';
div.style['box-shadow'] = '10px 10px 5px #888888';
div.style['background'] = 'white';
div.style['z-index'] = '100';
div.appendChild(p);
div.appendChild(yb);
div.appendChild(nb);
document.body.appendChild(div);
});
};
GoCloudStorage.prototype.makeSaveFile = function () {
var item = '{\n';
var storage = this;
if (storage.managedDiagrams.length === 0)
return;
for (var i = 0; i < storage.managedDiagrams.length; i++) {
var diagram = storage.managedDiagrams[i];
var div = diagram.div.id;
var _model = diagram.model.toJson();
item += '"' + div + '"' + ': ' + diagram.model.toJson();
if (i + 1 !== storage.managedDiagrams.length)
item += ',\n';
}
item += '\n}';
return item;
};
GoCloudStorage.prototype.loadFromFileContents = function (fileContents) {
var models = JSON.parse(fileContents);
for (var divId in models) {
var model = models[divId];
var div = document.getElementById(divId);
var diagram = go.Diagram.fromDiv(div);
if (diagram) {
diagram.model = go.Model.fromJson(JSON.stringify(model));
}
else {
throw Error('No Diagram on page is associated with a div with id ' + divId);
}
}
};
GoCloudStorage.prototype.saveWithUI = function () {
return new Promise(function (resolve, reject) {
reject('saveWithUI not implemented');
});
};
GoCloudStorage.prototype.save = function (path) {
return new Promise(function (resolve, reject) {
reject('save not implemented');
});
};
GoCloudStorage.prototype.load = function (path) {
return new Promise(function (resolve, reject) {
reject('load not implemented');
});
};
GoCloudStorage.prototype.loadWithUI = function () {
return new Promise(function (resolve, reject) {
reject('loadWithUI not implemented');
});
};
GoCloudStorage.prototype.remove = function (path) {
return new Promise(function (resolve, reject) {
reject('remove not implemented');
});
};
GoCloudStorage.prototype.removeWithUI = function () {
return new Promise(function (resolve, reject) {
reject('removeWithUI not implemented');
});
};
return GoCloudStorage;
}());
exports.GoCloudStorage = GoCloudStorage;
/***/ }),
/* 1 */
/***/ (function(module, exports) {
module.exports = go;
/***/ }),
/* 2 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
module.exports = {
GoLocalStorage: __webpack_require__(3).GoLocalStorage,
GoDropBox: __webpack_require__(4).GoDropBox,
GoGoogleDrive: __webpack_require__(5).GoGoogleDrive,
GoOneDrive: __webpack_require__(6).GoOneDrive,
GoNetCore: __webpack_require__(7).GoNetCore,
GoCloudStorageManager: __webpack_require__(8).GoCloudStorageManager
};
/***/ }),
/* 3 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var __extends = (this && this.__extends) || (function () {
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]; };
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var gcs = __webpack_require__(0);
var GoLocalStorage = (function (_super) {
__extends(GoLocalStorage, _super);
function GoLocalStorage(managedDiagrams, defaultModel, iconsRelativeDirectory) {
var _this = _super.call(this, managedDiagrams, defaultModel, null, iconsRelativeDirectory) || this;
try {
_this._localStorage = window.localStorage;
}
catch (e) {
throw new Error('Cannot access localStorage. Make sure your browser supports localStorage.' +
'If so, and this issue persists, try unblocking third-party cookies and site data in your browser settings');
}
_this.ui.id = 'goLocalStorageCustomFilepicker';
_this._serviceName = 'Local Storage';
_this._className = 'GoLocalStorage';
return _this;
}
Object.defineProperty(GoLocalStorage.prototype, "localStorage", {
get: function () { return this._localStorage; },
enumerable: true,
configurable: true
});
GoLocalStorage.prototype.authorize = function (refreshToken) {
if (refreshToken === void 0) { refreshToken = false; }
var storage = this;
return new Promise(function (resolve, reject) {
try {
storage.localStorage.setItem('item', 'item');
storage.localStorage.removeItem('item');
resolve(true);
}
catch (e) {
resolve(false);
}
});
};
GoLocalStorage.prototype.showUI = function (action, numAdditionalFiles) {
var storage = this;
var ui = storage.ui;
var spacestring = 'qwe45qw34';
if (!numAdditionalFiles)
numAdditionalFiles = 0;
var maxFilesToShow = GoLocalStorage._MIN_FILES_IN_UI + numAdditionalFiles;
ui.innerHTML = "
";
var title = action + ' Diagram File';
ui.innerHTML += '' + title + '
There may be more diagram files not shown. Click here to try loading more.
"; document.getElementById('localStorageLoadMoreFiles').onclick = function () { storage.showUI(action, num_1); }; } ui.appendChild(filesDiv); if (storage.currentDiagramFile.id) { var str = storage.currentDiagramFile.id.replace(/ /g, spacestring); var el = document.getElementById(str + '-label'); if (el) el.style.fontStyle = 'italic'; } if (action === 'Save') { var userInputDiv = document.createElement('div'); userInputDiv.id = 'userInputDiv'; userInputDiv.innerHTML += 'Save Diagram As '; ui.appendChild(userInputDiv); } var submitDiv = document.createElement('div'); submitDiv.id = 'submitDiv'; var actionButton = document.createElement('button'); actionButton.textContent = action; actionButton.id = 'actionButton'; actionButton.onclick = function () { storage.processUIResult(action); }; submitDiv.appendChild(actionButton); ui.appendChild(submitDiv); var cancelDiv = document.createElement('div'); var cancelButton = document.createElement('button'); cancelButton.id = 'cancelButton'; cancelButton.textContent = 'Cancel'; cancelButton.onclick = function () { storage.hideUI(true); }; cancelDiv.appendChild(cancelButton); ui.appendChild(cancelDiv); return storage._deferredPromise['promise']; }; GoLocalStorage.prototype.processUIResult = function (action) { var storage = this; function getSelectedFile() { var radios = document.getElementsByName('localStorageFile'); var selectedFile = null; for (var i = 0; i < radios.length; i++) { if (radios[i].checked) { selectedFile = radios[i].id.replace(/qwe45qw34/g, ' '); } } if (selectedFile) return selectedFile; else return null; } var file = getSelectedFile(); switch (action) { case 'Save': { var name_1 = document.getElementById('userInput').value; if (name_1) { name_1 += '.diagram'; storage.save(name_1); } else { } break; } case 'Load': { storage.load(file); break; } case 'Delete': { storage.remove(file); break; } } storage.hideUI(); }; GoLocalStorage.prototype.getFile = function (path) { if (path.indexOf('.diagram') === -1) path += '.diagram'; return new Promise(function (resolve, reject) { var fileContent = (!!window.localStorage.getItem(path)) ? window.localStorage.getItem(path) : null; var file = { name: path, content: fileContent, path: path, id: path }; resolve(file); }); }; GoLocalStorage.prototype.checkFileExists = function (path) { if (path.indexOf('.diagram') === -1) path += '.diagram'; return new Promise(function (resolve, reject) { var fileExists = !!(window.localStorage.getItem(path)); resolve(fileExists); }); }; GoLocalStorage.prototype.saveWithUI = function () { var storage = this; return new Promise(function (resolve, reject) { resolve(storage.showUI('Save')); }); }; GoLocalStorage.prototype.save = function (path) { var storage = this; return new Promise(function (resolve, reject) { if (path) { if (path.indexOf('.diagram') === -1) path += '.diagram'; var item = storage.makeSaveFile(); storage.localStorage.setItem(path, item); var savedFile = { name: path, id: path, path: path }; storage.currentDiagramFile = savedFile; resolve(savedFile); storage._deferredPromise['promise'].resolve(savedFile); storage._deferredPromise['promise'] = storage.makeDeferredPromise(); } else if (storage.currentDiagramFile.path) { var saveName = storage.currentDiagramFile['path']; var savedFile = { name: saveName, path: saveName, id: saveName }; var item = storage.makeSaveFile(); storage.localStorage.setItem(saveName, item); resolve(saveName); } else { resolve(storage.saveWithUI()); } }); }; GoLocalStorage.prototype.loadWithUI = function () { var storage = this; return new Promise(function (resolve, reject) { resolve(storage.showUI('Load')); }).catch(function (e) { throw Error(e); }); }; GoLocalStorage.prototype.load = function (path) { var storage = this; return new Promise(function (resolve, reject) { if (path) { var fileContents = storage.localStorage.getItem(path); if (fileContents) { storage.loadFromFileContents(fileContents); var loadedFile = { name: path, id: path, path: path }; storage.currentDiagramFile = loadedFile; resolve(loadedFile); storage._deferredPromise.promise.resolve(loadedFile); storage._deferredPromise.promise = storage.makeDeferredPromise(); } else throw Error('Cannot load file from local storage with path ' + path); } else throw Error('Cannot load file from local storage with path ' + path); }).catch(function (e) { throw Error(e); }); }; GoLocalStorage.prototype.removeWithUI = function () { var storage = this; return new Promise(function (resolve, reject) { resolve(storage.showUI('Delete')); }); }; GoLocalStorage.prototype.remove = function (path) { var storage = this; return new Promise(function (resolve, reject) { if (path) { var deletedFile = { name: path, path: path, id: path }; if (storage.currentDiagramFile && path === storage.currentDiagramFile['name']) storage.currentDiagramFile = { name: null, path: null, id: null }; storage.localStorage.removeItem(path); resolve(deletedFile); storage._deferredPromise['promise'].resolve(deletedFile); storage._deferredPromise['promise'] = storage.makeDeferredPromise(); } else throw Error('Cannot delete file from local storage with path ' + path); }); }; GoLocalStorage._MIN_FILES_IN_UI = 100; return GoLocalStorage; }(gcs.GoCloudStorage)); exports.GoLocalStorage = GoLocalStorage; /***/ }), /* 4 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var __extends = (this && this.__extends) || (function () { 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]; }; return function (d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); Object.defineProperty(exports, "__esModule", { value: true }); var gcs = __webpack_require__(0); var GoDropBox = (function (_super) { __extends(GoDropBox, _super); function GoDropBox(managedDiagrams, clientId, defaultModel, iconsRelativeDirectory) { var _this = _super.call(this, managedDiagrams, defaultModel, clientId, iconsRelativeDirectory) || this; if (window['Dropbox']) { var Dropbox = window['Dropbox']; _this._dropbox = new Dropbox({ clientId: clientId }); } _this.menuPath = ''; _this.ui.id = 'goDropBoxCustomFilepicker'; _this._serviceName = 'Dropbox'; _this._className = 'GoDropBox'; _this._options = { success: function (files) { alert("Here's the file link: " + files[0].link); }, cancel: function () { }, linkType: 'direct', multiselect: false, extensions: ['.pdf', '.doc', '.docx', '.diagram'], folderselect: false }; return _this; } Object.defineProperty(GoDropBox.prototype, "dropbox", { get: function () { return this._dropbox; }, enumerable: true, configurable: true }); Object.defineProperty(GoDropBox.prototype, "menuPath", { get: function () { return this._menuPath; }, set: function (value) { this._menuPath = value; }, enumerable: true, configurable: true }); GoDropBox.prototype.authorize = function (refreshToken) { if (refreshToken === void 0) { refreshToken = false; } var storage = this; return new Promise(function (resolve, reject) { if (refreshToken) { storage.maybeSaveAppState(); var authUrl = storage.dropbox.getAuthenticationUrl(window.location.href); window.location.href = authUrl; resolve(false); } else if (!storage.dropbox.getAccessToken()) { if (storage.getAccessTokenFromUrl()) { storage.dropbox.setAccessToken(storage.getAccessTokenFromUrl()); resolve(true); } else { storage.maybeSaveAppState(); var authUrl = storage.dropbox.getAuthenticationUrl(window.location.href); window.location.href = authUrl; resolve(false); } } storage.maybeLoadAppState(); resolve(true); }); }; GoDropBox.prototype.getAccessTokenFromUrl = function () { var accessToken = window.location.hash.substring(window.location.hash.indexOf('=') + 1, window.location.hash.indexOf('&')); return !!accessToken ? accessToken : null; }; GoDropBox.prototype.maybeSaveAppState = function () { var storage = this; try { var item = storage.makeSaveFile(); window.localStorage.setItem('gdb-' + storage.clientId, item); } catch (e) { throw new Error('Local storage not supported; diagrams model data will not be preserved during Dropboc authentication.'); } }; GoDropBox.prototype.maybeLoadAppState = function () { var storage = this; try { var fileContents = window.localStorage.getItem('gdb-' + storage.clientId); storage.loadFromFileContents(fileContents); localStorage.removeItem('gdb-' + storage.clientId); } catch (e) { } }; GoDropBox.prototype.signOut = function () { var storage = this; var dbx = storage.dropbox; storage.maybeSaveAppState(); dbx.setAccessToken(null); dbx.authTokenRevoke(); }; GoDropBox.prototype.getUserInfo = function () { var storage = this; return new Promise(function (resolve, reject) { if (!storage.dropbox.getAccessToken() && window.location.hash.indexOf('access_token') === -1) { storage.authorize(true); } else if (!storage.dropbox.getAccessToken() && window.location.hash.indexOf('access_token') === 1) { storage.authorize(false); } storage.dropbox.usersGetCurrentAccount(null).then(function (userData) { resolve(userData); }).catch(function (e) { if (e.status === 400) { storage.authorize(true); } }); }); }; GoDropBox.prototype.showUI = function () { var storage = this; var ui = storage.ui; ui.innerHTML = ''; ui.style.visibility = 'visible'; ui.innerHTML = "There may be more diagram files not shown. Click here to try loading more.
"; document.getElementById('netCoreLoadMoreFiles').onclick = function () { storage.showUI(action, num_1); }; } ui.appendChild(filesDiv); if (storage.currentDiagramFile.id) { var el = document.getElementById(storage.currentDiagramFile.id + '-label'); if (el) el.style.fontStyle = 'italic'; } if (action === 'Save') { var userInputDiv = document.createElement('div'); userInputDiv.id = 'userInputDiv'; userInputDiv.innerHTML += 'Save Diagram As '; ui.appendChild(userInputDiv); } var submitDiv = document.createElement('div'); submitDiv.id = 'submitDiv'; var actionButton = document.createElement('button'); actionButton.textContent = action; actionButton.id = 'actionButton'; actionButton.onclick = function () { storage.processUIResult(action); }; submitDiv.appendChild(actionButton); ui.appendChild(submitDiv); var cancelDiv = document.createElement('div'); var cancelButton = document.createElement('button'); cancelButton.id = 'cancelButton'; cancelButton.textContent = 'Cancel'; cancelButton.onclick = function () { storage.hideUI(true); }; cancelDiv.appendChild(cancelButton); ui.appendChild(cancelDiv); }); return storage._deferredPromise['promise']; }; GoNetCore.prototype.processUIResult = function (action) { var storage = this; function getSelectedFile() { var radios = document.getElementsByName('localStorageFile'); var selectedFile = null; for (var i = 0; i < radios.length; i++) { if (radios[i].checked) { selectedFile = radios[i].id.replace(/qwe45qw34/g, ' '); } } if (selectedFile) return selectedFile; else return null; } var file = getSelectedFile(); switch (action) { case 'Save': { var name_2 = document.getElementById('userInput').value; if (name_2) { name_2 += '.diagram'; storage.save(name_2); } else { } break; } case 'Load': { storage.load(file); break; } case 'Delete': { storage.remove(file); break; } } storage.hideUI(); }; GoNetCore.prototype.getFile = function (path) { var storage = this; var url = storage.rootEndpoint + path; return new Promise(function (resolve, reject) { if (path) { var xhr_1 = new XMLHttpRequest(); xhr_1.open('GET', url, true); xhr_1.onreadystatechange = function () { if (xhr_1.readyState === 4) { if (xhr_1.status >= 200 && xhr_1.status < 300) { resolve((JSON.parse(xhr_1.response))); } } }; xhr_1.send(); } else reject('Cannot get diagram file from ASP .NET Core Web API with id ' + path); }); }; GoNetCore.prototype.getFiles = function () { var storage = this; return new Promise(function (resolve, reject) { var xhr = new XMLHttpRequest(); xhr.open('GET', storage.rootEndpoint, true); xhr.onreadystatechange = function () { if (xhr.readyState === 4) { if (xhr.status >= 200 && xhr.status < 300) { resolve(JSON.parse(xhr.response)); } else reject(xhr.response); } }; xhr.send(); }); }; GoNetCore.prototype.checkFileExists = function (path) { var storage = this; var url = storage.rootEndpoint + path; return new Promise(function (resolve, reject) { var xhr = new XMLHttpRequest(); xhr.open('GET', url, true); xhr.onreadystatechange = function () { if (xhr.readyState === 4) { if (xhr.status >= 200 && xhr.status < 300) { resolve((true)); } else { resolve(false); } } }; xhr.send(); }); }; GoNetCore.prototype.saveWithUI = function () { var storage = this; return new Promise(function (resolve, reject) { resolve(storage.showUI('Save')); }); }; GoNetCore.prototype.save = function (path) { var storage = this; return new Promise(function (resolve, reject) { if (storage.currentDiagramFile.id && !path) { var xhr_2 = new XMLHttpRequest(); storage.getFile(storage.currentDiagramFile.id).then(function (resp) { var item = { id: storage.currentDiagramFile.id, name: storage.currentDiagramFile.name, file: storage.makeSaveFile() }; var savedFile = { id: item.id, name: item.name, path: item.name }; xhr_2.open('PUT', storage.rootEndpoint + storage.currentDiagramFile.id, true); xhr_2.setRequestHeader('Content-Type', 'application/json; charset=utf-8'); xhr_2.onreadystatechange = function () { if (xhr_2.readyState === 4) { if (xhr_2.status > 200 && xhr_2.status < 300) { resolve(savedFile); } else { reject(xhr_2.responseText); } } }; xhr_2.send(JSON.stringify(item)); }); } else { var xhr_3 = new XMLHttpRequest(); var item_1 = { name: (path !== null) ? path : 'New diagram', file: storage.makeSaveFile() }; xhr_3.open('POST', storage.rootEndpoint, true); xhr_3.setRequestHeader('Content-Type', 'application/json; charset=utf-8'); xhr_3.onreadystatechange = function () { if (xhr_3.readyState === 4) { if (xhr_3.status > 200 && xhr_3.status < 300) { var id = JSON.parse(xhr_3.response).id; var savedFile = { id: id, name: item_1.name, path: item_1.name }; storage.currentDiagramFile = savedFile; resolve(savedFile); storage._deferredPromise['promise'].resolve(savedFile); storage._deferredPromise['promise'] = storage.makeDeferredPromise(); } else { reject(xhr_3.responseText); } } }; xhr_3.send(JSON.stringify(item_1)); } }); }; GoNetCore.prototype.loadWithUI = function () { var storage = this; return new Promise(function (resolve, reject) { resolve(storage.showUI('Load')); }).catch(function (e) { throw Error(e); }); }; GoNetCore.prototype.load = function (path) { var storage = this; return new Promise(function (resolve, reject) { if (path) { var xhr_4 = new XMLHttpRequest(); xhr_4.open('GET', storage.rootEndpoint + path, true); xhr_4.onreadystatechange = function () { if (xhr_4.readyState === 4) { if (xhr_4.status >= 200 && xhr_4.status < 300) { var respJSON = JSON.parse(xhr_4.response); storage.loadFromFileContents(respJSON.file); var loadedFile = { id: respJSON.id, path: respJSON.name, name: respJSON.name }; storage.currentDiagramFile = loadedFile; resolve(loadedFile); storage._deferredPromise.promise.resolve(loadedFile); storage._deferredPromise.promise = storage.makeDeferredPromise(); } else { reject(xhr_4.responseText); } } }; xhr_4.send(); } else throw Error('Cannot load file from .NET Core Web API with path ' + path); }).catch(function (e) { throw Error(e); }); }; GoNetCore.prototype.removeWithUI = function () { var storage = this; return new Promise(function (resolve, reject) { resolve(storage.showUI('Delete')); }); }; GoNetCore.prototype.remove = function (path) { var storage = this; return new Promise(function (resolve, reject) { if (path) { storage.getFile(path).then(function (resp) { var deletedFile = { name: resp.name, path: resp.name, id: path }; if (storage.currentDiagramFile && resp.name === storage.currentDiagramFile.name) storage.currentDiagramFile = { name: null, path: null, id: null }; var xhr = new XMLHttpRequest(); xhr.open('DELETE', storage.rootEndpoint + path, true); xhr.onreadystatechange = function () { if (xhr.readyState === 4) { if (xhr.status >= 200 && xhr.status < 300) { resolve(deletedFile); storage._deferredPromise['promise'].resolve(deletedFile); storage._deferredPromise['promise'] = storage.makeDeferredPromise(); } else { reject(xhr.responseText); } } }; xhr.send(); }); } else throw Error('Cannot delete file from local storage with id ' + path); }); }; GoNetCore._MIN_FILES_IN_UI = 100; return GoNetCore; }(gcs.GoCloudStorage)); exports.GoNetCore = GoNetCore; /***/ }), /* 8 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var go = __webpack_require__(1); var gcs = __webpack_require__(0); var GoCloudStorageManager = (function () { function GoCloudStorageManager(storages, iconsRelativeDirectory) { if (storages instanceof Array) { var storagesSet = new go.Set(); for (var i = 0; i < storages.length; i++) { if (!(storages[i] instanceof gcs.GoCloudStorage)) { throw new Error("Cannot create GoCloudStorageManager; provided 'storages' parameter elements are not all of type GoCloudStorage"); } else { storagesSet.add(storages[i]); } } storages = storagesSet; } if (!(storages instanceof go.Set) || !storages) throw Error("Cannot create GoCloudStorageManager with provided 'storages' parameter"); var storageManager = this; storageManager._storages = storages; storageManager._currentStorage = storages.first(); var menu = document.createElement('div'); menu.id = 'goCloudStorageManagerMenu'; storageManager._menu = menu; storageManager._deferredPromise = { promise: gcs.GoCloudStorage.prototype.makeDeferredPromise() }; storageManager._iconsRelativeDirectory = (!!iconsRelativeDirectory) ? iconsRelativeDirectory : '../goCloudStorageIcons/'; if (iconsRelativeDirectory) { storageManager._storages.iterator.each(function (storage) { storage.iconsRelativeDirectory = iconsRelativeDirectory; }); } if (window.location.href.indexOf('account_id=dbid') !== -1) { storages.iterator.each(function (storage) { if (storage.className === 'GoDropBox') { storageManager._currentStorage = storage; storageManager.currentStorage.authorize(); } }); } document.getElementsByTagName('body')[0].appendChild(storageManager.menu); } Object.defineProperty(GoCloudStorageManager.prototype, "storages", { get: function () { return this._storages; }, enumerable: true, configurable: true }); Object.defineProperty(GoCloudStorageManager.prototype, "iconsRelativeDirectory", { get: function () { return this._iconsRelativeDirectory; }, set: function (value) { this._iconsRelativeDirectory = value; }, enumerable: true, configurable: true }); Object.defineProperty(GoCloudStorageManager.prototype, "menu", { get: function () { return this._menu; }, enumerable: true, configurable: true }); Object.defineProperty(GoCloudStorageManager.prototype, "currentStorage", { get: function () { return this._currentStorage; }, set: function (value) { this._currentStorage = value; }, enumerable: true, configurable: true }); GoCloudStorageManager.prototype.create = function (saveBeforeCreate) { if (saveBeforeCreate === void 0) { saveBeforeCreate = false; } var storageManager = this; return new Promise(function (resolve, reject) { resolve(storageManager.handleAction('Create', saveBeforeCreate)); }); }; GoCloudStorageManager.prototype.load = function () { var storageManager = this; return new Promise(function (resolve, reject) { resolve(storageManager.handleAction('Load')); }); }; GoCloudStorageManager.prototype.remove = function () { var storageManager = this; return new Promise(function (resolve, reject) { resolve(storageManager.handleAction('Remove')); }); }; GoCloudStorageManager.prototype.save = function (isSaveAs) { if (isSaveAs === void 0) { isSaveAs = true; } var storageManager = this; return new Promise(function (resolve, reject) { if (isSaveAs) resolve(storageManager.handleAction('SaveAs')); else resolve(storageManager.handleAction('Save')); }); }; GoCloudStorageManager.prototype.showMessage = function (msg, seconds) { if (!seconds) seconds = 2; var messageBox = document.createElement('div'); messageBox.id = 'goCloudStorageManagerMessageBox'; messageBox.innerHTML = '' + msg + '
'; document.body.appendChild(messageBox); setTimeout(function () { messageBox.style.opacity = '0'; setTimeout(function () { messageBox.parentNode.removeChild(messageBox); }, 1000); }, 1000 * seconds); }; GoCloudStorageManager.prototype.getStorageIconPath = function (className) { var storageManager = this; if (storageManager.iconsRelativeDirectory == null || storageManager.iconsRelativeDirectory === undefined) return null; var src = storageManager.iconsRelativeDirectory; switch (className) { case 'GoGoogleDrive': { src += 'googleDrive.jpg'; break; } case 'GoOneDrive': { src += 'oneDrive.png'; break; } case 'GoLocalStorage': { src += 'localStorage.png'; break; } case 'GoDropBox': { src += 'dropBox.png'; break; } } return src; }; GoCloudStorageManager.prototype.selectStorageService = function () { var storageManager = this; var storages = this.storages; return new Promise(function (resolve, reject) { var menu = storageManager.menu; var title = 'Select Storage Service'; menu.innerHTML = '' + title + '