@valtimo/dossier 12.0.0 → 12.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/esm2022/lib/components/dossier-detail/dossier-detail.component.mjs +11 -7
  2. package/esm2022/lib/components/dossier-detail/tab/not-found/not-found.component.mjs +1 -1
  3. package/esm2022/lib/components/dossier-detail/tab/notes/notes.component.mjs +1 -1
  4. package/esm2022/lib/components/dossier-detail/tab/progress/progress.component.mjs +1 -1
  5. package/esm2022/lib/components/dossier-detail/tab/summary/summary.component.mjs +13 -78
  6. package/esm2022/lib/components/dossier-detail/tab/widgets/components/collection/widget-collection.component.mjs +192 -0
  7. package/esm2022/lib/components/dossier-detail/tab/widgets/components/custom/widget-custom.component.mjs +80 -0
  8. package/esm2022/lib/components/dossier-detail/tab/widgets/components/field/widget-field.component.mjs +116 -0
  9. package/esm2022/lib/components/dossier-detail/tab/widgets/components/formio/widget-formio.component.mjs +67 -0
  10. package/esm2022/lib/components/dossier-detail/tab/widgets/components/table/widget-table.component.mjs +126 -0
  11. package/esm2022/lib/components/dossier-detail/tab/widgets/components/widget-block/widget-block.component.mjs +154 -0
  12. package/esm2022/lib/components/dossier-detail/tab/widgets/components/widgets-container/widgets-container.component.mjs +74 -0
  13. package/esm2022/lib/components/dossier-detail/tab/widgets/widgets.component.mjs +74 -0
  14. package/esm2022/lib/components/dossier-detail-task-list/dossier-detail-task-list.component.mjs +131 -0
  15. package/esm2022/lib/components/dossier-list/dossier-list.component.mjs +4 -4
  16. package/esm2022/lib/components/dossier-process-start-modal/dossier-process-start-modal.component.mjs +47 -7
  17. package/esm2022/lib/constants/case-widget.constants.mjs +19 -0
  18. package/esm2022/lib/constants/custom-case-widget-token.mjs +19 -0
  19. package/esm2022/lib/constants/index.mjs +3 -1
  20. package/esm2022/lib/dossier.module.mjs +11 -3
  21. package/esm2022/lib/models/case-widget-content.model.mjs +17 -0
  22. package/esm2022/lib/models/case-widget-display.model.mjs +13 -0
  23. package/esm2022/lib/models/case-widget.model.mjs +25 -0
  24. package/esm2022/lib/models/index.mjs +6 -3
  25. package/esm2022/lib/models/tab-api.model.mjs +2 -1
  26. package/esm2022/lib/models/tabs.model.mjs +16 -7
  27. package/esm2022/lib/services/dossier-tab-api.service.mjs +17 -11
  28. package/esm2022/lib/services/dossier-tab.service.mjs +39 -11
  29. package/esm2022/lib/services/dossier-widgets-api.service.mjs +46 -0
  30. package/esm2022/lib/services/dossier-widgets-layout.service.mjs +97 -0
  31. package/esm2022/lib/services/index.mjs +3 -1
  32. package/fesm2022/valtimo-dossier.mjs +1383 -233
  33. package/fesm2022/valtimo-dossier.mjs.map +1 -1
  34. package/lib/components/dossier-detail/dossier-detail.component.d.ts +2 -0
  35. package/lib/components/dossier-detail/dossier-detail.component.d.ts.map +1 -1
  36. package/lib/components/dossier-detail/tab/summary/summary.component.d.ts +7 -26
  37. package/lib/components/dossier-detail/tab/summary/summary.component.d.ts.map +1 -1
  38. package/lib/components/dossier-detail/tab/widgets/components/collection/widget-collection.component.d.ts +47 -0
  39. package/lib/components/dossier-detail/tab/widgets/components/collection/widget-collection.component.d.ts.map +1 -0
  40. package/lib/components/dossier-detail/tab/widgets/components/custom/widget-custom.component.d.ts +22 -0
  41. package/lib/components/dossier-detail/tab/widgets/components/custom/widget-custom.component.d.ts.map +1 -0
  42. package/lib/components/dossier-detail/tab/widgets/components/field/widget-field.component.d.ts +31 -0
  43. package/lib/components/dossier-detail/tab/widgets/components/field/widget-field.component.d.ts.map +1 -0
  44. package/lib/components/dossier-detail/tab/widgets/components/formio/widget-formio.component.d.ts +21 -0
  45. package/lib/components/dossier-detail/tab/widgets/components/formio/widget-formio.component.d.ts.map +1 -0
  46. package/lib/components/dossier-detail/tab/widgets/components/table/widget-table.component.d.ts +31 -0
  47. package/lib/components/dossier-detail/tab/widgets/components/table/widget-table.component.d.ts.map +1 -0
  48. package/lib/components/dossier-detail/tab/widgets/components/widget-block/widget-block.component.d.ts +43 -0
  49. package/lib/components/dossier-detail/tab/widgets/components/widget-block/widget-block.component.d.ts.map +1 -0
  50. package/lib/components/dossier-detail/tab/widgets/components/widgets-container/widgets-container.component.d.ts +20 -0
  51. package/lib/components/dossier-detail/tab/widgets/components/widgets-container/widgets-container.component.d.ts.map +1 -0
  52. package/lib/components/dossier-detail/tab/widgets/widgets.component.d.ts +25 -0
  53. package/lib/components/dossier-detail/tab/widgets/widgets.component.d.ts.map +1 -0
  54. package/lib/components/dossier-detail-task-list/dossier-detail-task-list.component.d.ts +26 -0
  55. package/lib/components/dossier-detail-task-list/dossier-detail-task-list.component.d.ts.map +1 -0
  56. package/lib/components/dossier-list/dossier-list.component.d.ts +1 -1
  57. package/lib/components/dossier-list/dossier-list.component.d.ts.map +1 -1
  58. package/lib/components/dossier-process-start-modal/dossier-process-start-modal.component.d.ts +12 -4
  59. package/lib/components/dossier-process-start-modal/dossier-process-start-modal.component.d.ts.map +1 -1
  60. package/lib/constants/case-widget.constants.d.ts +4 -0
  61. package/lib/constants/case-widget.constants.d.ts.map +1 -0
  62. package/lib/constants/custom-case-widget-token.d.ts +5 -0
  63. package/lib/constants/custom-case-widget-token.d.ts.map +1 -0
  64. package/lib/constants/index.d.ts +2 -0
  65. package/lib/constants/index.d.ts.map +1 -1
  66. package/lib/dossier.module.d.ts +3 -1
  67. package/lib/dossier.module.d.ts.map +1 -1
  68. package/lib/models/case-widget-content.model.d.ts +51 -0
  69. package/lib/models/case-widget-content.model.d.ts.map +1 -0
  70. package/lib/models/case-widget-display.model.d.ts +44 -0
  71. package/lib/models/case-widget-display.model.d.ts.map +1 -0
  72. package/lib/models/case-widget.model.d.ts +105 -0
  73. package/lib/models/case-widget.model.d.ts.map +1 -0
  74. package/lib/models/index.d.ts +5 -2
  75. package/lib/models/index.d.ts.map +1 -1
  76. package/lib/models/tab-api.model.d.ts +13 -2
  77. package/lib/models/tab-api.model.d.ts.map +1 -1
  78. package/lib/models/tabs.model.d.ts +6 -1
  79. package/lib/models/tabs.model.d.ts.map +1 -1
  80. package/lib/services/dossier-tab-api.service.d.ts +6 -7
  81. package/lib/services/dossier-tab-api.service.d.ts.map +1 -1
  82. package/lib/services/dossier-tab.service.d.ts +12 -2
  83. package/lib/services/dossier-tab.service.d.ts.map +1 -1
  84. package/lib/services/dossier-widgets-api.service.d.ts +15 -0
  85. package/lib/services/dossier-widgets-api.service.d.ts.map +1 -0
  86. package/lib/services/dossier-widgets-layout.service.d.ts +35 -0
  87. package/lib/services/dossier-widgets-layout.service.d.ts.map +1 -0
  88. package/lib/services/index.d.ts +2 -0
  89. package/lib/services/index.d.ts.map +1 -1
  90. package/package.json +4 -2
