@firestitch/filter 16.0.0 → 16.0.1
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/app/classes/actions-controller.d.ts +41 -41
- package/app/components/action-button/action-button.component.d.ts +9 -9
- package/app/components/action-kebab-actions/action-kebab-actions.component.d.ts +7 -7
- package/app/components/actions/actions.component.d.ts +13 -13
- package/app/components/filter/filter.component.d.ts +204 -204
- package/app/components/filter-chip/filter-chip.component.d.ts +26 -26
- package/app/components/filter-chip-content/filter-chip-content.component.d.ts +18 -18
- package/app/components/filter-chips/filter-chips.component.d.ts +9 -9
- package/app/components/filter-drawer/filter-drawer.component.d.ts +30 -30
- package/app/components/filter-drawer-actions/filter-drawer-actions.component.d.ts +9 -9
- package/app/components/filters-item/autocomplete/autocomplete.component.d.ts +14 -14
- package/app/components/filters-item/autocompletechips/autocompletechips.component.d.ts +16 -16
- package/app/components/filters-item/base-item/base-item.component.d.ts +25 -25
- package/app/components/filters-item/checkbox/checkbox.component.d.ts +11 -11
- package/app/components/filters-item/chips/chips.component.d.ts +13 -13
- package/app/components/filters-item/date/date.component.d.ts +20 -20
- package/app/components/filters-item/date-range/date-range.component.d.ts +15 -15
- package/app/components/filters-item/filter-item.component.d.ts +39 -39
- package/app/components/filters-item/range/range.component.d.ts +15 -15
- package/app/components/filters-item/select/backdrop/backdrop.component.d.ts +6 -6
- package/app/components/filters-item/select/groups/groups.component.d.ts +12 -12
- package/app/components/filters-item/select/multiple/multiple.component.d.ts +15 -15
- package/app/components/filters-item/select/select.component.d.ts +23 -23
- package/app/components/filters-item/select/simple/simple.component.d.ts +14 -14
- package/app/components/filters-item/text/text.component.d.ts +19 -19
- package/app/components/filters-item/week/week.component.d.ts +12 -12
- package/app/components/saved-filter/index.d.ts +3 -3
- package/app/components/saved-filter/saved-filter-edit/index.d.ts +1 -1
- package/app/components/saved-filter/saved-filter-edit/saved-filter-edit.component.d.ts +18 -18
- package/app/components/saved-filter/saved-filter-manage/index.d.ts +1 -1
- package/app/components/saved-filter/saved-filter-manage/saved-filter-manage.component.d.ts +16 -16
- package/app/components/saved-filter/saved-filters-menu/index.d.ts +1 -1
- package/app/components/saved-filter/saved-filters-menu/saved-filters-menu.component.d.ts +24 -24
- package/app/consts/query-param-delimiter.d.ts +1 -1
- package/app/directives/focus-to-item/focus-to-item.directive.d.ts +27 -27
- package/app/directives/status-bar/status-bar.directive.d.ts +8 -8
- package/app/enums/action-mode.enum.d.ts +6 -6
- package/app/enums/action-type.enum.d.ts +9 -9
- package/app/enums/button-style.d.ts +9 -9
- package/app/enums/index.d.ts +6 -6
- package/app/enums/item-date-mode.enum.d.ts +5 -5
- package/app/enums/item-type.enum.d.ts +15 -15
- package/app/enums/picker-view-type.enum.d.ts +7 -7
- package/app/fs-filter.module.d.ts +70 -70
- package/app/helpers/build-query-params.d.ts +3 -3
- package/app/helpers/compare.d.ts +2 -2
- package/app/helpers/create-filter-item.d.ts +14 -14
- package/app/helpers/find-value.d.ts +1 -1
- package/app/helpers/get-range-name.d.ts +1 -1
- package/app/helpers/parse-date.d.ts +1 -1
- package/app/helpers/parse-item-value-from-stored.d.ts +1 -1
- package/app/helpers/query-param-transformers.d.ts +2 -2
- package/app/helpers/restore-items.d.ts +12 -12
- package/app/injectors/filter-config.d.ts +2 -2
- package/app/injectors/filter-drawer-data.d.ts +2 -2
- package/app/injectors/filter-drawer-overlay.d.ts +2 -2
- package/app/interfaces/action.interface.d.ts +81 -81
- package/app/interfaces/config.interface.d.ts +66 -66
- package/app/interfaces/external-params.interface.d.ts +3 -3
- package/app/interfaces/filter.interface.d.ts +4 -4
- package/app/interfaces/index.d.ts +6 -6
- package/app/interfaces/items/autocomplete-chips.interface.d.ts +15 -15
- package/app/interfaces/items/autocomplete.interface.d.ts +9 -9
- package/app/interfaces/items/base.interface.d.ts +29 -29
- package/app/interfaces/items/checkbox.interface.d.ts +7 -7
- package/app/interfaces/items/chips.interface.d.ts +6 -6
- package/app/interfaces/items/date-range.interface.d.ts +8 -8
- package/app/interfaces/items/date.interface.d.ts +7 -7
- package/app/interfaces/items/range.interface.d.ts +13 -13
- package/app/interfaces/items/select.interface.d.ts +20 -20
- package/app/interfaces/items/text.interface.d.ts +9 -9
- package/app/interfaces/items/week.interface.d.ts +7 -7
- package/app/interfaces/saved-filters.interface.d.ts +18 -18
- package/app/interfaces/update-filter-item.interface.d.ts +4 -4
- package/app/models/action-menu-item.model.d.ts +23 -23
- package/app/models/action.model.d.ts +54 -54
- package/app/models/filter-config.d.ts +31 -31
- package/app/models/items/autocomplete/base-autocomplete-item.d.ts +12 -12
- package/app/models/items/autocomplete-chips-item.d.ts +20 -20
- package/app/models/items/autocomplete-item.d.ts +11 -11
- package/app/models/items/base-item.d.ts +80 -80
- package/app/models/items/checkbox-item.d.ts +17 -17
- package/app/models/items/chips-item.d.ts +18 -18
- package/app/models/items/date/base-date-item.d.ts +14 -14
- package/app/models/items/date-item.d.ts +8 -8
- package/app/models/items/date-range/base-date-range-item.d.ts +17 -17
- package/app/models/items/date-range-item.d.ts +6 -6
- package/app/models/items/date-time-item.d.ts +7 -7
- package/app/models/items/date-time-range-item.d.ts +6 -6
- package/app/models/items/range-item.d.ts +19 -19
- package/app/models/items/select/base-select-item.d.ts +13 -13
- package/app/models/items/select/multiple-select-item.d.ts +14 -14
- package/app/models/items/select/simple-select-item.d.ts +14 -14
- package/app/models/items/select-item.d.ts +8 -8
- package/app/models/items/text-item.d.ts +15 -15
- package/app/models/items/week-item.d.ts +18 -18
- package/app/pipes/remove-isolate-value.pipe.d.ts +8 -8
- package/app/providers/filter-meta.d.ts +5 -5
- package/app/services/external-params/persistance-params-controller.service.d.ts +21 -21
- package/app/services/external-params/query-params-controller.service.d.ts +22 -22
- package/app/services/external-params/saved-filters-controller.service.d.ts +40 -40
- package/app/services/external-params-controller.service.d.ts +42 -42
- package/app/services/filter-overlay.service.d.ts +36 -36
- package/app/services/focus-controller.service.d.ts +18 -18
- package/app/services/items-store.service.d.ts +69 -69
- package/esm2022/app/classes/actions-controller.mjs +129 -129
- package/esm2022/app/components/action-button/action-button.component.mjs +20 -20
- package/esm2022/app/components/action-kebab-actions/action-kebab-actions.component.mjs +17 -17
- package/esm2022/app/components/actions/actions.component.mjs +39 -39
- package/esm2022/app/components/filter/filter.component.mjs +625 -625
- package/esm2022/app/components/filter-chip/filter-chip.component.mjs +91 -91
- package/esm2022/app/components/filter-chip-content/filter-chip-content.component.mjs +82 -82
- package/esm2022/app/components/filter-chips/filter-chips.component.mjs +17 -17
- package/esm2022/app/components/filter-drawer/filter-drawer.component.mjs +77 -77
- package/esm2022/app/components/filter-drawer-actions/filter-drawer-actions.component.mjs +26 -26
- package/esm2022/app/components/filters-item/autocomplete/autocomplete.component.mjs +28 -28
- package/esm2022/app/components/filters-item/autocompletechips/autocompletechips.component.mjs +43 -43
- package/esm2022/app/components/filters-item/base-item/base-item.component.mjs +67 -67
- package/esm2022/app/components/filters-item/checkbox/checkbox.component.mjs +22 -22
- package/esm2022/app/components/filters-item/chips/chips.component.mjs +29 -29
- package/esm2022/app/components/filters-item/date/date.component.mjs +44 -44
- package/esm2022/app/components/filters-item/date-range/date-range.component.mjs +35 -35
- package/esm2022/app/components/filters-item/filter-item.component.mjs +81 -81
- package/esm2022/app/components/filters-item/range/range.component.mjs +48 -48
- package/esm2022/app/components/filters-item/select/backdrop/backdrop.component.mjs +11 -11
- package/esm2022/app/components/filters-item/select/groups/groups.component.mjs +32 -32
- package/esm2022/app/components/filters-item/select/multiple/multiple.component.mjs +59 -59
- package/esm2022/app/components/filters-item/select/select.component.mjs +54 -54
- package/esm2022/app/components/filters-item/select/simple/simple.component.mjs +45 -45
- package/esm2022/app/components/filters-item/text/text.component.mjs +50 -50
- package/esm2022/app/components/filters-item/week/week.component.mjs +25 -25
- package/esm2022/app/components/saved-filter/index.mjs +3 -3
- package/esm2022/app/components/saved-filter/saved-filter-edit/index.mjs +1 -1
- package/esm2022/app/components/saved-filter/saved-filter-edit/saved-filter-edit.component.mjs +54 -54
- package/esm2022/app/components/saved-filter/saved-filter-manage/index.mjs +1 -1
- package/esm2022/app/components/saved-filter/saved-filter-manage/saved-filter-manage.component.mjs +44 -44
- package/esm2022/app/components/saved-filter/saved-filters-menu/index.mjs +1 -1
- package/esm2022/app/components/saved-filter/saved-filters-menu/saved-filters-menu.component.mjs +60 -60
- package/esm2022/app/consts/query-param-delimiter.mjs +1 -1
- package/esm2022/app/directives/focus-to-item/focus-to-item.directive.mjs +140 -140
- package/esm2022/app/directives/status-bar/status-bar.directive.mjs +16 -16
- package/esm2022/app/enums/action-mode.enum.mjs +7 -7
- package/esm2022/app/enums/action-type.enum.mjs +10 -10
- package/esm2022/app/enums/button-style.mjs +10 -10
- package/esm2022/app/enums/index.mjs +6 -6
- package/esm2022/app/enums/item-date-mode.enum.mjs +6 -6
- package/esm2022/app/enums/item-type.enum.mjs +16 -16
- package/esm2022/app/enums/picker-view-type.enum.mjs +8 -8
- package/esm2022/app/fs-filter.module.mjs +260 -260
- package/esm2022/app/helpers/build-query-params.mjs +32 -32
- package/esm2022/app/helpers/compare.mjs +37 -37
- package/esm2022/app/helpers/create-filter-item.mjs +54 -54
- package/esm2022/app/helpers/find-value.mjs +12 -12
- package/esm2022/app/helpers/get-range-name.mjs +3 -3
- package/esm2022/app/helpers/parse-date.mjs +7 -7
- package/esm2022/app/helpers/parse-item-value-from-stored.mjs +76 -76
- package/esm2022/app/helpers/query-param-transformers.mjs +8 -8
- package/esm2022/app/helpers/restore-items.mjs +48 -48
- package/esm2022/app/injectors/filter-config.mjs +2 -2
- package/esm2022/app/injectors/filter-drawer-data.mjs +2 -2
- package/esm2022/app/injectors/filter-drawer-overlay.mjs +2 -2
- package/esm2022/app/interfaces/action.interface.mjs +1 -1
- package/esm2022/app/interfaces/config.interface.mjs +1 -1
- package/esm2022/app/interfaces/external-params.interface.mjs +1 -1
- package/esm2022/app/interfaces/filter.interface.mjs +1 -1
- package/esm2022/app/interfaces/index.mjs +6 -6
- package/esm2022/app/interfaces/items/autocomplete-chips.interface.mjs +1 -1
- package/esm2022/app/interfaces/items/autocomplete.interface.mjs +1 -1
- package/esm2022/app/interfaces/items/base.interface.mjs +1 -1
- package/esm2022/app/interfaces/items/checkbox.interface.mjs +1 -1
- package/esm2022/app/interfaces/items/chips.interface.mjs +1 -1
- package/esm2022/app/interfaces/items/date-range.interface.mjs +1 -1
- package/esm2022/app/interfaces/items/date.interface.mjs +1 -1
- package/esm2022/app/interfaces/items/range.interface.mjs +1 -1
- package/esm2022/app/interfaces/items/select.interface.mjs +1 -1
- package/esm2022/app/interfaces/items/text.interface.mjs +1 -1
- package/esm2022/app/interfaces/items/week.interface.mjs +1 -1
- package/esm2022/app/interfaces/saved-filters.interface.mjs +1 -1
- package/esm2022/app/interfaces/update-filter-item.interface.mjs +1 -1
- package/esm2022/app/models/action-menu-item.model.mjs +72 -72
- package/esm2022/app/models/action.model.mjs +155 -155
- package/esm2022/app/models/filter-config.mjs +78 -78
- package/esm2022/app/models/items/autocomplete/base-autocomplete-item.mjs +15 -15
- package/esm2022/app/models/items/autocomplete-chips-item.mjs +66 -66
- package/esm2022/app/models/items/autocomplete-item.mjs +32 -32
- package/esm2022/app/models/items/base-item.mjs +250 -250
- package/esm2022/app/models/items/checkbox-item.mjs +51 -51
- package/esm2022/app/models/items/chips-item.mjs +89 -89
- package/esm2022/app/models/items/date/base-date-item.mjs +49 -49
- package/esm2022/app/models/items/date-item.mjs +18 -18
- package/esm2022/app/models/items/date-range/base-date-range-item.mjs +123 -123
- package/esm2022/app/models/items/date-range-item.mjs +6 -6
- package/esm2022/app/models/items/date-time-item.mjs +9 -9
- package/esm2022/app/models/items/date-time-range-item.mjs +6 -6
- package/esm2022/app/models/items/range-item.mjs +84 -84
- package/esm2022/app/models/items/select/base-select-item.mjs +39 -39
- package/esm2022/app/models/items/select/multiple-select-item.mjs +87 -87
- package/esm2022/app/models/items/select/simple-select-item.mjs +65 -65
- package/esm2022/app/models/items/select-item.mjs +11 -11
- package/esm2022/app/models/items/text-item.mjs +35 -35
- package/esm2022/app/models/items/week-item.mjs +94 -94
- package/esm2022/app/pipes/remove-isolate-value.pipe.mjs +20 -20
- package/esm2022/app/providers/filter-meta.mjs +9 -9
- package/esm2022/app/services/external-params/persistance-params-controller.service.mjs +61 -61
- package/esm2022/app/services/external-params/query-params-controller.service.mjs +65 -65
- package/esm2022/app/services/external-params/saved-filters-controller.service.mjs +166 -166
- package/esm2022/app/services/external-params-controller.service.mjs +184 -184
- package/esm2022/app/services/filter-overlay.service.mjs +129 -129
- package/esm2022/app/services/focus-controller.service.mjs +28 -28
- package/esm2022/app/services/items-store.service.mjs +346 -346
- package/esm2022/firestitch-filter.mjs +4 -4
- package/esm2022/public_api.mjs +35 -35
- package/fesm2022/firestitch-filter.mjs +4516 -4516
- package/index.d.ts +5 -5
- package/package.json +1 -1
- package/public_api.d.ts +40 -40
|
@@ -1,254 +1,254 @@
|
|
|
1
|
-
import { BehaviorSubject, isObservable, Subject } from 'rxjs';
|
|
2
|
-
import { finalize, take, takeUntil, tap, } from 'rxjs/operators';
|
|
3
|
-
import { isFunction } from 'lodash-es';
|
|
4
|
-
import { ItemType } from '../../enums/item-type.enum';
|
|
5
|
-
export class BaseItem {
|
|
6
|
-
_additionalConfig;
|
|
7
|
-
_filter;
|
|
8
|
-
name;
|
|
9
|
-
label;
|
|
10
|
-
chipLabel;
|
|
11
|
-
hide;
|
|
12
|
-
defaultValue;
|
|
13
|
-
defaultValueFn;
|
|
14
|
-
persistedValue;
|
|
15
|
-
showClear;
|
|
16
|
-
persistanceDisabled;
|
|
17
|
-
queryParamsDisabled;
|
|
18
|
-
change;
|
|
19
|
-
init;
|
|
20
|
-
_type;
|
|
21
|
-
_model;
|
|
22
|
-
_pendingValues = false;
|
|
23
|
-
_pendingDefaultValue = false;
|
|
24
|
-
_initializedValues = false;
|
|
25
|
-
_loading$ = new BehaviorSubject(false);
|
|
26
|
-
_value$ = new BehaviorSubject(null);
|
|
27
|
-
_valueChange$ = new Subject();
|
|
28
|
-
_values$ = new BehaviorSubject(null);
|
|
29
|
-
_valuesFn;
|
|
30
|
-
_destroy$ = new Subject();
|
|
31
|
-
_clear$ = new Subject();
|
|
32
|
-
constructor(itemConfig, _additionalConfig, _filter) {
|
|
33
|
-
this._additionalConfig = _additionalConfig;
|
|
34
|
-
this._filter = _filter;
|
|
35
|
-
this._type = itemConfig.type;
|
|
36
|
-
this._parseConfig(itemConfig);
|
|
37
|
-
}
|
|
38
|
-
get filter() {
|
|
39
|
-
return this._filter;
|
|
40
|
-
}
|
|
41
|
-
get isTypeAutocomplete() {
|
|
42
|
-
return this.type === ItemType.AutoComplete;
|
|
43
|
-
}
|
|
44
|
-
get isTypeAutocompleteChips() {
|
|
45
|
-
return this.type === ItemType.AutoCompleteChips;
|
|
46
|
-
}
|
|
47
|
-
get isTypeChips() {
|
|
48
|
-
return this.type === ItemType.Chips;
|
|
49
|
-
}
|
|
50
|
-
get isTypeCheckbox() {
|
|
51
|
-
return this.type === ItemType.Checkbox;
|
|
52
|
-
}
|
|
53
|
-
get isTypeSelect() {
|
|
54
|
-
return this.type === ItemType.Select;
|
|
55
|
-
}
|
|
56
|
-
get isTypeDate() {
|
|
57
|
-
return this.type === ItemType.Date;
|
|
58
|
-
}
|
|
59
|
-
get isTypeDateRange() {
|
|
60
|
-
return this.type === ItemType.DateRange;
|
|
61
|
-
}
|
|
62
|
-
get isTypeRange() {
|
|
63
|
-
return this.type === ItemType.Range;
|
|
64
|
-
}
|
|
65
|
-
get isTypeDateTimeRange() {
|
|
66
|
-
return this.type === ItemType.DateTimeRange;
|
|
67
|
-
}
|
|
68
|
-
get isTypeDateTime() {
|
|
69
|
-
return this.type === ItemType.DateTime;
|
|
70
|
-
}
|
|
71
|
-
get isTypeKeyword() {
|
|
72
|
-
return this.type === ItemType.Keyword;
|
|
73
|
-
}
|
|
74
|
-
get isChipVisible() {
|
|
75
|
-
return !!this.model;
|
|
76
|
-
}
|
|
77
|
-
get destroy$() {
|
|
78
|
-
return this._destroy$.asObservable();
|
|
79
|
-
}
|
|
80
|
-
get type() {
|
|
81
|
-
return this._type;
|
|
82
|
-
}
|
|
83
|
-
get hasPendingValues() {
|
|
84
|
-
return this._pendingValues;
|
|
85
|
-
}
|
|
86
|
-
get hasPendingDefaultValue() {
|
|
87
|
-
return this._pendingDefaultValue;
|
|
88
|
-
}
|
|
89
|
-
get model() {
|
|
90
|
-
return this._model;
|
|
91
|
-
}
|
|
92
|
-
set model(value) {
|
|
93
|
-
this._setModel(value);
|
|
94
|
-
this.valueChanged();
|
|
95
|
-
}
|
|
96
|
-
set values(values) {
|
|
97
|
-
this._values$.next(values);
|
|
98
|
-
}
|
|
99
|
-
get values() {
|
|
100
|
-
return this._values$.getValue();
|
|
101
|
-
}
|
|
102
|
-
get values$() {
|
|
103
|
-
return this._values$.asObservable();
|
|
104
|
-
}
|
|
105
|
-
get valueChange$() {
|
|
106
|
-
return this._valueChange$.asObservable();
|
|
107
|
-
}
|
|
108
|
-
get value$() {
|
|
109
|
-
return this._value$.asObservable();
|
|
110
|
-
}
|
|
111
|
-
get clear$() {
|
|
112
|
-
return this._clear$.asObservable();
|
|
113
|
-
}
|
|
114
|
-
get initialized() {
|
|
115
|
-
return this._initialized;
|
|
116
|
-
}
|
|
117
|
-
get loading$() {
|
|
118
|
-
return this._loading$.asObservable();
|
|
119
|
-
}
|
|
120
|
-
get loading() {
|
|
121
|
-
return this._loading$.getValue();
|
|
122
|
-
}
|
|
123
|
-
set loading(value) {
|
|
124
|
-
this._loading$.next(value);
|
|
125
|
-
}
|
|
126
|
-
get _initialized() {
|
|
127
|
-
return !this._pendingDefaultValue && !this._pendingValues && this._initializedValues;
|
|
128
|
-
}
|
|
129
|
-
valueChanged() {
|
|
130
|
-
this._value$.next(this.value);
|
|
131
|
-
if (this.change) {
|
|
132
|
-
this.change(this, this._filter);
|
|
133
|
-
}
|
|
134
|
-
if (this.initialized) {
|
|
135
|
-
this._valueChange$.next();
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
get queryObject() {
|
|
139
|
-
const value = this.value;
|
|
140
|
-
const name = this.name;
|
|
141
|
-
const params = {};
|
|
142
|
-
if (Array.isArray(value)) {
|
|
143
|
-
params[this.name] = value.join(',');
|
|
144
|
-
}
|
|
145
|
-
else {
|
|
146
|
-
params[name] = value;
|
|
147
|
-
}
|
|
148
|
-
return params;
|
|
149
|
-
}
|
|
150
|
-
get persistanceObject() {
|
|
151
|
-
return this.queryObject;
|
|
152
|
-
}
|
|
153
|
-
loadDefaultValue() {
|
|
154
|
-
this._pendingDefaultValue = true;
|
|
155
|
-
return this.defaultValueFn()
|
|
156
|
-
.pipe(tap((value) => {
|
|
157
|
-
this.defaultValue = value;
|
|
158
|
-
this._initDefaultModel();
|
|
159
|
-
}), finalize(() => {
|
|
160
|
-
this._pendingDefaultValue = false;
|
|
161
|
-
}));
|
|
162
|
-
}
|
|
163
|
-
initValues(persistedValue) {
|
|
164
|
-
this._initializedValues = false;
|
|
165
|
-
this.persistedValue = persistedValue;
|
|
166
|
-
this._initDefaultModel();
|
|
167
|
-
const isAutocomplete = this.type === ItemType.AutoComplete || this.type === ItemType.AutoCompleteChips;
|
|
168
|
-
if (this._valuesFn && !isAutocomplete) {
|
|
169
|
-
const valuesResult = this._valuesFn(null, this._filter);
|
|
170
|
-
if (isObservable(valuesResult)) {
|
|
171
|
-
this._pendingValues = true;
|
|
172
|
-
}
|
|
173
|
-
else {
|
|
174
|
-
this.values = valuesResult;
|
|
175
|
-
this._init();
|
|
176
|
-
this._initializedValues = true;
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
else {
|
|
180
|
-
this._init();
|
|
181
|
-
this._initializedValues = true;
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
loadAsyncValues(reload = true) {
|
|
185
|
-
if (reload || (!this.loading && this.hasPendingValues)) {
|
|
186
|
-
this.loading = true;
|
|
187
|
-
this._valuesFn(null, this._filter)
|
|
188
|
-
.pipe(take(1), takeUntil(this._destroy$))
|
|
189
|
-
.subscribe((values) => {
|
|
190
|
-
this.values = values;
|
|
191
|
-
this._pendingValues = false;
|
|
192
|
-
this.loading = false;
|
|
193
|
-
this._init();
|
|
194
|
-
this._validateModel();
|
|
195
|
-
this._initializedValues = true;
|
|
196
|
-
});
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
clear(defaultValue = undefined) {
|
|
200
|
-
if (this.isTypeRange || this.isTypeDateRange || this.isTypeDateTimeRange) {
|
|
1
|
+
import { BehaviorSubject, isObservable, Subject } from 'rxjs';
|
|
2
|
+
import { finalize, take, takeUntil, tap, } from 'rxjs/operators';
|
|
3
|
+
import { isFunction } from 'lodash-es';
|
|
4
|
+
import { ItemType } from '../../enums/item-type.enum';
|
|
5
|
+
export class BaseItem {
|
|
6
|
+
_additionalConfig;
|
|
7
|
+
_filter;
|
|
8
|
+
name;
|
|
9
|
+
label;
|
|
10
|
+
chipLabel;
|
|
11
|
+
hide;
|
|
12
|
+
defaultValue;
|
|
13
|
+
defaultValueFn;
|
|
14
|
+
persistedValue;
|
|
15
|
+
showClear;
|
|
16
|
+
persistanceDisabled;
|
|
17
|
+
queryParamsDisabled;
|
|
18
|
+
change;
|
|
19
|
+
init;
|
|
20
|
+
_type;
|
|
21
|
+
_model;
|
|
22
|
+
_pendingValues = false;
|
|
23
|
+
_pendingDefaultValue = false;
|
|
24
|
+
_initializedValues = false;
|
|
25
|
+
_loading$ = new BehaviorSubject(false);
|
|
26
|
+
_value$ = new BehaviorSubject(null);
|
|
27
|
+
_valueChange$ = new Subject();
|
|
28
|
+
_values$ = new BehaviorSubject(null);
|
|
29
|
+
_valuesFn;
|
|
30
|
+
_destroy$ = new Subject();
|
|
31
|
+
_clear$ = new Subject();
|
|
32
|
+
constructor(itemConfig, _additionalConfig, _filter) {
|
|
33
|
+
this._additionalConfig = _additionalConfig;
|
|
34
|
+
this._filter = _filter;
|
|
35
|
+
this._type = itemConfig.type;
|
|
36
|
+
this._parseConfig(itemConfig);
|
|
37
|
+
}
|
|
38
|
+
get filter() {
|
|
39
|
+
return this._filter;
|
|
40
|
+
}
|
|
41
|
+
get isTypeAutocomplete() {
|
|
42
|
+
return this.type === ItemType.AutoComplete;
|
|
43
|
+
}
|
|
44
|
+
get isTypeAutocompleteChips() {
|
|
45
|
+
return this.type === ItemType.AutoCompleteChips;
|
|
46
|
+
}
|
|
47
|
+
get isTypeChips() {
|
|
48
|
+
return this.type === ItemType.Chips;
|
|
49
|
+
}
|
|
50
|
+
get isTypeCheckbox() {
|
|
51
|
+
return this.type === ItemType.Checkbox;
|
|
52
|
+
}
|
|
53
|
+
get isTypeSelect() {
|
|
54
|
+
return this.type === ItemType.Select;
|
|
55
|
+
}
|
|
56
|
+
get isTypeDate() {
|
|
57
|
+
return this.type === ItemType.Date;
|
|
58
|
+
}
|
|
59
|
+
get isTypeDateRange() {
|
|
60
|
+
return this.type === ItemType.DateRange;
|
|
61
|
+
}
|
|
62
|
+
get isTypeRange() {
|
|
63
|
+
return this.type === ItemType.Range;
|
|
64
|
+
}
|
|
65
|
+
get isTypeDateTimeRange() {
|
|
66
|
+
return this.type === ItemType.DateTimeRange;
|
|
67
|
+
}
|
|
68
|
+
get isTypeDateTime() {
|
|
69
|
+
return this.type === ItemType.DateTime;
|
|
70
|
+
}
|
|
71
|
+
get isTypeKeyword() {
|
|
72
|
+
return this.type === ItemType.Keyword;
|
|
73
|
+
}
|
|
74
|
+
get isChipVisible() {
|
|
75
|
+
return !!this.model;
|
|
76
|
+
}
|
|
77
|
+
get destroy$() {
|
|
78
|
+
return this._destroy$.asObservable();
|
|
79
|
+
}
|
|
80
|
+
get type() {
|
|
81
|
+
return this._type;
|
|
82
|
+
}
|
|
83
|
+
get hasPendingValues() {
|
|
84
|
+
return this._pendingValues;
|
|
85
|
+
}
|
|
86
|
+
get hasPendingDefaultValue() {
|
|
87
|
+
return this._pendingDefaultValue;
|
|
88
|
+
}
|
|
89
|
+
get model() {
|
|
90
|
+
return this._model;
|
|
91
|
+
}
|
|
92
|
+
set model(value) {
|
|
93
|
+
this._setModel(value);
|
|
94
|
+
this.valueChanged();
|
|
95
|
+
}
|
|
96
|
+
set values(values) {
|
|
97
|
+
this._values$.next(values);
|
|
98
|
+
}
|
|
99
|
+
get values() {
|
|
100
|
+
return this._values$.getValue();
|
|
101
|
+
}
|
|
102
|
+
get values$() {
|
|
103
|
+
return this._values$.asObservable();
|
|
104
|
+
}
|
|
105
|
+
get valueChange$() {
|
|
106
|
+
return this._valueChange$.asObservable();
|
|
107
|
+
}
|
|
108
|
+
get value$() {
|
|
109
|
+
return this._value$.asObservable();
|
|
110
|
+
}
|
|
111
|
+
get clear$() {
|
|
112
|
+
return this._clear$.asObservable();
|
|
113
|
+
}
|
|
114
|
+
get initialized() {
|
|
115
|
+
return this._initialized;
|
|
116
|
+
}
|
|
117
|
+
get loading$() {
|
|
118
|
+
return this._loading$.asObservable();
|
|
119
|
+
}
|
|
120
|
+
get loading() {
|
|
121
|
+
return this._loading$.getValue();
|
|
122
|
+
}
|
|
123
|
+
set loading(value) {
|
|
124
|
+
this._loading$.next(value);
|
|
125
|
+
}
|
|
126
|
+
get _initialized() {
|
|
127
|
+
return !this._pendingDefaultValue && !this._pendingValues && this._initializedValues;
|
|
128
|
+
}
|
|
129
|
+
valueChanged() {
|
|
130
|
+
this._value$.next(this.value);
|
|
131
|
+
if (this.change) {
|
|
132
|
+
this.change(this, this._filter);
|
|
133
|
+
}
|
|
134
|
+
if (this.initialized) {
|
|
135
|
+
this._valueChange$.next();
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
get queryObject() {
|
|
139
|
+
const value = this.value;
|
|
140
|
+
const name = this.name;
|
|
141
|
+
const params = {};
|
|
142
|
+
if (Array.isArray(value)) {
|
|
143
|
+
params[this.name] = value.join(',');
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
params[name] = value;
|
|
147
|
+
}
|
|
148
|
+
return params;
|
|
149
|
+
}
|
|
150
|
+
get persistanceObject() {
|
|
151
|
+
return this.queryObject;
|
|
152
|
+
}
|
|
153
|
+
loadDefaultValue() {
|
|
154
|
+
this._pendingDefaultValue = true;
|
|
155
|
+
return this.defaultValueFn()
|
|
156
|
+
.pipe(tap((value) => {
|
|
157
|
+
this.defaultValue = value;
|
|
158
|
+
this._initDefaultModel();
|
|
159
|
+
}), finalize(() => {
|
|
160
|
+
this._pendingDefaultValue = false;
|
|
161
|
+
}));
|
|
162
|
+
}
|
|
163
|
+
initValues(persistedValue) {
|
|
164
|
+
this._initializedValues = false;
|
|
165
|
+
this.persistedValue = persistedValue;
|
|
166
|
+
this._initDefaultModel();
|
|
167
|
+
const isAutocomplete = this.type === ItemType.AutoComplete || this.type === ItemType.AutoCompleteChips;
|
|
168
|
+
if (this._valuesFn && !isAutocomplete) {
|
|
169
|
+
const valuesResult = this._valuesFn(null, this._filter);
|
|
170
|
+
if (isObservable(valuesResult)) {
|
|
171
|
+
this._pendingValues = true;
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
this.values = valuesResult;
|
|
175
|
+
this._init();
|
|
176
|
+
this._initializedValues = true;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
this._init();
|
|
181
|
+
this._initializedValues = true;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
loadAsyncValues(reload = true) {
|
|
185
|
+
if (reload || (!this.loading && this.hasPendingValues)) {
|
|
186
|
+
this.loading = true;
|
|
187
|
+
this._valuesFn(null, this._filter)
|
|
188
|
+
.pipe(take(1), takeUntil(this._destroy$))
|
|
189
|
+
.subscribe((values) => {
|
|
190
|
+
this.values = values;
|
|
191
|
+
this._pendingValues = false;
|
|
192
|
+
this.loading = false;
|
|
193
|
+
this._init();
|
|
194
|
+
this._validateModel();
|
|
195
|
+
this._initializedValues = true;
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
clear(defaultValue = undefined) {
|
|
200
|
+
if (this.isTypeRange || this.isTypeDateRange || this.isTypeDateTimeRange) {
|
|
201
201
|
console.warn(`
|
|
202
202
|
Filter ${this.name} can not be cleared with .clear() method!
|
|
203
203
|
Use special .clearRange() or clearDateRange() instead.
|
|
204
|
-
`);
|
|
205
|
-
}
|
|
206
|
-
this._clear$.next(defaultValue);
|
|
207
|
-
this._clearValue(defaultValue);
|
|
208
|
-
}
|
|
209
|
-
getChipsContent(type) {
|
|
210
|
-
return '';
|
|
211
|
-
}
|
|
212
|
-
destroy() {
|
|
213
|
-
this._destroy$.next();
|
|
214
|
-
this._destroy$.complete();
|
|
215
|
-
}
|
|
216
|
-
_setModel(value) {
|
|
217
|
-
this._model = value;
|
|
218
|
-
}
|
|
219
|
-
_parseConfig(item) {
|
|
220
|
-
this.name = item.name;
|
|
221
|
-
this.label = item.label;
|
|
222
|
-
this.chipLabel = item.chipLabel;
|
|
223
|
-
if (typeof item.default === 'function') {
|
|
224
|
-
this.defaultValueFn = item.default;
|
|
225
|
-
}
|
|
226
|
-
else {
|
|
227
|
-
this.defaultValue = item.default;
|
|
228
|
-
}
|
|
229
|
-
this.change = item.change;
|
|
230
|
-
this.init = item.init || ((_) => {
|
|
231
|
-
//
|
|
232
|
-
});
|
|
233
|
-
this.hide = item.hide;
|
|
234
|
-
this.showClear = item.clear ?? true;
|
|
235
|
-
this.persistanceDisabled = item.disablePersist ?? false;
|
|
236
|
-
this.queryParamsDisabled = item.disableQueryParams ?? false;
|
|
237
|
-
if (isFunction(item.values)) {
|
|
238
|
-
this._valuesFn = item.values;
|
|
239
|
-
}
|
|
240
|
-
else {
|
|
241
|
-
this.values = item.values;
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
_initDefaultModel() {
|
|
245
|
-
const model = this.persistedValue ?? this.defaultValue;
|
|
246
|
-
if (model !== undefined) {
|
|
247
|
-
this._setModel(model);
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
_clearValue(defaultValue = undefined) {
|
|
251
|
-
this.model = defaultValue ?? undefined;
|
|
252
|
-
}
|
|
253
|
-
}
|
|
204
|
+
`);
|
|
205
|
+
}
|
|
206
|
+
this._clear$.next(defaultValue);
|
|
207
|
+
this._clearValue(defaultValue);
|
|
208
|
+
}
|
|
209
|
+
getChipsContent(type) {
|
|
210
|
+
return '';
|
|
211
|
+
}
|
|
212
|
+
destroy() {
|
|
213
|
+
this._destroy$.next();
|
|
214
|
+
this._destroy$.complete();
|
|
215
|
+
}
|
|
216
|
+
_setModel(value) {
|
|
217
|
+
this._model = value;
|
|
218
|
+
}
|
|
219
|
+
_parseConfig(item) {
|
|
220
|
+
this.name = item.name;
|
|
221
|
+
this.label = item.label;
|
|
222
|
+
this.chipLabel = item.chipLabel;
|
|
223
|
+
if (typeof item.default === 'function') {
|
|
224
|
+
this.defaultValueFn = item.default;
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
this.defaultValue = item.default;
|
|
228
|
+
}
|
|
229
|
+
this.change = item.change;
|
|
230
|
+
this.init = item.init || ((_) => {
|
|
231
|
+
//
|
|
232
|
+
});
|
|
233
|
+
this.hide = item.hide;
|
|
234
|
+
this.showClear = item.clear ?? true;
|
|
235
|
+
this.persistanceDisabled = item.disablePersist ?? false;
|
|
236
|
+
this.queryParamsDisabled = item.disableQueryParams ?? false;
|
|
237
|
+
if (isFunction(item.values)) {
|
|
238
|
+
this._valuesFn = item.values;
|
|
239
|
+
}
|
|
240
|
+
else {
|
|
241
|
+
this.values = item.values;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
_initDefaultModel() {
|
|
245
|
+
const model = this.persistedValue ?? this.defaultValue;
|
|
246
|
+
if (model !== undefined) {
|
|
247
|
+
this._setModel(model);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
_clearValue(defaultValue = undefined) {
|
|
251
|
+
this.model = defaultValue ?? undefined;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
254
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1pdGVtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2RlbHMvaXRlbXMvYmFzZS1pdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxRSxPQUFPLEVBQ0wsUUFBUSxFQUNSLElBQUksRUFDSixTQUFTLEVBQ1QsR0FBRyxHQUNKLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUd2QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFNdEQsTUFBTSxPQUFnQixRQUFRO0lBaUNoQjtJQUNBO0lBaENMLElBQUksQ0FBUztJQUNiLEtBQUssQ0FBTTtJQUNYLFNBQVMsQ0FBb0I7SUFDN0IsSUFBSSxDQUFVO0lBQ2QsWUFBWSxDQUFnQztJQUM1QyxjQUFjLENBQW1CO0lBQ2pDLGNBQWMsQ0FBVTtJQUN4QixTQUFTLENBQVU7SUFDbkIsbUJBQW1CLENBQVU7SUFDN0IsbUJBQW1CLENBQVU7SUFDN0IsTUFBTSxDQUF1RDtJQUM3RCxJQUFJLENBQXVDO0lBRS9CLEtBQUssQ0FBWTtJQUUxQixNQUFNLENBQU07SUFDWixjQUFjLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLG9CQUFvQixHQUFHLEtBQUssQ0FBQztJQUM3QixrQkFBa0IsR0FBRyxLQUFLLENBQUM7SUFDM0IsU0FBUyxHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLE9BQU8sR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxhQUFhLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUNwQyxRQUFRLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsU0FBUyxDQUF3RTtJQUVqRixTQUFT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ZSwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgZmluYWxpemUsXG4gIHRha2UsXG4gIHRha2VVbnRpbCxcbiAgdGFwLFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IGlzRnVuY3Rpb24gfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG5pbXBvcnQgdHlwZSB7IEZpbHRlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvZmlsdGVyL2ZpbHRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgSXRlbVR5cGUgfSBmcm9tICcuLi8uLi9lbnVtcy9pdGVtLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBJRmlsdGVyQ29uZmlnSXRlbSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJRmlsdGVyRGVmYXVsdEZuIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9pdGVtcy9iYXNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJRmlsdGVySXRlbURlZmF1bHRSYW5nZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvaXRlbXMvcmFuZ2UuaW50ZXJmYWNlJztcblxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUl0ZW08VCBleHRlbmRzIElGaWx0ZXJDb25maWdJdGVtPiB7XG5cbiAgcHVibGljIG5hbWU6IHN0cmluZztcbiAgcHVibGljIGxhYmVsOiBhbnk7XG4gIHB1YmxpYyBjaGlwTGFiZWw6IHN0cmluZyB8IHN0cmluZ1tdO1xuICBwdWJsaWMgaGlkZTogYm9vbGVhbjtcbiAgcHVibGljIGRlZmF1bHRWYWx1ZTogYW55IHwgSUZpbHRlckl0ZW1EZWZhdWx0UmFuZ2U7XG4gIHB1YmxpYyBkZWZhdWx0VmFsdWVGbjogSUZpbHRlckRlZmF1bHRGbjtcbiAgcHVibGljIHBlcnNpc3RlZFZhbHVlOiB1bmtub3duO1xuICBwdWJsaWMgc2hvd0NsZWFyOiBib29sZWFuO1xuICBwdWJsaWMgcGVyc2lzdGFuY2VEaXNhYmxlZDogYm9vbGVhbjtcbiAgcHVibGljIHF1ZXJ5UGFyYW1zRGlzYWJsZWQ6IGJvb2xlYW47XG4gIHB1YmxpYyBjaGFuZ2U6IChpdGVtOiBCYXNlSXRlbTxUPiwgZmlsdGVyOiBGaWx0ZXJDb21wb25lbnQpID0+IHZvaWQ7XG4gIHB1YmxpYyBpbml0OiAoaXRlbTogQmFzZUl0ZW08VD4sIGZpbHRlcj8pID0+IHZvaWQ7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF90eXBlOiBUWyd0eXBlJ107XG5cbiAgcHJvdGVjdGVkIF9tb2RlbDogYW55O1xuICBwcm90ZWN0ZWQgX3BlbmRpbmdWYWx1ZXMgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIF9wZW5kaW5nRGVmYXVsdFZhbHVlID0gZmFsc2U7XG4gIHByb3RlY3RlZCBfaW5pdGlhbGl6ZWRWYWx1ZXMgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIF9sb2FkaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBwcm90ZWN0ZWQgX3ZhbHVlJCA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XG4gIHByb3RlY3RlZCBfdmFsdWVDaGFuZ2UkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJvdGVjdGVkIF92YWx1ZXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcbiAgcHJvdGVjdGVkIF92YWx1ZXNGbjogKGtleXdvcmQ/OiBzdHJpbmcsIGZpbHRlcj86IEZpbHRlckNvbXBvbmVudCkgPT4gT2JzZXJ2YWJsZTxhbnk+IHwgYW55O1xuXG4gIHByb3RlY3RlZCBfZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHByaXZhdGUgX2NsZWFyJCA9IG5ldyBTdWJqZWN0PHVua25vd24+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgaXRlbUNvbmZpZzogVCxcbiAgICBwcm90ZWN0ZWQgX2FkZGl0aW9uYWxDb25maWc6IHVua25vd24sXG4gICAgcHJvdGVjdGVkIF9maWx0ZXI6IEZpbHRlckNvbXBvbmVudCxcbiAgKSB7XG4gICAgdGhpcy5fdHlwZSA9IGl0ZW1Db25maWcudHlwZTtcbiAgICB0aGlzLl9wYXJzZUNvbmZpZyhpdGVtQ29uZmlnKTtcbiAgfVxuXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXQgdmFsdWUoKTtcblxuICBwdWJsaWMgZ2V0IGZpbHRlcigpOiBGaWx0ZXJDb21wb25lbnQge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXI7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzVHlwZUF1dG9jb21wbGV0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlID09PSBJdGVtVHlwZS5BdXRvQ29tcGxldGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzVHlwZUF1dG9jb21wbGV0ZUNoaXBzKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGUgPT09IEl0ZW1UeXBlLkF1dG9Db21wbGV0ZUNoaXBzO1xuICB9XG5cbiAgcHVibGljIGdldCBpc1R5cGVDaGlwcygpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlID09PSBJdGVtVHlwZS5DaGlwcztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNUeXBlQ2hlY2tib3goKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gSXRlbVR5cGUuQ2hlY2tib3g7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzVHlwZVNlbGVjdCgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlID09PSBJdGVtVHlwZS5TZWxlY3Q7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzVHlwZURhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gSXRlbVR5cGUuRGF0ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNUeXBlRGF0ZVJhbmdlKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGUgPT09IEl0ZW1UeXBlLkRhdGVSYW5nZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNUeXBlUmFuZ2UoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gSXRlbVR5cGUuUmFuZ2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzVHlwZURhdGVUaW1lUmFuZ2UoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gSXRlbVR5cGUuRGF0ZVRpbWVSYW5nZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNUeXBlRGF0ZVRpbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gSXRlbVR5cGUuRGF0ZVRpbWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzVHlwZUtleXdvcmQoKSB7XG4gICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gSXRlbVR5cGUuS2V5d29yZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNDaGlwVmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLm1vZGVsO1xuICB9XG5cbiAgcHVibGljIGdldCBkZXN0cm95JCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGVzdHJveSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHR5cGUoKTogVFsndHlwZSddIHtcbiAgICByZXR1cm4gdGhpcy5fdHlwZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGFzUGVuZGluZ1ZhbHVlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcGVuZGluZ1ZhbHVlcztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGFzUGVuZGluZ0RlZmF1bHRWYWx1ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcGVuZGluZ0RlZmF1bHRWYWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbW9kZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuX21vZGVsO1xuICB9XG5cbiAgcHVibGljIHNldCBtb2RlbCh2YWx1ZSkge1xuICAgIHRoaXMuX3NldE1vZGVsKHZhbHVlKTtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlZCgpO1xuICB9XG5cbiAgcHVibGljIHNldCB2YWx1ZXModmFsdWVzKSB7XG4gICAgdGhpcy5fdmFsdWVzJC5uZXh0KHZhbHVlcyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHZhbHVlcygpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWVzJC5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCB2YWx1ZXMkKCk6IE9ic2VydmFibGU8dW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZXMkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCB2YWx1ZUNoYW5nZSQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlQ2hhbmdlJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdmFsdWUkKCkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZSQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNsZWFyJCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY2xlYXIkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBpbml0aWFsaXplZCgpIHtcbiAgICByZXR1cm4gdGhpcy5faW5pdGlhbGl6ZWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGxvYWRpbmckKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9sb2FkaW5nJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbG9hZGluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbG9hZGluZyQuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgbG9hZGluZyh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2xvYWRpbmckLm5leHQodmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCBfaW5pdGlhbGl6ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLl9wZW5kaW5nRGVmYXVsdFZhbHVlICYmICF0aGlzLl9wZW5kaW5nVmFsdWVzICYmIHRoaXMuX2luaXRpYWxpemVkVmFsdWVzO1xuICB9XG5cbiAgcHVibGljIHZhbHVlQ2hhbmdlZCgpIHtcbiAgICB0aGlzLl92YWx1ZSQubmV4dCh0aGlzLnZhbHVlKTtcblxuICAgIGlmICh0aGlzLmNoYW5nZSkge1xuICAgICAgdGhpcy5jaGFuZ2UodGhpcywgdGhpcy5fZmlsdGVyKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgdGhpcy5fdmFsdWVDaGFuZ2UkLm5leHQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHF1ZXJ5T2JqZWN0KCk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgY29uc3QgbmFtZSA9IHRoaXMubmFtZTtcbiAgICBjb25zdCBwYXJhbXMgPSB7fTtcblxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgcGFyYW1zW3RoaXMubmFtZV0gPSB2YWx1ZS5qb2luKCcsJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcmFtc1tuYW1lXSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHJldHVybiBwYXJhbXM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBlcnNpc3RhbmNlT2JqZWN0KCk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5xdWVyeU9iamVjdDtcbiAgfVxuXG4gIHB1YmxpYyBsb2FkRGVmYXVsdFZhbHVlKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgdGhpcy5fcGVuZGluZ0RlZmF1bHRWYWx1ZSA9IHRydWU7XG5cbiAgICByZXR1cm4gdGhpcy5kZWZhdWx0VmFsdWVGbigpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMuZGVmYXVsdFZhbHVlID0gdmFsdWU7XG5cbiAgICAgICAgICB0aGlzLl9pbml0RGVmYXVsdE1vZGVsKCk7XG4gICAgICAgIH0pLFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fcGVuZGluZ0RlZmF1bHRWYWx1ZSA9IGZhbHNlO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gIH1cblxuICBwdWJsaWMgaW5pdFZhbHVlcyhwZXJzaXN0ZWRWYWx1ZTogdW5rbm93bikge1xuICAgIHRoaXMuX2luaXRpYWxpemVkVmFsdWVzID0gZmFsc2U7XG4gICAgdGhpcy5wZXJzaXN0ZWRWYWx1ZSA9IHBlcnNpc3RlZFZhbHVlO1xuICAgIHRoaXMuX2luaXREZWZhdWx0TW9kZWwoKTtcblxuICAgIGNvbnN0IGlzQXV0b2NvbXBsZXRlID0gdGhpcy50eXBlID09PSBJdGVtVHlwZS5BdXRvQ29tcGxldGUgfHwgdGhpcy50eXBlID09PSBJdGVtVHlwZS5BdXRvQ29tcGxldGVDaGlwcztcblxuICAgIGlmICh0aGlzLl92YWx1ZXNGbiAmJiAhaXNBdXRvY29tcGxldGUpIHtcbiAgICAgIGNvbnN0IHZhbHVlc1Jlc3VsdCA9IHRoaXMuX3ZhbHVlc0ZuKG51bGwsIHRoaXMuX2ZpbHRlcik7XG5cbiAgICAgIGlmIChpc09ic2VydmFibGUodmFsdWVzUmVzdWx0KSkge1xuICAgICAgICB0aGlzLl9wZW5kaW5nVmFsdWVzID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudmFsdWVzID0gdmFsdWVzUmVzdWx0O1xuICAgICAgICB0aGlzLl9pbml0KCk7XG4gICAgICAgIHRoaXMuX2luaXRpYWxpemVkVmFsdWVzID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9pbml0KCk7XG4gICAgICB0aGlzLl9pbml0aWFsaXplZFZhbHVlcyA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGxvYWRBc3luY1ZhbHVlcyhyZWxvYWQgPSB0cnVlKSB7XG4gICAgaWYgKHJlbG9hZCB8fCAoIXRoaXMubG9hZGluZyAmJiB0aGlzLmhhc1BlbmRpbmdWYWx1ZXMpKSB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuXG4gICAgICAodGhpcy5fdmFsdWVzRm4obnVsbCwgdGhpcy5fZmlsdGVyKSBhcyBPYnNlcnZhYmxlPHVua25vd24+KVxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgodmFsdWVzKSA9PiB7XG4gICAgICAgICAgdGhpcy52YWx1ZXMgPSB2YWx1ZXM7XG4gICAgICAgICAgdGhpcy5fcGVuZGluZ1ZhbHVlcyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuX2luaXQoKTtcbiAgICAgICAgICB0aGlzLl92YWxpZGF0ZU1vZGVsKCk7XG4gICAgICAgICAgdGhpcy5faW5pdGlhbGl6ZWRWYWx1ZXMgPSB0cnVlO1xuICAgICAgICB9KTtcblxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjbGVhcihkZWZhdWx0VmFsdWU6IHVua25vd24gPSB1bmRlZmluZWQpIHtcbiAgICBpZiAodGhpcy5pc1R5cGVSYW5nZSB8fCB0aGlzLmlzVHlwZURhdGVSYW5nZSB8fCB0aGlzLmlzVHlwZURhdGVUaW1lUmFuZ2UpIHtcbiAgICAgIGNvbnNvbGUud2FybihgXG4gICAgICAgIEZpbHRlciAke3RoaXMubmFtZX0gY2FuIG5vdCBiZSBjbGVhcmVkIHdpdGggLmNsZWFyKCkgbWV0aG9kIVxuICAgICAgICBVc2Ugc3BlY2lhbCAuY2xlYXJSYW5nZSgpIG9yIGNsZWFyRGF0ZVJhbmdlKCkgaW5zdGVhZC5cbiAgICAgIGApO1xuICAgIH1cblxuICAgIHRoaXMuX2NsZWFyJC5uZXh0KGRlZmF1bHRWYWx1ZSk7XG4gICAgdGhpcy5fY2xlYXJWYWx1ZShkZWZhdWx0VmFsdWUpO1xuICB9XG5cbiAgcHVibGljIGdldENoaXBzQ29udGVudCh0eXBlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuXG4gIHB1YmxpYyBkZXN0cm95KCkge1xuICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9zZXRNb2RlbCh2YWx1ZSkge1xuICAgIHRoaXMuX21vZGVsID0gdmFsdWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgX3BhcnNlQ29uZmlnKGl0ZW06IFQpIHtcbiAgICB0aGlzLm5hbWUgPSBpdGVtLm5hbWU7XG4gICAgdGhpcy5sYWJlbCA9IGl0ZW0ubGFiZWw7XG4gICAgdGhpcy5jaGlwTGFiZWwgPSBpdGVtLmNoaXBMYWJlbDtcblxuICAgIGlmICh0eXBlb2YgaXRlbS5kZWZhdWx0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzLmRlZmF1bHRWYWx1ZUZuID0gaXRlbS5kZWZhdWx0IGFzIElGaWx0ZXJEZWZhdWx0Rm47XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGVmYXVsdFZhbHVlID0gaXRlbS5kZWZhdWx0O1xuICAgIH1cblxuICAgIHRoaXMuY2hhbmdlID0gaXRlbS5jaGFuZ2U7XG4gICAgdGhpcy5pbml0ID0gaXRlbS5pbml0IHx8ICgoXykgPT4ge1xuICAgICAgLy9cbiAgICB9KTtcbiAgICB0aGlzLmhpZGUgPSBpdGVtLmhpZGU7XG4gICAgdGhpcy5zaG93Q2xlYXIgPSBpdGVtLmNsZWFyID8/IHRydWU7XG4gICAgdGhpcy5wZXJzaXN0YW5jZURpc2FibGVkID0gaXRlbS5kaXNhYmxlUGVyc2lzdCA/PyBmYWxzZTtcbiAgICB0aGlzLnF1ZXJ5UGFyYW1zRGlzYWJsZWQgPSBpdGVtLmRpc2FibGVRdWVyeVBhcmFtcyA/PyBmYWxzZTtcblxuICAgIGlmIChpc0Z1bmN0aW9uKGl0ZW0udmFsdWVzKSkge1xuICAgICAgdGhpcy5fdmFsdWVzRm4gPSBpdGVtLnZhbHVlcztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52YWx1ZXMgPSBpdGVtLnZhbHVlcztcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgX2luaXREZWZhdWx0TW9kZWwoKSB7XG4gICAgY29uc3QgbW9kZWwgPSB0aGlzLnBlcnNpc3RlZFZhbHVlID8/IHRoaXMuZGVmYXVsdFZhbHVlO1xuXG4gICAgaWYgKG1vZGVsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX3NldE1vZGVsKG1vZGVsKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgX2NsZWFyVmFsdWUoZGVmYXVsdFZhbHVlOiB1bmtub3duID0gdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5tb2RlbCA9IGRlZmF1bHRWYWx1ZSA/PyB1bmRlZmluZWQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgX2luaXQoKTtcbiAgcHJvdGVjdGVkIGFic3RyYWN0IF92YWxpZGF0ZU1vZGVsKCk7XG59XG4iXX0=
|
|
@@ -1,52 +1,52 @@
|
|
|
1
|
-
import { toString } from 'lodash-es';
|
|
2
|
-
import { BaseItem } from './base-item';
|
|
3
|
-
export class CheckboxItem extends BaseItem {
|
|
4
|
-
checked;
|
|
5
|
-
unchecked;
|
|
6
|
-
static create(config, filter) {
|
|
7
|
-
return new CheckboxItem(config, null, filter);
|
|
8
|
-
}
|
|
9
|
-
get isTypeCheckbox() {
|
|
10
|
-
return true;
|
|
11
|
-
}
|
|
12
|
-
get isChipVisible() {
|
|
13
|
-
return this.value === this.checked;
|
|
14
|
-
}
|
|
15
|
-
get value() {
|
|
16
|
-
const value = this.model ? this.checked : this.unchecked;
|
|
17
|
-
if (!value) {
|
|
18
|
-
return undefined;
|
|
19
|
-
}
|
|
20
|
-
return value;
|
|
21
|
-
}
|
|
22
|
-
get queryObject() {
|
|
23
|
-
const value = this.value;
|
|
24
|
-
const name = this.name;
|
|
25
|
-
const params = {};
|
|
26
|
-
params[name] = this.model ? value : undefined;
|
|
27
|
-
return params;
|
|
28
|
-
}
|
|
29
|
-
getChipsContent(type = null) {
|
|
30
|
-
return this.label;
|
|
31
|
-
}
|
|
32
|
-
_validateModel() {
|
|
33
|
-
//
|
|
34
|
-
}
|
|
35
|
-
_parseConfig(item) {
|
|
36
|
-
this.checked = item.checked;
|
|
37
|
-
this.unchecked = item.unchecked;
|
|
38
|
-
this.checked = item.checked ? toString(item.checked) : true;
|
|
39
|
-
this.unchecked = item.unchecked ? toString(item.unchecked) : false;
|
|
40
|
-
this.defaultValue = item.default === undefined ? this.unchecked : toString(this.defaultValue);
|
|
41
|
-
super._parseConfig(item);
|
|
42
|
-
}
|
|
43
|
-
_init() {
|
|
44
|
-
if (this.model === undefined) {
|
|
45
|
-
this._model = this.checked === this.defaultValue;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
_clearValue(defaultValue = undefined) {
|
|
49
|
-
this.model = defaultValue ?? false;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
1
|
+
import { toString } from 'lodash-es';
|
|
2
|
+
import { BaseItem } from './base-item';
|
|
3
|
+
export class CheckboxItem extends BaseItem {
|
|
4
|
+
checked;
|
|
5
|
+
unchecked;
|
|
6
|
+
static create(config, filter) {
|
|
7
|
+
return new CheckboxItem(config, null, filter);
|
|
8
|
+
}
|
|
9
|
+
get isTypeCheckbox() {
|
|
10
|
+
return true;
|
|
11
|
+
}
|
|
12
|
+
get isChipVisible() {
|
|
13
|
+
return this.value === this.checked;
|
|
14
|
+
}
|
|
15
|
+
get value() {
|
|
16
|
+
const value = this.model ? this.checked : this.unchecked;
|
|
17
|
+
if (!value) {
|
|
18
|
+
return undefined;
|
|
19
|
+
}
|
|
20
|
+
return value;
|
|
21
|
+
}
|
|
22
|
+
get queryObject() {
|
|
23
|
+
const value = this.value;
|
|
24
|
+
const name = this.name;
|
|
25
|
+
const params = {};
|
|
26
|
+
params[name] = this.model ? value : undefined;
|
|
27
|
+
return params;
|
|
28
|
+
}
|
|
29
|
+
getChipsContent(type = null) {
|
|
30
|
+
return this.label;
|
|
31
|
+
}
|
|
32
|
+
_validateModel() {
|
|
33
|
+
//
|
|
34
|
+
}
|
|
35
|
+
_parseConfig(item) {
|
|
36
|
+
this.checked = item.checked;
|
|
37
|
+
this.unchecked = item.unchecked;
|
|
38
|
+
this.checked = item.checked ? toString(item.checked) : true;
|
|
39
|
+
this.unchecked = item.unchecked ? toString(item.unchecked) : false;
|
|
40
|
+
this.defaultValue = item.default === undefined ? this.unchecked : toString(this.defaultValue);
|
|
41
|
+
super._parseConfig(item);
|
|
42
|
+
}
|
|
43
|
+
_init() {
|
|
44
|
+
if (this.model === undefined) {
|
|
45
|
+
this._model = this.checked === this.defaultValue;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
_clearValue(defaultValue = undefined) {
|
|
49
|
+
this.model = defaultValue ?? false;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
52
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtaXRlbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kZWxzL2l0ZW1zL2NoZWNrYm94LWl0ZW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUtyQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR3ZDLE1BQU0sT0FBTyxZQUFhLFNBQVEsUUFBbUM7SUFFNUQsT0FBTyxDQUFVO0lBQ2pCLFNBQVMsQ0FBVTtJQUVuQixNQUFNLENBQUMsTUFBTSxDQUFDLE1BQWlDLEVBQUUsTUFBdUI7UUFDN0UsT0FBTyxJQUFJLFlBQVksQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxJQUFXLGNBQWM7UUFDdkIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsSUFBVyxhQUFhO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLEtBQUssS0FBTSxJQUFZLENBQUMsT0FBTyxDQUFDO0lBQzlDLENBQUM7SUFFRCxJQUFXLEtBQUs7UUFDZCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBRXpELElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDVixPQUFPLFNBQVMsQ0FBQztTQUNsQjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELElBQVcsV0FBVztRQUNwQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3pCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDdkIsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBRWxCLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUU5QyxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRU0sZUFBZSxDQUFDLElBQUksR0FBRyxJQUFJO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLEtBQWUsQ0FBQztJQUM5QixDQUFDO0lBRVMsY0FBYztRQUN0QixFQUFFO0lBQ0osQ0FBQztJQUVTLFlBQVksQ0FBQyxJQUErQjtRQUNwRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBRWhDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzVELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ25FLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFOUYsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRVMsS0FBSztRQUNiLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTLEVBQUU7WUFDNUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxZQUFZLENBQUM7U0FDbEQ7SUFDSCxDQUFDO0lBRVMsV0FBVyxDQUFDLGVBQXdCLFNBQVM7UUFDckQsSUFBSSxDQUFDLEtBQUssR0FBRyxZQUFZLElBQUksS0FBSyxDQUFDO0lBQ3JDLENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHRvU3RyaW5nIH0gZnJvbSAnbG9kYXNoLWVzJztcblxuaW1wb3J0IHR5cGUgeyBGaWx0ZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2ZpbHRlci9maWx0ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IElGaWx0ZXJDb25maWdDaGVja2JveEl0ZW0gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2l0ZW1zL2NoZWNrYm94LmludGVyZmFjZSc7XG5cbmltcG9ydCB7IEJhc2VJdGVtIH0gZnJvbSAnLi9iYXNlLWl0ZW0nO1xuXG5cbmV4cG9ydCBjbGFzcyBDaGVja2JveEl0ZW0gZXh0ZW5kcyBCYXNlSXRlbTxJRmlsdGVyQ29uZmlnQ2hlY2tib3hJdGVtPiB7XG5cbiAgcHVibGljIGNoZWNrZWQ6IHVua25vd247XG4gIHB1YmxpYyB1bmNoZWNrZWQ6IHVua25vd247XG5cbiAgcHVibGljIHN0YXRpYyBjcmVhdGUoY29uZmlnOiBJRmlsdGVyQ29uZmlnQ2hlY2tib3hJdGVtLCBmaWx0ZXI6IEZpbHRlckNvbXBvbmVudCkge1xuICAgIHJldHVybiBuZXcgQ2hlY2tib3hJdGVtKGNvbmZpZywgbnVsbCwgZmlsdGVyKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNUeXBlQ2hlY2tib3goKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzQ2hpcFZpc2libGUoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWUgPT09ICh0aGlzIGFzIGFueSkuY2hlY2tlZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdmFsdWUoKSB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLm1vZGVsID8gdGhpcy5jaGVja2VkIDogdGhpcy51bmNoZWNrZWQ7XG5cbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcXVlcnlPYmplY3QoKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICBjb25zdCBuYW1lID0gdGhpcy5uYW1lO1xuICAgIGNvbnN0IHBhcmFtcyA9IHt9O1xuXG4gICAgcGFyYW1zW25hbWVdID0gdGhpcy5tb2RlbCA/IHZhbHVlIDogdW5kZWZpbmVkO1xuXG4gICAgcmV0dXJuIHBhcmFtcztcbiAgfVxuXG4gIHB1YmxpYyBnZXRDaGlwc0NvbnRlbnQodHlwZSA9IG51bGwpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmxhYmVsIGFzIHN0cmluZztcbiAgfVxuXG4gIHByb3RlY3RlZCBfdmFsaWRhdGVNb2RlbCgpIHtcbiAgICAvL1xuICB9XG5cbiAgcHJvdGVjdGVkIF9wYXJzZUNvbmZpZyhpdGVtOiBJRmlsdGVyQ29uZmlnQ2hlY2tib3hJdGVtKSB7XG4gICAgdGhpcy5jaGVja2VkID0gaXRlbS5jaGVja2VkO1xuICAgIHRoaXMudW5jaGVja2VkID0gaXRlbS51bmNoZWNrZWQ7XG5cbiAgICB0aGlzLmNoZWNrZWQgPSBpdGVtLmNoZWNrZWQgPyB0b1N0cmluZyhpdGVtLmNoZWNrZWQpIDogdHJ1ZTtcbiAgICB0aGlzLnVuY2hlY2tlZCA9IGl0ZW0udW5jaGVja2VkID8gdG9TdHJpbmcoaXRlbS51bmNoZWNrZWQpIDogZmFsc2U7XG4gICAgdGhpcy5kZWZhdWx0VmFsdWUgPSBpdGVtLmRlZmF1bHQgPT09IHVuZGVmaW5lZCA/IHRoaXMudW5jaGVja2VkIDogdG9TdHJpbmcodGhpcy5kZWZhdWx0VmFsdWUpO1xuXG4gICAgc3VwZXIuX3BhcnNlQ29uZmlnKGl0ZW0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9pbml0KCkge1xuICAgIGlmICh0aGlzLm1vZGVsID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuX21vZGVsID0gdGhpcy5jaGVja2VkID09PSB0aGlzLmRlZmF1bHRWYWx1ZTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgX2NsZWFyVmFsdWUoZGVmYXVsdFZhbHVlOiB1bmtub3duID0gdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5tb2RlbCA9IGRlZmF1bHRWYWx1ZSA/PyBmYWxzZTtcbiAgfVxuXG59XG4iXX0=
|