Browse Source

13.5.0 release

Gaudenz Alder 5 years ago
parent
commit
7786979437

+ 6 - 0
ChangeLog

@@ -1,3 +1,9 @@
+22-JUL-2020: 13.5.0
+
+- Restores cloning of rows with blue arrows
+- Fixes ungroup for multiple groups
+- Uses mxGraph 4.2.1 beta 7
+
 20-JUL-2020: 13.4.9
 
 - Fixes handling of built-in plugins

+ 1 - 1
VERSION

@@ -1 +1 @@
-13.4.9
+13.5.0

File diff suppressed because it is too large
+ 10 - 10
etc/mxgraph/mxClient.js


BIN
src/main/webapp/images/android-chrome-196x196.png


+ 3 - 3
src/main/webapp/images/manifest.json

@@ -4,10 +4,10 @@
     "description": "diagrams.net is a completely free diagram editor",
     "icons": [
         {
-            "src": "/images/android-chrome-192x192.png",
-            "sizes": "192x192",
+            "src": "/images/android-chrome-196x196.png",
+            "sizes": "196x196",
             "type": "image/png",
-            "purpose": "any maskable"
+     		"purpose": "any maskable"
         },
         {
             "src": "/images/android-chrome-512x512.png",

+ 2 - 0
src/main/webapp/index.html

@@ -317,6 +317,8 @@
 	<link rel="mask-icon" href="images/safari-pinned-tab.svg" color="#d89000">
 	<link rel="stylesheet" type="text/css" href="js/croppie/croppie.min.css">
     <link rel="stylesheet" type="text/css" href="styles/grapheditor.css">
+    <link rel="preload" href="mxgraph/css/common.css" as="style">
+    <link rel="preconnect" href="https://storage.googleapis.com">
     <link rel="canonical" href="https://app.diagrams.net">
 	<link rel="manifest" href="images/manifest.json">
 	<link rel="shortcut icon" href="favicon.ico">

File diff suppressed because it is too large
+ 402 - 401
src/main/webapp/js/app.min.js


+ 5 - 2
src/main/webapp/js/diagramly/EditorUi.js

@@ -4013,9 +4013,12 @@
 				
 				if (source != chk && source != label)
 				{
-					onclick();
+					if (onclick != null)
+					{
+						onclick();
+					}
+					
 					onclose();
-				
 					mxEvent.consume(e);
 				}
 				else

+ 54 - 4
src/main/webapp/js/diagramly/Extensions.js

@@ -107,10 +107,10 @@ LucidImporter = {};
 			'RoundedRectangleContainerBlock': 'fillColor=none;container=1;rounded=1;absoluteArcSize=1;arcSize=24',
 			'CircleContainerBlock': 'shape=ellipse;fillColor=none;container=1',
 			'PillContainerBlock': 'arcSize=50;fillColor=none;container=1',
-//			'BraceBlock' NA
-//			'BracketBlock' NA
-//			'BraceBlockRotated' NA
-//			'BracketBlockRotated' NA
+			'BraceBlock': cs,
+			'BracketBlock': cs,
+			'BraceBlockRotated': cs,
+			'BracketBlockRotated': cs,
 //Geometric shapes
 			'IsoscelesTriangleBlock': 'triangle;direction=north;anchorPointDirection=0',
 			'RightTriangleBlock': s + 'basic.orthogonal_triangle',
@@ -4936,6 +4936,10 @@ LucidImporter = {};
 		{
 			return 'dashed=1;dashPattern=10 5 1 5;';
 		}
+		else if (properties.StrokeStyle == 'dashdotdot')
+		{
+			return 'dashed=1;dashPattern=10 5 1 5 1 5;';
+		}
 		else if (properties.StrokeStyle == 'dotdotdot')
 		{
 			return 'dashed=1;dashPattern=1 2;';
@@ -4944,6 +4948,22 @@ LucidImporter = {};
 		{
 			return 'dashed=1;dashPattern=16 6;';
 		}
+		else if (properties.StrokeStyle == 'dashlongdash')
+		{
+			return 'dashed=1;dashPattern=10 6 16 6;';
+		}
+		else if (properties.StrokeStyle == 'dashed24')
+		{
+			return 'dashed=1;dashPattern=3 8;';
+		}
+		else if (properties.StrokeStyle == 'dashed32')
+		{
+			return 'dashed=1;dashPattern=6 5;';
+		}
+		else if (properties.StrokeStyle == 'dashed44')
+		{
+			return 'dashed=1;dashPattern=8 8;';
+		}
 		else if (properties.StrokeStyle != null && properties.
 			StrokeStyle.substring(0, 6) == 'dashed')
 		{
@@ -11690,6 +11710,36 @@ LucidImporter = {};
 				}
 				catch(e){}
 				break;
+			case 'BraceBlock':
+			case 'BraceBlockRotated':
+				var sideStyle = addAllStyles(v.style, p, a, v, isLastLblHTML);
+				var rotation = getRotation(p, a, v);
+				v.style = 'group;' + rotation;
+				var sideWidth = Math.min((rotation? w : h) * 0.14, 100);
+				var dim = rotation? (w - sideWidth) / 2 : 0;
+				var left = new mxCell('', new mxGeometry(dim, dim, sideWidth, h), 'shape=curlyBracket;rounded=1;' + sideStyle);
+				left.vertex = true;
+				var right = new mxCell('', new mxGeometry(rotation? dim : w - sideWidth, -dim, sideWidth, h), 'shape=curlyBracket;rounded=1;flipH=1;' + sideStyle);
+				right.vertex = true;
+				
+				v.insert(left);
+				v.insert(right);
+				break;
+			case 'BracketBlock':
+			case 'BracketBlockRotated':
+				var sideStyle = addAllStyles(v.style, p, a, v, isLastLblHTML);
+				var rotation = getRotation(p, a, v);
+				v.style = 'group;' + rotation;
+				var sideWidth = Math.min((rotation? w : h) * 0.14, 100);
+				var dim = rotation? (w - sideWidth) / 2 : 0;
+				var left = new mxCell('', new mxGeometry(dim, dim, sideWidth, h), 'shape=curlyBracket;rounded=1;size=0;arcSize=50;' + sideStyle);
+				left.vertex = true;
+				var right = new mxCell('', new mxGeometry(rotation? dim : w - sideWidth, -dim, sideWidth, h), 'shape=curlyBracket;rounded=1;flipH=1;size=0;arcSize=50;' + sideStyle);
+				right.vertex = true;
+				
+				v.insert(left);
+				v.insert(right);
+				break;
 		}
 
 		if (v.style && v.style.indexOf('html') < 0)

File diff suppressed because it is too large
+ 402 - 400
src/main/webapp/js/extensions.min.js


+ 32 - 12
src/main/webapp/js/mxgraph/Actions.js

@@ -284,13 +284,39 @@ Actions.prototype.init = function()
 	}, null, null, Editor.ctrlKey + '+G');
 	this.addAction('ungroup', function()
 	{
-		if (graph.getSelectionCount() == 1 && graph.getModel().getChildCount(graph.getSelectionCell()) == 0)
-		{
-			graph.setCellStyles('container', '0');
-		}
-		else
+		if (graph.isEnabled() && !graph.isSelectionEmpty())
 		{
-			graph.setSelectionCells(graph.ungroupCells());
+			var cells = graph.getSelectionCells();
+			
+	        graph.model.beginUpdate();
+			try
+			{
+				var temp = graph.ungroupCells();
+				
+				// Unsets container flag for remaining cells
+				if (cells != null)
+				{
+					for (var i = 0; i < cells.length; i++)
+			    	{
+						if (graph.model.contains(cells[i]))
+						{
+							if (graph.model.getChildCount(cells[i]) == 0 &&
+								graph.model.isVertex(cells[i]))
+							{
+								graph.setCellStyles('container', '0', [cells[i]]);
+							}
+							
+							temp.push(cells[i]);
+						}
+			    	}
+				}
+		    }
+			finally
+			{
+				graph.model.endUpdate();
+			}
+	
+			graph.setSelectionCells(temp);
 		}
 	}, null, null, Editor.ctrlKey + '+Shift+U');
 	this.addAction('removeFromGroup', function() { graph.removeCellsFromParent(); });
