@valtimo/dossier-management 12.0.0 → 12.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/esm2022/lib/components/dossier-management-detail-container/dossier-management-detail-container.component.mjs +8 -5
  2. package/esm2022/lib/components/dossier-management-document-definition/dossier-management-document-definition.component.mjs +3 -3
  3. package/esm2022/lib/components/dossier-management-list/dossier-management-list.component.mjs +1 -1
  4. package/esm2022/lib/components/dossier-management-list-columns/dossier-management-list-columns.component.mjs +1 -1
  5. package/esm2022/lib/components/dossier-management-processes/dossier-management-processes.component.mjs +1 -1
  6. package/esm2022/lib/components/dossier-management-search-fields/dossier-management-search-fields.component.mjs +8 -11
  7. package/esm2022/lib/components/dossier-management-statuses/dossier-management-status-modal/dossier-management-status-modal.component.mjs +2 -2
  8. package/esm2022/lib/components/dossier-management-statuses/dossier-management-statuses.component.mjs +3 -3
  9. package/esm2022/lib/components/dossier-management-tabs/dossier-management-add-tab-modal/dossier-management-add-tab-modal.component.mjs +39 -17
  10. package/esm2022/lib/components/dossier-management-tabs/dossier-management-edit-tab-modal/dossier-management-edit-tab-modal.component.mjs +4 -3
  11. package/esm2022/lib/components/dossier-management-tabs/dossier-management-tabs.component.mjs +57 -27
  12. package/esm2022/lib/components/dossier-management-tabs/tab-form/tab-form.component.mjs +47 -14
  13. package/esm2022/lib/components/dossier-management-widget-configurators/collection/dossier-management-widget-collection.component.mjs +218 -0
  14. package/esm2022/lib/components/dossier-management-widget-configurators/custom/dossier-management-widget-custom.component.mjs +104 -0
  15. package/esm2022/lib/components/dossier-management-widget-configurators/fields/column/dossier-management-widget-fields-column.component.mjs +194 -0
  16. package/esm2022/lib/components/dossier-management-widget-configurators/fields/dossier-management-widget-fields.component.mjs +133 -0
  17. package/esm2022/lib/components/dossier-management-widget-configurators/formio/dossier-management-widget-formio.component.mjs +107 -0
  18. package/esm2022/lib/components/dossier-management-widget-configurators/index.mjs +21 -0
  19. package/esm2022/lib/components/dossier-management-widget-configurators/table/dossier-management-widget-table.component.mjs +96 -0
  20. package/esm2022/lib/components/dossier-management-widget-tab/dossier-management-widget-tab.component.mjs +160 -0
  21. package/esm2022/lib/components/dossier-management-widget-tab/editor/dossier-management-widgets-editor.component.mjs +208 -0
  22. package/esm2022/lib/components/dossier-management-widget-tab/json-editor/dossier-management-widgets-json-editor.component.mjs +190 -0
  23. package/esm2022/lib/components/dossier-management-widget-tab-edit-modal/dossier-management-widget-tab-edit-modal.mjs +110 -0
  24. package/esm2022/lib/components/dossier-management-widget-wizard/dossier-management-widget-wizard.component.mjs +160 -0
  25. package/esm2022/lib/components/dossier-management-widget-wizard/steps/index.mjs +26 -0
  26. package/esm2022/lib/components/dossier-management-widget-wizard/steps/widget-wizard-content-step/widget-wizard-content-step.component.mjs +52 -0
  27. package/esm2022/lib/components/dossier-management-widget-wizard/steps/widget-wizard-style-step/widget-wizard-style-step.component.mjs +41 -0
  28. package/esm2022/lib/components/dossier-management-widget-wizard/steps/widget-wizard-type-step/widget-wizard-type-step.component.mjs +45 -0
  29. package/esm2022/lib/components/dossier-management-widget-wizard/steps/widget-wizard-width-step/widget-wizard-width-step.component.mjs +43 -0
  30. package/esm2022/lib/dossier-management-routing.module.mjs +14 -1
  31. package/esm2022/lib/dossier-management.module.mjs +7 -3
  32. package/esm2022/lib/models/index.mjs +5 -2
  33. package/esm2022/lib/models/widget-content.model.mjs +17 -0
  34. package/esm2022/lib/models/widget-editor.model.mjs +30 -0
  35. package/esm2022/lib/models/widget-wizard.model.mjs +78 -0
  36. package/esm2022/lib/services/index.mjs +8 -4
  37. package/esm2022/lib/services/tab-management.service.mjs +12 -6
  38. package/esm2022/lib/services/tab.service.mjs +2 -1
  39. package/esm2022/lib/services/widget-fields.service.mjs +104 -0
  40. package/esm2022/lib/services/widget-json-editor.service.mjs +31 -0
  41. package/esm2022/lib/services/widget-tab-management.service.mjs +26 -0
  42. package/esm2022/lib/services/widget-wizard.service.mjs +41 -0
  43. package/fesm2022/valtimo-dossier-management.mjs +4568 -2461
  44. package/fesm2022/valtimo-dossier-management.mjs.map +1 -1
  45. package/lib/components/dossier-management-detail-container/dossier-management-detail-container.component.d.ts.map +1 -1
  46. package/lib/components/dossier-management-search-fields/dossier-management-search-fields.component.d.ts.map +1 -1
  47. package/lib/components/dossier-management-statuses/dossier-management-status-modal/dossier-management-status-modal.component.d.ts +1 -0
  48. package/lib/components/dossier-management-statuses/dossier-management-status-modal/dossier-management-status-modal.component.d.ts.map +1 -1
  49. package/lib/components/dossier-management-tabs/dossier-management-add-tab-modal/dossier-management-add-tab-modal.component.d.ts +7 -9
  50. package/lib/components/dossier-management-tabs/dossier-management-add-tab-modal/dossier-management-add-tab-modal.component.d.ts.map +1 -1
  51. package/lib/components/dossier-management-tabs/dossier-management-edit-tab-modal/dossier-management-edit-tab-modal.component.d.ts.map +1 -1
  52. package/lib/components/dossier-management-tabs/dossier-management-tabs.component.d.ts +10 -5
  53. package/lib/components/dossier-management-tabs/dossier-management-tabs.component.d.ts.map +1 -1
  54. package/lib/components/dossier-management-tabs/tab-form/tab-form.component.d.ts +13 -4
  55. package/lib/components/dossier-management-tabs/tab-form/tab-form.component.d.ts.map +1 -1
  56. package/lib/components/dossier-management-widget-configurators/collection/dossier-management-widget-collection.component.d.ts +57 -0
  57. package/lib/components/dossier-management-widget-configurators/collection/dossier-management-widget-collection.component.d.ts.map +1 -0
  58. package/lib/components/dossier-management-widget-configurators/custom/dossier-management-widget-custom.component.d.ts +40 -0
  59. package/lib/components/dossier-management-widget-configurators/custom/dossier-management-widget-custom.component.d.ts.map +1 -0
  60. package/lib/components/dossier-management-widget-configurators/fields/column/dossier-management-widget-fields-column.component.d.ts +50 -0
  61. package/lib/components/dossier-management-widget-configurators/fields/column/dossier-management-widget-fields-column.component.d.ts.map +1 -0
  62. package/lib/components/dossier-management-widget-configurators/fields/dossier-management-widget-fields.component.d.ts +38 -0
  63. package/lib/components/dossier-management-widget-configurators/fields/dossier-management-widget-fields.component.d.ts.map +1 -0
  64. package/lib/components/dossier-management-widget-configurators/formio/dossier-management-widget-formio.component.d.ts +41 -0
  65. package/lib/components/dossier-management-widget-configurators/formio/dossier-management-widget-formio.component.d.ts.map +1 -0
  66. package/lib/components/dossier-management-widget-configurators/index.d.ts +6 -0
  67. package/lib/components/dossier-management-widget-configurators/index.d.ts.map +1 -0
  68. package/lib/components/dossier-management-widget-configurators/table/dossier-management-widget-table.component.d.ts +32 -0
  69. package/lib/components/dossier-management-widget-configurators/table/dossier-management-widget-table.component.d.ts.map +1 -0
  70. package/lib/components/dossier-management-widget-tab/dossier-management-widget-tab.component.d.ts +50 -0
  71. package/lib/components/dossier-management-widget-tab/dossier-management-widget-tab.component.d.ts.map +1 -0
  72. package/lib/components/dossier-management-widget-tab/editor/dossier-management-widgets-editor.component.d.ts +40 -0
  73. package/lib/components/dossier-management-widget-tab/editor/dossier-management-widgets-editor.component.d.ts.map +1 -0
  74. package/lib/components/dossier-management-widget-tab/json-editor/dossier-management-widgets-json-editor.component.d.ts +47 -0
  75. package/lib/components/dossier-management-widget-tab/json-editor/dossier-management-widgets-json-editor.component.d.ts.map +1 -0
  76. package/lib/components/dossier-management-widget-tab-edit-modal/dossier-management-widget-tab-edit-modal.d.ts +32 -0
  77. package/lib/components/dossier-management-widget-tab-edit-modal/dossier-management-widget-tab-edit-modal.d.ts.map +1 -0
  78. package/lib/components/dossier-management-widget-wizard/dossier-management-widget-wizard.component.d.ts +34 -0
  79. package/lib/components/dossier-management-widget-wizard/dossier-management-widget-wizard.component.d.ts.map +1 -0
  80. package/lib/components/dossier-management-widget-wizard/steps/index.d.ts +6 -0
  81. package/lib/components/dossier-management-widget-wizard/steps/index.d.ts.map +1 -0
  82. package/lib/components/dossier-management-widget-wizard/steps/widget-wizard-content-step/widget-wizard-content-step.component.d.ts +15 -0
  83. package/lib/components/dossier-management-widget-wizard/steps/widget-wizard-content-step/widget-wizard-content-step.component.d.ts.map +1 -0
  84. package/lib/components/dossier-management-widget-wizard/steps/widget-wizard-style-step/widget-wizard-style-step.component.d.ts +15 -0
  85. package/lib/components/dossier-management-widget-wizard/steps/widget-wizard-style-step/widget-wizard-style-step.component.d.ts.map +1 -0
  86. package/lib/components/dossier-management-widget-wizard/steps/widget-wizard-type-step/widget-wizard-type-step.component.d.ts +15 -0
  87. package/lib/components/dossier-management-widget-wizard/steps/widget-wizard-type-step/widget-wizard-type-step.component.d.ts.map +1 -0
  88. package/lib/components/dossier-management-widget-wizard/steps/widget-wizard-width-step/widget-wizard-width-step.component.d.ts +16 -0
  89. package/lib/components/dossier-management-widget-wizard/steps/widget-wizard-width-step/widget-wizard-width-step.component.d.ts.map +1 -0
  90. package/lib/dossier-management-routing.module.d.ts.map +1 -1
  91. package/lib/dossier-management.module.d.ts +2 -1
  92. package/lib/dossier-management.module.d.ts.map +1 -1
  93. package/lib/models/index.d.ts +4 -1
  94. package/lib/models/index.d.ts.map +1 -1
  95. package/lib/models/widget-content.model.d.ts +5 -0
  96. package/lib/models/widget-content.model.d.ts.map +1 -0
  97. package/lib/models/widget-editor.model.d.ts +10 -0
  98. package/lib/models/widget-editor.model.d.ts.map +1 -0
  99. package/lib/models/widget-wizard.model.d.ts +29 -0
  100. package/lib/models/widget-wizard.model.d.ts.map +1 -0
  101. package/lib/services/index.d.ts +7 -3
  102. package/lib/services/index.d.ts.map +1 -1
  103. package/lib/services/tab-management.service.d.ts +3 -1
  104. package/lib/services/tab-management.service.d.ts.map +1 -1
  105. package/lib/services/tab.service.d.ts +1 -0
  106. package/lib/services/tab.service.d.ts.map +1 -1
  107. package/lib/services/widget-fields.service.d.ts +17 -0
  108. package/lib/services/widget-fields.service.d.ts.map +1 -0
  109. package/lib/services/widget-json-editor.service.d.ts +7 -0
  110. package/lib/services/widget-json-editor.service.d.ts.map +1 -0
  111. package/lib/services/widget-tab-management.service.d.ts +16 -0
  112. package/lib/services/widget-tab-management.service.d.ts.map +1 -0
  113. package/lib/services/widget-wizard.service.d.ts +18 -0
  114. package/lib/services/widget-wizard.service.d.ts.map +1 -0
  115. package/package.json +1 -1
