Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

@joint/layout-directed-graph

clientIO15kMPL-2.04.1.4TypeScript support: included

LayoutDirectedGraph module for JointJS

jointjs, layout, directed, graph

readme

changelog

13-03-2025 (v4.1.4)

@joint/layout-directed-graph

  • layout.DirectedGraph - fix resizeClusters option logic to only resize top-level clusters whose children were provided to the layout() function

04-03-2025 (v4.1.3)

@joint/layout-directed-graph

  • layout.DirectedGraph - fix to accept 0 value for nodesep, edgesep, ranksep options of layout()

04-02-2025 (v4.1.3)

@joint/core

  • mvc.Dom - use getComputedStyle for static position check

16-01-2025 (v4.1.2)

@joint/core

  • mvc.Listener - fix to support running in Web Workers

02-12-2024 (v4.1.1)

@joint/core

  • dia.ElementView - fix return types (DOM Element vs. dia.Element)
  • dia.ToolsView - make sure tools are rendered before the first update

27-11-2024 (v4.1.0)

@joint/core

  • dia.Paper - add methods to find cell/element/link views in paper
  • dia.ElementView - add getTargetParentView() method
  • dia.ElementView - fix to prevent exception when position or size is not defined
  • dia.LinkView - update tools when labels change
  • dia.LinkView - fix to invalidate the root node cache when labels change
  • dia.CellView - expose special presentation attributes API
  • dia.CellView - add isIntersecting() method
  • dia.Graph - accept toJSON() options
  • dia.Graph - add transferCellEmbeds() and transferCellConnectedLinks() methods
  • dia.Graph - add methods to find cells/elements/links in graph
  • dia.Graph - fix to remove graph reference from cells after resetCells()
  • dia.Element - add getPortGroupNames() method
  • dia.Cell - add ignoreDefaults and ignoreEmptyAttributes options to toJSON()
  • dia.Cell - add reparent option to embed()
  • elementTools.Control - add pointer event to setPosition() and resetPosition() signature
  • linkTools - add Control link tool
  • linkTools - add RotateLabel link tool
  • linkTools - fix pending batch for TargetArrowhead and SourceArrowhead
  • linkTools.Vertices - add vertexAdding.interactiveLinkNode option
  • linkTools.Button - allow distance to be defined via callback
  • routers.RightAngle - fix various routing issues
  • dia.HighlighterView - add static getAll() method
  • dia.ToolsView - fix to prevent tool update() from being called before previous render() due to visibility
  • dia.ToolView - add visibility option callback
  • mvc.View - fix to allow setting style via options
  • util - add objectDifference() method
  • util - expose calc() expression API
  • util - expose cloneCells() method
  • Geometry - add strict option to containsPoint() of Rect

    @joint/layout-directed-graph

  • layout.DirectedGraph - add graph option to fromGraphLib()

31-05-2024 (v4.0.4)

@joint/core

  • update HTML demo in alignment with v4
  • dia.LinkView - fix missing arrowheads in Safari
  • dia.attributes - fix to take the inline font attributes into account in textWrap

14-05-2024 (v4.0.3)

  • examples.libavoid - add new demo to illustrate using libavoid-js for orthogonal routing

    @joint/core

  • dia.Paper - fix to ensure grid pattern IDs are unique
  • dia.ElementView - fix to support port IDs of number type
  • linkTools.SourceArrowhead - fix to trigger pointerdown event when the user starts dragging an arrowhead
  • linkTools.TargetArrowhead - fix to trigger pointerdown event when the user starts dragging an arrowhead

10-04-2024 (v4.0.3)

@joint/layout-directed-graph

  • fix distributed package.json by resolving @joint/core workspace dependency

09-04-2024 (v4.0.2)

@joint/core

  • dia.Paper - fix to prevent leaks of pending animation frame requests on resetViews()
  • routers.rightAngle - fix to improve generated route
  • dia.attributes - fix text-wrap to take external CSS into account
  • Vectorizer - fix normalizePathData() to support zero-length arcto curves

02-02-2024 (v4.0.1)

@joint/core

  • fix content of dist folder

    @joint/layout-directed-graph

  • change the constraint on @joint/core dependency to allow patches only

01-02-2024 (v4.0.0)

  • switch to a monorepo

    @joint/core

  • rename package from jointjs to @joint/core
  • remove jQuery, backbone, and lodash dependencies
  • drop CSS (JointJS no longer distributed with CSS)
  • dia.Paper - change the default cell sorting to APPROX type
  • dia.Paper - remove deprecated perpendicularLinks option
  • dia.Paper - remove deprecated linkConnectionPoint option
  • dia.Paper - change the value of the defaultConnectionPoint option to boundary
  • dia.Paper - add SVG grid layer
  • dia.Paper - drop drawGrid() and clearGrid() methods
  • dia.Paper - new transform event added
  • dia.Paper - allow passing custom data along with transformation events
  • dia.Paper - allow passing custom data along with resize events
  • dia.Paper - origin option removed
  • dia.Paper - setOrigin method removed
  • dia.Paper - scale() no longer accepts scaling origin
  • dia.Paper - add scaleUniformAtPoint() method
  • dia.Paper - fix paper:pinch dispatched event type
  • dia.LinkView - remove support for legacy
  • dia.CellView - early evaluation of calc attributes
  • dia.CellView - disable useCSSSelectors by default
  • dia.Graph - throw exception when cell constructor not found
  • dia.Link - become an abstract class (same as dia.Element)
  • dia.Link - replace legacy attributes in the default label definition
  • dia.Link - remove the deprecated smooth attribute
  • dia.Link - remove the deprecated manhattan attribute
  • dia.Cell - add mergeArrays options to constructor
  • dia.Cell - remove the parent(id) setter
  • shapes.standard - use calc expressions instead of legacy attributes (drop use of refWidth, refHeight, refX, refY, etc.)
  • shapes.basic - remove in favor of shapes.standard
  • shapes.devs - remove from package, define as custom shapes in demos
  • shapes.pn - remove from package, define as custom shapes in demos
  • shapes.uml - remove from package, define as custom shapes in demos
  • shapes.logic - remove from package, define as custom shapes in demos
  • shapes.org - remove from package, define as custom shapes in demos
  • shapes.chess - remove from package, define as custom shapes in demos
  • shapes.fsa - remove from package, define as custom shapes in demos
  • highlighters.opacity - add alphaValue option
  • highlighters.stroke - add nonScalingStroke option
  • elementTools.Remove - change type to remove
  • linkTools.Remove - change type to remove
  • linkTools.Vertices - fix to trigger link:mouseleave event when the user stops dragging a vertex
  • attributes.filter - change the coordinate system of the filters from objectBoundingBox to userSpaceOnUse
  • util - remove deprecated shapePerimeterConnectionPoint
  • Vectorizer - enable camel case attribute support by default
  • Vectorizer - make the attributeNames property public

    @joint/layout-directed-graph

  • move the DirectedGraph layout into separate package
  • upgrade dagre to version 1.0.4 (free from lodash dependency)

07-11-2023 (v3.7.7)

  • dia.Paper - fix custom events on link label
  • util.breakText - fix hyphenation regex to take international characters into account

