Commit Graph

655 Commits (f09abdf53a77759555b027e4eaaad470f0b44373)

Author SHA1 Message Date
Eric Redekopp f09abdf53a
fix: make 'movable' style attribute behave as expected (#248)
The 'movable' style attribute of cells had the opposite effect as what
would be expected. When set to false, cells could be moved, and when true,
cells couldn't be moved.
This is something that got lost in translation in the conversion from mxGraph.
Previously, it assumed that if 'movable' had any value, it must be the string "0". This
attribute got changed to a boolean in Typescript, but it looks like the
check never got updated leading to this strange behaviour.

The fix is fairly simple.
If 'movable' is undefined, then we assume that it's true.
If not, then we check it like a regular boolean.
2023-10-12 10:23:32 +02:00
Thomas Bouffard 54c82230c1
test: improve HierarchicalLayout tests (#245)
Also check that the layout change the position of the cells.
2023-10-10 06:21:22 +02:00
Thomas Bouffard 3758ac4dce
chore: review private property in package.json files (#244)
Remove versioning for private packages are they are not supposed to be
consumed outside the project.
Explicitly mark public packages.
2023-09-15 12:31:22 +02:00
Thomas Bouffard e175937f02 chore(release): prepare version 0.4.0 2023-09-14 15:10:05 +02:00
Thomas Bouffard a0b762c707
docs: describe the security policy (#242) 2023-09-14 15:03:14 +02:00
Thomas Bouffard 7556b72415
fix: use configurable path for `errorImage` (#241)
The default path of `errorImage` hard coded the context instead of using
`Client.imageBasePath` as everywhere else.
This seemed to be a migration mistake (the original code using the
configurable path was commented).
2023-09-14 15:02:24 +02:00
Franz Ritter efb5b4bdf9
fix: allow `HierarchicalLayout` to manage circular dependencies (#233)
Uncomment the isAncestor method GraphHierachyNode, which is used by
HiearchlLayout. The uncommented implementation makes sure, that a
circular dependency is detected and resolved. Using the default
isAncestor does not work at this point, because the parent nodes of the
child nodes in the graph are not set.

The problem was unintentionally introduced during the initial refactoring of
the mxGraph code in 413796a.
The idea of the author was to remove an useless comment but they left an
extra /** behind which commented the isAncestor method.
2023-09-14 14:49:07 +02:00
Анатолий Майоров e3b61cdc21
feat: add Manhattan connector EdgeStyle and demo (#232)
Add Manhattan connector edge style and demo for it in Storybook.
Code is based on https://github.com/mwangm/mxgraph-manhattan-connector
Ported code to Typescript, refactored it and placed to `EdgeStyle.ts`.
2023-09-14 14:42:25 +02:00
dependabot[bot] 5bae81a1e3
chore(deps-gha): bump actions/checkout from 3 to 4 (#240) 2023-09-11 06:58:05 +00:00
Thomas Bouffard e5a28b3f30
docs: add JSDoc to CellStyle.baseStyleNames (#222) 2023-08-28 08:36:11 +02:00
Thomas Bouffard e48f3fa052
docs: improve JSDoc of TooltipHandler (#219) 2023-08-28 08:34:44 +02:00
Thomas Bouffard e25fd447be
chore: fix dependabot configuration (#226)
Add the missing `schedule.interval` configuration which is mandatory.
2023-07-13 12:36:07 +02:00
Thomas Bouffard 92759df232
feat: include default css and images in the npm package (#225)
Providing these resources simplify the `maxGraph` integration.

Use the default CSS in ts-example to illustrate how to override defaults
Initiate a documentation to start guiding users.
2023-07-13 12:25:10 +02:00
Thomas Bouffard 03f59aa130
refactor: improve examples in README and ts-example (#223)
ts-example
  - improve the position of the ellipse labels
  - introduce a shared style for ellipse vertices
  - bump vite from 4.3.9 to 4.4.2
  - work when not deployed in the "root" context of the site

README
  - improve the position of the ellipse label
  - display rounded orthogonal edge
  - fix the style configuration to match the rendering shown in the gif
2023-07-10 07:07:19 +02:00
Thomas Bouffard 28b391d4cf
chore: add dependabot configuration for GitHub Actions (#224) 2023-07-09 17:40:51 +02:00
Thomas Bouffard c422ca35ee chore(release): prepare version 0.3.0 2023-07-07 12:19:14 +02:00
Thomas Bouffard e82abd6da3
feat: improve the EdgeMixin type (#212)
The methods defined in the `EdgeMixin` type were not documented.
The signature of the `insertEdge` method was using a spread `any`
parameter, so it provided no guidance nor guard.
Instead, the type now declares the various form of the methods with the
right signature.
2023-07-07 07:56:01 +02:00
Thomas Bouffard cdd8830b5c
feat: improve the VertexMixin type (#211)
The methods defined in the `VertexMixin` type were not documented.
The signature of the `insertVertex` method was using a spread `any`
parameter, so it provided no guidance nor guard.

Instead, the type now declares the various form of the methods with the
right signature.
2023-07-07 07:41:49 +02:00
Thomas Bouffard 4a79be5499
docs: add keywords in package.json (#216)
For the `@maxgraph/core` package.
2023-07-07 07:39:30 +02:00
Thomas Bouffard d5c1d4dc21
docs(release): add task for the "examples" repository (#215)
Also improve the main README
  - improve the paragraph about how to build the npm package locally
  - use the "application" wording instead "project" when required
  - highlight mxGraph and maxGraph
2023-07-07 07:06:09 +02:00
Thomas Bouffard 711db920da
fix: export EditorToolbarCodec and StylesheetCodec (#218)
These 2 classes were previously not exported as they generated runtime
errors when applications integrating `maxGraph` used the Vite dev
server.

Bump vite from 4.3.1 to 4.3.9. This is probably what fixed the problem.
No need to export Stylesheet and EditorToolbar as default as they are
already exported.
2023-07-07 06:54:31 +02:00
Thomas Bouffard d7646d6405
docs: improve JSDoc of GraphLayout and CompositeLayout (#217)
Improve wording
Remove references to mxGraph code
Use modern JS code in examples
2023-07-06 16:59:45 +02:00
Thomas Bouffard 992f3af63d
feat: add GraphDataModel.batchUpdate method (#213)
The method already exists in the `Graph` class. It needs to be made
available in `GraphDataModel` as well, to simplify the transaction
syntax.
Start using it in some places to simplify the syntax and also use
`Graph.batchUpdate`.
2023-07-06 07:02:20 +02:00
Thomas Bouffard 0c7a68bcc1
fix: compute the current style of ShadowRoot element (#214)
`ShadowRoot` element cannot be passed to the `window.getComputedStyle`
method.
Otherwise, errors occur, in particular, it prevents the mouse and
gesture events to be propagated.
2023-07-06 06:50:51 +02:00
Thomas Bouffard fd0d47ad4a
refactor!: remove unused CellMap type (#210) 2023-07-03 11:13:10 +02:00
Thomas Bouffard 3d71f15347
refactor(type)!: don't return 'undefined' in getDefaultXXXStyle (#209)
The default edge and vertex styles are always defined. Updating the
signature of the two methods returning default styles simplifies the
code for callers, who don't have to deal with "undefined" values.

Improve the ts-example
  - rely on no `undefined` style
  - bump vite from 3.2.3 to 4.3.1 and increase the file size warning
  - improve the use of types
- better explain why we cannot use enum to define the 'edgeStyle'
CellStyle property

BREAKING CHANGE: `Stylesheet.getDefaultVertexStyle` and
`Stylesheet.getDefaultEdgeStyle` no longer return `undefined`.
2023-07-02 20:19:51 +02:00
Thomas Bouffard 926596722c
docs: improve the mxGraph migration guide (#206)
Added paragraphs
  - classes renames
  - moved methods
  - how-to migrating styles

---------

Co-authored-by: Souchet Céline <celine.souchet@bonitasoft.com>
2023-06-19 15:28:15 +02:00
Thomas Bouffard 452698660b chore(release): prepare version 0.2.1 2023-06-08 17:03:33 +02:00
Thomas Bouffard 1ec9b723c9
fix: update the `labelPosition` property to restore "no align" (#203)
Allow a special value to be passed to avoid calculating the alignment.
2023-06-08 16:56:03 +02:00
Thomas Bouffard 900593572b
docs: add JSDoc to Graph.batchUpdate (#199) 2023-06-08 16:54:59 +02:00
Thomas Bouffard 8146158fde
docs(dev): explain NodeJS requirements (#202) 2023-06-07 08:43:26 +02:00
Arash Rostami 7c696bb31f
fix: update the signature of gestureUtils.makeDraggable (#198)
The fourth argument of the `makeDraggable` function was not declared as optional.
2023-06-06 11:50:46 +02:00
Thomas Bouffard 487e4b767e chore(release): prepare version 0.2.0 2023-05-22 16:17:25 +02:00
Thomas Bouffard 13211edb28
docs: improve the release process (#177)
Clarify some git operations.
Also
- move an image to the packages/docs for future reuse in the
documentation.
- don't run the GitHub "build" workflow when the docs package or some
markdown files change.
2023-05-22 16:13:33 +02:00
CD Yang fc0b1b77b5
docs: fix some JSDoc errors in `VertexHandler` (#191) 2023-05-22 13:58:34 +02:00
Thomas Bouffard 30bdbe5322
test(ts-support): only check maxGraph types (#193)
Previously, all types development types needed by maxGraph at
development time were checked. Some of them require a newer version of
TypeScript that the one used in the TS support test (to check the
minimum version required to integrate maxGraph in applications). This
made the checks fail. The configuration of the tests has been updated to
only check the maxGraph types used by applications.
2023-05-22 13:51:42 +02:00
Thomas Bouffard 193d4bfe9b
test: introduce tests for model encode/decode (#183)
The code managing the "model encode/decode" is not yet fully
operational.
This set of changes adds tests to replicate current behavior and provide
the infrastructure for problem resolution. In particular, the tests show
that some errors occur on import because some Codecs are not registered.
There is no error if an export has already been performed.

**Other info**
The tests are done using both the model alone or a model linked to a
Graph instance.
Using only the model shows that some properties of objects in the model
are not set correctly: they are not decoded and are stored as `Element`
instances.
The test involving the Graph instance shows the behavior seen in "real"
application which are the consequences of the issue during the import.
2023-04-04 09:28:13 +02:00
Thomas Bouffard 0b4df83923
chore: fix TS2365 build errors (#186)
In the core package, TypeScript v5 is resolved instead of TypeScript v4.
As a workaround, declares TypeScript v4 in `package.json`.
2023-04-04 09:17:39 +02:00
Thomas Bouffard d33769fad5
fix: declare default parameter values in xmlUtils.prettyXml (#181) 2023-03-05 12:03:24 +01:00
Thomas Bouffard 1447fd29fc
docs: reorganize the "migration from mxGraph" documentation (#171)
Move everything from the README to the dedicated migration doc.
Clarify the existing content.

Co-authored-by: Souchet Céline <4921914+csouchet@users.noreply.github.com>
2023-01-30 15:01:55 +01:00
Thomas Bouffard c4efba2952
docs: add the release process (#176)
It includes
  - code update
  - milestone and release notes management
  - npm package publish

Co-authored-by: Souchet Céline <4921914+csouchet@users.noreply.github.com>
2023-01-30 14:19:01 +01:00
Thomas Bouffard 3095aef7e6
refactor(CellState): simplify expressions and improve JSDoc (#170)
Improve the JSDoc of methods under the "appearance" group
2023-01-30 11:55:37 +01:00
Thomas Bouffard ca1914b582
refactor(style)!: rename/remove properties and types (#165)
Remove the `StyleMap` class. It is not used anymore since the
introduction of the `CellStateStyle` interface.

Changes in `CellStateStyle`
- remove `defaultEdge` and `defaultVertex` that have been introduced by
mistake. They have never been used.
- rename `autosize` into `autoSize` for naming consistency. All
properties use camelCase.
- change types from "number" to "boolean" + fix default management in
the Shape classes
    - `backgroundOutline`
    - `absoluteArcSize`

Other `CellStateStyle` changes: remove a property in favor of another
property
The following properties were introduced by mistake while removing
mxConstants.STYLE_* references in
707605cedd (2021-05-02). Their counterpart
was used in `mxGraph` and is used in all
`maxGraph` examples
- `backgroundColor` in favor of `labelBackgroundColor`. The
`STYLE_LABEL_BACKGROUNDCOLOR` constant was replaced by
  'backgroundColor' instead of 'labelBackgroundColor'
- `loop` in favor of `loopStyle`. The `STYLE_LOOP` constant was replaced
by 'loop' instead of 'loopStyle'

Other types that changed
- `CellStateStyle`: better type guidance for the `indicatorShape`
property
- `CanvasState`: order properties alphabetically + add JSDoc on some
properties
- Rename `ArrowType` into `ArrowValue` for consistency with other types
(they all end with the 'Value' post-fix)

Documentation update
  - CHANGELOG.md: mention the breaking changes
- Initiate a specific document to help migration from mxGraph: start by
adding the changes on style


--------------------------------------------------------------------------------

**BREAKING CHANGES**: some `CellStateStyle` properties and types have
been removed/renamed.
2023-01-30 11:44:06 +01:00
Thomas Bouffard 5ecfda6b2b
refactor!: remove helpers function processing string style (#173)
Helper functions involving "style in the string form" have been removed
from `styleUtils`. Styles are defined using the `CellStateStyle` and it
is no longer necessary to process strings.

Removed functions
  - addStylename
  - getStylename
  - getStylenames
  - indexOfStylename
  - removeStylename
  - removeAllStylenames
  - setStyle

**BREAKING CHANGES**: some `styleUtils` functions have been removed.
2023-01-17 12:18:33 +01:00
Thomas Bouffard 6fc05a3876
refactor: simplify fontStyle code checking binary mask (#174)
Introduce the `styleUtils.matchBinaryMask` function to remove
duplication in the code checking binary mask on `fontStyle`.
2023-01-17 12:08:32 +01:00
Thomas Bouffard ed2ae41428
refactor(docs): move all docs sources to a dedicated docs package (#168)
Keep the former mxGraph documentation to allow a later documentation
migration.
Remove both the former mxGraph and the new maxGraph API docs as they can
be generated.
Remove the former mxGraph examples home page as it has been replaced by
Storybook.

Update the configuration to generate the maxGraph API docs
  - remove jsdoc resources as it is not used anymore
- configure the core package to generate the API docs in the docs
package
- add a GitHub workflow to ensure we can generate the API docs without
errors
2023-01-09 16:03:52 +01:00
Thomas Bouffard 3d1d68afd7
refactor: remove scripts used to migrate from mxGraph (#167) 2023-01-08 15:16:02 +01:00
Thomas Bouffard 171c8f8134
fix: SwimlaneMixin handles the 'style.horizontal' `undefined` value (#156)
The horizontal value was considered as true only if was set to true.
It is now also considered as true when set to undefined, as everywhere
else in maxGraph.

SwimLanes.stories.js: update configuration to display nodes.
This update is just a starting point. There is still much to do to match the previous mxGraph example.
2023-01-06 16:59:18 +01:00
Thomas Bouffard 3fff754cd6
fix: correctly manage the markers fill style (#157)
Previously, when setting startFill/endFill, the display was inverted
comparing to the configuration.
The marker was filled when set to false, not filled when set to true.
When not set, the marker was filled, which is the expected default.

The issue came from a wrong condition to manage the default value and
was reproduced with the Markers Story.

In addition to the code fix, update the Markers.stories.js to fix style
configurations
  - use number instead of string for markers size
  - use boolean instead of number for start/end fill
2023-01-06 16:53:54 +01:00
Filip Wróbel a247b38268
fix: use the right convertPoints function in Stories (#166)
Changed `mathUtils` -> `styleUtils` in affected stories.
2023-01-06 14:16:46 +01:00