UNPKG

@zklogic/draw.io

Version:

Draw.IO - Graph Editor integration in Angular-cli

1 lines 88.2 kB
function mxShapeArrows2Arrow(t,e,a,n){mxShape.call(this),this.bounds=t,this.fill=e,this.stroke=a,this.strokewidth=null!=n?n:1,this.dy=.5,this.dx=.5,this.notch=0}function mxShapeArrows2TwoWayArrow(t,e,a,n){mxShape.call(this),this.bounds=t,this.fill=e,this.stroke=a,this.strokewidth=null!=n?n:1,this.dy=.5,this.dx=.5}function mxShapeArrows2StylisedArrow(t,e,a,n){mxShape.call(this),this.bounds=t,this.fill=e,this.stroke=a,this.strokewidth=null!=n?n:1,this.dy=.5,this.dx=.5,this.notch=0,this.feather=.5}function mxShapeArrows2SharpArrow(t,e,a,n){mxShape.call(this),this.bounds=t,this.fill=e,this.stroke=a,this.strokewidth=null!=n?n:1,this.dy1=.5,this.dx1=.5,this.dx2=.5,this.notch=0}function mxShapeArrows2SharpArrow2(t,e,a,n){mxShape.call(this),this.bounds=t,this.fill=e,this.stroke=a,this.strokewidth=null!=n?n:1,this.dy1=.5,this.dx1=.5,this.dx2=.5,this.dy3=.5,this.dx3=.5,this.notch=0}function mxShapeArrows2CalloutArrow(t,e,a,n){mxShape.call(this),this.bounds=t,this.fill=e,this.stroke=a,this.strokewidth=null!=n?n:1,this.dy=.5,this.dx=.5,this.notch=0,this.arrowHead=0}function mxShapeArrows2BendArrow(t,e,a,n){mxShape.call(this),this.bounds=t,this.fill=e,this.stroke=a,this.strokewidth=null!=n?n:1,this.dy=.5,this.dx=.5,this.notch=0,this.arrowHead=40}function mxShapeArrows2BendDoubleArrow(t,e,a,n){mxShape.call(this),this.bounds=t,this.fill=e,this.stroke=a,this.strokewidth=null!=n?n:1,this.dy=.5,this.dx=.5,this.notch=0,this.arrowHead=40}function mxShapeArrows2CalloutDoubleArrow(t,e,a,n){mxShape.call(this),this.bounds=t,this.fill=e,this.stroke=a,this.strokewidth=null!=n?n:1,this.dy=.5,this.dx=.5,this.notch=0,this.arrowHead=0}function mxShapeArrows2CalloutQuadArrow(t,e,a,n){mxShape.call(this),this.bounds=t,this.fill=e,this.stroke=a,this.strokewidth=null!=n?n:1,this.dy=.5,this.dx=.5,this.notch=0,this.arrowHead=0}function mxShapeArrows2CalloutDouble90Arrow(t,e,a,n){mxShape.call(this),this.bounds=t,this.fill=e,this.stroke=a,this.strokewidth=null!=n?n:1,this.dy1=.5,this.dx1=.5,this.dx2=0,this.dy2=0,this.arrowHead=0}function mxShapeArrows2QuadArrow(t,e,a,n){mxShape.call(this),this.bounds=t,this.fill=e,this.stroke=a,this.strokewidth=null!=n?n:1,this.dy=.5,this.dx=.5,this.notch=0,this.arrowHead=0}function mxShapeArrows2TriadArrow(t,e,a,n){mxShape.call(this),this.bounds=t,this.fill=e,this.stroke=a,this.strokewidth=null!=n?n:1,this.dy=.5,this.dx=.5,this.arrowHead=0}function mxShapeArrows2TailedArrow(t,e,a,n){mxShape.call(this),this.bounds=t,this.fill=e,this.stroke=a,this.strokewidth=null!=n?n:1,this.dy=.5,this.dx=.5,this.notch=0,this.arrowHead=0}function mxShapeArrows2TailedNotchedArrow(t,e,a,n){mxShape.call(this),this.bounds=t,this.fill=e,this.stroke=a,this.strokewidth=null!=n?n:1,this.dy=.5,this.dx=.5,this.notch=0,this.arrowHead=0}function mxShapeArrows2StripedArrow(t,e,a,n){mxShape.call(this),this.bounds=t,this.fill=e,this.stroke=a,this.strokewidth=null!=n?n:1,this.dy=.5,this.dx=.5,this.notch=0}function mxShapeArrows2JumpInArrow(t,e,a,n){mxShape.call(this),this.bounds=t,this.fill=e,this.stroke=a,this.strokewidth=null!=n?n:1,this.dy=.5,this.dx=.5,this.arrowHead=40}function mxShapeArrows2UTurnArrow(t,e,a,n){mxShape.call(this),this.bounds=t,this.fill=e,this.stroke=a,this.strokewidth=null!=n?n:1,this.dy=.5,this.dx=.5,this.arrowHead=40}mxUtils.extend(mxShapeArrows2Arrow,mxActor),mxShapeArrows2Arrow.prototype.customProperties=[{name:"dx",dispName:"Arrowhead Length",type:"float",min:0,defVal:40},{name:"dy",dispName:"Arrow Width",type:"float",min:0,max:1,defVal:.6},{name:"notch",dispName:"Notch",type:"float",min:0,defVal:0},{name:"headCrossline",dispName:"Head Crossline",type:"bool",defVal:!1},{name:"tailCrossline",dispName:"Tail Crossline",type:"bool",defVal:!1}],mxShapeArrows2Arrow.prototype.cst={ARROW:"mxgraph.arrows2.arrow"},mxShapeArrows2Arrow.prototype.paintVertexShape=function(t,e,a,n,s){t.translate(e,a);var i=.5*s*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"dy",this.dy)))),o=Math.max(0,Math.min(n,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),h=Math.max(0,Math.min(n,parseFloat(mxUtils.getValue(this.style,"notch",this.notch)))),l=mxUtils.getValue(this.style,"headCrossline",!1),r=mxUtils.getValue(this.style,"tailCrossline",!1);t.begin(),t.moveTo(0,i),t.lineTo(n-o,i),t.lineTo(n-o,0),t.lineTo(n,.5*s),t.lineTo(n-o,s),t.lineTo(n-o,s-i),t.lineTo(0,s-i),t.lineTo(h,.5*s),t.close(),t.fillAndStroke(),t.setShadow(!1),l&&(t.begin(),t.moveTo(n-o,i),t.lineTo(n-o,s-i),t.stroke()),r&&(t.begin(),t.moveTo(h,i),t.lineTo(h,s-i),t.stroke())},mxShapeArrows2Arrow.prototype.getLabelBounds=function(t){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var e,a,n=t.width,s=t.height,i=this.direction||mxConstants.DIRECTION_EAST;return mxUtils.getValue(this.style,"flipH",!1)&&(i==mxConstants.DIRECTION_WEST?i=mxConstants.DIRECTION_EAST:i==mxConstants.DIRECTION_EAST&&(i=mxConstants.DIRECTION_WEST)),mxUtils.getValue(this.style,"flipV",!1)&&(i==mxConstants.DIRECTION_NORTH?i=mxConstants.DIRECTION_SOUTH:i==mxConstants.DIRECTION_SOUTH&&(i=mxConstants.DIRECTION_NORTH)),i==mxConstants.DIRECTION_NORTH||i==mxConstants.DIRECTION_SOUTH?(e=.5*n*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"dy",this.dy)))),a=Math.max(0,Math.min(s,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))))):(e=.5*s*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"dy",this.dy)))),a=Math.max(0,Math.min(n,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))))),i==mxConstants.DIRECTION_EAST?new mxRectangle(t.x,t.y+e,n-a,s-2*e):i==mxConstants.DIRECTION_WEST?new mxRectangle(t.x+a,t.y+e,n-a,s-2*e):i==mxConstants.DIRECTION_NORTH?new mxRectangle(t.x+e,t.y+a,n-2*e,s-a):new mxRectangle(t.x+e,t.y,n-2*e,s-a)}return t},mxCellRenderer.registerShape(mxShapeArrows2Arrow.prototype.cst.ARROW,mxShapeArrows2Arrow),Graph.handleFactory[mxShapeArrows2Arrow.prototype.cst.ARROW]=function(t){var e=[Graph.createHandle(t,["dx","dy"],(function(t){var e=Math.max(0,Math.min(t.width,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx)))),a=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy))));return new mxPoint(t.x+t.width-e,t.y+a*t.height/2)}),(function(t,e){this.state.style.dx=Math.round(100*Math.max(0,Math.min(t.width-parseFloat(mxUtils.getValue(this.state.style,"notch",this.notch)),t.x+t.width-e.x)))/100,this.state.style.dy=Math.round(100*Math.max(0,Math.min(1,(e.y-t.y)/t.height*2)))/100}))],a=Graph.createHandle(t,["notch"],(function(t){var e=Math.max(0,Math.min(t.width,parseFloat(mxUtils.getValue(this.state.style,"notch",this.notch))));return new mxPoint(t.x+e,t.y+t.height/2)}),(function(t,e){this.state.style.notch=Math.round(100*Math.max(0,Math.min(t.width-parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx)),e.x-t.x)))/100}));return e.push(a),e},mxShapeArrows2Arrow.prototype.getConstraints=function(t,e,a){var n=[],s=.5*a*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"dy",this.dy)))),i=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),o=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"notch",this.notch))));return n.push(new mxConnectionConstraint(new mxPoint(1,.5),!1)),n.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null,o,0)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,s)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,a-s)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e-i,s)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e-i,0)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e-i,a-s)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e-i,a)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e-i),s)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e-i),a-s)),n},mxUtils.extend(mxShapeArrows2TwoWayArrow,mxActor),mxShapeArrows2TwoWayArrow.prototype.cst={TWO_WAY_ARROW:"mxgraph.arrows2.twoWayArrow"},mxShapeArrows2TwoWayArrow.prototype.customProperties=[{name:"dx",dispName:"Arrowhead Length",type:"float",min:0,defVal:35},{name:"dy",dispName:"Arrow Width",type:"float",min:0,max:1,defVal:.6}],mxShapeArrows2TwoWayArrow.prototype.paintVertexShape=function(t,e,a,n,s){t.translate(e,a);var i=.5*s*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"dy",this.dy)))),o=Math.max(0,Math.min(n,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));t.begin(),t.moveTo(o,i),t.lineTo(n-o,i),t.lineTo(n-o,0),t.lineTo(n,.5*s),t.lineTo(n-o,s),t.lineTo(n-o,s-i),t.lineTo(o,s-i),t.lineTo(o,s),t.lineTo(0,.5*s),t.lineTo(o,0),t.close(),t.fillAndStroke()},mxShapeArrows2TwoWayArrow.prototype.getLabelBounds=function(t){if(mxUtils.getValue(this.style,"boundedLbl",!1)){var e,a,n=t.width,s=t.height,i=this.direction==mxConstants.DIRECTION_NORTH||this.direction==mxConstants.DIRECTION_SOUTH;return i?(e=.5*n*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"dy",this.dy)))),a=Math.max(0,Math.min(s,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))))):(e=.5*s*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"dy",this.dy)))),a=Math.max(0,Math.min(n,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))))),i?new mxRectangle(t.x+e,t.y+a,n-2*e,s-2*a):new mxRectangle(t.x+a,t.y+e,n-2*a,s-2*e)}return t},mxCellRenderer.registerShape(mxShapeArrows2TwoWayArrow.prototype.cst.TWO_WAY_ARROW,mxShapeArrows2TwoWayArrow),mxShapeArrows2TwoWayArrow.prototype.constraints=null,Graph.handleFactory[mxShapeArrows2TwoWayArrow.prototype.cst.TWO_WAY_ARROW]=function(t){return[Graph.createHandle(t,["dx","dy"],(function(t){var e=Math.max(0,Math.min(t.width/2,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx)))),a=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy))));return new mxPoint(t.x+t.width-e,t.y+a*t.height/2)}),(function(t,e){this.state.style.dx=Math.round(100*Math.max(0,Math.min(t.width/2,t.x+t.width-e.x)))/100,this.state.style.dy=Math.round(100*Math.max(0,Math.min(1,(e.y-t.y)/t.height*2)))/100}))]},mxShapeArrows2TwoWayArrow.prototype.getConstraints=function(t,e,a){var n=[],s=.5*a*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"dy",this.dy)))),i=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));return n.push(new mxConnectionConstraint(new mxPoint(1,.5),!1)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,i,0)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,i,s)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,i,a)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,i,a-s)),n.push(new mxConnectionConstraint(new mxPoint(0,.5),!1)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e-i,0)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e-i,s)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e-i,a)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e-i,a-s)),n.push(new mxConnectionConstraint(new mxPoint(.5,0),!1,null,0,s)),n.push(new mxConnectionConstraint(new mxPoint(.5,0),!1,null,0,a-s)),n},mxUtils.extend(mxShapeArrows2StylisedArrow,mxActor),mxShapeArrows2StylisedArrow.prototype.customProperties=[{name:"dx",dispName:"Arrowhead Length",type:"float",min:0,defVal:40},{name:"dy",dispName:"Arrow Width",type:"float",min:0,max:1,defVal:.6},{name:"notch",dispName:"Notch",type:"float",min:0,defVal:0},{name:"feather",dispName:"Feather",type:"float",min:0,max:1,defVal:.4}],mxShapeArrows2StylisedArrow.prototype.cst={STYLISED_ARROW:"mxgraph.arrows2.stylisedArrow"},mxShapeArrows2StylisedArrow.prototype.paintVertexShape=function(t,e,a,n,s){t.translate(e,a);var i=.5*s*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"dy",this.dy)))),o=Math.max(0,Math.min(n,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),h=Math.max(0,Math.min(n,parseFloat(mxUtils.getValue(this.style,"notch",this.notch)))),l=.5*s*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"feather",this.feather))));t.begin(),t.moveTo(0,l),t.lineTo(n-o,i),t.lineTo(n-o-10,0),t.lineTo(n,.5*s),t.lineTo(n-o-10,s),t.lineTo(n-o,s-i),t.lineTo(0,s-l),t.lineTo(h,.5*s),t.close(),t.fillAndStroke()},mxCellRenderer.registerShape(mxShapeArrows2StylisedArrow.prototype.cst.STYLISED_ARROW,mxShapeArrows2StylisedArrow),mxShapeArrows2StylisedArrow.prototype.constraints=null,Graph.handleFactory[mxShapeArrows2StylisedArrow.prototype.cst.STYLISED_ARROW]=function(t){var e=[Graph.createHandle(t,["dx","dy"],(function(t){var e=Math.max(0,Math.min(t.width-10,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx)))),a=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy))));return new mxPoint(t.x+t.width-e,t.y+a*t.height/2)}),(function(t,e){this.state.style.dx=Math.round(100*Math.max(0,Math.min(t.width-10,t.width-parseFloat(mxUtils.getValue(this.state.style,"notch",this.notch)),t.x+t.width-e.x)))/100,this.state.style.dy=Math.round(100*Math.max(0,Math.min(1,(e.y-t.y)/t.height*2)))/100}))],a=Graph.createHandle(t,["notch"],(function(t){var e=Math.max(0,Math.min(t.width-parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx)),parseFloat(mxUtils.getValue(this.state.style,"notch",this.notch))));return new mxPoint(t.x+e,t.y+t.height/2)}),(function(t,e){this.state.style.notch=Math.round(100*Math.max(0,Math.min(t.width-parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx)),e.x-t.x)))/100}));e.push(a);var n=Graph.createHandle(t,["feather"],(function(t){var e=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"feather",this.dy))));return new mxPoint(t.x,t.y+e*t.height/2)}),(function(t,e){this.state.style.feather=Math.round(100*Math.max(0,Math.min(1,(e.y-t.y)/t.height*2)))/100}));return e.push(n),e},mxShapeArrows2StylisedArrow.prototype.getConstraints=function(t,e,a){var n=[],s=.5*a*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"dy",this.dy)))),i=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),o=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"notch",this.notch)))),h=.5*a*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"feather",this.feather))));return n.push(new mxConnectionConstraint(new mxPoint(1,.5),!1)),n.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null,o,0)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,h)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,a-h)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e-i,s)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e-i-10,0)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e-i,a-s)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e-i-10,a)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e-i),.5*(s+h))),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e-i),a-.5*(s+h))),n},mxUtils.extend(mxShapeArrows2SharpArrow,mxActor),mxShapeArrows2SharpArrow.prototype.cst={SHARP_ARROW:"mxgraph.arrows2.sharpArrow"},mxShapeArrows2SharpArrow.prototype.customProperties=[{name:"dx1",dispName:"Arrowhead Arrow Width",type:"float",min:0,defVal:18},{name:"dy1",dispName:"Arrow Arrow Width",type:"float",min:0,max:1,defVal:.67},{name:"dx2",dispName:"Arrowhead Angle",type:"float",min:0,defVal:18},{name:"notch",dispName:"Notch",type:"float",min:0,defVal:0}],mxShapeArrows2SharpArrow.prototype.paintVertexShape=function(t,e,a,n,s){t.translate(e,a);var i=.5*s*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"dy1",this.dy1)))),o=Math.max(0,Math.min(n,parseFloat(mxUtils.getValue(this.style,"dx1",this.dx1)))),h=Math.max(0,Math.min(n,parseFloat(mxUtils.getValue(this.style,"dx2",this.dx2)))),l=Math.max(0,Math.min(n,parseFloat(mxUtils.getValue(this.style,"notch",this.notch)))),r=Math.max(0,Math.min(n,parseFloat(mxUtils.getValue(this.style,"dx1",this.dx1)))),m=.5*s*Math.max(0,Math.min(s,parseFloat(mxUtils.getValue(this.style,"dy1",this.dy1)))),x=0;0!=s&&(x=r+h*m*2/s),t.begin(),t.moveTo(0,i),t.lineTo(n-o,i),t.lineTo(n-x,0),t.lineTo(n-h,0),t.lineTo(n,.5*s),t.lineTo(n-h,s),t.lineTo(n-x,s),t.lineTo(n-o,s-i),t.lineTo(0,s-i),t.lineTo(l,.5*s),t.close(),t.fillAndStroke()},mxCellRenderer.registerShape(mxShapeArrows2SharpArrow.prototype.cst.SHARP_ARROW,mxShapeArrows2SharpArrow),mxShapeArrows2SharpArrow.prototype.constraints=null,Graph.handleFactory[mxShapeArrows2SharpArrow.prototype.cst.SHARP_ARROW]=function(t){var e=[Graph.createHandle(t,["dx1","dy1"],(function(t){var e=Math.max(0,Math.min(t.width,parseFloat(mxUtils.getValue(this.state.style,"dx1",this.dx1)))),a=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"dy1",this.dy1))));return new mxPoint(t.x+t.width-e,t.y+a*t.height/2)}),(function(t,e){this.state.style.dx1=Math.round(100*Math.max(0,Math.min(t.width-parseFloat(mxUtils.getValue(this.state.style,"notch",this.notch)),t.x+t.width-e.x)))/100,this.state.style.dy1=Math.round(100*Math.max(0,Math.min(1,(e.y-t.y)/t.height*2)))/100}))],a=Graph.createHandle(t,["notch"],(function(t){var e=Math.max(0,Math.min(t.width,parseFloat(mxUtils.getValue(this.state.style,"notch",this.notch))));return new mxPoint(t.x+e,t.y+t.height/2)}),(function(t,e){this.state.style.notch=Math.round(100*Math.max(0,Math.min(t.width-parseFloat(mxUtils.getValue(this.state.style,"dx1",this.dx1)),e.x-t.x)))/100}));e.push(a);var n=Graph.createHandle(t,["dx2"],(function(t){var e=Math.max(0,Math.min(t.width,parseFloat(mxUtils.getValue(this.state.style,"dx2",this.dx2))));return new mxPoint(t.x+t.width-e,t.y)}),(function(t,e){this.state.style.dx2=Math.round(100*Math.max(0,Math.min(t.width-parseFloat(mxUtils.getValue(this.state.style,"notch",this.notch)),t.x+t.width-e.x)))/100}));return e.push(n),e},mxShapeArrows2SharpArrow.prototype.getConstraints=function(t,e,a){var n=[],s=.5*a*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"dy1",this.dy1)))),i=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dx1",this.dx1)))),o=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dx2",this.dx2)))),h=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"notch",this.notch)))),l=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dx1",this.dx1)))),r=.5*a*Math.max(0,Math.min(a,parseFloat(mxUtils.getValue(this.style,"dy1",this.dy1)))),m=0;return 0!=a&&(m=l+o*r*2/a),n.push(new mxConnectionConstraint(new mxPoint(1,.5),!1)),n.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null,h,0)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,s)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e-i,s)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e-m,0)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e-o,0)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,a-s)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e-i,a-s)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e-m,a)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e-o,a)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e-i),s)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e-i),a-s)),n},mxUtils.extend(mxShapeArrows2SharpArrow2,mxActor),mxShapeArrows2SharpArrow2.prototype.customProperties=[{name:"dx1",dispName:"Arrowhead Arrow Width",type:"float",min:0,defVal:18},{name:"dy1",dispName:"Arrow Width",type:"float",min:0,max:1,defVal:.67},{name:"dx2",dispName:"Arrowhead Angle",type:"float",min:0,defVal:18},{name:"dx3",dispName:"Arrowhead Edge X",type:"float",min:0,defVal:27},{name:"dy3",dispName:"Arrowhead Edge Y",type:"float",min:0,max:1,defVal:.15},{name:"notch",dispName:"Notch",type:"float",min:0,defVal:0}],mxShapeArrows2SharpArrow2.prototype.cst={SHARP_ARROW2:"mxgraph.arrows2.sharpArrow2"},mxShapeArrows2SharpArrow2.prototype.paintVertexShape=function(t,e,a,n,s){t.translate(e,a);var i=.5*s*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"dy1",this.dy1)))),o=Math.max(0,Math.min(n,parseFloat(mxUtils.getValue(this.style,"dx1",this.dx1)))),h=Math.max(0,Math.min(n,parseFloat(mxUtils.getValue(this.style,"dx2",this.dx2)))),l=.5*s*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"dy3",this.dy3)))),r=Math.max(0,Math.min(n,parseFloat(mxUtils.getValue(this.style,"dx3",this.dx3)))),m=Math.max(0,Math.min(n,parseFloat(mxUtils.getValue(this.style,"notch",this.notch))));Math.max(0,Math.min(n,parseFloat(mxUtils.getValue(this.style,"dx1",this.dx1)))),Math.max(0,Math.min(s,parseFloat(mxUtils.getValue(this.style,"dy1",this.dy1)))),t.begin(),t.moveTo(0,i),t.lineTo(n-o,i),t.lineTo(n-r,l),t.lineTo(n-h,0),t.lineTo(n,.5*s),t.lineTo(n-h,s),t.lineTo(n-r,s-l),t.lineTo(n-o,s-i),t.lineTo(0,s-i),t.lineTo(m,.5*s),t.close(),t.fillAndStroke()},mxCellRenderer.registerShape(mxShapeArrows2SharpArrow2.prototype.cst.SHARP_ARROW2,mxShapeArrows2SharpArrow2),mxShapeArrows2SharpArrow2.prototype.constraints=null,Graph.handleFactory[mxShapeArrows2SharpArrow2.prototype.cst.SHARP_ARROW2]=function(t){var e=[Graph.createHandle(t,["dx1","dy1"],(function(t){var e=Math.max(0,Math.min(t.width,parseFloat(mxUtils.getValue(this.state.style,"dx1",this.dx1)))),a=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"dy1",this.dy1))));return new mxPoint(t.x+t.width-e,t.y+a*t.height/2)}),(function(t,e){this.state.style.dx1=Math.round(100*Math.max(0,Math.min(t.width-parseFloat(mxUtils.getValue(this.state.style,"notch",this.notch)),t.x+t.width-e.x)))/100,this.state.style.dy1=Math.round(100*Math.max(0,Math.min(1,(e.y-t.y)/t.height*2)))/100}))],a=Graph.createHandle(t,["notch"],(function(t){var e=Math.max(0,Math.min(t.width,parseFloat(mxUtils.getValue(this.state.style,"notch",this.notch))));return new mxPoint(t.x+e,t.y+t.height/2)}),(function(t,e){this.state.style.notch=Math.round(100*Math.max(0,Math.min(t.width-parseFloat(mxUtils.getValue(this.state.style,"dx1",this.dx1)),e.x-t.x)))/100}));e.push(a);var n=Graph.createHandle(t,["dx2"],(function(t){var e=Math.max(0,Math.min(t.width,parseFloat(mxUtils.getValue(this.state.style,"dx2",this.dx2))));return new mxPoint(t.x+t.width-e,t.y)}),(function(t,e){this.state.style.dx2=Math.round(100*Math.max(0,Math.min(t.width-parseFloat(mxUtils.getValue(this.state.style,"notch",this.notch)),t.x+t.width-e.x)))/100}));e.push(n);var s=Graph.createHandle(t,["dx3","dy3"],(function(t){var e=Math.max(0,Math.min(t.width,parseFloat(mxUtils.getValue(this.state.style,"dx3",this.dx3)))),a=Math.max(0,Math.min(1-parseFloat(mxUtils.getValue(this.state.style,"dy1",this.dy1))/2,parseFloat(mxUtils.getValue(this.state.style,"dy3",this.dy3))));return new mxPoint(t.x+t.width-e,t.y+a*t.height/2)}),(function(t,e){this.state.style.dx3=Math.round(100*Math.max(parseFloat(mxUtils.getValue(this.state.style,"dx2",this.dx2)),Math.min(t.width,t.x+t.width-e.x)))/100,this.state.style.dy3=Math.round(100*Math.max(0,Math.min(parseFloat(mxUtils.getValue(this.state.style,"dy1",this.dy1)),(e.y-t.y)/t.height*2)))/100}));return e.push(s),e},mxShapeArrows2SharpArrow2.prototype.getConstraints=function(t,e,a){var n=[],s=.5*a*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"dy1",this.dy1)))),i=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dx1",this.dx1)))),o=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dx2",this.dx2)))),h=.5*a*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"dy3",this.dy3)))),l=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dx3",this.dx3)))),r=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"notch",this.notch))));return Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dx1",this.dx1)))),Math.max(0,Math.min(a,parseFloat(mxUtils.getValue(this.style,"dy1",this.dy1)))),n.push(new mxConnectionConstraint(new mxPoint(1,.5),!1)),n.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null,r,0)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,s)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e-i,s)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e-l,h)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e-o,0)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,a-s)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e-i,a-s)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e-l,a-h)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e-o,a)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e-i),s)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e-i),a-s)),n},mxUtils.extend(mxShapeArrows2CalloutArrow,mxActor),mxShapeArrows2CalloutArrow.prototype.customProperties=[{name:"dx",dispName:"Arrowhead Length",type:"float",min:0,defVal:20},{name:"arrowHead",dispName:"Arrowhead Width",type:"float",min:0,defVal:10},{name:"dy",dispName:"Arrow Width",type:"float",min:0,defVal:10},{name:"notch",dispName:"Rectangle Width",type:"float",min:0,defVal:60}],mxShapeArrows2CalloutArrow.prototype.cst={CALLOUT_ARROW:"mxgraph.arrows2.calloutArrow"},mxShapeArrows2CalloutArrow.prototype.paintVertexShape=function(t,e,a,n,s){t.translate(e,a);var i=Math.max(0,Math.min(s,parseFloat(mxUtils.getValue(this.style,"dy",this.dy)))),o=Math.max(0,Math.min(n,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),h=Math.max(0,Math.min(n,parseFloat(mxUtils.getValue(this.style,"notch",this.notch)))),l=Math.max(0,Math.min(s,parseFloat(mxUtils.getValue(this.style,"arrowHead",this.arrowHead))));t.begin(),t.moveTo(0,0),t.lineTo(h,0),t.lineTo(h,.5*s-i),t.lineTo(n-o,.5*s-i),t.lineTo(n-o,.5*s-i-l),t.lineTo(n,.5*s),t.lineTo(n-o,.5*s+i+l),t.lineTo(n-o,.5*s+i),t.lineTo(h,.5*s+i),t.lineTo(h,s),t.lineTo(0,s),t.close(),t.fillAndStroke()},mxCellRenderer.registerShape(mxShapeArrows2CalloutArrow.prototype.cst.CALLOUT_ARROW,mxShapeArrows2CalloutArrow),mxShapeArrows2CalloutArrow.prototype.constraints=null,Graph.handleFactory[mxShapeArrows2CalloutArrow.prototype.cst.CALLOUT_ARROW]=function(t){var e=[Graph.createHandle(t,["dx","dy"],(function(t){var e=Math.max(0,Math.min(t.height/2,parseFloat(mxUtils.getValue(this.state.style,"arrowHead",this.arrowHead)))),a=Math.max(0,Math.min(t.width,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx)))),n=Math.max(0,Math.min(t.height/2-e,parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy))));return new mxPoint(t.x+t.width-a,t.y+t.height/2-n)}),(function(t,e){this.state.style.dx=Math.round(100*Math.max(0,Math.min(t.width-parseFloat(mxUtils.getValue(this.state.style,"notch",this.notch)),t.x+t.width-e.x)))/100,this.state.style.dy=Math.round(100*Math.max(0,Math.min(t.height/2-parseFloat(mxUtils.getValue(this.state.style,"arrowHead",this.arrowHead)),t.y+t.height/2-e.y)))/100}))],a=Graph.createHandle(t,["notch"],(function(t){var e=Math.max(0,Math.min(t.width,parseFloat(mxUtils.getValue(this.state.style,"notch",this.notch))));return new mxPoint(t.x+e,t.y+t.height/2)}),(function(t,e){this.state.style.notch=Math.round(100*Math.max(0,Math.min(t.width-parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx)),e.x-t.x)))/100}));e.push(a);var n=Graph.createHandle(t,["arrowHead"],(function(t){var e=Math.max(0,Math.min(t.width,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx)))),a=Math.max(0,Math.min(t.height/2,parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy)))),n=Math.max(0,Math.min(t.height/2,parseFloat(mxUtils.getValue(this.state.style,"arrowHead",this.arrowHead))));return new mxPoint(t.x+t.width-e,t.y+t.height/2-a-n)}),(function(t,e){this.state.style.arrowHead=Math.round(100*Math.max(0,Math.min(t.height/2-parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy)),t.y+t.height/2-parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy))-e.y)))/100}));return e.push(n),e},mxShapeArrows2CalloutArrow.prototype.getConstraints=function(t,e,a){var n=[],s=Math.max(0,Math.min(a,parseFloat(mxUtils.getValue(this.style,"dy",this.dy)))),i=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),o=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"notch",this.notch)))),h=Math.max(0,Math.min(a,parseFloat(mxUtils.getValue(this.style,"arrowHead",this.arrowHead))));return n.push(new mxConnectionConstraint(new mxPoint(0,0),!1)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,o,0)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,o,.5*a-s)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e-i,.5*a-s)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e-i,.5*a-s-h)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,.5*a)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e-i,.5*a+s+h)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e-i,.5*a+s)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,o,.5*a+s)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,o,a)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,a)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*o,0)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*o,a)),n.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null,.5*(o+e-i),-s)),n.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null,.5*(o+e-i),s)),n},mxUtils.extend(mxShapeArrows2BendArrow,mxActor),mxShapeArrows2BendArrow.prototype.customProperties=[{name:"dx",dispName:"Arrowhead Length",type:"float",min:0,defVal:38},{name:"dy",dispName:"Arrow Width",type:"float",min:0,defVal:15},{name:"notch",dispName:"Notch",type:"float",min:0,defVal:0},{name:"arrowHead",dispName:"Arrowhead Width",type:"float",min:0,defVal:55},{name:"rounded",dispName:"Rounded",type:"boolean",defVal:!1}],mxShapeArrows2BendArrow.prototype.cst={BEND_ARROW:"mxgraph.arrows2.bendArrow"},mxShapeArrows2BendArrow.prototype.paintVertexShape=function(t,e,a,n,s){t.translate(e,a);var i=Math.max(0,Math.min(s,parseFloat(mxUtils.getValue(this.style,"dy",this.dy)))),o=Math.max(0,Math.min(n,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),h=Math.max(0,Math.min(s,parseFloat(mxUtils.getValue(this.style,"notch",this.notch)))),l=Math.max(0,Math.min(s,parseFloat(mxUtils.getValue(this.style,"arrowHead",this.arrowHead)))),r=mxUtils.getValue(this.style,"rounded","0");t.begin(),t.moveTo(n-o,0),t.lineTo(n,.5*l),t.lineTo(n-o,l),t.lineTo(n-o,l/2+i),"1"==r?(t.lineTo(2.2*i,l/2+i),t.arcTo(.2*i,.2*i,0,0,0,2*i,l/2+1.2*i)):t.lineTo(2*i,l/2+i),t.lineTo(2*i,s),t.lineTo(i,s-h),t.lineTo(0,s),"1"==r?(t.lineTo(0,l/2+i),t.arcTo(2*i,2*i,0,0,1,2*i,l/2-i)):t.lineTo(0,l/2-i),t.lineTo(n-o,l/2-i),t.close(),t.fillAndStroke()},mxCellRenderer.registerShape(mxShapeArrows2BendArrow.prototype.cst.BEND_ARROW,mxShapeArrows2BendArrow),mxShapeArrows2BendArrow.prototype.constraints=null,Graph.handleFactory[mxShapeArrows2BendArrow.prototype.cst.BEND_ARROW]=function(t){var e=[Graph.createHandle(t,["dx","dy"],(function(t){var e=Math.max(0,Math.min(t.height,parseFloat(mxUtils.getValue(this.state.style,"arrowHead",this.arrowHead)))),a=Math.max(0,Math.min(t.width,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx)))),n=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy))));return new mxPoint(t.x+t.width-a,t.y+e/2-n)}),(function(t,e){this.state.style.dx=Math.round(100*Math.max(0,Math.min(t.width-2.2*parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy)),t.x+t.width-e.x)))/100,this.state.style.dy=Math.round(100*Math.max(0,Math.min(parseFloat(mxUtils.getValue(this.state.style,"arrowHead",this.arrowHead))/2,t.y+parseFloat(mxUtils.getValue(this.state.style,"arrowHead",this.arrowHead))/2-e.y)))/100}))],a=Graph.createHandle(t,["notch"],(function(t){var e=Math.max(0,Math.min(t.height,parseFloat(mxUtils.getValue(this.state.style,"arrowHead",this.arrowHead)))),a=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy)))),n=Math.max(0,Math.min(t.height-e/2-a,parseFloat(mxUtils.getValue(this.state.style,"notch",this.notch))));return new mxPoint(t.x+a,t.y+t.height-n)}),(function(t,e){this.state.style.notch=Math.round(100*Math.max(0,Math.min(t.height-parseFloat(mxUtils.getValue(this.state.style,"arrowHead",this.arrowHead))/2-parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy)),t.y+t.height-e.y)))/100}));e.push(a);var n=Graph.createHandle(t,["arrowHead"],(function(t){var e=Math.max(0,Math.min(t.width,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx)))),a=Math.max(0,Math.min(t.height,parseFloat(mxUtils.getValue(this.state.style,"arrowHead",this.arrowHead))));return new mxPoint(t.x+t.width-e,t.y+a)}),(function(t,e){this.state.style.arrowHead=Math.round(100*Math.max(2*parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy)),Math.min(t.height,e.y-t.y)))/100}));return e.push(n),e},mxShapeArrows2BendArrow.prototype.getConstraints=function(t,e,a){var n=[],s=Math.max(0,Math.min(a,parseFloat(mxUtils.getValue(this.style,"dy",this.dy)))),i=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),o=Math.max(0,Math.min(a,parseFloat(mxUtils.getValue(this.style,"notch",this.notch)))),h=Math.max(0,Math.min(a,parseFloat(mxUtils.getValue(this.style,"arrowHead",this.arrowHead)))),l=mxUtils.getValue(this.style,"rounded","0");return n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e-i+2*s),h/2-s)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e-i,h/2-s)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e-i,0)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,.5*h)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e-i,h)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e-i,h/2+s)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(e-i+2*s),h/2+s)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,2*s,.5*(a-h/2-s)+h/2+s)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,2*s,a)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,s,a-o)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,a)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(a-h/2-s)+h/2+s)),"1"==l?(n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.586*s,h/2-.414*s)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,2*s+.0586*s,h/2+s+.0586*s))):(n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,h/2-s)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,2*s,h/2+s))),n},mxUtils.extend(mxShapeArrows2BendDoubleArrow,mxActor),mxShapeArrows2BendDoubleArrow.prototype.customProperties=[{name:"dx",dispName:"Arrowhead Length",type:"float",min:0,defVal:38},{name:"dy",dispName:"Arrow Width",type:"float",min:0,defVal:15},{name:"arrowHead",dispName:"Arrowhead Width",type:"float",min:0,defVal:55},{name:"rounded",dispName:"Rounded",type:"boolean",defVal:!1}],mxShapeArrows2BendDoubleArrow.prototype.cst={BEND_DOUBLE_ARROW:"mxgraph.arrows2.bendDoubleArrow"},mxShapeArrows2BendDoubleArrow.prototype.paintVertexShape=function(t,e,a,n,s){t.translate(e,a);var i=Math.max(0,Math.min(s,parseFloat(mxUtils.getValue(this.style,"dy",this.dy)))),o=Math.max(0,Math.min(n,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),h=Math.max(0,Math.min(n,parseFloat(mxUtils.getValue(this.style,"arrowHead",this.arrowHead)))),l=mxUtils.getValue(this.style,"rounded","0");t.begin(),t.moveTo(n-o,0),t.lineTo(n,.5*h),t.lineTo(n-o,h),t.lineTo(n-o,h/2+i),"1"==l?(t.lineTo(h/2+1.2*i,h/2+i),t.arcTo(.2*i,.2*i,0,0,0,h/2+i,h/2+1.2*i)):t.lineTo(h/2+i,h/2+i),t.lineTo(h/2+i,s-o),t.lineTo(h,s-o),t.lineTo(h/2,s),t.lineTo(0,s-o),t.lineTo(h/2-i,s-o),"1"==l?(t.lineTo(h/2-i,h/2+i),t.arcTo(2*i,2*i,0,0,1,h/2+i,h/2-i)):t.lineTo(h/2-i,h/2-i),t.lineTo(n-o,h/2-i),t.close(),t.fillAndStroke()},mxCellRenderer.registerShape(mxShapeArrows2BendDoubleArrow.prototype.cst.BEND_DOUBLE_ARROW,mxShapeArrows2BendDoubleArrow),mxShapeArrows2BendDoubleArrow.prototype.constraints=null,Graph.handleFactory[mxShapeArrows2BendDoubleArrow.prototype.cst.BEND_DOUBLE_ARROW]=function(t){var e=[Graph.createHandle(t,["dx","dy"],(function(t){var e=Math.max(0,Math.min(Math.min(t.height,t.width)-parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx)),parseFloat(mxUtils.getValue(this.state.style,"arrowHead",this.arrowHead)))),a=Math.max(0,Math.min(Math.min(t.width,t.height)-e,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx)))),n=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy))));return new mxPoint(t.x+t.width-a,t.y+e/2-n)}),(function(t,e){this.state.style.dx=Math.round(100*Math.max(0,Math.min(Math.min(t.width,t.height)-parseFloat(mxUtils.getValue(this.state.style,"arrowHead",this.arrowHead)),t.x+t.width-e.x)))/100,this.state.style.dy=Math.round(100*Math.max(0,Math.min(parseFloat(mxUtils.getValue(this.state.style,"arrowHead",this.arrowHead))/2,t.y+parseFloat(mxUtils.getValue(this.state.style,"arrowHead",this.arrowHead))/2-e.y)))/100}))],a=Graph.createHandle(t,["arrowHead"],(function(t){var e=Math.max(0,Math.min(t.width,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx)))),a=Math.max(0,Math.min(Math.min(t.height,t.width)-e,parseFloat(mxUtils.getValue(this.state.style,"arrowHead",this.arrowHead))));return new mxPoint(t.x+t.width-e,t.y+a)}),(function(t,e){this.state.style.arrowHead=Math.round(100*Math.max(2*parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy)),Math.min(Math.min(t.height,t.width)-parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx)),e.y-t.y)))/100}));return e.push(a),e},mxShapeArrows2BendDoubleArrow.prototype.getConstraints=function(t,e,a){var n=[],s=Math.max(0,Math.min(a,parseFloat(mxUtils.getValue(this.style,"dy",this.dy)))),i=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),o=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"arrowHead",this.arrowHead)))),h=mxUtils.getValue(this.style,"rounded","0");return n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e-i,0)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e,.5*o)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e-i,o)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e-i,o/2+s)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(o/2+s+e-i),o/2+s)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(o/2+s+e-i),o/2-s)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,o/2+s,.5*(o/2+s+a-i))),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,o/2-s,.5*(o/2+s+a-i))),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,o/2+s,a-i)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,o,a-i)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,o/2,a)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,a-i)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,o/2-s,a-i)),"1"==h?(n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,o/2-.414*s,o/2-.414*s)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,o/2+s+.0586*s,o/2+s+.0586*s))):(n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,o/2-s,o/2-s)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,o/2+s,o/2+s))),n},mxUtils.extend(mxShapeArrows2CalloutDoubleArrow,mxActor),mxShapeArrows2CalloutDoubleArrow.prototype.customProperties=[{name:"dx",dispName:"Arrowhead Length",type:"float",min:0,defVal:20},{name:"dy",dispName:"Arrow Width",type:"float",min:0,defVal:10},{name:"arrowHead",dispName:"Arrowhead Width",type:"float",min:0,defVal:10},{name:"notch",dispName:"Rect Size",type:"float",min:0,defVal:24}],mxShapeArrows2CalloutDoubleArrow.prototype.cst={CALLOUT_DOUBLE_ARROW:"mxgraph.arrows2.calloutDoubleArrow"},mxShapeArrows2CalloutDoubleArrow.prototype.paintVertexShape=function(t,e,a,n,s){t.translate(e,a);var i=Math.max(0,Math.min(s,parseFloat(mxUtils.getValue(this.style,"dy",this.dy)))),o=Math.max(0,Math.min(n,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),h=Math.max(0,Math.min(n,parseFloat(mxUtils.getValue(this.style,"notch",this.notch)))),l=Math.max(0,Math.min(s,parseFloat(mxUtils.getValue(this.style,"arrowHead",this.arrowHead))));t.begin(),t.moveTo(n/2-h,0),t.lineTo(n/2+h,0),t.lineTo(n/2+h,.5*s-i),t.lineTo(n-o,.5*s-i),t.lineTo(n-o,.5*s-i-l),t.lineTo(n,.5*s),t.lineTo(n-o,.5*s+i+l),t.lineTo(n-o,.5*s+i),t.lineTo(n/2+h,.5*s+i),t.lineTo(n/2+h,s),t.lineTo(n/2-h,s),t.lineTo(n/2-h,.5*s+i),t.lineTo(o,.5*s+i),t.lineTo(o,.5*s+i+l),t.lineTo(0,.5*s),t.lineTo(o,.5*s-i-l),t.lineTo(o,.5*s-i),t.lineTo(n/2-h,.5*s-i),t.close(),t.fillAndStroke()},mxCellRenderer.registerShape(mxShapeArrows2CalloutDoubleArrow.prototype.cst.CALLOUT_DOUBLE_ARROW,mxShapeArrows2CalloutDoubleArrow),mxShapeArrows2CalloutDoubleArrow.prototype.constraints=null,Graph.handleFactory[mxShapeArrows2CalloutDoubleArrow.prototype.cst.CALLOUT_DOUBLE_ARROW]=function(t){var e=[Graph.createHandle(t,["dx","dy"],(function(t){var e=Math.max(0,Math.min(t.height/2,parseFloat(mxUtils.getValue(this.state.style,"arrowHead",this.arrowHead)))),a=Math.max(0,Math.min(t.width,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx)))),n=Math.max(0,Math.min(t.height/2-e,parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy))));return new mxPoint(t.x+t.width-a,t.y+t.height/2-n)}),(function(t,e){this.state.style.dx=Math.round(100*Math.max(0,Math.min(t.width/2-parseFloat(mxUtils.getValue(this.state.style,"notch",this.notch)),t.x+t.width-e.x)))/100,this.state.style.dy=Math.round(100*Math.max(0,Math.min(t.height/2-parseFloat(mxUtils.getValue(this.state.style,"arrowHead",this.arrowHead)),t.y+t.height/2-e.y)))/100}))],a=Graph.createHandle(t,["notch"],(function(t){var e=Math.max(0,Math.min(t.width,parseFloat(mxUtils.getValue(this.state.style,"notch",this.notch))));return new mxPoint(t.x+t.width/2+e,t.y+t.height/2)}),(function(t,e){this.state.style.notch=Math.round(100*Math.max(0,Math.min(t.width/2-parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx)),e.x-t.x-t.width/2)))/100}));e.push(a);var n=Graph.createHandle(t,["arrowHead"],(function(t){var e=Math.max(0,Math.min(t.width,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx)))),a=Math.max(0,Math.min(t.height/2,parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy)))),n=Math.max(0,Math.min(t.height/2,parseFloat(mxUtils.getValue(this.state.style,"arrowHead",this.arrowHead))));return new mxPoint(t.x+t.width-e,t.y+t.height/2-a-n)}),(function(t,e){this.state.style.arrowHead=Math.round(100*Math.max(0,Math.min(t.height/2-parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy)),t.y+t.height/2-parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy))-e.y)))/100}));return e.push(n),e},mxShapeArrows2CalloutDoubleArrow.prototype.getConstraints=function(t,e,a){var n=[],s=Math.max(0,Math.min(a,parseFloat(mxUtils.getValue(this.style,"dy",this.dy)))),i=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),o=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"notch",this.notch)))),h=Math.max(0,Math.min(a,parseFloat(mxUtils.getValue(this.style,"arrowHead",this.arrowHead))));return n.push(new mxConnectionConstraint(new mxPoint(.5,0),!1)),n.push(new mxConnectionConstraint(new mxPoint(.5,1),!1)),n.push(new mxConnectionConstraint(new mxPoint(0,.5),!1)),n.push(new mxConnectionConstraint(new mxPoint(1,.5),!1)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e/2-o,0)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e/2+o,0)),n.push(new mxConnectionConstraint(new mxPoint(0,1),!1,null,e/2-o,0)),n.push(new mxConnectionConstraint(new mxPoint(0,1),!1,null,e/2+o,0)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e-i,.5*a-s-h)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e-i,.5*a+s+h)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,i,.5*a-s-h)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,i,.5*a+s+h)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(1.5*e-i+o),.5*a-s)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(1.5*e-i+o),.5*a+s)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(.5*e+i-o),.5*a-s)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*(.5*e+i-o),.5*a+s)),n},mxUtils.extend(mxShapeArrows2CalloutQuadArrow,mxActor),mxShapeArrows2CalloutQuadArrow.prototype.customProperties=[{name:"dx",dispName:"Arrowhead Length",type:"float",min:0,defVal:20},{name:"dy",dispName:"Arrow Width",type:"float",min:0,defVal:10},{name:"notch",dispName:"Rect Size",type:"float",min:0,defVal:24},{name:"arrowHead",dispName:"Arrowhead Width",type:"float",min:0,defVal:10}],mxShapeArrows2CalloutQuadArrow.prototype.cst={CALLOUT_QUAD_ARROW:"mxgraph.arrows2.calloutQuadArrow"},mxShapeArrows2CalloutQuadArrow.prototype.paintVertexShape=function(t,e,a,n,s){t.translate(e,a);var i=Math.max(0,Math.min(s,parseFloat(mxUtils.getValue(this.style,"dy",this.dy)))),o=Math.max(0,Math.min(n,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),h=Math.max(0,Math.min(n,parseFloat(mxUtils.getValue(this.style,"notch",this.notch)))),l=Math.max(0,Math.min(s,parseFloat(mxUtils.getValue(this.style,"arrowHead",this.arrowHead))));t.begin(),t.moveTo(.5*n+i,.5*s-h),t.lineTo(.5*n+h,.5*s-h),t.lineTo(.5*n+h,.5*s-i),t.lineTo(n-o,.5*s-i),t.lineTo(n-o,.5*s-i-l),t.lineTo(n,.5*s),t.lineTo(n-o,.5*s+i+l),t.lineTo(n-o,.5*s+i),t.lineTo(.5*n+h,.5*s+i),t.lineTo(.5*n+h,.5*s+h),t.lineTo(.5*n+i,.5*s+h),t.lineTo(.5*n+i,s-o),t.lineTo(.5*n+i+l,s-o),t.lineTo(.5*n,s),t.lineTo(.5*n-i-l,s-o),t.lineTo(.5*n-i,s-o),t.lineTo(.5*n-i,.5*s+h),t.lineTo(.5*n-h,.5*s+h),t.lineTo(.5*n-h,.5*s+i),t.lineTo(o,.5*s+i),t.lineTo(o,.5*s+i+l),t.lineTo(0,.5*s),t.lineTo(o,.5*s-i-l),t.lineTo(o,.5*s-i),t.lineTo(.5*n-h,.5*s-i),t.lineTo(.5*n-h,.5*s-h),t.lineTo(.5*n-i,.5*s-h),t.lineTo(.5*n-i,o),t.lineTo(.5*n-i-l,o),t.lineTo(.5*n,0),t.lineTo(.5*n+i+l,o),t.lineTo(.5*n+i,o),t.close(),t.fillAndStroke()},mxCellRenderer.registerShape(mxShapeArrows2CalloutQuadArrow.prototype.cst.CALLOUT_QUAD_ARROW,mxShapeArrows2CalloutQuadArrow),mxShapeArrows2CalloutQuadArrow.prototype.constraints=null,Graph.handleFactory[mxShapeArrows2CalloutQuadArrow.prototype.cst.CALLOUT_QUAD_ARROW]=function(t){var e=[Graph.createHandle(t,["dx","dy"],(function(t){Math.max(0,Math.min(t.height/2,parseFloat(mxUtils.getValue(this.state.style,"arrowHead",this.arrowHead))));var e=Math.max(0,Math.min(t.width,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx)))),a=Math.max(0,Math.min(t.height,parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy))));return new mxPoint(t.x+t.width-e,t.y+t.height/2-a)}),(function(t,e){this.state.style.dx=Math.round(100*Math.max(0,Math.min(Math.min(t.width,t.height)/2-Math.max(parseFloat(mxUtils.getValue(this.state.style,"notch",this.notch)),parseFloat(mxUtils.getValue(this.state.style,"arrowHead",this.arrowHead))),t.x+t.width-e.x)))/100,this.state.style.dy=Math.round(100*Math.max(0,Math.min(parseFloat(mxUtils.getValue(this.state.style,"notch",this.notch)),t.y+t.height/2-e.y)))/100}))],a=Graph.createHandle(t,["notch"],(function(t){var e=Math.max(parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy)),Math.min(Math.min(t.width,t.height),parseFloat(mxUtils.getValue(this.state.style,"notch",this.notch))));return new mxPoint(t.x+t.width/2+e,t.y+t.height/2)}),(function(t,e){this.state.style.notch=Math.round(100*Math.max(parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy)),Math.min(Math.min(t.width,t.height)/2-parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx)),e.x-t.x-t.width/2)))/100}));e.push(a);var n=Graph.createHandle(t,["arrowHead"],(function(t){var e=Math.max(0,Math.min(t.width,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx)))),a=Math.max(0,Math.min(t.height/2,parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy)))),n=Math.max(0,Math.min(t.height/2,parseFloat(mxUtils.getValue(this.state.style,"arrowHead",this.arrowHead))));return new mxPoint(t.x+t.width-e,t.y+t.height/2-a-n)}),(function(t,e){this.state.style.arrowHead=Math.round(100*Math.max(0,Math.min(t.height/2-parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy)),t.y+t.height/2-e.y)))/100}));return e.push(n),e},mxShapeArrows2CalloutQuadArrow.prototype.getConstraints=function(t,e,a){var n=[],s=Math.max(0,Math.min(a,parseFloat(mxUtils.getValue(this.style,"dy",this.dy)))),i=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),o=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.style,"notch",this.notch)))),h=Math.max(0,Math.min(a,parseFloat(mxUtils.getValue(this.style,"arrowHead",this.arrowHead))));return n.push(new mxConnectionConstraint(new mxPoint(.5,0),!1)),n.push(new mxConnectionConstraint(new mxPoint(.5,1),!1)),n.push(new mxConnectionConstraint(new mxPoint(0,.5),!1)),n.push(new mxConnectionConstraint(new mxPoint(1,.5),!1)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*e+s,.5*a-o)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*e+o,.5*a-o)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*e+o,.5*a-s)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*e+s,.5*a+o)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*e+o,.5*a+o)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*e+o,.5*a+s)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*e-s,.5*a+o)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*e-o,.5*a+o)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*e-o,.5*a+s)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*e-s,.5*a-o)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*e-o,.5*a-o)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*e-o,.5*a-s)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e-i,.5*a-s-h)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,e-i,.5*a+s+h)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*e-s-h,a-i)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*e+s+h,a-i)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,i,.5*a-s-h)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,i,.5*a+s+h)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*e-s-h,i)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*e+s+h,i)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*e+.5*(o-i),.5*a-s)),n.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*e+.5*(o-i),.5*a+s))