17th March 2018

  • fix for nodes being made visible having edges to non visible nodes. previously these edges would be made visible.


16th March 2018

  • fix for the isVisible test on nodes
  • added zoomToVisible method to the Surface widget
  • added zoomToVisibleIfNecessary method to the Surface widget
  • upgrade to Community edition 2.6.9
  • added optional filter parameter to zoomToSelection method on the Surface widget.
  • added sizeGroupToFit(group) method to Surface widget


9th March 2018

  • upgrade to Community edition 2.6.8
  • added support for multi selects to the Dialog helpers.
  • Node factories and Group factories now return the newly created values.


8th February 2018

  • upgrade to Community edition 2.6.7
  • upgrade to Katavorio 0.25.0


4th February 2018

  • fixed issue causing the community instance rendering content to be detached from the Surface if clear called before data loaded.


2nd February 2018

  • upgrade to Community edition 2.6.5
  • upgrade to Katavorio 0.24.0
  • Added a CSS style rule to the defaults css to suppress the pointer events on an element that was created by Katavorio in response to a drag in which the element should first be cloned.


27th January 2018

  • updates to the Angular system js demo to bring it back to working


26th January 2018

  • The Toolkit's Typescript typings file now includes the type information for the Community edition, exported as module jsPlumb
  • Typescript typings added to package.json and included in built .tgz package


26th January 2018

  • typescript .d.ts updates
  • upgrade to Community edition 2.6.3


24th January 2018

  • upgrade to Community edition 2.6.2
  • vast performance improvement in the clear method of the Toolkit.


20th January 2018

  • upgrade to Community edition 2.6.0
  • documentation updates
  • Typescript .d.ts updates
  • rename generator input on Angular jsplumb-palette component to dataGenerator, which is the name that the docs discuss.


14th January 2018

  • upgrade Community edition to 2.5.13
  • fix for the setViewportCenter method of the Surface widget
  • fix to ensure magnetize routine is aware of node size changes
  • update docs to remove outdated references to refreshNode, refreshPort, refreshEdge and their related nodeRefreshed, portRefreshed, edgeRefreshed events.


29th December 2017

  • improved location calculation for nodes dragged and dropped from a node palette.


23rd December 2017

  • fix overzealous event consumption


  • upgraded to Community edition 2.5.10
  • fix for the case that the surface widget is inside some element that has been scrolled; drop on canvas and zoom were deriving incorrect values for the mapped location on the canvas.


13th December 2017

  • added experimental support for using the mouse wheel to pan (set wheelPan:true on a render call)
  • upgraded to Community Edition 2.5.9


8th December 2017

  • added new layout type "Balloon". Arranges nodes in clusters.
  • added HIDDEN and COLOR to supported input types for Dialogs
  • exposed apply and extract methods on Dialogs to allow users to bind data object to DOM manually.
  • upgrade to Community edition 2.5.8. Fixes an issue with disappearing connectors after updateEdge called.


12th November 2017

  • Added optional basic connection debugging to the Surface widget.


7th November 2017

  • Minor updates to the Angular Groups demo page.


1st November 2017

  • Upgrade to Rotors 0.3.18, which contains a fix for the r-html tag.


29th October 2017

  • Miniview hides/shows nodes when they are hidden/shown in its associated Surface.


22nd October 2017

  • upgrade to Community edition 2.5.7.
  • suppress node dragging when user is pinch-zooming.


18th October 2017

  • added support for mouse events to jtk-source and jtk-target elements that are declared as Ports (via the existence of an port-id attribute). Previously these elements could only be mapped to mouse events if they were declared at a Node scope.

  • updated bundled Community edition to 2.5.6, which includes a minor fix for class name manipulations on SVG elements in Chrome.


11th October 2017

  • minor updates to the layout magnetization engine


8th October 2017

  • upgrade to community edition 2.5.5
  • fix an issue with the Spring layout failing to treat left:null and/or top:null as an absence of value in the positioning data, when absolute backing is switched on.


4th October 2017

  • upgrade to Community edition 2.5.2. Fixes an issue with dragging to any grid size other than [10,10].


6th September 2017

  • No longer refresh the entire layout each time a new Edge is added. Add support for refreshLayoutOnEdgeConnect as a parameter on the render call, to allow users to override this behaviour.
  • Angular 1.x revalidates a node after new edge added, to prevent errors resulting from the asynchronous nature of node painting.
  • Add more methods to the Toolkit typings file
  • Switched to a more consistently successful way of importing toolkit typings in package.json.


29th August 2017

  • Added support for autoSizePadding to Group definitions.


28th August 2017

  • Added support for optional endpoint attribute on jtk-source and jtk-target elements. If present, an endpoint is created for the node instead of its entire element being converted into a source or target. This is the equivalent of a jtk-port element in that it creates an Endpoint, but connections are made directly on the Node.
  • Upgraded community edition to 2.5.1 (provides fix for an issue with overlays disappearing when calling setType on an Edge)
  • Added more methods to the Toolkit typings file


