@progress/kendo-ui
Version:
This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.
3 lines (2 loc) • 31.4 kB
JavaScript
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("kendo.data.js"),require("kendo.draganddrop.js"),require("kendo.userevents.js"),require("kendo.mobile.scroller.js"),require("kendo.diagram-common.cmn.chunk.js"),require("kendo.drawing.js"),require("kendo.toolbar.js"),require("kendo.editable.js"),require("kendo.window.js"),require("kendo.dropdownlist.js"),require("kendo.dataviz.core.js"),require("kendo.dataviz.themes.js"),require("kendo.html.button.js")):"function"==typeof define&&define.amd?define(["exports","kendo.data.min","kendo.draganddrop.min","kendo.userevents.min","kendo.mobile.scroller.min","kendo.diagram-common.cmn.chunk.min","kendo.drawing.min","kendo.toolbar.min","kendo.editable.min","kendo.window.min","kendo.dropdownlist.min","kendo.dataviz.core.min","kendo.dataviz.themes.min","kendo.html.button.min"],e):e(((t="undefined"!=typeof globalThis?globalThis:t||self).kendo=t.kendo||{},t.kendo._globals=t.kendo._globals||{},t.kendo._globals.DatavizDiagram={}),t.kendo._globals.Data,t.kendo._globals.Draganddrop,t.kendo._globals.Userevents,t.kendo._globals.MobileScroller,t.kendo._globals.DiagramCommonCmnChunk)}(this,(function(t,e,i,o,n,s){!function(){var t=window.kendo,e=t.dataviz.diagram={};t.deepExtend(e,{init:function(i){t.init(i,e.ui)},Utils:s.U,Range:s.R,Ticker:s.T})}(),function(){var t=window.kendo,e=t.dataviz.diagram;t.deepExtend(e,{init:function(i){t.init(i,e.ui)},Point:s.f,Intersect:s.I,Geometry:s.e,Rect:s.d,Size:s.c,RectAlign:s.b,Matrix:s.a,MatrixVector:s.M,normalVariable:s.n,randomId:s.r,Dictionary:s.D,HashTable:s.H,Queue:s.Q,Set:s.S,Node:s.N,Link:s.L,Graph:s.G,PathDefiner:s.P})}();const{isFunction:a}=s.U;!function(){var t=window.kendo,e=t.drawing,i=t.dataviz.diagram;class o extends s.C{constructor(t,i){super(t,i=i||{}),this.surface=e.Surface.create(t,i),this.translate=a(this.surface.translate)?this._translate:void 0,this._viewBox=new s.d(0,0,i.width,i.height),this.size(this._viewBox)}}t.deepExtend(i,{init:function(e){t.init(e,i.ui)},diffNumericOptions:s.y,Markers:s.x,Element:s.E,Scale:s.w,Translation:s.v,Rotation:s.u,Circle:s.t,Group:s.s,Rectangle:s.q,Canvas:o,Path:s.p,Layout:s.o,Line:s.m,MarkerBase:s.l,ArrowMarker:s.A,CircleMarker:s.k,Polyline:s.j,CompositeTransform:s.i,TextBlock:s.h,Image:s.g,VisualBase:s.V})}(),function(){var t=window.kendo,e=t.dataviz.diagram;e.Cursors=s.z,t.deepExtend(e,{CompositeUnit:s.af,TransformUnit:s.ae,PanUndoUnit:s.ad,AddShapeUnit:s.ac,AddConnectionUnit:s.ab,DeleteShapeUnit:s.aa,DeleteConnectionUnit:s.a9,ConnectionEditAdorner:s.a8,ConnectionTool:s.a7,ConnectorVisual:s.a6,UndoRedoService:s.a5,ResizingAdorner:s.a4,Selector:s.a3,ToolService:s.a2,ConnectorsAdorner:s.a1,LayoutUndoUnit:s.a0,ConnectionEditUnit:s.$,ToFrontUnit:s._,ToBackUnit:s.Z,ConnectionRouterBase:s.Y,PolylineRouter:s.X,CascadingRouter:s.W,SelectionTool:s.O,ScrollerTool:s.K,PointerTool:s.J,ConnectionEditTool:s.F,RotateUnit:s.B})}(),function(){var t=window.kendo,e=t.dataviz.diagram;t.deepExtend(e,{init:function(i){t.init(i,e.ui)},SpringLayout:s.al,TreeLayout:s.ak,GraphAdapter:s.aj,LayeredLayout:s.ai,LayoutBase:s.ah,LayoutState:s.ag})}(),function(){const t=window.kendo.dataviz,e=t=>t.ownerDocument.defaultView.getComputedStyle(t),i={},o=(t,o)=>{let n=e(t).getPropertyValue(o);return/^color-mix/i.test(n)&&(n=((t,o)=>{if(i[t])return i[t];const n=o.style.color;o.style.color=t;const s=e(o).color;return o.style.color=n,i[t]=s,s})(n,t)),n};t.diagramTheme=t=>{const e=o(t,"--kendo-chart-primary-bg"),i=o(t,"--kendo-chart-primary-contrast"),n=o(t,"--kendo-chart-text");return{shapeDefaults:{fill:{color:e},content:{color:i},connectorDefaults:{fill:{color:n},stroke:{color:i},hover:{fill:{color:i},stroke:{color:n}}}},editable:{resize:{handles:{stroke:{color:n},fill:{color:o(t,"--kendo-color-surface")},hover:{stroke:{color:n},fill:{color:n}}}}},selectable:{stroke:{color:n}},connectionDefaults:{stroke:{color:n},content:{color:n},selection:{handles:{fill:{color:i},stroke:{color:n},width:8,height:8},stroke:{color:n}}}}}}(),function(t){var e=kendo.dataviz,i=e.diagram,o=kendo.ui.Widget,n=kendo.deepExtend,a=kendo._outerWidth,r=kendo._outerHeight,d=t.extend,c=kendo.data.HierarchicalDataSource,h=i.Canvas,l=(i.Rect,i.Point),u=kendo.drawing.util.defined,p=t.isPlainObject,f=kendo.data.DataSource,g=".kendoDiagram",_="click",m="change",w="error",b=({className:t,icon:e,themeColor:i,text:o})=>kendo.html.renderButton(`<button class="${t}" href="#">${o}</button>`,{icon:e,themeColor:i});function v(t){t.preventDefault()}function S(t,e){u(e[t])&&e.set(t,null)}i.DefaultConnectors=s.am;var k={cancel:{text:"Cancel",icon:"cancel-outline",className:"k-diagram-cancel"},update:{text:"Save",imageClass:"save",className:"k-diagram-update",icon:"save",themeColor:"primary"}};i.shapeDefaults=s.an;const C={kendoTemplate:kendo.template};var y=o.extend({init:function(e,i={}){var n=this;kendo.destroy(e),o.fn.init.call(n,e,i);const a=n._initTheme(),r=u(i.connectionsDataSource);this._isEditable=r;const d={...n.options,_syncChanges:n._syncChanges.bind(n),_syncShapeChanges:n._syncShapeChanges.bind(n),_syncConnectionChanges:n._syncConnectionChanges.bind(n),_removeConnectionDataItem:n._removeConnectionDataItem.bind(n),_removeShapeDataItem:n._removeShapeDataItem.bind(n),_addConnection:n._addConnection.bind(n),_addShape:n._addShape.bind(n),updateConnectionModel:n.updateConnectionModel.bind(n),updateShapeModel:n.updateShapeModel.bind(n),cloneDataItem:M,connect:r?n.connect.bind(n):undefined,createToolBar:n._createToolBar.bind(n),destroyToolBar:n._destroyToolBar.bind(n),Canvas:h,shapeDefaults:{...C,...i.shapeDefaults},connectionDefaults:{...C,...i.connectionDefaults}},c=new s.au(e,d,a);n.events.forEach((function(t){c.bind(t,(function(e){e.sender=n,n.trigger(t,e)}))})),n.widget=c,n.wrapper=t(c.wrapper),n.scrollable=t(c.scrollable),n.shapes=c.shapes,n.connections=c.connections,n._connectionsDataMap=c._connectionsDataMap,n._dataMap=c._dataMap,n._inactiveShapeItems=c._inactiveShapeItems,n._copyOffset=0,n._selectedItems=c._selectedItems,n.options=c.options,n._clipboard=c._clipboard,n.id=c.id,n.undoRedoService=c.undoRedoService,n.toolService=c.toolService,n._resizingAdorner=c._resizingAdorner,n._connectorsAdorner=c._connectorsAdorner,n.selector=c.selector,n._fetchFreshData(),n._createGlobalToolBar(),n.widget._createOptionElements(),n.widget.zoom(n.options.zoom),n.widget.canvas.draw()},options:n({},s.at),events:[...s.aq],shapes:[],connections:[],dataSource:null,connectionsDataSource:null,connect:function(t,e,i){let o;if(this.connectionsDataSource&&this._isEditable){const n=this.connectionsDataSource.add({});o=this.widget._connectionsDataMap[n.uid],o.source(t),o.target(e),o.redraw(i),o.updateModel()}else o=this.widget.connect(t,e,i);return o},connected:function(t,e){return this.widget.connected(t,e)},addConnection:function(t,e){return this.widget.addConnection(t,e)},addShape:function(t,e){return this.widget.addShape(t,e)},remove:function(t,e){return this.widget.remove(t,e)},undo:function(){return this.widget.undo()},redo:function(){return this.widget.redo()},select:function(t,e){return this.widget.select(t,e)},deselect:function(t){this.widget.deselect(t)},toFront:function(t,e){return this.widget.toFront(t,e)},toBack:function(t,e){return this.widget.toBack(t,e)},bringIntoView:function(t,e){return this.widget.bringIntoView(t,e)},boundingBox:function(t,e){return this.widget.boundingBox(t,e)},layout:function(t){return this.widget.layout(t)},getShapeById:function(t){return this.widget.getShapeById(t)},getConnectionByModelId(t){let e;return this.connectionsDataSource&&(e=s.as(this.connections,(function(e){return(e.dataItem||{}).id===t}))),e},getConnectionByModelUid(t){let e;return this.connectionsDataSource&&(e=this.widget._connectionsDataMap[t]),e},copy:function(){this.widget.copy()},cut:function(){this.widget.cut()},alignShapes:function(t){return this.widget.alignShapes(t)},createShape:function(){if(this.editor&&this.editor.end()||!this.editor){var t=this.dataSource,e=(t.view()||[]).length,i=E(t,{}),o=this.widget._createShape(i,{});if(!this.trigger("add",{shape:o}))t.insert(e,i),this.widget._inactiveShapeItems.getByUid(i.uid).element=o,this.edit(o)}},createConnection:function(){if(this.editor&&this.editor.end()||!this.editor){var t=this.connectionsDataSource,e=(t.view()||[]).length,i=E(t,{}),o=this.widget._createConnection(i);this.trigger("add",{connection:o})||(this.widget._connectionsDataMap[i.uid]=o,t.insert(e,i),this.addConnection(o,!1),this.edit(o))}},exportVisual:function(){return this.widget.exportVisual()},exportDOMVisual:function(){return this.widget.exportDOMVisual()},_syncChanges(){this._syncShapeChanges(),this._syncConnectionChanges()},_syncShapeChanges(){this.dataSource&&this._isEditable&&this.dataSource.sync()},_syncConnectionChanges(){this.connectionsDataSource&&this._isEditable&&Promise.all(this.widget._deferredConnectionUpdates).then((()=>{this.connectionsDataSource.sync(),this.widget._deferredConnectionUpdates.length=0}))},editModel:function(t,e){var i,o;this.cancelEdit();var s=this.widget.options.editable;if("shape"==e)i=s.shapeEditors,o=s.shapeTemplate;else{if("connection"!=e)return;var a=x.bind(this);i=n({},{from:a,to:a},s.connectionEditors),o=s.connectionTemplate}this.editor=new B(this.element,{update:this._update.bind(this),cancel:this._cancel.bind(this),model:t,type:e,target:this,editors:i,template:o}),this.trigger("edit",this._editArgs())},edit:function(t){if(t.dataItem){var e=t instanceof s.ap?"shape":"connection";this.editModel(t.dataItem,e)}},cancelEdit:function(){this.editor&&(this._getEditDataSource().cancelChanges(this.editor.model),this._destroyEditor())},clear(){this.widget.clear()},saveEdit:function(){this.editor&&this.editor.end()&&!this.trigger("save",this._editArgs())&&this._getEditDataSource().sync()},updateConnectionModel:function(t,e){if(this.connectionsDataSource){const i=this.connectionsDataSource.getByUid(t.dataItem.uid);i&&(this._suspendModelRefresh(),u(t.options.fromX)&&null!==t.options.fromX?(S("from",i),S("fromConnector",i),i.set("fromX",t.options.fromX),i.set("fromY",t.options.fromY)):(i.set("from",t.options.from),u(i.fromConnector)&&i.set("fromConnector",t.sourceConnector?t.sourceConnector.options.name:null),S("fromX",i),S("fromY",i)),u(t.options.toX)&&null!==t.options.toX?(S("to",i),S("toConnector",i),i.set("toX",t.options.toX),i.set("toY",t.options.toY)):(i.set("to",t.options.to),u(i.toConnector)&&i.set("toConnector",t.targetConnector?t.targetConnector.options.name:null),S("toX",i),S("toY",i)),u(t.options.type)&&u(i.type)&&i.set("type",t.options.type),t.dataItem=i,this._resumeModelRefresh(),e&&this._syncConnectionChanges())}},updateShapeModel:function(t,e){const i=t._bounds,o=t.dataItem;o&&(this._suspendModelRefresh(),u(o.x)&&i.x!==o.x&&o.set("x",i.x),u(o.y)&&i.y!==o.y&&o.set("y",i.y),u(o.width)&&i.width!==o.width&&o.set("width",i.width),u(o.height)&&i.height!==o.height&&o.set("height",i.height),t.dataItem=o,this._resumeModelRefresh(),e&&this._syncShapeChanges())},destroy:function(){this.diagram=null,this.element=null,this.options=null,this._toolBar&&this._toolBar.destroy(),this._popup&&this._popup.destroy(),this._destroyGlobalToolBar(),this._destroyToolBar(),this.widget&&(this.widget.destroy(),this.widget=null)},documentToModel:function(t){return this.widget.documentToModel(t)},documentToView:function(t){return this.widget.documentToView(t)},focus:function(){return this.widget.focus()},getShapeByModelId:function(t){return this.widget.getShapeByModelId(t)},getShapeByModelUid:function(t){return this.widget.getShapeByModelUid(t)},layerToModel:function(t){return this.widget.layerToModel(t)},load:function(t){this.widget.load(t)},modelToDocument:function(t){return this.widget.modelToDocument(t)},modelToLayer:function(t){return this.widget.modelToLayer(t)},modelToView:function(t){return this.widget.modelToView(t)},pan:function(t,e){return this.widget.pan(t,e)},paste:function(){this.widget.paste()},save:function(){return this.widget.save()},selectAll:function(){this.widget.selectAll()},selectArea:function(t){this.widget.selectArea(t)},setDataSource(t){this.options.dataSource=t,this._dataSource(),!1!==this.options.autoBind&&this.dataSource.fetch()},setConnectionsDataSource(t){this.options.connectionsDataSource=t,this._connectionDataSource(),!1!==this.options.autoBind&&this.connectionsDataSource.fetch()},viewToDocument:function(t){return this.widget.viewToDocument(t)},viewToModel:function(t){return this.widget.viewToModel(t)},viewport:function(){return this.widget.viewport()},zoom:function(t,e){return this.widget.zoom(t,e)},_initTheme:function(){var t,i=this,o=((i.options||{}).theme||"").toLowerCase(),n=e.ui.themes||{};return-1!=e.SASS_THEMES.indexOf(o)?(i.element.addClass("k-diagram"),t=e.diagramTheme(i.element[0]),i.element.removeClass("k-diagram")):t=(n[o]||{}).diagram,t},items:function(){return t()},_createGlobalToolBar:function(){this.widget;var t=this.widget.options.editable;if(t){var e=t.tools;!this._isEditable||!1===e||e&&0!==e.length||(e=["createShape","undo","redo","rotateClockwise","rotateAnticlockwise"]),e&&e.length&&(this.toolBar=new D(this,{tools:e||{},click:this._toolBarClick.bind(this),modal:!1}),this.widget.toolBar={element:this.toolBar.element[0]},this.toolBar.element.css({textAlign:"left"}),this.element.prepend(this.toolBar.element),this.widget._resize())}},_toolBarClick:function(t){this.trigger("toolBarClick",t),this._destroyToolBar()},_createToolBar:function(t){const e=this,i=this.widget;if(!this.singleToolBar&&1===e.select().length){var o=e.select()[0];if(o&&!1!==o.options.editable){var n=o.options.editable||{},d=n.tools;if(this._isEditable&&d&&0===d.length&&(o instanceof s.ap?d=["edit","rotateClockwise","rotateAnticlockwise"]:o instanceof s.ar&&(d=["edit"]),n&&!1!==n.remove&&d.push("delete")),d&&d.length){var c;this.singleToolBar=new D(this,{tools:d,click:this._toolBarClick.bind(this),modal:!0,popupZIndex:parseInt(e.element.closest(".k-window").css("zIndex"),10)+10});var h=a(this.singleToolBar._popup.element),u=r(this.singleToolBar._popup.element);if(o instanceof s.ap){var p=i.modelToView(o.bounds("rotated"));c=new l(p.x,p.y).minus(new l((h-p.width)/2,u+20))}else if(o instanceof s.ar){var f=i.modelToView(o.bounds());c=new l(f.x,f.y).minus(new l((h-f.width-20)/2,u+20))}c?(i.canvas.translate||(c=c.minus(new l(i.scroller.scrollLeft,i.scroller.scrollTop))),c=this.viewToDocument(c),c=new l(Math.max(c.x,0),Math.max(c.y,0)),this.singleToolBar.showAt(c),t&&this.singleToolBar._popup.one("close",v)):this._destroyToolBar()}}}},_destroyToolBar:function(){this.singleToolBar&&(this.singleToolBar.hide(),this.singleToolBar.destroy(),this.singleToolBar=null)},_destroyGlobalToolBar:function(){this.toolBar&&(this.toolBar.hide(),this.toolBar.destroy(),this.toolBar=null)},_update:function(){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.widget._connectionsDataMap[t.uid]||this.widget._dataMap[t.id];e&&e._setOptionsFromModel(t),this._destroyEditor()}},_getEditDataSource:function(){return"shape"===this.editor.options.type?this.dataSource:this.connectionsDataSource},_editArgs:function(){var t={container:this.editor.wrapper};return t[this.editor.options.type]=this.editor.model,t},_fetchFreshData(){this._dataSource(),this._isEditable&&this._connectionDataSource(),!1!==this.options.autoBind&&(this._isEditable?(this._loadingShapes=!0,this._loadingConnections=!0,this.dataSource.fetch(),this.connectionsDataSource.fetch()):this.dataSource.fetch())},_dataSource(){if(u(this.options.connectionsDataSource)){this.widget._isEditable=!0;const t=this.options.dataSource||{},e=Array.isArray(t)?{data:t}:t;this.dataSource&&this._shapesRefreshHandler?this.dataSource.unbind("change",this._shapesRefreshHandler).unbind("requestStart",this._shapesRequestStartHandler).unbind("error",this._shapesErrorHandler):(this._shapesRefreshHandler=this._refreshShapes.bind(this),this._shapesRequestStartHandler=this._shapesRequestStart.bind(this),this._shapesErrorHandler=this._error.bind(this)),this.dataSource=f.create(e).bind("change",this._shapesRefreshHandler).bind("requestStart",this._shapesRequestStartHandler).bind("error",this._shapesErrorHandler)}else this._treeDataSource(),this.widget._isEditable=!1},_connectionDataSource(){const t=this.options.connectionsDataSource;if(t){const e=Array.isArray(t)?{data:t}:t;this.connectionsDataSource&&this._connectionsRefreshHandler?this.connectionsDataSource.unbind("change",this._connectionsRefreshHandler).unbind("requestStart",this._connectionsRequestStartHandler).unbind("error",this._connectionsErrorHandler):(this._connectionsRefreshHandler=this._refreshConnections.bind(this),this._connectionsRequestStartHandler=this._connectionsRequestStart.bind(this),this._connectionsErrorHandler=this._connectionsError.bind(this)),this.connectionsDataSource=f.create(e).bind("change",this._connectionsRefreshHandler).bind("requestStart",this._connectionsRequestStartHandler).bind("error",this._connectionsErrorHandler)}},_shapesRequestStart(t){"read"===t.type&&(this._loadingShapes=!0)},_connectionsRequestStart(t){"read"===t.type&&(this._loadingConnections=!0)},_error(){this._loadingShapes=!1},_connectionsError(){this._loadingConnections=!1},_refreshShapes(t){"remove"===t.action?this._shouldRefresh()&&this._removeShapes(t.items):"itemchange"===t.action?this._shouldRefresh()&&this._updateShapes(t.items,t.field):"add"===t.action?this._inactiveShapeItems.add(t.items):"sync"===t.action?this._syncShapes():this.refresh()},_shouldRefresh(){return this.widget._shouldRefresh()},_suspendModelRefresh(){this.widget._suspendModelRefresh()},_resumeModelRefresh(){this.widget._resumeModelRefresh()},refresh(){this._loadingShapes=!1,this._loadingConnections||this._rebindShapesAndConnections()},_rebindShapesAndConnections(){this.clear(),this._addShapes(this.dataSource.view()),this.connectionsDataSource&&this._addConnections(this.connectionsDataSource.view(),!1),this.options.layout?this.layout(this.options.layout):this._redrawConnections(),this.trigger("dataBound")},refreshConnections(){this._loadingConnections=!1,this._loadingShapes||this._rebindShapesAndConnections()},_redrawConnections(){this.widget._redrawConnections()},_removeShapes(t){const e=this.widget._dataMap;let i,o;for(o=0;o<t.length;o++)i=t[o],e[i.id]&&(this.remove(e[i.id],!1),e[i.id]=null)},_syncShapes(){const t=this._inactiveShapeItems;t.forEach((e=>{const i=e.dataItem,o=e.element;i.isNew()||(o?(o._setOptionsFromModel(),this.addShape(o,e.undoable),this.widget._dataMap[i.id]=o):this._addDataItem(i),e.activate(),t.remove(i))}))},_updateShapes(t,e){for(let i=0;i<t.length;i++){const o=t[i],n=this.widget._dataMap[o.id];n&&n.updateOptionsFromModel(o,e)}},_addShapes(t){for(let e=0;e<t.length;e++)this._addDataItem(t[e],!1)},_addDataItem(t,e){if(!s.ao(t))return;let i=this.widget._dataMap[t.id];if(i)return i;const o=n({},this.widget.options.shapeDefaults);return o.dataItem=t,i=new s.ap(o,this.widget),this.addShape(i,!1!==e),this.widget._dataMap[t.id]=i,i},_refreshConnections(t){"remove"===t.action?this._shouldRefresh()&&this._removeConnections(t.items):"add"===t.action?this._addConnections(t.items):"sync"===t.action||("itemchange"===t.action?this._shouldRefresh()&&this._updateConnections(t.items):this.refreshConnections())},_removeConnections(t){for(let e=0;e<t.length;e++)this.remove(this.widget._connectionsDataMap[t[e].uid],!1),this.widget._connectionsDataMap[t[e].uid]=null},_updateConnections(t){for(let e=0;e<t.length;e++){const i=t[e];this.widget._connectionsDataMap[i.uid].updateOptionsFromModel(i)}},_addConnections(t,e){this.widget._addConnections(t,e)},_addShape(t,e){const i=this.dataSource;let o;if(i&&this._isEditable){if(o=E(i,M(t.dataItem)),t.dataItem=o,t.updateModel(),!this.trigger("add",{shape:t})){this.dataSource.add(o);const i=this.widget._inactiveShapeItems.getByUid(o.uid);return i.element=t,i.undoable=e,t}}else if(!this.trigger("add",{shape:t}))return this.addShape(t,e)},_addConnection(t,e){const i=this.connectionsDataSource;let o;if(i&&this._isEditable){if(o=E(i,M(t.dataItem)),t.dataItem=o,t.updateModel(),!this.trigger("add",{connection:t}))return this.widget._connectionsDataMap[o.uid]=t,i.add(o),this.addConnection(t,e),t._updateConnectors(),t}else if(!this.trigger("add",{connection:t}))return this.addConnection(t,e),t._updateConnectors(),t},_treeDataSource(){let t=this.widget.options.dataSource;if(t=Array.isArray(t)?{data:t}:t,t instanceof f&&!(t instanceof c))throw new Error("Incorrect DataSource type. If a single dataSource instance is set to the diagram then it should be a HierarchicalDataSource. You should set only the options instead of an instance or a HierarchicalDataSource instance or supply connectionsDataSource as well.");t.fields||(t.fields=[{field:"text"},{field:"url"},{field:"spriteCssClass"},{field:"imageUrl"}]),this.dataSource&&this._refreshHandler&&this._unbindDataSource(),this._refreshHandler=this._refreshSource.bind(this),this._errorHandler=this._error.bind(this),this.dataSource=c.create(t).bind(m,this._refreshHandler).bind(w,this._errorHandler)},_unbindDataSource(){this.dataSource.unbind(m,this._refreshHandler).unbind(w,this._errorHandler)},_refreshSource(t){const e=t.node,i=t.action,o=t.items,n=this.options;let s,a;if(t.field)for(s=0;s<o.length;s++)this.widget._dataMap[o[s].uid]&&this.widget._dataMap[o[s].uid].redrawVisual();else{if("remove"===i)this._removeDataItems(t.items,!0);else for(i&&"itemloaded"!==i||this._bindingRoots||(this._bindingRoots=!0,a=!0),i||e||this.clear(),this.widget._addDataItems(o,e),s=0;s<o.length;s++)o[s].load();n.layout&&(a||"remove"===i||"add"===i)&&this.layout(n.layout),a&&(this.trigger("dataBound"),this._bindingRoots=!1)}},_removeDataItems(t,e){let i,o,n,s;for(t=Array.isArray(t)?t:[t];t.length;)if(i=t.shift(),n=this.widget._dataMap[i.uid],n&&(this.widget._removeShapeConnections(n),this.widget._removeItem(n,!1),delete this.widget._dataMap[i.uid],e&&i.hasChildren&&i.loaded()))for(o=i.children.data(),s=0;s<o.length;s++)t.push(o[s])},_removeConnectionDataItem(t){this.connectionsDataSource.remove(t)},_removeShapeDataItem(t){this.dataSource.remove(t)},_destroyEditor:function(){this.editor&&(this.editor.close(),this.editor=null)}});e.ExportMixin.extend(y.fn,!0),kendo.PDFMixin&&kendo.PDFMixin.extend(y.fn);var D=kendo.Observable.extend({init:function(t,e){kendo.Observable.fn.init.call(this),this.diagram=t,this.options=n({},this.options,e),this._tools=[],this.createToolBar(),this.createTools(),this.appendTools(),this.options.modal&&this.createPopup(),this.bind(this.events,e)},events:["click"],createPopup:function(){this.container=t("<div/>").append(this.element),this._popup=this.container.kendoPopup({}).getKendoPopup()},appendTools:function(){for(var t=0;t<this._tools.length;t++){var e=this._tools[t];(e.buttons&&e.buttons.length||!u(e.buttons))&&this._toolBar.add(e)}},createToolBar:function(){this.element=t("<div/>"),this._toolBar=this.element.kendoToolBar({click:this.click.bind(this),resizable:!1}).getKendoToolBar(),this.element.css("border","none")},createTools:function(){for(var t=0;t<this.options.tools.length;t++)this.createTool(this.options.tools[t])},createTool:function(t){p(t)||(t={name:t});var e=t.name+"Tool";this[e]?this[e](t):this._tools.push(n({},t,{attributes:this._setAttributes({action:t.name})}))},showAt:function(t){var e=parseInt(this.options.popupZIndex,10);this._popup&&(this._popup.open(t.x,t.y),e&&this._popup.wrapper.css("zIndex",e))},hide:function(){this._popup&&this._popup.close()},newGroup:function(){return{type:"buttonGroup",buttons:[]}},editTool:function(){this._tools.push({icon:"pencil",showText:"overflow",type:"button",text:"Edit",attributes:this._setAttributes({action:"edit"})})},deleteTool:function(){this._tools.push({icon:"x",showText:"overflow",type:"button",text:"Delete",attributes:this._setAttributes({action:"delete"})})},rotateAnticlockwiseTool:function(t){this._appendGroup("rotate"),this._rotateGroup.buttons.push({icon:"rotate-left",showText:"overflow",text:"RotateAnticlockwise",group:"rotate",attributes:this._setAttributes({action:"rotateAnticlockwise",step:t.step})})},rotateClockwiseTool:function(t){this._appendGroup("rotate"),this._rotateGroup.buttons.push({icon:"rotate-right",attributes:this._setAttributes({action:"rotateClockwise",step:t.step}),showText:"overflow",text:"RotateClockwise",group:"rotate"})},createShapeTool:function(){this._appendGroup("create"),this._createGroup.buttons.push({icon:"shapes",showText:"overflow",text:"CreateShape",group:"create",attributes:this._setAttributes({action:"createShape"})})},createConnectionTool:function(){this._appendGroup("create"),this._createGroup.buttons.push({icon:"connector",showText:"overflow",text:"CreateConnection",group:"create",attributes:this._setAttributes({action:"createConnection"})})},undoTool:function(){this._appendGroup("history"),this._historyGroup.buttons.push({icon:"undo",showText:"overflow",text:"Undo",group:"history",attributes:this._setAttributes({action:"undo"})})},redoTool:function(){this._appendGroup("history"),this._historyGroup.buttons.push({icon:"redo",showText:"overflow",text:"Redo",group:"history",attributes:this._setAttributes({action:"redo"})})},_appendGroup:function(t){var e="_"+t+"Group";this[e]||(this[e]=this.newGroup(),this._tools.push(this[e]))},_setAttributes:function(t){var e={};return t.action&&(e[kendo.attr("action")]=t.action),t.step&&(e[kendo.attr("step")]=t.step),e},_getAttributes:function(t){var e={},i=t.attr(kendo.attr("action"));i&&(e.action=i);var o=t.attr(kendo.attr("step"));return o&&(e.step=o),e},click:function(e){var i=this._getAttributes(t(e.target)),o=i.action;o&&this[o]&&this[o](i),this.trigger("click",this.eventData(o,e.target))},eventData:function(t,e){for(var i,o=this.selectedElements(),n=o.length,a=[],r=[],d=0;d<n;d++)(i=o[d])instanceof s.ap?a.push(i):r.push(i);return{shapes:a,connections:r,action:t,target:e}},delete:function(){var t=this.diagram.widget._triggerRemove(this.selectedElements());t.length&&(this.diagram.remove(t,!0),this.diagram._syncChanges())},edit:function(){var t=this.selectedElements();1===t.length&&this.diagram.edit(t[0])},rotateClockwise:function(t){var e=parseFloat(t.step||90);this._rotate(e)},rotateAnticlockwise:function(t){var e=parseFloat(t.step||90);this._rotate(-e)},_rotate:function(t){var e=this.diagram.widget._resizingAdorner;e.angle(e.angle()+t),e.rotate()},selectedElements:function(){return this.diagram.select()},createShape:function(){this.diagram.createShape()},createConnection:function(){this.diagram.createConnection()},undo:function(){this.diagram.undo()},redo:function(){this.diagram.redo()},destroy:function(){this.diagram=null,this.element=null,this.options=null,this._toolBar&&this._toolBar.destroy(),this._popup&&this._popup.destroy()}}),T=kendo.Observable.extend({init:function(t,e){kendo.Observable.fn.init.call(this),this.options=d(!0,{},this.options,e),this.element=t,this.model=this.options.model,this.fields=this._getFields(),this._initContainer(),this.createEditable()},options:{editors:{}},_initContainer:function(){this.wrapper=this.element},createEditable:function(){var t=this.options;this.editable=new kendo.ui.Editable(this.wrapper,{fields:this.fields,target:t.target,clearContainer:!1,model:this.model})},_isEditable:function(t){return this.model.editable&&this.model.editable(t)},_getFields:function(){var t=[],e=this.model.fields;for(var i in e){var o={};if(this._isEditable(i)){var n=this.options.editors[i];n&&(o.editor=n),o.field=i,t.push(o)}}return t},end:function(){return this.editable.end()},destroy:function(){this.editable.destroy(),this.editable.element.find("["+kendo.attr("container-for")+"]").empty(),this.model=this.wrapper=this.element=this.columns=this.editable=null}}),B=T.extend({init:function(t,e){T.fn.init.call(this,t,e),this.bind(this.events,this.options),this.open()},events:["update","cancel"],options:{window:{modal:!0,resizable:!1,draggable:!0,title:"Edit",visible:!1}},_initContainer:function(){var e=this;this.wrapper=t('<div class="k-popup-edit-form"/>').attr(kendo.attr("uid"),this.model.uid);var i="";this.options.template?(i+=this._renderTemplate(),this.fields=[]):i+=this._renderFields(),i+=this._renderButtons(),this.wrapper.append(t('<div class="k-edit-form-container"/>').append(i)),this.window=new kendo.ui.Window(this.wrapper.appendTo(this.element),this.options.window),this.window.bind("close",(function(t){t.userTriggered&&(t.sender.element.trigger("focus"),e._cancelClick(t))})),this._attachButtonEvents()},_renderTemplate:function(){var t=this.options.template;return"string"==typeof t&&(t=kendo.unescape(t)),t=kendo.template(t)(this.model)},_renderFields:function(){for(var t="",e=0;e<this.fields.length;e++){var i=this.fields[e];t+='<div class="k-edit-label"><label for="'+i.field+'">'+(i.field||"")+"</label></div>",this._isEditable(i.field)&&(t+="<div "+kendo.attr("container-for")+'="'+i.field+'" class="k-edit-field"></div>')}return t},_renderButtons:function(){var t='<div class="k-edit-buttons">';return t+=this._createButton("update"),t+=this._createButton("cancel"),t+="</div>"},_createButton:function(t){return kendo.template(b)(k[t])},_attachButtonEvents:function(){this._cancelClickHandler=this._cancelClick.bind(this),this.window.element.on(_+g,"button.k-diagram-cancel",this._cancelClickHandler),this._updateClickHandler=this._updateClick.bind(this),this.window.element.on(_+g,"button.k-diagram-update",this._updateClickHandler)},_updateClick:function(t){t.preventDefault(),this.trigger("update")},_cancelClick:function(t){t.preventDefault(),this.trigger("cancel")},open:function(){this.window.center().open()},close:function(){this.window.bind("deactivate",this.destroy.bind(this)).close()},destroy:function(){this.window.close().destroy(),this.window.element.off(_+g,"a.k-diagram-cancel",this._cancelClickHandler),this.window.element.off(_+g,"a.k-diagram-update",this._updateClickHandler),this._cancelClickHandler=null,this._editUpdateClickHandler=null,this.window=null,T.fn.destroy.call(this)}});function x(e,i){var o=this.dataSource.reader.model;if(o){var n=o.fn.fields.text?"text":o.idField;t("<input name='"+i.field+"' />").appendTo(e).kendoDropDownList({dataValueField:o.idField,dataTextField:n,dataSource:this.dataSource.data().toJSON(),optionLabel:" ",valuePrimitive:!0})}}function M(t){var e=t;return t instanceof kendo.data.Model&&((e=t.toJSON())[t.idField]=t._defaultId),e}function E(t,e){return t.reader.model?new t.reader.model(e):new kendo.data.ObservableObject(e)}e.ui.plugin(y),n(i,{Shape:s.ap,Connection:s.ar,Connector:s.ay,DiagramToolBar:D,QuadNode:s.ax,QuadRoot:s.aw,ShapesQuadTree:s.av,PopupEditor:B})}(window.kendo.jQuery);var r=kendo;t.__meta__={id:"dataviz.diagram",name:"Diagram",category:"dataviz",description:"The Kendo DataViz Diagram ",depends:["data","userevents","mobile.scroller","draganddrop","drawing","dataviz.core","dataviz.themes","toolbar","diagram-common.cmn.chunk"],features:[{id:"dataviz.diagram-pdf-export",name:"PDF export",description:"Export Diagram as PDF",depends:["pdf"]},{id:"dataviz.diagram-editing",name:"Editing",description:"Support for model editing",depends:["editable","window","dropdownlist"]}]},t.default=r,Object.defineProperty(t,"__esModule",{value:!0})}));
//# sourceMappingURL=kendo.dataviz.diagram.min.js.map