├── .editorconfig ├── .eslintignore ├── .eslintrc.cjs ├── .github ├── ISSUE_TEMPLATE │ ├── 01-bug_report.md │ ├── 02-feature_request.md │ ├── 03-question.md │ ├── 04-other.md │ ├── README.md │ └── config.yml ├── actions │ ├── build-setup │ │ └── action.yml │ ├── custom-surge-preview │ │ └── action.yml │ ├── free-runner-disk-space-ubuntu │ │ └── action.yml │ ├── install-playwright-browser │ │ └── action.yml │ ├── log-disk-space │ │ └── action.yml │ └── notify-PA-repo-of-new-version │ │ └── action.yml ├── dependabot.yml ├── pull_request_template.md ├── release-drafter.yml └── workflows │ ├── build.yml │ ├── codeql-analysis.yml │ ├── dependency-review-pr.yml │ ├── fill-gh-draft-release.yml │ ├── generate-demo-preview.yml │ ├── generate-documentation.yml │ ├── notify-new-version-available-on-npm.yml │ ├── pr-metadata-checks.yml │ ├── publish-npm.yml │ ├── release.yml │ ├── test-e2e.yml │ ├── test-npm-package.yml │ ├── test-performance.yml │ └── upload-demo-archive-and-trigger-examples-repository-update.yml ├── .gitignore ├── .gitpod.Dockerfile ├── .gitpod.yml ├── .husky └── pre-commit ├── .nvmrc ├── .prettierrc.js ├── .vscode ├── launch.json └── settings.json ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── NOTICE ├── README.md ├── SECURITY.md ├── config ├── api-extractor.json └── license-header.js ├── dev ├── public │ ├── bpmn-rendering.html │ ├── diagram-navigation.html │ ├── elements-identification.html │ ├── index.html │ ├── library-integration.html │ ├── overlays.html │ └── static │ │ ├── css │ │ ├── styles.css │ │ └── test-page.css │ │ └── img │ │ ├── favicon.svg │ │ └── logo_white.svg └── ts │ ├── component │ ├── DropFileUserInterface.ts │ ├── SvgExporter.ts │ ├── ThemedBpmnVisualization.ts │ └── download.ts │ ├── development-bundle-index.ts │ ├── pages │ ├── bpmn-rendering.ts │ ├── diagram-navigation.ts │ ├── elements-identification.ts │ ├── index.ts │ ├── library-integration.ts │ └── overlays.ts │ └── shared │ ├── controls.ts │ ├── internal-helpers.ts │ ├── main.ts │ └── shared-helpers.ts ├── docs ├── README.md ├── contributors │ ├── README.md │ ├── bpmn-support-how-to.md │ ├── demo-page-css.md │ ├── development.md │ ├── documentation-guidelines.md │ ├── ide-configuration.md │ ├── images │ │ ├── bpmn-icon-example.png │ │ ├── inkscape-result1.png │ │ ├── inkscape-result2.png │ │ ├── mxgraph-perimeter │ │ │ ├── flows.sequence.04.waypoints.03.terminal.outside.shapes.02.segments.no.intersection.with.shapes-snap.png │ │ │ ├── markers-01-positioning.png │ │ │ ├── markers-02-rendering.png │ │ │ ├── markers-03-projection-vs-intersection.png │ │ │ └── perimeter-no-intersection.png │ │ ├── release_process_part-01_release_automation.png │ │ ├── release_process_part-02_github.png │ │ └── release_process_part-10_examples_release-notes.png │ ├── maintainers.md │ ├── mxgraph-integration.md │ ├── mxgraph-version-bump.md │ ├── pull-request.md │ ├── resources │ │ ├── bpmn-visualization-release-process.bpmn │ │ └── mxGraph-perimeter.drawio │ ├── supported-typescript-version.md │ └── testing.md └── users │ ├── architecture │ ├── 00-index.adoc │ ├── architecture-overview.adoc │ ├── bpmn-internal-model.adoc │ ├── bpmn-parsing.adoc │ ├── development.adoc │ ├── images │ │ └── architecture │ │ │ ├── architecture-overview.drawio │ │ │ ├── architecture-overview.svg │ │ │ ├── internal-model.drawio │ │ │ └── internal-model.svg │ └── mxgraph-integration.adoc │ ├── bpmn-support.adoc │ ├── images │ ├── bpmn-diagram_navigation_C.2.0.gif │ ├── bpmn-in-color-C.1.0.png │ ├── bpmn-theme-custom-colors.png │ ├── bpmn-theme-default.png │ ├── custom-behavior-path-highlighting.gif │ ├── custom-behavior-popovers.gif │ ├── diagram-example.png │ ├── icons │ │ ├── event_boundary_cancel.svg │ │ ├── event_end_cancel.svg │ │ ├── event_end_error.svg │ │ ├── event_end_terminate.svg │ │ ├── event_intermediate_catch_link.svg │ │ ├── event_intermediate_catch_start_boundary_conditional.svg │ │ ├── event_intermediate_catch_start_boundary_message.svg │ │ ├── event_intermediate_catch_start_boundary_signal.svg │ │ ├── event_intermediate_catch_start_boundary_timer.svg │ │ ├── event_intermediate_throw_end_compensation.svg │ │ ├── event_intermediate_throw_end_escalation.svg │ │ ├── event_intermediate_throw_end_message.svg │ │ ├── event_intermediate_throw_end_signal.svg │ │ ├── event_intermediate_throw_link.svg │ │ ├── event_start_boundary_compensation.svg │ │ ├── event_start_boundary_error.svg │ │ ├── event_start_boundary_escalation.svg │ │ ├── gateway_complex.svg │ │ ├── gateway_event_based.svg │ │ ├── gateway_event_based_exclusive.svg │ │ ├── gateway_event_based_parallel.svg │ │ ├── gateway_exclusive.svg │ │ ├── gateway_inclusive.svg │ │ ├── gateway_parallel.svg │ │ ├── marker_expand.svg │ │ ├── marker_loop.svg │ │ ├── marker_multi_instance_parallel.svg │ │ ├── marker_multi_instance_sequential.svg │ │ ├── task_business_rule.svg │ │ ├── task_manual.svg │ │ ├── task_receive.svg │ │ ├── task_script.svg │ │ ├── task_send.svg │ │ ├── task_service.svg │ │ └── task_user.svg │ ├── monitoring.gif │ └── simple-overlay-example.png │ ├── index.adoc │ ├── intro.adoc │ └── overview.adoc ├── index.html ├── package-lock.json ├── package.json ├── postcss.config.cjs ├── rollup.config.mjs ├── scripts ├── add-license-header.mjs ├── generate-types-for-not-supported-ts-versions.mjs ├── generate-users-documentation.mjs ├── manage-version-in-files.mjs ├── prepare-demo-for-publish.mjs ├── shared │ ├── banner.mjs │ └── types-info.mjs └── utils │ ├── README.md │ ├── parseBpmn.ts │ └── rollup.config.mjs ├── sonar-project.properties ├── src ├── bpmn-visualization.ts ├── component │ ├── BpmnVisualization.ts │ ├── helpers │ │ ├── array-utils.ts │ │ ├── dom-utils.ts │ │ └── validators.ts │ ├── mxgraph │ │ ├── BpmnCellRenderer.ts │ │ ├── BpmnGraph.ts │ │ ├── BpmnRenderer.ts │ │ ├── GraphConfigurator.ts │ │ ├── config │ │ │ ├── StyleConfigurator.ts │ │ │ └── register-style-definitions.ts │ │ ├── initializer.ts │ │ ├── overlay │ │ │ ├── converter.ts │ │ │ ├── custom-overlay.ts │ │ │ ├── shapes.ts │ │ │ └── updater.ts │ │ ├── renderer │ │ │ ├── CoordinatesTranslator.ts │ │ │ ├── StyleComputer.ts │ │ │ └── style-utils.ts │ │ ├── shape │ │ │ ├── activity-shapes.ts │ │ │ ├── edges.ts │ │ │ ├── event-shapes.ts │ │ │ ├── flow-shapes.ts │ │ │ ├── gateway-shapes.ts │ │ │ ├── render │ │ │ │ ├── BpmnCanvas.ts │ │ │ │ ├── icon-painter.ts │ │ │ │ ├── index.ts │ │ │ │ ├── render-types.ts │ │ │ │ └── utils.ts │ │ │ ├── text-annotation-shapes.ts │ │ │ └── utils.ts │ │ └── style │ │ │ ├── css-classes-updater.ts │ │ │ ├── identifiers.ts │ │ │ ├── index.ts │ │ │ ├── style-updater.ts │ │ │ └── utils.ts │ ├── navigation.ts │ ├── options.ts │ ├── parser │ │ ├── BpmnParser.ts │ │ ├── json │ │ │ ├── BpmnJsonParser.ts │ │ │ ├── converter │ │ │ │ ├── CategoryConverter.ts │ │ │ │ ├── CollaborationConverter.ts │ │ │ │ ├── DiagramConverter.ts │ │ │ │ ├── EventDefinitionConverter.ts │ │ │ │ ├── GlobalTaskConverter.ts │ │ │ │ ├── ProcessConverter.ts │ │ │ │ └── utils.ts │ │ │ └── warnings.ts │ │ ├── parsing-messages.ts │ │ └── xml │ │ │ └── BpmnXmlParser.ts │ ├── registry │ │ ├── bpmn-elements-registry.ts │ │ ├── bpmn-model-filters.ts │ │ ├── bpmn-model-registry.ts │ │ ├── css-registry.ts │ │ ├── index.ts │ │ ├── overlays-registry.ts │ │ ├── query-selectors.ts │ │ ├── style-registry.ts │ │ └── types.ts │ └── version.ts └── model │ └── bpmn │ ├── internal │ ├── Bounds.ts │ ├── BpmnModel.ts │ ├── Label.ts │ ├── edge │ │ ├── edge.ts │ │ ├── flows.ts │ │ ├── kinds.ts │ │ └── utils.ts │ ├── index.ts │ ├── shape │ │ ├── Shape.ts │ │ ├── ShapeBpmnElement.ts │ │ ├── index.ts │ │ ├── kinds.ts │ │ └── utils.ts │ └── types.ts │ └── json │ ├── INTERNAL.md │ ├── Semantic.ts │ ├── baseElement │ ├── artifact.ts │ ├── baseElement.ts │ ├── conversation.ts │ ├── correlation.ts │ ├── data.ts │ ├── expression.ts │ ├── flowElement.ts │ ├── flowNode │ │ ├── activity │ │ │ ├── activity.ts │ │ │ └── task.ts │ │ ├── choreographyActivity.ts │ │ ├── event.ts │ │ └── gateway.ts │ ├── input-output.ts │ ├── loopCharacteristics.ts │ ├── participant.ts │ ├── resource.ts │ └── rootElement │ │ ├── collaboration.ts │ │ ├── eventDefinition.ts │ │ ├── globalTask.ts │ │ └── rootElement.ts │ ├── bpmn20.ts │ ├── bpmndi.ts │ ├── dc.ts │ └── di.ts ├── tailwind.config.js ├── test ├── .eslintrc.cjs ├── bundles │ ├── .eslintrc.cjs │ ├── bundles.test.ts │ ├── jest-playwright.config.cjs │ ├── jest.config.cjs │ ├── npm.package.test.ts │ ├── static │ │ └── library-integration-iife.html │ └── tsconfig.json ├── config │ ├── jest-playwright.cjs │ ├── jest.image.ts │ ├── jest.retries.ts │ ├── playwright.browser.logs.ts │ └── ts-jest.cjs ├── e2e │ ├── .eslintrc.cjs │ ├── __image_snapshots__ │ │ ├── bpmn-colors │ │ │ ├── enabled │ │ │ │ ├── elements.colors.01.no.label.png │ │ │ │ └── elements.colors.02.labels.png │ │ │ └── ignored │ │ │ │ ├── elements.colors.01.no.label.png │ │ │ │ └── elements.colors.02.labels.png │ │ ├── bpmn-rendering │ │ │ ├── associations.and.annotations.01.general.png │ │ │ ├── associations.and.annotations.02.complex.paths.png │ │ │ ├── associations.and.annotations.03.waypoints.01.inside.shape.png │ │ │ ├── associations.and.annotations.03.waypoints.02.outside.shape.png │ │ │ ├── associations.and.annotations.03.waypoints.03.none.png │ │ │ ├── associations.and.annotations.04.target.edges.png │ │ │ ├── associations.and.annotations.05.target.edges.no.waypoints.png │ │ │ ├── associations.and.annotations.06.defined.in.collaboration.png │ │ │ ├── call.activities.png │ │ │ ├── events.png │ │ │ ├── flows.all.arrows.markers.comparison.png │ │ │ ├── flows.message.01.icons.png │ │ │ ├── flows.message.02.labels.and.complex.paths.png │ │ │ ├── flows.message.03.waypoints.01.none.png │ │ │ ├── flows.message.03.waypoints.02.inside.png │ │ │ ├── flows.message.03.waypoints.03.outside.png │ │ │ ├── flows.message.03.waypoints.04.outside.segments.no.intersection.with.shapes.png │ │ │ ├── flows.sequence.01.kinds.and.complex.paths.png │ │ │ ├── flows.sequence.02.events.from.to.png │ │ │ ├── flows.sequence.03.gateways.from.to.png │ │ │ ├── flows.sequence.04.waypoints.01.none.png │ │ │ ├── flows.sequence.04.waypoints.02.terminal.inside.shapes.png │ │ │ ├── flows.sequence.04.waypoints.03.terminal.outside.shapes.01.general.png │ │ │ ├── flows.sequence.04.waypoints.03.terminal.outside.shapes.02.segments.no.intersection.with.shapes.png │ │ │ ├── flows.sequence.04.waypoints.04.terminal.bonita.events.png │ │ │ ├── flows.sequence.04.waypoints.05.terminal.bonita.gateways.png │ │ │ ├── flows.sequence.05.markers.png │ │ │ ├── gateways.png │ │ │ ├── group.01.in.process.with.label.png │ │ │ ├── group.02.in.collaboration.with.label.png │ │ │ ├── group.03.several.groups.different.size.png │ │ │ ├── group.04.cross.lanes.png │ │ │ ├── group.05.cross.pools.png │ │ │ ├── labels.01.general.png │ │ │ ├── labels.02.position.and.line.breaks.png │ │ │ ├── labels.03.default.position.png │ │ │ ├── labels.04.fonts.png │ │ │ ├── labels.05.default.position.activities.png │ │ │ ├── markers.01.positioning.png │ │ │ ├── markers.02.different.tasks.sizes.png │ │ │ ├── pools.01.labels.and.lanes.png │ │ │ ├── pools.02.vertical.with.lanes.png │ │ │ ├── pools.03.black.box.png │ │ │ ├── pools.04.not.displayed.with.elements.png │ │ │ ├── subprocess.01.with.lanes.png │ │ │ ├── subprocess.02.with.inner.subprocess.png │ │ │ ├── subprocess.03.collapsed.with.elements.png │ │ │ ├── subprocess.04.expanded.with.elements.png │ │ │ └── tasks.png │ │ ├── collapse-expand │ │ │ ├── pools-collapse-Participant_1.png │ │ │ ├── pools-collapse-Participant_2.png │ │ │ ├── pools-collapse-Participant_3.png │ │ │ ├── pools-collapse-Participant_4.png │ │ │ ├── pools-collapse-none.png │ │ │ ├── subprocess-collapse-SubProcess_1.png │ │ │ └── subprocess-collapse-none.png │ │ ├── filter │ │ │ ├── pools-filter-all.png │ │ │ ├── pools-filter-none.png │ │ │ ├── pools-filter-not-displayed-with-elements.png │ │ │ ├── pools-filter-one-with-expanded-call-activity.png │ │ │ ├── pools-filter-one-with-lane.png │ │ │ └── pools-filter-one-with-subprocess.png │ │ ├── fit │ │ │ ├── type-Center │ │ │ │ ├── margin-0 │ │ │ │ │ ├── horizontal.png │ │ │ │ │ ├── vertical.png │ │ │ │ │ ├── with.outside.flows.png │ │ │ │ │ └── with.outside.labels.png │ │ │ │ ├── margin-20 │ │ │ │ │ └── with.outside.flows.png │ │ │ │ └── margin-50 │ │ │ │ │ └── with.outside.flows.png │ │ │ ├── type-Horizontal │ │ │ │ ├── margin-0 │ │ │ │ │ ├── horizontal.png │ │ │ │ │ ├── vertical.png │ │ │ │ │ ├── with.outside.flows.png │ │ │ │ │ └── with.outside.labels.png │ │ │ │ ├── margin-20 │ │ │ │ │ └── horizontal.png │ │ │ │ └── margin-50 │ │ │ │ │ └── horizontal.png │ │ │ ├── type-HorizontalVertical │ │ │ │ └── margin-0 │ │ │ │ │ ├── horizontal.png │ │ │ │ │ ├── vertical.png │ │ │ │ │ ├── with.outside.flows.png │ │ │ │ │ └── with.outside.labels.png │ │ │ ├── type-None │ │ │ │ └── margin-0 │ │ │ │ │ ├── horizontal.png │ │ │ │ │ ├── vertical.png │ │ │ │ │ ├── with.outside.flows.png │ │ │ │ │ └── with.outside.labels.png │ │ │ └── type-Vertical │ │ │ │ ├── margin-0 │ │ │ │ ├── horizontal.png │ │ │ │ ├── vertical.png │ │ │ │ ├── with.outside.flows.png │ │ │ │ └── with.outside.labels.png │ │ │ │ ├── margin-20 │ │ │ │ └── vertical.png │ │ │ │ └── margin-50 │ │ │ │ └── vertical.png │ │ ├── navigation │ │ │ ├── button.zoom.in.png │ │ │ ├── button.zoom.out.png │ │ │ ├── initial.zoom.png │ │ │ ├── mouse.panning.png │ │ │ ├── mouse.zoom.in.1.times.png │ │ │ ├── mouse.zoom.in.3.times.png │ │ │ ├── mouse.zoom.out.1.times.png │ │ │ └── mouse.zoom.out.3.times.png │ │ ├── overlays │ │ │ ├── on.edge │ │ │ │ ├── on-position-end │ │ │ │ │ ├── add.overlay.on.association.flow.png │ │ │ │ │ ├── add.overlay.on.message.flow.png │ │ │ │ │ └── add.overlay.on.sequence.flow.png │ │ │ │ ├── on-position-middle │ │ │ │ │ ├── add.overlay.on.association.flow.png │ │ │ │ │ ├── add.overlay.on.message.flow.png │ │ │ │ │ └── add.overlay.on.sequence.flow.png │ │ │ │ ├── on-position-start │ │ │ │ │ ├── add.overlay.on.association.flow.png │ │ │ │ │ ├── add.overlay.on.message.flow.png │ │ │ │ │ └── add.overlay.on.sequence.flow.png │ │ │ │ ├── remove.all.overlays.of.association.flow.png │ │ │ │ ├── remove.all.overlays.of.message.flow.png │ │ │ │ └── remove.all.overlays.of.sequence.flow.png │ │ │ ├── on.shape │ │ │ │ ├── add.overlay.on.position.bottom-center.png │ │ │ │ ├── add.overlay.on.position.bottom-left.png │ │ │ │ ├── add.overlay.on.position.bottom-right.png │ │ │ │ ├── add.overlay.on.position.middle-left.png │ │ │ │ ├── add.overlay.on.position.middle-right.png │ │ │ │ ├── add.overlay.on.position.top-center.png │ │ │ │ ├── add.overlay.on.position.top-left.png │ │ │ │ ├── add.overlay.on.position.top-right.png │ │ │ │ └── remove.all.overlays.of.shape.png │ │ │ ├── panning.png │ │ │ ├── with.custom.style │ │ │ │ ├── add.overlay.with.custom.fill.png │ │ │ │ ├── add.overlay.with.custom.font.png │ │ │ │ └── add.overlay.with.custom.stroke.png │ │ │ └── zoom.out.png │ │ ├── style │ │ │ ├── fill.color.gradient.png │ │ │ ├── fill.color.opacity.group.png │ │ │ ├── fill.color.opacity.tasks.png │ │ │ ├── fill.color.string.png │ │ │ ├── font.color.opacity.png │ │ │ └── stroke.color.png │ │ └── theme │ │ │ ├── container-background.png │ │ │ ├── theme-brown.png │ │ │ ├── theme-dark.png │ │ │ └── theme-light-blue.png │ ├── bpmn.colors.test.ts │ ├── bpmn.elements.collapsed.test.ts │ ├── bpmn.elements.filter.pools.test.ts │ ├── bpmn.rendering.test.ts │ ├── bpmn.theme.test.ts │ ├── diagram.navigation.fit.test.ts │ ├── diagram.navigation.zoom.pan.test.ts │ ├── generated.svg.test.ts │ ├── helpers │ │ └── visu │ │ │ └── image-snapshot-config.ts │ ├── jest-playwright.config.cjs │ ├── jest.config.cjs │ ├── overlays.rendering.test.ts │ └── style.api.test.ts ├── fixtures │ └── bpmn │ │ ├── bpmn-in-color │ │ ├── elements.colors.01.no.label.bpmn │ │ └── elements.colors.02.labels.bpmn │ │ ├── bpmn-rendering │ │ ├── associations.and.annotations.01.general.bpmn │ │ ├── associations.and.annotations.02.complex.paths.bpmn │ │ ├── associations.and.annotations.03.waypoints.01.inside.shape.bpmn │ │ ├── associations.and.annotations.03.waypoints.02.outside.shape.bpmn │ │ ├── associations.and.annotations.03.waypoints.03.none.bpmn │ │ ├── associations.and.annotations.04.target.edges.bpmn │ │ ├── associations.and.annotations.05.target.edges.no.waypoints.bpmn │ │ ├── associations.and.annotations.06.defined.in.collaboration.bpmn │ │ ├── call.activities.bpmn │ │ ├── events.bpmn │ │ ├── flows.all.arrows.markers.comparison.bpmn │ │ ├── flows.message.01.icons.bpmn │ │ ├── flows.message.02.labels.and.complex.paths.bpmn │ │ ├── flows.message.03.waypoints.01.none.bpmn │ │ ├── flows.message.03.waypoints.02.inside.bpmn │ │ ├── flows.message.03.waypoints.03.outside.bpmn │ │ ├── flows.message.03.waypoints.04.outside.segments.no.intersection.with.shapes.bpmn │ │ ├── flows.sequence.01.kinds.and.complex.paths.bpmn │ │ ├── flows.sequence.02.events.from.to.bpmn │ │ ├── flows.sequence.03.gateways.from.to.bpmn │ │ ├── flows.sequence.04.waypoints.01.none.bpmn │ │ ├── flows.sequence.04.waypoints.02.terminal.inside.shapes.bpmn │ │ ├── flows.sequence.04.waypoints.03.terminal.outside.shapes.01.general.bpmn │ │ ├── flows.sequence.04.waypoints.03.terminal.outside.shapes.02.segments.no.intersection.with.shapes.bpmn │ │ ├── flows.sequence.04.waypoints.04.terminal.bonita.events.bpmn │ │ ├── flows.sequence.04.waypoints.05.terminal.bonita.gateways.bpmn │ │ ├── flows.sequence.05.markers.bpmn │ │ ├── gateways.bpmn │ │ ├── group.01.in.process.with.label.bpmn │ │ ├── group.02.in.collaboration.with.label.bpmn │ │ ├── group.03.several.groups.different.size.bpmn │ │ ├── group.04.cross.lanes.bpmn │ │ ├── group.05.cross.pools.bpmn │ │ ├── labels.01.general.bpmn │ │ ├── labels.02.position.and.line.breaks.bpmn │ │ ├── labels.03.default.position.bpmn │ │ ├── labels.04.fonts.bpmn │ │ ├── labels.05.default.position.activities.bpmn │ │ ├── markers.01.positioning.bpmn │ │ ├── markers.02.different.tasks.sizes.bpmn │ │ ├── pools.01.labels.and.lanes.bpmn │ │ ├── pools.02.vertical.with.lanes.bpmn │ │ ├── pools.03.black.box.bpmn │ │ ├── pools.04.not.displayed.with.elements.bpmn │ │ ├── subprocess.01.with.lanes.bpmn │ │ ├── subprocess.02.with.inner.subprocess.bpmn │ │ ├── subprocess.03.collapsed.with.elements.bpmn │ │ ├── subprocess.04.expanded.with.elements.bpmn │ │ └── tasks.bpmn │ │ ├── collapse-expand │ │ ├── pools.bpmn │ │ └── subprocess.bpmn │ │ ├── filter │ │ ├── pools.bpmn │ │ └── pools.not.displayed.with.elements.bpmn │ │ ├── fit │ │ ├── horizontal.bpmn │ │ ├── vertical.bpmn │ │ ├── with.outside.flows.bpmn │ │ └── with.outside.labels.bpmn │ │ ├── model-badly-attached-elements.bpmn │ │ ├── model-complete-semantic.bpmn │ │ ├── model-coordinates-relative-to-pool-or-lane.bpmn │ │ ├── model-coordinates-relative-to-pool.bpmn │ │ ├── model-invalid-event-def-ref.bpmn │ │ ├── model-vertical-pool-lanes-sub_lanes.bpmn │ │ ├── navigation │ │ └── simple.2.start.events.1.task.bpmn │ │ ├── overlays │ │ ├── overlays.edges.associations.complex.paths.bpmn │ │ ├── overlays.edges.message.flows.complex.paths.bpmn │ │ ├── overlays.edges.sequence.flows.complex.paths.bpmn │ │ ├── overlays.start.flow.task.gateway.bpmn │ │ └── overlays.start.flow.task.gateway.no.waypoints.bpmn │ │ ├── performance │ │ └── B.2.0.bpmn │ │ ├── registry │ │ ├── 1-pool-2-lanes-link-intermediate-events.bpmn │ │ ├── 1-pool-3-lanes-message-start-end-intermediate-events-with-different_ids.bpmn │ │ ├── 1-pool-3-lanes-message-start-end-intermediate-events.bpmn │ │ └── message-flows-with-and-without-icon.bpmn │ │ ├── simple-start-task-end.bpmn │ │ ├── svg │ │ └── simple-start-task-end.bpmn │ │ ├── theme │ │ └── 01.most.bpmn.types.without.label.bpmn │ │ └── xml-parsing │ │ ├── activiti-5_14_1-miwg-A.2.0.export.bpmn │ │ ├── adonis-np-8_0-miwg-A.2.1-export.bpmn │ │ ├── bic-cloud-design-6_2_0-A.3.0-export.bpmn │ │ ├── bizagi-modeler-2_8_0_8-A.2.0-export.bpmn │ │ ├── bonita-community-2021.1-A.2.0.export.bpmn │ │ ├── bpmn-in-color │ │ ├── bpmn-in-color-spec-sample.bpmn │ │ └── issue-2588-both-bpmn-in-color-and-bpmnio_infor-modeler.bpmn │ │ ├── bpmn-plus-composer-v_10_4-miwg-A.4.0.export.bpmn │ │ ├── camuda-eclipse-plugin-3_0_0-A.2.0-export.bpmn │ │ ├── itp-commerce_Vizi-Modeler-for-Microsoft-Visio_7.7151.18707_bug-2857.bpmn │ │ ├── miwg-A.1.0.bpmn │ │ ├── miwg-A.1.0_modified_01_french_characters.bpmn │ │ ├── miwg-A.1.0_modified_02_japanese_characters.bpmn │ │ ├── miwg-A.1.0_modified_10_entities.bpmn │ │ ├── miwg-A.2.1.bpmn │ │ ├── omnitracker-bpmn-11_5-miwg-A.4.1.export.bpmn │ │ ├── special │ │ ├── path.png │ │ ├── simple-start-task-end_large_numbers_and_large_decimals.bpmn │ │ ├── simple-start-task-end_numbers_not_parsable_as_number.bpmn │ │ ├── simple-start-task-end_truncated.bpmn │ │ ├── start-tasks-end_entities_in_attributes.bpmn │ │ ├── text-only.txt │ │ └── xml-but-not-bpmn.xml │ │ └── trisotech-bpmn-modeler-6.2.0_A.4.0-export.bpmn ├── integration │ ├── BpmnVisualization.test.ts │ ├── config │ │ ├── hide-console-warnings.js │ │ └── mxgraph-config.ts │ ├── cross.css.and.style.api.test.ts │ ├── diagram.navigation.test.ts │ ├── dom.bpmn.elements.test.ts │ ├── dom.container.div.test.ts │ ├── dom.css.classes.test.ts │ ├── dom.overlays.test.ts │ ├── helpers │ │ ├── bpmn-visualization-initialization.ts │ │ ├── dom-utils.ts │ │ ├── fit-utils.ts │ │ ├── html-utils.ts │ │ ├── model-expect.ts │ │ └── semantic-with-svg-utils.ts │ ├── jest.config.cjs │ ├── matchers │ │ ├── index.ts │ │ ├── matcher-utils.ts │ │ ├── toBeCell │ │ │ └── index.ts │ │ ├── toBeEdge │ │ │ └── index.ts │ │ └── toBeShape │ │ │ └── index.ts │ ├── model.elements.api.test.ts │ ├── mxGraph.model.bpmn.colors.test.ts │ ├── mxGraph.model.bpmn.elements.test.ts │ ├── mxGraph.model.css.api.test.ts │ ├── mxGraph.model.overlays.test.ts │ ├── mxGraph.model.parsing.entities.test.ts │ └── mxGraph.model.style.api.test.ts ├── performance │ ├── .eslintrc.cjs │ ├── bpmn.load.performance.test.ts │ ├── bpmn.navigation.performance.test.ts │ ├── data │ │ ├── linux │ │ │ └── data.js │ │ ├── macos │ │ │ └── data.js │ │ └── windows │ │ │ └── data.js │ ├── helpers │ │ ├── file-utils.ts │ │ ├── metrics-chromium.ts │ │ └── perf-utils.ts │ ├── index.html │ ├── jest-playwright.config.cjs │ ├── jest.config.cjs │ └── tsconfig.json ├── shared │ ├── environment-utils.cjs │ ├── file-helper.ts │ ├── model │ │ └── bpmn-semantic-utils.ts │ ├── overlays.ts │ ├── query-selectors.ts │ └── visu │ │ ├── bpmn-page-utils.ts │ │ └── test-utils.ts ├── tsconfig.json ├── typescript-moduleResolution-bundler │ ├── .npmrc │ ├── README.md │ ├── package.json │ ├── src │ │ └── index.ts │ └── tsconfig.json ├── typescript-support │ ├── .npmrc │ ├── README.md │ ├── package.json │ ├── src │ │ └── index.ts │ └── tsconfig.json └── unit │ ├── component │ ├── helpers │ │ ├── array-utils.test.ts │ │ └── validators.test.ts │ ├── mxgraph │ │ ├── overlay │ │ │ └── converter.test.ts │ │ ├── renderer │ │ │ ├── StyleComputer.test.ts │ │ │ └── style-utils.test.ts │ │ ├── shape │ │ │ └── render │ │ │ │ ├── BpmnCanvas.test.ts │ │ │ │ └── utils.test.ts │ │ └── style │ │ │ └── utils.test.ts │ ├── parser │ │ ├── BpmnParser.test.ts │ │ ├── json │ │ │ ├── BpmnJsonParser.association.test.ts │ │ │ ├── BpmnJsonParser.callActivity.test.ts │ │ │ ├── BpmnJsonParser.diagram.test.ts │ │ │ ├── BpmnJsonParser.edge.test.ts │ │ │ ├── BpmnJsonParser.event.boundary.test.ts │ │ │ ├── BpmnJsonParser.event.link.with.source.target.test.ts │ │ │ ├── BpmnJsonParser.event.none.test.ts │ │ │ ├── BpmnJsonParser.event.with.event.definition.test.ts │ │ │ ├── BpmnJsonParser.flowNode.test.ts │ │ │ ├── BpmnJsonParser.group.test.ts │ │ │ ├── BpmnJsonParser.label.bounds.test.ts │ │ │ ├── BpmnJsonParser.label.font.test.ts │ │ │ ├── BpmnJsonParser.label.test.ts │ │ │ ├── BpmnJsonParser.lane.test.ts │ │ │ ├── BpmnJsonParser.marker.test.ts │ │ │ ├── BpmnJsonParser.messageFlow.test.ts │ │ │ ├── BpmnJsonParser.process.test.ts │ │ │ ├── BpmnJsonParser.sequenceFlow.conditional.test.ts │ │ │ ├── BpmnJsonParser.sequenceFlow.default.test.ts │ │ │ ├── BpmnJsonParser.sequenceFlow.normal.test.ts │ │ │ ├── BpmnJsonParser.sub.process.test.ts │ │ │ └── BpmnJsonParser.text.annotation.test.ts │ │ ├── parsing-messages.test.ts │ │ └── xml │ │ │ ├── BpmnXmlParser.00.special.parsing.cases.test.ts │ │ │ ├── BpmnXmlParser.activiti.5_14_1.test.ts │ │ │ ├── BpmnXmlParser.adonis-np.8_0.test.ts │ │ │ ├── BpmnXmlParser.bic-cloud-design.6_2_0.test.ts │ │ │ ├── BpmnXmlParser.bizagi-modeler.2_8_0_8.test.ts │ │ │ ├── BpmnXmlParser.bonita-community.2021_1.test.ts │ │ │ ├── BpmnXmlParser.bpmn-plus-composer.v_10_4.test.ts │ │ │ ├── BpmnXmlParser.camuda-eclipse-plugin.3_0_0.test.ts │ │ │ ├── BpmnXmlParser.itp-commerce.7-7151-18707.test.ts │ │ │ ├── BpmnXmlParser.miwg.test.ts │ │ │ ├── BpmnXmlParser.omnitracker-bpmn.11_5.test.ts │ │ │ └── BpmnXmlParser.trisotech-bpmn-modeler.6_2_0.test.ts │ ├── registry │ │ ├── bpmn-model-filters.test.ts │ │ ├── bpmn-model-registry.test.ts │ │ └── css-registry.test.ts │ └── version.test.ts │ ├── file-helper.test.ts │ ├── helpers │ ├── JsonBuilder.test.ts │ ├── JsonBuilder.ts │ ├── JsonTestUtils.ts │ ├── TestUtils.BpmnJsonParser.event.ts │ ├── TestUtils.ts │ ├── bpmn-model-expect.ts │ └── bpmn-model-utils.ts │ ├── jest.config.cjs │ └── model │ └── bpmn │ └── internal │ └── shape │ └── utils.test.ts ├── tsconfig.json ├── tsconfig.npm-package.json ├── tsconfig.test.json ├── tsconfig.typedoc.json ├── tsconfig.utils.json ├── typedoc.json └── vite.config.js /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = space 6 | indent_size = 2 7 | max_line_length = 180 8 | trim_trailing_whitespace = true 9 | insert_final_newline = true 10 | 11 | [*.{md,adoc}] 12 | trim_trailing_whitespace = false 13 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | .github/ 2 | .idea/ 3 | /build/ 4 | /config/ 5 | /dist/ 6 | node_modules/ 7 | scripts/utils/dist/ 8 | test/performance/data/ 9 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/02-feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: "[FEAT] " 5 | labels: enhancement 6 | assignees: '' 7 | 8 | --- 9 | 10 | ### Is your feature request related to a problem? Please describe. 11 | Provide a clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | ### Describe the solution you'd like 14 | Provide a clear and concise description of what you want to happen. 15 | 16 | ### Describe alternatives you've considered 17 | Provide a clear and concise description of any alternative solutions or features you've considered. 18 | 19 | ### Additional context 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/03-question.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Question 3 | about: Ask any question about the project 4 | title: "[QUESTION] " 5 | labels: question 6 | assignees: '' 7 | 8 | --- 9 | 10 | 11 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/04-other.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Other 3 | about: Other issue type 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | Please use this template only if your issue doesn't match a Bug Report, Feature Request or Question. 11 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/README.md: -------------------------------------------------------------------------------- 1 | # Issue Templates 2 | 3 | ## Documentation 4 | 5 | [Syntax for issue forms (the top level properties)](https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-issue-forms) 6 | 7 | [Syntax for GitHub's form schema (the form body)](https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema) 8 | 9 | [Configuring the template chooser (config.yml)](https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/configuring-issue-templates-for-your-repository#configuring-the-template-chooser) 10 | 11 | https://help.github.com/en/github/building-a-strong-community/configuring-issue-templates-for-your-repository#configuring-the-template-chooser 12 | 13 | 14 | ## Template Chooser Sorting 15 | 16 | The templates are sorted in the template chooser based on the filename, not on the form name. This is why we have prefixed the filenames with numbers. 17 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | # see https://help.github.com/en/github/building-a-strong-community/configuring-issue-templates-for-your-repository#configuring-the-template-chooser 2 | blank_issues_enabled: false 3 | contact_links: 4 | - name: "Getting Started with bpmn-visualization" article 5 | url: https://medium.com/@process-analytics/getting-started-with-bpmn-visualization-a54fbafae2df 6 | about: A getting started tutorial to bpmn-visualization using an online monitoring scenario. 7 | - name: "All you need to know about styling BPMN elements" article 8 | url: https://medium.com/@process-analytics/bpmn-visualization-all-you-need-to-know-about-styling-bpmn-elements-24289154c16c 9 | about: Diving into bpmn-visualization Typescript library, we focus on style management, with resources for beginners and advanced usage scenarios. 10 | - name: `bpmn-visualization` examples repository 11 | url: https://github.com/process-analytics/bpmn-visualization-examples/ 12 | about: Examples of use of the `bpmn-visualization` library. 13 | -------------------------------------------------------------------------------- /.github/actions/build-setup/action.yml: -------------------------------------------------------------------------------- 1 | name: 'Build Setup' 2 | description: 'Setup node and install dependencies' 3 | inputs: 4 | install-dependencies: 5 | description: 'Install dependencies with npm.' 6 | required: false 7 | default: 'true' 8 | registry-url: 9 | description: 'Optional registry to set up for auth.' 10 | required: false 11 | runs: 12 | using: 'composite' 13 | steps: 14 | - name: Setup node 15 | uses: actions/setup-node@v4 16 | with: 17 | node-version-file: '.nvmrc' 18 | registry-url: ${{ inputs.registry-url }} 19 | - name: Install dependencies 20 | uses: bahmutov/npm-install@v1 21 | if: inputs.install-dependencies == 'true' 22 | with: 23 | install-command: npm ci --ignore-scripts --prefer-offline --audit false 24 | -------------------------------------------------------------------------------- /.github/actions/free-runner-disk-space-ubuntu/action.yml: -------------------------------------------------------------------------------- 1 | name: 'Free disk space on Ubuntu runner' 2 | description: 'Remove unused cached tools, to free disk space' 3 | 4 | runs: 5 | using: composite 6 | steps: 7 | # 8 | # https://github.com/actions/runner-images/issues/2840#issuecomment-2272410832 (2024-08-07), taking implementation done in https://github.com/cilium/cilium/commit/e553bd23443ef14c8cbbeeafa7ebab3bb30c3fac and remove only tools that we don't use 9 | # We may also use https://github.com/jlumbroso/free-disk-space mentioned in https://github.com/actions/runner-images/issues/2875#issuecomment-1163363045 10 | - name: Free up disk space 11 | shell: bash 12 | run: | 13 | echo "Disk space before cleanup..." 14 | df -kh 15 | echo "Removing unnecessary files to free up disk space..." 16 | sudo rm -rf \ 17 | "$AGENT_TOOLSDIRECTORY" \ 18 | /opt/microsoft/powershell \ 19 | /opt/pipx \ 20 | /usr/lib/mono \ 21 | /usr/local/julia* \ 22 | /usr/local/lib/android \ 23 | /usr/local/share/powershell \ 24 | /usr/share/dotnet \ 25 | /usr/share/swift 26 | echo "Disk space after cleanup..." 27 | df -kh 28 | -------------------------------------------------------------------------------- /.github/actions/install-playwright-browser/action.yml: -------------------------------------------------------------------------------- 1 | name: Install Playwright Browsers 2 | description: 'Setup node and install dependencies' 3 | inputs: 4 | browser: 5 | description: 'The browser to install' 6 | required: true 7 | runs: 8 | using: 'composite' 9 | steps: 10 | - name: Install ${{inputs.browser}} 11 | # Only install browsers not available in the GH runner, or that need a special version modified for playwright 12 | if: inputs.browser == 'chromium' || inputs.browser == 'firefox' || inputs.browser == 'webkit' 13 | shell: bash 14 | # --only-shell: only install headless shell when installing chromium 15 | run: npx playwright install ${{inputs.browser}} --only-shell 16 | # install OS dependencies required by browsers on the GitHub runner 17 | # to be sure that the browser is correctly installed: https://github.com/microsoft/playwright/issues/5801 18 | - name: Install ${{inputs.browser}} dependencies 19 | shell: bash 20 | run: npx playwright install-deps ${{inputs.browser}} 21 | -------------------------------------------------------------------------------- /.github/actions/log-disk-space/action.yml: -------------------------------------------------------------------------------- 1 | name: 'Log disk space' 2 | description: 'Log disk space (for troubleshooting)' 3 | 4 | runs: 5 | using: "composite" 6 | 7 | steps: 8 | - name: Log disk space on Unix based OS 9 | shell: bash 10 | if: runner.os != 'Windows' 11 | run: df -kh 12 | - name: Log disk space on Windows 13 | shell: pwsh 14 | if: runner.os == 'Windows' 15 | run: Get-Volume 16 | 17 | -------------------------------------------------------------------------------- /.github/workflows/dependency-review-pr.yml: -------------------------------------------------------------------------------- 1 | name: 'Dependency Review' 2 | on: 3 | pull_request: 4 | paths: 5 | - '.github/workflows/dependency-review-pr.yml' 6 | - 'package.json' 7 | - 'package-lock.json' 8 | 9 | permissions: 10 | contents: read 11 | 12 | jobs: 13 | dependency-review: 14 | runs-on: ubuntu-24.04 15 | steps: 16 | - name: 'Checkout Repository' 17 | uses: actions/checkout@v4 18 | - name: 'Dependency Review' 19 | uses: actions/dependency-review-action@v4 20 | -------------------------------------------------------------------------------- /.github/workflows/fill-gh-draft-release.yml: -------------------------------------------------------------------------------- 1 | name: Fill GitHub Draft Release 2 | 3 | on: 4 | workflow_dispatch: 5 | push: 6 | branches: 7 | - master 8 | 9 | jobs: 10 | update_release_draft: 11 | runs-on: ubuntu-24.04 12 | permissions: 13 | # To create or update releases 14 | contents: write 15 | steps: 16 | # Drafts your next Release notes as Pull Requests are merged into "master" 17 | - uses: release-drafter/release-drafter@v6.1.0 18 | env: 19 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 20 | -------------------------------------------------------------------------------- /.github/workflows/generate-demo-preview.yml: -------------------------------------------------------------------------------- 1 | name: Generate Demo Preview 2 | 3 | on: 4 | pull_request: 5 | # To manage 'surge-preview' action teardown, add default event types + closed event type 6 | types: [opened, synchronize, reopened, closed] 7 | branches: 8 | - master 9 | paths: 10 | - '.github/actions/build-setup/**/*' 11 | - '.github/actions/custom-surge-preview/**/*' 12 | - '.github/workflows/generate-demo-preview.yml' 13 | - 'config/**/*' 14 | - 'dev/**/*' 15 | - 'scripts/prepare-demo-for-publish.mjs' 16 | - 'src/**/*' 17 | - '.nvmrc' 18 | - 'package.json' 19 | - 'package-lock.json' 20 | - 'postcss.config.cjs' 21 | - 'tailwind.config.js' 22 | - 'tsconfig.json' 23 | - 'vite.config.js' 24 | 25 | jobs: 26 | demo_preview: # keep unique across jobs using surge preview (preview url and PR comment id) 27 | runs-on: ubuntu-24.04 28 | permissions: 29 | pull-requests: write # surge-preview: PR comments 30 | steps: 31 | - uses: actions/checkout@v4 # access to the local action 32 | - name: surge preview 33 | uses: ./.github/actions/custom-surge-preview 34 | with: 35 | artifact-name: demo 36 | build-preview-command: npm run demo 37 | build-preview-dist: build/demo 38 | github-token: ${{ secrets.GITHUB_TOKEN }} 39 | surge-token: ${{ secrets.SURGE_TOKEN }} 40 | -------------------------------------------------------------------------------- /.github/workflows/notify-new-version-available-on-npm.yml: -------------------------------------------------------------------------------- 1 | name: Notify other repositories of a new version available on npm 2 | on: 3 | workflow_dispatch: 4 | inputs: 5 | version: 6 | description: 'Version' 7 | required: true 8 | repository_dispatch: 9 | types: [ new_version_available_on_npm ] 10 | 11 | 12 | # another repository is notified in 'upload-demo-archive-and-trigger-examples-repository-update.yml' 13 | jobs: 14 | notify: 15 | runs-on: ubuntu-24.04 16 | env: 17 | VERSION: ${{ github.event.client_payload.version || inputs.version }} 18 | strategy: 19 | matrix: 20 | repository: 21 | - bpmn-visualization-R 22 | steps: 23 | # Need to checkout to access to the internal action 24 | - uses: actions/checkout@v4 25 | - name: Notify that a new bpmn-visualization version is available 26 | uses: ./.github/actions/notify-PA-repo-of-new-version 27 | with: 28 | PA_REPOSITORY: ${{ matrix.repository }} 29 | TOKEN: ${{ secrets.GH_RELEASE_TOKEN }} 30 | VERSION: ${{ env.VERSION }} 31 | 32 | 33 | -------------------------------------------------------------------------------- /.github/workflows/pr-metadata-checks.yml: -------------------------------------------------------------------------------- 1 | name: Check Pull Request Metadata 2 | on: 3 | pull_request_target: 4 | # trigger when the PR title changes 5 | types: [opened, edited, reopened] 6 | 7 | jobs: 8 | pr-title: 9 | runs-on: ubuntu-24.04 10 | permissions: 11 | pull-requests: write # post comments when the PR title doesn't match the "Conventional Commits" rules 12 | steps: 13 | - name: Check Pull Request title 14 | uses: bonitasoft/actions/packages/pr-title-conventional-commits@v3 15 | -------------------------------------------------------------------------------- /.github/workflows/publish-npm.yml: -------------------------------------------------------------------------------- 1 | name: Publish NPM Package 2 | on: 3 | push: 4 | tags: 5 | - v* 6 | jobs: 7 | build: 8 | runs-on: ubuntu-24.04 9 | permissions: 10 | id-token: write 11 | contents: write # required to get token for "npm provenance" and to dispatch event 12 | steps: 13 | - name: Set VERSION 14 | shell: bash 15 | run: echo "VERSION=${GITHUB_REF#refs/tags/v*}" >> $GITHUB_ENV 16 | - uses: actions/checkout@v4 17 | - name: Build Setup 18 | uses: ./.github/actions/build-setup 19 | with: 20 | registry-url: 'https://registry.npmjs.org' 21 | - run: npm publish --provenance --access public 22 | env: 23 | NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} 24 | - name: Trigger workflows in charge of notifying other repositories 25 | uses: peter-evans/repository-dispatch@v3 26 | with: 27 | # use the default GITHUB_TOKEN, this is possible because we are dispatching the same repository 28 | event-type: new_version_available_on_npm 29 | client-payload: '{ "version": "${{ env.VERSION }}" }' 30 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Release 2 | 3 | on: 4 | workflow_dispatch: 5 | inputs: 6 | type: 7 | description: 'New version type [new-version | major | minor | patch]' 8 | required: true 9 | default: 'patch' 10 | jobs: 11 | bumpVersion: 12 | runs-on: ubuntu-24.04 13 | steps: 14 | - run: | 15 | echo "New version type: ${{ inputs.type }}" 16 | - name: Setup checkout 17 | uses: actions/checkout@v4 18 | with: 19 | # Use a PAT to ensure workflow run are triggered after git push 20 | token: ${{ secrets.GH_RELEASE_TOKEN }} 21 | - name: Build Setup 22 | uses: ./.github/actions/build-setup 23 | with: 24 | install-dependencies: false 25 | - name: Config git 26 | run: | 27 | git config --local user.email "${{ vars.PA_BOT_EMAIL }}" 28 | git config --local user.name "${{ vars.PA_BOT_NAME }}" 29 | git config pull.rebase true 30 | - name: Checkout master 31 | run: git checkout master && git pull --tags 32 | - name: Bump Version 33 | run: | 34 | npm run version-prepare && npm version ${{ inputs.type }} --no-commit-hooks --message "chore(release): %s" 35 | - name: Push Version 36 | run: git push && git push --tags 37 | -------------------------------------------------------------------------------- /.github/workflows/upload-demo-archive-and-trigger-examples-repository-update.yml: -------------------------------------------------------------------------------- 1 | name: Upload Demo Archive & Trigger Examples Repository Update 2 | 3 | on: 4 | repository_dispatch: 5 | types: [ new_version_available_on_npm ] 6 | workflow_dispatch: 7 | inputs: 8 | version: 9 | description: 'Version' 10 | required: true 11 | 12 | jobs: 13 | upload_demo_archive: 14 | runs-on: ubuntu-24.04 15 | env: 16 | VERSION: ${{ github.event.client_payload.version || inputs.version }} 17 | steps: 18 | - uses: actions/checkout@v4 19 | with: 20 | ref: v${{ env.VERSION }} 21 | - name: Build Setup 22 | uses: ./.github/actions/build-setup 23 | - name: Build Demo 24 | run: npm run demo 25 | - name: Set ARTIFACT_NAME 26 | run: echo "ARTIFACT_NAME=demo-${{github.sha}}" >> $GITHUB_ENV 27 | - name: Upload 28 | uses: actions/upload-artifact@v4 29 | with: 30 | name: ${{ env.ARTIFACT_NAME }} 31 | path: build/demo/dev/public 32 | - name: Notify bpmn-visualization-examples repository of new bpmn-visualization version 33 | uses: ./.github/actions/notify-PA-repo-of-new-version 34 | with: 35 | PA_REPOSITORY: 'bpmn-visualization-examples' 36 | BUILD_DEMO_WORKFLOW_ID: "upload-demo-archive-and-trigger-examples-repository-update.yml" 37 | ARTIFACT_NAME: '${{ env.ARTIFACT_NAME }}' 38 | TOKEN: ${{ secrets.GH_RELEASE_TOKEN }} 39 | VERSION: ${{ env.VERSION }} 40 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # IDE 2 | /.idea/ 3 | *.iml 4 | *.project 5 | *.DS_Store 6 | 7 | # Build directories 8 | *.jest-image-snapshot-touched-files 9 | /build/ 10 | /dist/ 11 | node_modules/ 12 | /scripts/utils/dist/ 13 | 14 | # npm build 15 | *.tgz 16 | -------------------------------------------------------------------------------- /.gitpod.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM gitpod/workspace-full 2 | 3 | # Basing on the following: 4 | # https://github.com/jankeromnes/gitpodPuppeteerTest 5 | # https://stackoverflow.com/questions/62345581/node-js-puppeteer-on-docker-no-usable-sandbox 6 | # the new Dockerfile was created to permit the launch of the tests that requires 'puppeteer' 7 | 8 | RUN sudo apt-get update && \ 9 | sudo apt-get install -y \ 10 | ca-certificates \ 11 | fonts-liberation \ 12 | libappindicator3-1 \ 13 | libasound2 \ 14 | libatk-bridge2.0-0 \ 15 | libatk1.0-0 \ 16 | libc6 \ 17 | libcairo2 \ 18 | libcups2 \ 19 | libdbus-1-3 \ 20 | libexpat1 \ 21 | libfontconfig1 \ 22 | libgbm1 \ 23 | libgcc1 \ 24 | libglib2.0-0 \ 25 | libgtk-3-0 \ 26 | libnspr4 \ 27 | libnss3 \ 28 | libpango-1.0-0 \ 29 | libpangocairo-1.0-0 \ 30 | libstdc++6 \ 31 | libx11-6 \ 32 | libx11-xcb1 \ 33 | libxcb1 \ 34 | libxcomposite1 \ 35 | libxcursor1 \ 36 | libxdamage1 \ 37 | libxext6 \ 38 | libxfixes3 \ 39 | libxi6 \ 40 | libxrandr2 \ 41 | libxrender1 \ 42 | libxss1 \ 43 | libxtst6 \ 44 | lsb-release \ 45 | wget \ 46 | xdg-utils && \ 47 | sudo rm -rf /var/lib/apt/lists/* 48 | -------------------------------------------------------------------------------- /.gitpod.yml: -------------------------------------------------------------------------------- 1 | image: 2 | file: .gitpod.Dockerfile 3 | 4 | tasks: 5 | - init: nvm install && npm install 6 | 7 | vscode: 8 | extensions: 9 | - firsttris.vscode-jest-runner 10 | - dbaeumer.vscode-eslint 11 | - esbenp.prettier-vscode 12 | - EditorConfig.EditorConfig 13 | -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | lint-staged 2 | -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | 20 2 | -------------------------------------------------------------------------------- /.prettierrc.js: -------------------------------------------------------------------------------- 1 | const config = { 2 | semi: true, 3 | trailingComma: 'all', 4 | singleQuote: true, 5 | arrowParens: 'avoid', 6 | endOfLine: 'auto', 7 | }; 8 | export default config; 9 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.formatOnSave": true, 3 | "editor.codeActionsOnSave": { 4 | "source.fixAll": true 5 | }, 6 | // Jest Extension (https://github.com/jest-community/vscode-jest) 7 | // The following is to run unit tests 8 | // Change the configuration file if you want to run other kind of tests (integration, e2e) 9 | "jest.jestCommandLine": "node_modules/.bin/jest --runInBand --config=./test/unit/jest.config.cjs", 10 | // editorconfig extension 11 | "editorconfig.generateAuto": false, 12 | // eslint extension 13 | "eslint.enable": true, 14 | "eslint.run": "onSave", 15 | "eslint.validate": ["typescript"], 16 | "eslint.format.enable": true, 17 | "eslint.lintTask.enable": true, 18 | // prettier extension 19 | "prettier.useEditorConfig": true 20 | } 21 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | See release notes on [the GitHub Releases page](https://github.com/process-analytics/bpmn-visualization-js/releases). 4 | 5 | It provides user-centric information, including screenshots and videos illustrating fixes and new features. 6 | 7 | -------------------------------------------------------------------------------- /NOTICE: -------------------------------------------------------------------------------- 1 | Copyright 2020 Bonitasoft S.A. 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. 14 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | ## Supported Versions 4 | 5 | 9 | 10 | Only the latest released version currently benefits from security updates. 11 | 12 | | Version | Supported | 13 | | -------- | ------------------ | 14 | | [latest] | :white_check_mark: | 15 | | others | :x: | 16 | 17 | ## Reporting a Vulnerability 18 | 19 | 25 | 26 | To report a security vulnerability, please open a [draft security advisory] on GitHub. 27 | 28 | [latest]: https://github.com/process-analytics/bpmn-visualization-js/releases/latest 29 | [draft security advisory]: https://github.com/process-analytics/bpmn-visualization-js/security/advisories/new 30 | -------------------------------------------------------------------------------- /config/license-header.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright <%= YEAR %> Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | -------------------------------------------------------------------------------- /dev/public/bpmn-rendering.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | bpmn-visualization - BPMN rendering 6 | 7 | 21 | 22 | 23 | 24 |
25 |
26 | 27 | 28 | -------------------------------------------------------------------------------- /dev/public/library-integration.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | bpmn-visualization - Library Integration 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | -------------------------------------------------------------------------------- /dev/public/static/css/styles.css: -------------------------------------------------------------------------------- 1 | /* static/css/styles.css */ 2 | @import 'tailwindcss'; 3 | 4 | /* noinspection CssInvalidAtRule */ 5 | @config '../../../../tailwind.config.js'; 6 | 7 | /* 8 | The default border color has changed to `currentColor` in Tailwind CSS v4, 9 | so we've added these compatibility styles to make sure everything still 10 | looks the same as it did with Tailwind CSS v3. 11 | 12 | If we ever want to remove these styles, we need to add an explicit border 13 | color utility to any element that depends on these defaults. 14 | */ 15 | @layer base { 16 | *, 17 | ::after, 18 | ::before, 19 | ::backdrop, 20 | ::file-selector-button { 21 | border-color: var(--color-gray-200, currentColor); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /dev/public/static/css/test-page.css: -------------------------------------------------------------------------------- 1 | .hidden { 2 | opacity: 0; 3 | } 4 | 5 | .flex-container { 6 | display: flex; 7 | justify-content: space-between; 8 | align-items: center; 9 | } 10 | 11 | .flex-container > div { 12 | top: 20px; 13 | bottom: 20px; 14 | position: absolute; 15 | } 16 | 17 | .flex-column-container { 18 | display: flex; 19 | flex-direction: column; 20 | justify-content: space-around; 21 | } 22 | 23 | #bpmn-container { 24 | left: 50px; 25 | right: 20px; 26 | border-style: solid; 27 | border-color: #B0B0B0; 28 | border-width: 1px; 29 | overflow: hidden; 30 | } 31 | 32 | button { 33 | border-radius: 4px; 34 | padding: 0; 35 | width: 28px; 36 | height: 28px; 37 | } 38 | 39 | .tooltip { 40 | visibility: hidden; 41 | width: 300px; 42 | background-color: black; 43 | color: #fff; 44 | fill: #B0B0B0; 45 | text-align: center; 46 | border-radius: 6px; 47 | padding: 5px 0; 48 | position: absolute; 49 | z-index: 1; 50 | top: -5px; 51 | left: 110%; 52 | font-family: monospace; 53 | } 54 | 55 | .info:hover .tooltip { 56 | visibility: visible; 57 | } 58 | 59 | label { 60 | font-size: 0.65em; 61 | } 62 | -------------------------------------------------------------------------------- /dev/ts/development-bundle-index.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | export * from './shared/controls'; 18 | export * from './shared/main'; 19 | export * from './shared/shared-helpers'; 20 | export * from '../../src/bpmn-visualization'; 21 | // extra code not exported by bpmn-visualization 22 | export * from '../../src/model/bpmn/internal/edge/utils'; 23 | -------------------------------------------------------------------------------- /dev/ts/pages/bpmn-rendering.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2020 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | import { documentReady, log, logError, startBpmnVisualization } from '../development-bundle-index'; 18 | 19 | function statusFetchKO(errorMessage: string): void { 20 | logError(errorMessage); 21 | const statusElt = document.querySelector('#status-zone'); 22 | statusElt.textContent = errorMessage; 23 | statusElt.className = 'status-ko'; 24 | log('Status zone set with error:', errorMessage); 25 | } 26 | 27 | documentReady(() => startBpmnVisualization({ globalOptions: { container: 'bpmn-container' }, statusKoNotifier: statusFetchKO })); 28 | -------------------------------------------------------------------------------- /dev/ts/shared/shared-helpers.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | import { _log } from './internal-helpers'; 18 | 19 | export function documentReady(callbackFunction: () => void): void { 20 | // see if DOM is already available 21 | if (document.readyState === 'complete' || document.readyState === 'interactive') { 22 | // call on next available tick 23 | setTimeout(callbackFunction, 1); 24 | } else { 25 | document.addEventListener('DOMContentLoaded', callbackFunction); 26 | } 27 | } 28 | 29 | export function log(message?: string, ...optionalParameters: unknown[]): void { 30 | _log('[DEMO]', message, ...optionalParameters); 31 | } 32 | 33 | export { logError } from './internal-helpers'; 34 | -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 | # Sources of the `bpmn-visualization` documentation 2 | 3 | If you are a user, you can see the documentation on the [__⏩ documentation site__](https://process-analytics.github.io/bpmn-visualization-js/). 4 | 5 | If you are a contributor to the code of `bpmn-visualization`, you can find the documentation in the [contributors](contributors/README.md) folder. 6 | 7 | If you want to contribute to the documentation, please first read the [documentation guidelines](contributors/documentation-guidelines.md). 8 | Then, you can modify the sources of the user documentation that are available in the [users](users/) folder. 9 | -------------------------------------------------------------------------------- /docs/contributors/README.md: -------------------------------------------------------------------------------- 1 | # Guidelines for Contributors and Development 2 | 3 | General information are available in the [Contributing Guide](../../CONTRIBUTING.md). 4 | 5 | Here are some tips to help during development. 6 | 7 | 🔥 Remember that some add-on features are developed in the [__⏩ bpmn-visualization-addons__](https://github.com/process-analytics/bpmn-visualization-addons/) repository. 8 | 9 | ## Build and develop 10 | 11 | - Architecture: Information about the library internals are available in the [architecture folder](../users/architecture) or in HTML form in the [documentation site](https://process-analytics.github.io/bpmn-visualization-js/#_architecture_and_development). 12 | - [How to build & Code style](development.md) 13 | - [IDE configuration](ide-configuration.md) 14 | 15 | ## Contributing 16 | - [testing](testing.md) 17 | - [how to add support for BPMN elements](bpmn-support-how-to.md) 18 | - [how to submit your work](pull-request.md) 19 | - [demo page css](demo-page-css.md) 20 | - [TypeScript version](supported-typescript-version.md) 21 | - [mxGraph integration](mxgraph-integration.md) 22 | - [mxGraph version bump](mxgraph-version-bump.md) 23 | 24 | ## Misc 25 | - [Documentation guidelines](documentation-guidelines.md) 26 | - [For the maintainers](maintainers.md): in particular, how to release a new version. 27 | - Automations (CI/CD, release, etc.) are managed by [GitHub Actions](https://docs.github.com/en/actions). The related configuration in available in the [actions](../../.github/actions) and [workflows](../../.github/workflows) directories. 28 | -------------------------------------------------------------------------------- /docs/contributors/demo-page-css.md: -------------------------------------------------------------------------------- 1 | ## CSS for Demo 2 | 3 | The project demo page (`index.html`) uses [tailwindcss](https://tailwindcss.com/docs). 4 | 5 | Vite automatically processes the CSS rules using `postcss`. 6 | 7 | Feel free to preview config files: 8 | - [postcss.config.cjs](../../postcss.config.cjs) 9 | - [tailwind.config.js](../../tailwind.config.js) 10 | -------------------------------------------------------------------------------- /docs/contributors/documentation-guidelines.md: -------------------------------------------------------------------------------- 1 | # Documentation guidelines 2 | Below guidance should serve to write the properly distributed documentation and to avoid any duplications. 3 | 4 | Projects documentation consists of: 5 | - HTML documentation - everything under the [/docs/users](../users) folder, with AsciiDoctor sources 6 | - High level information 7 | - Contextual content 8 | - BPMN support details 9 | - Architecture overview 10 | 11 | - Markdown documentation for Developers / Integrators - all .md files in project root and under [/docs/contributors](../contributors) folder 12 | - Development guidance 13 | - How tos 14 | - Detailed usage 15 | 16 | ⚠️ _IMPORTANT TO NOTE_ \ 17 | The root README file content should not be overwhelming and supposed to contain only basic information: 18 | - Project introduction 19 | - Basic usage 20 | - Links to examples and developers or html documentation for more details 21 | 22 | 23 | ## Building the HTML documentation 24 | 25 | **DISCLAIMER**: 26 | The documentation sources are in the AsciiDoctor format. 27 | Depending on the rendering engine, the display may not work completely (font-awesome icons and some links). 28 | This is the case when viewing directly on GitHub Web. 29 | 30 | - From the root folder of the repository, run 31 | ```bash 32 | npm run docs 33 | ``` 34 | 35 | The documentation is accessible in the `build/docs` folder. 36 | -------------------------------------------------------------------------------- /docs/contributors/images/bpmn-icon-example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/docs/contributors/images/bpmn-icon-example.png -------------------------------------------------------------------------------- /docs/contributors/images/inkscape-result1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/docs/contributors/images/inkscape-result1.png -------------------------------------------------------------------------------- /docs/contributors/images/inkscape-result2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/docs/contributors/images/inkscape-result2.png -------------------------------------------------------------------------------- /docs/contributors/images/mxgraph-perimeter/flows.sequence.04.waypoints.03.terminal.outside.shapes.02.segments.no.intersection.with.shapes-snap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/docs/contributors/images/mxgraph-perimeter/flows.sequence.04.waypoints.03.terminal.outside.shapes.02.segments.no.intersection.with.shapes-snap.png -------------------------------------------------------------------------------- /docs/contributors/images/mxgraph-perimeter/markers-01-positioning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/docs/contributors/images/mxgraph-perimeter/markers-01-positioning.png -------------------------------------------------------------------------------- /docs/contributors/images/mxgraph-perimeter/markers-02-rendering.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/docs/contributors/images/mxgraph-perimeter/markers-02-rendering.png -------------------------------------------------------------------------------- /docs/contributors/images/mxgraph-perimeter/markers-03-projection-vs-intersection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/docs/contributors/images/mxgraph-perimeter/markers-03-projection-vs-intersection.png -------------------------------------------------------------------------------- /docs/contributors/images/mxgraph-perimeter/perimeter-no-intersection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/docs/contributors/images/mxgraph-perimeter/perimeter-no-intersection.png -------------------------------------------------------------------------------- /docs/contributors/images/release_process_part-01_release_automation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/docs/contributors/images/release_process_part-01_release_automation.png -------------------------------------------------------------------------------- /docs/contributors/images/release_process_part-02_github.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/docs/contributors/images/release_process_part-02_github.png -------------------------------------------------------------------------------- /docs/contributors/images/release_process_part-10_examples_release-notes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/docs/contributors/images/release_process_part-10_examples_release-notes.png -------------------------------------------------------------------------------- /docs/contributors/mxgraph-version-bump.md: -------------------------------------------------------------------------------- 1 | # Tips for `mxGraph` version bump 2 | 3 | ## Minimal check list 4 | 5 | - check the [mxGraph changelog](https://github.com/jgraph/mxgraph/blob/master/ChangeLog) to see what could impact the lib 6 | - review issues list, in particular in the [BPMN Rendering Improvements milestone](https://github.com/process-analytics/bpmn-visualization-js/milestone/14) which could be impacted or fixed by the version bump 7 | - apply the version bump 8 | - review the overridden mxGraph code, generally, we extends the mxGraph objects, so search for the `extends mxgraph.mx` string 9 | - ensure we have enough visual tests to cover any regression or changes introduced 10 | - run the [performance tests](./testing.md#performance-tests) on all OS, ensure we don't see any performance regressions and save the results 11 | 12 | 13 | ### Manual tests 14 | 15 | In addition to e2e tests, it is safer to perform manual testing using BPMN diagrams from the `bpmn-visualization-examples` repository or `miwg-test-suite`. 16 | 17 | The `bpmn-visualization-examples` repository provides usage examples that can be used for such tests: 18 | - diagram load and navigation 19 | - custom behavior and css styling 20 | 21 | In the repository of `bpmn-visualization`, test pages are also available (some are not used by e2e tests). 22 | 23 | 24 | ## Resources 25 | 26 | - Examples of visual testing failures: [Pull Request #502](https://github.com/process-analytics/bpmn-visualization-js/pull/502) 27 | - Attempt to "Bump mxgraph from 4.1.0 to 4.1.1": [Pull Request #547](https://github.com/process-analytics/bpmn-visualization-js/pull/547#issuecomment-678959718) 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /docs/users/architecture/00-index.adoc: -------------------------------------------------------------------------------- 1 | = Architecture and Development 2 | :icons: font 3 | 4 | include::architecture-overview.adoc[] 5 | 6 | include::bpmn-internal-model.adoc[] 7 | 8 | include::bpmn-parsing.adoc[] 9 | 10 | include::mxgraph-integration.adoc[] 11 | 12 | include::development.adoc[] 13 | -------------------------------------------------------------------------------- /docs/users/architecture/architecture-overview.adoc: -------------------------------------------------------------------------------- 1 | == Architecture Overview 2 | 3 | `bpmn-visualization` consists on 3 main modules: 4 | 5 | * the *BPMN parser*: read a BPMN source (xml string) and convert it into its own <>. 6 | * the *BPMN renderer*: display the BPMN diagrams represented by the internal Model, using the https://jgraph.github.io/mxgraph/[mxGraph library] 7 | * the *interactions component*: interact with the BPMN elements (diagram navigation, add custom listeners to dynamically enrich and/or modify the model style, ...) 8 | 9 | image::images/architecture/architecture-overview.svg[] 10 | -------------------------------------------------------------------------------- /docs/users/architecture/bpmn-internal-model.adoc: -------------------------------------------------------------------------------- 1 | [[bpmn-internal-model]] 2 | == BPMN Internal Model 3 | 4 | Our internal model is based on the https://www.omg.org/spec/BPMN/2.0.2/PDF[BPMN specification]. 5 | 6 | image::images/architecture/internal-model.svg[] 7 | -------------------------------------------------------------------------------- /docs/users/architecture/bpmn-parsing.adoc: -------------------------------------------------------------------------------- 1 | == BPMN Parsing 2 | 3 | === XML Parser 4 | 5 | To parse XML data, we use the https://github.com/NaturalIntelligence/fast-xml-parser[fast-xml-parser] library. 6 | 7 | You can see the implementation in *BpmnXmlParser.ts*. 8 | 9 | === Json Parser 10 | 11 | To parse a JSON data, we use a custom parser. 12 | 13 | You can see the implementation in *BpmnJsonParser.ts*. 14 | We have different _converters_ (in the *converter* folder where the *BpmnJsonParser* file is) in order to match the BPMN model to our internal model. 15 | -------------------------------------------------------------------------------- /docs/users/architecture/development.adoc: -------------------------------------------------------------------------------- 1 | == Development 2 | :icons: font 3 | ifdef::env-github[] 4 | :tip-caption: :bulb: 5 | :note-caption: :information_source: 6 | :important-caption: :heavy_exclamation_mark: 7 | :caution-caption: :fire: 8 | :warning-caption: :warning: 9 | endif::[] 10 | 11 | [TIP] 12 | ==== 13 | - To know how to build the project, please have a look at the https://github.com/process-analytics/bpmn-visualization-js/blob/master/CONTRIBUTING.md[contributing guide]. 14 | - For any development tips, see the https://github.com/process-analytics/bpmn-visualization-js/blob/master/docs/contributors[development documentation]. 15 | ==== 16 | -------------------------------------------------------------------------------- /docs/users/architecture/mxgraph-integration.adoc: -------------------------------------------------------------------------------- 1 | == mxGraph Integration 2 | 3 | The https://jgraph.github.io/mxgraph/[mxGraph] integration is in charge of rendering the BPMN diagrams, by filling the 4 | https://jgraph.github.io/mxgraph/docs/manual.html#3.1.1[mxGraph model] from the BPMN model. 5 | 6 | It also provides the Diagram Navigation support. 7 | 8 | For more details, see the https://github.com/process-analytics/bpmn-visualization-js/tree/master/docs/contributors/mxgraph-integration.md[development documentation]. 9 | -------------------------------------------------------------------------------- /docs/users/images/bpmn-diagram_navigation_C.2.0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/docs/users/images/bpmn-diagram_navigation_C.2.0.gif -------------------------------------------------------------------------------- /docs/users/images/bpmn-in-color-C.1.0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/docs/users/images/bpmn-in-color-C.1.0.png -------------------------------------------------------------------------------- /docs/users/images/bpmn-theme-custom-colors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/docs/users/images/bpmn-theme-custom-colors.png -------------------------------------------------------------------------------- /docs/users/images/bpmn-theme-default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/docs/users/images/bpmn-theme-default.png -------------------------------------------------------------------------------- /docs/users/images/custom-behavior-path-highlighting.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/docs/users/images/custom-behavior-path-highlighting.gif -------------------------------------------------------------------------------- /docs/users/images/custom-behavior-popovers.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/docs/users/images/custom-behavior-popovers.gif -------------------------------------------------------------------------------- /docs/users/images/diagram-example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/docs/users/images/diagram-example.png -------------------------------------------------------------------------------- /docs/users/images/icons/event_boundary_cancel.svg: -------------------------------------------------------------------------------- 1 | 2 | 9 | 16 | 17 | -------------------------------------------------------------------------------- /docs/users/images/icons/event_end_cancel.svg: -------------------------------------------------------------------------------- 1 | 2 | 9 | 16 | 17 | -------------------------------------------------------------------------------- /docs/users/images/icons/event_end_error.svg: -------------------------------------------------------------------------------- 1 | 2 | 9 | 17 | 18 | -------------------------------------------------------------------------------- /docs/users/images/icons/event_end_terminate.svg: -------------------------------------------------------------------------------- 1 | 2 | 9 | 17 | 18 | -------------------------------------------------------------------------------- /docs/users/images/icons/event_intermediate_catch_link.svg: -------------------------------------------------------------------------------- 1 | 2 | 9 | 18 | 19 | -------------------------------------------------------------------------------- /docs/users/images/icons/event_intermediate_catch_start_boundary_conditional.svg: -------------------------------------------------------------------------------- 1 | 2 | 9 | 17 | 18 | -------------------------------------------------------------------------------- /docs/users/images/icons/event_intermediate_catch_start_boundary_message.svg: -------------------------------------------------------------------------------- 1 | 2 | 9 | 18 | 25 | 26 | -------------------------------------------------------------------------------- /docs/users/images/icons/event_intermediate_catch_start_boundary_signal.svg: -------------------------------------------------------------------------------- 1 | 2 | 9 | 17 | 18 | -------------------------------------------------------------------------------- /docs/users/images/icons/event_intermediate_throw_end_compensation.svg: -------------------------------------------------------------------------------- 1 | 2 | 9 | 17 | 18 | -------------------------------------------------------------------------------- /docs/users/images/icons/event_intermediate_throw_end_escalation.svg: -------------------------------------------------------------------------------- 1 | 2 | 9 | 17 | 18 | -------------------------------------------------------------------------------- /docs/users/images/icons/event_intermediate_throw_end_message.svg: -------------------------------------------------------------------------------- 1 | 2 | 9 | 18 | 25 | 26 | -------------------------------------------------------------------------------- /docs/users/images/icons/event_intermediate_throw_end_signal.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /docs/users/images/icons/event_intermediate_throw_link.svg: -------------------------------------------------------------------------------- 1 | 2 | 9 | 18 | 19 | -------------------------------------------------------------------------------- /docs/users/images/icons/event_start_boundary_compensation.svg: -------------------------------------------------------------------------------- 1 | 2 | 9 | 17 | 18 | -------------------------------------------------------------------------------- /docs/users/images/icons/event_start_boundary_error.svg: -------------------------------------------------------------------------------- 1 | 2 | 9 | 17 | 18 | -------------------------------------------------------------------------------- /docs/users/images/icons/event_start_boundary_escalation.svg: -------------------------------------------------------------------------------- 1 | 2 | 9 | 17 | 18 | -------------------------------------------------------------------------------- /docs/users/images/icons/gateway_complex.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /docs/users/images/icons/gateway_event_based.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /docs/users/images/icons/gateway_event_based_exclusive.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /docs/users/images/icons/gateway_event_based_parallel.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /docs/users/images/icons/gateway_exclusive.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /docs/users/images/icons/gateway_inclusive.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /docs/users/images/icons/gateway_parallel.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /docs/users/images/icons/marker_expand.svg: -------------------------------------------------------------------------------- 1 | 2 | 9 | 21 | 29 | 30 | -------------------------------------------------------------------------------- /docs/users/images/icons/marker_loop.svg: -------------------------------------------------------------------------------- 1 | 2 | 9 | 17 | 25 | 26 | -------------------------------------------------------------------------------- /docs/users/images/icons/marker_multi_instance_parallel.svg: -------------------------------------------------------------------------------- 1 | 2 | 9 | 18 | 27 | 36 | 37 | -------------------------------------------------------------------------------- /docs/users/images/icons/marker_multi_instance_sequential.svg: -------------------------------------------------------------------------------- 1 | 2 | 9 | 18 | 27 | 36 | 37 | -------------------------------------------------------------------------------- /docs/users/images/icons/task_business_rule.svg: -------------------------------------------------------------------------------- 1 | 2 | 9 | 16 | 23 | 30 | 37 | 44 | 45 | -------------------------------------------------------------------------------- /docs/users/images/icons/task_manual.svg: -------------------------------------------------------------------------------- 1 | 2 | 9 | 16 | 17 | -------------------------------------------------------------------------------- /docs/users/images/icons/task_receive.svg: -------------------------------------------------------------------------------- 1 | 2 | 9 | 18 | 25 | 26 | -------------------------------------------------------------------------------- /docs/users/images/icons/task_send.svg: -------------------------------------------------------------------------------- 1 | 2 | 9 | 18 | 25 | 26 | -------------------------------------------------------------------------------- /docs/users/images/monitoring.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/docs/users/images/monitoring.gif -------------------------------------------------------------------------------- /docs/users/images/simple-overlay-example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/docs/users/images/simple-overlay-example.png -------------------------------------------------------------------------------- /docs/users/index.adoc: -------------------------------------------------------------------------------- 1 | = bpmn-visualization 2 | :toc: left 3 | // see: https://asciidoctor.org/docs/user-manual/#table-of-contents-summary 4 | :toc-title: Table of Contents 5 | // how many headline levels to display in the table of contents? 6 | :toclevels: 3 7 | // https://asciidoctor.org/docs/user-manual/#sections-summary 8 | // turn numbering on or off (:sectnums!:) 9 | :sectnums: 10 | // enumerate how many section levels? 11 | :sectnumlevels: 5 12 | // show anchors when hovering over section headers 13 | :sectanchors: 14 | // render section headings as self referencing links 15 | :sectlinks: 16 | // number parts of a book 17 | :partnums: 18 | // include a link to a favicon 19 | :favicon: ./favicon.svg 20 | // enable font-awesome icons 21 | :icons: font 22 | // enable link attributes 23 | :linkattrs: 24 | // see https://docs.asciidoctor.org/asciidoc/latest/directives/include-with-leveloffset/ 25 | :leveloffset: +1 26 | 27 | include::intro.adoc[] 28 | 29 | include::overview.adoc[] 30 | 31 | include::bpmn-support.adoc[] 32 | 33 | include::architecture/00-index.adoc[] 34 | -------------------------------------------------------------------------------- /docs/users/intro.adoc: -------------------------------------------------------------------------------- 1 | `bpmn-visualization` is a TypeScript library for visualizing process execution data on https://www.omg.org/spec/BPMN/2.0.2/[BPMN] diagrams, with simplicity. 2 | 3 | Based on the customization capability, it provides a set of diagram visualization features that includes additional display options for execution data (_highlighting of some elements_, _adding customizable overlays_, and more) as well as personalized interactive capabilities (_mouse hover_, _click_, and more). 4 | 5 | We hope it will help you to create applications for process visualization and analysis 🙂 6 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Redirect to the actual dev page 6 | 7 | 8 |

Please follow this link to see the index.html development page.

9 | 10 | 11 | -------------------------------------------------------------------------------- /postcss.config.cjs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2020 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | const defaultPlugins = { 18 | '@tailwindcss/postcss': {}, 19 | }; 20 | 21 | const plugins = 22 | process.env.NODE_ENV === 'development' 23 | ? defaultPlugins 24 | : { 25 | ...defaultPlugins, 26 | cssnano: { 27 | preset: 'default', 28 | }, 29 | }; 30 | module.exports = { plugins }; 31 | -------------------------------------------------------------------------------- /scripts/add-license-header.mjs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2023 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | import fs, { readFileSync } from 'node:fs'; 18 | 19 | import { computeBanner } from './shared/banner.mjs'; 20 | import { getTypeFilesInformation } from './shared/types-info.mjs'; 21 | 22 | const { notSupportedTSVersionsFilePath, typesFilePath } = getTypeFilesInformation(); 23 | const paths = [typesFilePath, notSupportedTSVersionsFilePath]; 24 | const banner = computeBanner(); 25 | for (let path of paths) { 26 | const content = readFileSync(path, 'utf8'); 27 | fs.writeFileSync( 28 | path, 29 | `${banner} 30 | ${content}`, 31 | ); 32 | } 33 | -------------------------------------------------------------------------------- /scripts/shared/banner.mjs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2023 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | import { readFileSync } from 'node:fs'; 18 | 19 | export const computeBanner = () => { 20 | const bannerTemplate = readFileSync('./config/license-header.js', 'utf8'); 21 | return bannerTemplate.replace('<%= YEAR %>', `2020-${new Date().getFullYear()}`); 22 | }; 23 | -------------------------------------------------------------------------------- /scripts/shared/types-info.mjs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2023 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | import assert from 'node:assert'; 18 | 19 | import packageJSON from '../../package.json' with { type: 'json' }; 20 | 21 | export const getTypeFilesInformation = () => { 22 | const notSupportedTSVersionsFilePath = packageJSON.types; 23 | const supportedTSVersions = Object.keys(packageJSON.typesVersions); 24 | assert(supportedTSVersions.length === 1, 'Property "typesVersions" should have exactly one key in the "package.json" file.'); 25 | 26 | const key = supportedTSVersions[0]; 27 | const typesFilePath = packageJSON.typesVersions[key]['*'][0]; 28 | 29 | return { 30 | supportedTSVersions: supportedTSVersions[0], 31 | typesFilePath, 32 | notSupportedTSVersionsFilePath, 33 | }; 34 | }; 35 | -------------------------------------------------------------------------------- /scripts/utils/README.md: -------------------------------------------------------------------------------- 1 | # The CLI tool to generate json and/or internal model from bpmn file 2 | You should note that there is no need to copy the result from the console as it will be directly copied into system clipboard 3 | 4 | ## Building utils module 5 | 6 | Run in the root of the project: 7 | 8 | ```npm run utils:build``` 9 | 10 | ## Usage 11 | 12 | Run in the root of the project to get BPMN content as: 13 | 14 | - JSON model 15 | 16 | ```node ./scripts/utils/dist/utils.mjs RELATIVE_PATH_TO_BPMN_FILE``` 17 | 18 | or (the default value for the `output` argument is `json`) 19 | 20 | ```node ./scripts/utils/dist/utils.mjs --output json RELATIVE_PATH_TO_BPMN_FILE``` 21 | 22 | - BpmnModel (internal model used by `bpmn-visualization`) 23 | 24 | ```node ./scripts/utils/dist/utils.mjs RELATIVE_PATH_TO_BPMN_FILE --output model``` 25 | 26 | i.e: 27 | 28 | ```node ./scripts/utils/dist/utils.mjs test/fixtures/bpmn/simple-start-task-end.bpmn --output model``` 29 | -------------------------------------------------------------------------------- /scripts/utils/rollup.config.mjs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2020 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | // eslint-disable-next-line import/no-unresolved 18 | import externals from 'rollup-plugin-node-externals'; 19 | import typescript from 'rollup-plugin-typescript2'; 20 | 21 | export default { 22 | input: 'scripts/utils/parseBpmn.ts', 23 | output: { 24 | file: 'scripts/utils/dist/utils.mjs', 25 | format: 'es', 26 | }, 27 | plugins: [ 28 | typescript(), 29 | externals({ devDeps: true }), // Make all Node builtins, deps, devDeps, peerDeps and optDeps external 30 | ], 31 | }; 32 | -------------------------------------------------------------------------------- /sonar-project.properties: -------------------------------------------------------------------------------- 1 | # Organization and project keys are displayed in the right sidebar of the project homepage 2 | sonar.projectKey=process-analytics_bpmn-visualization-js 3 | sonar.organization=process-analytics 4 | 5 | # This is the name and version displayed in the SonarCloud UI. 6 | sonar.projectName=bpmn-visualization 7 | sonar.projectVersion=0.46.0-post 8 | 9 | # Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows. 10 | sonar.sources=src 11 | # The HTML page are only use internally for tests or demo. No need to analyze them. 12 | sonar.exclusions=src/model/**/* 13 | #sonar.inclusions= 14 | # Encoding of the source code. Default is default system encoding 15 | sonar.sourceEncoding=UTF-8 16 | 17 | # Path to tests 18 | sonar.tests=test 19 | sonar.test.exclusions=**/jest.config.js,**/*.png 20 | #sonar.test.inclusions= 21 | 22 | sonar.javascript.lcov.reportPaths=build/test-report/unit/lcov.info,build/test-report/integration/lcov.info,build/test-report/e2e/lcov.info 23 | sonar.testExecutionReportPaths=build/test-report/unit/sonar-report.xml,build/test-report/integration/sonar-report.xml 24 | 25 | # The job failed before the sonar analysis, if the lint check failed. So no need to configure eslint for Sonar 26 | #sonar.eslint.reportPaths=build/eslint-reporter.json 27 | sonar.typescript.tsconfigPath=tsconfig.json 28 | 29 | # Exclusions for copy-paste detection 30 | #sonar.cpd.exclusions= 31 | -------------------------------------------------------------------------------- /src/component/helpers/dom-utils.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | /** 18 | * @internal 19 | */ 20 | export function htmlElement(element: string | HTMLElement): HTMLElement | null { 21 | if (element instanceof HTMLElement) { 22 | return element; 23 | } 24 | return document.querySelector(`#${element}`); 25 | } 26 | -------------------------------------------------------------------------------- /src/component/mxgraph/overlay/shapes.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | import type { CustomCellOverlayStyle } from './custom-overlay'; 18 | import type { mxRectangle } from 'mxgraph'; 19 | 20 | import { mxgraph } from '../initializer'; 21 | 22 | export class OverlayBadgeShape extends mxgraph.mxText { 23 | constructor(value: string, bounds: mxRectangle, style: CustomCellOverlayStyle) { 24 | super( 25 | value, 26 | bounds, 27 | undefined, 28 | undefined, 29 | style.font.color, 30 | undefined, 31 | style.font.size, 32 | undefined, 33 | undefined, 34 | undefined, 35 | undefined, 36 | undefined, 37 | undefined, 38 | undefined, 39 | style.fill.color, 40 | style.stroke.color, 41 | ); 42 | this.fillOpacity = style.fill.opacity; 43 | this.strokewidth = style.stroke.width; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/component/mxgraph/shape/render/index.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2020 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | // export types first, otherwise typedoc doesn't generate the subsequent doc correctly (no category and uses the file header instead of the actual TSDoc) 18 | export type * from './render-types'; 19 | export { BpmnCanvas, type BpmnCanvasConfiguration } from './BpmnCanvas'; 20 | export { IconPainter, IconPainterProvider, type PaintParameter } from './icon-painter'; 21 | -------------------------------------------------------------------------------- /src/component/mxgraph/shape/render/render-types.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2020 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | import type { BpmnCanvas } from './BpmnCanvas'; 18 | 19 | /** 20 | * @category BPMN Theme 21 | */ 22 | export interface ShapeConfiguration extends Size { 23 | x: number; 24 | y: number; 25 | strokeWidth?: number; 26 | } 27 | 28 | /** 29 | * @category BPMN Theme 30 | */ 31 | export interface IconStyleConfiguration { 32 | isFilled: boolean; 33 | fillColor: string; 34 | strokeColor: string; 35 | strokeWidth: number; 36 | margin: number; 37 | } 38 | 39 | /** 40 | * @category BPMN Theme 41 | */ 42 | export interface Size { 43 | width: number; 44 | height: number; 45 | } 46 | 47 | /** 48 | * @category BPMN Theme 49 | */ 50 | export interface IconConfiguration { 51 | originalSize: Size; 52 | /** If `undefined`, no scaling will be done in {@link BpmnCanvas}. */ 53 | ratioFromParent?: number; 54 | styleConfig: IconStyleConfiguration; 55 | setIconOriginFunct: (canvas: BpmnCanvas) => void; 56 | } 57 | -------------------------------------------------------------------------------- /src/component/mxgraph/shape/render/utils.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2020 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | import { ShapeBpmnMarkerKind } from '../../../../model/bpmn/internal'; 18 | 19 | const referenceOrderedMarkers = [ 20 | ShapeBpmnMarkerKind.LOOP, 21 | ShapeBpmnMarkerKind.MULTI_INSTANCE_PARALLEL, 22 | ShapeBpmnMarkerKind.MULTI_INSTANCE_SEQUENTIAL, 23 | ShapeBpmnMarkerKind.COMPENSATION, 24 | ShapeBpmnMarkerKind.EXPAND, 25 | ShapeBpmnMarkerKind.ADHOC, 26 | ]; 27 | 28 | /** 29 | * @internal 30 | */ 31 | export function orderActivityMarkers(markers: string[]): string[] { 32 | const orderedMarkers: string[] = referenceOrderedMarkers.filter(marker => markers.includes(marker)); 33 | // Put extra remaining at the end of the ordered markers, in the order they appear in the original array 34 | for (const marker of markers.filter(marker => !orderedMarkers.includes(marker))) orderedMarkers.push(marker); 35 | return orderedMarkers; 36 | } 37 | -------------------------------------------------------------------------------- /src/component/mxgraph/style/index.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | export { StyleDefault } from './utils'; 18 | export * from './identifiers'; 19 | -------------------------------------------------------------------------------- /src/component/parser/BpmnParser.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2020 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | import type BpmnJsonParser from './json/BpmnJsonParser'; 18 | import type BpmnModel from '../../model/bpmn/internal/BpmnModel'; 19 | import type { ParserOptions } from '../options'; 20 | 21 | import { newBpmnJsonParser } from './json/BpmnJsonParser'; 22 | import { ParsingMessageCollector } from './parsing-messages'; 23 | import BpmnXmlParser from './xml/BpmnXmlParser'; 24 | 25 | /** 26 | * @internal 27 | */ 28 | class BpmnParser { 29 | constructor( 30 | readonly jsonParser: BpmnJsonParser, 31 | readonly xmlParser: BpmnXmlParser, 32 | ) {} 33 | 34 | parse(bpmnAsXml: string): BpmnModel { 35 | const json = this.xmlParser.parse(bpmnAsXml); 36 | return this.jsonParser.parse(json); 37 | } 38 | } 39 | 40 | /** 41 | * @internal 42 | */ 43 | export function newBpmnParser(options?: ParserOptions): BpmnParser { 44 | return new BpmnParser(newBpmnJsonParser(new ParsingMessageCollector(options)), new BpmnXmlParser(options)); 45 | } 46 | -------------------------------------------------------------------------------- /src/component/parser/json/converter/CategoryConverter.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | import type { ConvertedElements } from './utils'; 18 | import type { TCategory } from '../../../../model/bpmn/json/baseElement/rootElement/rootElement'; 19 | import type { TDefinitions } from '../../../../model/bpmn/json/bpmn20'; 20 | 21 | import { ensureIsArray } from '../../../helpers/array-utils'; 22 | 23 | /** 24 | * @internal 25 | */ 26 | export default class CategoryConverter { 27 | constructor(private readonly convertedElements: ConvertedElements) {} 28 | 29 | deserialize(definitions: TDefinitions): void { 30 | const categoryValues = ensureIsArray(definitions.category).flatMap(category => ensureIsArray(category.categoryValue)); 31 | for (const categoryValue of categoryValues) { 32 | this.convertedElements.registerCategoryValue(categoryValue.id, categoryValue.value); 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/component/parser/parsing-messages.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | import type { ParserOptions } from '../options'; 18 | 19 | export interface MessageDetails { 20 | template: string; 21 | arguments: string[]; 22 | } 23 | 24 | export abstract class JsonParsingWarning { 25 | abstract getMessage(): MessageDetails; 26 | } 27 | 28 | export type ParsingMessageCollectorOptions = Pick; 29 | 30 | export class ParsingMessageCollector { 31 | constructor(private readonly options?: ParsingMessageCollectorOptions) {} 32 | 33 | warning(warning: JsonParsingWarning): void { 34 | if (this.options?.disableConsoleLog) { 35 | return; 36 | } 37 | const message = warning.getMessage(); 38 | console.warn(`[bv-parser] ${message.template}`, ...message.arguments); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/component/registry/index.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2020 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | // export types first, otherwise typedoc doesn't generate the subsequent doc correctly (no category and uses the file header instead of the actual TSDoc) 18 | export type * from './types'; 19 | export { BpmnElementsRegistry } from './bpmn-elements-registry'; 20 | -------------------------------------------------------------------------------- /src/component/registry/overlays-registry.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2023 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | import type { Overlay, OverlaysRegistry } from './types'; 18 | import type { BpmnGraph } from '../mxgraph/BpmnGraph'; 19 | 20 | import { createNewOverlaysUpdater, type OverlaysUpdater } from '../mxgraph/overlay/updater'; 21 | 22 | export function createNewOverlaysRegistry(graph: BpmnGraph): OverlaysRegistry { 23 | return new OverlaysRegistryImpl(createNewOverlaysUpdater(graph)); 24 | } 25 | 26 | class OverlaysRegistryImpl implements OverlaysRegistry { 27 | constructor(private readonly overlaysUpdater: OverlaysUpdater) {} 28 | 29 | addOverlays(bpmnElementId: string, overlays: Overlay | Overlay[]): void { 30 | this.overlaysUpdater.addOverlays(bpmnElementId, overlays); 31 | } 32 | 33 | removeAllOverlays(bpmnElementId: string): void { 34 | this.overlaysUpdater.removeAllOverlays(bpmnElementId); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/component/registry/style-registry.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2023 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | import type { StyleRegistry, StyleUpdate } from './types'; 18 | import type { BpmnGraph } from '../mxgraph/BpmnGraph'; 19 | 20 | import { createNewStyleUpdater, type StyleUpdater } from '../mxgraph/style/style-updater'; 21 | 22 | export function createNewStyleRegistry(graph: BpmnGraph): StyleRegistryImpl { 23 | return new StyleRegistryImpl(createNewStyleUpdater(graph)); 24 | } 25 | 26 | export class StyleRegistryImpl implements StyleRegistry { 27 | constructor(private readonly styleUpdater: StyleUpdater) {} 28 | 29 | clearCache(): void { 30 | this.styleUpdater.clear(); 31 | } 32 | 33 | updateStyle(bpmnElementIds: string | string[], styleUpdate: StyleUpdate): void { 34 | this.styleUpdater.updateStyle(bpmnElementIds, styleUpdate); 35 | } 36 | 37 | resetStyle(bpmnElementIds?: string | string[]): void { 38 | this.styleUpdater.resetStyle(bpmnElementIds); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/component/version.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | import { mxClient } from './mxgraph/initializer'; 18 | 19 | // WARN: this constant is automatically updated at release time by the 'manage-version-in-files.mjs' script. 20 | // So, if you modify the name of this file or this constant, please update the script accordingly. 21 | const libraryVersion = '0.46.0-post'; 22 | 23 | /** 24 | * Returns the version of `bpmn-visualization` and the version of its dependencies. 25 | * @since 0.43.0 26 | */ 27 | export const getVersion = (): Version => { 28 | return { lib: libraryVersion, dependencies: new Map([['mxGraph', mxClient.VERSION]]) }; 29 | }; 30 | 31 | /** 32 | * The version of `bpmn-visualization` and the version of its dependencies. 33 | */ 34 | export interface Version { 35 | /** The `bpmn-visualization` version. */ 36 | lib: string; 37 | /** The version of the `bpmn-visualization` dependencies. This may **not** list all dependencies. */ 38 | dependencies: Map; 39 | } 40 | -------------------------------------------------------------------------------- /src/model/bpmn/internal/Bounds.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2020 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | /** 18 | * @internal 19 | */ 20 | export default class Bounds { 21 | constructor( 22 | readonly x: number, 23 | readonly y: number, 24 | readonly width: number, 25 | readonly height: number, 26 | ) {} 27 | } 28 | -------------------------------------------------------------------------------- /src/model/bpmn/internal/BpmnModel.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2020 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | import type { Edge } from './edge/edge'; 18 | import type Shape from './shape/Shape'; 19 | 20 | /** 21 | * @internal 22 | */ 23 | export default interface BpmnModel extends Shapes { 24 | edges: Edge[]; 25 | } 26 | 27 | /** 28 | * @internal 29 | */ 30 | export interface Shapes { 31 | flowNodes: Shape[]; 32 | lanes: Shape[]; 33 | pools: Shape[]; 34 | } 35 | -------------------------------------------------------------------------------- /src/model/bpmn/internal/Label.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2020 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | import type Bounds from './Bounds'; 18 | import type { LabelExtensions } from './types'; 19 | 20 | /** 21 | * @internal 22 | */ 23 | export default class Label { 24 | readonly extensions: LabelExtensions = {}; 25 | 26 | constructor( 27 | readonly font?: Font, 28 | readonly bounds?: Bounds, 29 | ) {} 30 | } 31 | 32 | /** 33 | * @internal 34 | */ 35 | export class Font { 36 | constructor( 37 | readonly name?: string, 38 | readonly size?: number, 39 | readonly isBold?: boolean, 40 | readonly isItalic?: boolean, 41 | readonly isUnderline?: boolean, 42 | readonly isStrikeThrough?: boolean, 43 | ) {} 44 | } 45 | -------------------------------------------------------------------------------- /src/model/bpmn/internal/edge/edge.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2020 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | import type { Flow } from './flows'; 18 | import type Label from '../Label'; 19 | import type { EdgeExtensions } from '../types'; 20 | 21 | import { MessageVisibleKind } from './kinds'; 22 | 23 | /** 24 | * @internal 25 | */ 26 | export class Edge { 27 | readonly extensions: EdgeExtensions = {}; 28 | 29 | constructor( 30 | readonly id: string, 31 | readonly bpmnElement: Flow, 32 | readonly waypoints?: Waypoint[], 33 | readonly label?: Label, 34 | readonly messageVisibleKind: MessageVisibleKind = MessageVisibleKind.NONE, 35 | ) {} 36 | } 37 | 38 | /** 39 | * @internal 40 | */ 41 | export class Waypoint { 42 | constructor( 43 | readonly x: number, 44 | readonly y: number, 45 | ) {} 46 | } 47 | -------------------------------------------------------------------------------- /src/model/bpmn/internal/edge/utils.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2023 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | import { FlowKind } from './kinds'; 18 | 19 | /** @internal */ 20 | export function isFlowKind(kind: string): kind is FlowKind { 21 | return Object.values(FlowKind) 22 | .map(value => value as string) 23 | .includes(kind); 24 | } 25 | -------------------------------------------------------------------------------- /src/model/bpmn/internal/index.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | import type { FlowKind } from './edge/kinds'; 18 | import type { ShapeBpmnElementKind } from './shape'; 19 | 20 | export * from './shape'; 21 | export * from './edge/kinds'; 22 | /** 23 | * @category BPMN 24 | */ 25 | export type BpmnElementKind = FlowKind | ShapeBpmnElementKind; 26 | -------------------------------------------------------------------------------- /src/model/bpmn/internal/shape/Shape.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2020 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | import type ShapeBpmnElement from './ShapeBpmnElement'; 18 | import type Bounds from '../Bounds'; 19 | import type Label from '../Label'; 20 | import type { ShapeExtensions } from '../types'; 21 | 22 | /** 23 | * @internal 24 | */ 25 | export default class Shape { 26 | readonly extensions: ShapeExtensions = {}; 27 | 28 | constructor( 29 | readonly id: string, 30 | readonly bpmnElement: ShapeBpmnElement, 31 | readonly bounds?: Bounds, 32 | readonly label?: Label, 33 | readonly isHorizontal?: boolean, 34 | ) {} 35 | } 36 | -------------------------------------------------------------------------------- /src/model/bpmn/internal/shape/index.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2020 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | export * from './kinds'; 18 | export { ShapeUtil } from './utils'; 19 | -------------------------------------------------------------------------------- /src/model/bpmn/internal/types.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2023 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | /** 18 | * @internal 19 | */ 20 | export type ShapeExtensions = { 21 | fillColor?: string; 22 | strokeColor?: string; 23 | }; 24 | 25 | /** 26 | * @internal 27 | */ 28 | export type EdgeExtensions = { 29 | strokeColor?: string; 30 | }; 31 | 32 | /** 33 | * @internal 34 | */ 35 | export type LabelExtensions = { 36 | color?: string; 37 | }; 38 | -------------------------------------------------------------------------------- /src/model/bpmn/json/INTERNAL.md: -------------------------------------------------------------------------------- 1 | ###Attention 2 | This JSON part of model is intended to internal use only. 3 | Your application should not use it directly. 4 | -------------------------------------------------------------------------------- /src/model/bpmn/json/Semantic.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2020 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | // mixed="true" 18 | // 19 | export interface TDocumentation { 20 | id?: string; 21 | textFormat?: string; // default="text/plain" 22 | } 23 | 24 | export interface TExtension { 25 | documentation?: TDocumentation | TDocumentation[]; 26 | definition?: string; 27 | mustUnderstand?: boolean; // default="false" 28 | } 29 | 30 | // 31 | export type TExtensionElements = object; 32 | 33 | // mixed="true" 34 | // 35 | export type TScript = object; 36 | 37 | // mixed="true" 38 | // 39 | export type TText = object; 40 | -------------------------------------------------------------------------------- /src/model/bpmn/json/baseElement/artifact.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2020 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | import type { TBaseElement } from './baseElement'; 18 | import type { TText } from '../Semantic'; 19 | 20 | // abstract="true" 21 | export type TArtifact = TBaseElement; 22 | 23 | export interface TAssociation extends TArtifact { 24 | sourceRef: string; 25 | targetRef: string; 26 | associationDirection?: tAssociationDirection; // default="None" 27 | } 28 | 29 | export interface TGroup extends TArtifact { 30 | categoryValueRef?: string; 31 | } 32 | 33 | export interface TTextAnnotation extends TArtifact { 34 | text?: string | TText; 35 | textFormat?: string; // default="text/plain" 36 | } 37 | 38 | export enum tAssociationDirection { 39 | None = 'None', 40 | One = 'One', 41 | Both = 'Both', 42 | } 43 | -------------------------------------------------------------------------------- /src/model/bpmn/json/baseElement/expression.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2020 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | import type { TBaseElementWithMixedContent } from './baseElement'; 18 | 19 | export type TExpression = TBaseElementWithMixedContent; 20 | 21 | export interface TFormalExpression extends TExpression { 22 | language?: string; 23 | evaluatesToTypeRef?: string; 24 | } 25 | -------------------------------------------------------------------------------- /src/model/bpmn/json/baseElement/flowElement.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2020 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | import type { TAuditing, TBaseElement, TMonitoring } from './baseElement'; 18 | import type { TExpression } from './expression'; 19 | 20 | export interface TFlowElement extends TBaseElement { 21 | auditing?: TAuditing; 22 | monitoring?: TMonitoring; 23 | categoryValueRef?: string | string[]; 24 | name?: string; 25 | } 26 | 27 | // abstract="true" 28 | export interface TFlowNode extends TFlowElement { 29 | incoming?: string | string[]; 30 | outgoing?: string | string[]; 31 | } 32 | 33 | export interface TSequenceFlow extends TFlowElement { 34 | conditionExpression?: TExpression; 35 | sourceRef: string; 36 | targetRef: string; 37 | isImmediate?: boolean; 38 | } 39 | -------------------------------------------------------------------------------- /src/model/bpmn/json/baseElement/participant.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2020 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | import type { TBaseElement } from './baseElement'; 18 | 19 | export interface TParticipant extends TBaseElement { 20 | participantMultiplicity?: TParticipantMultiplicity; 21 | interfaceRef?: string | string[]; 22 | endPointRef?: string | string[]; 23 | name?: string; 24 | processRef?: string; 25 | } 26 | 27 | export interface TParticipantAssociation extends TBaseElement { 28 | innerParticipantRef: string; 29 | outerParticipantRef: string; 30 | } 31 | 32 | export interface TParticipantMultiplicity extends TBaseElement { 33 | minimum?: number; // default="0" 34 | maximum?: number; // default="1" 35 | } 36 | -------------------------------------------------------------------------------- /src/model/bpmn/json/dc.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2020 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | export interface Font { 18 | name?: string; 19 | size?: number; 20 | isBold?: boolean; 21 | isItalic?: boolean; 22 | isUnderline?: boolean; 23 | isStrikeThrough?: boolean; 24 | } 25 | 26 | export interface Point { 27 | x: number; 28 | y: number; 29 | } 30 | 31 | export interface Bounds { 32 | x: number; 33 | y: number; 34 | width: number; 35 | height: number; 36 | } 37 | -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2020 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | /** @type {import('tailwindcss').Config} */ 18 | const config = { 19 | content: ['./dev/public/index.html'], 20 | theme: { 21 | extend: {}, 22 | }, 23 | variants: { 24 | extend: {}, 25 | }, 26 | plugins: [], 27 | }; 28 | 29 | export default config; 30 | -------------------------------------------------------------------------------- /test/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | module.exports = { 18 | plugins: ['jest', 'jest-extended'], 19 | env: { 20 | 'jest/globals': true, 21 | }, 22 | settings: { 23 | jest: { 24 | version: require('jest/package.json').version, 25 | }, 26 | }, 27 | extends: ['plugin:jest/recommended', 'plugin:jest/style', 'plugin:jest-extended/all'], 28 | rules: { 29 | /* The rule list: https://github.com/jest-community/eslint-plugin-jest#rules */ 30 | 'jest/prefer-expect-resolves': 'warn', 31 | 'jest/prefer-spy-on': 'warn', 32 | 'jest/prefer-todo': 'warn', 33 | /* The rule didn't find the 'expect' in the called methods */ 34 | 'jest/expect-expect': 'off', 35 | }, 36 | }; 37 | -------------------------------------------------------------------------------- /test/bundles/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | module.exports = { 18 | extends: ['plugin:playwright/recommended'], 19 | rules: { 20 | /* This rule is for playwright-test and we are using jest-playwright */ 21 | 'playwright/no-standalone-expect': 'off', 22 | }, 23 | }; 24 | -------------------------------------------------------------------------------- /test/bundles/jest-playwright.config.cjs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2020 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | module.exports = require('../config/jest-playwright.cjs').computeConfiguration({ startWebServer: false, defaultBrowsers: 'chromium,firefox,webkit' }); 18 | -------------------------------------------------------------------------------- /test/bundles/npm.package.test.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | import { findFiles } from '@test/shared/file-helper'; 18 | 19 | describe('NPM package', () => { 20 | describe('Files in the dist directory', () => { 21 | const expectedFiles = [ 22 | 'bpmn-visualization.d.ts', // Type definitions 23 | 'bpmn-visualization.esm.js', // ESM 24 | 'bpmn-visualization.js', // IIFE 25 | 'bpmn-visualization.min.js', // IIFE minified 26 | 'not-supported-ts-versions.d.ts', // Type definitions for TS versions that are not supported 27 | ]; 28 | 29 | it('Files in the npm package', () => { 30 | expect(findFiles('../../dist')).toIncludeSameMembers(expectedFiles); 31 | }); 32 | }); 33 | }); 34 | -------------------------------------------------------------------------------- /test/bundles/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.test" 3 | } 4 | -------------------------------------------------------------------------------- /test/config/jest.retries.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | // eslint-disable-next-line @typescript-eslint/ban-ts-comment 18 | // @ts-ignore use a shared js file with commonjs export 19 | // eslint-disable-next-line @typescript-eslint/no-require-imports -- use a shared js file with commonjs export 20 | import environmentUtils = require('@test/shared/environment-utils.cjs'); 21 | 22 | const onCi = environmentUtils.isRunningOnCi(); 23 | jest.retryTimes(onCi ? 3 : 0, { logErrorsBeforeRetry: true }); 24 | -------------------------------------------------------------------------------- /test/config/playwright.browser.logs.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | import debugLogger from 'debug'; 18 | import 'jest-playwright-preset'; 19 | 20 | // Allow getting browser console logs 21 | // this is from https://playwright.dev/docs/api/class-page#page-event-console 22 | const browserLog = debugLogger('bv:test:browser'); 23 | page.on('console', message => browserLog('<%s> %s', message.type(), message.text())); 24 | -------------------------------------------------------------------------------- /test/e2e/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | module.exports = { 18 | extends: ['plugin:playwright/recommended'], 19 | rules: { 20 | /* This rule is for playwright-test and we are using jest-playwright */ 21 | 'playwright/no-standalone-expect': 'off', 22 | }, 23 | }; 24 | -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-colors/enabled/elements.colors.01.no.label.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-colors/enabled/elements.colors.01.no.label.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-colors/enabled/elements.colors.02.labels.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-colors/enabled/elements.colors.02.labels.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-colors/ignored/elements.colors.01.no.label.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-colors/ignored/elements.colors.01.no.label.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-colors/ignored/elements.colors.02.labels.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-colors/ignored/elements.colors.02.labels.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-rendering/associations.and.annotations.01.general.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-rendering/associations.and.annotations.01.general.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-rendering/associations.and.annotations.02.complex.paths.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-rendering/associations.and.annotations.02.complex.paths.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-rendering/associations.and.annotations.03.waypoints.01.inside.shape.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-rendering/associations.and.annotations.03.waypoints.01.inside.shape.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-rendering/associations.and.annotations.03.waypoints.02.outside.shape.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-rendering/associations.and.annotations.03.waypoints.02.outside.shape.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-rendering/associations.and.annotations.03.waypoints.03.none.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-rendering/associations.and.annotations.03.waypoints.03.none.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-rendering/associations.and.annotations.04.target.edges.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-rendering/associations.and.annotations.04.target.edges.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-rendering/associations.and.annotations.05.target.edges.no.waypoints.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-rendering/associations.and.annotations.05.target.edges.no.waypoints.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-rendering/associations.and.annotations.06.defined.in.collaboration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-rendering/associations.and.annotations.06.defined.in.collaboration.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-rendering/call.activities.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-rendering/call.activities.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-rendering/events.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-rendering/events.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-rendering/flows.all.arrows.markers.comparison.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-rendering/flows.all.arrows.markers.comparison.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-rendering/flows.message.01.icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-rendering/flows.message.01.icons.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-rendering/flows.message.02.labels.and.complex.paths.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-rendering/flows.message.02.labels.and.complex.paths.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-rendering/flows.message.03.waypoints.01.none.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-rendering/flows.message.03.waypoints.01.none.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-rendering/flows.message.03.waypoints.02.inside.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-rendering/flows.message.03.waypoints.02.inside.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-rendering/flows.message.03.waypoints.03.outside.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-rendering/flows.message.03.waypoints.03.outside.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-rendering/flows.message.03.waypoints.04.outside.segments.no.intersection.with.shapes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-rendering/flows.message.03.waypoints.04.outside.segments.no.intersection.with.shapes.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-rendering/flows.sequence.01.kinds.and.complex.paths.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-rendering/flows.sequence.01.kinds.and.complex.paths.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-rendering/flows.sequence.02.events.from.to.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-rendering/flows.sequence.02.events.from.to.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-rendering/flows.sequence.03.gateways.from.to.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-rendering/flows.sequence.03.gateways.from.to.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-rendering/flows.sequence.04.waypoints.01.none.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-rendering/flows.sequence.04.waypoints.01.none.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-rendering/flows.sequence.04.waypoints.02.terminal.inside.shapes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-rendering/flows.sequence.04.waypoints.02.terminal.inside.shapes.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-rendering/flows.sequence.04.waypoints.03.terminal.outside.shapes.01.general.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-rendering/flows.sequence.04.waypoints.03.terminal.outside.shapes.01.general.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-rendering/flows.sequence.04.waypoints.03.terminal.outside.shapes.02.segments.no.intersection.with.shapes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-rendering/flows.sequence.04.waypoints.03.terminal.outside.shapes.02.segments.no.intersection.with.shapes.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-rendering/flows.sequence.04.waypoints.04.terminal.bonita.events.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-rendering/flows.sequence.04.waypoints.04.terminal.bonita.events.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-rendering/flows.sequence.04.waypoints.05.terminal.bonita.gateways.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-rendering/flows.sequence.04.waypoints.05.terminal.bonita.gateways.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-rendering/flows.sequence.05.markers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-rendering/flows.sequence.05.markers.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-rendering/gateways.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-rendering/gateways.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-rendering/group.01.in.process.with.label.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-rendering/group.01.in.process.with.label.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-rendering/group.02.in.collaboration.with.label.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-rendering/group.02.in.collaboration.with.label.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-rendering/group.03.several.groups.different.size.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-rendering/group.03.several.groups.different.size.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-rendering/group.04.cross.lanes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-rendering/group.04.cross.lanes.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-rendering/group.05.cross.pools.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-rendering/group.05.cross.pools.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-rendering/labels.01.general.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-rendering/labels.01.general.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-rendering/labels.02.position.and.line.breaks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-rendering/labels.02.position.and.line.breaks.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-rendering/labels.03.default.position.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-rendering/labels.03.default.position.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-rendering/labels.04.fonts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-rendering/labels.04.fonts.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-rendering/labels.05.default.position.activities.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-rendering/labels.05.default.position.activities.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-rendering/markers.01.positioning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-rendering/markers.01.positioning.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-rendering/markers.02.different.tasks.sizes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-rendering/markers.02.different.tasks.sizes.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-rendering/pools.01.labels.and.lanes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-rendering/pools.01.labels.and.lanes.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-rendering/pools.02.vertical.with.lanes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-rendering/pools.02.vertical.with.lanes.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-rendering/pools.03.black.box.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-rendering/pools.03.black.box.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-rendering/pools.04.not.displayed.with.elements.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-rendering/pools.04.not.displayed.with.elements.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-rendering/subprocess.01.with.lanes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-rendering/subprocess.01.with.lanes.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-rendering/subprocess.02.with.inner.subprocess.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-rendering/subprocess.02.with.inner.subprocess.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-rendering/subprocess.03.collapsed.with.elements.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-rendering/subprocess.03.collapsed.with.elements.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-rendering/subprocess.04.expanded.with.elements.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-rendering/subprocess.04.expanded.with.elements.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/bpmn-rendering/tasks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/bpmn-rendering/tasks.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/collapse-expand/pools-collapse-Participant_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/collapse-expand/pools-collapse-Participant_1.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/collapse-expand/pools-collapse-Participant_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/collapse-expand/pools-collapse-Participant_2.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/collapse-expand/pools-collapse-Participant_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/collapse-expand/pools-collapse-Participant_3.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/collapse-expand/pools-collapse-Participant_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/collapse-expand/pools-collapse-Participant_4.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/collapse-expand/pools-collapse-none.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/collapse-expand/pools-collapse-none.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/collapse-expand/subprocess-collapse-SubProcess_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/collapse-expand/subprocess-collapse-SubProcess_1.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/collapse-expand/subprocess-collapse-none.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/collapse-expand/subprocess-collapse-none.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/filter/pools-filter-all.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/filter/pools-filter-all.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/filter/pools-filter-none.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/filter/pools-filter-none.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/filter/pools-filter-not-displayed-with-elements.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/filter/pools-filter-not-displayed-with-elements.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/filter/pools-filter-one-with-expanded-call-activity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/filter/pools-filter-one-with-expanded-call-activity.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/filter/pools-filter-one-with-lane.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/filter/pools-filter-one-with-lane.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/filter/pools-filter-one-with-subprocess.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/filter/pools-filter-one-with-subprocess.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/fit/type-Center/margin-0/horizontal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/fit/type-Center/margin-0/horizontal.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/fit/type-Center/margin-0/vertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/fit/type-Center/margin-0/vertical.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/fit/type-Center/margin-0/with.outside.flows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/fit/type-Center/margin-0/with.outside.flows.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/fit/type-Center/margin-0/with.outside.labels.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/fit/type-Center/margin-0/with.outside.labels.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/fit/type-Center/margin-20/with.outside.flows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/fit/type-Center/margin-20/with.outside.flows.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/fit/type-Center/margin-50/with.outside.flows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/fit/type-Center/margin-50/with.outside.flows.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/fit/type-Horizontal/margin-0/horizontal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/fit/type-Horizontal/margin-0/horizontal.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/fit/type-Horizontal/margin-0/vertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/fit/type-Horizontal/margin-0/vertical.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/fit/type-Horizontal/margin-0/with.outside.flows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/fit/type-Horizontal/margin-0/with.outside.flows.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/fit/type-Horizontal/margin-0/with.outside.labels.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/fit/type-Horizontal/margin-0/with.outside.labels.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/fit/type-Horizontal/margin-20/horizontal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/fit/type-Horizontal/margin-20/horizontal.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/fit/type-Horizontal/margin-50/horizontal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/fit/type-Horizontal/margin-50/horizontal.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/fit/type-HorizontalVertical/margin-0/horizontal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/fit/type-HorizontalVertical/margin-0/horizontal.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/fit/type-HorizontalVertical/margin-0/vertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/fit/type-HorizontalVertical/margin-0/vertical.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/fit/type-HorizontalVertical/margin-0/with.outside.flows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/fit/type-HorizontalVertical/margin-0/with.outside.flows.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/fit/type-HorizontalVertical/margin-0/with.outside.labels.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/fit/type-HorizontalVertical/margin-0/with.outside.labels.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/fit/type-None/margin-0/horizontal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/fit/type-None/margin-0/horizontal.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/fit/type-None/margin-0/vertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/fit/type-None/margin-0/vertical.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/fit/type-None/margin-0/with.outside.flows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/fit/type-None/margin-0/with.outside.flows.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/fit/type-None/margin-0/with.outside.labels.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/fit/type-None/margin-0/with.outside.labels.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/fit/type-Vertical/margin-0/horizontal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/fit/type-Vertical/margin-0/horizontal.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/fit/type-Vertical/margin-0/vertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/fit/type-Vertical/margin-0/vertical.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/fit/type-Vertical/margin-0/with.outside.flows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/fit/type-Vertical/margin-0/with.outside.flows.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/fit/type-Vertical/margin-0/with.outside.labels.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/fit/type-Vertical/margin-0/with.outside.labels.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/fit/type-Vertical/margin-20/vertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/fit/type-Vertical/margin-20/vertical.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/fit/type-Vertical/margin-50/vertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/fit/type-Vertical/margin-50/vertical.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/navigation/button.zoom.in.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/navigation/button.zoom.in.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/navigation/button.zoom.out.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/navigation/button.zoom.out.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/navigation/initial.zoom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/navigation/initial.zoom.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/navigation/mouse.panning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/navigation/mouse.panning.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/navigation/mouse.zoom.in.1.times.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/navigation/mouse.zoom.in.1.times.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/navigation/mouse.zoom.in.3.times.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/navigation/mouse.zoom.in.3.times.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/navigation/mouse.zoom.out.1.times.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/navigation/mouse.zoom.out.1.times.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/navigation/mouse.zoom.out.3.times.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/navigation/mouse.zoom.out.3.times.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/overlays/on.edge/on-position-end/add.overlay.on.association.flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/overlays/on.edge/on-position-end/add.overlay.on.association.flow.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/overlays/on.edge/on-position-end/add.overlay.on.message.flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/overlays/on.edge/on-position-end/add.overlay.on.message.flow.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/overlays/on.edge/on-position-end/add.overlay.on.sequence.flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/overlays/on.edge/on-position-end/add.overlay.on.sequence.flow.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/overlays/on.edge/on-position-middle/add.overlay.on.association.flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/overlays/on.edge/on-position-middle/add.overlay.on.association.flow.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/overlays/on.edge/on-position-middle/add.overlay.on.message.flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/overlays/on.edge/on-position-middle/add.overlay.on.message.flow.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/overlays/on.edge/on-position-middle/add.overlay.on.sequence.flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/overlays/on.edge/on-position-middle/add.overlay.on.sequence.flow.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/overlays/on.edge/on-position-start/add.overlay.on.association.flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/overlays/on.edge/on-position-start/add.overlay.on.association.flow.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/overlays/on.edge/on-position-start/add.overlay.on.message.flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/overlays/on.edge/on-position-start/add.overlay.on.message.flow.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/overlays/on.edge/on-position-start/add.overlay.on.sequence.flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/overlays/on.edge/on-position-start/add.overlay.on.sequence.flow.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/overlays/on.edge/remove.all.overlays.of.association.flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/overlays/on.edge/remove.all.overlays.of.association.flow.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/overlays/on.edge/remove.all.overlays.of.message.flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/overlays/on.edge/remove.all.overlays.of.message.flow.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/overlays/on.edge/remove.all.overlays.of.sequence.flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/overlays/on.edge/remove.all.overlays.of.sequence.flow.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/overlays/on.shape/add.overlay.on.position.bottom-center.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/overlays/on.shape/add.overlay.on.position.bottom-center.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/overlays/on.shape/add.overlay.on.position.bottom-left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/overlays/on.shape/add.overlay.on.position.bottom-left.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/overlays/on.shape/add.overlay.on.position.bottom-right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/overlays/on.shape/add.overlay.on.position.bottom-right.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/overlays/on.shape/add.overlay.on.position.middle-left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/overlays/on.shape/add.overlay.on.position.middle-left.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/overlays/on.shape/add.overlay.on.position.middle-right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/overlays/on.shape/add.overlay.on.position.middle-right.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/overlays/on.shape/add.overlay.on.position.top-center.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/overlays/on.shape/add.overlay.on.position.top-center.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/overlays/on.shape/add.overlay.on.position.top-left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/overlays/on.shape/add.overlay.on.position.top-left.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/overlays/on.shape/add.overlay.on.position.top-right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/overlays/on.shape/add.overlay.on.position.top-right.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/overlays/on.shape/remove.all.overlays.of.shape.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/overlays/on.shape/remove.all.overlays.of.shape.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/overlays/panning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/overlays/panning.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/overlays/with.custom.style/add.overlay.with.custom.fill.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/overlays/with.custom.style/add.overlay.with.custom.fill.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/overlays/with.custom.style/add.overlay.with.custom.font.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/overlays/with.custom.style/add.overlay.with.custom.font.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/overlays/with.custom.style/add.overlay.with.custom.stroke.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/overlays/with.custom.style/add.overlay.with.custom.stroke.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/overlays/zoom.out.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/overlays/zoom.out.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/style/fill.color.gradient.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/style/fill.color.gradient.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/style/fill.color.opacity.group.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/style/fill.color.opacity.group.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/style/fill.color.opacity.tasks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/style/fill.color.opacity.tasks.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/style/fill.color.string.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/style/fill.color.string.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/style/font.color.opacity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/style/font.color.opacity.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/style/stroke.color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/style/stroke.color.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/theme/container-background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/theme/container-background.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/theme/theme-brown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/theme/theme-brown.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/theme/theme-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/theme/theme-dark.png -------------------------------------------------------------------------------- /test/e2e/__image_snapshots__/theme/theme-light-blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/e2e/__image_snapshots__/theme/theme-light-blue.png -------------------------------------------------------------------------------- /test/e2e/jest-playwright.config.cjs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2020 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | module.exports = require('../config/jest-playwright.cjs').computeConfiguration({ defaultBrowsers: 'chromium' }); 18 | -------------------------------------------------------------------------------- /test/fixtures/bpmn/bpmn-rendering/flows.message.03.waypoints.01.none.bpmn: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /test/fixtures/bpmn/bpmn-rendering/group.02.in.collaboration.with.label.bpmn: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /test/fixtures/bpmn/bpmn-rendering/pools.03.black.box.bpmn: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /test/fixtures/bpmn/navigation/simple.2.start.events.1.task.bpmn: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /test/fixtures/bpmn/xml-parsing/special/path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/process-analytics/bpmn-visualization-js/2e6bc5b41696040b7280a07ee6d5761a34f77979/test/fixtures/bpmn/xml-parsing/special/path.png -------------------------------------------------------------------------------- /test/fixtures/bpmn/xml-parsing/special/text-only.txt: -------------------------------------------------------------------------------- 1 | NOT a bpmn diagram 2 | -------------------------------------------------------------------------------- /test/fixtures/bpmn/xml-parsing/special/xml-but-not-bpmn.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Bob 4 | 5 | 6 | -------------------------------------------------------------------------------- /test/integration/config/hide-console-warnings.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | jest.spyOn(console, 'warn').mockImplementation(() => { 18 | // do not display actual console outputs during tests (generated by the parsing code) 19 | }); 20 | -------------------------------------------------------------------------------- /test/integration/config/mxgraph-config.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | import { mxClient } from '@lib/component/mxgraph/initializer'; 18 | 19 | // Force usage of ForeignObject 20 | // By default, mxGraph detects no ForeignObject support when running tests in jsdom environment 21 | mxClient.NO_FO = false; 22 | -------------------------------------------------------------------------------- /test/integration/helpers/dom-utils.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | function createDiv(id: string): HTMLDivElement { 18 | const divElement = document.createElement('div'); 19 | divElement.id = id; 20 | return divElement; 21 | } 22 | 23 | export function insertBpmnContainer(bpmnContainerId: string): HTMLDivElement { 24 | const divElement = createDiv(bpmnContainerId); 25 | document.body.insertBefore(divElement, document.body.firstChild); 26 | return divElement; 27 | } 28 | 29 | export function insertBpmnContainerWithoutId(): HTMLDivElement { 30 | const divElement = document.createElement('div'); 31 | document.body.insertBefore(divElement, document.body.firstChild); 32 | return divElement; 33 | } 34 | -------------------------------------------------------------------------------- /test/integration/helpers/fit-utils.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | import { FitType } from '@lib/component/options'; 18 | 19 | export const allTestedFitTypes = [undefined, null, 'invalid', ...Object.values(FitType)]; 20 | -------------------------------------------------------------------------------- /test/integration/matchers/index.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2020 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | export { toBeSequenceFlow, toBeMessageFlow, toBeAssociationFlow } from './toBeEdge'; 18 | export { 19 | toBeCallActivity, 20 | toBeTask, 21 | toBeServiceTask, 22 | toBeUserTask, 23 | toBeReceiveTask, 24 | toBeSendTask, 25 | toBeManualTask, 26 | toBeScriptTask, 27 | toBeBusinessRuleTask, 28 | toBeStartEvent, 29 | toBeEndEvent, 30 | toBeIntermediateThrowEvent, 31 | toBeIntermediateCatchEvent, 32 | toBeBoundaryEvent, 33 | toBeEventBasedGateway, 34 | toBeExclusiveGateway, 35 | toBeInclusiveGateway, 36 | toBeParallelGateway, 37 | toBeSubProcess, 38 | toBePool, 39 | toBeLane, 40 | toBeGroup, 41 | toBeTextAnnotation, 42 | } from './toBeShape'; 43 | export { toBeCell, toBeCellWithParentAndGeometry } from './toBeCell'; 44 | -------------------------------------------------------------------------------- /test/integration/mxGraph.model.bpmn.colors.test.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2023 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | import { bpmnVisualization } from './helpers/model-expect'; 18 | 19 | import { readFileSync } from '@test/shared/file-helper'; 20 | 21 | describe('mxGraph model - BPMN colors', () => { 22 | it('Colors are ignored by default', () => { 23 | bpmnVisualization.load(readFileSync('../fixtures/bpmn/xml-parsing/bpmn-in-color/bpmn-in-color-spec-sample.bpmn')); 24 | 25 | expect('task_orange_border').toBeTask({ 26 | // no colors 27 | font: { 28 | family: 'Arial', 29 | size: 8, 30 | }, 31 | // not under test 32 | label: 'Orange Border', 33 | parentId: '1', 34 | verticalAlign: 'top', 35 | }); 36 | 37 | expect('sequence_flow_1').toBeSequenceFlow({ 38 | // no colors 39 | font: { 40 | family: 'Arial', 41 | size: 8, 42 | }, 43 | // not under test 44 | label: 'Orange link', 45 | }); 46 | }); 47 | }); 48 | -------------------------------------------------------------------------------- /test/performance/.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | module.exports = { 18 | extends: ['plugin:playwright/recommended'], 19 | rules: { 20 | /* This rule is for playwright-test and we are using jest-playwright */ 21 | 'playwright/no-standalone-expect': 'off', 22 | }, 23 | }; 24 | -------------------------------------------------------------------------------- /test/performance/helpers/file-utils.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | import { getSimplePlatformName } from '@test/shared/visu/test-utils'; 18 | 19 | // when running tests in IntelliJ/Webstorm, the working directory is not the project root dir 20 | const rootDirectory = process.cwd().endsWith('/test/performance') ? './data' : './test/performance/data'; 21 | export const performanceDataFilePath = `${rootDirectory}/${getSimplePlatformName()}/data.js`; 22 | -------------------------------------------------------------------------------- /test/performance/helpers/perf-utils.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2020 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | import type { Metrics } from './metrics-chromium'; 18 | 19 | export interface PerformanceMetric { 20 | run: number; 21 | TaskDuration: number; 22 | ScriptDuration: number; 23 | RecalcStyleDuration: number; 24 | LayoutDuration: number; 25 | } 26 | 27 | export interface ChartData { 28 | load: PerformanceMetric[]; 29 | zoom: PerformanceMetric[]; 30 | } 31 | 32 | export function calculateMetrics(metricsStart: Metrics, metricsEnd: Metrics): PerformanceMetric { 33 | return { 34 | run: new Date().getMilliseconds(), 35 | LayoutDuration: metricsEnd.LayoutDuration - metricsStart.LayoutDuration, 36 | RecalcStyleDuration: metricsEnd.RecalcStyleDuration - metricsStart.RecalcStyleDuration, 37 | ScriptDuration: metricsEnd.ScriptDuration - metricsStart.ScriptDuration, 38 | TaskDuration: metricsEnd.TaskDuration - metricsStart.TaskDuration, 39 | }; 40 | } 41 | -------------------------------------------------------------------------------- /test/performance/jest-playwright.config.cjs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2020 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | // only collect on chromium for now 18 | module.exports = module.exports = require('../config/jest-playwright').computeConfiguration({ defaultBrowsers: 'chromium' }); 19 | -------------------------------------------------------------------------------- /test/performance/jest.config.cjs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2020 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | const { moduleNameMapper } = require('../config/ts-jest.cjs'); 18 | 19 | process.env.JEST_PLAYWRIGHT_CONFIG = './test/performance/jest-playwright.config.cjs'; 20 | 21 | /** @type {import('ts-jest').JestConfigWithTsJest} */ 22 | module.exports = { 23 | preset: 'jest-playwright-preset', 24 | rootDir: '../..', 25 | roots: ['./test/performance'], 26 | testMatch: ['**/?(*.)+(spec|test).[t]s'], 27 | testTimeout: 200_000, 28 | transform: { 29 | '^.+\\.ts?$': [ 30 | 'ts-jest', 31 | { 32 | tsconfig: '/tsconfig.test.json', 33 | }, 34 | ], 35 | }, 36 | moduleNameMapper, 37 | setupFiles: ['./test/config/jest.retries.ts'], 38 | setupFilesAfterEnv: ['jest-extended/all', 'expect-playwright'], 39 | }; 40 | -------------------------------------------------------------------------------- /test/performance/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.test", 3 | "compilerOptions": { 4 | "diagnostics": true, 5 | // The following configuration is required to validate the playwright types. Plawyright 1.40 introduced "Support Symbol.asyncDispose" https://github.com/microsoft/playwright/issues/27141 6 | // This is a TypeScript 5.2 feature that requires extra configuration: https://devblogs.microsoft.com/typescript/announcing-typescript-5-2/ 7 | "target": "es2022", 8 | "lib": ["es2022", "esnext.disposable", "dom", "DOM.Iterable"] 9 | }, 10 | "exclude": [ 11 | "../typescript-moduleResolution-bundler/**/*", 12 | "../typescript-support/**/*" 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /test/shared/environment-utils.cjs: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | const isMacOS = () => { 18 | return process.platform.startsWith('darwin'); 19 | }; 20 | 21 | const isWindowsOS = () => { 22 | return process.platform.startsWith('win'); 23 | }; 24 | 25 | // running on GitHub Actions: https://docs.github.com/en/actions/learn-github-actions/environment-variables#default-environment-variables 26 | const isRunningOnCi = () => { 27 | return process.env.CI === 'true'; 28 | }; 29 | 30 | const isRunningOnCISlowOS = () => { 31 | return isRunningOnCi() && (isMacOS() || isWindowsOS()); 32 | }; 33 | 34 | exports.isRunningOnCISlowOS = isRunningOnCISlowOS; 35 | exports.isRunningOnCi = isRunningOnCi; 36 | -------------------------------------------------------------------------------- /test/shared/file-helper.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2020 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | import { readdirSync, readFileSync as fsReadFileSync } from 'node:fs'; 18 | import path from 'node:path'; 19 | 20 | export function readFileSync(relativePathToSourceFile: string, encoding: BufferEncoding = 'utf8', directoryName = __dirname): string { 21 | return fsReadFileSync(path.join(directoryName, relativePathToSourceFile), { encoding }); 22 | } 23 | 24 | /** Returns the files in the given directory. The function doesn't do any recursion in sub directories. */ 25 | export function findFiles(relativePathToSourceDirectory: string): string[] { 26 | return readdirSync(path.join(__dirname, relativePathToSourceDirectory)); 27 | } 28 | -------------------------------------------------------------------------------- /test/shared/overlays.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | import type { OverlayEdgePosition, OverlayShapePosition } from '@lib/component/registry'; 18 | 19 | export const overlayEdgePositionValues = ['start', 'middle', 'end'] as OverlayEdgePosition[]; 20 | 21 | export const overlayShapePositionValues = [ 22 | 'top-left', 23 | 'top-center', 24 | 'top-right', 25 | 'bottom-left', 26 | 'bottom-center', 27 | 'bottom-right', 28 | 'middle-left', 29 | 'middle-right', 30 | ] as OverlayShapePosition[]; 31 | -------------------------------------------------------------------------------- /test/shared/query-selectors.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | import { BpmnQuerySelectors } from '@lib/component/registry/query-selectors'; 18 | 19 | export class BpmnQuerySelectorsForTests extends BpmnQuerySelectors { 20 | /** 21 | * This targets a SVG Group 22 | */ 23 | existingElement(): string { 24 | return `svg > g > g > g[data-bpmn-id]`; 25 | } 26 | 27 | labelLastDiv(bpmnElementId: string): string { 28 | // * is for 'foreignObject' 29 | // Using 'foreignObject' do not work anymore with jest@28 (jsdom bump for 16.6 to 19) 30 | return `${this.labelSvgGroup(bpmnElementId)} > g > * > div > div > div`; 31 | } 32 | 33 | labelSvgGroup(bpmnElementId: string): string { 34 | return `svg > g > g > g[data-bpmn-id="${bpmnElementId}"].bpmn-label`; 35 | } 36 | 37 | /** 38 | * This targets a SVG Group 39 | */ 40 | overlays(bpmnElementId: string): string { 41 | return `svg > g > g:nth-child(3) > g[data-bpmn-id="${bpmnElementId}"]`; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /test/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.test" 3 | } 4 | -------------------------------------------------------------------------------- /test/typescript-moduleResolution-bundler/.npmrc: -------------------------------------------------------------------------------- 1 | package-lock=false 2 | -------------------------------------------------------------------------------- /test/typescript-moduleResolution-bundler/README.md: -------------------------------------------------------------------------------- 1 | # Validate bpmn-visualization when `moduleResolution` is set to `bundler` 2 | 3 | Relates to [missing types configuration in the package.json "exports" field](https://github.com/process-analytics/bpmn-visualization-js/pull/2972). 4 | 5 | ## Setup 6 | 7 | The `bpmn-visualization` npm package must be built first. From the repository root, run: 8 | - `npm install` 9 | - `npm pack` 10 | 11 | 12 | ## Run 13 | 14 | From the folder of this test project, run: 15 | - `npm install` 16 | - `npm test` 17 | -------------------------------------------------------------------------------- /test/typescript-moduleResolution-bundler/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "check-typescript-module_resolution-bundler", 3 | "private": true, 4 | "scripts": { 5 | "test": "tsc --version && tsc" 6 | }, 7 | "dependencies": { 8 | "bpmn-visualization": "../../" 9 | }, 10 | "devDependencies": { 11 | "typescript": "5.2.2" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /test/typescript-moduleResolution-bundler/src/index.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2023 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | // eslint-disable-next-line import/no-unresolved -- The bpmn-visualization package may not have been built prior running eslint (it happens when running GitHub Actions) 18 | import { BpmnVisualization } from 'bpmn-visualization'; 19 | 20 | const bpmnVisualization = new BpmnVisualization({ container: 'id' }); 21 | bpmnVisualization.load('fake data'); 22 | -------------------------------------------------------------------------------- /test/typescript-moduleResolution-bundler/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2015", 4 | "lib": ["dom", "dom.iterable", "ES2015"], 5 | "allowJs": false, 6 | "skipLibCheck": false, 7 | "strict": true, 8 | "noEmit": true, 9 | "esModuleInterop": true, 10 | "module": "esnext", 11 | "moduleResolution": "bundler", // this configuration requires to have types declaration in the package.json "exports" field 12 | "resolveJsonModule": false, 13 | "isolatedModules": true, 14 | }, 15 | } 16 | -------------------------------------------------------------------------------- /test/typescript-support/.npmrc: -------------------------------------------------------------------------------- 1 | package-lock=false 2 | -------------------------------------------------------------------------------- /test/typescript-support/README.md: -------------------------------------------------------------------------------- 1 | # Validate the minimal TypeScript version supported by bpmn-visualization 2 | 3 | ## Setup 4 | 5 | The `bpmn-visualization` npm package must be built first. From the repository root, run: 6 | - `npm install` 7 | - `npm pack` 8 | 9 | 10 | ## Run 11 | 12 | From the folder of this test project, run: 13 | - `npm install` 14 | - `npm test` 15 | -------------------------------------------------------------------------------- /test/typescript-support/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "check-lowest-typescript-version", 3 | "version": "0.0.0", 4 | "private": true, 5 | "scripts": { 6 | "test": "tsc --version && tsc" 7 | }, 8 | "dependencies": { 9 | "bpmn-visualization": "../../" 10 | }, 11 | "devDependencies": { 12 | "typescript": "4.0.2" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /test/typescript-support/src/index.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2022 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | // eslint-disable-next-line import/no-unresolved -- The bpmn-visualization package may not have been built prior running eslint (it happens when running GitHub Actions) 18 | import { BpmnVisualization } from 'bpmn-visualization'; 19 | 20 | const bpmnVisualization = new BpmnVisualization({ container: 'bpmn-container' }); 21 | bpmnVisualization.load(`fake BPMN content`); 22 | -------------------------------------------------------------------------------- /test/typescript-support/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "ES2015", 4 | "target": "ES2015", 5 | "lib": [ 6 | "ES2015", 7 | "DOM" 8 | ], 9 | "moduleResolution": "Node", 10 | "strict": true, 11 | "noEmit": true, 12 | // By default, all visible ”@types” packages are included in your compilation. Packages in node_modules/@types of any enclosing folder are considered visible. For example, that 13 | // means packages within ./node_modules/@types/, ../node_modules/@types/, ../../node_modules/@types/, and so on. 14 | // ../../node_modules/@types includes types used to develop bpmn-visualization. We only want to check types used by bpmn-visualization when it is included in other projects/applications. 15 | // So, we don't want development types to be part of the tests, especially because some of them may require a newer TypeScript version. 16 | "typeRoots": [], 17 | }, 18 | "include": [ 19 | "src/**/*" 20 | ], 21 | } 22 | -------------------------------------------------------------------------------- /test/unit/file-helper.test.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2020 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | import { findFiles } from '@test/shared/file-helper'; 18 | 19 | describe('files lookup', () => { 20 | it('BPMN fixtures files', () => { 21 | const files = findFiles('../fixtures/bpmn/bpmn-rendering/'); 22 | expect(files).toContain('events.bpmn'); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /test/unit/helpers/TestUtils.ts: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2021 Bonitasoft S.A. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | import type BpmnModel from '@lib/model/bpmn/internal/BpmnModel'; 18 | import type Shape from '@lib/model/bpmn/internal/shape/Shape'; 19 | 20 | import { ShapeBpmnElementKind, ShapeUtil } from '@lib/model/bpmn/internal'; 21 | 22 | export const shapeBpmnElementKindForLabelTests = Object.values(ShapeBpmnElementKind) 23 | .filter(kind => !ShapeUtil.isPoolOrLane(kind)) 24 | // group as label is managed by category 25 | .filter(kind => kind != ShapeBpmnElementKind.GROUP) 26 | // intermediate catch and boundary events require extra property no managed here 27 | .filter(kind => ![ShapeBpmnElementKind.EVENT_BOUNDARY, ShapeBpmnElementKind.EVENT_INTERMEDIATE_CATCH].includes(kind)) 28 | .map(kind => [kind]); 29 | 30 | export function getEventShapes(model: BpmnModel): Shape[] { 31 | return model.flowNodes.filter(shape => ShapeUtil.isEvent(shape.bpmnElement.kind)); 32 | } 33 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "declaration": false, 4 | "outDir": "./build/lib", 5 | "module": "ES2015", 6 | "target": "ES2015", 7 | "strictBindCallApply": true, 8 | "alwaysStrict": true, 9 | "strictFunctionTypes": true, 10 | "noImplicitAny": true, 11 | "noImplicitOverride": true, 12 | "noImplicitThis": true, 13 | "noUnusedLocals": true, 14 | "noUnusedParameters": true, 15 | "skipLibCheck": false, 16 | "experimentalDecorators": true, 17 | "moduleResolution": "node", 18 | "sourceMap": false, 19 | "allowSyntheticDefaultImports": true, 20 | "esModuleInterop": true, 21 | "stripInternal": true, 22 | // Vitejs requirements https://vitejs.dev/guide/features.html#typescript-compiler-options 23 | "isolatedModules": true, // https://esbuild.github.io/content-types/#isolated-modules 24 | "useDefineForClassFields": true, 25 | }, 26 | "include": [ 27 | "src/**/*", 28 | "dev/ts/**/*" 29 | ] 30 | } 31 | -------------------------------------------------------------------------------- /tsconfig.npm-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig", 3 | "compilerOptions": { 4 | "declaration": false, 5 | "sourceMap": false 6 | }, 7 | "include": [ 8 | // Ensure we only bundle production sources 9 | "src/**/*" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /tsconfig.test.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig", 3 | "compilerOptions": { 4 | "sourceMap": true, 5 | "baseUrl": ".", 6 | "paths": { 7 | // allow to import sources directly with "@lib/xx/yy" instead of using relative paths like "../../../src/xx/yy" 8 | "@lib/*": ["src/*"], 9 | "@test/shared/*": ["test/shared/*"], 10 | } 11 | }, 12 | "include": [ 13 | "test/**/*.ts" 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /tsconfig.typedoc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "include": [ 4 | "src/**/*" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /tsconfig.utils.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig", 3 | "include": [ 4 | "scripts/utils/**/*" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /typedoc.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://typedoc.org/schema.json", 3 | "name": "bpmn-visualization API Documentation", 4 | "readme": "none", 5 | "out": "./build/docs/api", 6 | "excludeInternal": true, 7 | "excludeExternals": true, 8 | "excludePrivate": true, 9 | "categoryOrder": ["Initialization & Configuration", "BPMN", "Navigation","Custom Behavior", "Overlays", "BPMN Theme", "Element Style", "*"], 10 | "categorizeByGroup": false, 11 | "navigation": { 12 | "includeCategories": true 13 | } 14 | } 15 | --------------------------------------------------------------------------------