diff --git a/.bpmnlintrc b/.bpmnlintrc
index da3899a..9bba09e 100644
--- a/.bpmnlintrc
+++ b/.bpmnlintrc
@@ -3,8 +3,8 @@
"plugin:custom/recommended"
],
"rules": {
- "custom/process-must-contain-tilt-meta": "off",
- "custom/controller-must-be-completely-filled": "off",
+ "custom/process-must-contain-tilt-meta": "error",
+ "custom/controller-must-be-completely-filled": "error",
"label-required": "off"
}
}
\ No newline at end of file
diff --git a/.github/workflows/build_and_release.yml b/.github/workflows/build_and_release.yml
index 66d44f1..0f9362b 100644
--- a/.github/workflows/build_and_release.yml
+++ b/.github/workflows/build_and_release.yml
@@ -16,7 +16,7 @@ jobs:
npm install
npm run all
sed -i "s/TILT Extension (Development Build)/TILT Extension ${{ github.ref_name }}/" ./index.js
- zip tilt-release.zip -r ./dist ./client ./index.js ./README.md ./LICENSE.md ./example_process.bpmn
+ zip tilt-release.zip -r ./dist ./client ./menu ./index.js ./README.md ./LICENSE.md ./example_process.bpmn
- name: Create Release
id: create_release
diff --git a/assets/controller.svg b/assets/controller.svg
new file mode 100644
index 0000000..0ecc9ba
--- /dev/null
+++ b/assets/controller.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/datadisclosed.svg b/assets/datadisclosed.svg
new file mode 100644
index 0000000..2c37ba7
--- /dev/null
+++ b/assets/datadisclosed.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/flag.svg b/assets/flag.svg
new file mode 100644
index 0000000..54c38c7
--- /dev/null
+++ b/assets/flag.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/protection.svg b/assets/protection.svg
new file mode 100644
index 0000000..53701a2
--- /dev/null
+++ b/assets/protection.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/representative.svg b/assets/representative.svg
new file mode 100644
index 0000000..2e566ed
--- /dev/null
+++ b/assets/representative.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/tilt.svg b/assets/tilt.svg
new file mode 100644
index 0000000..9d5185b
--- /dev/null
+++ b/assets/tilt.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/bpmnlint-plugin-custom/index.js b/bpmnlint-plugin-custom/index.js
index cfa6ae2..4e04ada 100644
--- a/bpmnlint-plugin-custom/index.js
+++ b/bpmnlint-plugin-custom/index.js
@@ -2,7 +2,8 @@ module.exports = {
configs: {
recommended: {
rules: {
- 'process-must-contain-tilt-meta': 'off'
+ 'process-must-contain-tilt-meta': 'error',
+ 'third-country-transfers-are-disallowed':'warn'
}
}
}
diff --git a/bpmnlint-plugin-custom/rules/controller-must-be-completely-filled.js b/bpmnlint-plugin-custom/rules/controller-must-be-completely-filled.js
index 5cba706..44a9bfc 100644
--- a/bpmnlint-plugin-custom/rules/controller-must-be-completely-filled.js
+++ b/bpmnlint-plugin-custom/rules/controller-must-be-completely-filled.js
@@ -15,7 +15,7 @@ module.exports = function() {
if (is(node, 'bpmn:StartEvent')) {
check_passed = test_if_properties_exists(node,tilt_type,propertiesToTest)
if(!check_passed){
- reporter.report(node.id, "Must Contain all this and that...");
+ reporter.report(node.id, "[ TILT ]\tMust Contain all this and that...");
}
}
}
diff --git a/bpmnlint-plugin-custom/rules/process-must-contain-tilt-meta.js b/bpmnlint-plugin-custom/rules/process-must-contain-tilt-meta.js
index 67b52d0..a841aaa 100644
--- a/bpmnlint-plugin-custom/rules/process-must-contain-tilt-meta.js
+++ b/bpmnlint-plugin-custom/rules/process-must-contain-tilt-meta.js
@@ -15,7 +15,7 @@ module.exports = function() {
if (is(node, 'bpmn:Process')) {
check_passed = test_if_properties_exists(node,tilt_type,propertiesToTest)
if(!check_passed){
- reporter.report(node.id, "The business process needs to contain all required TILT meta fields.");
+ reporter.report(node.id, "[ TILT ]\tThe business process needs to contain all required TILT meta fields.");
}
}
}
diff --git a/bpmnlint-plugin-custom/rules/third-country-transfers-are-disallowed.js b/bpmnlint-plugin-custom/rules/third-country-transfers-are-disallowed.js
new file mode 100644
index 0000000..150db06
--- /dev/null
+++ b/bpmnlint-plugin-custom/rules/third-country-transfers-are-disallowed.js
@@ -0,0 +1,22 @@
+const { test_if_is_tilt } = require("../tilt-rule-helper");
+const {
+ is
+ } = require('bpmnlint-utils');
+
+
+module.exports = function() {
+ function check(node, reporter) {
+ let check_passed = false;
+ if (is(node, 'bpmn:MessageFlow')) {
+ debugger;
+ check_passed = !test_if_is_tilt(node,"tilt:ThirdCountryTransfers")
+ if(!check_passed){
+ reporter.report(node.id, "[ TILT ]\tThird country transfer detected!");
+ }
+ }
+ }
+
+ return {
+ check: check
+ };
+};
\ No newline at end of file
diff --git a/bpmnlint-plugin-custom/tilt-rule-helper.js b/bpmnlint-plugin-custom/tilt-rule-helper.js
index 87e5d6a..342010f 100644
--- a/bpmnlint-plugin-custom/tilt-rule-helper.js
+++ b/bpmnlint-plugin-custom/tilt-rule-helper.js
@@ -10,6 +10,17 @@ export function test_if_properties_exists(node, tilt_type, propertiesToTest){
};
return false;
}
+
+export function test_if_is_tilt(node, tilt_type){
+ if ("extensionElements" in node){
+ for (let i = 0; i < node["extensionElements"]["values"].length; i++) {
+ if (node["extensionElements"]["values"][i].$type == tilt_type){
+ return true;
+ }
+ }
+ };
+ return false;
+}
export function test(){
return false;
}
\ No newline at end of file
diff --git a/client/index.js b/client/index.js
index 48056c1..e04b7b9 100644
--- a/client/index.js
+++ b/client/index.js
@@ -7,18 +7,19 @@ import tiltPropertiesExtensionModule from './tilt-properties';
import tiltModdleDescriptor from "./descriptors/tilt";
import ExtractButton from './tilt-extractor/extract-button';
+import tiltOverlayProvider from './tilt-overlay'
-var tiltExtractor = require('./tilt-extractor/tilt-extractor');
+//var tiltExtractor = require('./tilt-extractor/tilt-extractor');
registerPlatformBpmnJSPlugin(tiltPropertiesExtensionModule);
registerBpmnJSModdleExtension(tiltModdleDescriptor);
-
+registerPlatformBpmnJSPlugin(tiltOverlayProvider)
//provide { config, resolver } as a `lintRules.${tabType}` plug-in
registerClientPlugin({ config, resolver }, 'lintRules.cloud-bpmn');
registerClientPlugin({ config, resolver }, 'lintRules.bpmn');
-registerBpmnJSPlugin(tiltExtractor);
+//registerBpmnJSPlugin(tiltExtractor);
registerClientExtension(ExtractButton);
\ No newline at end of file
diff --git a/client/style/style.css b/client/style/style.css
new file mode 100644
index 0000000..d308f4c
--- /dev/null
+++ b/client/style/style.css
@@ -0,0 +1,15 @@
+.filter-green svg{
+ filter: invert(48%) sepia(79%) saturate(2476%) hue-rotate(86deg) brightness(118%) contrast(119%);
+}
+.filter-error svg{
+ filter: invert(34%) sepia(86%) saturate(2067%) hue-rotate(342deg) brightness(88%) contrast(99%);
+}
+.filter-ok svg{
+ filter: invert(41%) sepia(55%) saturate(382%) hue-rotate(128deg) brightness(101%) contrast(85%);
+}
+.filter-warn svg{
+ filter: invert(81%) sepia(9%) saturate(1984%) hue-rotate(1deg) brightness(94%) contrast(86%);;
+}
+.filter-tilt svg{
+ filter: invert(21%) sepia(85%) saturate(5617%) hue-rotate(269deg) brightness(93%) contrast(91%);
+}
\ No newline at end of file
diff --git a/client/tilt-extractor/extract-button.js b/client/tilt-extractor/extract-button.js
index 37a42af..951daac 100644
--- a/client/tilt-extractor/extract-button.js
+++ b/client/tilt-extractor/extract-button.js
@@ -1,12 +1,13 @@
import React, { Fragment, PureComponent } from 'camunda-modeler-plugin-helpers/react';
import { Fill } from 'camunda-modeler-plugin-helpers/components';
+import tiltIcon from "../../assets/tilt.svg"
const { getBusinessObject } = require('bpmn-js/lib/util/ModelUtil');
import { v4 as uuidv4 } from 'uuid';
import classNames from 'classnames';
import {getPropertyFromModdle } from '../tilt-properties/props/moddle-property-io';
import TILT from "../descriptors/tilt.json"
-import { buildTiltDocument, cleanPropertyThroughSchema, filterObjectsWithTiltProperty, getBusinessObjects } from './extractor';
+import { buildTiltDocument } from './extractor';
export default class ExtractButton extends PureComponent {
constructor() {
@@ -40,7 +41,7 @@ export default class ExtractButton extends PureComponent {
if(element.hasOwnProperty("$type") && element.$type.startsWith("tilt")){
tilt_properties.push(element);
- console.log(element)
+ //console.log(element)
return tilt_properties;
}
@@ -136,15 +137,15 @@ export default class ExtractButton extends PureComponent {
render() {
// we can use fills to hook React components into certain places of the UI
return
-
+
- ;onClick
+ ;
}
}
diff --git a/client/tilt-extractor/extractor.js b/client/tilt-extractor/extractor.js
index 839c880..39618c4 100644
--- a/client/tilt-extractor/extractor.js
+++ b/client/tilt-extractor/extractor.js
@@ -16,7 +16,7 @@ export function filterObjectsWithTiltProperty(businessObjects,tiltProperty){
extensionElements = businessObjects[bo].get("extensionElements");
if(extensionElements){
if(!extensionElements.hasOwnProperty("values")){
- console.log(extensionElements)
+ //console.log(extensionElements)
continue;
}
tiltProperties.push(...extensionElements.values.filter(e => e.$type == tiltProperty))
@@ -85,7 +85,7 @@ export function getSchemaProperty(propertyName, tiltSchema = schema){
}
}
}
- console.log(propertyName)
+ //console.log(propertyName)
return {};
}
diff --git a/client/tilt-extractor/tilt-extractor.js b/client/tilt-extractor/tilt-extractor.js
index c70e69e..cd71112 100644
--- a/client/tilt-extractor/tilt-extractor.js
+++ b/client/tilt-extractor/tilt-extractor.js
@@ -16,8 +16,9 @@ function TiltExtractor(injector, eventBus, bpmnRules, editorActions, canvas, com
editorActions.register({
extractTiltFromBpmn: function() {
- let bo = getBusinessObject(canvas.getRootElement())
- self.extract();
+ //let bo = getBusinessObject(canvas.getRootElement())
+ //self.extract();
+ debugger;
}
});
}
diff --git a/client/tilt-overlay/index.js b/client/tilt-overlay/index.js
new file mode 100644
index 0000000..bf9d6bf
--- /dev/null
+++ b/client/tilt-overlay/index.js
@@ -0,0 +1,6 @@
+import TiltOverlayProvider from './overlay';
+
+export default {
+ __init__: [ 'tiltOverlayProvider' ],
+ tiltOverlayProvider: [ 'type', TiltOverlayProvider ]
+};
\ No newline at end of file
diff --git a/client/tilt-overlay/overlay.js b/client/tilt-overlay/overlay.js
new file mode 100644
index 0000000..af13be4
--- /dev/null
+++ b/client/tilt-overlay/overlay.js
@@ -0,0 +1,142 @@
+import tiltIcon from "../../assets/tilt.svg";
+import tiltControllerIcon from "../../assets/controller.svg";
+import tiltDataDisclosedIcon from "../../assets/datadisclosed.svg";
+import flagIcon from "../../assets/flag.svg";
+import tiltDataProtectionOfficerIcon from "../../assets/protection.svg";
+import tiltRepresentativeIcon from "../../assets/representative.svg"
+import { getBusinessObject } from "bpmn-js/lib/util/ModelUtil";
+
+const events = [
+ 'commandStack.element.updateModdleProperties.postExecuted',
+ 'shape.added'
+]
+const toggleEvents = ['canvas.viewbox.changed']
+
+function addTiltOverlays(overlays,e){
+ const element = getElementFromEvent(e);
+ const bo = getBusinessObject(element);
+ const extensionElements = bo.get("extensionElements");
+
+ // Discover all existing Tilt Extensions
+ var arr = [];
+ if(extensionElements){
+ for(let v in extensionElements.values){
+ let t = extensionElements.values[v].$type;
+ if(t.startsWith("tilt")){
+ if(!arr.includes(t)){
+ arr.push(t)
+ }
+ }
+ }
+ }
+
+ // Remove existing Overlays
+ const currentO = overlays.get({element: element.id});
+ for(let o in currentO){
+ debugger;
+ overlays.remove(currentO[o].id)
+ }
+
+ // Add new Overlays
+ for(let a in arr){
+ switch(arr[a]) {
+ case "tilt:Controller":
+ addOverlay(overlays,element.id,tiltControllerIcon);
+ break;
+ case "tilt:DataDisclosed":
+ addOverlay(overlays,element.id,tiltDataDisclosedIcon);
+ break;
+ case "tilt:DataProtectionOfficer":
+ addOverlay(overlays,element.id,tiltDataProtectionOfficerIcon);
+ break;
+ case "tilt:Representative":
+ addOverlay(overlays,element.id,tiltRepresentativeIcon);
+ break;
+ case "tilt:ThirdCountryTransfers":
+ //let deltaX = Math.abs(element.waypoints[0].x - element.waypoints[element.waypoints.length-1].x);
+ //let deltaY = Math.abs(element.waypoints[0].y - element.waypoints[element.waypoints.length-1].y);
+
+ overlays.add(`${element.id}`, {
+ html: `
${flagIcon}
`,
+ position: {
+ top: 10,//deltaY/2,
+ left: 10//deltaX/2
+ }
+ });
+ break;
+ default:
+ addOverlay(overlays,element.id,tiltIcon)
+ break;
+ // code block
+ }
+ }
+ return {}
+}
+
+function addOverlay(overlays,id,icon, c = "filter-tilt"){
+ let g = overlays.get({element: id})
+ overlays.add(`${id}`, {
+ html: `${icon}
`,
+ position: {
+ left: -5+g.length * 24,
+ top: -30
+ }
+ });
+}
+
+function getElementFromEvent(e){
+ if(e.hasOwnProperty("context")){
+ return e.context.element;
+ }else{
+ return e.element;
+ }
+}
+
+export default class TiltOverlayProvider {
+ constructor(injector,overlays,eventBus,editorActions) {
+ //this._injector = injector;
+ //this._overlays = overlays;
+ window.toggleTilt = true;
+ this.addEventListener(eventBus,events,overlays);
+
+ //Whenever there is a viebox change we need to reactivate the toggle.
+ toggleEvents.forEach(function(event) {
+ eventBus.on(event, function(e) {
+ if(window.toggleTilt){
+ overlays.show();
+ }else{
+ overlays.hide()
+ }
+ //console.log(event +": "+e)
+ });
+ });
+
+
+ editorActions.register({
+ toggleTiltIcons: function() {
+ window.toggleTilt = !window.toggleTilt;
+ if(window.toggleTilt){
+ overlays.show();
+ }else{
+ overlays.hide()
+ }
+ //console.log(window.toggleTilt)
+ }
+ });
+ //editorActions.trigger("toggleTiltIcons")
+ }
+ addEventListener(eventBus,eventList,overlays){
+ eventList.forEach(function(event) {
+ eventBus.on(event, function(e) {
+ addTiltOverlays(overlays,e);
+ });
+ });
+ }
+ }
+
+ TiltOverlayProvider.$inject = [
+ "injector",
+ "overlays",
+ "eventBus",
+ "editorActions"
+ ];
\ No newline at end of file
diff --git a/client/tilt-properties/tilt-extension-provider.js b/client/tilt-properties/tilt-extension-provider.js
index 67446c2..ab5c399 100644
--- a/client/tilt-properties/tilt-extension-provider.js
+++ b/client/tilt-properties/tilt-extension-provider.js
@@ -42,8 +42,9 @@ export default class TiltPropertiesExtensionProvider {
}else if(is(element, 'bpmn:StartEvent')) {
groups.push(createTiltPropertiesGroup(element,this._injector,[
+ new PropertyBlueprint("tilt:Meta",{},null),
new PropertyBlueprint("tilt:Controller",{representative:[]},null)
- ],[1]));
+ ],[1,1]));
}else if(is(element, 'bpmn:DataObjectReference')) {
diff --git a/example_process.bpmn b/example_process.bpmn
index 1244f8f..361aa2e 100644
--- a/example_process.bpmn
+++ b/example_process.bpmn
@@ -4,19 +4,21 @@
-
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
@@ -64,22 +66,9 @@
Flow_0rjt9y5
-
- Flow_1qbbh85
- Flow_0bnihd8
-
-
Flow_0rjt9y5
-
-
-
-
-
-
-
-
Flow_05p3wo3
@@ -120,171 +109,183 @@
+
+ Flow_1qbbh85
+ Flow_0bnihd8
+
+
+
+
+
+
+
+
+
+
Activity_0dftqvn
- Event_0wfbdsl
Event_1y5aqpw
+ Event_0wfbdsl
Event_1isqgou
-
Flow_14n81na
- Flow_0xqt8h6
+ Flow_1u5a10i
+ Flow_1amjleb
-
- Flow_14n81na
-
-
- Flow_0xqt8h6
+ Flow_1amjleb
Flow_1u5a10i
+ Flow_13v7ah5
+
+ Flow_14n81na
+
+
- Flow_1u5a10i
+ Flow_13v7ah5
-
-
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
-
-
+
-
+
-
+
-
+
-
+
+
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
-
+
-
+
-
-
-
-
+
-
+
+
+
+
-
+
-
-
-
-
-
-
+
+
-
-
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
-
-
-
-
-
+
+
-
-
-
-
+
+
+
+
+
+
diff --git a/images/properties_panel_extension.png b/images/properties_panel_extension.png
index d6c00cd..2108fa3 100644
Binary files a/images/properties_panel_extension.png and b/images/properties_panel_extension.png differ
diff --git a/index.js b/index.js
index 88cad77..2a90745 100644
--- a/index.js
+++ b/index.js
@@ -3,5 +3,6 @@
module.exports = {
name: `TILT Extension (Development Build)`,
script: './dist/client.js',
- menu: './menu/menu.js'
+ menu: './menu/menu.js',
+ style: "./client/style/style.css"
};
diff --git a/menu/menu.js b/menu/menu.js
index 9fbf14b..3f97ee4 100644
--- a/menu/menu.js
+++ b/menu/menu.js
@@ -1,14 +1,25 @@
'use strict';
module.exports = function(electronApp, menuState) {
- return [{
- label: 'Generate TILT document',
- accelerator: 'CommandOrControl+T',
- enabled: function() {
- return true;
- },
- action: function() {
- electronApp.emit('menu:action', 'extractTiltFromBpmn');
- }
- }];
+ return [
+ //{
+ // label: 'Generate TILT document',
+ // accelerator: 'CommandOrControl+T',
+ // enabled: function() {
+ // return true;
+ // },
+ // action: function() {
+ // electronApp.emit('menu:action', 'extractTiltFromBpmn');
+ // }
+ //},
+ {
+ label: 'Toggle TILT icons',
+ accelerator: 'CommandOrControl+T',
+ enabled: function() {
+ return true;
+ },
+ action: function() {
+ electronApp.emit('menu:action', 'toggleTiltIcons');
+ }
+ }];
};
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 7f22bc0..f3b7181 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -867,8 +867,7 @@
"big.js": {
"version": "5.2.2",
"resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
- "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
- "dev": true
+ "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ=="
},
"bpmn-js": {
"version": "11.1.1",
@@ -1313,8 +1312,7 @@
"emojis-list": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
- "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
- "dev": true
+ "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q=="
},
"enhanced-resolve": {
"version": "5.12.0",
@@ -1480,8 +1478,7 @@
"fast-json-stable-stringify": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
- "dev": true
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
},
"fastest-levenshtein": {
"version": "1.0.16",
@@ -2065,7 +2062,6 @@
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz",
"integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
- "dev": true,
"requires": {
"big.js": "^5.2.2",
"emojis-list": "^3.0.0",
@@ -4136,6 +4132,48 @@
"safe-buffer": "^5.1.0"
}
},
+ "raw-loader": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz",
+ "integrity": "sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==",
+ "requires": {
+ "loader-utils": "^2.0.0",
+ "schema-utils": "^3.0.0"
+ },
+ "dependencies": {
+ "ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "requires": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "ajv-keywords": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
+ "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ=="
+ },
+ "json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
+ },
+ "schema-utils": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
+ "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==",
+ "requires": {
+ "@types/json-schema": "^7.0.8",
+ "ajv": "^6.12.5",
+ "ajv-keywords": "^3.5.2"
+ }
+ }
+ }
+ },
"read-pkg": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
diff --git a/package.json b/package.json
index 630596b..6016774 100644
--- a/package.json
+++ b/package.json
@@ -43,6 +43,7 @@
"camunda-bpmn-js-behaviors": "^0.4.0",
"diagram-js": "^11.4.3",
"npm": "^9.3.0",
+ "raw-loader": "^4.0.2",
"uuid": "^9.0.0"
}
}
diff --git a/webpack.config.js b/webpack.config.js
index ad433f4..7484025 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -14,6 +14,10 @@ module.exports = {
{
test: /\.bpmnlintrc$/i,
use: 'bpmnlint-loader',
+ },
+ {
+ test: /\.svg$/,
+ loader: 'raw-loader'
}
]
},