@progress/kendo-ui
Version:
This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.
1 lines • 75.2 kB
JavaScript
module.exports=function(i){var n={};function o(t){if(n[t])return n[t].exports;var e=n[t]={exports:{},id:t,loaded:!1};return i[t].call(e.exports,e,e.exports,o),e.loaded=!0,e.exports}return o.m=i,o.c=n,o.p="",o(0)}({0:function(t,e,i){t.exports=i(901)},3:function(t,e){t.exports=function(){throw Error("define cannot be used indirect")}},890:function(t,e){t.exports=require("../../kendo.data")},891:function(t,e){t.exports=require("../../kendo.dataviz.core")},892:function(t,e){t.exports=require("../../kendo.dataviz.themes")},901:function(t,e,i){var n;i(3),i=[i(890),i(902),i(903),i(904),i(905),i(906),i(891),i(892),i(907),i(908),i(909)],void 0===(e="function"==typeof(n=function(){var o=window.kendo.jQuery,f=void 0,p=kendo.dataviz,g=kendo.drawing,a=kendo.geometry,h=p.diagram,n=kendo.ui.Widget,t=kendo.Class,c=kendo.deepExtend,_=kendo._outerWidth,b=kendo._outerHeight,s=o.extend,y=kendo.data.HierarchicalDataSource,w=h.Canvas,C=h.Group,S=h.Rectangle,x=h.Circle,k=h.CompositeTransform,u=h.Rect,T=h.Path,D=h.DeleteShapeUnit,I=h.DeleteConnectionUnit,M=h.TextBlock,B=h.Image,v=h.Point,E=h.Intersect,R=h.ConnectionEditAdorner,e=h.UndoRedoService,P=h.ToolService,O=h.Selector,z=h.ResizingAdorner,A=h.ConnectorsAdorner,L=h.Cursors,d=h.Utils,H=kendo.Observable,V=h.ToBackUnit,F=h.ToFrontUnit,U=h.PolylineRouter,N=h.CascadingRouter,X=d.isUndefined,q=d.isDefined,r=g.util.defined,Y=Array.isArray,G=kendo.isFunction,J=d.isString,W=o.isPlainObject,m=Math,i=".kendoDiagram",K="cascading",Z="itemBoundsChange",Q="change",j="click",$="drag",tt="dragEnd",et="dragStart",it="mouseEnter",nt="mouseLeave",ot="error",st="Auto",rt,at,ht,ct,dt=9007199254740992,lt="select",ut="itemRotate",ft="pan",pt="zoomStart",_t="zoomEnd",vt="none",mt=600,gt=600,bt="rectangle",yt=100,wt=100,Ct=20,St=20,xt=0,kt="Yellow",Tt=Number.MAX_VALUE,Dt=-Number.MAX_VALUE,It="absolute",Mt="transformed",Bt="rotated",Et="transparent",Rt="width",Pt="height",Ot="x",zt="y",At="DOMMouseScroll"+i+" mousewheel"+i,Lt=.05,Ht=5,Vt='<a class="k-button k-button-md k-rounded-md k-button-solid k-button-solid-base #=className#" href="\\#">'+'<span class="k-button-icon #=iconClass# #=imageClass#"></span>'+'<span class="k-button-text">#=text#</span>'+"</a>",Ft=5,Ut=(h.DefaultConnectors=[{name:"Top"},{name:"Bottom"},{name:"Left"},{name:"Right"},{name:st,position:function(t){return t.getPosition("center")}}],{cancel:{text:"Cancel",imageClass:"k-i-cancel",className:"k-diagram-cancel",iconClass:"k-icon"},update:{text:"Update",imageClass:"k-i-checkmark",className:"k-diagram-update",iconClass:"k-icon"}});function Nt(t){var e=t.originalEvent,i=0;if(e.wheelDelta){i=-e.wheelDelta/40;i=i>0?m.ceil(i):m.floor(i)}else if(e.detail)i=e.detail;return i}function Xt(t){return t.options.name.toLowerCase()===st.toLowerCase()}function qt(t,e){var i=dt,n,o;for(var s=0;s<e.length;s++){o=e[s];if(!Xt(o)){var r=t.distanceTo(o.position());if(r<i){i=r;n=o}}}return n}function Yt(t,e){var i,n=[],o;var s=t.drawingContainer().children;var r=s.length;for(i=0;i<e.length;i++){o=e[i];for(var a=0;a<r;a++)if(s[a]==o.drawingContainer()){n.push(a);break}}return n}h.shapeDefaults=function(t){var e={type:bt,path:"",autoSize:true,visual:null,x:xt,y:xt,minWidth:Ct,minHeight:St,width:yt,height:wt,hover:{},editable:{connect:true,tools:[]},connectors:h.DefaultConnectors,rotation:{angle:0}};d.simpleExtend(e,t);return e};var Gt=H.extend({init:function(t){var e=this;e.dataItem=(t||{}).dataItem;H.fn.init.call(e);e.options=c({id:h.randomId()},e.options,t);e.isSelected=false;e.visual=new C({id:e.options.id,autoSize:e.options.autoSize});e.id=e.options.id;e._template()},options:{hover:{},cursor:L.grip,content:{align:"center middle"},selectable:true,serializable:true,enable:true},_getCursor:function(t){if(this.adorner)return this.adorner._getCursor(t);return this.options.cursor},visible:function(t){if(X(t))return this.visual.visible();else this.visual.visible(t)},bounds:function(){},refresh:function(){this.visual.redraw()},position:function(t){this.options.x=t.x;this.options.y=t.y;this.visual.position(t)},toString:function(){return this.options.id},serialize:function(){var t=c({},{options:this.options});if(this.dataItem)t.dataItem=this.dataItem.toString();return t},_content:function(t){if(t!==f){var e=this.options;if(h.Utils.isString(t))e.content.text=t;else c(e.content,t);var i=e.content;var n=this._contentVisual;if(!n)this._createContentVisual(i);else this._updateContentVisual(i)}return this.options.content.text},_createContentVisual:function(t){if(t.text){this._contentVisual=new M(t);this._contentVisual._includeInBBox=false;this.visual.append(this._contentVisual)}},_updateContentVisual:function(t){this._contentVisual.redraw(t)},_hitTest:function(t){var e=this.bounds();return this.visible()&&e.contains(t)&&this.options.enable},_template:function(){var t=this;if(t.options.content.template){var e=t.dataItem||{},i=kendo.template(t.options.content.template,{paramName:"dataItem"});t.options.content.text=i(e)}},_canSelect:function(){return this.options.selectable!==false},toJSON:function(){return{id:this.options.id}}}),Jt=t.extend({init:function(t,e){this.options=c({},this.options,e);this.connections=[];this.shape=t},options:{width:7,height:7,fill:{color:kt},hover:{}},position:function(){if(this.options.position)return this.options.position(this.shape);else return this.shape.getPosition(this.options.name)},toJSON:function(){return{shapeId:this.shape.toString(),connector:this.options.name}}}),l=(Jt.parse=function(t,e){var i=e.split(":"),n=i[0],o=i[1]||st;for(var s=0;s<t.shapes.length;s++){var r=t.shapes[s];if(r.options.id==n)return r.getConnector(o.trim())}},Gt.extend({init:function(t,e){var i=this;Gt.fn.init.call(i,t);this.diagram=e;this.updateOptionsFromModel();t=i.options;i.connectors=[];i.type=t.type;i.createShapeVisual();i.updateBounds();i.content(i.content());i._createConnectors()},options:h.shapeDefaults(),_setOptionsFromModel:function(t){var e=Zt(t||this.dataItem);this.options=c({},this.options,e);this.redrawVisual()},updateOptionsFromModel:function(t,e){if(this.diagram&&this.diagram._isEditable){var i=Zt(t||this.dataItem);if(t&&e)if(!p.inArray(e,["x","y","width","height"])){if(this.options.visual)this._redrawVisual();else if(i.type){this.options=c({},this.options,i);this._redrawVisual()}if(this.options.content){this._template();this.content(this.options.content)}}else{var n=this.bounds();n[e]=t[e];this.bounds(n)}else this.options=c({},this.options,i)}},_redrawVisual:function(){this.visual.clear();this._contentVisual=null;this.options.dataItem=this.dataItem;this.createShapeVisual();this.updateBounds()},redrawVisual:function(){this._redrawVisual();if(this.options.content){this._template();this.content(this.options.content)}},updateModel:function(t){var e=this.diagram;if(e&&e._isEditable){var i=this._bounds;var n=this.dataItem;if(n){e._suspendModelRefresh();if(r(n.x)&&i.x!==n.x)n.set("x",i.x);if(r(n.y)&&i.y!==n.y)n.set("y",i.y);if(r(n.width)&&i.width!==n.width)n.set("width",i.width);if(r(n.height)&&i.height!==n.height)n.set("height",i.height);this.dataItem=n;e._resumeModelRefresh();if(t)e._syncShapeChanges()}}},updateBounds:function(){var t=this.visual._measure(true);var e=this.options;this.bounds(new u(e.x,e.y,t.width,t.height));this._rotate();this._alignContent()},content:function(t){var e=this._content(t);this._alignContent();return e},_alignContent:function(){var t=this.options.content||{};var e=this._contentVisual;if(e&&t.align){var i=this.visual._measure();var n=new h.RectAlign(i);var o=e.drawingElement.bbox(null);var s=new u(0,0,o.width(),o.height());var r=n.align(s,t.align);e.position(r.topLeft())}},_createConnectors:function(){var t=this.options,e=t.connectors.length,i=t.connectorDefaults,n,o;for(o=0;o<e;o++){n=new Jt(this,c({},i,t.connectors[o]));this.connectors.push(n)}},bounds:function(t){var e;if(t)if(J(t))switch(t){case Mt:e=this._transformedBounds();break;case It:e=this._transformedBounds();var i=this.diagram._pan;e.x+=i.x;e.y+=i.y;break;case Bt:e=this._rotatedBounds();break;default:e=this._bounds}else{this._setBounds(t);this._triggerBoundsChange();if(!(this.diagram&&this.diagram._layouting))this.refreshConnections()}else e=this._bounds;return e},_setBounds:function(t){var e=this.options;var i=t.topLeft();var n=e.x=i.x;var o=e.y=i.y;var s=e.width=m.max(t.width,e.minWidth);var r=e.height=m.max(t.height,e.minHeight);this._bounds=new u(n,o,s,r);this.visual.redraw({x:n,y:o,width:s,height:r})},position:function(t){if(t)this.bounds(new u(t.x,t.y,this._bounds.width,this._bounds.height));else return this._bounds.topLeft()},clone:function(){var t=this.serialize();t.options.id=h.randomId();if(this.diagram&&this.diagram._isEditable&&r(this.dataItem))t.options.dataItem=ae(this.dataItem);return new l(t.options)},select:function(t){var e=this.diagram,i,n;if(X(t))t=true;if(this._canSelect())if(this.isSelected!=t){i=[];n=[];this.isSelected=t;if(this.isSelected){e._selectedItems.push(this);i.push(this)}else{d.remove(e._selectedItems,this);n.push(this)}if(!e._internalSelection)e._selectionChanged(i,n);return true}},rotate:function(t,e,i){var n=this.visual.rotate();if(t!==f){if(i!==false&&this.diagram&&this.diagram.undoRedoService&&t!==n.angle)this.diagram.undoRedoService.add(new h.RotateUnit(this.diagram._resizingAdorner,[this],[n.angle]),false);var o=this.bounds(),s=new v(o.width/2,o.height/2),r,a;if(e){r=t-n.angle;a=o.center().rotate(e,360-r).minus(s);this._rotationOffset=this._rotationOffset.plus(a.minus(o.topLeft()));this.position(a)}this.visual.rotate(t,s);this.options.rotation.angle=t;if(this.diagram&&this.diagram._connectorsAdorner)this.diagram._connectorsAdorner.refresh();this.refreshConnections();if(this.diagram)this.diagram.trigger(ut,{item:this})}return n},connections:function(t){var e=[],i,n,o,s,r;for(i=0;i<this.connectors.length;i++){r=this.connectors[i];s=r.connections;for(n=0,s;n<s.length;n++){o=s[n];if(t=="out"){var a=o.source();if(a.shape&&a.shape==this)e.push(o)}else if(t=="in"){var h=o.target();if(h.shape&&h.shape==this)e.push(o)}else e.push(o)}}return e},refreshConnections:function(){o.each(this.connections(),function(){this.refresh()})},getConnector:function(t){var e,i;if(J(t)){t=t.toLocaleLowerCase();for(e=0;e<this.connectors.length;e++){i=this.connectors[e];if(i.options.name.toLocaleLowerCase()==t)return i}}else if(t instanceof v)return qt(t,this.connectors);else return this.connectors.length?this.connectors[0]:null},getPosition:function(t){var e=this.bounds(),i=t.charAt(0).toLowerCase()+t.slice(1);if(G(e[i]))return this._transformPoint(e[i]());return e.center()},redraw:function(t){if(t){var e=this.options;var i;this.shapeVisual.redraw(this._visualOptions(t));if(this._diffNumericOptions(t,[Rt,Pt,Ot,zt])){this.bounds(new u(e.x,e.y,e.width,e.height));i=true}if(t.connectors){e.connectors=t.connectors;this._updateConnectors()}e=c(e,t);if(t.rotation||i)this._rotate();if(e.content)this.content(e.content)}},_updateConnectors:function(){var t=this.connections();this.connectors=[];this._createConnectors();var e;var i;var n;for(var o=0;o<t.length;o++){e=t[o];i=e.source();n=e.target();if(i.shape&&i.shape===this)e.source(this.getConnector(i.options.name)||null);else if(n.shape&&n.shape===this)e.target(this.getConnector(n.options.name)||null);e.updateModel()}},_diffNumericOptions:h.diffNumericOptions,_visualOptions:function(t){return{data:t.path,source:t.source,hover:t.hover,fill:t.fill,stroke:t.stroke}},_triggerBoundsChange:function(){if(this.diagram)this.diagram.trigger(Z,{item:this,bounds:this._bounds.clone()})},_transformPoint:function(t){var e=this.rotate(),i=this.bounds(),n=i.topLeft();if(e.angle)t.rotate(e.center().plus(n),360-e.angle);return t},_transformedBounds:function(){var t=this.bounds(),e=t.topLeft(),i=t.bottomRight();return u.fromPoints(this.diagram.modelToView(e),this.diagram.modelToView(i))},_rotatedBounds:function(){var t=this.bounds().rotatedBounds(this.rotate().angle),e=t.topLeft(),i=t.bottomRight();return u.fromPoints(e,i)},_rotate:function(){var t=this.options.rotation;if(t&&t.angle)this.rotate(t.angle);this._rotationOffset=new v},_hover:function(t){var e=this.options,i=e.hover,n=e.stroke,o=e.fill;if(t&&q(i.stroke))n=c({},n,i.stroke);if(t&&q(i.fill))o=i.fill;this.shapeVisual.redraw({stroke:n,fill:o});if(e.editable&&e.editable.connect)this.diagram._showConnectors(this,t)},_hitTest:function(t){if(this.visible()){var e=this.bounds(),i,n=this.rotate().angle;if(t.isEmpty&&!t.isEmpty())return E.rects(t,e,n?n:0);else{i=t.clone().rotate(e.center(),n);if(e.contains(i))return this}}},toJSON:function(){return{shapeId:this.options.id}},createShapeVisual:function(){var t=this.options;var e=this._visualOptions(t);var i=t.visual;var n=(t.type+"").toLocaleLowerCase();var o;e.width=t.width;e.height=t.height;if(G(i))o=i.call(this,t);else if(e.data){o=new T(e);ue(o)}else if(n=="rectangle")o=new S(e);else if(n=="circle")o=new x(e);else if(n=="text")o=new M(e);else if(n=="image")o=new B(e);else o=new T(e);this.shapeVisual=o;this.visual.append(this.shapeVisual)}})),Wt=Gt.extend({init:function(t,e,i){var n=this;Gt.fn.init.call(n,i);this.updateOptionsFromModel();this._initRouter();n.path=new h.Polyline(n.options);n.path.fill(Et);n.visual.append(n.path);n._sourcePoint=n._targetPoint=new v;n._setSource(t);n._setTarget(e);n.content(n.options.content);n.definers=[];if(r(i)&&i.points)n.points(i.points)},options:{hover:{stroke:{}},startCap:vt,endCap:vt,points:[],selectable:true,fromConnector:st,toConnector:st},_setOptionsFromModel:function(t){this.updateOptionsFromModel(t||this.dataItem)},updateOptionsFromModel:function(t){if(this.diagram&&this.diagram._isEditable){var e=this.diagram._dataMap;var i=Qt(t||this.dataItem);if(t){if(r(i.from)){var n=e[i.from];if(n&&r(i.fromConnector))n=n.getConnector(i.fromConnector);this.source(n)}else if(r(i.fromX)&&r(i.fromY))this.source(new v(i.fromX,i.fromY));if(r(i.to)){var o=e[i.to];if(o&&r(i.toConnector))o=o.getConnector(i.toConnector);this.target(o)}else if(r(i.toX)&&r(i.toY))this.target(new v(i.toX,i.toY));if(r(i.type)&&this.type()!==i.type){this.points([]);this.type(i.type)}this.dataItem=t;this._template();this.redraw(this.options)}else this.options=c({},i,this.options)}},updateModel:function(t){if(this.diagram&&this.diagram._isEditable)if(this.diagram.connectionsDataSource){var e=this.diagram.connectionsDataSource.getByUid(this.dataItem.uid);if(e){this.diagram._suspendModelRefresh();if(r(this.options.fromX)&&this.options.fromX!==null){de("from",e);de("fromConnector",e);e.set("fromX",this.options.fromX);e.set("fromY",this.options.fromY)}else{e.set("from",this.options.from);if(r(e.fromConnector))e.set("fromConnector",this.sourceConnector?this.sourceConnector.options.name:null);de("fromX",e);de("fromY",e)}if(r(this.options.toX)&&this.options.toX!==null){de("to",e);de("toConnector",e);e.set("toX",this.options.toX);e.set("toY",this.options.toY)}else{e.set("to",this.options.to);if(r(e.toConnector))e.set("toConnector",this.targetConnector?this.targetConnector.options.name:null);de("toX",e);de("toY",e)}if(r(this.options.type)&&r(e.type))e.set("type",this.options.type);this.dataItem=e;this.diagram._resumeModelRefresh();if(t)this.diagram._syncConnectionChanges()}}},sourcePoint:function(){return this._resolvedSourceConnector?this._resolvedSourceConnector.position():this._sourcePoint},_setSource:function(t){var e=t instanceof l;var i=this.options.fromConnector||st;var n;if(e&&!t.getConnector(i))return;if(t!==f)this.from=t;this._removeFromSourceConnector();if(t===null){if(this.sourceConnector){this._sourcePoint=(this._resolvedSourceConnector||this.sourceConnector).position();this._clearSourceConnector();this._setFromOptions(null,this._sourcePoint)}}else if(t instanceof Jt){n=t.shape.dataItem;if(n)this._setFromOptions(n.id);this.sourceConnector=t;this.sourceConnector.connections.push(this)}else if(t instanceof v){this._setFromOptions(null,t);this._sourcePoint=t;if(this.sourceConnector)this._clearSourceConnector()}else if(e){n=t.dataItem;if(n)this._setFromOptions(n.id);this.sourceConnector=t.getConnector(i);this.sourceConnector.connections.push(this)}},source:function(t,e){if(q(t)){if(e&&this.diagram)this.diagram.undoRedoService.addCompositeItem(new h.ConnectionEditUnit(this,t));this._setSource(t);this.refresh()}return this.sourceConnector?this.sourceConnector:this._sourcePoint},_setFromOptions:function(t,e){this.options.from=t;if(e){this.options.fromX=e.x;this.options.fromY=e.y}else{this.options.fromX=null;this.options.fromY=null}},sourceDefiner:function(t){if(t)if(t instanceof h.PathDefiner){t.left=null;this._sourceDefiner=t;this.source(t.point)}else throw"The sourceDefiner needs to be a PathDefiner.";else{if(!this._sourceDefiner)this._sourceDefiner=new h.PathDefiner(this.sourcePoint(),null,null);return this._sourceDefiner}},targetPoint:function(){return this._resolvedTargetConnector?this._resolvedTargetConnector.position():this._targetPoint},_setTarget:function(t){var e=t instanceof l;var i=this.options.toConnector||st;var n;if(e&&!t.getConnector(i))return;if(t!==f)this.to=t;this._removeFromTargetConnector();if(t===null){if(this.targetConnector){this._targetPoint=(this._resolvedTargetConnector||this.targetConnector).position();this._clearTargetConnector();this._setToOptions(null,this._targetPoint)}}else if(t instanceof Jt){n=t.shape.dataItem;if(n)this._setToOptions(n.id);this.targetConnector=t;this.targetConnector.connections.push(this)}else if(t instanceof v){this._setToOptions(null,t);this._targetPoint=t;if(this.targetConnector)this._clearTargetConnector()}else if(e){n=t.dataItem;if(n)this._setToOptions(n.id);this.targetConnector=t.getConnector(i);this.targetConnector.connections.push(this)}},target:function(t,e){if(q(t)){if(e&&this.diagram)this.diagram.undoRedoService.addCompositeItem(new h.ConnectionEditUnit(this,f,t));this._setTarget(t);this.refresh()}return this.targetConnector?this.targetConnector:this._targetPoint},_setToOptions:function(t,e){this.options.to=t;if(e){this.options.toX=e.x;this.options.toY=e.y}else{this.options.toX=null;this.options.toY=null}},targetDefiner:function(t){if(t)if(t instanceof h.PathDefiner){t.right=null;this._targetDefiner=t;this.target(t.point)}else throw"The sourceDefiner needs to be a PathDefiner.";else{if(!this._targetDefiner)this._targetDefiner=new h.PathDefiner(this.targetPoint(),null,null);return this._targetDefiner}},_updateConnectors:function(){this._updateConnector(this.source(),"source");this._updateConnector(this.target(),"target")},_updateConnector:function(e,i){var n=this;var o=n.diagram;if(e instanceof Jt&&!o.getShapeById(e.shape.id)){var s=e.shape.dataItem;var r=e.options.name;var t=function(){var t=o._dataMap[s.id];e=t.getConnector(r);n[i](e,false);n.updateModel()};if(o._dataMap[s.id])t();else{var a=o._inactiveShapeItems.getByUid(s.uid);if(a)o._deferredConnectionUpdates.push(a.onActivate(t))}}else n[i](e,false)},content:function(t){var e=this._content(t);if(r(t))this._alignContent();return e},_createContentVisual:function(t){var e;if(G(t.visual))e=t.visual.call(this,t);else if(t.text)e=new M(t);if(e){this._contentVisual=e;e._includeInBBox=false;this.visual.append(e)}return e},_updateContentVisual:function(t){if(G(t.visual)){this.visual.remove(this._contentVisual);this._createContentVisual(t)}else this._contentVisual.redraw(t)},_alignContent:function(){if(this._contentVisual){var t=Ft;var e=this.allPoints();var i=m.floor(e.length/2);var n=i-1;while(n>0&&e[n].equals(e[i])){n--;i++}var o=e[i];var s=e[n];var r=this._contentVisual._measure();var d=r.width;var a=r.height;var l=e.length%2===0;var u=s.distanceTo(o);if(l&&e.length>2&&u>0&&(s.y===o.y&&u<d||s.x===o.x&&u<a)){l=false;t=0}var h;if(l){var c=g.util.deg(m.atan2(o.y-s.y,o.x-s.x));h=new v((o.x-s.x)/2+s.x,(o.y-s.y)/2+s.y);if(m.abs(c)===90){h.x+=t;h.y-=a/2}else if(c%180===0){h.x-=d/2;h.y-=a+t}else if(c<-90||0<c&&c<90)h.y-=a;else if(c<0||c>90){h.x-=d;h.y-=a}}else{var f=m.floor(e.length/2);h=e[f].clone();s=e[f-1];o=e[f+1];var p=s.x<=h.x&&o.x<=h.x?t:-r.width-t;var _=s.y<=h.y&&o.y<=h.y?t:-r.height-t;h.x+=p;h.y+=_}this._contentVisual.position(h)}},select:function(t){var e=this.diagram,i,n;if(this._canSelect())if(this.isSelected!==t){this.isSelected=t;i=[];n=[];if(this.isSelected){this.adorner=new R(this,this.options.selection);e._adorn(this.adorner,true);e._selectedItems.push(this);i.push(this)}else if(this.adorner){e._adorn(this.adorner,false);d.remove(e._selectedItems,this);this.adorner=f;n.push(this)}if(this.adorner)this.adorner.refresh();if(!e._internalSelection)e._selectionChanged(i,n);return true}},bounds:function(t){if(t&&!J(t))this._bounds=t;else return this._bounds},type:function(t){var e=this.options;if(t){if(t!==e.type){e.type=t;this._initRouter();this.refresh()}}else return e.type},_initRouter:function(){var t=(this.options.type||"").toLowerCase();if(t==K)this._router=new N(this);else this._router=new U(this)},points:function(t){if(t){this.definers=[];for(var e=0;e<t.length;e++){var i=t[e];if(i instanceof h.Point)this.definers.push(new h.PathDefiner(i));else if(i.hasOwnProperty("x")&&i.hasOwnProperty("y"))this.definers.push(new h.PathDefiner(new v(i.x,i.y)));else throw"A Connection point needs to be a Point or an object with x and y properties."}}else{var n=[];if(q(this.definers))for(var o=0;o<this.definers.length;o++)n.push(this.definers[o].point);return n}},allPoints:function(){var t=[this.sourcePoint()];if(this.definers)for(var e=0;e<this.definers.length;e++)t.push(this.definers[e].point);t.push(this.targetPoint());return t},refresh:function(){this._resolveConnectors();this._refreshPath();this._alignContent();if(this.adorner)this.adorner.refresh()},_resolveConnectors:function(){var t=this,e,i,n,o,s=t.source(),r=t.target();if(s instanceof v)e=s;else if(s instanceof Jt)if(Xt(s))n=s.shape.connectors;else n=[s];if(r instanceof v)i=r;else if(r instanceof Jt)if(Xt(r))o=r.shape.connectors;else o=[r];if(e){if(o)t._resolvedTargetConnector=qt(e,o)}else if(n)if(i)t._resolvedSourceConnector=qt(i,n);else if(o)this._resolveAutoConnectors(n,o)},_resolveAutoConnectors:function(d,l){var u=dt;var f=dt;var t,p;var e,i;var n,o;var s,r;var a,h;var c;for(a=0;a<d.length;a++){s=d[a];if(!Xt(s)){e=s.position();for(h=0;h<l.length;h++){r=l[h];if(!Xt(r)){i=r.position();c=m.round(e.distanceTo(i));if(c<u&&this.diagram&&this._testRoutePoints(e,i,s,r)){u=c;t=s;p=r}if(c<f){n=s;o=r;f=c}}}}}if(t){n=t;o=p}this._resolvedSourceConnector=n;this._resolvedTargetConnector=o},_testRoutePoints:function(t,e,i,n){var o=this._router;var d=true;if(o instanceof N){var s=o.routePoints(t,e,i,n),r,a,h,l;l=this._getRouteExclude(t,e,i.shape,n.shape);s.unshift(t);s.push(e);for(var c=1;c<s.length;c++){r=s[c-1];a=s[c];h=new u(m.min(r.x,a.x),m.min(r.y,a.y),m.abs(r.x-a.x),m.abs(r.y-a.y));if(h.width>0){h.x++;h.width-=2}if(h.height>0){h.y++;h.height-=2}if(!h.isEmpty()&&this.diagram._shapesQuadTree.hitTestRect(h,l)){d=false;break}}}return d},_getRouteExclude:function(t,e,i,n){var o=[];if(this._isPointInsideShape(t,i))o.push(i);if(this._isPointInsideShape(e,n))o.push(n);return o},_isPointInsideShape:function(t,e){var i=e.bounds(),n,o=e.rotate().angle,s,r,a=i.x,h=i.y;n=t.clone().rotate(i.center(),o);s=n.x;r=n.y;return s>a&&s<a+i.width&&r>h&&r<h+i.height},redraw:function(t){if(t){this.options=c({},this.options,t);var e=this.options.points;if(r(e)&&e.length>0){this.points(e);this._refreshPath()}if(t&&t.content||t.text)this.content(t.content);this.path.redraw({fill:t.fill,stroke:t.stroke,startCap:t.startCap,endCap:t.endCap})}},clone:function(){var t=this.serialize();if(this.diagram&&this.diagram._isEditable&&r(this.dataItem))t.options.dataItem=ae(this.dataItem);return new Wt(this.from,this.to,t.options)},serialize:function(){var t=this.from.toJSON?this.from.toJSON:this.from.toString(),e=this.to.toJSON?this.to.toJSON:this.to.toString();var i=c({},{options:this.options,from:t,to:e});if(r(this.dataItem))i.dataItem=this.dataItem.toString();i.options.points=this.points();return i},_hitTest:function(t){if(this.visible()){var e=new v(t.x,t.y),i=this.sourcePoint(),n=this.targetPoint();if(t.isEmpty&&!t.isEmpty()&&t.contains(i)&&t.contains(n))return this;if(this._router.hitTest(e))return this}},_hover:function(t){var e=(this.options.stroke||{}).color;if(t&&q(this.options.hover.stroke.color))e=this.options.hover.stroke.color;this.path.redraw({stroke:{color:e}})},_refreshPath:function(){if(!r(this.path))return;this._drawPath();this.bounds(this._router.getBounds())},_drawPath:function(){if(this._router)this._router.route();var t=this.sourcePoint();var e=this.targetPoint();var i=this.points();this.path.redraw({points:[t].concat(i,[e])})},_clearSourceConnector:function(){this.sourceConnector=f;this._resolvedSourceConnector=f},_clearTargetConnector:function(){this.targetConnector=f;this._resolvedTargetConnector=f},_removeFromSourceConnector:function(){if(this.sourceConnector)d.remove(this.sourceConnector.connections,this)},_removeFromTargetConnector:function(){if(this.targetConnector)d.remove(this.targetConnector.connections,this)},toJSON:function(){var t=this;var e,i,n;if(t.from&&t.from.toJSON)e=t.from.toJSON();else{n=t._sourcePoint;e={x:n.x,y:n.y}}if(t.to&&t.to.toJSON)i=t.to.toJSON();else{n=t._targetPoint;i={x:n.x,y:n.y}}return{from:e,to:i}}}),Kt=n.extend({init:function(t,e){var i=this;kendo.destroy(t);n.fn.init.call(i,t,e);i._initTheme();i._initElements();i._extendLayoutOptions(i.options);i._initDefaults(e);i._interactionDefaults();i._initCanvas();i.mainLayer=new C({id:"main-layer"});i.canvas.append(i.mainLayer);i._shapesQuadTree=new re(i);i._pan=new v;i._adorners=[];i.adornerLayer=new C({id:"adorner-layer"});i.canvas.append(i.adornerLayer);i._createHandlers();i._initialize();i._resizingAdorner=new z(i,{editable:i.options.editable});i._connectorsAdorner=new A(i);i._adorn(i._resizingAdorner,true);i._adorn(i._connectorsAdorner,true);i.selector=new O(i);i._clipboard=[];i.pauseMouseHandlers=false;i._fetchFreshData();i._createGlobalToolBar();i._createOptionElements();i.zoom(i.options.zoom);i.canvas.draw()},options:{name:"Diagram",theme:"default",layout:"",zoomRate:.1,zoom:1,zoomMin:0,zoomMax:2,dataSource:{},draggable:true,template:"",autoBind:true,editable:{rotate:{},resize:{},text:true,tools:[],drag:{snap:{size:10,angle:10}},remove:true},pannable:{},selectable:{key:"none"},tooltip:{enabled:true,format:"{0}"},copy:{enabled:true,offsetX:20,offsetY:20},shapeDefaults:h.shapeDefaults({undoable:true}),connectionDefaults:{editable:{tools:[]},type:K},shapes:[],connections:[]},events:[_t,pt,ft,lt,ut,Z,Q,j,it,nt,"toolBarClick","save","cancel","edit","remove","add","dataBound",et,$,tt],items:function(){return o()},_createGlobalToolBar:function(){var t=this.options.editable;if(t){var e=t.tools;if(this._isEditable&&e!==false&&(!e||e.length===0))e=["createShape","undo","redo","rotateClockwise","rotateAnticlockwise"];if(e&&e.length){this.toolBar=new jt(this,{tools:e||{},click:this._toolBarClick.bind(this),modal:false});this.toolBar.element.css({textAlign:"left"});this.element.prepend(this.toolBar.element);this._resize()}}},createShape:function(){if(this.editor&&this.editor.end()||!this.editor){var t=this.dataSource;var e=t.view()||[];var i=e.length;var n=ce(t,{});var o=this._createShape(n,{});if(!this.trigger("add",{shape:o})){t.insert(i,n);var s=this._inactiveShapeItems.getByUid(n.uid);s.element=o;this.edit(o)}}},_createShape:function(t,e){e=c({},this.options.shapeDefaults,e);e.dataItem=t;var i=new l(e,this);return i},createConnection:function(){if(this.editor&&this.editor.end()||!this.editor){var t=this.connectionsDataSource;var e=t.view()||[];var i=e.length;var n=ce(t,{});var o=this._createConnection(n);if(!this.trigger("add",{connection:o})){this._connectionsDataMap[n.uid]=o;t.insert(i,n);this.addConnection(o,false);this.edit(o)}}},_createConnection:function(t,e,i){var n=c({},this.options.connectionDefaults);n.dataItem=t;var o=new Wt(e||new v,i||new v,n);return o},editModel:function(t,e){this.cancelEdit();var i,n;var o=this.options.editable;if(e=="shape"){i=o.shapeEditors;n=o.shapeTemplate}else if(e=="connection"){var s=ee.bind(this);i=c({},{from:s,to:s},o.connectionEditors);n=o.connectionTemplate}else return;this.editor=new te(this.element,{update:this._update.bind(this),cancel:this._cancel.bind(this),model:t,type:e,target:this,editors:i,template:n});this.trigger("edit",this._editArgs())},edit:function(t){if(t.dataItem){var e=t instanceof l?"shape":"connection";this.editModel(t.dataItem,e)}},cancelEdit:function(){if(this.editor){this._getEditDataSource().cancelChanges(this.editor.model);this._destroyEditor()}},saveEdit:function(){if(this.editor&&this.editor.end()&&!this.trigger("save",this._editArgs()))this._getEditDataSource().sync()},_update:function(){if(this.editor&&this.editor.end()&&!this.trigger("save",this._editArgs())){this._getEditDataSource().sync();this._destroyEditor()}},_cancel:function(){if(this.editor&&!this.trigger("cancel",this._editArgs())){var t=this.editor.model;this._getEditDataSource().cancelChanges(t);var e=this._connectionsDataMap[t.uid]||this._dataMap[t.id];if(e)e._setOptionsFromModel(t);this._destroyEditor()}},_getEditDataSource:function(){return this.editor.options.type==="shape"?this.dataSource:this.connectionsDataSource},_editArgs:function(){var t={container:this.editor.wrapper};t[this.editor.options.type]=this.editor.model;return t},_destroyEditor:function(){if(this.editor){this.editor.close();this.editor=null}},_initElements:function(){this.wrapper=this.element.empty().css("position","relative").attr("tabindex",0).addClass("k-widget k-diagram");this.scrollable=o("<div />").appendTo(this.element)},_initDefaults:function(t){var e=this.options;var i=e.editable;var n=e.shapeDefaults;var o=e.connectionDefaults;var s=(t||{}).shapeDefaults;if(i===false){n.editable=false;o.editable=false}else{le(i,n.editable,["drag","remove","connect"]);le(i,o.editable,["drag","remove"])}if(s&&s.connectors)e.shapeDefaults.connectors=s.connectors},_interactionDefaults:function(){var t=this.options;var e=t.selectable;var i=t.pannable;var n=kendo.support.mobileOS;if(e&&!r(e.multiple))t.selectable=c({multiple:n?false:true},t.selectable);if(i&&!r(i.key))t.pannable=c({key:n?"none":"ctrl"},t.pannable)},_initCanvas:function(){var t=o("<div class='k-layer'></div>").appendTo(this.scrollable)[0];var e=this.viewport();this.canvas=new w(t,{width:e.width||mt,height:e.height||gt})},_createHandlers:function(){var t=this;var e=t.element;e.on(At,t._wheel.bind(t)).on("keydown"+i,t._keydown.bind(t));t._userEvents=new kendo.UserEvents(this.scrollable,{multiTouch:true,fastTap:true,tap:t._tap.bind(t),start:t._dragStart.bind(t),move:t._drag.bind(t),end:t._dragEnd.bind(t),gesturestart:t._gestureStart.bind(t),gesturechange:t._gestureChange.bind(t),gestureend:t._gestureEnd.bind(t),doubleTap:t._doubleTap.bind(t),supportDoubleTap:true});t.toolService=new P(t);this.scrollable.on("mouseover"+i,t._mouseover.bind(t)).on("mouseout"+i,t._mouseout.bind(t)).on("mousemove"+i,t._mouseMove.bind(t)).on("mousedown"+i,t._mouseDown.bind(t)).on("mouseup"+i,t._mouseUp.bind(t));this._syncHandler=t._syncChanges.bind(t);t._resizeHandler=t.resize.bind(t,false);kendo.onResize(t._resizeHandler);this.bind(pt,t._destroyToolBar.bind(t));this.bind(ft,t._destroyToolBar.bind(t))},_dragStart:function(t){this._pauseMouseHandlers=true;var e=this._eventPositions(t,true);var i=t.event;if(this.toolService.start(e,this._meta(i))){this._destroyToolBar();i.preventDefault()}},_drag:function(t){var e=this._eventPositions(t);var i=t.event;if(this.toolService.move(e,this._meta(i)))i.preventDefault()},_dragEnd:function(t){this._pauseMouseHandlers=false;var e=this._eventPositions(t);var i=t.event;if(this.toolService.end(e,this._meta(i))){this._createToolBar();i.preventDefault()}},_mouseMove:function(t){if(!this._pauseMouseHandlers){var e=this._eventPositions(t);this.toolService._updateHoveredItem(e);this.toolService._updateCursor(e)}},_mouseDown:function(){this._pauseMouseHandlers=true},_mouseUp:function(){this._pauseMouseHandlers=false},_tap:function(t){var e=this.toolService;var i=this.options.selectable;var n=this._eventPositions(t);var o=this.focus();e._updateHoveredItem(n);if(e.hoveredItem){var s=e.hoveredItem;this.trigger("click",{item:s,point:n,meta:this._meta(t.event)});if(i&&s.options.selectable!==false){var r=i.multiple!==false;var a=kendo.support.mobileOS||this._meta(t.event).ctrlKey;if(s.isSelected)if(a){this._destroyToolBar();s.select(false)}else this._createToolBar(o);else{this._destroyToolBar();this.select(s,{addToSelection:r&&a});this._createToolBar(o)}}}else if(i){this._destroyToolBar();this.deselect()}},_keydown:function(t){if(this.toolService.keyDown(t.keyCode,this._meta(t)))t.preventDefault()},_wheel:function(t){var e=Nt(t),i=this._eventPositions(t),n=c(this._meta(t),{delta:e});if(this.toolService.wheel(i,n))t.preventDefault()},_meta:function(t){return{ctrlKey:t.ctrlKey,metaKey:t.metaKey,altKey:t.altKey,shiftKey:t.shiftKey,type:t.type}},_eventPositions:function(t,e){var i;if(t.touch){var n=e?"startLocation":"location";i=new v(t.x[n],t.y[n])}else{var o=t.originalEvent;i=new v(o.pageX,o.pageY)}return this.documentToModel(i)},_gestureStart:function(t){this._destroyToolBar();this.scroller.disable();var e=this.documentToModel(new v(t.center.x,t.center.y));var i={point:e,zoom:this.zoom()};if(this.trigger(pt,i))return;this._gesture=t;this._initialCenter=e},_gestureChange:function(t){var e=this._gesture;var i=this._initialCenter;var n=this.documentToView(new v(t.center.x,t.center.y));var o=t.distance/e.distance;var s=this._zoom;var r=false;if(m.abs(o-1)>=Lt){this._zoom=s=this._getValidZoom(s*o);this.options.zoom=s;this._gesture=t;r=true}var a=i.times(s);var h=n.minus(a);if(r||this._pan.distanceTo(h)>=Ht){this._panTransform(h);this._updateAdorners()}t.preventDefault()},_doubleTap:function(t){var e=this;var i=this._eventPositions(t);var n=e.options;var o=n.zoomRate;var s=e.zoom()+o;var r=this._meta(t);var a={point:i,meta:r,zoom:s};if(e.trigger(pt,a))return;s=kendo.dataviz.round(Math.max(n.zoomMin,Math.min(n.zoomMax,s)),2);a.zoom=s;e.zoom(s,a);e.trigger(_t,a)},_gestureEnd:function(){if(this.options.pannable!==false)this.scroller.enable();this.trigger(_t,{point:this._initialCenter,zoom:this.zoom()})},_resize:function(){var t=this.viewport();if(this.canvas)this.canvas.size(t);if(this.scrollable&&this.toolBar)this.scrollable.height(t.height)},_mouseover:function(t){var e=t.target._kendoNode;if(e&&e.srcElement._hover)e.srcElement._hover(true,e.srcElement)},_mouseout:function(t){var e=t.target._kendoNode;if(e&&e.srcElement._hover)e.srcElement._hover(false,e.srcElement)},_initTheme:function(){var t=this;var e=((t.options||{}).theme||"").toLowerCase();var i=p.ui.themes||{};var n;if(p.SASS_THEMES.indexOf(e)!=-1)n=p.autoTheme().diagram;else n=(i[e]||{}).diagram;t.options=c({},n,t.options);if(t.options.editable===true)c(t.options,{editable:(n||{}).editable})},_createOptionElements:function(){var t=this.options;var e=t.shapes.length;if(e)this._createShapes();if(t.connections.length)this._createConnections();if(e&&t.layout)this.layout(t.layout)},_createShapes:function(){var t=this,e=t.options,i=e.shapes,n,o;for(o=0;o<i.length;o++){n=i[o];t.addShape(n)}},_createConnections:function(){var t=this,e=t.options,i=e.connectionDefaults,n=e.connections,o,s,r,a;for(a=0;a<n.length;a++){o=n[a];s=t._findConnectionTarget(o.from);r=t._findConnectionTarget(o.to);t.connect(s,r,c({},i,o))}},_findConnectionTarget:function(t){t=t||{};var e=this;var i=J(t)?t:t.shapeId||t.id;var n;if(i){n=e.getShapeById(i);if(t.connector)n=n.getConnector(t.connector)}else n=new v(t.x||0,t.y||0);return n},destroy:function(){var t=this;n.fn.destroy.call(t);if(this._userEvents)this._userEvents.destroy();kendo.unbindResize(t._resizeHandler);t.clear();t.element.off(i);t.scroller.wrapper.off(i);t.canvas.destroy(true);t.canvas=f;t._destroyEditor();t.destroyScroller();t._destroyGlobalToolBar();t._destroyToolBar()},destroyScroller:function(){var t=this.scroller;if(!t)return;t.destroy();t.element.remove();this.scroller=null},save:function(){var t={shapes:[],connections:[]};var e,i,n;for(e=0;e<this.shapes.length;e++){n=this.shapes[e];if(n.options.serializable)t.shapes.push(n.options)}for(e=0;e<this.connections.length;e++){i=this.connections[e];t.connections.push(c({},i.options,i.toJSON()))}return t},focus:function(){if(!this.element.is(kendo._activeElement())){var t=this.element,e=t[0],i=[],n=[],o=document.documentElement,s;do{e=e.parentNode;if(e.scrollHeight>e.clientHeight){i.push(e);n.push(e.scrollTop)}}while(e!=o);t.trigger("focus");for(s=0;s<i.length;s++)i[s].scrollTop=n[s];return true}},load:function(t){this.clear();this.setOptions(t);this._createShapes();this._createConnections()},setOptions:function(t){c(this.options,t)},clear:function(){var t=this;t.select(false);t.mainLayer.clear();t._shapesQuadTree.clear();t._initialize()},connect:function(t,e,i){var n;if(this.connectionsDataSource&&this._isEditable){var o=this.connectionsDataSource.add({});n=this._connectionsDataMap[o.uid];n.source(t);n.target(e);n.redraw(i);n.updateModel()}else{n=new Wt(t,e,c({},this.options.connectionDefaults,i));this.addConnection(n)}return n},connected:function(t,e){for(var i=0;i<this.connections.length;i++){var n=this.connections[i];if(n.from==t&&n.to==e)return true}return false},addConnection:function(t,e){if(e!==false)this.undoRedoService.add(new h.AddConnectionUnit(t,this),false);t.diagram=this;t._setOptionsFromModel();t.refresh();this.mainLayer.append(t.visual);this.connections.push(t);this.trigger(Q,{added:[t],removed:[]});return t},_addConnection:function(t,e){var i=this.connectionsDataSource;var n;if(i&&this._isEditable){n=ce(i,ae(t.dataItem));t.dataItem=n;t.updateModel();if(!this.trigger("add",{connection:t})){this._connectionsDataMap[n.uid]=t;i.add(n);this.addConnection(t,e);t._updateConnectors();return t}}else if(!this.trigger("add",{connection:t})){this.addConnection(t,e);t._updateConnectors();return t}},addShape:function(t,e){var i,n=this.options.shapeDefaults;if(t instanceof l){i=t;this._parseBounds(i.bounds())}else if(!(t instanceof kendo.Class)){n=c({},n,t||{});i=new l(n,this);this._parseBounds(i.bounds())}else return;if(e!==false)this.undoRedoService.add(new h.AddShapeUnit(i,this),false);this.shapes.push(i);if(i.diagram!==this){this._shapesQuadTree.insert(i);i.diagram=this}this.mainLayer.append(i.visual);this.trigger(Q,{added:[i],removed:[]});return i},_addShape:function(t,e){var i=this;var n=i.dataSource;var o;if(n&&this._isEditable){o=ce(n,ae(t.dataItem));t.dataItem=o;t.updateModel();if(!this.trigger("add",{shape:t})){this.dataSource.add(o);var s=this._inactiveShapeItems.getByUid(o.uid);s.element=t;s.undoable=e;return t}}else if(!this.trigger("add",{shape:t}))return this.addShape(t,e)},_parseBounds:function(t){t.x=typeof t.x=="string"?parseFloat(t.x):t.x;t.y=typeof t.y=="string"?parseFloat(t.y):t.y},remove:function(t,e){t=Y(t)?t.slice(0):[t];var i=he(t);var n=i.shapes;var o=i.connections;var s;if(!r(e))e=true;if(e)this.undoRedoService.begin();this._suspendModelRefresh();for(s=n.length-1;s>=0;s--)this._removeItem(n[s],e,o);for(s=o.length-1;s>=0;s--)this._removeItem(o[s],e);this._resumeModelRefresh();if(e)this.undoRedoService.commit(false);this.trigger(Q,{added:[],removed:t})},_removeShapeDataItem:function(t){if(this._isEditable){this.dataSource.remove(t.dataItem);delete this._dataMap[t.dataItem.id]}},_removeConnectionDataItem:function(t){if(this._isEditable){this.connectionsDataSource.remove(t.dataItem);delete this._connectionsDataMap[t.dataItem.uid]}},_triggerRemove:function(t){var e=[];var i,n,o;for(var s=0;s<t.length;s++){i=t[s];o=i.options.editable;if(i instanceof l)n={shape:i};else n={connection:i};if(o&&o.remove!==false&&!this.trigger("remove",n))e.push(i)}return e},undo:function(){this.undoRedoService.undo()},redo:function(){this.undoRedoService.redo()},select:function(t,e){if(q(t)){e=c({addToSelection:false},e);var i=e.addToSelection,n=[],o=[],s,r;if(!i)this.deselect();this._internalSelection=true;if(t instanceof Array)n=t;else if(t instanceof Gt)n=[t];for(s=0;s<n.length;s++){r=n[s];if(r.select(true))o.push(r)}this._selectionChanged(o,[]);this._internalSelection=false}else return this._selectedItems},selectAll:function(){this.select(this.shapes.concat(this.connections))},selectArea:function(t){var e,i,n;this._internalSelection=true;var o=[];if(t instanceof u){i=this.shapes.concat(this.connections);for(e=0;e<i.length;e++){n=i[e];if((!t||n._hitTest(t))&&n.options.enable)if(n.select(true))o.push(n)}}this._selectionChanged(o,[]);this._internalSelection=false},deselect:function(t){this._internalSelection=true;var e=[],i=[],n,o;if(t instanceof Array)i=t;else if(t instanceof Gt)i.push(t);else if(!q(t))i=this._selectedItems.slice(0);for(o=0;o<i.length;o++){n=i[o];if(n.select(false))e.push(n)}this._selectionChanged([],e);this._internalSelection=false},toFront:function(t,e){if(!t)t=this._selectedItems.slice();var i=this._getDiagramItems(t),n;if(!r(e)||e){n=Yt(this.mainLayer,i.visuals);var o=new F(this,t,n);this.undoRedoService.add(o)}else{this.mainLayer.toFront(i.visuals);this._fixOrdering(i,true)}},toBack:function(t,e){if(!t)t=this._selectedItems.slice();var i=this._getDiagramItems(t),n;if(!r(e)||e){n=Yt(this.mainLayer,i.visuals);var o=new V(this,t,n);this.undoRedoService.add(o)}else{this.mainLayer.toBack(i.visuals);this._fixOrdering(i,false)}},bringIntoView:function(t,e){var i=this.viewport();var n=new h.RectAlign(i);var o,s,r,a;if(i.width===0||i.height===0)return;e=c({animate:false,align:"center middle"},e);if(e.align=="none")e.align="center middle";if(t instanceof Gt)s=t.bounds(Mt);else if(Y(t))s=this.boundingBox(t);else if(t instanceof u)s=t.clone();r=s.clone();s.zoom(this._zoom);if(s.width>i.width||s.height>i.height){this._zoom=this._getValidZoom(m.min(i.width/r.width,i.height/r.height));s=r.clone().zoom(this._zoom)}this._zoomMainLayer();o=s.clone();n.align(s,e.align);a=s.topLeft().minus(o.topLeft());this.pan(a.times(-1),e.animate)},alignShapes:function(t){if(X(t))t="Left";var e=this.select(),i,n,o;if(e.length===0)return;switch(t.toLowerCase()){case"left":case"top":i=Tt;break;case"right":case"bottom":i=Dt;break}for(o=0;o<e.length;o++){n=e[o];if(n instanceof l)switch(t.toLowerCase()){case"left":i=m.min(i,n.options.x);break;case"top":i=m.min(i,n.options.y);break;case"right":i=m.max(i,n.options.x);break;case"bottom":i=m.max(i,n.options.y);break}}var s=[];var r=[];for(o=0;o<e.length;o++){n=e[o];if(n instanceof l){r.push(n);s.push(n.bounds());switch(t.toLowerCase()){case"left":case"right":n.position(new v(i,n.options.y));break;case"top":case"bottom":n.position(new v(n.options.x,i));break}}}var a=new h.TransformUnit(r,s);this.undoRedoService.add(a,false)},zoom:function(t,e){if(t){var i=e?e.point:new h.Point(0,0);t=this._zoom=this._getValidZoom(t);if(!X(i)){i=new h.Point(m.round(i.x),m.round(i.y));var n=i.times(t);var o=this.modelToView(i);var s=o.minus(n);this._storePan(new h.Point(m.round(s.x),m.round(s.y)))}if(e)e.zoom=t;this._panTransform();this.canvas.surface.hideTooltip();this._updateAdorners()}return this._zoom},_getPan:function(t){var e=this.canvas;if(!e.translate)t=t.plus(this._pan);return t},pan:function(t,e){if(t instanceof v){var i=this;var n=i.scroller;t=i._getPan(t);t=t.times(-1);if(e)n.animatedScrollTo(t.x,t.y,function(){i._updateAdorners()});else{n.scrollTo(t.x,t.y);i._updateAdorners()}}else return this._pan.times(-1)},viewport:function(){var t=this.element;var e=t.width();var i=t.height();if(this.toolBar)i-=b(this.toolBar.element);return new u(0,0,e,i)},copy:function(){if(this.options.copy.enabled){this._clipboard=[];this._copyOffset=1;for(var t=0;t<this._selectedItems.length;t++){var e=this._selectedItems[t];this._clipboard.push(e)}}},cut:function(){if(this.options.copy.enabled){this._clipboard=[];this._copyOffset=0;for(var t=0;t<this._selectedItems.length;t++){var e=this._selectedItems[t];this._clipboard.push(e)}this.remove(this._clipboard,true)}},paste:function(){if(this._clipboard.length>0){var t,e,i;var n={};var o=he(this._clipboard);var s=o.connections;var r=o.shapes;var a={x:this._copyOffset*this.options.copy.offsetX,y:this._copyOffset*this.options.copy.offsetY};this.deselect();for(i=0;i<r.length;i++){t=r[i];e=t.clone();n[t.id]=e;e.position(new v(t.options.x+a.x,t.options.y+a.y));e.diagram=this;e=this._addShape(e);if(e)e.select()}for(i=0;i<s.length;i++){t=s[i];e=this._addConnection(t.clone());if(e){this._updateCopiedConnection(e,t,"source",n,a);this._updateCopiedConnection(e,t,"target",n,a);e.select(true);e.updateModel()}}this._syncChanges();this._copyOffset+=1}},_updateCopiedConnection:function(e,t,i,n,o){var s,r,a;var h=t[i]();var c=this;if(h instanceof Jt&&n[h.shape.id]){a=n[h.shape.id];if(c.getShapeById(a.id))e[i](a.getConnector(h.options.name));else{r=c._inactiveShapeItems.getByUid(a.dataItem.uid);if(r){s=function(t){a=c._dataMap[t.id];e[i](a.getConnector(h.options.name));e.updateModel()};c._deferredConnectionUpdates.push(r.onActivate(s))}}}else e[i](new v(t[i+"Point"]().x+o.x,t[i+"Point"]().y+o.y))},boundingBox:function(t,e){var i=u.empty(),n,o=q(t)?this._getDiagramItems(t):{shapes:this.shapes};if(o.shapes.length>0){var s=o.shapes[0];i=s.bounds(Bt);for(var r=1;r<o.shapes.length;r++){s=o.shapes[r];n=s.bounds(Bt);if(e===true){n.x-=s._rotationOffset.x;n.y-=s._rotationOffset.y}i=i.union(n)}}return i},_containerOffset:function(){var t=this.element.offset();if(this.toolBar)t.top+=b(this.toolBar.element);return t},documentToView:function(t){var e=this._containerOffset();return new v(t.x-e.left,t.y-e.top)},viewToDocument:function(t){var e=this._containerOffset();return new v(t.x+e.left,t.y+e.top)},viewToModel:function(t){return this._transformWithMatrix(t,this._matrixInvert)},modelToView:function(t){return this._transformWithMatrix(t,this._matrix)},modelToLayer:function(t){return this._transformWithMatrix(t,this._layerMatrix)},layerToModel:function(t){return this._transformWithMatrix(t,this._layerMatrixInvert)},documentToModel:function(t){var e=this.documentToView(t);if(!this.canvas.translate){e.x=e.x+this.scroller.scrollLeft;e.y=e.y+this.scroller.scrollTop}return this.viewToModel(e)},modelToDocument:function(t){return this.viewToDocument(this.modelToView(t))},_transformWithMatrix:function(t,e){var i=t;if(t instanceof v){if(e)i=e.apply(t)}else{var n=this._transformWithMatrix(t.topLeft(),e),o=this._transformWithMatrix(t.bottomRight(),e);i=u.fromPoints(n,o)}return i},setDataSource:function(t){this.options.dataSource=t;this._dataSource();if(this.options.autoBind)this.dataSource.fetch()},setConnectionsDataSource:function(t){this.options.connectionsDataSource=t;this._connectionDataSource();if(this.options.autoBind)this.connectionsDataSource.fetch()},layout:function(t){this._layouting=true;var e;if(X(t))t=this.options.layout;if(X(t)||X(t.type))e="Tree";else e=t.type;var i;switch(e.toLowerCase()){case"tree":i=new h.TreeLayout(this);break;case"layered":i=new h.LayeredLayout(this);break;case"forcedirected":case"force":case"spring":case"springembedder":i=new h.SpringLayout(this);break;default:throw"Layout algorithm '"+e+"' is not supported."}var n=new h.LayoutState(this);var o=i.layout(t);if(o){var s=new h.LayoutUndoUnit(n,o,t?t.animate:null);this.undoRedoService.add(s)}this._layouting=false;this._redrawConnections()},getShapeById:function(e){var t;t=d.first(this.shapes,function(t){return t.visual.id===e});if(t)return t;t=d.first(this.connections,function(t){return t.visual.id===e});return t},getShapeByModelId:function(e){var t;if(this._isEditable)t=this._dataMap[e];else t=d.first(this.shapes,function(t){return(t.dataItem||{}).id===e});return t},getShapeByModelUid:function(e){var t;if(this._isEditable)t=d.first(this.shapes,function(t){return(t.dataItem||{}).uid===e});else t=this._dataMap[e];return t},getConnectionByModelId:function(e){var t;if(this.connectionsDataSource)t=d.first(this.connections,function(t){return(t.dataItem||{}).id===e});return t},getConnectionByModelUid:function(t){var e;if(this.connectionsDataSource)e=this._connectionsDataMap[t];return e},_extendLayoutOptions:function(t){if(t.layout)t.layout=c({},h.LayoutBase.fn.defaultOptions||{},t.layout)},_selectionChanged:function(t,e){if(t.length||e.length)this.trigger(lt,{selected:t,deselected:e})},_getValidZoom:function(t){return m.min(m.max(t,this.options.zoomMin),this.options.zoomMax)},_panTransform:function(t){var e=this,i=t||e._pan;if(e.canvas.translate){e.scroller.scrollTo(i.x,i.y);e._zoomMainLayer()}else{e._storePan(i);e._transformMainLayer()}},_finishPan:function(){this.trigger(ft,{total:this._pan,delta:Number.NaN})},_storePan:function(t){this._pan=t;this._storeViewMatrix()},_zoomMainLayer:function(){var t=this._zoom;var e=new k(0,0,t,t);e.render(this.mainLayer);this._storeLayerMatrix(e);this._storeViewMatrix()},_transformMainLayer:function(){var t=this._pan,e=this._zoom;var i=new k(t.x,t.y,e,e);i.render(this.mainLayer);this._storeLayerMatrix(i);this._storeViewMatrix()},_storeLayerMatrix:function(t){this._layerMatrix=t.toMatrix();this._layerMatrixInvert=t.invert().toMatrix()},_storeViewMatrix:function(){var t=this._pan,e=this._zoom;var i=new k(t.x,t.y,e,e);this._matrix=i.toMatrix();this._matrixInvert=i.invert().toMatrix()},_toIndex:function(t,e){var i=this._getDiagramItems(t);this.mainLayer.toIndex(i.visuals,e);this._fixOrdering(i,false)},_fixOrdering:function(t,e){var i=e?this.shapes.length-1:0,n=e?this.connections.length-1:0,o,s;for(o=0;o<t.shapes.length;o++){s=t.shapes[o];d.remove(this.shapes,s);d.insert(this.shapes,s,i)}for(o=0;o<t.cons.length;o++){s=t.cons[o];d.remove(this.connections,s);d.insert(this.connections,s,n)}},_getDiagramItems:function(t){var e,i={},n=t;i.visuals=[];i.shapes=[];i.cons=[];if(!t)n=this._selectedItems.slice();else if(!Y(t))n=[t];for(e=0;e<n.length;e++){var o=n[e];if(o instanceof l){i.shapes.push(o);i.visuals.push(o.visual)}else if(o instanceof Wt){i.cons.push(o);i.visuals.push(o.visual)}}return i},_removeItem:function(t,e,i){t.select(false);if(t instanceof l){this._removeShapeDataItem(t);this._removeShape(t,e,i)}else if(t instanceof Wt){this._removeConnectionDataItem(t);this._removeConnection(t,e)}this.mainLayer.remove(t.visual)},_removeShape