Release Notes yFiles for HTML Version 3.1
Version 3.1 is the latest major release of yFiles for HTML in the yFiles
for HTML 3.1 major release series.
See the changelog for a list of all
changes in this and all other versions.
To learn about the new features in version 3.1, have a look at
About yFiles for HTML Version 3.1.
Below you will find the technical requirements and a list of all new features, improvements, and incompatible changes.
Technical Requirements
- For development, we strongly recommend an IDE with dedicated support for the web platform, for example Visual Studio Code or JetBrains WebStorm.
-
yFiles for HTML-based web applications require a common, standards-compliant browser.
These include Chrome, Safari, Firefox, and Edge on Windows, macOS, iOS, and Android
operating systems.
The yFiles for HTML 3.1 release has been tested with the following browsers:
All changes
Version 3.1
yFiles for HTML 3.1 is an incremental update that builds on the extensive changes introduced in the 3.0 release. It brings exciting new features, helpful improvements, and bug fixes to all parts of the library. As always, there is a large number of new and improved demos demonstrating these features and improvements.
If you are updating from an older version of yFiles for HTML, have a look at the list of incompatible changes and at the Migration Guide.
New Features, Improvements, and Bug Fixes
Categories: General Components WebGL Styles Text Rendering Interaction Tooltips and Popovers Layout Hierarchical Layout Bundled Edge Router Labeling Other Layouts Analysis Collections & Geometry New Demos
General
New Features and Improvements
- yFiles classes and interfaces now behave like regular JavaScript classes when enumerating members: properties and methods are no longer enumerable, fields are enumerable. This improves compatibility with third-party frameworks like React.
- The library is now split into more granular JavaScript modules. Major features and layout algorithms have been moved into separate modules, enabling treeβshaking so build tools can exclude unused parts from production bundles, reducing bundle size and improving load times without changes to existing code.
-
The nonce value of the automatically loaded yFiles stylesheet can now be set with
the new
Workarounds.cspNonceproperty, which can be used to satisfy stricter Content Security Policy settings. - The memberwise cloning used internally by the library now also handles certain edge cases correctly.
Components and Graph
New Features and Improvements
-
The new
HeatMapRendererclass can render a heat map. It simulates heat dissipating from nodes and edges and renders it with customizable color gradients. The new Heat Map Demo shows how to use theHeatMapRendererclass. -
The property
CanvasComponent.devicePixelRationow defaults to the client'sdevicePixelRatiobut clamped to a maximum value of2.0. -
Scrollbars with
ScrollBarVisibility.VISIBLEnow use the same modern styling as scrollbars withScrollBarVisibility.AUTO. -
The performance behavior of
CanvasComponents that are no longer connected (directly or indirectly) to aDocumentobject has been improved. -
The
Table.createChildRow,Table.createChildColumn,Table.setSize,Table.setMinimumSizemethods and theStripeDefaults.sizeandStripeDefaults.minimumSizeproperties now throw an exception if negative,NaN, or infinite values are passed.
Bug Fixes
-
The
bend-location-changedevent ofIGraphnow uses the correct value for the y-coordinate of the old location. -
Prevent a possible exception while reading or writing GraphML data with the scopes
KeyScope.GRAPHMLorKeyScope.ALL.
WebGL
New Features and Improvements
-
The new
WebGLZoomScalingPolicyclass can scale labels non-uniformly with the zoom level, for example keeping labels at a constant size for all zoom levels. Instances of the class can be set to the newzoomScalingPolicyproperties of WebGL label styles. The new WebGL Label Fading Demo illustrates how this policy can be applied. -
The new
WebGLZoomVisibilityPolicyclass can hide items at certain zoom levels. Instances of the class can be set to the newzoomVisibilityPolicyproperties of WebGL item styles. The new WebGL Label Fading Demo shows how to achieve a simple level of detail (LOD) display in WebGL rendering by fading out labels, nodes, and edges at certain zoom levels. -
The new
WebGLShapePortStylevisualizes ports with shapes that nodes can have. Ports can have effects and be animated. TheWebGLShapePortStylehas been updated to include WebGL-based port rendering. - Squircle shapes are supported for WebGL styles for nodes, labels, and ports. The WebGL Styles Demo has been updated to include squircle shapes for nodes.
-
The new
WebGLBeaconEdgeIndicatorStyleclass adds beacon animations to the available WebGL2 selection, highlight, and focus styles. The WebGL Selection Styles Demo has been updated to support beacon animations for the selected edges. -
The method
WebGLGraphModelManager.createHaloAnimationnow also applies to edges. The WebGL Animations Styles Demo has been updated to support halo animations for edges. - WebGL label styles now support beacon and halo animations. The WebGL Animations Styles Demo has been updated to support beacon and halo animations for labels.
- WebGL styles can now be serialized to GraphML.
-
The new
WebGLGroupNodeStyle.minimumContentAreaSizeproperty specifies the minimum size for the content area, similar to the existing property on theGroupNodeStyle. -
The new
WebGLGraphModelManager.updatePortPositionmethod provides a way to manually update port locations similar to theupdateLabelPositionmethod. -
The item-specific overloads
setAnimationsandupdateStyleofWebGLGraphModelManagerhave been merged into single methods with anIModelItemparameter. This removes the need for an instanceof check in some usage patterns. -
Changing
WebGLGraphModelManager.renderModeno longer throws when theHandleInputModeis currently active. Instead, theHandleInputModeis canceled.
Bug Fixes
-
Edges with
WebGLPolylineEdgeStyleand a positivesmoothingLengthproperty are no longer missing the smooth line joins in Firefox. -
Method
WebGLGraphModelManager.createBeaconAnimationwas fixed for simple edges without dashes or effects. -
When using
WebGLGraphModelManagerin WebGL mode, edges are now correctly hit before group nodes. -
Items that use
INodeStyle.VOID_NODE_STYLE,IEdgeStyle.VOID_EDGE_STYLE,ILabelStyle.VOID_LABEL_STYLE, andIPortStyle.VOID_PORT_STYLEno longer render when WebGL is used for rendering. -
VOID_LABEL_STYLEis now working correctly in WebGL and no longer renders labels regardless of the label model. Previously, usingStretchNodeLabelModel, the label remained visible. -
Selecting a self-loop edge with
WebGLArcEdgeStylewith zero height no longer throws a "Cannot read properties of undefined" exception. -
The
WebGLArcEdgeStyleno longer throws an Exception when handling self-loop edges that have no specified arc height. -
Clicks on self-loop edges with
WebGLPolylineEdgeStyleand a single bend now properly select them. -
Selections of self-loop edges with
WebGLPolylineEdgeStyleare now properly cleared if deselected. - WebGL animations that were stopped before having finished now run in the correct direction when started again.
- WebGL animations for label indicators now correctly run animations assigned to their labels.
- Fixed resize-handle hit-testing when non-default handle offsets are defined with the yFiles theme.
-
Fixed a bug in the lookup chain of WebGL styles that has overwritten registered
chain links, e.g., through the
NodeDecorator, when theWebGLGraphModelManagerwas assigned after the chain link registration. Now the invocation order of registering chain links and assigning theWebGLGraphModelManageris irrelevant.
Styles
New Features and Improvements
-
Squircle shapes are now available for node, port, and label styles. The
RectangleNodeStyle,ShapeNodeStyle,ShapePortStyle, andLabelStyleclasses support this shape type via the new enum valuesRectangleCornerStyle.SQUIRCLE,ShapeNodeShape.SQUIRCLE, andLabelShape.SQUIRCLE. -
The
LabelStyleclass now supports text wrapping in squircle shapes via the new enum valueTextWrappingShape.SQUIRCLE. -
The
ShapePortStyleclass has now acssClassproperty. - Reduced rendering artifacts of square handles in combination with a fractional theme scaling.
-
The new
BridgeManager.maximumBridgeWidthproperty allows bridges to be made wider for flatter intersection angles in order to maintain a constant distance from obstacles. -
The new
IRenderContext.setConnectedCallbackmethod allows registering a callback that is invoked when the visual was added to the DOM. -
The new
SvgVisualGroup.frommethod creates a visual group with an attached tag object. This can be used, for example, as a cache for rendering data, similar to the existingSvgVisual.frommethod. -
The new
RadialGradient.radiusproperty specifies the radius of the gradient and replaces the previous propertiesradiusXandradiusY. This corresponds to the underlying SVG element<, which also has only a singleradialGradient>rattribute for the radius. -
LinearGradientandRadialGradientnow have agradientTransformproperty. Similarly,PatternFillnow has apatternTransformproperty.
Bug Fixes
-
MarkupLabelStyleno longer wraps incorrectly or exceeds themaximumSizeof the label. -
Loading
GraphMLscontaining pattern fills no longer crashes. - Bridges of polyline edges are no longer included in selection, highlight, or focus.
-
Fixed a problem when only one of the managers for highlights or selection got
replaced in
GraphComponentwhere their domain property value of the other one became defunct.
Label Text Rendering
New Features and Improvements
-
When rendering label text in
CJKlanguages, line breaks between ideographic graphemes are now allowed for both word and character wrapping. - When word-wrap is enabled, trailing and orphaned whitespace is now trimmed before wrapping, resulting in tighter label bounds.
Bug Fixes
- Word and character wrapping now respects grapheme boundaries (including emojis, characters with combining marks, and nonβbreaking spaces).
-
By default, the text input field of the
TextEditorInputModeand the default tooltip now both use black text instead of inheriting the color. This avoids displaying white text on the already white background.
Interaction
New Features and Improvements
-
The new
CanvasComponent.preventViewportInteractionproperty can be used to prevent unwanted interactions with the viewport by touch or pen gestures or the mouse wheel. This replaces the previous enum valueMouseWheelBehaviors.ONLY_WHEN_FOCUSEDwhich applied only to mouse wheel input. -
Context menu entries can now be activated on
pointerupfor environments where the menu opens onpointerdown(e.g. macOS) such that a single gesture can activate context-menu entries. - Improved panning behavior on touch devices results in a less slippery feel when panning the graph.
- Keeping dragging with auto-scroll enabled while at the border of the canvas now accelerates the auto-scroll speed.
-
The new
MoveViewportInputMode.isDraggingproperty reflects the current state of that input mode. -
Keyboard shortcuts for registered commands are now always handled and no longer
trigger browser actions. Previously, shortcuts were only processed if possible in
the current state. This may have resulted, for example, in
CTRL+R unintentionally reloading the current page instead of reversing the direction of an edge. -
The new
ResizeStripeInputMode.affectedStripeSubregionandResizeStripeInputMode.affectedItemsproperties provide access to the stripe being modified. -
On macOS, the
GraphComponentnow zooms when holding theCommandmodifier key during vertical panning on a trackpad or a magic mouse. - The text editor input box is now placed with integer coordinates to avoid blurry browser rendering of the input field.
-
The new
DropInputMode.acceptDragmethod is called ondrag-enterevents and determines if the mode will handle subsequent drag and drop events. Previously, this was the responsibility of theDropInputMode.adjustEffectmethod. Now,adjustEffectonly changes the drag/drop effect of the given event args as its name implies.
Bug Fixes
-
The
GraphComponentno longer drifts when theminimumZoomvalue is reached during pinch zoom. -
The
GraphComponentno longer prevents zooming after dragging when twoMoveViewportInputModes were active in the same instance. -
Fixed delayed zoom and scroll animation of the
GraphComponentfor high frequency animation triggers. For example, when strongly accelerating a free-spinning mouse wheel. -
In a
GraphComponentthat is transformed with a CSS transform, the location of pointer events is now handled correctly. Events that occur over anHtmlVisualare an exception; these are still not handled correctly. -
WaitInputModedoes not steal pointer capture from other UI elements anymore. -
When
HandleInputModecancels the drag gesture, it now callsIDragHandler.cancelDragwith the original handle location instead of the initial pointer location. -
ItemDropInputModenow also emits thedrag-overevent when the pointer remains at the same location but the viewport changes during the drag-drop gesture, for example, due to auto-dragging or mouse-wheel scrolling. This enablesItemDropInputModeto update itsDropTargetcorrectly. - Fixed the label editor on iOS/Safari, so tapping inside the text box correctly positions the cursor and pointer input is properly recognized.
Tooltips and Popovers
New Features and Improvements
-
The new
PopoverManager, in combination with the newPopoverDescriptor, provides an easy way to show popover elements like tooltips, contextual toolbars, detail panels, or persistent annotations. The new Tooltips and Popovers Demo shows how to enable and customize tooltips and popovers for graph items. -
The
ToolTipInputModenow uses thePopoverManagerto display tooltips. -
The
QueryItemToolTipEventArgsnow provides access to a newPopoverDescriptorthat allows flexible customization of the tooltip's popover element. The new descriptor provides properties for positioning the popover with an additionalupdateevent that is triggered whenever a significant action occurs while the popover is opened. It also provides access to overwrite the automatic open/close behavior. -
Tooltips now remain open at their initial open location until the cursor exits the
item. This behavior can be adjusted by changing
UpdatePopoverEventArgs.showPopoverin theupdateevent.
Layout
New Features and Improvements
-
LayoutExecutor.start,LayoutExecutorAsync.start, andGraphComponent.applyLayoutAnimatednow accept an optionalAbortSignalto cancel the layout animation or discard the layout result in case ofLayoutExecutorAsync. -
The new
LayoutExecutorAsync.stopmethod keeps waiting for the Web Worker layout result but will skip the layout animation and apply the result immediately to the graph. -
The new
LayoutExecutor.cancelmethod provides a symmetric API to theLayoutExecutorAsyncclass. Due to the single-threaded execution in JavaScript, this method can only cancel a running layout animation but not the layout calculation itself.
Hierarchical Layout
New Features and Improvements
-
The
HierarchicalLayoutclass now offers strong support for keeping an existing layout stable with respect to the exact coordinates. This makes it possible to insert incremental new elements while keeping the remaining elements at their original location, or as close as possible to their original location if the original placement is no longer valid.-
Enabling the
HierarchicalLayout.fromSketchMode, the results are now more similar to the input, preserving more spatial relations between nodes. -
The new default hint for non-incremental nodes
IncrementalNodeHint.FROM_SKETCHpreserves existing spatial relations and straight edges. -
The new hint
IncrementalNodeHint.EXACT_COORDINATEStries to preserve the exact coordinates of nodes if that is possible without creating overlaps or violating other constraints and distance settings. -
The
IncrementalNodeHint.createExactCoordinatesHintmethod allows specifying even stronger hints where overlaps and distance violations can be accepted in favor of keeping coordinates fixed. -
The new
HierarchicalLayoutData.incrementalNodeHintsproperty enables convenient specification of hints for nodes. These hints define how nodes are treated in from-sketch mode.
-
Enabling the
-
The
HierarchicalLayoutsymmetry optimization now produces more symmetrical results for grouped inputs. -
The
HierarchicalLayoutclass now produces significantly less short edge segments, thus, reducing the number of bends.The property
CoordinateAssigner.maximumPortDeviationallows to control the distance a port may be moved to avoid bends in the connecting edge segment, with the drawback of getting non-uniform port distributions. -
Improved the quality of
HierarchicalLayoutresults with sequence constraints.
Bug Fixes
-
The
HierarchicalLayoutclass no longer creates avoidable crossings between edges with the same target node whenfromSketchModeproperty is enabled. -
The
HierarchicalLayoutno longer produces unneeded white space between layers due to overestimating the required first or last segment length of edges. -
The
HierarchicalLayoutnow correctly handles grouped input graphs when grid spacing is defined. Previously this could lead to an error if a self-loop edge at a group node existed. -
The
HierarchicalLayout's integrated edge labeling no longer produces avoidable overlaps between node margins and port labels. -
The
HierarchicalLayoutnow correctly considers the specified critical edge priorities for edges withLayoutPortCandidates. Previously, it sometimes ignored these priorities for edges with port candidates at sidePortSides.ANY. -
The
HierarchicalLayoutnow works correctly with grouped self-loops. Previously, an error could occur in rare cases. -
The
HierarchicalLayoutNodeContext.layerproperty now returns -1 if the node is not assigned to a layer. Previously, an error occurred. -
The properties
HierarchicalLayoutNodeContext.associatedNodeandHierarchicalLayoutNodeContext.associatedEdgenow correctly marked as nullable. -
LayoutGraphSequenceConstraintscreated with the methodscreateReadonlyVieworcreateWritableCopynow correctly include constraints between edges if there are nodes with constraints as well. Previously, in that case the edge constraints were ignored. -
Sequence constraints and layer constraints defined with the methods of
SequenceConstraintDataandLayerConstraintDataare now only represented once in data structures attached to the graph, which can be accessed, e.g., viaLayoutGraphSequenceConstraints.createReadonlyView. Previously, they were inserted twice. This did not affect the resulting layouts.
Bundled Edge Router
New Features and Improvements
-
The
BundledEdgeRouterclass now supports multiple bundling strategies via theBundledEdgeRouter.strategyproperty. The original approach has been renamed toBundledEdgeRouterStrategy.FORCE_DIRECTED. Two new strategies are introduced:-
BundledEdgeRouterStrategy.SPANNER, which offers significantly faster performance. -
BundledEdgeRouterStrategy.VORONOI, which focuses on high performance while minimizing node-edge intersections.
-
Labeling
New Features and Improvements
-
The integrated edge labeling of the
OrganicLayoutnow places the edge labels withEdgeLabelPreferredPlacement.placementAlongEdgeset toAT_CENTERcloser to and more symmetric around the midpoint between the borders of the source and target nodes. -
For edge labels with preferred placement center, the
GenericLabelingalgorithm now prefers positions near the center of the path between the incident nodes. The path length inside the incident nodes is ignored.
Other Layouts
Bug Fixes
-
The
OrthogonalLayoutclass now correctly considers the specified bend costs and edge orientation. Previously, for some setups, specifying both could lead to an error. -
The
OrganicLayoutwith high values for thequalityTimeRatioproperty no longer violates constraints such as forbidden overlaps when running against the specifiedstopDuration. -
The
EdgeRouterclass no longer throws an exception in some cases with bus-style routing (EdgeRouterData.buses). -
The
CircularLayoutnow correctly considers the specified node margins and labels. Previously, it sometimes produced overlapping margins regions or label overlaps. -
The
CircularLayoutnow correctly considers the minimum radius specified by thePartitionDescriptor.minimumRadiusproperty. -
The static
LayoutGraphGrouping.isFlatmethod now correctly identifies graphs that have become flat because the last group node was deleted from the graph. -
The methods
LayoutGraphAlgorithms.allPairsShortestPathandLayoutGraphAlgorithms.allUnweightedShortestPathspublish the calculated results now.
Analysis
New Features and Improvements
-
The Neighborhood algorithm now additionally delivers the edges in the neighborhood
of the start nodes through the
Neighborhood.Result.Edgesproperty.
Collections and Geometry
New Features and Improvements
-
The new
IEnumerable.withmethod is modeled after theArray.prototype.withfunction and returns a modified view of the enumerable.Similarly, the new
IEnumerable.toSplicedmethod is modeled after theArray.prototype.toSplicedfunction and returns a modified view of the enumerable. -
The
IEnumerable.concatmethod has improved type definitions. -
The new static methods
Rect.sumandRect.fromPointscalculate the bounding rectangle of an enumerable of rectangles or points, respectively. -
The new
Rect.addmethod creates the union of the current instance and the specified rectangle.
Bug Fixes
-
Checking instances of basic types like
Point,Size, etc. for equality is now more robust in certain rare edge cases.
New Demos
- The new Event Timeline Demo showcases a simple yet powerful way to visualize dynamic graph data, with nodes (entities) represented as labeled parallel horizontal line segments and edges (events) as labeled parallel vertical ones.
- The new Biofabrics Demo offers a simple presentation and introduction to biofabric visualizations.
- The new Space and Time Demo visualizes the spread of contaminants in temporal, geospatial, and relational dimensions.
-
The new
Custom Copy and Paste Demo
shows how the
GraphClipboardcan be used to transfer style between graph elements. - The new Octilinear Edge Editing Demo shows how to implement interactive editing of octilinear edges.
- The demos' UI has been modernized with an updated visual design to provide a clearer and more cohesive user experience.
Incompatible Changes
Categories: Components WebGL Styles Interaction Tooltips and Popovers Layout Hierarchical Layout Bundled Edge Router Geometry
Components
Incompatible API Changes
-
The
IRenderContexthas a new methodsetConnectedCallback- wrapping implementations should delegate the call to the wrapped context. If you are implementing the interface from scratch, make sure that after rendering and assembling the DOM, all the collected callbacks are called. yFiles automatically does this for the context implementations provided by the library. -
The events
CanvasComponent.viewport-changedandGraphComponent.current-item-changednow use plainEventArgsinstead ofPropertyChangedEventArgs, since these events each affect only a single property. -
The event
GraphComponent.selection-model-changedhas been removed. This event was only fired when the model instance changed, not when one or more selected items changed. -
The unused protected constructors of
SerializationNotSupportedExceptionandDeserializationNotSupportedExceptionhave been removed since they were based on an obsolete constructor of the base class.
Incompatible Behavior Changes
-
The
GraphComponent.fitGraphBoundsmethod no longer adds an undocumented additional margin of 1.0 when no margins are specified as arguments. -
GraphML now uses a sentinel object
GraphMLIOHandler.graphmlRootinstead ofnullif data for the toplevel document needs to be written or read.
WebGL
Incompatible API Changes
-
the property
WebGLGroupNodeStyle.contentAreaPaddingis now of typeInsetsinstead of a plain number. -
The class
WebGLGroupNodeStylehas now a constructor parameter for thecontentAreaPaddingproperty.
Styles
Incompatible API Changes
-
The
EdgeIndicatorBendsRenderTagclass has been removed and replaced by theIListEnumerable, which was previously available in its<IBend>bendsproperty. ThezoomPolicyproperty had no effect was therefore removed without replacement. The corresponding, now obsoletezoomPolicyenum has also been removed. -
The new
RadialGradient.radiusproperty replaces the propertiesradiusXandradiusY. This corresponds to the underlying SVG element<, which also has only a singleradialGradient>rattribute for the radius. Previously,radiusXwas used as the single radius andradiusYhad no effect. - When word-wrap is enabled, trailing and orphaned whitespace is trimmed from rendered text before wrapping, which may change existing line breaks and reduce label width.
Interaction
Incompatible API Changes
-
The return value of the
DropInputMode.adjustEffectmethod has been changed from boolean to void. This method no longer determines if the mode will handle drag or drop events but only changes the drag/drop effect of given event args as its name implies. the newDropInputMode.acceptDragmethod now determines if the mode will handle drag and drop events. -
The
CanvasComponent.lastInputEventproperty has been renamed tolastPointerEventto better reflect its type. In addition, theCanvasComponent.lastEventLocationhas been removed since thelocationproperty oflastPointerEventprovides the same value. -
The enum value
MouseWheelBehaviors.ONLY_WHEN_FOCUSEDhas been removed in favor of the newCanvasComponent.preventViewportInteractionproperty. Set it to the valuePreventViewportInteractionPolicy.UNFOCUSEDto achieve the old behavior with the additional improvement that it now not only prevents mouse wheel interactions but also touch and pen viewport gestures. -
The generic
IGridConstraintProviderinterface has been removed, its usages have been replaced with the existing item-specific interfacesINodeGridConstraintProvider,IBendGridConstraintProvider, andIPortGridConstraintProvider. In addition, the unusedILabelGridConstraintProviderandILabelOwnerGridConstraintProviderinterfaces have been removed and theGridConstraintProviderclass is no longer generic and implements all remaining item-specific interfaces. -
The new
LassoRenderTagclass will be passed as render tag for the lasso path renderer of theLassoSelectionInputModeclass. -
The
StripeSelectionclass has been removed. Instead, use the instance returned by theTableEditorInputMode.stripeSelectionproperty.
Incompatible Behavior Changes
-
The default value of the property
CanvasComponent.autoScrollPaddingahs been increased from 10 to 20. -
Method
DropInputMode.adjustEffectno longer determines if the mode will handle drag or drop events but only change the drag/drop effect of given event args as its name implies. MethodDropInputMode.acceptDragnow determines if the mode will handle drag and drop events.
Tooltips and Popovers
Incompatible API Changes
-
Renamed
ToolTipInputMode.showtoToolTipInputMode.open. -
Removed
ToolTipInputMode.onShowmethod. It is now part ofToolTipInputMode.open. -
Removed
ToolTipInputMode.onHidemethod. Instead, use the newclosedevent onPopoverDescriptor. -
Removed
ToolTipInputMode.hidemethod. Instead, use theToolTipInputMode.closemethod orPopoverDescriptor.close. -
Renamed
ToolTipInputMode.ShowingtoToolTipInputMode.isOpenand made it readonly now. -
Removed
ToolTipInputMode.getToolTipLocationmethod. -
Removed
ToolTipInputMode.getToolTipContentmethod. -
Removed
ToolTipInputMode.updateLocationmethod. The new popovers automatically detect resize events and reposition themselves according to their configured positioning properties. -
Removed
ToolTipInputMode.createToolTipmethod. -
Moved and renamed
ToolTipInputMode.adjustTooltipPositionmethod toPopoverManager.getDocumentLimitedLocation. -
Moved and renamed
ToolTipInputMode.toolTipParentElementmethod toPopoverManager.defaultParentElementor the specificPopoverDescriptor.parentElement. -
The
ContextMenuInputModeinternally now uses thePopoverManagerto display the context-menu popover. ThecontextMenuParentElementproperty has been removed, instead usePopoverManager.ParentElement.
Incompatible Behavior Changes
- Tooltips now show after 500ms instead of 1s by default.
-
The tooltip container is now added to the
CanvasComponent.overlayPanelinstead of the document body. This can be adjusted with thePopoverManager.defaultParentElementproperty for all popovers or specifically with thePopoverDescriptor.parentElementproperty.
Layout
Incompatible API Changes
-
The
EdgeLabelCandidates.addDiscreteCandidatesmethod usesDiscreteEdgeLabelPositionsenum to specify label positions. The valueCENTEREDwas removed from this enum; use the already existing valueCENTERinstead. -
Renamed
GroupBoundsCalculatortoLayoutGroupBoundsCalculatorto match the implementingILayoutGroupBoundsCalculatorinterface.
Hierarchical Layout
Incompatible API Changes
-
The
IncrementalNodeHintmember is now a class and no longer an enum. The available hint values have been changed as follows:-
LAYER_INCREMENTALLYhas been replaced byINCREMENTAL. -
SEQUENCE_INCREMENTALLYhas been replaced byINCREMENTAL_WITH_LAYERS_FROM_SKETCH. -
NONEhas been replaced byKEEP_RELATIVE_ORDER. It is no longer the default value for nodes without a hint.
-
-
The
IncrementalEdgeHintvalues have been changed as follows:-
NONEhas been replaced byKEEP_RELATIVE_ORDER. -
SEQUENCE_INCREMENTALLYhas been replaced byINCREMENTAL.
-
-
Removed the
CoordinateAssigner.exactPlacementproperty. To keep coordinates as fix as possible, use hintIncrementalNodeHint.EXACT_COORDINATESor a hint created with theIncrementalNodeHint.createExactCoordinatesHintmethod. The old behavior forcing exact placement on the existing coordinate while even accepting severe violations of other constraints or illegal group overlaps is no longer available. -
Removed the
CoordinateAssigner.fromSketchLayerAssignmentproperty. If there are nodes with exact-coordinate hints, their layer coordinates in the sketch are now always considered. Otherwise, the property had no effect, and the behavior has not changed. -
Removed the
CoordinateAssigner.bendReductionproperty. The number of bends is always optimized. -
Removed the
CoordinateAssigner.straightenEdgesproperty. The replacement is the newCoordinateAssigner.maximumPortDeviationproperty. To get the old behavior for "true" use a large value on the new property, for "false", use zero.
Incompatible Behavior Changes
-
The default behavior when enabling the
HierarchicalLayout.fromSketchModeproperty has been changed. Now, the given sketch (current coordinates) has a higher impact. Results are often closer to the sketch than previously. To get the old behavior where only the relative order of elements was preserved, specify hintIncrementalNodeHint.KEEP_RELATIVE_ORDERvia layout dataHierarchicalLayoutData.incrementalNodeHintsproperty.
Bundled Edge Router
Incompatible Behavior Changes
-
The
BundledEdgeRouternow usesBundledEdgeRouterStrategy.SPANNERas the default strategy for significantly improved performance. To restore the previous behavior, set theBundledEdgeRouter.strategyproperty toBundledEdgeRouterStrategy.FORCE_DIRECTED. In addition, for strategyBundledEdgeRouterStrategy.FORCE_DIRECTED, the range of theEdgeBundling.bundlingStrengthproperty is now better utilized. Previously, most bundling occurred only at very high values.
Geometry and Collections
Incompatible API Changes
-
IEnumerable.concatis now stricter in regard to the types of rest arguments. Add a type parameter when mixed parameter types cannot be inferred, automatically. -
Method
MutablePoint.convertToPointDhas been removed. Use theMutablePoint.toPointmethod instead. -
Method
MutableRectangle.convertToRectDhas been removed. Use theMutableRectangle.toRectmethod instead. -
Method
MutableSize.convertToSizeDhas been removed. Use theMutableSize.toSizemethod instead.