@valtimo/process-link 12.14.1 → 13.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/fesm2022/valtimo-process-link.mjs +694 -682
  2. package/fesm2022/valtimo-process-link.mjs.map +1 -1
  3. package/lib/components/choose-process-link-type/choose-process-link-type.component.d.ts.map +1 -1
  4. package/lib/components/form-display-configuration/form-display-configuration.component.d.ts +1 -4
  5. package/lib/components/form-display-configuration/form-display-configuration.component.d.ts.map +1 -1
  6. package/lib/components/form-flow/form-flow.component.d.ts +1 -1
  7. package/lib/components/form-flow/form-flow.component.d.ts.map +1 -1
  8. package/lib/components/form-flow-configuration-container/form-flow-configuration-container.component.d.ts.map +1 -1
  9. package/lib/components/form-link-process-diagram/form-link-process-diagram.component.d.ts +1 -1
  10. package/lib/components/form-link-process-diagram/form-link-process-diagram.component.d.ts.map +1 -1
  11. package/lib/components/import-plugin-configuration/import-plugin-configuration.component.d.ts.map +1 -1
  12. package/lib/components/plugin-action-configuration/plugin-action-configuration.component.d.ts.map +1 -1
  13. package/lib/components/process-link/process-link.component.d.ts.map +1 -1
  14. package/lib/components/process-link-modal/process-link-modal.component.d.ts +1 -1
  15. package/lib/components/process-link-modal/process-link-modal.component.d.ts.map +1 -1
  16. package/lib/components/select-form/select-form.component.d.ts +12 -9
  17. package/lib/components/select-form/select-form.component.d.ts.map +1 -1
  18. package/lib/components/select-form-flow/select-form-flow.component.d.ts +14 -12
  19. package/lib/components/select-form-flow/select-form-flow.component.d.ts.map +1 -1
  20. package/lib/components/select-plugin-action/select-plugin-action.component.d.ts +3 -2
  21. package/lib/components/select-plugin-action/select-plugin-action.component.d.ts.map +1 -1
  22. package/lib/components/select-plugin-configuration/select-plugin-configuration.component.d.ts.map +1 -1
  23. package/lib/components/select-ui-component/select-ui-component.component.d.ts.map +1 -1
  24. package/lib/models/form-link.model.d.ts +1 -0
  25. package/lib/models/form-link.model.d.ts.map +1 -1
  26. package/lib/models/process-link.model.d.ts +48 -4
  27. package/lib/models/process-link.model.d.ts.map +1 -1
  28. package/lib/process-link.module.d.ts +11 -12
  29. package/lib/process-link.module.d.ts.map +1 -1
  30. package/lib/services/form-flow.service.d.ts +6 -8
  31. package/lib/services/form-flow.service.d.ts.map +1 -1
  32. package/lib/services/index.d.ts +2 -0
  33. package/lib/services/index.d.ts.map +1 -1
  34. package/lib/services/process-link-button.service.d.ts.map +1 -1
  35. package/lib/services/process-link-state.service.d.ts +20 -8
  36. package/lib/services/process-link-state.service.d.ts.map +1 -1
  37. package/lib/services/process-link-step.service.d.ts.map +1 -1
  38. package/lib/services/process-link.service.d.ts +6 -4
  39. package/lib/services/process-link.service.d.ts.map +1 -1
  40. package/lib/services/url-resolver.service.d.ts.map +1 -1
  41. package/lib/services/url-validator.service.d.ts.map +1 -1
  42. package/package.json +4 -6
  43. package/public-api.d.ts +1 -5
  44. package/public-api.d.ts.map +1 -1
  45. package/esm2022/lib/components/choose-process-link-type/choose-process-link-type.component.mjs +0 -38
  46. package/esm2022/lib/components/choose-process-link-type/index.mjs +0 -17
  47. package/esm2022/lib/components/form-display-configuration/form-display-configuration.component.mjs +0 -119
  48. package/esm2022/lib/components/form-flow/form-flow.component.mjs +0 -206
  49. package/esm2022/lib/components/form-flow-configuration-container/form-flow-configuration-container.component.mjs +0 -107
  50. package/esm2022/lib/components/form-flow-configuration-container/index.mjs +0 -17
  51. package/esm2022/lib/components/form-link-process-diagram/form-link-process-diagram.component.mjs +0 -150
  52. package/esm2022/lib/components/import-plugin-configuration/import-plugin-configuration.component.mjs +0 -133
  53. package/esm2022/lib/components/plugin-action-configuration/plugin-action-configuration.component.mjs +0 -137
  54. package/esm2022/lib/components/process-link/process-link.component.mjs +0 -69
  55. package/esm2022/lib/components/process-link-modal/process-link-modal.component.mjs +0 -91
  56. package/esm2022/lib/components/select-form/index.mjs +0 -17
  57. package/esm2022/lib/components/select-form/select-form.component.mjs +0 -172
  58. package/esm2022/lib/components/select-form-flow/index.mjs +0 -17
  59. package/esm2022/lib/components/select-form-flow/select-form-flow.component.mjs +0 -160
  60. package/esm2022/lib/components/select-plugin-action/select-plugin-action.component.mjs +0 -74
  61. package/esm2022/lib/components/select-plugin-configuration/select-plugin-configuration.component.mjs +0 -75
  62. package/esm2022/lib/components/select-ui-component/select-ui-component.component.mjs +0 -128
  63. package/esm2022/lib/components/select-url/select-url.component.mjs +0 -125
  64. package/esm2022/lib/constants/index.mjs +0 -18
  65. package/esm2022/lib/constants/injection-tokens.mjs +0 -20
  66. package/esm2022/lib/constants/process.link.mjs +0 -23
  67. package/esm2022/lib/models/form-custom-component.model.mjs +0 -17
  68. package/esm2022/lib/models/form-flow.model.mjs +0 -17
  69. package/esm2022/lib/models/form-link.model.mjs +0 -17
  70. package/esm2022/lib/models/index.mjs +0 -20
  71. package/esm2022/lib/models/process-link-url.model.mjs +0 -17
  72. package/esm2022/lib/models/process-link.model.mjs +0 -17
  73. package/esm2022/lib/process-link-routing.module.mjs +0 -44
  74. package/esm2022/lib/process-link.module.mjs +0 -203
  75. package/esm2022/lib/services/form-flow-component.service.mjs +0 -44
  76. package/esm2022/lib/services/form-flow.service.mjs +0 -59
  77. package/esm2022/lib/services/index.mjs +0 -23
  78. package/esm2022/lib/services/plugin-state.service.mjs +0 -90
  79. package/esm2022/lib/services/process-link-button.service.mjs +0 -106
  80. package/esm2022/lib/services/process-link-state.service.mjs +0 -173
  81. package/esm2022/lib/services/process-link-step.service.mjs +0 -269
  82. package/esm2022/lib/services/process-link.service.mjs +0 -117
  83. package/esm2022/lib/services/url-resolver.service.mjs +0 -18
  84. package/esm2022/lib/services/url-validator.service.mjs +0 -26
  85. package/esm2022/public-api.mjs +0 -34
  86. package/esm2022/valtimo-process-link.mjs +0 -5
  87. package/lib/components/select-url/select-url.component.d.ts +0 -31
  88. package/lib/components/select-url/select-url.component.d.ts.map +0 -1
