Compare commits
No commits in common. 'master' and 'main' have entirely different histories.
@ -1,3 +0,0 @@
|
||||
Manifest-Version: 1.0
|
||||
Class-Path:
|
||||
|
||||
@ -1,32 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
|
||||
|
||||
<threadsafe>true</threadsafe>
|
||||
<sessions-enabled>false</sessions-enabled>
|
||||
<runtime>java8</runtime>
|
||||
|
||||
<!-- Configure java.util.logging -->
|
||||
<system-properties>
|
||||
<property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/>
|
||||
</system-properties>
|
||||
|
||||
<!-- Path patterns not supported in production -->
|
||||
<static-files>
|
||||
<include path="/**">
|
||||
<http-header name="Referrer-Policy" value="strict-origin"/>
|
||||
<http-header name="Access-Control-Allow-Origin" value="*"/>
|
||||
<http-header name="X-XSS-Protection" value="1; mode=block"/>
|
||||
<http-header name="X-Content-Type-Options" value="nosniff"/>
|
||||
</include>
|
||||
</static-files>
|
||||
|
||||
<!-- App engine has conflicting interfaces for javax.cache.CacheManager -->
|
||||
<class-loader-config>
|
||||
<priority-specifier filename="cache-api-1.1.1.jar"/>
|
||||
</class-loader-config>
|
||||
|
||||
<instance-class>F1</instance-class>
|
||||
<automatic-scaling>
|
||||
<max-idle-instances>1</max-idle-instances>
|
||||
</automatic-scaling>
|
||||
</appengine-web-app>
|
||||
@ -1 +0,0 @@
|
||||
Replace_with_your_own_cloud_convert_api_key
|
||||
@ -1 +0,0 @@
|
||||
Replace_with_your_own_dropbox_client_id
|
||||
@ -1 +0,0 @@
|
||||
Replace_with_your_own_dropbox_client_secret
|
||||
@ -1 +0,0 @@
|
||||
Replace_with_your_own_github_client_id
|
||||
@ -1 +0,0 @@
|
||||
Replace_with_your_own_github_client_secret
|
||||
@ -1 +0,0 @@
|
||||
Replace_with_your_own_gitlab_client_id
|
||||
@ -1 +0,0 @@
|
||||
Replace_with_your_own_gitlab_client_secret
|
||||
@ -1 +0,0 @@
|
||||
Replace_with_your_own_google_client_id
|
||||
@ -1 +0,0 @@
|
||||
Replace_with_your_own_google_client_secret
|
||||
@ -1 +0,0 @@
|
||||
Replace_with_your_own_iconfinder_client_id
|
||||
@ -1 +0,0 @@
|
||||
Replace_with_your_own_iconfinder_client_secret
|
||||
@ -1,2 +0,0 @@
|
||||
# Set the default logging level for all loggers to WARNING
|
||||
.level = CONFIG
|
||||
@ -1 +0,0 @@
|
||||
Replace_with_your_own_microsoft_graph_client_id
|
||||
@ -1 +0,0 @@
|
||||
Replace_with_your_own_microsoft_graph_client_secret
|
||||
@ -1,4 +0,0 @@
|
||||
app_id=Replace_with_your_pusher_app_id
|
||||
key=Replace_with_your_pusher_key
|
||||
secret=Replace_with_your_pusher_secret
|
||||
cluster=Replace_with_your_pusher_cluster
|
||||
@ -1,144 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
|
||||
version="3.1">
|
||||
<welcome-file-list>
|
||||
<welcome-file>index.html</welcome-file>
|
||||
</welcome-file-list>
|
||||
<servlet>
|
||||
<description/>
|
||||
<display-name>ProxyServlet</display-name>
|
||||
<servlet-name>ProxyServlet</servlet-name>
|
||||
<servlet-class>com.mxgraph.online.ProxyServlet</servlet-class>
|
||||
</servlet>
|
||||
<servlet-mapping>
|
||||
<servlet-name>ProxyServlet</servlet-name>
|
||||
<url-pattern>/proxy</url-pattern>
|
||||
</servlet-mapping>
|
||||
<servlet>
|
||||
<description/>
|
||||
<display-name>EmbedServlet</display-name>
|
||||
<servlet-name>EmbedServlet</servlet-name>
|
||||
<servlet-class>com.mxgraph.online.EmbedServlet</servlet-class>
|
||||
</servlet>
|
||||
<servlet-mapping>
|
||||
<servlet-name>EmbedServlet</servlet-name>
|
||||
<url-pattern>/embed.js</url-pattern>
|
||||
</servlet-mapping>
|
||||
<servlet>
|
||||
<description/>
|
||||
<display-name>EmbedServlet2</display-name>
|
||||
<servlet-name>EmbedServlet2</servlet-name>
|
||||
<servlet-class>com.mxgraph.online.EmbedServlet2</servlet-class>
|
||||
</servlet>
|
||||
<servlet-mapping>
|
||||
<servlet-name>EmbedServlet2</servlet-name>
|
||||
<url-pattern>/embed2.js</url-pattern>
|
||||
</servlet-mapping>
|
||||
<servlet>
|
||||
<description/>
|
||||
<display-name>ImgurRedirect</display-name>
|
||||
<servlet-name>ImgurRedirect</servlet-name>
|
||||
<servlet-class>com.mxgraph.online.ImgurRedirectServlet</servlet-class>
|
||||
</servlet>
|
||||
<servlet-mapping>
|
||||
<servlet-name>ImgurRedirect</servlet-name>
|
||||
<url-pattern>/i/*</url-pattern>
|
||||
</servlet-mapping>
|
||||
<servlet>
|
||||
<description/>
|
||||
<display-name>GitHubAuthServlet</display-name>
|
||||
<servlet-name>GitHubAuthServlet</servlet-name>
|
||||
<servlet-class>com.mxgraph.online.GitHubAuthServlet</servlet-class>
|
||||
</servlet>
|
||||
<servlet-mapping>
|
||||
<servlet-name>GitHubAuthServlet</servlet-name>
|
||||
<url-pattern>/github2</url-pattern>
|
||||
</servlet-mapping>
|
||||
<servlet>
|
||||
<display-name>LogServlet</display-name>
|
||||
<servlet-name>LogServlet</servlet-name>
|
||||
<servlet-class>com.mxgraph.online.LogServlet</servlet-class>
|
||||
</servlet>
|
||||
<servlet-mapping>
|
||||
<servlet-name>LogServlet</servlet-name>
|
||||
<url-pattern>/log</url-pattern>
|
||||
</servlet-mapping>
|
||||
<servlet>
|
||||
<description/>
|
||||
<display-name>MSGraphAuthServlet</display-name>
|
||||
<servlet-name>MSGraphAuthServlet</servlet-name>
|
||||
<servlet-class>com.mxgraph.online.MSGraphAuthServlet</servlet-class>
|
||||
</servlet>
|
||||
<servlet-mapping>
|
||||
<servlet-name>MSGraphAuthServlet</servlet-name>
|
||||
<url-pattern>/microsoft</url-pattern>
|
||||
</servlet-mapping>
|
||||
<servlet>
|
||||
<description/>
|
||||
<display-name>GoogleAuthServlet</display-name>
|
||||
<servlet-name>GoogleAuthServlet</servlet-name>
|
||||
<servlet-class>com.mxgraph.online.GoogleAuthServlet</servlet-class>
|
||||
</servlet>
|
||||
<servlet-mapping>
|
||||
<servlet-name>GoogleAuthServlet</servlet-name>
|
||||
<url-pattern>/google</url-pattern>
|
||||
</servlet-mapping>
|
||||
<servlet>
|
||||
<description/>
|
||||
<display-name>ConverterServlet</display-name>
|
||||
<servlet-name>ConverterServlet</servlet-name>
|
||||
<servlet-class>com.mxgraph.online.ConverterServlet</servlet-class>
|
||||
</servlet>
|
||||
<servlet-mapping>
|
||||
<servlet-name>ConverterServlet</servlet-name>
|
||||
<url-pattern>/convert</url-pattern>
|
||||
</servlet-mapping>
|
||||
<servlet>
|
||||
<description/>
|
||||
<display-name>ExportProxyServlet</display-name>
|
||||
<servlet-name>ExportProxyServlet</servlet-name>
|
||||
<servlet-class>com.mxgraph.online.ExportProxyServlet</servlet-class>
|
||||
</servlet>
|
||||
<servlet-mapping>
|
||||
<servlet-name>ExportProxyServlet</servlet-name>
|
||||
<url-pattern>/export</url-pattern>
|
||||
</servlet-mapping>
|
||||
<servlet-mapping>
|
||||
<servlet-name>ExportProxyServlet</servlet-name>
|
||||
<url-pattern>/service/*</url-pattern>
|
||||
</servlet-mapping>
|
||||
<servlet>
|
||||
<description/>
|
||||
<display-name>GitlabAuthServlet</display-name>
|
||||
<servlet-name>GitlabAuthServlet</servlet-name>
|
||||
<servlet-class>com.mxgraph.online.GitlabAuthServlet</servlet-class>
|
||||
</servlet>
|
||||
<servlet-mapping>
|
||||
<servlet-name>GitlabAuthServlet</servlet-name>
|
||||
<url-pattern>/gitlab</url-pattern>
|
||||
</servlet-mapping>
|
||||
<servlet>
|
||||
<description/>
|
||||
<display-name>DropboxAuthServlet</display-name>
|
||||
<servlet-name>DropboxAuthServlet</servlet-name>
|
||||
<servlet-class>com.mxgraph.online.DropboxAuthServlet</servlet-class>
|
||||
</servlet>
|
||||
<servlet-mapping>
|
||||
<servlet-name>DropboxAuthServlet</servlet-name>
|
||||
<url-pattern>/dropbox</url-pattern>
|
||||
</servlet-mapping>
|
||||
<mime-mapping>
|
||||
<extension>css</extension>
|
||||
<mime-type>text/css</mime-type>
|
||||
</mime-mapping>
|
||||
<mime-mapping>
|
||||
<extension>manifest</extension>
|
||||
<mime-type>text/cache-manifest</mime-type>
|
||||
</mime-mapping>
|
||||
<mime-mapping>
|
||||
<extension>mjs</extension>
|
||||
<mime-type>text/javascript</mime-type>
|
||||
</mime-mapping>
|
||||
</web-app>
|
||||
@ -1,84 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Clear diagrams.net Cache</title>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
|
||||
<title>Clear diagrams.net Cache</title>
|
||||
<style type="text/css">
|
||||
@media (prefers-color-scheme: dark) {
|
||||
.adaptive-asset {
|
||||
filter: invert(1);
|
||||
}
|
||||
}
|
||||
body {
|
||||
font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans",
|
||||
Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||
background: light-dark(rgb(255, 255, 255), rgb(18, 18, 18));
|
||||
color: light-dark(rgb(18, 18, 18), white);
|
||||
color-scheme: light dark;
|
||||
font-size: 12px;
|
||||
}
|
||||
hr {
|
||||
border: 0;
|
||||
border-top: 1px solid light-dark(rgb(0, 0, 0), rgb(255, 255, 255));
|
||||
}
|
||||
textarea {
|
||||
box-sizing: border-box;
|
||||
font-family: monospace;
|
||||
resize: vertical;
|
||||
font-size: inherit;
|
||||
border-radius: 4px;
|
||||
padding: 4px;
|
||||
}
|
||||
button {
|
||||
background: light-dark(#29b6f2, #003555);
|
||||
border-radius: 4px;
|
||||
padding: 10px;
|
||||
border: none;
|
||||
}
|
||||
button {
|
||||
cursor: default;
|
||||
opacity: 0.9;
|
||||
}
|
||||
button:hover:not(:disabled) {
|
||||
opacity: 1;
|
||||
}
|
||||
button:active:not(:disabled) {
|
||||
filter:invert(1);
|
||||
}
|
||||
input {
|
||||
padding: 2px 6px;
|
||||
margin: 0 0 0 4px;
|
||||
font-size: inherit;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="content" style="position:relative;display:block;left:50%;transform:translate(-50%,0);width:50%;padding-top:2%;text-align:center;white-space:nowrap;">
|
||||
<div style="display:flex;align-items:center;opacity:0.7;width:250px;min-width:130px;position:relative;left:50%;transform:translate(-50%,0);">
|
||||
<svg viewBox="24 26 68 68" style="width:28px;display:inline-block;">
|
||||
<line y2="72.394" x2="41.061" y1="43.384" x1="58.069" stroke-miterlimit="10" stroke-width="3.5528"
|
||||
stroke="currentColor" fill="none" />
|
||||
<line y2="72.394" x2="75.076" y1="43.384" x1="58.068" stroke-miterlimit="10" stroke-width="3.5008"
|
||||
stroke="currentColor" fill="none" />
|
||||
<path
|
||||
d="M52.773,77.084c0,1.954-1.599,3.553-3.553,3.553H36.999c-1.954,0-3.553-1.599-3.553-3.553v-9.379c0-1.954,1.599-3.553,3.553-3.553h12.222c1.954,0,3.553,1.599,3.553,3.553V77.084z"
|
||||
fill="currentColor" />
|
||||
<path
|
||||
d="M67.762,48.074c0,1.954-1.599,3.553-3.553,3.553H51.988c-1.954,0-3.553-1.599-3.553-3.553v-9.379c0-1.954,1.599-3.553,3.553-3.553H64.21c1.954,0,3.553,1.599,3.553,3.553V48.074z"
|
||||
fill="currentColor" />
|
||||
<path
|
||||
d="M82.752,77.084c0,1.954-1.599,3.553-3.553,3.553H66.977c-1.954,0-3.553-1.599-3.553-3.553v-9.379c0-1.954,1.599-3.553,3.553-3.553h12.222c1.954,0,3.553,1.599,3.553,3.553V77.084z"
|
||||
fill="currentColor" />
|
||||
</svg>
|
||||
<span style="font-family:Helvetica;font-weight:700;font-size:20px;margin-left:4px;">draw.io</span>
|
||||
<a style="position:absolute;right:0px;" class="adaptive-asset" href="https://www.drawio.com/blog/clear-diagrams-net-cache" title="Help" target="_blank">
|
||||
<img style="opacity:0.6;height:16px;width:16px;" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBmaWxsPSJub25lIiBkPSJNMCAwaDI0djI0SDB6Ii8+PHBhdGggZD0iTTExIDE4aDJ2LTJoLTJ2MnptMS0xNkM2LjQ4IDIgMiA2LjQ4IDIgMTJzNC40OCAxMCAxMCAxMCAxMC00LjQ4IDEwLTEwUzE3LjUyIDIgMTIgMnptMCAxOGMtNC40MSAwLTgtMy41OS04LThzMy41OS04IDgtOCA4IDMuNTkgOCA4LTMuNTkgOC04IDh6bTAtMTRjLTIuMjEgMC00IDEuNzktNCA0aDJjMC0xLjEuOS0yIDItMnMyIC45IDIgMmMwIDItMyAxLjc1LTMgNWgyYzAtMi4yNSAzLTIuNSAzLTUgMC0yLjIxLTEuNzktNC00LTR6Ii8+PC9zdmc+" border="0">
|
||||
</a>
|
||||
</div>
|
||||
<script src="js/app.min.js"></script>
|
||||
<script src="js/clear.js"></script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@ -1,827 +0,0 @@
|
||||
/**
|
||||
* A Draw.io diagram viewer component with configurable toolbar buttons for editing, deleting and zooming buttons.
|
||||
* Parameters :
|
||||
* diagramName - name of the diagram
|
||||
* attachmentId - ID of the diagram attachment
|
||||
* ceoId - page ID or issue key
|
||||
* readerOpts - JSON object with options :
|
||||
* loadUrl - url from which to load the diagram
|
||||
* editUrl - url of the editor
|
||||
* stylePath - url from which to load the css
|
||||
* stencilPath - url from which to load the stencils
|
||||
* imagePath - url from which to load the graph mages
|
||||
* resourcePath - path to the translations
|
||||
* viewerToolbar - show toolbar or not
|
||||
* autoSize - resizes the graph container to match the graph bounds
|
||||
* width - width of the container
|
||||
* height - height of the container
|
||||
* disableButtons - disables all buttons
|
||||
* center - should the diagram be horizontally centered or not
|
||||
* evaluation - evaluation mode
|
||||
* lightbox - boolean indicating if this viewer is a lightbox
|
||||
* graphDocument - optional document containing the XML data
|
||||
*/
|
||||
function DrawioViewer(diagramName, attachmentId, ceoId, readerOpts, lightbox, graphDocument, connect)
|
||||
{
|
||||
this.id = attachmentId;
|
||||
this.diagramName = diagramName;
|
||||
this.ceoId = ceoId;
|
||||
this.options = readerOpts;
|
||||
this.lightbox = lightbox;
|
||||
this.graphDocument = graphDocument;
|
||||
this.connect = connect;
|
||||
this.paddingBottom = (connect) ? 0 : 30;
|
||||
|
||||
// Overrides browser language with Confluence user language
|
||||
var lang = null;
|
||||
|
||||
// Language is in the readOpts in Server and in the URL in Connect
|
||||
if (!connect && readerOpts.language != null)
|
||||
{
|
||||
lang = readerOpts.language
|
||||
}
|
||||
else if (connect != null && urlParams['loc'] != null)
|
||||
{
|
||||
lang = urlParams['loc'];
|
||||
var dash = lang.indexOf('-');
|
||||
|
||||
if (dash >= 0)
|
||||
{
|
||||
lang = lang.substring(0, dash);
|
||||
}
|
||||
}
|
||||
|
||||
// Only german and english supported currently. English is default.
|
||||
if (lang == 'de')
|
||||
{
|
||||
mxClient.language = 'de';
|
||||
}
|
||||
|
||||
// Special extension used for the message bundle. For this bundle there is only a German
|
||||
// translation and the default English bundle so we temporarily override isLanguageSupported
|
||||
// to return true only if German is used and fallback to English for all other languages.
|
||||
var prevExtension = mxResources.extension;
|
||||
var prevIsLangSupported = mxResources.isLanguageSupported;
|
||||
mxResources.extension = '.txt';
|
||||
|
||||
mxResources.isLanguageSupported = function(lan)
|
||||
{
|
||||
return lan == 'de';
|
||||
};
|
||||
|
||||
mxResources.add(this.options.resourcePath);
|
||||
|
||||
// Restores previous settings
|
||||
mxResources.extension = prevExtension;
|
||||
mxResources.isLanguageSupported = prevIsLangSupported;
|
||||
|
||||
this.buttons = this.createButtons();
|
||||
|
||||
this.transparentImage = Editor.prototype.transparentImage;
|
||||
this.extractGraphModel = Editor.prototype.extractGraphModel;
|
||||
this.setGraphXml = Editor.prototype.setGraphXml;
|
||||
this.readGraphState = Editor.prototype.readGraphState;
|
||||
this.resetGraph = Editor.prototype.resetGraph;
|
||||
this.decompress = Editor.prototype.decompress;
|
||||
this.updateGraphComponents = Editor.prototype.updateGraphComponents;
|
||||
this.fireEvent = Editor.prototype.fireEvent;
|
||||
this.addListener = Editor.prototype.addListener;
|
||||
this.originalNoForeignObject = Editor.prototype.originalNoForeignObject;
|
||||
this.gridImage = '';
|
||||
|
||||
this.addListener('resetGraphView', this.resetGraphView);
|
||||
}
|
||||
|
||||
DrawioViewer.prototype = new mxEventSource();
|
||||
|
||||
DrawioViewer.prototype.graph = null;
|
||||
DrawioViewer.prototype.id = null;
|
||||
DrawioViewer.prototype.toolbar = null;
|
||||
DrawioViewer.prototype.options = null;
|
||||
DrawioViewer.prototype.originX = 0;
|
||||
DrawioViewer.prototype.originY = 0;
|
||||
DrawioViewer.prototype.popupWindow = null;
|
||||
DrawioViewer.prototype.buttons = {};
|
||||
|
||||
DrawioViewer.prototype.graphXmlString = null;
|
||||
|
||||
DrawioViewer.prototype.installToolbar = function()
|
||||
{
|
||||
this.toolbar = document.createElement('div');
|
||||
var toolbar = this.toolbar;
|
||||
var container = this.graph.container;
|
||||
toolbar.id = 'diagramly-reader-toolbar-' + this.id;
|
||||
toolbar.className = 'diagramly-reader-toolbar';
|
||||
toolbar.style.position = 'absolute';
|
||||
|
||||
container.parentNode.appendChild(toolbar);
|
||||
|
||||
toolbar.style.height = '30px';
|
||||
toolbar.style.width = this.countVisibleButtons() * 29 + 'px';
|
||||
|
||||
// Makes sure the toolbar is always visible and
|
||||
// disables toolbar for all overflow content
|
||||
container.parentNode.style.overflow = 'visible';
|
||||
|
||||
if (this.lightbox)
|
||||
{
|
||||
toolbar.style.bottom = '4px';
|
||||
toolbar.style.left = '50%';
|
||||
toolbar.style.width = this.countVisibleButtons() * 29 + 'px';
|
||||
toolbar.style.marginLeft = -Math.round(this.countVisibleButtons() * 29 / 2) + 'px'
|
||||
}
|
||||
else
|
||||
{
|
||||
container.parentNode.style.paddingBottom = this.paddingBottom + 'px';
|
||||
|
||||
var bs = this.graph.getBorderSizes();
|
||||
toolbar.style.bottom = (container.offsetTop + bs.y + 4) + 'px';
|
||||
toolbar.style.left = (container.offsetLeft + bs.x) + 'px';
|
||||
|
||||
if (!mxClient.IS_TOUCH)
|
||||
{
|
||||
toolbar.style.display = 'none';
|
||||
|
||||
$(container.parentNode).hover(function()
|
||||
{
|
||||
toolbar.style.bottom = (container.offsetTop + bs.y + 4) + 'px';
|
||||
toolbar.style.left = (container.offsetLeft + bs.x) + 'px';
|
||||
|
||||
$(toolbar).fadeIn(100);
|
||||
},
|
||||
function()
|
||||
{
|
||||
$(toolbar).fadeOut(100);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
DrawioViewer.prototype.countVisibleButtons = function()
|
||||
{
|
||||
var counter = 0;
|
||||
|
||||
for(var key in this.buttons)
|
||||
{
|
||||
var button = this.buttons[key];
|
||||
|
||||
if (button.visible)
|
||||
{
|
||||
counter++;
|
||||
}
|
||||
}
|
||||
|
||||
return counter;
|
||||
}
|
||||
|
||||
DrawioViewer.prototype.init = function()
|
||||
{
|
||||
this.loadStylesheet();
|
||||
|
||||
// Makes the shadow brighter
|
||||
mxConstants.SHADOWCOLOR = '#000000';
|
||||
mxConstants.SHADOW_OPACITY = 0.25;
|
||||
this.graph.setEnabled(false);
|
||||
this.graph.autoScroll = false;
|
||||
this.graph.container.style.overflow = 'hidden';
|
||||
this.graph.container.style.cursor = 'move';
|
||||
|
||||
// Panning only enabled in lightbox to allow text selection in viewer
|
||||
this.graph.setPanning(true);
|
||||
|
||||
// Workaround for context trigger starting panning if ignoreCell is true
|
||||
this.graph.panningHandler.useLeftButtonForPanning = true;
|
||||
this.graph.panningHandler.usePopupTrigger = false;
|
||||
this.graph.panningHandler.ignoreCell = true;
|
||||
|
||||
this.graph.panningHandler.isForcePanningEvent = function(me)
|
||||
{
|
||||
return mxEvent.isLeftMouseButton(me.getEvent());
|
||||
};
|
||||
|
||||
// Folding only enabled in lightbox
|
||||
this.graph.foldingEnabled = this.lightbox;
|
||||
|
||||
// Overrides click handler to ignore graph enabled state
|
||||
if (this.graph.foldingEnabled)
|
||||
{
|
||||
this.graph.cellRenderer.createControlClickHandler = function(state)
|
||||
{
|
||||
var graph = state.view.graph;
|
||||
|
||||
return function (evt)
|
||||
{
|
||||
var collapse = !graph.isCellCollapsed(state.cell);
|
||||
graph.foldCells(collapse, false, [state.cell], null, evt);
|
||||
mxEvent.consume(evt);
|
||||
};
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
// Hides collapse/expand icon if folding is disabled
|
||||
this.graph.getFoldingImage = function()
|
||||
{
|
||||
return null;
|
||||
};
|
||||
};
|
||||
|
||||
// HTML entities are displayed as plain text in wrapped plain text labels
|
||||
this.graph.cellRenderer.getLabelValue = function(state)
|
||||
{
|
||||
var result = mxCellRenderer.prototype.getLabelValue.apply(this, arguments);
|
||||
|
||||
if (state.view.graph.isHtmlLabel(state.cell))
|
||||
{
|
||||
if (state.style['html'] != 1)
|
||||
{
|
||||
result = mxUtils.htmlEntities(result, false);
|
||||
}
|
||||
else
|
||||
{
|
||||
result = Graph.sanitizeHtml(result);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
};
|
||||
|
||||
// Enables links if graph is "disabled" (ie. read-only)
|
||||
this.graph.click = function(me)
|
||||
{
|
||||
var cell = me.getCell();
|
||||
|
||||
if (cell != null && !me.isConsumed() && (mxEvent.isTouchEvent(me.getEvent()) ||
|
||||
mxEvent.isLeftMouseButton(me.getEvent())))
|
||||
{
|
||||
var href = this.getLinkForCell(cell);
|
||||
|
||||
// Test cases:
|
||||
// 1) the relative link without the Conf base path, with a leading slash, e.g. /download/attachment/....
|
||||
// 2) the relative link with the Conf base path, with a leading slash, e.g. /confluence/download/attachmentss/...
|
||||
// 3) the relative link without the conf base path, without a leading slash, e.g. download/attachments/...
|
||||
// 4) the full absolute path, e.g. https://localhost:1990/confluence/download/attachments/...
|
||||
// 5) full path without protocol, e.g. //confluence/download/attachments/...
|
||||
|
||||
if (href != null)
|
||||
{
|
||||
var r = new RegExp('^(?:[a-z]+:)?//', 'i'); // https://stackoverflow.com/questions/10687099/how-to-test-if-a-url-string-is-absolute-or-relative
|
||||
|
||||
if (!r.test(href))
|
||||
{
|
||||
// relative link
|
||||
|
||||
if (href.lastIndexOf('/', 0) !== 0) // http://stackoverflow.com/a/4579228/226469 seems to be the fastest check
|
||||
{
|
||||
// Need a leading slash in case we need to prepend the base path
|
||||
href = '/' + href;
|
||||
}
|
||||
|
||||
// var cp = AJS.Confluence.getContextPath(); // TODO confluence call in a common module
|
||||
|
||||
// Originally, links included the base path (but not the host), so there might be cases of the base path
|
||||
// already being prepended. If the base path has changed, we can't recover those cases
|
||||
// window.location.href = href.substring(0, cp.length) === cp ? href : cp + href; // prepends the context path if it's not already there
|
||||
window.location.href = href;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Test if it's an absolute URL, but on the same domain (i.e. open in same window)
|
||||
// There's a security setting (unknown which) that seems to stop the IE hack below working in
|
||||
// IE 11, https://drawio.atlassian.net/browse/DS-175, https://drawio.atlassian.net/browse/DFCS-52
|
||||
// Worst case is these users will open an absolute same domain link in a window
|
||||
|
||||
var link = document.createElement('a');
|
||||
link.href = href;
|
||||
link.href = link.href; // hack to populate 'host' under IE
|
||||
|
||||
if (link.host === location.host)
|
||||
{
|
||||
window.location.href = href;
|
||||
}
|
||||
else
|
||||
{
|
||||
window.open(href);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
me.consume();
|
||||
}
|
||||
};
|
||||
|
||||
this.graph.setTooltips(!mxClient.IS_TOUCH);
|
||||
|
||||
if (this.options.width != null)
|
||||
{
|
||||
this.graph.container.style.width = this.options.width + 'px';
|
||||
}
|
||||
|
||||
if (this.options.height != null)
|
||||
{
|
||||
this.graph.container.style.height = this.options.height + 'px';
|
||||
}
|
||||
|
||||
// Accumulates the zoom factor while the rendering is taking place
|
||||
// so that not the complete sequence of zoom steps must be painted
|
||||
var graph = this.graph;
|
||||
graph.updateZoomTimeout = null;
|
||||
graph.cumulativeZoomFactor = 1;
|
||||
|
||||
graph.lazyZoom = function(zoomIn)
|
||||
{
|
||||
if (this.updateZoomTimeout != null)
|
||||
{
|
||||
window.clearTimeout(this.updateZoomTimeout);
|
||||
}
|
||||
|
||||
if (zoomIn)
|
||||
{
|
||||
this.cumulativeZoomFactor *= this.zoomFactor;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.cumulativeZoomFactor /= this.zoomFactor;
|
||||
}
|
||||
|
||||
this.cumulativeZoomFactor = Math.round(this.view.scale * this.cumulativeZoomFactor * 100) / 100 / this.view.scale;
|
||||
|
||||
this.updateZoomTimeout = window.setTimeout(mxUtils.bind(this, function()
|
||||
{
|
||||
this.zoom(this.cumulativeZoomFactor);
|
||||
this.cumulativeZoomFactor = 1;
|
||||
this.updateZoomTimeout = null;
|
||||
}), 20);
|
||||
};
|
||||
|
||||
if (this.lightbox)
|
||||
{
|
||||
mxEvent.addMouseWheelListener(mxUtils.bind(this, function(evt, up)
|
||||
{
|
||||
if (!mxClient.IS_MAC || !mxEvent.isControlDown(evt))
|
||||
{
|
||||
var source = mxEvent.getSource(evt);
|
||||
|
||||
while (source != null)
|
||||
{
|
||||
if (source == graph.container)
|
||||
{
|
||||
graph.lazyZoom(up);
|
||||
mxEvent.consume(evt);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
source = source.parentNode;
|
||||
}
|
||||
}
|
||||
}));
|
||||
}
|
||||
};
|
||||
|
||||
DrawioViewer.prototype.resetGraphView = function()
|
||||
{
|
||||
this.graph.pageBreaksVisible = false;
|
||||
this.graph.preferPageSize = false;
|
||||
this.graph.pageVisible = false;
|
||||
|
||||
if (!this.lightbox)
|
||||
{
|
||||
var update = mxUtils.bind(this, function()
|
||||
{
|
||||
this.graph.centerZoom = this.graph.panningHandler.panningEnabled;
|
||||
|
||||
// If width and height are specified the height is overridden to match the diagram size
|
||||
var autoSizeWidth = this.options.width == null;
|
||||
var autoSizeHeight = this.options.height == null;
|
||||
var bounds = this.graph.getGraphBounds();
|
||||
var ratio = bounds.width / bounds.height;
|
||||
|
||||
var width = autoSizeWidth ? bounds.width + 2 : this.options.width;
|
||||
var height = autoSizeHeight ? (width / ratio) + 1 : this.options.height;
|
||||
|
||||
this.graph.container.style.width = Math.ceil(width) + 'px';
|
||||
this.graph.container.style.height = Math.ceil(height) + 'px';
|
||||
this.graph.container.style.maxWidth = '100%';
|
||||
|
||||
if (autoSizeWidth && autoSizeHeight)
|
||||
{
|
||||
this.translateOrigin();
|
||||
|
||||
// Used for fast restore of initial position in zoom to fit button
|
||||
this.initialX = this.graph.view.translate.x;
|
||||
this.initialY = this.graph.view.translate.y;
|
||||
}
|
||||
else if (this.options.zoomToFit)
|
||||
{
|
||||
this.graph.fit();
|
||||
}
|
||||
|
||||
//set the border after calling updateGraphComponnets() because the call sets it to ''
|
||||
this.graph.container.style.border = this.options.border ? '1px solid #DDDDDD' : 'none';
|
||||
this.graph.container.style.backgroundColor = (this.graph.background == null ||
|
||||
this.graph.background == 'none') ? '#ffffff' : this.graph.background;
|
||||
});
|
||||
|
||||
// Workaround for invisible container is to move the container to the document body for rendering
|
||||
if (!this.connect && (this.graph.container.clientWidth == 0 || this.graph.container.clientHeight == 0))
|
||||
{
|
||||
var previousParent = this.graph.container.parentNode;
|
||||
var nextSibling = this.graph.container.nextSibling;
|
||||
var prevPosition = this.graph.container.style.position;
|
||||
var prevVisible = this.graph.container.style.visible;
|
||||
|
||||
// Moves to document body for rendering (needed for text measuring)
|
||||
this.graph.container.style.position = 'absolute';
|
||||
this.graph.container.style.visible = 'hidden';
|
||||
|
||||
document.body.appendChild(this.graph.container);
|
||||
|
||||
// Refresh required in visible DOM to update text bounding boxes
|
||||
this.graph.refresh();
|
||||
update();
|
||||
|
||||
// Move it back into DOM tree position
|
||||
if (nextSibling != null)
|
||||
{
|
||||
nextSibling.parentNode.insertBefore(this.graph.container, nextSibling);
|
||||
}
|
||||
else
|
||||
{
|
||||
previousParent.appendChild(this.graph.container);
|
||||
}
|
||||
|
||||
// Restore position CSS
|
||||
this.graph.container.style.visible = prevVisible;
|
||||
this.graph.container.style.position = prevPosition;
|
||||
}
|
||||
else
|
||||
{
|
||||
update();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this.graph.container.style.backgroundColor = (this.graph.background == null ||
|
||||
this.graph.background == 'none') ? '#ffffff' : this.graph.background;
|
||||
}
|
||||
};
|
||||
|
||||
DrawioViewer.prototype.translateOrigin = function()
|
||||
{
|
||||
var bounds = this.graph.getGraphBounds();
|
||||
this.graph.view.setTranslate(this.originX - Math.floor(bounds.x), this.originY - Math.floor(bounds.y));
|
||||
};
|
||||
|
||||
DrawioViewer.prototype.loadGraph = function(diagramName, ceoId)
|
||||
{
|
||||
var spinner = this.createSpinner(this.graph.container);
|
||||
|
||||
try
|
||||
{
|
||||
mxUtils.get(this.options.loadUrl, mxUtils.bind(this, function(req)
|
||||
{
|
||||
spinner.stop();
|
||||
|
||||
if (req.getStatus() < 200 || req.getStatus() > 299)
|
||||
{
|
||||
this.showWarning(mxResources.get('error') + ' ' + req.getStatus());
|
||||
this.graph.container.style.border = this.options.border ? '1px solid #DDDDDD' : 'none';
|
||||
this.graph.container.style.backgroundColor = '#ffffff';
|
||||
this.graph.container.style.height = '20px';
|
||||
}
|
||||
else
|
||||
{
|
||||
var json = JSON.parse(req.getText());
|
||||
this.graphXmlString = json.xml;
|
||||
var doc = mxUtils.parseXml(json.xml);
|
||||
this.xmlDoc = doc;
|
||||
this.filename = json.filename;
|
||||
this.setGraphXml(doc.documentElement);
|
||||
this.graphDocument = doc;
|
||||
}
|
||||
}),
|
||||
function()
|
||||
{
|
||||
spinner.stop();
|
||||
});
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
spinner.stop();
|
||||
}
|
||||
};
|
||||
|
||||
DrawioViewer.prototype.loadStylesheet = function()
|
||||
{
|
||||
var node = mxUtils.load(this.options.stylePath + '/default.xml').getDocumentElement();
|
||||
var dec = new mxCodec(node.ownerDocument);
|
||||
dec.decode(node, this.graph.getStylesheet());
|
||||
};
|
||||
|
||||
DrawioViewer.prototype.renderButtons = function()
|
||||
{
|
||||
for (var key in this.buttons)
|
||||
{
|
||||
var button = this.buttons[key];
|
||||
|
||||
if (button.visible)
|
||||
{
|
||||
this.addToolbarButton(this.toolbar, button);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
DrawioViewer.prototype.addToolbarButton = function(toolbar, drawioButton)
|
||||
{
|
||||
var enabled = typeof drawioButton.enabled === 'undefined' ? true : enabled;
|
||||
var button = drawioButton.linkButton ? document.createElement('a') : document.createElement('div');
|
||||
button.className = 'diagramly-reader-toolbar-button';
|
||||
|
||||
if (drawioButton.icon != null)
|
||||
{
|
||||
var img = document.createElement('img');
|
||||
img.setAttribute('src', drawioButton.icon);
|
||||
img.style.verticalAlign = 'middle';
|
||||
img.style.marginRight = '2px';
|
||||
button.appendChild(img);
|
||||
button.title = drawioButton.label;
|
||||
}
|
||||
|
||||
if (!drawioButton.enabled)
|
||||
{
|
||||
button.style.opacity = 0.2;
|
||||
|
||||
} else
|
||||
{
|
||||
if(drawioButton.linkButton)
|
||||
{
|
||||
button.href = drawioButton.url;
|
||||
}
|
||||
else
|
||||
{
|
||||
mxEvent.addListener(button, 'click', function(evt)
|
||||
{
|
||||
drawioButton.clickHandler.apply(this, arguments);
|
||||
});
|
||||
}
|
||||
mxEvent.addListener(button, 'mouseover', function(evt)
|
||||
{
|
||||
button.classList.add('diagramly-reader-toolbar-button-hover');
|
||||
});
|
||||
mxEvent.addListener(button, 'mouseout', function(evt)
|
||||
{
|
||||
button.className = 'diagramly-reader-toolbar-button';
|
||||
});
|
||||
}
|
||||
|
||||
toolbar.appendChild(button);
|
||||
return button;
|
||||
};
|
||||
|
||||
DrawioViewer.prototype.createSpinner = function(container)
|
||||
{
|
||||
var opts =
|
||||
{
|
||||
lines : 12, // The number of lines to draw
|
||||
length : 12, // The length of each line
|
||||
width : 5, // The line thickness
|
||||
radius : 10, // The radius of the inner circle
|
||||
rotate : 0, // The rotation offset
|
||||
color : '#000', // #rgb or #rrggbb
|
||||
speed : 1, // Rounds per second
|
||||
trail : 60, // Afterglow percentage
|
||||
shadow : false, // Whether to render a shadow
|
||||
hwaccel : false, // Whether to use hardware acceleration
|
||||
className : 'spinner', // The CSS class to assign to the spinner
|
||||
zIndex : 2e9 // The z-index (defaults to 2000000000)
|
||||
};
|
||||
|
||||
return new Spinner(opts).spin(container);
|
||||
};
|
||||
|
||||
DrawioViewer.prototype.show = function(container)
|
||||
{
|
||||
this.graph = new Graph(container);
|
||||
this.graph.id = this.id;
|
||||
this.init();
|
||||
|
||||
// Uses the XML document that was loaded for the viewer in the lightbox
|
||||
if (this.graphDocument != null)
|
||||
{
|
||||
this.setGraphXml(this.graphDocument.documentElement);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.loadGraph(this.diagramName, this.ceoId);
|
||||
}
|
||||
|
||||
if (this.options.viewerToolbar)
|
||||
{
|
||||
this.installToolbar();
|
||||
this.renderButtons();
|
||||
}
|
||||
|
||||
if (this.options.licenseStatus == 'NO_LICENSE')
|
||||
{
|
||||
this.showWarning(mxResources.get('drawio.reader.noLicense'));
|
||||
}
|
||||
else if (this.options.licenseStatus == 'EVAL_LICENSE')
|
||||
{
|
||||
this.showWarning(mxResources.get('drawio.reader.evaluation'));
|
||||
}
|
||||
else if (this.options.licenseStatus == 'EVAL_EXPIRED')
|
||||
{
|
||||
this.showWarning(mxResources.get('drawio.reader.evaluationExpired'));
|
||||
}
|
||||
else if (this.options.licenseStatus == 'VERSION_MISMATCH')
|
||||
{
|
||||
this.showWarning(mxResources.get('drawio.reader.versionMismatch', ['https://support.draw.io/pages/viewpage.action?pageId=11829320']));
|
||||
}
|
||||
else if (this.options.licenseStatus == 'USER_MISMATCH')
|
||||
{
|
||||
this.showWarning(mxResources.get('drawio.reader.userMismatch', ['https://support.draw.io/pages/viewpage.action?pageId=11829323']));
|
||||
}
|
||||
|
||||
|
||||
};
|
||||
|
||||
DrawioViewer.prototype.showWarning = function(msg)
|
||||
{
|
||||
var div = document.createElement('div');
|
||||
div.style.position = 'absolute';
|
||||
div.style.overflow = 'hidden';
|
||||
div.style.left = '0px';
|
||||
div.style.top = '0px';
|
||||
div.style.right = '0px';
|
||||
div.style.fontSize = '12px';
|
||||
div.style.margin = '2px';
|
||||
mxUtils.setOpacity(div, 50);
|
||||
div.style.color = 'gray';
|
||||
div.style.textAlign = 'center';
|
||||
div.style.whiteSpace = 'nowrap';
|
||||
span = document.createElement('span');
|
||||
span.innerHTML = msg;
|
||||
|
||||
div.appendChild(span);
|
||||
|
||||
this.graph.container.parentNode.appendChild(div);
|
||||
};
|
||||
|
||||
DrawioViewer.prototype.showLightbox = function()
|
||||
{
|
||||
console.log('Lightbox feature not implemented.');
|
||||
};
|
||||
|
||||
DrawioViewer.prototype.createButtons = function()
|
||||
{
|
||||
var viewer = this;
|
||||
var buttons = {};
|
||||
|
||||
var enableButton = typeof this.options.disableButtons === 'undefined' ? true : !this.options.disableButtons;
|
||||
var canEdit = this.options.userCanEdit && enableButton;
|
||||
var canRemove = this.options.userCanRemove && enableButton;
|
||||
|
||||
var autoSizeWidth = this.options.width == null;
|
||||
var autoSizeHeight = this.options.height == null;
|
||||
|
||||
buttons[DrawioViewerActions.EDIT] = new DrawioViewerButton(
|
||||
{
|
||||
label : mxResources.get('diagramly.reader.edit'),
|
||||
icon : viewer.options.imagePath + '/edit.png',
|
||||
url : viewer.options.editUrl,
|
||||
enabled : canEdit,
|
||||
linkButton : true
|
||||
});
|
||||
|
||||
buttons[DrawioViewerActions.REMOVE] = new DrawioViewerButton(
|
||||
{
|
||||
label : mxResources.get('diagramly.reader.remove'),
|
||||
icon : viewer.options.imagePath + '/remove.png',
|
||||
clickHandler : function()
|
||||
{
|
||||
if (confirm(mxResources.get('diagramly.reader.confirmDelete')))
|
||||
{
|
||||
window.location.href = viewer.options.removeUrl;
|
||||
}
|
||||
},
|
||||
enabled : canRemove
|
||||
});
|
||||
|
||||
buttons[DrawioViewerActions.ACTUAL_SIZE] = new DrawioViewerButton(
|
||||
{
|
||||
label : mxResources.get('diagramly.reader.zoomActual'),
|
||||
icon : viewer.options.imagePath + '/zoomActual.png',
|
||||
clickHandler : function()
|
||||
{
|
||||
viewer.graph.zoomActual();
|
||||
viewer.translateOrigin();
|
||||
},
|
||||
enabled : enableButton
|
||||
});
|
||||
|
||||
buttons[DrawioViewerActions.ZOOM_TO_FIT] = new DrawioViewerButton(
|
||||
{
|
||||
label : (this.lightbox) ? mxResources.get('diagramly.reader.zoomActual') : mxResources.get('diagramly.reader.fit'),
|
||||
icon : (this.lightbox) ? viewer.options.imagePath + '/zoomActual.png' : viewer.options.imagePath + '/zoomFit.gif',
|
||||
clickHandler : mxUtils.bind(this, function()
|
||||
{
|
||||
if (this.lightbox)
|
||||
{
|
||||
// NOTE: Maxscale is 1 here so only make smaller but not larger
|
||||
viewer.graph.fit(8);
|
||||
viewer.graph.center(true, true, null, 0.42);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (autoSizeWidth && autoSizeHeight)
|
||||
{
|
||||
this.graph.view.scaleAndTranslate(1, this.initialX, this.initialY);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.graph.fit();
|
||||
}
|
||||
}
|
||||
}),
|
||||
enabled : enableButton
|
||||
});
|
||||
|
||||
buttons[DrawioViewerActions.ZOOM_OUT] = new DrawioViewerButton(
|
||||
{
|
||||
label : mxResources.get('diagramly.reader.zoomOut'),
|
||||
icon : viewer.options.imagePath + '/zoomOut.gif',
|
||||
clickHandler : function()
|
||||
{
|
||||
viewer.graph.zoomOut();
|
||||
},
|
||||
enabled : enableButton
|
||||
});
|
||||
|
||||
buttons[DrawioViewerActions.ZOOM_IN] = new DrawioViewerButton(
|
||||
{
|
||||
label : mxResources.get('diagramly.reader.zoomIn'),
|
||||
icon : viewer.options.imagePath + '/zoomIn.gif',
|
||||
clickHandler : function()
|
||||
{
|
||||
viewer.graph.zoomIn();
|
||||
},
|
||||
enabled : enableButton
|
||||
});
|
||||
|
||||
buttons[DrawioViewerActions.EXPAND] = new DrawioViewerButton(
|
||||
{
|
||||
label : mxResources.get('diagramly.reader.fullScreen'),
|
||||
icon : viewer.options.imagePath + '/largeView.png',
|
||||
clickHandler : mxUtils.bind(this, function()
|
||||
{
|
||||
this.showLightbox();
|
||||
}),
|
||||
enabled : enableButton
|
||||
});
|
||||
|
||||
buttons[DrawioViewerActions.CLOSE] = new DrawioViewerButton(
|
||||
{
|
||||
label : mxResources.get('diagramly.reader.closeFullScreen'),
|
||||
icon : viewer.options.imagePath + '/closeLargeView.gif',
|
||||
clickHandler : function()
|
||||
{
|
||||
viewer.popupWindow.remove();
|
||||
},
|
||||
enabled : enableButton,
|
||||
visible : false
|
||||
});
|
||||
|
||||
return buttons;
|
||||
};
|
||||
|
||||
DrawioViewerActions =
|
||||
{
|
||||
EDIT : 'edit',
|
||||
REMOVE : 'remove',
|
||||
ACTUAL_SIZE : 'actualSize',
|
||||
ZOOM_TO_FIT : 'zoomToFit',
|
||||
ZOOM_OUT : 'zoomOut',
|
||||
ZOOM_IN : 'zoomIn',
|
||||
EXPAND : 'expand',
|
||||
CLOSE : 'close'
|
||||
};
|
||||
|
||||
function DrawioViewerButton(options)
|
||||
{
|
||||
this.label = options.label;
|
||||
this.clickHandler = options.clickHandler;
|
||||
this.enabled = typeof options.enabled != 'undefined' ? options.enabled : true;
|
||||
this.icon = options.icon;
|
||||
this.visible = typeof options.visible != 'undefined' ? options.visible : true;
|
||||
this.linkButton = typeof options.linkButton != 'undefined' ? options.linkButton : false;
|
||||
this.url = options.url;
|
||||
};
|
||||
|
||||
DrawioViewerButton.prototype.label = null;
|
||||
DrawioViewerButton.prototype.clickHandler = null;
|
||||
DrawioViewerButton.prototype.enabled = true;
|
||||
DrawioViewerButton.prototype.icon = null;
|
||||
DrawioViewerButton.prototype.visible = true;
|
||||
DrawioViewerButton.prototype.linkButton = false;
|
||||
DrawioViewerButton.prototype.url = null;
|
||||
@ -1,134 +0,0 @@
|
||||
<mxfile host="localhost" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36" version="28.0.7">
|
||||
<diagram name="第 1 页" id="pHgAW8JXmWQ_6FMPzvSs">
|
||||
<mxGraphModel dx="1216" dy="729" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
<mxCell id="LtvMQiZTPmWlaYDiPQC4-1" value="Pool" style="swimlane;html=1;childLayout=stackLayout;resizeParent=1;resizeParentMax=0;horizontal=0;startSize=20;horizontalStack=0;" parent="1" vertex="1">
|
||||
<mxGeometry x="190" y="170" width="450" height="360" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LtvMQiZTPmWlaYDiPQC4-3" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=classic;endFill=1;" parent="LtvMQiZTPmWlaYDiPQC4-1" source="LtvMQiZTPmWlaYDiPQC4-15" target="LtvMQiZTPmWlaYDiPQC4-10" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LtvMQiZTPmWlaYDiPQC4-4" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=classic;endFill=1;" parent="LtvMQiZTPmWlaYDiPQC4-1" source="LtvMQiZTPmWlaYDiPQC4-14" target="LtvMQiZTPmWlaYDiPQC4-17" edge="1">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="180" y="340" />
|
||||
<mxPoint x="400" y="340" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="LtvMQiZTPmWlaYDiPQC4-5" value="Lane 1" style="swimlane;html=1;startSize=20;horizontal=0;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="LtvMQiZTPmWlaYDiPQC4-1" vertex="1">
|
||||
<mxGeometry x="20" width="430" height="120" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LtvMQiZTPmWlaYDiPQC4-9" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=classic;endFill=1;" parent="LtvMQiZTPmWlaYDiPQC4-5" source="LtvMQiZTPmWlaYDiPQC4-10" target="LtvMQiZTPmWlaYDiPQC4-11" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LtvMQiZTPmWlaYDiPQC4-10" value="kkkkk" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Helvetica;fontSize=12;fontColor=#000000;align=center;" parent="LtvMQiZTPmWlaYDiPQC4-5" vertex="1">
|
||||
<mxGeometry x="240" y="30" width="80" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LtvMQiZTPmWlaYDiPQC4-11" value="" style="ellipse;whiteSpace=wrap;html=1;fillColor=#ffe6cc;strokeColor=#d79b00;" parent="LtvMQiZTPmWlaYDiPQC4-5" vertex="1">
|
||||
<mxGeometry x="360" y="40" width="40" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LtvMQiZTPmWlaYDiPQC4-12" value="Lane 2" style="swimlane;html=1;startSize=20;horizontal=0;" parent="LtvMQiZTPmWlaYDiPQC4-1" vertex="1">
|
||||
<mxGeometry x="20" y="120" width="430" height="120" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LtvMQiZTPmWlaYDiPQC4-13" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=classic;endFill=1;" parent="LtvMQiZTPmWlaYDiPQC4-12" source="LtvMQiZTPmWlaYDiPQC4-14" target="LtvMQiZTPmWlaYDiPQC4-15" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LtvMQiZTPmWlaYDiPQC4-14" value="" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Helvetica;fontSize=12;fontColor=#000000;align=center;" parent="LtvMQiZTPmWlaYDiPQC4-12" vertex="1">
|
||||
<mxGeometry x="120" y="30" width="80" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LtvMQiZTPmWlaYDiPQC4-15" value="" style="rhombus;whiteSpace=wrap;html=1;fontFamily=Helvetica;fontSize=12;fontColor=#000000;align=center;" parent="LtvMQiZTPmWlaYDiPQC4-12" vertex="1">
|
||||
<mxGeometry x="260" y="40" width="40" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LtvMQiZTPmWlaYDiPQC4-16" value="Lane 3" style="swimlane;html=1;startSize=20;horizontal=0;" parent="LtvMQiZTPmWlaYDiPQC4-1" vertex="1">
|
||||
<mxGeometry x="20" y="240" width="430" height="120" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LtvMQiZTPmWlaYDiPQC4-17" value="" style="rhombus;whiteSpace=wrap;html=1;fontFamily=Helvetica;fontSize=12;fontColor=#000000;align=center;" parent="LtvMQiZTPmWlaYDiPQC4-16" vertex="1">
|
||||
<mxGeometry x="360" y="30" width="40" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="I5qQOWqzTrSP26rF5W6x-1" value="" style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;" parent="1" vertex="1">
|
||||
<mxGeometry y="560" width="60" height="80" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="HBP_oPzd0HZC0buu8E6O-1" value="Pool" style="swimlane;html=1;childLayout=stackLayout;resizeParent=1;resizeParentMax=0;horizontal=0;startSize=20;horizontalStack=0;" parent="1" vertex="1">
|
||||
<mxGeometry x="50" y="30" width="450" height="360" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="HBP_oPzd0HZC0buu8E6O-4" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=classic;endFill=1;" parent="HBP_oPzd0HZC0buu8E6O-1" source="HBP_oPzd0HZC0buu8E6O-16" target="HBP_oPzd0HZC0buu8E6O-19" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="HBP_oPzd0HZC0buu8E6O-6" value="Lane 1" style="swimlane;html=1;startSize=20;horizontal=0;" parent="HBP_oPzd0HZC0buu8E6O-1" vertex="1">
|
||||
<mxGeometry x="20" width="430" height="120" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="HBP_oPzd0HZC0buu8E6O-8" value="" style="ellipse;whiteSpace=wrap;html=1;" parent="HBP_oPzd0HZC0buu8E6O-6" vertex="1">
|
||||
<mxGeometry x="40" y="40" width="40" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="HBP_oPzd0HZC0buu8E6O-11" value="大爷" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Helvetica;fontSize=12;fontColor=#000000;align=center;" parent="HBP_oPzd0HZC0buu8E6O-6" vertex="1">
|
||||
<mxGeometry x="90" y="20" width="80" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="HBP_oPzd0HZC0buu8E6O-13" value="Lane 2" style="swimlane;html=1;startSize=20;horizontal=0;" parent="HBP_oPzd0HZC0buu8E6O-1" vertex="1">
|
||||
<mxGeometry x="20" y="120" width="430" height="120" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="HBP_oPzd0HZC0buu8E6O-16" value="" style="rhombus;whiteSpace=wrap;html=1;fontFamily=Helvetica;fontSize=12;fontColor=#000000;align=center;direction=south;" parent="HBP_oPzd0HZC0buu8E6O-13" vertex="1">
|
||||
<mxGeometry x="290" y="40" width="40" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="HBP_oPzd0HZC0buu8E6O-17" value="Lane 3" style="swimlane;html=1;startSize=20;horizontal=0;" parent="HBP_oPzd0HZC0buu8E6O-1" vertex="1">
|
||||
<mxGeometry x="20" y="240" width="430" height="120" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="HBP_oPzd0HZC0buu8E6O-18" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=classic;endFill=1;" parent="HBP_oPzd0HZC0buu8E6O-17" source="HBP_oPzd0HZC0buu8E6O-19" target="HBP_oPzd0HZC0buu8E6O-20" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="HBP_oPzd0HZC0buu8E6O-19" value="" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Helvetica;fontSize=12;fontColor=#000000;align=center;" parent="HBP_oPzd0HZC0buu8E6O-17" vertex="1">
|
||||
<mxGeometry x="240" y="20" width="80" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="HBP_oPzd0HZC0buu8E6O-20" value="" style="rhombus;whiteSpace=wrap;html=1;fontFamily=Helvetica;fontSize=12;fontColor=#000000;align=center;" parent="HBP_oPzd0HZC0buu8E6O-17" vertex="1">
|
||||
<mxGeometry x="360" y="30" width="40" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="HBP_oPzd0HZC0buu8E6O-3" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=classic;endFill=1;" parent="HBP_oPzd0HZC0buu8E6O-1" source="HBP_oPzd0HZC0buu8E6O-16" target="HBP_oPzd0HZC0buu8E6O-11" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="HBP_oPzd0HZC0buu8E6O-15" value="" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Helvetica;fontSize=12;fontColor=#000000;align=center;direction=south;" parent="1" vertex="1">
|
||||
<mxGeometry x="190" y="575" width="60" height="80" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="HBP_oPzd0HZC0buu8E6O-2" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;endArrow=none;endFill=0;" parent="1" source="HBP_oPzd0HZC0buu8E6O-9" target="HBP_oPzd0HZC0buu8E6O-15" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="HBP_oPzd0HZC0buu8E6O-5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=classic;endFill=1;" parent="1" source="HBP_oPzd0HZC0buu8E6O-15" target="HBP_oPzd0HZC0buu8E6O-20" edge="1">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<Array as="points">
|
||||
<mxPoint x="230" y="370" />
|
||||
<mxPoint x="450" y="370" />
|
||||
</Array>
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="HBP_oPzd0HZC0buu8E6O-14" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=classic;endFill=1;" parent="1" source="HBP_oPzd0HZC0buu8E6O-15" target="HBP_oPzd0HZC0buu8E6O-16" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LtvMQiZTPmWlaYDiPQC4-7" value="" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="50" y="430" width="40" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LtvMQiZTPmWlaYDiPQC4-6" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="LtvMQiZTPmWlaYDiPQC4-7" target="LtvMQiZTPmWlaYDiPQC4-8" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="HBP_oPzd0HZC0buu8E6O-9" value="" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Helvetica;fontSize=12;fontColor=#000000;align=center;direction=south;" parent="1" vertex="1">
|
||||
<mxGeometry x="100" y="550" width="60" height="80" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="HBP_oPzd0HZC0buu8E6O-7" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="HBP_oPzd0HZC0buu8E6O-8" target="HBP_oPzd0HZC0buu8E6O-9" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LtvMQiZTPmWlaYDiPQC4-8" value="你们" style="rounded=0;whiteSpace=wrap;html=1;fontFamily=Helvetica;fontSize=12;fontColor=#000000;align=center;" parent="1" vertex="1">
|
||||
<mxGeometry x="330" y="600" width="80" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="LtvMQiZTPmWlaYDiPQC4-2" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;endArrow=none;endFill=0;" parent="1" source="LtvMQiZTPmWlaYDiPQC4-8" target="LtvMQiZTPmWlaYDiPQC4-14" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="HBP_oPzd0HZC0buu8E6O-12" value="" style="ellipse;whiteSpace=wrap;html=1;" parent="1" vertex="1">
|
||||
<mxGeometry x="590" y="70" width="40" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="HBP_oPzd0HZC0buu8E6O-10" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=classic;endFill=1;" parent="1" source="HBP_oPzd0HZC0buu8E6O-11" target="HBP_oPzd0HZC0buu8E6O-12" edge="1">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
</diagram>
|
||||
</mxfile>
|
||||
@ -1,37 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title></title>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
if (window.opener != null && window.opener.onDropboxCallback != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
var hash = window.location.hash;
|
||||
var i1 = hash.indexOf('access_token=');
|
||||
var token = null;
|
||||
|
||||
if (i1 >= 0)
|
||||
{
|
||||
var i2 = hash.indexOf('&', i1 + 13);
|
||||
|
||||
if (i2 > i1)
|
||||
{
|
||||
token = hash.substring(i1 + 13, i2);
|
||||
}
|
||||
}
|
||||
|
||||
// Continues execution of main program flow
|
||||
window.opener.onDropboxCallback(token, window);
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
alert('Dropbox: ' + e.toString());
|
||||
window.close();
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@ -1 +0,0 @@
|
||||
/* Add any special fonts css for export3.html (mainly PDF export) */
|
||||
@ -1,25 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<script src="js/export-init.js"></script>
|
||||
<!-- CSS for print output is needed for using current window -->
|
||||
<style type="text/css">
|
||||
.MathJax svg { shape-rendering: crispEdges; }
|
||||
</style>
|
||||
<style type="text/css">
|
||||
@media print {
|
||||
body > div {
|
||||
page-break-inside: avoid;
|
||||
page-break-after: always;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<link rel="stylesheet" href="mxgraph/css/common.css" charset="UTF-8" type="text/css">
|
||||
<link rel="stylesheet" href="export-fonts.css" charset="UTF-8" type="text/css">
|
||||
<script src="js/app.min.js"></script>
|
||||
<script src="js/export.js"></script>
|
||||
</head>
|
||||
<body style="margin: 0px; overflow: hidden; -webkit-print-color-adjust: exact; print-color-adjust: exact;">
|
||||
</body>
|
||||
</html>
|
||||
|
Before Width: | Height: | Size: 8.1 KiB |
@ -1,33 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title></title>
|
||||
</head>
|
||||
<body>
|
||||
This window will be closed automatically.
|
||||
<script>
|
||||
if (window.opener != null && window.opener.onGitHubCallback != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
var search = window.location.search;
|
||||
var idx1 = search.indexOf('code=');
|
||||
var code = null;
|
||||
|
||||
if (idx1 >= 0)
|
||||
{
|
||||
code = search.substring(idx1 + 5);
|
||||
}
|
||||
|
||||
// Continues execution of main program flow
|
||||
window.opener.onGitHubCallback(code, window);
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
alert('GitHub: ' + e.toString());
|
||||
window.close();
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@ -1,35 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title></title>
|
||||
</head>
|
||||
<body>
|
||||
This window will be closed automatically.
|
||||
<script>
|
||||
if (window.opener != null && window.opener.onGitLabCallback != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
var search = window.location.href;
|
||||
var idx1 = search.indexOf('access_token=');
|
||||
var code = null;
|
||||
|
||||
if (idx1 >= 0)
|
||||
{
|
||||
var idx2 = search.indexOf('&', idx1);
|
||||
code = search.substring(idx1 + 13, idx2);
|
||||
}
|
||||
|
||||
// Continues execution of main program flow
|
||||
window.opener.onGitLabCallback(code, window);
|
||||
window.close();
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
alert('GitLab error: ' + e.toString());
|
||||
window.close();
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
Before Width: | Height: | Size: 67 B |
|
Before Width: | Height: | Size: 67 B |
|
Before Width: | Height: | Size: 67 B |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 8.2 KiB |
|
Before Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 264 B |
@ -1,9 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<browserconfig>
|
||||
<msapplication>
|
||||
<tile>
|
||||
<square150x150logo src="/images/mstile-150x150.png"/>
|
||||
<TileColor>#d89000</TileColor>
|
||||
</tile>
|
||||
</msapplication>
|
||||
</browserconfig>
|
||||
|
Before Width: | Height: | Size: 116 B |
|
Before Width: | Height: | Size: 5.7 KiB |
|
Before Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 512 B |
|
Before Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 5.6 KiB |
|
Before Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 6.9 KiB |
|
Before Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 707 B |
|
Before Width: | Height: | Size: 939 B |
|
Before Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 707 B |
|
Before Width: | Height: | Size: 680 B |
|
Before Width: | Height: | Size: 484 B |
|
Before Width: | Height: | Size: 66 B |
|
Before Width: | Height: | Size: 516 B |
|
Before Width: | Height: | Size: 759 B |
|
Before Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 8.1 KiB |
|
Before Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 845 B |
|
Before Width: | Height: | Size: 302 B |
|
Before Width: | Height: | Size: 440 B |
|
Before Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 5.1 KiB |
|
Before Width: | Height: | Size: 875 B |
|
Before Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 245 B |
|
Before Width: | Height: | Size: 162 B |
|
Before Width: | Height: | Size: 339 B |
|
Before Width: | Height: | Size: 287 B |
|
Before Width: | Height: | Size: 581 B |
|
Before Width: | Height: | Size: 258 B |
|
Before Width: | Height: | Size: 328 B |
|
Before Width: | Height: | Size: 5.6 KiB |
|
Before Width: | Height: | Size: 9.2 KiB |
|
Before Width: | Height: | Size: 542 B |
|
Before Width: | Height: | Size: 583 B |