@valtimo/migration 12.42.0 → 12.43.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.
@@ -19,9 +19,10 @@ import * as i1 from "@valtimo/process";
19
19
  import * as i2 from "ngx-logger";
20
20
  import * as i3 from "@valtimo/components";
21
21
  import * as i4 from "@angular/common";
22
- import * as i5 from "@angular/forms";
23
- import * as i6 from "./migration-process-diagram/migration-process-diagram.component";
24
- import * as i7 from "@ngx-translate/core";
22
+ import * as i5 from "carbon-components-angular";
23
+ import * as i6 from "carbon-components-angular/dropdown";
24
+ import * as i7 from "./migration-process-diagram/migration-process-diagram.component";
25
+ import * as i8 from "@ngx-translate/core";
25
26
  export class MigrationComponent {
26
27
  constructor(processService, logger, alertService) {
27
28
  this.processService = processService;
@@ -54,6 +55,11 @@ export class MigrationComponent {
54
55
  this.uniqueFlowNodeMap = [];
55
56
  this.taskMapping = {};
56
57
  this.diagram = null;
58
+ this.sourceDefinitionItems = [];
59
+ this.targetDefinitionItems = [];
60
+ this.sourceVersionItems = [];
61
+ this.targetVersionItems = [];
62
+ this.targetFlowNodeItemsMap = new Map();
57
63
  }
58
64
  ngOnInit() {
59
65
  this.loadProcessDefinitions();
@@ -67,28 +73,85 @@ export class MigrationComponent {
67
73
  get taskMappingLength() {
68
74
  return Object.keys(this.taskMapping).length;
69
75
  }
76
+ refreshDefinitionItems() {
77
+ this.sourceDefinitionItems = this.processDefinitions.map(processDef => ({
78
+ key: processDef.key,
79
+ content: processDef.name,
80
+ selected: this.fields.source.definition === processDef.key,
81
+ }));
82
+ this.targetDefinitionItems = this.processDefinitions.map(processDef => ({
83
+ key: processDef.key,
84
+ content: processDef.name,
85
+ selected: this.fields.target.definition === processDef.key,
86
+ }));
87
+ }
88
+ refreshVersionItems(type) {
89
+ const items = this.selectedVersions[type].map(processVer => ({
90
+ id: processVer.id,
91
+ content: `${processVer.version}`,
92
+ selected: this.fields[type].version === processVer.id,
93
+ }));
94
+ if (type === 'source') {
95
+ this.sourceVersionItems = items;
96
+ }
97
+ else {
98
+ this.targetVersionItems = items;
99
+ }
100
+ }
70
101
  loadProcessDefinitions() {
71
102
  this.processService
72
103
  .getProcessDefinitions()
73
104
  .subscribe((processDefinitions) => {
74
105
  this.processDefinitions = processDefinitions;
106
+ this.refreshDefinitionItems();
75
107
  });
76
108
  }
109
+ onDefinitionSelected(selection, type) {
110
+ const item = Array.isArray(selection) ? selection[0] : selection;
111
+ const key = item?.key ?? null;
112
+ this.loadProcessDefinitionVersions(key, type);
113
+ if (type === 'source') {
114
+ this.loadProcessDefinitionVersions(key, 'target');
115
+ }
116
+ }
117
+ onVersionSelected(selection, type) {
118
+ const item = Array.isArray(selection) ? selection[0] : selection;
119
+ this.loadProcess(item?.id ?? null, type);
120
+ }
121
+ onSourceDefinitionClear(event) {
122
+ this.sourceVersionCombobox.clearInput(event);
123
+ this.targetDefinitionComboBox.clearInput(event);
124
+ this.targetVersionCombobox.clearInput(event);
125
+ }
126
+ onTargetDefinitionClear(event) {
127
+ this.targetVersionCombobox.clearInput(event);
128
+ }
129
+ onTaskMappingSelected(selection, nodeId) {
130
+ const item = Array.isArray(selection) ? selection[0] : selection;
131
+ this.taskMapping[nodeId] = item?.id ?? null;
132
+ }
77
133
  loadProcessDefinitionVersions(key, type) {
78
134
  this.fields[type].definition = key;
79
135
  this.selectedVersions[type] = [];
80
136
  this.clearProcess(type);
137
+ this.refreshDefinitionItems();
138
+ this.refreshVersionItems(type);
81
139
  if (key) {
82
140
  this.processService
83
141
  .getProcessDefinitionVersions(key)
84
142
  .subscribe((processDefinitionVersions) => {
143
+ if (this.fields[type].definition !== key) {
144
+ return;
145
+ }
85
146
  this.selectedVersions[type] = processDefinitionVersions;
147
+ this.refreshVersionItems(type);
86
148
  });
87
149
  }
88
150
  }
89
151
  loadProcess(id, type) {
90
152
  this.fields[type].version = id;
91
153
  this.clearProcess(type);
154
+ this.refreshVersionItems(type);
92
155
  if (id) {
93
156
  this.loadProcessDefinitionXML(id, type);
94
157
  if (type === 'source') {
@@ -130,10 +193,21 @@ export class MigrationComponent {
130
193
  return flowNode.$type === flowNodeType;
131
194
  });
132
195
  }
196
+ getFilteredTargetFlowNodeMapItems(node) {
197
+ if (!this.targetFlowNodeItemsMap.has(node.id)) {
198
+ this.targetFlowNodeItemsMap.set(node.id, this.getFilteredTargetFlowNodeMap(node.$type).map(targetFlowNode => ({
199
+ id: targetFlowNode.id,
200
+ content: targetFlowNode.name || targetFlowNode.id,
201
+ selected: this.taskMapping[node.id] === targetFlowNode.id,
202
+ })));
203
+ }
204
+ return this.targetFlowNodeItemsMap.get(node.id);
205
+ }
133
206
  diagramLoaded(diagramName) {
134
207
  this.loaded[diagramName] = true;
135
208
  if (this.loaded.source && this.loaded.target) {
136
209
  this.taskMapping = {};
210
+ this.targetFlowNodeItemsMap.clear();
137
211
  this.setUniqueFlowNodeMap();
138
212
  }
139
213
  }
@@ -154,22 +228,34 @@ export class MigrationComponent {
154
228
  version: null,
155
229
  },
156
230
  };
231
+ this.refreshDefinitionItems();
232
+ this.refreshVersionItems('source');
233
+ this.refreshVersionItems('target');
157
234
  }, err => {
158
235
  this.alertService.error('Process migration failed!');
159
236
  this.logger.debug(err);
160
237
  });
161
238
  }
162
239
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MigrationComponent, deps: [{ token: i1.ProcessService }, { token: i2.NGXLogger }, { token: i3.AlertService }], target: i0.ɵɵFactoryTarget.Component }); }
163
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MigrationComponent, selector: "valtimo-migration", viewQueries: [{ propertyName: "sourceDiagram", first: true, predicate: ["sourceDiagram"], descendants: true }, { propertyName: "targetDiagram", first: true, predicate: ["targetDiagram"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content\">\n <div class=\"container-fluid\">\n <div class=\"row mb-5\">\n <div class=\"col-12\">\n <div class=\"alert alert-warning pl-2 plr-2\" role=\"alert\">\n <div class=\"icon\"><span class=\"mdi mdi-alert-triangle\"></span></div>\n <div class=\"message\" [innerHTML]=\"'Process migration warning' | translate\"></div>\n </div>\n </div>\n </div>\n <div class=\"row mb-5\">\n <div class=\"col-4\">\n <label for=\"sourceDef\">Source Definition</label>\n <select\n class=\"form-control\"\n id=\"sourceDef\"\n [ngModel]=\"fields.source.definition\"\n (ngModelChange)=\"loadProcessDefinitionVersions($event, 'source')\"\n >\n <option [ngValue]=\"null\" selected>- Source Definition -</option>\n <option *ngFor=\"let processDef of processDefinitions\" [ngValue]=\"processDef.key\">\n {{ processDef.name }}\n </option>\n </select>\n </div>\n <div class=\"col-2\">\n <label for=\"sourceVer\">Source Version</label>\n <select\n class=\"form-control\"\n id=\"sourceVer\"\n [ngModel]=\"fields.source.version\"\n (ngModelChange)=\"loadProcess($event, 'source')\"\n >\n <option [ngValue]=\"null\" selected>- Source Version -</option>\n <option *ngFor=\"let processVer of selectedVersions.source\" [ngValue]=\"processVer.id\">\n {{ processVer.version }}\n </option>\n </select>\n </div>\n <div class=\"col-4\">\n <label for=\"targetDef\">Target Definition</label>\n <select\n class=\"form-control\"\n id=\"targetDef\"\n [ngModel]=\"fields.target.definition\"\n (ngModelChange)=\"loadProcessDefinitionVersions($event, 'target')\"\n >\n <option [ngValue]=\"null\" selected>- Target Definition -</option>\n <option *ngFor=\"let processDef of processDefinitions\" [ngValue]=\"processDef.key\">\n {{ processDef.name }}\n </option>\n </select>\n </div>\n <div class=\"col-2\">\n <label for=\"targetVer\">Target Version</label>\n <select\n class=\"form-control\"\n id=\"targetVer\"\n [ngModel]=\"fields.target.version\"\n (ngModelChange)=\"loadProcess($event, 'target')\"\n >\n <option [ngValue]=\"null\" selected>- Target Version -</option>\n <option *ngFor=\"let processVer of selectedVersions.target\" [ngValue]=\"processVer.id\">\n {{ processVer.version }}\n </option>\n </select>\n </div>\n </div>\n\n <div class=\"row mb-5\">\n <div class=\"col-6\">\n <valtimo-migration-process-diagram\n name=\"source\"\n (loaded)=\"diagramLoaded($event)\"\n #sourceDiagram\n ></valtimo-migration-process-diagram>\n </div>\n <div class=\"col-6\">\n <valtimo-migration-process-diagram\n name=\"target\"\n (loaded)=\"diagramLoaded($event)\"\n #targetDiagram\n ></valtimo-migration-process-diagram>\n </div>\n </div>\n <table class=\"table table-striped mb-5\" *ngIf=\"selectedId.source && selectedId.target\">\n <tr *ngFor=\"let node of uniqueFlowNodeMap\">\n <td>{{ node.name ? node.name : node.id }}</td>\n <td>\n <select class=\"form-control\" (change)=\"taskMapping[node.id] = $event.target.value\">\n <option [value]=\"null\" disabled selected>- Choose Target -</option>\n <option\n *ngFor=\"let targetFlowNode of getFilteredTargetFlowNodeMap(node.$type)\"\n [value]=\"targetFlowNode.id\"\n >\n {{ targetFlowNode.name ? targetFlowNode.name : targetFlowNode.id }}\n </option>\n </select>\n </td>\n </tr>\n </table>\n <hr />\n <div class=\"btn-group mb-5\">\n <button\n [disabled]=\"\n (uniqueFlowNodeMap.length !== taskMappingLength && uniqueFlowNodeMap.length > 0) ||\n !loaded.source ||\n !loaded.target\n \"\n (click)=\"migrateProcess()\"\n class=\"btn btn-primary\"\n >\n Migrate\n <span *ngIf=\"processCount !== null\" class=\"badge badge-pill badge-secondary\">{{\n processCount\n }}</span>\n </button>\n </div>\n </div>\n</div>\n", styles: ["/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.MigrationProcessDiagramComponent, selector: "valtimo-migration-process-diagram", inputs: ["name"], outputs: ["loaded"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] }); }
240
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MigrationComponent, selector: "valtimo-migration", viewQueries: [{ propertyName: "sourceDiagram", first: true, predicate: ["sourceDiagram"], descendants: true }, { propertyName: "targetDiagram", first: true, predicate: ["targetDiagram"], descendants: true }, { propertyName: "sourceVersionCombobox", first: true, predicate: ["sourceVersionCombobox"], descendants: true }, { propertyName: "targetDefinitionComboBox", first: true, predicate: ["targetDefinitionComboBox"], descendants: true }, { propertyName: "targetVersionCombobox", first: true, predicate: ["targetVersionCombobox"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content\">\n <div class=\"container-fluid\">\n <div class=\"row mb-5\">\n <div class=\"col-12\">\n <div class=\"alert alert-warning pl-2 plr-2\" role=\"alert\">\n <div class=\"icon\"><span class=\"mdi mdi-alert-triangle\"></span></div>\n <div class=\"message\" [innerHTML]=\"'Process migration warning' | translate\"></div>\n </div>\n </div>\n </div>\n <div class=\"row mb-5\">\n <div class=\"col-4\">\n <cds-combo-box\n [dropUp]=\"false\"\n [appendInline]=\"true\"\n [label]=\"'Source Definition' | translate\"\n [placeholder]=\"'- ' + ('Source Definition' | translate) + ' -'\"\n [items]=\"sourceDefinitionItems\"\n (selected)=\"onDefinitionSelected($event, 'source')\"\n (clear)=\"onSourceDefinitionClear($event)\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </div>\n <div class=\"col-2\">\n <cds-combo-box\n #sourceVersionCombobox\n [dropUp]=\"false\"\n [appendInline]=\"true\"\n [label]=\"'Source Definition' | translate\"\n [placeholder]=\"'- ' + ('Source Version' | translate) + ' -'\"\n [items]=\"sourceVersionItems\"\n (selected)=\"onVersionSelected($event, 'source')\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </div>\n <div class=\"col-4\">\n <cds-combo-box\n #targetDefinitionComboBox\n [dropUp]=\"false\"\n [appendInline]=\"true\"\n [label]=\"'Target Definition' | translate\"\n [placeholder]=\"'- ' + ('Target Definition' | translate) + ' -'\"\n [items]=\"targetDefinitionItems\"\n (selected)=\"onDefinitionSelected($event, 'target')\"\n (clear)=\"onTargetDefinitionClear($event)\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </div>\n <div class=\"col-2\">\n <cds-combo-box\n #targetVersionCombobox\n [dropUp]=\"false\"\n [appendInline]=\"true\"\n [label]=\"'Target Version' | translate\"\n [placeholder]=\"'- ' + ('Target Version' | translate) + ' -'\"\n [items]=\"targetVersionItems\"\n (selected)=\"onVersionSelected($event, 'target')\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </div>\n </div>\n\n <div class=\"row mb-5\">\n <div class=\"col-6\">\n <valtimo-migration-process-diagram\n name=\"source\"\n (loaded)=\"diagramLoaded($event)\"\n #sourceDiagram\n ></valtimo-migration-process-diagram>\n </div>\n <div class=\"col-6\">\n <valtimo-migration-process-diagram\n name=\"target\"\n (loaded)=\"diagramLoaded($event)\"\n #targetDiagram\n ></valtimo-migration-process-diagram>\n </div>\n </div>\n <table class=\"table table-striped mb-5\" *ngIf=\"selectedId.source && selectedId.target\">\n <tr *ngFor=\"let node of uniqueFlowNodeMap\">\n <td>{{ node.name ? node.name : node.id }}</td>\n <td>\n <cds-combo-box\n [dropUp]=\"false\"\n [appendInline]=\"true\"\n [placeholder]=\"'- ' + ('Choose Target' | translate) + ' -'\"\n [items]=\"getFilteredTargetFlowNodeMapItems(node)\"\n (selected)=\"onTaskMappingSelected($event, node.id)\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </td>\n </tr>\n </table>\n <hr />\n <div class=\"btn-group mb-5\">\n <button\n [disabled]=\"\n (uniqueFlowNodeMap.length !== taskMappingLength && uniqueFlowNodeMap.length > 0) ||\n !loaded.source ||\n !loaded.target\n \"\n (click)=\"migrateProcess()\"\n class=\"btn btn-primary\"\n >\n Migrate\n <span *ngIf=\"processCount !== null\" class=\"badge badge-pill badge-secondary\">{{\n processCount\n }}</span>\n </button>\n </div>\n </div>\n</div>\n", styles: ["/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.ComboBox, selector: "cds-combo-box, ibm-combo-box", inputs: ["placeholder", "openMenuAria", "closeMenuAria", "clearSelectionsTitle", "clearSelectionsAria", "clearSelectionTitle", "clearSelectionAria", "id", "labelId", "items", "type", "size", "itemValueKey", "label", "hideLabel", "helperText", "appendInline", "invalid", "invalidText", "warn", "warnText", "maxLength", "theme", "selectionFeedback", "autocomplete", "dropUp", "disabled"], outputs: ["selected", "submit", "close", "search", "clear"] }, { kind: "component", type: i6.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "component", type: i7.MigrationProcessDiagramComponent, selector: "valtimo-migration-process-diagram", inputs: ["name"], outputs: ["loaded"] }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }] }); }
164
241
  }
165
242
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MigrationComponent, decorators: [{
166
243
  type: Component,
167
- args: [{ selector: 'valtimo-migration', template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content\">\n <div class=\"container-fluid\">\n <div class=\"row mb-5\">\n <div class=\"col-12\">\n <div class=\"alert alert-warning pl-2 plr-2\" role=\"alert\">\n <div class=\"icon\"><span class=\"mdi mdi-alert-triangle\"></span></div>\n <div class=\"message\" [innerHTML]=\"'Process migration warning' | translate\"></div>\n </div>\n </div>\n </div>\n <div class=\"row mb-5\">\n <div class=\"col-4\">\n <label for=\"sourceDef\">Source Definition</label>\n <select\n class=\"form-control\"\n id=\"sourceDef\"\n [ngModel]=\"fields.source.definition\"\n (ngModelChange)=\"loadProcessDefinitionVersions($event, 'source')\"\n >\n <option [ngValue]=\"null\" selected>- Source Definition -</option>\n <option *ngFor=\"let processDef of processDefinitions\" [ngValue]=\"processDef.key\">\n {{ processDef.name }}\n </option>\n </select>\n </div>\n <div class=\"col-2\">\n <label for=\"sourceVer\">Source Version</label>\n <select\n class=\"form-control\"\n id=\"sourceVer\"\n [ngModel]=\"fields.source.version\"\n (ngModelChange)=\"loadProcess($event, 'source')\"\n >\n <option [ngValue]=\"null\" selected>- Source Version -</option>\n <option *ngFor=\"let processVer of selectedVersions.source\" [ngValue]=\"processVer.id\">\n {{ processVer.version }}\n </option>\n </select>\n </div>\n <div class=\"col-4\">\n <label for=\"targetDef\">Target Definition</label>\n <select\n class=\"form-control\"\n id=\"targetDef\"\n [ngModel]=\"fields.target.definition\"\n (ngModelChange)=\"loadProcessDefinitionVersions($event, 'target')\"\n >\n <option [ngValue]=\"null\" selected>- Target Definition -</option>\n <option *ngFor=\"let processDef of processDefinitions\" [ngValue]=\"processDef.key\">\n {{ processDef.name }}\n </option>\n </select>\n </div>\n <div class=\"col-2\">\n <label for=\"targetVer\">Target Version</label>\n <select\n class=\"form-control\"\n id=\"targetVer\"\n [ngModel]=\"fields.target.version\"\n (ngModelChange)=\"loadProcess($event, 'target')\"\n >\n <option [ngValue]=\"null\" selected>- Target Version -</option>\n <option *ngFor=\"let processVer of selectedVersions.target\" [ngValue]=\"processVer.id\">\n {{ processVer.version }}\n </option>\n </select>\n </div>\n </div>\n\n <div class=\"row mb-5\">\n <div class=\"col-6\">\n <valtimo-migration-process-diagram\n name=\"source\"\n (loaded)=\"diagramLoaded($event)\"\n #sourceDiagram\n ></valtimo-migration-process-diagram>\n </div>\n <div class=\"col-6\">\n <valtimo-migration-process-diagram\n name=\"target\"\n (loaded)=\"diagramLoaded($event)\"\n #targetDiagram\n ></valtimo-migration-process-diagram>\n </div>\n </div>\n <table class=\"table table-striped mb-5\" *ngIf=\"selectedId.source && selectedId.target\">\n <tr *ngFor=\"let node of uniqueFlowNodeMap\">\n <td>{{ node.name ? node.name : node.id }}</td>\n <td>\n <select class=\"form-control\" (change)=\"taskMapping[node.id] = $event.target.value\">\n <option [value]=\"null\" disabled selected>- Choose Target -</option>\n <option\n *ngFor=\"let targetFlowNode of getFilteredTargetFlowNodeMap(node.$type)\"\n [value]=\"targetFlowNode.id\"\n >\n {{ targetFlowNode.name ? targetFlowNode.name : targetFlowNode.id }}\n </option>\n </select>\n </td>\n </tr>\n </table>\n <hr />\n <div class=\"btn-group mb-5\">\n <button\n [disabled]=\"\n (uniqueFlowNodeMap.length !== taskMappingLength && uniqueFlowNodeMap.length > 0) ||\n !loaded.source ||\n !loaded.target\n \"\n (click)=\"migrateProcess()\"\n class=\"btn btn-primary\"\n >\n Migrate\n <span *ngIf=\"processCount !== null\" class=\"badge badge-pill badge-secondary\">{{\n processCount\n }}</span>\n </button>\n </div>\n </div>\n</div>\n", styles: ["/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
244
+ args: [{ selector: 'valtimo-migration', template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content\">\n <div class=\"container-fluid\">\n <div class=\"row mb-5\">\n <div class=\"col-12\">\n <div class=\"alert alert-warning pl-2 plr-2\" role=\"alert\">\n <div class=\"icon\"><span class=\"mdi mdi-alert-triangle\"></span></div>\n <div class=\"message\" [innerHTML]=\"'Process migration warning' | translate\"></div>\n </div>\n </div>\n </div>\n <div class=\"row mb-5\">\n <div class=\"col-4\">\n <cds-combo-box\n [dropUp]=\"false\"\n [appendInline]=\"true\"\n [label]=\"'Source Definition' | translate\"\n [placeholder]=\"'- ' + ('Source Definition' | translate) + ' -'\"\n [items]=\"sourceDefinitionItems\"\n (selected)=\"onDefinitionSelected($event, 'source')\"\n (clear)=\"onSourceDefinitionClear($event)\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </div>\n <div class=\"col-2\">\n <cds-combo-box\n #sourceVersionCombobox\n [dropUp]=\"false\"\n [appendInline]=\"true\"\n [label]=\"'Source Definition' | translate\"\n [placeholder]=\"'- ' + ('Source Version' | translate) + ' -'\"\n [items]=\"sourceVersionItems\"\n (selected)=\"onVersionSelected($event, 'source')\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </div>\n <div class=\"col-4\">\n <cds-combo-box\n #targetDefinitionComboBox\n [dropUp]=\"false\"\n [appendInline]=\"true\"\n [label]=\"'Target Definition' | translate\"\n [placeholder]=\"'- ' + ('Target Definition' | translate) + ' -'\"\n [items]=\"targetDefinitionItems\"\n (selected)=\"onDefinitionSelected($event, 'target')\"\n (clear)=\"onTargetDefinitionClear($event)\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </div>\n <div class=\"col-2\">\n <cds-combo-box\n #targetVersionCombobox\n [dropUp]=\"false\"\n [appendInline]=\"true\"\n [label]=\"'Target Version' | translate\"\n [placeholder]=\"'- ' + ('Target Version' | translate) + ' -'\"\n [items]=\"targetVersionItems\"\n (selected)=\"onVersionSelected($event, 'target')\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </div>\n </div>\n\n <div class=\"row mb-5\">\n <div class=\"col-6\">\n <valtimo-migration-process-diagram\n name=\"source\"\n (loaded)=\"diagramLoaded($event)\"\n #sourceDiagram\n ></valtimo-migration-process-diagram>\n </div>\n <div class=\"col-6\">\n <valtimo-migration-process-diagram\n name=\"target\"\n (loaded)=\"diagramLoaded($event)\"\n #targetDiagram\n ></valtimo-migration-process-diagram>\n </div>\n </div>\n <table class=\"table table-striped mb-5\" *ngIf=\"selectedId.source && selectedId.target\">\n <tr *ngFor=\"let node of uniqueFlowNodeMap\">\n <td>{{ node.name ? node.name : node.id }}</td>\n <td>\n <cds-combo-box\n [dropUp]=\"false\"\n [appendInline]=\"true\"\n [placeholder]=\"'- ' + ('Choose Target' | translate) + ' -'\"\n [items]=\"getFilteredTargetFlowNodeMapItems(node)\"\n (selected)=\"onTaskMappingSelected($event, node.id)\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </td>\n </tr>\n </table>\n <hr />\n <div class=\"btn-group mb-5\">\n <button\n [disabled]=\"\n (uniqueFlowNodeMap.length !== taskMappingLength && uniqueFlowNodeMap.length > 0) ||\n !loaded.source ||\n !loaded.target\n \"\n (click)=\"migrateProcess()\"\n class=\"btn btn-primary\"\n >\n Migrate\n <span *ngIf=\"processCount !== null\" class=\"badge badge-pill badge-secondary\">{{\n processCount\n }}</span>\n </button>\n </div>\n </div>\n</div>\n", styles: ["/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
168
245
  }], ctorParameters: () => [{ type: i1.ProcessService }, { type: i2.NGXLogger }, { type: i3.AlertService }], propDecorators: { sourceDiagram: [{
169
246
  type: ViewChild,
170
247
  args: ['sourceDiagram']
171
248
  }], targetDiagram: [{
172
249
  type: ViewChild,
173
250
  args: ['targetDiagram']
251
+ }], sourceVersionCombobox: [{
252
+ type: ViewChild,
253
+ args: ['sourceVersionCombobox']
254
+ }], targetDefinitionComboBox: [{
255
+ type: ViewChild,
256
+ args: ['targetDefinitionComboBox']
257
+ }], targetVersionCombobox: [{
258
+ type: ViewChild,
259
+ args: ['targetVersionCombobox']
174
260
  }] } });
175
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlncmF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vbWlncmF0aW9uL3NyYy9saWIvbWlncmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vbWlncmF0aW9uL3NyYy9saWIvbWlncmF0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFnQixTQUFTLEVBQVUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7QUFXMUUsTUFBTSxPQUFPLGtCQUFrQjtJQWtDN0IsWUFDVSxjQUE4QixFQUM5QixNQUFpQixFQUNqQixZQUEwQjtRQUYxQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUNqQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQXBDN0IsdUJBQWtCLEdBQXdCLEVBQUUsQ0FBQztRQUM3QyxxQkFBZ0IsR0FBRztZQUN4QixNQUFNLEVBQUUsRUFBRTtZQUNWLE1BQU0sRUFBRSxFQUFFO1NBQ1gsQ0FBQztRQUNLLGVBQVUsR0FBRztZQUNsQixNQUFNLEVBQUUsSUFBSTtZQUNaLE1BQU0sRUFBRSxJQUFJO1NBQ2IsQ0FBQztRQUNLLFdBQU0sR0FBRztZQUNkLE1BQU0sRUFBRSxLQUFLO1lBQ2IsTUFBTSxFQUFFLEtBQUs7U0FDZCxDQUFDO1FBQ0ssV0FBTSxHQUFHO1lBQ2QsTUFBTSxFQUFFO2dCQUNOLFVBQVUsRUFBRSxJQUFJO2dCQUNoQixPQUFPLEVBQUUsSUFBSTthQUNkO1lBQ0QsTUFBTSxFQUFFO2dCQUNOLFVBQVUsRUFBRSxJQUFJO2dCQUNoQixPQUFPLEVBQUUsSUFBSTthQUNkO1NBQ0YsQ0FBQztRQUVLLGlCQUFZLEdBQWtCLElBQUksQ0FBQztRQUNuQyxzQkFBaUIsR0FB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b250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1Byb2Nlc3NTZXJ2aWNlLCBQcm9jZXNzRGVmaW5pdGlvbn0gZnJvbSAnQHZhbHRpbW8vcHJvY2Vzcyc7XG5pbXBvcnQge01pZ3JhdGlvblByb2Nlc3NEaWFncmFtQ29tcG9uZW50fSBmcm9tICcuL21pZ3JhdGlvbi1wcm9jZXNzLWRpYWdyYW0vbWlncmF0aW9uLXByb2Nlc3MtZGlhZ3JhbS5jb21wb25lbnQnO1xuaW1wb3J0IHtOR1hMb2dnZXJ9IGZyb20gJ25neC1sb2dnZXInO1xuaW1wb3J0IHtBbGVydFNlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLW1pZ3JhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9taWdyYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9taWdyYXRpb24uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgTWlncmF0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgcHVibGljIHByb2Nlc3NEZWZpbml0aW9uczogUHJvY2Vzc0RlZmluaXRpb25bXSA9IFtdO1xuICBwdWJsaWMgc2VsZWN0ZWRWZXJzaW9ucyA9IHtcbiAgICBzb3VyY2U6IFtdLFxuICAgIHRhcmdldDogW10sXG4gIH07XG4gIHB1YmxpYyBzZWxlY3RlZElkID0ge1xuICAgIHNvdXJjZTogbnVsbCxcbiAgICB0YXJnZXQ6IG51bGwsXG4gIH07XG4gIHB1YmxpYyBsb2FkZWQgPSB7XG4gICAgc291cmNlOiBmYWxzZSxcbiAgICB0YXJnZXQ6IGZhbHNlLFxuICB9O1xuICBwdWJsaWMgZmllbGRzID0ge1xuICAgIHNvdXJjZToge1xuICAgICAgZGVmaW5pdGlvbjogbnVsbCxcbiAgICAgIHZlcnNpb246IG51bGwsXG4gICAgfSxcbiAgICB0YXJnZXQ6IHtcbiAgICAgIGRlZmluaXRpb246IG51bGwsXG4gICAgICB2ZXJzaW9uOiBudWxsLFxuICAgIH0sXG4gIH07XG5cbiAgcHVibGljIHByb2Nlc3NDb3VudDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gIHB1YmxpYyB1bmlxdWVGbG93Tm9kZU1hcDogYW55W10gPSBbXTtcbiAgcHVibGljIHRhc2tNYXBwaW5nOiBhbnkgPSB7fTtcblxuICBAVmlld0NoaWxkKCdzb3VyY2VEaWFncmFtJykgc291cmNlRGlhZ3JhbTogTWlncmF0aW9uUHJvY2Vzc0RpYWdyYW1Db21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ3RhcmdldERpYWdyYW0nKSB0YXJnZXREaWFncmFtOiBNaWdyYXRpb25Qcm9jZXNzRGlhZ3JhbUNvbXBvbmVudDtcblxuICBwdWJsaWMgZGlhZ3JhbTogYW55ID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHByb2Nlc3NTZXJ2aWNlOiBQcm9jZXNzU2VydmljZSxcbiAgICBwcml2YXRlIGxvZ2dlcjogTkdYTG9nZ2VyLFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMubG9hZFByb2Nlc3NEZWZpbml0aW9ucygpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuZGlhZ3JhbSA9IHtcbiAgICAgIHNvdXJjZTogdGhpcy5zb3VyY2VEaWFncmFtLFxuICAgICAgdGFyZ2V0OiB0aGlzLnRhcmdldERpYWdyYW0sXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdGFza01hcHBpbmdMZW5ndGgoKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMudGFza01hcHBpbmcpLmxlbmd0aDtcbiAgfVxuXG4gIGxvYWRQcm9jZXNzRGVmaW5pdGlvbnMoKSB7XG4gICAgdGhpcy5wcm9jZXNzU2VydmljZVxuICAgICAgLmdldFByb2Nlc3NEZWZpbml0aW9ucygpXG4gICAgICAuc3Vic2NyaWJlKChwcm9jZXNzRGVmaW5pdGlvbnM6IFByb2Nlc3NEZWZpbml0aW9uW10pID0+IHtcbiAgICAgICAgdGhpcy5wcm9jZXNzRGVmaW5pdGlvbnMgPSBwcm9jZXNzRGVmaW5pdGlvbnM7XG4gICAgICB9KTtcbiAgfVxuXG4gIGxvYWRQcm9jZXNzRGVmaW5pdGlvblZlcnNpb25zKGtleTogc3RyaW5nIHwgbnVsbCwgdHlwZTogc3RyaW5nKSB7XG4gICAgdGhpcy5maWVsZHNbdHlwZV0uZGVmaW5pdGlvbiA9IGtleTtcbiAgICB0aGlzLnNlbGVjdGVkVmVyc2lvbnNbdHlwZV0gPSBbXTtcbiAgICB0aGlzLmNsZWFyUHJvY2Vzcyh0eXBlKTtcbiAgICBpZiAoa2V5KSB7XG4gICAgICB0aGlzLnByb2Nlc3NTZXJ2aWNlXG4gICAgICAgIC5nZXRQcm9jZXNzRGVmaW5pdGlvblZlcnNpb25zKGtleSlcbiAgICAgICAgLnN1YnNjcmliZSgocHJvY2Vzc0RlZmluaXRpb25WZXJzaW9uczogUHJvY2Vzc0RlZmluaXRpb25bXSkgPT4ge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWZXJzaW9uc1t0eXBlXSA9IHByb2Nlc3NEZWZpbml0aW9uVmVyc2lvbnM7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGxvYWRQcm9jZXNzKGlkOiBzdHJpbmcgfCBudWxsLCB0eXBlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmZpZWxkc1t0eXBlXS52ZXJzaW9uID0gaWQ7XG4gICAgdGhpcy5jbGVhclByb2Nlc3ModHlwZSk7XG4gICAgaWYgKGlkKSB7XG4gICAgICB0aGlzLmxvYWRQcm9jZXNzRGVmaW5pdGlvblhNTChpZCwgdHlwZSk7XG4gICAgICBpZiAodHlwZSA9PT0gJ3NvdXJjZScpIHtcbiAgICAgICAgdGhpcy5sb2FkUHJvY2Vzc0NvdW50KGlkKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNsZWFyUHJvY2Vzcyh0eXBlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmxvYWRlZFt0eXBlXSA9IGZhbHNlO1xuICAgIHRoaXMuc2VsZWN0ZWRJZFt0eXBlXSA9IG51bGw7XG4gICAgdGhpcy5kaWFncmFtW3R5cGVdLmNsZWFyKCk7XG4gICAgaWYgKHR5cGUgPT09ICdzb3VyY2UnKSB7XG4gICAgICB0aGlzLnByb2Nlc3NDb3VudCA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgbG9hZFByb2Nlc3NEZWZpbml0aW9uWE1MKGlkOiBzdHJpbmcsIHR5cGU6IHN0cmluZykge1xuICAgIHRoaXMucHJvY2Vzc1NlcnZpY2UuZ2V0UHJvY2Vzc0RlZmluaXRpb25YbWwoaWQpLnN1YnNjcmliZSh4bWwgPT4ge1xuICAgICAgdGhpcy5kaWFncmFtW3R5cGVdLmxvYWRYbWwoeG1sWydicG1uMjBYbWwnXSk7XG4gICAgICB0aGlzLnNlbGVjdGVkSWRbdHlwZV0gPSBpZDtcbiAgICB9KTtcbiAgfVxuXG4gIGxvYWRQcm9jZXNzQ291bnQoaWQ6IHN0cmluZykge1xuICAgIHRoaXMucHJvY2Vzc1NlcnZpY2UuZ2V0UHJvY2Vzc0NvdW50KGlkKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgdGhpcy5wcm9jZXNzQ291bnQgPSByZXNwb25zZS5jb3VudDtcbiAgICB9KTtcbiAgfVxuXG4gIHNldFVuaXF1ZUZsb3dOb2RlTWFwKCkge1xuICAgIHRoaXMudW5pcXVlRmxvd05vZGVNYXAgPSBbXTtcbiAgICBjb25zdCBzb3VyY2VGbG93Tm9kZU1hcCA9IHRoaXMuc291cmNlRGlhZ3JhbS5mbG93Tm9kZU1hcDtcbiAgICBjb25zdCB0YXJnZXRGbG93Tm9kZU1hcCA9IHRoaXMudGFyZ2V0RGlhZ3JhbS5mbG93Tm9kZU1hcDtcblxuICAgIGlmIChzb3VyY2VGbG93Tm9kZU1hcCAhPSBudWxsICYmIHRhcmdldEZsb3dOb2RlTWFwICE9IG51bGwpIHtcbiAgICAgIHRoaXMudW5pcXVlRmxvd05vZGVNYXAgPSBzb3VyY2VGbG93Tm9kZU1hcC5maWx0ZXIoXG4gICAgICAgIHNvdXJjZUZsb3dOb2RlID0+XG4gICAgICAgICAgIXRhcmdldEZsb3dOb2RlTWFwLnNvbWUoXG4gICAgICAgICAgICB0YXJnZXRGbG93Tm9kZSA9PlxuICAgICAgICAgICAgICBzb3VyY2VGbG93Tm9kZS5pZCA9PT0gdGFyZ2V0Rmxvd05vZGUuaWQgJiZcbiAgICAgICAgICAgICAgc291cmNlRmxvd05vZGUuJHR5cGUgPT09IHRhcmdldEZsb3dOb2RlLiR0eXBlXG4gICAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBnZXRGaWx0ZXJlZFRhcmdldEZsb3dOb2RlTWFwKGZsb3dOb2RlVHlwZSkge1xuICAgIGNvbnN0IHRhcmdldEZsb3dOb2RlTWFwID0gdGhpcy50YXJnZXREaWFncmFtLmZsb3dOb2RlTWFwO1xuICAgIHJldHVybiB0YXJnZXRGbG93Tm9kZU1hcC5maWx0ZXIoZnVuY3Rpb24gKGZsb3dOb2RlKSB7XG4gICAgICByZXR1cm4gZmxvd05vZGUuJHR5cGUgPT09IGZsb3dOb2RlVHlwZTtcbiAgICB9KTtcbiAgfVxuXG4gIGRpYWdyYW1Mb2FkZWQoZGlhZ3JhbU5hbWU6IHN0cmluZykge1xuICAgIHRoaXMubG9hZGVkW2RpYWdyYW1OYW1lXSA9IHRydWU7XG4gICAgaWYgKHRoaXMubG9hZGVkLnNvdXJjZSAmJiB0aGlzLmxvYWRlZC50YXJnZXQpIHtcbiAgICAgIHRoaXMudGFza01hcHBpbmcgPSB7fTtcbiAgICAgIHRoaXMuc2V0VW5pcXVlRmxvd05vZGVNYXAoKTtcbiAgICB9XG4gIH1cblxuICBtaWdyYXRlUHJvY2VzcygpIHtcbiAgICB0aGlzLnByb2Nlc3NTZXJ2aWNlXG4gICAgICAubWlncmF0ZVByb2Nlc3ModGhpcy5zZWxlY3RlZElkLnNvdXJjZSwgdGhpcy5zZWxlY3RlZElkLnRhcmdldCwgdGhpcy50YXNrTWFwcGluZylcbiAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgIHJlcyA9PiB7XG4gICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc3VjY2VzcygnUHJvY2VzcyBzdWNjZXNzZnVsbHkgbWlncmF0ZWQhJyk7XG4gICAgICAgICAgdGhpcy5jbGVhclByb2Nlc3MoJ3NvdXJjZScpO1xuICAgICAgICAgIHRoaXMuY2xlYXJQcm9jZXNzKCd0YXJnZXQnKTtcbiAgICAgICAgICB0aGlzLmZpZWxkcyA9IHtcbiAgICAgICAgICAgIHNvdXJjZToge1xuICAgICAgICAgICAgICBkZWZpbml0aW9uOiBudWxsLFxuICAgICAgICAgICAgICB2ZXJzaW9uOiBudWxsLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRhcmdldDoge1xuICAgICAgICAgICAgICBkZWZpbml0aW9uOiBudWxsLFxuICAgICAgICAgICAgICB2ZXJzaW9uOiBudWxsLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9O1xuICAgICAgICB9LFxuICAgICAgICBlcnIgPT4ge1xuICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKCdQcm9jZXNzIG1pZ3JhdGlvbiBmYWlsZWQhJyk7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoZXJyKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48ZGl2IGNsYXNzPVwibWFpbi1jb250ZW50XCI+XG4gIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cbiAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTVcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFsZXJ0IGFsZXJ0LXdhcm5pbmcgcGwtMiBwbHItMlwiIHJvbGU9XCJhbGVydFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uXCI+PHNwYW4gY2xhc3M9XCJtZGkgbWRpLWFsZXJ0LXRyaWFuZ2xlXCI+PC9zcGFuPjwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXNzYWdlXCIgW2lubmVySFRNTF09XCInUHJvY2VzcyBtaWdyYXRpb24gd2FybmluZycgfCB0cmFuc2xhdGVcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTVcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPlxuICAgICAgICA8bGFiZWwgZm9yPVwic291cmNlRGVmXCI+U291cmNlIERlZmluaXRpb248L2xhYmVsPlxuICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgIGlkPVwic291cmNlRGVmXCJcbiAgICAgICAgICBbbmdNb2RlbF09XCJmaWVsZHMuc291cmNlLmRlZmluaXRpb25cIlxuICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImxvYWRQcm9jZXNzRGVmaW5pdGlvblZlcnNpb25zKCRldmVudCwgJ3NvdXJjZScpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwibnVsbFwiIHNlbGVjdGVkPi0gU291cmNlIERlZmluaXRpb24gLTwvb3B0aW9uPlxuICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHByb2Nlc3NEZWYgb2YgcHJvY2Vzc0RlZmluaXRpb25zXCIgW25nVmFsdWVdPVwicHJvY2Vzc0RlZi5rZXlcIj5cbiAgICAgICAgICAgIHt7IHByb2Nlc3NEZWYubmFtZSB9fVxuICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICA8L3NlbGVjdD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0yXCI+XG4gICAgICAgIDxsYWJlbCBmb3I9XCJzb3VyY2VWZXJcIj5Tb3VyY2UgVmVyc2lvbjwvbGFiZWw+XG4gICAgICAgIDxzZWxlY3RcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgaWQ9XCJzb3VyY2VWZXJcIlxuICAgICAgICAgIFtuZ01vZGVsXT1cImZpZWxkcy5zb3VyY2UudmVyc2lvblwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwibG9hZFByb2Nlc3MoJGV2ZW50LCAnc291cmNlJylcIlxuICAgICAgICA+XG4gICAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCJudWxsXCIgc2VsZWN0ZWQ+LSBTb3VyY2UgVmVyc2lvbiAtPC9vcHRpb24+XG4gICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgcHJvY2Vzc1ZlciBvZiBzZWxlY3RlZFZlcnNpb25zLnNvdXJjZVwiIFtuZ1ZhbHVlXT1cInByb2Nlc3NWZXIuaWRcIj5cbiAgICAgICAgICAgIHt7IHByb2Nlc3NWZXIudmVyc2lvbiB9fVxuICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICA8L3NlbGVjdD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC00XCI+XG4gICAgICAgIDxsYWJlbCBmb3I9XCJ0YXJnZXREZWZcIj5UYXJnZXQgRGVmaW5pdGlvbjwvbGFiZWw+XG4gICAgICAgIDxzZWxlY3RcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgaWQ9XCJ0YXJnZXREZWZcIlxuICAgICAgICAgIFtuZ01vZGVsXT1cImZpZWxkcy50YXJnZXQuZGVmaW5pdGlvblwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwibG9hZFByb2Nlc3NEZWZpbml0aW9uVmVyc2lvbnMoJGV2ZW50LCAndGFyZ2V0JylcIlxuICAgICAgICA+XG4gICAgICAgICAgPG9wdGlvbiBbbmdWYWx1ZV09XCJudWxsXCIgc2VsZWN0ZWQ+LSBUYXJnZXQgRGVmaW5pdGlvbiAtPC9vcHRpb24+XG4gICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgcHJvY2Vzc0RlZiBvZiBwcm9jZXNzRGVmaW5pdGlvbnNcIiBbbmdWYWx1ZV09XCJwcm9jZXNzRGVmLmtleVwiPlxuICAgICAgICAgICAge3sgcHJvY2Vzc0RlZi5uYW1lIH19XG4gICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTJcIj5cbiAgICAgICAgPGxhYmVsIGZvcj1cInRhcmdldFZlclwiPlRhcmdldCBWZXJzaW9uPC9sYWJlbD5cbiAgICAgICAgPHNlbGVjdFxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICBpZD1cInRhcmdldFZlclwiXG4gICAgICAgICAgW25nTW9kZWxdPVwiZmllbGRzLnRhcmdldC52ZXJzaW9uXCJcbiAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJsb2FkUHJvY2VzcygkZXZlbnQsICd0YXJnZXQnKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIm51bGxcIiBzZWxlY3RlZD4tIFRhcmdldCBWZXJzaW9uIC08L29wdGlvbj5cbiAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBwcm9jZXNzVmVyIG9mIHNlbGVjdGVkVmVyc2lvbnMudGFyZ2V0XCIgW25nVmFsdWVdPVwicHJvY2Vzc1Zlci5pZFwiPlxuICAgICAgICAgICAge3sgcHJvY2Vzc1Zlci52ZXJzaW9uIH19XG4gICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTVcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxuICAgICAgICA8dmFsdGltby1taWdyYXRpb24tcHJvY2Vzcy1kaWFncmFtXG4gICAgICAgICAgbmFtZT1cInNvdXJjZVwiXG4gICAgICAgICAgKGxvYWRlZCk9XCJkaWFncmFtTG9hZGVkKCRldmVudClcIlxuICAgICAgICAgICNzb3VyY2VEaWFncmFtXG4gICAgICAgID48L3ZhbHRpbW8tbWlncmF0aW9uLXByb2Nlc3MtZGlhZ3JhbT5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XG4gICAgICAgIDx2YWx0aW1vLW1pZ3JhdGlvbi1wcm9jZXNzLWRpYWdyYW1cbiAgICAgICAgICBuYW1lPVwidGFyZ2V0XCJcbiAgICAgICAgICAobG9hZGVkKT1cImRpYWdyYW1Mb2FkZWQoJGV2ZW50KVwiXG4gICAgICAgICAgI3RhcmdldERpYWdyYW1cbiAgICAgICAgPjwvdmFsdGltby1taWdyYXRpb24tcHJvY2Vzcy1kaWFncmFtPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtc3RyaXBlZCBtYi01XCIgKm5nSWY9XCJzZWxlY3RlZElkLnNvdXJjZSAmJiBzZWxlY3RlZElkLnRhcmdldFwiPlxuICAgICAgPHRyICpuZ0Zvcj1cImxldCBub2RlIG9mIHVuaXF1ZUZsb3dOb2RlTWFwXCI+XG4gICAgICAgIDx0ZD57eyBub2RlLm5hbWUgPyBub2RlLm5hbWUgOiBub2RlLmlkIH19PC90ZD5cbiAgICAgICAgPHRkPlxuICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiAoY2hhbmdlKT1cInRhc2tNYXBwaW5nW25vZGUuaWRdID0gJGV2ZW50LnRhcmdldC52YWx1ZVwiPlxuICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwibnVsbFwiIGRpc2FibGVkIHNlbGVjdGVkPi0gQ2hvb3NlIFRhcmdldCAtPC9vcHRpb24+XG4gICAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB0YXJnZXRGbG93Tm9kZSBvZiBnZXRGaWx0ZXJlZFRhcmdldEZsb3dOb2RlTWFwKG5vZGUuJHR5cGUpXCJcbiAgICAgICAgICAgICAgW3ZhbHVlXT1cInRhcmdldEZsb3dOb2RlLmlkXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgdGFyZ2V0Rmxvd05vZGUubmFtZSA/IHRhcmdldEZsb3dOb2RlLm5hbWUgOiB0YXJnZXRGbG93Tm9kZS5pZCB9fVxuICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgIDwvdGQ+XG4gICAgICA8L3RyPlxuICAgIDwvdGFibGU+XG4gICAgPGhyIC8+XG4gICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cCBtYi01XCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICAodW5pcXVlRmxvd05vZGVNYXAubGVuZ3RoICE9PSB0YXNrTWFwcGluZ0xlbmd0aCAmJiB1bmlxdWVGbG93Tm9kZU1hcC5sZW5ndGggPiAwKSB8fFxuICAgICAgICAgICFsb2FkZWQuc291cmNlIHx8XG4gICAgICAgICAgIWxvYWRlZC50YXJnZXRcbiAgICAgICAgXCJcbiAgICAgICAgKGNsaWNrKT1cIm1pZ3JhdGVQcm9jZXNzKClcIlxuICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICA+XG4gICAgICAgIE1pZ3JhdGVcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJwcm9jZXNzQ291bnQgIT09IG51bGxcIiBjbGFzcz1cImJhZGdlIGJhZGdlLXBpbGwgYmFkZ2Utc2Vjb25kYXJ5XCI+e3tcbiAgICAgICAgICBwcm9jZXNzQ291bnRcbiAgICAgICAgfX08L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
261
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlncmF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vbWlncmF0aW9uL3NyYy9saWIvbWlncmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vbWlncmF0aW9uL3NyYy9saWIvbWlncmF0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFnQixTQUFTLEVBQVUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7O0FBWTFFLE1BQU0sT0FBTyxrQkFBa0I7SUFvQzdCLFlBQ1UsY0FBOEIsRUFDOUIsTUFBaUIsRUFDakIsWUFBMEI7UUFGMUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDakIsaUJBQVksR0FBWixZQUFZLENBQWM7UUF0QzdCLHVCQUFrQixHQUF3QixFQUFFLENBQUM7UUFDN0MscUJBQWdCLEdBQUc7WUFDeEIsTUFBTSxFQUFFLEVBQUU7WUFDVixNQUFNLEVBQUUsRUFBRTtTQUNYLENBQUM7UUFDSyxlQUFVLEdBQUc7WUFDbEIsTUFBTSxFQUFFLElBQUk7WUFDWixNQUFNLEVBQUUsSUFBSTtTQUNiLENBQUM7UUFDSyxXQUFNLEdBQUc7WUFDZCxNQUFNLEVBQUUsS0FBSztZQUNiLE1BQU0sRUFBRSxLQUFLO1NBQ2QsQ0FBQztRQUNLLFdBQU0sR0FBRztZQUNkLE1BQU0sRUFBRTtnQkFDTixVQUFVLEVBQUUsSUFBSTtnQkFDaEIsT0FBTyxFQUFFLElBQUk7YUFDZDtZQUNELE1BQU0sRUFBRTtnQkFDTixVQUFVLEVBQUUsSUFBSTtnQkFDaEIsT0FBTyxFQUFFLElBQUk7YUFDZDtTQUNGLENBQUM7UUFFSyxpQkFBWSxHQUFrQixJQUFJLENBQUM7UUFDbkMsc0JBQWlCLEdB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QUNGLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNuQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckMsQ0FBQyxFQUNELEdBQUcsQ0FBQyxFQUFFO1lBQ0osSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQztZQUNyRCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QixDQUFDLENBQ0YsQ0FBQztJQUNOLENBQUM7K0dBL1BVLGtCQUFrQjttR0FBbEIsa0JBQWtCLG1tQkM1Qi9CLDJ2SkFxSUE7OzRGRHpHYSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0UsbUJBQW1CO3NJQWlDRCxhQUFhO3NCQUF4QyxTQUFTO3VCQUFDLGVBQWU7Z0JBQ0UsYUFBYTtzQkFBeEMsU0FBUzt1QkFBQyxlQUFlO2dCQUNVLHFCQUFxQjtzQkFBeEQsU0FBUzt1QkFBQyx1QkFBdUI7Z0JBQ0ssd0JBQXdCO3NCQUE5RCxTQUFTO3VCQUFDLDBCQUEwQjtnQkFDRCxxQkFBcUI7c0JBQXhELFNBQVM7dUJBQUMsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIE9uSW5pdCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7UHJvY2Vzc0RlZmluaXRpb24sIFByb2Nlc3NTZXJ2aWNlfSBmcm9tICdAdmFsdGltby9wcm9jZXNzJztcbmltcG9ydCB7TWlncmF0aW9uUHJvY2Vzc0RpYWdyYW1Db21wb25lbnR9IGZyb20gJy4vbWlncmF0aW9uLXByb2Nlc3MtZGlhZ3JhbS9taWdyYXRpb24tcHJvY2Vzcy1kaWFncmFtLmNvbXBvbmVudCc7XG5pbXBvcnQge05HWExvZ2dlcn0gZnJvbSAnbmd4LWxvZ2dlcic7XG5pbXBvcnQge0FsZXJ0U2VydmljZX0gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge0NvbWJvQm94LCBMaXN0SXRlbX0gZnJvbSAnY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tbWlncmF0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21pZ3JhdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21pZ3JhdGlvbi5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBNaWdyYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICBwdWJsaWMgcHJvY2Vzc0RlZmluaXRpb25zOiBQcm9jZXNzRGVmaW5pdGlvbltdID0gW107XG4gIHB1YmxpYyBzZWxlY3RlZFZlcnNpb25zID0ge1xuICAgIHNvdXJjZTogW10sXG4gICAgdGFyZ2V0OiBbXSxcbiAgfTtcbiAgcHVibGljIHNlbGVjdGVkSWQgPSB7XG4gICAgc291cmNlOiBudWxsLFxuICAgIHRhcmdldDogbnVsbCxcbiAgfTtcbiAgcHVibGljIGxvYWRlZCA9IHtcbiAgICBzb3VyY2U6IGZhbHNlLFxuICAgIHRhcmdldDogZmFsc2UsXG4gIH07XG4gIHB1YmxpYyBmaWVsZHMgPSB7XG4gICAgc291cmNlOiB7XG4gICAgICBkZWZpbml0aW9uOiBudWxsLFxuICAgICAgdmVyc2lvbjogbnVsbCxcbiAgICB9LFxuICAgIHRhcmdldDoge1xuICAgICAgZGVmaW5pdGlvbjogbnVsbCxcbiAgICAgIHZlcnNpb246IG51bGwsXG4gICAgfSxcbiAgfTtcblxuICBwdWJsaWMgcHJvY2Vzc0NvdW50OiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgcHVibGljIHVuaXF1ZUZsb3dOb2RlTWFwOiBhbnlbXSA9IFtdO1xuICBwdWJsaWMgdGFza01hcHBpbmc6IGFueSA9IHt9O1xuXG4gIEBWaWV3Q2hpbGQoJ3NvdXJjZURpYWdyYW0nKSBzb3VyY2VEaWFncmFtOiBNaWdyYXRpb25Qcm9jZXNzRGlhZ3JhbUNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgndGFyZ2V0RGlhZ3JhbScpIHRhcmdldERpYWdyYW06IE1pZ3JhdGlvblByb2Nlc3NEaWFncmFtQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdzb3VyY2VWZXJzaW9uQ29tYm9ib3gnKSBzb3VyY2VWZXJzaW9uQ29tYm9ib3g6IENvbWJvQm94O1xuICBAVmlld0NoaWxkKCd0YXJnZXREZWZpbml0aW9uQ29tYm9Cb3gnKSB0YXJnZXREZWZpbml0aW9uQ29tYm9Cb3g6IENvbWJvQm94O1xuICBAVmlld0NoaWxkKCd0YXJnZXRWZXJzaW9uQ29tYm9ib3gnKSB0YXJnZXRWZXJzaW9uQ29tYm9ib3g6IENvbWJvQm94O1xuICBwdWJsaWMgZGlhZ3JhbTogYW55ID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHByb2Nlc3NTZXJ2aWNlOiBQcm9jZXNzU2VydmljZSxcbiAgICBwcml2YXRlIGxvZ2dlcjogTkdYTG9nZ2VyLFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMubG9hZFByb2Nlc3NEZWZpbml0aW9ucygpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuZGlhZ3JhbSA9IHtcbiAgICAgIHNvdXJjZTogdGhpcy5zb3VyY2VEaWFncmFtLFxuICAgICAgdGFyZ2V0OiB0aGlzLnRhcmdldERpYWdyYW0sXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdGFza01hcHBpbmdMZW5ndGgoKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMudGFza01hcHBpbmcpLmxlbmd0aDtcbiAgfVxuXG4gIHB1YmxpYyBzb3VyY2VEZWZpbml0aW9uSXRlbXM6IExpc3RJdGVtW10gPSBbXTtcbiAgcHVibGljIHRhcmdldERlZmluaXRpb25JdGVtczogTGlzdEl0ZW1bXSA9IFtdO1xuICBwdWJsaWMgc291cmNlVmVyc2lvbkl0ZW1zOiBMaXN0SXRlbVtdID0gW107XG4gIHB1YmxpYyB0YXJnZXRWZXJzaW9uSXRlbXM6IExpc3RJdGVtW10gPSBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSB0YXJnZXRGbG93Tm9kZUl0ZW1zTWFwID0gbmV3IE1hcDxzdHJpbmcsIExpc3RJdGVtW10+KCk7XG5cbiAgcHJpdmF0ZSByZWZyZXNoRGVmaW5pdGlvbkl0ZW1zKCk6IHZvaWQge1xuICAgIHRoaXMuc291cmNlRGVmaW5pdGlvbkl0ZW1zID0gdGhpcy5wcm9jZXNzRGVmaW5pdGlvbnMubWFwKHByb2Nlc3NEZWYgPT4gKHtcbiAgICAgIGtleTogcHJvY2Vzc0RlZi5rZXksXG4gICAgICBjb250ZW50OiBwcm9jZXNzRGVmLm5hbWUsXG4gICAgICBzZWxlY3RlZDogdGhpcy5maWVsZHMuc291cmNlLmRlZmluaXRpb24gPT09IHByb2Nlc3NEZWYua2V5LFxuICAgIH0pKTtcbiAgICB0aGlzLnRhcmdldERlZmluaXRpb25JdGVtcyA9IHRoaXMucHJvY2Vzc0RlZmluaXRpb25zLm1hcChwcm9jZXNzRGVmID0+ICh7XG4gICAgICBrZXk6IHByb2Nlc3NEZWYua2V5LFxuICAgICAgY29udGVudDogcHJvY2Vzc0RlZi5uYW1lLFxuICAgICAgc2VsZWN0ZWQ6IHRoaXMuZmllbGRzLnRhcmdldC5kZWZpbml0aW9uID09PSBwcm9jZXNzRGVmLmtleSxcbiAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIHJlZnJlc2hWZXJzaW9uSXRlbXModHlwZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLnNlbGVjdGVkVmVyc2lvbnNbdHlwZV0ubWFwKHByb2Nlc3NWZXIgPT4gKHtcbiAgICAgIGlkOiBwcm9jZXNzVmVyLmlkLFxuICAgICAgY29udGVudDogYCR7cHJvY2Vzc1Zlci52ZXJzaW9ufWAsXG4gICAgICBzZWxlY3RlZDogdGhpcy5maWVsZHNbdHlwZV0udmVyc2lvbiA9PT0gcHJvY2Vzc1Zlci5pZCxcbiAgICB9KSk7XG4gICAgaWYgKHR5cGUgPT09ICdzb3VyY2UnKSB7XG4gICAgICB0aGlzLnNvdXJjZVZlcnNpb25JdGVtcyA9IGl0ZW1zO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRhcmdldFZlcnNpb25JdGVtcyA9IGl0ZW1zO1xuICAgIH1cbiAgfVxuXG4gIGxvYWRQcm9jZXNzRGVmaW5pdGlvbnMoKSB7XG4gICAgdGhpcy5wcm9jZXNzU2VydmljZVxuICAgICAgLmdldFByb2Nlc3NEZWZpbml0aW9ucygpXG4gICAgICAuc3Vic2NyaWJlKChwcm9jZXNzRGVmaW5pdGlvbnM6IFByb2Nlc3NEZWZpbml0aW9uW10pID0+IHtcbiAgICAgICAgdGhpcy5wcm9jZXNzRGVmaW5pdGlvbnMgPSBwcm9jZXNzRGVmaW5pdGlvbnM7XG4gICAgICAgIHRoaXMucmVmcmVzaERlZmluaXRpb25JdGVtcygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb25EZWZpbml0aW9uU2VsZWN0ZWQoc2VsZWN0aW9uOiBMaXN0SXRlbSB8IExpc3RJdGVtW10sIHR5cGU6IHN0cmluZykge1xuICAgIGNvbnN0IGl0ZW0gPSBBcnJheS5pc0FycmF5KHNlbGVjdGlvbikgPyBzZWxlY3Rpb25bMF0gOiBzZWxlY3Rpb247XG4gICAgY29uc3Qga2V5ID0gaXRlbT8ua2V5ID8/IG51bGw7XG5cbiAgICB0aGlzLmxvYWRQcm9jZXNzRGVmaW5pdGlvblZlcnNpb25zKGtleSwgdHlwZSk7XG4gICAgaWYgKHR5cGUgPT09ICdzb3VyY2UnKSB7XG4gICAgICB0aGlzLmxvYWRQcm9jZXNzRGVmaW5pdGlvblZlcnNpb25zKGtleSwgJ3RhcmdldCcpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvblZlcnNpb25TZWxlY3RlZChzZWxlY3Rpb246IExpc3RJdGVtIHwgTGlzdEl0ZW1bXSwgdHlwZTogc3RyaW5nKSB7XG4gICAgY29uc3QgaXRlbSA9IEFycmF5LmlzQXJyYXkoc2VsZWN0aW9uKSA/IHNlbGVjdGlvblswXSA6IHNlbGVjdGlvbjtcbiAgICB0aGlzLmxvYWRQcm9jZXNzKGl0ZW0/LmlkID8/IG51bGwsIHR5cGUpO1xuICB9XG5cbiAgcHVibGljIG9uU291cmNlRGVmaW5pdGlvbkNsZWFyKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuc291cmNlVmVyc2lvbkNvbWJvYm94LmNsZWFySW5wdXQoZXZlbnQpO1xuICAgIHRoaXMudGFyZ2V0RGVmaW5pdGlvbkNvbWJvQm94LmNsZWFySW5wdXQoZXZlbnQpO1xuICAgIHRoaXMudGFyZ2V0VmVyc2lvbkNvbWJvYm94LmNsZWFySW5wdXQoZXZlbnQpO1xuICB9XG5cbiAgcHVibGljIG9uVGFyZ2V0RGVmaW5pdGlvbkNsZWFyKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIHRoaXMudGFyZ2V0VmVyc2lvbkNvbWJvYm94LmNsZWFySW5wdXQoZXZlbnQpO1xuICB9XG5cbiAgcHVibGljIG9uVGFza01hcHBpbmdTZWxlY3RlZChzZWxlY3Rpb246IExpc3RJdGVtIHwgTGlzdEl0ZW1bXSwgbm9kZUlkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBpdGVtID0gQXJyYXkuaXNBcnJheShzZWxlY3Rpb24pID8gc2VsZWN0aW9uWzBdIDogc2VsZWN0aW9uO1xuICAgIHRoaXMudGFza01hcHBpbmdbbm9kZUlkXSA9IGl0ZW0/LmlkID8/IG51bGw7XG4gIH1cblxuICBsb2FkUHJvY2Vzc0RlZmluaXRpb25WZXJzaW9ucyhrZXk6IHN0cmluZyB8IG51bGwsIHR5cGU6IHN0cmluZykge1xuICAgIHRoaXMuZmllbGRzW3R5cGVdLmRlZmluaXRpb24gPSBrZXk7XG4gICAgdGhpcy5zZWxlY3RlZFZlcnNpb25zW3R5cGVdID0gW107XG4gICAgdGhpcy5jbGVhclByb2Nlc3ModHlwZSk7XG4gICAgdGhpcy5yZWZyZXNoRGVmaW5pdGlvbkl0ZW1zKCk7XG4gICAgdGhpcy5yZWZyZXNoVmVyc2lvbkl0ZW1zKHR5cGUpO1xuICAgIGlmIChrZXkpIHtcbiAgICAgIHRoaXMucHJvY2Vzc1NlcnZpY2VcbiAgICAgICAgLmdldFByb2Nlc3NEZWZpbml0aW9uVmVyc2lvbnMoa2V5KVxuICAgICAgICAuc3Vic2NyaWJlKChwcm9jZXNzRGVmaW5pdGlvblZlcnNpb25zOiBQcm9jZXNzRGVmaW5pdGlvbltdKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuZmllbGRzW3R5cGVdLmRlZmluaXRpb24gIT09IGtleSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnNlbGVjdGVkVmVyc2lvbnNbdHlwZV0gPSBwcm9jZXNzRGVmaW5pdGlvblZlcnNpb25zO1xuICAgICAgICAgIHRoaXMucmVmcmVzaFZlcnNpb25JdGVtcyh0eXBlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbG9hZFByb2Nlc3MoaWQ6IHN0cmluZyB8IG51bGwsIHR5cGU6IHN0cmluZykge1xuICAgIHRoaXMuZmllbGRzW3R5cGVdLnZlcnNpb24gPSBpZDtcbiAgICB0aGlzLmNsZWFyUHJvY2Vzcyh0eXBlKTtcbiAgICB0aGlzLnJlZnJlc2hWZXJzaW9uSXRlbXModHlwZSk7XG4gICAgaWYgKGlkKSB7XG4gICAgICB0aGlzLmxvYWRQcm9jZXNzRGVmaW5pdGlvblhNTChpZCwgdHlwZSk7XG4gICAgICBpZiAodHlwZSA9PT0gJ3NvdXJjZScpIHtcbiAgICAgICAgdGhpcy5sb2FkUHJvY2Vzc0NvdW50KGlkKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNsZWFyUHJvY2Vzcyh0eXBlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmxvYWRlZFt0eXBlXSA9IGZhbHNlO1xuICAgIHRoaXMuc2VsZWN0ZWRJZFt0eXBlXSA9IG51bGw7XG4gICAgdGhpcy5kaWFncmFtW3R5cGVdLmNsZWFyKCk7XG4gICAgaWYgKHR5cGUgPT09ICdzb3VyY2UnKSB7XG4gICAgICB0aGlzLnByb2Nlc3NDb3VudCA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgbG9hZFByb2Nlc3NEZWZpbml0aW9uWE1MKGlkOiBzdHJpbmcsIHR5cGU6IHN0cmluZykge1xuICAgIHRoaXMucHJvY2Vzc1NlcnZpY2UuZ2V0UHJvY2Vzc0RlZmluaXRpb25YbWwoaWQpLnN1YnNjcmliZSh4bWwgPT4ge1xuICAgICAgdGhpcy5kaWFncmFtW3R5cGVdLmxvYWRYbWwoeG1sWydicG1uMjBYbWwnXSk7XG4gICAgICB0aGlzLnNlbGVjdGVkSWRbdHlwZV0gPSBpZDtcbiAgICB9KTtcbiAgfVxuXG4gIGxvYWRQcm9jZXNzQ291bnQoaWQ6IHN0cmluZykge1xuICAgIHRoaXMucHJvY2Vzc1NlcnZpY2UuZ2V0UHJvY2Vzc0NvdW50KGlkKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgdGhpcy5wcm9jZXNzQ291bnQgPSByZXNwb25zZS5jb3VudDtcbiAgICB9KTtcbiAgfVxuXG4gIHNldFVuaXF1ZUZsb3dOb2RlTWFwKCkge1xuICAgIHRoaXMudW5pcXVlRmxvd05vZGVNYXAgPSBbXTtcbiAgICBjb25zdCBzb3VyY2VGbG93Tm9kZU1hcCA9IHRoaXMuc291cmNlRGlhZ3JhbS5mbG93Tm9kZU1hcDtcbiAgICBjb25zdCB0YXJnZXRGbG93Tm9kZU1hcCA9IHRoaXMudGFyZ2V0RGlhZ3JhbS5mbG93Tm9kZU1hcDtcblxuICAgIGlmIChzb3VyY2VGbG93Tm9kZU1hcCAhPSBudWxsICYmIHRhcmdldEZsb3dOb2RlTWFwICE9IG51bGwpIHtcbiAgICAgIHRoaXMudW5pcXVlRmxvd05vZGVNYXAgPSBzb3VyY2VGbG93Tm9kZU1hcC5maWx0ZXIoXG4gICAgICAgIHNvdXJjZUZsb3dOb2RlID0+XG4gICAgICAgICAgIXRhcmdldEZsb3dOb2RlTWFwLnNvbWUoXG4gICAgICAgICAgICB0YXJnZXRGbG93Tm9kZSA9PlxuICAgICAgICAgICAgICBzb3VyY2VGbG93Tm9kZS5pZCA9PT0gdGFyZ2V0Rmxvd05vZGUuaWQgJiZcbiAgICAgICAgICAgICAgc291cmNlRmxvd05vZGUuJHR5cGUgPT09IHRhcmdldEZsb3dOb2RlLiR0eXBlXG4gICAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBnZXRGaWx0ZXJlZFRhcmdldEZsb3dOb2RlTWFwKGZsb3dOb2RlVHlwZSkge1xuICAgIGNvbnN0IHRhcmdldEZsb3dOb2RlTWFwID0gdGhpcy50YXJnZXREaWFncmFtLmZsb3dOb2RlTWFwO1xuICAgIHJldHVybiB0YXJnZXRGbG93Tm9kZU1hcC5maWx0ZXIoZnVuY3Rpb24gKGZsb3dOb2RlKSB7XG4gICAgICByZXR1cm4gZmxvd05vZGUuJHR5cGUgPT09IGZsb3dOb2RlVHlwZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRGaWx0ZXJlZFRhcmdldEZsb3dOb2RlTWFwSXRlbXMobm9kZSk6IExpc3RJdGVtW10ge1xuICAgIGlmICghdGhpcy50YXJnZXRGbG93Tm9kZUl0ZW1zTWFwLmhhcyhub2RlLmlkKSkge1xuICAgICAgdGhpcy50YXJnZXRGbG93Tm9kZUl0ZW1zTWFwLnNldChcbiAgICAgICAgbm9kZS5pZCxcbiAgICAgICAgdGhpcy5nZXRGaWx0ZXJlZFRhcmdldEZsb3dOb2RlTWFwKG5vZGUuJHR5cGUpLm1hcCh0YXJnZXRGbG93Tm9kZSA9PiAoe1xuICAgICAgICAgIGlkOiB0YXJnZXRGbG93Tm9kZS5pZCxcbiAgICAgICAgICBjb250ZW50OiB0YXJnZXRGbG93Tm9kZS5uYW1lIHx8IHRhcmdldEZsb3dOb2RlLmlkLFxuICAgICAgICAgIHNlbGVjdGVkOiB0aGlzLnRhc2tNYXBwaW5nW25vZGUuaWRdID09PSB0YXJnZXRGbG93Tm9kZS5pZCxcbiAgICAgICAgfSkpXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy50YXJnZXRGbG93Tm9kZUl0ZW1zTWFwLmdldChub2RlLmlkKTtcbiAgfVxuXG4gIGRpYWdyYW1Mb2FkZWQoZGlhZ3JhbU5hbWU6IHN0cmluZykge1xuICAgIHRoaXMubG9hZGVkW2RpYWdyYW1OYW1lXSA9IHRydWU7XG4gICAgaWYgKHRoaXMubG9hZGVkLnNvdXJjZSAmJiB0aGlzLmxvYWRlZC50YXJnZXQpIHtcbiAgICAgIHRoaXMudGFza01hcHBpbmcgPSB7fTtcbiAgICAgIHRoaXMudGFyZ2V0Rmxvd05vZGVJdGVtc01hcC5jbGVhcigpO1xuICAgICAgdGhpcy5zZXRVbmlxdWVGbG93Tm9kZU1hcCgpO1xuICAgIH1cbiAgfVxuXG4gIG1pZ3JhdGVQcm9jZXNzKCkge1xuICAgIHRoaXMucHJvY2Vzc1NlcnZpY2VcbiAgICAgIC5taWdyYXRlUHJvY2Vzcyh0aGlzLnNlbGVjdGVkSWQuc291cmNlLCB0aGlzLnNlbGVjdGVkSWQudGFyZ2V0LCB0aGlzLnRhc2tNYXBwaW5nKVxuICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgcmVzID0+IHtcbiAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5zdWNjZXNzKCdQcm9jZXNzIHN1Y2Nlc3NmdWxseSBtaWdyYXRlZCEnKTtcbiAgICAgICAgICB0aGlzLmNsZWFyUHJvY2Vzcygnc291cmNlJyk7XG4gICAgICAgICAgdGhpcy5jbGVhclByb2Nlc3MoJ3RhcmdldCcpO1xuICAgICAgICAgIHRoaXMuZmllbGRzID0ge1xuICAgICAgICAgICAgc291cmNlOiB7XG4gICAgICAgICAgICAgIGRlZmluaXRpb246IG51bGwsXG4gICAgICAgICAgICAgIHZlcnNpb246IG51bGwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGFyZ2V0OiB7XG4gICAgICAgICAgICAgIGRlZmluaXRpb246IG51bGwsXG4gICAgICAgICAgICAgIHZlcnNpb246IG51bGwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH07XG4gICAgICAgICAgdGhpcy5yZWZyZXNoRGVmaW5pdGlvbkl0ZW1zKCk7XG4gICAgICAgICAgdGhpcy5yZWZyZXNoVmVyc2lvbkl0ZW1zKCdzb3VyY2UnKTtcbiAgICAgICAgICB0aGlzLnJlZnJlc2hWZXJzaW9uSXRlbXMoJ3RhcmdldCcpO1xuICAgICAgICB9LFxuICAgICAgICBlcnIgPT4ge1xuICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmVycm9yKCdQcm9jZXNzIG1pZ3JhdGlvbiBmYWlsZWQhJyk7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoZXJyKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48ZGl2IGNsYXNzPVwibWFpbi1jb250ZW50XCI+XG4gIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cbiAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTVcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFsZXJ0IGFsZXJ0LXdhcm5pbmcgcGwtMiBwbHItMlwiIHJvbGU9XCJhbGVydFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uXCI+PHNwYW4gY2xhc3M9XCJtZGkgbWRpLWFsZXJ0LXRyaWFuZ2xlXCI+PC9zcGFuPjwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXNzYWdlXCIgW2lubmVySFRNTF09XCInUHJvY2VzcyBtaWdyYXRpb24gd2FybmluZycgfCB0cmFuc2xhdGVcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTVcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNFwiPlxuICAgICAgICA8Y2RzLWNvbWJvLWJveFxuICAgICAgICAgIFtkcm9wVXBdPVwiZmFsc2VcIlxuICAgICAgICAgIFthcHBlbmRJbmxpbmVdPVwidHJ1ZVwiXG4gICAgICAgICAgW2xhYmVsXT1cIidTb3VyY2UgRGVmaW5pdGlvbicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInLSAnICsgKCdTb3VyY2UgRGVmaW5pdGlvbicgfCB0cmFuc2xhdGUpICsgJyAtJ1wiXG4gICAgICAgICAgW2l0ZW1zXT1cInNvdXJjZURlZmluaXRpb25JdGVtc1wiXG4gICAgICAgICAgKHNlbGVjdGVkKT1cIm9uRGVmaW5pdGlvblNlbGVjdGVkKCRldmVudCwgJ3NvdXJjZScpXCJcbiAgICAgICAgICAoY2xlYXIpPVwib25Tb3VyY2VEZWZpbml0aW9uQ2xlYXIoJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgICA8Y2RzLWRyb3Bkb3duLWxpc3Q+PC9jZHMtZHJvcGRvd24tbGlzdD5cbiAgICAgICAgPC9jZHMtY29tYm8tYm94PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTJcIj5cbiAgICAgICAgPGNkcy1jb21iby1ib3hcbiAgICAgICAgICAjc291cmNlVmVyc2lvbkNvbWJvYm94XG4gICAgICAgICAgW2Ryb3BVcF09XCJmYWxzZVwiXG4gICAgICAgICAgW2FwcGVuZElubGluZV09XCJ0cnVlXCJcbiAgICAgICAgICBbbGFiZWxdPVwiJ1NvdXJjZSBEZWZpbml0aW9uJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIictICcgKyAoJ1NvdXJjZSBWZXJzaW9uJyB8IHRyYW5zbGF0ZSkgKyAnIC0nXCJcbiAgICAgICAgICBbaXRlbXNdPVwic291cmNlVmVyc2lvbkl0ZW1zXCJcbiAgICAgICAgICAoc2VsZWN0ZWQpPVwib25WZXJzaW9uU2VsZWN0ZWQoJGV2ZW50LCAnc291cmNlJylcIlxuICAgICAgICA+XG4gICAgICAgICAgPGNkcy1kcm9wZG93bi1saXN0PjwvY2RzLWRyb3Bkb3duLWxpc3Q+XG4gICAgICAgIDwvY2RzLWNvbWJvLWJveD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC00XCI+XG4gICAgICAgIDxjZHMtY29tYm8tYm94XG4gICAgICAgICAgI3RhcmdldERlZmluaXRpb25Db21ib0JveFxuICAgICAgICAgIFtkcm9wVXBdPVwiZmFsc2VcIlxuICAgICAgICAgIFthcHBlbmRJbmxpbmVdPVwidHJ1ZVwiXG4gICAgICAgICAgW2xhYmVsXT1cIidUYXJnZXQgRGVmaW5pdGlvbicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInLSAnICsgKCdUYXJnZXQgRGVmaW5pdGlvbicgfCB0cmFuc2xhdGUpICsgJyAtJ1wiXG4gICAgICAgICAgW2l0ZW1zXT1cInRhcmdldERlZmluaXRpb25JdGVtc1wiXG4gICAgICAgICAgKHNlbGVjdGVkKT1cIm9uRGVmaW5pdGlvblNlbGVjdGVkKCRldmVudCwgJ3RhcmdldCcpXCJcbiAgICAgICAgICAoY2xlYXIpPVwib25UYXJnZXREZWZpbml0aW9uQ2xlYXIoJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgICA8Y2RzLWRyb3Bkb3duLWxpc3Q+PC9jZHMtZHJvcGRvd24tbGlzdD5cbiAgICAgICAgPC9jZHMtY29tYm8tYm94PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTJcIj5cbiAgICAgICAgPGNkcy1jb21iby1ib3hcbiAgICAgICAgICAjdGFyZ2V0VmVyc2lvbkNvbWJvYm94XG4gICAgICAgICAgW2Ryb3BVcF09XCJmYWxzZVwiXG4gICAgICAgICAgW2FwcGVuZElubGluZV09XCJ0cnVlXCJcbiAgICAgICAgICBbbGFiZWxdPVwiJ1RhcmdldCBWZXJzaW9uJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIictICcgKyAoJ1RhcmdldCBWZXJzaW9uJyB8IHRyYW5zbGF0ZSkgKyAnIC0nXCJcbiAgICAgICAgICBbaXRlbXNdPVwidGFyZ2V0VmVyc2lvbkl0ZW1zXCJcbiAgICAgICAgICAoc2VsZWN0ZWQpPVwib25WZXJzaW9uU2VsZWN0ZWQoJGV2ZW50LCAndGFyZ2V0JylcIlxuICAgICAgICA+XG4gICAgICAgICAgPGNkcy1kcm9wZG93bi1saXN0PjwvY2RzLWRyb3Bkb3duLWxpc3Q+XG4gICAgICAgIDwvY2RzLWNvbWJvLWJveD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cInJvdyBtYi01XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cbiAgICAgICAgPHZhbHRpbW8tbWlncmF0aW9uLXByb2Nlc3MtZGlhZ3JhbVxuICAgICAgICAgIG5hbWU9XCJzb3VyY2VcIlxuICAgICAgICAgIChsb2FkZWQpPVwiZGlhZ3JhbUxvYWRlZCgkZXZlbnQpXCJcbiAgICAgICAgICAjc291cmNlRGlhZ3JhbVxuICAgICAgICA+PC92YWx0aW1vLW1pZ3JhdGlvbi1wcm9jZXNzLWRpYWdyYW0+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxuICAgICAgICA8dmFsdGltby1taWdyYXRpb24tcHJvY2Vzcy1kaWFncmFtXG4gICAgICAgICAgbmFtZT1cInRhcmdldFwiXG4gICAgICAgICAgKGxvYWRlZCk9XCJkaWFncmFtTG9hZGVkKCRldmVudClcIlxuICAgICAgICAgICN0YXJnZXREaWFncmFtXG4gICAgICAgID48L3ZhbHRpbW8tbWlncmF0aW9uLXByb2Nlc3MtZGlhZ3JhbT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLXN0cmlwZWQgbWItNVwiICpuZ0lmPVwic2VsZWN0ZWRJZC5zb3VyY2UgJiYgc2VsZWN0ZWRJZC50YXJnZXRcIj5cbiAgICAgIDx0ciAqbmdGb3I9XCJsZXQgbm9kZSBvZiB1bmlxdWVGbG93Tm9kZU1hcFwiPlxuICAgICAgICA8dGQ+e3sgbm9kZS5uYW1lID8gbm9kZS5uYW1lIDogbm9kZS5pZCB9fTwvdGQ+XG4gICAgICAgIDx0ZD5cbiAgICAgICAgICA8Y2RzLWNvbWJvLWJveFxuICAgICAgICAgICAgW2Ryb3BVcF09XCJmYWxzZVwiXG4gICAgICAgICAgICBbYXBwZW5kSW5saW5lXT1cInRydWVcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIictICcgKyAoJ0Nob29zZSBUYXJnZXQnIHwgdHJhbnNsYXRlKSArICcgLSdcIlxuICAgICAgICAgICAgW2l0ZW1zXT1cImdldEZpbHRlcmVkVGFyZ2V0Rmxvd05vZGVNYXBJdGVtcyhub2RlKVwiXG4gICAgICAgICAgICAoc2VsZWN0ZWQpPVwib25UYXNrTWFwcGluZ1NlbGVjdGVkKCRldmVudCwgbm9kZS5pZClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxjZHMtZHJvcGRvd24tbGlzdD48L2Nkcy1kcm9wZG93bi1saXN0PlxuICAgICAgICAgIDwvY2RzLWNvbWJvLWJveD5cbiAgICAgICAgPC90ZD5cbiAgICAgIDwvdHI+XG4gICAgPC90YWJsZT5cbiAgICA8aHIgLz5cbiAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwIG1iLTVcIj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICAgICh1bmlxdWVGbG93Tm9kZU1hcC5sZW5ndGggIT09IHRhc2tNYXBwaW5nTGVuZ3RoICYmIHVuaXF1ZUZsb3dOb2RlTWFwLmxlbmd0aCA+IDApIHx8XG4gICAgICAgICAgIWxvYWRlZC5zb3VyY2UgfHxcbiAgICAgICAgICAhbG9hZGVkLnRhcmdldFxuICAgICAgICBcIlxuICAgICAgICAoY2xpY2spPVwibWlncmF0ZVByb2Nlc3MoKVwiXG4gICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgID5cbiAgICAgICAgTWlncmF0ZVxuICAgICAgICA8c3BhbiAqbmdJZj1cInByb2Nlc3NDb3VudCAhPT0gbnVsbFwiIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtcGlsbCBiYWRnZS1zZWNvbmRhcnlcIj57e1xuICAgICAgICAgIHByb2Nlc3NDb3VudFxuICAgICAgICB9fTwvc3Bhbj5cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -21,6 +21,7 @@ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
21
21
  import { MigrationProcessDiagramComponent } from './migration-process-diagram/migration-process-diagram.component';
22
22
  import { WidgetModule } from '@valtimo/components';
23
23
  import { TranslateModule } from '@ngx-translate/core';
24
+ import { ComboBoxModule } from 'carbon-components-angular';
24
25
  import * as i0 from "@angular/core";
25
26
  export class MigrationModule {
26
27
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MigrationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
@@ -29,13 +30,15 @@ export class MigrationModule {
29
30
  ReactiveFormsModule,
30
31
  WidgetModule,
31
32
  FormsModule,
32
- TranslateModule], exports: [MigrationComponent] }); }
33
+ TranslateModule,
34
+ ComboBoxModule], exports: [MigrationComponent] }); }
33
35
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MigrationModule, imports: [CommonModule,
34
36
  MigrationRoutingModule,
35
37
  ReactiveFormsModule,
36
38
  WidgetModule,
37
39
  FormsModule,
38
- TranslateModule] }); }
40
+ TranslateModule,
41
+ ComboBoxModule] }); }
39
42
  }
