Releases: process-analytics/bpmn-visualization-js
0.44.0
📢 This new version of bpmn-visualization
introduces a reduction in package size.
Thanks to all the contributors of this release 🌈: @csouchet and @tbouffard
See milestone 0.44.0 to get the list of issues covered by this release.
Highlights
The overall size of the bpmn-visualization
package has been reduced.
For instance, the size of the minified IIFE bundle included in the npm package has decreased from 4750B / 4.63kB.
bundle | 0.43.0 | 0.44.0 |
---|---|---|
bpmn-visualization.esm.js | 209,770 | 204,217 |
bpmn-visualization.js | 1,682,011 | 1,671,953 |
bpmn-visualization.min.js | 990,530 | 985,780 |
This reduction is the result of both code refactoring and the transition from lodash-es
to es-toolkit.
es-toolkit is a modern, high-performance JavaScript utility library that features a smaller bundle size and robust type annotations.
Advantages of using es-toolkit
include:
- More frequent updates
- ESM optimization
- Improved tree-shaking
Breaking Changes
This version introduces minor breaking changes primarily affecting style customization functions.
Removal of Unused Elements in Custom Styling Features
BpmnCanvas.setIconOriginForIconOnBottomLeft
StyleDefault.SHAPE_ACTIVITY_FROM_CENTER_MARGIN
These changes are unlikely to impact users as these methods were not widely utilized. No repositories within the Process Analytics project were found to be using them.
ℹ️ For more details, see #3050.
Removal of IconPainter.paintEmptyIcon
This change is expected to have minimal impact. Applications that extend IconPainter
typically have no reason to override this method.
ℹ️ For more details, see #3054.
Correct CSS Class Name for Adhoc Subprocess
- The CSS class name associated with the adhoc subprocess in the DOM has been updated from
bpmn-sub-process-ad_hoc
tobpmn-sub-process-adhoc
. Any CSS rules or selectors using this class name will need to be updated. - The value of
ShapeBpmnSubProcessKind.AD_HOC
has also changed. Since it is not intended for direct use, this should not affect most users.
ℹ️ For more details, see #3058.
Renaming of Values in ShapeBpmnMarkerKind
Several values in ShapeBpmnMarkerKind
have been renamed. These values are generally not intended for direct use, so this change should not have a significant impact. If your application does use these values, it is recommended to use the enum directly, particularly for:
MULTI_INSTANCE_PARALLEL
MULTI_INSTANCE_SEQUENTIAL
ℹ️ For more details, see #3147.
What's Changed
Full Changelog: v0.43.0...v0.43.1
🐛 Bug Fixes
- fix!: generate correct CSS class name for adhoc subprocess (#3058) @tbouffard
- fix: remove extra spacing between 2 activity markers (#3052) @tbouffard
📝 Documentation
- docs: improve the issue templates (#3148) @tbouffard
- docs(README): add error management in examples (#3144) @tbouffard
- docs(contributors): describe "npm package" tests (#3141) @tbouffard
- docs(mxgraph): update references to custom code (#3137) @tbouffard
- docs: improve the library description (#2184) @csouchet
- docs: advertise the
bv-addons
package in the README (#3102) @tbouffard - docs: improve JSDoc of PaintParameter and StyleDefault (#3049) @tbouffard
🎮 Demo and Examples
- chore(demo): bump fontawesome from 6.5.2 to 6.6.0 (#3136) @tbouffard
- chore(demo): bump fontawesome from 6.5.1 to 6.5.2 (#3070) @tbouffard
📦 Dependency updates
- chore(deps): switch from lodash-es to es-toolkit (#3142) @tbouffard
- chore(deps): bump fast-xml-parser from 4.4.0 to 4.4.1 (#3128) @dependabot
- chore(deps): bump fast-xml-parser from 4.3.4 to 4.4.0 (#3092) @dependabot
👻 Maintenance
- ci: redesign notifications for new releases (#3156) @tbouffard
- refactor: simplify some code using the mxGraph API (#3153) @tbouffard
- refactor!: rename values in
ShapeBpmnMarkerKind
(#3147) @tbouffard - test(e2e): restore report generation and fix location of received images (#3145) @tbouffard
- refactor: simplify
GraphConfigurator
(#3143) @tbouffard - refactor: reduce code duplicated from mxGraph to override shape canvas (#3138) @tbouffard
- chore: bump node from 18 to 20 (#3071) @csouchet
- refactor!: simplify code for shapes without icon (#3054) @tbouffard
- chore: enforce no unused parameters and locals with TypeScript (#3051) @tbouffard
- refactor!: remove
BpmnCanvas.setIconOriginForIconOnBottomLeft
(#3050) @tbouffard - refactor: use internals instead of private class elements (#3048) @tbouffard
- refactor: directly override
svgCanvas2D.getTextCss
(#3046) @tbouffard - refactor: directly override
shape.createSvgCanvas
(#3043) @tbouffard - refactor: inject
IconPainter
in Shapes (#3042) @tbouffard - refactor: simplify shapes registration (#3045) @tbouffard
- refactor: use internal functions rather than static private methods (#3041) @tbouffard
0.43.0
📢 This new version brings improvements to the parser and the way users can retrieve the bpmn-visualization
version.
Thanks to all the contributors of this release 🌈: @tbouffard
See milestone 0.43.0 to get the list of issues covered by this release.
Deprecated APIs
BpmnVisualization.getVersion
is now deprecated and will be removed in v0.45.0, see #2966.
Use the getVersion
function instead. For more details, see #2965.
What's Changed
Full Changelog: v0.42.0...v0.43.0
🐛 Bug Fixes
- fix: ensure numeric attributes are parsed as number (#3040) @tbouffard
- fix: ignore invalid event definition reference (#3018) @tbouffard
- fix: correctly declare types in package.json exports (#2972) @tbouffard
⤵️ Library Integration
- feat: introduce a dedicated function to get the version (#2965) @tbouffard
- feat: allow to disable parser console logs (#2963) @tbouffard
📝 Documentation
- docs: simplify the release in the examples repository (#3011) @tbouffard
- docs: rework issue templates for bug and feature (#2964) @tbouffard
- docs(release-notes): improve template of the "highlight" paragraph (#2937) @tbouffard
- docs: update browsers version in README (#2936) @tbouffard
🎮 Demo and Examples
- chore(demo): bump fontawesome from 6.4.2 to 6.5.1 (#2981) @tbouffard
📦 Dependency updates
- chore(deps): bump fast-xml-parser from 4.3.3 to 4.3.4 (#3034) @dependabot
- chore(deps): bump fast-xml-parser from 4.3.2 to 4.3.3 (#3016) @dependabot
👻 Maintenance
- test: check parsing of empty content (#3021) @tbouffard
- refactor: improve the management of the panning cursor (#3017) @tbouffard
0.42.0
This new version brings improvements to the ShapeBpmnSemantic
data returned by the API. There are now more details for Link Events.
Thanks to all the contributors of this release 🌈: @csouchet and @tbouffard
See milestone 0.42.0 to get the list of issues covered by this release.
Highlights
When related to a Link Event, ShapeBpmnSemantic
objects now return the source identifiers (linkEventSourceIds
) of a catch event or the target identifier (linkEventTargetId
) of a throw event.
This improves navigation between model elements.
ℹ️ For more details, see #2911.
What's Changed
Full Changelog: v0.41.0...v0.42.0
🧲 BPMN diagram usability
- feat: add link event data in
ShapeBpmnSemantic
(#2911) @csouchet - feat: add more data in the internal model for the link events (#2924) @csouchet
🐛 Bug Fixes
- fix: filter duplicates in
BpmnElementsRegistry
APIs (#2922) @tbouffard
📦 Dependency updates
- chore(deps): bump fast-xml-parser from 4.3.1 to 4.3.2 (#2908) @dependabot
👻 Maintenance
- chore(eslint): use
unicorn/recommended
rules (#2824) @csouchet - chore(eslint): add some unicorn rules (#2925) @csouchet
- refactor: internally store more data of event definitions (#2923) @csouchet
- chore(eslint): add
unicorn/prefer-string-slice
rule (#2913) @csouchet - test: simplify the code of
toBpmnStyle()
(#2915) @csouchet - chore(eslint): add
@typescript-eslint/dot-notation
rule (#2914) @csouchet - chore(eslint): enable 3 rules of the unicorn plugin (#2912) @csouchet
- test(JsonBuilder): use the id of event for the id of eventDefinition (#2910) @csouchet
- test(JsonBuilder): add new properties for link events (#2895) @csouchet
- test(JsonBuilder): have unique id for event definition (#2906) @csouchet
- test(JsonBuilder): avoid duplicated code when adding
EventDefinition
(#2901) @csouchet
0.41.0
This new release provides more information in the ShapeBpmnSemantic
objects returned by the APIs.
It also includes some improvements to the contributor documentation.
Thanks to all the contributors of this release 🌈: @csouchet and @tbouffard
See milestone 0.41.0 to get the list of issues covered by this release.
Highlights
API Enhancement
This new release introduces, the following properties are available for ShapeBpmnSemantic
objects returned by APIs:
parentId
eventDefinitionKind
for the eventscallActivityKind
andglobalTaskKind
for the call activitiessubProcessKind
for the sub-processes
ℹ️ For more details, see the issue #2854.
What's Changed
Full Changelog: v0.40.0...v0.41.0
🧲 BPMN diagram usability
- feat: provide more properties in BpmnSemantic (#2854) @tbouffard
🐛 Bug Fixes
- fix(API): prevent a reset/remove when passing an empty string (#2900) @tbouffard
📝 Documentation
- docs: simplify PR template for core contributors (#2898) @tbouffard
- docs: clarify the Pull Request template (#2894) @tbouffard
- docs: improve the JSDoc of
BpmnSemantic.parentId
(#2888) @tbouffard - docs: clarify how contributions are accepted (#2884) @tbouffard
📦 Dependency updates
- chore(deps): bump fast-xml-parser from 4.2.7 to 4.3.1 (#2891) @dependabot
👻 Maintenance
- test(JsonBuilder): not possible to have NONE
eventDefinitionOn
andeventDefinitionKind
in same time inBuildEventParameter
(#2899) @csouchet - test(JsonBuilder): enforce the type of
BuildEventDefinitionParameter
eventDefinitionKind
property in JsonBuilder (#2897) @csouchet - test: split the file containing the unit tests for all events (#2896) @csouchet
- chore(eslint): add
unicorn/prefer-spread
rule (#2878) @csouchet - chore(eslint): add unicorn Switch rules (#2881) @csouchet
- chore(eslint): add
unicorn/numeric-separators-style
andunicorn/no-zero-fractions
rules (#2880) @csouchet - chore(eslint): add unicorn Array rules (#2877) @csouchet
- chore(eslint): add
unicorn/no-negated-condition
rule (#2876) @csouchet - chore(eslint): add
unicorn/prefer-dom-node-append
andunicorn/prefer-dom-node-remove
rules (#2875) @csouchet - chore(eslint): add
unicorn/consistent-function-scoping
rule (#2873) @csouchet - chore(eslint): add
unicorn/prefer-logical-operator-over-ternary
rule (#2871) @csouchet - chore(eslint): add
unicorn/prefer-ternary
rule (#2870) @csouchet - chore(eslint): add
unicorn/prefer-dom-node-text-content
rule (#2869) @csouchet - chore(eslint): add
unicorn/no-array-for-each
rule (#2868) @csouchet - chore(eslint): add
unicorn/prefer-add-event-listener
rule (#2867) @csouchet - chore(eslint): add
unicorn/prefer-query-selector
rule (#2866) @csouchet - chore(eslint): add
unicorn/prevent abbreviations
rule (#2865) @csouchet - ci(release): eliminate bypassing of branch protection (#2863) @tbouffard
0.40.0
This new version brings improvements to the incoming
and outgoing
properties of BpmnSemantic
objects returned by APIs.
It also includes some improvements to API documentation.
Thanks to all the contributors of this release 🌈: @assynour, @csouchet and @tbouffard
See milestone 0.40.0 to get the list of issues covered by this release.
What's Changed
Full Changelog: v0.39.0...v0.40.0
🚀 BPMN support
- feat: only infer incoming and outgoing from flows (#2856) @tbouffard
📝 Documentation
- docs: fix code example of getModelElementsByKinds (#2846) @assynour
- docs: improve the JSDoc of
NavigationConfiguration.enabled
(#2847) @tbouffard
👻 Maintenance
0.39.0
This new version improves the usability of BPMN diagrams by providing a new API for obtaining model elements, and includes various bug fixes and maintenance tasks.
Thanks to all the contributors of this release 🌈: @csouchet and @tbouffard
See milestone 0.39.0 to get the list of issues covered by this release.
Highlights
ESM Library
A notable improvement in this release is the resolution of an issue related to the exported ESM (ECMAScript Module) bundle. This fix now allows bpmn-visualization
to be used as an ESM bundle in Node.js projects.
This may be of interest to applications that want to test code that relies on bpmn-visualization
.
New APIs for retrieving BPMN Semantics
We've added APIs to retrieve the BPMN semantics of elements by kind or ID, reducing unnecessary data retrieval.
Retrieving by element Kind
We've introduced a new API that allows users to retrieve BPMN semantics based on the element kind. This API is specifically designed for users who only need to access BPMN semantic data.
Here's an example of how to use it:
const modelElements: BpmnSemantic[] = bpmnVisualization.bpmnElementsRegistry
.getModelElementsByKinds(bpmnKinds);
for (const modelElement of modelElements) {
const value = modelElement.isShape ? 'top-left' : 'bottom-center';
....
}
ℹ️ For more information, refer to #2841.
Retrieving by element ID
Another valuable addition is the API for retrieving BPMN semantics by element ID. This new API optimizes usage by reducing unnecessary data retrieval when the caller only needs semantic information.
Here's an example of how to use it:
const modelElements: BpmnSemantic[] = bpmnVisualization.bpmnElementsRegistry
.getModelElementsByIds(bpmnIds)
.filter(semantic => semantic.isShape);
ℹ️ For more information, refer to #2837.
Examples: Referencing the bv-experimental-add-ons
demo
In our examples, we've included a link to the bv-experimental-add-ons
demo.
📣 Don't forget to check out the latest release notes for bv-experimental-add-ons
!
This release introduces a new plugin mechanism for bpmn-visualization
and shows a demo of a plugin that provides new features for overlays.
You can find all the details here: Release Notes.
What's Changed
Full Changelog: v0.38.1...v0.39.0
🧲 BPMN diagram usability
- feat: add a method to only get BPMN semantic of elements by kind (#2841) @tbouffard
- feat: add a method to only get BPMN semantic of elements by id (#2837) @tbouffard
🐛 Bug Fixes
📝 Documentation
- docs: describe the security policy (#2839) @tbouffard
- docs(release): simplify management of GH releases (#2836) @tbouffard
👻 Maintenance
- chore: move project to ESM (#2840) @csouchet
- refactor: remove mx prefix in variables related to mxGraph objects (#2834) @tbouffard
- test: add more tests for
StyleComputer
(#2835) @tbouffard - chore(eslint): use @typescript-eslint/stylistic rules (#2821) @csouchet
- chore(eslint): add
eslint-plugin-unicorn
dependency andfilename-case
rule (#2833) @csouchet - refactor: introduce registry interfaces (#2832) @tbouffard
- refactor: split internal registries (#2818) @tbouffard
- refactor: improving code safety with nullish coalescing operator (#2823) @csouchet
- refactor: remove some coupling between the "CSS" and "Style" API (#2825) @tbouffard
- chore(dependabot): improve groups configuration (#2830) @tbouffard
- chore(eslint): use
eslint-plugin-jest-extended
(#2820) @csouchet - chore(eslint): fix wrong link in the ESLint configuration about the "project" property (#2816) @csouchet
- refactor: remove unnecessary type casting (#2815) @csouchet
- test(e2e): fix e2e thresholds on macOS (#2807) @csouchet
- ci: restore "--ignore-scripts" option for
npm ci
(#2806) @tbouffard - refactor: extend mxCellRender instead of redefining prototypes (#2802) @tbouffard
- refactor: remove extra constructors (#2804) @tbouffard
- test: refactor JsonParser unit tests and type handling enhancements (#2801) @csouchet
0.38.1
This new release focuses on maintenance.
Thanks to all the contributors of this release 🌈: @tbouffard
See milestone 0.38.1 to get the list of issues covered by this release.
What's Changed
Full Changelog: v0.38.0...v0.38.1
🐛 Bug Fixes
- fix: reset the style of elements only when passing nullish param (#2798) @tbouffard
📦 Dependency updates
- chore(demo): bump fontawesome from 6.4.0 to 6.4.2 (#2793) @tbouffard
- chore(deps): bump fast-xml-parser from 4.2.6 to 4.2.7 (#2780) @dependabot
👻 Maintenance
- refactor: move overlay management out of BpmnElementsRegistry (#2800) @tbouffard
- chore(release): publish announce tweet manually (#2799) @tbouffard
- chore: migrate the code of the demo/test pages to TypeScript (#2794) @tbouffard
- chore: migrate the documentation generation script to ESM (#2792) @tbouffard
0.38.0
This new release brings improvements to the styling feature, updates to the documentation, and the addition of a new demo.
It also introduces a new experimental library with exciting new features.
Thanks to all the contributors of this release 🌈: @csouchet and @tbouffard
See milestone 0.38.0 to get the list of issues covered by this release.
Highlights
New support for fill color in the updateStyle
API: Gradient
We are pleased to introduce support for fill color gradients in the updateStyle
API with this latest release. This enhancement allows users to apply fill color gradients, adding a new dimension of customization to shapes.
For more details, please see the related issue #2760.
Demos
New Prediction Demo
We are pleased to introduce the New Prediction Demo! This demo showcases the seamless integration of the New Prediction Demo from the bpmn-visualization-examples
repository.
Enregistrement.de.l.ecran.2023-07-24.a.15.54.16.mov
ℹ️ For more information and to experience the demo first hand, visit the Prediction Demo Code.
Elements Identification Demo
The Elements Identification Demo has received improvements. It now uses the updateStyle
API with the inherit
and swimlane
color options.
Experience the improved demo here: Elements Identification Demo (drag and drop your BPMN diagram into the container below the control buttons).
inherit
The styling of boundary events has been updated to use the inherit
value for the fill color, font color, and stroke color. Additionally, the direct parent elements of the boundary events are now colored with 5% opacity to visualize the change at the same time.
swimlane
The child elements of a subProcess
have been restyled to use the swimlane
value for the fill color, font color, and stroke color. Additionally, the Pool
and the Lane
are now colored with 5% opacity to visualize the change at the same time.
If an element is not a child of a subProcess
, it retains the default style.
ℹ️ For more information, see #2748.
New Experimental Library
As part of this release, we are introducing the New Experimental Library. You can explore and try out exciting new features in the bv-experimental-add-ons repository.
Enregistrement.de.l.ecran.2023-07-24.a.16.14.31.mov
What's Changed
Full Changelog: v0.37.0...v0.38.0
🌈 BPMN diagram styling
📝 Documentation
📦 Dependency updates
- chore(deps): bump fast-xml-parser from 4.2.5 to 4.2.6 (#2770) @dependabot
👻 Maintenance
- chore(dependabot): groups dependencies (#2764) @tbouffard
0.37.0
This new version provides a new API for resetting the entire style of BPMN elements.
Thanks to all the contributors of this release 🌈: @csouchet and @tbouffard
See milestone 0.37.0 to get the list of issues covered by this release.
Highlights
New API for resetting the entire style of BPMN elements
In previous versions of bpmn-visualization
, it was possible to reset the style of one or more properties of one or more elements.
This feature can be used when the style is first updated and then needs to be reset to its initial value.
In version 0.37.0
, a new API is available for resetting all properties in a single call. It is also possible to reset the style of all BPMN diagram elements.
// Reset task and sequence flow styles
bpmnVisualization.bpmnElementsRegistry.resetStyle('task_1', 'sequenceFlow_1');
// reset the style of all elements of the diagram
bpmnVisualization.bpmnElementsRegistry.resetStyle();
Examples
A new example has been added to show how to integrate bpmn-visualization in a Web Component developed with lit.
In particular, it explains how to workaround an issue with Web Component due to mxGraph
.
🤔 For more details, see
- source code for the example application: https://github.com/process-analytics/bpmn-visualization-examples/tree/v0.37.0/projects/typescript-lit-element
- the initial request about the integration issue: #2738 (and the related implementation: process-analytics/bpmn-visualization-examples#507)
Dependencies
bpmn-visualization
now depends on a new version of fast-xml-parser
which addresses a security vulnerability (#2751). This is a follow-up to the correction described in https://github.com/process-analytics/bpmn-visualization-js/releases/tag/v0.36.0.
It's important to note that bpmn-visualization
itself is not vulnerable to this CVE as it doesn't use the processEntities
feature implicated in the vulnerability.
However, we recommend updating your application to the latest version of bpmn-visualization
for optimal security.
ℹ️ Further information can be found in GHSA-gpv5-7x3g-ghjv.
What's Changed
Full Changelog: v0.36.0...v0.37.0
🌈 BPMN diagram styling
- fix: apply style update to the message flow icon (#2744) @tbouffard
- feat(style): add a new API to reset the modified style of given elements via APIs (#2732) @csouchet
🐛 Bug Fixes
- fix: apply style update to the message flow icon (#2744) @tbouffard
📝 Documentation
- docs: improve JSDoc related to the style API (#2735) @tbouffard
📦 Dependency updates
- chore(deps): bump fast-xml-parser from 4.2.4 to 4.2.5 (#2751) @dependabot
👻 Maintenance
- refactor: directly use mxGraph value objects (#2745) @tbouffard
0.36.0
This new version brings several improvements, including enhancements to BPMN support (Ad-Hoc and Transition Sub-Processes), documentation updates, dependency updates, and maintenance. It also includes external contributions from community members.
Thanks to all the contributors of this release 🌈: @brendanlaschke, @csouchet and @tbouffard
See milestone 0.36.0 to get the list of issues covered by this release.
Highlights
🚀 BPMN support
Transition Sub-Process
We have introduced the support for the Transition Sub-Process.
See the image below for an example:
Ad-Hoc Sub-Process
We have also added the parsing functionality for the Ad-Hoc Sub-Process, although their visualization is not yet implemented.
See the image below for a representation:
External Contributions
We are excited to include the following external contributions in this release:
Vue Example
A new integration project for Vue
has been contributed to the bpmn-visualization
Examples repository.
ℹ️ Check it out here.
Dependencies
We have addressed a security vulnerability related to fast-xml-parser
(#2736).
It's important to note that bpmn-visualization
itself is not vulnerable to this CVE as it doesn't use the processEntities
feature implicated in the vulnerability.
However, we recommend updating your application to the latest version of bpmn-visualization
for optimal security.
ℹ️ Further information can be found here.
Breaking changes
This release includes some breaking changes that affect applications extending or modifying the BPMN theme. These changes should be transparent, and no impact has been observed in the bpmn-visualization
examples and demo.
- In order to improve the implementation, the
BpmnStyleIdentifier
andMarkerIdentifier
have been redefined as constant objects instead of classes.
ℹ️ Refer to PR #2716 for more details. - The
StyleDefaut
enum has been replaced with a constant object.
ℹ️ PR #2728 provides additional information about this modification.
Install Size for Development
The installation size of the library for development purposes has been decreased.
Comments and JSDoc have been removed from the ESM and IIFE (non-minified) bundles provided in the npm package.
ℹ️ For more information, you can refer to this pull request.
What's Changed
Full Changelog: v0.35.0...v0.36.0
🚀 BPMN support
- feat: detect Ad-Hoc Sub-Processes (#2723) @tbouffard
- feat: add support for 'transaction' subprocess (#2719) @tbouffard
📝 Documentation
- docs: improve paragraphs about colors and styles (#2734) @tbouffard
- docs: update browsers version in README (#2726) @tbouffard
📦 Dependency updates
- chore(deps): bump @typed-mxgraph/typed-mxgraph from 1.0.7 to 1.0.8 (#2737) @csouchet
- chore(deps): bump fast-xml-parser from 4.2.2 to 4.2.4 (#2736) @dependabot
👻 Maintenance
- refactor!: transform StyleDefault into an object (#2728) @tbouffard
- test: simplify integration tests (#2727) @tbouffard
- ci: run the "performance test" workflow less often (#2725) @tbouffard
- test(e2e): correctly display diff images in the report generated on windows (#2720) @brendanlaschke
- ci: better configure the "paths" triggering the execution of workflows running tests (#2722) @csouchet
- refactor: simplify the parsing of elements of process (#2721) @tbouffard
- refactor: use object instead of class for style identifiers (#2716) @tbouffard
- chore: remove comments from bundle files (#2718) @tbouffard
- ci: run e2e and performance tests workflows less often (#2717) @tbouffard