1.13.4

1.13.3

1.13.2

improved community ingest support: endpoints are now modelled as ports on their parent nodes.

1.13.1

6th December 2018

added support for drop on edge to Drop Manager

documented the Drop Manager

updated the Spring layout to correctly honour any padding value it is given

support user-specified number of iterations for magnetize to run on layouts.

upgrade to Community edition 2.8.5.

1.13.0

29th November 2018

updated Vue integration to provide an ES6 module package

updated Vue integration to allow Vue components to be used as node/group renderers

removed the jsplumb-toolkit Angular component. This has been deprecated for a while and unused in any of the jsPlumb demonstrations.
Use jsplumb-surface instead, and create instances of the Toolkit on the jsPlumb Angular service.

1.12.0

26th November 2018

added support for "spacing" to the constructor params for the Hierarchical layout. See hierarchical layout documentation for a discussion.

Non-breaking

Angular integration now supports referencing components directly in the view, instead of having to resolve them
via a nodeResolver

Added an Angular version of the Database Visualizer demonstration

Documentation updates

Updated a couple of demonstrations to show usage of undo/redo

1.10.0

12th September 2018

precompile React JSX components and package those instead of the original JSX files. This was done because of a
compatibility issue with applications made with create-react-app: they do not compile JSX files outside of the src
directory.

Remove unnecessary duplicated React demonstration

Update React demonstration and docs to reflect changes in the React integration packaging.

1.9.2

7th September 2018

added some more information to the Typescript typings file.

fix in issue on Firefox Quantum with the drop manager.

1.9.1

6th September 2018

Added portOrderProperty to the Toolkit to assist in automatically setting the order of ports in some node.

1.9.0

31st August 2018

Upgrade to Community edition 2.8.0, which contains Mottle 1.0.0, which doesn't use document.createTouch/document.createTouchList, as these methods are not supported
in latest Chrome and are becoming obsolete in all browsers. If you cannot upgrade to this version of jsPlumb and you're finding problems
in Chrome on touch devices, there are shims available in the Mottle project on Github.

minor updates to the Database Visualizer demonstration, to make it more usable on touch devices.

1.8.9

28th August 2018

upgrade to Community edition 2.7.19

update Angular docs to provide some tips on how to integrate with an existing application.

1.8.8

27th August 2018

catch exceptions when trying to install and Typescript or Angular is not found.

update code to work around a Typescript issue causing Angular CLI 6 production builds to fail.

1.8.7

24th August 2018

pass node and group elements in callback to group:addMember and group:removeMember events from Surface.

update to the Angular port renderer

basic support for nodes with multiple parents in the Hierarchical layout.

add jtk-most-recently-dragged class to the most recently dragged node/group in the Surface

1.8.6

20th August 2018

improved rendering of Ports in Angular integration

added animateToSelection method to Surface

fixed issue with zoomToSelection ignoring Groups.

added getEdges method to Selection

fixed documentation error that was causing Selection.edgeEach to be excluded.

upgrade to community edition 2.7.16

1.8.5

15th August 2018

added updateGroup method to Toolkit

1.8.4

11th August 2018

added a fix for the inverse lasso on IE11

upgrade to community edition 2.7.15

1.8.3

10th August 2018

added getGroups method to Toolkit class.

added layout entry to SurfaceOptions type definitions.

added getPort(..) to Node type definition

added source and target to Edge type definition

fixed an issue with node removal in the miniview

when removing a group from the UI and retaining its child nodes, the child nodes are drawn in the same page position as they
were in when inside the group, and no relayout is called.

upgrade to Community edition 2.7.14

1.8.2

4th August 2018

added the concept of portDataProperty, a simple way to replace portExtractor and portUpdater.

1.8.1

25th July 2018

changed the format of some method declarations that were causing Angular's optimizer to confuse itself when running a production build.

upgrade to Community edition 2.7.12

1.8.0

25th July 2018

Added support for layouts to groups. Groups have an 'absolute' layout by default but can support any layout.

fixed a few minor issues related to viewport size that were affecting the zoom to extents calculations.

removed 'autoSizePadding' parameter from group definitions. Preferred method now is CSS.

toolkit now fires a group:addMember event if a node added via addNode that has a group reference in it.

fixed an issue in the Vue2 integration whereby user supplied dragOptions were ignored.

updated all Angular demos to include the required polyfills for them to work with IE11.

updated to Community edition 2.7.10

1.7.9

26th June 2018

added support for 'invert' flag on Hierarchical layout - puts the root node at the bottom for horizontal layouts, or on the
right for vertical layouts.

1.7.8

24th June 2018

updated to Community edition 2.7.9

1.7.7

22nd June 2018

