GoJS Versions Save

JavaScript diagramming library for interactive flowcharts, org charts, design tools, planning tools, visual languages.

v3.0.1

3 weeks ago

Changes for 3.0.1

  • Potentially incompatible: We have added InputEvent.code to correspond to KeyboardEvent.code CommandHandler.doKeyDown now uses KeyboardEvent.code instead of KeyboardEvent.key for better cross-language shortcut support. This may lead to incompatibilities if you have code (such as testing code) that sets an InputEvent.key value. You may need to additionally set InputEvent.code. If your code does not modify the value of InputEvent.key anywhere (such as in a tool customization or in a CommandHandler.doKeyDown override), you do not need to do anything.
  • Fix for initial position when Diagram.autoScale scales initial contents, but a scrollbar is still required.
  • Fixed some Iterators returned by GoJS (such as from Node.findLinksInto) returning faulty values from use of Symbol.iterator.
  • Fixed a bug where large nodes in a ForceDirectedLayout would sometimes overlap.

Be sure to see also: https://forum.nwoods.com/t/gojs-3-0-released/16808

v3.0.0

3 weeks ago

GoJS 3.0

GoJS 3.0 brings a number of new features for advanced Diagram control, such as custom routing via Routers and data-bound theming with Themes. We have also rewritten some of the internals to take advantage of modern JavaScript, and rewritten the API to use clearer enumerations. These changes are largely backwards-compatible.

There are a number of other changes, detailed below.

New npm packages

For 3.0, the gojs npm package contains only the release libraries, and no extensions, documentation or sample code. The documentation, sample, and extensions code can be downloaded separately, via npm create gojs-kit.

Performance

GoJS 3.0 leverages modern JavaScript and more modern Canvas API features for increased performance. However, this also means dropping support for old browsers such as IE11, and there are a number of minor incompatibilities detailed below.

Diagram rendering is now generally faster, and Diagram heap size has been significantly reduced, especially for large graphs.

Routers

AvoidsLinks Router

One has always been able to customize the computed paths for Links by setting properties on a Link or on its connected port elements, or by overriding methods on a custom Link subclass. There is now support for a separate routing phase where instances of Router can modify Links. See the intro page on routers for more information.

GoJS 3.0 introduces the AvoidsLinks Router, which attempts to separate parallel link segments, and can work alongside AvoidsNodes routing.

Theming

GoJS now provides functionality to define and manage themes, and GraphObjects can now be themed via theme bindings. This allows for applications to more easily provide multiple themes, especially light and dark mode. See the intro page in theming for more information.

Viewport Layers

There are two new default layers in each Diagram, "ViewportBackground" and "ViewportForeground". These layers have the new property Layer.isViewportAligned set to true. Parts in viewport aligned layers will not obey the Diagram.position or Diagram.scale properties, so as the user scrolls or pans or zooms they will remain fixed in the viewport.

Layers with Layer.isViewportAligned set to true will automatically position and scale their Parts to be relative to the viewport, based on the Part's GraphObject.alignment and GraphObject.alignmentFocus values, not on its Part.location or GraphObject.position.

Enumerations

GoJS now uses Typescript enumerations to represent possible values for many properties. This enables autocompletion in some text editors. Some examples:

  • Where one wrote: new go.Panel({ stretch: go.GraphObject.Fill }), one can now write: new go.Panel({ stretch: go.Stretch.Fill }).
  • Where one wrote: new go.RowColumnDefinition({ column: 1, sizing: go.RowColumnDefinition.None }), one can now write: new go.RowColumnDefinition({ column: 1, sizing: go.Sizing.None }).
  • Where one wrote: new go.TreeLayout({ alignment: go.TreeLayout.AlignmentStart }), one can now write: new go.TreeLayout({ alignment: go.TreeAlignment.Start }).

The original static EnumValue properties have been deprecated in favor of these new enumerations, but continue to exist for compatibility. So, for example: go.GraphObject.Fill === go.Stretch.Fill. The never-documented EnumValue class has been removed from the library. The new enum values are numbers.

Other New Features

For more changes and incompatibilities, see the Change Log

v2.3.17

1 month ago

Changes for 2.3.17

  • Re-added tree collapse animation.
  • Fix for SVG Diagram.renderer when turning on and off shadows dynamically.
  • Diagram SVG rendering element now has position: absolute applied, just like the Canvas element.
  • Fixed package.json to allow imports from specific release files.

GoJS Beta 3 is also available: https://gojs.net/beta/

v2.3.16

2 months ago

Changes for 2.3.16

  • Added "types" to package.json "exports" to support TypeScript typing.

GoJS Beta 3 is also available: https://gojs.net/beta/

v2.3.15

2 months ago

Changes for 2.3.15

  • Fixed Diagram initialization sometimes having certain property setters causing the initial layout to happen too soon.
  • Fixed some cases of importing go.mjs in Node.js environments using ES Modules.
  • Fixed arranging link labels when GraphObject.segmentIndex is NaN and Link.fromShortLength is non-zero.
  • Fixed table panel giving rows or columns incorrect sizes when table items stretch and rows or columns use separator spacing.
  • Fix for shadows in Tables when a TableRow has a background set.
  • Enum compatibility for 3.0

GoJS Beta 3 is also available: https://gojs.net/beta/

v2.3.14

3 months ago

Changes for 2.3.14

  • Fix for right-click in versions of Safari 17, which reports pointer buttons differently.
  • Auto-scrolling fix when dragging from one Diagram to another when using a touch type pointer.

Be sure to also see the GoJS 3.0 beta: https://forum.nwoods.com/t/gojs-3-0-beta-has-been-released/16668

v2.3.13

4 months ago

Changes for 2.3.13

  • Geometry.parse and Shape.geometryString parsing fix for 'T' commands.
  • Fixed a bug with the rendering of temporary links when Diagram.renderer is set to SVG.
  • Table panels now allow elements that stretch in one direction and span in another to stretch more appropriately.

v2.3.12

5 months ago

Changes for 2.3.12

v2.3.11

8 months ago

Changes for 2.3.11

  • Diagram.makeSVG and the SVG rendering context now both set SVG data-* attributes.
  • Fixed SVG rendering when dragging a Node that moves a Placeholder.
  • Fixed some cases of improper AvoidsNodes routing of links involving the layout of nested groups.

v2.3.10

9 months ago

Changes for 2.3.10

  • Added TextBlock.isOverflowed.
  • Fixed calls to Diagram "ViewportBoundsChanged" listener, which might not have fired on all Diagram resizes.
  • Fixed the rendering of Table Panel row and column separator strokes in SVG.
  • Fixed incorrect Part positioning in some Expand/Collapse of Groups.