David Benson 3 gadi atpakaļ
vecāks
revīzija
14ee1a30a6
37 mainītis faili ar 1955 papildinājumiem un 1992 dzēšanām
  1. 17 0
      ChangeLog
  2. 1 1
      VERSION
  3. 4 2
      src/main/java/com/mxgraph/online/ConverterServlet.java
  4. 1 1
      src/main/java/com/mxgraph/online/EmbedServlet2.java
  5. 12 0
      src/main/java/com/mxgraph/online/Utils.java
  6. BIN
      src/main/webapp/WEB-INF/lib/commons-codec-1.10.jar
  7. BIN
      src/main/webapp/WEB-INF/lib/commons-codec-1.11.jar
  8. BIN
      src/main/webapp/WEB-INF/lib/commons-lang3-3.12.0.jar
  9. BIN
      src/main/webapp/WEB-INF/lib/commons-lang3-3.5.jar
  10. BIN
      src/main/webapp/WEB-INF/lib/commons-text-1.9.jar
  11. BIN
      src/main/webapp/WEB-INF/lib/gson-2.7.jar
  12. BIN
      src/main/webapp/WEB-INF/lib/gson-2.8.9.jar
  13. BIN
      src/main/webapp/WEB-INF/lib/httpclient-4.5.13.jar
  14. BIN
      src/main/webapp/WEB-INF/lib/httpclient-4.5.5.jar
  15. BIN
      src/main/webapp/WEB-INF/lib/httpcore-4.4.13.jar
  16. BIN
      src/main/webapp/WEB-INF/lib/httpcore-4.4.9.jar
  17. BIN
      src/main/webapp/WEB-INF/lib/jstl-1.2.jar
  18. BIN
      src/main/webapp/WEB-INF/lib/pusher-http-java-1.0.0.jar
  19. BIN
      src/main/webapp/WEB-INF/lib/pusher-http-java-1.1.0.jar
  20. 0 10
      src/main/webapp/WEB-INF/web.xml
  21. 613 614
      src/main/webapp/js/app.min.js
  22. 3 4
      src/main/webapp/js/diagramly/Editor.js
  23. 10 3
      src/main/webapp/js/diagramly/EditorUi.js
  24. 0 1
      src/main/webapp/js/diagramly/Menus.js
  25. 18 17
      src/main/webapp/js/diagramly/Minimal.js
  26. 1 1
      src/main/webapp/js/diagramly/sidebar/Sidebar-GCPIcons.js
  27. 29 61
      src/main/webapp/js/grapheditor/EditorUi.js
  28. 17 16
      src/main/webapp/js/grapheditor/Format.js
  29. 46 76
      src/main/webapp/js/grapheditor/Graph.js
  30. 2 0
      src/main/webapp/js/grapheditor/Shapes.js
  31. 584 585
      src/main/webapp/js/viewer-static.min.js
  32. 584 585
      src/main/webapp/js/viewer.min.js
  33. 4 4
      src/main/webapp/mxgraph/mxClient.js
  34. 3 3
      src/main/webapp/resources/dia_eu.txt
  35. 1 1
      src/main/webapp/service-worker.js
  36. 1 1
      src/main/webapp/service-worker.js.map
  37. 4 6
      src/main/webapp/teams.html

+ 17 - 0
ChangeLog

@@ -1,3 +1,20 @@
+08-DEC-2021: 15.9.3
+
+- Adds commons-lang3 3.12.0 for commons text dependency
+
+08-DEC-2021: 15.9.2
+
+- Keeps only window title inside viewrect
+- Fixes handling of defaults in copy/paste style
+- Removes GoogleGadgetServlet
+- Improves handling of special style values
+- Uses map in signature of Graph.updateCellStyles
+- Fixes possible unresolved values in default style
+- Fixes unresolved colors in style thumbnail
+- Fixes background page for PDF export in dark mode
+- Fixes line cap for partial rectangle https://github.com/jgraph/drawio-desktop/issues/813
+- Fixes ignored model for change of cells in event
+
 03-DEC-2021: 15.9.1
 
 - Fixes build error

