/*! 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 + '
'; ui.style.visibility = 'visible'; var filesDiv = document.createElement('div'); filesDiv.id = 'fileOptions'; var savedDiagrams = []; var numFilesToCheck = GoLocalStorage._MIN_FILES_IN_UI + numAdditionalFiles; var numFilesChecked = 0; var hasCheckedAllFiles = false; if (storage.localStorage.length !== 0) { for (var key in storage.localStorage) { if (savedDiagrams.length < maxFilesToShow) { numFilesChecked++; var fileContent = storage.localStorage.getItem(key); if (fileContent && (fileContent.indexOf('GraphLinksModel') !== -1 || fileContent.indexOf('TreeModel') !== -1)) { var file = { key: key, model: fileContent }; savedDiagrams.push(file); } if (numFilesChecked === storage.localStorage.length) hasCheckedAllFiles = true; } } } else hasCheckedAllFiles = true; if (savedDiagrams.length !== 0) { for (var i = 0; i < savedDiagrams.length; i++) { var kvp = savedDiagrams[i]; var file = kvp['key']; var fileId = file.replace(/ /g, spacestring); if (action !== 'Save') { filesDiv.innerHTML += "
" + '" + '' + '
'; } else { filesDiv.innerHTML += "
" + '' + '
'; } } } if (!hasCheckedAllFiles) { var num_1 = numAdditionalFiles + 50; filesDiv.innerHTML += "

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 = "Save Diagram As
"; var userInputDiv = document.createElement('div'); userInputDiv.id = 'userInputDiv'; userInputDiv.innerHTML += ''; ui.appendChild(userInputDiv); var submitDiv = document.createElement('div'); submitDiv.id = 'submitDiv'; var actionButton = document.createElement('button'); actionButton.id = 'actionButton'; actionButton.textContent = 'Save'; actionButton.onclick = function () { var input = (document.getElementById('gdb-userInput')); var val = input.value; if (val !== '' && val !== undefined && val != null) { ui.style.visibility = 'hidden'; storage.saveWithUI(val); } }; submitDiv.appendChild(actionButton); ui.appendChild(submitDiv); var cancelDiv = document.createElement('div'); cancelDiv.id = 'cancelDiv'; 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; }; GoDropBox.prototype.hideUI = function (isActionCanceled) { var storage = this; storage.menuPath = ''; _super.prototype.hideUI.call(this, isActionCanceled); }; GoDropBox.prototype.processUIResult = function (action) { var storage = this; function getSelectedFilepath() { var radios = document.getElementsByName('dropBoxFile'); var selectedFile = null; for (var i = 0; i < radios.length; i++) { if (radios[i].checked) { selectedFile = radios[i].getAttribute('data'); } } return selectedFile; } var filePath = getSelectedFilepath(); switch (action) { case 'Save': { if (storage.menuPath || storage.menuPath === '') { var name_1 = document.getElementById('userInput').value; if (name_1) { if (name_1.indexOf('.diagram') === -1) name_1 += '.diagram'; storage.save(storage.menuPath + '/' + name_1); } else { console.log('Proposed file name is not valid'); } } break; } case 'Load': { storage.load(filePath); break; } case 'Delete': { storage.remove(filePath); break; } } storage.hideUI(); }; GoDropBox.prototype.checkFileExists = function (path) { var storage = this; if (path.indexOf('.diagram') === -1) path += '.diagram'; return new Promise(function (resolve, reject) { storage.dropbox.filesGetMetadata({ path: path }).then(function (resp) { if (resp) resolve(true); }).catch(function (err) { resolve(false); }); }); }; GoDropBox.prototype.getFile = function (path) { var storage = this; if (path.indexOf('.diagram') === -1) path += '.diagram'; return storage.dropbox.filesGetMetadata({ path: path }).then(function (resp) { if (resp) return resp; }).catch(function (err) { return null; }); }; GoDropBox.prototype.saveWithUI = function (filename) { var storage = this; if (filename === undefined || filename == null) { return new Promise(function (resolve, reject) { resolve(storage.showUI()); }); } else { if (filename.length < 8) { filename += '.diagram'; } else { var lastEight = filename.substring(filename.length - 8, filename.length); if (lastEight !== '.diagram') { filename += '.diagram'; } } return new Promise(function (resolve, reject) { storage._options.success = function (resp) { var a = 3; var savedFile = null; storage.dropbox.filesListFolder({ path: '', recursive: true }).then(function (r) { var files = r.entries; var possibleFiles = []; var latestestDate = new Date(-8400000); var latestFile = null; for (var i = 0; i < files.length; i++) { var file = files[i]; var dateModified = new Date(file.server_modified); if (dateModified != null && dateModified !== undefined && dateModified instanceof Date) { if (dateModified > latestestDate) { dateModified = latestestDate; latestFile = file; } } } var savedFile = { name: latestFile.name, path: latestFile.path_lower, id: latestFile.id }; storage.currentDiagramFile = savedFile; resolve(savedFile); storage._deferredPromise.promise.resolve(savedFile); storage._deferredPromise.promise = storage.makeDeferredPromise(); }); }; function makeTextFile(text) { var data = new Blob([text], { type: 'text/plain' }); var uri = ''; uri = window.URL.createObjectURL(data); return uri; } var dataURI = 'data:text/html,' + encodeURIComponent(storage.makeSaveFile()); var Dropbox = window['Dropbox']; Dropbox.save(dataURI, filename, storage._options); }); } }; GoDropBox.prototype.save = function (path) { var storage = this; return new Promise(function (resolve, reject) { if (path) { storage.dropbox.filesUpload({ contents: storage.makeSaveFile(), path: path, autorename: true, mode: { '.tag': 'add' }, mute: false }).then(function (resp) { var savedFile = { name: resp.name, id: resp.id, path: resp.path_lower }; storage.currentDiagramFile = savedFile; resolve(savedFile); storage._deferredPromise.promise.resolve(savedFile); storage._deferredPromise.promise = storage.makeDeferredPromise(); }).catch(function (e) { if (e.status === 400) { storage.authorize(true); } }); } else if (storage.currentDiagramFile.path) { path = storage.currentDiagramFile.path; storage.dropbox.filesUpload({ contents: storage.makeSaveFile(), path: path, autorename: false, mode: { '.tag': 'overwrite' }, mute: true }).then(function (resp) { var savedFile = { name: resp.name, id: resp.id, path: resp.path_lower }; resolve(savedFile); }).catch(function (e) { if (e.status === 400) { storage.authorize(true); } }); } else { resolve(storage.saveWithUI()); } }); }; GoDropBox.prototype.loadWithUI = function () { var storage = this; storage._options.success = function (r) { var file = r[0]; storage.dropbox.filesGetMetadata({ path: file.id }).then(function (resp) { var path = resp.path_display; storage.load(path); }); }; var Dropbox = window['Dropbox']; Dropbox.choose(storage._options); return storage._deferredPromise.promise; }; GoDropBox.prototype.load = function (path) { var storage = this; return new Promise(function (resolve, reject) { if (path) { storage.dropbox.filesGetTemporaryLink({ path: path }).then(function (resp) { var link = resp.link; storage.currentDiagramFile.name = resp.metadata.name; storage.currentDiagramFile.id = resp.metadata.id; storage.currentDiagramFile.path = path; var xhr = new XMLHttpRequest(); xhr.open('GET', link, true); xhr.setRequestHeader('Authorization', 'Bearer ' + storage.dropbox.getAccessToken()); xhr.onload = function () { if (xhr.readyState === 4 && (xhr.status === 200)) { storage.loadFromFileContents(xhr.response); var loadedFile = { name: resp.metadata.name, id: resp.metadata.id, path: resp.metadata.path_lower }; resolve(loadedFile); storage._deferredPromise.promise.resolve(loadedFile); storage._deferredPromise.promise = storage.makeDeferredPromise(); } else { throw Error('Cannot load file from Dropbox with path ' + path); } }; xhr.send(); }).catch(function (e) { if (e.status === 400) { storage.authorize(true); } }); } else throw Error('Cannot load file from Dropbox with path ' + path); }); }; GoDropBox.prototype.removeWithUI = function () { var storage = this; storage._options.success = function (r) { var file = r[0]; storage.dropbox.filesGetMetadata({ path: file.id }).then(function (resp) { var path = resp.path_display; storage.remove(path); }); }; var Dropbox = window['Dropbox']; Dropbox.choose(storage._options); return storage._deferredPromise.promise; }; GoDropBox.prototype.remove = function (path) { var storage = this; return new Promise(function (resolve, reject) { if (path) { storage.dropbox.filesDelete({ path: path }).then(function (resp) { if (storage.currentDiagramFile && storage.currentDiagramFile['id'] === resp['id']) storage.currentDiagramFile = { name: null, path: null, id: null }; var deletedFile = { name: resp.name, id: resp['id'], path: resp.path_lower }; resolve(deletedFile); storage._deferredPromise.promise.resolve(deletedFile); storage._deferredPromise.promise = storage.makeDeferredPromise(); }).catch(function (e) { if (e.status === 400) { storage.authorize(true); } }); } else throw Error('Cannot delete file from Dropbox with path ' + path); }); }; return GoDropBox; }(gcs.GoCloudStorage)); exports.GoDropBox = GoDropBox; /***/ }), /* 5 */ /***/ (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 GoGoogleDrive = (function (_super) { __extends(GoGoogleDrive, _super); function GoGoogleDrive(managedDiagrams, clientId, pickerApiKey, defaultModel, iconsRelativeDirectory) { var _this = _super.call(this, managedDiagrams, defaultModel, clientId, iconsRelativeDirectory) || this; _this._scope = 'https://www.googleapis.com/auth/drive'; _this._pickerApiKey = pickerApiKey; _this._oauthToken = null; _this._gapiClient = null; _this._gapiPicker = null; _this.ui.id = 'goGoogleDriveSavePrompt'; _this._serviceName = 'Google Drive'; _this._className = 'GoGoogleDrive'; return _this; } Object.defineProperty(GoGoogleDrive.prototype, "pickerApiKey", { get: function () { return this._pickerApiKey; }, enumerable: true, configurable: true }); Object.defineProperty(GoGoogleDrive.prototype, "scope", { get: function () { return this._scope; }, enumerable: true, configurable: true }); Object.defineProperty(GoGoogleDrive.prototype, "gapiClient", { get: function () { return this._gapiClient; }, enumerable: true, configurable: true }); Object.defineProperty(GoGoogleDrive.prototype, "gapiPicker", { get: function () { return this._gapiPicker; }, enumerable: true, configurable: true }); GoGoogleDrive.prototype.authorize = function (refreshToken) { if (refreshToken === void 0) { refreshToken = false; } var storage = this; var gapi = null; if (window['gapi']) gapi = window['gapi']; else return; if (refreshToken) { var href = document.location.href; document.location.href = 'https://www.google.com/accounts/Logout?continue=https://appengine.google.com/_ah/logout?continue=' + href; } return new Promise(function (resolve, reject) { function auth() { gapi.auth.authorize({ 'client_id': storage.clientId, 'scope': storage.scope, 'immediate': false }, function (authResult) { if (authResult && !authResult.error) { storage._oauthToken = authResult.access_token; } storage._gapiClient = gapi.client; if (window['google']) storage._gapiPicker = window['google']['picker']; resolve(true); }); } gapi.load('client:auth', auth); gapi.load('picker', {}); }); }; GoGoogleDrive.prototype.createPicker = function (cb) { var storage = this; if (storage._oauthToken) { var appId = storage.clientId.substring(0, this.clientId.indexOf('-')); var view = new storage.gapiPicker.View(storage.gapiPicker.ViewId.DOCS); view.setMimeTypes('application/json'); view.setQuery('*.diagram'); var picker = new storage.gapiPicker.PickerBuilder() .enableFeature(storage.gapiPicker.Feature.NAV_HIDDEN) .enableFeature(storage.gapiPicker.Feature.MULTISELECT_ENABLED) .setAppId(appId) .setOrigin(window.location.protocol + '//' + window.location.host) .setOAuthToken(storage._oauthToken) .addView(view) .setDeveloperKey(storage.pickerApiKey) .setCallback(function (args) { cb(args); }) .build(); picker.setVisible(true); } }; GoGoogleDrive.prototype.getUserInfo = function () { var storage = this; return new Promise(function (resolve, reject) { var request = storage.gapiClient.request({ 'path': '/drive/v3/about', 'method': 'GET', 'params': { 'fields': 'user' }, callback: function (resp) { if (resp) resolve(resp.user); else reject(resp); } }); }); }; GoGoogleDrive.prototype.getFile = function (path) { var storage = this; return new Promise(function (resolve, reject) { var req = storage.gapiClient.request({ path: '/drive/v3/files/' + path, method: 'GET', callback: function (resp) { if (!resp.error) { resolve(resp); } else { reject(resp.error); } } }); }); }; GoGoogleDrive.prototype.checkFileExists = function (path) { var storage = this; return new Promise(function (resolve, reject) { var req = storage.gapiClient.request({ path: '/drive/v3/files/' + path, method: 'GET', callback: function (resp) { var bool = (!!resp); resolve(bool); } }); }); }; GoGoogleDrive.prototype.showUI = function () { var storage = this; var ui = storage.ui; ui.innerHTML = ''; ui.style.visibility = 'visible'; ui.innerHTML = "Save Diagram As
"; var userInputDiv = document.createElement('div'); userInputDiv.id = 'userInputDiv'; userInputDiv.innerHTML += ''; ui.appendChild(userInputDiv); var submitDiv = document.createElement('div'); submitDiv.id = 'submitDiv'; var actionButton = document.createElement('button'); actionButton.id = 'actionButton'; actionButton.textContent = 'Save'; actionButton.onclick = function () { storage.saveWithUI(); }; submitDiv.appendChild(actionButton); ui.appendChild(submitDiv); var cancelDiv = document.createElement('div'); cancelDiv.id = 'cancelDiv'; 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; }; GoGoogleDrive.prototype.saveWithUI = function () { var storage = this; var ui = storage.ui; return new Promise(function (resolve, reject) { if (ui.style.visibility === 'hidden') { resolve(storage.showUI()); } else { var saveName = document.getElementById('userInput').value; storage.save(saveName); resolve(storage.hideUI()); } }); }; GoGoogleDrive.prototype.save = function (path) { var storage = this; return new Promise(function (resolve, reject) { if (path) { if (path.indexOf('.diagram') === -1) path += '.diagram'; var overwrite_1 = false; var overwriteFile_1 = null; var request = storage.gapiClient.request({ 'path': '/drive/v3/files', 'method': 'GET', 'params': { 'q': 'trashed=false and name contains ".diagram" and mimeType = "application/json"' }, callback: function (resp) { var savedDiagrams = resp.files; if (savedDiagrams) { for (var i = 0; i < savedDiagrams.length; i++) { if (savedDiagrams[i]['name'] === path) { overwrite_1 = true; overwriteFile_1 = savedDiagrams[i]; } } } var boundary = '-------314159265358979323846'; var delimiter = '\r\n--' + boundary + '\r\n'; var closeDelim = '\r\n--' + boundary + '--'; var contentType = 'application/json'; var metadata = { 'name': path, 'mimeType': contentType }; var data = storage.makeSaveFile(); var multipartRequestBody = delimiter + 'Content-Type: application/json\r\n\r\n' + JSON.stringify(metadata) + delimiter + 'Content-Type: ' + contentType + '\r\n\r\n' + data + closeDelim; var req = storage.gapiClient.request({ 'path': '/upload/drive/v3/files', 'method': 'POST', 'params': { 'uploadType': 'multipart' }, 'headers': { 'Content-Type': 'multipart/related; boundary="' + boundary + '"' }, 'body': multipartRequestBody }); req.execute(function (response) { var savedFile = { name: response.name, id: response.id, path: response.name }; storage.currentDiagramFile = savedFile; resolve(savedFile); storage._deferredPromise.promise.resolve(savedFile); storage._deferredPromise.promise = storage.makeDeferredPromise(); }); } }); } else if (storage.currentDiagramFile.path) { var fileId = storage.currentDiagramFile.id; var saveFile = storage.makeSaveFile(); storage.gapiClient.request({ path: '/upload/drive/v3/files/' + fileId, method: 'PATCH', params: { uploadType: 'media' }, body: saveFile, callback: function (resp) { if (!resp.error) { var savedFile = { name: resp.name, id: resp.id, path: resp.name }; resolve(savedFile); } else if (resp.error.code === 401) { storage.authorize(true); } } }); } else { resolve(storage.saveWithUI()); } }); }; GoGoogleDrive.prototype.loadWithUI = function () { var storage = this; return new Promise(function (resolve, reject) { var loadFunction = function (data) { if (data.action === 'picked') { var file_1 = data.docs[0]; storage.gapiClient.request({ 'path': '/drive/v3/files/' + file_1.id + '?alt=media', 'method': 'GET', callback: function (modelData) { if (file_1.name.indexOf('.diagram') !== -1) { var loadedFile = { name: file_1.name, path: file_1.name, id: file_1.id }; resolve(storage.load(file_1.id)); storage.currentDiagramFile = loadedFile; } } }); } }; storage.createPicker(loadFunction); }); }; GoGoogleDrive.prototype.load = function (path) { var storage = this; return new Promise(function (resolve, reject) { storage.getFile(path).then(function (file) { storage.gapiClient.request({ 'path': '/drive/v3/files/' + file.id + '?alt=media', 'method': 'GET', callback: function (modelData) { if (modelData) { if (file.name.indexOf('.diagram') !== -1) { storage.loadFromFileContents(JSON.stringify(modelData)); var loadedFile = { name: file['name'], path: file['name'], id: file['id'] }; storage.currentDiagramFile = loadedFile; resolve(loadedFile); } } } }); }).catch(function (e) { reject(e.message); }); }); }; GoGoogleDrive.prototype.removeWithUI = function () { var storage = this; return new Promise(function (resolve, reject) { var deleteFunction = function (data) { if (data['action'] === 'picked') { var file = data['docs'][0]; resolve(storage.remove(file.id)); } }; storage.createPicker(deleteFunction); }); }; GoGoogleDrive.prototype.remove = function (path) { var storage = this; return new Promise(function (resolve, reject) { storage.getFile(path).then(function (deletedFile) { storage.gapiClient.request({ 'path': 'drive/v3/files/' + path, 'method': 'DELETE', callback: function () { if (storage.currentDiagramFile && path === storage.currentDiagramFile.id) storage.currentDiagramFile = { name: null, path: null, id: null }; deletedFile['path'] = deletedFile['name']; resolve(deletedFile); } }); }).catch(function (e) { reject(e.message); }); }); }; return GoGoogleDrive; }(gcs.GoCloudStorage)); exports.GoGoogleDrive = GoGoogleDrive; /***/ }), /* 6 */ /***/ (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 GoOneDrive = (function (_super) { __extends(GoOneDrive, _super); function GoOneDrive(managedDiagrams, clientId, defaultModel, iconsRelativeDirectory) { var _this = _super.call(this, managedDiagrams, defaultModel, clientId, iconsRelativeDirectory) || this; _this._oauthToken = null; _this.ui.id = 'goOneDriveSavePrompt'; if (window['OneDrive']) { _this._oneDriveFilepicker = window['OneDrive']; } _this.authorize(false); _this._serviceName = 'Microsoft OneDrive'; _this._className = 'GoOneDrive'; return _this; } Object.defineProperty(GoOneDrive.prototype, "oauthToken", { get: function () { return this._oauthToken; }, set: function (value) { this._oauthToken = value; }, enumerable: true, configurable: true }); Object.defineProperty(GoOneDrive.prototype, "oneDriveFilepicker", { get: function () { return this._oneDriveFilepicker; }, enumerable: true, configurable: true }); GoOneDrive.prototype.authorize = function (refreshToken) { var storage = this; return new Promise(function (resolve, reject) { if (!refreshToken && window.location.hash.indexOf('access_token') !== -1) { var accessToken = window.location.hash.substring(window.location.hash.indexOf('=') + 1, window.location.hash.indexOf('&')); storage.oauthToken = accessToken; resolve(true); } else if (refreshToken) { var authUrl = 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=' + storage.clientId + '&scope=files.readwrite.all&response_type=token&redirect_uri=' + window.location.href + ''; window.location.href = authUrl; resolve(true); } }); }; GoOneDrive.prototype.getUserInfo = function () { var storage = this; return new Promise(function (resolve, reject) { var xhr = new XMLHttpRequest(); if (!storage.oauthToken) { if (window.location.hash.indexOf('access_token') === -1) { reject('No acessToken in current uri'); storage.authorize(true); } else { reject('oauthToken not set'); storage.authorize(false); } } else { xhr.open('GET', 'https://graph.microsoft.com/v1.0/me'); xhr.setRequestHeader('Authorization', 'Bearer ' + storage.oauthToken); xhr.onreadystatechange = function () { if (xhr.readyState === 4 && xhr.status === 200) { resolve(JSON.parse(xhr.response)); } else if (xhr.status === 401) { storage.authorize(true); reject(xhr.response); } }; xhr.send(); } }); }; GoOneDrive.prototype.checkFileExists = function (path) { var storage = this; if (path.indexOf('.diagram') === -1) path += '.diagram'; return new Promise(function (resolve, reject) { var xhr = new XMLHttpRequest(); xhr.open('GET', 'https://graph.microsoft.com/v1.0' + path, true); xhr.setRequestHeader('Authorization', 'Bearer ' + storage.oauthToken); xhr.onreadystatechange = function () { var bool; var err; if (xhr.readyState === 4) { if (xhr.status === 200) { bool = true; } else if (xhr.status === 401) { storage.authorize(true); } else if (xhr.status === 404) { bool = false; } else { err = xhr.response; } resolve(bool); if (err) reject(err); } }; xhr.send(); }); }; GoOneDrive.prototype.getFile = function (path, token) { var storage = this; if (path.indexOf('.diagram') === -1) path += '.diagram'; return new Promise(function (resolve, reject) { var xhr = new XMLHttpRequest(); xhr.open('GET', 'https://graph.microsoft.com/v1.0' + path, true); var t = (token) ? token : storage.oauthToken; xhr.setRequestHeader('Authorization', 'Bearer ' + t); xhr.onreadystatechange = function () { if (xhr.readyState === 4) { if (xhr.status === 200) { var file = JSON.parse(xhr.response); resolve(file); } else if (xhr.status === 401) { storage.authorize(true); } else { reject(xhr.response); } } }; xhr.send(); }); }; GoOneDrive.prototype.showUI = function () { var storage = this; var ui = storage.ui; ui.innerHTML = ''; ui.style.visibility = 'visible'; ui.innerHTML = "Save Diagram As
"; var userInputDiv = document.createElement('div'); userInputDiv.id = 'userInputDiv'; userInputDiv.innerHTML += ''; ui.appendChild(userInputDiv); var submitDiv = document.createElement('div'); submitDiv.id = 'submitDiv'; var actionButton = document.createElement('button'); actionButton.id = 'actionButton'; actionButton.textContent = 'Save'; actionButton.onclick = function () { storage.saveWithUI(); }; submitDiv.appendChild(actionButton); ui.appendChild(submitDiv); var cancelDiv = document.createElement('div'); cancelDiv.id = 'cancelDiv'; 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; }; GoOneDrive.prototype.saveWithUI = function () { var storage = this; var ui = storage.ui; return new Promise(function (resolve, reject) { if (ui.style.visibility === 'hidden') { resolve(storage.showUI()); } else { var saveName_1 = document.getElementById('userInput').value; if (saveName_1 && saveName_1.indexOf('.diagram') === -1) saveName_1 += '.diagram'; var odOptions = { clientId: storage.clientId, action: 'query', openInNewWindow: true, success: function (selection) { var folder = selection.value[0]; var token = selection.accessToken; storage.currentDiagramFile = { id: null, name: saveName_1, token: token, parentReference: { driveId: folder['parentReference']['driveId'], id: folder['id'] }, path: 'placeholder' }; storage.hideUI(); storage.save(); } }; if (saveName_1 && saveName_1 !== '' && saveName_1 !== undefined) storage.oneDriveFilepicker.save(odOptions); else reject('Cannot save file to OneDrive with save name ' + saveName_1); } }); }; GoOneDrive.prototype.save = function (path) { var storage = this; return new Promise(function (resolve, reject) { if (path) { var xhr_1 = new XMLHttpRequest(); if (path.indexOf('.diagram') === -1) path += '.diagram'; var bodyContent = storage.makeSaveFile(); xhr_1.open('PUT', 'https://graph.microsoft.com/v1.0' + path + ':/content', true); xhr_1.setRequestHeader('Authorization', 'Bearer ' + storage.oauthToken); xhr_1.setRequestHeader('Content-Type', 'application/json'); xhr_1.onreadystatechange = function () { if (xhr_1.readyState === 4) { if (xhr_1.status >= 200 && xhr_1.status < 300) { var file = JSON.parse(xhr_1.response); var savedFile = { name: file['name'], id: file['id'], path: file['parentReference']['path'] + '/' + file['name'], parentReference: file['parentReference'] }; resolve(savedFile); } else if (xhr_1.status === 401) { storage.authorize(true); } else { throw Error(xhr_1.response); } } }; xhr_1.send(bodyContent); } else if (storage.currentDiagramFile.path) { var token_1 = storage.currentDiagramFile.token; var url = storage.generateGraphUrl(storage.currentDiagramFile, true, true); var bodyContent = storage.makeSaveFile(); var t = (!token_1) ? storage.oauthToken : storage.currentDiagramFile.token; var xhr_2 = new XMLHttpRequest(); xhr_2.open('PUT', url, true); xhr_2.setRequestHeader('Authorization', 'Bearer ' + t); xhr_2.onload = function () { if (xhr_2.readyState === 4 && (xhr_2.status === 200 || xhr_2.status === 201)) { var file = JSON.parse(xhr_2.response); var savedFile = { name: file['name'], id: file['id'], path: file['parentReference']['path'] + '/' + file['name'], token: token_1, parentReference: file['parentReference'] }; storage.currentDiagramFile = savedFile; resolve(savedFile); storage._deferredPromise.promise.resolve(savedFile); storage._deferredPromise.promise = storage.makeDeferredPromise(); } else { reject(xhr_2.response); } }; xhr_2.send(bodyContent); } else { resolve(storage.saveWithUI()); } }); }; GoOneDrive.prototype.loadWithUI = function () { var storage = this; return new Promise(function (resolve, reject) { var odOptions = { clientId: storage.clientId, action: 'share', multiSelect: false, advanced: { filter: '.diagram' }, success: function (files) { var file = files['value'][0]; var token = files['accessToken']; var filePath = file['parentReference']['path'] + '/' + file['name']; resolve(storage.load(filePath, token)); } }; storage.oneDriveFilepicker.open(odOptions); }); }; GoOneDrive.prototype.load = function (path, token) { var storage = this; return new Promise(function (resolve, reject) { if (path) { var t = (token) ? token : storage.oauthToken; storage.getFile(path, t).then(function (file) { var downloadLink = file['@microsoft.graph.downloadUrl']; var downloadxhr = new XMLHttpRequest(); downloadxhr.open('GET', downloadLink, true); downloadxhr.onreadystatechange = function () { if (downloadxhr.readyState === 4) { if (downloadxhr.status === 200) { storage.loadFromFileContents(downloadxhr.response); var loadedFile = { name: file['name'], id: file['id'], path: file['parentReference']['path'] + '/' + file['name'], token: token, parentReference: { id: file['parentReference']['id'], driveId: file['parentReference']['driveId'] } }; storage.currentDiagramFile = loadedFile; resolve(loadedFile); } } }; downloadxhr.send(); }); } else reject('Cannot load file from OneDrive with path ' + path); }); }; GoOneDrive.prototype.removeWithUI = function () { var storage = this; return new Promise(function (resolve, reject) { var odOptions = { clientId: storage.clientId, action: 'share', openInNewWindow: true, success: function (files) { if (files) { var file = files['value'][0]; var token_2 = files['accessToken']; var filePath_1 = file['parentReference']['path'] + '/' + file['name']; resolve(new Promise(function (res, rej) { res(storage.remove(filePath_1, token_2)); })); } } }; storage.oneDriveFilepicker.open(odOptions); }); }; GoOneDrive.prototype.remove = function (path, token) { var storage = this; var t = (token) ? token : storage.oauthToken; return new Promise(function (resolve, reject) { storage.getFile(path, t).then(function (file) { var deletedFile = { name: file['name'], id: file['id'], path: file['parentReference']['path'] + '/' + file['name'] }; var xhr = new XMLHttpRequest(); xhr.open('DELETE', 'https://graph.microsoft.com/v1.0' + path, true); xhr.setRequestHeader('Authorization', 'Bearer' + t); xhr.onload = function () { if (xhr.readyState === 4 && xhr.status === 204) { if (storage.currentDiagramFile && path === storage.currentDiagramFile.path) storage.currentDiagramFile = { id: null, path: null, name: null }; resolve(deletedFile); } else if (xhr.status === 401) { storage.authorize(true); } else { reject(xhr.response); } }; xhr.send(); }).catch(function (err) { throw Error(err); }); }); }; GoOneDrive.prototype.generateGraphUrl = function (driveItem, targetParentFolder, itemRelativeApiPath) { var url = 'https://graph.microsoft.com/v1.0/'; if (targetParentFolder) url += 'drives/' + driveItem['parentReference']['driveId'] + '/items/' + driveItem['parentReference']['id'] + '/children/' + driveItem['name']; else url += 'drives/' + driveItem['parentReference']['driveId'] + '/items/' + driveItem['id']; if (itemRelativeApiPath) url += '/content'; return url; }; return GoOneDrive; }(gcs.GoCloudStorage)); exports.GoOneDrive = GoOneDrive; /***/ }), /* 7 */ /***/ (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 GoNetCore = (function (_super) { __extends(GoNetCore, _super); function GoNetCore(managedDiagrams, rootEndpoint, defaultModel, iconsRelativeDirectory) { var _this = _super.call(this, managedDiagrams, defaultModel) || this; _this._rootEndpoint = rootEndpoint; _this.ui.id = 'goNetCoreCustomFilepicker'; _this._serviceName = 'Microsoft ASP .NET Core Web API'; _this._className = 'GoNetCore'; return _this; } Object.defineProperty(GoNetCore.prototype, "rootEndpoint", { get: function () { return this._rootEndpoint; }, enumerable: true, configurable: true }); GoNetCore.prototype.authorize = function (refreshToken) { if (refreshToken === void 0) { refreshToken = false; } var storage = this; return new Promise(function (resolve, reject) { resolve(true); }); }; GoNetCore.prototype.showUI = function (action, numAdditionalFiles) { var storage = this; var ui = storage.ui; var spacestring = 'qwe45qw34'; if (!numAdditionalFiles) numAdditionalFiles = 0; var maxFilesToShow = GoNetCore._MIN_FILES_IN_UI + numAdditionalFiles; ui.innerHTML = ''; var title = action + ' Diagram File'; ui.innerHTML += '' + title + '
'; document.getElementsByTagName('body')[0].appendChild(ui); ui.style.visibility = 'visible'; var filesDiv = document.createElement('div'); filesDiv.id = 'fileOptions'; var savedDiagrams = []; var numFilesToCheck = GoNetCore._MIN_FILES_IN_UI + numAdditionalFiles; var numFilesChecked = 0; var hasCheckedAllFiles = false; storage.getFiles().then(function (files) { if (files.length !== 0) { for (var i in files) { var item = files[i]; if (savedDiagrams.length < maxFilesToShow) { numFilesChecked++; var fileContent = item.file; if (fileContent && fileContent.indexOf('GraphLinksModel' || false) !== -1) { var file = { name: item.name, id: item.id }; savedDiagrams.push(file); } if (numFilesChecked === files.length) hasCheckedAllFiles = true; } } } else hasCheckedAllFiles = true; if (savedDiagrams.length !== 0) { for (var i = 0; i < savedDiagrams.length; i++) { var item = savedDiagrams[i]; var name_1 = item.name; var id = item.id; if (action !== 'Save') { filesDiv.innerHTML += "
" + '" + '' + '
'; } else { filesDiv.innerHTML += "
" + '' + '
'; } } } if (!hasCheckedAllFiles) { var num_1 = numAdditionalFiles + 50; filesDiv.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 + '
'; var selectedStorage = document.createElement('p'); selectedStorage.id = 'gcsmSelectedStorage'; selectedStorage.innerHTML = storageManager.currentStorage.serviceName; menu.appendChild(selectedStorage); menu.onchange = function () { var radios = document.getElementsByName('storageSelection'); var selectedStorageClassName = null; for (var i = 0; i < radios.length; i++) { if (radios[i].checked) { selectedStorageClassName = radios[i].id; } } var serviceNameStr = ''; storages.iterator.each(function (s) { if (s.className === selectedStorageClassName) { serviceNameStr = s.serviceName; } }); document.getElementById('gcsmSelectedStorage').innerHTML = serviceNameStr; }; storageManager.menu.style.visibility = 'visible'; var optionsDiv = document.createElement('div'); optionsDiv.id = 'storageOptions'; var it = storages.iterator; it.each(function (storage) { var type = storage.className; var src = storageManager.getStorageIconPath(type); var isChecked = storage.className === storageManager.currentStorage.className; var checkedStr = ''; if (isChecked) checkedStr = 'checked'; optionsDiv.innerHTML += '