Changelog
7.3.5
October 17th 2025
-
Updated HierarchyLayout to ensure all "child" vertices of an already placed vertex are located in the next layer down
-
Updated HierarchyLayout to prefer arrangements where leaf nodes are at the start/end of each layer.
-
Updated HierarchyLayout to ensure child elements of vertices that have multiple parents are always placed correctly
7.3.4
October 4th 2025
-
Updated size calculation code to reduce reflows, resulting in a 35% reduction in load time on Chromium browsers and a 19% reduction in load time on Firefox.
-
Updated
setTypemethod to ensure type changed event is always fired.
7.3.3
August 12th 2025
- Switched to a better CSS solution for hide/show of set titles in nested shape sets
7.3.2
August 12th 2025
- Fixed issue with show all option in nested shape sets
7.3.1
August 11th 2025
- Added support for shape sets to nest other shape sets. See docs for details.
- Fixed an SVG export issue in which in certain scenarios edge paths could be painted with an incorrect offset
- Added
transformOriginto the payload return by theexportDatamethod on a Surface - Added JS docs for various parameter interfaces
- Updated shape library palette to use CSS to hide/show sets, rather than directly manipulating their style elements. This helps ensure that JsPlumb doesn't impose itself on how you want to style those elements.
7.3.0
July 16th 2025
New Functionality
SVG Shapes
- Updated the ShapeLibrary to add support for multiline labels on shapes.
Inspectors
- Added support for a list of recently selected colors in the inspectors
- Added support for a context object in inspectors - shared state for the various UI components in the inspector.
- Added support for casting the return value of select elements and radio buttons in the inspector to numbers.
- Added support for persisting inspector context to the dataset generated by the Surface's exportData method
Surface component
- Added
cloneVertexmethod to the Surface - quickly clone some vertex, optionally supplying a new position and making it the Toolkit's current selection - Added
flashVertex(...)method to the Surface - flash some vertex to bring it to the user's attention. - Added
flashSelection(...)method to the Surface - flash some set of vertices to bring them to the user's attention. - Added
exportData,saveandloadmethods to the Surface, allowing you to save not just the dataset but also the pan/zoom settings for the surface, as well as any context that an inspector might have attached (such as the list of recent colors in a color picker)
Angular
- Added
cloneNode()toBaseNodeComponentandcloneGroup()toBaseGroupComponent. - Added
flashNode()toBaseNodeComponentandflashGroup()toBaseGroupComponent.
Updates
- Fixed issue with painting loopback connectors when using continuous anchors - the source anchor would erroneously be resolved to [0,0]
- Fixed issue where changing lineWidth on edge did not change the line width in the hover paint style
- Updated SVG exporter to export the line width of each edge, instead of using a default.
Demos
- Updated the flowchart builder starter apps to use color history in inspectors,
- Added the ability to set the line width of edges and the outline width of vertices in flowchart builder
- Use multiline labels in flowchart builder
Docs
- Updated inspector docs
- Updated Angular quick start to fix an error in the recommended template, and to show how to include the default jsplumbtoolkit.css stylesheet.
7.2.5
June 12th 2025
- Added support for an interceptor function that can be used to tell JsPlumb which connection to detach from an endpoint that has more than one connection attached (
connectorDetachSelector- see docs on edge dragging).
7.2.4
June 5th 2025
- Updated the
EdgeRoutingPluginto persist path data to the model, if the Surface hasedgesEditableset to true.
7.2.3
May 27th 2025
- Extended support for
beforeMoveConnectioninterceptor to element targets
7.2.2
May 12th 2025
- Packaging updates
7.2.1
May 12th 2025
- Packaging updates
7.2.0
April 22nd 2025
-
Implemented a new default paint mechanism for Bezier where the curviness is reduced as the elements get closer together, because the control point is specified as a fraction of the distance between the two anchors. This results in a curve that doesn't spike past the anchor points and generally has a nicer aesthetic. See Breaking section if you want the old way.
-
Connectors and Endpoints now use an SVG
gelement as their container whenuseSvgContaineris set on the surface options. -
Updated the Inspector to track programmatic updates in items it is inspecting, and to update its UI when a matching update is found.
-
Added an
InspectorComponentto the Angular integration, making it easier to add an Inspector to your Angular apps. -
The
selectorprop on the ReactPaletteComponentis now optional, defaulting to "[data-jtk-type]" -
The
selectorprop on the Angularjsplumb-drag-dropdirective is now optional, defaulting to "[data-jtk-type]" -
The
selectorparam onDropManagerandSurfaceDropManageris now optional, defaulting to "[data-jtk-type]" -
Inspectors now support the RANGE input type.
-
The React
InspectorComponentnow supports an optionalafterUpdatecallback prop. This is invoked after the underlying inspector has run an update. -
The
onEditcallback of theDrawingToolsPluginnow passes the Surface and Toolkit to the callback function.
Breaking
- Bezier connectors are now painted with a control point whose location is specified as a fraction of the distance between the two anchors. If you want the previous paint algorithm, set
legacyPaintin your connector spec.
7.1.1
April 8th 2025
Updates
- Revalidate element dragged from one group to another to ensure edge placement is current.
7.1.0
April 7th 2025
New Functionality
-
New overlay option
visibilityadded: use "hover" to specify that some overlay should only be visible when the mouse is hovering over the edge. -
Edge definitions in a view now support an optional
deleteButtonparameter, which instructs JsPlumb to show a delete button overlay on edges of that type that are rendered. You can also provide adeleteConfirmfunction, which JsPlumb will invoke whenever the user presses a delete button instead of the default behaviour of deleting the edge immediately. -
Edge definitions support a
deleteButtonLocationoptional parameter, which you can use to specify the location of one or more delete buttons on your edges.
Updates
-
We identified an opportunity to introduce a performance enhancement, particularly when ingesting large datasets. 7.1.0 can ingest large datasets significantly more quickly than either 7.0.0 or the 6.x versions.
-
In 7.1.0 we have reinstated switching on hover events by default. This functionality allows you to map mouseover/mouseout events to edges, and we disabled several versions when it was thought to be a performance hit, particularly in our Angular integration. We've since tracked those performance issues to being related to Angular's zone js (and fixed them!), and so we're reinstating hover events.
7.0.1
April 3rd 2025
Updates
- Updated the connector code to ensure that label overlays are always drawn on top of path elements when the
paintConnectorOutlineflag is set.
7.0.0
March 28th 2025
New functionality
-
Support for vertex avoidance for edges has been added.
-
Support for snapping edges to targets when dragging has been added.
-
A new option
trackbackwas added to the magnetizer when running inconstantmode. Withtrackbackswitched on the magnetizer will attempt to revert nodes that have been moved out of the way of the dragging element back to their original locations. -
When using the
SurfaceDropManagerit is no longer necessary to provide adataGeneratorto create a payload for items a user is dragging. By default, JsPlumb will prepare a payload derived from anydata-jtk-***attribute found on the element. For instance, if you writedata-jtk-typeanddata-jtk-labelattributes on the elements your users can drag, the initial payload will be a JS object with matchingtypeandlabelvalues. This change has been applied also to the Angular, React, Svelte and Vue integrations. -
The
Straightconnector now supports an optionalconstrainconfiguration option, with possible values "orthogonal", "diagonal" and "none", with "none" being the default. Whenconstrain:"orthogonal"is set, theStraightconnector behaves the same as anOrthogonalconnector. Whenconstrain:diagonalis set the connector chooses horizontal/vertical or diagonal paths. -
You can now instruct JsPlumb to paint an outline of some specific size by default on all of your edges, using the new default keys
paintConnectorOutline(default valuefalse),connectorOutlineWidth(default value10) andconnectorOutlineColor(default value "transparent"). WhenpaintConnectorOutlineis set totrue, a 10 pixel transparent path will be drawn behind each edge, which makes it much easier for your users to interact with your edges. -
Added
ExportControlsComponentto the Angular integration. This component can export an SVG based UI to SVG, PNG or JPG. -
Support for
gapwas added toCubicBezierConnector -
The
DrawingToolsplugin was updated to support resizing elements by dragging their border. Borders can be visible or transparent. -
Added support for
onVertexAdded,dragSize,canvasDropFilterandcanvasSelectorinput to thejsplumb-surface-dropcomponent in the Angular integration. -
Added support for
onVertexAdded,dragSize,canvasDropFilterandcanvasSelectorinput to thePaletteComponentin the React integration. -
Added support for
showCloseButtonoption on Inspectors. When clicked, the inspector is made inactive and JsPlumb's selection is cleared
Updates
-
Fix applied to orthogonal connector to fix occasional paint issue when removing short segments.
-
An improvement was made to the continuous anchor location selection algorithm to reduce flicker.
-
The drop manager was updated to fix an issue whereby drop on edge would not occur if the element to drop was hovering over some vertex, even if dropping on the vertex was not permitted.
-
The
SurfaceRenderOptionsinterface was updated to useBrowserJsPlumbDefaultsinstead ofJsPlumbDefaultsfor the optionaldefaultsvalue. -
Internal refactoring of
OrthogonalandStraightconnectors to improve reuse between the two. -
AngularViewOptionsinterface updated to fix missing group inheritance. When defining groups in your Angular view it was previously necessary to cast the view toanyto use group flags. -
Internally, the controls component uses the
BrowserElementinterface instead ofHTMLElement. This makes it easier to integrate when using methods likequerySelectorand Typescript. -
Updated
SVGExporter/ImageExporterto fix error thrown when there is noShapeLibraryregistered and the default SVG renderer would be used. -
Our API documentation has been reorganised to make it much easier to find the things you need, or to just browse through and discover things.
-
Fixed an issue with Angular overlay components - our previous way of instantiating them no longer works with Angular 18. We've updated the code to support a different way of instantiating them (which is backwards compatible with Angular 17 and 16).
-
Updated the
DrawingToolsplugin to automatically register appropriate drag filters on the underlying surface. Previously it was the user's responsibility to do this via thedragOptionsof the surface, and failure to set this up would result in a transaction error at the start of a resize. -
The drop manager was updated to provide a nicer user experience when dragging a node/group from the palette - the element being dragged is centered around the mouse/touch event location now.
CSS Updates
-
We now ship the source
scssfiles that we use to createjsplumbtoolkit.cssin the/scssdirectory of the@jsplumbtoolkit/browser-uipackage. -
A few useful updates were made to the
jsplumbtoolkit.cssdefault stylesheet:- When an edge is dragging, the canvas cursor is set to
default, where previously it would bedrag. This makes for a nicer visual cue for users. - Nodes and groups are assigned the
movecursor by default - When
elementsDraggable:falseis set on a surface, nodes and groups are assigned thedefaultcursor. - When an individual node/group is marked as not draggable, it is assigned the
defaultcursor.
- When an edge is dragging, the canvas cursor is set to
Demo updates
- Updated various demonstrations to give them a more fresh look and feel
- Added an Inspector to our Angular Gantt chart
- Updated Flowchart Builder to use vertex avoidance for edges instead of editable edge paths, and magnetizer trackback.
API docs updates
We spent some time going through the Typedocs documentation prior to releasing version 7.0.0, and we've updated our API docs with categories and groups, to gather together related concepts and generally make it easier to get around. Finding what you're looking for is now more straightforward, but with this new structure it's also possible just to browse around a little and discover things you may not have known about.
Breaking
-
Support for the
ORTHOGONAL_CONNECTOR_RECALC_STRATEGY_LEGACYrecalculation strategy was removed, having been previously deprecated.ORTHOGONAL_CONNECTOR_RECALC_STRATEGY_MODERNandOrthogonalRecalcStrategywere also both removed, being no longer necessary. -
The
SegmentedConnectorhas been renamed toStraightConnector. Wherever your app usesSegmentedConnector.typeyou'll need to update the code. Note, though, that this newStraightConnectoris the default connector, so if you currently useSegmentedConnectorwithout any config options you can simply remove that code.
We do not expect any change in functionality for apps that either currently use the default connector or that specify Straight as the connector type, as the new Straight connector is a drop-in replacement for the original Straight connector, when it has only a single segment.
-
The original
StraightConnectorhas been renamed toLegacyStraightConnector. -
marginwas removed fromStateMachineandBezierconnectors. Use the pre-existinggapoption instead. -
The CSS classes added to groups that are a drag target or the current hover target for other groups or nodes being dragged have changed from
jtk-drag-activeandjtk-drag-hovertojtk-vertex-drag-activeandjtk-vertex-drag-hover. This is to distinguish them from the active/hover classes used when dragging edges. -
The
initializeSegmentedConnectorEditorsmethod was renamed toinitializeStraightConnectorEditors -
The CSS classes related to the previous segmented connector editor have been renamed, eg. where we'd have
.jtk-segmented-segment-delete, for example, we now have.jtk-straight-segment-delete. -
The contents of the
jsplumbtoolkit-connector-editors.cssstylesheet was folded in tojsplumbtoolkit.cssandjsplumbtoolkit-connector-editors.csswas removed. -
The contents of the
jsplumbtoolkit-edge-type-picker.cssstylesheet was folded in tojsplumbtoolkit.cssandjsplumbtoolkit-edge-type-picker.csswas removed. -
The contents of the
jsplumbtoolkit-dialogs.cssstylesheet was folded in tojsplumbtoolkit.cssandjsplumbtoolkit-dialogs.csswas removed. -
The contents of the
jsplumbtoolkit-browser-ui-plugin-background.cssstylesheet was folded in tojsplumbtoolkit.cssandjsplumbtoolkit-browser-ui-plugin-background.csswas removed. -
The contents of the
jsplumbtoolkit-controls.cssstylesheet was folded in tojsplumbtoolkit.cssandjsplumbtoolkit-controls.csswas removed. -
The
ExportControlsComponentconstructor has changed - the third argument is now options instead of a ShapeLibrary. if you need to pass in a shape library you can do it inside the options, but it should not be necessary as the component gets the shape library from the surface you pass in.
6.81.0
October 14th 2024
Updates
- The inspector component was updated so that it does not write empty strings for values that previously had no value in the data for the object being edited.
- Added JS docs for the
deleteButtonLocationanddeleteButtonClassoptions on an edge editor - When an EdgePathEditor is attached to a surface, dragging a new edge no longer results in a separate path edit action on the undo/redo stack.
- When an edge that has no geometry is deleted and subsequently reinstated via undo/redo, no geometry is written to the edge, so it is in its original state
6.80.0
October 4th 2024
In 6.80.0 we've given our Svelte integration a major overhaul, bringing it up to speed with our Angular, Vue and React integrations.
New functionality
-
Added
SurfaceProvider, an element that provides context for various other elements, allowing things like the miniview or controls components to find the surface to attach to. -
Added
MiniviewComponent, which provides a miniview attached to some surface. -
Added
ControlsComponent, which provides a set of controls with basic operations such as zoom to extents, undo/redo, etc. -
Added
ExportControlsComponent, which provides a set of buttons from which users can export a diagram to SVG, PNG or JPG. -
Added
PaletteComponent, a component from which users can drag new nodes/groups onto the canvas. -
Added
ShapeLibraryPaletteComponent, a specialized version ofPaletteComponentthat renders the contents of a shape library, from which users can drag shapes onto the canvas. -
Added
ShapeComponent, an SVG shape renderer. -
Added
InspectorComponent, a Svelte wrapper around JsPlumb'sInspector. -
Added
EdgeTypePickerComponent, a component that renders samples of a list of edge types, and allows a user to select one. -
The Svelte
SurfaceComponentwill now render a default component for nodes/groups if no explicit mapping is found in the view. This is great for rapid prototyping. -
Added full JS docs for all interfaces in the Svelte integration.
Breaking
-
The props for the Svelte
SurfaceComponenthave changed:renderParamsis nowrenderOptionsviewParamsis nowviewOptionstoolkitParamsis nowmodelOptions
-
You'll now need to use, at a minimum, Svelte 3.55. But we recommend using Svelte 4.
6.72.0
September 24th 2024
The focus of this release was on improving the JS docs, in conjunction with a major upgrade to https://docs.jsplumbtoolkit.com
New functionality
- Added
onVertexAddedinput to AngularShapeLibraryPalettecomponent.
Breaking
- The
AnimationEventsenum was removed and its members (EVENT_END_OVERLAY_ANIMATIONetc) are now just exposed as constants.
6.71.0
September 16th 2024
-
In this release we've "undeprecated" the usage of static connector type names, such as
OrthogonalConnector.type. Where previously we'd deprecated these in favour of string constants (such asCONNECTOR_TYPE_ORTHOGONAL), we - and some licensees - have found that in some situations using the string constant causes a tree shaker to leave the connector code out. This was particularly prevalent in Angular apps. We recommend now using the static type names, even if you're not using Angular. -
The
adHocLayoutmethod of the Surface now clears the geometry of all the edges in the canvas, because edited edge paths are intrinsically linked to the position of their source and target vertices, and theadHocLayoutmethod can arbitrarily move any vertex. -
Added optional
dataandurlinputs to thejsplumb-surfacecomponent in the Angular integration. -
Added
CubicBezierConnectoralias toBezierConnector. In 7.xBezierConnectorwill not be present and you'll need to useCubicBezierConnectorinstead -
Added
QuadraticBezierConnectoralias toStateMachineConnector. In 7.xStateMachineConnectorwill not be present and you'll need to useQuadraticBezierConnectorinstead
6.70.1
September 10th 2024
- Fixed an issue with types in the Angular view options. This was not a functionality; in 6.60.2 we inadvertently introduced an issue with types that caused Angular apps to fail to compile unless the component mappings were cast to
any.
6.70.0
September 6th 2024
In 6.70.0 we've added a number of updates to our Vue 3 integration to make it easier to use.
UPDATES
-
None of the Vue 3 components require a
surface-idprop anymore. For the vast majority of apps, having a single surface, that means you can rely on the defaults and remove a bunch of boilerplate from your templates. -
If you do not provide a
componentto map a node or a group, the Vue 3 integration will now use a default component. -
Vue 3's
loadSurfacemethod now makessurfaceIdoptional: if you omit it, JsPlumb will use the default surface id. -
We've added a
ControlsComponentto our Vue 3 integration -
We've added an
ExportControlsComponentto our Vue 3 integration -
We've added an
ExportControlsComponentto our React integration -
Our Vue 3 docs have been updated to be easier to follow and to find the things you need.
-
The
ControlsComponentin the React integration was updated to honour anorientationprop set on it. -
You can pass an optional
typeParameterand/orcategoryParameterto the constructor ofShapeLibraryImpl. This allows you to override the parameters the shape library will use from each vertex's data to resolve the shape to use.
BREAKING
A few components were renamed in the Vue 3 integration:
jsplumb-toolkitis nowSurfaceComponentjsplumb-miniviewis nowMiniviewComponentjsplumb-shapeis nowShapeComponentjsplumb-shape-paletteis nowShapePaletteComponentjsplumb-edge-type-pickeris nowEdgeTypePicker
In the Vue 3 SurfaceComponent:
renderParamswas renamed torenderOptionsviewwas renamed toviewOptionstoolkitParamswas renamed totoolkitOptions
6.60.2
September 3rd 2024
- Updates to Angular apidocs.
6.60.1
September 2nd 2024
- Updates to bundling for Angular evaluation packages
6.60.0
August 26th 2024
UPDATES
- In the Angular integration, it is no longer necessary to supply
toolkitIdandsurfaceIdto the various components. A default value is used when you do not supply a value. This reduces boilerplate code: only an app with more than one surface actually needs to specify the ID of the surface to attach to. BaseNodeComponentin Angular integration has been rewritten to expose the underlying data object as a signal (objSignal).BaseGroupComponentadded to Angular integration. This component is identical toBaseNodeComponentexcept it expects to render a model object of typeGroup.BasePortComponentin Angular integration has been rewritten to expose the underlying data object as a signal (objSignal).
BREAKING
A few classes were renamed in the Angular integration (although note their selectors were unchanged):
jsPlumbSurfaceComponentis nowSurfaceComponentjsPlumbMiniviewComponentis nowMiniviewComponentjsPlumbSurfaceDropComponentis nowSurfaceDropComponentjsPlumbDragDropComponentis nowDragDropComponent- The original
BaseNodeComponentis nowLegacyBaseNodeComponent - The original
BasePortComponentis nowLegacyBasePortComponent
6.50.0
August 23rd 2024
UPDATES
-
The algorithm used to select a Dynamic anchor was adjusted to not add the delta between some anchor and the element's center to its calculations.
-
A new
ShapeComponentwas added to the React integration. This component is functional and takes as a prop thectxthat the Surface passes to the mapping your view. -
The
ShapeLibraryPaletteComponentin the React integration no longer needs to be provided with ashapeLibraryas a prop - it retrieves the shape library from the Surface it is attached to. -
We've introduced a
JsxWrapperPropsinterface to define thectxmember that the surface passes in to JSX mapped in your viewOptions.
BREAKING
-
In the React integration, the original
ShapeComponenthas been renamed toLegacyShapeComponent. -
In
jsplumbtoolkit.css, the.jtk-miniviewclass is now specifiedposition:absoluteinstead ofposition:relative. This better reflects how a miniview is typically used in the majority of UIs.
6.40.0
August 16th 2024
NEW FUNCTIONALITY
6.40.0 sees a big update to our React integration, with the introduction of Contexts and Providers, which will allow you to greatly simplify the code you need to write to create a UI with JsPlumb.
-
SurfaceContextadded to project. A Context that provides a Surface for other components to access. -
SurfaceProvideradded to project. This provides a SurfaceContext. -
SurfaceComponentadded. This is a new version ofJsPlumbToolkitSurfaceComponentwhich is context aware, and which itself can act as a surface provider for other components. -
MiniviewComponentandControlsComponenthave been updated to be functional components, and to be context aware. For the most part these components can now simply be declared in your JSX with no configuration or mounting necessary. -
JsPlumbProvideradded to project. This provides an instance ofJsPlumbToolkitto any descendant components. Although not such a common use case, this provider can be used to render one instance of JsPlumb in multiple surfaces. -
PaletteComponentadded. This is a new, functional, version of the originalSurfaceDropComponent. It is context aware and can discover a Surface provided either from aSurfaceComponentor aSurfaceProvider. -
ShapeLibraryPaletteComponentis now a functional component that is context aware and can function within any context that provides a surface.
UPDATES
-
We've made several improvements to the algorithm that repaints an orthogonal connector when its source or target is moved.
-
Updated the Hierarchy layout to support edges that are from ports on nodes/groups, not just edges from nodes/groups themselves.
-
Added optional
filtertoInspector, allowing you to control which elements the inspector will edit -
Fixed an issue in the
Inspectorwhere in some cases the "active" css class was being added to its container even though there was no object to edit. -
The Angular and React integrations now use a default node/group mapping if you do not provide one in your view. This lets you prototype things more quickly without having to get bogged down in details.
BREAKING
- The default layout for a Surface is now the
AbsoluteLayout, where previously it wasEmptyLayout. - The default endpoint is now
BlankEndpoint, where previously it wasDotEndpoint. - The default anchor is now
Continuous, where previously it wasAnchorLocations.Bottom.
React Integration
In the React integration a few components have been renamed and several marked deprecated, due to the new components discussed below. Specifically, the changes are:
- The original
ShapeLibraryPaletteComponentis nowJsPlumbToolkitShapeLibraryPaletteComponent - The original
ControlsComponentis nowJsPlumbToolkitControlsComponent - The original
MiniviewComponentis nowJsPlumbToolkitMiniviewComponent
It may not be evident that these changes have occurred since for each of the classes renamed we have created new versions with the original names, as functional components that are able to operate inside the SurfaceProvider which was introduced in 6.40.0.
Props and state for each of these components were also renamed - where you see something prefixed with JsPlumbToolkit, you know it's now legacy code and will be removed in a future release.
6.30.0
June 26th 2024
UPDATES
- Fixed issue with port update in Angular integration, when the port was not rendered as a separate component.
6.29.0
June 25th 2024
UPDATES
- We've made some changes to the Angular integration to provide a significant performance enhancement, particularly for larger datasets: the Surface and Miniview are now decoupled from the automatic change detection, and change detection is managed via behind the scenes injection of
ChangeDetectorRefs to node/group/port components. As unlikely as it seems, if this change affects your app negatively, you can setrunInsideAngular="true"as an Input on yourjsplumb-surfaceelement to disable the change. It would also be great if you'd contact us and let us know.
BREAKING
- In light of the change mentioned above, if you use an Angular component as an overlay but you do not extend
BaseAngularOverlayComponent, you will now need to inject aChangeDetectorRefinto your overlay component in order for it to automatically update when its associated Edge is updated.
6.28.0
June 23rd 2024
UPDATES
-
Updated the Angular
ControlsComponentto run change detection after init and avoid a console debug (in dev only) advising that an expression was changed after it had been checked. Although this was never an issue in prod mode, it did also cause Karma to bail out when the test included a ControlsComponent. -
Improved jsDoc for the
jsPlumbToolkitTestHarnessclass.
6.27.0
June 20th 2024
UPDATES
- The Surface canvas now supports "auto pan": when a vertex is dragged outside the visible area, the canvas is panned such that the vertex is still visible.
- Updates to the Hierarchy layout to better support edge routing when there is more than one root.
- The
PanButtonsPluginhas been resurrected. - Updated the React
ControlsComponentto not add a 'lasso' button when no associated plugin is registered on the surface.
6.26.0
June 18th 2024
UPDATES
- Updates to the Hierarchy layout to support groups which themselves do not have outgoing edges but which have one or more child vertices that do.
- Added
alignContent,alignContentTop,alignContentLeft,alignContentRightandalignContentBottommethods to Surface. - Fixed issue with the React ControlsComponent not firing events for custom buttons.
- Added support for optional
alignXandalignYarguments to thezoomToFitandzoomToFitIfNecessarymethods on the Surface.
6.25.0
June 11th 2024
- Fixed an evaluation packaging issue with 6.24.0
6.24.0
June 6th 2024
NEW FUNCTIONALITY
Vertex Drawing Plugin
This plugin allows your users to draw new nodes/groups onto the canvas with the mouse or with touch events, and lasso existing objects on the canvas to add to new groups. It can be used stand alone, or fully integrated with a shape library palette. It's super cool and useful.
ControlsComponent
- Added support for optionally hiding the zoom to extents, clear, and undo/redo buttons.
- Added support for an optional list of extra buttons to render alongside the default buttons
- Added support for an optional
orientationparameter, allowing you to draw the controls as a column instead of a row.
Angular Integration
- Added support for injecting values into @Inputs on nodes/group components from inside your view.
Shape Libraries
-
In a
ShapeSetyou can now mark individual shape types as mapping to groups in your UI instead of just nodes. So theShapeLibraryPalettecan now allow your users to drag and drop new groups onto the canvas. -
The
ShapeLibraryPalettenow allows you to providefillandoutlinein thedataGenerator. Previously these values were overwritten by the palette's class-level defaults. -
You can show labels on icons in a shape library palette now, via the
showLabels:truesetting. Read more about this in the shape library palette docs linked below.
SVG/PNG/JPG Export
-
SVG/PNG/JPG export now supports exporting groups.
-
We've wrapped up the SVG/PNG/JPG export functionality from our flowchart starter app into a new component -
ExportControlsComponent.
Layouts
-
The
GridLayoutwas updated so that if there is only a single row/column of content, the entries are allowed to take up different heights/widths, meaning they are grouped together. Previously in a grid layout with a single row or column, each entry was allotted the same amount of space as the largest entry, which is fine when there is actually a grid but not the best aesthetically when there's only a single row or column. -
We've added
RowLayoutandColumnLayout, which are specialized instances ofGridLayoutwith the appropriate orientation and limits on row count/column count set for you. These layouts can of course be achieved via appropriate options on aGridLayout: they are wrappers for convenience.
Element dragging
- Added support for
elementsDraggable:booleanin group definitions. You can set this to false to prevent child members of some group from being draggable. By default this flag is set totrue, meaning child members of a group are draggable within the group.
Drawing Tools
- The drawing tools plugin can now trigger resize of an elastic group, if the current vertex is a child of an elastic group. See this in action in our network topology diagram demonstration.
Lasso Plugin
- The
LassoPlugincan now be given an optionalcssClassparameter, which will be written into the lasso's DOM element's class.
CSS
- Some new CSS vars were added to the default stylesheet
box-sizes:border-boxset on.jtk-nodeand.jtk-groupelements.- We've updated the
jsplumbtoolkit-controls.cssstylesheet to give the controls component a fresh new look.
New Demonstrations
- We've released an Angular version of our Gantt chart starter app
- We've released a brand new "network toplogy" starter app
Miscellaneous
-
The internals of the undo/redo manager were updated to collapse multiple update events fired during a transaction into a single event. This reduces the memory footprint and improves performance when executing an undo or redo.
-
Bugfix: when dragging a group that has descendants in the current selection, those descendants are not also dragged. Previously all the elements were dragged, causing the descendants to shift positions inside the group.
BREAKING
-
The third argument of
ControlsComponentis now an object containing options, where previously it was an optional clear message.clearMessageis now an optional field in the options. -
Groups will now not allow "shrink from origin" by default. After discussion with several licensees we reached the conclusion that this behaviour was unexpected, and, while it should be possible, it should not be the default. For more information see the documentation (link below).
-
The
DrawingToolsPluginnow useswidthandheightfor size attributes by default, instead ofwandh. We do not expect this to break anything for anyone, as all of the demos and starter apps we have written actually set these values towidthandheight.
LINKS
6.23.0
May 12th 2024
UPDATES
-
New demo app Gantt chart added (see https://jsplumbtoolkit.com/demonstrations/gantt)
-
The drawing tools plugin now supports
resizeXandresizeYin its options, allowing you to switch off resize in some given axis. -
You can now write a
jtk-resizable="false"attribute on any node/group element that you wish to exclude from the drawing tools plugin. -
New method
zoomToExtentswas added to the surface component. You can use this method to instruct the surface to zoom to some specific area on the canvas. -
New method
zoomToDecoratorwas added to the surface component. This method useszoomToExtentsinternally to instruct the surface to zoom such that all of the canvas content and any elements added by the given decorator are visible. -
You can provide an
idwhen registering an element via thefixElementmethod of a surface, and subsequently retrieve a handle for the fixed element viagetFixedElement. Fixed element handles can be used to adjust the canvas panning to reset it so that all content is visible. -
The optional
constrainFunctionon a surface's drag options is now also passed the current position of the element that is being dragged. -
When fixing elements in a decorator you can now provide horizontal/vertical alignment hints for the element, enabling you to fix an element's right and/or bottom edge at some location (in previous versions you could only fix the left and/or top edges)
-
The
centerOnmethod in the Surface (and its variantscenterOnHorizontally,centerOnVerticallyandcenterOnAndZoom) have been updated to correctly center the display when the focus vertex is a child of a group.
MISCELLANEOUS
-
The drawing tools plugin now supplies a
reasonof "drawingToolsResize" in the update event that it posts to the Toolkit. -
Updated the miniview destroy method to ensure the window resize listener has been detached.
-
Updated element drag code to draw all edges after all elements have been repositioned. This allows the orthogonal connector router to determine when both elements in a connection have been dragged by the same amount, meaning the path does not need to be recalculated, only shifted.
BREAKING
- The
EventGeneratorclass'sbindmethod no longer accepts an array of event names as its first argument. It only accepts a single event name now: if you're invoking this method with an array of event names you'll need to iterate the events yourself and callbindfor each one.
6.22.0
April 19th 2024
- Fix applied for zooming when the window is scrolled
6.21.0
April 18th 2024
UPDATES
-
Support was added for zooming in nested instances (eg. when some node in a given instance has another instance of JsPlumb embedded in it).
-
Support was added for dragging edges in nested instances.
-
Inspectors were updated to ensure they are cleaned up when the port they are inspecting is removed from the dataset, or the node/group which the port they are inspecting belongs to has been removed from the dataset.
-
Surface Drop manager was updated to not assign active/hover classes to nodes and groups in the canvas when
allowDropOnNodeorallowDropOnGroupis set to false. -
Events bound on a Surface via
bindModelEventsare invoked in a timeout, which better isolates event binding behaviour from the Surface's lifecycle. -
ControlsComponent consumes events it has handled instead of allowing them to bubble.
6.20.0
April 8th 2024
- Packaging and js doc updates
6.19.0
April 5th 2024
UPDATES
- Fixed an issue with the Surface component using a Selection as its datasource.
6.18.0
April 4th 2024
UPDATES
-
Fixed an issue with the type of a new port not being set correctly on the Port object via the
addNewPortmethod on a Toolkit instance. -
Fixed an issue whereby dragging multiple nodes causes miniview to fail to update properly in activeTracking mode
-
Fixed issue with Firefox wheel direction being opposite to other browsers
-
Updates to the endpoints and anchor docs
-
Introduced https://apidocs.jsplumbtoolkit.com, a new and improved home for our api documentation.
6.17.0
March 26th 2024
UPDATES
Miniview
-
The miniview now actively tracks when a node/group is being dragged in the related Surface. This behaviour can be switched off via the
activeTrackingflag in the miniview options. -
Using wheel zoom or pinch zoom on the miniview now results in the related Surface zooming in on the point that maps to where the user is zooming on the miniview. Prior to 6.17.0 the related surface would be zoomed in on the last place zoomed on the surface itself.
-
Nodes/groups can be clicked in a miniview and the related Surface will pan to center the clicked node/group. This behaviour is switched on by default and can be switched off via the
clickToCenterflag in the miniview options.
6.16.0
March 25th 2024
UPDATES
-
We've made a major improvement to orthogonal connector path editing, for which a picture is definitely worth a thousand words, so we'd recommend checking out either the Flowchart builder starter app, the documentation about orthogonal connector path editing, or the 6.16.0 release announcement. In a nutshell, it's now far harder for a user to inadvertently get the UI into the situation that a connector doubles back onto itself underneath a vertex, which makes for a more intuitive experience.
-
It's no longer necessary to declare the
BaseNodeComponentorBaseGroupComponentmixin when using the Vue2 or Vue3 integration packages. These mixins are automatically added by JsPlumb if not specified in your component.
MISCELLANEOUS
- Several events that were previously fired by the UI layer but not consumed by the Surface have been removed, as have their associated constants.
- The UI rendering layer's "lists" package has been removed. This package was part of the Community edition and was not exposed via the Toolkit API.
6.15.0
February 18th 2024
UPDATES
-
When a new node is dropped onto some existing node via the drop manager, the
onVertexAddedcallback onSurfaceDropManagernow passes back information about the vertex on which the new node was dropped. -
Support for the
onVertexAddedcallback was added toShapeLibraryPalette -
Added new
panWithMetaKeyoption to Surface render params.
6.14.0
February 16th 2024
UPDATES
- Added support for optional
cornerRadiusto Segmented connector. - Fixed issue with path editor incorrectly trying to edit an edge that had been aborted by a beforeStart interceptor.
2.50.0
February 2nd 2024
- This is a re-release of the last version in the 2.x branch (2.4.6), upgraded with support for Angular 16+.
6.13.0
January 31st 2024
UPDATES
- Added a fix for a very specific orthogonal geometry loading issue, involving nodes in a straight line that are close together.
- Updated
setPanmethod to fire apanevent.
6.12.0
December 28th 2023
UPDATES
- Fixed an issue with the surface's
destroymethod when a background image was in use. - added
autoSaveTypeoption to Surface, allowing you to specify which exporter to use when auto save is switched on - added optional
typetoAutoSaveconstructor, allowing you to specify which exporter to use when saving.
BREAKING
- The
exportDatamethod no longer writes aportssection into the output. You can uselegacy-jsonas thetypewhen exporting data if you still need this, but in 7.x that will be removed.
IN OTHER NEWS
We're continuing our internal refactoring to remove duplicated and unnecessary code, with this release seeing several key methods abstracted and pushed down to the UI core.
6.11.0
December 20th 2023
NEW FUNCTIONALITY
-
Added support for exporting a Path or Selection (including the current selection for some Toolkit instance) to an SVG/PNG/JPG.
-
New layout GridLayout added. This layout places elements into a grid, optionally with a fixed number of rows or columns, and with the ability to align items to the left/top/bottom/right of each cell.
-
Group size preview pane shown when dragging an element inside an elastic group is now displayed on ancestors of the group if they are also elastic.
-
Added the ability to run an ad-hoc layout on a group, via the
adHocGroupLayoutmethod on a surface. -
Support for setting node/group sizes from the model has been added, including support for specifying default node/group sizes in the event that the vertex data does not contain size information. Read more about this in our docs - https://docs.jsplumbtoolkit.com/toolkit/6.x/lib/nodes-and-groups#setting-nodegroup-size
UPDATES
- Internal updates to React integration to improve performance and reduce code duplication.
- Refactoring of various positioning methods to remove duplicated code
- Improvements to group auto sizing when nested groups are expanded or collapsed.
BREAKING
- React integration no longer supports setting
asynchronousto false on theJsPlumbToolkitSurfaceComponent. Asynchronous is mandated.
6.10.0
December 10th 2023
In 6.10.0 we have given group rendering an overhaul, adding some nice new features and fixing a few minor issues with the existing features. We've also updated the code to play nicely with Svelte Kit SSR, and added a couple of useful features to the Surface.
NEW FUNCTIONALITY
-
New flag
elasticavailable for group rendering. An elastic group shrinks and grows as the nodes/groups inside of it are dragged around. -
Added new
panFilteroptional function to Surface options, allowing you to control at runtime whether or not panning should be enabled. -
Added support for optional
minSizeparameter in group definitions in the view. This is of typeSize. -
Added support for optional
paddingparameter in group definitions in the view. WhenautoSizeis set on a group, this padding will be set around the child nodes/groups of an auto sized group. Default value is 0. -
Added support for optional
allowShrinkFromOriginflag on group definitions in the view. Implicitly true whenautoShrinkorautoSizeis true, you can set this to default if you don't want your groups to be able to shrink from the left/top edge. -
When dragging a child element from a group, the parent group is assigned a CSS class of
.jtk-drag-original-group. You can attach a z-index rule for this class to ensure that nodes/groups you drag from a given group will appear on top of any target group. -
Added
setEnabled(boolean)method to the Snaplines plugin, allowing you to enable/disable the plugin at runtime. -
Added support for passing in styles to SVG exporter, for inclusion in a
styleelement in the SVG export.
UPDATES
-
Improvements to orthogonal routing to handle vertical alignment in Hierarchy layout
-
Updates to the browser UI core code to fix a couple of issues that were causing the code to fail to load in SvelteKit SSR.
-
The behaviour of
autoShrinkandautoSizehas been improved to support shrinking a group from its left/top edge where applicable. Previous versions of the Toolkit could only shrink a group from its right/bottom edges. -
Fixed an issue with group auto size when an element is dragged into the negative axis. Previous versions of the Toolkit would size the group to fit the new content bounds but leave the dragged element hanging out of the group. In 6.10.0 the group is shifted to adjust for this.
-
Several improvements were made to the interaction between a Toolkit instance and its associated undo/redo manager, to ensure that no stray commands are tracked by the undo/redo manager during data load/append.
BREAKING
-
The
maxSizeoption to group definitions is now aSizeobject, with awandhproperty, instead of an array of[w,h]. -
autoSizeswitches onautoShrinkby default now. Consider just usingautoGrowif this is not what you want. -
When
autoSizeorautoShrinkis set, groups may now adjust their left/top edges to fit the content (taking into account anyminSizeset on a group). You can setallowShrinkFromOrigin:falseto suppress this behaviour. -
When dragging an element that is a child of a group, the original group is now assigned
.jtk-drag-activeand.jtk-drag-hoverCSS classes, where in previous versions it was not. We think this provides a better experience for users but if you prefer the old behaviour you can use the fact that the.jtk-drag-original-groupclass is now added to the parent group to setup rules to mimic the old behaviour.
IN OTHER NEWS
A number of internal code changes have been made in 6.10.0 to reduce code duplication. The Toolkit edition, up until a few versions ago, used the Community edition as an external dependency, which meant that certain constructs and responsibilities were duplicated. The Community edition has now been ingested into the Toolkit edition's codebase and little by little we are refactoring to remove these duplicates.
6.9.2
November 30th 2023
UPDATES
- Packaging updates
6.9.1
November 24th 2023
UPDATES
- Updates to React integration to better support Next.js
- Updated the wheel listener to check for existence of
documentbefore testing for available event (SSR fix for Next.js)
6.9.0
November 22nd 2023
BREAKING
-
The Community ingest code has been removed. The Community and Toolkit editions in fact diverged several versions back and this code was likely not working in many scenarios. No Toolkit licensees use(d) this code.
-
Constant
TYPE_CONNECTOR_SEGMENTEDwas renamed toCONNECTOR_TYPE_SEGMENTED
NEW FUNCTIONALITY
- Support for generating edge routing information was added to the Hierarchy layout.
- New plugin
edgeRoutingadded. This plugin can ingest the edge routing information generated by a Hierarchy layout and adjust the routes of the edges in the UI, with support for separated orthogonal, bus orthogonal and direct line modes. - Support for the
numberinput type was added to Dialogs - Support for the
numberinput type was added to Inspectors
UPDATES
- A fix was added to the Orthogonal connector's geometry import routine to catch an unexpected formatting error in the geometry.
6.8.2
November 9th 2023
NEW FUNCTIONALITY
-
Added support for
defaultSizeto node/group definitions. Allows you to fix the size for a given vertex type without requiring that the values be in the vertex's backing data. -
Added support for
nodeSizeto UI defaults. This is a fallback for the case that your vertices need to be rendered with a specific width/height but the values are not necessarily going to be available in the backing data.
UPDATES
- Fixed an issue with loading
hierarchical-jsonover ajax - the content type was not correctly recognised and the data not parsed to JSON.
6.8.1
November 8th 2023
NEW FUNCTIONALITY
- The
ImageExporterclass now supports an optionalwidthorheightfor the exported image. Width takes precedence; the aspect ratio of the underlying content is always maintained. - Added optional
onShowandonDimensionsChangedcallbacks toImageExporterUI. - Added the ability to
ImageExporterUIto specify a list of sizes from which the user should be able to choose for their exported image.
6.8.0
November 4th 2023
NEW FUNCTIONALITY
- Shape libraries now support
defs- snippets of SVG that you can declare in the header of a shape set and reference in the individual templates. This reduces bloat and increases readability.
UPDATES
- Improvements to the hierarchy layout's crossing stage to reduce the chance of overlapping edges
- Improvements to SVG/PNG/JPG export UI
- Improvements to SVG export output: edges are drawn first in the SVG so that nodes will be placed on top in non-browser settings.
6.7.2
October 30th 2023
UPDATES
- Fixed an issue writing attributes to the
xlinknamespace in the vanilla template engine - Updated template parsing code to better handle extraneous whitespace.
- Improvements to the preview view of the svg/png/jpg export code
- Updated jsdocs for Vue 2 and Vue 3 integration packages
- Added the ability to register a Surface on Vue 2 and Vue 3 manually - allowing you to use vanilla templating inside of a Vue app.
BREAKING
- The order of arguments in the
fixElementmethod has been switched from(el:Element, constraints:FixedElementConstraints, pos:PointXY)to(el:Element, pos:PointXY, constraints?:FixedElementConstraints). This better reflects the fact thatconstraintsis an optional argument whereasposis not.
6.7.1
October 25th 2023
UPDATES
- Added support for
initialSetparameter to thejtk-shape-palettecomponent in the Angular integration. - Added support for
initialSetparameter to theShapeLibraryPalettecomponent in the React integration. - Added support for
initialSetparameter to theShapeLibraryPlugincomponent in the Vue 2 integration. - Added support for
initialSetparameter to theShapeLibraryPlugincomponent in the Vue 3 integration. - Fixed issue with extracting value from SELECT on change in inspectors
6.7.0
October 19th 2023
NEW FUNCTIONALITY
-
New plugin
Snaplinesadded. This provides your users with visual cues about the alignment of the elements in their UI. -
Added a new shape set - basic shapes. This includes things like rectangles, ellipses, triangles, hexagons, octagons etc. We've added these to the Flowchart Builder starter app.
-
The surface component now supports an
editablePathsflag, which, if set, sets up a path editor internally and allows you to call methods on the Surface directly to edit paths. It also ensures the path editors are included and will not slip through any tree shaker. -
The drawing tools plugin now supports a
constrainGroupsflag, which, if set, will prevent the group from being resized to such a point that any of its child members are out of the viewport.
UPDATES
-
Fixed an issue with the grid background plugin where if any elements were positioned in the negative x or y axis the surface's clamping was computed incorrectly.
-
The drawing tools plugin will not now resize a collapsed group.
-
Improvements to API docs to remove a bunch of internal members.
-
Some CSS classes were added for basic styling of a shape library palette.
-
The shape library palette takes an optional
initialSetparameter, allow you to specify an initial shape set to show and hide the others. -
When a single shape set is shown, the shape library palette doesnt show its title
6.6.5
October 13th 2023
NEW FUNCTIONALITY
- Added
ElementDraggerhelper class - use this to configure any DOM element that is not part of your canvas to be draggable. - Added a new starter application - "Neighbourhood Views" - showing how you can use the Toolkit to render dynamically changing selections.
UPDATES
- Fixed an issue in the Svelte integration whereby a missing component mapping could cause an error.
- Fixed an issue with the
centerOnmethod that was introduced by some refactoring in 6.6.4. - Added support for
getRootNode()method onHierarchyLayout, allowing you to dynamically specify the root node each time the layout is run. - Improvements to Hierarchy layout placement when the dataset consists of a set of unconnected nodes
6.6.4
October 10th 2023
UPDATES
-
Added
cacheTemplates:booleanflag toVanillaInspector. In some cases you'll want to regenerate an inspector template based upon dynamic values in the object being inspected, and for that you'll want to turn the template cache off. -
Improved the way the canvas animates in response to changes in zoom and position. Now uses
requestAnimationFramefor that full 60 FPS experience. -
Added new 'Orgchart' starter application
6.6.3
October 4th 2023
UPDATES
- Fixed an issue in the inspector whereby edits were lost when the Toolkit's current selection is cleared
- Updated inspector to commit values after enter keypress on text inputs and text areas
- Fixed a sizing issue with the background element of an SVG text overlay
- Added support for
onMaybeClearto the React controls component - allows an alternative to the window alert confirming dataset clear.
6.6.2
September 26th 2023
UPDATES
- Added attributes to Custom overlays to support auto rotation. See the overlay docs for more information.
6.6.1
September 20th 2023
UPDATES
- Added
dominant-baseline:middleto labels rendered by shape libraries.
6.6.0
September 20th 2023
NEW FUNCTIONALITY
-
Support for SVG/PNG/JPG export for Surfaces that are using a ShapeLibrary was added.
-
The Angular service was augmented with new methods to support exporting to SVG/PNG/JPG
-
The ShapeLibrary component now supports rendering labels to shapes as part of their SVG element.
-
A new flag
useHTMLElementis supported on Label overlays. Setting to false will result in the Toolkit using an SVGtextelement for the label overlay, rather than an HTML element. -
A new flag
useHTMLLabelwas added to edge definitions, which you can use to override the new default behaviour of using an SVG text element for the default label.
BREAKING
-
The ShapeLibraryPalette no longer registers a
jtk-shapetag on the associated Surface. Instead, the shape library needs to be passed in the render options to the Surface. See shape library documentation for details. -
When you specify a
labelin an edge type, the Toolkit now creates an SVGtextelement for it, rather than an HTML element. -
By default, hover events are now switched off in the UI layer. For a full discussion of the reasoning behind this, search our documentation at https://docs.jsplumbtoolkit.com for "hoverEvents". You can switch them back on by setting
hoverEvents:truein your render params.
UPDATES
- Fixed an issue with the lasso plugin that would cause it to fail on devices with touch + pointer input methods.
- Fixed an issue whereby a
cssClassdefined on an edge mapping would not be applied to a newly created edge.
6.5.0
September 3rd 2023
NEW FUNCTIONALITY
-
A new connector type -
Segmented- has been added. This connector consists of a set of straight line segments, and can be smoothed to a set of bezier curves. -
A path editor for the
Segmentedconnector type has been added.
UPDATES
-
Orthogonal connector editor automatically trims any supplied geometry after load, to ensure the internal geometry is in a format that the editor can manage.
-
Fixed an issue whereby path tracing between groups was failing.
-
The
jsplumbtoolkit-connector-editors.cssstylesheet was refactored slightly, to introduce common base classes for edge handles, and to use CSS variables. -
The controls component now detects the existence - or otherwise - of a Lasso plugin on the associated Surface, and does not draw the mode change buttons if the Lasso is not present.
6.4.1
August 30th 2023
UPDATES
- Further fix for
Orthogonalpath recomputation when stubs are not active. - Fix for group load issue: when a group loaded via the
loadmethod declared it was a member of some group which was not part of the data load but was in the Toolkit, it could not be loaded.
6.4.0
August 30th 2023
BREAKING
- The
alwaysRespectStubsflag defaults to true in the Orthogonal connector now.
UPDATES
- Fix for an issue with recomputing
Orthogonalpath when stubs are not active.
6.3.0
August 4th 2023
UPDATES
- When dragging an edge, the class
jtk-surface-edge-draggingis added to the surface container. - For licensees who hold a team license - 5 seats or more - the ES6 source code is now available as a separate download.
- EdgePathEditor was updated so that it no longer requires
anchorPositionsto be passed in if these are defined on a node/port/group definition in the view.
BREAKING
- Version 2.x is no longer supported.
6.2.15
July 29th 2023
Further packaging updates. No code changes.
6.2.14
July 28th 2023
UPDATES
- Fixed an issue whereby overlays that had been programmatically added to an edge (eg via the edge path editor) would be hidden upon edge update.
- Improvements to packaging for evaluators to include types directory.
6.2.13
July 27th 2023
This release contains only internal updates to packaging. No code changes.
6.2.12
July 25th 2023
UPDATES
- EdgePathEditor was updated to ignore edges loaded programmatically via the
loadmethod of the Toolkit. Edges loaded in this way already have geometry set and do not need to be updated. - Updates to Orthogonal connector to better handle node drag when initial path consists of a single horizontal or vertical segment.
6.2.11
July 19th 2023
BREAKING
- The EdgePathEditor now defaults to
truefor theactiveModeoption. Although this is a breaking change it in fact brings the behaviour of the path editor more into line with what people expect: any new edge that is dragged automatically has a geometry attached to it, meaning if the dataset is exported without the edge being edited it will be reinstated with the same path.
UPDATES
- A fix was added to correct an issue introduced by the change to the EdgePathEditor in 6.2.10. Geometry is now correctly written to an edge that has been dragged by the user when
activeModeis true (which, as mentioned above, is now the default).
6.2.10
July 14th 2023
BREAKING
- The
katavorio-drag-no-selectclass is no longer added to the document body during element drag. There was no corresponding style declared in the default CSS stylesheet, so it is unlikely this class is being used by anyone.
UPDATES
- Inspectors were updated to ensure they close themselves if the object they are currently displaying is deleted from the dataset.
- An update was made to the EdgePathEditor to ensure that edge geometry is written correctly when
activeModeis set to true. - In the base port component and the miniview component in the React integration, the overridden
propsandstateclass members were removed, as their presence was causing React to report a warning in the console.
6.2.9
June 28th 2023
UPDATES
- Added support for
addHelperClassesflag in SurfacedragOptions. Defaults to true. When false, prevents the Surface from adding classes to the canvas to indicate an element is being dragged.
6.2.8
June 23rd 2023
UPDATES
- Update generic type parameter bounds in
ShapeLibraryPaletteand Angular service shape library methods to satisfy strict TS builds.
6.2.7
June 23rd 2023
UPDATES
- Update
ShapeLibraryImplgeneric type parameter bounds to satisfy strict TS builds.
6.2.6
June 21st 2023
UPDATES
- update controls component to set state attributes on its rendered root element rather than the container in which it resides.
6.2.5
June 20th 2023
UPDATES
- added
jsplumbtoolkit-edge-type-picker.cssstylesheet - add
visibility:visible !importantto edge path delete button overlay.
6.2.4
June 20th 2023
GENERAL
- Updated EdgeTypePicker to repaint itself after a window resize event, to ensure edges are painted in the right place.
- added ControlsComponent, a component from our demonstration apps that might be useful for others.
- fixed issue in connector editor package where re-editing an edge that it was already editing would cause any extra overlays to be removed.
- fixed issue in bezier connector editor where control points were being dragged at twice the rate the mouse was moving.
BREAKING
- The
jsplumbtoolkit-connector-editors-orthogonal.cssandjsplumbtoolkit-connector-editors-bezier.cssstylesheets were removed. The styles contained in both of those stylesheets exist in thejsplumbtoolkit-connector-editors.cssstylesheet.
6.2.3
June 17th 2023
GENERAL
- Update shape library palette to support configurable
iconSizeproperty.
6.2.2
June 16th 2023
GENERAL
- Updates to custom tag registration to allow shape libraries to be used without a ShapeLibraryPalette.
6.2.1
June 16th 2023
GENERAL
- The default number of iterations for the
ForceDirectedlayout was increased from 5 to 15. - Updated JS doc for
ShapeLibraryImpl - Updated custom tag renderer to remove expectation that a
renderedand/orupdatedfunction would always be provided.
6.2.0
June 16th 2023
GENERAL
-
Improvements to support for tree shaking
-
The drop manager now adds a
jtk-drag-drop-currentclass to the element currently being dragged -
Several enhancements were made to the drawing tools plugin - placement of new nodes is now correct when the surface has a zoom level of anything other than 1, and if the surface has a grid applied this is also honoured.
-
The default styles for edge path editors no longer contain a rule for painting the edge path to a specific color. For applications in which the user has control over the edge color this is a better experience. For users who wish to add this functionality that can be done via the inclusion of a CSS rule - see documentation on CSS.
-
Updates to the default template engine to ensure that elements written by custom tags are correctly updated when their vertex is updated.
-
The default number of iterations for the
ForceDirectedlayout was reduced from 50 to 5.
NEW FUNCTIONALITY
-
A new module
browser-ui-shape-librarywas added. This package contains various helper components for working with SVG shapes, for applications such as flowchart builders, entity relationship diagrams, etc. For a full discussion of the capabilities of this module, see https://docs.jsplumbtoolkit.com/toolkit/6.x/lib/shape-libraries. -
Support for the
browser-ui-shape-librarymodule was added to the Angular, Vue2, Vue3, React and Svelte integrations. -
A new module
browser-ui-inspectorwas added. This contains some support code for implementing form-based object inspectors that integrate tightly with a Surface/Toolkit instance. For a full discussion of the capabilities of this module, see https://docs.jsplumbtoolkit.com/toolkit/6.x/lib/inspectors. -
Support for the
browser-ui-inspectormodule was added to the Angular, Vue2, Vue and React integrations. -
Added the
canvasDropFiltertoSurfaceDropManager. The parent classDropManageralready supported this but it was not exposed on theSurfaceDropManagerprior to 6.2.0. -
An optional
dragSizeparameter can be supplied to the drop manager, to set the size of nodes/groups that are being dragged. -
Support for a
modelEventsobject has been added to the Surface's constructor. Instead of having to register model events after the fact you can now supply them with your render parameters. -
The concept of 'mode' was added to selections: you can specify that a given selection may only contain one type of object (eg nodes, groups or edges), or that it can contain a mix. For more information see the documentation at https://docs.jsplumbtoolkit.com/toolkit/6.x/lib/selections#selection-mode
-
Edge editors now snap anchor placeholders to the closest anchor when the user is relocating an anchor. Previously the placeholder would not be snapped until the use released the mouse button. The previous behaviour can be reinstated by setting
snapToAnchors:falsein the options you pass to thestartEditingmethod. -
When dragging a new edge, the Surface element will now honour a
typespecifier returned from abeforeStartConnectinterceptor. In previous versions thetypewould only be honoured once a new connection had been established. For more information see https://docs.jsplumbtoolkit.com/toolkit/6.x/lib/interceptors#beforestartconnect. -
Support for 'fragments' was added to custom tags in the default template engine. This is more of an internal feature, but could be leveraged by advanced users of the Toolkit. See documentation on templating for further information.
-
Label overlays now have a
jtk-label-overlayclass added to their element. -
The default CSS stylesheet was updated with a
visibility:hiddenrule for.jtk-label-overlay:empty. For label overlays on which the label's value is currently an empty string, this will hide the overlay. -
The CSS for the "controls" component that we ship along with each of the library integrations was copied out from
jsplumbtoolkit-demo-support.cssand intojsplumbtoolkit-controls.css, and the various selectors were updated to be more specific.
BREAKING
-
Simple edge styles are now enabled by default on the Surface component. They can be switched off via
simpleEdgeStyles:falsein your render options. -
The
PanZoomwidget, which is used internally by theSurface, has been decoupled from the Surface and its constructor parameters have been updated. This will only be an issue for licensees who use thePanZoomstand alone. -
The
jsplumbtoolkit.cssdefaults stylesheet was updated to use CSS variables. This is only really listed as a 'breaking' change out of an excess of caution. There are very few browsers in use nowadays that do not support CSS variables. -
The
importantmodifier was removed from the default style for the.jtk-surface-selected-elementclass, which is applied to vertices that are part of the Toolkit's current selection.
BUGFIXES
- Fixed issue with anchor placeholder not being centered correctly when editing an edge.
- Fixed issue with
Hierarchylayout where certain combinations of unattached roots and multiple parents could cause the layout to fail, due to a cache not being cleared.
6.1.1
May 12th 2023
- Updates to build for evaluators
6.1.0
May 11th 2023
-
Angular integration is now built as an Ivy lib (necessary in order to support Angular 16)
-
Hierarchylayout has been updated to support centering child nodes with respect to their parent, mimicking the behaviour of theHierarchicallayout. -
Hierarchicallayout is now marked deprecated. UseHierarchyinstead.
BREAKING
- Internally, the
Hierarchicallayout no longer uses agetChildEdgeshelper function, but rather agetChildVerticesfunction. This change will only affect those who are using theHierarchicallayout with a custom edge finder. It has no impact on the functionality of the layout itself.
6.0.5
April 18th 2023
- Internal code reorganisation. No functional change.
6.0.4
April 14th 2023
- Fixed an issue in the Community edition where endpoints to set to invisible would be repainted under certain revalidation scenarios.
6.0.3
April 5th 2023
- Packaging updates for evaluation builds
6.0.2
April 4th 2023
- Fixed issue with the packaging of the Vue integration.
6.0.1
April 4th 2023
- Added bezier and statemachine connectors to
@jsplumbtoolkit/browser-ui
6.0.0
April 4th 2023
BREAKING
-
Support for the original templates syntax (where variable interpolations are of the form
${...}) has been dropped, throughout the Vanilla toolkit and the dialogs. The code from the previoustemplates-2,dialogs-2andbrowser-ui-vanilla-2packages has been retained in the@jsplumbtoolkit/browser-uipackage, and the code fromtemplates,dialogsandbrowser-ui-vanillahas been dropped. -
The
Springlayout has been removed. UseForceDirectedinstead.
In order to support the single @jsplumbtoolkit/browser-ui package, several factory methods were renamed/removed:
-
newInstance(surface)in previous@jsplumbtoolkit/browser-ui-animremoved. Usenew SurfaceAnimator(surface)instead. -
createManagerin previous@jsplumbtoolkit/droppackage is now exposed ascreateDropManagerin@jsplumbtoolkit/browser-ui -
createSurfaceManagerin previous@jsplumbtoolkit/droppackage is now exposed ascreateSurfaceDropManagerin@jsplumbtoolkit/browser-ui -
newInstance(surface:Surface, options?:ConnectorEditorOptions)from previous@jsplumbtoolkit/connector-editorsmethod removed - usenew EdgePathEditor(surface:Surface, options?:ConnectorEditorOptions)instead. -
initialize()method from previous@jsplumbtoolkit/connector-editors-bezieris now exposed asinitializeBezierConnectorEditors()on@jsplumbtoolkit/browser-ui. -
initialize()method from previous@jsplumbtoolkit/connector-editors-orthogonalis now exposed asinitializeOrthogonalConnectorEditors()on@jsplumbtoolkit/browser-ui. -
newInstance(params:DialogsOptions)from the previous@jsplumbtoolkit/dialogs-2package has been removed. To instantiate Toolkit dialogs now, usenew Dialogs(params). -
The
HORIZONTALandVERTICALaxis identifiers from theHierarchicalLayouthave been moved into the enumHierarchicalLayoutOrientations. -
The code from the related
-droppackage for each library integration (@jsplumbtoolkit/browser-ui-angular-dropetc) has now been pulled into the library integration's main package
5.13.7
March 28th 2023
- Added support for injecting props into components in the Vue2/Vue3 integration packages.
5.13.6
March 21st 2023
- Update to the fix applied in 5.13.5
5.13.5
March 18th 2023
- Fixed issue with endpoint cleanup after aborted connection drag
5.13.4
February 26th 2023
- Packaging updates for integrations
5.13.3
February 18th 2023
- Packaging updates for the layout-hierarchy package
5.13.2
December 7th 2022
- Updated the lasso plugin to remove a global reference to
documentand instead use a lazy init method
5.13.1
November 28th 2022
BREAKING
- The
getAllEdgesmethod of theGroupclass no longer returns edges connected to child vertices of the group, instead behaving exactly asgetAllEdgesdoes onNode.
UPDATES
Groupnow has the methodgetInternalEdges, which returns edges connected to child vertices of the group.- Improvements to the placement stage of the Hierarchy layout when
invertis set to true. - added support for
gatherUnattachedRootsflag on the Hierarchy layout - see documentation for discussion.
5.12.6
November 9th 2022
- Internal refactoring of the templates-2 package
5.12.5
November 8th 2022
- Updates to Angular overlay handling when an edge factory is in place.
5.12.4
November 7th 2022
-
Updated Angular overlay handler to ensure correct initialisation when new edges are dragged.
-
Added support for Angular's
OnPushchange detection to node/group/port/overlay components.
5.12.3
October 27th 2022
-
Updates to community edition event generator to directly invoke event handlers instead of attempting to bind a context to them. This change is transparent to Toolkit users.
-
Update to Angular overlay to prevent an exception being thrown when the overlay is present on a connection that is being dragged (meaning that there is not yet an associated edge in the model)
5.12.2
October 12th 2022
- Improvements to Arrow overlay rendering
5.12.1
October 7th 2022
- updates to packaging for the background plugin
- addition of methods to hide/show backgrounds in the background plugin.
- ensure copy/paste of edge correctly clones the edge's data
5.12.0
September 22nd 2022
BREAKING
- In the generated grid background,
showMinorLinesis nowshowTickMarks, andminorLinesPerCellis nowtickMarksPerCell.
UPDATES
-
Fix for an issue where the
node:move:endevent of the Surface did not contain all of the elements in the drag group. -
Added support for dotted background in generated grid background, via
gridTypeparameter ("dotted" or "lines"). Default is for lines. -
Added
dotRadiusandtickDotRadiusoptions to generated grid background, for use with GridTypes.dotted.
5.11.3
August 23rd 2022
- Improvements to the documentation
- Addition of
setDraggablemethod to Surface, to set the draggable state of individual vertices.
5.11.2
August 18th 2022
- Refactoring "simple edge styles" (color/line width) and edge labels. It is now possible to set an edge's color, line width, label (and its location) directly from the backing data for the edge.
5.11.1
August 18th 2022
- Refactoring "simple edge styles" (color/line width)
5.11.0
August 17th 2022
UPDATES
-
Added code to catch and report circular references in view dependencies
-
Updated the view code to support multiple parents for a given node/group/edge/port definition
-
Added the concept of "simple edge styles" - automatically mapping a few key properties from each edge's backing data to the appearance of its corresponding connection in the UI. See documentation for more details.
-
Added the concept of a "property mapper", an alternative to the existing concept of edge styles, which maps specific property values in edge data to appearance. See documentation for more details.
5.10.9
August 16th 2022
BREAKING
- the background plugin no longer assumes a type of "simple" by default: you have to always supply a type.
UPDATES
- grid backgrounds now have defaults for fill/stroke written into the svg.
- fixed issue with background plugin CSS stylesheet not being packaged.
5.10.8
August 16th 2022
- Internal refactoring of background plugin to expose type members that can be used when configuring backgrounds in an ES6/TS development environment, to avoid the code being omitted through tree shaking.
5.10.7
August 15th 2022
- Added support for generated grid backgrounds.
5.10.6
August 12th 2022
- Fixed a couple of issues with edge placement in nested nodes/groups in the underlying community edition
- Fixed an issue with the tiled background layer in the background plugin that was preventing it from rendering.
- Reinstated the
zoomToBackgroundmethod on the Surface widget - Added
supportLegacyConnectorDataflag toOrthogonalConnectorOptions. This offers a means for people migrating from 2.x to load datasets where there is path data for Orthogonal connectors in the 2.x format.
5.10.5
August 5th 2022
- Update to the Angular component overlay code to fix an issue that occurred when an edge deletion was undone via
undo().
5.10.4
August 3rd 2022
- Added support to the Angular integration for using Angular components as overlays.
5.10.3
July 25th 2022
- Minor internal refactoring. No functionality change.
5.10.2
July 22nd 2022
- Minor internal refactoring. No functionality change.
5.10.1
July 21st 2022
UPDATES
- Lasso plugin now updates the Toolkit's selection, rather than the Surface's drag selection, allowing the Surface to decide whether or not selected elements should be added to the drag selection.
5.10.0
July 21st 2022
UPDATES
- The Surface widget no longer by default adds an element in the Toolkit's current selection to the underlying drag selection, instead maintaining a separate drag group for selected elements. What this means is that if you have a few elements selected and you drag one that is not selected, the selected elements will not also be dragged.
5.9.4
July 19th 2022
- Upgraded to Typescript 4.x.
5.9.3
July 18th 2022
- Packaging updates. No code change.
5.9.2
July 18th 2022
UPDATES
-
The surface widget now supports an instantiated Decorator in its
decoratorsconstructor parameter. This can be useful in situations where your code needs to work closely with the decorator's behaviour. -
The args to the
decoratemethod in a Decorator are now typed asDecorateParams(no changes, just the introduction of this type definition) -
On a device that support touch events, the container element for a Surface is now assigned a
jtk-surface-touch-devicecss class. The purpose of this is to allow you to style differently for touch devices, for instance by making visible elements that are only visible on hover on a device supporting pointer events. -
On a device that supports pointer events, the container element for a Surface is now assigned a
jtk-surface-pointer-devicecss class.
Note that
5.9.1
14 Juillet 2022
UPDATES
- The
constrainFunctionthat can be passed in thedragOptionsto a Surface can now return null, indicating that for the given tick of the drag lifecycle there is no suitable place for the element and the element should not be moved from its previous position.
5.9.0
July 7th 2022
BREAKING
-
Backgrounds for the Surface element have been moved to a separate plugin -
@jsplumbtoolkit/browser-ui-plugin-background -
In the underlying Community edition, endpoints are no longer wrapped in a
divelement; instead theirsvgelement is appended directly to the container. This isn't a major change but may require some minor CSS updates.
UPDATES
-
The
jtk-endpointelement has been updated to no longer require that adata-jtk-portattribute be set. This enables you to declaratively register multiple endpoints that are mapped to the vertex itself in the data model rather than on logical ports on the vertex. -
The
onCanvasDropcallback ofDropManageris now passed the size of the dropped element, and also the related mouse event. -
You can now pass a
constrainFunctionto the Surface'sdragOptions, which will be invoked whenever an element is dragged, allowing you to control where elements can be dragged. -
SurfaceDropManagerandDropManagerhave received a few improvements:-
When dragging an element onto a Surface, the element being dragged will, by default, be scaled so that it appears at the same size as it will be when it is dropped (by matching the Surface's zoom). This behaviour can be switched off if desired.
-
When the underlying Surface has a
constrainFunctionthat controls where its elements can be dragged, by default this function will also be used to control element dragging when the new element is in the Surface's viewport. This behaviour can be switched off if desired -
You can pass an
elementGeneratortoSurfaceDropManagerandDropManager, which is a function the Toolkit will use to get the element to drag, rather than cloning the drag element.
-
5.8.3
June 16th 2022
UPDATES
- Updated React integration to fix an inconsistency in the way state was cleared after the data model is emptied via
clear(). A warning was reported by React in the console.
5.8.2
June 15th 2022
UPDATES
- fix for an issue in the node/group factories whereby a transaction could be left open if the user did not invoke either the continue or abort callback.
5.8.1
June 14th 2022
UPDATES
- added support for 'id' attribute on
SurfaceComponentin Svelte integration. - fixed an intermittent issue with updating templates in the
templates-2package: when an interpolated value was initially an empty string, the value could not be rewritten to boolean false.
5.8.0
June 9th 2022
BREAKING
- Surface no longer fires
EVENT_DATA_LOAD_ENDorEVENT_DATA_LOAD_START. It is unlikely these event subscriptions were in use, and they are a pass-through of the same event from the underlying Toolkit. If you want to listen for these events and you currently do so on the Surface, just bind to them on the Toolkit instead. - Drag groups have been extracted to a separate plugin
UPDATES
- Surface now fires
EVENT_RENDER_STARTandEVENT_RENDER_ENDat the beginning and end of the rendering of a set of data.EVENT_RENDER_ENDdoes not fire until every vertex in the dataset has been rendered (taking into account asynchronous rendering) - Updates to Vue 3 to better integrate with the asynchronous paint mechanism (in particular, when bulk loading and then running a layout)
- Updates to React to better integrate with the asynchronous paint mechanism in React 18 (in particular, when bulk loading and then running a layout)
- Added support for 'temmplate macros' to the
@jsplumbtoolkit/templates-2package. This bringstemplates-2up to par with@jsplumbtoolkit/templatesin terms of the complexity supported in injected values.
NEW PACKAGES
@jsplumbtoolkit/browser-ui-plugin-drag-groupscontains the code that lets you manage "drag groups". See https://docs.jsplumbtoolkit.com/toolkit/5.x/lib/plugins#drag-groups
5.7.1
June 1st 2022
UPDATES
- Update to ForceDirected layout to better support positioning newly added nodes
5.7.0
June 1st 2022
UPDATES
- Reinstated support for
directRendermode, which has not been properly supported in 5.x as of yet.
NEW PACKAGES
- added new
ForceDirectedlayout. This is a rewrite of the originalSpringlayout, with several improvements and a shorter run time. Users of theSpringlayout are recommended to switch to this layout from 5.7.0 onwards. Available in the package@jsplumbtoolkit/layout-force-directed.
5.6.5
May 24th 2022
UPDATES
- Updates to the Spring layout to ensure that running the spring layout over and over on a given dataset wont move nodes whose position has already been calculated (regardless of whether the position was initially in the model or calculated by the layout). This also applies when a new node is added to the dataset - existing nodes will not be moved.
5.6.4
May 21st 2022
UPDATES
- Added the related ComponentRef to the arguments passed to the
vertexEventcallback exposed by the Surface element in Angular integration.
5.6.3
May 20th 2022
UPDATES
- Added optional
toolkitParamsas an Input to the Surface element in Angular integration.
5.6.2
May 6th 2022
UPDATES
- Updated miniview to render existing dataset if attached after Surface has initially rendered.
- Updated Surface to write positions to model after
relayoutandrefreshif thestorePositionsInModelflag was set to true
5.6.1
May 5th 2022
BREAKING
interceptorssupport removed from theSurfaceobject. This was undocumented and unused, and interceptors are supported by the Toolkit.panDistancemoved fromSurfaceOptionsto thePanButtonsPluginOptionsinterface in the pan buttons plugin.
UPDATES
- Updates to packaging for evaluation versions
- Update to the React integration to fix a rendering issue in React 18 when calling
loadwith JS data during acomponentDidMountoruseEffectinitialiser.
5.6.0
May 3rd 2022
BREAKING
@jsplumbtoolkit/dialogshas now been renamed to@jsplumbtoolkit/dialogs-core, and is a base package for two new packages -@jsplumbtoolkit/dialogsand@jsplumbtoolkit/dialogs-2. If you use@jsplumbtoolkit/dialogscurrently, thendialogs-corewill be automatically imported; the only thing you need to be aware of is that the dialogs CSS file is now indialogs-core, and not indialogs, so any references you have to that will need to be updated.dialogs-2is discussed below.
NEW PACKAGES
@jsplumbtoolkit/browser-ui-svelte
This is an integration package to facilitate using the Toolkit with Svelte 3. Docs are here: https://docs.jsplumbtoolkit.com/toolkit/5.x/lib/svelte-integration
@jsplumbtoolkit/browser-ui-templates-2
This is a rewrite of the default templates package (used by the @jsplumbtoolkit/browser-ui-vanilla renderer, not by the Angular/React/Vue integrations) that addresses, primarily, the fact that in certain sandboxed environments (such as Salesforce Lightning), "strict" mode is enforced and so eval and with - both of which the original templates package uses internally - are not available.
Currently this package is still considered experimental, not having had the same battle testing that the original template package has had, but it has other advantages too, such as using {{...}} instead of ${...} for variable substitution, making it play more nicely with template literals, and the speed with which an update occurs is vastly improved over the original templates package. We encourage licensees to give this new package a try and we invite all feedback.
Detailed information on the differences between this package and the original templates package, as well as instructions for how to use the package with your existing code, can be found here on our docs site: https://docs.jsplumbtoolkit.com/toolkit/5.x/lib/templating-2
@jsplumbtoolkit/browser-ui-vanilla-2
The vanilla Toolkit renderer, but using the new templates package instead of the original templates package. This is the renderer that we use now in all of our demonstration pages. For users of the current vanilla renderer we recommend switching to this package, as the original templates package (and therefore browser-ui-vanilla) is now in a lightweight maintenance mode, and is unlikely to be continued from v6.0.0 onwards.
@jsplumbtoolkit/dialogs-2
This is a port of the original dialogs package that uses the templates-2 package under the hood. Functionally there is no change from the original dialogs package, but the format of the templates you use with dialogs-2 corresponds to the changes in templates-2.
UPDATES
- Parameterised labels in views were updated to support
{{value}}syntax as opposed to${value}. This is to avoid confusion with JS string templates. The previous syntax is still supported for now but won't be as of v6.0.0. - The
beforeConnectinterceptor now takes an optional 4th argument which indicates whether the new edge is a result of user activity with a mouse/touch device, or if it is a programmatic edge addition. - Fixed an issue with the
beforeDetachinterceptor where in some cases thesourceandtargetparameters were empty (although they could be retrieved from the edge that is passed in to that interceptor anyway)
5.5.5
April 5th 2022
UPDATES
- Fixed painting issue in orthogonal connector when a connection is established between endpoints on opposite faces of the same element.
5.5.4
April 5th 2022
UPDATES
- Update Community edition's event manager module to not reference
documentin its root.
5.5.3
April 1st 2022
UPDATES
- Optimising imports in both Toolkit and Community editions. No code change.
5.5.2
March 16th 2022
UPDATES
- Fixed an issue preventing the magnetizer from running ad-hoc with the Spring layout.
5.5.1
March 12th 2022
NEW PACKAGES
- New package
@jsplumbtoolkit/layout-hierarchyadded
This is a new layout that follows a slightly modified Sugiyama algorithm. Unlike the original Hierarchical layout, there is no assumption that any given node will have at most one parent, and consequently this layout typically performs much better on real world datasets than the Hierarchical layout. For more information - and future plans - see the Toolkit documentation.
5.5.0
March 10th 2022
BREAKING
-
Extracted "ui states" from the
@jsplumbtoolkit/browser-uipackage and put them into a plugin in the package@jsplumbtoolkit/browser-ui-plugin-ui-states. This shaves a bunch of Kb off the size of thebrowser-uipackage. Details for how to migrate can be found in the documentation for UI States. -
Several Surface render parameters related to how the mouse wheel is handled, which were marked deprecated in 5.3.0, have now been removed, or rather, moved and renamed:
- wheelZoomMetaKey ->
wheel:{ useMetaKey:... } - wheelReverse ->
wheel:{ reverse:... } - wheelSensitivity ->
wheel:{ sensitivity:... } - wheelFilter ->
wheel:{ filter:... } - wheelPan ->
wheel:{ pan:... } - enableWheelZoom ->
wheel:{ zoom:... }
- wheelZoomMetaKey ->
The default value for each of these parameters is still the same as in previous versions.
NEW PACKAGES
@jsplumbtoolkit/browser-ui-plugin-ui-states, as discussed above.
5.4.1
February 15th 2022
BREAKING
- removed
getPosition(..)method fromSurface. UsegetCoordinates(..)instead. - removed
setVertexPosition(..)method fromSurface. It was a duplicate ofsetPosition(..)
NEW PACKAGES
- Added new
@jsplumbtoolkit/copy-pasteand@jsplumbtoolkit/browser-ui-copy-pastepackages. See documentation for details.
UPDATES
-
Added
activeModeoptional constructor parameter forEdgePathEditor. When set, any new connection that has just been dragged will be marked "edited", meaning the geometry from the initial path is then fixed. This is a useful toggle if you're using ananchorPositionFinderin your code. See documentation for more details. -
fixed possible geometry load issue with Orthogonal connectors in certain circumstances.
-
updated Orthogonal connector geometry load to allow usage with static (ie. not just Continuous or Dynamic) anchors.
5.4.0
February 10th 2022
BREAKING
- Removed support for a
templateRendererdeclaration inside a node, group or port definition in a view. We know of no instances of this capability being used, and if it is needed, it can be handled inside atemplateRendererdeclared on the render params for a Surface.
UPDATES
- Fix for potential recursive loop when elements in Balloon layout have connections to themselves.
- Added support for
anchorPositionFinderinside a node, group or port definition in a view. This provides a means for you to determine the anchor location for the source/target of some connection at drag time. - Added support for
anchorPositionFinderto the connector editor package. Provides a means for you to determine where the source/target anchor of some connection can be dragged to when the connector is being edited.
5.3.11
February 6th 2022
UPDATES
- Added
checkValiditymethod to the dialogs package. - exposed
extractValueFromElementmethod to get the value from a single element to the dialogs package. - Internal refactoring of the connector editors to standardise their drag behaviour with other parts of the Toolkit.
5.3.10
February 4th 2022
UPDATES
- Added support to the dialogs
extractandapplymethods for a custom binder.
5.3.9
February 1st 2022
UPDATES
- Refactored the dialogs internally to extract the DOM binding code for reuse in jsPlumb Toolkit Components.
- Added optional
autoCommitflag to theshowmethod ofDialogs. By default this is true.
5.3.8
January 29th 2022
UPDATES
- Updated the underlying community edition renderer to ensure that a user-provided
anchorcallback in a target selector is honoured.
5.3.7
January 27th 2022
UPDATES
- Updated the drag handler in the underlying community edition renderer to ensure that a user-provided
startcallback cannot override the default drag start behaviour.
5.3.6
January 25th 2022
UPDATES
- Updated the
bindModelEventandonmethods of theSurfaceto handle multiple:not(..)selectors. - Fixed issue with
wheelPan:truein pan/zoom widget not binding the wheel listener. - Updated
setOverlaysVisiblemethod ofSurfaceto take an optional varargs list of overlay ids to operate on.
5.3.5
January 21st 2022
UPDATES
-
Fixed an issue whereby in some circumstances it was possible for a
bindModelObjectcallback to be invoked without a model object supplied. -
added
setOverlaysVisible(Selection|Path|Edge|Array<Edge>, boolean)method to theSurface -
updated the drop manager to support overridden
left/topproperties passed to the node factory callback. -
added optional
onVertexAddedcallback to SurfaceDropManager, which will be invoked whenever a group/node has been dropped onto the canvas and added to the dataset.
5.3.4
January 12th 2022
UPDATES
- Correction of the change in 5.3.3:
jtk-source-hoverandjtk-target-hoverare applied to the elements involved in a connection, not the endpoints.
5.3.3
January 11th 2022
UPDATES
- Reinstated the application of
jtk-source-hoverandjtk-target-hoverclasses to the source and target endpoint for some connection on which the mouse is hovering.
5.3.2
January 10th 2022
- Fixed issue with endpoint hover: when hovering over an endpoint, endpoints at the other end of connections to that endpoint also hover.
- Fixed intermittent issue with multiple definitions on an element that have Continuous anchor definitions with different faces.
5.3.1
December 20th 2021
UPDATES
- added support for
maxConnectionsinaddTargetSelectormethod of Community edition.
5.3.0
December 15th 2021
UPDATES
- Updated the
exportDatamethod to ensure that its output is insulated from the Toolkit's internal dataset - Updated to ensure the
node:move:endevent is fired after any necessary changes to the model. - Added
toJson()toJsPlumbToolkit; you can now callJSON.stringify(someToolkitInstance)to get the same output you'd get fromsomeToolkitInstance.exportData().
5.2.4
December 12th 2021
UPDATES
- Fixed intermittent issue with not all edges being deleted when a group they are attached to is deleted.
5.2.3
December 7th 2021
UPDATES
- Fixed issue with
uniqueEndpointon port definition not being honoured.
5.2.2
December 6th 2021
UPDATES
-
updated the
tracePathmethod in@jsplumbtoolkit/browser-ui-animto set a.jtk-animate-sourceclass on the path source vertex and a.jtk-animate-targetclass on the path target vertex for the duration of the trace. -
fixed issue with
maxConnectionson port definition not being honoured.
5.2.1
November 30th 2021
UPDATES
- Added fix for a node/edge asynchronous rendering issue when using the
dataprop of the Vue3 surface.
5.2.0
November 28th 2021
UPDATES
-
Replaced
Dictionary<T>throughout the codebase withRecord<string, T>. Dictionary had been marked deprecated for a few versions. -
Community edition updated to better handle anchor orientations with dynamic anchors.
5.1.2
November 26th 2021
UPDATES
- Fixed issue with parsing of nested groups via the
loadfunction.
5.1.1
November 26th 2021
UPDATES
- Small change to event registration for connection drag handlers. No functional change but this reduces any lag at the start of a drag.
5.1.0
November 25th 2021
UPDATES
-
compoundis no longer an available flag on the undo/redo parameters passed to a Toolkit constructor. If an edge is deleted as part of a call toremoveNodeorremoveGroup, its deletion is automatically wrapped in a transaction by the Toolkit. But if an edge is deleted independently of a vertex then it has its own undo/redo stack entry. -
wheelFilterwas reinstated.
5.0.0
October 29th 2021
5.x is a rewrite to Typescript, with a focus on modules. This work presented a rare opportunity to perform refactoring for clarity and performance purposes. As the list of changes grew, it was decided to move them out of the changelog and into a dedicated migration guide document.
In 5.x, the Toolkit and Community edition versions will be kept in step: Toolkit: version 5.a.b of the Toolkit always corresponds to version 5.a.b of the Community edition.
2.1.3
11th June 2020
UPDATES
- Minor refactoring to the internals of the Surface when a node is removed. In certain rare circumstances there could be endpoints that did not get cleaned up.
2.1.2
30th May 2020
UPDATES
-
In the Angular integration,
jsPlumbDragDropComponentandjsPlumbSurfaceDropComponentrefactored to beDirectiverather thanComponent. This makes no difference to their operation, but it is more correct conceptually, and also allows you to extend them with your own Directives. -
updated types: added
elementFilteras optional to MiniviewOptions -
added support for
[elementFilter]onjsPlumbMiniviewAngular component -
added
redrawmethod tojsPlumbMiniviewAngular component
2.1.1
19th May 2020
UPDATES
- added
onDemandflag andeditmethod to drawing tools, to enable on-demand attachment of drawing tools instead of via Toolkit selection. - fixed issue in which it was not possible to lasso nodes that were previously in a group that was deleted.
- ensure groups on which nodes are dropped have their layout re-run
- fixed a race condition in the auto save mechanism that could cause incorrect values for nodes previously belonging to a group that has been removed.
2.1.0
10th May 2020
BREAKING
jsplumbtoolkit-vue2.tgznow contains a version of our components that require you to use theVue.use(...)approach to including the library. For more information see https://docs.jsplumbtoolkit.com/toolkit/current/articles/demo-vue2.html#bootstrap
For the time being, the original version of the Vue integration is available in jsplumbtoolkit-vue2-runtime.tgz, but
this will at some point be removed.
UPDATES
- Fixed issue in which a node removed from a group did not have its position updated in the model (when
storePositionsInModelis set to true) - Added
jsplumbtoolkit-testingpackage. This provides a set of helper methods for you to use when testing a UI that includes the jsPlumb Toolkit.
2.0.6
1st May 2020
UPDATES
- upgrade to Community edition 2.13.2
group:addMemberandgroup:removeMemberadded to the list of events that instigate an auto save.- added
contextas an argument to edge factory. This provides all of the context information for the edge being created - source, target, etc. For more information search "edge factory" on docs.jsplumbtoolkit.com. - performance enhancements for large numbers of nodes/edges
2.0.5
27th April 2020
BREAKING
- The internal representation of
templateRenderernow expects it to be an object containing arendermethod and acleanupmethod. If you have a custom template renderer then you need to update it to satisfy this contract. Therendermethod should just be whatever your currenttemplateRendererfunction is.cleanupis expected to perform any deregistration that is required, and also to remove the rendered element from the DOM.
UPDATES
- Fixed issue with miniview ignoring the
wheelReversesetting of its associated surface. - Update Angular, React and Vue integrations to ensure components are destroyed when the Toolkit is cleared (via the
clear()method). - added a
clearbutton to all of the Flowchart demonstrations. - Undo/redo manager clears its history when the related Toolkit is cleared.
2.0.4
14th April 2020
UPDATES
-
Updated all Angular demonstrations to Angular 9 (with aot)
-
Minor updates to internal packaging of Toolkit code
-
Updates to the database visualizer demonstrations:
- separated out
idandnamemembers of columns. Previously, theidof the column was also its name, which was mostly just a conceptual problem, but for the React database visualizer it meant the inclusion of some extra code to generate a unique 'key' for each column. - introduced a 'contacts' table, linked to Author, Publisher
- set
detachable:falseon edge definition so the user has to use the X button to delete a relationship
- separated out
-
Added support in the Undo/redo manager for adding node to/removing node from Groups.
-
setPositionmethod of Surface now stores new position in model if configured to do so -
Added support in undo/redo for group drag
-
fixed an issue where in some cases a Node programmatically removed from a Group was not appended back to the canvas.
-
upgrade to Community edition 2.13.1
2.0.3
1st April 2020
UPDATES
-
Fixed an issue with
jtk-sourceelements specifyingendpoint: if their type definition was specifying amaxConnectionsfor the port, the Toolkit was overwriting that with a value of -1 (unlimited connections). -
Updated the template engine to cover a couple of edge cases when a template contains
r-ifstatements and is updated. This only has any bearing if you use "vanilla" Toolkit and not Angular/React/Vue. -
added support for
autoSaveHandlerin the Toolkit constructor and in thesetAutoSavemethod. If you supply this then the Toolkit will decide on when an auto save needs to occur, honouring anyautoSaveDebounceTimeoutyou supply, but your function will handle the actual save.
2.0.2
23rd March 2020
UPDATES
- Surface correctly informs the underlying pan/zoom widget when a group has been removed.
2.0.1
20th March 2020
UPDATES
-
faster uuid method in util
-
updates to the typescript definitions.
-
Updated to Community edition 2.13.0. Versions 2.12.10 - 2.13.0 together contain:
- a performance enhancement for painting Bezier/StateMachine connectors
- a fix for connector overlays that can in some circumstances disappear when switching type
- a couple of fixes related to source/target drag methods when
setIdorsetIdChangedis used (does not affect the Toolkit edition) - a fix for touch events on certain Windows computers running Chrome.
-
fixed an issue rendering Groups in the React integration
2.0.0
22nd February 2020
UPDATES
- added editable flowchart connectors
- added editable bezier connectors
- upgraded all flowchart demonstrations to use editable connectors and new flowchart example
- removed legacy Vue demonstration and support
- removed Webpack bundling demonstration (the React demonstrations use Webpack if you're looking for an example)
- Storage is now in jsPlumbUtil.Storage, not jsPlumbToolkit.util.Storage
- Cookie support removed from Storage. It was a fallback for browsers that did not support local storage.
- added getVersion() method to jsPlumbToolkit class
1.18.7
30th January 2020
UPDATES
- Updated to Community edition 2.12.9
1.18.6
11th December 2019
UPDATES
- Improve tracePath so that the tracing can be paused while traversing nodes.
- Updated to Community edition 2.12.8
1.18.5
3rd December 2019
UPDATES
- added optional
onReloadconstructor parameter toSelection. If ageneratoris provided, this function is called whenever the generator has been run. - added optional
onBeforeReloadconstructor parameter toSelection. If ageneratoris provided, this function is called before the Selection is cleared and then generator re-run. - added optional
autoFillconstructor parameter toSelection. If true, and ageneratoris provided, whenever a new Node is added to the Toolkit, the selection is cleared and the generator run automatically. - refactored the
HierarchicalandBalloonlayouts to extendAbsoluteBackedLayout. By default this functionality is switched off, but settingabsoluteBacked:trueswitches it on, and then any nodes that are disconnected from all other nodes can be placed via theirleftandtopproperties. Useful for drag/drop when using these layouts.
1.18.4
30th November 2019
UPDATES
- Added
setSurfacemethod to the SurfaceDropManager and DropManager. This allows you to use a single drop manager with multiple Surfaces.
1.18.3
29th November 2019
UPDATES
-
Upgraded to community edition 2.12.7, which contains a couple of fixes for working with the drag selection:
- nodes inside groups cannot be added to the drag selection. Only "top level" nodes and groups can be added to the drag selection.
- nodes in the drag selection that are subsequently added to a group are removed from the drag selection
1.18.2
16th November 2019
UPDATES
-
added
addClass,hasClassandremoveClassmethods to the Surface widget. These wrap their corresponding methods on the underlying Community instance. -
some internal changes to support the upcoming ability to drag flowchart connector paths.
-
updated the
tracePathmethod to return a handler that exposesplay(),pause()andcancel()methods, so the animation can be started/stopped and cancelled. -
updated the
tracePathmethod to supportpausedas an argument. When this is set to true, the animation begins in the paused state.
1.18.1
29th October 2019
UPDATES
-
updated to Community edition 2.12.5
-
Added
setAutoSave(options)method to Toolkit instance, to configure auto save after instantiation. This method can be called any number of times, and each time it is called any previous auto save setup is discarded. -
added
lassoEdges:booleanconstructor option for Surface widget. When true (defaults to false), edges are included in selections made with the lasso. All edges connecting any two nodes/groups (or ports on nodes/groups) that have been lassoed are included in the selection. -
added
jsPlumbToolkitLabelDragManagerin an optional include,jsplumbtoolkit-labels.tgz. For a discussion of this and of labels in general, see https://docs.jsplumbtoolkit.com/toolkit/current/articles/labels.html.
1.18.0
16th October 2019
UPDATES
-
Updated the default template engine to reinstate support for custom tags. These were supported in Rotors, the original default template engine, but removed in Knockle, to which we updated recently. After some consideration we decided that custom tags can be useful, and so they're back in.
-
Added webpack dev server and associated npm script to all the React demonstrations
-
Updated the readme for licensed/evaluation distributions.
1.17.1
10th October 2019
UPDATES
- minor updates to the way updates are handled by the text search add-on
- fixed an issue with dragging elements from a palette on touch devices.
1.17.0
4th October 2019
UPDATES
- removed the
jsplumb-palettecomponent from the Angular integration. It had been deprecated for a few versions. Use the drop manager instead. - added
radiusto EndpointOptions in types - updated
eachNode,eachGroupandeachEdgemthod signature in types; they were missing theidxparameter. - added new full text search plugin. This is an optional import - jsplumbtoolkit-search. The
datamember of all nodes, groups, ports and edges is used to populate a reverse text index, which you can then search via an API. Full documentation available on https://docs.jsplumbtoolkit.com - search "text search". - extended the Undo/redo manager to support changes made to the dataset via the
update***methods (updateNode,updatePortetc). - extended the Undo/redo manager to support node/group move events. To enable these events you now need to pass a Surface to the Undo/redo manager constructor, not a Toolkit, as move events are specific to the Surface widget and not something the Toolkit deals with.
1.16.2
24th September 2019
UPDATES
- support
autoSaveDebounceTimeoutparameter on Toolkit constructor. Allows requests generated by the auto save mechanism to be regulated a little.
1.16.1
23rd September 2019
UPDATES
- added support for specifying edge label directly in an edge definition in a view (without needing to declare it as a Label overlay)
- added support for specifying label location inside the backing data for an edge
1.16.0
UPDATES
17th September 2019
-
updated default template engine to Knockle, which is a port of the previous Rotors template engine, with some changes:
-
adds/removes content inside
r-ifandr-eachloops when updates occur. In Rotors these elements would run a single time and not respond to changes in the dataset on update. -
does not support the
r-forelement -
does not support custom elements (Toolkit licensees are extremely unlikely to be using these)
-
does not support IE8 (which the Toolkit hasnt supported for some time)
-
-
updates to code docs to improve generated API docs
1.15.4
30th August 2019
UPDATES
- updated the Angular 1.x integration to use the SurfaceDropManager instead of the now deleted
registerDroppableNodesmethod from the Surface widget.
1.15.3
18th August 2019
UPDATES
- Updated the types of the
eventsmember of aViewOptionsobject. It's not a Map; it's a plain JS object, but with a limited set of keys. - Updates to
ViewPortOptionstype to include missing possible values.
1.15.2
9th August 2019
UPDATES
- fixed issue with Toolkit firing an edgeAdded event even when the underlying graph rejected the edge addition.
- upgraded to Community edition 2.11.2
- setting type on Edge now honours any Endpoint definitions in the new type.
1.15.1
18th July 2019
UPDATES
- Updated to Community edition 2.11.1, which contains a fix for an issue where types were dropped after a reset.
- Update Angular code to better support situations where the 'id' property is not the one being used as node/port id.
1.15.0
17th July 2019
UPDATES
NOTE: you should use 1.15.1, and not this version. 1.15.1 has an important bugfix.
-
Removed the
registerDroppableNodesmethod from the Surface widget. Use the drop manager package, or one of its library wrappers. -
Updated to Community edition 2.11.0, which includes some changes to the way types are merged by the Community edition, specifically that with the exception of
eventsandoverlays, everything is overwritten when merging types. This fixes an issue with edge definitions in the Toolkit, in whichanchorvalues were being merged rather than overridden. -
Edge/node/port/group definitions in a View now support a
mergeStrategyparameter. If set to "override", overlays and events will completely replace any overlays or events declared on parent definitions, rather than being merged with them.
1.14.11
4th July 2019
UPDATES
- Updated the drop manager to take into account any
translateCSS rules applied to ancestors of the Surface it is registered against. - Tested against Angular 8
- Updated to work with the Ivy compiler in Angular 8 (need fix for Ivy bug https://github.com/angular/angular/issues/31160 in the version of Angular 8 you use)
- Marked deprecated the
registerDroppableNodesmethod of Surface, as well asJsPlumbToolkitPaletteComponentin the React integration,jsPlumbPaletteComponentin the Angular integration, and thepalettemixin in the Vue integration. Use the drop manager package, or one of its library wrappers.
1.14.10
27th June 2019
UPDATES
- Upgrade to Rotors 0.3.19, which supports multiple child elements in an
r-htmltag - Upgrade to community edition 2.10.1, which contains a fix allowing us to update source definitions after they have been created
- Update toolkit/surface code to properly detect and handle the case that a port's id changes.
- Update the React database visualizer demo to use a dedicated key for column loop, rather than using the column's id property. This allows the column to be renamed without React ditching the component and creating a new one.
1.14.9
6th June 2019
UPDATES
-
improvements to React integration:
- avoid possible NPE in React integration's JsPlumbToolkitSurfaceComponent when default template renderer is being used
- added
removeNode()helper method toBaseNodeComponent - added
removeGroup(alsoRemoveChildNodes:boolean)helper method toBaseGroupComponent - added
BasePortComponent. React components can now be used to render ports. - added a React port of the Database Visualizer demonstration.
1.14.8
5th June 2019
UPDATES
- upgraded to version 2.10.0 of the Community edition.
1.14.7
20th May 2019
UPDATES
- added addFactoryGroup(..) method, which does for Group what addFactoryNode does for Nodes
- added SurfaceDropManager component, which simplifies drag/drop of nodes/groups onto a Surface (and also offers drop on edge), as well as Angular/React/Vue wrappers for it.
- fixed an issue in the drop manager that was polluting the count of nodes and groups
- rewrote various demonstration pages to use the SurfaceDropManager.
1.14.6
9th May 2019
UPDATES
- upgrade Katavorio to version 1.4.5
- upgrade Community edition to 2.9.3
- fixed issue with nodes dropped into groups not having their positions correctly adjusted.
1.14.5
4th May 2019
UPDATES
- fixed an issue with Auto save causing the dataLoadEnd event to be prematurely aborted.
1.14.4
16th April 2019
UPDATES
- internal refactoring of a few methods related to rendering ports
1.14.3
15th April 2019
UPDATES
- added support for
is-sourceandis-targeton jtk-port elements.
1.14.2
12th April 2019
UPDATES
- Fixed issue with the packaging of the flowchart builder demonstration (the drop library was missing)
1.14.1
10th April 2019
UPDATES
- internal rewrite of the jsPlumbToolkitIO module from JS to Typescript
- internal rewrite of the Autosaver module from JS to Typescript
- expose
dropHandleron JsPlumbToolkitPaletteComponent in the React integration - update Community edition to 2.9.1
1.14.0
6th March 2019
UPDATES
- Documentation removed from the license/evaluation bundles and moved to https://docs.jsplumbtoolkit.com
- update Community edition to 2.9.0
- in direct render mode, honor any max-width or max-height CSS properties applied to the container.
1.13.8
5th March 2019
UPDATES
- documentation updates
1.13.7
4th March 2019
UPDATES
- documentation updates
- verified that the Toolkit works with Angular 7
- inclusion of example package.json for Angular 7 applications
1.13.6
3rd March 2019
UPDATES
- add grunt as a dev dependency to package.json in the evaluation/license downloads
- update installation docs to show correct npm commands needed to run demonstration server
- added a Vue 2 mixin wrapper around the Drop Manager
- added a React component to wrap the Drop Manager
- added an Angular component to wrap the Drop Manager
- added drop on edge behaviour to Flowchart demo, plus the Vue/React/Angular versions
- fixed an issue that was preventing a node/group that had a loopback edge from being recognised as a valid root for the hierarchical layout.
- removed
allowDropOnCanvas,allowDropOnNodesAndGroupsandallowDropOnEdgesparameters from the Drop Manager. These are inferred now from the presence of the associatedon**Dropmethods.
1.13.5
1st February 2019
UPDATES
- bugfix for addFactoryNode method on Toolkit class:
datawas ignored when calling the method with a callback.
1.13.4
13th December 2018
UPDATES
- minor tweak to the community edition ingest code
1.13.3
11th December 2018
UPDATES
- upgrade to Community edition 2.8.6.
1.13.2
7th December 2018
UPDATES
- improved community ingest support: endpoints are now modelled as ports on their parent nodes.
1.13.1
6th December 2018
UPDATES
- added support for drop on edge to Drop Manager
- documented the Drop Manager
- updated the Spring layout to correctly honour any
paddingvalue 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
UPDATES
- 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-toolkitAngular component. This has been deprecated for a while and unused in any of the jsPlumb demonstrations. Usejsplumb-surfaceinstead, and create instances of the Toolkit on the jsPlumb Angular service.
1.12.0
26th November 2018
UPDATES
- added support for "spacing" to the constructor params for the Hierarchical layout. See hierarchical layout documentation for a discussion.
- deprecated
compress:trueon Hierarchical layout. Usespacing:"compress"instead. - Surface widget consumes the mouse events for pan/pinch zoom now. Fixes an issue seen on iPads where these operations were causing the page to begin to scroll.
- fixed issue with dialog loading in Vue demo
- improved handling of individual Selection rendering
1.11.9
16th November 2018
UPDATES
- fix for duplicated nodes appearing in miniview when ingesting a Community edition instance
- update the surface component to better support rendering the contents of individual groups
- added a cache for node/port/edge/group definitions. Since these cannot be reloaded anyway, we can safely cache them after compiling them for the first time.
1.11.8
4th November 2018
UPDATES
- Upgrade to Community edition 2.8.4.
1.11.7
2nd November 2018
UPDATES
- Fixed an issue causing edges whose type inherited from some other type to sometimes fail to update properly after updateEdge called.
- added support for "vertexId.portId" format for ports in the default json loader.
- updated IO docs.
1.11.6
28th October 2018
UPDATES
- Upgrade to Community edition 2.8.3. Fixes an intermittent issue with continuous anchors when edges are relocated to a new element.
1.11.5
26th October 2018
UPDATES
-
Updates to the Community edition ingest mechanism:
- default to Absolute layout for ingested Community edition instances
- ensure layout position for newly ingested elements is correct
- support optional
datato be stored with each newly ingested element - the
ingestmethod on the Surface component now handles appending the element to the underlying canvas.
-
Upgrade to Community edition 2.8.2
-
add
setEnabled(boolean)method to jsPlumbToolkitDragManager.
1.11.4
18th October 2018
UPDATES
- update the event args passed by a Selection's reload method to be in line with those passed by a Toolkit instance
- if no container specified in render call, throw an Error. This is easier to debug.
- minor updates to drawing tools - an
onEditcallback is supported, andresetis exposed on the drawing tools object. - added support for 'align' to the Hierarchical layout, to alter how child groups are positioned with respect to their parent nodes
1.11.3
6th October 2018
UPDATES
- upgrade to Katavorio 1.1.0, to fix an issue that was causing multiple unnecessary nodeMoveEnd events to fire when a selection was dragged.
1.11.2
29th September 2018
UPDATES
- minor updates to the React typings
- updates for the React documentation
1.11.1
25th September 2018
UPDATES
- added Typescript definition file for the React integration.
- added Angular and React "skeleton" demonstrations - simple demonstrations designed to assist in getting something running.
1.11.0
24th September 2018
BREAKING
jsPlumbToolkitUtilfolded intojsPlumbUtil- including the Selection class. Only a breaking change if your code usesjsPlumbToolkitUtildirectly of course.
UPDATES
- Updates to the React integration to support using React components to render nodes/groups.
- Added optional undo/redo support package for Node/Group/Edge/Port add/remove operations.
- 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
UPDATES
- 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
srcdirectory. - Remove unnecessary duplicated React demonstration
- Update React demonstration and docs to reflect changes in the React integration packaging.
1.9.2
7th September 2018
UPDATES
- 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
UPDATES
- Added
portOrderPropertyto the Toolkit to assist in automatically setting the order of ports in some node.
1.9.0
31st August 2018
UPDATES
- 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
UPDATES
- 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
UPDATES
- 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
UPDATES
- 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
UPDATES
- improved rendering of Ports in Angular integration
- added
animateToSelectionmethod to Surface - fixed issue with
zoomToSelectionignoring Groups. - added
getEdgesmethod to Selection - fixed documentation error that was causing
Selection.edgeEachto be excluded. - upgrade to community edition 2.7.16
1.8.5
15th August 2018
UPDATES
- added
updateGroupmethod to Toolkit
1.8.4
11th August 2018
UPDATES
- added a fix for the inverse lasso on IE11
- upgrade to community edition 2.7.15
1.8.3
10th August 2018
UPDATES
- added
getGroupsmethod to Toolkit class. - added
layoutentry to SurfaceOptions type definitions. - added
getPort(..)to Node type definition - added
sourceandtargetto 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
UPDATES
- added the concept of
portDataProperty, a simple way to replaceportExtractorandportUpdater.
1.8.1
25th July 2018
UPDATES
- 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
UPDATES
- 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:addMemberevent if a node added viaaddNodethat 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
UPDATES
- 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
UPDATES
- updated to Community edition 2.7.9
1.7.7
22nd June 2018
UPDATES
- 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
loadStatemethod
1.7.6
21st June 2018
UPDATES
- 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
UPDATES
- updated to Community edition 2.7.5
1.7.4
16th June 2018
UPDATES
- updates to documentation
1.7.3
14th June 2018
UPDATES
- fixed an issue where after
autoSizeGroupshad been called, the new group sizes were not known by the surface widget, causing zoomToFit to fail.
1.7.2
14th June 2018
UPDATES
locationFunctionin 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
UPDATES
- upgrade to Community edition 2.7.3
1.7.0
25th May 2018
UPDATES
- 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
- updates to the Typescript typings files
- moved
BaseNodeComponentout 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
BaseNodeComponentwhere the component did not clean itself up properly.
1.6.16
17th March 2018
UPDATES
- fix for nodes being made visible having edges to non visible nodes. previously these edges would be made visible.
1.6.15
16th March 2018
UPDATES
- fix for the
isVisibletest on nodes - added
zoomToVisiblemethod to the Surface widget - added
zoomToVisibleIfNecessarymethod to the Surface widget - upgrade to Community edition 2.6.9
- added optional
filterparameter tozoomToSelectionmethod on the Surface widget. - added
sizeGroupToFit(group)method to Surface widget
1.6.14
9th March 2018
UPDATES
- 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.
1.6.13
8th February 2018
UPDATES
- upgrade to Community edition 2.6.7
- upgrade to Katavorio 0.25.0
1.6.12
4th February 2018
UPDATES
- fixed issue causing the community instance rendering content to be detached from the Surface if
clearcalled before data loaded.
1.6.11
2nd February 2018
UPDATES
- 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.
1.6.10
27th January 2018
UPDATES
- updates to the Angular system js demo to bring it back to working
1.6.9
26th January 2018
UPDATES
- The Toolkit's Typescript typings file now includes the type information for the Community edition, exported as module
jsPlumb - Typescript typings added to
package.jsonand included in built.tgzpackage
1.6.8
26th January 2018
UPDATES
- typescript .d.ts updates
- upgrade to Community edition 2.6.3
1.6.7
24th January 2018
UPDATES
- upgrade to Community edition 2.6.2
- vast performance improvement in the
clearmethod of the Toolkit.
1.6.6
20th January 2018
UPDATES
- upgrade to Community edition 2.6.0
- documentation updates
- Typescript .d.ts updates
- rename
generatorinput on Angularjsplumb-palettecomponent todataGenerator, which is the name that the docs discuss.
1.6.5
14th January 2018
UPDATES
- 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.
1.6.4
29th December 2017
UPDATES
- improved location calculation for nodes dragged and dropped from a node palette.
1.6.3
23rd December 2017
UPDATES
- fix overzealous event consumption
1.6.2
21st December 2017
UPDATES
- 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.
1.6.1
13th December 2017
UPDATES
- added experimental support for using the mouse wheel to pan (set
wheelPan:trueon a render call) - upgraded to Community Edition 2.5.9
1.6.0
8th December 2017
UPDATES
- added new layout type "Balloon". Arranges nodes in clusters.
- added HIDDEN and COLOR to supported input types for Dialogs
- exposed
applyandextractmethods 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
updateEdgecalled.
1.5.12
12th November 2017
UPDATES
- Added optional basic connection debugging to the Surface widget.
1.5.11
7th November 2017
UPDATES
- Minor updates to the Angular Groups demo page.
1.5.10
1st November 2017
UPDATES
- Upgrade to Rotors 0.3.18, which contains a fix for the
r-htmltag.
1.5.9
29th October 2017
UPDATES
- Miniview hides/shows nodes when they are hidden/shown in its associated Surface.
1.5.8
22nd October 2017
UPDATES
- upgrade to Community edition 2.5.7.
- suppress node dragging when user is pinch-zooming.
1.5.7
18th October 2017
UPDATES
- added support for mouse events to
jtk-sourceandjtk-targetelements that are declared as Ports (via the existence of aport-idattribute). 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
UPDATES
- minor updates to the layout magnetization engine
1.5.5
8th October 2017
UPDATES
- upgrade to community edition 2.5.5
- fix an issue with the Spring layout failing to treat
left:nulland/ortop:nullas an absence of value in the positioning data, when absolute backing is switched on.
1.5.4
4th October 2017
UPDATES
- 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
UPDATES
- No longer refresh the entire layout each time a new Edge is added. Add support for
refreshLayoutOnEdgeConnectas a parameter on therendercall, 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
UPDATES
- Added support for
autoSizePaddingto Group definitions.
1.5.1
28th August 2017
UPDATES
- Added support for optional
endpointattribute onjtk-sourceandjtk-targetelements. 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 ajtk-portelement 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
setTypeon an Edge) - Added more methods to the Toolkit typings file
1.5.0
22nd August 2017
UPDATES
- added
originalDatato the params passed back tonodeUpdated,portUpdatedandedgeUpdatedevents. - upgraded CLI version to 1.3.0 in the Angular demos
- fix for the case that a new edge is added during the
edgeAddedcallback 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
UPDATES
- 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
UPDATES
- 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
UPDATES
- added
wheelReverseoption to Surface widget.
1.4.4
14th July 2017
UPDATES
- support custom export type in syntax highlighter
1.4.3
10th July 2017
UPDATES
- added getViewportCenter method to Surface widget
- the
graphClearedevent is now fired after the graph is emptied, and before the graph is emptied, whengraphClearedused to be fired,graphClearStartis fired instead.
1.4.2
23rd June 2017
UPDATES
- 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
UPDATES
- upgrade Rotors to 0.3.17
- upgrade Community edition to 2.4.3
1.4.0
15th June 2017
UPDATES
- 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
UPDATES
- upgrade to community edition 2.4.2
- fix link to angular integration docs
1.3.3
10th May 2017
UPDATES
- updated to Rotors 0.3.16
1.3.2
10th May 2017
UPDATES
- updated the code that handles a moved connection to ensure it treats Ports correctly.
1.3.1
9th May 2017
UPDATES
- remove all String refs from React demo and from docs for React demo
- minor documentation updates
1.3.0
8th May 2017
UPDATES
- 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-palettedirective in the Angular 1.x integration.
1.2.16
30th April 2017
UPDATES
- 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
clearmethod
1.2.15
26th April 2017
UPDATES
- update to version 15.5.0 in the React integration demo.
1.2.14
24th April 2017
UPDATES
- added support for onBeforeAutoSave and onAfterAutoSave optional functions to Toolkit's auto save functionality.
1.2.13
24th April 2017
UPDATES
- upgrade to Community edition 2.3.5
- nodes dropped on groups now assigned their correct position
1.2.12
20th April 2017
UPDATES
- fix issue with
datanot being exported on edges whose source is a Group
1.2.11
8th April 2017
UPDATES
- Fixed issue with source element creating multiple connections after drag.
1.2.10
30th March 2017
UPDATES
- added support for
magnetizeoption indragOptionsofrendercall. Instructs jsPlumb to adjust a dragged Node/Group so that it does not overlap any other Nodes/Groups(at drag end).
1.2.9
22nd March 2017
UPDATES
- upgrade to Community edition 2.3.2 (which includes Katavorio 1.19.2)
1.2.8
16th March 2017
UPDATES
- upgrade to Community edition 2.3.1
- update to ensure that endpoints/anchors in Port definitions correctly override endpoints/anchors in Edge definitions.
1.2.7
8th March 2017
UPDATES
- Updated Angular 2 integration to force a render of each node as it is created. This ensures that any
jtk-port,jtk-sourceorjtk-targetelements are fully rendered before we try to process them.
1.2.6
8th March 2017
UPDATES
- added support for
isEndpointflag 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-sourceandjtk-targetelements to Group templates. - updated the Surface widget to correctly render
isEndpointPorts 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
UPDATES
- added support for
anchor-x,anchor-y,orientation-x,orientation-y,offset-xandoffset-yattributes in thejtk-portelement.
1.2.4
27th February 2017
UPDATES
- updated the
exportDatamethod to correctly export edges between Groups.
1.2.3
27th February 2017
UPDATES
- add grunt to webpack package json
1.2.2
27th February 2017
UPDATES
- fix issue with preinstall script when running on Windows
1.2.1
21st February 2017
UPDATES
setPositionmethod of Surface widget now works for Groups tooanimateToPositionmethod of Surface widget now works for Groups too.toolkitandrendererare now passed as arguments to any events defined in your views.
1.2.0
16th February 2017
UPDATES
- 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
doNotFireEventparameter removed from Toolkit'saddToGroupmethod.- fixed issue with Groups not being removed from DOM on clear.
- Surface widget fires
lasso:endevent on lasso mouseup. No arguments are passed to the callback method.
1.1.6
3rd January 2017
UPDATES
- added getClusters method to Toolkit and to Graph
1.1.5
20th December 2016
UPDATES
- upgrade to Community edition 2.2.8
1.1.4
2nd December 2016
UPDATES
- added
getEdgeAtmethod to Path - added support for custom buttons on dialogs.
1.1.3
29th November 2016
UPDATES
- documentation updates for Hierarchical layout
1.1.2
28th November 2016
UPDATES
- documentation updates.
1.1.1
27th November 2016
UPDATES
- upgrade to Community edition 2.2.6
setAbsolutePosition(el, xy[])removed from the Surface widget. UsesetPosition(el, x, y)instead.setAbsolutePositionis 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
savemethod and in auto save functionality.
1.1.0
28th October 2016
UPDATES
- added support for Groups
- added support for multiple root nodes in hierarchical layout
- aliased the
getEdgemethod in Selection asgetEdgeAt; this is more consistent with the API to access Nodes/Groups. - support for custom template resolver in
rendercall - support for templates provided as a map of string s in
rendercall. - 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
18th October 2016
UPDATES
- fix issue with
ingestNodemethod causing miniview to fail with ingested community instance. - ensure ingested nodes are registered with the layout.
1.0.30
20th September 2016
UPDATES
- 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
6th September 2016
UPDATES
- update to jsPlumb 2.1.7, containing a few minor connection fixes.
1.0.28
29th August 2016
UPDATES
- further small fix to whitespace rendering
1.0.27
28th August 2016
UPDATES
- fixed issue with whitespace rendering inside templates (in some cases whitespace was being trimmed when it should not have been)
- added
setSourceEnabled,setTargetEnabled,setEnabledmethods toSurfacewidget
1.0.26
18th August 2016
UPDATES
- fixed issue with
setVisiblemethod 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
12th August 2016
UPDATES
- 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
8th July 2016
UPDATES
- upgrade to community jsPlumb 2.1.4
- reinstate missing apps (hello world, skeleton app)
1.0.23
19th May 2016
UPDATES
- 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
6th May 2016
UPDATES
- 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.21
21st April 2016
UPDATES
- 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
1.0.20
17th March 2016
UPDATES
- update Rotors to fix possible infinite loop with nested templates
1.0.19
9th March 2016
UPDATES
- update Rotors
1.0.18
9th March 2016
UPDATES
- fixed an issue with the auto save: it was not suspended during data load.
1.0.17
8th February 2016
UPDATES
- fix for inverse lasso: the mask does not appear until the user starts to drag.
1.0.16
1st February 2016
UPDATES
- fix for state deactivate - parameterised overlays now retain their values.
1.0.15
25th January 2016
UPDATES
- internal build script update to community 2.0.6
1.0.14
24th January 2016
UPDATES
- 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
invertedmode 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
11th January 2016
UPDATES
getAllEdgesinjsPlumbToolkitno longer takes parameters, and actually works properly now.- added
getAllEdgestoGraphclass. - small tidy up in Angular demo templates to fix IE* rendering issue.
1.0.12
14th December 2015
UPDATES
- Update to Rotors to support attributes with colons (such as
xlink:hrefon 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
batchfunction 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.
zoomToFiton the Surface widget now defaults to filling 90% of the viewport. This can be overriden by supplying afillparameter:
surface.zoomToFit({fill:0.75});
- The link to
filtersin 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(andedgeTypeProperty/portTypeProperty). This reflects the fact that for the majority of applications, the function used to determine some object'stypesimply looks at the value of some given property. By providing the name of this property, rather than atypeFunction, 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
23rd October 2015
UPDATES
- 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:hrefon 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.ajaxtakes optionalheadersmap (for setting http headers).jsPlumbToolkitInstance.loadtakes optionalheadersmap (for setting http headers).jsPlumbToolkitInstance.loadsetsAccept:application/jsonHTTP header if headers not supplied.
1.0.10
16th October 2015
UPDATES
- added
adHocLayoutmethod to Surface widget. This lets you run a named layout one time on your data.
1.0.9
16th October 2015
UPDATES
- 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.
1.0.8
12th October 2015
UPDATES
- Upgrade to Community edition 2.0.2 (for documentation improvements)
1.0.7
7th October 2015
UPDATES
- Upgrade to Community edition 2.0.1
- Documentation improvements
1.0.6
6th October 2015
UPDATES
- 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
registerDroppableNodescall on a Surface. - Add
centerOnAndZoomfunction toSurface modelLeftAttributeandmodelTopAttribute, which specify the left/top attribute against which to store node positions, now support dotted notation, ie. can refer to a nested element.- Added
zoomToSelectionto Surface widget.
1.0.5
UPDATES
31st August 2015
- Reinstate animation when panning the surface
- Expose
setPanmethod on the surface - Support animation in the
setPanmethod - Support enableAnimation:false flag in
rendermethod. default is true. - Upgrade to Community edition 1.7.10 (bugfix for animation when providing 0 as param value)
1.0.4
29th August 2015
UPDATES
- Several improvements to the ingest functionality, including the ability to subsequently ingest new elements.
- Upgrade to Community edition 1.7.9
1.0.3
21st August 2015
UPDATES
- Fix loading issue with directed edges in basic JSON parser.
- Add setDirected method to Edge
- Add tracePath method to Renderer
- Add Path Tracing demo
1.0.2
10th August 2015
UPDATES
- Add
traversePathmethod to Surface (andanimateOverlaymethod 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.0.1
1st August 2015
UPDATES
- Addition of
fixElementandfloatElementmethods to pan/zoom widget and Surface, and exposing of these methods to the layout decorator functionality.
1.0.0
19th July 2015
Initial release.