+ 1 - 1
VERSION

@@ -1 +1 @@
-15.9.1
+15.9.3

+ 4 - 2
src/main/java/com/mxgraph/online/ConverterServlet.java

@@ -22,7 +22,8 @@ import org.apache.commons.fileupload.FileItem;
 import org.apache.commons.fileupload.FileUploadException;
 import org.apache.commons.fileupload.disk.DiskFileItemFactory;
 import org.apache.commons.fileupload.servlet.ServletFileUpload;
-import org.apache.commons.io.FilenameUtils;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 
 //This servlet is an interface between draw.io and CloudConverter.
 //For EMF files, it detect its size and resize the huge images such that max dimension is MAX_DIM
@@ -102,7 +103,8 @@ public class ConverterServlet  extends HttpServlet
 	            else
 	            {
 	            	//We expect only one file
-	                fileName = FilenameUtils.getName(item.getName());
+	                Path file = Paths.get(item.getName());
+	                fileName = file.getFileName().toString();
 	                fileContent = item.getInputStream();
 	            }
 	        }

+ 1 - 1
src/main/java/com/mxgraph/online/EmbedServlet2.java

@@ -38,7 +38,7 @@ import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
-import org.apache.commons.lang3.StringEscapeUtils;
+import org.apache.commons.text.StringEscapeUtils;
 
 import com.google.appengine.api.utils.SystemProperty;
 

+ 12 - 0
src/main/java/com/mxgraph/online/Utils.java

@@ -466,4 +466,16 @@ public class Utils
 		return head;
 	}
 
+	public static boolean isNumeric (String str)
+	{ 
+		try
+		{  
+			Double.parseDouble(str);  
+			return true;
+		}
+		catch(NumberFormatException e)
+		{  
+			return false;  
+		}  
+	}
 }

BIN
src/main/webapp/WEB-INF/lib/commons-codec-1.10.jar


BIN
src/main/webapp/WEB-INF/lib/commons-codec-1.11.jar


BIN
src/main/webapp/WEB-INF/lib/commons-lang3-3.12.0.jar


BIN
src/main/webapp/WEB-INF/lib/commons-lang3-3.5.jar


BIN
src/main/webapp/WEB-INF/lib/commons-text-1.9.jar


BIN
src/main/webapp/WEB-INF/lib/gson-2.7.jar


BIN
src/main/webapp/WEB-INF/lib/gson-2.8.9.jar


BIN
src/main/webapp/WEB-INF/lib/httpclient-4.5.13.jar


BIN
src/main/webapp/WEB-INF/lib/httpclient-4.5.5.jar


BIN
src/main/webapp/WEB-INF/lib/httpcore-4.4.13.jar


BIN
src/main/webapp/WEB-INF/lib/httpcore-4.4.9.jar


BIN
src/main/webapp/WEB-INF/lib/jstl-1.2.jar


BIN
src/main/webapp/WEB-INF/lib/pusher-http-java-1.0.0.jar


BIN
src/main/webapp/WEB-INF/lib/pusher-http-java-1.1.0.jar


+ 0 - 10
src/main/webapp/WEB-INF/web.xml

@@ -36,16 +36,6 @@
     <servlet-name>EmbedServlet2</servlet-name>
     <url-pattern>/embed2.js</url-pattern>
   </servlet-mapping>
-  <servlet>
-    <description/>
-    <display-name>GoogleGadgetServlet</display-name>
-    <servlet-name>GoogleGadgetServlet</servlet-name>
-    <servlet-class>com.mxgraph.online.GoogleGadgetServlet</servlet-class>
-  </servlet>
-  <servlet-mapping>
-    <servlet-name>GoogleGadgetServlet</servlet-name>
-    <url-pattern>/gadget.xml</url-pattern>
-  </servlet-mapping>
   <servlet>
     <description/>
     <display-name>ImgurRedirect</display-name>

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 613 - 614
src/main/webapp/js/app.min.js


+ 3 - 4
src/main/webapp/js/diagramly/Editor.js

