20-11-2025 (v4.2.1)
@joint/core
- fix types to allow port optional transformations and make all SVG attributes nullable
10-11-2025 (v4.2.0)
add new ELK layout example
@joint/core
- dia.Paper - introduce layers API
- dia.Paper - rework
autoFreezeoption - dia.Paper - add
measureNode()callback option - dia.Paper - add
findClosestMagnetToPoint()method - dia.Paper - add
viewManagementoption for advanced view lifecycle management - dia.Paper - add
cellVisibility()callback option - dia.Paper - add
disposeHiddenCellViews()method - dia.Paper - add
prioritizeCellViewMount()andprioritizeCellViewUnmount()methods - dia.Paper - add
updateCellVisibility()andupdateCellsVisibility()methods - dia.Paper - add
isCellVisible()method - dia.Paper - fix to only trigger
'render:idle'event after all updates are completed - dia.Paper - fix generic view detachment when
viewport()callback returnsfalse - dia.Paper - fix to trigger
'render:*'events when paper model is reset with no cells - dia.Paper - fix rendering of first batch of updates in
asyncmode to be asynchronous - dia.LinkView - allow link-to-link snap
- dia.LinkView - fix to prevent link snap to a magnet when only the host cell is close enough
- dia.LinkView - fix missing arrowheads in WKWebView
- dia.CellView - make
getNodeBBox()method work for nodes outside the render tree - dia.CellView - optimize measurements of nodes referenced by
refattribute - dia.Graph - add
syncCells()method - dia.Graph - add
removeCell()method - dia.Element - add
filteroption tofitToChildren()andfitParent()methods - dia.Element - add
minRectoption tofitToChildren()andfitParent()methods - dia.Element - support port position
argsinsidepositionproperty - dia.Element - add
getPortBBox()andgetPortCenter()methods - dia.Element - support custom
portLayoutNamespaceandportLabelLayoutNamespace - dia.Element - support passing custom port label layout functions to
label.position - dia.Element - optimize cloning in
getPort()method - dia.Element - optimize
hasPort()andhasPorts()methods - dia.Element - fix to parse numeric strings in port position args
- dia.Cell - add
getCenter()method - dia.Cell - add cell attributes merge strategy
- dia.Cell - support array paths in
transition()andstopTransition()methods - dia.Cell - expose
getAttributeDefinition()method - dia.Cell - fix to always create deep copy of arrays in constructor
- dia.attributes - add
useNoBreakSpacewhich reinstatesV.sanitizeText()functionality - dia.attributes - fix
textWrapattribute when Paper is not in render tree - dia.HighlighterView -
zoption now supports highlighter positioning within SVG - dia.HighlighterView - add static
has()method to check if CellView has a highlighter attached - dia.HighlighterView - fix to prevent highlighting nodes outside cell view
- dia.HighlighterView - fix to prevent removing not-yet-mounted HighlighterViews on unmount
- elementTools - fix tools position when attached directly to ElementView
- linkTools.Vertices - fix to call blur when
redundancyRemoval: false - anchors - add
useModelGeometryoption to all anchors - anchors - add support for
calc()expressions indx,dyoptions - anchors.midSide - add
modeandpreferenceThresholdoptions - connectionPoints - add
useModelGeometryoption tobboxandrectangle - mvc.View - allow providing custom
cidin constructor - mvc.Collection - use a Map to store references
- Vectorizer - add
safeoption togetTransformToElement()method - Vectorizer - add static
getCommonAncestor()method - Vectorizer - add
useNoBreakSpaceoption totext()method - Vectorizer - deprecate static
sanitizeText()method - Vectorizer - fix to preserve camelCase in
attributeName,repeatCountattribute names - Vectorizer - fix to handle implicit line coordinates in
convertToPathData()method - Geometry - add
moveAroundPoint()method toRect fix to keep
'use strict'for minified files@joint/layout-directed-graph
- layout.DirectedGraph - support
clusterPadding: 'default' layout.DirectedGraph - expose Dagre
disableOptimalOrderHeuristicandcustomOrderoptions@joint/layout-msagl
- layout.MSAGL - add new layout package utilizing the Microsoft Automatic Graph Layout
13-03-2025 (v4.1.4)
@joint/layout-directed-graph
- layout.DirectedGraph - fix
resizeClustersoption logic to only resize top-level clusters whose children were provided to thelayout()function
04-03-2025 (v4.1.3)
@joint/layout-directed-graph
- layout.DirectedGraph - fix to accept
0value fornodesep,edgesep,ranksepoptions oflayout()
04-02-2025 (v4.1.3)
@joint/core
- mvc.Dom - use
getComputedStylefor 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
Elementvs.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()andtransferCellConnectedLinks()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
ignoreDefaultsandignoreEmptyAttributesoptions totoJSON() - dia.Cell - add
reparentoption toembed() - elementTools.Control - add pointer event to
setPosition()andresetPosition()signature - linkTools - add
Controllink tool - linkTools - add
RotateLabellink tool - linkTools - fix pending batch for
TargetArrowheadandSourceArrowhead - linkTools.Vertices - add
vertexAdding.interactiveLinkNodeoption - linkTools.Button - allow
distanceto 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 previousrender()due to visibility - dia.ToolView - add
visibilityoption callback - mvc.View - fix to allow setting
stylevia options - util - add
objectDifference()method - util - expose
calc()expression API - util - expose
cloneCells()method Geometry - add
strictoption tocontainsPoint()ofRect@joint/layout-directed-graph
- layout.DirectedGraph - add
graphoption tofromGraphLib()
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
pointerdownevent when the user starts dragging an arrowhead - linkTools.TargetArrowhead - fix to trigger
pointerdownevent when the user starts dragging an arrowhead
10-04-2024 (v4.0.3)
@joint/layout-directed-graph
- fix distributed
package.jsonby resolving@joint/coreworkspace 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-wrapto 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
distfolder@joint/layout-directed-graph
- change the constraint on
@joint/coredependency to allow patches only
01-02-2024 (v4.0.0)
switch to a monorepo
@joint/core
- rename package from
jointjsto@joint/core - remove
jQuery,backbone, andlodashdependencies - drop
CSS(JointJSno longer distributed with CSS) - dia.Paper - change the default cell sorting to
APPROXtype - dia.Paper - remove deprecated
perpendicularLinksoption - dia.Paper - remove deprecated
linkConnectionPointoption - dia.Paper - change the value of the
defaultConnectionPointoption toboundary - dia.Paper - add SVG
gridlayer - dia.Paper - drop
drawGrid()andclearGrid()methods - dia.Paper - new
transformevent added - dia.Paper - allow passing custom data along with transformation events
- dia.Paper - allow passing custom data along with resize events
- dia.Paper -
originoption removed - dia.Paper -
setOriginmethod removed - dia.Paper -
scale()no longer accepts scaling origin - dia.Paper - add
scaleUniformAtPoint()method - dia.Paper - fix
paper:pinchdispatched event type - dia.LinkView - remove support for legacy
- dia.CellView - early evaluation of
calcattributes - dia.CellView - disable
useCSSSelectorsby 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
smoothattribute - dia.Link - remove the deprecated
manhattanattribute - dia.Cell - add
mergeArraysoptions to constructor - dia.Cell - remove the
parent(id)setter - shapes.standard - use
calcexpressions instead of legacy attributes (drop use ofrefWidth,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
alphaValueoption - highlighters.stroke - add
nonScalingStrokeoption - elementTools.Remove - change type to
remove - linkTools.Remove - change type to
remove - linkTools.Vertices - fix to trigger
link:mouseleaveevent when the user stops dragging a vertex - attributes.filter - change the coordinate system of the filters from
objectBoundingBoxtouserSpaceOnUse - util - remove deprecated
shapePerimeterConnectionPoint - Vectorizer - enable camel case attribute support by default
Vectorizer - make the
attributeNamesproperty public@joint/layout-directed-graph
- move the
DirectedGraphlayout into separate package - upgrade
dagreto version1.0.4(free fromlodashdependency)
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.attrsininside,outside,radiallayouts - 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
foregroundEmbedsoption totoFront()andtoBack()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
checkMouseLeaveworking 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
rightAnglerouter andstraightconnector - demo.ROI - add new demo to illustrate working with foreign objects
- demo.FTA - revamp demo to illustrate custom highlighter,
straightconnector, and alignment options ofdia.Paper.transformToFitContent() - dia.Paper - add
overflowoption - dia.Paper - add
transformToFitContent()method - dia.Paper - change
scaleContentToFit()into an alias oftransformToFitContent() - dia.Paper - add
verticalAlignandhorizontalAlignoptions totransformToFitContent() - dia.Paper - add
element:magnet:pointerdown,element:magnet:pointermoveandelement:magnet:pointerupevents - dia.Paper - improve event handling of form control elements inside <foreignObject> elements
- dia.Paper - add
preventDefaultViewActionoption - dia.Paper - add
drawGridSizeoption - dia.Paper - add
autoFreezeoption - dia.Paper - fix to trigger render callbacks and event when
requireView()is called - dia.Paper - fix to send
mousewheelevents when CTRL key is pressed while there are nopaper:pinchsubscribers - dia.Paper - fix to auto-rotate target markers as expected when using
marker.markup - dia.Paper - fix event handlers to correctly receive
dia.Eventon touch screens - dia.Paper - fix event handlers so that
originalEventalways points to a native event - dia.Paper - fix to trigger
element:magnet:pointerclickwhen 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
refon 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.sizeinto 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
keepGradientandabsoluteOffsetoptions - dia.LinkView - fix to prevent label jumping while being dragged along straight-line Curve links
- dia.CellView - add
preventDefaultInteraction()andisDefaultInteractionPrevented()methods - dia.CellView - fix link update if connected element changes at the same time the connection is made
- dia.Element - add
fitToChildren()andfitParent()methods - dia.Element - change
fitEmbeds()into an alias offitToChildren() - dia.Element - add
expandOnlyandshrinkOnlyoptions tofitToChildren()andfitParent() - dia.Cell - fix to always send
propertyPathandpropertyValueoptions when callingprop() - 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
mouseleaveevent after drag-and-drop interaction - highlighters.mask - fix to prevent copying of
classattribute 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
manuallayout - connectionPoints.boundary - add option to disable automatic magnet lookup within <g> elements
- connectors.straight - add new connector, and deprecate
normalandroundedconnectors - routers.rightAngle - add new router, and deprecate
oneSiderouter - dia.attributes - add
propsspecial 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
lineHeightin 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
tagNameof HTML elements when parsing <foreignObject> to JSON - util.svg - fix
textContentto contain HTML text nodes from all descendants when parsing <foreignObject> to JSON - util.svg - fix to prevent setting empty
textContentwhen 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()withdeepoption set tofalse - util.svg - support embedded expressions
- util.svg - prevent
classNameset tonull
14-10-2022 (v3.6.1)
- util.breakText - prevent infinite loop when using
preserveSpaces - util.breakText - always account for
heightwhen usingpreserveSpaces
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
pointerdblclickon touch devices - dia.Paper - consistent firing of
contextmenuevent - dia.Paper - fix memory leak (layers not being removed)
- dia.Paper - 2-axis-scroll / pinch-to-zoom support
- dia.Paper - add
snapLinksSelfoption to snap arrowheads to the anchor and vertices - dia.ElementView -
findPortNode()search for all port nodes - dia.ElementView - add
portRootandlabelRootselectors - dia.ElementView - fix
getNodeMatrix()andgetNodeBBox()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
scaleoption - elementTools.HoverConnect - new connection tool displayed on mouseover
- elementTools.Button - enable
calc()expression forxandy - linkTools - add
scaleoption - linkTools.HoverConnect - new connection tool displayed on mouseover
- linkTools.Connect - fix touch support
- connectors.Curve - add
rotateoption - 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 forwidthandheightfortextWrapattribute - dia.attributes -
fontSizeandstrokeWidthusecalc() - 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
preserveSpacesoptions - 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
mouseoutbeing stopped onmouseleave - dia.Paper - make sure
paper:mouseenterevent is always triggered - connectors.Curve - fix TangentDirections.RIGHT
- fix various typescript issues
04-03-2022 (v3.5.4)
- dia.Cell - fix
transitionevents order - dia.Cell - support custom
idAttribute
21-02-2022 (v3.5.3)
- dia.attributes - prevent redundant network requests when
hrefin use - connectionStrategies.pinRelative - reduce rounding errors
09-02-2022 (v3.5.2)
- dia.LinkView - backwards compatible extensibility
- dia.attributes - fix
xattribute for multiline text wrap whencalc()in use
02-02-2022 (v3.5.1)
- dia.Paper - fix
mvc.Viewimport
01-02-2022 (v3.5.0)
- Add Curves Demo
- Add Fills Demo
- dia.Paper - add
labelsLayeroption - 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
connectionStrategywithsnapLinksenabled - dia.Paper - make sure
paper:mouseleaveevent is always triggered - dia.Element -
position()allowsrestrictedAreato be used withoutdeepoption - dia.Cell -
embed()andunembed()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
xandyproperties tocalc()expression - dia.attributes - support negative number addition/subtraction in
calc()expression - dia.attributes - support nested
calc()functions - dia.HighlighterView - add
zoption to control the stacking order of the highlighters - dia.ToolsView - add
zoption 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
transformattribute - dia.CellView - allow
presentationAttributesandinitFlagto 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:donein 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
contextmenuevent (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
evtargument - 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
pointerupevent for non-interactive labels - linkTools.Boundary - padding can be defined separately for each side
- dia.ToolView - support reusable tools
- connectors.jumpover - add
radiusoption to make corners rounded - layout.DirectedGraph - remove unnecessary vertices
- dia.attributes - add
stubsoption toconnectionattribute - dia.attributes - add
displayEmptyfor 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 &
zchange) - dia.CellView - fix
mouseleaveevent 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
dagreandgraphlibas 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:pointerupevent
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 calledpaper.viewport), transformations are applied topaper.layers(parent ofpaper.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
cellsparameter [breaking change] - dia.CellView - listening for underlying model changes switched from a specific attribute change (e.g.
change:size) to a generalchangeevent [breaking change] - dia.CellView - remove deprecated getStrokeBBox() [breaking change]
- Vectorizer - change
xmlnstosvgnamespace, add correctxmlnsnamespace [breaking change] - remove deprecated
PortsModelInterfaceandPortsViewInterfacefromjoint.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
viewportoption and checkViewport() - dia.Paper - add freeze(), unfreeze(), isFrozen() and option
frozento 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,defaultLinkAnchoroptions - dia.Paper - add
useModelGeometryfor scaleContentToFit(), fitToContent(), getContentBBox(), getContentArea() - dia.Paper - add
contentAreafor scaleContentToFit(), fitToContent() - dia.Paper - fitToContent() returns area (g.Rect) of the content
- dia.Graph - add
indirectoption for getNeighbors(), getConnectedLinks(), isNeighbor() for link-link connections - dia.Link - add
priorityattribute 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-eventsattribute 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
restrictTranslatein use) - dia.CellView - make sure
cell:mouseleaveandcell:mouseenterevents 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,dyoptions - linkAnchors - add anchors for link-link connections (ratio, length, perpendicular, closest)
- linkTools - add
stopPropagationoption for Vertices tool - shapes.standard - add
standard.InscribedImageshape - 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/lodash4for 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
ycoordinate based on the first lineline-heightin 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,moveThresholdandpreventDefaultBlankActionoptions - 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 -
textattribute takesxinto account - dia.attributes - add
eventfor easier events handling on CellViews andresetOffsetfor 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
nodeNameandnodeValueattribute 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
textattribute performance on cellView update - dia.attributes - fix mixing various attributes (e.g.
transform,refXandrefDxnow 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:pointerupevent is fired only after a preceedingblank:pointerdownevent - 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:addandports:removetriggered 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
SVGForeignObjectdetection - 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'
nodeValueandnodeNamecalls
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:optionsevent 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()
alignoption 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: trueflag 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