20-10-2023 (v3.7.6)

  • dia.Cell - make prop()'s internal set() call more efficient
  • dia.LinkView - fix to prevent hidden doubleLinkTools to affect link bounding box
  • dia.attributes - fix to read all breakText options in textWrap attribute
  • dia.attributes - fix ambiguous order of cache keys in text attribute
  • connectors.Curve - fix wrong target tangent right direction
  • linkTools.Segments - throw explicit error when incompatible router in use
  • shapes.standard - fix cursor style on DoubleLink and ShadowLink
  • util.breakText - fix to use the defined separator to join words
  • util.breakText - fix to allow empty string to be separator
  • Geometry - prevent unnecessary object instantiation in Rect.prototype.containsPoint()
  • Geometry - prevent rounding errors in simplify() of Polyline

02-08-2023 (v3.7.5)

  • layout.PortLabel - fix passing of label.position.args.attrs in inside, outside, radial layouts
  • connectors.Jumpover - fix to prevent stacked links from causing jumps
  • util.breakText - fix to prevent NO_SPACE characters from appearing in the result

23-06-2023 (v3.7.4)

  • dia.LinkView - fix element detection when using snapLinkSelf: true

22-06-2023 (v3.7.3)

  • demo.Isometric - add new demo as example of isometric projection
  • dia.Cell - add foregroundEmbeds option to toFront() and toBack() methods
  • dia.Cell - fix the depth-first algorithm in getEmbeddedCells() method

16-05-2023 (v3.7.2)

  • demo - add DWDM (Dense wavelength-division multiplexing) example
  • dia.Paper - allow immediate propagation on pointerup
  • dia.CellView - fix to checkMouseLeave working incorrectly when paper has autoFreeze=true
  • dia.CellView - fix to get correct ref node bounding box
  • dia.HighlighterView - prevent highlighter mounting to unmounted cell views

28-04-2023 (v3.7.1)

  • bump jQuery to v3.6.4
  • demo.ROI - fix zooming in Safari
  • dia.CellView - return correct target under the pointer for pointer events
  • dia.Cell - fix to prevent cell id undefined
  • dia.attributes - prevent error when title is used on element with a text node

18-04-2023 (v3.7.0)

  • demo.CustomEmbedding - add new demo to illustrate custom embedding functionality
  • demo.Flowchart - add new demo to illustrate rightAngle router and straight connector
  • demo.ROI - add new demo to illustrate working with foreign objects
  • demo.FTA - revamp demo to illustrate custom highlighter, straight connector, and alignment options of dia.Paper.transformToFitContent()
  • dia.Paper - add overflow option
  • dia.Paper - add transformToFitContent() method
  • dia.Paper - change scaleContentToFit() into an alias of transformToFitContent()
  • dia.Paper - add verticalAlign and horizontalAlign options to transformToFitContent()
  • dia.Paper - add element:magnet:pointerdown, element:magnet:pointermove and element:magnet:pointerup events
  • dia.Paper - improve event handling of form control elements inside <foreignObject> elements
  • dia.Paper - add preventDefaultViewAction option
  • dia.Paper - add drawGridSize option
  • dia.Paper - add autoFreeze option
  • dia.Paper - fix to trigger render callbacks and event when requireView() is called
  • dia.Paper - fix to send mousewheel events when CTRL key is pressed while there are no paper:pinch subscribers
  • dia.Paper - fix to auto-rotate target markers as expected when using marker.markup
  • dia.Paper - fix event handlers to correctly receive dia.Event on touch screens
  • dia.Paper - fix event handlers so that originalEvent always points to a native event
  • dia.Paper - fix to trigger element:magnet:pointerclick when user clicks an invalid magnet
  • dia.Paper - fix to hide tools and highlighters when associated cell view is detached
  • dia.Paper - fix to throw an error when unfreeze() is called on a paper which has been removed
  • dia.ElementView - fix to correctly update port nodes with ref on size change
  • dia.ElementView - fix to prevent double rendering of ports when CSS selectors are enabled
  • dia.LinkView - enable link label dragging on touch screens in async mode
  • dia.LinkView - fix to take defaultLabel.size into account for link label size calculations
  • dia.LinkView - fix to remember initial cursor offset from label anchor coordinates when dragging
  • dia.LinkView - fix incorrect rotation of labels using keepGradient and absoluteOffset options
  • dia.LinkView - fix to prevent label jumping while being dragged along straight-line Curve links
  • dia.CellView - add preventDefaultInteraction() and isDefaultInteractionPrevented() methods
  • dia.CellView - fix link update if connected element changes at the same time the connection is made
  • dia.Element - add fitToChildren() and fitParent() methods
  • dia.Element - change fitEmbeds() into an alias of fitToChildren()
  • dia.Element - add expandOnly and shrinkOnly options to fitToChildren() and fitParent()
  • dia.Cell - fix to always send propertyPath and propertyValue options when calling prop()
  • dia.Cell - fix inconsistent merging behavior in prop()
  • dia.Cell - fix to preserve stacking of nested cells when toFront()/toBack() is called
  • linkTools.Anchor - fix to trigger mouseleave event after drag-and-drop interaction
  • highlighters.mask - fix to prevent copying of class attribute to <mask> elements
  • layout.PortLabel - fix to center position of labels in outside/inside oriented layouts
  • layout.PortLabel - fix to correctly set vertical position of text labels
  • layout.PortLabel - fix to stop sending redundant information for manual layout
  • connectionPoints.boundary - add option to disable automatic magnet lookup within <g> elements
  • connectors.straight - add new connector, and deprecate normal and rounded connectors
  • routers.rightAngle - add new router, and deprecate oneSide router
  • dia.attributes - add props special attribute for setting various HTML form control properties
  • dia.ports - fix to apply port layout transformations before ref nodes bbox measuring
  • dia.ports - fix to apply port layout attributes to text element
  • util - remove lodash util functions
  • util.breakText - support lineHeight in px units
  • util.normalizeEvent - fix to always return a dia.Event
  • util.parseDOMJSON - add logic to process JSON with string array items as HTML text nodes
  • util.svg - keep correct order of HTML text nodes when parsing <foreignObject> to JSON
  • util.svg - fix to use lowercase for tagName of HTML elements when parsing <foreignObject> to JSON
  • util.svg - fix textContent to contain HTML text nodes from all descendants when parsing <foreignObject> to JSON
  • util.svg - fix to prevent setting empty textContent when parsing <foreignObject> to JSON
  • Geometry - fix getSubdivisions() method for straight-line Curve objects

15-12-2022 (v3.6.5)

  • dia.Paper - remove element unprefixed user-drag property
  • linkTools.Anchor - fix area bounding box when the link is connected to a link

08-12-2022 (v3.6.4)

  • dia.Paper - preserve contextmenu events hierarchy
  • dia.Paper - fix element user-drag property
  • Vectorizer - fix RegEx to avoid potential ReDoS attacks
  • Geometry - fix RegEx to avoid potential ReDoS attacks

28-11-2022 (v3.6.3)

  • dia.Cell - prevent exception when removeProp() called on non-existing top-level attribute
  • linkTools.Segments - fix non-orthogonal edge cases
  • Vectorizer - fix removing & toggling multiple classes at once
  • Vectorizer - remove deprecated hasFeature check

20-10-2022 (v3.6.2)

  • dia.Cell - fix isEmbeddedIn() with deep option set to false
  • util.svg - support embedded expressions
  • util.svg - prevent className set to null

