@valtimo/zgw 12.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/dossier-management-zgw/dossier-management-zgw.component.mjs +43 -0
- package/esm2022/lib/components/index.mjs +17 -0
- package/esm2022/lib/models/dossier-management-zgw.model.mjs +20 -0
- package/esm2022/lib/models/index.mjs +17 -0
- package/esm2022/lib/modules/contactmomenten/components/contact-moments/contact-moments.component.mjs +89 -0
- package/esm2022/lib/modules/contactmomenten/components/index.mjs +17 -0
- package/esm2022/lib/modules/contactmomenten/index.mjs +19 -0
- package/esm2022/lib/modules/contactmomenten/models/contact-moment.model.mjs +17 -0
- package/esm2022/lib/modules/contactmomenten/models/index.mjs +17 -0
- package/esm2022/lib/modules/contactmomenten/services/contact-moment.service.mjs +43 -0
- package/esm2022/lib/modules/contactmomenten/services/index.mjs +17 -0
- package/esm2022/lib/modules/documenten-api/components/documenten-api-column-modal/documenten-api-column-modal.component.mjs +301 -0
- package/esm2022/lib/modules/documenten-api/components/documenten-api-columns/documenten-api-columns.component.mjs +170 -0
- package/esm2022/lib/modules/documenten-api/components/documenten-api-documents/documenten-api-documents.component.mjs +256 -0
- package/esm2022/lib/modules/documenten-api/components/documenten-api-link-upload-process/dossier-management-link-process.component.mjs +100 -0
- package/esm2022/lib/modules/documenten-api/components/documenten-api-metadata-modal/documenten-api-metadata-modal.component.mjs +233 -0
- package/esm2022/lib/modules/documenten-api/components/documenten-api-version/documenten-api-version.component.mjs +43 -0
- package/esm2022/lib/modules/documenten-api/components/index.mjs +22 -0
- package/esm2022/lib/modules/documenten-api/formio/documenten-api-uploader/documenten-api-uploader-edit-form.mjs +305 -0
- package/esm2022/lib/modules/documenten-api/formio/documenten-api-uploader/documenten-api-uploader.component.mjs +143 -0
- package/esm2022/lib/modules/documenten-api/formio/documenten-api-uploader/documenten-api-uploader.formio.mjs +46 -0
- package/esm2022/lib/modules/documenten-api/formio/documenten-api-uploader/index.mjs +19 -0
- package/esm2022/lib/modules/documenten-api/formio/index.mjs +17 -0
- package/esm2022/lib/modules/documenten-api/index.mjs +20 -0
- package/esm2022/lib/modules/documenten-api/models/configured-column.model.mjs +17 -0
- package/esm2022/lib/modules/documenten-api/models/documenten-api-column-modal.model.mjs +17 -0
- package/esm2022/lib/modules/documenten-api/models/documenten-api-link-process.model.mjs +17 -0
- package/esm2022/lib/modules/documenten-api/models/documenten-api-metadata.model.mjs +17 -0
- package/esm2022/lib/modules/documenten-api/models/documenten-api-version.model.mjs +17 -0
- package/esm2022/lib/modules/documenten-api/models/documenten-api.model.mjs +17 -0
- package/esm2022/lib/modules/documenten-api/models/index.mjs +22 -0
- package/esm2022/lib/modules/documenten-api/services/documenten-api-column.service.mjs +37 -0
- package/esm2022/lib/modules/documenten-api/services/documenten-api-document.service.mjs +42 -0
- package/esm2022/lib/modules/documenten-api/services/documenten-api-link-process.service.mjs +66 -0
- package/esm2022/lib/modules/documenten-api/services/documenten-api-version.service.mjs +47 -0
- package/esm2022/lib/modules/documenten-api/services/index.mjs +20 -0
- package/esm2022/lib/modules/haalcentraal-brp/components/cases-list/cases-list.component.mjs +56 -0
- package/esm2022/lib/modules/haalcentraal-brp/components/customer-list/customer-list.component.mjs +133 -0
- package/esm2022/lib/modules/haalcentraal-brp/customer-routing.module.mjs +51 -0
- package/esm2022/lib/modules/haalcentraal-brp/customer.module.mjs +76 -0
- package/esm2022/lib/modules/haalcentraal-brp/index.mjs +19 -0
- package/esm2022/lib/modules/haalcentraal-brp/models/case.mjs +17 -0
- package/esm2022/lib/modules/haalcentraal-brp/models/customer.mjs +17 -0
- package/esm2022/lib/modules/haalcentraal-brp/models/index.mjs +18 -0
- package/esm2022/lib/modules/haalcentraal-brp/services/customer.service.mjs +43 -0
- package/esm2022/lib/modules/haalcentraal-brp/services/index.mjs +17 -0
- package/esm2022/lib/modules/index.mjs +22 -0
- package/esm2022/lib/modules/objecten-api/components/index.mjs +18 -0
- package/esm2022/lib/modules/objecten-api/components/object-type/object-type.component.mjs +122 -0
- package/esm2022/lib/modules/objecten-api/components/zaakobjecten/zaakobjecten.component.mjs +125 -0
- package/esm2022/lib/modules/objecten-api/index.mjs +19 -0
- package/esm2022/lib/modules/objecten-api/models/index.mjs +17 -0
- package/esm2022/lib/modules/objecten-api/models/zaakobjecten.model.mjs +17 -0
- package/esm2022/lib/modules/objecten-api/services/index.mjs +17 -0
- package/esm2022/lib/modules/objecten-api/services/zaakobjecten.service.mjs +44 -0
- package/esm2022/lib/modules/zaakdetails/components/document-objecten-api-sync/document-objecten-api-sync.component.mjs +127 -0
- package/esm2022/lib/modules/zaakdetails/components/index.mjs +17 -0
- package/esm2022/lib/modules/zaakdetails/index.mjs +19 -0
- package/esm2022/lib/modules/zaakdetails/models/document-objecten-api-sync.model.mjs +2 -0
- package/esm2022/lib/modules/zaakdetails/models/index.mjs +17 -0
- package/esm2022/lib/modules/zaakdetails/services/document-objecten-api-sync.service.mjs +51 -0
- package/esm2022/lib/modules/zaakdetails/services/index.mjs +17 -0
- package/esm2022/lib/modules/zaken-api/components/index.mjs +17 -0
- package/esm2022/lib/modules/zaken-api/components/zaken-api-zaaktype-link/zaken-api-zaaktype-link.component.mjs +183 -0
- package/esm2022/lib/modules/zaken-api/index.mjs +19 -0
- package/esm2022/lib/modules/zaken-api/models/index.mjs +17 -0
- package/esm2022/lib/modules/zaken-api/models/zaken-api-zaaktype-link.model.mjs +2 -0
- package/esm2022/lib/modules/zaken-api/services/index.mjs +17 -0
- package/esm2022/lib/modules/zaken-api/services/zaken-api-zaaktype-link.service.mjs +39 -0
- package/esm2022/lib/services/dossier-management-zgw.service.mjs +39 -0
- package/esm2022/lib/services/index.mjs +17 -0
- package/esm2022/lib/zgw.module.mjs +106 -0
- package/esm2022/public_api.mjs +27 -0
- package/esm2022/valtimo-zgw.mjs +5 -0
- package/fesm2022/valtimo-zgw.mjs +3577 -0
- package/fesm2022/valtimo-zgw.mjs.map +1 -0
- package/index.d.ts +6 -0
- package/lib/components/dossier-management-zgw/dossier-management-zgw.component.d.ts +13 -0
- package/lib/components/dossier-management-zgw/dossier-management-zgw.component.d.ts.map +1 -0
- package/lib/components/index.d.ts +2 -0
- package/lib/components/index.d.ts.map +1 -0
- package/lib/models/dossier-management-zgw.model.d.ts +4 -0
- package/lib/models/dossier-management-zgw.model.d.ts.map +1 -0
- package/lib/models/index.d.ts +2 -0
- package/lib/models/index.d.ts.map +1 -0
- package/lib/modules/contactmomenten/components/contact-moments/contact-moments.component.d.ts +29 -0
- package/lib/modules/contactmomenten/components/contact-moments/contact-moments.component.d.ts.map +1 -0
- package/lib/modules/contactmomenten/components/index.d.ts +2 -0
- package/lib/modules/contactmomenten/components/index.d.ts.map +1 -0
- package/lib/modules/contactmomenten/index.d.ts +4 -0
- package/lib/modules/contactmomenten/index.d.ts.map +1 -0
- package/lib/modules/contactmomenten/models/contact-moment.model.d.ts +14 -0
- package/lib/modules/contactmomenten/models/contact-moment.model.d.ts.map +1 -0
- package/lib/modules/contactmomenten/models/index.d.ts +2 -0
- package/lib/modules/contactmomenten/models/index.d.ts.map +1 -0
- package/lib/modules/contactmomenten/services/contact-moment.service.d.ts +18 -0
- package/lib/modules/contactmomenten/services/contact-moment.service.d.ts.map +1 -0
- package/lib/modules/contactmomenten/services/index.d.ts +2 -0
- package/lib/modules/contactmomenten/services/index.d.ts.map +1 -0
- package/lib/modules/documenten-api/components/documenten-api-column-modal/documenten-api-column-modal.component.d.ts +77 -0
- package/lib/modules/documenten-api/components/documenten-api-column-modal/documenten-api-column-modal.component.d.ts.map +1 -0
- package/lib/modules/documenten-api/components/documenten-api-columns/documenten-api-columns.component.d.ts +40 -0
- package/lib/modules/documenten-api/components/documenten-api-columns/documenten-api-columns.component.d.ts.map +1 -0
- package/lib/modules/documenten-api/components/documenten-api-documents/documenten-api-documents.component.d.ts +66 -0
- package/lib/modules/documenten-api/components/documenten-api-documents/documenten-api-documents.component.d.ts.map +1 -0
- package/lib/modules/documenten-api/components/documenten-api-link-upload-process/dossier-management-link-process.component.d.ts +28 -0
- package/lib/modules/documenten-api/components/documenten-api-link-upload-process/dossier-management-link-process.component.d.ts.map +1 -0
- package/lib/modules/documenten-api/components/documenten-api-metadata-modal/documenten-api-metadata-modal.component.d.ts +75 -0
- package/lib/modules/documenten-api/components/documenten-api-metadata-modal/documenten-api-metadata-modal.component.d.ts.map +1 -0
- package/lib/modules/documenten-api/components/documenten-api-version/documenten-api-version.component.d.ts +16 -0
- package/lib/modules/documenten-api/components/documenten-api-version/documenten-api-version.component.d.ts.map +1 -0
- package/lib/modules/documenten-api/components/index.d.ts +7 -0
- package/lib/modules/documenten-api/components/index.d.ts.map +1 -0
- package/lib/modules/documenten-api/formio/documenten-api-uploader/documenten-api-uploader-edit-form.d.ts +105 -0
- package/lib/modules/documenten-api/formio/documenten-api-uploader/documenten-api-uploader-edit-form.d.ts.map +1 -0
- package/lib/modules/documenten-api/formio/documenten-api-uploader/documenten-api-uploader.component.d.ts +58 -0
- package/lib/modules/documenten-api/formio/documenten-api-uploader/documenten-api-uploader.component.d.ts.map +1 -0
- package/lib/modules/documenten-api/formio/documenten-api-uploader/documenten-api-uploader.formio.d.ts +4 -0
- package/lib/modules/documenten-api/formio/documenten-api-uploader/documenten-api-uploader.formio.d.ts.map +1 -0
- package/lib/modules/documenten-api/formio/documenten-api-uploader/index.d.ts +4 -0
- package/lib/modules/documenten-api/formio/documenten-api-uploader/index.d.ts.map +1 -0
- package/lib/modules/documenten-api/formio/index.d.ts +2 -0
- package/lib/modules/documenten-api/formio/index.d.ts.map +1 -0
- package/lib/modules/documenten-api/index.d.ts +5 -0
- package/lib/modules/documenten-api/index.d.ts.map +1 -0
- package/lib/modules/documenten-api/models/configured-column.model.d.ts +6 -0
- package/lib/modules/documenten-api/models/configured-column.model.d.ts.map +1 -0
- package/lib/modules/documenten-api/models/documenten-api-column-modal.model.d.ts +4 -0
- package/lib/modules/documenten-api/models/documenten-api-column-modal.model.d.ts.map +1 -0
- package/lib/modules/documenten-api/models/documenten-api-link-process.model.d.ts +23 -0
- package/lib/modules/documenten-api/models/documenten-api-link-process.model.d.ts.map +1 -0
- package/lib/modules/documenten-api/models/documenten-api-metadata.model.d.ts +19 -0
- package/lib/modules/documenten-api/models/documenten-api-metadata.model.d.ts.map +1 -0
- package/lib/modules/documenten-api/models/documenten-api-version.model.d.ts +6 -0
- package/lib/modules/documenten-api/models/documenten-api-version.model.d.ts.map +1 -0
- package/lib/modules/documenten-api/models/documenten-api.model.d.ts +18 -0
- package/lib/modules/documenten-api/models/documenten-api.model.d.ts.map +1 -0
- package/lib/modules/documenten-api/models/index.d.ts +7 -0
- package/lib/modules/documenten-api/models/index.d.ts.map +1 -0
- package/lib/modules/documenten-api/services/documenten-api-column.service.d.ts +17 -0
- package/lib/modules/documenten-api/services/documenten-api-column.service.d.ts.map +1 -0
- package/lib/modules/documenten-api/services/documenten-api-document.service.d.ts +15 -0
- package/lib/modules/documenten-api/services/documenten-api-document.service.d.ts.map +1 -0
- package/lib/modules/documenten-api/services/documenten-api-link-process.service.d.ts +17 -0
- package/lib/modules/documenten-api/services/documenten-api-link-process.service.d.ts.map +1 -0
- package/lib/modules/documenten-api/services/documenten-api-version.service.d.ts +17 -0
- package/lib/modules/documenten-api/services/documenten-api-version.service.d.ts.map +1 -0
- package/lib/modules/documenten-api/services/index.d.ts +5 -0
- package/lib/modules/documenten-api/services/index.d.ts.map +1 -0
- package/lib/modules/haalcentraal-brp/components/cases-list/cases-list.component.d.ts +20 -0
- package/lib/modules/haalcentraal-brp/components/cases-list/cases-list.component.d.ts.map +1 -0
- package/lib/modules/haalcentraal-brp/components/customer-list/customer-list.component.d.ts +39 -0
- package/lib/modules/haalcentraal-brp/components/customer-list/customer-list.component.d.ts.map +1 -0
- package/lib/modules/haalcentraal-brp/customer-routing.module.d.ts +9 -0
- package/lib/modules/haalcentraal-brp/customer-routing.module.d.ts.map +1 -0
- package/lib/modules/haalcentraal-brp/customer.module.d.ts +17 -0
- package/lib/modules/haalcentraal-brp/customer.module.d.ts.map +1 -0
- package/lib/modules/haalcentraal-brp/index.d.ts +4 -0
- package/lib/modules/haalcentraal-brp/index.d.ts.map +1 -0
- package/lib/modules/haalcentraal-brp/models/case.d.ts +8 -0
- package/lib/modules/haalcentraal-brp/models/case.d.ts.map +1 -0
- package/lib/modules/haalcentraal-brp/models/customer.d.ts +22 -0
- package/lib/modules/haalcentraal-brp/models/customer.d.ts.map +1 -0
- package/lib/modules/haalcentraal-brp/models/index.d.ts +3 -0
- package/lib/modules/haalcentraal-brp/models/index.d.ts.map +1 -0
- package/lib/modules/haalcentraal-brp/services/customer.service.d.ts +18 -0
- package/lib/modules/haalcentraal-brp/services/customer.service.d.ts.map +1 -0
- package/lib/modules/haalcentraal-brp/services/index.d.ts +2 -0
- package/lib/modules/haalcentraal-brp/services/index.d.ts.map +1 -0
- package/lib/modules/index.d.ts +7 -0
- package/lib/modules/index.d.ts.map +1 -0
- package/lib/modules/objecten-api/components/index.d.ts +3 -0
- package/lib/modules/objecten-api/components/index.d.ts.map +1 -0
- package/lib/modules/objecten-api/components/object-type/object-type.component.d.ts +32 -0
- package/lib/modules/objecten-api/components/object-type/object-type.component.d.ts.map +1 -0
- package/lib/modules/objecten-api/components/zaakobjecten/zaakobjecten.component.d.ts +32 -0
- package/lib/modules/objecten-api/components/zaakobjecten/zaakobjecten.component.d.ts.map +1 -0
- package/lib/modules/objecten-api/index.d.ts +4 -0
- package/lib/modules/objecten-api/index.d.ts.map +1 -0
- package/lib/modules/objecten-api/models/index.d.ts +2 -0
- package/lib/modules/objecten-api/models/index.d.ts.map +1 -0
- package/lib/modules/objecten-api/models/zaakobjecten.model.d.ts +26 -0
- package/lib/modules/objecten-api/models/zaakobjecten.model.d.ts.map +1 -0
- package/lib/modules/objecten-api/services/index.d.ts +2 -0
- package/lib/modules/objecten-api/services/index.d.ts.map +1 -0
- package/lib/modules/objecten-api/services/zaakobjecten.service.d.ts +17 -0
- package/lib/modules/objecten-api/services/zaakobjecten.service.d.ts.map +1 -0
- package/lib/modules/zaakdetails/components/document-objecten-api-sync/document-objecten-api-sync.component.d.ts +39 -0
- package/lib/modules/zaakdetails/components/document-objecten-api-sync/document-objecten-api-sync.component.d.ts.map +1 -0
- package/lib/modules/zaakdetails/components/index.d.ts +2 -0
- package/lib/modules/zaakdetails/components/index.d.ts.map +1 -0
- package/lib/modules/zaakdetails/index.d.ts +4 -0
- package/lib/modules/zaakdetails/index.d.ts.map +1 -0
- package/lib/modules/zaakdetails/models/document-objecten-api-sync.model.d.ts +21 -0
- package/lib/modules/zaakdetails/models/document-objecten-api-sync.model.d.ts.map +1 -0
- package/lib/modules/zaakdetails/models/index.d.ts +2 -0
- package/lib/modules/zaakdetails/models/index.d.ts.map +1 -0
- package/lib/modules/zaakdetails/services/document-objecten-api-sync.service.d.ts +22 -0
- package/lib/modules/zaakdetails/services/document-objecten-api-sync.service.d.ts.map +1 -0
- package/lib/modules/zaakdetails/services/index.d.ts +2 -0
- package/lib/modules/zaakdetails/services/index.d.ts.map +1 -0
- package/lib/modules/zaken-api/components/index.d.ts +2 -0
- package/lib/modules/zaken-api/components/index.d.ts.map +1 -0
- package/lib/modules/zaken-api/components/zaken-api-zaaktype-link/zaken-api-zaaktype-link.component.d.ts +46 -0
- package/lib/modules/zaken-api/components/zaken-api-zaaktype-link/zaken-api-zaaktype-link.component.d.ts.map +1 -0
- package/lib/modules/zaken-api/index.d.ts +4 -0
- package/lib/modules/zaken-api/index.d.ts.map +1 -0
- package/lib/modules/zaken-api/models/index.d.ts +2 -0
- package/lib/modules/zaken-api/models/index.d.ts.map +1 -0
- package/lib/modules/zaken-api/models/zaken-api-zaaktype-link.model.d.ts +15 -0
- package/lib/modules/zaken-api/models/zaken-api-zaaktype-link.model.d.ts.map +1 -0
- package/lib/modules/zaken-api/services/index.d.ts +2 -0
- package/lib/modules/zaken-api/services/index.d.ts.map +1 -0
- package/lib/modules/zaken-api/services/zaken-api-zaaktype-link.service.d.ts +14 -0
- package/lib/modules/zaken-api/services/zaken-api-zaaktype-link.service.d.ts.map +1 -0
- package/lib/services/dossier-management-zgw.service.d.ts +12 -0
- package/lib/services/dossier-management-zgw.service.d.ts.map +1 -0
- package/lib/services/index.d.ts +2 -0
- package/lib/services/index.d.ts.map +1 -0
- package/lib/zgw.module.d.ts +17 -0
- package/lib/zgw.module.d.ts.map +1 -0
- package/package.json +29 -0
- package/public_api.d.ts +8 -0
- package/public_api.d.ts.map +1 -0
- package/valtimo-zgw.d.ts.map +1 -0
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, } from '@angular/core';
|
|
17
|
+
import { BehaviorSubject, combineLatest, map, Subscription, switchMap, take, tap, } from 'rxjs';
|
|
18
|
+
import { CARBON_CONSTANTS } from '@valtimo/components';
|
|
19
|
+
import { ReactiveFormsModule, Validators, } from '@angular/forms';
|
|
20
|
+
import { InternalCaseStatusColor, InternalCaseStatusUtils, } from '@valtimo/document';
|
|
21
|
+
import { ButtonModule, DropdownModule, InputModule, ModalModule, TagModule, ToggleModule, } from 'carbon-components-angular';
|
|
22
|
+
import { Edit16 } from '@carbon/icons';
|
|
23
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
24
|
+
import { CommonModule } from '@angular/common';
|
|
25
|
+
import * as i0 from "@angular/core";
|
|
26
|
+
import * as i1 from "@angular/forms";
|
|
27
|
+
import * as i2 from "carbon-components-angular";
|
|
28
|
+
import * as i3 from "@valtimo/document";
|
|
29
|
+
import * as i4 from "@ngx-translate/core";
|
|
30
|
+
import * as i5 from "@angular/common";
|
|
31
|
+
export class DocumentenApiColumnModalComponent {
|
|
32
|
+
set type(value) {
|
|
33
|
+
this._type.next(value);
|
|
34
|
+
if (value === 'closed') {
|
|
35
|
+
setTimeout(() => {
|
|
36
|
+
this._typeAnimationDelay$.next(value);
|
|
37
|
+
}, CARBON_CONSTANTS.modalAnimationMs);
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
this._typeAnimationDelay$.next(value);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
set prefill(value) {
|
|
44
|
+
this._prefillStatus.next(value);
|
|
45
|
+
}
|
|
46
|
+
get visibleInCaseListByDefault() {
|
|
47
|
+
return this.statusFormGroup?.get('visibleInCaseListByDefault');
|
|
48
|
+
}
|
|
49
|
+
get key() {
|
|
50
|
+
return this.statusFormGroup?.get('key');
|
|
51
|
+
}
|
|
52
|
+
get title() {
|
|
53
|
+
return this.statusFormGroup?.get('title');
|
|
54
|
+
}
|
|
55
|
+
get color() {
|
|
56
|
+
return this.statusFormGroup?.get('color');
|
|
57
|
+
}
|
|
58
|
+
get invalid() {
|
|
59
|
+
return !!this.statusFormGroup?.invalid;
|
|
60
|
+
}
|
|
61
|
+
get pristine() {
|
|
62
|
+
return !!this.statusFormGroup?.pristine;
|
|
63
|
+
}
|
|
64
|
+
constructor(fb, iconService, caseStatusService, translateService) {
|
|
65
|
+
this.fb = fb;
|
|
66
|
+
this.iconService = iconService;
|
|
67
|
+
this.caseStatusService = caseStatusService;
|
|
68
|
+
this.translateService = translateService;
|
|
69
|
+
this.closeModalEvent = new EventEmitter();
|
|
70
|
+
this._type = new BehaviorSubject(undefined);
|
|
71
|
+
this._typeAnimationDelay$ = new BehaviorSubject(undefined);
|
|
72
|
+
this._prefillStatus = new BehaviorSubject(undefined);
|
|
73
|
+
this.isClosed$ = this._type.pipe(map(type => type === 'closed'));
|
|
74
|
+
this.statusFormGroup = this.fb.group({
|
|
75
|
+
title: this.fb.control('', Validators.required),
|
|
76
|
+
key: this.fb.control('', [Validators.required, this.uniqueKeyValidator()]),
|
|
77
|
+
visibleInCaseListByDefault: this.fb.control(true, Validators.required),
|
|
78
|
+
color: this.fb.control('', Validators.required),
|
|
79
|
+
});
|
|
80
|
+
this.isEdit$ = combineLatest([this._typeAnimationDelay$, this._prefillStatus]).pipe(tap(([type, prefillStatus]) => {
|
|
81
|
+
if (type === 'edit' && prefillStatus)
|
|
82
|
+
this.prefillForm(prefillStatus);
|
|
83
|
+
}), map(([type]) => type === 'edit'));
|
|
84
|
+
this.isAdd$ = this._typeAnimationDelay$.pipe(map(type => type === 'add'), tap(isAdd => {
|
|
85
|
+
if (isAdd)
|
|
86
|
+
this.resetForm();
|
|
87
|
+
}));
|
|
88
|
+
this.disabled$ = new BehaviorSubject(false);
|
|
89
|
+
this.COLORS = [
|
|
90
|
+
InternalCaseStatusColor.Red,
|
|
91
|
+
InternalCaseStatusColor.Magenta,
|
|
92
|
+
InternalCaseStatusColor.Purple,
|
|
93
|
+
InternalCaseStatusColor.Blue,
|
|
94
|
+
InternalCaseStatusColor.Teal,
|
|
95
|
+
InternalCaseStatusColor.Green,
|
|
96
|
+
InternalCaseStatusColor.Cyan,
|
|
97
|
+
InternalCaseStatusColor.Gray,
|
|
98
|
+
InternalCaseStatusColor.CoolGray,
|
|
99
|
+
InternalCaseStatusColor.WarmGray,
|
|
100
|
+
InternalCaseStatusColor.HighContrast,
|
|
101
|
+
InternalCaseStatusColor.Outline,
|
|
102
|
+
];
|
|
103
|
+
this._selectedColor$ = new BehaviorSubject(undefined);
|
|
104
|
+
this.colorListItems$ = combineLatest([
|
|
105
|
+
this._selectedColor$,
|
|
106
|
+
this.translateService.stream('key'),
|
|
107
|
+
]).pipe(map(([selectedColor]) => this.COLORS.map(color => ({
|
|
108
|
+
selected: color === selectedColor,
|
|
109
|
+
content: this.translateService.instant('interface.tagType.' +
|
|
110
|
+
InternalCaseStatusUtils.getTagTypeFromInternalCaseStatusColor(color)),
|
|
111
|
+
color,
|
|
112
|
+
tagType: InternalCaseStatusUtils.getTagTypeFromInternalCaseStatusColor(color),
|
|
113
|
+
}))));
|
|
114
|
+
this._editingKey$ = new BehaviorSubject(false);
|
|
115
|
+
this.editingKey$ = this._editingKey$.pipe(tap(editing => {
|
|
116
|
+
if (editing) {
|
|
117
|
+
this.key?.enable();
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
this.key?.disable();
|
|
121
|
+
}
|
|
122
|
+
}));
|
|
123
|
+
this._originalStatusKey$ = new BehaviorSubject('');
|
|
124
|
+
this._subscriptions = new Subscription();
|
|
125
|
+
this.iconService.registerAll([Edit16]);
|
|
126
|
+
}
|
|
127
|
+
ngOnInit() {
|
|
128
|
+
this.openAutoKeySubscription();
|
|
129
|
+
}
|
|
130
|
+
ngOnDestroy() {
|
|
131
|
+
this._subscriptions.unsubscribe();
|
|
132
|
+
}
|
|
133
|
+
onClose() {
|
|
134
|
+
this.close();
|
|
135
|
+
}
|
|
136
|
+
toggleCheckedChange(checked) {
|
|
137
|
+
this.statusFormGroup.patchValue({
|
|
138
|
+
visibleInCaseListByDefault: checked,
|
|
139
|
+
});
|
|
140
|
+
this.statusFormGroup.markAsDirty();
|
|
141
|
+
}
|
|
142
|
+
addStatus() {
|
|
143
|
+
this.disable();
|
|
144
|
+
this.caseStatusService
|
|
145
|
+
.saveInternalCaseStatus(this.documentDefinitionName, this.getFormValue())
|
|
146
|
+
.subscribe({
|
|
147
|
+
next: () => {
|
|
148
|
+
this.enable();
|
|
149
|
+
this.closeAndRefresh();
|
|
150
|
+
},
|
|
151
|
+
error: () => {
|
|
152
|
+
this.enable(false);
|
|
153
|
+
},
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
editStatus() {
|
|
157
|
+
this.disable();
|
|
158
|
+
this._originalStatusKey$
|
|
159
|
+
.pipe(take(1), switchMap(originalStatusKey => this.caseStatusService.updateInternalCaseStatus(this.documentDefinitionName, originalStatusKey, this.getFormValue())))
|
|
160
|
+
.subscribe({
|
|
161
|
+
next: () => {
|
|
162
|
+
this.enable();
|
|
163
|
+
this.closeAndRefresh();
|
|
164
|
+
},
|
|
165
|
+
error: () => {
|
|
166
|
+
this.enable(false);
|
|
167
|
+
},
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
editKeyButtonClick() {
|
|
171
|
+
this._editingKey$.next(true);
|
|
172
|
+
}
|
|
173
|
+
colorDropdownChange(event) {
|
|
174
|
+
const newColor = event?.item?.color;
|
|
175
|
+
if (newColor) {
|
|
176
|
+
this._selectedColor$.next(newColor);
|
|
177
|
+
this.statusFormGroup.patchValue({ color: newColor });
|
|
178
|
+
this.statusFormGroup.markAsDirty();
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
prefillForm(prefillStatus) {
|
|
182
|
+
this._originalStatusKey$.next(prefillStatus.key);
|
|
183
|
+
this.statusFormGroup.patchValue({
|
|
184
|
+
key: prefillStatus.key,
|
|
185
|
+
title: prefillStatus.title,
|
|
186
|
+
visibleInCaseListByDefault: prefillStatus.visibleInCaseListByDefault,
|
|
187
|
+
color: prefillStatus.color,
|
|
188
|
+
});
|
|
189
|
+
this._selectedColor$.next(prefillStatus.color);
|
|
190
|
+
this.statusFormGroup.markAsPristine();
|
|
191
|
+
this.resetEditingKey();
|
|
192
|
+
}
|
|
193
|
+
resetForm() {
|
|
194
|
+
this.statusFormGroup.patchValue({
|
|
195
|
+
key: '',
|
|
196
|
+
title: '',
|
|
197
|
+
visibleInCaseListByDefault: true,
|
|
198
|
+
color: InternalCaseStatusColor.Blue,
|
|
199
|
+
});
|
|
200
|
+
this._selectedColor$.next(InternalCaseStatusColor.Blue);
|
|
201
|
+
this.statusFormGroup.markAsPristine();
|
|
202
|
+
this.resetEditingKey();
|
|
203
|
+
}
|
|
204
|
+
resetEditingKey() {
|
|
205
|
+
this._editingKey$.next(false);
|
|
206
|
+
}
|
|
207
|
+
openAutoKeySubscription() {
|
|
208
|
+
this._subscriptions.add(combineLatest([this.isAdd$, this.title.valueChanges, this.editingKey$]).subscribe(([isAdd, titleValue, editingKey]) => {
|
|
209
|
+
if (isAdd && !editingKey) {
|
|
210
|
+
if (titleValue) {
|
|
211
|
+
this.statusFormGroup.patchValue({ key: this.getUniqueKey(titleValue) });
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
this.clearKey();
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}));
|
|
218
|
+
}
|
|
219
|
+
getUniqueKey(title) {
|
|
220
|
+
const dashCaseKey = `${title}`
|
|
221
|
+
.toLowerCase()
|
|
222
|
+
.replace(/[^a-z0-9-_]+|-[^a-z0-9]+/g, '-')
|
|
223
|
+
.replace(/_[-_]+/g, '_')
|
|
224
|
+
.replace(/^[^a-z]+/g, '');
|
|
225
|
+
const usedKeys = this.usedKeys;
|
|
226
|
+
if (!usedKeys.includes(dashCaseKey)) {
|
|
227
|
+
return dashCaseKey;
|
|
228
|
+
}
|
|
229
|
+
return this.getUniqueKeyWithNumber(dashCaseKey, usedKeys);
|
|
230
|
+
}
|
|
231
|
+
getUniqueKeyWithNumber(dashCaseKey, usedKeys) {
|
|
232
|
+
const numbersFromCurrentKey = (dashCaseKey.match(/^\d+|\d+\b|\d+(?=\w)/g) || []).map((numberValue) => +numberValue);
|
|
233
|
+
const lastNumberFromCurrentKey = numbersFromCurrentKey.length > 0 && numbersFromCurrentKey[numbersFromCurrentKey.length - 1];
|
|
234
|
+
const newKey = lastNumberFromCurrentKey
|
|
235
|
+
? `${dashCaseKey.replace(`${lastNumberFromCurrentKey}`, `${lastNumberFromCurrentKey + 1}`)}`
|
|
236
|
+
: `${dashCaseKey}-1`;
|
|
237
|
+
if (usedKeys.includes(newKey)) {
|
|
238
|
+
return this.getUniqueKeyWithNumber(newKey, usedKeys);
|
|
239
|
+
}
|
|
240
|
+
return newKey;
|
|
241
|
+
}
|
|
242
|
+
clearKey() {
|
|
243
|
+
this.statusFormGroup.patchValue({ key: '' });
|
|
244
|
+
}
|
|
245
|
+
uniqueKeyValidator() {
|
|
246
|
+
return (control) => this.usedKeys?.every((key) => key !== control.value)
|
|
247
|
+
? null
|
|
248
|
+
: { uniqueKey: { value: control.value } };
|
|
249
|
+
}
|
|
250
|
+
disable() {
|
|
251
|
+
this.disabled$.next(true);
|
|
252
|
+
this.statusFormGroup.disable();
|
|
253
|
+
}
|
|
254
|
+
enable(delay = true) {
|
|
255
|
+
setTimeout(() => {
|
|
256
|
+
this.disabled$.next(false);
|
|
257
|
+
this.statusFormGroup.enable();
|
|
258
|
+
}, delay ? CARBON_CONSTANTS.modalAnimationMs : 0);
|
|
259
|
+
}
|
|
260
|
+
close() {
|
|
261
|
+
this.closeModalEvent.emit('close');
|
|
262
|
+
}
|
|
263
|
+
closeAndRefresh() {
|
|
264
|
+
this.closeModalEvent.emit('closeAndRefresh');
|
|
265
|
+
}
|
|
266
|
+
getFormValue() {
|
|
267
|
+
return {
|
|
268
|
+
key: this.key.value,
|
|
269
|
+
title: this.title.value,
|
|
270
|
+
visibleInCaseListByDefault: this.visibleInCaseListByDefault.value,
|
|
271
|
+
color: this.color.value,
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: DocumentenApiColumnModalComponent, deps: [{ token: i1.FormBuilder }, { token: i2.IconService }, { token: i3.CaseStatusService }, { token: i4.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
275
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: DocumentenApiColumnModalComponent, isStandalone: true, selector: "valtimo-documenten-api-column-modal", inputs: { type: "type", prefill: "prefill", usedKeys: "usedKeys", documentDefinitionName: "documentDefinitionName" }, outputs: { closeModalEvent: "closeModalEvent" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal\n valtimoCdsModal\n *ngIf=\"{\n isAdd: isAdd$ | async,\n isEdit: isEdit$ | async,\n isClosed: isClosed$ | async,\n editingKey: editingKey$ | async,\n disabled: disabled$ | async\n } as obs\"\n [open]=\"!obs.isClosed\"\n size=\"sm\"\n>\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"onClose()\">\n <h3 cdsModalHeaderHeading>\n {{ obs.isAdd ? ('dossierManagement.statuses.add' | translate) : '' }}\n {{ obs.isEdit ? ('dossierManagement.statuses.edit' | translate) : '' }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent>\n <ng-container *ngTemplateOutlet=\"statusForm; context: {obs: obs}\"></ng-container>\n </section>\n\n <cds-modal-footer>\n <ng-container *ngTemplateOutlet=\"buttons; context: {obs: obs}\"></ng-container>\n </cds-modal-footer>\n</cds-modal>\n\n<ng-template #colorDropdownItemTemplate let-item=\"item\">\n <div class=\"dropdown-color-tag\">\n <cds-tag *ngIf=\"item && item.content\" class=\"cds-tag--no-margin\" [type]=\"item?.tagType\">\n {{ 'interface.tagType.' + item?.tagType | translate }}\n </cds-tag>\n </div>\n</ng-template>\n\n<ng-template #statusForm let-obs=\"obs\">\n <form [formGroup]=\"statusFormGroup\" class=\"status-form\">\n <cds-label>\n {{ 'dossierManagement.statuses.columns.title' | translate }}\n\n <input cdsText formControlName=\"title\" [attr.modal-primary-focus]=\"true\" />\n </cds-label>\n\n <cds-label>\n {{ 'dossierManagement.statuses.columns.key' | translate }}\n\n <div class=\"edit-key-input\">\n <input\n cdsText\n formControlName=\"key\"\n [disabled]=\"!obs.editingKey\"\n [placeholder]=\"\n obs.isAdd && !obs.editingKey\n ? ('dossierManagement.statuses.keyAutoGenerated' | translate)\n : ''\n \"\n />\n\n <cds-icon-button\n *ngIf=\"!obs.editingKey && obs.isAdd\"\n [disabled]=\"obs.disabled\"\n (click)=\"editKeyButtonClick()\"\n kind=\"secondary\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"edit\" size=\"16\"></svg>\n </cds-icon-button>\n </div>\n </cds-label>\n\n <div class=\"horizontal-inputs\">\n <cds-label>\n {{ 'dossierManagement.statuses.columns.color' | translate }}\n\n <cds-dropdown\n [appendInline]=\"false\"\n [placeholder]=\"'dossierManagement.statuses.colorPlaceholder' | translate\"\n (selected)=\"colorDropdownChange($event)\"\n >\n <cds-dropdown-list [items]=\"colorListItems$\" [listTpl]=\"colorDropdownItemTemplate\">\n </cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n\n <cds-toggle\n [label]=\"'dossierManagement.statuses.visibleTitle' | translate\"\n [onText]=\"'dossierManagement.statuses.visible' | translate\"\n [offText]=\"'dossierManagement.statuses.invisible' | translate\"\n [disabled]=\"obs.disabled\"\n [checked]=\"visibleInCaseListByDefault?.value\"\n (checkedChange)=\"toggleCheckedChange($event)\"\n ></cds-toggle>\n </div>\n </form>\n</ng-template>\n\n<ng-template #buttons let-obs=\"obs\">\n <button cdsButton=\"secondary\" (click)=\"onClose()\" [disabled]=\"obs.disabled\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button\n *ngIf=\"obs.isAdd\"\n cdsButton=\"primary\"\n [disabled]=\"invalid || pristine || obs.disabled\"\n (click)=\"addStatus()\"\n >\n {{ 'interface.add' | translate }}\n </button>\n\n <button\n *ngIf=\"obs.isEdit\"\n cdsButton=\"primary\"\n [disabled]=\"invalid || pristine || obs.disabled\"\n (click)=\"editStatus()\"\n >\n {{ 'interface.save' | translate }}\n </button>\n</ng-template>\n", styles: [".status-form{display:flex;flex-direction:column;gap:16px}.edit-key-input{height:40px;display:flex;width:100%;flex-direction:row;gap:16px;align-items:flex-end}::ng-deep .horizontal-inputs{display:grid;gap:16px;grid-template-columns:repeat(2,1fr)}::ng-deep .horizontal-inputs .cds--label{width:100%;display:flex;flex-direction:column;gap:8px}::ng-deep .dropdown-color-tag .cds--tag{margin-top:-4px;margin-left:2px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ModalModule }, { 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: "ngmodule", type: TagModule }, { kind: "component", type: i2.Tag, selector: "cds-tag, ibm-tag", inputs: ["type", "size", "class"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: InputModule }, { kind: "component", type: i2.Label, selector: "cds-label, ibm-label", inputs: ["labelInputID", "disabled", "skeleton", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i2.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i2.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "component", type: i2.IconButton, selector: "cds-icon-button, ibm-icon-button", inputs: ["buttonNgClass", "buttonAttributes", "buttonId", "kind", "size", "type", "isExpressive", "disabled", "description"], outputs: ["click", "focus", "blur", "tooltipClick"] }, { kind: "ngmodule", type: DropdownModule }, { kind: "component", type: i2.Dropdown, selector: "cds-dropdown, ibm-dropdown", inputs: ["id", "label", "helperText", "placeholder", "displayValue", "clearText", "size", "type", "theme", "disabled", "skeleton", "inline", "disableArrowKeys", "invalid", "invalidText", "warn", "warnText", "appendInline", "scrollableContainer", "itemValueKey", "selectionFeedback", "menuButtonLabel", "selectedLabel", "dropUp"], outputs: ["selected", "onClose", "close"] }, { kind: "component", type: i2.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "ngmodule", type: ToggleModule }, { kind: "component", type: i2.Toggle, selector: "cds-toggle, ibm-toggle", inputs: ["offText", "onText", "label", "size", "hideLabel", "skeleton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
276
|
+
}
|
|
277
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: DocumentenApiColumnModalComponent, decorators: [{
|
|
278
|
+
type: Component,
|
|
279
|
+
args: [{ selector: 'valtimo-documenten-api-column-modal', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
280
|
+
CommonModule,
|
|
281
|
+
ModalModule,
|
|
282
|
+
TagModule,
|
|
283
|
+
TranslateModule,
|
|
284
|
+
InputModule,
|
|
285
|
+
ReactiveFormsModule,
|
|
286
|
+
ButtonModule,
|
|
287
|
+
DropdownModule,
|
|
288
|
+
ToggleModule,
|
|
289
|
+
], template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal\n valtimoCdsModal\n *ngIf=\"{\n isAdd: isAdd$ | async,\n isEdit: isEdit$ | async,\n isClosed: isClosed$ | async,\n editingKey: editingKey$ | async,\n disabled: disabled$ | async\n } as obs\"\n [open]=\"!obs.isClosed\"\n size=\"sm\"\n>\n <cds-modal-header showCloseButton=\"true\" (closeSelect)=\"onClose()\">\n <h3 cdsModalHeaderHeading>\n {{ obs.isAdd ? ('dossierManagement.statuses.add' | translate) : '' }}\n {{ obs.isEdit ? ('dossierManagement.statuses.edit' | translate) : '' }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent>\n <ng-container *ngTemplateOutlet=\"statusForm; context: {obs: obs}\"></ng-container>\n </section>\n\n <cds-modal-footer>\n <ng-container *ngTemplateOutlet=\"buttons; context: {obs: obs}\"></ng-container>\n </cds-modal-footer>\n</cds-modal>\n\n<ng-template #colorDropdownItemTemplate let-item=\"item\">\n <div class=\"dropdown-color-tag\">\n <cds-tag *ngIf=\"item && item.content\" class=\"cds-tag--no-margin\" [type]=\"item?.tagType\">\n {{ 'interface.tagType.' + item?.tagType | translate }}\n </cds-tag>\n </div>\n</ng-template>\n\n<ng-template #statusForm let-obs=\"obs\">\n <form [formGroup]=\"statusFormGroup\" class=\"status-form\">\n <cds-label>\n {{ 'dossierManagement.statuses.columns.title' | translate }}\n\n <input cdsText formControlName=\"title\" [attr.modal-primary-focus]=\"true\" />\n </cds-label>\n\n <cds-label>\n {{ 'dossierManagement.statuses.columns.key' | translate }}\n\n <div class=\"edit-key-input\">\n <input\n cdsText\n formControlName=\"key\"\n [disabled]=\"!obs.editingKey\"\n [placeholder]=\"\n obs.isAdd && !obs.editingKey\n ? ('dossierManagement.statuses.keyAutoGenerated' | translate)\n : ''\n \"\n />\n\n <cds-icon-button\n *ngIf=\"!obs.editingKey && obs.isAdd\"\n [disabled]=\"obs.disabled\"\n (click)=\"editKeyButtonClick()\"\n kind=\"secondary\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"edit\" size=\"16\"></svg>\n </cds-icon-button>\n </div>\n </cds-label>\n\n <div class=\"horizontal-inputs\">\n <cds-label>\n {{ 'dossierManagement.statuses.columns.color' | translate }}\n\n <cds-dropdown\n [appendInline]=\"false\"\n [placeholder]=\"'dossierManagement.statuses.colorPlaceholder' | translate\"\n (selected)=\"colorDropdownChange($event)\"\n >\n <cds-dropdown-list [items]=\"colorListItems$\" [listTpl]=\"colorDropdownItemTemplate\">\n </cds-dropdown-list>\n </cds-dropdown>\n </cds-label>\n\n <cds-toggle\n [label]=\"'dossierManagement.statuses.visibleTitle' | translate\"\n [onText]=\"'dossierManagement.statuses.visible' | translate\"\n [offText]=\"'dossierManagement.statuses.invisible' | translate\"\n [disabled]=\"obs.disabled\"\n [checked]=\"visibleInCaseListByDefault?.value\"\n (checkedChange)=\"toggleCheckedChange($event)\"\n ></cds-toggle>\n </div>\n </form>\n</ng-template>\n\n<ng-template #buttons let-obs=\"obs\">\n <button cdsButton=\"secondary\" (click)=\"onClose()\" [disabled]=\"obs.disabled\">\n {{ 'interface.cancel' | translate }}\n </button>\n\n <button\n *ngIf=\"obs.isAdd\"\n cdsButton=\"primary\"\n [disabled]=\"invalid || pristine || obs.disabled\"\n (click)=\"addStatus()\"\n >\n {{ 'interface.add' | translate }}\n </button>\n\n <button\n *ngIf=\"obs.isEdit\"\n cdsButton=\"primary\"\n [disabled]=\"invalid || pristine || obs.disabled\"\n (click)=\"editStatus()\"\n >\n {{ 'interface.save' | translate }}\n </button>\n</ng-template>\n", styles: [".status-form{display:flex;flex-direction:column;gap:16px}.edit-key-input{height:40px;display:flex;width:100%;flex-direction:row;gap:16px;align-items:flex-end}::ng-deep .horizontal-inputs{display:grid;gap:16px;grid-template-columns:repeat(2,1fr)}::ng-deep .horizontal-inputs .cds--label{width:100%;display:flex;flex-direction:column;gap:8px}::ng-deep .dropdown-color-tag .cds--tag{margin-top:-4px;margin-left:2px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
290
|
+
}], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.IconService }, { type: i3.CaseStatusService }, { type: i4.TranslateService }], propDecorators: { type: [{
|
|
291
|
+
type: Input
|
|
292
|
+
}], prefill: [{
|
|
293
|
+
type: Input
|
|
294
|
+
}], usedKeys: [{
|
|
295
|
+
type: Input
|
|
296
|
+
}], documentDefinitionName: [{
|
|
297
|
+
type: Input
|
|
298
|
+
}], closeModalEvent: [{
|
|
299
|
+
type: Output
|
|
300
|
+
}] } });
|
|
301
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdW1lbnRlbi1hcGktY29sdW1uLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vemd3L3NyYy9saWIvbW9kdWxlcy9kb2N1bWVudGVuLWFwaS9jb21wb25lbnRzL2RvY3VtZW50ZW4tYXBpLWNvbHVtbi1tb2RhbC9kb2N1bWVudGVuLWFwaS1jb2x1bW4tbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby96Z3cvc3JjL2xpYi9tb2R1bGVzL2RvY3VtZW50ZW4tYXBpL2NvbXBvbmVudHMvZG9jdW1lbnRlbi1hcGktY29sdW1uLW1vZGFsL2RvY3VtZW50ZW4tYXBpLWNvbHVtbi1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDTCxlQUFlLEVBQ2YsYUFBYSxFQUNiLEdBQUcsRUFFSCxZQUFZLEVBQ1osU0FBUyxFQUNULElBQUksRUFDSixHQUFHLEdBQ0osTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBR0wsbUJBQW1CLEVBR25CLFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFHTCx1QkFBdUIsRUFDdkIsdUJBQXVCLEdBQ3hCLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUNMLFlBQVksRUFDWixjQUFjLEVBRWQsV0FBVyxFQUVYLFdBQVcsRUFDWCxTQUFTLEVBQ1QsWUFBWSxHQUNiLE1BQU0sMkJBQTJCLENBQUM7QUFD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ZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtEb2N1bWVudGVuQXBpQ29sdW1uTW9kYWxUeXBlLCBEb2N1bWVudGVuQXBpQ29sdW1uTW9kYWxUeXBlQ2xvc2VFdmVudH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY29tYmluZUxhdGVzdCxcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBTdWJzY3JpcHRpb24sXG4gIHN3aXRjaE1hcCxcbiAgdGFrZSxcbiAgdGFwLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7Q0FSQk9OX0NPTlNUQU5UU30gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIEZvcm1CdWlsZGVyLFxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3JGbixcbiAgVmFsaWRhdG9ycyxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgQ2FzZVN0YXR1c1NlcnZpY2UsXG4gIEludGVybmFsQ2FzZVN0YXR1cyxcbiAgSW50ZXJuYWxDYXNlU3RhdHVzQ29sb3IsXG4gIEludGVybmFsQ2FzZVN0YXR1c1V0aWxzLFxufSBmcm9tICdAdmFsdGltby9kb2N1bWVudCc7XG5pbXBvcnQge1xuICBCdXR0b25Nb2R1bGUsXG4gIERyb3Bkb3duTW9kdWxlLFxuICBJY29uU2VydmljZSxcbiAgSW5wdXRNb2R1bGUsXG4gIExpc3RJdGVtLFxuICBNb2RhbE1vZHVsZSxcbiAgVGFnTW9kdWxlLFxuICBUb2dnbGVNb2R1bGUsXG59IGZyb20gJ2NhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXInO1xuaW1wb3J0IHtFZGl0MTZ9IGZyb20gJ0BjYXJib24vaWNvbnMnO1xuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tZG9jdW1lbnRlbi1hcGktY29sdW1uLW1vZGFsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2RvY3VtZW50ZW4tYXBpLWNvbHVtbi1tb2RhbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2RvY3VtZW50ZW4tYXBpLWNvbHVtbi1tb2RhbC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNb2RhbE1vZHVsZSxcbiAgICBUYWdNb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIElucHV0TW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgQnV0dG9uTW9kdWxlLFxuICAgIERyb3Bkb3duTW9kdWxlLFxuICAgIFRvZ2dsZU1vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRG9jdW1lbnRlbkFwaUNvbHVtbk1vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBwdWJsaWMgc2V0IHR5cGUodmFsdWU6IERvY3VtZW50ZW5BcGlDb2x1bW5Nb2RhbFR5cGUpIHtcbiAgICB0aGlzLl90eXBlLm5leHQodmFsdWUpO1xuXG4gICAgaWYgKHZhbHVlID09PSAnY2xvc2VkJykge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuX3R5cGVBbmltYXRpb25EZWxheSQubmV4dCh2YWx1ZSk7XG4gICAgICB9LCBDQVJCT05fQ09OU1RBTlRTLm1vZGFsQW5pbWF0aW9uTXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl90eXBlQW5pbWF0aW9uRGVsYXkkLm5leHQodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgcHJlZmlsbCh2YWx1ZTogSW50ZXJuYWxDYXNlU3RhdHVzKSB7XG4gICAgdGhpcy5fcHJlZmlsbFN0YXR1cy5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIEBJbnB1dCgpIHB1YmxpYyB1c2VkS2V5cyE6IHN0cmluZ1tdO1xuICBASW5wdXQoKSBwdWJsaWMgZG9jdW1lbnREZWZpbml0aW9uTmFtZSE6IHN0cmluZztcblxuICBAT3V0cHV0KCkgcHVibGljIGNsb3NlTW9kYWxFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8RG9jdW1lbnRlbkFwaUNvbHVtbk1vZGFsVHlwZUNsb3NlRXZlbnQ+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfdHlwZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RG9jdW1lbnRlbkFwaUNvbHVtbk1vZGFsVHlwZT4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdHlwZUFuaW1hdGlvbkRlbGF5JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RG9jdW1lbnRlbkFwaUNvbHVtbk1vZGFsVHlwZT4oXG4gICAgdW5kZWZpbmVkXG4gICk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3ByZWZpbGxTdGF0dXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEludGVybmFsQ2FzZVN0YXR1cz4odW5kZWZpbmVkKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgaXNDbG9zZWQkID0gdGhpcy5fdHlwZS5waXBlKG1hcCh0eXBlID0+IHR5cGUgPT09ICdjbG9zZWQnKSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHN0YXR1c0Zvcm1Hcm91cCA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgIHRpdGxlOiB0aGlzLmZiLmNvbnRyb2woJycsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgIGtleTogdGhpcy5mYi5jb250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgdGhpcy51bmlxdWVLZXlWYWxpZGF0b3IoKV0pLFxuICAgIHZpc2libGVJbkNhc2VMaXN0QnlEZWZhdWx0OiB0aGlzLmZiLmNvbnRyb2wodHJ1ZSwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgY29sb3I6IHRoaXMuZmIuY29udHJvbCgnJywgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gIH0pO1xuXG4gIHB1YmxpYyByZWFkb25seSBpc0VkaXQkID0gY29tYmluZUxhdGVzdChbdGhpcy5fdHlwZUFuaW1hdGlvbkRlbGF5JCwgdGhpcy5fcHJlZmlsbFN0YXR1c10pLnBpcGUoXG4gICAgdGFwKChbdHlwZSwgcHJlZmlsbFN0YXR1c10pID0+IHtcbiAgICAgIGlmICh0eXBlID09PSAnZWRpdCcgJiYgcHJlZmlsbFN0YXR1cykgdGhpcy5wcmVmaWxsRm9ybShwcmVmaWxsU3RhdHVzKTtcbiAgICB9KSxcbiAgICBtYXAoKFt0eXBlXSkgPT4gdHlwZSA9PT0gJ2VkaXQnKVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBpc0FkZCQgPSB0aGlzLl90eXBlQW5pbWF0aW9uRGVsYXkkLnBpcGUoXG4gICAgbWFwKHR5cGUgPT4gdHlwZSA9PT0gJ2FkZCcpLFxuICAgIHRhcChpc0FkZCA9PiB7XG4gICAgICBpZiAoaXNBZGQpIHRoaXMucmVzZXRGb3JtKCk7XG4gICAgfSlcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZGlzYWJsZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBDT0xPUlM6IEludGVybmFsQ2FzZVN0YXR1c0NvbG9yW10gPSBbXG4gICAgSW50ZXJuYWxDYXNlU3RhdHVzQ29sb3IuUmVkLFxuICAgIEludGVybmFsQ2FzZVN0YXR1c0NvbG9yLk1hZ2VudGEsXG4gICAgSW50ZXJuYWxDYXNlU3RhdHVzQ29sb3IuUHVycGxlLFxuICAgIEludGVybmFsQ2FzZVN0YXR1c0NvbG9yLkJsdWUsXG4gICAgSW50ZXJuYWxDYXNlU3RhdHVzQ29sb3IuVGVhbCxcbiAgICBJbnRlcm5hbENhc2VTdGF0dXNDb2xvci5HcmVlbixcbiAgICBJbnRlcm5hbENhc2VTdGF0dXNDb2xvci5DeWFuLFxuICAgIEludGVybmFsQ2FzZVN0YXR1c0NvbG9yLkdyYXksXG4gICAgSW50ZXJuYWxDYXNlU3RhdHVzQ29sb3IuQ29vbEdyYXksXG4gICAgSW50ZXJuYWxDYXNlU3RhdHVzQ29sb3IuV2FybUdyYXksXG4gICAgSW50ZXJuYWxDYXNlU3RhdHVzQ29sb3IuSGlnaENvbnRyYXN0LFxuICAgIEludGVybmFsQ2FzZVN0YXR1c0NvbG9yLk91dGxpbmUsXG4gIF07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfc2VsZWN0ZWRDb2xvciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEludGVybmFsQ2FzZVN0YXR1c0NvbG9yPih1bmRlZmluZWQpO1xuXG4gIHB1YmxpYyByZWFkb25seSBjb2xvckxpc3RJdGVtcyQ6IE9ic2VydmFibGU8TGlzdEl0ZW1bXT4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLl9zZWxlY3RlZENvbG9yJCxcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc3RyZWFtKCdrZXknKSxcbiAgXSkucGlwZShcbiAgICBtYXAoKFtzZWxlY3RlZENvbG9yXSkgPT5cbiAgICAgIHRoaXMuQ09MT1JTLm1hcChjb2xvciA9PiAoe1xuICAgICAgICBzZWxlY3RlZDogY29sb3IgPT09IHNlbGVjdGVkQ29sb3IsXG4gICAgICAgIGNvbnRlbnQ6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICdpbnRlcmZhY2UudGFnVHlwZS4nICtcbiAgICAgICAgICAgIEludGVybmFsQ2FzZVN0YXR1c1V0aWxzLmdldFRhZ1R5cGVGcm9tSW50ZXJuYWxDYXNlU3RhdHVzQ29sb3IoY29sb3IpXG4gICAgICAgICksXG4gICAgICAgIGNvbG9yLFxuICAgICAgICB0YWdUeXBlOiBJbnRlcm5hbENhc2VTdGF0dXNVdGlscy5nZXRUYWdUeXBlRnJvbUludGVybmFsQ2FzZVN0YXR1c0NvbG9yKGNvbG9yKSxcbiAgICAgIH0pKVxuICAgIClcbiAgKTtcblxuICBwdWJsaWMgZ2V0IHZpc2libGVJbkNhc2VMaXN0QnlEZWZhdWx0KCk6IEFic3RyYWN0Q29udHJvbDxib29sZWFuLCBib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdHVzRm9ybUdyb3VwPy5nZXQoJ3Zpc2libGVJbkNhc2VMaXN0QnlEZWZhdWx0Jyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGtleSgpOiBBYnN0cmFjdENvbnRyb2w8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5zdGF0dXNGb3JtR3JvdXA/LmdldCgna2V5Jyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRpdGxlKCk6IEFic3RyYWN0Q29udHJvbDxzdHJpbmcsIHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnN0YXR1c0Zvcm1Hcm91cD8uZ2V0KCd0aXRsZScpO1xuICB9XG5cbiAgcHVibGljIGdldCBjb2xvcigpOiBBYnN0cmFjdENvbnRyb2w8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5zdGF0dXNGb3JtR3JvdXA/LmdldCgnY29sb3InKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaW52YWxpZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnN0YXR1c0Zvcm1Hcm91cD8uaW52YWxpZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcHJpc3RpbmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5zdGF0dXNGb3JtR3JvdXA/LnByaXN0aW5lO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZWRpdGluZ0tleSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZWRpdGluZ0tleSQgPSB0aGlzLl9lZGl0aW5nS2V5JC5waXBlKFxuICAgIHRhcChlZGl0aW5nID0+IHtcbiAgICAgIGlmIChlZGl0aW5nKSB7XG4gICAgICAgIHRoaXMua2V5Py5lbmFibGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMua2V5Py5kaXNhYmxlKCk7XG4gICAgICB9XG4gICAgfSlcbiAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9vcmlnaW5hbFN0YXR1c0tleSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBpY29uU2VydmljZTogSWNvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXNlU3RhdHVzU2VydmljZTogQ2FzZVN0YXR1c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuaWNvblNlcnZpY2UucmVnaXN0ZXJBbGwoW0VkaXQxNl0pO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMub3BlbkF1dG9LZXlTdWJzY3JpcHRpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgb25DbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlQ2hlY2tlZENoYW5nZShjaGVja2VkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0dXNGb3JtR3JvdXAucGF0Y2hWYWx1ZSh7XG4gICAgICB2aXNpYmxlSW5DYXNlTGlzdEJ5RGVmYXVsdDogY2hlY2tlZCxcbiAgICB9KTtcbiAgICB0aGlzLnN0YXR1c0Zvcm1Hcm91cC5tYXJrQXNEaXJ0eSgpO1xuICB9XG5cbiAgcHVibGljIGFkZFN0YXR1cygpOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGUoKTtcblxuICAgIHRoaXMuY2FzZVN0YXR1c1NlcnZpY2VcbiAgICAgIC5zYXZlSW50ZXJuYWxDYXNlU3RhdHVzKHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSwgdGhpcy5nZXRGb3JtVmFsdWUoKSlcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5lbmFibGUoKTtcbiAgICAgICAgICB0aGlzLmNsb3NlQW5kUmVmcmVzaCgpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZW5hYmxlKGZhbHNlKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGVkaXRTdGF0dXMoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlKCk7XG5cbiAgICB0aGlzLl9vcmlnaW5hbFN0YXR1c0tleSRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlKDEpLFxuICAgICAgICBzd2l0Y2hNYXAob3JpZ2luYWxTdGF0dXNLZXkgPT5cbiAgICAgICAgICB0aGlzLmNhc2VTdGF0dXNTZXJ2aWNlLnVwZGF0ZUludGVybmFsQ2FzZVN0YXR1cyhcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnREZWZpbml0aW9uTmFtZSxcbiAgICAgICAgICAgIG9yaWdpbmFsU3RhdHVzS2V5LFxuICAgICAgICAgICAgdGhpcy5nZXRGb3JtVmFsdWUoKVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLmVuYWJsZSgpO1xuICAgICAgICAgIHRoaXMuY2xvc2VBbmRSZWZyZXNoKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5lbmFibGUoZmFsc2UpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZWRpdEtleUJ1dHRvbkNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMuX2VkaXRpbmdLZXkkLm5leHQodHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgY29sb3JEcm9wZG93bkNoYW5nZShldmVudDoge1xuICAgIGl0ZW06IHtjb2xvcjogc3RyaW5nOyBjb250ZW50OiBzdHJpbmc7IHNlbGVjdGVkOiBib29sZWFufTtcbiAgICBpc1VwZGF0ZTogYm9vbGVhbjtcbiAgfSk6IHZvaWQge1xuICAgIGNvbnN0IG5ld0NvbG9yID0gZXZlbnQ/Lml0ZW0/LmNvbG9yIGFzIEludGVybmFsQ2FzZVN0YXR1c0NvbG9yO1xuXG4gICAgaWYgKG5ld0NvbG9yKSB7XG4gICAgICB0aGlzLl9zZWxlY3RlZENvbG9yJC5uZXh0KG5ld0NvbG9yKTtcbiAgICAgIHRoaXMuc3RhdHVzRm9ybUdyb3VwLnBhdGNoVmFsdWUoe2NvbG9yOiBuZXdDb2xvcn0pO1xuICAgICAgdGhpcy5zdGF0dXNGb3JtR3JvdXAubWFya0FzRGlydHkoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHByZWZpbGxGb3JtKHByZWZpbGxTdGF0dXM6IEludGVybmFsQ2FzZVN0YXR1cyk6IHZvaWQge1xuICAgIHRoaXMuX29yaWdpbmFsU3RhdHVzS2V5JC5uZXh0KHByZWZpbGxTdGF0dXMua2V5KTtcbiAgICB0aGlzLnN0YXR1c0Zvcm1Hcm91cC5wYXRjaFZhbHVlKHtcbiAgICAgIGtleTogcHJlZmlsbFN0YXR1cy5rZXksXG4gICAgICB0aXRsZTogcHJlZmlsbFN0YXR1cy50aXRsZSxcbiAgICAgIHZpc2libGVJbkNhc2VMaXN0QnlEZWZhdWx0OiBwcmVmaWxsU3RhdHVzLnZpc2libGVJbkNhc2VMaXN0QnlEZWZhdWx0LFxuICAgICAgY29sb3I6IHByZWZpbGxTdGF0dXMuY29sb3IsXG4gICAgfSk7XG4gICAgdGhpcy5fc2VsZWN0ZWRDb2xvciQubmV4dChwcmVmaWxsU3RhdHVzLmNvbG9yKTtcbiAgICB0aGlzLnN0YXR1c0Zvcm1Hcm91cC5tYXJrQXNQcmlzdGluZSgpO1xuICAgIHRoaXMucmVzZXRFZGl0aW5nS2V5KCk7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0Rm9ybSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXR1c0Zvcm1Hcm91cC5wYXRjaFZhbHVlKHtcbiAgICAgIGtleTogJycsXG4gICAgICB0aXRsZTogJycsXG4gICAgICB2aXNpYmxlSW5DYXNlTGlzdEJ5RGVmYXVsdDogdHJ1ZSxcbiAgICAgIGNvbG9yOiBJbnRlcm5hbENhc2VTdGF0dXNDb2xvci5CbHVlLFxuICAgIH0pO1xuICAgIHRoaXMuX3NlbGVjdGVkQ29sb3IkLm5leHQoSW50ZXJuYWxDYXNlU3RhdHVzQ29sb3IuQmx1ZSk7XG4gICAgdGhpcy5zdGF0dXNGb3JtR3JvdXAubWFya0FzUHJpc3RpbmUoKTtcbiAgICB0aGlzLnJlc2V0RWRpdGluZ0tleSgpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNldEVkaXRpbmdLZXkoKTogdm9pZCB7XG4gICAgdGhpcy5fZWRpdGluZ0tleSQubmV4dChmYWxzZSk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5BdXRvS2V5U3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgY29tYmluZUxhdGVzdChbdGhpcy5pc0FkZCQsIHRoaXMudGl0bGUudmFsdWVDaGFuZ2VzLCB0aGlzLmVkaXRpbmdLZXkkXSkuc3Vic2NyaWJlKFxuICAgICAgICAoW2lzQWRkLCB0aXRsZVZhbHVlLCBlZGl0aW5nS2V5XSkgPT4ge1xuICAgICAgICAgIGlmIChpc0FkZCAmJiAhZWRpdGluZ0tleSkge1xuICAgICAgICAgICAgaWYgKHRpdGxlVmFsdWUpIHtcbiAgICAgICAgICAgICAgdGhpcy5zdGF0dXNGb3JtR3JvdXAucGF0Y2hWYWx1ZSh7a2V5OiB0aGlzLmdldFVuaXF1ZUtleSh0aXRsZVZhbHVlKX0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5jbGVhcktleSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldFVuaXF1ZUtleSh0aXRsZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBkYXNoQ2FzZUtleSA9IGAke3RpdGxlfWBcbiAgICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgICAucmVwbGFjZSgvW15hLXowLTktX10rfC1bXmEtejAtOV0rL2csICctJylcbiAgICAgIC5yZXBsYWNlKC9fWy1fXSsvZywgJ18nKVxuICAgICAgLnJlcGxhY2UoL15bXmEtel0rL2csICcnKTtcbiAgICBjb25zdCB1c2VkS2V5cyA9IHRoaXMudXNlZEtleXM7XG5cbiAgICBpZiAoIXVzZWRLZXlzLmluY2x1ZGVzKGRhc2hDYXNlS2V5KSkge1xuICAgICAgcmV0dXJuIGRhc2hDYXNlS2V5O1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmdldFVuaXF1ZUtleVdpdGhOdW1iZXIoZGFzaENhc2VLZXksIHVzZWRLZXlzKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VW5pcXVlS2V5V2l0aE51bWJlcihkYXNoQ2FzZUtleTogc3RyaW5nLCB1c2VkS2V5czogc3RyaW5nW10pOiBzdHJpbmcge1xuICAgIGNvbnN0IG51bWJlcnNGcm9tQ3VycmVudEtleSA9IChkYXNoQ2FzZUtleS5tYXRjaCgvXlxcZCt8XFxkK1xcYnxcXGQrKD89XFx3KS9nKSB8fCBbXSkubWFwKFxuICAgICAgKG51bWJlclZhbHVlOiBzdHJpbmcpID0+ICtudW1iZXJWYWx1ZVxuICAgICk7XG4gICAgY29uc3QgbGFzdE51bWJlckZyb21DdXJyZW50S2V5ID1cbiAgICAgIG51bWJlcnNGcm9tQ3VycmVudEtleS5sZW5ndGggPiAwICYmIG51bWJlcnNGcm9tQ3VycmVudEtleVtudW1iZXJzRnJvbUN1cnJlbnRLZXkubGVuZ3RoIC0gMV07XG4gICAgY29uc3QgbmV3S2V5ID0gbGFzdE51bWJlckZyb21DdXJyZW50S2V5XG4gICAgICA/IGAke2Rhc2hDYXNlS2V5LnJlcGxhY2UoYCR7bGFzdE51bWJlckZyb21DdXJyZW50S2V5fWAsIGAke2xhc3ROdW1iZXJGcm9tQ3VycmVudEtleSArIDF9YCl9YFxuICAgICAgOiBgJHtkYXNoQ2FzZUtleX0tMWA7XG5cbiAgICBpZiAodXNlZEtleXMuaW5jbHVkZXMobmV3S2V5KSkge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0VW5pcXVlS2V5V2l0aE51bWJlcihuZXdLZXksIHVzZWRLZXlzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3S2V5O1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhcktleSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXR1c0Zvcm1Hcm91cC5wYXRjaFZhbHVlKHtrZXk6ICcnfSk7XG4gIH1cblxuICBwcml2YXRlIHVuaXF1ZUtleVZhbGlkYXRvcigpOiBWYWxpZGF0b3JGbiB7XG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PlxuICAgICAgdGhpcy51c2VkS2V5cz8uZXZlcnkoKGtleTogc3RyaW5nKSA9PiBrZXkgIT09IGNvbnRyb2wudmFsdWUpXG4gICAgICAgID8gbnVsbFxuICAgICAgICA6IHt1bmlxdWVLZXk6IHt2YWx1ZTogY29udHJvbC52YWx1ZX19O1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNhYmxlKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5zdGF0dXNGb3JtR3JvdXAuZGlzYWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbmFibGUoZGVsYXkgPSB0cnVlKTogdm9pZCB7XG4gICAgc2V0VGltZW91dChcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCQubmV4dChmYWxzZSk7XG4gICAgICAgIHRoaXMuc3RhdHVzRm9ybUdyb3VwLmVuYWJsZSgpO1xuICAgICAgfSxcbiAgICAgIGRlbGF5ID8gQ0FSQk9OX0NPTlNUQU5UUy5tb2RhbEFuaW1hdGlvbk1zIDogMFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuY2xvc2VNb2RhbEV2ZW50LmVtaXQoJ2Nsb3NlJyk7XG4gIH1cblxuICBwcml2YXRlIGNsb3NlQW5kUmVmcmVzaCgpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlTW9kYWxFdmVudC5lbWl0KCdjbG9zZUFuZFJlZnJlc2gnKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Rm9ybVZhbHVlKCk6IEludGVybmFsQ2FzZVN0YXR1cyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGtleTogdGhpcy5rZXkudmFsdWUsXG4gICAgICB0aXRsZTogdGhpcy50aXRsZS52YWx1ZSxcbiAgICAgIHZpc2libGVJbkNhc2VMaXN0QnlEZWZhdWx0OiB0aGlzLnZpc2libGVJbkNhc2VMaXN0QnlEZWZhdWx0LnZhbHVlLFxuICAgICAgY29sb3I6IHRoaXMuY29sb3IudmFsdWUgYXMgSW50ZXJuYWxDYXNlU3RhdHVzQ29sb3IsXG4gICAgfTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48Y2RzLW1vZGFsXG4gIHZhbHRpbW9DZHNNb2RhbFxuICAqbmdJZj1cIntcbiAgICBpc0FkZDogaXNBZGQkIHwgYXN5bmMsXG4gICAgaXNFZGl0OiBpc0VkaXQkIHwgYXN5bmMsXG4gICAgaXNDbG9zZWQ6IGlzQ2xvc2VkJCB8IGFzeW5jLFxuICAgIGVkaXRpbmdLZXk6IGVkaXRpbmdLZXkkIHwgYXN5bmMsXG4gICAgZGlzYWJsZWQ6IGRpc2FibGVkJCB8IGFzeW5jXG4gIH0gYXMgb2JzXCJcbiAgW29wZW5dPVwiIW9icy5pc0Nsb3NlZFwiXG4gIHNpemU9XCJzbVwiXG4+XG4gIDxjZHMtbW9kYWwtaGVhZGVyIHNob3dDbG9zZUJ1dHRvbj1cInRydWVcIiAoY2xvc2VTZWxlY3QpPVwib25DbG9zZSgpXCI+XG4gICAgPGgzIGNkc01vZGFsSGVhZGVySGVhZGluZz5cbiAgICAgIHt7IG9icy5pc0FkZCA/ICgnZG9zc2llck1hbmFnZW1lbnQuc3RhdHVzZXMuYWRkJyB8IHRyYW5zbGF0ZSkgOiAnJyB9fVxuICAgICAge3sgb2JzLmlzRWRpdCA/ICgnZG9zc2llck1hbmFnZW1lbnQuc3RhdHVzZXMuZWRpdCcgfCB0cmFuc2xhdGUpIDogJycgfX1cbiAgICA8L2gzPlxuICA8L2Nkcy1tb2RhbC1oZWFkZXI+XG5cbiAgPHNlY3Rpb24gY2RzTW9kYWxDb250ZW50PlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdGF0dXNGb3JtOyBjb250ZXh0OiB7b2JzOiBvYnN9XCI+PC9uZy1jb250YWluZXI+XG4gIDwvc2VjdGlvbj5cblxuICA8Y2RzLW1vZGFsLWZvb3Rlcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnV0dG9uczsgY29udGV4dDoge29iczogb2JzfVwiPjwvbmctY29udGFpbmVyPlxuICA8L2Nkcy1tb2RhbC1mb290ZXI+XG48L2Nkcy1tb2RhbD5cblxuPG5nLXRlbXBsYXRlICNjb2xvckRyb3Bkb3duSXRlbVRlbXBsYXRlIGxldC1pdGVtPVwiaXRlbVwiPlxuICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tY29sb3ItdGFnXCI+XG4gICAgPGNkcy10YWcgKm5nSWY9XCJpdGVtICYmIGl0ZW0uY29udGVudFwiIGNsYXNzPVwiY2RzLXRhZy0tbm8tbWFyZ2luXCIgW3R5cGVdPVwiaXRlbT8udGFnVHlwZVwiPlxuICAgICAge3sgJ2ludGVyZmFjZS50YWdUeXBlLicgKyBpdGVtPy50YWdUeXBlIHwgdHJhbnNsYXRlIH19XG4gICAgPC9jZHMtdGFnPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc3RhdHVzRm9ybSBsZXQtb2JzPVwib2JzXCI+XG4gIDxmb3JtIFtmb3JtR3JvdXBdPVwic3RhdHVzRm9ybUdyb3VwXCIgY2xhc3M9XCJzdGF0dXMtZm9ybVwiPlxuICAgIDxjZHMtbGFiZWw+XG4gICAgICB7eyAnZG9zc2llck1hbmFnZW1lbnQuc3RhdHVzZXMuY29sdW1ucy50aXRsZScgfCB0cmFuc2xhdGUgfX1cblxuICAgICAgPGlucHV0IGNkc1RleHQgZm9ybUNvbnRyb2xOYW1lPVwidGl0bGVcIiBbYXR0ci5tb2RhbC1wcmltYXJ5LWZvY3VzXT1cInRydWVcIiAvPlxuICAgIDwvY2RzLWxhYmVsPlxuXG4gICAgPGNkcy1sYWJlbD5cbiAgICAgIHt7ICdkb3NzaWVyTWFuYWdlbWVudC5zdGF0dXNlcy5jb2x1bW5zLmtleScgfCB0cmFuc2xhdGUgfX1cblxuICAgICAgPGRpdiBjbGFzcz1cImVkaXQta2V5LWlucHV0XCI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGNkc1RleHRcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJrZXlcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhb2JzLmVkaXRpbmdLZXlcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJcbiAgICAgICAgICAgIG9icy5pc0FkZCAmJiAhb2JzLmVkaXRpbmdLZXlcbiAgICAgICAgICAgICAgPyAoJ2Rvc3NpZXJNYW5hZ2VtZW50LnN0YXR1c2VzLmtleUF1dG9HZW5lcmF0ZWQnIHwgdHJhbnNsYXRlKVxuICAgICAgICAgICAgICA6ICcnXG4gICAgICAgICAgXCJcbiAgICAgICAgLz5cblxuICAgICAgICA8Y2RzLWljb24tYnV0dG9uXG4gICAgICAgICAgKm5nSWY9XCIhb2JzLmVkaXRpbmdLZXkgJiYgb2JzLmlzQWRkXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwib2JzLmRpc2FibGVkXCJcbiAgICAgICAgICAoY2xpY2spPVwiZWRpdEtleUJ1dHRvbkNsaWNrKClcIlxuICAgICAgICAgIGtpbmQ9XCJzZWNvbmRhcnlcIlxuICAgICAgICA+XG4gICAgICAgICAgPHN2ZyBjbGFzcz1cImNkcy0tYnRuX19pY29uXCIgY2RzSWNvbj1cImVkaXRcIiBzaXplPVwiMTZcIj48L3N2Zz5cbiAgICAgICAgPC9jZHMtaWNvbi1idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Nkcy1sYWJlbD5cblxuICAgIDxkaXYgY2xhc3M9XCJob3Jpem9udGFsLWlucHV0c1wiPlxuICAgICAgPGNkcy1sYWJlbD5cbiAgICAgICAge3sgJ2Rvc3NpZXJNYW5hZ2VtZW50LnN0YXR1c2VzLmNvbHVtbnMuY29sb3InIHwgdHJhbnNsYXRlIH19XG5cbiAgICAgICAgPGNkcy1kcm9wZG93blxuICAgICAgICAgIFthcHBlbmRJbmxpbmVdPVwiZmFsc2VcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInZG9zc2llck1hbmFnZW1lbnQuc3RhdHVzZXMuY29sb3JQbGFjZWhvbGRlcicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIChzZWxlY3RlZCk9XCJjb2xvckRyb3Bkb3duQ2hhbmdlKCRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGNkcy1kcm9wZG93bi1saXN0IFtpdGVtc109XCJjb2xvckxpc3RJdGVtcyRcIiBbbGlzdFRwbF09XCJjb2xvckRyb3Bkb3duSXRlbVRlbXBsYXRlXCI+XG4gICAgICAgICAgPC9jZHMtZHJvcGRvd24tbGlzdD5cbiAgICAgICAgPC9jZHMtZHJvcGRvd24+XG4gICAgICA8L2Nkcy1sYWJlbD5cblxuICAgICAgPGNkcy10b2dnbGVcbiAgICAgICAgW2xhYmVsXT1cIidkb3NzaWVyTWFuYWdlbWVudC5zdGF0dXNlcy52aXNpYmxlVGl0bGUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW29uVGV4dF09XCInZG9zc2llck1hbmFnZW1lbnQuc3RhdHVzZXMudmlzaWJsZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbb2ZmVGV4dF09XCInZG9zc2llck1hbmFnZW1lbnQuc3RhdHVzZXMuaW52aXNpYmxlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJvYnMuZGlzYWJsZWRcIlxuICAgICAgICBbY2hlY2tlZF09XCJ2aXNpYmxlSW5DYXNlTGlzdEJ5RGVmYXVsdD8udmFsdWVcIlxuICAgICAgICAoY2hlY2tlZENoYW5nZSk9XCJ0b2dnbGVDaGVja2VkQ2hhbmdlKCRldmVudClcIlxuICAgICAgPjwvY2RzLXRvZ2dsZT5cbiAgICA8L2Rpdj5cbiAgPC9mb3JtPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNidXR0b25zIGxldC1vYnM9XCJvYnNcIj5cbiAgPGJ1dHRvbiBjZHNCdXR0b249XCJzZWNvbmRhcnlcIiAoY2xpY2spPVwib25DbG9zZSgpXCIgW2Rpc2FibGVkXT1cIm9icy5kaXNhYmxlZFwiPlxuICAgIHt7ICdpbnRlcmZhY2UuY2FuY2VsJyB8IHRyYW5zbGF0ZSB9fVxuICA8L2J1dHRvbj5cblxuICA8YnV0dG9uXG4gICAgKm5nSWY9XCJvYnMuaXNBZGRcIlxuICAgIGNkc0J1dHRvbj1cInByaW1hcnlcIlxuICAgIFtkaXNhYmxlZF09XCJpbnZhbGlkIHx8IHByaXN0aW5lIHx8IG9icy5kaXNhYmxlZFwiXG4gICAgKGNsaWNrKT1cImFkZFN0YXR1cygpXCJcbiAgPlxuICAgIHt7ICdpbnRlcmZhY2UuYWRkJyB8IHRyYW5zbGF0ZSB9fVxuICA8L2J1dHRvbj5cblxuICA8YnV0dG9uXG4gICAgKm5nSWY9XCJvYnMuaXNFZGl0XCJcbiAgICBjZHNCdXR0b249XCJwcmltYXJ5XCJcbiAgICBbZGlzYWJsZWRdPVwiaW52YWxpZCB8fCBwcmlzdGluZSB8fCBvYnMuZGlzYWJsZWRcIlxuICAgIChjbGljayk9XCJlZGl0U3RhdHVzKClcIlxuICA+XG4gICAge3sgJ2ludGVyZmFjZS5zYXZlJyB8IHRyYW5zbGF0ZSB9fVxuICA8L2J1dHRvbj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|