40
43
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MigrationModule, decorators: [{
41
44
  type: NgModule,
@@ -48,8 +51,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
48
51
  WidgetModule,
49
52
  FormsModule,
50
53
  TranslateModule,
54
+ ComboBoxModule,
51
55
  ],
52
56
  exports: [MigrationComponent],
53
57
  }]
54
58
  }] });
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlncmF0aW9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vbWlncmF0aW9uL3NyYy9saWIvbWlncmF0aW9uLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDbEUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxXQUFXLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQUMsZ0NBQWdDLEVBQUMsTUFBTSxpRUFBaUUsQ0FBQztBQUNqSCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDOztBQWNwRCxNQUFNLE9BQU8sZUFBZTsrR0FBZixlQUFlO2dIQUFmLGVBQWUsaUJBWFgsa0JBQWtCLEVBQUUsZ0NBQWdDLGFBRWpFLFlBQVk7WUFDWixzQkFBc0I7WUFDdEIsbUJBQW1CO1lBQ25CLFlBQVk7WUFDWixXQUFXO1lBQ1gsZUFBZSxhQUVQLGtCQUFrQjtnSEFFakIsZUFBZSxZQVR4QixZQUFZO1lBQ1osc0JBQXNCO1lBQ3RCLG1CQUFtQjtZQUNuQixZQUFZO1lBQ1osV0FBVztZQUNYLGVBQWU7OzRGQUlOLGVBQWU7a0JBWjNCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsa0JBQWtCLEVBQUUsZ0NBQWdDLENBQUM7b0JBQ3BFLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLHNCQUFzQjt3QkFDdEIsbUJBQW1CO3dCQUNuQixZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsZUFBZTtxQkFDaEI7b0JBQ0QsT0FBTyxFQUFFLENBQUMsa0JBQWtCLENBQUM7aUJBQzlCIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01pZ3JhdGlvbkNvbXBvbmVudH0gZnJvbSAnLi9taWdyYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7TWlncmF0aW9uUm91dGluZ01vZHVsZX0gZnJvbSAnLi9taWdyYXRpb24tcm91dGluZy5tb2R1bGUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0Zvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge01pZ3JhdGlvblByb2Nlc3NEaWFncmFtQ29tcG9uZW50fSBmcm9tICcuL21pZ3JhdGlvbi1wcm9jZXNzLWRpYWdyYW0vbWlncmF0aW9uLXByb2Nlc3MtZGlhZ3JhbS5jb21wb25lbnQnO1xuaW1wb3J0IHtXaWRnZXRNb2R1bGV9IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGV9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtNaWdyYXRpb25Db21wb25lbnQsIE1pZ3JhdGlvblByb2Nlc3NEaWFncmFtQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNaWdyYXRpb25Sb3V0aW5nTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgV2lkZ2V0TW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgXSxcbiAgZXhwb3J0czogW01pZ3JhdGlvbkNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIE1pZ3JhdGlvbk1vZHVsZSB7fVxuIl19
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlncmF0aW9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vbWlncmF0aW9uL3NyYy9saWIvbWlncmF0aW9uLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDbEUsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxXQUFXLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQUMsZ0NBQWdDLEVBQUMsTUFBTSxpRUFBaUUsQ0FBQztBQUNqSCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQzs7QUFlekQsTUFBTSxPQUFPLGVBQWU7K0dBQWYsZUFBZTtnSEFBZixlQUFlLGlCQVpYLGtCQUFrQixFQUFFLGdDQUFnQyxhQUVqRSxZQUFZO1lBQ1osc0JBQXNCO1lBQ3RCLG1CQUFtQjtZQUNuQixZQUFZO1lBQ1osV0FBVztZQUNYLGVBQWU7WUFDZixjQUFjLGFBRU4sa0JBQWtCO2dIQUVqQixlQUFlLFlBVnhCLFlBQVk7WUFDWixzQkFBc0I7WUFDdEIsbUJBQW1CO1lBQ25CLFlBQVk7WUFDWixXQUFXO1lBQ1gsZUFBZTtZQUNmLGNBQWM7OzRGQUlMLGVBQWU7a0JBYjNCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsa0JBQWtCLEVBQUUsZ0NBQWdDLENBQUM7b0JBQ3BFLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLHNCQUFzQjt3QkFDdEIsbUJBQW1CO3dCQUNuQixZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsZUFBZTt3QkFDZixjQUFjO3FCQUNmO29CQUNELE9BQU8sRUFBRSxDQUFDLGtCQUFrQixDQUFDO2lCQUM5QiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7TmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNaWdyYXRpb25Db21wb25lbnR9IGZyb20gJy4vbWlncmF0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQge01pZ3JhdGlvblJvdXRpbmdNb2R1bGV9IGZyb20gJy4vbWlncmF0aW9uLXJvdXRpbmcubW9kdWxlJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtNaWdyYXRpb25Qcm9jZXNzRGlhZ3JhbUNvbXBvbmVudH0gZnJvbSAnLi9taWdyYXRpb24tcHJvY2Vzcy1kaWFncmFtL21pZ3JhdGlvbi1wcm9jZXNzLWRpYWdyYW0uY29tcG9uZW50JztcbmltcG9ydCB7V2lkZ2V0TW9kdWxlfSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7Q29tYm9Cb3hNb2R1bGV9IGZyb20gJ2NhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXInO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtNaWdyYXRpb25Db21wb25lbnQsIE1pZ3JhdGlvblByb2Nlc3NEaWFncmFtQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNaWdyYXRpb25Sb3V0aW5nTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgV2lkZ2V0TW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBDb21ib0JveE1vZHVsZSxcbiAgXSxcbiAgZXhwb3J0czogW01pZ3JhdGlvbkNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIE1pZ3JhdGlvbk1vZHVsZSB7fVxuIl19
@@ -6,15 +6,17 @@ import * as i3 from '@valtimo/components';
6
6
  import { WidgetModule } from '@valtimo/components';