@@ -1,206 +0,0 @@
1
- /*
2
- * Copyright 2015-2024 Ritense BV, the Netherlands.
3
- *
4
- * Licensed under EUPL, Version 1.2 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" basis,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
17
- import { BehaviorSubject, combineLatest } from 'rxjs';
18
- import { FormioOptionsImpl, } from '@valtimo/components';
19
- import { map } from 'rxjs/operators';
20
- import * as i0 from "@angular/core";
21
- import * as i1 from "../../services";
22
- import * as i2 from "@valtimo/components";
23
- import * as i3 from "@ngx-translate/core";
24
- import * as i4 from "@valtimo/config";
25
- import * as i5 from "@angular/common";
26
- import * as i6 from "carbon-components-angular";
27
- import * as i7 from "../form-flow-configuration-container/form-flow-configuration-container.component";
28
- export class FormFlowComponent {
29
- set formFlowInstanceId(value) {
30
- this.formFlowInstanceId$.next(value);
31
- if (value)
32
- this.getBreadcrumbs();
33
- }
34
- constructor(formFlowService, modalService, translateService, configService) {
35
- this.formFlowService = formFlowService;
36
- this.modalService = modalService;
37
- this.translateService = translateService;
38
- this.configService = configService;
39
- this.formIoFormData = new BehaviorSubject(null);
40
- this.formFlowComplete = new EventEmitter();
41
- this.formFlowChange = new EventEmitter();
42
- this.breadcrumbs$ = new BehaviorSubject([]);
43
- this.disabled$ = new BehaviorSubject(false);
44
- this.formFlowStepType$ = new BehaviorSubject(null);
45
- this.FormFlowCustomComponentId$ = new BehaviorSubject('');
46
- this.currentStepIndex$ = new BehaviorSubject(0);
47
- this.enableFormFlowBreadcrumbs$ = this.configService.getFeatureToggleObservable('enableFormFlowBreadcrumbs');
48
- this.formFlowInstanceId$ = new BehaviorSubject('');
49
- this.formFlowStepInstanceId = null;
50
- this.formioOptions = new FormioOptionsImpl();
51
- this.formioOptions.disableAlerts = true;
52
- }
53
- ngOnInit() {
54
- this.getFormFlowStep();
55
- }
56
- ngOnDestroy() {
57
- this._breadcrumbsSubscription?.unsubscribe();
58
- }
59
- onChange(event) {
60
- if (!event?.data)
61
- return;
62
- this.formIoFormData.next(event.data);
63
- this.formFlowChange.emit();
64
- }
65
- onSubmit(submission) {
66
- this.disable();
67
- if (submission.data) {
68
- this.formIoFormData.next(submission.data);
69
- }
70
- if (submission.data.submit &&
71
- this.formFlowInstanceId$.getValue() &&
72
- this.formFlowStepInstanceId) {
73
- this.formFlowService
74
- .submitStep(this.formFlowInstanceId$.getValue(), this.formFlowStepInstanceId, this.formIoFormData.getValue())
75
- .subscribe({
76
- next: (result) => {
77
- this.handleFormFlowStep(result);
78
- },
79
- error: errors => {
80
- this.form?.showErrors(errors);
81
- this.enable();
82
- },
83
- });
84
- }
85
- else if (submission.data['back']) {
86
- this.back(submission.data);
87
- }
88
- }
89
- onEvent(submission) {
90
- if (submission.data['back'] || submission.type == 'back') {
91
- this.back(submission.data);
92
- }
93
- }
94
- saveData() {
95
- const formIoFormDataValue = this.formIoFormData.getValue();
96
- if (formIoFormDataValue && this.formFlowInstanceId$.getValue()) {
97
- this.formFlowService.save(this.formFlowInstanceId$.getValue(), formIoFormDataValue).subscribe(() => null, errors => this.form.showErrors(errors));
98
- }
99
- }
100
- onStepSelected(event) {
101
- const submissionData = this.formIoFormData.getValue().data;
102
- this.disable();
103
- this.currentStepIndex$.next(event.index);
104
- if (!this.formFlowInstanceId$.getValue() || !this.formFlowStepInstanceId)
105
- return;
106
- this.formFlowService
107
- .navigateToStep(this.formFlowInstanceId$.getValue(), this.formFlowStepInstanceId, event.step.stepInstanceId, submissionData)
108
- .subscribe({
109
- next: (result) => this.handleFormFlowStep(result),
110
- error: errors => {
111
- this.form?.showErrors(errors);
112
- this.enable();
113
- },
114
- });
115
- }
116
- getBreadcrumbs() {
117
- if (!this.formFlowInstanceId$.getValue() ||
118
- !this.configService.getFeatureToggle('enableFormFlowBreadcrumbs')) {
119
- return;
120
- }
121
- this._breadcrumbsSubscription?.unsubscribe();
122
- this._breadcrumbsSubscription = combineLatest([
123
- this.formFlowService.getBreadcrumbs(this.formFlowInstanceId$.getValue()),
124
- this.translateService.stream('key'),
125
- ])
126
- .pipe(map(([breadcrumbs]) => breadcrumbs))
127
- .subscribe(breadcrumbs => {
128
- const classElement = document.getElementsByClassName('cds--progress-step--current');
129
- this.currentStepIndex$.next(breadcrumbs.currentStepIndex);
130
- this.breadcrumbs$.next(breadcrumbs.breadcrumbs.map(breadcrumb => ({
131
- label: breadcrumb.title ??
132
- this.translateService.instant(`formFlow.step.${breadcrumb.key}.title`) ??
133
- breadcrumb.key,
134
- disabled: breadcrumb.stepInstanceId === null,
135
- complete: breadcrumb.completed,
136
- stepInstanceId: breadcrumb.stepInstanceId,
137
- })));
138
- if (classElement.length > 0) {
139
- classElement[0].scrollIntoView({ behavior: 'smooth', inline: 'center' });
140
- }
141
- });
142
- }
143
- getFormFlowStep() {
144
- if (!this.formFlowInstanceId$.getValue())
145
- return;
146
- this.formFlowService
147
- .getFormFlowStep(this.formFlowInstanceId$.getValue())
148
- .subscribe((result) => {
149
- this.handleFormFlowStep(result);
150
- });
151
- }
152
- back(submissionData) {
153
- if (!this.formFlowInstanceId$.getValue())
154
- return;
155
- this.formFlowService.back(this.formFlowInstanceId$.getValue(), submissionData).subscribe({
156
- next: (result) => this.handleFormFlowStep(result),
157
- error: errors => {
158
- this.form?.showErrors(errors);
159
- this.enable();
160
- },
161
- });
162
- }
163
- handleFormFlowStep(formFlowInstance) {
164
- if (formFlowInstance.step === null) {
165
- this.formFlowStepType$.next(null);
166
- this.FormFlowCustomComponentId$.next('');
167
- this.formFlowInstanceId$.next(null);
168
- this.formFlowStepInstanceId = null;
169
- this.formFlowComplete.emit(null);
170
- }
171
- else {
172
- this.getBreadcrumbs();
173
- this.modalService.scrollToTop();
174
- this.formFlowStepType$.next(formFlowInstance.step?.type ?? null);
175
- this.FormFlowCustomComponentId$.next(formFlowInstance?.step?.typeProperties?.id || '');
176
- this.formFlowInstanceId$.next(formFlowInstance.id);
177
- this.formFlowStepInstanceId = formFlowInstance.step?.id ?? null;
178
- this.formDefinition = formFlowInstance.step?.typeProperties.definition;
179
- }
180
- this.enable();
181
- }
182
- disable() {
183
- this.disabled$.next(true);
184
- }
185
- enable() {
186
- this.disabled$.next(false);
187
- }
188
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormFlowComponent, deps: [{ token: i1.FormFlowService }, { token: i2.ValtimoModalService }, { token: i3.TranslateService }, { token: i4.ConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
189
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FormFlowComponent, selector: "valtimo-form-flow", inputs: { formIoFormData: "formIoFormData", formFlowInstanceId: "formFlowInstanceId" }, outputs: { formFlowComplete: "formFlowComplete", formFlowChange: "formFlowChange" }, viewQueries: [{ propertyName: "form", first: true, predicate: ["form"], 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\n *ngIf=\"{\n breadcrumbs: breadcrumbs$ | async,\n currentStepIndex: currentStepIndex$ | async,\n enableFormFlowBreadcrumbs: enableFormFlowBreadcrumbs$ | async,\n formFlowInstanceId: formFlowInstanceId$ | async,\n } as obs\"\n>\n <div *ngIf=\"formDefinition && (formFlowStepType$ | async) === 'form'\">\n <div *ngIf=\"obs.enableFormFlowBreadcrumbs\" class=\"form-flow__progress-bar-indicator\">\n <cds-progress-indicator\n [spacing]=\"'equal'\"\n [skeleton]=\"obs.breadcrumbs.length === 0\"\n [current]=\"obs.currentStepIndex\"\n [steps]=\"obs.breadcrumbs\"\n (stepSelected)=\"onStepSelected($event)\"\n >\n </cds-progress-indicator>\n </div>\n\n <valtimo-form-io\n #form\n [form]=\"formDefinition\"\n (submit)=\"onSubmit($event)\"\n (change)=\"onChange($event)\"\n (event)=\"onEvent($event)\"\n [options]=\"formioOptions\"\n ></valtimo-form-io>\n </div>\n\n <div *ngIf=\"(formFlowStepType$ | async) === 'custom-component'\">\n <valtimo-form-flow-configuration-container\n [componentId]=\"FormFlowCustomComponentId$ | async\"\n [formFlowInstanceId]=\"obs.formFlowInstanceId\"\n [disabled]=\"disabled$ | async\"\n (submitEvent)=\"onSubmit($event)\"\n (changeEvent)=\"onChange($event)\"\n >\n </valtimo-form-flow-configuration-container>\n </div>\n</div>\n", styles: [".form-flow__progress-bar-indicator{height:64px;overflow-x:auto;-ms-overflow-style:none;scrollbar-width:none}.form-flow__progress-bar-indicator ::-webkit-scrollbar{display:none}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.ProgressIndicator, selector: "cds-progress-indicator, ibm-progress-indicator", inputs: ["current", "steps", "translations", "orientation", "skeleton", "spacing"], outputs: ["stepSelected"] }, { kind: "component", type: i2.FormioComponent, selector: "valtimo-form-io", inputs: ["options", "submission", "form", "readOnly", "formRefresh$"], outputs: ["submit", "change", "event"] }, { kind: "component", type: i7.FormFlowConfigurationContainerComponent, selector: "valtimo-form-flow-configuration-container", inputs: ["disabled", "componentId", "formFlowInstanceId"], outputs: ["changeEvent", "submitEvent"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }] }); }
190
- }
191
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormFlowComponent, decorators: [{
192
- type: Component,
193
- args: [{ selector: 'valtimo-form-flow', 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\n *ngIf=\"{\n breadcrumbs: breadcrumbs$ | async,\n currentStepIndex: currentStepIndex$ | async,\n enableFormFlowBreadcrumbs: enableFormFlowBreadcrumbs$ | async,\n formFlowInstanceId: formFlowInstanceId$ | async,\n } as obs\"\n>\n <div *ngIf=\"formDefinition && (formFlowStepType$ | async) === 'form'\">\n <div *ngIf=\"obs.enableFormFlowBreadcrumbs\" class=\"form-flow__progress-bar-indicator\">\n <cds-progress-indicator\n [spacing]=\"'equal'\"\n [skeleton]=\"obs.breadcrumbs.length === 0\"\n [current]=\"obs.currentStepIndex\"\n [steps]=\"obs.breadcrumbs\"\n (stepSelected)=\"onStepSelected($event)\"\n >\n </cds-progress-indicator>\n </div>\n\n <valtimo-form-io\n #form\n [form]=\"formDefinition\"\n (submit)=\"onSubmit($event)\"\n (change)=\"onChange($event)\"\n (event)=\"onEvent($event)\"\n [options]=\"formioOptions\"\n ></valtimo-form-io>\n </div>\n\n <div *ngIf=\"(formFlowStepType$ | async) === 'custom-component'\">\n <valtimo-form-flow-configuration-container\n [componentId]=\"FormFlowCustomComponentId$ | async\"\n [formFlowInstanceId]=\"obs.formFlowInstanceId\"\n [disabled]=\"disabled$ | async\"\n (submitEvent)=\"onSubmit($event)\"\n (changeEvent)=\"onChange($event)\"\n >\n </valtimo-form-flow-configuration-container>\n </div>\n</div>\n", styles: [".form-flow__progress-bar-indicator{height:64px;overflow-x:auto;-ms-overflow-style:none;scrollbar-width:none}.form-flow__progress-bar-indicator ::-webkit-scrollbar{display:none}\n"] }]
194
- }], ctorParameters: () => [{ type: i1.FormFlowService }, { type: i2.ValtimoModalService }, { type: i3.TranslateService }, { type: i4.ConfigService }], propDecorators: { form: [{
195
- type: ViewChild,
196
- args: ['form']
197
- }], formIoFormData: [{
198
- type: Input
199
- }], formFlowInstanceId: [{
200
- type: Input
201
- }], formFlowComplete: [{
202
- type: Output
203
- }], formFlowChange: [{
204
- type: Output
205
- }] } });
206
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1mbG93LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vcHJvY2Vzcy1saW5rL3NyYy9saWIvY29tcG9uZW50cy9mb3JtLWZsb3cvZm9ybS1mbG93LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vcHJvY2Vzcy1saW5rL3NyYy9saWIvY29tcG9uZW50cy9mb3JtLWZsb3cvZm9ybS1mbG93LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ25HLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFlLE1BQU0sTUFBTSxDQUFDO0FBRWxFLE9BQU8sRUFFTCxpQkFBaUIsR0FJbEIsTUFBTSxxQkFBcUIsQ0FBQztBQU03QixPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7OztBQU9uQyxNQUFNLE9BQU8saUJBQWlCO0lBTTVCLElBQW9CLGtCQUFrQixDQUFDLEtBQW9CO1FBQ3pELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFckMsSUFBSSxLQUFLO1lBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFzQkQsWUFDbUIsZUFBZ0MsRUFDaEMsWUFBaUMsRUFDakMsZ0JBQWtDLEVBQ2xDLGFBQTRCO1FBSDVCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFDakMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQWpDdEIs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QyxVQUFVLENBQUM7UUFDekUsQ0FBQztRQUVELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRU8sT0FBTztRQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFTyxNQUFNO1FBQ1osSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQzsrR0F6TlUsaUJBQWlCO21HQUFqQixpQkFBaUIsb1VDdEM5Qiw2Z0VBeURBOzs0RkRuQmEsaUJBQWlCO2tCQUw3QixTQUFTOytCQUNFLG1CQUFtQjtpTEFLTSxJQUFJO3NCQUF0QyxTQUFTO3VCQUFDLE1BQU07Z0JBRVEsY0FBYztzQkFBdEMsS0FBSztnQkFHYyxrQkFBa0I7c0JBQXJDLEtBQUs7Z0JBTW9CLGdCQUFnQjtzQkFBekMsTUFBTTtnQkFDbUIsY0FBYztzQkFBdkMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0Zvcm1pb0Zvcm19IGZyb20gJ0Bmb3JtaW8vYW5ndWxhcic7XG5pbXBvcnQge1xuICBGb3JtaW9Db21wb25lbnQsXG4gIEZvcm1pb09wdGlvbnNJbXBsLFxuICBGb3JtaW9TdWJtaXNzaW9uLFxuICBWYWx0aW1vRm9ybWlvT3B0aW9ucyxcbiAgVmFsdGltb01vZGFsU2VydmljZSxcbn0gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge0Zvcm1GbG93U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtGb3JtRmxvd0luc3RhbmNlLCBGb3JtRmxvd1N0ZXBUeXBlfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7U3RlcH0gZnJvbSAnY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhcic7XG5pbXBvcnQge0NvbmZpZ1NlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL2NvbmZpZyc7XG5pbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLWZvcm0tZmxvdycsXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWZsb3cuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mb3JtLWZsb3cuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybUZsb3dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ2Zvcm0nKSBwdWJsaWMgcmVhZG9ubHkgZm9ybTogRm9ybWlvQ29tcG9uZW50O1xuXG4gIEBJbnB1dCgpIHB1YmxpYyByZWFkb25seSBmb3JtSW9Gb3JtRGF0YTogQmVoYXZpb3JTdWJqZWN0PGFueSB8IG51bGw+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KFxuICAgIG51bGxcbiAgKTtcbiAgQElucHV0KCkgcHVibGljIHNldCBmb3JtRmxvd0luc3RhbmNlSWQodmFsdWU6IHN0cmluZyB8IG51bGwpIHtcbiAgICB0aGlzLmZvcm1GbG93SW5zdGFuY2VJZCQubmV4dCh2YWx1ZSk7XG5cbiAgICBpZiAodmFsdWUpIHRoaXMuZ2V0QnJlYWRjcnVtYnMoKTtcbiAgfVxuXG4gIEBPdXRwdXQoKSBwdWJsaWMgcmVhZG9ubHkgZm9ybUZsb3dDb21wbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBmb3JtRmxvd0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwdWJsaWMgZm9ybURlZmluaXRpb246IEZvcm1pb0Zvcm07XG4gIHB1YmxpYyBmb3JtaW9PcHRpb25zOiBWYWx0aW1vRm9ybWlvT3B0aW9ucztcblxuICBwdWJsaWMgcmVhZG9ubHkgYnJlYWRjcnVtYnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTdGVwW10+KFtdKTtcbiAgcHVibGljIHJlYWRvbmx5IGRpc2FibGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgZm9ybUZsb3dTdGVwVHlwZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEZvcm1GbG93U3RlcFR5cGUgfCBudWxsPihudWxsKTtcbiAgcHVibGljIHJlYWRvbmx5IEZvcm1GbG93Q3VzdG9tQ29tcG9uZW50SWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgcHVibGljIHJlYWRvbmx5IGN1cnJlbnRTdGVwSW5kZXgkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApO1xuICBwdWJsaWMgcmVhZG9ubHkgZW5hYmxlRm9ybUZsb3dCcmVhZGNydW1icyQgPSB0aGlzLmNvbmZpZ1NlcnZpY2UuZ2V0RmVhdHVyZVRvZ2dsZU9ic2VydmFibGUoXG4gICAgJ2VuYWJsZUZvcm1GbG93QnJlYWRjcnVtYnMnXG4gICk7XG4gIHB1YmxpYyByZWFkb25seSBmb3JtRmxvd0luc3RhbmNlSWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmcgfCBudWxsPignJyk7XG5cbiAgcHJpdmF0ZSBmb3JtRmxvd1N0ZXBJbnN0YW5jZUlkOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIF9icmVhZGNydW1ic1N1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm1GbG93U2VydmljZTogRm9ybUZsb3dTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbW9kYWxTZXJ2aWNlOiBWYWx0aW1vTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5mb3JtaW9PcHRpb25zID0gbmV3IEZvcm1pb09wdGlvbnNJbXBsKCk7XG4gICAgdGhpcy5mb3JtaW9PcHRpb25zLmRpc2FibGVBbGVydHMgPSB0cnVlO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZ2V0Rm9ybUZsb3dTdGVwKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fYnJlYWRjcnVtYnNTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgb25DaGFuZ2UoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGlmICghZXZlbnQ/LmRhdGEpIHJldHVybjtcblxuICAgIHRoaXMuZm9ybUlvRm9ybURhdGEubmV4dChldmVudC5kYXRhKTtcbiAgICB0aGlzLmZvcm1GbG93Q2hhbmdlLmVtaXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBvblN1Ym1pdChzdWJtaXNzaW9uOiBGb3JtaW9TdWJtaXNzaW9uKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlKCk7XG5cbiAgICBpZiAoc3VibWlzc2lvbi5kYXRhKSB7XG4gICAgICB0aGlzLmZvcm1Jb0Zvcm1EYXRhLm5leHQoc3VibWlzc2lvbi5kYXRhKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBzdWJtaXNzaW9uLmRhdGEuc3VibWl0ICYmXG4gICAgICB0aGlzLmZvcm1GbG93SW5zdGFuY2VJZCQuZ2V0VmFsdWUoKSAmJlxuICAgICAgdGhpcy5mb3JtRmxvd1N0ZXBJbnN0YW5jZUlkXG4gICAgKSB7XG4gICAgICB0aGlzLmZvcm1GbG93U2VydmljZVxuICAgICAgICAuc3VibWl0U3RlcChcbiAgICAgICAgICB0aGlzLmZvcm1GbG93SW5zdGFuY2VJZCQuZ2V0VmFsdWUoKSxcbiAgICAgICAgICB0aGlzLmZvcm1GbG93U3RlcEluc3RhbmNlSWQsXG4gICAgICAgICAgdGhpcy5mb3JtSW9Gb3JtRGF0YS5nZXRWYWx1ZSgpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogKHJlc3VsdDogRm9ybUZsb3dJbnN0YW5jZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVGb3JtRmxvd1N0ZXAocmVzdWx0KTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yOiBlcnJvcnMgPT4ge1xuICAgICAgICAgICAgdGhpcy5mb3JtPy5zaG93RXJyb3JzKGVycm9ycyk7XG4gICAgICAgICAgICB0aGlzLmVuYWJsZSgpO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoc3VibWlzc2lvbi5kYXRhWydiYWNrJ10pIHtcbiAgICAgIHRoaXMuYmFjayhzdWJtaXNzaW9uLmRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkV2ZW50KHN1Ym1pc3Npb246IGFueSk6IHZvaWQge1xuICAgIGlmIChzdWJtaXNzaW9uLmRhdGFbJ2JhY2snXSB8fCBzdWJtaXNzaW9uLnR5cGUgPT0gJ2JhY2snKSB7XG4gICAgICB0aGlzLmJhY2soc3VibWlzc2lvbi5kYXRhKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2F2ZURhdGEoKTogdm9pZCB7XG4gICAgY29uc3QgZm9ybUlvRm9ybURhdGFWYWx1ZSA9IHRoaXMuZm9ybUlvRm9ybURhdGEuZ2V0VmFsdWUoKTtcblxuICAgIGlmIChmb3JtSW9Gb3JtRGF0YVZhbHVlICYmIHRoaXMuZm9ybUZsb3dJbnN0YW5jZUlkJC5nZXRWYWx1ZSgpKSB7XG4gICAgICB0aGlzLmZvcm1GbG93U2VydmljZS5zYXZlKHRoaXMuZm9ybUZsb3dJbnN0YW5jZUlkJC5nZXRWYWx1ZSgpLCBmb3JtSW9Gb3JtRGF0YVZhbHVlKS5zdWJzY3JpYmUoXG4gICAgICAgICgpID0+IG51bGwsXG4gICAgICAgIGVycm9ycyA9PiB0aGlzLmZvcm0uc2hvd0Vycm9ycyhlcnJvcnMpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvblN0ZXBTZWxlY3RlZChldmVudDoge3N0ZXA6IHtzdGVwSW5zdGFuY2VJZDogc3RyaW5nfTsgaW5kZXg6IG51bWJlcn0pOiB2b2lkIHtcbiAgICBjb25zdCBzdWJtaXNzaW9uRGF0YSA9IHRoaXMuZm9ybUlvRm9ybURhdGEuZ2V0VmFsdWUoKS5kYXRhO1xuXG4gICAgdGhpcy5kaXNhYmxlKCk7XG5cbiAgICB0aGlzLmN1cnJlbnRTdGVwSW5kZXgkLm5leHQoZXZlbnQuaW5kZXgpO1xuXG4gICAgaWYgKCF0aGlzLmZvcm1GbG93SW5zdGFuY2VJZCQuZ2V0VmFsdWUoKSB8fCAhdGhpcy5mb3JtRmxvd1N0ZXBJbnN0YW5jZUlkKSByZXR1cm47XG5cbiAgICB0aGlzLmZvcm1GbG93U2VydmljZVxuICAgICAgLm5hdmlnYXRlVG9TdGVwKFxuICAgICAgICB0aGlzLmZvcm1GbG93SW5zdGFuY2VJZCQuZ2V0VmFsdWUoKSxcbiAgICAgICAgdGhpcy5mb3JtRmxvd1N0ZXBJbnN0YW5jZUlkLFxuICAgICAgICBldmVudC5zdGVwLnN0ZXBJbnN0YW5jZUlkLFxuICAgICAgICBzdWJtaXNzaW9uRGF0YVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXN1bHQ6IEZvcm1GbG93SW5zdGFuY2UpID0+IHRoaXMuaGFuZGxlRm9ybUZsb3dTdGVwKHJlc3VsdCksXG4gICAgICAgIGVycm9yOiBlcnJvcnMgPT4ge1xuICAgICAgICAgIHRoaXMuZm9ybT8uc2hvd0Vycm9ycyhlcnJvcnMpO1xuICAgICAgICAgIHRoaXMuZW5hYmxlKCk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QnJlYWRjcnVtYnMoKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgIXRoaXMuZm9ybUZsb3dJbnN0YW5jZUlkJC5nZXRWYWx1ZSgpIHx8XG4gICAgICAhdGhpcy5jb25maWdTZXJ2aWNlLmdldEZlYXR1cmVUb2dnbGUoJ2VuYWJsZUZvcm1GbG93QnJlYWRjcnVtYnMnKVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2JyZWFkY3J1bWJzU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy5fYnJlYWRjcnVtYnNTdWJzY3JpcHRpb24gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuZm9ybUZsb3dTZXJ2aWNlLmdldEJyZWFkY3J1bWJzKHRoaXMuZm9ybUZsb3dJbnN0YW5jZUlkJC5nZXRWYWx1ZSgpKSxcbiAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5zdHJlYW0oJ2tleScpLFxuICAgIF0pXG4gICAgICAucGlwZShtYXAoKFticmVhZGNydW1ic10pID0+IGJyZWFkY3J1bWJzKSlcbiAgICAgIC5zdWJzY3JpYmUoYnJlYWRjcnVtYnMgPT4ge1xuICAgICAgICBjb25zdCBjbGFzc0VsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdjZHMtLXByb2dyZXNzLXN0ZXAtLWN1cnJlbnQnKTtcblxuICAgICAgICB0aGlzLmN1cnJlbnRTdGVwSW5kZXgkLm5leHQoYnJlYWRjcnVtYnMuY3VycmVudFN0ZXBJbmRleCk7XG5cbiAgICAgICAgdGhpcy5icmVhZGNydW1icyQubmV4dChcbiAgICAgICAgICBicmVhZGNydW1icy5icmVhZGNydW1icy5tYXAoYnJlYWRjcnVtYiA9PiAoe1xuICAgICAgICAgICAgbGFiZWw6XG4gICAgICAgICAgICAgIGJyZWFkY3J1bWIudGl0bGUgPz9cbiAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoYGZvcm1GbG93LnN0ZXAuJHticmVhZGNydW1iLmtleX0udGl0bGVgKSA/P1xuICAgICAgICAgICAgICBicmVhZGNydW1iLmtleSxcbiAgICAgICAgICAgIGRpc2FibGVkOiBicmVhZGNydW1iLnN0ZXBJbnN0YW5jZUlkID09PSBudWxsLFxuICAgICAgICAgICAgY29tcGxldGU6IGJyZWFkY3J1bWIuY29tcGxldGVkLFxuICAgICAgICAgICAgc3RlcEluc3RhbmNlSWQ6IGJyZWFkY3J1bWIuc3RlcEluc3RhbmNlSWQsXG4gICAgICAgICAgfSkpXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGNsYXNzRWxlbWVudC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY2xhc3NFbGVtZW50WzBdLnNjcm9sbEludG9WaWV3KHtiZWhhdmlvcjogJ3Ntb290aCcsIGlubGluZTogJ2NlbnRlcid9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldEZvcm1GbG93U3RlcCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZm9ybUZsb3dJbnN0YW5jZUlkJC5nZXRWYWx1ZSgpKSByZXR1cm47XG5cbiAgICB0aGlzLmZvcm1GbG93U2VydmljZVxuICAgICAgLmdldEZvcm1GbG93U3RlcCh0aGlzLmZvcm1GbG93SW5zdGFuY2VJZCQuZ2V0VmFsdWUoKSlcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdDogRm9ybUZsb3dJbnN0YW5jZSkgPT4ge1xuICAgICAgICB0aGlzLmhhbmRsZUZvcm1GbG93U3RlcChyZXN1bHQpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGJhY2soc3VibWlzc2lvbkRhdGE6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5mb3JtRmxvd0luc3RhbmNlSWQkLmdldFZhbHVlKCkpIHJldHVybjtcblxuICAgIHRoaXMuZm9ybUZsb3dTZXJ2aWNlLmJhY2sodGhpcy5mb3JtRmxvd0luc3RhbmNlSWQkLmdldFZhbHVlKCksIHN1Ym1pc3Npb25EYXRhKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlc3VsdDogRm9ybUZsb3dJbnN0YW5jZSkgPT4gdGhpcy5oYW5kbGVGb3JtRmxvd1N0ZXAocmVzdWx0KSxcbiAgICAgIGVycm9yOiBlcnJvcnMgPT4ge1xuICAgICAgICB0aGlzLmZvcm0/LnNob3dFcnJvcnMoZXJyb3JzKTtcbiAgICAgICAgdGhpcy5lbmFibGUoKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUZvcm1GbG93U3RlcChmb3JtRmxvd0luc3RhbmNlOiBGb3JtRmxvd0luc3RhbmNlKTogdm9pZCB7XG4gICAgaWYgKGZvcm1GbG93SW5zdGFuY2Uuc3RlcCA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5mb3JtRmxvd1N0ZXBUeXBlJC5uZXh0KG51bGwpO1xuICAgICAgdGhpcy5Gb3JtRmxvd0N1c3RvbUNvbXBvbmVudElkJC5uZXh0KCcnKTtcbiAgICAgIHRoaXMuZm9ybUZsb3dJbnN0YW5jZUlkJC5uZXh0KG51bGwpO1xuICAgICAgdGhpcy5mb3JtRmxvd1N0ZXBJbnN0YW5jZUlkID0gbnVsbDtcbiAgICAgIHRoaXMuZm9ybUZsb3dDb21wbGV0ZS5lbWl0KG51bGwpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmdldEJyZWFkY3J1bWJzKCk7XG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5zY3JvbGxUb1RvcCgpO1xuICAgICAgdGhpcy5mb3JtRmxvd1N0ZXBUeXBlJC5uZXh0KGZvcm1GbG93SW5zdGFuY2Uuc3RlcD8udHlwZSA/PyBudWxsKTtcbiAgICAgIHRoaXMuRm9ybUZsb3dDdXN0b21Db21wb25lbnRJZCQubmV4dChmb3JtRmxvd0luc3RhbmNlPy5zdGVwPy50eXBlUHJvcGVydGllcz8uaWQgfHwgJycpO1xuICAgICAgdGhpcy5mb3JtRmxvd0luc3RhbmNlSWQkLm5leHQoZm9ybUZsb3dJbnN0YW5jZS5pZCk7XG4gICAgICB0aGlzLmZvcm1GbG93U3RlcEluc3RhbmNlSWQgPSBmb3JtRmxvd0luc3RhbmNlLnN0ZXA/LmlkID8/IG51bGw7XG4gICAgICB0aGlzLmZvcm1EZWZpbml0aW9uID0gZm9ybUZsb3dJbnN0YW5jZS5zdGVwPy50eXBlUHJvcGVydGllcy5kZWZpbml0aW9uO1xuICAgIH1cblxuICAgIHRoaXMuZW5hYmxlKCk7XG4gIH1cblxuICBwcml2YXRlIGRpc2FibGUoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgZW5hYmxlKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQkLm5leHQoZmFsc2UpO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjxkaXZcbiAgKm5nSWY9XCJ7XG4gICAgYnJlYWRjcnVtYnM6IGJyZWFkY3J1bWJzJCB8IGFzeW5jLFxuICAgIGN1cnJlbnRTdGVwSW5kZXg6IGN1cnJlbnRTdGVwSW5kZXgkIHwgYXN5bmMsXG4gICAgZW5hYmxlRm9ybUZsb3dCcmVhZGNydW1iczogZW5hYmxlRm9ybUZsb3dCcmVhZGNydW1icyQgfCBhc3luYyxcbiAgICBmb3JtRmxvd0luc3RhbmNlSWQ6IGZvcm1GbG93SW5zdGFuY2VJZCQgfCBhc3luYyxcbiAgfSBhcyBvYnNcIlxuPlxuICA8ZGl2ICpuZ0lmPVwiZm9ybURlZmluaXRpb24gJiYgKGZvcm1GbG93U3RlcFR5cGUkIHwgYXN5bmMpID09PSAnZm9ybSdcIj5cbiAgICA8ZGl2ICpuZ0lmPVwib2JzLmVuYWJsZUZvcm1GbG93QnJlYWRjcnVtYnNcIiBjbGFzcz1cImZvcm0tZmxvd19fcHJvZ3Jlc3MtYmFyLWluZGljYXRvclwiPlxuICAgICAgPGNkcy1wcm9ncmVzcy1pbmRpY2F0b3JcbiAgICAgICAgW3NwYWNpbmddPVwiJ2VxdWFsJ1wiXG4gICAgICAgIFtza2VsZXRvbl09XCJvYnMuYnJlYWRjcnVtYnMubGVuZ3RoID09PSAwXCJcbiAgICAgICAgW2N1cnJlbnRdPVwib2JzLmN1cnJlbnRTdGVwSW5kZXhcIlxuICAgICAgICBbc3RlcHNdPVwib2JzLmJyZWFkY3J1bWJzXCJcbiAgICAgICAgKHN0ZXBTZWxlY3RlZCk9XCJvblN0ZXBTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgIDwvY2RzLXByb2dyZXNzLWluZGljYXRvcj5cbiAgICA8L2Rpdj5cblxuICAgIDx2YWx0aW1vLWZvcm0taW9cbiAgICAgICNmb3JtXG4gICAgICBbZm9ybV09XCJmb3JtRGVmaW5pdGlvblwiXG4gICAgICAoc3VibWl0KT1cIm9uU3VibWl0KCRldmVudClcIlxuICAgICAgKGNoYW5nZSk9XCJvbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgIChldmVudCk9XCJvbkV2ZW50KCRldmVudClcIlxuICAgICAgW29wdGlvbnNdPVwiZm9ybWlvT3B0aW9uc1wiXG4gICAgPjwvdmFsdGltby1mb3JtLWlvPlxuICA8L2Rpdj5cblxuICA8ZGl2ICpuZ0lmPVwiKGZvcm1GbG93U3RlcFR5cGUkIHwgYXN5bmMpID09PSAnY3VzdG9tLWNvbXBvbmVudCdcIj5cbiAgICA8dmFsdGltby1mb3JtLWZsb3ctY29uZmlndXJhdGlvbi1jb250YWluZXJcbiAgICAgIFtjb21wb25lbnRJZF09XCJGb3JtRmxvd0N1c3RvbUNvbXBvbmVudElkJCB8IGFzeW5jXCJcbiAgICAgIFtmb3JtRmxvd0luc3RhbmNlSWRdPVwib2JzLmZvcm1GbG93SW5zdGFuY2VJZFwiXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWQkIHwgYXN5bmNcIlxuICAgICAgKHN1Ym1pdEV2ZW50KT1cIm9uU3VibWl0KCRldmVudClcIlxuICAgICAgKGNoYW5nZUV2ZW50KT1cIm9uQ2hhbmdlKCRldmVudClcIlxuICAgID5cbiAgICA8L3ZhbHRpbW8tZm9ybS1mbG93LWNvbmZpZ3VyYXRpb24tY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -1,107 +0,0 @@
1
- /*
2
- * Copyright 2015-2024 Ritense BV, the Netherlands.
3
- *
4
- * Licensed under EUPL, Version 1.2 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" basis,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- import { Component, EventEmitter, Input, Output, ViewChild, ViewContainerRef, } from '@angular/core';
17
- import { BehaviorSubject, combineLatest, Subscription } from 'rxjs';
18
- import { tap } from 'rxjs/operators';
19
- import * as i0 from "@angular/core";
20
- import * as i1 from "../../services";
21
- export class FormFlowConfigurationContainerComponent {
22
- set disabled(disabledValue) {
23
- this._disabled$.next(disabledValue);
24
- }
25
- set componentId(value) {
26
- this._componentId$.next(value);
27
- }
28
- set formFlowInstanceId(value) {
29
- this._formFlowInstanceId$.next(value);
30
- }
31
- constructor(formFlowComponentService) {
32
- this.formFlowComponentService = formFlowComponentService;
33
- this.changeEvent = new EventEmitter();
34
- this.submitEvent = new EventEmitter();
35
- this._subscriptions = new Subscription();
36
- this._componentRef$ = new BehaviorSubject(undefined);
37
- this._disabled$ = new BehaviorSubject(false);
38
- this._componentId$ = new BehaviorSubject('');
39
- this._formFlowInstanceId$ = new BehaviorSubject('');
40
- }
41
- ngOnInit() {
42
- this.openConfigurationComponentSubscription();
43
- this.openComponentInstanceSubscription();
44
- this.openDisabledSubscription();
45
- }
46
- ngOnDestroy() {
47
- this._subscriptions.unsubscribe();
48
- }
49
- openConfigurationComponentSubscription() {
50
- this._subscriptions.add(combineLatest([this.formFlowComponentService.supportedComponents$, this._componentId$])
51
- .pipe(tap(([supportedComponents, componentId]) => {
52
- const configurationComponent = supportedComponents.find(component => component.id === componentId);
53
- this._dynamicContainer.clear();
54
- if (configurationComponent) {
55
- const componentRef = this._dynamicContainer.createComponent(configurationComponent.component);
56
- this._componentRef$.next(componentRef);
57
- }
58
- }))
59
- .subscribe());
60
- }
61
- openComponentInstanceSubscription() {
62
- this._subscriptions.add(combineLatest([this._componentRef$, this._formFlowInstanceId$]).subscribe(([ref, formFlowInstanceId]) => {
63
- const instance = ref?.instance;
64
- this._submitSubscription?.unsubscribe();
65
- this._changeSubscription?.unsubscribe();
66
- if (instance) {
67
- if (formFlowInstanceId) {
68
- instance.formFlowInstanceId = formFlowInstanceId;
69
- }
70
- this._changeSubscription = instance.changeEvent.subscribe(change => {
71
- this.changeEvent.emit(change);
72
- });
73
- this._submitSubscription = instance.submitEvent.subscribe(submit => {
74
- this.submitEvent.emit(submit);
75
- });
76
- }
77
- }));
78
- }
79
- openDisabledSubscription() {
80
- this._subscriptions.add(combineLatest([this._componentRef$, this._disabled$]).subscribe(([ref, disabled]) => {
81
- const instance = ref?.instance;
82
- if (instance) {
83
- instance.disabled = disabled;
84
- }
85
- }));
86
- }
87
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormFlowConfigurationContainerComponent, deps: [{ token: i1.FormFlowComponentService }], target: i0.ɵɵFactoryTarget.Component }); }
88
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FormFlowConfigurationContainerComponent, selector: "valtimo-form-flow-configuration-container", inputs: { disabled: "disabled", componentId: "componentId", formFlowInstanceId: "formFlowInstanceId" }, outputs: { changeEvent: "changeEvent", submitEvent: "submitEvent" }, viewQueries: [{ propertyName: "_dynamicContainer", first: true, predicate: ["formFlowConfigurationComponent"], descendants: true, read: ViewContainerRef, static: 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<ng-template #formFlowConfigurationComponent></ng-template>\n" }); }
89
- }
90
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormFlowConfigurationContainerComponent, decorators: [{
91
- type: Component,
92
- args: [{ selector: 'valtimo-form-flow-configuration-container', 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<ng-template #formFlowConfigurationComponent></ng-template>\n" }]
93
- }], ctorParameters: () => [{ type: i1.FormFlowComponentService }], propDecorators: { _dynamicContainer: [{
94
- type: ViewChild,
95
- args: ['formFlowConfigurationComponent', { static: true, read: ViewContainerRef }]
96
- }], disabled: [{
97
- type: Input
98
- }], componentId: [{
99
- type: Input
100
- }], formFlowInstanceId: [{
101
- type: Input
102
- }], changeEvent: [{
103
- type: Output
104
- }], submitEvent: [{
105
- type: Output
106
- }] } });
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1mbG93LWNvbmZpZ3VyYXRpb24tY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vcHJvY2Vzcy1saW5rL3NyYy9saWIvY29tcG9uZW50cy9mb3JtLWZsb3ctY29uZmlndXJhdGlvbi1jb250YWluZXIvZm9ybS1mbG93LWNvbmZpZ3VyYXRpb24tY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vcHJvY2Vzcy1saW5rL3NyYy9saWIvY29tcG9uZW50cy9mb3JtLWZsb3ctY29uZmlndXJhdGlvbi1jb250YWluZXIvZm9ybS1mbG93LWNvbmZpZ3VyYXRpb24tY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUNMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixTQUFTLEVBQ1QsZ0JBQWdCLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNsRSxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7OztBQVNuQyxNQUFNLE9BQU8sdUNBQXVDO0lBS2xELElBQW9CLFFBQVEsQ0FBQyxhQUFzQjtRQUNqRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBQ0QsSUFBb0IsV0FBVyxDQUFDLEtBQWE7UUFDM0MsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUNELElBQW9CLGtCQUFrQixDQUFDLEtBQWE7UUFDbEQsSUFBSSxDQUFDLG9CQUFv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QUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDaEMsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQyxDQUNGLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTyx3QkFBd0I7UUFDOUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQ3JCLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRTtZQUNsRixNQUFNLFFBQVEsR0FBRyxHQUFHLEVBQUUsUUFBUSxDQUFDO1lBRS9CLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ2IsUUFBUSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7WUFDL0IsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOytHQXBHVSx1Q0FBdUM7bUdBQXZDLHVDQUF1Qyw4V0FHZ0IsZ0JBQWdCLDJDQ3hDcEYsK3NCQWlCQTs7NEZEb0JhLHVDQUF1QztrQkFKbkQsU0FBUzsrQkFDRSwyQ0FBMkM7NkZBT3BDLGlCQUFpQjtzQkFEakMsU0FBUzt1QkFBQyxnQ0FBZ0MsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFDO2dCQUUvRCxRQUFRO3NCQUEzQixLQUFLO2dCQUdjLFdBQVc7c0JBQTlCLEtBQUs7Z0JBR2Msa0JBQWtCO3NCQUFyQyxLQUFLO2dCQUdXLFdBQVc7c0JBQTNCLE1BQU07Z0JBQ1UsV0FBVztzQkFBM0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ29tcG9uZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge3RhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtDaGFuZ2VFdmVudCwgRm9ybUZsb3dDdXN0b21Db21wb25lbnR9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge0Zvcm1GbG93Q29tcG9uZW50U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtGb3JtaW9TdWJtaXNzaW9ufSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1mb3JtLWZsb3ctY29uZmlndXJhdGlvbi1jb250YWluZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1mbG93LWNvbmZpZ3VyYXRpb24tY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybUZsb3dDb25maWd1cmF0aW9uQ29udGFpbmVyQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEZvcm1GbG93Q3VzdG9tQ29tcG9uZW50XG57XG4gIEBWaWV3Q2hpbGQoJ2Zvcm1GbG93Q29uZmlndXJhdGlvbkNvbXBvbmVudCcsIHtzdGF0aWM6IHRydWUsIHJlYWQ6IFZpZXdDb250YWluZXJSZWZ9KVxuICBwcml2YXRlIHJlYWRvbmx5IF9keW5hbWljQ29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmO1xuICBASW5wdXQoKSBwdWJsaWMgc2V0IGRpc2FibGVkKGRpc2FibGVkVmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlZCQubmV4dChkaXNhYmxlZFZhbHVlKTtcbiAgfVxuICBASW5wdXQoKSBwdWJsaWMgc2V0IGNvbXBvbmVudElkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9jb21wb25lbnRJZCQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgcHVibGljIHNldCBmb3JtRmxvd0luc3RhbmNlSWQodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2Zvcm1GbG93SW5zdGFuY2VJZCQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgQE91dHB1dCgpIHB1YmxpYyBjaGFuZ2VFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8Q2hhbmdlRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgc3VibWl0RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPEZvcm1pb1N1Ym1pc3Npb24+KCk7XG5cbiAgcHJpdmF0ZSBfY2hhbmdlU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIF9zdWJtaXRTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY29tcG9uZW50UmVmJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8XG4gICAgQ29tcG9uZW50UmVmPEZvcm1GbG93Q3VzdG9tQ29tcG9uZW50PiB8IHVuZGVmaW5lZFxuICA+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc2FibGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jb21wb25lbnRJZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9mb3JtRmxvd0luc3RhbmNlSWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGZvcm1GbG93Q29tcG9uZW50U2VydmljZTogRm9ybUZsb3dDb21wb25lbnRTZXJ2aWNlKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW5Db25maWd1cmF0aW9uQ29tcG9uZW50U3Vic2NyaXB0aW9uKCk7XG4gICAgdGhpcy5vcGVuQ29tcG9uZW50SW5zdGFuY2VTdWJzY3JpcHRpb24oKTtcbiAgICB0aGlzLm9wZW5EaXNhYmxlZFN1YnNjcmlwdGlvbigpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlbkNvbmZpZ3VyYXRpb25Db21wb25lbnRTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLmZvcm1GbG93Q29tcG9uZW50U2VydmljZS5zdXBwb3J0ZWRDb21wb25lbnRzJCwgdGhpcy5fY29tcG9uZW50SWQkXSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFwKChbc3VwcG9ydGVkQ29tcG9uZW50cywgY29tcG9uZW50SWRdKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb25maWd1cmF0aW9uQ29tcG9uZW50ID0gc3VwcG9ydGVkQ29tcG9uZW50cy5maW5kKFxuICAgICAgICAgICAgICBjb21wb25lbnQgPT4gY29tcG9uZW50LmlkID09PSBjb21wb25lbnRJZFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgdGhpcy5fZHluYW1pY0NvbnRhaW5lci5jbGVhcigpO1xuXG4gICAgICAgICAgICBpZiAoY29uZmlndXJhdGlvbkNvbXBvbmVudCkge1xuICAgICAgICAgICAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLl9keW5hbWljQ29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChcbiAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uQ29tcG9uZW50LmNvbXBvbmVudFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB0aGlzLl9jb21wb25lbnRSZWYkLm5leHQoY29tcG9uZW50UmVmKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5Db21wb25lbnRJbnN0YW5jZVN1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuX2NvbXBvbmVudFJlZiQsIHRoaXMuX2Zvcm1GbG93SW5zdGFuY2VJZCRdKS5zdWJzY3JpYmUoXG4gICAgICAgIChbcmVmLCBmb3JtRmxvd0luc3RhbmNlSWRdKSA9PiB7XG4gICAgICAgICAgY29uc3QgaW5zdGFuY2UgPSByZWY/Lmluc3RhbmNlO1xuXG4gICAgICAgICAgdGhpcy5fc3VibWl0U3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgICAgICAgIHRoaXMuX2NoYW5nZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcblxuICAgICAgICAgIGlmIChpbnN0YW5jZSkge1xuICAgICAgICAgICAgaWYgKGZvcm1GbG93SW5zdGFuY2VJZCkge1xuICAgICAgICAgICAgICBpbnN0YW5jZS5mb3JtRmxvd0luc3RhbmNlSWQgPSBmb3JtRmxvd0luc3RhbmNlSWQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZVN1YnNjcmlwdGlvbiA9IGluc3RhbmNlLmNoYW5nZUV2ZW50LnN1YnNjcmliZShjaGFuZ2UgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmNoYW5nZUV2ZW50LmVtaXQoY2hhbmdlKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLl9zdWJtaXRTdWJzY3JpcHRpb24gPSBpbnN0YW5jZS5zdWJtaXRFdmVudC5zdWJzY3JpYmUoc3VibWl0ID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5zdWJtaXRFdmVudC5lbWl0KHN1Ym1pdCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuRGlzYWJsZWRTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLl9jb21wb25lbnRSZWYkLCB0aGlzLl9kaXNhYmxlZCRdKS5zdWJzY3JpYmUoKFtyZWYsIGRpc2FibGVkXSkgPT4ge1xuICAgICAgICBjb25zdCBpbnN0YW5jZSA9IHJlZj8uaW5zdGFuY2U7XG5cbiAgICAgICAgaWYgKGluc3RhbmNlKSB7XG4gICAgICAgICAgaW5zdGFuY2UuZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjxuZy10ZW1wbGF0ZSAjZm9ybUZsb3dDb25maWd1cmF0aW9uQ29tcG9uZW50PjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -1,17 +0,0 @@
1
- /*
2
- * Copyright 2015-2024 Ritense BV, the Netherlands.
3
- *
4
- * Licensed under EUPL, Version 1.2 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" basis,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- export * from './form-flow-configuration-container.component';
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL3Byb2Nlc3MtbGluay9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS1mbG93LWNvbmZpZ3VyYXRpb24tY29udGFpbmVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsY0FBYywrQ0FBK0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vZm9ybS1mbG93LWNvbmZpZ3VyYXRpb24tY29udGFpbmVyLmNvbXBvbmVudCc7XG4iXX0=
@@ -1,150 +0,0 @@
1
- /*
2
- * Copyright 2015-2024 Ritense BV, the Netherlands.
3
- *
4
- * Licensed under EUPL, Version 1.2 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" basis,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
- import { Component, EventEmitter, Output, ViewChild, } from '@angular/core';
17
- import BpmnJS from 'bpmn-js/dist/bpmn-navigated-viewer.production.min.js';
18
- import { combineLatest } from 'rxjs';
19
- import { map } from 'rxjs/operators';
20
- import * as i0 from "@angular/core";
21
- import * as i1 from "@valtimo/process";
22
- import * as i2 from "@angular/router";
23
- import * as i3 from "@valtimo/components";
24
- import * as i4 from "@angular/common";
25
- import * as i5 from "@angular/forms";
26
- import * as i6 from "carbon-components-angular";
27
- export class FormLinkProcessDiagramComponent {
28
- constructor(processService, route, pageTitleService) {
29
- this.processService = processService;
30
- this.route = route;
31
- this.pageTitleService = pageTitleService;
32
- this.bpmnElementModalOpen = new EventEmitter();
33
- this.bpmnElementModalClose = new EventEmitter();
34
- this.callbacksAdded = false;
35
- }
36
- ngOnInit() {
37
- this.pageTitleService.disableReset();
38
- combineLatest([this.route.queryParams, this.processService.getProcessDefinitions()])
39
- .pipe(map(([queryParams, processDefinitions]) => ({ queryParams, processDefinitions })))
40
- .subscribe(response => {
41
- this.processDefinitions = response.processDefinitions;
42
- if (response.queryParams.process) {
43
- this.processDefinitionKey = response.queryParams.process;
44
- this.loadProcessDefinitionFromKey(this.processDefinitionKey);
45
- this.bpmnElementModalOpen.emit({
46
- element: {
47
- id: 'start-event',
48
- type: 'bpmn:StartEvent',
49
- },
50
- processDefinitionKey: this.processDefinitionKey,
51
- processDefinitionId: this.processDefinitionId,
52
- });
53
- }
54
- if (!this.processDefinitionKey && response.processDefinitions.length !== 0) {
55
- this.processDefinitionKey = response.processDefinitions[0].key;
56
- this.loadProcessDefinitionFromKey(this.processDefinitionKey);
57
- }
58
- });
59
- this.bpmnJS = new BpmnJS();
60
- this.bpmnJS.on('import.done', ({ error }) => {
61
- if (!error) {
62
- const canvas = this.bpmnJS.get('canvas');
63
- const eventBus = this.bpmnJS.get('eventBus');
64
- canvas.zoom('fit-viewport', 'auto');
65
- if (this.processDefinitionVersions && !this.callbacksAdded) {
66
- eventBus.on('element.click', e => {
67
- let activityListenerType = e.element.businessObject.$type;
68
- if (activityListenerType === 'bpmn:UserTask') {
69
- activityListenerType += ':create';
70
- }
71
- else {
72
- activityListenerType += ':start';
73
- }
74
- this.bpmnElementModalOpen.emit({
75
- element: {
76
- id: e.element.businessObject.id,
77
- type: e.element.businessObject.$type,
78
- activityListenerType,
79
- name: e.element?.businessObject?.name,
80
- },
81
- processDefinitionKey: this.processDefinitionKey,
82
- processDefinitionId: this.processDefinitionId,
83
- });
84
- });
85
- this.callbacksAdded = true;
86
- }
87
- }
88
- });
89
- }
90
- ngOnDestroy() {
91
- this.bpmnElementModalClose.emit();
92
- if (this.bpmnJS) {
93
- this.bpmnJS.destroy();
94
- }
95
- this.pageTitleService.enableReset();
96
- }
97
- loadProcessDefinition(processDefinitionKey) {
98
- this.processService
99
- .getProcessDefinition(processDefinitionKey)
100
- .subscribe((processDefinition) => {
101
- this.processDefinitionId = processDefinition.id;
102
- this.version = processDefinition.version;
103
- this.loadProcessDefinitionXml(processDefinition.id);
104
- });
105
- }
106
- loadProcessDefinitionVersions(processDefinitionKey) {
107
- this.processService
108
- .getProcessDefinitionVersions(processDefinitionKey)
109
- .subscribe((processDefinitionVersions) => {
110
- this.processDefinitionVersions = processDefinitionVersions;
111
- });
112
- }
113
- loadProcessDefinitionFromKey(processDefinitionKey) {
114
- this.loadProcessDefinitionVersions(processDefinitionKey);
115
- this.loadProcessDefinition(processDefinitionKey);
116
- }
117
- loadProcessDefinitionXml(processDefinitionId) {
118
- this.processService.getProcessDefinitionXml(processDefinitionId).subscribe(response => {
119
- this.processDiagram = response;
120
- this.bpmnJS.importXML(this.processDiagram.bpmn20Xml);
121
- this.bpmnJS.attachTo(this.el.nativeElement);
122
- });
123
- }
124
- setProcessDefinitionKey(processDefinitionKey) {
125
- this.processDefinitionKey = processDefinitionKey;
126
- this.loadProcessDefinitionFromKey(this.processDefinitionKey);
127
- }
128
- setProcessDefinitionVersion(version) {
129
- const processDefinitionId = this.processDefinitionVersions.find(definition => definition.version === +version)?.id;
130
- if (processDefinitionId) {
131
- this.processDefinitionId = processDefinitionId;
132
- this.loadProcessDefinitionXml(this.processDefinitionId);
133
- }
134
- this.version = +version;
135
- }
136
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormLinkProcessDiagramComponent, deps: [{ token: i1.ProcessService }, { token: i2.ActivatedRoute }, { token: i3.PageTitleService }], target: i0.ɵɵFactoryTarget.Component }); }
137
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FormLinkProcessDiagramComponent, selector: "valtimo-form-link-process-diagram", outputs: { bpmnElementModalOpen: "bpmnElementModalOpen", bpmnElementModalClose: "bpmnElementModalClose" }, viewQueries: [{ propertyName: "el", first: true, predicate: ["ref"], 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=\"container-fluid\">\n <div class=\"row p-4 bg-white\">\n <div class=\"col\">\n <div #ref class=\"diagram-container\"></div>\n </div>\n </div>\n</div>\n<div class=\"p-4 text-center legenda-holder\">\n <span>Click on a User Task to specify a form definition for that User Task.</span>\n</div>\n\n<ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <div class=\"form-link-dossier-actions\">\n <cds-select [label]=\"'Process'\" (change)=\"setProcessDefinitionKey($event.target.value)\"\n ><option\n *ngFor=\"let processDefinition of processDefinitions\"\n [value]=\"processDefinition.key\"\n [selected]=\"processDefinitionKey === processDefinition.key\"\n >\n {{ processDefinition.name }}\n </option>\n </cds-select>\n <cds-select [label]=\"'Version'\" (change)=\"setProcessDefinitionVersion($event.target.value)\">\n <option\n *ngFor=\"let processDefinitionVersion of processDefinitionVersions\"\n [value]=\"processDefinitionVersion.version\"\n [selected]=\"processDefinitionVersion.version === version\"\n >\n {{ processDefinitionVersion.version }}\n </option>\n </cds-select>\n </div>\n </ng-template>\n</ng-container>\n", styles: [".diagram-container-switch-holder{width:100%;z-index:1000}.diagram-container{height:58vh}.container-fluid{border:1px solid #dee2e6}.options{border-bottom:1px solid #dee2e6}.form-link-dossier-actions{display:flex;flex-direction:row;gap:8px}\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"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.RenderInPageHeaderDirective, selector: "[renderInPageHeader]", inputs: ["fullWidth"] }, { kind: "component", type: i6.Select, selector: "cds-select, ibm-select", inputs: ["display", "label", "helperText", "invalidText", "warn", "warnText", "id", "size", "disabled", "skeleton", "invalid", "theme", "ariaLabel", "value"], outputs: ["valueChange"] }, { kind: "directive", type: i6.Option, selector: "option" }] }); }
138
- }
139
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormLinkProcessDiagramComponent, decorators: [{
140
- type: Component,
141
- args: [{ selector: 'valtimo-form-link-process-diagram', 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=\"container-fluid\">\n <div class=\"row p-4 bg-white\">\n <div class=\"col\">\n <div #ref class=\"diagram-container\"></div>\n </div>\n </div>\n</div>\n<div class=\"p-4 text-center legenda-holder\">\n <span>Click on a User Task to specify a form definition for that User Task.</span>\n</div>\n\n<ng-container renderInPageHeader [fullWidth]=\"true\">\n <ng-template>\n <div class=\"form-link-dossier-actions\">\n <cds-select [label]=\"'Process'\" (change)=\"setProcessDefinitionKey($event.target.value)\"\n ><option\n *ngFor=\"let processDefinition of processDefinitions\"\n [value]=\"processDefinition.key\"\n [selected]=\"processDefinitionKey === processDefinition.key\"\n >\n {{ processDefinition.name }}\n </option>\n </cds-select>\n <cds-select [label]=\"'Version'\" (change)=\"setProcessDefinitionVersion($event.target.value)\">\n <option\n *ngFor=\"let processDefinitionVersion of processDefinitionVersions\"\n [value]=\"processDefinitionVersion.version\"\n [selected]=\"processDefinitionVersion.version === version\"\n >\n {{ processDefinitionVersion.version }}\n </option>\n </cds-select>\n </div>\n </ng-template>\n</ng-container>\n", styles: [".diagram-container-switch-holder{width:100%;z-index:1000}.diagram-container{height:58vh}.container-fluid{border:1px solid #dee2e6}.options{border-bottom:1px solid #dee2e6}.form-link-dossier-actions{display:flex;flex-direction:row;gap:8px}\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"] }]
142
- }], ctorParameters: () => [{ type: i1.ProcessService }, { type: i2.ActivatedRoute }, { type: i3.PageTitleService }], propDecorators: { el: [{
143
- type: ViewChild,
144
- args: ['ref']
145
- }], bpmnElementModalOpen: [{
146
- type: Output
147
- }], bpmnElementModalClose: [{
148
- type: Output
149
- }] } });
150
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1saW5rLXByb2Nlc3MtZGlhZ3JhbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL3Byb2Nlc3MtbGluay9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS1saW5rLXByb2Nlc3MtZGlhZ3JhbS9mb3JtLWxpbmstcHJvY2Vzcy1kaWFncmFtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vcHJvY2Vzcy1saW5rL3NyYy9saWIvY29tcG9uZW50cy9mb3JtLWxpbmstcHJvY2Vzcy1kaWFncmFtL2Zvcm0tbGluay1wcm9jZXNzLWRpYWdyYW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFHWixNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sTUFBTSxNQUFNLHNEQUFzRCxDQUFDO0FBRTFFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDbkMsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7OztBQVFuQyxNQUFNLE9BQU8sK0JBQStCO0lBZ0IxQyxZQUNtQixjQUE4QixFQUM5QixLQUFxQixFQUNyQixnQkFBa0M7UUFGbEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFmcEMseUJBQW9CLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDN0QsMEJBQXFCLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFRdkUsbUJBQWMsR0FBRyxLQUFLLENBQUM7SUFPNUIsQ0FBQztJQUVKLFFBQVE7UUFDTixJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDckMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUM7YUFDakYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLGtCQUFrQixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUUsa0JBQWtCLEVBQUMsQ0FBQyxDQUFDLENBQUM7YUFDckYsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxRQUFRLENBQUMsa0JBQWtCLENBQUM7WUFDdEQsSUFBSSxRQUFRLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNqQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUM7Z0JBQ3pELElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztnQkFDN0QsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQztvQkFDN0IsT0FBTyxFQUFFO3dCQUNQLEVBQUUsRUFBRSxhQUFhO3dCQUNqQixJQUFJLEVBQUUsaUJBQWlCO3FCQUN4QjtvQkFDRCxvQkFBb0IsRUFBRSxJQUFJLENBQUMsb0JBQW9CO29CQUMvQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsbUJBQW1CO2lCQUM5QyxDQUFDLENBQUM7WUFDTCxDQUFDO1lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxRQUFRLENBQUMsa0JBQWtCLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUMzRSxJQUFJLENBQUMsb0JBQW9CLEdBQUcsUUFBUSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztnQkFDL0QsSUFBSSxDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQy9ELENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxFQUFDLEtBQUssRUFBTSxFQUFFLEVBQUU7WUFDN0MsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNYLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN6QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDN0MsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBRXBDLElBQUksSUFBSSxDQUFDLHlCQUF5QixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO29CQUMzRCxRQUFRLENBQUMsRUFBRSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsRUFBRTt3QkFDL0IsSUFBSSxvQkFBb0IsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUM7d0JBQzFELElBQUksb0JBQW9CLEtBQUssZUFBZSxFQUFFLENBQUM7NEJBQzdDLG9CQUFvQixJQUFJLFNBQVMsQ0FBQzt3QkFDcEMsQ0FBQzs2QkFBTSxDQUFDOzRCQUNOLG9CQUFvQixJQUFJLFFBQVEsQ0FBQzt3QkFDbkMsQ0FBQzt3QkFFRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDOzRCQUM3QixPQUFPLEVBQUU7Z0NBQ1AsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEVBQUU7Z0NBQy9CLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxLQUFLO2dDQUNwQyxvQkFBb0I7Z0NBQ3BCLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxJQUFJOzZCQUN0Qzs0QkFDRCxvQkFBb0IsRUFBRSxJQUFJLENBQUMsb0JBQW9COzRCQUMvQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsbUJBQW1CO3lCQUM5QyxDQUFDLENBQUM7b0JBQ0wsQ0FBQyxDQUFDLENBQUM7b0JBQ0gsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7Z0JBQzdCLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNsQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3hCLENBQUM7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVNLHFCQUFxQixDQUFDLG9CQUE0QjtRQUN2RCxJQUFJLENBQUMsY0FBYzthQUNoQixvQkFBb0IsQ0FBQyxvQkFBb0IsQ0FBQzthQUMxQyxTQUFTLENBQUMsQ0FBQyxpQkFBb0MsRUFBRSxFQUFFO1lBQ2xELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxpQkFBaUIsQ0FBQyxFQUFFLENBQUM7WUFDaEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxpQkFBaUIsQ0FBQyxPQUFPLENBQUM7WUFDekMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLDZCQUE2QixDQUFDLG9CQUE0QjtRQUMvRCxJQUFJLENBQUMsY0FBYzthQUNoQiw0QkFBNEIsQ0FBQyxvQkFBb0IsQ0FBQzthQUNsRCxTQUFTLENBQUMsQ0FBQyx5QkFBOEMsRUFBRSxFQUFFO1lBQzVELElBQUksQ0FBQyx5QkFBeUIsR0FBRyx5QkFBeUIsQ0FBQztRQUM3RCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSw0QkFBNEIsQ0FBQyxvQkFBNEI7UUFDOUQsSUFBSSxDQUFDLDZCQUE2QixDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVNLHdCQUF3QixDQUFDLG1CQUEyQjtRQUN6RCxJQUFJLENBQUMsY0FBYyxDQUFDLHVCQUF1QixDQUFDLG1CQUFtQixDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ3BGLElBQUksQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDO1lBQy9CLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDckQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSx1QkFBdUIsQ0FBQyxvQkFBNEI7UUFDekQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLG9CQUFvQixDQUFDO1FBQ2pELElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRU0sMkJBQTJCLENBQUMsT0FBZTtRQUNoRCxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQzdELFVBQVUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FDOUMsRUFBRSxFQUFFLENBQUM7UUFFTixJQUFJLG1CQUFtQixFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLG1CQUFtQixDQUFDO1lBQy9DLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUMxRCxDQUFDO1FBRUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQztJQUMxQixDQUFDOytHQXJJVSwrQkFBK0I7bUdBQS9CLCtCQUErQiwrUUN0QzVDLDg2REFtREE7OzRGRGJhLCtCQUErQjtrQkFMM0MsU0FBUzsrQkFDRSxtQ0FBbUM7K0lBT3BCLEVBQUU7c0JBQTFCLFNBQVM7dUJBQUMsS0FBSztnQkFDQyxvQkFBb0I7c0JBQXBDLE1BQU07Z0JBQ1UscUJBQXFCO3NCQUFyQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1Byb2Nlc3NEZWZpbml0aW9uLCBQcm9jZXNzU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vcHJvY2Vzcyc7XG5cbmltcG9ydCBCcG1uSlMgZnJvbSAnYnBtbi1qcy9kaXN0L2JwbW4tbmF2aWdhdGVkLXZpZXdlci5wcm9kdWN0aW9uLm1pbi5qcyc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtjb21iaW5lTGF0ZXN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1BhZ2VUaXRsZVNlcnZpY2V9IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLWZvcm0tbGluay1wcm9jZXNzLWRpYWdyYW0nLFxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1saW5rLXByb2Nlc3MtZGlhZ3JhbS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zvcm0tbGluay1wcm9jZXNzLWRpYWdyYW0uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybUxpbmtQcm9jZXNzRGlhZ3JhbUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBicG1uSlM6IEJwbW5KUztcblxuICBAVmlld0NoaWxkKCdyZWYnKSBwdWJsaWMgZWw6IEVsZW1lbnRSZWY7XG4gIEBPdXRwdXQoKSBwdWJsaWMgYnBtbkVsZW1lbnRNb2RhbE9wZW46IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgcHVibGljIGJwbW5FbGVtZW50TW9kYWxDbG9zZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHVibGljIHByb2Nlc3NEZWZpbml0aW9uS2V5OiBzdHJpbmc7XG4gIHB1YmxpYyBwcm9jZXNzRGVmaW5pdGlvbnM6IFByb2Nlc3NEZWZpbml0aW9uW107XG4gIHB1YmxpYyBwcm9jZXNzRGlhZ3JhbTogYW55O1xuICBwdWJsaWMgcHJvY2Vzc0RlZmluaXRpb246IFByb2Nlc3NEZWZpbml0aW9uO1xuICBwdWJsaWMgcHJvY2Vzc0RlZmluaXRpb25WZXJzaW9uczogUHJvY2Vzc0RlZmluaXRpb25bXTtcbiAgcHVibGljIHZlcnNpb246IG51bWJlcjtcbiAgcHJpdmF0ZSBjYWxsYmFja3NBZGRlZCA9IGZhbHNlO1xuICBwcml2YXRlIHByb2Nlc3NEZWZpbml0aW9uSWQhOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBwcm9jZXNzU2VydmljZTogUHJvY2Vzc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwYWdlVGl0bGVTZXJ2aWNlOiBQYWdlVGl0bGVTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnBhZ2VUaXRsZVNlcnZpY2UuZGlzYWJsZVJlc2V0KCk7XG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5yb3V0ZS5xdWVyeVBhcmFtcywgdGhpcy5wcm9jZXNzU2VydmljZS5nZXRQcm9jZXNzRGVmaW5pdGlvbnMoKV0pXG4gICAgICAucGlwZShtYXAoKFtxdWVyeVBhcmFtcywgcHJvY2Vzc0RlZmluaXRpb25zXSkgPT4gKHtxdWVyeVBhcmFtcywgcHJvY2Vzc0RlZmluaXRpb25zfSkpKVxuICAgICAgLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICAgIHRoaXMucHJvY2Vzc0RlZmluaXRpb25zID0gcmVzcG9uc2UucHJvY2Vzc0RlZmluaXRpb25zO1xuICAgICAgICBpZiAocmVzcG9uc2UucXVlcnlQYXJhbXMucHJvY2Vzcykge1xuICAgICAgICAgIHRoaXMucHJvY2Vzc0RlZmluaXRpb25LZXkgPSByZXNwb25zZS5xdWVyeVBhcmFtcy5wcm9jZXNzO1xuICAgICAgICAgIHRoaXMubG9hZFByb2Nlc3NEZWZpbml0aW9uRnJvbUtleSh0aGlzLnByb2Nlc3NEZWZpbml0aW9uS2V5KTtcbiAgICAgICAgICB0aGlzLmJwbW5FbGVtZW50TW9kYWxPcGVuLmVtaXQoe1xuICAgICAgICAgICAgZWxlbWVudDoge1xuICAgICAgICAgICAgICBpZDogJ3N0YXJ0LWV2ZW50JyxcbiAgICAgICAgICAgICAgdHlwZTogJ2JwbW46U3RhcnRFdmVudCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcHJvY2Vzc0RlZmluaXRpb25LZXk6IHRoaXMucHJvY2Vzc0RlZmluaXRpb25LZXksXG4gICAgICAgICAgICBwcm9jZXNzRGVmaW5pdGlvbklkOiB0aGlzLnByb2Nlc3NEZWZpbml0aW9uSWQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnByb2Nlc3NEZWZpbml0aW9uS2V5ICYmIHJlc3BvbnNlLnByb2Nlc3NEZWZpbml0aW9ucy5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICB0aGlzLnByb2Nlc3NEZWZpbml0aW9uS2V5ID0gcmVzcG9uc2UucHJvY2Vzc0RlZmluaXRpb25zWzBdLmtleTtcbiAgICAgICAgICB0aGlzLmxvYWRQcm9jZXNzRGVmaW5pdGlvbkZyb21LZXkodGhpcy5wcm9jZXNzRGVmaW5pdGlvbktleSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIHRoaXMuYnBtbkpTID0gbmV3IEJwbW5KUygpO1xuICAgIHRoaXMuYnBtbkpTLm9uKCdpbXBvcnQuZG9uZScsICh7ZXJyb3J9OiBhbnkpID0+IHtcbiAgICAgIGlmICghZXJyb3IpIHtcbiAgICAgICAgY29uc3QgY2FudmFzID0gdGhpcy5icG1uSlMuZ2V0KCdjYW52YXMnKTtcbiAgICAgICAgY29uc3QgZXZlbnRCdXMgPSB0aGlzLmJwbW5KUy5nZXQoJ2V2ZW50QnVzJyk7XG4gICAgICAgIGNhbnZhcy56b29tKCdmaXQtdmlld3BvcnQnLCAnYXV0bycpO1xuXG4gICAgICAgIGlmICh0aGlzLnByb2Nlc3NEZWZpbml0aW9uVmVyc2lvbnMgJiYgIXRoaXMuY2FsbGJhY2tzQWRkZWQpIHtcbiAgICAgICAgICBldmVudEJ1cy5vbignZWxlbWVudC5jbGljaycsIGUgPT4ge1xuICAgICAgICAgICAgbGV0IGFjdGl2aXR5TGlzdGVuZXJUeXBlID0gZS5lbGVtZW50LmJ1c2luZXNzT2JqZWN0LiR0eXBlO1xuICAgICAgICAgICAgaWYgKGFjdGl2aXR5TGlzdGVuZXJUeXBlID09PSAnYnBtbjpVc2VyVGFzaycpIHtcbiAgICAgICAgICAgICAgYWN0aXZpdHlMaXN0ZW5lclR5cGUgKz0gJzpjcmVhdGUnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgYWN0aXZpdHlMaXN0ZW5lclR5cGUgKz0gJzpzdGFydCc7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuYnBtbkVsZW1lbnRNb2RhbE9wZW4uZW1pdCh7XG4gICAgICAgICAgICAgIGVsZW1lbnQ6IHtcbiAgICAgICAgICAgICAgICBpZDogZS5lbGVtZW50LmJ1c2luZXNzT2JqZWN0LmlkLFxuICAgICAgICAgICAgICAgIHR5cGU6IGUuZWxlbWVudC5idXNpbmVzc09iamVjdC4kdHlwZSxcbiAgICAgICAgICAgICAgICBhY3Rpdml0eUxpc3RlbmVyVHlwZSxcbiAgICAgICAgICAgICAgICBuYW1lOiBlLmVsZW1lbnQ/LmJ1c2luZXNzT2JqZWN0Py5uYW1lLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBwcm9jZXNzRGVmaW5pdGlvbktleTogdGhpcy5wcm9jZXNzRGVmaW5pdGlvbktleSxcbiAgICAgICAgICAgICAgcHJvY2Vzc0RlZmluaXRpb25JZDogdGhpcy5wcm9jZXNzRGVmaW5pdGlvbklkLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5jYWxsYmFja3NBZGRlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuYnBtbkVsZW1lbnRNb2RhbENsb3NlLmVtaXQoKTtcbiAgICBpZiAodGhpcy5icG1uSlMpIHtcbiAgICAgIHRoaXMuYnBtbkpTLmRlc3Ryb3koKTtcbiAgICB9XG4gICAgdGhpcy5wYWdlVGl0bGVTZXJ2aWNlLmVuYWJsZVJlc2V0KCk7XG4gIH1cblxuICBwdWJsaWMgbG9hZFByb2Nlc3NEZWZpbml0aW9uKHByb2Nlc3NEZWZpbml0aW9uS2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnByb2Nlc3NTZXJ2aWNlXG4gICAgICAuZ2V0UHJvY2Vzc0RlZmluaXRpb24ocHJvY2Vzc0RlZmluaXRpb25LZXkpXG4gICAgICAuc3Vic2NyaWJlKChwcm9jZXNzRGVmaW5pdGlvbjogUHJvY2Vzc0RlZmluaXRpb24pID0+IHtcbiAgICAgICAgdGhpcy5wcm9jZXNzRGVmaW5pdGlvbklkID0gcHJvY2Vzc0RlZmluaXRpb24uaWQ7XG4gICAgICAgIHRoaXMudmVyc2lvbiA9IHByb2Nlc3NEZWZpbml0aW9uLnZlcnNpb247XG4gICAgICAgIHRoaXMubG9hZFByb2Nlc3NEZWZpbml0aW9uWG1sKHByb2Nlc3NEZWZpbml0aW9uLmlkKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGxvYWRQcm9jZXNzRGVmaW5pdGlvblZlcnNpb25zKHByb2Nlc3NEZWZpbml0aW9uS2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnByb2Nlc3NTZXJ2aWNlXG4gICAgICAuZ2V0UHJvY2Vzc0RlZmluaXRpb25WZXJzaW9ucyhwcm9jZXNzRGVmaW5pdGlvbktleSlcbiAgICAgIC5zdWJzY3JpYmUoKHByb2Nlc3NEZWZpbml0aW9uVmVyc2lvbnM6IFByb2Nlc3NEZWZpbml0aW9uW10pID0+IHtcbiAgICAgICAgdGhpcy5wcm9jZXNzRGVmaW5pdGlvblZlcnNpb25zID0gcHJvY2Vzc0RlZmluaXRpb25WZXJzaW9ucztcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGxvYWRQcm9jZXNzRGVmaW5pdGlvbkZyb21LZXkocHJvY2Vzc0RlZmluaXRpb25LZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMubG9hZFByb2Nlc3NEZWZpbml0aW9uVmVyc2lvbnMocHJvY2Vzc0RlZmluaXRpb25LZXkpO1xuICAgIHRoaXMubG9hZFByb2Nlc3NEZWZpbml0aW9uKHByb2Nlc3NEZWZpbml0aW9uS2V5KTtcbiAgfVxuXG4gIHB1YmxpYyBsb2FkUHJvY2Vzc0RlZmluaXRpb25YbWwocHJvY2Vzc0RlZmluaXRpb25JZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5wcm9jZXNzU2VydmljZS5nZXRQcm9jZXNzRGVmaW5pdGlvblhtbChwcm9jZXNzRGVmaW5pdGlvbklkKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgdGhpcy5wcm9jZXNzRGlhZ3JhbSA9IHJlc3BvbnNlO1xuICAgICAgdGhpcy5icG1uSlMuaW1wb3J0WE1MKHRoaXMucHJvY2Vzc0RpYWdyYW0uYnBtbjIwWG1sKTtcbiAgICAgIHRoaXMuYnBtbkpTLmF0dGFjaFRvKHRoaXMuZWwubmF0aXZlRWxlbWVudCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc2V0UHJvY2Vzc0RlZmluaXRpb25LZXkocHJvY2Vzc0RlZmluaXRpb25LZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMucHJvY2Vzc0RlZmluaXRpb25LZXkgPSBwcm9jZXNzRGVmaW5pdGlvbktleTtcbiAgICB0aGlzLmxvYWRQcm9jZXNzRGVmaW5pdGlvbkZyb21LZXkodGhpcy5wcm9jZXNzRGVmaW5pdGlvbktleSk7XG4gIH1cblxuICBwdWJsaWMgc2V0UHJvY2Vzc0RlZmluaXRpb25WZXJzaW9uKHZlcnNpb246IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHByb2Nlc3NEZWZpbml0aW9uSWQgPSB0aGlzLnByb2Nlc3NEZWZpbml0aW9uVmVyc2lvbnMuZmluZChcbiAgICAgIGRlZmluaXRpb24gPT4gZGVmaW5pdGlvbi52ZXJzaW9uID09PSArdmVyc2lvblxuICAgICk/LmlkO1xuXG4gICAgaWYgKHByb2Nlc3NEZWZpbml0aW9uSWQpIHtcbiAgICAgIHRoaXMucHJvY2Vzc0RlZmluaXRpb25JZCA9IHByb2Nlc3NEZWZpbml0aW9uSWQ7XG4gICAgICB0aGlzLmxvYWRQcm9jZXNzRGVmaW5pdGlvblhtbCh0aGlzLnByb2Nlc3NEZWZpbml0aW9uSWQpO1xuICAgIH1cblxuICAgIHRoaXMudmVyc2lvbiA9ICt2ZXJzaW9uO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWRcIj5cbiAgPGRpdiBjbGFzcz1cInJvdyBwLTQgYmctd2hpdGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICA8ZGl2ICNyZWYgY2xhc3M9XCJkaWFncmFtLWNvbnRhaW5lclwiPjwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cInAtNCB0ZXh0LWNlbnRlciBsZWdlbmRhLWhvbGRlclwiPlxuICA8c3Bhbj5DbGljayBvbiBhIFVzZXIgVGFzayB0byBzcGVjaWZ5IGEgZm9ybSBkZWZpbml0aW9uIGZvciB0aGF0IFVzZXIgVGFzay48L3NwYW4+XG48L2Rpdj5cblxuPG5nLWNvbnRhaW5lciByZW5kZXJJblBhZ2VIZWFkZXIgW2Z1bGxXaWR0aF09XCJ0cnVlXCI+XG4gIDxuZy10ZW1wbGF0ZT5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1saW5rLWRvc3NpZXItYWN0aW9uc1wiPlxuICAgICAgPGNkcy1zZWxlY3QgW2xhYmVsXT1cIidQcm9jZXNzJ1wiIChjaGFuZ2UpPVwic2V0UHJvY2Vzc0RlZmluaXRpb25LZXkoJGV2ZW50LnRhcmdldC52YWx1ZSlcIlxuICAgICAgICA+PG9wdGlvblxuICAgICAgICAgICpuZ0Zvcj1cImxldCBwcm9jZXNzRGVmaW5pdGlvbiBvZiBwcm9jZXNzRGVmaW5pdGlvbnNcIlxuICAgICAgICAgIFt2YWx1ZV09XCJwcm9jZXNzRGVmaW5pdGlvbi5rZXlcIlxuICAgICAgICAgIFtzZWxlY3RlZF09XCJwcm9jZXNzRGVmaW5pdGlvbktleSA9PT0gcHJvY2Vzc0RlZmluaXRpb24ua2V5XCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHByb2Nlc3NEZWZpbml0aW9uLm5hbWUgfX1cbiAgICAgICAgPC9vcHRpb24+XG4gICAgICA8L2Nkcy1zZWxlY3Q+XG4gICAgICA8Y2RzLXNlbGVjdCBbbGFiZWxdPVwiJ1ZlcnNpb24nXCIgKGNoYW5nZSk9XCJzZXRQcm9jZXNzRGVmaW5pdGlvblZlcnNpb24oJGV2ZW50LnRhcmdldC52YWx1ZSlcIj5cbiAgICAgICAgPG9wdGlvblxuICAgICAgICAgICpuZ0Zvcj1cImxldCBwcm9jZXNzRGVmaW5pdGlvblZlcnNpb24gb2YgcHJvY2Vzc0RlZmluaXRpb25WZXJzaW9uc1wiXG4gICAgICAgICAgW3ZhbHVlXT1cInByb2Nlc3NEZWZpbml0aW9uVmVyc2lvbi52ZXJzaW9uXCJcbiAgICAgICAgICBbc2VsZWN0ZWRdPVwicHJvY2Vzc0RlZmluaXRpb25WZXJzaW9uLnZlcnNpb24gPT09IHZlcnNpb25cIlxuICAgICAgICA+XG4gICAgICAgICAge3sgcHJvY2Vzc0RlZmluaXRpb25WZXJzaW9uLnZlcnNpb24gfX1cbiAgICAgICAgPC9vcHRpb24+XG4gICAgICA8L2Nkcy1zZWxlY3Q+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==