@valtimo/object-management 10.8.0 → 11.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.
- package/{esm2020 → esm2022}/lib/components/object-management-detail-container/object-management-detail-container.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/object-management-detail-container/tabs/object-management-detail/object-management-detail.component.mjs +4 -4
- package/esm2022/lib/components/object-management-detail-container/tabs/object-management-list-columns/object-management-list-columns.component.mjs +446 -0
- package/esm2022/lib/components/object-management-detail-container/tabs/object-management-list-search-fields/object-management-list-search-fields.component.mjs +341 -0
- package/{esm2020 → esm2022}/lib/components/object-management-list/object-management-list.component.mjs +4 -4
- package/esm2022/lib/components/object-management-modal/object-management-modal.component.mjs +146 -0
- package/esm2022/lib/components/object-management-upload-modal/object-management-upload-modal.component.mjs +184 -0
- package/{esm2020 → esm2022}/lib/object-management-routing.module.mjs +5 -5
- package/esm2022/lib/object-management.module.mjs +141 -0
- package/{esm2020 → esm2022}/lib/services/object-management-state.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/services/object-management.service.mjs +4 -4
- package/{esm2020 → esm2022}/lib/services/tab.service.mjs +4 -4
- package/{fesm2020 → fesm2022}/valtimo-object-management.mjs +110 -109
- package/fesm2022/valtimo-object-management.mjs.map +1 -0
- package/lib/components/object-management-detail-container/object-management-detail-container.component.d.ts +1 -1
- package/lib/components/object-management-detail-container/tabs/object-management-detail/object-management-detail.component.d.ts +1 -1
- package/lib/components/object-management-detail-container/tabs/object-management-list-columns/object-management-list-columns.component.d.ts +2 -3
- package/lib/components/object-management-detail-container/tabs/object-management-list-search-fields/object-management-list-search-fields.component.d.ts +1 -1
- package/lib/components/object-management-list/object-management-list.component.d.ts +1 -1
- package/lib/components/object-management-modal/object-management-modal.component.d.ts +3 -3
- package/lib/components/object-management-upload-modal/object-management-upload-modal.component.d.ts +3 -3
- package/lib/models/object-management.model.d.ts +1 -1
- package/lib/object-management.module.d.ts +3 -4
- package/package.json +8 -14
- package/esm2020/lib/components/object-management-detail-container/tabs/object-management-list-columns/object-management-list-columns.component.mjs +0 -447
- package/esm2020/lib/components/object-management-detail-container/tabs/object-management-list-search-fields/object-management-list-search-fields.component.mjs +0 -342
- package/esm2020/lib/components/object-management-modal/object-management-modal.component.mjs +0 -146
- package/esm2020/lib/components/object-management-upload-modal/object-management-upload-modal.component.mjs +0 -185
- package/esm2020/lib/object-management.module.mjs +0 -142
- package/fesm2015/valtimo-object-management.mjs +0 -1590
- package/fesm2015/valtimo-object-management.mjs.map +0 -1
- package/fesm2020/valtimo-object-management.mjs.map +0 -1
- /package/{esm2020 → esm2022}/lib/models/object-management.model.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/tab.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/valtimo-object-management.mjs +0 -0
|
@@ -0,0 +1,341 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2015-2023 Ritense BV, the Netherlands.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { Component, ViewChild } from '@angular/core';
|
|
17
|
+
import { BehaviorSubject, combineLatest, filter, map, of, startWith, Subject, switchMap, tap, } from 'rxjs';
|
|
18
|
+
import { catchError, take } from 'rxjs/operators';
|
|
19
|
+
import { FormControl, FormGroup, Validators } from '@angular/forms';
|
|
20
|
+
import * as i0 from "@angular/core";
|
|
21
|
+
import * as i1 from "../../../../services/object-management.service";
|
|
22
|
+
import * as i2 from "@angular/router";
|
|
23
|
+
import * as i3 from "@ngx-translate/core";
|
|
24
|
+
import * as i4 from "@valtimo/config";
|
|
25
|
+
import * as i5 from "@angular/platform-browser";
|
|
26
|
+
import * as i6 from "@angular/common";
|
|
27
|
+
import * as i7 from "@valtimo/components";
|
|
28
|
+
import * as i8 from "carbon-components-angular";
|
|
29
|
+
import * as i9 from "@angular/forms";
|
|
30
|
+
export class ObjectManagementListSearchFieldsComponent {
|
|
31
|
+
constructor(objectManagementService, route, translateService, configService, sanitizer) {
|
|
32
|
+
this.objectManagementService = objectManagementService;
|
|
33
|
+
this.route = route;
|
|
34
|
+
this.translateService = translateService;
|
|
35
|
+
this.configService = configService;
|
|
36
|
+
this.sanitizer = sanitizer;
|
|
37
|
+
this.downloadName$ = new BehaviorSubject('');
|
|
38
|
+
this.downloadUrl$ = new BehaviorSubject(undefined);
|
|
39
|
+
this.loading$ = new BehaviorSubject(true);
|
|
40
|
+
this.currentModalType$ = new BehaviorSubject('create');
|
|
41
|
+
this.showModal$ = new BehaviorSubject(false);
|
|
42
|
+
this.disableInput$ = new BehaviorSubject(false);
|
|
43
|
+
this.showDeleteModal$ = new Subject();
|
|
44
|
+
this.deleteRowIndex$ = new BehaviorSubject(0);
|
|
45
|
+
this.INVALID_KEY = 'invalid';
|
|
46
|
+
this.formGroup = new FormGroup({
|
|
47
|
+
title: new FormControl(''),
|
|
48
|
+
key: new FormControl('', Validators.required),
|
|
49
|
+
path: new FormControl('', Validators.required),
|
|
50
|
+
dataType: new FormControl({
|
|
51
|
+
key: this.INVALID_KEY,
|
|
52
|
+
}),
|
|
53
|
+
fieldType: new FormControl({
|
|
54
|
+
key: this.INVALID_KEY,
|
|
55
|
+
}),
|
|
56
|
+
});
|
|
57
|
+
this.COLUMNS = [
|
|
58
|
+
{
|
|
59
|
+
viewType: 'string',
|
|
60
|
+
sortable: false,
|
|
61
|
+
propertyName: 'title',
|
|
62
|
+
translationKey: 'title',
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
viewType: 'string',
|
|
66
|
+
sortable: false,
|
|
67
|
+
propertyName: 'key',
|
|
68
|
+
translationKey: 'key',
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
viewType: 'string',
|
|
72
|
+
sortable: false,
|
|
73
|
+
propertyName: 'path',
|
|
74
|
+
translationKey: 'path',
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
viewType: 'string',
|
|
78
|
+
sortable: false,
|
|
79
|
+
propertyName: 'dataType',
|
|
80
|
+
translationKey: 'dataType',
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
viewType: 'string',
|
|
84
|
+
sortable: false,
|
|
85
|
+
propertyName: 'fieldType',
|
|
86
|
+
translationKey: 'fieldType',
|
|
87
|
+
},
|
|
88
|
+
];
|
|
89
|
+
this.DATA_TYPES = [
|
|
90
|
+
'text',
|
|
91
|
+
'number',
|
|
92
|
+
'date',
|
|
93
|
+
'datetime',
|
|
94
|
+
'boolean',
|
|
95
|
+
];
|
|
96
|
+
this.FIELD_TYPES = ['single', 'range'];
|
|
97
|
+
this.cachedObjectManagementListSearchFields = [];
|
|
98
|
+
this.refreshObjectManagementListSearchFields$ = new BehaviorSubject(null);
|
|
99
|
+
this.objectManagementFields$ = this.translateService
|
|
100
|
+
.stream('key')
|
|
101
|
+
.pipe(map(() => this.COLUMNS.map(column => ({
|
|
102
|
+
key: column.propertyName,
|
|
103
|
+
label: this.translateService.instant(`searchFieldsOverview.${column.translationKey}`),
|
|
104
|
+
sortable: column.sortable,
|
|
105
|
+
...(column.viewType && { viewType: column.viewType }),
|
|
106
|
+
}))));
|
|
107
|
+
this.objectId$ = this.route.params.pipe(map(params => params.id || ''), filter(objectId => !!objectId));
|
|
108
|
+
this.objectManagementListSearchFields$ = combineLatest([
|
|
109
|
+
this.objectId$,
|
|
110
|
+
this.refreshObjectManagementListSearchFields$,
|
|
111
|
+
]).pipe(switchMap(([objectId]) => this.objectManagementService.getSearchField(objectId)), tap(objectManagementListSearchFields => {
|
|
112
|
+
this.objectId$.pipe(take(1)).subscribe(objectId => {
|
|
113
|
+
if (objectManagementListSearchFields &&
|
|
114
|
+
Array.isArray(objectManagementListSearchFields) &&
|
|
115
|
+
objectManagementListSearchFields.length > 0) {
|
|
116
|
+
this.setDownload(objectId, objectManagementListSearchFields);
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
}), tap(objectManagementListSearchFields => {
|
|
120
|
+
this.cachedObjectManagementListSearchFields = objectManagementListSearchFields;
|
|
121
|
+
this.loading$.next(false);
|
|
122
|
+
this.enableInput();
|
|
123
|
+
}));
|
|
124
|
+
this.translatedObjectManagementListSearchFields$ = combineLatest([
|
|
125
|
+
this.objectManagementListSearchFields$,
|
|
126
|
+
this.translateService.stream('key'),
|
|
127
|
+
]).pipe(map(([columns]) => columns.map(column => ({
|
|
128
|
+
...column,
|
|
129
|
+
title: column.title || '-',
|
|
130
|
+
dataType: this.translateService.instant(`searchFields.${column?.dataType?.toLowerCase()}`),
|
|
131
|
+
fieldType: this.translateService.instant(`searchFieldsOverview.${column?.fieldType?.toLowerCase()}`),
|
|
132
|
+
}))));
|
|
133
|
+
this.selectedDataTypeItemIndex$ = new BehaviorSubject(0);
|
|
134
|
+
this.dataTypeItems$ = combineLatest([
|
|
135
|
+
this.selectedDataTypeItemIndex$,
|
|
136
|
+
this.translateService.stream('key'),
|
|
137
|
+
]).pipe(map(([selectedDataTypeItemIndex]) => [
|
|
138
|
+
{
|
|
139
|
+
content: this.translateService.instant(`searchFieldDataType.select`),
|
|
140
|
+
key: this.INVALID_KEY,
|
|
141
|
+
},
|
|
142
|
+
...this.DATA_TYPES.map(type => ({
|
|
143
|
+
content: this.translateService.instant(`searchFields.${type}`),
|
|
144
|
+
key: type.toUpperCase(),
|
|
145
|
+
})),
|
|
146
|
+
].map((item, index) => ({
|
|
147
|
+
...item,
|
|
148
|
+
selected: index === selectedDataTypeItemIndex,
|
|
149
|
+
}))));
|
|
150
|
+
this.selectedFieldTypeItemIndex$ = new BehaviorSubject(0);
|
|
151
|
+
this.fieldTypeItems$ = combineLatest([
|
|
152
|
+
this.selectedFieldTypeItemIndex$,
|
|
153
|
+
this.translateService.stream('key'),
|
|
154
|
+
]).pipe(map(([selectedFieldTypeItemIndex]) => [
|
|
155
|
+
{
|
|
156
|
+
content: this.translateService.instant(`searchFieldFieldType.select`),
|
|
157
|
+
key: this.INVALID_KEY,
|
|
158
|
+
},
|
|
159
|
+
...this.FIELD_TYPES.map(type => ({
|
|
160
|
+
content: this.translateService.instant(`searchFieldsOverview.${type}`),
|
|
161
|
+
key: type.toUpperCase(),
|
|
162
|
+
})),
|
|
163
|
+
].map((item, index) => ({
|
|
164
|
+
...item,
|
|
165
|
+
selected: index === selectedFieldTypeItemIndex,
|
|
166
|
+
}))));
|
|
167
|
+
this.validKey$ = combineLatest([this.formGroup.valueChanges, this.currentModalType$]).pipe(map(([formValues, currentModalType]) => {
|
|
168
|
+
const existingKeys = this.cachedObjectManagementListSearchFields.map(column => column.key);
|
|
169
|
+
return currentModalType === 'create' ? !existingKeys.includes(formValues.key) : true;
|
|
170
|
+
}), startWith(false));
|
|
171
|
+
this.valid$ = combineLatest([this.formGroup.valueChanges, this.validKey$]).pipe(map(([formValues, validKey]) => !!(formValues.path && validKey)), startWith(false));
|
|
172
|
+
}
|
|
173
|
+
openModal(modalType) {
|
|
174
|
+
this.showModal$.next(true);
|
|
175
|
+
this.currentModalType$.next(modalType);
|
|
176
|
+
if (modalType === 'create') {
|
|
177
|
+
this.formGroup.controls['key'].enable();
|
|
178
|
+
this.resetFormGroup();
|
|
179
|
+
}
|
|
180
|
+
else if (modalType === 'edit') {
|
|
181
|
+
this.formGroup.controls['key'].disable();
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
closeModal() {
|
|
185
|
+
this.showModal$.next(false);
|
|
186
|
+
}
|
|
187
|
+
deleteRow(listSearchFieldRowIndex, clickEvent) {
|
|
188
|
+
clickEvent.stopPropagation();
|
|
189
|
+
this.showDeleteModal$.next(true);
|
|
190
|
+
this.deleteRowIndex$.next(listSearchFieldRowIndex);
|
|
191
|
+
}
|
|
192
|
+
deleteRowConfirmation(listSearchFieldRowIndex) {
|
|
193
|
+
const columnKey = this.getColumnKey(listSearchFieldRowIndex);
|
|
194
|
+
if (columnKey) {
|
|
195
|
+
this.disableInput();
|
|
196
|
+
this.objectId$
|
|
197
|
+
.pipe(take(1), switchMap(objectId => this.objectManagementService.deleteSearchField(objectId, columnKey)), tap(() => this.refreshObjectManagementListSearchFields()), catchError(() => {
|
|
198
|
+
this.enableInput();
|
|
199
|
+
return of(null);
|
|
200
|
+
}))
|
|
201
|
+
.subscribe();
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
getColumnKey(listSearchFieldRowIndex) {
|
|
205
|
+
return this.cachedObjectManagementListSearchFields[listSearchFieldRowIndex]?.key;
|
|
206
|
+
}
|
|
207
|
+
moveRow(listSearchFieldRowIndex, moveUp, clickEvent, objectId) {
|
|
208
|
+
const objectManagementListSearchFields = [...this.cachedObjectManagementListSearchFields];
|
|
209
|
+
const listSearchFieldRow = objectManagementListSearchFields[listSearchFieldRowIndex];
|
|
210
|
+
clickEvent.stopPropagation();
|
|
211
|
+
const listSearchFieldIndex = objectManagementListSearchFields.findIndex(field => field.key === listSearchFieldRow.key);
|
|
212
|
+
const foundListSearchField = { ...objectManagementListSearchFields[listSearchFieldIndex] };
|
|
213
|
+
const filteredListSearchField = objectManagementListSearchFields.filter(field => field.key !== listSearchFieldRow.key);
|
|
214
|
+
const multipleListSearchFields = objectManagementListSearchFields.length > 1;
|
|
215
|
+
if (multipleListSearchFields && moveUp && listSearchFieldIndex > 0) {
|
|
216
|
+
const listSearchFieldBeforeKey = `${objectManagementListSearchFields[listSearchFieldIndex - 1].key}`;
|
|
217
|
+
const listSearchFieldBeforeIndex = filteredListSearchField.findIndex(field => field.key === listSearchFieldBeforeKey);
|
|
218
|
+
filteredListSearchField.splice(listSearchFieldBeforeIndex, 0, foundListSearchField);
|
|
219
|
+
this.updateObjectManagementListSearchField(objectId, filteredListSearchField);
|
|
220
|
+
}
|
|
221
|
+
else if (multipleListSearchFields &&
|
|
222
|
+
!moveUp &&
|
|
223
|
+
listSearchFieldIndex < objectManagementListSearchFields.length) {
|
|
224
|
+
const caseListColumnAfterKey = `${objectManagementListSearchFields[listSearchFieldIndex + 1].key}`;
|
|
225
|
+
const caseListColumnAfterIndex = filteredListSearchField.findIndex(field => field.key === caseListColumnAfterKey);
|
|
226
|
+
filteredListSearchField.splice(caseListColumnAfterIndex + 1, 0, foundListSearchField);
|
|
227
|
+
this.updateObjectManagementListSearchField(objectId, filteredListSearchField);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
saveListSearchFields() {
|
|
231
|
+
this.disableInput();
|
|
232
|
+
this.currentModalType$.pipe(take(1)).subscribe(currentModalType => {
|
|
233
|
+
if (currentModalType === 'create') {
|
|
234
|
+
this.addSearchField();
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
this.updateSearchField();
|
|
238
|
+
}
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
columnRowClicked(row) {
|
|
242
|
+
this.resetFormGroup();
|
|
243
|
+
combineLatest([this.dataTypeItems$, this.fieldTypeItems$])
|
|
244
|
+
.pipe(take(1))
|
|
245
|
+
.subscribe(([dataTypeItems, fieldTypeItems]) => {
|
|
246
|
+
const column = this.cachedObjectManagementListSearchFields.find(cachedColumn => cachedColumn.key === row.key);
|
|
247
|
+
const dataTypeItem = dataTypeItems.find(item => item.key === column.dataType);
|
|
248
|
+
const dataTypeItemIndex = dataTypeItems.findIndex(item => item.key === column.dataType);
|
|
249
|
+
const fieldTypeItem = fieldTypeItems.find(item => item.key === column.fieldType);
|
|
250
|
+
const fieldTypeItemIndex = fieldTypeItems.findIndex(item => item.key === column.fieldType);
|
|
251
|
+
this.selectedDataTypeItemIndex$.next(dataTypeItemIndex);
|
|
252
|
+
this.selectedFieldTypeItemIndex$.next(fieldTypeItemIndex);
|
|
253
|
+
this.formGroup.patchValue({
|
|
254
|
+
key: column.key,
|
|
255
|
+
title: column.title,
|
|
256
|
+
path: column.path,
|
|
257
|
+
// @ts-ignore
|
|
258
|
+
dataType: { ...dataTypeItem },
|
|
259
|
+
// @ts-ignore
|
|
260
|
+
fieldType: { ...fieldTypeItem },
|
|
261
|
+
});
|
|
262
|
+
this.openModal('edit');
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
updateObjectManagementListSearchField(objectId, searchField) {
|
|
266
|
+
this.disableInput();
|
|
267
|
+
this.objectManagementService
|
|
268
|
+
.putSearchFields(objectId, searchField)
|
|
269
|
+
.pipe(tap(() => {
|
|
270
|
+
this.refreshObjectManagementListSearchFields();
|
|
271
|
+
localStorage.setItem(`list-search-fields${objectId}`, null);
|
|
272
|
+
}), catchError(() => {
|
|
273
|
+
this.enableInput();
|
|
274
|
+
return of(null);
|
|
275
|
+
}))
|
|
276
|
+
.subscribe();
|
|
277
|
+
}
|
|
278
|
+
addSearchField() {
|
|
279
|
+
const formValue = this.formGroup.value;
|
|
280
|
+
this.objectId$
|
|
281
|
+
.pipe(take(1), switchMap(objectId => this.objectManagementService.postSearchField(objectId, this.mapFormValuesToColumn(formValue))), tap(() => {
|
|
282
|
+
this.closeModal();
|
|
283
|
+
this.refreshObjectManagementListSearchFields();
|
|
284
|
+
}), catchError(() => {
|
|
285
|
+
this.enableInput();
|
|
286
|
+
return of(null);
|
|
287
|
+
}))
|
|
288
|
+
.subscribe();
|
|
289
|
+
}
|
|
290
|
+
updateSearchField() {
|
|
291
|
+
this.objectId$
|
|
292
|
+
.pipe(take(1), switchMap(objectId => this.objectManagementService.putSearchField(objectId, this.formGroup.value.key, this.mapFormValuesToColumn(this.formGroup.value))), tap(() => {
|
|
293
|
+
this.closeModal();
|
|
294
|
+
this.refreshObjectManagementListSearchFields();
|
|
295
|
+
}), catchError(() => {
|
|
296
|
+
this.enableInput();
|
|
297
|
+
return of(null);
|
|
298
|
+
}))
|
|
299
|
+
.subscribe();
|
|
300
|
+
}
|
|
301
|
+
setDownload(objectId, ObjectManagementSearchFields) {
|
|
302
|
+
this.downloadName$.next(`${objectId}.json`);
|
|
303
|
+
this.downloadUrl$.next(this.sanitizer.bypassSecurityTrustUrl('data:text/json;charset=UTF-8,' +
|
|
304
|
+
encodeURIComponent(JSON.stringify(ObjectManagementSearchFields, null, 2))));
|
|
305
|
+
}
|
|
306
|
+
disableInput() {
|
|
307
|
+
this.disableInput$.next(true);
|
|
308
|
+
this.formGroup.disable();
|
|
309
|
+
}
|
|
310
|
+
enableInput() {
|
|
311
|
+
this.disableInput$.next(false);
|
|
312
|
+
this.formGroup.enable();
|
|
313
|
+
}
|
|
314
|
+
refreshObjectManagementListSearchFields() {
|
|
315
|
+
this.refreshObjectManagementListSearchFields$.next(null);
|
|
316
|
+
}
|
|
317
|
+
resetFormGroup() {
|
|
318
|
+
this.formGroup.reset();
|
|
319
|
+
this.selectedDataTypeItemIndex$.next(0);
|
|
320
|
+
this.selectedFieldTypeItemIndex$.next(0);
|
|
321
|
+
}
|
|
322
|
+
mapFormValuesToColumn(formValue) {
|
|
323
|
+
return {
|
|
324
|
+
key: formValue.key,
|
|
325
|
+
title: formValue.title || '',
|
|
326
|
+
path: formValue.path,
|
|
327
|
+
dataType: formValue.dataType.key,
|
|
328
|
+
fieldType: formValue.fieldType.key,
|
|
329
|
+
};
|
|
330
|
+
}
|
|
331
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ObjectManagementListSearchFieldsComponent, deps: [{ token: i1.ObjectManagementService }, { token: i2.ActivatedRoute }, { token: i3.TranslateService }, { token: i4.ConfigService }, { token: i5.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
332
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ObjectManagementListSearchFieldsComponent, selector: "valtimo-object-management-list-search-fields", viewQueries: [{ propertyName: "moveRowButtonsTemplateRef", first: true, predicate: ["moveRowButtons"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2023 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<ng-container\n *ngIf=\"{\n searchFields: translatedObjectManagementListSearchFields$ | async,\n fields: objectManagementFields$ | async,\n objectId: objectId$ | async,\n downloadUrl: downloadUrl$ | async,\n downloadName: downloadName$ | async,\n loading: loading$ | async\n } as obs\"\n>\n <div class=\"container-fluid pr-0 pl-0\">\n <div class=\"text-right\">\n <div class=\"btn-group mt-m3px mb-3 mr-2\">\n <ng-container *ngTemplateOutlet=\"buttons; context: {obs: obs}\"></ng-container>\n </div>\n </div>\n <ng-container *ngIf=\"!obs.loading; else loading\">\n <ng-container *ngIf=\"obs.searchFields?.length > 0; else noConfigWarning\">\n <ng-container *ngTemplateOutlet=\"list; context: {obs: obs}\"></ng-container>\n </ng-container>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"createEditModal\"></ng-container>\n <ng-container *ngTemplateOutlet=\"deleteModal\"></ng-container>\n </div>\n</ng-container>\n\n<ng-template #buttons let-obs=\"obs\">\n <a\n cdsLink\n class=\"center-link\"\n [href]=\"obs.downloadUrl\"\n [download]=\"obs.downloadName\"\n [disabled]=\"\n !obs.downloadUrl ||\n !obs.downloadName ||\n obs.searchFields?.length < 1 ||\n obs.disableInput ||\n obs.loading\n \"\n >\n {{ 'searchFieldsOverview.download' | translate }}\n </a>\n <button\n (click)=\"openModal('create')\"\n cdsButton=\"primary\"\n size=\"md\"\n [disabled]=\"obs.loading\"\n class=\"ml-3\"\n >\n {{ 'searchFieldsOverview.add' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<ng-template #moveRowButtons let-index=\"index\" let-length=\"length\">\n <div\n class=\"move-row-buttons\"\n *ngIf=\"{\n disableInput: disableInput$ | async,\n objectId: objectId$ | async\n } as obs\"\n >\n <i\n class=\"mdi mdi-delete btn btn-outline-danger mr-1\"\n (click)=\"deleteRow(index, $event)\"\n [ngClass]=\"{'disabled disabled-move-row-button': obs.disableInput}\"\n ></i>\n <i\n class=\"mdi mdi-arrow-up-bold btn btn-outline-primary mr-1\"\n (click)=\"moveRow(index, true, $event, obs.objectId)\"\n [ngClass]=\"{'disabled disabled-move-row-button': index === 0 || obs.disableInput}\"\n ></i>\n <i\n class=\"mdi mdi-arrow-down-bold btn btn-outline-secondary\"\n (click)=\"moveRow(index, false, $event, obs.objectId)\"\n [ngClass]=\"{'disabled disabled-move-row-button': index === length - 1 || obs.disableInput}\"\n ></i>\n </div>\n</ng-template>\n\n<ng-template #list let-obs=\"obs\">\n <valtimo-list\n [items]=\"obs.searchFields\"\n [fields]=\"obs.fields\"\n [viewMode]=\"false\"\n [header]=\"false\"\n *ngIf=\"obs.searchFields; else loading\"\n [lastColumnTemplate]=\"moveRowButtonsTemplateRef\"\n (rowClicked)=\"columnRowClicked($event)\"\n >\n </valtimo-list>\n</ng-template>\n\n<ng-template #createEditModal>\n <cds-modal\n valtimoCdsModal\n *ngIf=\"{\n type: currentModalType$ | async,\n show: showModal$ | async,\n valid: valid$ | async,\n disableInput: disableInput$ | async,\n validKey: validKey$ | async\n } as modalObs\"\n [open]=\"modalObs.show\"\n >\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>\n {{\n modalObs.type === 'create'\n ? ('searchFieldsOverview.add' | translate)\n : ('searchFieldsOverview.edit' | translate)\n }}\n </h3>\n </cds-modal-header>\n <section cdsModalContent>\n <ng-container *ngTemplateOutlet=\"modalContent; context: {modalObs: modalObs}\"></ng-container>\n </section>\n <ng-container *ngTemplateOutlet=\"modalFooter; context: {modalObs: modalObs}\"></ng-container>\n </cds-modal>\n</ng-template>\n\n<ng-template #modalContent let-modalObs=\"modalObs\">\n <form [formGroup]=\"formGroup\" class=\"list-column-form\">\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip\">\n {{ 'searchFieldsOverview.title' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'searchFieldsOverviewTooltips.title' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <input cdsText formControlName=\"title\" />\n </cds-label>\n </div>\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label\n [disabled]=\"modalObs.disableInput || modalObs.type === 'edit'\"\n [invalid]=\"modalObs.validKey === false\"\n [invalidText]=\"'searchFieldsOverview.uniqueKeyWarning' | translate\"\n >\n <span class=\"label-with-tooltip\">\n {{ 'searchFieldsOverview.key' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'searchFieldsOverviewTooltips.key' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <input cdsText formControlName=\"key\" [invalid]=\"modalObs.validKey === false\" />\n </cds-label>\n </div>\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip\">\n {{ 'searchFieldsOverview.path' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'searchFieldsOverviewTooltips.objectsApiPath' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <input cdsText formControlName=\"path\" />\n </cds-label>\n </div>\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'searchFieldsOverview.dataType' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'searchFieldsOverviewTooltips.dataType' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <cds-dropdown formControlName=\"dataType\" [disabled]=\"modalObs.disableInput\">\n <cds-dropdown-list [items]=\"dataTypeItems$ | async\"></cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n </div>\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'searchFieldsOverview.fieldType' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'searchFieldsOverviewTooltips.fieldType' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <cds-dropdown formControlName=\"fieldType\" [disabled]=\"modalObs.disableInput\">\n <cds-dropdown-list [items]=\"fieldTypeItems$ | async\"></cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n </div>\n </form>\n</ng-template>\n\n<ng-template #modalFooter let-modalObs=\"modalObs\">\n <cds-modal-footer>\n <ng-container>\n <button\n cdsButton=\"secondary\"\n [attr.modal-primary-focus]=\"true\"\n (click)=\"closeModal()\"\n [disabled]=\"modalObs.disableInput\"\n >\n {{ 'searchFieldsOverview.close' | translate }}\n </button>\n <button\n cdsButton=\"primary\"\n [attr.modal-primary-focus]=\"true\"\n [disabled]=\"modalObs.valid === false\"\n (click)=\"saveListSearchFields()\"\n [disabled]=\"\n modalObs.disableInput || modalObs.valid === false || modalObs.validKey === false\n \"\n >\n {{ 'searchFieldsOverview.save' | translate }}\n </button>\n </ng-container>\n </cds-modal-footer>\n</ng-template>\n\n<ng-template #deleteModal>\n <valtimo-confirmation-modal\n [showModalSubject$]=\"showDeleteModal$\"\n [outputOnConfirm]=\"deleteRowIndex$ | async\"\n (confirmEvent)=\"deleteRowConfirmation($event)\"\n confirmButtonTextTranslationKey=\"searchFieldsOverview.deleteSearchField\"\n titleTranslationKey=\"searchFieldsOverview.searchField\"\n contentTranslationKey=\"searchFieldsOverview.deleteSearchFieldConfirmation\"\n ></valtimo-confirmation-modal>\n</ng-template>\n\n<ng-template #noConfigWarning>\n <div class=\"pl-2 pr-2 pb-2\">\n <cds-notification\n [notificationObj]=\"{\n type: 'info',\n title: 'searchFieldsOverview.noSearchFieldsConfiguredWarningTitle' | translate,\n showClose: false\n }\"\n >\n </cds-notification>\n </div>\n</ng-template>\n\n<ng-template #loading>\n <div class=\"loading-icon\"><cds-loading></cds-loading></div>\n</ng-template>\n", styles: ["/*!\n * Copyright 2015-2023 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 */::ng-deep .tab-container{min-height:unset!important}::ng-deep .cds--inline-notification{max-width:100%}.label-with-tooltip{display:flex;align-items:center}.cds--text-input__field-wrapper:not(:last-child){margin-bottom:1rem}.display-type-dropdown{width:300px}.list-column-form{margin-bottom:3rem}.select-label{padding-bottom:.5rem;width:250px}.loading-icon{width:100%;display:flex;align-items:center;justify-content:center}.center-link{display:flex;align-items:center}::ng-deep .move-row-buttons{display:flex;flex-direction:row;justify-content:flex-end;padding-right:13px}\n"], dependencies: [{ kind: "directive", type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i7.ListComponent, selector: "valtimo-list", inputs: ["items", "fields", "pagination", "viewMode", "isSearchable", "header", "actions", "paginationIdentifier", "initialSortState", "lastColumnTemplate"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged"] }, { kind: "component", type: i8.Label, selector: "cds-label, ibm-label", inputs: ["labelInputID", "disabled", "skeleton", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i8.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "directive", type: i8.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "component", type: i7.TooltipIconComponent, selector: "v-tooltip-icon", inputs: ["tooltip", "disabled"] }, { kind: "component", type: i8.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i8.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i8.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i8.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i8.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "component", type: i8.Notification, selector: "cds-notification, cds-inline-notification, ibm-notification, ibm-inline-notification", inputs: ["notificationObj"] }, { kind: "component", type: i8.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "component", type: i8.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: i8.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "directive", type: i8.Link, selector: "[cdsLink], [ibmLink]", inputs: ["inline", "disabled"] }, { kind: "directive", type: i8.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "directive", type: i9.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i9.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: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i9.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i9.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i7.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm"], outputs: ["confirmEvent", "cancelEvent"] }, { kind: "directive", type: i7.ValtimoCdsModalDirective, selector: "[valtimoCdsModal]" }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] }); }
|
|
333
|
+
}
|
|
334
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ObjectManagementListSearchFieldsComponent, decorators: [{
|
|
335
|
+
type: Component,
|
|
336
|
+
args: [{ selector: 'valtimo-object-management-list-search-fields', template: "<!--\n ~ Copyright 2015-2023 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<ng-container\n *ngIf=\"{\n searchFields: translatedObjectManagementListSearchFields$ | async,\n fields: objectManagementFields$ | async,\n objectId: objectId$ | async,\n downloadUrl: downloadUrl$ | async,\n downloadName: downloadName$ | async,\n loading: loading$ | async\n } as obs\"\n>\n <div class=\"container-fluid pr-0 pl-0\">\n <div class=\"text-right\">\n <div class=\"btn-group mt-m3px mb-3 mr-2\">\n <ng-container *ngTemplateOutlet=\"buttons; context: {obs: obs}\"></ng-container>\n </div>\n </div>\n <ng-container *ngIf=\"!obs.loading; else loading\">\n <ng-container *ngIf=\"obs.searchFields?.length > 0; else noConfigWarning\">\n <ng-container *ngTemplateOutlet=\"list; context: {obs: obs}\"></ng-container>\n </ng-container>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"createEditModal\"></ng-container>\n <ng-container *ngTemplateOutlet=\"deleteModal\"></ng-container>\n </div>\n</ng-container>\n\n<ng-template #buttons let-obs=\"obs\">\n <a\n cdsLink\n class=\"center-link\"\n [href]=\"obs.downloadUrl\"\n [download]=\"obs.downloadName\"\n [disabled]=\"\n !obs.downloadUrl ||\n !obs.downloadName ||\n obs.searchFields?.length < 1 ||\n obs.disableInput ||\n obs.loading\n \"\n >\n {{ 'searchFieldsOverview.download' | translate }}\n </a>\n <button\n (click)=\"openModal('create')\"\n cdsButton=\"primary\"\n size=\"md\"\n [disabled]=\"obs.loading\"\n class=\"ml-3\"\n >\n {{ 'searchFieldsOverview.add' | translate }}\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\n\n<ng-template #moveRowButtons let-index=\"index\" let-length=\"length\">\n <div\n class=\"move-row-buttons\"\n *ngIf=\"{\n disableInput: disableInput$ | async,\n objectId: objectId$ | async\n } as obs\"\n >\n <i\n class=\"mdi mdi-delete btn btn-outline-danger mr-1\"\n (click)=\"deleteRow(index, $event)\"\n [ngClass]=\"{'disabled disabled-move-row-button': obs.disableInput}\"\n ></i>\n <i\n class=\"mdi mdi-arrow-up-bold btn btn-outline-primary mr-1\"\n (click)=\"moveRow(index, true, $event, obs.objectId)\"\n [ngClass]=\"{'disabled disabled-move-row-button': index === 0 || obs.disableInput}\"\n ></i>\n <i\n class=\"mdi mdi-arrow-down-bold btn btn-outline-secondary\"\n (click)=\"moveRow(index, false, $event, obs.objectId)\"\n [ngClass]=\"{'disabled disabled-move-row-button': index === length - 1 || obs.disableInput}\"\n ></i>\n </div>\n</ng-template>\n\n<ng-template #list let-obs=\"obs\">\n <valtimo-list\n [items]=\"obs.searchFields\"\n [fields]=\"obs.fields\"\n [viewMode]=\"false\"\n [header]=\"false\"\n *ngIf=\"obs.searchFields; else loading\"\n [lastColumnTemplate]=\"moveRowButtonsTemplateRef\"\n (rowClicked)=\"columnRowClicked($event)\"\n >\n </valtimo-list>\n</ng-template>\n\n<ng-template #createEditModal>\n <cds-modal\n valtimoCdsModal\n *ngIf=\"{\n type: currentModalType$ | async,\n show: showModal$ | async,\n valid: valid$ | async,\n disableInput: disableInput$ | async,\n validKey: validKey$ | async\n } as modalObs\"\n [open]=\"modalObs.show\"\n >\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>\n {{\n modalObs.type === 'create'\n ? ('searchFieldsOverview.add' | translate)\n : ('searchFieldsOverview.edit' | translate)\n }}\n </h3>\n </cds-modal-header>\n <section cdsModalContent>\n <ng-container *ngTemplateOutlet=\"modalContent; context: {modalObs: modalObs}\"></ng-container>\n </section>\n <ng-container *ngTemplateOutlet=\"modalFooter; context: {modalObs: modalObs}\"></ng-container>\n </cds-modal>\n</ng-template>\n\n<ng-template #modalContent let-modalObs=\"modalObs\">\n <form [formGroup]=\"formGroup\" class=\"list-column-form\">\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip\">\n {{ 'searchFieldsOverview.title' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'searchFieldsOverviewTooltips.title' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <input cdsText formControlName=\"title\" />\n </cds-label>\n </div>\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label\n [disabled]=\"modalObs.disableInput || modalObs.type === 'edit'\"\n [invalid]=\"modalObs.validKey === false\"\n [invalidText]=\"'searchFieldsOverview.uniqueKeyWarning' | translate\"\n >\n <span class=\"label-with-tooltip\">\n {{ 'searchFieldsOverview.key' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'searchFieldsOverviewTooltips.key' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <input cdsText formControlName=\"key\" [invalid]=\"modalObs.validKey === false\" />\n </cds-label>\n </div>\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip\">\n {{ 'searchFieldsOverview.path' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'searchFieldsOverviewTooltips.objectsApiPath' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <input cdsText formControlName=\"path\" />\n </cds-label>\n </div>\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'searchFieldsOverview.dataType' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'searchFieldsOverviewTooltips.dataType' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <cds-dropdown formControlName=\"dataType\" [disabled]=\"modalObs.disableInput\">\n <cds-dropdown-list [items]=\"dataTypeItems$ | async\"></cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n </div>\n <div class=\"cds--text-input__field-wrapper\">\n <cds-label [disabled]=\"modalObs.disableInput\">\n <span class=\"label-with-tooltip select-label\">\n {{ 'searchFieldsOverview.fieldType' | translate }}\n <v-tooltip-icon\n [tooltip]=\"'searchFieldsOverviewTooltips.fieldType' | translate\"\n [disabled]=\"modalObs.disableInput\"\n ></v-tooltip-icon>\n </span>\n <cds-dropdown formControlName=\"fieldType\" [disabled]=\"modalObs.disableInput\">\n <cds-dropdown-list [items]=\"fieldTypeItems$ | async\"></cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n </div>\n </form>\n</ng-template>\n\n<ng-template #modalFooter let-modalObs=\"modalObs\">\n <cds-modal-footer>\n <ng-container>\n <button\n cdsButton=\"secondary\"\n [attr.modal-primary-focus]=\"true\"\n (click)=\"closeModal()\"\n [disabled]=\"modalObs.disableInput\"\n >\n {{ 'searchFieldsOverview.close' | translate }}\n </button>\n <button\n cdsButton=\"primary\"\n [attr.modal-primary-focus]=\"true\"\n [disabled]=\"modalObs.valid === false\"\n (click)=\"saveListSearchFields()\"\n [disabled]=\"\n modalObs.disableInput || modalObs.valid === false || modalObs.validKey === false\n \"\n >\n {{ 'searchFieldsOverview.save' | translate }}\n </button>\n </ng-container>\n </cds-modal-footer>\n</ng-template>\n\n<ng-template #deleteModal>\n <valtimo-confirmation-modal\n [showModalSubject$]=\"showDeleteModal$\"\n [outputOnConfirm]=\"deleteRowIndex$ | async\"\n (confirmEvent)=\"deleteRowConfirmation($event)\"\n confirmButtonTextTranslationKey=\"searchFieldsOverview.deleteSearchField\"\n titleTranslationKey=\"searchFieldsOverview.searchField\"\n contentTranslationKey=\"searchFieldsOverview.deleteSearchFieldConfirmation\"\n ></valtimo-confirmation-modal>\n</ng-template>\n\n<ng-template #noConfigWarning>\n <div class=\"pl-2 pr-2 pb-2\">\n <cds-notification\n [notificationObj]=\"{\n type: 'info',\n title: 'searchFieldsOverview.noSearchFieldsConfiguredWarningTitle' | translate,\n showClose: false\n }\"\n >\n </cds-notification>\n </div>\n</ng-template>\n\n<ng-template #loading>\n <div class=\"loading-icon\"><cds-loading></cds-loading></div>\n</ng-template>\n", styles: ["/*!\n * Copyright 2015-2023 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 */::ng-deep .tab-container{min-height:unset!important}::ng-deep .cds--inline-notification{max-width:100%}.label-with-tooltip{display:flex;align-items:center}.cds--text-input__field-wrapper:not(:last-child){margin-bottom:1rem}.display-type-dropdown{width:300px}.list-column-form{margin-bottom:3rem}.select-label{padding-bottom:.5rem;width:250px}.loading-icon{width:100%;display:flex;align-items:center;justify-content:center}.center-link{display:flex;align-items:center}::ng-deep .move-row-buttons{display:flex;flex-direction:row;justify-content:flex-end;padding-right:13px}\n"] }]
|
|
337
|
+
}], ctorParameters: function () { return [{ type: i1.ObjectManagementService }, { type: i2.ActivatedRoute }, { type: i3.TranslateService }, { type: i4.ConfigService }, { type: i5.DomSanitizer }]; }, propDecorators: { moveRowButtonsTemplateRef: [{
|
|
338
|
+
type: ViewChild,
|
|
339
|
+
args: ['moveRowButtons']
|
|
340
|
+
}] } });
|
|
341
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LW1hbmFnZW1lbnQtbGlzdC1zZWFyY2gtZmllbGRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vb2JqZWN0LW1hbmFnZW1lbnQvc3JjL2xpYi9jb21wb25lbnRzL29iamVjdC1tYW5hZ2VtZW50LWRldGFpbC1jb250YWluZXIvdGFicy9vYmplY3QtbWFuYWdlbWVudC1saXN0LXNlYXJjaC1maWVsZHMvb2JqZWN0LW1hbmFnZW1lbnQtbGlzdC1zZWFyY2gtZmllbGRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vb2JqZWN0LW1hbmFnZW1lbnQvc3JjL2xpYi9jb21wb25lbnRzL29iamVjdC1tYW5hZ2VtZW50LWRldGFpbC1jb250YWluZXIvdGFicy9vYmplY3QtbWFuYWdlbWVudC1saXN0LXNlYXJjaC1maWVsZHMvb2JqZWN0LW1hbmFnZW1lbnQtbGlzdC1zZWFyY2gtZmllbGRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBZSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUNMLGVBQWUsRUFDZixhQUFhLEVBQ2IsTUFBTSxFQUNOLEdBQUcsRUFFSCxFQUFFLEVBQ0YsU0FBUyxFQUNULE9BQU8sRUFDUCxTQUFTLEVBQ1QsR0FBRyxHQUNKLE1BQU0sTUFBTSxDQUFDO0FBV2QsT0FBTyxFQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsV0FBVyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7QUFXbEUsTUFBTSxPQUFPLHlDQUF5QztJQXdMcEQsWUFDbUIs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QUUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHO1lBQ2hDLFNBQVMsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUc7U0FDbkMsQ0FBQztJQUNKLENBQUM7K0dBbGJVLHlDQUF5QzttR0FBekMseUNBQXlDLGlOQ25EdEQsOHdTQXNRQTs7NEZEbk5hLHlDQUF5QztrQkFMckQsU0FBUzsrQkFDRSw4Q0FBOEM7aU9BS3BCLHlCQUF5QjtzQkFBNUQsU0FBUzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMyBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0NvbXBvbmVudCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIGZpbHRlcixcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBvZixcbiAgc3RhcnRXaXRoLFxuICBTdWJqZWN0LFxuICBzd2l0Y2hNYXAsXG4gIHRhcCxcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0RvbVNhbml0aXplciwgU2FmZVVybH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQge1xuICBDb25maWdTZXJ2aWNlLFxuICBEZWZpbml0aW9uQ29sdW1uLFxuICBTZWFyY2hGaWVsZCxcbiAgU2VhcmNoRmllbGRDb2x1bW5WaWV3LFxuICBTZWFyY2hGaWVsZERhdGFUeXBlLFxuICBTZWFyY2hGaWVsZEZpZWxkVHlwZSxcbn0gZnJvbSAnQHZhbHRpbW8vY29uZmlnJztcbmltcG9ydCB7TGlzdEZpZWxkfSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCB7Y2F0Y2hFcnJvciwgdGFrZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0xpc3RJdGVtfSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyL2Ryb3Bkb3duL2xpc3QtaXRlbS5pbnRlcmZhY2UnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZX0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge09iamVjdE1hbmFnZW1lbnRTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi9zZXJ2aWNlcy9vYmplY3QtbWFuYWdlbWVudC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1vYmplY3QtbWFuYWdlbWVudC1saXN0LXNlYXJjaC1maWVsZHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vb2JqZWN0LW1hbmFnZW1lbnQtbGlzdC1zZWFyY2gtZmllbGRzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vb2JqZWN0LW1hbmFnZW1lbnQtbGlzdC1zZWFyY2gtZmllbGRzLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIE9iamVjdE1hbmFnZW1lbnRMaXN0U2VhcmNoRmllbGRzQ29tcG9uZW50IHtcbiAgQFZpZXdDaGlsZCgnbW92ZVJvd0J1dHRvbnMnKSBwdWJsaWMgbW92ZVJvd0J1dHRvbnNUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcbiAgcmVhZG9ubHkgZG93bmxvYWROYW1lJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignJyk7XG4gIHJlYWRvbmx5IGRvd25sb2FkVXJsJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2FmZVVybD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgbG9hZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICByZWFkb25seSBjdXJyZW50TW9kYWxUeXBlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPignY3JlYXRlJyk7XG4gIHJlYWRvbmx5IHNob3dNb2RhbCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgZGlzYWJsZUlucHV0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBzaG93RGVsZXRlTW9kYWwkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgZGVsZXRlUm93SW5kZXgkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApO1xuXG4gIHJlYWRvbmx5IElOVkFMSURfS0VZID0gJ2ludmFsaWQnO1xuICByZWFkb25seSBmb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHtcbiAgICB0aXRsZTogbmV3IEZvcm1Db250cm9sKCcnKSxcbiAgICBrZXk6IG5ldyBGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgcGF0aDogbmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICBkYXRhVHlwZTogbmV3IEZvcm1Db250cm9sKHtcbiAgICAgIGtleTogdGhpcy5JTlZBTElEX0tFWSxcbiAgICB9KSxcbiAgICBmaWVsZFR5cGU6IG5ldyBGb3JtQ29udHJvbCh7XG4gICAgICBrZXk6IHRoaXMuSU5WQUxJRF9LRVksXG4gICAgfSksXG4gIH0pO1xuICBwcml2YXRlIHJlYWRvbmx5IENPTFVNTlM6IEFycmF5PERlZmluaXRpb25Db2x1bW4+ID0gW1xuICAgIHtcbiAgICAgIHZpZXdUeXBlOiAnc3RyaW5nJyxcbiAgICAgIHNvcnRhYmxlOiBmYWxzZSxcbiAgICAgIHByb3BlcnR5TmFtZTogJ3RpdGxlJyxcbiAgICAgIHRyYW5zbGF0aW9uS2V5OiAndGl0bGUnLFxuICAgIH0sXG4gICAge1xuICAgICAgdmlld1R5cGU6ICdzdHJpbmcnLFxuICAgICAgc29ydGFibGU6IGZhbHNlLFxuICAgICAgcHJvcGVydHlOYW1lOiAna2V5JyxcbiAgICAgIHRyYW5zbGF0aW9uS2V5OiAna2V5JyxcbiAgICB9LFxuICAgIHtcbiAgICAgIHZpZXdUeXBlOiAnc3RyaW5nJyxcbiAgICAgIHNvcnRhYmxlOiBmYWxzZSxcbiAgICAgIHByb3BlcnR5TmFtZTogJ3BhdGgnLFxuICAgICAgdHJhbnNsYXRpb25LZXk6ICdwYXRoJyxcbiAgICB9LFxuICAgIHtcbiAgICAgIHZpZXdUeXBlOiAnc3RyaW5nJyxcbiAgICAgIHNvcnRhYmxlOiBmYWxzZSxcbiAgICAgIHByb3BlcnR5TmFtZTogJ2RhdGFUeXBlJyxcbiAgICAgIHRyYW5zbGF0aW9uS2V5OiAnZGF0YVR5cGUnLFxuICAgIH0sXG4gICAge1xuICAgICAgdmlld1R5cGU6ICdzdHJpbmcnLFxuICAgICAgc29ydGFibGU6IGZhbHNlLFxuICAgICAgcHJvcGVydHlOYW1lOiAnZmllbGRUeXBlJyxcbiAgICAgIHRyYW5zbGF0aW9uS2V5OiAnZmllbGRUeXBlJyxcbiAgICB9LFxuICBdO1xuICByZWFkb25seSBEQVRBX1RZUEVTOiBBcnJheTxTZWFyY2hGaWVsZERhdGFUeXBlPiA9IFtcbiAgICAndGV4dCcsXG4gICAgJ251bWJlcicsXG4gICAgJ2RhdGUnLFxuICAgICdkYXRldGltZScsXG4gICAgJ2Jvb2xlYW4nLFxuICBdO1xuICBwcml2YXRlIHJlYWRvbmx5IEZJRUxEX1RZUEVTOiBBcnJheTxTZWFyY2hGaWVsZEZpZWxkVHlwZT4gPSBbJ3NpbmdsZScsICdyYW5nZSddO1xuICBwcml2YXRlIGNhY2hlZE9iamVjdE1hbmFnZW1lbnRMaXN0U2VhcmNoRmllbGRzOiBBcnJheTxTZWFyY2hGaWVsZD4gPSBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSByZWZyZXNoT2JqZWN0TWFuYWdlbWVudExpc3RTZWFyY2hGaWVsZHMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudWxsPihudWxsKTtcblxuICByZWFkb25seSBvYmplY3RNYW5hZ2VtZW50RmllbGRzJDogT2JzZXJ2YWJsZTxBcnJheTxMaXN0RmllbGQ+PiA9IHRoaXMudHJhbnNsYXRlU2VydmljZVxuICAgIC5zdHJlYW0oJ2tleScpXG4gICAgLnBpcGUoXG4gICAgICBtYXAoKCkgPT5cbiAgICAgICAgdGhpcy5DT0xVTU5TLm1hcChjb2x1bW4gPT4gKHtcbiAgICAgICAgICBrZXk6IGNvbHVtbi5wcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGBzZWFyY2hGaWVsZHNPdmVydmlldy4ke2NvbHVtbi50cmFuc2xhdGlvbktleX1gKSxcbiAgICAgICAgICBzb3J0YWJsZTogY29sdW1uLnNvcnRhYmxlLFxuICAgICAgICAgIC4uLihjb2x1bW4udmlld1R5cGUgJiYge3ZpZXdUeXBlOiBjb2x1bW4udmlld1R5cGV9KSxcbiAgICAgICAgfSkpXG4gICAgICApXG4gICAgKTtcblxuICByZWFkb25seSBvYmplY3RJZCQ6IE9ic2VydmFibGU8c3RyaW5nPiA9IHRoaXMucm91dGUucGFyYW1zLnBpcGUoXG4gICAgbWFwKHBhcmFtcyA9PiBwYXJhbXMuaWQgfHwgJycpLFxuICAgIGZpbHRlcihvYmplY3RJZCA9PiAhIW9iamVjdElkKVxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgb2JqZWN0TWFuYWdlbWVudExpc3RTZWFyY2hGaWVsZHMkOiBPYnNlcnZhYmxlPEFycmF5PGFueT4+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5vYmplY3RJZCQsXG4gICAgdGhpcy5yZWZyZXNoT2JqZWN0TWFuYWdlbWVudExpc3RTZWFyY2hGaWVsZHMkLFxuICBdKS5waXBlKFxuICAgIHN3aXRjaE1hcCgoW29iamVjdElkXSkgPT4gdGhpcy5vYmplY3RNYW5hZ2VtZW50U2VydmljZS5nZXRTZWFyY2hGaWVsZChvYmplY3RJZCkpLFxuICAgIHRhcChvYmplY3RNYW5hZ2VtZW50TGlzdFNlYXJjaEZpZWxkcyA9PiB7XG4gICAgICB0aGlzLm9iamVjdElkJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShvYmplY3RJZCA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBvYmplY3RNYW5hZ2VtZW50TGlzdFNlYXJjaEZpZWxkcyAmJlxuICAgICAgICAgIEFycmF5LmlzQXJyYXkob2JqZWN0TWFuYWdlbWVudExpc3RTZWFyY2hGaWVsZHMpICYmXG4gICAgICAgICAgb2JqZWN0TWFuYWdlbWVudExpc3RTZWFyY2hGaWVsZHMubGVuZ3RoID4gMFxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLnNldERvd25sb2FkKG9iamVjdElkLCBvYmplY3RNYW5hZ2VtZW50TGlzdFNlYXJjaEZpZWxkcyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pLFxuICAgIHRhcChvYmplY3RNYW5hZ2VtZW50TGlzdFNlYXJjaEZpZWxkcyA9PiB7XG4gICAgICB0aGlzLmNhY2hlZE9iamVjdE1hbmFnZW1lbnRMaXN0U2VhcmNoRmllbGRzID0gb2JqZWN0TWFuYWdlbWVudExpc3RTZWFyY2hGaWVsZHM7XG4gICAgICB0aGlzLmxvYWRpbmckLm5leHQoZmFsc2UpO1xuICAgICAgdGhpcy5lbmFibGVJbnB1dCgpO1xuICAgIH0pXG4gICk7XG5cbiAgcmVhZG9ubHkgdHJhbnNsYXRlZE9iamVjdE1hbmFnZW1lbnRMaXN0U2VhcmNoRmllbGRzJDogT2JzZXJ2YWJsZTxBcnJheTxTZWFyY2hGaWVsZENvbHVtblZpZXc+PiA9XG4gICAgY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLm9iamVjdE1hbmFnZW1lbnRMaXN0U2VhcmNoRmllbGRzJCxcbiAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5zdHJlYW0oJ2tleScpLFxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoKFtjb2x1bW5zXSkgPT5cbiAgICAgICAgY29sdW1ucy5tYXAoY29sdW1uID0+ICh7XG4gICAgICAgICAgLi4uY29sdW1uLFxuICAgICAgICAgIHRpdGxlOiBjb2x1bW4udGl0bGUgfHwgJy0nLFxuICAgICAgICAgIGRhdGFUeXBlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICAgIGBzZWFyY2hGaWVsZHMuJHtjb2x1bW4/LmRhdGFUeXBlPy50b0xvd2VyQ2FzZSgpfWBcbiAgICAgICAgICApLFxuICAgICAgICAgIGZpZWxkVHlwZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICAgICBgc2VhcmNoRmllbGRzT3ZlcnZpZXcuJHtjb2x1bW4/LmZpZWxkVHlwZT8udG9Mb3dlckNhc2UoKX1gXG4gICAgICAgICAgKSxcbiAgICAgICAgfSkpXG4gICAgICApXG4gICAgKTtcblxuICByZWFkb25seSBzZWxlY3RlZERhdGFUeXBlSXRlbUluZGV4JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcblxuICByZWFkb25seSBkYXRhVHlwZUl0ZW1zJDogT2JzZXJ2YWJsZTxBcnJheTxMaXN0SXRlbT4+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5zZWxlY3RlZERhdGFUeXBlSXRlbUluZGV4JCxcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc3RyZWFtKCdrZXknKSxcbiAgXSkucGlwZShcbiAgICBtYXAoKFtzZWxlY3RlZERhdGFUeXBlSXRlbUluZGV4XSkgPT5cbiAgICAgIFtcbiAgICAgICAge1xuICAgICAgICAgIGNvbnRlbnQ6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KGBzZWFyY2hGaWVsZERhdGFUeXBlLnNlbGVjdGApLFxuICAgICAgICAgIGtleTogdGhpcy5JTlZBTElEX0tFWSxcbiAgICAgICAgfSxcbiAgICAgICAgLi4udGhpcy5EQVRBX1RZUEVTLm1hcCh0eXBlID0+ICh7XG4gICAgICAgICAgY29udGVudDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoYHNlYXJjaEZpZWxkcy4ke3R5cGV9YCksXG4gICAgICAgICAga2V5OiB0eXBlLnRvVXBwZXJDYXNlKCksXG4gICAgICAgIH0pKSxcbiAgICAgIF0ubWFwKChpdGVtLCBpbmRleCkgPT4gKHtcbiAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgc2VsZWN0ZWQ6IGluZGV4ID09PSBzZWxlY3RlZERhdGFUeXBlSXRlbUluZGV4LFxuICAgICAgfSkpXG4gICAgKVxuICApO1xuXG4gIHJlYWRvbmx5IHNlbGVjdGVkRmllbGRUeXBlSXRlbUluZGV4JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcbiAgcmVhZG9ubHkgZmllbGRUeXBlSXRlbXMkOiBPYnNlcnZhYmxlPEFycmF5PExpc3RJdGVtPj4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLnNlbGVjdGVkRmllbGRUeXBlSXRlbUluZGV4JCxcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc3RyZWFtKCdrZXknKSxcbiAgXSkucGlwZShcbiAgICBtYXAoKFtzZWxlY3RlZEZpZWxkVHlwZUl0ZW1JbmRleF0pID0+XG4gICAgICBbXG4gICAgICAgIHtcbiAgICAgICAgICBjb250ZW50OiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChgc2VhcmNoRmllbGRGaWVsZFR5cGUuc2VsZWN0YCksXG4gICAgICAgICAga2V5OiB0aGlzLklOVkFMSURfS0VZLFxuICAgICAgICB9LFxuICAgICAgICAuLi50aGlzLkZJRUxEX1RZUEVTLm1hcCh0eXBlID0+ICh7XG4gICAgICAgICAgY29udGVudDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoYHNlYXJjaEZpZWxkc092ZXJ2aWV3LiR7dHlwZX1gKSxcbiAgICAgICAgICBrZXk6IHR5cGUudG9VcHBlckNhc2UoKSxcbiAgICAgICAgfSkpLFxuICAgICAgXS5tYXAoKGl0ZW0sIGluZGV4KSA9PiAoe1xuICAgICAgICAuLi5pdGVtLFxuICAgICAgICBzZWxlY3RlZDogaW5kZXggPT09IHNlbGVjdGVkRmllbGRUeXBlSXRlbUluZGV4LFxuICAgICAgfSkpXG4gICAgKVxuICApO1xuXG4gIHJlYWRvbmx5IHZhbGlkS2V5JCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuZm9ybUdyb3VwLnZhbHVlQ2hhbmdlcywgdGhpcy5jdXJyZW50TW9kYWxUeXBlJF0pLnBpcGUoXG4gICAgbWFwKChbZm9ybVZhbHVlcywgY3VycmVudE1vZGFsVHlwZV0pID0+IHtcbiAgICAgIGNvbnN0IGV4aXN0aW5nS2V5cyA9IHRoaXMuY2FjaGVkT2JqZWN0TWFuYWdlbWVudExpc3RTZWFyY2hGaWVsZHMubWFwKGNvbHVtbiA9PiBjb2x1bW4ua2V5KTtcbiAgICAgIHJldHVybiBjdXJyZW50TW9kYWxUeXBlID09PSAnY3JlYXRlJyA/ICFleGlzdGluZ0tleXMuaW5jbHVkZXMoZm9ybVZhbHVlcy5rZXkpIDogdHJ1ZTtcbiAgICB9KSxcbiAgICBzdGFydFdpdGgoZmFsc2UpXG4gICk7XG5cbiAgcmVhZG9ubHkgdmFsaWQkID0gY29tYmluZUxhdGVzdChbdGhpcy5mb3JtR3JvdXAudmFsdWVDaGFuZ2VzLCB0aGlzLnZhbGlkS2V5JF0pLnBpcGUoXG4gICAgbWFwKChbZm9ybVZhbHVlcywgdmFsaWRLZXldKSA9PiAhIShmb3JtVmFsdWVzLnBhdGggJiYgdmFsaWRLZXkpKSxcbiAgICBzdGFydFdpdGgoZmFsc2UpXG4gICk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBvYmplY3RNYW5hZ2VtZW50U2VydmljZTogT2JqZWN0TWFuYWdlbWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNhbml0aXplcjogRG9tU2FuaXRpemVyXG4gICkge31cblxuICBvcGVuTW9kYWwobW9kYWxUeXBlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dNb2RhbCQubmV4dCh0cnVlKTtcbiAgICB0aGlzLmN1cnJlbnRNb2RhbFR5cGUkLm5leHQobW9kYWxUeXBlKTtcblxuICAgIGlmIChtb2RhbFR5cGUgPT09ICdjcmVhdGUnKSB7XG4gICAgICB0aGlzLmZvcm1Hcm91cC5jb250cm9sc1sna2V5J10uZW5hYmxlKCk7XG4gICAgICB0aGlzLnJlc2V0Rm9ybUdyb3VwKCk7XG4gICAgfSBlbHNlIGlmIChtb2RhbFR5cGUgPT09ICdlZGl0Jykge1xuICAgICAgdGhpcy5mb3JtR3JvdXAuY29udHJvbHNbJ2tleSddLmRpc2FibGUoKTtcbiAgICB9XG4gIH1cblxuICBjbG9zZU1vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd01vZGFsJC5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIGRlbGV0ZVJvdyhsaXN0U2VhcmNoRmllbGRSb3dJbmRleDogbnVtYmVyLCBjbGlja0V2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgY2xpY2tFdmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIHRoaXMuc2hvd0RlbGV0ZU1vZGFsJC5uZXh0KHRydWUpO1xuICAgIHRoaXMuZGVsZXRlUm93SW5kZXgkLm5leHQobGlzdFNlYXJjaEZpZWxkUm93SW5kZXgpO1xuICB9XG5cbiAgZGVsZXRlUm93Q29uZmlybWF0aW9uKGxpc3RTZWFyY2hGaWVsZFJvd0luZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBjb2x1bW5LZXkgPSB0aGlzLmdldENvbHVtbktleShsaXN0U2VhcmNoRmllbGRSb3dJbmRleCk7XG5cbiAgICBpZiAoY29sdW1uS2V5KSB7XG4gICAgICB0aGlzLmRpc2FibGVJbnB1dCgpO1xuXG4gICAgICB0aGlzLm9iamVjdElkJFxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgIHN3aXRjaE1hcChvYmplY3RJZCA9PlxuICAgICAgICAgICAgdGhpcy5vYmplY3RNYW5hZ2VtZW50U2VydmljZS5kZWxldGVTZWFyY2hGaWVsZChvYmplY3RJZCwgY29sdW1uS2V5KVxuICAgICAgICAgICksXG4gICAgICAgICAgdGFwKCgpID0+IHRoaXMucmVmcmVzaE9iamVjdE1hbmFnZW1lbnRMaXN0U2VhcmNoRmllbGRzKCkpLFxuICAgICAgICAgIGNhdGNoRXJyb3IoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5lbmFibGVJbnB1dCgpO1xuICAgICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIGdldENvbHVtbktleShsaXN0U2VhcmNoRmllbGRSb3dJbmRleDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVkT2JqZWN0TWFuYWdlbWVudExpc3RTZWFyY2hGaWVsZHNbbGlzdFNlYXJjaEZpZWxkUm93SW5kZXhdPy5rZXk7XG4gIH1cblxuICBtb3ZlUm93KFxuICAgIGxpc3RTZWFyY2hGaWVsZFJvd0luZGV4OiBudW1iZXIsXG4gICAgbW92ZVVwOiBib29sZWFuLFxuICAgIGNsaWNrRXZlbnQ6IE1vdXNlRXZlbnQsXG4gICAgb2JqZWN0SWQ6IHN0cmluZ1xuICApOiB2b2lkIHtcbiAgICBjb25zdCBvYmplY3RNYW5hZ2VtZW50TGlzdFNlYXJjaEZpZWxkcyA9IFsuLi50aGlzLmNhY2hlZE9iamVjdE1hbmFnZW1lbnRMaXN0U2VhcmNoRmllbGRzXTtcbiAgICBjb25zdCBsaXN0U2VhcmNoRmllbGRSb3cgPSBvYmplY3RNYW5hZ2VtZW50TGlzdFNlYXJjaEZpZWxkc1tsaXN0U2VhcmNoRmllbGRSb3dJbmRleF07XG5cbiAgICBjbGlja0V2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGNvbnN0IGxpc3RTZWFyY2hGaWVsZEluZGV4ID0gb2JqZWN0TWFuYWdlbWVudExpc3RTZWFyY2hGaWVsZHMuZmluZEluZGV4KFxuICAgICAgZmllbGQgPT4gZmllbGQua2V5ID09PSBsaXN0U2VhcmNoRmllbGRSb3cua2V5XG4gICAgKTtcbiAgICBjb25zdCBmb3VuZExpc3RTZWFyY2hGaWVsZCA9IHsuLi5vYmplY3RNYW5hZ2VtZW50TGlzdFNlYXJjaEZpZWxkc1tsaXN0U2VhcmNoRmllbGRJbmRleF19O1xuICAgIGNvbnN0IGZpbHRlcmVkTGlzdFNlYXJjaEZpZWxkID0gb2JqZWN0TWFuYWdlbWVudExpc3RTZWFyY2hGaWVsZHMuZmlsdGVyKFxuICAgICAgZmllbGQgPT4gZmllbGQua2V5ICE9PSBsaXN0U2VhcmNoRmllbGRSb3cua2V5XG4gICAgKTtcbiAgICBjb25zdCBtdWx0aXBsZUxpc3RTZWFyY2hGaWVsZHMgPSBvYmplY3RNYW5hZ2VtZW50TGlzdFNlYXJjaEZpZWxkcy5sZW5ndGggPiAxO1xuXG4gICAgaWYgKG11bHRpcGxlTGlzdFNlYXJjaEZpZWxkcyAmJiBtb3ZlVXAgJiYgbGlzdFNlYXJjaEZpZWxkSW5kZXggPiAwKSB7XG4gICAgICBjb25zdCBsaXN0U2VhcmNoRmllbGRCZWZvcmVLZXkgPSBgJHtcbiAgICAgICAgb2JqZWN0TWFuYWdlbWVudExpc3RTZWFyY2hGaWVsZHNbbGlzdFNlYXJjaEZpZWxkSW5kZXggLSAxXS5rZXlcbiAgICAgIH1gO1xuICAgICAgY29uc3QgbGlzdFNlYXJjaEZpZWxkQmVmb3JlSW5kZXggPSBmaWx0ZXJlZExpc3RTZWFyY2hGaWVsZC5maW5kSW5kZXgoXG4gICAgICAgIGZpZWxkID0+IGZpZWxkLmtleSA9PT0gbGlzdFNlYXJjaEZpZWxkQmVmb3JlS2V5XG4gICAgICApO1xuICAgICAgZmlsdGVyZWRMaXN0U2VhcmNoRmllbGQuc3BsaWNlKGxpc3RTZWFyY2hGaWVsZEJlZm9yZUluZGV4LCAwLCBmb3VuZExpc3RTZWFyY2hGaWVsZCk7XG4gICAgICB0aGlzLnVwZGF0ZU9iamVjdE1hbmFnZW1lbnRMaXN0U2VhcmNoRmllbGQob2JqZWN0SWQsIGZpbHRlcmVkTGlzdFNlYXJjaEZpZWxkKTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgbXVsdGlwbGVMaXN0U2VhcmNoRmllbGRzICYmXG4gICAgICAhbW92ZVVwICYmXG4gICAgICBsaXN0U2VhcmNoRmllbGRJbmRleCA8IG9iamVjdE1hbmFnZW1lbnRMaXN0U2VhcmNoRmllbGRzLmxlbmd0aFxuICAgICkge1xuICAgICAgY29uc3QgY2FzZUxpc3RDb2x1bW5BZnRlcktleSA9IGAke1xuICAgICAgICBvYmplY3RNYW5hZ2VtZW50TGlzdFNlYXJjaEZpZWxkc1tsaXN0U2VhcmNoRmllbGRJbmRleCArIDFdLmtleVxuICAgICAgfWA7XG4gICAgICBjb25zdCBjYXNlTGlzdENvbHVtbkFmdGVySW5kZXggPSBmaWx0ZXJlZExpc3RTZWFyY2hGaWVsZC5maW5kSW5kZXgoXG4gICAgICAgIGZpZWxkID0+IGZpZWxkLmtleSA9PT0gY2FzZUxpc3RDb2x1bW5BZnRlcktleVxuICAgICAgKTtcbiAgICAgIGZpbHRlcmVkTGlzdFNlYXJjaEZpZWxkLnNwbGljZShjYXNlTGlzdENvbHVtbkFmdGVySW5kZXggKyAxLCAwLCBmb3VuZExpc3RTZWFyY2hGaWVsZCk7XG4gICAgICB0aGlzLnVwZGF0ZU9iamVjdE1hbmFnZW1lbnRMaXN0U2VhcmNoRmllbGQob2JqZWN0SWQsIGZpbHRlcmVkTGlzdFNlYXJjaEZpZWxkKTtcbiAgICB9XG4gIH1cblxuICBzYXZlTGlzdFNlYXJjaEZpZWxkcygpOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVJbnB1dCgpO1xuXG4gICAgdGhpcy5jdXJyZW50TW9kYWxUeXBlJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShjdXJyZW50TW9kYWxUeXBlID0+IHtcbiAgICAgIGlmIChjdXJyZW50TW9kYWxUeXBlID09PSAnY3JlYXRlJykge1xuICAgICAgICB0aGlzLmFkZFNlYXJjaEZpZWxkKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnVwZGF0ZVNlYXJjaEZpZWxkKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb2x1bW5Sb3dDbGlja2VkKHJvdzoge2tleTogc3RyaW5nfSk6IHZvaWQge1xuICAgIHRoaXMucmVzZXRGb3JtR3JvdXAoKTtcblxuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuZGF0YVR5cGVJdGVtcyQsIHRoaXMuZmllbGRUeXBlSXRlbXMkXSlcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKChbZGF0YVR5cGVJdGVtcywgZmllbGRUeXBlSXRlbXNdKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuY2FjaGVkT2JqZWN0TWFuYWdlbWVudExpc3RTZWFyY2hGaWVsZHMuZmluZChcbiAgICAgICAgICBjYWNoZWRDb2x1bW4gPT4gY2FjaGVkQ29sdW1uLmtleSA9PT0gcm93LmtleVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBkYXRhVHlwZUl0ZW0gPSBkYXRhVHlwZUl0ZW1zLmZpbmQoaXRlbSA9PiBpdGVtLmtleSA9PT0gY29sdW1uLmRhdGFUeXBlKTtcbiAgICAgICAgY29uc3QgZGF0YVR5cGVJdGVtSW5kZXggPSBkYXRhVHlwZUl0ZW1zLmZpbmRJbmRleChpdGVtID0+IGl0ZW0ua2V5ID09PSBjb2x1bW4uZGF0YVR5cGUpO1xuXG4gICAgICAgIGNvbnN0IGZpZWxkVHlwZUl0ZW0gPSBmaWVsZFR5cGVJdGVtcy5maW5kKGl0ZW0gPT4gaXRlbS5rZXkgPT09IGNvbHVtbi5maWVsZFR5cGUpO1xuICAgICAgICBjb25zdCBmaWVsZFR5cGVJdGVtSW5kZXggPSBmaWVsZFR5cGVJdGVtcy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLmtleSA9PT0gY29sdW1uLmZpZWxkVHlwZSk7XG5cbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGFUeXBlSXRlbUluZGV4JC5uZXh0KGRhdGFUeXBlSXRlbUluZGV4KTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZpZWxkVHlwZUl0ZW1JbmRleCQubmV4dChmaWVsZFR5cGVJdGVtSW5kZXgpO1xuXG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLnBhdGNoVmFsdWUoe1xuICAgICAgICAgIGtleTogY29sdW1uLmtleSxcbiAgICAgICAgICB0aXRsZTogY29sdW1uLnRpdGxlLFxuICAgICAgICAgIHBhdGg6IGNvbHVtbi5wYXRoLFxuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBkYXRhVHlwZTogey4uLmRhdGFUeXBlSXRlbX0sXG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIGZpZWxkVHlwZTogey4uLmZpZWxkVHlwZUl0ZW19LFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLm9wZW5Nb2RhbCgnZWRpdCcpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZU9iamVjdE1hbmFnZW1lbnRMaXN0U2VhcmNoRmllbGQoXG4gICAgb2JqZWN0SWQ6IHN0cmluZyxcbiAgICBzZWFyY2hGaWVsZDogQXJyYXk8U2VhcmNoRmllbGQ+XG4gICk6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZUlucHV0KCk7XG4gICAgdGhpcy5vYmplY3RNYW5hZ2VtZW50U2VydmljZVxuICAgICAgLnB1dFNlYXJjaEZpZWxkcyhvYmplY3RJZCwgc2VhcmNoRmllbGQpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnJlZnJlc2hPYmplY3RNYW5hZ2VtZW50TGlzdFNlYXJjaEZpZWxkcygpO1xuICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGBsaXN0LXNlYXJjaC1maWVsZHMke29iamVjdElkfWAsIG51bGwpO1xuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5lbmFibGVJbnB1dCgpO1xuICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkU2VhcmNoRmllbGQoKTogdm9pZCB7XG4gICAgY29uc3QgZm9ybVZhbHVlID0gdGhpcy5mb3JtR3JvdXAudmFsdWU7XG5cbiAgICB0aGlzLm9iamVjdElkJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIHN3aXRjaE1hcChvYmplY3RJZCA9PlxuICAgICAgICAgIHRoaXMub2JqZWN0TWFuYWdlbWVudFNlcnZpY2UucG9zdFNlYXJjaEZpZWxkKFxuICAgICAgICAgICAgb2JqZWN0SWQsXG4gICAgICAgICAgICB0aGlzLm1hcEZvcm1WYWx1ZXNUb0NvbHVtbihmb3JtVmFsdWUpXG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuY2xvc2VNb2RhbCgpO1xuICAgICAgICAgIHRoaXMucmVmcmVzaE9iamVjdE1hbmFnZW1lbnRMaXN0U2VhcmNoRmllbGRzKCk7XG4gICAgICAgIH0pLFxuICAgICAgICBjYXRjaEVycm9yKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmVuYWJsZUlucHV0KCk7XG4gICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTZWFyY2hGaWVsZCgpOiB2b2lkIHtcbiAgICB0aGlzLm9iamVjdElkJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIHN3aXRjaE1hcChvYmplY3RJZCA9PlxuICAgICAgICAgIHRoaXMub2JqZWN0TWFuYWdlbWVudFNlcnZpY2UucHV0U2VhcmNoRmllbGQoXG4gICAgICAgICAgICBvYmplY3RJZCxcbiAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwLnZhbHVlLmtleSxcbiAgICAgICAgICAgIHRoaXMubWFwRm9ybVZhbHVlc1RvQ29sdW1uKHRoaXMuZm9ybUdyb3VwLnZhbHVlKVxuICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmNsb3NlTW9kYWwoKTtcbiAgICAgICAgICB0aGlzLnJlZnJlc2hPYmplY3RNYW5hZ2VtZW50TGlzdFNlYXJjaEZpZWxkcygpO1xuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5lbmFibGVJbnB1dCgpO1xuICAgICAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0RG93bmxvYWQob2JqZWN0SWQ6IHN0cmluZywgT2JqZWN0TWFuYWdlbWVudFNlYXJjaEZpZWxkczogQXJyYXk8U2VhcmNoRmllbGQ+KTogdm9pZCB7XG4gICAgdGhpcy5kb3dubG9hZE5hbWUkLm5leHQoYCR7b2JqZWN0SWR9Lmpzb25gKTtcbiAgICB0aGlzLmRvd25sb2FkVXJsJC5uZXh0KFxuICAgICAgdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFVybChcbiAgICAgICAgJ2RhdGE6dGV4dC9qc29uO2NoYXJzZXQ9VVRGLTgsJyArXG4gICAgICAgICAgZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KE9iamVjdE1hbmFnZW1lbnRTZWFyY2hGaWVsZHMsIG51bGwsIDIpKVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGRpc2FibGVJbnB1dCgpOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVJbnB1dCQubmV4dCh0cnVlKTtcbiAgICB0aGlzLmZvcm1Hcm91cC5kaXNhYmxlKCk7XG4gIH1cblxuICBwcml2YXRlIGVuYWJsZUlucHV0KCk6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZUlucHV0JC5uZXh0KGZhbHNlKTtcbiAgICB0aGlzLmZvcm1Hcm91cC5lbmFibGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVmcmVzaE9iamVjdE1hbmFnZW1lbnRMaXN0U2VhcmNoRmllbGRzKCk6IHZvaWQge1xuICAgIHRoaXMucmVmcmVzaE9iamVjdE1hbmFnZW1lbnRMaXN0U2VhcmNoRmllbGRzJC5uZXh0KG51bGwpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNldEZvcm1Hcm91cCgpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm1Hcm91cC5yZXNldCgpO1xuICAgIHRoaXMuc2VsZWN0ZWREYXRhVHlwZUl0ZW1JbmRleCQubmV4dCgwKTtcbiAgICB0aGlzLnNlbGVjdGVkRmllbGRUeXBlSXRlbUluZGV4JC5uZXh0KDApO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBGb3JtVmFsdWVzVG9Db2x1bW4oZm9ybVZhbHVlOiBhbnkpOiBTZWFyY2hGaWVsZCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGtleTogZm9ybVZhbHVlLmtleSxcbiAgICAgIHRpdGxlOiBmb3JtVmFsdWUudGl0bGUgfHwgJycsXG4gICAgICBwYXRoOiBmb3JtVmFsdWUucGF0aCxcbiAgICAgIGRhdGFUeXBlOiBmb3JtVmFsdWUuZGF0YVR5cGUua2V5LFxuICAgICAgZmllbGRUeXBlOiBmb3JtVmFsdWUuZmllbGRUeXBlLmtleSxcbiAgICB9O1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyMyBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG48bmctY29udGFpbmVyXG4gICpuZ0lmPVwie1xuICAgIHNlYXJjaEZpZWxkczogdHJhbnNsYXRlZE9iamVjdE1hbmFnZW1lbnRMaXN0U2VhcmNoRmllbGRzJCB8IGFzeW5jLFxuICAgIGZpZWxkczogb2JqZWN0TWFuYWdlbWVudEZpZWxkcyQgfCBhc3luYyxcbiAgICBvYmplY3RJZDogb2JqZWN0SWQkIHwgYXN5bmMsXG4gICAgZG93bmxvYWRVcmw6IGRvd25sb2FkVXJsJCB8IGFzeW5jLFxuICAgIGRvd25sb2FkTmFtZTogZG93bmxvYWROYW1lJCB8IGFzeW5jLFxuICAgIGxvYWRpbmc6IGxvYWRpbmckIHwgYXN5bmNcbiAgfSBhcyBvYnNcIlxuPlxuICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkIHByLTAgcGwtMFwiPlxuICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXJpZ2h0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwIG10LW0zcHggbWItMyBtci0yXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJidXR0b25zOyBjb250ZXh0OiB7b2JzOiBvYnN9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW9icy5sb2FkaW5nOyBlbHNlIGxvYWRpbmdcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJvYnMuc2VhcmNoRmllbGRzPy5sZW5ndGggPiAwOyBlbHNlIG5vQ29uZmlnV2FybmluZ1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibGlzdDsgY29udGV4dDoge29iczogb2JzfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNyZWF0ZUVkaXRNb2RhbFwiPjwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkZWxldGVNb2RhbFwiPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI2J1dHRvbnMgbGV0LW9icz1cIm9ic1wiPlxuICA8YVxuICAgIGNkc0xpbmtcbiAgICBjbGFzcz1cImNlbnRlci1saW5rXCJcbiAgICBbaHJlZl09XCJvYnMuZG93bmxvYWRVcmxcIlxuICAgIFtkb3dubG9hZF09XCJvYnMuZG93bmxvYWROYW1lXCJcbiAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAhb2JzLmRvd25sb2FkVXJsIHx8XG4gICAgICAhb2JzLmRvd25sb2FkTmFtZSB8fFxuICAgICAgb2JzLnNlYXJjaEZpZWxkcz8ubGVuZ3RoIDwgMSB8fFxuICAgICAgb2JzLmRpc2FibGVJbnB1dCB8fFxuICAgICAgb2JzLmxvYWRpbmdcbiAgICBcIlxuICA+XG4gICAge3sgJ3NlYXJjaEZpZWxkc092ZXJ2aWV3LmRvd25sb2FkJyB8IHRyYW5zbGF0ZSB9fVxuICA8L2E+XG4gIDxidXR0b25cbiAgICAoY2xpY2spPVwib3Blbk1vZGFsKCdjcmVhdGUnKVwiXG4gICAgY2RzQnV0dG9uPVwicHJpbWFyeVwiXG4gICAgc2l6ZT1cIm1kXCJcbiAgICBbZGlzYWJsZWRdPVwib2JzLmxvYWRpbmdcIlxuICAgIGNsYXNzPVwibWwtM1wiXG4gID5cbiAgICB7eyAnc2VhcmNoRmllbGRzT3ZlcnZpZXcuYWRkJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDxzdmcgY2xhc3M9XCJjZHMtLWJ0bl9faWNvblwiIGNkc0ljb249XCJhZGRcIiBzaXplPVwiMTZcIj48L3N2Zz5cbiAgPC9idXR0b24+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI21vdmVSb3dCdXR0b25zIGxldC1pbmRleD1cImluZGV4XCIgbGV0LWxlbmd0aD1cImxlbmd0aFwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJtb3ZlLXJvdy1idXR0b25zXCJcbiAgICAqbmdJZj1cIntcbiAgICAgIGRpc2FibGVJbnB1dDogZGlzYWJsZUlucHV0JCB8IGFzeW5jLFxuICAgICAgb2JqZWN0SWQ6IG9iamVjdElkJCB8IGFzeW5jXG4gICAgfSBhcyBvYnNcIlxuICA+XG4gICAgPGlcbiAgICAgIGNsYXNzPVwibWRpIG1kaS1kZWxldGUgYnRuIGJ0bi1vdXRsaW5lLWRhbmdlciBtci0xXCJcbiAgICAgIChjbGljayk9XCJkZWxldGVSb3coaW5kZXgsICRldmVudClcIlxuICAgICAgW25nQ2xhc3NdPVwieydkaXNhYmxlZCBkaXNhYmxlZC1tb3ZlLXJvdy1idXR0b24nOiBvYnMuZGlzYWJsZUlucHV0fVwiXG4gICAgPjwvaT5cbiAgICA8aVxuICAgICAgY2xhc3M9XCJtZGkgbWRpLWFycm93LXVwLWJvbGQgYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgbXItMVwiXG4gICAgICAoY2xpY2spPVwibW92ZVJvdyhpbmRleCwgdHJ1ZSwgJGV2ZW50LCBvYnMub2JqZWN0SWQpXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsnZGlzYWJsZWQgZGlzYWJsZWQtbW92ZS1yb3ctYnV0dG9uJzogaW5kZXggPT09IDAgfHwgb2JzLmRpc2FibGVJbnB1dH1cIlxuICAgID48L2k+XG4gICAgPGlcbiAgICAgIGNsYXNzPVwibWRpIG1kaS1hcnJvdy1kb3duLWJvbGQgYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeVwiXG4gICAgICAoY2xpY2spPVwibW92ZVJvdyhpbmRleCwgZmFsc2UsICRldmVudCwgb2JzLm9iamVjdElkKVwiXG4gICAgICBbbmdDbGFzc109XCJ7J2Rpc2FibGVkIGRpc2FibGVkLW1vdmUtcm93LWJ1dHRvbic6IGluZGV4ID09PSBsZW5ndGggLSAxIHx8IG9icy5kaXNhYmxlSW5wdXR9XCJcbiAgICA+PC9pPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbGlzdCBsZXQtb2JzPVwib2JzXCI+XG4gIDx2YWx0aW1vLWxpc3RcbiAgICBbaXRlbXNdPVwib2JzLnNlYXJjaEZpZWxkc1wiXG4gICAgW2ZpZWxkc109XCJvYnMuZmllbGRzXCJcbiAgICBbdmlld01vZGVdPVwiZmFsc2VcIlxuICAgIFtoZWFkZXJdPVwiZmFsc2VcIlxuICAgICpuZ0lmPVwib2JzLnNlYXJjaEZpZWxkczsgZWxzZSBsb2FkaW5nXCJcbiAgICBbbGFzdENvbHVtblRlbXBsYXRlXT1cIm1vdmVSb3dCdXR0b25zVGVtcGxhdGVSZWZcIlxuICAgIChyb3dDbGlja2VkKT1cImNvbHVtblJvd0NsaWNrZWQoJGV2ZW50KVwiXG4gID5cbiAgPC92YWx0aW1vLWxpc3Q+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2NyZWF0ZUVkaXRNb2RhbD5cbiAgPGNkcy1tb2RhbFxuICAgIHZhbHRpbW9DZHNNb2RhbFxuICAgICpuZ0lmPVwie1xuICAgICAgdHlwZTogY3VycmVudE1vZGFsVHlwZSQgfCBhc3luYyxcbiAgICAgIHNob3c6IHNob3dNb2RhbCQgfCBhc3luYyxcbiAgICAgIHZhbGlkOiB2YWxpZCQgfCBhc3luYyxcbiAgICAgIGRpc2FibGVJbnB1dDogZGlzYWJsZUlucHV0JCB8IGFzeW5jLFxuICAgICAgdmFsaWRLZXk6IHZhbGlkS2V5JCB8IGFzeW5jXG4gICAgfSBhcyBtb2RhbE9ic1wiXG4gICAgW29wZW5dPVwibW9kYWxPYnMuc2hvd1wiXG4gID5cbiAgICA8Y2RzLW1vZGFsLWhlYWRlciBbc2hvd0Nsb3NlQnV0dG9uXT1cInRydWVcIiAoY2xvc2VTZWxlY3QpPVwiY2xvc2VNb2RhbCgpXCI+XG4gICAgICA8aDMgY2RzTW9kYWxIZWFkZXJIZWFkaW5nPlxuICAgICAgICB7e1xuICAgICAgICAgIG1vZGFsT2JzLnR5cGUgPT09ICdjcmVhdGUnXG4gICAgICAgICAgICA/ICgnc2VhcmNoRmllbGRzT3ZlcnZpZXcuYWRkJyB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICAgIDogKCdzZWFyY2hGaWVsZHNPdmVydmlldy5lZGl0JyB8IHRyYW5zbGF0ZSlcbiAgICAgICAgfX1cbiAgICAgIDwvaDM+XG4gICAgPC9jZHMtbW9kYWwtaGVhZGVyPlxuICAgIDxzZWN0aW9uIGNkc01vZGFsQ29udGVudD5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtb2RhbENvbnRlbnQ7IGNvbnRleHQ6IHttb2RhbE9iczogbW9kYWxPYnN9XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9zZWN0aW9uPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtb2RhbEZvb3RlcjsgY29udGV4dDoge21vZGFsT2JzOiBtb2RhbE9ic31cIj48L25nLWNvbnRhaW5lcj5cbiAgPC9jZHMtbW9kYWw+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI21vZGFsQ29udGVudCBsZXQtbW9kYWxPYnM9XCJtb2RhbE9ic1wiPlxuICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiIGNsYXNzPVwibGlzdC1jb2x1bW4tZm9ybVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjZHMtLXRleHQtaW5wdXRfX2ZpZWxkLXdyYXBwZXJcIj5cbiAgICAgIDxjZHMtbGFiZWwgW2Rpc2FibGVkXT1cIm1vZGFsT2JzLmRpc2FibGVJbnB1dFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsLXdpdGgtdG9vbHRpcFwiPlxuICAgICAgICAgIHt7ICdzZWFyY2hGaWVsZHNPdmVydmlldy50aXRsZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8di10b29sdGlwLWljb25cbiAgICAgICAgICAgIFt0b29sdGlwXT1cIidzZWFyY2hGaWVsZHNPdmVydmlld1Rvb2x0aXBzLnRpdGxlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwibW9kYWxPYnMuZGlzYWJsZUlucHV0XCJcbiAgICAgICAgICA+PC92LXRvb2x0aXAtaWNvbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8aW5wdXQgY2RzVGV4dCBmb3JtQ29udHJvbE5hbWU9XCJ0aXRsZVwiIC8+XG4gICAgICA8L2Nkcy1sYWJlbD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY2RzLS10ZXh0LWlucHV0X19maWVsZC13cmFwcGVyXCI+XG4gICAgICA8Y2RzLWxhYmVsXG4gICAgICAgIFtkaXNhYmxlZF09XCJtb2RhbE9icy5kaXNhYmxlSW5wdXQgfHwgbW9kYWxPYnMudHlwZSA9PT0gJ2VkaXQnXCJcbiAgICAgICAgW2ludmFsaWRdPVwibW9kYWxPYnMudmFsaWRLZXkgPT09IGZhbHNlXCJcbiAgICAgICAgW2ludmFsaWRUZXh0XT1cIidzZWFyY2hGaWVsZHNPdmVydmlldy51bmlxdWVLZXlXYXJuaW5nJyB8IHRyYW5zbGF0ZVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWwtd2l0aC10b29sdGlwXCI+XG4gICAgICAgICAge3sgJ3NlYXJjaEZpZWxkc092ZXJ2aWV3LmtleScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8di10b29sdGlwLWljb25cbiAgICAgICAgICAgIFt0b29sdGlwXT1cIidzZWFyY2hGaWVsZHNPdmVydmlld1Rvb2x0aXBzLmtleScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm1vZGFsT2JzLmRpc2FibGVJbnB1dFwiXG4gICAgICAgICAgPjwvdi10b29sdGlwLWljb24+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGlucHV0IGNkc1RleHQgZm9ybUNvbnRyb2xOYW1lPVwia2V5XCIgW2ludmFsaWRdPVwibW9kYWxPYnMudmFsaWRLZXkgPT09IGZhbHNlXCIgLz5cbiAgICAgIDwvY2RzLWxhYmVsPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjZHMtLXRleHQtaW5wdXRfX2ZpZWxkLXdyYXBwZXJcIj5cbiAgICAgIDxjZHMtbGFiZWwgW2Rpc2FibGVkXT1cIm1vZGFsT2JzLmRpc2FibGVJbnB1dFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsLXdpdGgtdG9vbHRpcFwiPlxuICAgICAgICAgIHt7ICdzZWFyY2hGaWVsZHNPdmVydmlldy5wYXRoJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDx2LXRvb2x0aXAtaWNvblxuICAgICAgICAgICAgW3Rvb2x0aXBdPVwiJ3NlYXJjaEZpZWxkc092ZXJ2aWV3VG9vbHRpcHMub2JqZWN0c0FwaVBhdGgnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtb2RhbE9icy5kaXNhYmxlSW5wdXRcIlxuICAgICAgICAgID48L3YtdG9vbHRpcC1pY29uPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxpbnB1dCBjZHNUZXh0IGZvcm1Db250cm9sTmFtZT1cInBhdGhcIiAvPlxuICAgICAgPC9jZHMtbGFiZWw+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNkcy0tdGV4dC1pbnB1dF9fZmllbGQtd3JhcHBlclwiPlxuICAgICAgPGNkcy1sYWJlbCBbZGlzYWJsZWRdPVwibW9kYWxPYnMuZGlzYWJsZUlucHV0XCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWwtd2l0aC10b29sdGlwIHNlbGVjdC1sYWJlbFwiPlxuICAgICAgICAgIHt7ICdzZWFyY2hGaWVsZHNPdmVydmlldy5kYXRhVHlwZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8di10b29sdGlwLWljb25cbiAgICAgICAgICAgIFt0b29sdGlwXT1cIidzZWFyY2hGaWVsZHNPdmVydmlld1Rvb2x0aXBzLmRhdGFUeXBlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwibW9kYWxPYnMuZGlzYWJsZUlucHV0XCJcbiAgICAgICAgICA+PC92LXRvb2x0aXAtaWNvbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8Y2RzLWRyb3Bkb3duIGZvcm1Db250cm9sTmFtZT1cImRhdGFUeXBlXCIgW2Rpc2FibGVkXT1cIm1vZGFsT2JzLmRpc2FibGVJbnB1dFwiPlxuICAgICAgICAgIDxjZHMtZHJvcGRvd24tbGlzdCBbaXRlbXNdPVwiZGF0YVR5cGVJdGVtcyQgfCBhc3luY1wiPjwvY2RzLWRyb3Bkb3duLWxpc3Q+XG4gICAgICAgIDwvY2RzLWRyb3Bkb3duPlxuICAgICAgPC9jZHMtbGFiZWw+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNkcy0tdGV4dC1pbnB1dF9fZmllbGQtd3JhcHBlclwiPlxuICAgICAgPGNkcy1sYWJlbCBbZGlzYWJsZWRdPVwibW9kYWxPYnMuZGlzYWJsZUlucHV0XCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWwtd2l0aC10b29sdGlwIHNlbGVjdC1sYWJlbFwiPlxuICAgICAgICAgIHt7ICdzZWFyY2hGaWVsZHNPdmVydmlldy5maWVsZFR5cGUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPHYtdG9vbHRpcC1pY29uXG4gICAgICAgICAgICBbdG9vbHRpcF09XCInc2VhcmNoRmllbGRzT3ZlcnZpZXdUb29sdGlwcy5maWVsZFR5cGUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJtb2RhbE9icy5kaXNhYmxlSW5wdXRcIlxuICAgICAgICAgID48L3YtdG9vbHRpcC1pY29uPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxjZHMtZHJvcGRvd24gZm9ybUNvbnRyb2xOYW1lPVwiZmllbGRUeXBlXCIgW2Rpc2FibGVkXT1cIm1vZGFsT2JzLmRpc2FibGVJbnB1dFwiPlxuICAgICAgICAgIDxjZHMtZHJvcGRvd24tbGlzdCBbaXRlbXNdPVwiZmllbGRUeXBlSXRlbXMkIHwgYXN5bmNcIj48L2Nkcy1kcm9wZG93bi1saXN0PlxuICAgICAgICA8L2Nkcy1kcm9wZG93bj5cbiAgICAgIDwvY2RzLWxhYmVsPlxuICAgIDwvZGl2PlxuICA8L2Zvcm0+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI21vZGFsRm9vdGVyIGxldC1tb2RhbE9icz1cIm1vZGFsT2JzXCI+XG4gIDxjZHMtbW9kYWwtZm9vdGVyPlxuICAgIDxuZy1jb250YWluZXI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNkc0J1dHRvbj1cInNlY29uZGFyeVwiXG4gICAgICAgIFthdHRyLm1vZGFsLXByaW1hcnktZm9jdXNdPVwidHJ1ZVwiXG4gICAgICAgIChjbGljayk9XCJjbG9zZU1vZGFsKClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwibW9kYWxPYnMuZGlzYWJsZUlucHV0XCJcbiAgICAgID5cbiAgICAgICAge3sgJ3NlYXJjaEZpZWxkc092ZXJ2aWV3LmNsb3NlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNkc0J1dHRvbj1cInByaW1hcnlcIlxuICAgICAgICBbYXR0ci5tb2RhbC1wcmltYXJ5LWZvY3VzXT1cInRydWVcIlxuICAgICAgICBbZGlzYWJsZWRdPVwibW9kYWxPYnMudmFsaWQgPT09IGZhbHNlXCJcbiAgICAgICAgKGNsaWNrKT1cInNhdmVMaXN0U2VhcmNoRmllbGRzKClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiXG4gICAgICAgICAgbW9kYWxPYnMuZGlzYWJsZUlucHV0IHx8IG1vZGFsT2JzLnZhbGlkID09PSBmYWxzZSB8fCBtb2RhbE9icy52YWxpZEtleSA9PT0gZmFsc2VcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAge3sgJ3NlYXJjaEZpZWxkc092ZXJ2aWV3LnNhdmUnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9jZHMtbW9kYWwtZm9vdGVyPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNkZWxldGVNb2RhbD5cbiAgPHZhbHRpbW8tY29uZmlybWF0aW9uLW1vZGFsXG4gICAgW3Nob3dNb2RhbFN1YmplY3QkXT1cInNob3dEZWxldGVNb2RhbCRcIlxuICAgIFtvdXRwdXRPbkNvbmZpcm1dPVwiZGVsZXRlUm93SW5kZXgkIHwgYXN5bmNcIlxuICAgIChjb25maXJtRXZlbnQpPVwiZGVsZXRlUm93Q29uZmlybWF0aW9uKCRldmVudClcIlxuICAgIGNvbmZpcm1CdXR0b25UZXh0VHJhbnNsYXRpb25LZXk9XCJzZWFyY2hGaWVsZHNPdmVydmlldy5kZWxldGVTZWFyY2hGaWVsZFwiXG4gICAgdGl0bGVUcmFuc2xhdGlvbktleT1cInNlYXJjaEZpZWxkc092ZXJ2aWV3LnNlYXJjaEZpZWxkXCJcbiAgICBjb250ZW50VHJhbnNsYXRpb25LZXk9XCJzZWFyY2hGaWVsZHNPdmVydmlldy5kZWxldGVTZWFyY2hGaWVsZENvbmZpcm1hdGlvblwiXG4gID48L3ZhbHRpbW8tY29uZmlybWF0aW9uLW1vZGFsPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNub0NvbmZpZ1dhcm5pbmc+XG4gIDxkaXYgY2xhc3M9XCJwbC0yIHByLTIgcGItMlwiPlxuICAgIDxjZHMtbm90aWZpY2F0aW9uXG4gICAgICBbbm90aWZpY2F0aW9uT2JqXT1cIntcbiAgICAgICAgdHlwZTogJ2luZm8nLFxuICAgICAgICB0aXRsZTogJ3NlYXJjaEZpZWxkc092ZXJ2aWV3Lm5vU2VhcmNoRmllbGRzQ29uZmlndXJlZFdhcm5pbmdUaXRsZScgfCB0cmFuc2xhdGUsXG4gICAgICAgIHNob3dDbG9zZTogZmFsc2VcbiAgICAgIH1cIlxuICAgID5cbiAgICA8L2Nkcy1ub3RpZmljYXRpb24+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNsb2FkaW5nPlxuICA8ZGl2IGNsYXNzPVwibG9hZGluZy1pY29uXCI+PGNkcy1sb2FkaW5nPjwvY2RzLWxvYWRpbmc+PC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -56,11 +56,11 @@ export class ObjectManagementListComponent {
|
|
|
56
56
|
key,
|
|
57
57
|
})));
|
|
58
58
|
}
|
|
59
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ObjectManagementListComponent, deps: [{ token: i1.ObjectManagementService }, { token: i2.ObjectManagementStateService }, { token: i3.TranslateService }, { token: i4.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
60
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ObjectManagementListComponent, selector: "valtimo-object-management-list", ngImport: i0, template: "<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content pt-0\" *ngIf=\"{loading: loading$ | async} as obs\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <div class=\"text-right mt-m3px mb-3\">\n <button (click)=\"showUploadModal()\" class=\"btn btn-secondary btn-space\">\n <i class=\"icon mdi mdi-upload mr-1\"></i>\n {{ 'objectManagement.uploadObjecttype' | translate }}\n </button>\n <button (click)=\"showAddModal()\" type=\"button\" class=\"btn btn-space btn-primary mr-0\">\n <i class=\"icon mdi mdi-plus mr-1\"></i>\n {{ 'objectManagement.createObjecttype' | translate }}\n </button>\n </div>\n <ng-container *ngTemplateOutlet=\"list; context: {obs: obs}\"></ng-container>\n </div>\n </div>\n</div>\n\n<ng-template #list let-obs=\"obs\">\n <ng-container *ngIf=\"fields$ | async as fields\">\n <ng-container *ngIf=\"objecttypesInstances$ | async as objecttypesInstances\">\n <valtimo-widget *ngIf=\"obs.loading === false\">\n <valtimo-list\n [items]=\"objecttypesInstances\"\n [fields]=\"fields\"\n [viewMode]=\"true\"\n [header]=\"true\"\n paginationIdentifier=\"objecttypesList\"\n (rowClicked)=\"redirectToDetails($event)\"\n >\n <div header>\n <h3 class=\"list-header-title\">\n {{ 'objectManagement.title' | translate }}\n <sup class=\"ml-1 badge badge-pill badge-primary\">{{\n objecttypesInstances?.length || 0\n }}</sup>\n </h3>\n </div>\n </valtimo-list>\n </valtimo-widget>\n </ng-container>\n </ng-container>\n</ng-template>\n\n<valtimo-object-management-upload-modal\n [objecttypes]=\"objecttypesInstances$ | async\"\n></valtimo-object-management-upload-modal>\n<valtimo-object-management-modal></valtimo-object-management-modal>\n", styles: ["/*!\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i6.WidgetComponent, selector: "valtimo-widget", inputs: ["type", "name", "icon", "contrast", "divider", "title", "subtitle", "collapseAble", "collapse", "additionalClasses"] }, { kind: "component", type: i6.ListComponent, selector: "valtimo-list", inputs: ["items", "fields", "pagination", "viewMode", "isSearchable", "header", "actions", "paginationIdentifier", "initialSortState", "lastColumnTemplate"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged"] }, { kind: "component", type: i7.ObjectManagementModalComponent, selector: "valtimo-object-management-modal", inputs: ["prefillObject$"] }, { kind: "component", type: i8.ObjectManagementUploadModalComponent, selector: "valtimo-object-management-upload-modal", inputs: ["objecttypes"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] }); }
|
|
59
61
|
}
|
|
60
|
-
|
|
61
|
-
ObjectManagementListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ObjectManagementListComponent, selector: "valtimo-object-management-list", ngImport: i0, template: "<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content pt-0\" *ngIf=\"{loading: loading$ | async} as obs\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <div class=\"text-right mt-m3px mb-3\">\n <button (click)=\"showUploadModal()\" class=\"btn btn-secondary btn-space\">\n <i class=\"icon mdi mdi-upload mr-1\"></i>\n {{ 'objectManagement.uploadObjecttype' | translate }}\n </button>\n <button (click)=\"showAddModal()\" type=\"button\" class=\"btn btn-space btn-primary mr-0\">\n <i class=\"icon mdi mdi-plus mr-1\"></i>\n {{ 'objectManagement.createObjecttype' | translate }}\n </button>\n </div>\n <ng-container *ngTemplateOutlet=\"list; context: {obs: obs}\"></ng-container>\n </div>\n </div>\n</div>\n\n<ng-template #list let-obs=\"obs\">\n <ng-container *ngIf=\"fields$ | async as fields\">\n <ng-container *ngIf=\"objecttypesInstances$ | async as objecttypesInstances\">\n <valtimo-widget *ngIf=\"obs.loading === false\">\n <valtimo-list\n [items]=\"objecttypesInstances\"\n [fields]=\"fields\"\n [viewMode]=\"true\"\n [header]=\"true\"\n paginationIdentifier=\"objecttypesList\"\n (rowClicked)=\"redirectToDetails($event)\"\n >\n <div header>\n <h3 class=\"list-header-title\">\n {{ 'objectManagement.title' | translate }}\n <sup class=\"ml-1 badge badge-pill badge-primary\">{{\n objecttypesInstances?.length || 0\n }}</sup>\n </h3>\n </div>\n </valtimo-list>\n </valtimo-widget>\n </ng-container>\n </ng-container>\n</ng-template>\n\n<valtimo-object-management-upload-modal\n [objecttypes]=\"objecttypesInstances$ | async\"\n></valtimo-object-management-upload-modal>\n<valtimo-object-management-modal></valtimo-object-management-modal>\n", styles: ["/*!\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i6.WidgetComponent, selector: "valtimo-widget", inputs: ["type", "name", "icon", "contrast", "divider", "title", "subtitle", "collapseAble", "collapse", "additionalClasses"] }, { kind: "component", type: i6.ListComponent, selector: "valtimo-list", inputs: ["items", "fields", "pagination", "viewMode", "isSearchable", "header", "actions", "paginationIdentifier", "initialSortState", "lastColumnTemplate"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged"] }, { kind: "component", type: i7.ObjectManagementModalComponent, selector: "valtimo-object-management-modal", inputs: ["prefillObject$"] }, { kind: "component", type: i8.ObjectManagementUploadModalComponent, selector: "valtimo-object-management-upload-modal", inputs: ["objecttypes"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] });
|
|
62
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ObjectManagementListComponent, decorators: [{
|
|
62
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ObjectManagementListComponent, decorators: [{
|
|
63
63
|
type: Component,
|
|
64
64
|
args: [{ selector: 'valtimo-object-management-list', template: "<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"main-content pt-0\" *ngIf=\"{loading: loading$ | async} as obs\">\n <div class=\"container-fluid\">\n <div class=\"col-12 px-0 mb-5\">\n <div class=\"text-right mt-m3px mb-3\">\n <button (click)=\"showUploadModal()\" class=\"btn btn-secondary btn-space\">\n <i class=\"icon mdi mdi-upload mr-1\"></i>\n {{ 'objectManagement.uploadObjecttype' | translate }}\n </button>\n <button (click)=\"showAddModal()\" type=\"button\" class=\"btn btn-space btn-primary mr-0\">\n <i class=\"icon mdi mdi-plus mr-1\"></i>\n {{ 'objectManagement.createObjecttype' | translate }}\n </button>\n </div>\n <ng-container *ngTemplateOutlet=\"list; context: {obs: obs}\"></ng-container>\n </div>\n </div>\n</div>\n\n<ng-template #list let-obs=\"obs\">\n <ng-container *ngIf=\"fields$ | async as fields\">\n <ng-container *ngIf=\"objecttypesInstances$ | async as objecttypesInstances\">\n <valtimo-widget *ngIf=\"obs.loading === false\">\n <valtimo-list\n [items]=\"objecttypesInstances\"\n [fields]=\"fields\"\n [viewMode]=\"true\"\n [header]=\"true\"\n paginationIdentifier=\"objecttypesList\"\n (rowClicked)=\"redirectToDetails($event)\"\n >\n <div header>\n <h3 class=\"list-header-title\">\n {{ 'objectManagement.title' | translate }}\n <sup class=\"ml-1 badge badge-pill badge-primary\">{{\n objecttypesInstances?.length || 0\n }}</sup>\n </h3>\n </div>\n </valtimo-list>\n </valtimo-widget>\n </ng-container>\n </ng-container>\n</ng-template>\n\n<valtimo-object-management-upload-modal\n [objecttypes]=\"objecttypesInstances$ | async\"\n></valtimo-object-management-upload-modal>\n<valtimo-object-management-modal></valtimo-object-management-modal>\n", styles: ["/*!\n * Copyright 2015-2023 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"] }]
|
|
65
65
|
}], ctorParameters: function () { return [{ type: i1.ObjectManagementService }, { type: i2.ObjectManagementStateService }, { type: i3.TranslateService }, { type: i4.Router }]; } });
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LW1hbmFnZW1lbnQtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL29iamVjdC1tYW5hZ2VtZW50L3NyYy9saWIvY29tcG9uZW50cy9vYmplY3QtbWFuYWdlbWVudC1saXN0L29iamVjdC1tYW5hZ2VtZW50LWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9vYmplY3QtbWFuYWdlbWVudC9zcmMvbGliL2NvbXBvbmVudHMvb2JqZWN0LW1hbmFnZW1lbnQtbGlzdC9vYmplY3QtbWFuYWdlbWVudC1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN4QyxPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBYSxNQUFNLE1BQU0sQ0FBQztBQUNoRSxPQUFPLEVBQUMsU0FBUyxFQUFFLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7O0FBWTlDLE1BQU0sT0FBTyw2QkFBNkI7SUFjeEMsWUFDbUIsdUJBQWdELEVBQ2hELHFCQUFtRCxFQUNuRCxnQkFBa0MsRUFDM0MsTUFBYztRQUhMLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUFDaEQsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUE4QjtRQUNuRCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQzNDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFqQmYsYUFBUSxHQUFHLElBQUksZUFBZSxDQUFVLElBQUksQ0FBQyxDQUFDO1FBRTlDLFlBQU8sR0FBRyxJQUFJLGVBQWUsQ0FBc0MsRUFBRSxDQUFDLENBQUM7UUFFdkUsMEJBQXFCLEdBQWtDLGFBQWEsQ0FBQztZQUM1RSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztZQUNuQyxJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUTtTQUNwQyxDQUFDLENBQUMsSUFBSSxDQUNMLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsRUFDM0IsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxFQUM3RCxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDckMsQ0FBQztJQU9DLENBQUM7SUFFSixZQUFZO1FBQ1YsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMscUJBQXFCLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMscUJBQXFCLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsaUJBQWlCLENBQUMsZ0JBQTRCO1FBQzVDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsMkJBQTJCLEVBQUUsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRU8sU0FBUztRQUNmLE1BQU0sSUFBSSxHQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUNmLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2YsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQywyQkFBMkIsR0FBRyxFQUFFLENBQUMsRUFBRTtZQUMzRSxHQUFHO1NBQ0osQ0FBQyxDQUFDLENBQ0osQ0FBQztJQUNKLENBQUM7K0dBM0NVLDZCQUE2QjttR0FBN0IsNkJBQTZCLHNFQzlCMUMsbWhGQWdFQTs7NEZEbENhLDZCQUE2QjtrQkFMekMsU0FBUzsrQkFDRSxnQ0FBZ0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMyBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0NvbXBvbmVudH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5pbXBvcnQge3N3aXRjaE1hcCwgdGFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtPYmplY3RNYW5hZ2VtZW50U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvb2JqZWN0LW1hbmFnZW1lbnQuc2VydmljZSc7XG5pbXBvcnQge09iamVjdHR5cGV9IGZyb20gJy4uLy4uL21vZGVscy9vYmplY3QtbWFuYWdlbWVudC5tb2RlbCc7XG5pbXBvcnQge09iamVjdE1hbmFnZW1lbnRTdGF0ZVNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL29iamVjdC1tYW5hZ2VtZW50LXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tb2JqZWN0LW1hbmFnZW1lbnQtbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9vYmplY3QtbWFuYWdlbWVudC1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vb2JqZWN0LW1hbmFnZW1lbnQtbGlzdC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBPYmplY3RNYW5hZ2VtZW50TGlzdENvbXBvbmVudCB7XG4gIHJlYWRvbmx5IGxvYWRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcblxuICByZWFkb25seSBmaWVsZHMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBcnJheTx7a2V5OiBzdHJpbmc7IGxhYmVsOiBzdHJpbmd9Pj4oW10pO1xuXG4gIHJlYWRvbmx5IG9iamVjdHR5cGVzSW5zdGFuY2VzJDogT2JzZXJ2YWJsZTxBcnJheTxPYmplY3R0eXBlPj4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc3RyZWFtKCdrZXknKSxcbiAgICB0aGlzLm9iamVjdE1hbmFnZW1lbnRTdGF0ZS5yZWZyZXNoJCxcbiAgXSkucGlwZShcbiAgICB0YXAoKCkgPT4gdGhpcy5zZXRGaWVsZHMoKSksXG4gICAgc3dpdGNoTWFwKCgpID0+IHRoaXMub2JqZWN0TWFuYWdlbWVudFNlcnZpY2UuZ2V0QWxsT2JqZWN0cygpKSxcbiAgICB0YXAoKCkgPT4gdGhpcy5sb2FkaW5nJC5uZXh0KGZhbHNlKSlcbiAgKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9iamVjdE1hbmFnZW1lbnRTZXJ2aWNlOiBPYmplY3RNYW5hZ2VtZW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9iamVjdE1hbmFnZW1lbnRTdGF0ZTogT2JqZWN0TWFuYWdlbWVudFN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxuICApIHt9XG5cbiAgc2hvd0FkZE1vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMub2JqZWN0TWFuYWdlbWVudFN0YXRlLnNldE1vZGFsVHlwZSgnYWRkJyk7XG4gICAgdGhpcy5vYmplY3RNYW5hZ2VtZW50U3RhdGUuc2hvd01vZGFsKCk7XG4gIH1cblxuICBzaG93VXBsb2FkTW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5vYmplY3RNYW5hZ2VtZW50U3RhdGUuc2V0TW9kYWxUeXBlKCd1cGxvYWQnKTtcbiAgICB0aGlzLm9iamVjdE1hbmFnZW1lbnRTdGF0ZS5zaG93TW9kYWwoKTtcbiAgfVxuXG4gIHJlZGlyZWN0VG9EZXRhaWxzKG9iamVjdE1hbmFnZW1lbnQ6IE9iamVjdHR5cGUpIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9vYmplY3QtbWFuYWdlbWVudC9vYmplY3QnLCBvYmplY3RNYW5hZ2VtZW50LmlkXSk7XG4gIH1cblxuICBwcml2YXRlIHNldEZpZWxkcygpOiB2b2lkIHtcbiAgICBjb25zdCBrZXlzOiBBcnJheTxzdHJpbmc+ID0gWyd0aXRsZSddO1xuICAgIHRoaXMuZmllbGRzJC5uZXh0KFxuICAgICAga2V5cy5tYXAoa2V5ID0+ICh7XG4gICAgICAgIGxhYmVsOiBgJHt0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChgb2JqZWN0TWFuYWdlbWVudC5sYWJlbHMuJHtrZXl9YCl9YCxcbiAgICAgICAga2V5LFxuICAgICAgfSkpXG4gICAgKTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjMgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48ZGl2IGNsYXNzPVwibWFpbi1jb250ZW50IHB0LTBcIiAqbmdJZj1cIntsb2FkaW5nOiBsb2FkaW5nJCB8IGFzeW5jfSBhcyBvYnNcIj5cbiAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgcHgtMCBtYi01XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1yaWdodCBtdC1tM3B4IG1iLTNcIj5cbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwic2hvd1VwbG9hZE1vZGFsKClcIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5IGJ0bi1zcGFjZVwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbiBtZGkgbWRpLXVwbG9hZCBtci0xXCI+PC9pPlxuICAgICAgICAgIHt7ICdvYmplY3RNYW5hZ2VtZW50LnVwbG9hZE9iamVjdHR5cGUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJzaG93QWRkTW9kYWwoKVwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc3BhY2UgYnRuLXByaW1hcnkgbXItMFwiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbiBtZGkgbWRpLXBsdXMgbXItMVwiPjwvaT5cbiAgICAgICAgICB7eyAnb2JqZWN0TWFuYWdlbWVudC5jcmVhdGVPYmplY3R0eXBlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxpc3Q7IGNvbnRleHQ6IHtvYnM6IG9ic31cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNsaXN0IGxldC1vYnM9XCJvYnNcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkcyQgfCBhc3luYyBhcyBmaWVsZHNcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwib2JqZWN0dHlwZXNJbnN0YW5jZXMkIHwgYXN5bmMgYXMgb2JqZWN0dHlwZXNJbnN0YW5jZXNcIj5cbiAgICAgIDx2YWx0aW1vLXdpZGdldCAqbmdJZj1cIm9icy5sb2FkaW5nID09PSBmYWxzZVwiPlxuICAgICAgICA8dmFsdGltby1saXN0XG4gICAgICAgICAgW2l0ZW1zXT1cIm9iamVjdHR5cGVzSW5zdGFuY2VzXCJcbiAgICAgICAgICBbZmllbGRzXT1cImZpZWxkc1wiXG4gICAgICAgICAgW3ZpZXdNb2RlXT1cInRydWVcIlxuICAgICAgICAgIFtoZWFkZXJdPVwidHJ1ZVwiXG4gICAgICAgICAgcGFnaW5hdGlvbklkZW50aWZpZXI9XCJvYmplY3R0eXBlc0xpc3RcIlxuICAgICAgICAgIChyb3dDbGlja2VkKT1cInJlZGlyZWN0VG9EZXRhaWxzKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBoZWFkZXI+XG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJsaXN0LWhlYWRlci10aXRsZVwiPlxuICAgICAgICAgICAgICB7eyAnb2JqZWN0TWFuYWdlbWVudC50aXRsZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPHN1cCBjbGFzcz1cIm1sLTEgYmFkZ2UgYmFkZ2UtcGlsbCBiYWRnZS1wcmltYXJ5XCI+e3tcbiAgICAgICAgICAgICAgICBvYmplY3R0eXBlc0luc3RhbmNlcz8ubGVuZ3RoIHx8IDBcbiAgICAgICAgICAgICAgfX08L3N1cD5cbiAgICAgICAgICAgIDwvaDM+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdmFsdGltby1saXN0PlxuICAgICAgPC92YWx0aW1vLXdpZGdldD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48dmFsdGltby1vYmplY3QtbWFuYWdlbWVudC11cGxvYWQtbW9kYWxcbiAgW29iamVjdHR5cGVzXT1cIm9iamVjdHR5cGVzSW5zdGFuY2VzJCB8IGFzeW5jXCJcbj48L3ZhbHRpbW8tb2JqZWN0LW1hbmFnZW1lbnQtdXBsb2FkLW1vZGFsPlxuPHZhbHRpbW8tb2JqZWN0LW1hbmFnZW1lbnQtbW9kYWw+PC92YWx0aW1vLW9iamVjdC1tYW5hZ2VtZW50LW1vZGFsPlxuIl19
|