14-10-2022 (v3.6.1)

  • util.breakText - prevent infinite loop when using preserveSpaces
  • util.breakText - always account for height when using preserveSpaces

12-10-2022 (v3.6.0)

  • replace phantomjs with puppeteer
  • demo.Sequence - add editing capabilities
  • demo.ELK - hide details when zoomed out
  • dia.Paper - support pointerdblclick on touch devices
  • dia.Paper - consistent firing of contextmenu event
  • dia.Paper - fix memory leak (layers not being removed)
  • dia.Paper - 2-axis-scroll / pinch-to-zoom support
  • dia.Paper - add snapLinksSelf option to snap arrowheads to the anchor and vertices
  • dia.ElementView - findPortNode() search for all port nodes
  • dia.ElementView - add portRoot and labelRoot selectors
  • dia.ElementView - fix getNodeMatrix() and getNodeBBox() for elements with rotatable group
  • dia.CellView - passing cellView instance to attribute's set, qualify, position and offset methods
  • dia.Cell - throw exception on embedding of an embedded cell
  • dia.HighlighterView - add removeAll() static method
  • dia.HighlighterView - add UPDATE_ATTRIBUTES property
  • elementTools - add scale option
  • elementTools.HoverConnect - new connection tool displayed on mouseover
  • elementTools.Button - enable calc() expression for x and y
  • linkTools - add scale option
  • linkTools.HoverConnect - new connection tool displayed on mouseover
  • linkTools.Connect - fix touch support
  • connectors.Curve - add rotate option
  • layout.Port - enable the use of the calc() expression for port positioning
  • highlighters.list - add a new highlighter to render a dynamic list of icons
  • highlighters.mask - fix rotation and position for nodes within rotatable group
  • highlighters.stroke - fix rotation and position for nodes within rotatable group
  • dia.attributes - calc() expression supports division
  • dia.attributes - enable calc() expression for width and height for textWrap attribute
  • dia.attributes - fontSize and strokeWidth use calc()
  • dia.attributes - prevent negative values for dimension attributes
  • dia.attributes - use cached segments subdivisions for calculating the connection stubs
  • mvc.Listener - add new class for attaching multiple event listeners on multiple objects.
  • util.svg - tagged SVG template
  • util.breakText - add preserveSpaces options
  • util.guid - can be called without an object argument
  • util.getRectPoint - add utility to get a point on a rect from given keyword
  • Vectorizer - text() reads empty line heights from annotations

08-04-2022 (v3.5.5)

  • Add Marey Chart Demo
  • dia.Paper - prevent mouseout being stopped on mouseleave
  • dia.Paper - make sure paper:mouseenter event is always triggered
  • connectors.Curve - fix TangentDirections.RIGHT
  • fix various typescript issues

04-03-2022 (v3.5.4)

  • dia.Cell - fix transition events order
  • dia.Cell - support custom idAttribute

21-02-2022 (v3.5.3)

  • dia.attributes - prevent redundant network requests when href in use
  • connectionStrategies.pinRelative - reduce rounding errors

09-02-2022 (v3.5.2)

  • dia.LinkView - backwards compatible extensibility
  • dia.attributes - fix x attribute for multiline text wrap when calc() in use

02-02-2022 (v3.5.1)

  • dia.Paper - fix mvc.View import

01-02-2022 (v3.5.0)

  • Add Curves Demo
  • Add Fills Demo
  • dia.Paper - add labelsLayer option
  • dia.Paper - add getFitToContentArea()
  • dia.Paper - fix embedding mode with rotated elements
  • dia.Paper - fix adding a new cell with an id of previously removed cell in the async mode
  • dia.Paper - cancel previous background image load
  • dia.Paper - improve markers, gradients and patterns
  • dia.Paper - migrate mousewheel/DOMMouseScroll to wheel
  • dia.Paper - fix update priority stats
  • dia.Paper - improve connectionStrategy with snapLinks enabled
  • dia.Paper - make sure paper:mouseleave event is always triggered
  • dia.Element - position() allows restrictedArea to be used without deep option
  • dia.Cell - embed() and unembed() to accept an array of cells
  • dia.Cell - fix stopTransitions() without path argument
  • dia.Cell - stopping the transition does not require waiting for the transition to start
  • dia.Link - add hasLabels() method
  • elementTools.Connect - a new tool to create links from an element
  • elementTools.Control - a new tool to modify an arbitrary attribute
  • linkTools.Connect - a new tool to create links from a link
  • linkTools.Vertices - allow vertex removal on touch devices
  • linkTools.Anchor - allow anchor reset on touch devices
  • linkTools.Vertices - fix creation and immediate dragging of a vertex on touch devices
  • connectors.curve - add new curved connector
  • dia.attributes - add x and y properties to calc() expression
  • dia.attributes - support negative number addition/subtraction in calc() expression
  • dia.attributes - support nested calc() functions
  • dia.HighlighterView - add z option to control the stacking order of the highlighters
  • dia.ToolsView - add z option to control the stacking order of the tools
  • mvc.View - support double tap event on touch devices
  • mvc.View - allow views to have no theme
  • Vectorizer - allow whitespace and line terminator characters in the constructor
  • Geometry - implement intersection between all objects
  • Geometry - add Polygon object

27-09-2021 (v3.4.4)

  • dia.Graph - prevent attribute type inference from the constructor

24-09-2021 (v3.4.3)

  • Add List Demo (element with a vertical list of items)
  • Whitelist files for NPM publish
  • TypeScript mvc.View improvements
  • dia.Paper - skip update of connected links when isolate flag used
  • dia.LinkView - optimize connector only update
  • dia.Cell - support preinitilize() lifecycle method
  • connectors.jumpover - prevent unnecessary route recalculations

06-09-2021 (v3.4.2)

  • dia.CellView - update typings for ES6 class extension
  • dia.Cell - fix toJSON() when defaults() is defined as a method
  • util - prevent prototype pollution in setByPath()
  • Vectorizer - fix multi-line text line heights when 100% of the line is annotated

18-08-2021 (v3.4.1)

  • dia.ElementView - prevent unnecessary re-parenting after invalid un-embedding
  • dia.CellView - support calc() in transform attribute
  • dia.CellView - allow presentationAttributes and initFlag to be defined as a function
  • Fix minor TS issues
  • Fix minor Docs issues

13-07-2021 (v3.4.0)

  • Add VueJS 3.0 Demo
  • Add Tree-Shake Demo
  • Add Carrier Frequency Bandwidth Demo
  • Add TypeScript shape definition tutorial
  • Remove polyfill for XMLHttpRequest support of IE9
  • Mark library as side-effect-free
  • dia.Paper - add allowNegativeBottomRight option to fitToContent()
  • dia.Paper - add routerNamespace and connectorNamespace options, document missing namespace options
  • dia.Paper - add validateUnembedding() option
  • dia.Paper - add missing frontParentOnly option documentation
  • dia.Graph - fix order of cells in getElements() and getLinks()
  • dia.Cell - add option to use DFS to index embedded cells in toFront() and toBack()
  • dia.attributes - add calc() function to be used in various SVG attributes
  • util.breakText - fix wrapping when the last word contains a hyphen
  • routers.manhattan - improve points comparison performance
  • routers.manhattan - add isPointObstacle option
  • Geometry - split to files
  • Geometry - add Rect methods to find a union of rectangles or points