@@ -2329,7 +2329,6 @@
 				{
 					var node = mxUtils.parseXml(tmp).documentElement;
 					
-					
 					return node.nodeName == 'mxfile' || node.nodeName == 'mxGraphModel';
 				}
 			}
@@ -5853,9 +5852,9 @@
 	 * Adds support for custom fonts in cell styles.
 	 */
 	var graphPostProcessCellStyle = Graph.prototype.postProcessCellStyle;
-	Graph.prototype.postProcessCellStyle = function(style)
+	Graph.prototype.postProcessCellStyle = function(cell, style)
 	{
-		this.replaceDefaultColors(style);
+		this.replaceDefaultColors(cell, style);
 
 		return Graph.processFontStyle(graphPostProcessCellStyle.apply(this, arguments));
 	};
@@ -5863,7 +5862,7 @@
 	/**
 	 * Replaces default colors. 
 	 */
-	Graph.prototype.replaceDefaultColors = function(style)
+	Graph.prototype.replaceDefaultColors = function(cell, style)
 	{
 		if (style != null)
 		{

+ 10 - 3
src/main/webapp/js/diagramly/EditorUi.js

@@ -1527,7 +1527,8 @@
 			{
 				var graphGetGlobalVariable = graph.getGlobalVariable;
 				graph = this.createTemporaryGraph(darkTheme ?
-						graph.getDefaultStylesheet() : graph.getStylesheet());
+					graph.getDefaultStylesheet() :
+					graph.getStylesheet());
 				graph.setBackgroundImage = this.editor.graph.setBackgroundImage;
 				var page = this.pages[0];
 
@@ -1857,8 +1858,8 @@
 	 * @param {number} dx X-coordinate of the translation.
 	 * @param {number} dy Y-coordinate of the translation.
 	 */
-	EditorUi.prototype.downloadFile = function(format, uncompressed, addShadow, ignoreSelection, currentPage,
-		pageVisible, transparent, scale, border, grid, includeXml, pageRange)
+	EditorUi.prototype.downloadFile = function(format, uncompressed, addShadow, ignoreSelection,
+		currentPage, pageVisible, transparent, scale, border, grid, includeXml, pageRange)
 	{
 		try
 		{
@@ -9261,8 +9262,14 @@
 					this.defaultThemeName == 'darkTheme')
 				{
 					var temp = this.stylesheet;
+					var tempFg = this.shapeForegroundColor;
+					var tempBg = this.shapeBackgroundColor;
 					this.stylesheet = this.getDefaultStylesheet();
+					this.shapeBackgroundColor = '#ffffff';
+					this.shapeForegroundColor = '#000000';
 					result = ui.createImageForPageLink(result.originalSrc);
+					this.shapeBackgroundColor = tempBg;
+					this.shapeForegroundColor = tempFg;
 					this.stylesheet = temp;
 				}
 			}

+ 0 - 1
src/main/webapp/js/diagramly/Menus.js

@@ -1541,7 +1541,6 @@
 						editorUi.checkForUpdates();
 					});
 					
-					console.log('electron help menu');
 					this.addMenuItems(menu, ['-', 'keyboardShortcuts', 'quickStart',
 						'website', 'support', '-'], parent);
 						

+ 18 - 17
src/main/webapp/js/diagramly/Minimal.js

@@ -52,8 +52,9 @@ EditorUi.initMinimalTheme = function()
 	    	var iiw = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
 	        var ih = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
 	        
-	        x = Math.max(0, Math.min(x, iiw - this.table.clientWidth - 2));
-	        y = Math.max(0, Math.min(y, ih - this.table.clientHeight - 2));
+			var title = this.table.firstChild.firstChild.firstChild;
+	        x = Math.max(0, Math.min(x, iiw - title.clientWidth - 2));
+	        y = Math.max(0, Math.min(y, ih - title.clientHeight - 2));
 			
 	        if (this.getX() != x || this.getY() != y)
 	        {
@@ -1059,7 +1060,7 @@ EditorUi.initMinimalTheme = function()
 				ui.menus.addMenuItems(menu, ['new', 'open', '-', 'synchronize',
 					'-', 'save', 'saveAs', '-'], parent);
 			}
