-
Notifications
You must be signed in to change notification settings - Fork 856
/
CHANGELOG
997 lines (904 loc) · 59 KB
/
CHANGELOG
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
02-12-2024 (v4.1.1)
@joint/core
* dia.ElementView - fix return types (DOM `Element` vs. `dia.Element`)
* dia.ToolsView - make sure tools are rendered before the first update
27-11-2024 (v4.1.0)
@joint/core
* dia.Paper - add methods to find cell/element/link views in paper
* dia.ElementView - add `getTargetParentView()` method
* dia.ElementView - fix to prevent exception when position or size is not defined
* dia.LinkView - update tools when labels change
* dia.LinkView - fix to invalidate the root node cache when labels change
* dia.CellView - expose special presentation attributes API
* dia.CellView - add `isIntersecting()` method
* dia.Graph - accept `toJSON()` options
* dia.Graph - add `transferCellEmbeds()` and `transferCellConnectedLinks()` methods
* dia.Graph - add methods to find cells/elements/links in graph
* dia.Graph - fix to remove graph reference from cells after `resetCells()`
* dia.Element - add `getPortGroupNames()` method
* dia.Cell - add `ignoreDefaults` and `ignoreEmptyAttributes` options to `toJSON()`
* dia.Cell - add `reparent` option to `embed()`
* elementTools.Control - add pointer event to `setPosition()` and `resetPosition()` signature
* linkTools - add `Control` link tool
* linkTools - add `RotateLabel` link tool
* linkTools - fix pending batch for `TargetArrowhead` and `SourceArrowhead`
* linkTools.Vertices - add `vertexAdding.interactiveLinkNode` option
* linkTools.Button - allow `distance` to be defined via callback
* routers.RightAngle - fix various routing issues
* dia.HighlighterView - add static `getAll()` method
* dia.ToolsView - fix to prevent tool `update()` from being called before previous `render()` due to visibility
* dia.ToolView - add `visibility` option callback
* mvc.View - fix to allow setting `style` via options
* util - add `objectDifference()` method
* util - expose `calc()` expression API
* util - expose `cloneCells()` method
* Geometry - add `strict` option to `containsPoint()` of `Rect`
@joint/layout-directed-graph
* layout.DirectedGraph - add `graph` option to `fromGraphLib()`
31-05-2024 (v4.0.4)
@joint/core
* update HTML demo in alignment with v4
* dia.LinkView - fix missing arrowheads in Safari
* dia.attributes - fix to take the inline font attributes into account in `textWrap`
14-05-2024 (v4.0.3)
* examples.libavoid - add new demo to illustrate using libavoid-js for orthogonal routing
@joint/core
* dia.Paper - fix to ensure grid pattern IDs are unique
* dia.ElementView - fix to support port IDs of number type
* linkTools.SourceArrowhead - fix to trigger `pointerdown` event when the user starts dragging an arrowhead
* linkTools.TargetArrowhead - fix to trigger `pointerdown` event when the user starts dragging an arrowhead
10-04-2024 (v4.0.3)
@joint/layout-directed-graph
* fix distributed `package.json` by resolving `@joint/core` workspace dependency
09-04-2024 (v4.0.2)
@joint/core
* dia.Paper - fix to prevent leaks of pending animation frame requests on `resetViews()`
* routers.rightAngle - fix to improve generated route
* dia.attributes - fix `text-wrap` to take external CSS into account
* Vectorizer - fix `normalizePathData()` to support zero-length arcto curves
02-02-2024 (v4.0.1)
@joint/core
* fix content of `dist` folder
@joint/layout-directed-graph
* change the constraint on `@joint/core` dependency to allow patches only
01-02-2024 (v4.0.0)
* switch to a monorepo
@joint/core
* rename package from `jointjs` to `@joint/core`
* remove `jQuery`, `backbone`, and `lodash` dependencies
* drop `CSS` (`JointJS` no longer distributed with CSS)
* dia.Paper - change the default cell sorting to `APPROX` type
* dia.Paper - remove deprecated `perpendicularLinks` option
* dia.Paper - remove deprecated `linkConnectionPoint` option
* dia.Paper - change the value of the `defaultConnectionPoint` option to `boundary`
* dia.Paper - add SVG `grid` layer
* dia.Paper - drop `drawGrid()` and `clearGrid()` methods
* dia.Paper - new `transform` event added
* dia.Paper - allow passing custom data along with transformation events
* dia.Paper - allow passing custom data along with resize events
* dia.Paper - `origin` option removed
* dia.Paper - `setOrigin` method removed
* dia.Paper - `scale()` no longer accepts scaling origin
* dia.Paper - add `scaleUniformAtPoint()` method
* dia.Paper - fix `paper:pinch` dispatched event type
* dia.LinkView - remove support for legacy
* dia.CellView - early evaluation of `calc` attributes
* dia.CellView - disable `useCSSSelectors` by default
* dia.Graph - throw exception when cell constructor not found
* dia.Link - become an abstract class (same as `dia.Element`)
* dia.Link - replace legacy attributes in the default label definition
* dia.Link - remove the deprecated `smooth` attribute
* dia.Link - remove the deprecated `manhattan` attribute
* dia.Cell - add `mergeArrays` options to constructor
* dia.Cell - remove the `parent(id)` setter
* shapes.standard - use `calc` expressions instead of legacy attributes (drop use of `refWidth`, `refHeight`, `refX`, `refY`, etc.)
* shapes.basic - remove in favor of `shapes.standard`
* shapes.devs - remove from package, define as custom shapes in demos
* shapes.pn - remove from package, define as custom shapes in demos
* shapes.uml - remove from package, define as custom shapes in demos
* shapes.logic - remove from package, define as custom shapes in demos
* shapes.org - remove from package, define as custom shapes in demos
* shapes.chess - remove from package, define as custom shapes in demos
* shapes.fsa - remove from package, define as custom shapes in demos
* highlighters.opacity - add `alphaValue` option
* highlighters.stroke - add `nonScalingStroke` option
* elementTools.Remove - change type to `remove`
* linkTools.Remove - change type to `remove`
* linkTools.Vertices - fix to trigger `link:mouseleave` event when the user stops dragging a vertex
* attributes.filter - change the coordinate system of the filters from `objectBoundingBox` to `userSpaceOnUse`
* util - remove deprecated `shapePerimeterConnectionPoint`
* Vectorizer - enable camel case attribute support by default
* Vectorizer - make the `attributeNames` property public
@joint/layout-directed-graph
* move the `DirectedGraph` layout into separate package
* upgrade `dagre` to version `1.0.4` (free from `lodash` dependency)
07-11-2023 (v3.7.7)
* dia.Paper - fix custom events on link label
* util.breakText - fix hyphenation regex to take international characters into account
20-10-2023 (v3.7.6)
* dia.Cell - make prop()'s internal set() call more efficient
* dia.LinkView - fix to prevent hidden doubleLinkTools to affect link bounding box
* dia.attributes - fix to read all breakText options in textWrap attribute
* dia.attributes - fix ambiguous order of cache keys in text attribute
* connectors.Curve - fix wrong target tangent right direction
* linkTools.Segments - throw explicit error when incompatible router in use
* shapes.standard - fix cursor style on DoubleLink and ShadowLink
* util.breakText - fix to use the defined separator to join words
* util.breakText - fix to allow empty string to be separator
* Geometry - prevent unnecessary object instantiation in Rect.prototype.containsPoint()
* Geometry - prevent rounding errors in simplify() of Polyline
02-08-2023 (v3.7.5)
* layout.PortLabel - fix passing of `label.position.args.attrs` in `inside`, `outside`, `radial` layouts
* connectors.Jumpover - fix to prevent stacked links from causing jumps
* util.breakText - fix to prevent NO_SPACE characters from appearing in the result
23-06-2023 (v3.7.4)
* dia.LinkView - fix element detection when using `snapLinkSelf: true`
22-06-2023 (v3.7.3)
* demo.Isometric - add new demo as example of isometric projection
* dia.Cell - add `foregroundEmbeds` option to `toFront()` and `toBack()` methods
* dia.Cell - fix the depth-first algorithm in `getEmbeddedCells()` method
16-05-2023 (v3.7.2)
* demo - add DWDM (Dense wavelength-division multiplexing) example
* dia.Paper - allow immediate propagation on pointerup
* dia.CellView - fix to `checkMouseLeave` working incorrectly when paper has autoFreeze=true
* dia.CellView - fix to get correct ref node bounding box
* dia.HighlighterView - prevent highlighter mounting to unmounted cell views
28-04-2023 (v3.7.1)
* bump jQuery to v3.6.4
* demo.ROI - fix zooming in Safari
* dia.CellView - return correct target under the pointer for pointer events
* dia.Cell - fix to prevent cell id undefined
* dia.attributes - prevent error when title is used on element with a text node
18-04-2023 (v3.7.0)
* demo.CustomEmbedding - add new demo to illustrate custom embedding functionality
* demo.Flowchart - add new demo to illustrate `rightAngle` router and `straight` connector
* demo.ROI - add new demo to illustrate working with foreign objects
* demo.FTA - revamp demo to illustrate custom highlighter, `straight` connector, and alignment options of `dia.Paper.transformToFitContent()`
* dia.Paper - add `overflow` option
* dia.Paper - add `transformToFitContent()` method
* dia.Paper - change `scaleContentToFit()` into an alias of `transformToFitContent()`
* dia.Paper - add `verticalAlign` and `horizontalAlign` options to `transformToFitContent()`
* dia.Paper - add `element:magnet:pointerdown`, `element:magnet:pointermove` and `element:magnet:pointerup` events
* dia.Paper - improve event handling of form control elements inside <foreignObject> elements
* dia.Paper - add `preventDefaultViewAction` option
* dia.Paper - add `drawGridSize` option
* dia.Paper - add `autoFreeze` option
* dia.Paper - fix to trigger render callbacks and event when `requireView()` is called
* dia.Paper - fix to send `mousewheel` events when CTRL key is pressed while there are no `paper:pinch` subscribers
* dia.Paper - fix to auto-rotate target markers as expected when using `marker.markup`
* dia.Paper - fix event handlers to correctly receive `dia.Event` on touch screens
* dia.Paper - fix event handlers so that `originalEvent` always points to a native event
* dia.Paper - fix to trigger `element:magnet:pointerclick` when user clicks an invalid magnet
* dia.Paper - fix to hide tools and highlighters when associated cell view is detached
* dia.Paper - fix to throw an error when `unfreeze()` is called on a paper which has been removed
* dia.ElementView - fix to correctly update port nodes with `ref` on size change
* dia.ElementView - fix to prevent double rendering of ports when CSS selectors are enabled
* dia.LinkView - enable link label dragging on touch screens in async mode
* dia.LinkView - fix to take `defaultLabel.size` into account for link label size calculations
* dia.LinkView - fix to remember initial cursor offset from label anchor coordinates when dragging
* dia.LinkView - fix incorrect rotation of labels using `keepGradient` and `absoluteOffset` options
* dia.LinkView - fix to prevent label jumping while being dragged along straight-line Curve links
* dia.CellView - add `preventDefaultInteraction()` and `isDefaultInteractionPrevented()` methods
* dia.CellView - fix link update if connected element changes at the same time the connection is made
* dia.Element - add `fitToChildren()` and `fitParent()` methods
* dia.Element - change `fitEmbeds()` into an alias of `fitToChildren()`
* dia.Element - add `expandOnly` and `shrinkOnly` options to `fitToChildren()` and `fitParent()`
* dia.Cell - fix to always send `propertyPath` and `propertyValue` options when calling `prop()`
* dia.Cell - fix inconsistent merging behavior in `prop()`
* dia.Cell - fix to preserve stacking of nested cells when `toFront()`/`toBack()` is called
* linkTools.Anchor - fix to trigger `mouseleave` event after drag-and-drop interaction
* highlighters.mask - fix to prevent copying of `class` attribute to <mask> elements
* layout.PortLabel - fix to center position of labels in outside/inside oriented layouts
* layout.PortLabel - fix to correctly set vertical position of text labels
* layout.PortLabel - fix to stop sending redundant information for `manual` layout
* connectionPoints.boundary - add option to disable automatic magnet lookup within <g> elements
* connectors.straight - add new connector, and deprecate `normal` and `rounded` connectors
* routers.rightAngle - add new router, and deprecate `oneSide` router
* dia.attributes - add `props` special attribute for setting various HTML form control properties
* dia.ports - fix to apply port layout transformations before ref nodes bbox measuring
* dia.ports - fix to apply port layout attributes to text element
* util - remove lodash util functions
* util.breakText - support `lineHeight` in px units
* util.normalizeEvent - fix to always return a `dia.Event`
* util.parseDOMJSON - add logic to process JSON with string array items as HTML text nodes
* util.svg - keep correct order of HTML text nodes when parsing <foreignObject> to JSON
* util.svg - fix to use lowercase for `tagName` of HTML elements when parsing <foreignObject> to JSON
* util.svg - fix `textContent` to contain HTML text nodes from all descendants when parsing <foreignObject> to JSON
* util.svg - fix to prevent setting empty `textContent` when parsing <foreignObject> to JSON
* Geometry - fix `getSubdivisions()` method for straight-line Curve objects
15-12-2022 (v3.6.5)
* dia.Paper - remove element unprefixed user-drag property
* linkTools.Anchor - fix area bounding box when the link is connected to a link
08-12-2022 (v3.6.4)
* dia.Paper - preserve contextmenu events hierarchy
* dia.Paper - fix element user-drag property
* Vectorizer - fix RegEx to avoid potential ReDoS attacks
* Geometry - fix RegEx to avoid potential ReDoS attacks
28-11-2022 (v3.6.3)
* dia.Cell - prevent exception when `removeProp()` called on non-existing top-level attribute
* linkTools.Segments - fix non-orthogonal edge cases
* Vectorizer - fix removing & toggling multiple classes at once
* Vectorizer - remove deprecated hasFeature check
20-10-2022 (v3.6.2)
* dia.Cell - fix `isEmbeddedIn()` with `deep` option set to `false`
* util.svg - support embedded expressions
* util.svg - prevent `className` set to `null`
14-10-2022 (v3.6.1)
* util.breakText - prevent infinite loop when using `preserveSpaces`
* util.breakText - always account for `height` when using `preserveSpaces`
12-10-2022 (v3.6.0)
* replace phantomjs with puppeteer
* demo.Sequence - add editing capabilities
* demo.ELK - hide details when zoomed out
* dia.Paper - support `pointerdblclick` on touch devices
* dia.Paper - consistent firing of `contextmenu` event
* dia.Paper - fix memory leak (layers not being removed)
* dia.Paper - 2-axis-scroll / pinch-to-zoom support
* dia.Paper - add `snapLinksSelf` option to snap arrowheads to the anchor and vertices
* dia.ElementView - `findPortNode()` search for all port nodes
* dia.ElementView - add `portRoot` and `labelRoot` selectors
* dia.ElementView - fix `getNodeMatrix()` and `getNodeBBox()` for elements with rotatable group
* dia.CellView - passing cellView instance to attribute's set, qualify, position and offset methods
* dia.Cell - throw exception on embedding of an embedded cell
* dia.HighlighterView - add `removeAll()` static method
* dia.HighlighterView - add UPDATE_ATTRIBUTES property
* elementTools - add `scale` option
* elementTools.HoverConnect - new connection tool displayed on mouseover
* elementTools.Button - enable `calc()` expression for `x` and `y`
* linkTools - add `scale` option
* linkTools.HoverConnect - new connection tool displayed on mouseover
* linkTools.Connect - fix touch support
* connectors.Curve - add `rotate` option
* layout.Port - enable the use of the `calc()` expression for port positioning
* highlighters.list - add a new highlighter to render a dynamic list of icons
* highlighters.mask - fix rotation and position for nodes within rotatable group
* highlighters.stroke - fix rotation and position for nodes within rotatable group
* dia.attributes - `calc()` expression supports division
* dia.attributes - enable `calc()` expression for `width` and `height` for `textWrap` attribute
* dia.attributes - `fontSize` and `strokeWidth` use `calc()`
* dia.attributes - prevent negative values for dimension attributes
* dia.attributes - use cached segments subdivisions for calculating the connection stubs
* mvc.Listener - add new class for attaching multiple event listeners on multiple objects.
* util.svg - tagged SVG template
* util.breakText - add `preserveSpaces` options
* util.guid - can be called without an object argument
* util.getRectPoint - add utility to get a point on a rect from given keyword
* Vectorizer - `text()` reads empty line heights from annotations
08-04-2022 (v3.5.5)
* Add Marey Chart Demo
* dia.Paper - prevent `mouseout` being stopped on `mouseleave`
* dia.Paper - make sure `paper:mouseenter` event is always triggered
* connectors.Curve - fix TangentDirections.RIGHT
* fix various typescript issues
04-03-2022 (v3.5.4)
* dia.Cell - fix `transition` events order
* dia.Cell - support custom `idAttribute`
21-02-2022 (v3.5.3)
* dia.attributes - prevent redundant network requests when `href` in use
* connectionStrategies.pinRelative - reduce rounding errors
09-02-2022 (v3.5.2)
* dia.LinkView - backwards compatible extensibility
* dia.attributes - fix `x` attribute for multiline text wrap when `calc()` in use
02-02-2022 (v3.5.1)
* dia.Paper - fix `mvc.View` import
01-02-2022 (v3.5.0)
* Add Curves Demo
* Add Fills Demo
* dia.Paper - add `labelsLayer` option
* dia.Paper - add `getFitToContentArea()`
* dia.Paper - fix embedding mode with rotated elements
* dia.Paper - fix adding a new cell with an id of previously removed cell in the async mode
* dia.Paper - cancel previous background image load
* dia.Paper - improve markers, gradients and patterns
* dia.Paper - migrate mousewheel/DOMMouseScroll to wheel
* dia.Paper - fix update priority stats
* dia.Paper - improve `connectionStrategy` with `snapLinks` enabled
* dia.Paper - make sure `paper:mouseleave` event is always triggered
* dia.Element - `position()` allows `restrictedArea` to be used without `deep` option
* dia.Cell - `embed()` and `unembed()` to accept an array of cells
* dia.Cell - fix stopTransitions() without path argument
* dia.Cell - stopping the transition does not require waiting for the transition to start
* dia.Link - add hasLabels() method
* elementTools.Connect - a new tool to create links from an element
* elementTools.Control - a new tool to modify an arbitrary attribute
* linkTools.Connect - a new tool to create links from a link
* linkTools.Vertices - allow vertex removal on touch devices
* linkTools.Anchor - allow anchor reset on touch devices
* linkTools.Vertices - fix creation and immediate dragging of a vertex on touch devices
* connectors.curve - add new curved connector
* dia.attributes - add `x` and `y` properties to `calc()` expression
* dia.attributes - support negative number addition/subtraction in `calc()` expression
* dia.attributes - support nested `calc()` functions
* dia.HighlighterView - add `z` option to control the stacking order of the highlighters
* dia.ToolsView - add `z` option to control the stacking order of the tools
* mvc.View - support double tap event on touch devices
* mvc.View - allow views to have no theme
* Vectorizer - allow whitespace and line terminator characters in the constructor
* Geometry - implement intersection between all objects
* Geometry - add Polygon object
27-09-2021 (v3.4.4)
* dia.Graph - prevent attribute type inference from the constructor
24-09-2021 (v3.4.3)
* Add List Demo (element with a vertical list of items)
* Whitelist files for NPM publish
* TypeScript mvc.View improvements
* dia.Paper - skip update of connected links when isolate flag used
* dia.LinkView - optimize connector only update
* dia.Cell - support preinitilize() lifecycle method
* connectors.jumpover - prevent unnecessary route recalculations
06-09-2021 (v3.4.2)
* dia.CellView - update typings for ES6 class extension
* dia.Cell - fix toJSON() when defaults() is defined as a method
* util - prevent prototype pollution in `setByPath()`
* Vectorizer - fix multi-line text line heights when 100% of the line is annotated
18-08-2021 (v3.4.1)
* dia.ElementView - prevent unnecessary re-parenting after invalid un-embedding
* dia.CellView - support calc() in `transform` attribute
* dia.CellView - allow `presentationAttributes` and `initFlag` to be defined as a function
* Fix minor TS issues
* Fix minor Docs issues
13-07-2021 (v3.4.0)
* Add VueJS 3.0 Demo
* Add Tree-Shake Demo
* Add Carrier Frequency Bandwidth Demo
* Add TypeScript shape definition tutorial
* Remove polyfill for XMLHttpRequest support of IE9
* Mark library as side-effect-free
* dia.Paper - add allowNegativeBottomRight option to fitToContent()
* dia.Paper - add routerNamespace and connectorNamespace options, document missing namespace options
* dia.Paper - add validateUnembedding() option
* dia.Paper - add missing frontParentOnly option documentation
* dia.Graph - fix order of cells in getElements() and getLinks()
* dia.Cell - add option to use DFS to index embedded cells in toFront() and toBack()
* dia.attributes - add calc() function to be used in various SVG attributes
* util.breakText - fix wrapping when the last word contains a hyphen
* routers.manhattan - improve points comparison performance
* routers.manhattan - add isPointObstacle option
* Geometry - split to files
* Geometry - add Rect methods to find a union of rectangles or points
06-02-2021 (v3.3.1)
* uglified files encode Unicode characters as ASCII
* use polyfills from core-js
* dia.Cell - remove() passes options to unembed() internally to maintain consistency
15-01-2021 (v3.3.0)
* Prevent prototype pollution - lodash v4.17.20, fix util.setByPath()
* Prevent DoS - fix util.unsetByPath()
* demo.ELK - add Eclipse Layout Kernel demo
* demo.Container - add collapse/expand container demo
* demo.Typescript - show class style shape definition
* demo.HTML - implement z-index sorting
* add Element Tools tutorial
* dia.Paper - add snapLabels option
* dia.Paper - restrictTranslate option defined as function returning a function
* dia.Element - prevent unnecessary rounding errors in resize()
* dia.Element - add insertPort() to support inserting port at a given position
* dia.Link - fix order of points in getPolyline()
* dia.LinkView - prevent connection validation on magnets previously validated
* dia.CellView - fix update order of nodes when 'ref' in use
* dia.ToolsView - enable adding tool to a view, which has not been rendered
* util.breakText - fix height for a text with empty lines
* highlighters - new API, add mask highlighter
* highlighters.stroke - add useFirstSubpath option
* routers.manhattan - fix scan directions order
* dia.attributes - add magnetSelector & containerSelector
* dia.attributes - textWrap takes letter-spacing into account
* Vectorizer - add createSVGStyle() and createCDATASection() static methods
* Geometry - add getSubpaths() to Path
* Geometry - add round() methods
04-6-2020 (v3.2.0)
* add Sequence Diagram demo
* add HTML Elements demo
* upgrade jQuery dependency
* dia.Paper - add beforeRender and afterRender options, add hasScheduledUpdates(), trigger `render:done` in sync mode
* dia.Paper - fix missing initial render:done event
* dia.Paper - prevent the prototype options modification, persist functions passed as options
* dia.Paper - scaleContentToFit() padding option accepts object
* dia.Paper - fix isMounted argument of viewport() option
* dia.Paper - dynamic link update priorities (fix for "link connected to other two links" update bug)
* dia.Element - port removal runs in batch
* dia.Element - add getGroupPorts()
* dia.Element - prevent exception in getPointFromConnectedLink() when port does not exist
* dia.LinkView - fix never ending batch for legacy link tools
* dia.LinkView - add requestConnectionUpdate()
* dia.LinkView - trigger link:snap:connect and link:snap:disconnect events
* dia.LinkView - prevent exception when labels and connection require update
* dia.LinkView - measure snap distance for links from magnet's boundary
* dia.LinkView - add getEndConnectionPoint()
* mvc.View - add DETACHABLE property to ignore viewport matching, FLAG_INSERT & FLAG_REMOVE defined on per view basis
* linkTools.Anchor: add resetAnchor option
* linkTools.Segments: add stopPropagation option
* connectionPoints.anchor - add align and alignOffset options
* attributes.textWrap: add maxLineCount option
* util.breakText - retain new line characters, add maxLineCount option
* util.sanitizeHTML: sanitize attribute values with "data:" and "vbscript:"
* Geometry - add parallel() to Line, add serialize() to Point and Line
28-11-2019 (v3.1.1)
* dia.CellView - prevent DOM exceptions when invalid attrs provided
* dia.ToolView - prevent `contextmenu` event (uses paper.options.guard now)
15-10-2019 (v3.1.0)
* add RoughJS demo
* add elementTools: Button, Remove, Boundary
* improve low-level performance for large graphs
* fix ES5 dependencies
* dia.Paper - validateMagnet() callback has `evt` argument
* dia.Paper - ignore viewport when removing views, register unmounted views on render
* dia.Graph - fix bfs() stop condition
* dia.Element - make sure only elements are taken into account in fitEmbeds()
* dia.LinkView - fix label rendering after multiple changes made to model
* dia.LinkView - fix missing `pointerup` event for non-interactive labels
* linkTools.Boundary - padding can be defined separately for each side
* dia.ToolView - support reusable tools
* connectors.jumpover - add `radius` option to make corners rounded
* layout.DirectedGraph - remove unnecessary vertices
* dia.attributes - add `stubs` option to `connection` attribute
* dia.attributes - add `displayEmpty` for text elements
* Vectorizer - fix e2c() overflowing the stack in normalizePathData()
* Geometry - add simplify() to Polyline (remove redundant points)
02-08-2019 (v3.0.4)
* package.json - add a browser key to point to dist (fix webpack build in IE11)
* dia.Paper - pass Backbone model options to view update (cell removal & `z` change)
* dia.CellView - fix `mouseleave` event in async mode
* linkTools.Vertices - fix vertexAdding option
23-07-2019 (v3.0.3)
* allow for automatic patch upgrades for dependencies
* changes to config options are respected
* dia.Paper - ensure SVG document has id
* dia.Paper - fix viewport matching for links
* dia.Graph - make hasActiveBatches() use the same logic for various signatures
* dia.CellView - properly separate elements and ports CSS selectors
27-06-2019 (v3.0.2)
* layout.DirectedGraph - allow injecting `dagre` and `graphlib` as an option property
* routers.Manhattan - use fallback when source and target are exactly the same
* fix markup TypeScript definition
17-06-2019 (v3.0.1)
* remove all global variables
* dia.LinkView - fix `cell:pointerup` event
07-06-2019 (v3.0.0)
* dia.Paper - async mode revamped (viewport matching, rendering progress) [breaking change]
* dia.Paper - cells are rendered into the `paper.cells` (previously called `paper.viewport`), transformations are applied to `paper.layers` (parent of `paper.cells`) [breaking change]
* dia.Graph - getBBox() accepts no parameters and returns the bounding box of the entire graph [breaking change]
* dia.Graph - getCellsBBox(cells) does not ignore links passed via `cells` parameter [breaking change]
* dia.CellView - listening for underlying model changes switched from a specific attribute change (e.g. `change:size`) to a general `change` event [breaking change]
* dia.CellView - remove deprecated getStrokeBBox() [breaking change]
* Vectorizer - change `xmlns` to `svg` namespace, add correct `xmlns` namespace [breaking change]
* remove deprecated `PortsModelInterface` and `PortsViewInterface` from `joint.shapes.basic` [breaking change]
* upgrade dependencies (Backbone v1.4.0, Dagre v0.8.4, Graphlib v2.1.6, jQuery v3.4.1)
* full support for ES Modules
* support for Link to Link connections
* dia.Paper - implement viewport matching (remove views from the DOM when not in the viewport) via `viewport` option and checkViewport()
* dia.Paper - add freeze(), unfreeze(), isFrozen() and option `frozen` to stop/start views updates
* dia.Paper - add requireView(), dumpViews(), updateViews() to force views to update
* dia.Paper - add sorting options (none, approximate, exact)
* dia.Paper - add `anchorNamespace`, `linkAnchorNamespace`, `connectionPointNamespace`, `defaultLinkAnchor` options
* dia.Paper - add `useModelGeometry` for scaleContentToFit(), fitToContent(), getContentBBox(), getContentArea()
* dia.Paper - add `contentArea` for scaleContentToFit(), fitToContent()
* dia.Paper - fitToContent() returns area (g.Rect) of the content
* dia.Graph - add `indirect` option for getNeighbors(), getConnectedLinks(), isNeighbor() for link-link connections
* dia.Link - add `priority` attribute for anchors
* dia.Link - add getSourceCell(), getTargetCell(), getPolyline(), getSourcePoint(), getTargetPoint(), getBBox()
* dia.Link - getSourceElement() and getTargetElement() finds also indirect elements
* dia.Link - add angle, keepGradient and ensureLegibility options for labels
* dia.ElementView - add findPortNode()
* dia.LinkView - properly revert `pointer-events` attribute after a link interaction
* dia.LinkView - add root node selector for string markup
* dia.CellView - keep a dragged always view under the pointer (esp. when `restrictTranslate` in use)
* dia.CellView - make sure `cell:mouseleave` and `cell:mouseenter` events are always called when the mouse leaves/enters a cell
* dia.CellView - fix referenced bounding box for nodes outside the rotatable group
* dia.Cell - add generateId(), generatePortId()
* anchors - modelCenter anchor accepts `dx`, `dy` options
* linkAnchors - add anchors for link-link connections (ratio, length, perpendicular, closest)
* linkTools - add `stopPropagation` option for Vertices tool
* shapes.standard - add `standard.InscribedImage` shape
* util - breakText() prefers breaking words at hyphens
* util - nextFrame() extra parameters are appended to the arguments the callback receives
* Vectorizer - fix translateAndAutoOrient() for edge cases
* Geometry - add divideAt() and divideAtLength() for paths
* Geometry - supports scientific notation for paths defined via SVGPath data
* Geometry - add Line.prototype.angle(), Point.prototype.chooseClosest()
* Geometry - add containsPoint() for Polyline, Path, Curve and Line
* Geometry - fix Path.prototype.closestPoint() ending in an infinite loop
* Geometry - add random()
* add Mix Bus, ForeignObject demos
12-11-2018 (v2.2.1)
* utils - fix breakText() definition in Typescript
* dia.CellView - findAttribute() docs
* grunt - wrapper files use file extension .js.partial
* demos - improvements
30-10-2018 (v2.2.0)
* update insecure dependencies (mainly Lodash v4.17.11)
* use Karma+Istanbul to run tests
* dia.Graph - getCellsBBox() takes cells' rotation into account
* dia.Graph - fix cell removal after dry flag passed
* dia.Paper - support relative dimensions (e.g. width='100%')
* dia.Paper - add stopDelegation interactive option
* dia.Paper - add magnetThreshold option (create a link when the pointer leaves the magnet)
* dia.Paper - allow to stop propagation of paper events
* dia.Element - add removePorts()
* dia.ElementView - add element:magnet:pointerclick, element:magnet:dblpointerclick, element:magnet:contextmenu events
* dia.ElementView - fix embeddingMode for Lodash v4+
* dia.ElementView - fix cell:pointerclick in Chrome after DOM change
* dia.LinkView - prevent multiple validate connections for already snapped magnets
* dia.LinkView - fix label rendering in IE
* dia.Cell - JSON Markup accepts textContent and groupSelector properties
* dia.CellView - presentation attributes (attrs) are now applied in the order given
* mvc.View - prevent multiple onRender() calls
* mvc.View - add findAttribute()
* mvc.View - prevent className undefined
* dia.attributes - add ellipsis option for textWrap
* dia.attributes - add refWidth2 and refHeight2
* shapes.standard - add background to BorderedImage
* shapes.standard - add InscribedImage shape
* shapes.pn - fix PlaceView
* connectionPoints.Boundary - fix for non-graphical elements
* routers.manhattan - prevent rounding errors, add padding option
* routers.orthogonal - add padding option
* linkTools - fix touch interactions
* utils - normalize event.target in normalizeEvent() for <use> tag in IE
* utils - improve parseCssNumeric() for restrictUnit parameter
* Vectorizer - add isSVGGraphicsElement()
* fix legacy PortsViewInterface
1-8-2018 (v2.1.4)
* reconfigure eslint
* add .editorconfig
* dia.Element - fix hasPorts() when no items defined
* dia.LinkView - stop preventing propagation for legacy link tools events
29-6-2018 (v2.1.3)
* dia.CellView - fix ambiguous magnet selector
* dia.LinkView - trigger missing link:pointerdown event on label pointerdown
* dia.LinkView - fix connection update for loop links
* dia.Link - improve reparenting (loop link embeds into the connected element, link connected to ancestor and its descendant embeds into the ancestor)
* dia.Graph - getConnectedLinks() does not contain enclosed links (not necessary embedded links), add includeEnclosed option to get all connected links.
* dia.Paper - fix cell:contextmenu event
* dia.Paper - fix missing magnet reference for validateConnection()
* dia.LinkView - fix backwards compatibility for linkConnectionPoint option signature
* dia.attributes - fix textWrap attribute
* Geometry - improve polyline parsing
* improve advanced tutorials
8-5-2018 (v2.1.2)
* dia.CellView - fix magnet lookup based on the port property
* docs - fix broken links
7-5-2018 (v2.1.1)
* layout.PortLabel - fix manual position
* anchors - prevent exception when reference node not in the DOM
27-4-2018 (v2.1.0)
* update Tutorials
* shapes.Standard - add new set of high-performance elements and links
* dia.LinkView - new flexible definitions based on geometric representation
* dia.LinkView - refactor event handlers
* dia.LinkView - introduce anchors, connectionPoints and connectionStrategy
* dia.LinkView - add getConnection(), getSerializedConnection(), getConnectionSubdivisions(), getPointAtRatio(), getTangentAtLength(), getTangentAtRatio() getClosestPoint() and getClosestPointLength()
* dia.LinkView - add getVertexIndex(), getLabelCoordinates()
* dia.Link - add vertex API
* dia.Link - add label API and allow define a default label
* dia.Link - add source(), target(), router(), connector()
* anchors - ready-to-use anchors (center, top, bottom, left, right, topLeft, topRight, bottomLeft, bottomRight, perpendicular, midSide)
* connectionPoints - ready-to-use connection points (anchor, bbox, rectangle, boundary),
* connectionStrategies - predefined connection strategies (defaulAnchor, pinAbsolute, pinRelative)
* dia.ElementView - allow element's rotation without rotatable group
* dia.ElementView - refactor event handlers
* dia.ElementView - apply vector-effect: non-scaling-stroke to nodes inside ths scalable group only
* dia.Element - add angle()
* dia.CellView - render markup from JSON (link, element, ports and labels)
* dia.Cell - avoid unnecessary z-index changes during toFront or toBack
* dia.ToolsView - set of tools for a link
* dia.ToolView - base class for a single link tool
* linkTools - ready-to-use tools (vertices, segments, anchor, arrowhead, boundary, remove button)
* dia.Paper - complete set of events
* dia.Paper - add allowLink option to revert/remove invalid links
* dia.Paper - add getContentArea()
* dia.Paper - findParentBy option can be defined as a function
* dia.Paper - consequitive pointerdown, pointermove and pointerup can share event data
* dia.Paper - fire pointerup event on touchcancel
* dia.Paper - improve preventing image dragging in FireFox
* dia.attributes - sourceMarker, targetMarker and vertextMarker receive default stroke, fill and opacity values from its context
* dia.attributes - add refRInscribed, refRCircumscribed, refD, refPoints, title, textVerticalAnchor attributes
* dia.attributes - add connection, atConnectionLength, atConnectionRatio
* routers.Manhattan - adaptive grid for pathfinding
* routers - supports anchors (don't necessary start and end in the center of the magnet)
* layout.DirectedGraph - prevent undesired input cells sorting
* Vectorizer - add toGeometryShape(), normalizePathData(), tagName() and id to prototype
* Vectorizer - add transformLine() and transformPolyline()
* Vectorizer - text() accepts textVerticalAnchor option
* Vectorizer - improve Kappa value
* Geometry - add Path and Curves
* Geometry - add Polyline bbox(), scale(), translate(), clone() and serialize()
* Geometry - implement intersections of line with various shapes
* Geometry - add Point lerp() for linear interpolation
* shapes.basic.TextBlock - sanitize text
* util - normalizeSides() validates input and accepts horizontal and vertical attributes
* util - add parseDOMJSON(), dataUriToBlob(), downloadBlob(), downloadDataUri() and isPercentage()
15-11-2017 (v2.0.1)
* toggleFullscreen() - fix canceling fullscreen in an iframe
* dia.Link - fix default label font color (IE)
* dia.Cell - fix removeProp() on arrays
* dia.Graph - fromJSON() does not ignore dry option anymore
23-10-2017 (v2.0.0)
* Typescript definitions refactored (breaking change of the release)
* JointJS now compatible with Lodash v4 (see `demo/lodash4` for instructions)
* Geometry - add Polyline with pointAtLength(), length(), closestPointLength(), closestPoint() and convexHull()
* Geometry - add cross(), dot(), squaredDistance(), closestPoint(), closestPointNormalizedLength(), vector(), vectorAngle(), angleBetween() to Point
* Vectorizer - add children() and getBBox()
* Vectorizer - fix parseTransformString() and matrixToTransformString()
* Vectorizer - make the text `y` coordinate based on the first line `line-height` in text()
* Vectorizer - add option to define the end-of-line character for text()
* layout.DirectedLayout - add ability to position labels
* layout.DirectedLayout - fix bug when the elements passed do not include their parents
* dia.Paper - add `clickThreshold`, `moveThreshold` and `preventDefaultBlankAction` options
* dia.Paper - add cancelRenderViews() for async mode
* dia.CellView - do not reset node's transform attribute if no transform applied update()
* dia.Element - position() can be called with { deep: true } option to set position of the embeds
* dia.attributes - `text` attribute takes `x` into account
* dia.attributes - add `event` for easier events handling on CellViews and `resetOffset` for paths to start at 0,0
* dia.LinkView - stop triggering link:connect/link:disconnnect when connection not allowed
* dia.LinkView - can sendToken() backwards
* highlighters.Stroke - fix for magnets inside scalable group and with zero width or height
31-03-2017 (v1.1.0)
* add TypeScript definitions
* update jQuery v3.1.1
* Geometry - improve Point/Rect prototype.round(precision) - fix coordinates being converted to a string after round() with a precision called, allow negative precision
* Geometry - add Rect inflate(), bottomLine(), topLine(), leftLine() and rightLine()
* Geometry - Point offset() and difference() accept both a point and x,y coordinates
* Geometry - add Line equals()
* Geometry - Line intersection() renamed to intersect() and calculates intersection points with another line or rectangle
* Vectorizer - stop accessing deprecated `nodeName` and `nodeValue` attribute properties
* Vectorizer - add prototype.contains() method
* Vectorizer - add matrixToTransformString() method as opposed to transformStringToMatrix()
* Vectorizer - add ensureId() method
* Vectorizer - add appendTo() method
* Vectorizer - V(node); does not set automatically id on the node anymore
* Vectorizer - text() with content doesn't set invalid display: null on node anymore
* Vectorizer - fix convertRectToPathData() for rounded rectangles
* dia.attributes - add namespace for defining custom attributes, allow camelCase attribute style
* dia.attributes - new attributes `sourceMarker`, `targetMarker`, `vertexMarker`, `textWrap`, `refRx`, `refRy`, `refCx`, `refCy`, `refX2`, `refY2`
* dia.attributes - improve `text` attribute performance on cellView update
* dia.attributes - fix mixing various attributes (e.g. `transform`, `refX` and `refDx` now add up)
* dia.Paper - add defineGradient(), defineFilter(), defineMarker() and isDefined() methods
* dia.Paper - fix async rendering when cell was previously member of different graph.
* dia.Paper - improve grid precision, added new grid patterns, update drawGrid() options definition.
* dia.Paper - `blank:pointerup` event is fired only after a preceeding `blank:pointerdown` event
* dia.Paper - add paperToLocalPoint(), clientToLocalPoint(), pageToLocalPoint(), localToPaperPoint(), localToPagePoint() and localToClientPoint().
* dia.Paper - add paperToLocalRect(), clientToLocalRect(), pageToLocalRect(), localToPaperRect(), localToClientRect() and localToPageRect()
* dia.Paper - add clientOffset() and pageOffset()
* dia.Cell - make cell.attr() work as getter
* dia.Cell - prop(), removeProp() accept also path defined as an array
* dia.Element - add size(), getPortPositions() methods
* dia.Element - rotate() doesn't translate embeddeded cells anymore
* dia.Link - allow arbitrary shapes for labels
* dia.LinkView - fix link translating when embedded and has no marker
* dia.LinkView - set correct port and selector on the link
* mvc.View - prevent extend() from modifying prototype propertires
* ports events `ports:add` and `ports:remove` triggered when port is added to element/removed from element
* utils - fix toggleFullScreen() in IE
* utils - breakText() takes the lineHeight style into account
* util - change cells() wrapper also accept a single cell
* highlighter.Stroke - allow multiple strokes to be applied to a single cellView magnet, prevent memory leaks
* connectors.jumpover - fix on graph `reset`
18-11-2016 (v1.0.3)
* make compatibility changes towards jQuery 3.1
* shapes.TextBlock - fix `SVGForeignObject` detection
* dia.Graph - fix graph references stored on cells (when a cell added to another graph)
* layout.DirectedGraph - fix cell's graph references overriden by the layout
* Vectorizer - remove deprecated attributes' `nodeValue` and `nodeName` calls
27-10-2016 (v1.0.2)
* Vectorizer - fix `convertToPathData()` for polyline.
* add yarn.lock
* improve documentation
20-09-2016 (v1.0.1)
* All joint views now use the `joint-` class name prefix for their class names.
* dia.Element - make it easy to add ports to an arbitrary element, introduced API for ports manipulation
* shapes.devs.Model - uses new port API internally. shapes.basic.PortsViewInterface, shapes.basic.PortsInterface are marked as `deprecated`
* layout.Port - various layouts for positioning ports
* layout.PortLabel - various layouts for positioning labels relatively to ports
* joint.util.deepSupplement, joint.util.supplement, joint.util.mixin, joint.util.deepMixin marked as `deprecated`. Use lodash _.defaultsDeep, _.defaults, _.assign, _.mixin instead
* layout.DirectedGraph - layout() returns a bbox
* dia.LinkView - unify `link:options` event signature with the rest of events (breaking change)
* dia.LinkView - fix perpendicular links outside the pahper area
* dia.ElementView - fix resizing without scalable group, re-render element when markup change
* dia.ElementView - improve x-alignment and y-alignment for text
* other bug fixes and improvements
13-06-2016 (v0.9.10)
* Fixes for webpack, browserify
31-05-2016 (v0.9.9)
* Added env namespace with env.test(name) and env.addTest(name, fn) methods
* Added highlighters namespace with two highlighters (stroke and opacity). Highlighting now done automatically when: embedding an element, connecting a link to a port or element.
* dia.Paper:
* Added paper.drawGrid(opt) - draws grid lines on the paper's DOM element.
* Added paper.setGridSize(gridSize) - changes the grid size of the paper.
* Added paper.setInteractivity() for changing interactivity.
* Added blank:mousewheel and cell:mousewheel events to paper
* Added link:connect, link:disconnect paper events for easier link source/target change detection
* Changed the link tool event signature (e.g. `link:options`) to be the same as the rest of the cell events.
* dia.Cell:
* Added isElement() and isLink() methods
* dia.Element:
* Added scale() for transforming element by providing a scale ratio and origin.
* dia.Link:
* Added scale() for transforming link by providing a scale ratio and origin.
* dia.Graph:
* Added resize(), resizeCells() for a group resizing
* Added getCellsBBox() for getting a group bounding box
* Added removeCells()
* Can now use addCells(), removeCells(), and resetCells() with the same method signature. For example: addCells(cell, cell) addCells(cell, cell, opt) addCells([cell, cell]) addCells([cell, cell], opt) are all valid usage.
* layout.DirectedGraph:
* Added layout() `align` option for rank nodes alignment.
* Vectorizer:
* Added transform() method to apply SVG matrix to SVG element
* Added empty(), before() method
* prepend() method now accepts single or multiple nodes
* createSVGTransform() now accepts optionally an SVG matrix
* Geometry:
* Added point.scale(), rect.scale() - scale point/rect with given origin.
* Added point.toJSON(), rect.toJSON() - converts point/rect into JSON object.
* Added leftMiddle(), rightMiddle(), topMiddle(), bottomMiddle() for finding middle points of rect sides.
* Added ellipse.fromRect(), rect.fromEllipse() for rect-ellipse interchangeability.
19-12-2015 (v0.9.6/v0.9.7)
* dia.Graph introduces new functions for traversing graphs: dfs(), bfs(), search(), isSuccessor(), isPredecessor(), getPredecessors(), getSuccessors(), isNeighbor(), isSource(), isSink(), getSources(), getSinks(), getSubgraph(), getFirstCell(), getLastCell() and getCells()
* new functions for cloning cells dia.Graph.cloneCells(), dia.Graph.cloneSubgraph()
* dia.Element.resize() function has been extended with 'direction' option allowing for resizing to any side
* new convenient methods for getting source/target elements added to dia.Link: getSourceElement() and getTargetElement()
* dia.Paper has a new option 'multiLinks' that when set to false, prevents from creating multiple links between the same elements
* dia.Paper has a new option function 'guard' that allows for preventing the paper from handling UI events
* dia.Paper.findViewsInArea() has been extended with 'strict' option that when set, returns only views that are contained within the area passed in the argument
* Vectorizer adds a new method 'transformPoint()' for a convenient way transform points via SVG transformation matrices
* Geometry adds a new function rect.union()
* another new utility function added: joint.util.setAttributesBySelector() for setting attributes on DOM elements referenced by a selector
* dia.Element and dia.Link has a new function getAncestors() that returs an array of ancestor cells
* dia.LinkView enables for setting a custom markup for its secondary tools (enabled via the 'doubleLinkTools' option)
* dia.Graph getNeighbors() function extended with 'inbound' and 'outbound' options
* dia.Graph has a new translate() method for translating all elements in the graph
* routers.manhattan introduces new options 'startDirections', 'endDirections' to control what direction a link can start/end; and 'excludeTypes' to ignore certain element types as obstacles
* links are now much faster when used with manhattan router
* fixed a critical bug in upcoming Google Chrome which removed the native getTransformToElement() method on SVG elements
* other bug fixes and improvements
08-09-2015 (v0.9.5)
* layout.DirectedGraph upgrades Dagre to v0.7.1
* layout.DirectedGraph introduces new option 'resizeClusters' to reposition and resize cluster elements (parents of other elements) so that they embody their children
* cells get removeProp() method for removing - possibly nested - properties
* cells get new addTo() method as a syntactic sugar for adding them to joint.dia.Graph
* prop() methods on cells now accepts 'undefined' as a value (instead of behaving like a getter)
* remove() method now correctly propagates the options object to all listeners
* routers.Manhattan router was improved to cope with hierarchical diagrams with embedded elements and does not consider ancestors of elements as obstacles
* routers.Manhattan router got smarter, finding better paths between source and target of a link
* new router for links 'oneSide' that always routes links to/from a certain side specified
* new 'jumpover' connector type
* Vectorizer adds sample() method for interpolating any SVG path with discrete equidistant points
* Vectorizer adds convertToPath(), convertToPathData() and findIntersection() functions
* Vectorizer adds findAnnotationsAtIndex(), findAnnotationsBetweenIndexes() and shiftAnnotations() helper functions manipulating text annotations (see Vectorizer:text())
* Vectorizer now sets 'v-line' class to all text lines rendered with text() and 'v-empty-line' for lines that are empty
* Vectorizer find() now returns an array of vectorizer elements, not the DOM NodeList
* Vectorizer V() function now throws an error if invalid markup is given to it making wrong shape definitons visible to the programmer
* Vectorizer bbox() now does not round values making calculations more precise
* Geometry adds rect:equals(), rect:snapToGrid() and rect:intersect() functions
* Geometry adds clone() method to all objects
* new events in joint.dia.Paper link:pointerdown, link:pointerdown, link:pointermove, link:pointerup, element:pointerdown, element:pointermove, element:pointerup
* new events in joint.dia.Paper cell:contextmenu and blank:contextmenu
* new maxWidth and maxHeight options in joint.dia.Paper fitToContent() method
* joint.dia.Paper adds labelMove option to the 'interactive' object for enabling moving labels via UI
* joint.dia.Paper findViewByModel() significantly improved performance
* fixes in joint.dia.Paper async rendering
* new 'restrictTranslate' option in joint.dia.Paper for restricting movement of elements
* joint.dia.Paper introduces new 'cellViewNamespace' option for declaring custom namespace for views (defaults to 'joint.shapes')
* joint.dia.Paper 'elementView' and 'linkView' options can be now functions
* joint.dia.Paper introduces new 'defaultRouter' and 'defaultConnector' options
* joint.dia.Paper introduces new 'linkPinning' option to disable creating links without source/target
* joint.dia.Paper now ignores mouse events that are not relevant (events that do not target the internal SVG document or a cell)
* joint.dia.Paper remove() make a proper cleanup of all views
* fixed using multiple joint.dia.Paper objects on the same page so that they don't share any options
* fixed normalization of touch events that now expose stopPropagation() and preventDefault() as all other events do
* new method findModelsUnderElement() in joint.dia.Graph for finding elements below another element
* joint.dia.Graph fixes the fetch() method
* joint.dia.Graph introduces new 'cellNamespace' option for declaring custom namespace for models (defaults to 'joint.shapes')
* joint.dia.Graph adds new method getCells()
* joint.dia.Graph getNeighbors() method improved and extended with 'deep' option to better support hierarchical diagrams containing embedded elements
* joint.dia.Link adds offset property on labels and implements dragging labels off the links
* joint.dia.Element adds fitEmbeds() method for resizing the element so that it fits all the embedded elements inside it
* joint.dia.ElementView getBBox() now returns the rect object of Geometry library that directly exposes various math functions for rectangles
* new joint.util.getElementBBox() function for getting a bounding box of both HTML and SVG elements
* new joint.util.normalizSides() function
* new joint.util.sortElements() function for sorting DOM elements
* add an optional context parameter to joint.util.nextFrame()
* new filters joint.filter.outline and joint.filter.highlight
* special JointJS attributes ref-x, ref-y, ref-width and ref-height can be specified in percentages
* joint.dia.Link routers and connector can be now specified as functions
* source code passed through JSCS checker, fixed coding style and indentation
* Lodash upgraded to the latest version v3.10.1
* Backbone upgraded to v1.2.1
* make JointJS compatible with Browserify, Webpack and RequireJS
* other fixes and improvements
03-02-2015 (v0.9.3)
* add cell:highlight and cell:unhilight events to dia.Paper for custom highlithing
* add isEmbeddedIn() method to dia.Element and dia.Link
* introduce "deep" option in toFront() and toBack() methods on cells
* introduce validateEmbedding() optional function on dia.Paper
* add getCommonAncestor() method to dia.Graph
* add reparent() method to dia.Link
* add getEmbeddedCells() with "deep", "breadthFirst" options to dia.Element
* extend getConnectedLink() method on dia.Graph with "deep" option
* add joint.util.breakText() function for auto-breaking text into lines
* add getBBox() method to dia.Graph for finding the compound bounding box of more elements
* add cell:mouseover and cell:mouseout events to dia.Paper
* add isLink() method to cells for a quick check if cell is a link or an element
* add new special attributes "ref-width" and "ref-height"
* add support for text along paths to Vectorizer and also via cell attrs
* add new options parameter to dia.Element:translate()
* add new "fitToContent" options "minWidth" and "minHeight" in dia.Paper
* expose "defs", "viewport" and "svg" properties on dia.Paper
* many other improvements and bug fixes
16-09-2014 (v0.9.2)
* add joint.version property with the JointJS version currently in use
* extend interactive option in dia.Paper for finer control over the interactivity of links
* add getBBox(elements) method to dia.Graph for returning bounding box of all the elements in the parameter
* allow embedding links to elements in order to translate their vertices if the parent moves
* introduce translate() method on links for translating all vertices (and source/target if they are points)
* add extra parameter in dia.Element rotate() method for rotating around custom origin
* introduce linkConnectionPoint() function in dia.Paper options for custom definition of link sticky points
* introduce findView() method on cells for easier lookup of paper views
* introduce addTo() method on cells for quicker adding cells to the graph
* introduce scaleContentToFit() method on dia.Paper
* implement sendToken() method on the link view for sending animated tokens along links
* add prop() method to elements and links for easier setting of custom data, potentially nested
* upgrade Backbone to v1.1.2
* allow external function for setting positions and vertices in layout.DirectedGraph plugin
* introduce markAvailable option on dia.Paper for highlighting available elements/ports while reconnecting
* introduce origin option and setOrigin() on dia.Paper
* add basic.Rhombus shape
* add new geometry functions: point.bearing, point.reflection, line.bearing, line.pointAt, rect.containsRect, rect.normalize, rect.bbox
* other bug fixes and improvements
13-05-2014 (v0.9.0)
* add g.scale.linear(domain, range, value) function to the Geometry library
* add joint.util.format.number() for formatting numbers via the Python Format specification mini-language
* improve joint.shapes.basic.TextBlock
* add ref-width and ref-height JointJS special attributes
* add joint.util.breakText() for breaking text to lines based on a desired area
* add joint.util.unsetByPath() for deleting nested properties of any object
* add joint.dia.Cell.prototype.removeAttr() for deleting presentational attributes from cells
* make Geometry and Vectorizer libraries completely standalone
* implement pluggable link routing
* add manhattan, orthogonal, rounded and metro smart link routing avoiding elements
* adjustments to DirectedGraph plugin
* add V.rectToPath method to Vectorizer
* fix special attributes for multiple selected elements in joint.dia.Element
* set a CSS class to links based on their type
* drop jquery.sortElements.js plugin
* remove elements in batch in joint.dia.Graph.prototype.clear() method
* add support for click events to the joint.dia.Paper
* other bug fixes and improvements
21-01-2014 (v0.8.0)
* add support for SVG filters
* add support for SVG gradients
* implement better handling of ports
* add validateConnection() as a function to paper options
* add defaultLink model to paper otions
* improve support for touch devices
* add joint.shapes.basic.TextBlock that handles text wrapping via foreignObject
* speed up link rendering and updates
* other bug fixes and improvements
03-12-2013 (v0.7.1)
* upgrade to jQuery v2.0.3
* take into accont minLen property in links in DirectedGraph plugin
* return width/height of the layouted graph in DirectedGraph plugin
* add centerContent() method to the joint.dia.Paper
* emit cell:pointerdblclick and blank:pointerdblclick events when a cell/blank paper is double clicked
04-11-2013 (v0.7.0)
* make JointJS models compatible with NodeJS (npm install jointjs)
* add animations (transition(), getTransitions(), stopTransition() in cells)
* implement transitions timing functions (linear, quad, cubic, inout, exponential, bounce, reverse, reflect, back, elastic)
* implement transitions interpolating functions (number, object, hexColor, unit)
* fix graph.toJSON()
* fix listening on model events in views
* other bug fixes and improvements
15-10-2013 (v0.6.4)
* integrated Dagre v0.3.0 into DirectedGraph plugin
* bug fixes and improvements in all the shape plugins
* manhattan link routing (set manhattan: true option in the joint.dia.Link constructor)
* fix joint.dia.CellView highlight/unhighlight methods
* new joint.util.setByPath(), joint.util.getByPath() and joint.util.flattenObject() helper functions
* joint.dia.Cell.prototype.attr() can now optionally take a string defining a path separated by `/` character
* new joint.dia.Paper.prototype.fitToContent() method to auto-set the paper dimensions in order to fit the content
* cubic bezier is drawn even on a link with no vertices when `smooth: true` flag is set
* add tool-options markup to the link-tool by default (by default hidden in joint.css)
* add (a naive but handy) joint.dia.CellView.prototype.getStrokeBBox() method
* add g.normalizeAngle() method to the geometry library
* snap elements to grid when they get translated (now real grid snapping - not old relative snapping)
* add getBBox() method to the element model
* other bug fixes and improvements