@progress/kendo-ui
Version:
This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.
1 lines • 35.7 kB
JavaScript
module.exports=function(i){var n={};function s(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,s),e.loaded=!0,e.exports}return s.m=i,s.c=n,s.p="",s(0)}({0:function(t,e,i){t.exports=i(914)},3:function(t,e){t.exports=function(){throw Error("define cannot be used indirect")}},893:function(t,e){t.exports=require("../../kendo.drawing")},907:function(t,e){t.exports=require("./svg")},914:function(t,e,i){var n;i(3),i=[i(893),i(907)],void 0===(e="function"==typeof(n=function(){var d=window.kendo.jQuery,r=void 0,h=window.kendo,e,c=h.dataviz.diagram,t=h.Class,l=c.Group,y=c.Rect,u=c.Rectangle,w=c.Utils,f=w.isUndefined,x=c.Point,v=c.Circle,i=c.Ticker,a=h.deepExtend,p=h.ui.Movable,g=h.drawing.util,o=g.defined,_=d.inArray,n={arrow:"default",grip:"pointer",cross:"pointer",add:"pointer",move:"move",select:"pointer",south:"s-resize",east:"e-resize",west:"w-resize",north:"n-resize",rowresize:"row-resize",colresize:"col-resize"},m=10,S="Auto",b="Top",T="Right",C="Left",M="Bottom",k=10,z=10,B="dragStart",P="drag",A="dragEnd",I="itemRotate",R="itemBoundsChange",H=5,L=5,D="mouseEnter",E="mouseLeave",U="zoomStart",O="zoomEnd",K=-2e4,V=2e4,N=.9,G=.93,j=5,q="transparent",F="pan",Q="rotated",W,X="target",J={"-1":"source",1:X},Y=(c.Cursors=n,h.Class.extend({init:function(t){this.layoutState=t;this.diagram=t.diagram},initState:function(){this.froms=[];this.tos=[];this.subjects=[];function t(t,e){var i=this.diagram.getShapeById(t);if(i){this.subjects.push(i);this.froms.push(i.bounds().topLeft());this.tos.push(e.topLeft())}}this.layoutState.nodeMap.forEach(t,this)},update:function(t){if(this.subjects.length<=0)return;for(var e=0;e<this.subjects.length;e++)this.subjects[e].position(new x(this.froms[e].x+(this.tos[e].x-this.froms[e].x)*t,this.froms[e].y+(this.tos[e].y-this.froms[e].y)*t))}})),Z=t.extend({init:function(t,e,i){if(f(i))this.animate=false;else this.animate=i;this._initialState=t;this._finalState=e;this.title="Diagram layout"},undo:function(){this.setState(this._initialState)},redo:function(){this.setState(this._finalState)},setState:function(t){var n=t.diagram;if(this.animate){t.linkMap.forEach(function(t,e){var i=n.getShapeById(t);i.visible(false);if(i)i.points(e)});var e=new i;e.addAdapter(new Y(t));e.onComplete(function(){t.linkMap.forEach(function(t){var e=n.getShapeById(t);e.visible(true)})});e.play()}else{t.nodeMap.forEach(function(t,e){var i=n.getShapeById(t);if(i)i.position(e.topLeft())});t.linkMap.forEach(function(t,e){var i=n.getShapeById(t);if(i)i.points(e)})}}}),$=t.extend({init:function(t){this.units=[];this.title="Composite unit";if(t!==r)this.units.push(t)},add:function(t){this.units.push(t)},undo:function(){for(var t=0;t<this.units.length;t++)this.units[t].undo()},redo:function(){for(var t=0;t<this.units.length;t++)this.units[t].redo()}}),tt=t.extend({init:function(t,e,i){this.item=t;this._redoSource=e;this._redoTarget=i;if(o(e))this._undoSource=t.source();if(o(i))this._undoTarget=t.target();this.title="Connection Editing"},undo:function(){if(this._undoSource!==r)this.item._updateConnector(this._undoSource,"source");if(this._undoTarget!==r)this.item._updateConnector(this._undoTarget,"target");this.item.updateModel()},redo:function(){if(this._redoSource!==r)this.item._updateConnector(this._redoSource,"source");if(this._redoTarget!==r)this.item._updateConnector(this._redoTarget,"target");this.item.updateModel()}}),et=t.extend({init:function(t,e,i){this.item=t;this._undoSource=e;this._undoTarget=i;this._redoSource=t.source();this._redoTarget=t.target();this.title="Connection Editing"},undo:function(){this.item._updateConnector(this._undoSource,"source");this.item._updateConnector(this._undoTarget,"target");this.item.updateModel()},redo:function(){this.item._updateConnector(this._redoSource,"source");this.item._updateConnector(this._redoTarget,"target");this.item.updateModel()}}),it=t.extend({init:function(t){this.connection=t;this.diagram=t.diagram;this.targetConnector=t.targetConnector;this.title="Delete connection"},undo:function(){this.diagram._addConnection(this.connection,false)},redo:function(){this.diagram.remove(this.connection,false)}}),nt=t.extend({init:function(t){this.shape=t;this.diagram=t.diagram;this.title="Deletion"},undo:function(){this.diagram._addShape(this.shape,false);this.shape.select(false)},redo:function(){this.shape.select(false);this.diagram.remove(this.shape,false)}}),st=t.extend({init:function(t,e,i){this.shapes=t;this.undoStates=e;this.title="Transformation";this.redoStates=[];this.adorner=i;for(var n=0;n<this.shapes.length;n++){var s=this.shapes[n];this.redoStates.push(s.bounds())}},undo:function(){for(var t=0;t<this.shapes.length;t++){var e=this.shapes[t];e.bounds(this.undoStates[t]);if(e.hasOwnProperty("layout"))e.layout(e,this.redoStates[t],this.undoStates[t]);e.updateModel()}if(this.adorner){this.adorner.refreshBounds();this.adorner.refresh()}},redo:function(){for(var t=0;t<this.shapes.length;t++){var e=this.shapes[t];e.bounds(this.redoStates[t]);if(e.hasOwnProperty("layout"))e.layout(e,this.undoStates[t],this.redoStates[t]);e.updateModel()}if(this.adorner){this.adorner.refreshBounds();this.adorner.refresh()}}}),ot=t.extend({init:function(t,e){this.connection=t;this.diagram=e;this.title="New connection"},undo:function(){this.diagram.remove(this.connection,false)},redo:function(){this.diagram._addConnection(this.connection,false)}}),rt=t.extend({init:function(t,e){this.shape=t;this.diagram=e;this.title="New shape"},undo:function(){this.diagram.deselect();this.diagram.remove(this.shape,false)},redo:function(){this.diagram._addShape(this.shape,false)}}),at=t.extend({init:function(t,e,i){this.initial=t;this.finalPos=e;this.diagram=i;this.title="Pan Unit"},undo:function(){this.diagram.pan(this.initial)},redo:function(){this.diagram.pan(this.finalPos)}}),ht=t.extend({init:function(t,e,i){this.shapes=e;this.undoRotates=i;this.title="Rotation";this.redoRotates=[];this.redoAngle=t._angle;this.adorner=t;this.center=t._innerBounds.center();for(var n=0;n<this.shapes.length;n++){var s=this.shapes[n];this.redoRotates.push(s.rotate().angle)}},undo:function(){var t,e;for(t=0;t<this.shapes.length;t++){e=this.shapes[t];e.rotate(this.undoRotates[t],this.center,false);if(e.hasOwnProperty("layout"))e.layout(e);e.updateModel()}if(this.adorner){this.adorner._initialize();this.adorner.refresh()}},redo:function(){var t,e;for(t=0;t<this.shapes.length;t++){e=this.shapes[t];e.rotate(this.redoRotates[t],this.center,false);if(e.hasOwnProperty("layout"))e.layout(e);e.updateModel()}if(this.adorner){this.adorner._initialize();this.adorner.refresh()}}}),ct=t.extend({init:function(t,e,i){this.diagram=t;this.indices=i;this.items=e;this.title="Rotate Unit"},undo:function(){this.diagram._toIndex(this.items,this.indices)},redo:function(){this.diagram.toFront(this.items,false)}}),dt=t.extend({init:function(t,e,i){this.diagram=t;this.indices=i;this.items=e;this.title="Rotate Unit"},undo:function(){this.diagram._toIndex(this.items,this.indices)},redo:function(){this.diagram.toBack(this.items,false)}}),lt=h.Observable.extend({init:function(t){h.Observable.fn.init.call(this,t);this.bind(this.events,t);this.stack=[];this.index=0;this.capacity=100},events:["undone","redone"],begin:function(){this.composite=new $},cancel:function(){this.composite=r},commit:function(t){if(this.composite.units.length>0)this._restart(this.composite,t);this.composite=r},addCompositeItem:function(t){if(this.composite)this.composite.add(t);else this.add(t)},add:function(t,e){this._restart(t,e)},pop:function(){if(this.index>0){this.stack.pop();this.index--}},count:function(){return this.stack.length},undo:function(){if(this.index>0){this.index--;this.stack[this.index].undo();this.trigger("undone")}},redo:function(){if(this.stack.length>0&&this.index<this.stack.length){this.stack[this.index].redo();this.index++;this.trigger("redone")}},_restart:function(t,e){this.stack.splice(this.index,this.stack.length-this.index);this.stack.push(t);if(e!==false)this.redo();else this.index++;if(this.stack.length>this.capacity){this.stack.splice(0,this.stack.length-this.capacity);this.index=this.capacity}},clear:function(){this.stack=[];this.index=0}}),ut=t.extend({init:function(t){this.toolService=t},start:function(){},move:function(){},end:function(){},tryActivate:function(){return false},getCursor:function(){return n.arrow}}),ft=ut.extend({init:function(t){var e=this;var i=h.support.mobileOS?G:N;ut.fn.init.call(e,t);var n=e.toolService.diagram,s=n.canvas;var o=n.scroller=e.scroller=d(n.scrollable).kendoMobileScroller({friction:i,velocityMultiplier:j,mousewheelScrolling:false,zoom:false,scroll:e._move.bind(e)}).data("kendoMobileScroller");if(s.translate)e.movableCanvas=new p(s.element);var r=function(t,e,i){t.makeVirtual();t.virtualSize(e||K,i||V)};r(o.dimensions.x);r(o.dimensions.y);o.disable()},tryActivate:function(t,e){var i=this.toolService;var n=i.diagram.options.pannable;var s=e.ctrlKey;if(o(n.key))if(!n.key||n.key=="none")s=It(e)&&!o(i.hoveredItem);else s=e[n.key+"Key"];return n!==false&&s&&!o(i.hoveredAdorner)&&!o(i._hoveredConnector)},start:function(){this.scroller.enable()},move:function(){},_move:function(t){var e=this,i=e.toolService.diagram,n=i.canvas,s=new x(t.scrollLeft,t.scrollTop);if(n.translate){i._storePan(s.times(-1));e.movableCanvas.moveTo(s);n.translate(s.x,s.y)}else s=s.plus(i._pan.times(-1));i.trigger(F,{pan:s})},end:function(){this.scroller.disable()},getCursor:function(){return n.move}}),vt=t.extend({init:function(t){this.toolService=t},tryActivate:function(){return true},start:function(t,e){var i=this.toolService,n=i.diagram,s=i.hoveredItem;if(s){i.selectSingle(s,e);if(s.adorner){this.adorner=s.adorner;this.handle=this.adorner._hitTest(t)}}if(!this.handle){this.handle=n._resizingAdorner._hitTest(t);if(this.handle)this.adorner=n._resizingAdorner}if(this.adorner)if(!this.adorner.isDragHandle(this.handle)||!n.trigger(B,{shapes:this.adorner.shapes,connections:[]}))this.adorner.start(t);else{i.startPoint=t;i.end(t)}},move:function(t){if(this.adorner){this.adorner.move(this.handle,t);if(this.adorner.isDragHandle(this.handle))this.toolService.diagram.trigger(P,{shapes:this.adorner.shapes,connections:[]})}},end:function(){var t=this.toolService.diagram,e=this.adorner,i;if(e)if(!e.isDragHandle(this.handle)||!t.trigger(A,{shapes:e.shapes,connections:[]})){i=e.stop();if(i)t.undoRedoService.add(i,false)}else e.cancel();this.adorner=r;this.handle=r},getCursor:function(t){return this.toolService.hoveredItem?this.toolService.hoveredItem._getCursor(t):n.arrow}}),pt=t.extend({init:function(t){this.toolService=t},tryActivate:function(t,e){var i=this.toolService;var n=i.diagram.options.selectable;var s=n&&n.multiple!==false;if(s)if(n.key&&n.key!="none")s=e[n.key+"Key"];else s=It(e);return s&&!o(i.hoveredItem)&&!o(i.hoveredAdorner)},start:function(t){var e=this.toolService.diagram;e.deselect();e.selector.start(t)},move:function(t){var e=this.toolService.diagram;e.selector.move(t)},end:function(t,e){var i=this.toolService.diagram,n=this.toolService.hoveredItem;var s=i.selector.bounds();if((!n||!n.isSelected)&&!e.ctrlKey)i.deselect();if(!s.isEmpty())i.selectArea(s);i.selector.end()},getCursor:function(){return n.arrow}}),gt=t.extend({init:function(t){this.toolService=t;this.type="ConnectionTool"},tryActivate:function(){return this.toolService._hoveredConnector},start:function(t,e){var i=this.toolService,n=i.diagram,s=i._hoveredConnector,o=n._createConnection({},s._c,t);if(Pt(o)&&!n.trigger(B,{shapes:[],connections:[o],connectionHandle:X})&&n._addConnection(o)){i._connectionManipulation(o,s._c.shape,true);i._removeHover();i.selectSingle(i.activeConnection,e);if(e.type=="touchmove")n._cachedTouchTarget=s.visual}else{o.source(null);i.end(t)}},move:function(t){var e=this.toolService;var i=e.activeConnection;i.target(t);e.diagram.trigger(P,{shapes:[],connections:[i],connectionHandle:X});return true},end:function(t){var e=this.toolService,i=e.diagram,n=e.activeConnection,s=e.hoveredItem,o=e._hoveredConnector,r,a=i._cachedTouchTarget;if(!n)return;if(o&&o._c!=n.sourceConnector)r=o._c;else if(s&&s instanceof c.Shape)r=s.getConnector(S)||s.getConnector(t);else r=t;n.target(r);if(!i.trigger(A,{shapes:[],connections:[n],connectionHandle:X})){n.updateModel();i._syncConnectionChanges()}else{i.remove(n,false);i.undoRedoService.pop()}e._connectionManipulation();if(a){i._connectorsAdorner.visual.remove(a);i._cachedTouchTarget=null}},getCursor:function(){return n.arrow}}),_t=t.extend({init:function(t){this.toolService=t;this.type="ConnectionTool"},tryActivate:function(t,e){var i=this.toolService,n=i.diagram,s=n.options.selectable,o=i.hoveredItem,r=s!==false&&o&&o.path&&!(o.isSelected&&e.ctrlKey);if(r)this._c=o;return r},start:function(t,e){var i=this.toolService;var n=this._c;i.selectSingle(n,e);var s=n.adorner;var o,r;if(s){o=s._hitTest(t);r=J[o]}if(Pt(n)&&s&&!i.diagram.trigger(B,{shapes:[],connections:[n],connectionHandle:r})){this.handle=o;this.handleName=r;s.start(t)}else{i.startPoint=t;i.end(t)}},move:function(t){var e=this._c.adorner;if(Pt(this._c)&&e){e.move(this.handle,t);this.toolService.diagram.trigger(P,{shapes:[],connections:[this._c],connectionHandle:this.handleName});return true}},end:function(t){var e=this._c;var i=e.adorner;var n=this.toolService;var s=n.diagram;if(i)if(Pt(e)){var o=i.stop(t);if(!s.trigger(A,{shapes:[],connections:[e],connectionHandle:this.handleName})){s.undoRedoService.add(o,false);e.updateModel();s._syncConnectionChanges()}else o.undo()}},getCursor:function(){return n.move}});function s(t,e){return e.charCodeAt(0)==t||e.toUpperCase().charCodeAt(0)==t}var mt=t.extend({init:function(t){this.diagram=t;this.tools=[new ft(this),new _t(this),new gt(this),new pt(this),new vt(this)];this.activeTool=r},start:function(t,e){e=a({},e);if(this.activeTool)this.activeTool.end(t,e);this._updateHoveredItem(t);this._activateTool(t,e);this.activeTool.start(t,e);this._updateCursor(t);this.diagram.focus();this.diagram.canvas.surface.suspendTracking();this.startPoint=t;return true},move:function(t,e){e=a({},e);var i=true;if(this.activeTool)i=this.activeTool.move(t,e);if(i)this._updateHoveredItem(t);this._updateCursor(t);return true},end:function(t,e){e=a({},e);if(this.activeTool)this.activeTool.end(t,e);this.diagram.canvas.surface.resumeTracking();this.activeTool=r;this._updateCursor(t);return true},keyDown:function(t,e){var i=this.diagram;e=a({ctrlKey:false,metaKey:false,altKey:false},e);if((e.ctrlKey||e.metaKey)&&!e.altKey){if(s(t,"a")){i.selectAll();i._destroyToolBar();return true}else if(s(t,"z")){i.undo();i._destroyToolBar();return true}else if(s(t,"y")){i.redo();i._destroyToolBar();return true}else if(s(t,"c")){i.copy();i._destroyToolBar()}else if(s(t,"x")){i.cut();i._destroyToolBar()}else if(s(t,"v")){i.paste();i._destroyToolBar()}else if(s(t,"l")){i.layout();i._destroyToolBar()}else if(s(t,"d")){i._destroyToolBar();i.copy();i.paste()}}else if(t===46||t===8){var n=this.diagram._triggerRemove(i.select());if(n.length){this.diagram.remove(n,true);this.diagram._syncChanges();this.diagram._destroyToolBar()}return true}else if(t===27){this._discardNewConnection();i.deselect();i._destroyToolBar();return true}},wheel:function(t,e){var i=this.diagram,n=e.delta,s=i.zoom(),o=i.options,r=o.zoomRate,a={point:t,meta:e,zoom:s};if(i.trigger(U,a))return;if(n<0)s+=r;else s-=r;s=h.dataviz.round(Math.max(o.zoomMin,Math.min(o.zoomMax,s)),2);a.zoom=s;i.zoom(s,a);i.trigger(O,a);return true},setTool:function(t,e){t.toolService=this;this.tools[e]=t},selectSingle:function(t,e){var i=this.diagram;var n=i.options.selectable;if(n&&!t.isSelected&&t.options.selectable!==false){var s=e.ctrlKey&&n.multiple!==false;i.select(t,{addToSelection:s})}},_discardNewConnection:function(){if(this.newConnection){this.diagram.remove(this.newConnection);this.newConnection=r}},_activateTool:function(t,e){for(var i=0;i<this.tools.length;i++){var n=this.tools[i];if(n.tryActivate(t,e)){this.activeTool=n;break}}},_updateCursor:function(t){var e=this.diagram.element;var i=this.activeTool?this.activeTool.getCursor(t):this.hoveredAdorner?this.hoveredAdorner._getCursor(t):this.hoveredItem?this.hoveredItem._getCursor(t):n.arrow;e.css({cursor:i})},_connectionManipulation:function(t,e,i){this.activeConnection=t;this.disabledShape=e;if(i)this.newConnection=this.activeConnection;else this.newConnection=r},_updateHoveredItem:function(t){var e=this._hitTest(t);var i=this.diagram;if(e!=this.hoveredItem&&(!this.disabledShape||e!=this.disabledShape)){if(this.hoveredItem){i.trigger(E,{item:this.hoveredItem});this.hoveredItem._hover(false)}if(e&&e.options.enable){i.trigger(D,{item:e});this.hoveredItem=e;this.hoveredItem._hover(true)}else this.hoveredItem=r}},_removeHover:function(){if(this.hoveredItem){this.hoveredItem._hover(false);this.hoveredItem=r}},_hitTest:function(t){var e,i=this.diagram,n,s;if(this._hoveredConnector){this._hoveredConnector._hover(false);this._hoveredConnector=r}if(i._connectorsAdorner._visible){e=i._connectorsAdorner._hitTest(t);if(e)return e}e=this.diagram._resizingAdorner._hitTest(t);if(e){this.hoveredAdorner=i._resizingAdorner;if(e.x!==0||e.y!==0)return;e=r}else this.hoveredAdorner=r;if(!this.activeTool||this.activeTool.type!=="ConnectionTool"){var o=[];for(s=0;s<i._selectedItems.length;s++){n=i._selectedItems[s];if(n instanceof c.Connection)o.push(n)}e=this._hitTestItems(o,t)}return e||this._hitTestElements(t)},_hitTestElements:function(t){var e=this.diagram;var i=this._hitTestItems(e.shapes,t);var n=this._hitTestItems(e.connections,t);var s;if((!this.activeTool||this.activeTool.type!="ConnectionTool")&&i&&n&&!At(i,t)){var o=e.mainLayer;var r=_(i.visual,o.children);var a=_(n.visual,o.children);s=r>a?i:n}return s||i||n},_hitTestItems:function(t,e){var i,n,s;for(i=t.length-1;i>=0;i--){n=t[i];s=n._hitTest(e);if(s)return s}}}),yt=h.Class.extend({init:function(){}}),xt=yt.extend({init:function(t){var e=this;yt.fn.init.call(e);this.connection=t},hitTest:function(t){var e=this.getBounds().inflate(m);if(!e.contains(t))return false;return c.Geometry.distanceToPolyline(t,this.connection.allPoints())<m},getBounds:function(){var t=this.connection.allPoints(),e=t[0],i=t[t.length-1],n=Math.max(e.x,i.x),s=Math.min(e.x,i.x),o=Math.min(e.y,i.y),r=Math.max(e.y,i.y);for(var a=1;a<t.length-1;++a){n=Math.max(n,t[a].x);s=Math.min(s,t[a].x);o=Math.min(o,t[a].y);r=Math.max(r,t[a].y)}return new y(s,o,n-s,r-o)}}),wt=xt.extend({init:function(t){var e=this;xt.fn.init.call(e);this.connection=t},route:function(){}}),St=xt.extend({SAME_SIDE_DISTANCE_RATIO:5,init:function(t){var e=this;xt.fn.init.call(e);this.connection=t},routePoints:function(t,e,i,n){var s;if(i&&n)s=this._connectorPoints(t,e,i,n);else s=this._floatingPoints(t,e,i);return s},route:function(){var t=this.connection._resolvedSourceConnector;var e=this.connection._resolvedTargetConnector;var i=this.connection.sourcePoint();var n=this.connection.targetPoint();var s=this.routePoints(i,n,t,e);this.connection.points(s)},_connectorSides:[{name:"Top",axis:"y",boundsPoint:"topLeft",secondarySign:1},{name:"Left",axis:"x",boundsPoint:"topLeft",secondarySign:1},{name:"Bottom",axis:"y",boundsPoint:"bottomRight",secondarySign:-1},{name:"Right",axis:"x",boundsPoint:"bottomRight",secondarySign:-1}],_connectorSide:function(t,e){var i=t.position();var n=t.shape.bounds(Q);var d={topLeft:n.topLeft(),bottomRight:n.bottomRight()};var l=this._connectorSides;var s=g.MAX_NUM;var o;var r;var a;var h;for(var c=0;c<l.length;c++){h=l[c];a=h.axis;o=Math.round(Math.abs(i[a]-d[h.boundsPoint][a]));if(o<s){s=o;r=h}else if(o===s&&(i[a]-e[a])*h.secondarySign>(i[r.axis]-e[r.axis])*r.secondarySign)r=h}return r.name},_sameSideDistance:function(t){var e=t.shape.bounds(Q);return Math.min(e.width,e.height)/this.SAME_SIDE_DISTANCE_RATIO},_connectorPoints:function(t,e,i,d){var n=this._connectorSide(i,e);var s=this._connectorSide(d,t);var l=e.x-t.x;var o=e.y-t.y;var r=this._sameSideDistance(i);var a=[];var h,c;if(n===b||n==M)if(s==b||s==M)if(n==s){if(n==b)c=Math.min(t.y,e.y)-r;else c=Math.max(t.y,e.y)+r;a=[new x(t.x,c),new x(e.x,c)]}else a=[new x(t.x,t.y+o/2),new x(e.x,t.y+o/2)];else a=[new x(t.x,e.y)];else if(s==C||s==T)if(n==s){if(n==C)h=Math.min(t.x,e.x)-r;else h=Math.max(t.x,e.x)+r;a=[new x(h,t.y),new x(h,e.y)]}else a=[new x(t.x+l/2,t.y),new x(t.x+l/2,t.y+o)];else a=[new x(e.x,t.y)];return a},_floatingPoints:function(t,e,i){var d=i?this._connectorSide(i,e):null;var n=this._startHorizontal(t,e,d);var s=[t,t,e,e];var o=e.x-t.x;var l=e.y-t.y;var r=s.length;var a;var h;for(var c=1;c<r-1;++c){if(n)if(c%2!==0){a=o/(r/2);h=0}else{a=0;h=l/((r-1)/2)}else if(c%2!==0){a=0;h=l/(r/2)}else{a=o/((r-1)/2);h=0}s[c]=new x(s[c-1].x+a,s[c-1].y+h)}c--;if(n&&c%2!==0||!n&&c%2===0)s[r-2]=new x(s[r-1].x,s[r-2].y);else s[r-2]=new x(s[r-2].x,s[r-1].y);return[s[1],s[2]]},_startHorizontal:function(t,e,i){var n;if(i!==null&&(i===T||i===C))n=true;else n=Math.abs(t.x-e.x)>Math.abs(t.y-e.y);return n}}),bt=t.extend({init:function(t,e){var i=this;i.diagram=t;i.options=a({},i.options,e);i.visual=new l;i.diagram._adorners.push(i)},refresh:function(){}}),Tt=bt.extend({init:function(t,e){var i=this,n;i.connection=t;n=i.connection.diagram;i._ts=n.toolService;bt.fn.init.call(i,n,e);var s=i.connection.sourcePoint();var o=i.connection.targetPoint();i.spVisual=new v(a(i.options.handles,{center:s}));i.epVisual=new v(a(i.options.handles,{center:o}));i.visual.append(i.spVisual);i.visual.append(i.epVisual)},options:{handles:{}},_getCursor:function(){return n.move},start:function(t){this.handle=this._hitTest(t);this.startPoint=t;this._initialSource=this.connection.source();this._initialTarget=this.connection.target();switch(this.handle){case-1:if(this.connection.targetConnector)this._ts._connectionManipulation(this.connection,this.connection.targetConnector.shape);break;case 1:if(this.connection.sourceConnector)this._ts._connectionManipulation(this.connection,this.connection.sourceConnector.shape);break}},move:function(t,e){switch(t){case-1:this.connection.source(e);break;case 1:this.connection.target(e);break;default:var i=e.minus(this.startPoint);this.startPoint=e;if(!this.connection.sourceConnector)this.connection.source(this.connection.sourcePoint().plus(i));if(!this.connection.targetConnector)this.connection.target(this.connection.targetPoint().plus(i));break}this.refresh();return true},stop:function(t){var e=this.diagram.toolService,i=e.hoveredItem,n;if(e._hoveredConnector)n=e._hoveredConnector._c;else if(i&&i instanceof c.Shape)n=i.getConnector(S)||i.getConnector(t);else n=t;if(this.handle===-1)this.connection.source(n);else if(this.handle===1)this.connection.target(n);this.handle=r;this._ts._connectionManipulation();return new et(this.connection,this._initialSource,this._initialTarget)},_hitTest:function(t){var e=this.connection.sourcePoint();var i=this.connection.targetPoint();var n=this.options.handles.width/2+m;var s=this.options.handles.height/2+m;var o=e.distanceTo(t);var r=i.distanceTo(t);var a=new y(e.x,e.y).inflate(n,s).contains(t);var h=new y(i.x,i.y).inflate(n,s).contains(t);var c=0;if(a&&(!h||o<r))c=-1;else if(h&&(!a||r<o))c=1;return c},refresh:function(){this.spVisual.redraw({center:this.diagram.modelToLayer(this.connection.sourcePoint())});this.epVisual.redraw({center:this.diagram.modelToLayer(this.connection.targetPoint())})}}),Ct=bt.extend({init:function(t,e){var i=this;bt.fn.init.call(i,t,e);i._refreshHandler=function(t){if(t.item==i.shape)i.refresh()}},show:function(t){var e=this,i,n,s;e._visible=true;e.shape=t;e.diagram.bind(R,e._refreshHandler);i=t.connectors.length;e.connectors=[];e._clearVisual();for(n=0;n<i;n++){s=new Bt(t.connectors[n]);e.connectors.push(s);e.visual.append(s.visual)}e.visual.visible(true);e.refresh()},_clearVisual:function(){var t=this;if(t.diagram._cachedTouchTarget)t._keepCachedTouchTarget();else t.visual.clear()},_keepCachedTouchTarget:function(){var t=this,e=t.visual.children;var i=e.length;var n=_(t.diagram._cachedTouchTarget,e);for(var s=i-1;s>=0;s--){if(s==n)continue;t.visual.remove(e[s])}},destroy:function(){var t=this;t.diagram.unbind(R,t._refreshHandler);t.shape=r;t._visible=r;t.visual.visible(false)},_hitTest:function(t){var e,i;for(i=0;i<this.connectors.length;i++){e=this.connectors[i];if(e._hitTest(t)){e._hover(true);this.diagram.toolService._hoveredConnector=e;break}}},refresh:function(){if(this.shape){var t=this.shape.bounds();t=this.diagram.modelToLayer(t);this.visual.position(t.topLeft());d.each(this.connectors,function(){this.refresh()})}}});function Mt(t,e){var i;if(t.x==-1&&t.y==-1)i=e.bottomRight();else if(t.x==1&&t.y==1)i=e.topLeft();else if(t.x==-1&&t.y==1)i=e.topRight();else if(t.x==1&&t.y==-1)i=e.bottomLeft();else if(t.x===0&&t.y==-1)i=e.bottom();else if(t.x===0&&t.y==1)i=e.top();else if(t.x==1&&t.y===0)i=e.left();else if(t.x==-1&&t.y===0)i=e.right();return i}var kt=bt.extend({init:function(t,e){var i=this;bt.fn.init.call(i,t,e);i._manipulating=false;i.map=[];i.shapes=[];i._initSelection();i._createHandles();i.redraw();i.diagram.bind("select",function(t){i._initialize(t.selected)});i._refreshHandler=function(){if(!i._internalChange){i.refreshBounds();i.refresh()}};i._rotatedHandler=function(){if(i.shapes.length==1)i._angle=i.shapes[0].rotate().angle;i._refreshHandler()};i.diagram.bind(R,i._refreshHandler).bind(I,i._rotatedHandler);i.refreshBounds();i.refresh()},options:{handles:{fill:{color:"#fff"},stroke:{color:"#282828"},height:7,width:7,hover:{fill:{color:"#282828"},stroke:{color:"#282828"}}},selectable:{stroke:{color:"#778899",width:1,dashType:"dash"},fill:{color:q}},offset:10},_initSelection:function(){var t=this;var e=t.diagram;var i=e.options.selectable;var n=a({},t.options.selectable,i);t.rect=new u(n);t.visual.append(t.rect)},_resizable:function(){return this.options.editable&&this.options.editable.resize!==false},_handleOptions:function(){return(this.options.editable.resize||{}).handles||this.options.handles},_createHandles:function(){var t,e,i,n;if(this._resizable()){t=this._handleOptions();for(n=-1;n<=1;n++)for(i=-1;i<=1;i++)if(n!==0||i!==0){e=new u(t);e.drawingElement._hover=this._hover.bind(this);this.map.push({x:n,y:i,visual:e});this.visual.append(e)}}},bounds:function(t){if(t){this._innerBounds=t.clone();this._bounds=this.diagram.modelToLayer(t).inflate(this.options.offset,this.options.offset)}else return this._bounds},_hitTest:function(t){var e=this.diagram.modelToLayer(t),i,n,s,o=this.map.length,r;if(this._angle)e=e.clone().rotate(this._bounds.center(),this._angle);if(this._resizable())for(i=0;i<o;i++){r=this.map[i];n=new x(r.x,r.y);s=this._getHandleBounds(n);s.offset(this._bounds.x,this._bounds.y);if(s.contains(e))return n}if(this._bounds.contains(e))return new x(0,0)},_getHandleBounds:function(t){if(this._resizable()){var e=this._handleOptions(),i=e.width,n=e.height,s=new y(0,0,i,n);if(t.x<0)s.x=-i/2;else if(t.x===0)s.x=Math.floor(this._bounds.width/2)-i/2;else if(t.x>0)s.x=this._bounds.width+1-i/2;if(t.y<0)s.y=-n/2;else if(t.y===0)s.y=Math.floor(this._bounds.height/2)-n/2;else if(t.y>0)s.y=this._bounds.height+1-n/2;return s}},_getCursor:function(t){var e=this._hitTest(t);if(e&&e.x>=-1&&e.x<=1&&e.y>=-1&&e.y<=1&&this._resizable()){var i=this._angle;if(i){i=360-i;e.rotate(new x(0,0),i);e=new x(Math.round(e.x),Math.round(e.y))}if(e.x==-1&&e.y==-1)return"nw-resize";if(e.x==1&&e.y==1)return"se-resize";if(e.x==-1&&e.y==1)return"sw-resize";if(e.x==1&&e.y==-1)return"ne-resize";if(e.x===0&&e.y==-1)return"n-resize";if(e.x===0&&e.y==1)return"s-resize";if(e.x==1&&e.y===0)return"e-resize";if(e.x==-1&&e.y===0)return"w-resize"}return this._manipulating?n.move:n.select},_initialize:function(){var t=this,e,i,n=t.diagram.select();t.shapes=[];for(e=0;e<n.length;e++){i=n[e];if(i instanceof c.Shape){t.shapes.push(i);i._rotationOffset=new x}}t._angle=t.shapes.length==1?t.shapes[0].rotate().angle:0;t._startAngle=t._angle;t._rotates();t._positions();t.refreshBounds();t.refresh();t.redraw()},_rotates:function(){var t=this,e,i;t.initialRotates=[];for(e=0;e<t.shapes.length;e++){i=t.shapes[e];t.initialRotates.push(i.rotate().angle)}},_positions:function(){var t=this,e,i;t.initialStates=[];for(e=0;e<t.shapes.length;e++){i=t.shapes[e];t.initialStates.push(i.bounds())}},_hover:function(t,e){if(this._resizable()){var i=this._handleOptions(),n=i.hover,s=i.stroke,o=i.fill;if(t&&w.isDefined(n.stroke))s=a({},s,n.stroke);if(t&&w.isDefined(n.fill))o=n.fill;e.stroke(s.color,s.width,s.opacity);e.fill(o.color,o.opacity)}},start:function(t){this._sp=t;this._cp=t;this._lp=t;this._manipulating=true;this._internalChange=true;this.shapeStates=[];for(var e=0;e<this.shapes.length;e++){var i=this.shapes[e];this.shapeStates.push(i.bounds())}},redraw:function(){var t,e,i=this._resizable();for(t=0;t<this.map.length;t++){e=this.map[t];e.visual.visible(i)}},angle:function(t){if(o(t))this._angle=t;return this._angle},rotate:function(){var t=this._innerBounds.center();var e=this.angle();this._internalChange=true;for(var i=0;i<this.shapes.length;i++){var n=this.shapes[i];e=(e+this.initialRotates[i]-this._startAngle)%360;n.rotate(e,t)}this.refresh()},move:function(t,e){var i,n,s=new x,o=new x,r,d,a,h,l,c,u=0,f,v,p;if(t.y===-2&&t.x===-1){d=this._innerBounds.center();this._angle=this._truncateAngle(w.findAngle(d,e));for(h=0;h<this.shapes.length;h++){a=this.shapes[h];l=(this._angle+this.initialRotates[h]-this._startAngle)%360;a.rotate(l,d);if(a.hasOwnProperty("layout"))a.layout(a);this._rotating=true}this.refresh()}else{if(this.shouldSnap()){var g=this._truncateDistance(e.minus(this._lp));if(g.x===0&&g.y===0){this._cp=e;return}i=g;this._lp=new x(this._lp.x+g.x,this._lp.y+g.y)}else i=e.minus(this._cp);if(this.isDragHandle(t)){o=s=i;n=true}else{if(this._angle)i.rotate(new x(0,0),this._angle);if(t.x==-1)s.x=i.x;else if(t.x==1)o.x=i.x;if(t.y==-1)s.y=i.y;else if(t.y==1)o.y=i.y}if(!n){f=Mt(t,this._innerBounds);v=(this._innerBounds.width+i.x*t.x)/this._innerBounds.width;p=(this._innerBounds.height+i.y*t.y)/this._innerBounds.height}for(h=0;h<this.shapes.length;h++){a=this.shapes[h];r=a.bounds();if(n){if(!Pt(a))continue;c=this._displaceBounds(r,s,o,n)}else{c=r.clone();c.scale(v,p,f,this._innerBounds.center(),a.rotate().angle);var _=c.center();_.rotate(r.center(),-this._angle);c=new y(_.x-c.width/2,_.y-c.height/2,c.width,c.height)}if(c.width>=a.options.minWidth&&c.height>=a.options.minHeight){var m=r;a.bounds(c);if(a.hasOwnProperty("layout"))a.layout(a,m,c);if(m.width!==c.width||m.height!==c.height)a.rotate(a.rotate().angle);u+=1}}if(u){if(u==h){c=this._displaceBounds(this._innerBounds,s,o,n);this.bounds(c)}else this.refreshBounds();this.refresh()}this._positions()}this._cp=e},isDragHandle:function(t){return t.x===0&&t.y===0},cancel:function(){var t=this.shapes;var e=this.shapeStates;for(var i=0;i<t.length;i++)t[i].bounds(e[i]);this.refreshBounds();this.refresh();this._manipulating=r;this._internalChange=r;this._rotating=r},_truncatePositionToGuides:function(t){if(this.diagram.ruler)return this.diagram.ruler.truncatePositionToGuides(t);return t},_truncateSizeToGuides:function(t){if(this.diagram.ruler)return this.diagram.ruler.truncateSizeToGuides(t);return t},_truncateAngle:function(t){var e=this.snapOptions();var i=Math.max(e.angle||z,L);return e?Math.floor(t%360/i)*i:t%360},_truncateDistance:function(t){if(t instanceof c.Point)return new c.Point(this._truncateDistance(t.x),this._truncateDistance(t.y));else{var e=this.snapOptions()||{};var i=Math.max(e.size||k,H);return e?Math.floor(t/i)*i:t}},snapOptions:function(){var t=this.diagram.options.editable;var e=((t||{}).drag||{}).snap||{};return e},shouldSnap:function(){var t=this.diagram.options.editable;var e=(t||{}).drag;var i=(e||{}).snap;return t!==false&&e!==false&&i!==false},_displaceBounds:function(t,e,i,n){var s=t.topLeft().plus(e),o=t.bottomRight().plus(i),r=y.fromPoints(s,o),a;if(!n){a=r.center();a.rotate(t.center(),-this._angle);r=new y(a.x-r.width/2,a.y-r.height/2,r.width,r.height)}return r},stop:function(){var t,e,i;if(this._cp!=this._sp)if(this._rotating){t=new ht(this,this.shapes,this.initialRotates);this._rotating=false}else if(this._diffStates()){if(this.diagram.ruler)for(e=0;e<this.shapes.length;e++){i=this.shapes[e];var n=i.bounds();n=this._truncateSizeToGuides(this._truncatePositionToGuides(n));i.bounds(n);this.refreshBounds();this.refresh()}for(e=0;e<this.shapes.length;e++){i=this.shapes[e];i.updateModel()}t=new st(this.shapes,this.shapeStates,this);this.diagram._syncShapeChanges()}this._manipulating=r;this._internalChange=r;this._rotating=r;return t},_diffStates:function(){var t=this.shapes;var e=this.shapeStates;for(var i=0;i<t.length;i++)if(!t[i].bounds().equals(e[i]))return true;return false},refreshBounds:function(){var t=this.shapes.length==1?this.shapes[0].bounds().clone():this.diagram.boundingBox(this.shapes,true);this.bounds(t)},refresh:function(){var t=this,e,i;if(this.shapes.length>0){i=this.bounds();this.visual.visible(true);this.visual.position(i.topLeft());d.each(this.map,function(){e=t._getHandleBounds(new x(this.x,this.y));this.visual.position(e.topLeft())});this.visual.position(i.topLeft());var n=new x(i.width/2,i.height/2);this.visual.rotate(this._angle,n);this.rect.redraw({width:i.width,height:i.height});if(this.rotationThumb){var s=this.options.editable.rotate.thumb;this._rotationThumbBounds=new y(i.center().x,i.y+s.y,0,0).inflate(s.width);this.rotationThumb.redraw({x:i.width/2-s.width/2})}}else this.visual.visible(false)}}),zt=t.extend({init:function(t){var e=t.options.selectable;this.options=a({},this.options,e);this.visual=new u(this.options);this.diagram=t},options:{stroke:{color:"#778899",width:1,dashType:"dash"},fill:{color:q}},start:function(t){this._sp=this._ep=t;this.refresh();this.diagram._adorn(this,true)},end:function(){this._sp=this._ep=r;this.diagram._adorn(this,false)},bounds:function(t){if(t)this._bounds=t;return this._bounds},move:function(t){this._ep=t;this.refresh()},refresh:function(){if(this._sp){var t=y.fromPoints(this.diagram.modelToLayer(this._sp),this.diagram.modelToLayer(this._ep));this.bounds(y.fromPoints(this._sp,this._ep));this.visual.position(t.topLeft());this.visual.redraw({height:t.height+1,width:t.width+1})}}}),Bt=t.extend({init:function(t){this.options=a({},t.options);this._c=t;this.visual=new v(this.options);this.refresh()},_hover:function(t){var e=this.options,i=e.hover,n=e.stroke,s=e.fill;if(t&&w.isDefined(i.stroke))n=a({},n,i.stroke);if(t&&w.isDefined(i.fill))s=i.fill;this.visual.redraw({stroke:n,fill:s})},refresh:function(){var t=this._c.shape.diagram.modelToView(this._c.position()),e=t.minus(this._c.shape.bounds("transformed").topLeft()),i=new y(t.x,t.y,0,0);i.inflate(this.options.width/2,this.options.height/2);this._visualBounds=i;this.visual.redraw({center:new x(e.x,e.y)})},_hitTest:function(t){var e=this._c.shape.diagram.modelToView(t);return this._visualBounds.contains(e)}});function Pt(t){var e=t.options.editable;return e&&e.drag!==false}function At(t,e){var i,n,s;for(var o=0;o<t.connectors.length;o++){i=t.connectors[o];n=i.position();s=new y(n.x,n.y);s.inflate(m,m);if(s.contains(e))return i}}function It(t){return t.ctrlKey===false&&t.altKey===false&&t.shiftKey===false}a(c,{CompositeUnit:$,TransformUnit:st,PanUndoUnit:at,AddShapeUnit:rt,AddConnectionUnit:ot,DeleteShapeUnit:nt,DeleteConnectionUnit:it,ConnectionEditAdorner:Tt,ConnectionTool:gt,ConnectorVisual:Bt,UndoRedoService:lt,ResizingAdorner:kt,Selector:zt,ToolService:mt,ConnectorsAdorner:Ct,LayoutUndoUnit:Z,ConnectionEditUnit:tt,ToFrontUnit:ct,ToBackUnit:dt,ConnectionRouterBase:yt,PolylineRouter:wt,CascadingRouter:St,SelectionTool:pt,ScrollerTool:ft,PointerTool:vt,ConnectionEditTool:_t,RotateUnit:ht})})?n.apply(e,i):n)||(t.exports=e)}});