7
7
  import * as i4 from '@angular/common';
8
8
  import { CommonModule } from '@angular/common';
9
- import * as i5 from '@angular/forms';
10
- import { ReactiveFormsModule, FormsModule } from '@angular/forms';
9
+ import * as i5 from 'carbon-components-angular';
10
+ import { ComboBoxModule } from 'carbon-components-angular';
11
+ import * as i6 from 'carbon-components-angular/dropdown';
11
12
  import BpmnJS from 'bpmn-js/dist/bpmn-navigated-viewer.production.min.js';
12
- import * as i7 from '@ngx-translate/core';
13
+ import * as i8 from '@ngx-translate/core';
13
14
  import { TranslateModule } from '@ngx-translate/core';
14
15
  import * as i1$2 from '@angular/router';
15
16
  import { RouterModule } from '@angular/router';
16
17
  import { AuthGuardService } from '@valtimo/security';
17
18
  import { ROLE_ADMIN } from '@valtimo/config';
19
+ import { ReactiveFormsModule, FormsModule } from '@angular/forms';
18
20
 
19
21
  /*
20
22
  * Copyright 2015-2024 Ritense BV, the Netherlands.
@@ -159,6 +161,11 @@ class MigrationComponent {
159
161
  this.uniqueFlowNodeMap = [];
160
162
  this.taskMapping = {};
161
163
  this.diagram = null;
164
+ this.sourceDefinitionItems = [];
165
+ this.targetDefinitionItems = [];
166
+ this.sourceVersionItems = [];
167
+ this.targetVersionItems = [];
168
+ this.targetFlowNodeItemsMap = new Map();
162
169
  }
163
170
  ngOnInit() {
164
171
  this.loadProcessDefinitions();
@@ -172,28 +179,85 @@ class MigrationComponent {
172
179
  get taskMappingLength() {
173
180
  return Object.keys(this.taskMapping).length;
174
181
  }
182
+ refreshDefinitionItems() {
183
+ this.sourceDefinitionItems = this.processDefinitions.map(processDef => ({
184
+ key: processDef.key,
185
+ content: processDef.name,
186
+ selected: this.fields.source.definition === processDef.key,
187
+ }));
188
+ this.targetDefinitionItems = this.processDefinitions.map(processDef => ({
189
+ key: processDef.key,
190
+ content: processDef.name,
191
+ selected: this.fields.target.definition === processDef.key,
192
+ }));
193
+ }
194
+ refreshVersionItems(type) {
195
+ const items = this.selectedVersions[type].map(processVer => ({
196
+ id: processVer.id,
197
+ content: `${processVer.version}`,
198
+ selected: this.fields[type].version === processVer.id,
199
+ }));
200
+ if (type === 'source') {
201
+ this.sourceVersionItems = items;
202
+ }
203
+ else {
204
+ this.targetVersionItems = items;
205
+ }
206
+ }
175
207
  loadProcessDefinitions() {
176
208
  this.processService
177
209
  .getProcessDefinitions()
178
210
  .subscribe((processDefinitions) => {
179
211
  this.processDefinitions = processDefinitions;
212
+ this.refreshDefinitionItems();
180
213
  });
181
214
  }
215
+ onDefinitionSelected(selection, type) {
216
+ const item = Array.isArray(selection) ? selection[0] : selection;
217
+ const key = item?.key ?? null;
218
+ this.loadProcessDefinitionVersions(key, type);
219
+ if (type === 'source') {
220
+ this.loadProcessDefinitionVersions(key, 'target');
221
+ }
222
+ }
223
+ onVersionSelected(selection, type) {
224
+ const item = Array.isArray(selection) ? selection[0] : selection;
225
+ this.loadProcess(item?.id ?? null, type);
226
+ }
227
+ onSourceDefinitionClear(event) {
228
+ this.sourceVersionCombobox.clearInput(event);
229
+ this.targetDefinitionComboBox.clearInput(event);
230
+ this.targetVersionCombobox.clearInput(event);
231
+ }
232
+ onTargetDefinitionClear(event) {
233
+ this.targetVersionCombobox.clearInput(event);
234
+ }
235
+ onTaskMappingSelected(selection, nodeId) {
236
+ const item = Array.isArray(selection) ? selection[0] : selection;
237
+ this.taskMapping[nodeId] = item?.id ?? null;
238
+ }
182
239
  loadProcessDefinitionVersions(key, type) {
183
240
  this.fields[type].definition = key;
184
241
  this.selectedVersions[type] = [];
185
242
  this.clearProcess(type);
243
+ this.refreshDefinitionItems();
244
+ this.refreshVersionItems(type);
186
245
  if (key) {
187
246
  this.processService
188
247
  .getProcessDefinitionVersions(key)
189
248
  .subscribe((processDefinitionVersions) => {
249
+ if (this.fields[type].definition !== key) {
250
+ return;
251
+ }
190
252
  this.selectedVersions[type] = processDefinitionVersions;
253
+ this.refreshVersionItems(type);
191
254
  });
192
255
  }
193
256
  }
194
257
  loadProcess(id, type) {
195
258
  this.fields[type].version = id;
196
259
  this.clearProcess(type);
260
+ this.refreshVersionItems(type);
197
261
  if (id) {
198
262
  this.loadProcessDefinitionXML(id, type);
199
263
  if (type === 'source') {
@@ -235,10 +299,21 @@ class MigrationComponent {
235
299
  return flowNode.$type === flowNodeType;
236
300
  });
237
301
  }
302
+ getFilteredTargetFlowNodeMapItems(node) {
303
+ if (!this.targetFlowNodeItemsMap.has(node.id)) {
304
+ this.targetFlowNodeItemsMap.set(node.id, this.getFilteredTargetFlowNodeMap(node.$type).map(targetFlowNode => ({
305
+ id: targetFlowNode.id,
306
+ content: targetFlowNode.name || targetFlowNode.id,
307
+ selected: this.taskMapping[node.id] === targetFlowNode.id,
308
+ })));
309
+ }
310
+ return this.targetFlowNodeItemsMap.get(node.id);
311
+ }
238
312
  diagramLoaded(diagramName) {
239
313
  this.loaded[diagramName] = true;
240
314
  if (this.loaded.source && this.loaded.target) {
241
315
  this.taskMapping = {};
316
+ this.targetFlowNodeItemsMap.clear();
242
317
  this.setUniqueFlowNodeMap();
243
318
  }
244
319
  }
@@ -259,23 +334,35 @@ class MigrationComponent {
259
334
  version: null,
260
335
  },
261
336
  };
337
+ this.refreshDefinitionItems();
338
+ this.refreshVersionItems('source');
339
+ this.refreshVersionItems('target');
262
340
  }, err => {
263
341
  this.alertService.error('Process migration failed!');
264
342
  this.logger.debug(err);
265
343
  });
266
344
  }
267
345
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MigrationComponent, deps: [{ token: i1$1.ProcessService }, { token: i1.NGXLogger }, { token: i3.AlertService }], target: i0.ɵɵFactoryTarget.Component }); }
268
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MigrationComponent, selector: "valtimo-migration", viewQueries: [{ propertyName: "sourceDiagram", first: true, predicate: ["sourceDiagram"], descendants: true }, { propertyName: "targetDiagram", first: true, predicate: ["targetDiagram"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content\">\n <div class=\"container-fluid\">\n <div class=\"row mb-5\">\n <div class=\"col-12\">\n <div class=\"alert alert-warning pl-2 plr-2\" role=\"alert\">\n <div class=\"icon\"><span class=\"mdi mdi-alert-triangle\"></span></div>\n <div class=\"message\" [innerHTML]=\"'Process migration warning' | translate\"></div>\n </div>\n </div>\n </div>\n <div class=\"row mb-5\">\n <div class=\"col-4\">\n <label for=\"sourceDef\">Source Definition</label>\n <select\n class=\"form-control\"\n id=\"sourceDef\"\n [ngModel]=\"fields.source.definition\"\n (ngModelChange)=\"loadProcessDefinitionVersions($event, 'source')\"\n >\n <option [ngValue]=\"null\" selected>- Source Definition -</option>\n <option *ngFor=\"let processDef of processDefinitions\" [ngValue]=\"processDef.key\">\n {{ processDef.name }}\n </option>\n </select>\n </div>\n <div class=\"col-2\">\n <label for=\"sourceVer\">Source Version</label>\n <select\n class=\"form-control\"\n id=\"sourceVer\"\n [ngModel]=\"fields.source.version\"\n (ngModelChange)=\"loadProcess($event, 'source')\"\n >\n <option [ngValue]=\"null\" selected>- Source Version -</option>\n <option *ngFor=\"let processVer of selectedVersions.source\" [ngValue]=\"processVer.id\">\n {{ processVer.version }}\n </option>\n </select>\n </div>\n <div class=\"col-4\">\n <label for=\"targetDef\">Target Definition</label>\n <select\n class=\"form-control\"\n id=\"targetDef\"\n [ngModel]=\"fields.target.definition\"\n (ngModelChange)=\"loadProcessDefinitionVersions($event, 'target')\"\n >\n <option [ngValue]=\"null\" selected>- Target Definition -</option>\n <option *ngFor=\"let processDef of processDefinitions\" [ngValue]=\"processDef.key\">\n {{ processDef.name }}\n </option>\n </select>\n </div>\n <div class=\"col-2\">\n <label for=\"targetVer\">Target Version</label>\n <select\n class=\"form-control\"\n id=\"targetVer\"\n [ngModel]=\"fields.target.version\"\n (ngModelChange)=\"loadProcess($event, 'target')\"\n >\n <option [ngValue]=\"null\" selected>- Target Version -</option>\n <option *ngFor=\"let processVer of selectedVersions.target\" [ngValue]=\"processVer.id\">\n {{ processVer.version }}\n </option>\n </select>\n </div>\n </div>\n\n <div class=\"row mb-5\">\n <div class=\"col-6\">\n <valtimo-migration-process-diagram\n name=\"source\"\n (loaded)=\"diagramLoaded($event)\"\n #sourceDiagram\n ></valtimo-migration-process-diagram>\n </div>\n <div class=\"col-6\">\n <valtimo-migration-process-diagram\n name=\"target\"\n (loaded)=\"diagramLoaded($event)\"\n #targetDiagram\n ></valtimo-migration-process-diagram>\n </div>\n </div>\n <table class=\"table table-striped mb-5\" *ngIf=\"selectedId.source && selectedId.target\">\n <tr *ngFor=\"let node of uniqueFlowNodeMap\">\n <td>{{ node.name ? node.name : node.id }}</td>\n <td>\n <select class=\"form-control\" (change)=\"taskMapping[node.id] = $event.target.value\">\n <option [value]=\"null\" disabled selected>- Choose Target -</option>\n <option\n *ngFor=\"let targetFlowNode of getFilteredTargetFlowNodeMap(node.$type)\"\n [value]=\"targetFlowNode.id\"\n >\n {{ targetFlowNode.name ? targetFlowNode.name : targetFlowNode.id }}\n </option>\n </select>\n </td>\n </tr>\n </table>\n <hr />\n <div class=\"btn-group mb-5\">\n <button\n [disabled]=\"\n (uniqueFlowNodeMap.length !== taskMappingLength && uniqueFlowNodeMap.length > 0) ||\n !loaded.source ||\n !loaded.target\n \"\n (click)=\"migrateProcess()\"\n class=\"btn btn-primary\"\n >\n Migrate\n <span *ngIf=\"processCount !== null\" class=\"badge badge-pill badge-secondary\">{{\n processCount\n }}</span>\n </button>\n </div>\n </div>\n</div>\n", styles: ["/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: MigrationProcessDiagramComponent, selector: "valtimo-migration-process-diagram", inputs: ["name"], outputs: ["loaded"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] }); }
346
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MigrationComponent, selector: "valtimo-migration", viewQueries: [{ propertyName: "sourceDiagram", first: true, predicate: ["sourceDiagram"], descendants: true }, { propertyName: "targetDiagram", first: true, predicate: ["targetDiagram"], descendants: true }, { propertyName: "sourceVersionCombobox", first: true, predicate: ["sourceVersionCombobox"], descendants: true }, { propertyName: "targetDefinitionComboBox", first: true, predicate: ["targetDefinitionComboBox"], descendants: true }, { propertyName: "targetVersionCombobox", first: true, predicate: ["targetVersionCombobox"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content\">\n <div class=\"container-fluid\">\n <div class=\"row mb-5\">\n <div class=\"col-12\">\n <div class=\"alert alert-warning pl-2 plr-2\" role=\"alert\">\n <div class=\"icon\"><span class=\"mdi mdi-alert-triangle\"></span></div>\n <div class=\"message\" [innerHTML]=\"'Process migration warning' | translate\"></div>\n </div>\n </div>\n </div>\n <div class=\"row mb-5\">\n <div class=\"col-4\">\n <cds-combo-box\n [dropUp]=\"false\"\n [appendInline]=\"true\"\n [label]=\"'Source Definition' | translate\"\n [placeholder]=\"'- ' + ('Source Definition' | translate) + ' -'\"\n [items]=\"sourceDefinitionItems\"\n (selected)=\"onDefinitionSelected($event, 'source')\"\n (clear)=\"onSourceDefinitionClear($event)\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </div>\n <div class=\"col-2\">\n <cds-combo-box\n #sourceVersionCombobox\n [dropUp]=\"false\"\n [appendInline]=\"true\"\n [label]=\"'Source Definition' | translate\"\n [placeholder]=\"'- ' + ('Source Version' | translate) + ' -'\"\n [items]=\"sourceVersionItems\"\n (selected)=\"onVersionSelected($event, 'source')\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </div>\n <div class=\"col-4\">\n <cds-combo-box\n #targetDefinitionComboBox\n [dropUp]=\"false\"\n [appendInline]=\"true\"\n [label]=\"'Target Definition' | translate\"\n [placeholder]=\"'- ' + ('Target Definition' | translate) + ' -'\"\n [items]=\"targetDefinitionItems\"\n (selected)=\"onDefinitionSelected($event, 'target')\"\n (clear)=\"onTargetDefinitionClear($event)\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </div>\n <div class=\"col-2\">\n <cds-combo-box\n #targetVersionCombobox\n [dropUp]=\"false\"\n [appendInline]=\"true\"\n [label]=\"'Target Version' | translate\"\n [placeholder]=\"'- ' + ('Target Version' | translate) + ' -'\"\n [items]=\"targetVersionItems\"\n (selected)=\"onVersionSelected($event, 'target')\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </div>\n </div>\n\n <div class=\"row mb-5\">\n <div class=\"col-6\">\n <valtimo-migration-process-diagram\n name=\"source\"\n (loaded)=\"diagramLoaded($event)\"\n #sourceDiagram\n ></valtimo-migration-process-diagram>\n </div>\n <div class=\"col-6\">\n <valtimo-migration-process-diagram\n name=\"target\"\n (loaded)=\"diagramLoaded($event)\"\n #targetDiagram\n ></valtimo-migration-process-diagram>\n </div>\n </div>\n <table class=\"table table-striped mb-5\" *ngIf=\"selectedId.source && selectedId.target\">\n <tr *ngFor=\"let node of uniqueFlowNodeMap\">\n <td>{{ node.name ? node.name : node.id }}</td>\n <td>\n <cds-combo-box\n [dropUp]=\"false\"\n [appendInline]=\"true\"\n [placeholder]=\"'- ' + ('Choose Target' | translate) + ' -'\"\n [items]=\"getFilteredTargetFlowNodeMapItems(node)\"\n (selected)=\"onTaskMappingSelected($event, node.id)\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </td>\n </tr>\n </table>\n <hr />\n <div class=\"btn-group mb-5\">\n <button\n [disabled]=\"\n (uniqueFlowNodeMap.length !== taskMappingLength && uniqueFlowNodeMap.length > 0) ||\n !loaded.source ||\n !loaded.target\n \"\n (click)=\"migrateProcess()\"\n class=\"btn btn-primary\"\n >\n Migrate\n <span *ngIf=\"processCount !== null\" class=\"badge badge-pill badge-secondary\">{{\n processCount\n }}</span>\n </button>\n </div>\n </div>\n</div>\n", styles: ["/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.ComboBox, selector: "cds-combo-box, ibm-combo-box", inputs: ["placeholder", "openMenuAria", "closeMenuAria", "clearSelectionsTitle", "clearSelectionsAria", "clearSelectionTitle", "clearSelectionAria", "id", "labelId", "items", "type", "size", "itemValueKey", "label", "hideLabel", "helperText", "appendInline", "invalid", "invalidText", "warn", "warnText", "maxLength", "theme", "selectionFeedback", "autocomplete", "dropUp", "disabled"], outputs: ["selected", "submit", "close", "search", "clear"] }, { kind: "component", type: i6.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "component", type: MigrationProcessDiagramComponent, selector: "valtimo-migration-process-diagram", inputs: ["name"], outputs: ["loaded"] }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }] }); }
269
347
  }
270
348
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MigrationComponent, decorators: [{
271
349
  type: Component,
272
- args: [{ selector: 'valtimo-migration', template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content\">\n <div class=\"container-fluid\">\n <div class=\"row mb-5\">\n <div class=\"col-12\">\n <div class=\"alert alert-warning pl-2 plr-2\" role=\"alert\">\n <div class=\"icon\"><span class=\"mdi mdi-alert-triangle\"></span></div>\n <div class=\"message\" [innerHTML]=\"'Process migration warning' | translate\"></div>\n </div>\n </div>\n </div>\n <div class=\"row mb-5\">\n <div class=\"col-4\">\n <label for=\"sourceDef\">Source Definition</label>\n <select\n class=\"form-control\"\n id=\"sourceDef\"\n [ngModel]=\"fields.source.definition\"\n (ngModelChange)=\"loadProcessDefinitionVersions($event, 'source')\"\n >\n <option [ngValue]=\"null\" selected>- Source Definition -</option>\n <option *ngFor=\"let processDef of processDefinitions\" [ngValue]=\"processDef.key\">\n {{ processDef.name }}\n </option>\n </select>\n </div>\n <div class=\"col-2\">\n <label for=\"sourceVer\">Source Version</label>\n <select\n class=\"form-control\"\n id=\"sourceVer\"\n [ngModel]=\"fields.source.version\"\n (ngModelChange)=\"loadProcess($event, 'source')\"\n >\n <option [ngValue]=\"null\" selected>- Source Version -</option>\n <option *ngFor=\"let processVer of selectedVersions.source\" [ngValue]=\"processVer.id\">\n {{ processVer.version }}\n </option>\n </select>\n </div>\n <div class=\"col-4\">\n <label for=\"targetDef\">Target Definition</label>\n <select\n class=\"form-control\"\n id=\"targetDef\"\n [ngModel]=\"fields.target.definition\"\n (ngModelChange)=\"loadProcessDefinitionVersions($event, 'target')\"\n >\n <option [ngValue]=\"null\" selected>- Target Definition -</option>\n <option *ngFor=\"let processDef of processDefinitions\" [ngValue]=\"processDef.key\">\n {{ processDef.name }}\n </option>\n </select>\n </div>\n <div class=\"col-2\">\n <label for=\"targetVer\">Target Version</label>\n <select\n class=\"form-control\"\n id=\"targetVer\"\n [ngModel]=\"fields.target.version\"\n (ngModelChange)=\"loadProcess($event, 'target')\"\n >\n <option [ngValue]=\"null\" selected>- Target Version -</option>\n <option *ngFor=\"let processVer of selectedVersions.target\" [ngValue]=\"processVer.id\">\n {{ processVer.version }}\n </option>\n </select>\n </div>\n </div>\n\n <div class=\"row mb-5\">\n <div class=\"col-6\">\n <valtimo-migration-process-diagram\n name=\"source\"\n (loaded)=\"diagramLoaded($event)\"\n #sourceDiagram\n ></valtimo-migration-process-diagram>\n </div>\n <div class=\"col-6\">\n <valtimo-migration-process-diagram\n name=\"target\"\n (loaded)=\"diagramLoaded($event)\"\n #targetDiagram\n ></valtimo-migration-process-diagram>\n </div>\n </div>\n <table class=\"table table-striped mb-5\" *ngIf=\"selectedId.source && selectedId.target\">\n <tr *ngFor=\"let node of uniqueFlowNodeMap\">\n <td>{{ node.name ? node.name : node.id }}</td>\n <td>\n <select class=\"form-control\" (change)=\"taskMapping[node.id] = $event.target.value\">\n <option [value]=\"null\" disabled selected>- Choose Target -</option>\n <option\n *ngFor=\"let targetFlowNode of getFilteredTargetFlowNodeMap(node.$type)\"\n [value]=\"targetFlowNode.id\"\n >\n {{ targetFlowNode.name ? targetFlowNode.name : targetFlowNode.id }}\n </option>\n </select>\n </td>\n </tr>\n </table>\n <hr />\n <div class=\"btn-group mb-5\">\n <button\n [disabled]=\"\n (uniqueFlowNodeMap.length !== taskMappingLength && uniqueFlowNodeMap.length > 0) ||\n !loaded.source ||\n !loaded.target\n \"\n (click)=\"migrateProcess()\"\n class=\"btn btn-primary\"\n >\n Migrate\n <span *ngIf=\"processCount !== null\" class=\"badge badge-pill badge-secondary\">{{\n processCount\n }}</span>\n </button>\n </div>\n </div>\n</div>\n", styles: ["/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
350
+ args: [{ selector: 'valtimo-migration', template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content\">\n <div class=\"container-fluid\">\n <div class=\"row mb-5\">\n <div class=\"col-12\">\n <div class=\"alert alert-warning pl-2 plr-2\" role=\"alert\">\n <div class=\"icon\"><span class=\"mdi mdi-alert-triangle\"></span></div>\n <div class=\"message\" [innerHTML]=\"'Process migration warning' | translate\"></div>\n </div>\n </div>\n </div>\n <div class=\"row mb-5\">\n <div class=\"col-4\">\n <cds-combo-box\n [dropUp]=\"false\"\n [appendInline]=\"true\"\n [label]=\"'Source Definition' | translate\"\n [placeholder]=\"'- ' + ('Source Definition' | translate) + ' -'\"\n [items]=\"sourceDefinitionItems\"\n (selected)=\"onDefinitionSelected($event, 'source')\"\n (clear)=\"onSourceDefinitionClear($event)\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </div>\n <div class=\"col-2\">\n <cds-combo-box\n #sourceVersionCombobox\n [dropUp]=\"false\"\n [appendInline]=\"true\"\n [label]=\"'Source Definition' | translate\"\n [placeholder]=\"'- ' + ('Source Version' | translate) + ' -'\"\n [items]=\"sourceVersionItems\"\n (selected)=\"onVersionSelected($event, 'source')\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </div>\n <div class=\"col-4\">\n <cds-combo-box\n #targetDefinitionComboBox\n [dropUp]=\"false\"\n [appendInline]=\"true\"\n [label]=\"'Target Definition' | translate\"\n [placeholder]=\"'- ' + ('Target Definition' | translate) + ' -'\"\n [items]=\"targetDefinitionItems\"\n (selected)=\"onDefinitionSelected($event, 'target')\"\n (clear)=\"onTargetDefinitionClear($event)\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </div>\n <div class=\"col-2\">\n <cds-combo-box\n #targetVersionCombobox\n [dropUp]=\"false\"\n [appendInline]=\"true\"\n [label]=\"'Target Version' | translate\"\n [placeholder]=\"'- ' + ('Target Version' | translate) + ' -'\"\n [items]=\"targetVersionItems\"\n (selected)=\"onVersionSelected($event, 'target')\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </div>\n </div>\n\n <div class=\"row mb-5\">\n <div class=\"col-6\">\n <valtimo-migration-process-diagram\n name=\"source\"\n (loaded)=\"diagramLoaded($event)\"\n #sourceDiagram\n ></valtimo-migration-process-diagram>\n </div>\n <div class=\"col-6\">\n <valtimo-migration-process-diagram\n name=\"target\"\n (loaded)=\"diagramLoaded($event)\"\n #targetDiagram\n ></valtimo-migration-process-diagram>\n </div>\n </div>\n <table class=\"table table-striped mb-5\" *ngIf=\"selectedId.source && selectedId.target\">\n <tr *ngFor=\"let node of uniqueFlowNodeMap\">\n <td>{{ node.name ? node.name : node.id }}</td>\n <td>\n <cds-combo-box\n [dropUp]=\"false\"\n [appendInline]=\"true\"\n [placeholder]=\"'- ' + ('Choose Target' | translate) + ' -'\"\n [items]=\"getFilteredTargetFlowNodeMapItems(node)\"\n (selected)=\"onTaskMappingSelected($event, node.id)\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </td>\n </tr>\n </table>\n <hr />\n <div class=\"btn-group mb-5\">\n <button\n [disabled]=\"\n (uniqueFlowNodeMap.length !== taskMappingLength && uniqueFlowNodeMap.length > 0) ||\n !loaded.source ||\n !loaded.target\n \"\n (click)=\"migrateProcess()\"\n class=\"btn btn-primary\"\n >\n Migrate\n <span *ngIf=\"processCount !== null\" class=\"badge badge-pill badge-secondary\">{{\n processCount\n }}</span>\n </button>\n </div>\n </div>\n</div>\n", styles: ["/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
273
351
  }], ctorParameters: () => [{ type: i1$1.ProcessService }, { type: i1.NGXLogger }, { type: i3.AlertService }], propDecorators: { sourceDiagram: [{
274
352
  type: ViewChild,
275
353
  args: ['sourceDiagram']
276
354
  }], targetDiagram: [{
277
355
  type: ViewChild,
278
356
  args: ['targetDiagram']
357
+ }], sourceVersionCombobox: [{
358
+ type: ViewChild,
359
+ args: ['sourceVersionCombobox']
360
+ }], targetDefinitionComboBox: [{
361
+ type: ViewChild,
362
+ args: ['targetDefinitionComboBox']
363
+ }], targetVersionCombobox: [{
364
+ type: ViewChild,
365
+ args: ['targetVersionCombobox']
279
366
  }] } });
280
367
 
281
368
  /*
@@ -336,13 +423,15 @@ class MigrationModule {
336
423
  ReactiveFormsModule,
337
424
  WidgetModule,
338
425
  FormsModule,
339
- TranslateModule], exports: [MigrationComponent] }); }
426
+ TranslateModule,
427
+ ComboBoxModule], exports: [MigrationComponent] }); }
340
428
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MigrationModule, imports: [CommonModule,
341
429
  MigrationRoutingModule,
342
430
  ReactiveFormsModule,
343
431
  WidgetModule,
344
432
  FormsModule,
345
- TranslateModule] }); }
433
+ TranslateModule,
434
+ ComboBoxModule] }); }
346
435
  }
347
436
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MigrationModule, decorators: [{
348
437
  type: NgModule,
@@ -355,6 +444,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
355
444
  WidgetModule,
356
445
  FormsModule,
357
446
  TranslateModule,
447
+ ComboBoxModule,
358
448
  ],
359
449
  exports: [MigrationComponent],
360
450
  }]
@@ -1 +1 @@
1
- {"version":3,"file":"valtimo-migration.mjs","sources":["../../../../projects/valtimo/migration/src/lib/migration.service.ts","../../../../projects/valtimo/migration/src/lib/migration-process-diagram/migration-process-diagram.component.ts","../../../../projects/valtimo/migration/src/lib/migration-process-diagram/migration-process-diagram.component.html","../../../../projects/valtimo/migration/src/lib/migration.component.ts","../../../../projects/valtimo/migration/src/lib/migration.component.html","../../../../projects/valtimo/migration/src/lib/migration-routing.module.ts","../../../../projects/valtimo/migration/src/lib/migration.module.ts","../../../../projects/valtimo/migration/src/public-api.ts","../../../../projects/valtimo/migration/src/valtimo-migration.ts"],"sourcesContent":["/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MigrationService {\n constructor() {}\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\n\nimport BpmnJS from 'bpmn-js/dist/bpmn-navigated-viewer.production.min.js';\nimport {NGXLogger} from 'ngx-logger';\n\n@Component({\n selector: 'valtimo-migration-process-diagram',\n templateUrl: './migration-process-diagram.component.html',\n styleUrls: ['./migration-process-diagram.component.scss'],\n})\nexport class MigrationProcessDiagramComponent implements OnInit, OnDestroy {\n private bpmnJS: BpmnJS;\n public flowNodeMap: any = null;\n\n @ViewChild('ref') public el: ElementRef;\n @Input() name: string;\n @Output() loaded = new EventEmitter();\n\n constructor(private logger: NGXLogger) {}\n\n ngOnInit() {\n this.bpmnJS = new BpmnJS();\n this.bpmnJS.on('import.done', ({error}: any) => {\n if (!error) {\n const canvas = this.bpmnJS.get('canvas');\n canvas.zoom('fit-viewport', 'auto');\n }\n });\n }\n\n ngOnDestroy() {\n if (this.bpmnJS) {\n this.bpmnJS.destroy();\n }\n }\n\n clear() {\n this.bpmnJS.clear();\n }\n\n public loadXml(xml: string): void {\n this.bpmnJS.attachTo(this.el.nativeElement);\n this.bpmnJS.importXML(xml, err => {\n this.logger.debug(err);\n const processElements = this.bpmnJS.getDefinitions().rootElements.filter(function (element) {\n return element.isExecutable;\n });\n this.flowNodeMap = processElements[0].flowElements.filter(function (element) {\n if (element.name === null || element.name === '') {\n element.name = element.id;\n }\n return element.$type !== 'bpmn:SequenceFlow';\n });\n this.loaded.emit(this.name);\n });\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div #ref class=\"diagram-container\"></div>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {AfterViewInit, Component, OnInit, ViewChild} from '@angular/core';\nimport {ProcessService, ProcessDefinition} from '@valtimo/process';\nimport {MigrationProcessDiagramComponent} from './migration-process-diagram/migration-process-diagram.component';\nimport {NGXLogger} from 'ngx-logger';\nimport {AlertService} from '@valtimo/components';\n\n@Component({\n selector: 'valtimo-migration',\n templateUrl: './migration.component.html',\n styleUrls: ['./migration.component.scss'],\n})\nexport class MigrationComponent implements OnInit, AfterViewInit {\n public processDefinitions: ProcessDefinition[] = [];\n public selectedVersions = {\n source: [],\n target: [],\n };\n public selectedId = {\n source: null,\n target: null,\n };\n public loaded = {\n source: false,\n target: false,\n };\n public fields = {\n source: {\n definition: null,\n version: null,\n },\n target: {\n definition: null,\n version: null,\n },\n };\n\n public processCount: number | null = null;\n public uniqueFlowNodeMap: any[] = [];\n public taskMapping: any = {};\n\n @ViewChild('sourceDiagram') sourceDiagram: MigrationProcessDiagramComponent;\n @ViewChild('targetDiagram') targetDiagram: MigrationProcessDiagramComponent;\n\n public diagram: any = null;\n\n constructor(\n private processService: ProcessService,\n private logger: NGXLogger,\n private alertService: AlertService\n ) {}\n\n ngOnInit() {\n this.loadProcessDefinitions();\n }\n\n ngAfterViewInit() {\n this.diagram = {\n source: this.sourceDiagram,\n target: this.targetDiagram,\n };\n }\n\n public get taskMappingLength() {\n return Object.keys(this.taskMapping).length;\n }\n\n loadProcessDefinitions() {\n this.processService\n .getProcessDefinitions()\n .subscribe((processDefinitions: ProcessDefinition[]) => {\n this.processDefinitions = processDefinitions;\n });\n }\n\n loadProcessDefinitionVersions(key: string | null, type: string) {\n this.fields[type].definition = key;\n this.selectedVersions[type] = [];\n this.clearProcess(type);\n if (key) {\n this.processService\n .getProcessDefinitionVersions(key)\n .subscribe((processDefinitionVersions: ProcessDefinition[]) => {\n this.selectedVersions[type] = processDefinitionVersions;\n });\n }\n }\n\n loadProcess(id: string | null, type: string) {\n this.fields[type].version = id;\n this.clearProcess(type);\n if (id) {\n this.loadProcessDefinitionXML(id, type);\n if (type === 'source') {\n this.loadProcessCount(id);\n }\n }\n }\n\n private clearProcess(type: string) {\n this.loaded[type] = false;\n this.selectedId[type] = null;\n this.diagram[type].clear();\n if (type === 'source') {\n this.processCount = null;\n }\n }\n\n loadProcessDefinitionXML(id: string, type: string) {\n this.processService.getProcessDefinitionXml(id).subscribe(xml => {\n this.diagram[type].loadXml(xml['bpmn20Xml']);\n this.selectedId[type] = id;\n });\n }\n\n loadProcessCount(id: string) {\n this.processService.getProcessCount(id).subscribe(response => {\n this.processCount = response.count;\n });\n }\n\n setUniqueFlowNodeMap() {\n this.uniqueFlowNodeMap = [];\n const sourceFlowNodeMap = this.sourceDiagram.flowNodeMap;\n const targetFlowNodeMap = this.targetDiagram.flowNodeMap;\n\n if (sourceFlowNodeMap != null && targetFlowNodeMap != null) {\n this.uniqueFlowNodeMap = sourceFlowNodeMap.filter(\n sourceFlowNode =>\n !targetFlowNodeMap.some(\n targetFlowNode =>\n sourceFlowNode.id === targetFlowNode.id &&\n sourceFlowNode.$type === targetFlowNode.$type\n )\n );\n }\n }\n\n getFilteredTargetFlowNodeMap(flowNodeType) {\n const targetFlowNodeMap = this.targetDiagram.flowNodeMap;\n return targetFlowNodeMap.filter(function (flowNode) {\n return flowNode.$type === flowNodeType;\n });\n }\n\n diagramLoaded(diagramName: string) {\n this.loaded[diagramName] = true;\n if (this.loaded.source && this.loaded.target) {\n this.taskMapping = {};\n this.setUniqueFlowNodeMap();\n }\n }\n\n migrateProcess() {\n this.processService\n .migrateProcess(this.selectedId.source, this.selectedId.target, this.taskMapping)\n .subscribe(\n res => {\n this.alertService.success('Process successfully migrated!');\n this.clearProcess('source');\n this.clearProcess('target');\n this.fields = {\n source: {\n definition: null,\n version: null,\n },\n target: {\n definition: null,\n version: null,\n },\n };\n },\n err => {\n this.alertService.error('Process migration failed!');\n this.logger.debug(err);\n }\n );\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content\">\n <div class=\"container-fluid\">\n <div class=\"row mb-5\">\n <div class=\"col-12\">\n <div class=\"alert alert-warning pl-2 plr-2\" role=\"alert\">\n <div class=\"icon\"><span class=\"mdi mdi-alert-triangle\"></span></div>\n <div class=\"message\" [innerHTML]=\"'Process migration warning' | translate\"></div>\n </div>\n </div>\n </div>\n <div class=\"row mb-5\">\n <div class=\"col-4\">\n <label for=\"sourceDef\">Source Definition</label>\n <select\n class=\"form-control\"\n id=\"sourceDef\"\n [ngModel]=\"fields.source.definition\"\n (ngModelChange)=\"loadProcessDefinitionVersions($event, 'source')\"\n >\n <option [ngValue]=\"null\" selected>- Source Definition -</option>\n <option *ngFor=\"let processDef of processDefinitions\" [ngValue]=\"processDef.key\">\n {{ processDef.name }}\n </option>\n </select>\n </div>\n <div class=\"col-2\">\n <label for=\"sourceVer\">Source Version</label>\n <select\n class=\"form-control\"\n id=\"sourceVer\"\n [ngModel]=\"fields.source.version\"\n (ngModelChange)=\"loadProcess($event, 'source')\"\n >\n <option [ngValue]=\"null\" selected>- Source Version -</option>\n <option *ngFor=\"let processVer of selectedVersions.source\" [ngValue]=\"processVer.id\">\n {{ processVer.version }}\n </option>\n </select>\n </div>\n <div class=\"col-4\">\n <label for=\"targetDef\">Target Definition</label>\n <select\n class=\"form-control\"\n id=\"targetDef\"\n [ngModel]=\"fields.target.definition\"\n (ngModelChange)=\"loadProcessDefinitionVersions($event, 'target')\"\n >\n <option [ngValue]=\"null\" selected>- Target Definition -</option>\n <option *ngFor=\"let processDef of processDefinitions\" [ngValue]=\"processDef.key\">\n {{ processDef.name }}\n </option>\n </select>\n </div>\n <div class=\"col-2\">\n <label for=\"targetVer\">Target Version</label>\n <select\n class=\"form-control\"\n id=\"targetVer\"\n [ngModel]=\"fields.target.version\"\n (ngModelChange)=\"loadProcess($event, 'target')\"\n >\n <option [ngValue]=\"null\" selected>- Target Version -</option>\n <option *ngFor=\"let processVer of selectedVersions.target\" [ngValue]=\"processVer.id\">\n {{ processVer.version }}\n </option>\n </select>\n </div>\n </div>\n\n <div class=\"row mb-5\">\n <div class=\"col-6\">\n <valtimo-migration-process-diagram\n name=\"source\"\n (loaded)=\"diagramLoaded($event)\"\n #sourceDiagram\n ></valtimo-migration-process-diagram>\n </div>\n <div class=\"col-6\">\n <valtimo-migration-process-diagram\n name=\"target\"\n (loaded)=\"diagramLoaded($event)\"\n #targetDiagram\n ></valtimo-migration-process-diagram>\n </div>\n </div>\n <table class=\"table table-striped mb-5\" *ngIf=\"selectedId.source && selectedId.target\">\n <tr *ngFor=\"let node of uniqueFlowNodeMap\">\n <td>{{ node.name ? node.name : node.id }}</td>\n <td>\n <select class=\"form-control\" (change)=\"taskMapping[node.id] = $event.target.value\">\n <option [value]=\"null\" disabled selected>- Choose Target -</option>\n <option\n *ngFor=\"let targetFlowNode of getFilteredTargetFlowNodeMap(node.$type)\"\n [value]=\"targetFlowNode.id\"\n >\n {{ targetFlowNode.name ? targetFlowNode.name : targetFlowNode.id }}\n </option>\n </select>\n </td>\n </tr>\n </table>\n <hr />\n <div class=\"btn-group mb-5\">\n <button\n [disabled]=\"\n (uniqueFlowNodeMap.length !== taskMappingLength && uniqueFlowNodeMap.length > 0) ||\n !loaded.source ||\n !loaded.target\n \"\n (click)=\"migrateProcess()\"\n class=\"btn btn-primary\"\n >\n Migrate\n <span *ngIf=\"processCount !== null\" class=\"badge badge-pill badge-secondary\">{{\n processCount\n }}</span>\n </button>\n </div>\n </div>\n</div>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {CommonModule} from '@angular/common';\nimport {AuthGuardService} from '@valtimo/security';\nimport {MigrationComponent} from './migration.component';\nimport {ROLE_ADMIN} from '@valtimo/config';\n\nconst routes: Routes = [\n {\n path: 'process-migration',\n component: MigrationComponent,\n canActivate: [AuthGuardService],\n data: {title: 'Process migration', roles: [ROLE_ADMIN]},\n },\n];\n\n@NgModule({\n imports: [CommonModule, RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class MigrationRoutingModule {}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {NgModule} from '@angular/core';\nimport {MigrationComponent} from './migration.component';\nimport {MigrationRoutingModule} from './migration-routing.module';\nimport {CommonModule} from '@angular/common';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {MigrationProcessDiagramComponent} from './migration-process-diagram/migration-process-diagram.component';\nimport {WidgetModule} from '@valtimo/components';\nimport {TranslateModule} from '@ngx-translate/core';\n\n@NgModule({\n declarations: [MigrationComponent, MigrationProcessDiagramComponent],\n imports: [\n CommonModule,\n MigrationRoutingModule,\n ReactiveFormsModule,\n WidgetModule,\n FormsModule,\n TranslateModule,\n ],\n exports: [MigrationComponent],\n})\nexport class MigrationModule {}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/*\n * Public API Surface of migration\n */\n\nexport * from './lib/migration.service';\nexport * from './lib/migration.component';\nexport * from './lib/migration.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i6.MigrationProcessDiagramComponent"],"mappings":"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"}
1
+ {"version":3,"file":"valtimo-migration.mjs","sources":["../../../../projects/valtimo/migration/src/lib/migration.service.ts","../../../../projects/valtimo/migration/src/lib/migration-process-diagram/migration-process-diagram.component.ts","../../../../projects/valtimo/migration/src/lib/migration-process-diagram/migration-process-diagram.component.html","../../../../projects/valtimo/migration/src/lib/migration.component.ts","../../../../projects/valtimo/migration/src/lib/migration.component.html","../../../../projects/valtimo/migration/src/lib/migration-routing.module.ts","../../../../projects/valtimo/migration/src/lib/migration.module.ts","../../../../projects/valtimo/migration/src/public-api.ts","../../../../projects/valtimo/migration/src/valtimo-migration.ts"],"sourcesContent":["/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {Injectable} from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MigrationService {\n constructor() {}\n}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\n\nimport BpmnJS from 'bpmn-js/dist/bpmn-navigated-viewer.production.min.js';\nimport {NGXLogger} from 'ngx-logger';\n\n@Component({\n selector: 'valtimo-migration-process-diagram',\n templateUrl: './migration-process-diagram.component.html',\n styleUrls: ['./migration-process-diagram.component.scss'],\n})\nexport class MigrationProcessDiagramComponent implements OnInit, OnDestroy {\n private bpmnJS: BpmnJS;\n public flowNodeMap: any = null;\n\n @ViewChild('ref') public el: ElementRef;\n @Input() name: string;\n @Output() loaded = new EventEmitter();\n\n constructor(private logger: NGXLogger) {}\n\n ngOnInit() {\n this.bpmnJS = new BpmnJS();\n this.bpmnJS.on('import.done', ({error}: any) => {\n if (!error) {\n const canvas = this.bpmnJS.get('canvas');\n canvas.zoom('fit-viewport', 'auto');\n }\n });\n }\n\n ngOnDestroy() {\n if (this.bpmnJS) {\n this.bpmnJS.destroy();\n }\n }\n\n clear() {\n this.bpmnJS.clear();\n }\n\n public loadXml(xml: string): void {\n this.bpmnJS.attachTo(this.el.nativeElement);\n this.bpmnJS.importXML(xml, err => {\n this.logger.debug(err);\n const processElements = this.bpmnJS.getDefinitions().rootElements.filter(function (element) {\n return element.isExecutable;\n });\n this.flowNodeMap = processElements[0].flowElements.filter(function (element) {\n if (element.name === null || element.name === '') {\n element.name = element.id;\n }\n return element.$type !== 'bpmn:SequenceFlow';\n });\n this.loaded.emit(this.name);\n });\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div #ref class=\"diagram-container\"></div>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {AfterViewInit, Component, OnInit, ViewChild} from '@angular/core';\nimport {ProcessDefinition, ProcessService} from '@valtimo/process';\nimport {MigrationProcessDiagramComponent} from './migration-process-diagram/migration-process-diagram.component';\nimport {NGXLogger} from 'ngx-logger';\nimport {AlertService} from '@valtimo/components';\nimport {ComboBox, ListItem} from 'carbon-components-angular';\n\n@Component({\n selector: 'valtimo-migration',\n templateUrl: './migration.component.html',\n styleUrls: ['./migration.component.scss'],\n})\nexport class MigrationComponent implements OnInit, AfterViewInit {\n public processDefinitions: ProcessDefinition[] = [];\n public selectedVersions = {\n source: [],\n target: [],\n };\n public selectedId = {\n source: null,\n target: null,\n };\n public loaded = {\n source: false,\n target: false,\n };\n public fields = {\n source: {\n definition: null,\n version: null,\n },\n target: {\n definition: null,\n version: null,\n },\n };\n\n public processCount: number | null = null;\n public uniqueFlowNodeMap: any[] = [];\n public taskMapping: any = {};\n\n @ViewChild('sourceDiagram') sourceDiagram: MigrationProcessDiagramComponent;\n @ViewChild('targetDiagram') targetDiagram: MigrationProcessDiagramComponent;\n @ViewChild('sourceVersionCombobox') sourceVersionCombobox: ComboBox;\n @ViewChild('targetDefinitionComboBox') targetDefinitionComboBox: ComboBox;\n @ViewChild('targetVersionCombobox') targetVersionCombobox: ComboBox;\n public diagram: any = null;\n\n constructor(\n private processService: ProcessService,\n private logger: NGXLogger,\n private alertService: AlertService\n ) {}\n\n ngOnInit() {\n this.loadProcessDefinitions();\n }\n\n ngAfterViewInit() {\n this.diagram = {\n source: this.sourceDiagram,\n target: this.targetDiagram,\n };\n }\n\n public get taskMappingLength() {\n return Object.keys(this.taskMapping).length;\n }\n\n public sourceDefinitionItems: ListItem[] = [];\n public targetDefinitionItems: ListItem[] = [];\n public sourceVersionItems: ListItem[] = [];\n public targetVersionItems: ListItem[] = [];\n private readonly targetFlowNodeItemsMap = new Map<string, ListItem[]>();\n\n private refreshDefinitionItems(): void {\n this.sourceDefinitionItems = this.processDefinitions.map(processDef => ({\n key: processDef.key,\n content: processDef.name,\n selected: this.fields.source.definition === processDef.key,\n }));\n this.targetDefinitionItems = this.processDefinitions.map(processDef => ({\n key: processDef.key,\n content: processDef.name,\n selected: this.fields.target.definition === processDef.key,\n }));\n }\n\n private refreshVersionItems(type: string): void {\n const items = this.selectedVersions[type].map(processVer => ({\n id: processVer.id,\n content: `${processVer.version}`,\n selected: this.fields[type].version === processVer.id,\n }));\n if (type === 'source') {\n this.sourceVersionItems = items;\n } else {\n this.targetVersionItems = items;\n }\n }\n\n loadProcessDefinitions() {\n this.processService\n .getProcessDefinitions()\n .subscribe((processDefinitions: ProcessDefinition[]) => {\n this.processDefinitions = processDefinitions;\n this.refreshDefinitionItems();\n });\n }\n\n public onDefinitionSelected(selection: ListItem | ListItem[], type: string) {\n const item = Array.isArray(selection) ? selection[0] : selection;\n const key = item?.key ?? null;\n\n this.loadProcessDefinitionVersions(key, type);\n if (type === 'source') {\n this.loadProcessDefinitionVersions(key, 'target');\n }\n }\n\n public onVersionSelected(selection: ListItem | ListItem[], type: string) {\n const item = Array.isArray(selection) ? selection[0] : selection;\n this.loadProcess(item?.id ?? null, type);\n }\n\n public onSourceDefinitionClear(event: Event): void {\n this.sourceVersionCombobox.clearInput(event);\n this.targetDefinitionComboBox.clearInput(event);\n this.targetVersionCombobox.clearInput(event);\n }\n\n public onTargetDefinitionClear(event: Event): void {\n this.targetVersionCombobox.clearInput(event);\n }\n\n public onTaskMappingSelected(selection: ListItem | ListItem[], nodeId: string) {\n const item = Array.isArray(selection) ? selection[0] : selection;\n this.taskMapping[nodeId] = item?.id ?? null;\n }\n\n loadProcessDefinitionVersions(key: string | null, type: string) {\n this.fields[type].definition = key;\n this.selectedVersions[type] = [];\n this.clearProcess(type);\n this.refreshDefinitionItems();\n this.refreshVersionItems(type);\n if (key) {\n this.processService\n .getProcessDefinitionVersions(key)\n .subscribe((processDefinitionVersions: ProcessDefinition[]) => {\n if (this.fields[type].definition !== key) {\n return;\n }\n this.selectedVersions[type] = processDefinitionVersions;\n this.refreshVersionItems(type);\n });\n }\n }\n\n loadProcess(id: string | null, type: string) {\n this.fields[type].version = id;\n this.clearProcess(type);\n this.refreshVersionItems(type);\n if (id) {\n this.loadProcessDefinitionXML(id, type);\n if (type === 'source') {\n this.loadProcessCount(id);\n }\n }\n }\n\n private clearProcess(type: string) {\n this.loaded[type] = false;\n this.selectedId[type] = null;\n this.diagram[type].clear();\n if (type === 'source') {\n this.processCount = null;\n }\n }\n\n loadProcessDefinitionXML(id: string, type: string) {\n this.processService.getProcessDefinitionXml(id).subscribe(xml => {\n this.diagram[type].loadXml(xml['bpmn20Xml']);\n this.selectedId[type] = id;\n });\n }\n\n loadProcessCount(id: string) {\n this.processService.getProcessCount(id).subscribe(response => {\n this.processCount = response.count;\n });\n }\n\n setUniqueFlowNodeMap() {\n this.uniqueFlowNodeMap = [];\n const sourceFlowNodeMap = this.sourceDiagram.flowNodeMap;\n const targetFlowNodeMap = this.targetDiagram.flowNodeMap;\n\n if (sourceFlowNodeMap != null && targetFlowNodeMap != null) {\n this.uniqueFlowNodeMap = sourceFlowNodeMap.filter(\n sourceFlowNode =>\n !targetFlowNodeMap.some(\n targetFlowNode =>\n sourceFlowNode.id === targetFlowNode.id &&\n sourceFlowNode.$type === targetFlowNode.$type\n )\n );\n }\n }\n\n getFilteredTargetFlowNodeMap(flowNodeType) {\n const targetFlowNodeMap = this.targetDiagram.flowNodeMap;\n return targetFlowNodeMap.filter(function (flowNode) {\n return flowNode.$type === flowNodeType;\n });\n }\n\n public getFilteredTargetFlowNodeMapItems(node): ListItem[] {\n if (!this.targetFlowNodeItemsMap.has(node.id)) {\n this.targetFlowNodeItemsMap.set(\n node.id,\n this.getFilteredTargetFlowNodeMap(node.$type).map(targetFlowNode => ({\n id: targetFlowNode.id,\n content: targetFlowNode.name || targetFlowNode.id,\n selected: this.taskMapping[node.id] === targetFlowNode.id,\n }))\n );\n }\n return this.targetFlowNodeItemsMap.get(node.id);\n }\n\n diagramLoaded(diagramName: string) {\n this.loaded[diagramName] = true;\n if (this.loaded.source && this.loaded.target) {\n this.taskMapping = {};\n this.targetFlowNodeItemsMap.clear();\n this.setUniqueFlowNodeMap();\n }\n }\n\n migrateProcess() {\n this.processService\n .migrateProcess(this.selectedId.source, this.selectedId.target, this.taskMapping)\n .subscribe(\n res => {\n this.alertService.success('Process successfully migrated!');\n this.clearProcess('source');\n this.clearProcess('target');\n this.fields = {\n source: {\n definition: null,\n version: null,\n },\n target: {\n definition: null,\n version: null,\n },\n };\n this.refreshDefinitionItems();\n this.refreshVersionItems('source');\n this.refreshVersionItems('target');\n },\n err => {\n this.alertService.error('Process migration failed!');\n this.logger.debug(err);\n }\n );\n }\n}\n","<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content\">\n <div class=\"container-fluid\">\n <div class=\"row mb-5\">\n <div class=\"col-12\">\n <div class=\"alert alert-warning pl-2 plr-2\" role=\"alert\">\n <div class=\"icon\"><span class=\"mdi mdi-alert-triangle\"></span></div>\n <div class=\"message\" [innerHTML]=\"'Process migration warning' | translate\"></div>\n </div>\n </div>\n </div>\n <div class=\"row mb-5\">\n <div class=\"col-4\">\n <cds-combo-box\n [dropUp]=\"false\"\n [appendInline]=\"true\"\n [label]=\"'Source Definition' | translate\"\n [placeholder]=\"'- ' + ('Source Definition' | translate) + ' -'\"\n [items]=\"sourceDefinitionItems\"\n (selected)=\"onDefinitionSelected($event, 'source')\"\n (clear)=\"onSourceDefinitionClear($event)\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </div>\n <div class=\"col-2\">\n <cds-combo-box\n #sourceVersionCombobox\n [dropUp]=\"false\"\n [appendInline]=\"true\"\n [label]=\"'Source Definition' | translate\"\n [placeholder]=\"'- ' + ('Source Version' | translate) + ' -'\"\n [items]=\"sourceVersionItems\"\n (selected)=\"onVersionSelected($event, 'source')\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </div>\n <div class=\"col-4\">\n <cds-combo-box\n #targetDefinitionComboBox\n [dropUp]=\"false\"\n [appendInline]=\"true\"\n [label]=\"'Target Definition' | translate\"\n [placeholder]=\"'- ' + ('Target Definition' | translate) + ' -'\"\n [items]=\"targetDefinitionItems\"\n (selected)=\"onDefinitionSelected($event, 'target')\"\n (clear)=\"onTargetDefinitionClear($event)\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </div>\n <div class=\"col-2\">\n <cds-combo-box\n #targetVersionCombobox\n [dropUp]=\"false\"\n [appendInline]=\"true\"\n [label]=\"'Target Version' | translate\"\n [placeholder]=\"'- ' + ('Target Version' | translate) + ' -'\"\n [items]=\"targetVersionItems\"\n (selected)=\"onVersionSelected($event, 'target')\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </div>\n </div>\n\n <div class=\"row mb-5\">\n <div class=\"col-6\">\n <valtimo-migration-process-diagram\n name=\"source\"\n (loaded)=\"diagramLoaded($event)\"\n #sourceDiagram\n ></valtimo-migration-process-diagram>\n </div>\n <div class=\"col-6\">\n <valtimo-migration-process-diagram\n name=\"target\"\n (loaded)=\"diagramLoaded($event)\"\n #targetDiagram\n ></valtimo-migration-process-diagram>\n </div>\n </div>\n <table class=\"table table-striped mb-5\" *ngIf=\"selectedId.source && selectedId.target\">\n <tr *ngFor=\"let node of uniqueFlowNodeMap\">\n <td>{{ node.name ? node.name : node.id }}</td>\n <td>\n <cds-combo-box\n [dropUp]=\"false\"\n [appendInline]=\"true\"\n [placeholder]=\"'- ' + ('Choose Target' | translate) + ' -'\"\n [items]=\"getFilteredTargetFlowNodeMapItems(node)\"\n (selected)=\"onTaskMappingSelected($event, node.id)\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n </td>\n </tr>\n </table>\n <hr />\n <div class=\"btn-group mb-5\">\n <button\n [disabled]=\"\n (uniqueFlowNodeMap.length !== taskMappingLength && uniqueFlowNodeMap.length > 0) ||\n !loaded.source ||\n !loaded.target\n \"\n (click)=\"migrateProcess()\"\n class=\"btn btn-primary\"\n >\n Migrate\n <span *ngIf=\"processCount !== null\" class=\"badge badge-pill badge-secondary\">{{\n processCount\n }}</span>\n </button>\n </div>\n </div>\n</div>\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {CommonModule} from '@angular/common';\nimport {AuthGuardService} from '@valtimo/security';\nimport {MigrationComponent} from './migration.component';\nimport {ROLE_ADMIN} from '@valtimo/config';\n\nconst routes: Routes = [\n {\n path: 'process-migration',\n component: MigrationComponent,\n canActivate: [AuthGuardService],\n data: {title: 'Process migration', roles: [ROLE_ADMIN]},\n },\n];\n\n@NgModule({\n imports: [CommonModule, RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class MigrationRoutingModule {}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {NgModule} from '@angular/core';\nimport {MigrationComponent} from './migration.component';\nimport {MigrationRoutingModule} from './migration-routing.module';\nimport {CommonModule} from '@angular/common';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {MigrationProcessDiagramComponent} from './migration-process-diagram/migration-process-diagram.component';\nimport {WidgetModule} from '@valtimo/components';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {ComboBoxModule} from 'carbon-components-angular';\n\n@NgModule({\n declarations: [MigrationComponent, MigrationProcessDiagramComponent],\n imports: [\n CommonModule,\n MigrationRoutingModule,\n ReactiveFormsModule,\n WidgetModule,\n FormsModule,\n TranslateModule,\n ComboBoxModule,\n ],\n exports: [MigrationComponent],\n})\nexport class MigrationModule {}\n","/*\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/*\n * Public API Surface of migration\n */\n\nexport * from './lib/migration.service';\nexport * from './lib/migration.component';\nexport * from './lib/migration.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i7.MigrationProcessDiagramComponent"],"mappings":"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"}
@@ -1,8 +1,9 @@
1
1
  import { AfterViewInit, OnInit } from '@angular/core';
