13.0.9 release

This commit is contained in:
David Benson [draw.io] 2020-05-07 15:04:14 +01:00
parent 4727adfcd3
commit 5876e39065
11 changed files with 715 additions and 658 deletions

View file

@ -1,3 +1,7 @@
07-MAY-2020: 13.0.9
- Adds patch chain validation for real time
05-MAY-2020: 13.0.8
- Adds ctrl+enter for table cells

View file

@ -1 +1 @@
13.0.8
13.0.9

View file

@ -21,12 +21,23 @@ async function handleRequest(request)
let params = new URL('http://dummy.com?' + reqBodyTxt).searchParams;
let domain = params.get('domain');
let confLicense = params.get('confLicense');
let licenseDump = params.get('licenseDump');
let sParams = new URL(request.url).searchParams;
//Try Query string parameters
if (domain == null)
{
let params = new URL(request.url).searchParams;
domain = params.get('domain');
domain = sParams.get('domain');
}
if (confLicense == null)
{
confLicense = sParams.get('confLicense');
}
if (SEN == null)
{
SEN = sParams.get('SEN');
}
let email = params.get('email');
@ -52,6 +63,13 @@ async function handleRequest(request)
fetch(url);
}
if (licenseDump != null)
{
let msg = encodeURIComponent(('license:licenseDump=' + licenseDump));
let url = "https://log.diagrams.net/" + msg;
fetch(url);
}
if (domain != null)
{
try

View file

@ -5,9 +5,16 @@
async function handleRequest(request) {
let requestURL = new URL(request.url)
let host = requestURL.host
let sub = host;
let path = requestURL.pathname
let hostRedirectMap = redirectMap.get(host)
if (host != null)
{
let parts = host.split('.')
sub = parts[0]
}
let hostRedirectMap = redirectMap.get(sub)
if (hostRedirectMap)
{
@ -54,7 +61,7 @@ addEventListener('fetch', async event => {
})
const redirectMap = new Map([
['about.draw.io', new Map([
['about', new Map([
['/drawio-desktop-10-7-5-release', 'https://github.com/jgraph/drawio-desktop/releases/tag/v10.7.5'],
['/insert-from-text-now-supports-plantuml', '/use-plantuml-in-draw-io'],
['/integrate-draw-io/', '/integrations-ecosystem/'],
@ -128,40 +135,40 @@ const redirectMap = new Map([
['/features/training-material/', 'https://drawio-app.com/tutorials/'],
['/terms-conditions/', 'https://seibert-media.com/general-terms/'],
['/support/', 'https://github.com/jgraph/drawio/wiki/Getting-Support'],
['/', 'https://drawio-app.com/']
['/', 'https://www.diagrams.net']
])],
['blog.draw.io', new Map([
['/', 'https://drawio-app.com/blog']
['blog', new Map([
['/', 'https://www.diagrams.net/blog']
])],
['download.draw.io', new Map([
['download', new Map([
['/', 'https://github.com/jgraph/drawio-desktop/releases/latest']
])],
['get.draw.io', new Map([
['get', new Map([
['/', 'https://github.com/jgraph/drawio-desktop/releases/latest']
])],
['docsaddon.draw.io', new Map([
['docsaddon', new Map([
['/', 'https://gsuite.google.com/marketplace/app/drawio_viewer_for_docs/224440279306']
])],
['gsuite.draw.io', new Map([
['gsuite', new Map([
['/', 'https://gsuite.google.com/marketplace/app/drawio_diagrams/671128082532']
])],
['office.draw.io', new Map([
['office', new Map([
['/', 'https://appsource.microsoft.com/product/office/wa200000113']
])],
['slidesaddon.draw.io', new Map([
['slidesaddon', new Map([
['/', 'https://gsuite.google.com/marketplace/app/drawio_diagrams_for_slides/588283048931']
])],
['sheetsaddon.draw.io', new Map([
['sheetsaddon', new Map([
['/', 'https://gsuite.google.com/marketplace/app/drawio_diagrams_for_sheets/948903782998']
])],
['doc.draw.io', new Map([
['doc', new Map([
['/i18n', 'https://docs.google.com/spreadsheets/d/1FoYdyEraEQuWofzbYCDPKN7EdKgS_2ZrsDrOA8scgwQ'],
['/', 'https://support.draw.io']
['/', 'https://www.diagrams.net/doc/']
])],
['app.draw.io', new Map([
['/', 'https://www.draw.io/app']
['app', new Map([
['/', 'https://app.diagrams.net']
])],
['new.draw.io', new Map([
['/', 'https://www.draw.io/?splash=0']
['new', new Map([
['/', 'https://app.diagrams.net/?splash=0']
])]
])

View file

@ -2,7 +2,7 @@
"name": "draw.io",
"description": "draw.io add-on for Confluence",
"key": "com.mxgraph.confluence.plugins.diagramly",
"baseUrl": "https://confluence.draw.io",
"baseUrl": "https://ca14f165.ngrok.io",
"enableLicensing": true,
"apiMigrations": {
"gdpr": true

View file

@ -1,185 +1,207 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>draw.io Editor</title>
<script type="text/javascript">
// To Avoid NPE in connectUtils
urlParams = {};
</script>
<script src="connectUtils-1-4-8.js" type="text/javascript"></script>
<style type="text/css">
html, body {
height:100%;
overflow:hidden;
}
body {
background-color:#ffffff;
background-image:url(/images/drawlogo-text-bottom.svg);
background-repeat:no-repeat;
background-position:center;
background-size:128px;
font-family:Arial,Sans-Serif;
overflow:hidden;
width:100%;
margin:0;
}
</style>
</head>
<body>
<script type="text/javascript">
//Logs uncaught errors
window.onerror = function(message, url, linenumber, colno, err)
{
message = 'Confluence Cloud Editor: ' + ((message != null) ? message : '');
AC.logError(message, url, linenumber, colno, err);
};
var baseUrl = AC.getBaseUrl();
var connectUrl = baseUrl + '/atlassian-connect';
var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.setAttribute('data-options', 'resize:false;margin:false');
// Main
script.onload = function()
{
var xdm_e = AC.getSiteUrl();
var license = AC.getUrlParam('lic', false);
if (license != null && xdm_e != null)
{
if (license == 'none')
{
var hostParse = document.createElement('a');
hostParse.href = xdm_e;
var hostname = hostParse.hostname;
if (hostname != null)
{
if (hostname.indexOf('.ngrok.io') > -1)
{
console.log("License status = ", license);
}
else
{
AP.request({
type: 'GET',
url: '/rest/atlassian-connect/1/addons/com.mxgraph.confluence.plugins.diagramly',
contentType: 'application/json;charset=UTF-8',
success: function (resp)
{
resp = JSON.parse(resp);
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function()
{
if (xhr.readyState == XMLHttpRequest.DONE && xhr.status >= 200 && xhr.status <= 299)
{
var resp = xhr.responseText;
if (resp != null && resp.length > 0)
{
var lic = JSON.parse(resp);
if (lic != null && lic.atlasCloudLic != null)
{
// decide whether valid and close if not
// AP.dialog.close();
}
}
}
};
xhr.open('POST', '/license?domain=' + hostname + '&confLicense=' + license + '&SEN=' + resp.license? resp.license.supportEntitlementNumber : 'Unlicensed', true);
xhr.send(null);
}
});
}
}
}
}
AP.resize('100%', '100%');
var config = null;
var lang = null;
var allDone = 0;
var startEditor = function ()
{
allDone++;
if (allDone == 2)
{
var isCustom = AC.getUrlParam('custom');
if (isCustom == "1")
{
var contentId = AC.getUrlParam('contentId') || AC.getUrlParam('custContentId');
AP.dialog.getCustomData(function (customData)
{
AC.initAsync(baseUrl, customData.contentId || customData.custContentId || contentId, customData.macroData, config, lang);
});
}
else
{
AC.initAsync(baseUrl, null, null, config, lang);
}
}
}
AP.user.getLocale(function(locale)
{
lang = locale;
startEditor();
});
AP.request({
type: 'GET',
url: '/rest/api/content/search?cql=type%3Dpage%20and%20space%3DDRAWIOCONFIG%20and%20title%3DConfiguration', //type=page and space=DRAWIOCONFIG and title=Configuration. Search doesn't return 404 if not found
contentType: 'application/json;charset=UTF-8',
success: function (resp)
{
resp = JSON.parse(resp);
if (resp.size == 1)
{
var configPageId = resp.results[0].id;
//load the configuration file
AP.request({
type: 'GET',
url: '/download/attachments/' + configPageId + '/configuration.json',
contentType: 'application/json;charset=UTF-8',
success: function (fileContent)
{
config = fileContent;
startEditor();
},
error: startEditor //if there is an error loading the configuration, just load the editor normally. E.g., 404 when the space doesn't exist
});
}
else
{
startEditor();
}
},
error: startEditor //if there is an error loading the configuration, just load the editor normally. E.g., 404 when the space doesn't exist
});
};
script.src = 'https://connect-cdn.atl-paas.net/all.js';
head.appendChild(script);
var link = document.createElement('link');
link.type = 'text/css';
link.rel = 'stylesheet';
link.href = connectUrl + '/all.css';
head.appendChild(link);
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>draw.io Editor</title>
<script type="text/javascript">
// To Avoid NPE in connectUtils
urlParams = {};
</script>
<script src="connectUtils-1-4-8.js" type="text/javascript"></script>
<style type="text/css">
html, body {
height:100%;
overflow:hidden;
}
body {
background-color:#ffffff;
background-image:url(/images/drawlogo-text-bottom.svg);
background-repeat:no-repeat;
background-position:center;
background-size:128px;
font-family:Arial,Sans-Serif;
overflow:hidden;
width:100%;
margin:0;
}
</style>
</head>
<body>
<script type="text/javascript">
//Logs uncaught errors
window.onerror = function(message, url, linenumber, colno, err)
{
message = 'Confluence Cloud Editor: ' + ((message != null) ? message : '');
AC.logError(message, url, linenumber, colno, err);
};
var xdm_e = AC.getSiteUrl();
var baseUrl = AC.getBaseUrl();
var license = AC.getUrlParam('lic', false);
var connectUrl = baseUrl + '/atlassian-connect';
var head = document.getElementsByTagName('head')[0];
var licenseValid = true;
var script = document.createElement('script');
script.setAttribute('data-options', 'resize:false;margin:false');
if (license != null && xdm_e != null)
{
if (license == 'none')
{
licenseValid = false;
}
var hostParse = document.createElement('a');
hostParse.href = xdm_e;
var hostname = hostParse.hostname;
if (hostname != null)
{
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function()
{
if (xhr.readyState == XMLHttpRequest.DONE && xhr.status >= 200 && xhr.status <= 299)
{
var resp = xhr.responseText;
if (resp != null && resp.length > 0)
{
var lic = JSON.parse(resp);
if (lic != null && lic.atlasCloudLic != null)
{
licenseValid = true;
}
}
}
};
xhr.open('POST', '/license?domain=' + hostname + '&confLicense=' + license, true);
xhr.send(null);
}
}
// Main
script.onload = function()
{
if (!licenseValid)
{
setTimeout(function() // XHR call doesn't work inside AP.Request
{
if (!licenseValid)
{
alert("Please install a license for the draw.io app");
AP.dialog.close();
}
}, 8000);
}
AP.resize('100%', '100%');
var config = null;
var lang = null;
var SEN = null;
var installedDate = null;
var lastUpdated = null;
var allDone = 0;
var startEditor = function ()
{
allDone++;
if (allDone == 2)
{
var isCustom = AC.getUrlParam('custom');
if (isCustom == "1")
{
var contentId = AC.getUrlParam('contentId') || AC.getUrlParam('custContentId');
AP.dialog.getCustomData(function (customData)
{
AC.initAsync(baseUrl, customData.contentId || customData.custContentId || contentId, customData.macroData, config, lang);
});
}
else
{
AC.initAsync(baseUrl, null, null, config, lang);
}
}
}
AP.user.getLocale(function(locale)
{
lang = locale;
startEditor();
});
AP.request({
type: 'GET',
url: '/rest/api/content/search?cql=type%3Dpage%20and%20space%3DDRAWIOCONFIG%20and%20title%3DConfiguration', //type=page and space=DRAWIOCONFIG and title=Configuration. Search doesn't return 404 if not found
contentType: 'application/json;charset=UTF-8',
success: function (resp)
{
resp = JSON.parse(resp);
if (resp != null && resp.size == 1)
{
var configPageId = resp.results[0].id;
//load the configuration file
AP.request({
type: 'GET',
url: '/download/attachments/' + configPageId + '/configuration.json',
contentType: 'application/json;charset=UTF-8',
success: function (fileContent)
{
config = fileContent;
startEditor();
},
error: startEditor //if there is an error loading the configuration, just load the editor normally. E.g., 404 when the space doesn't exist
});
}
else
{
startEditor();
}
},
error: startEditor //if there is an error loading the configuration, just load the editor normally. E.g., 404 when the space doesn't exist
});
AP.request({
type: 'GET',
url: '/rest/atlassian-connect/1/addons/com.mxgraph.confluence.plugins.diagramly',
contentType: 'application/json;charset=UTF-8',
success: function (resp)
{
try
{
resp = JSON.parse(resp);
if (resp != null && resp.license != null)
{
var xhr = new XMLHttpRequest();
xhr.open('POST', '/license?licenseDump=' + JSON.stringify(resp), true);
xhr.send(null);
}
}
catch (e)
{
// just throw away if it breaks, not important
}
}
});
};
script.src = 'https://connect-cdn.atl-paas.net/all.js';
head.appendChild(script);
var link = document.createElement('link');
link.type = 'text/css';
link.rel = 'stylesheet';
link.href = connectUrl + '/all.css';
head.appendChild(link);
</script>
</body>
</html>

File diff suppressed because one or more lines are too long

View file

@ -1172,6 +1172,7 @@ DrawioFileSync.prototype.fileSaved = function(pages, lastDesc, success, error, t
var shadow = (this.file.shadowPages != null) ?
this.file.shadowPages : this.ui.getPagesForNode(
mxUtils.parseXml(this.file.shadowData).documentElement)
var lastSecret = this.file.getDescriptorSecret(lastDesc);
var checksum = this.ui.getHashValueForPages(pages);
var diff = this.ui.diffPages(shadow, pages);
@ -1191,6 +1192,7 @@ DrawioFileSync.prototype.fileSaved = function(pages, lastDesc, success, error, t
mxUtils.post(EditorUi.cacheUrl, this.getIdParameters() +
'&from=' + encodeURIComponent(etag) + '&to=' + encodeURIComponent(current) +
'&msg=' + encodeURIComponent(msg) + ((secret != null) ? '&secret=' + encodeURIComponent(secret) : '') +
((lastSecret != null) ? '&last-secret=' + encodeURIComponent(lastSecret) : '') +
((data.length < this.maxCacheEntrySize) ? '&data=' + encodeURIComponent(data) : '') +
((token != null) ? '&token=' + encodeURIComponent(token) : ''),
mxUtils.bind(this, function(req)

View file

@ -112,7 +112,7 @@ Editor.rowMoveImage = (mxClient.IS_SVG) ? 'data:image/png;base64,iVBORw0KGgoAAAA
/**
* Images below are for lightbox and embedding toolbars.
*/
Editor.helpImage = (mxClient.IS_SVG) ? 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAEBAMAAACw6DhOAAAAGFBMVEUzMzP///9tbW1QUFCKiopBQUF8fHxfX1/IXlmXAAAAFElEQVQImWNgNVdzYBAUFBRggLMAEzYBy29kEPgAAAAASUVORK5CYII=' :
Editor.helpImage = (mxClient.IS_SVG) ? 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBmaWxsPSJub25lIiBkPSJNMCAwaDI0djI0SDB6Ii8+PHBhdGggZD0iTTExIDE4aDJ2LTJoLTJ2MnptMS0xNkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6bTAtMTRjLTIuMjEgMC00IDEuNzktNCA0aDJjMC0xLjEuOS0yIDItMnMyIC45IDIgMmMwIDItMyAxLjc1LTMgNWgyYzAtMi4yNSAzLTIuNSAzLTUgMC0yLjIxLTEuNzktNC00LTR6Ii8+PC9zdmc+' :
IMAGE_PATH + '/help.png';
/**

View file

@ -2010,9 +2010,11 @@ Editor=function(a,b,e,d,k){mxEventSource.call(this);this.chromeless=null!=a?a:th
function(){return this.status};this.graphChangeListener=function(a,d){var c=null!=d?d.getProperty("edit"):null;null!=c&&c.ignoreEdit||this.setModified(!0)};this.graph.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.graphChangeListener.apply(this,arguments)}));this.graph.resetViewOnRootChange=!1;this.init()};Editor.pageCounter=0;
(function(){try{for(var a=window;null!=a.opener&&"undefined"!==typeof a.opener.Editor&&!isNaN(a.opener.Editor.pageCounter)&&a.opener!=a;)a=a.opener;null!=a&&(a.Editor.pageCounter++,Editor.pageCounter=a.Editor.pageCounter)}catch(b){}})();Editor.useLocalStorage="undefined"!=typeof Storage&&mxClient.IS_IOS;
Editor.moveImage=mxClient.IS_SVG?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI4cHgiIGhlaWdodD0iMjhweCI+PGc+PC9nPjxnPjxnPjxnPjxwYXRoIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIuNCwyLjQpc2NhbGUoMC44KXJvdGF0ZSg0NSwxMiwxMikiIHN0cm9rZT0iIzI5YjZmMiIgZmlsbD0iIzI5YjZmMiIgZD0iTTE1LDNsMi4zLDIuM2wtMi44OSwyLjg3bDEuNDIsMS40MkwxOC43LDYuN0wyMSw5VjNIMTV6IE0zLDlsMi4zLTIuM2wyLjg3LDIuODlsMS40Mi0xLjQyTDYuNyw1LjNMOSwzSDNWOXogTTksMjEgbC0yLjMtMi4zbDIuODktMi44N2wtMS40Mi0xLjQyTDUuMywxNy4zTDMsMTV2Nkg5eiBNMjEsMTVsLTIuMywyLjNsLTIuODctMi44OWwtMS40MiwxLjQybDIuODksMi44N0wxNSwyMWg2VjE1eiIvPjwvZz48L2c+PC9nPjwvc3ZnPgo=":IMAGE_PATH+
"/move.png";Editor.rowMoveImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAEBAMAAACw6DhOAAAAGFBMVEUzMzP///9tbW1QUFCKiopBQUF8fHxfX1/IXlmXAAAAFElEQVQImWNgNVdzYBAUFBRggLMAEzYBy29kEPgAAAAASUVORK5CYII=":IMAGE_PATH+"/thumb_horz.png";Editor.helpImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAEBAMAAACw6DhOAAAAGFBMVEUzMzP///9tbW1QUFCKiopBQUF8fHxfX1/IXlmXAAAAFElEQVQImWNgNVdzYBAUFBRggLMAEzYBy29kEPgAAAAASUVORK5CYII=":IMAGE_PATH+"/help.png";
Editor.checkmarkImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhFQAVAMQfAGxsbHx8fIqKioaGhvb29nJycvr6+sDAwJqamltbW5OTk+np6YGBgeTk5Ly8vJiYmP39/fLy8qWlpa6ursjIyOLi4vj4+N/f3+3t7fT09LCwsHZ2dubm5r6+vmZmZv///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OEY4NTZERTQ5QUFBMTFFMUE5MTVDOTM5MUZGMTE3M0QiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OEY4NTZERTU5QUFBMTFFMUE5MTVDOTM5MUZGMTE3M0QiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo4Rjg1NkRFMjlBQUExMUUxQTkxNUM5MzkxRkYxMTczRCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4Rjg1NkRFMzlBQUExMUUxQTkxNUM5MzkxRkYxMTczRCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgH//v38+/r5+Pf29fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb2tnY19bV1NPS0dDPzs3My8rJyMfGxcTDwsHAv769vLu6ubi3trW0s7KxsK+urayrqqmop6alpKOioaCfnp2cm5qZmJeWlZSTkpGQj46NjIuKiYiHhoWEg4KBgH9+fXx7enl4d3Z1dHNycXBvbm1sa2ppaGdmZWRjYmFgX15dXFtaWVhXVlVUU1JRUE9OTUxLSklIR0ZFRENCQUA/Pj08Ozo5ODc2NTQzMjEwLy4tLCsqKSgnJiUkIyIhIB8eHRwbGhkYFxYVFBMSERAPDg0MCwoJCAcGBQQDAgEAACH5BAEAAB8ALAAAAAAVABUAAAVI4CeOZGmeaKqubKtylktSgCOLRyLd3+QJEJnh4VHcMoOfYQXQLBcBD4PA6ngGlIInEHEhPOANRkaIFhq8SuHCE1Hb8Lh8LgsBADs=":
IMAGE_PATH+"/checkmark.gif";Editor.maximizeImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVBAMAAABbObilAAAAElBMVEUAAAAAAAAAAAAAAAAAAAAAAADgKxmiAAAABXRSTlMA758vX1Pw3BoAAABJSURBVAjXY8AJQkODGBhUQ0MhbAUGBiYY24CBgRnGFmZgMISwgwwDGRhEhVVBbAVmEQYGRwMmBjIAQi/CTIRd6G5AuA3dzYQBAHj0EFdHkvV4AAAAAElFTkSuQmCC";Editor.zoomOutImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVBAMAAABbObilAAAAElBMVEUAAAAAAAAsLCxxcXEhISFgYGChjTUxAAAAAXRSTlMAQObYZgAAAEdJREFUCNdjIAMwCQrB2YKCggJQJqMwA7MglK1owMBgqABVApITgLJZXFxgbIQ4Qj3CHIT5ggoIe5kgNkM1KSDYKBKqxPkDAPo5BAZBE54hAAAAAElFTkSuQmCC";
"/move.png";Editor.rowMoveImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAEBAMAAACw6DhOAAAAGFBMVEUzMzP///9tbW1QUFCKiopBQUF8fHxfX1/IXlmXAAAAFElEQVQImWNgNVdzYBAUFBRggLMAEzYBy29kEPgAAAAASUVORK5CYII=":IMAGE_PATH+"/thumb_horz.png";
Editor.helpImage=mxClient.IS_SVG?"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBmaWxsPSJub25lIiBkPSJNMCAwaDI0djI0SDB6Ii8+PHBhdGggZD0iTTExIDE4aDJ2LTJoLTJ2MnptMS0xNkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6bTAtMTRjLTIuMjEgMC00IDEuNzktNCA0aDJjMC0xLjEuOS0yIDItMnMyIC45IDIgMmMwIDItMyAxLjc1LTMgNWgyYzAtMi4yNSAzLTIuNSAzLTUgMC0yLjIxLTEuNzktNC00LTR6Ii8+PC9zdmc+":IMAGE_PATH+
"/help.png";
Editor.checkmarkImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhFQAVAMQfAGxsbHx8fIqKioaGhvb29nJycvr6+sDAwJqamltbW5OTk+np6YGBgeTk5Ly8vJiYmP39/fLy8qWlpa6ursjIyOLi4vj4+N/f3+3t7fT09LCwsHZ2dubm5r6+vmZmZv///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OEY4NTZERTQ5QUFBMTFFMUE5MTVDOTM5MUZGMTE3M0QiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OEY4NTZERTU5QUFBMTFFMUE5MTVDOTM5MUZGMTE3M0QiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo4Rjg1NkRFMjlBQUExMUUxQTkxNUM5MzkxRkYxMTczRCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4Rjg1NkRFMzlBQUExMUUxQTkxNUM5MzkxRkYxMTczRCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgH//v38+/r5+Pf29fTz8vHw7+7t7Ovq6ejn5uXk4+Lh4N/e3dzb2tnY19bV1NPS0dDPzs3My8rJyMfGxcTDwsHAv769vLu6ubi3trW0s7KxsK+urayrqqmop6alpKOioaCfnp2cm5qZmJeWlZSTkpGQj46NjIuKiYiHhoWEg4KBgH9+fXx7enl4d3Z1dHNycXBvbm1sa2ppaGdmZWRjYmFgX15dXFtaWVhXVlVUU1JRUE9OTUxLSklIR0ZFRENCQUA/Pj08Ozo5ODc2NTQzMjEwLy4tLCsqKSgnJiUkIyIhIB8eHRwbGhkYFxYVFBMSERAPDg0MCwoJCAcGBQQDAgEAACH5BAEAAB8ALAAAAAAVABUAAAVI4CeOZGmeaKqubKtylktSgCOLRyLd3+QJEJnh4VHcMoOfYQXQLBcBD4PA6ngGlIInEHEhPOANRkaIFhq8SuHCE1Hb8Lh8LgsBADs=":IMAGE_PATH+
"/checkmark.gif";Editor.maximizeImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVBAMAAABbObilAAAAElBMVEUAAAAAAAAAAAAAAAAAAAAAAADgKxmiAAAABXRSTlMA758vX1Pw3BoAAABJSURBVAjXY8AJQkODGBhUQ0MhbAUGBiYY24CBgRnGFmZgMISwgwwDGRhEhVVBbAVmEQYGRwMmBjIAQi/CTIRd6G5AuA3dzYQBAHj0EFdHkvV4AAAAAElFTkSuQmCC";Editor.zoomOutImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVBAMAAABbObilAAAAElBMVEUAAAAAAAAsLCxxcXEhISFgYGChjTUxAAAAAXRSTlMAQObYZgAAAEdJREFUCNdjIAMwCQrB2YKCggJQJqMwA7MglK1owMBgqABVApITgLJZXFxgbIQ4Qj3CHIT5ggoIe5kgNkM1KSDYKBKqxPkDAPo5BAZBE54hAAAAAElFTkSuQmCC";
Editor.zoomInImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVBAMAAABbObilAAAAElBMVEUAAAAAAAAsLCwhISFxcXFgYGBavKaoAAAAAXRSTlMAQObYZgAAAElJREFUCNdjIAMwCQrB2YKCggJQJqMIA4sglK3owMzgqABVwsDMwCgAZTMbG8PYCHGEeoQ5CPMFFRD2MkFshmpSQLBRJFSJ8wcAEqcEM2uhl2MAAAAASUVORK5CYII=";Editor.zoomFitImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVBAMAAABbObilAAAAD1BMVEUAAAAAAAAwMDBwcHBgYGC1xl09AAAAAXRSTlMAQObYZgAAAEFJREFUCNdjIAMwCQrB2YKCggJQJqMwA7MglK1owMBgqABVApITwMdGqEeYgzBfUAFhLxPEZqgmBQQbRUKFOH8AAK5OA3lA+FFOAAAAAElFTkSuQmCC";
Editor.layersImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAVCAMAAACeyVWkAAAAaVBMVEUAAAAgICAICAgdHR0PDw8WFhYICAgLCwsXFxcvLy8ODg4uLi4iIiIqKiokJCQYGBgKCgonJycFBQUCAgIqKiocHBwcHBwODg4eHh4cHBwnJycJCQkUFBQqKiojIyMuLi4ZGRkgICAEBATOWYXAAAAAGnRSTlMAD7+fnz8/H7/ff18/77+vr5+fn39/b28fH2xSoKsAAACQSURBVBjTrYxJEsMgDARZZMAY73sgCcn/HxnhKtnk7j6oRq0psfuoyndZ/SuODkHPLzfVT6KeyPePnJ7KrnkRjWMXTn4SMnN8mXe2SSM3ts8L/ZUxxrbAULSYJJULE0Iw9pjpenoICcgcX61mGgTgtCv9Be99pzCoDhNQWQnchD1mup5++CYGcoQexajZbfwAj/0MD8ZOaUgAAAAASUVORK5CYII=";
Editor.previousImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABmJLR0QA/wD/AP+gvaeTAAAAh0lEQVQ4je3UsQnCUBCA4U8hpa1NsoEjpHQJS0dxADdwEMuMIJkgA1hYChbGQgMi+JC8q4L/AB/vDu7x74cWWEZhJU44RmA1zujR5GIbXF9YNrjD/Q0bDRY4fEBZ4P4LlgTnCbAf84pUM8/9hY08tMUtEoQ1LpEgrNBFglChFXR6Q6GfwwR6AGKJMF74Vtt3AAAAAElFTkSuQmCC";Editor.nextImage="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABmJLR0QA/wD/AP+gvaeTAAAAi0lEQVQ4jeXUIQ7CUAwA0MeGxWI2yylwnALJUdBcgYvM7QYLmjOQIAkIPmJZghiIvypoUtX0tfnJL38X5ZfaEgUeUcManFBHgS0SLlhHggk3bCPBhCf2keCQR8wjwYTDp6YiZxJmOU1jGw7vGALescuBxsArNlOwd/CM1VSM/ut1qCIw+uOwiMJ+OF4CQzBCXm3hyAAAAABJRU5ErkJggg==";

View file

@ -6,7 +6,7 @@ if (workbox)
workbox.precaching.precacheAndRoute([
{
"url": "js/app.min.js",
"revision": "8f905199962cb01eba11ac54b40cd630"
"revision": "a32ef17f69e1f38d2c7f3235cd2e2dbc"
},
{
"url": "js/extensions.min.js",