-			else if (urlParams['embed'] == '1')
+			else if (urlParams['embed'] == '1' || ui.mode == App.MODE_ATLAS)
 			{
 				if (urlParams['noSaveBtn'] != '1' &&
 					urlParams['embedInline'] != '1')
@@ -1069,7 +1070,7 @@ EditorUi.initMinimalTheme = function()
 				
 				if (urlParams['saveAndExit'] == '1' || 
 					(urlParams['noSaveBtn'] == '1' &&
-					urlParams['saveAndExit'] != '0'))
+					urlParams['saveAndExit'] != '0') || ui.mode == App.MODE_ATLAS)
 				{
 					ui.menus.addMenuItems(menu, ['saveAndExit'], parent);
 					
@@ -1160,9 +1161,9 @@ EditorUi.initMinimalTheme = function()
 			menu.addSeparator(parent);
 			ui.menus.addSubmenu('help', menu, parent);
 
-            if (urlParams['embed'] == '1')
+            if (urlParams['embed'] == '1' || ui.mode == App.MODE_ATLAS)
 			{
-				if (urlParams['noExitBtn'] != '1')
+				if (urlParams['noExitBtn'] != '1' || ui.mode == App.MODE_ATLAS)
 				{
 					ui.menus.addMenuItems(menu, ['-', 'exit'], parent);
 				}
@@ -1281,18 +1282,8 @@ EditorUi.initMinimalTheme = function()
 			ui.menus.addMenuItems(menu, ['-', 'pageScale', 'ruler', '-', 'scrollbars',
 				'tooltips', '-', 'copyConnect', 'collapseExpand', '-'], parent);
 
-			if (urlParams['sketch'] == '1')
-			{
-				this.addMenuItems(menu, ['toggleSketchMode'], parent);
-			}
-
 			if (urlParams['embedInline'] != '1')
 			{
-				if (Editor.isDarkMode() || (!mxClient.IS_IE && !mxClient.IS_IE11))
-				{
-					this.addMenuItems(menu, ['toggleDarkMode'], parent);
-				}
-
 				if (urlParams['embed'] != '1' && (isLocalStorage || mxClient.IS_CHROMEAPP))
 				{
 					ui.menus.addMenuItems(menu, ['-', 'showStartScreen', 'search', 'scratchpad'], parent);
@@ -1307,13 +1298,23 @@ EditorUi.initMinimalTheme = function()
 			menu.addSeparator(parent);
         	ui.menus.addMenuItem(menu, 'configuration', parent);
 
-			if (!ui.isOfflineApp() && isLocalStorage)
+			if (!ui.isOfflineApp() && isLocalStorage && ui.mode != App.MODE_ATLAS)
 			{
 	        	ui.menus.addMenuItem(menu, 'plugins', parent);
 			}
 
 			this.addMenuItems(menu, ['-', 'fullscreen'], parent);
 
+			if (Editor.isDarkMode() || (!mxClient.IS_IE && !mxClient.IS_IE11))
+			{
+				this.addMenuItems(menu, ['toggleDarkMode'], parent);
+			}
+
+			if (urlParams['sketch'] == '1')
+			{
+				this.addMenuItems(menu, ['-', 'toggleSketchMode'], parent);
+			}
+
 			// Adds trailing separator in case new plugin entries are added
 			menu.addSeparator(parent);
         })));

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 1
src/main/webapp/js/diagramly/sidebar/Sidebar-GCPIcons.js


+ 29 - 61
src/main/webapp/js/grapheditor/EditorUi.js

