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

Package detail

@joint/core

clientIO56.1kMPL-2.04.1.2TypeScript support: included

JavaScript diagramming library

joint, jointjs, diagram, diagrams, chart, charts, svg, flowchart, graph, visualization, visual, data, dataviz, flow, workflow, process, network, sequence, circuit, hierarchy, hierarchical, editor, javascript, typescript, library, layout, tree, grid, stack, directed, tree-layout, stack-layout, grid-layout, force-directed, visio, bpmn, vsm, value-stream, mapping, family-tree, treeview, entity-relationship, er-diagram, er, planogram, database, orgchart, org, uml, chatbot, kanban, mindmap, vector, yamazumi, shortest, path, finder, shortest-path-finder

readme

changelog

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