@zklogic/draw.io
Version:
Draw.IO - Graph Editor integration in Angular-cli
1 lines • 64.9 kB
JavaScript
function mxShapeInfographicNumEntryVert(n,t,e,i){mxShape.call(this),this.bounds=n,this.fill=t,this.stroke=e,this.strokewidth=null!=i?i:1,this.dy=.5}function mxShapeInfographicBendingArch(n,t,e,i){mxShape.call(this),this.bounds=n,this.fill=t,this.stroke=e,this.strokewidth=null!=i?i:1,this.startAngle=.25,this.endAngle=.75,this.arcWidth=.5}function mxShapeInfographicParallelogram(n,t,e,i){mxShape.call(this),this.bounds=n,this.fill=t,this.stroke=e,this.strokewidth=null!=i?i:1,this.dx=10}function mxShapeInfographicRibbonRolled(n,t,e,i){mxShape.call(this),this.bounds=n,this.fill=t,this.stroke=e,this.strokewidth=null!=i?i:1,this.dx=185,this.dy=15}function mxShapeInfographicRibbonDoubleFolded(n,t,e,i){mxShape.call(this),this.bounds=n,this.fill=t,this.stroke=e,this.strokewidth=null!=i?i:1,this.dx=25,this.dy=15}function mxShapeInfographicRibbonFrontFolded(n,t,e,i){mxShape.call(this),this.bounds=n,this.fill=t,this.stroke=e,this.strokewidth=null!=i?i:1,this.dx=.5,this.dy=.5,this.notch=.5}function mxShapeInfographicRibbonBackFolded(n,t,e,i){mxShape.call(this),this.bounds=n,this.fill=t,this.stroke=e,this.strokewidth=null!=i?i:1,this.dx=.5,this.dy=.5,this.notch=.5}function mxShapeInfographicBanner(n,t,e,i){mxShape.call(this),this.bounds=n,this.fill=t,this.stroke=e,this.strokewidth=null!=i?i:1,this.dx=.5,this.dy=.5,this.notch=.5}function mxShapeInfographicCircularCallout(n,t,e,i){mxShape.call(this),this.bounds=n,this.fill=t,this.stroke=e,this.strokewidth=null!=i?i:1,this.dy=.5}function mxShapeInfographicShadedTriangle(n,t,e,i){mxShape.call(this),this.bounds=n,this.fill=t,this.stroke=e,this.strokewidth=null!=i?i:1}function mxShapeInfographicShadedPyramid(n,t,e,i){mxShape.call(this),this.bounds=n,this.fill=t,this.stroke=e,this.strokewidth=null!=i?i:1}function mxShapeInfographicPyramidStep(n,t,e,i){mxShape.call(this),this.bounds=n,this.fill=t,this.stroke=e,this.strokewidth=null!=i?i:1}function mxShapeInfographicCylinder(n,t,e,i){mxShape.call(this),this.bounds=n,this.fill=t,this.stroke=e,this.strokewidth=null!=i?i:1}function mxShapeInfographicCircularCallout2(n,t,e,i){mxShape.call(this),this.bounds=n,this.fill=t,this.stroke=e,this.strokewidth=null!=i?i:1,this.dy=.5}function mxShapeInfographicBannerSingleFold(n,t,e,i){mxShape.call(this),this.bounds=n,this.fill=t,this.stroke=e,this.strokewidth=null!=i?i:1,this.dx=.5,this.dy=.5,this.dx2=.5,this.notch=.5}function mxShapeInfographicShadedCube(n,t,e,i){mxShape.call(this),this.bounds=n,this.fill=t,this.stroke=e,this.strokewidth=null!=i?i:1,this.isoAngle=15}function mxShapeInfographicPartConcEllipse(n,t,e,i){mxShape.call(this),this.bounds=n,this.fill=t,this.stroke=e,this.strokewidth=null!=i?i:1,this.startAngle=.25,this.endAngle=.75,this.arcWidth=.5}function mxShapeInfographicBannerHalfFold(n,t,e,i){mxShape.call(this),this.bounds=n,this.fill=t,this.stroke=e,this.strokewidth=null!=i?i:1,this.dx=.5,this.dx2=.5,this.notch=.5}function mxShapeInfographicCircularDial(n,t,e,i){mxShape.call(this),this.bounds=n,this.fill=t,this.stroke=e,this.strokewidth=null!=i?i:1,this.dy=.5}function mxShapeInfographicRibbonSimple(n,t,e,i){mxShape.call(this),this.bounds=n,this.fill=t,this.stroke=e,this.strokewidth=null!=i?i:1,this.notch1=.5,this.notch2=.5}function mxShapeInfographicBarCallout(n,t,e,i){mxShape.call(this),this.bounds=n,this.fill=t,this.stroke=e,this.strokewidth=null!=i?i:1,this.dx=.5,this.dy=.5}function mxShapeInfographicFlag(n,t,e,i){mxShape.call(this),this.bounds=n,this.fill=t,this.stroke=e,this.strokewidth=null!=i?i:1,this.dx=.5,this.dy=.5}mxUtils.extend(mxShapeInfographicNumEntryVert,mxActor),mxShapeInfographicNumEntryVert.prototype.cst={NUM_ENTRY_VERT:"mxgraph.infographic.numberedEntryVert"},mxShapeInfographicNumEntryVert.prototype.customProperties=[{name:"dy",dispName:"Circle Size",min:0,defVal:25}],mxShapeInfographicNumEntryVert.prototype.paintVertexShape=function(n,t,e,i,o){n.translate(t,e);var a=Math.max(0,Math.min(i,parseFloat(mxUtils.getValue(this.style,"dy",this.dy)))),h=Math.min(a,i-10,o-5);n.ellipse(.5*i-.5*h,0,h,h),n.fillAndStroke(),n.begin(),n.moveTo(0,.5*h),n.lineTo(.5*i-.5*h-5,.5*h),n.arcTo(.5*h+5,.5*h+5,0,0,0,.5*i+.5*h+5,.5*h),n.lineTo(i,.5*h),n.lineTo(i,o),n.lineTo(0,o),n.close(),n.fillAndStroke()},mxCellRenderer.registerShape(mxShapeInfographicNumEntryVert.prototype.cst.NUM_ENTRY_VERT,mxShapeInfographicNumEntryVert),Graph.handleFactory[mxShapeInfographicNumEntryVert.prototype.cst.NUM_ENTRY_VERT]=function(n){return[Graph.createHandle(n,["dy"],(function(n){var t=Math.max(0,Math.min(n.width,n.width,parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy))));return new mxPoint(n.x+n.width/2,n.y+t)}),(function(n,t){this.state.style.dy=Math.round(100*Math.max(0,Math.min(n.height,n.width,t.y-n.y)))/100}))]},mxShapeInfographicNumEntryVert.prototype.getConstraints=function(n,t,e){var i=[],o=Math.max(0,Math.min(t,parseFloat(mxUtils.getValue(this.style,"dy",this.dy)))),a=Math.min(o,t-10,e-5);return i.push(new mxConnectionConstraint(new mxPoint(.5,0),!1)),i.push(new mxConnectionConstraint(new mxPoint(.5,1),!1)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*a)),i.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,0,.5*a)),i.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null,0,.25*a)),i.push(new mxConnectionConstraint(new mxPoint(1,.5),!1,null,0,.25*a)),i.push(new mxConnectionConstraint(new mxPoint(0,1),!1)),i.push(new mxConnectionConstraint(new mxPoint(1,1),!1)),i},mxUtils.extend(mxShapeInfographicBendingArch,mxActor),mxShapeInfographicBendingArch.prototype.cst={BENDING_ARCH:"mxgraph.infographic.bendingArch"},mxShapeInfographicBendingArch.prototype.customProperties=[{name:"startAngle",dispName:"Start Angle",min:0,max:1,defVal:.75},{name:"endAngle",dispName:"End Angle",min:0,max:1,defVal:.25},{name:"arcWidth",dispName:"Arc Width",min:0,max:1,defVal:.25}],mxShapeInfographicBendingArch.prototype.paintVertexShape=function(n,t,e,i,o){n.translate(t,e);var a=2*Math.PI*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"startAngle",this.startAngle)))),h=2*Math.PI*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"endAngle",this.endAngle)))),l=1-Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arcWidth",this.arcWidth)))),s=.5*i,r=.5*o,m=s*l,x=r*l,p=s+Math.sin(a)*s,c=r-Math.cos(a)*r,u=s+Math.sin(a)*m,d=r-Math.cos(a)*x,C=s+Math.sin(h)*s,w=r-Math.cos(h)*r,g=s+Math.sin(h)*m,y=r-Math.cos(h)*x,f=h-a;f<0&&(f+=2*Math.PI);var M=0;f>Math.PI&&(M=1);var T=m-5,S=x-5;n.ellipse(.5*i-T,.5*o-S,2*T,2*S),n.fillAndStroke(),n.begin(),n.moveTo(p,c),n.arcTo(s,r,0,M,1,C,w),n.lineTo(g,y),n.arcTo(m,x,0,M,0,u,d),n.close(),n.fillAndStroke()},mxCellRenderer.registerShape(mxShapeInfographicBendingArch.prototype.cst.BENDING_ARCH,mxShapeInfographicBendingArch),mxShapeInfographicBendingArch.prototype.constraints=null,Graph.handleFactory[mxShapeInfographicBendingArch.prototype.cst.BENDING_ARCH]=function(n){var t=[Graph.createHandle(n,["startAngle"],(function(n){var t=2*Math.PI*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"startAngle",this.startAngle))));return new mxPoint(n.x+.5*n.width+Math.sin(t)*n.width*.5,n.y+.5*n.height-Math.cos(t)*n.height*.5)}),(function(n,t){var e=Math.round(100*Math.max(-1,Math.min(1,(t.x-n.x-.5*n.width)/(.5*n.width))))/100,i=-Math.round(100*Math.max(-1,Math.min(1,(t.y-n.y-.5*n.height)/(.5*n.height))))/100,o=.5*Math.atan2(e,i)/Math.PI;o<0&&(o=1+o),this.state.style.startAngle=o}))],e=Graph.createHandle(n,["endAngle"],(function(n){var t=2*Math.PI*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"endAngle",this.endAngle))));return new mxPoint(n.x+.5*n.width+Math.sin(t)*n.width*.5,n.y+.5*n.height-Math.cos(t)*n.height*.5)}),(function(n,t){var e=Math.round(100*Math.max(-1,Math.min(1,(t.x-n.x-.5*n.width)/(.5*n.width))))/100,i=-Math.round(100*Math.max(-1,Math.min(1,(t.y-n.y-.5*n.height)/(.5*n.height))))/100,o=.5*Math.atan2(e,i)/Math.PI;o<0&&(o=1+o),this.state.style.endAngle=o}));t.push(e);var i=Graph.createHandle(n,["arcWidth"],(function(n){var t=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"arcWidth",this.arcWidth))));return new mxPoint(n.x+n.width/2,n.y+t*n.height*.5)}),(function(n,t){this.state.style.arcWidth=Math.round(100*Math.max(0,Math.min(n.height/2,n.width/2,(t.y-n.y)/(.5*n.height))))/100}));return t.push(i),t},mxUtils.extend(mxShapeInfographicParallelogram,mxActor),mxShapeInfographicParallelogram.prototype.cst={PARALLELOGRAM:"mxgraph.infographic.parallelogram"},mxShapeInfographicParallelogram.prototype.customProperties=[{name:"dx",dispName:"Angle",min:0,defVal:15}],mxShapeInfographicParallelogram.prototype.paintVertexShape=function(n,t,e,i,o){n.translate(t,e);var a=Math.max(0,Math.min(.5*i,parseFloat(mxUtils.getValue(this.style,"dx",this.dx))));n.begin(),n.moveTo(0,o),n.lineTo(2*a,0),n.lineTo(i,0),n.lineTo(i-2*a,o),n.close(),n.fillAndStroke()},mxCellRenderer.registerShape(mxShapeInfographicParallelogram.prototype.cst.PARALLELOGRAM,mxShapeInfographicParallelogram),Graph.handleFactory[mxShapeInfographicParallelogram.prototype.cst.PARALLELOGRAM]=function(n){return[Graph.createHandle(n,["dx"],(function(n){var t=Math.max(0,Math.min(n.width/2,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx))));return new mxPoint(n.x+t,n.y+n.height/2)}),(function(n,t){this.state.style.dx=Math.round(100*Math.max(0,Math.min(n.width/2,t.x-n.x)))/100}))]},mxShapeInfographicParallelogram.prototype.getConstraints=function(n,t,e){var i=[],o=Math.max(0,Math.min(.5*t,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),a=t-2*o;return i.push(new mxConnectionConstraint(new mxPoint(0,1),!1)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,2*o,0)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,2*o+.5*a,0)),i.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null,o,0)),i.push(new mxConnectionConstraint(new mxPoint(1,0),!1)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,t-2*o,e)),i.push(new mxConnectionConstraint(new mxPoint(0,.5),!1,null,t-o,0)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*a,e)),i},mxUtils.extend(mxShapeInfographicRibbonRolled,mxActor),mxShapeInfographicRibbonRolled.prototype.cst={RIBBON_ROLLED:"mxgraph.infographic.ribbonRolled"},mxShapeInfographicRibbonRolled.prototype.customProperties=[{name:"dx",dispName:"Roll Length",min:0,defVal:185},{name:"dy",dispName:"Ribbon Width",min:0,defVal:15}],mxShapeInfographicRibbonRolled.prototype.paintVertexShape=function(n,t,e,i,o){n.translate(t,e);var a=Math.max(0,Math.min(i,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),h=Math.max(0,Math.min(.5*o,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));n.begin(),n.moveTo(0,h),n.lineTo(a,0),n.lineTo(a,h),n.lineTo(i,h),n.lineTo(i,o-h),n.lineTo(i-a,o),n.lineTo(i-a,o-h),n.lineTo(0,o-h),n.close(),n.fillAndStroke(),n.setShadow(!1),n.setFillAlpha("0.2"),n.setFillColor("#000000"),n.begin(),n.moveTo(0,h),n.lineTo(a,0),n.lineTo(a,h),n.close(),n.moveTo(i,o-h),n.lineTo(i-a,o),n.lineTo(i-a,o-h),n.close(),n.fill(),n.begin(),n.moveTo(0,h),n.lineTo(a,0),n.lineTo(a,h),n.lineTo(i,h),n.lineTo(i,o-h),n.lineTo(i-a,o),n.lineTo(i-a,o-h),n.lineTo(0,o-h),n.close(),n.stroke()},mxCellRenderer.registerShape(mxShapeInfographicRibbonRolled.prototype.cst.RIBBON_ROLLED,mxShapeInfographicRibbonRolled),Graph.handleFactory[mxShapeInfographicRibbonRolled.prototype.cst.RIBBON_ROLLED]=function(n){return[Graph.createHandle(n,["dx","dy"],(function(n){var t=Math.max(0,Math.min(n.width,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx)))),e=Math.max(0,Math.min(n.height/2,parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy))));return new mxPoint(n.x+t,n.y+e)}),(function(n,t){this.state.style.dx=Math.round(100*Math.max(0,Math.min(n.width,t.x-n.x)))/100,this.state.style.dy=Math.round(100*Math.max(0,Math.min(n.height/2,t.y-n.y)))/100}))]},mxShapeInfographicRibbonRolled.prototype.getConstraints=function(n,t,e){var i=[],o=(Math.max(0,Math.min(t,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),Math.max(0,Math.min(.5*e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))))),a=e-o;return i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,o)),i.push(new mxConnectionConstraint(new mxPoint(.25,0),!1,null,0,o)),i.push(new mxConnectionConstraint(new mxPoint(.5,0),!1,null,0,o)),i.push(new mxConnectionConstraint(new mxPoint(.75,0),!1,null,0,o)),i.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,0,o)),i.push(new mxConnectionConstraint(new mxPoint(1,.5),!1)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,t,a)),i.push(new mxConnectionConstraint(new mxPoint(.75,0),!1,null,0,a)),i.push(new mxConnectionConstraint(new mxPoint(.5,0),!1,null,0,a)),i.push(new mxConnectionConstraint(new mxPoint(.25,0),!1,null,0,a)),i.push(new mxConnectionConstraint(new mxPoint(0,1),!1,null,0,-o)),i.push(new mxConnectionConstraint(new mxPoint(0,.5),!1)),i},mxUtils.extend(mxShapeInfographicRibbonDoubleFolded,mxActor),mxShapeInfographicRibbonDoubleFolded.prototype.cst={RIBBON_DOUBLE_FOLDED:"mxgraph.infographic.ribbonDoubleFolded"},mxShapeInfographicRibbonDoubleFolded.prototype.customProperties=[{name:"dx",dispName:"Fold Length",min:0,defVal:25},{name:"dy",dispName:"Ribbon Width",min:0,defVal:15}],mxShapeInfographicRibbonDoubleFolded.prototype.paintVertexShape=function(n,t,e,i,o){n.translate(t,e);var a=Math.max(0,Math.min(i,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),h=Math.max(0,Math.min(.5*o,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));n.begin(),n.moveTo(0,h),n.lineTo(a,0),n.lineTo(a,h),n.lineTo(i,h),n.lineTo(i,o-h),n.lineTo(i-a,o),n.lineTo(i-a,o-h),n.lineTo(0,o-h),n.close(),n.fillAndStroke(),n.setShadow(!1),n.setFillAlpha("0.2"),n.setFillColor("#000000"),n.begin(),n.moveTo(0,h),n.lineTo(a,0),n.lineTo(a,o-2*h),n.lineTo(0,o-h),n.close(),n.moveTo(i,o-h),n.lineTo(i-a,o),n.lineTo(i-a,o-h),n.close(),n.fill(),n.begin(),n.moveTo(0,h),n.lineTo(a,0),n.lineTo(a,h),n.lineTo(i,h),n.lineTo(i,o-h),n.lineTo(i-a,o),n.lineTo(i-a,o-h),n.lineTo(0,o-h),n.close(),n.stroke()},mxCellRenderer.registerShape(mxShapeInfographicRibbonDoubleFolded.prototype.cst.RIBBON_DOUBLE_FOLDED,mxShapeInfographicRibbonDoubleFolded),Graph.handleFactory[mxShapeInfographicRibbonDoubleFolded.prototype.cst.RIBBON_DOUBLE_FOLDED]=function(n){return[Graph.createHandle(n,["dx","dy"],(function(n){var t=Math.max(0,Math.min(n.width,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx)))),e=Math.max(0,Math.min(n.height/2,parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy))));return new mxPoint(n.x+t,n.y+e)}),(function(n,t){this.state.style.dx=Math.round(100*Math.max(0,Math.min(n.width,t.x-n.x)))/100,this.state.style.dy=Math.round(100*Math.max(0,Math.min(n.height/2,t.y-n.y)))/100}))]},mxShapeInfographicRibbonDoubleFolded.prototype.getConstraints=function(n,t,e){var i=[],o=(Math.max(0,Math.min(t,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),Math.max(0,Math.min(.5*e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy)))));return i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,o)),i.push(new mxConnectionConstraint(new mxPoint(.25,0),!1,null,0,o)),i.push(new mxConnectionConstraint(new mxPoint(.5,0),!1,null,0,o)),i.push(new mxConnectionConstraint(new mxPoint(.75,0),!1,null,0,o)),i.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,0,o)),i.push(new mxConnectionConstraint(new mxPoint(1,.5),!1)),i.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,0,e-o)),i.push(new mxConnectionConstraint(new mxPoint(.75,0),!1,null,0,e-o)),i.push(new mxConnectionConstraint(new mxPoint(.5,0),!1,null,0,e-o)),i.push(new mxConnectionConstraint(new mxPoint(.25,0),!1,null,0,e-o)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e-o)),i.push(new mxConnectionConstraint(new mxPoint(0,.5),!1)),i},mxUtils.extend(mxShapeInfographicRibbonFrontFolded,mxActor),mxShapeInfographicRibbonFrontFolded.prototype.cst={RIBBON_FRONT_FOLDED:"mxgraph.infographic.ribbonFrontFolded"},mxShapeInfographicRibbonFrontFolded.prototype.customProperties=[{name:"dx",dispName:"Fold Length",min:0,defVal:25},{name:"dy",dispName:"Ribbon Width",min:0,defVal:15},{name:"notch",dispName:"Notch",min:0,defVal:15}],mxShapeInfographicRibbonFrontFolded.prototype.paintVertexShape=function(n,t,e,i,o){n.translate(t,e);var a=Math.max(0,Math.min(i,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),h=Math.max(0,Math.min(.5*o,parseFloat(mxUtils.getValue(this.style,"dy",this.dy)))),l=Math.max(0,Math.min(i-a,parseFloat(mxUtils.getValue(this.style,"notch",this.notch))));n.begin(),n.moveTo(0,h),n.lineTo(a,0),n.lineTo(a,h),n.lineTo(i,h),n.lineTo(i-l,(o-h)/2+h),n.lineTo(i,o),n.lineTo(0,o),n.close(),n.fillAndStroke(),n.setShadow(!1),n.setFillAlpha("0.2"),n.setFillColor("#000000"),n.begin(),n.moveTo(0,h),n.lineTo(a,0),n.lineTo(a,o-h),n.lineTo(0,o),n.close(),n.fill(),n.begin(),n.moveTo(0,h),n.lineTo(a,0),n.lineTo(a,h),n.lineTo(i,h),n.lineTo(i-l,(o-h)/2+h),n.lineTo(i,o),n.lineTo(0,o),n.close(),n.stroke()},mxCellRenderer.registerShape(mxShapeInfographicRibbonFrontFolded.prototype.cst.RIBBON_FRONT_FOLDED,mxShapeInfographicRibbonFrontFolded),Graph.handleFactory[mxShapeInfographicRibbonFrontFolded.prototype.cst.RIBBON_FRONT_FOLDED]=function(n){var t=[Graph.createHandle(n,["dx","dy"],(function(n){var t=Math.max(0,Math.min(n.width,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx)))),e=Math.max(0,Math.min(n.height/2,parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy))));return new mxPoint(n.x+t,n.y+e)}),(function(n,t){this.state.style.dx=Math.round(100*Math.max(0,Math.min(n.width,t.x-n.x)))/100,this.state.style.dy=Math.round(100*Math.max(0,Math.min(n.height/2,t.y-n.y)))/100}))],e=Graph.createHandle(n,["notch"],(function(n){var t=Math.max(0,Math.min(n.height/2,parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy)))),e=Math.max(0,Math.min(n.width,parseFloat(mxUtils.getValue(this.state.style,"notch",this.notch))));return new mxPoint(n.x+n.width-e,n.y+t+.5*(n.height-t))}),(function(n,t){this.state.style.notch=Math.round(100*Math.max(0,Math.min(n.width,n.width+n.x-t.x)))/100}));return t.push(e),t},mxShapeInfographicRibbonFrontFolded.prototype.getConstraints=function(n,t,e){var i=[],o=Math.max(0,Math.min(t,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),a=Math.max(0,Math.min(.5*e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy)))),h=Math.max(0,Math.min(t-o,parseFloat(mxUtils.getValue(this.style,"notch",this.notch))));return i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,a)),i.push(new mxConnectionConstraint(new mxPoint(.25,0),!1,null,0,a)),i.push(new mxConnectionConstraint(new mxPoint(.5,0),!1,null,0,a)),i.push(new mxConnectionConstraint(new mxPoint(.75,0),!1,null,0,a)),i.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,0,a)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,t-h,.5*(e+a))),i.push(new mxConnectionConstraint(new mxPoint(1,1),!1)),i.push(new mxConnectionConstraint(new mxPoint(.75,1),!1)),i.push(new mxConnectionConstraint(new mxPoint(.5,1),!1)),i.push(new mxConnectionConstraint(new mxPoint(.25,1),!1)),i.push(new mxConnectionConstraint(new mxPoint(0,1),!1)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(e+a))),i},mxUtils.extend(mxShapeInfographicRibbonBackFolded,mxActor),mxShapeInfographicRibbonBackFolded.prototype.cst={RIBBON_BACK_FOLDED:"mxgraph.infographic.ribbonBackFolded"},mxShapeInfographicRibbonBackFolded.prototype.customProperties=[{name:"dx",dispName:"Fold Length",min:0,defVal:25},{name:"dy",dispName:"Ribbon Width",min:0,defVal:15},{name:"notch",dispName:"Notch",min:0,defVal:15}],mxShapeInfographicRibbonBackFolded.prototype.paintVertexShape=function(n,t,e,i,o){n.translate(t,e);var a=Math.max(0,Math.min(i,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),h=Math.max(0,Math.min(.5*o,parseFloat(mxUtils.getValue(this.style,"dy",this.dy)))),l=Math.max(0,Math.min(i-a,parseFloat(mxUtils.getValue(this.style,"notch",this.notch))));n.begin(),n.moveTo(0,h),n.lineTo(a,0),n.lineTo(a,h),n.lineTo(i,h),n.lineTo(i-l,(o-h)/2+h),n.lineTo(i,o),n.lineTo(0,o),n.close(),n.fillAndStroke(),n.setShadow(!1),n.setFillAlpha("0.2"),n.setFillColor("#000000"),n.begin(),n.moveTo(0,h),n.lineTo(a,0),n.lineTo(a,h),n.close(),n.fill(),n.begin(),n.moveTo(0,h),n.lineTo(a,0),n.lineTo(a,h),n.lineTo(i,h),n.lineTo(i-l,(o-h)/2+h),n.lineTo(i,o),n.lineTo(0,o),n.close(),n.stroke()},mxCellRenderer.registerShape(mxShapeInfographicRibbonBackFolded.prototype.cst.RIBBON_BACK_FOLDED,mxShapeInfographicRibbonBackFolded),Graph.handleFactory[mxShapeInfographicRibbonBackFolded.prototype.cst.RIBBON_BACK_FOLDED]=function(n){var t=[Graph.createHandle(n,["dx","dy"],(function(n){var t=Math.max(0,Math.min(n.width,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx)))),e=Math.max(0,Math.min(n.height/2,parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy))));return new mxPoint(n.x+t,n.y+e)}),(function(n,t){this.state.style.dx=Math.round(100*Math.max(0,Math.min(n.width,t.x-n.x)))/100,this.state.style.dy=Math.round(100*Math.max(0,Math.min(n.height/2,t.y-n.y)))/100}))],e=Graph.createHandle(n,["notch"],(function(n){var t=Math.max(0,Math.min(n.height/2,parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy)))),e=Math.max(0,Math.min(n.width,parseFloat(mxUtils.getValue(this.state.style,"notch",this.notch))));return new mxPoint(n.x+n.width-e,n.y+t+.5*(n.height-t))}),(function(n,t){this.state.style.notch=Math.round(100*Math.max(0,Math.min(n.width,n.width+n.x-t.x)))/100}));return t.push(e),t},mxShapeInfographicRibbonBackFolded.prototype.getConstraints=function(n,t,e){var i=[],o=Math.max(0,Math.min(t,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),a=Math.max(0,Math.min(.5*e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy)))),h=Math.max(0,Math.min(t-o,parseFloat(mxUtils.getValue(this.style,"notch",this.notch))));return i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,a)),i.push(new mxConnectionConstraint(new mxPoint(.25,0),!1,null,0,a)),i.push(new mxConnectionConstraint(new mxPoint(.5,0),!1,null,0,a)),i.push(new mxConnectionConstraint(new mxPoint(.75,0),!1,null,0,a)),i.push(new mxConnectionConstraint(new mxPoint(1,0),!1,null,0,a)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,t-h,.5*(e+a))),i.push(new mxConnectionConstraint(new mxPoint(1,1),!1)),i.push(new mxConnectionConstraint(new mxPoint(.75,1),!1)),i.push(new mxConnectionConstraint(new mxPoint(.5,1),!1)),i.push(new mxConnectionConstraint(new mxPoint(.25,1),!1)),i.push(new mxConnectionConstraint(new mxPoint(0,1),!1)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(e+a))),i},mxUtils.extend(mxShapeInfographicBanner,mxActor),mxShapeInfographicBanner.prototype.cst={BANNER:"mxgraph.infographic.banner"},mxShapeInfographicBanner.prototype.customProperties=[{name:"dx",dispName:"Fold Length",min:0,defVal:25},{name:"dy",dispName:"Ribbon Width",min:0,defVal:15},{name:"notch",dispName:"Notch",min:0,defVal:15}],mxShapeInfographicBanner.prototype.paintVertexShape=function(n,t,e,i,o){n.translate(t,e);var a=Math.max(0,Math.min(i/2,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),h=Math.max(0,Math.min(.5*o,parseFloat(mxUtils.getValue(this.style,"dy",this.dy)))),l=Math.max(0,Math.min(i,parseFloat(mxUtils.getValue(this.style,"notch",this.notch))));a=Math.min(i/2-2*h,a),l=Math.min(a,l),n.begin(),n.moveTo(0,h),n.lineTo(a,h),n.lineTo(a,0),n.lineTo(i-a,0),n.lineTo(i-a,h),n.lineTo(i,h),n.lineTo(i-l,.5*(o-h)+h),n.lineTo(i,o),n.lineTo(i-a-2*h,o),n.lineTo(i-a-2*h,o-h),n.lineTo(a+2*h,o-h),n.lineTo(a+2*h,o),n.lineTo(0,o),n.lineTo(l,.5*(o-h)+h),n.close(),n.fillAndStroke(),n.setShadow(!1),n.setFillAlpha("0.2"),n.setFillColor("#000000"),n.begin(),n.moveTo(0,h),n.lineTo(a,h),n.lineTo(a,o-h),n.lineTo(a+2*h,o),n.lineTo(0,o),n.lineTo(l,.5*(o-h)+h),n.close(),n.moveTo(i,h),n.lineTo(i-a,h),n.lineTo(i-a,o-h),n.lineTo(i-a-2*h,o),n.lineTo(i,o),n.lineTo(i-l,.5*(o-h)+h),n.close(),n.fill(),n.setFillAlpha("0.4"),n.begin(),n.moveTo(a,o-h),n.lineTo(a+2*h,o-h),n.lineTo(a+2*h,o),n.close(),n.moveTo(i-a,o-h),n.lineTo(i-a-2*h,o-h),n.lineTo(i-a-2*h,o),n.close(),n.fill()},mxCellRenderer.registerShape(mxShapeInfographicBanner.prototype.cst.BANNER,mxShapeInfographicBanner),Graph.handleFactory[mxShapeInfographicBanner.prototype.cst.BANNER]=function(n){var t=[Graph.createHandle(n,["dx","dy"],(function(n){var t=Math.max(0,Math.min(n.width/2,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx)))),e=Math.max(0,Math.min(n.height/2,parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy))));return new mxPoint(n.x+n.width-t,n.y+e)}),(function(n,t){this.state.style.dx=Math.round(100*Math.max(0,Math.min(n.width/2,n.x+n.width-t.x)))/100,this.state.style.dy=Math.round(100*Math.max(0,Math.min(n.height/2,t.y-n.y)))/100}))],e=Graph.createHandle(n,["notch"],(function(n){var t=Math.max(0,Math.min(n.height/2,parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy)))),e=Math.max(0,Math.min(n.width/2,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx)))),i=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.state.style,"notch",this.notch))));return new mxPoint(n.x+n.width-i,n.y+t+.5*(n.height-t))}),(function(n,t){this.state.style.notch=Math.round(100*Math.max(0,Math.min(n.width,n.width+n.x-t.x)))/100}));return t.push(e),t},mxShapeInfographicBanner.prototype.getConstraints=function(n,t,e){var i=[],o=Math.max(0,Math.min(t/2,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),a=Math.max(0,Math.min(.5*e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy)))),h=Math.max(0,Math.min(t,parseFloat(mxUtils.getValue(this.style,"notch",this.notch))));o=Math.min(t/2-2*a,o),h=Math.min(o,h);var l=t-2*o;return i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,o,0)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,o+.25*l,0)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,o+.5*l,0)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,o+.75*l,0)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,o+l,0)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,o+l,.5*(e-a))),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,o+l,e-a)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,o+.75*l,e-a)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,o+.5*l,e-a)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,o+.25*l,e-a)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,o,e-a)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,o,.5*(e-a))),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,h,.5*(e+a))),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,t-h,.5*(e+a))),i},mxUtils.extend(mxShapeInfographicCircularCallout,mxActor),mxShapeInfographicCircularCallout.prototype.cst={CIRCULAR_CALLOUT:"mxgraph.infographic.circularCallout"},mxShapeInfographicCircularCallout.prototype.customProperties=[{name:"dy",dispName:"Ribbon Width",min:0,defVal:15}],mxShapeInfographicCircularCallout.prototype.paintVertexShape=function(n,t,e,i,o){n.translate(t,e);var a=Math.max(0,Math.min(.5*o,parseFloat(mxUtils.getValue(this.style,"dy",this.dy)))),h=Math.max(0,Math.min(.5*i,.5*i-a)),l=Math.max(0,Math.min(.5*o,.5*o-a));n.begin(),n.moveTo(i,.5*o),n.arcTo(.5*i,.5*o,0,0,1,.5*i,o),n.arcTo(.5*i,.5*o,0,0,1,0,.5*o),n.arcTo(.5*i,.5*o,0,0,1,.5*i,0),n.lineTo(i,0),n.close(),n.moveTo(.5*i,a),n.arcTo(h,l,0,0,0,.5*i-h,.5*o),n.arcTo(h,l,0,0,0,.5*i,.5*o+l),n.arcTo(h,l,0,0,0,.5*i+h,.5*o),n.arcTo(h,l,0,0,0,.5*i,.5*o-l),n.close(),n.fillAndStroke()},mxCellRenderer.registerShape(mxShapeInfographicCircularCallout.prototype.cst.CIRCULAR_CALLOUT,mxShapeInfographicCircularCallout),Graph.handleFactory[mxShapeInfographicCircularCallout.prototype.cst.CIRCULAR_CALLOUT]=function(n){return[Graph.createHandle(n,["dy"],(function(n){var t=Math.max(0,Math.min(n.height/2,parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy))));return new mxPoint(n.x+.5*n.width,n.y+t)}),(function(n,t){this.state.style.dy=Math.round(100*Math.max(0,Math.min(n.height/2,t.y-n.y)))/100}))]},mxShapeInfographicCircularCallout.prototype.getConstraints=function(n,t,e){var i=[],o=Math.max(0,Math.min(.5*e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy))));return Math.max(0,Math.min(.5*t,.5*t-o)),Math.max(0,Math.min(.5*e,.5*e-o)),i.push(new mxConnectionConstraint(new mxPoint(.5,0),!1)),i.push(new mxConnectionConstraint(new mxPoint(1,0),!1)),i.push(new mxConnectionConstraint(new mxPoint(1,.5),!1)),i.push(new mxConnectionConstraint(new mxPoint(.855,.855),!1)),i.push(new mxConnectionConstraint(new mxPoint(.5,1),!1)),i.push(new mxConnectionConstraint(new mxPoint(.145,.855),!1)),i.push(new mxConnectionConstraint(new mxPoint(0,.5),!1)),i.push(new mxConnectionConstraint(new mxPoint(.145,.145),!1)),i},mxUtils.extend(mxShapeInfographicShadedTriangle,mxActor),mxShapeInfographicShadedTriangle.prototype.cst={SHADED_TRIANGLE:"mxgraph.infographic.shadedTriangle"},mxShapeInfographicShadedTriangle.prototype.paintVertexShape=function(n,t,e,i,o){n.translate(t,e),n.begin(),n.moveTo(0,o),n.lineTo(.5*i,0),n.lineTo(i,o),n.close(),n.fillAndStroke(),n.setShadow(!1),n.setFillColor("#ffffff"),n.setFillAlpha("0.2"),n.begin(),n.moveTo(0,o),n.lineTo(.5*i,0),n.lineTo(.5*i,.67*o),n.close(),n.fill(),n.setFillColor("#000000"),n.begin(),n.moveTo(i,o),n.lineTo(.5*i,.67*o),n.lineTo(.5*i,0),n.close(),n.fill(),n.begin(),n.moveTo(0,o),n.lineTo(.5*i,0),n.lineTo(i,o),n.close(),n.stroke()},mxCellRenderer.registerShape(mxShapeInfographicShadedTriangle.prototype.cst.SHADED_TRIANGLE,mxShapeInfographicShadedTriangle),mxShapeInfographicShadedTriangle.prototype.getConstraints=function(n,t,e){var i=[];return i.push(new mxConnectionConstraint(new mxPoint(.5,0),!1)),i.push(new mxConnectionConstraint(new mxPoint(.75,.5),!1)),i.push(new mxConnectionConstraint(new mxPoint(1,1),!1)),i.push(new mxConnectionConstraint(new mxPoint(.5,1),!1)),i.push(new mxConnectionConstraint(new mxPoint(0,1),!1)),i.push(new mxConnectionConstraint(new mxPoint(.25,.5),!1)),i},mxUtils.extend(mxShapeInfographicShadedPyramid,mxActor),mxShapeInfographicShadedPyramid.prototype.cst={SHADED_PYRAMID:"mxgraph.infographic.shadedPyramid"},mxShapeInfographicShadedPyramid.prototype.paintVertexShape=function(n,t,e,i,o){n.translate(t,e);var a=Math.max(o-.3*i,0);n.begin(),n.moveTo(0,a),n.lineTo(.5*i,0),n.lineTo(i,a),n.lineTo(.5*i,o),n.close(),n.fillAndStroke(),n.setShadow(!1),n.setFillColor("#ffffff"),n.setFillAlpha("0.2"),n.begin(),n.moveTo(0,a),n.lineTo(.5*i,0),n.lineTo(.5*i,o),n.close(),n.fill(),n.setFillColor("#000000"),n.begin(),n.moveTo(i,a),n.lineTo(.5*i,o),n.lineTo(.5*i,0),n.close(),n.fill(),n.begin(),n.moveTo(0,a),n.lineTo(.5*i,0),n.lineTo(i,a),n.lineTo(.5*i,o),n.close(),n.stroke()},mxCellRenderer.registerShape(mxShapeInfographicShadedPyramid.prototype.cst.SHADED_PYRAMID,mxShapeInfographicShadedPyramid),mxShapeInfographicShadedPyramid.prototype.getConstraints=function(n,t,e){var i=[],o=Math.max(e-.3*t,0);return i.push(new mxConnectionConstraint(new mxPoint(.5,0),!1)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*t,.5*o)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,t,o)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*t,.5*(e+o))),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*t,e)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*t,.5*(e+o))),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,o)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*t,.5*o)),i},mxUtils.extend(mxShapeInfographicPyramidStep,mxActor),mxShapeInfographicPyramidStep.prototype.cst={PYRAMID_STEP:"mxgraph.infographic.pyramidStep"},mxShapeInfographicPyramidStep.prototype.paintVertexShape=function(n,t,e,i,o){n.translate(t,e);var a=Math.max(.1*i,0);n.begin(),n.moveTo(0,a),n.lineTo(.5*i,0),n.lineTo(i,a),n.lineTo(i,o),n.lineTo(0,o),n.close(),n.fillAndStroke(),n.setShadow(!1),n.setFillColor("#ffffff"),n.setFillAlpha("0.2"),n.begin(),n.moveTo(0,a),n.lineTo(.5*i,0),n.lineTo(.5*i,o),n.lineTo(0,o),n.close(),n.fill(),n.setFillColor("#000000"),n.begin(),n.moveTo(i,a),n.lineTo(i,o),n.lineTo(.5*i,o),n.lineTo(.5*i,0),n.close(),n.fill(),n.begin(),n.moveTo(0,a),n.lineTo(.5*i,0),n.lineTo(i,a),n.lineTo(i,o),n.lineTo(0,o),n.close(),n.stroke()},mxCellRenderer.registerShape(mxShapeInfographicPyramidStep.prototype.cst.PYRAMID_STEP,mxShapeInfographicPyramidStep),mxShapeInfographicPyramidStep.prototype.getConstraints=function(n,t,e){var i=[],o=Math.max(.1*t,0);return i.push(new mxConnectionConstraint(new mxPoint(.5,0),!1)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*t,.5*o)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,t,o)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,t,o+.25*(e-o))),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,t,o+.5*(e-o))),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,t,o+.75*(e-o))),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,t,e)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*t,e)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*t,e)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*t,e)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,o+.75*(e-o))),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,o+.5*(e-o))),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,o+.25*(e-o))),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*t,.5*o)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,o)),i},mxUtils.extend(mxShapeInfographicCylinder,mxActor),mxShapeInfographicCylinder.prototype.cst={CYLINDER:"mxgraph.infographic.cylinder"},mxShapeInfographicCylinder.prototype.paintVertexShape=function(n,t,e,i,o){n.translate(t,e);var a=.5*i,h=10;n.begin(),n.moveTo(0,10),n.arcTo(a,h,0,0,1,i,h),n.lineTo(i,o-h),n.arcTo(a,h,0,0,1,0,o-h),n.close(),n.fillAndStroke(),n.setShadow(!1),n.setGradient("#000000","#ffffff",0,0,i,o,mxConstants.DIRECTION_EAST,.4,.4),n.begin(),n.moveTo(0,10),n.arcTo(a,h,0,0,0,i,h),n.lineTo(i,o-h),n.arcTo(a,h,0,0,1,0,o-h),n.close(),n.fill(),n.begin(),n.moveTo(0,10),n.arcTo(a,h,0,0,1,i,h),n.lineTo(i,o-h),n.arcTo(a,h,0,0,1,0,o-h),n.close(),n.stroke()},mxCellRenderer.registerShape(mxShapeInfographicCylinder.prototype.cst.CYLINDER,mxShapeInfographicCylinder),mxShapeInfographicCylinder.prototype.getConstraints=function(n,t,e){var i=[],o=20;return i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,10)),i.push(new mxConnectionConstraint(new mxPoint(.5,0),!1)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,t,10)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,t,10+.25*(e-o))),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,t,10+.5*(e-o))),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,t,10+.75*(e-o))),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,t,e-10)),i.push(new mxConnectionConstraint(new mxPoint(.5,1),!1)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e-10)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,10+.75*(e-o))),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,10+.5*(e-o))),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,10+.25*(e-o))),i},mxUtils.extend(mxShapeInfographicCircularCallout2,mxActor),mxShapeInfographicCircularCallout2.prototype.cst={CIRCULAR_CALLOUT_2:"mxgraph.infographic.circularCallout2"},mxShapeInfographicCircularCallout2.prototype.paintVertexShape=function(n,t,e,i,o){n.translate(t,e);var a=mxUtils.getValue(this.style,mxConstants.STYLE_FILLCOLOR,"none"),h=mxUtils.getValue(this.style,mxConstants.STYLE_STROKECOLOR,"none");n.setFillColor(h);var l=Math.max(0,Math.min(.5*i,.4*o,.5*o-7));n.begin(),n.moveTo(.5*i-2,2.15*l),n.arcTo(.23*l,.23*l,0,0,0,.5*i-.2*l,1.97*l),n.arcTo(l,l,0,0,1,.5*i-l,l),n.arcTo(l,l,0,0,1,.5*i,0),n.arcTo(l,l,0,0,1,.5*i+l,l),n.arcTo(l,l,0,0,1,.5*i+.2*l,1.97*l),n.arcTo(.23*l,.23*l,0,0,0,.5*i+2,2.15*l);var s=Math.max(.1*l,6);.04*l>4?(n.lineTo(.5*i+2,o-.22*l),n.arcTo(.05*l,.05*l,0,0,0,.5*i+.04*l,o-.19*l)):n.lineTo(.5*i+2,o-2*s),n.arcTo(s,s,0,0,1,.5*i+s,o-s),n.arcTo(s,s,0,0,1,.5*i,o),n.arcTo(s,s,0,0,1,.5*i-s,o-s),.04*l>4?(n.arcTo(s,s,0,0,1,.5*i-.04*l,o-.19*l),n.arcTo(.5*s,.5*s,0,0,0,.5*i-2,o-.22*l)):n.arcTo(s,s,0,0,1,.5*i-2,o-2*s),n.close(),n.moveTo(.5*i,.2*l),n.arcTo(.8*l,.8*l,0,0,0,.5*i-.8*l,.8*l),n.arcTo(.8*l,.8*l,0,0,0,.5*i,1.8*l),n.arcTo(.8*l,.8*l,0,0,0,.5*i+.8*l,.8*l),n.arcTo(.8*l,.8*l,0,0,0,.5*i,.2*l),n.close(),n.moveTo(.5*i,o-1.75*s),n.arcTo(.75*s,.75*s,0,0,0,.5*i-.75*s,o-s),n.arcTo(.75*s,.75*s,0,0,0,.5*i,o-.25*s),n.arcTo(.75*s,.75*s,0,0,0,.5*i+.75*s,o-s),n.arcTo(.75*s,.75*s,0,0,0,.5*i,o-1.75*s),n.close(),n.fill(),n.setFillColor(a),n.setShadow(!1),n.begin(),n.moveTo(.5*i,.2*l),n.arcTo(.8*l,.8*l,0,0,0,.5*i-.8*l,.8*l),n.arcTo(.8*l,.8*l,0,0,0,.5*i,1.8*l),n.arcTo(.8*l,.8*l,0,0,0,.5*i+.8*l,.8*l),n.arcTo(.8*l,.8*l,0,0,0,.5*i,.2*l),n.close(),n.moveTo(.5*i,o-1.75*s),n.arcTo(.75*s,.75*s,0,0,0,.5*i-.75*s,o-s),n.arcTo(.75*s,.75*s,0,0,0,.5*i,o-.25*s),n.arcTo(.75*s,.75*s,0,0,0,.5*i+.75*s,o-s),n.arcTo(.75*s,.75*s,0,0,0,.5*i,o-1.75*s),n.close(),n.fill()},mxCellRenderer.registerShape(mxShapeInfographicCircularCallout2.prototype.cst.CIRCULAR_CALLOUT_2,mxShapeInfographicCircularCallout2),mxShapeInfographicCircularCallout2.prototype.getConstraints=function(n,t,e){var i=[],o=Math.max(0,Math.min(.5*t,.4*e,.5*e-7));return i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*t-o,o)),i.push(new mxConnectionConstraint(new mxPoint(.5,0),!1)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.5*t+o,o)),i.push(new mxConnectionConstraint(new mxPoint(.5,1),!1)),i},mxUtils.extend(mxShapeInfographicBannerSingleFold,mxActor),mxShapeInfographicBannerSingleFold.prototype.cst={BANNER_SINGLE_FOLD:"mxgraph.infographic.bannerSingleFold"},mxShapeInfographicBannerSingleFold.prototype.customProperties=[{name:"dx",dispName:"Fold Length",type:"float",defVal:32,min:0},{name:"dy",dispName:"Banner Width",type:"float",defVal:17,min:0},{name:"notch",dispName:"Notch",type:"float",defVal:15,min:0}],mxShapeInfographicBannerSingleFold.prototype.paintVertexShape=function(n,t,e,i,o){n.translate(t,e);var a=Math.max(0,Math.min(i,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),h=Math.max(0,Math.min(.5*o,parseFloat(mxUtils.getValue(this.style,"dy",this.dy)))),l=Math.max(0,Math.min(i,parseFloat(mxUtils.getValue(this.style,"notch",this.notch))));a=Math.min(i-2*h,a);var s=Math.max(0,Math.min(i-a-2*h,parseFloat(mxUtils.getValue(this.style,"dx2",this.dx2))));l=Math.min(a,l),n.begin(),n.moveTo(s,0),n.lineTo(i-a,0),n.lineTo(i-a,h),n.lineTo(i,h),n.lineTo(i-l,.5*(o-h)+h),n.lineTo(i,o),n.lineTo(i-a-2*h,o),n.lineTo(i-a-2*h,o-h),n.lineTo(s,o-h),n.lineTo(0,.5*(o-h)),n.close(),n.fillAndStroke(),n.setShadow(!1),n.setFillAlpha("0.05"),n.setFillColor("#000000"),n.begin(),n.moveTo(i,h),n.lineTo(i-a,h),n.lineTo(i-a,o-h),n.lineTo(i-a-2*h,o),n.lineTo(i,o),n.lineTo(i-l,.5*(o-h)+h),n.close(),n.fill(),n.setFillAlpha("0.4"),n.begin(),n.moveTo(i-a,o-h),n.lineTo(i-a-2*h,o-h),n.lineTo(i-a-2*h,o),n.close(),n.fill(),n.begin(),n.moveTo(s,0),n.lineTo(i-a,0),n.lineTo(i-a,h),n.lineTo(i,h),n.lineTo(i-l,.5*(o-h)+h),n.lineTo(i,o),n.lineTo(i-a-2*h,o),n.lineTo(i-a-2*h,o-h),n.lineTo(s,o-h),n.lineTo(0,.5*(o-h)),n.close(),n.stroke()},mxCellRenderer.registerShape(mxShapeInfographicBannerSingleFold.prototype.cst.BANNER_SINGLE_FOLD,mxShapeInfographicBannerSingleFold),Graph.handleFactory[mxShapeInfographicBannerSingleFold.prototype.cst.BANNER_SINGLE_FOLD]=function(n){var t=[Graph.createHandle(n,["dx","dy"],(function(n){var t=Math.max(0,Math.min(n.width,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx)))),e=Math.max(0,Math.min(n.height/2,parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy))));return new mxPoint(n.x+n.width-t,n.y+e)}),(function(n,t){this.state.style.dx=Math.round(100*Math.max(0,Math.min(n.width,n.x+n.width-t.x)))/100,this.state.style.dy=Math.round(100*Math.max(0,Math.min(n.height/2,t.y-n.y)))/100}))],e=Graph.createHandle(n,["notch"],(function(n){var t=Math.max(0,Math.min(n.height/2,parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy)))),e=Math.max(0,Math.min(n.width,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx)))),i=Math.max(0,Math.min(e,parseFloat(mxUtils.getValue(this.state.style,"notch",this.notch))));return new mxPoint(n.x+n.width-i,n.y+t+.5*(n.height-t))}),(function(n,t){this.state.style.notch=Math.round(100*Math.max(0,Math.min(n.width,n.width+n.x-t.x)))/100}));t.push(e);var i=Graph.createHandle(n,["dx2"],(function(n){var t=Math.max(0,Math.min(n.width,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx)))),e=Math.max(0,Math.min(n.height,parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy)))),i=Math.max(0,Math.min(n.width-t,parseFloat(mxUtils.getValue(this.state.style,"dx2",this.dx2))));return new mxPoint(n.x+i,n.y+.5*(n.height-e))}),(function(n,t){var e=Math.max(0,Math.min(n.width,parseFloat(mxUtils.getValue(this.state.style,"dx",this.dx)))),i=Math.max(0,Math.min(n.height,parseFloat(mxUtils.getValue(this.state.style,"dy",this.dy))));this.state.style.dx2=Math.round(100*Math.max(0,Math.min(n.width-e-2*i,t.x-n.x)))/100}));return t.push(i),t},mxShapeInfographicBannerSingleFold.prototype.getConstraints=function(n,t,e){var i=[],o=Math.max(0,Math.min(t,parseFloat(mxUtils.getValue(this.style,"dx",this.dx)))),a=Math.max(0,Math.min(.5*e,parseFloat(mxUtils.getValue(this.style,"dy",this.dy)))),h=Math.max(0,Math.min(t,parseFloat(mxUtils.getValue(this.style,"notch",this.notch))));o=Math.min(t-2*a,o);var l=Math.max(0,Math.min(t-o-2*a,parseFloat(mxUtils.getValue(this.style,"dx2",this.dx2))));h=Math.min(o,h);var s=t-o-l;return i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,.5*(e-a))),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,0)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l+.25*s,0)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l+.5*s,0)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l+.75*s,0)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l+s,0)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,t-.25*o,a)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,t-.5*o,a)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,t-.75*o,a)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,t,a)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,t-h,.5*(e+a))),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,t,e)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,t-o-2*a,e)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,t-.75*(o+2*a),e)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,t-.5*(o+2*a),e)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,t-.25*(o+2*a),e)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l,e-a)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l+.25*s,e-a)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l+.5*s,e-a)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l+.75*s,e-a)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,l+s,e-a)),i},mxUtils.extend(mxShapeInfographicShadedCube,mxActor),mxShapeInfographicShadedCube.prototype.cst={SHADED_CUBE:"mxgraph.infographic.shadedCube"},mxShapeInfographicShadedCube.prototype.customProperties=[{name:"isoAngle",dispName:"Perspective",type:"float",defVal:15,min:0}],mxShapeInfographicShadedCube.prototype.paintVertexShape=function(n,t,e,i,o){n.translate(t,e);var a=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.style,"isoAngle",this.isoAngle))))*Math.PI/200,h=Math.min(i*Math.tan(a),.5*o);n.begin(),n.moveTo(.5*i,0),n.lineTo(i,h),n.lineTo(i,o-h),n.lineTo(.5*i,o),n.lineTo(0,o-h),n.lineTo(0,h),n.close(),n.fillAndStroke(),n.setShadow(!1),n.setFillAlpha("0.2"),n.setFillColor("#000000"),n.begin(),n.moveTo(.5*i,2*h),n.lineTo(i,h),n.lineTo(i,o-h),n.lineTo(.5*i,o),n.close(),n.fill(),n.setFillColor("#ffffff"),n.begin(),n.moveTo(.5*i,2*h),n.lineTo(0,h),n.lineTo(0,o-h),n.lineTo(.5*i,o),n.close(),n.fill()},mxCellRenderer.registerShape(mxShapeInfographicShadedCube.prototype.cst.SHADED_CUBE,mxShapeInfographicShadedCube),Graph.handleFactory[mxShapeInfographicShadedCube.prototype.cst.SHADED_CUBE]=function(n){return[Graph.createHandle(n,["isoAngle"],(function(n){var t=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.state.style,"isoAngle",this.isoAngle))))*Math.PI/200,e=Math.min(n.width*Math.tan(t),.5*n.height);return new mxPoint(n.x,n.y+e)}),(function(n,t){this.state.style.isoAngle=Math.round(100*Math.max(0,Math.min(100,t.y-n.y)))/100}))]},mxShapeInfographicShadedCube.prototype.getConstraints=function(n,t,e){var i=[],o=Math.max(.01,Math.min(94,parseFloat(mxUtils.getValue(this.style,"isoAngle",this.isoAngle))))*Math.PI/200,a=Math.min(t*Math.tan(o),.5*e);return i.push(new mxConnectionConstraint(new mxPoint(.5,0),!1)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*t,.5*a)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,t,a)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,t,a+.25*(e-2*a))),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,t,a+.5*(e-2*a))),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,t,a+.75*(e-2*a))),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,t,e-a)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.75*t,e-.5*a)),i.push(new mxConnectionConstraint(new mxPoint(.5,1),!1)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*t,e-.5*a)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e-a)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,e-a)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,a+.75*(e-2*a))),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,a+.5*(e-2*a))),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,a+.25*(e-2*a))),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,0,a)),i.push(new mxConnectionConstraint(new mxPoint(0,0),!1,null,.25*t,.5*a)),i},mxUtils.extend(mxShapeInfographicPartConcEllipse,mxActor),mxShapeInfographicPartConcEllipse.prototype.cst={PART_CONC_ELLIPSE:"mxgraph.infographic.partConcEllipse"},mxShapeInfographicPartConcEllipse.prototype.customProperties=[{name:"startAngle",dispName:"Start Angle",min:0,max:1,defVal:.25},{name:"endAngle",dispName:"End Angle",min:0,max:1,defVal:.1},{name:"arcWidth",dispName:"Arc Width",min:0,max:1,defVal:.5}],mxShapeInfographicPartConcEllipse.prototype.paintVertexShape=function(n,t,e,i,o){n.translate(t,e);var a=2*Math.PI*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"startAngle",this.startAngle)))),h=2*Math.PI*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"endAngle",this.endAngle)))),l=1-Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.style,"arcWidth",this.arcWidth)))),s=(f=.5*i)*l,r=(M=.5*o)*l,m=h-a;m<0?m+=2*Math.PI:m==Math.PI&&(h+=1e-5);var x=f+Math.sin(a)*f,p=M-Math.cos(a)*M,c=f+Math.sin(a)*s,u=M-Math.cos(a)*r,d=f+Math.sin(h)*f,C=M-Math.cos(h)*M,w=f+Math.sin(h)*s,g=M-Math.cos(h)*r,y=0;m<=Math.PI&&(y=1),n.begin(),n.moveTo(f,0),n.arcTo(f,M,0,0,1,i,M),n.arcTo(f,M,0,0,1,f,o),n.arcTo(f,M,0,0,1,0,M),n.arcTo(f,M,0,0,1,f,0),n.close(),n.moveTo(f,.5*o-r),n.arcTo(s,r,0,0,0,.5*i-s,M),n.arcTo(s,r,0,0,0,f,.5*o+r),n.arcTo(s,r,0,0,0,.5*i+s,M),n.arcTo(s,r,0,0,0,f,.5*o-r),n.close(),n.fillAndStroke(),n.setShadow(!1),n.setFillAlpha("0.2"),n.setFillColor("#ffffff"),n.begin(),n.moveTo(x,p),n.arcTo(f,M,0,y,0,d,C),n.lineTo(w,g),n.arcTo(s,r,0,y,1,c,u),n.close(),n.fill();var f,M,T=(s=(f=.5*i)*l)+.25*(f-s),S=(r=(M=.5*o)*l)+.25*(M-r);n.setFillColor("#000000"),n.begin(),n.moveTo(f,.5*o-r),n.arcTo(s,r,0,0,1,.5*i+s,M),n.arcTo(s,r,0,0,1,f,.5*o+r),n.arcTo(s,r,0,0,1,.5*i-s,M),n.arcTo(s,r,0,0,1,f,.5*o-r),n.close(),n.moveTo(f,.5*o-S),n.arcTo(T,S,0,0,0,.5*i-T,M),n.arcTo(T,S,0,0,0,f,.5*o+S),n.arcTo(T,S,0,0,0,.5*i+T,M),n.arcTo(T,S,0,0,0,f,.5*o-S),n.close(),n.fill()},mxCellRenderer.registerShape(mxShapeInfographicPartConcEllipse.prototype.cst.PART_CONC_ELLIPSE,mxShapeInfographicPartConcEllipse),Graph.handleFactory[mxShapeInfographicPartConcEllipse.prototype.cst.PART_CONC_ELLIPSE]=function(n){var t=[Graph.createHandle(n,["startAngle"],(function(n){var t=2*Math.PI*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"startAngle",this.startAngle))));return new mxPoint(n.x+.5*n.width+Math.sin(t)*n.width*.5,n.y+.5*n.height-Math.cos(t)*n.height*.5)}),(function(n,t){var e=Math.round(100*Math.max(-1,Math.min(1,(t.x-n.x-.5*n.width)/(.5*n.width))))/100,i=-Math.round(100*Math.max(-1,Math.min(1,(t.y-n.y-.5*n.height)/(.5*n.height))))/100,o=.5*Math.atan2(e,i)/Math.PI;o<0&&(o=1+o),this.state.style.startAngle=o}))],e=Graph.createHandle(n,["endAngle"],(function(n){var t=2*Math.PI*Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"endAngle",this.endAngle))));return new mxPoint(n.x+.5*n.width+Math.sin(t)*n.width*.5,n.y+.5*n.height-Math.cos(t)*n.height*.5)}),(function(n,t){var e=Math.round(100*Math.max(-1,Math.min(1,(t.x-n.x-.5*n.width)/(.5*n.width))))/100,i=-Math.round(100*Math.max(-1,Math.min(1,(t.y-n.y-.5*n.height)/(.5*n.height))))/100,o=.5*Math.atan2(e,i)/Math.PI;o<0&&(o=1+o),this.state.style.endAngle=o}));t.push(e);var i=Graph.createHandle(n,["arcWidth"],(function(n){var t=Math.max(0,Math.min(1,parseFloat(mxUtils.getValue(this.state.style,"arcWidth",this.arcWidth))));return new mxPoint(n.x+n.width/2,n.y+t*n.height*.5)}),(function(n,t){this.state.style.arcWidth=Math.round(100*Math.max(0,Math.min(n.height/2,n.width/2,(t.y-n.y)/(.5*n.height))))/100}));return t.push(i),t},mxShapeInfographicPartConcEllipse.prototype.getConstraints=function(n,t,e){var i=[];return i.push(new mxConnectionConstraint(new mxPoint(.145,.145),!1)),i.push(new mxConnectionConstraint(new mxPoint(.5,0),!1)),i.push(new mxConnectionConstraint(new mxPoint(.855,.145),!1)),i.push(new mxConnectionConstraint(new mxPoint(1,.5),!1)),i.push(new mxConnectionConstraint(new mxPoint(.855,.855),!1)),i.push(new mxConnectionConstraint(new mxPoint(.5,1),!1)),i.push(new mxConnectionConstraint(n