@@ -94,60 +94,29 @@ EditorUi = function(editor, container, lightbox)
 		{
 			try
 			{
-				var state = graph.view.getState(cell);
-				
-				if (state != null)
+				var style = graph.getCellStyle(cell, false);
+				var values = [];
+				var keys = [];
+
+				for (var key in style)
 				{
-					// Ignores default styles
-					var clone = cell.clone();
-					clone.style = ''
-					var defaultStyle = graph.getCellStyle(clone);
-					var values = [];
-					var keys = [];
-		
-					for (var key in state.style)
-					{
-						if (defaultStyle[key] != state.style[key])
-						{
-							values.push(state.style[key]);
-							keys.push(key);
-						}
-					}
-					
-					// Handles special case for value "none"
-					var cellStyle = graph.getModel().getStyle(state.cell);
-					var tokens = (cellStyle != null) ? cellStyle.split(';') : [];
-					
-					for (var i = 0; i < tokens.length; i++)
-					{
-						var tmp = tokens[i];
-				 		var pos = tmp.indexOf('=');
-				 					 		
-				 		if (pos >= 0)
-				 		{
-				 			var key = tmp.substring(0, pos);
-				 			var value = tmp.substring(pos + 1);
-				 			
-				 			if (defaultStyle[key] != null && value == 'none')
-				 			{
-				 				values.push(value);
-				 				keys.push(key);
-				 			}
-				 		}
-					}
-		
-					// Resets current style
-					if (graph.getModel().isEdge(state.cell))
-					{
-						graph.currentEdgeStyle = {};
-					}
-					else
-					{
-						graph.currentVertexStyle = {}
-					}
-		
-					this.fireEvent(new mxEventObject('styleChanged', 'keys', keys, 'values', values, 'cells', [state.cell]));
+					values.push(style[key]);
+					keys.push(key);
 				}
+
+				// Resets current style
+				if (graph.getModel().isEdge(cell))
+				{
+					graph.currentEdgeStyle = {};
+				}
+				else
+				{
+					graph.currentVertexStyle = {}
+				}
+	
+				this.fireEvent(new mxEventObject('styleChanged',
+					'keys', keys, 'values', values,
+					'cells', [cell]));
 			}
 			catch (e)
 			{
@@ -233,7 +202,6 @@ EditorUi = function(editor, container, lightbox)
 				for (var i = 0; i < cells.length; i++)
 				{
 					var cell = cells[i];
-
 					var appliedStyles;
 
 					if (asText)
@@ -304,15 +272,15 @@ EditorUi = function(editor, container, lightbox)
 							}
 						}
 					}
-					
-					if (Editor.simpleLabels)
-					{
-						newStyle = mxUtils.setStyle(mxUtils.setStyle(
-							newStyle, 'html', null), 'whiteSpace', null);
-					}
-					
-					model.setStyle(cell, newStyle);
 				}
+
+				if (Editor.simpleLabels)
+				{
+					newStyle = mxUtils.setStyle(mxUtils.setStyle(
+						newStyle, 'html', null), 'whiteSpace', null);
+				}
+				
+				model.setStyle(cell, newStyle);
 			}
 			finally
 			{

+ 17 - 16
src/main/webapp/js/grapheditor/Format.js

@@ -4819,7 +4819,7 @@ StyleFormatPanel.prototype.addFill = function(container)
 		}
 	}, function(color)
 	{
-		graph.updateCellStyles(mxConstants.STYLE_GRADIENTCOLOR, color, graph.getSelectionCells());
+		graph.updateCellStyles({'gradientColor': color}, graph.getSelectionCells());
 	});
 
 	var fillKey = (ss.style.shape == 'image') ? mxConstants.STYLE_IMAGE_BACKGROUND : mxConstants.STYLE_FILLCOLOR;
@@ -5978,7 +5978,7 @@ DiagramStylePanel.prototype.addView = function(div)
 			delete graph.currentVertexStyle['sketch'];
 		}
 		
-		graph.updateCellStyles('sketch', (checked) ? '1' : null, graph.getVerticesAndEdges());
+		graph.updateCellStyles({'sketch': (checked) ? '1' : null}, graph.getVerticesAndEdges());
 	}, null, function(div)
 	{
 		div.style.width = 'auto';
@@ -6003,7 +6003,7 @@ DiagramStylePanel.prototype.addView = function(div)
 			delete graph.currentVertexStyle['rounded'];
 		}
 		
