@huntsman-cancer-institute/input 16.0.1 → 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/date/date-base.d.ts +65 -65
- package/date/date-date-range.component.d.ts +32 -32
- package/date/date-date.component.d.ts +53 -53
- package/date/date-validator.d.ts +17 -17
- package/date/date.module.d.ts +16 -16
- package/dropdown/dropdown-index.d.ts +6 -6
- package/dropdown/dropdown-select-result.component.d.ts +23 -23
- package/dropdown/dropdown-select.component.d.ts +76 -76
- package/dropdown/dropdown.component.d.ts +40 -40
- package/dropdown/dropdown.module.d.ts +13 -13
- package/dropdown/dropdown.service.d.ts +51 -51
- package/dropdown/messages.d.ts +11 -11
- package/dropdown/select-item.d.ts +16 -16
- package/dropdown/template-dropdown.directive.d.ts +12 -12
- package/esm2022/date/date-base.mjs +114 -114
- package/esm2022/date/date-date-range.component.mjs +92 -92
- package/esm2022/date/date-date.component.mjs +189 -189
- package/esm2022/date/date-validator.mjs +40 -40
- package/esm2022/date/date.module.mjs +60 -60
- package/esm2022/dropdown/dropdown-index.mjs +5 -5
- package/esm2022/dropdown/dropdown-select-result.component.mjs +85 -85
- package/esm2022/dropdown/dropdown-select.component.mjs +360 -360
- package/esm2022/dropdown/dropdown.component.mjs +170 -170
- package/esm2022/dropdown/dropdown.module.mjs +50 -50
- package/esm2022/dropdown/dropdown.service.mjs +133 -133
- package/esm2022/dropdown/messages.mjs +9 -9
- package/esm2022/dropdown/select-item.mjs +11 -11
- package/esm2022/dropdown/template-dropdown.directive.mjs +26 -26
- package/esm2022/huntsman-cancer-institute-input.mjs +4 -4
- package/esm2022/index.mjs +19 -19
- package/esm2022/inline/inline.component.mjs +179 -179
- package/esm2022/inline/inline.module.mjs +28 -28
- package/esm2022/search/search.component.mjs +157 -157
- package/esm2022/search/search.module.mjs +32 -32
- package/esm2022/select/custom-combobox.component.mjs +531 -531
- package/esm2022/select/custom-multi-combobox.component.mjs +232 -232
- package/esm2022/select/md-multi-select.component.mjs +127 -127
- package/esm2022/select/md-select.component.mjs +107 -107
- package/esm2022/select/native-select.component.mjs +188 -188
- package/esm2022/select/select.module.mjs +83 -83
- package/fesm2022/huntsman-cancer-institute-input.mjs +2797 -2797
- package/fesm2022/huntsman-cancer-institute-input.mjs.map +1 -1
- package/index.d.ts +20 -20
- package/inline/inline.component.d.ts +66 -66
- package/inline/inline.module.d.ts +9 -9
- package/package.json +15 -7
- package/search/search.component.d.ts +42 -42
- package/search/search.module.d.ts +10 -10
- package/select/custom-combobox.component.d.ts +98 -98
- package/select/custom-multi-combobox.component.d.ts +50 -50
- package/select/md-multi-select.component.d.ts +32 -32
- package/select/md-select.component.d.ts +30 -30
- package/select/native-select.component.d.ts +37 -37
- package/select/select.module.d.ts +21 -21
|
@@ -1,194 +1,194 @@
|
|
|
1
|
-
import { Component, ElementRef, EventEmitter, Injector, Input, Output, ViewChild, } from "@angular/core";
|
|
2
|
-
import { UntypedFormControl, NG_VALUE_ACCESSOR, NgControl } from "@angular/forms";
|
|
3
|
-
import { debounceTime } from "rxjs/operators";
|
|
4
|
-
import { MatLegacySelect as MatSelect } from "@angular/material/legacy-select";
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@angular/common";
|
|
7
|
-
import * as i2 from "@angular/forms";
|
|
8
|
-
import * as i3 from "@angular/material/legacy-form-field";
|
|
9
|
-
import * as i4 from "@angular/material/legacy-select";
|
|
10
|
-
import * as i5 from "@angular/material/legacy-core";
|
|
11
|
-
import * as i6 from "@angular/material/legacy-input";
|
|
12
|
-
import * as i7 from "@angular/material/legacy-tooltip";
|
|
13
|
-
export class CustomMultiComboBoxComponent {
|
|
14
|
-
constructor(injector) {
|
|
15
|
-
this.injector = injector;
|
|
16
|
-
this.placeholder = "";
|
|
17
|
-
this.temporaryPlaceholder = false;
|
|
18
|
-
this.tooltip = "";
|
|
19
|
-
this.options = [];
|
|
20
|
-
this.includeLoadingOption = true;
|
|
21
|
-
this.loadedOptions = [];
|
|
22
|
-
this.isSelectOpen = false;
|
|
23
|
-
this.forceEmitObject = false;
|
|
24
|
-
this.appearance = "";
|
|
25
|
-
this.outerControl = new UntypedFormControl([]);
|
|
26
|
-
this.innerControl = new UntypedFormControl("");
|
|
27
|
-
this.ignoreInnerControlChanges = false;
|
|
28
|
-
this.noNgControl = false;
|
|
29
|
-
this.selectedListItems = [];
|
|
30
|
-
this.selectionChanged = new EventEmitter();
|
|
31
|
-
this.onChangeFn = () => { };
|
|
32
|
-
this.onTouchedFn = () => { };
|
|
33
|
-
}
|
|
34
|
-
ngAfterViewInit() {
|
|
35
|
-
let ngControl = this.injector.get(NgControl, null);
|
|
36
|
-
if (ngControl && ngControl.control) {
|
|
37
|
-
this.outerControl = ngControl.control;
|
|
38
|
-
setTimeout(() => {
|
|
39
|
-
this.loadOnlyCurrentValue();
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
else {
|
|
43
|
-
this.noNgControl = true;
|
|
44
|
-
}
|
|
45
|
-
this.innerControlSubscription = this.innerControl.valueChanges.pipe(debounceTime(300)).subscribe(() => {
|
|
46
|
-
if (!this.ignoreInnerControlChanges) {
|
|
47
|
-
this.filterOptions();
|
|
48
|
-
}
|
|
49
|
-
else {
|
|
50
|
-
this.ignoreInnerControlChanges = false;
|
|
51
|
-
}
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
ngOnChanges(changes) {
|
|
55
|
-
if (changes.options) {
|
|
56
|
-
let optionsChange = changes.options;
|
|
57
|
-
if (!optionsChange.currentValue) {
|
|
58
|
-
this.options = [];
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
this.loadOnlyCurrentValue();
|
|
62
|
-
}
|
|
63
|
-
writeValue(obj) {
|
|
64
|
-
this.loadOnlyCurrentValue();
|
|
65
|
-
}
|
|
66
|
-
registerOnChange(fn) {
|
|
67
|
-
this.onChangeFn = fn;
|
|
68
|
-
}
|
|
69
|
-
registerOnTouched(fn) {
|
|
70
|
-
this.onTouchedFn = fn;
|
|
71
|
-
}
|
|
72
|
-
setDisabledState(isDisabled) {
|
|
73
|
-
if (isDisabled) {
|
|
74
|
-
this.innerControl.disable();
|
|
75
|
-
this.selectElement.disabled = true;
|
|
76
|
-
}
|
|
77
|
-
else {
|
|
78
|
-
this.innerControl.enable();
|
|
79
|
-
this.selectElement.disabled = false;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
onInputFocus() {
|
|
83
|
-
this.selectElement.open();
|
|
84
|
-
}
|
|
85
|
-
loadOnlyCurrentValue() {
|
|
86
|
-
this.loadedOptions = [];
|
|
87
|
-
if (this.outerControl.value && this.outerControl.value.length) {
|
|
88
|
-
for (let opt of this.options) {
|
|
89
|
-
if (this.isOptInOuterValue(opt)) {
|
|
90
|
-
this.loadedOptions.push(opt);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
this.selectedListItems = this.loadedOptions;
|
|
95
|
-
let currentValueLabel = "";
|
|
96
|
-
for (let opt of this.loadedOptions) {
|
|
97
|
-
if (currentValueLabel) {
|
|
98
|
-
currentValueLabel += ", ";
|
|
99
|
-
}
|
|
100
|
-
currentValueLabel += this.displayField ? opt[this.displayField] : opt;
|
|
101
|
-
}
|
|
102
|
-
this.ignoreInnerControlChanges = true;
|
|
103
|
-
this.innerControl.setValue(currentValueLabel);
|
|
104
|
-
}
|
|
105
|
-
filterOptions(showAll = false) {
|
|
106
|
-
if (showAll || !this.innerControl.value) {
|
|
107
|
-
this.loadedOptions = this.options;
|
|
108
|
-
}
|
|
109
|
-
else {
|
|
110
|
-
let searchValue = this.innerControl.value.toLowerCase();
|
|
111
|
-
this.loadedOptions = this.options.filter((opt) => {
|
|
112
|
-
let optDisplay = (this.displayField ? opt[this.displayField] : opt).toLowerCase();
|
|
113
|
-
return optDisplay.includes(searchValue) || this.isOptInOuterValue(opt);
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
isOptInOuterValue(opt) {
|
|
118
|
-
let optValue = this.valueField ? opt[this.valueField] : opt;
|
|
119
|
-
if (this.forceEmitObject) {
|
|
120
|
-
for (let outerValOpt of this.outerControl.value) {
|
|
121
|
-
let outerOptValue = this.valueField ? outerValOpt[this.valueField] : outerValOpt;
|
|
122
|
-
if (optValue === outerOptValue) {
|
|
123
|
-
return true;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
else {
|
|
128
|
-
return this.outerControl.value.includes(optValue);
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
onOpenedChange(opened) {
|
|
132
|
-
this.isSelectOpen = opened;
|
|
133
|
-
if (opened) {
|
|
134
|
-
this.onTouchedFn();
|
|
135
|
-
this.inputElement.nativeElement.focus();
|
|
136
|
-
this.ignoreInnerControlChanges = true;
|
|
137
|
-
this.innerControl.setValue("");
|
|
138
|
-
setTimeout(() => {
|
|
139
|
-
this.filterOptions(true);
|
|
140
|
-
this.includeLoadingOption = false;
|
|
141
|
-
});
|
|
142
|
-
}
|
|
143
|
-
else {
|
|
144
|
-
setTimeout(() => {
|
|
145
|
-
this.loadOnlyCurrentValue();
|
|
146
|
-
this.includeLoadingOption = true;
|
|
147
|
-
});
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
selectOptions(options) {
|
|
151
|
-
let newVal = [];
|
|
152
|
-
for (let opt of options) {
|
|
153
|
-
if (opt) {
|
|
154
|
-
newVal.push((this.valueField && !this.forceEmitObject) ? opt[this.valueField] : opt);
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
if (this.noNgControl) {
|
|
158
|
-
this.outerControl.setValue(newVal);
|
|
159
|
-
}
|
|
160
|
-
this.onChangeFn(newVal);
|
|
161
|
-
this.selectionChanged.emit(newVal);
|
|
162
|
-
if (this.isSelectOpen) {
|
|
163
|
-
this.inputElement.nativeElement.focus();
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
compareByID(itemOne, itemTwo) {
|
|
167
|
-
if (!itemOne) {
|
|
168
|
-
return false;
|
|
169
|
-
}
|
|
170
|
-
else if (!itemTwo) {
|
|
171
|
-
return false;
|
|
172
|
-
}
|
|
173
|
-
else {
|
|
174
|
-
if (this.valueField) {
|
|
175
|
-
return itemOne[this.valueField] && itemTwo[this.valueField] && itemOne[this.valueField] === itemTwo[this.valueField];
|
|
176
|
-
}
|
|
177
|
-
else {
|
|
178
|
-
return itemOne === itemTwo;
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
ngOnDestroy() {
|
|
183
|
-
if (this.innerControlSubscription) {
|
|
184
|
-
this.innerControlSubscription.unsubscribe();
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
188
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
189
|
-
provide: NG_VALUE_ACCESSOR,
|
|
190
|
-
useExisting: CustomMultiComboBoxComponent,
|
|
191
|
-
multi: true,
|
|
1
|
+
import { Component, ElementRef, EventEmitter, Injector, Input, Output, ViewChild, } from "@angular/core";
|
|
2
|
+
import { UntypedFormControl, NG_VALUE_ACCESSOR, NgControl } from "@angular/forms";
|
|
3
|
+
import { debounceTime } from "rxjs/operators";
|
|
4
|
+
import { MatLegacySelect as MatSelect } from "@angular/material/legacy-select";
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/common";
|
|
7
|
+
import * as i2 from "@angular/forms";
|
|
8
|
+
import * as i3 from "@angular/material/legacy-form-field";
|
|
9
|
+
import * as i4 from "@angular/material/legacy-select";
|
|
10
|
+
import * as i5 from "@angular/material/legacy-core";
|
|
11
|
+
import * as i6 from "@angular/material/legacy-input";
|
|
12
|
+
import * as i7 from "@angular/material/legacy-tooltip";
|
|
13
|
+
export class CustomMultiComboBoxComponent {
|
|
14
|
+
constructor(injector) {
|
|
15
|
+
this.injector = injector;
|
|
16
|
+
this.placeholder = "";
|
|
17
|
+
this.temporaryPlaceholder = false;
|
|
18
|
+
this.tooltip = "";
|
|
19
|
+
this.options = [];
|
|
20
|
+
this.includeLoadingOption = true;
|
|
21
|
+
this.loadedOptions = [];
|
|
22
|
+
this.isSelectOpen = false;
|
|
23
|
+
this.forceEmitObject = false;
|
|
24
|
+
this.appearance = "";
|
|
25
|
+
this.outerControl = new UntypedFormControl([]);
|
|
26
|
+
this.innerControl = new UntypedFormControl("");
|
|
27
|
+
this.ignoreInnerControlChanges = false;
|
|
28
|
+
this.noNgControl = false;
|
|
29
|
+
this.selectedListItems = [];
|
|
30
|
+
this.selectionChanged = new EventEmitter();
|
|
31
|
+
this.onChangeFn = () => { };
|
|
32
|
+
this.onTouchedFn = () => { };
|
|
33
|
+
}
|
|
34
|
+
ngAfterViewInit() {
|
|
35
|
+
let ngControl = this.injector.get(NgControl, null);
|
|
36
|
+
if (ngControl && ngControl.control) {
|
|
37
|
+
this.outerControl = ngControl.control;
|
|
38
|
+
setTimeout(() => {
|
|
39
|
+
this.loadOnlyCurrentValue();
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
this.noNgControl = true;
|
|
44
|
+
}
|
|
45
|
+
this.innerControlSubscription = this.innerControl.valueChanges.pipe(debounceTime(300)).subscribe(() => {
|
|
46
|
+
if (!this.ignoreInnerControlChanges) {
|
|
47
|
+
this.filterOptions();
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
this.ignoreInnerControlChanges = false;
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
ngOnChanges(changes) {
|
|
55
|
+
if (changes.options) {
|
|
56
|
+
let optionsChange = changes.options;
|
|
57
|
+
if (!optionsChange.currentValue) {
|
|
58
|
+
this.options = [];
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
this.loadOnlyCurrentValue();
|
|
62
|
+
}
|
|
63
|
+
writeValue(obj) {
|
|
64
|
+
this.loadOnlyCurrentValue();
|
|
65
|
+
}
|
|
66
|
+
registerOnChange(fn) {
|
|
67
|
+
this.onChangeFn = fn;
|
|
68
|
+
}
|
|
69
|
+
registerOnTouched(fn) {
|
|
70
|
+
this.onTouchedFn = fn;
|
|
71
|
+
}
|
|
72
|
+
setDisabledState(isDisabled) {
|
|
73
|
+
if (isDisabled) {
|
|
74
|
+
this.innerControl.disable();
|
|
75
|
+
this.selectElement.disabled = true;
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
this.innerControl.enable();
|
|
79
|
+
this.selectElement.disabled = false;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
onInputFocus() {
|
|
83
|
+
this.selectElement.open();
|
|
84
|
+
}
|
|
85
|
+
loadOnlyCurrentValue() {
|
|
86
|
+
this.loadedOptions = [];
|
|
87
|
+
if (this.outerControl.value && this.outerControl.value.length) {
|
|
88
|
+
for (let opt of this.options) {
|
|
89
|
+
if (this.isOptInOuterValue(opt)) {
|
|
90
|
+
this.loadedOptions.push(opt);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
this.selectedListItems = this.loadedOptions;
|
|
95
|
+
let currentValueLabel = "";
|
|
96
|
+
for (let opt of this.loadedOptions) {
|
|
97
|
+
if (currentValueLabel) {
|
|
98
|
+
currentValueLabel += ", ";
|
|
99
|
+
}
|
|
100
|
+
currentValueLabel += this.displayField ? opt[this.displayField] : opt;
|
|
101
|
+
}
|
|
102
|
+
this.ignoreInnerControlChanges = true;
|
|
103
|
+
this.innerControl.setValue(currentValueLabel);
|
|
104
|
+
}
|
|
105
|
+
filterOptions(showAll = false) {
|
|
106
|
+
if (showAll || !this.innerControl.value) {
|
|
107
|
+
this.loadedOptions = this.options;
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
let searchValue = this.innerControl.value.toLowerCase();
|
|
111
|
+
this.loadedOptions = this.options.filter((opt) => {
|
|
112
|
+
let optDisplay = (this.displayField ? opt[this.displayField] : opt).toLowerCase();
|
|
113
|
+
return optDisplay.includes(searchValue) || this.isOptInOuterValue(opt);
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
isOptInOuterValue(opt) {
|
|
118
|
+
let optValue = this.valueField ? opt[this.valueField] : opt;
|
|
119
|
+
if (this.forceEmitObject) {
|
|
120
|
+
for (let outerValOpt of this.outerControl.value) {
|
|
121
|
+
let outerOptValue = this.valueField ? outerValOpt[this.valueField] : outerValOpt;
|
|
122
|
+
if (optValue === outerOptValue) {
|
|
123
|
+
return true;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
return this.outerControl.value.includes(optValue);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
onOpenedChange(opened) {
|
|
132
|
+
this.isSelectOpen = opened;
|
|
133
|
+
if (opened) {
|
|
134
|
+
this.onTouchedFn();
|
|
135
|
+
this.inputElement.nativeElement.focus();
|
|
136
|
+
this.ignoreInnerControlChanges = true;
|
|
137
|
+
this.innerControl.setValue("");
|
|
138
|
+
setTimeout(() => {
|
|
139
|
+
this.filterOptions(true);
|
|
140
|
+
this.includeLoadingOption = false;
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
setTimeout(() => {
|
|
145
|
+
this.loadOnlyCurrentValue();
|
|
146
|
+
this.includeLoadingOption = true;
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
selectOptions(options) {
|
|
151
|
+
let newVal = [];
|
|
152
|
+
for (let opt of options) {
|
|
153
|
+
if (opt) {
|
|
154
|
+
newVal.push((this.valueField && !this.forceEmitObject) ? opt[this.valueField] : opt);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
if (this.noNgControl) {
|
|
158
|
+
this.outerControl.setValue(newVal);
|
|
159
|
+
}
|
|
160
|
+
this.onChangeFn(newVal);
|
|
161
|
+
this.selectionChanged.emit(newVal);
|
|
162
|
+
if (this.isSelectOpen) {
|
|
163
|
+
this.inputElement.nativeElement.focus();
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
compareByID(itemOne, itemTwo) {
|
|
167
|
+
if (!itemOne) {
|
|
168
|
+
return false;
|
|
169
|
+
}
|
|
170
|
+
else if (!itemTwo) {
|
|
171
|
+
return false;
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
if (this.valueField) {
|
|
175
|
+
return itemOne[this.valueField] && itemTwo[this.valueField] && itemOne[this.valueField] === itemTwo[this.valueField];
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
return itemOne === itemTwo;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
ngOnDestroy() {
|
|
183
|
+
if (this.innerControlSubscription) {
|
|
184
|
+
this.innerControlSubscription.unsubscribe();
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: CustomMultiComboBoxComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
188
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: CustomMultiComboBoxComponent, selector: "hci-multi-combobox", inputs: { label: "label", placeholder: "placeholder", temporaryPlaceholder: "temporaryPlaceholder", tooltip: "tooltip", options: "options", valueField: "valueField", forceEmitObject: "forceEmitObject", displayField: "displayField", appearance: "appearance", initialFocus: "initialFocus", floatLabel: "floatLabel" }, outputs: { selectionChanged: "selectionChanged" }, providers: [{
|
|
189
|
+
provide: NG_VALUE_ACCESSOR,
|
|
190
|
+
useExisting: CustomMultiComboBoxComponent,
|
|
191
|
+
multi: true,
|
|
192
192
|
}], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["input"], descendants: true }, { propertyName: "selectElement", first: true, predicate: ["select"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
|
|
193
193
|
<div class="combobox-multi-container d-flex font-sm">
|
|
194
194
|
<mat-form-field [appearance]="appearance" [matTooltip]="this.tooltip" [floatLabel]="floatLabel">
|
|
@@ -218,10 +218,10 @@ export class CustomMultiComboBoxComponent {
|
|
|
218
218
|
</div>
|
|
219
219
|
</mat-form-field>
|
|
220
220
|
</div>
|
|
221
|
-
`, isInline: true, styles: [""], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3.MatLegacyFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLegacyLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatLegacySuffix, selector: "[matSuffix]" }, { kind: "component", type: i4.MatLegacySelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i5.MatLegacyOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i6.MatLegacyInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", exportAs: ["matInput"] }, { kind: "directive", type: i7.MatLegacyTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] }); }
|
|
222
|
-
}
|
|
223
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
224
|
-
type: Component,
|
|
221
|
+
`, isInline: true, styles: [""], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i3.MatLegacyFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i3.MatLegacyLabel, selector: "mat-label" }, { kind: "directive", type: i3.MatLegacySuffix, selector: "[matSuffix]" }, { kind: "component", type: i4.MatLegacySelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i5.MatLegacyOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i6.MatLegacyInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", exportAs: ["matInput"] }, { kind: "directive", type: i7.MatLegacyTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] }); }
|
|
222
|
+
}
|
|
223
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: CustomMultiComboBoxComponent, decorators: [{
|
|
224
|
+
type: Component,
|
|
225
225
|
args: [{ selector: "hci-multi-combobox", template: `
|
|
226
226
|
<div class="combobox-multi-container d-flex font-sm">
|
|
227
227
|
<mat-form-field [appearance]="appearance" [matTooltip]="this.tooltip" [floatLabel]="floatLabel">
|
|
@@ -251,40 +251,40 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
251
251
|
</div>
|
|
252
252
|
</mat-form-field>
|
|
253
253
|
</div>
|
|
254
|
-
`, providers: [{
|
|
255
|
-
provide: NG_VALUE_ACCESSOR,
|
|
256
|
-
useExisting: CustomMultiComboBoxComponent,
|
|
257
|
-
multi: true,
|
|
258
|
-
}] }]
|
|
259
|
-
}], ctorParameters:
|
|
260
|
-
type: ViewChild,
|
|
261
|
-
args: ["input", { static: false }]
|
|
262
|
-
}], selectElement: [{
|
|
263
|
-
type: ViewChild,
|
|
264
|
-
args: ["select", { static: false }]
|
|
265
|
-
}], label: [{
|
|
266
|
-
type: Input
|
|
267
|
-
}], placeholder: [{
|
|
268
|
-
type: Input
|
|
269
|
-
}], temporaryPlaceholder: [{
|
|
270
|
-
type: Input
|
|
271
|
-
}], tooltip: [{
|
|
272
|
-
type: Input
|
|
273
|
-
}], options: [{
|
|
274
|
-
type: Input
|
|
275
|
-
}], valueField: [{
|
|
276
|
-
type: Input
|
|
277
|
-
}], forceEmitObject: [{
|
|
278
|
-
type: Input
|
|
279
|
-
}], displayField: [{
|
|
280
|
-
type: Input
|
|
281
|
-
}], appearance: [{
|
|
282
|
-
type: Input
|
|
283
|
-
}], initialFocus: [{
|
|
284
|
-
type: Input
|
|
285
|
-
}], floatLabel: [{
|
|
286
|
-
type: Input
|
|
287
|
-
}], selectionChanged: [{
|
|
288
|
-
type: Output
|
|
289
|
-
}] } });
|
|
290
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLW11bHRpLWNvbWJvYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2lucHV0L3NyYy9zZWxlY3QvY3VzdG9tLW11bHRpLWNvbWJvYm94LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUFFLFVBQVUsRUFDckIsWUFBWSxFQUNaLFFBQVEsRUFDUixLQUFLLEVBR0wsTUFBTSxFQUNTLFNBQVMsR0FDekIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QyxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2SCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFDLGVBQWUsSUFBSSxTQUFTLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7Ozs7O0FBMkM3RSxNQUFNLE9BQU8sNEJBQTRCO0lBaUN2QyxZQUFvQixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBNUJ0QixnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUN6Qix5QkFBb0IsR0FBWSxLQUFLLENBQUM7UUFDdEMsWUFBTyxHQUFXLEVBQUUsQ0FBQztRQUVyQixZQUFPLEdBQVUsRUFBRSxDQUFDO1FBQzdCLHlCQUFvQixHQUFZLElBQUksQ0FBQztRQUNyQyxrQkFBYSxHQUFVLEVBQUUsQ0FBQztRQUN6QixpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUdyQixvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUVsQyxlQUFVLEdBQVcsRUFBRSxDQUFDO1FBSWpDLGlCQUFZLEdBQW9CLElBQUksa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDM0QsaUJBQVksR0FBdUIsSUFBSSxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM3RCw4QkFBeUIsR0FBWSxLQUFLLENBQUM7UUFF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QkFDVSxZQUFZO3NCQUEzQixLQUFLO2dCQUNVLFVBQVU7c0JBQXpCLEtBQUs7Z0JBU0ksZ0JBQWdCO3NCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENvbXBvbmVudCwgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5qZWN0b3IsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPdXRwdXQsIFNpbXBsZUNoYW5nZSxcclxuICBTaW1wbGVDaGFuZ2VzLCBWaWV3Q2hpbGQsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBVbnR5cGVkRm9ybUNvbnRyb2wsIE5HX1ZBTFVFX0FDQ0VTU09SLCBOZ0NvbnRyb2x9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHtkZWJvdW5jZVRpbWV9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQge01hdExlZ2FjeVNlbGVjdCBhcyBNYXRTZWxlY3R9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktc2VsZWN0XCI7XHJcbmltcG9ydCB7TGVnYWN5RmxvYXRMYWJlbFR5cGUgYXMgRmxvYXRMYWJlbFR5cGV9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9sZWdhY3ktZm9ybS1maWVsZFwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiaGNpLW11bHRpLWNvbWJvYm94XCIsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxkaXYgY2xhc3M9XCJjb21ib2JveC1tdWx0aS1jb250YWluZXIgZC1mbGV4IGZvbnQtc21cIj5cclxuICAgICAgPG1hdC1mb3JtLWZpZWxkIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2VcIiBbbWF0VG9vbHRpcF09XCJ0aGlzLnRvb2x0aXBcIiBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbCAqbmdJZj1cImxhYmVsICE9PSB1bmRlZmluZWRcIj57eyBsYWJlbCB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxtYXQtbGFiZWwgKm5nSWY9XCJsYWJlbCA9PT0gdW5kZWZpbmVkXCI+XHJcbiAgICAgICAgICB7eyB0ZW1wb3JhcnlQbGFjZWhvbGRlciA/IChvdXRlckNvbnRyb2wudmFsdWUgJiYgb3V0ZXJDb250cm9sLnZhbHVlLmxlbmd0aCA/ICcnIDogcGxhY2Vob2xkZXIpIDogcGxhY2Vob2xkZXIgfX1cclxuICAgICAgICA8L21hdC1sYWJlbD5cclxuICAgICAgICA8aW5wdXQgI2lucHV0IG1hdElucHV0IG5hbWU9XCJjdXN0b21NdWx0aUNvbWJvQm94RmlsdGVyXCIgY2xhc3M9XCJlbGxpcHNpc1wiXHJcbiAgICAgICAgICAgICAgIChmb2N1cyk9XCJ0aGlzLm9uSW5wdXRGb2N1cygpXCJcclxuICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInRlbXBvcmFyeVBsYWNlaG9sZGVyID8gKG91dGVyQ29udHJvbC52YWx1ZSAmJiBvdXRlckNvbnRyb2wudmFsdWUubGVuZ3RoID8gJycgOiBwbGFjZWhvbGRlcikgOiBwbGFjZWhvbGRlclwiXHJcbiAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJ0aGlzLmlubmVyQ29udHJvbFwiXHJcbiAgICAgICAgICAgICAgIFthdHRyLmNka0ZvY3VzSW5pdGlhbF09XCJpbml0aWFsRm9jdXMgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBpbml0aWFsRm9jdXNcIj5cclxuICAgICAgICA8ZGl2IG1hdFN1ZmZpeCBjbGFzcz1cImhjaS1jb21ib2JveC1hcnJvdy13cmFwcGVyXCI+XHJcbiAgICAgICAgICA8bWF0LXNlbGVjdFxyXG4gICAgICAgICAgICAjc2VsZWN0IFttdWx0aXBsZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJ0aGlzLnNlbGVjdE9wdGlvbnMoJGV2ZW50LnZhbHVlKVwiXHJcbiAgICAgICAgICAgIChvcGVuZWRDaGFuZ2UpPVwidGhpcy5vbk9wZW5lZENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZExpc3RJdGVtc1wiXHJcbiAgICAgICAgICAgIFtjb21wYXJlV2l0aF09XCJjb21wYXJlQnlJRFwiPlxyXG4gICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0IG9mIHRoaXMubG9hZGVkT3B0aW9uc1wiIFt2YWx1ZV09XCJvcHRcIj5cclxuICAgICAgICAgICAgICB7e3RoaXMuZGlzcGxheUZpZWxkID8gb3B0W3RoaXMuZGlzcGxheUZpZWxkXSA6IG9wdH19XHJcbiAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nSWY9XCJ0aGlzLmluY2x1ZGVMb2FkaW5nT3B0aW9uXCI+TG9hZGluZy4uLjwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nSWY9XCIhdGhpcy5pbmNsdWRlTG9hZGluZ09wdGlvbiAmJiAhdGhpcy5vcHRpb25zLmxlbmd0aFwiPk5vbmU8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8L2Rpdj5cclxuICBgLFxyXG4gIHByb3ZpZGVyczogW3tcclxuICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgdXNlRXhpc3Rpbmc6IEN1c3RvbU11bHRpQ29tYm9Cb3hDb21wb25lbnQsXHJcbiAgICBtdWx0aTogdHJ1ZSxcclxuICB9XSxcclxuICBzdHlsZXM6IFtgYF0sXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgQ3VzdG9tTXVsdGlDb21ib0JveENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcbiAgQFZpZXdDaGlsZChcImlucHV0XCIsIHsgc3RhdGljOiBmYWxzZX0pIGlucHV0RWxlbWVudDogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKFwic2VsZWN0XCIsIHsgc3RhdGljOiBmYWxzZX0pIHNlbGVjdEVsZW1lbnQ6IE1hdFNlbGVjdDtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIGxhYmVsOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSBcIlwiO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyB0ZW1wb3JhcnlQbGFjZWhvbGRlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyB0b29sdGlwOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgb3B0aW9uczogYW55W10gPSBbXTtcclxuICBwdWJsaWMgaW5jbHVkZUxvYWRpbmdPcHRpb246IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHB1YmxpYyBsb2FkZWRPcHRpb25zOiBhbnlbXSA9IFtdO1xyXG4gIHByaXZhdGUgaXNTZWxlY3RPcGVuOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIHByaXZhdGUgdmFsdWVGaWVsZDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHByaXZhdGUgZm9yY2VFbWl0T2JqZWN0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcHVibGljIGRpc3BsYXlGaWVsZDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBhcHBlYXJhbmNlOiBzdHJpbmcgPSBcIlwiO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpbml0aWFsRm9jdXM6IHN0cmluZztcclxuICBASW5wdXQoKSBwdWJsaWMgZmxvYXRMYWJlbDogRmxvYXRMYWJlbFR5cGU7XHJcblxyXG4gIHB1YmxpYyBvdXRlckNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woW10pO1xyXG4gIHB1YmxpYyBpbm5lckNvbnRyb2w6IFVudHlwZWRGb3JtQ29udHJvbCA9IG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woXCJcIik7XHJcbiAgcHJpdmF0ZSBpZ25vcmVJbm5lckNvbnRyb2xDaGFuZ2VzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBpbm5lckNvbnRyb2xTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICBwcml2YXRlIG5vTmdDb250cm9sOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNlbGVjdGVkTGlzdEl0ZW1zOiBhbnlbXSA9IFtdO1xyXG5cclxuICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlZDogRXZlbnRFbWl0dGVyPGFueVtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XHJcblxyXG4gIHByaXZhdGUgb25DaGFuZ2VGbjogKHZhbDogYW55KSA9PiB2b2lkID0gKCkgPT4ge307XHJcbiAgcHJpdmF0ZSBvblRvdWNoZWRGbjogKCkgPT4gdm9pZCA9ICgpID0+IHt9O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgbGV0IG5nQ29udHJvbDogTmdDb250cm9sID0gdGhpcy5pbmplY3Rvci5nZXQoTmdDb250cm9sLCBudWxsKTtcclxuICAgIGlmIChuZ0NvbnRyb2wgJiYgbmdDb250cm9sLmNvbnRyb2wpIHtcclxuICAgICAgdGhpcy5vdXRlckNvbnRyb2wgPSBuZ0NvbnRyb2wuY29udHJvbDtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2FkT25seUN1cnJlbnRWYWx1ZSgpO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubm9OZ0NvbnRyb2wgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaW5uZXJDb250cm9sU3Vic2NyaXB0aW9uID0gdGhpcy5pbm5lckNvbnRyb2wudmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDMwMCkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIGlmICghdGhpcy5pZ25vcmVJbm5lckNvbnRyb2xDaGFuZ2VzKSB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJPcHRpb25zKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5pZ25vcmVJbm5lckNvbnRyb2xDaGFuZ2VzID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgaWYgKGNoYW5nZXMub3B0aW9ucykge1xyXG4gICAgICBsZXQgb3B0aW9uc0NoYW5nZTogU2ltcGxlQ2hhbmdlID0gY2hhbmdlcy5vcHRpb25zO1xyXG4gICAgICBpZiAoIW9wdGlvbnNDaGFuZ2UuY3VycmVudFZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zID0gW107XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmxvYWRPbmx5Q3VycmVudFZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKG9iajogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLmxvYWRPbmx5Q3VycmVudFZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2VGbiA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoZWRGbiA9IGZuO1xyXG4gIH1cclxuXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBpZiAoaXNEaXNhYmxlZCkge1xyXG4gICAgICB0aGlzLmlubmVyQ29udHJvbC5kaXNhYmxlKCk7XHJcbiAgICAgIHRoaXMuc2VsZWN0RWxlbWVudC5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmlubmVyQ29udHJvbC5lbmFibGUoKTtcclxuICAgICAgdGhpcy5zZWxlY3RFbGVtZW50LmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25JbnB1dEZvY3VzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RFbGVtZW50Lm9wZW4oKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZE9ubHlDdXJyZW50VmFsdWUoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvYWRlZE9wdGlvbnMgPSBbXTtcclxuICAgIGlmICh0aGlzLm91dGVyQ29udHJvbC52YWx1ZSAmJiB0aGlzLm91dGVyQ29udHJvbC52YWx1ZS5sZW5ndGgpIHtcclxuICAgICAgZm9yIChsZXQgb3B0IG9mIHRoaXMub3B0aW9ucykge1xyXG4gICAgICAgIGlmICh0aGlzLmlzT3B0SW5PdXRlclZhbHVlKG9wdCkpIHtcclxuICAgICAgICAgIHRoaXMubG9hZGVkT3B0aW9ucy5wdXNoKG9wdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnNlbGVjdGVkTGlzdEl0ZW1zID0gdGhpcy5sb2FkZWRPcHRpb25zO1xyXG5cclxuXHJcbiAgICBsZXQgY3VycmVudFZhbHVlTGFiZWw6IHN0cmluZyA9IFwiXCI7XHJcbiAgICBmb3IgKGxldCBvcHQgb2YgdGhpcy5sb2FkZWRPcHRpb25zKSB7XHJcbiAgICAgIGlmIChjdXJyZW50VmFsdWVMYWJlbCkge1xyXG4gICAgICAgIGN1cnJlbnRWYWx1ZUxhYmVsICs9IFwiLCBcIjtcclxuICAgICAgfVxyXG4gICAgICBjdXJyZW50VmFsdWVMYWJlbCArPSB0aGlzLmRpc3BsYXlGaWVsZCA/IG9wdFt0aGlzLmRpc3BsYXlGaWVsZF0gOiBvcHQ7XHJcbiAgICB9XHJcbiAgICB0aGlzLmlnbm9yZUlubmVyQ29udHJvbENoYW5nZXMgPSB0cnVlO1xyXG4gICAgdGhpcy5pbm5lckNvbnRyb2wuc2V0VmFsdWUoY3VycmVudFZhbHVlTGFiZWwpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmaWx0ZXJPcHRpb25zKHNob3dBbGw6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xyXG4gICAgaWYgKHNob3dBbGwgfHwgIXRoaXMuaW5uZXJDb250cm9sLnZhbHVlKSB7XHJcbiAgICAgIHRoaXMubG9hZGVkT3B0aW9ucyA9IHRoaXMub3B0aW9ucztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBzZWFyY2hWYWx1ZTogc3RyaW5nID0gdGhpcy5pbm5lckNvbnRyb2wudmFsdWUudG9Mb3dlckNhc2UoKTtcclxuICAgICAgdGhpcy5sb2FkZWRPcHRpb25zID0gdGhpcy5vcHRpb25zLmZpbHRlcigob3B0OiBhbnkpID0+IHtcclxuICAgICAgICBsZXQgb3B0RGlzcGxheTogc3RyaW5nID0gKHRoaXMuZGlzcGxheUZpZWxkID8gb3B0W3RoaXMuZGlzcGxheUZpZWxkXSA6IG9wdCkudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICByZXR1cm4gb3B0RGlzcGxheS5pbmNsdWRlcyhzZWFyY2hWYWx1ZSkgfHwgdGhpcy5pc09wdEluT3V0ZXJWYWx1ZShvcHQpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNPcHRJbk91dGVyVmFsdWUob3B0OiBhbnkpOiBib29sZWFuIHtcclxuICAgIGxldCBvcHRWYWx1ZTogYW55ID0gdGhpcy52YWx1ZUZpZWxkID8gb3B0W3RoaXMudmFsdWVGaWVsZF0gOiBvcHQ7XHJcbiAgICBpZiAodGhpcy5mb3JjZUVtaXRPYmplY3QpIHtcclxuICAgICAgZm9yIChsZXQgb3V0ZXJWYWxPcHQgb2YgdGhpcy5vdXRlckNvbnRyb2wudmFsdWUpIHtcclxuICAgICAgICBsZXQgb3V0ZXJPcHRWYWx1ZTogYW55ID0gdGhpcy52YWx1ZUZpZWxkID8gb3V0ZXJWYWxPcHRbdGhpcy52YWx1ZUZpZWxkXSA6IG91dGVyVmFsT3B0O1xyXG4gICAgICAgIGlmIChvcHRWYWx1ZSA9PT0gb3V0ZXJPcHRWYWx1ZSkge1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5vdXRlckNvbnRyb2wudmFsdWUuaW5jbHVkZXMob3B0VmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uT3BlbmVkQ2hhbmdlKG9wZW5lZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5pc1NlbGVjdE9wZW4gPSBvcGVuZWQ7XHJcbiAgICBpZiAob3BlbmVkKSB7XHJcbiAgICAgIHRoaXMub25Ub3VjaGVkRm4oKTtcclxuXHJcbiAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgICAgdGhpcy5pZ25vcmVJbm5lckNvbnRyb2xDaGFuZ2VzID0gdHJ1ZTtcclxuICAgICAgdGhpcy5pbm5lckNvbnRyb2wuc2V0VmFsdWUoXCJcIik7XHJcblxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmZpbHRlck9wdGlvbnModHJ1ZSk7XHJcbiAgICAgICAgdGhpcy5pbmNsdWRlTG9hZGluZ09wdGlvbiA9IGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZE9ubHlDdXJyZW50VmFsdWUoKTtcclxuICAgICAgICB0aGlzLmluY2x1ZGVMb2FkaW5nT3B0aW9uID0gdHJ1ZTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2VsZWN0T3B0aW9ucyhvcHRpb25zOiBhbnlbXSk6IHZvaWQge1xyXG4gICAgbGV0IG5ld1ZhbDogYW55W10gPSBbXTtcclxuICAgIGZvciAobGV0IG9wdCBvZiBvcHRpb25zKSB7XHJcbiAgICAgIGlmIChvcHQpIHtcclxuICAgICAgICBuZXdWYWwucHVzaCgodGhpcy52YWx1ZUZpZWxkICYmICF0aGlzLmZvcmNlRW1pdE9iamVjdCkgPyBvcHRbdGhpcy52YWx1ZUZpZWxkXSA6IG9wdCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0aGlzLm5vTmdDb250cm9sKSB7XHJcbiAgICAgIHRoaXMub3V0ZXJDb250cm9sLnNldFZhbHVlKG5ld1ZhbCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5vbkNoYW5nZUZuKG5ld1ZhbCk7XHJcbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZWQuZW1pdChuZXdWYWwpO1xyXG5cclxuICAgIGlmICh0aGlzLmlzU2VsZWN0T3Blbikge1xyXG4gICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb21wYXJlQnlJRChpdGVtT25lLCBpdGVtVHdvKSB7XHJcbiAgICBpZighaXRlbU9uZSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9IGVsc2UgaWYgKCFpdGVtVHdvKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmKHRoaXMudmFsdWVGaWVsZCkge1xyXG4gICAgICAgIHJldHVybiBpdGVtT25lW3RoaXMudmFsdWVGaWVsZF0gJiYgaXRlbVR3b1t0aGlzLnZhbHVlRmllbGRdICYmIGl0ZW1PbmVbdGhpcy52YWx1ZUZpZWxkXSA9PT0gaXRlbVR3b1t0aGlzLnZhbHVlRmllbGRdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiAgaXRlbU9uZSA9PT0gaXRlbVR3bztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBpZih0aGlzLmlubmVyQ29udHJvbFN1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLmlubmVyQ29udHJvbFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuIl19
|
|
254
|
+
`, providers: [{
|
|
255
|
+
provide: NG_VALUE_ACCESSOR,
|
|
256
|
+
useExisting: CustomMultiComboBoxComponent,
|
|
257
|
+
multi: true,
|
|
258
|
+
}] }]
|
|
259
|
+
}], ctorParameters: () => [{ type: i0.Injector }], propDecorators: { inputElement: [{
|
|
260
|
+
type: ViewChild,
|
|
261
|
+
args: ["input", { static: false }]
|
|
262
|
+
}], selectElement: [{
|
|
263
|
+
type: ViewChild,
|
|
264
|
+
args: ["select", { static: false }]
|
|
265
|
+
}], label: [{
|
|
266
|
+
type: Input
|
|
267
|
+
}], placeholder: [{
|
|
268
|
+
type: Input
|
|
269
|
+
}], temporaryPlaceholder: [{
|
|
270
|
+
type: Input
|
|
271
|
+
}], tooltip: [{
|
|
272
|
+
type: Input
|
|
273
|
+
}], options: [{
|
|
274
|
+
type: Input
|
|
275
|
+
}], valueField: [{
|
|
276
|
+
type: Input
|
|
277
|
+
}], forceEmitObject: [{
|
|
278
|
+
type: Input
|
|
279
|
+
}], displayField: [{
|
|
280
|
+
type: Input
|
|
281
|
+
}], appearance: [{
|
|
282
|
+
type: Input
|
|
283
|
+
}], initialFocus: [{
|
|
284
|
+
type: Input
|
|
285
|
+
}], floatLabel: [{
|
|
286
|
+
type: Input
|
|
287
|
+
}], selectionChanged: [{
|
|
288
|
+
type: Output
|
|
289
|
+
}] } });
|
|
290
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLW11bHRpLWNvbWJvYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2lucHV0L3NyYy9zZWxlY3QvY3VzdG9tLW11bHRpLWNvbWJvYm94LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUFFLFVBQVUsRUFDckIsWUFBWSxFQUNaLFFBQVEsRUFDUixLQUFLLEVBR0wsTUFBTSxFQUNTLFNBQVMsR0FDekIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QyxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2SCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFDLGVBQWUsSUFBSSxTQUFTLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQzs7Ozs7Ozs7O0FBMkM3RSxNQUFNLE9BQU8sNEJBQTRCO0lBaUN2QyxZQUFvQixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBNUJ0QixnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUN6Qix5QkFBb0IsR0FBWSxLQUFLLENBQUM7UUFDdEMsWUFBTyxHQUFXLEVBQUUsQ0FBQztRQUVyQixZQUFPLEdBQVUsRUFBRSxDQUFDO1FBQzdCLHlCQUFvQixHQUFZLElBQUksQ0FBQztRQUNyQyxrQkFBYSxHQUFVLEVBQUUsQ0FBQztRQUN6QixpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUdyQixvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUVsQyxlQUFVLEdBQVcsRUFBRSxDQUFDO1FBSWpDLGlCQUFZLEdBQW9CLElBQUksa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDM0QsaUJBQVksR0FBdUIsSUFBSSxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM3RCw4QkFBeUIsR0FBWSxLQUFLLENBQUM7UUFF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T0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBQztnQkFDRyxhQUFhO3NCQUFuRCxTQUFTO3VCQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUM7Z0JBRXJCLEtBQUs7c0JBQXBCLEtBQUs7Z0JBQ1UsV0FBVztzQkFBMUIsS0FBSztnQkFDVSxvQkFBb0I7c0JBQW5DLEtBQUs7Z0JBQ1UsT0FBTztzQkFBdEIsS0FBSztnQkFFVSxPQUFPO3NCQUF0QixLQUFLO2dCQUtXLFVBQVU7c0JBQTFCLEtBQUs7Z0JBQ1csZUFBZTtzQkFBL0IsS0FBSztnQkFDVSxZQUFZO3NCQUEzQixLQUFLO2dCQUNVLFVBQVU7c0JBQXpCLEtBQUs7Z0JBQ1UsWUFBWTtzQkFBM0IsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLO2dCQVNJLGdCQUFnQjtzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3SW5pdCxcclxuICBDb21wb25lbnQsIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEluamVjdG9yLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT3V0cHV0LCBTaW1wbGVDaGFuZ2UsXHJcbiAgU2ltcGxlQ2hhbmdlcywgVmlld0NoaWxkLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7QWJzdHJhY3RDb250cm9sLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVW50eXBlZEZvcm1Db250cm9sLCBOR19WQUxVRV9BQ0NFU1NPUiwgTmdDb250cm9sfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7ZGVib3VuY2VUaW1lfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHtNYXRMZWdhY3lTZWxlY3QgYXMgTWF0U2VsZWN0fSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LXNlbGVjdFwiO1xyXG5pbXBvcnQge0xlZ2FjeUZsb2F0TGFiZWxUeXBlIGFzIEZsb2F0TGFiZWxUeXBlfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvbGVnYWN5LWZvcm0tZmllbGRcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImhjaS1tdWx0aS1jb21ib2JveFwiLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZGl2IGNsYXNzPVwiY29tYm9ib3gtbXVsdGktY29udGFpbmVyIGQtZmxleCBmb250LXNtXCI+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZCBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlXCIgW21hdFRvb2x0aXBdPVwidGhpcy50b29sdGlwXCIgW2Zsb2F0TGFiZWxdPVwiZmxvYXRMYWJlbFwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWwgKm5nSWY9XCJsYWJlbCAhPT0gdW5kZWZpbmVkXCI+e3sgbGFiZWwgfX08L21hdC1sYWJlbD5cclxuICAgICAgICA8bWF0LWxhYmVsICpuZ0lmPVwibGFiZWwgPT09IHVuZGVmaW5lZFwiPlxyXG4gICAgICAgICAge3sgdGVtcG9yYXJ5UGxhY2Vob2xkZXIgPyAob3V0ZXJDb250cm9sLnZhbHVlICYmIG91dGVyQ29udHJvbC52YWx1ZS5sZW5ndGggPyAnJyA6IHBsYWNlaG9sZGVyKSA6IHBsYWNlaG9sZGVyIH19XHJcbiAgICAgICAgPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPGlucHV0ICNpbnB1dCBtYXRJbnB1dCBuYW1lPVwiY3VzdG9tTXVsdGlDb21ib0JveEZpbHRlclwiIGNsYXNzPVwiZWxsaXBzaXNcIlxyXG4gICAgICAgICAgICAgICAoZm9jdXMpPVwidGhpcy5vbklucHV0Rm9jdXMoKVwiXHJcbiAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJ0ZW1wb3JhcnlQbGFjZWhvbGRlciA/IChvdXRlckNvbnRyb2wudmFsdWUgJiYgb3V0ZXJDb250cm9sLnZhbHVlLmxlbmd0aCA/ICcnIDogcGxhY2Vob2xkZXIpIDogcGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwidGhpcy5pbm5lckNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICBbYXR0ci5jZGtGb2N1c0luaXRpYWxdPVwiaW5pdGlhbEZvY3VzID09PSB1bmRlZmluZWQgPyBudWxsIDogaW5pdGlhbEZvY3VzXCI+XHJcbiAgICAgICAgPGRpdiBtYXRTdWZmaXggY2xhc3M9XCJoY2ktY29tYm9ib3gtYXJyb3ctd3JhcHBlclwiPlxyXG4gICAgICAgICAgPG1hdC1zZWxlY3RcclxuICAgICAgICAgICAgI3NlbGVjdCBbbXVsdGlwbGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwidGhpcy5zZWxlY3RPcHRpb25zKCRldmVudC52YWx1ZSlcIlxyXG4gICAgICAgICAgICAob3BlbmVkQ2hhbmdlKT1cInRoaXMub25PcGVuZWRDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRMaXN0SXRlbXNcIlxyXG4gICAgICAgICAgICBbY29tcGFyZVdpdGhdPVwiY29tcGFyZUJ5SURcIj5cclxuICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdCBvZiB0aGlzLmxvYWRlZE9wdGlvbnNcIiBbdmFsdWVdPVwib3B0XCI+XHJcbiAgICAgICAgICAgICAge3t0aGlzLmRpc3BsYXlGaWVsZCA/IG9wdFt0aGlzLmRpc3BsYXlGaWVsZF0gOiBvcHR9fVxyXG4gICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0lmPVwidGhpcy5pbmNsdWRlTG9hZGluZ09wdGlvblwiPkxvYWRpbmcuLi48L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0lmPVwiIXRoaXMuaW5jbHVkZUxvYWRpbmdPcHRpb24gJiYgIXRoaXMub3B0aW9ucy5sZW5ndGhcIj5Ob25lPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9kaXY+XHJcbiAgYCxcclxuICBwcm92aWRlcnM6IFt7XHJcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgIHVzZUV4aXN0aW5nOiBDdXN0b21NdWx0aUNvbWJvQm94Q29tcG9uZW50LFxyXG4gICAgbXVsdGk6IHRydWUsXHJcbiAgfV0sXHJcbiAgc3R5bGVzOiBbYGBdLFxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIEN1c3RvbU11bHRpQ29tYm9Cb3hDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG4gIEBWaWV3Q2hpbGQoXCJpbnB1dFwiLCB7IHN0YXRpYzogZmFsc2V9KSBpbnB1dEVsZW1lbnQ6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZChcInNlbGVjdFwiLCB7IHN0YXRpYzogZmFsc2V9KSBzZWxlY3RFbGVtZW50OiBNYXRTZWxlY3Q7XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBsYWJlbDogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBwbGFjZWhvbGRlcjogc3RyaW5nID0gXCJcIjtcclxuICBASW5wdXQoKSBwdWJsaWMgdGVtcG9yYXJ5UGxhY2Vob2xkZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgdG9vbHRpcDogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIG9wdGlvbnM6IGFueVtdID0gW107XHJcbiAgcHVibGljIGluY2x1ZGVMb2FkaW5nT3B0aW9uOiBib29sZWFuID0gdHJ1ZTtcclxuICBwdWJsaWMgbG9hZGVkT3B0aW9uczogYW55W10gPSBbXTtcclxuICBwcml2YXRlIGlzU2VsZWN0T3BlbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBwcml2YXRlIHZhbHVlRmllbGQ6IHN0cmluZztcclxuICBASW5wdXQoKSBwcml2YXRlIGZvcmNlRW1pdE9iamVjdDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBkaXNwbGF5RmllbGQ6IHN0cmluZztcclxuICBASW5wdXQoKSBwdWJsaWMgYXBwZWFyYW5jZTogc3RyaW5nID0gXCJcIjtcclxuICBASW5wdXQoKSBwdWJsaWMgaW5pdGlhbEZvY3VzOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcHVibGljIGZsb2F0TGFiZWw6IEZsb2F0TGFiZWxUeXBlO1xyXG5cclxuICBwdWJsaWMgb3V0ZXJDb250cm9sOiBBYnN0cmFjdENvbnRyb2wgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKFtdKTtcclxuICBwdWJsaWMgaW5uZXJDb250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2wgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKFwiXCIpO1xyXG4gIHByaXZhdGUgaWdub3JlSW5uZXJDb250cm9sQ2hhbmdlczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgaW5uZXJDb250cm9sU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBub05nQ29udHJvbDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzZWxlY3RlZExpc3RJdGVtczogYW55W10gPSBbXTtcclxuXHJcbiAgQE91dHB1dCgpIHNlbGVjdGlvbkNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxhbnlbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueVtdPigpO1xyXG5cclxuICBwcml2YXRlIG9uQ2hhbmdlRm46ICh2YWw6IGFueSkgPT4gdm9pZCA9ICgpID0+IHt9O1xyXG4gIHByaXZhdGUgb25Ub3VjaGVkRm46ICgpID0+IHZvaWQgPSAoKSA9PiB7fTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGxldCBuZ0NvbnRyb2w6IE5nQ29udHJvbCA9IHRoaXMuaW5qZWN0b3IuZ2V0KE5nQ29udHJvbCwgbnVsbCk7XHJcbiAgICBpZiAobmdDb250cm9sICYmIG5nQ29udHJvbC5jb250cm9sKSB7XHJcbiAgICAgIHRoaXMub3V0ZXJDb250cm9sID0gbmdDb250cm9sLmNvbnRyb2w7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZE9ubHlDdXJyZW50VmFsdWUoKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm5vTmdDb250cm9sID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmlubmVyQ29udHJvbFN1YnNjcmlwdGlvbiA9IHRoaXMuaW5uZXJDb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKGRlYm91bmNlVGltZSgzMDApKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMuaWdub3JlSW5uZXJDb250cm9sQ2hhbmdlcykge1xyXG4gICAgICAgIHRoaXMuZmlsdGVyT3B0aW9ucygpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuaWdub3JlSW5uZXJDb250cm9sQ2hhbmdlcyA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzLm9wdGlvbnMpIHtcclxuICAgICAgbGV0IG9wdGlvbnNDaGFuZ2U6IFNpbXBsZUNoYW5nZSA9IGNoYW5nZXMub3B0aW9ucztcclxuICAgICAgaWYgKCFvcHRpb25zQ2hhbmdlLmN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICAgIHRoaXMub3B0aW9ucyA9IFtdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5sb2FkT25seUN1cnJlbnRWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZShvYmo6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5sb2FkT25seUN1cnJlbnRWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlRm4gPSBmbjtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkRm4gPSBmbjtcclxuICB9XHJcblxyXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgaWYgKGlzRGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5pbm5lckNvbnRyb2wuZGlzYWJsZSgpO1xyXG4gICAgICB0aGlzLnNlbGVjdEVsZW1lbnQuZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5pbm5lckNvbnRyb2wuZW5hYmxlKCk7XHJcbiAgICAgIHRoaXMuc2VsZWN0RWxlbWVudC5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uSW5wdXRGb2N1cygpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0RWxlbWVudC5vcGVuKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvYWRPbmx5Q3VycmVudFZhbHVlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5sb2FkZWRPcHRpb25zID0gW107XHJcbiAgICBpZiAodGhpcy5vdXRlckNvbnRyb2wudmFsdWUgJiYgdGhpcy5vdXRlckNvbnRyb2wudmFsdWUubGVuZ3RoKSB7XHJcbiAgICAgIGZvciAobGV0IG9wdCBvZiB0aGlzLm9wdGlvbnMpIHtcclxuICAgICAgICBpZiAodGhpcy5pc09wdEluT3V0ZXJWYWx1ZShvcHQpKSB7XHJcbiAgICAgICAgICB0aGlzLmxvYWRlZE9wdGlvbnMucHVzaChvcHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5zZWxlY3RlZExpc3RJdGVtcyA9IHRoaXMubG9hZGVkT3B0aW9ucztcclxuXHJcblxyXG4gICAgbGV0IGN1cnJlbnRWYWx1ZUxhYmVsOiBzdHJpbmcgPSBcIlwiO1xyXG4gICAgZm9yIChsZXQgb3B0IG9mIHRoaXMubG9hZGVkT3B0aW9ucykge1xyXG4gICAgICBpZiAoY3VycmVudFZhbHVlTGFiZWwpIHtcclxuICAgICAgICBjdXJyZW50VmFsdWVMYWJlbCArPSBcIiwgXCI7XHJcbiAgICAgIH1cclxuICAgICAgY3VycmVudFZhbHVlTGFiZWwgKz0gdGhpcy5kaXNwbGF5RmllbGQgPyBvcHRbdGhpcy5kaXNwbGF5RmllbGRdIDogb3B0O1xyXG4gICAgfVxyXG4gICAgdGhpcy5pZ25vcmVJbm5lckNvbnRyb2xDaGFuZ2VzID0gdHJ1ZTtcclxuICAgIHRoaXMuaW5uZXJDb250cm9sLnNldFZhbHVlKGN1cnJlbnRWYWx1ZUxhYmVsKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmlsdGVyT3B0aW9ucyhzaG93QWxsOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcclxuICAgIGlmIChzaG93QWxsIHx8ICF0aGlzLmlubmVyQ29udHJvbC52YWx1ZSkge1xyXG4gICAgICB0aGlzLmxvYWRlZE9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgc2VhcmNoVmFsdWU6IHN0cmluZyA9IHRoaXMuaW5uZXJDb250cm9sLnZhbHVlLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIHRoaXMubG9hZGVkT3B0aW9ucyA9IHRoaXMub3B0aW9ucy5maWx0ZXIoKG9wdDogYW55KSA9PiB7XHJcbiAgICAgICAgbGV0IG9wdERpc3BsYXk6IHN0cmluZyA9ICh0aGlzLmRpc3BsYXlGaWVsZCA/IG9wdFt0aGlzLmRpc3BsYXlGaWVsZF0gOiBvcHQpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgcmV0dXJuIG9wdERpc3BsYXkuaW5jbHVkZXMoc2VhcmNoVmFsdWUpIHx8IHRoaXMuaXNPcHRJbk91dGVyVmFsdWUob3B0KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGlzT3B0SW5PdXRlclZhbHVlKG9wdDogYW55KTogYm9vbGVhbiB7XHJcbiAgICBsZXQgb3B0VmFsdWU6IGFueSA9IHRoaXMudmFsdWVGaWVsZCA/IG9wdFt0aGlzLnZhbHVlRmllbGRdIDogb3B0O1xyXG4gICAgaWYgKHRoaXMuZm9yY2VFbWl0T2JqZWN0KSB7XHJcbiAgICAgIGZvciAobGV0IG91dGVyVmFsT3B0IG9mIHRoaXMub3V0ZXJDb250cm9sLnZhbHVlKSB7XHJcbiAgICAgICAgbGV0IG91dGVyT3B0VmFsdWU6IGFueSA9IHRoaXMudmFsdWVGaWVsZCA/IG91dGVyVmFsT3B0W3RoaXMudmFsdWVGaWVsZF0gOiBvdXRlclZhbE9wdDtcclxuICAgICAgICBpZiAob3B0VmFsdWUgPT09IG91dGVyT3B0VmFsdWUpIHtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMub3V0ZXJDb250cm9sLnZhbHVlLmluY2x1ZGVzKG9wdFZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbk9wZW5lZENoYW5nZShvcGVuZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuaXNTZWxlY3RPcGVuID0gb3BlbmVkO1xyXG4gICAgaWYgKG9wZW5lZCkge1xyXG4gICAgICB0aGlzLm9uVG91Y2hlZEZuKCk7XHJcblxyXG4gICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgIHRoaXMuaWdub3JlSW5uZXJDb250cm9sQ2hhbmdlcyA9IHRydWU7XHJcbiAgICAgIHRoaXMuaW5uZXJDb250cm9sLnNldFZhbHVlKFwiXCIpO1xyXG5cclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJPcHRpb25zKHRydWUpO1xyXG4gICAgICAgIHRoaXMuaW5jbHVkZUxvYWRpbmdPcHRpb24gPSBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmxvYWRPbmx5Q3VycmVudFZhbHVlKCk7XHJcbiAgICAgICAgdGhpcy5pbmNsdWRlTG9hZGluZ09wdGlvbiA9IHRydWU7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlbGVjdE9wdGlvbnMob3B0aW9uczogYW55W10pOiB2b2lkIHtcclxuICAgIGxldCBuZXdWYWw6IGFueVtdID0gW107XHJcbiAgICBmb3IgKGxldCBvcHQgb2Ygb3B0aW9ucykge1xyXG4gICAgICBpZiAob3B0KSB7XHJcbiAgICAgICAgbmV3VmFsLnB1c2goKHRoaXMudmFsdWVGaWVsZCAmJiAhdGhpcy5mb3JjZUVtaXRPYmplY3QpID8gb3B0W3RoaXMudmFsdWVGaWVsZF0gOiBvcHQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5ub05nQ29udHJvbCkge1xyXG4gICAgICB0aGlzLm91dGVyQ29udHJvbC5zZXRWYWx1ZShuZXdWYWwpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMub25DaGFuZ2VGbihuZXdWYWwpO1xyXG4gICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2VkLmVtaXQobmV3VmFsKTtcclxuXHJcbiAgICBpZiAodGhpcy5pc1NlbGVjdE9wZW4pIHtcclxuICAgICAgdGhpcy5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29tcGFyZUJ5SUQoaXRlbU9uZSwgaXRlbVR3bykge1xyXG4gICAgaWYoIWl0ZW1PbmUpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfSBlbHNlIGlmICghaXRlbVR3bykge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZih0aGlzLnZhbHVlRmllbGQpIHtcclxuICAgICAgICByZXR1cm4gaXRlbU9uZVt0aGlzLnZhbHVlRmllbGRdICYmIGl0ZW1Ud29bdGhpcy52YWx1ZUZpZWxkXSAmJiBpdGVtT25lW3RoaXMudmFsdWVGaWVsZF0gPT09IGl0ZW1Ud29bdGhpcy52YWx1ZUZpZWxkXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gIGl0ZW1PbmUgPT09IGl0ZW1Ud287XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgaWYodGhpcy5pbm5lckNvbnRyb2xTdWJzY3JpcHRpb24pIHtcclxuICAgICAgdGhpcy5pbm5lckNvbnRyb2xTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcbiJdfQ==
|