06-02-2021 (v3.3.1)

  • uglified files encode Unicode characters as ASCII
  • use polyfills from core-js
  • dia.Cell - remove() passes options to unembed() internally to maintain consistency

15-01-2021 (v3.3.0)

  • Prevent prototype pollution - lodash v4.17.20, fix util.setByPath()
  • Prevent DoS - fix util.unsetByPath()
  • demo.ELK - add Eclipse Layout Kernel demo
  • demo.Container - add collapse/expand container demo
  • demo.Typescript - show class style shape definition
  • demo.HTML - implement z-index sorting
  • add Element Tools tutorial
  • dia.Paper - add snapLabels option
  • dia.Paper - restrictTranslate option defined as function returning a function
  • dia.Element - prevent unnecessary rounding errors in resize()
  • dia.Element - add insertPort() to support inserting port at a given position
  • dia.Link - fix order of points in getPolyline()
  • dia.LinkView - prevent connection validation on magnets previously validated
  • dia.CellView - fix update order of nodes when 'ref' in use
  • dia.ToolsView - enable adding tool to a view, which has not been rendered
  • util.breakText - fix height for a text with empty lines
  • highlighters - new API, add mask highlighter
  • highlighters.stroke - add useFirstSubpath option
  • routers.manhattan - fix scan directions order
  • dia.attributes - add magnetSelector & containerSelector
  • dia.attributes - textWrap takes letter-spacing into account
  • Vectorizer - add createSVGStyle() and createCDATASection() static methods
  • Geometry - add getSubpaths() to Path
  • Geometry - add round() methods

04-6-2020 (v3.2.0)

  • add Sequence Diagram demo
  • add HTML Elements demo
  • upgrade jQuery dependency
  • dia.Paper - add beforeRender and afterRender options, add hasScheduledUpdates(), trigger render:done in sync mode
  • dia.Paper - fix missing initial render:done event
  • dia.Paper - prevent the prototype options modification, persist functions passed as options
  • dia.Paper - scaleContentToFit() padding option accepts object
  • dia.Paper - fix isMounted argument of viewport() option
  • dia.Paper - dynamic link update priorities (fix for "link connected to other two links" update bug)
  • dia.Element - port removal runs in batch
  • dia.Element - add getGroupPorts()
  • dia.Element - prevent exception in getPointFromConnectedLink() when port does not exist
  • dia.LinkView - fix never ending batch for legacy link tools
  • dia.LinkView - add requestConnectionUpdate()
  • dia.LinkView - trigger link:snap:connect and link:snap:disconnect events
  • dia.LinkView - prevent exception when labels and connection require update
  • dia.LinkView - measure snap distance for links from magnet's boundary
  • dia.LinkView - add getEndConnectionPoint()
  • mvc.View - add DETACHABLE property to ignore viewport matching, FLAG_INSERT & FLAG_REMOVE defined on per view basis
  • linkTools.Anchor: add resetAnchor option
  • linkTools.Segments: add stopPropagation option
  • connectionPoints.anchor - add align and alignOffset options
  • attributes.textWrap: add maxLineCount option
  • util.breakText - retain new line characters, add maxLineCount option
  • util.sanitizeHTML: sanitize attribute values with "data:" and "vbscript:"
  • Geometry - add parallel() to Line, add serialize() to Point and Line

28-11-2019 (v3.1.1)

  • dia.CellView - prevent DOM exceptions when invalid attrs provided
  • dia.ToolView - prevent contextmenu event (uses paper.options.guard now)

15-10-2019 (v3.1.0)

  • add RoughJS demo
  • add elementTools: Button, Remove, Boundary
  • improve low-level performance for large graphs
  • fix ES5 dependencies
  • dia.Paper - validateMagnet() callback has evt argument
  • dia.Paper - ignore viewport when removing views, register unmounted views on render
  • dia.Graph - fix bfs() stop condition
  • dia.Element - make sure only elements are taken into account in fitEmbeds()
  • dia.LinkView - fix label rendering after multiple changes made to model
  • dia.LinkView - fix missing pointerup event for non-interactive labels
  • linkTools.Boundary - padding can be defined separately for each side
  • dia.ToolView - support reusable tools
  • connectors.jumpover - add radius option to make corners rounded
  • layout.DirectedGraph - remove unnecessary vertices
  • dia.attributes - add stubs option to connection attribute
  • dia.attributes - add displayEmpty for text elements
  • Vectorizer - fix e2c() overflowing the stack in normalizePathData()
  • Geometry - add simplify() to Polyline (remove redundant points)

02-08-2019 (v3.0.4)

  • package.json - add a browser key to point to dist (fix webpack build in IE11)
  • dia.Paper - pass Backbone model options to view update (cell removal & z change)
  • dia.CellView - fix mouseleave event in async mode
  • linkTools.Vertices - fix vertexAdding option

23-07-2019 (v3.0.3)

  • allow for automatic patch upgrades for dependencies
  • changes to config options are respected
  • dia.Paper - ensure SVG document has id
  • dia.Paper - fix viewport matching for links
  • dia.Graph - make hasActiveBatches() use the same logic for various signatures
  • dia.CellView - properly separate elements and ports CSS selectors

27-06-2019 (v3.0.2)

  • layout.DirectedGraph - allow injecting dagre and graphlib as an option property
  • routers.Manhattan - use fallback when source and target are exactly the same
  • fix markup TypeScript definition

17-06-2019 (v3.0.1)

  • remove all global variables
  • dia.LinkView - fix cell:pointerup event

07-06-2019 (v3.0.0)

  • dia.Paper - async mode revamped (viewport matching, rendering progress) [breaking change]
  • dia.Paper - cells are rendered into the paper.cells (previously called paper.viewport), transformations are applied to paper.layers (parent of paper.cells) [breaking change]
  • dia.Graph - getBBox() accepts no parameters and returns the bounding box of the entire graph [breaking change]
  • dia.Graph - getCellsBBox(cells) does not ignore links passed via cells parameter [breaking change]
  • dia.CellView - listening for underlying model changes switched from a specific attribute change (e.g. change:size) to a general change event [breaking change]
  • dia.CellView - remove deprecated getStrokeBBox() [breaking change]
  • Vectorizer - change xmlns to svg namespace, add correct xmlns namespace [breaking change]
  • remove deprecated PortsModelInterface and PortsViewInterface from joint.shapes.basic [breaking change]
  • upgrade dependencies (Backbone v1.4.0, Dagre v0.8.4, Graphlib v2.1.6, jQuery v3.4.1)
  • full support for ES Modules
  • support for Link to Link connections
  • dia.Paper - implement viewport matching (remove views from the DOM when not in the viewport) via viewport option and checkViewport()
  • dia.Paper - add freeze(), unfreeze(), isFrozen() and option frozen to stop/start views updates
  • dia.Paper - add requireView(), dumpViews(), updateViews() to force views to update
  • dia.Paper - add sorting options (none, approximate, exact)
  • dia.Paper - add anchorNamespace, linkAnchorNamespace, connectionPointNamespace, defaultLinkAnchor options
  • dia.Paper - add useModelGeometry for scaleContentToFit(), fitToContent(), getContentBBox(), getContentArea()
  • dia.Paper - add contentArea for scaleContentToFit(), fitToContent()
  • dia.Paper - fitToContent() returns area (g.Rect) of the content
  • dia.Graph - add indirect option for getNeighbors(), getConnectedLinks(), isNeighbor() for link-link connections
  • dia.Link - add priority attribute for anchors
  • dia.Link - add getSourceCell(), getTargetCell(), getPolyline(), getSourcePoint(), getTargetPoint(), getBBox()
  • dia.Link - getSourceElement() and getTargetElement() finds also indirect elements
  • dia.Link - add angle, keepGradient and ensureLegibility options for labels
  • dia.ElementView - add findPortNode()
  • dia.LinkView - properly revert pointer-events attribute after a link interaction
  • dia.LinkView - add root node selector for string markup
  • dia.CellView - keep a dragged always view under the pointer (esp. when restrictTranslate in use)
  • dia.CellView - make sure cell:mouseleave and cell:mouseenter events are always called when the mouse leaves/enters a cell
  • dia.CellView - fix referenced bounding box for nodes outside the rotatable group
  • dia.Cell - add generateId(), generatePortId()
  • anchors - modelCenter anchor accepts dx, dy options
  • linkAnchors - add anchors for link-link connections (ratio, length, perpendicular, closest)
  • linkTools - add stopPropagation option for Vertices tool
  • shapes.standard - add standard.InscribedImage shape
  • util - breakText() prefers breaking words at hyphens
  • util - nextFrame() extra parameters are appended to the arguments the callback receives
  • Vectorizer - fix translateAndAutoOrient() for edge cases
  • Geometry - add divideAt() and divideAtLength() for paths
  • Geometry - supports scientific notation for paths defined via SVGPath data
  • Geometry - add Line.prototype.angle(), Point.prototype.chooseClosest()
  • Geometry - add containsPoint() for Polyline, Path, Curve and Line
  • Geometry - fix Path.prototype.closestPoint() ending in an infinite loop
  • Geometry - add random()
  • add Mix Bus, ForeignObject demos