-		graph.updateCellStyles('rounded', (checked) ? '1' : '0', graph.getVerticesAndEdges());
+		graph.updateCellStyles({'rounded': (checked) ? '1' : '0'}, graph.getVerticesAndEdges());
 	}, null, function(div)
 	{
 		div.style.width = 'auto';
@@ -6033,7 +6033,7 @@ DiagramStylePanel.prototype.addView = function(div)
 			delete graph.currentEdgeStyle['curved'];
 		}
 		
-		graph.updateCellStyles('curved', (checked) ? '1' : null, graph.getVerticesAndEdges(false, true));
+		graph.updateCellStyles({'curved': (checked) ? '1' : null}, graph.getVerticesAndEdges(false, true));
 	}, null, function(div)
 	{
 		div.style.width = 'auto';
@@ -6058,8 +6058,8 @@ DiagramStylePanel.prototype.addView = function(div)
 				// Handles special label background color
 				if (style['labelBackgroundColor'] != null)
 				{
-					graph.updateCellStyles('labelBackgroundColor', (graphStyle != null) ?
-						graphStyle.background : null, [cells[i]]);
+					graph.updateCellStyles({'labelBackgroundColor': (graphStyle != null) ?
+						graphStyle.background : null}, [cells[i]]);
 				}
 				
 				var edge = model.isEdge(cells[i]);
@@ -6150,9 +6150,8 @@ DiagramStylePanel.prototype.addView = function(div)
 			model.beginUpdate();
 			try
 			{
-				graph.updateCellStyles('sketch', null, all);
-				graph.updateCellStyles('rounded', null, all);
-				graph.updateCellStyles('curved', null, graph.getVerticesAndEdges(false, true));
+				graph.updateCellStyles({'sketch': null, 'rounded': null}, all);
+				graph.updateCellStyles({'curved': null}, graph.getVerticesAndEdges(false, true));
 			}
 			finally
 			{
@@ -6191,9 +6190,10 @@ DiagramStylePanel.prototype.addView = function(div)
 		graph2.setPanning(false);
 		graph2.setEnabled(false);
 		
-		graph2.getCellStyle = function(cell)
+		graph2.getCellStyle = function(cell, resolve)
 		{
-			var result = mxUtils.clone(Graph.prototype.getCellStyle.apply(this, arguments));
+			resolve = (resolve != null) ? resolve : true;
+			var result = mxUtils.clone(graph.getCellStyle.apply(this, arguments));
 			var defaultStyle = graph.stylesheet.getDefaultVertexStyle();
 			var appliedStyle = vertexStyle;
 			
@@ -6207,9 +6207,9 @@ DiagramStylePanel.prototype.addView = function(div)
 			applyStyle(commonStyle, result, cell, graphStyle, graph2);
 			applyStyle(appliedStyle, result, cell, graphStyle, graph2);
 			
-			if (result != null)
+			if (resolve)
 			{
-				result = this.postProcessCellStyle(result);
+				result = graph.postProcessCellStyle(cell, result);
 			}
 
 			return result;
@@ -6349,8 +6349,9 @@ DiagramStylePanel.prototype.addView = function(div)
 				graph.view.gridColor = (graphStyle != null && graphStyle.gridColor != null) ?
 					graphStyle.gridColor : graph.view.defaultGridColor;
 				
-				graph.getCellStyle = function(cell)
+				graph.getCellStyle = function(cell, resolve)
 				{
+					resolve = (resolve != null) ? resolve : true;
 					var result = mxUtils.clone(prev.apply(this, arguments));
 					
 					var defaultStyle = graph.stylesheet.getDefaultVertexStyle();
@@ -6366,9 +6367,9 @@ DiagramStylePanel.prototype.addView = function(div)
 					applyStyle(commonStyle, result, cell, graphStyle);
 					applyStyle(appliedStyle, result, cell, graphStyle);
 					
-					if (result != null)
+					if (resolve)
 					{
-						result = this.postProcessCellStyle(result);
+						result = this.postProcessCellStyle(cell, result);
 					}
 					
 					return result;

+ 46 - 76
src/main/webapp/js/grapheditor/Graph.js

@@ -1590,6 +1590,20 @@ Graph.fadeNodes = function(nodes, start, end, done, delay)
 	}, 0);
 };
 
+/**
+ * Removes the elements from the map where the given function returns true.
+ */
+Graph.removeKeys = function(map, ignoreFn)
+{
+	for (var key in map)
+	{
+		if (ignoreFn(key))
+		{
+			delete map[key];
+		}
+	}
+};
+
 /**
  * Sets the transition for the given nodes.
  */
@@ -2273,65 +2287,53 @@ Graph.prototype.init = function(container)
 		
 		return cell;
 	};
