Back to jointjs.com.
CHANGELOG
- 
    
Add separate bundle files for each theme and base CSS to distributed package
In addition to base CSS (which takes care of the layout of plugins) JointJS provides four built-in CSS themes (which provide visual styling). However, there was previously no way to unbundle these themes from the base CSS if they were not needed by your application.
We recognized this as an opportunity for optimization - if your application does not use any of the themes, for example, this change provides a way to reduce the footprint of JointJS in your application with very little effort. That being said, the existing
rappid.cssfile (which contains the base CSS and all themes) has been left unchanged too, so you can continue using it if you wish.Details...
Separate bundled files were added for the base CSS of JointJS, and for each built-in theme. You can find the new files in the
distfolder of your JointJS+ package -rappid.base.css, andrappid.theme._.css(where_stands for the names of JointJS built-in themes:dark,default,materialandmodern), along with their minified versions.For example, if you are currently using the
build/package/rappid.min.cssfile as follows…<link rel="stylesheet" type="text/css" href="./JointJSPlus/build/package/rappid.min.css">…you can switch to the a combination of base CSS +
moderntheme like this:<link rel="stylesheet" type="text/css" href="./JointJSPlus/dist/rappid.base.min.css"> <link rel="stylesheet" type="text/css" href="./JointJSPlus/dist/rappid.theme.modern.min.css"> 
- 
    
In BPMNEditor application, add dataObject BPMN shape to stencil, enable touchpad zoom and pan
The dataObject BPMN shape was added to the stencil of the BPMNEditor application:

Additionally, using touchpad for zooming and panning was enabled for the application (by adding listeners for the
paper:pinchandpaper:panJointJS events). 
- 
    
In OrgChart application, fix shapes namespacing
Previously, the
cellNamespaceandcellViewNamespaceproperties weren’t properly configured in the application. We have fixed the code to be in line with JointJS best practices. 
- 
    
dia.CommandManager - fix undo after adding Cells with hierarchical relationship
This change fixes an issue in CommandManager when embedded Elements were added to the Graph in a certain order (parents first, then children).
In that case, the undo action explicitly removed the parent first (which caused its children to be removed implicitly), and then it tried to explicitly remove the children, which threw an error - because the children have already been removed.
 
- 
    
ui.Inspector - fix
unsetProperty()method so that it usesCell.removeProp()Details...
This fix removes a bug stemming from duplicate code - the
Cell.removeProp()function is a newer function which provides the same functionality at a more logical location, and which properly re-renders the CellView forattrschanges. 
- 
    
ui.Inspector - fix to throw an error when encountering an expression using an unregistered custom primitive operator
It is possible to define custom operators for use in Inspector expressions. Crucially, all of these extra operators must be defined in the
operatorsobject during the instantiation of the Inspector.Previously, if an unknown operator were encountered by the expression-evaluation algorithm, it would fail with a difficult-to-debug error. Instead, the algorithm now explicitly checks the list of built-in primitive and composite operators and the list of registered custom operators (as defined in the
operatorsobject) for each expression encountered. If an operator cannot be found in either of these lists, an error providing its name is thrown. 
- 
    
ui.Navigator - fix error occurring after a
scrollevent when the Navigator is not renderedPreviously, scrolling a PaperScroller while having a Navigator component defined - but not rendered - caused an error to be thrown. The issue has been resolved for this version by fixing the Navigator component’s PaperScroller listener.
 
- 
    
ui.PaperScroller - fix to set panning inertia velocity at zero on drag start
There was an error in our implementation of inertia for the PaperScroller component - on drag start, a nonzero inertia velocity was introduced, which was a problem if drag end was then triggered immediately afterward without any intervening drag movement (e.g. when using the tap gesture). This caused the incorrect value of inertia velocity to be used, introducing movement when none was expected. The inertia implementation was fixed in this version to prevent this issue.
 
- 
    
ui.Selection - fix to trigger
selection-boxevents when Paper is not interactiveThis fix ensures that
selection-boxevents are triggered even when there are no allowed interactions with Selection box or active elements. In addition, the fix prevents triggering soloaction:pointerupevent when selecting and translating in this situation. 
- 
    
ui.Selection - fix to prevent dragging the selection while the user interacts with other Cells
This fix prevents an issue where starting to drag a non-selected Element when a Selection is present on a Paper caused the Selection to be dragged (instead of the Element).
 
- 
    
ui.Stencil - fix
groupsoption inheritance, fix non-uniform behavior oflayoutcallbackThis is a collection of fixes for making the behavior of Stencil groups more consistent:
- The Graph sent to the 
layoutcallback function always has thegroupproperty set. This was previously only the case at initialization, but now it is also done when filtering the Graph. - Each group’s specific 
paperOptionsare taken into account during Graph creation (as is the case for all other attributes). - The 
filter()function no longer throws an error when no search is defined (''). Instead, it hides all Elements (equivalent to setting the search to{}). 
 - The Graph sent to the 
 
- 
    
layout.PortLabel - fix passing of
label.position.args.attrsininside,outside,radiallayoutsThere was a bug in the implementation of several PortLabel functions (
'inside','insideOriented','outside','outsideOriented','radial','radialOriented'), which caused them to ignore values provided inlabel.position.args.attrs. This change makes sure that these values are correctly propagated for all PortLabel layout functions, such that all calculated attributes can be overridden manually. 
- 
    
connectors.jumpover - fix to prevent stacked links from causing jumps
Previously, the
jumpoverconnector was treating overlapping links as having an intersection, which caused it to draw jumps where they were not expected. We have added additional logic to the algorithm to prevent this behavior.Before fix After fix 

 
- 
    
util.breakText - fix to prevent NO_SPACE characters from appearing in the result
Details...
When breaking down text, occasionally, an extra NO_SPACE character (
'0') was added by thebreakText()function. This was a bug - the character is internally used to separate lines, and in certain edge cases (when moving the last character from the previous line to the new line), it was not removed as expected. The function has been fixed to prevent this issue.