cps-ui-kit 0.165.0 → 17.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/cps-autocomplete/cps-autocomplete.component.mjs +824 -0
- package/esm2022/lib/components/cps-button/cps-button.component.mjs +190 -0
- package/esm2022/lib/components/cps-button-toggle/cps-button-toggle.component.mjs +235 -0
- package/esm2022/lib/components/cps-checkbox/cps-checkbox.component.mjs +149 -0
- package/esm2022/lib/components/cps-chip/cps-chip.component.mjs +94 -0
- package/esm2022/lib/components/cps-datepicker/cps-datepicker.component.mjs +382 -0
- package/esm2022/lib/components/cps-expansion-panel/cps-expansion-panel.component.mjs +209 -0
- package/esm2022/lib/components/cps-file-upload/cps-file-upload.component.mjs +138 -0
- package/esm2022/lib/components/cps-icon/cps-icon.component.mjs +193 -0
- package/esm2022/lib/components/cps-info-circle/cps-info-circle.component.mjs +61 -0
- package/esm2022/lib/components/cps-input/cps-input.component.mjs +386 -0
- package/{esm2020 → esm2022}/lib/components/cps-loader/cps-loader.component.mjs +5 -5
- package/esm2022/lib/components/cps-menu/cps-menu.component.mjs +552 -0
- package/esm2022/lib/components/cps-paginator/cps-paginator.component.mjs +114 -0
- package/esm2022/lib/components/cps-paginator/pipes/cps-paginate.pipe.mjs +30 -0
- package/{esm2020 → esm2022}/lib/components/cps-progress-circular/cps-progress-circular.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/cps-progress-linear/cps-progress-linear.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/cps-radio-group/cps-radio/cps-radio.component.mjs +7 -7
- package/esm2022/lib/components/cps-radio-group/cps-radio-button/cps-radio-button.component.mjs +55 -0
- package/esm2022/lib/components/cps-radio-group/cps-radio-group.component.mjs +158 -0
- package/esm2022/lib/components/cps-select/cps-select.component.mjs +615 -0
- package/esm2022/lib/components/cps-sidebar-menu/cps-sidebar-menu.component.mjs +110 -0
- package/{esm2020 → esm2022}/lib/components/cps-tab-group/cps-tab/cps-tab.component.mjs +4 -4
- package/esm2022/lib/components/cps-tab-group/cps-tab-group.component.mjs +303 -0
- package/esm2022/lib/components/cps-table/components/internal/cps-sort-icon/cps-sort-icon.component.mjs +79 -0
- package/esm2022/lib/components/cps-table/components/internal/table-column-filter/table-column-filter.component.mjs +408 -0
- package/esm2022/lib/components/cps-table/components/internal/table-column-filter-constraint/table-column-filter-constraint.component.mjs +149 -0
- package/esm2022/lib/components/cps-table/components/internal/table-row-menu/table-row-menu.component.mjs +88 -0
- package/esm2022/lib/components/cps-table/cps-table.component.mjs +941 -0
- package/esm2022/lib/components/cps-table/directives/cps-table-column-filter.directive.mjs +181 -0
- package/{esm2020 → esm2022}/lib/components/cps-table/directives/cps-table-column-sortable.directive.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/cps-table/directives/cps-table-header-selectable.directive.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/cps-table/directives/cps-table-row-selectable.directive.mjs +5 -5
- package/esm2022/lib/components/cps-table/directives/internal/table-unsort.directive.mjs +220 -0
- package/esm2022/lib/components/cps-tag/cps-tag.component.mjs +136 -0
- package/esm2022/lib/components/cps-textarea/cps-textarea.component.mjs +291 -0
- package/esm2022/lib/components/cps-timepicker/cps-timepicker.component.mjs +351 -0
- package/esm2022/lib/components/cps-tree-autocomplete/cps-tree-autocomplete.component.mjs +251 -0
- package/esm2022/lib/components/cps-tree-select/cps-tree-select.component.mjs +87 -0
- package/esm2022/lib/components/cps-tree-table/cps-tree-table.component.mjs +1196 -0
- package/{esm2020 → esm2022}/lib/components/cps-tree-table/directives/cps-tree-table-column-filter.directive.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/cps-tree-table/directives/cps-tree-table-column-sortable.directive.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/cps-tree-table/directives/cps-tree-table-header-selectable.directive.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/cps-tree-table/directives/cps-tree-table-row-selectable.directive.mjs +5 -5
- package/esm2022/lib/components/cps-tree-table/directives/cps-tree-table-row-toggler.directive.mjs +43 -0
- package/esm2022/lib/components/cps-tree-table/directives/internal/tree-table-unsort.directive.mjs +354 -0
- package/esm2022/lib/components/internal/cps-base-tree-dropdown/cps-base-tree-dropdown.component.mjs +619 -0
- package/esm2022/lib/directives/cps-tooltip/cps-tooltip.directive.mjs +257 -0
- package/{esm2020 → esm2022}/lib/pipes/internal/check-option-selected.pipe.mjs +4 -4
- package/esm2022/lib/pipes/internal/combine-labels.pipe.mjs +25 -0
- package/{esm2020 → esm2022}/lib/pipes/internal/label-by-value.pipe.mjs +4 -4
- package/esm2022/lib/services/cps-dialog/cps-dialog.service.mjs +99 -0
- package/{esm2020 → esm2022}/lib/services/cps-dialog/internal/components/cps-confirmation/cps-confirmation.component.mjs +5 -5
- package/esm2022/lib/services/cps-dialog/internal/components/cps-dialog/cps-dialog.component.mjs +470 -0
- package/{esm2020 → esm2022}/lib/services/cps-dialog/internal/directives/cps-dialog-content.directive.mjs +5 -5
- package/esm2022/lib/services/cps-dialog/utils/cps-dialog-config.mjs +3 -0
- package/esm2022/lib/services/cps-notification/cps-notification.service.mjs +126 -0
- package/esm2022/lib/services/cps-notification/internal/components/cps-notification-container/cps-notification-container.component.mjs +91 -0
- package/{esm2020 → esm2022}/lib/services/cps-notification/internal/components/cps-toast/cps-toast.component.mjs +23 -23
- package/esm2022/lib/utils/colors-utils.mjs +57 -0
- package/esm2022/lib/utils/internal/size-utils.mjs +24 -0
- package/{esm2020 → esm2022}/public-api.mjs +2 -2
- package/{fesm2020 → fesm2022}/cps-ui-kit.mjs +481 -391
- package/fesm2022/cps-ui-kit.mjs.map +1 -0
- package/lib/components/cps-autocomplete/cps-autocomplete.component.d.ts +2 -2
- package/lib/components/cps-button/cps-button.component.d.ts +1 -1
- package/lib/components/cps-button-toggle/cps-button-toggle.component.d.ts +2 -2
- package/lib/components/cps-checkbox/cps-checkbox.component.d.ts +2 -2
- package/lib/components/cps-chip/cps-chip.component.d.ts +1 -1
- package/lib/components/cps-datepicker/cps-datepicker.component.d.ts +2 -2
- package/lib/components/cps-expansion-panel/cps-expansion-panel.component.d.ts +1 -1
- package/lib/components/cps-file-upload/cps-file-upload.component.d.ts +1 -1
- package/lib/components/cps-icon/cps-icon.component.d.ts +1 -1
- package/lib/components/cps-info-circle/cps-info-circle.component.d.ts +2 -2
- package/lib/components/cps-input/cps-input.component.d.ts +2 -2
- package/lib/components/cps-loader/cps-loader.component.d.ts +1 -1
- package/lib/components/cps-menu/cps-menu.component.d.ts +1 -1
- package/lib/components/cps-paginator/cps-paginator.component.d.ts +1 -1
- package/lib/components/cps-progress-circular/cps-progress-circular.component.d.ts +1 -1
- package/lib/components/cps-progress-linear/cps-progress-linear.component.d.ts +1 -1
- package/lib/components/cps-radio-group/cps-radio/cps-radio.component.d.ts +1 -1
- package/lib/components/cps-radio-group/cps-radio-button/cps-radio-button.component.d.ts +1 -1
- package/lib/components/cps-radio-group/cps-radio-group.component.d.ts +2 -2
- package/lib/components/cps-select/cps-select.component.d.ts +2 -2
- package/lib/components/cps-sidebar-menu/cps-sidebar-menu.component.d.ts +1 -1
- package/lib/components/cps-tab-group/cps-tab/cps-tab.component.d.ts +1 -1
- package/lib/components/cps-tab-group/cps-tab-group.component.d.ts +1 -1
- package/lib/components/cps-table/components/internal/cps-sort-icon/cps-sort-icon.component.d.ts +1 -1
- package/lib/components/cps-table/components/internal/table-column-filter/table-column-filter.component.d.ts +1 -1
- package/lib/components/cps-table/components/internal/table-column-filter-constraint/table-column-filter-constraint.component.d.ts +1 -1
- package/lib/components/cps-table/components/internal/table-row-menu/table-row-menu.component.d.ts +1 -1
- package/lib/components/cps-table/cps-table.component.d.ts +1 -1
- package/lib/components/cps-table/directives/cps-table-column-filter.directive.d.ts +1 -1
- package/lib/components/cps-table/directives/cps-table-column-sortable.directive.d.ts +1 -1
- package/lib/components/cps-table/directives/cps-table-row-selectable.directive.d.ts +1 -1
- package/lib/components/cps-tag/cps-tag.component.d.ts +1 -1
- package/lib/components/cps-textarea/cps-textarea.component.d.ts +2 -2
- package/lib/components/cps-timepicker/cps-timepicker.component.d.ts +2 -2
- package/lib/components/cps-tree-autocomplete/cps-tree-autocomplete.component.d.ts +1 -1
- package/lib/components/cps-tree-select/cps-tree-select.component.d.ts +1 -1
- package/lib/components/cps-tree-table/cps-tree-table.component.d.ts +4 -4
- package/lib/components/cps-tree-table/directives/cps-tree-table-column-filter.directive.d.ts +1 -1
- package/lib/components/cps-tree-table/directives/cps-tree-table-column-sortable.directive.d.ts +1 -1
- package/lib/components/cps-tree-table/directives/cps-tree-table-row-selectable.directive.d.ts +1 -1
- package/lib/components/cps-tree-table/directives/cps-tree-table-row-toggler.directive.d.ts +1 -1
- package/lib/components/internal/cps-base-tree-dropdown/cps-base-tree-dropdown.component.d.ts +2 -2
- package/lib/directives/{cps-tooltip.directive.d.ts → cps-tooltip/cps-tooltip.directive.d.ts} +2 -2
- package/lib/services/cps-dialog/cps-dialog.service.d.ts +13 -0
- package/lib/services/cps-dialog/utils/cps-dialog-config.d.ts +1 -1
- package/lib/services/cps-notification/cps-notification.service.d.ts +32 -0
- package/lib/services/cps-notification/internal/components/cps-notification-container/cps-notification-container.component.d.ts +1 -1
- package/lib/services/cps-notification/internal/components/cps-toast/cps-toast.component.d.ts +1 -1
- package/package.json +12 -18
- package/public-api.d.ts +1 -1
- package/esm2020/lib/components/cps-autocomplete/cps-autocomplete.component.mjs +0 -824
- package/esm2020/lib/components/cps-button/cps-button.component.mjs +0 -190
- package/esm2020/lib/components/cps-button-toggle/cps-button-toggle.component.mjs +0 -235
- package/esm2020/lib/components/cps-checkbox/cps-checkbox.component.mjs +0 -149
- package/esm2020/lib/components/cps-chip/cps-chip.component.mjs +0 -94
- package/esm2020/lib/components/cps-datepicker/cps-datepicker.component.mjs +0 -382
- package/esm2020/lib/components/cps-expansion-panel/cps-expansion-panel.component.mjs +0 -209
- package/esm2020/lib/components/cps-file-upload/cps-file-upload.component.mjs +0 -138
- package/esm2020/lib/components/cps-icon/cps-icon.component.mjs +0 -193
- package/esm2020/lib/components/cps-info-circle/cps-info-circle.component.mjs +0 -61
- package/esm2020/lib/components/cps-input/cps-input.component.mjs +0 -386
- package/esm2020/lib/components/cps-menu/cps-menu.component.mjs +0 -552
- package/esm2020/lib/components/cps-paginator/cps-paginator.component.mjs +0 -113
- package/esm2020/lib/components/cps-paginator/pipes/cps-paginate.pipe.mjs +0 -30
- package/esm2020/lib/components/cps-radio-group/cps-radio-button/cps-radio-button.component.mjs +0 -55
- package/esm2020/lib/components/cps-radio-group/cps-radio-group.component.mjs +0 -158
- package/esm2020/lib/components/cps-select/cps-select.component.mjs +0 -615
- package/esm2020/lib/components/cps-sidebar-menu/cps-sidebar-menu.component.mjs +0 -110
- package/esm2020/lib/components/cps-tab-group/cps-tab-group.component.mjs +0 -299
- package/esm2020/lib/components/cps-table/components/internal/cps-sort-icon/cps-sort-icon.component.mjs +0 -79
- package/esm2020/lib/components/cps-table/components/internal/table-column-filter/table-column-filter.component.mjs +0 -408
- package/esm2020/lib/components/cps-table/components/internal/table-column-filter-constraint/table-column-filter-constraint.component.mjs +0 -148
- package/esm2020/lib/components/cps-table/components/internal/table-row-menu/table-row-menu.component.mjs +0 -88
- package/esm2020/lib/components/cps-table/cps-table.component.mjs +0 -940
- package/esm2020/lib/components/cps-table/directives/cps-table-column-filter.directive.mjs +0 -181
- package/esm2020/lib/components/cps-table/directives/internal/table-unsort.directive.mjs +0 -210
- package/esm2020/lib/components/cps-tag/cps-tag.component.mjs +0 -136
- package/esm2020/lib/components/cps-textarea/cps-textarea.component.mjs +0 -291
- package/esm2020/lib/components/cps-timepicker/cps-timepicker.component.mjs +0 -351
- package/esm2020/lib/components/cps-tree-autocomplete/cps-tree-autocomplete.component.mjs +0 -250
- package/esm2020/lib/components/cps-tree-select/cps-tree-select.component.mjs +0 -87
- package/esm2020/lib/components/cps-tree-table/cps-tree-table.component.mjs +0 -1192
- package/esm2020/lib/components/cps-tree-table/directives/cps-tree-table-row-toggler.directive.mjs +0 -43
- package/esm2020/lib/components/cps-tree-table/directives/internal/tree-table-unsort.directive.mjs +0 -334
- package/esm2020/lib/components/internal/cps-base-tree-dropdown/cps-base-tree-dropdown.component.mjs +0 -616
- package/esm2020/lib/directives/cps-tooltip.directive.mjs +0 -257
- package/esm2020/lib/pipes/internal/combine-labels.pipe.mjs +0 -25
- package/esm2020/lib/services/cps-dialog/cps-dialog.service.mjs +0 -86
- package/esm2020/lib/services/cps-dialog/internal/components/cps-dialog/cps-dialog.component.mjs +0 -470
- package/esm2020/lib/services/cps-dialog/utils/cps-dialog-config.mjs +0 -3
- package/esm2020/lib/services/cps-notification/cps-notification.service.mjs +0 -94
- package/esm2020/lib/services/cps-notification/internal/components/cps-notification-container/cps-notification-container.component.mjs +0 -91
- package/esm2020/lib/utils/colors-utils.mjs +0 -57
- package/esm2020/lib/utils/internal/size-utils.mjs +0 -24
- package/fesm2015/cps-ui-kit.mjs +0 -12086
- package/fesm2015/cps-ui-kit.mjs.map +0 -1
- package/fesm2020/cps-ui-kit.mjs.map +0 -1
- /package/{esm2020 → esm2022}/cps-ui-kit.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/cps-table/cps-column-filter-types.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/cps-dialog/utils/cps-dialog-ref.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/cps-notification/utils/cps-notification-config.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/cps-notification/utils/internal/cps-notification-data.mjs +0 -0
|
@@ -1,408 +0,0 @@
|
|
|
1
|
-
import { Component, HostListener, Input, Optional, ViewChild, ViewChildren } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { FormsModule } from '@angular/forms';
|
|
4
|
-
import { FilterOperator } from 'primeng/api';
|
|
5
|
-
import { Table } from 'primeng/table';
|
|
6
|
-
import { CpsColumnFilterMatchMode } from '../../../cps-column-filter-types';
|
|
7
|
-
import { CpsButtonComponent } from '../../../../cps-button/cps-button.component';
|
|
8
|
-
import { CpsMenuComponent } from '../../../../cps-menu/cps-menu.component';
|
|
9
|
-
import { CpsIconComponent } from '../../../../cps-icon/cps-icon.component';
|
|
10
|
-
import { CpsSelectComponent } from '../../../../cps-select/cps-select.component';
|
|
11
|
-
import { TableColumnFilterConstraintComponent } from '../table-column-filter-constraint/table-column-filter-constraint.component';
|
|
12
|
-
import * as i0 from "@angular/core";
|
|
13
|
-
import * as i1 from "primeng/table";
|
|
14
|
-
import * as i2 from "primeng/treetable";
|
|
15
|
-
import * as i3 from "@angular/common";
|
|
16
|
-
import * as i4 from "@angular/forms";
|
|
17
|
-
/**
|
|
18
|
-
* TableColumnFilterComponent is an internal filter component in table and treetable.
|
|
19
|
-
* @group Components
|
|
20
|
-
*/
|
|
21
|
-
export class TableColumnFilterComponent {
|
|
22
|
-
get isCategoryDropdownOpened() {
|
|
23
|
-
if (this.type !== 'category')
|
|
24
|
-
return false;
|
|
25
|
-
return this.constraintCompList?.first?.isCategoryDropdownOpened || false;
|
|
26
|
-
}
|
|
27
|
-
constructor(elementRef, dt, tt) {
|
|
28
|
-
this.elementRef = elementRef;
|
|
29
|
-
this.dt = dt;
|
|
30
|
-
this.tt = tt;
|
|
31
|
-
/**
|
|
32
|
-
* Type of filter in table, it can be of type "number", "boolean", "text", "date" or "category".
|
|
33
|
-
* @group Props
|
|
34
|
-
*/
|
|
35
|
-
this.type = 'text';
|
|
36
|
-
/**
|
|
37
|
-
* Determines whether the filter menu should be persistent.
|
|
38
|
-
* @group Props
|
|
39
|
-
*/
|
|
40
|
-
this.persistent = false;
|
|
41
|
-
/**
|
|
42
|
-
* Determines whether the filter should have clear button.
|
|
43
|
-
* @group Props
|
|
44
|
-
*/
|
|
45
|
-
this.showClearButton = true;
|
|
46
|
-
/**
|
|
47
|
-
* Determines whether the filter should have apply button.
|
|
48
|
-
* @group Props
|
|
49
|
-
*/
|
|
50
|
-
this.showApplyButton = true;
|
|
51
|
-
/**
|
|
52
|
-
* Determines whether the filter should have close button.
|
|
53
|
-
* @group Props
|
|
54
|
-
*/
|
|
55
|
-
this.showCloseButton = false;
|
|
56
|
-
/**
|
|
57
|
-
* Determines whether the filter should have match modes.
|
|
58
|
-
* @group Props
|
|
59
|
-
*/
|
|
60
|
-
this.showMatchModes = true;
|
|
61
|
-
/**
|
|
62
|
-
* Match modes for filter.
|
|
63
|
-
* @group Props
|
|
64
|
-
*/
|
|
65
|
-
this.matchModes = [];
|
|
66
|
-
/**
|
|
67
|
-
* Determines whether the filter should have operator.
|
|
68
|
-
* @group Props
|
|
69
|
-
*/
|
|
70
|
-
this.showOperator = true;
|
|
71
|
-
/**
|
|
72
|
-
* Maximum number of constraints.
|
|
73
|
-
* @group Props
|
|
74
|
-
*/
|
|
75
|
-
this.maxConstraints = 2;
|
|
76
|
-
/**
|
|
77
|
-
* Title of the filter.
|
|
78
|
-
* @group Props
|
|
79
|
-
*/
|
|
80
|
-
this.headerTitle = '';
|
|
81
|
-
/**
|
|
82
|
-
* Determines whether the filter should hide on clear.
|
|
83
|
-
* @group Props
|
|
84
|
-
*/
|
|
85
|
-
this.hideOnClear = false;
|
|
86
|
-
/**
|
|
87
|
-
* Options for category filter.
|
|
88
|
-
* @group Props
|
|
89
|
-
*/
|
|
90
|
-
this.categoryOptions = [];
|
|
91
|
-
/**
|
|
92
|
-
* Determines whether to show category filter as button toggles.
|
|
93
|
-
* @group Props
|
|
94
|
-
*/
|
|
95
|
-
this.asButtonToggle = false;
|
|
96
|
-
/**
|
|
97
|
-
* Single selection for category filter.
|
|
98
|
-
* @group Props
|
|
99
|
-
*/
|
|
100
|
-
this.singleSelection = false;
|
|
101
|
-
/**
|
|
102
|
-
* Placeholder for filter constraints.
|
|
103
|
-
* @group Props
|
|
104
|
-
*/
|
|
105
|
-
this.placeholder = '';
|
|
106
|
-
this.operator = FilterOperator.AND;
|
|
107
|
-
this.operatorOptions = [
|
|
108
|
-
{ label: 'Match All', value: FilterOperator.AND, info: 'AND' },
|
|
109
|
-
{ label: 'Match Any', value: FilterOperator.OR, info: 'OR' }
|
|
110
|
-
];
|
|
111
|
-
this.matchModeLabels = {
|
|
112
|
-
startsWith: 'Starts with',
|
|
113
|
-
contains: 'Contains',
|
|
114
|
-
notContains: 'Does not contain',
|
|
115
|
-
endsWith: 'Ends with',
|
|
116
|
-
equals: 'Equals',
|
|
117
|
-
notEquals: 'Does not equal',
|
|
118
|
-
lt: 'Less than',
|
|
119
|
-
lte: 'Less than or equal to',
|
|
120
|
-
gt: 'Greater than',
|
|
121
|
-
gte: 'Greater than or equal to',
|
|
122
|
-
dateIs: 'Date is',
|
|
123
|
-
dateIsNot: 'Date is not',
|
|
124
|
-
dateBefore: 'Date is before',
|
|
125
|
-
dateAfter: 'Date is after'
|
|
126
|
-
};
|
|
127
|
-
this.filterMatchModeOptions = {
|
|
128
|
-
text: [
|
|
129
|
-
CpsColumnFilterMatchMode.STARTS_WITH,
|
|
130
|
-
CpsColumnFilterMatchMode.CONTAINS,
|
|
131
|
-
CpsColumnFilterMatchMode.NOT_CONTAINS,
|
|
132
|
-
CpsColumnFilterMatchMode.ENDS_WITH,
|
|
133
|
-
CpsColumnFilterMatchMode.EQUALS,
|
|
134
|
-
CpsColumnFilterMatchMode.NOT_EQUALS
|
|
135
|
-
],
|
|
136
|
-
number: [
|
|
137
|
-
CpsColumnFilterMatchMode.EQUALS,
|
|
138
|
-
CpsColumnFilterMatchMode.NOT_EQUALS,
|
|
139
|
-
CpsColumnFilterMatchMode.LESS_THAN,
|
|
140
|
-
CpsColumnFilterMatchMode.LESS_THAN_OR_EQUAL_TO,
|
|
141
|
-
CpsColumnFilterMatchMode.GREATER_THAN,
|
|
142
|
-
CpsColumnFilterMatchMode.GREATER_THAN_OR_EQUAL_TO
|
|
143
|
-
],
|
|
144
|
-
date: [
|
|
145
|
-
CpsColumnFilterMatchMode.DATE_IS,
|
|
146
|
-
CpsColumnFilterMatchMode.DATE_IS_NOT,
|
|
147
|
-
CpsColumnFilterMatchMode.DATE_BEFORE,
|
|
148
|
-
CpsColumnFilterMatchMode.DATE_AFTER
|
|
149
|
-
]
|
|
150
|
-
};
|
|
151
|
-
this.isFilterApplied = false;
|
|
152
|
-
this._tableInstance = dt || tt;
|
|
153
|
-
}
|
|
154
|
-
ngOnInit() {
|
|
155
|
-
if (this.matchModes.length > 0) {
|
|
156
|
-
this.filterMatchModeOptions[this.type] = this.matchModes;
|
|
157
|
-
}
|
|
158
|
-
this._tableInstance?.onFilter?.subscribe((value) => this._updateFilterApplied(value));
|
|
159
|
-
if (!this._tableInstance.filters[this.field]) {
|
|
160
|
-
this._initFieldFilterConstraint();
|
|
161
|
-
}
|
|
162
|
-
if (this.maxConstraints > 1 && this.type !== 'category') {
|
|
163
|
-
this.showApplyButton = true;
|
|
164
|
-
}
|
|
165
|
-
if (this.type === 'boolean') {
|
|
166
|
-
this.showApplyButton = false;
|
|
167
|
-
}
|
|
168
|
-
this.currentMatchModes = this.filterMatchModeOptions[this.type]?.map((key) => {
|
|
169
|
-
return { label: this.matchModeLabels[key], value: key };
|
|
170
|
-
});
|
|
171
|
-
}
|
|
172
|
-
_updateFilterApplied(value) {
|
|
173
|
-
const fieldFilter = value.filters[this.field];
|
|
174
|
-
if (fieldFilter) {
|
|
175
|
-
if (Array.isArray(fieldFilter)) {
|
|
176
|
-
this.isFilterApplied = fieldFilter.some((meta) => !this._tableInstance.isFilterBlank(meta.value));
|
|
177
|
-
}
|
|
178
|
-
else {
|
|
179
|
-
this.isFilterApplied = !this._tableInstance.isFilterBlank(fieldFilter.value);
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
else {
|
|
183
|
-
this.isFilterApplied = false;
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
_initFieldFilterConstraint() {
|
|
187
|
-
const defaultMatchMode = this.getDefaultMatchMode();
|
|
188
|
-
if (this._tableInstance instanceof Table) {
|
|
189
|
-
this._tableInstance.filters[this.field] = [
|
|
190
|
-
{
|
|
191
|
-
value: null,
|
|
192
|
-
matchMode: defaultMatchMode,
|
|
193
|
-
operator: this.operator
|
|
194
|
-
}
|
|
195
|
-
];
|
|
196
|
-
}
|
|
197
|
-
else {
|
|
198
|
-
this._tableInstance.filters[this.field] = {
|
|
199
|
-
value: null,
|
|
200
|
-
matchMode: defaultMatchMode
|
|
201
|
-
};
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
onCloseClick() {
|
|
205
|
-
this.hide();
|
|
206
|
-
}
|
|
207
|
-
onMenuMatchModeChange(value, filterMeta) {
|
|
208
|
-
filterMeta.matchMode = value;
|
|
209
|
-
if (!this.showApplyButton) {
|
|
210
|
-
this._tableInstance._filter();
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
addConstraint() {
|
|
214
|
-
this._tableInstance.filters[this.field].push({
|
|
215
|
-
value: null,
|
|
216
|
-
matchMode: this.getDefaultMatchMode(),
|
|
217
|
-
operator: this.getDefaultOperator()
|
|
218
|
-
});
|
|
219
|
-
}
|
|
220
|
-
removeConstraint(filterMeta) {
|
|
221
|
-
this._tableInstance.filters[this.field] = (this._tableInstance.filters[this.field]).filter((meta) => meta !== filterMeta);
|
|
222
|
-
this._tableInstance._filter();
|
|
223
|
-
}
|
|
224
|
-
onOperatorChange(value) {
|
|
225
|
-
this._tableInstance.filters[this.field].forEach((filterMeta) => {
|
|
226
|
-
filterMeta.operator = value;
|
|
227
|
-
this.operator = value;
|
|
228
|
-
});
|
|
229
|
-
if (!this.showApplyButton) {
|
|
230
|
-
this._tableInstance._filter();
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
getDefaultMatchMode() {
|
|
234
|
-
const getMatchMode = (val) => {
|
|
235
|
-
if (this.type in this.filterMatchModeOptions) {
|
|
236
|
-
return this.filterMatchModeOptions[this.type].includes(val)
|
|
237
|
-
? val
|
|
238
|
-
: this.filterMatchModeOptions[this.type][0];
|
|
239
|
-
}
|
|
240
|
-
else {
|
|
241
|
-
return val;
|
|
242
|
-
}
|
|
243
|
-
};
|
|
244
|
-
switch (this.type) {
|
|
245
|
-
case 'text':
|
|
246
|
-
return getMatchMode(CpsColumnFilterMatchMode.STARTS_WITH);
|
|
247
|
-
case 'number':
|
|
248
|
-
return getMatchMode(CpsColumnFilterMatchMode.EQUALS);
|
|
249
|
-
case 'date':
|
|
250
|
-
return getMatchMode(CpsColumnFilterMatchMode.DATE_IS);
|
|
251
|
-
case 'category':
|
|
252
|
-
return this.singleSelection
|
|
253
|
-
? CpsColumnFilterMatchMode.IS
|
|
254
|
-
: CpsColumnFilterMatchMode.IN;
|
|
255
|
-
default:
|
|
256
|
-
return getMatchMode(CpsColumnFilterMatchMode.CONTAINS);
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
getDefaultOperator() {
|
|
260
|
-
return this._tableInstance.filters
|
|
261
|
-
? (this._tableInstance.filters[this.field])[0].operator
|
|
262
|
-
: this.operator;
|
|
263
|
-
}
|
|
264
|
-
get fieldConstraints() {
|
|
265
|
-
if (this._tableInstance instanceof Table) {
|
|
266
|
-
return this._tableInstance.filters
|
|
267
|
-
? this._tableInstance.filters[this.field]
|
|
268
|
-
: null;
|
|
269
|
-
}
|
|
270
|
-
else {
|
|
271
|
-
return this._tableInstance.filters
|
|
272
|
-
? [this._tableInstance.filters[this.field]]
|
|
273
|
-
: null;
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
get showRemoveIcon() {
|
|
277
|
-
return this.fieldConstraints ? this.fieldConstraints.length > 1 : false;
|
|
278
|
-
}
|
|
279
|
-
get isShowOperator() {
|
|
280
|
-
return (this.showOperator &&
|
|
281
|
-
this.maxConstraints > 1 &&
|
|
282
|
-
!['boolean', 'category'].includes(this.type));
|
|
283
|
-
}
|
|
284
|
-
get isShowAddConstraint() {
|
|
285
|
-
return (!['boolean', 'category'].includes(this.type) &&
|
|
286
|
-
this.fieldConstraints &&
|
|
287
|
-
this.fieldConstraints.length < this.maxConstraints);
|
|
288
|
-
}
|
|
289
|
-
hide() {
|
|
290
|
-
this.columnFilterMenu.hide();
|
|
291
|
-
}
|
|
292
|
-
clearFilter() {
|
|
293
|
-
this._initFieldFilterConstraint();
|
|
294
|
-
this._tableInstance._filter();
|
|
295
|
-
if (this.hideOnClear)
|
|
296
|
-
this.hide();
|
|
297
|
-
}
|
|
298
|
-
clearFilterValues() {
|
|
299
|
-
this._initFieldFilterConstraint();
|
|
300
|
-
this.isFilterApplied = false;
|
|
301
|
-
}
|
|
302
|
-
applyFilter() {
|
|
303
|
-
this._tableInstance._filter();
|
|
304
|
-
this.hide();
|
|
305
|
-
}
|
|
306
|
-
onMenuShown() {
|
|
307
|
-
const parent = this.elementRef?.nativeElement?.parentElement;
|
|
308
|
-
const className = 'cps-table-col-filter-menu-open';
|
|
309
|
-
parent.classList.add(className);
|
|
310
|
-
}
|
|
311
|
-
onBeforeMenuHidden() {
|
|
312
|
-
if (!this.isFilterApplied)
|
|
313
|
-
this._initFieldFilterConstraint();
|
|
314
|
-
}
|
|
315
|
-
onMenuHidden() {
|
|
316
|
-
const parent = this.elementRef?.nativeElement?.parentElement;
|
|
317
|
-
const className = 'cps-table-col-filter-menu-open';
|
|
318
|
-
parent.classList.remove(className);
|
|
319
|
-
}
|
|
320
|
-
onClick(event) {
|
|
321
|
-
event.stopPropagation();
|
|
322
|
-
}
|
|
323
|
-
_updateSortIconColor(color) {
|
|
324
|
-
const unsortedUp = this.elementRef?.nativeElement?.parentElement?.querySelector('.sort-unsorted-arrow-up');
|
|
325
|
-
if (unsortedUp) {
|
|
326
|
-
unsortedUp.style.borderBottomColor = color;
|
|
327
|
-
}
|
|
328
|
-
const unsortedDown = this.elementRef?.nativeElement?.parentElement?.querySelector('.sort-unsorted-arrow-down');
|
|
329
|
-
if (unsortedDown) {
|
|
330
|
-
unsortedDown.style.borderTopColor = color;
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
onMouseOver() {
|
|
334
|
-
this._updateSortIconColor('var(--cps-color-line-dark)');
|
|
335
|
-
}
|
|
336
|
-
onMouseLeave() {
|
|
337
|
-
this._updateSortIconColor('');
|
|
338
|
-
}
|
|
339
|
-
ngOnDestroy() {
|
|
340
|
-
this._tableInstance?.onFilter?.unsubscribe();
|
|
341
|
-
}
|
|
342
|
-
}
|
|
343
|
-
TableColumnFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: TableColumnFilterComponent, deps: [{ token: i0.ElementRef }, { token: i1.Table, optional: true }, { token: i2.TreeTable, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
344
|
-
TableColumnFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: TableColumnFilterComponent, isStandalone: true, selector: "table-column-filter", inputs: { field: "field", type: "type", persistent: "persistent", showClearButton: "showClearButton", showApplyButton: "showApplyButton", showCloseButton: "showCloseButton", showMatchModes: "showMatchModes", matchModes: "matchModes", showOperator: "showOperator", maxConstraints: "maxConstraints", headerTitle: "headerTitle", hideOnClear: "hideOnClear", categoryOptions: "categoryOptions", asButtonToggle: "asButtonToggle", singleSelection: "singleSelection", placeholder: "placeholder" }, host: { listeners: { "click": "onClick($event)", "mouseenter": "onMouseOver()", "mouseleave": "onMouseLeave()" } }, viewQueries: [{ propertyName: "columnFilterMenu", first: true, predicate: ["columnFilterMenu"], descendants: true }, { propertyName: "constraintCompList", predicate: ["constraintComponent"], descendants: true }], ngImport: i0, template: "<div class=\"cps-table-col-filter\">\n <cps-menu\n #columnFilterMenu\n [withArrow]=\"false\"\n hideTransitionOptions=\"0s linear\"\n [persistent]=\"persistent || (showApplyButton && isCategoryDropdownOpened)\"\n (menuShown)=\"onMenuShown()\"\n (menuHidden)=\"onMenuHidden()\"\n (beforeMenuHidden)=\"onBeforeMenuHidden()\">\n <div class=\"cps-table-col-filter-menu-content\">\n <div\n class=\"cps-table-col-filter-menu-content-header\"\n *ngIf=\"showCloseButton || headerTitle\">\n <span class=\"cps-table-col-filter-menu-content-header-title\">\n {{ headerTitle }}\n </span>\n <cps-icon\n *ngIf=\"showCloseButton\"\n icon=\"close-x\"\n (click)=\"onCloseClick()\"></cps-icon>\n </div>\n <div\n class=\"cps-table-col-filter-menu-content-operator\"\n *ngIf=\"isShowOperator\">\n <cps-select\n [hideDetails]=\"true\"\n [disabled]=\"!fieldConstraints || fieldConstraints.length < 2\"\n [returnObject]=\"false\"\n [options]=\"operatorOptions\"\n [ngModel]=\"operator\"\n (valueChanged)=\"onOperatorChange($event)\"></cps-select>\n </div>\n <div class=\"cps-table-col-filter-menu-content-constraints\">\n <div\n *ngFor=\"let fieldConstraint of fieldConstraints; let i = index\"\n class=\"cps-table-col-filter-menu-content-constraint\">\n <cps-select\n *ngIf=\"showMatchModes && currentMatchModes\"\n class=\"cps-table-col-filter-match-mode-select\"\n [hideDetails]=\"true\"\n [returnObject]=\"false\"\n [options]=\"currentMatchModes\"\n [ngModel]=\"fieldConstraint.matchMode\"\n (valueChanged)=\"\n onMenuMatchModeChange($event, fieldConstraint)\n \"></cps-select>\n <table-column-filter-constraint\n #constraintComponent\n [type]=\"type\"\n [field]=\"field\"\n [asButtonToggle]=\"asButtonToggle\"\n [singleSelection]=\"singleSelection\"\n [categoryOptions]=\"categoryOptions\"\n [filterConstraint]=\"fieldConstraint\"\n [hasApplyButton]=\"showApplyButton\"\n [placeholder]=\"placeholder\">\n </table-column-filter-constraint>\n <div\n class=\"cps-table-col-filter-remove-rule-btn\"\n *ngIf=\"showRemoveIcon\">\n <cps-button\n type=\"borderless\"\n width=\"100%\"\n size=\"small\"\n color=\"prepared\"\n icon=\"delete\"\n (clicked)=\"removeConstraint(fieldConstraint)\"\n label=\"Remove condition\">\n </cps-button>\n </div>\n </div>\n </div>\n <div\n class=\"cps-table-col-filter-add-rule-btn\"\n *ngIf=\"isShowAddConstraint\">\n <cps-button\n label=\"Add condition\"\n type=\"borderless\"\n width=\"100%\"\n size=\"small\"\n color=\"surprise\"\n icon=\"add\"\n (clicked)=\"addConstraint()\">\n </cps-button>\n </div>\n <div class=\"cps-table-col-filter-buttonbar\">\n <cps-button\n *ngIf=\"showClearButton\"\n (clicked)=\"clearFilter()\"\n type=\"borderless\"\n color=\"prepared\"\n size=\"small\"\n label=\"Clear\"></cps-button>\n <cps-button\n *ngIf=\"showApplyButton\"\n (clicked)=\"applyFilter()\"\n color=\"prepared\"\n size=\"small\"\n label=\"Apply\"></cps-button>\n </div>\n </div>\n </cps-menu>\n <cps-icon\n [icon]=\"isFilterApplied ? 'filter-funnel-filled' : 'filter-funnel'\"\n size=\"13\"\n (click)=\"columnFilterMenu.toggle($event)\"\n class=\"cps-table-col-filter-menu-button\"\n [ngClass]=\"{\n 'cps-table-col-filter-menu-button-active': isFilterApplied\n }\"\n >>\n </cps-icon>\n</div>\n", styles: [":host .cps-table-col-filter{display:inline-flex}:host .cps-table-col-filter .cps-table-col-filter-menu-button{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;text-decoration:none;overflow:hidden;position:relative;padding-left:8px;padding-right:4px}:host .cps-table-col-filter .cps-table-col-filter-menu-button:not(.cps-table-col-filter-menu-button-active):hover{color:var(--cps-color-text-dark)}:host .cps-table-col-filter .cps-table-col-filter-menu-button-active{color:var(--cps-color-calm-lighten1)}.cps-table-col-filter-menu-content{padding-bottom:12px;min-width:200px;max-height:500px;overflow:auto}.cps-table-col-filter-menu-content .cps-table-col-filter-menu-content-header{min-height:32px;padding:8px;border-bottom:1px solid var(--cps-color-line-mid);background:var(--cps-color-bg-light);display:flex;justify-content:space-between;align-items:center}.cps-table-col-filter-menu-content .cps-table-col-filter-menu-content-header-title{font-family:Source Sans Pro,sans-serif;color:var(--cps-color-text-darkest);max-width:390px;cursor:default}.cps-table-col-filter-menu-content .cps-table-col-filter-menu-content-header cps-icon{margin-left:8px;cursor:pointer}.cps-table-col-filter-menu-content .cps-table-col-filter-menu-content-header cps-icon:hover{color:var(--cps-color-calm)}.cps-table-col-filter-menu-content .cps-table-col-filter-menu-content-operator{padding:12px;border-bottom:1px solid var(--cps-color-line-mid);background:var(--cps-color-bg-light)}.cps-table-col-filter-menu-content .cps-table-col-filter-menu-content-constraints .cps-table-col-filter-menu-content-constraint{border-bottom:1px solid var(--cps-color-line-mid);padding:12px}.cps-table-col-filter-menu-content .cps-table-col-filter-menu-content-constraints .cps-table-col-filter-menu-content-constraint .cps-table-col-filter-match-mode-select{margin-bottom:8px}.cps-table-col-filter-menu-content .cps-table-col-filter-menu-content-constraints .cps-table-col-filter-menu-content-constraint:last-child{border-bottom:none}.cps-table-col-filter-menu-content .cps-table-col-filter-menu-content-constraints .cps-table-col-filter-remove-rule-btn{padding-top:8px}.cps-table-col-filter-menu-content .cps-table-col-filter-add-rule-btn{padding:8px 12px}.cps-table-col-filter-menu-content .cps-table-col-filter-buttonbar{display:flex;align-items:center;justify-content:space-between;padding:12px 12px 0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CpsButtonComponent, selector: "cps-button", inputs: ["color", "contentColor", "type", "label", "icon", "iconPosition", "size", "width", "height", "disabled", "loading"], outputs: ["clicked"] }, { kind: "component", type: CpsMenuComponent, selector: "cps-menu", inputs: ["header", "items", "withArrow", "compressed", "focusOnShow", "persistent", "containerClass", "showTransitionOptions", "hideTransitionOptions"], outputs: ["menuShown", "menuHidden", "beforeMenuHidden", "contentClicked"] }, { kind: "component", type: CpsIconComponent, selector: "cps-icon", inputs: ["icon", "size", "color"] }, { kind: "component", type: CpsSelectComponent, selector: "cps-select", inputs: ["label", "placeholder", "hint", "returnObject", "multiple", "disabled", "width", "selectAll", "chips", "closableChips", "clearable", "openOnClear", "options", "keepInitialOrder", "optionLabel", "optionValue", "optionInfo", "hideDetails", "persistentClear", "prefixIcon", "prefixIconSize", "loading", "virtualScroll", "numToleratedItems", "infoTooltip", "infoTooltipClass", "infoTooltipMaxWidth", "infoTooltipPersistent", "infoTooltipPosition", "optionsClass", "appearance", "value"], outputs: ["valueChanged"] }, { kind: "component", type: TableColumnFilterConstraintComponent, selector: "table-column-filter-constraint", inputs: ["type", "field", "filterConstraint", "categoryOptions", "asButtonToggle", "singleSelection", "placeholder", "hasApplyButton"] }] });
|
|
345
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: TableColumnFilterComponent, decorators: [{
|
|
346
|
-
type: Component,
|
|
347
|
-
args: [{ selector: 'table-column-filter', standalone: true, imports: [
|
|
348
|
-
CommonModule,
|
|
349
|
-
FormsModule,
|
|
350
|
-
CpsButtonComponent,
|
|
351
|
-
CpsMenuComponent,
|
|
352
|
-
CpsIconComponent,
|
|
353
|
-
CpsSelectComponent,
|
|
354
|
-
TableColumnFilterConstraintComponent
|
|
355
|
-
], template: "<div class=\"cps-table-col-filter\">\n <cps-menu\n #columnFilterMenu\n [withArrow]=\"false\"\n hideTransitionOptions=\"0s linear\"\n [persistent]=\"persistent || (showApplyButton && isCategoryDropdownOpened)\"\n (menuShown)=\"onMenuShown()\"\n (menuHidden)=\"onMenuHidden()\"\n (beforeMenuHidden)=\"onBeforeMenuHidden()\">\n <div class=\"cps-table-col-filter-menu-content\">\n <div\n class=\"cps-table-col-filter-menu-content-header\"\n *ngIf=\"showCloseButton || headerTitle\">\n <span class=\"cps-table-col-filter-menu-content-header-title\">\n {{ headerTitle }}\n </span>\n <cps-icon\n *ngIf=\"showCloseButton\"\n icon=\"close-x\"\n (click)=\"onCloseClick()\"></cps-icon>\n </div>\n <div\n class=\"cps-table-col-filter-menu-content-operator\"\n *ngIf=\"isShowOperator\">\n <cps-select\n [hideDetails]=\"true\"\n [disabled]=\"!fieldConstraints || fieldConstraints.length < 2\"\n [returnObject]=\"false\"\n [options]=\"operatorOptions\"\n [ngModel]=\"operator\"\n (valueChanged)=\"onOperatorChange($event)\"></cps-select>\n </div>\n <div class=\"cps-table-col-filter-menu-content-constraints\">\n <div\n *ngFor=\"let fieldConstraint of fieldConstraints; let i = index\"\n class=\"cps-table-col-filter-menu-content-constraint\">\n <cps-select\n *ngIf=\"showMatchModes && currentMatchModes\"\n class=\"cps-table-col-filter-match-mode-select\"\n [hideDetails]=\"true\"\n [returnObject]=\"false\"\n [options]=\"currentMatchModes\"\n [ngModel]=\"fieldConstraint.matchMode\"\n (valueChanged)=\"\n onMenuMatchModeChange($event, fieldConstraint)\n \"></cps-select>\n <table-column-filter-constraint\n #constraintComponent\n [type]=\"type\"\n [field]=\"field\"\n [asButtonToggle]=\"asButtonToggle\"\n [singleSelection]=\"singleSelection\"\n [categoryOptions]=\"categoryOptions\"\n [filterConstraint]=\"fieldConstraint\"\n [hasApplyButton]=\"showApplyButton\"\n [placeholder]=\"placeholder\">\n </table-column-filter-constraint>\n <div\n class=\"cps-table-col-filter-remove-rule-btn\"\n *ngIf=\"showRemoveIcon\">\n <cps-button\n type=\"borderless\"\n width=\"100%\"\n size=\"small\"\n color=\"prepared\"\n icon=\"delete\"\n (clicked)=\"removeConstraint(fieldConstraint)\"\n label=\"Remove condition\">\n </cps-button>\n </div>\n </div>\n </div>\n <div\n class=\"cps-table-col-filter-add-rule-btn\"\n *ngIf=\"isShowAddConstraint\">\n <cps-button\n label=\"Add condition\"\n type=\"borderless\"\n width=\"100%\"\n size=\"small\"\n color=\"surprise\"\n icon=\"add\"\n (clicked)=\"addConstraint()\">\n </cps-button>\n </div>\n <div class=\"cps-table-col-filter-buttonbar\">\n <cps-button\n *ngIf=\"showClearButton\"\n (clicked)=\"clearFilter()\"\n type=\"borderless\"\n color=\"prepared\"\n size=\"small\"\n label=\"Clear\"></cps-button>\n <cps-button\n *ngIf=\"showApplyButton\"\n (clicked)=\"applyFilter()\"\n color=\"prepared\"\n size=\"small\"\n label=\"Apply\"></cps-button>\n </div>\n </div>\n </cps-menu>\n <cps-icon\n [icon]=\"isFilterApplied ? 'filter-funnel-filled' : 'filter-funnel'\"\n size=\"13\"\n (click)=\"columnFilterMenu.toggle($event)\"\n class=\"cps-table-col-filter-menu-button\"\n [ngClass]=\"{\n 'cps-table-col-filter-menu-button-active': isFilterApplied\n }\"\n >>\n </cps-icon>\n</div>\n", styles: [":host .cps-table-col-filter{display:inline-flex}:host .cps-table-col-filter .cps-table-col-filter-menu-button{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;text-decoration:none;overflow:hidden;position:relative;padding-left:8px;padding-right:4px}:host .cps-table-col-filter .cps-table-col-filter-menu-button:not(.cps-table-col-filter-menu-button-active):hover{color:var(--cps-color-text-dark)}:host .cps-table-col-filter .cps-table-col-filter-menu-button-active{color:var(--cps-color-calm-lighten1)}.cps-table-col-filter-menu-content{padding-bottom:12px;min-width:200px;max-height:500px;overflow:auto}.cps-table-col-filter-menu-content .cps-table-col-filter-menu-content-header{min-height:32px;padding:8px;border-bottom:1px solid var(--cps-color-line-mid);background:var(--cps-color-bg-light);display:flex;justify-content:space-between;align-items:center}.cps-table-col-filter-menu-content .cps-table-col-filter-menu-content-header-title{font-family:Source Sans Pro,sans-serif;color:var(--cps-color-text-darkest);max-width:390px;cursor:default}.cps-table-col-filter-menu-content .cps-table-col-filter-menu-content-header cps-icon{margin-left:8px;cursor:pointer}.cps-table-col-filter-menu-content .cps-table-col-filter-menu-content-header cps-icon:hover{color:var(--cps-color-calm)}.cps-table-col-filter-menu-content .cps-table-col-filter-menu-content-operator{padding:12px;border-bottom:1px solid var(--cps-color-line-mid);background:var(--cps-color-bg-light)}.cps-table-col-filter-menu-content .cps-table-col-filter-menu-content-constraints .cps-table-col-filter-menu-content-constraint{border-bottom:1px solid var(--cps-color-line-mid);padding:12px}.cps-table-col-filter-menu-content .cps-table-col-filter-menu-content-constraints .cps-table-col-filter-menu-content-constraint .cps-table-col-filter-match-mode-select{margin-bottom:8px}.cps-table-col-filter-menu-content .cps-table-col-filter-menu-content-constraints .cps-table-col-filter-menu-content-constraint:last-child{border-bottom:none}.cps-table-col-filter-menu-content .cps-table-col-filter-menu-content-constraints .cps-table-col-filter-remove-rule-btn{padding-top:8px}.cps-table-col-filter-menu-content .cps-table-col-filter-add-rule-btn{padding:8px 12px}.cps-table-col-filter-menu-content .cps-table-col-filter-buttonbar{display:flex;align-items:center;justify-content:space-between;padding:12px 12px 0}\n"] }]
|
|
356
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.Table, decorators: [{
|
|
357
|
-
type: Optional
|
|
358
|
-
}] }, { type: i2.TreeTable, decorators: [{
|
|
359
|
-
type: Optional
|
|
360
|
-
}] }]; }, propDecorators: { field: [{
|
|
361
|
-
type: Input
|
|
362
|
-
}], type: [{
|
|
363
|
-
type: Input
|
|
364
|
-
}], persistent: [{
|
|
365
|
-
type: Input
|
|
366
|
-
}], showClearButton: [{
|
|
367
|
-
type: Input
|
|
368
|
-
}], showApplyButton: [{
|
|
369
|
-
type: Input
|
|
370
|
-
}], showCloseButton: [{
|
|
371
|
-
type: Input
|
|
372
|
-
}], showMatchModes: [{
|
|
373
|
-
type: Input
|
|
374
|
-
}], matchModes: [{
|
|
375
|
-
type: Input
|
|
376
|
-
}], showOperator: [{
|
|
377
|
-
type: Input
|
|
378
|
-
}], maxConstraints: [{
|
|
379
|
-
type: Input
|
|
380
|
-
}], headerTitle: [{
|
|
381
|
-
type: Input
|
|
382
|
-
}], hideOnClear: [{
|
|
383
|
-
type: Input
|
|
384
|
-
}], categoryOptions: [{
|
|
385
|
-
type: Input
|
|
386
|
-
}], asButtonToggle: [{
|
|
387
|
-
type: Input
|
|
388
|
-
}], singleSelection: [{
|
|
389
|
-
type: Input
|
|
390
|
-
}], placeholder: [{
|
|
391
|
-
type: Input
|
|
392
|
-
}], constraintCompList: [{
|
|
393
|
-
type: ViewChildren,
|
|
394
|
-
args: ['constraintComponent']
|
|
395
|
-
}], columnFilterMenu: [{
|
|
396
|
-
type: ViewChild,
|
|
397
|
-
args: ['columnFilterMenu']
|
|
398
|
-
}], onClick: [{
|
|
399
|
-
type: HostListener,
|
|
400
|
-
args: ['click', ['$event']]
|
|
401
|
-
}], onMouseOver: [{
|
|
402
|
-
type: HostListener,
|
|
403
|
-
args: ['mouseenter']
|
|
404
|
-
}], onMouseLeave: [{
|
|
405
|
-
type: HostListener,
|
|
406
|
-
args: ['mouseleave']
|
|
407
|
-
}] } });
|
|
408
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29sdW1uLWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jcHMtdWkta2l0L3NyYy9saWIvY29tcG9uZW50cy9jcHMtdGFibGUvY29tcG9uZW50cy9pbnRlcm5hbC90YWJsZS1jb2x1bW4tZmlsdGVyL3RhYmxlLWNvbHVtbi1maWx0ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY3BzLXVpLWtpdC9zcmMvbGliL2NvbXBvbmVudHMvY3BzLXRhYmxlL2NvbXBvbmVudHMvaW50ZXJuYWwvdGFibGUtY29sdW1uLWZpbHRlci90YWJsZS1jb2x1bW4tZmlsdGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxRQUFRLEVBRVIsU0FBUyxFQUNULFlBQVksRUFDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBa0IsY0FBYyxFQUFjLE1BQU0sYUFBYSxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdEMsT0FBTyxFQUVMLHdCQUF3QixFQUV6QixNQUFNLGtDQUFrQyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ2pG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Q1osV0FBVzt3QkFDWCxrQkFBa0I7d0JBQ2xCLGdCQUFnQjt3QkFDaEIsZ0JBQWdCO3dCQUNoQixrQkFBa0I7d0JBQ2xCLG9DQUFvQztxQkFDckM7OzBCQXlLRSxRQUFROzswQkFDUixRQUFROzRDQWpLRixLQUFLO3NCQUFiLEtBQUs7Z0JBTUcsSUFBSTtzQkFBWixLQUFLO2dCQU1HLFVBQVU7c0JBQWxCLEtBQUs7Z0JBTUcsZUFBZTtzQkFBdkIsS0FBSztnQkFNRyxlQUFlO3NCQUF2QixLQUFLO2dCQU1HLGVBQWU7c0JBQXZCLEtBQUs7Z0JBTUcsY0FBYztzQkFBdEIsS0FBSztnQkFNRyxVQUFVO3NCQUFsQixLQUFLO2dCQU1HLFlBQVk7c0JBQXBCLEtBQUs7Z0JBTUcsY0FBYztzQkFBdEIsS0FBSztnQkFNRyxXQUFXO3NCQUFuQixLQUFLO2dCQU1HLFdBQVc7c0JBQW5CLEtBQUs7Z0JBTUcsZUFBZTtzQkFBdkIsS0FBSztnQkFNRyxjQUFjO3NCQUF0QixLQUFLO2dCQU1HLGVBQWU7c0JBQXZCLEtBQUs7Z0JBTUcsV0FBVztzQkFBbkIsS0FBSztnQkFHTixrQkFBa0I7c0JBRGpCLFlBQVk7dUJBQUMscUJBQXFCO2dCQXVEbkMsZ0JBQWdCO3NCQURmLFNBQVM7dUJBQUMsa0JBQWtCO2dCQWlPN0IsT0FBTztzQkFETixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFzQkwsV0FBVztzQkFBdEMsWUFBWTt1QkFBQyxZQUFZO2dCQUlFLFlBQVk7c0JBQXZDLFlBQVk7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBRdWVyeUxpc3QsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NoaWxkcmVuXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRmlsdGVyTWV0YWRhdGEsIEZpbHRlck9wZXJhdG9yLCBTZWxlY3RJdGVtIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgVGFibGUgfSBmcm9tICdwcmltZW5nL3RhYmxlJztcbmltcG9ydCB7IFRyZWVUYWJsZSB9IGZyb20gJ3ByaW1lbmcvdHJlZXRhYmxlJztcbmltcG9ydCB7XG4gIENwc0NvbHVtbkZpbHRlckNhdGVnb3J5T3B0aW9uLFxuICBDcHNDb2x1bW5GaWx0ZXJNYXRjaE1vZGUsXG4gIENwc0NvbHVtbkZpbHRlclR5cGVcbn0gZnJvbSAnLi4vLi4vLi4vY3BzLWNvbHVtbi1maWx0ZXItdHlwZXMnO1xuaW1wb3J0IHsgQ3BzQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vY3BzLWJ1dHRvbi9jcHMtYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDcHNNZW51Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vY3BzLW1lbnUvY3BzLW1lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IENwc0ljb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9jcHMtaWNvbi9jcHMtaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ3BzU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vY3BzLXNlbGVjdC9jcHMtc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWJsZUNvbHVtbkZpbHRlckNvbnN0cmFpbnRDb21wb25lbnQgfSBmcm9tICcuLi90YWJsZS1jb2x1bW4tZmlsdGVyLWNvbnN0cmFpbnQvdGFibGUtY29sdW1uLWZpbHRlci1jb25zdHJhaW50LmNvbXBvbmVudCc7XG5cbi8qKlxuICogVGFibGVDb2x1bW5GaWx0ZXJDb21wb25lbnQgaXMgYW4gaW50ZXJuYWwgZmlsdGVyIGNvbXBvbmVudCBpbiB0YWJsZSBhbmQgdHJlZXRhYmxlLlxuICogQGdyb3VwIENvbXBvbmVudHNcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGFibGUtY29sdW1uLWZpbHRlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgQ3BzQnV0dG9uQ29tcG9uZW50LFxuICAgIENwc01lbnVDb21wb25lbnQsXG4gICAgQ3BzSWNvbkNvbXBvbmVudCxcbiAgICBDcHNTZWxlY3RDb21wb25lbnQsXG4gICAgVGFibGVDb2x1bW5GaWx0ZXJDb25zdHJhaW50Q29tcG9uZW50XG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS1jb2x1bW4tZmlsdGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUtY29sdW1uLWZpbHRlci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQ29sdW1uRmlsdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgY29sdW1uIHRvIGJlIGZpbHRlcmVkLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGZpZWxkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFR5cGUgb2YgZmlsdGVyIGluIHRhYmxlLCBpdCBjYW4gYmUgb2YgdHlwZSBcIm51bWJlclwiLCBcImJvb2xlYW5cIiwgXCJ0ZXh0XCIsIFwiZGF0ZVwiIG9yIFwiY2F0ZWdvcnlcIi5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSB0eXBlOiBDcHNDb2x1bW5GaWx0ZXJUeXBlID0gJ3RleHQnO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGZpbHRlciBtZW51IHNob3VsZCBiZSBwZXJzaXN0ZW50LlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHBlcnNpc3RlbnQgPSBmYWxzZTtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBmaWx0ZXIgc2hvdWxkIGhhdmUgY2xlYXIgYnV0dG9uLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHNob3dDbGVhckJ1dHRvbiA9IHRydWU7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0aGUgZmlsdGVyIHNob3VsZCBoYXZlIGFwcGx5IGJ1dHRvbi5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBzaG93QXBwbHlCdXR0b24gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGZpbHRlciBzaG91bGQgaGF2ZSBjbG9zZSBidXR0b24uXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgc2hvd0Nsb3NlQnV0dG9uID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0aGUgZmlsdGVyIHNob3VsZCBoYXZlIG1hdGNoIG1vZGVzLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIHNob3dNYXRjaE1vZGVzID0gdHJ1ZTtcblxuICAvKipcbiAgICogTWF0Y2ggbW9kZXMgZm9yIGZpbHRlci5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBtYXRjaE1vZGVzOiBDcHNDb2x1bW5GaWx0ZXJNYXRjaE1vZGVbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGZpbHRlciBzaG91bGQgaGF2ZSBvcGVyYXRvci5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBzaG93T3BlcmF0b3IgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBNYXhpbXVtIG51bWJlciBvZiBjb25zdHJhaW50cy5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBtYXhDb25zdHJhaW50cyA9IDI7XG5cbiAgLyoqXG4gICAqIFRpdGxlIG9mIHRoZSBmaWx0ZXIuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgaGVhZGVyVGl0bGUgPSAnJztcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBmaWx0ZXIgc2hvdWxkIGhpZGUgb24gY2xlYXIuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgaGlkZU9uQ2xlYXIgPSBmYWxzZTtcblxuICAvKipcbiAgICogT3B0aW9ucyBmb3IgY2F0ZWdvcnkgZmlsdGVyLlxuICAgKiBAZ3JvdXAgUHJvcHNcbiAgICovXG4gIEBJbnB1dCgpIGNhdGVnb3J5T3B0aW9uczogQ3BzQ29sdW1uRmlsdGVyQ2F0ZWdvcnlPcHRpb25bXSB8IHN0cmluZ1tdID0gW107XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0byBzaG93IGNhdGVnb3J5IGZpbHRlciBhcyBidXR0b24gdG9nZ2xlcy5cbiAgICogQGdyb3VwIFByb3BzXG4gICAqL1xuICBASW5wdXQoKSBhc0J1dHRvblRvZ2dsZSA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBTaW5nbGUgc2VsZWN0aW9uIGZvciBjYXRlZ29yeSBmaWx0ZXIuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgc2luZ2xlU2VsZWN0aW9uID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFBsYWNlaG9sZGVyIGZvciBmaWx0ZXIgY29uc3RyYWludHMuXG4gICAqIEBncm91cCBQcm9wc1xuICAgKi9cbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnJztcblxuICBAVmlld0NoaWxkcmVuKCdjb25zdHJhaW50Q29tcG9uZW50JylcbiAgY29uc3RyYWludENvbXBMaXN0ITogUXVlcnlMaXN0PFRhYmxlQ29sdW1uRmlsdGVyQ29uc3RyYWludENvbXBvbmVudD47XG5cbiAgb3BlcmF0b3I6IHN0cmluZyA9IEZpbHRlck9wZXJhdG9yLkFORDtcblxuICBvcGVyYXRvck9wdGlvbnMgPSBbXG4gICAgeyBsYWJlbDogJ01hdGNoIEFsbCcsIHZhbHVlOiBGaWx0ZXJPcGVyYXRvci5BTkQsIGluZm86ICdBTkQnIH0sXG4gICAgeyBsYWJlbDogJ01hdGNoIEFueScsIHZhbHVlOiBGaWx0ZXJPcGVyYXRvci5PUiwgaW5mbzogJ09SJyB9XG4gIF07XG5cbiAgcHJpdmF0ZSBtYXRjaE1vZGVMYWJlbHMgPSB7XG4gICAgc3RhcnRzV2l0aDogJ1N0YXJ0cyB3aXRoJyxcbiAgICBjb250YWluczogJ0NvbnRhaW5zJyxcbiAgICBub3RDb250YWluczogJ0RvZXMgbm90IGNvbnRhaW4nLFxuICAgIGVuZHNXaXRoOiAnRW5kcyB3aXRoJyxcbiAgICBlcXVhbHM6ICdFcXVhbHMnLFxuICAgIG5vdEVxdWFsczogJ0RvZXMgbm90IGVxdWFsJyxcbiAgICBsdDogJ0xlc3MgdGhhbicsXG4gICAgbHRlOiAnTGVzcyB0aGFuIG9yIGVxdWFsIHRvJyxcbiAgICBndDogJ0dyZWF0ZXIgdGhhbicsXG4gICAgZ3RlOiAnR3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvJyxcbiAgICBkYXRlSXM6ICdEYXRlIGlzJyxcbiAgICBkYXRlSXNOb3Q6ICdEYXRlIGlzIG5vdCcsXG4gICAgZGF0ZUJlZm9yZTogJ0RhdGUgaXMgYmVmb3JlJyxcbiAgICBkYXRlQWZ0ZXI6ICdEYXRlIGlzIGFmdGVyJ1xuICB9IGFzIHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgcHJpdmF0ZSBmaWx0ZXJNYXRjaE1vZGVPcHRpb25zID0ge1xuICAgIHRleHQ6IFtcbiAgICAgIENwc0NvbHVtbkZpbHRlck1hdGNoTW9kZS5TVEFSVFNfV0lUSCxcbiAgICAgIENwc0NvbHVtbkZpbHRlck1hdGNoTW9kZS5DT05UQUlOUyxcbiAgICAgIENwc0NvbHVtbkZpbHRlck1hdGNoTW9kZS5OT1RfQ09OVEFJTlMsXG4gICAgICBDcHNDb2x1bW5GaWx0ZXJNYXRjaE1vZGUuRU5EU19XSVRILFxuICAgICAgQ3BzQ29sdW1uRmlsdGVyTWF0Y2hNb2RlLkVRVUFMUyxcbiAgICAgIENwc0NvbHVtbkZpbHRlck1hdGNoTW9kZS5OT1RfRVFVQUxTXG4gICAgXSxcbiAgICBudW1iZXI6IFtcbiAgICAgIENwc0NvbHVtbkZpbHRlck1hdGNoTW9kZS5FUVVBTFMsXG4gICAgICBDcHNDb2x1bW5GaWx0ZXJNYXRjaE1vZGUuTk9UX0VRVUFMUyxcbiAgICAgIENwc0NvbHVtbkZpbHRlck1hdGNoTW9kZS5MRVNTX1RIQU4sXG4gICAgICBDcHNDb2x1bW5GaWx0ZXJNYXRjaE1vZGUuTEVTU19USEFOX09SX0VRVUFMX1RPLFxuICAgICAgQ3BzQ29sdW1uRmlsdGVyTWF0Y2hNb2RlLkdSRUFURVJfVEhBTixcbiAgICAgIENwc0NvbHVtbkZpbHRlck1hdGNoTW9kZS5HUkVBVEVSX1RIQU5fT1JfRVFVQUxfVE9cbiAgICBdLFxuICAgIGRhdGU6IFtcbiAgICAgIENwc0NvbHVtbkZpbHRlck1hdGNoTW9kZS5EQVRFX0lTLFxuICAgICAgQ3BzQ29sdW1uRmlsdGVyTWF0Y2hNb2RlLkRBVEVfSVNfTk9ULFxuICAgICAgQ3BzQ29sdW1uRmlsdGVyTWF0Y2hNb2RlLkRBVEVfQkVGT1JFLFxuICAgICAgQ3BzQ29sdW1uRmlsdGVyTWF0Y2hNb2RlLkRBVEVfQUZURVJcbiAgICBdXG4gIH0gYXMgeyBba2V5OiBzdHJpbmddOiBDcHNDb2x1bW5GaWx0ZXJNYXRjaE1vZGVbXSB9O1xuXG4gIGN1cnJlbnRNYXRjaE1vZGVzOiBTZWxlY3RJdGVtW10gfCB1bmRlZmluZWQ7XG5cbiAgQFZpZXdDaGlsZCgnY29sdW1uRmlsdGVyTWVudScpXG4gIGNvbHVtbkZpbHRlck1lbnUhOiBDcHNNZW51Q29tcG9uZW50O1xuXG4gIF90YWJsZUluc3RhbmNlOiBUYWJsZSB8IFRyZWVUYWJsZTtcblxuICBpc0ZpbHRlckFwcGxpZWQgPSBmYWxzZTtcblxuICBnZXQgaXNDYXRlZ29yeURyb3Bkb3duT3BlbmVkKCkge1xuICAgIGlmICh0aGlzLnR5cGUgIT09ICdjYXRlZ29yeScpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gdGhpcy5jb25zdHJhaW50Q29tcExpc3Q/LmZpcnN0Py5pc0NhdGVnb3J5RHJvcGRvd25PcGVuZWQgfHwgZmFsc2U7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBAT3B0aW9uYWwoKSBwdWJsaWMgZHQ6IFRhYmxlLFxuICAgIEBPcHRpb25hbCgpIHB1YmxpYyB0dDogVHJlZVRhYmxlXG4gICkge1xuICAgIHRoaXMuX3RhYmxlSW5zdGFuY2UgPSBkdCB8fCB0dDtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLm1hdGNoTW9kZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5maWx0ZXJNYXRjaE1vZGVPcHRpb25zW3RoaXMudHlwZV0gPSB0aGlzLm1hdGNoTW9kZXM7XG4gICAgfVxuICAgIHRoaXMuX3RhYmxlSW5zdGFuY2U/Lm9uRmlsdGVyPy5zdWJzY3JpYmUoKHZhbHVlKSA9PlxuICAgICAgdGhpcy5fdXBkYXRlRmlsdGVyQXBwbGllZCh2YWx1ZSlcbiAgICApO1xuICAgIGlmICghdGhpcy5fdGFibGVJbnN0YW5jZS5maWx0ZXJzWzxzdHJpbmc+dGhpcy5maWVsZF0pIHtcbiAgICAgIHRoaXMuX2luaXRGaWVsZEZpbHRlckNvbnN0cmFpbnQoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5tYXhDb25zdHJhaW50cyA+IDEgJiYgdGhpcy50eXBlICE9PSAnY2F0ZWdvcnknKSB7XG4gICAgICB0aGlzLnNob3dBcHBseUJ1dHRvbiA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICB0aGlzLnNob3dBcHBseUJ1dHRvbiA9IGZhbHNlO1xuICAgIH1cblxuICAgIHRoaXMuY3VycmVudE1hdGNoTW9kZXMgPSB0aGlzLmZpbHRlck1hdGNoTW9kZU9wdGlvbnNbdGhpcy50eXBlXT8ubWFwKFxuICAgICAgKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgIHJldHVybiB7IGxhYmVsOiB0aGlzLm1hdGNoTW9kZUxhYmVsc1trZXldLCB2YWx1ZToga2V5IH07XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZUZpbHRlckFwcGxpZWQodmFsdWU6IGFueSkge1xuICAgIGNvbnN0IGZpZWxkRmlsdGVyID0gdmFsdWUuZmlsdGVyc1s8c3RyaW5nPnRoaXMuZmllbGRdO1xuICAgIGlmIChmaWVsZEZpbHRlcikge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZmllbGRGaWx0ZXIpKSB7XG4gICAgICAgIHRoaXMuaXNGaWx0ZXJBcHBsaWVkID0gKDxGaWx0ZXJNZXRhZGF0YVtdPmZpZWxkRmlsdGVyKS5zb21lKFxuICAgICAgICAgIChtZXRhKSA9PiAhdGhpcy5fdGFibGVJbnN0YW5jZS5pc0ZpbHRlckJsYW5rKG1ldGEudmFsdWUpXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmlzRmlsdGVyQXBwbGllZCA9ICF0aGlzLl90YWJsZUluc3RhbmNlLmlzRmlsdGVyQmxhbmsoXG4gICAgICAgICAgZmllbGRGaWx0ZXIudmFsdWVcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pc0ZpbHRlckFwcGxpZWQgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9pbml0RmllbGRGaWx0ZXJDb25zdHJhaW50KCkge1xuICAgIGNvbnN0IGRlZmF1bHRNYXRjaE1vZGUgPSB0aGlzLmdldERlZmF1bHRNYXRjaE1vZGUoKTtcbiAgICBpZiAodGhpcy5fdGFibGVJbnN0YW5jZSBpbnN0YW5jZW9mIFRhYmxlKSB7XG4gICAgICB0aGlzLl90YWJsZUluc3RhbmNlLmZpbHRlcnNbPHN0cmluZz50aGlzLmZpZWxkXSA9IFtcbiAgICAgICAge1xuICAgICAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgICAgIG1hdGNoTW9kZTogZGVmYXVsdE1hdGNoTW9kZSxcbiAgICAgICAgICBvcGVyYXRvcjogdGhpcy5vcGVyYXRvclxuICAgICAgICB9XG4gICAgICBdO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl90YWJsZUluc3RhbmNlLmZpbHRlcnNbPHN0cmluZz50aGlzLmZpZWxkXSA9IHtcbiAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgIG1hdGNoTW9kZTogZGVmYXVsdE1hdGNoTW9kZVxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBvbkNsb3NlQ2xpY2soKSB7XG4gICAgdGhpcy5oaWRlKCk7XG4gIH1cblxuICBvbk1lbnVNYXRjaE1vZGVDaGFuZ2UodmFsdWU6IGFueSwgZmlsdGVyTWV0YTogRmlsdGVyTWV0YWRhdGEpIHtcbiAgICBmaWx0ZXJNZXRhLm1hdGNoTW9kZSA9IHZhbHVlO1xuXG4gICAgaWYgKCF0aGlzLnNob3dBcHBseUJ1dHRvbikge1xuICAgICAgdGhpcy5fdGFibGVJbnN0YW5jZS5fZmlsdGVyKCk7XG4gICAgfVxuICB9XG5cbiAgYWRkQ29uc3RyYWludCgpIHtcbiAgICAoPEZpbHRlck1ldGFkYXRhW10+dGhpcy5fdGFibGVJbnN0YW5jZS5maWx0ZXJzWzxzdHJpbmc+dGhpcy5maWVsZF0pLnB1c2goe1xuICAgICAgdmFsdWU6IG51bGwsXG4gICAgICBtYXRjaE1vZGU6IHRoaXMuZ2V0RGVmYXVsdE1hdGNoTW9kZSgpLFxuICAgICAgb3BlcmF0b3I6IHRoaXMuZ2V0RGVmYXVsdE9wZXJhdG9yKClcbiAgICB9KTtcbiAgfVxuXG4gIHJlbW92ZUNvbnN0cmFpbnQoZmlsdGVyTWV0YTogRmlsdGVyTWV0YWRhdGEpIHtcbiAgICB0aGlzLl90YWJsZUluc3RhbmNlLmZpbHRlcnNbPHN0cmluZz50aGlzLmZpZWxkXSA9ICg8RmlsdGVyTWV0YWRhdGFbXT4oXG4gICAgICB0aGlzLl90YWJsZUluc3RhbmNlLmZpbHRlcnNbPHN0cmluZz50aGlzLmZpZWxkXVxuICAgICkpLmZpbHRlcigobWV0YSkgPT4gbWV0YSAhPT0gZmlsdGVyTWV0YSk7XG4gICAgdGhpcy5fdGFibGVJbnN0YW5jZS5fZmlsdGVyKCk7XG4gIH1cblxuICBvbk9wZXJhdG9yQ2hhbmdlKHZhbHVlOiBhbnkpIHtcbiAgICAoPEZpbHRlck1ldGFkYXRhW10+dGhpcy5fdGFibGVJbnN0YW5jZS5maWx0ZXJzWzxzdHJpbmc+dGhpcy5maWVsZF0pLmZvckVhY2goXG4gICAgICAoZmlsdGVyTWV0YSkgPT4ge1xuICAgICAgICBmaWx0ZXJNZXRhLm9wZXJhdG9yID0gdmFsdWU7XG4gICAgICAgIHRoaXMub3BlcmF0b3IgPSB2YWx1ZTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgaWYgKCF0aGlzLnNob3dBcHBseUJ1dHRvbikge1xuICAgICAgdGhpcy5fdGFibGVJbnN0YW5jZS5fZmlsdGVyKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0RGVmYXVsdE1hdGNoTW9kZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGdldE1hdGNoTW9kZSA9ICh2YWw6IENwc0NvbHVtbkZpbHRlck1hdGNoTW9kZSkgPT4ge1xuICAgICAgaWYgKHRoaXMudHlwZSBpbiB0aGlzLmZpbHRlck1hdGNoTW9kZU9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyTWF0Y2hNb2RlT3B0aW9uc1t0aGlzLnR5cGVdLmluY2x1ZGVzKHZhbClcbiAgICAgICAgICA/IHZhbFxuICAgICAgICAgIDogdGhpcy5maWx0ZXJNYXRjaE1vZGVPcHRpb25zW3RoaXMudHlwZV1bMF07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdmFsO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgY2FzZSAndGV4dCc6XG4gICAgICAgIHJldHVybiBnZXRNYXRjaE1vZGUoQ3BzQ29sdW1uRmlsdGVyTWF0Y2hNb2RlLlNUQVJUU19XSVRIKTtcbiAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgIHJldHVybiBnZXRNYXRjaE1vZGUoQ3BzQ29sdW1uRmlsdGVyTWF0Y2hNb2RlLkVRVUFMUyk7XG4gICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgcmV0dXJuIGdldE1hdGNoTW9kZShDcHNDb2x1bW5GaWx0ZXJNYXRjaE1vZGUuREFURV9JUyk7XG4gICAgICBjYXNlICdjYXRlZ29yeSc6XG4gICAgICAgIHJldHVybiB0aGlzLnNpbmdsZVNlbGVjdGlvblxuICAgICAgICAgID8gQ3BzQ29sdW1uRmlsdGVyTWF0Y2hNb2RlLklTXG4gICAgICAgICAgOiBDcHNDb2x1bW5GaWx0ZXJNYXRjaE1vZGUuSU47XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gZ2V0TWF0Y2hNb2RlKENwc0NvbHVtbkZpbHRlck1hdGNoTW9kZS5DT05UQUlOUyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0RGVmYXVsdE9wZXJhdG9yKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3RhYmxlSW5zdGFuY2UuZmlsdGVyc1xuICAgICAgPyAoPEZpbHRlck1ldGFkYXRhW10+KFxuICAgICAgICAgIHRoaXMuX3RhYmxlSW5zdGFuY2UuZmlsdGVyc1s8c3RyaW5nPig8c3RyaW5nPnRoaXMuZmllbGQpXVxuICAgICAgICApKVswXS5vcGVyYXRvclxuICAgICAgOiB0aGlzLm9wZXJhdG9yO1xuICB9XG5cbiAgZ2V0IGZpZWxkQ29uc3RyYWludHMoKTogRmlsdGVyTWV0YWRhdGFbXSB8IHVuZGVmaW5lZCB8IG51bGwge1xuICAgIGlmICh0aGlzLl90YWJsZUluc3RhbmNlIGluc3RhbmNlb2YgVGFibGUpIHtcbiAgICAgIHJldHVybiB0aGlzLl90YWJsZUluc3RhbmNlLmZpbHRlcnNcbiAgICAgICAgPyA8RmlsdGVyTWV0YWRhdGFbXT50aGlzLl90YWJsZUluc3RhbmNlLmZpbHRlcnNbPHN0cmluZz50aGlzLmZpZWxkXVxuICAgICAgICA6IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLl90YWJsZUluc3RhbmNlLmZpbHRlcnNcbiAgICAgICAgPyA8RmlsdGVyTWV0YWRhdGFbXT5bdGhpcy5fdGFibGVJbnN0YW5jZS5maWx0ZXJzWzxzdHJpbmc+dGhpcy5maWVsZF1dXG4gICAgICAgIDogbnVsbDtcbiAgICB9XG4gIH1cblxuICBnZXQgc2hvd1JlbW92ZUljb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGRDb25zdHJhaW50cyA/IHRoaXMuZmllbGRDb25zdHJhaW50cy5sZW5ndGggPiAxIDogZmFsc2U7XG4gIH1cblxuICBnZXQgaXNTaG93T3BlcmF0b3IoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuc2hvd09wZXJhdG9yICYmXG4gICAgICB0aGlzLm1heENvbnN0cmFpbnRzID4gMSAmJlxuICAgICAgIVsnYm9vbGVhbicsICdjYXRlZ29yeSddLmluY2x1ZGVzKHRoaXMudHlwZSlcbiAgICApO1xuICB9XG5cbiAgZ2V0IGlzU2hvd0FkZENvbnN0cmFpbnQoKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB8IG51bGwge1xuICAgIHJldHVybiAoXG4gICAgICAhWydib29sZWFuJywgJ2NhdGVnb3J5J10uaW5jbHVkZXModGhpcy50eXBlKSAmJlxuICAgICAgdGhpcy5maWVsZENvbnN0cmFpbnRzICYmXG4gICAgICB0aGlzLmZpZWxkQ29uc3RyYWludHMubGVuZ3RoIDwgdGhpcy5tYXhDb25zdHJhaW50c1xuICAgICk7XG4gIH1cblxuICBoaWRlKCkge1xuICAgIHRoaXMuY29sdW1uRmlsdGVyTWVudS5oaWRlKCk7XG4gIH1cblxuICBjbGVhckZpbHRlcigpIHtcbiAgICB0aGlzLl9pbml0RmllbGRGaWx0ZXJDb25zdHJhaW50KCk7XG4gICAgdGhpcy5fdGFibGVJbnN0YW5jZS5fZmlsdGVyKCk7XG4gICAgaWYgKHRoaXMuaGlkZU9uQ2xlYXIpIHRoaXMuaGlkZSgpO1xuICB9XG5cbiAgY2xlYXJGaWx0ZXJWYWx1ZXMoKSB7XG4gICAgdGhpcy5faW5pdEZpZWxkRmlsdGVyQ29uc3RyYWludCgpO1xuICAgIHRoaXMuaXNGaWx0ZXJBcHBsaWVkID0gZmFsc2U7XG4gIH1cblxuICBhcHBseUZpbHRlcigpIHtcbiAgICB0aGlzLl90YWJsZUluc3RhbmNlLl9maWx0ZXIoKTtcbiAgICB0aGlzLmhpZGUoKTtcbiAgfVxuXG4gIG9uTWVudVNob3duKCkge1xuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuZWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudD8ucGFyZW50RWxlbWVudDtcbiAgICBjb25zdCBjbGFzc05hbWUgPSAnY3BzLXRhYmxlLWNvbC1maWx0ZXItbWVudS1vcGVuJztcbiAgICBwYXJlbnQuY2xhc3NMaXN0LmFkZChjbGFzc05hbWUpO1xuICB9XG5cbiAgb25CZWZvcmVNZW51SGlkZGVuKCkge1xuICAgIGlmICghdGhpcy5pc0ZpbHRlckFwcGxpZWQpIHRoaXMuX2luaXRGaWVsZEZpbHRlckNvbnN0cmFpbnQoKTtcbiAgfVxuXG4gIG9uTWVudUhpZGRlbigpIHtcbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLmVsZW1lbnRSZWY/Lm5hdGl2ZUVsZW1lbnQ/LnBhcmVudEVsZW1lbnQ7XG4gICAgY29uc3QgY2xhc3NOYW1lID0gJ2Nwcy10YWJsZS1jb2wtZmlsdGVyLW1lbnUtb3Blbic7XG4gICAgcGFyZW50LmNsYXNzTGlzdC5yZW1vdmUoY2xhc3NOYW1lKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgb25DbGljayhldmVudDogYW55KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVTb3J0SWNvbkNvbG9yKGNvbG9yOiBzdHJpbmcpIHtcbiAgICBjb25zdCB1bnNvcnRlZFVwID1cbiAgICAgIHRoaXMuZWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudD8ucGFyZW50RWxlbWVudD8ucXVlcnlTZWxlY3RvcihcbiAgICAgICAgJy5zb3J0LXVuc29ydGVkLWFycm93LXVwJ1xuICAgICAgKTtcbiAgICBpZiAodW5zb3J0ZWRVcCkge1xuICAgICAgdW5zb3J0ZWRVcC5zdHlsZS5ib3JkZXJCb3R0b21Db2xvciA9IGNvbG9yO1xuICAgIH1cbiAgICBjb25zdCB1bnNvcnRlZERvd24gPVxuICAgICAgdGhpcy5lbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50Py5wYXJlbnRFbGVtZW50Py5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAnLnNvcnQtdW5zb3J0ZWQtYXJyb3ctZG93bidcbiAgICAgICk7XG4gICAgaWYgKHVuc29ydGVkRG93bikge1xuICAgICAgdW5zb3J0ZWREb3duLnN0eWxlLmJvcmRlclRvcENvbG9yID0gY29sb3I7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicpIG9uTW91c2VPdmVyKCkge1xuICAgIHRoaXMuX3VwZGF0ZVNvcnRJY29uQ29sb3IoJ3ZhcigtLWNwcy1jb2xvci1saW5lLWRhcmspJyk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWxlYXZlJykgb25Nb3VzZUxlYXZlKCkge1xuICAgIHRoaXMuX3VwZGF0ZVNvcnRJY29uQ29sb3IoJycpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fdGFibGVJbnN0YW5jZT8ub25GaWx0ZXI/LnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjcHMtdGFibGUtY29sLWZpbHRlclwiPlxuICA8Y3BzLW1lbnVcbiAgICAjY29sdW1uRmlsdGVyTWVudVxuICAgIFt3aXRoQXJyb3ddPVwiZmFsc2VcIlxuICAgIGhpZGVUcmFuc2l0aW9uT3B0aW9ucz1cIjBzIGxpbmVhclwiXG4gICAgW3BlcnNpc3RlbnRdPVwicGVyc2lzdGVudCB8fCAoc2hvd0FwcGx5QnV0dG9uICYmIGlzQ2F0ZWdvcnlEcm9wZG93bk9wZW5lZClcIlxuICAgIChtZW51U2hvd24pPVwib25NZW51U2hvd24oKVwiXG4gICAgKG1lbnVIaWRkZW4pPVwib25NZW51SGlkZGVuKClcIlxuICAgIChiZWZvcmVNZW51SGlkZGVuKT1cIm9uQmVmb3JlTWVudUhpZGRlbigpXCI+XG4gICAgPGRpdiBjbGFzcz1cImNwcy10YWJsZS1jb2wtZmlsdGVyLW1lbnUtY29udGVudFwiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImNwcy10YWJsZS1jb2wtZmlsdGVyLW1lbnUtY29udGVudC1oZWFkZXJcIlxuICAgICAgICAqbmdJZj1cInNob3dDbG9zZUJ1dHRvbiB8fCBoZWFkZXJUaXRsZVwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNwcy10YWJsZS1jb2wtZmlsdGVyLW1lbnUtY29udGVudC1oZWFkZXItdGl0bGVcIj5cbiAgICAgICAgICB7eyBoZWFkZXJUaXRsZSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxjcHMtaWNvblxuICAgICAgICAgICpuZ0lmPVwic2hvd0Nsb3NlQnV0dG9uXCJcbiAgICAgICAgICBpY29uPVwiY2xvc2UteFwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uQ2xvc2VDbGljaygpXCI+PC9jcHMtaWNvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImNwcy10YWJsZS1jb2wtZmlsdGVyLW1lbnUtY29udGVudC1vcGVyYXRvclwiXG4gICAgICAgICpuZ0lmPVwiaXNTaG93T3BlcmF0b3JcIj5cbiAgICAgICAgPGNwcy1zZWxlY3RcbiAgICAgICAgICBbaGlkZURldGFpbHNdPVwidHJ1ZVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFmaWVsZENvbnN0cmFpbnRzIHx8IGZpZWxkQ29uc3RyYWludHMubGVuZ3RoIDwgMlwiXG4gICAgICAgICAgW3JldHVybk9iamVjdF09XCJmYWxzZVwiXG4gICAgICAgICAgW29wdGlvbnNdPVwib3BlcmF0b3JPcHRpb25zXCJcbiAgICAgICAgICBbbmdNb2RlbF09XCJvcGVyYXRvclwiXG4gICAgICAgICAgKHZhbHVlQ2hhbmdlZCk9XCJvbk9wZXJhdG9yQ2hhbmdlKCRldmVudClcIj48L2Nwcy1zZWxlY3Q+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcHMtdGFibGUtY29sLWZpbHRlci1tZW51LWNvbnRlbnQtY29uc3RyYWludHNcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0Zvcj1cImxldCBmaWVsZENvbnN0cmFpbnQgb2YgZmllbGRDb25zdHJhaW50czsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgY2xhc3M9XCJjcHMtdGFibGUtY29sLWZpbHRlci1tZW51LWNvbnRlbnQtY29uc3RyYWludFwiPlxuICAgICAgICAgIDxjcHMtc2VsZWN0XG4gICAgICAgICAgICAqbmdJZj1cInNob3dNYXRjaE1vZGVzICYmIGN1cnJlbnRNYXRjaE1vZGVzXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY3BzLXRhYmxlLWNvbC1maWx0ZXItbWF0Y2gtbW9kZS1zZWxlY3RcIlxuICAgICAgICAgICAgW2hpZGVEZXRhaWxzXT1cInRydWVcIlxuICAgICAgICAgICAgW3JldHVybk9iamVjdF09XCJmYWxzZVwiXG4gICAgICAgICAgICBbb3B0aW9uc109XCJjdXJyZW50TWF0Y2hNb2Rlc1wiXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJmaWVsZENvbnN0cmFpbnQubWF0Y2hNb2RlXCJcbiAgICAgICAgICAgICh2YWx1ZUNoYW5nZWQpPVwiXG4gICAgICAgICAgICAgIG9uTWVudU1hdGNoTW9kZUNoYW5nZSgkZXZlbnQsIGZpZWxkQ29uc3RyYWludClcbiAgICAgICAgICAgIFwiPjwvY3BzLXNlbGVjdD5cbiAgICAgICAgICA8dGFibGUtY29sdW1uLWZpbHRlci1jb25zdHJhaW50XG4gICAgICAgICAgICAjY29uc3RyYWludENvbXBvbmVudFxuICAgICAgICAgICAgW3R5cGVdPVwidHlwZVwiXG4gICAgICAgICAgICBbZmllbGRdPVwiZmllbGRcIlxuICAgICAgICAgICAgW2FzQnV0dG9uVG9nZ2xlXT1cImFzQnV0dG9uVG9nZ2xlXCJcbiAgICAgICAgICAgIFtzaW5nbGVTZWxlY3Rpb25dPVwic2luZ2xlU2VsZWN0aW9uXCJcbiAgICAgICAgICAgIFtjYXRlZ29yeU9wdGlvbnNdPVwiY2F0ZWdvcnlPcHRpb25zXCJcbiAgICAgICAgICAgIFtmaWx0ZXJDb25zdHJhaW50XT1cImZpZWxkQ29uc3RyYWludFwiXG4gICAgICAgICAgICBbaGFzQXBwbHlCdXR0b25dPVwic2hvd0FwcGx5QnV0dG9uXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiPlxuICAgICAgICAgIDwvdGFibGUtY29sdW1uLWZpbHRlci1jb25zdHJhaW50PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiY3BzLXRhYmxlLWNvbC1maWx0ZXItcmVtb3ZlLXJ1bGUtYnRuXCJcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd1JlbW92ZUljb25cIj5cbiAgICAgICAgICAgIDxjcHMtYnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJib3JkZXJsZXNzXCJcbiAgICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgY29sb3I9XCJwcmVwYXJlZFwiXG4gICAgICAgICAgICAgIGljb249XCJkZWxldGVcIlxuICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJyZW1vdmVDb25zdHJhaW50KGZpZWxkQ29uc3RyYWludClcIlxuICAgICAgICAgICAgICBsYWJlbD1cIlJlbW92ZSBjb25kaXRpb25cIj5cbiAgICAgICAgICAgIDwvY3BzLWJ1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJjcHMtdGFibGUtY29sLWZpbHRlci1hZGQtcnVsZS1idG5cIlxuICAgICAgICAqbmdJZj1cImlzU2hvd0FkZENvbnN0cmFpbnRcIj5cbiAgICAgICAgPGNwcy1idXR0b25cbiAgICAgICAgICBsYWJlbD1cIkFkZCBjb25kaXRpb25cIlxuICAgICAgICAgIHR5cGU9XCJib3JkZXJsZXNzXCJcbiAgICAgICAgICB3aWR0aD1cIjEwMCVcIlxuICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgY29sb3I9XCJzdXJwcmlzZVwiXG4gICAgICAgICAgaWNvbj1cImFkZFwiXG4gICAgICAgICAgKGNsaWNrZWQpPVwiYWRkQ29uc3RyYWludCgpXCI+XG4gICAgICAgIDwvY3BzLWJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNwcy10YWJsZS1jb2wtZmlsdGVyLWJ1dHRvbmJhclwiPlxuICAgICAgICA8Y3BzLWJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwic2hvd0NsZWFyQnV0dG9uXCJcbiAgICAgICAgICAoY2xpY2tlZCk9XCJjbGVhckZpbHRlcigpXCJcbiAgICAgICAgICB0eXBlPVwiYm9yZGVybGVzc1wiXG4gICAgICAgICAgY29sb3I9XCJwcmVwYXJlZFwiXG4gICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICBsYWJlbD1cIkNsZWFyXCI+PC9jcHMtYnV0dG9uPlxuICAgICAgICA8Y3BzLWJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwic2hvd0FwcGx5QnV0dG9uXCJcbiAgICAgICAgICAoY2xpY2tlZCk9XCJhcHBseUZpbHRlcigpXCJcbiAgICAgICAgICBjb2xvcj1cInByZXBhcmVkXCJcbiAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgIGxhYmVsPVwiQXBwbHlcIj48L2Nwcy1idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9jcHMtbWVudT5cbiAgPGNwcy1pY29uXG4gICAgW2ljb25dPVwiaXNGaWx0ZXJBcHBsaWVkID8gJ2ZpbHRlci1mdW5uZWwtZmlsbGVkJyA6ICdmaWx0ZXItZnVubmVsJ1wiXG4gICAgc2l6ZT1cIjEzXCJcbiAgICAoY2xpY2spPVwiY29sdW1uRmlsdGVyTWVudS50b2dnbGUoJGV2ZW50KVwiXG4gICAgY2xhc3M9XCJjcHMtdGFibGUtY29sLWZpbHRlci1tZW51LWJ1dHRvblwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ2Nwcy10YWJsZS1jb2wtZmlsdGVyLW1lbnUtYnV0dG9uLWFjdGl2ZSc6IGlzRmlsdGVyQXBwbGllZFxuICAgIH1cIlxuICAgID4+XG4gIDwvY3BzLWljb24+XG48L2Rpdj5cbiJdfQ==
|