2
- import { ProcessService, ProcessDefinition } from '@valtimo/process';
2
+ import { ProcessDefinition, ProcessService } from '@valtimo/process';
3
3
  import { MigrationProcessDiagramComponent } from './migration-process-diagram/migration-process-diagram.component';
4
4
  import { NGXLogger } from 'ngx-logger';
5
5
  import { AlertService } from '@valtimo/components';
6
+ import { ComboBox, ListItem } from 'carbon-components-angular';
6
7
  import * as i0 from "@angular/core";
7
8
  export declare class MigrationComponent implements OnInit, AfterViewInit {
8
9
  private processService;
@@ -36,12 +37,27 @@ export declare class MigrationComponent implements OnInit, AfterViewInit {
36
37
  taskMapping: any;
37
38
  sourceDiagram: MigrationProcessDiagramComponent;
38
39
  targetDiagram: MigrationProcessDiagramComponent;
40
+ sourceVersionCombobox: ComboBox;
41
+ targetDefinitionComboBox: ComboBox;
42
+ targetVersionCombobox: ComboBox;
39
43
  diagram: any;
40
44
  constructor(processService: ProcessService, logger: NGXLogger, alertService: AlertService);
41
45
  ngOnInit(): void;
42
46
  ngAfterViewInit(): void;
43
47
  get taskMappingLength(): number;
48
+ sourceDefinitionItems: ListItem[];
49
+ targetDefinitionItems: ListItem[];
50
+ sourceVersionItems: ListItem[];
51
+ targetVersionItems: ListItem[];
52
+ private readonly targetFlowNodeItemsMap;
53
+ private refreshDefinitionItems;
54
+ private refreshVersionItems;
44
55
  loadProcessDefinitions(): void;
56
+ onDefinitionSelected(selection: ListItem | ListItem[], type: string): void;
57
+ onVersionSelected(selection: ListItem | ListItem[], type: string): void;
58
+ onSourceDefinitionClear(event: Event): void;
59
+ onTargetDefinitionClear(event: Event): void;
60
+ onTaskMappingSelected(selection: ListItem | ListItem[], nodeId: string): void;
45
61
  loadProcessDefinitionVersions(key: string | null, type: string): void;
46
62
  loadProcess(id: string | null, type: string): void;
47
63
  private clearProcess;
@@ -49,6 +65,7 @@ export declare class MigrationComponent implements OnInit, AfterViewInit {
49
65
  loadProcessCount(id: string): void;
50
66
  setUniqueFlowNodeMap(): void;
51
67
  getFilteredTargetFlowNodeMap(flowNodeType: any): any;
68
+ getFilteredTargetFlowNodeMapItems(node: any): ListItem[];
52
69
  diagramLoaded(diagramName: string): void;
53
70
  migrateProcess(): void;
54
71
  static ɵfac: i0.ɵɵFactoryDeclaration<MigrationComponent, never>;
@@ -1 +1 @@
1
- {"version":3,"file":"migration.component.d.ts","sourceRoot":"","sources":["../../../../projects/valtimo/migration/src/lib/migration.component.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAC,aAAa,EAAa,MAAM,EAAY,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAC,cAAc,EAAE,iBAAiB,EAAC,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAC,gCAAgC,EAAC,MAAM,iEAAiE,CAAC;AACjH,OAAO,EAAC,SAAS,EAAC,MAAM,YAAY,CAAC;AACrC,OAAO,EAAC,YAAY,EAAC,MAAM,qBAAqB,CAAC;;AAEjD,qBAKa,kBAAmB,YAAW,MAAM,EAAE,aAAa;IAmC5D,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,YAAY;IApCf,kBAAkB,EAAE,iBAAiB,EAAE,CAAM;IAC7C,gBAAgB;;;MAGrB;IACK,UAAU;;;MAGf;IACK,MAAM;;;MAGX;IACK,MAAM;;;;;;;;;MASX;IAEK,YAAY,EAAE,MAAM,GAAG,IAAI,CAAQ;IACnC,iBAAiB,EAAE,GAAG,EAAE,CAAM;IAC9B,WAAW,EAAE,GAAG,CAAM;IAED,aAAa,EAAE,gCAAgC,CAAC;IAChD,aAAa,EAAE,gCAAgC,CAAC;IAErE,OAAO,EAAE,GAAG,CAAQ;gBAGjB,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,SAAS,EACjB,YAAY,EAAE,YAAY;IAGpC,QAAQ;IAIR,eAAe;IAOf,IAAW,iBAAiB,WAE3B;IAED,sBAAsB;IAQtB,6BAA6B,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM;IAa9D,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM;IAW3C,OAAO,CAAC,YAAY;IASpB,wBAAwB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAOjD,gBAAgB,CAAC,EAAE,EAAE,MAAM;IAM3B,oBAAoB;IAiBpB,4BAA4B,CAAC,YAAY,KAAA;IAOzC,aAAa,CAAC,WAAW,EAAE,MAAM;IAQjC,cAAc;yCA7IH,kBAAkB;2CAAlB,kBAAkB;CAsK9B"}
1
+ {"version":3,"file":"migration.component.d.ts","sourceRoot":"","sources":["../../../../projects/valtimo/migration/src/lib/migration.component.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAC,aAAa,EAAa,MAAM,EAAY,MAAM,eAAe,CAAC;AAC1E,OAAO,EAAC,iBAAiB,EAAE,cAAc,EAAC,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAC,gCAAgC,EAAC,MAAM,iEAAiE,CAAC;AACjH,OAAO,EAAC,SAAS,EAAC,MAAM,YAAY,CAAC;AACrC,OAAO,EAAC,YAAY,EAAC,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAC,QAAQ,EAAE,QAAQ,EAAC,MAAM,2BAA2B,CAAC;;AAE7D,qBAKa,kBAAmB,YAAW,MAAM,EAAE,aAAa;IAqC5D,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,YAAY;IAtCf,kBAAkB,EAAE,iBAAiB,EAAE,CAAM;IAC7C,gBAAgB;;;MAGrB;IACK,UAAU;;;MAGf;IACK,MAAM;;;MAGX;IACK,MAAM;;;;;;;;;MASX;IAEK,YAAY,EAAE,MAAM,GAAG,IAAI,CAAQ;IACnC,iBAAiB,EAAE,GAAG,EAAE,CAAM;IAC9B,WAAW,EAAE,GAAG,CAAM;IAED,aAAa,EAAE,gCAAgC,CAAC;IAChD,aAAa,EAAE,gCAAgC,CAAC;IACxC,qBAAqB,EAAE,QAAQ,CAAC;IAC7B,wBAAwB,EAAE,QAAQ,CAAC;IACtC,qBAAqB,EAAE,QAAQ,CAAC;IAC7D,OAAO,EAAE,GAAG,CAAQ;gBAGjB,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,SAAS,EACjB,YAAY,EAAE,YAAY;IAGpC,QAAQ;IAIR,eAAe;IAOf,IAAW,iBAAiB,WAE3B;IAEM,qBAAqB,EAAE,QAAQ,EAAE,CAAM;IACvC,qBAAqB,EAAE,QAAQ,EAAE,CAAM;IACvC,kBAAkB,EAAE,QAAQ,EAAE,CAAM;IACpC,kBAAkB,EAAE,QAAQ,EAAE,CAAM;IAC3C,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAiC;IAExE,OAAO,CAAC,sBAAsB;IAa9B,OAAO,CAAC,mBAAmB;IAa3B,sBAAsB;IASf,oBAAoB,CAAC,SAAS,EAAE,QAAQ,GAAG,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM;IAUnE,iBAAiB,CAAC,SAAS,EAAE,QAAQ,GAAG,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM;IAKhE,uBAAuB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAM3C,uBAAuB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAI3C,qBAAqB,CAAC,SAAS,EAAE,QAAQ,GAAG,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM;IAK7E,6BAA6B,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM;IAmB9D,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM;IAY3C,OAAO,CAAC,YAAY;IASpB,wBAAwB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAOjD,gBAAgB,CAAC,EAAE,EAAE,MAAM;IAM3B,oBAAoB;IAiBpB,4BAA4B,CAAC,YAAY,KAAA;IAOlC,iCAAiC,CAAC,IAAI,KAAA,GAAG,QAAQ,EAAE;IAc1D,aAAa,CAAC,WAAW,EAAE,MAAM;IASjC,cAAc;yCApOH,kBAAkB;2CAAlB,kBAAkB;CAgQ9B"}
@@ -6,9 +6,10 @@ import * as i4 from "./migration-routing.module";
6
6
  import * as i5 from "@angular/forms";
7
7
  import * as i6 from "@valtimo/components";
8
8
  import * as i7 from "@ngx-translate/core";
9
+ import * as i8 from "carbon-components-angular";
9
10
  export declare class MigrationModule {
10
11
  static ɵfac: i0.ɵɵFactoryDeclaration<MigrationModule, never>;
11
- static ɵmod: i0.ɵɵNgModuleDeclaration<MigrationModule, [typeof i1.MigrationComponent, typeof i2.MigrationProcessDiagramComponent], [typeof i3.CommonModule, typeof i4.MigrationRoutingModule, typeof i5.ReactiveFormsModule, typeof i6.WidgetModule, typeof i5.FormsModule, typeof i7.TranslateModule], [typeof i1.MigrationComponent]>;
12
+ static ɵmod: i0.ɵɵNgModuleDeclaration<MigrationModule, [typeof i1.MigrationComponent, typeof i2.MigrationProcessDiagramComponent], [typeof i3.CommonModule, typeof i4.MigrationRoutingModule, typeof i5.ReactiveFormsModule, typeof i6.WidgetModule, typeof i5.FormsModule, typeof i7.TranslateModule, typeof i8.ComboBoxModule], [typeof i1.MigrationComponent]>;
12
13
  static ɵinj: i0.ɵɵInjectorDeclaration<MigrationModule>;
13
14
  }
14
15
  //# sourceMappingURL=migration.module.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"migration.module.d.ts","sourceRoot":"","sources":["../../../../projects/valtimo/migration/src/lib/migration.module.ts"],"names":[],"mappings":";;;;;;;;AAyBA,qBAYa,eAAe;yCAAf,eAAe;0CAAf,eAAe;0CAAf,eAAe;CAAG"}
1
+ {"version":3,"file":"migration.module.d.ts","sourceRoot":"","sources":["../../../../projects/valtimo/migration/src/lib/migration.module.ts"],"names":[],"mappings":";;;;;;;;;AA0BA,qBAaa,eAAe;yCAAf,eAAe;0CAAf,eAAe;0CAAf,eAAe;CAAG"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@valtimo/migration",
3
3
  "license": "EUPL-1.2",
4
- "version": "12.42.0",
4
+ "version": "12.43.0",
5
5
  "peerDependencies": {
6
6
  "@angular/common": "17.3.12",
7
7
  "@angular/core": "17.3.12"