@valtimo/dossier-management 11.3.2 → 12.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/dossier-management-assignee/dossier-management-assignee.component.mjs +7 -7
- package/esm2022/lib/components/dossier-management-connect-modal/dossier-management-connect-modal.component.mjs +7 -7
- package/esm2022/lib/components/dossier-management-create/dossier-management-create.component.mjs +119 -0
- package/esm2022/lib/components/dossier-management-detail/dossier-management-detail.component.mjs +34 -12
- package/esm2022/lib/components/dossier-management-detail-container/dossier-management-detail-container.component.mjs +114 -36
- package/esm2022/lib/components/dossier-management-detail-container-actions/dossier-management-detail-container-actions.component.mjs +159 -0
- package/esm2022/lib/components/dossier-management-document-definition/dossier-management-document-definition.component.mjs +147 -0
- package/esm2022/lib/components/dossier-management-list/dossier-management-list.component.mjs +33 -16
- package/esm2022/lib/components/dossier-management-list-columns/dossier-management-list-columns.component.mjs +12 -11
- package/esm2022/lib/components/dossier-management-processes/dossier-management-processes.component.mjs +7 -7
- package/esm2022/lib/components/dossier-management-remove-modal/dossier-management-remove-modal.component.mjs +7 -7
- package/esm2022/lib/components/dossier-management-search-fields/dossier-management-search-fields.component.mjs +56 -38
- package/esm2022/lib/components/dossier-management-statuses/dossier-management-status-modal/dossier-management-status-modal.component.mjs +285 -0
- package/esm2022/lib/components/dossier-management-statuses/dossier-management-statuses.component.mjs +154 -0
- package/esm2022/lib/components/dossier-management-tabs/dossier-management-add-tab-modal/dossier-management-add-tab-modal.component.mjs +41 -18
- package/esm2022/lib/components/dossier-management-tabs/dossier-management-edit-tab-modal/dossier-management-edit-tab-modal.component.mjs +13 -11
- package/esm2022/lib/components/dossier-management-tabs/dossier-management-tabs.component.mjs +59 -29
- package/esm2022/lib/components/dossier-management-tabs/tab-form/tab-form.component.mjs +49 -16
- package/esm2022/lib/components/dossier-management-upload/dossier-management-upload.component.mjs +14 -17
- package/esm2022/lib/components/dossier-management-upload/dossier-management-upload.constants.mjs +16 -1
- package/esm2022/lib/components/dossier-management-upload/step/dossier-management-upload-step.component.mjs +20 -5
- package/esm2022/lib/components/dossier-management-widget-configurators/collection/dossier-management-widget-collection.component.mjs +218 -0
- package/esm2022/lib/components/dossier-management-widget-configurators/custom/dossier-management-widget-custom.component.mjs +104 -0
- package/esm2022/lib/components/dossier-management-widget-configurators/fields/column/dossier-management-widget-fields-column.component.mjs +194 -0
- package/esm2022/lib/components/dossier-management-widget-configurators/fields/dossier-management-widget-fields.component.mjs +133 -0
- package/esm2022/lib/components/dossier-management-widget-configurators/formio/dossier-management-widget-formio.component.mjs +107 -0
- package/esm2022/lib/components/dossier-management-widget-configurators/index.mjs +21 -0
- package/esm2022/lib/components/dossier-management-widget-configurators/table/dossier-management-widget-table.component.mjs +96 -0
- package/esm2022/lib/components/dossier-management-widget-tab/dossier-management-widget-tab.component.mjs +160 -0
- package/esm2022/lib/components/dossier-management-widget-tab/editor/dossier-management-widgets-editor.component.mjs +208 -0
- package/esm2022/lib/components/dossier-management-widget-tab/json-editor/dossier-management-widgets-json-editor.component.mjs +190 -0
- package/esm2022/lib/components/dossier-management-widget-tab-edit-modal/dossier-management-widget-tab-edit-modal.mjs +110 -0
- package/esm2022/lib/components/dossier-management-widget-wizard/dossier-management-widget-wizard.component.mjs +160 -0
- package/esm2022/lib/components/dossier-management-widget-wizard/steps/index.mjs +26 -0
- package/esm2022/lib/components/dossier-management-widget-wizard/steps/widget-wizard-content-step/widget-wizard-content-step.component.mjs +52 -0
- package/esm2022/lib/components/dossier-management-widget-wizard/steps/widget-wizard-style-step/widget-wizard-style-step.component.mjs +41 -0
- package/esm2022/lib/components/dossier-management-widget-wizard/steps/widget-wizard-type-step/widget-wizard-type-step.component.mjs +45 -0
- package/esm2022/lib/components/dossier-management-widget-wizard/steps/widget-wizard-width-step/widget-wizard-width-step.component.mjs +43 -0
- package/esm2022/lib/dossier-management-routing.module.mjs +23 -8
- package/esm2022/lib/dossier-management.module.mjs +37 -18
- package/esm2022/lib/models/index.mjs +6 -2
- package/esm2022/lib/models/list-column.model.mjs +2 -2
- package/esm2022/lib/models/status.model.mjs +17 -0
- package/esm2022/lib/models/tab.enum.mjs +3 -2
- package/esm2022/lib/models/widget-content.model.mjs +17 -0
- package/esm2022/lib/models/widget-editor.model.mjs +30 -0
- package/esm2022/lib/models/widget-wizard.model.mjs +78 -0
- package/esm2022/lib/services/dossier-detail.service.mjs +18 -11
- package/esm2022/lib/services/dossier-export.service.mjs +7 -7
- package/esm2022/lib/services/dossier-management.service.mjs +38 -0
- package/esm2022/lib/services/index.mjs +9 -5
- package/esm2022/lib/services/tab-management.service.mjs +16 -10
- package/esm2022/lib/services/tab.service.mjs +26 -8
- package/esm2022/lib/services/widget-fields.service.mjs +104 -0
- package/esm2022/lib/services/widget-json-editor.service.mjs +31 -0
- package/esm2022/lib/services/widget-tab-management.service.mjs +26 -0
- package/esm2022/lib/services/widget-wizard.service.mjs +41 -0
- package/esm2022/public-api.mjs +2 -2
- package/fesm2022/valtimo-dossier-management.mjs +4668 -1796
- package/fesm2022/valtimo-dossier-management.mjs.map +1 -1
- package/lib/components/dossier-management-create/dossier-management-create.component.d.ts +26 -0
- package/lib/components/dossier-management-create/dossier-management-create.component.d.ts.map +1 -0
- package/lib/components/dossier-management-detail/dossier-management-detail.component.d.ts +9 -3
- package/lib/components/dossier-management-detail/dossier-management-detail.component.d.ts.map +1 -1
- package/lib/components/dossier-management-detail-container/dossier-management-detail-container.component.d.ts +27 -14
- package/lib/components/dossier-management-detail-container/dossier-management-detail-container.component.d.ts.map +1 -1
- package/lib/components/dossier-management-detail-container-actions/{dossier-management-detail-container-actions.d.ts → dossier-management-detail-container-actions.component.d.ts} +9 -3
- package/lib/components/dossier-management-detail-container-actions/dossier-management-detail-container-actions.component.d.ts.map +1 -0
- package/lib/components/dossier-management-document-definition/dossier-management-document-definition.component.d.ts +48 -0
- package/lib/components/dossier-management-document-definition/dossier-management-document-definition.component.d.ts.map +1 -0
- package/lib/components/dossier-management-list/dossier-management-list.component.d.ts +7 -4
- package/lib/components/dossier-management-list/dossier-management-list.component.d.ts.map +1 -1
- package/lib/components/dossier-management-list-columns/dossier-management-list-columns.component.d.ts +2 -2
- package/lib/components/dossier-management-list-columns/dossier-management-list-columns.component.d.ts.map +1 -1
- package/lib/components/dossier-management-search-fields/dossier-management-search-fields.component.d.ts +10 -4
- package/lib/components/dossier-management-search-fields/dossier-management-search-fields.component.d.ts.map +1 -1
- package/lib/components/dossier-management-statuses/dossier-management-status-modal/dossier-management-status-modal.component.d.ts +78 -0
- package/lib/components/dossier-management-statuses/dossier-management-status-modal/dossier-management-status-modal.component.d.ts.map +1 -0
- package/lib/components/dossier-management-statuses/dossier-management-statuses.component.d.ts +47 -0
- package/lib/components/dossier-management-statuses/dossier-management-statuses.component.d.ts.map +1 -0
- package/lib/components/dossier-management-tabs/dossier-management-add-tab-modal/dossier-management-add-tab-modal.component.d.ts +7 -9
- package/lib/components/dossier-management-tabs/dossier-management-add-tab-modal/dossier-management-add-tab-modal.component.d.ts.map +1 -1
- package/lib/components/dossier-management-tabs/dossier-management-edit-tab-modal/dossier-management-edit-tab-modal.component.d.ts.map +1 -1
- package/lib/components/dossier-management-tabs/dossier-management-tabs.component.d.ts +10 -5
- package/lib/components/dossier-management-tabs/dossier-management-tabs.component.d.ts.map +1 -1
- package/lib/components/dossier-management-tabs/tab-form/tab-form.component.d.ts +13 -4
- package/lib/components/dossier-management-tabs/tab-form/tab-form.component.d.ts.map +1 -1
- package/lib/components/dossier-management-upload/dossier-management-upload.component.d.ts +3 -5
- package/lib/components/dossier-management-upload/dossier-management-upload.component.d.ts.map +1 -1
- package/lib/components/dossier-management-upload/dossier-management-upload.constants.d.ts.map +1 -1
- package/lib/components/dossier-management-upload/step/dossier-management-upload-step.component.d.ts.map +1 -1
- package/lib/components/dossier-management-widget-configurators/collection/dossier-management-widget-collection.component.d.ts +57 -0
- package/lib/components/dossier-management-widget-configurators/collection/dossier-management-widget-collection.component.d.ts.map +1 -0
- package/lib/components/dossier-management-widget-configurators/custom/dossier-management-widget-custom.component.d.ts +40 -0
- package/lib/components/dossier-management-widget-configurators/custom/dossier-management-widget-custom.component.d.ts.map +1 -0
- package/lib/components/dossier-management-widget-configurators/fields/column/dossier-management-widget-fields-column.component.d.ts +50 -0
- package/lib/components/dossier-management-widget-configurators/fields/column/dossier-management-widget-fields-column.component.d.ts.map +1 -0
- package/lib/components/dossier-management-widget-configurators/fields/dossier-management-widget-fields.component.d.ts +38 -0
- package/lib/components/dossier-management-widget-configurators/fields/dossier-management-widget-fields.component.d.ts.map +1 -0
- package/lib/components/dossier-management-widget-configurators/formio/dossier-management-widget-formio.component.d.ts +41 -0
- package/lib/components/dossier-management-widget-configurators/formio/dossier-management-widget-formio.component.d.ts.map +1 -0
- package/lib/components/dossier-management-widget-configurators/index.d.ts +6 -0
- package/lib/components/dossier-management-widget-configurators/index.d.ts.map +1 -0
- package/lib/components/dossier-management-widget-configurators/table/dossier-management-widget-table.component.d.ts +32 -0
- package/lib/components/dossier-management-widget-configurators/table/dossier-management-widget-table.component.d.ts.map +1 -0
- package/lib/components/dossier-management-widget-tab/dossier-management-widget-tab.component.d.ts +50 -0
- package/lib/components/dossier-management-widget-tab/dossier-management-widget-tab.component.d.ts.map +1 -0
- package/lib/components/dossier-management-widget-tab/editor/dossier-management-widgets-editor.component.d.ts +40 -0
- package/lib/components/dossier-management-widget-tab/editor/dossier-management-widgets-editor.component.d.ts.map +1 -0
- package/lib/components/dossier-management-widget-tab/json-editor/dossier-management-widgets-json-editor.component.d.ts +47 -0
- package/lib/components/dossier-management-widget-tab/json-editor/dossier-management-widgets-json-editor.component.d.ts.map +1 -0
- package/lib/components/dossier-management-widget-tab-edit-modal/dossier-management-widget-tab-edit-modal.d.ts +32 -0
- package/lib/components/dossier-management-widget-tab-edit-modal/dossier-management-widget-tab-edit-modal.d.ts.map +1 -0
- package/lib/components/dossier-management-widget-wizard/dossier-management-widget-wizard.component.d.ts +34 -0
- package/lib/components/dossier-management-widget-wizard/dossier-management-widget-wizard.component.d.ts.map +1 -0
- package/lib/components/dossier-management-widget-wizard/steps/index.d.ts +6 -0
- package/lib/components/dossier-management-widget-wizard/steps/index.d.ts.map +1 -0
- package/lib/components/dossier-management-widget-wizard/steps/widget-wizard-content-step/widget-wizard-content-step.component.d.ts +15 -0
- package/lib/components/dossier-management-widget-wizard/steps/widget-wizard-content-step/widget-wizard-content-step.component.d.ts.map +1 -0
- package/lib/components/dossier-management-widget-wizard/steps/widget-wizard-style-step/widget-wizard-style-step.component.d.ts +15 -0
- package/lib/components/dossier-management-widget-wizard/steps/widget-wizard-style-step/widget-wizard-style-step.component.d.ts.map +1 -0
- package/lib/components/dossier-management-widget-wizard/steps/widget-wizard-type-step/widget-wizard-type-step.component.d.ts +15 -0
- package/lib/components/dossier-management-widget-wizard/steps/widget-wizard-type-step/widget-wizard-type-step.component.d.ts.map +1 -0
- package/lib/components/dossier-management-widget-wizard/steps/widget-wizard-width-step/widget-wizard-width-step.component.d.ts +16 -0
- package/lib/components/dossier-management-widget-wizard/steps/widget-wizard-width-step/widget-wizard-width-step.component.d.ts.map +1 -0
- package/lib/dossier-management-routing.module.d.ts.map +1 -1
- package/lib/dossier-management.module.d.ts +25 -22
- package/lib/dossier-management.module.d.ts.map +1 -1
- package/lib/models/index.d.ts +4 -0
- package/lib/models/index.d.ts.map +1 -1
- package/lib/models/status.model.d.ts +4 -0
- package/lib/models/status.model.d.ts.map +1 -0
- package/lib/models/tab.enum.d.ts +2 -1
- package/lib/models/tab.enum.d.ts.map +1 -1
- package/lib/models/widget-content.model.d.ts +5 -0
- package/lib/models/widget-content.model.d.ts.map +1 -0
- package/lib/models/widget-editor.model.d.ts +10 -0
- package/lib/models/widget-editor.model.d.ts.map +1 -0
- package/lib/models/widget-wizard.model.d.ts +29 -0
- package/lib/models/widget-wizard.model.d.ts.map +1 -0
- package/lib/services/dossier-detail.service.d.ts +4 -1
- package/lib/services/dossier-detail.service.d.ts.map +1 -1
- package/lib/services/{dossier-import.service.d.ts → dossier-management.service.d.ts} +4 -4
- package/lib/services/dossier-management.service.d.ts.map +1 -0
- package/lib/services/index.d.ts +7 -3
- package/lib/services/index.d.ts.map +1 -1
- package/lib/services/tab-management.service.d.ts +3 -1
- package/lib/services/tab-management.service.d.ts.map +1 -1
- package/lib/services/tab.service.d.ts +10 -4
- package/lib/services/tab.service.d.ts.map +1 -1
- package/lib/services/widget-fields.service.d.ts +17 -0
- package/lib/services/widget-fields.service.d.ts.map +1 -0
- package/lib/services/widget-json-editor.service.d.ts +7 -0
- package/lib/services/widget-json-editor.service.d.ts.map +1 -0
- package/lib/services/widget-tab-management.service.d.ts +16 -0
- package/lib/services/widget-tab-management.service.d.ts.map +1 -0
- package/lib/services/widget-wizard.service.d.ts +18 -0
- package/lib/services/widget-wizard.service.d.ts.map +1 -0
- package/package.json +3 -3
- package/esm2022/lib/components/dossier-management-detail-container-actions/dossier-management-detail-container-actions.mjs +0 -152
- package/esm2022/lib/components/dossier-management-document-definition/dossier-management-document-definition.mjs +0 -48
- package/esm2022/lib/components/dossier-management-link-process/dossier-management-link-process.component.mjs +0 -84
- package/esm2022/lib/services/dossier-import.service.mjs +0 -38
- package/lib/components/dossier-management-detail-container-actions/dossier-management-detail-container-actions.d.ts.map +0 -1
- package/lib/components/dossier-management-document-definition/dossier-management-document-definition.d.ts +0 -15
- package/lib/components/dossier-management-document-definition/dossier-management-document-definition.d.ts.map +0 -1
- package/lib/components/dossier-management-link-process/dossier-management-link-process.component.d.ts +0 -27
- package/lib/components/dossier-management-link-process/dossier-management-link-process.component.d.ts.map +0 -1
- package/lib/services/dossier-import.service.d.ts.map +0 -1
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { CommonModule } from '@angular/common';
|
|
17
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, signal, } from '@angular/core';
|
|
18
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
19
|
+
import { CarbonListModule, ConfirmationModalModule, ViewType, } from '@valtimo/components';
|
|
20
|
+
import { ButtonModule, IconModule, TabsModule } from 'carbon-components-angular';
|
|
21
|
+
import { BehaviorSubject, combineLatest, map, Subject, take } from 'rxjs';
|
|
22
|
+
import { AVAILABLE_WIDGETS, WidgetStyle, WidgetTypeTags } from '../../../models';
|
|
23
|
+
import { DossierManagementWidgetWizardComponent } from '../../dossier-management-widget-wizard/dossier-management-widget-wizard.component';
|
|
24
|
+
import * as i0 from "@angular/core";
|
|
25
|
+
import * as i1 from "@valtimo/components";
|
|
26
|
+
import * as i2 from "@ngx-translate/core";
|
|
27
|
+
import * as i3 from "../../../services";
|
|
28
|
+
import * as i4 from "@angular/common";
|
|
29
|
+
import * as i5 from "carbon-components-angular";
|
|
30
|
+
export class DossierManagementWidgetsEditorComponent {
|
|
31
|
+
set currentWidgetTab(value) {
|
|
32
|
+
if (!value)
|
|
33
|
+
return;
|
|
34
|
+
this._currentWidgetTab = value;
|
|
35
|
+
this._items$.next(value?.widgets);
|
|
36
|
+
this._usedKeys = value?.widgets.map(widget => widget.key);
|
|
37
|
+
this.dragAndDropDisabled.set(false);
|
|
38
|
+
}
|
|
39
|
+
get currentWidgetTab() {
|
|
40
|
+
return this._currentWidgetTab;
|
|
41
|
+
}
|
|
42
|
+
constructor(keyGeneratorService, translateService, widgetTabManagementService, widgetWizardService) {
|
|
43
|
+
this.keyGeneratorService = keyGeneratorService;
|
|
44
|
+
this.translateService = translateService;
|
|
45
|
+
this.widgetTabManagementService = widgetTabManagementService;
|
|
46
|
+
this.widgetWizardService = widgetWizardService;
|
|
47
|
+
this.changeSaved = new EventEmitter();
|
|
48
|
+
this.FIELDS = [
|
|
49
|
+
{
|
|
50
|
+
key: 'title',
|
|
51
|
+
label: 'interface.title',
|
|
52
|
+
viewType: ViewType.TEXT,
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
key: 'tags',
|
|
56
|
+
label: 'widgetTabManagement.columns.type',
|
|
57
|
+
viewType: ViewType.TAGS,
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
key: 'key',
|
|
61
|
+
label: 'interface.key',
|
|
62
|
+
viewType: ViewType.TEXT,
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
key: 'widthTranslation',
|
|
66
|
+
label: 'widgetTabManagement.columns.width',
|
|
67
|
+
viewType: ViewType.TEXT,
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
key: 'highContrast',
|
|
71
|
+
label: 'widgetTabManagement.columns.highContrast',
|
|
72
|
+
viewType: ViewType.BOOLEAN,
|
|
73
|
+
},
|
|
74
|
+
];
|
|
75
|
+
this.ACTION_ITEMS = [
|
|
76
|
+
{
|
|
77
|
+
label: 'interface.edit',
|
|
78
|
+
callback: this.editWidget.bind(this),
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
label: 'interface.delete',
|
|
82
|
+
callback: this.deleteWidget.bind(this),
|
|
83
|
+
type: 'danger',
|
|
84
|
+
},
|
|
85
|
+
];
|
|
86
|
+
this._items$ = new BehaviorSubject([]);
|
|
87
|
+
this.items$ = combineLatest([
|
|
88
|
+
this._items$,
|
|
89
|
+
this.translateService.stream('key'),
|
|
90
|
+
]).pipe(map(([items]) => items.map(item => ({
|
|
91
|
+
...item,
|
|
92
|
+
widthTranslation: this.translateService.instant(this.getWidthTranslationKey(item.width)),
|
|
93
|
+
tags: [
|
|
94
|
+
{
|
|
95
|
+
content: this.translateService.instant(`widgetTabManagement.types.${item.type}.title`),
|
|
96
|
+
type: WidgetTypeTags[item.type],
|
|
97
|
+
},
|
|
98
|
+
],
|
|
99
|
+
}))));
|
|
100
|
+
this.isWizardOpen$ = new BehaviorSubject(false);
|
|
101
|
+
this.isEditMode = this.widgetWizardService.editMode;
|
|
102
|
+
this.deleteModalOpen$ = new BehaviorSubject(false);
|
|
103
|
+
this.deleteRowKey$ = new Subject();
|
|
104
|
+
this.dragAndDropDisabled = signal(false);
|
|
105
|
+
}
|
|
106
|
+
editWidget(tabWidget) {
|
|
107
|
+
this.widgetWizardService.widgetTitle.set(tabWidget.title);
|
|
108
|
+
this.widgetWizardService.widgetStyle.set(tabWidget.highContrast ? WidgetStyle.HIGH_CONTRAST : WidgetStyle.DEFAULT);
|
|
109
|
+
this.widgetWizardService.widgetWidth.set(tabWidget.width);
|
|
110
|
+
this.widgetWizardService.selectedWidget.set(AVAILABLE_WIDGETS.find(available => available.type === tabWidget.type) ?? null);
|
|
111
|
+
this.widgetWizardService.widgetContent.set(tabWidget.properties);
|
|
112
|
+
this.widgetWizardService.editMode.set(true);
|
|
113
|
+
this.widgetWizardService.widgetKey.set(tabWidget.key);
|
|
114
|
+
this.isWizardOpen$.next(true);
|
|
115
|
+
}
|
|
116
|
+
openAddModal() {
|
|
117
|
+
this.isWizardOpen$.next(true);
|
|
118
|
+
}
|
|
119
|
+
onDeleteConfirm(widgetKey) {
|
|
120
|
+
this.widgetTabManagementService
|
|
121
|
+
.updateWidgets({
|
|
122
|
+
...this.currentWidgetTab,
|
|
123
|
+
widgets: this.currentWidgetTab.widgets.filter(widget => widget.key !== widgetKey),
|
|
124
|
+
})
|
|
125
|
+
.pipe(take(1))
|
|
126
|
+
.subscribe(() => {
|
|
127
|
+
this.changeSaved.emit();
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
onCloseEvent(widgetResult, existingWidgets) {
|
|
131
|
+
this.isWizardOpen$.next(false);
|
|
132
|
+
this.widgetWizardService.resetWizard();
|
|
133
|
+
if (!widgetResult)
|
|
134
|
+
return;
|
|
135
|
+
this.widgetTabManagementService
|
|
136
|
+
.updateWidgets({
|
|
137
|
+
caseDefinitionName: this.documentDefinitionName,
|
|
138
|
+
key: this.tabWidgetKey,
|
|
139
|
+
widgets: !!widgetResult.key
|
|
140
|
+
? existingWidgets.map((widget) => widget.key === widgetResult.key ? widgetResult : widget)
|
|
141
|
+
: [
|
|
142
|
+
...existingWidgets,
|
|
143
|
+
{
|
|
144
|
+
...widgetResult,
|
|
145
|
+
key: this.keyGeneratorService.getUniqueKey(widgetResult.title, this._usedKeys),
|
|
146
|
+
},
|
|
147
|
+
],
|
|
148
|
+
})
|
|
149
|
+
.pipe(take(1))
|
|
150
|
+
.subscribe(() => {
|
|
151
|
+
this.changeSaved.emit();
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
onItemsReordered(widgets) {
|
|
155
|
+
this.dragAndDropDisabled.set(true);
|
|
156
|
+
this.widgetTabManagementService
|
|
157
|
+
.updateWidgets({
|
|
158
|
+
...this.currentWidgetTab,
|
|
159
|
+
widgets,
|
|
160
|
+
})
|
|
161
|
+
.pipe(take(1))
|
|
162
|
+
.subscribe(() => {
|
|
163
|
+
this.changeSaved.emit();
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
deleteWidget(tabWidget) {
|
|
167
|
+
this.deleteRowKey$.next(tabWidget.key);
|
|
168
|
+
this.deleteModalOpen$.next(true);
|
|
169
|
+
}
|
|
170
|
+
getWidthTranslationKey(width) {
|
|
171
|
+
switch (width) {
|
|
172
|
+
case 1:
|
|
173
|
+
return 'widgetTabManagement.width.quarter.title';
|
|
174
|
+
case 2:
|
|
175
|
+
return 'widgetTabManagement.width.half.title';
|
|
176
|
+
case 3:
|
|
177
|
+
return 'widgetTabManagement.width.threeQuarters.title';
|
|
178
|
+
case 4:
|
|
179
|
+
return 'widgetTabManagement.width.fullWidth.title';
|
|
180
|
+
default:
|
|
181
|
+
return '-';
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: DossierManagementWidgetsEditorComponent, deps: [{ token: i1.KeyGeneratorService }, { token: i2.TranslateService }, { token: i3.WidgetTabManagementService }, { token: i3.WidgetWizardService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
185
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: DossierManagementWidgetsEditorComponent, isStandalone: true, selector: "valtimo-dossier-management-widgets-editor", inputs: { documentDefinitionName: "documentDefinitionName", tabWidgetKey: "tabWidgetKey", currentWidgetTab: "currentWidgetTab" }, outputs: { changeSaved: "changeSaved" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n isWizardOpen: isWizardOpen$ | async,\n items: items$ | async\n } as obs\"\n>\n <valtimo-carbon-list\n [actionItems]=\"ACTION_ITEMS\"\n [fields]=\"FIELDS\"\n [header]=\"false\"\n [items]=\"obs.items\"\n [dragAndDrop]=\"true\"\n [dragAndDropDisabled]=\"dragAndDropDisabled()\"\n (itemsReordered)=\"onItemsReordered($event)\"\n (rowClicked)=\"editWidget($event)\"\n >\n <ng-container carbonToolbarContent>\n <ng-container *ngTemplateOutlet=\"addWidgetButton\"></ng-container>\n </ng-container>\n\n <valtimo-no-results\n [action]=\"addWidgetButton\"\n [description]=\"'widgetTabManagement.list.noResults.description' | translate\"\n [title]=\"'widgetTabManagement.list.noResults.title' | translate\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n\n <ng-template #addWidgetButton>\n <button cdsButton=\"primary\" (click)=\"openAddModal()\">\n {{ 'widgetTabManagement.list.add' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </ng-template>\n\n <valtimo-dossier-management-widget-wizard\n [editMode]=\"isEditMode()\"\n [open]=\"obs.isWizardOpen\"\n (closeEvent)=\"onCloseEvent($event, obs.items)\"\n ></valtimo-dossier-management-widget-wizard>\n\n <valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"Are you sure you want to delete this widget?\"\n [outputOnConfirm]=\"deleteRowKey$ | async\"\n [showModalSubject$]=\"deleteModalOpen$\"\n titleTranslationKey=\"interface.delete\"\n (confirmEvent)=\"onDeleteConfirm($event)\"\n ></valtimo-confirmation-modal>\n</ng-container>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: CarbonListModule }, { kind: "component", type: i1.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "actions", "actionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i1.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i5.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i5.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "ngmodule", type: TabsModule }, { kind: "component", type: DossierManagementWidgetWizardComponent, selector: "valtimo-dossier-management-widget-wizard", inputs: ["open", "editMode"], outputs: ["closeEvent"] }, { kind: "ngmodule", type: ConfirmationModalModule }, { kind: "component", type: i1.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "showOptionalButton", "optionalButtonText", "optionalButtonTextTranslationKey", "optionalButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm", "outputOnOptional", "spacerAfterCancelButton"], outputs: ["confirmEvent", "optionalEvent", "cancelEvent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
186
|
+
}
|
|
187
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: DossierManagementWidgetsEditorComponent, decorators: [{
|
|
188
|
+
type: Component,
|
|
189
|
+
args: [{ selector: 'valtimo-dossier-management-widgets-editor', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
190
|
+
CommonModule,
|
|
191
|
+
TranslateModule,
|
|
192
|
+
CarbonListModule,
|
|
193
|
+
ButtonModule,
|
|
194
|
+
IconModule,
|
|
195
|
+
TabsModule,
|
|
196
|
+
DossierManagementWidgetWizardComponent,
|
|
197
|
+
ConfirmationModalModule,
|
|
198
|
+
], template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n isWizardOpen: isWizardOpen$ | async,\n items: items$ | async\n } as obs\"\n>\n <valtimo-carbon-list\n [actionItems]=\"ACTION_ITEMS\"\n [fields]=\"FIELDS\"\n [header]=\"false\"\n [items]=\"obs.items\"\n [dragAndDrop]=\"true\"\n [dragAndDropDisabled]=\"dragAndDropDisabled()\"\n (itemsReordered)=\"onItemsReordered($event)\"\n (rowClicked)=\"editWidget($event)\"\n >\n <ng-container carbonToolbarContent>\n <ng-container *ngTemplateOutlet=\"addWidgetButton\"></ng-container>\n </ng-container>\n\n <valtimo-no-results\n [action]=\"addWidgetButton\"\n [description]=\"'widgetTabManagement.list.noResults.description' | translate\"\n [title]=\"'widgetTabManagement.list.noResults.title' | translate\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n\n <ng-template #addWidgetButton>\n <button cdsButton=\"primary\" (click)=\"openAddModal()\">\n {{ 'widgetTabManagement.list.add' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </ng-template>\n\n <valtimo-dossier-management-widget-wizard\n [editMode]=\"isEditMode()\"\n [open]=\"obs.isWizardOpen\"\n (closeEvent)=\"onCloseEvent($event, obs.items)\"\n ></valtimo-dossier-management-widget-wizard>\n\n <valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"interface.delete\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"Are you sure you want to delete this widget?\"\n [outputOnConfirm]=\"deleteRowKey$ | async\"\n [showModalSubject$]=\"deleteModalOpen$\"\n titleTranslationKey=\"interface.delete\"\n (confirmEvent)=\"onDeleteConfirm($event)\"\n ></valtimo-confirmation-modal>\n</ng-container>\n" }]
|
|
199
|
+
}], ctorParameters: () => [{ type: i1.KeyGeneratorService }, { type: i2.TranslateService }, { type: i3.WidgetTabManagementService }, { type: i3.WidgetWizardService }], propDecorators: { documentDefinitionName: [{
|
|
200
|
+
type: Input
|
|
201
|
+
}], tabWidgetKey: [{
|
|
202
|
+
type: Input
|
|
203
|
+
}], currentWidgetTab: [{
|
|
204
|
+
type: Input
|
|
205
|
+
}], changeSaved: [{
|
|
206
|
+
type: Output
|
|
207
|
+
}] } });
|
|
208
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldHMtZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci1tYW5hZ2VtZW50L3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LXRhYi9lZGl0b3IvZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldHMtZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci1tYW5hZ2VtZW50L3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LXRhYi9lZGl0b3IvZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldHMtZWRpdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsZUFBZSxFQUFtQixNQUFNLHFCQUFxQixDQUFDO0FBQ3RFLE9BQU8sRUFHTCxnQkFBZ0IsRUFFaEIsdUJBQXVCLEVBRXZCLFFBQVEsR0FDVCxNQUFNLHFCQUFxQixDQUFDO0FBRTdCLE9BQU8sRUFBQyxZQUFZLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQy9FLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBYyxPQUFPLEVBQUUsSUFBSSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3BGLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFL0UsT0FBTyxFQUFDLHNDQUFzQyxFQUFDLE1BQU0sbUZBQW1GLENBQUM7Ozs7Ozs7QUFrQnpJLE1BQU0sT0FBTyx1Q0FBdUM7SUFJbEQsSUFBb0IsZ0JBQWdCLENBQUMsS0FBcUI7UUFDeEQsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPO1FBRW5CLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBQ0QsSUFBVyxnQkFBZ0I7UUFDekIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDaEMsQ0FBQztJQXdFRCxZQUNtQixtQkFBd0MsRUFDeEMsZ0JBQWtDLEVBQ2xDLDBCQUFzRCxFQUN0RCxtQkFBd0M7UUFIeEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLCtCQUEwQixHQUExQiwwQkFBMEIsQ0FBNEI7UUFDdEQsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQTFFakMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBRTNDLFdBQU0sR0FBbUI7WUFDdkM7Z0JBQ0UsR0FBRyxFQUFFLE9BQU87Z0JBQ1osS0FBSyxFQUFFLGlCQUFpQjtnQkFDeEIsUUFBUSxFQUFFLFFBQVEsQ0FBQyxJQUFJO2FBQ3hCO1lBQ0Q7Z0JBQ0UsR0FBRyxFQUFFLE1BQU07Z0JBQ1gsS0FBSyxFQUFFLGtDQUFrQztnQkFDekMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxJQUFJO2FBQ3hCO1lBQ0Q7Z0JBQ0UsR0FBRyxFQUFFLEtBQUs7Z0JBQ1YsS0FBSyxFQUFFLGVBQWU7Z0JBQ3RCLFFBQVEsRUFBRSxRQUFRLENBQUMsSUFBSTthQUN4QjtZQUNEO2dCQUNFLEdBQUcsRUFBRSxrQkFBa0I7Z0JBQ3ZCLEtBQUssRUFBRSxtQ0FBbUM7Z0JBQzFDLFFBQVEsRUFBRSxRQUFRLENBQUMsSUFBSTthQUN4QjtZQUNEO2dCQUNFLEdBQUcsRUFBRSxjQUFjO2dCQUNuQixLQUFLLEVBQUUsMENBQTBDO2dCQUNqRCxRQUFRLEVBQUUsUUFBUSxDQUFDLE9BQU87YUFDM0I7U0FDRixDQUFDO1FBRWMsaUJBQVksR0FBaUI7WUFDM0M7Z0JBQ0UsS0FBSyxFQUFFLGdCQUFnQjtnQkFDdkIsUUFBUSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQzthQUNyQztZQUNEO2dCQUNFLEtBQUssRUFBRSxrQkFBa0I7Z0JBQ3pCLFFBQVEsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ3RDLElBQUksRUFBRSxRQUFRO2FBQ2Y7U0FDRixDQUFDO1FBRWUsWUFBTyxHQUFHLElBQUksZUFBZSxDQUFtQixFQUFFLENBQUMsQ0FBQztRQUNyRCxXQUFNLEdBQWlDLGFBQWEsQ0FBQztZQUNuRSxJQUFJLENBQUMsT0FBTztZQUNaLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1NBQ3BDLENBQUMsQ0FBQyxJQUFJLENBQ0wsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLENBQ2QsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDakIsR0FBRyxJQUFJO1lBQ1AsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hGLElBQUksRUFBRTtnQkFDSjtvQkFDRSxPQUFPLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyw2QkFBNkIsSUFBSSxDQUFDLElBQUksUUFBUSxDQUFDO29CQUN0RixJQUFJLEVBQUUsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7aUJBQ2hDO2FBQ0Y7U0FDRixDQUFDLENBQUMsQ0FDSixDQUNGLENBQUM7UUFFYyxrQkFBYSxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3BELGVBQVUsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDO1FBQy9DLHFCQUFnQixHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQ3ZELGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQUV0Qyx3QkFBbUIsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFTakQsQ0FBQztJQUVHLFVBQVUsQ0FBQyxTQUFxQjtRQUNyQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQ3RDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQ3pFLENBQUM7UUFDRixJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQ3pDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FDL0UsQ0FBQztRQUNGLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVNLFlBQVk7UUFDakIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVNLGVBQWUsQ0FBQyxTQUFpQjtRQUN0QyxJQUFJLENBQUMsMEJBQTBCO2FBQzVCLGFBQWEsQ0FBQztZQUNiLEdBQUcsSUFBSSxDQUFDLGdCQUFnQjtZQUN4QixPQUFPLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLFNBQVMsQ0FBQztTQUNsRixDQUFDO2FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNiLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVNLFlBQVksQ0FBQyxZQUE2QixFQUFFLGVBQTZCO1FBQzlFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUV2QyxJQUFJLENBQUMsWUFBWTtZQUFFLE9BQU87UUFFMUIsSUFBSSxDQUFDLDBCQUEwQjthQUM1QixhQUFhLENBQUM7WUFDYixrQkFBa0IsRUFBRSxJQUFJLENBQUMsc0JBQXNCO1lBQy9DLEdBQUcsRUFBRSxJQUFJLENBQUMsWUFBWTtZQUN0QixPQUFPLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxHQUFHO2dCQUN6QixDQUFDLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQXVCLEVBQUUsRUFBRSxDQUM5QyxNQUFNLENBQUMsR0FBRyxLQUFLLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUN4RDtnQkFDSCxDQUFDLENBQUM7b0JBQ0UsR0FBRyxlQUFlO29CQUNsQjt3QkFDRSxHQUFHLFlBQVk7d0JBQ2YsR0FBRyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDO3FCQUMvRTtpQkFDRjtTQUNOLENBQUM7YUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2IsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsT0FBcUI7UUFDM0MsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVuQyxJQUFJLENBQUMsMEJBQTBCO2FBQzVCLGFBQWEsQ0FBQztZQUNiLEdBQUcsSUFBSSxDQUFDLGdCQUFnQjtZQUN4QixPQUFPO1NBQ1IsQ0FBQzthQUNELElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDYixTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxZQUFZLENBQUMsU0FBYztRQUNqQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRU8sc0JBQXNCLENBQUMsS0FBYTtRQUMxQyxRQUFRLEtBQUssRUFBRSxDQUFDO1lBQ2QsS0FBSyxDQUFDO2dCQUNKLE9BQU8seUNBQXlDLENBQUM7WUFDbkQsS0FBSyxDQUFDO2dCQUNKLE9BQU8sc0NBQXNDLENBQUM7WUFDaEQsS0FBSyxDQUFDO2dCQUNKLE9BQU8sK0NBQStDLENBQUM7WUFDekQsS0FBSyxDQUFDO2dCQUNKLE9BQU8sMkNBQTJDLENBQUM7WUFDckQ7Z0JBQ0UsT0FBTyxHQUFHLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQzs4R0F4TFUsdUNBQXVDO2tHQUF2Qyx1Q0FBdUMsZ1JDMURwRCxrM0VBbUVBLDJDRG5CSSxZQUFZLDhWQUNaLGVBQWUsMkZBQ2YsZ0JBQWdCLHcxQkFDaEIsWUFBWSxnTUFDWixVQUFVLDROQUNWLFVBQVUsK0JBQ1Ysc0NBQXNDLDJJQUN0Qyx1QkFBdUI7OzJGQUdkLHVDQUF1QztrQkFoQm5ELFNBQVM7K0JBQ0UsMkNBQTJDLG1CQUVwQyx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixZQUFZO3dCQUNaLFVBQVU7d0JBQ1YsVUFBVTt3QkFDVixzQ0FBc0M7d0JBQ3RDLHVCQUF1QjtxQkFDeEI7a01BR2Usc0JBQXNCO3NCQUFyQyxLQUFLO2dCQUNVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBRWMsZ0JBQWdCO3NCQUFuQyxLQUFLO2dCQVlvQixXQUFXO3NCQUFwQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1RyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge1xuICBBY3Rpb25JdGVtLFxuICBDYXJib25MaXN0SXRlbSxcbiAgQ2FyYm9uTGlzdE1vZHVsZSxcbiAgQ29sdW1uQ29uZmlnLFxuICBDb25maXJtYXRpb25Nb2RhbE1vZHVsZSxcbiAgS2V5R2VuZXJhdG9yU2VydmljZSxcbiAgVmlld1R5cGUsXG59IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtCYXNpY0Nhc2VXaWRnZXQsIENhc2VXaWRnZXQsIENhc2VXaWRnZXRzUmVzfSBmcm9tICdAdmFsdGltby9kb3NzaWVyJztcbmltcG9ydCB7QnV0dG9uTW9kdWxlLCBJY29uTW9kdWxlLCBUYWJzTW9kdWxlfSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBtYXAsIE9ic2VydmFibGUsIFN1YmplY3QsIHRha2V9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtBVkFJTEFCTEVfV0lER0VUUywgV2lkZ2V0U3R5bGUsIFdpZGdldFR5cGVUYWdzfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtXaWRnZXRUYWJNYW5hZ2VtZW50U2VydmljZSwgV2lkZ2V0V2l6YXJkU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHtEb3NzaWVyTWFuYWdlbWVudFdpZGdldFdpemFyZENvbXBvbmVudH0gZnJvbSAnLi4vLi4vZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC13aXphcmQvZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldC13aXphcmQuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0cy1lZGl0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldHMtZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIENhcmJvbkxpc3RNb2R1bGUsXG4gICAgQnV0dG9uTW9kdWxlLFxuICAgIEljb25Nb2R1bGUsXG4gICAgVGFic01vZHVsZSxcbiAgICBEb3NzaWVyTWFuYWdlbWVudFdpZGdldFdpemFyZENvbXBvbmVudCxcbiAgICBDb25maXJtYXRpb25Nb2RhbE1vZHVsZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRG9zc2llck1hbmFnZW1lbnRXaWRnZXRzRWRpdG9yQ29tcG9uZW50IHtcbiAgQElucHV0KCkgcHVibGljIGRvY3VtZW50RGVmaW5pdGlvbk5hbWU6IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIHRhYldpZGdldEtleTogc3RyaW5nO1xuICBwcml2YXRlIF9jdXJyZW50V2lkZ2V0VGFiOiBDYXNlV2lkZ2V0c1JlcztcbiAgQElucHV0KCkgcHVibGljIHNldCBjdXJyZW50V2lkZ2V0VGFiKHZhbHVlOiBDYXNlV2lkZ2V0c1Jlcykge1xuICAgIGlmICghdmFsdWUpIHJldHVybjtcblxuICAgIHRoaXMuX2N1cnJlbnRXaWRnZXRUYWIgPSB2YWx1ZTtcbiAgICB0aGlzLl9pdGVtcyQubmV4dCh2YWx1ZT8ud2lkZ2V0cyk7XG4gICAgdGhpcy5fdXNlZEtleXMgPSB2YWx1ZT8ud2lkZ2V0cy5tYXAod2lkZ2V0ID0+IHdpZGdldC5rZXkpO1xuICAgIHRoaXMuZHJhZ0FuZERyb3BEaXNhYmxlZC5zZXQoZmFsc2UpO1xuICB9XG4gIHB1YmxpYyBnZXQgY3VycmVudFdpZGdldFRhYigpOiBDYXNlV2lkZ2V0c1JlcyB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRXaWRnZXRUYWI7XG4gIH1cblxuICBAT3V0cHV0KCkgcHVibGljIHJlYWRvbmx5IGNoYW5nZVNhdmVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHB1YmxpYyByZWFkb25seSBGSUVMRFM6IENvbHVtbkNvbmZpZ1tdID0gW1xuICAgIHtcbiAgICAgIGtleTogJ3RpdGxlJyxcbiAgICAgIGxhYmVsOiAnaW50ZXJmYWNlLnRpdGxlJyxcbiAgICAgIHZpZXdUeXBlOiBWaWV3VHlwZS5URVhULFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAndGFncycsXG4gICAgICBsYWJlbDogJ3dpZGdldFRhYk1hbmFnZW1lbnQuY29sdW1ucy50eXBlJyxcbiAgICAgIHZpZXdUeXBlOiBWaWV3VHlwZS5UQUdTLFxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAna2V5JyxcbiAgICAgIGxhYmVsOiAnaW50ZXJmYWNlLmtleScsXG4gICAgICB2aWV3VHlwZTogVmlld1R5cGUuVEVYVCxcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ3dpZHRoVHJhbnNsYXRpb24nLFxuICAgICAgbGFiZWw6ICd3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbHVtbnMud2lkdGgnLFxuICAgICAgdmlld1R5cGU6IFZpZXdUeXBlLlRFWFQsXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdoaWdoQ29udHJhc3QnLFxuICAgICAgbGFiZWw6ICd3aWRnZXRUYWJNYW5hZ2VtZW50LmNvbHVtbnMuaGlnaENvbnRyYXN0JyxcbiAgICAgIHZpZXdUeXBlOiBWaWV3VHlwZS5CT09MRUFOLFxuICAgIH0sXG4gIF07XG5cbiAgcHVibGljIHJlYWRvbmx5IEFDVElPTl9JVEVNUzogQWN0aW9uSXRlbVtdID0gW1xuICAgIHtcbiAgICAgIGxhYmVsOiAnaW50ZXJmYWNlLmVkaXQnLFxuICAgICAgY2FsbGJhY2s6IHRoaXMuZWRpdFdpZGdldC5iaW5kKHRoaXMpLFxuICAgIH0sXG4gICAge1xuICAgICAgbGFiZWw6ICdpbnRlcmZhY2UuZGVsZXRlJyxcbiAgICAgIGNhbGxiYWNrOiB0aGlzLmRlbGV0ZVdpZGdldC5iaW5kKHRoaXMpLFxuICAgICAgdHlwZTogJ2RhbmdlcicsXG4gICAgfSxcbiAgXTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9pdGVtcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENhcmJvbkxpc3RJdGVtW10+KFtdKTtcbiAgcHVibGljIHJlYWRvbmx5IGl0ZW1zJDogT2JzZXJ2YWJsZTxDYXJib25MaXN0SXRlbVtdPiA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuX2l0ZW1zJCxcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc3RyZWFtKCdrZXknKSxcbiAgXSkucGlwZShcbiAgICBtYXAoKFtpdGVtc10pID0+XG4gICAgICBpdGVtcy5tYXAoaXRlbSA9PiAoe1xuICAgICAgICAuLi5pdGVtLFxuICAgICAgICB3aWR0aFRyYW5zbGF0aW9uOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCh0aGlzLmdldFdpZHRoVHJhbnNsYXRpb25LZXkoaXRlbS53aWR0aCkpLFxuICAgICAgICB0YWdzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29udGVudDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoYHdpZGdldFRhYk1hbmFnZW1lbnQudHlwZXMuJHtpdGVtLnR5cGV9LnRpdGxlYCksXG4gICAgICAgICAgICB0eXBlOiBXaWRnZXRUeXBlVGFnc1tpdGVtLnR5cGVdLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KSlcbiAgICApXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGlzV2l6YXJkT3BlbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IGlzRWRpdE1vZGUgPSB0aGlzLndpZGdldFdpemFyZFNlcnZpY2UuZWRpdE1vZGU7XG4gIHB1YmxpYyByZWFkb25seSBkZWxldGVNb2RhbE9wZW4kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBkZWxldGVSb3dLZXkkID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xuXG4gIHB1YmxpYyByZWFkb25seSBkcmFnQW5kRHJvcERpc2FibGVkID0gc2lnbmFsKGZhbHNlKTtcblxuICBwcml2YXRlIF91c2VkS2V5czogc3RyaW5nW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBrZXlHZW5lcmF0b3JTZXJ2aWNlOiBLZXlHZW5lcmF0b3JTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHdpZGdldFRhYk1hbmFnZW1lbnRTZXJ2aWNlOiBXaWRnZXRUYWJNYW5hZ2VtZW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHdpZGdldFdpemFyZFNlcnZpY2U6IFdpZGdldFdpemFyZFNlcnZpY2VcbiAgKSB7fVxuXG4gIHB1YmxpYyBlZGl0V2lkZ2V0KHRhYldpZGdldDogQ2FzZVdpZGdldCk6IHZvaWQge1xuICAgIHRoaXMud2lkZ2V0V2l6YXJkU2VydmljZS53aWRnZXRUaXRsZS5zZXQodGFiV2lkZ2V0LnRpdGxlKTtcbiAgICB0aGlzLndpZGdldFdpemFyZFNlcnZpY2Uud2lkZ2V0U3R5bGUuc2V0KFxuICAgICAgdGFiV2lkZ2V0LmhpZ2hDb250cmFzdCA/IFdpZGdldFN0eWxlLkhJR0hfQ09OVFJBU1QgOiBXaWRnZXRTdHlsZS5ERUZBVUxUXG4gICAgKTtcbiAgICB0aGlzLndpZGdldFdpemFyZFNlcnZpY2Uud2lkZ2V0V2lkdGguc2V0KHRhYldpZGdldC53aWR0aCk7XG4gICAgdGhpcy53aWRnZXRXaXphcmRTZXJ2aWNlLnNlbGVjdGVkV2lkZ2V0LnNldChcbiAgICAgIEFWQUlMQUJMRV9XSURHRVRTLmZpbmQoYXZhaWxhYmxlID0+IGF2YWlsYWJsZS50eXBlID09PSB0YWJXaWRnZXQudHlwZSkgPz8gbnVsbFxuICAgICk7XG4gICAgdGhpcy53aWRnZXRXaXphcmRTZXJ2aWNlLndpZGdldENvbnRlbnQuc2V0KHRhYldpZGdldC5wcm9wZXJ0aWVzKTtcbiAgICB0aGlzLndpZGdldFdpemFyZFNlcnZpY2UuZWRpdE1vZGUuc2V0KHRydWUpO1xuICAgIHRoaXMud2lkZ2V0V2l6YXJkU2VydmljZS53aWRnZXRLZXkuc2V0KHRhYldpZGdldC5rZXkpO1xuICAgIHRoaXMuaXNXaXphcmRPcGVuJC5uZXh0KHRydWUpO1xuICB9XG5cbiAgcHVibGljIG9wZW5BZGRNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzV2l6YXJkT3BlbiQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkRlbGV0ZUNvbmZpcm0od2lkZ2V0S2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLndpZGdldFRhYk1hbmFnZW1lbnRTZXJ2aWNlXG4gICAgICAudXBkYXRlV2lkZ2V0cyh7XG4gICAgICAgIC4uLnRoaXMuY3VycmVudFdpZGdldFRhYixcbiAgICAgICAgd2lkZ2V0czogdGhpcy5jdXJyZW50V2lkZ2V0VGFiLndpZGdldHMuZmlsdGVyKHdpZGdldCA9PiB3aWRnZXQua2V5ICE9PSB3aWRnZXRLZXkpLFxuICAgICAgfSlcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5jaGFuZ2VTYXZlZC5lbWl0KCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNsb3NlRXZlbnQod2lkZ2V0UmVzdWx0OiBCYXNpY0Nhc2VXaWRnZXQsIGV4aXN0aW5nV2lkZ2V0czogQ2FzZVdpZGdldFtdKTogdm9pZCB7XG4gICAgdGhpcy5pc1dpemFyZE9wZW4kLm5leHQoZmFsc2UpO1xuICAgIHRoaXMud2lkZ2V0V2l6YXJkU2VydmljZS5yZXNldFdpemFyZCgpO1xuXG4gICAgaWYgKCF3aWRnZXRSZXN1bHQpIHJldHVybjtcblxuICAgIHRoaXMud2lkZ2V0VGFiTWFuYWdlbWVudFNlcnZpY2VcbiAgICAgIC51cGRhdGVXaWRnZXRzKHtcbiAgICAgICAgY2FzZURlZmluaXRpb25OYW1lOiB0aGlzLmRvY3VtZW50RGVmaW5pdGlvbk5hbWUsXG4gICAgICAgIGtleTogdGhpcy50YWJXaWRnZXRLZXksXG4gICAgICAgIHdpZGdldHM6ICEhd2lkZ2V0UmVzdWx0LmtleVxuICAgICAgICAgID8gZXhpc3RpbmdXaWRnZXRzLm1hcCgod2lkZ2V0OiBCYXNpY0Nhc2VXaWRnZXQpID0+XG4gICAgICAgICAgICAgIHdpZGdldC5rZXkgPT09IHdpZGdldFJlc3VsdC5rZXkgPyB3aWRnZXRSZXN1bHQgOiB3aWRnZXRcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6IFtcbiAgICAgICAgICAgICAgLi4uZXhpc3RpbmdXaWRnZXRzLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLi4ud2lkZ2V0UmVzdWx0LFxuICAgICAgICAgICAgICAgIGtleTogdGhpcy5rZXlHZW5lcmF0b3JTZXJ2aWNlLmdldFVuaXF1ZUtleSh3aWRnZXRSZXN1bHQudGl0bGUsIHRoaXMuX3VzZWRLZXlzKSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICB9KVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmNoYW5nZVNhdmVkLmVtaXQoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uSXRlbXNSZW9yZGVyZWQod2lkZ2V0czogQ2FzZVdpZGdldFtdKTogdm9pZCB7XG4gICAgdGhpcy5kcmFnQW5kRHJvcERpc2FibGVkLnNldCh0cnVlKTtcblxuICAgIHRoaXMud2lkZ2V0VGFiTWFuYWdlbWVudFNlcnZpY2VcbiAgICAgIC51cGRhdGVXaWRnZXRzKHtcbiAgICAgICAgLi4udGhpcy5jdXJyZW50V2lkZ2V0VGFiLFxuICAgICAgICB3aWRnZXRzLFxuICAgICAgfSlcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5jaGFuZ2VTYXZlZC5lbWl0KCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZGVsZXRlV2lkZ2V0KHRhYldpZGdldDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5kZWxldGVSb3dLZXkkLm5leHQodGFiV2lkZ2V0LmtleSk7XG4gICAgdGhpcy5kZWxldGVNb2RhbE9wZW4kLm5leHQodHJ1ZSk7XG4gIH1cblxuICBwcml2YXRlIGdldFdpZHRoVHJhbnNsYXRpb25LZXkod2lkdGg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgc3dpdGNoICh3aWR0aCkge1xuICAgICAgY2FzZSAxOlxuICAgICAgICByZXR1cm4gJ3dpZGdldFRhYk1hbmFnZW1lbnQud2lkdGgucXVhcnRlci50aXRsZSc7XG4gICAgICBjYXNlIDI6XG4gICAgICAgIHJldHVybiAnd2lkZ2V0VGFiTWFuYWdlbWVudC53aWR0aC5oYWxmLnRpdGxlJztcbiAgICAgIGNhc2UgMzpcbiAgICAgICAgcmV0dXJuICd3aWRnZXRUYWJNYW5hZ2VtZW50LndpZHRoLnRocmVlUXVhcnRlcnMudGl0bGUnO1xuICAgICAgY2FzZSA0OlxuICAgICAgICByZXR1cm4gJ3dpZGdldFRhYk1hbmFnZW1lbnQud2lkdGguZnVsbFdpZHRoLnRpdGxlJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnLSc7XG4gICAgfVxuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjxuZy1jb250YWluZXJcbiAgKm5nSWY9XCJ7XG4gICAgaXNXaXphcmRPcGVuOiBpc1dpemFyZE9wZW4kIHwgYXN5bmMsXG4gICAgaXRlbXM6IGl0ZW1zJCB8IGFzeW5jXG4gIH0gYXMgb2JzXCJcbj5cbiAgPHZhbHRpbW8tY2FyYm9uLWxpc3RcbiAgICBbYWN0aW9uSXRlbXNdPVwiQUNUSU9OX0lURU1TXCJcbiAgICBbZmllbGRzXT1cIkZJRUxEU1wiXG4gICAgW2hlYWRlcl09XCJmYWxzZVwiXG4gICAgW2l0ZW1zXT1cIm9icy5pdGVtc1wiXG4gICAgW2RyYWdBbmREcm9wXT1cInRydWVcIlxuICAgIFtkcmFnQW5kRHJvcERpc2FibGVkXT1cImRyYWdBbmREcm9wRGlzYWJsZWQoKVwiXG4gICAgKGl0ZW1zUmVvcmRlcmVkKT1cIm9uSXRlbXNSZW9yZGVyZWQoJGV2ZW50KVwiXG4gICAgKHJvd0NsaWNrZWQpPVwiZWRpdFdpZGdldCgkZXZlbnQpXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXIgY2FyYm9uVG9vbGJhckNvbnRlbnQ+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYWRkV2lkZ2V0QnV0dG9uXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8dmFsdGltby1uby1yZXN1bHRzXG4gICAgICBbYWN0aW9uXT1cImFkZFdpZGdldEJ1dHRvblwiXG4gICAgICBbZGVzY3JpcHRpb25dPVwiJ3dpZGdldFRhYk1hbmFnZW1lbnQubGlzdC5ub1Jlc3VsdHMuZGVzY3JpcHRpb24nIHwgdHJhbnNsYXRlXCJcbiAgICAgIFt0aXRsZV09XCInd2lkZ2V0VGFiTWFuYWdlbWVudC5saXN0Lm5vUmVzdWx0cy50aXRsZScgfCB0cmFuc2xhdGVcIlxuICAgID48L3ZhbHRpbW8tbm8tcmVzdWx0cz5cbiAgPC92YWx0aW1vLWNhcmJvbi1saXN0PlxuXG4gIDxuZy10ZW1wbGF0ZSAjYWRkV2lkZ2V0QnV0dG9uPlxuICAgIDxidXR0b24gY2RzQnV0dG9uPVwicHJpbWFyeVwiIChjbGljayk9XCJvcGVuQWRkTW9kYWwoKVwiPlxuICAgICAge3sgJ3dpZGdldFRhYk1hbmFnZW1lbnQubGlzdC5hZGQnIHwgdHJhbnNsYXRlIH19XG5cbiAgICAgIDxzdmcgY2xhc3M9XCJjZHMtLWJ0bl9faWNvblwiIGNkc0ljb249XCJhZGRcIiBzaXplPVwiMTZcIj48L3N2Zz5cbiAgICA8L2J1dHRvbj5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8dmFsdGltby1kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LXdpemFyZFxuICAgIFtlZGl0TW9kZV09XCJpc0VkaXRNb2RlKClcIlxuICAgIFtvcGVuXT1cIm9icy5pc1dpemFyZE9wZW5cIlxuICAgIChjbG9zZUV2ZW50KT1cIm9uQ2xvc2VFdmVudCgkZXZlbnQsIG9icy5pdGVtcylcIlxuICA+PC92YWx0aW1vLWRvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtd2l6YXJkPlxuXG4gIDx2YWx0aW1vLWNvbmZpcm1hdGlvbi1tb2RhbFxuICAgIGNvbmZpcm1CdXR0b25UZXh0VHJhbnNsYXRpb25LZXk9XCJpbnRlcmZhY2UuZGVsZXRlXCJcbiAgICBjb25maXJtQnV0dG9uVHlwZT1cImRhbmdlclwiXG4gICAgY29udGVudFRyYW5zbGF0aW9uS2V5PVwiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIHdpZGdldD9cIlxuICAgIFtvdXRwdXRPbkNvbmZpcm1dPVwiZGVsZXRlUm93S2V5JCB8IGFzeW5jXCJcbiAgICBbc2hvd01vZGFsU3ViamVjdCRdPVwiZGVsZXRlTW9kYWxPcGVuJFwiXG4gICAgdGl0bGVUcmFuc2xhdGlvbktleT1cImludGVyZmFjZS5kZWxldGVcIlxuICAgIChjb25maXJtRXZlbnQpPVwib25EZWxldGVDb25maXJtKCRldmVudClcIlxuICA+PC92YWx0aW1vLWNvbmZpcm1hdGlvbi1tb2RhbD5cbjwvbmctY29udGFpbmVyPlxuIl19
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { CommonModule } from '@angular/common';
|
|
17
|
+
import { ChangeDetectionStrategy, Component, computed, EventEmitter, Input, Output, signal, ViewChild, } from '@angular/core';
|
|
18
|
+
import { toObservable } from '@angular/core/rxjs-interop';
|
|
19
|
+
import { Edit16, Save16 } from '@carbon/icons';
|
|
20
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
21
|
+
import { CARBON_CONSTANTS, ConfirmationModalModule, EditorModule, } from '@valtimo/components';
|
|
22
|
+
import { ButtonModule, IconModule, NotificationService, } from 'carbon-components-angular';
|
|
23
|
+
import { BehaviorSubject, take } from 'rxjs';
|
|
24
|
+
import * as i0 from "@angular/core";
|
|
25
|
+
import * as i1 from "carbon-components-angular";
|
|
26
|
+
import * as i2 from "@ngx-translate/core";
|
|
27
|
+
import * as i3 from "../../../services";
|
|
28
|
+
import * as i4 from "@angular/common";
|
|
29
|
+
import * as i5 from "@valtimo/components";
|
|
30
|
+
export class DossierManagementWidgetsJsonEditorComponent {
|
|
31
|
+
set currentWidgetTab(value) {
|
|
32
|
+
if (!value)
|
|
33
|
+
return;
|
|
34
|
+
this._currentWidgetTab = value;
|
|
35
|
+
this.jsonModel.set({
|
|
36
|
+
value: JSON.stringify(value),
|
|
37
|
+
language: 'json',
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
constructor(iconService, notificationService, translateService, widgetJsonEditorService, widgetTabManagementService) {
|
|
41
|
+
this.iconService = iconService;
|
|
42
|
+
this.notificationService = notificationService;
|
|
43
|
+
this.translateService = translateService;
|
|
44
|
+
this.widgetJsonEditorService = widgetJsonEditorService;
|
|
45
|
+
this.widgetTabManagementService = widgetTabManagementService;
|
|
46
|
+
this.customModalLoaded = new EventEmitter();
|
|
47
|
+
this.canDeactivate = new EventEmitter();
|
|
48
|
+
this.pendingChangesUpdate = new EventEmitter();
|
|
49
|
+
this.changeSaved = new EventEmitter();
|
|
50
|
+
this.jsonModel = signal(null);
|
|
51
|
+
this.editActive = signal(false);
|
|
52
|
+
this.showPendingModal$ = toObservable(this.widgetJsonEditorService.showPendingModal);
|
|
53
|
+
this.showSaveConfirmation$ = new BehaviorSubject(false);
|
|
54
|
+
this._widgetConfig = signal(null);
|
|
55
|
+
this._editorInit = false;
|
|
56
|
+
this._pendingChanges = false;
|
|
57
|
+
this._jsonValid = signal(false);
|
|
58
|
+
this._jsonSchemaInvalid = signal(false);
|
|
59
|
+
this.saveButtonDisabled = computed(() => !this._jsonValid() || this._jsonSchemaInvalid() || !this._widgetConfig());
|
|
60
|
+
this.iconService.registerAll([Edit16, Save16]);
|
|
61
|
+
}
|
|
62
|
+
ngAfterViewInit() {
|
|
63
|
+
this.customModalLoaded.emit(this.pendingChangesModal);
|
|
64
|
+
}
|
|
65
|
+
downloadConfig() {
|
|
66
|
+
const dataString = 'data:text/json;charset=utf-8,' +
|
|
67
|
+
encodeURIComponent(JSON.stringify(this._currentWidgetTab, null, 2));
|
|
68
|
+
const downloadAnchorElement = document.getElementById('downloadAnchorElement');
|
|
69
|
+
if (!downloadAnchorElement) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
downloadAnchorElement.setAttribute('href', dataString);
|
|
73
|
+
downloadAnchorElement.setAttribute('download', `${this._currentWidgetTab.caseDefinitionName}-widgets.json`);
|
|
74
|
+
downloadAnchorElement.click();
|
|
75
|
+
}
|
|
76
|
+
keepEditing() {
|
|
77
|
+
this.widgetJsonEditorService.showPendingModal.set(false);
|
|
78
|
+
this.showSaveConfirmation$.next(false);
|
|
79
|
+
this.canDeactivate.emit(false);
|
|
80
|
+
}
|
|
81
|
+
discardChanges() {
|
|
82
|
+
this.editActive.set(false);
|
|
83
|
+
this.jsonModel.update((model) => ({
|
|
84
|
+
...model,
|
|
85
|
+
value: JSON.stringify(this._currentWidgetTab),
|
|
86
|
+
}));
|
|
87
|
+
this.widgetJsonEditorService.showPendingModal.set(false);
|
|
88
|
+
this.setPendingChanges(false);
|
|
89
|
+
this.canDeactivate.emit(true);
|
|
90
|
+
}
|
|
91
|
+
save() {
|
|
92
|
+
const config = this._widgetConfig();
|
|
93
|
+
if (!config)
|
|
94
|
+
return;
|
|
95
|
+
this.widgetTabManagementService
|
|
96
|
+
.updateWidgets(config)
|
|
97
|
+
.pipe(take(1))
|
|
98
|
+
.subscribe({
|
|
99
|
+
next: () => {
|
|
100
|
+
this.notificationService.showNotification({
|
|
101
|
+
type: 'success',
|
|
102
|
+
title: this.translateService.instant('interface.success'),
|
|
103
|
+
message: this.translateService.instant('widgetTabManagement.notification.success'),
|
|
104
|
+
showClose: true,
|
|
105
|
+
duration: CARBON_CONSTANTS.notificationDuration,
|
|
106
|
+
});
|
|
107
|
+
this.widgetJsonEditorService.showPendingModal.set(false);
|
|
108
|
+
this.editActive.set(false);
|
|
109
|
+
this.setPendingChanges(false);
|
|
110
|
+
this.changeSaved.emit();
|
|
111
|
+
this.canDeactivate.emit(true);
|
|
112
|
+
},
|
|
113
|
+
error: () => {
|
|
114
|
+
this.notificationService.showNotification({
|
|
115
|
+
type: 'error',
|
|
116
|
+
title: this.translateService.instant('interface.error'),
|
|
117
|
+
message: this.translateService.instant('widgetTabManagement.notification.error'),
|
|
118
|
+
showClose: true,
|
|
119
|
+
duration: CARBON_CONSTANTS.notificationDuration,
|
|
120
|
+
});
|
|
121
|
+
},
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
onCancelClick() {
|
|
125
|
+
if (!this._widgetConfig() || !this._pendingChanges) {
|
|
126
|
+
this.editActive.set(false);
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
this.widgetJsonEditorService.showPendingModal.set(true);
|
|
130
|
+
}
|
|
131
|
+
onEditClick() {
|
|
132
|
+
this.editActive.set(true);
|
|
133
|
+
}
|
|
134
|
+
onSaveClick() {
|
|
135
|
+
this.showSaveConfirmation$.next(true);
|
|
136
|
+
}
|
|
137
|
+
onValidEvent(valid) {
|
|
138
|
+
this._jsonValid.set(valid);
|
|
139
|
+
}
|
|
140
|
+
onValueChangeEvent(value) {
|
|
141
|
+
if (!this._editorInit) {
|
|
142
|
+
this._editorInit = true;
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
this.setPendingChanges(true);
|
|
146
|
+
const widgetConfig = JSON.parse(value);
|
|
147
|
+
const editedWidgetKeys = widgetConfig.widgets.map((widget) => widget.key);
|
|
148
|
+
this._jsonSchemaInvalid.set(widgetConfig.key !== this._currentWidgetTab.key ||
|
|
149
|
+
widgetConfig.caseDefinitionName !== this._currentWidgetTab.caseDefinitionName ||
|
|
150
|
+
new Set(editedWidgetKeys).size !== editedWidgetKeys.length);
|
|
151
|
+
if (!this._jsonValid() || !this.editActive())
|
|
152
|
+
return;
|
|
153
|
+
this._widgetConfig.set(JSON.parse(value));
|
|
154
|
+
}
|
|
155
|
+
setPendingChanges(changes) {
|
|
156
|
+
this._pendingChanges = changes;
|
|
157
|
+
this.pendingChangesUpdate.emit(changes);
|
|
158
|
+
if (changes)
|
|
159
|
+
return;
|
|
160
|
+
this._widgetConfig.set(null);
|
|
161
|
+
this._editorInit = false;
|
|
162
|
+
}
|
|
163
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: DossierManagementWidgetsJsonEditorComponent, deps: [{ token: i1.IconService }, { token: i1.NotificationService }, { token: i2.TranslateService }, { token: i3.WidgetJsonEditorService }, { token: i3.WidgetTabManagementService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
164
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", type: DossierManagementWidgetsJsonEditorComponent, isStandalone: true, selector: "valtimo-dossier-management-widgets-json-editor", inputs: { currentWidgetTab: "currentWidgetTab" }, outputs: { customModalLoaded: "customModalLoaded", canDeactivate: "canDeactivate", pendingChangesUpdate: "pendingChangesUpdate", changeSaved: "changeSaved" }, providers: [NotificationService], viewQueries: [{ propertyName: "pendingChangesModal", first: true, predicate: ["pendingChangesModal"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"cds--toolbar-content\">\n @if (!editActive()) {\n <button cdsButton=\"ghost\" (click)=\"downloadConfig()\">\n {{ 'interface.download' | translate }}\n\n <svg cdsIcon=\"download\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n\n <button cdsButton=\"primary\" (click)=\"onEditClick()\">\n {{ 'interface.edit' | translate }}\n\n <svg cdsIcon=\"edit\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n } @else {\n <button cdsButton=\"secondary\" (click)=\"onCancelClick()\">\n {{ 'interface.cancel' | translate }}\n\n <svg cdsIcon=\"close\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n\n <button cdsButton=\"primary\" [disabled]=\"saveButtonDisabled()\" (click)=\"onSaveClick()\">\n {{ 'interface.save' | translate }}\n\n <svg cdsIcon=\"save\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n }\n</div>\n\n<valtimo-editor\n *ngIf=\"jsonModel()\"\n [model]=\"jsonModel()\"\n [disabled]=\"!editActive()\"\n [fitPage]=\"true\"\n [fitPageExtraSpace]=\"96\"\n (validEvent)=\"onValidEvent($event)\"\n (valueChangeEvent)=\"onValueChangeEvent($event)\"\n></valtimo-editor>\n\n<a id=\"downloadAnchorElement\" style=\"display: none\"></a>\n\n<valtimo-confirmation-modal\n [showModalSubject$]=\"showSaveConfirmation$\"\n cancelButtonTextTranslationKey=\"interface.cancel\"\n confirmButtonTextTranslationKey=\"interface.save\"\n contentTranslationKey=\"widgetTabManagement.saveModalContent\"\n titleTranslationKey=\"interface.save\"\n (cancelEvent)=\"keepEditing()\"\n (confirmEvent)=\"save()\"\n></valtimo-confirmation-modal>\n\n<valtimo-confirmation-modal\n #pendingChangesModal\n [showModalSubject$]=\"showPendingModal$\"\n cancelButtonTextTranslationKey=\"interface.pendingChanges.keepEditing\"\n cancelButtonType=\"ghost\"\n confirmButtonTextTranslationKey=\"interface.discard\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"widgetTabManagement.cancelModal.content\"\n optionalButtonTextTranslationKey=\"interface.save\"\n optionalButtonType=\"secondary\"\n titleTranslationKey=\"widgetTabManagement.cancelModal.title\"\n showOptionalButton=\"true\"\n spacerAfterCancelButton=\"true\"\n (cancelEvent)=\"keepEditing()\"\n (confirmEvent)=\"discardChanges()\"\n (optionalEvent)=\"save()\"\n></valtimo-confirmation-modal>\n", styles: [".cds--toolbar-content{background:var(--cds-layer)}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: EditorModule }, { kind: "component", type: i5.EditorComponent, selector: "valtimo-editor", inputs: ["editorOptions", "model", "disabled", "formatOnLoad", "widthPx", "heightPx", "heightStyle", "jsonSchema", "fitPage", "fitPageExtraSpace"], outputs: ["validEvent", "valueChangeEvent"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i1.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "ngmodule", type: IconModule }, { kind: "directive", type: i1.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "ngmodule", type: ConfirmationModalModule }, { kind: "component", type: i5.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "showOptionalButton", "optionalButtonText", "optionalButtonTextTranslationKey", "optionalButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm", "outputOnOptional", "spacerAfterCancelButton"], outputs: ["confirmEvent", "optionalEvent", "cancelEvent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
165
|
+
}
|
|
166
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: DossierManagementWidgetsJsonEditorComponent, decorators: [{
|
|
167
|
+
type: Component,
|
|
168
|
+
args: [{ selector: 'valtimo-dossier-management-widgets-json-editor', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
169
|
+
CommonModule,
|
|
170
|
+
TranslateModule,
|
|
171
|
+
EditorModule,
|
|
172
|
+
ButtonModule,
|
|
173
|
+
IconModule,
|
|
174
|
+
ConfirmationModalModule,
|
|
175
|
+
], providers: [NotificationService], template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div class=\"cds--toolbar-content\">\n @if (!editActive()) {\n <button cdsButton=\"ghost\" (click)=\"downloadConfig()\">\n {{ 'interface.download' | translate }}\n\n <svg cdsIcon=\"download\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n\n <button cdsButton=\"primary\" (click)=\"onEditClick()\">\n {{ 'interface.edit' | translate }}\n\n <svg cdsIcon=\"edit\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n } @else {\n <button cdsButton=\"secondary\" (click)=\"onCancelClick()\">\n {{ 'interface.cancel' | translate }}\n\n <svg cdsIcon=\"close\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n\n <button cdsButton=\"primary\" [disabled]=\"saveButtonDisabled()\" (click)=\"onSaveClick()\">\n {{ 'interface.save' | translate }}\n\n <svg cdsIcon=\"save\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n }\n</div>\n\n<valtimo-editor\n *ngIf=\"jsonModel()\"\n [model]=\"jsonModel()\"\n [disabled]=\"!editActive()\"\n [fitPage]=\"true\"\n [fitPageExtraSpace]=\"96\"\n (validEvent)=\"onValidEvent($event)\"\n (valueChangeEvent)=\"onValueChangeEvent($event)\"\n></valtimo-editor>\n\n<a id=\"downloadAnchorElement\" style=\"display: none\"></a>\n\n<valtimo-confirmation-modal\n [showModalSubject$]=\"showSaveConfirmation$\"\n cancelButtonTextTranslationKey=\"interface.cancel\"\n confirmButtonTextTranslationKey=\"interface.save\"\n contentTranslationKey=\"widgetTabManagement.saveModalContent\"\n titleTranslationKey=\"interface.save\"\n (cancelEvent)=\"keepEditing()\"\n (confirmEvent)=\"save()\"\n></valtimo-confirmation-modal>\n\n<valtimo-confirmation-modal\n #pendingChangesModal\n [showModalSubject$]=\"showPendingModal$\"\n cancelButtonTextTranslationKey=\"interface.pendingChanges.keepEditing\"\n cancelButtonType=\"ghost\"\n confirmButtonTextTranslationKey=\"interface.discard\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"widgetTabManagement.cancelModal.content\"\n optionalButtonTextTranslationKey=\"interface.save\"\n optionalButtonType=\"secondary\"\n titleTranslationKey=\"widgetTabManagement.cancelModal.title\"\n showOptionalButton=\"true\"\n spacerAfterCancelButton=\"true\"\n (cancelEvent)=\"keepEditing()\"\n (confirmEvent)=\"discardChanges()\"\n (optionalEvent)=\"save()\"\n></valtimo-confirmation-modal>\n", styles: [".cds--toolbar-content{background:var(--cds-layer)}\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"] }]
|
|
176
|
+
}], ctorParameters: () => [{ type: i1.IconService }, { type: i1.NotificationService }, { type: i2.TranslateService }, { type: i3.WidgetJsonEditorService }, { type: i3.WidgetTabManagementService }], propDecorators: { pendingChangesModal: [{
|
|
177
|
+
type: ViewChild,
|
|
178
|
+
args: ['pendingChangesModal']
|
|
179
|
+
}], currentWidgetTab: [{
|
|
180
|
+
type: Input
|
|
181
|
+
}], customModalLoaded: [{
|
|
182
|
+
type: Output
|
|
183
|
+
}], canDeactivate: [{
|
|
184
|
+
type: Output
|
|
185
|
+
}], pendingChangesUpdate: [{
|
|
186
|
+
type: Output
|
|
187
|
+
}], changeSaved: [{
|
|
188
|
+
type: Output
|
|
189
|
+
}] } });
|
|
190
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldHMtanNvbi1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kb3NzaWVyLW1hbmFnZW1lbnQvc3JjL2xpYi9jb21wb25lbnRzL2Rvc3NpZXItbWFuYWdlbWVudC13aWRnZXQtdGFiL2pzb24tZWRpdG9yL2Rvc3NpZXItbWFuYWdlbWVudC13aWRnZXRzLWpzb24tZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZG9zc2llci1tYW5hZ2VtZW50L3NyYy9saWIvY29tcG9uZW50cy9kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0LXRhYi9qc29uLWVkaXRvci9kb3NzaWVyLW1hbmFnZW1lbnQtd2lkZ2V0cy1qc29uLWVkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxRQUFRLEVBQ1IsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBRU4sTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDeEQsT0FBTyxFQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDN0MsT0FBTyxFQUFDLGVBQWUsRUFBbUIsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RSxPQUFPLEVBQ0wsZ0JBQWdCLEVBRWhCLHVCQUF1QixFQUV2QixZQUFZLEdBQ2IsTUFBTSxxQkFBcUIsQ0FBQztBQUU3QixPQUFPLEVBQ0wsWUFBWSxFQUNaLFVBQVUsRUFFVixt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ZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIGNvbXB1dGVkLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFNpZ25hbCxcbiAgc2lnbmFsLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0b09ic2VydmFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7RWRpdDE2LCBTYXZlMTZ9IGZyb20gJ0BjYXJib24vaWNvbnMnO1xuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtcbiAgQ0FSQk9OX0NPTlNUQU5UUyxcbiAgQ29uZmlybWF0aW9uTW9kYWxDb21wb25lbnQsXG4gIENvbmZpcm1hdGlvbk1vZGFsTW9kdWxlLFxuICBFZGl0b3JNb2RlbCxcbiAgRWRpdG9yTW9kdWxlLFxufSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCB7QmFzaWNDYXNlV2lkZ2V0LCBDYXNlV2lkZ2V0c1Jlc30gZnJvbSAnQHZhbHRpbW8vZG9zc2llcic7XG5pbXBvcnQge1xuICBCdXR0b25Nb2R1bGUsXG4gIEljb25Nb2R1bGUsXG4gIEljb25TZXJ2aWNlLFxuICBOb3RpZmljYXRpb25TZXJ2aWNlLFxufSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCB0YWtlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7V2lkZ2V0SnNvbkVkaXRvclNlcnZpY2UsIFdpZGdldFRhYk1hbmFnZW1lbnRTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldHMtanNvbi1lZGl0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldHMtanNvbi1lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZG9zc2llci1tYW5hZ2VtZW50LXdpZGdldHMtanNvbi1lZGl0b3IuY29tcG9uZW50LnNjc3MnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgRWRpdG9yTW9kdWxlLFxuICAgIEJ1dHRvbk1vZHVsZSxcbiAgICBJY29uTW9kdWxlLFxuICAgIENvbmZpcm1hdGlvbk1vZGFsTW9kdWxlLFxuICBdLFxuICBwcm92aWRlcnM6IFtOb3RpZmljYXRpb25TZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgRG9zc2llck1hbmFnZW1lbnRXaWRnZXRzSnNvbkVkaXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBAVmlld0NoaWxkKCdwZW5kaW5nQ2hhbmdlc01vZGFsJykgcHVibGljIHBlbmRpbmdDaGFuZ2VzTW9kYWw6IENvbmZpcm1hdGlvbk1vZGFsQ29tcG9uZW50O1xuXG4gIHByaXZhdGUgX2N1cnJlbnRXaWRnZXRUYWI6IENhc2VXaWRnZXRzUmVzO1xuICBASW5wdXQoKSBwdWJsaWMgc2V0IGN1cnJlbnRXaWRnZXRUYWIodmFsdWU6IENhc2VXaWRnZXRzUmVzKSB7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuO1xuICAgIHRoaXMuX2N1cnJlbnRXaWRnZXRUYWIgPSB2YWx1ZTtcbiAgICB0aGlzLmpzb25Nb2RlbC5zZXQoe1xuICAgICAgdmFsdWU6IEpTT04uc3RyaW5naWZ5KHZhbHVlKSxcbiAgICAgIGxhbmd1YWdlOiAnanNvbicsXG4gICAgfSk7XG4gIH1cblxuICBAT3V0cHV0KCkgcHVibGljIHJlYWRvbmx5IGN1c3RvbU1vZGFsTG9hZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxDb25maXJtYXRpb25Nb2RhbENvbXBvbmVudD4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBjYW5EZWFjdGl2YXRlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgcHVibGljIHJlYWRvbmx5IHBlbmRpbmdDaGFuZ2VzVXBkYXRlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgcHVibGljIHJlYWRvbmx5IGNoYW5nZVNhdmVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHB1YmxpYyByZWFkb25seSBqc29uTW9kZWwgPSBzaWduYWw8RWRpdG9yTW9kZWwgfCBudWxsPihudWxsKTtcbiAgcHVibGljIHJlYWRvbmx5IGVkaXRBY3RpdmUgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHB1YmxpYyByZWFkb25seSBzaG93UGVuZGluZ01vZGFsJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRvT2JzZXJ2YWJsZShcbiAgICB0aGlzLndpZGdldEpzb25FZGl0b3JTZXJ2aWNlLnNob3dQZW5kaW5nTW9kYWxcbiAgKTtcbiAgcHVibGljIHJlYWRvbmx5IHNob3dTYXZlQ29uZmlybWF0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3dpZGdldENvbmZpZyA9IHNpZ25hbDxDYXNlV2lkZ2V0c1JlcyB8IG51bGw+KG51bGwpO1xuXG4gIHByaXZhdGUgX2VkaXRvckluaXQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfcGVuZGluZ0NoYW5nZXMgPSBmYWxzZTtcbiAgcHJpdmF0ZSByZWFkb25seSBfanNvblZhbGlkID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfanNvblNjaGVtYUludmFsaWQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2F2ZUJ1dHRvbkRpc2FibGVkOiBTaWduYWw8Ym9vbGVhbj4gPSBjb21wdXRlZChcbiAgICAoKSA9PiAhdGhpcy5fanNvblZhbGlkKCkgfHwgdGhpcy5fanNvblNjaGVtYUludmFsaWQoKSB8fCAhdGhpcy5fd2lkZ2V0Q29uZmlnKClcbiAgKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGljb25TZXJ2aWNlOiBJY29uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgd2lkZ2V0SnNvbkVkaXRvclNlcnZpY2U6IFdpZGdldEpzb25FZGl0b3JTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgd2lkZ2V0VGFiTWFuYWdlbWVudFNlcnZpY2U6IFdpZGdldFRhYk1hbmFnZW1lbnRTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuaWNvblNlcnZpY2UucmVnaXN0ZXJBbGwoW0VkaXQxNiwgU2F2ZTE2XSk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY3VzdG9tTW9kYWxMb2FkZWQuZW1pdCh0aGlzLnBlbmRpbmdDaGFuZ2VzTW9kYWwpO1xuICB9XG5cbiAgcHVibGljIGRvd25sb2FkQ29uZmlnKCk6IHZvaWQge1xuICAgIGNvbnN0IGRhdGFTdHJpbmcgPVxuICAgICAgJ2RhdGE6dGV4dC9qc29uO2NoYXJzZXQ9dXRmLTgsJyArXG4gICAgICBlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkodGhpcy5fY3VycmVudFdpZGdldFRhYiwgbnVsbCwgMikpO1xuICAgIGNvbnN0IGRvd25sb2FkQW5jaG9yRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkb3dubG9hZEFuY2hvckVsZW1lbnQnKTtcbiAgICBpZiAoIWRvd25sb2FkQW5jaG9yRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGRvd25sb2FkQW5jaG9yRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCBkYXRhU3RyaW5nKTtcbiAgICBkb3dubG9hZEFuY2hvckVsZW1lbnQuc2V0QXR0cmlidXRlKFxuICAgICAgJ2Rvd25sb2FkJyxcbiAgICAgIGAke3RoaXMuX2N1cnJlbnRXaWRnZXRUYWIuY2FzZURlZmluaXRpb25OYW1lfS13aWRnZXRzLmpzb25gXG4gICAgKTtcbiAgICBkb3dubG9hZEFuY2hvckVsZW1lbnQuY2xpY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBrZWVwRWRpdGluZygpOiB2b2lkIHtcbiAgICB0aGlzLndpZGdldEpzb25FZGl0b3JTZXJ2aWNlLnNob3dQZW5kaW5nTW9kYWwuc2V0KGZhbHNlKTtcbiAgICB0aGlzLnNob3dTYXZlQ29uZmlybWF0aW9uJC5uZXh0KGZhbHNlKTtcbiAgICB0aGlzLmNhbkRlYWN0aXZhdGUuZW1pdChmYWxzZSk7XG4gIH1cblxuICBwdWJsaWMgZGlzY2FyZENoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5lZGl0QWN0aXZlLnNldChmYWxzZSk7XG4gICAgdGhpcy5qc29uTW9kZWwudXBkYXRlKChtb2RlbDogRWRpdG9yTW9kZWwgfCBudWxsKSA9PiAoe1xuICAgICAgLi4ubW9kZWwsXG4gICAgICB2YWx1ZTogSlNPTi5zdHJpbmdpZnkodGhpcy5fY3VycmVudFdpZGdldFRhYiksXG4gICAgfSkpO1xuICAgIHRoaXMud2lkZ2V0SnNvbkVkaXRvclNlcnZpY2Uuc2hvd1BlbmRpbmdNb2RhbC5zZXQoZmFsc2UpO1xuICAgIHRoaXMuc2V0UGVuZGluZ0NoYW5nZXMoZmFsc2UpO1xuICAgIHRoaXMuY2FuRGVhY3RpdmF0ZS5lbWl0KHRydWUpO1xuICB9XG5cbiAgcHVibGljIHNhdmUoKTogdm9pZCB7XG4gICAgY29uc3QgY29uZmlnOiBDYXNlV2lkZ2V0c1JlcyB8IG51bGwgPSB0aGlzLl93aWRnZXRDb25maWcoKTtcblxuICAgIGlmICghY29uZmlnKSByZXR1cm47XG5cbiAgICB0aGlzLndpZGdldFRhYk1hbmFnZW1lbnRTZXJ2aWNlXG4gICAgICAudXBkYXRlV2lkZ2V0cyhjb25maWcpXG4gICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc2hvd05vdGlmaWNhdGlvbih7XG4gICAgICAgICAgICB0eXBlOiAnc3VjY2VzcycsXG4gICAgICAgICAgICB0aXRsZTogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ2ludGVyZmFjZS5zdWNjZXNzJyksXG4gICAgICAgICAgICBtZXNzYWdlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnd2lkZ2V0VGFiTWFuYWdlbWVudC5ub3RpZmljYXRpb24uc3VjY2VzcycpLFxuICAgICAgICAgICAgc2hvd0Nsb3NlOiB0cnVlLFxuICAgICAgICAgICAgZHVyYXRpb246IENBUkJPTl9DT05TVEFOVFMubm90aWZpY2F0aW9uRHVyYXRpb24sXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy53aWRnZXRKc29uRWRpdG9yU2VydmljZS5zaG93UGVuZGluZ01vZGFsLnNldChmYWxzZSk7XG4gICAgICAgICAgdGhpcy5lZGl0QWN0aXZlLnNldChmYWxzZSk7XG4gICAgICAgICAgdGhpcy5zZXRQZW5kaW5nQ2hhbmdlcyhmYWxzZSk7XG4gICAgICAgICAgdGhpcy5jaGFuZ2VTYXZlZC5lbWl0KCk7XG4gICAgICAgICAgdGhpcy5jYW5EZWFjdGl2YXRlLmVtaXQodHJ1ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnNob3dOb3RpZmljYXRpb24oe1xuICAgICAgICAgICAgdHlwZTogJ2Vycm9yJyxcbiAgICAgICAgICAgIHRpdGxlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnaW50ZXJmYWNlLmVycm9yJyksXG4gICAgICAgICAgICBtZXNzYWdlOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCgnd2lkZ2V0VGFiTWFuYWdlbWVudC5ub3RpZmljYXRpb24uZXJyb3InKSxcbiAgICAgICAgICAgIHNob3dDbG9zZTogdHJ1ZSxcbiAgICAgICAgICAgIGR1cmF0aW9uOiBDQVJCT05fQ09OU1RBTlRTLm5vdGlmaWNhdGlvbkR1cmF0aW9uLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb25DYW5jZWxDbGljaygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3dpZGdldENvbmZpZygpIHx8ICF0aGlzLl9wZW5kaW5nQ2hhbmdlcykge1xuICAgICAgdGhpcy5lZGl0QWN0aXZlLnNldChmYWxzZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy53aWRnZXRKc29uRWRpdG9yU2VydmljZS5zaG93UGVuZGluZ01vZGFsLnNldCh0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkVkaXRDbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLmVkaXRBY3RpdmUuc2V0KHRydWUpO1xuICB9XG5cbiAgcHVibGljIG9uU2F2ZUNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd1NhdmVDb25maXJtYXRpb24kLm5leHQodHJ1ZSk7XG4gIH1cblxuICBwdWJsaWMgb25WYWxpZEV2ZW50KHZhbGlkOiBib29sZWFuKSB7XG4gICAgdGhpcy5fanNvblZhbGlkLnNldCh2YWxpZCk7XG4gIH1cblxuICBwdWJsaWMgb25WYWx1ZUNoYW5nZUV2ZW50KHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuX2VkaXRvckluaXQpIHtcbiAgICAgIHRoaXMuX2VkaXRvckluaXQgPSB0cnVlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2V0UGVuZGluZ0NoYW5nZXModHJ1ZSk7XG5cbiAgICBjb25zdCB3aWRnZXRDb25maWc6IENhc2VXaWRnZXRzUmVzID0gSlNPTi5wYXJzZSh2YWx1ZSk7XG4gICAgY29uc3QgZWRpdGVkV2lkZ2V0S2V5czogc3RyaW5nW10gPSB3aWRnZXRDb25maWcud2lkZ2V0cy5tYXAoXG4gICAgICAod2lkZ2V0OiBCYXNpY0Nhc2VXaWRnZXQpID0+IHdpZGdldC5rZXlcbiAgICApO1xuXG4gICAgdGhpcy5fanNvblNjaGVtYUludmFsaWQuc2V0KFxuICAgICAgd2lkZ2V0Q29uZmlnLmtleSAhPT0gdGhpcy5fY3VycmVudFdpZGdldFRhYi5rZXkgfHxcbiAgICAgICAgd2lkZ2V0Q29uZmlnLmNhc2VEZWZpbml0aW9uTmFtZSAhPT0gdGhpcy5fY3VycmVudFdpZGdldFRhYi5jYXNlRGVmaW5pdGlvbk5hbWUgfHxcbiAgICAgICAgbmV3IFNldChlZGl0ZWRXaWRnZXRLZXlzKS5zaXplICE9PSBlZGl0ZWRXaWRnZXRLZXlzLmxlbmd0aFxuICAgICk7XG5cbiAgICBpZiAoIXRoaXMuX2pzb25WYWxpZCgpIHx8ICF0aGlzLmVkaXRBY3RpdmUoKSkgcmV0dXJuO1xuXG4gICAgdGhpcy5fd2lkZ2V0Q29uZmlnLnNldChKU09OLnBhcnNlKHZhbHVlKSk7XG4gIH1cblxuICBwcml2YXRlIHNldFBlbmRpbmdDaGFuZ2VzKGNoYW5nZXM6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLl9wZW5kaW5nQ2hhbmdlcyA9IGNoYW5nZXM7XG4gICAgdGhpcy5wZW5kaW5nQ2hhbmdlc1VwZGF0ZS5lbWl0KGNoYW5nZXMpO1xuXG4gICAgaWYgKGNoYW5nZXMpIHJldHVybjtcblxuICAgIHRoaXMuX3dpZGdldENvbmZpZy5zZXQobnVsbCk7XG4gICAgdGhpcy5fZWRpdG9ySW5pdCA9IGZhbHNlO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjxkaXYgY2xhc3M9XCJjZHMtLXRvb2xiYXItY29udGVudFwiPlxuICBAaWYgKCFlZGl0QWN0aXZlKCkpIHtcbiAgICA8YnV0dG9uIGNkc0J1dHRvbj1cImdob3N0XCIgKGNsaWNrKT1cImRvd25sb2FkQ29uZmlnKClcIj5cbiAgICAgIHt7ICdpbnRlcmZhY2UuZG93bmxvYWQnIHwgdHJhbnNsYXRlIH19XG5cbiAgICAgIDxzdmcgY2RzSWNvbj1cImRvd25sb2FkXCIgc2l6ZT1cIjE2XCIgY2xhc3M9XCJjZHMtLWJ0bl9faWNvblwiPjwvc3ZnPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGJ1dHRvbiBjZHNCdXR0b249XCJwcmltYXJ5XCIgKGNsaWNrKT1cIm9uRWRpdENsaWNrKClcIj5cbiAgICAgIHt7ICdpbnRlcmZhY2UuZWRpdCcgfCB0cmFuc2xhdGUgfX1cblxuICAgICAgPHN2ZyBjZHNJY29uPVwiZWRpdFwiIHNpemU9XCIxNlwiIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIj48L3N2Zz5cbiAgICA8L2J1dHRvbj5cbiAgfSBAZWxzZSB7XG4gICAgPGJ1dHRvbiBjZHNCdXR0b249XCJzZWNvbmRhcnlcIiAoY2xpY2spPVwib25DYW5jZWxDbGljaygpXCI+XG4gICAgICB7eyAnaW50ZXJmYWNlLmNhbmNlbCcgfCB0cmFuc2xhdGUgfX1cblxuICAgICAgPHN2ZyBjZHNJY29uPVwiY2xvc2VcIiBzaXplPVwiMTZcIiBjbGFzcz1cImNkcy0tYnRuX19pY29uXCI+PC9zdmc+XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uIGNkc0J1dHRvbj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwic2F2ZUJ1dHRvbkRpc2FibGVkKClcIiAoY2xpY2spPVwib25TYXZlQ2xpY2soKVwiPlxuICAgICAge3sgJ2ludGVyZmFjZS5zYXZlJyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgICA8c3ZnIGNkc0ljb249XCJzYXZlXCIgc2l6ZT1cIjE2XCIgY2xhc3M9XCJjZHMtLWJ0bl9faWNvblwiPjwvc3ZnPlxuICAgIDwvYnV0dG9uPlxuICB9XG48L2Rpdj5cblxuPHZhbHRpbW8tZWRpdG9yXG4gICpuZ0lmPVwianNvbk1vZGVsKClcIlxuICBbbW9kZWxdPVwianNvbk1vZGVsKClcIlxuICBbZGlzYWJsZWRdPVwiIWVkaXRBY3RpdmUoKVwiXG4gIFtmaXRQYWdlXT1cInRydWVcIlxuICBbZml0UGFnZUV4dHJhU3BhY2VdPVwiOTZcIlxuICAodmFsaWRFdmVudCk9XCJvblZhbGlkRXZlbnQoJGV2ZW50KVwiXG4gICh2YWx1ZUNoYW5nZUV2ZW50KT1cIm9uVmFsdWVDaGFuZ2VFdmVudCgkZXZlbnQpXCJcbj48L3ZhbHRpbW8tZWRpdG9yPlxuXG48YSBpZD1cImRvd25sb2FkQW5jaG9yRWxlbWVudFwiIHN0eWxlPVwiZGlzcGxheTogbm9uZVwiPjwvYT5cblxuPHZhbHRpbW8tY29uZmlybWF0aW9uLW1vZGFsXG4gIFtzaG93TW9kYWxTdWJqZWN0JF09XCJzaG93U2F2ZUNvbmZpcm1hdGlvbiRcIlxuICBjYW5jZWxCdXR0b25UZXh0VHJhbnNsYXRpb25LZXk9XCJpbnRlcmZhY2UuY2FuY2VsXCJcbiAgY29uZmlybUJ1dHRvblRleHRUcmFuc2xhdGlvbktleT1cImludGVyZmFjZS5zYXZlXCJcbiAgY29udGVudFRyYW5zbGF0aW9uS2V5PVwid2lkZ2V0VGFiTWFuYWdlbWVudC5zYXZlTW9kYWxDb250ZW50XCJcbiAgdGl0bGVUcmFuc2xhdGlvbktleT1cImludGVyZmFjZS5zYXZlXCJcbiAgKGNhbmNlbEV2ZW50KT1cImtlZXBFZGl0aW5nKClcIlxuICAoY29uZmlybUV2ZW50KT1cInNhdmUoKVwiXG4+PC92YWx0aW1vLWNvbmZpcm1hdGlvbi1tb2RhbD5cblxuPHZhbHRpbW8tY29uZmlybWF0aW9uLW1vZGFsXG4gICNwZW5kaW5nQ2hhbmdlc01vZGFsXG4gIFtzaG93TW9kYWxTdWJqZWN0JF09XCJzaG93UGVuZGluZ01vZGFsJFwiXG4gIGNhbmNlbEJ1dHRvblRleHRUcmFuc2xhdGlvbktleT1cImludGVyZmFjZS5wZW5kaW5nQ2hhbmdlcy5rZWVwRWRpdGluZ1wiXG4gIGNhbmNlbEJ1dHRvblR5cGU9XCJnaG9zdFwiXG4gIGNvbmZpcm1CdXR0b25UZXh0VHJhbnNsYXRpb25LZXk9XCJpbnRlcmZhY2UuZGlzY2FyZFwiXG4gIGNvbmZpcm1CdXR0b25UeXBlPVwiZGFuZ2VyXCJcbiAgY29udGVudFRyYW5zbGF0aW9uS2V5PVwid2lkZ2V0VGFiTWFuYWdlbWVudC5jYW5jZWxNb2RhbC5jb250ZW50XCJcbiAgb3B0aW9uYWxCdXR0b25UZXh0VHJhbnNsYXRpb25LZXk9XCJpbnRlcmZhY2Uuc2F2ZVwiXG4gIG9wdGlvbmFsQnV0dG9uVHlwZT1cInNlY29uZGFyeVwiXG4gIHRpdGxlVHJhbnNsYXRpb25LZXk9XCJ3aWRnZXRUYWJNYW5hZ2VtZW50LmNhbmNlbE1vZGFsLnRpdGxlXCJcbiAgc2hvd09wdGlvbmFsQnV0dG9uPVwidHJ1ZVwiXG4gIHNwYWNlckFmdGVyQ2FuY2VsQnV0dG9uPVwidHJ1ZVwiXG4gIChjYW5jZWxFdmVudCk9XCJrZWVwRWRpdGluZygpXCJcbiAgKGNvbmZpcm1FdmVudCk9XCJkaXNjYXJkQ2hhbmdlcygpXCJcbiAgKG9wdGlvbmFsRXZlbnQpPVwic2F2ZSgpXCJcbj48L3ZhbHRpbW8tY29uZmlybWF0aW9uLW1vZGFsPlxuIl19
|