-		
+
 	/**
-	 * Returns true if fast zoom preview should be used.
+	 * Returns the style of the given cell as an object.
 	 */
 	Graph.prototype.copyStyle = function(cell)
 	{
-		var style = null;
-		
-		if (cell != null)
-		{
-			style = mxUtils.clone(this.getCurrentCellStyle(cell));
-			
-			// Handles special case for value "none"
-			var cellStyle = this.model.getStyle(cell);
-			var tokens = (cellStyle != null) ? cellStyle.split(';') : [];
-			
-			for (var j = 0; j < tokens.length; j++)
-			{
-				var tmp = tokens[j];
-		 		var pos = tmp.indexOf('=');
-		 					 		
-		 		if (pos >= 0)
-		 		{
-		 			var key = tmp.substring(0, pos);
-		 			var value = tmp.substring(pos + 1);
-		 			
-		 			if (style[key] == null && value == mxConstants.NONE)
-		 			{
-		 				style[key] = mxConstants.NONE;
-		 			}
-		 		}
-			}
-		}
-		
-		return style;
+		return this.getCellStyle(cell, false);
 	};
-	
+
 	/**
 	 * Returns true if fast zoom preview should be used.
 	 */
 	Graph.prototype.pasteStyle = function(style, cells, keys)
 	{
 		keys = (keys != null) ? keys : Graph.pasteStyles;
-		
+
+		Graph.removeKeys(style, function(key)
+		{
+			return mxUtils.indexOf(keys, key) < 0;
+		});
+
+		this.updateCellStyles(style, cells);
+	};
+			
+	/**
+	 * Removes implicit styles from cell styles so that dark mode works using the
+	 * default values from the stylesheet.
+	 */
+	Graph.prototype.updateCellStyles = function(style, cells)
+	{
 		this.model.beginUpdate();
 		try
 		{
 			for (var i = 0; i < cells.length; i++)
 			{
-				var temp = this.getCurrentCellStyle(cells[i]);
-	
-				for (var j = 0; j < keys.length; j++)
+				if (this.model.isVertex(cells[i]) || this.model.isEdge(cells[i]))
 				{
-					var current = temp[keys[j]];
-					var value = style[keys[j]];
-					
-					if (current != value && (current != null || value != mxConstants.NONE))
+					var cellStyle = this.getCellStyle(cells[i], false);
+
+					for (var key in style)
 					{
-						this.setCellStyles(keys[j], value, [cells[i]]);
+						var value = style[key];
+
+						if (cellStyle[key] != value)
+						{
+							this.setCellStyles(key, value, [cells[i]]);
+						}
 					}
 				}
 			}
@@ -4280,7 +4282,7 @@ Graph.prototype.getLinkTargetForCell = function(cell)
 	{
 		return cell.value.getAttribute('linkTarget');
 	}
-	
+
 	return null;
 };
 
@@ -4288,10 +4290,8 @@ Graph.prototype.getLinkTargetForCell = function(cell)
  * Overrides label orientation for collapsed swimlanes inside stack and
  * for partial rectangles inside tables.
  */
-Graph.prototype.getCellStyle = function(cell)
+Graph.prototype.postProcessCellStyle = function(cell, style)
 {
-	var style = mxGraph.prototype.getCellStyle.apply(this, arguments);
-	
 	if (cell != null && this.layoutManager != null)
 	{
 		var parent = this.model.getParent(cell);
@@ -7383,7 +7383,7 @@ if (typeof mxVertexHandler != 'undefined')
 				state.style[key] = this.graph.currentEdgeStyle[key];
 			}
 
-			state.style = this.graph.postProcessCellStyle(state.style);
+			state.style = this.graph.postProcessCellStyle(state.cell, state.style);
 			
 			return state;
 		};
@@ -7490,36 +7490,6 @@ if (typeof mxVertexHandler != 'undefined')
 			
 			return style;
 		};
