@alfresco/adf-process-services-cloud 8.1.0-16500060130 → 8.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/bundles/assets/adf-process-services-cloud/i18n/de.json +0 -3
- package/bundles/assets/adf-process-services-cloud/i18n/es.json +0 -3
- package/bundles/assets/adf-process-services-cloud/i18n/fr.json +0 -3
- package/bundles/assets/adf-process-services-cloud/i18n/it.json +0 -3
- package/bundles/assets/adf-process-services-cloud/i18n/pl.json +0 -3
- package/bundles/assets/adf-process-services-cloud/i18n/pt.json +0 -3
- package/fesm2022/adf-process-services-cloud.mjs +490 -410
- package/fesm2022/adf-process-services-cloud.mjs.map +1 -1
- package/lib/app/services/apps-process-cloud.service.d.ts +2 -2
- package/lib/form/components/widgets/display-rich-text/display-rich-text.widget.scss +0 -1
- package/lib/process/start-process/components/start-process-cloud.component.d.ts +0 -1
- package/lib/process/start-process/components/start-process-cloud.component.scss +4 -0
- package/lib/process/start-process/services/start-process-cloud.service.d.ts +1 -0
- package/lib/process-services-cloud.module.d.ts +2 -1
- package/lib/screen/components/screen-cloud/screen-cloud.component.d.ts +1 -1
- package/lib/screen/public-api.d.ts +3 -1
- package/lib/screen/services/provide-screen.d.ts +37 -0
- package/lib/{services → screen/services}/screen-rendering.service.d.ts +29 -0
- package/lib/services/public-api.d.ts +0 -1
- package/lib/task/task-filters/components/base-task-filters-cloud.component.d.ts +1 -1
- package/lib/task/task-filters/components/edit-task-filters/base-edit-task-filter-cloud.component.d.ts +1 -1
- package/lib/task/task-list/components/base-task-list-cloud.component.d.ts +1 -1
- package/package.json +4 -6
- package/esm2022/adf-process-services-cloud.mjs +0 -5
- package/esm2022/lib/app/app-list-cloud.module.mjs +0 -20
- package/esm2022/lib/app/components/app-details-cloud/app-details-cloud.component.mjs +0 -67
- package/esm2022/lib/app/components/app-list-cloud/app-list-cloud.component.mjs +0 -125
- package/esm2022/lib/app/models/application-instance.model.mjs +0 -24
- package/esm2022/lib/app/public-api.mjs +0 -22
- package/esm2022/lib/app/services/apps-process-cloud.service.mjs +0 -97
- package/esm2022/lib/common/date-range-filter/date-range-filter.component.mjs +0 -163
- package/esm2022/lib/common/date-range-filter/date-range-filter.service.mjs +0 -97
- package/esm2022/lib/common/index.mjs +0 -18
- package/esm2022/lib/common/interface/environment.interface.mjs +0 -18
- package/esm2022/lib/common/interface/index.mjs +0 -18
- package/esm2022/lib/common/interface/public-api.mjs +0 -18
- package/esm2022/lib/common/public-api.mjs +0 -19
- package/esm2022/lib/form/components/cloud-form-rendering.service.mjs +0 -57
- package/esm2022/lib/form/components/form-cloud-custom-outcomes.component.mjs +0 -31
- package/esm2022/lib/form/components/form-cloud.component.mjs +0 -420
- package/esm2022/lib/form/components/form-definition-selector-cloud.component.mjs +0 -53
- package/esm2022/lib/form/components/spinner/form-spinner.component.mjs +0 -35
- package/esm2022/lib/form/components/widgets/attach-file/attach-file-cloud-widget.component.mjs +0 -249
- package/esm2022/lib/form/components/widgets/attach-file/file-properties-table/file-properties-table-cloud.component.mjs +0 -136
- package/esm2022/lib/form/components/widgets/data-table/data-table-adapter.widget.mjs +0 -107
- package/esm2022/lib/form/components/widgets/data-table/data-table.widget.mjs +0 -120
- package/esm2022/lib/form/components/widgets/data-table/helpers/data-table-path-parser.helper.mjs +0 -122
- package/esm2022/lib/form/components/widgets/date/date-cloud.widget.mjs +0 -189
- package/esm2022/lib/form/components/widgets/display-external-property/display-external-property.widget.mjs +0 -85
- package/esm2022/lib/form/components/widgets/display-rich-text/display-rich-text.widget.mjs +0 -80
- package/esm2022/lib/form/components/widgets/dropdown/dropdown-cloud.widget.mjs +0 -464
- package/esm2022/lib/form/components/widgets/dropdown/validators.mjs +0 -29
- package/esm2022/lib/form/components/widgets/file-viewer/file-viewer.widget.mjs +0 -46
- package/esm2022/lib/form/components/widgets/group/group-cloud.widget.mjs +0 -82
- package/esm2022/lib/form/components/widgets/people/people-cloud.widget.mjs +0 -91
- package/esm2022/lib/form/components/widgets/properties-viewer/properties-viewer-wrapper/properties-viewer-wrapper.component.mjs +0 -81
- package/esm2022/lib/form/components/widgets/properties-viewer/properties-viewer.widget.mjs +0 -53
- package/esm2022/lib/form/components/widgets/radio-buttons/radio-buttons-cloud.schema.mjs +0 -86
- package/esm2022/lib/form/components/widgets/radio-buttons/radio-buttons-cloud.widget.mjs +0 -116
- package/esm2022/lib/form/components/widgets/upload/upload-cloud.widget.mjs +0 -187
- package/esm2022/lib/form/form-cloud.module.mjs +0 -99
- package/esm2022/lib/form/models/form-cloud-representation.model.mjs +0 -48
- package/esm2022/lib/form/models/task-variable-cloud.model.mjs +0 -28
- package/esm2022/lib/form/public-api.mjs +0 -44
- package/esm2022/lib/form/services/content-cloud-node-selector.service.mjs +0 -120
- package/esm2022/lib/form/services/display-mode.service.mjs +0 -146
- package/esm2022/lib/form/services/form-cloud.service.interface.mjs +0 -18
- package/esm2022/lib/form/services/form-cloud.service.mjs +0 -201
- package/esm2022/lib/form/services/form-definition-selector-cloud.service.interface.mjs +0 -18
- package/esm2022/lib/form/services/form-definition-selector-cloud.service.mjs +0 -51
- package/esm2022/lib/form/services/form-utils.service.mjs +0 -37
- package/esm2022/lib/form/services/process-cloud-content.service.mjs +0 -71
- package/esm2022/lib/form/services/spinner/form-cloud-spinner.service.mjs +0 -52
- package/esm2022/lib/group/components/group-cloud.component.mjs +0 -423
- package/esm2022/lib/group/group-cloud.module.mjs +0 -33
- package/esm2022/lib/group/models/identity-group.model.mjs +0 -18
- package/esm2022/lib/group/public-api.mjs +0 -21
- package/esm2022/lib/group/services/identity-group.service.mjs +0 -89
- package/esm2022/lib/models/application-version.model.mjs +0 -21
- package/esm2022/lib/models/constant-values.type.mjs +0 -18
- package/esm2022/lib/models/data-column-custom-data.mjs +0 -18
- package/esm2022/lib/models/date-cloud-filter.model.mjs +0 -31
- package/esm2022/lib/models/date-format-cloud.model.mjs +0 -18
- package/esm2022/lib/models/engine-event-cloud.model.mjs +0 -18
- package/esm2022/lib/models/filter-cloud-model.mjs +0 -128
- package/esm2022/lib/models/process-definition-cloud.model.mjs +0 -32
- package/esm2022/lib/models/process-instance-variable.model.mjs +0 -18
- package/esm2022/lib/models/process-variable-filter.model.mjs +0 -18
- package/esm2022/lib/models/task-cloud.model.mjs +0 -23
- package/esm2022/lib/models/task-list-sorting.model.mjs +0 -40
- package/esm2022/lib/models/variable-definition.mjs +0 -18
- package/esm2022/lib/people/components/people-cloud.component.mjs +0 -498
- package/esm2022/lib/people/models/identity-user.model.mjs +0 -18
- package/esm2022/lib/people/people-cloud.module.mjs +0 -33
- package/esm2022/lib/people/public-api.mjs +0 -21
- package/esm2022/lib/people/services/identity-user.service.mjs +0 -119
- package/esm2022/lib/process/process-cloud.module.mjs +0 -40
- package/esm2022/lib/process/process-filters/components/edit-process-filter/edit-process-filter-cloud.component.mjs +0 -801
- package/esm2022/lib/process/process-filters/components/process-filter-dialog/process-filter-dialog-cloud.component.mjs +0 -58
- package/esm2022/lib/process/process-filters/components/process-filters/process-filters-cloud.component.mjs +0 -292
- package/esm2022/lib/process/process-filters/models/process-filter-cloud.model.mjs +0 -170
- package/esm2022/lib/process/process-filters/process-filters-cloud.module.mjs +0 -44
- package/esm2022/lib/process/process-filters/public-api.mjs +0 -23
- package/esm2022/lib/process/process-filters/services/process-filter-cloud.service.mjs +0 -408
- package/esm2022/lib/process/process-header/components/process-header-cloud.component.mjs +0 -137
- package/esm2022/lib/process/process-header/process-header-cloud.module.mjs +0 -33
- package/esm2022/lib/process/process-header/public-api.mjs +0 -19
- package/esm2022/lib/process/process-list/components/process-list-cloud.component.mjs +0 -593
- package/esm2022/lib/process/process-list/datatable/process-list-datatable-adapter.mjs +0 -31
- package/esm2022/lib/process/process-list/models/perocess-instance-cloud-view.model.mjs +0 -18
- package/esm2022/lib/process/process-list/models/process-cloud-preferences.mjs +0 -24
- package/esm2022/lib/process/process-list/models/process-cloud-preset.model.mjs +0 -37
- package/esm2022/lib/process/process-list/models/process-cloud-query-request.model.mjs +0 -107
- package/esm2022/lib/process/process-list/models/process-list-sorting.model.mjs +0 -40
- package/esm2022/lib/process/process-list/process-list-cloud.module.mjs +0 -45
- package/esm2022/lib/process/process-list/public-api.mjs +0 -25
- package/esm2022/lib/process/process-list/services/process-list-cloud.service.mjs +0 -253
- package/esm2022/lib/process/process-list/services/process-task-list-cloud.service.mjs +0 -109
- package/esm2022/lib/process/public-api.mjs +0 -23
- package/esm2022/lib/process/services/process-cloud.service.mjs +0 -105
- package/esm2022/lib/process/start-process/components/start-process-cloud.component.mjs +0 -465
- package/esm2022/lib/process/start-process/models/process-instance-cloud.model.mjs +0 -18
- package/esm2022/lib/process/start-process/models/process-payload-cloud.model.mjs +0 -26
- package/esm2022/lib/process/start-process/models/process-with-form-payload-cloud.model.mjs +0 -26
- package/esm2022/lib/process/start-process/public-api.mjs +0 -21
- package/esm2022/lib/process/start-process/services/start-process-cloud.service.mjs +0 -125
- package/esm2022/lib/process-services-cloud.module.mjs +0 -98
- package/esm2022/lib/providers.mjs +0 -45
- package/esm2022/lib/screen/components/screen-cloud/screen-cloud.component.mjs +0 -186
- package/esm2022/lib/screen/models/screen-cloud.model.mjs +0 -18
- package/esm2022/lib/screen/public-api.mjs +0 -18
- package/esm2022/lib/services/base-cloud.service.mjs +0 -83
- package/esm2022/lib/services/cloud-token.service.mjs +0 -23
- package/esm2022/lib/services/form-fields.interfaces.mjs +0 -55
- package/esm2022/lib/services/local-preference-cloud.service.mjs +0 -122
- package/esm2022/lib/services/notification-cloud.service.mjs +0 -45
- package/esm2022/lib/services/preference-cloud.interface.mjs +0 -18
- package/esm2022/lib/services/public-api.mjs +0 -28
- package/esm2022/lib/services/screen-rendering.service.mjs +0 -30
- package/esm2022/lib/services/task-list-cloud.service.interface.mjs +0 -18
- package/esm2022/lib/services/user-preference-cloud.service.mjs +0 -105
- package/esm2022/lib/services/variable-mapper.sevice.mjs +0 -77
- package/esm2022/lib/services/web-socket.service.mjs +0 -146
- package/esm2022/lib/task/models/start-task-cloud-request.model.mjs +0 -32
- package/esm2022/lib/task/models/task-details-cloud.model.mjs +0 -26
- package/esm2022/lib/task/models/task.model.mjs +0 -23
- package/esm2022/lib/task/public-api.mjs +0 -26
- package/esm2022/lib/task/services/task-cloud.service.mjs +0 -272
- package/esm2022/lib/task/task-cloud.module.mjs +0 -45
- package/esm2022/lib/task/task-filters/components/base-task-filters-cloud.component.mjs +0 -59
- package/esm2022/lib/task/task-filters/components/edit-task-filters/base-edit-task-filter-cloud.component.mjs +0 -467
- package/esm2022/lib/task/task-filters/components/edit-task-filters/edit-service-task-filter/edit-service-task-filter-cloud.component.mjs +0 -205
- package/esm2022/lib/task/task-filters/components/edit-task-filters/edit-task-filter/edit-task-filter-cloud.component.mjs +0 -317
- package/esm2022/lib/task/task-filters/components/service-task-filters/service-task-filters-cloud.component.mjs +0 -146
- package/esm2022/lib/task/task-filters/components/task-assignment-filter/task-assignment-filter.component.mjs +0 -142
- package/esm2022/lib/task/task-filters/components/task-filter-dialog/task-filter-dialog-cloud.component.mjs +0 -72
- package/esm2022/lib/task/task-filters/components/task-filters/task-filters-cloud.component.mjs +0 -255
- package/esm2022/lib/task/task-filters/models/filter-cloud.model.mjs +0 -207
- package/esm2022/lib/task/task-filters/public-api.mjs +0 -27
- package/esm2022/lib/task/task-filters/services/service-task-filter-cloud.service.mjs +0 -283
- package/esm2022/lib/task/task-filters/services/task-filter-cloud.service.mjs +0 -392
- package/esm2022/lib/task/task-filters/task-filters-cloud.module.mjs +0 -56
- package/esm2022/lib/task/task-form/components/task-form-cloud/task-form-cloud.component.mjs +0 -231
- package/esm2022/lib/task/task-form/components/user-task-cloud/complete-task/complete-task.directive.mjs +0 -89
- package/esm2022/lib/task/task-form/components/user-task-cloud/user-task-cloud.component.mjs +0 -309
- package/esm2022/lib/task/task-form/components/user-task-cloud-buttons/claim-task/claim-task-cloud.directive.mjs +0 -101
- package/esm2022/lib/task/task-form/components/user-task-cloud-buttons/unclaim-task/unclaim-task-cloud.directive.mjs +0 -87
- package/esm2022/lib/task/task-form/components/user-task-cloud-buttons/user-task-cloud-buttons.component.mjs +0 -85
- package/esm2022/lib/task/task-form/public-api.mjs +0 -21
- package/esm2022/lib/task/task-form/task-form.module.mjs +0 -36
- package/esm2022/lib/task/task-header/components/task-header-cloud.component.mjs +0 -280
- package/esm2022/lib/task/task-header/public-api.mjs +0 -19
- package/esm2022/lib/task/task-header/task-header-cloud.module.mjs +0 -33
- package/esm2022/lib/task/task-list/components/base-task-list-cloud.component.mjs +0 -331
- package/esm2022/lib/task/task-list/components/service-task-list/service-task-list-cloud.component.mjs +0 -115
- package/esm2022/lib/task/task-list/components/task-list/datatable/task-list-datatable-adapter.mjs +0 -31
- package/esm2022/lib/task/task-list/components/task-list/task-list-cloud.component.mjs +0 -389
- package/esm2022/lib/task/task-list/models/service-task-cloud.model.mjs +0 -18
- package/esm2022/lib/task/task-list/models/task-cloud-view.model.mjs +0 -18
- package/esm2022/lib/task/task-list/public-api.mjs +0 -23
- package/esm2022/lib/task/task-list/services/service-task-list-cloud.service.mjs +0 -115
- package/esm2022/lib/task/task-list/services/task-list-cloud.service.mjs +0 -178
- package/esm2022/lib/task/task-list/task-list-cloud.module.mjs +0 -35
- package/esm2022/lib/types.mjs +0 -18
- package/esm2022/public-api.mjs +0 -40
- /package/lib/screen/{models → components/screen-cloud}/screen-cloud.model.d.ts +0 -0
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
|
|
4
|
-
*
|
|
5
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
-
* you may not use this file except in compliance with the License.
|
|
7
|
-
* You may obtain a copy of the License at
|
|
8
|
-
*
|
|
9
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
-
*
|
|
11
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
-
* See the License for the specific language governing permissions and
|
|
15
|
-
* limitations under the License.
|
|
16
|
-
*/
|
|
17
|
-
import { ChangeDetectionStrategy, Component, inject, ViewEncapsulation } from '@angular/core';
|
|
18
|
-
import { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';
|
|
19
|
-
import { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';
|
|
20
|
-
import { TranslatePipe } from '@ngx-translate/core';
|
|
21
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
22
|
-
import { MatCardModule } from '@angular/material/card';
|
|
23
|
-
import { MatInputModule } from '@angular/material/input';
|
|
24
|
-
import * as i0 from "@angular/core";
|
|
25
|
-
import * as i1 from "@angular/material/button";
|
|
26
|
-
import * as i2 from "@angular/material/card";
|
|
27
|
-
import * as i3 from "@angular/material/input";
|
|
28
|
-
import * as i4 from "@angular/material/form-field";
|
|
29
|
-
import * as i5 from "@angular/forms";
|
|
30
|
-
import * as i6 from "@angular/material/dialog";
|
|
31
|
-
export class ProcessFilterDialogCloudComponent {
|
|
32
|
-
constructor() {
|
|
33
|
-
this.dialogRef = inject((MatDialogRef));
|
|
34
|
-
this.data = inject(MAT_DIALOG_DATA);
|
|
35
|
-
this.defaultIcon = 'inbox';
|
|
36
|
-
this.filterForm = new FormGroup({
|
|
37
|
-
name: new FormControl(this.data.name, [Validators.required])
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
static { this.ACTION_SAVE = 'SAVE'; }
|
|
41
|
-
onSaveClick() {
|
|
42
|
-
this.dialogRef.close({
|
|
43
|
-
action: ProcessFilterDialogCloudComponent.ACTION_SAVE,
|
|
44
|
-
icon: this.defaultIcon,
|
|
45
|
-
name: this.filterForm.controls.name.value
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
onCancelClick() {
|
|
49
|
-
this.dialogRef.close();
|
|
50
|
-
}
|
|
51
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProcessFilterDialogCloudComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
52
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ProcessFilterDialogCloudComponent, isStandalone: true, selector: "adf-cloud-process-filter-dialog-cloud", ngImport: i0, template: "<div class=\"adf-process-filter-dialog\">\n <span mat-dialog-title id=\"adf-process-filter-dialog-title\">\n {{ 'ADF_CLOUD_EDIT_PROCESS_FILTER.DIALOG.TITLE' | translate}}\n </span>\n <mat-card appearance=\"outlined\" class=\"adf-process-filter-dialog-card\">\n <mat-card-content class=\"adf-process-filter-dialog-card-content\">\n <form [formGroup]=\"filterForm\">\n <mat-form-field class=\"adf-process-filter-name\" [floatLabel]=\"'auto'\">\n <input\n matInput\n placeholder=\"{{ 'ADF_CLOUD_EDIT_PROCESS_FILTER.FILTER_NAME' | translate }}\"\n [formControl]=\"filterForm.controls.name\" id=\"adf-filter-name-id\">\n </mat-form-field>\n </form>\n </mat-card-content>\n <mat-card-actions class='adf-process-filter-dialog-actions'>\n <button mat-button (click)=\"onSaveClick()\" id=\"adf-save-button-id\" [disabled]=\"!filterForm.valid\">\n {{ 'ADF_CLOUD_EDIT_PROCESS_FILTER.DIALOG.SAVE' | translate}}\n </button>\n <button mat-button (click)=\"onCancelClick()\" id=\"adf-cancel-button-id\">\n {{ 'ADF_CLOUD_EDIT_PROCESS_FILTER.DIALOG.CANCEL' | translate}}\n </button>\n </mat-card-actions>\n </mat-card>\n</div>\n", styles: ["adf-cloud-process-filter-dialog-cloud .adf-process-filter-dialog .adf-process-filter-dialog-card{padding:0;box-shadow:none}adf-cloud-process-filter-dialog-cloud .adf-process-filter-dialog .adf-process-filter-dialog-card .adf-process-filter-name{flex:1}adf-cloud-process-filter-dialog-cloud .adf-process-filter-dialog .adf-process-filter-dialog-card .adf-process-filter-dialog-actions{display:flex;max-height:100%;place-content:flex-end;align-items:flex-end}\n"], dependencies: [{ kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i2.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i2.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i2.MatCardContent, selector: "mat-card-content" }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.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: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i6.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
53
|
-
}
|
|
54
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProcessFilterDialogCloudComponent, decorators: [{
|
|
55
|
-
type: Component,
|
|
56
|
-
args: [{ selector: 'adf-cloud-process-filter-dialog-cloud', standalone: true, imports: [TranslatePipe, MatButtonModule, MatCardModule, MatInputModule, ReactiveFormsModule, MatDialogModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"adf-process-filter-dialog\">\n <span mat-dialog-title id=\"adf-process-filter-dialog-title\">\n {{ 'ADF_CLOUD_EDIT_PROCESS_FILTER.DIALOG.TITLE' | translate}}\n </span>\n <mat-card appearance=\"outlined\" class=\"adf-process-filter-dialog-card\">\n <mat-card-content class=\"adf-process-filter-dialog-card-content\">\n <form [formGroup]=\"filterForm\">\n <mat-form-field class=\"adf-process-filter-name\" [floatLabel]=\"'auto'\">\n <input\n matInput\n placeholder=\"{{ 'ADF_CLOUD_EDIT_PROCESS_FILTER.FILTER_NAME' | translate }}\"\n [formControl]=\"filterForm.controls.name\" id=\"adf-filter-name-id\">\n </mat-form-field>\n </form>\n </mat-card-content>\n <mat-card-actions class='adf-process-filter-dialog-actions'>\n <button mat-button (click)=\"onSaveClick()\" id=\"adf-save-button-id\" [disabled]=\"!filterForm.valid\">\n {{ 'ADF_CLOUD_EDIT_PROCESS_FILTER.DIALOG.SAVE' | translate}}\n </button>\n <button mat-button (click)=\"onCancelClick()\" id=\"adf-cancel-button-id\">\n {{ 'ADF_CLOUD_EDIT_PROCESS_FILTER.DIALOG.CANCEL' | translate}}\n </button>\n </mat-card-actions>\n </mat-card>\n</div>\n", styles: ["adf-cloud-process-filter-dialog-cloud .adf-process-filter-dialog .adf-process-filter-dialog-card{padding:0;box-shadow:none}adf-cloud-process-filter-dialog-cloud .adf-process-filter-dialog .adf-process-filter-dialog-card .adf-process-filter-name{flex:1}adf-cloud-process-filter-dialog-cloud .adf-process-filter-dialog .adf-process-filter-dialog-card .adf-process-filter-dialog-actions{display:flex;max-height:100%;place-content:flex-end;align-items:flex-end}\n"] }]
|
|
57
|
-
}] });
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1maWx0ZXItZGlhbG9nLWNsb3VkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvcHJvY2Vzcy9wcm9jZXNzLWZpbHRlcnMvY29tcG9uZW50cy9wcm9jZXNzLWZpbHRlci1kaWFsb2cvcHJvY2Vzcy1maWx0ZXItZGlhbG9nLWNsb3VkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvcHJvY2Vzcy9wcm9jZXNzLWZpbHRlcnMvY29tcG9uZW50cy9wcm9jZXNzLWZpbHRlci1kaWFsb2cvcHJvY2Vzcy1maWx0ZXItZGlhbG9nLWNsb3VkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlGLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7Ozs7QUFXekQsTUFBTSxPQUFPLGlDQUFpQztJQVQ5QztRQVVvQixjQUFTLEdBQUcsTUFBTSxDQUFDLENBQUEsWUFBK0MsQ0FBQSxDQUFDLENBQUM7UUFDcEUsU0FBSSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUcvQyxnQkFBVyxHQUFHLE9BQU8sQ0FBQztRQUV0QixlQUFVLEdBQUcsSUFBSSxTQUFTLENBQUM7WUFDdkIsSUFBSSxFQUFFLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQy9ELENBQUMsQ0FBQztLQWFOO2FBbEJpQixnQkFBVyxHQUFHLE1BQU0sQUFBVCxDQUFVO0lBT25DLFdBQVc7UUFDUCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztZQUNqQixNQUFNLEVBQUUsaUNBQWlDLENBQUMsV0FBVztZQUNyRCxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVc7WUFDdEIsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLO1NBQzVDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxhQUFhO1FBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMzQixDQUFDOytHQXJCUSxpQ0FBaUM7bUdBQWpDLGlDQUFpQyxpR0NsQzlDLDQxQ0F5QkEsZ2dCREdjLGFBQWEsaURBQUUsZUFBZSwyTkFBRSxhQUFhLHlWQUFFLGNBQWMscWpCQUFFLG1CQUFtQiwrOUJBQUUsZUFBZTs7NEZBTXBHLGlDQUFpQztrQkFUN0MsU0FBUzsrQkFDSSx1Q0FBdUMsY0FDckMsSUFBSSxXQUNQLENBQUMsYUFBYSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLG1CQUFtQixFQUFFLGVBQWUsQ0FBQyxtQkFHN0YsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCDCqSAyMDA1LTIwMjUgSHlsYW5kIFNvZnR3YXJlLCBJbmMuIGFuZCBpdHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5qZWN0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nTW9kdWxlLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdENhcmRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jYXJkJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FkZi1jbG91ZC1wcm9jZXNzLWZpbHRlci1kaWFsb2ctY2xvdWQnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1RyYW5zbGF0ZVBpcGUsIE1hdEJ1dHRvbk1vZHVsZSwgTWF0Q2FyZE1vZHVsZSwgTWF0SW5wdXRNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIE1hdERpYWxvZ01vZHVsZV0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Byb2Nlc3MtZmlsdGVyLWRpYWxvZy1jbG91ZC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vcHJvY2Vzcy1maWx0ZXItZGlhbG9nLWNsb3VkLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBQcm9jZXNzRmlsdGVyRGlhbG9nQ2xvdWRDb21wb25lbnQge1xuICAgIHB1YmxpYyByZWFkb25seSBkaWFsb2dSZWYgPSBpbmplY3QoTWF0RGlhbG9nUmVmPFByb2Nlc3NGaWx0ZXJEaWFsb2dDbG91ZENvbXBvbmVudD4pO1xuICAgIHB1YmxpYyByZWFkb25seSBkYXRhID0gaW5qZWN0KE1BVF9ESUFMT0dfREFUQSk7XG5cbiAgICBwdWJsaWMgc3RhdGljIEFDVElPTl9TQVZFID0gJ1NBVkUnO1xuICAgIGRlZmF1bHRJY29uID0gJ2luYm94JztcblxuICAgIGZpbHRlckZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgICAgbmFtZTogbmV3IEZvcm1Db250cm9sKHRoaXMuZGF0YS5uYW1lLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pXG4gICAgfSk7XG5cbiAgICBvblNhdmVDbGljaygpIHtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2Uoe1xuICAgICAgICAgICAgYWN0aW9uOiBQcm9jZXNzRmlsdGVyRGlhbG9nQ2xvdWRDb21wb25lbnQuQUNUSU9OX1NBVkUsXG4gICAgICAgICAgICBpY29uOiB0aGlzLmRlZmF1bHRJY29uLFxuICAgICAgICAgICAgbmFtZTogdGhpcy5maWx0ZXJGb3JtLmNvbnRyb2xzLm5hbWUudmFsdWVcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25DYW5jZWxDbGljaygpIHtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYWRmLXByb2Nlc3MtZmlsdGVyLWRpYWxvZ1wiPlxuICAgIDxzcGFuIG1hdC1kaWFsb2ctdGl0bGUgaWQ9XCJhZGYtcHJvY2Vzcy1maWx0ZXItZGlhbG9nLXRpdGxlXCI+XG4gICAgICAgICB7eyAnQURGX0NMT1VEX0VESVRfUFJPQ0VTU19GSUxURVIuRElBTE9HLlRJVExFJyB8IHRyYW5zbGF0ZX19XG4gICAgPC9zcGFuPlxuICAgIDxtYXQtY2FyZCBhcHBlYXJhbmNlPVwib3V0bGluZWRcIiBjbGFzcz1cImFkZi1wcm9jZXNzLWZpbHRlci1kaWFsb2ctY2FyZFwiPlxuICAgICAgICA8bWF0LWNhcmQtY29udGVudCBjbGFzcz1cImFkZi1wcm9jZXNzLWZpbHRlci1kaWFsb2ctY2FyZC1jb250ZW50XCI+XG4gICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZpbHRlckZvcm1cIj5cbiAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJhZGYtcHJvY2Vzcy1maWx0ZXItbmFtZVwiIFtmbG9hdExhYmVsXT1cIidhdXRvJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ0FERl9DTE9VRF9FRElUX1BST0NFU1NfRklMVEVSLkZJTFRFUl9OQU1FJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmaWx0ZXJGb3JtLmNvbnRyb2xzLm5hbWVcIiBpZD1cImFkZi1maWx0ZXItbmFtZS1pZFwiPlxuICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgICAgICAgPG1hdC1jYXJkLWFjdGlvbnMgY2xhc3M9J2FkZi1wcm9jZXNzLWZpbHRlci1kaWFsb2ctYWN0aW9ucyc+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cIm9uU2F2ZUNsaWNrKClcIiBpZD1cImFkZi1zYXZlLWJ1dHRvbi1pZFwiIFtkaXNhYmxlZF09XCIhZmlsdGVyRm9ybS52YWxpZFwiPlxuICAgICAgICAgICAgICAgIHt7ICdBREZfQ0xPVURfRURJVF9QUk9DRVNTX0ZJTFRFUi5ESUFMT0cuU0FWRScgfCB0cmFuc2xhdGV9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cIm9uQ2FuY2VsQ2xpY2soKVwiIGlkPVwiYWRmLWNhbmNlbC1idXR0b24taWRcIj5cbiAgICAgICAgICAgICAgIHt7ICdBREZfQ0xPVURfRURJVF9QUk9DRVNTX0ZJTFRFUi5ESUFMT0cuQ0FOQ0VMJyB8IHRyYW5zbGF0ZX19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9tYXQtY2FyZC1hY3Rpb25zPlxuICAgIDwvbWF0LWNhcmQ+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -1,292 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
|
|
4
|
-
*
|
|
5
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
-
* you may not use this file except in compliance with the License.
|
|
7
|
-
* You may obtain a copy of the License at
|
|
8
|
-
*
|
|
9
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
-
*
|
|
11
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
-
* See the License for the specific language governing permissions and
|
|
15
|
-
* limitations under the License.
|
|
16
|
-
*/
|
|
17
|
-
import { Component, DestroyRef, EventEmitter, inject, Input, Output, ViewEncapsulation } from '@angular/core';
|
|
18
|
-
import { ProcessFilterCloudService } from '../../services/process-filter-cloud.service';
|
|
19
|
-
import { AppConfigService, IconComponent, TranslationService } from '@alfresco/adf-core';
|
|
20
|
-
import { debounceTime, tap } from 'rxjs/operators';
|
|
21
|
-
import { ProcessListCloudService } from '../../../process-list/services/process-list-cloud.service';
|
|
22
|
-
import { ProcessFilterCloudAdapter } from '../../../process-list/models/process-cloud-query-request.model';
|
|
23
|
-
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
24
|
-
import { TranslatePipe } from '@ngx-translate/core';
|
|
25
|
-
import { AsyncPipe, NgForOf, NgIf } from '@angular/common';
|
|
26
|
-
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
27
|
-
import { MatListModule } from '@angular/material/list';
|
|
28
|
-
import * as i0 from "@angular/core";
|
|
29
|
-
import * as i1 from "@angular/material/progress-spinner";
|
|
30
|
-
import * as i2 from "@angular/material/list";
|
|
31
|
-
export class ProcessFiltersCloudComponent {
|
|
32
|
-
constructor() {
|
|
33
|
-
/** (required) The application name */
|
|
34
|
-
this.appName = '';
|
|
35
|
-
/** (optional) From Activiti 8.7.0 forward, use the 'POST' method to get the process count */
|
|
36
|
-
this.searchApiMethod = 'GET';
|
|
37
|
-
/** (optional) Toggles showing an icon by the side of each filter */
|
|
38
|
-
this.showIcons = false;
|
|
39
|
-
/** Emitted when a filter is being selected based on the filterParam input. */
|
|
40
|
-
this.filterSelected = new EventEmitter();
|
|
41
|
-
/** Emitted when a filter is being clicked from the UI. */
|
|
42
|
-
this.filterClicked = new EventEmitter();
|
|
43
|
-
/** Emitted when filters are loaded successfully */
|
|
44
|
-
this.success = new EventEmitter();
|
|
45
|
-
/** Emitted when any error occurs while loading the filters */
|
|
46
|
-
this.error = new EventEmitter();
|
|
47
|
-
/** Emitted when filter is updated. */
|
|
48
|
-
this.updatedFilter = new EventEmitter();
|
|
49
|
-
this.filters = [];
|
|
50
|
-
this.counters = {};
|
|
51
|
-
this.currentFiltersValues = {};
|
|
52
|
-
this.updatedFiltersSet = new Set();
|
|
53
|
-
this.destroyRef = inject(DestroyRef);
|
|
54
|
-
this.processFilterCloudService = inject(ProcessFilterCloudService);
|
|
55
|
-
this.translationService = inject(TranslationService);
|
|
56
|
-
this.appConfigService = inject(AppConfigService);
|
|
57
|
-
this.processListCloudService = inject(ProcessListCloudService);
|
|
58
|
-
}
|
|
59
|
-
ngOnInit() {
|
|
60
|
-
this.enableNotifications = this.appConfigService.get('notifications', true);
|
|
61
|
-
if (this.appName === '') {
|
|
62
|
-
this.getFilters(this.appName);
|
|
63
|
-
}
|
|
64
|
-
this.initProcessNotification();
|
|
65
|
-
this.getFilterKeysAfterExternalRefreshing();
|
|
66
|
-
}
|
|
67
|
-
ngOnChanges(changes) {
|
|
68
|
-
const appName = changes['appName'];
|
|
69
|
-
const filter = changes['filterParam'];
|
|
70
|
-
if (appName?.currentValue) {
|
|
71
|
-
this.getFilters(appName.currentValue);
|
|
72
|
-
}
|
|
73
|
-
else if (filter && filter.currentValue !== filter.previousValue) {
|
|
74
|
-
this.selectFilterAndEmit(filter.currentValue);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Fetch the filter list based on appName
|
|
79
|
-
*
|
|
80
|
-
* @param appName application name
|
|
81
|
-
*/
|
|
82
|
-
getFilters(appName) {
|
|
83
|
-
this.filters$ = this.processFilterCloudService.getProcessFilters(appName);
|
|
84
|
-
this.filters$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe({
|
|
85
|
-
next: (res) => {
|
|
86
|
-
this.resetFilter();
|
|
87
|
-
this.filters = res || [];
|
|
88
|
-
this.initFilterCounters();
|
|
89
|
-
this.selectFilterAndEmit(this.filterParam);
|
|
90
|
-
this.success.emit(res);
|
|
91
|
-
this.updateFilterCounters();
|
|
92
|
-
},
|
|
93
|
-
error: (err) => {
|
|
94
|
-
this.error.emit(err);
|
|
95
|
-
}
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Initialize counter collection for filters
|
|
100
|
-
*/
|
|
101
|
-
initFilterCounters() {
|
|
102
|
-
this.filters.forEach((filter) => (this.counters[filter.key] = 0));
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Pass the selected filter as next
|
|
106
|
-
*
|
|
107
|
-
* @param paramFilter filter model
|
|
108
|
-
*/
|
|
109
|
-
selectFilter(paramFilter) {
|
|
110
|
-
if (!paramFilter) {
|
|
111
|
-
return;
|
|
112
|
-
}
|
|
113
|
-
const preferredFilter = this.filters.find((filter) => paramFilter.id === filter.id);
|
|
114
|
-
this.currentFilter =
|
|
115
|
-
preferredFilter ??
|
|
116
|
-
this.filters.find((filter, index) => paramFilter.id === filter.id ||
|
|
117
|
-
(paramFilter.name && this.checkFilterNamesEquality(paramFilter.name, filter.name)) ||
|
|
118
|
-
(paramFilter.key && paramFilter.key === filter.key) ||
|
|
119
|
-
paramFilter.index === index); // fallback to preserve the previous behavior
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* Check equality of the filter names by translating the given name strings
|
|
123
|
-
*
|
|
124
|
-
* @param name1 source name
|
|
125
|
-
* @param name2 target name
|
|
126
|
-
* @returns `true` if filter names are equal, otherwise `false`
|
|
127
|
-
*/
|
|
128
|
-
checkFilterNamesEquality(name1, name2) {
|
|
129
|
-
const translatedName1 = this.translationService.instant(name1);
|
|
130
|
-
const translatedName2 = this.translationService.instant(name2);
|
|
131
|
-
return translatedName1.toLocaleLowerCase() === translatedName2.toLocaleLowerCase();
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Selects and emits the given filter
|
|
135
|
-
*
|
|
136
|
-
* @param newParamFilter new parameter filter
|
|
137
|
-
*/
|
|
138
|
-
selectFilterAndEmit(newParamFilter) {
|
|
139
|
-
if (newParamFilter) {
|
|
140
|
-
this.selectFilter(newParamFilter);
|
|
141
|
-
this.filterSelected.emit(this.currentFilter);
|
|
142
|
-
}
|
|
143
|
-
else {
|
|
144
|
-
this.currentFilter = undefined;
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
/**
|
|
148
|
-
* Select filter with the id
|
|
149
|
-
*
|
|
150
|
-
* @param id filter id
|
|
151
|
-
*/
|
|
152
|
-
selectFilterById(id) {
|
|
153
|
-
this.selectFilterAndEmit({ id });
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* Selects and emits the clicked filter
|
|
157
|
-
*
|
|
158
|
-
* @param filter filter model
|
|
159
|
-
*/
|
|
160
|
-
onFilterClick(filter) {
|
|
161
|
-
if (filter) {
|
|
162
|
-
this.selectFilter(filter);
|
|
163
|
-
this.filterClicked.emit(this.currentFilter);
|
|
164
|
-
this.updateFilterCounter(this.currentFilter);
|
|
165
|
-
this.updatedFiltersSet.delete(filter.key);
|
|
166
|
-
}
|
|
167
|
-
else {
|
|
168
|
-
this.currentFilter = undefined;
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
/**
|
|
172
|
-
* Select as default process filter the first in the list
|
|
173
|
-
*/
|
|
174
|
-
selectDefaultProcessFilter() {
|
|
175
|
-
if (!this.isFilterListEmpty()) {
|
|
176
|
-
this.currentFilter = this.filters[0];
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
/**
|
|
180
|
-
* Get current filter
|
|
181
|
-
*
|
|
182
|
-
* @returns filter model
|
|
183
|
-
*/
|
|
184
|
-
getCurrentFilter() {
|
|
185
|
-
return this.currentFilter;
|
|
186
|
-
}
|
|
187
|
-
/**
|
|
188
|
-
* Check if the filter list is empty
|
|
189
|
-
*
|
|
190
|
-
* @returns `true` if filter list is empty, otherwise `false`
|
|
191
|
-
*/
|
|
192
|
-
isFilterListEmpty() {
|
|
193
|
-
return this.filters === undefined || (this.filters && this.filters.length === 0);
|
|
194
|
-
}
|
|
195
|
-
/**
|
|
196
|
-
* Reset the filters
|
|
197
|
-
*/
|
|
198
|
-
resetFilter() {
|
|
199
|
-
this.filters = [];
|
|
200
|
-
this.currentFilter = undefined;
|
|
201
|
-
}
|
|
202
|
-
isActiveFilter(filter) {
|
|
203
|
-
return this.currentFilter.name === filter.name;
|
|
204
|
-
}
|
|
205
|
-
initProcessNotification() {
|
|
206
|
-
if (this.appName && this.enableNotifications) {
|
|
207
|
-
this.processFilterCloudService
|
|
208
|
-
.getProcessNotificationSubscription(this.appName)
|
|
209
|
-
.pipe(debounceTime(1000), takeUntilDestroyed(this.destroyRef))
|
|
210
|
-
.subscribe(() => {
|
|
211
|
-
this.updateFilterCounters();
|
|
212
|
-
});
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
/**
|
|
216
|
-
* Iterate over filters and update counters
|
|
217
|
-
*/
|
|
218
|
-
updateFilterCounters() {
|
|
219
|
-
this.filters.forEach((filter) => {
|
|
220
|
-
this.updateFilterCounter(filter);
|
|
221
|
-
});
|
|
222
|
-
}
|
|
223
|
-
/**
|
|
224
|
-
* Get current value for filter and check if value has changed
|
|
225
|
-
*
|
|
226
|
-
* @param filter filter
|
|
227
|
-
*/
|
|
228
|
-
updateFilterCounter(filter) {
|
|
229
|
-
if (!filter?.showCounter) {
|
|
230
|
-
return;
|
|
231
|
-
}
|
|
232
|
-
this.fetchProcessFilterCounter(filter)
|
|
233
|
-
.pipe(tap((filterCounter) => {
|
|
234
|
-
this.checkIfFilterValuesHasBeenUpdated(filter.key, filterCounter);
|
|
235
|
-
}))
|
|
236
|
-
.subscribe((data) => {
|
|
237
|
-
this.counters = {
|
|
238
|
-
...this.counters,
|
|
239
|
-
[filter.key]: data
|
|
240
|
-
};
|
|
241
|
-
});
|
|
242
|
-
}
|
|
243
|
-
checkIfFilterValuesHasBeenUpdated(filterKey, filterValue) {
|
|
244
|
-
if (this.currentFiltersValues[filterKey] === undefined || this.currentFiltersValues[filterKey] !== filterValue) {
|
|
245
|
-
this.currentFiltersValues[filterKey] = filterValue;
|
|
246
|
-
this.updatedFilter.emit(filterKey);
|
|
247
|
-
this.updatedFiltersSet.add(filterKey);
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
isFilterUpdated(filterName) {
|
|
251
|
-
return this.updatedFiltersSet.has(filterName);
|
|
252
|
-
}
|
|
253
|
-
/**
|
|
254
|
-
* Get filer key when filter was refreshed by external action
|
|
255
|
-
*
|
|
256
|
-
*/
|
|
257
|
-
getFilterKeysAfterExternalRefreshing() {
|
|
258
|
-
this.processFilterCloudService.filterKeyToBeRefreshed$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((filterKey) => {
|
|
259
|
-
this.updatedFiltersSet.delete(filterKey);
|
|
260
|
-
});
|
|
261
|
-
}
|
|
262
|
-
fetchProcessFilterCounter(filter) {
|
|
263
|
-
return this.searchApiMethod === 'POST'
|
|
264
|
-
? this.processListCloudService.getProcessListCounter(new ProcessFilterCloudAdapter(filter))
|
|
265
|
-
: this.processListCloudService.getProcessCounter(filter.appName, filter.status);
|
|
266
|
-
}
|
|
267
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProcessFiltersCloudComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
268
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ProcessFiltersCloudComponent, isStandalone: true, selector: "adf-cloud-process-filters", inputs: { appName: "appName", searchApiMethod: "searchApiMethod", filterParam: "filterParam", showIcons: "showIcons" }, outputs: { filterSelected: "filterSelected", filterClicked: "filterClicked", success: "success", error: "error", updatedFilter: "updatedFilter" }, usesOnChanges: true, ngImport: i0, template: "<mat-action-list class=\"adf-process-filters\" *ngIf=\"filters$ | async as filterList; else loading\">\n <button\n *ngFor=\"let filter of filterList\"\n mat-list-item\n (click)=\"onFilterClick(filter)\"\n [attr.aria-label]=\"filter.name | translate\"\n [id]=\"filter.id\"\n [attr.data-automation-id]=\"filter.key + '_filter'\"\n [class.adf-active]=\"currentFilter === filter\"\n >\n <div class=\"adf-process-filters__entry\">\n <div>\n <adf-icon\n data-automation-id=\"adf-filter-icon\"\n *ngIf=\"showIcons\"\n [value]=\"filter.icon\" />\n <span\n data-automation-id=\"adf-filter-label\"\n class=\"adf-filter-action-button__label\">\n {{ filter.name | translate }}\n </span>\n </div>\n <span\n *ngIf=\"counters[filter.key]\"\n [attr.data-automation-id]=\"filter.key + '_filter-counter'\"\n class=\"adf-process-filters__entry-counter\"\n [class.adf-active]=\"isFilterUpdated(filter.key)\"\n >\n {{ counters[filter.key] }}\n </span>\n </div>\n </button>\n</mat-action-list>\n<ng-template #loading>\n <ng-container>\n <div class=\"adf-app-list-spinner\">\n <mat-spinner />\n </div>\n </ng-container>\n</ng-template>\n", styles: [".adf-process-filters{margin-right:calc(-1 * var(--adf-theme-spacing))}.adf-process-filters__entry{font-size:var(--theme-body-1-font-size);color:var(--adf-theme-foreground-text-color-054);display:flex;align-items:center;justify-content:space-between;flex:1;height:100%;gap:var(--adf-theme-spacing)}.adf-process-filters__entry:hover{color:var(--theme-primary-color)}.adf-process-filters__entry-counter{padding:0 5px;border-radius:15px}.adf-process-filters__entry-counter.adf-active{background-color:var(--theme-accent-color);color:var(--theme-accent-color-default-contrast);font-size:smaller}.adf-process-filters .adf-active .adf-process-filters__entry{color:var(--theme-primary-color)}\n"], dependencies: [{ kind: "pipe", type: TranslatePipe, name: "translate" }, { kind: "component", type: IconComponent, selector: "adf-icon", inputs: ["color", "fontSet", "value"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i2.MatActionList, selector: "mat-action-list", exportAs: ["matActionList"] }, { kind: "component", type: i2.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
269
|
-
}
|
|
270
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ProcessFiltersCloudComponent, decorators: [{
|
|
271
|
-
type: Component,
|
|
272
|
-
args: [{ selector: 'adf-cloud-process-filters', standalone: true, imports: [TranslatePipe, IconComponent, NgIf, MatProgressSpinnerModule, NgForOf, MatListModule, AsyncPipe], encapsulation: ViewEncapsulation.None, template: "<mat-action-list class=\"adf-process-filters\" *ngIf=\"filters$ | async as filterList; else loading\">\n <button\n *ngFor=\"let filter of filterList\"\n mat-list-item\n (click)=\"onFilterClick(filter)\"\n [attr.aria-label]=\"filter.name | translate\"\n [id]=\"filter.id\"\n [attr.data-automation-id]=\"filter.key + '_filter'\"\n [class.adf-active]=\"currentFilter === filter\"\n >\n <div class=\"adf-process-filters__entry\">\n <div>\n <adf-icon\n data-automation-id=\"adf-filter-icon\"\n *ngIf=\"showIcons\"\n [value]=\"filter.icon\" />\n <span\n data-automation-id=\"adf-filter-label\"\n class=\"adf-filter-action-button__label\">\n {{ filter.name | translate }}\n </span>\n </div>\n <span\n *ngIf=\"counters[filter.key]\"\n [attr.data-automation-id]=\"filter.key + '_filter-counter'\"\n class=\"adf-process-filters__entry-counter\"\n [class.adf-active]=\"isFilterUpdated(filter.key)\"\n >\n {{ counters[filter.key] }}\n </span>\n </div>\n </button>\n</mat-action-list>\n<ng-template #loading>\n <ng-container>\n <div class=\"adf-app-list-spinner\">\n <mat-spinner />\n </div>\n </ng-container>\n</ng-template>\n", styles: [".adf-process-filters{margin-right:calc(-1 * var(--adf-theme-spacing))}.adf-process-filters__entry{font-size:var(--theme-body-1-font-size);color:var(--adf-theme-foreground-text-color-054);display:flex;align-items:center;justify-content:space-between;flex:1;height:100%;gap:var(--adf-theme-spacing)}.adf-process-filters__entry:hover{color:var(--theme-primary-color)}.adf-process-filters__entry-counter{padding:0 5px;border-radius:15px}.adf-process-filters__entry-counter.adf-active{background-color:var(--theme-accent-color);color:var(--theme-accent-color-default-contrast);font-size:smaller}.adf-process-filters .adf-active .adf-process-filters__entry{color:var(--theme-primary-color)}\n"] }]
|
|
273
|
-
}], propDecorators: { appName: [{
|
|
274
|
-
type: Input
|
|
275
|
-
}], searchApiMethod: [{
|
|
276
|
-
type: Input
|
|
277
|
-
}], filterParam: [{
|
|
278
|
-
type: Input
|
|
279
|
-
}], showIcons: [{
|
|
280
|
-
type: Input
|
|
281
|
-
}], filterSelected: [{
|
|
282
|
-
type: Output
|
|
283
|
-
}], filterClicked: [{
|
|
284
|
-
type: Output
|
|
285
|
-
}], success: [{
|
|
286
|
-
type: Output
|
|
287
|
-
}], error: [{
|
|
288
|
-
type: Output
|
|
289
|
-
}], updatedFilter: [{
|
|
290
|
-
type: Output
|
|
291
|
-
}] } });
|
|
292
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY2Vzcy1maWx0ZXJzLWNsb3VkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvcHJvY2Vzcy9wcm9jZXNzLWZpbHRlcnMvY29tcG9uZW50cy9wcm9jZXNzLWZpbHRlcnMvcHJvY2Vzcy1maWx0ZXJzLWNsb3VkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvcHJvY2Vzcy9wcm9jZXNzLWZpbHRlcnMvY29tcG9uZW50cy9wcm9jZXNzLWZpbHRlcnMvcHJvY2Vzcy1maWx0ZXJzLWNsb3VkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWhKLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBRXhGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV6RixPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQ3BHLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBQzNHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsU0FB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Ozs0RkFLaEcsNEJBQTRCO2tCQVJ4QyxTQUFTOytCQUNJLDJCQUEyQixjQUN6QixJQUFJLFdBQ1AsQ0FBQyxhQUFhLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSx3QkFBd0IsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFNBQVMsQ0FBQyxpQkFHM0YsaUJBQWlCLENBQUMsSUFBSTs4QkFLckMsT0FBTztzQkFETixLQUFLO2dCQUtOLGVBQWU7c0JBRGQsS0FBSztnQkFLTixXQUFXO3NCQURWLEtBQUs7Z0JBS04sU0FBUztzQkFEUixLQUFLO2dCQUtOLGNBQWM7c0JBRGIsTUFBTTtnQkFLUCxhQUFhO3NCQURaLE1BQU07Z0JBS1AsT0FBTztzQkFETixNQUFNO2dCQUtQLEtBQUs7c0JBREosTUFBTTtnQkFLUCxhQUFhO3NCQURaLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgRGVzdHJveVJlZiwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUHJvY2Vzc0ZpbHRlckNsb3VkU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Byb2Nlc3MtZmlsdGVyLWNsb3VkLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJvY2Vzc0ZpbHRlckNsb3VkTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvcHJvY2Vzcy1maWx0ZXItY2xvdWQubW9kZWwnO1xuaW1wb3J0IHsgQXBwQ29uZmlnU2VydmljZSwgSWNvbkNvbXBvbmVudCwgVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnQGFsZnJlc2NvL2FkZi1jb3JlJztcbmltcG9ydCB7IEZpbHRlclBhcmFtc01vZGVsIH0gZnJvbSAnLi4vLi4vLi4vLi4vdGFzay90YXNrLWZpbHRlcnMvbW9kZWxzL2ZpbHRlci1jbG91ZC5tb2RlbCc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFByb2Nlc3NMaXN0Q2xvdWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vcHJvY2Vzcy1saXN0L3NlcnZpY2VzL3Byb2Nlc3MtbGlzdC1jbG91ZC5zZXJ2aWNlJztcbmltcG9ydCB7IFByb2Nlc3NGaWx0ZXJDbG91ZEFkYXB0ZXIgfSBmcm9tICcuLi8uLi8uLi9wcm9jZXNzLWxpc3QvbW9kZWxzL3Byb2Nlc3MtY2xvdWQtcXVlcnktcmVxdWVzdC5tb2RlbCc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBUcmFuc2xhdGVQaXBlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBBc3luY1BpcGUsIE5nRm9yT2YsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5pbXBvcnQgeyBNYXRMaXN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWRmLWNsb3VkLXByb2Nlc3MtZmlsdGVycycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbVHJhbnNsYXRlUGlwZSwgSWNvbkNvbXBvbmVudCwgTmdJZiwgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlLCBOZ0Zvck9mLCBNYXRMaXN0TW9kdWxlLCBBc3luY1BpcGVdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9wcm9jZXNzLWZpbHRlcnMtY2xvdWQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3Byb2Nlc3MtZmlsdGVycy1jbG91ZC5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgUHJvY2Vzc0ZpbHRlcnNDbG91ZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgICAvKiogKHJlcXVpcmVkKSBUaGUgYXBwbGljYXRpb24gbmFtZSAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXBwTmFtZTogc3RyaW5nID0gJyc7XG5cbiAgICAvKiogKG9wdGlvbmFsKSBGcm9tIEFjdGl2aXRpIDguNy4wIGZvcndhcmQsIHVzZSB0aGUgJ1BPU1QnIG1ldGhvZCB0byBnZXQgdGhlIHByb2Nlc3MgY291bnQgKi9cbiAgICBASW5wdXQoKVxuICAgIHNlYXJjaEFwaU1ldGhvZDogJ0dFVCcgfCAnUE9TVCcgPSAnR0VUJztcblxuICAgIC8qKiAob3B0aW9uYWwpIFRoZSBmaWx0ZXIgdG8gYmUgc2VsZWN0ZWQgYnkgZGVmYXVsdCAqL1xuICAgIEBJbnB1dCgpXG4gICAgZmlsdGVyUGFyYW06IEZpbHRlclBhcmFtc01vZGVsO1xuXG4gICAgLyoqIChvcHRpb25hbCkgVG9nZ2xlcyBzaG93aW5nIGFuIGljb24gYnkgdGhlIHNpZGUgb2YgZWFjaCBmaWx0ZXIgKi9cbiAgICBASW5wdXQoKVxuICAgIHNob3dJY29uczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiBhIGZpbHRlciBpcyBiZWluZyBzZWxlY3RlZCBiYXNlZCBvbiB0aGUgZmlsdGVyUGFyYW0gaW5wdXQuICovXG4gICAgQE91dHB1dCgpXG4gICAgZmlsdGVyU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFByb2Nlc3NGaWx0ZXJDbG91ZE1vZGVsPigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiBhIGZpbHRlciBpcyBiZWluZyBjbGlja2VkIGZyb20gdGhlIFVJLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGZpbHRlckNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFByb2Nlc3NGaWx0ZXJDbG91ZE1vZGVsPigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiBmaWx0ZXJzIGFyZSBsb2FkZWQgc3VjY2Vzc2Z1bGx5ICovXG4gICAgQE91dHB1dCgpXG4gICAgc3VjY2VzcyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiBhbnkgZXJyb3Igb2NjdXJzIHdoaWxlIGxvYWRpbmcgdGhlIGZpbHRlcnMgKi9cbiAgICBAT3V0cHV0KClcbiAgICBlcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiBmaWx0ZXIgaXMgdXBkYXRlZC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICB1cGRhdGVkRmlsdGVyOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gICAgZmlsdGVycyQ6IE9ic2VydmFibGU8UHJvY2Vzc0ZpbHRlckNsb3VkTW9kZWxbXT47XG4gICAgY3VycmVudEZpbHRlcj86IFByb2Nlc3NGaWx0ZXJDbG91ZE1vZGVsO1xuICAgIGZpbHRlcnM6IFByb2Nlc3NGaWx0ZXJDbG91ZE1vZGVsW10gPSBbXTtcbiAgICBjb3VudGVyczogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHt9O1xuICAgIGVuYWJsZU5vdGlmaWNhdGlvbnM6IGJvb2xlYW47XG4gICAgY3VycmVudEZpbHRlcnNWYWx1ZXM6IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH0gPSB7fTtcbiAgICB1cGRhdGVkRmlsdGVyc1NldCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvY2Vzc0ZpbHRlckNsb3VkU2VydmljZSA9IGluamVjdChQcm9jZXNzRmlsdGVyQ2xvdWRTZXJ2aWNlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0aW9uU2VydmljZSA9IGluamVjdChUcmFuc2xhdGlvblNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYXBwQ29uZmlnU2VydmljZSA9IGluamVjdChBcHBDb25maWdTZXJ2aWNlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb2Nlc3NMaXN0Q2xvdWRTZXJ2aWNlID0gaW5qZWN0KFByb2Nlc3NMaXN0Q2xvdWRTZXJ2aWNlKTtcblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmVuYWJsZU5vdGlmaWNhdGlvbnMgPSB0aGlzLmFwcENvbmZpZ1NlcnZpY2UuZ2V0KCdub3RpZmljYXRpb25zJywgdHJ1ZSk7XG4gICAgICAgIGlmICh0aGlzLmFwcE5hbWUgPT09ICcnKSB7XG4gICAgICAgICAgICB0aGlzLmdldEZpbHRlcnModGhpcy5hcHBOYW1lKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmluaXRQcm9jZXNzTm90aWZpY2F0aW9uKCk7XG4gICAgICAgIHRoaXMuZ2V0RmlsdGVyS2V5c0FmdGVyRXh0ZXJuYWxSZWZyZXNoaW5nKCk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBjb25zdCBhcHBOYW1lID0gY2hhbmdlc1snYXBwTmFtZSddO1xuICAgICAgICBjb25zdCBmaWx0ZXIgPSBjaGFuZ2VzWydmaWx0ZXJQYXJhbSddO1xuICAgICAgICBpZiAoYXBwTmFtZT8uY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmdldEZpbHRlcnMoYXBwTmFtZS5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9IGVsc2UgaWYgKGZpbHRlciAmJiBmaWx0ZXIuY3VycmVudFZhbHVlICE9PSBmaWx0ZXIucHJldmlvdXNWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RGaWx0ZXJBbmRFbWl0KGZpbHRlci5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmV0Y2ggdGhlIGZpbHRlciBsaXN0IGJhc2VkIG9uIGFwcE5hbWVcbiAgICAgKlxuICAgICAqIEBwYXJhbSBhcHBOYW1lIGFwcGxpY2F0aW9uIG5hbWVcbiAgICAgKi9cbiAgICBnZXRGaWx0ZXJzKGFwcE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmZpbHRlcnMkID0gdGhpcy5wcm9jZXNzRmlsdGVyQ2xvdWRTZXJ2aWNlLmdldFByb2Nlc3NGaWx0ZXJzKGFwcE5hbWUpO1xuXG4gICAgICAgIHRoaXMuZmlsdGVycyQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2V0RmlsdGVyKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJzID0gcmVzIHx8IFtdO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5pdEZpbHRlckNvdW50ZXJzKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RGaWx0ZXJBbmRFbWl0KHRoaXMuZmlsdGVyUGFyYW0pO1xuICAgICAgICAgICAgICAgIHRoaXMuc3VjY2Vzcy5lbWl0KHJlcyk7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVGaWx0ZXJDb3VudGVycygpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmVycm9yLmVtaXQoZXJyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5pdGlhbGl6ZSBjb3VudGVyIGNvbGxlY3Rpb24gZm9yIGZpbHRlcnNcbiAgICAgKi9cbiAgICBpbml0RmlsdGVyQ291bnRlcnMoKSB7XG4gICAgICAgIHRoaXMuZmlsdGVycy5mb3JFYWNoKChmaWx0ZXIpID0+ICh0aGlzLmNvdW50ZXJzW2ZpbHRlci5rZXldID0gMCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFBhc3MgdGhlIHNlbGVjdGVkIGZpbHRlciBhcyBuZXh0XG4gICAgICpcbiAgICAgKiBAcGFyYW0gcGFyYW1GaWx0ZXIgZmlsdGVyIG1vZGVsXG4gICAgICovXG4gICAgc2VsZWN0RmlsdGVyKHBhcmFtRmlsdGVyOiBGaWx0ZXJQYXJhbXNNb2RlbCkge1xuICAgICAgICBpZiAoIXBhcmFtRmlsdGVyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcmVmZXJyZWRGaWx0ZXIgPSB0aGlzLmZpbHRlcnMuZmluZCgoZmlsdGVyKSA9PiBwYXJhbUZpbHRlci5pZCA9PT0gZmlsdGVyLmlkKTtcbiAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyID1cbiAgICAgICAgICAgIHByZWZlcnJlZEZpbHRlciA/P1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJzLmZpbmQoXG4gICAgICAgICAgICAgICAgKGZpbHRlciwgaW5kZXgpID0+XG4gICAgICAgICAgICAgICAgICAgIHBhcmFtRmlsdGVyLmlkID09PSBmaWx0ZXIuaWQgfHxcbiAgICAgICAgICAgICAgICAgICAgKHBhcmFtRmlsdGVyLm5hbWUgJiYgdGhpcy5jaGVja0ZpbHRlck5hbWVzRXF1YWxpdHkocGFyYW1GaWx0ZXIubmFtZSwgZmlsdGVyLm5hbWUpKSB8fFxuICAgICAgICAgICAgICAgICAgICAocGFyYW1GaWx0ZXIua2V5ICYmIHBhcmFtRmlsdGVyLmtleSA9PT0gZmlsdGVyLmtleSkgfHxcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1GaWx0ZXIuaW5kZXggPT09IGluZGV4XG4gICAgICAgICAgICApOyAvLyBmYWxsYmFjayB0byBwcmVzZXJ2ZSB0aGUgcHJldmlvdXMgYmVoYXZpb3JcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaGVjayBlcXVhbGl0eSBvZiB0aGUgZmlsdGVyIG5hbWVzIGJ5IHRyYW5zbGF0aW5nIHRoZSBnaXZlbiBuYW1lIHN0cmluZ3NcbiAgICAgKlxuICAgICAqIEBwYXJhbSBuYW1lMSBzb3VyY2UgbmFtZVxuICAgICAqIEBwYXJhbSBuYW1lMiB0YXJnZXQgbmFtZVxuICAgICAqIEByZXR1cm5zIGB0cnVlYCBpZiBmaWx0ZXIgbmFtZXMgYXJlIGVxdWFsLCBvdGhlcndpc2UgYGZhbHNlYFxuICAgICAqL1xuICAgIHByaXZhdGUgY2hlY2tGaWx0ZXJOYW1lc0VxdWFsaXR5KG5hbWUxOiBzdHJpbmcsIG5hbWUyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgdHJhbnNsYXRlZE5hbWUxID0gdGhpcy50cmFuc2xhdGlvblNlcnZpY2UuaW5zdGFudChuYW1lMSk7XG4gICAgICAgIGNvbnN0IHRyYW5zbGF0ZWROYW1lMiA9IHRoaXMudHJhbnNsYXRpb25TZXJ2aWNlLmluc3RhbnQobmFtZTIpO1xuXG4gICAgICAgIHJldHVybiB0cmFuc2xhdGVkTmFtZTEudG9Mb2NhbGVMb3dlckNhc2UoKSA9PT0gdHJhbnNsYXRlZE5hbWUyLnRvTG9jYWxlTG93ZXJDYXNlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VsZWN0cyBhbmQgZW1pdHMgdGhlIGdpdmVuIGZpbHRlclxuICAgICAqXG4gICAgICogQHBhcmFtIG5ld1BhcmFtRmlsdGVyIG5ldyBwYXJhbWV0ZXIgZmlsdGVyXG4gICAgICovXG4gICAgc2VsZWN0RmlsdGVyQW5kRW1pdChuZXdQYXJhbUZpbHRlcjogRmlsdGVyUGFyYW1zTW9kZWwpIHtcbiAgICAgICAgaWYgKG5ld1BhcmFtRmlsdGVyKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdEZpbHRlcihuZXdQYXJhbUZpbHRlcik7XG4gICAgICAgICAgICB0aGlzLmZpbHRlclNlbGVjdGVkLmVtaXQodGhpcy5jdXJyZW50RmlsdGVyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEZpbHRlciA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlbGVjdCBmaWx0ZXIgd2l0aCB0aGUgaWRcbiAgICAgKlxuICAgICAqIEBwYXJhbSBpZCBmaWx0ZXIgaWRcbiAgICAgKi9cbiAgICBzZWxlY3RGaWx0ZXJCeUlkKGlkOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RGaWx0ZXJBbmRFbWl0KHsgaWQgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2VsZWN0cyBhbmQgZW1pdHMgdGhlIGNsaWNrZWQgZmlsdGVyXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmlsdGVyIGZpbHRlciBtb2RlbFxuICAgICAqL1xuICAgIG9uRmlsdGVyQ2xpY2soZmlsdGVyOiBQcm9jZXNzRmlsdGVyQ2xvdWRNb2RlbCkge1xuICAgICAgICBpZiAoZmlsdGVyKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdEZpbHRlcihmaWx0ZXIpO1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJDbGlja2VkLmVtaXQodGhpcy5jdXJyZW50RmlsdGVyKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRmlsdGVyQ291bnRlcih0aGlzLmN1cnJlbnRGaWx0ZXIpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVkRmlsdGVyc1NldC5kZWxldGUoZmlsdGVyLmtleSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRGaWx0ZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZWxlY3QgYXMgZGVmYXVsdCBwcm9jZXNzIGZpbHRlciB0aGUgZmlyc3QgaW4gdGhlIGxpc3RcbiAgICAgKi9cbiAgICBzZWxlY3REZWZhdWx0UHJvY2Vzc0ZpbHRlcigpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzRmlsdGVyTGlzdEVtcHR5KCkpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEZpbHRlciA9IHRoaXMuZmlsdGVyc1swXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBjdXJyZW50IGZpbHRlclxuICAgICAqXG4gICAgICogQHJldHVybnMgZmlsdGVyIG1vZGVsXG4gICAgICovXG4gICAgZ2V0Q3VycmVudEZpbHRlcigpOiBQcm9jZXNzRmlsdGVyQ2xvdWRNb2RlbCB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRGaWx0ZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgdGhlIGZpbHRlciBsaXN0IGlzIGVtcHR5XG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgZmlsdGVyIGxpc3QgaXMgZW1wdHksIG90aGVyd2lzZSBgZmFsc2VgXG4gICAgICovXG4gICAgaXNGaWx0ZXJMaXN0RW1wdHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbHRlcnMgPT09IHVuZGVmaW5lZCB8fCAodGhpcy5maWx0ZXJzICYmIHRoaXMuZmlsdGVycy5sZW5ndGggPT09IDApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlc2V0IHRoZSBmaWx0ZXJzXG4gICAgICovXG4gICAgcHJpdmF0ZSByZXNldEZpbHRlcigpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJzID0gW107XG4gICAgICAgIHRoaXMuY3VycmVudEZpbHRlciA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpc0FjdGl2ZUZpbHRlcihmaWx0ZXI6IFByb2Nlc3NGaWx0ZXJDbG91ZE1vZGVsKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRGaWx0ZXIubmFtZSA9PT0gZmlsdGVyLm5hbWU7XG4gICAgfVxuXG4gICAgaW5pdFByb2Nlc3NOb3RpZmljYXRpb24oKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmFwcE5hbWUgJiYgdGhpcy5lbmFibGVOb3RpZmljYXRpb25zKSB7XG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NGaWx0ZXJDbG91ZFNlcnZpY2VcbiAgICAgICAgICAgICAgICAuZ2V0UHJvY2Vzc05vdGlmaWNhdGlvblN1YnNjcmlwdGlvbih0aGlzLmFwcE5hbWUpXG4gICAgICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDEwMDApLCB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVGaWx0ZXJDb3VudGVycygpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSXRlcmF0ZSBvdmVyIGZpbHRlcnMgYW5kIHVwZGF0ZSBjb3VudGVyc1xuICAgICAqL1xuICAgIHVwZGF0ZUZpbHRlckNvdW50ZXJzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZpbHRlcnMuZm9yRWFjaCgoZmlsdGVyOiBQcm9jZXNzRmlsdGVyQ2xvdWRNb2RlbCkgPT4ge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVGaWx0ZXJDb3VudGVyKGZpbHRlcik7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBHZXQgY3VycmVudCB2YWx1ZSBmb3IgZmlsdGVyIGFuZCBjaGVjayBpZiB2YWx1ZSBoYXMgY2hhbmdlZFxuICAgICAqXG4gICAgICogQHBhcmFtIGZpbHRlciBmaWx0ZXJcbiAgICAgKi9cbiAgICB1cGRhdGVGaWx0ZXJDb3VudGVyKGZpbHRlcjogUHJvY2Vzc0ZpbHRlckNsb3VkTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFmaWx0ZXI/LnNob3dDb3VudGVyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZldGNoUHJvY2Vzc0ZpbHRlckNvdW50ZXIoZmlsdGVyKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwKChmaWx0ZXJDb3VudGVyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tJZkZpbHRlclZhbHVlc0hhc0JlZW5VcGRhdGVkKGZpbHRlci5rZXksIGZpbHRlckNvdW50ZXIpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb3VudGVycyA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5jb3VudGVycyxcbiAgICAgICAgICAgICAgICAgICAgW2ZpbHRlci5rZXldOiBkYXRhXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNoZWNrSWZGaWx0ZXJWYWx1ZXNIYXNCZWVuVXBkYXRlZChmaWx0ZXJLZXk6IHN0cmluZywgZmlsdGVyVmFsdWU6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50RmlsdGVyc1ZhbHVlc1tmaWx0ZXJLZXldID09PSB1bmRlZmluZWQgfHwgdGhpcy5jdXJyZW50RmlsdGVyc1ZhbHVlc1tmaWx0ZXJLZXldICE9PSBmaWx0ZXJWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50RmlsdGVyc1ZhbHVlc1tmaWx0ZXJLZXldID0gZmlsdGVyVmFsdWU7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZWRGaWx0ZXIuZW1pdChmaWx0ZXJLZXkpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVkRmlsdGVyc1NldC5hZGQoZmlsdGVyS2V5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzRmlsdGVyVXBkYXRlZChmaWx0ZXJOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudXBkYXRlZEZpbHRlcnNTZXQuaGFzKGZpbHRlck5hbWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBmaWxlciBrZXkgd2hlbiBmaWx0ZXIgd2FzIHJlZnJlc2hlZCBieSBleHRlcm5hbCBhY3Rpb25cbiAgICAgKlxuICAgICAqL1xuICAgIGdldEZpbHRlcktleXNBZnRlckV4dGVybmFsUmVmcmVzaGluZygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wcm9jZXNzRmlsdGVyQ2xvdWRTZXJ2aWNlLmZpbHRlcktleVRvQmVSZWZyZXNoZWQkLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSgoZmlsdGVyS2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlZEZpbHRlcnNTZXQuZGVsZXRlKGZpbHRlcktleSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZmV0Y2hQcm9jZXNzRmlsdGVyQ291bnRlcihmaWx0ZXI6IFByb2Nlc3NGaWx0ZXJDbG91ZE1vZGVsKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VhcmNoQXBpTWV0aG9kID09PSAnUE9TVCdcbiAgICAgICAgICAgID8gdGhpcy5wcm9jZXNzTGlzdENsb3VkU2VydmljZS5nZXRQcm9jZXNzTGlzdENvdW50ZXIobmV3IFByb2Nlc3NGaWx0ZXJDbG91ZEFkYXB0ZXIoZmlsdGVyKSlcbiAgICAgICAgICAgIDogdGhpcy5wcm9jZXNzTGlzdENsb3VkU2VydmljZS5nZXRQcm9jZXNzQ291bnRlcihmaWx0ZXIuYXBwTmFtZSwgZmlsdGVyLnN0YXR1cyk7XG4gICAgfVxufVxuIiwiPG1hdC1hY3Rpb24tbGlzdCBjbGFzcz1cImFkZi1wcm9jZXNzLWZpbHRlcnNcIiAqbmdJZj1cImZpbHRlcnMkIHwgYXN5bmMgYXMgZmlsdGVyTGlzdDsgZWxzZSBsb2FkaW5nXCI+XG4gICAgPGJ1dHRvblxuICAgICAgICAqbmdGb3I9XCJsZXQgZmlsdGVyIG9mIGZpbHRlckxpc3RcIlxuICAgICAgICBtYXQtbGlzdC1pdGVtXG4gICAgICAgIChjbGljayk9XCJvbkZpbHRlckNsaWNrKGZpbHRlcilcIlxuICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImZpbHRlci5uYW1lIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW2lkXT1cImZpbHRlci5pZFwiXG4gICAgICAgIFthdHRyLmRhdGEtYXV0b21hdGlvbi1pZF09XCJmaWx0ZXIua2V5ICsgJ19maWx0ZXInXCJcbiAgICAgICAgW2NsYXNzLmFkZi1hY3RpdmVdPVwiY3VycmVudEZpbHRlciA9PT0gZmlsdGVyXCJcbiAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtcHJvY2Vzcy1maWx0ZXJzX19lbnRyeVwiPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8YWRmLWljb25cbiAgICAgICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWRmLWZpbHRlci1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93SWNvbnNcIlxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZmlsdGVyLmljb25cIiAvPlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIGRhdGEtYXV0b21hdGlvbi1pZD1cImFkZi1maWx0ZXItbGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1maWx0ZXItYWN0aW9uLWJ1dHRvbl9fbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgZmlsdGVyLm5hbWUgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjb3VudGVyc1tmaWx0ZXIua2V5XVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1hdXRvbWF0aW9uLWlkXT1cImZpbHRlci5rZXkgKyAnX2ZpbHRlci1jb3VudGVyJ1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtcHJvY2Vzcy1maWx0ZXJzX19lbnRyeS1jb3VudGVyXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuYWRmLWFjdGl2ZV09XCJpc0ZpbHRlclVwZGF0ZWQoZmlsdGVyLmtleSlcIlxuICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IGNvdW50ZXJzW2ZpbHRlci5rZXldIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvYnV0dG9uPlxuPC9tYXQtYWN0aW9uLWxpc3Q+XG48bmctdGVtcGxhdGUgI2xvYWRpbmc+XG4gICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1hcHAtbGlzdC1zcGlubmVyXCI+XG4gICAgICAgICAgICA8bWF0LXNwaW5uZXIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuIl19
|