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()
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
ignoreDefaults
andignoreEmptyAttributes
options totoJSON()
- dia.Cell - add
reparent
option toembed()
- elementTools.Control - add pointer event to
setPosition()
andresetPosition()
signature - linkTools - add
Control
link tool - linkTools - add
RotateLabel
link tool - linkTools - fix pending batch for
TargetArrowhead
andSourceArrowhead
- 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 previousrender()
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 tocontainsPoint()
ofRect
@joint/layout-directed-graph
- layout.DirectedGraph - add
graph
option 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
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
, andlodash
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 toboundary
- dia.Paper - add SVG
grid
layer - dia.Paper - drop
drawGrid()
andclearGrid()
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 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
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
touserSpaceOnUse
- 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 version1.0.4
(free fromlodash
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
ininside
,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 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
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 andstraight
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 ofdia.Paper.transformToFitContent()
- dia.Paper - add
overflow
option - dia.Paper - add
transformToFitContent()
method - dia.Paper - change
scaleContentToFit()
into an alias oftransformToFitContent()
- dia.Paper - add
verticalAlign
andhorizontalAlign
options totransformToFitContent()
- dia.Paper - add
element:magnet:pointerdown
,element:magnet:pointermove
andelement: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 nopaper: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
andabsoluteOffset
options - 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
expandOnly
andshrinkOnly
options tofitToChildren()
andfitParent()
- dia.Cell - fix to always send
propertyPath
andpropertyValue
options 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
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
androunded
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()
withdeep
option set tofalse
- util.svg - support embedded expressions
- util.svg - prevent
className
set tonull
14-10-2022 (v3.6.1)
- util.breakText - prevent infinite loop when using
preserveSpaces
- util.breakText - always account for
height
when 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
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
andlabelRoot
selectors - 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
scale
option - elementTools.HoverConnect - new connection tool displayed on mouseover
- elementTools.Button - enable
calc()
expression forx
andy
- 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 forwidth
andheight
fortextWrap
attribute - dia.attributes -
fontSize
andstrokeWidth
usecalc()
- 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 onmouseleave
- 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 whencalc()
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
withsnapLinks
enabled - dia.Paper - make sure
paper:mouseleave
event is always triggered - dia.Element -
position()
allowsrestrictedArea
to be used withoutdeep
option - 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
x
andy
properties tocalc()
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
andinitFlag
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 toconnection
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
andgraphlib
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 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
cells
parameter [breaking change] - dia.CellView - listening for underlying model changes switched from a specific attribute change (e.g.
change:size
) to a generalchange
event [breaking change] - dia.CellView - remove deprecated getStrokeBBox() [breaking change]
- Vectorizer - change
xmlns
tosvg
namespace, add correctxmlns
namespace [breaking change] - remove deprecated
PortsModelInterface
andPortsViewInterface
fromjoint.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
andcell: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 lineline-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
andpreventDefaultBlankAction
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 takesx
into account - dia.attributes - add
event
for easier events handling on CellViews andresetOffset
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
andnodeValue
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
andrefDx
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 preceedingblank: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
andports: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
andnodeName
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