22nd August 2017

  • added originalData to the params passed back to nodeUpdated, portUpdated and edgeUpdated events.
  • upgraded CLI version to 1.3.0 in the Angular demos
  • fix for the case that a new edge is added during the edgeAdded callback of the Surface class; the edge was being added to the model but the UI was not rendering it.
  • upgrade Community edition to 2.5.0


12th August 2017

  • fix issue with safari zoom operating backwards to all other browsers

  • add portUpdater - an optional function that is called when an update occurs to a Port.


28th July 2017

  • fixed issue with rendering in Angular 4/2 Node components. The initial data was not being applied prior to the Toolkit checking a rendered Node's dimensions.

  • code documentation updates

  • improved the accuracy of the method by which the Toolkit determines that Nodes dragged from a palette have been dropped on a Group.

  • package Angular 4 integration as a tgz, for inclusion in package.json.

  • add support for Groups to the active filtering support in the Surface.


18th July 2017

  • added wheelReverse option to Surface widget.


14th July 2017

  • support custom export type in syntax highlighter


10th July 2017

  • added getViewportCenter method to Surface widget
  • the graphCleared event is now fired after the graph is emptied, and before the graph is emptied, when graphCleared used to be fired, graphClearStart is fired instead.


23rd June 2017

  • fix an issue where hiding a connection that was attached to an endpoint that has other connections causes those other connections to be hidden too.


20th June 2017

  • upgrade Rotors to 0.3.17
  • upgrade Community edition to 2.4.3


15th June 2017

  • fix to get the Surface class correctly exported from jsplumbtoolkit
  • workaround for AOT issue when lifecycle methods declared on superclasses
  • use Angular CLI as the default for Angular demos
  • fix issue with an edge dragged from one endpoint to another - the target was being incorrectly set as the Node on which the endpoint resided, not the endpoint's associated Port.


25th May 2017

  • upgrade to community edition 2.4.2
  • fix link to angular integration docs


10th May 2017

  • updated to Rotors 0.3.16


10th May 2017

  • updated the code that handles a moved connection to ensure it treats Ports correctly.


9th May 2017

  • remove all String refs from React demo and from docs for React demo
  • minor documentation updates


8th May 2017

  • Upgrade to Community edition 2.4.0
  • Support Angular 4 (when we say 'Angular' now, we mean Angular 4. Angular 2 and Angular 1.x are labelled specifically).
  • Upgrade to Webpack 2 and related grunt-webpack in React and Webpack demo pages
  • replaced String refs in React integration with the callback pattern.
  • Added Angular CLI version of the Angular 4 flowchart demo
  • Added support for onDrop to the jsplumb-palette directive in the Angular 1.x integration.


30th April 2017

  • group auto size now correctly takes into account the group's drag area
  • when adding a node to a group, if left/top properties are set in the data, they are used as the node's position.
  • fixed an issue with groups not being cleared properly from the underlying Community instance when using the clear method


26th April 2017

  • update to version 15.5.0 in the React integration demo.


24th April 2017

  • added support for onBeforeAutoSave and onAfterAutoSave optional functions to Toolkit's auto save functionality.


24th April 2017

  • upgrade to Community edition 2.3.5
  • nodes dropped on groups now assigned their correct position


20th April 2017

  • fix issue with data not being exported on edges whose source is a Group


8th April 2017

  • Fixed issue with source element creating multiple connections after drag.


30th March 2017

  • added support for magnetize option in dragOptions of render call. Instructs jsPlumb to adjust a dragged Node/Group so that it does not overlap any other Nodes/Groups(at drag end).


22nd March 2017

  • upgrade to Community edition 2.3.2 (which includes Katavorio 1.19.2)


16th March 2017

  • upgrade to Community edition 2.3.1
  • update to ensure that endpoints/anchors in Port definitions correctly override endpoints/anchors in Edge definitions.


8th March 2017

  • Updated Angular 2 integration to force a render of each node as it is created. This ensures that any jtk-port, jtk-source or jtk-target elements are fully rendered before we try to process them.


8th March 2017

  • added support for isEndpoint flag in port definitions in the view. Causes jsPlumb to use an Endpoint instead of making an entire element a source/target.

  • added support for jtk-port, jtk-source and jtk-target elements to Group templates.

  • updated the Surface widget to correctly render isEndpoint Ports when new Ports are added programmatically to a Toolkit instance.

  • updated the Angular docs with a short discussion on the perils of the asynchronous nature of Angular's rendering cycle.


1st March 2017

  • added support for anchor-x, anchor-y, orientation-x, orientation-y, offset-x and offset-y attributes in the jtk-port element.


