JointJS+ Changelog v4.3.3
JointJS+ 4.3.3 ships with @joint/core 4.3.3, @joint/react 4.3.6, and @joint/router-avoid 4.3.3.
mvc
Collection
mvc.Collection – fix id lookups when a model id collides with a client id
Fix an issue where a model whose id fell into the client-id namespace (for example 'c12') could be shadowed by another model's auto-generated cid. As a consequence graph.getCell('c12') could return the wrong cell, or a newly added cell could be silently merged away as a duplicate.
Client ids are now stored in a map separate from ids, so the two namespaces can never collide.
ui
Inspector
ui.Inspector – fix object-type options of select fields
Fix an issue where the value of a select option defined as an object ({ content: 'Label', value: 'x' }) was not set correctly on the rendered <option> element, so the selected value could not be read back or matched against the model.
react
<GraphProvider />
<GraphProvider /> – fix removed cells being resurrected by stale layout updates
Fix an issue where a layout:update batch that was still pending when a cell was removed could re-create the removed cell's record. This broke undoing a delete, as the resurrected record conflicted with the cell restored by the command manager.
<Paper />
<Paper /> – fix links staying invisible after their endpoint mounts
Fix an issue where links parked with visibility: hidden while waiting for the React content of their endpoint to mount stayed invisible after the content mounted.
react-plus
<PaperScroller />
<PaperScroller /> – forward HTML attributes to the viewport element
<PaperScroller /> now forwards HTML attributes such as role, tabIndex, aria-*, and data-* to the scroller viewport element, alongside the already supported className and style. The id prop is the exception: it remains the feature id used by usePaperScroller(id) and is never written to the DOM.
<PaperScroller role="application" tabIndex={0} aria-label="Diagram canvas">
<Paper renderElement={renderElement} />
</PaperScroller>
<Stencil />
<Stencil /> – fix to show the drag paper as a popover
Fix an issue where the stencil drag paper was not shown as a popover, so the dragged clone could be covered by other content of the host page. The clone now renders in the browser top layer, consistent with ui.Stencil.
router-avoid
RouterService
RouterService – cancel a queued one-shot pass superseded by start()
Fix a crash where a routeAll() or routeSubgraph() pass that was still queued when start() was called ran after the full sync performed by start(). The late pass reset the engine to the pass's subset while the live graph listener was already attached, and a listener referencing an element the engine no longer held aborted the WASM module irrecoverably.
Such a pass now resolves as cancelled instead of running.
MainThreadProvider
MainThreadProvider – fire processed after every incremental change
The main-thread provider now fires the processed event (and consequently the RouterService idle event) after every incremental change, not only after a full sync. This matches the behaviour of the Web Worker provider.