@@ -0,0 +1,218 @@
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 { CommonModule } from '@angular/common';
17
+ import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Output, signal, ViewEncapsulation, } from '@angular/core';
18
+ import { ReactiveFormsModule, Validators, } from '@angular/forms';
19
+ import { TranslateModule } from '@ngx-translate/core';
20
+ import { CARBON_THEME, CurrentCarbonTheme } from '@valtimo/components';
21
+ import { CaseWidgetDisplayTypeKey, } from '@valtimo/dossier';
22
+ import { ButtonModule, DropdownModule, IconModule, InputModule, } from 'carbon-components-angular';
23
+ import { debounceTime, map, Subscription } from 'rxjs';
24
+ import { DossierManagementWidgetFieldsColumnComponent } from '../fields/column/dossier-management-widget-fields-column.component';
25
+ import * as i0 from "@angular/core";
26
+ import * as i1 from "@valtimo/components";
27
+ import * as i2 from "@angular/forms";
28
+ import * as i3 from "@ngx-translate/core";
29
+ import * as i4 from "../../../services";
30
+ import * as i5 from "@angular/common";
31
+ import * as i6 from "carbon-components-angular";
32
+ export class DossierManagementWidgetCollectionComponent {
33
+ constructor(cdsThemeService, fb, translateService, widgetWizardService, widgetFieldsService) {
34
+ this.cdsThemeService = cdsThemeService;
35
+ this.fb = fb;
36
+ this.translateService = translateService;
37
+ this.widgetWizardService = widgetWizardService;
38
+ this.widgetFieldsService = widgetFieldsService;
39
+ this.class = 'valtimo-dossier-management-widget-collection';
40
+ this.changeValidEvent = new EventEmitter();
41
+ this.widgetForm = this.fb.group({
42
+ title: this.fb.control(this.widgetWizardService.widgetTitle() ?? '', Validators.required),
43
+ defaultPageSize: this.fb.control(this.widgetWizardService.widgetContent()?.defaultPageSize ?? 5, Validators.required),
44
+ collection: this.fb.control(this.widgetWizardService.widgetContent()?.collection ?? '', Validators.required),
45
+ });
46
+ this.cardForm = this.fb.group({
47
+ value: this.fb.control(this.widgetWizardService.widgetContent()?.title?.value ?? '', Validators.required),
48
+ type: this.fb.control({
49
+ content: this.translateService.instant(this.translateService.instant(`widgetTabManagement.content.displayType.${this.widgetWizardService.widgetContent()?.title?.displayProperties?.type ?? CaseWidgetDisplayTypeKey.TEXT}`)),
50
+ id: this.widgetWizardService.widgetContent()?.title
51
+ ?.displayProperties?.type ?? CaseWidgetDisplayTypeKey.TEXT,
52
+ selected: true,
53
+ }, Validators.required),
54
+ });
55
+ this.theme$ = this.cdsThemeService.currentTheme$.pipe(map((theme) => theme === CurrentCarbonTheme.G10 ? CARBON_THEME.WHITE : CARBON_THEME.G90));
56
+ this.CaseWidgetDisplayTypeKey = CaseWidgetDisplayTypeKey;
57
+ this.content = this.widgetWizardService
58
+ .widgetContent;
59
+ this.displayTypeItems = this.widgetFieldsService.displayTypeItems;
60
+ this.WIDTH_ITEMS = [
61
+ {
62
+ content: this.translateService.instant('widgetTabManagement.width.fullWidth.title'),
63
+ id: 'full',
64
+ selected: true,
65
+ },
66
+ {
67
+ content: this.translateService.instant('widgetTabManagement.width.half.title'),
68
+ id: 'half',
69
+ selected: false,
70
+ },
71
+ ];
72
+ this._subscriptions = new Subscription();
73
+ this._contentValid = signal(false);
74
+ }
75
+ ngOnInit() {
76
+ this.openWidgetFormSubscription();
77
+ this.openCardFormSubscription();
78
+ this.initForm();
79
+ }
80
+ ngOnDestroy() {
81
+ this._subscriptions.unsubscribe();
82
+ }
83
+ onAddEnumValueClick(valuesFormArray) {
84
+ valuesFormArray.push(this.fb.group({
85
+ key: this.fb.control('', Validators.required),
86
+ value: this.fb.control('', Validators.required),
87
+ }));
88
+ }
89
+ getDisplayItemsSelected(control) {
90
+ return this.widgetFieldsService.getDisplayItemsSelected(control);
91
+ }
92
+ getSelectedWidthItem(fieldIndex) {
93
+ const widgetContent = this.widgetWizardService.widgetContent();
94
+ return !widgetContent
95
+ ? this.WIDTH_ITEMS
96
+ : this.WIDTH_ITEMS.map((item) => ({
97
+ ...item,
98
+ selected: widgetContent.fields?.[fieldIndex]?.width === item.id,
99
+ }));
100
+ }
101
+ onColumnUpdateEvent(event) {
102
+ const { data, valid } = event;
103
+ this.widgetWizardService.widgetContent.update((content) => {
104
+ const existingFields = content?.fields;
105
+ return {
106
+ ...content,
107
+ fields: data.map((item, index) => ({
108
+ ...item,
109
+ width: existingFields?.[index]?.width ?? 'full',
110
+ })),
111
+ };
112
+ });
113
+ this._contentValid.set(valid);
114
+ this.changeValidEvent.emit(valid && this.widgetForm.valid);
115
+ }
116
+ onDeleteRowClick(formArray, index) {
117
+ if (!formArray)
118
+ return;
119
+ formArray.removeAt(index);
120
+ }
121
+ onTypeSelected(formGroup, event) {
122
+ this.widgetFieldsService.onDisplayTypeSelected(['value', 'type'], formGroup, event);
123
+ }
124
+ onWidthSelected(event, fieldIndex) {
125
+ this.widgetWizardService.widgetContent.update((content) => ({
126
+ ...content,
127
+ fields: content?.fields.map((field, index) => index === fieldIndex ? { ...field, width: event.item.id } : field),
128
+ }));
129
+ }
130
+ initForm() {
131
+ if (!this.widgetWizardService.widgetContent())
132
+ return;
133
+ const title = this.widgetWizardService.widgetContent().title;
134
+ if (!title)
135
+ return;
136
+ this.onTypeSelected(this.cardForm, {
137
+ item: { id: title.displayProperties?.type ?? '', content: '', selected: true },
138
+ });
139
+ this.cardForm.patchValue({
140
+ ...([
141
+ CaseWidgetDisplayTypeKey.NUMBER,
142
+ CaseWidgetDisplayTypeKey.PERCENT,
143
+ CaseWidgetDisplayTypeKey.CURRENCY,
144
+ ].includes(title.displayProperties?.type) && {
145
+ digitsInfo: title.displayProperties.digitsInfo,
146
+ }),
147
+ ...(title.displayProperties?.type === CaseWidgetDisplayTypeKey.CURRENCY && {
148
+ currencyCode: title.displayProperties.currencyCode,
149
+ display: title.displayProperties.display,
150
+ }),
151
+ ...(title.displayProperties?.type === CaseWidgetDisplayTypeKey.DATE && {
152
+ format: title.displayProperties.format,
153
+ }),
154
+ ...(title.displayProperties?.type === CaseWidgetDisplayTypeKey.DATE_TIME && {
155
+ format: title.displayProperties.format,
156
+ }),
157
+ ...(title.displayProperties?.type === CaseWidgetDisplayTypeKey.ENUM && {
158
+ values: Object.entries(title.displayProperties.values).map(([key, value]) => ({ key, value })),
159
+ }),
160
+ }, { emitEvent: false });
161
+ }
162
+ openWidgetFormSubscription() {
163
+ this._subscriptions.add(this.widgetForm.valueChanges.pipe(debounceTime(500)).subscribe(value => {
164
+ this.widgetWizardService.widgetTitle.set(value?.title ?? '');
165
+ this.widgetWizardService.widgetContent.update((content) => ({
166
+ ...content,
167
+ collection: value?.collection || '',
168
+ defaultPageSize: value?.defaultPageSize || 5,
169
+ }));
170
+ this.changeValidEvent.emit(this.widgetForm.valid && this.cardForm.valid && this._contentValid());
171
+ }));
172
+ }
173
+ openCardFormSubscription() {
174
+ this._subscriptions.add(this.cardForm.valueChanges.pipe(debounceTime(500)).subscribe(formValue => {
175
+ let { value, ...displayProperties } = formValue;
176
+ displayProperties = {
177
+ ...displayProperties,
178
+ ...(!!displayProperties.type && {
179
+ type: displayProperties.type.id,
180
+ }),
181
+ ...(!!formValue.values && {
182
+ values: formValue.values?.reduce((acc, curr) => ({ ...acc, [curr.key]: curr.value }), {}),
183
+ }),
184
+ };
185
+ this.widgetWizardService.widgetContent.update((content) => ({
186
+ ...content,
187
+ title: {
188
+ value,
189
+ ...(displayProperties.type !== CaseWidgetDisplayTypeKey.TEXT && {
190
+ displayProperties,
191
+ }),
192
+ },
193
+ }));
194
+ this.changeValidEvent.emit(this.widgetForm.valid && this.cardForm.valid && this._contentValid());
195
+ }));
196
+ }
197
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: DossierManagementWidgetCollectionComponent, deps: [{ token: i1.CdsThemeService }, { token: i2.FormBuilder }, { token: i3.TranslateService }, { token: i4.WidgetWizardService }, { token: i4.WidgetFieldsService }], target: i0.ɵɵFactoryTarget.Component }); }
198
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", type: DossierManagementWidgetCollectionComponent, isStandalone: true, selector: "ng-component", outputs: { changeValidEvent: "changeValidEvent" }, host: { properties: { "class": "this.class" } }, 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-container *ngIf=\"{theme: theme$ | async} as obs\">\n <form [formGroup]=\"widgetForm\" class=\"valtimo-dossier-management-widget-collection__form\">\n <cds-text-label [attr.data-carbon-theme]=\"obs.theme\">\n {{ 'widgetTabManagement.content.widgetTitle' | translate }}\n\n <input\n formControlName=\"title\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.widgetTitlePlaceholder' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n\n <cds-text-label [attr.data-carbon-theme]=\"obs.theme\">\n {{ 'widgetTabManagement.content.collection.defaultPageSize' | translate }}\n\n <input\n formControlName=\"defaultPageSize\"\n cdsText\n [placeholder]=\"\n 'widgetTabManagement.content.collection.defaultPageSizePlaceholder' | translate\n \"\n type=\"text\"\n />\n </cds-text-label>\n\n <cds-text-label [attr.data-carbon-theme]=\"obs.theme\">\n {{ 'widgetTabManagement.content.collection.collection' | translate }}\n\n <input\n formControlName=\"collection\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.collection.collectionPlaceholder' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n </form>\n\n <span class=\"valtimo-dossier-management-widget-collection__subtitle\">\n {{ 'widgetTabManagement.content.collection.cardTitle' | translate }}\n </span>\n\n <form [formGroup]=\"cardForm\" class=\"valtimo-dossier-management-widget-collection__card\">\n <section class=\"valtimo-dossier-management-widget-collection__card-title\">\n <cds-text-label>\n {{ 'widgetTabManagement.content.fields.value' | translate }}\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.valuePlaceholder' | translate\"\n type=\"text\"\n formControlName=\"value\"\n />\n </cds-text-label>\n\n <cds-dropdown\n [attr.data-carbon-theme]=\"obs.theme\"\n [label]=\"'widgetTabManagement.content.fields.type' | translate\"\n [dropUp]=\"false\"\n [placeholder]=\"'widgetTabManagement.content.fields.typePlaceholder' | translate\"\n (selected)=\"onTypeSelected(cardForm, $event)\"\n formControlName=\"type\"\n >\n <cds-dropdown-list [items]=\"getDisplayItemsSelected(cardForm)\"></cds-dropdown-list>\n </cds-dropdown>\n </section>\n\n <section class=\"valtimo-dossier-management-widget-collection__card-options\">\n @switch (cardForm.get('type').value.id) {\n @case (CaseWidgetDisplayTypeKey.CURRENCY) {\n <cds-text-label>\n {{ 'widgetTabManagement.content.fields.currencyCode' | translate }}\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"\n 'widgetTabManagement.content.fields.currencyCodePlaceholder' | translate\n \"\n type=\"text\"\n formControlName=\"currencyCode\"\n />\n </cds-text-label>\n\n <cds-text-label>\n {{ 'widgetTabManagement.content.fields.display' | translate }}\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.displayPlaceholder' | translate\"\n type=\"text\"\n formControlName=\"display\"\n />\n </cds-text-label>\n\n <cds-text-label>\n {{ 'widgetTabManagement.content.fields.digitsInfo' | translate }}\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.digitsInfoPlaceholder' | translate\"\n type=\"text\"\n formControlName=\"digitsInfo\"\n />\n </cds-text-label>\n }\n @case (CaseWidgetDisplayTypeKey.DATE) {\n <cds-text-label>\n {{ 'widgetTabManagement.content.fields.format' | translate }}\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.formatPlaceholder' | translate\"\n type=\"text\"\n formControlName=\"format\"\n />\n </cds-text-label>\n }\n @case (CaseWidgetDisplayTypeKey.DATE_TIME) {\n <cds-text-label>\n {{ 'widgetTabManagement.content.fields.format' | translate }}\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.formatPlaceholder' | translate\"\n type=\"text\"\n formControlName=\"format\"\n />\n </cds-text-label>\n }\n @case (CaseWidgetDisplayTypeKey.ENUM) {\n <div class=\"valtimo-dossier-management-widget-collection__enum\" formArrayName=\"values\">\n @for (rowValue of cardForm.get('values')?.controls; track $index) {\n <form\n [formGroup]=\"rowValue\"\n class=\"valtimo-dossier-management-widget-collection__enum-form\"\n >\n <cds-text-label>\n {{ 'widgetTabManagement.content.fields.key' | translate }}\n\n <input\n [attr.data-carbon-theme]=\"obs.theme\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.fields.key' | translate\"\n type=\"text\"\n formControlName=\"key\"\n />\n </cds-text-label>\n\n <cds-text-label>\n {{ 'widgetTabManagement.content.fields.value' | translate }}\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.value' | translate\"\n type=\"text\"\n formControlName=\"value\"\n />\n </cds-text-label>\n\n <button\n cdsButton=\"danger--ghost\"\n [disabled]=\"$count === 1\"\n [iconOnly]=\"true\"\n class=\"valtimo-dossier-management-widget-field-column__delete-button enum\"\n (click)=\"onDeleteRowClick(cardForm.get('values'), $index)\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </form>\n }\n\n <button\n cdsButton=\"primary\"\n size=\"sm\"\n (click)=\"onAddEnumValueClick(cardForm.get('values'))\"\n >\n {{ 'widgetTabManagement.content.fields.addEnum' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </div>\n }\n @case (CaseWidgetDisplayTypeKey.NUMBER) {\n <cds-text-label>\n {{ 'widgetTabManagement.content.fields.digitsInfo' | translate }}\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n type=\"text\"\n formControlName=\"digitsInfo\"\n />\n </cds-text-label>\n }\n @case (CaseWidgetDisplayTypeKey.PERCENT) {\n <cds-text-label>\n {{ 'widgetTabManagement.content.fields.digitsInfo' | translate }}\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n type=\"text\"\n formControlName=\"digitsInfo\"\n />\n </cds-text-label>\n }\n }\n </section>\n </form>\n\n <span class=\"valtimo-dossier-management-widget-collection__subtitle\">\n {{ 'widgetTabManagement.content.collection.cardFields' | translate }}\n </span>\n\n <valtimo-dossier-management-widget-fields-column\n [columnData]=\"content()?.fields\"\n [fieldWidthDropdown]=\"fieldWidthDropdown\"\n (columnUpdateEvent)=\"onColumnUpdateEvent($event)\"\n >\n </valtimo-dossier-management-widget-fields-column>\n\n <ng-template #fieldWidthDropdown let-index=\"index\">\n <cds-dropdown\n [label]=\"'widgetTabManagement.content.collection.fieldWidth' | translate\"\n [dropUp]=\"false\"\n [placeholder]=\"'widgetTabManagement.content.collection.fieldWidthPlaceholder' | translate\"\n (selected)=\"onWidthSelected($event, index)\"\n >\n <cds-dropdown-list [items]=\"getSelectedWidthItem(index)\"></cds-dropdown-list>\n </cds-dropdown>\n </ng-template>\n</ng-container>\n", styles: [".valtimo-dossier-management-widget-collection{display:flex;flex-direction:column;gap:24px}.valtimo-dossier-management-widget-collection__form{display:flex;gap:16px}.valtimo-dossier-management-widget-collection__subtitle{font-size:16px;font-weight:600;line-height:22px}.valtimo-dossier-management-widget-collection__card{flex-direction:column;display:flex;gap:16px}.valtimo-dossier-management-widget-collection__card-title{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;align-items:flex-end}.valtimo-dossier-management-widget-collection__card-options{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.valtimo-dossier-management-widget-collection__enum{display:flex;flex-direction:column;gap:16px}.valtimo-dossier-management-widget-collection__enum-form{display:grid;grid-template-columns:1fr 1fr auto;align-items:flex-end;gap:16px}\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: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "component", type: DossierManagementWidgetFieldsColumnComponent, selector: "valtimo-dossier-management-widget-fields-column", inputs: ["columnData", "addTranslateKey", "fieldWidthDropdown"], outputs: ["columnUpdateEvent"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "ngmodule", type: InputModule }, { kind: "component", type: i6.TextInputLabelComponent, selector: "cds-text-label, ibm-text-label", inputs: ["labelInputID", "disabled", "skeleton", "labelTemplate", "textInputTemplate", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i6.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "ngmodule", type: DropdownModule }, { kind: "component", type: i6.Dropdown, selector: "cds-dropdown, ibm-dropdown", inputs: ["id", "label", "helperText", "placeholder", "displayValue", "clearText", "size", "type", "theme", "disabled", "skeleton", "inline", "disableArrowKeys", "invalid", "invalidText", "warn", "warnText", "appendInline", "scrollableContainer", "itemValueKey", "selectionFeedback", "menuButtonLabel", "selectedLabel", "dropUp"], outputs: ["selected", "onClose", "close"] }, { kind: "component", type: i6.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i6.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i6.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
199
+ }
200
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: DossierManagementWidgetCollectionComponent, decorators: [{
201
+ type: Component,
202
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, imports: [
203
+ CommonModule,
204
+ TranslateModule,
205
+ DossierManagementWidgetFieldsColumnComponent,
206
+ ReactiveFormsModule,
207
+ InputModule,
208
+ DropdownModule,
209
+ ButtonModule,
210
+ IconModule,
211
+ ], 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-container *ngIf=\"{theme: theme$ | async} as obs\">\n <form [formGroup]=\"widgetForm\" class=\"valtimo-dossier-management-widget-collection__form\">\n <cds-text-label [attr.data-carbon-theme]=\"obs.theme\">\n {{ 'widgetTabManagement.content.widgetTitle' | translate }}\n\n <input\n formControlName=\"title\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.widgetTitlePlaceholder' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n\n <cds-text-label [attr.data-carbon-theme]=\"obs.theme\">\n {{ 'widgetTabManagement.content.collection.defaultPageSize' | translate }}\n\n <input\n formControlName=\"defaultPageSize\"\n cdsText\n [placeholder]=\"\n 'widgetTabManagement.content.collection.defaultPageSizePlaceholder' | translate\n \"\n type=\"text\"\n />\n </cds-text-label>\n\n <cds-text-label [attr.data-carbon-theme]=\"obs.theme\">\n {{ 'widgetTabManagement.content.collection.collection' | translate }}\n\n <input\n formControlName=\"collection\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.collection.collectionPlaceholder' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n </form>\n\n <span class=\"valtimo-dossier-management-widget-collection__subtitle\">\n {{ 'widgetTabManagement.content.collection.cardTitle' | translate }}\n </span>\n\n <form [formGroup]=\"cardForm\" class=\"valtimo-dossier-management-widget-collection__card\">\n <section class=\"valtimo-dossier-management-widget-collection__card-title\">\n <cds-text-label>\n {{ 'widgetTabManagement.content.fields.value' | translate }}\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.valuePlaceholder' | translate\"\n type=\"text\"\n formControlName=\"value\"\n />\n </cds-text-label>\n\n <cds-dropdown\n [attr.data-carbon-theme]=\"obs.theme\"\n [label]=\"'widgetTabManagement.content.fields.type' | translate\"\n [dropUp]=\"false\"\n [placeholder]=\"'widgetTabManagement.content.fields.typePlaceholder' | translate\"\n (selected)=\"onTypeSelected(cardForm, $event)\"\n formControlName=\"type\"\n >\n <cds-dropdown-list [items]=\"getDisplayItemsSelected(cardForm)\"></cds-dropdown-list>\n </cds-dropdown>\n </section>\n\n <section class=\"valtimo-dossier-management-widget-collection__card-options\">\n @switch (cardForm.get('type').value.id) {\n @case (CaseWidgetDisplayTypeKey.CURRENCY) {\n <cds-text-label>\n {{ 'widgetTabManagement.content.fields.currencyCode' | translate }}\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"\n 'widgetTabManagement.content.fields.currencyCodePlaceholder' | translate\n \"\n type=\"text\"\n formControlName=\"currencyCode\"\n />\n </cds-text-label>\n\n <cds-text-label>\n {{ 'widgetTabManagement.content.fields.display' | translate }}\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.displayPlaceholder' | translate\"\n type=\"text\"\n formControlName=\"display\"\n />\n </cds-text-label>\n\n <cds-text-label>\n {{ 'widgetTabManagement.content.fields.digitsInfo' | translate }}\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.digitsInfoPlaceholder' | translate\"\n type=\"text\"\n formControlName=\"digitsInfo\"\n />\n </cds-text-label>\n }\n @case (CaseWidgetDisplayTypeKey.DATE) {\n <cds-text-label>\n {{ 'widgetTabManagement.content.fields.format' | translate }}\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.formatPlaceholder' | translate\"\n type=\"text\"\n formControlName=\"format\"\n />\n </cds-text-label>\n }\n @case (CaseWidgetDisplayTypeKey.DATE_TIME) {\n <cds-text-label>\n {{ 'widgetTabManagement.content.fields.format' | translate }}\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.formatPlaceholder' | translate\"\n type=\"text\"\n formControlName=\"format\"\n />\n </cds-text-label>\n }\n @case (CaseWidgetDisplayTypeKey.ENUM) {\n <div class=\"valtimo-dossier-management-widget-collection__enum\" formArrayName=\"values\">\n @for (rowValue of cardForm.get('values')?.controls; track $index) {\n <form\n [formGroup]=\"rowValue\"\n class=\"valtimo-dossier-management-widget-collection__enum-form\"\n >\n <cds-text-label>\n {{ 'widgetTabManagement.content.fields.key' | translate }}\n\n <input\n [attr.data-carbon-theme]=\"obs.theme\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.fields.key' | translate\"\n type=\"text\"\n formControlName=\"key\"\n />\n </cds-text-label>\n\n <cds-text-label>\n {{ 'widgetTabManagement.content.fields.value' | translate }}\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.value' | translate\"\n type=\"text\"\n formControlName=\"value\"\n />\n </cds-text-label>\n\n <button\n cdsButton=\"danger--ghost\"\n [disabled]=\"$count === 1\"\n [iconOnly]=\"true\"\n class=\"valtimo-dossier-management-widget-field-column__delete-button enum\"\n (click)=\"onDeleteRowClick(cardForm.get('values'), $index)\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </button>\n </form>\n }\n\n <button\n cdsButton=\"primary\"\n size=\"sm\"\n (click)=\"onAddEnumValueClick(cardForm.get('values'))\"\n >\n {{ 'widgetTabManagement.content.fields.addEnum' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </div>\n }\n @case (CaseWidgetDisplayTypeKey.NUMBER) {\n <cds-text-label>\n {{ 'widgetTabManagement.content.fields.digitsInfo' | translate }}\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n type=\"text\"\n formControlName=\"digitsInfo\"\n />\n </cds-text-label>\n }\n @case (CaseWidgetDisplayTypeKey.PERCENT) {\n <cds-text-label>\n {{ 'widgetTabManagement.content.fields.digitsInfo' | translate }}\n\n <input\n cdsText\n [attr.data-carbon-theme]=\"obs.theme\"\n [placeholder]=\"'widgetTabManagement.content.fields.digitsInfo' | translate\"\n type=\"text\"\n formControlName=\"digitsInfo\"\n />\n </cds-text-label>\n }\n }\n </section>\n </form>\n\n <span class=\"valtimo-dossier-management-widget-collection__subtitle\">\n {{ 'widgetTabManagement.content.collection.cardFields' | translate }}\n </span>\n\n <valtimo-dossier-management-widget-fields-column\n [columnData]=\"content()?.fields\"\n [fieldWidthDropdown]=\"fieldWidthDropdown\"\n (columnUpdateEvent)=\"onColumnUpdateEvent($event)\"\n >\n </valtimo-dossier-management-widget-fields-column>\n\n <ng-template #fieldWidthDropdown let-index=\"index\">\n <cds-dropdown\n [label]=\"'widgetTabManagement.content.collection.fieldWidth' | translate\"\n [dropUp]=\"false\"\n [placeholder]=\"'widgetTabManagement.content.collection.fieldWidthPlaceholder' | translate\"\n (selected)=\"onWidthSelected($event, index)\"\n >\n <cds-dropdown-list [items]=\"getSelectedWidthItem(index)\"></cds-dropdown-list>\n </cds-dropdown>\n </ng-template>\n</ng-container>\n", styles: [".valtimo-dossier-management-widget-collection{display:flex;flex-direction:column;gap:24px}.valtimo-dossier-management-widget-collection__form{display:flex;gap:16px}.valtimo-dossier-management-widget-collection__subtitle{font-size:16px;font-weight:600;line-height:22px}.valtimo-dossier-management-widget-collection__card{flex-direction:column;display:flex;gap:16px}.valtimo-dossier-management-widget-collection__card-title{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;align-items:flex-end}.valtimo-dossier-management-widget-collection__card-options{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.valtimo-dossier-management-widget-collection__enum{display:flex;flex-direction:column;gap:16px}.valtimo-dossier-management-widget-collection__enum-form{display:grid;grid-template-columns:1fr 1fr auto;align-items:flex-end;gap:16px}\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"] }]
212
+ }], ctorParameters: () => [{ type: i1.CdsThemeService }, { type: i2.FormBuilder }, { type: i3.TranslateService }, { type: i4.WidgetWizardService }, { type: i4.WidgetFieldsService }], propDecorators: { class: [{
213
+ type: HostBinding,
214
+ args: ['class']
215
+ }], changeValidEvent: [{
216
+ type: Output
217
+ }] } });
218
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1jb2xsZWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci1tYW5hZ2VtZW50L3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LWNvbmZpZ3VyYXRvcnMvY29sbGVjdGlvbi9kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LWNvbGxlY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyLW1hbmFnZW1lbnQvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtY29uZmlndXJhdG9ycy9jb2xsZWN0aW9uL2Rvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtY29sbGVjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osV0FBVyxFQUdYLE1BQU0sRUFDTixNQUFNLEVBQ04saUJBQWlCLEdBRWxCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFLTCxtQkFBbUIsRUFDbkIsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLGVBQWUsRUFBbUIsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQUMsWUFBWSxFQUFtQixrQkFBa0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3RGLE9BQU8sRUFJTCx3QkFBd0IsR0FNekIsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQ0wsWUFBWSxFQUNaLGNBQWMsRUFDZCxV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LGNBQWMsbXJCQUNkLFlBQVksZ01BQ1osVUFBVTs7MkZBR0QsMENBQTBDO2tCQWpCdEQsU0FBUztzQ0FHUyx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLGNBQ3pCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsNENBQTRDO3dCQUM1QyxtQkFBbUI7d0JBQ25CLFdBQVc7d0JBQ1gsY0FBYzt3QkFDZCxZQUFZO3dCQUNaLFVBQVU7cUJBQ1g7aU5BS3FDLEtBQUs7c0JBQTFDLFdBQVc7dUJBQUMsT0FBTztnQkFDTSxnQkFBZ0I7c0JBQXpDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RCaW5kaW5nLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBzaWduYWwsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBXcml0YWJsZVNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIEZvcm1BcnJheSxcbiAgRm9ybUJ1aWxkZXIsXG4gIEZvcm1Hcm91cCxcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgVmFsaWRhdG9ycyxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtDQVJCT05fVEhFTUUsIENkc1RoZW1lU2VydmljZSwgQ3VycmVudENhcmJvblRoZW1lfSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCB7XG4gIENhc2VXaWRnZXRDdXJyZW5jeURpc3BsYXlUeXBlLFxuICBDYXNlV2lkZ2V0RGF0ZURpc3BsYXlUeXBlLFxuICBDYXNlV2lkZ2V0RGF0ZVRpbWVEaXNwbGF5VHlwZSxcbiAgQ2FzZVdpZGdldERpc3BsYXlUeXBlS2V5LFxuICBDYXNlV2lkZ2V0RW51bURpc3BsYXlUeXBlLFxuICBDb2xsZWN0aW9uRmllbGRXaWR0aCxcbiAgRmllbGRzQ2FzZVdpZGdldFZhbHVlLFxuICBXaWRnZXRDb2xsZWN0aW9uQ29udGVudCxcbiAgV2lkZ2V0Q29udGVudFByb3BlcnRpZXMsXG59IGZyb20gJ0B2YWx0aW1vL2Rvc3NpZXInO1xuaW1wb3J0IHtcbiAgQnV0dG9uTW9kdWxlLFxuICBEcm9wZG93bk1vZHVsZSxcbiAgSWNvbk1vZHVsZSxcbiAgSW5wdXRNb2R1bGUsXG4gIExpc3RJdGVtLFxufSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyJztcbmltcG9ydCB7ZGVib3VuY2VUaW1lLCBtYXAsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7V2lkZ2V0Q29udGVudENvbXBvbmVudH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7V2lkZ2V0RmllbGRzU2VydmljZSwgV2lkZ2V0V2l6YXJkU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtEb3NzaWVyTWFuYWdlbWVudFdpZGdldEZpZWxkc0NvbHVtbkNvbXBvbmVudH0gZnJvbSAnLi4vZmllbGRzL2NvbHVtbi9kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LWZpZWxkcy1jb2x1bW4uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LWNvbGxlY3Rpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1jb2xsZWN0aW9uLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIERvc3NpZXJNYW5hZ2VtZW50V2lkZ2V0RmllbGRzQ29sdW1uQ29tcG9uZW50LFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgSW5wdXRNb2R1bGUsXG4gICAgRHJvcGRvd25Nb2R1bGUsXG4gICAgQnV0dG9uTW9kdWxlLFxuICAgIEljb25Nb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIERvc3NpZXJNYW5hZ2VtZW50V2lkZ2V0Q29sbGVjdGlvbkNvbXBvbmVudFxuICBpbXBsZW1lbnRzIFdpZGdldENvbnRlbnRDb21wb25lbnQsIE9uSW5pdCwgT25EZXN0cm95XG57XG4gIEBIb3N0QmluZGluZygnY2xhc3MnKSBwdWJsaWMgcmVhZG9ubHkgY2xhc3MgPSAndmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LWNvbGxlY3Rpb24nO1xuICBAT3V0cHV0KCkgcHVibGljIHJlYWRvbmx5IGNoYW5nZVZhbGlkRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHdpZGdldEZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICB0aXRsZTogdGhpcy5mYi5jb250cm9sKHRoaXMud2lkZ2V0V2l6YXJkU2VydmljZS53aWRnZXRUaXRsZSgpID8/ICcnLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICBkZWZhdWx0UGFnZVNpemU6IHRoaXMuZmIuY29udHJvbChcbiAgICAgICh0aGlzLndpZGdldFdpemFyZFNlcnZpY2Uud2lkZ2V0Q29udGVudCgpIGFzIFdpZGdldENvbGxlY3Rpb25Db250ZW50KT8uZGVmYXVsdFBhZ2VTaXplID8/IDUsXG4gICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkXG4gICAgKSxcbiAgICBjb2xsZWN0aW9uOiB0aGlzLmZiLmNvbnRyb2woXG4gICAgICAodGhpcy53aWRnZXRXaXphcmRTZXJ2aWNlLndpZGdldENvbnRlbnQoKSBhcyBXaWRnZXRDb2xsZWN0aW9uQ29udGVudCk/LmNvbGxlY3Rpb24gPz8gJycsXG4gICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkXG4gICAgKSxcbiAgfSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGNhcmRGb3JtID0gdGhpcy5mYi5ncm91cDxhbnk+KHtcbiAgICB2YWx1ZTogdGhpcy5mYi5jb250cm9sKFxuICAgICAgKHRoaXMud2lkZ2V0V2l6YXJkU2VydmljZS53aWRnZXRDb250ZW50KCkgYXMgV2lkZ2V0Q29sbGVjdGlvbkNvbnRlbnQpPy50aXRsZT8udmFsdWUgPz8gJycsXG4gICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkXG4gICAgKSxcbiAgICB0eXBlOiB0aGlzLmZiLmNvbnRyb2w8TGlzdEl0ZW0+KFxuICAgICAge1xuICAgICAgICBjb250ZW50OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICAgIGB3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuZGlzcGxheVR5cGUuJHsodGhpcy53aWRnZXRXaXphcmRTZXJ2aWNlLndpZGdldENvbnRlbnQoKSBhcyBXaWRnZXRDb2xsZWN0aW9uQ29udGVudCk/LnRpdGxlPy5kaXNwbGF5UHJvcGVydGllcz8udHlwZSA/PyBDYXNlV2lkZ2V0RGlzcGxheVR5cGVLZXkuVEVYVH1gXG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICBpZDpcbiAgICAgICAgICAodGhpcy53aWRnZXRXaXphcmRTZXJ2aWNlLndpZGdldENvbnRlbnQoKSBhcyBXaWRnZXRDb2xsZWN0aW9uQ29udGVudCk/LnRpdGxlXG4gICAgICAgICAgICA/LmRpc3BsYXlQcm9wZXJ0aWVzPy50eXBlID8/IENhc2VXaWRnZXREaXNwbGF5VHlwZUtleS5URVhULFxuICAgICAgICBzZWxlY3RlZDogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkXG4gICAgKSxcbiAgfSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHRoZW1lJDogT2JzZXJ2YWJsZTxDQVJCT05fVEhFTUU+ID0gdGhpcy5jZHNUaGVtZVNlcnZpY2UuY3VycmVudFRoZW1lJC5waXBlKFxuICAgIG1hcCgodGhlbWU6IEN1cnJlbnRDYXJib25UaGVtZSkgPT5cbiAgICAgIHRoZW1lID09PSBDdXJyZW50Q2FyYm9uVGhlbWUuRzEwID8gQ0FSQk9OX1RIRU1FLldISVRFIDogQ0FSQk9OX1RIRU1FLkc5MFxuICAgIClcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgQ2FzZVdpZGdldERpc3BsYXlUeXBlS2V5ID0gQ2FzZVdpZGdldERpc3BsYXlUeXBlS2V5O1xuICBwdWJsaWMgcmVhZG9ubHkgY29udGVudCA9IHRoaXMud2lkZ2V0V2l6YXJkU2VydmljZVxuICAgIC53aWRnZXRDb250ZW50IGFzIFdyaXRhYmxlU2lnbmFsPFdpZGdldENvbGxlY3Rpb25Db250ZW50PjtcbiAgcHVibGljIHJlYWRvbmx5IGRpc3BsYXlUeXBlSXRlbXM6IExpc3RJdGVtW10gPSB0aGlzLndpZGdldEZpZWxkc1NlcnZpY2UuZGlzcGxheVR5cGVJdGVtcztcblxuICBwdWJsaWMgV0lEVEhfSVRFTVM6IExpc3RJdGVtW10gPSBbXG4gICAge1xuICAgICAgY29udGVudDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ3dpZGdldFRhYk1hbmFnZW1lbnQud2lkdGguZnVsbFdpZHRoLnRpdGxlJyksXG4gICAgICBpZDogJ2Z1bGwnLFxuICAgICAgc2VsZWN0ZWQ6IHRydWUsXG4gICAgfSxcbiAgICB7XG4gICAgICBjb250ZW50OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnd2lkZ2V0VGFiTWFuYWdlbWVudC53aWR0aC5oYWxmLnRpdGxlJyksXG4gICAgICBpZDogJ2hhbGYnLFxuICAgICAgc2VsZWN0ZWQ6IGZhbHNlLFxuICAgIH0sXG4gIF07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY29udGVudFZhbGlkID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNkc1RoZW1lU2VydmljZTogQ2RzVGhlbWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZmI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHdpZGdldFdpemFyZFNlcnZpY2U6IFdpZGdldFdpemFyZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB3aWRnZXRGaWVsZHNTZXJ2aWNlOiBXaWRnZXRGaWVsZHNTZXJ2aWNlXG4gICkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuV2lkZ2V0Rm9ybVN1YnNjcmlwdGlvbigpO1xuICAgIHRoaXMub3BlbkNhcmRGb3JtU3Vic2NyaXB0aW9uKCk7XG4gICAgdGhpcy5pbml0Rm9ybSgpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkFkZEVudW1WYWx1ZUNsaWNrKHZhbHVlc0Zvcm1BcnJheTogRm9ybUFycmF5KTogdm9pZCB7XG4gICAgdmFsdWVzRm9ybUFycmF5LnB1c2goXG4gICAgICB0aGlzLmZiLmdyb3VwKHtcbiAgICAgICAga2V5OiB0aGlzLmZiLmNvbnRyb2woJycsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICB2YWx1ZTogdGhpcy5mYi5jb250cm9sKCcnLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXREaXNwbGF5SXRlbXNTZWxlY3RlZChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBMaXN0SXRlbVtdIHtcbiAgICByZXR1cm4gdGhpcy53aWRnZXRGaWVsZHNTZXJ2aWNlLmdldERpc3BsYXlJdGVtc1NlbGVjdGVkKGNvbnRyb2wpO1xuICB9XG5cbiAgcHVibGljIGdldFNlbGVjdGVkV2lkdGhJdGVtKGZpZWxkSW5kZXg6IG51bWJlcik6IExpc3RJdGVtW10ge1xuICAgIGNvbnN0IHdpZGdldENvbnRlbnQ6IFdpZGdldENvbGxlY3Rpb25Db250ZW50IHwgbnVsbCA9XG4gICAgICB0aGlzLndpZGdldFdpemFyZFNlcnZpY2Uud2lkZ2V0Q29udGVudCgpIGFzIFdpZGdldENvbGxlY3Rpb25Db250ZW50O1xuXG4gICAgcmV0dXJuICF3aWRnZXRDb250ZW50XG4gICAgICA/IHRoaXMuV0lEVEhfSVRFTVNcbiAgICAgIDogdGhpcy5XSURUSF9JVEVNUy5tYXAoKGl0ZW06IExpc3RJdGVtKSA9PiAoe1xuICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgc2VsZWN0ZWQ6IHdpZGdldENvbnRlbnQuZmllbGRzPy5bZmllbGRJbmRleF0/LndpZHRoID09PSBpdGVtLmlkLFxuICAgICAgICB9KSk7XG4gIH1cblxuICBwdWJsaWMgb25Db2x1bW5VcGRhdGVFdmVudChldmVudDoge2RhdGE6IEZpZWxkc0Nhc2VXaWRnZXRWYWx1ZVtdOyB2YWxpZDogYm9vbGVhbn0pOiB2b2lkIHtcbiAgICBjb25zdCB7ZGF0YSwgdmFsaWR9ID0gZXZlbnQ7XG4gICAgdGhpcy53aWRnZXRXaXphcmRTZXJ2aWNlLndpZGdldENvbnRlbnQudXBkYXRlKChjb250ZW50OiBXaWRnZXRDb250ZW50UHJvcGVydGllcyB8IG51bGwpID0+IHtcbiAgICAgIGNvbnN0IGV4aXN0aW5nRmllbGRzID0gKGNvbnRlbnQgYXMgV2lkZ2V0Q29sbGVjdGlvbkNvbnRlbnQpPy5maWVsZHM7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmNvbnRlbnQsXG4gICAgICAgIGZpZWxkczogZGF0YS5tYXAoKGl0ZW0sIGluZGV4KSA9PiAoe1xuICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgd2lkdGg6IGV4aXN0aW5nRmllbGRzPy5baW5kZXhdPy53aWR0aCA/PyAnZnVsbCcsXG4gICAgICAgIH0pKSxcbiAgICAgIH0gYXMgV2lkZ2V0Q29sbGVjdGlvbkNvbnRlbnQ7XG4gICAgfSk7XG4gICAgdGhpcy5fY29udGVudFZhbGlkLnNldCh2YWxpZCk7XG4gICAgdGhpcy5jaGFuZ2VWYWxpZEV2ZW50LmVtaXQodmFsaWQgJiYgdGhpcy53aWRnZXRGb3JtLnZhbGlkKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkRlbGV0ZVJvd0NsaWNrKGZvcm1BcnJheTogRm9ybUFycmF5LCBpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKCFmb3JtQXJyYXkpIHJldHVybjtcblxuICAgIGZvcm1BcnJheS5yZW1vdmVBdChpbmRleCk7XG4gIH1cblxuICBwdWJsaWMgb25UeXBlU2VsZWN0ZWQoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGV2ZW50OiB7aXRlbTogTGlzdEl0ZW19KTogdm9pZCB7XG4gICAgdGhpcy53aWRnZXRGaWVsZHNTZXJ2aWNlLm9uRGlzcGxheVR5cGVTZWxlY3RlZChbJ3ZhbHVlJywgJ3R5cGUnXSwgZm9ybUdyb3VwLCBldmVudCk7XG4gIH1cblxuICBwdWJsaWMgb25XaWR0aFNlbGVjdGVkKGV2ZW50OiB7aXRlbTogTGlzdEl0ZW19LCBmaWVsZEluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLndpZGdldFdpemFyZFNlcnZpY2Uud2lkZ2V0Q29udGVudC51cGRhdGUoXG4gICAgICAoY29udGVudDogV2lkZ2V0Q29udGVudFByb3BlcnRpZXMgfCBudWxsKSA9PlxuICAgICAgICAoe1xuICAgICAgICAgIC4uLmNvbnRlbnQsXG4gICAgICAgICAgZmllbGRzOiAoY29udGVudCBhcyBXaWRnZXRDb2xsZWN0aW9uQ29udGVudCk/LmZpZWxkcy5tYXAoXG4gICAgICAgICAgICAoZmllbGQ6IEZpZWxkc0Nhc2VXaWRnZXRWYWx1ZSAmIHt3aWR0aDogQ29sbGVjdGlvbkZpZWxkV2lkdGh9LCBpbmRleDogbnVtYmVyKSA9PlxuICAgICAgICAgICAgICBpbmRleCA9PT0gZmllbGRJbmRleCA/IHsuLi5maWVsZCwgd2lkdGg6IGV2ZW50Lml0ZW0uaWR9IDogZmllbGRcbiAgICAgICAgICApLFxuICAgICAgICB9KSBhcyBXaWRnZXRDb2xsZWN0aW9uQ29udGVudFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGluaXRGb3JtKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy53aWRnZXRXaXphcmRTZXJ2aWNlLndpZGdldENvbnRlbnQoKSkgcmV0dXJuO1xuXG4gICAgY29uc3QgdGl0bGUgPSAodGhpcy53aWRnZXRXaXphcmRTZXJ2aWNlLndpZGdldENvbnRlbnQoKSBhcyBXaWRnZXRDb2xsZWN0aW9uQ29udGVudCkudGl0bGU7XG4gICAgaWYgKCF0aXRsZSkgcmV0dXJuO1xuICAgIHRoaXMub25UeXBlU2VsZWN0ZWQodGhpcy5jYXJkRm9ybSwge1xuICAgICAgaXRlbToge2lkOiB0aXRsZS5kaXNwbGF5UHJvcGVydGllcz8udHlwZSA/PyAnJywgY29udGVudDogJycsIHNlbGVjdGVkOiB0cnVlfSxcbiAgICB9KTtcblxuICAgIHRoaXMuY2FyZEZvcm0ucGF0Y2hWYWx1ZShcbiAgICAgIHtcbiAgICAgICAgLi4uKFtcbiAgICAgICAgICBDYXNlV2lkZ2V0RGlzcGxheVR5cGVLZXkuTlVNQkVSLFxuICAgICAgICAgIENhc2VXaWRnZXREaXNwbGF5VHlwZUtleS5QRVJDRU5ULFxuICAgICAgICAgIENhc2VXaWRnZXREaXNwbGF5VHlwZUtleS5DVVJSRU5DWSxcbiAgICAgICAgXS5pbmNsdWRlcyh0aXRsZS5kaXNwbGF5UHJvcGVydGllcz8udHlwZSBhcyBDYXNlV2lkZ2V0RGlzcGxheVR5cGVLZXkpICYmIHtcbiAgICAgICAgICBkaWdpdHNJbmZvOiAodGl0bGUuZGlzcGxheVByb3BlcnRpZXMgYXMgQ2FzZVdpZGdldEN1cnJlbmN5RGlzcGxheVR5cGUpLmRpZ2l0c0luZm8sXG4gICAgICAgIH0pLFxuICAgICAgICAuLi4odGl0bGUuZGlzcGxheVByb3BlcnRpZXM/LnR5cGUgPT09IENhc2VXaWRnZXREaXNwbGF5VHlwZUtleS5DVVJSRU5DWSAmJiB7XG4gICAgICAgICAgY3VycmVuY3lDb2RlOiAodGl0bGUuZGlzcGxheVByb3BlcnRpZXMgYXMgQ2FzZVdpZGdldEN1cnJlbmN5RGlzcGxheVR5cGUpLmN1cnJlbmN5Q29kZSxcbiAgICAgICAgICBkaXNwbGF5OiAodGl0bGUuZGlzcGxheVByb3BlcnRpZXMgYXMgQ2FzZVdpZGdldEN1cnJlbmN5RGlzcGxheVR5cGUpLmRpc3BsYXksXG4gICAgICAgIH0pLFxuICAgICAgICAuLi4odGl0bGUuZGlzcGxheVByb3BlcnRpZXM/LnR5cGUgPT09IENhc2VXaWRnZXREaXNwbGF5VHlwZUtleS5EQVRFICYmIHtcbiAgICAgICAgICBmb3JtYXQ6ICh0aXRsZS5kaXNwbGF5UHJvcGVydGllcyBhcyBDYXNlV2lkZ2V0RGF0ZURpc3BsYXlUeXBlKS5mb3JtYXQsXG4gICAgICAgIH0pLFxuICAgICAgICAuLi4odGl0bGUuZGlzcGxheVByb3BlcnRpZXM/LnR5cGUgPT09IENhc2VXaWRnZXREaXNwbGF5VHlwZUtleS5EQVRFX1RJTUUgJiYge1xuICAgICAgICAgIGZvcm1hdDogKHRpdGxlLmRpc3BsYXlQcm9wZXJ0aWVzIGFzIENhc2VXaWRnZXREYXRlVGltZURpc3BsYXlUeXBlKS5mb3JtYXQsXG4gICAgICAgIH0pLFxuICAgICAgICAuLi4odGl0bGUuZGlzcGxheVByb3BlcnRpZXM/LnR5cGUgPT09IENhc2VXaWRnZXREaXNwbGF5VHlwZUtleS5FTlVNICYmIHtcbiAgICAgICAgICB2YWx1ZXM6IE9iamVjdC5lbnRyaWVzKCh0aXRsZS5kaXNwbGF5UHJvcGVydGllcyBhcyBDYXNlV2lkZ2V0RW51bURpc3BsYXlUeXBlKS52YWx1ZXMpLm1hcChcbiAgICAgICAgICAgIChba2V5LCB2YWx1ZV0pID0+ICh7a2V5LCB2YWx1ZX0pXG4gICAgICAgICAgKSxcbiAgICAgICAgfSksXG4gICAgICB9LFxuICAgICAge2VtaXRFdmVudDogZmFsc2V9XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlbldpZGdldEZvcm1TdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLndpZGdldEZvcm0udmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDUwMCkpLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICAgIHRoaXMud2lkZ2V0V2l6YXJkU2VydmljZS53aWRnZXRUaXRsZS5zZXQodmFsdWU/LnRpdGxlID8/ICcnKTtcblxuICAgICAgICB0aGlzLndpZGdldFdpemFyZFNlcnZpY2Uud2lkZ2V0Q29udGVudC51cGRhdGUoXG4gICAgICAgICAgKGNvbnRlbnQ6IFdpZGdldENvbnRlbnRQcm9wZXJ0aWVzIHwgbnVsbCkgPT5cbiAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgIC4uLmNvbnRlbnQsXG4gICAgICAgICAgICAgIGNvbGxlY3Rpb246IHZhbHVlPy5jb2xsZWN0aW9uIHx8ICcnLFxuICAgICAgICAgICAgICBkZWZhdWx0UGFnZVNpemU6IHZhbHVlPy5kZWZhdWx0UGFnZVNpemUgfHwgNSxcbiAgICAgICAgICAgIH0pIGFzIFdpZGdldENvbGxlY3Rpb25Db250ZW50XG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5jaGFuZ2VWYWxpZEV2ZW50LmVtaXQoXG4gICAgICAgICAgdGhpcy53aWRnZXRGb3JtLnZhbGlkICYmIHRoaXMuY2FyZEZvcm0udmFsaWQgJiYgdGhpcy5fY29udGVudFZhbGlkKClcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlbkNhcmRGb3JtU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5jYXJkRm9ybS52YWx1ZUNoYW5nZXMucGlwZShkZWJvdW5jZVRpbWUoNTAwKSkuc3Vic2NyaWJlKGZvcm1WYWx1ZSA9PiB7XG4gICAgICAgIGxldCB7dmFsdWUsIC4uLmRpc3BsYXlQcm9wZXJ0aWVzfSA9IGZvcm1WYWx1ZTtcbiAgICAgICAgZGlzcGxheVByb3BlcnRpZXMgPSB7XG4gICAgICAgICAgLi4uZGlzcGxheVByb3BlcnRpZXMsXG4gICAgICAgICAgLi4uKCEhZGlzcGxheVByb3BlcnRpZXMudHlwZSAmJiB7XG4gICAgICAgICAgICB0eXBlOiAoZGlzcGxheVByb3BlcnRpZXMudHlwZSBhcyBMaXN0SXRlbSkuaWQsXG4gICAgICAgICAgfSksXG4gICAgICAgICAgLi4uKCEhZm9ybVZhbHVlLnZhbHVlcyAmJiB7XG4gICAgICAgICAgICB2YWx1ZXM6IChmb3JtVmFsdWUudmFsdWVzIGFzIEFycmF5PHtba2V5OiBzdHJpbmddOiBzdHJpbmd9Pik/LnJlZHVjZShcbiAgICAgICAgICAgICAgKGFjYywgY3VycikgPT4gKHsuLi5hY2MsIFtjdXJyLmtleV06IGN1cnIudmFsdWV9KSxcbiAgICAgICAgICAgICAge31cbiAgICAgICAgICAgICksXG4gICAgICAgICAgfSksXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy53aWRnZXRXaXphcmRTZXJ2aWNlLndpZGdldENvbnRlbnQudXBkYXRlKFxuICAgICAgICAgIChjb250ZW50OiBXaWRnZXRDb250ZW50UHJvcGVydGllcyB8IG51bGwpID0+XG4gICAgICAgICAgICAoe1xuICAgICAgICAgICAgICAuLi5jb250ZW50LFxuICAgICAgICAgICAgICB0aXRsZToge1xuICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgIC4uLihkaXNwbGF5UHJvcGVydGllcy50eXBlICE9PSBDYXNlV2lkZ2V0RGlzcGxheVR5cGVLZXkuVEVYVCAmJiB7XG4gICAgICAgICAgICAgICAgICBkaXNwbGF5UHJvcGVydGllcyxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pIGFzIGFueVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuY2hhbmdlVmFsaWRFdmVudC5lbWl0KFxuICAgICAgICAgIHRoaXMud2lkZ2V0Rm9ybS52YWxpZCAmJiB0aGlzLmNhcmRGb3JtLnZhbGlkICYmIHRoaXMuX2NvbnRlbnRWYWxpZCgpXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cInt0aGVtZTogdGhlbWUkIHwgYXN5bmN9IGFzIG9ic1wiPlxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cIndpZGdldEZvcm1cIiBjbGFzcz1cInZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1jb2xsZWN0aW9uX19mb3JtXCI+XG4gICAgPGNkcy10ZXh0LWxhYmVsIFthdHRyLmRhdGEtY2FyYm9uLXRoZW1lXT1cIm9icy50aGVtZVwiPlxuICAgICAge3sgJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC53aWRnZXRUaXRsZScgfCB0cmFuc2xhdGUgfX1cblxuICAgICAgPGlucHV0XG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cInRpdGxlXCJcbiAgICAgICAgY2RzVGV4dFxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC53aWRnZXRUaXRsZVBsYWNlaG9sZGVyJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgIC8+XG4gICAgPC9jZHMtdGV4dC1sYWJlbD5cblxuICAgIDxjZHMtdGV4dC1sYWJlbCBbYXR0ci5kYXRhLWNhcmJvbi10aGVtZV09XCJvYnMudGhlbWVcIj5cbiAgICAgIHt7ICd3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuY29sbGVjdGlvbi5kZWZhdWx0UGFnZVNpemUnIHwgdHJhbnNsYXRlIH19XG5cbiAgICAgIDxpbnB1dFxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkZWZhdWx0UGFnZVNpemVcIlxuICAgICAgICBjZHNUZXh0XG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJcbiAgICAgICAgICAnd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LmNvbGxlY3Rpb24uZGVmYXVsdFBhZ2VTaXplUGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlXG4gICAgICAgIFwiXG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgIC8+XG4gICAgPC9jZHMtdGV4dC1sYWJlbD5cblxuICAgIDxjZHMtdGV4dC1sYWJlbCBbYXR0ci5kYXRhLWNhcmJvbi10aGVtZV09XCJvYnMudGhlbWVcIj5cbiAgICAgIHt7ICd3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuY29sbGVjdGlvbi5jb2xsZWN0aW9uJyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgICA8aW5wdXRcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiY29sbGVjdGlvblwiXG4gICAgICAgIGNkc1RleHRcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIid3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuY29sbGVjdGlvbi5jb2xsZWN0aW9uUGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgLz5cbiAgICA8L2Nkcy10ZXh0LWxhYmVsPlxuICA8L2Zvcm0+XG5cbiAgPHNwYW4gY2xhc3M9XCJ2YWx0aW1vLWRvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtY29sbGVjdGlvbl9fc3VidGl0bGVcIj5cbiAgICB7eyAnd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LmNvbGxlY3Rpb24uY2FyZFRpdGxlJyB8IHRyYW5zbGF0ZSB9fVxuICA8L3NwYW4+XG5cbiAgPGZvcm0gW2Zvcm1Hcm91cF09XCJjYXJkRm9ybVwiIGNsYXNzPVwidmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LWNvbGxlY3Rpb25fX2NhcmRcIj5cbiAgICA8c2VjdGlvbiBjbGFzcz1cInZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1jb2xsZWN0aW9uX19jYXJkLXRpdGxlXCI+XG4gICAgICA8Y2RzLXRleHQtbGFiZWw+XG4gICAgICAgIHt7ICd3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuZmllbGRzLnZhbHVlJyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGNkc1RleHRcbiAgICAgICAgICBbYXR0ci5kYXRhLWNhcmJvbi10aGVtZV09XCJvYnMudGhlbWVcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LmZpZWxkcy52YWx1ZVBsYWNlaG9sZGVyJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInZhbHVlXCJcbiAgICAgICAgLz5cbiAgICAgIDwvY2RzLXRleHQtbGFiZWw+XG5cbiAgICAgIDxjZHMtZHJvcGRvd25cbiAgICAgICAgW2F0dHIuZGF0YS1jYXJib24tdGhlbWVdPVwib2JzLnRoZW1lXCJcbiAgICAgICAgW2xhYmVsXT1cIid3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuZmllbGRzLnR5cGUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW2Ryb3BVcF09XCJmYWxzZVwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCInd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LmZpZWxkcy50eXBlUGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgKHNlbGVjdGVkKT1cIm9uVHlwZVNlbGVjdGVkKGNhcmRGb3JtLCAkZXZlbnQpXCJcbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidHlwZVwiXG4gICAgICA+XG4gICAgICAgIDxjZHMtZHJvcGRvd24tbGlzdCBbaXRlbXNdPVwiZ2V0RGlzcGxheUl0ZW1zU2VsZWN0ZWQoY2FyZEZvcm0pXCI+PC9jZHMtZHJvcGRvd24tbGlzdD5cbiAgICAgIDwvY2RzLWRyb3Bkb3duPlxuICAgIDwvc2VjdGlvbj5cblxuICAgIDxzZWN0aW9uIGNsYXNzPVwidmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LWNvbGxlY3Rpb25fX2NhcmQtb3B0aW9uc1wiPlxuICAgICAgQHN3aXRjaCAoY2FyZEZvcm0uZ2V0KCd0eXBlJykudmFsdWUuaWQpIHtcbiAgICAgICAgQGNhc2UgKENhc2VXaWRnZXREaXNwbGF5VHlwZUtleS5DVVJSRU5DWSkge1xuICAgICAgICAgIDxjZHMtdGV4dC1sYWJlbD5cbiAgICAgICAgICAgIHt7ICd3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuZmllbGRzLmN1cnJlbmN5Q29kZScgfCB0cmFuc2xhdGUgfX1cblxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNkc1RleHRcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS1jYXJib24tdGhlbWVdPVwib2JzLnRoZW1lXCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIlxuICAgICAgICAgICAgICAgICd3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuZmllbGRzLmN1cnJlbmN5Q29kZVBsYWNlaG9sZGVyJyB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImN1cnJlbmN5Q29kZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvY2RzLXRleHQtbGFiZWw+XG5cbiAgICAgICAgICA8Y2RzLXRleHQtbGFiZWw+XG4gICAgICAgICAgICB7eyAnd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LmZpZWxkcy5kaXNwbGF5JyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2RzVGV4dFxuICAgICAgICAgICAgICBbYXR0ci5kYXRhLWNhcmJvbi10aGVtZV09XCJvYnMudGhlbWVcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMuZGlzcGxheVBsYWNlaG9sZGVyJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGlzcGxheVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvY2RzLXRleHQtbGFiZWw+XG5cbiAgICAgICAgICA8Y2RzLXRleHQtbGFiZWw+XG4gICAgICAgICAgICB7eyAnd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LmZpZWxkcy5kaWdpdHNJbmZvJyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2RzVGV4dFxuICAgICAgICAgICAgICBbYXR0ci5kYXRhLWNhcmJvbi10aGVtZV09XCJvYnMudGhlbWVcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMuZGlnaXRzSW5mb1BsYWNlaG9sZGVyJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGlnaXRzSW5mb1wiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvY2RzLXRleHQtbGFiZWw+XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKENhc2VXaWRnZXREaXNwbGF5VHlwZUtleS5EQVRFKSB7XG4gICAgICAgICAgPGNkcy10ZXh0LWxhYmVsPlxuICAgICAgICAgICAge3sgJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMuZm9ybWF0JyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2RzVGV4dFxuICAgICAgICAgICAgICBbYXR0ci5kYXRhLWNhcmJvbi10aGVtZV09XCJvYnMudGhlbWVcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMuZm9ybWF0UGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJmb3JtYXRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Nkcy10ZXh0LWxhYmVsPlxuICAgICAgICB9XG4gICAgICAgIEBjYXNlIChDYXNlV2lkZ2V0RGlzcGxheVR5cGVLZXkuREFURV9USU1FKSB7XG4gICAgICAgICAgPGNkcy10ZXh0LWxhYmVsPlxuICAgICAgICAgICAge3sgJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMuZm9ybWF0JyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2RzVGV4dFxuICAgICAgICAgICAgICBbYXR0ci5kYXRhLWNhcmJvbi10aGVtZV09XCJvYnMudGhlbWVcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMuZm9ybWF0UGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJmb3JtYXRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Nkcy10ZXh0LWxhYmVsPlxuICAgICAgICB9XG4gICAgICAgIEBjYXNlIChDYXNlV2lkZ2V0RGlzcGxheVR5cGVLZXkuRU5VTSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx0aW1vLWRvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtY29sbGVjdGlvbl9fZW51bVwiIGZvcm1BcnJheU5hbWU9XCJ2YWx1ZXNcIj5cbiAgICAgICAgICAgIEBmb3IgKHJvd1ZhbHVlIG9mIGNhcmRGb3JtLmdldCgndmFsdWVzJyk/LmNvbnRyb2xzOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgPGZvcm1cbiAgICAgICAgICAgICAgICBbZm9ybUdyb3VwXT1cInJvd1ZhbHVlXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1jb2xsZWN0aW9uX19lbnVtLWZvcm1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGNkcy10ZXh0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAge3sgJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMua2V5JyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1jYXJib24tdGhlbWVdPVwib2JzLnRoZW1lXCJcbiAgICAgICAgICAgICAgICAgICAgY2RzVGV4dFxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMua2V5JyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwia2V5XCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9jZHMtdGV4dC1sYWJlbD5cblxuICAgICAgICAgICAgICAgIDxjZHMtdGV4dC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgIHt7ICd3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuZmllbGRzLnZhbHVlJyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgY2RzVGV4dFxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWNhcmJvbi10aGVtZV09XCJvYnMudGhlbWVcIlxuICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMudmFsdWUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ2YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvY2RzLXRleHQtbGFiZWw+XG5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICBjZHNCdXR0b249XCJkYW5nZXItLWdob3N0XCJcbiAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIkY291bnQgPT09IDFcIlxuICAgICAgICAgICAgICAgICAgW2ljb25Pbmx5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2YWx0aW1vLWRvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtZmllbGQtY29sdW1uX19kZWxldGUtYnV0dG9uIGVudW1cIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRGVsZXRlUm93Q2xpY2soY2FyZEZvcm0uZ2V0KCd2YWx1ZXMnKSwgJGluZGV4KVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImNkcy0tYnRuX19pY29uXCIgY2RzSWNvbj1cInRyYXNoLWNhblwiIHNpemU9XCIxNlwiPjwvc3ZnPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2RzQnV0dG9uPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvbkFkZEVudW1WYWx1ZUNsaWNrKGNhcmRGb3JtLmdldCgndmFsdWVzJykpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMuYWRkRW51bScgfCB0cmFuc2xhdGUgfX1cblxuICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIiBjZHNJY29uPVwiYWRkXCIgc2l6ZT1cIjE2XCI+PC9zdmc+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICBAY2FzZSAoQ2FzZVdpZGdldERpc3BsYXlUeXBlS2V5Lk5VTUJFUikge1xuICAgICAgICAgIDxjZHMtdGV4dC1sYWJlbD5cbiAgICAgICAgICAgIHt7ICd3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuZmllbGRzLmRpZ2l0c0luZm8nIHwgdHJhbnNsYXRlIH19XG5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBjZHNUZXh0XG4gICAgICAgICAgICAgIFthdHRyLmRhdGEtY2FyYm9uLXRoZW1lXT1cIm9icy50aGVtZVwiXG4gICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LmZpZWxkcy5kaWdpdHNJbmZvJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGlnaXRzSW5mb1wiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvY2RzLXRleHQtbGFiZWw+XG4gICAgICAgIH1cbiAgICAgICAgQGNhc2UgKENhc2VXaWRnZXREaXNwbGF5VHlwZUtleS5QRVJDRU5UKSB7XG4gICAgICAgICAgPGNkcy10ZXh0LWxhYmVsPlxuICAgICAgICAgICAge3sgJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5maWVsZHMuZGlnaXRzSW5mbycgfCB0cmFuc2xhdGUgfX1cblxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGNkc1RleHRcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS1jYXJib24tdGhlbWVdPVwib2JzLnRoZW1lXCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIid3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuZmllbGRzLmRpZ2l0c0luZm8nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkaWdpdHNJbmZvXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9jZHMtdGV4dC1sYWJlbD5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIDwvc2VjdGlvbj5cbiAgPC9mb3JtPlxuXG4gIDxzcGFuIGNsYXNzPVwidmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LWNvbGxlY3Rpb25fX3N1YnRpdGxlXCI+XG4gICAge3sgJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5jb2xsZWN0aW9uLmNhcmRGaWVsZHMnIHwgdHJhbnNsYXRlIH19XG4gIDwvc3Bhbj5cblxuICA8dmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LWZpZWxkcy1jb2x1bW5cbiAgICBbY29sdW1uRGF0YV09XCJjb250ZW50KCk/LmZpZWxkc1wiXG4gICAgW2ZpZWxkV2lkdGhEcm9wZG93bl09XCJmaWVsZFdpZHRoRHJvcGRvd25cIlxuICAgIChjb2x1bW5VcGRhdGVFdmVudCk9XCJvbkNvbHVtblVwZGF0ZUV2ZW50KCRldmVudClcIlxuICA+XG4gIDwvdmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LWZpZWxkcy1jb2x1bW4+XG5cbiAgPG5nLXRlbXBsYXRlICNmaWVsZFdpZHRoRHJvcGRvd24gbGV0LWluZGV4PVwiaW5kZXhcIj5cbiAgICA8Y2RzLWRyb3Bkb3duXG4gICAgICBbbGFiZWxdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5jb2xsZWN0aW9uLmZpZWxkV2lkdGgnIHwgdHJhbnNsYXRlXCJcbiAgICAgIFtkcm9wVXBdPVwiZmFsc2VcIlxuICAgICAgW3BsYWNlaG9sZGVyXT1cIid3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbnRlbnQuY29sbGVjdGlvbi5maWVsZFdpZHRoUGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlXCJcbiAgICAgIChzZWxlY3RlZCk9XCJvbldpZHRoU2VsZWN0ZWQoJGV2ZW50LCBpbmRleClcIlxuICAgID5cbiAgICAgIDxjZHMtZHJvcGRvd24tbGlzdCBbaXRlbXNdPVwiZ2V0U2VsZWN0ZWRXaWR0aEl0ZW0oaW5kZXgpXCI+PC9jZHMtZHJvcGRvd24tbGlzdD5cbiAgICA8L2Nkcy1kcm9wZG93bj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctY29udGFpbmVyPlxuIl19
@@ -0,0 +1,104 @@
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 { ChangeDetectionStrategy, Component, EventEmitter, Inject, Optional, Output, } from '@angular/core';
17
+ import { CommonModule } from '@angular/common';
18
+ import { TranslateModule } from '@ngx-translate/core';
19
+ import { DropdownModule, InputModule, SelectModule } from 'carbon-components-angular';
20
+ import { ReactiveFormsModule, Validators } from '@angular/forms';
21
+ import { CARBON_THEME, CurrentCarbonTheme } from '@valtimo/components';
22
+ import { CUSTOM_CASE_WIDGET_TOKEN, } from '@valtimo/dossier';
23
+ import { BehaviorSubject, combineLatest, filter, map, Subscription } from 'rxjs';
24
+ import * as i0 from "@angular/core";
25
+ import * as i1 from "@valtimo/components";
26
+ import * as i2 from "@angular/forms";
27
+ import * as i3 from "../../../services";
28
+ import * as i4 from "@angular/common";
29
+ import * as i5 from "@ngx-translate/core";
30
+ import * as i6 from "carbon-components-angular";
31
+ export class DossierManagementWidgetCustomComponent {
32
+ get widgetTitle() {
33
+ return this.form.get('widgetTitle');
34
+ }
35
+ constructor(customCaseWidgetConfig, cdsThemeService, fb, widgetWizardService) {
36
+ this.customCaseWidgetConfig = customCaseWidgetConfig;
37
+ this.cdsThemeService = cdsThemeService;
38
+ this.fb = fb;
39
+ this.widgetWizardService = widgetWizardService;
40
+ this.changeValidEvent = new EventEmitter();
41
+ this.form = this.fb.group({
42
+ widgetTitle: this.fb.control(this.widgetWizardService.widgetTitle(), Validators.required),
43
+ });
44
+ this.theme$ = this.cdsThemeService.currentTheme$.pipe(map((theme) => theme === CurrentCarbonTheme.G10 ? CARBON_THEME.WHITE : CARBON_THEME.G90));
45
+ this._selectedCustomComponentKey$ = new BehaviorSubject(null);
46
+ this._customCaseWidgetConfig$ = new BehaviorSubject({});
47
+ this.componentListItems$ = combineLatest([
48
+ this._customCaseWidgetConfig$,
49
+ this._selectedCustomComponentKey$,
50
+ ]).pipe(filter(([config]) => !!config), map(([config, selectedKey]) => Object.keys(config).reduce((acc, curr) => [...acc, { content: curr, selected: curr === selectedKey }], [])));
51
+ this._subscriptions = new Subscription();
52
+ if (customCaseWidgetConfig)
53
+ this._customCaseWidgetConfig$.next(customCaseWidgetConfig);
54
+ }
55
+ componentDropDownChange(event) {
56
+ const componentKey = event?.item?.content;
57
+ if (!componentKey)
58
+ return;
59
+ this._selectedCustomComponentKey$.next(componentKey);
60
+ this.widgetWizardService.widgetContent.set({ componentKey });
61
+ this.changeValidEvent.emit(true);
62
+ }
63
+ ngOnInit() {
64
+ this.openTitleSubscription();
65
+ this.prefill();
66
+ }
67
+ ngOnDestroy() {
68
+ this._subscriptions.unsubscribe();
69
+ }
70
+ openTitleSubscription() {
71
+ this._subscriptions.add(this.widgetTitle.valueChanges.subscribe(title => {
72
+ this.widgetWizardService.widgetTitle.set(title);
73
+ }));
74
+ }
75
+ prefill() {
76
+ const componentKey = this.widgetWizardService.widgetContent()
77
+ ?.componentKey;
78
+ if (!componentKey || Object.keys(this.customCaseWidgetConfig || {}).length === 0)
79
+ return;
80
+ this._selectedCustomComponentKey$.next(componentKey);
81
+ this.changeValidEvent.emit(true);
82
+ }
83
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: DossierManagementWidgetCustomComponent, deps: [{ token: CUSTOM_CASE_WIDGET_TOKEN, optional: true }, { token: i1.CdsThemeService }, { token: i2.FormBuilder }, { token: i3.WidgetWizardService }], target: i0.ɵɵFactoryTarget.Component }); }
84
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: DossierManagementWidgetCustomComponent, isStandalone: true, selector: "ng-component", outputs: { changeValidEvent: "changeValidEvent" }, 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<form\n class=\"valtimo-dossier-management-widget-custom\"\n [formGroup]=\"form\"\n [attr.data-carbon-theme]=\"theme$ | async\"\n>\n <cds-text-label class=\"valtimo-dossier-management-widget-field__input\">\n {{ 'widgetTabManagement.content.widgetTitle' | translate }}\n\n <input\n formControlName=\"widgetTitle\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.widgetTitlePlaceholder' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n\n <cds-label class=\"dropdown-label\">\n {{ 'widgetTabManagement.content.custom.selectComponent' | translate }}\n\n <cds-dropdown\n *ngIf=\"componentListItems$ | async as componentListItems\"\n [appendInline]=\"false\"\n [placeholder]=\"'widgetTabManagement.content.custom.placeholder' | translate\"\n [disabled]=\"componentListItems.length === 0\"\n (selected)=\"componentDropDownChange($event)\"\n >\n <cds-dropdown-list [items]=\"componentListItems\"> </cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n</form>\n", styles: [".valtimo-dossier-management-widget-custom{display:flex;flex-direction:column}.valtimo-dossier-management-widget-custom>*:first-child{margin-bottom:16px}.valtimo-dossier-management-widget-custom ::ng-deep .dropdown-label label{display:flex;flex-direction:column;width:100%}.valtimo-dossier-management-widget-custom ::ng-deep .dropdown-label cds-dropdown{margin-top: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: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: InputModule }, { kind: "component", type: i6.Label, selector: "cds-label, ibm-label", inputs: ["labelInputID", "disabled", "skeleton", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "component", type: i6.TextInputLabelComponent, selector: "cds-text-label, ibm-text-label", inputs: ["labelInputID", "disabled", "skeleton", "labelTemplate", "textInputTemplate", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i6.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: SelectModule }, { kind: "ngmodule", type: DropdownModule }, { kind: "component", type: i6.Dropdown, selector: "cds-dropdown, ibm-dropdown", inputs: ["id", "label", "helperText", "placeholder", "displayValue", "clearText", "size", "type", "theme", "disabled", "skeleton", "inline", "disableArrowKeys", "invalid", "invalidText", "warn", "warnText", "appendInline", "scrollableContainer", "itemValueKey", "selectionFeedback", "menuButtonLabel", "selectedLabel", "dropUp"], outputs: ["selected", "onClose", "close"] }, { kind: "component", type: i6.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
85
+ }
86
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: DossierManagementWidgetCustomComponent, decorators: [{
87
+ type: Component,
88
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
89
+ CommonModule,
90
+ TranslateModule,
91
+ InputModule,
92
+ ReactiveFormsModule,
93
+ SelectModule,
94
+ DropdownModule,
95
+ ], 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<form\n class=\"valtimo-dossier-management-widget-custom\"\n [formGroup]=\"form\"\n [attr.data-carbon-theme]=\"theme$ | async\"\n>\n <cds-text-label class=\"valtimo-dossier-management-widget-field__input\">\n {{ 'widgetTabManagement.content.widgetTitle' | translate }}\n\n <input\n formControlName=\"widgetTitle\"\n cdsText\n [placeholder]=\"'widgetTabManagement.content.widgetTitlePlaceholder' | translate\"\n type=\"text\"\n />\n </cds-text-label>\n\n <cds-label class=\"dropdown-label\">\n {{ 'widgetTabManagement.content.custom.selectComponent' | translate }}\n\n <cds-dropdown\n *ngIf=\"componentListItems$ | async as componentListItems\"\n [appendInline]=\"false\"\n [placeholder]=\"'widgetTabManagement.content.custom.placeholder' | translate\"\n [disabled]=\"componentListItems.length === 0\"\n (selected)=\"componentDropDownChange($event)\"\n >\n <cds-dropdown-list [items]=\"componentListItems\"> </cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n</form>\n", styles: [".valtimo-dossier-management-widget-custom{display:flex;flex-direction:column}.valtimo-dossier-management-widget-custom>*:first-child{margin-bottom:16px}.valtimo-dossier-management-widget-custom ::ng-deep .dropdown-label label{display:flex;flex-direction:column;width:100%}.valtimo-dossier-management-widget-custom ::ng-deep .dropdown-label cds-dropdown{margin-top: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"] }]
96
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
97
+ type: Optional
98
+ }, {
99
+ type: Inject,
100
+ args: [CUSTOM_CASE_WIDGET_TOKEN]
101
+ }] }, { type: i1.CdsThemeService }, { type: i2.FormBuilder }, { type: i3.WidgetWizardService }], propDecorators: { changeValidEvent: [{
102
+ type: Output
103
+ }] } });
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1jdXN0b20uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyLW1hbmFnZW1lbnQvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtY29uZmlndXJhdG9ycy9jdXN0b20vZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1jdXN0b20uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyLW1hbmFnZW1lbnQvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtY29uZmlndXJhdG9ycy9jdXN0b20vZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1jdXN0b20uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUdOLFFBQVEsRUFDUixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsY0FBYyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRixPQUFPLEVBQStCLG1CQUFtQixFQUFFLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRTdGLE9BQU8sRUFBQyxZQUFZLEVBQW1CLGtCQUFrQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFFdEYsT0FBTyxFQUNMLHdCQUF3QixHQUd6QixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9B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WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge0Ryb3Bkb3duTW9kdWxlLCBJbnB1dE1vZHVsZSwgU2VsZWN0TW9kdWxlfSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyJztcbmltcG9ydCB7QWJzdHJhY3RDb250cm9sLCBGb3JtQnVpbGRlciwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdG9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtXaWRnZXRDb250ZW50Q29tcG9uZW50fSBmcm9tICcuLi8uLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtDQVJCT05fVEhFTUUsIENkc1RoZW1lU2VydmljZSwgQ3VycmVudENhcmJvblRoZW1lfSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCB7V2lkZ2V0V2l6YXJkU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtcbiAgQ1VTVE9NX0NBU0VfV0lER0VUX1RPS0VOLFxuICBDdXN0b21DYXNlV2lkZ2V0Q29uZmlnLFxuICBXaWRnZXRDdXN0b21Db250ZW50LFxufSBmcm9tICdAdmFsdGltby9kb3NzaWVyJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBmaWx0ZXIsIG1hcCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7TGlzdEl0ZW19IGZyb20gJ2NhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXIvZHJvcGRvd24vbGlzdC1pdGVtLmludGVyZmFjZSc7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1jdXN0b20uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LWN1c3RvbS5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgSW5wdXRNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBTZWxlY3RNb2R1bGUsXG4gICAgRHJvcGRvd25Nb2R1bGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIERvc3NpZXJNYW5hZ2VtZW50V2lkZ2V0Q3VzdG9tQ29tcG9uZW50XG4gIGltcGxlbWVudHMgV2lkZ2V0Q29udGVudENvbXBvbmVudCwgT25EZXN0cm95LCBPbkluaXRcbntcbiAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBjaGFuZ2VWYWxpZEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIHB1YmxpYyByZWFkb25seSBmb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgd2lkZ2V0VGl0bGU6IHRoaXMuZmIuY29udHJvbCh0aGlzLndpZGdldFdpemFyZFNlcnZpY2Uud2lkZ2V0VGl0bGUoKSwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gIH0pO1xuXG4gIHB1YmxpYyBnZXQgd2lkZ2V0VGl0bGUoKTogQWJzdHJhY3RDb250cm9sPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmZvcm0uZ2V0KCd3aWRnZXRUaXRsZScpO1xuICB9XG5cbiAgcHVibGljIHJlYWRvbmx5IHRoZW1lJCA9IHRoaXMuY2RzVGhlbWVTZXJ2aWNlLmN1cnJlbnRUaGVtZSQucGlwZShcbiAgICBtYXAoKHRoZW1lOiBDdXJyZW50Q2FyYm9uVGhlbWUpID0+XG4gICAgICB0aGVtZSA9PT0gQ3VycmVudENhcmJvblRoZW1lLkcxMCA/IENBUkJPTl9USEVNRS5XSElURSA6IENBUkJPTl9USEVNRS5HOTBcbiAgICApXG4gICk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfc2VsZWN0ZWRDdXN0b21Db21wb25lbnRLZXkkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY3VzdG9tQ2FzZVdpZGdldENvbmZpZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEN1c3RvbUNhc2VXaWRnZXRDb25maWc+KHt9KTtcblxuICBwdWJsaWMgcmVhZG9ubHkgY29tcG9uZW50TGlzdEl0ZW1zJDogT2JzZXJ2YWJsZTxMaXN0SXRlbVtdPiA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuX2N1c3RvbUNhc2VXaWRnZXRDb25maWckLFxuICAgIHRoaXMuX3NlbGVjdGVkQ3VzdG9tQ29tcG9uZW50S2V5JCxcbiAgXSkucGlwZShcbiAgICBmaWx0ZXIoKFtjb25maWddKSA9PiAhIWNvbmZpZyksXG4gICAgbWFwKChbY29uZmlnLCBzZWxlY3RlZEtleV0pID0+XG4gICAgICBPYmplY3Qua2V5cyhjb25maWcpLnJlZHVjZShcbiAgICAgICAgKGFjYywgY3VycikgPT4gWy4uLmFjYywge2NvbnRlbnQ6IGN1cnIsIHNlbGVjdGVkOiBjdXJyID09PSBzZWxlY3RlZEtleX1dLFxuICAgICAgICBbXVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9zdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpXG4gICAgQEluamVjdChDVVNUT01fQ0FTRV9XSURHRVRfVE9LRU4pXG4gICAgcHJpdmF0ZSByZWFkb25seSBjdXN0b21DYXNlV2lkZ2V0Q29uZmlnOiBDdXN0b21DYXNlV2lkZ2V0Q29uZmlnLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RzVGhlbWVTZXJ2aWNlOiBDZHNUaGVtZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSB3aWRnZXRXaXphcmRTZXJ2aWNlOiBXaWRnZXRXaXphcmRTZXJ2aWNlXG4gICkge1xuICAgIGlmIChjdXN0b21DYXNlV2lkZ2V0Q29uZmlnKSB0aGlzLl9jdXN0b21DYXNlV2lkZ2V0Q29uZmlnJC5uZXh0KGN1c3RvbUNhc2VXaWRnZXRDb25maWcpO1xuICB9XG5cbiAgcHVibGljIGNvbXBvbmVudERyb3BEb3duQ2hhbmdlKGV2ZW50OiB7XG4gICAgaXRlbToge2NvbnRlbnQ6IHN0cmluZzsgc2VsZWN0ZWQ6IGJvb2xlYW59O1xuICAgIGlzVXBkYXRlOiBib29sZWFuO1xuICB9KTogdm9pZCB7XG4gICAgY29uc3QgY29tcG9uZW50S2V5ID0gZXZlbnQ/Lml0ZW0/LmNvbnRlbnQ7XG5cbiAgICBpZiAoIWNvbXBvbmVudEtleSkgcmV0dXJuO1xuXG4gICAgdGhpcy5fc2VsZWN0ZWRDdXN0b21Db21wb25lbnRLZXkkLm5leHQoY29tcG9uZW50S2V5KTtcbiAgICB0aGlzLndpZGdldFdpemFyZFNlcnZpY2Uud2lkZ2V0Q29udGVudC5zZXQoe2NvbXBvbmVudEtleX0pO1xuICAgIHRoaXMuY2hhbmdlVmFsaWRFdmVudC5lbWl0KHRydWUpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMub3BlblRpdGxlU3Vic2NyaXB0aW9uKCk7XG4gICAgdGhpcy5wcmVmaWxsKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuVGl0bGVTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLndpZGdldFRpdGxlLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodGl0bGUgPT4ge1xuICAgICAgICB0aGlzLndpZGdldFdpemFyZFNlcnZpY2Uud2lkZ2V0VGl0bGUuc2V0KHRpdGxlKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcHJlZmlsbCgpOiB2b2lkIHtcbiAgICBjb25zdCBjb21wb25lbnRLZXkgPSAodGhpcy53aWRnZXRXaXphcmRTZXJ2aWNlLndpZGdldENvbnRlbnQoKSBhcyBXaWRnZXRDdXN0b21Db250ZW50KVxuICAgICAgPy5jb21wb25lbnRLZXk7XG5cbiAgICBpZiAoIWNvbXBvbmVudEtleSB8fCBPYmplY3Qua2V5cyh0aGlzLmN1c3RvbUNhc2VXaWRnZXRDb25maWcgfHwge30pLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgdGhpcy5fc2VsZWN0ZWRDdXN0b21Db21wb25lbnRLZXkkLm5leHQoY29tcG9uZW50S2V5KTtcbiAgICB0aGlzLmNoYW5nZVZhbGlkRXZlbnQuZW1pdCh0cnVlKTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48Zm9ybVxuICBjbGFzcz1cInZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1jdXN0b21cIlxuICBbZm9ybUdyb3VwXT1cImZvcm1cIlxuICBbYXR0ci5kYXRhLWNhcmJvbi10aGVtZV09XCJ0aGVtZSQgfCBhc3luY1wiXG4+XG4gIDxjZHMtdGV4dC1sYWJlbCBjbGFzcz1cInZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC1maWVsZF9faW5wdXRcIj5cbiAgICB7eyAnd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LndpZGdldFRpdGxlJyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgPGlucHV0XG4gICAgICBmb3JtQ29udHJvbE5hbWU9XCJ3aWRnZXRUaXRsZVwiXG4gICAgICBjZHNUZXh0XG4gICAgICBbcGxhY2Vob2xkZXJdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC53aWRnZXRUaXRsZVBsYWNlaG9sZGVyJyB8IHRyYW5zbGF0ZVwiXG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgLz5cbiAgPC9jZHMtdGV4dC1sYWJlbD5cblxuICA8Y2RzLWxhYmVsIGNsYXNzPVwiZHJvcGRvd24tbGFiZWxcIj5cbiAgICB7eyAnd2lkZ2V0VGFiTWFuYWdlbWVudC5jb250ZW50LmN1c3RvbS5zZWxlY3RDb21wb25lbnQnIHwgdHJhbnNsYXRlIH19XG5cbiAgICA8Y2RzLWRyb3Bkb3duXG4gICAgICAqbmdJZj1cImNvbXBvbmVudExpc3RJdGVtcyQgfCBhc3luYyBhcyBjb21wb25lbnRMaXN0SXRlbXNcIlxuICAgICAgW2FwcGVuZElubGluZV09XCJmYWxzZVwiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29udGVudC5jdXN0b20ucGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlXCJcbiAgICAgIFtkaXNhYmxlZF09XCJjb21wb25lbnRMaXN0SXRlbXMubGVuZ3RoID09PSAwXCJcbiAgICAgIChzZWxlY3RlZCk9XCJjb21wb25lbnREcm9wRG93bkNoYW5nZSgkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8Y2RzLWRyb3Bkb3duLWxpc3QgW2l0ZW1zXT1cImNvbXBvbmVudExpc3RJdGVtc1wiPiA8L2Nkcy1kcm9wZG93bi1saXN0PlxuICAgIDwvY2RzLWRyb3Bkb3duPlxuICA8L2Nkcy1sYWJlbD5cbjwvZm9ybT5cbiJdfQ==