27th February 2017

  • updated the exportData method to correctly export edges between Groups.


27th February 2017

  • add grunt to webpack package json


27th February 2017

  • fix issue with preinstall script when running on Windows


21st February 2017

  • setPosition method of Surface widget now works for Groups too
  • animateToPosition method of Surface widget now works for Groups too.
  • toolkit and renderer are now passed as arguments to any events defined in your views.


16th February 2017

  • Upgrade to Community edition 2.3.0
  • Community edition is now bundled into the Toolkit edition - no separate import is required.
  • addition of Angular 2 integration support
  • addition of Webpack bundling example
  • addition of React integration support
  • addition of Vue 2 integration support
  • npm pack of the Toolkit code is shipped with licenses
  • documentation updates
  • fixed issue that was preventing deselection of Group elements
  • fixed issue with update of moved nodes in miniview.
  • fixed issue with duplicate Nodes being allowed inside Groups
  • doNotFireEvent parameter removed from Toolkit's addToGroup method.
  • fixed issue with Groups not being removed from DOM on clear.
  • Surface widget fires lasso:end event on lasso mouseup. No arguments are passed to the callback method.


3rd January 2017

  • added getClusters method to Toolkit and to Graph


20 December 2016

  • upgrade to Community edition 2.2.8


2 December 2016

  • added getEdgeAt method to Path
  • added support for custom buttons on dialogs.


29 November 2016

  • documentation updates for Hierarchical layout


28 November 2016

  • documentation updates.


