@ieeesa-npm/presentation 0.33.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/assets/constants.json +13 -561
- package/esm2022/lib/components/autocomplete/autocomplete.component.mjs +28 -60
- package/esm2022/lib/components/checkbox/checkbox.component.mjs +16 -77
- package/esm2022/lib/components/date-picker/date-picker.component.mjs +10 -27
- package/esm2022/lib/components/date-picker-header/date-picker-header.component.mjs +11 -6
- package/esm2022/lib/components/dynamic-form/dynamic-form.component.mjs +14 -275
- package/esm2022/lib/components/form-error/form-error.component.mjs +6 -6
- package/esm2022/lib/components/input/input.component.mjs +13 -34
- package/esm2022/lib/components/notification/notification.component.mjs +6 -18
- package/esm2022/lib/components/radio/radio.component.mjs +6 -12
- package/esm2022/lib/components/search/search.component.mjs +10 -62
- package/esm2022/lib/components/select/select.component.mjs +9 -32
- package/esm2022/lib/components/text-area/text-area.component.mjs +7 -65
- package/esm2022/lib/date-formats.mjs +2 -2
- package/esm2022/lib/directives/dynamic-form-field/dynamic-form-field.directive.mjs +5 -206
- package/esm2022/lib/models/checkbox-option.model.mjs +2 -0
- package/esm2022/lib/models/confirmation-modal-data.model.mjs +2 -0
- package/esm2022/lib/models/date-picker.model.mjs +1 -1
- package/esm2022/lib/models/field-config.model.mjs +1 -1
- package/esm2022/lib/models/footer-config.model.mjs +1 -1
- package/esm2022/lib/models/form-control-types.model.mjs +9 -9
- package/esm2022/lib/models/header-config.model.mjs +1 -1
- package/esm2022/lib/models/navigation-menu.model.mjs +1 -1
- package/esm2022/lib/models/select-option.model.mjs +2 -0
- package/esm2022/lib/models/toggle-button.model.mjs +1 -1
- package/esm2022/lib/presentation.module.mjs +5 -5
- package/esm2022/lib/services/datepicker.service.mjs +4 -4
- package/esm2022/lib/services/form-utility.service.mjs +5 -17
- package/esm2022/public-api.mjs +17 -97
- package/fesm2022/ieeesa-npm-presentation.mjs +599 -7589
- package/fesm2022/ieeesa-npm-presentation.mjs.map +1 -1
- package/lib/components/autocomplete/autocomplete.component.d.ts +13 -27
- package/lib/components/checkbox/checkbox.component.d.ts +6 -32
- package/lib/components/date-picker/date-picker.component.d.ts +2 -11
- package/lib/components/dynamic-form/dynamic-form.component.d.ts +11 -157
- package/lib/components/input/input.component.d.ts +2 -9
- package/lib/components/notification/notification.component.d.ts +1 -4
- package/lib/components/radio/radio.component.d.ts +1 -3
- package/lib/components/search/search.component.d.ts +4 -13
- package/lib/components/select/select.component.d.ts +2 -5
- package/lib/components/text-area/text-area.component.d.ts +2 -24
- package/lib/directives/dynamic-form-field/dynamic-form-field.directive.d.ts +3 -36
- package/lib/models/checkbox-option.model.d.ts +6 -0
- package/lib/models/confirmation-modal-data.model.d.ts +5 -0
- package/lib/models/date-picker.model.d.ts +0 -3
- package/lib/models/field-config.model.d.ts +2 -54
- package/lib/models/footer-config.model.d.ts +0 -1
- package/lib/models/form-control-types.model.d.ts +1 -8
- package/lib/models/header-config.model.d.ts +0 -6
- package/lib/models/navigation-menu.model.d.ts +1 -1
- package/lib/models/select-option.model.d.ts +5 -0
- package/lib/models/toggle-button.model.d.ts +0 -4
- package/lib/services/form-utility.service.d.ts +1 -1
- package/package.json +2 -4
- package/public-api.d.ts +16 -95
- package/src/lib/assets/constants.json +13 -561
- package/esm2022/lib/components/accordion/accordion.component.mjs +0 -61
- package/esm2022/lib/components/add-form-group/add-form-group.component.mjs +0 -34
- package/esm2022/lib/components/breadcrumb/breadcrumb.component.mjs +0 -129
- package/esm2022/lib/components/card/card.component.mjs +0 -74
- package/esm2022/lib/components/chips/chips.component.mjs +0 -162
- package/esm2022/lib/components/color-picker/color-picker.component.mjs +0 -314
- package/esm2022/lib/components/data-table/data-table.component.mjs +0 -781
- package/esm2022/lib/components/export-format-popover/export-format-popover.component.mjs +0 -75
- package/esm2022/lib/components/export-success-dialog/export-success-dialog.component.mjs +0 -39
- package/esm2022/lib/components/file-download/file-download.component.mjs +0 -176
- package/esm2022/lib/components/file-upload/file-upload.component.mjs +0 -474
- package/esm2022/lib/components/filter/filter.component.mjs +0 -302
- package/esm2022/lib/components/filter-popover/filter-popover.component.mjs +0 -198
- package/esm2022/lib/components/footer/footer.component.mjs +0 -55
- package/esm2022/lib/components/form-support-text/form-support-text.component.mjs +0 -63
- package/esm2022/lib/components/header/header.component.mjs +0 -193
- package/esm2022/lib/components/icon-button/icon-button.component.mjs +0 -38
- package/esm2022/lib/components/image-preview/image-preview.component.mjs +0 -30
- package/esm2022/lib/components/inactive-tenant/inactive-tenant.component.mjs +0 -44
- package/esm2022/lib/components/legend/legend.component.mjs +0 -37
- package/esm2022/lib/components/list/list.component.mjs +0 -199
- package/esm2022/lib/components/loader/loader.component.mjs +0 -22
- package/esm2022/lib/components/menu/menu.component.mjs +0 -75
- package/esm2022/lib/components/modal/modal.component.mjs +0 -166
- package/esm2022/lib/components/modal-confirmation/modal-confirmation.component.mjs +0 -45
- package/esm2022/lib/components/modal-info/modal-info.component.mjs +0 -41
- package/esm2022/lib/components/multi-select-autocomplete/multi-select-autocomplete.component.mjs +0 -321
- package/esm2022/lib/components/navigation-menu/navigation-menu.component.mjs +0 -89
- package/esm2022/lib/components/policy-confirmation-dialog/policy-confirmation-dialog.component.mjs +0 -81
- package/esm2022/lib/components/rich-text-editor/rich-text-editor.component.mjs +0 -214
- package/esm2022/lib/components/slide-toggle/slide-toggle.component.mjs +0 -98
- package/esm2022/lib/components/stepper/stepper.component.mjs +0 -69
- package/esm2022/lib/components/tabs/tabs.component.mjs +0 -210
- package/esm2022/lib/components/tile/tile.component.mjs +0 -70
- package/esm2022/lib/components/time-picker/time-picker.component.mjs +0 -59
- package/esm2022/lib/components/toggle-button/toggle-button.component.mjs +0 -76
- package/esm2022/lib/components/welcome/welcome.component.mjs +0 -85
- package/esm2022/lib/directives/file-upload/file-upload.directive.mjs +0 -85
- package/esm2022/lib/directives/focus-invalid-form-field/focus-invalid-form-field.directive.mjs +0 -34
- package/esm2022/lib/directives/observe-dom-change/observe-dom-change.directive.mjs +0 -54
- package/esm2022/lib/directives/set-background/set-background.directive.mjs +0 -53
- package/esm2022/lib/directives/text-truncated/text-truncated.directive.mjs +0 -72
- package/esm2022/lib/models/accordion-info.model.mjs +0 -14
- package/esm2022/lib/models/align-browsed-files.model.mjs +0 -7
- package/esm2022/lib/models/allowed-file-types.model.mjs +0 -8
- package/esm2022/lib/models/app-config-info.model.mjs +0 -2
- package/esm2022/lib/models/breadcrumb.model.mjs +0 -2
- package/esm2022/lib/models/button-type.model.mjs +0 -7
- package/esm2022/lib/models/card-button.model.mjs +0 -2
- package/esm2022/lib/models/card-info.model.mjs +0 -2
- package/esm2022/lib/models/chip-option.model.mjs +0 -21
- package/esm2022/lib/models/color-format.model.mjs +0 -13
- package/esm2022/lib/models/custom-properties.model.mjs +0 -14
- package/esm2022/lib/models/download-file.model.mjs +0 -2
- package/esm2022/lib/models/event-emit-type.model.mjs +0 -2
- package/esm2022/lib/models/export-format-popover.model.mjs +0 -10
- package/esm2022/lib/models/export-success-dialog.model.mjs +0 -2
- package/esm2022/lib/models/file-download-config.model.mjs +0 -2
- package/esm2022/lib/models/file-info.model.mjs +0 -2
- package/esm2022/lib/models/file-upload-payload-model.mjs +0 -2
- package/esm2022/lib/models/file-upload-presigned-url-res.model.mjs +0 -2
- package/esm2022/lib/models/file-upload-response.model.mjs +0 -2
- package/esm2022/lib/models/file-upload-status.model.mjs +0 -2
- package/esm2022/lib/models/filter-popover.model.mjs +0 -2
- package/esm2022/lib/models/filters-options.model.mjs +0 -2
- package/esm2022/lib/models/inactive-tenant.model.mjs +0 -2
- package/esm2022/lib/models/input-field-type.model.mjs +0 -8
- package/esm2022/lib/models/legend.model.mjs +0 -2
- package/esm2022/lib/models/link-type.model.mjs +0 -6
- package/esm2022/lib/models/list-item.model.mjs +0 -2
- package/esm2022/lib/models/menu.model.mjs +0 -2
- package/esm2022/lib/models/paginator-config.model.mjs +0 -2
- package/esm2022/lib/models/policy-confirmation-dialog.model.mjs +0 -2
- package/esm2022/lib/models/profile-menu.model.mjs +0 -8
- package/esm2022/lib/models/select-opened-state.model.mjs +0 -2
- package/esm2022/lib/models/selected-date.model.mjs +0 -2
- package/esm2022/lib/models/selected-time.model.mjs +0 -2
- package/esm2022/lib/models/slide-toggle-options.model.mjs +0 -2
- package/esm2022/lib/models/tab.model.mjs +0 -2
- package/esm2022/lib/models/table-actions.model.mjs +0 -2
- package/esm2022/lib/models/table-column-menu-info.model.mjs +0 -2
- package/esm2022/lib/models/table-schema.model.mjs +0 -20
- package/esm2022/lib/models/tile.model.mjs +0 -2
- package/esm2022/lib/pipes/safe.pipe.mjs +0 -44
- package/esm2022/lib/services/break-point-observer.service.mjs +0 -36
- package/esm2022/lib/services/file-upload.service.mjs +0 -378
- package/lib/components/accordion/accordion.component.d.ts +0 -30
- package/lib/components/add-form-group/add-form-group.component.d.ts +0 -19
- package/lib/components/breadcrumb/breadcrumb.component.d.ts +0 -61
- package/lib/components/card/card.component.d.ts +0 -39
- package/lib/components/chips/chips.component.d.ts +0 -374
- package/lib/components/color-picker/color-picker.component.d.ts +0 -88
- package/lib/components/data-table/data-table.component.d.ts +0 -326
- package/lib/components/export-format-popover/export-format-popover.component.d.ts +0 -45
- package/lib/components/export-success-dialog/export-success-dialog.component.d.ts +0 -24
- package/lib/components/file-download/file-download.component.d.ts +0 -383
- package/lib/components/file-upload/file-upload.component.d.ts +0 -522
- package/lib/components/filter/filter.component.d.ts +0 -113
- package/lib/components/filter-popover/filter-popover.component.d.ts +0 -84
- package/lib/components/footer/footer.component.d.ts +0 -37
- package/lib/components/form-support-text/form-support-text.component.d.ts +0 -32
- package/lib/components/header/header.component.d.ts +0 -86
- package/lib/components/icon-button/icon-button.component.d.ts +0 -21
- package/lib/components/image-preview/image-preview.component.d.ts +0 -11
- package/lib/components/inactive-tenant/inactive-tenant.component.d.ts +0 -21
- package/lib/components/legend/legend.component.d.ts +0 -13
- package/lib/components/list/list.component.d.ts +0 -95
- package/lib/components/loader/loader.component.d.ts +0 -7
- package/lib/components/menu/menu.component.d.ts +0 -36
- package/lib/components/modal/modal.component.d.ts +0 -75
- package/lib/components/modal-confirmation/modal-confirmation.component.d.ts +0 -24
- package/lib/components/modal-info/modal-info.component.d.ts +0 -23
- package/lib/components/multi-select-autocomplete/multi-select-autocomplete.component.d.ts +0 -130
- package/lib/components/navigation-menu/navigation-menu.component.d.ts +0 -45
- package/lib/components/policy-confirmation-dialog/policy-confirmation-dialog.component.d.ts +0 -46
- package/lib/components/rich-text-editor/rich-text-editor.component.d.ts +0 -75
- package/lib/components/slide-toggle/slide-toggle.component.d.ts +0 -45
- package/lib/components/stepper/stepper.component.d.ts +0 -46
- package/lib/components/tabs/tabs.component.d.ts +0 -86
- package/lib/components/tile/tile.component.d.ts +0 -39
- package/lib/components/time-picker/time-picker.component.d.ts +0 -20
- package/lib/components/toggle-button/toggle-button.component.d.ts +0 -51
- package/lib/components/welcome/welcome.component.d.ts +0 -41
- package/lib/directives/file-upload/file-upload.directive.d.ts +0 -42
- package/lib/directives/focus-invalid-form-field/focus-invalid-form-field.directive.d.ts +0 -18
- package/lib/directives/observe-dom-change/observe-dom-change.directive.d.ts +0 -23
- package/lib/directives/set-background/set-background.directive.d.ts +0 -28
- package/lib/directives/text-truncated/text-truncated.directive.d.ts +0 -30
- package/lib/models/accordion-info.model.d.ts +0 -12
- package/lib/models/align-browsed-files.model.d.ts +0 -4
- package/lib/models/allowed-file-types.model.d.ts +0 -5
- package/lib/models/app-config-info.model.d.ts +0 -16
- package/lib/models/breadcrumb.model.d.ts +0 -6
- package/lib/models/button-type.model.d.ts +0 -4
- package/lib/models/card-button.model.d.ts +0 -6
- package/lib/models/card-info.model.d.ts +0 -8
- package/lib/models/chip-option.model.d.ts +0 -25
- package/lib/models/color-format.model.d.ts +0 -13
- package/lib/models/custom-properties.model.d.ts +0 -11
- package/lib/models/download-file.model.d.ts +0 -4
- package/lib/models/event-emit-type.model.d.ts +0 -5
- package/lib/models/export-format-popover.model.d.ts +0 -15
- package/lib/models/export-success-dialog.model.d.ts +0 -8
- package/lib/models/file-download-config.model.d.ts +0 -9
- package/lib/models/file-info.model.d.ts +0 -12
- package/lib/models/file-upload-payload-model.d.ts +0 -10
- package/lib/models/file-upload-presigned-url-res.model.d.ts +0 -35
- package/lib/models/file-upload-response.model.d.ts +0 -13
- package/lib/models/file-upload-status.model.d.ts +0 -8
- package/lib/models/filter-popover.model.d.ts +0 -24
- package/lib/models/filters-options.model.d.ts +0 -4
- package/lib/models/inactive-tenant.model.d.ts +0 -5
- package/lib/models/input-field-type.model.d.ts +0 -5
- package/lib/models/legend.model.d.ts +0 -6
- package/lib/models/link-type.model.d.ts +0 -3
- package/lib/models/list-item.model.d.ts +0 -24
- package/lib/models/menu.model.d.ts +0 -9
- package/lib/models/paginator-config.model.d.ts +0 -5
- package/lib/models/policy-confirmation-dialog.model.d.ts +0 -13
- package/lib/models/profile-menu.model.d.ts +0 -4
- package/lib/models/select-opened-state.model.d.ts +0 -4
- package/lib/models/selected-date.model.d.ts +0 -4
- package/lib/models/selected-time.model.d.ts +0 -4
- package/lib/models/slide-toggle-options.model.d.ts +0 -6
- package/lib/models/tab.model.d.ts +0 -6
- package/lib/models/table-actions.model.d.ts +0 -8
- package/lib/models/table-column-menu-info.model.d.ts +0 -6
- package/lib/models/table-schema.model.d.ts +0 -32
- package/lib/models/tile.model.d.ts +0 -12
- package/lib/pipes/safe.pipe.d.ts +0 -16
- package/lib/services/break-point-observer.service.d.ts +0 -21
- package/lib/services/file-upload.service.d.ts +0 -462
|
@@ -1,302 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output, ViewEncapsulation, ViewChild, } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
4
|
-
import { MatIconModule } from '@angular/material/icon';
|
|
5
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
6
|
-
import { Subject, takeUntil } from 'rxjs';
|
|
7
|
-
import { FilterOptionType } from '../../models/chip-option.model';
|
|
8
|
-
import { ChipsComponent } from '../chips/chips.component';
|
|
9
|
-
import { CheckboxComponent } from '../checkbox/checkbox.component';
|
|
10
|
-
import { IconButtonComponent } from '../icon-button/icon-button.component';
|
|
11
|
-
import * as constants from '../../assets/constants.json';
|
|
12
|
-
import { ReactiveFormsModule } from '@angular/forms';
|
|
13
|
-
import { MatSelectModule } from '@angular/material/select';
|
|
14
|
-
import { SelectComponent } from '../../components/select/select.component';
|
|
15
|
-
import * as i0 from "@angular/core";
|
|
16
|
-
import * as i1 from "../../services/break-point-observer.service";
|
|
17
|
-
import * as i2 from "@angular/common";
|
|
18
|
-
import * as i3 from "@angular/material/button";
|
|
19
|
-
/**
|
|
20
|
-
* Provides an implementation for group of filter.
|
|
21
|
-
* @export
|
|
22
|
-
* @class FilterComponent
|
|
23
|
-
* @implements {OnDestroy}
|
|
24
|
-
*/
|
|
25
|
-
export class FilterComponent {
|
|
26
|
-
set filterOptionType(optionType) {
|
|
27
|
-
this.selectedFilterOptionType = optionType;
|
|
28
|
-
}
|
|
29
|
-
get filterOptionType() {
|
|
30
|
-
return this.selectedFilterOptionType;
|
|
31
|
-
}
|
|
32
|
-
set appliedFilterOptions(options) {
|
|
33
|
-
this.filteredTypeOptionsInfo = options;
|
|
34
|
-
}
|
|
35
|
-
get appliedFilterOptions() {
|
|
36
|
-
return this.filteredTypeOptionsInfo;
|
|
37
|
-
}
|
|
38
|
-
set selectedFilterOptions(options) {
|
|
39
|
-
if (options && this.selectedFilterId) {
|
|
40
|
-
this.filtersAndOptions.set(this.selectedFilterId, options);
|
|
41
|
-
this.setFilterSelectionOnOptionChange();
|
|
42
|
-
this.selectedFilterOptionsList = options;
|
|
43
|
-
if (this.prevSelectedFilterOptionsList.length &&
|
|
44
|
-
this.prevSelectedFilterOptionsList[0].name !==
|
|
45
|
-
this.selectedFilterOptionsList?.[0]?.name)
|
|
46
|
-
this.recreateCheckboxOptionsControl = options;
|
|
47
|
-
this.prevSelectedFilterOptionsList = this.selectedFilterOptionsList;
|
|
48
|
-
}
|
|
49
|
-
if (this.filterOptionType === this.optionsType.DROPDOWN) {
|
|
50
|
-
this.selectedFilterDropDownList = this.selectedFilterOptionsList.map((selectOption) => {
|
|
51
|
-
return { id: selectOption.id, name: selectOption.name ?? '' };
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
get selectedFilterOptions() {
|
|
56
|
-
return this.selectedFilterOptionsList;
|
|
57
|
-
}
|
|
58
|
-
constructor(
|
|
59
|
-
// eslint-disable-next-line no-unused-vars
|
|
60
|
-
breakpointObserverService,
|
|
61
|
-
// eslint-disable-next-line no-unused-vars
|
|
62
|
-
changeDetectorReference) {
|
|
63
|
-
this.breakpointObserverService = breakpointObserverService;
|
|
64
|
-
this.changeDetectorReference = changeDetectorReference;
|
|
65
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
66
|
-
this.constants = constants;
|
|
67
|
-
this.arrow = this.constants?.chips?.icons?.arrow;
|
|
68
|
-
this.check = this.constants?.chips?.icons?.check;
|
|
69
|
-
this.removeIcon = this.constants?.chips?.icons?.remove;
|
|
70
|
-
this.isFilterOpened = false;
|
|
71
|
-
this.onFilterToggle = false;
|
|
72
|
-
this.isFilterActive = false;
|
|
73
|
-
this.isMobileView = false;
|
|
74
|
-
this.isApplyButtonDisabled = true;
|
|
75
|
-
this.filtersAndOptions = new Map();
|
|
76
|
-
this.destroy$ = new Subject();
|
|
77
|
-
this.selectedFilterOptionType = FilterOptionType.CHECKBOX;
|
|
78
|
-
this.optionsType = FilterOptionType;
|
|
79
|
-
this.filterButton = this.constants?.filter?.buttons[0];
|
|
80
|
-
this.canShowSelection = false;
|
|
81
|
-
this.selectedFilterDropDownList = [];
|
|
82
|
-
this.defaultSelectedFilterDropDownOptions = [];
|
|
83
|
-
this.prevSelectedFilterOptionsList = [];
|
|
84
|
-
this.selectedFilter = new EventEmitter();
|
|
85
|
-
this.filteredOptions = new EventEmitter();
|
|
86
|
-
this.removeFilteredOption = new EventEmitter();
|
|
87
|
-
this.filterDropdownSearch = new EventEmitter();
|
|
88
|
-
this.breakpointObserverService
|
|
89
|
-
.getBreakpoint()
|
|
90
|
-
.pipe(takeUntil(this.destroy$))
|
|
91
|
-
.subscribe((result) => {
|
|
92
|
-
this.isMobileView = result.matches;
|
|
93
|
-
this.filterButton.disabled = !this.isMobileView;
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* OnFilterSelected receives the selected filter from chip component, emits the selected filter and toggle the isFilterByOptionsVisible state.
|
|
98
|
-
* @param {ChipOption} type
|
|
99
|
-
* @memberof FilterComponent
|
|
100
|
-
*/
|
|
101
|
-
onFilterSelected(type) {
|
|
102
|
-
this.selectedFilterId = type.id;
|
|
103
|
-
if (type.checked) {
|
|
104
|
-
this.selectedFilter.emit(type);
|
|
105
|
-
}
|
|
106
|
-
this.isFilterOpened = type?.checked;
|
|
107
|
-
this.filterOptionType = type.optionType ?? this.optionsType.CHECKBOX;
|
|
108
|
-
this.onFilterToggle = false;
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* OnRemovalOfFilteredOption method receives removed chip from chip component and emits the event with removed chip.
|
|
112
|
-
* @param {ChipOption} option
|
|
113
|
-
* @memberof FilterComponent
|
|
114
|
-
*/
|
|
115
|
-
onRemovalOfFilteredOption(option) {
|
|
116
|
-
if (option?.name === this.constants?.filter?.label?.clearAll) {
|
|
117
|
-
this.appliedFilterOptions = [];
|
|
118
|
-
this.filtersAndOptions.forEach((options) => {
|
|
119
|
-
options?.forEach((option) => (option.checked = false));
|
|
120
|
-
});
|
|
121
|
-
this.removeFilteredOption.emit([]);
|
|
122
|
-
}
|
|
123
|
-
else {
|
|
124
|
-
this.appliedFilterOptions = this.appliedFilterOptions.filter((res) => res.id !== option.id);
|
|
125
|
-
this.appliedFilterOptions =
|
|
126
|
-
this.appliedFilterOptions.length === 1 ? [] : this.appliedFilterOptions;
|
|
127
|
-
this.filtersAndOptions.forEach((options) => {
|
|
128
|
-
options?.forEach((checkBoxOption) => {
|
|
129
|
-
if (checkBoxOption.id === option.id)
|
|
130
|
-
checkBoxOption.checked = false;
|
|
131
|
-
});
|
|
132
|
-
});
|
|
133
|
-
this.removeFilteredOption.emit(this.getListOfSelectedCheckboxes());
|
|
134
|
-
}
|
|
135
|
-
this.setFilterSelectionOnOptionChange();
|
|
136
|
-
}
|
|
137
|
-
getListOfSelectedCheckboxes() {
|
|
138
|
-
const selectedFiltersAndOptions = [];
|
|
139
|
-
this.filtersAndOptions.forEach((value, key) => {
|
|
140
|
-
const selectedOptions = [];
|
|
141
|
-
value?.forEach((option) => {
|
|
142
|
-
if (option.checked)
|
|
143
|
-
selectedOptions.push(option);
|
|
144
|
-
});
|
|
145
|
-
if (selectedOptions.length)
|
|
146
|
-
selectedFiltersAndOptions.push({ [key]: selectedOptions });
|
|
147
|
-
});
|
|
148
|
-
return selectedFiltersAndOptions;
|
|
149
|
-
}
|
|
150
|
-
/**
|
|
151
|
-
* OnFilterApply toggles the isFilterByOptionsVisible state, emits the selected filter options and toggles the filter stateO
|
|
152
|
-
* @memberof FilterComponent
|
|
153
|
-
*/
|
|
154
|
-
onFilterApply() {
|
|
155
|
-
this.isFilterOpened = !this.isFilterOpened;
|
|
156
|
-
this.filteredOptions.emit(this.getListOfSelectedCheckboxes());
|
|
157
|
-
this.onFilterToggle = true;
|
|
158
|
-
this.isApplyButtonDisabled = true;
|
|
159
|
-
this.changeDetectorReference.detectChanges();
|
|
160
|
-
}
|
|
161
|
-
/**
|
|
162
|
-
* SelectedFilterOptions method is called for every selection and deselection of filter option and stores the selected filter options.
|
|
163
|
-
* @param {FiltersAndOptions[]} values
|
|
164
|
-
* @memberof FilterComponent
|
|
165
|
-
*/
|
|
166
|
-
selectedFilterOptionsInfo(values) {
|
|
167
|
-
if (this.getListOfSelectedCheckboxes().length === 0)
|
|
168
|
-
this.isApplyButtonDisabled = true;
|
|
169
|
-
else
|
|
170
|
-
this.isApplyButtonDisabled = false;
|
|
171
|
-
if (values && this.selectedFilterId) {
|
|
172
|
-
this.filtersAndOptions.set(this.selectedFilterId, values);
|
|
173
|
-
this.setFilterSelectionOnOptionChange();
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
/**
|
|
177
|
-
* OnFilterByIconClick method toggles the isFilterActive value.
|
|
178
|
-
* @memberof FilterComponent
|
|
179
|
-
*/
|
|
180
|
-
onFilterByIconClick() {
|
|
181
|
-
this.isFilterActive = !this.isFilterActive;
|
|
182
|
-
}
|
|
183
|
-
/**
|
|
184
|
-
* NgOnDestroy performs necessary cleanup tasks, such as unsubscribing from subscription when the component is being destroyed.
|
|
185
|
-
* @memberof FilterComponent
|
|
186
|
-
*/
|
|
187
|
-
ngOnDestroy() {
|
|
188
|
-
this.destroy$.next(true);
|
|
189
|
-
this.destroy$.unsubscribe();
|
|
190
|
-
}
|
|
191
|
-
/**
|
|
192
|
-
* OnDropdownSelectionChange() is called for every drop down selection changes and sets selectedFilterOptionsList.
|
|
193
|
-
* @memberof FilterComponent
|
|
194
|
-
*/
|
|
195
|
-
onDropdownSelectionChange(option) {
|
|
196
|
-
if (option && this.selectedFilterId) {
|
|
197
|
-
const selectedOption = [
|
|
198
|
-
{
|
|
199
|
-
id: option.id,
|
|
200
|
-
name: option.name,
|
|
201
|
-
checked: true,
|
|
202
|
-
disabled: false,
|
|
203
|
-
},
|
|
204
|
-
];
|
|
205
|
-
this.selectedFilterOptionsList?.map((option) => {
|
|
206
|
-
if (option.id === selectedOption[0].id) {
|
|
207
|
-
option.checked = true;
|
|
208
|
-
}
|
|
209
|
-
else {
|
|
210
|
-
option.checked = false;
|
|
211
|
-
}
|
|
212
|
-
});
|
|
213
|
-
this.isApplyButtonDisabled = false;
|
|
214
|
-
this.filtersAndOptions.set(this.selectedFilterId, selectedOption);
|
|
215
|
-
this.setFilterSelectionOnOptionChange();
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
/**
|
|
219
|
-
* SetFilterSelectionOnOptionChange() called on every selection and deselection of filter option and sets canShowSelection flag to show or hide the tick mark of selected filter option.
|
|
220
|
-
* @memberof FilterComponent
|
|
221
|
-
*/
|
|
222
|
-
setFilterSelectionOnOptionChange() {
|
|
223
|
-
if (this.canShowSelection) {
|
|
224
|
-
for (const [key, options] of this.filtersAndOptions) {
|
|
225
|
-
const filterOption = this.filters.find((chipOption) => {
|
|
226
|
-
return chipOption.name === key;
|
|
227
|
-
});
|
|
228
|
-
if (filterOption) {
|
|
229
|
-
filterOption.canShowSelection = options.some((option) => option.checked === true);
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
/**
|
|
235
|
-
* Emits the filterDropdownSearch event with the searched text value.
|
|
236
|
-
* @param {string} searchText
|
|
237
|
-
* @memberof FilterComponent
|
|
238
|
-
*/
|
|
239
|
-
onDropdownSearch(searchText) {
|
|
240
|
-
this.filterDropdownSearch.emit(searchText);
|
|
241
|
-
}
|
|
242
|
-
/**
|
|
243
|
-
* Emits filterDropdownSearch event to reset the dropdown options to default when the dropdown is closed and sets search term empty.
|
|
244
|
-
* @param {SelectOpenedState} event
|
|
245
|
-
* @memberof FilterComponent
|
|
246
|
-
*/
|
|
247
|
-
onDropdownOpenedChange(event) {
|
|
248
|
-
if (this.defaultSelectedFilterDropDownOptions?.length === 0) {
|
|
249
|
-
this.defaultSelectedFilterDropDownOptions =
|
|
250
|
-
this.selectedFilterDropDownList;
|
|
251
|
-
}
|
|
252
|
-
if (!event?.opened) {
|
|
253
|
-
this.selectedFilterDropDownList =
|
|
254
|
-
this.defaultSelectedFilterDropDownOptions;
|
|
255
|
-
}
|
|
256
|
-
if (!event?.opened &&
|
|
257
|
-
this.selectComponent?.formFields?.toArray()?.[0]?.searchTerm) {
|
|
258
|
-
this.selectComponent.formFields.toArray()[0].searchTerm = '';
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterComponent, deps: [{ token: i1.BreakpointObserverService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
262
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FilterComponent, isStandalone: true, selector: "ieeesa-filter", inputs: { filterOptionType: "filterOptionType", appliedFilterOptions: "appliedFilterOptions", filterButton: "filterButton", filters: "filters", canShowSelection: "canShowSelection", selectedFilterOptions: "selectedFilterOptions" }, outputs: { selectedFilter: "selectedFilter", filteredOptions: "filteredOptions", removeFilteredOption: "removeFilteredOption", filterDropdownSearch: "filterDropdownSearch" }, viewQueries: [{ propertyName: "selectComponent", first: true, predicate: SelectComponent, descendants: true }], ngImport: i0, template: "<div class=\"ieeesa-filter\" *ngIf=\"filters && filters.length > 0\">\r\n <div\r\n class=\"d-flex flex-column flex-sm-column flex-md-column flex-lg-row flex-xl-row\"\r\n >\r\n <div class=\"d-flex align-items-center\">\r\n <ieeesa-icon-button\r\n [iconButton]=\"filterButton\"\r\n (click)=\"onFilterByIconClick()\"\r\n ></ieeesa-icon-button>\r\n <p\r\n class=\"ieeesa-label-lg-bold-16 m-0\"\r\n *ngIf=\"!isMobileView || isFilterActive\"\r\n >\r\n {{ constants?.filter?.label?.filterBy }}\r\n </p>\r\n </div>\r\n <div\r\n [ngClass]=\"\r\n !isMobileView\r\n ? 'd-flex align-items-center'\r\n : 'd-flex align-self-stretch flex-wrap align-items-center pt-sm-2 pt-md-2 pt-2'\r\n \"\r\n *ngIf=\"!isMobileView || isFilterActive\"\r\n >\r\n <ieeesa-chips\r\n [chipGroup]=\"filters\"\r\n [arrow]=\"arrow\"\r\n [check]=\"check\"\r\n [hasChipToggled]=\"onFilterToggle\"\r\n (selectedChip)=\"onFilterSelected($event)\"\r\n ></ieeesa-chips>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"!isMobileView || isFilterActive\">\r\n <ieeesa-checkbox\r\n [checkboxes]=\"selectedFilterOptions\"\r\n [recreateCheckboxOptionsControl]=\"recreateCheckboxOptionsControl\"\r\n (checkboxOptionsAndSelection)=\"selectedFilterOptionsInfo($event)\"\r\n *ngIf=\"isFilterOpened && filterOptionType === optionsType.CHECKBOX\"\r\n class=\"d-flex gap-2 ieeesa-filter__filter-options\"\r\n ></ieeesa-checkbox>\r\n <ieeesa-select\r\n *ngIf=\"isFilterOpened && filterOptionType === optionsType.DROPDOWN\"\r\n [isSortNeeded]=\"false\"\r\n [dropdownOptions]=\"selectedFilterDropDownList\"\r\n [isLabelAlignedLeft]=\"true\"\r\n [selectLabel]=\"constants?.viewGroups?.filterByLabel\"\r\n (optionSelected)=\"onDropdownSelectionChange($event)\"\r\n (optionSearched)=\"onDropdownSearch($event)\"\r\n (dropdownOpenedChange)=\"onDropdownOpenedChange($event)\"\r\n [isSearch]=\"true\"\r\n ></ieeesa-select>\r\n <button\r\n mat-button\r\n *ngIf=\"isFilterOpened\"\r\n class=\"mat-tertiary-button m-2\"\r\n [disabled]=\"isApplyButtonDisabled\"\r\n (click)=\"onFilterApply()\"\r\n >\r\n {{ constants?.filter?.label?.applyButton }}\r\n </button>\r\n <ieeesa-chips\r\n [chipGroup]=\"appliedFilterOptions\"\r\n [isViewMoreNeeded]=\"true\"\r\n *ngIf=\"appliedFilterOptions\"\r\n [arrow]=\"removeIcon\"\r\n (selectedChip)=\"onRemovalOfFilteredOption($event)\"\r\n class=\"d-flex gap-2 mt-2\"\r\n [hasViewMoreForDesktop]=\"false\"\r\n [hasViewMoreForMobile]=\"true\"\r\n ></ieeesa-chips>\r\n </ng-container>\r\n</div>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-sm-12{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.75rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:focus{background:#1f75a7}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:focus{background:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:focus{background-color:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: unset}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.ieeesa-wrapper-border{border:1px solid #b2b7be;border-top:none;padding:1.5em;border-radius:0 0 4px 4px}.ieeesa-filter .mat-tertiary-button{height:2em;width:5.4375em;min-height:auto;min-width:auto}.ieeesa-filter__filter-options .mdc-form-field>label{padding-left:0;padding-right:4px}.ieeesa-filter__filter-options .mat-mdc-checkbox{margin-bottom:4px}.ieeesa-filter__filter-options .ieeesa-checkbox-field__label-top{margin-top:8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: ChipsComponent, selector: "ieeesa-chips", inputs: ["chipGroup", "chipOrientation", "noOfDefaultVisibleChips", "hasViewMoreForDesktop", "hasViewMoreForMobile", "avatar", "arrow", "check", "isViewMoreNeeded", "hasChipToggled", "viewAllLabel", "viewLessLabel"], outputs: ["selectedChip"] }, { kind: "component", type: CheckboxComponent, selector: "ieeesa-checkbox", inputs: ["isLabelNeeded", "checkboxes", "recreateCheckboxOptionsControl"], outputs: ["checkboxSelection", "checkboxOptionsAndSelection", "selectedCheckboxes", "ctaButtonClick"] }, { kind: "component", type: IconButtonComponent, selector: "ieeesa-icon-button", inputs: ["iconButton", "isLabelNeeded"], outputs: ["iconButtonClick"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: MatSelectModule }, { kind: "component", type: SelectComponent, selector: "ieeesa-select", inputs: ["isSortNeeded", "dropdownOptions", "selectedOptions", "formControlName", "isMultiLevel", "isLabelAlignedLeft", "selectLabel", "isMultiSelect", "isDisabled", "isSearch", "placeholderText"], outputs: ["optionSelected", "optionSearched", "dropdownOpenedChange"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
263
|
-
}
|
|
264
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterComponent, decorators: [{
|
|
265
|
-
type: Component,
|
|
266
|
-
args: [{ selector: 'ieeesa-filter', standalone: true, imports: [
|
|
267
|
-
CommonModule,
|
|
268
|
-
MatCheckboxModule,
|
|
269
|
-
MatIconModule,
|
|
270
|
-
MatButtonModule,
|
|
271
|
-
ChipsComponent,
|
|
272
|
-
CheckboxComponent,
|
|
273
|
-
IconButtonComponent,
|
|
274
|
-
ReactiveFormsModule,
|
|
275
|
-
MatSelectModule,
|
|
276
|
-
SelectComponent,
|
|
277
|
-
], encapsulation: ViewEncapsulation.None, template: "<div class=\"ieeesa-filter\" *ngIf=\"filters && filters.length > 0\">\r\n <div\r\n class=\"d-flex flex-column flex-sm-column flex-md-column flex-lg-row flex-xl-row\"\r\n >\r\n <div class=\"d-flex align-items-center\">\r\n <ieeesa-icon-button\r\n [iconButton]=\"filterButton\"\r\n (click)=\"onFilterByIconClick()\"\r\n ></ieeesa-icon-button>\r\n <p\r\n class=\"ieeesa-label-lg-bold-16 m-0\"\r\n *ngIf=\"!isMobileView || isFilterActive\"\r\n >\r\n {{ constants?.filter?.label?.filterBy }}\r\n </p>\r\n </div>\r\n <div\r\n [ngClass]=\"\r\n !isMobileView\r\n ? 'd-flex align-items-center'\r\n : 'd-flex align-self-stretch flex-wrap align-items-center pt-sm-2 pt-md-2 pt-2'\r\n \"\r\n *ngIf=\"!isMobileView || isFilterActive\"\r\n >\r\n <ieeesa-chips\r\n [chipGroup]=\"filters\"\r\n [arrow]=\"arrow\"\r\n [check]=\"check\"\r\n [hasChipToggled]=\"onFilterToggle\"\r\n (selectedChip)=\"onFilterSelected($event)\"\r\n ></ieeesa-chips>\r\n </div>\r\n </div>\r\n <ng-container *ngIf=\"!isMobileView || isFilterActive\">\r\n <ieeesa-checkbox\r\n [checkboxes]=\"selectedFilterOptions\"\r\n [recreateCheckboxOptionsControl]=\"recreateCheckboxOptionsControl\"\r\n (checkboxOptionsAndSelection)=\"selectedFilterOptionsInfo($event)\"\r\n *ngIf=\"isFilterOpened && filterOptionType === optionsType.CHECKBOX\"\r\n class=\"d-flex gap-2 ieeesa-filter__filter-options\"\r\n ></ieeesa-checkbox>\r\n <ieeesa-select\r\n *ngIf=\"isFilterOpened && filterOptionType === optionsType.DROPDOWN\"\r\n [isSortNeeded]=\"false\"\r\n [dropdownOptions]=\"selectedFilterDropDownList\"\r\n [isLabelAlignedLeft]=\"true\"\r\n [selectLabel]=\"constants?.viewGroups?.filterByLabel\"\r\n (optionSelected)=\"onDropdownSelectionChange($event)\"\r\n (optionSearched)=\"onDropdownSearch($event)\"\r\n (dropdownOpenedChange)=\"onDropdownOpenedChange($event)\"\r\n [isSearch]=\"true\"\r\n ></ieeesa-select>\r\n <button\r\n mat-button\r\n *ngIf=\"isFilterOpened\"\r\n class=\"mat-tertiary-button m-2\"\r\n [disabled]=\"isApplyButtonDisabled\"\r\n (click)=\"onFilterApply()\"\r\n >\r\n {{ constants?.filter?.label?.applyButton }}\r\n </button>\r\n <ieeesa-chips\r\n [chipGroup]=\"appliedFilterOptions\"\r\n [isViewMoreNeeded]=\"true\"\r\n *ngIf=\"appliedFilterOptions\"\r\n [arrow]=\"removeIcon\"\r\n (selectedChip)=\"onRemovalOfFilteredOption($event)\"\r\n class=\"d-flex gap-2 mt-2\"\r\n [hasViewMoreForDesktop]=\"false\"\r\n [hasViewMoreForMobile]=\"true\"\r\n ></ieeesa-chips>\r\n </ng-container>\r\n</div>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-sm-12{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.75rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:focus{background:#1f75a7}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:focus{background:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:focus{background-color:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: unset}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.ieeesa-wrapper-border{border:1px solid #b2b7be;border-top:none;padding:1.5em;border-radius:0 0 4px 4px}.ieeesa-filter .mat-tertiary-button{height:2em;width:5.4375em;min-height:auto;min-width:auto}.ieeesa-filter__filter-options .mdc-form-field>label{padding-left:0;padding-right:4px}.ieeesa-filter__filter-options .mat-mdc-checkbox{margin-bottom:4px}.ieeesa-filter__filter-options .ieeesa-checkbox-field__label-top{margin-top:8px}\n"] }]
|
|
278
|
-
}], ctorParameters: function () { return [{ type: i1.BreakpointObserverService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { selectComponent: [{
|
|
279
|
-
type: ViewChild,
|
|
280
|
-
args: [SelectComponent]
|
|
281
|
-
}], filterOptionType: [{
|
|
282
|
-
type: Input
|
|
283
|
-
}], appliedFilterOptions: [{
|
|
284
|
-
type: Input
|
|
285
|
-
}], filterButton: [{
|
|
286
|
-
type: Input
|
|
287
|
-
}], filters: [{
|
|
288
|
-
type: Input
|
|
289
|
-
}], canShowSelection: [{
|
|
290
|
-
type: Input
|
|
291
|
-
}], selectedFilterOptions: [{
|
|
292
|
-
type: Input
|
|
293
|
-
}], selectedFilter: [{
|
|
294
|
-
type: Output
|
|
295
|
-
}], filteredOptions: [{
|
|
296
|
-
type: Output
|
|
297
|
-
}], removeFilteredOption: [{
|
|
298
|
-
type: Output
|
|
299
|
-
}], filterDropdownSearch: [{
|
|
300
|
-
type: Output
|
|
301
|
-
}] } });
|
|
302
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXNlbnRhdGlvbi9zcmMvbGliL2NvbXBvbmVudHMvZmlsdGVyL2ZpbHRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzZW50YXRpb24vc3JjL2xpYi9jb21wb25lbnRzL2ZpbHRlci9maWx0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFHTixpQkFBaUIsRUFDakIsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTNELE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTFDLE9BQU8sRUFBYyxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEtBQUssU0FBUyxNQUFNLDZCQUE2QixDQUFDO0FBRXpELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxP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Z0JBQ0csb0JBQW9CO3NCQUE3QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBPbkRlc3Ryb3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBCcmVha3BvaW50T2JzZXJ2ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYnJlYWstcG9pbnQtb2JzZXJ2ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDaGVja2JveE9wdGlvbiwgSWNvbkJ1dHRvbiwgU2VsZWN0T3B0aW9uIH0gZnJvbSAnQGllZWVzYS1ucG0vbW9kZWxzJztcclxuaW1wb3J0IHsgQ2hpcE9wdGlvbiwgRmlsdGVyT3B0aW9uVHlwZSB9IGZyb20gJy4uLy4uL21vZGVscy9jaGlwLW9wdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IENoaXBzQ29tcG9uZW50IH0gZnJvbSAnLi4vY2hpcHMvY2hpcHMuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2hlY2tib3hDb21wb25lbnQgfSBmcm9tICcuLi9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJY29uQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vaWNvbi1idXR0b24vaWNvbi1idXR0b24uY29tcG9uZW50JztcclxuaW1wb3J0ICogYXMgY29uc3RhbnRzIGZyb20gJy4uLy4uL2Fzc2V0cy9jb25zdGFudHMuanNvbic7XHJcbmltcG9ydCB7IEZpbHRlcnNBbmRPcHRpb25zIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2ZpbHRlcnMtb3B0aW9ucy5tb2RlbCc7XHJcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdFNlbGVjdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XHJcbmltcG9ydCB7IFNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBTZWxlY3RPcGVuZWRTdGF0ZSB9IGZyb20gJy4uLy4uL21vZGVscy9zZWxlY3Qtb3BlbmVkLXN0YXRlLm1vZGVsJztcclxuXHJcbi8qKlxyXG4gKiBQcm92aWRlcyBhbiBpbXBsZW1lbnRhdGlvbiBmb3IgZ3JvdXAgb2YgZmlsdGVyLlxyXG4gKiBAZXhwb3J0XHJcbiAqIEBjbGFzcyBGaWx0ZXJDb21wb25lbnRcclxuICogQGltcGxlbWVudHMge09uRGVzdHJveX1cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaWVlZXNhLWZpbHRlcicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBNYXRDaGVja2JveE1vZHVsZSxcclxuICAgIE1hdEljb25Nb2R1bGUsXHJcbiAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICBDaGlwc0NvbXBvbmVudCxcclxuICAgIENoZWNrYm94Q29tcG9uZW50LFxyXG4gICAgSWNvbkJ1dHRvbkNvbXBvbmVudCxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBNYXRTZWxlY3RNb2R1bGUsXHJcbiAgICBTZWxlY3RDb21wb25lbnQsXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9maWx0ZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmlsdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGNvbnN0YW50czogYW55ID0gY29uc3RhbnRzO1xyXG4gIGFycm93OiBJY29uQnV0dG9uID0gdGhpcy5jb25zdGFudHM/LmNoaXBzPy5pY29ucz8uYXJyb3c7XHJcbiAgY2hlY2s6IEljb25CdXR0b24gPSB0aGlzLmNvbnN0YW50cz8uY2hpcHM/Lmljb25zPy5jaGVjaztcclxuICByZW1vdmVJY29uOiBJY29uQnV0dG9uID0gdGhpcy5jb25zdGFudHM/LmNoaXBzPy5pY29ucz8ucmVtb3ZlO1xyXG4gIGlzRmlsdGVyT3BlbmVkID0gZmFsc2U7XHJcbiAgc2VsZWN0ZWRDaGVja2JveGVzITogQ2hlY2tib3hPcHRpb25bXTtcclxuICBvbkZpbHRlclRvZ2dsZSA9IGZhbHNlO1xyXG4gIGlzRmlsdGVyQWN0aXZlID0gZmFsc2U7XHJcbiAgaXNNb2JpbGVWaWV3ID0gZmFsc2U7XHJcbiAgaXNBcHBseUJ1dHRvbkRpc2FibGVkID0gdHJ1ZTtcclxuICBmaWx0ZXJzQW5kT3B0aW9ucyA9IG5ldyBNYXA8bnVtYmVyIHwgc3RyaW5nLCBDaGVja2JveE9wdGlvbltdPigpO1xyXG4gIGRlc3Ryb3kkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuICByZWNyZWF0ZUNoZWNrYm94T3B0aW9uc0NvbnRyb2whOiBDaGVja2JveE9wdGlvbltdO1xyXG4gIEBWaWV3Q2hpbGQoU2VsZWN0Q29tcG9uZW50KSBzZWxlY3RDb21wb25lbnQhOiBTZWxlY3RDb21wb25lbnQ7XHJcbiAgcHJpdmF0ZSBmaWx0ZXJlZFR5cGVPcHRpb25zSW5mbyE6IENoaXBPcHRpb25bXTtcclxuICBwcml2YXRlIHNlbGVjdGVkRmlsdGVyT3B0aW9uVHlwZTogRmlsdGVyT3B0aW9uVHlwZSA9XHJcbiAgICBGaWx0ZXJPcHRpb25UeXBlLkNIRUNLQk9YO1xyXG4gIEBJbnB1dCgpIHNldCBmaWx0ZXJPcHRpb25UeXBlKG9wdGlvblR5cGU6IEZpbHRlck9wdGlvblR5cGUpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJPcHRpb25UeXBlID0gb3B0aW9uVHlwZTtcclxuICB9XHJcbiAgZ2V0IGZpbHRlck9wdGlvblR5cGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEZpbHRlck9wdGlvblR5cGU7XHJcbiAgfVxyXG4gIG9wdGlvbnNUeXBlID0gRmlsdGVyT3B0aW9uVHlwZTtcclxuICBASW5wdXQoKVxyXG4gIHNldCBhcHBsaWVkRmlsdGVyT3B0aW9ucyhvcHRpb25zOiBDaGlwT3B0aW9uW10pIHtcclxuICAgIHRoaXMuZmlsdGVyZWRUeXBlT3B0aW9uc0luZm8gPSBvcHRpb25zO1xyXG4gIH1cclxuICBnZXQgYXBwbGllZEZpbHRlck9wdGlvbnMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJlZFR5cGVPcHRpb25zSW5mbztcclxuICB9XHJcbiAgQElucHV0KCkgZmlsdGVyQnV0dG9uOiBJY29uQnV0dG9uID0gdGhpcy5jb25zdGFudHM/LmZpbHRlcj8uYnV0dG9uc1swXTtcclxuICBASW5wdXQoKSBmaWx0ZXJzITogQ2hpcE9wdGlvbltdO1xyXG4gIEBJbnB1dCgpIGNhblNob3dTZWxlY3Rpb24gPSBmYWxzZTtcclxuICBwcml2YXRlIHNlbGVjdGVkRmlsdGVyT3B0aW9uc0xpc3QhOiBDaGVja2JveE9wdGlvbltdO1xyXG4gIHNlbGVjdGVkRmlsdGVyRHJvcERvd25MaXN0OiBTZWxlY3RPcHRpb25bXSA9IFtdO1xyXG4gIGRlZmF1bHRTZWxlY3RlZEZpbHRlckRyb3BEb3duT3B0aW9uczogU2VsZWN0T3B0aW9uW10gPSBbXTtcclxuICBzZWxlY3RlZEZpbHRlcklkITogc3RyaW5nIHwgbnVtYmVyO1xyXG4gIHByZXZTZWxlY3RlZEZpbHRlck9wdGlvbnNMaXN0OiBDaGVja2JveE9wdGlvbltdID0gW107XHJcbiAgQElucHV0KClcclxuICBzZXQgc2VsZWN0ZWRGaWx0ZXJPcHRpb25zKG9wdGlvbnM6IENoZWNrYm94T3B0aW9uW10pIHtcclxuICAgIGlmIChvcHRpb25zICYmIHRoaXMuc2VsZWN0ZWRGaWx0ZXJJZCkge1xyXG4gICAgICB0aGlzLmZpbHRlcnNBbmRPcHRpb25zLnNldCh0aGlzLnNlbGVjdGVkRmlsdGVySWQsIG9wdGlvbnMpO1xyXG4gICAgICB0aGlzLnNldEZpbHRlclNlbGVjdGlvbk9uT3B0aW9uQ2hhbmdlKCk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJPcHRpb25zTGlzdCA9IG9wdGlvbnM7XHJcbiAgICAgIGlmIChcclxuICAgICAgICB0aGlzLnByZXZTZWxlY3RlZEZpbHRlck9wdGlvbnNMaXN0Lmxlbmd0aCAmJlxyXG4gICAgICAgIHRoaXMucHJldlNlbGVjdGVkRmlsdGVyT3B0aW9uc0xpc3RbMF0ubmFtZSAhPT1cclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJPcHRpb25zTGlzdD8uWzBdPy5uYW1lXHJcbiAgICAgIClcclxuICAgICAgICB0aGlzLnJlY3JlYXRlQ2hlY2tib3hPcHRpb25zQ29udHJvbCA9IG9wdGlvbnM7XHJcbiAgICAgIHRoaXMucHJldlNlbGVjdGVkRmlsdGVyT3B0aW9uc0xpc3QgPSB0aGlzLnNlbGVjdGVkRmlsdGVyT3B0aW9uc0xpc3Q7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5maWx0ZXJPcHRpb25UeXBlID09PSB0aGlzLm9wdGlvbnNUeXBlLkRST1BET1dOKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJEcm9wRG93bkxpc3QgPSB0aGlzLnNlbGVjdGVkRmlsdGVyT3B0aW9uc0xpc3QubWFwKFxyXG4gICAgICAgIChzZWxlY3RPcHRpb246IENoZWNrYm94T3B0aW9uKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4geyBpZDogc2VsZWN0T3B0aW9uLmlkLCBuYW1lOiBzZWxlY3RPcHRpb24ubmFtZSA/PyAnJyB9O1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IHNlbGVjdGVkRmlsdGVyT3B0aW9ucygpIHtcclxuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkRmlsdGVyT3B0aW9uc0xpc3Q7XHJcbiAgfVxyXG4gIEBPdXRwdXQoKSBzZWxlY3RlZEZpbHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8Q2hpcE9wdGlvbj4oKTtcclxuICBAT3V0cHV0KCkgZmlsdGVyZWRPcHRpb25zID0gbmV3IEV2ZW50RW1pdHRlcjxGaWx0ZXJzQW5kT3B0aW9uc1tdPigpO1xyXG4gIEBPdXRwdXQoKSByZW1vdmVGaWx0ZXJlZE9wdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZmlsdGVyRHJvcGRvd25TZWFyY2ggPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSBicmVha3BvaW50T2JzZXJ2ZXJTZXJ2aWNlOiBCcmVha3BvaW50T2JzZXJ2ZXJTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yUmVmZXJlbmNlOiBDaGFuZ2VEZXRlY3RvclJlZlxyXG4gICkge1xyXG4gICAgdGhpcy5icmVha3BvaW50T2JzZXJ2ZXJTZXJ2aWNlXHJcbiAgICAgIC5nZXRCcmVha3BvaW50KClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgICB0aGlzLmlzTW9iaWxlVmlldyA9IHJlc3VsdC5tYXRjaGVzO1xyXG4gICAgICAgIHRoaXMuZmlsdGVyQnV0dG9uLmRpc2FibGVkID0gIXRoaXMuaXNNb2JpbGVWaWV3O1xyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogT25GaWx0ZXJTZWxlY3RlZCByZWNlaXZlcyB0aGUgc2VsZWN0ZWQgZmlsdGVyIGZyb20gY2hpcCBjb21wb25lbnQsIGVtaXRzIHRoZSBzZWxlY3RlZCBmaWx0ZXIgYW5kIHRvZ2dsZSB0aGUgaXNGaWx0ZXJCeU9wdGlvbnNWaXNpYmxlIHN0YXRlLlxyXG4gICAqIEBwYXJhbSB7Q2hpcE9wdGlvbn0gdHlwZVxyXG4gICAqIEBtZW1iZXJvZiBGaWx0ZXJDb21wb25lbnRcclxuICAgKi9cclxuICBvbkZpbHRlclNlbGVjdGVkKHR5cGU6IENoaXBPcHRpb24pOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJJZCA9IHR5cGUuaWQ7XHJcbiAgICBpZiAodHlwZS5jaGVja2VkKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXIuZW1pdCh0eXBlKTtcclxuICAgIH1cclxuICAgIHRoaXMuaXNGaWx0ZXJPcGVuZWQgPSB0eXBlPy5jaGVja2VkO1xyXG4gICAgdGhpcy5maWx0ZXJPcHRpb25UeXBlID0gdHlwZS5vcHRpb25UeXBlID8/IHRoaXMub3B0aW9uc1R5cGUuQ0hFQ0tCT1g7XHJcbiAgICB0aGlzLm9uRmlsdGVyVG9nZ2xlID0gZmFsc2U7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIE9uUmVtb3ZhbE9mRmlsdGVyZWRPcHRpb24gbWV0aG9kIHJlY2VpdmVzIHJlbW92ZWQgY2hpcCBmcm9tIGNoaXAgY29tcG9uZW50IGFuZCBlbWl0cyB0aGUgZXZlbnQgd2l0aCByZW1vdmVkIGNoaXAuXHJcbiAgICogQHBhcmFtIHtDaGlwT3B0aW9ufSBvcHRpb25cclxuICAgKiBAbWVtYmVyb2YgRmlsdGVyQ29tcG9uZW50XHJcbiAgICovXHJcbiAgb25SZW1vdmFsT2ZGaWx0ZXJlZE9wdGlvbihvcHRpb246IENoaXBPcHRpb24pOiB2b2lkIHtcclxuICAgIGlmIChvcHRpb24/Lm5hbWUgPT09IHRoaXMuY29uc3RhbnRzPy5maWx0ZXI/LmxhYmVsPy5jbGVhckFsbCkge1xyXG4gICAgICB0aGlzLmFwcGxpZWRGaWx0ZXJPcHRpb25zID0gW107XHJcbiAgICAgIHRoaXMuZmlsdGVyc0FuZE9wdGlvbnMuZm9yRWFjaCgob3B0aW9uczogQ2hlY2tib3hPcHRpb25bXSkgPT4ge1xyXG4gICAgICAgIG9wdGlvbnM/LmZvckVhY2goKG9wdGlvbjogQ2hlY2tib3hPcHRpb24pID0+IChvcHRpb24uY2hlY2tlZCA9IGZhbHNlKSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnJlbW92ZUZpbHRlcmVkT3B0aW9uLmVtaXQoW10pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hcHBsaWVkRmlsdGVyT3B0aW9ucyA9IHRoaXMuYXBwbGllZEZpbHRlck9wdGlvbnMuZmlsdGVyKFxyXG4gICAgICAgIChyZXM6IENoaXBPcHRpb24pID0+IHJlcy5pZCAhPT0gb3B0aW9uLmlkXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuYXBwbGllZEZpbHRlck9wdGlvbnMgPVxyXG4gICAgICAgIHRoaXMuYXBwbGllZEZpbHRlck9wdGlvbnMubGVuZ3RoID09PSAxID8gW10gOiB0aGlzLmFwcGxpZWRGaWx0ZXJPcHRpb25zO1xyXG4gICAgICB0aGlzLmZpbHRlcnNBbmRPcHRpb25zLmZvckVhY2goKG9wdGlvbnM6IENoZWNrYm94T3B0aW9uW10pID0+IHtcclxuICAgICAgICBvcHRpb25zPy5mb3JFYWNoKChjaGVja0JveE9wdGlvbjogQ2hlY2tib3hPcHRpb24pID0+IHtcclxuICAgICAgICAgIGlmIChjaGVja0JveE9wdGlvbi5pZCA9PT0gb3B0aW9uLmlkKSBjaGVja0JveE9wdGlvbi5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnJlbW92ZUZpbHRlcmVkT3B0aW9uLmVtaXQodGhpcy5nZXRMaXN0T2ZTZWxlY3RlZENoZWNrYm94ZXMoKSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldEZpbHRlclNlbGVjdGlvbk9uT3B0aW9uQ2hhbmdlKCk7XHJcbiAgfVxyXG4gIGdldExpc3RPZlNlbGVjdGVkQ2hlY2tib3hlcygpIHtcclxuICAgIGNvbnN0IHNlbGVjdGVkRmlsdGVyc0FuZE9wdGlvbnM6IEZpbHRlcnNBbmRPcHRpb25zW10gPSBbXTtcclxuICAgIHRoaXMuZmlsdGVyc0FuZE9wdGlvbnMuZm9yRWFjaChcclxuICAgICAgKHZhbHVlOiBDaGVja2JveE9wdGlvbltdLCBrZXk6IHN0cmluZyB8IG51bWJlcikgPT4ge1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkT3B0aW9uczogQ2hlY2tib3hPcHRpb25bXSA9IFtdO1xyXG4gICAgICAgIHZhbHVlPy5mb3JFYWNoKChvcHRpb24pID0+IHtcclxuICAgICAgICAgIGlmIChvcHRpb24uY2hlY2tlZCkgc2VsZWN0ZWRPcHRpb25zLnB1c2gob3B0aW9uKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoc2VsZWN0ZWRPcHRpb25zLmxlbmd0aClcclxuICAgICAgICAgIHNlbGVjdGVkRmlsdGVyc0FuZE9wdGlvbnMucHVzaCh7IFtrZXldOiBzZWxlY3RlZE9wdGlvbnMgfSk7XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgICByZXR1cm4gc2VsZWN0ZWRGaWx0ZXJzQW5kT3B0aW9ucztcclxuICB9XHJcbiAgLyoqXHJcbiAgICogT25GaWx0ZXJBcHBseSB0b2dnbGVzIHRoZSBpc0ZpbHRlckJ5T3B0aW9uc1Zpc2libGUgc3RhdGUsIGVtaXRzIHRoZSBzZWxlY3RlZCBmaWx0ZXIgb3B0aW9ucyBhbmQgdG9nZ2xlcyB0aGUgZmlsdGVyIHN0YXRlT1xyXG4gICAqIEBtZW1iZXJvZiBGaWx0ZXJDb21wb25lbnRcclxuICAgKi9cclxuICBvbkZpbHRlckFwcGx5KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc0ZpbHRlck9wZW5lZCA9ICF0aGlzLmlzRmlsdGVyT3BlbmVkO1xyXG4gICAgdGhpcy5maWx0ZXJlZE9wdGlvbnMuZW1pdCh0aGlzLmdldExpc3RPZlNlbGVjdGVkQ2hlY2tib3hlcygpKTtcclxuICAgIHRoaXMub25GaWx0ZXJUb2dnbGUgPSB0cnVlO1xyXG4gICAgdGhpcy5pc0FwcGx5QnV0dG9uRGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZmVyZW5jZS5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNlbGVjdGVkRmlsdGVyT3B0aW9ucyBtZXRob2QgaXMgY2FsbGVkIGZvciBldmVyeSBzZWxlY3Rpb24gYW5kIGRlc2VsZWN0aW9uIG9mIGZpbHRlciBvcHRpb24gYW5kIHN0b3JlcyB0aGUgc2VsZWN0ZWQgZmlsdGVyIG9wdGlvbnMuXHJcbiAgICogQHBhcmFtIHtGaWx0ZXJzQW5kT3B0aW9uc1tdfSB2YWx1ZXNcclxuICAgKiBAbWVtYmVyb2YgRmlsdGVyQ29tcG9uZW50XHJcbiAgICovXHJcbiAgc2VsZWN0ZWRGaWx0ZXJPcHRpb25zSW5mbyh2YWx1ZXM6IENoZWNrYm94T3B0aW9uW10pOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmdldExpc3RPZlNlbGVjdGVkQ2hlY2tib3hlcygpLmxlbmd0aCA9PT0gMClcclxuICAgICAgdGhpcy5pc0FwcGx5QnV0dG9uRGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgZWxzZSB0aGlzLmlzQXBwbHlCdXR0b25EaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgaWYgKHZhbHVlcyAmJiB0aGlzLnNlbGVjdGVkRmlsdGVySWQpIHtcclxuICAgICAgdGhpcy5maWx0ZXJzQW5kT3B0aW9ucy5zZXQodGhpcy5zZWxlY3RlZEZpbHRlcklkLCB2YWx1ZXMpO1xyXG4gICAgICB0aGlzLnNldEZpbHRlclNlbGVjdGlvbk9uT3B0aW9uQ2hhbmdlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIE9uRmlsdGVyQnlJY29uQ2xpY2sgbWV0aG9kIHRvZ2dsZXMgdGhlIGlzRmlsdGVyQWN0aXZlIHZhbHVlLlxyXG4gICAqIEBtZW1iZXJvZiBGaWx0ZXJDb21wb25lbnRcclxuICAgKi9cclxuICBvbkZpbHRlckJ5SWNvbkNsaWNrKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc0ZpbHRlckFjdGl2ZSA9ICF0aGlzLmlzRmlsdGVyQWN0aXZlO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBOZ09uRGVzdHJveSBwZXJmb3JtcyBuZWNlc3NhcnkgY2xlYW51cCB0YXNrcywgc3VjaCBhcyB1bnN1YnNjcmliaW5nIGZyb20gc3Vic2NyaXB0aW9uIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBiZWluZyBkZXN0cm95ZWQuXHJcbiAgICogQG1lbWJlcm9mIEZpbHRlckNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXN0cm95JC51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogT25Ecm9wZG93blNlbGVjdGlvbkNoYW5nZSgpIGlzIGNhbGxlZCBmb3IgZXZlcnkgZHJvcCBkb3duIHNlbGVjdGlvbiBjaGFuZ2VzIGFuZCBzZXRzIHNlbGVjdGVkRmlsdGVyT3B0aW9uc0xpc3QuXHJcbiAgICogQG1lbWJlcm9mIEZpbHRlckNvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uRHJvcGRvd25TZWxlY3Rpb25DaGFuZ2Uob3B0aW9uOiBTZWxlY3RPcHRpb24pOiB2b2lkIHtcclxuICAgIGlmIChvcHRpb24gJiYgdGhpcy5zZWxlY3RlZEZpbHRlcklkKSB7XHJcbiAgICAgIGNvbnN0IHNlbGVjdGVkT3B0aW9uOiBDaGVja2JveE9wdGlvbltdID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGlkOiBvcHRpb24uaWQsXHJcbiAgICAgICAgICBuYW1lOiBvcHRpb24ubmFtZSxcclxuICAgICAgICAgIGNoZWNrZWQ6IHRydWUsXHJcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsXHJcbiAgICAgICAgfSxcclxuICAgICAgXTtcclxuICAgICAgdGhpcy5zZWxlY3RlZEZpbHRlck9wdGlvbnNMaXN0Py5tYXAoKG9wdGlvbikgPT4ge1xyXG4gICAgICAgIGlmIChvcHRpb24uaWQgPT09IHNlbGVjdGVkT3B0aW9uWzBdLmlkKSB7XHJcbiAgICAgICAgICBvcHRpb24uY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIG9wdGlvbi5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5pc0FwcGx5QnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5maWx0ZXJzQW5kT3B0aW9ucy5zZXQodGhpcy5zZWxlY3RlZEZpbHRlcklkLCBzZWxlY3RlZE9wdGlvbik7XHJcbiAgICAgIHRoaXMuc2V0RmlsdGVyU2VsZWN0aW9uT25PcHRpb25DaGFuZ2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldEZpbHRlclNlbGVjdGlvbk9uT3B0aW9uQ2hhbmdlKCkgY2FsbGVkIG9uIGV2ZXJ5IHNlbGVjdGlvbiBhbmQgZGVzZWxlY3Rpb24gb2YgZmlsdGVyIG9wdGlvbiBhbmQgc2V0cyBjYW5TaG93U2VsZWN0aW9uIGZsYWcgdG8gc2hvdyBvciBoaWRlIHRoZSB0aWNrIG1hcmsgb2Ygc2VsZWN0ZWQgZmlsdGVyIG9wdGlvbi5cclxuICAgKiBAbWVtYmVyb2YgRmlsdGVyQ29tcG9uZW50XHJcbiAgICovXHJcbiAgc2V0RmlsdGVyU2VsZWN0aW9uT25PcHRpb25DaGFuZ2UoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jYW5TaG93U2VsZWN0aW9uKSB7XHJcbiAgICAgIGZvciAoY29uc3QgW2tleSwgb3B0aW9uc10gb2YgdGhpcy5maWx0ZXJzQW5kT3B0aW9ucykge1xyXG4gICAgICAgIGNvbnN0IGZpbHRlck9wdGlvbiA9IHRoaXMuZmlsdGVycy5maW5kKChjaGlwT3B0aW9uKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gY2hpcE9wdGlvbi5uYW1lID09PSBrZXk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKGZpbHRlck9wdGlvbikge1xyXG4gICAgICAgICAgZmlsdGVyT3B0aW9uLmNhblNob3dTZWxlY3Rpb24gPSBvcHRpb25zLnNvbWUoXHJcbiAgICAgICAgICAgIChvcHRpb24pID0+IG9wdGlvbi5jaGVja2VkID09PSB0cnVlXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiBFbWl0cyB0aGUgZmlsdGVyRHJvcGRvd25TZWFyY2ggZXZlbnQgd2l0aCB0aGUgc2VhcmNoZWQgdGV4dCB2YWx1ZS5cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2VhcmNoVGV4dFxyXG4gICAqIEBtZW1iZXJvZiBGaWx0ZXJDb21wb25lbnRcclxuICAgKi9cclxuICBvbkRyb3Bkb3duU2VhcmNoKHNlYXJjaFRleHQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5maWx0ZXJEcm9wZG93blNlYXJjaC5lbWl0KHNlYXJjaFRleHQpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBFbWl0cyBmaWx0ZXJEcm9wZG93blNlYXJjaCBldmVudCB0byByZXNldCB0aGUgZHJvcGRvd24gb3B0aW9ucyB0byBkZWZhdWx0IHdoZW4gdGhlIGRyb3Bkb3duIGlzIGNsb3NlZCBhbmQgc2V0cyBzZWFyY2ggdGVybSBlbXB0eS5cclxuICAgKiBAcGFyYW0ge1NlbGVjdE9wZW5lZFN0YXRlfSBldmVudFxyXG4gICAqIEBtZW1iZXJvZiBGaWx0ZXJDb21wb25lbnRcclxuICAgKi9cclxuICBvbkRyb3Bkb3duT3BlbmVkQ2hhbmdlKGV2ZW50OiBTZWxlY3RPcGVuZWRTdGF0ZSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZGVmYXVsdFNlbGVjdGVkRmlsdGVyRHJvcERvd25PcHRpb25zPy5sZW5ndGggPT09IDApIHtcclxuICAgICAgdGhpcy5kZWZhdWx0U2VsZWN0ZWRGaWx0ZXJEcm9wRG93bk9wdGlvbnMgPVxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGaWx0ZXJEcm9wRG93bkxpc3Q7XHJcbiAgICB9XHJcbiAgICBpZiAoIWV2ZW50Py5vcGVuZWQpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEZpbHRlckRyb3BEb3duTGlzdCA9XHJcbiAgICAgICAgdGhpcy5kZWZhdWx0U2VsZWN0ZWRGaWx0ZXJEcm9wRG93bk9wdGlvbnM7XHJcbiAgICB9XHJcbiAgICBpZiAoXHJcbiAgICAgICFldmVudD8ub3BlbmVkICYmXHJcbiAgICAgIHRoaXMuc2VsZWN0Q29tcG9uZW50Py5mb3JtRmllbGRzPy50b0FycmF5KCk/LlswXT8uc2VhcmNoVGVybVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0Q29tcG9uZW50LmZvcm1GaWVsZHMudG9BcnJheSgpWzBdLnNlYXJjaFRlcm0gPSAnJztcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImllZWVzYS1maWx0ZXJcIiAqbmdJZj1cImZpbHRlcnMgJiYgZmlsdGVycy5sZW5ndGggPiAwXCI+XHJcbiAgPGRpdlxyXG4gICAgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZmxleC1zbS1jb2x1bW4gZmxleC1tZC1jb2x1bW4gZmxleC1sZy1yb3cgZmxleC14bC1yb3dcIlxyXG4gID5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgIDxpZWVlc2EtaWNvbi1idXR0b25cclxuICAgICAgICBbaWNvbkJ1dHRvbl09XCJmaWx0ZXJCdXR0b25cIlxyXG4gICAgICAgIChjbGljayk9XCJvbkZpbHRlckJ5SWNvbkNsaWNrKClcIlxyXG4gICAgICA+PC9pZWVlc2EtaWNvbi1idXR0b24+XHJcbiAgICAgIDxwXHJcbiAgICAgICAgY2xhc3M9XCJpZWVlc2EtbGFiZWwtbGctYm9sZC0xNiBtLTBcIlxyXG4gICAgICAgICpuZ0lmPVwiIWlzTW9iaWxlVmlldyB8fCBpc0ZpbHRlckFjdGl2ZVwiXHJcbiAgICAgID5cclxuICAgICAgICB7eyBjb25zdGFudHM/LmZpbHRlcj8ubGFiZWw/LmZpbHRlckJ5IH19XHJcbiAgICAgIDwvcD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdlxyXG4gICAgICBbbmdDbGFzc109XCJcclxuICAgICAgICAhaXNNb2JpbGVWaWV3XHJcbiAgICAgICAgICA/ICdkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyJ1xyXG4gICAgICAgICAgOiAnZC1mbGV4IGFsaWduLXNlbGYtc3RyZXRjaCBmbGV4LXdyYXAgYWxpZ24taXRlbXMtY2VudGVyIHB0LXNtLTIgcHQtbWQtMiBwdC0yJ1xyXG4gICAgICBcIlxyXG4gICAgICAqbmdJZj1cIiFpc01vYmlsZVZpZXcgfHwgaXNGaWx0ZXJBY3RpdmVcIlxyXG4gICAgPlxyXG4gICAgICA8aWVlZXNhLWNoaXBzXHJcbiAgICAgICAgW2NoaXBHcm91cF09XCJmaWx0ZXJzXCJcclxuICAgICAgICBbYXJyb3ddPVwiYXJyb3dcIlxyXG4gICAgICAgIFtjaGVja109XCJjaGVja1wiXHJcbiAgICAgICAgW2hhc0NoaXBUb2dnbGVkXT1cIm9uRmlsdGVyVG9nZ2xlXCJcclxuICAgICAgICAoc2VsZWN0ZWRDaGlwKT1cIm9uRmlsdGVyU2VsZWN0ZWQoJGV2ZW50KVwiXHJcbiAgICAgID48L2llZWVzYS1jaGlwcz5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNNb2JpbGVWaWV3IHx8IGlzRmlsdGVyQWN0aXZlXCI+XHJcbiAgICA8aWVlZXNhLWNoZWNrYm94XHJcbiAgICAgIFtjaGVja2JveGVzXT1cInNlbGVjdGVkRmlsdGVyT3B0aW9uc1wiXHJcbiAgICAgIFtyZWNyZWF0ZUNoZWNrYm94T3B0aW9uc0NvbnRyb2xdPVwicmVjcmVhdGVDaGVja2JveE9wdGlvbnNDb250cm9sXCJcclxuICAgICAgKGNoZWNrYm94T3B0aW9uc0FuZFNlbGVjdGlvbik9XCJzZWxlY3RlZEZpbHRlck9wdGlvbnNJbmZvKCRldmVudClcIlxyXG4gICAgICAqbmdJZj1cImlzRmlsdGVyT3BlbmVkICYmIGZpbHRlck9wdGlvblR5cGUgPT09IG9wdGlvbnNUeXBlLkNIRUNLQk9YXCJcclxuICAgICAgY2xhc3M9XCJkLWZsZXggZ2FwLTIgaWVlZXNhLWZpbHRlcl9fZmlsdGVyLW9wdGlvbnNcIlxyXG4gICAgPjwvaWVlZXNhLWNoZWNrYm94PlxyXG4gICAgPGllZWVzYS1zZWxlY3RcclxuICAgICAgKm5nSWY9XCJpc0ZpbHRlck9wZW5lZCAmJiBmaWx0ZXJPcHRpb25UeXBlID09PSBvcHRpb25zVHlwZS5EUk9QRE9XTlwiXHJcbiAgICAgIFtpc1NvcnROZWVkZWRdPVwiZmFsc2VcIlxyXG4gICAgICBbZHJvcGRvd25PcHRpb25zXT1cInNlbGVjdGVkRmlsdGVyRHJvcERvd25MaXN0XCJcclxuICAgICAgW2lzTGFiZWxBbGlnbmVkTGVmdF09XCJ0cnVlXCJcclxuICAgICAgW3NlbGVjdExhYmVsXT1cImNvbnN0YW50cz8udmlld0dyb3Vwcz8uZmlsdGVyQnlMYWJlbFwiXHJcbiAgICAgIChvcHRpb25TZWxlY3RlZCk9XCJvbkRyb3Bkb3duU2VsZWN0aW9uQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAob3B0aW9uU2VhcmNoZWQpPVwib25Ecm9wZG93blNlYXJjaCgkZXZlbnQpXCJcclxuICAgICAgKGRyb3Bkb3duT3BlbmVkQ2hhbmdlKT1cIm9uRHJvcGRvd25PcGVuZWRDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgIFtpc1NlYXJjaF09XCJ0cnVlXCJcclxuICAgID48L2llZWVzYS1zZWxlY3Q+XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgIG1hdC1idXR0b25cclxuICAgICAgKm5nSWY9XCJpc0ZpbHRlck9wZW5lZFwiXHJcbiAgICAgIGNsYXNzPVwibWF0LXRlcnRpYXJ5LWJ1dHRvbiBtLTJcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiaXNBcHBseUJ1dHRvbkRpc2FibGVkXCJcclxuICAgICAgKGNsaWNrKT1cIm9uRmlsdGVyQXBwbHkoKVwiXHJcbiAgICA+XHJcbiAgICAgIHt7IGNvbnN0YW50cz8uZmlsdGVyPy5sYWJlbD8uYXBwbHlCdXR0b24gfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGllZWVzYS1jaGlwc1xyXG4gICAgICBbY2hpcEdyb3VwXT1cImFwcGxpZWRGaWx0ZXJPcHRpb25zXCJcclxuICAgICAgW2lzVmlld01vcmVOZWVkZWRdPVwidHJ1ZVwiXHJcbiAgICAgICpuZ0lmPVwiYXBwbGllZEZpbHRlck9wdGlvbnNcIlxyXG4gICAgICBbYXJyb3ddPVwicmVtb3ZlSWNvblwiXHJcbiAgICAgIChzZWxlY3RlZENoaXApPVwib25SZW1vdmFsT2ZGaWx0ZXJlZE9wdGlvbigkZXZlbnQpXCJcclxuICAgICAgY2xhc3M9XCJkLWZsZXggZ2FwLTIgbXQtMlwiXHJcbiAgICAgIFtoYXNWaWV3TW9yZUZvckRlc2t0b3BdPVwiZmFsc2VcIlxyXG4gICAgICBbaGFzVmlld01vcmVGb3JNb2JpbGVdPVwidHJ1ZVwiXHJcbiAgICA+PC9pZWVlc2EtY2hpcHM+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvZGl2PlxyXG4iXX0=
|