-			
-		/**
-		 * Removes implicit styles from cell styles so that dark mode works using the
-		 * default values from the stylesheet.
-		 */
-		Graph.prototype.updateCellStyles = function(key, value, cells)
-		{
-			this.model.beginUpdate();
-			try
-			{
-				for (var i = 0; i < cells.length; i++)
-				{
-					if (this.model.isVertex(cells[i]) || this.model.isEdge(cells[i]))
-					{
-						this.setCellStyles(key, null, [cells[i]]);
-						var style = this.getCellStyle(cells[i]);
-						var temp = style[key];
-						
-						if (value != ((temp == null) ? mxConstants.NONE : temp))
-						{
-							this.setCellStyles(key, value, [cells[i]]);
-						}
-					}
-				}
-			}
-			finally
-			{
-				this.model.endUpdate();
-			}
-		};
 
 		/**
 		 * Hook for subclassers.

+ 2 - 0
src/main/webapp/js/grapheditor/Shapes.js

@@ -3390,6 +3390,7 @@
 
 			c.pointerEvents = pointerEvents;
 			c.setStrokeColor(this.stroke);
+			c.setLineCap('square');
 			c.begin();
 			c.moveTo(x, y);
 			
@@ -3427,6 +3428,7 @@
 						
 			c.end();
 			c.stroke();
+			c.setLineCap('flat');
 		}
 	};
 

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 584 - 585
src/main/webapp/js/viewer-static.min.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 584 - 585
src/main/webapp/js/viewer.min.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 4 - 4
src/main/webapp/mxgraph/mxClient.js


+ 3 - 3
src/main/webapp/resources/dia_eu.txt

@@ -352,7 +352,7 @@ fullscreen=Pantaila osoa
 gap=Tartea
 gcp=GCP
 general=Orokorra
-getNotionChromeExtension=Get the Notion Chrome Extension
+getNotionChromeExtension=Eskuratu Notion Chrome gehigarria
 github=GitHub
 gitlab=GitLab
 gliffy=Gliffy
@@ -1168,5 +1168,5 @@ contactOwner=Contact Owner
 viewerOnlyMsg=Ezin dituzu diagramak editatu plataforma mugikorrean, mesedez erabili mahaigaineko bezeroa edo web arakatzailea.
 website=Webgunea
 check4Updates=Bilat eguneraketak
-attWriteFailedRetry={1}: Attachment write failed, trying again in {2} seconds...
-confPartialPageList=We couldn't fetch all pages due to an error in Confluence. Continuing using {1} pages only.
+attWriteFailedRetry={1}: Eranskinaren idazketa huts egin du, berriro saiatuko da {2} segundo barru...
+confPartialPageList=Ezin izan ditugu orrialde guztiak eskuratu konfluentzia errore bat dela medio. {1} orrialde soilik erabiliko dira.

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 1
src/main/webapp/service-worker.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 1
src/main/webapp/service-worker.js.map


+ 4 - 6
src/main/webapp/teams.html

@@ -290,7 +290,6 @@
 				// Supported domains are *.draw.io and the packaged version in Quip
 				var supportedDomain = (hostName.substring(hostName.length - 8, hostName.length) === '.draw.io') ||
 					(hostName.substring(hostName.length - 13, hostName.length) === '.diagrams.net');
-					(hostName.substring(hostName.length - 17, hostName.length) === '.quipelements.com');
 				
 				function loadAppJS()
 				{
@@ -299,11 +298,6 @@
 						mxScriptsLoaded = true;
 						checkAllLoaded();
 						
-						if (!supportedDomain)
-						{
-							mxscript('js/PostConfig.js');
-						}
-						
 						// Electron
 						if (mxIsElectron)
 						{
@@ -324,6 +318,10 @@
 								});
 							});
 						}
+						else if (!supportedDomain)
+						{
+							mxscript('js/PostConfig.js');
+						}
 					});
 				};