27 November 2016

  • upgrade to Community edition 2.2.6

  • setAbsolutePosition(el, xy[]) removed from the Surface widget. Use setPosition(el, x, y) instead. setAbsolutePosition is still used by Decorators.

  • Nodes added programmatically to Groups (via the Toolkit's addToGroup(Group, Node) method) are placed in the center of the Group's drag area. Previously no change was made to their offset and this more often than not resulted in the Node not appearing inside the Group.

  • upgrade to Rotors 0.3.12

  • support HTTP headers in save method and in auto save functionality.


28 October 2016

  • added support for Groups

  • added support for multiple root nodes in hierarchical layout

  • aliased the getEdge method in Selection as getEdgeAt; this is more consistent with the API to access Nodes/Groups.

  • support for custom template resolver in render call

  • support for templates provided as a map of string s in render call.

  • added a couple of helper methods to the jsPlumbToolkitInstance class for working with Edges:

    selectAllEdges : Gets all edges in the Toolkit instance as a Selection object.

    addAllEdgesToSelection : Adds all the Edges in the Toolkit instance to the Toolkit's current selection.


18 October 2016

  • fix issue with ingestNode method causing miniview to fail with ingested community instance.
  • ensure ingested nodes are registered with the layout.


20 September 2016

  • fix issue that was causing a loopback to be added twice to the object it belonged to (although not to the Toolkit itself)


6 September 2016

  • update to jsPlumb 2.1.7, containing a few minor connection fixes.


29 August 2016

  • further small fix to whitespace rendering


28 August 2016

  • fixed issue with whitespace rendering inside templates (in some cases whitespace was being trimmed when it should not have been)

  • added setSourceEnabled, setTargetEnabled, setEnabled methods to Surface widget


18 August 2016

  • fixed issue with setVisible method on the Surface widget, in which connections from some element were made visible when the element was made visible, even if their other element was not currently visible.


12 August 2016

  • upgraded Community edition to 2.1.5, which contains Mottle 0.7.3, which itself has a fix for the synthesized tap event on Safari and Firefox.


8 July 2016

  • upgrade to community jsPlumb 2.1.4
  • reinstate missing apps (hello world, skeleton app)


19 May 2016

  • upgrade to jsPlumb Community 2.1.2, which contains a couple of bugfixes for click events and for overlays that were not being removed when switching types.


6 May 2016

  • upgrade to jsPlumb Community 2.1.1
  • fix for an operator precedence issue in the default object factory that was causing the object's type to be forgotten.
  • upgrade to Rotors 0.3.11 (fix for deeply nested template rendering)
  • fix for default JSON parser when Ports that have no nodeId are present.


21 April 2016

  • api documentation fixes
  • upgrade to jsPlumb community 2.1.0 (a couple of memory leak issue fixes)
  • upgrade to Rotors 0.3.10
  • upgrade to Farahey 0.7
  • memory leak fixes
  • fix issue with miniview not repainting after expansion


17 March 2016

  • update Rotors to fix possible infinite loop with nested templates


9 March 2016

  • update Rotors


9 March 2016

  • fixed an issue with the auto save: it was not suspended during data load.


8 February 2016

  • fix for inverse lasso: the mask does not appear until the user starts to drag.


1 February 2016

  • fix for state deactivate - parameterised overlays now retain their values.


25 January 2016

  • internal build script update to community 2.0.6


24 January 2016

  • update to Rotors 0.3.7, which contains a fix for parameterised attributes on custom elements, and support for an 'updated' callback in custom tags.

  • add support for inverted mode to lasso, in which unselected parts of the UI are masked, rather than the default behaviour of drawing an element to represent the selected area.

  • update community jsPlumb to 2.0.6. Not a required update for 1.0.14; 2.0.5 is ok.


11 January 2016

  • getAllEdges in jsPlumbToolkit no longer takes parameters, and actually works properly now.
  • added getAllEdges to Graph class.
  • small tidy up in Angular demo templates to fix IE* rendering issue.


14 December 2015

  • Update to Rotors to support attributes with colons (such as xlink:href on an svg image)

  • Fix updateNode bug: nodes were not being removed from previous posses before being possibly added to new ones.

  • Posses are assigned to elements in bulk after load, in case one of them has tried to access a node that is not yet loaded.

  • Added batch function to Surface widget, to run a function while rendering and events are both suspended.

  • Added support for rectangular tiles in the tiled background of a Surface widget

  • Fixed issue that caused an error when dragging an existing edge from one source to another.

  • zoomToFit on the Surface widget now defaults to filling 90% of the viewport. This can be overriden by supplying a fill parameter:

  • The link to filters in the documentation no longer gives a 404.

  • Fixed an issue that was occasionally causing multiple buttons in dialogs.

  • Fixed an issue that was causing dynamically populated overlays to revert when a new State was applied.

  • Introduced the concept of typeProperty (and edgeTypeProperty / portTypeProperty). This reflects the fact that for the majority of applications, the function used to determine some object's type simply looks at the value of some given property. By providing the name of this property, rather than a typeFunction, the Toolkit is then able to write an object's type as well as read it.

  • Added support for setType method

  • Added small fix to avoid buttons being added more than once to a dialog.


23 October 2015

  • upgrade to Community edition 2.0.4. Contains a couple of change to the way posses are handled, and the ability to drop elements onto other elements. Also contains a a fix for the computation of offets when dragging nested elements.
  • update to Rotors to support attributes with colons (such as xlink:href on an svg image)
  • update to Rotors to include <r-html> tag (for embedding HTMl rather than plain text)
  • change pan/zoom widget so it no longer consumes all mouse events it does not process.
  • jsPlumbToolkitUtil.ajax takes optional headers map (for setting http headers).
  • jsPlumbToolkitInstance.load takes optional headers map (for setting http headers).
  • jsPlumbToolkitInstance.load sets Accept:application/json HTTP header if headers not supplied.


16 October 2015

  • added adHocLayout method to Surface widget. This lets you run a named layout one time on your data.


16 October 2015

  • upgrade to Community edition 2.0.3 (changes to Posse dragging, minor bugfixes)

  • Removed a number of spurious animations that were unnecessarily occurring while the Surface widget initialised a paint.


12 October 2015

  • Upgrade to Community edition 2.0.2 (for documentation improvements)


7 October 2015

  • Upgrade to Community edition 2.0.1
  • Documentation improvements


6 October 2015

  • upgrade to Community edition 2.0.0
  • upgrade to Rotors 0.3.5
  • nodeUpdated/edgeUpdated/portUpdated events are given the updates that the user passed in (issue 61)
  • beforeConnect interceptor gets edgeData as third argument (if some data was returned from beforeStartConnect) (issue 62)
  • Add the ability to 'refresh' the set of nodes registered via a registerDroppableNodes call on a Surface.
  • Add centerOnAndZoom function to Surface
  • modelLeftAttribute and modelTopAttribute, which specify the left/top attribute against which to store node positions, now support dotted notation, ie. can refer to a nested element.
  • Added zoomToSelection to Surface widget.


31 August 2015

  • Reinstate animation when panning the surface
  • Expose setPan method on the surface
  • Support animation in the setPan method
  • Support enableAnimation:false flag in render method. default is true.
  • Upgrade to Community edition 1.7.10 (bugfix for animation when providing 0 as param value)


29 August 2015

  • Several improvements to the ingest functionality, including the ability to subsequently ingest new elements.
  • Upgrade to Community edition 1.7.9


21 August 2015

  • Fix loading issue with directed edges in basic JSON parser.
  • Add setDirected method to Edge
  • Add tracePath method to Renderer
  • Add Path Tracing demo


10 August 2015

  • Add traversePath method to Surface (and animateOverlay method to Connection)
  • Upgrade to Rotors 0.3.0
  • Fix issue in Hierarchical layout in which circular references in the hierarchy cause an infinite loop.


1 August 2015

  • Addition of fixElement and floatElement methods to pan/zoom widget and Surface, and exposing of these methods to the layout decorator functionality.


19 July 2015

Initial release.