12-11-2018 (v2.2.1)

  • utils - fix breakText() definition in Typescript
  • dia.CellView - findAttribute() docs
  • grunt - wrapper files use file extension .js.partial
  • demos - improvements

30-10-2018 (v2.2.0)

  • update insecure dependencies (mainly Lodash v4.17.11)
  • use Karma+Istanbul to run tests
  • dia.Graph - getCellsBBox() takes cells' rotation into account
  • dia.Graph - fix cell removal after dry flag passed
  • dia.Paper - support relative dimensions (e.g. width='100%')
  • dia.Paper - add stopDelegation interactive option
  • dia.Paper - add magnetThreshold option (create a link when the pointer leaves the magnet)
  • dia.Paper - allow to stop propagation of paper events
  • dia.Element - add removePorts()
  • dia.ElementView - add element:magnet:pointerclick, element:magnet:dblpointerclick, element:magnet:contextmenu events
  • dia.ElementView - fix embeddingMode for Lodash v4+
  • dia.ElementView - fix cell:pointerclick in Chrome after DOM change
  • dia.LinkView - prevent multiple validate connections for already snapped magnets
  • dia.LinkView - fix label rendering in IE
  • dia.Cell - JSON Markup accepts textContent and groupSelector properties
  • dia.CellView - presentation attributes (attrs) are now applied in the order given
  • mvc.View - prevent multiple onRender() calls
  • mvc.View - add findAttribute()
  • mvc.View - prevent className undefined
  • dia.attributes - add ellipsis option for textWrap
  • dia.attributes - add refWidth2 and refHeight2
  • shapes.standard - add background to BorderedImage
  • shapes.standard - add InscribedImage shape
  • shapes.pn - fix PlaceView
  • connectionPoints.Boundary - fix for non-graphical elements
  • routers.manhattan - prevent rounding errors, add padding option
  • routers.orthogonal - add padding option
  • linkTools - fix touch interactions
  • utils - normalize event.target in normalizeEvent() for <use> tag in IE
  • utils - improve parseCssNumeric() for restrictUnit parameter
  • Vectorizer - add isSVGGraphicsElement()
  • fix legacy PortsViewInterface

1-8-2018 (v2.1.4)

  • reconfigure eslint
  • add .editorconfig
  • dia.Element - fix hasPorts() when no items defined
  • dia.LinkView - stop preventing propagation for legacy link tools events

29-6-2018 (v2.1.3)

  • dia.CellView - fix ambiguous magnet selector
  • dia.LinkView - trigger missing link:pointerdown event on label pointerdown
  • dia.LinkView - fix connection update for loop links
  • dia.Link - improve reparenting (loop link embeds into the connected element, link connected to ancestor and its descendant embeds into the ancestor)
  • dia.Graph - getConnectedLinks() does not contain enclosed links (not necessary embedded links), add includeEnclosed option to get all connected links.
  • dia.Paper - fix cell:contextmenu event
  • dia.Paper - fix missing magnet reference for validateConnection()
  • dia.LinkView - fix backwards compatibility for linkConnectionPoint option signature
  • dia.attributes - fix textWrap attribute
  • Geometry - improve polyline parsing
  • improve advanced tutorials

8-5-2018 (v2.1.2)

  • dia.CellView - fix magnet lookup based on the port property
  • docs - fix broken links

7-5-2018 (v2.1.1)

  • layout.PortLabel - fix manual position
  • anchors - prevent exception when reference node not in the DOM

