@valtimo/dossier-management 11.0.0 → 11.1.2

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 (89) hide show
  1. package/esm2022/lib/components/dossier-management-assignee/dossier-management-assignee.component.mjs +75 -0
  2. package/esm2022/lib/{dossier-management-connect-modal → components/dossier-management-connect-modal}/dossier-management-connect-modal.component.mjs +1 -1
  3. package/esm2022/lib/{dossier-management-detail-container/tabs → components}/dossier-management-detail/dossier-management-detail.component.mjs +5 -5
  4. package/esm2022/lib/components/dossier-management-detail-container/dossier-management-detail-container.component.mjs +68 -0
  5. package/esm2022/lib/components/dossier-management-link-process/dossier-management-link-process.component.mjs +84 -0
  6. package/esm2022/lib/{dossier-management-list → components/dossier-management-list}/dossier-management-list.component.mjs +1 -1
  7. package/esm2022/lib/components/dossier-management-list-columns/dossier-management-list-columns.component.mjs +458 -0
  8. package/esm2022/lib/{dossier-management-remove-modal → components/dossier-management-remove-modal}/dossier-management-remove-modal.component.mjs +1 -1
  9. package/esm2022/lib/components/dossier-management-search-fields/dossier-management-search-fields.component.mjs +416 -0
  10. package/esm2022/lib/components/dossier-management-tabs/dossier-management-add-tab-modal/dossier-management-add-tab-modal.component.mjs +103 -0
  11. package/esm2022/lib/components/dossier-management-tabs/dossier-management-edit-tab-modal/dossier-management-edit-tab-modal.component.mjs +71 -0
  12. package/esm2022/lib/components/dossier-management-tabs/dossier-management-tabs.component.mjs +179 -0
  13. package/esm2022/lib/components/dossier-management-tabs/tab-form/tab-form.component.mjs +76 -0
  14. package/esm2022/lib/components/dossier-management-upload/dossier-management-upload.component.mjs +161 -0
  15. package/esm2022/lib/dossier-management-routing.module.mjs +3 -3
  16. package/esm2022/lib/dossier-management.module.mjs +38 -19
  17. package/esm2022/lib/models/index.mjs +2 -1
  18. package/esm2022/lib/models/tab.enum.mjs +23 -0
  19. package/esm2022/lib/services/index.mjs +18 -0
  20. package/esm2022/lib/services/tab-management.service.mjs +74 -0
  21. package/esm2022/lib/services/tab.service.mjs +88 -0
  22. package/esm2022/public-api.mjs +2 -2
  23. package/fesm2022/valtimo-dossier-management.mjs +1059 -520
  24. package/fesm2022/valtimo-dossier-management.mjs.map +1 -1
  25. package/lib/components/dossier-management-assignee/dossier-management-assignee.component.d.ts.map +1 -0
  26. package/lib/components/dossier-management-connect-modal/dossier-management-connect-modal.component.d.ts.map +1 -0
  27. package/lib/{dossier-management-detail-container/tabs → components}/dossier-management-detail/dossier-management-detail.component.d.ts +2 -2
  28. package/lib/components/dossier-management-detail/dossier-management-detail.component.d.ts.map +1 -0
  29. package/lib/{dossier-management-detail-container → components/dossier-management-detail-container}/dossier-management-detail-container.component.d.ts +3 -2
  30. package/lib/components/dossier-management-detail-container/dossier-management-detail-container.component.d.ts.map +1 -0
  31. package/lib/components/dossier-management-link-process/dossier-management-link-process.component.d.ts.map +1 -0
  32. package/lib/components/dossier-management-list/dossier-management-list.component.d.ts.map +1 -0
  33. package/lib/{dossier-management-detail-container/tabs → components}/dossier-management-list-columns/dossier-management-list-columns.component.d.ts +1 -1
  34. package/lib/components/dossier-management-list-columns/dossier-management-list-columns.component.d.ts.map +1 -0
  35. package/lib/components/dossier-management-remove-modal/dossier-management-remove-modal.component.d.ts.map +1 -0
  36. package/lib/components/dossier-management-search-fields/dossier-management-search-fields.component.d.ts.map +1 -0
  37. package/lib/components/dossier-management-tabs/dossier-management-add-tab-modal/dossier-management-add-tab-modal.component.d.ts +38 -0
  38. package/lib/components/dossier-management-tabs/dossier-management-add-tab-modal/dossier-management-add-tab-modal.component.d.ts.map +1 -0
  39. package/lib/components/dossier-management-tabs/dossier-management-edit-tab-modal/dossier-management-edit-tab-modal.component.d.ts +22 -0
  40. package/lib/components/dossier-management-tabs/dossier-management-edit-tab-modal/dossier-management-edit-tab-modal.component.d.ts.map +1 -0
  41. package/lib/components/dossier-management-tabs/dossier-management-tabs.component.d.ts +48 -0
  42. package/lib/components/dossier-management-tabs/dossier-management-tabs.component.d.ts.map +1 -0
  43. package/lib/components/dossier-management-tabs/tab-form/tab-form.component.d.ts +22 -0
  44. package/lib/components/dossier-management-tabs/tab-form/tab-form.component.d.ts.map +1 -0
  45. package/lib/components/dossier-management-upload/dossier-management-upload.component.d.ts.map +1 -0
  46. package/lib/dossier-management.module.d.ts +23 -19
  47. package/lib/dossier-management.module.d.ts.map +1 -1
  48. package/lib/models/index.d.ts +1 -0
  49. package/lib/models/index.d.ts.map +1 -1
  50. package/lib/models/tab.enum.d.ts +7 -0
  51. package/lib/models/tab.enum.d.ts.map +1 -0
  52. package/lib/services/index.d.ts +3 -0
  53. package/lib/services/index.d.ts.map +1 -0
  54. package/lib/services/tab-management.service.d.ts +26 -0
  55. package/lib/services/tab-management.service.d.ts.map +1 -0
  56. package/lib/services/tab.service.d.ts +31 -0
  57. package/lib/services/tab.service.d.ts.map +1 -0
  58. package/package.json +1 -1
  59. package/public-api.d.ts +1 -1
  60. package/public-api.d.ts.map +1 -1
  61. package/esm2022/lib/dossier-management-assignee/dossier-management-assignee.component.mjs +0 -75
  62. package/esm2022/lib/dossier-management-detail-container/dossier-management-detail-container.component.mjs +0 -65
  63. package/esm2022/lib/dossier-management-detail-container/tabs/dossier-management-list-columns/dossier-management-list-columns.component.mjs +0 -458
  64. package/esm2022/lib/dossier-management-detail-container/tabs/dossier-management-search-fields/dossier-management-search-fields.component.mjs +0 -416
  65. package/esm2022/lib/dossier-management-link-process/dossier-management-link-process.component.mjs +0 -84
  66. package/esm2022/lib/dossier-management-upload/dossier-management-upload.component.mjs +0 -161
  67. package/esm2022/lib/tab.enum.mjs +0 -22
  68. package/esm2022/lib/tab.service.mjs +0 -39
  69. package/lib/dossier-management-assignee/dossier-management-assignee.component.d.ts.map +0 -1
  70. package/lib/dossier-management-connect-modal/dossier-management-connect-modal.component.d.ts.map +0 -1
  71. package/lib/dossier-management-detail-container/dossier-management-detail-container.component.d.ts.map +0 -1
  72. package/lib/dossier-management-detail-container/tabs/dossier-management-detail/dossier-management-detail.component.d.ts.map +0 -1
  73. package/lib/dossier-management-detail-container/tabs/dossier-management-list-columns/dossier-management-list-columns.component.d.ts.map +0 -1
  74. package/lib/dossier-management-detail-container/tabs/dossier-management-search-fields/dossier-management-search-fields.component.d.ts.map +0 -1
  75. package/lib/dossier-management-link-process/dossier-management-link-process.component.d.ts.map +0 -1
  76. package/lib/dossier-management-list/dossier-management-list.component.d.ts.map +0 -1
  77. package/lib/dossier-management-remove-modal/dossier-management-remove-modal.component.d.ts.map +0 -1
  78. package/lib/dossier-management-upload/dossier-management-upload.component.d.ts.map +0 -1
  79. package/lib/tab.enum.d.ts +0 -6
  80. package/lib/tab.enum.d.ts.map +0 -1
  81. package/lib/tab.service.d.ts +0 -11
  82. package/lib/tab.service.d.ts.map +0 -1
  83. /package/lib/{dossier-management-assignee → components/dossier-management-assignee}/dossier-management-assignee.component.d.ts +0 -0
  84. /package/lib/{dossier-management-connect-modal → components/dossier-management-connect-modal}/dossier-management-connect-modal.component.d.ts +0 -0
  85. /package/lib/{dossier-management-link-process → components/dossier-management-link-process}/dossier-management-link-process.component.d.ts +0 -0
  86. /package/lib/{dossier-management-list → components/dossier-management-list}/dossier-management-list.component.d.ts +0 -0
  87. /package/lib/{dossier-management-remove-modal → components/dossier-management-remove-modal}/dossier-management-remove-modal.component.d.ts +0 -0
  88. /package/lib/{dossier-management-detail-container/tabs → components}/dossier-management-search-fields/dossier-management-search-fields.component.d.ts +0 -0
  89. /package/lib/{dossier-management-upload → components/dossier-management-upload}/dossier-management-upload.component.d.ts +0 -0
