JointJS+ changelog v3.7.0
Improve support for foreign objects in SVG
This is the main change of this release. While previously HTML control elements had to be treated as a separate functional layer (HTML elements independent from the SVG diagram which had to be kept in sync behind the scenes), JointJS now supports embedding HTML directly in SVG via <foreignObject> elements.
To get started with foreign objects in JointJS, refer to our HTML inside shapes guide.
Details...
In order to enable this functionality, adjustments were made to every step along the way of working with JointJS diagrams - from parsing of JSON through diagram interaction to diagram export.
Most changes were done at the first step - parsing of SVG with <foreignObject> elements inside. Those include a fix to use lowercase for tagName of parsed HTML elements, fixes for textContent to contain HTML text nodes from all descendants and to keep those in correct order without creating empty textContent, and changes to JSON processing logic so that it can interpret string array items as HTML text nodes.
Changes done at the second step - interaction with <foreignObject> elements - include improved event handling of form control elements (which enables seamless user interaction), a new Paper option to enable default view actions, and the addition of a new special attribute props to support setting most common HTML form control properties programmatically.
Finally, changes to export logic enable <img> elements inside foreign objects, while a new option enables exporting HTML form control elements (<input>, <select>, <textarea>) with their current values.
Working with HTML form control foreign objects is illustrated in the new ROI demo.
Upgrade jQuery dependency (v3.6.4)
Adds several minor fixes.
Rewrite AST Application using TypeScript
Live Abstract Syntax Tree Demo
Improve zooming in Chatbot Application using pinch and pan Paper events
In Chatbot Application, fix error occurring when using CommandManager in React
Fixes an issue in the React versions of the app where triggering undo() immediately after using an Input component would throw an error.
Details...
This is because the onBlur() method of the Input component does not get triggered automatically in React when selecting a new element as it does in other environments. This causes CommandManager not to be notified that the undo/redo batch initiated by the Input component has ended, which leads to the undo() method throwing an error.
The issue was solved by defining a React useEffect on the Input component in order to call onBlur() when the component rerenders.
In KitchenSink Application, initiate Selection lasso also when user clicks on a cell while holding SHIFT key
This change was enabled by the new preventDefaultInteraction() method of dia.CellView. By default, Selection lasso is only initiated when user clicks on a blank area of the Paper while holding SHIFT key.

Add DWDM (Dense Wavelength-Division Multiplexing) demo as an example of a network graphical view

Add Flowchart demo
Uses the new rightAngle router and the new straight connector. Also illustrates the new alignment options of the Paper transformToFitContent() method.
See CodePen.
Revamp FTA demo
Uses a custom highlighter and the new straight connector. Also illustrates the new alignment options of the Paper transformToFitContent() method.
See CodePen.