27-4-2018 (v2.1.0)

  • update Tutorials
  • shapes.Standard - add new set of high-performance elements and links
  • dia.LinkView - new flexible definitions based on geometric representation
  • dia.LinkView - refactor event handlers
  • dia.LinkView - introduce anchors, connectionPoints and connectionStrategy
  • dia.LinkView - add getConnection(), getSerializedConnection(), getConnectionSubdivisions(), getPointAtRatio(), getTangentAtLength(), getTangentAtRatio() getClosestPoint() and getClosestPointLength()
  • dia.LinkView - add getVertexIndex(), getLabelCoordinates()
  • dia.Link - add vertex API
  • dia.Link - add label API and allow define a default label
  • dia.Link - add source(), target(), router(), connector()
  • anchors - ready-to-use anchors (center, top, bottom, left, right, topLeft, topRight, bottomLeft, bottomRight, perpendicular, midSide)
  • connectionPoints - ready-to-use connection points (anchor, bbox, rectangle, boundary),
  • connectionStrategies - predefined connection strategies (defaulAnchor, pinAbsolute, pinRelative)
  • dia.ElementView - allow element's rotation without rotatable group
  • dia.ElementView - refactor event handlers
  • dia.ElementView - apply vector-effect: non-scaling-stroke to nodes inside ths scalable group only
  • dia.Element - add angle()
  • dia.CellView - render markup from JSON (link, element, ports and labels)
  • dia.Cell - avoid unnecessary z-index changes during toFront or toBack
  • dia.ToolsView - set of tools for a link
  • dia.ToolView - base class for a single link tool
  • linkTools - ready-to-use tools (vertices, segments, anchor, arrowhead, boundary, remove button)
  • dia.Paper - complete set of events
  • dia.Paper - add allowLink option to revert/remove invalid links
  • dia.Paper - add getContentArea()
  • dia.Paper - findParentBy option can be defined as a function
  • dia.Paper - consequitive pointerdown, pointermove and pointerup can share event data
  • dia.Paper - fire pointerup event on touchcancel
  • dia.Paper - improve preventing image dragging in FireFox
  • dia.attributes - sourceMarker, targetMarker and vertextMarker receive default stroke, fill and opacity values from its context
  • dia.attributes - add refRInscribed, refRCircumscribed, refD, refPoints, title, textVerticalAnchor attributes
  • dia.attributes - add connection, atConnectionLength, atConnectionRatio
  • routers.Manhattan - adaptive grid for pathfinding
  • routers - supports anchors (don't necessary start and end in the center of the magnet)
  • layout.DirectedGraph - prevent undesired input cells sorting
  • Vectorizer - add toGeometryShape(), normalizePathData(), tagName() and id to prototype
  • Vectorizer - add transformLine() and transformPolyline()
  • Vectorizer - text() accepts textVerticalAnchor option
  • Vectorizer - improve Kappa value
  • Geometry - add Path and Curves
  • Geometry - add Polyline bbox(), scale(), translate(), clone() and serialize()
  • Geometry - implement intersections of line with various shapes
  • Geometry - add Point lerp() for linear interpolation
  • shapes.basic.TextBlock - sanitize text
  • util - normalizeSides() validates input and accepts horizontal and vertical attributes
  • util - add parseDOMJSON(), dataUriToBlob(), downloadBlob(), downloadDataUri() and isPercentage()

15-11-2017 (v2.0.1)

  • toggleFullscreen() - fix canceling fullscreen in an iframe
  • dia.Link - fix default label font color (IE)
  • dia.Cell - fix removeProp() on arrays
  • dia.Graph - fromJSON() does not ignore dry option anymore

23-10-2017 (v2.0.0)

  • Typescript definitions refactored (breaking change of the release)
  • JointJS now compatible with Lodash v4 (see demo/lodash4 for instructions)
  • Geometry - add Polyline with pointAtLength(), length(), closestPointLength(), closestPoint() and convexHull()
  • Geometry - add cross(), dot(), squaredDistance(), closestPoint(), closestPointNormalizedLength(), vector(), vectorAngle(), angleBetween() to Point
  • Vectorizer - add children() and getBBox()
  • Vectorizer - fix parseTransformString() and matrixToTransformString()
  • Vectorizer - make the text y coordinate based on the first line line-height in text()
  • Vectorizer - add option to define the end-of-line character for text()
  • layout.DirectedLayout - add ability to position labels
  • layout.DirectedLayout - fix bug when the elements passed do not include their parents
  • dia.Paper - add clickThreshold, moveThreshold and preventDefaultBlankAction options
  • dia.Paper - add cancelRenderViews() for async mode
  • dia.CellView - do not reset node's transform attribute if no transform applied update()
  • dia.Element - position() can be called with { deep: true } option to set position of the embeds
  • dia.attributes - text attribute takes x into account
  • dia.attributes - add event for easier events handling on CellViews and resetOffset for paths to start at 0,0
  • dia.LinkView - stop triggering link:connect/link:disconnnect when connection not allowed
  • dia.LinkView - can sendToken() backwards
  • highlighters.Stroke - fix for magnets inside scalable group and with zero width or height

31-03-2017 (v1.1.0)

  • add TypeScript definitions
  • update jQuery v3.1.1
  • Geometry - improve Point/Rect prototype.round(precision) - fix coordinates being converted to a string after round() with a precision called, allow negative precision
  • Geometry - add Rect inflate(), bottomLine(), topLine(), leftLine() and rightLine()
  • Geometry - Point offset() and difference() accept both a point and x,y coordinates
  • Geometry - add Line equals()
  • Geometry - Line intersection() renamed to intersect() and calculates intersection points with another line or rectangle
  • Vectorizer - stop accessing deprecated nodeName and nodeValue attribute properties
  • Vectorizer - add prototype.contains() method
  • Vectorizer - add matrixToTransformString() method as opposed to transformStringToMatrix()
  • Vectorizer - add ensureId() method
  • Vectorizer - add appendTo() method
  • Vectorizer - V(node); does not set automatically id on the node anymore
  • Vectorizer - text() with content doesn't set invalid display: null on node anymore
  • Vectorizer - fix convertRectToPathData() for rounded rectangles
  • dia.attributes - add namespace for defining custom attributes, allow camelCase attribute style
  • dia.attributes - new attributes sourceMarker, targetMarker, vertexMarker, textWrap, refRx, refRy, refCx, refCy, refX2, refY2
  • dia.attributes - improve text attribute performance on cellView update
  • dia.attributes - fix mixing various attributes (e.g. transform, refX and refDx now add up)
  • dia.Paper - add defineGradient(), defineFilter(), defineMarker() and isDefined() methods
  • dia.Paper - fix async rendering when cell was previously member of different graph.
  • dia.Paper - improve grid precision, added new grid patterns, update drawGrid() options definition.
  • dia.Paper - blank:pointerup event is fired only after a preceeding blank:pointerdown event
  • dia.Paper - add paperToLocalPoint(), clientToLocalPoint(), pageToLocalPoint(), localToPaperPoint(), localToPagePoint() and localToClientPoint().
  • dia.Paper - add paperToLocalRect(), clientToLocalRect(), pageToLocalRect(), localToPaperRect(), localToClientRect() and localToPageRect()
  • dia.Paper - add clientOffset() and pageOffset()
  • dia.Cell - make cell.attr() work as getter
  • dia.Cell - prop(), removeProp() accept also path defined as an array
  • dia.Element - add size(), getPortPositions() methods
  • dia.Element - rotate() doesn't translate embeddeded cells anymore
  • dia.Link - allow arbitrary shapes for labels
  • dia.LinkView - fix link translating when embedded and has no marker
  • dia.LinkView - set correct port and selector on the link
  • mvc.View - prevent extend() from modifying prototype propertires
  • ports events ports:add and ports:remove triggered when port is added to element/removed from element
  • utils - fix toggleFullScreen() in IE
  • utils - breakText() takes the lineHeight style into account
  • util - change cells() wrapper also accept a single cell
  • highlighter.Stroke - allow multiple strokes to be applied to a single cellView magnet, prevent memory leaks
  • connectors.jumpover - fix on graph reset

18-11-2016 (v1.0.3)

  • make compatibility changes towards jQuery 3.1
  • shapes.TextBlock - fix SVGForeignObject detection
  • dia.Graph - fix graph references stored on cells (when a cell added to another graph)
  • layout.DirectedGraph - fix cell's graph references overriden by the layout
  • Vectorizer - remove deprecated attributes' nodeValue and nodeName calls

27-10-2016 (v1.0.2)

  • Vectorizer - fix convertToPathData() for polyline.
  • add yarn.lock
  • improve documentation

20-09-2016 (v1.0.1)

  • All joint views now use the joint- class name prefix for their class names.
  • dia.Element - make it easy to add ports to an arbitrary element, introduced API for ports manipulation
  • shapes.devs.Model - uses new port API internally. shapes.basic.PortsViewInterface, shapes.basic.PortsInterface are marked as deprecated
  • layout.Port - various layouts for positioning ports
  • layout.PortLabel - various layouts for positioning labels relatively to ports
  • joint.util.deepSupplement, joint.util.supplement, joint.util.mixin, joint.util.deepMixin marked as deprecated. Use lodash _.defaultsDeep, _.defaults, _.assign, _.mixin instead
  • layout.DirectedGraph - layout() returns a bbox
  • dia.LinkView - unify link:options event signature with the rest of events (breaking change)
  • dia.LinkView - fix perpendicular links outside the pahper area
  • dia.ElementView - fix resizing without scalable group, re-render element when markup change
  • dia.ElementView - improve x-alignment and y-alignment for text
  • other bug fixes and improvements

13-06-2016 (v0.9.10)

  • Fixes for webpack, browserify

31-05-2016 (v0.9.9)

  • Added env namespace with env.test(name) and env.addTest(name, fn) methods
  • Added highlighters namespace with two highlighters (stroke and opacity). Highlighting now done automatically when: embedding an element, connecting a link to a port or element.
  • dia.Paper:
  • Added paper.drawGrid(opt) - draws grid lines on the paper's DOM element.
  • Added paper.setGridSize(gridSize) - changes the grid size of the paper.
  • Added paper.setInteractivity() for changing interactivity.
  • Added blank:mousewheel and cell:mousewheel events to paper
  • Added link:connect, link:disconnect paper events for easier link source/target change detection
  • Changed the link tool event signature (e.g. link:options) to be the same as the rest of the cell events.
  • dia.Cell:
  • Added isElement() and isLink() methods
  • dia.Element:
  • Added scale() for transforming element by providing a scale ratio and origin.
  • dia.Link:
  • Added scale() for transforming link by providing a scale ratio and origin.
  • dia.Graph:
  • Added resize(), resizeCells() for a group resizing
  • Added getCellsBBox() for getting a group bounding box
  • Added removeCells()
  • Can now use addCells(), removeCells(), and resetCells() with the same method signature. For example: addCells(cell, cell) addCells(cell, cell, opt) addCells([cell, cell]) addCells([cell, cell], opt) are all valid usage.
  • layout.DirectedGraph:
  • Added layout() align option for rank nodes alignment.
  • Vectorizer:
  • Added transform() method to apply SVG matrix to SVG element
  • Added empty(), before() method
  • prepend() method now accepts single or multiple nodes
  • createSVGTransform() now accepts optionally an SVG matrix
  • Geometry:
  • Added point.scale(), rect.scale() - scale point/rect with given origin.
  • Added point.toJSON(), rect.toJSON() - converts point/rect into JSON object.
  • Added leftMiddle(), rightMiddle(), topMiddle(), bottomMiddle() for finding middle points of rect sides.
  • Added ellipse.fromRect(), rect.fromEllipse() for rect-ellipse interchangeability.

19-12-2015 (v0.9.6/v0.9.7)

  • dia.Graph introduces new functions for traversing graphs: dfs(), bfs(), search(), isSuccessor(), isPredecessor(), getPredecessors(), getSuccessors(), isNeighbor(), isSource(), isSink(), getSources(), getSinks(), getSubgraph(), getFirstCell(), getLastCell() and getCells()
  • new functions for cloning cells dia.Graph.cloneCells(), dia.Graph.cloneSubgraph()
  • dia.Element.resize() function has been extended with 'direction' option allowing for resizing to any side
  • new convenient methods for getting source/target elements added to dia.Link: getSourceElement() and getTargetElement()
  • dia.Paper has a new option 'multiLinks' that when set to false, prevents from creating multiple links between the same elements
  • dia.Paper has a new option function 'guard' that allows for preventing the paper from handling UI events
  • dia.Paper.findViewsInArea() has been extended with 'strict' option that when set, returns only views that are contained within the area passed in the argument
  • Vectorizer adds a new method 'transformPoint()' for a convenient way transform points via SVG transformation matrices
  • Geometry adds a new function rect.union()
  • another new utility function added: joint.util.setAttributesBySelector() for setting attributes on DOM elements referenced by a selector
  • dia.Element and dia.Link has a new function getAncestors() that returs an array of ancestor cells
  • dia.LinkView enables for setting a custom markup for its secondary tools (enabled via the 'doubleLinkTools' option)
  • dia.Graph getNeighbors() function extended with 'inbound' and 'outbound' options
  • dia.Graph has a new translate() method for translating all elements in the graph
  • routers.manhattan introduces new options 'startDirections', 'endDirections' to control what direction a link can start/end; and 'excludeTypes' to ignore certain element types as obstacles
  • links are now much faster when used with manhattan router
  • fixed a critical bug in upcoming Google Chrome which removed the native getTransformToElement() method on SVG elements
  • other bug fixes and improvements

08-09-2015 (v0.9.5)

  • layout.DirectedGraph upgrades Dagre to v0.7.1
  • layout.DirectedGraph introduces new option 'resizeClusters' to reposition and resize cluster elements (parents of other elements) so that they embody their children
  • cells get removeProp() method for removing - possibly nested - properties
  • cells get new addTo() method as a syntactic sugar for adding them to joint.dia.Graph
  • prop() methods on cells now accepts 'undefined' as a value (instead of behaving like a getter)
  • remove() method now correctly propagates the options object to all listeners
  • routers.Manhattan router was improved to cope with hierarchical diagrams with embedded elements and does not consider ancestors of elements as obstacles
  • routers.Manhattan router got smarter, finding better paths between source and target of a link
  • new router for links 'oneSide' that always routes links to/from a certain side specified
  • new 'jumpover' connector type
  • Vectorizer adds sample() method for interpolating any SVG path with discrete equidistant points
  • Vectorizer adds convertToPath(), convertToPathData() and findIntersection() functions
  • Vectorizer adds findAnnotationsAtIndex(), findAnnotationsBetweenIndexes() and shiftAnnotations() helper functions manipulating text annotations (see Vectorizer:text())
  • Vectorizer now sets 'v-line' class to all text lines rendered with text() and 'v-empty-line' for lines that are empty
  • Vectorizer find() now returns an array of vectorizer elements, not the DOM NodeList
  • Vectorizer V() function now throws an error if invalid markup is given to it making wrong shape definitons visible to the programmer
  • Vectorizer bbox() now does not round values making calculations more precise
  • Geometry adds rect:equals(), rect:snapToGrid() and rect:intersect() functions
  • Geometry adds clone() method to all objects
  • new events in joint.dia.Paper link:pointerdown, link:pointerdown, link:pointermove, link:pointerup, element:pointerdown, element:pointermove, element:pointerup
  • new events in joint.dia.Paper cell:contextmenu and blank:contextmenu
  • new maxWidth and maxHeight options in joint.dia.Paper fitToContent() method
  • joint.dia.Paper adds labelMove option to the 'interactive' object for enabling moving labels via UI
  • joint.dia.Paper findViewByModel() significantly improved performance
  • fixes in joint.dia.Paper async rendering
  • new 'restrictTranslate' option in joint.dia.Paper for restricting movement of elements
  • joint.dia.Paper introduces new 'cellViewNamespace' option for declaring custom namespace for views (defaults to 'joint.shapes')
  • joint.dia.Paper 'elementView' and 'linkView' options can be now functions
  • joint.dia.Paper introduces new 'defaultRouter' and 'defaultConnector' options
  • joint.dia.Paper introduces new 'linkPinning' option to disable creating links without source/target
  • joint.dia.Paper now ignores mouse events that are not relevant (events that do not target the internal SVG document or a cell)
  • joint.dia.Paper remove() make a proper cleanup of all views
  • fixed using multiple joint.dia.Paper objects on the same page so that they don't share any options
  • fixed normalization of touch events that now expose stopPropagation() and preventDefault() as all other events do
  • new method findModelsUnderElement() in joint.dia.Graph for finding elements below another element
  • joint.dia.Graph fixes the fetch() method
  • joint.dia.Graph introduces new 'cellNamespace' option for declaring custom namespace for models (defaults to 'joint.shapes')
  • joint.dia.Graph adds new method getCells()
  • joint.dia.Graph getNeighbors() method improved and extended with 'deep' option to better support hierarchical diagrams containing embedded elements
  • joint.dia.Link adds offset property on labels and implements dragging labels off the links
  • joint.dia.Element adds fitEmbeds() method for resizing the element so that it fits all the embedded elements inside it
  • joint.dia.ElementView getBBox() now returns the rect object of Geometry library that directly exposes various math functions for rectangles
  • new joint.util.getElementBBox() function for getting a bounding box of both HTML and SVG elements
  • new joint.util.normalizSides() function
  • new joint.util.sortElements() function for sorting DOM elements
  • add an optional context parameter to joint.util.nextFrame()
  • new filters joint.filter.outline and joint.filter.highlight
  • special JointJS attributes ref-x, ref-y, ref-width and ref-height can be specified in percentages
  • joint.dia.Link routers and connector can be now specified as functions
  • source code passed through JSCS checker, fixed coding style and indentation
  • Lodash upgraded to the latest version v3.10.1
  • Backbone upgraded to v1.2.1
  • make JointJS compatible with Browserify, Webpack and RequireJS
  • other fixes and improvements

03-02-2015 (v0.9.3)

  • add cell:highlight and cell:unhilight events to dia.Paper for custom highlithing
  • add isEmbeddedIn() method to dia.Element and dia.Link
  • introduce "deep" option in toFront() and toBack() methods on cells
  • introduce validateEmbedding() optional function on dia.Paper
  • add getCommonAncestor() method to dia.Graph
  • add reparent() method to dia.Link
  • add getEmbeddedCells() with "deep", "breadthFirst" options to dia.Element
  • extend getConnectedLink() method on dia.Graph with "deep" option
  • add joint.util.breakText() function for auto-breaking text into lines
  • add getBBox() method to dia.Graph for finding the compound bounding box of more elements
  • add cell:mouseover and cell:mouseout events to dia.Paper
  • add isLink() method to cells for a quick check if cell is a link or an element
  • add new special attributes "ref-width" and "ref-height"
  • add support for text along paths to Vectorizer and also via cell attrs
  • add new options parameter to dia.Element:translate()
  • add new "fitToContent" options "minWidth" and "minHeight" in dia.Paper
  • expose "defs", "viewport" and "svg" properties on dia.Paper
  • many other improvements and bug fixes

16-09-2014 (v0.9.2)

  • add joint.version property with the JointJS version currently in use
  • extend interactive option in dia.Paper for finer control over the interactivity of links
  • add getBBox(elements) method to dia.Graph for returning bounding box of all the elements in the parameter
  • allow embedding links to elements in order to translate their vertices if the parent moves
  • introduce translate() method on links for translating all vertices (and source/target if they are points)
  • add extra parameter in dia.Element rotate() method for rotating around custom origin
  • introduce linkConnectionPoint() function in dia.Paper options for custom definition of link sticky points
  • introduce findView() method on cells for easier lookup of paper views
  • introduce addTo() method on cells for quicker adding cells to the graph
  • introduce scaleContentToFit() method on dia.Paper
  • implement sendToken() method on the link view for sending animated tokens along links
  • add prop() method to elements and links for easier setting of custom data, potentially nested
  • upgrade Backbone to v1.1.2
  • allow external function for setting positions and vertices in layout.DirectedGraph plugin
  • introduce markAvailable option on dia.Paper for highlighting available elements/ports while reconnecting
  • introduce origin option and setOrigin() on dia.Paper
  • add basic.Rhombus shape
  • add new geometry functions: point.bearing, point.reflection, line.bearing, line.pointAt, rect.containsRect, rect.normalize, rect.bbox
  • other bug fixes and improvements

13-05-2014 (v0.9.0)

  • add g.scale.linear(domain, range, value) function to the Geometry library
  • add joint.util.format.number() for formatting numbers via the Python Format specification mini-language
  • improve joint.shapes.basic.TextBlock
  • add ref-width and ref-height JointJS special attributes
  • add joint.util.breakText() for breaking text to lines based on a desired area
  • add joint.util.unsetByPath() for deleting nested properties of any object
  • add joint.dia.Cell.prototype.removeAttr() for deleting presentational attributes from cells
  • make Geometry and Vectorizer libraries completely standalone
  • implement pluggable link routing
  • add manhattan, orthogonal, rounded and metro smart link routing avoiding elements
  • adjustments to DirectedGraph plugin
  • add V.rectToPath method to Vectorizer
  • fix special attributes for multiple selected elements in joint.dia.Element
  • set a CSS class to links based on their type
  • drop jquery.sortElements.js plugin
  • remove elements in batch in joint.dia.Graph.prototype.clear() method
  • add support for click events to the joint.dia.Paper
  • other bug fixes and improvements

21-01-2014 (v0.8.0)

  • add support for SVG filters
  • add support for SVG gradients
  • implement better handling of ports
  • add validateConnection() as a function to paper options
  • add defaultLink model to paper otions
  • improve support for touch devices
  • add joint.shapes.basic.TextBlock that handles text wrapping via foreignObject
  • speed up link rendering and updates
  • other bug fixes and improvements

03-12-2013 (v0.7.1)

  • upgrade to jQuery v2.0.3
  • take into accont minLen property in links in DirectedGraph plugin
  • return width/height of the layouted graph in DirectedGraph plugin
  • add centerContent() method to the joint.dia.Paper
  • emit cell:pointerdblclick and blank:pointerdblclick events when a cell/blank paper is double clicked

04-11-2013 (v0.7.0)

  • make JointJS models compatible with NodeJS (npm install jointjs)
  • add animations (transition(), getTransitions(), stopTransition() in cells)
  • implement transitions timing functions (linear, quad, cubic, inout, exponential, bounce, reverse, reflect, back, elastic)
  • implement transitions interpolating functions (number, object, hexColor, unit)
  • fix graph.toJSON()
  • fix listening on model events in views
  • other bug fixes and improvements

15-10-2013 (v0.6.4)

  • integrated Dagre v0.3.0 into DirectedGraph plugin
  • bug fixes and improvements in all the shape plugins
  • manhattan link routing (set manhattan: true option in the joint.dia.Link constructor)
  • fix joint.dia.CellView highlight/unhighlight methods
  • new joint.util.setByPath(), joint.util.getByPath() and joint.util.flattenObject() helper functions
  • joint.dia.Cell.prototype.attr() can now optionally take a string defining a path separated by / character
  • new joint.dia.Paper.prototype.fitToContent() method to auto-set the paper dimensions in order to fit the content
  • cubic bezier is drawn even on a link with no vertices when smooth: true flag is set
  • add tool-options markup to the link-tool by default (by default hidden in joint.css)
  • add (a naive but handy) joint.dia.CellView.prototype.getStrokeBBox() method
  • add g.normalizeAngle() method to the geometry library
  • snap elements to grid when they get translated (now real grid snapping - not old relative snapping)
  • add getBBox() method to the element model
  • other bug fixes and improvements