camunda-bpmn-js 5.6.2 → 5.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/dist/base-modeler.development.js +294 -147
  2. package/dist/base-modeler.production.min.js +2 -2
  3. package/dist/base-navigated-viewer.development.js +92 -41
  4. package/dist/base-navigated-viewer.production.min.js +1 -1
  5. package/dist/base-viewer.development.js +92 -41
  6. package/dist/base-viewer.production.min.js +1 -1
  7. package/dist/camunda-cloud-modeler.development.js +1577 -403
  8. package/dist/camunda-cloud-modeler.production.min.js +6 -6
  9. package/dist/camunda-cloud-navigated-viewer.development.js +92 -41
  10. package/dist/camunda-cloud-navigated-viewer.production.min.js +1 -1
  11. package/dist/camunda-cloud-viewer.development.js +92 -41
  12. package/dist/camunda-cloud-viewer.production.min.js +1 -1
  13. package/dist/camunda-platform-modeler.development.js +294 -147
  14. package/dist/camunda-platform-modeler.production.min.js +5 -5
  15. package/dist/camunda-platform-navigated-viewer.development.js +92 -41
  16. package/dist/camunda-platform-navigated-viewer.production.min.js +1 -1
  17. package/dist/camunda-platform-viewer.development.js +92 -41
  18. package/dist/camunda-platform-viewer.production.min.js +1 -1
  19. package/lib/camunda-cloud/Modeler.js +4 -1
  20. package/lib/camunda-cloud/features/external-resources/README.md +14 -0
  21. package/lib/camunda-cloud/features/external-resources/ResourceLoader.d.ts +6 -0
  22. package/lib/camunda-cloud/features/external-resources/ResourceLoader.js +24 -0
  23. package/lib/camunda-cloud/features/external-resources/Resources.d.ts +7 -0
  24. package/lib/camunda-cloud/features/external-resources/Resources.js +19 -0
  25. package/lib/camunda-cloud/features/external-resources/cmd/ComposedCommandHandler.d.ts +12 -0
  26. package/lib/camunda-cloud/features/external-resources/cmd/ComposedCommandHandler.js +16 -0
  27. package/lib/camunda-cloud/features/external-resources/cmd/index.d.ts +4 -0
  28. package/lib/camunda-cloud/features/external-resources/cmd/index.js +21 -0
  29. package/lib/camunda-cloud/features/external-resources/handlers/decision/AppendMenuProvider.d.ts +5 -0
  30. package/lib/camunda-cloud/features/external-resources/handlers/decision/AppendMenuProvider.js +19 -0
  31. package/lib/camunda-cloud/features/external-resources/handlers/decision/CreateMenuProvider.d.ts +5 -0
  32. package/lib/camunda-cloud/features/external-resources/handlers/decision/CreateMenuProvider.js +19 -0
  33. package/lib/camunda-cloud/features/external-resources/handlers/decision/ReplaceMenuProvider.d.ts +5 -0
  34. package/lib/camunda-cloud/features/external-resources/handlers/decision/ReplaceMenuProvider.js +19 -0
  35. package/lib/camunda-cloud/features/external-resources/handlers/decision/createElement.d.ts +13 -0
  36. package/lib/camunda-cloud/features/external-resources/handlers/decision/createElement.js +35 -0
  37. package/lib/camunda-cloud/features/external-resources/handlers/decision/index.d.ts +8 -0
  38. package/lib/camunda-cloud/features/external-resources/handlers/decision/index.js +14 -0
  39. package/lib/camunda-cloud/features/external-resources/handlers/decision/replaceElement.d.ts +15 -0
  40. package/lib/camunda-cloud/features/external-resources/handlers/decision/replaceElement.js +77 -0
  41. package/lib/camunda-cloud/features/external-resources/handlers/decision/searchTerms.d.ts +1 -0
  42. package/lib/camunda-cloud/features/external-resources/handlers/decision/searchTerms.js +6 -0
  43. package/lib/camunda-cloud/features/external-resources/handlers/form/AppendMenuProvider.d.ts +5 -0
  44. package/lib/camunda-cloud/features/external-resources/handlers/form/AppendMenuProvider.js +19 -0
  45. package/lib/camunda-cloud/features/external-resources/handlers/form/CreateMenuProvider.d.ts +5 -0
  46. package/lib/camunda-cloud/features/external-resources/handlers/form/CreateMenuProvider.js +19 -0
  47. package/lib/camunda-cloud/features/external-resources/handlers/form/ReplaceMenuProvider.d.ts +5 -0
  48. package/lib/camunda-cloud/features/external-resources/handlers/form/ReplaceMenuProvider.js +19 -0
  49. package/lib/camunda-cloud/features/external-resources/handlers/form/createElement.d.ts +9 -0
  50. package/lib/camunda-cloud/features/external-resources/handlers/form/createElement.js +39 -0
  51. package/lib/camunda-cloud/features/external-resources/handlers/form/index.d.ts +8 -0
  52. package/lib/camunda-cloud/features/external-resources/handlers/form/index.js +14 -0
  53. package/lib/camunda-cloud/features/external-resources/handlers/form/replaceElement.d.ts +15 -0
  54. package/lib/camunda-cloud/features/external-resources/handlers/form/replaceElement.js +82 -0
  55. package/lib/camunda-cloud/features/external-resources/handlers/form/searchTerms.d.ts +1 -0
  56. package/lib/camunda-cloud/features/external-resources/handlers/form/searchTerms.js +6 -0
  57. package/lib/camunda-cloud/features/external-resources/handlers/process/AppendMenuProvider.d.ts +5 -0
  58. package/lib/camunda-cloud/features/external-resources/handlers/process/AppendMenuProvider.js +19 -0
  59. package/lib/camunda-cloud/features/external-resources/handlers/process/CreateMenuProvider.d.ts +5 -0
  60. package/lib/camunda-cloud/features/external-resources/handlers/process/CreateMenuProvider.js +19 -0
  61. package/lib/camunda-cloud/features/external-resources/handlers/process/ReplaceMenuProvider.d.ts +5 -0
  62. package/lib/camunda-cloud/features/external-resources/handlers/process/ReplaceMenuProvider.js +19 -0
  63. package/lib/camunda-cloud/features/external-resources/handlers/process/createElement.d.ts +14 -0
  64. package/lib/camunda-cloud/features/external-resources/handlers/process/createElement.js +36 -0
  65. package/lib/camunda-cloud/features/external-resources/handlers/process/index.d.ts +8 -0
  66. package/lib/camunda-cloud/features/external-resources/handlers/process/index.js +14 -0
  67. package/lib/camunda-cloud/features/external-resources/handlers/process/replaceElement.d.ts +16 -0
  68. package/lib/camunda-cloud/features/external-resources/handlers/process/replaceElement.js +78 -0
  69. package/lib/camunda-cloud/features/external-resources/handlers/process/searchTerms.d.ts +1 -0
  70. package/lib/camunda-cloud/features/external-resources/handlers/process/searchTerms.js +6 -0
  71. package/lib/camunda-cloud/features/external-resources/handlers/util/BaseAppendMenuProvider.d.ts +18 -0
  72. package/lib/camunda-cloud/features/external-resources/handlers/util/BaseAppendMenuProvider.js +103 -0
  73. package/lib/camunda-cloud/features/external-resources/handlers/util/BaseCreateMenuProvider.d.ts +17 -0
  74. package/lib/camunda-cloud/features/external-resources/handlers/util/BaseCreateMenuProvider.js +84 -0
  75. package/lib/camunda-cloud/features/external-resources/handlers/util/BaseReplaceMenuProvider.d.ts +22 -0
  76. package/lib/camunda-cloud/features/external-resources/handlers/util/BaseReplaceMenuProvider.js +81 -0
  77. package/lib/camunda-cloud/features/external-resources/index.d.ts +23 -0
  78. package/lib/camunda-cloud/features/external-resources/index.js +27 -0
  79. package/package.json +4 -4