updated to Community edition 2.7.8

additions to Typescript typings file

group:addMember and group:removeMember events optionally include the other group involved when the event was fired as the result of
a member changing groups.

updated the Surface to restore the current zoom, pan location and transform origin in the loadState method

1.7.6

21st June 2018

updated to Community edition 2.7.7

updated view documentation and database visualizer application to take out allowLoopback and allowNodeLoopback flags. These are supported,
but not in a view, only in a model.

1.7.5

17th June 2018

updated to Community edition 2.7.5

1.7.4

16th June 2018

updates to documentation

1.7.3

14th June 2018

fixed an issue where after autoSizeGroups had been called, the new group sizes were not known by the surface widget,
causing zoomToFit to fail.

1.7.2

14th June 2018

locationFunction in the Absolute layout is now given the current group as the second argument, when it is called
during a group's layout of its child nodes.

1.7.1

27th May 2018

upgrade to Community edition 2.7.3

1.7.0

25th May 2018

upgrade to Community edition 2.7.2

consolidated the various layout demonstrations into a single demonstration

1.6.18

16th May 2018

added typings information for jsPlumbToolkitIO

upgrade to Community edition 2.6.12

1.6.17

30th April 2018

updates to the Typescript typings files

moved BaseNodeComponent out of the angular demo code and into the core Toolkit Angular integration

reworked the Angular 4/2 demonstration to include the Angular router.

added Angular 5 demonstration

fixed an issue in BaseNodeComponent where the component did not clean itself up properly.

1.6.16

17th March 2018

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

upgrade to Community edition 2.5.8. Fixes an issue with disappearing connectors after updateEdge called.

1.5.12

12th November 2017

Added optional basic connection debugging to the Surface widget.

1.5.11

7th November 2017

Minor updates to the Angular Groups demo page.

1.5.10

1st November 2017

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

1.5.9

29th October 2017

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

1.5.8

22nd October 2017

upgrade to Community edition 2.5.7.

suppress node dragging when user is pinch-zooming.

1.5.7

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.

1.5.6

11th October 2017

minor updates to the layout magnetization engine

1.5.5

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.

1.5.4

4th October 2017

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

1.5.3

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.

1.5.2

29th August 2017

Added support for autoSizePadding to Group definitions.

1.5.1

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

1.5.0

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

1.4.7

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.

1.4.6

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.

1.4.5

18th July 2017

added wheelReverse option to Surface widget.

1.4.4

14th July 2017

support custom export type in syntax highlighter

1.4.3

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.

1.4.2

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.

1.4.1

20th June 2017

upgrade Rotors to 0.3.17

upgrade Community edition to 2.4.3

1.4.0

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.

1.3.4

25th May 2017

upgrade to community edition 2.4.2

fix link to angular integration docs

1.3.3

10th May 2017

updated to Rotors 0.3.16

1.3.2

10th May 2017

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

1.2.8

1.2.7

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.

1.2.6

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.

1.2.5

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.

1.2.4

27th February 2017

updated the exportData method to correctly export edges between Groups.

1.2.3

27th February 2017

add grunt to webpack package json

1.2.2

27th February 2017

fix issue with preinstall script when running on Windows

1.2.1

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.

1.2.0

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.

1.1.6

3rd January 2017

added getClusters method to Toolkit and to Graph

1.1.5

20 December 2016

upgrade to Community edition 2.2.8

1.1.4

2 December 2016

added getEdgeAt method to Path

added support for custom buttons on dialogs.

1.1.3

29 November 2016

documentation updates for Hierarchical layout

1.1.2

28 November 2016

documentation updates.

1.1.1

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.

1.1.0

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.

1.0.31

18 October 2016

fix issue with ingestNode method causing miniview to fail with ingested community instance.

ensure ingested nodes are registered with the layout.

1.0.30

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)

1.0.29

6 September 2016

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

1.0.28

29 August 2016

further small fix to whitespace rendering

1.0.27

28 August 2016

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

1.0.26

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.

1.0.25

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.

1.0.24

8 July 2016

upgrade to community jsPlumb 2.1.4

reinstate missing apps (hello world, skeleton app)

1.0.23

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.

1.0.22

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.

1.0.20

1.0.19

1.0.18

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

1.0.17

8 February 2016

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

1.0.16

1 February 2016

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

1.0.15

25 January 2016

internal build script update to community 2.0.6

1.0.14

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.

1.0.13

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.

1.0.12

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:

surface.zoomToFit({fill:0.75});

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.

1.0.11

23 October 2015

upgrade to Community edition 2.0.4. Contains a couple of changes to the way posses are handled, and the
ability to drop elements onto other elements. Also contains a fix for the computation of offsets 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.