@@ -0,0 +1,103 @@
1
+ /*
2
+ * Copyright 2015-2023 Ritense BV, the Netherlands.
3
+ *
4
+ * Licensed under EUPL, Version 1.2 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" basis,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation, } from '@angular/core';
17
+ import { Validators, } from '@angular/forms';
18
+ import { Code16, Development16, WatsonHealthPageScroll16 } from '@carbon/icons';
19
+ import { ApiTabType } from '@valtimo/dossier';
20
+ import { BehaviorSubject, map } from 'rxjs';
21
+ import * as i0 from "@angular/core";
22
+ import * as i1 from "@angular/forms";
23
+ import * as i2 from "carbon-components-angular";
24
+ import * as i3 from "../../../services";
25
+ import * as i4 from "@angular/common";
26
+ import * as i5 from "../tab-form/tab-form.component";
27
+ import * as i6 from "@ngx-translate/core";
28
+ export class DossierManagementAddTabModalComponent {
29
+ constructor(fb, iconService, tabService) {
30
+ this.fb = fb;
31
+ this.iconService = iconService;
32
+ this.tabService = tabService;
33
+ this.open = false;
34
+ this.closeModalEvent = new EventEmitter();
35
+ this.ApiTabType = ApiTabType;
36
+ this.tabTypes$ = this.tabService.disableAddTabs$.pipe(map(disabled => [
37
+ {
38
+ icon: 'development',
39
+ title: 'dossierManagement.tabManagement.addModal.standardTab',
40
+ type: ApiTabType.STANDARD,
41
+ disabled: disabled.standard,
42
+ },
43
+ {
44
+ icon: 'page-scroll',
45
+ title: 'dossierManagement.tabManagement.addModal.formIOComponent',
46
+ type: ApiTabType.FORMIO,
47
+ disabled: disabled.formIO,
48
+ },
49
+ {
50
+ icon: 'code',
51
+ title: 'dossierManagement.tabManagement.addModal.customComponent',
52
+ type: ApiTabType.CUSTOM,
53
+ disabled: disabled.custom,
54
+ },
55
+ ]));
56
+ this.form = this.fb.group({
57
+ name: this.fb.control(null),
58
+ key: this.fb.control('', [Validators.required, this.uniqueKeyValidator()]),
59
+ contentKey: this.fb.control('', Validators.required),
60
+ });
61
+ this.selectedTabType$ = new BehaviorSubject(null);
62
+ this.iconService.registerAll([Code16, Development16, WatsonHealthPageScroll16]);
63
+ }
64
+ addTab(type) {
65
+ const { contentKey, key, name } = this.form.getRawValue();
66
+ if (!contentKey || !key) {
67
+ return;
68
+ }
69
+ this.closeModalEvent.emit({ name, key, contentKey, type });
70
+ }
71
+ backClick() {
72
+ this.resetModal();
73
+ }
74
+ onCloseModal() {
75
+ this.closeModalEvent.emit(null);
76
+ this.resetModal();
77
+ }
78
+ onTabTypeSelect(type) {
79
+ this.selectedTabType$.next(type);
80
+ }
81
+ resetModal() {
82
+ this.selectedTabType$.next(null);
83
+ this.form.reset();
84
+ }
85
+ uniqueKeyValidator() {
86
+ return (control) => this.tabService.configuredTabKeys.every((key) => key !== control.value)
87
+ ? null
88
+ : { uniqueKey: { value: control.value } };
89
+ }
90
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DossierManagementAddTabModalComponent, deps: [{ token: i1.FormBuilder }, { token: i2.IconService }, { token: i3.TabService }], target: i0.ɵɵFactoryTarget.Component }); }
91
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DossierManagementAddTabModalComponent, selector: "valtimo-dossier-management-add-tab-modal", inputs: { documentDefinitionName: "documentDefinitionName", open: "open" }, outputs: { closeModalEvent: "closeModalEvent" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal *ngIf=\"{selectedTabType: selectedTabType$ | async} as obs\" [open]=\"open\">\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"onCloseModal()\">\n <h3 cdsModalHeaderHeading>\n {{\n !obs.selectedTabType\n ? ('dossierManagement.tabManagement.addModal.title'\n | translate: {documentDefinitionName: (documentDefinitionName | titlecase)})\n : ('dossierManagement.tabManagement.titles.' + obs.selectedTabType | translate)\n }}\n </h3>\n </cds-modal-header>\n\n <section [formGroup]=\"form\" cdsModalContent class=\"valtimo-add-tab-modal__content\">\n <valtimo-tab-form\n *ngIf=\"obs.selectedTabType; else tabTypeSelection\"\n [tabType]=\"obs.selectedTabType\"\n ></valtimo-tab-form>\n\n <ng-template #tabTypeSelection>\n <span> {{ 'dossierManagement.tabManagement.addModal.description' | translate }} </span>\n\n <div *ngIf=\"tabTypes$ | async as tabTypes\" class=\"valtimo-add-tab-modal__types\">\n <button\n *ngFor=\"let tabType of tabTypes\"\n cdsButton=\"secondary\"\n [disabled]=\"tabType.disabled\"\n (click)=\"onTabTypeSelect(tabType.type)\"\n >\n {{ tabType.title | translate }}\n\n <svg [cdsIcon]=\"tabType.icon\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </div>\n </ng-template>\n </section>\n\n <cds-modal-footer class=\"valtimo-add-tab-modal__footer\">\n <button class=\"valtimo-add-tab-modal__cancel\" cdsButton=\"ghost\" (click)=\"onCloseModal()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <div class=\"valtimo-add-tab-modal__actions\" *ngIf=\"obs.selectedTabType\">\n <button cdsButton=\"secondary\" (click)=\"backClick()\">\n {{ 'interface.back' | translate }}\n </button>\n\n <button cdsButton=\"primary\" [disabled]=\"form.invalid\" (click)=\"addTab(obs.selectedTabType)\">\n {{ 'dossierManagement.tabManagement.addModal.addTab' | translate }}\n </button>\n </div>\n </cds-modal-footer>\n</cds-modal>\n", styles: [".valtimo-add-tab-modal__footer .cds--modal-footer{justify-content:unset;display:grid;grid-template-columns:1fr 1fr 2fr;grid-template-areas:\"cancel . actions\"}.valtimo-add-tab-modal__cancel{grid-area:cancel;width:100%}.valtimo-add-tab-modal__actions{grid-area:actions;display:flex}.valtimo-add-tab-modal__types{display:grid;grid-template:1fr/repeat(3,1fr);gap:16px}.valtimo-add-tab-modal__types button{width:100%}.valtimo-add-tab-modal__content{display:flex;flex-direction:column;gap:24px}\n"], dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i2.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: i2.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i2.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i2.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i2.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i2.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i5.TabFormComponent, selector: "valtimo-tab-form", inputs: ["tabType"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TitleCasePipe, name: "titlecase" }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
92
+ }
93
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DossierManagementAddTabModalComponent, decorators: [{
94
+ type: Component,
95
+ args: [{ selector: 'valtimo-dossier-management-add-tab-modal', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal *ngIf=\"{selectedTabType: selectedTabType$ | async} as obs\" [open]=\"open\">\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"onCloseModal()\">\n <h3 cdsModalHeaderHeading>\n {{\n !obs.selectedTabType\n ? ('dossierManagement.tabManagement.addModal.title'\n | translate: {documentDefinitionName: (documentDefinitionName | titlecase)})\n : ('dossierManagement.tabManagement.titles.' + obs.selectedTabType | translate)\n }}\n </h3>\n </cds-modal-header>\n\n <section [formGroup]=\"form\" cdsModalContent class=\"valtimo-add-tab-modal__content\">\n <valtimo-tab-form\n *ngIf=\"obs.selectedTabType; else tabTypeSelection\"\n [tabType]=\"obs.selectedTabType\"\n ></valtimo-tab-form>\n\n <ng-template #tabTypeSelection>\n <span> {{ 'dossierManagement.tabManagement.addModal.description' | translate }} </span>\n\n <div *ngIf=\"tabTypes$ | async as tabTypes\" class=\"valtimo-add-tab-modal__types\">\n <button\n *ngFor=\"let tabType of tabTypes\"\n cdsButton=\"secondary\"\n [disabled]=\"tabType.disabled\"\n (click)=\"onTabTypeSelect(tabType.type)\"\n >\n {{ tabType.title | translate }}\n\n <svg [cdsIcon]=\"tabType.icon\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </div>\n </ng-template>\n </section>\n\n <cds-modal-footer class=\"valtimo-add-tab-modal__footer\">\n <button class=\"valtimo-add-tab-modal__cancel\" cdsButton=\"ghost\" (click)=\"onCloseModal()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <div class=\"valtimo-add-tab-modal__actions\" *ngIf=\"obs.selectedTabType\">\n <button cdsButton=\"secondary\" (click)=\"backClick()\">\n {{ 'interface.back' | translate }}\n </button>\n\n <button cdsButton=\"primary\" [disabled]=\"form.invalid\" (click)=\"addTab(obs.selectedTabType)\">\n {{ 'dossierManagement.tabManagement.addModal.addTab' | translate }}\n </button>\n </div>\n </cds-modal-footer>\n</cds-modal>\n", styles: [".valtimo-add-tab-modal__footer .cds--modal-footer{justify-content:unset;display:grid;grid-template-columns:1fr 1fr 2fr;grid-template-areas:\"cancel . actions\"}.valtimo-add-tab-modal__cancel{grid-area:cancel;width:100%}.valtimo-add-tab-modal__actions{grid-area:actions;display:flex}.valtimo-add-tab-modal__types{display:grid;grid-template:1fr/repeat(3,1fr);gap:16px}.valtimo-add-tab-modal__types button{width:100%}.valtimo-add-tab-modal__content{display:flex;flex-direction:column;gap:24px}\n"] }]
96
+ }], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.IconService }, { type: i3.TabService }]; }, propDecorators: { documentDefinitionName: [{
97
+ type: Input
98
+ }], open: [{
99
+ type: Input
100
+ }], closeModalEvent: [{
101
+ type: Output
102
+ }] } });
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1tYW5hZ2VtZW50LWFkZC10YWItbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyLW1hbmFnZW1lbnQvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItbWFuYWdlbWVudC10YWJzL2Rvc3NpZXItbWFuYWdlbWVudC1hZGQtdGFiLW1vZGFsL2Rvc3NpZXItbWFuYWdlbWVudC1hZGQtdGFiLW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci1tYW5hZ2VtZW50L3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLW1hbmFnZW1lbnQtdGFicy9kb3NzaWVyLW1hbmFnZW1lbnQtYWRkLXRhYi1tb2RhbC9kb3NzaWVyLW1hbmFnZW1lbnQtYWRkLXRhYi1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBS0wsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFDLE1BQU0sRUFBRSxhQUFhLEVBQUUsd0JBQXdCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDOUUsT0FBTyxFQUFhLFVBQVUsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBRXhELE9BQU8sRUFBQyxlQUFlLEVBQUUsR0FBRyxFQUFDLE1BQU0sTUFBTSxDQUFDOzs7Ozs7OztBQVUxQyxNQUFNLE9BQU8scUNBQXFDO0lBcUNoRCxZQUNtQixFQUFlLEVBQ2YsV0FBd0IsRUFDeEIsVUFBc0I7UUFGdEIsT0FBRSxHQUFGLEVBQUUs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QUcsS0FBSyxPQUFPLENBQUMsS0FBSyxDQUFDO1lBQzdFLENBQUMsQ0FBQyxJQUFJO1lBQ04sQ0FBQyxDQUFDLEVBQUMsU0FBUyxFQUFFLEVBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUMsRUFBQyxDQUFDO0lBQzVDLENBQUM7K0dBN0VVLHFDQUFxQzttR0FBckMscUNBQXFDLDZNQzNDbEQsMnJGQW9FQTs7NEZEekJhLHFDQUFxQztrQkFQakQsU0FBUzsrQkFDRSwwQ0FBMEMsbUJBR25DLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUk7cUpBRzVCLHNCQUFzQjtzQkFBOUIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRUksZUFBZTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDIzIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgRm9ybUJ1aWxkZXIsXG4gIFZhbGlkYXRpb25FcnJvcnMsXG4gIFZhbGlkYXRvckZuLFxuICBWYWxpZGF0b3JzLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0NvZGUxNiwgRGV2ZWxvcG1lbnQxNiwgV2F0c29uSGVhbHRoUGFnZVNjcm9sbDE2fSBmcm9tICdAY2FyYm9uL2ljb25zJztcbmltcG9ydCB7QXBpVGFiSXRlbSwgQXBpVGFiVHlwZX0gZnJvbSAnQHZhbHRpbW8vZG9zc2llcic7XG5pbXBvcnQge0ljb25TZXJ2aWNlfSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBtYXB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtUYWJTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LWFkZC10YWItbW9kYWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vZG9zc2llci1tYW5hZ2VtZW50LWFkZC10YWItbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kb3NzaWVyLW1hbmFnZW1lbnQtYWRkLXRhYi1tb2RhbC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgRG9zc2llck1hbmFnZW1lbnRBZGRUYWJNb2RhbENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGRvY3VtZW50RGVmaW5pdGlvbk5hbWU6IHN0cmluZztcbiAgQElucHV0KCkgb3BlbiA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBjbG9zZU1vZGFsRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPFBhcnRpYWw8QXBpVGFiSXRlbT4gfCBudWxsPigpO1xuXG4gIHB1YmxpYyByZWFkb25seSBBcGlUYWJUeXBlID0gQXBpVGFiVHlwZTtcbiAgcHVibGljIHJlYWRvbmx5IHRhYlR5cGVzJCA9IHRoaXMudGFiU2VydmljZS5kaXNhYmxlQWRkVGFicyQucGlwZShcbiAgICBtYXAoZGlzYWJsZWQgPT4gW1xuICAgICAge1xuICAgICAgICBpY29uOiAnZGV2ZWxvcG1lbnQnLFxuICAgICAgICB0aXRsZTogJ2Rvc3NpZXJNYW5hZ2VtZW50LnRhYk1hbmFnZW1lbnQuYWRkTW9kYWwuc3RhbmRhcmRUYWInLFxuICAgICAgICB0eXBlOiBBcGlUYWJUeXBlLlNUQU5EQVJELFxuICAgICAgICBkaXNhYmxlZDogZGlzYWJsZWQuc3RhbmRhcmQsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpY29uOiAncGFnZS1zY3JvbGwnLFxuICAgICAgICB0aXRsZTogJ2Rvc3NpZXJNYW5hZ2VtZW50LnRhYk1hbmFnZW1lbnQuYWRkTW9kYWwuZm9ybUlPQ29tcG9uZW50JyxcbiAgICAgICAgdHlwZTogQXBpVGFiVHlwZS5GT1JNSU8sXG4gICAgICAgIGRpc2FibGVkOiBkaXNhYmxlZC5mb3JtSU8sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpY29uOiAnY29kZScsXG4gICAgICAgIHRpdGxlOiAnZG9zc2llck1hbmFnZW1lbnQudGFiTWFuYWdlbWVudC5hZGRNb2RhbC5jdXN0b21Db21wb25lbnQnLFxuICAgICAgICB0eXBlOiBBcGlUYWJUeXBlLkNVU1RPTSxcbiAgICAgICAgZGlzYWJsZWQ6IGRpc2FibGVkLmN1c3RvbSxcbiAgICAgIH0sXG4gICAgXSlcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgIG5hbWU6IHRoaXMuZmIuY29udHJvbChudWxsKSxcbiAgICBrZXk6IHRoaXMuZmIuY29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIHRoaXMudW5pcXVlS2V5VmFsaWRhdG9yKCldKSxcbiAgICBjb250ZW50S2V5OiB0aGlzLmZiLmNvbnRyb2woJycsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICB9KTtcbiAgcHVibGljIHJlYWRvbmx5IHNlbGVjdGVkVGFiVHlwZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFwaVRhYlR5cGUgfCBudWxsPihudWxsKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZiOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGljb25TZXJ2aWNlOiBJY29uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRhYlNlcnZpY2U6IFRhYlNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5pY29uU2VydmljZS5yZWdpc3RlckFsbChbQ29kZTE2LCBEZXZlbG9wbWVudDE2LCBXYXRzb25IZWFsdGhQYWdlU2Nyb2xsMTZdKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUYWIodHlwZTogQXBpVGFiVHlwZSk6IHZvaWQge1xuICAgIGNvbnN0IHtjb250ZW50S2V5LCBrZXksIG5hbWV9ID0gdGhpcy5mb3JtLmdldFJhd1ZhbHVlKCk7XG5cbiAgICBpZiAoIWNvbnRlbnRLZXkgfHwgIWtleSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNsb3NlTW9kYWxFdmVudC5lbWl0KHtuYW1lLCBrZXksIGNvbnRlbnRLZXksIHR5cGV9KTtcbiAgfVxuXG4gIHB1YmxpYyBiYWNrQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5yZXNldE1vZGFsKCk7XG4gIH1cblxuICBwdWJsaWMgb25DbG9zZU1vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMuY2xvc2VNb2RhbEV2ZW50LmVtaXQobnVsbCk7XG4gICAgdGhpcy5yZXNldE1vZGFsKCk7XG4gIH1cblxuICBwdWJsaWMgb25UYWJUeXBlU2VsZWN0KHR5cGU6IEFwaVRhYlR5cGUpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkVGFiVHlwZSQubmV4dCh0eXBlKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkVGFiVHlwZSQubmV4dChudWxsKTtcbiAgICB0aGlzLmZvcm0ucmVzZXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgdW5pcXVlS2V5VmFsaWRhdG9yKCk6IFZhbGlkYXRvckZuIHtcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+XG4gICAgICB0aGlzLnRhYlNlcnZpY2UuY29uZmlndXJlZFRhYktleXMuZXZlcnkoKGtleTogc3RyaW5nKSA9PiBrZXkgIT09IGNvbnRyb2wudmFsdWUpXG4gICAgICAgID8gbnVsbFxuICAgICAgICA6IHt1bmlxdWVLZXk6IHt2YWx1ZTogY29udHJvbC52YWx1ZX19O1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyMyBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjxjZHMtbW9kYWwgKm5nSWY9XCJ7c2VsZWN0ZWRUYWJUeXBlOiBzZWxlY3RlZFRhYlR5cGUkIHwgYXN5bmN9IGFzIG9ic1wiIFtvcGVuXT1cIm9wZW5cIj5cbiAgPGNkcy1tb2RhbC1oZWFkZXIgc2hvd0Nsb3NlQnV0dG9uPVwidHJ1ZVwiIChjbG9zZVNlbGVjdCk9XCJvbkNsb3NlTW9kYWwoKVwiPlxuICAgIDxoMyBjZHNNb2RhbEhlYWRlckhlYWRpbmc+XG4gICAgICB7e1xuICAgICAgICAhb2JzLnNlbGVjdGVkVGFiVHlwZVxuICAgICAgICAgID8gKCdkb3NzaWVyTWFuYWdlbWVudC50YWJNYW5hZ2VtZW50LmFkZE1vZGFsLnRpdGxlJ1xuICAgICAgICAgICAgfCB0cmFuc2xhdGU6IHtkb2N1bWVudERlZmluaXRpb25OYW1lOiAoZG9jdW1lbnREZWZpbml0aW9uTmFtZSB8IHRpdGxlY2FzZSl9KVxuICAgICAgICAgIDogKCdkb3NzaWVyTWFuYWdlbWVudC50YWJNYW5hZ2VtZW50LnRpdGxlcy4nICsgb2JzLnNlbGVjdGVkVGFiVHlwZSB8IHRyYW5zbGF0ZSlcbiAgICAgIH19XG4gICAgPC9oMz5cbiAgPC9jZHMtbW9kYWwtaGVhZGVyPlxuXG4gIDxzZWN0aW9uIFtmb3JtR3JvdXBdPVwiZm9ybVwiIGNkc01vZGFsQ29udGVudCBjbGFzcz1cInZhbHRpbW8tYWRkLXRhYi1tb2RhbF9fY29udGVudFwiPlxuICAgIDx2YWx0aW1vLXRhYi1mb3JtXG4gICAgICAqbmdJZj1cIm9icy5zZWxlY3RlZFRhYlR5cGU7IGVsc2UgdGFiVHlwZVNlbGVjdGlvblwiXG4gICAgICBbdGFiVHlwZV09XCJvYnMuc2VsZWN0ZWRUYWJUeXBlXCJcbiAgICA+PC92YWx0aW1vLXRhYi1mb3JtPlxuXG4gICAgPG5nLXRlbXBsYXRlICN0YWJUeXBlU2VsZWN0aW9uPlxuICAgICAgPHNwYW4+IHt7ICdkb3NzaWVyTWFuYWdlbWVudC50YWJNYW5hZ2VtZW50LmFkZE1vZGFsLmRlc2NyaXB0aW9uJyB8IHRyYW5zbGF0ZSB9fSA8L3NwYW4+XG5cbiAgICAgIDxkaXYgKm5nSWY9XCJ0YWJUeXBlcyQgfCBhc3luYyBhcyB0YWJUeXBlc1wiIGNsYXNzPVwidmFsdGltby1hZGQtdGFiLW1vZGFsX190eXBlc1wiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgKm5nRm9yPVwibGV0IHRhYlR5cGUgb2YgdGFiVHlwZXNcIlxuICAgICAgICAgIGNkc0J1dHRvbj1cInNlY29uZGFyeVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cInRhYlR5cGUuZGlzYWJsZWRcIlxuICAgICAgICAgIChjbGljayk9XCJvblRhYlR5cGVTZWxlY3QodGFiVHlwZS50eXBlKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyB0YWJUeXBlLnRpdGxlIHwgdHJhbnNsYXRlIH19XG5cbiAgICAgICAgICA8c3ZnIFtjZHNJY29uXT1cInRhYlR5cGUuaWNvblwiIHNpemU9XCIxNlwiIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIj48L3N2Zz5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L3NlY3Rpb24+XG5cbiAgPGNkcy1tb2RhbC1mb290ZXIgY2xhc3M9XCJ2YWx0aW1vLWFkZC10YWItbW9kYWxfX2Zvb3RlclwiPlxuICAgIDxidXR0b24gY2xhc3M9XCJ2YWx0aW1vLWFkZC10YWItbW9kYWxfX2NhbmNlbFwiIGNkc0J1dHRvbj1cImdob3N0XCIgKGNsaWNrKT1cIm9uQ2xvc2VNb2RhbCgpXCI+XG4gICAgICB7eyAnaW50ZXJmYWNlLmNhbmNlbCcgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cblxuICAgIDxkaXYgY2xhc3M9XCJ2YWx0aW1vLWFkZC10YWItbW9kYWxfX2FjdGlvbnNcIiAqbmdJZj1cIm9icy5zZWxlY3RlZFRhYlR5cGVcIj5cbiAgICAgIDxidXR0b24gY2RzQnV0dG9uPVwic2Vjb25kYXJ5XCIgKGNsaWNrKT1cImJhY2tDbGljaygpXCI+XG4gICAgICAgIHt7ICdpbnRlcmZhY2UuYmFjaycgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8YnV0dG9uIGNkc0J1dHRvbj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkXCIgKGNsaWNrKT1cImFkZFRhYihvYnMuc2VsZWN0ZWRUYWJUeXBlKVwiPlxuICAgICAgICB7eyAnZG9zc2llck1hbmFnZW1lbnQudGFiTWFuYWdlbWVudC5hZGRNb2RhbC5hZGRUYWInIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9jZHMtbW9kYWwtZm9vdGVyPlxuPC9jZHMtbW9kYWw+XG4iXX0=
@@ -0,0 +1,71 @@
1
+ /*
2
+ * Copyright 2015-2023 Ritense BV, the Netherlands.
3
+ *
4
+ * Licensed under EUPL, Version 1.2 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" basis,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
17
+ import { Validators } from '@angular/forms';
18
+ import * as i0 from "@angular/core";
19
+ import * as i1 from "@angular/forms";
20
+ import * as i2 from "../../../services";
21
+ import * as i3 from "@angular/common";
22
+ import * as i4 from "carbon-components-angular";
23
+ import * as i5 from "../tab-form/tab-form.component";
24
+ import * as i6 from "@ngx-translate/core";
25
+ export class DossierManagementEditTabModalComponent {
26
+ set tab(value) {
27
+ if (!value) {
28
+ return;
29
+ }
30
+ if (!!this.tabService.configuredContentKeys) {
31
+ this.configuredKeysForEdit = this.tabService.configuredContentKeys.filter((tabKey) => tabKey !== value.contentKey);
32
+ }
33
+ this._tab = value;
34
+ this.form = this.fb.group({
35
+ name: this.fb.control(value.name),
36
+ key: this.fb.control({ value: value.key, disabled: true }, Validators.required),
37
+ contentKey: this.fb.control(value.contentKey, Validators.required),
38
+ });
39
+ }
40
+ get tab() {
41
+ return this._tab;
42
+ }
43
+ constructor(fb, tabService) {
44
+ this.fb = fb;
45
+ this.tabService = tabService;
46
+ this.closeModalEvent = new EventEmitter();
47
+ }
48
+ onCloseModal() {
49
+ this.closeModalEvent.emit(null);
50
+ }
51
+ editTab() {
52
+ const { contentKey, name } = this.form.getRawValue();
53
+ if (!contentKey) {
54
+ return;
55
+ }
56
+ this.closeModalEvent.emit({ ...this.tab, name, contentKey });
57
+ }
58
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DossierManagementEditTabModalComponent, deps: [{ token: i1.FormBuilder }, { token: i2.TabService }], target: i0.ɵɵFactoryTarget.Component }); }
59
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DossierManagementEditTabModalComponent, selector: "valtimo-dossier-management-edit-tab-modal", inputs: { open: "open", tab: "tab" }, outputs: { closeModalEvent: "closeModalEvent" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal *ngIf=\"form\" [open]=\"open\">\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"onCloseModal()\">\n <h3 cdsModalHeaderHeading>\n {{\n 'dossierManagement.tabManagement.editModal.title'\n | translate: {name: tab?.name ?? 'dossier.tabs.' + tab.key | translate}\n }}\n </h3>\n </cds-modal-header>\n\n <section [formGroup]=\"form\" cdsModalContent>\n <valtimo-tab-form\n [configuredContentKeys]=\"configuredKeysForEdit\"\n [tabType]=\"tab?.type\"\n ></valtimo-tab-form>\n </section>\n\n <cds-modal-footer>\n <button cdsButton=\"secondary\" (click)=\"onCloseModal()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button cdsButton=\"primary\" [disabled]=\"form.invalid\" (click)=\"editTab()\">\n {{ 'dossierManagement.tabManagement.editModal.updateTab' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "component", type: i4.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i4.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i4.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i4.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i4.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i5.TabFormComponent, selector: "valtimo-tab-form", inputs: ["tabType"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] }); }
60
+ }
61
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DossierManagementEditTabModalComponent, decorators: [{
62
+ type: Component,
63
+ args: [{ selector: 'valtimo-dossier-management-edit-tab-modal', template: "<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal *ngIf=\"form\" [open]=\"open\">\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"onCloseModal()\">\n <h3 cdsModalHeaderHeading>\n {{\n 'dossierManagement.tabManagement.editModal.title'\n | translate: {name: tab?.name ?? 'dossier.tabs.' + tab.key | translate}\n }}\n </h3>\n </cds-modal-header>\n\n <section [formGroup]=\"form\" cdsModalContent>\n <valtimo-tab-form\n [configuredContentKeys]=\"configuredKeysForEdit\"\n [tabType]=\"tab?.type\"\n ></valtimo-tab-form>\n </section>\n\n <cds-modal-footer>\n <button cdsButton=\"secondary\" (click)=\"onCloseModal()\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button cdsButton=\"primary\" [disabled]=\"form.invalid\" (click)=\"editTab()\">\n {{ 'dossierManagement.tabManagement.editModal.updateTab' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n" }]
64
+ }], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.TabService }]; }, propDecorators: { open: [{
65
+ type: Input
66
+ }], tab: [{
67
+ type: Input
68
+ }], closeModalEvent: [{
69
+ type: Output
70
+ }] } });
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1tYW5hZ2VtZW50LWVkaXQtdGFiLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci1tYW5hZ2VtZW50L3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLW1hbmFnZW1lbnQtdGFicy9kb3NzaWVyLW1hbmFnZW1lbnQtZWRpdC10YWItbW9kYWwvZG9zc2llci1tYW5hZ2VtZW50LWVkaXQtdGFiLW1vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci1tYW5hZ2VtZW50L3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLW1hbmFnZW1lbnQtdGFicy9kb3NzaWVyLW1hbmFnZW1lbnQtZWRpdC10YWItbW9kYWwvZG9zc2llci1tYW5hZ2VtZW50LWVkaXQtdGFiLW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQXlCLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7OztBQVFsRSxNQUFNLE9BQU8sc0NBQXNDO0lBSWpELElBQW9CLEdBQUcsQ0FBQyxLQUFpQjtRQUN2QyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1YsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsRUFBRTtZQUMzQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQ3ZFLENBQUMsTUFBYyxFQUFFLEVBQUUsQ0FBQyxNQUFNLEtBQUssS0FBSyxDQUFDLFVBQVUsQ0FDaEQsQ0FBQztTQUNIO1FBRUQsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7UUFDbEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUN4QixJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztZQUNqQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFDLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUM3RSxVQUFVLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO1NBQ25FLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxJQUFXLEdBQUc7UUFDWixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQU9ELFlBQ21CLEVBQWUsRUFDZixVQUFzQjtRQUR0QixPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ2YsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQVAvQixvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFxQixDQUFDO0lBUS9ELENBQUM7SUFFRyxZQUFZO1FBQ2pCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFTSxPQUFPO1FBQ1osTUFBTSxFQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRW5ELElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDZixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDOytHQWhEVSxzQ0FBc0M7bUdBQXRDLHNDQUFzQyx3S0N4Qm5ELDRpREEyQ0E7OzRGRG5CYSxzQ0FBc0M7a0JBSmxELFNBQVM7K0JBQ0UsMkNBQTJDOzJIQUk1QyxJQUFJO3NCQUFaLEtBQUs7Z0JBR2MsR0FBRztzQkFBdEIsS0FBSztnQkFzQkksZUFBZTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDIzIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Rm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtBcGlUYWJJdGVtfSBmcm9tICdAdmFsdGltby9kb3NzaWVyJztcbmltcG9ydCB7VGFiU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLWRvc3NpZXItbWFuYWdlbWVudC1lZGl0LXRhYi1tb2RhbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9kb3NzaWVyLW1hbmFnZW1lbnQtZWRpdC10YWItbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBEb3NzaWVyTWFuYWdlbWVudEVkaXRUYWJNb2RhbENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIG9wZW46IGJvb2xlYW47XG5cbiAgcHJpdmF0ZSBfdGFiOiBBcGlUYWJJdGVtO1xuICBASW5wdXQoKSBwdWJsaWMgc2V0IHRhYih2YWx1ZTogQXBpVGFiSXRlbSkge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoISF0aGlzLnRhYlNlcnZpY2UuY29uZmlndXJlZENvbnRlbnRLZXlzKSB7IFxuICAgICAgdGhpcy5jb25maWd1cmVkS2V5c0ZvckVkaXQgPSB0aGlzLnRhYlNlcnZpY2UuY29uZmlndXJlZENvbnRlbnRLZXlzLmZpbHRlcihcbiAgICAgICAgKHRhYktleTogc3RyaW5nKSA9PiB0YWJLZXkgIT09IHZhbHVlLmNvbnRlbnRLZXlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5fdGFiID0gdmFsdWU7XG4gICAgdGhpcy5mb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBuYW1lOiB0aGlzLmZiLmNvbnRyb2wodmFsdWUubmFtZSksXG4gICAgICBrZXk6IHRoaXMuZmIuY29udHJvbCh7dmFsdWU6IHZhbHVlLmtleSwgZGlzYWJsZWQ6IHRydWV9LCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgIGNvbnRlbnRLZXk6IHRoaXMuZmIuY29udHJvbCh2YWx1ZS5jb250ZW50S2V5LCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICB9KTtcbiAgfVxuICBwdWJsaWMgZ2V0IHRhYigpOiBBcGlUYWJJdGVtIHtcbiAgICByZXR1cm4gdGhpcy5fdGFiO1xuICB9XG5cbiAgQE91dHB1dCgpIGNsb3NlTW9kYWxFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8QXBpVGFiSXRlbSB8IG51bGw+KCk7XG5cbiAgcHVibGljIGZvcm06IEZvcm1Hcm91cDtcbiAgcHVibGljIGNvbmZpZ3VyZWRLZXlzRm9yRWRpdDogc3RyaW5nW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0YWJTZXJ2aWNlOiBUYWJTZXJ2aWNlXG4gICkge31cblxuICBwdWJsaWMgb25DbG9zZU1vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMuY2xvc2VNb2RhbEV2ZW50LmVtaXQobnVsbCk7XG4gIH1cblxuICBwdWJsaWMgZWRpdFRhYigpOiB2b2lkIHtcbiAgICBjb25zdCB7Y29udGVudEtleSwgbmFtZX0gPSB0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKTtcblxuICAgIGlmICghY29udGVudEtleSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuY2xvc2VNb2RhbEV2ZW50LmVtaXQoey4uLnRoaXMudGFiLCBuYW1lLCBjb250ZW50S2V5fSk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDIzIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPGNkcy1tb2RhbCAqbmdJZj1cImZvcm1cIiBbb3Blbl09XCJvcGVuXCI+XG4gIDxjZHMtbW9kYWwtaGVhZGVyIHNob3dDbG9zZUJ1dHRvbj1cInRydWVcIiAoY2xvc2VTZWxlY3QpPVwib25DbG9zZU1vZGFsKClcIj5cbiAgICA8aDMgY2RzTW9kYWxIZWFkZXJIZWFkaW5nPlxuICAgICAge3tcbiAgICAgICAgJ2Rvc3NpZXJNYW5hZ2VtZW50LnRhYk1hbmFnZW1lbnQuZWRpdE1vZGFsLnRpdGxlJ1xuICAgICAgICAgIHwgdHJhbnNsYXRlOiB7bmFtZTogdGFiPy5uYW1lID8/ICdkb3NzaWVyLnRhYnMuJyArIHRhYi5rZXkgfCB0cmFuc2xhdGV9XG4gICAgICB9fVxuICAgIDwvaDM+XG4gIDwvY2RzLW1vZGFsLWhlYWRlcj5cblxuICA8c2VjdGlvbiBbZm9ybUdyb3VwXT1cImZvcm1cIiBjZHNNb2RhbENvbnRlbnQ+XG4gICAgPHZhbHRpbW8tdGFiLWZvcm1cbiAgICAgIFtjb25maWd1cmVkQ29udGVudEtleXNdPVwiY29uZmlndXJlZEtleXNGb3JFZGl0XCJcbiAgICAgIFt0YWJUeXBlXT1cInRhYj8udHlwZVwiXG4gICAgPjwvdmFsdGltby10YWItZm9ybT5cbiAgPC9zZWN0aW9uPlxuXG4gIDxjZHMtbW9kYWwtZm9vdGVyPlxuICAgIDxidXR0b24gY2RzQnV0dG9uPVwic2Vjb25kYXJ5XCIgKGNsaWNrKT1cIm9uQ2xvc2VNb2RhbCgpXCI+XG4gICAgICB7eyAnaW50ZXJmYWNlLmNhbmNlbCcgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b24gY2RzQnV0dG9uPVwicHJpbWFyeVwiIFtkaXNhYmxlZF09XCJmb3JtLmludmFsaWRcIiAoY2xpY2spPVwiZWRpdFRhYigpXCI+XG4gICAgICB7eyAnZG9zc2llck1hbmFnZW1lbnQudGFiTWFuYWdlbWVudC5lZGl0TW9kYWwudXBkYXRlVGFiJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Nkcy1tb2RhbC1mb290ZXI+XG48L2Nkcy1tb2RhbD5cbiJdfQ==
@@ -0,0 +1,179 @@
1
+ /*
2
+ * Copyright 2015-2023 Ritense BV, the Netherlands.
3
+ *
4
+ * Licensed under EUPL, Version 1.2 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" basis,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { ChangeDetectionStrategy, Component, Input, ViewChild, ViewEncapsulation, } from '@angular/core';
17
+ import { ArrowDown16, ArrowUp16 } from '@carbon/icons';
18
+ import { ViewType } from '@valtimo/components';
19
+ import { BehaviorSubject, map, tap } from 'rxjs';
20
+ import * as i0 from "@angular/core";
21
+ import * as i1 from "carbon-components-angular";
22
+ import * as i2 from "../../services";
23
+ import * as i3 from "@ngx-translate/core";
24
+ import * as i4 from "@angular/common";
25
+ import * as i5 from "@valtimo/components";
26
+ import * as i6 from "./dossier-management-add-tab-modal/dossier-management-add-tab-modal.component";
27
+ import * as i7 from "./dossier-management-edit-tab-modal/dossier-management-edit-tab-modal.component";
28
+ export class DossierManagementTabsComponent {
29
+ set documentDefinitionName(value) {
30
+ if (!value) {
31
+ return;
32
+ }
33
+ this._documentDefinitionName = value;
34
+ this.tabManagementService.setCaseDefinitionId(value);
35
+ this.tabManagementService.loadTabs();
36
+ }
37
+ get documentDefinitionName() {
38
+ return this._documentDefinitionName;
39
+ }
40
+ constructor(cd, iconService, tabManagementService, tabService, translateService) {
41
+ this.cd = cd;
42
+ this.iconService = iconService;
43
+ this.tabManagementService = tabManagementService;
44
+ this.tabService = tabService;
45
+ this.translateService = translateService;
46
+ this.deleteRowKey$ = new BehaviorSubject(null);
47
+ this.showDeleteModal$ = this.deleteRowKey$.pipe(map((key) => !!key));
48
+ this.openEditModal$ = new BehaviorSubject(false);
49
+ this.fields$ = new BehaviorSubject([]);
50
+ this.loading$ = this.tabManagementService.loading$;
51
+ this.openAddModal$ = new BehaviorSubject(false);
52
+ this.lastItemIndex$ = new BehaviorSubject(-1);
53
+ this.tabs$ = this.tabManagementService.tabs$.pipe(tap((tabs) => {
54
+ this._tabs = tabs;
55
+ this.tabService.configuredContentKeys = tabs.map((tab) => tab.contentKey);
56
+ this.tabService.configuredTabKeys = tabs.map((tab) => tab.key);
57
+ this.lastItemIndex$.next(tabs.length - 1);
58
+ }));
59
+ this.tab$ = new BehaviorSubject(null);
60
+ }
61
+ ngAfterViewInit() {
62
+ this.iconService.registerAll([ArrowDown16, ArrowUp16]);
63
+ this.fields$.next([
64
+ {
65
+ key: 'name',
66
+ label: 'dossierManagement.tabManagement.columns.name',
67
+ viewType: ViewType.TEXT,
68
+ },
69
+ {
70
+ key: 'key',
71
+ label: 'dossierManagement.tabManagement.columns.key',
72
+ viewType: ViewType.TEXT,
73
+ },
74
+ {
75
+ viewType: ViewType.TEMPLATE,
76
+ template: this.tabTypeColumnTemplate,
77
+ key: '',
78
+ label: 'dossierManagement.tabManagement.columns.type',
79
+ },
80
+ {
81
+ viewType: ViewType.TEMPLATE,
82
+ template: this.tabContentColumnTemplate,
83
+ key: '',
84
+ label: 'dossierManagement.tabManagement.columns.content',
85
+ },
86
+ {
87
+ className: 'valtimo-dossier-management-tabs__actions',
88
+ key: '',
89
+ label: '',
90
+ template: this.moveButtonsTemplate,
91
+ viewType: ViewType.TEMPLATE,
92
+ },
93
+ {
94
+ actions: [
95
+ {
96
+ label: 'interface.delete',
97
+ callback: this.openDeleteConfirmationModal.bind(this),
98
+ type: 'danger',
99
+ },
100
+ ],
101
+ className: 'valtimo-dossier-management-tabs__actions',
102
+ key: '',
103
+ label: '',
104
+ viewType: ViewType.ACTION,
105
+ },
106
+ ]);
107
+ this.cd.detectChanges();
108
+ }
109
+ isTranslated(key) {
110
+ return this.translateService.instant(key) !== key;
111
+ }
112
+ onArrowClick(direction, index, event) {
113
+ event.stopImmediatePropagation();
114
+ const orderedTabs = direction === 'UP'
115
+ ? this.swapTabs(this._tabs, index - 1, index)
116
+ : this.swapTabs(this._tabs, index, index + 1);
117
+ this.tabManagementService.dispatchAction(this.tabManagementService.editTabsOrder(orderedTabs));
118
+ }
119
+ openAddTabModal() {
120
+ this.openAddModal$.next(true);
121
+ }
122
+ onRowClicked(tab) {
123
+ this.tab$.next(tab);
124
+ this.openEditModal$.next(true);
125
+ }
126
+ onCloseAddModalEvent(tab) {
127
+ this.openAddModal$.next(false);
128
+ if (!tab) {
129
+ return;
130
+ }
131
+ this.addTab(tab);
132
+ }
133
+ onCloseEditModalEvent(tab) {
134
+ this.openEditModal$.next(false);
135
+ this.tab$.next(null);
136
+ if (!tab) {
137
+ return;
138
+ }
139
+ this.editTab(tab);
140
+ }
141
+ openDeleteConfirmationModal(tab) {
142
+ this.deleteRowKey$.next(tab.key);
143
+ }
144
+ onConfirmEvent(tabKey) {
145
+ this.deleteTab(tabKey);
146
+ }
147
+ addTab(tab) {
148
+ this.tabManagementService.dispatchAction(this.tabManagementService.addTab(tab));
149
+ }
150
+ deleteTab(tabKey) {
151
+ this.tabManagementService.dispatchAction(this.tabManagementService.deleteTab(tabKey));
152
+ }
153
+ editTab(tab) {
154
+ this.tabManagementService.dispatchAction(this.tabManagementService.editTab(tab, tab.key));
155
+ }
156
+ swapTabs(tabItems, index1, index2) {
157
+ const temp = [...tabItems];
158
+ temp[index1] = temp.splice(index2, 1, temp[index1])[0];
159
+ return temp;
160
+ }
161
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DossierManagementTabsComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.IconService }, { token: i2.TabManagementService }, { token: i2.TabService }, { token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
162
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DossierManagementTabsComponent, selector: "valtimo-dossier-management-tabs", inputs: { documentDefinitionName: "documentDefinitionName" }, viewQueries: [{ propertyName: "tabContentColumnTemplate", first: true, predicate: ["tabContentColumn"], descendants: true }, { propertyName: "tabTypeColumnTemplate", first: true, predicate: ["tabTypeColumn"], descendants: true }, { propertyName: "moveButtonsTemplate", first: true, predicate: ["moveButtonsTemplate"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-carbon-list\n *ngIf=\"{fields: fields$ | async, loading: loading$ | async, tabs: tabs$ | async} as obs\"\n [items]=\"obs.tabs\"\n [fields]=\"obs.fields\"\n header=\"false\"\n [loading]=\"obs.loading\"\n (rowClicked)=\"onRowClicked($event)\"\n>\n <ng-container carbonToolbarContent>\n <ng-container [ngTemplateOutlet]=\"addTabButton\"></ng-container>\n </ng-container>\n\n <valtimo-no-results\n [action]=\"addTabButton\"\n [description]=\"'dossier.tabs.noResultsDescription' | translate\"\n [title]=\"'dossier.tabs.noResults' | translate\"\n ></valtimo-no-results>\n</valtimo-carbon-list>\n\n<ng-template #tabTypeColumn let-data=\"data\">\n {{\n isTranslated('dossierManagement.tabType.' + data.item.type)\n ? ('dossierManagement.tabType.' + data.item.type | translate)\n : data.item.type\n }}\n</ng-template>\n\n<ng-template #tabContentColumn let-data=\"data\">\n {{\n isTranslated('dossier.tabs.' + data.item.contentKey)\n ? ('dossier.tabs.' + data.item.contentKey | translate)\n : data.item.contentKey\n }}\n</ng-template>\n\n<ng-template #addTabButton>\n <button cdsButton=\"primary\" (click)=\"openAddTabModal()\">\n {{ 'dossierManagement.tabManagement.addModal.addTab' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n</ng-template>\n\n<ng-template #moveButtonsTemplate let-data=\"data\">\n <div class=\"move-buttons-container\">\n <button\n cdsButton=\"tertiary\"\n [disabled]=\"data.index === 0\"\n [iconOnly]=\"true\"\n (click)=\"onArrowClick('UP', data.index, $event)\"\n >\n <svg cdsIcon=\"arrow--up\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n\n <button\n cdsButton=\"tertiary\"\n [disabled]=\"(lastItemIndex$ | async) === data.index\"\n [iconOnly]=\"true\"\n (click)=\"onArrowClick('DOWN', data.index, $event)\"\n >\n <svg cdsIcon=\"arrow--down\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </div>\n</ng-template>\n\n<valtimo-dossier-management-add-tab-modal\n *ngIf=\"openAddModal$ | async\"\n [documentDefinitionName]=\"documentDefinitionName\"\n [open]=\"openAddModal$ | async\"\n (closeModalEvent)=\"onCloseAddModalEvent($event)\"\n></valtimo-dossier-management-add-tab-modal>\n\n<valtimo-dossier-management-edit-tab-modal\n *ngIf=\"openEditModal$ | async\"\n [tab]=\"tab$ | async\"\n (closeModalEvent)=\"onCloseEditModalEvent($event)\"\n [open]=\"openEditModal$ | async\"\n></valtimo-dossier-management-edit-tab-modal>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"dossierManagement.tabManagement.deleteModal.description\"\n [outputOnConfirm]=\"deleteRowKey$ | async\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"dossierManagement.tabManagement.deleteModal.title\"\n (confirmEvent)=\"onConfirmEvent($event)\"\n></valtimo-confirmation-modal>\n", styles: [".valtimo-dossier-management-tabs__actions{width:1px}.valtimo-dossier-management-tabs__actions .move-buttons-container{display:flex;gap:8px}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i1.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: i5.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm"], outputs: ["confirmEvent", "cancelEvent"] }, { kind: "component", type: i5.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "actions", "header", "initialSortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged"] }, { kind: "component", type: i5.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title"] }, { kind: "component", type: i6.DossierManagementAddTabModalComponent, selector: "valtimo-dossier-management-add-tab-modal", inputs: ["documentDefinitionName", "open"], outputs: ["closeModalEvent"] }, { kind: "component", type: i7.DossierManagementEditTabModalComponent, selector: "valtimo-dossier-management-edit-tab-modal", inputs: ["open", "tab"], outputs: ["closeModalEvent"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
163
+ }
164
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DossierManagementTabsComponent, decorators: [{
165
+ type: Component,
166
+ args: [{ selector: 'valtimo-dossier-management-tabs', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<valtimo-carbon-list\n *ngIf=\"{fields: fields$ | async, loading: loading$ | async, tabs: tabs$ | async} as obs\"\n [items]=\"obs.tabs\"\n [fields]=\"obs.fields\"\n header=\"false\"\n [loading]=\"obs.loading\"\n (rowClicked)=\"onRowClicked($event)\"\n>\n <ng-container carbonToolbarContent>\n <ng-container [ngTemplateOutlet]=\"addTabButton\"></ng-container>\n </ng-container>\n\n <valtimo-no-results\n [action]=\"addTabButton\"\n [description]=\"'dossier.tabs.noResultsDescription' | translate\"\n [title]=\"'dossier.tabs.noResults' | translate\"\n ></valtimo-no-results>\n</valtimo-carbon-list>\n\n<ng-template #tabTypeColumn let-data=\"data\">\n {{\n isTranslated('dossierManagement.tabType.' + data.item.type)\n ? ('dossierManagement.tabType.' + data.item.type | translate)\n : data.item.type\n }}\n</ng-template>\n\n<ng-template #tabContentColumn let-data=\"data\">\n {{\n isTranslated('dossier.tabs.' + data.item.contentKey)\n ? ('dossier.tabs.' + data.item.contentKey | translate)\n : data.item.contentKey\n }}\n</ng-template>\n\n<ng-template #addTabButton>\n <button cdsButton=\"primary\" (click)=\"openAddTabModal()\">\n {{ 'dossierManagement.tabManagement.addModal.addTab' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n</ng-template>\n\n<ng-template #moveButtonsTemplate let-data=\"data\">\n <div class=\"move-buttons-container\">\n <button\n cdsButton=\"tertiary\"\n [disabled]=\"data.index === 0\"\n [iconOnly]=\"true\"\n (click)=\"onArrowClick('UP', data.index, $event)\"\n >\n <svg cdsIcon=\"arrow--up\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n\n <button\n cdsButton=\"tertiary\"\n [disabled]=\"(lastItemIndex$ | async) === data.index\"\n [iconOnly]=\"true\"\n (click)=\"onArrowClick('DOWN', data.index, $event)\"\n >\n <svg cdsIcon=\"arrow--down\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </div>\n</ng-template>\n\n<valtimo-dossier-management-add-tab-modal\n *ngIf=\"openAddModal$ | async\"\n [documentDefinitionName]=\"documentDefinitionName\"\n [open]=\"openAddModal$ | async\"\n (closeModalEvent)=\"onCloseAddModalEvent($event)\"\n></valtimo-dossier-management-add-tab-modal>\n\n<valtimo-dossier-management-edit-tab-modal\n *ngIf=\"openEditModal$ | async\"\n [tab]=\"tab$ | async\"\n (closeModalEvent)=\"onCloseEditModalEvent($event)\"\n [open]=\"openEditModal$ | async\"\n></valtimo-dossier-management-edit-tab-modal>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"dossierManagement.tabManagement.deleteModal.description\"\n [outputOnConfirm]=\"deleteRowKey$ | async\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"dossierManagement.tabManagement.deleteModal.title\"\n (confirmEvent)=\"onConfirmEvent($event)\"\n></valtimo-confirmation-modal>\n", styles: [".valtimo-dossier-management-tabs__actions{width:1px}.valtimo-dossier-management-tabs__actions .move-buttons-container{display:flex;gap:8px}\n"] }]
167
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.IconService }, { type: i2.TabManagementService }, { type: i2.TabService }, { type: i3.TranslateService }]; }, propDecorators: { tabContentColumnTemplate: [{
168
+ type: ViewChild,
169
+ args: ['tabContentColumn']
170
+ }], tabTypeColumnTemplate: [{
171
+ type: ViewChild,
172
+ args: ['tabTypeColumn']
173
+ }], moveButtonsTemplate: [{
174
+ type: ViewChild,
175
+ args: ['moveButtonsTemplate']
176
+ }], documentDefinitionName: [{
177
+ type: Input
178
+ }] } });
179
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1tYW5hZ2VtZW50LXRhYnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyLW1hbmFnZW1lbnQvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItbWFuYWdlbWVudC10YWJzL2Rvc3NpZXItbWFuYWdlbWVudC10YWJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci1tYW5hZ2VtZW50L3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLW1hbmFnZW1lbnQtdGFicy9kb3NzaWVyLW1hbmFnZW1lbnQtdGFicy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE9BQU8sRUFFTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULEtBQUssRUFFTCxTQUFTLEVBQ1QsaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxXQUFXLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXJELE9BQU8sRUFBZSxRQUFRLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUczRCxPQUFPLEVBQUMsZUFBZSxFQUFFLEdBQUcsRUFBYyxHQUFHLEVBQUMsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7OztBQVUzRCxNQUFNLE9BQU8sOEJBQThCO0lBTXpDLElBQW9CLHNCQUFzQixDQUFDLEtBQWE7UUFDdEQsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNWLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyx1QkFBdUIsR0FBRyxLQUFLLENBQUM7UUFDckMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN2QyxDQUFD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b0IsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBRU8sT0FBTyxDQUFDLEdBQWU7UUFDN0IsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM1RixDQUFDO0lBRU8sUUFBUSxDQUFDLFFBQXNCLEVBQUUsTUFBYyxFQUFFLE1BQWM7UUFDckUsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFdkQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOytHQXRLVSw4QkFBOEI7bUdBQTlCLDhCQUE4Qix5ZEN4QzNDLG9sSEF3R0E7OzRGRGhFYSw4QkFBOEI7a0JBUDFDLFNBQVM7K0JBQ0UsaUNBQWlDLG1CQUcxQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJOzZOQUdOLHdCQUF3QjtzQkFBdEQsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBQ0QscUJBQXFCO3NCQUFoRCxTQUFTO3VCQUFDLGVBQWU7Z0JBQ1EsbUJBQW1CO3NCQUFwRCxTQUFTO3VCQUFDLHFCQUFxQjtnQkFHWixzQkFBc0I7c0JBQXpDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMyBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Fycm93RG93bjE2LCBBcnJvd1VwMTZ9IGZyb20gJ0BjYXJib24vaWNvbnMnO1xuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7Q29sdW1uQ29uZmlnLCBWaWV3VHlwZX0gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge0FwaVRhYkl0ZW19IGZyb20gJ0B2YWx0aW1vL2Rvc3NpZXInO1xuaW1wb3J0IHtJY29uU2VydmljZX0gZnJvbSAnY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhcic7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgbWFwLCBPYnNlcnZhYmxlLCB0YXB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtUYWJNYW5hZ2VtZW50U2VydmljZSwgVGFiU2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLWRvc3NpZXItbWFuYWdlbWVudC10YWJzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Rvc3NpZXItbWFuYWdlbWVudC10YWJzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZG9zc2llci1tYW5hZ2VtZW50LXRhYnMuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIERvc3NpZXJNYW5hZ2VtZW50VGFic0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBAVmlld0NoaWxkKCd0YWJDb250ZW50Q29sdW1uJykgdGFiQ29udGVudENvbHVtblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAVmlld0NoaWxkKCd0YWJUeXBlQ29sdW1uJykgdGFiVHlwZUNvbHVtblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAVmlld0NoaWxkKCdtb3ZlQnV0dG9uc1RlbXBsYXRlJykgbW92ZUJ1dHRvbnNUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICBwcml2YXRlIF9kb2N1bWVudERlZmluaXRpb25OYW1lOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgZG9jdW1lbnREZWZpbml0aW9uTmFtZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9kb2N1bWVudERlZmluaXRpb25OYW1lID0gdmFsdWU7XG4gICAgdGhpcy50YWJNYW5hZ2VtZW50U2VydmljZS5zZXRDYXNlRGVmaW5pdGlvbklkKHZhbHVlKTtcbiAgICB0aGlzLnRhYk1hbmFnZW1lbnRTZXJ2aWNlLmxvYWRUYWJzKCk7XG4gIH1cbiAgcHVibGljIGdldCBkb2N1bWVudERlZmluaXRpb25OYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2RvY3VtZW50RGVmaW5pdGlvbk5hbWU7XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgZGVsZXRlUm93S2V5JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gIHB1YmxpYyByZWFkb25seSBzaG93RGVsZXRlTW9kYWwkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5kZWxldGVSb3dLZXkkLnBpcGUoXG4gICAgbWFwKChrZXk6IHN0cmluZyB8IG51bGwpID0+ICEha2V5KVxuICApO1xuICBwdWJsaWMgcmVhZG9ubHkgb3BlbkVkaXRNb2RhbCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IGZpZWxkcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENvbHVtbkNvbmZpZ1tdPihbXSk7XG4gIHB1YmxpYyByZWFkb25seSBsb2FkaW5nJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMudGFiTWFuYWdlbWVudFNlcnZpY2UubG9hZGluZyQ7XG4gIHB1YmxpYyByZWFkb25seSBvcGVuQWRkTW9kYWwkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBsYXN0SXRlbUluZGV4JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigtMSk7XG5cbiAgcHJpdmF0ZSBfdGFiczogQXBpVGFiSXRlbVtdO1xuICBwdWJsaWMgcmVhZG9ubHkgdGFicyQgPSB0aGlzLnRhYk1hbmFnZW1lbnRTZXJ2aWNlLnRhYnMkLnBpcGUoXG4gICAgdGFwKCh0YWJzOiBBcGlUYWJJdGVtW10pID0+IHtcbiAgICAgIHRoaXMuX3RhYnMgPSB0YWJzO1xuICAgICAgdGhpcy50YWJTZXJ2aWNlLmNvbmZpZ3VyZWRDb250ZW50S2V5cyA9IHRhYnMubWFwKCh0YWI6IEFwaVRhYkl0ZW0pID0+IHRhYi5jb250ZW50S2V5KTtcbiAgICAgIHRoaXMudGFiU2VydmljZS5jb25maWd1cmVkVGFiS2V5cyA9IHRhYnMubWFwKCh0YWI6IEFwaVRhYkl0ZW0pID0+IHRhYi5rZXkpO1xuICAgICAgdGhpcy5sYXN0SXRlbUluZGV4JC5uZXh0KHRhYnMubGVuZ3RoIC0gMSk7XG4gICAgfSlcbiAgKTtcbiAgcHVibGljIHJlYWRvbmx5IHRhYiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFwaVRhYkl0ZW0gfCBudWxsPihudWxsKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGljb25TZXJ2aWNlOiBJY29uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRhYk1hbmFnZW1lbnRTZXJ2aWNlOiBUYWJNYW5hZ2VtZW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRhYlNlcnZpY2U6IFRhYlNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkge31cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaWNvblNlcnZpY2UucmVnaXN0ZXJBbGwoW0Fycm93RG93bjE2LCBBcnJvd1VwMTZdKTtcbiAgICB0aGlzLmZpZWxkcyQubmV4dChbXG4gICAgICB7XG4gICAgICAgIGtleTogJ25hbWUnLFxuICAgICAgICBsYWJlbDogJ2Rvc3NpZXJNYW5hZ2VtZW50LnRhYk1hbmFnZW1lbnQuY29sdW1ucy5uYW1lJyxcbiAgICAgICAgdmlld1R5cGU6IFZpZXdUeXBlLlRFWFQsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6ICdrZXknLFxuICAgICAgICBsYWJlbDogJ2Rvc3NpZXJNYW5hZ2VtZW50LnRhYk1hbmFnZW1lbnQuY29sdW1ucy5rZXknLFxuICAgICAgICB2aWV3VHlwZTogVmlld1R5cGUuVEVYVCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHZpZXdUeXBlOiBWaWV3VHlwZS5URU1QTEFURSxcbiAgICAgICAgdGVtcGxhdGU6IHRoaXMudGFiVHlwZUNvbHVtblRlbXBsYXRlLFxuICAgICAgICBrZXk6ICcnLFxuICAgICAgICBsYWJlbDogJ2Rvc3NpZXJNYW5hZ2VtZW50LnRhYk1hbmFnZW1lbnQuY29sdW1ucy50eXBlJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHZpZXdUeXBlOiBWaWV3VHlwZS5URU1QTEFURSxcbiAgICAgICAgdGVtcGxhdGU6IHRoaXMudGFiQ29udGVudENvbHVtblRlbXBsYXRlLFxuICAgICAgICBrZXk6ICcnLFxuICAgICAgICBsYWJlbDogJ2Rvc3NpZXJNYW5hZ2VtZW50LnRhYk1hbmFnZW1lbnQuY29sdW1ucy5jb250ZW50JyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNsYXNzTmFtZTogJ3ZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LXRhYnNfX2FjdGlvbnMnLFxuICAgICAgICBrZXk6ICcnLFxuICAgICAgICBsYWJlbDogJycsXG4gICAgICAgIHRlbXBsYXRlOiB0aGlzLm1vdmVCdXR0b25zVGVtcGxhdGUsXG4gICAgICAgIHZpZXdUeXBlOiBWaWV3VHlwZS5URU1QTEFURSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ2ludGVyZmFjZS5kZWxldGUnLFxuICAgICAgICAgICAgY2FsbGJhY2s6IHRoaXMub3BlbkRlbGV0ZUNvbmZpcm1hdGlvbk1vZGFsLmJpbmQodGhpcyksXG4gICAgICAgICAgICB0eXBlOiAnZGFuZ2VyJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBjbGFzc05hbWU6ICd2YWx0aW1vLWRvc3NpZXItbWFuYWdlbWVudC10YWJzX19hY3Rpb25zJyxcbiAgICAgICAga2V5OiAnJyxcbiAgICAgICAgbGFiZWw6ICcnLFxuICAgICAgICB2aWV3VHlwZTogVmlld1R5cGUuQUNUSU9OLFxuICAgICAgfSxcbiAgICBdKTtcblxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHVibGljIGlzVHJhbnNsYXRlZChrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChrZXkpICE9PSBrZXk7XG4gIH1cblxuICBwdWJsaWMgb25BcnJvd0NsaWNrKGRpcmVjdGlvbjogJ1VQJyB8ICdET1dOJywgaW5kZXg6IG51bWJlciwgZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgY29uc3Qgb3JkZXJlZFRhYnM6IEFwaVRhYkl0ZW1bXSA9XG4gICAgICBkaXJlY3Rpb24gPT09ICdVUCdcbiAgICAgICAgPyB0aGlzLnN3YXBUYWJzKHRoaXMuX3RhYnMsIGluZGV4IC0gMSwgaW5kZXgpXG4gICAgICAgIDogdGhpcy5zd2FwVGFicyh0aGlzLl90YWJzLCBpbmRleCwgaW5kZXggKyAxKTtcblxuICAgIHRoaXMudGFiTWFuYWdlbWVudFNlcnZpY2UuZGlzcGF0Y2hBY3Rpb24odGhpcy50YWJNYW5hZ2VtZW50U2VydmljZS5lZGl0VGFic09yZGVyKG9yZGVyZWRUYWJzKSk7XG4gIH1cblxuICBwdWJsaWMgb3BlbkFkZFRhYk1vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMub3BlbkFkZE1vZGFsJC5uZXh0KHRydWUpO1xuICB9XG5cbiAgcHVibGljIG9uUm93Q2xpY2tlZCh0YWI6IEFwaVRhYkl0ZW0pOiB2b2lkIHtcbiAgICB0aGlzLnRhYiQubmV4dCh0YWIpO1xuICAgIHRoaXMub3BlbkVkaXRNb2RhbCQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNsb3NlQWRkTW9kYWxFdmVudCh0YWI6IEFwaVRhYkl0ZW0gfCBudWxsKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuQWRkTW9kYWwkLm5leHQoZmFsc2UpO1xuXG4gICAgaWYgKCF0YWIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmFkZFRhYih0YWIpO1xuICB9XG5cbiAgcHVibGljIG9uQ2xvc2VFZGl0TW9kYWxFdmVudCh0YWI6IEFwaVRhYkl0ZW0gfCBudWxsKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuRWRpdE1vZGFsJC5uZXh0KGZhbHNlKTtcbiAgICB0aGlzLnRhYiQubmV4dChudWxsKTtcblxuICAgIGlmICghdGFiKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5lZGl0VGFiKHRhYik7XG4gIH1cblxuICBwdWJsaWMgb3BlbkRlbGV0ZUNvbmZpcm1hdGlvbk1vZGFsKHRhYjogQXBpVGFiSXRlbSk6IHZvaWQge1xuICAgIHRoaXMuZGVsZXRlUm93S2V5JC5uZXh0KHRhYi5rZXkpO1xuICB9XG5cbiAgcHVibGljIG9uQ29uZmlybUV2ZW50KHRhYktleTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5kZWxldGVUYWIodGFiS2V5KTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkVGFiKHRhYjogUGFydGlhbDxBcGlUYWJJdGVtPik6IHZvaWQge1xuICAgIHRoaXMudGFiTWFuYWdlbWVudFNlcnZpY2UuZGlzcGF0Y2hBY3Rpb24odGhpcy50YWJNYW5hZ2VtZW50U2VydmljZS5hZGRUYWIodGFiKSk7XG4gIH1cblxuICBwcml2YXRlIGRlbGV0ZVRhYih0YWJLZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMudGFiTWFuYWdlbWVudFNlcnZpY2UuZGlzcGF0Y2hBY3Rpb24odGhpcy50YWJNYW5hZ2VtZW50U2VydmljZS5kZWxldGVUYWIodGFiS2V5KSk7XG4gIH1cblxuICBwcml2YXRlIGVkaXRUYWIodGFiOiBBcGlUYWJJdGVtKTogdm9pZCB7XG4gICAgdGhpcy50YWJNYW5hZ2VtZW50U2VydmljZS5kaXNwYXRjaEFjdGlvbih0aGlzLnRhYk1hbmFnZW1lbnRTZXJ2aWNlLmVkaXRUYWIodGFiLCB0YWIua2V5KSk7XG4gIH1cblxuICBwcml2YXRlIHN3YXBUYWJzKHRhYkl0ZW1zOiBBcGlUYWJJdGVtW10sIGluZGV4MTogbnVtYmVyLCBpbmRleDI6IG51bWJlcik6IEFwaVRhYkl0ZW1bXSB7XG4gICAgY29uc3QgdGVtcCA9IFsuLi50YWJJdGVtc107XG4gICAgdGVtcFtpbmRleDFdID0gdGVtcC5zcGxpY2UoaW5kZXgyLCAxLCB0ZW1wW2luZGV4MV0pWzBdO1xuXG4gICAgcmV0dXJuIHRlbXA7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDIzIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPHZhbHRpbW8tY2FyYm9uLWxpc3RcbiAgKm5nSWY9XCJ7ZmllbGRzOiBmaWVsZHMkIHwgYXN5bmMsIGxvYWRpbmc6IGxvYWRpbmckIHwgYXN5bmMsIHRhYnM6IHRhYnMkIHwgYXN5bmN9IGFzIG9ic1wiXG4gIFtpdGVtc109XCJvYnMudGFic1wiXG4gIFtmaWVsZHNdPVwib2JzLmZpZWxkc1wiXG4gIGhlYWRlcj1cImZhbHNlXCJcbiAgW2xvYWRpbmddPVwib2JzLmxvYWRpbmdcIlxuICAocm93Q2xpY2tlZCk9XCJvblJvd0NsaWNrZWQoJGV2ZW50KVwiXG4+XG4gIDxuZy1jb250YWluZXIgY2FyYm9uVG9vbGJhckNvbnRlbnQ+XG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJhZGRUYWJCdXR0b25cIj48L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPHZhbHRpbW8tbm8tcmVzdWx0c1xuICAgIFthY3Rpb25dPVwiYWRkVGFiQnV0dG9uXCJcbiAgICBbZGVzY3JpcHRpb25dPVwiJ2Rvc3NpZXIudGFicy5ub1Jlc3VsdHNEZXNjcmlwdGlvbicgfCB0cmFuc2xhdGVcIlxuICAgIFt0aXRsZV09XCInZG9zc2llci50YWJzLm5vUmVzdWx0cycgfCB0cmFuc2xhdGVcIlxuICA+PC92YWx0aW1vLW5vLXJlc3VsdHM+XG48L3ZhbHRpbW8tY2FyYm9uLWxpc3Q+XG5cbjxuZy10ZW1wbGF0ZSAjdGFiVHlwZUNvbHVtbiBsZXQtZGF0YT1cImRhdGFcIj5cbiAge3tcbiAgICBpc1RyYW5zbGF0ZWQoJ2Rvc3NpZXJNYW5hZ2VtZW50LnRhYlR5cGUuJyArIGRhdGEuaXRlbS50eXBlKVxuICAgICAgPyAoJ2Rvc3NpZXJNYW5hZ2VtZW50LnRhYlR5cGUuJyArIGRhdGEuaXRlbS50eXBlIHwgdHJhbnNsYXRlKVxuICAgICAgOiBkYXRhLml0ZW0udHlwZVxuICB9fVxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN0YWJDb250ZW50Q29sdW1uIGxldC1kYXRhPVwiZGF0YVwiPlxuICB7e1xuICAgIGlzVHJhbnNsYXRlZCgnZG9zc2llci50YWJzLicgKyBkYXRhLml0ZW0uY29udGVudEtleSlcbiAgICAgID8gKCdkb3NzaWVyLnRhYnMuJyArIGRhdGEuaXRlbS5jb250ZW50S2V5IHwgdHJhbnNsYXRlKVxuICAgICAgOiBkYXRhLml0ZW0uY29udGVudEtleVxuICB9fVxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNhZGRUYWJCdXR0b24+XG4gIDxidXR0b24gY2RzQnV0dG9uPVwicHJpbWFyeVwiIChjbGljayk9XCJvcGVuQWRkVGFiTW9kYWwoKVwiPlxuICAgIHt7ICdkb3NzaWVyTWFuYWdlbWVudC50YWJNYW5hZ2VtZW50LmFkZE1vZGFsLmFkZFRhYicgfCB0cmFuc2xhdGUgfX1cblxuICAgIDxzdmcgY2RzSWNvbj1cImFkZFwiIHNpemU9XCIxNlwiIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIj48L3N2Zz5cbiAgPC9idXR0b24+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI21vdmVCdXR0b25zVGVtcGxhdGUgbGV0LWRhdGE9XCJkYXRhXCI+XG4gIDxkaXYgY2xhc3M9XCJtb3ZlLWJ1dHRvbnMtY29udGFpbmVyXCI+XG4gICAgPGJ1dHRvblxuICAgICAgY2RzQnV0dG9uPVwidGVydGlhcnlcIlxuICAgICAgW2Rpc2FibGVkXT1cImRhdGEuaW5kZXggPT09IDBcIlxuICAgICAgW2ljb25Pbmx5XT1cInRydWVcIlxuICAgICAgKGNsaWNrKT1cIm9uQXJyb3dDbGljaygnVVAnLCBkYXRhLmluZGV4LCAkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8c3ZnIGNkc0ljb249XCJhcnJvdy0tdXBcIiBzaXplPVwiMTZcIiBjbGFzcz1cImNkcy0tYnRuX19pY29uXCI+PC9zdmc+XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uXG4gICAgICBjZHNCdXR0b249XCJ0ZXJ0aWFyeVwiXG4gICAgICBbZGlzYWJsZWRdPVwiKGxhc3RJdGVtSW5kZXgkIHwgYXN5bmMpID09PSBkYXRhLmluZGV4XCJcbiAgICAgIFtpY29uT25seV09XCJ0cnVlXCJcbiAgICAgIChjbGljayk9XCJvbkFycm93Q2xpY2soJ0RPV04nLCBkYXRhLmluZGV4LCAkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8c3ZnIGNkc0ljb249XCJhcnJvdy0tZG93blwiIHNpemU9XCIxNlwiIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIj48L3N2Zz5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48dmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtYWRkLXRhYi1tb2RhbFxuICAqbmdJZj1cIm9wZW5BZGRNb2RhbCQgfCBhc3luY1wiXG4gIFtkb2N1bWVudERlZmluaXRpb25OYW1lXT1cImRvY3VtZW50RGVmaW5pdGlvbk5hbWVcIlxuICBbb3Blbl09XCJvcGVuQWRkTW9kYWwkIHwgYXN5bmNcIlxuICAoY2xvc2VNb2RhbEV2ZW50KT1cIm9uQ2xvc2VBZGRNb2RhbEV2ZW50KCRldmVudClcIlxuPjwvdmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtYWRkLXRhYi1tb2RhbD5cblxuPHZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LWVkaXQtdGFiLW1vZGFsXG4gICpuZ0lmPVwib3BlbkVkaXRNb2RhbCQgfCBhc3luY1wiXG4gIFt0YWJdPVwidGFiJCB8IGFzeW5jXCJcbiAgKGNsb3NlTW9kYWxFdmVudCk9XCJvbkNsb3NlRWRpdE1vZGFsRXZlbnQoJGV2ZW50KVwiXG4gIFtvcGVuXT1cIm9wZW5FZGl0TW9kYWwkIHwgYXN5bmNcIlxuPjwvdmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtZWRpdC10YWItbW9kYWw+XG5cbjx2YWx0aW1vLWNvbmZpcm1hdGlvbi1tb2RhbFxuICBjb25maXJtQnV0dG9uVGV4dFRyYW5zbGF0aW9uS2V5PVwiaW50ZXJmYWNlLmRlbGV0ZVwiXG4gIGNvbmZpcm1CdXR0b25UeXBlPVwiZGFuZ2VyXCJcbiAgY29udGVudFRyYW5zbGF0aW9uS2V5PVwiZG9zc2llck1hbmFnZW1lbnQudGFiTWFuYWdlbWVudC5kZWxldGVNb2RhbC5kZXNjcmlwdGlvblwiXG4gIFtvdXRwdXRPbkNvbmZpcm1dPVwiZGVsZXRlUm93S2V5JCB8IGFzeW5jXCJcbiAgW3Nob3dNb2RhbFN1YmplY3QkXT1cInNob3dEZWxldGVNb2RhbCRcIlxuICB0aXRsZVRyYW5zbGF0aW9uS2V5PVwiZG9zc2llck1hbmFnZW1lbnQudGFiTWFuYWdlbWVudC5kZWxldGVNb2RhbC50aXRsZVwiXG4gIChjb25maXJtRXZlbnQpPVwib25Db25maXJtRXZlbnQoJGV2ZW50KVwiXG4+PC92YWx0aW1vLWNvbmZpcm1hdGlvbi1tb2RhbD5cbiJdfQ==
@@ -0,0 +1,76 @@
1
+ /*
2
+ * Copyright 2015-2023 Ritense BV, the Netherlands.
3
+ *
4
+ * Licensed under EUPL, Version 1.2 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" basis,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
17
+ import { ApiTabType } from '@valtimo/dossier';
18
+ import { combineLatest, map, startWith } from 'rxjs';
19
+ import * as i0 from "@angular/core";
20
+ import * as i1 from "../../../services";
21
+ import * as i2 from "@angular/forms";
22
+ import * as i3 from "@angular/common";
23
+ import * as i4 from "carbon-components-angular";
24
+ import * as i5 from "@ngx-translate/core";
25
+ export class TabFormComponent {
26
+ constructor(tabService, formGroupDirective) {
27
+ this.tabService = tabService;
28
+ this.formGroupDirective = formGroupDirective;
29
+ this.listItems$ = combineLatest([
30
+ this.tabService.configuredContentKeys$,
31
+ this.tabService.formDefinitions$,
32
+ this.tabService.defaultTabs$,
33
+ this.tabService.customComponentKeys$,
34
+ ]).pipe(map(([tabKeys, formDefinitions, defaultTabs, customComponentKeys]) => {
35
+ switch (this.tabType) {
36
+ case ApiTabType.STANDARD:
37
+ return this.getListItems(defaultTabs, tabKeys);
38
+ case ApiTabType.CUSTOM:
39
+ return this.getListItems(customComponentKeys, tabKeys);
40
+ case ApiTabType.FORMIO:
41
+ return this.getListItems(formDefinitions, tabKeys);
42
+ }
43
+ }), startWith([]));
44
+ }
45
+ ngOnInit() {
46
+ this.form = this.formGroupDirective.control;
47
+ }
48
+ onSearch() {
49
+ if (this._searchActive) {
50
+ return;
51
+ }
52
+ this._searchActive = true;
53
+ this.form.get('contentKey')?.reset('');
54
+ }
55
+ onSelected() {
56
+ this._searchActive = false;
57
+ }
58
+ getListItems(tabItems, configuredContentKeys) {
59
+ return tabItems
60
+ .filter((tabItem) => !configuredContentKeys.includes(tabItem.contentKey) ||
61
+ this.form?.get('contentKey')?.value === tabItem.contentKey)
62
+ .map((tabItem) => ({
63
+ ...tabItem,
64
+ selected: this.form?.get('contentKey')?.value === tabItem.contentKey,
65
+ }));
66
+ }
67
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TabFormComponent, deps: [{ token: i1.TabService }, { token: i2.FormGroupDirective }], target: i0.ɵɵFactoryTarget.Component }); }
68
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TabFormComponent, selector: "valtimo-tab-form", inputs: { tabType: "tabType" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<form *ngIf=\"form\" [formGroup]=\"form\" class=\"valtimo-tab-form-modal\">\n <cds-label>\n {{ 'dossierManagement.tabManagement.addModal.tabNameLabel' | translate }}\n\n <input cdsText formControlName=\"name\" [attr.modal-primary-focus]=\"true\" />\n </cds-label>\n\n <cds-label\n [invalid]=\"!!this.form.get('key').errors?.uniqueKey\"\n [invalidText]=\"'dossierManagement.tabManagement.addModal.uniqueKeyError' | translate\"\n >\n {{ 'dossierManagement.tabManagement.addModal.tabKeyLabel' | translate }}\n\n <input\n cdsText\n formControlName=\"key\"\n [invalid]=\"!!this.form.get('key').errors?.uniqueKey\"\n [attr.modal-primary-focus]=\"true\"\n />\n </cds-label>\n\n <cds-combo-box\n [dropUp]=\"false\"\n formControlName=\"contentKey\"\n [items]=\"listItems$ | async\"\n itemValueKey=\"contentKey\"\n [label]=\"'dossierManagement.tabManagement.contentLabels.' + tabType | translate\"\n (search)=\"onSearch($event)\"\n (selected)=\"onSelected($event)\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n</form>\n", styles: ["::ng-deep .valtimo-tab-form-modal{display:flex;flex-direction:column;gap:32px}::ng-deep .valtimo-tab-form-modal .cds--list-box__field{background-color:#fff}::ng-deep .valtimo-tab-form-modal .cds--modal-container,::ng-deep .valtimo-tab-form-modal .cds--modal-content{overflow:unset}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "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: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "component", type: i4.ComboBox, selector: "cds-combo-box, ibm-combo-box", inputs: ["placeholder", "openMenuAria", "closeMenuAria", "clearSelectionsTitle", "clearSelectionsAria", "clearSelectionTitle", "clearSelectionAria", "id", "items", "type", "size", "itemValueKey", "label", "helperText", "appendInline", "invalid", "invalidText", "warn", "warnText", "maxLength", "theme", "selectionFeedback", "autocomplete", "dropUp", "disabled"], outputs: ["selected", "submit", "close", "search", "clear"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
69
+ }
70
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TabFormComponent, decorators: [{
71
+ type: Component,
72
+ args: [{ selector: 'valtimo-tab-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<form *ngIf=\"form\" [formGroup]=\"form\" class=\"valtimo-tab-form-modal\">\n <cds-label>\n {{ 'dossierManagement.tabManagement.addModal.tabNameLabel' | translate }}\n\n <input cdsText formControlName=\"name\" [attr.modal-primary-focus]=\"true\" />\n </cds-label>\n\n <cds-label\n [invalid]=\"!!this.form.get('key').errors?.uniqueKey\"\n [invalidText]=\"'dossierManagement.tabManagement.addModal.uniqueKeyError' | translate\"\n >\n {{ 'dossierManagement.tabManagement.addModal.tabKeyLabel' | translate }}\n\n <input\n cdsText\n formControlName=\"key\"\n [invalid]=\"!!this.form.get('key').errors?.uniqueKey\"\n [attr.modal-primary-focus]=\"true\"\n />\n </cds-label>\n\n <cds-combo-box\n [dropUp]=\"false\"\n formControlName=\"contentKey\"\n [items]=\"listItems$ | async\"\n itemValueKey=\"contentKey\"\n [label]=\"'dossierManagement.tabManagement.contentLabels.' + tabType | translate\"\n (search)=\"onSearch($event)\"\n (selected)=\"onSelected($event)\"\n >\n <cds-dropdown-list></cds-dropdown-list>\n </cds-combo-box>\n</form>\n", styles: ["::ng-deep .valtimo-tab-form-modal{display:flex;flex-direction:column;gap:32px}::ng-deep .valtimo-tab-form-modal .cds--list-box__field{background-color:#fff}::ng-deep .valtimo-tab-form-modal .cds--modal-container,::ng-deep .valtimo-tab-form-modal .cds--modal-content{overflow:unset}\n"] }]
73
+ }], ctorParameters: function () { return [{ type: i1.TabService }, { type: i2.FormGroupDirective }]; }, propDecorators: { tabType: [{
74
+ type: Input
75
+ }] } });
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyLW1hbmFnZW1lbnQvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItbWFuYWdlbWVudC10YWJzL3RhYi1mb3JtL3RhYi1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci1tYW5hZ2VtZW50L3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLW1hbmFnZW1lbnQtdGFicy90YWItZm9ybS90YWItZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBRWhGLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUU1QyxPQUFPLEVBQUMsYUFBYSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUMsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7QUFTbkQsTUFBTSxPQUFPLGdCQUFnQjtJQXlCM0IsWUFDbUIsVUFBc0IsRUFDdEIsa0JBQXNDO1FBRHRDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQXhCekMsZUFBVSxHQUFHLGFBQWEsQ0FBQztZQUN6QyxJQUFJLENBQUMsVUFBVSxDQUFDLHNCQUFzQjtZQUN0QyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQjtZQUNoQyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVk7WUFDNUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0I7U0FDckMsQ0FBQyxDQUFDLElBQUksQ0FDTCxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixDQUFDLEVBQUUsRUFBRTtZQUNuRSxRQUFRLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ3BCLEtBQUssVUFBVSxDQUFDLFFBQVE7b0JBQ3RCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQ2pELEtBQUssVUFBVSxDQUFDLE1BQU07b0JBQ3BCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDekQsS0FBSyxVQUFVLENBQUMsTUFBTTtvQkFDcEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsQ0FBQzthQUN0RDtRQUNILENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FDZCxDQUFDO0lBUUMsQ0FBQztJQUVHLFFBQVE7UUFDYixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUM7SUFDOUMsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdEIsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFTSxVQUFVO1FBQ2YsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDN0IsQ0FBQztJQUVPLFlBQVksQ0FBQyxRQUFvQixFQUFFLHFCQUErQjtRQUN4RSxPQUFPLFFBQVE7YUFDWixNQUFNLENBQ0wsQ0FBQyxPQUFpQixFQUFFLEVBQUUsQ0FDcEIsQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztZQUNuRCxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRSxLQUFLLEtBQUssT0FBTyxDQUFDLFVBQVUsQ0FDN0Q7YUFDQSxHQUFHLENBQUMsQ0FBQyxPQUFpQixFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzNCLEdBQUcsT0FBTztZQUNWLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRSxLQUFLLEtBQUssT0FBTyxDQUFDLFVBQVU7U0FDckUsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDOytHQTFEVSxnQkFBZ0I7bUdBQWhCLGdCQUFnQix3RkM1QjdCLGt1REFpREE7OzRGRHJCYSxnQkFBZ0I7a0JBTjVCLFNBQVM7K0JBQ0Usa0JBQWtCLG1CQUdYLHVCQUF1QixDQUFDLE1BQU07a0lBR3RDLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDIzIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3JtR3JvdXAsIEZvcm1Hcm91cERpcmVjdGl2ZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtBcGlUYWJUeXBlfSBmcm9tICdAdmFsdGltby9kb3NzaWVyJztcbmltcG9ydCB7TGlzdEl0ZW19IGZyb20gJ2NhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXInO1xuaW1wb3J0IHtjb21iaW5lTGF0ZXN0LCBtYXAsIHN0YXJ0V2l0aH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1RhYlNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby10YWItZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWItZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RhYi1mb3JtLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBUYWJGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgdGFiVHlwZTogQXBpVGFiVHlwZTtcblxuICBwdWJsaWMgcmVhZG9ubHkgbGlzdEl0ZW1zJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMudGFiU2VydmljZS5jb25maWd1cmVkQ29udGVudEtleXMkLFxuICAgIHRoaXMudGFiU2VydmljZS5mb3JtRGVmaW5pdGlvbnMkLFxuICAgIHRoaXMudGFiU2VydmljZS5kZWZhdWx0VGFicyQsXG4gICAgdGhpcy50YWJTZXJ2aWNlLmN1c3RvbUNvbXBvbmVudEtleXMkLFxuICBdKS5waXBlKFxuICAgIG1hcCgoW3RhYktleXMsIGZvcm1EZWZpbml0aW9ucywgZGVmYXVsdFRhYnMsIGN1c3RvbUNvbXBvbmVudEtleXNdKSA9PiB7XG4gICAgICBzd2l0Y2ggKHRoaXMudGFiVHlwZSkge1xuICAgICAgICBjYXNlIEFwaVRhYlR5cGUuU1RBTkRBUkQ6XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TGlzdEl0ZW1zKGRlZmF1bHRUYWJzLCB0YWJLZXlzKTtcbiAgICAgICAgY2FzZSBBcGlUYWJUeXBlLkNVU1RPTTpcbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRMaXN0SXRlbXMoY3VzdG9tQ29tcG9uZW50S2V5cywgdGFiS2V5cyk7XG4gICAgICAgIGNhc2UgQXBpVGFiVHlwZS5GT1JNSU86XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TGlzdEl0ZW1zKGZvcm1EZWZpbml0aW9ucywgdGFiS2V5cyk7XG4gICAgICB9XG4gICAgfSksXG4gICAgc3RhcnRXaXRoKFtdKVxuICApO1xuICBwdWJsaWMgZm9ybSE6IEZvcm1Hcm91cDtcblxuICBwcml2YXRlIF9zZWFyY2hBY3RpdmU6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSB0YWJTZXJ2aWNlOiBUYWJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9ybUdyb3VwRGlyZWN0aXZlOiBGb3JtR3JvdXBEaXJlY3RpdmVcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZvcm1Hcm91cERpcmVjdGl2ZS5jb250cm9sO1xuICB9XG5cbiAgcHVibGljIG9uU2VhcmNoKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9zZWFyY2hBY3RpdmUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9zZWFyY2hBY3RpdmUgPSB0cnVlO1xuICAgIHRoaXMuZm9ybS5nZXQoJ2NvbnRlbnRLZXknKT8ucmVzZXQoJycpO1xuICB9XG5cbiAgcHVibGljIG9uU2VsZWN0ZWQoKTogdm9pZCB7XG4gICAgdGhpcy5fc2VhcmNoQWN0aXZlID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGdldExpc3RJdGVtcyh0YWJJdGVtczogTGlzdEl0ZW1bXSwgY29uZmlndXJlZENvbnRlbnRLZXlzOiBzdHJpbmdbXSk6IExpc3RJdGVtW10ge1xuICAgIHJldHVybiB0YWJJdGVtc1xuICAgICAgLmZpbHRlcihcbiAgICAgICAgKHRhYkl0ZW06IExpc3RJdGVtKSA9PlxuICAgICAgICAgICFjb25maWd1cmVkQ29udGVudEtleXMuaW5jbHVkZXModGFiSXRlbS5jb250ZW50S2V5KSB8fFxuICAgICAgICAgIHRoaXMuZm9ybT8uZ2V0KCdjb250ZW50S2V5Jyk/LnZhbHVlID09PSB0YWJJdGVtLmNvbnRlbnRLZXlcbiAgICAgIClcbiAgICAgIC5tYXAoKHRhYkl0ZW06IExpc3RJdGVtKSA9PiAoe1xuICAgICAgICAuLi50YWJJdGVtLFxuICAgICAgICBzZWxlY3RlZDogdGhpcy5mb3JtPy5nZXQoJ2NvbnRlbnRLZXknKT8udmFsdWUgPT09IHRhYkl0ZW0uY29udGVudEtleSxcbiAgICAgIH0pKTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjMgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48Zm9ybSAqbmdJZj1cImZvcm1cIiBbZm9ybUdyb3VwXT1cImZvcm1cIiBjbGFzcz1cInZhbHRpbW8tdGFiLWZvcm0tbW9kYWxcIj5cbiAgPGNkcy1sYWJlbD5cbiAgICB7eyAnZG9zc2llck1hbmFnZW1lbnQudGFiTWFuYWdlbWVudC5hZGRNb2RhbC50YWJOYW1lTGFiZWwnIHwgdHJhbnNsYXRlIH19XG5cbiAgICA8aW5wdXQgY2RzVGV4dCBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCIgW2F0dHIubW9kYWwtcHJpbWFyeS1mb2N1c109XCJ0cnVlXCIgLz5cbiAgPC9jZHMtbGFiZWw+XG5cbiAgPGNkcy1sYWJlbFxuICAgIFtpbnZhbGlkXT1cIiEhdGhpcy5mb3JtLmdldCgna2V5JykuZXJyb3JzPy51bmlxdWVLZXlcIlxuICAgIFtpbnZhbGlkVGV4dF09XCInZG9zc2llck1hbmFnZW1lbnQudGFiTWFuYWdlbWVudC5hZGRNb2RhbC51bmlxdWVLZXlFcnJvcicgfCB0cmFuc2xhdGVcIlxuICA+XG4gICAge3sgJ2Rvc3NpZXJNYW5hZ2VtZW50LnRhYk1hbmFnZW1lbnQuYWRkTW9kYWwudGFiS2V5TGFiZWwnIHwgdHJhbnNsYXRlIH19XG5cbiAgICA8aW5wdXRcbiAgICAgIGNkc1RleHRcbiAgICAgIGZvcm1Db250cm9sTmFtZT1cImtleVwiXG4gICAgICBbaW52YWxpZF09XCIhIXRoaXMuZm9ybS5nZXQoJ2tleScpLmVycm9ycz8udW5pcXVlS2V5XCJcbiAgICAgIFthdHRyLm1vZGFsLXByaW1hcnktZm9jdXNdPVwidHJ1ZVwiXG4gICAgLz5cbiAgPC9jZHMtbGFiZWw+XG5cbiAgPGNkcy1jb21iby1ib3hcbiAgICBbZHJvcFVwXT1cImZhbHNlXCJcbiAgICBmb3JtQ29udHJvbE5hbWU9XCJjb250ZW50S2V5XCJcbiAgICBbaXRlbXNdPVwibGlzdEl0ZW1zJCB8IGFzeW5jXCJcbiAgICBpdGVtVmFsdWVLZXk9XCJjb250ZW50S2V5XCJcbiAgICBbbGFiZWxdPVwiJ2Rvc3NpZXJNYW5hZ2VtZW50LnRhYk1hbmFnZW1lbnQuY29udGVudExhYmVscy4nICsgdGFiVHlwZSB8IHRyYW5zbGF0ZVwiXG4gICAgKHNlYXJjaCk9XCJvblNlYXJjaCgkZXZlbnQpXCJcbiAgICAoc2VsZWN0ZWQpPVwib25TZWxlY3RlZCgkZXZlbnQpXCJcbiAgPlxuICAgIDxjZHMtZHJvcGRvd24tbGlzdD48L2Nkcy1kcm9wZG93bi1saXN0PlxuICA8L2Nkcy1jb21iby1ib3g+XG48L2Zvcm0+XG4iXX0=