diff --git a/ChangeLog b/ChangeLog index a60c304c4..60a41582b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +22-JUN-2024: 24.6.2 + +- Adds option to include current page in PNG and SVG export [jgraph/drawio#2860] +- Fixes Cmd + US keyboard shortcut [jgraph/drawio-desktop#1792] + 21-JUN-2024: 24.6.1 - Improves Google Drive app not installed message [DID-11885] diff --git a/VERSION b/VERSION index cbbcf2d0e..caaff4dc3 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -24.6.1 \ No newline at end of file +24.6.2 \ No newline at end of file diff --git a/src/main/webapp/js/app.min.js b/src/main/webapp/js/app.min.js index 20f6bf852..82fb34e6c 100644 --- a/src/main/webapp/js/app.min.js +++ b/src/main/webapp/js/app.min.js @@ -64,7 +64,7 @@ if("1"==urlParams.offline||"1"==urlParams.demo||"1"==urlParams.stealth||"1"==url "se.diagrams.net"==window.location.hostname&&(urlParams.db="0",urlParams.od="0",urlParams.gh="0",urlParams.gl="0",urlParams.tr="0",urlParams.plugins="0",urlParams.mode="google",urlParams.lockdown="1",window.DRAWIO_GOOGLE_APP_ID=window.DRAWIO_GOOGLE_APP_ID||"184079235871",window.DRAWIO_GOOGLE_CLIENT_ID=window.DRAWIO_GOOGLE_CLIENT_ID||"184079235871-pjf5nn0lff27lk8qf0770gmffiv9gt61.apps.googleusercontent.com");"trello"==urlParams.mode&&(urlParams.tr="1"); "embed.diagrams.net"==window.location.hostname&&(urlParams.embed="1");(null==window.location.hash||1>=window.location.hash.length)&&null!=urlParams.open&&(window.location.hash=urlParams.open);"function"!==typeof window.structuredClone&&(window.structuredClone=function(a){return a});window.urlParams=window.urlParams||{};window.DOM_PURIFY_CONFIG=window.DOM_PURIFY_CONFIG||{ADD_TAGS:["use","foreignObject"],FORBID_TAGS:["form"],ALLOWED_URI_REGEXP:/^((?!javascript:).)*$/i,ADD_ATTR:["target","content","pointer-events","requiredFeatures"]};window.MAX_REQUEST_SIZE=window.MAX_REQUEST_SIZE||10485760;window.MAX_AREA=window.MAX_AREA||225E6;window.EXPORT_URL=window.EXPORT_URL||"/export";window.SAVE_URL=window.SAVE_URL||"/save";window.OPEN_URL=window.OPEN_URL||"/open"; window.RESOURCES_PATH=window.RESOURCES_PATH||"resources";window.RESOURCE_BASE=window.RESOURCE_BASE||window.RESOURCES_PATH+"/grapheditor";window.STENCIL_PATH=window.STENCIL_PATH||"stencils";window.IMAGE_PATH=window.IMAGE_PATH||"images";window.STYLE_PATH=window.STYLE_PATH||"styles";window.CSS_PATH=window.CSS_PATH||"styles";window.OPEN_FORM=window.OPEN_FORM||"open.html";window.mxBasePath=window.mxBasePath||"mxgraph";window.mxImageBasePath=window.mxImageBasePath||"mxgraph/images"; -window.mxLanguage=window.mxLanguage||urlParams.lang;window.mxLanguages=window.mxLanguages||["de","se"];var mxClient={VERSION:"24.6.1",IS_IE:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("MSIE"),IS_IE11:null!=navigator.userAgent&&!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:null!=navigator.userAgent&&!!navigator.userAgent.match(/Edge\//),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&0>navigator.userAgent.indexOf("Edge/"), +window.mxLanguage=window.mxLanguage||urlParams.lang;window.mxLanguages=window.mxLanguages||["de","se"];var mxClient={VERSION:"24.6.2",IS_IE:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("MSIE"),IS_IE11:null!=navigator.userAgent&&!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:null!=navigator.userAgent&&!!navigator.userAgent.match(/Edge\//),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&0>navigator.userAgent.indexOf("Edge/"), IS_OP:null!=navigator.userAgent&&(0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("OPR/")),IS_OT:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Presto/")&&0>navigator.userAgent.indexOf("Presto/2.4.")&&0>navigator.userAgent.indexOf("Presto/2.3.")&&0>navigator.userAgent.indexOf("Presto/2.2.")&&0>navigator.userAgent.indexOf("Presto/2.1.")&&0>navigator.userAgent.indexOf("Presto/2.0.")&&0>navigator.userAgent.indexOf("Presto/1."),IS_SF:/Apple Computer, Inc/.test(navigator.vendor), IS_ANDROID:0<=navigator.appVersion.indexOf("Android"),IS_IOS:/iP(hone|od|ad)/.test(navigator.platform)||navigator.userAgent.match(/Mac/)&&navigator.maxTouchPoints&&2navigator.userAgent.indexOf("Firefox/1.")&&0>navigator.userAgent.indexOf("Firefox/2.")||0<=navigator.userAgent.indexOf("Iceweasel/")&&0>navigator.userAgent.indexOf("Iceweasel/1.")&&0>navigator.userAgent.indexOf("Iceweasel/2.")||0<=navigator.userAgent.indexOf("SeaMonkey/")&&0>navigator.userAgent.indexOf("SeaMonkey/1.")||0<=navigator.userAgent.indexOf("Iceape/")&&0>navigator.userAgent.indexOf("Iceape/1."),IS_SVG:"MICROSOFT INTERNET EXPLORER"!=navigator.appName.toUpperCase(),NO_FO:!document.createElementNS|| @@ -2273,8 +2273,8 @@ F=0,37==w?F=-z:38==w?D=-z:39==w?F=z:40==w&&(D=z),I.currentDx+=F*K,I.currentDy+=D d.dialogs||0==d.dialogs.length)};g.isControlDown=function(w){return mxEvent.isControlDown(w)||mxClient.IS_MAC&&w.metaKey};var h=null,n={37:mxConstants.DIRECTION_WEST,38:mxConstants.DIRECTION_NORTH,39:mxConstants.DIRECTION_EAST,40:mxConstants.DIRECTION_SOUTH},q=g.getFunction;mxKeyHandler.prototype.getFunction=function(w){if(f.isEnabled()){var z=null;mxEvent.isShiftDown(w)&&this.isControlDown(w)&&mxEvent.isAltDown(w)?z=d.actions.get(d.ctrlAltShiftActions[w.keyCode]):mxEvent.isShiftDown(w)&&mxEvent.isAltDown(w)? z=d.actions.get(d.altShiftActions[w.keyCode]):this.isControlDown(w)&&mxEvent.isAltDown(w)&&(z=d.actions.get(d.ctrlAltActions[w.keyCode]));if(null!=z)return z.funct;if(null!=n[w.keyCode]&&!f.isSelectionEmpty())if(!this.isControlDown(w)&&mxEvent.isShiftDown(w)&&mxEvent.isAltDown(w)){if(f.model.isVertex(f.getSelectionCell()))return function(){var C=f.connectVertex(f.getSelectionCell(),n[w.keyCode],f.defaultEdgeLength,w,!0);null!=C&&0');Editor.configurationKey=".configuration";Editor.settingsKey=".drawio-config";Editor.defaultCustomLibraries=[];Editor.enableCustomLibraries=!0;Editor.enableUncompressedLibraries=!1;Editor.enableCustomProperties=!0; Editor.enableSimpleTheme=!0;Editor.enableHashObjects=!mxClient.IS_CHROMEAPP&&!EditorUi.isElectronApp&&"1"!=urlParams.embed&&window.top==window.self;Editor.defaultIncludeDiagram=!0;Editor.enableServiceWorker="0"!=urlParams.pwa&&"serviceWorker"in navigator&&("1"==urlParams.offline||/.*\.diagrams\.net$/.test(window.location.hostname)||/.*\.draw\.io$/.test(window.location.hostname));try{Editor.enableServiceWorker&&navigator.serviceWorker}catch(l){Editor.enableServiceWorker=!1}Editor.enableWebFonts="1"!= -urlParams["safe-style-src"]&&!window.mxIsElectron;Editor.enableShadowOption=!mxClient.IS_SF;Editor.enableExportUrl=!0;Editor.enableRealtime=!0;Editor.enableRealtimeCache=!0;Editor.p2pSyncNotify=!1;Editor.compressXml=!0;Editor.defaultCompressed=!1;Editor.oneDriveInlinePicker=null!=window.urlParams&&"0"==window.urlParams.inlinePicker?!1:!0;Editor.globalVars=null;Editor.defaultBorder=5;Editor.enableAnimations=!0;Editor.enableChatGpt=/test\.draw\.io$/.test(window.location.hostname)||/preprod\.diagrams\.net$/.test(window.location.hostname)|| -/app\.diagrams\.net$/.test(window.location.hostname);Editor.gptApiKey=null!=urlParams["gpt-api-key"]?decodeURIComponent(urlParams["gpt-api-key"]):null;Editor.gptModel=null!=urlParams["gpt-model"]?decodeURIComponent(urlParams["gpt-model"]):"gpt-3.5-turbo";Editor.gptUrl=null!=urlParams["gpt-url"]?decodeURIComponent(urlParams["gpt-url"]):"https://api.openai.com/v1/chat/completions";Editor.replaceSvgDataUris=!0;Editor.foreignObjectImages=!0;Editor.svgRasterScale=4;Editor.htmlRasterScale=4;Editor.config= -null;Editor.configVersion=null;Editor.commonProperties=[{name:"enumerate",dispName:"Enumerate",type:"bool",defVal:!1,onChange:function(l){l.refresh()}},{name:"enumerateValue",dispName:"Enumerate Value",type:"string",defVal:"",isVisible:function(l,x){return"1"==mxUtils.getValue(l.style,"enumerate","0")}},{name:"comic",dispName:"Comic",type:"bool",defVal:!1,isVisible:function(l,x){return"1"!=mxUtils.getValue(l.style,"sketch","0")}},{name:"jiggle",dispName:"Jiggle",type:"float",min:0,defVal:1,isVisible:function(l, -x){return"1"==mxUtils.getValue(l.style,"comic","0")||"1"==mxUtils.getValue(l.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"fillWeight",dispName:"Fill Weight",type:"int",defVal:-1,isVisible:function(l,x){return"1"==mxUtils.getValue(l.style,"sketch","1"==urlParams.rough?"1":"0")&&0
')))}catch(l){}Editor.prototype.useCanvasForExport=!1})(); (function(){var b=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);b.beforeDecode=function(e,f,c){c.ui=e.ui;return f};b.afterDecode=function(e,f,c){c.previousColor=c.color;c.previousImage=c.image;c.previousFormat=c.format;null!=c.foldingEnabled&&(c.foldingEnabled=!c.foldingEnabled);null!=c.mathEnabled&&(c.mathEnabled=!c.mathEnabled);null!=c.shadowVisible&&(c.shadowVisible=!c.shadowVisible);return c};mxCodecRegistry.register(b)})(); -(function(){var b=new mxObjectCodec(new ChangeGridColor,["ui"]);b.beforeDecode=function(e,f,c){c.ui=e.ui;return f};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="24.6.1";EditorUi.compactUi="atlas"!=Editor.currentTheme||window.DRAWIO_PUBLIC_BUILD;Editor.isDarkMode()&&(mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultDarkGridColor);EditorUi.enableLogging="1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&(/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname))&&"https://preprod.diagrams.net/"!=window.location.hostname&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost= +(function(){var b=new mxObjectCodec(new ChangeGridColor,["ui"]);b.beforeDecode=function(e,f,c){c.ui=e.ui;return f};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="24.6.2";EditorUi.compactUi="atlas"!=Editor.currentTheme||window.DRAWIO_PUBLIC_BUILD;Editor.isDarkMode()&&(mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultDarkGridColor);EditorUi.enableLogging="1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&(/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname))&&"https://preprod.diagrams.net/"!=window.location.hostname&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost= window.DRAWIO_BASE_URL;EditorUi.lightboxHost=window.DRAWIO_LIGHTBOX_URL;EditorUi.lastErrorMessage=null;EditorUi.ignoredAnonymizedChars="\n\t`~!@#$%^&*()_+{}|:\"<>?-=[];'./,\n\t";EditorUi.templateFile=TEMPLATE_PATH+"/index.xml";EditorUi.cacheUrl=window.REALTIME_URL;null==EditorUi.cacheUrl&&"undefined"!==typeof DrawioFile&&(DrawioFile.SYNC="none");Editor.cacheTimeout=1E4;EditorUi.enablePlantUml=EditorUi.enableLogging;EditorUi.isElectronApp=null!=window&&null!=window.process&&null!=window.process.versions&& null!=window.process.versions.electron;EditorUi.nativeFileSupport=!mxClient.IS_OP&&!EditorUi.isElectronApp&&"1"!=urlParams.extAuth&&"showSaveFilePicker"in window&&"showOpenFilePicker"in window;EditorUi.enableDrafts=!mxClient.IS_CHROMEAPP&&isLocalStorage&&"0"!=urlParams.drafts;EditorUi.scratchpadHelpLink="https://www.drawio.com/doc/faq/scratchpad";EditorUi.enableHtmlEditOption=!0;EditorUi.mermaidDiagramTypes="flowchart classDiagram sequenceDiagram stateDiagram mindmap graph erDiagram requirementDiagram journey gantt pie gitGraph".split(" "); EditorUi.defaultMermaidConfig={theme:"neutral",arrowMarkerAbsolute:!1,flowchart:{htmlLabels:!1},sequence:{diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,mirrorActors:!0,bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,showSequenceNumbers:!1},gantt:{titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,leftPadding:75,gridLineStartPadding:35,fontSize:11,fontFamily:'"Open-Sans", "sans-serif"',numberSectionStyles:4,axisFormat:"%Y-%m-%d"}}; @@ -12175,18 +12175,20 @@ I.appendChild(O);mxUtils.write(I,mxResources.get("zoom")+":");var p=document.cre document.createElement("option");mxUtils.write(S,mxResources.get(d[O]));S.setAttribute("value",d[O]);M.appendChild(S)}K?(mxUtils.write(I,mxResources.get("size")+":"),I.appendChild(M),mxUtils.br(I),Q+=26,mxEvent.addListener(M,"change",function(){"selectionOnly"==M.value&&(A.checked=!0)})):y&&(I.appendChild(C),mxUtils.write(I,mxResources.get("crop")),mxUtils.br(I),Q+=30,mxEvent.addListener(A,"change",function(){A.checked?C.removeAttribute("disabled"):C.setAttribute("disabled","disabled")}));U.isSelectionEmpty()? K&&(A.style.display="none",A.nextSibling.style.display="none",A.nextSibling.nextSibling.style.display="none",Q-=30):(M.value="diagram",C.setAttribute("checked","checked"),C.defaultChecked=!0,mxEvent.addListener(A,"change",function(){M.value=A.checked?"selectionOnly":"diagram"}));var l=this.addCheckbox(I,mxResources.get("transparentBackground"),!1,null,null,"jpeg"!=J&&"webp"!=J),x=null;if(Editor.isDarkMode()||Editor.enableCssDarkMode)x=document.createElement("select"),x.style.maxWidth="260px",x.style.marginLeft= "8px",x.style.marginTop="16px",y=document.createElement("option"),y.setAttribute("value","light"),mxUtils.write(y,mxResources.get("light")),x.appendChild(y),K=document.createElement("option"),K.setAttribute("value","dark"),mxUtils.write(K,mxResources.get("dark")),x.appendChild(K),Editor.enableCssDarkMode&&"svg"==J&&(d=document.createElement("option"),d.setAttribute("value","auto"),mxUtils.write(d,mxResources.get("automatic")),x.appendChild(d)),mxUtils.write(I,mxResources.get("appearance")+":"),I.appendChild(x), -mxUtils.br(I),Editor.isDarkMode()||Editor.cssDarkMode?K.setAttribute("selected","selected"):y.setAttribute("selected","selected"),Q+=26;var D=this.addCheckbox(I,mxResources.get("shadow"),U.shadowVisible),N=null;if("png"==J||"jpeg"==J||"webp"==J)N=this.addCheckbox(I,mxResources.get("grid"),!1,this.isOffline()||!this.canvasSupported,!1,!0),Q+=30;var P=this.addCheckbox(I,mxResources.get("includeCopyOfMyDiagram"),B,null,null,"jpeg"!=J&&"webp"!=J);P.style.marginBottom="16px";var R=document.createElement("input"); -R.style.marginBottom="16px";R.style.marginRight="8px";R.setAttribute("type","checkbox");var T=document.createElement("input");T.style.marginBottom="16px";T.style.marginRight="8px";T.setAttribute("type","checkbox");g&&(R.checked=null!=this.lastEmbedImages?this.lastEmbedImages:!0,I.appendChild(R),mxUtils.write(I,mxResources.get("embedImages")),mxUtils.br(I),T.checked=null!=this.lastEmbedFonts?this.lastEmbedImages:!0,I.appendChild(T),mxUtils.write(I,mxResources.get("embedFonts")),mxUtils.br(I),Q+=60); -var V=document.createElement("select");V.style.maxWidth="260px";V.style.marginLeft="8px";d=document.createElement("option");d.setAttribute("value","auto");mxUtils.write(d,mxResources.get("automatic"));V.appendChild(d);B=document.createElement("option");B.setAttribute("value","blank");mxUtils.write(B,mxResources.get("openInNewWindow"));V.appendChild(B);B=document.createElement("option");B.setAttribute("value","self");mxUtils.write(B,mxResources.get("openInThisWindow"));V.appendChild(B);B=document.createElement("div"); -mxUtils.write(B,mxResources.get("LinksLost"));B.style.margin="7px";B.style.display="none";"svg"==J&&(mxUtils.write(I,mxResources.get("links")+":"),I.appendChild(V),I.appendChild(B),mxUtils.br(I),mxUtils.br(I),Q+=50);m=new CustomDialog(this,I,mxUtils.bind(this,function(){this.lastExportBorder=z.value;this.lastExportZoom=p.value;this.lastEmbedImages=R.checked;this.lastEmbedFonts=T.checked;v(p.value,l.checked,!A.checked,D.checked,P.checked,R.checked&&g,z.value,C.checked,!1,V.value,null!=N?N.checked: -null,null!=x?x.value:null,M.value,T.checked)}),null,m,t);this.showDialog(m.container,340,Q,!0,!0,null,null,null,null,!0);p.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?p.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(d,g,m,t,v){var y=document.createElement("div");y.style.whiteSpace="nowrap";var B=this.editor.graph;if(null!=g){var J=document.createElement("h3");mxUtils.write(J,g);J.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px"; -y.appendChild(J)}var K=this.addCheckbox(y,mxResources.get("fit"),!0),I=this.addCheckbox(y,mxResources.get("shadow"),B.shadowVisible&&t,!t),U=this.addCheckbox(y,m),Q=this.addCheckbox(y,mxResources.get("lightbox"),!0),O=this.addEditButton(y,Q),p=O.getEditInput(),z=1")}var I=this.editor.graph.getGraphBounds(),U=this.getSelectedPageIndex();if(this.isExportToCanvas())this.editor.exportToCanvas(mxUtils.bind(this,function(p){var z=t?this.getFileData(!0):null;p=this.createImageDataUri(p,z,"png");K(p)}),null,null,null,mxUtils.bind(this,function(p){J({message:mxResources.get("unknownError")})}), -null,!0,m?2:1,null,g,null,null,Editor.defaultBorder);else if(g=this.getFileData(!0),I.width*I.height<=MAX_AREA&&g.length<=MAX_REQUEST_SIZE){var Q="";m&&(Q="&w="+Math.round(2*I.width)+"&h="+Math.round(2*I.height));var O=new mxXmlRequest(EXPORT_URL,"format=png&base64=1&embedXml="+(t?"1":"0")+Q+"&xml="+encodeURIComponent(g));O.send(mxUtils.bind(this,function(){200<=O.getStatus()&&299>=O.getStatus()?K("data:image/png;base64,"+O.getText()):J({message:mxResources.get("unknownError")})}))}else J({message:mxResources.get("drawingTooLarge")})}; -EditorUi.prototype.createEmbedSvg=function(d,g,m,t,v,y,B){var J=this.editor.graph.getSvg(null,null,null,null,null,null,null,null,null,null,!m),K=J.getElementsByTagName("a");if(null!=K)for(var I=0;I")}))}else O="",t&&(g=this.getSelectedPageIndex(),J.setAttribute("onclick","(function(svg){var src=window.event.target||window.event.srcElement;while (src!=null&&src.nodeName.toLowerCase()!='a'){src=src.parentNode;}if(src==null){if(svg.wnd!=null&&!svg.wnd.closed){svg.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==svg.wnd){svg.wnd.postMessage(decodeURIComponent(svg.getAttribute('content')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);svg.wnd=window.open('"+ +mxUtils.br(I),Editor.isDarkMode()||Editor.cssDarkMode?K.setAttribute("selected","selected"):y.setAttribute("selected","selected"),Q+=26;var D=this.addCheckbox(I,mxResources.get("shadow"),U.shadowVisible),N=null;if("png"==J||"jpeg"==J||"webp"==J)N=this.addCheckbox(I,mxResources.get("grid"),!1,this.isOffline()||!this.canvasSupported,!1,!0),Q+=30;var P=this.addCheckbox(I,mxResources.get("includeCopyOfMyDiagram")+":",B,null,null,"jpeg"!=J&&"webp"!=J),R=document.createElement("select");R.style.maxWidth= +"260px";R.style.marginLeft="28px";"png"==J||"svg"==J?(B=function(){P.checked?R.removeAttribute("disabled"):R.setAttribute("disabled","disabled")},U=document.createElement("option"),U.setAttribute("value","allPages"),mxUtils.write(U,mxResources.get("allPages")),R.appendChild(U),U=document.createElement("option"),U.setAttribute("value","currentPage"),mxUtils.write(U,mxResources.get("currentPage")),R.appendChild(U),P.style.marginBottom="12px",R.style.marginBottom="16px",I.appendChild(R),mxUtils.br(I), +Q+=20,null!=this.lastEmbedInclude&&(R.value=this.lastEmbedInclude),mxEvent.addListener(P,"change",B),B()):P.style.marginBottom="16px";var T=document.createElement("input");T.style.marginBottom="16px";T.style.marginRight="8px";T.setAttribute("type","checkbox");var V=document.createElement("input");V.style.marginBottom="16px";V.style.marginRight="8px";V.setAttribute("type","checkbox");g&&(T.checked=null!=this.lastEmbedImages?this.lastEmbedImages:!0,I.appendChild(T),mxUtils.write(I,mxResources.get("embedImages")), +mxUtils.br(I),V.checked=null!=this.lastEmbedFonts?this.lastEmbedImages:!0,I.appendChild(V),mxUtils.write(I,mxResources.get("embedFonts")),mxUtils.br(I),Q+=50);var W=document.createElement("select");W.style.maxWidth="260px";W.style.marginLeft="8px";d=document.createElement("option");d.setAttribute("value","auto");mxUtils.write(d,mxResources.get("automatic"));W.appendChild(d);B=document.createElement("option");B.setAttribute("value","blank");mxUtils.write(B,mxResources.get("openInNewWindow"));W.appendChild(B); +B=document.createElement("option");B.setAttribute("value","self");mxUtils.write(B,mxResources.get("openInThisWindow"));W.appendChild(B);B=document.createElement("div");mxUtils.write(B,mxResources.get("LinksLost"));B.style.margin="7px";B.style.display="none";"svg"==J&&(mxUtils.write(I,mxResources.get("links")+":"),I.appendChild(W),I.appendChild(B),mxUtils.br(I),mxUtils.br(I),Q+=50);m=new CustomDialog(this,I,mxUtils.bind(this,function(){this.lastExportBorder=z.value;this.lastExportZoom=p.value;this.lastEmbedImages= +T.checked;this.lastEmbedFonts=V.checked;this.lastEmbedInclude=R.value;v(p.value,l.checked,!A.checked,D.checked,P.checked,T.checked&&g,z.value,C.checked,("png"==J||"svg"==J)&&"currentPage"==R.value,W.value,null!=N?N.checked:null,null!=x?x.value:null,M.value,V.checked)}),null,m,t);this.showDialog(m.container,340,Q,!0,!0,null,null,null,null,!0);p.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?p.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog= +function(d,g,m,t,v){var y=document.createElement("div");y.style.whiteSpace="nowrap";var B=this.editor.graph;if(null!=g){var J=document.createElement("h3");mxUtils.write(J,g);J.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";y.appendChild(J)}var K=this.addCheckbox(y,mxResources.get("fit"),!0),I=this.addCheckbox(y,mxResources.get("shadow"),B.shadowVisible&&t,!t),U=this.addCheckbox(y,m),Q=this.addCheckbox(y,mxResources.get("lightbox"),!0),O=this.addEditButton(y,Q),p=O.getEditInput(), +z=1")}var I=this.editor.graph.getGraphBounds(),U=this.getSelectedPageIndex();if(this.isExportToCanvas())this.editor.exportToCanvas(mxUtils.bind(this,function(p){var z=t?this.getFileData(!0):null;p= +this.createImageDataUri(p,z,"png");K(p)}),null,null,null,mxUtils.bind(this,function(p){J({message:mxResources.get("unknownError")})}),null,!0,m?2:1,null,g,null,null,Editor.defaultBorder);else if(g=this.getFileData(!0),I.width*I.height<=MAX_AREA&&g.length<=MAX_REQUEST_SIZE){var Q="";m&&(Q="&w="+Math.round(2*I.width)+"&h="+Math.round(2*I.height));var O=new mxXmlRequest(EXPORT_URL,"format=png&base64=1&embedXml="+(t?"1":"0")+Q+"&xml="+encodeURIComponent(g));O.send(mxUtils.bind(this,function(){200<=O.getStatus()&& +299>=O.getStatus()?K("data:image/png;base64,"+O.getText()):J({message:mxResources.get("unknownError")})}))}else J({message:mxResources.get("drawingTooLarge")})};EditorUi.prototype.createEmbedSvg=function(d,g,m,t,v,y,B){var J=this.editor.graph.getSvg(null,null,null,null,null,null,null,null,null,null,!m),K=J.getElementsByTagName("a");if(null!=K)for(var I=0;I")}))}else O="",t&&(g=this.getSelectedPageIndex(),J.setAttribute("onclick","(function(svg){var src=window.event.target||window.event.srcElement;while (src!=null&&src.nodeName.toLowerCase()!='a'){src=src.parentNode;}if(src==null){if(svg.wnd!=null&&!svg.wnd.closed){svg.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==svg.wnd){svg.wnd.postMessage(decodeURIComponent(svg.getAttribute('content')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);svg.wnd=window.open('"+ EditorUi.lightboxHost+"/?client=1"+(null!=g?"&page="+g:"")+(v?"&edit=_blank":"")+(y?"&layers=1":"")+"');}}})(this);"),O+="cursor:pointer;"),d&&(d=parseInt(J.getAttribute("width")),v=parseInt(J.getAttribute("height")),J.setAttribute("viewBox","-0.5 -0.5 "+d+" "+v),O+="max-width:100%;max-height:"+v+"px;",J.removeAttribute("height")),""!=O&&J.setAttribute("style",O),this.editor.addFontCss(J),this.editor.graph.mathEnabled&&this.editor.addMathCss(J),B(mxUtils.getXml(J))};EditorUi.prototype.timeSince=function(d){d= Math.floor((new Date-d)/1E3);var g=Math.floor(d/31536E3);if(1 0) { editorUi.exportSvg(val / 100, transparentBackground, ignoreSelection, - addShadow, editable, embedImages, border, !cropImage, false, + addShadow, editable, embedImages, border, !cropImage, currentPage, linkTarget, theme, exportType, embedFonts); } }), true, editorUi.lastExportSvgEditable, 'svg', true); @@ -733,12 +733,13 @@ { editorUi.exportImage(val / 100, transparentBackground && format == 'png', ignoreSelection, addShadow, editable && format == 'png', border, - !cropImage, false, format, grid, null, theme, exportType); + !cropImage, currentPage, format, grid, null, theme, exportType); if (done != null) { - done(scale, transparentBackground, ignoreSelection, addShadow, editable, embedImages, - border, cropImage, currentPage, dummy, grid, theme, exportType); + done(scale, transparentBackground, ignoreSelection, addShadow, + editable, embedImages, border, cropImage, currentPage, + dummy, grid, theme, exportType); } } }), true, defaultEditable, format, true); diff --git a/src/main/webapp/js/grapheditor/EditorUi.js b/src/main/webapp/js/grapheditor/EditorUi.js index bfad6e671..aa2006654 100644 --- a/src/main/webapp/js/grapheditor/EditorUi.js +++ b/src/main/webapp/js/grapheditor/EditorUi.js @@ -6471,10 +6471,10 @@ EditorUi.prototype.createKeyHandler = function(editor) keyHandler.bindAction(80, true, 'print'); // Ctrl+P // Zoom keys are best effort for international keyboards, the actual - // US keycodes for + is 192 and - is 173. Keypad + is 107 and - is 109. + // US keycodes for + is 61 and - is 173. Keypad + is 107 and - is 109. keyHandler.bindAction(107, true, 'zoomIn'); // Ctrl+Plus (Numpad) keyHandler.bindAction(109, true, 'zoomOut'); // Ctrl+Minus (Numpad) - keyHandler.bindAction(192, true, 'zoomIn'); // Ctrl + (US) + keyHandler.bindAction(61, true, 'zoomIn'); // Ctrl + (US) keyHandler.bindAction(222, true, 'zoomIn'); // Ctrl Minus (CH: '/?) keyHandler.bindAction(173, true, 'zoomOut'); // Ctrl - (US) keyHandler.bindAction(189, true, 'zoomOut'); // Ctrl Slash (CH: -/_) diff --git a/src/main/webapp/js/grapheditor/Graph.js b/src/main/webapp/js/grapheditor/Graph.js index a2b6af59b..f4b66455a 100644 --- a/src/main/webapp/js/grapheditor/Graph.js +++ b/src/main/webapp/js/grapheditor/Graph.js @@ -11773,7 +11773,7 @@ if (typeof mxVertexHandler !== 'undefined') canvas.root = this.addCellData(state.cell, (svgDoc.createElementNS != null) ? svgDoc.createElementNS(mxConstants.NS_SVG, 'g') : - svgDoc.createElement('g'), false); + svgDoc.createElement('g'), Editor.addSvgMetadata); root.appendChild(canvas.root); visitStatesRecursive.apply(this, arguments); canvas.root = root; diff --git a/src/main/webapp/js/integrate.min.js b/src/main/webapp/js/integrate.min.js index d60c66aa1..55a7c1d20 100644 --- a/src/main/webapp/js/integrate.min.js +++ b/src/main/webapp/js/integrate.min.js @@ -64,7 +64,7 @@ if("1"==urlParams.offline||"1"==urlParams.demo||"1"==urlParams.stealth||"1"==url "se.diagrams.net"==window.location.hostname&&(urlParams.db="0",urlParams.od="0",urlParams.gh="0",urlParams.gl="0",urlParams.tr="0",urlParams.plugins="0",urlParams.mode="google",urlParams.lockdown="1",window.DRAWIO_GOOGLE_APP_ID=window.DRAWIO_GOOGLE_APP_ID||"184079235871",window.DRAWIO_GOOGLE_CLIENT_ID=window.DRAWIO_GOOGLE_CLIENT_ID||"184079235871-pjf5nn0lff27lk8qf0770gmffiv9gt61.apps.googleusercontent.com");"trello"==urlParams.mode&&(urlParams.tr="1"); "embed.diagrams.net"==window.location.hostname&&(urlParams.embed="1");(null==window.location.hash||1>=window.location.hash.length)&&null!=urlParams.open&&(window.location.hash=urlParams.open);"function"!==typeof window.structuredClone&&(window.structuredClone=function(a){return a});window.urlParams=window.urlParams||{};window.DOM_PURIFY_CONFIG=window.DOM_PURIFY_CONFIG||{ADD_TAGS:["use","foreignObject"],FORBID_TAGS:["form"],ALLOWED_URI_REGEXP:/^((?!javascript:).)*$/i,ADD_ATTR:["target","content","pointer-events","requiredFeatures"]};window.MAX_REQUEST_SIZE=window.MAX_REQUEST_SIZE||10485760;window.MAX_AREA=window.MAX_AREA||225E6;window.EXPORT_URL=window.EXPORT_URL||"/export";window.SAVE_URL=window.SAVE_URL||"/save";window.OPEN_URL=window.OPEN_URL||"/open"; window.RESOURCES_PATH=window.RESOURCES_PATH||"resources";window.RESOURCE_BASE=window.RESOURCE_BASE||window.RESOURCES_PATH+"/grapheditor";window.STENCIL_PATH=window.STENCIL_PATH||"stencils";window.IMAGE_PATH=window.IMAGE_PATH||"images";window.STYLE_PATH=window.STYLE_PATH||"styles";window.CSS_PATH=window.CSS_PATH||"styles";window.OPEN_FORM=window.OPEN_FORM||"open.html";window.mxBasePath=window.mxBasePath||"mxgraph";window.mxImageBasePath=window.mxImageBasePath||"mxgraph/images"; -window.mxLanguage=window.mxLanguage||urlParams.lang;window.mxLanguages=window.mxLanguages||["de","se"];var mxClient={VERSION:"24.6.1",IS_IE:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("MSIE"),IS_IE11:null!=navigator.userAgent&&!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:null!=navigator.userAgent&&!!navigator.userAgent.match(/Edge\//),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&0>navigator.userAgent.indexOf("Edge/"), +window.mxLanguage=window.mxLanguage||urlParams.lang;window.mxLanguages=window.mxLanguages||["de","se"];var mxClient={VERSION:"24.6.2",IS_IE:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("MSIE"),IS_IE11:null!=navigator.userAgent&&!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:null!=navigator.userAgent&&!!navigator.userAgent.match(/Edge\//),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&0>navigator.userAgent.indexOf("Edge/"), IS_OP:null!=navigator.userAgent&&(0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("OPR/")),IS_OT:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Presto/")&&0>navigator.userAgent.indexOf("Presto/2.4.")&&0>navigator.userAgent.indexOf("Presto/2.3.")&&0>navigator.userAgent.indexOf("Presto/2.2.")&&0>navigator.userAgent.indexOf("Presto/2.1.")&&0>navigator.userAgent.indexOf("Presto/2.0.")&&0>navigator.userAgent.indexOf("Presto/1."),IS_SF:/Apple Computer, Inc/.test(navigator.vendor), IS_ANDROID:0<=navigator.appVersion.indexOf("Android"),IS_IOS:/iP(hone|od|ad)/.test(navigator.platform)||navigator.userAgent.match(/Mac/)&&navigator.maxTouchPoints&&2navigator.userAgent.indexOf("Firefox/1.")&&0>navigator.userAgent.indexOf("Firefox/2.")||0<=navigator.userAgent.indexOf("Iceweasel/")&&0>navigator.userAgent.indexOf("Iceweasel/1.")&&0>navigator.userAgent.indexOf("Iceweasel/2.")||0<=navigator.userAgent.indexOf("SeaMonkey/")&&0>navigator.userAgent.indexOf("SeaMonkey/1.")||0<=navigator.userAgent.indexOf("Iceape/")&&0>navigator.userAgent.indexOf("Iceape/1."),IS_SVG:"MICROSOFT INTERNET EXPLORER"!=navigator.appName.toUpperCase(),NO_FO:!document.createElementNS|| @@ -2273,8 +2273,8 @@ F=0,37==w?F=-z:38==w?D=-z:39==w?F=z:40==w&&(D=z),I.currentDx+=F*K,I.currentDy+=D d.dialogs||0==d.dialogs.length)};g.isControlDown=function(w){return mxEvent.isControlDown(w)||mxClient.IS_MAC&&w.metaKey};var h=null,n={37:mxConstants.DIRECTION_WEST,38:mxConstants.DIRECTION_NORTH,39:mxConstants.DIRECTION_EAST,40:mxConstants.DIRECTION_SOUTH},q=g.getFunction;mxKeyHandler.prototype.getFunction=function(w){if(f.isEnabled()){var z=null;mxEvent.isShiftDown(w)&&this.isControlDown(w)&&mxEvent.isAltDown(w)?z=d.actions.get(d.ctrlAltShiftActions[w.keyCode]):mxEvent.isShiftDown(w)&&mxEvent.isAltDown(w)? z=d.actions.get(d.altShiftActions[w.keyCode]):this.isControlDown(w)&&mxEvent.isAltDown(w)&&(z=d.actions.get(d.ctrlAltActions[w.keyCode]));if(null!=z)return z.funct;if(null!=n[w.keyCode]&&!f.isSelectionEmpty())if(!this.isControlDown(w)&&mxEvent.isShiftDown(w)&&mxEvent.isAltDown(w)){if(f.model.isVertex(f.getSelectionCell()))return function(){var C=f.connectVertex(f.getSelectionCell(),n[w.keyCode],f.defaultEdgeLength,w,!0);null!=C&&0');Editor.configurationKey=".configuration";Editor.settingsKey=".drawio-config";Editor.defaultCustomLibraries=[];Editor.enableCustomLibraries=!0;Editor.enableUncompressedLibraries=!1;Editor.enableCustomProperties=!0; Editor.enableSimpleTheme=!0;Editor.enableHashObjects=!mxClient.IS_CHROMEAPP&&!EditorUi.isElectronApp&&"1"!=urlParams.embed&&window.top==window.self;Editor.defaultIncludeDiagram=!0;Editor.enableServiceWorker="0"!=urlParams.pwa&&"serviceWorker"in navigator&&("1"==urlParams.offline||/.*\.diagrams\.net$/.test(window.location.hostname)||/.*\.draw\.io$/.test(window.location.hostname));try{Editor.enableServiceWorker&&navigator.serviceWorker}catch(g){Editor.enableServiceWorker=!1}Editor.enableWebFonts="1"!= -urlParams["safe-style-src"]&&!window.mxIsElectron;Editor.enableShadowOption=!mxClient.IS_SF;Editor.enableExportUrl=!0;Editor.enableRealtime=!0;Editor.enableRealtimeCache=!0;Editor.p2pSyncNotify=!1;Editor.compressXml=!0;Editor.defaultCompressed=!1;Editor.oneDriveInlinePicker=null!=window.urlParams&&"0"==window.urlParams.inlinePicker?!1:!0;Editor.globalVars=null;Editor.defaultBorder=5;Editor.enableAnimations=!0;Editor.enableChatGpt=/test\.draw\.io$/.test(window.location.hostname)||/preprod\.diagrams\.net$/.test(window.location.hostname)|| -/app\.diagrams\.net$/.test(window.location.hostname);Editor.gptApiKey=null!=urlParams["gpt-api-key"]?decodeURIComponent(urlParams["gpt-api-key"]):null;Editor.gptModel=null!=urlParams["gpt-model"]?decodeURIComponent(urlParams["gpt-model"]):"gpt-3.5-turbo";Editor.gptUrl=null!=urlParams["gpt-url"]?decodeURIComponent(urlParams["gpt-url"]):"https://api.openai.com/v1/chat/completions";Editor.replaceSvgDataUris=!0;Editor.foreignObjectImages=!0;Editor.svgRasterScale=4;Editor.htmlRasterScale=4;Editor.config= -null;Editor.configVersion=null;Editor.commonProperties=[{name:"enumerate",dispName:"Enumerate",type:"bool",defVal:!1,onChange:function(g){g.refresh()}},{name:"enumerateValue",dispName:"Enumerate Value",type:"string",defVal:"",isVisible:function(g,p){return"1"==mxUtils.getValue(g.style,"enumerate","0")}},{name:"comic",dispName:"Comic",type:"bool",defVal:!1,isVisible:function(g,p){return"1"!=mxUtils.getValue(g.style,"sketch","0")}},{name:"jiggle",dispName:"Jiggle",type:"float",min:0,defVal:1,isVisible:function(g, -p){return"1"==mxUtils.getValue(g.style,"comic","0")||"1"==mxUtils.getValue(g.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"fillWeight",dispName:"Fill Weight",type:"int",defVal:-1,isVisible:function(g,p){return"1"==mxUtils.getValue(g.style,"sketch","1"==urlParams.rough?"1":"0")&&0
')))}catch(g){}Editor.prototype.useCanvasForExport=!1})(); (function(){var b=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);b.beforeDecode=function(f,l,d){d.ui=f.ui;return l};b.afterDecode=function(f,l,d){d.previousColor=d.color;d.previousImage=d.image;d.previousFormat=d.format;null!=d.foldingEnabled&&(d.foldingEnabled=!d.foldingEnabled);null!=d.mathEnabled&&(d.mathEnabled=!d.mathEnabled);null!=d.shadowVisible&&(d.shadowVisible=!d.shadowVisible);return d};mxCodecRegistry.register(b)})(); -(function(){var b=new mxObjectCodec(new ChangeGridColor,["ui"]);b.beforeDecode=function(f,l,d){d.ui=f.ui;return l};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="24.6.1";EditorUi.compactUi="atlas"!=Editor.currentTheme||window.DRAWIO_PUBLIC_BUILD;Editor.isDarkMode()&&(mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultDarkGridColor);EditorUi.enableLogging="1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&(/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname))&&"https://preprod.diagrams.net/"!=window.location.hostname&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost= +(function(){var b=new mxObjectCodec(new ChangeGridColor,["ui"]);b.beforeDecode=function(f,l,d){d.ui=f.ui;return l};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="24.6.2";EditorUi.compactUi="atlas"!=Editor.currentTheme||window.DRAWIO_PUBLIC_BUILD;Editor.isDarkMode()&&(mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultDarkGridColor);EditorUi.enableLogging="1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&(/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname))&&"https://preprod.diagrams.net/"!=window.location.hostname&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost= window.DRAWIO_BASE_URL;EditorUi.lightboxHost=window.DRAWIO_LIGHTBOX_URL;EditorUi.lastErrorMessage=null;EditorUi.ignoredAnonymizedChars="\n\t`~!@#$%^&*()_+{}|:\"<>?-=[];'./,\n\t";EditorUi.templateFile=TEMPLATE_PATH+"/index.xml";EditorUi.cacheUrl=window.REALTIME_URL;null==EditorUi.cacheUrl&&"undefined"!==typeof DrawioFile&&(DrawioFile.SYNC="none");Editor.cacheTimeout=1E4;EditorUi.enablePlantUml=EditorUi.enableLogging;EditorUi.isElectronApp=null!=window&&null!=window.process&&null!=window.process.versions&& null!=window.process.versions.electron;EditorUi.nativeFileSupport=!mxClient.IS_OP&&!EditorUi.isElectronApp&&"1"!=urlParams.extAuth&&"showSaveFilePicker"in window&&"showOpenFilePicker"in window;EditorUi.enableDrafts=!mxClient.IS_CHROMEAPP&&isLocalStorage&&"0"!=urlParams.drafts;EditorUi.scratchpadHelpLink="https://www.drawio.com/doc/faq/scratchpad";EditorUi.enableHtmlEditOption=!0;EditorUi.mermaidDiagramTypes="flowchart classDiagram sequenceDiagram stateDiagram mindmap graph erDiagram requirementDiagram journey gantt pie gitGraph".split(" "); EditorUi.defaultMermaidConfig={theme:"neutral",arrowMarkerAbsolute:!1,flowchart:{htmlLabels:!1},sequence:{diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,mirrorActors:!0,bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,showSequenceNumbers:!1},gantt:{titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,leftPadding:75,gridLineStartPadding:35,fontSize:11,fontFamily:'"Open-Sans", "sans-serif"',numberSectionStyles:4,axisFormat:"%Y-%m-%d"}}; @@ -12175,18 +12175,20 @@ E.appendChild(K);mxUtils.write(E,mxResources.get("zoom")+":");var m=document.cre document.createElement("option");mxUtils.write(T,mxResources.get(c[K]));T.setAttribute("value",c[K]);H.appendChild(T)}G?(mxUtils.write(E,mxResources.get("size")+":"),E.appendChild(H),mxUtils.br(E),Q+=26,mxEvent.addListener(H,"change",function(){"selectionOnly"==H.value&&(z.checked=!0)})):u&&(E.appendChild(B),mxUtils.write(E,mxResources.get("crop")),mxUtils.br(E),Q+=30,mxEvent.addListener(z,"change",function(){z.checked?B.removeAttribute("disabled"):B.setAttribute("disabled","disabled")}));U.isSelectionEmpty()? G&&(z.style.display="none",z.nextSibling.style.display="none",z.nextSibling.nextSibling.style.display="none",Q-=30):(H.value="diagram",B.setAttribute("checked","checked"),B.defaultChecked=!0,mxEvent.addListener(z,"change",function(){H.value=z.checked?"selectionOnly":"diagram"}));var g=this.addCheckbox(E,mxResources.get("transparentBackground"),!1,null,null,"jpeg"!=D&&"webp"!=D),p=null;if(Editor.isDarkMode()||Editor.enableCssDarkMode)p=document.createElement("select"),p.style.maxWidth="260px",p.style.marginLeft= "8px",p.style.marginTop="16px",u=document.createElement("option"),u.setAttribute("value","light"),mxUtils.write(u,mxResources.get("light")),p.appendChild(u),G=document.createElement("option"),G.setAttribute("value","dark"),mxUtils.write(G,mxResources.get("dark")),p.appendChild(G),Editor.enableCssDarkMode&&"svg"==D&&(c=document.createElement("option"),c.setAttribute("value","auto"),mxUtils.write(c,mxResources.get("automatic")),p.appendChild(c)),mxUtils.write(E,mxResources.get("appearance")+":"),E.appendChild(p), -mxUtils.br(E),Editor.isDarkMode()||Editor.cssDarkMode?G.setAttribute("selected","selected"):u.setAttribute("selected","selected"),Q+=26;var F=this.addCheckbox(E,mxResources.get("shadow"),U.shadowVisible),J=null;if("png"==D||"jpeg"==D||"webp"==D)J=this.addCheckbox(E,mxResources.get("grid"),!1,this.isOffline()||!this.canvasSupported,!1,!0),Q+=30;var L=this.addCheckbox(E,mxResources.get("includeCopyOfMyDiagram"),A,null,null,"jpeg"!=D&&"webp"!=D);L.style.marginBottom="16px";var R=document.createElement("input"); -R.style.marginBottom="16px";R.style.marginRight="8px";R.setAttribute("type","checkbox");var S=document.createElement("input");S.style.marginBottom="16px";S.style.marginRight="8px";S.setAttribute("type","checkbox");e&&(R.checked=null!=this.lastEmbedImages?this.lastEmbedImages:!0,E.appendChild(R),mxUtils.write(E,mxResources.get("embedImages")),mxUtils.br(E),S.checked=null!=this.lastEmbedFonts?this.lastEmbedImages:!0,E.appendChild(S),mxUtils.write(E,mxResources.get("embedFonts")),mxUtils.br(E),Q+=60); -var V=document.createElement("select");V.style.maxWidth="260px";V.style.marginLeft="8px";c=document.createElement("option");c.setAttribute("value","auto");mxUtils.write(c,mxResources.get("automatic"));V.appendChild(c);A=document.createElement("option");A.setAttribute("value","blank");mxUtils.write(A,mxResources.get("openInNewWindow"));V.appendChild(A);A=document.createElement("option");A.setAttribute("value","self");mxUtils.write(A,mxResources.get("openInThisWindow"));V.appendChild(A);A=document.createElement("div"); -mxUtils.write(A,mxResources.get("LinksLost"));A.style.margin="7px";A.style.display="none";"svg"==D&&(mxUtils.write(E,mxResources.get("links")+":"),E.appendChild(V),E.appendChild(A),mxUtils.br(E),mxUtils.br(E),Q+=50);k=new CustomDialog(this,E,mxUtils.bind(this,function(){this.lastExportBorder=v.value;this.lastExportZoom=m.value;this.lastEmbedImages=R.checked;this.lastEmbedFonts=S.checked;q(m.value,g.checked,!z.checked,F.checked,L.checked,R.checked&&e,v.value,B.checked,!1,V.value,null!=J?J.checked: -null,null!=p?p.value:null,H.value,S.checked)}),null,k,n);this.showDialog(k.container,340,Q,!0,!0,null,null,null,null,!0);m.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?m.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog=function(c,e,k,n,q){var u=document.createElement("div");u.style.whiteSpace="nowrap";var A=this.editor.graph;if(null!=e){var D=document.createElement("h3");mxUtils.write(D,e);D.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px"; -u.appendChild(D)}var G=this.addCheckbox(u,mxResources.get("fit"),!0),E=this.addCheckbox(u,mxResources.get("shadow"),A.shadowVisible&&n,!n),U=this.addCheckbox(u,k),Q=this.addCheckbox(u,mxResources.get("lightbox"),!0),K=this.addEditButton(u,Q),m=K.getEditInput(),v=1")}var E=this.editor.graph.getGraphBounds(),U=this.getSelectedPageIndex();if(this.isExportToCanvas())this.editor.exportToCanvas(mxUtils.bind(this,function(m){var v=n?this.getFileData(!0):null;m=this.createImageDataUri(m,v,"png");G(m)}),null,null,null,mxUtils.bind(this,function(m){D({message:mxResources.get("unknownError")})}), -null,!0,k?2:1,null,e,null,null,Editor.defaultBorder);else if(e=this.getFileData(!0),E.width*E.height<=MAX_AREA&&e.length<=MAX_REQUEST_SIZE){var Q="";k&&(Q="&w="+Math.round(2*E.width)+"&h="+Math.round(2*E.height));var K=new mxXmlRequest(EXPORT_URL,"format=png&base64=1&embedXml="+(n?"1":"0")+Q+"&xml="+encodeURIComponent(e));K.send(mxUtils.bind(this,function(){200<=K.getStatus()&&299>=K.getStatus()?G("data:image/png;base64,"+K.getText()):D({message:mxResources.get("unknownError")})}))}else D({message:mxResources.get("drawingTooLarge")})}; -EditorUi.prototype.createEmbedSvg=function(c,e,k,n,q,u,A){var D=this.editor.graph.getSvg(null,null,null,null,null,null,null,null,null,null,!k),G=D.getElementsByTagName("a");if(null!=G)for(var E=0;E")}))}else K="",n&&(e=this.getSelectedPageIndex(),D.setAttribute("onclick","(function(svg){var src=window.event.target||window.event.srcElement;while (src!=null&&src.nodeName.toLowerCase()!='a'){src=src.parentNode;}if(src==null){if(svg.wnd!=null&&!svg.wnd.closed){svg.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==svg.wnd){svg.wnd.postMessage(decodeURIComponent(svg.getAttribute('content')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);svg.wnd=window.open('"+ +mxUtils.br(E),Editor.isDarkMode()||Editor.cssDarkMode?G.setAttribute("selected","selected"):u.setAttribute("selected","selected"),Q+=26;var F=this.addCheckbox(E,mxResources.get("shadow"),U.shadowVisible),J=null;if("png"==D||"jpeg"==D||"webp"==D)J=this.addCheckbox(E,mxResources.get("grid"),!1,this.isOffline()||!this.canvasSupported,!1,!0),Q+=30;var L=this.addCheckbox(E,mxResources.get("includeCopyOfMyDiagram")+":",A,null,null,"jpeg"!=D&&"webp"!=D),R=document.createElement("select");R.style.maxWidth= +"260px";R.style.marginLeft="28px";"png"==D||"svg"==D?(A=function(){L.checked?R.removeAttribute("disabled"):R.setAttribute("disabled","disabled")},U=document.createElement("option"),U.setAttribute("value","allPages"),mxUtils.write(U,mxResources.get("allPages")),R.appendChild(U),U=document.createElement("option"),U.setAttribute("value","currentPage"),mxUtils.write(U,mxResources.get("currentPage")),R.appendChild(U),L.style.marginBottom="12px",R.style.marginBottom="16px",E.appendChild(R),mxUtils.br(E), +Q+=20,null!=this.lastEmbedInclude&&(R.value=this.lastEmbedInclude),mxEvent.addListener(L,"change",A),A()):L.style.marginBottom="16px";var S=document.createElement("input");S.style.marginBottom="16px";S.style.marginRight="8px";S.setAttribute("type","checkbox");var V=document.createElement("input");V.style.marginBottom="16px";V.style.marginRight="8px";V.setAttribute("type","checkbox");e&&(S.checked=null!=this.lastEmbedImages?this.lastEmbedImages:!0,E.appendChild(S),mxUtils.write(E,mxResources.get("embedImages")), +mxUtils.br(E),V.checked=null!=this.lastEmbedFonts?this.lastEmbedImages:!0,E.appendChild(V),mxUtils.write(E,mxResources.get("embedFonts")),mxUtils.br(E),Q+=50);var W=document.createElement("select");W.style.maxWidth="260px";W.style.marginLeft="8px";c=document.createElement("option");c.setAttribute("value","auto");mxUtils.write(c,mxResources.get("automatic"));W.appendChild(c);A=document.createElement("option");A.setAttribute("value","blank");mxUtils.write(A,mxResources.get("openInNewWindow"));W.appendChild(A); +A=document.createElement("option");A.setAttribute("value","self");mxUtils.write(A,mxResources.get("openInThisWindow"));W.appendChild(A);A=document.createElement("div");mxUtils.write(A,mxResources.get("LinksLost"));A.style.margin="7px";A.style.display="none";"svg"==D&&(mxUtils.write(E,mxResources.get("links")+":"),E.appendChild(W),E.appendChild(A),mxUtils.br(E),mxUtils.br(E),Q+=50);k=new CustomDialog(this,E,mxUtils.bind(this,function(){this.lastExportBorder=v.value;this.lastExportZoom=m.value;this.lastEmbedImages= +S.checked;this.lastEmbedFonts=V.checked;this.lastEmbedInclude=R.value;q(m.value,g.checked,!z.checked,F.checked,L.checked,S.checked&&e,v.value,B.checked,("png"==D||"svg"==D)&&"currentPage"==R.value,W.value,null!=J?J.checked:null,null!=p?p.value:null,H.value,V.checked)}),null,k,n);this.showDialog(k.container,340,Q,!0,!0,null,null,null,null,!0);m.focus();mxClient.IS_GC||mxClient.IS_FF||5<=document.documentMode?m.select():document.execCommand("selectAll",!1,null)};EditorUi.prototype.showEmbedImageDialog= +function(c,e,k,n,q){var u=document.createElement("div");u.style.whiteSpace="nowrap";var A=this.editor.graph;if(null!=e){var D=document.createElement("h3");mxUtils.write(D,e);D.style.cssText="width:100%;text-align:center;margin-top:0px;margin-bottom:4px";u.appendChild(D)}var G=this.addCheckbox(u,mxResources.get("fit"),!0),E=this.addCheckbox(u,mxResources.get("shadow"),A.shadowVisible&&n,!n),U=this.addCheckbox(u,k),Q=this.addCheckbox(u,mxResources.get("lightbox"),!0),K=this.addEditButton(u,Q),m=K.getEditInput(), +v=1")}var E=this.editor.graph.getGraphBounds(),U=this.getSelectedPageIndex();if(this.isExportToCanvas())this.editor.exportToCanvas(mxUtils.bind(this,function(m){var v=n?this.getFileData(!0):null;m= +this.createImageDataUri(m,v,"png");G(m)}),null,null,null,mxUtils.bind(this,function(m){D({message:mxResources.get("unknownError")})}),null,!0,k?2:1,null,e,null,null,Editor.defaultBorder);else if(e=this.getFileData(!0),E.width*E.height<=MAX_AREA&&e.length<=MAX_REQUEST_SIZE){var Q="";k&&(Q="&w="+Math.round(2*E.width)+"&h="+Math.round(2*E.height));var K=new mxXmlRequest(EXPORT_URL,"format=png&base64=1&embedXml="+(n?"1":"0")+Q+"&xml="+encodeURIComponent(e));K.send(mxUtils.bind(this,function(){200<=K.getStatus()&& +299>=K.getStatus()?G("data:image/png;base64,"+K.getText()):D({message:mxResources.get("unknownError")})}))}else D({message:mxResources.get("drawingTooLarge")})};EditorUi.prototype.createEmbedSvg=function(c,e,k,n,q,u,A){var D=this.editor.graph.getSvg(null,null,null,null,null,null,null,null,null,null,!k),G=D.getElementsByTagName("a");if(null!=G)for(var E=0;E")}))}else K="",n&&(e=this.getSelectedPageIndex(),D.setAttribute("onclick","(function(svg){var src=window.event.target||window.event.srcElement;while (src!=null&&src.nodeName.toLowerCase()!='a'){src=src.parentNode;}if(src==null){if(svg.wnd!=null&&!svg.wnd.closed){svg.wnd.focus();}else{var r=function(evt){if(evt.data=='ready'&&evt.source==svg.wnd){svg.wnd.postMessage(decodeURIComponent(svg.getAttribute('content')),'*');window.removeEventListener('message',r);}};window.addEventListener('message',r);svg.wnd=window.open('"+ EditorUi.lightboxHost+"/?client=1"+(null!=e?"&page="+e:"")+(q?"&edit=_blank":"")+(u?"&layers=1":"")+"');}}})(this);"),K+="cursor:pointer;"),c&&(c=parseInt(D.getAttribute("width")),q=parseInt(D.getAttribute("height")),D.setAttribute("viewBox","-0.5 -0.5 "+c+" "+q),K+="max-width:100%;max-height:"+q+"px;",D.removeAttribute("height")),""!=K&&D.setAttribute("style",K),this.editor.addFontCss(D),this.editor.graph.mathEnabled&&this.editor.addMathCss(D),A(mxUtils.getXml(D))};EditorUi.prototype.timeSince=function(c){c= Math.floor((new Date-c)/1E3);var e=Math.floor(c/31536E3);if(1=window.location.hash.length)&&null!=urlParams.open&&(window.location.hash=urlParams.open);"function"!==typeof window.structuredClone&&(window.structuredClone=function(a){return a});window.urlParams=window.urlParams||{};window.DOM_PURIFY_CONFIG=window.DOM_PURIFY_CONFIG||{ADD_TAGS:["use","foreignObject"],FORBID_TAGS:["form"],ALLOWED_URI_REGEXP:/^((?!javascript:).)*$/i,ADD_ATTR:["target","content","pointer-events","requiredFeatures"]};window.MAX_REQUEST_SIZE=window.MAX_REQUEST_SIZE||10485760;window.MAX_AREA=window.MAX_AREA||225E6;window.EXPORT_URL=window.EXPORT_URL||"/export";window.SAVE_URL=window.SAVE_URL||"/save";window.OPEN_URL=window.OPEN_URL||"/open"; window.RESOURCES_PATH=window.RESOURCES_PATH||"resources";window.RESOURCE_BASE=window.RESOURCE_BASE||window.RESOURCES_PATH+"/grapheditor";window.STENCIL_PATH=window.STENCIL_PATH||"stencils";window.IMAGE_PATH=window.IMAGE_PATH||"images";window.STYLE_PATH=window.STYLE_PATH||"styles";window.CSS_PATH=window.CSS_PATH||"styles";window.OPEN_FORM=window.OPEN_FORM||"open.html";window.mxBasePath=window.mxBasePath||"mxgraph";window.mxImageBasePath=window.mxImageBasePath||"mxgraph/images"; -window.mxLanguage=window.mxLanguage||urlParams.lang;window.mxLanguages=window.mxLanguages||["de","se"];var mxClient={VERSION:"24.6.1",IS_IE:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("MSIE"),IS_IE11:null!=navigator.userAgent&&!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:null!=navigator.userAgent&&!!navigator.userAgent.match(/Edge\//),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&0>navigator.userAgent.indexOf("Edge/"), +window.mxLanguage=window.mxLanguage||urlParams.lang;window.mxLanguages=window.mxLanguages||["de","se"];var mxClient={VERSION:"24.6.2",IS_IE:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("MSIE"),IS_IE11:null!=navigator.userAgent&&!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:null!=navigator.userAgent&&!!navigator.userAgent.match(/Edge\//),IS_EM:"spellcheck"in document.createElement("textarea")&&8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&0>navigator.userAgent.indexOf("Edge/"), IS_OP:null!=navigator.userAgent&&(0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("OPR/")),IS_OT:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Presto/")&&0>navigator.userAgent.indexOf("Presto/2.4.")&&0>navigator.userAgent.indexOf("Presto/2.3.")&&0>navigator.userAgent.indexOf("Presto/2.2.")&&0>navigator.userAgent.indexOf("Presto/2.1.")&&0>navigator.userAgent.indexOf("Presto/2.0.")&&0>navigator.userAgent.indexOf("Presto/1."),IS_SF:/Apple Computer, Inc/.test(navigator.vendor), IS_ANDROID:0<=navigator.appVersion.indexOf("Android"),IS_IOS:/iP(hone|od|ad)/.test(navigator.platform)||navigator.userAgent.match(/Mac/)&&navigator.maxTouchPoints&&2navigator.userAgent.indexOf("Firefox/1.")&&0>navigator.userAgent.indexOf("Firefox/2.")||0<=navigator.userAgent.indexOf("Iceweasel/")&&0>navigator.userAgent.indexOf("Iceweasel/1.")&&0>navigator.userAgent.indexOf("Iceweasel/2.")||0<=navigator.userAgent.indexOf("SeaMonkey/")&&0>navigator.userAgent.indexOf("SeaMonkey/1.")||0<=navigator.userAgent.indexOf("Iceape/")&&0>navigator.userAgent.indexOf("Iceape/1."),IS_SVG:"MICROSOFT INTERNET EXPLORER"!=navigator.appName.toUpperCase(),NO_FO:!document.createElementNS|| @@ -1965,7 +1965,7 @@ function Dialog(b,e,g,n,v,q,C,H,U,F,K){this.editorUi=b;var S=U?57:0,W=g,c=n,f=U? (this.zIndex+=2*b.dialogs.length);null==this.bg&&(this.bg=b.createDiv("geBackground"),this.bg.style.position="absolute",this.bg.style.height=z+"px",this.bg.style.right="0px",this.bg.style.zIndex=this.zIndex-2,mxUtils.setOpacity(this.bg,this.bgOpacity));var B=mxUtils.getDocumentScrollOrigin(document);this.bg.style.left=B.x+"px";this.bg.style.top=B.y+"px";l+=B.x;A+=B.y;Editor.inlineFullscreen||null==b.embedViewport||(this.bg.style.height=this.getDocumentSize().height+"px",A+=b.embedViewport.y,l+=b.embedViewport.x); v&&document.body.appendChild(this.bg);var G=b.createDiv(U?"geTransDialog":"geDialog");v=this.getPosition(l,A,g,n);l=v.x;A=v.y;G.style.width=g+"px";G.style.height=n+"px";G.style.left=l+"px";G.style.top=A+"px";G.style.zIndex=this.zIndex;G.appendChild(e);document.body.appendChild(G);!H&&e.clientHeight>G.clientHeight-f&&(e.style.overflowY="auto");e.style.overflowX="hidden";if(q&&(q=document.createElement("img"),q.setAttribute("src",Dialog.prototype.closeImage),q.setAttribute("title",mxResources.get("close")), q.className="geDialogClose",q.style.top=A+14+"px",q.style.left=l+g+38-S+"px",q.style.zIndex=this.zIndex,mxEvent.addListener(q,"click",mxUtils.bind(this,function(){b.hideDialog(!0)})),document.body.appendChild(q),this.dialogImg=q,!K)){var M=!1;mxEvent.addGestureListeners(this.bg,mxUtils.bind(this,function(Q){M=!0}),null,mxUtils.bind(this,function(Q){M&&(b.hideDialog(!0),M=!1)}))}this.resizeListener=mxUtils.bind(this,function(){if(null!=F){var Q=F();null!=Q&&(W=g=Q.w,c=n=Q.h)}Q=Editor.inlineFullscreen|| -null==b.embedViewport?this.getDocumentSize():mxUtils.clone(b.embedViewport);z=Q.height;this.bg.style.height=z+"px";Editor.inlineFullscreen||null==b.embedViewport||(this.bg.style.height=this.getDocumentSize().height+"px");g=null!=document.body?Math.min(W,document.body.scrollWidth-f):W;n=Math.min(c,z-f);Q=Math.max(1,Math.round((Q.width-g-f)/2));var J=Math.max(1,Math.round((z-n-b.footerHeight)/3));J=this.getPosition(Q,J,g,n);Q=J.x;J=J.y;var ha=mxUtils.getDocumentScrollOrigin(document);Q+=ha.x;J+=ha.y; +null==b.embedViewport?this.getDocumentSize():mxUtils.clone(b.embedViewport);z=Q.height;this.bg.style.height=z+"px";Editor.inlineFullscreen||null==b.embedViewport||(this.bg.style.height=this.getDocumentSize().height+"px");g=null!=document.body?Math.min(W,document.body.scrollWidth-f):W;n=Math.min(c,z-f);Q=Math.max(1,Math.round((Q.width-g-f)/2));var J=Math.max(1,Math.round((z-n-b.footerHeight)/3));J=this.getPosition(Q,J,g,n);Q=J.x;J=J.y;var fa=mxUtils.getDocumentScrollOrigin(document);Q+=fa.x;J+=fa.y; Editor.inlineFullscreen||null==b.embedViewport||(J+=b.embedViewport.y,Q+=b.embedViewport.x);G.style.left=Q+"px";G.style.top=J+"px";G.style.width=g+"px";G.style.height=n+"px";!H&&e.clientHeight>G.clientHeight-f&&(e.style.overflowY="auto");null!=this.dialogImg&&(this.dialogImg.style.top=J+14+"px",this.dialogImg.style.left=Q+g+38-S+"px")});null!=b.embedViewport?b.addListener("embedViewportChanged",this.resizeListener):mxEvent.addListener(window,"resize",this.resizeListener);this.onDialogClose=C;this.container= G;b.editor.fireEvent(new mxEventObject("showDialog"))}Dialog.prototype.zIndex=mxPopupMenu.prototype.zIndex-2; Dialog.prototype.noColorImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkEzRDlBMUUwODYxMTExRTFCMzA4RDdDMjJBMEMxRDM3IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkEzRDlBMUUxODYxMTExRTFCMzA4RDdDMjJBMEMxRDM3Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QTNEOUExREU4NjExMTFFMUIzMDhEN0MyMkEwQzFEMzciIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QTNEOUExREY4NjExMTFFMUIzMDhEN0MyMkEwQzFEMzciLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5xh3fmAAAABlBMVEX////MzMw46qqDAAAAGElEQVR42mJggAJGKGAYIIGBth8KAAIMAEUQAIElnLuQAAAAAElFTkSuQmCC":IMAGE_PATH+ @@ -2049,7 +2049,7 @@ mxEvent.getSource(T)!=v.container||mxEvent.consume(T))});mxEvent.addListener(doc null,B=null,G=mxUtils.bind(this,function(){if(null!=this.toolbar&&l!=v.cellEditor.isContentEditing()){for(var T=this.toolbar.container.firstChild,ca=[];null!=T;){var ka=T.nextSibling;0>mxUtils.indexOf(this.toolbar.staticElements,T)&&(T.parentNode.removeChild(T),ca.push(T));T=ka}T=this.toolbar.fontMenu;ka=this.toolbar.sizeMenu;if(null==B)this.toolbar.createTextToolbar();else{for(var ma=0;mapageSize){var G=S.startIndex||0;A=z.slice(Math.max(0,G),Math.min(z.length,G+pageSize))}A=n.getOpposites(A,l).concat(A);var M=K.cloneCells(A);for(B=0;BQ.geometry.x?-.8:.5(S.startIndex||0)+pageSize){var ha=K.createVertex(null,null,mxResources.get("nextPage")+" ("+(Math.ceil((S.startIndex||0)/pageSize)+2)+"/"+Math.ceil(z.length/pageSize)+")",0,0,120,30,"fillColor=green;fontColor=white;strokeColor=green;rounded=1;");ha.referenceCell= -f;ha.startIndex=(S.startIndex||0)+pageSize;M.splice(0,0,ha)}for(var ea in K.getModel().cells){var T=K.getModel().getCell(ea);T!=K.rootCell&&!K.getModel().isAncestor(K.rootCell,T)&&K.getModel().isVertex(T)&&K.removeCells([T])}K.addCells(M);var ca=K.getModel().getGeometry(K.rootCell);null!=ca&&(ca=ca.clone(),ca.x=W-ca.width/2,ca.y=c-ca.height/3,K.getModel().setGeometry(K.rootCell,ca));S=[];for(ea in K.getModel().cells)T=K.getModel().getCell(ea),T!=K.rootCell&&K.getModel().isVertex(T)&&K.getModel().getParent(T)== +" ("+Math.ceil((S.startIndex||0)/pageSize)+"/"+Math.ceil(z.length/pageSize)+")",0,0,120,30,"fillColor=green;fontColor=white;strokeColor=green;rounded=1;");J.referenceCell=f;J.startIndex=Math.max(0,(S.startIndex||0)-pageSize);M.splice(0,0,J)}if(z.length>(S.startIndex||0)+pageSize){var fa=K.createVertex(null,null,mxResources.get("nextPage")+" ("+(Math.ceil((S.startIndex||0)/pageSize)+2)+"/"+Math.ceil(z.length/pageSize)+")",0,0,120,30,"fillColor=green;fontColor=white;strokeColor=green;rounded=1;");fa.referenceCell= +f;fa.startIndex=(S.startIndex||0)+pageSize;M.splice(0,0,fa)}for(var ea in K.getModel().cells){var T=K.getModel().getCell(ea);T!=K.rootCell&&!K.getModel().isAncestor(K.rootCell,T)&&K.getModel().isVertex(T)&&K.removeCells([T])}K.addCells(M);var ca=K.getModel().getGeometry(K.rootCell);null!=ca&&(ca=ca.clone(),ca.x=W-ca.width/2,ca.y=c-ca.height/3,K.getModel().setGeometry(K.rootCell,ca));S=[];for(ea in K.getModel().cells)T=K.getModel().getCell(ea),T!=K.rootCell&&K.getModel().isVertex(T)&&K.getModel().getParent(T)== K.getDefaultParent()&&(S.push(T),ca=K.getModel().getGeometry(T),null!=ca&&(ca.x=W-ca.width/2,ca.y=c-ca.height/2));var ka=S.length,ma=2*Math.PI/ka,aa=Math.max(minSize,Math.min(K.container.scrollWidth/2.5-80,K.container.scrollHeight/2.5-80));for(W=0;WmxUtils.indexOf(U,K)})),this.updateCellStyles(C,H))};Graph.prototype.copyCellStyles=function(C,H,U,F,K,S,W){var c=!1,f=!1;if(0mxUtils.indexOf(Graph.edgeStyles,M))&&(c=mxUtils.setStyle(c,M,ca),"fontFamily"==M&&null==f.fontSource&&(c=mxUtils.setStyle(c,"fontSource",null)),T&&"rounded"==M&&"1"==ca&&null==f.curved&&(c=mxUtils.setStyle(c,"curved",null)))}Editor.simpleLabels&&(c=mxUtils.setStyle(mxUtils.setStyle(c,"html",null),"whiteSpace",null));this.model.setStyle(W,c)}}finally{this.model.endUpdate()}return C};Graph.prototype.updateCellStyles= function(C,H){this.model.beginUpdate();try{for(var U=0;Ul||Math.abs(ka.y-B.y)>l)&&(Math.abs(ka.x-A.x)>l||Math.abs(ka.y-A.y)>l)&&(null== +W;for(var Q=0;Ql||Math.abs(ka.y-B.y)>l)&&(Math.abs(ka.x-A.x)>l||Math.abs(ka.y-A.y)>l)&&(null== ea||mxUtils.ptLineDist(B.x,B.y,A.x,A.y,ea.x,ea.y)>l||mxUtils.ptLineDist(B.x,B.y,A.x,A.y,ca.x,ca.y)>l)&&(null==M||mxUtils.ptLineDist(B.x,B.y,A.x,A.y,M.x,M.y)>l||mxUtils.ptLineDist(B.x,B.y,A.x,A.y,T.x,T.y)>l)){M=ka.x-B.x;ea=ka.y-B.y;ka={distSq:M*M+ea*ea,x:ka.x,y:ka.y};for(M=0;Mka.distSq){G.splice(M,0,ka);ka=null;break}null==ka||0!=G.length&&G[G.length-1].x===ka.x&&G[G.length-1].y===ka.y||G.push(ka)}ea=ca}}}for(J=0;Jf*f&&0f*f&&(ea=new mxPoint(ha.x-M.x,ha.y-M.y),J=new mxPoint(ha.x+M.x,ha.y+M.y),G.push(ea),this.addPoints(K,G,W,c,!1,null,z),G=0>Math.round(M.x)||0==Math.round(M.x)&&0>=Math.round(M.y)?1:-1,z=!1,"sharp"==l?(K.lineTo(ea.x-M.y*G,ea.y+M.x*G),K.lineTo(J.x-M.y*G,J.y+M.x*G),K.lineTo(J.x,J.y)):"line"==l?(K.moveTo(ea.x+M.y*G,ea.y-M.x*G),K.lineTo(ea.x-M.y*G,ea.y+M.x*G),K.moveTo(J.x-M.y*G,J.y+M.x*G),K.lineTo(J.x+M.y*G,J.y-M.x*G), -K.moveTo(J.x,J.y)):"arc"==l?(G*=1.3,K.curveTo(ea.x-M.y*G,ea.y+M.x*G,J.x-M.y*G,J.y+M.x*G,J.x,J.y)):(K.moveTo(J.x,J.y),z=!0),G=[J],ea=!0))}else M=null;ea||(G.push(ha),A=ha)}this.addPoints(K,G,W,c,!1,null,z);K.stroke()}};var C=mxGraphView.prototype.getFixedTerminalPoint;mxGraphView.prototype.getFixedTerminalPoint=function(K,S,W,c){return null!=S&&"centerPerimeter"==S.style[mxConstants.STYLE_PERIMETER]?new mxPoint(S.getCenterX(),S.getCenterY()):C.apply(this,arguments)};var H=mxGraphView.prototype.updateFloatingTerminalPoint; +2)/2+this.strokewidth,l=mxUtils.getValue(this.style,"jumpStyle","none"),z=!0,A=null,B=null,G=[],M=null;K.begin();for(var Q=0;Qf*f&&0f*f&&(ea=new mxPoint(fa.x-M.x,fa.y-M.y),J=new mxPoint(fa.x+M.x,fa.y+M.y),G.push(ea),this.addPoints(K,G,W,c,!1,null,z),G=0>Math.round(M.x)||0==Math.round(M.x)&&0>=Math.round(M.y)?1:-1,z=!1,"sharp"==l?(K.lineTo(ea.x-M.y*G,ea.y+M.x*G),K.lineTo(J.x-M.y*G,J.y+M.x*G),K.lineTo(J.x,J.y)):"line"==l?(K.moveTo(ea.x+M.y*G,ea.y-M.x*G),K.lineTo(ea.x-M.y*G,ea.y+M.x*G),K.moveTo(J.x-M.y*G,J.y+M.x*G),K.lineTo(J.x+M.y*G,J.y-M.x*G), +K.moveTo(J.x,J.y)):"arc"==l?(G*=1.3,K.curveTo(ea.x-M.y*G,ea.y+M.x*G,J.x-M.y*G,J.y+M.x*G,J.x,J.y)):(K.moveTo(J.x,J.y),z=!0),G=[J],ea=!0))}else M=null;ea||(G.push(fa),A=fa)}this.addPoints(K,G,W,c,!1,null,z);K.stroke()}};var C=mxGraphView.prototype.getFixedTerminalPoint;mxGraphView.prototype.getFixedTerminalPoint=function(K,S,W,c){return null!=S&&"centerPerimeter"==S.style[mxConstants.STYLE_PERIMETER]?new mxPoint(S.getCenterX(),S.getCenterY()):C.apply(this,arguments)};var H=mxGraphView.prototype.updateFloatingTerminalPoint; mxGraphView.prototype.updateFloatingTerminalPoint=function(K,S,W,c){if(null==S||null==K||"1"!=S.style.snapToPoint&&"1"!=K.style.snapToPoint)H.apply(this,arguments);else{S=this.getTerminalPort(K,S,c);var f=this.getNextPoint(K,W,c),l=this.graph.isOrthogonal(K),z=mxUtils.toRadians(Number(S.style[mxConstants.STYLE_ROTATION]||"0")),A=new mxPoint(S.getCenterX(),S.getCenterY());if(0!=z){var B=Math.cos(-z),G=Math.sin(-z);f=mxUtils.getRotatedPoint(f,B,G,A)}B=parseFloat(K.style[mxConstants.STYLE_PERIMETER_SPACING]|| 0);B+=parseFloat(K.style[c?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0);f=this.getPerimeterPoint(S,f,0==z&&l,B);0!=z&&(B=Math.cos(z),G=Math.sin(z),f=mxUtils.getRotatedPoint(f,B,G,A));K.setAbsoluteTerminalPoint(this.snapToAnchorPoint(K,S,W,c,f),c)}};mxGraphView.prototype.snapToAnchorPoint=function(K,S,W,c,f){if(null!=S&&null!=K){K=this.graph.getAllConnectionConstraints(S);c=W=null;if(null!=K)for(var l=0;lfa&&D++;E++}x.lengthha&&D++;E++}x.lengthE?"#FFFFFF":"#000000"),d.begin(),d.moveTo(0,0),d.lineTo(p-D,0),d.lineTo(p,D), -d.lineTo(D,D),d.close(),d.fill()),0!=fa&&(d.setFillAlpha(Math.abs(fa)),d.setFillColor(0>fa?"#FFFFFF":"#000000"),d.begin(),d.moveTo(0,0),d.lineTo(D,D),d.lineTo(D,x),d.lineTo(0,x-D),d.close(),d.fill()),d.begin(),d.moveTo(D,x),d.lineTo(D,D),d.lineTo(0,0),d.moveTo(D,D),d.lineTo(p,D),d.end(),d.stroke())};n.prototype.getLabelMargins=function(d){return mxUtils.getValue(this.style,"boundedLbl",!1)?(d=parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale,new mxRectangle(d,d,0,0)):null};mxCellRenderer.registerShape("cube", +parseFloat(mxUtils.getValue(this.style,"darkOpacity",this.darkOpacity)))),ha=Math.max(-1,Math.min(1,parseFloat(mxUtils.getValue(this.style,"darkOpacity2",this.darkOpacity2))));d.translate(m,y);d.begin();d.moveTo(0,0);d.lineTo(p-D,0);d.lineTo(p,D);d.lineTo(p,x);d.lineTo(D,x);d.lineTo(0,x-D);d.lineTo(0,0);d.close();d.end();d.fillAndStroke();this.outline||(d.setShadow(!1),0!=E&&(d.setFillAlpha(Math.abs(E)),d.setFillColor(0>E?"#FFFFFF":"#000000"),d.begin(),d.moveTo(0,0),d.lineTo(p-D,0),d.lineTo(p,D), +d.lineTo(D,D),d.close(),d.fill()),0!=ha&&(d.setFillAlpha(Math.abs(ha)),d.setFillColor(0>ha?"#FFFFFF":"#000000"),d.begin(),d.moveTo(0,0),d.lineTo(D,D),d.lineTo(D,x),d.lineTo(0,x-D),d.close(),d.fill()),d.begin(),d.moveTo(D,x),d.lineTo(D,D),d.lineTo(0,0),d.moveTo(D,D),d.lineTo(p,D),d.end(),d.stroke())};n.prototype.getLabelMargins=function(d){return mxUtils.getValue(this.style,"boundedLbl",!1)?(d=parseFloat(mxUtils.getValue(this.style,"size",this.size))*this.scale,new mxRectangle(d,d,0,0)):null};mxCellRenderer.registerShape("cube", n);var cb=Math.tan(mxUtils.toRadians(30)),$a=(.5-cb)/2;mxCellRenderer.registerShape("isoRectangle",C);mxUtils.extend(v,mxConnector);v.prototype.paintEdgeShape=function(d,m){var y=this.createMarker(d,m,!0),p=this.createMarker(d,m,!1);d.setDashed(!1);mxPolyline.prototype.paintEdgeShape.apply(this,arguments);null!=this.isDashed&&d.setDashed(this.isDashed,null!=this.style?1==mxUtils.getValue(this.style,mxConstants.STYLE_FIX_DASH,!1):!1);d.setShadow(!1);d.setStrokeColor(this.fill);mxPolyline.prototype.paintEdgeShape.apply(this, arguments);d.setStrokeColor(this.stroke);d.setFillColor(this.stroke);d.setDashed(!1);null!=y&&y();null!=p&&p()};mxCellRenderer.registerShape("wire",v);mxUtils.extend(q,mxCylinder);q.prototype.size=6;q.prototype.paintVertexShape=function(d,m,y,p,x){d.setFillColor(this.stroke);var D=Math.max(0,parseFloat(mxUtils.getValue(this.style,"size",this.size))-2)+2*this.strokewidth;d.ellipse(m+.5*(p-D),y+.5*(x-D),D,D);d.fill();d.setFillColor(mxConstants.NONE);d.rect(m,y,p,x);d.fill()};mxCellRenderer.registerShape("waypoint", q);mxUtils.extend(C,mxActor);C.prototype.size=20;C.prototype.redrawPath=function(d,m,y,p,x){m=Math.min(p,x/cb);d.translate((p-m)/2,(x-m)/2+m/4);d.moveTo(0,.25*m);d.lineTo(.5*m,m*$a);d.lineTo(m,.25*m);d.lineTo(.5*m,(.5-$a)*m);d.lineTo(0,.25*m);d.close();d.end()};mxCellRenderer.registerShape("isoRectangle",C);mxUtils.extend(H,mxCylinder);H.prototype.size=20;H.prototype.redrawPath=function(d,m,y,p,x,D){m=Math.min(p,x/(.5+cb));D?(d.moveTo(0,.25*m),d.lineTo(.5*m,(.5-$a)*m),d.lineTo(m,.25*m),d.moveTo(.5* @@ -2743,8 +2743,8 @@ d.begin(),d.moveTo(p-D,0),d.lineTo(p-D,D),d.lineTo(p,D),d.close(),d.fill()),d.be S);mxUtils.extend(W,mxShape);W.prototype.size=15;W.prototype.paintVertexShape=function(d,m,y,p,x){var D=Math.max(0,Math.min(.5*x,parseFloat(mxUtils.getValue(this.style,"size",this.size))));d.translate(m,y);0==D?(d.rect(0,0,p,x),d.fillAndStroke()):(d.begin(),d.moveTo(0,D),d.arcTo(.5*p,D,0,0,1,.5*p,0),d.arcTo(.5*p,D,0,0,1,p,D),d.lineTo(p,x-D),d.arcTo(.5*p,D,0,0,1,.5*p,x),d.arcTo(.5*p,D,0,0,1,0,x-D),d.close(),d.fillAndStroke(),d.setShadow(!1),d.begin(),d.moveTo(p,D),d.arcTo(.5*p,D,0,0,1,.5*p,2*D),d.arcTo(.5* p,D,0,0,1,0,D),d.stroke())};mxCellRenderer.registerShape("cylinder2",W);mxUtils.extend(c,mxCylinder);c.prototype.size=15;c.prototype.paintVertexShape=function(d,m,y,p,x){var D=Math.max(0,Math.min(.5*x,parseFloat(mxUtils.getValue(this.style,"size",this.size)))),E=mxUtils.getValue(this.style,"lid",!0);d.translate(m,y);0==D?(d.rect(0,0,p,x),d.fillAndStroke()):(d.begin(),E?(d.moveTo(0,D),d.arcTo(.5*p,D,0,0,1,.5*p,0),d.arcTo(.5*p,D,0,0,1,p,D)):(d.moveTo(0,0),d.arcTo(.5*p,D,0,0,0,.5*p,D),d.arcTo(.5*p,D, 0,0,0,p,0)),d.lineTo(p,x-D),d.arcTo(.5*p,D,0,0,1,.5*p,x),d.arcTo(.5*p,D,0,0,1,0,x-D),d.close(),d.fillAndStroke(),d.setShadow(!1),E&&(d.begin(),d.moveTo(p,D),d.arcTo(.5*p,D,0,0,1,.5*p,2*D),d.arcTo(.5*p,D,0,0,1,0,D),d.stroke()))};mxCellRenderer.registerShape("cylinder3",c);mxUtils.extend(f,mxActor);f.prototype.redrawPath=function(d,m,y,p,x){d.moveTo(0,0);d.quadTo(p/2,.5*x,p,0);d.quadTo(.5*p,x/2,p,x);d.quadTo(p/2,.5*x,0,x);d.quadTo(.5*p,x/2,0,0);d.end()};mxCellRenderer.registerShape("switch",f);mxUtils.extend(l, -mxCylinder);l.prototype.tabWidth=60;l.prototype.tabHeight=20;l.prototype.tabPosition="right";l.prototype.arcSize=.1;l.prototype.paintVertexShape=function(d,m,y,p,x){d.translate(m,y);m=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth))));y=Math.max(0,Math.min(x,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));var D=mxUtils.getValue(this.style,"tabPosition",this.tabPosition),E=mxUtils.getValue(this.style,"rounded",!1),fa=mxUtils.getValue(this.style, -"absoluteArcSize",!1),L=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));fa||(L*=Math.min(p,x));L=Math.min(L,.5*p,.5*(x-y));m=Math.max(m,L);m=Math.min(p-L,m);E||(L=0);d.begin();"left"==D?(d.moveTo(Math.max(L,0),y),d.lineTo(Math.max(L,0),0),d.lineTo(m,0),d.lineTo(m,y)):(d.moveTo(p-m,y),d.lineTo(p-m,0),d.lineTo(p-Math.max(L,0),0),d.lineTo(p-Math.max(L,0),y));E?(d.moveTo(0,L+y),d.arcTo(L,L,0,0,1,L,y),d.lineTo(p-L,y),d.arcTo(L,L,0,0,1,p,L+y),d.lineTo(p,x-L),d.arcTo(L,L,0,0,1,p-L,x),d.lineTo(L, +mxCylinder);l.prototype.tabWidth=60;l.prototype.tabHeight=20;l.prototype.tabPosition="right";l.prototype.arcSize=.1;l.prototype.paintVertexShape=function(d,m,y,p,x){d.translate(m,y);m=Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style,"tabWidth",this.tabWidth))));y=Math.max(0,Math.min(x,parseFloat(mxUtils.getValue(this.style,"tabHeight",this.tabHeight))));var D=mxUtils.getValue(this.style,"tabPosition",this.tabPosition),E=mxUtils.getValue(this.style,"rounded",!1),ha=mxUtils.getValue(this.style, +"absoluteArcSize",!1),L=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));ha||(L*=Math.min(p,x));L=Math.min(L,.5*p,.5*(x-y));m=Math.max(m,L);m=Math.min(p-L,m);E||(L=0);d.begin();"left"==D?(d.moveTo(Math.max(L,0),y),d.lineTo(Math.max(L,0),0),d.lineTo(m,0),d.lineTo(m,y)):(d.moveTo(p-m,y),d.lineTo(p-m,0),d.lineTo(p-Math.max(L,0),0),d.lineTo(p-Math.max(L,0),y));E?(d.moveTo(0,L+y),d.arcTo(L,L,0,0,1,L,y),d.lineTo(p-L,y),d.arcTo(L,L,0,0,1,p,L+y),d.lineTo(p,x-L),d.arcTo(L,L,0,0,1,p-L,x),d.lineTo(L, x),d.arcTo(L,L,0,0,1,0,x-L)):(d.moveTo(0,y),d.lineTo(p,y),d.lineTo(p,x),d.lineTo(0,x));d.close();d.fillAndStroke();d.setShadow(!1);"triangle"==mxUtils.getValue(this.style,"folderSymbol",null)&&(d.begin(),d.moveTo(p-30,y+20),d.lineTo(p-20,y+10),d.lineTo(p-10,y+20),d.close(),d.stroke())};mxCellRenderer.registerShape("folder",l);l.prototype.getLabelMargins=function(d){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var m=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;if(mxUtils.getValue(this.style, "labelInHeader",!1)){var y=mxUtils.getValue(this.style,"tabWidth",15)*this.scale;m=mxUtils.getValue(this.style,"tabHeight",15)*this.scale;var p=mxUtils.getValue(this.style,"rounded",!1),x=mxUtils.getValue(this.style,"absoluteArcSize",!1),D=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));x||(D*=Math.min(d.width,d.height));D=Math.min(D,.5*d.width,.5*(d.height-m));p||(D=0);return"left"==mxUtils.getValue(this.style,"tabPosition",this.tabPosition)?new mxRectangle(D,0,Math.min(d.width,d.width- y),Math.min(d.height,d.height-m)):new mxRectangle(Math.min(d.width,d.width-y),0,D,Math.min(d.height,d.height-m))}return new mxRectangle(0,Math.min(d.height,m),0,0)}return null};mxUtils.extend(z,mxCylinder);z.prototype.arcSize=.1;z.prototype.paintVertexShape=function(d,m,y,p,x){d.translate(m,y);var D=mxUtils.getValue(this.style,"rounded",!1),E=mxUtils.getValue(this.style,"absoluteArcSize",!1);m=parseFloat(mxUtils.getValue(this.style,"arcSize",this.arcSize));y=mxUtils.getValue(this.style,"umlStateConnection", @@ -2760,10 +2760,10 @@ function(d){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var m=mxUtils.getVa this.scale,0,0,0):null};K.prototype.getLabelMargins=function(d){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var m=mxUtils.getValue(this.style,"size",15);return new mxRectangle(0,Math.min(d.height*this.scale,m*this.scale),0,Math.max(0,m*this.scale))}return null};mxUtils.extend(M,mxActor);M.prototype.size=.2;M.prototype.fixedSize=20;M.prototype.isRoundable=function(){return!0};M.prototype.redrawPath=function(d,m,y,p,x){m="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(p,parseFloat(mxUtils.getValue(this.style, "size",this.fixedSize)))):p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));y=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(d,[new mxPoint(0,x),new mxPoint(m,0),new mxPoint(p,0),new mxPoint(p-m,x)],this.isRounded,y,!0);d.end()};mxCellRenderer.registerShape("parallelogram",M);mxUtils.extend(Q,mxActor);Q.prototype.size=.2;Q.prototype.fixedSize=20;Q.prototype.isRoundable=function(){return!0};Q.prototype.redrawPath=function(d, m,y,p,x){m="0"!=mxUtils.getValue(this.style,"fixedSize","0")?Math.max(0,Math.min(.5*p,parseFloat(mxUtils.getValue(this.style,"size",this.fixedSize)))):p*Math.max(0,Math.min(.5,parseFloat(mxUtils.getValue(this.style,"size",this.size))));y=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(d,[new mxPoint(0,x),new mxPoint(m,0),new mxPoint(p-m,0),new mxPoint(p,x)],this.isRounded,y,!0)};mxCellRenderer.registerShape("trapezoid",Q);mxUtils.extend(J,mxActor); -J.prototype.size=.5;J.prototype.redrawPath=function(d,m,y,p,x){d.setFillColor(null);m=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));y=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(d,[new mxPoint(p,0),new mxPoint(m,0),new mxPoint(m,x/2),new mxPoint(0,x/2),new mxPoint(m,x/2),new mxPoint(m,x),new mxPoint(p,x)],this.isRounded,y,!1);d.end()};mxCellRenderer.registerShape("curlyBracket",J);mxUtils.extend(ha,mxActor); -ha.prototype.redrawPath=function(d,m,y,p,x){d.setStrokeWidth(1);d.setFillColor(this.stroke);m=p/5;d.rect(0,0,m,x);d.fillAndStroke();d.rect(2*m,0,m,x);d.fillAndStroke();d.rect(4*m,0,m,x);d.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",ha);ea.prototype.moveTo=function(d,m){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=d;this.lastY=m;this.firstX=d;this.firstY=m};ea.prototype.close=function(){null!=this.firstX&&null!=this.firstY&&(this.lineTo(this.firstX,this.firstY),this.originalClose.apply(this.canvas, +J.prototype.size=.5;J.prototype.redrawPath=function(d,m,y,p,x){d.setFillColor(null);m=p*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"size",this.size))));y=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2;this.addPoints(d,[new mxPoint(p,0),new mxPoint(m,0),new mxPoint(m,x/2),new mxPoint(0,x/2),new mxPoint(m,x/2),new mxPoint(m,x),new mxPoint(p,x)],this.isRounded,y,!1);d.end()};mxCellRenderer.registerShape("curlyBracket",J);mxUtils.extend(fa,mxActor); +fa.prototype.redrawPath=function(d,m,y,p,x){d.setStrokeWidth(1);d.setFillColor(this.stroke);m=p/5;d.rect(0,0,m,x);d.fillAndStroke();d.rect(2*m,0,m,x);d.fillAndStroke();d.rect(4*m,0,m,x);d.fillAndStroke()};mxCellRenderer.registerShape("parallelMarker",fa);ea.prototype.moveTo=function(d,m){this.originalMoveTo.apply(this.canvas,arguments);this.lastX=d;this.lastY=m;this.firstX=d;this.firstY=m};ea.prototype.close=function(){null!=this.firstX&&null!=this.firstY&&(this.lineTo(this.firstX,this.firstY),this.originalClose.apply(this.canvas, arguments));this.originalClose.apply(this.canvas,arguments)};ea.prototype.quadTo=function(d,m,y,p){this.originalQuadTo.apply(this.canvas,arguments);this.lastX=y;this.lastY=p};ea.prototype.curveTo=function(d,m,y,p,x,D){this.originalCurveTo.apply(this.canvas,arguments);this.lastX=x;this.lastY=D};ea.prototype.arcTo=function(d,m,y,p,x,D,E){this.originalArcTo.apply(this.canvas,arguments);this.lastX=D;this.lastY=E};ea.prototype.lineTo=function(d,m){if(null!=this.lastX&&null!=this.lastY){var y=function(na){return"number"=== -typeof na?na?0>na?-1:1:na===na?0:NaN:NaN},p=Math.abs(d-this.lastX),x=Math.abs(m-this.lastY),D=Math.sqrt(p*p+x*x);if(2>D){this.originalLineTo.apply(this.canvas,arguments);this.lastX=d;this.lastY=m;return}var E=Math.round(D/10),fa=this.defaultVariation;5>E&&(E=5,fa/=3);var L=y(d-this.lastX)*p/E;y=y(m-this.lastY)*x/E;p/=D;x/=D;for(D=0;Dna?-1:1:na===na?0:NaN:NaN},p=Math.abs(d-this.lastX),x=Math.abs(m-this.lastY),D=Math.sqrt(p*p+x*x);if(2>D){this.originalLineTo.apply(this.canvas,arguments);this.lastX=d;this.lastY=m;return}var E=Math.round(D/10),ha=this.defaultVariation;5>E&&(E=5,ha/=3);var L=y(d-this.lastX)*p/E;y=y(m-this.lastY)*x/E;p/=D;x/=D;for(D=0;DE+L?d.y=y.y:d.x=y.x);return mxUtils.getPerimeterPoint(fa,d,y)};mxStyleRegistry.putValue("parallelogramPerimeter",mxPerimeter.ParallelogramPerimeter);mxPerimeter.TrapezoidPerimeter=function(d,m,y,p){var x="0"!=mxUtils.getValue(m.style,"fixedSize","0"),D=x?Q.prototype.fixedSize:Q.prototype.size;null!=m&&(D=mxUtils.getValue(m.style,"size",D));x&&(D*=m.view.scale);var E=d.x,fa=d.y,L=d.width,wa=d.height;m=null!=m?mxUtils.getValue(m.style,mxConstants.STYLE_DIRECTION, -mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;m==mxConstants.DIRECTION_EAST?(x=x?Math.max(0,Math.min(.5*L,D)):L*Math.max(0,Math.min(1,D)),fa=[new mxPoint(E+x,fa),new mxPoint(E+L-x,fa),new mxPoint(E+L,fa+wa),new mxPoint(E,fa+wa),new mxPoint(E+x,fa)]):m==mxConstants.DIRECTION_WEST?(x=x?Math.max(0,Math.min(L,D)):L*Math.max(0,Math.min(1,D)),fa=[new mxPoint(E,fa),new mxPoint(E+L,fa),new mxPoint(E+L-x,fa+wa),new mxPoint(E+x,fa+wa),new mxPoint(E,fa)]):m==mxConstants.DIRECTION_NORTH?(x=x?Math.max(0, -Math.min(wa,D)):wa*Math.max(0,Math.min(1,D)),fa=[new mxPoint(E,fa+x),new mxPoint(E+L,fa),new mxPoint(E+L,fa+wa),new mxPoint(E,fa+wa-x),new mxPoint(E,fa+x)]):(x=x?Math.max(0,Math.min(wa,D)):wa*Math.max(0,Math.min(1,D)),fa=[new mxPoint(E,fa),new mxPoint(E+L,fa+x),new mxPoint(E+L,fa+wa-x),new mxPoint(E,fa+wa),new mxPoint(E,fa)]);wa=d.getCenterX();d=d.getCenterY();d=new mxPoint(wa,d);p&&(y.xE+L?d.y=y.y:d.x=y.x);return mxUtils.getPerimeterPoint(fa,d,y)};mxStyleRegistry.putValue("trapezoidPerimeter", -mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(d,m,y,p){var x="0"!=mxUtils.getValue(m.style,"fixedSize","0"),D=x?ma.prototype.fixedSize:ma.prototype.size;null!=m&&(D=mxUtils.getValue(m.style,"size",D));x&&(D*=m.view.scale);var E=d.x,fa=d.y,L=d.width,wa=d.height,na=d.getCenterX();d=d.getCenterY();m=null!=m?mxUtils.getValue(m.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;m==mxConstants.DIRECTION_EAST?(x=x?Math.max(0,Math.min(L,D)):L*Math.max(0, -Math.min(1,D)),fa=[new mxPoint(E,fa),new mxPoint(E+L-x,fa),new mxPoint(E+L,d),new mxPoint(E+L-x,fa+wa),new mxPoint(E,fa+wa),new mxPoint(E+x,d),new mxPoint(E,fa)]):m==mxConstants.DIRECTION_WEST?(x=x?Math.max(0,Math.min(L,D)):L*Math.max(0,Math.min(1,D)),fa=[new mxPoint(E+x,fa),new mxPoint(E+L,fa),new mxPoint(E+L-x,d),new mxPoint(E+L,fa+wa),new mxPoint(E+x,fa+wa),new mxPoint(E,d),new mxPoint(E+x,fa)]):m==mxConstants.DIRECTION_NORTH?(x=x?Math.max(0,Math.min(wa,D)):wa*Math.max(0,Math.min(1,D)),fa=[new mxPoint(E, -fa+x),new mxPoint(na,fa),new mxPoint(E+L,fa+x),new mxPoint(E+L,fa+wa),new mxPoint(na,fa+wa-x),new mxPoint(E,fa+wa),new mxPoint(E,fa+x)]):(x=x?Math.max(0,Math.min(wa,D)):wa*Math.max(0,Math.min(1,D)),fa=[new mxPoint(E,fa),new mxPoint(na,fa+x),new mxPoint(E+L,fa),new mxPoint(E+L,fa+wa-x),new mxPoint(na,fa+wa),new mxPoint(E,fa+wa-x),new mxPoint(E,fa)]);na=new mxPoint(na,d);p&&(y.xE+L?na.y=y.y:na.x=y.x);return mxUtils.getPerimeterPoint(fa,na,y)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter); -mxPerimeter.HexagonPerimeter2=function(d,m,y,p){var x="0"!=mxUtils.getValue(m.style,"fixedSize","0"),D=x?aa.prototype.fixedSize:aa.prototype.size;null!=m&&(D=mxUtils.getValue(m.style,"size",D));x&&(D*=m.view.scale);var E=d.x,fa=d.y,L=d.width,wa=d.height,na=d.getCenterX();d=d.getCenterY();m=null!=m?mxUtils.getValue(m.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;m==mxConstants.DIRECTION_NORTH||m==mxConstants.DIRECTION_SOUTH?(x=x?Math.max(0,Math.min(wa,D)): -wa*Math.max(0,Math.min(1,D)),fa=[new mxPoint(na,fa),new mxPoint(E+L,fa+x),new mxPoint(E+L,fa+wa-x),new mxPoint(na,fa+wa),new mxPoint(E,fa+wa-x),new mxPoint(E,fa+x),new mxPoint(na,fa)]):(x=x?Math.max(0,Math.min(L,D)):L*Math.max(0,Math.min(1,D)),fa=[new mxPoint(E+x,fa),new mxPoint(E+L-x,fa),new mxPoint(E+L,d),new mxPoint(E+L-x,fa+wa),new mxPoint(E+x,fa+wa),new mxPoint(E,d),new mxPoint(E+x,fa)]);na=new mxPoint(na,d);p&&(y.xE+L?na.y=y.y:na.x=y.x);return mxUtils.getPerimeterPoint(fa,na,y)};mxStyleRegistry.putValue("hexagonPerimeter2", +new mxRectangle(0,0,0,Math.max(0,Math.min(d.height,parseFloat(mxUtils.getValue(m.style,"size",ka.prototype.size))*m.view.scale))),m.style),m,y,p)};mxStyleRegistry.putValue("calloutPerimeter",mxPerimeter.CalloutPerimeter);mxPerimeter.ParallelogramPerimeter=function(d,m,y,p){var x="0"!=mxUtils.getValue(m.style,"fixedSize","0"),D=x?M.prototype.fixedSize:M.prototype.size;null!=m&&(D=mxUtils.getValue(m.style,"size",D));x&&(D*=m.view.scale);var E=d.x,ha=d.y,L=d.width,wa=d.height;m=null!=m?mxUtils.getValue(m.style, +mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;m==mxConstants.DIRECTION_NORTH||m==mxConstants.DIRECTION_SOUTH?(x=x?Math.max(0,Math.min(wa,D)):wa*Math.max(0,Math.min(1,D)),ha=[new mxPoint(E,ha),new mxPoint(E+L,ha+x),new mxPoint(E+L,ha+wa),new mxPoint(E,ha+wa-x),new mxPoint(E,ha)]):(x=x?Math.max(0,Math.min(.5*L,D)):L*Math.max(0,Math.min(1,D)),ha=[new mxPoint(E+x,ha),new mxPoint(E+L,ha),new mxPoint(E+L-x,ha+wa),new mxPoint(E,ha+wa),new mxPoint(E+x,ha)]);wa=d.getCenterX(); +d=d.getCenterY();d=new mxPoint(wa,d);p&&(y.xE+L?d.y=y.y:d.x=y.x);return mxUtils.getPerimeterPoint(ha,d,y)};mxStyleRegistry.putValue("parallelogramPerimeter",mxPerimeter.ParallelogramPerimeter);mxPerimeter.TrapezoidPerimeter=function(d,m,y,p){var x="0"!=mxUtils.getValue(m.style,"fixedSize","0"),D=x?Q.prototype.fixedSize:Q.prototype.size;null!=m&&(D=mxUtils.getValue(m.style,"size",D));x&&(D*=m.view.scale);var E=d.x,ha=d.y,L=d.width,wa=d.height;m=null!=m?mxUtils.getValue(m.style,mxConstants.STYLE_DIRECTION, +mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;m==mxConstants.DIRECTION_EAST?(x=x?Math.max(0,Math.min(.5*L,D)):L*Math.max(0,Math.min(1,D)),ha=[new mxPoint(E+x,ha),new mxPoint(E+L-x,ha),new mxPoint(E+L,ha+wa),new mxPoint(E,ha+wa),new mxPoint(E+x,ha)]):m==mxConstants.DIRECTION_WEST?(x=x?Math.max(0,Math.min(L,D)):L*Math.max(0,Math.min(1,D)),ha=[new mxPoint(E,ha),new mxPoint(E+L,ha),new mxPoint(E+L-x,ha+wa),new mxPoint(E+x,ha+wa),new mxPoint(E,ha)]):m==mxConstants.DIRECTION_NORTH?(x=x?Math.max(0, +Math.min(wa,D)):wa*Math.max(0,Math.min(1,D)),ha=[new mxPoint(E,ha+x),new mxPoint(E+L,ha),new mxPoint(E+L,ha+wa),new mxPoint(E,ha+wa-x),new mxPoint(E,ha+x)]):(x=x?Math.max(0,Math.min(wa,D)):wa*Math.max(0,Math.min(1,D)),ha=[new mxPoint(E,ha),new mxPoint(E+L,ha+x),new mxPoint(E+L,ha+wa-x),new mxPoint(E,ha+wa),new mxPoint(E,ha)]);wa=d.getCenterX();d=d.getCenterY();d=new mxPoint(wa,d);p&&(y.xE+L?d.y=y.y:d.x=y.x);return mxUtils.getPerimeterPoint(ha,d,y)};mxStyleRegistry.putValue("trapezoidPerimeter", +mxPerimeter.TrapezoidPerimeter);mxPerimeter.StepPerimeter=function(d,m,y,p){var x="0"!=mxUtils.getValue(m.style,"fixedSize","0"),D=x?ma.prototype.fixedSize:ma.prototype.size;null!=m&&(D=mxUtils.getValue(m.style,"size",D));x&&(D*=m.view.scale);var E=d.x,ha=d.y,L=d.width,wa=d.height,na=d.getCenterX();d=d.getCenterY();m=null!=m?mxUtils.getValue(m.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;m==mxConstants.DIRECTION_EAST?(x=x?Math.max(0,Math.min(L,D)):L*Math.max(0, +Math.min(1,D)),ha=[new mxPoint(E,ha),new mxPoint(E+L-x,ha),new mxPoint(E+L,d),new mxPoint(E+L-x,ha+wa),new mxPoint(E,ha+wa),new mxPoint(E+x,d),new mxPoint(E,ha)]):m==mxConstants.DIRECTION_WEST?(x=x?Math.max(0,Math.min(L,D)):L*Math.max(0,Math.min(1,D)),ha=[new mxPoint(E+x,ha),new mxPoint(E+L,ha),new mxPoint(E+L-x,d),new mxPoint(E+L,ha+wa),new mxPoint(E+x,ha+wa),new mxPoint(E,d),new mxPoint(E+x,ha)]):m==mxConstants.DIRECTION_NORTH?(x=x?Math.max(0,Math.min(wa,D)):wa*Math.max(0,Math.min(1,D)),ha=[new mxPoint(E, +ha+x),new mxPoint(na,ha),new mxPoint(E+L,ha+x),new mxPoint(E+L,ha+wa),new mxPoint(na,ha+wa-x),new mxPoint(E,ha+wa),new mxPoint(E,ha+x)]):(x=x?Math.max(0,Math.min(wa,D)):wa*Math.max(0,Math.min(1,D)),ha=[new mxPoint(E,ha),new mxPoint(na,ha+x),new mxPoint(E+L,ha),new mxPoint(E+L,ha+wa-x),new mxPoint(na,ha+wa),new mxPoint(E,ha+wa-x),new mxPoint(E,ha)]);na=new mxPoint(na,d);p&&(y.xE+L?na.y=y.y:na.x=y.x);return mxUtils.getPerimeterPoint(ha,na,y)};mxStyleRegistry.putValue("stepPerimeter",mxPerimeter.StepPerimeter); +mxPerimeter.HexagonPerimeter2=function(d,m,y,p){var x="0"!=mxUtils.getValue(m.style,"fixedSize","0"),D=x?aa.prototype.fixedSize:aa.prototype.size;null!=m&&(D=mxUtils.getValue(m.style,"size",D));x&&(D*=m.view.scale);var E=d.x,ha=d.y,L=d.width,wa=d.height,na=d.getCenterX();d=d.getCenterY();m=null!=m?mxUtils.getValue(m.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_EAST):mxConstants.DIRECTION_EAST;m==mxConstants.DIRECTION_NORTH||m==mxConstants.DIRECTION_SOUTH?(x=x?Math.max(0,Math.min(wa,D)): +wa*Math.max(0,Math.min(1,D)),ha=[new mxPoint(na,ha),new mxPoint(E+L,ha+x),new mxPoint(E+L,ha+wa-x),new mxPoint(na,ha+wa),new mxPoint(E,ha+wa-x),new mxPoint(E,ha+x),new mxPoint(na,ha)]):(x=x?Math.max(0,Math.min(L,D)):L*Math.max(0,Math.min(1,D)),ha=[new mxPoint(E+x,ha),new mxPoint(E+L-x,ha),new mxPoint(E+L,d),new mxPoint(E+L-x,ha+wa),new mxPoint(E+x,ha+wa),new mxPoint(E,d),new mxPoint(E+x,ha)]);na=new mxPoint(na,d);p&&(y.xE+L?na.y=y.y:na.x=y.x);return mxUtils.getPerimeterPoint(ha,na,y)};mxStyleRegistry.putValue("hexagonPerimeter2", mxPerimeter.HexagonPerimeter2);mxUtils.extend(la,mxShape);la.prototype.size=10;la.prototype.paintBackground=function(d,m,y,p,x){var D=parseFloat(mxUtils.getValue(this.style,"size",this.size));d.translate(m,y);d.ellipse((p-D)/2,0,D,D);d.fillAndStroke();d.begin();d.moveTo(p/2,D);d.lineTo(p/2,x);d.end();d.stroke()};mxCellRenderer.registerShape("lollipop",la);mxUtils.extend(qa,mxShape);qa.prototype.size=10;qa.prototype.inset=2;qa.prototype.paintBackground=function(d,m,y,p,x){var D=parseFloat(mxUtils.getValue(this.style, "size",this.size)),E=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;d.translate(m,y);d.begin();d.moveTo(p/2,D+E);d.lineTo(p/2,x);d.end();d.stroke();d.begin();d.moveTo((p-D)/2-E,D/2);d.quadTo((p-D)/2-E,D+E,p/2,D+E);d.quadTo((p+D)/2+E,D+E,(p+D)/2+E,D/2);d.end();d.stroke()};mxCellRenderer.registerShape("requires",qa);mxUtils.extend(pa,mxShape);pa.prototype.paintBackground=function(d,m,y,p,x){d.translate(m,y);d.begin();d.moveTo(0,0);d.quadTo(p,0,p,x/2);d.quadTo(p,x,0,x); d.end();d.stroke()};mxCellRenderer.registerShape("requiredInterface",pa);mxUtils.extend(ra,mxShape);ra.prototype.inset=2;ra.prototype.paintBackground=function(d,m,y,p,x){var D=parseFloat(mxUtils.getValue(this.style,"inset",this.inset))+this.strokewidth;d.translate(m,y);d.ellipse(0,D,p-2*D,x-2*D);d.fillAndStroke();d.begin();d.moveTo(p/2,0);d.quadTo(p,0,p,x/2);d.quadTo(p,x,p/2,x);d.end();d.stroke()};mxCellRenderer.registerShape("providedRequiredInterface",ra);mxUtils.extend(ua,mxCylinder);ua.prototype.jettyWidth= -20;ua.prototype.jettyHeight=10;ua.prototype.redrawPath=function(d,m,y,p,x,D){var E=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));m=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));y=E/2;E=y+E/2;var fa=Math.min(m,x-m),L=Math.min(fa+2*m,x-m);D?(d.moveTo(y,fa),d.lineTo(E,fa),d.lineTo(E,fa+m),d.lineTo(y,fa+m),d.moveTo(y,L),d.lineTo(E,L),d.lineTo(E,L+m),d.lineTo(y,L+m)):(d.moveTo(y,0),d.lineTo(p,0),d.lineTo(p,x),d.lineTo(y,x),d.lineTo(y,L+m),d.lineTo(0,L+ -m),d.lineTo(0,L),d.lineTo(y,L),d.lineTo(y,fa+m),d.lineTo(0,fa+m),d.lineTo(0,fa),d.lineTo(y,fa),d.close());d.end()};mxCellRenderer.registerShape("module",ua);mxUtils.extend(Ba,mxCylinder);Ba.prototype.jettyWidth=32;Ba.prototype.jettyHeight=12;Ba.prototype.redrawPath=function(d,m,y,p,x,D){var E=parseFloat(mxUtils.getValue(this.style,"jettyWidth",this.jettyWidth));m=parseFloat(mxUtils.getValue(this.style,"jettyHeight",this.jettyHeight));y=E/2;E=y+E/2;var fa=.3*x-m/2,L=.7*x-m/2;D?(d.moveTo(y,fa),d.lineTo(E, -fa),d.lineTo(E,fa+m),d.lineTo(y,fa+m),d.moveTo(y,L),d.lineTo(E,L),d.lineTo(E,L+m),d.lineTo(y,L+m)):(d.moveTo(y,0),d.lineTo(p,0),d.lineTo(p,x),d.lineTo(y,x),d.lineTo(y,L+m),d.lineTo(0,L+m),d.lineTo(0,L),d.lineTo(y,L),d.lineTo(y,fa+m),d.lineTo(0,fa+m),d.lineTo(0,fa),d.lineTo(y,fa),d.close());d.end()};mxCellRenderer.registerShape("component",Ba);mxUtils.extend(ya,mxRectangleShape);ya.prototype.paintForeground=function(d,m,y,p,x){var D=p/2,E=x/2,fa=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE, -mxConstants.LINE_ARCSIZE)/2;d.begin();this.addPoints(d,[new mxPoint(m+D,y),new mxPoint(m+p,y+E),new mxPoint(m+D,y+x),new mxPoint(m,y+E)],this.isRounded,fa,!0);d.stroke();mxRectangleShape.prototype.paintForeground.apply(this,arguments)};mxCellRenderer.registerShape("associativeEntity",ya);mxUtils.extend(Aa,mxDoubleEllipse);Aa.prototype.outerStroke=!0;Aa.prototype.paintVertexShape=function(d,m,y,p,x){var D=Math.min(4,Math.min(p/5,x/5));0');Editor.configurationKey=".configuration";Editor.settingsKey=".drawio-config";Editor.defaultCustomLibraries=[];Editor.enableCustomLibraries=!0;Editor.enableUncompressedLibraries=!1;Editor.enableCustomProperties=!0; Editor.enableSimpleTheme=!0;Editor.enableHashObjects=!mxClient.IS_CHROMEAPP&&!EditorUi.isElectronApp&&"1"!=urlParams.embed&&window.top==window.self;Editor.defaultIncludeDiagram=!0;Editor.enableServiceWorker="0"!=urlParams.pwa&&"serviceWorker"in navigator&&("1"==urlParams.offline||/.*\.diagrams\.net$/.test(window.location.hostname)||/.*\.draw\.io$/.test(window.location.hostname));try{Editor.enableServiceWorker&&navigator.serviceWorker}catch(k){Editor.enableServiceWorker=!1}Editor.enableWebFonts="1"!= -urlParams["safe-style-src"]&&!window.mxIsElectron;Editor.enableShadowOption=!mxClient.IS_SF;Editor.enableExportUrl=!0;Editor.enableRealtime=!0;Editor.enableRealtimeCache=!0;Editor.p2pSyncNotify=!1;Editor.compressXml=!0;Editor.defaultCompressed=!1;Editor.oneDriveInlinePicker=null!=window.urlParams&&"0"==window.urlParams.inlinePicker?!1:!0;Editor.globalVars=null;Editor.defaultBorder=5;Editor.enableAnimations=!0;Editor.enableChatGpt=/test\.draw\.io$/.test(window.location.hostname)||/preprod\.diagrams\.net$/.test(window.location.hostname)|| -/app\.diagrams\.net$/.test(window.location.hostname);Editor.gptApiKey=null!=urlParams["gpt-api-key"]?decodeURIComponent(urlParams["gpt-api-key"]):null;Editor.gptModel=null!=urlParams["gpt-model"]?decodeURIComponent(urlParams["gpt-model"]):"gpt-3.5-turbo";Editor.gptUrl=null!=urlParams["gpt-url"]?decodeURIComponent(urlParams["gpt-url"]):"https://api.openai.com/v1/chat/completions";Editor.replaceSvgDataUris=!0;Editor.foreignObjectImages=!0;Editor.svgRasterScale=4;Editor.htmlRasterScale=4;Editor.config= -null;Editor.configVersion=null;Editor.commonProperties=[{name:"enumerate",dispName:"Enumerate",type:"bool",defVal:!1,onChange:function(k){k.refresh()}},{name:"enumerateValue",dispName:"Enumerate Value",type:"string",defVal:"",isVisible:function(k,t){return"1"==mxUtils.getValue(k.style,"enumerate","0")}},{name:"comic",dispName:"Comic",type:"bool",defVal:!1,isVisible:function(k,t){return"1"!=mxUtils.getValue(k.style,"sketch","0")}},{name:"jiggle",dispName:"Jiggle",type:"float",min:0,defVal:1,isVisible:function(k, -t){return"1"==mxUtils.getValue(k.style,"comic","0")||"1"==mxUtils.getValue(k.style,"sketch","1"==urlParams.rough?"1":"0")}},{name:"fillWeight",dispName:"Fill Weight",type:"int",defVal:-1,isVisible:function(k,t){return"1"==mxUtils.getValue(k.style,"sketch","1"==urlParams.rough?"1":"0")&&0'+mxUtils.htmlEntities(k)+""};mxGraphView.prototype.redrawEnumerationState=function(k){var t="1"==mxUtils.getValue(k.style,"enumerate",0);t&&null==k.secondLabel? +return La};var Q=mxCellRenderer.prototype.destroy;mxCellRenderer.prototype.destroy=function(k){Q.apply(this,arguments);null!=k.secondLabel&&(k.secondLabel.destroy(),k.secondLabel=null)};mxCellRenderer.prototype.getShapesForState=function(k){return[k.shape,k.text,k.secondLabel,k.control]};var J=mxGraphView.prototype.resetValidationState;mxGraphView.prototype.resetValidationState=function(){J.apply(this,arguments);this.enumerationState=0};var fa=mxGraphView.prototype.stateValidated;mxGraphView.prototype.stateValidated= +function(k){null!=k.shape&&this.redrawEnumerationState(k);return fa.apply(this,arguments)};mxGraphView.prototype.createEnumerationValue=function(k){k=decodeURIComponent(mxUtils.getValue(k.style,"enumerateValue",""));""==k&&(k=++this.enumerationState);return'
'+mxUtils.htmlEntities(k)+"
"};mxGraphView.prototype.redrawEnumerationState=function(k){var t="1"==mxUtils.getValue(k.style,"enumerate",0);t&&null==k.secondLabel? (k.secondLabel=new mxText("",new mxRectangle,mxConstants.ALIGN_LEFT,mxConstants.ALIGN_BOTTOM),k.secondLabel.size=12,k.secondLabel.state=k,k.secondLabel.dialect=mxConstants.DIALECT_STRICTHTML,this.graph.cellRenderer.initializeLabel(k,k.secondLabel)):t||null==k.secondLabel||(k.secondLabel.destroy(),k.secondLabel=null);t=k.secondLabel;if(null!=t){var I=k.view.scale,R=this.createEnumerationValue(k);k=this.graph.model.isVertex(k.cell)?new mxRectangle(k.x+k.width-4*I,k.y+4*I,0,0):mxRectangle.fromPoint(k.view.getPoint(k)); t.bounds.equals(k)&&t.value==R&&t.scale==I||(t.bounds=k,t.value=R,t.scale=I,t.redraw())}};var ea=Graph.prototype.refresh;Graph.prototype.refresh=function(){this.refreshBackgroundImage();ea.apply(this,arguments)};Graph.prototype.refreshBackgroundImage=function(){null!=this.backgroundImage&&null!=this.backgroundImage.originalSrc&&(this.setBackgroundImage(this.backgroundImage),this.view.validateBackgroundImage())};var T=Graph.prototype.loadStylesheet;Graph.prototype.loadStylesheet=function(){T.apply(this, arguments);this.currentStyle="default-style2"};Graph.prototype.handleCustomLink=function(k,t){"data:action/json,"==k.substring(0,17)&&(k=JSON.parse(k.substring(17)),null!=k.actions&&this.executeCustomActions(k.actions,null,t))};Graph.prototype.executeCustomActions=function(k,t,I){if(this.executingCustomActions)this.stoppingCustomActions=!0,null!=this.pendingWaitThread&&window.clearTimeout(this.pendingWaitThread),null!=this.pendingExecuteNextAction&&this.pendingExecuteNextAction(),this.fireEvent(new mxEventObject("stopExecutingCustomActions")); @@ -3453,7 +3453,7 @@ oa.checked=null!=k.lastPrintInclude?k.lastPrintInclude:Editor.defaultIncludeDiag null!=k&&null!=k.src&&Graph.isPageLink(k.src)&&(k={originalSrc:k.src});this.page.viewState.backgroundImage=k}null!=this.format&&(this.page.viewState.pageFormat=this.format);null!=this.mathEnabled&&(this.page.viewState.mathEnabled=this.mathEnabled);null!=this.shadowVisible&&(this.page.viewState.shadowVisible=this.shadowVisible)}}else aa.apply(this,arguments),null!=this.mathEnabled&&this.mathEnabled!=this.ui.isMathEnabled()&&(this.ui.setMathEnabled(this.mathEnabled),this.mathEnabled=!this.mathEnabled), null!=this.shadowVisible&&this.shadowVisible!=this.ui.editor.graph.shadowVisible&&(this.ui.editor.graph.setShadowVisible(this.shadowVisible),this.shadowVisible=!this.shadowVisible)};Editor.prototype.useCanvasForExport=!1;try{var V=document.createElement("canvas"),da=new Image;da.onload=function(){try{V.getContext("2d").drawImage(da,0,0);var k=V.toDataURL("image/png");Editor.prototype.useCanvasForExport=null!=k&&6
')))}catch(k){}Editor.prototype.useCanvasForExport= !1})();(function(){var b=new mxObjectCodec(new ChangePageSetup,["ui","previousColor","previousImage","previousFormat"]);b.beforeDecode=function(e,g,n){n.ui=e.ui;return g};b.afterDecode=function(e,g,n){n.previousColor=n.color;n.previousImage=n.image;n.previousFormat=n.format;null!=n.foldingEnabled&&(n.foldingEnabled=!n.foldingEnabled);null!=n.mathEnabled&&(n.mathEnabled=!n.mathEnabled);null!=n.shadowVisible&&(n.shadowVisible=!n.shadowVisible);return n};mxCodecRegistry.register(b)})(); -(function(){var b=new mxObjectCodec(new ChangeGridColor,["ui"]);b.beforeDecode=function(e,g,n){n.ui=e.ui;return g};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="24.6.1";EditorUi.compactUi="atlas"!=Editor.currentTheme||window.DRAWIO_PUBLIC_BUILD;Editor.isDarkMode()&&(mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultDarkGridColor);EditorUi.enableLogging="1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&(/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname))&&"https://preprod.diagrams.net/"!=window.location.hostname&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost= +(function(){var b=new mxObjectCodec(new ChangeGridColor,["ui"]);b.beforeDecode=function(e,g,n){n.ui=e.ui;return g};mxCodecRegistry.register(b)})();(function(){EditorUi.VERSION="24.6.2";EditorUi.compactUi="atlas"!=Editor.currentTheme||window.DRAWIO_PUBLIC_BUILD;Editor.isDarkMode()&&(mxGraphView.prototype.gridColor=mxGraphView.prototype.defaultDarkGridColor);EditorUi.enableLogging="1"!=urlParams.stealth&&"1"!=urlParams.lockdown&&(/.*\.draw\.io$/.test(window.location.hostname)||/.*\.diagrams\.net$/.test(window.location.hostname))&&"https://preprod.diagrams.net/"!=window.location.hostname&&"support.draw.io"!=window.location.hostname;EditorUi.drawHost= window.DRAWIO_BASE_URL;EditorUi.lightboxHost=window.DRAWIO_LIGHTBOX_URL;EditorUi.lastErrorMessage=null;EditorUi.ignoredAnonymizedChars="\n\t`~!@#$%^&*()_+{}|:\"<>?-=[];'./,\n\t";EditorUi.templateFile=TEMPLATE_PATH+"/index.xml";EditorUi.cacheUrl=window.REALTIME_URL;null==EditorUi.cacheUrl&&"undefined"!==typeof DrawioFile&&(DrawioFile.SYNC="none");Editor.cacheTimeout=1E4;EditorUi.enablePlantUml=EditorUi.enableLogging;EditorUi.isElectronApp=null!=window&&null!=window.process&&null!=window.process.versions&& null!=window.process.versions.electron;EditorUi.nativeFileSupport=!mxClient.IS_OP&&!EditorUi.isElectronApp&&"1"!=urlParams.extAuth&&"showSaveFilePicker"in window&&"showOpenFilePicker"in window;EditorUi.enableDrafts=!mxClient.IS_CHROMEAPP&&isLocalStorage&&"0"!=urlParams.drafts;EditorUi.scratchpadHelpLink="https://www.drawio.com/doc/faq/scratchpad";EditorUi.enableHtmlEditOption=!0;EditorUi.mermaidDiagramTypes="flowchart classDiagram sequenceDiagram stateDiagram mindmap graph erDiagram requirementDiagram journey gantt pie gitGraph".split(" "); EditorUi.defaultMermaidConfig={theme:"neutral",arrowMarkerAbsolute:!1,flowchart:{htmlLabels:!1},sequence:{diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,mirrorActors:!0,bottomMarginAdj:1,useMaxWidth:!0,rightAngles:!1,showSequenceNumbers:!1},gantt:{titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,leftPadding:75,gridLineStartPadding:35,fontSize:11,fontFamily:'"Open-Sans", "sans-serif"',numberSectionStyles:4,axisFormat:"%Y-%m-%d"}}; @@ -3463,7 +3463,7 @@ function(c){if("1"==urlParams.dev)EditorUi.debug("logEvent",c);else if(EditorUi. "version="+encodeURIComponent(EditorUi.VERSION)+"&url="+encodeURIComponent(window.location.href)+"&data="+encodeURIComponent(c))}catch(l){}};EditorUi.debug=function(){try{if(null!=window.console&&"1"==urlParams.test){for(var c=[(new Date).toISOString()],f=0;f").replace(/</g,"<").replace(/\\"/g,'"').replace(/\n/g,""))}else{var A=mxUtils.parseXml(c),B=this.editor.extractGraphModel(A.documentElement,null!=this.pages||"hidden"==this.diagramContainer.style.visibility);f=null!=B?mxUtils.getXml(B):""}}catch(G){}return f};EditorUi.prototype.validateFileData=function(c){if(null!=c&&0');0<=f&&(c=c.slice(0,f)+''+c.slice(f+23-1,c.length));c=Graph.zapGremlins(c)}return c}; EditorUi.prototype.replaceFileData=function(c,f){EditorUi.debug("EditorUi.replaceFileData",[this],"data",[c],"patches",f);c=this.validateFileData(c);c=null!=c&&0\n':">")+"\n\n"+(null==A?null!=l?""+mxUtils.htmlEntities(l)+"\n":"":"draw.io\n")+(null!=A?'\n":"")+"\n':">")+'\n
\n
'+z+"
\n
\n"+ @@ -3510,21 +3510,21 @@ A+"'\"/>\n":"")+'\n\n\n
MAX_AREA||l.length>MAX_REQUEST_SIZE))throw{message:mxResources.get("drawingTooLarge")};J=J?"1":"0";"pdf"==f&&(null!=ha?(t=ha.from,I=ha.to): +J,fa,ea,void 0,void 0,!B,T,ca,ka,ma)}catch(Z){this.handleError(Z)}}));else{var k=null,t=mxUtils.bind(this,function(O){O.length<=MAX_REQUEST_SIZE?this.saveData(V,"svg",O,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(k)}))});if("svg"==c){var I=this.editor.graph.background;if(G||I==mxConstants.NONE)I=null;var R=this.editor.graph.getSvg(I,null,null,null,null,z);l&&this.editor.graph.addSvgShadow(R);this.editor.convertImages(R, +mxUtils.bind(this,mxUtils.bind(this,function(O){this.spinner.stop();t(Graph.xmlDeclaration+"\n"+Graph.svgDoctype+"\n"+mxUtils.getXml(O))})))}else V=aa+".svg",k=this.getFileData(!1,!0,null,mxUtils.bind(this,function(O){this.spinner.stop();t(O)}),z)}}catch(O){this.handleError(O)}};EditorUi.prototype.createDownloadRequest=function(c,f,l,z,A,B,G,M,Q,J,fa,ea,T,ca,ka,ma,aa,V){c=this.downloadRequestBuilder(c,f,l,z,A,B,G,M,Q,J,fa,ea,T,ca,ka,ma,aa,V);f="";for(var da in c)l=c[da],null!=l&&(f+=da+"="+encodeURIComponent(l)+ +"&");return new mxXmlRequest(EXPORT_URL,f)};EditorUi.prototype.downloadRequestBuilder=function(c,f,l,z,A,B,G,M,Q,J,fa,ea,T,ca,ka,ma,aa,V){var da=this.editor.graph,k=da.getGraphBounds();l=this.getFileData(!0,null,null,null,l,0==B?!1:"xmlpng"!=f,null,null,null,!Editor.defaultCompressed,"pdf"==f);var t=null,I=null,R=null;if(!EditorUi.isElectronApp&&(k.width*k.height>MAX_AREA||l.length>MAX_REQUEST_SIZE))throw{message:mxResources.get("drawingTooLarge")};J=J?"1":"0";"pdf"==f&&(null!=fa?(t=fa.from,I=fa.to): 0==B&&(R="1"));"xmlpng"==f&&(J="1",f="png");if(("xmlpng"==f||"svg"==f)&&null!=this.pages&&null!=this.currentPage)for(B=0;B=pa.status?qa(pa.responseText,"text/xml"):this.handleError({message:mxResources.get(413==pa.status?"drawingTooLarge":"invalidOrMissingFile")},mxResources.get("errorLoadingFile")))})):(this.spinner.stop(),this.showError(mxResources.get("error"),mxResources.get("notInOffline"))): -qa(da,k)}}));V.stopPropagation();V.preventDefault()})),mxEvent.addListener(Q,"dragleave",function(V){Q.style.cursor="";Q.style.backgroundColor="";V.stopPropagation();V.preventDefault()}));ha=ha.cloneNode(!1);ha.setAttribute("src",Editor.editImage);ha.setAttribute("title",mxResources.get("edit"));J.insertBefore(ha,J.firstChild);mxEvent.addListener(ha,"click",l);l=ha.cloneNode(!1);l.setAttribute("src",Editor.plusImage);l.setAttribute("title",mxResources.get("add"));J.insertBefore(l,J.firstChild);mxEvent.addListener(l, +qa(da,k)}}));V.stopPropagation();V.preventDefault()})),mxEvent.addListener(Q,"dragleave",function(V){Q.style.cursor="";Q.style.backgroundColor="";V.stopPropagation();V.preventDefault()}));fa=fa.cloneNode(!1);fa.setAttribute("src",Editor.editImage);fa.setAttribute("title",mxResources.get("edit"));J.insertBefore(fa,J.firstChild);mxEvent.addListener(fa,"click",l);l=fa.cloneNode(!1);l.setAttribute("src",Editor.plusImage);l.setAttribute("title",mxResources.get("add"));J.insertBefore(l,J.firstChild);mxEvent.addListener(l, "click",aa);".scratchpad"==c.title&&(this.addSelectionToScratchpad=aa);this.isOffline()||".scratchpad"!=c.title||null==EditorUi.scratchpadHelpLink||(l=this.createHelpIcon(EditorUi.scratchpadHelpLink),B=l.getElementsByTagName("img")[0],l.style.marginRight="1px",B.style.marginTop="-2px",B.style.opacity="",J.insertBefore(l,J.firstChild))}z.appendChild(J);this.editor.fireEvent(new mxEventObject("libraryLoaded"))}};EditorUi.prototype.addLibraryEntries=function(c,f){for(var l=0;l");da.setAttribute("disabled","disabled");aa.appendChild(da)}da=document.createElement("option");mxUtils.write(da,mxResources.get("addAccount"));da.value=ca.length;aa.appendChild(da)}var ca=this.drive.getUsersList(),ka=document.createElement("div"),ma=document.createElement("div");ma.style.marginBottom="6px";mxUtils.write(ma,mxResources.get("changeUser")+": ");ka.appendChild(ma);var aa=document.createElement("select"); aa.style.width="100%";T();mxEvent.addListener(aa,"change",mxUtils.bind(this,function(){var V=aa.value,da=ca.length!=V;da&&this.drive.setUser(ca[V]);this.drive.authorize(da,mxUtils.bind(this,function(){da||(ca=this.drive.getUsersList(),T())}),mxUtils.bind(this,function(k){this.handleError(k)}),!0)}));ka.appendChild(aa);ka=new CustomDialog(this,ka,mxUtils.bind(this,function(){this.loadFile(window.location.hash.substr(1),!0)}));this.showDialog(ka.container,300,100,!0,!0)}),mxResources.get("cancel"), mxUtils.bind(this,function(){this.hideDialog();null!=l&&l()}),520,150);return}}null!=Q.message?G=""==Q.message&&null!=Q.name?mxUtils.htmlEntities(Q.name,!1):mxUtils.htmlEntities(Q.message,!1):null!=Q.response&&null!=Q.response.error?G=mxUtils.htmlEntities(Q.response.error,!1):"undefined"!==typeof window.App&&(Q.code==App.ERROR_TIMEOUT?G=mxUtils.htmlEntities(mxResources.get("timeout"),!1):Q.code==App.ERROR_BUSY?G=mxUtils.htmlEntities(mxResources.get("busy"),!1):"string"===typeof Q&&0navigator.userAgent.indexOf("PaleMoon/"))&&"undefined"!==typeof G.download;if(mxClient.IS_GC&& null!=navigator.userAgent){var M=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);B=65==(M?parseInt(M[2],10):!1)?!1:B}if(B||this.isOffline()){G.href=URL.createObjectURL(z?this.base64ToBlob(c,l):new Blob([c],{type:l}));B?G.download=f:G.setAttribute("target","_blank");document.body.appendChild(G);try{window.setTimeout(function(){URL.revokeObjectURL(G.href)},2E4),G.click(),G.parentNode.removeChild(G)}catch(Q){}}else this.createEchoRequest(c,f,l,z,A).simulate(document,"_blank")}};EditorUi.prototype.createEchoRequest= -function(c,f,l,z,A,B){c="xml="+encodeURIComponent(c);return new mxXmlRequest(SAVE_URL,c+(null!=l?"&mime="+l:"")+(null!=A?"&format="+A:"")+(null!=B?"&base64="+B:"")+(null!=f?"&filename="+encodeURIComponent(f):"")+(z?"&binary=1":""))};EditorUi.prototype.saveLocalFile=function(c,f,l,z,A,B,G,M){B=null!=B?B:!1;G=null!=G?G:"vsdx"!=A&&(!mxClient.IS_IOS||!navigator.standalone);var Q=mxUtils.bind(this,function(ha,ea,T,ca){try{if("_blank"==ea)if(null!=l&&"image/"==l.substring(0,6))this.openInNewWindow(c,l, -z);else if(null!=l&&"text/html"==l.substring(0,9)){var ka=new EmbedDialog(this,c);this.showDialog(ka.container,450,240,!0,!0);ka.init()}else{var ma=window.open("about:blank");null==ma?mxUtils.popup(c,!0):(ma.document.write("
"+mxUtils.htmlEntities(c,!1)+"
"),ma.document.close())}else if(ea==App.MODE_DEVICE||"download"==ea)this.doSaveLocalFile(c,ha,l,z,null,M);else if(null!=ha&&0"+mxUtils.htmlEntities(c,!1)+""),ma.document.close())}else if(ea==App.MODE_DEVICE||"download"==ea)this.doSaveLocalFile(c,fa,l,z,null,M);else if(null!=fa&&0')):z.document.write(""+c+""):z.document.write("
"+mxUtils.htmlEntities(c,!1)+"
"),z.document.close())};var n=EditorUi.prototype.addChromelessToolbarItems;EditorUi.prototype.isChromelessImageExportEnabled=function(){return"draw.io"!=this.getServiceName()||/.*\.draw\.io$/.test(window.location.hostname)|| /.*\.diagrams\.net$/.test(window.location.hostname)};EditorUi.prototype.addChromelessToolbarItems=function(c){if(null!=urlParams.tags){this.tagsDialog=this.tagsComponent=null;var f=c(mxUtils.bind(this,function(z){null==this.tagsComponent&&(this.tagsComponent=this.editor.graph.createTagsDialog(mxUtils.bind(this,function(){return null!=this.tagsDialog}),!0),this.tagsComponent.div.getElementsByTagName("div")[0].style.position="",mxUtils.setPrefixedStyle(this.tagsComponent.div.style,"borderRadius","5px"), this.tagsComponent.div.className="geScrollable",this.tagsComponent.div.style.maxHeight="160px",this.tagsComponent.div.style.maxWidth="120px",this.tagsComponent.div.style.padding="4px",this.tagsComponent.div.style.overflow="auto",this.tagsComponent.div.style.height="auto",this.tagsComponent.div.style.position="fixed",this.tagsComponent.div.style.fontFamily=Editor.defaultHtmlFont,mxClient.IS_IE||mxClient.IS_IE11?(this.tagsComponent.div.style.backgroundColor="#ffffff",this.tagsComponent.div.style.border= @@ -3599,18 +3599,18 @@ document.createElement("div");var B=l.getBoundingClientRect();mxUtils.setPrefixe 80);this.exportDialog.style.left=B.left+"px";this.exportDialog.style.bottom=parseInt(this.chromelessToolbar.style.bottom)+this.chromelessToolbar.offsetHeight+4+"px";B=mxUtils.getCurrentStyle(this.editor.graph.container);this.exportDialog.style.zIndex=B.zIndex;var G=new Spinner({lines:8,length:6,width:5,radius:6,rotate:0,color:"#fff",speed:1.5,trail:60,shadow:!1,hwaccel:!1,top:"28px",zIndex:2E9});G.spin(this.exportDialog);document.body.appendChild(this.exportDialog);mxEvent.addListener(this.editor.graph.container, "click",A);this.editor.exportToCanvas(mxUtils.bind(this,function(M){G.stop();this.exportDialog.style.width="auto";this.exportDialog.style.height="auto";this.exportDialog.style.padding="10px";var Q=this.createImageDataUri(M,null,"png");M=document.createElement("img");M.style.maxWidth="140px";M.style.maxHeight="140px";M.style.cursor="pointer";M.style.backgroundColor="white";M.setAttribute("title",mxResources.get("openInNewWindow"));M.setAttribute("border","0");M.setAttribute("src",Q);this.exportDialog.appendChild(M); mxEvent.addListener(M,"click",mxUtils.bind(this,function(){this.openInNewWindow(Q.substring(Q.indexOf(",")+1),"image/png",!0);A.apply(this,arguments)}))}),null,this.thumbImageCache,null,mxUtils.bind(this,function(M){G.stop();null!=this.exportDialog&&null!=this.exportDialog.parentNode&&(this.exportDialog.parentNode.removeChild(this.exportDialog),this.exportDialog=null);this.handleError(M)}),null,null,null,null,null,null,null,Editor.defaultBorder)}mxEvent.consume(z)}),Editor.cameraImage,mxResources.get("export"))}}; -EditorUi.prototype.saveData=function(c,f,l,z,A){this.isLocalFileSave()?this.saveLocalFile(l,c,z,A,f):this.saveRequest(c,f,mxUtils.bind(this,function(B,G){return this.createEchoRequest(l,B,z,A,f,G)}),l,A,z)};EditorUi.prototype.saveRequest=function(c,f,l,z,A,B,G){G=null!=G?G:!mxClient.IS_IOS||!navigator.standalone;var M=mxUtils.bind(this,function(J,ha,ea,T){if("_blank"==ha||null!=J&&0=ca.getStatus())try{this.exportFile(ca.getText(),J,B,!0,ha,ka)}catch(ma){this.handleError(ma)}else this.handleError({message:mxResources.get("errorSavingFile")})}), -mxUtils.bind(this,function(ma){this.spinner.stop();this.handleError(ma)}))}),null!=T?ea(T):this.pickFolder(ha,ea)))}});A=[App.MODE_BROWSER];G||A.push("_blank");var Q=new SaveDialog(this,c,mxUtils.bind(this,function(J,ha,ea){M(J.value,ha,J,ea);this.hideDialog(null,null,Q.container)}),A,null,"application/pdf");this.showDialog(Q.container,420,110,!0,!1,mxUtils.bind(this,function(){this.hideDialog()}));Q.init()};EditorUi.prototype.isServices=function(c){return 1!=c};EditorUi.prototype.getEditBlankXml= -function(){return this.getFileData(!0)};EditorUi.prototype.exportFile=function(c,f,l,z,A,B){};EditorUi.prototype.getServiceForName=function(c){return null};EditorUi.prototype.getTitleForService=function(c){return mxResources.get(c)};EditorUi.prototype.pickFolder=function(c,f,l){f(null)};EditorUi.prototype.exportSvg=function(c,f,l,z,A,B,G,M,Q,J,ha,ea,T,ca){if(this.spinner.spin(document.body,mxResources.get("exporting"),mxUtils.bind(this,function(R){Editor.addRetryToError(R,mxUtils.bind(this,function(){this.exportSvg(c, -f,l,z,A,B,G,M,Q,J,ha,ea,T,ca)}));this.handleError(R)})))try{var ka=this.editor.graph.isSelectionEmpty();l=null!=l?l:ka;var ma=f?null:this.editor.graph.background;ma==mxConstants.NONE&&(ma=null);null==ma&&0==f&&(ma="dark"!=ha||Editor.enableCssDarkMode?"#ffffff":Editor.darkColor);var aa=this.editor.graph.addForeignObjectWarning;Editor.foreignObjectImages&&(this.editor.graph.addForeignObjectWarning=function(){});var V=this.editor.graph.getSvg(ma,c,G,M,null,l,null,null,"blank"==J?"_blank":"self"==J?"_top": -null,null,!T,ha,ea);this.editor.graph.addForeignObjectWarning=aa;z&&this.editor.graph.addSvgShadow(V);var da=this.getBaseFilename()+(A?".drawio":"")+".svg";ca=null!=ca?ca:mxUtils.bind(this,function(R){this.isLocalFileSave()||R.length<=MAX_REQUEST_SIZE?this.saveData(da,"svg",R,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(R)}))});var k=mxUtils.bind(this,function(R){this.spinner.stop();A&&R.setAttribute("content", -this.getFileData(!0,null,null,null,l,Q,null,null,null,null,null,c,G));ca(Graph.xmlDeclaration+"\n"+(A?Graph.svgFileComment+"\n":"")+Graph.svgDoctype+"\n"+mxUtils.getXml(R))});this.editor.graph.mathEnabled&&this.editor.addMathCss(V);var t=mxUtils.bind(this,function(R){Editor.replaceSvgDataUris&&B&&EditorUi.embedSvgImages(R);Editor.foreignObjectImages&&T?this.replaceAlternateContent(R,ha,k):k(R)}),I=mxUtils.bind(this,function(R){B&&!this.isOffline()&&this.canvasSupported?(null==this.thumbImageCache&& +EditorUi.prototype.saveData=function(c,f,l,z,A){this.isLocalFileSave()?this.saveLocalFile(l,c,z,A,f):this.saveRequest(c,f,mxUtils.bind(this,function(B,G){return this.createEchoRequest(l,B,z,A,f,G)}),l,A,z)};EditorUi.prototype.saveRequest=function(c,f,l,z,A,B,G){G=null!=G?G:!mxClient.IS_IOS||!navigator.standalone;var M=mxUtils.bind(this,function(J,fa,ea,T){if("_blank"==fa||null!=J&&0=ca.getStatus())try{this.exportFile(ca.getText(),J,B,!0,fa,ka)}catch(ma){this.handleError(ma)}else this.handleError({message:mxResources.get("errorSavingFile")})}), +mxUtils.bind(this,function(ma){this.spinner.stop();this.handleError(ma)}))}),null!=T?ea(T):this.pickFolder(fa,ea)))}});A=[App.MODE_BROWSER];G||A.push("_blank");var Q=new SaveDialog(this,c,mxUtils.bind(this,function(J,fa,ea){M(J.value,fa,J,ea);this.hideDialog(null,null,Q.container)}),A,null,"application/pdf");this.showDialog(Q.container,420,110,!0,!1,mxUtils.bind(this,function(){this.hideDialog()}));Q.init()};EditorUi.prototype.isServices=function(c){return 1!=c};EditorUi.prototype.getEditBlankXml= +function(){return this.getFileData(!0)};EditorUi.prototype.exportFile=function(c,f,l,z,A,B){};EditorUi.prototype.getServiceForName=function(c){return null};EditorUi.prototype.getTitleForService=function(c){return mxResources.get(c)};EditorUi.prototype.pickFolder=function(c,f,l){f(null)};EditorUi.prototype.exportSvg=function(c,f,l,z,A,B,G,M,Q,J,fa,ea,T,ca){if(this.spinner.spin(document.body,mxResources.get("exporting"),mxUtils.bind(this,function(R){Editor.addRetryToError(R,mxUtils.bind(this,function(){this.exportSvg(c, +f,l,z,A,B,G,M,Q,J,fa,ea,T,ca)}));this.handleError(R)})))try{var ka=this.editor.graph.isSelectionEmpty();l=null!=l?l:ka;var ma=f?null:this.editor.graph.background;ma==mxConstants.NONE&&(ma=null);null==ma&&0==f&&(ma="dark"!=fa||Editor.enableCssDarkMode?"#ffffff":Editor.darkColor);var aa=this.editor.graph.addForeignObjectWarning;Editor.foreignObjectImages&&(this.editor.graph.addForeignObjectWarning=function(){});var V=this.editor.graph.getSvg(ma,c,G,M,null,l,null,null,"blank"==J?"_blank":"self"==J?"_top": +null,null,!T,fa,ea);this.editor.graph.addForeignObjectWarning=aa;z&&this.editor.graph.addSvgShadow(V);var da=this.getBaseFilename()+(A?".drawio":"")+".svg";ca=null!=ca?ca:mxUtils.bind(this,function(R){this.isLocalFileSave()||R.length<=MAX_REQUEST_SIZE?this.saveData(da,"svg",R,"image/svg+xml"):this.handleError({message:mxResources.get("drawingTooLarge")},mxResources.get("error"),mxUtils.bind(this,function(){mxUtils.popup(R)}))});var k=mxUtils.bind(this,function(R){this.spinner.stop();A&&R.setAttribute("content", +this.getFileData(!0,null,null,null,l,Q,null,null,null,null,null,c,G));ca(Graph.xmlDeclaration+"\n"+(A?Graph.svgFileComment+"\n":"")+Graph.svgDoctype+"\n"+mxUtils.getXml(R))});this.editor.graph.mathEnabled&&this.editor.addMathCss(V);var t=mxUtils.bind(this,function(R){Editor.replaceSvgDataUris&&B&&EditorUi.embedSvgImages(R);Editor.foreignObjectImages&&T?this.replaceAlternateContent(R,fa,k):k(R)}),I=mxUtils.bind(this,function(R){B&&!this.isOffline()&&this.canvasSupported?(null==this.thumbImageCache&& (this.thumbImageCache={}),this.editor.convertImages(R,t,this.thumbImageCache)):t(R)});T?this.embedFonts(V,I):(this.editor.addFontCss(V),I(V))}catch(R){this.handleError(R)}};EditorUi.prototype.replaceAlternateContent=function(c,f,l){function z(ea,T,ca,ka,ma){var aa=mxUtils.createElementNs(c.ownerDocument,mxConstants.NS_SVG,"image");aa.setAttribute("x",T);aa.setAttribute("y",ca+.5);aa.setAttribute("width",ka.width);aa.setAttribute("height",ka.height);null==aa.setAttributeNS?aa.setAttribute("xlink:href", -ma):aa.setAttributeNS(mxConstants.NS_XLINK,"xlink:href",ma);ea.replaceChild(aa,ea.lastChild);M()}function A(){if(G
';c=null!=c?"&fetch="+encodeURIComponent(c):"";ea(f,'