@@ -0,0 +1,154 @@
1
+ /*
2
+ * Copyright 2015-2024 Ritense BV, the Netherlands.
3
+ *
4
+ * Licensed under EUPL, Version 1.2 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" basis,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { CommonModule } from '@angular/common';
17
+ import { ChangeDetectionStrategy, Component, Input, ViewChild, } from '@angular/core';
18
+ import { TranslateModule } from '@ngx-translate/core';
19
+ import { CARBON_THEME, CarbonListModule, CurrentCarbonTheme, } from '@valtimo/components';
20
+ import { LoadingModule, TilesModule } from 'carbon-components-angular';
21
+ import { BehaviorSubject, catchError, combineLatest, filter, map, of, Subscription, switchMap, tap, } from 'rxjs';
22
+ import { CaseWidgetType } from '../../../../../../models';
23
+ import { WidgetCustomComponent } from '../custom/widget-custom.component';
24
+ import { WidgetFieldComponent } from '../field/widget-field.component';
25
+ import { WidgetFormioComponent } from '../formio/widget-formio.component';
26
+ import { WidgetTableComponent } from '../table/widget-table.component';
27
+ import { WidgetCollectionComponent } from '../collection/widget-collection.component';
28
+ import { WIDGET_HEIGHT_1X } from '../../../../../../constants';
29
+ import * as i0 from "@angular/core";
30
+ import * as i1 from "../../../../../../services";
31
+ import * as i2 from "@angular/router";
32
+ import * as i3 from "@valtimo/components";
33
+ import * as i4 from "@angular/common";
34
+ import * as i5 from "@ngx-translate/core";
35
+ export class WidgetBlockComponent {
36
+ set widget(value) {
37
+ this._widgetUuid = value.uuid;
38
+ this._widget$.next(value);
39
+ }
40
+ get widget$() {
41
+ return this._widget$.pipe(filter(widget => widget !== null));
42
+ }
43
+ get _viewContainerRef$() {
44
+ return this._viewContainerRefSubject$.pipe(filter(ref => !!ref));
45
+ }
46
+ constructor(dossierWidgetsLayoutService, dossierTabService, route, widgetsApiService, cdsThemeService, renderer, viewRef) {
47
+ this.dossierWidgetsLayoutService = dossierWidgetsLayoutService;
48
+ this.dossierTabService = dossierTabService;
49
+ this.route = route;
50
+ this.widgetsApiService = widgetsApiService;
51
+ this.cdsThemeService = cdsThemeService;
52
+ this.renderer = renderer;
53
+ this.viewRef = viewRef;
54
+ this._widget$ = new BehaviorSubject(null);
55
+ this._viewContainerRefSubject$ = new BehaviorSubject(null);
56
+ this._contentHeight$ = new BehaviorSubject(0);
57
+ this.blockHeightPx$ = combineLatest([
58
+ this._contentHeight$,
59
+ this._viewContainerRef$,
60
+ ]).pipe(filter(([contentHeight]) => contentHeight !== 0), tap(([contentHeight, viewRef]) => {
61
+ const blockHeight = Math.ceil((contentHeight + 16) / WIDGET_HEIGHT_1X) * WIDGET_HEIGHT_1X;
62
+ this.renderer.setStyle(viewRef.element.nativeElement, 'height', `${blockHeight}px`);
63
+ this.dossierWidgetsLayoutService.triggerMuuriLayout();
64
+ }));
65
+ this.blockWidthPercentage$ = combineLatest([
66
+ this.dossierWidgetsLayoutService.amountOfColumns$,
67
+ this.widget$,
68
+ this._viewContainerRef$,
69
+ ]).pipe(tap(([amountOfColumns, widget, viewRef]) => {
70
+ const percentage = widget.width > amountOfColumns ? 100 : (widget.width / amountOfColumns) * 100;
71
+ this.renderer.setStyle(viewRef.element.nativeElement, 'width', `${percentage}%`);
72
+ this.dossierWidgetsLayoutService.triggerMuuriLayout();
73
+ }));
74
+ this.CaseWidgetType = CaseWidgetType;
75
+ this.documentId$ = this.route.params.pipe(map(params => params?.documentId), filter(documentId => !!documentId));
76
+ this.tabKey$ = this.dossierTabService.activeTabKey$;
77
+ this.widgetData$ = combineLatest([
78
+ this.widget$,
79
+ this.tabKey$,
80
+ this.documentId$,
81
+ ]).pipe(switchMap(([widget, tabkey, documentId]) =>
82
+ // custom component and formio widgets do not fetch additional data
83
+ widget.type === CaseWidgetType.CUSTOM || widget.type === CaseWidgetType.FORMIO
84
+ ? of({})
85
+ : this.widgetsApiService.getWidgetData(documentId, tabkey, widget.key, widget.type === CaseWidgetType.TABLE || widget.type === CaseWidgetType.COLLECTION
86
+ ? this.getPageSizeParam(widget)
87
+ : undefined)), tap(() => {
88
+ this.dossierWidgetsLayoutService.setCaseWidgetDataLoaded(this._widgetUuid);
89
+ }), catchError((error) => {
90
+ if (error.status === 404)
91
+ this.dossierWidgetsLayoutService.setCaseWidgetDataLoaded(this._widgetUuid);
92
+ return of(null);
93
+ }));
94
+ this.theme$ = combineLatest([this.cdsThemeService.currentTheme$, this.widget$]).pipe(map(([currentTheme, widgetConfiguration]) => {
95
+ return currentTheme === CurrentCarbonTheme.G10
96
+ ? widgetConfiguration.highContrast
97
+ ? CARBON_THEME.G100
98
+ : CARBON_THEME.G10
99
+ : widgetConfiguration.highContrast
100
+ ? CARBON_THEME.WHITE
101
+ : CARBON_THEME.G90;
102
+ }));
103
+ this._subscriptions = new Subscription();
104
+ }
105
+ ngAfterViewInit() {
106
+ this._viewContainerRefSubject$.next(this.viewRef);
107
+ this.openContentHeightObserver();
108
+ }
109
+ ngOnDestroy() {
110
+ this._subscriptions.unsubscribe();
111
+ this._observer?.disconnect();
112
+ }
113
+ openContentHeightObserver() {
114
+ this._observer = new ResizeObserver(event => {
115
+ this.observerMutation(event);
116
+ });
117
+ this._observer.observe(this._widgetBlockContentRef.nativeElement);
118
+ }
119
+ observerMutation(event) {
120
+ const widgetContentHeight = event[0]?.borderBoxSize[0]?.blockSize;
121
+ if (typeof widgetContentHeight === 'number' && widgetContentHeight !== 0) {
122
+ this._contentHeight$.next(widgetContentHeight);
123
+ }
124
+ }
125
+ getPageSizeParam(widgetConfiguration) {
126
+ return `size=${widgetConfiguration.properties.defaultPageSize}`;
127
+ }
128
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: WidgetBlockComponent, deps: [{ token: i1.DossierWidgetsLayoutService }, { token: i1.DossierTabService }, { token: i2.ActivatedRoute }, { token: i1.DossierWidgetsApiService }, { token: i3.CdsThemeService }, { token: i0.Renderer2 }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
129
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", type: WidgetBlockComponent, isStandalone: true, selector: "valtimo-dossier-widget-block", inputs: { widget: "widget" }, viewQueries: [{ propertyName: "_widgetBlockContentRef", first: true, predicate: ["widgetBlockContent"], descendants: true }, { propertyName: "_widgetBlockRef", first: true, predicate: ["widgetBlock"], 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 documentId: documentId$ | async,\n tabKey: tabKey$ | async,\n widgetConfiguration: widget$ | async,\n widgetData: widgetData$ | async,\n theme: theme$ | async,\n blockHeightPx: blockHeightPx$ | async,\n blockWidthPercentage: blockWidthPercentage$ | async\n } as obs\"\n>\n <div #widgetBlock class=\"widget-block\" [attr.data-carbon-theme]=\"obs.theme\">\n <div #widgetBlockContent class=\"widget-block__content\">\n @if (obs.widgetData) {\n @switch (obs.widgetConfiguration.type) {\n @case (CaseWidgetType.TABLE) {\n <valtimo-widget-table\n [documentId]=\"obs.documentId\"\n [tabKey]=\"obs.tabKey\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n ></valtimo-widget-table>\n }\n\n @case (CaseWidgetType.COLLECTION) {\n <valtimo-widget-collection\n [documentId]=\"obs.documentId\"\n [tabKey]=\"obs.tabKey\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n ></valtimo-widget-collection>\n }\n\n @case (CaseWidgetType.CUSTOM) {\n <valtimo-widget-custom [widgetConfig]=\"obs.widgetConfiguration\"></valtimo-widget-custom>\n }\n\n @case (CaseWidgetType.FIELDS) {\n <valtimo-widget-field\n [collapseVertically]=\"true\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n ></valtimo-widget-field>\n }\n\n @case (CaseWidgetType.FORMIO) {\n <valtimo-widget-formio\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [documentId]=\"obs.documentId\"\n ></valtimo-widget-formio>\n }\n\n @default {\n <div class=\"widget-block__not-available\">\n <valtimo-no-results\n [collapseVertically]=\"true\"\n [description]=\"'dossier.widgets.noWidget' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n </div>\n }\n }\n } @else {\n <div class=\"widget-block__not-available\">\n <valtimo-no-results\n [collapseVertically]=\"true\"\n [description]=\"'dossier.widgets.noData' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n </div>\n }\n </div>\n </div>\n</ng-container>\n", styles: [":host{display:block;position:absolute}.widget-block{width:100%;height:100%;box-sizing:border-box;padding:8px;overflow-wrap:break-word;background-color:var(--cds-layer-01);background-clip:content-box}.widget-block__not-available{padding:16px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: LoadingModule }, { kind: "component", type: WidgetTableComponent, selector: "valtimo-widget-table", inputs: ["documentId", "tabKey", "widgetConfiguration", "widgetData"] }, { kind: "component", type: WidgetCustomComponent, selector: "valtimo-widget-custom", inputs: ["widgetConfig"] }, { kind: "ngmodule", type: CarbonListModule }, { kind: "component", type: i3.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: TilesModule }, { kind: "component", type: WidgetFieldComponent, selector: "valtimo-widget-field", inputs: ["collapseVertically", "widgetConfiguration", "widgetData"] }, { kind: "component", type: WidgetFormioComponent, selector: "valtimo-widget-formio", inputs: ["documentId", "widgetConfiguration"] }, { kind: "component", type: WidgetCollectionComponent, selector: "valtimo-widget-collection", inputs: ["documentId", "tabKey", "widgetConfiguration", "widgetData"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
130
+ }
131
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: WidgetBlockComponent, decorators: [{
132
+ type: Component,
133
+ args: [{ selector: 'valtimo-dossier-widget-block', standalone: true, imports: [
134
+ CommonModule,
135
+ LoadingModule,
136
+ WidgetTableComponent,
137
+ WidgetCustomComponent,
138
+ CarbonListModule,
139
+ TranslateModule,
140
+ TilesModule,
141
+ WidgetFieldComponent,
142
+ WidgetFormioComponent,
143
+ WidgetCollectionComponent,
144
+ ], 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<ng-container\n *ngIf=\"{\n documentId: documentId$ | async,\n tabKey: tabKey$ | async,\n widgetConfiguration: widget$ | async,\n widgetData: widgetData$ | async,\n theme: theme$ | async,\n blockHeightPx: blockHeightPx$ | async,\n blockWidthPercentage: blockWidthPercentage$ | async\n } as obs\"\n>\n <div #widgetBlock class=\"widget-block\" [attr.data-carbon-theme]=\"obs.theme\">\n <div #widgetBlockContent class=\"widget-block__content\">\n @if (obs.widgetData) {\n @switch (obs.widgetConfiguration.type) {\n @case (CaseWidgetType.TABLE) {\n <valtimo-widget-table\n [documentId]=\"obs.documentId\"\n [tabKey]=\"obs.tabKey\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n ></valtimo-widget-table>\n }\n\n @case (CaseWidgetType.COLLECTION) {\n <valtimo-widget-collection\n [documentId]=\"obs.documentId\"\n [tabKey]=\"obs.tabKey\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n ></valtimo-widget-collection>\n }\n\n @case (CaseWidgetType.CUSTOM) {\n <valtimo-widget-custom [widgetConfig]=\"obs.widgetConfiguration\"></valtimo-widget-custom>\n }\n\n @case (CaseWidgetType.FIELDS) {\n <valtimo-widget-field\n [collapseVertically]=\"true\"\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [widgetData]=\"obs.widgetData\"\n ></valtimo-widget-field>\n }\n\n @case (CaseWidgetType.FORMIO) {\n <valtimo-widget-formio\n [widgetConfiguration]=\"obs.widgetConfiguration\"\n [documentId]=\"obs.documentId\"\n ></valtimo-widget-formio>\n }\n\n @default {\n <div class=\"widget-block__not-available\">\n <valtimo-no-results\n [collapseVertically]=\"true\"\n [description]=\"'dossier.widgets.noWidget' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n </div>\n }\n }\n } @else {\n <div class=\"widget-block__not-available\">\n <valtimo-no-results\n [collapseVertically]=\"true\"\n [description]=\"'dossier.widgets.noData' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n </div>\n }\n </div>\n </div>\n</ng-container>\n", styles: [":host{display:block;position:absolute}.widget-block{width:100%;height:100%;box-sizing:border-box;padding:8px;overflow-wrap:break-word;background-color:var(--cds-layer-01);background-clip:content-box}.widget-block__not-available{padding:16px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
145
+ }], ctorParameters: () => [{ type: i1.DossierWidgetsLayoutService }, { type: i1.DossierTabService }, { type: i2.ActivatedRoute }, { type: i1.DossierWidgetsApiService }, { type: i3.CdsThemeService }, { type: i0.Renderer2 }, { type: i0.ViewContainerRef }], propDecorators: { _widgetBlockContentRef: [{
146
+ type: ViewChild,
147
+ args: ['widgetBlockContent']
148
+ }], _widgetBlockRef: [{
149
+ type: ViewChild,
150
+ args: ['widgetBlock']
151
+ }], widget: [{
152
+ type: Input
153
+ }] } });
154
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWJsb2NrLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci9zcmMvbGliL2NvbXBvbmVudHMvZG9zc2llci1kZXRhaWwvdGFiL3dpZGdldHMvY29tcG9uZW50cy93aWRnZXQtYmxvY2svd2lkZ2V0LWJsb2NrLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci9zcmMvbGliL2NvbXBvbmVudHMvZG9zc2llci1kZXRhaWwvdGFiL3dpZGdldHMvY29tcG9uZW50cy93aWRnZXQtYmxvY2svd2lkZ2V0LWJsb2NrLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRTdDLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUVULEtBQUssRUFHTCxTQUFTLEdBRVYsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFDTCxZQUFZLEVBQ1osZ0JBQWdCLEVBRWhCLGtCQUFrQixHQUNuQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBQyxhQUFhLEVBQUUsV0FBVyxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDckUsT0FBTyxFQUNMLGVBQWUsRUFDZixVQUFVLEVBQ1YsYUFBYSxFQUNiLE1BQU0sRUFDTixHQUFHLEVBRUgsRUFBRSxFQUNGLFlBQVksRUFDWixTQUFTLEVBQ1QsR0FBRyxHQUNKLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUFDLGNBQWMsRUFBeUMsTUFBTSwwQkFBMEIsQ0FBQztBQU1oRyxPQUFPLEVBQUMscUJB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YUFBYSwrQkFDYixvQkFBb0Isd0lBQ3BCLHFCQUFxQiwyRkFDckIsZ0JBQWdCLG9QQUNoQixlQUFlLDJGQUNmLFdBQVcsK0JBQ1gsb0JBQW9CLHNJQUNwQixxQkFBcUIsaUhBQ3JCLHlCQUF5Qjs7MkZBSWhCLG9CQUFvQjtrQkFuQmhDLFNBQVM7K0JBQ0UsOEJBQThCLGNBRzVCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGFBQWE7d0JBQ2Isb0JBQW9CO3dCQUNwQixxQkFBcUI7d0JBQ3JCLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixXQUFXO3dCQUNYLG9CQUFvQjt3QkFDcEIscUJBQXFCO3dCQUNyQix5QkFBeUI7cUJBQzFCLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNO3lSQUdOLHNCQUFzQjtzQkFBOUQsU0FBUzt1QkFBQyxvQkFBb0I7Z0JBQ0csZUFBZTtzQkFBaEQsU0FBUzt1QkFBQyxhQUFhO2dCQUVKLE1BQU07c0JBQXpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0h0dHBFcnJvclJlc3BvbnNlfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBSZW5kZXJlcjIsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGV9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ0FSQk9OX1RIRU1FLFxuICBDYXJib25MaXN0TW9kdWxlLFxuICBDZHNUaGVtZVNlcnZpY2UsXG4gIEN1cnJlbnRDYXJib25UaGVtZSxcbn0gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge0xvYWRpbmdNb2R1bGUsIFRpbGVzTW9kdWxlfSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY2F0Y2hFcnJvcixcbiAgY29tYmluZUxhdGVzdCxcbiAgZmlsdGVyLFxuICBtYXAsXG4gIE9ic2VydmFibGUsXG4gIG9mLFxuICBTdWJzY3JpcHRpb24sXG4gIHN3aXRjaE1hcCxcbiAgdGFwLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7Q2FzZVdpZGdldFR5cGUsIENhc2VXaWRnZXRXaXRoVXVpZCwgV2lkZ2V0VGFibGVDb250ZW50fSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtcbiAgRG9zc2llclRhYlNlcnZpY2UsXG4gIERvc3NpZXJXaWRnZXRzQXBpU2VydmljZSxcbiAgRG9zc2llcldpZGdldHNMYXlvdXRTZXJ2aWNlLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQge1dpZGdldEN1c3RvbUNvbXBvbmVudH0gZnJvbSAnLi4vY3VzdG9tL3dpZGdldC1jdXN0b20uY29tcG9uZW50JztcbmltcG9ydCB7V2lkZ2V0RmllbGRDb21wb25lbnR9IGZyb20gJy4uL2ZpZWxkL3dpZGdldC1maWVsZC5jb21wb25lbnQnO1xuaW1wb3J0IHtXaWRnZXRGb3JtaW9Db21wb25lbnR9IGZyb20gJy4uL2Zvcm1pby93aWRnZXQtZm9ybWlvLmNvbXBvbmVudCc7XG5pbXBvcnQge1dpZGdldFRhYmxlQ29tcG9uZW50fSBmcm9tICcuLi90YWJsZS93aWRnZXQtdGFibGUuY29tcG9uZW50JztcbmltcG9ydCB7V2lkZ2V0Q29sbGVjdGlvbkNvbXBvbmVudH0gZnJvbSAnLi4vY29sbGVjdGlvbi93aWRnZXQtY29sbGVjdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHtXSURHRVRfSEVJR0hUXzFYfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9jb25zdGFudHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLWRvc3NpZXItd2lkZ2V0LWJsb2NrJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dpZGdldC1ibG9jay5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3dpZGdldC1ibG9jay5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIExvYWRpbmdNb2R1bGUsXG4gICAgV2lkZ2V0VGFibGVDb21wb25lbnQsXG4gICAgV2lkZ2V0Q3VzdG9tQ29tcG9uZW50LFxuICAgIENhcmJvbkxpc3RNb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIFRpbGVzTW9kdWxlLFxuICAgIFdpZGdldEZpZWxkQ29tcG9uZW50LFxuICAgIFdpZGdldEZvcm1pb0NvbXBvbmVudCxcbiAgICBXaWRnZXRDb2xsZWN0aW9uQ29tcG9uZW50LFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgV2lkZ2V0QmxvY2tDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBAVmlld0NoaWxkKCd3aWRnZXRCbG9ja0NvbnRlbnQnKSBwcml2YXRlIF93aWRnZXRCbG9ja0NvbnRlbnRSZWY6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCd3aWRnZXRCbG9jaycpIHByaXZhdGUgX3dpZGdldEJsb2NrUmVmOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICBASW5wdXQoKSBwdWJsaWMgc2V0IHdpZGdldCh2YWx1ZTogQ2FzZVdpZGdldFdpdGhVdWlkKSB7XG4gICAgdGhpcy5fd2lkZ2V0VXVpZCA9IHZhbHVlLnV1aWQ7XG4gICAgdGhpcy5fd2lkZ2V0JC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3dpZGdldCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENhc2VXaWRnZXRXaXRoVXVpZCB8IG51bGw+KG51bGwpO1xuXG4gIHB1YmxpYyBnZXQgd2lkZ2V0JCgpOiBPYnNlcnZhYmxlPENhc2VXaWRnZXRXaXRoVXVpZD4ge1xuICAgIHJldHVybiB0aGlzLl93aWRnZXQkLnBpcGUoZmlsdGVyKHdpZGdldCA9PiB3aWRnZXQgIT09IG51bGwpKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZpZXdDb250YWluZXJSZWZTdWJqZWN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Vmlld0NvbnRhaW5lclJlZiB8IG51bGw+KG51bGwpO1xuXG4gIHByaXZhdGUgZ2V0IF92aWV3Q29udGFpbmVyUmVmJCgpOiBPYnNlcnZhYmxlPFZpZXdDb250YWluZXJSZWY+IHtcbiAgICByZXR1cm4gdGhpcy5fdmlld0NvbnRhaW5lclJlZlN1YmplY3QkLnBpcGUoZmlsdGVyKHJlZiA9PiAhIXJlZikpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfY29udGVudEhlaWdodCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGJsb2NrSGVpZ2h0UHgkID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5fY29udGVudEhlaWdodCQsXG4gICAgdGhpcy5fdmlld0NvbnRhaW5lclJlZiQsXG4gIF0pLnBpcGUoXG4gICAgZmlsdGVyKChbY29udGVudEhlaWdodF0pID0+IGNvbnRlbnRIZWlnaHQgIT09IDApLFxuICAgIHRhcCgoW2NvbnRlbnRIZWlnaHQsIHZpZXdSZWZdKSA9PiB7XG4gICAgICBjb25zdCBibG9ja0hlaWdodCA9IE1hdGguY2VpbCgoY29udGVudEhlaWdodCArIDE2KSAvIFdJREdFVF9IRUlHSFRfMVgpICogV0lER0VUX0hFSUdIVF8xWDtcblxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh2aWV3UmVmLmVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ2hlaWdodCcsIGAke2Jsb2NrSGVpZ2h0fXB4YCk7XG4gICAgICB0aGlzLmRvc3NpZXJXaWRnZXRzTGF5b3V0U2VydmljZS50cmlnZ2VyTXV1cmlMYXlvdXQoKTtcbiAgICB9KVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBibG9ja1dpZHRoUGVyY2VudGFnZSQgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLmRvc3NpZXJXaWRnZXRzTGF5b3V0U2VydmljZS5hbW91bnRPZkNvbHVtbnMkLFxuICAgIHRoaXMud2lkZ2V0JCxcbiAgICB0aGlzLl92aWV3Q29udGFpbmVyUmVmJCxcbiAgXSkucGlwZShcbiAgICB0YXAoKFthbW91bnRPZkNvbHVtbnMsIHdpZGdldCwgdmlld1JlZl0pID0+IHtcbiAgICAgIGNvbnN0IHBlcmNlbnRhZ2UgPVxuICAgICAgICB3aWRnZXQud2lkdGggPiBhbW91bnRPZkNvbHVtbnMgPyAxMDAgOiAod2lkZ2V0LndpZHRoIC8gYW1vdW50T2ZDb2x1bW5zKSAqIDEwMDtcblxuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh2aWV3UmVmLmVsZW1lbnQubmF0aXZlRWxlbWVudCwgJ3dpZHRoJywgYCR7cGVyY2VudGFnZX0lYCk7XG4gICAgICB0aGlzLmRvc3NpZXJXaWRnZXRzTGF5b3V0U2VydmljZS50cmlnZ2VyTXV1cmlMYXlvdXQoKTtcbiAgICB9KVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBDYXNlV2lkZ2V0VHlwZSA9IENhc2VXaWRnZXRUeXBlO1xuXG4gIHB1YmxpYyByZWFkb25seSBkb2N1bWVudElkJCA9IHRoaXMucm91dGUucGFyYW1zLnBpcGUoXG4gICAgbWFwKHBhcmFtcyA9PiBwYXJhbXM/LmRvY3VtZW50SWQpLFxuICAgIGZpbHRlcihkb2N1bWVudElkID0+ICEhZG9jdW1lbnRJZClcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgdGFiS2V5JDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGhpcy5kb3NzaWVyVGFiU2VydmljZS5hY3RpdmVUYWJLZXkkO1xuXG4gIHB1YmxpYyByZWFkb25seSB3aWRnZXREYXRhJDogT2JzZXJ2YWJsZTxhbnlbXSB8IHt9IHwgbnVsbD4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLndpZGdldCQsXG4gICAgdGhpcy50YWJLZXkkLFxuICAgIHRoaXMuZG9jdW1lbnRJZCQsXG4gIF0pLnBpcGUoXG4gICAgc3dpdGNoTWFwKChbd2lkZ2V0LCB0YWJrZXksIGRvY3VtZW50SWRdKSA9PlxuICAgICAgLy8gY3VzdG9tIGNvbXBvbmVudCBhbmQgZm9ybWlvIHdpZGdldHMgZG8gbm90IGZldGNoIGFkZGl0aW9uYWwgZGF0YVxuICAgICAgd2lkZ2V0LnR5cGUgPT09IENhc2VXaWRnZXRUeXBlLkNVU1RPTSB8fCB3aWRnZXQudHlwZSA9PT0gQ2FzZVdpZGdldFR5cGUuRk9STUlPXG4gICAgICAgID8gb2Yoe30pXG4gICAgICAgIDogdGhpcy53aWRnZXRzQXBpU2VydmljZS5nZXRXaWRnZXREYXRhKFxuICAgICAgICAgICAgZG9jdW1lbnRJZCxcbiAgICAgICAgICAgIHRhYmtleSxcbiAgICAgICAgICAgIHdpZGdldC5rZXksXG4gICAgICAgICAgICB3aWRnZXQudHlwZSA9PT0gQ2FzZVdpZGdldFR5cGUuVEFCTEUgfHwgd2lkZ2V0LnR5cGUgPT09IENhc2VXaWRnZXRUeXBlLkNPTExFQ1RJT05cbiAgICAgICAgICAgICAgPyB0aGlzLmdldFBhZ2VTaXplUGFyYW0od2lkZ2V0KVxuICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICAgIClcbiAgICApLFxuICAgIHRhcCgoKSA9PiB7XG4gICAgICB0aGlzLmRvc3NpZXJXaWRnZXRzTGF5b3V0U2VydmljZS5zZXRDYXNlV2lkZ2V0RGF0YUxvYWRlZCh0aGlzLl93aWRnZXRVdWlkKTtcbiAgICB9KSxcbiAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgIGlmIChlcnJvci5zdGF0dXMgPT09IDQwNClcbiAgICAgICAgdGhpcy5kb3NzaWVyV2lkZ2V0c0xheW91dFNlcnZpY2Uuc2V0Q2FzZVdpZGdldERhdGFMb2FkZWQodGhpcy5fd2lkZ2V0VXVpZCk7XG5cbiAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICB9KVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSB0aGVtZSQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLmNkc1RoZW1lU2VydmljZS5jdXJyZW50VGhlbWUkLCB0aGlzLndpZGdldCRdKS5waXBlKFxuICAgIG1hcCgoW2N1cnJlbnRUaGVtZSwgd2lkZ2V0Q29uZmlndXJhdGlvbl0pID0+IHtcbiAgICAgIHJldHVybiBjdXJyZW50VGhlbWUgPT09IEN1cnJlbnRDYXJib25UaGVtZS5HMTBcbiAgICAgICAgPyB3aWRnZXRDb25maWd1cmF0aW9uLmhpZ2hDb250cmFzdFxuICAgICAgICAgID8gQ0FSQk9OX1RIRU1FLkcxMDBcbiAgICAgICAgICA6IENBUkJPTl9USEVNRS5HMTBcbiAgICAgICAgOiB3aWRnZXRDb25maWd1cmF0aW9uLmhpZ2hDb250cmFzdFxuICAgICAgICAgID8gQ0FSQk9OX1RIRU1FLldISVRFXG4gICAgICAgICAgOiBDQVJCT05fVEhFTUUuRzkwO1xuICAgIH0pXG4gICk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBwcml2YXRlIF9vYnNlcnZlciE6IFJlc2l6ZU9ic2VydmVyO1xuXG4gIHByaXZhdGUgX3dpZGdldFV1aWQhOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb3NzaWVyV2lkZ2V0c0xheW91dFNlcnZpY2U6IERvc3NpZXJXaWRnZXRzTGF5b3V0U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvc3NpZXJUYWJTZXJ2aWNlOiBEb3NzaWVyVGFiU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHdpZGdldHNBcGlTZXJ2aWNlOiBEb3NzaWVyV2lkZ2V0c0FwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjZHNUaGVtZVNlcnZpY2U6IENkc1RoZW1lU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJpdmF0ZSByZWFkb25seSB2aWV3UmVmOiBWaWV3Q29udGFpbmVyUmVmXG4gICkge31cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX3ZpZXdDb250YWluZXJSZWZTdWJqZWN0JC5uZXh0KHRoaXMudmlld1JlZik7XG4gICAgdGhpcy5vcGVuQ29udGVudEhlaWdodE9ic2VydmVyKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuX29ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5Db250ZW50SGVpZ2h0T2JzZXJ2ZXIoKTogdm9pZCB7XG4gICAgdGhpcy5fb2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoZXZlbnQgPT4ge1xuICAgICAgdGhpcy5vYnNlcnZlck11dGF0aW9uKGV2ZW50KTtcbiAgICB9KTtcbiAgICB0aGlzLl9vYnNlcnZlci5vYnNlcnZlKHRoaXMuX3dpZGdldEJsb2NrQ29udGVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgb2JzZXJ2ZXJNdXRhdGlvbihldmVudDogQXJyYXk8UmVzaXplT2JzZXJ2ZXJFbnRyeT4pOiB2b2lkIHtcbiAgICBjb25zdCB3aWRnZXRDb250ZW50SGVpZ2h0ID0gZXZlbnRbMF0/LmJvcmRlckJveFNpemVbMF0/LmJsb2NrU2l6ZTtcblxuICAgIGlmICh0eXBlb2Ygd2lkZ2V0Q29udGVudEhlaWdodCA9PT0gJ251bWJlcicgJiYgd2lkZ2V0Q29udGVudEhlaWdodCAhPT0gMCkge1xuICAgICAgdGhpcy5fY29udGVudEhlaWdodCQubmV4dCh3aWRnZXRDb250ZW50SGVpZ2h0KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFBhZ2VTaXplUGFyYW0od2lkZ2V0Q29uZmlndXJhdGlvbjogQ2FzZVdpZGdldFdpdGhVdWlkKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYHNpemU9JHsod2lkZ2V0Q29uZmlndXJhdGlvbi5wcm9wZXJ0aWVzIGFzIFdpZGdldFRhYmxlQ29udGVudCkuZGVmYXVsdFBhZ2VTaXplfWA7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPG5nLWNvbnRhaW5lclxuICAqbmdJZj1cIntcbiAgICBkb2N1bWVudElkOiBkb2N1bWVudElkJCB8IGFzeW5jLFxuICAgIHRhYktleTogdGFiS2V5JCB8IGFzeW5jLFxuICAgIHdpZGdldENvbmZpZ3VyYXRpb246IHdpZGdldCQgfCBhc3luYyxcbiAgICB3aWRnZXREYXRhOiB3aWRnZXREYXRhJCB8IGFzeW5jLFxuICAgIHRoZW1lOiB0aGVtZSQgfCBhc3luYyxcbiAgICBibG9ja0hlaWdodFB4OiBibG9ja0hlaWdodFB4JCB8IGFzeW5jLFxuICAgIGJsb2NrV2lkdGhQZXJjZW50YWdlOiBibG9ja1dpZHRoUGVyY2VudGFnZSQgfCBhc3luY1xuICB9IGFzIG9ic1wiXG4+XG4gIDxkaXYgI3dpZGdldEJsb2NrIGNsYXNzPVwid2lkZ2V0LWJsb2NrXCIgW2F0dHIuZGF0YS1jYXJib24tdGhlbWVdPVwib2JzLnRoZW1lXCI+XG4gICAgPGRpdiAjd2lkZ2V0QmxvY2tDb250ZW50IGNsYXNzPVwid2lkZ2V0LWJsb2NrX19jb250ZW50XCI+XG4gICAgICBAaWYgKG9icy53aWRnZXREYXRhKSB7XG4gICAgICAgIEBzd2l0Y2ggKG9icy53aWRnZXRDb25maWd1cmF0aW9uLnR5cGUpIHtcbiAgICAgICAgICBAY2FzZSAoQ2FzZVdpZGdldFR5cGUuVEFCTEUpIHtcbiAgICAgICAgICAgIDx2YWx0aW1vLXdpZGdldC10YWJsZVxuICAgICAgICAgICAgICBbZG9jdW1lbnRJZF09XCJvYnMuZG9jdW1lbnRJZFwiXG4gICAgICAgICAgICAgIFt0YWJLZXldPVwib2JzLnRhYktleVwiXG4gICAgICAgICAgICAgIFt3aWRnZXRDb25maWd1cmF0aW9uXT1cIm9icy53aWRnZXRDb25maWd1cmF0aW9uXCJcbiAgICAgICAgICAgICAgW3dpZGdldERhdGFdPVwib2JzLndpZGdldERhdGFcIlxuICAgICAgICAgICAgPjwvdmFsdGltby13aWRnZXQtdGFibGU+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGNhc2UgKENhc2VXaWRnZXRUeXBlLkNPTExFQ1RJT04pIHtcbiAgICAgICAgICAgIDx2YWx0aW1vLXdpZGdldC1jb2xsZWN0aW9uXG4gICAgICAgICAgICAgIFtkb2N1bWVudElkXT1cIm9icy5kb2N1bWVudElkXCJcbiAgICAgICAgICAgICAgW3RhYktleV09XCJvYnMudGFiS2V5XCJcbiAgICAgICAgICAgICAgW3dpZGdldENvbmZpZ3VyYXRpb25dPVwib2JzLndpZGdldENvbmZpZ3VyYXRpb25cIlxuICAgICAgICAgICAgICBbd2lkZ2V0RGF0YV09XCJvYnMud2lkZ2V0RGF0YVwiXG4gICAgICAgICAgICA+PC92YWx0aW1vLXdpZGdldC1jb2xsZWN0aW9uPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBjYXNlIChDYXNlV2lkZ2V0VHlwZS5DVVNUT00pIHtcbiAgICAgICAgICAgIDx2YWx0aW1vLXdpZGdldC1jdXN0b20gW3dpZGdldENvbmZpZ109XCJvYnMud2lkZ2V0Q29uZmlndXJhdGlvblwiPjwvdmFsdGltby13aWRnZXQtY3VzdG9tPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBjYXNlIChDYXNlV2lkZ2V0VHlwZS5GSUVMRFMpIHtcbiAgICAgICAgICAgIDx2YWx0aW1vLXdpZGdldC1maWVsZFxuICAgICAgICAgICAgICBbY29sbGFwc2VWZXJ0aWNhbGx5XT1cInRydWVcIlxuICAgICAgICAgICAgICBbd2lkZ2V0Q29uZmlndXJhdGlvbl09XCJvYnMud2lkZ2V0Q29uZmlndXJhdGlvblwiXG4gICAgICAgICAgICAgIFt3aWRnZXREYXRhXT1cIm9icy53aWRnZXREYXRhXCJcbiAgICAgICAgICAgID48L3ZhbHRpbW8td2lkZ2V0LWZpZWxkPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBjYXNlIChDYXNlV2lkZ2V0VHlwZS5GT1JNSU8pIHtcbiAgICAgICAgICAgIDx2YWx0aW1vLXdpZGdldC1mb3JtaW9cbiAgICAgICAgICAgICAgW3dpZGdldENvbmZpZ3VyYXRpb25dPVwib2JzLndpZGdldENvbmZpZ3VyYXRpb25cIlxuICAgICAgICAgICAgICBbZG9jdW1lbnRJZF09XCJvYnMuZG9jdW1lbnRJZFwiXG4gICAgICAgICAgICA+PC92YWx0aW1vLXdpZGdldC1mb3JtaW8+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGRlZmF1bHQge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndpZGdldC1ibG9ja19fbm90LWF2YWlsYWJsZVwiPlxuICAgICAgICAgICAgICA8dmFsdGltby1uby1yZXN1bHRzXG4gICAgICAgICAgICAgICAgW2NvbGxhcHNlVmVydGljYWxseV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbZGVzY3JpcHRpb25dPVwiJ2Rvc3NpZXIud2lkZ2V0cy5ub1dpZGdldCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFtzbWFsbFBhZGRpbmddPVwidHJ1ZVwiXG4gICAgICAgICAgICAgID48L3ZhbHRpbW8tbm8tcmVzdWx0cz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3aWRnZXQtYmxvY2tfX25vdC1hdmFpbGFibGVcIj5cbiAgICAgICAgICA8dmFsdGltby1uby1yZXN1bHRzXG4gICAgICAgICAgICBbY29sbGFwc2VWZXJ0aWNhbGx5XT1cInRydWVcIlxuICAgICAgICAgICAgW2Rlc2NyaXB0aW9uXT1cIidkb3NzaWVyLndpZGdldHMubm9EYXRhJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICBbc21hbGxQYWRkaW5nXT1cInRydWVcIlxuICAgICAgICAgID48L3ZhbHRpbW8tbm8tcmVzdWx0cz5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG4iXX0=
@@ -0,0 +1,74 @@
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, Input, ViewChild, } from '@angular/core';
17
+ import { CommonModule } from '@angular/common';
18
+ import { WidgetBlockComponent } from '../widget-block/widget-block.component';
19
+ import { v4 as uuid } from 'uuid';
20
+ import { BehaviorSubject, delay, take } from 'rxjs';
21
+ import Muuri from 'muuri';
22
+ import * as i0 from "@angular/core";
23
+ import * as i1 from "../../../../../../services";
24
+ import * as i2 from "@angular/common";
25
+ export class WidgetsContainerComponent {
26
+ set widgets(value) {
27
+ const widgetsWithUuids = value.map(widget => ({ ...widget, uuid: uuid() }));
28
+ this.dossierWidgetsLayoutService.setWidgets(widgetsWithUuids);
29
+ this.widgetsWithUuids$.next(widgetsWithUuids);
30
+ }
31
+ constructor(dossierWidgetsLayoutService) {
32
+ this.dossierWidgetsLayoutService = dossierWidgetsLayoutService;
33
+ this.widgetsWithUuids$ = new BehaviorSubject([]);
34
+ }
35
+ ngAfterViewInit() {
36
+ this._observer = new ResizeObserver(event => {
37
+ this.observerMutation(event);
38
+ });
39
+ this._observer.observe(this._widgetsContainerRef.nativeElement);
40
+ this.initMuuri();
41
+ }
42
+ ngOnDestroy() {
43
+ this._observer?.disconnect();
44
+ }
45
+ observerMutation(event) {
46
+ const containerWidth = event[0]?.borderBoxSize[0]?.inlineSize;
47
+ if (typeof containerWidth === 'number' && containerWidth !== 0) {
48
+ this.dossierWidgetsLayoutService.setContainerWidth(containerWidth);
49
+ this.dossierWidgetsLayoutService.triggerMuuriLayout();
50
+ }
51
+ }
52
+ initMuuri() {
53
+ this.dossierWidgetsLayoutService.loaded$.pipe(take(1), delay(300)).subscribe(() => {
54
+ this.dossierWidgetsLayoutService.setMuuri(new Muuri(this._widgetsContainerRef.nativeElement, {
55
+ layout: {
56
+ fillGaps: true,
57
+ },
58
+ layoutOnResize: false,
59
+ }));
60
+ });
61
+ }
62
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: WidgetsContainerComponent, deps: [{ token: i1.DossierWidgetsLayoutService }], target: i0.ɵɵFactoryTarget.Component }); }
63
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", type: WidgetsContainerComponent, isStandalone: true, selector: "valtimo-dossier-widgets-container", inputs: { widgets: "widgets" }, viewQueries: [{ propertyName: "_widgetsContainerRef", first: true, predicate: ["widgetsContainer"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div #widgetsContainer class=\"widgets-container\">\n @for (widget of widgetsWithUuids$ | async; track widget.uuid) {\n <valtimo-dossier-widget-block [widget]=\"widget\"></valtimo-dossier-widget-block>\n }\n</div>\n", styles: [".widgets-container{position:relative;width:calc(100% + 16px);margin-left:-8px;margin-top:-8px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "component", type: WidgetBlockComponent, selector: "valtimo-dossier-widget-block", inputs: ["widget"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
64
+ }
65
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: WidgetsContainerComponent, decorators: [{
66
+ type: Component,
67
+ args: [{ selector: 'valtimo-dossier-widgets-container', standalone: true, imports: [CommonModule, WidgetBlockComponent], 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 #widgetsContainer class=\"widgets-container\">\n @for (widget of widgetsWithUuids$ | async; track widget.uuid) {\n <valtimo-dossier-widget-block [widget]=\"widget\"></valtimo-dossier-widget-block>\n }\n</div>\n", styles: [".widgets-container{position:relative;width:calc(100% + 16px);margin-left:-8px;margin-top:-8px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
68
+ }], ctorParameters: () => [{ type: i1.DossierWidgetsLayoutService }], propDecorators: { _widgetsContainerRef: [{
69
+ type: ViewChild,
70
+ args: ['widgetsContainer']
71
+ }], widgets: [{
72
+ type: Input
73
+ }] } });
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0cy1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyL3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLWRldGFpbC90YWIvd2lkZ2V0cy9jb21wb25lbnRzL3dpZGdldHMtY29udGFpbmVyL3dpZGdldHMtY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci9zcmMvbGliL2NvbXBvbmVudHMvZG9zc2llci1kZXRhaWwvdGFiL3dpZGdldHMvY29tcG9uZW50cy93aWRnZXRzLWNvbnRhaW5lci93aWRnZXRzLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUVULEtBQUssRUFFTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRTdDLE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBRTVFLE9BQU8sRUFBQyxFQUFFLElBQUksSUFBSSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ2hDLE9BQU8sRUFBQyxlQUFlLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7Ozs7QUFVMUIsTUFBTSxPQUFPLHlCQUF5QjtJQUtwQyxJQUFvQixPQUFPLENBQUMsS0FBbUI7UUFDN0MsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLEdBQUcsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBQyxDQUFDLENBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMsMkJBQTJCLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFJRCxZQUE2QiwyQkFBd0Q7UUFBeEQsZ0NBQTJCLEdBQTNCLDJCQUEyQixDQUE2QjtRQVZyRSxzQkFBaUIsR0FBRyxJQUFJLGVBQWUsQ0FBdUIsRUFBRSxDQUFDLENBQUM7SUFVTSxDQUFDO0lBRWxGLGVBQWU7UUFDcEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLGNBQWMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMxQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFaEUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVPLGdCQUFnQixDQUFDLEtBQWlDO1FBQ3hELE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDO1FBRTlELElBQUksT0FBTyxjQUFjLEtBQUssUUFBUSxJQUFJLGNBQWMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMvRCxJQUFJLENBQUMsMkJBQTJCLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDbkUsSUFBSSxDQUFDLDJCQUEyQixDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDeEQsQ0FBQztJQUNILENBQUM7SUFFTyxTQUFTO1FBQ2YsSUFBSSxDQUFDLDJCQUEyQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDaEYsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFFBQVEsQ0FDdkMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsRUFBRTtnQkFDakQsTUFBTSxFQUFFO29CQUNOLFFBQVEsRUFBRSxJQUFJO2lCQUNmO2dCQUNELGNBQWMsRUFBRSxLQUFLO2FBQ3RCLENBQUMsQ0FDSCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzhHQWhEVSx5QkFBeUI7a0dBQXpCLHlCQUF5Qix1UEN6Q3RDLDgyQkFxQkEsdXhCRGlCWSxZQUFZLG9GQUFFLG9CQUFvQjs7MkZBR2pDLHlCQUF5QjtrQkFSckMsU0FBUzsrQkFDRSxtQ0FBbUMsY0FHakMsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLG9CQUFvQixDQUFDLG1CQUM1Qix1QkFBdUIsQ0FBQyxNQUFNO2dHQUdSLG9CQUFvQjtzQkFBMUQsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBSVQsT0FBTztzQkFBMUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7Q2FzZVdpZGdldCwgQ2FzZVdpZGdldFdpdGhVdWlkfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtXaWRnZXRCbG9ja0NvbXBvbmVudH0gZnJvbSAnLi4vd2lkZ2V0LWJsb2NrL3dpZGdldC1ibG9jay5jb21wb25lbnQnO1xuaW1wb3J0IHtEb3NzaWVyV2lkZ2V0c0xheW91dFNlcnZpY2V9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7djQgYXMgdXVpZH0gZnJvbSAndXVpZCc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgZGVsYXksIHRha2V9IGZyb20gJ3J4anMnO1xuaW1wb3J0IE11dXJpIGZyb20gJ211dXJpJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1kb3NzaWVyLXdpZGdldHMtY29udGFpbmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dpZGdldHMtY29udGFpbmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vd2lkZ2V0cy1jb250YWluZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgV2lkZ2V0QmxvY2tDb21wb25lbnRdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgV2lkZ2V0c0NvbnRhaW5lckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ3dpZGdldHNDb250YWluZXInKSBwcml2YXRlIF93aWRnZXRzQ29udGFpbmVyUmVmOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICBwdWJsaWMgcmVhZG9ubHkgd2lkZ2V0c1dpdGhVdWlkcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENhc2VXaWRnZXRXaXRoVXVpZFtdPihbXSk7XG5cbiAgQElucHV0KCkgcHVibGljIHNldCB3aWRnZXRzKHZhbHVlOiBDYXNlV2lkZ2V0W10pIHtcbiAgICBjb25zdCB3aWRnZXRzV2l0aFV1aWRzID0gdmFsdWUubWFwKHdpZGdldCA9PiAoey4uLndpZGdldCwgdXVpZDogdXVpZCgpfSkpO1xuICAgIHRoaXMuZG9zc2llcldpZGdldHNMYXlvdXRTZXJ2aWNlLnNldFdpZGdldHMod2lkZ2V0c1dpdGhVdWlkcyk7XG4gICAgdGhpcy53aWRnZXRzV2l0aFV1aWRzJC5uZXh0KHdpZGdldHNXaXRoVXVpZHMpO1xuICB9XG5cbiAgcHJpdmF0ZSBfb2JzZXJ2ZXIhOiBSZXNpemVPYnNlcnZlcjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGRvc3NpZXJXaWRnZXRzTGF5b3V0U2VydmljZTogRG9zc2llcldpZGdldHNMYXlvdXRTZXJ2aWNlKSB7fVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fb2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoZXZlbnQgPT4ge1xuICAgICAgdGhpcy5vYnNlcnZlck11dGF0aW9uKGV2ZW50KTtcbiAgICB9KTtcbiAgICB0aGlzLl9vYnNlcnZlci5vYnNlcnZlKHRoaXMuX3dpZGdldHNDb250YWluZXJSZWYubmF0aXZlRWxlbWVudCk7XG5cbiAgICB0aGlzLmluaXRNdXVyaSgpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX29ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBwcml2YXRlIG9ic2VydmVyTXV0YXRpb24oZXZlbnQ6IEFycmF5PFJlc2l6ZU9ic2VydmVyRW50cnk+KTogdm9pZCB7XG4gICAgY29uc3QgY29udGFpbmVyV2lkdGggPSBldmVudFswXT8uYm9yZGVyQm94U2l6ZVswXT8uaW5saW5lU2l6ZTtcblxuICAgIGlmICh0eXBlb2YgY29udGFpbmVyV2lkdGggPT09ICdudW1iZXInICYmIGNvbnRhaW5lcldpZHRoICE9PSAwKSB7XG4gICAgICB0aGlzLmRvc3NpZXJXaWRnZXRzTGF5b3V0U2VydmljZS5zZXRDb250YWluZXJXaWR0aChjb250YWluZXJXaWR0aCk7XG4gICAgICB0aGlzLmRvc3NpZXJXaWRnZXRzTGF5b3V0U2VydmljZS50cmlnZ2VyTXV1cmlMYXlvdXQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXRNdXVyaSgpOiB2b2lkIHtcbiAgICB0aGlzLmRvc3NpZXJXaWRnZXRzTGF5b3V0U2VydmljZS5sb2FkZWQkLnBpcGUodGFrZSgxKSwgZGVsYXkoMzAwKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuZG9zc2llcldpZGdldHNMYXlvdXRTZXJ2aWNlLnNldE11dXJpKFxuICAgICAgICBuZXcgTXV1cmkodGhpcy5fd2lkZ2V0c0NvbnRhaW5lclJlZi5uYXRpdmVFbGVtZW50LCB7XG4gICAgICAgICAgbGF5b3V0OiB7XG4gICAgICAgICAgICBmaWxsR2FwczogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGxheW91dE9uUmVzaXplOiBmYWxzZSxcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPGRpdiAjd2lkZ2V0c0NvbnRhaW5lciBjbGFzcz1cIndpZGdldHMtY29udGFpbmVyXCI+XG4gIEBmb3IgKHdpZGdldCBvZiB3aWRnZXRzV2l0aFV1aWRzJCB8IGFzeW5jOyB0cmFjayB3aWRnZXQudXVpZCkge1xuICAgIDx2YWx0aW1vLWRvc3NpZXItd2lkZ2V0LWJsb2NrIFt3aWRnZXRdPVwid2lkZ2V0XCI+PC92YWx0aW1vLWRvc3NpZXItd2lkZ2V0LWJsb2NrPlxuICB9XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,74 @@
1
+ /*
2
+ * Copyright 2015-2024 Ritense BV, the Netherlands.
3
+ *
4
+ * Licensed under EUPL, Version 1.2 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" basis,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { CommonModule } from '@angular/common';
17
+ import { ChangeDetectionStrategy, Component, HostBinding } from '@angular/core';
18
+ import { BehaviorSubject, combineLatest, delay, filter, map, switchMap, tap } from 'rxjs';
19
+ import { LoadingModule } from 'carbon-components-angular';
20
+ import { WidgetsContainerComponent } from './components/widgets-container/widgets-container.component';
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 "@angular/router";
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 "@valtimo/components";
29
+ import * as i6 from "@ngx-translate/core";
30
+ export class DossierDetailWidgetsComponent {
31
+ constructor(route, dossierTabService, widgetsApiService, dossierWidgetsLayoutService) {
32
+ this.route = route;
33
+ this.dossierTabService = dossierTabService;
34
+ this.widgetsApiService = widgetsApiService;
35
+ this.dossierWidgetsLayoutService = dossierWidgetsLayoutService;
36
+ this._noMargin = true;
37
+ this._noBackground = true;
38
+ this._noMinHeight = true;
39
+ this._documentId$ = this.route.params.pipe(map(params => params?.documentId), filter(documentId => !!documentId));
40
+ this._tabKey$ = this.dossierTabService.activeTabKey$;
41
+ this.loadingWidgetConfiguration$ = new BehaviorSubject(true);
42
+ this.widgetConfiguration$ = combineLatest([this._documentId$, this._tabKey$]).pipe(switchMap(([documentId, tabKey]) => this.widgetsApiService.getWidgetTabConfiguration(documentId, tabKey)), tap(() => this.loadingWidgetConfiguration$.next(false)));
43
+ this.loaded$ = this.dossierWidgetsLayoutService.loaded$.pipe(delay(400));
44
+ }
45
+ ngOnInit() {
46
+ this.dossierTabService.disableTabHorizontalOverflow();
47
+ }
48
+ ngOnDestroy() {
49
+ this.dossierWidgetsLayoutService.reset();
50
+ this.dossierTabService.enableTabHorizontalOverflow();
51
+ }
52
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: DossierDetailWidgetsComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.DossierTabService }, { token: i2.DossierWidgetsApiService }, { token: i2.DossierWidgetsLayoutService }], target: i0.ɵɵFactoryTarget.Component }); }
53
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", type: DossierDetailWidgetsComponent, isStandalone: true, selector: "ng-component", host: { properties: { "class.tab--no-margin": "this._noMargin", "class.tab--no-background": "this._noBackground", "class.tab--no-min-height": "this._noMinHeight" } }, 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 loadingWidgetConfiguration: loadingWidgetConfiguration$ | async,\n widgetConfiguration: widgetConfiguration$ | async,\n loaded: loaded$ | async\n } as obs\"\n>\n <ng-container\n *ngIf=\"{\n noWidgetsConfigured:\n obs.widgetConfiguration?.widgets && obs.widgetConfiguration.widgets.length === 0\n } as vars\"\n >\n @if (!obs.loaded && !vars.noWidgetsConfigured) {\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n }\n\n @if (vars.noWidgetsConfigured) {\n <valtimo-no-results\n [title]=\"'dossier.widgets.noWidgets' | translate\"\n [description]=\"'dossier.widgets.noWidgetsDescription' | translate\"\n illustration=\"valtimo-layout/img/no-widgets.svg\"\n ></valtimo-no-results>\n }\n\n <div [style.visibility]=\"!obs.loaded ? 'hidden' : 'visible'\">\n <valtimo-dossier-widgets-container\n [widgets]=\"obs.widgetConfiguration?.widgets || []\"\n ></valtimo-dossier-widgets-container>\n </div>\n </ng-container>\n</ng-container>\n", styles: [".loading-container{display:flex;justify-content:center;padding:16px 0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: LoadingModule }, { kind: "component", type: i4.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "component", type: WidgetsContainerComponent, selector: "valtimo-dossier-widgets-container", inputs: ["widgets"] }, { kind: "ngmodule", type: CarbonListModule }, { kind: "component", type: i5.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
54
+ }
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: DossierDetailWidgetsComponent, decorators: [{
56
+ type: Component,
57
+ args: [{ standalone: true, imports: [
58
+ CommonModule,
59
+ LoadingModule,
60
+ WidgetsContainerComponent,
61
+ CarbonListModule,
62
+ TranslateModule,
63
+ ], 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<ng-container\n *ngIf=\"{\n loadingWidgetConfiguration: loadingWidgetConfiguration$ | async,\n widgetConfiguration: widgetConfiguration$ | async,\n loaded: loaded$ | async\n } as obs\"\n>\n <ng-container\n *ngIf=\"{\n noWidgetsConfigured:\n obs.widgetConfiguration?.widgets && obs.widgetConfiguration.widgets.length === 0\n } as vars\"\n >\n @if (!obs.loaded && !vars.noWidgetsConfigured) {\n <div class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n }\n\n @if (vars.noWidgetsConfigured) {\n <valtimo-no-results\n [title]=\"'dossier.widgets.noWidgets' | translate\"\n [description]=\"'dossier.widgets.noWidgetsDescription' | translate\"\n illustration=\"valtimo-layout/img/no-widgets.svg\"\n ></valtimo-no-results>\n }\n\n <div [style.visibility]=\"!obs.loaded ? 'hidden' : 'visible'\">\n <valtimo-dossier-widgets-container\n [widgets]=\"obs.widgetConfiguration?.widgets || []\"\n ></valtimo-dossier-widgets-container>\n </div>\n </ng-container>\n</ng-container>\n", styles: [".loading-container{display:flex;justify-content:center;padding:16px 0}\n"] }]
64
+ }], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i2.DossierTabService }, { type: i2.DossierWidgetsApiService }, { type: i2.DossierWidgetsLayoutService }], propDecorators: { _noMargin: [{
65
+ type: HostBinding,
66
+ args: ['class.tab--no-margin']
67
+ }], _noBackground: [{
68
+ type: HostBinding,
69
+ args: ['class.tab--no-background']
70
+ }], _noMinHeight: [{
71
+ type: HostBinding,
72
+ args: ['class.tab--no-min-height']
73
+ }] } });
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rvc3NpZXIvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItZGV0YWlsL3RhYi93aWRnZXRzL3dpZGdldHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyL3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLWRldGFpbC90YWIvd2lkZ2V0cy93aWRnZXRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUVqRyxPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBYyxTQUFTLEVBQUUsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBTXBHLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RCxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSw0REFBNEQsQ0FBQztBQUNyRyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7O0FBZXBELE1BQU0sT0FBTyw2QkFBNkI7SUF1QnhDLFlBQ21CLEtBQXFCLEVBQ3JCLGlCQUFvQyxFQUNwQyxpQkFBMkMsRUFDM0MsMkJBQXdEO1FBSHhELFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUEwQjtRQUMzQyxnQ0FBMkIsR0FBM0IsMkJBQTJCLENBQTZCO1FBMUJyQixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ2Isa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFDckIsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFFN0QsaUJBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ3BELEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsRUFDakMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUNuQyxDQUFDO1FBRWUsYUFBUSxHQUF1QixJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDO1FBRXJFLGdDQUEyQixHQUFHLElBQUksZUFBZSxDQUFVLElBQUksQ0FBQyxDQUFDO1FBRWpFLHlCQUFvQixHQUFHLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUMzRixTQUFTLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQ2pDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyx5QkFBeUIsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQ3JFLEVBQ0QsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDeEQsQ0FBQztRQUVjLFlBQU8sR0FBRyxJQUFJLENBQUMsMkJBQTJCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQU9qRixDQUFDO0lBRUcsUUFBUTtRQUNiLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO0lBQ3hELENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN6QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztJQUN2RCxDQUFDOzhHQXJDVSw2QkFBNkI7a0dBQTdCLDZCQUE2QiwrT0MzQzFDLDB0REFrREEsaUlEZkksWUFBWSx1TEFDWixhQUFhLGdLQUNiLHlCQUF5QixrR0FDekIsZ0JBQWdCLG9QQUNoQixlQUFlOzsyRkFJTiw2QkFBNkI7a0JBYnpDLFNBQVM7aUNBR0ksSUFBSSxXQUNQO3dCQUNQLFlBQVk7d0JBQ1osYUFBYTt3QkFDYix5QkFBeUI7d0JBQ3pCLGdCQUFnQjt3QkFDaEIsZUFBZTtxQkFDaEIsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU07b01BR08sU0FBUztzQkFBOUQsV0FBVzt1QkFBQyxzQkFBc0I7Z0JBQ3VCLGFBQWE7c0JBQXRFLFdBQVc7dUJBQUMsMEJBQTBCO2dCQUNtQixZQUFZO3NCQUFyRSxXQUFXO3VCQUFDLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBIb3N0QmluZGluZywgT25EZXN0cm95LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZX0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBkZWxheSwgZmlsdGVyLCBtYXAsIE9ic2VydmFibGUsIHN3aXRjaE1hcCwgdGFwfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIERvc3NpZXJUYWJTZXJ2aWNlLFxuICBEb3NzaWVyV2lkZ2V0c0FwaVNlcnZpY2UsXG4gIERvc3NpZXJXaWRnZXRzTGF5b3V0U2VydmljZSxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtMb2FkaW5nTW9kdWxlfSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyJztcbmltcG9ydCB7V2lkZ2V0c0NvbnRhaW5lckNvbXBvbmVudH0gZnJvbSAnLi9jb21wb25lbnRzL3dpZGdldHMtY29udGFpbmVyL3dpZGdldHMtY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQge0NhcmJvbkxpc3RNb2R1bGV9IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGV9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGVVcmw6ICcuL3dpZGdldHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi93aWRnZXRzLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTG9hZGluZ01vZHVsZSxcbiAgICBXaWRnZXRzQ29udGFpbmVyQ29tcG9uZW50LFxuICAgIENhcmJvbkxpc3RNb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRG9zc2llckRldGFpbFdpZGdldHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBIb3N0QmluZGluZygnY2xhc3MudGFiLS1uby1tYXJnaW4nKSBwcml2YXRlIHJlYWRvbmx5IF9ub01hcmdpbiA9IHRydWU7XG4gIEBIb3N0QmluZGluZygnY2xhc3MudGFiLS1uby1iYWNrZ3JvdW5kJykgcHJpdmF0ZSByZWFkb25seSBfbm9CYWNrZ3JvdW5kID0gdHJ1ZTtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy50YWItLW5vLW1pbi1oZWlnaHQnKSBwcml2YXRlIHJlYWRvbmx5IF9ub01pbkhlaWdodCA9IHRydWU7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZG9jdW1lbnRJZCQgPSB0aGlzLnJvdXRlLnBhcmFtcy5waXBlKFxuICAgIG1hcChwYXJhbXMgPT4gcGFyYW1zPy5kb2N1bWVudElkKSxcbiAgICBmaWx0ZXIoZG9jdW1lbnRJZCA9PiAhIWRvY3VtZW50SWQpXG4gICk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfdGFiS2V5JDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGhpcy5kb3NzaWVyVGFiU2VydmljZS5hY3RpdmVUYWJLZXkkO1xuXG4gIHB1YmxpYyByZWFkb25seSBsb2FkaW5nV2lkZ2V0Q29uZmlndXJhdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuXG4gIHB1YmxpYyByZWFkb25seSB3aWRnZXRDb25maWd1cmF0aW9uJCA9IGNvbWJpbmVMYXRlc3QoW3RoaXMuX2RvY3VtZW50SWQkLCB0aGlzLl90YWJLZXkkXSkucGlwZShcbiAgICBzd2l0Y2hNYXAoKFtkb2N1bWVudElkLCB0YWJLZXldKSA9PlxuICAgICAgdGhpcy53aWRnZXRzQXBpU2VydmljZS5nZXRXaWRnZXRUYWJDb25maWd1cmF0aW9uKGRvY3VtZW50SWQsIHRhYktleSlcbiAgICApLFxuICAgIHRhcCgoKSA9PiB0aGlzLmxvYWRpbmdXaWRnZXRDb25maWd1cmF0aW9uJC5uZXh0KGZhbHNlKSlcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgbG9hZGVkJCA9IHRoaXMuZG9zc2llcldpZGdldHNMYXlvdXRTZXJ2aWNlLmxvYWRlZCQucGlwZShkZWxheSg0MDApKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRvc3NpZXJUYWJTZXJ2aWNlOiBEb3NzaWVyVGFiU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHdpZGdldHNBcGlTZXJ2aWNlOiBEb3NzaWVyV2lkZ2V0c0FwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb3NzaWVyV2lkZ2V0c0xheW91dFNlcnZpY2U6IERvc3NpZXJXaWRnZXRzTGF5b3V0U2VydmljZVxuICApIHt9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZG9zc2llclRhYlNlcnZpY2UuZGlzYWJsZVRhYkhvcml6b250YWxPdmVyZmxvdygpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZG9zc2llcldpZGdldHNMYXlvdXRTZXJ2aWNlLnJlc2V0KCk7XG4gICAgdGhpcy5kb3NzaWVyVGFiU2VydmljZS5lbmFibGVUYWJIb3Jpem9udGFsT3ZlcmZsb3coKTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48bmctY29udGFpbmVyXG4gICpuZ0lmPVwie1xuICAgIGxvYWRpbmdXaWRnZXRDb25maWd1cmF0aW9uOiBsb2FkaW5nV2lkZ2V0Q29uZmlndXJhdGlvbiQgfCBhc3luYyxcbiAgICB3aWRnZXRDb25maWd1cmF0aW9uOiB3aWRnZXRDb25maWd1cmF0aW9uJCB8IGFzeW5jLFxuICAgIGxvYWRlZDogbG9hZGVkJCB8IGFzeW5jXG4gIH0gYXMgb2JzXCJcbj5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwie1xuICAgICAgbm9XaWRnZXRzQ29uZmlndXJlZDpcbiAgICAgICAgb2JzLndpZGdldENvbmZpZ3VyYXRpb24/LndpZGdldHMgJiYgb2JzLndpZGdldENvbmZpZ3VyYXRpb24ud2lkZ2V0cy5sZW5ndGggPT09IDBcbiAgICB9IGFzIHZhcnNcIlxuICA+XG4gICAgQGlmICghb2JzLmxvYWRlZCAmJiAhdmFycy5ub1dpZGdldHNDb25maWd1cmVkKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwibG9hZGluZy1jb250YWluZXJcIj5cbiAgICAgICAgPGNkcy1sb2FkaW5nPjwvY2RzLWxvYWRpbmc+XG4gICAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICBAaWYgKHZhcnMubm9XaWRnZXRzQ29uZmlndXJlZCkge1xuICAgICAgPHZhbHRpbW8tbm8tcmVzdWx0c1xuICAgICAgICBbdGl0bGVdPVwiJ2Rvc3NpZXIud2lkZ2V0cy5ub1dpZGdldHMnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW2Rlc2NyaXB0aW9uXT1cIidkb3NzaWVyLndpZGdldHMubm9XaWRnZXRzRGVzY3JpcHRpb24nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgaWxsdXN0cmF0aW9uPVwidmFsdGltby1sYXlvdXQvaW1nL25vLXdpZGdldHMuc3ZnXCJcbiAgICAgID48L3ZhbHRpbW8tbm8tcmVzdWx0cz5cbiAgICB9XG5cbiAgICA8ZGl2IFtzdHlsZS52aXNpYmlsaXR5XT1cIiFvYnMubG9hZGVkID8gJ2hpZGRlbicgOiAndmlzaWJsZSdcIj5cbiAgICAgIDx2YWx0aW1vLWRvc3NpZXItd2lkZ2V0cy1jb250YWluZXJcbiAgICAgICAgW3dpZGdldHNdPVwib2JzLndpZGdldENvbmZpZ3VyYXRpb24/LndpZGdldHMgfHwgW11cIlxuICAgICAgPjwvdmFsdGltby1kb3NzaWVyLXdpZGdldHMtY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuIl19