@valtimo/task-management 12.14.0 → 13.0.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.
- package/fesm2022/valtimo-task-management.mjs +144 -343
- package/fesm2022/valtimo-task-management.mjs.map +1 -1
- package/lib/components/index.d.ts +3 -4
- package/lib/components/index.d.ts.map +1 -1
- package/lib/components/task-management-column-modal/task-management-column-modal.component.d.ts +14 -14
- package/lib/components/task-management-column-modal/task-management-column-modal.component.d.ts.map +1 -1
- package/lib/components/task-management-columns/task-management-columns.component.d.ts +10 -12
- package/lib/components/task-management-columns/task-management-columns.component.d.ts.map +1 -1
- package/lib/components/task-management-detail/task-management-detail.component.d.ts +4 -15
- package/lib/components/task-management-detail/task-management-detail.component.d.ts.map +1 -1
- package/lib/components/task-management-search-fields/task-management-search-fields.component.d.ts +1 -1
- package/lib/components/task-management-search-fields/task-management-search-fields.component.d.ts.map +1 -1
- package/lib/components/task-management-search-fields-modal/task-management-search-fields-modal.component.d.ts +9 -11
- package/lib/components/task-management-search-fields-modal/task-management-search-fields-modal.component.d.ts.map +1 -1
- package/lib/services/task-management-api.service.d.ts +6 -5
- package/lib/services/task-management-api.service.d.ts.map +1 -1
- package/lib/services/task-management-search-fields.service.d.ts +3 -3
- package/lib/services/task-management-search-fields.service.d.ts.map +1 -1
- package/package.json +4 -6
- package/public_api.d.ts +0 -1
- package/public_api.d.ts.map +1 -1
- package/esm2022/lib/components/index.mjs +0 -21
- package/esm2022/lib/components/task-management/index.mjs +0 -17
- package/esm2022/lib/components/task-management/task-management.component.mjs +0 -73
- package/esm2022/lib/components/task-management-column-modal/index.mjs +0 -17
- package/esm2022/lib/components/task-management-column-modal/task-management-column-modal.component.mjs +0 -373
- package/esm2022/lib/components/task-management-columns/index.mjs +0 -17
- package/esm2022/lib/components/task-management-columns/task-management-columns.component.mjs +0 -218
- package/esm2022/lib/components/task-management-detail/index.mjs +0 -17
- package/esm2022/lib/components/task-management-detail/task-management-detail.component.mjs +0 -68
- package/esm2022/lib/components/task-management-search-fields/task-management-search-fields.component.mjs +0 -178
- package/esm2022/lib/components/task-management-search-fields-modal/task-management-search-fields-modal.component.mjs +0 -359
- package/esm2022/lib/models/index.mjs +0 -17
- package/esm2022/lib/models/task-management.model.mjs +0 -22
- package/esm2022/lib/services/index.mjs +0 -19
- package/esm2022/lib/services/task-management-api.service.mjs +0 -48
- package/esm2022/lib/services/task-management-search-fields.service.mjs +0 -47
- package/esm2022/lib/services/task-management.service.mjs +0 -36
- package/esm2022/lib/task-management-routing.module.mjs +0 -50
- package/esm2022/lib/task-management.module.mjs +0 -31
- package/esm2022/public_api.mjs +0 -23
- package/esm2022/valtimo-task-management.mjs +0 -5
- package/lib/components/task-management/index.d.ts +0 -2
- package/lib/components/task-management/index.d.ts.map +0 -1
- package/lib/components/task-management/task-management.component.d.ts +0 -20
- package/lib/components/task-management/task-management.component.d.ts.map +0 -1
- package/lib/components/task-management-column-modal/index.d.ts +0 -2
- package/lib/components/task-management-column-modal/index.d.ts.map +0 -1
- package/lib/components/task-management-columns/index.d.ts +0 -2
- package/lib/components/task-management-columns/index.d.ts.map +0 -1
- package/lib/components/task-management-detail/index.d.ts +0 -2
- package/lib/components/task-management-detail/index.d.ts.map +0 -1
- package/lib/task-management-routing.module.d.ts +0 -9
- package/lib/task-management-routing.module.d.ts.map +0 -1
- package/lib/task-management.module.d.ts +0 -9
- package/lib/task-management.module.d.ts.map +0 -1
|
@@ -1,373 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
3
|
-
*
|
|
4
|
-
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
-
* you may not use this file except in compliance with the License.
|
|
6
|
-
* You may obtain a copy of the License at
|
|
7
|
-
*
|
|
8
|
-
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
-
*
|
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
* See the License for the specific language governing permissions and
|
|
14
|
-
* limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
|
|
17
|
-
import { CARBON_CONSTANTS, CARBON_THEME, CarbonListModule, CarbonMultiInputModule, TooltipIconModule, ValtimoCdsModalDirectiveModule, ViewType, } from '@valtimo/components';
|
|
18
|
-
import { CommonModule } from '@angular/common';
|
|
19
|
-
import { TranslateModule } from '@ngx-translate/core';
|
|
20
|
-
import { ButtonModule, CheckboxModule, DropdownModule, InputModule, ModalModule, TabsModule, } from 'carbon-components-angular';
|
|
21
|
-
import { FormControl, FormGroup, FormsModule, ReactiveFormsModule, Validators, } from '@angular/forms';
|
|
22
|
-
import { BehaviorSubject, combineLatest, map, of, tap } from 'rxjs';
|
|
23
|
-
import { TaskListColumnDefaultSort, } from '@valtimo/task';
|
|
24
|
-
import { distinctUntilChanged } from 'rxjs/operators';
|
|
25
|
-
import { isEqual } from 'lodash';
|
|
26
|
-
import * as i0 from "@angular/core";
|
|
27
|
-
import * as i1 from "@ngx-translate/core";
|
|
28
|
-
import * as i2 from "../../services";
|
|
29
|
-
import * as i3 from "@angular/common";
|
|
30
|
-
import * as i4 from "@angular/forms";
|
|
31
|
-
import * as i5 from "carbon-components-angular";
|
|
32
|
-
import * as i6 from "@valtimo/components";
|
|
33
|
-
export class TaskManagementColumnModalComponent {
|
|
34
|
-
set taskListColumns(value) {
|
|
35
|
-
if (value?.length > 0) {
|
|
36
|
-
this._taskListColumns$.next(value);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
set type(value) {
|
|
40
|
-
this.type$.next(value);
|
|
41
|
-
}
|
|
42
|
-
get type() {
|
|
43
|
-
return this.type$.getValue();
|
|
44
|
-
}
|
|
45
|
-
set show(showModal) {
|
|
46
|
-
this.show$.next(showModal);
|
|
47
|
-
if (showModal)
|
|
48
|
-
this.enable();
|
|
49
|
-
if (!showModal)
|
|
50
|
-
this.resetFormAfterTimeout();
|
|
51
|
-
}
|
|
52
|
-
set selectedTaskListColumn(column) {
|
|
53
|
-
if (column)
|
|
54
|
-
this.prefillForm(column);
|
|
55
|
-
}
|
|
56
|
-
get taskListColumns$() {
|
|
57
|
-
return this._taskListColumns$.pipe(distinctUntilChanged((previous, current) => isEqual(previous, current)));
|
|
58
|
-
}
|
|
59
|
-
get title() {
|
|
60
|
-
return this.formGroup.get('title');
|
|
61
|
-
}
|
|
62
|
-
get key() {
|
|
63
|
-
return this.formGroup.get('key');
|
|
64
|
-
}
|
|
65
|
-
get keyValue$() {
|
|
66
|
-
return this.key.valueChanges.pipe(distinctUntilChanged());
|
|
67
|
-
}
|
|
68
|
-
get path() {
|
|
69
|
-
return this.formGroup.get('path');
|
|
70
|
-
}
|
|
71
|
-
get dateFormat() {
|
|
72
|
-
return this.formGroup.get('dateFormat');
|
|
73
|
-
}
|
|
74
|
-
get displayType() {
|
|
75
|
-
return this.formGroup.get('displayType');
|
|
76
|
-
}
|
|
77
|
-
get sortable() {
|
|
78
|
-
return this.formGroup.get('sortable');
|
|
79
|
-
}
|
|
80
|
-
get defaultSort() {
|
|
81
|
-
return this.formGroup.get('defaultSort');
|
|
82
|
-
}
|
|
83
|
-
get _SORT_ASC_ITEM() {
|
|
84
|
-
return {
|
|
85
|
-
content: this.translateService.instant(`listColumn.sortableAsc`),
|
|
86
|
-
key: 'ASC',
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
get _SORT_DESC_ITEM() {
|
|
90
|
-
return {
|
|
91
|
-
content: this.translateService.instant(`listColumn.sortableDesc`),
|
|
92
|
-
key: 'DESC',
|
|
93
|
-
};
|
|
94
|
-
}
|
|
95
|
-
get enumValues$() {
|
|
96
|
-
return this._enumValues$.pipe(distinctUntilChanged((previous, current) => isEqual(previous, current)));
|
|
97
|
-
}
|
|
98
|
-
get enumValid$() {
|
|
99
|
-
return this.enumValues$.pipe(map(values => this.getValidEnumValues(values).length > 0));
|
|
100
|
-
}
|
|
101
|
-
get yesNoValues$() {
|
|
102
|
-
return this._yesNoValues$.pipe(distinctUntilChanged((previous, current) => isEqual(previous, current)));
|
|
103
|
-
}
|
|
104
|
-
constructor(translateService, taskManagementApiService) {
|
|
105
|
-
this.translateService = translateService;
|
|
106
|
-
this.taskManagementApiService = taskManagementApiService;
|
|
107
|
-
this.carbonTheme = CARBON_THEME.G10;
|
|
108
|
-
this.closeEvent = new EventEmitter();
|
|
109
|
-
this.type$ = new BehaviorSubject('add');
|
|
110
|
-
this.isAdd$ = this.type$.pipe(map(type => type === 'add'));
|
|
111
|
-
this.isEdit$ = this.type$.pipe(map(type => type === 'edit'), tap(isEdit => {
|
|
112
|
-
if (isEdit) {
|
|
113
|
-
this.key.disable();
|
|
114
|
-
}
|
|
115
|
-
else {
|
|
116
|
-
this.key.enable();
|
|
117
|
-
}
|
|
118
|
-
}));
|
|
119
|
-
this.show$ = new BehaviorSubject(false);
|
|
120
|
-
this.disabled$ = new BehaviorSubject(false);
|
|
121
|
-
this._taskListColumns$ = new BehaviorSubject([]);
|
|
122
|
-
this._INVALID_KEY = 'INVALID_KEY';
|
|
123
|
-
this.DISPLAY_TYPES = [
|
|
124
|
-
ViewType.TEXT,
|
|
125
|
-
ViewType.DATE,
|
|
126
|
-
ViewType.BOOLEAN,
|
|
127
|
-
ViewType.ENUM,
|
|
128
|
-
ViewType.ARRAY_COUNT,
|
|
129
|
-
ViewType.UNDERSCORES_TO_SPACES,
|
|
130
|
-
];
|
|
131
|
-
this.getInvalidListItem = (translateKey) => ({
|
|
132
|
-
content: this.translateService.instant(translateKey),
|
|
133
|
-
key: this._INVALID_KEY,
|
|
134
|
-
selected: true,
|
|
135
|
-
});
|
|
136
|
-
this.uniqueKeyValidator = (keyFormControl) => {
|
|
137
|
-
const taskListColumns = this._taskListColumns$.getValue();
|
|
138
|
-
return !taskListColumns?.find(column => column?.key?.trim()?.toLowerCase() === keyFormControl?.value?.trim()?.toLowerCase())
|
|
139
|
-
? null
|
|
140
|
-
: { notUnique: true };
|
|
141
|
-
};
|
|
142
|
-
this.listItemValidator = (listItemControl) => listItemControl?.value?.key && listItemControl.value.key !== this._INVALID_KEY
|
|
143
|
-
? null
|
|
144
|
-
: { invalidItem: true };
|
|
145
|
-
this.formGroup = new FormGroup({
|
|
146
|
-
title: new FormControl(null),
|
|
147
|
-
key: new FormControl(null, [this.uniqueKeyValidator.bind(this), Validators.required]),
|
|
148
|
-
path: new FormControl(null, Validators.required),
|
|
149
|
-
dateFormat: new FormControl(null),
|
|
150
|
-
displayType: new FormControl(this.getInvalidListItem(`listColumn.selectDefaultSort`), [
|
|
151
|
-
Validators.required,
|
|
152
|
-
this.listItemValidator.bind(this),
|
|
153
|
-
]),
|
|
154
|
-
sortable: new FormControl(false),
|
|
155
|
-
defaultSort: new FormControl(this.getInvalidListItem(`listColumn.selectDefaultSort`), [
|
|
156
|
-
Validators.required,
|
|
157
|
-
]),
|
|
158
|
-
});
|
|
159
|
-
this.sortItems$ = combineLatest([
|
|
160
|
-
this.defaultSort?.valueChanges || of(null),
|
|
161
|
-
this.translateService.stream('key'),
|
|
162
|
-
]).pipe(map(([defaultSortItem]) => [
|
|
163
|
-
this.getInvalidListItem(`listColumn.selectDefaultSort`),
|
|
164
|
-
this._SORT_ASC_ITEM,
|
|
165
|
-
this._SORT_DESC_ITEM,
|
|
166
|
-
].map((item, index) => ({
|
|
167
|
-
...item,
|
|
168
|
-
selected: defaultSortItem?.key === item?.key,
|
|
169
|
-
}))));
|
|
170
|
-
this.viewTypeItems$ = combineLatest([
|
|
171
|
-
this.displayType?.valueChanges || of(null),
|
|
172
|
-
this.translateService.stream('key'),
|
|
173
|
-
]).pipe(map(([displayTypeItem]) => [
|
|
174
|
-
{
|
|
175
|
-
content: this.translateService.instant(`listColumnDisplayType.select`),
|
|
176
|
-
key: this._INVALID_KEY,
|
|
177
|
-
},
|
|
178
|
-
...this.DISPLAY_TYPES.map(type => this.getListItemFromViewType(type)),
|
|
179
|
-
].map((item, index) => ({
|
|
180
|
-
...item,
|
|
181
|
-
selected: displayTypeItem?.key === item?.key,
|
|
182
|
-
}))));
|
|
183
|
-
this.showDateFormat$ = this.formGroup.valueChanges.pipe(map(formValues => !!(formValues.displayType?.key === this.DISPLAY_TYPES[1])), tap(showDateFormat => (this._showDateFormat = showDateFormat)));
|
|
184
|
-
this.showEnum$ = this.formGroup.valueChanges.pipe(map(formValues => !!(formValues.displayType?.key === ViewType.ENUM)), tap(showEnum => {
|
|
185
|
-
this._showEnum = showEnum;
|
|
186
|
-
if ((this._enumValues$.getValue() || []).length === 0)
|
|
187
|
-
this.resetEnumValues();
|
|
188
|
-
}));
|
|
189
|
-
this.showYesNo$ = this.formGroup.valueChanges.pipe(map(formValues => !!(formValues.displayType?.key === ViewType.BOOLEAN)), tap(showYesNo => {
|
|
190
|
-
this._showYesNo = showYesNo;
|
|
191
|
-
if ((this._yesNoValues$.getValue() || []).length === 0)
|
|
192
|
-
this.resetYesNoValues();
|
|
193
|
-
}));
|
|
194
|
-
this.CARBON_THEME_WHITE = CARBON_THEME.WHITE;
|
|
195
|
-
this.disableDefaultSort$ = combineLatest([this.taskListColumns$, this.keyValue$]).pipe(map(([taskListColumns, keyValue]) => {
|
|
196
|
-
const defaultSortColumn = taskListColumns.find(column => column?.defaultSort === TaskListColumnDefaultSort.ASC ||
|
|
197
|
-
column?.defaultSort === TaskListColumnDefaultSort.DESC);
|
|
198
|
-
const defaultSortColumnExists = !!defaultSortColumn;
|
|
199
|
-
const enabled = !defaultSortColumnExists || defaultSortColumn.key === keyValue;
|
|
200
|
-
if (enabled) {
|
|
201
|
-
this.defaultSort?.enable();
|
|
202
|
-
}
|
|
203
|
-
else {
|
|
204
|
-
this.defaultSort?.disable();
|
|
205
|
-
}
|
|
206
|
-
return !enabled;
|
|
207
|
-
}));
|
|
208
|
-
this._DEFAULT_ENUM_VALUES = [{ key: '', value: '' }];
|
|
209
|
-
this._enumValues$ = new BehaviorSubject(this._DEFAULT_ENUM_VALUES);
|
|
210
|
-
this._yesNoValues$ = new BehaviorSubject(this._DEFAULT_ENUM_VALUES);
|
|
211
|
-
}
|
|
212
|
-
closeModal() {
|
|
213
|
-
this.closeEvent.emit('close');
|
|
214
|
-
}
|
|
215
|
-
save() {
|
|
216
|
-
this.disable();
|
|
217
|
-
this.taskManagementApiService
|
|
218
|
-
.updateTaskListColumn(this.documentDefinitionName, this.getTaskListColumnFromFormValue(this._showEnum, this._showDateFormat, this._showYesNo))
|
|
219
|
-
.subscribe({
|
|
220
|
-
next: () => {
|
|
221
|
-
this.closeModalAndRefresh();
|
|
222
|
-
this.enableAfterTimeout();
|
|
223
|
-
},
|
|
224
|
-
error: () => {
|
|
225
|
-
this.enable();
|
|
226
|
-
},
|
|
227
|
-
});
|
|
228
|
-
}
|
|
229
|
-
enumValueChange(value) {
|
|
230
|
-
this._enumValues$.next(value);
|
|
231
|
-
}
|
|
232
|
-
yesNoValueChange(value) {
|
|
233
|
-
this._yesNoValues$.next(value);
|
|
234
|
-
}
|
|
235
|
-
resetEnumValues() {
|
|
236
|
-
this._enumValues$.next(this._DEFAULT_ENUM_VALUES);
|
|
237
|
-
}
|
|
238
|
-
resetYesNoValues() {
|
|
239
|
-
this._yesNoValues$.next(this._DEFAULT_ENUM_VALUES);
|
|
240
|
-
}
|
|
241
|
-
resetFormAfterTimeout() {
|
|
242
|
-
setTimeout(() => {
|
|
243
|
-
this.resetForm();
|
|
244
|
-
}, CARBON_CONSTANTS.modalAnimationMs);
|
|
245
|
-
}
|
|
246
|
-
resetForm() {
|
|
247
|
-
this.resetEnumValues();
|
|
248
|
-
this.resetYesNoValues();
|
|
249
|
-
this.formGroup.reset({
|
|
250
|
-
title: null,
|
|
251
|
-
key: null,
|
|
252
|
-
dateFormat: null,
|
|
253
|
-
displayType: this.getInvalidListItem('listColumnDisplayType.select'),
|
|
254
|
-
sortable: false,
|
|
255
|
-
defaultSort: this.getInvalidListItem(`listColumn.selectDefaultSort`),
|
|
256
|
-
});
|
|
257
|
-
}
|
|
258
|
-
disable() {
|
|
259
|
-
this.disabled$.next(true);
|
|
260
|
-
}
|
|
261
|
-
enableAfterTimeout() {
|
|
262
|
-
setTimeout(() => {
|
|
263
|
-
this.enable();
|
|
264
|
-
}, CARBON_CONSTANTS.modalAnimationMs);
|
|
265
|
-
}
|
|
266
|
-
enable() {
|
|
267
|
-
this.disabled$.next(false);
|
|
268
|
-
}
|
|
269
|
-
closeModalAndRefresh() {
|
|
270
|
-
this.closeEvent.emit('refresh');
|
|
271
|
-
}
|
|
272
|
-
getTaskListColumnFromFormValue(includeEnum, includeDateFormat, includeYesNo) {
|
|
273
|
-
const validEnumValues = this.getValidEnumValues(this._enumValues$.getValue());
|
|
274
|
-
const mappedEnumValues = validEnumValues && validEnumValues.length > 0 && this.mapEnumValues(validEnumValues);
|
|
275
|
-
const validYesNoValues = this.getValidEnumValues(this._yesNoValues$.getValue());
|
|
276
|
-
const mappedYesNoValues = validYesNoValues && validYesNoValues.length > 0 && this.mapEnumValues(validYesNoValues);
|
|
277
|
-
const formValue = this.formGroup.getRawValue();
|
|
278
|
-
const taskListColumn = {
|
|
279
|
-
...(formValue.title && { title: formValue.title }),
|
|
280
|
-
key: formValue.key,
|
|
281
|
-
path: formValue.path,
|
|
282
|
-
displayType: {
|
|
283
|
-
type: formValue.displayType.key,
|
|
284
|
-
displayTypeParameters: {
|
|
285
|
-
...(includeDateFormat && formValue.dateFormat && { dateFormat: formValue.dateFormat }),
|
|
286
|
-
...(includeEnum && mappedEnumValues && { enum: mappedEnumValues }),
|
|
287
|
-
...(includeYesNo && mappedYesNoValues && { enum: mappedYesNoValues }),
|
|
288
|
-
},
|
|
289
|
-
},
|
|
290
|
-
sortable: formValue.sortable,
|
|
291
|
-
...(formValue.defaultSort.key !== this._INVALID_KEY && {
|
|
292
|
-
defaultSort: formValue.defaultSort.key,
|
|
293
|
-
}),
|
|
294
|
-
};
|
|
295
|
-
return taskListColumn;
|
|
296
|
-
}
|
|
297
|
-
mapEnumValues(enumValues) {
|
|
298
|
-
return enumValues.reduce((acc, curr) => ({ ...acc, [curr.key]: curr.value }), {});
|
|
299
|
-
}
|
|
300
|
-
getValidEnumValues(values) {
|
|
301
|
-
return (values || []).filter(value => value.value && value.key);
|
|
302
|
-
}
|
|
303
|
-
getListItemFromViewType(viewType) {
|
|
304
|
-
return {
|
|
305
|
-
content: this.translateService.instant(`listColumnDisplayType.${viewType}`),
|
|
306
|
-
key: viewType,
|
|
307
|
-
};
|
|
308
|
-
}
|
|
309
|
-
getMultiInputValuesFromTaskListColumnEnum(taskListColumnEnum) {
|
|
310
|
-
return Object.keys(taskListColumnEnum).reduce((acc, curr) => [...acc, { key: curr, value: taskListColumnEnum[curr] }], []);
|
|
311
|
-
}
|
|
312
|
-
prefillForm(column) {
|
|
313
|
-
if (column?.displayType?.type === ViewType.ENUM &&
|
|
314
|
-
column?.displayType?.displayTypeParameters?.enum) {
|
|
315
|
-
this._enumValues$.next(this.getMultiInputValuesFromTaskListColumnEnum(column.displayType.displayTypeParameters.enum));
|
|
316
|
-
}
|
|
317
|
-
if (column?.displayType?.type === ViewType.BOOLEAN &&
|
|
318
|
-
column?.displayType?.displayTypeParameters?.enum) {
|
|
319
|
-
this._yesNoValues$.next(this.getMultiInputValuesFromTaskListColumnEnum(column.displayType.displayTypeParameters.enum));
|
|
320
|
-
}
|
|
321
|
-
this.formGroup.patchValue({
|
|
322
|
-
key: column.key,
|
|
323
|
-
path: column.path,
|
|
324
|
-
sortable: column.sortable,
|
|
325
|
-
displayType: this.getListItemFromViewType(column.displayType.type),
|
|
326
|
-
...(column.title && { title: column.title }),
|
|
327
|
-
...(!column.defaultSort && {
|
|
328
|
-
defaultSort: this.getInvalidListItem(`listColumn.selectDefaultSort`),
|
|
329
|
-
}),
|
|
330
|
-
...(column.defaultSort === 'ASC' && { defaultSort: this._SORT_ASC_ITEM }),
|
|
331
|
-
...(column.defaultSort === 'DESC' && { defaultSort: this._SORT_DESC_ITEM }),
|
|
332
|
-
...(column.displayType?.type === ViewType.DATE && {
|
|
333
|
-
dateFormat: column.displayType.displayTypeParameters.dateFormat,
|
|
334
|
-
}),
|
|
335
|
-
});
|
|
336
|
-
}
|
|
337
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TaskManagementColumnModalComponent, deps: [{ token: i1.TranslateService }, { token: i2.TaskManagementApiService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
338
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TaskManagementColumnModalComponent, isStandalone: true, selector: "valtimo-task-management-column-modal", inputs: { carbonTheme: "carbonTheme", taskListColumns: "taskListColumns", type: "type", show: "show", documentDefinitionName: "documentDefinitionName", selectedTaskListColumn: "selectedTaskListColumn" }, outputs: { closeEvent: "closeEvent" }, 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\n *ngIf=\"{\n show: show$ | async,\n type: type$ | async,\n isAdd: isAdd$ | async,\n isEdit: isEdit$ | async,\n disabled: disabled$ | async,\n showDateFormat: showDateFormat$ | async,\n showEnum: showEnum$ | async,\n showYesNo: showYesNo$ | async,\n disableDefaultSort: disableDefaultSort$ | async,\n enumValues: enumValues$ | async,\n enumValid: enumValid$ | async,\n yesNoValues: yesNoValues$ | async,\n viewTypeItems: viewTypeItems$ | async,\n sortItems: sortItems$ | async,\n } as obs\"\n>\n <cds-modal size=\"sm\" [open]=\"obs.show\" valtimoCdsModal>\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>\n {{\n obs.type === 'add'\n ? ('listColumn.addButtonText' | translate)\n : ('listColumn.editColumnTitle' | translate)\n }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent>\n <ng-container *ngTemplateOutlet=\"form; context: {obs: obs}\"></ng-container>\n </section>\n\n <ng-container *ngTemplateOutlet=\"modalFooter; context: {obs: obs}\"> </ng-container>\n </cds-modal>\n</ng-container>\n\n<ng-template #form let-obs=\"obs\">\n <form [formGroup]=\"formGroup\" class=\"list-column-form\">\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"obs.disabled\">\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.titleTitle' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.titleTooltip' | translate\"\n [disabled]=\"obs.disabled\"\n ></v-tooltip-icon>\n </span>\n\n <input cdsText formControlName=\"title\" />\n </cds-label>\n </div>\n\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label\n [invalid]=\"key?.touched && key?.invalid\"\n [disabled]=\"obs.disabled || obs.isEdit\"\n [invalidText]=\"'listColumn.uniqueKeyWarning' | translate\"\n >\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.key' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.keyTooltip' | translate\"\n [disabled]=\"obs.disabled\"\n ></v-tooltip-icon>\n </span>\n\n <input cdsText formControlName=\"key\" />\n </cds-label>\n </div>\n\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"obs.disabled\">\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.path' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.pathTooltip' | translate\"\n [disabled]=\"obs.disabled\"\n ></v-tooltip-icon>\n </span>\n\n <input cdsText formControlName=\"path\" />\n </cds-label>\n </div>\n\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"obs.disabled\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'listColumn.displayType' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.displayTypeTooltip' | translate\"\n [disabled]=\"obs.disabled\"\n ></v-tooltip-icon>\n </span>\n\n <cds-dropdown\n *ngIf=\"obs.viewTypeItems\"\n formControlName=\"displayType\"\n [disabled]=\"obs.disabled\"\n >\n <cds-dropdown-list [items]=\"obs.viewTypeItems\"></cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n </div>\n\n <div class=\"cds--text-input__field-wrapper\" *ngIf=\"obs.showDateFormat\">\n <cds-label [disabled]=\"obs.disabled\">\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.dateFormat' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.dateFormatTooltip' | translate\"\n [disabled]=\"obs.disabled\"\n ></v-tooltip-icon>\n </span>\n\n <input cdsText formControlName=\"dateFormat\" />\n </cds-label>\n </div>\n\n <div class=\"cds--text-input__field-wrapper\" *ngIf=\"obs.showEnum\">\n <cds-label [disabled]=\"obs.disabled\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'listColumn.enumTitle' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.enumTooltip' | translate\"\n [disabled]=\"obs.disabled\"\n ></v-tooltip-icon>\n </span>\n\n <valtimo-carbon-multi-input\n *ngIf=\"obs.showEnum\"\n [fullWidth]=\"true\"\n [carbonTheme]=\"CARBON_THEME_WHITE\"\n [defaultValues]=\"obs.enumValues\"\n type=\"keyValue\"\n (valueChange)=\"enumValueChange($event)\"\n ></valtimo-carbon-multi-input>\n </cds-label>\n </div>\n\n <div class=\"cds--text-input__field-wrapper\" *ngIf=\"obs.showYesNo\" [ngClass]=\"'no-margin'\">\n <cds-label [disabled]=\"obs.disabled\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'listColumn.enumTitleOptional' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.enumTooltipOptional' | translate\"\n [disabled]=\"obs.disabled\"\n ></v-tooltip-icon>\n </span>\n\n <valtimo-carbon-multi-input\n *ngIf=\"obs.showYesNo\"\n [fullWidth]=\"true\"\n [carbonTheme]=\"CARBON_THEME_WHITE\"\n [defaultValues]=\"obs.yesNoValues\"\n type=\"keyValue\"\n [hideAddButton]=\"true\"\n [hideDeleteButton]=\"true\"\n [maxRows]=\"1\"\n [keyColumnTitle]=\"'viewTypeConverter.Yes' | translate\"\n [valueColumnTitle]=\"'viewTypeConverter.No' | translate\"\n (valueChange)=\"yesNoValueChange($event)\"\n ></valtimo-carbon-multi-input>\n </cds-label>\n </div>\n\n <div class=\"cds--text-input__field-wrapper\">\n <cds-checkbox formControlName=\"sortable\" [disabled]=\"obs.disabled\"\n >{{ 'listColumn.sortable' | translate }}\n </cds-checkbox>\n </div>\n\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"obs.disabled || obs.disableDefaultSort\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'listColumn.defaultSortTitle' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.defaultSortTooltip' | translate\"\n [disabled]=\"obs.disabled\"\n ></v-tooltip-icon>\n </span>\n\n <cds-dropdown formControlName=\"defaultSort\" [disabled]=\"obs.disabled\" *ngIf=\"obs.sortItems\">\n <cds-dropdown-list [items]=\"obs.sortItems\"></cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n </div>\n </form>\n</ng-template>\n\n<ng-template #modalFooter let-obs=\"obs\">\n <cds-modal-footer>\n <ng-container>\n <button\n (click)=\"closeModal()\"\n cdsButton=\"secondary\"\n [attr.modal-primary-focus]=\"true\"\n [disabled]=\"obs.disabled\"\n >\n {{ 'listColumn.close' | translate }}\n </button>\n\n <button\n (click)=\"save()\"\n cdsButton=\"primary\"\n [attr.modal-primary-focus]=\"true\"\n [disabled]=\"!obs.valid\"\n [disabled]=\"obs.disabled || formGroup?.invalid || (obs.showEnum && !obs.enumValid)\"\n >\n {{ 'listColumn.save' | translate }}\n </button>\n </ng-container>\n </cds-modal-footer>\n</ng-template>\n", styles: [".cds--text-input__field-wrapper cds-label{width:100%}.cds--text-input__field-wrapper ::ng-deep .cds--label{width:100%}.cds--text-input__field-wrapper:not(:last-child){margin-bottom:16px}.label-with-tooltip{display:flex;align-items:center}.select-label{padding-bottom:8px}.list-column-form{margin-bottom:16px}.no-margin{margin-bottom:0!important}\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: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: CarbonListModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: TabsModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ModalModule }, { kind: "component", type: i5.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i5.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i5.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i5.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i5.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "ngmodule", type: CheckboxModule }, { kind: "component", type: i5.Checkbox, selector: "cds-checkbox, ibm-checkbox", inputs: ["disabled", "skeleton", "hideLabel", "name", "id", "required", "value", "ariaLabel", "ariaLabelledby", "indeterminate", "checked"], outputs: ["click", "checkedChange", "indeterminateChange"] }, { kind: "ngmodule", type: DropdownModule }, { kind: "component", type: i5.Dropdown, selector: "cds-dropdown, ibm-dropdown", inputs: ["id", "label", "hideLabel", "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: i5.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "ngmodule", type: InputModule }, { kind: "component", type: i5.Label, selector: "cds-label, ibm-label", inputs: ["labelInputID", "disabled", "skeleton", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i5.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: TooltipIconModule }, { kind: "component", type: i6.TooltipIconComponent, selector: "v-tooltip-icon", inputs: ["tooltip", "disabled"] }, { kind: "ngmodule", type: CarbonMultiInputModule }, { kind: "component", type: i6.CarbonMultiInputComponent, selector: "valtimo-carbon-multi-input", inputs: ["addRowText", "addRowTranslationKey", "arbitraryAmountTitles", "arbitraryValueAmount", "defaultValues", "deleteRowText", "deleteRowTranslationKey", "disabled", "dropdownColumnTitle", "dropdownItems", "dropdownWidth", "fullWidth", "hideAddButton", "hideDeleteButton", "initialAmountOfRows", "keyColumnTitle", "margin", "maxRows", "minimumAmountOfRows", "name", "required", "title", "titleTranslationKey", "tooltip", "type", "valueColumnTitle", "valuePathSelectorDocumentDefinitionName", "valuePathSelectorPrefixes", "valuePathSelectorShowDocumentDefinitionSelector", "valuePathSelectorNotation", "keyColumnFlex", "dropdownColumnFlex", "valueColumnFlex"], outputs: ["valueChange", "allValuesValidEvent"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i5.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: ValtimoCdsModalDirectiveModule }, { kind: "directive", type: i6.ValtimoCdsModalDirective, selector: "[valtimoCdsModal]", inputs: ["enableOverflow"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
339
|
-
}
|
|
340
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TaskManagementColumnModalComponent, decorators: [{
|
|
341
|
-
type: Component,
|
|
342
|
-
args: [{ selector: 'valtimo-task-management-column-modal', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
343
|
-
CommonModule,
|
|
344
|
-
CarbonListModule,
|
|
345
|
-
TranslateModule,
|
|
346
|
-
TabsModule,
|
|
347
|
-
FormsModule,
|
|
348
|
-
ModalModule,
|
|
349
|
-
CheckboxModule,
|
|
350
|
-
DropdownModule,
|
|
351
|
-
InputModule,
|
|
352
|
-
ReactiveFormsModule,
|
|
353
|
-
TooltipIconModule,
|
|
354
|
-
CarbonMultiInputModule,
|
|
355
|
-
ButtonModule,
|
|
356
|
-
ValtimoCdsModalDirectiveModule,
|
|
357
|
-
], 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\n *ngIf=\"{\n show: show$ | async,\n type: type$ | async,\n isAdd: isAdd$ | async,\n isEdit: isEdit$ | async,\n disabled: disabled$ | async,\n showDateFormat: showDateFormat$ | async,\n showEnum: showEnum$ | async,\n showYesNo: showYesNo$ | async,\n disableDefaultSort: disableDefaultSort$ | async,\n enumValues: enumValues$ | async,\n enumValid: enumValid$ | async,\n yesNoValues: yesNoValues$ | async,\n viewTypeItems: viewTypeItems$ | async,\n sortItems: sortItems$ | async,\n } as obs\"\n>\n <cds-modal size=\"sm\" [open]=\"obs.show\" valtimoCdsModal>\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>\n {{\n obs.type === 'add'\n ? ('listColumn.addButtonText' | translate)\n : ('listColumn.editColumnTitle' | translate)\n }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent>\n <ng-container *ngTemplateOutlet=\"form; context: {obs: obs}\"></ng-container>\n </section>\n\n <ng-container *ngTemplateOutlet=\"modalFooter; context: {obs: obs}\"> </ng-container>\n </cds-modal>\n</ng-container>\n\n<ng-template #form let-obs=\"obs\">\n <form [formGroup]=\"formGroup\" class=\"list-column-form\">\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"obs.disabled\">\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.titleTitle' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.titleTooltip' | translate\"\n [disabled]=\"obs.disabled\"\n ></v-tooltip-icon>\n </span>\n\n <input cdsText formControlName=\"title\" />\n </cds-label>\n </div>\n\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label\n [invalid]=\"key?.touched && key?.invalid\"\n [disabled]=\"obs.disabled || obs.isEdit\"\n [invalidText]=\"'listColumn.uniqueKeyWarning' | translate\"\n >\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.key' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.keyTooltip' | translate\"\n [disabled]=\"obs.disabled\"\n ></v-tooltip-icon>\n </span>\n\n <input cdsText formControlName=\"key\" />\n </cds-label>\n </div>\n\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"obs.disabled\">\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.path' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.pathTooltip' | translate\"\n [disabled]=\"obs.disabled\"\n ></v-tooltip-icon>\n </span>\n\n <input cdsText formControlName=\"path\" />\n </cds-label>\n </div>\n\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"obs.disabled\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'listColumn.displayType' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.displayTypeTooltip' | translate\"\n [disabled]=\"obs.disabled\"\n ></v-tooltip-icon>\n </span>\n\n <cds-dropdown\n *ngIf=\"obs.viewTypeItems\"\n formControlName=\"displayType\"\n [disabled]=\"obs.disabled\"\n >\n <cds-dropdown-list [items]=\"obs.viewTypeItems\"></cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n </div>\n\n <div class=\"cds--text-input__field-wrapper\" *ngIf=\"obs.showDateFormat\">\n <cds-label [disabled]=\"obs.disabled\">\n <span class=\"label-with-tooltip\">\n {{ 'listColumn.dateFormat' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.dateFormatTooltip' | translate\"\n [disabled]=\"obs.disabled\"\n ></v-tooltip-icon>\n </span>\n\n <input cdsText formControlName=\"dateFormat\" />\n </cds-label>\n </div>\n\n <div class=\"cds--text-input__field-wrapper\" *ngIf=\"obs.showEnum\">\n <cds-label [disabled]=\"obs.disabled\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'listColumn.enumTitle' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.enumTooltip' | translate\"\n [disabled]=\"obs.disabled\"\n ></v-tooltip-icon>\n </span>\n\n <valtimo-carbon-multi-input\n *ngIf=\"obs.showEnum\"\n [fullWidth]=\"true\"\n [carbonTheme]=\"CARBON_THEME_WHITE\"\n [defaultValues]=\"obs.enumValues\"\n type=\"keyValue\"\n (valueChange)=\"enumValueChange($event)\"\n ></valtimo-carbon-multi-input>\n </cds-label>\n </div>\n\n <div class=\"cds--text-input__field-wrapper\" *ngIf=\"obs.showYesNo\" [ngClass]=\"'no-margin'\">\n <cds-label [disabled]=\"obs.disabled\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'listColumn.enumTitleOptional' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.enumTooltipOptional' | translate\"\n [disabled]=\"obs.disabled\"\n ></v-tooltip-icon>\n </span>\n\n <valtimo-carbon-multi-input\n *ngIf=\"obs.showYesNo\"\n [fullWidth]=\"true\"\n [carbonTheme]=\"CARBON_THEME_WHITE\"\n [defaultValues]=\"obs.yesNoValues\"\n type=\"keyValue\"\n [hideAddButton]=\"true\"\n [hideDeleteButton]=\"true\"\n [maxRows]=\"1\"\n [keyColumnTitle]=\"'viewTypeConverter.Yes' | translate\"\n [valueColumnTitle]=\"'viewTypeConverter.No' | translate\"\n (valueChange)=\"yesNoValueChange($event)\"\n ></valtimo-carbon-multi-input>\n </cds-label>\n </div>\n\n <div class=\"cds--text-input__field-wrapper\">\n <cds-checkbox formControlName=\"sortable\" [disabled]=\"obs.disabled\"\n >{{ 'listColumn.sortable' | translate }}\n </cds-checkbox>\n </div>\n\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"obs.disabled || obs.disableDefaultSort\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'listColumn.defaultSortTitle' | translate }}\n\n <v-tooltip-icon\n [tooltip]=\"'listColumn.defaultSortTooltip' | translate\"\n [disabled]=\"obs.disabled\"\n ></v-tooltip-icon>\n </span>\n\n <cds-dropdown formControlName=\"defaultSort\" [disabled]=\"obs.disabled\" *ngIf=\"obs.sortItems\">\n <cds-dropdown-list [items]=\"obs.sortItems\"></cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n </div>\n </form>\n</ng-template>\n\n<ng-template #modalFooter let-obs=\"obs\">\n <cds-modal-footer>\n <ng-container>\n <button\n (click)=\"closeModal()\"\n cdsButton=\"secondary\"\n [attr.modal-primary-focus]=\"true\"\n [disabled]=\"obs.disabled\"\n >\n {{ 'listColumn.close' | translate }}\n </button>\n\n <button\n (click)=\"save()\"\n cdsButton=\"primary\"\n [attr.modal-primary-focus]=\"true\"\n [disabled]=\"!obs.valid\"\n [disabled]=\"obs.disabled || formGroup?.invalid || (obs.showEnum && !obs.enumValid)\"\n >\n {{ 'listColumn.save' | translate }}\n </button>\n </ng-container>\n </cds-modal-footer>\n</ng-template>\n", styles: [".cds--text-input__field-wrapper cds-label{width:100%}.cds--text-input__field-wrapper ::ng-deep .cds--label{width:100%}.cds--text-input__field-wrapper:not(:last-child){margin-bottom:16px}.label-with-tooltip{display:flex;align-items:center}.select-label{padding-bottom:8px}.list-column-form{margin-bottom:16px}.no-margin{margin-bottom:0!important}\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"] }]
|
|
358
|
-
}], ctorParameters: () => [{ type: i1.TranslateService }, { type: i2.TaskManagementApiService }], propDecorators: { carbonTheme: [{
|
|
359
|
-
type: Input
|
|
360
|
-
}], taskListColumns: [{
|
|
361
|
-
type: Input
|
|
362
|
-
}], type: [{
|
|
363
|
-
type: Input
|
|
364
|
-
}], show: [{
|
|
365
|
-
type: Input
|
|
366
|
-
}], documentDefinitionName: [{
|
|
367
|
-
type: Input
|
|
368
|
-
}], selectedTaskListColumn: [{
|
|
369
|
-
type: Input
|
|
370
|
-
}], closeEvent: [{
|
|
371
|
-
type: Output
|
|
372
|
-
}] } });
|
|
373
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay1tYW5hZ2VtZW50LWNvbHVtbi1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL3Rhc2stbWFuYWdlbWVudC9zcmMvbGliL2NvbXBvbmVudHMvdGFzay1tYW5hZ2VtZW50LWNvbHVtbi1tb2RhbC90YXNrLW1hbmFnZW1lbnQtY29sdW1uLW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vdGFzay1tYW5hZ2VtZW50L3NyYy9saWIvY29tcG9uZW50cy90YXNrLW1hbmFnZW1lbnQtY29sdW1uLW1vZGFsL3Rhc2stbWFuYWdlbWVudC1jb2x1bW4tbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzlGLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsWUFBWSxFQUNaLGdCQUFnQixFQUNoQixzQkFBc0IsRUFFdEIsaUJBQWlCLEVBQ2pCLDhCQUE4QixFQUM5QixRQUFRLEdBQ1QsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLGVBQWUsRUFBbUIsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQ0wsWUFBWSxFQUNaLGNBQWMsRUFDZCxjQUFjLEVBQ2QsV0FBVyxFQUNYLFdBQVcsRUFDWCxVQUFVLEdBQ1gsTUFBTSwyQkFBMkIsQ0FBQztBQUVuQyxPQUFPLEVBRUwsV0FBVyxFQUNYLFNBQVMsRUFDVCxXQUFXLEVBQ1gsbUJBQW1CLEVBQ25CLFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FB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QUE4QjtxQkFDL0I7NEhBR2UsV0FBVztzQkFBMUIsS0FBSztnQkFDYyxlQUFlO3NCQUFsQyxLQUFLO2dCQUtjLElBQUk7c0JBQXZCLEtBQUs7Z0JBTWMsSUFBSTtzQkFBdkIsS0FBSztnQkFLVSxzQkFBc0I7c0JBQXJDLEtBQUs7Z0JBQ2Msc0JBQXNCO3NCQUF6QyxLQUFLO2dCQUdJLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBDQVJCT05fQ09OU1RBTlRTLFxuICBDQVJCT05fVEhFTUUsXG4gIENhcmJvbkxpc3RNb2R1bGUsXG4gIENhcmJvbk11bHRpSW5wdXRNb2R1bGUsXG4gIE11bHRpSW5wdXRWYWx1ZXMsXG4gIFRvb2x0aXBJY29uTW9kdWxlLFxuICBWYWx0aW1vQ2RzTW9kYWxEaXJlY3RpdmVNb2R1bGUsXG4gIFZpZXdUeXBlLFxufSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtcbiAgQnV0dG9uTW9kdWxlLFxuICBDaGVja2JveE1vZHVsZSxcbiAgRHJvcGRvd25Nb2R1bGUsXG4gIElucHV0TW9kdWxlLFxuICBNb2RhbE1vZHVsZSxcbiAgVGFic01vZHVsZSxcbn0gZnJvbSAnY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhcic7XG5pbXBvcnQge1Rhc2tNYW5hZ2VtZW50QXBpU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUdyb3VwLFxuICBGb3Jtc01vZHVsZSxcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgVmFsaWRhdG9ycyxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHRhcH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBUYXNrTGlzdENvbHVtbixcbiAgVGFza0xpc3RDb2x1bW5EZWZhdWx0U29ydCxcbiAgVGFza0xpc3RDb2x1bW5FbnVtLFxuICBUYXNrTGlzdENvbHVtbkxpc3RJdGVtLFxuICBUYXNrTGlzdENvbHVtbk1vZGFsQ2xvc2VFdmVudCxcbiAgVGFza0xpc3RDb2x1bW5Nb2RhbFR5cGUsXG59IGZyb20gJ0B2YWx0aW1vL3Rhc2snO1xuaW1wb3J0IHtkaXN0aW5jdFVudGlsQ2hhbmdlZH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtpc0VxdWFsfSBmcm9tICdsb2Rhc2gnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLXRhc2stbWFuYWdlbWVudC1jb2x1bW4tbW9kYWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFzay1tYW5hZ2VtZW50LWNvbHVtbi1tb2RhbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Rhc2stbWFuYWdlbWVudC1jb2x1bW4tbW9kYWwuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQ2FyYm9uTGlzdE1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgVGFic01vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBNb2RhbE1vZHVsZSxcbiAgICBDaGVja2JveE1vZHVsZSxcbiAgICBEcm9wZG93bk1vZHVsZSxcbiAgICBJbnB1dE1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFRvb2x0aXBJY29uTW9kdWxlLFxuICAgIENhcmJvbk11bHRpSW5wdXRNb2R1bGUsXG4gICAgQnV0dG9uTW9kdWxlLFxuICAgIFZhbHRpbW9DZHNNb2RhbERpcmVjdGl2ZU1vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVGFza01hbmFnZW1lbnRDb2x1bW5Nb2RhbENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHB1YmxpYyBjYXJib25UaGVtZTogQ0FSQk9OX1RIRU1FID0gQ0FSQk9OX1RIRU1FLkcxMDtcbiAgQElucHV0KCkgcHVibGljIHNldCB0YXNrTGlzdENvbHVtbnModmFsdWU6IFRhc2tMaXN0Q29sdW1uW10pIHtcbiAgICBpZiAodmFsdWU/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuX3Rhc2tMaXN0Q29sdW1ucyQubmV4dCh2YWx1ZSk7XG4gICAgfVxuICB9XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgdHlwZSh2YWx1ZTogVGFza0xpc3RDb2x1bW5Nb2RhbFR5cGUpIHtcbiAgICB0aGlzLnR5cGUkLm5leHQodmFsdWUpO1xuICB9XG4gIHB1YmxpYyBnZXQgdHlwZSgpOiBUYXNrTGlzdENvbHVtbk1vZGFsVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZSQuZ2V0VmFsdWUoKTtcbiAgfVxuICBASW5wdXQoKSBwdWJsaWMgc2V0IHNob3coc2hvd01vZGFsOiBib29sZWFuKSB7XG4gICAgdGhpcy5zaG93JC5uZXh0KHNob3dNb2RhbCk7XG4gICAgaWYgKHNob3dNb2RhbCkgdGhpcy5lbmFibGUoKTtcbiAgICBpZiAoIXNob3dNb2RhbCkgdGhpcy5yZXNldEZvcm1BZnRlclRpbWVvdXQoKTtcbiAgfVxuICBASW5wdXQoKSBwdWJsaWMgZG9jdW1lbnREZWZpbml0aW9uTmFtZSE6IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIHNldCBzZWxlY3RlZFRhc2tMaXN0Q29sdW1uKGNvbHVtbjogVGFza0xpc3RDb2x1bW4pIHtcbiAgICBpZiAoY29sdW1uKSB0aGlzLnByZWZpbGxGb3JtKGNvbHVtbik7XG4gIH1cbiAgQE91dHB1dCgpIGNsb3NlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPFRhc2tMaXN0Q29sdW1uTW9kYWxDbG9zZUV2ZW50PigpO1xuXG4gIHB1YmxpYyByZWFkb25seSB0eXBlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGFza0xpc3RDb2x1bW5Nb2RhbFR5cGU+KCdhZGQnKTtcbiAgcHVibGljIHJlYWRvbmx5IGlzQWRkJCA9IHRoaXMudHlwZSQucGlwZShtYXAodHlwZSA9PiB0eXBlID09PSAnYWRkJykpO1xuICBwdWJsaWMgcmVhZG9ubHkgaXNFZGl0JCA9IHRoaXMudHlwZSQucGlwZShcbiAgICBtYXAodHlwZSA9PiB0eXBlID09PSAnZWRpdCcpLFxuICAgIHRhcChpc0VkaXQgPT4ge1xuICAgICAgaWYgKGlzRWRpdCkge1xuICAgICAgICB0aGlzLmtleS5kaXNhYmxlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmtleS5lbmFibGUoKTtcbiAgICAgIH1cbiAgICB9KVxuICApO1xuICBwdWJsaWMgcmVhZG9ubHkgc2hvdyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IGRpc2FibGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3Rhc2tMaXN0Q29sdW1ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRhc2tMaXN0Q29sdW1uW10+KFtdKTtcblxuICBwdWJsaWMgZ2V0IHRhc2tMaXN0Q29sdW1ucyQoKTogT2JzZXJ2YWJsZTxUYXNrTGlzdENvbHVtbltdPiB7XG4gICAgcmV0dXJuIHRoaXMuX3Rhc2tMaXN0Q29sdW1ucyQucGlwZShcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChwcmV2aW91cywgY3VycmVudCkgPT4gaXNFcXVhbChwcmV2aW91cywgY3VycmVudCkpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX0lOVkFMSURfS0VZID0gJ0lOVkFMSURfS0VZJztcblxuICBwcml2YXRlIHJlYWRvbmx5IERJU1BMQVlfVFlQRVM6IEFycmF5PFZpZXdUeXBlPiA9IFtcbiAgICBWaWV3VHlwZS5URVhULFxuICAgIFZpZXdUeXBlLkRBVEUsXG4gICAgVmlld1R5cGUuQk9PTEVBTixcbiAgICBWaWV3VHlwZS5FTlVNLFxuICAgIFZpZXdUeXBlLkFSUkFZX0NPVU5ULFxuICAgIFZpZXdUeXBlLlVOREVSU0NPUkVTX1RPX1NQQUNFUyxcbiAgXTtcblxuICBwcml2YXRlIGdldEludmFsaWRMaXN0SXRlbSA9ICh0cmFuc2xhdGVLZXk6IHN0cmluZyk6IFRhc2tMaXN0Q29sdW1uTGlzdEl0ZW0gPT4gKHtcbiAgICBjb250ZW50OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCh0cmFuc2xhdGVLZXkpLFxuICAgIGtleTogdGhpcy5fSU5WQUxJRF9LRVksXG4gICAgc2VsZWN0ZWQ6IHRydWUsXG4gIH0pO1xuXG4gIHByaXZhdGUgdW5pcXVlS2V5VmFsaWRhdG9yID0gKFxuICAgIGtleUZvcm1Db250cm9sOiBBYnN0cmFjdENvbnRyb2w8VGFza0xpc3RDb2x1bW5MaXN0SXRlbT5cbiAgKToge25vdFVuaXF1ZTogYm9vbGVhbn0gfCBudWxsID0+IHtcbiAgICBjb25zdCB0YXNrTGlzdENvbHVtbnMgPSB0aGlzLl90YXNrTGlzdENvbHVtbnMkLmdldFZhbHVlKCk7XG5cbiAgICByZXR1cm4gIXRhc2tMaXN0Q29sdW1ucz8uZmluZChcbiAgICAgIGNvbHVtbiA9PiBjb2x1bW4/LmtleT8udHJpbSgpPy50b0xvd2VyQ2FzZSgpID09PSBrZXlGb3JtQ29udHJvbD8udmFsdWU/LnRyaW0oKT8udG9Mb3dlckNhc2UoKVxuICAgIClcbiAgICAgID8gbnVsbFxuICAgICAgOiB7bm90VW5pcXVlOiB0cnVlfTtcbiAgfTtcblxuICBwcml2YXRlIGxpc3RJdGVtVmFsaWRhdG9yID0gKFxuICAgIGxpc3RJdGVtQ29udHJvbDogQWJzdHJhY3RDb250cm9sPFRhc2tMaXN0Q29sdW1uTGlzdEl0ZW0+XG4gICk6IHtpbnZhbGlkSXRlbTogYm9vbGVhbn0gfCBudWxsID0+XG4gICAgbGlzdEl0ZW1Db250cm9sPy52YWx1ZT8ua2V5ICYmIGxpc3RJdGVtQ29udHJvbC52YWx1ZS5rZXkgIT09IHRoaXMuX0lOVkFMSURfS0VZXG4gICAgICA/IG51bGxcbiAgICAgIDoge2ludmFsaWRJdGVtOiB0cnVlfTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgdGl0bGU6IG5ldyBGb3JtQ29udHJvbChudWxsKSxcbiAgICBrZXk6IG5ldyBGb3JtQ29udHJvbChudWxsLCBbdGhpcy51bmlxdWVLZXlWYWxpZGF0b3IuYmluZCh0aGlzKSwgVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAgIHBhdGg6IG5ldyBGb3JtQ29udHJvbChudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICBkYXRlRm9ybWF0OiBuZXcgRm9ybUNvbnRyb2wobnVsbCksXG4gICAgZGlzcGxheVR5cGU6IG5ldyBGb3JtQ29udHJvbCh0aGlzLmdldEludmFsaWRMaXN0SXRlbShgbGlzdENvbHVtbi5zZWxlY3REZWZhdWx0U29ydGApLCBbXG4gICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgdGhpcy5saXN0SXRlbVZhbGlkYXRvci5iaW5kKHRoaXMpLFxuICAgIF0pLFxuICAgIHNvcnRhYmxlOiBuZXcgRm9ybUNvbnRyb2woZmFsc2UpLFxuICAgIGRlZmF1bHRTb3J0OiBuZXcgRm9ybUNvbnRyb2wodGhpcy5nZXRJbnZhbGlkTGlzdEl0ZW0oYGxpc3RDb2x1bW4uc2VsZWN0RGVmYXVsdFNvcnRgKSwgW1xuICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICBdKSxcbiAgfSk7XG5cbiAgcHVibGljIGdldCB0aXRsZSgpOiBBYnN0cmFjdENvbnRyb2w8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLmdldCgndGl0bGUnKTtcbiAgfVxuICBwdWJsaWMgZ2V0IGtleSgpOiBBYnN0cmFjdENvbnRyb2w8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwLmdldCgna2V5Jyk7XG4gIH1cbiAgcHVibGljIGdldCBrZXlWYWx1ZSQoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5rZXkudmFsdWVDaGFuZ2VzLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG4gIH1cbiAgcHVibGljIGdldCBwYXRoKCk6IEFic3RyYWN0Q29udHJvbDxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXAuZ2V0KCdwYXRoJyk7XG4gIH1cbiAgcHVibGljIGdldCBkYXRlRm9ybWF0KCk6IEFic3RyYWN0Q29udHJvbDxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXAuZ2V0KCdkYXRlRm9ybWF0Jyk7XG4gIH1cbiAgcHVibGljIGdldCBkaXNwbGF5VHlwZSgpOiBBYnN0cmFjdENvbnRyb2w8VGFza0xpc3RDb2x1bW5MaXN0SXRlbT4ge1xuICAgIHJldHVybiB0aGlzLmZvcm1Hcm91cC5nZXQoJ2Rpc3BsYXlUeXBlJyk7XG4gIH1cbiAgcHVibGljIGdldCBzb3J0YWJsZSgpOiBBYnN0cmFjdENvbnRyb2w8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmZvcm1Hcm91cC5nZXQoJ3NvcnRhYmxlJyk7XG4gIH1cbiAgcHVibGljIGdldCBkZWZhdWx0U29ydCgpOiBBYnN0cmFjdENvbnRyb2w8VGFza0xpc3RDb2x1bW5MaXN0SXRlbT4ge1xuICAgIHJldHVybiB0aGlzLmZvcm1Hcm91cC5nZXQoJ2RlZmF1bHRTb3J0Jyk7XG4gIH1cblxuICBwcml2YXRlIGdldCBfU09SVF9BU0NfSVRFTSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29udGVudDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoYGxpc3RDb2x1bW4uc29ydGFibGVBc2NgKSxcbiAgICAgIGtleTogJ0FTQycsXG4gICAgfSBhcyBUYXNrTGlzdENvbHVtbkxpc3RJdGVtO1xuICB9XG4gIHByaXZhdGUgZ2V0IF9TT1JUX0RFU0NfSVRFTSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29udGVudDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoYGxpc3RDb2x1bW4uc29ydGFibGVEZXNjYCksXG4gICAgICBrZXk6ICdERVNDJyxcbiAgICB9IGFzIFRhc2tMaXN0Q29sdW1uTGlzdEl0ZW07XG4gIH1cbiAgcHVibGljIHJlYWRvbmx5IHNvcnRJdGVtcyQ6IE9ic2VydmFibGU8QXJyYXk8VGFza0xpc3RDb2x1bW5MaXN0SXRlbT4+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5kZWZhdWx0U29ydD8udmFsdWVDaGFuZ2VzIHx8IG9mKG51bGwpLFxuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5zdHJlYW0oJ2tleScpLFxuICBdKS5waXBlKFxuICAgIG1hcCgoW2RlZmF1bHRTb3J0SXRlbV0pID0+XG4gICAgICBbXG4gICAgICAgIHRoaXMuZ2V0SW52YWxpZExpc3RJdGVtKGBsaXN0Q29sdW1uLnNlbGVjdERlZmF1bHRTb3J0YCksXG4gICAgICAgIHRoaXMuX1NPUlRfQVNDX0lURU0sXG4gICAgICAgIHRoaXMuX1NPUlRfREVTQ19JVEVNLFxuICAgICAgXS5tYXAoKGl0ZW0sIGluZGV4KSA9PiAoe1xuICAgICAgICAuLi5pdGVtLFxuICAgICAgICBzZWxlY3RlZDogZGVmYXVsdFNvcnRJdGVtPy5rZXkgPT09IGl0ZW0/LmtleSxcbiAgICAgIH0pKVxuICAgIClcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgdmlld1R5cGVJdGVtcyQ6IE9ic2VydmFibGU8QXJyYXk8VGFza0xpc3RDb2x1bW5MaXN0SXRlbT4+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5kaXNwbGF5VHlwZT8udmFsdWVDaGFuZ2VzIHx8IG9mKG51bGwpLFxuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5zdHJlYW0oJ2tleScpLFxuICBdKS5waXBlKFxuICAgIG1hcCgoW2Rpc3BsYXlUeXBlSXRlbV0pID0+XG4gICAgICBbXG4gICAgICAgIHtcbiAgICAgICAgICBjb250ZW50OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChgbGlzdENvbHVtbkRpc3BsYXlUeXBlLnNlbGVjdGApLFxuICAgICAgICAgIGtleTogdGhpcy5fSU5WQUxJRF9LRVksXG4gICAgICAgIH0sXG4gICAgICAgIC4uLnRoaXMuRElTUExBWV9UWVBFUy5tYXAodHlwZSA9PiB0aGlzLmdldExpc3RJdGVtRnJvbVZpZXdUeXBlKHR5cGUpKSxcbiAgICAgIF0ubWFwKChpdGVtLCBpbmRleCkgPT4gKHtcbiAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgc2VsZWN0ZWQ6IGRpc3BsYXlUeXBlSXRlbT8ua2V5ID09PSBpdGVtPy5rZXksXG4gICAgICB9KSlcbiAgICApXG4gICk7XG5cbiAgcHJpdmF0ZSBfc2hvd0RhdGVGb3JtYXQhOiBib29sZWFuO1xuICBwdWJsaWMgcmVhZG9ubHkgc2hvd0RhdGVGb3JtYXQkID0gdGhpcy5mb3JtR3JvdXAudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgbWFwKGZvcm1WYWx1ZXMgPT4gISEoZm9ybVZhbHVlcy5kaXNwbGF5VHlwZT8ua2V5ID09PSB0aGlzLkRJU1BMQVlfVFlQRVNbMV0pKSxcbiAgICB0YXAoc2hvd0RhdGVGb3JtYXQgPT4gKHRoaXMuX3Nob3dEYXRlRm9ybWF0ID0gc2hvd0RhdGVGb3JtYXQpKVxuICApO1xuXG4gIHByaXZhdGUgX3Nob3dFbnVtITogYm9vbGVhbjtcbiAgcHVibGljIHJlYWRvbmx5IHNob3dFbnVtJCA9IHRoaXMuZm9ybUdyb3VwLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgIG1hcChmb3JtVmFsdWVzID0+ICEhKGZvcm1WYWx1ZXMuZGlzcGxheVR5cGU/LmtleSA9PT0gVmlld1R5cGUuRU5VTSkpLFxuICAgIHRhcChzaG93RW51bSA9PiB7XG4gICAgICB0aGlzLl9zaG93RW51bSA9IHNob3dFbnVtO1xuICAgICAgaWYgKCh0aGlzLl9lbnVtVmFsdWVzJC5nZXRWYWx1ZSgpIHx8IFtdKS5sZW5ndGggPT09IDApIHRoaXMucmVzZXRFbnVtVmFsdWVzKCk7XG4gICAgfSlcbiAgKTtcblxuICBwcml2YXRlIF9zaG93WWVzTm8hOiBib29sZWFuO1xuICBwdWJsaWMgcmVhZG9ubHkgc2hvd1llc05vJCA9IHRoaXMuZm9ybUdyb3VwLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgIG1hcChmb3JtVmFsdWVzID0+ICEhKGZvcm1WYWx1ZXMuZGlzcGxheVR5cGU/LmtleSA9PT0gVmlld1R5cGUuQk9PTEVBTikpLFxuICAgIHRhcChzaG93WWVzTm8gPT4ge1xuICAgICAgdGhpcy5fc2hvd1llc05vID0gc2hvd1llc05vO1xuICAgICAgaWYgKCh0aGlzLl95ZXNOb1ZhbHVlcyQuZ2V0VmFsdWUoKSB8fCBbXSkubGVuZ3RoID09PSAwKSB0aGlzLnJlc2V0WWVzTm9WYWx1ZXMoKTtcbiAgICB9KVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBDQVJCT05fVEhFTUVfV0hJVEUgPSBDQVJCT05fVEhFTUUuV0hJVEU7XG5cbiAgcHVibGljIHJlYWRvbmx5IGRpc2FibGVEZWZhdWx0U29ydCQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLnRhc2tMaXN0Q29sdW1ucyQsIHRoaXMua2V5VmFsdWUkXSkucGlwZShcbiAgICBtYXAoKFt0YXNrTGlzdENvbHVtbnMsIGtleVZhbHVlXSkgPT4ge1xuICAgICAgY29uc3QgZGVmYXVsdFNvcnRDb2x1bW4gPSB0YXNrTGlzdENvbHVtbnMuZmluZChcbiAgICAgICAgY29sdW1uID0+XG4gICAgICAgICAgY29sdW1uPy5kZWZhdWx0U29ydCA9PT0gVGFza0xpc3RDb2x1bW5EZWZhdWx0U29ydC5BU0MgfHxcbiAgICAgICAgICBjb2x1bW4/LmRlZmF1bHRTb3J0ID09PSBUYXNrTGlzdENvbHVtbkRlZmF1bHRTb3J0LkRFU0NcbiAgICAgICk7XG4gICAgICBjb25zdCBkZWZhdWx0U29ydENvbHVtbkV4aXN0cyA9ICEhZGVmYXVsdFNvcnRDb2x1bW47XG4gICAgICBjb25zdCBlbmFibGVkID0gIWRlZmF1bHRTb3J0Q29sdW1uRXhpc3RzIHx8IGRlZmF1bHRTb3J0Q29sdW1uLmtleSA9PT0ga2V5VmFsdWU7XG5cbiAgICAgIGlmIChlbmFibGVkKSB7XG4gICAgICAgIHRoaXMuZGVmYXVsdFNvcnQ/LmVuYWJsZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kZWZhdWx0U29ydD8uZGlzYWJsZSgpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gIWVuYWJsZWQ7XG4gICAgfSlcbiAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9ERUZBVUxUX0VOVU1fVkFMVUVTOiBNdWx0aUlucHV0VmFsdWVzID0gW3trZXk6ICcnLCB2YWx1ZTogJyd9XTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9lbnVtVmFsdWVzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TXVsdGlJbnB1dFZhbHVlcz4odGhpcy5fREVGQVVMVF9FTlVNX1ZBTFVFUyk7XG5cbiAgcHVibGljIGdldCBlbnVtVmFsdWVzJCgpOiBPYnNlcnZhYmxlPE11bHRpSW5wdXRWYWx1ZXM+IHtcbiAgICByZXR1cm4gdGhpcy5fZW51bVZhbHVlcyQucGlwZShcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChwcmV2aW91cywgY3VycmVudCkgPT4gaXNFcXVhbChwcmV2aW91cywgY3VycmVudCkpXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZW51bVZhbGlkJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5lbnVtVmFsdWVzJC5waXBlKG1hcCh2YWx1ZXMgPT4gdGhpcy5nZXRWYWxpZEVudW1WYWx1ZXModmFsdWVzKS5sZW5ndGggPiAwKSk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IF95ZXNOb1ZhbHVlcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PE11bHRpSW5wdXRWYWx1ZXM+KHRoaXMuX0RFRkFVTFRfRU5VTV9WQUxVRVMpO1xuXG4gIHB1YmxpYyBnZXQgeWVzTm9WYWx1ZXMkKCk6IE9ic2VydmFibGU8TXVsdGlJbnB1dFZhbHVlcz4ge1xuICAgIHJldHVybiB0aGlzLl95ZXNOb1ZhbHVlcyQucGlwZShcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChwcmV2aW91cywgY3VycmVudCkgPT4gaXNFcXVhbChwcmV2aW91cywgY3VycmVudCkpXG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRhc2tNYW5hZ2VtZW50QXBpU2VydmljZTogVGFza01hbmFnZW1lbnRBcGlTZXJ2aWNlXG4gICkge31cblxuICBwdWJsaWMgY2xvc2VNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlRXZlbnQuZW1pdCgnY2xvc2UnKTtcbiAgfVxuXG4gIHB1YmxpYyBzYXZlKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZSgpO1xuXG4gICAgdGhpcy50YXNrTWFuYWdlbWVudEFwaVNlcnZpY2VcbiAgICAgIC51cGRhdGVUYXNrTGlzdENvbHVtbihcbiAgICAgICAgdGhpcy5kb2N1bWVudERlZmluaXRpb25OYW1lLFxuICAgICAgICB0aGlzLmdldFRhc2tMaXN0Q29sdW1uRnJvbUZvcm1WYWx1ZSh0aGlzLl9zaG93RW51bSwgdGhpcy5fc2hvd0RhdGVGb3JtYXQsIHRoaXMuX3Nob3dZZXNObylcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5jbG9zZU1vZGFsQW5kUmVmcmVzaCgpO1xuICAgICAgICAgIHRoaXMuZW5hYmxlQWZ0ZXJUaW1lb3V0KCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5lbmFibGUoKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGVudW1WYWx1ZUNoYW5nZSh2YWx1ZTogTXVsdGlJbnB1dFZhbHVlcyk6IHZvaWQge1xuICAgIHRoaXMuX2VudW1WYWx1ZXMkLm5leHQodmFsdWUpO1xuICB9XG5cbiAgcHVibGljIHllc05vVmFsdWVDaGFuZ2UodmFsdWU6IE11bHRpSW5wdXRWYWx1ZXMpOiB2b2lkIHtcbiAgICB0aGlzLl95ZXNOb1ZhbHVlcyQubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0RW51bVZhbHVlcygpOiB2b2lkIHtcbiAgICB0aGlzLl9lbnVtVmFsdWVzJC5uZXh0KHRoaXMuX0RFRkFVTFRfRU5VTV9WQUxVRVMpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNldFllc05vVmFsdWVzKCk6IHZvaWQge1xuICAgIHRoaXMuX3llc05vVmFsdWVzJC5uZXh0KHRoaXMuX0RFRkFVTFRfRU5VTV9WQUxVRVMpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNldEZvcm1BZnRlclRpbWVvdXQoKTogdm9pZCB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnJlc2V0Rm9ybSgpO1xuICAgIH0sIENBUkJPTl9DT05TVEFOVFMubW9kYWxBbmltYXRpb25Ncyk7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0Rm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2V0RW51bVZhbHVlcygpO1xuICAgIHRoaXMucmVzZXRZZXNOb1ZhbHVlcygpO1xuICAgIHRoaXMuZm9ybUdyb3VwLnJlc2V0KHtcbiAgICAgIHRpdGxlOiBudWxsLFxuICAgICAga2V5OiBudWxsLFxuICAgICAgZGF0ZUZvcm1hdDogbnVsbCxcbiAgICAgIGRpc3BsYXlUeXBlOiB0aGlzLmdldEludmFsaWRMaXN0SXRlbSgnbGlzdENvbHVtbkRpc3BsYXlUeXBlLnNlbGVjdCcpLFxuICAgICAgc29ydGFibGU6IGZhbHNlLFxuICAgICAgZGVmYXVsdFNvcnQ6IHRoaXMuZ2V0SW52YWxpZExpc3RJdGVtKGBsaXN0Q29sdW1uLnNlbGVjdERlZmF1bHRTb3J0YCksXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGRpc2FibGUoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgZW5hYmxlQWZ0ZXJUaW1lb3V0KCk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5lbmFibGUoKTtcbiAgICB9LCBDQVJCT05fQ09OU1RBTlRTLm1vZGFsQW5pbWF0aW9uTXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbmFibGUoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCQubmV4dChmYWxzZSk7XG4gIH1cblxuICBwcml2YXRlIGNsb3NlTW9kYWxBbmRSZWZyZXNoKCk6IHZvaWQge1xuICAgIHRoaXMuY2xvc2VFdmVudC5lbWl0KCdyZWZyZXNoJyk7XG4gIH1cblxuICBwcml2YXRlIGdldFRhc2tMaXN0Q29sdW1uRnJvbUZvcm1WYWx1ZShcbiAgICBpbmNsdWRlRW51bTogYm9vbGVhbixcbiAgICBpbmNsdWRlRGF0ZUZvcm1hdDogYm9vbGVhbixcbiAgICBpbmNsdWRlWWVzTm86IGJvb2xlYW5cbiAgKTogVGFza0xpc3RDb2x1bW4ge1xuICAgIGNvbnN0IHZhbGlkRW51bVZhbHVlcyA9IHRoaXMuZ2V0VmFsaWRFbnVtVmFsdWVzKHRoaXMuX2VudW1WYWx1ZXMkLmdldFZhbHVlKCkpO1xuICAgIGNvbnN0IG1hcHBlZEVudW1WYWx1ZXMgPVxuICAgICAgdmFsaWRFbnVtVmFsdWVzICYmIHZhbGlkRW51bVZhbHVlcy5sZW5ndGggPiAwICYmIHRoaXMubWFwRW51bVZhbHVlcyh2YWxpZEVudW1WYWx1ZXMpO1xuICAgIGNvbnN0IHZhbGlkWWVzTm9WYWx1ZXMgPSB0aGlzLmdldFZhbGlkRW51bVZhbHVlcyh0aGlzLl95ZXNOb1ZhbHVlcyQuZ2V0VmFsdWUoKSk7XG4gICAgY29uc3QgbWFwcGVkWWVzTm9WYWx1ZXMgPVxuICAgICAgdmFsaWRZZXNOb1ZhbHVlcyAmJiB2YWxpZFllc05vVmFsdWVzLmxlbmd0aCA+IDAgJiYgdGhpcy5tYXBFbnVtVmFsdWVzKHZhbGlkWWVzTm9WYWx1ZXMpO1xuXG4gICAgY29uc3QgZm9ybVZhbHVlID0gdGhpcy5mb3JtR3JvdXAuZ2V0UmF3VmFsdWUoKTtcbiAgICBjb25zdCB0YXNrTGlzdENvbHVtbjogVGFza0xpc3RDb2x1bW4gPSB7XG4gICAgICAuLi4oZm9ybVZhbHVlLnRpdGxlICYmIHt0aXRsZTogZm9ybVZhbHVlLnRpdGxlfSksXG4gICAgICBrZXk6IGZvcm1WYWx1ZS5rZXksXG4gICAgICBwYXRoOiBmb3JtVmFsdWUucGF0aCxcbiAgICAgIGRpc3BsYXlUeXBlOiB7XG4gICAgICAgIHR5cGU6IGZvcm1WYWx1ZS5kaXNwbGF5VHlwZS5rZXksXG4gICAgICAgIGRpc3BsYXlUeXBlUGFyYW1ldGVyczoge1xuICAgICAgICAgIC4uLihpbmNsdWRlRGF0ZUZvcm1hdCAmJiBmb3JtVmFsdWUuZGF0ZUZvcm1hdCAmJiB7ZGF0ZUZvcm1hdDogZm9ybVZhbHVlLmRhdGVGb3JtYXR9KSxcbiAgICAgICAgICAuLi4oaW5jbHVkZUVudW0gJiYgbWFwcGVkRW51bVZhbHVlcyAmJiB7ZW51bTogbWFwcGVkRW51bVZhbHVlc30pLFxuICAgICAgICAgIC4uLihpbmNsdWRlWWVzTm8gJiYgbWFwcGVkWWVzTm9WYWx1ZXMgJiYge2VudW06IG1hcHBlZFllc05vVmFsdWVzfSksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgc29ydGFibGU6IGZvcm1WYWx1ZS5zb3J0YWJsZSxcbiAgICAgIC4uLihmb3JtVmFsdWUuZGVmYXVsdFNvcnQua2V5ICE9PSB0aGlzLl9JTlZBTElEX0tFWSAmJiB7XG4gICAgICAgIGRlZmF1bHRTb3J0OiBmb3JtVmFsdWUuZGVmYXVsdFNvcnQua2V5IGFzIFRhc2tMaXN0Q29sdW1uRGVmYXVsdFNvcnQsXG4gICAgICB9KSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRhc2tMaXN0Q29sdW1uO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBFbnVtVmFsdWVzKGVudW1WYWx1ZXM6IE11bHRpSW5wdXRWYWx1ZXMpOiBUYXNrTGlzdENvbHVtbkVudW0ge1xuICAgIHJldHVybiBlbnVtVmFsdWVzLnJlZHVjZSgoYWNjLCBjdXJyKSA9PiAoey4uLmFjYywgW2N1cnIua2V5XTogY3Vyci52YWx1ZX0pLCB7fSk7XG4gIH1cblxuICBwcml2YXRlIGdldFZhbGlkRW51bVZhbHVlcyh2YWx1ZXM6IE11bHRpSW5wdXRWYWx1ZXMpOiBNdWx0aUlucHV0VmFsdWVzIHtcbiAgICByZXR1cm4gKHZhbHVlcyB8fCBbXSkuZmlsdGVyKHZhbHVlID0+IHZhbHVlLnZhbHVlICYmIHZhbHVlLmtleSk7XG4gIH1cblxuICBwcml2YXRlIGdldExpc3RJdGVtRnJvbVZpZXdUeXBlKHZpZXdUeXBlOiBWaWV3VHlwZSB8IHN0cmluZyk6IFRhc2tMaXN0Q29sdW1uTGlzdEl0ZW0ge1xuICAgIHJldHVybiB7XG4gICAgICBjb250ZW50OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChgbGlzdENvbHVtbkRpc3BsYXlUeXBlLiR7dmlld1R5cGV9YCksXG4gICAgICBrZXk6IHZpZXdUeXBlLFxuICAgIH0gYXMgVGFza0xpc3RDb2x1bW5MaXN0SXRlbTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TXVsdGlJbnB1dFZhbHVlc0Zyb21UYXNrTGlzdENvbHVtbkVudW0oXG4gICAgdGFza0xpc3RDb2x1bW5FbnVtOiBUYXNrTGlzdENvbHVtbkVudW1cbiAgKTogTXVsdGlJbnB1dFZhbHVlcyB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRhc2tMaXN0Q29sdW1uRW51bSkucmVkdWNlKFxuICAgICAgKGFjYywgY3VycikgPT4gWy4uLmFjYywge2tleTogY3VyciwgdmFsdWU6IHRhc2tMaXN0Q29sdW1uRW51bVtjdXJyXX1dLFxuICAgICAgW11cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBwcmVmaWxsRm9ybShjb2x1bW46IFRhc2tMaXN0Q29sdW1uKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgY29sdW1uPy5kaXNwbGF5VHlwZT8udHlwZSA9PT0gVmlld1R5cGUuRU5VTSAmJlxuICAgICAgY29sdW1uPy5kaXNwbGF5VHlwZT8uZGlzcGxheVR5cGVQYXJhbWV0ZXJzPy5lbnVtXG4gICAgKSB7XG4gICAgICB0aGlzLl9lbnVtVmFsdWVzJC5uZXh0KFxuICAgICAgICB0aGlzLmdldE11bHRpSW5wdXRWYWx1ZXNGcm9tVGFza0xpc3RDb2x1bW5FbnVtKFxuICAgICAgICAgIGNvbHVtbi5kaXNwbGF5VHlwZS5kaXNwbGF5VHlwZVBhcmFtZXRlcnMuZW51bVxuICAgICAgICApXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIGNvbHVtbj8uZGlzcGxheVR5cGU/LnR5cGUgPT09IFZpZXdUeXBlLkJPT0xFQU4gJiZcbiAgICAgIGNvbHVtbj8uZGlzcGxheVR5cGU/LmRpc3BsYXlUeXBlUGFyYW1ldGVycz8uZW51bVxuICAgICkge1xuICAgICAgdGhpcy5feWVzTm9WYWx1ZXMkLm5leHQoXG4gICAgICAgIHRoaXMuZ2V0TXVsdGlJbnB1dFZhbHVlc0Zyb21UYXNrTGlzdENvbHVtbkVudW0oXG4gICAgICAgICAgY29sdW1uLmRpc3BsYXlUeXBlLmRpc3BsYXlUeXBlUGFyYW1ldGVycy5lbnVtXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5mb3JtR3JvdXAucGF0Y2hWYWx1ZSh7XG4gICAgICBrZXk6IGNvbHVtbi5rZXksXG4gICAgICBwYXRoOiBjb2x1bW4ucGF0aCxcbiAgICAgIHNvcnRhYmxlOiBjb2x1bW4uc29ydGFibGUsXG4gICAgICBkaXNwbGF5VHlwZTogdGhpcy5nZXRMaXN0SXRlbUZyb21WaWV3VHlwZShjb2x1bW4uZGlzcGxheVR5cGUudHlwZSksXG4gICAgICAuLi4oY29sdW1uLnRpdGxlICYmIHt0aXRsZTogY29sdW1uLnRpdGxlfSksXG4gICAgICAuLi4oIWNvbHVtbi5kZWZhdWx0U29ydCAmJiB7XG4gICAgICAgIGRlZmF1bHRTb3J0OiB0aGlzLmdldEludmFsaWRMaXN0SXRlbShgbGlzdENvbHVtbi5zZWxlY3REZWZhdWx0U29ydGApLFxuICAgICAgfSksXG4gICAgICAuLi4oY29sdW1uLmRlZmF1bHRTb3J0ID09PSAnQVNDJyAmJiB7ZGVmYXVsdFNvcnQ6IHRoaXMuX1NPUlRfQVNDX0lURU19KSxcbiAgICAgIC4uLihjb2x1bW4uZGVmYXVsdFNvcnQgPT09ICdERVNDJyAmJiB7ZGVmYXVsdFNvcnQ6IHRoaXMuX1NPUlRfREVTQ19JVEVNfSksXG4gICAgICAuLi4oY29sdW1uLmRpc3BsYXlUeXBlPy50eXBlID09PSBWaWV3VHlwZS5EQVRFICYmIHtcbiAgICAgICAgZGF0ZUZvcm1hdDogY29sdW1uLmRpc3BsYXlUeXBlLmRpc3BsYXlUeXBlUGFyYW1ldGVycy5kYXRlRm9ybWF0LFxuICAgICAgfSksXG4gICAgfSk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPG5nLWNvbnRhaW5lclxuICAqbmdJZj1cIntcbiAgICBzaG93OiBzaG93JCB8IGFzeW5jLFxuICAgIHR5cGU6IHR5cGUkIHwgYXN5bmMsXG4gICAgaXNBZGQ6IGlzQWRkJCB8IGFzeW5jLFxuICAgIGlzRWRpdDogaXNFZGl0JCB8IGFzeW5jLFxuICAgIGRpc2FibGVkOiBkaXNhYmxlZCQgfCBhc3luYyxcbiAgICBzaG93RGF0ZUZvcm1hdDogc2hvd0RhdGVGb3JtYXQkIHwgYXN5bmMsXG4gICAgc2hvd0VudW06IHNob3dFbnVtJCB8IGFzeW5jLFxuICAgIHNob3dZZXNObzogc2hvd1llc05vJCB8IGFzeW5jLFxuICAgIGRpc2FibGVEZWZhdWx0U29ydDogZGlzYWJsZURlZmF1bHRTb3J0JCB8IGFzeW5jLFxuICAgIGVudW1WYWx1ZXM6IGVudW1WYWx1ZXMkIHwgYXN5bmMsXG4gICAgZW51bVZhbGlkOiBlbnVtVmFsaWQkIHwgYXN5bmMsXG4gICAgeWVzTm9WYWx1ZXM6IHllc05vVmFsdWVzJCB8IGFzeW5jLFxuICAgIHZpZXdUeXBlSXRlbXM6IHZpZXdUeXBlSXRlbXMkIHwgYXN5bmMsXG4gICAgc29ydEl0ZW1zOiBzb3J0SXRlbXMkIHwgYXN5bmMsXG4gIH0gYXMgb2JzXCJcbj5cbiAgPGNkcy1tb2RhbCBzaXplPVwic21cIiBbb3Blbl09XCJvYnMuc2hvd1wiIHZhbHRpbW9DZHNNb2RhbD5cbiAgICA8Y2RzLW1vZGFsLWhlYWRlciBbc2hvd0Nsb3NlQnV0dG9uXT1cInRydWVcIiAoY2xvc2VTZWxlY3QpPVwiY2xvc2VNb2RhbCgpXCI+XG4gICAgICA8aDMgY2RzTW9kYWxIZWFkZXJIZWFkaW5nPlxuICAgICAgICB7e1xuICAgICAgICAgIG9icy50eXBlID09PSAnYWRkJ1xuICAgICAgICAgICAgPyAoJ2xpc3RDb2x1bW4uYWRkQnV0dG9uVGV4dCcgfCB0cmFuc2xhdGUpXG4gICAgICAgICAgICA6ICgnbGlzdENvbHVtbi5lZGl0Q29sdW1uVGl0bGUnIHwgdHJhbnNsYXRlKVxuICAgICAgICB9fVxuICAgICAgPC9oMz5cbiAgICA8L2Nkcy1tb2RhbC1oZWFkZXI+XG5cbiAgICA8c2VjdGlvbiBjZHNNb2RhbENvbnRlbnQ+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9ybTsgY29udGV4dDoge29iczogb2JzfVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvc2VjdGlvbj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtb2RhbEZvb3RlcjsgY29udGV4dDoge29iczogb2JzfVwiPiA8L25nLWNvbnRhaW5lcj5cbiAgPC9jZHMtbW9kYWw+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNmb3JtIGxldC1vYnM9XCJvYnNcIj5cbiAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIiBjbGFzcz1cImxpc3QtY29sdW1uLWZvcm1cIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2RzLS10ZXh0LWlucHV0X19maWVsZC13cmFwcGVyXCI+XG4gICAgICA8Y2RzLWxhYmVsIFtkaXNhYmxlZF09XCJvYnMuZGlzYWJsZWRcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbC13aXRoLXRvb2x0aXBcIj5cbiAgICAgICAgICB7eyAnbGlzdENvbHVtbi50aXRsZVRpdGxlJyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgICAgICAgPHYtdG9vbHRpcC1pY29uXG4gICAgICAgICAgICBbdG9vbHRpcF09XCInbGlzdENvbHVtbi50aXRsZVRvb2x0aXAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJvYnMuZGlzYWJsZWRcIlxuICAgICAgICAgID48L3YtdG9vbHRpcC1pY29uPlxuICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgPGlucHV0IGNkc1RleHQgZm9ybUNvbnRyb2xOYW1lPVwidGl0bGVcIiAvPlxuICAgICAgPC9jZHMtbGFiZWw+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY2RzLS10ZXh0LWlucHV0X19maWVsZC13cmFwcGVyXCI+XG4gICAgICA8Y2RzLWxhYmVsXG4gICAgICAgIFtpbnZhbGlkXT1cImtleT8udG91Y2hlZCAmJiBrZXk/LmludmFsaWRcIlxuICAgICAgICBbZGlzYWJsZWRdPVwib2JzLmRpc2FibGVkIHx8IG9icy5pc0VkaXRcIlxuICAgICAgICBbaW52YWxpZFRleHRdPVwiJ2xpc3RDb2x1bW4udW5pcXVlS2V5V2FybmluZycgfCB0cmFuc2xhdGVcIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsLXdpdGgtdG9vbHRpcFwiPlxuICAgICAgICAgIHt7ICdsaXN0Q29sdW1uLmtleScgfCB0cmFuc2xhdGUgfX1cblxuICAgICAgICAgIDx2LXRvb2x0aXAtaWNvblxuICAgICAgICAgICAgW3Rvb2x0aXBdPVwiJ2xpc3RDb2x1bW4ua2V5VG9vbHRpcCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm9icy5kaXNhYmxlZFwiXG4gICAgICAgICAgPjwvdi10b29sdGlwLWljb24+XG4gICAgICAgIDwvc3Bhbj5cblxuICAgICAgICA8aW5wdXQgY2RzVGV4dCBmb3JtQ29udHJvbE5hbWU9XCJrZXlcIiAvPlxuICAgICAgPC9jZHMtbGFiZWw+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY2RzLS10ZXh0LWlucHV0X19maWVsZC13cmFwcGVyXCI+XG4gICAgICA8Y2RzLWxhYmVsIFtkaXNhYmxlZF09XCJvYnMuZGlzYWJsZWRcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbC13aXRoLXRvb2x0aXBcIj5cbiAgICAgICAgICB7eyAnbGlzdENvbHVtbi5wYXRoJyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgICAgICAgPHYtdG9vbHRpcC1pY29uXG4gICAgICAgICAgICBbdG9vbHRpcF09XCInbGlzdENvbHVtbi5wYXRoVG9vbHRpcCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm9icy5kaXNhYmxlZFwiXG4gICAgICAgICAgPjwvdi10b29sdGlwLWljb24+XG4gICAgICAgIDwvc3Bhbj5cblxuICAgICAgICA8aW5wdXQgY2RzVGV4dCBmb3JtQ29udHJvbE5hbWU9XCJwYXRoXCIgLz5cbiAgICAgIDwvY2RzLWxhYmVsPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImNkcy0tdGV4dC1pbnB1dF9fZmllbGQtd3JhcHBlclwiPlxuICAgICAgPGNkcy1sYWJlbCBbZGlzYWJsZWRdPVwib2JzLmRpc2FibGVkXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWwtd2l0aC10b29sdGlwIHNlbGVjdC1sYWJlbFwiPlxuICAgICAgICAgIHt7ICdsaXN0Q29sdW1uLmRpc3BsYXlUeXBlJyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgICAgICAgPHYtdG9vbHRpcC1pY29uXG4gICAgICAgICAgICBbdG9vbHRpcF09XCInbGlzdENvbHVtbi5kaXNwbGF5VHlwZVRvb2x0aXAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJvYnMuZGlzYWJsZWRcIlxuICAgICAgICAgID48L3YtdG9vbHRpcC1pY29uPlxuICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgPGNkcy1kcm9wZG93blxuICAgICAgICAgICpuZ0lmPVwib2JzLnZpZXdUeXBlSXRlbXNcIlxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRpc3BsYXlUeXBlXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwib2JzLmRpc2FibGVkXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxjZHMtZHJvcGRvd24tbGlzdCBbaXRlbXNdPVwib2JzLnZpZXdUeXBlSXRlbXNcIj48L2Nkcy1kcm9wZG93bi1saXN0PlxuICAgICAgICA8L2Nkcy1kcm9wZG93bj5cbiAgICAgIDwvY2RzLWxhYmVsPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImNkcy0tdGV4dC1pbnB1dF9fZmllbGQtd3JhcHBlclwiICpuZ0lmPVwib2JzLnNob3dEYXRlRm9ybWF0XCI+XG4gICAgICA8Y2RzLWxhYmVsIFtkaXNhYmxlZF09XCJvYnMuZGlzYWJsZWRcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbC13aXRoLXRvb2x0aXBcIj5cbiAgICAgICAgICB7eyAnbGlzdENvbHVtbi5kYXRlRm9ybWF0JyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgICAgICAgPHYtdG9vbHRpcC1pY29uXG4gICAgICAgICAgICBbdG9vbHRpcF09XCInbGlzdENvbHVtbi5kYXRlRm9ybWF0VG9vbHRpcCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm9icy5kaXNhYmxlZFwiXG4gICAgICAgICAgPjwvdi10b29sdGlwLWljb24+XG4gICAgICAgIDwvc3Bhbj5cblxuICAgICAgICA8aW5wdXQgY2RzVGV4dCBmb3JtQ29udHJvbE5hbWU9XCJkYXRlRm9ybWF0XCIgLz5cbiAgICAgIDwvY2RzLWxhYmVsPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImNkcy0tdGV4dC1pbnB1dF9fZmllbGQtd3JhcHBlclwiICpuZ0lmPVwib2JzLnNob3dFbnVtXCI+XG4gICAgICA8Y2RzLWxhYmVsIFtkaXNhYmxlZF09XCJvYnMuZGlzYWJsZWRcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbC13aXRoLXRvb2x0aXAgc2VsZWN0LWxhYmVsXCI+XG4gICAgICAgICAge3sgJ2xpc3RDb2x1bW4uZW51bVRpdGxlJyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgICAgICAgPHYtdG9vbHRpcC1pY29uXG4gICAgICAgICAgICBbdG9vbHRpcF09XCInbGlzdENvbHVtbi5lbnVtVG9vbHRpcCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm9icy5kaXNhYmxlZFwiXG4gICAgICAgICAgPjwvdi10b29sdGlwLWljb24+XG4gICAgICAgIDwvc3Bhbj5cblxuICAgICAgICA8dmFsdGltby1jYXJib24tbXVsdGktaW5wdXRcbiAgICAgICAgICAqbmdJZj1cIm9icy5zaG93RW51bVwiXG4gICAgICAgICAgW2Z1bGxXaWR0aF09XCJ0cnVlXCJcbiAgICAgICAgICBbY2FyYm9uVGhlbWVdPVwiQ0FSQk9OX1RIRU1FX1dISVRFXCJcbiAgICAgICAgICBbZGVmYXVsdFZhbHVlc109XCJvYnMuZW51bVZhbHVlc1wiXG4gICAgICAgICAgdHlwZT1cImtleVZhbHVlXCJcbiAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiZW51bVZhbHVlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICA+PC92YWx0aW1vLWNhcmJvbi1tdWx0aS1pbnB1dD5cbiAgICAgIDwvY2RzLWxhYmVsPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImNkcy0tdGV4dC1pbnB1dF9fZmllbGQtd3JhcHBlclwiICpuZ0lmPVwib2JzLnNob3dZZXNOb1wiIFtuZ0NsYXNzXT1cIiduby1tYXJnaW4nXCI+XG4gICAgICA8Y2RzLWxhYmVsIFtkaXNhYmxlZF09XCJvYnMuZGlzYWJsZWRcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbC13aXRoLXRvb2x0aXAgc2VsZWN0LWxhYmVsXCI+XG4gICAgICAgICAge3sgJ2xpc3RDb2x1bW4uZW51bVRpdGxlT3B0aW9uYWwnIHwgdHJhbnNsYXRlIH19XG5cbiAgICAgICAgICA8di10b29sdGlwLWljb25cbiAgICAgICAgICAgIFt0b29sdGlwXT1cIidsaXN0Q29sdW1uLmVudW1Ub29sdGlwT3B0aW9uYWwnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJvYnMuZGlzYWJsZWRcIlxuICAgICAgICAgID48L3YtdG9vbHRpcC1pY29uPlxuICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgPHZhbHRpbW8tY2FyYm9uLW11bHRpLWlucHV0XG4gICAgICAgICAgKm5nSWY9XCJvYnMuc2hvd1llc05vXCJcbiAgICAgICAgICBbZnVsbFdpZHRoXT1cInRydWVcIlxuICAgICAgICAgIFtjYXJib25UaGVtZV09XCJDQVJCT05fVEhFTUVfV0hJVEVcIlxuICAgICAgICAgIFtkZWZhdWx0VmFsdWVzXT1cIm9icy55ZXNOb1ZhbHVlc1wiXG4gICAgICAgICAgdHlwZT1cImtleVZhbHVlXCJcbiAgICAgICAgICBbaGlkZUFkZEJ1dHRvbl09XCJ0cnVlXCJcbiAgICAgICAgICBbaGlkZURlbGV0ZUJ1dHRvbl09XCJ0cnVlXCJcbiAgICAgICAgICBbbWF4Um93c109XCIxXCJcbiAgICAgICAgICBba2V5Q29sdW1uVGl0bGVdPVwiJ3ZpZXdUeXBlQ29udmVydGVyLlllcycgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIFt2YWx1ZUNvbHVtblRpdGxlXT1cIid2aWV3VHlwZUNvbnZlcnRlci5ObycgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJ5ZXNOb1ZhbHVlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICA+PC92YWx0aW1vLWNhcmJvbi1tdWx0aS1pbnB1dD5cbiAgICAgIDwvY2RzLWxhYmVsPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImNkcy0tdGV4dC1pbnB1dF9fZmllbGQtd3JhcHBlclwiPlxuICAgICAgPGNkcy1jaGVja2JveCBmb3JtQ29udHJvbE5hbWU9XCJzb3J0YWJsZVwiIFtkaXNhYmxlZF09XCJvYnMuZGlzYWJsZWRcIlxuICAgICAgICA+e3sgJ2xpc3RDb2x1bW4uc29ydGFibGUnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2Nkcy1jaGVja2JveD5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJjZHMtLXRleHQtaW5wdXRfX2ZpZWxkLXdyYXBwZXJcIj5cbiAgICAgIDxjZHMtbGFiZWwgW2Rpc2FibGVkXT1cIm9icy5kaXNhYmxlZCB8fCBvYnMuZGlzYWJsZURlZmF1bHRTb3J0XCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWwtd2l0aC10b29sdGlwIHNlbGVjdC1sYWJlbFwiPlxuICAgICAgICAgIHt7ICdsaXN0Q29sdW1uLmRlZmF1bHRTb3J0VGl0bGUnIHwgdHJhbnNsYXRlIH19XG5cbiAgICAgICAgICA8di10b29sdGlwLWljb25cbiAgICAgICAgICAgIFt0b29sdGlwXT1cIidsaXN0Q29sdW1uLmRlZmF1bHRTb3J0VG9vbHRpcCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm9icy5kaXNhYmxlZFwiXG4gICAgICAgICAgPjwvdi10b29sdGlwLWljb24+XG4gICAgICAgIDwvc3Bhbj5cblxuICAgICAgICA8Y2RzLWRyb3Bkb3duIGZvcm1Db250cm9sTmFtZT1cImRlZmF1bHRTb3J0XCIgW2Rpc2FibGVkXT1cIm9icy5kaXNhYmxlZFwiICpuZ0lmPVwib2JzLnNvcnRJdGVtc1wiPlxuICAgICAgICAgIDxjZHMtZHJvcGRvd24tbGlzdCBbaXRlbXNdPVwib2JzLnNvcnRJdGVtc1wiPjwvY2RzLWRyb3Bkb3duLWxpc3Q+XG4gICAgICAgIDwvY2RzLWRyb3Bkb3duPlxuICAgICAgPC9jZHMtbGFiZWw+XG4gICAgPC9kaXY+XG4gIDwvZm9ybT5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbW9kYWxGb290ZXIgbGV0LW9icz1cIm9ic1wiPlxuICA8Y2RzLW1vZGFsLWZvb3Rlcj5cbiAgICA8bmctY29udGFpbmVyPlxuICAgICAgPGJ1dHRvblxuICAgICAgICAoY2xpY2spPVwiY2xvc2VNb2RhbCgpXCJcbiAgICAgICAgY2RzQnV0dG9uPVwic2Vjb25kYXJ5XCJcbiAgICAgICAgW2F0dHIubW9kYWwtcHJpbWFyeS1mb2N1c109XCJ0cnVlXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIm9icy5kaXNhYmxlZFwiXG4gICAgICA+XG4gICAgICAgIHt7ICdsaXN0Q29sdW1uLmNsb3NlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDxidXR0b25cbiAgICAgICAgKGNsaWNrKT1cInNhdmUoKVwiXG4gICAgICAgIGNkc0J1dHRvbj1cInByaW1hcnlcIlxuICAgICAgICBbYXR0ci5tb2RhbC1wcmltYXJ5LWZvY3VzXT1cInRydWVcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiIW9icy52YWxpZFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJvYnMuZGlzYWJsZWQgfHwgZm9ybUdyb3VwPy5pbnZhbGlkIHx8IChvYnMuc2hvd0VudW0gJiYgIW9icy5lbnVtVmFsaWQpXCJcbiAgICAgID5cbiAgICAgICAge3sgJ2xpc3RDb2x1bW4uc2F2ZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Nkcy1tb2RhbC1mb290ZXI+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
3
|
-
*
|
|
4
|
-
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
-
* you may not use this file except in compliance with the License.
|
|
6
|
-
* You may obtain a copy of the License at
|
|
7
|
-
*
|
|
8
|
-
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
-
*
|
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
* See the License for the specific language governing permissions and
|
|
14
|
-
* limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
export * from './task-management-columns.component';
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL3Rhc2stbWFuYWdlbWVudC9zcmMvbGliL2NvbXBvbmVudHMvdGFzay1tYW5hZ2VtZW50LWNvbHVtbnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxjQUFjLHFDQUFxQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi90YXNrLW1hbmFnZW1lbnQtY29sdW1ucy5jb21wb25lbnQnO1xuIl19
|