@valtimo/dossier 11.3.2 → 12.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/dossier-assign-user/dossier-assign-user.component.mjs +7 -7
- package/esm2022/lib/components/dossier-bulk-assign-modal/dossier-bulk-assign-modal.component.mjs +7 -7
- package/esm2022/lib/components/dossier-detail/dossier-detail.component.mjs +55 -16
- package/esm2022/lib/components/dossier-detail/tab/audit/audit.component.mjs +7 -7
- package/esm2022/lib/components/dossier-detail/tab/documents/documents.component.mjs +52 -16
- package/esm2022/lib/components/dossier-detail/tab/formio/formio.component.mjs +7 -7
- package/esm2022/lib/components/dossier-detail/tab/not-found/not-found.component.mjs +28 -0
- package/esm2022/lib/components/dossier-detail/tab/notes/notes.component.mjs +14 -9
- package/esm2022/lib/components/dossier-detail/tab/progress/progress.component.mjs +8 -12
- package/esm2022/lib/components/dossier-detail/tab/s3-documents/s3-documents.component.mjs +8 -9
- package/esm2022/lib/components/dossier-detail/tab/summary/summary.component.mjs +15 -80
- package/esm2022/lib/components/dossier-detail/tab/widgets/components/collection/widget-collection.component.mjs +192 -0
- package/esm2022/lib/components/dossier-detail/tab/widgets/components/custom/widget-custom.component.mjs +80 -0
- package/esm2022/lib/components/dossier-detail/tab/widgets/components/field/widget-field.component.mjs +116 -0
- package/esm2022/lib/components/dossier-detail/tab/widgets/components/formio/widget-formio.component.mjs +67 -0
- package/esm2022/lib/components/dossier-detail/tab/widgets/components/table/widget-table.component.mjs +126 -0
- package/esm2022/lib/components/dossier-detail/tab/widgets/components/widget-block/widget-block.component.mjs +154 -0
- package/esm2022/lib/components/dossier-detail/tab/widgets/components/widgets-container/widgets-container.component.mjs +74 -0
- package/esm2022/lib/components/dossier-detail/tab/widgets/widgets.component.mjs +74 -0
- package/esm2022/lib/components/dossier-detail-task-list/dossier-detail-task-list.component.mjs +131 -0
- package/esm2022/lib/components/dossier-list/dossier-list.component.mjs +80 -55
- package/esm2022/lib/components/dossier-list-actions/dossier-list-actions.component.mjs +7 -7
- package/esm2022/lib/components/dossier-process-start-modal/dossier-process-start-modal.component.mjs +60 -18
- package/esm2022/lib/components/dossier-supporting-process-start-modal/dossier-supporting-process-start-modal.component.mjs +9 -9
- package/esm2022/lib/components/dossier-update/dossier-update.component.mjs +7 -7
- package/esm2022/lib/components/note-modal/note-modal.component.mjs +7 -7
- package/esm2022/lib/constants/case-status.constants.mjs +26 -0
- package/esm2022/lib/constants/case-tab-token.mjs +2 -2
- package/esm2022/lib/constants/case-widget.constants.mjs +19 -0
- package/esm2022/lib/{models/zaakobjecten.model.mjs → constants/custom-case-widget-token.mjs} +5 -3
- package/esm2022/lib/constants/dossier-list.constants.mjs +39 -0
- package/esm2022/lib/constants/index.mjs +20 -1
- package/esm2022/lib/constants/tab.mjs +2 -6
- package/esm2022/lib/dossier-routing.module.mjs +6 -6
- package/esm2022/lib/dossier.module.mjs +40 -29
- package/esm2022/lib/models/candidate-user.model.mjs +2 -2
- package/esm2022/lib/models/case-widget-content.model.mjs +17 -0
- package/esm2022/lib/models/case-widget-display.model.mjs +13 -0
- package/esm2022/lib/models/case-widget.model.mjs +25 -0
- package/esm2022/lib/models/dossier-detail-tab.model.mjs +2 -4
- package/esm2022/lib/models/dossier-parameters.model.mjs +2 -2
- package/esm2022/lib/models/index.mjs +7 -5
- package/esm2022/lib/models/notes.model.mjs +2 -2
- package/esm2022/lib/models/search.model.mjs +2 -2
- package/esm2022/lib/models/tab-api.model.mjs +3 -2
- package/esm2022/lib/models/tabs.model.mjs +17 -8
- package/esm2022/lib/permissions/dossier-detail.permissions.mjs +2 -2
- package/esm2022/lib/permissions/index.mjs +2 -2
- package/esm2022/lib/pipes/index.mjs +2 -2
- package/esm2022/lib/pipes/tab-translate/index.mjs +2 -2
- package/esm2022/lib/pipes/tab-translate/tab-translate-pipe.module.mjs +6 -6
- package/esm2022/lib/pipes/tab-translate/tab-translate.pipe.mjs +6 -6
- package/esm2022/lib/services/dossier-bulk-assign.service.mjs +5 -5
- package/esm2022/lib/services/dossier-column.service.mjs +7 -7
- package/esm2022/lib/services/dossier-list-assignee.service.mjs +6 -6
- package/esm2022/lib/services/dossier-list-pagination.service.mjs +6 -6
- package/esm2022/lib/services/dossier-list-search.service.mjs +6 -6
- package/esm2022/lib/services/dossier-list-status.service.mjs +62 -0
- package/esm2022/lib/services/dossier-list.service.mjs +6 -6
- package/esm2022/lib/services/dossier-parameter.service.mjs +44 -18
- package/esm2022/lib/services/dossier-tab-api.service.mjs +34 -13
- package/esm2022/lib/services/dossier-tab.service.mjs +57 -21
- package/esm2022/lib/services/dossier-widgets-api.service.mjs +46 -0
- package/esm2022/lib/services/dossier-widgets-layout.service.mjs +97 -0
- package/esm2022/lib/services/dossier.service.mjs +6 -6
- package/esm2022/lib/services/index.mjs +6 -3
- package/esm2022/lib/services/notes.service.mjs +6 -6
- package/esm2022/lib/services/start-modal.service.mjs +23 -8
- package/esm2022/public_api.mjs +2 -4
- package/fesm2022/valtimo-dossier.mjs +1941 -985
- package/fesm2022/valtimo-dossier.mjs.map +1 -1
- package/lib/components/dossier-detail/dossier-detail.component.d.ts +15 -3
- package/lib/components/dossier-detail/dossier-detail.component.d.ts.map +1 -1
- package/lib/components/dossier-detail/tab/documents/documents.component.d.ts +16 -6
- package/lib/components/dossier-detail/tab/documents/documents.component.d.ts.map +1 -1
- package/lib/components/dossier-detail/tab/not-found/not-found.component.d.ts +6 -0
- package/lib/components/dossier-detail/tab/not-found/not-found.component.d.ts.map +1 -0
- package/lib/components/dossier-detail/tab/notes/notes.component.d.ts +2 -1
- package/lib/components/dossier-detail/tab/notes/notes.component.d.ts.map +1 -1
- package/lib/components/dossier-detail/tab/progress/progress.component.d.ts.map +1 -1
- package/lib/components/dossier-detail/tab/s3-documents/s3-documents.component.d.ts +1 -2
- package/lib/components/dossier-detail/tab/s3-documents/s3-documents.component.d.ts.map +1 -1
- package/lib/components/dossier-detail/tab/summary/summary.component.d.ts +7 -26
- package/lib/components/dossier-detail/tab/summary/summary.component.d.ts.map +1 -1
- package/lib/components/dossier-detail/tab/widgets/components/collection/widget-collection.component.d.ts +47 -0
- package/lib/components/dossier-detail/tab/widgets/components/collection/widget-collection.component.d.ts.map +1 -0
- package/lib/components/dossier-detail/tab/widgets/components/custom/widget-custom.component.d.ts +22 -0
- package/lib/components/dossier-detail/tab/widgets/components/custom/widget-custom.component.d.ts.map +1 -0
- package/lib/components/dossier-detail/tab/widgets/components/field/widget-field.component.d.ts +31 -0
- package/lib/components/dossier-detail/tab/widgets/components/field/widget-field.component.d.ts.map +1 -0
- package/lib/components/dossier-detail/tab/widgets/components/formio/widget-formio.component.d.ts +21 -0
- package/lib/components/dossier-detail/tab/widgets/components/formio/widget-formio.component.d.ts.map +1 -0
- package/lib/components/dossier-detail/tab/widgets/components/table/widget-table.component.d.ts +31 -0
- package/lib/components/dossier-detail/tab/widgets/components/table/widget-table.component.d.ts.map +1 -0
- package/lib/components/dossier-detail/tab/widgets/components/widget-block/widget-block.component.d.ts +43 -0
- package/lib/components/dossier-detail/tab/widgets/components/widget-block/widget-block.component.d.ts.map +1 -0
- package/lib/components/dossier-detail/tab/widgets/components/widgets-container/widgets-container.component.d.ts +20 -0
- package/lib/components/dossier-detail/tab/widgets/components/widgets-container/widgets-container.component.d.ts.map +1 -0
- package/lib/components/dossier-detail/tab/widgets/widgets.component.d.ts +25 -0
- package/lib/components/dossier-detail/tab/widgets/widgets.component.d.ts.map +1 -0
- package/lib/components/dossier-detail-task-list/dossier-detail-task-list.component.d.ts +26 -0
- package/lib/components/dossier-detail-task-list/dossier-detail-task-list.component.d.ts.map +1 -0
- package/lib/components/dossier-list/dossier-list.component.d.ts +15 -16
- package/lib/components/dossier-list/dossier-list.component.d.ts.map +1 -1
- package/lib/components/dossier-process-start-modal/dossier-process-start-modal.component.d.ts +14 -7
- package/lib/components/dossier-process-start-modal/dossier-process-start-modal.component.d.ts.map +1 -1
- package/lib/components/dossier-supporting-process-start-modal/dossier-supporting-process-start-modal.component.d.ts +1 -1
- package/lib/components/dossier-supporting-process-start-modal/dossier-supporting-process-start-modal.component.d.ts.map +1 -1
- package/lib/constants/case-status.constants.d.ts +5 -0
- package/lib/constants/case-status.constants.d.ts.map +1 -0
- package/lib/constants/case-widget.constants.d.ts +4 -0
- package/lib/constants/case-widget.constants.d.ts.map +1 -0
- package/lib/constants/custom-case-widget-token.d.ts +5 -0
- package/lib/constants/custom-case-widget-token.d.ts.map +1 -0
- package/lib/constants/dossier-list.constants.d.ts +7 -0
- package/lib/constants/dossier-list.constants.d.ts.map +1 -0
- package/lib/constants/index.d.ts +4 -0
- package/lib/constants/index.d.ts.map +1 -1
- package/lib/constants/tab.d.ts.map +1 -1
- package/lib/dossier.module.d.ts +25 -26
- package/lib/dossier.module.d.ts.map +1 -1
- package/lib/models/case-widget-content.model.d.ts +51 -0
- package/lib/models/case-widget-content.model.d.ts.map +1 -0
- package/lib/models/case-widget-display.model.d.ts +44 -0
- package/lib/models/case-widget-display.model.d.ts.map +1 -0
- package/lib/models/case-widget.model.d.ts +105 -0
- package/lib/models/case-widget.model.d.ts.map +1 -0
- package/lib/models/dossier-detail-tab.model.d.ts +0 -2
- package/lib/models/dossier-detail-tab.model.d.ts.map +1 -1
- package/lib/models/dossier-parameters.model.d.ts +1 -0
- package/lib/models/dossier-parameters.model.d.ts.map +1 -1
- package/lib/models/index.d.ts +5 -3
- package/lib/models/index.d.ts.map +1 -1
- package/lib/models/tab-api.model.d.ts +13 -2
- package/lib/models/tab-api.model.d.ts.map +1 -1
- package/lib/models/tabs.model.d.ts +6 -1
- package/lib/models/tabs.model.d.ts.map +1 -1
- package/lib/services/dossier-list-status.service.d.ts +21 -0
- package/lib/services/dossier-list-status.service.d.ts.map +1 -0
- package/lib/services/dossier-list.service.d.ts +1 -1
- package/lib/services/dossier-list.service.d.ts.map +1 -1
- package/lib/services/dossier-parameter.service.d.ts +4 -2
- package/lib/services/dossier-parameter.service.d.ts.map +1 -1
- package/lib/services/dossier-tab-api.service.d.ts +6 -7
- package/lib/services/dossier-tab-api.service.d.ts.map +1 -1
- package/lib/services/dossier-tab.service.d.ts +15 -4
- package/lib/services/dossier-tab.service.d.ts.map +1 -1
- package/lib/services/dossier-widgets-api.service.d.ts +15 -0
- package/lib/services/dossier-widgets-api.service.d.ts.map +1 -0
- package/lib/services/dossier-widgets-layout.service.d.ts +35 -0
- package/lib/services/dossier-widgets-layout.service.d.ts.map +1 -0
- package/lib/services/index.d.ts +4 -1
- package/lib/services/index.d.ts.map +1 -1
- package/lib/services/start-modal.service.d.ts.map +1 -1
- package/package.json +8 -6
- package/public_api.d.ts +0 -2
- package/public_api.d.ts.map +1 -1
- package/esm2022/lib/components/dossier-detail/tab/contact-moments/contact-moments.component.mjs +0 -86
- package/esm2022/lib/components/dossier-detail/tab/documenten-api-documents/documenten-api-documents.component.mjs +0 -144
- package/esm2022/lib/components/dossier-detail/tab/object-type/object-type.component.mjs +0 -121
- package/esm2022/lib/components/dossier-detail/tab/zaakobjecten/zaakobjecten.component.mjs +0 -112
- package/esm2022/lib/services/file-sort.service.mjs +0 -39
- package/esm2022/lib/services/zaakobjecten.service.mjs +0 -44
- package/lib/components/dossier-detail/tab/contact-moments/contact-moments.component.d.ts +0 -30
- package/lib/components/dossier-detail/tab/contact-moments/contact-moments.component.d.ts.map +0 -1
- package/lib/components/dossier-detail/tab/documenten-api-documents/documenten-api-documents.component.d.ts +0 -55
- package/lib/components/dossier-detail/tab/documenten-api-documents/documenten-api-documents.component.d.ts.map +0 -1
- package/lib/components/dossier-detail/tab/object-type/object-type.component.d.ts +0 -32
- package/lib/components/dossier-detail/tab/object-type/object-type.component.d.ts.map +0 -1
- package/lib/components/dossier-detail/tab/zaakobjecten/zaakobjecten.component.d.ts +0 -32
- package/lib/components/dossier-detail/tab/zaakobjecten/zaakobjecten.component.d.ts.map +0 -1
- package/lib/models/zaakobjecten.model.d.ts +0 -26
- package/lib/models/zaakobjecten.model.d.ts.map +0 -1
- package/lib/services/file-sort.service.d.ts +0 -11
- package/lib/services/file-sort.service.d.ts.map +0 -1
- package/lib/services/zaakobjecten.service.d.ts +0 -17
- package/lib/services/zaakobjecten.service.d.ts.map +0 -1
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { ChangeDetectionStrategy, Component, HostBinding, Input, signal, ViewChild, ViewEncapsulation, } from '@angular/core';
|
|
17
|
+
import { CommonModule } from '@angular/common';
|
|
18
|
+
import { InputModule, PaginationModel, PaginationModule, TilesModule, } from 'carbon-components-angular';
|
|
19
|
+
import { CaseWidgetDisplayTypeKey, } from '../../../../../../models';
|
|
20
|
+
import { BehaviorSubject, combineLatest, filter, map, of, switchMap, tap } from 'rxjs';
|
|
21
|
+
import { CarbonListModule } from '@valtimo/components';
|
|
22
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
23
|
+
import * as i0 from "@angular/core";
|
|
24
|
+
import * as i1 from "@valtimo/components";
|
|
25
|
+
import * as i2 from "../../../../../../services";
|
|
26
|
+
import * as i3 from "@angular/common";
|
|
27
|
+
import * as i4 from "carbon-components-angular";
|
|
28
|
+
import * as i5 from "@ngx-translate/core";
|
|
29
|
+
export class WidgetCollectionComponent {
|
|
30
|
+
set widgetConfiguration(value) {
|
|
31
|
+
if (!value)
|
|
32
|
+
return;
|
|
33
|
+
this.widgetConfiguration$.next(value);
|
|
34
|
+
}
|
|
35
|
+
get _initialNumberOfElements$() {
|
|
36
|
+
return this._initialNumberOfElementsSubject$.pipe(filter(numberOfElements => numberOfElements !== null));
|
|
37
|
+
}
|
|
38
|
+
set widgetData(value) {
|
|
39
|
+
if (!value)
|
|
40
|
+
return;
|
|
41
|
+
this.showPagination$.next(value.totalElements > value.size);
|
|
42
|
+
this._initialNumberOfElementsSubject$.next(value.numberOfElements);
|
|
43
|
+
this._widgetDataSubject$.next(value.content);
|
|
44
|
+
this.paginationModel.set(value.totalPages < 0
|
|
45
|
+
? null
|
|
46
|
+
: {
|
|
47
|
+
currentPage: 1,
|
|
48
|
+
totalDataLength: Math.ceil(value.totalElements / value.size),
|
|
49
|
+
pageLength: value.size,
|
|
50
|
+
});
|
|
51
|
+
this.cdr.detectChanges();
|
|
52
|
+
}
|
|
53
|
+
constructor(viewContentService, cdr, widgetApiService) {
|
|
54
|
+
this.viewContentService = viewContentService;
|
|
55
|
+
this.cdr = cdr;
|
|
56
|
+
this.widgetApiService = widgetApiService;
|
|
57
|
+
this.class = 'valtimo-widget-collection';
|
|
58
|
+
this.showPagination$ = new BehaviorSubject(false);
|
|
59
|
+
this._initialNumberOfElementsSubject$ = new BehaviorSubject(null);
|
|
60
|
+
this.widgetTitle = signal('-');
|
|
61
|
+
this.widgetConfiguration$ = new BehaviorSubject(null);
|
|
62
|
+
this.paginationModel = signal(new PaginationModel());
|
|
63
|
+
this.amountOfColumns = signal(0);
|
|
64
|
+
this._widgetDataSubject$ = new BehaviorSubject(null);
|
|
65
|
+
this._queryParams$ = new BehaviorSubject(null);
|
|
66
|
+
this._widgetData$ = combineLatest([
|
|
67
|
+
this._widgetDataSubject$,
|
|
68
|
+
this._queryParams$,
|
|
69
|
+
this._initialNumberOfElements$,
|
|
70
|
+
this.widgetConfiguration$,
|
|
71
|
+
]).pipe(switchMap(([data, queryParams, initialNumberOfElements, widgetConfiguration]) => combineLatest([
|
|
72
|
+
!queryParams
|
|
73
|
+
? of(data)
|
|
74
|
+
: this.widgetApiService
|
|
75
|
+
.getWidgetData(this.documentId, this.tabKey, widgetConfiguration.key, queryParams)
|
|
76
|
+
.pipe(map((res) => res.content)),
|
|
77
|
+
of(initialNumberOfElements),
|
|
78
|
+
])), filter(([items]) => !!items), map(([items, initialNumberOfElements]) => {
|
|
79
|
+
if (items.length === initialNumberOfElements) {
|
|
80
|
+
return items;
|
|
81
|
+
}
|
|
82
|
+
const rows = new Array(initialNumberOfElements).fill(null);
|
|
83
|
+
return rows.map((_, index) => items[index] || { ...items[0], hidden: true });
|
|
84
|
+
}));
|
|
85
|
+
this.collectionWidgetCards$ = combineLatest([this.widgetConfiguration$, this._widgetData$]).pipe(filter(([widgetConfig, widgetData]) => !!widgetConfig && !!widgetData), tap(([widgetConfig]) => this.widgetTitle.set(widgetConfig.title)), map(([widgetConfig, widgetData]) => widgetData.map((cardData, index) => ({
|
|
86
|
+
hidden: cardData.hidden,
|
|
87
|
+
key: index,
|
|
88
|
+
title: this.getCardTitle({
|
|
89
|
+
value: cardData.title,
|
|
90
|
+
displayProperties: widgetConfig?.properties?.title?.displayProperties,
|
|
91
|
+
}),
|
|
92
|
+
fields: widgetConfig?.properties.fields.reduce((cardFieldsAccumulator, currentField) => [
|
|
93
|
+
...cardFieldsAccumulator,
|
|
94
|
+
this.getCardField(currentField, cardData),
|
|
95
|
+
], []),
|
|
96
|
+
}))));
|
|
97
|
+
}
|
|
98
|
+
ngAfterViewInit() {
|
|
99
|
+
this.openWidthObserver();
|
|
100
|
+
}
|
|
101
|
+
ngOnDestroy() {
|
|
102
|
+
this._observer?.disconnect();
|
|
103
|
+
}
|
|
104
|
+
onSelectPage(page) {
|
|
105
|
+
this._queryParams$.next(`page=${page - 1}&size=${this.paginationModel().pageLength}`);
|
|
106
|
+
this.paginationModel.update((model) => ({
|
|
107
|
+
...model,
|
|
108
|
+
currentPage: page,
|
|
109
|
+
}));
|
|
110
|
+
}
|
|
111
|
+
getCardField(field, data) {
|
|
112
|
+
const resolvedValue = this.viewContentService.get(data.fields[field.key], {
|
|
113
|
+
...field.displayProperties,
|
|
114
|
+
viewType: field.displayProperties?.type ?? CaseWidgetDisplayTypeKey.TEXT,
|
|
115
|
+
});
|
|
116
|
+
return {
|
|
117
|
+
key: field.key,
|
|
118
|
+
title: field.title,
|
|
119
|
+
width: field.width,
|
|
120
|
+
value: resolvedValue || data.fields[field.key],
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
openWidthObserver() {
|
|
124
|
+
this._observer = new ResizeObserver(event => {
|
|
125
|
+
this.observerMutation(event);
|
|
126
|
+
});
|
|
127
|
+
this._observer.observe(this._widgetCollectionRef.nativeElement);
|
|
128
|
+
}
|
|
129
|
+
observerMutation(event) {
|
|
130
|
+
const elementWidth = event[0]?.borderBoxSize[0]?.inlineSize;
|
|
131
|
+
if (typeof elementWidth === 'number' && elementWidth !== 0) {
|
|
132
|
+
if (elementWidth < 640) {
|
|
133
|
+
this.amountOfColumns.set(1);
|
|
134
|
+
}
|
|
135
|
+
else if (elementWidth > 640 && elementWidth <= 768) {
|
|
136
|
+
this.amountOfColumns.set(2);
|
|
137
|
+
}
|
|
138
|
+
else if (elementWidth > 768 && elementWidth <= 1080) {
|
|
139
|
+
this.amountOfColumns.set(3);
|
|
140
|
+
}
|
|
141
|
+
else if (elementWidth > 1080) {
|
|
142
|
+
this.amountOfColumns.set(4);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
getCardTitle(collectionCaseWidgetTitle) {
|
|
147
|
+
const widgetTitleValue = collectionCaseWidgetTitle.value;
|
|
148
|
+
const widgetTitleDisplayProperties = collectionCaseWidgetTitle.displayProperties;
|
|
149
|
+
if (!widgetTitleDisplayProperties && widgetTitleValue) {
|
|
150
|
+
return widgetTitleValue;
|
|
151
|
+
}
|
|
152
|
+
else if (widgetTitleDisplayProperties && widgetTitleValue) {
|
|
153
|
+
const convertedTitle = this.viewContentService.get(widgetTitleValue, {
|
|
154
|
+
...widgetTitleDisplayProperties,
|
|
155
|
+
viewType: widgetTitleDisplayProperties.type,
|
|
156
|
+
});
|
|
157
|
+
if (convertedTitle)
|
|
158
|
+
return convertedTitle;
|
|
159
|
+
}
|
|
160
|
+
return '-';
|
|
161
|
+
}
|
|
162
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: WidgetCollectionComponent, deps: [{ token: i1.ViewContentService }, { token: i0.ChangeDetectorRef }, { token: i2.DossierWidgetsApiService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
163
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", type: WidgetCollectionComponent, isStandalone: true, selector: "valtimo-widget-collection", inputs: { documentId: "documentId", tabKey: "tabKey", widgetConfiguration: "widgetConfiguration", widgetData: "widgetData" }, host: { properties: { "class": "this.class" } }, viewQueries: [{ propertyName: "_widgetCollectionRef", first: true, predicate: ["widgetCollection"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n collectionWidgetCards: collectionWidgetCards$ | async\n } as obs\"\n>\n <span class=\"valtimo-widget-collection__title\">{{ widgetTitle() }}</span>\n\n <div\n #widgetCollection\n [ngClass]=\"{\n 'valtimo-widget-collection__render-vertically': amountOfColumns() === 1,\n 'valtimo-widget-collection__render-two-columns': amountOfColumns() === 2,\n 'valtimo-widget-collection__render-three-columns': amountOfColumns() === 3,\n 'valtimo-widget-collection__container': amountOfColumns() === 4\n }\"\n >\n @for (card of obs?.collectionWidgetCards; track card.key) {\n <div\n class=\"valtimo-widget-collection__card\"\n [ngClass]=\"{'valtimo-widget-collection__card--hidden': card.hidden}\"\n >\n <span class=\"valtimo-widget-collection__card-title\">{{ card.title }}</span>\n\n @for (field of card.fields; track field.key) {\n <div\n [ngClass]=\"{\n 'valtimo-widget-collection__full-width-input': field?.width === 'full',\n 'valtimo-widget-collection__half-width-input': field?.width === 'half'\n }\"\n >\n <cds-label>\n {{ field?.title }}\n\n <input\n [value]=\"field?.value\"\n [readonly]=\"true\"\n class=\"valtimo-widget-collection__card-input\"\n cdsText\n />\n </cds-label>\n </div>\n }\n </div>\n }\n </div>\n\n @if (!obs?.collectionWidgetCards?.length) {\n <valtimo-no-results\n [collapseVertically]=\"true\"\n [description]=\"'dossier.widgets.noData' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n }\n\n <cds-pagination-nav\n *ngIf=\"paginationModel() && (showPagination$ | async)\"\n class=\"valtimo-widget-collection__pagination\"\n [model]=\"paginationModel()\"\n (selectPage)=\"onSelectPage($event)\"\n >\n </cds-pagination-nav>\n</ng-container>\n", styles: [".valtimo-widget-collection{padding:24px}.valtimo-widget-collection__title{color:var(--cds-text-primary);font-weight:600;font-size:16px;line-height:24px}.valtimo-widget-collection__container{display:flex;column-gap:16px}.valtimo-widget-collection,.valtimo-widget-collection__column{display:flex;flex-direction:column}.valtimo-widget-collection__card{margin-top:16px;display:flex;flex-flow:row wrap;background-color:var(--cds-background);padding:16px;width:100%;gap:16px}.valtimo-widget-collection__card--hidden{visibility:hidden}.valtimo-widget-collection__card-title{color:var(--cds-text-primary);font-weight:500;font-size:14px;line-height:22px;font-style:italic;width:100%}.valtimo-widget-collection__card-input{background:transparent}.valtimo-widget-collection__full-width-input{width:100%}.valtimo-widget-collection__half-width-input{width:calc(50% - 16px);box-sizing:border-box}.valtimo-widget-collection__pagination{padding:8px 0;display:flex;justify-content:center}.valtimo-widget-collection__render-vertically,.valtimo-widget-collection__render-two-columns,.valtimo-widget-collection__render-three-columns{display:grid;grid-gap:16px}.valtimo-widget-collection__render-two-columns{grid-template-columns:repeat(2,1fr)}.valtimo-widget-collection__render-three-columns{grid-template-columns:repeat(3,1fr)}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: InputModule }, { kind: "component", type: i4.Label, selector: "cds-label, ibm-label", inputs: ["labelInputID", "disabled", "skeleton", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i4.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "ngmodule", type: PaginationModule }, { kind: "component", type: i4.PaginationNav, selector: "cds-pagination-nav, ibm-pagination-navm", inputs: ["model", "disabled", "numOfItemsToShow", "translations"], outputs: ["selectPage"] }, { kind: "ngmodule", type: TilesModule }, { kind: "ngmodule", type: CarbonListModule }, { kind: "component", type: i1.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
164
|
+
}
|
|
165
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: WidgetCollectionComponent, decorators: [{
|
|
166
|
+
type: Component,
|
|
167
|
+
args: [{ selector: 'valtimo-widget-collection', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, imports: [
|
|
168
|
+
CommonModule,
|
|
169
|
+
InputModule,
|
|
170
|
+
PaginationModule,
|
|
171
|
+
TilesModule,
|
|
172
|
+
CarbonListModule,
|
|
173
|
+
TranslateModule,
|
|
174
|
+
], template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n collectionWidgetCards: collectionWidgetCards$ | async\n } as obs\"\n>\n <span class=\"valtimo-widget-collection__title\">{{ widgetTitle() }}</span>\n\n <div\n #widgetCollection\n [ngClass]=\"{\n 'valtimo-widget-collection__render-vertically': amountOfColumns() === 1,\n 'valtimo-widget-collection__render-two-columns': amountOfColumns() === 2,\n 'valtimo-widget-collection__render-three-columns': amountOfColumns() === 3,\n 'valtimo-widget-collection__container': amountOfColumns() === 4\n }\"\n >\n @for (card of obs?.collectionWidgetCards; track card.key) {\n <div\n class=\"valtimo-widget-collection__card\"\n [ngClass]=\"{'valtimo-widget-collection__card--hidden': card.hidden}\"\n >\n <span class=\"valtimo-widget-collection__card-title\">{{ card.title }}</span>\n\n @for (field of card.fields; track field.key) {\n <div\n [ngClass]=\"{\n 'valtimo-widget-collection__full-width-input': field?.width === 'full',\n 'valtimo-widget-collection__half-width-input': field?.width === 'half'\n }\"\n >\n <cds-label>\n {{ field?.title }}\n\n <input\n [value]=\"field?.value\"\n [readonly]=\"true\"\n class=\"valtimo-widget-collection__card-input\"\n cdsText\n />\n </cds-label>\n </div>\n }\n </div>\n }\n </div>\n\n @if (!obs?.collectionWidgetCards?.length) {\n <valtimo-no-results\n [collapseVertically]=\"true\"\n [description]=\"'dossier.widgets.noData' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n }\n\n <cds-pagination-nav\n *ngIf=\"paginationModel() && (showPagination$ | async)\"\n class=\"valtimo-widget-collection__pagination\"\n [model]=\"paginationModel()\"\n (selectPage)=\"onSelectPage($event)\"\n >\n </cds-pagination-nav>\n</ng-container>\n", styles: [".valtimo-widget-collection{padding:24px}.valtimo-widget-collection__title{color:var(--cds-text-primary);font-weight:600;font-size:16px;line-height:24px}.valtimo-widget-collection__container{display:flex;column-gap:16px}.valtimo-widget-collection,.valtimo-widget-collection__column{display:flex;flex-direction:column}.valtimo-widget-collection__card{margin-top:16px;display:flex;flex-flow:row wrap;background-color:var(--cds-background);padding:16px;width:100%;gap:16px}.valtimo-widget-collection__card--hidden{visibility:hidden}.valtimo-widget-collection__card-title{color:var(--cds-text-primary);font-weight:500;font-size:14px;line-height:22px;font-style:italic;width:100%}.valtimo-widget-collection__card-input{background:transparent}.valtimo-widget-collection__full-width-input{width:100%}.valtimo-widget-collection__half-width-input{width:calc(50% - 16px);box-sizing:border-box}.valtimo-widget-collection__pagination{padding:8px 0;display:flex;justify-content:center}.valtimo-widget-collection__render-vertically,.valtimo-widget-collection__render-two-columns,.valtimo-widget-collection__render-three-columns{display:grid;grid-gap:16px}.valtimo-widget-collection__render-two-columns{grid-template-columns:repeat(2,1fr)}.valtimo-widget-collection__render-three-columns{grid-template-columns:repeat(3,1fr)}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
175
|
+
}], ctorParameters: () => [{ type: i1.ViewContentService }, { type: i0.ChangeDetectorRef }, { type: i2.DossierWidgetsApiService }], propDecorators: { class: [{
|
|
176
|
+
type: HostBinding,
|
|
177
|
+
args: ['class']
|
|
178
|
+
}], _widgetCollectionRef: [{
|
|
179
|
+
type: ViewChild,
|
|
180
|
+
args: ['widgetCollection']
|
|
181
|
+
}], documentId: [{
|
|
182
|
+
type: Input,
|
|
183
|
+
args: [{ required: true }]
|
|
184
|
+
}], tabKey: [{
|
|
185
|
+
type: Input,
|
|
186
|
+
args: [{ required: true }]
|
|
187
|
+
}], widgetConfiguration: [{
|
|
188
|
+
type: Input
|
|
189
|
+
}], widgetData: [{
|
|
190
|
+
type: Input
|
|
191
|
+
}] } });
|
|
192
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWNvbGxlY3Rpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyL3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLWRldGFpbC90YWIvd2lkZ2V0cy9jb21wb25lbnRzL2NvbGxlY3Rpb24vd2lkZ2V0LWNvbGxlY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyL3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLWRldGFpbC90YWIvd2lkZ2V0cy9jb21wb25lbnRzL2NvbGxlY3Rpb24vd2lkZ2V0LWNvbGxlY3Rpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBRUwsdUJBQXVCLEVBRXZCLFNBQVMsRUFFVCxXQUFXLEVBQ1gsS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQ0wsV0FBVyxFQUNYLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsV0FBVyxHQUNaLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUNMLHdCQUF3QixHQU16QixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDakcsT0FBTyxFQUFDLGdCQUFnQixFQUFxQixNQUFNLHFCQUFxQixDQUFDO0FBQ3pFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7OztBQW9CcEQsTUFBTSxPQUFPLHlCQUF5QjtJQU1wQyxJQUFvQixtQkFBbUIsQ0FBQyxLQUEyQjtRQUNqRSxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU87UUFDbkIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBS0QsSUFBWSx5QkFBeUI7UUFDbkMsT0FBTyxJQUFJLENBQUMsZ0NBQWdDLENBQUMsSUFBSSxDQUMvQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLGdCQUFnQixLQUFLLElBQUksQ0FBQyxDQUN0RCxDQUFDO0lBQ0osQ0FBQztJQUVELElBQW9CLFVBQVUsQ0FBQyxLQUFnRDtRQUM3RSxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU87UUFFbkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNuRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUU3QyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FDdEIsS0FBSyxDQUFDLFVBQVUsR0FBRyxDQUFDO1lBQ2xCLENBQUMsQ0FBQyxJQUFJO1lBQ04sQ0FBQyxDQUFDO2dCQUNFLFdBQVcsRUFBRSxDQUFDO2dCQUNkLGVBQWUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztnQkFDNUQsVUFBVSxFQUFFLEtBQUssQ0FBQyxJQUFJO2FBQ3ZCLENBQ04sQ0FBQztRQUNGLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQWtFRCxZQUNtQixrQkFBc0MsRUFDdEMsR0FBc0IsRUFDdEIsZ0JBQTBDO1FBRjFDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdEMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUEwQjtRQXpHdkIsVUFBSyxHQUFHLDJCQUEyQixDQUFDO1FBUzFELG9CQUFlLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFFckQscUNBQWdDLEdBQUcsSUFBSSxlQUFlLENBQVMsSUFBSSxDQUFDLENBQUM7UUEyQnRFLGdCQUFXLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTFCLHlCQUFvQixHQUFHLElBQUksZUFBZSxDQUE4QixJQUFJLENBQUMsQ0FBQztRQUM5RSxvQkFBZSxHQUFHLE1BQU0sQ0FBa0IsSUFBSSxlQUFlLEVBQUUsQ0FBQyxDQUFDO1FBQ2pFLG9CQUFlLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTNCLHdCQUFtQixHQUFHLElBQUksZUFBZSxDQUFpQyxJQUFJLENBQUMsQ0FBQztRQUVoRixrQkFBYSxHQUFHLElBQUksZUFBZSxDQUFnQixJQUFJLENBQUMsQ0FBQztRQUV6RCxpQkFBWSxHQUErQyxhQUFhLENBQUM7WUFDeEYsSUFBSSxDQUFDLG1CQUFtQjtZQUN4QixJQUFJLENBQUMsYUFBYTtZQUNsQixJQUFJLENBQUMseUJBQXlCO1lBQzlCLElBQUksQ0FBQyxvQkFBb0I7U0FDMUIsQ0FBQyxDQUFDLElBQUksQ0FDTCxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsdUJBQXVCLEVBQUUsbUJBQW1CLENBQUMsRUFBRSxFQUFFLENBQzlFLGFBQWEsQ0FBQztZQUNaLENBQUMsV0FBVztnQkFDVixDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQztnQkFDVixDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQjtxQkFDbEIsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxtQkFBbUIsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDO3FCQUNqRixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBdUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzFFLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQztTQUM1QixDQUFDLENBQ0gsRUFDRCxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQzVCLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLHVCQUF1QixDQUFDLEVBQUUsRUFBRTtZQUN2QyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssdUJBQXVCLEVBQUUsQ0FBQztnQkFDN0MsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1lBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxLQUFLLENBQVMsdUJBQXVCLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFbkUsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7UUFDN0UsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUVjLDJCQUFzQixHQUVsQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUNwRSxNQUFNLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLEVBQ3RFLEdBQUcsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUNqRSxHQUFHLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsRUFBRSxFQUFFLENBQ2pDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ25DLE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTTtZQUN2QixHQUFHLEVBQUUsS0FBSztZQUNWLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDO2dCQUN2QixLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUs7Z0JBQ3JCLGlCQUFpQixFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLGlCQUFpQjthQUN0RSxDQUFDO1lBQ0YsTUFBTSxFQUFFLFlBQVksRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FDNUMsQ0FBQyxxQkFBcUIsRUFBRSxZQUFZLEVBQUUsRUFBRSxDQUFDO2dCQUN2QyxHQUFHLHFCQUFxQjtnQkFDeEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDO2FBQzFDLEVBQ0QsRUFBRSxDQUNIO1NBQ0YsQ0FBQyxDQUFDLENBQ0osQ0FDRixDQUFDO0lBUUMsQ0FBQztJQUVHLGVBQWU7UUFDcEIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRU0sWUFBWSxDQUFDLElBQVk7UUFDOUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLEdBQUcsQ0FBQyxTQUFTLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQ3RGLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBc0IsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN2RCxHQUFHLEtBQUs7WUFDUixXQUFXLEVBQUUsSUFBSTtTQUNsQixDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFTyxZQUFZLENBQ2xCLEtBQWdDLEVBQ2hDLElBQWtDO1FBRWxDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDeEUsR0FBRyxLQUFLLENBQUMsaUJBQWlCO1lBQzFCLFFBQVEsRUFBRSxLQUFLLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxJQUFJLHdCQUF3QixDQUFDLElBQUk7U0FDekUsQ0FBQyxDQUFDO1FBRUgsT0FBTztZQUNMLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRztZQUNkLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztZQUNsQixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7WUFDbEIsS0FBSyxFQUFFLGFBQWEsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7U0FDL0MsQ0FBQztJQUNKLENBQUM7SUFFTyxpQkFBaUI7UUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLGNBQWMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMxQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVPLGdCQUFnQixDQUFDLEtBQWlDO1FBQ3hELE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDO1FBRTVELElBQUksT0FBTyxZQUFZLEtBQUssUUFBUSxJQUFJLFlBQVksS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMzRCxJQUFJLFlBQVksR0FBRyxHQUFHLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUIsQ0FBQztpQkFBTSxJQUFJLFlBQVksR0FBRyxHQUFHLElBQUksWUFBWSxJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUNyRCxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5QixDQUFDO2lCQUFNLElBQUksWUFBWSxHQUFHLEdBQUcsSUFBSSxZQUFZLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ3RELElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlCLENBQUM7aUJBQU0sSUFBSSxZQUFZLEdBQUcsSUFBSSxFQUFFLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVPLFlBQVksQ0FBQyx5QkFBb0Q7UUFDdkUsTUFBTSxnQkFBZ0IsR0FBRyx5QkFBeUIsQ0FBQyxLQUFLLENBQUM7UUFDekQsTUFBTSw0QkFBNEIsR0FBRyx5QkFBeUIsQ0FBQyxpQkFBaUIsQ0FBQztRQUVqRixJQUFJLENBQUMsNEJBQTRCLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztZQUN0RCxPQUFPLGdCQUFnQixDQUFDO1FBQzFCLENBQUM7YUFBTSxJQUFJLDRCQUE0QixJQUFJLGdCQUFnQixFQUFFLENBQUM7WUFDNUQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRTtnQkFDbkUsR0FBRyw0QkFBNEI7Z0JBQy9CLFFBQVEsRUFBRSw0QkFBNEIsQ0FBQyxJQUFJO2FBQzVDLENBQUMsQ0FBQztZQUVILElBQUksY0FBYztnQkFBRSxPQUFPLGNBQWMsQ0FBQztRQUM1QyxDQUFDO1FBRUQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDOzhHQXJMVSx5QkFBeUI7a0dBQXpCLHlCQUF5Qiw4WENsRXRDLHdyRkErRUEscTlERHJCSSxZQUFZLHFSQUNaLFdBQVcseVdBQ1gsZ0JBQWdCLDhOQUNoQixXQUFXLDhCQUNYLGdCQUFnQixvUEFDaEIsZUFBZTs7MkZBR04seUJBQXlCO2tCQWhCckMsU0FBUzsrQkFDRSwyQkFBMkIsbUJBR3BCLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksY0FDekIsSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxnQkFBZ0I7d0JBQ2hCLFdBQVc7d0JBQ1gsZ0JBQWdCO3dCQUNoQixlQUFlO3FCQUNoQjs4SkFHcUMsS0FBSztzQkFBMUMsV0FBVzt1QkFBQyxPQUFPO2dCQUNtQixvQkFBb0I7c0JBQTFELFNBQVM7dUJBQUMsa0JBQWtCO2dCQUVHLFVBQVU7c0JBQXpDLEtBQUs7dUJBQUMsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDO2dCQUNTLE1BQU07c0JBQXJDLEtBQUs7dUJBQUMsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFDO2dCQUNILG1CQUFtQjtzQkFBdEMsS0FBSztnQkFjYyxVQUFVO3NCQUE3QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBzaWduYWwsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBJbnB1dE1vZHVsZSxcbiAgUGFnaW5hdGlvbk1vZGVsLFxuICBQYWdpbmF0aW9uTW9kdWxlLFxuICBUaWxlc01vZHVsZSxcbn0gZnJvbSAnY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhcic7XG5pbXBvcnQge1xuICBDYXNlV2lkZ2V0RGlzcGxheVR5cGVLZXksXG4gIENvbGxlY3Rpb25DYXNlV2lkZ2V0LFxuICBDb2xsZWN0aW9uQ2FzZVdpZGdldENhcmREYXRhLFxuICBDb2xsZWN0aW9uQ2FzZVdpZGdldEZpZWxkLFxuICBDb2xsZWN0aW9uQ2FzZVdpZGdldFRpdGxlLFxuICBDb2xsZWN0aW9uV2lkZ2V0UmVzb2x2ZWRGaWVsZCxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBmaWx0ZXIsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHN3aXRjaE1hcCwgdGFwfSBmcm9tICdyeGpzJztcbmltcG9ydCB7Q2FyYm9uTGlzdE1vZHVsZSwgVmlld0NvbnRlbnRTZXJ2aWNlfSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7UGFnZX0gZnJvbSAnQHZhbHRpbW8vY29uZmlnJztcbmltcG9ydCB7RG9zc2llcldpZGdldHNBcGlTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9zZXJ2aWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8td2lkZ2V0LWNvbGxlY3Rpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vd2lkZ2V0LWNvbGxlY3Rpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi93aWRnZXQtY29sbGVjdGlvbi5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBJbnB1dE1vZHVsZSxcbiAgICBQYWdpbmF0aW9uTW9kdWxlLFxuICAgIFRpbGVzTW9kdWxlLFxuICAgIENhcmJvbkxpc3RNb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBXaWRnZXRDb2xsZWN0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIHB1YmxpYyByZWFkb25seSBjbGFzcyA9ICd2YWx0aW1vLXdpZGdldC1jb2xsZWN0aW9uJztcbiAgQFZpZXdDaGlsZCgnd2lkZ2V0Q29sbGVjdGlvbicpIHByaXZhdGUgX3dpZGdldENvbGxlY3Rpb25SZWY6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuXG4gIEBJbnB1dCh7cmVxdWlyZWQ6IHRydWV9KSBwdWJsaWMgZG9jdW1lbnRJZDogc3RyaW5nO1xuICBASW5wdXQoe3JlcXVpcmVkOiB0cnVlfSkgcHVibGljIHRhYktleTogc3RyaW5nO1xuICBASW5wdXQoKSBwdWJsaWMgc2V0IHdpZGdldENvbmZpZ3VyYXRpb24odmFsdWU6IENvbGxlY3Rpb25DYXNlV2lkZ2V0KSB7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuO1xuICAgIHRoaXMud2lkZ2V0Q29uZmlndXJhdGlvbiQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgcHVibGljIHJlYWRvbmx5IHNob3dQYWdpbmF0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2luaXRpYWxOdW1iZXJPZkVsZW1lbnRzU3ViamVjdCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4obnVsbCk7XG5cbiAgcHJpdmF0ZSBnZXQgX2luaXRpYWxOdW1iZXJPZkVsZW1lbnRzJCgpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLl9pbml0aWFsTnVtYmVyT2ZFbGVtZW50c1N1YmplY3QkLnBpcGUoXG4gICAgICBmaWx0ZXIobnVtYmVyT2ZFbGVtZW50cyA9PiBudW1iZXJPZkVsZW1lbnRzICE9PSBudWxsKVxuICAgICk7XG4gIH1cblxuICBASW5wdXQoKSBwdWJsaWMgc2V0IHdpZGdldERhdGEodmFsdWU6IFBhZ2U8Q29sbGVjdGlvbkNhc2VXaWRnZXRDYXJkRGF0YT4gfCBudWxsKSB7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuO1xuXG4gICAgdGhpcy5zaG93UGFnaW5hdGlvbiQubmV4dCh2YWx1ZS50b3RhbEVsZW1lbnRzID4gdmFsdWUuc2l6ZSk7XG4gICAgdGhpcy5faW5pdGlhbE51bWJlck9mRWxlbWVudHNTdWJqZWN0JC5uZXh0KHZhbHVlLm51bWJlck9mRWxlbWVudHMpO1xuICAgIHRoaXMuX3dpZGdldERhdGFTdWJqZWN0JC5uZXh0KHZhbHVlLmNvbnRlbnQpO1xuXG4gICAgdGhpcy5wYWdpbmF0aW9uTW9kZWwuc2V0KFxuICAgICAgdmFsdWUudG90YWxQYWdlcyA8IDBcbiAgICAgICAgPyBudWxsXG4gICAgICAgIDoge1xuICAgICAgICAgICAgY3VycmVudFBhZ2U6IDEsXG4gICAgICAgICAgICB0b3RhbERhdGFMZW5ndGg6IE1hdGguY2VpbCh2YWx1ZS50b3RhbEVsZW1lbnRzIC8gdmFsdWUuc2l6ZSksXG4gICAgICAgICAgICBwYWdlTGVuZ3RoOiB2YWx1ZS5zaXplLFxuICAgICAgICAgIH1cbiAgICApO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSB3aWRnZXRUaXRsZSA9IHNpZ25hbCgnLScpO1xuXG4gIHB1YmxpYyByZWFkb25seSB3aWRnZXRDb25maWd1cmF0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q29sbGVjdGlvbkNhc2VXaWRnZXQgfCBudWxsPihudWxsKTtcbiAgcHVibGljIHJlYWRvbmx5IHBhZ2luYXRpb25Nb2RlbCA9IHNpZ25hbDxQYWdpbmF0aW9uTW9kZWw+KG5ldyBQYWdpbmF0aW9uTW9kZWwoKSk7XG4gIHB1YmxpYyByZWFkb25seSBhbW91bnRPZkNvbHVtbnMgPSBzaWduYWwoMCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfd2lkZ2V0RGF0YVN1YmplY3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDb2xsZWN0aW9uQ2FzZVdpZGdldENhcmREYXRhW10+KG51bGwpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3F1ZXJ5UGFyYW1zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfd2lkZ2V0RGF0YSQ6IE9ic2VydmFibGU8Q29sbGVjdGlvbkNhc2VXaWRnZXRDYXJkRGF0YVtdPiA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuX3dpZGdldERhdGFTdWJqZWN0JCxcbiAgICB0aGlzLl9xdWVyeVBhcmFtcyQsXG4gICAgdGhpcy5faW5pdGlhbE51bWJlck9mRWxlbWVudHMkLFxuICAgIHRoaXMud2lkZ2V0Q29uZmlndXJhdGlvbiQsXG4gIF0pLnBpcGUoXG4gICAgc3dpdGNoTWFwKChbZGF0YSwgcXVlcnlQYXJhbXMsIGluaXRpYWxOdW1iZXJPZkVsZW1lbnRzLCB3aWRnZXRDb25maWd1cmF0aW9uXSkgPT5cbiAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAhcXVlcnlQYXJhbXNcbiAgICAgICAgICA/IG9mKGRhdGEpXG4gICAgICAgICAgOiB0aGlzLndpZGdldEFwaVNlcnZpY2VcbiAgICAgICAgICAgICAgLmdldFdpZGdldERhdGEodGhpcy5kb2N1bWVudElkLCB0aGlzLnRhYktleSwgd2lkZ2V0Q29uZmlndXJhdGlvbi5rZXksIHF1ZXJ5UGFyYW1zKVxuICAgICAgICAgICAgICAucGlwZShtYXAoKHJlczogUGFnZTxDb2xsZWN0aW9uQ2FzZVdpZGdldENhcmREYXRhPikgPT4gcmVzLmNvbnRlbnQpKSxcbiAgICAgICAgb2YoaW5pdGlhbE51bWJlck9mRWxlbWVudHMpLFxuICAgICAgXSlcbiAgICApLFxuICAgIGZpbHRlcigoW2l0ZW1zXSkgPT4gISFpdGVtcyksXG4gICAgbWFwKChbaXRlbXMsIGluaXRpYWxOdW1iZXJPZkVsZW1lbnRzXSkgPT4ge1xuICAgICAgaWYgKGl0ZW1zLmxlbmd0aCA9PT0gaW5pdGlhbE51bWJlck9mRWxlbWVudHMpIHtcbiAgICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgICAgfVxuXG4gICAgICBjb25zdCByb3dzID0gbmV3IEFycmF5PG51bWJlcj4oaW5pdGlhbE51bWJlck9mRWxlbWVudHMpLmZpbGwobnVsbCk7XG5cbiAgICAgIHJldHVybiByb3dzLm1hcCgoXywgaW5kZXgpID0+IGl0ZW1zW2luZGV4XSB8fCB7Li4uaXRlbXNbMF0sIGhpZGRlbjogdHJ1ZX0pO1xuICAgIH0pXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGNvbGxlY3Rpb25XaWRnZXRDYXJkcyQ6IE9ic2VydmFibGU8XG4gICAge3RpdGxlOiBzdHJpbmc7IGZpZWxkczogQ29sbGVjdGlvbldpZGdldFJlc29sdmVkRmllbGRbXTsga2V5OiBudW1iZXI7IGhpZGRlbjogYm9vbGVhbn1bXVxuICA+ID0gY29tYmluZUxhdGVzdChbdGhpcy53aWRnZXRDb25maWd1cmF0aW9uJCwgdGhpcy5fd2lkZ2V0RGF0YSRdKS5waXBlKFxuICAgIGZpbHRlcigoW3dpZGdldENvbmZpZywgd2lkZ2V0RGF0YV0pID0+ICEhd2lkZ2V0Q29uZmlnICYmICEhd2lkZ2V0RGF0YSksXG4gICAgdGFwKChbd2lkZ2V0Q29uZmlnXSkgPT4gdGhpcy53aWRnZXRUaXRsZS5zZXQod2lkZ2V0Q29uZmlnLnRpdGxlKSksXG4gICAgbWFwKChbd2lkZ2V0Q29uZmlnLCB3aWRnZXREYXRhXSkgPT5cbiAgICAgIHdpZGdldERhdGEubWFwKChjYXJkRGF0YSwgaW5kZXgpID0+ICh7XG4gICAgICAgIGhpZGRlbjogY2FyZERhdGEuaGlkZGVuLFxuICAgICAgICBrZXk6IGluZGV4LFxuICAgICAgICB0aXRsZTogdGhpcy5nZXRDYXJkVGl0bGUoe1xuICAgICAgICAgIHZhbHVlOiBjYXJkRGF0YS50aXRsZSxcbiAgICAgICAgICBkaXNwbGF5UHJvcGVydGllczogd2lkZ2V0Q29uZmlnPy5wcm9wZXJ0aWVzPy50aXRsZT8uZGlzcGxheVByb3BlcnRpZXMsXG4gICAgICAgIH0pLFxuICAgICAgICBmaWVsZHM6IHdpZGdldENvbmZpZz8ucHJvcGVydGllcy5maWVsZHMucmVkdWNlKFxuICAgICAgICAgIChjYXJkRmllbGRzQWNjdW11bGF0b3IsIGN1cnJlbnRGaWVsZCkgPT4gW1xuICAgICAgICAgICAgLi4uY2FyZEZpZWxkc0FjY3VtdWxhdG9yLFxuICAgICAgICAgICAgdGhpcy5nZXRDYXJkRmllbGQoY3VycmVudEZpZWxkLCBjYXJkRGF0YSksXG4gICAgICAgICAgXSxcbiAgICAgICAgICBbXVxuICAgICAgICApLFxuICAgICAgfSkpXG4gICAgKVxuICApO1xuXG4gIHByaXZhdGUgX29ic2VydmVyITogUmVzaXplT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSB2aWV3Q29udGVudFNlcnZpY2U6IFZpZXdDb250ZW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSByZWFkb25seSB3aWRnZXRBcGlTZXJ2aWNlOiBEb3NzaWVyV2lkZ2V0c0FwaVNlcnZpY2VcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuV2lkdGhPYnNlcnZlcigpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX29ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBwdWJsaWMgb25TZWxlY3RQYWdlKHBhZ2U6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX3F1ZXJ5UGFyYW1zJC5uZXh0KGBwYWdlPSR7cGFnZSAtIDF9JnNpemU9JHt0aGlzLnBhZ2luYXRpb25Nb2RlbCgpLnBhZ2VMZW5ndGh9YCk7XG4gICAgdGhpcy5wYWdpbmF0aW9uTW9kZWwudXBkYXRlKChtb2RlbDogUGFnaW5hdGlvbk1vZGVsKSA9PiAoe1xuICAgICAgLi4ubW9kZWwsXG4gICAgICBjdXJyZW50UGFnZTogcGFnZSxcbiAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIGdldENhcmRGaWVsZChcbiAgICBmaWVsZDogQ29sbGVjdGlvbkNhc2VXaWRnZXRGaWVsZCxcbiAgICBkYXRhOiBDb2xsZWN0aW9uQ2FzZVdpZGdldENhcmREYXRhXG4gICk6IENvbGxlY3Rpb25XaWRnZXRSZXNvbHZlZEZpZWxkIHtcbiAgICBjb25zdCByZXNvbHZlZFZhbHVlID0gdGhpcy52aWV3Q29udGVudFNlcnZpY2UuZ2V0KGRhdGEuZmllbGRzW2ZpZWxkLmtleV0sIHtcbiAgICAgIC4uLmZpZWxkLmRpc3BsYXlQcm9wZXJ0aWVzLFxuICAgICAgdmlld1R5cGU6IGZpZWxkLmRpc3BsYXlQcm9wZXJ0aWVzPy50eXBlID8/IENhc2VXaWRnZXREaXNwbGF5VHlwZUtleS5URVhULFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGtleTogZmllbGQua2V5LFxuICAgICAgdGl0bGU6IGZpZWxkLnRpdGxlLFxuICAgICAgd2lkdGg6IGZpZWxkLndpZHRoLFxuICAgICAgdmFsdWU6IHJlc29sdmVkVmFsdWUgfHwgZGF0YS5maWVsZHNbZmllbGQua2V5XSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuV2lkdGhPYnNlcnZlcigpOiB2b2lkIHtcbiAgICB0aGlzLl9vYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihldmVudCA9PiB7XG4gICAgICB0aGlzLm9ic2VydmVyTXV0YXRpb24oZXZlbnQpO1xuICAgIH0pO1xuICAgIHRoaXMuX29ic2VydmVyLm9ic2VydmUodGhpcy5fd2lkZ2V0Q29sbGVjdGlvblJlZi5uYXRpdmVFbGVtZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgb2JzZXJ2ZXJNdXRhdGlvbihldmVudDogQXJyYXk8UmVzaXplT2JzZXJ2ZXJFbnRyeT4pOiB2b2lkIHtcbiAgICBjb25zdCBlbGVtZW50V2lkdGggPSBldmVudFswXT8uYm9yZGVyQm94U2l6ZVswXT8uaW5saW5lU2l6ZTtcblxuICAgIGlmICh0eXBlb2YgZWxlbWVudFdpZHRoID09PSAnbnVtYmVyJyAmJiBlbGVtZW50V2lkdGggIT09IDApIHtcbiAgICAgIGlmIChlbGVtZW50V2lkdGggPCA2NDApIHtcbiAgICAgICAgdGhpcy5hbW91bnRPZkNvbHVtbnMuc2V0KDEpO1xuICAgICAgfSBlbHNlIGlmIChlbGVtZW50V2lkdGggPiA2NDAgJiYgZWxlbWVudFdpZHRoIDw9IDc2OCkge1xuICAgICAgICB0aGlzLmFtb3VudE9mQ29sdW1ucy5zZXQoMik7XG4gICAgICB9IGVsc2UgaWYgKGVsZW1lbnRXaWR0aCA+IDc2OCAmJiBlbGVtZW50V2lkdGggPD0gMTA4MCkge1xuICAgICAgICB0aGlzLmFtb3VudE9mQ29sdW1ucy5zZXQoMyk7XG4gICAgICB9IGVsc2UgaWYgKGVsZW1lbnRXaWR0aCA+IDEwODApIHtcbiAgICAgICAgdGhpcy5hbW91bnRPZkNvbHVtbnMuc2V0KDQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2FyZFRpdGxlKGNvbGxlY3Rpb25DYXNlV2lkZ2V0VGl0bGU6IENvbGxlY3Rpb25DYXNlV2lkZ2V0VGl0bGUpOiBzdHJpbmcge1xuICAgIGNvbnN0IHdpZGdldFRpdGxlVmFsdWUgPSBjb2xsZWN0aW9uQ2FzZVdpZGdldFRpdGxlLnZhbHVlO1xuICAgIGNvbnN0IHdpZGdldFRpdGxlRGlzcGxheVByb3BlcnRpZXMgPSBjb2xsZWN0aW9uQ2FzZVdpZGdldFRpdGxlLmRpc3BsYXlQcm9wZXJ0aWVzO1xuXG4gICAgaWYgKCF3aWRnZXRUaXRsZURpc3BsYXlQcm9wZXJ0aWVzICYmIHdpZGdldFRpdGxlVmFsdWUpIHtcbiAgICAgIHJldHVybiB3aWRnZXRUaXRsZVZhbHVlO1xuICAgIH0gZWxzZSBpZiAod2lkZ2V0VGl0bGVEaXNwbGF5UHJvcGVydGllcyAmJiB3aWRnZXRUaXRsZVZhbHVlKSB7XG4gICAgICBjb25zdCBjb252ZXJ0ZWRUaXRsZSA9IHRoaXMudmlld0NvbnRlbnRTZXJ2aWNlLmdldCh3aWRnZXRUaXRsZVZhbHVlLCB7XG4gICAgICAgIC4uLndpZGdldFRpdGxlRGlzcGxheVByb3BlcnRpZXMsXG4gICAgICAgIHZpZXdUeXBlOiB3aWRnZXRUaXRsZURpc3BsYXlQcm9wZXJ0aWVzLnR5cGUsXG4gICAgICB9KTtcblxuICAgICAgaWYgKGNvbnZlcnRlZFRpdGxlKSByZXR1cm4gY29udmVydGVkVGl0bGU7XG4gICAgfVxuXG4gICAgcmV0dXJuICctJztcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48bmctY29udGFpbmVyXG4gICpuZ0lmPVwie1xuICAgIHdpZGdldENvbmZpZ3VyYXRpb246IHdpZGdldENvbmZpZ3VyYXRpb24kIHwgYXN5bmMsXG4gICAgY29sbGVjdGlvbldpZGdldENhcmRzOiBjb2xsZWN0aW9uV2lkZ2V0Q2FyZHMkIHwgYXN5bmNcbiAgfSBhcyBvYnNcIlxuPlxuICA8c3BhbiBjbGFzcz1cInZhbHRpbW8td2lkZ2V0LWNvbGxlY3Rpb25fX3RpdGxlXCI+e3sgd2lkZ2V0VGl0bGUoKSB9fTwvc3Bhbj5cblxuICA8ZGl2XG4gICAgI3dpZGdldENvbGxlY3Rpb25cbiAgICBbbmdDbGFzc109XCJ7XG4gICAgICAndmFsdGltby13aWRnZXQtY29sbGVjdGlvbl9fcmVuZGVyLXZlcnRpY2FsbHknOiBhbW91bnRPZkNvbHVtbnMoKSA9PT0gMSxcbiAgICAgICd2YWx0aW1vLXdpZGdldC1jb2xsZWN0aW9uX19yZW5kZXItdHdvLWNvbHVtbnMnOiBhbW91bnRPZkNvbHVtbnMoKSA9PT0gMixcbiAgICAgICd2YWx0aW1vLXdpZGdldC1jb2xsZWN0aW9uX19yZW5kZXItdGhyZWUtY29sdW1ucyc6IGFtb3VudE9mQ29sdW1ucygpID09PSAzLFxuICAgICAgJ3ZhbHRpbW8td2lkZ2V0LWNvbGxlY3Rpb25fX2NvbnRhaW5lcic6IGFtb3VudE9mQ29sdW1ucygpID09PSA0XG4gICAgfVwiXG4gID5cbiAgICBAZm9yIChjYXJkIG9mIG9icz8uY29sbGVjdGlvbldpZGdldENhcmRzOyB0cmFjayBjYXJkLmtleSkge1xuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInZhbHRpbW8td2lkZ2V0LWNvbGxlY3Rpb25fX2NhcmRcIlxuICAgICAgICBbbmdDbGFzc109XCJ7J3ZhbHRpbW8td2lkZ2V0LWNvbGxlY3Rpb25fX2NhcmQtLWhpZGRlbic6IGNhcmQuaGlkZGVufVwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdGltby13aWRnZXQtY29sbGVjdGlvbl9fY2FyZC10aXRsZVwiPnt7IGNhcmQudGl0bGUgfX08L3NwYW4+XG5cbiAgICAgICAgQGZvciAoZmllbGQgb2YgY2FyZC5maWVsZHM7IHRyYWNrIGZpZWxkLmtleSkge1xuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ3ZhbHRpbW8td2lkZ2V0LWNvbGxlY3Rpb25fX2Z1bGwtd2lkdGgtaW5wdXQnOiBmaWVsZD8ud2lkdGggPT09ICdmdWxsJyxcbiAgICAgICAgICAgICAgJ3ZhbHRpbW8td2lkZ2V0LWNvbGxlY3Rpb25fX2hhbGYtd2lkdGgtaW5wdXQnOiBmaWVsZD8ud2lkdGggPT09ICdoYWxmJ1xuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGNkcy1sYWJlbD5cbiAgICAgICAgICAgICAge3sgZmllbGQ/LnRpdGxlIH19XG5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cImZpZWxkPy52YWx1ZVwiXG4gICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidmFsdGltby13aWRnZXQtY29sbGVjdGlvbl9fY2FyZC1pbnB1dFwiXG4gICAgICAgICAgICAgICAgY2RzVGV4dFxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9jZHMtbGFiZWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG5cbiAgQGlmICghb2JzPy5jb2xsZWN0aW9uV2lkZ2V0Q2FyZHM/Lmxlbmd0aCkge1xuICAgIDx2YWx0aW1vLW5vLXJlc3VsdHNcbiAgICAgIFtjb2xsYXBzZVZlcnRpY2FsbHldPVwidHJ1ZVwiXG4gICAgICBbZGVzY3JpcHRpb25dPVwiJ2Rvc3NpZXIud2lkZ2V0cy5ub0RhdGEnIHwgdHJhbnNsYXRlXCJcbiAgICAgIFtzbWFsbFBhZGRpbmddPVwidHJ1ZVwiXG4gICAgPjwvdmFsdGltby1uby1yZXN1bHRzPlxuICB9XG5cbiAgPGNkcy1wYWdpbmF0aW9uLW5hdlxuICAgICpuZ0lmPVwicGFnaW5hdGlvbk1vZGVsKCkgJiYgKHNob3dQYWdpbmF0aW9uJCB8IGFzeW5jKVwiXG4gICAgY2xhc3M9XCJ2YWx0aW1vLXdpZGdldC1jb2xsZWN0aW9uX19wYWdpbmF0aW9uXCJcbiAgICBbbW9kZWxdPVwicGFnaW5hdGlvbk1vZGVsKClcIlxuICAgIChzZWxlY3RQYWdlKT1cIm9uU2VsZWN0UGFnZSgkZXZlbnQpXCJcbiAgPlxuICA8L2Nkcy1wYWdpbmF0aW9uLW5hdj5cbjwvbmctY29udGFpbmVyPlxuIl19
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { ChangeDetectionStrategy, Component, Inject, Input, Optional, signal, ViewChild, ViewContainerRef, } from '@angular/core';
|
|
17
|
+
import { CommonModule } from '@angular/common';
|
|
18
|
+
import { CUSTOM_CASE_WIDGET_TOKEN } from '../../../../../../constants';
|
|
19
|
+
import { BehaviorSubject, combineLatest, filter, Subscription } from 'rxjs';
|
|
20
|
+
import { CarbonListModule } from '@valtimo/components';
|
|
21
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
22
|
+
import * as i0 from "@angular/core";
|
|
23
|
+
import * as i1 from "@angular/common";
|
|
24
|
+
import * as i2 from "@valtimo/components";
|
|
25
|
+
import * as i3 from "@ngx-translate/core";
|
|
26
|
+
export class WidgetCustomComponent {
|
|
27
|
+
set widgetConfig(value) {
|
|
28
|
+
if (value)
|
|
29
|
+
this._widgetConfigSubject$.next(value);
|
|
30
|
+
}
|
|
31
|
+
get widgetConfig$() {
|
|
32
|
+
return this._widgetConfigSubject$.pipe(filter(config => config !== null));
|
|
33
|
+
}
|
|
34
|
+
constructor(customCaseWidgetConfig, cdr) {
|
|
35
|
+
this.customCaseWidgetConfig = customCaseWidgetConfig;
|
|
36
|
+
this.cdr = cdr;
|
|
37
|
+
this._customCaseWidgetConfig$ = new BehaviorSubject({});
|
|
38
|
+
this._widgetConfigSubject$ = new BehaviorSubject(null);
|
|
39
|
+
this.noCustomComponentAvailable = signal(false);
|
|
40
|
+
this._subscriptions = new Subscription();
|
|
41
|
+
if (customCaseWidgetConfig)
|
|
42
|
+
this._customCaseWidgetConfig$.next(customCaseWidgetConfig);
|
|
43
|
+
}
|
|
44
|
+
ngAfterViewInit() {
|
|
45
|
+
this.openCustomWidgetSubscription();
|
|
46
|
+
}
|
|
47
|
+
ngOnDestroy() {
|
|
48
|
+
this._subscriptions.unsubscribe();
|
|
49
|
+
}
|
|
50
|
+
openCustomWidgetSubscription() {
|
|
51
|
+
this._subscriptions.add(combineLatest([this.widgetConfig$, this._customCaseWidgetConfig$]).subscribe(([widgetConfig, customCaseWidgetConfig]) => {
|
|
52
|
+
const customWidgetComponentKey = widgetConfig?.properties?.componentKey;
|
|
53
|
+
const customComponent = customCaseWidgetConfig[customWidgetComponentKey];
|
|
54
|
+
if (!customComponent) {
|
|
55
|
+
this.noCustomComponentAvailable.set(true);
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
const componentRef = this._customWidgetContainerRef.createComponent(customComponent);
|
|
59
|
+
componentRef.changeDetectorRef.detectChanges();
|
|
60
|
+
this.cdr.detectChanges();
|
|
61
|
+
}));
|
|
62
|
+
}
|
|
63
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: WidgetCustomComponent, deps: [{ token: CUSTOM_CASE_WIDGET_TOKEN, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
64
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", type: WidgetCustomComponent, isStandalone: true, selector: "valtimo-widget-custom", inputs: { widgetConfig: "widgetConfig" }, viewQueries: [{ propertyName: "_customWidgetContainerRef", first: true, predicate: ["customWidgetContainer"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"custom-widget\">\n <h4 class=\"custom-widget__title\">{{ (widgetConfig$ | async)?.title || '-' }}</h4>\n\n <div class=\"custom-widget__content\">\n <ng-template #customWidgetContainer></ng-template>\n\n @if (noCustomComponentAvailable()) {\n <valtimo-no-results\n [collapseVertically]=\"true\"\n [description]=\"'dossier.widgets.noCustomComponentDescription' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n }\n </div>\n</div>\n", styles: [".custom-widget{padding:24px}.custom-widget__title{color:var(--cds-text-primary);font-weight:600;font-size:16px;line-height:24px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: CarbonListModule }, { kind: "component", type: i2.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
65
|
+
}
|
|
66
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: WidgetCustomComponent, decorators: [{
|
|
67
|
+
type: Component,
|
|
68
|
+
args: [{ selector: 'valtimo-widget-custom', standalone: true, imports: [CommonModule, CarbonListModule, TranslateModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"custom-widget\">\n <h4 class=\"custom-widget__title\">{{ (widgetConfig$ | async)?.title || '-' }}</h4>\n\n <div class=\"custom-widget__content\">\n <ng-template #customWidgetContainer></ng-template>\n\n @if (noCustomComponentAvailable()) {\n <valtimo-no-results\n [collapseVertically]=\"true\"\n [description]=\"'dossier.widgets.noCustomComponentDescription' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n }\n </div>\n</div>\n", styles: [".custom-widget{padding:24px}.custom-widget__title{color:var(--cds-text-primary);font-weight:600;font-size:16px;line-height:24px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
69
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
70
|
+
type: Optional
|
|
71
|
+
}, {
|
|
72
|
+
type: Inject,
|
|
73
|
+
args: [CUSTOM_CASE_WIDGET_TOKEN]
|
|
74
|
+
}] }, { type: i0.ChangeDetectorRef }], propDecorators: { _customWidgetContainerRef: [{
|
|
75
|
+
type: ViewChild,
|
|
76
|
+
args: ['customWidgetContainer', { read: ViewContainerRef }]
|
|
77
|
+
}], widgetConfig: [{
|
|
78
|
+
type: Input
|
|
79
|
+
}] } });
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWN1c3RvbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rvc3NpZXIvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItZGV0YWlsL3RhYi93aWRnZXRzL2NvbXBvbmVudHMvY3VzdG9tL3dpZGdldC1jdXN0b20uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyL3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLWRldGFpbC90YWIvd2lkZ2V0cy9jb21wb25lbnRzL2N1c3RvbS93aWRnZXQtY3VzdG9tLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsTUFBTSxFQUNOLEtBQUssRUFFTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLFNBQVMsRUFDVCxnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRTdDLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3JFLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBYyxZQUFZLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDdEYsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDOzs7OztBQVVwRCxNQUFNLE9BQU8scUJBQXFCO0lBSWhDLElBQW9CLFlBQVksQ0FBQyxLQUF1QjtRQUN0RCxJQUFJLEtBQUs7WUFBRSxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFNRCxJQUFXLGFBQWE7UUFDdEIsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFNRCxZQUdtQixzQkFBOEMsRUFDOUMsR0FBc0I7UUFEdEIsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUM5QyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQWhCeEIsNkJBQXdCLEdBQUcsSUFBSSxlQUFlLENBQThCLEVBQUUsQ0FBQyxDQUFDO1FBRWhGLDBCQUFxQixHQUFHLElBQUksZUFBZSxDQUEwQixJQUFJLENBQUMsQ0FBQztRQU01RSwrQkFBMEIsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFMUMsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBUW5ELElBQUksc0JBQXNCO1lBQUUsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQ3pGLENBQUM7SUFFTSxlQUFlO1FBQ3BCLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVPLDRCQUE0QjtRQUNsQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FDckIsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FDMUUsQ0FBQyxDQUFDLFlBQVksRUFBRSxzQkFBc0IsQ0FBQyxFQUFFLEVBQUU7WUFDekMsTUFBTSx3QkFBd0IsR0FBRyxZQUFZLEVBQUUsVUFBVSxFQUFFLFlBQVksQ0FBQztZQUN4RSxNQUFNLGVBQWUsR0FBRyxzQkFBc0IsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1lBRXpFLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDckIsSUFBSSxDQUFDLDBCQUEwQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDMUMsT0FBTztZQUNULENBQUM7WUFFRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBRXJGLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMvQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzNCLENBQUMsQ0FDRixDQUNGLENBQUM7SUFDSixDQUFDOzhHQXhEVSxxQkFBcUIsa0JBc0J0Qix3QkFBd0I7a0dBdEJ2QixxQkFBcUIsME9BQ1csZ0JBQWdCLDZCQzdDN0Qsd29DQStCQSx5ekJEVVksWUFBWSxtRkFBRSxnQkFBZ0Isb1BBQUUsZUFBZTs7MkZBRzlDLHFCQUFxQjtrQkFSakMsU0FBUzsrQkFDRSx1QkFBdUIsY0FHckIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGdCQUFnQixFQUFFLGVBQWUsQ0FBQyxtQkFDekMsdUJBQXVCLENBQUMsTUFBTTs7MEJBdUI1QyxRQUFROzswQkFDUixNQUFNOzJCQUFDLHdCQUF3Qjt5RUFwQmpCLHlCQUF5QjtzQkFEekMsU0FBUzt1QkFBQyx1QkFBdUIsRUFBRSxFQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBQztnQkFHeEMsWUFBWTtzQkFBL0IsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9wdGlvbmFsLFxuICBzaWduYWwsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7Q3VzdG9tQ2FzZVdpZGdldCwgQ3VzdG9tQ2FzZVdpZGdldENvbmZpZ30gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7Q1VTVE9NX0NBU0VfV0lER0VUX1RPS0VOfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGZpbHRlciwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7Q2FyYm9uTGlzdE1vZHVsZX0gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8td2lkZ2V0LWN1c3RvbScsXG4gIHRlbXBsYXRlVXJsOiAnLi93aWRnZXQtY3VzdG9tLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vd2lkZ2V0LWN1c3RvbS5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBDYXJib25MaXN0TW9kdWxlLCBUcmFuc2xhdGVNb2R1bGVdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgV2lkZ2V0Q3VzdG9tQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZCgnY3VzdG9tV2lkZ2V0Q29udGFpbmVyJywge3JlYWQ6IFZpZXdDb250YWluZXJSZWZ9KVxuICBwcml2YXRlIHJlYWRvbmx5IF9jdXN0b21XaWRnZXRDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgQElucHV0KCkgcHVibGljIHNldCB3aWRnZXRDb25maWcodmFsdWU6IEN1c3RvbUNhc2VXaWRnZXQpIHtcbiAgICBpZiAodmFsdWUpIHRoaXMuX3dpZGdldENvbmZpZ1N1YmplY3QkLm5leHQodmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfY3VzdG9tQ2FzZVdpZGdldENvbmZpZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEN1c3RvbUNhc2VXaWRnZXRDb25maWcgfCB7fT4oe30pO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3dpZGdldENvbmZpZ1N1YmplY3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDdXN0b21DYXNlV2lkZ2V0IHwgbnVsbD4obnVsbCk7XG5cbiAgcHVibGljIGdldCB3aWRnZXRDb25maWckKCk6IE9ic2VydmFibGU8Q3VzdG9tQ2FzZVdpZGdldD4ge1xuICAgIHJldHVybiB0aGlzLl93aWRnZXRDb25maWdTdWJqZWN0JC5waXBlKGZpbHRlcihjb25maWcgPT4gY29uZmlnICE9PSBudWxsKSk7XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgbm9DdXN0b21Db21wb25lbnRBdmFpbGFibGUgPSBzaWduYWwoZmFsc2UpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKClcbiAgICBASW5qZWN0KENVU1RPTV9DQVNFX1dJREdFVF9UT0tFTilcbiAgICBwcml2YXRlIHJlYWRvbmx5IGN1c3RvbUNhc2VXaWRnZXRDb25maWc6IEN1c3RvbUNhc2VXaWRnZXRDb25maWcsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIGlmIChjdXN0b21DYXNlV2lkZ2V0Q29uZmlnKSB0aGlzLl9jdXN0b21DYXNlV2lkZ2V0Q29uZmlnJC5uZXh0KGN1c3RvbUNhc2VXaWRnZXRDb25maWcpO1xuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW5DdXN0b21XaWRnZXRTdWJzY3JpcHRpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5DdXN0b21XaWRnZXRTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLndpZGdldENvbmZpZyQsIHRoaXMuX2N1c3RvbUNhc2VXaWRnZXRDb25maWckXSkuc3Vic2NyaWJlKFxuICAgICAgICAoW3dpZGdldENvbmZpZywgY3VzdG9tQ2FzZVdpZGdldENvbmZpZ10pID0+IHtcbiAgICAgICAgICBjb25zdCBjdXN0b21XaWRnZXRDb21wb25lbnRLZXkgPSB3aWRnZXRDb25maWc/LnByb3BlcnRpZXM/LmNvbXBvbmVudEtleTtcbiAgICAgICAgICBjb25zdCBjdXN0b21Db21wb25lbnQgPSBjdXN0b21DYXNlV2lkZ2V0Q29uZmlnW2N1c3RvbVdpZGdldENvbXBvbmVudEtleV07XG5cbiAgICAgICAgICBpZiAoIWN1c3RvbUNvbXBvbmVudCkge1xuICAgICAgICAgICAgdGhpcy5ub0N1c3RvbUNvbXBvbmVudEF2YWlsYWJsZS5zZXQodHJ1ZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy5fY3VzdG9tV2lkZ2V0Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChjdXN0b21Db21wb25lbnQpO1xuXG4gICAgICAgICAgY29tcG9uZW50UmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICAgIClcbiAgICApO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjxkaXYgY2xhc3M9XCJjdXN0b20td2lkZ2V0XCI+XG4gIDxoNCBjbGFzcz1cImN1c3RvbS13aWRnZXRfX3RpdGxlXCI+e3sgKHdpZGdldENvbmZpZyQgfCBhc3luYyk/LnRpdGxlIHx8ICctJyB9fTwvaDQ+XG5cbiAgPGRpdiBjbGFzcz1cImN1c3RvbS13aWRnZXRfX2NvbnRlbnRcIj5cbiAgICA8bmctdGVtcGxhdGUgI2N1c3RvbVdpZGdldENvbnRhaW5lcj48L25nLXRlbXBsYXRlPlxuXG4gICAgQGlmIChub0N1c3RvbUNvbXBvbmVudEF2YWlsYWJsZSgpKSB7XG4gICAgICA8dmFsdGltby1uby1yZXN1bHRzXG4gICAgICAgIFtjb2xsYXBzZVZlcnRpY2FsbHldPVwidHJ1ZVwiXG4gICAgICAgIFtkZXNjcmlwdGlvbl09XCInZG9zc2llci53aWRnZXRzLm5vQ3VzdG9tQ29tcG9uZW50RGVzY3JpcHRpb24nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW3NtYWxsUGFkZGluZ109XCJ0cnVlXCJcbiAgICAgID48L3ZhbHRpbW8tbm8tcmVzdWx0cz5cbiAgICB9XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { ChangeDetectionStrategy, Component, HostBinding, Input, signal, ViewChild, ViewEncapsulation, } from '@angular/core';
|
|
17
|
+
import { CarbonListModule } from '@valtimo/components';
|
|
18
|
+
import { CommonModule } from '@angular/common';
|
|
19
|
+
import { BehaviorSubject, combineLatest, map } from 'rxjs';
|
|
20
|
+
import { InputModule } from 'carbon-components-angular';
|
|
21
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
22
|
+
import * as i0 from "@angular/core";
|
|
23
|
+
import * as i1 from "@valtimo/components";
|
|
24
|
+
import * as i2 from "@angular/common";
|
|
25
|
+
import * as i3 from "carbon-components-angular";
|
|
26
|
+
import * as i4 from "@ngx-translate/core";
|
|
27
|
+
export class WidgetFieldComponent {
|
|
28
|
+
set widgetConfiguration(value) {
|
|
29
|
+
if (!value)
|
|
30
|
+
return;
|
|
31
|
+
this.widgetConfiguration$.next(value);
|
|
32
|
+
}
|
|
33
|
+
set widgetData(value) {
|
|
34
|
+
if (!value)
|
|
35
|
+
return;
|
|
36
|
+
this.widgetData$.next(value);
|
|
37
|
+
this.isEmptyWidgetData$.next(this.checkEmptyWidgetData(value));
|
|
38
|
+
}
|
|
39
|
+
constructor(viewContentService) {
|
|
40
|
+
this.viewContentService = viewContentService;
|
|
41
|
+
this.class = 'widget-field';
|
|
42
|
+
this.collapseVertically = false;
|
|
43
|
+
this.isEmptyWidgetData$ = new BehaviorSubject(false);
|
|
44
|
+
this.renderVertically = signal(0);
|
|
45
|
+
this.widgetConfiguration$ = new BehaviorSubject(null);
|
|
46
|
+
this.widgetData$ = new BehaviorSubject(null);
|
|
47
|
+
this.widgetPropertyValue$ = combineLatest([this.widgetConfiguration$, this.widgetData$]).pipe(map(([widget, widgetData]) => widget?.properties.columns.map(column => column.reduce((columnFields, property) => [
|
|
48
|
+
...columnFields,
|
|
49
|
+
...(widgetData?.hasOwnProperty(property.key)
|
|
50
|
+
? [
|
|
51
|
+
{
|
|
52
|
+
title: property.title,
|
|
53
|
+
value: widgetData[property.key] !== null && widgetData[property.key] !== undefined
|
|
54
|
+
? this.viewContentService.get(widgetData[property.key], {
|
|
55
|
+
...property.displayProperties,
|
|
56
|
+
viewType: property.displayProperties?.type ?? 'text',
|
|
57
|
+
})
|
|
58
|
+
: '-',
|
|
59
|
+
},
|
|
60
|
+
]
|
|
61
|
+
: []),
|
|
62
|
+
], []))));
|
|
63
|
+
}
|
|
64
|
+
ngAfterViewInit() {
|
|
65
|
+
if (this.collapseVertically && this._widgetFieldRef)
|
|
66
|
+
this.openWidthObserver();
|
|
67
|
+
}
|
|
68
|
+
ngOnDestroy() {
|
|
69
|
+
this._observer?.disconnect();
|
|
70
|
+
}
|
|
71
|
+
openWidthObserver() {
|
|
72
|
+
this._observer = new ResizeObserver(event => {
|
|
73
|
+
this.observerMutation(event);
|
|
74
|
+
});
|
|
75
|
+
this._observer.observe(this._widgetFieldRef.nativeElement);
|
|
76
|
+
}
|
|
77
|
+
observerMutation(event) {
|
|
78
|
+
const elementWidth = event[0]?.borderBoxSize[0]?.inlineSize;
|
|
79
|
+
if (typeof elementWidth === 'number' && elementWidth !== 0) {
|
|
80
|
+
if (elementWidth < 640) {
|
|
81
|
+
this.renderVertically.set(1);
|
|
82
|
+
}
|
|
83
|
+
else if (elementWidth > 640 && elementWidth <= 768) {
|
|
84
|
+
this.renderVertically.set(2);
|
|
85
|
+
}
|
|
86
|
+
else if (elementWidth > 768 && elementWidth <= 1080) {
|
|
87
|
+
this.renderVertically.set(3);
|
|
88
|
+
}
|
|
89
|
+
else if (elementWidth > 1080) {
|
|
90
|
+
this.renderVertically.set(4);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
checkEmptyWidgetData(widgetData) {
|
|
95
|
+
return widgetData && Object.keys(widgetData).length === 0;
|
|
96
|
+
}
|
|
97
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: WidgetFieldComponent, deps: [{ token: i1.ViewContentService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
98
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", type: WidgetFieldComponent, isStandalone: true, selector: "valtimo-widget-field", inputs: { collapseVertically: "collapseVertically", widgetConfiguration: "widgetConfiguration", widgetData: "widgetData" }, host: { properties: { "class": "this.class" } }, viewQueries: [{ propertyName: "_widgetFieldRef", first: true, predicate: ["widgetField"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetPropertyValue: widgetPropertyValue$ | async,\n widgetData: widgetData$ | async,\n isEmptyWidgetData: isEmptyWidgetData$ | async\n } as obs\"\n>\n <h4 class=\"widget-field__title\">{{ obs?.widgetConfiguration?.title }}</h4>\n\n @if (obs?.isEmptyWidgetData) {\n <valtimo-no-results\n [collapseVertically]=\"true\"\n [description]=\"'dossier.widgets.noData' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n } @else {\n <div\n #widgetField\n [ngClass]=\"{\n 'widget-field__render-vertically': renderVertically() === 1,\n 'widget-field__render-two-columns': renderVertically() === 2,\n 'widget-field__render-three-columns': renderVertically() === 3,\n 'widget-field__container': renderVertically() === 4\n }\"\n >\n @for (column of obs?.widgetPropertyValue; track column.key) {\n <div class=\"widget-field__column\">\n @for (property of column; track property) {\n <cds-label>\n {{ property?.title }}\n\n <input cdsText [value]=\"property?.value\" [readonly]=\"true\" />\n </cds-label>\n }\n </div>\n }\n </div>\n }\n</ng-container>\n", styles: [".widget-field{padding:24px}.widget-field,.widget-field__column{display:flex;flex-direction:column;gap:16px}.widget-field__title{color:var(--cds-text-primary);font-weight:600;font-size:16px;line-height:24px}.widget-field__container{display:grid;grid-gap:24px;grid-template-columns:repeat(4,1fr)}.widget-field__render-vertically,.widget-field__render-two-columns,.widget-field__render-three-columns{display:grid;grid-gap:24px}.widget-field__render-vertically{grid-template-columns:repeat(1,1fr)}.widget-field__render-two-columns{grid-template-columns:repeat(2,1fr)}.widget-field__render-three-columns{grid-template-columns:repeat(3,1fr)}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: InputModule }, { kind: "component", type: i3.Label, selector: "cds-label, ibm-label", inputs: ["labelInputID", "disabled", "skeleton", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i3.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: CarbonListModule }, { kind: "component", type: i1.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
99
|
+
}
|
|
100
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: WidgetFieldComponent, decorators: [{
|
|
101
|
+
type: Component,
|
|
102
|
+
args: [{ selector: 'valtimo-widget-field', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, imports: [CommonModule, WidgetFieldComponent, InputModule, TranslateModule, CarbonListModule], template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n widgetConfiguration: widgetConfiguration$ | async,\n widgetPropertyValue: widgetPropertyValue$ | async,\n widgetData: widgetData$ | async,\n isEmptyWidgetData: isEmptyWidgetData$ | async\n } as obs\"\n>\n <h4 class=\"widget-field__title\">{{ obs?.widgetConfiguration?.title }}</h4>\n\n @if (obs?.isEmptyWidgetData) {\n <valtimo-no-results\n [collapseVertically]=\"true\"\n [description]=\"'dossier.widgets.noData' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n } @else {\n <div\n #widgetField\n [ngClass]=\"{\n 'widget-field__render-vertically': renderVertically() === 1,\n 'widget-field__render-two-columns': renderVertically() === 2,\n 'widget-field__render-three-columns': renderVertically() === 3,\n 'widget-field__container': renderVertically() === 4\n }\"\n >\n @for (column of obs?.widgetPropertyValue; track column.key) {\n <div class=\"widget-field__column\">\n @for (property of column; track property) {\n <cds-label>\n {{ property?.title }}\n\n <input cdsText [value]=\"property?.value\" [readonly]=\"true\" />\n </cds-label>\n }\n </div>\n }\n </div>\n }\n</ng-container>\n", styles: [".widget-field{padding:24px}.widget-field,.widget-field__column{display:flex;flex-direction:column;gap:16px}.widget-field__title{color:var(--cds-text-primary);font-weight:600;font-size:16px;line-height:24px}.widget-field__container{display:grid;grid-gap:24px;grid-template-columns:repeat(4,1fr)}.widget-field__render-vertically,.widget-field__render-two-columns,.widget-field__render-three-columns{display:grid;grid-gap:24px}.widget-field__render-vertically{grid-template-columns:repeat(1,1fr)}.widget-field__render-two-columns{grid-template-columns:repeat(2,1fr)}.widget-field__render-three-columns{grid-template-columns:repeat(3,1fr)}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
103
|
+
}], ctorParameters: () => [{ type: i1.ViewContentService }], propDecorators: { class: [{
|
|
104
|
+
type: HostBinding,
|
|
105
|
+
args: ['class']
|
|
106
|
+
}], _widgetFieldRef: [{
|
|
107
|
+
type: ViewChild,
|
|
108
|
+
args: ['widgetField']
|
|
109
|
+
}], collapseVertically: [{
|
|
110
|
+
type: Input
|
|
111
|
+
}], widgetConfiguration: [{
|
|
112
|
+
type: Input
|
|
113
|
+
}], widgetData: [{
|
|
114
|
+
type: Input
|
|
115
|
+
}] } });
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci9zcmMvbGliL2NvbXBvbmVudHMvZG9zc2llci1kZXRhaWwvdGFiL3dpZGdldHMvY29tcG9uZW50cy9maWVsZC93aWRnZXQtZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyL3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLWRldGFpbC90YWIvd2lkZ2V0cy9jb21wb25lbnRzL2ZpZWxkL3dpZGdldC1maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUVULFdBQVcsRUFDWCxLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGdCQUFnQixFQUFxQixNQUFNLHFCQUFxQixDQUFDO0FBQ3pFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQWEsTUFBTSxNQUFNLENBQUM7QUFFckUsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQ3RELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7O0FBV3BELE1BQU0sT0FBTyxvQkFBb0I7SUFNL0IsSUFBb0IsbUJBQW1CLENBQUMsS0FBdUI7UUFDN0QsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPO1FBQ25CLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFD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O3NCQUFoRCxTQUFTO3VCQUFDLGFBQWE7Z0JBRWYsa0JBQWtCO3NCQUExQixLQUFLO2dCQUNjLG1CQUFtQjtzQkFBdEMsS0FBSztnQkFNYyxVQUFVO3NCQUE3QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIHNpZ25hbCxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NhcmJvbkxpc3RNb2R1bGUsIFZpZXdDb250ZW50U2VydmljZX0gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBtYXAsIE9ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtGaWVsZHNDYXNlV2lkZ2V0fSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtJbnB1dE1vZHVsZX0gZnJvbSAnY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhcic7XG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8td2lkZ2V0LWZpZWxkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dpZGdldC1maWVsZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3dpZGdldC1maWVsZC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgV2lkZ2V0RmllbGRDb21wb25lbnQsIElucHV0TW9kdWxlLCBUcmFuc2xhdGVNb2R1bGUsIENhcmJvbkxpc3RNb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBXaWRnZXRGaWVsZENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIEBIb3N0QmluZGluZygnY2xhc3MnKSBwdWJsaWMgcmVhZG9ubHkgY2xhc3MgPSAnd2lkZ2V0LWZpZWxkJztcblxuICBAVmlld0NoaWxkKCd3aWRnZXRGaWVsZCcpIHByaXZhdGUgX3dpZGdldEZpZWxkUmVmOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICBASW5wdXQoKSBjb2xsYXBzZVZlcnRpY2FsbHkgPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIHNldCB3aWRnZXRDb25maWd1cmF0aW9uKHZhbHVlOiBGaWVsZHNDYXNlV2lkZ2V0KSB7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuO1xuICAgIHRoaXMud2lkZ2V0Q29uZmlndXJhdGlvbiQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgcHVibGljIHJlYWRvbmx5IGlzRW1wdHlXaWRnZXREYXRhJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgd2lkZ2V0RGF0YSh2YWx1ZTogb2JqZWN0KSB7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuO1xuICAgIHRoaXMud2lkZ2V0RGF0YSQubmV4dCh2YWx1ZSk7XG4gICAgdGhpcy5pc0VtcHR5V2lkZ2V0RGF0YSQubmV4dCh0aGlzLmNoZWNrRW1wdHlXaWRnZXREYXRhKHZhbHVlKSk7XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgcmVuZGVyVmVydGljYWxseSA9IHNpZ25hbCgwKTtcbiAgcHVibGljIHJlYWRvbmx5IHdpZGdldENvbmZpZ3VyYXRpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGaWVsZHNDYXNlV2lkZ2V0IHwgbnVsbD4obnVsbCk7XG4gIHB1YmxpYyByZWFkb25seSB3aWRnZXREYXRhJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8b2JqZWN0IHwgbnVsbD4obnVsbCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHdpZGdldFByb3BlcnR5VmFsdWUkOiBPYnNlcnZhYmxlPHt0aXRsZTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nfVtdW10+ID1cbiAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLndpZGdldENvbmZpZ3VyYXRpb24kLCB0aGlzLndpZGdldERhdGEkXSkucGlwZShcbiAgICAgIG1hcCgoW3dpZGdldCwgd2lkZ2V0RGF0YV0pID0+XG4gICAgICAgIHdpZGdldD8ucHJvcGVydGllcy5jb2x1bW5zLm1hcChjb2x1bW4gPT5cbiAgICAgICAgICBjb2x1bW4ucmVkdWNlKFxuICAgICAgICAgICAgKGNvbHVtbkZpZWxkcywgcHJvcGVydHkpID0+IFtcbiAgICAgICAgICAgICAgLi4uY29sdW1uRmllbGRzLFxuICAgICAgICAgICAgICAuLi4od2lkZ2V0RGF0YT8uaGFzT3duUHJvcGVydHkocHJvcGVydHkua2V5KVxuICAgICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BlcnR5LnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOlxuICAgICAgICAgICAgICAgICAgICAgICAgd2lkZ2V0RGF0YVtwcm9wZXJ0eS5rZXldICE9PSBudWxsICYmIHdpZGdldERhdGFbcHJvcGVydHkua2V5XSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy52aWV3Q29udGVudFNlcnZpY2UuZ2V0KHdpZGdldERhdGFbcHJvcGVydHkua2V5XSwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucHJvcGVydHkuZGlzcGxheVByb3BlcnRpZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3VHlwZTogcHJvcGVydHkuZGlzcGxheVByb3BlcnRpZXM/LnR5cGUgPz8gJ3RleHQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogJy0nLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgIDogW10pLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFtdXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApXG4gICAgKTtcblxuICBwcml2YXRlIF9vYnNlcnZlciE6IFJlc2l6ZU9ic2VydmVyO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdmlld0NvbnRlbnRTZXJ2aWNlOiBWaWV3Q29udGVudFNlcnZpY2UpIHt9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb2xsYXBzZVZlcnRpY2FsbHkgJiYgdGhpcy5fd2lkZ2V0RmllbGRSZWYpIHRoaXMub3BlbldpZHRoT2JzZXJ2ZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9vYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuV2lkdGhPYnNlcnZlcigpOiB2b2lkIHtcbiAgICB0aGlzLl9vYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihldmVudCA9PiB7XG4gICAgICB0aGlzLm9ic2VydmVyTXV0YXRpb24oZXZlbnQpO1xuICAgIH0pO1xuICAgIHRoaXMuX29ic2VydmVyLm9ic2VydmUodGhpcy5fd2lkZ2V0RmllbGRSZWYubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICBwcml2YXRlIG9ic2VydmVyTXV0YXRpb24oZXZlbnQ6IEFycmF5PFJlc2l6ZU9ic2VydmVyRW50cnk+KTogdm9pZCB7XG4gICAgY29uc3QgZWxlbWVudFdpZHRoID0gZXZlbnRbMF0/LmJvcmRlckJveFNpemVbMF0/LmlubGluZVNpemU7XG5cbiAgICBpZiAodHlwZW9mIGVsZW1lbnRXaWR0aCA9PT0gJ251bWJlcicgJiYgZWxlbWVudFdpZHRoICE9PSAwKSB7XG4gICAgICBpZiAoZWxlbWVudFdpZHRoIDwgNjQwKSB7XG4gICAgICAgIHRoaXMucmVuZGVyVmVydGljYWxseS5zZXQoMSk7XG4gICAgICB9IGVsc2UgaWYgKGVsZW1lbnRXaWR0aCA+IDY0MCAmJiBlbGVtZW50V2lkdGggPD0gNzY4KSB7XG4gICAgICAgIHRoaXMucmVuZGVyVmVydGljYWxseS5zZXQoMik7XG4gICAgICB9IGVsc2UgaWYgKGVsZW1lbnRXaWR0aCA+IDc2OCAmJiBlbGVtZW50V2lkdGggPD0gMTA4MCkge1xuICAgICAgICB0aGlzLnJlbmRlclZlcnRpY2FsbHkuc2V0KDMpO1xuICAgICAgfSBlbHNlIGlmIChlbGVtZW50V2lkdGggPiAxMDgwKSB7XG4gICAgICAgIHRoaXMucmVuZGVyVmVydGljYWxseS5zZXQoNCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0VtcHR5V2lkZ2V0RGF0YSh3aWRnZXREYXRhOiBPYmplY3QpOiBib29sZWFuIHtcbiAgICByZXR1cm4gd2lkZ2V0RGF0YSAmJiBPYmplY3Qua2V5cyh3aWRnZXREYXRhKS5sZW5ndGggPT09IDA7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPG5nLWNvbnRhaW5lclxuICAqbmdJZj1cIntcbiAgICB3aWRnZXRDb25maWd1cmF0aW9uOiB3aWRnZXRDb25maWd1cmF0aW9uJCB8IGFzeW5jLFxuICAgIHdpZGdldFByb3BlcnR5VmFsdWU6IHdpZGdldFByb3BlcnR5VmFsdWUkIHwgYXN5bmMsXG4gICAgd2lkZ2V0RGF0YTogd2lkZ2V0RGF0YSQgfCBhc3luYyxcbiAgICBpc0VtcHR5V2lkZ2V0RGF0YTogaXNFbXB0eVdpZGdldERhdGEkIHwgYXN5bmNcbiAgfSBhcyBvYnNcIlxuPlxuICA8aDQgY2xhc3M9XCJ3aWRnZXQtZmllbGRfX3RpdGxlXCI+e3sgb2JzPy53aWRnZXRDb25maWd1cmF0aW9uPy50aXRsZSB9fTwvaDQ+XG5cbiAgQGlmIChvYnM/LmlzRW1wdHlXaWRnZXREYXRhKSB7XG4gICAgPHZhbHRpbW8tbm8tcmVzdWx0c1xuICAgICAgW2NvbGxhcHNlVmVydGljYWxseV09XCJ0cnVlXCJcbiAgICAgIFtkZXNjcmlwdGlvbl09XCInZG9zc2llci53aWRnZXRzLm5vRGF0YScgfCB0cmFuc2xhdGVcIlxuICAgICAgW3NtYWxsUGFkZGluZ109XCJ0cnVlXCJcbiAgICA+PC92YWx0aW1vLW5vLXJlc3VsdHM+XG4gIH0gQGVsc2Uge1xuICAgIDxkaXZcbiAgICAgICN3aWRnZXRGaWVsZFxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAnd2lkZ2V0LWZpZWxkX19yZW5kZXItdmVydGljYWxseSc6IHJlbmRlclZlcnRpY2FsbHkoKSA9PT0gMSxcbiAgICAgICAgJ3dpZGdldC1maWVsZF9fcmVuZGVyLXR3by1jb2x1bW5zJzogcmVuZGVyVmVydGljYWxseSgpID09PSAyLFxuICAgICAgICAnd2lkZ2V0LWZpZWxkX19yZW5kZXItdGhyZWUtY29sdW1ucyc6IHJlbmRlclZlcnRpY2FsbHkoKSA9PT0gMyxcbiAgICAgICAgJ3dpZGdldC1maWVsZF9fY29udGFpbmVyJzogcmVuZGVyVmVydGljYWxseSgpID09PSA0XG4gICAgICB9XCJcbiAgICA+XG4gICAgICBAZm9yIChjb2x1bW4gb2Ygb2JzPy53aWRnZXRQcm9wZXJ0eVZhbHVlOyB0cmFjayBjb2x1bW4ua2V5KSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3aWRnZXQtZmllbGRfX2NvbHVtblwiPlxuICAgICAgICAgIEBmb3IgKHByb3BlcnR5IG9mIGNvbHVtbjsgdHJhY2sgcHJvcGVydHkpIHtcbiAgICAgICAgICAgIDxjZHMtbGFiZWw+XG4gICAgICAgICAgICAgIHt7IHByb3BlcnR5Py50aXRsZSB9fVxuXG4gICAgICAgICAgICAgIDxpbnB1dCBjZHNUZXh0IFt2YWx1ZV09XCJwcm9wZXJ0eT8udmFsdWVcIiBbcmVhZG9ubHldPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICA8L2Nkcy1sYWJlbD5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICB9XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|