@@ -309,8 +335,6 @@ Actions.prototype.init = function()
 	}, null, null, Editor.ctrlKey + '+M');
 	this.addAction('editTooltip...', function()
 	{
-		var graph = ui.editor.graph;
-		
 		if (graph.isEnabled() && !graph.isSelectionEmpty())
 		{
 			var cell = graph.getSelectionCell();
@@ -345,8 +369,6 @@ Actions.prototype.init = function()
 	});
 	this.addAction('editLink...', function()
 	{
-		var graph = ui.editor.graph;
-		
 		if (graph.isEnabled() && !graph.isSelectionEmpty())
 		{
 			var cell = graph.getSelectionCell();
@@ -424,8 +446,6 @@ Actions.prototype.init = function()
 	})).isEnabled = isGraphEnabled;
 	this.addAction('link...', mxUtils.bind(this, function()
 	{
-		var graph = ui.editor.graph;
-		
 		if (graph.isEnabled())
 		{
 			if (graph.cellEditor.isContentEditing())

+ 12 - 4
src/main/webapp/js/mxgraph/EditorUi.js

@@ -1264,7 +1264,10 @@ EditorUi.prototype.showShapePicker = function(x, y, source, callback)
 		var ui = this;
 		var graph = this.editor.graph;
 		var div = document.createElement('div');
-		var style = (source != null) ? graph.copyStyle(source) : null;
+		var sourceState = graph.view.getState(source);
+		var style = (source != null && (sourceState == null ||
+			!graph.isTransparentState(sourceState))) ?
+			graph.copyStyle(source) : null;
 		
 		// Do not place entry under pointer for touch devices
 		var off = -4;
@@ -3446,6 +3449,7 @@ EditorUi.prototype.updateActionStates = function()
 	var graph = this.editor.graph;
 	var selected = !graph.isSelectionEmpty();
 	var vertexSelected = false;
+	var groupSelected = false;
 	var edgeSelected = false;
 
 	var cells = graph.getSelectionCells();
@@ -3464,6 +3468,12 @@ EditorUi.prototype.updateActionStates = function()
     		if (graph.getModel().isVertex(cell))
     		{
     			vertexSelected = true;
+    			
+	    		if (graph.getModel().getChildCount(cell) > 0 ||
+	    			graph.isContainer(cell))
+	    		{
+	    			groupSelected = true;
+	    		}
     		}
     		
     		if (edgeSelected && vertexSelected)
@@ -3496,9 +3506,7 @@ EditorUi.prototype.updateActionStates = function()
    	var oneVertexSelected = vertexSelected && graph.getSelectionCount() == 1;
 	this.actions.get('group').setEnabled(graph.getSelectionCount() > 1 ||
 		(oneVertexSelected && !graph.isContainer(graph.getSelectionCell())));
-	this.actions.get('ungroup').setEnabled(graph.getSelectionCount() == 1 &&
-		(graph.getModel().getChildCount(graph.getSelectionCell()) > 0 ||
-		(oneVertexSelected && graph.isContainer(graph.getSelectionCell()))));
+	this.actions.get('ungroup').setEnabled(groupSelected);
    	this.actions.get('removeFromGroup').setEnabled(oneVertexSelected &&
    		graph.getModel().isVertex(graph.getModel().getParent(graph.getSelectionCell())));
 

+ 40 - 22
src/main/webapp/js/mxgraph/Graph.js

@@ -2794,6 +2794,22 @@ Graph.prototype.selectCellsForConnectVertex = function(cells, evt, hoverIcons)
 	}
 };
 
+/**
+ * Never connects children in stack layouts or tables.
+ */
+Graph.prototype.isCloneConnectSource = function(source)
+{
+	var layout = null;
+
+	if (this.layoutManager != null)
+	{
+		layout = this.layoutManager.getLayout(this.model.getParent(source));
+	}
+	
+	return this.isTableRow(source) || this.isTableCell(source) ||
+		(layout != null && layout.constructor == mxStackLayout);
+};
+
 /**
  * Adds a connection to the given vertex.
  */
@@ -2805,9 +2821,17 @@ Graph.prototype.connectVertex = function(source, direction, length, evt, forceCl
 		return [];
 	}
 	
-	ignoreCellAt = (ignoreCellAt) ? ignoreCellAt : false;
+	// Uses parent for relative child cells
+	while (source.geometry.relative && this.model.isVertex(source.parent))
+	{
+		source = source.parent;
+	}
 	
-	var composite = this.getCompositeParent(source);
+	ignoreCellAt = (ignoreCellAt) ? ignoreCellAt : false;
+		
+	// Handles clone connect sources
+	var cloneSource = this.isCloneConnectSource(source);
+	var composite = (cloneSource) ? source : this.getCompositeParent(source);
 	
 	var pt = (source.geometry.relative && source.parent.geometry != null) ?
 		new mxPoint(source.parent.geometry.width * source.geometry.x,
@@ -2926,7 +2950,8 @@ Graph.prototype.connectVertex = function(source, direction, length, evt, forceCl
 		}
 	}
 	
-	if (target == source || this.model.isEdge(target) || !this.isCellConnectable(target) &&
+	if (target == source || this.model.isEdge(target) ||
+		!this.isCellConnectable(target) &&
 		!this.isSwimlane(target))
 	{
 		target = null;
@@ -2935,10 +2960,10 @@ Graph.prototype.connectVertex = function(source, direction, length, evt, forceCl
 	var result = [];
 	var swimlane = target != null && this.isSwimlane(target);
 	var realTarget = (!swimlane) ? target : null;
-	
+
 	var execute = mxUtils.bind(this, function(targetCell)
 	{
-		if (createTarget == null || targetCell != null)
+		if (createTarget == null || targetCell != null || (target == null && cloneSource))
 		{
 			this.model.beginUpdate();
 			try
@@ -2956,7 +2981,7 @@ Graph.prototype.connectVertex = function(source, direction, length, evt, forceCl
 					}
 					
 					// Handles composite cells for cloning
-					cellToClone = this.getCompositeParent(cellToClone);
+					cellToClone =  (cloneSource) ? source : this.getCompositeParent(cellToClone);
 					realTarget = (targetCell != null) ? targetCell : this.duplicateCells([cellToClone], false)[0];
 					
 					if (targetCell != null)
@@ -2977,23 +3002,15 @@ Graph.prototype.connectVertex = function(source, direction, length, evt, forceCl
 						this.addCells([realTarget], target, null, null, null, true);
 						target = null;
 					}
-					else if (duplicate && target == null && !keepParent)
+					else if (duplicate && target == null && !keepParent && !cloneSource)
 					{
 						this.addCells([realTarget], this.getDefaultParent(), null, null, null, true);
 					}
 				}
 				
-				// Never connects children in stack layouts
-				var layout = null;
-		
-				if (this.layoutManager != null)
-				{
-					layout = this.layoutManager.getLayout(this.model.getParent(source));
-				}
-		
 				var edge = ((mxEvent.isControlDown(evt) && mxEvent.isShiftDown(evt) && duplicate) ||
-					(target == null && layout != null && layout.constructor == mxStackLayout)) ? null :
-					this.insertEdge(this.model.getParent(source), null, '', source, realTarget, this.createCurrentEdgeStyle());
+					(target == null && cloneSource)) ? null : this.insertEdge(this.model.getParent(source),
+						null, '', source, realTarget, this.createCurrentEdgeStyle());
 		
 				// Inserts edge before source
 				if (edge != null && this.connectionHandler.insertBeforeSource)
@@ -3015,8 +3032,8 @@ Graph.prototype.connectVertex = function(source, direction, length, evt, forceCl
 				}
 				
 				// Special case: Click on west icon puts clone before cell
-				if (target == null && realTarget != null && layout != null && source.parent != null &&
-					layout.constructor == mxStackLayout && direction == mxConstants.DIRECTION_WEST)
+				if (target == null && realTarget != null && source.parent != null &&
+					cloneSource && direction == mxConstants.DIRECTION_WEST)
 				{
 					var index = source.parent.getIndex(source);
 					this.model.add(source.parent, realTarget, index);
@@ -3058,7 +3075,8 @@ Graph.prototype.connectVertex = function(source, direction, length, evt, forceCl
 		}
 	});
 	
-	if (createTarget != null && realTarget == null && duplicate)
+	if (createTarget != null && realTarget == null && duplicate &&
+		(target != null || !cloneSource))
 	{
 		createTarget(dx + pt.x * s, dy + pt.y * s, execute);
 	}
@@ -10605,8 +10623,8 @@ if (typeof mxVertexHandler != 'undefined')
 		{
 			edgeHandlerMouseMove.apply(this, arguments);
 			
-			if (this.graph.graphHandler != null && this.graph.graphHandler.first != null &&
-				this.linkHint != null && this.linkHint.style.display != 'none')
+			if (this.linkHint != null && this.linkHint.style.display != 'none' &&
+				this.graph.graphHandler != null && this.graph.graphHandler.first != null)
 			{
 				this.linkHint.style.display = 'none';
 			}

+ 55 - 22
src/main/webapp/js/mxgraph/Sidebar.js

@@ -2329,9 +2329,10 @@ Sidebar.prototype.dropAndConnect = function(source, targets, direction, dropCell
 
 			// Handles special case where target should be ignored for stack layouts
 			var targetParent = graph.model.getParent(source);
+			var ignoreParent = false;
 			var validLayout = true;
 			
-			// Ignores parent if it has a stack layout
+			// Ignores parent if it has a stack layout or if it is a table or row
 			if (graph.layoutManager != null)
 			{
 				var layout = graph.layoutManager.getLayout(targetParent);
@@ -2340,29 +2341,62 @@ Sidebar.prototype.dropAndConnect = function(source, targets, direction, dropCell
 				if (layout != null && layout.constructor == mxStackLayout)
 				{
 					validLayout = false;
+				}
+			}
+			
+			// Checks if another container is at the drop location
+			var dx = 0;
+			var dy = 0;
+			var tmp = graph.view.getState(targetParent);
+			
+			// Offsets by parent position
+			if (tmp != null)
+			{
+				var offset = new mxPoint((tmp.x / graph.view.scale - graph.view.translate.x),
+					(tmp.y / graph.view.scale - graph.view.translate.y));
+				dx = offset.x;
+				dy = offset.y;
 
-					var tmp = graph.view.getState(targetParent);
-					
-					// Offsets by parent position
-					if (tmp != null)
-					{
-						var offset = new mxPoint((tmp.x / graph.view.scale - graph.view.translate.x),
-								(tmp.y / graph.view.scale - graph.view.translate.y));
-						geo.x += offset.x;
-						geo.y += offset.y;
-						var pt = geo.getTerminalPoint(false);
-						
-						if (pt != null)
-						{
-							pt.x += offset.x;
-							pt.y += offset.y;
-						}
-					}
+				var pt = geo.getTerminalPoint(false);
+				
+				if (pt != null)
+				{
+					pt.x += offset.x;
+					pt.y += offset.y;
 				}
 			}
 			
-			var dx = geo2.x;
-			var dy = geo2.y;
+			var useParent = !graph.isTableRow(source) && !graph.isTableCell(source) &&
+				(graph.model.isEdge(source) || (sourceGeo != null &&
+				!sourceGeo.relative && validLayout));
+			var tempTarget = graph.getCellAt((geo.x + dx + graph.view.translate.x) * graph.view.scale,
+				(geo.y + dy + graph.view.translate.y) * graph.view.scale);
+			
+			if (tempTarget != null && tempTarget != targetParent &&
+				(graph.isContainer(tempTarget) || graph.isSwimlane(tempTarget)))
+			{
+				tmp = graph.view.getState(tempTarget);
+			
+				// Offsets by new parent position
+				if (tmp != null)
+				{
+					var offset = new mxPoint((tmp.x / graph.view.scale - graph.view.translate.x),
+						(tmp.y / graph.view.scale - graph.view.translate.y));
+					targetParent = tempTarget;
+					
+					geo.x -= offset.x - dx;
+					geo.y -= offset.y - dy;
+					useParent = true;
+				}
+			}
+			else if (!validLayout || graph.isTableRow(source) || graph.isTableCell(source))
+			{
+				geo.x += dx;
+				geo.y += dy;
+			}
+
+			dx = geo2.x;
+			dy = geo2.y;
 			
 			// Ignores geometry of edges
 			if (graph.model.isEdge(targets[dropCellIndex]))
@@ -2371,9 +2405,8 @@ Sidebar.prototype.dropAndConnect = function(source, targets, direction, dropCell
 				dy = 0;
 			}
 			
-			var useParent = graph.model.isEdge(source) || (sourceGeo != null && !sourceGeo.relative && validLayout);
 			targets = graph.importCells(targets, (geo.x - (useParent ? dx : 0)),
-					(geo.y - (useParent ? dy : 0)), (useParent) ? targetParent : null);
+				(geo.y - (useParent ? dy : 0)), (useParent) ? targetParent : null);
 			tmp = targets;
 			
 			if (graph.model.isEdge(source))

File diff suppressed because it is too large
+ 793 - 793
src/main/webapp/js/viewer-static.min.js


File diff suppressed because it is too large
+ 793 - 793
src/main/webapp/js/viewer.min.js


+ 1 - 466
src/main/webapp/service-worker.js

@@ -3,472 +3,7 @@ importScripts('https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox
 if (workbox)
 {
 	// This is replaced in build process
-	workbox.precaching.precacheAndRoute([
-  {
-    "url": "js/app.min.js",
-    "revision": "eb6afac65b25308b2f16f7a09eb570a8"
-  },
-  {
-    "url": "js/extensions.min.js",
-    "revision": "99a5699e7051a810fdee45e0fd91be93"
-  },
-  {
-    "url": "js/stencils.min.js",
-    "revision": "a6620368de26b57e1a60f45f470a9e87"
-  },
-  {
-    "url": "js/shapes.min.js",
-    "revision": "9b887f2907288abde17aec69290469f0"
-  },
-  {
-    "url": "js/math-print.js",
-    "revision": "9d98c920695f6c3395da4b68f723e60a"
-  },
-  {
-    "url": "index.html",
-    "revision": "18c33f3af16a7c95000d868f1886c7b5"
-  },
-  {
-    "url": "open.html",
-    "revision": "dd24217f6c21207b54475409848f31ff"
-  },
-  {
-    "url": "styles/grapheditor.css",
-    "revision": "35b5b9d556faa375612c04addcd5819c"
-  },
-  {
-    "url": "styles/atlas.css",
-    "revision": "40f54334c7a62821dbf1f7c7d8ad62cc"
-  },
-  {
-    "url": "styles/dark.css",
-    "revision": "372fe7bbfa631d8c6ebbde5445b36c1d"
-  },
-  {
-    "url": "js/croppie/croppie.min.css",
-    "revision": "fc297c9002c79c15a132f13ee3ec427e"
-  },
-  {
-    "url": "js/dropbox/Dropbox-sdk.min.js",
-    "revision": "4b9842892aa37b156db0a8364b7a83b0"
-  },
-  {
-    "url": "js/onedrive/OneDrive.js",
-    "revision": "d82b9c14d7a069efabef719a8a5f3975"
-  },
-  {
-    "url": "math/MathJax.js",
-    "revision": "c32a502b8b4a6bd6bad8ddb1b59e9e72"
-  },
-  {
-    "url": "resources/dia.txt",
-    "revision": "056e6e45a1cf0b5dcf64512f1708314f"
-  },
-  {
-    "url": "resources/dia_cs.txt",
-    "revision": "349dd7fa410893c82768743455f11558"
-  },
-  {
-    "url": "resources/dia_my.txt",
-    "revision": "056e6e45a1cf0b5dcf64512f1708314f"
-  },
-  {
-    "url": "resources/dia_am.txt",
-    "revision": "87ca49daa5aca507bba6e6ed01ad6370"
-  },
-  {
-    "url": "resources/dia_ml.txt",
-    "revision": "ebe543620d88c3a09a09c68cf05c43a3"
-  },
-  {
-    "url": "resources/dia_uk.txt",
-    "revision": "7220391fbe0027c88e789ddaa8ff2a75"
-  },
-  {
-    "url": "resources/dia_bg.txt",
-    "revision": "d6720b26f6a8a9974f23f7eb9786b70d"
-  },
-  {
-    "url": "resources/dia_ca.txt",
-    "revision": "834ce0ead33125ab0f05b942be433239"
-  },
-  {
-    "url": "resources/dia_th.txt",
-    "revision": "2cb38568af63f0c6fd8fb72a4ae9409e"
-  },
-  {
-    "url": "resources/dia_bs.txt",
-    "revision": "fd881259654bf91f918b46da3b54d69b"
-  },
-  {
-    "url": "resources/dia_id.txt",
-    "revision": "52c2dbf156db4d4dcdf8d6a0c41033b3"
-  },
-  {
-    "url": "resources/dia_sk.txt",
-    "revision": "4c027c68aecab9f2122f989f7e8d9d58"
-  },
-  {
-    "url": "resources/dia_ro.txt",
-    "revision": "f541b0c99977a54333b14054ed89a8cf"
-  },
-  {
-    "url": "resources/dia_gl.txt",
-    "revision": "bf23d9e561b1ba92f1d43862ced2e51f"
-  },
-  {
-    "url": "resources/dia_es.txt",
-    "revision": "586f89950b9eb01dfe974447eb3481e6"
-  },
-  {
-    "url": "resources/dia_eu.txt",
-    "revision": "e383e7e556cae6226eef39d6fbce30c3"
-  },
-  {
-    "url": "resources/dia_ko.txt",
-    "revision": "1336721d5286b7a96f810ac35d47dd58"
-  },
-  {
-    "url": "resources/dia_si.txt",
-    "revision": "056e6e45a1cf0b5dcf64512f1708314f"
-  },
-  {
-    "url": "resources/dia_kn.txt",
-    "revision": "237b4025d46694933c85d42e7ad63245"
-  },
-  {
-    "url": "resources/dia_hu.txt",
-    "revision": "ccac54049a4030d3711c91d895b56c66"
-  },
-  {
-    "url": "resources/dia_fi.txt",
-    "revision": "be18dc54e947285dff1972758566fba8"
-  },
-  {
-    "url": "resources/dia_da.txt",
-    "revision": "08ebaa04a6ef818bc01095dadd8f84f7"
-  },
-  {
-    "url": "resources/dia_de.txt",
-    "revision": "aea7526194d50e3edef81c0952ec352e"
-  },
-  {
-    "url": "resources/dia_sl.txt",
-    "revision": "64936a8797ede5bfac8aa2a60f6bcff8"
-  },
-  {
-    "url": "resources/dia_it.txt",
-    "revision": "2405b0347b2d18bc54d36e8892e597b2"
-  },
-  {
-    "url": "resources/dia_hr.txt",
-    "revision": "036653f52759815fe8e2be5c3bb53e96"
-  },
-  {
-    "url": "resources/dia_he.txt",
-    "revision": "39b607ada96b68429ff6f4309dae183b"
-  },
-  {
-    "url": "resources/dia_pt.txt",
-    "revision": "f84746863a838bca3f63aaa990626561"
-  },
-  {
-    "url": "resources/dia_zh-tw.txt",
-    "revision": "c66ac58eae85088d1f0d9ed1094dbd49"
-  },
-  {
-    "url": "resources/dia_et.txt",
-    "revision": "c03016b2ea79b7bb0336090aec8433fc"
-  },
-  {
-    "url": "resources/dia_ja.txt",
-    "revision": "1731aa2e60463ebfebf62264addd4f82"
-  },
-  {
-    "url": "resources/dia_hi.txt",
-    "revision": "e4490486e062022c16ec96cf71a59558"
-  },
-  {
-    "url": "resources/dia_eo.txt",
-    "revision": "104021e104d1ae57dc3e0754bc29c06e"
-  },
-  {
-    "url": "resources/dia_fa.txt",
-    "revision": "6816b3b2bbbdc19f31f90538d1002a19"
-  },
-  {
-    "url": "resources/dia_sw.txt",
-    "revision": "94416b358b42d47f25e0dc5da4502755"
-  },
-  {
-    "url": "resources/dia_pl.txt",
-    "revision": "e29ff7ae404d2050cfe44a0863ef15ae"
-  },
-  {
-    "url": "resources/dia_pt-br.txt",
-    "revision": "a22c37635a1e90d9a10c2af54bd90cd1"
-  },
-  {
-    "url": "resources/dia_sv.txt",
-    "revision": "0188480624efd21aa87f99fb2a0482ff"
-  },
-  {
-    "url": "resources/dia_el.txt",
-    "revision": "c0c141716e107d6bcf4488d6d46741fa"
-  },
-  {
-    "url": "resources/dia_sr.txt",
-    "revision": "1542d701f13e58ee30aeb11b48910557"
-  },
-  {
-    "url": "resources/dia_fr.txt",
-    "revision": "7da6942fb3fb14e842bac99c225cf696"
-  },
-  {
-    "url": "resources/dia_ru.txt",
-    "revision": "431d4ac88cc200f945245df1bf128e73"
-  },
-  {
-    "url": "resources/dia_gu.txt",
-    "revision": "5228be56d12b7b115eed4147b9cf562d"
-  },
-  {
-    "url": "resources/dia_ar.txt",
-    "revision": "3aaa1af719a0fc87b6c3e7b9aaef4a13"
-  },
-  {
-    "url": "resources/dia_tr.txt",
-    "revision": "a211b9fb65cad325d50fa974dc735fa2"
-  },
-  {
-    "url": "resources/dia_te.txt",
-    "revision": "b90bd5cd95035f8c34f8d18597be033c"
-  },
-  {
-    "url": "resources/dia_lt.txt",
-    "revision": "bd620c1558d9156494c257faf834f9bb"
-  },
-  {
-    "url": "resources/dia_lv.txt",
-    "revision": "4afe7da399a8b42708e1836619844e2a"
-  },
-  {
-    "url": "resources/dia_mr.txt",
-    "revision": "1b130ee36986100790765788fb66c3d0"
-  },
-  {
-    "url": "resources/dia_ms.txt",
-    "revision": "52d8ae70fd159d8f914a4dacb6bea7d8"
-  },
-  {
-    "url": "resources/dia_nl.txt",
-    "revision": "a0a4fa0edb56c84b3e90aa339f1beb17"
-  },
-  {
-    "url": "resources/dia_fil.txt",
-    "revision": "2e1e184c41fe0bab0eb9f12ab47d0e67"
-  },
-  {
-    "url": "resources/dia_zh.txt",
-    "revision": "32632f015222f50ec3e8e3f5885f1267"
-  },
-  {
-    "url": "resources/dia_bn.txt",
-    "revision": "d88336ee3de4240b40f3041db3ea6d75"
-  },
-  {
-    "url": "resources/dia_no.txt",
-    "revision": "340263eabe5af10e972e61fe454c32d5"
-  },
-  {
-    "url": "resources/dia_vi.txt",
-    "revision": "f65508207aa2a44caff8b35676cc9603"
-  },
-  {
-    "url": "resources/dia_ta.txt",
-    "revision": "297070d292fe275bec73d56dde70c7a5"
-  },
-  {
-    "url": "favicon.ico",
-    "revision": "fab2d88b37c72d83607527573de45281"
-  },
-  {
-    "url": "images/manifest.json",
-    "revision": "9b435c32fa220037c7296a08a4f08e13"
-  },
-  {
-    "url": "images/logo.png",
-    "revision": "89630b64b911ebe0daa3dfe442087cfa"
-  },
-  {
-    "url": "images/drawlogo.svg",
-    "revision": "4bf4d14ebcf072d8bd4c5a1c89e88fc6"
-  },
-  {
-    "url": "images/drawlogo-gray.svg",
-    "revision": "0aabacbc0873816e1e09e4736ae44c7d"
-  },
-  {
-    "url": "images/apple-touch-icon.png",
-    "revision": "73da7989a23ce9a4be565ec65658a239"
-  },
-  {
-    "url": "images/favicon-16x16.png",
-    "revision": "1a79d5461a5d2bf21f6652e0ac20d6e5"
-  },
-  {
-    "url": "images/favicon-32x32.png",
-    "revision": "e3b92da2febe70bad5372f6f3474b034"
-  },
-  {
-    "url": "images/android-chrome-192x192.png",
-    "revision": "a886234330ea25d4ba1c47f678b00ef2"
-  },
-  {
-    "url": "images/android-chrome-512x512.png",
-    "revision": "959b5fac2453963ff6d60fb85e4b73fd"
-  },
-  {
-    "url": "images/delete.png",
-    "revision": "5f2350f2fd20f1a229637aed32ed8f29"
-  },
-  {
-    "url": "images/droptarget.png",
-    "revision": "bbf7f563fb6784de1ce96f329519b043"
-  },
-  {
-    "url": "images/help.png",
-    "revision": "9266c6c3915bd33c243d80037d37bf61"
-  },
-  {
-    "url": "images/download.png",
-    "revision": "35418dd7bd48d87502c71b578cc6c37f"
-  },
-  {
-    "url": "images/logo-flat.png",
-    "revision": "038070ab43aee6e54a791211859fc67b"
-  },
-  {
-    "url": "images/google-drive-logo.svg",
-    "revision": "5d9f2f5bbc7dcc252730a0072bb23059"
-  },
-  {
-    "url": "images/onedrive-logo.svg",
-    "revision": "3645b344ec0634c1290dd58d7dc87b97"
-  },
-  {
-    "url": "images/dropbox-logo.svg",
-    "revision": "e6be408c77cf9c82d41ac64fa854280a"
-  },
-  {
-    "url": "images/github-logo.svg",
-    "revision": "a1a999b69a275eac0cb918360ac05ae1"
-  },
-  {
-    "url": "images/gitlab-logo.svg",
-    "revision": "0faea8c818899e58533e153c44b10517"
-  },
-  {
-    "url": "images/trello-logo.svg",
-    "revision": "006fd0d7d70d7e95dc691674cb12e044"
-  },
-  {
-    "url": "images/osa_drive-harddisk.png",
-    "revision": "b954e1ae772087c5b4c6ae797e1f9649"
-  },
-  {
-    "url": "images/osa_database.png",
-    "revision": "c350d9d9b95f37b6cfe798b40ede5fb0"
-  },
-  {
-    "url": "images/google-drive-logo-white.svg",
-    "revision": "f329d8b1be7778515a85b93fc35d9f26"
-  },
-  {
-    "url": "images/dropbox-logo-white.svg",
-    "revision": "4ea8299ac3bc31a16f199ee3aec223bf"
-  },
-  {
-    "url": "images/onedrive-logo-white.svg",
-    "revision": "b3602fa0fc947009cff3f33a581cff4d"
-  },
-  {
-    "url": "images/github-logo-white.svg",
-    "revision": "537b1127b3ca0f95b45782d1304fb77a"
-  },
-  {
-    "url": "images/gitlab-logo-white.svg",
-    "revision": "5fede9ac2f394c716b8c23e3fddc3910"
-  },
-  {
-    "url": "images/trello-logo-white-orange.svg",
-    "revision": "e2a0a52ba3766682f138138d10a75eb5"
-  },
-  {
-    "url": "images/logo-confluence.png",
-    "revision": "ed1e55d44ae5eba8f999aba2c93e8331"
-  },
-  {
-    "url": "images/logo-jira.png",
-    "revision": "f8d460555a0d1f87cfd901e940666629"
-  },
-  {
-    "url": "images/clear.gif",
-    "revision": "db13c778e4382e0b55258d0f811d5d70"
-  },
-  {
-    "url": "images/spin.gif",
-    "revision": "487cbb40b9ced439aa1ad914e816d773"
-  },
-  {
-    "url": "images/checkmark.gif",
-    "revision": "ba764ce62f2bf952df5bbc2bb4d381c5"
-  },
-  {
-    "url": "images/hs.png",
-    "revision": "fefa1a03d92ebad25c88dca94a0b63db"
-  },
-  {
-    "url": "mxgraph/css/common.css",
-    "revision": "b5b7280ec98671bb6c3847a36bc7ea12"
-  },
-  {
-    "url": "mxgraph/images/maximize.gif",
-    "revision": "5cd13d6925493ab51e876694cc1c2ec2"
-  },
-  {
-    "url": "mxgraph/images/minimize.gif",
-    "revision": "8957741b9b0f86af9438775f2aadbb54"
-  },
-  {
-    "url": "mxgraph/images/close.gif",
-    "revision": "8b84669812ac7382984fca35de8da48b"
-  },
-  {
-    "url": "mxgraph/images/resize.gif",
-    "revision": "a6477612b3567a34033f9cac6184eed3"
-  },
-  {
-    "url": "mxgraph/images/separator.gif",
-    "revision": "7819742ff106c97da7a801c2372bbbe5"
-  },
-  {
-    "url": "mxgraph/images/window.gif",
-    "revision": "fd9a21dd4181f98052a202a0a01f18ab"
-  },
-  {
-    "url": "mxgraph/images/window-title.gif",
-    "revision": "3fb1d6c43246cdf991a11dfe826dfe99"
-  },
-  {
-    "url": "mxgraph/images/button.gif",
-    "revision": "00759bdc3ad218fa739f584369541809"
-  },
-  {
-    "url": "mxgraph/images/point.gif",
-    "revision": "83a43717b284902442620f61bc4e9fa6"
-  }
-],
+	workbox.precaching.precacheAndRoute([],
 	{
 		// Ignore all URL parameters
 		// FIXME: Using this /open redirects to /open.html so