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