@@ -30,6 +30,7 @@ import {
30
30
  } from 'bpmn-js-create-append-anything';
31
31
 
32
32
  import camundaDetailsPopupMenuModule from './features/popup-menu';
33
+ import { DefaultHandlersModule, ResourcesModule } from './features/external-resources';
33
34
 
34
35
  /**
35
36
  * @typedef {import('bpmn-js/lib/BaseViewer').BaseViewerOptions} BaseViewerOptions
@@ -99,7 +100,9 @@ Modeler.prototype._camundaCloudModules = [
99
100
  variableResolverModule,
100
101
  exampleDataPropertiesProviderModule,
101
102
  formVariableProviderModule,
102
- camundaDetailsPopupMenuModule
103
+ camundaDetailsPopupMenuModule,
104
+ DefaultHandlersModule,
105
+ ResourcesModule
103
106
  ];
104
107
 
105
108
  Modeler.prototype._modules = [].concat(
@@ -0,0 +1,14 @@
1
+ # external-resources
2
+
3
+ Define available resources and create linked elements right away in BPMN editor.
4
+
5
+ ## Usage
6
+
7
+ Import the library and include it in `additionalModules`.
8
+ Then, register a resources provider to pass the resources to the handlers.
9
+
10
+ ## Principles
11
+
12
+ * The module is extensible. You can pass any resources, and define handlers for them.
13
+ You can also override the default handlers.
14
+ * User is in control. Unlike in element templates, the user can still decide to override any properties set in the handler. The built-in resource handlers are merely helpers to create standard BPMN elements.
@@ -0,0 +1,6 @@
1
+ export class ResourceLoader {
2
+ static $inject: string[];
3
+ constructor(eventBus: any, resources: any);
4
+ register(resourceProvider: any): void;
5
+ reload(): void;
6
+ }
@@ -0,0 +1,24 @@
1
+ export class ResourceLoader {
2
+ static $inject = [ 'eventBus', 'resources' ];
3
+
4
+ constructor(eventBus, resources) {
5
+ this._resources = resources;
6
+ this._providers = [];
7
+
8
+ eventBus.on('diagram.init', () => {
9
+ this.reload();
10
+ });
11
+ }
12
+
13
+ register(resourceProvider) {
14
+ this._providers.push(resourceProvider);
15
+ }
16
+
17
+ reload() {
18
+ const combined = this._providers.reduce((resources, provider) => {
19
+ return resources.concat(provider.getResources());
20
+ }, []);
21
+
22
+ this._resources.set(combined);
23
+ }
24
+ }
@@ -0,0 +1,7 @@
1
+ export class Resources {
2
+ static $inject: string[];
3
+ constructor(resources: any);
4
+ set(resources: any): void;
5
+ getAll(): any;
6
+ filter(fn: any): any;
7
+ }
@@ -0,0 +1,19 @@
1
+ export class Resources {
2
+ static $inject = [ 'config.resources' ];
3
+
4
+ constructor(resources) {
5
+ this._resources = resources || [];
6
+ }
7
+
8
+ set(resources) {
9
+ this._resources = resources;
10
+ }
11
+
12
+ getAll() {
13
+ return this._resources;
14
+ }
15
+
16
+ filter(fn) {
17
+ return this._resources.filter(fn);
18
+ }
19
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Command handler to compose multiple commands into a single command.
3
+ * It allows to use facades like `BpmnReplace` and `Modeling` while retaining
4
+ * single undo/redo feature.
5
+ */
6
+ export class ComposedCommandHandler {
7
+ constructor(commandStack: any);
8
+ preExecute(context: any): void;
9
+ }
10
+ export namespace ComposedCommandHandler {
11
+ let $inject: string[];
12
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Command handler to compose multiple commands into a single command.
3
+ * It allows to use facades like `BpmnReplace` and `Modeling` while retaining
4
+ * single undo/redo feature.
5
+ */
6
+ export class ComposedCommandHandler {
7
+ constructor(commandStack) {
8
+ this._commandStack = commandStack;
9
+ }
10
+
11
+ preExecute(context) {
12
+ context.command();
13
+ }
14
+ }
15
+
16
+ ComposedCommandHandler.$inject = [ 'commandStack' ];
@@ -0,0 +1,4 @@
1
+ export default class CommandInitializer {
2
+ static $inject: string[];
3
+ constructor(eventBus: any, commandStack: any);
4
+ }
@@ -0,0 +1,21 @@
1
+ import {
2
+ forEach
3
+ } from 'min-dash';
4
+
5
+ import { ComposedCommandHandler } from './ComposedCommandHandler.js';
6
+
7
+ const HANDLERS = {
8
+ 'external-resources.composed-command': ComposedCommandHandler
9
+ };
10
+
11
+
12
+ export default function CommandInitializer(eventBus, commandStack) {
13
+
14
+ eventBus.on('diagram.init', function() {
15
+ forEach(HANDLERS, function(handler, id) {
16
+ commandStack.registerHandler(id, handler);
17
+ });
18
+ });
19
+ }
20
+
21
+ CommandInitializer.$inject = [ 'eventBus', 'commandStack' ];
@@ -0,0 +1,5 @@
1
+ export class AppendMenuProvider extends BaseAppendMenuProvider {
2
+ static $inject: string[];
3
+ constructor(injector: any);
4
+ }
5
+ import { BaseAppendMenuProvider } from '../util/BaseAppendMenuProvider.js';
@@ -0,0 +1,19 @@
1
+ import { createElement } from './createElement.js';
2
+ import { searchTerms } from './searchTerms.js';
3
+ import { BaseAppendMenuProvider } from '../util/BaseAppendMenuProvider.js';
4
+
5
+ export class AppendMenuProvider extends BaseAppendMenuProvider {
6
+ static $inject = [
7
+ 'injector'
8
+ ];
9
+
10
+ constructor(injector) {
11
+ super(injector, {
12
+ resourceType: 'dmnDecision',
13
+ groupName: 'Decisions',
14
+ className: 'bpmn-icon-business-rule-task',
15
+ createElement: (resource, bpmnFactory) => createElement(resource, bpmnFactory),
16
+ search: searchTerms
17
+ });
18
+ }
19
+ }
@@ -0,0 +1,5 @@
1
+ export class CreateMenuProvider extends BaseCreateMenuProvider {
2
+ static $inject: string[];
3
+ constructor(injector: any);
4
+ }
5
+ import { BaseCreateMenuProvider } from '../util/BaseCreateMenuProvider.js';
@@ -0,0 +1,19 @@
1
+ import { createElement } from './createElement.js';
2
+ import { searchTerms } from './searchTerms.js';
3
+ import { BaseCreateMenuProvider } from '../util/BaseCreateMenuProvider.js';
4
+
5
+ export class CreateMenuProvider extends BaseCreateMenuProvider {
6
+ static $inject = [
7
+ 'injector'
8
+ ];
9
+
10
+ constructor(injector) {
11
+ super(injector, {
12
+ resourceType: 'dmnDecision',
13
+ groupName: 'Decisions',
14
+ className: 'bpmn-icon-business-rule-task',
15
+ createElement: (resource, bpmnFactory) => createElement(resource, bpmnFactory),
16
+ search: searchTerms
17
+ });
18
+ }
19
+ }
@@ -0,0 +1,5 @@
1
+ export class ReplaceMenuProvider extends BaseReplaceMenuProvider {
2
+ static $inject: string[];
3
+ constructor(injector: any);
4
+ }
5
+ import { BaseReplaceMenuProvider } from '../util/BaseReplaceMenuProvider.js';
@@ -0,0 +1,19 @@
1
+ import { replaceElement } from './replaceElement.js';
2
+ import { searchTerms } from './searchTerms.js';
3
+ import { BaseReplaceMenuProvider } from '../util/BaseReplaceMenuProvider.js';
4
+
5
+ export class ReplaceMenuProvider extends BaseReplaceMenuProvider {
6
+ static $inject = [
7
+ 'injector'
8
+ ];
9
+
10
+ constructor(injector) {
11
+ super(injector, {
12
+ resourceType: 'dmnDecision',
13
+ groupName: 'Decisions',
14
+ className: 'bpmn-icon-business-rule-task',
15
+ replaceElement: (element, resource, injector) => replaceElement(element, resource, injector),
16
+ search: searchTerms
17
+ });
18
+ }
19
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @param resource
3
+ * @param bpmnFactory
4
+ */
5
+ export function createElement(
6
+ resource: Decision,
7
+ bpmnFactory: import("bpmn-js/lib/features/modeling/BpmnFactory").default
8
+ ): any;
9
+ export type Decision = {
10
+ type: "dmnDecision";
11
+ name: string;
12
+ decisionId: string;
13
+ };
@@ -0,0 +1,35 @@
1
+ /**
2
+ * @typedef {{
3
+ * type: 'dmnDecision',
4
+ * name: string,
5
+ * decisionId: string
6
+ * }} Decision
7
+ */
8
+
9
+ /**
10
+ * @param {Decision} resource
11
+ * @param {import('bpmn-js/lib/features/modeling/BpmnFactory').default} bpmnFactory
12
+ */
13
+ export function createElement(resource, bpmnFactory) {
14
+ return createDecisionTask(resource, bpmnFactory);
15
+ }
16
+
17
+ function createDecisionTask(resource, bpmnFactory) {
18
+ const calledElement = createCalledDecision(resource, bpmnFactory);
19
+ const extensionElements = bpmnFactory.create('bpmn:ExtensionElements', {
20
+ values: [
21
+ calledElement
22
+ ]
23
+ });
24
+
25
+ return bpmnFactory.create('bpmn:BusinessRuleTask', {
26
+ name: resource.name,
27
+ extensionElements
28
+ });
29
+ }
30
+
31
+ function createCalledDecision(resource, bpmnFactory) {
32
+ return bpmnFactory.create('zeebe:CalledDecision', {
33
+ decisionId: resource.decisionId
34
+ });
35
+ }
@@ -0,0 +1,8 @@
1
+ export const DecisionHandlerModule: {
2
+ 'resources.decisionHandler.create': (string | typeof CreateMenuProvider)[];
3
+ 'resources.decisionHandler.append': (string | typeof AppendMenuProvider)[];
4
+ 'resources.decisionHandler.replace': (string | typeof ReplaceMenuProvider)[];
5
+ };
6
+ import { CreateMenuProvider } from './CreateMenuProvider';
7
+ import { AppendMenuProvider } from './AppendMenuProvider';
8
+ import { ReplaceMenuProvider } from './ReplaceMenuProvider';
@@ -0,0 +1,14 @@
1
+ import { CreateMenuProvider } from './CreateMenuProvider';
2
+ import { AppendMenuProvider } from './AppendMenuProvider';
3
+ import { ReplaceMenuProvider } from './ReplaceMenuProvider';
4
+
5
+ export const DecisionHandlerModule = {
6
+ __init__: [
7
+ 'resources.decisionHandler.create',
8
+ 'resources.decisionHandler.append',
9
+ 'resources.decisionHandler.replace'
10
+ ],
11
+ 'resources.decisionHandler.create': [ 'type', CreateMenuProvider ],
12
+ 'resources.decisionHandler.append': [ 'type', AppendMenuProvider ],
13
+ 'resources.decisionHandler.replace': [ 'type', ReplaceMenuProvider ]
14
+ };
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @param element
3
+ * @param resource
4
+ * @param injector
5
+ */
6
+ export function replaceElement(
7
+ element: import("diagram-js/lib/model").Element,
8
+ resource: Decision,
9
+ injector: import("didi").Injector
10
+ ): void;
11
+ export type Decision = {
12
+ type: "dmnDecision";
13
+ name: string;
14
+ decisionId: string;
15
+ };
@@ -0,0 +1,77 @@
1
+ import { getBusinessObject, is } from 'bpmn-js/lib/util/ModelUtil';
2
+
3
+ /**
4
+ * @typedef {{
5
+ * type: 'dmnDecision',
6
+ * name: string,
7
+ * decisionId: string
8
+ * }} Decision
9
+ */
10
+
11
+ /**
12
+ * @param {import('diagram-js/lib/model').Element} element
13
+ * @param {Decision} resource
14
+ * @param {import('didi').Injector} injector
15
+ */
16
+ export function replaceElement(element, resource, injector) {
17
+ const bpmnFactory = injector.get('bpmnFactory'),
18
+ bpmnReplace = injector.get('bpmnReplace'),
19
+ modeling = injector.get('modeling'),
20
+ commandStack = injector.get('commandStack');
21
+
22
+
23
+ commandStack.execute('external-resources.composed-command', {
24
+ command: replace
25
+ });
26
+
27
+
28
+ function replace() {
29
+ const replacedElement = bpmnReplace.replaceElement(element, { type: 'bpmn:BusinessRuleTask' });
30
+ modeling.updateProperties(replacedElement, {
31
+ name: resource.name
32
+ });
33
+
34
+ const bo = getBusinessObject(replacedElement);
35
+
36
+ const extensionElements = bo.get('extensionElements');
37
+
38
+ if (!extensionElements) {
39
+ modeling.updateProperties(replacedElement, {
40
+ extensionElements: bpmnFactory.create('bpmn:ExtensionElements', {
41
+ values: [
42
+ createCalledDecision(resource, bpmnFactory)
43
+ ]
44
+ })
45
+ });
46
+
47
+ return;
48
+ }
49
+
50
+ const calledDecision = getCalledDecision(replacedElement);
51
+
52
+ if (!calledDecision) {
53
+ modeling.updateModdleProperties(replacedElement, extensionElements, {
54
+ values: [
55
+ ...extensionElements.values,
56
+ createCalledDecision(resource, bpmnFactory)
57
+ ]
58
+ });
59
+
60
+ return;
61
+ }
62
+
63
+ modeling.updateModdleProperties(replacedElement, calledDecision, {
64
+ decisionId: resource.decisionId
65
+ });
66
+ }
67
+ }
68
+
69
+ function getCalledDecision(element) {
70
+ return element.businessObject?.extensionElements?.values.find(value => is(value, 'zeebe:CalledDecision'));
71
+ }
72
+
73
+ function createCalledDecision(resource, bpmnFactory) {
74
+ return bpmnFactory.create('zeebe:CalledDecision', {
75
+ decisionId: resource.decisionId
76
+ });
77
+ }
@@ -0,0 +1 @@
1
+ export const searchTerms: string;
@@ -0,0 +1,6 @@
1
+ export const searchTerms = [
2
+ 'resource',
3
+ 'dmn',
4
+ 'business rule task',
5
+ 'decision'
6
+ ].join(' ');
@@ -0,0 +1,5 @@
1
+ export class AppendMenuProvider extends BaseAppendMenuProvider {
2
+ static $inject: string[];
3
+ constructor(injector: any);
4
+ }
5
+ import { BaseAppendMenuProvider } from '../util/BaseAppendMenuProvider.js';
@@ -0,0 +1,19 @@
1
+ import { createElement } from './createElement.js';
2
+ import { searchTerms } from './searchTerms.js';
3
+ import { BaseAppendMenuProvider } from '../util/BaseAppendMenuProvider.js';
4
+
5
+ export class AppendMenuProvider extends BaseAppendMenuProvider {
6
+ static $inject = [
7
+ 'injector'
8
+ ];
9
+
10
+ constructor(injector) {
11
+ super(injector, {
12
+ resourceType: 'form',
13
+ groupName: 'Forms',
14
+ className: 'bpmn-icon-user-task',
15
+ createElement: (resource, bpmnFactory) => createElement(resource, bpmnFactory),
16
+ search: searchTerms
17
+ });
18
+ }
19
+ }
@@ -0,0 +1,5 @@
1
+ export class CreateMenuProvider extends BaseCreateMenuProvider {
2
+ static $inject: string[];
3
+ constructor(injector: any);
4
+ }
5
+ import { BaseCreateMenuProvider } from '../util/BaseCreateMenuProvider.js';
@@ -0,0 +1,19 @@
1
+ import { createElement } from './createElement.js';
2
+ import { searchTerms } from './searchTerms.js';
3
+ import { BaseCreateMenuProvider } from '../util/BaseCreateMenuProvider.js';
4
+
5
+ export class CreateMenuProvider extends BaseCreateMenuProvider {
6
+ static $inject = [
7
+ 'injector'
8
+ ];
9
+
10
+ constructor(injector) {
11
+ super(injector, {
12
+ resourceType: 'form',
13
+ groupName: 'Forms',
14
+ className: 'bpmn-icon-user-task',
15
+ createElement: (resource, bpmnFactory) => createElement(resource, bpmnFactory),
16
+ search: searchTerms
17
+ });
18
+ }
19
+ }
@@ -0,0 +1,5 @@
1
+ export class ReplaceMenuProvider extends BaseReplaceMenuProvider {
2
+ static $inject: string[];
3
+ constructor(injector: any);
4
+ }
5
+ import { BaseReplaceMenuProvider } from '../util/BaseReplaceMenuProvider.js';
@@ -0,0 +1,19 @@
1
+ import { replaceElement } from './replaceElement.js';
2
+ import { searchTerms } from './searchTerms.js';
3
+ import { BaseReplaceMenuProvider } from '../util/BaseReplaceMenuProvider.js';
4
+
5
+ export class ReplaceMenuProvider extends BaseReplaceMenuProvider {
6
+ static $inject = [
7
+ 'injector'
8
+ ];
9
+
10
+ constructor(injector) {
11
+ super(injector, {
12
+ resourceType: 'form',
13
+ groupName: 'Forms',
14
+ className: 'bpmn-icon-user-task',
15
+ replaceElement: (element, resource, injector) => replaceElement(element, resource, injector),
16
+ search: searchTerms
17
+ });
18
+ }
19
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @param resource
3
+ */
4
+ export function createElement(resource: Form): any;
5
+ export type Form = {
6
+ type: "form";
7
+ name: string;
8
+ formId: string;
9
+ };
@@ -0,0 +1,39 @@
1
+ /**
2
+ * @typedef {{
3
+ * type: 'form',
4
+ * name: string,
5
+ * formId: string
6
+ * }} Form
7
+ */
8
+
9
+ /**
10
+ * @param {Form} resource
11
+ */
12
+ export function createElement(resource, bpmnFactory) {
13
+ return createFormTask(resource, bpmnFactory);
14
+ }
15
+
16
+ function createFormTask(resource, bpmnFactory) {
17
+ const formDefinition = createFormDefinition(resource, bpmnFactory);
18
+ const extensionElements = bpmnFactory.create('bpmn:ExtensionElements', {
19
+ values: [
20
+ createZeebeUserTask(bpmnFactory),
21
+ formDefinition
22
+ ]
23
+ });
24
+
25
+ return bpmnFactory.create('bpmn:UserTask', {
26
+ name: resource.name,
27
+ extensionElements
28
+ });
29
+ }
30
+
31
+ function createFormDefinition(resource, bpmnFactory) {
32
+ return bpmnFactory.create('zeebe:FormDefinition', {
33
+ formId: resource.formId
34
+ });
35
+ }
36
+
37
+ function createZeebeUserTask(bpmnFactory) {
38
+ return bpmnFactory.create('zeebe:UserTask');
39
+ }
@@ -0,0 +1,8 @@
1
+ export const FormHandlerModule: {
2
+ 'resources.formHandler.create': (string | typeof CreateMenuProvider)[];
3
+ 'resources.formHandler.append': (string | typeof AppendMenuProvider)[];
4
+ 'resources.formHandler.replace': (string | typeof ReplaceMenuProvider)[];
5
+ };
6
+ import { CreateMenuProvider } from './CreateMenuProvider';
7
+ import { AppendMenuProvider } from './AppendMenuProvider';
8
+ import { ReplaceMenuProvider } from './ReplaceMenuProvider';
@@ -0,0 +1,14 @@
1
+ import { CreateMenuProvider } from './CreateMenuProvider';
2
+ import { AppendMenuProvider } from './AppendMenuProvider';
3
+ import { ReplaceMenuProvider } from './ReplaceMenuProvider';
4
+
5
+ export const FormHandlerModule = {
6
+ __init__: [
7
+ 'resources.formHandler.create',
8
+ 'resources.formHandler.append',
9
+ 'resources.formHandler.replace'
10
+ ],
11
+ 'resources.formHandler.create': [ 'type', CreateMenuProvider ],
12
+ 'resources.formHandler.append': [ 'type', AppendMenuProvider ],
13
+ 'resources.formHandler.replace': [ 'type', ReplaceMenuProvider ]
14
+ };
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @param element
3
+ * @param resource
4
+ * @param injector
5
+ */
6
+ export function replaceElement(
7
+ element: import("diagram-js/lib/model").Element,
8
+ resource: Form,
9
+ injector: import("didi").Injector
10
+ ): void;
11
+ export type Form = {
12
+ type: "form";
13
+ name: string;
14
+ formId: string;
15
+ };